Logo
Classes

AgentWorkflow

Defined in: packages/workflow/src/agent/agent-workflow.ts:169

AgentWorkflow - An event-driven workflow for executing agents with tools

This class provides a simple interface for creating and running agent workflows based on the LlamaIndexTS workflow system. It supports single agent workflows with multiple tools.

Implements

  • Workflow

Constructors

Constructor

new AgentWorkflow(__namedParameters): AgentWorkflow

Defined in: packages/workflow/src/agent/agent-workflow.ts:180

Parameters

__namedParameters

AgentWorkflowParams

Returns

AgentWorkflow

Methods

handle()

handle<AcceptEvents, Result>(accept, handler): void

Defined in: packages/workflow/src/agent/agent-workflow.ts:238

Registers a handler function for one or more workflow events.

The handler will be invoked whenever any of the accepted events are sent through a workflow context. Handlers can process events and optionally return new events to continue the workflow.

Type Parameters

AcceptEvents

AcceptEvents extends WorkflowEvent<unknown>[]

Array of event types this handler accepts

Result

Result extends void | WorkflowEventData<unknown, string>

Return type of the handler (event data or void)

Parameters

accept

AcceptEvents

Array of event types that trigger this handler

handler

Handler<AcceptEvents, Result>

Function to execute when matching events are received

Returns

void

Example

// Handle multiple event types
workflow.handle([StartEvent, RestartEvent], async (context, event) => \{
  if (StartEvent.include(event)) {
    return ProcessEvent.with({ action: 'start' \});
  } else \{
    return ProcessEvent.with({ action: 'restart' \});
  }
});

Implementation of

Workflow.handle


createContext()

createContext(): WorkflowContext

Defined in: packages/workflow/src/agent/agent-workflow.ts:245

Creates a new workflow context for event processing.

The context provides the runtime environment for executing handlers and managing event flow. Each context maintains its own execution state and event queue.

Returns

WorkflowContext

A new workflow context instance

Example

const context = workflow.createContext();

// Send events through the context
await context.send(MyEvent.with(\{ data: 'hello' \}));

// Listen for specific events
const result = await context.waitFor(CompletionEvent);

Implementation of

Workflow.createContext


addAgent()

addAgent(agent): this

Defined in: packages/workflow/src/agent/agent-workflow.ts:299

Adds a new agent to the workflow

Parameters

agent

BaseWorkflowAgent

Returns

this


getAgents()

getAgents(): BaseWorkflowAgent[]

Defined in: packages/workflow/src/agent/agent-workflow.ts:310

Gets all agents in this workflow

Returns

BaseWorkflowAgent[]

Array of agents in this workflow


fromTools()

static fromTools(params): AgentWorkflow

Defined in: packages/workflow/src/agent/agent-workflow.ts:319

Create a simple workflow with a single agent and specified tools

Parameters

params

SingleAgentParams

Parameters for the single agent workflow

Returns

AgentWorkflow

A new AgentWorkflow instance


runStream()

runStream(userInput, params?): WorkflowStream<WorkflowEventData<any, string>>

Defined in: packages/workflow/src/agent/agent-workflow.ts:639

Parameters

userInput

MessageContent

params?
chatHistory?

ChatMessage[]

state?

AgentWorkflowState

Returns

WorkflowStream<WorkflowEventData<any, string>>


run()

run(userInput, params?): Promise<WorkflowEventData<AgentResultData>>

Defined in: packages/workflow/src/agent/agent-workflow.ts:661

Parameters

userInput

MessageContent

params?
chatHistory?

ChatMessage[]

state?

AgentWorkflowState

Returns

Promise<WorkflowEventData<AgentResultData>>


createHandoffTool()

createHandoffTool(agents): FunctionTool<{ toAgent: string; reason: string; }, JSONValue | Promise<JSONValue>, () => AgentWorkflowState>

Defined in: packages/workflow/src/agent/agent-workflow.ts:679

Parameters

agents

Map<string, BaseWorkflowAgent>

Returns

FunctionTool<{ toAgent: string; reason: string; }, JSONValue | Promise<JSONValue>, () => AgentWorkflowState>