import { type TerminalControlRef } from "./terminal-control-ref.js"; import type { ManagedTerminalBinding, NativeThreadTransition } from "./managed-session.js"; import type { TerminalSubmissionAcceptanceEvidence } from "./terminal-submission-facts.js"; export type TerminalDispatchLedgerDocument = Record; export type TerminalDispatchReceipt = Record; export declare function sameCanonicalStatePath(left: unknown, right: unknown): boolean; export type TerminalOrdinaryDispatchStatus = "prepared" | "text_injected" | "enter_dispatched" | "agent_accepted" | "not_accepted" | "submitted" | "uncertain" | "aborted"; export type TerminalOrdinaryDispatchIdentityFields = Record<"generation_id" | "conversation_id" | "session_id" | "turn_id" | "message_id" | "request_hash" | "prepared_at", string> & { status: TerminalOrdinaryDispatchStatus; message_type: "task" | "answer"; }; export interface TerminalOrdinaryDispatchPhaseFields { text_injected_at?: string; enter_dispatched_at?: string; enter_not_attempted_at?: string; enter_not_attempted_reason?: "pre_key_failure"; agent_accepted_at?: string; acceptance_evidence?: TerminalSubmissionAcceptanceEvidence; not_accepted_at?: string; uncertain_at?: string; error?: { length: number; preview?: string; }; } export type TerminalOrdinaryDispatchPostCallbackFields = Pick & { native_identity_status?: "unresolved_after_submit"; }; export interface ConstructTerminalOrdinaryDispatchLedgerOptions { bindingFields: TerminalDispatchLedgerDocument; identityFields: TerminalOrdinaryDispatchIdentityFields; phaseFields?: TerminalOrdinaryDispatchPhaseFields; dispatcherPid: number | null; statePath: string; eventLogPath: string; callbackExpected: boolean; callbackRouteFingerprint?: string | null; postCallbackFields?: TerminalOrdinaryDispatchPostCallbackFields; previousGenerationId?: string; } /** Order one ordinary dispatch write without performing persistence. */ export declare const constructTerminalOrdinaryDispatchLedger: (options: ConstructTerminalOrdinaryDispatchLedgerOptions) => TerminalDispatchLedgerDocument; type LifecycleLedgerError = NonNullable; type LifecycleBinding = ManagedTerminalBinding | undefined; type PreviousLifecycleLedger = TerminalDispatchLedgerDocument | undefined; export type NativeThreadLifecycleLedgerPhase = { phase: "prepared"; previous: PreviousLifecycleLedger; targetNativeThreadId: string; } | { phase: "verified"; binding: LifecycleBinding; } | { phase: "verified_with_previous"; binding: LifecycleBinding; previousGenerationId?: string; } | { phase: "resolved" | "uncertain"; at: string; reason: string; } | { phase: "resolved_with_binding"; at: string; binding: LifecycleBinding; reason: string; } | { phase: "uncertain_reason_error"; at: string; reason: string; error: LifecycleLedgerError; } | { phase: "uncertain_error_reason"; at: string; error: LifecycleLedgerError; reason: string; } | { phase: "rebuild"; control: TerminalControlRef; previous: PreviousLifecycleLedger; } | { phase: "command_prepared" | "command_dispatching" | "command_submitted"; previous: PreviousLifecycleLedger; } | { phase: "command_resolved"; at: string; binding: ManagedTerminalBinding; reason: string; }; /** Pure phase builder; persistence and lifecycle CAS remain with the caller. */ export declare function nativeThreadLifecycleLedger(transition: NativeThreadTransition, storeDir: string, phase: NativeThreadLifecycleLedgerPhase): TerminalDispatchLedgerDocument; export interface DecodeTerminalDispatchLedgerOptions { ledgerPath: string; terminalControl: TerminalControlRef; legacyTerminalKey: string; canonicalTerminalKey: string; } /** Parse and validate one already-read ledger document without performing I/O. */ export declare function decodeTerminalDispatchLedgerDocument(source: string, options: DecodeTerminalDispatchLedgerOptions): TerminalDispatchLedgerDocument; export declare function terminalDispatchLedgerLooksLifecycle(ledger: TerminalDispatchLedgerDocument | undefined): boolean; export declare function terminalDispatchReceiptHistory(ledger: TerminalDispatchLedgerDocument | undefined): TerminalDispatchReceipt[]; export declare function terminalDispatchReceiptCandidate(ledger: TerminalDispatchLedgerDocument): TerminalDispatchReceipt | undefined; export declare function mergeTerminalDispatchReceipt(previous: TerminalDispatchReceipt, next: TerminalDispatchReceipt): TerminalDispatchReceipt; export interface ConstructTerminalDispatchLedgerOptions { previousLedger: TerminalDispatchLedgerDocument | undefined; incomingLedger: TerminalDispatchLedgerDocument; version: 1 | 2; terminalKey: string; terminalControl: TerminalDispatchLedgerDocument; terminalEndpoint?: unknown; } /** Build the exact JSON document; the caller remains responsible for atomic I/O. */ export declare function constructTerminalDispatchLedgerDocument({ previousLedger, incomingLedger, version, terminalKey, terminalControl, terminalEndpoint }: ConstructTerminalDispatchLedgerOptions): TerminalDispatchLedgerDocument; export {};