Skip to content

Agent

Defined in: src/agent/agent.ts:176

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.

new Agent(config?): Agent;

Defined in: src/agent/agent.ts:231

Creates an instance of the Agent.

ParameterTypeDescription
config?AgentConfigThe configuration for the agent.

Agent

readonly messages: Message[];

Defined in: src/agent/agent.ts:180

The conversation history of messages between user and assistant.

AgentData.messages


readonly state: AppState;

Defined in: src/agent/agent.ts:185

App state storage accessible to tools and application logic. State is not passed to the model during inference.

AgentData.state


readonly conversationManager: HookProvider;

Defined in: src/agent/agent.ts:189

Conversation manager for handling message history and context overflow.


readonly hooks: HookRegistry;

Defined in: src/agent/agent.ts:194

Hook registry for managing event callbacks. Hooks enable observing and extending agent behavior.


model: Model;

Defined in: src/agent/agent.ts:199

The model provider used by the agent for inference.


optional systemPrompt: SystemPrompt;

Defined in: src/agent/agent.ts:204

The system prompt to pass to the model provider.


readonly name: string;

Defined in: src/agent/agent.ts:209

The name of the agent.


readonly agentId: string;

Defined in: src/agent/agent.ts:214

The unique identifier of the agent instance.

get tools(): Tool[];

Defined in: src/agent/agent.ts:316

The tools this agent can use.

Tool[]


get toolRegistry(): ToolRegistry;

Defined in: src/agent/agent.ts:323

The tool registry for managing the agent’s tools.

ToolRegistry

initialize(): Promise<void>;

Defined in: src/agent/agent.ts:277

Promise<void>


invoke(args, options?): Promise<AgentResult>;

Defined in: src/agent/agent.ts:345

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.

ParameterTypeDescription
argsInvokeArgsArguments for invoking the agent
options?InvokeOptionsOptional per-invocation options

Promise<AgentResult>

Promise that resolves to the final AgentResult

const agent = new Agent({ model, tools })
const result = await agent.invoke('What is 2 + 2?')
console.log(result.lastMessage) // Agent's response

stream(args, options?): AsyncGenerator<AgentStreamEvent, AgentResult, undefined>;

Defined in: src/agent/agent.ts:384

Streams the agent execution, yielding events and returning the final result.

The agent loop manages the conversation flow by:

  1. Streaming model responses and yielding all events
  2. Executing tools when the model requests them
  3. 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

ParameterTypeDescription
argsInvokeArgsArguments for invoking the agent
options?InvokeOptionsOptional per-invocation options

AsyncGenerator<AgentStreamEvent, AgentResult, undefined>

Async generator that yields AgentStreamEvent objects and returns AgentResult

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