import type { CodexAppServerThread, CodexAppServerTurn } from "./codex-app-server-read-client.js"; import type { CodexAsyncQuestionDurableEvidence } from "./codex-async-question-adapter.js"; import type { TerminalCompletionEvidence } from "./terminal-agent-adapter.js"; import { type CodexBlockingQuestionDraft } from "./codex-app-server-questionnaire.js"; import { type TerminalSubmissionAcceptanceEvidence } from "./terminal-submission-facts.js"; export interface CodexPaginatedTaskAnchor { schema: "agent-knock-knock/codex-paginated-task-anchor"; version: 1 | 2; origin: "user_explicit_send" | "active_task"; captured_at: string; codex_home: string; /** Physical foreground TUI version; legacy anchors implicitly use it as backend too. */ codex_version: string; /** Observed backend at capture; read compatibility is revalidated on each read. */ backend_version?: string; /** Required by v2; absent from unmodified legacy v1 fingerprints. */ thread_cwd?: string; thread_originator?: string; native_thread_id: string; process_uuid: string; process_birth: string; pid: number; request_hash: string; baseline_latest_turn_id?: string; turn_id?: string; anchor_fingerprint: string; } export interface CodexPaginatedTaskCheckpoint { schema: "agent-knock-knock/codex-paginated-task-checkpoint"; version: 1; safe_resume_offset_bytes: 0; acceptance_evidence?: TerminalSubmissionAcceptanceEvidence; /** Owner-private partial answers; never copy this field into callbacks. */ blocking_question_draft?: CodexBlockingQuestionDraft; } /** The reader proves contiguous descending turns through the required boundary. */ export interface CodexPaginatedTaskSnapshot { codexHome: string; serverVersion: string; thread: CodexAppServerThread; turns: readonly CodexAppServerTurn[]; completeToBoundary: boolean; } interface AcceptedPaginatedTaskObservation { evidence: TerminalSubmissionAcceptanceEvidence; checkpoint: CodexPaginatedTaskCheckpoint; questions: readonly CodexAsyncQuestionDurableEvidence[]; } export type CodexPaginatedTaskObservation = { status: "pending"; checkpoint: CodexPaginatedTaskCheckpoint; questions: readonly CodexAsyncQuestionDurableEvidence[]; } | ({ status: "accepted"; } & AcceptedPaginatedTaskObservation) | ({ status: "completed"; completion: TerminalCompletionEvidence; } & AcceptedPaginatedTaskObservation) | { status: "uncertain"; reason: string; } | { status: "unavailable"; reason: string; retryable: true; } | { status: "invalidated"; reason: string; }; export declare function createCodexPaginatedTaskAnchor(input: Omit): CodexPaginatedTaskAnchor; export declare function validateCodexPaginatedTaskAnchor(value: unknown): CodexPaginatedTaskAnchor; export declare function createCodexPaginatedTaskCheckpoint(acceptanceEvidence?: TerminalSubmissionAcceptanceEvidence, blockingQuestionDraft?: CodexBlockingQuestionDraft): CodexPaginatedTaskCheckpoint; export declare function validateCodexPaginatedTaskCheckpoint(value: unknown, anchor?: CodexPaginatedTaskAnchor): CodexPaginatedTaskCheckpoint; /** Inspect already-read data only; this module never opens a socket or a file. */ export declare function observeCodexPaginatedTask(input: { anchor: CodexPaginatedTaskAnchor; snapshot: CodexPaginatedTaskSnapshot; checkpoint?: CodexPaginatedTaskCheckpoint; }): CodexPaginatedTaskObservation; /** Hash the native stored input; the pre-Send caller profiles input normalization. */ export declare function codexPaginatedTurnRequestHash(turn: CodexAppServerTurn): string | undefined; /** Native completion clears its question queue, regardless of retained history. */ export declare function codexPaginatedAsyncQuestionEvidence(turn: CodexAppServerTurn, newerTurns?: readonly CodexAppServerTurn[]): readonly CodexAsyncQuestionDurableEvidence[]; export {};