Agent
Defined in: src/agent/agent.ts:169
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”LocalAgentInvokableAgent
Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”new Agent(config?): Agent;Defined in: src/agent/agent.ts:223
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:173
The conversation history of messages between user and assistant.
Implementation of
Section titled “Implementation of”LocalAgent.messagesreadonly state: AppState;Defined in: src/agent/agent.ts:178
App state storage accessible to tools and application logic. State is not passed to the model during inference.
Implementation of
Section titled “Implementation of”LocalAgent.statemodel: Model;Defined in: src/agent/agent.ts:184
The model provider used by the agent for inference.
systemPrompt?
Section titled “systemPrompt?”optional systemPrompt: SystemPrompt;Defined in: src/agent/agent.ts:189
The system prompt to pass to the model provider.
readonly name: string;Defined in: src/agent/agent.ts:194
The name of the agent.
Implementation of
Section titled “Implementation of”InvokableAgent.namereadonly id: string;Defined in: src/agent/agent.ts:199
The unique identifier of the agent instance.
Implementation of
Section titled “Implementation of”InvokableAgent.iddescription?
Section titled “description?”readonly optional description: string;Defined in: src/agent/agent.ts:204
Optional description of what the agent does.
Implementation of
Section titled “Implementation of”InvokableAgent.descriptionAccessors
Section titled “Accessors”Get Signature
Section titled “Get Signature”get tools(): Tool[];Defined in: src/agent/agent.ts:339
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:346
The tool registry for managing the agent’s tools.
Returns
Section titled “Returns”ToolRegistry
Implementation of
Section titled “Implementation of”LocalAgent.toolRegistryMethods
Section titled “Methods”addHook()
Section titled “addHook()”addHook<T>(eventType, callback): HookCleanup;Defined in: src/agent/agent.ts:293
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”LocalAgent.addHookinitialize()
Section titled “initialize()”initialize(): Promise<void>;Defined in: src/agent/agent.ts:297
Returns
Section titled “Returns”Promise<void>
invoke()
Section titled “invoke()”invoke(args, options?): Promise<AgentResult>;Defined in: src/agent/agent.ts:368
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 responseImplementation of
Section titled “Implementation of”InvokableAgent.invokestream()
Section titled “stream()”stream(args, options?): AsyncGenerator<AgentStreamEvent, AgentResult, undefined>;Defined in: src/agent/agent.ts:407
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 conversationImplementation of
Section titled “Implementation of”InvokableAgent.stream