/** * The run notices a host conversation receives without polling: terminal outcomes and the inputs * a run is waiting on. One wording, two deliveries — the run-monitor App injects them as host * messages (`ui/src/model-messages.ts`), and a legacy-era session receives them as Claude Code * channel notifications (`channel-notifier.ts`). Pure by design: no Node or DOM imports, so the * same module bundles into the App. `scripts/ensure-run-monitor-html.mjs` hashes it with the UI * sources so a wording change regenerates the panel. */ import type { RunStatus } from "@automatalabs/shared-types"; export declare const RUN_NOTICE_MAX_CHARS = 1600; export type RunNoticeKind = "terminal" | "paused" | "checkpoint" | "permission" | "setup"; export interface RunNotice { /** Stable per-run identity: one trigger, one id, so every delivery path dedupes on it. */ id: string; kind: RunNoticeKind; /** The run status the notice describes. */ status: RunStatus; /** One-message text, sent to the agent as is: what the run reported is what the agent reads. */ text: string; } /** The subset of a persisted run event a terminal notice reads. */ export interface TerminalNoticeEvent { type: string; errorRecord?: { message?: string; }; } export declare function terminalNoticeText(runId: string, event: TerminalNoticeEvent): string | undefined; export declare function terminalNotice(runId: string, record: { streamId: string; seq: number; event: TerminalNoticeEvent; }): RunNotice | undefined; export interface PausedNoticeInput { reason: string; checkpoint?: { callIndex: number; hash: string; kind: string; }; backendId?: string; } export declare function pausedNotice(runId: string, pause: PausedNoticeInput): RunNotice; export declare function permissionNotice(runId: string, permission: { permissionId: string; callIndex: number; }): RunNotice; export declare function setupNotice(runId: string, request: { id: string; kind: string; }): RunNotice; //# sourceMappingURL=run-notices.d.ts.map