export declare const EVENT_V3_LIVE_RELATIVE_ROOT: ".harnery/live/v3"; export interface LiveDisplayInputV3 { generation_id: string; event_id: string; executable?: string; intent_display?: string; target_labels?: string[]; ttl_ms?: number; } export interface LiveDisplayRowV3 { format: "harnery-event-v3-live-display"; format_version: 1; row_id: `live_${string}`; generation_id: string; event_id: string; written_at: string; expires_at: string; executable?: string; intent_display?: string; target_labels?: string[]; } export interface LiveDisplayJanitorResultV3 { scanned: number; removed: number; retained: number; } /** * Append one best-effort operator-display row. The narrow input shape has no * fields for prompts, argv, tool input, output, exception bodies, or messages. */ export declare function writeLiveDisplayV3(coordRoot: string, input: LiveDisplayInputV3, now?: () => Date): LiveDisplayRowV3; /** * Best-effort overlay write for producers. Never throws: the live feed is * presentation-only and must not fail a durable ledger append. */ export declare function tryWriteLiveDisplayV3(coordRoot: string, input: LiveDisplayInputV3, now?: () => Date): LiveDisplayRowV3 | undefined; /** * Return every unexpired live-display row across generations. * * A generation file whose last write is older than the hard TTL cannot hold a * live row, so it is skipped on the stat alone. Without that guard a directory * that has not been swept turns every read into a parse of days of residue. */ export declare function listLiveDisplayV3(coordRoot: string, now?: () => Date): LiveDisplayRowV3[]; /** Return only unexpired, structurally valid rows. Expiry is enforced before cleanup. */ export declare function readLiveDisplayV3(coordRoot: string, generationId: string, now?: () => Date): LiveDisplayRowV3[]; /** Remove fully expired generation files; malformed residue is bounded by the hard maximum. */ export declare function janitorLiveDisplayV3(coordRoot: string, now?: () => Date): LiveDisplayJanitorResultV3; /** Conservative allowlist scrubber: uncertainty omits the display instead of partially rendering it. */ export declare function safeIntentDisplayV3(value: string | undefined): string | undefined; //# sourceMappingURL=live-feed.d.ts.map