import type { SessionActivity } from './types.js'; /** * How long after the agent's last session update it still counts as working. * * FLEET-002: a wake delivered by ACP steering answers `startedNewTurn` and runs * an entire turn that fleet never receives a `session/prompt` response for (ACP * has no turn-end session update), so `readiness` stays `idle` throughout. Tool * reservations and update recency are the only activity evidence fleet holds. * The trade-off is deliberate and one-directional: at worst a role reads busy * for one window after it genuinely stopped, instead of reading ready — or * being classified stalled — while it is executing tools. */ export declare const ACTIVITY_WINDOW_MS = 60000; export type ActivityState = 'active' | 'quiet' | 'unobservable'; export interface ObservedActivity { state: ActivityState; activeToolCalls?: number; lastUpdateAt?: string; } /** * Classify agent-side activity. `unobservable` is NOT `quiet`: absent evidence * must never be reported as "doing nothing". */ export declare function classifyActivity(activity: SessionActivity | undefined, now?: number): ObservedActivity; /** * One operator-facing line that never lets turn occupancy pose as liveness: * the readiness value is labelled as the turn field it is, and the activity * verdict is stated separately with the evidence behind it. */ export declare function describeSessionState(readiness: string | undefined, activity: SessionActivity | undefined, now?: number): string;