/** * render-metrics.ts — Lightweight render performance tracking. * * Tracks min/mean/max render durations, request vs actual render counts, * active agents per render, time to first visible, and render rate. * * Use via environment variable PI_SUBAGENTS_LOG_LEVEL=debug to see slow render logs. */ export interface RenderMetricsSnapshot { label: string; renderCount: number; meanMs: number; minMs: number; maxMs: number; lastMs: number; requestedRenderCount: number; skippedRenderCount: number; requestToActualRatio: number; activeAgentCount: number; activeAgentMin: number; activeAgentMax: number; activeAgentMean: number; firstRenderTimestamp: number; firstSpawnTimestamp: number; timeToFirstVisibleMs: number; startedAt: number; elapsedMs: number; rendersPerSecond: number; rendersPerMinute: number; } export declare class RenderMetrics { private readonly label; private readonly slowThresholdMs; private renderCount; private totalRenderTime; private maxRenderTime; private minRenderTime; private lastDurationMs; private requestedRenderCount; private activeAgentCount; private activeAgentTotal; private activeAgentMin; private activeAgentMax; private firstRenderTimestamp; private firstSpawnTimestamp; private startedAt; constructor(label: string, slowThresholdMs?: number); /** * Record a requested render (before debounce/dirty-check filtering). * Returns the net requested count. */ recordRequested(): number; /** * Record an actual render execution. * * @param durationMs - How long the render took. * @param activeAgents - How many agents were active at render time. * @returns true if the render was logged as slow. */ record(durationMs: number, activeAgents?: number): boolean; /** Set the spawn timestamp for time-to-first-visible calculation. */ setFirstSpawnTimestamp(ts: number): void; /** Reset all counters. */ reset(): void; /** Get a snapshot of current metrics. */ snapshot(): RenderMetricsSnapshot; /** Number of renders skipped due to debounce/dirty-check. */ get skippedCount(): number; get mean(): number; get count(): number; get max(): number; get min(): number; get last(): number; get requestedCount(): number; }