import type { ConversationSnapshot } from '../ai/conversation'; import { invokeAgent } from '../ai/router'; import type { EventBus } from '../events/bus'; import { type EmitContext } from '../events/emit'; import type { StateStore } from '../state/store'; import { createClaudeToolGate } from './claude-adapter'; import { createToolRegistry } from './registry'; import { createToolHooks } from './sdk'; import type { SessionPool } from './session'; export type ExecutorInput = { snapshot: ConversationSnapshot; model: string; repoRoot: string; config: Parameters[0]['config']; dryRun: boolean; allowDestructive: boolean; allowDangerous: boolean; bus?: EventBus; context: EmitContext; state?: StateStore; maxTurns?: number; maxBudgetUsd?: number; maxThinkingTokens?: number; toolBudget?: { maxCalls?: number; maxDurationMs?: number; }; sessionPool?: SessionPool; heartbeat?: () => Promise; toolCallLog?: Array<{ toolCallId: string; toolName: string; argsDigest: string; resultDigest?: string; ok: boolean; }>; deps?: { createRegistry?: typeof createToolRegistry; createToolGate?: typeof createClaudeToolGate; createToolHooks?: typeof createToolHooks; invokeAgent?: typeof invokeAgent; }; }; export declare function executePlan(input: ExecutorInput): Promise;