export interface SavedOutput { tool: string; path: string; /** Uncompressed size in bytes. */ bytes: number; } export interface CheckEntry { command: string; passed: boolean; /** Short label: "current run", "run 2", or "current run, #3". */ when: string; } export interface HeldEntry { tool: string; /** Redacted preview of the call (command, path, or input); ≤120 chars. */ preview: string; outcome: string; } export interface StuckState { failures: number; sameStrategyScore: number | undefined; currentCallFamily: string | undefined; } export interface CompactSnapshot { savedOutputs: readonly SavedOutput[]; /** Capped at 5 in the hook before this is called. */ checks: readonly CheckEntry[]; /** Capped at 10 in the hook before this is called. */ holds: readonly HeldEntry[]; stuck: StuckState | undefined; activeTask: string | undefined; } /** Returns empty string for an empty snapshot. Capped at 2 000 chars. */ export declare function compactAppendix(snapshot: CompactSnapshot): string; /** * Build a `CompactSnapshot` from the extension's session-scoped state. All string values are redacted; saved-output * paths are local and allowed. */ export declare function buildCompactSnapshot(options: { savedOutputs: Array<{ tool: string; path: string; bytes: number; }>; checks: Array<{ command: string; passed: boolean; runIndex: number; indexInRun: number; }>; holds: Array<{ tool: string; preview: string; outcome: string; }>; stuck: { failures: number; sameStrategyScore: number | undefined; currentCallFamily: string | undefined; } | undefined; activeTask: string | undefined; runs: number; }): CompactSnapshot;