/** * Performance Tracker - Tracks and analyzes timing metrics across all tiers * * Features: * - Per-tier timing with component breakdown (network, parsing, JS execution) * - Rolling window of historical metrics per domain * - Percentile calculations (p50, p95, p99) * - Overall system performance summary */ import type { RenderTier } from '../core/tiered-fetcher.js'; /** * Timing breakdown for a single request */ export interface TimingBreakdown { total: number; network?: number; parsing?: number; jsExecution?: number; extraction?: number; } /** * A single timing record */ export interface TimingRecord { timestamp: number; domain: string; url: string; tier: RenderTier; timing: TimingBreakdown; success: boolean; fellBack: boolean; tiersAttempted: RenderTier[]; } /** * Percentile statistics */ export interface PercentileStats { p50: number; p95: number; p99: number; min: number; max: number; avg: number; count: number; } /** * Per-domain performance summary */ export interface DomainPerformance { domain: string; totalRequests: number; successRate: number; preferredTier: RenderTier | null; byTier: Record; overall: PercentileStats; lastUpdated: number; } /** * System-wide performance summary */ export interface SystemPerformance { totalRequests: number; totalDomains: number; successRate: number; byTier: Record; overall: PercentileStats; topSlowDomains: Array<{ domain: string; avgTime: number; }>; topFastDomains: Array<{ domain: string; avgTime: number; }>; } export declare class PerformanceTracker { private records; private domainRecords; /** * Record a timing event */ record(record: Omit): void; /** * Calculate percentiles for a set of values */ private calculatePercentiles; /** * Get performance metrics for a specific domain */ getDomainPerformance(domain: string): DomainPerformance | null; /** * Get system-wide performance metrics */ getSystemPerformance(): SystemPerformance; /** * Get detailed timing breakdown for recent requests */ getRecentTimings(limit?: number): TimingRecord[]; /** * Get timing records for a specific tier */ getTierTimings(tier: RenderTier, limit?: number): TimingRecord[]; /** * Get component breakdown aggregates */ getComponentBreakdown(): { network: PercentileStats | null; parsing: PercentileStats | null; jsExecution: PercentileStats | null; extraction: PercentileStats | null; }; /** * Get domains ordered by performance */ getDomainsByPerformance(sortBy?: 'avgTime' | 'p95' | 'successRate', order?: 'asc' | 'desc', limit?: number): DomainPerformance[]; /** * Clear all records */ clear(): void; /** * Get record count */ getRecordCount(): { total: number; byDomain: number; }; } export declare const performanceTracker: PerformanceTracker; //# sourceMappingURL=performance-tracker.d.ts.map