/** * Turn progress controller - tracks tool calls and maintains status. * Adapted from IdleHands. */ import type { ProgressHooks, ProgressSnapshot, ToolCallEvent } from "./types.js"; export type TurnProgressOptions = { /** Heartbeat interval for status updates (default: 1000ms) */ heartbeatMs?: number; /** Quantize elapsed time to reduce status line churn (default: 5000ms) */ bucketMs?: number; /** Max tool lines to keep (default: 8) */ maxToolLines?: number; /** Custom tool call summary formatter */ formatToolCall?: (call: ToolCallEvent) => string; }; export type ProgressSink = (snap: ProgressSnapshot) => void; export declare class TurnProgressController { readonly hooks: ProgressHooks; private readonly sink; private readonly heartbeatMs; private readonly bucketMs; private readonly maxToolLines; private readonly formatToolCall; private startedAt; private lastActivityAt; private phase; private timer; private lastRenderedLine; private activeTool; private toolLines; private turnCount; private totalToolCalls; private totalPromptTokens; private totalCompletionTokens; private lastTurnStats; private contextTokens; constructor(sink: ProgressSink, opts?: TurnProgressOptions); start(): void; stop(): void; snapshot(): ProgressSnapshot; private buildStatusLine; private emit; private markActivity; private pushToolLine; private replaceLastToolLine; private onToken; private onFirstDelta; private onToolCall; private onToolResult; private onTurnEnd; }