/** * Canary Deployment Testing - Compare baseline vs canary agent versions safely. * * @example * ```bash * agentprobe canary-compare baseline.json canary.json --thresholds thresholds.yaml * ``` */ import type { SuiteResult } from './types'; export interface CanaryMetrics { passRate: number; avgLatencyMs: number; p95LatencyMs: number; totalCostUsd: number; safetyScore: number; errorRate: number; } export interface CanaryThresholds { maxPassRateDrop: number; maxLatencyIncrease: number; maxCostIncrease: number; minSafetyScore: number; maxErrorRateIncrease: number; } export interface MetricComparison { metric: string; baseline: number; canary: number; delta: number; deltaPercent: number; status: 'improved' | 'degraded' | 'unchanged'; } export interface CanaryReport { timestamp: string; baselineName: string; canaryName: string; metrics: { baseline: CanaryMetrics; canary: CanaryMetrics; }; comparisons: MetricComparison[]; recommendation: 'promote' | 'rollback' | 'extend'; confidence: number; reasons: string[]; } export declare const DEFAULT_THRESHOLDS: CanaryThresholds; /** * Extract metrics from a suite result. */ export declare function extractMetrics(suite: SuiteResult): CanaryMetrics; /** * Compare baseline and canary suite results. */ export declare function compare(baseline: SuiteResult, canary: SuiteResult): CanaryReport; /** * Determine if a canary should be promoted based on thresholds. */ export declare function shouldPromote(report: CanaryReport, thresholds?: CanaryThresholds): boolean; /** * Format a canary report for console display. */ export declare function formatCanaryReport(report: CanaryReport): string; //# sourceMappingURL=canary-deploy.d.ts.map