import type { Context } from './types/context.js'; import type { AgentMessage, UserMessage } from './types/agent-message.js'; import type { AgentEvent, ThinkingLevel, ToolExecutionMode } from './types/agent-event.js'; import type { Model } from './types/model.js'; import type { LlmTool, ParsedToolCall } from './types/tool.js'; import { type StreamOptions } from './api-registry.js'; export interface BeforeToolCallContext { toolCall: ParsedToolCall; tools: LlmTool[]; } export interface BeforeToolCallResult { allowed?: boolean; reason?: string; modifiedArguments?: Record; } export interface AfterToolCallContext { toolCall: ParsedToolCall; result: AgentMessage; } export interface AgentLoopConfig { model: Model; maxIterations?: number; reasoning?: ThinkingLevel; sessionId?: string; toolExecution?: ToolExecutionMode; convertToLlm?: (messages: AgentMessage[]) => AgentMessage[] | Promise; transformContext?: (messages: AgentMessage[], signal?: AbortSignal) => Promise; beforeToolCall?: (context: BeforeToolCallContext, signal?: AbortSignal) => Promise; afterToolCall?: (context: AfterToolCallContext, signal?: AbortSignal) => Promise; executeTool?: (toolCall: ParsedToolCall, tools: LlmTool[], signal?: AbortSignal) => Promise; getSteeringMessages?: () => Promise; getFollowUpMessages?: () => Promise; onContextOverflow?: (messages: AgentMessage[], signal?: AbortSignal) => Promise; streamOptions?: Omit; } export interface AgentContext { systemPrompt: string; messages: AgentMessage[]; tools: LlmTool[]; } export declare function agentLoop(prompts: AgentMessage | AgentMessage[], initialContext: AgentContext, config: AgentLoopConfig, signal?: AbortSignal): AsyncGenerator; export declare function agentContextFrom(context: Context): AgentContext; export type { UserMessage }; //# sourceMappingURL=agent-loop.d.ts.map