import type { ProgramStatus, Terminal } from "@earendil-works/pi-tui"; import type { AgentSessionEvent } from "../../core/agent-session.js"; import type { UIPromptEndEvent, UIPromptStartEvent } from "../../core/extensions/agent-events.ts"; import type { WorkflowActivityFrame } from "../../core/extensions/workflow-events.js"; import type { JsonAgentSessionEvent } from "../json-event.ts"; export type BlockedStatus = { kind: NonNullable; message: string; }; export declare class ProgramStatusReporter { private runActive; private compacting; private runResult; private restingStatus; private readonly blocked; private lastReport; private readonly roots; /** Roots that failed while this session watched; held until the user's next input. */ private readonly failedRoots; /** Epoch of the source whose ready snapshot is the baseline; frames before it describe history, not new outcomes. */ private baselineEpoch; private cancellationAcknowledged; private readonly getTerminal; private readonly getSessionName; constructor(getTerminal: () => Terminal, getSessionName: () => string | undefined); handleEvent(event: AgentSessionEvent | JsonAgentSessionEvent): void; handleUIPrompt(event: UIPromptStartEvent | UIPromptEndEvent | undefined): void; handleWorkflowActivity(frame: WorkflowActivityFrame): void; private recordOutcome; setBlocked(source: string, status: BlockedStatus | undefined): void; reset(): void; report(): void; private currentStatus; /** * A root waits for the user when it is blocked, or when a wait is open beside executing work: the * projection reports such a root as `working`. Fixed text only: prompts raised by workflows never * reach the terminal. */ private workflowBlockedStatus; } //# sourceMappingURL=program-status-reporter.d.ts.map