/** * Structured-adaptive tool orchestration for the selectable structured loop. * Batches concurrency-safe tools, keeps stateful tools serial, and returns * ordered tool_result messages matching assistant tool_use order. * [WHO]: StructuredAdaptiveToolCall, StructuredAdaptiveToolRunResult, runStructuredAdaptiveTools, runToolBatch, resolveMaxToolConcurrency, buildToolMap, partitionStructuredAdaptiveToolCalls, isStructuredAdaptiveToolCallConcurrencySafe, resolveStructuredAdaptiveToolInterruptBehavior, runStructuredAdaptiveToolUse, extractApprovalRequired * [FROM]: @catui/ai * [TO]: Consumed by core/lib/agent-core/src/agent-loop.ts, core/lib/agent-core/src/index.ts, core/lib/agent-core/src/structured-adaptive-streaming-tool-executor.ts * [HERE]: core/lib/agent-core/src/structured-adaptive-tool-orchestration.ts - owned by core/lib/agent-core/AGENT.md */ import { type AssistantMessage, type ToolResultMessage } from "@catui/ai/types"; import { EventStream } from "@catui/ai/events"; import type { AgentEvent, AgentLoopConfig, AgentMessage, AgentTool, AgentToolPermissionDenial } from "./types.js"; export type StructuredAdaptiveToolCall = Extract; export interface StructuredAdaptiveToolRunResult { toolResults: ToolResultMessage[]; contextMessages: AgentMessage[]; steeringMessages?: AgentMessage[]; permissionDenials: AgentToolPermissionDenial[]; approvalRequired?: { checkpointId: string; policyId?: string; toolCallId: string; }; } interface StructuredAdaptiveToolUseResult { toolResult: ToolResultMessage; contextMessages: AgentMessage[]; } export declare function runStructuredAdaptiveTools(toolCalls: StructuredAdaptiveToolCall[], tools: AgentTool[] | undefined, signal: AbortSignal | undefined, stream: EventStream, getSteeringMessages?: AgentLoopConfig["getSteeringMessages"], maxConcurrency?: number, canUseTool?: AgentLoopConfig["canUseTool"], toolPolicies?: AgentLoopConfig["toolPolicies"], checkpointStore?: AgentLoopConfig["checkpointStore"], checkpointTtlMs?: number, sessionId?: string, messageCount?: number): Promise; export declare function runToolBatch(items: T[], run: (item: T) => Promise, maxConcurrency: number | undefined): Promise; export declare function resolveMaxToolConcurrency(maxConcurrency: number | undefined): number; export declare function buildToolMap(tools: AgentTool[] | undefined): Map>; export declare function partitionStructuredAdaptiveToolCalls(toolCalls: StructuredAdaptiveToolCall[], toolByName: Map>): StructuredAdaptiveToolCall[][]; export declare function isStructuredAdaptiveToolCallConcurrencySafe(toolCall: StructuredAdaptiveToolCall, tool: AgentTool | undefined): boolean; export declare function resolveStructuredAdaptiveToolInterruptBehavior(toolCall: StructuredAdaptiveToolCall, tool: AgentTool | undefined): "cancel" | "block"; export declare function runStructuredAdaptiveToolUse(toolCall: StructuredAdaptiveToolCall, tool: AgentTool | undefined, signal: AbortSignal | undefined, stream: EventStream, canUseTool?: AgentLoopConfig["canUseTool"], toolPolicies?: AgentLoopConfig["toolPolicies"], checkpointStore?: AgentLoopConfig["checkpointStore"], checkpointTtlMs?: number, sessionId?: string, messageCount?: number): Promise; export declare function extractApprovalRequired(result: ToolResultMessage): { checkpointId: string; policyId?: string; toolCallId: string; } | undefined; export {};