import { type ReadScopeInputs } from '../subagent-read-scope.js'; import type { AgentRegistry } from '../agents/index.js'; import type { AgentModelInput, IAgentSession } from '../types.js'; import type { Surface } from '../awareness/types.js'; import type { WorkspaceStore } from '../workspace/index.js'; import type { TraceSink } from '../trace/index.js'; import type { ToolCall, ToolResult } from './types.js'; import type { InboundAttachmentReader } from '../content/attachment-registry.js'; export interface ComposeExecutorContext { parentSession: Pick; defaultModel?: AgentModelInput; defaultSubagentModel: AgentModelInput; apiKey?: string; resolveApiKeyForModel?: (model: string) => string | undefined; baseUrl?: string; openaiBaseUrl?: string; systemPrompt: string; cwd?: string; traceWriter?: TraceSink; surface?: Surface; depth?: number; maxDepth?: number; getReadScopeInputs?: () => ReadScopeInputs; workspaceStore?: WorkspaceStore; agentRegistry?: AgentRegistry; delegationBudget?: import('./delegation-budget.js').DelegationBudget; inboundAttachmentRegistry?: InboundAttachmentReader; onSubagentSucceeded?: (usage: import('../subagent/result.js').SubagentTrace['usage'], costUsd: number | undefined) => void; } export interface TruncationEvent { nodeId: string; emittedChars: number; totalChars: number; spillPath?: string; } export declare function cleanupComposeSpills(sessionId: string): void; export declare class ComposeExecutor { private readonly ctx; private currentCwd; constructor(ctx: ComposeExecutorContext); setCwd(cwd: string): void; setTraceWriter(writer: TraceSink | undefined): void; setOnSubagentSucceeded(cb: (usage: import('../subagent/result.js').SubagentTrace['usage'], costUsd: number | undefined) => void): void; execute(call: ToolCall): Promise; }