import type { EvalResult } from '../core/types.ts'; import type { TokenUsage } from '../llm/types.ts'; import type { EvalJudge } from './EvalJudge.ts'; import type { EmbedFn } from './ReplayEvaluator.ts'; import type { EvalSuite } from './types.ts'; export declare const DEFAULT_METRICS: string[]; export interface MemberRunResult { output: string; durationMs: number; usage?: TokenUsage; } export type RunMemberFn = (task: string) => Promise; export type TaskStatus = 'completed' | 'error' | 'unevaluated'; export interface TaskScore { input: string; expectedOutput: string; output: string; durationMs: number; tokens: number; scores: Record; status: TaskStatus; error?: string; assertions?: { score: number; passed: number; total: number; }; } export interface EvalReport { suiteName: string; member: string; timestamp: string; tasks: TaskScore[]; aggregate: Record; } /** * Runs a member against every task in a suite, scores each run through an * EvalJudge, and aggregates per-metric means. `runner` is injected so tests * and the replay evaluator can drive it without an LLM. */ export declare class EvalRunner { private readonly runner; private readonly judge; private readonly metrics; private readonly embed?; constructor(runner: RunMemberFn, judge: EvalJudge, options?: { metrics?: string[]; embed?: EmbedFn; }); run(suite: EvalSuite, member: string): Promise; private runTask; } /** Converts a report into EvalResult episodes consumable by the EpisodeLearner. */ export declare function buildEvalResults(report: EvalReport): EvalResult[]; //# sourceMappingURL=EvalRunner.d.ts.map