/** * Shared helper for live (auto-refreshing) generated dashboards. * * The footgun this prevents: a generated page that auto-refreshes * UNCONDITIONALLY keeps reloading forever โ€” flickering long after the work it * was watching has finished. Every live page must gate its refresh on "is * something actually still rendering", so a finished/idle page goes quiet. */ export interface LiveRefreshOptions { /** Refresh ONLY while true (work is actively rendering). */ isRendering: boolean; /** Seconds between refreshes while rendering. Default 15. */ intervalSec?: number; } /** * The `` tag for a live dashboard โ€” emitted ONLY * while work is actively rendering. Returns `''` (no auto-refresh) once nothing * is rendering, so an idle/finished page stops reloading and never flickers. */ export function emitLiveRefresh(opts: LiveRefreshOptions): string { if (!opts.isRendering) return ''; const sec = opts.intervalSec ?? 15; return ``; } /** Human label for the refresh state โ€” matches what {@link emitLiveRefresh} actually does. */ export function liveRefreshLabel(isRendering: boolean, intervalSec = 15): string { return isRendering ? `auto-refresh ${intervalSec}s` : 'auto-refresh paused ยท idle'; }