import type { SessionManager } from "../session-manager.ts"; import type { OwnerId, Sequence, SettlementReceipt, TaskId, TaskRecord, TaskResult } from "./contracts.js"; export declare const TASK_COMPLETION_MESSAGE_TYPE = "task-completion"; export type TaskCompletionEnvelope = { completionId: string; ownerId: OwnerId; taskId: TaskId; terminalSequence: Sequence; result: TaskResult; display: false; }; export type TaskCompletionNotice = { title: string; preview: string; status: "completed" | "failed" | "cancelled"; taskId: string; model?: string; thinking?: string; }; export declare function taskCompletionNotice(envelope: TaskCompletionEnvelope, task?: Pick, output?: string): TaskCompletionNotice; /** A stop that leaves an agent paused and awaiting resume rather than ended. */ export declare function isResumableStop(result: TaskResult): result is Extract & { cause: "pause" | "quit"; }; /** Human/model-facing notice; the envelope remains the structured delivery identity. */ export declare function formatTaskCompletion(envelope: TaskCompletionEnvelope, task?: Pick & Partial>, output?: string): string; /** * Session history retains intent even when model admission or its acknowledgement fails. * Intents restored from an earlier process wait for `flushRestored()`; they never ride a live flush. */ export declare class TaskCompletionOutbox { private readonly entries; private readonly restored; private delivery; private restoredDelivery; private readonly session; private readonly isOpen; private readonly admit; constructor(session: SessionManager, isOpen: () => boolean, admit: (envelope: TaskCompletionEnvelope, restored: boolean) => Promise); get pending(): TaskCompletionEnvelope[]; record(ownerId: OwnerId, receipt: SettlementReceipt): void; flush(): Promise; /** Deliver intents an earlier process left unacknowledged; returns how many were delivered. */ flushRestored(): Promise; private deliver; } /** Completion intents recorded in this session history without an acknowledgement. */ export declare function pendingTaskCompletionIntents(session: Pick): TaskCompletionEnvelope[]; //# sourceMappingURL=completion.d.ts.map