import type { BatchEvaluationReport, EvaluationReport, JobStore, ProgressCallback, VariantSpec } from '../types/index.js'; interface RunSingleEvaluationOptions { samplesPath: string; skillDir: string; /** 每个 batch entry 的实验结构(baseline control vs 当前 skill treatment),由 * runEvaluation 的 spec-based 解析统一绑定 role / 隔离。 */ variantSpecs: VariantSpec[]; /** strict-baseline default,透传给 per-skill runEvaluation(baseline → allowedSkills=[])。 */ strictBaseline?: boolean; model: string; judgeModel: string; outputDir: string | null; noJudge: boolean; concurrency: number; timeoutMs?: number; noCache: boolean; executorName: string; judgeExecutorName?: string; jobStore: null; persistJob: false; onProgress: ProgressCallback | null; skipConnectivity: boolean; /** --skip-doctor escape hatch (forwarded to per-skill runEvaluation). */ skipDoctor?: boolean; lang?: 'zh' | 'en'; mcpConfig?: string; verbose: boolean; runId?: string; /** Forwarded to grade(); each sample x dimension is judged N times. Default 1. */ judgeRepeat?: number; /** Forwarded to pipeline; >= 2 entries triggers multi-judge ensemble mode. */ judgeModels?: import('../types/index.js').JudgeConfig[]; /** length-debias toggle. Default true. */ lengthDebias?: boolean; /** --bootstrap. Distribution-free CI on each child report. */ bootstrap?: boolean; /** --bootstrap-samples N. */ bootstrapSamples?: number; /** Hard budget caps forwarded to each child report. */ budget?: import('../types/index.js').EvalBudget; } interface CompletedBatchSkillRun { name: string; skillPath: string; samplesPath: string; report: EvaluationReport; filePath: string | null; } /** Batch 每个 entry 的实验结构固定:baseline control vs 当前 skill treatment。 * 构造 VariantSpec 交给 runEvaluation 的 spec-based 解析按身份绑定 role / 隔离——与单跑 * 路径同一处绑定逻辑,batch 不再自管 artifact 拼装(此前两处手抄 resolveArtifacts().map() * 导致 #183 角色误绑各存一份)。 * 两个 variant 的 allowedSkills 都从 eval.yaml variants[].allowedSkills 取:treatment 按 skill * 名 entry.name 查、baseline 按保留名 `baseline` 查,挂到对应 spec 上由 prepareEvaluationRun * 统一绑定。baseline 的显式声明(`[]`)必须保留——eval.yaml variant.allowedSkills * 优先于 strictBaseline 默认,漏挂会让 `--batch --config` 的 baseline 隔离配置静默失效。 */ export declare function buildBatchVariantSpecs(entry: { name: string; skillPath: string; }, variantAllowedSkills?: Record): VariantSpec[]; export declare function buildBatchEvaluationReport({ batchRunId, skillDir, skillEntries, skillResults, model, judgeModel, noJudge, executorName, judgeExecutorName, project, owner, tags, concurrency, timeoutMs, totalCostUSD, repeat, judgeModels, noCache, bootstrap, bootstrapSamples, lengthDebias, budget, strictBaseline, }: { batchRunId: string; skillDir: string; skillEntries: Array<{ name: string; skillPath: string; samplesPath: string; }>; skillResults: CompletedBatchSkillRun[]; model: string; judgeModel: string; noJudge: boolean; executorName: string; judgeExecutorName?: string; project?: string; owner?: string; tags?: string[]; concurrency: number; timeoutMs?: number; totalCostUSD: number; repeat?: number; judgeModels?: import('../types/index.js').JudgeConfig[]; noCache: boolean; bootstrap?: boolean; bootstrapSamples?: number; lengthDebias?: boolean; budget?: import('../types/index.js').EvalBudget; strictBaseline?: boolean; }): { report: BatchEvaluationReport; job: import('../types/index.js').EvaluationJob; }; export declare function executeBatchEvaluationRuns({ skillDir, skillEntries, model, judgeModel, outputDir, project, owner, tags, noJudge, concurrency, timeoutMs, executorName, judgeExecutorName, jobStore, persistJob, onProgress, onSkillProgress, skipConnectivity, skipDoctor, lang, mcpConfig, verbose, repeat, judgeRepeat, judgeModels, lengthDebias, bootstrap, bootstrapSamples, budget, noCache, strictBaseline, variantAllowedSkills, runSingleEvaluation, }: { skillDir: string; skillEntries: Array<{ name: string; skillPath: string; samplesPath: string; }>; model: string; judgeModel: string; outputDir?: string | null; project?: string; owner?: string; tags?: string[]; noJudge?: boolean; concurrency?: number; timeoutMs?: number; executorName: string; judgeExecutorName?: string; jobStore?: JobStore | null; persistJob?: boolean; onProgress?: ProgressCallback | null; onSkillProgress?: ((info: { phase: string; skill: string; current: number; total: number; }) => void) | null; skipConnectivity?: boolean; /** --skip-doctor escape hatch. */ skipDoctor?: boolean; lang?: 'zh' | 'en'; mcpConfig?: string; verbose?: boolean; repeat?: number; judgeRepeat?: number; judgeModels?: import('../types/index.js').JudgeConfig[]; lengthDebias?: boolean; bootstrap?: boolean; bootstrapSamples?: number; budget?: import('../types/index.js').EvalBudget; noCache?: boolean; /** strict-baseline default. Forwarded to per-skill resolveArtifacts. */ strictBaseline?: boolean; /** explicit per-variant allowedSkills override. */ variantAllowedSkills?: Record; runSingleEvaluation: (options: RunSingleEvaluationOptions) => Promise<{ report: EvaluationReport; filePath: string | null; }>; }): Promise<{ report: BatchEvaluationReport; filePath: string | null; }>; export {};