/** * Plugin interface for providing eval specs from external data sources. * * An eval plugin takes a file path and produces one or more complete * RawEvalSchema objects that the pipeline can validate and execute directly. * The file need not be YAML — the plugin interprets it however it wants. */ import type { RawEvalSchema } from "../types.js"; import type { EvalProviderRegistry } from "./registry.js"; /** Arguments passed to {@link EvalProvider.provide}. */ export interface EvalProviderArgs { /** Resolved absolute file path from the CLI's `--eval-spec` parameter. */ path: string; /** * CLI-level include tags that may influence eval generation. These are the * positive selection tags from `--tag key=value`. */ tags?: Record; /** * CLI-level exclude tags from `--tag key!=value`. A provider that uses source * tags to decide what to emit should honor these by not emitting evals that * carry an excluded key/value, since a provider that does not copy source * tags onto returned stimuli leaves the later plan filter no metadata to * recover the exclusion. */ tagsExclude?: Record; } /** * A plugin that replaces the default eval.yaml loading with custom logic, * including loading from completely custom formats. */ export interface EvalProvider { /** Unique name identifying this provider (e.g. "jsonl", "csv", "custom-format"). */ name: string; /** * Produce eval specs derived from the given file. * * @param args - Provider arguments (path, tags, etc.). * @returns An array of `RawEvalSchema` objects. By default the `filePath` * used for run bucketing and diagnostics is `args.path`. When a * provider returns multiple schemas from a single `args.path` (e.g. * a directory of task files), each schema should set its own * `filePath` field so that each task has a distinct identity. */ provide(args: EvalProviderArgs): Promise; } /** Every eval plugin exports a `registerEvalProviders(registry)` function. */ export interface EvalProviderPluginEntry { registerEvalProviders: (registry: EvalProviderRegistry) => void | Promise; } export declare function isEvalProviderPluginEntry(mod: unknown): mod is EvalProviderPluginEntry; //# sourceMappingURL=types.d.ts.map