/** * Runtime status — "what is the agent doing right now?" * * A tiny global state object that runQuery updates at each transition and * the F1 "what's happening?" hotkey reads back via TTS. Lets blind users * press F1 and hear "calling claude-sonnet-4, 8 seconds elapsed" instead * of sitting in front of a silent terminal wondering if it crashed. * * State machine (happy path): * * idle → recording → transcribing → streaming → responding → idle * ↘ tool-call → streaming ↗ * ↘ compacting → streaming ↗ * * `since` is reset only when the state actually changes — that way pressing * F1 twice in a row reports the same elapsed-since-this-state, not a tiny * delta from the last read. * * setStatus is fire-and-forget from anywhere; getStatus / describeStatus * are pure reads. No allocations on the hot streaming path. */ export type AgentState = 'idle' | 'recording' | 'transcribing' | 'streaming' | 'responding' | 'tool-call' | 'compacting'; export interface RuntimeStatus { state: AgentState; detail?: string; since: number; model?: string; provider?: string; mode?: string; permissionMode?: string; } /** * Update one or more fields. Resets `since` only when `state` changes * (so reading status twice doesn't lie about how long we've been here). */ export declare function setStatus(patch: Partial): void; export declare function getStatus(): RuntimeStatus; /** * Short, speakable description of the current state. Designed to be read * aloud through TTS — short enough not to feel chatty, specific enough to * be useful while waiting. */ export declare function describeStatus(): string; /** * "Where am I" — short summary of the current model, provider, mode, and * permission level. Spoken on F2. Doesn't include the elapsed timer since * this is positional info, not progress info. */ export declare function describeLocation(): string;