Agent
Defined in: src/agent/agent.ts:182
Orchestrates the interaction between a model, a set of tools, and MCP clients. The Agent is responsible for managing the lifecycle of tools and clients and invoking the core decision-making loop.
Implements
Section titled “Implements”Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”new Agent(config?): Agent;Defined in: src/agent/agent.ts:236
Creates an instance of the Agent.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
config? | AgentConfig | The configuration for the agent. |
Returns
Section titled “Returns”Agent
Properties
Section titled “Properties”messages
Section titled “messages”readonly messages: Message[];Defined in: src/agent/agent.ts:186
The conversation history of messages between user and assistant.
Implementation of
Section titled “Implementation of”readonly state: AppState;Defined in: src/agent/agent.ts:191
App state storage accessible to tools and application logic. State is not passed to the model during inference.
Implementation of
Section titled “Implementation of”model: Model;Defined in: src/agent/agent.ts:197
The model provider used by the agent for inference.
systemPrompt?
Section titled “systemPrompt?”optional systemPrompt: SystemPrompt;Defined in: src/agent/agent.ts:202
The system prompt to pass to the model provider.
readonly name: string;Defined in: src/agent/agent.ts:207
The name of the agent.
agentId
Section titled “agentId”readonly agentId: string;Defined in: src/agent/agent.ts:212
The unique identifier of the agent instance.
description?
Section titled “description?”readonly optional description: string;Defined in: src/agent/agent.ts:217
Optional description of what the agent does.
Accessors
Section titled “Accessors”Get Signature
Section titled “Get Signature”get tools(): Tool[];Defined in: src/agent/agent.ts:352
The tools this agent can use.
Returns
Section titled “Returns”Tool[]
toolRegistry
Section titled “toolRegistry”Get Signature
Section titled “Get Signature”get toolRegistry(): ToolRegistry;Defined in: src/agent/agent.ts:359
The tool registry for managing the agent’s tools.
Returns
Section titled “Returns”ToolRegistry
The tool registry for registering tools with the agent.
Implementation of
Section titled “Implementation of”Methods
Section titled “Methods”addHook()
Section titled “addHook()”addHook<T>(eventType, callback): HookCleanup;Defined in: src/agent/agent.ts:306
Register a hook callback for a specific event type.
Type Parameters
Section titled “Type Parameters”| Type Parameter |
|---|
T extends HookableEvent |
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
eventType | HookableEventConstructor<T> | The event class constructor to register the callback for |
callback | HookCallback<T> | The callback function to invoke when the event occurs |
Returns
Section titled “Returns”HookCleanup
Cleanup function that removes the callback when invoked
Example
Section titled “Example”const agent = new Agent({ model })
const cleanup = agent.addHook(BeforeInvocationEvent, (event) => { console.log('Invocation started')})
// Later, to remove the hook:cleanup()Implementation of
Section titled “Implementation of”initialize()
Section titled “initialize()”initialize(): Promise<void>;Defined in: src/agent/agent.ts:310
Returns
Section titled “Returns”Promise<void>
invoke()
Section titled “invoke()”invoke(args, options?): Promise<AgentResult>;Defined in: src/agent/agent.ts:381
Invokes the agent and returns the final result.
This is a convenience method that consumes the stream() method and returns only the final AgentResult. Use stream() if you need access to intermediate streaming events.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
args | InvokeArgs | Arguments for invoking the agent |
options? | InvokeOptions | Optional per-invocation options |
Returns
Section titled “Returns”Promise<AgentResult>
Promise that resolves to the final AgentResult
Example
Section titled “Example”const agent = new Agent({ model, tools })const result = await agent.invoke('What is 2 + 2?')console.log(result.lastMessage) // Agent's responsestream()
Section titled “stream()”stream(args, options?): AsyncGenerator<AgentStreamEvent, AgentResult, undefined>;Defined in: src/agent/agent.ts:420
Streams the agent execution, yielding events and returning the final result.
The agent loop manages the conversation flow by:
- Streaming model responses and yielding all events
- Executing tools when the model requests them
- Continuing the loop until the model completes without tool use
Use this method when you need access to intermediate streaming events. For simple request/response without streaming, use invoke() instead.
An explicit goal of this method is to always leave the message array in a way that the agent can be reinvoked with a user prompt after this method completes. To that end assistant messages containing tool uses are only added after tool execution succeeds with valid toolResponses
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
args | InvokeArgs | Arguments for invoking the agent |
options? | InvokeOptions | Optional per-invocation options |
Returns
Section titled “Returns”AsyncGenerator<AgentStreamEvent, AgentResult, undefined>
Async generator that yields AgentStreamEvent objects and returns AgentResult
Example
Section titled “Example”const agent = new Agent({ model, tools })
for await (const event of agent.stream('Hello')) { console.log('Event:', event.type)}// Messages array is mutated in place and contains the full conversation