import type { AgencyConfig } from "../../config.js"; import { type EvalRecordExtractor, type EvalInputRunner } from "../../eval/runEvalInput.js"; import type { EvalRunResult, Input } from "../../eval/runTypes.js"; export type EvalRunCliOptions = { agent: string; inputs?: string; goal?: string; runId?: string; runsDir?: string; continueOnError?: boolean; verbose?: boolean; config?: AgencyConfig; }; export type EvalRunLoadedInputsOptions = { agent: string; inputs: Input[]; inputsSource: string; runId?: string; runsDir?: string; continueOnError?: boolean; verbose?: boolean; config?: AgencyConfig; /** Suppress compile progress lines for the agent compile. * (Currently unused — kept for API compatibility.) */ quietCompile?: boolean; /** Pipe agent subprocess stdout/stderr through to the console. Defaults to true. */ pipeAgentOutput?: boolean; /** * Workdir seed override. When set, used verbatim for every input — no * closure-base derivation, no relpath computation. The optimizer always * sets this from `source.baseDir` + `source.entryFile`, so the seed * cannot silently diverge from the closure walk. * * Mutually exclusive with per-input `working_dir`: setting both is an * error. */ seed?: { dir: string; agentRelPath: string; }; /** Candidate-file overlay applied to every input in this call (over the * seeded copy, before compile). Plain eval never sets this. */ overlayFiles?: Record; }; export declare function resolveEvalRunTarget(target: string): { agentFile: string; node: string; label: string; }; export declare function validateInputSelection(opts: { inputs?: string; goal?: string; }): "inputs" | "goal"; /** * Run a compiled agent against an input suite and write per-input artifacts. * * The orchestration here is intentionally tiny: build the run state, loop * through inputs calling `runEvalInput` (the shared boundary), write a * summary. All per-input error handling lives inside `runEvalInput`. */ export declare function evalRun(opts: EvalRunCliOptions, overrides?: { runner?: EvalInputRunner; extractor?: EvalRecordExtractor; }): Promise; export declare function evalRunLoadedInputs(opts: EvalRunLoadedInputsOptions, overrides?: { runner?: EvalInputRunner; extractor?: EvalRecordExtractor; }): Promise; /** * Extractor for the optimizer: grades the entry node's return value (not the * last LLM completion) when `evalOutput()` wasn't called, and omits the * evalValue/evalOutput "did you forget to call…" warnings — inputs come from * the input spec and the graded output is the return value, so neither applies. */ export declare const optimizeEvalRecordExtractor: EvalRecordExtractor;