import type { AdapterAttestation } from "./attestation.js"; import type { AdapterRegistry } from "./registry.js"; import type { AdapterCapabilityDimension, AdapterId, CapabilitySupport } from "./types.js"; export type BenchVerdict = "supported" | "partial" | "unsupported" | "not_applicable" | "unknown" | "skipped" | "drift"; export type BenchDimension = "registration" | "binary" | "contract" | AdapterCapabilityDimension; /** How a result was established (ADR 0037). Orthogonal to the verdict: this * answers "how do we know", not "what is true". * * - `adapter`: checked against Harnery's own planner, normalizer, or fixture. * Proves the adapter contract, says nothing about the installed vendor CLI. * - `attested`: checked by observing the installed vendor CLI on this host. * - `declared`: not checked. The value is the declaration, repeated. */ export type BenchBasis = "adapter" | "attested" | "declared"; export interface BenchResult { adapter: AdapterId; dimension: BenchDimension; declared: CapabilitySupport | "not_applicable"; observed: BenchVerdict; verdict: BenchVerdict; basis: BenchBasis; note?: string; } export interface AdapterBenchReport { generatedAt: string; mode: "offline"; adapters: AdapterId[]; results: BenchResult[]; summary: Record; /** Result counts per basis, so a caller can tell a clean report from an * unmeasured one without walking every result. */ basisSummary: Record; drift: boolean; skipped: boolean; } export interface AdapterBenchOptions { adapters?: readonly string[]; dimensions?: readonly AdapterCapabilityDimension[]; /** Test seam and alternate host probe. A null version means unavailable. */ versionProbe?: (binary: string) => string | null; /** Where to look for live attestations (ADR 0038). Defaults to the coord * root. Reading them never runs a model turn. */ coordRoot?: string; /** Test seam. Defaults to reading the attestation store. */ attestationReader?: (adapter: AdapterId) => AdapterAttestation | null; /** Only cite attestations recorded under this billing mode. Omitted means * any mode is acceptable for reporting purposes. */ subscriptionOnly?: boolean; } export declare function runAdapterBench(registry: AdapterRegistry, opts?: AdapterBenchOptions): AdapterBenchReport; /** Ask an installed vendor CLI what version it is. Null when it is absent or * refuses to answer. Shared with the live attestation probe so both halves of * the capability story key on the same string. */ export declare function probeBinaryVersion(binary: string): string | null; //# sourceMappingURL=bench.d.ts.map