/** * Agent loop that works with AgentMessage throughout. * Transforms to Message[] only at the LLM call boundary. * [WHO]: agentLoop, agentLoopContinue * [FROM]: @catui/ai * [TO]: Consumed by core/lib/agent-core/src/agent.ts, core/lib/agent-core/src/index.ts, core/lib/agent-core/src/structured-adaptive-agent-loop.ts * [HERE]: core/lib/agent-core/src/agent-loop.ts - owned by core/lib/agent-core/AGENT.md */ import { EventStream } from "@catui/ai/events"; import type { AgentContext, AgentEvent, AgentLoopConfig, AgentMessage, StreamFn } from "./types.js"; /** * Start an agent loop with a new prompt message. * The prompt is added to the context and events are emitted for it. */ export declare function agentLoop(prompts: AgentMessage[], context: AgentContext, config: AgentLoopConfig, signal?: AbortSignal, streamFn?: StreamFn): EventStream; /** * Continue an agent loop from the current context without adding a new message. * Used for retries - context already has user message or tool results. * * **Important:** The last message in context must convert to a `user` or `toolResult` message * via `convertToLlm`. If it doesn't, the LLM provider will reject the request. * This cannot be validated here since `convertToLlm` is only called once per turn. */ export declare function agentLoopContinue(context: AgentContext, config: AgentLoopConfig, signal?: AbortSignal, streamFn?: StreamFn): EventStream;