Defined in: packages/ai/src/activities/chat/tools/tool-calls.ts:123
Manages tool call accumulation and execution for the chat() method's automatic tool execution loop.
Responsibilities:
Accumulates streaming tool call events (ID, name, arguments)
Validates tool calls (filters out incomplete ones)
Executes tool execute functions with parsed arguments
Emits TOOL_CALL_END events for client visibility
Returns tool result messages for conversation history
This class is used internally by the AI.chat() method to handle the automatic tool execution loop. It can also be used independently for custom tool execution logic.
const manager = new ToolCallManager(tools);
// During streaming, accumulate tool calls
for await (const chunk of stream) {
if (chunk.type === 'TOOL_CALL_START') {
manager.addToolCallStartEvent(chunk);
} else if (chunk.type === 'TOOL_CALL_ARGS') {
manager.addToolCallArgsEvent(chunk);
}
}
// After stream completes, execute tools
if (manager.hasToolCalls()) {
const toolResults = yield* manager.executeTools(finishEvent);
messages = [...messages, ...toolResults];
manager.clear();
}TToolsOrContext = ReadonlyArray\<[`AnyTool`](../type-aliases/AnyTool.md)\>
TContext = TToolsOrContext extends ReadonlyArray\<[`AnyTool`](../type-aliases/AnyTool.md)\> ? ContextFromTools\<`TToolsOrContext`\> : TToolsOrContext
new ToolCallManager<TToolsOrContext, TContext>(tools): ToolCallManager<TToolsOrContext, TContext>;Defined in: packages/ai/src/activities/chat/tools/tool-calls.ts:134
TToolsOrContext extends readonly AnyTool[] ? TToolsOrContext\<`TToolsOrContext`\> : readonly AnyTool[]
ToolCallManager\<`TToolsOrContext`, `TContext`\>
addToolCallArgsEvent(event): void;Defined in: packages/ai/src/activities/chat/tools/tool-calls.ts:164
Add a TOOL_CALL_ARGS event to accumulate arguments (AG-UI)
void
addToolCallStartEvent(event): void;Defined in: packages/ai/src/activities/chat/tools/tool-calls.ts:145
Add a TOOL_CALL_START event to begin tracking a tool call (AG-UI)
void
clear(): void;Defined in: packages/ai/src/activities/chat/tools/tool-calls.ts:324
Clear the tool calls map for the next iteration
void
completeToolCall(event): void;Defined in: packages/ai/src/activities/chat/tools/tool-calls.ts:178
Complete a tool call with its final input Called when TOOL_CALL_END is received
void
executeTools(finishEvent, ...contextArgs): AsyncGenerator<ToolCallEndEvent, ModelMessage<
| string
| ContentPart<unknown, unknown, unknown, unknown, unknown>[]
| null>[], void>;Defined in: packages/ai/src/activities/chat/tools/tool-calls.ts:213
Execute all tool calls and return tool result messages Yields TOOL_CALL_END events for streaming
RUN_FINISHED event from the stream
...ExecuteToolsContextArgs\<`TContext`\>
AsyncGenerator\<[`ToolCallEndEvent`](../interfaces/ToolCallEndEvent.md), [`ModelMessage`](../interfaces/ModelMessage.md)\< \| `string` \| [`ContentPart`](../type-aliases/ContentPart.md)\<`unknown`, `unknown`, `unknown`, `unknown`, `unknown`\>[] | null>[], void>
getToolCalls(): ToolCall<unknown>[];Defined in: packages/ai/src/activities/chat/tools/tool-calls.ts:202
Get all complete tool calls (filtered for valid ID and name)
ToolCall\<`unknown`\>[]
hasToolCalls(): boolean;Defined in: packages/ai/src/activities/chat/tools/tool-calls.ts:195
Check if there are any complete tool calls to execute
boolean