import { type EvalTarget } from "../../agentTarget.js"; import type { AgencyConfig } from "../../config/config.js"; import type { SuiteRunResult, Test } from "../../eval/runTypes.js"; import type { SuiteIdentity } from "../../runDirectory/annotations.js"; import { type RunAgentOptions } from "./runAgent.js"; import type { EvalInputRunner } from "./subprocess.js"; /** Per-run knobs forwarded verbatim to every runAgent call in the suite. * Pick, not re-declaration: the compiler keeps this in sync with * RunAgentOptions. NOTE the omission semantics shift at suite level: with * `seed` omitted, runSuite computes ONE closure walk for the whole suite and * passes it to every run — never one walk per input (RunAgentOptions.seed's * own doc describes the single-run case). */ export type PerRunOptions = Pick; /** Options for running a LOADED suite: parsed Test[], resolved values. * The raw-flags side lives in the evalRun command (EvalRunCliOptions). */ export type RunSuiteOptions = { /** The agent. A string is file-target convenience (path, path:node, or a * directory meaning main.agency) and is resolved here; a resolved * EvalTarget passes through with no re-validation — it already passed * resolveEvalTarget, including the {input}-placeholder check. */ agent: string | EvalTarget; inputs: Test[]; /** The group directory; each test's run directory is written at * `//`. Default: `/-`. */ out?: string; /** Default true. */ config?: AgencyConfig; /** Worker-pool size for input scheduling; 1 (default) = sequential with * piped agent output, >1 = parallel with a status board instead. */ parallel?: number; /** Default true: suite-level progress on stderr (the run-dir line, the * per-input heartbeat and status lines, the parallel status board). The * optimizer turns it off — its reporter owns the narrative, and * `optimize --silent` must print nothing at all. */ progress?: boolean; /** Where the suite came from, recorded on every test's `run` annotation. */ suite?: SuiteIdentity; /** Run every test this many times, each as its own run directory at * `///`; 1 (the default) keeps `//`. * A finite positive integer. */ trials?: number; perRun?: PerRunOptions; }; /** Test seam, same pattern as RunAgentDeps. */ export type RunSuiteDeps = { runner?: EvalInputRunner; }; /** * Run an agent against a loaded suite and write one run directory per test * at `//`: the test's trace in `statelog.jsonl`, its workdir * under `workdir/`, the agent's code under `code/`, and one `run` annotation * saying which test it was and how it ended. A test whose directory already * exists is an error result; the others still run. Executes only — grading is * a separate pass over the finished directories (docs/dev/evals/eval-grading.md). */ export declare function runSuite(opts: RunSuiteOptions, deps?: RunSuiteDeps): Promise;