import { type ClaudeTranscriptAnchor } from "./claude-local-transcript-provider.js"; import type { ClaudeAgentRow } from "./claude-terminal-agent-adapter.js"; import { type Conversation } from "./protocol.js"; import type { TerminalAgentAdapterRegistry, TerminalControlRef, TerminalRuntimeIdentity } from "./terminal-agent-adapter.js"; import { type TerminalAgentBridge, type TerminalBridgeStatus } from "./terminal-agent-bridge.js"; import type { TerminalNativeIdentity as NativeAgentSessionIdentity } from "./terminal-binding-authority.js"; import type { CodexForegroundProofAuthority } from "./terminal-command-foreground-proof.js"; import { type BoundTerminalDispatchRoute } from "./terminal-dispatch-capability.js"; import type { TerminalControlSendRequest, TerminalDispatchTerminal } from "./terminal-dispatch-composition.js"; import { type TerminalDispatchExecutionService } from "./terminal-dispatch-execution.js"; import { type TerminalDispatchLedgerDocument } from "./terminal-dispatch-ledger-codec.js"; import { type TerminalDispatchPresentationContext, type TerminalDispatchPresentationPorts } from "./terminal-dispatch-presenter.js"; import type { CodexRolloutAcceptanceAnchor } from "./terminal-submission-acceptance.js"; export interface TerminalDispatchPreparationDefaults { agentTimeoutMinutes: number; agentHardTimeoutMinutes: number; ordinaryScrollbackLines: number; foregroundScrollbackLines: number; } export interface TerminalDispatchPreparationPorts { assertCodexComposerReadyForAutomatedInput(request: { options: TerminalControlSendRequest["options"]; terminalControl: TerminalControlRef; runtime?: TerminalRuntimeIdentity; }): Promise; assertNoUnresolvedTerminalBridgeSubmission(storeDir: string, terminalControl: TerminalControlRef, currentConversationId: string, requestText: string): void; assertSafeTerminalSend(agent: TerminalControlSendRequest["executor"]["kind"], status: TerminalBridgeStatus): void; createRegistry(options: TerminalControlSendRequest["options"]): TerminalAgentAdapterRegistry; createTerminalBridge(options: TerminalControlSendRequest["options"]): TerminalAgentBridge; execution(options: TerminalControlSendRequest["options"], bridge: TerminalAgentBridge): TerminalDispatchExecutionService; foregroundProofs: CodexForegroundProofAuthority; loadClaudeAgentRows(options: TerminalControlSendRequest["options"]): ClaudeAgentRow[]; loadDispatchLedger(terminalControl: TerminalControlRef): TerminalDispatchLedgerDocument | undefined; loadDispatchOwner(ledger: Record): Conversation | undefined; now(): Date; positiveMinutes(value: unknown, optionName: string): number; reconcilePreparedLedger(terminalControl: TerminalControlRef, ledger?: Record): TerminalDispatchLedgerDocument | undefined; requestFingerprint(text: string): string | undefined; required(value: Value | null | undefined, message: string): Value; resolveLedgerPaneIncarnation(terminalControl: TerminalControlRef, ledger?: Record): TerminalDispatchLedgerDocument | undefined; terminalBridgeEnabled(conversation: Conversation): boolean; terminalRuntimeForLiveIdentity(request: { terminal: TerminalDispatchTerminal; identity?: NativeAgentSessionIdentity; expectedEmptyNativeSession?: boolean; physicalOnly?: boolean; }): TerminalRuntimeIdentity; terminalRuntimeIdentityForConversation(conversation: Conversation, terminalControl: TerminalControlRef): TerminalRuntimeIdentity; presentation: TerminalDispatchPresentationPorts; } export interface PreparedTerminalControlSend { route: BoundTerminalDispatchRoute; bridge: boolean; terminalControl: TerminalControlRef; lockedStoreDir: string; statePath: string; logPath: string; terminalBridge: TerminalAgentBridge; execution: TerminalDispatchExecutionService; bridgeStartedAt: string; submissionPreparedAt: string; agentTimeoutMinutes: number; agentHardTimeoutMinutes: number; terminalPayload: string; terminalRequestHash: string; presentationContext: TerminalDispatchPresentationContext; presentationPorts: TerminalDispatchPresentationPorts; previousDispatchLedger?: TerminalDispatchLedgerDocument; sendTakeover?: Record; terminalAgentPid: number; needsPostSendNativeBinding: boolean; preSendRuntime: TerminalRuntimeIdentity; preSendScreenFingerprint?: string; codexRolloutAcceptanceAnchor?: CodexRolloutAcceptanceAnchor; claudeTranscriptAnchor?: ClaudeTranscriptAnchor; claudeHome?: string; } /** * Prepare one ordinary dispatch from a single locked route and live terminal * observation. This phase never performs task text or Enter input. */ export declare function prepareTerminalControlSend(request: TerminalControlSendRequest, ports: TerminalDispatchPreparationPorts, defaults: TerminalDispatchPreparationDefaults): Promise;