/** * Metric Collectors * ADR-024: Self-Optimization Engine * * Collectors for gathering performance metrics used in auto-tuning. */ import type { MetricCollector, MetricSample, MetricStats } from './types.js'; /** * Base class for metric collectors with common functionality */ export declare abstract class BaseMetricCollector implements MetricCollector { readonly id: string; readonly metricName: string; protected samples: MetricSample[]; protected maxSamples: number; constructor(id: string, metricName: string, maxSamples?: number); /** * Collect a new metric sample */ abstract collect(): Promise; /** * Add a sample to the history */ protected addSample(sample: MetricSample): void; /** * Get aggregated stats for a time period */ getStats(periodMs: number): Promise; /** * Calculate percentile value */ protected percentile(sortedValues: number[], p: number): number; /** * Calculate trend from samples * Note: Base implementation assumes lower values are better (e.g., latency). * Override in subclasses where higher is better (e.g., accuracy, quality). */ protected calculateTrend(samples: MetricSample[]): 'improving' | 'stable' | 'degrading'; /** * Create empty stats when no samples exist */ protected createEmptyStats(periodStart: Date, periodEnd: Date): MetricStats; /** * Clear all samples */ clear(): void; /** * Get sample count */ getSampleCount(): number; /** * Export samples for persistence */ exportSamples(): MetricSample[]; /** * Import samples from persistence */ importSamples(samples: MetricSample[]): void; } /** * Search latency metric collector * Tracks HNSW search performance */ export declare class SearchLatencyCollector extends BaseMetricCollector { private pendingLatencies; constructor(); /** * Record a search latency */ recordLatency(latencyMs: number): void; collect(): Promise; } /** * Routing accuracy metric collector * Tracks how often routing recommendations lead to success */ export declare class RoutingAccuracyCollector extends BaseMetricCollector { private outcomes; constructor(); /** * Record a routing outcome */ recordOutcome(followedRecommendation: boolean, wasSuccessful: boolean): void; collect(): Promise; protected calculateTrend(samples: MetricSample[]): 'improving' | 'stable' | 'degrading'; } /** * Pattern quality metric collector * Tracks quality scores of patterns over time */ export declare class PatternQualityCollector extends BaseMetricCollector { private qualityScores; constructor(); /** * Record a pattern quality score */ recordQuality(score: number): void; collect(): Promise; protected calculateTrend(samples: MetricSample[]): 'improving' | 'stable' | 'degrading'; } /** * Test maintainability metric collector * Tracks maintainability scores of generated tests */ export declare class TestMaintainabilityCollector extends BaseMetricCollector { private maintainabilityScores; constructor(); /** * Record a test maintainability score */ recordMaintainability(score: number): void; collect(): Promise; protected calculateTrend(samples: MetricSample[]): 'improving' | 'stable' | 'degrading'; } /** * Registry of all metric collectors */ export declare class MetricCollectorRegistry { private collectors; /** * Register a collector */ register(collector: MetricCollector): void; /** * Get a collector by metric name */ get(metricName: string): MetricCollector | undefined; /** * Get all collectors */ getAll(): MetricCollector[]; /** * Collect all metrics */ collectAll(): Promise; /** * Get stats for all metrics */ getAllStats(periodMs: number): Promise>; } /** * Create default metric collector registry with all AQE collectors */ export declare function createDefaultCollectorRegistry(): MetricCollectorRegistry; //# sourceMappingURL=metric-collectors.d.ts.map