import type { ExecutorFn, ProgressCallback, Task, VariantResult } from '../types/index.js'; export interface ExecuteTasksOptions { tasks: Task[]; executor: ExecutorFn; /** Executor name (e.g. 'claude' / 'codex' / 'openai-api'). Used in cache key * to prevent cross-executor pollution when same model name is used. */ executorName?: string; model: string; noJudge: boolean; samplesPath: string; /** Sample bundle 根目录 — 单文件模式 = dirname(samplesPath),目录模式 = 目录自身。 * 传给 grade 当 samplesDir(custom assertion fn 相对路径锚点),也用作 mocksBaseDir 兜底。 * 缺省时仍 fallback dirname(resolve(samplesPath)),不破单文件老用法。 */ samplesBaseDir?: string; concurrency: number; timeoutMs?: number; noCache: boolean; verbose: boolean; onProgress?: ProgressCallback | null; /** Max retries per task on failure (default 0 = no retry) */ retry?: number; /** Pre-loaded results to skip (for --resume) */ existingResults?: Record>; /** Number of times to call the LLM judge per (sample × dimension); default 1. */ judgeRepeat?: number; /** Unified judge config — always non-empty. `length === 1` runs single-judge * quick path; `length >= 2` runs ensemble + agreement metrics. */ judgeModels: import('../types/index.js').JudgeConfig[]; /** Pre-built executor map covering every executor referenced in `judgeModels`. * Pipeline must populate this before calling executeTasks. */ judgeExecutors: Record; /** v0.21 length-debias toggle. Default true; CLI's --no-debias-length sets it false. */ lengthDebias?: boolean; /** hard budget caps. When totalUSD is exceeded mid-run, remaining * tasks are skipped and the partial result set is returned with * budgetExhausted: true. Per-sample caps don't abort but mark offending * tasks as failed. */ budget?: import('../types/index.js').EvalBudget; /** Reasoning effort for executor LLM。透传到 ExecutorInput.effort, * 默认 'low'(在 parseRunConfig 兜底)。 */ effort?: 'low' | 'medium' | 'high' | 'xhigh' | 'max'; /** 关闭 diagnostic LLM call。Default false。失败用例(任意 assertion fail) * 默认会跑 diagnostic 给"哪错了 + 怎么改 skill"建议。跟 noJudge 完全独立。 */ noDiagnostic?: boolean; } export declare function executeTasks({ tasks, executor, executorName, model, noJudge, samplesPath, samplesBaseDir, concurrency, timeoutMs, noCache, verbose, onProgress, retry, existingResults, judgeRepeat, judgeModels, judgeExecutors, lengthDebias, budget, effort, noDiagnostic, }: ExecuteTasksOptions): Promise<{ results: Record>; totalCostUSD: number; skipped: number; budgetExhausted: boolean; }>; export declare function preflightRuntimeLabel(executorName: string, model: string): string; export declare function preflight(executor: ExecutorFn, model: string, timeoutMs?: number, label?: string): Promise; /** * Preflight every unique `(executor, model)` judge in `judgeModels`. Used by the * eval pipeline to fail fast when any ensemble member is misconfigured (404 model, * missing binary, auth failure) — without this, judge #2/#3 errors would only surface * mid-grading, after the run had already incurred task-execution cost and produced * partial reports without `judgeAgreement`. * * - Dedupes by normalized `executor:model` key — repeated entries probe once. * - Fails fast on the first failing judge; does NOT continue probing. * - Throws when an entry's executor is not present in `judgeExecutors` map (the * pipeline must build the map covering every judge before calling this). */ export declare function preflightAllJudges(judgeModels: import('../types/index.js').JudgeConfig[], judgeExecutors: Record, timeoutMs?: number): Promise;