import type { TraceEnvelope } from '../core/types.ts'; import type { RunMemberFn } from './EvalRunner.ts'; export interface ReplayTaskScore { correlationId: string; member: string; timestamp: string; status: 'completed' | 'error' | 'skipped'; storedOutput?: string; newOutput?: string; /** Cosine similarity of the stored vs re-run output; null when uncomputable */ similarity: number | null; durationMs: number; error?: string; } export interface ReplayReport { members: string[]; timestamp: string; replayCount: number; skippedCount: number; errorCount: number; averageSimilarity: number | null; tasks: ReplayTaskScore[]; } export type EmbedFn = (text: string) => Promise; /** * Re-runs a member against the inputs of historical trace envelopes and * compares each re-run output to the stored output, so behavior drift * surfaces as a drop in average similarity. */ export declare class ReplayEvaluator { private readonly runner; private readonly embed; constructor(runner: RunMemberFn, embed: EmbedFn); replay(traces: TraceEnvelope[]): Promise; private replayTrace; private embedScore; } //# sourceMappingURL=ReplayEvaluator.d.ts.map