eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
57 lines (56 loc) • 2.6 kB
TypeScript
import type { AssertionHandle, AssertionResult, AssertionSeverity, EveEvalTaskResult } from "#evals/types.js";
import type { EveEvalAssertionSubject } from "#evals/assertions/run.js";
/**
* Outcome of evaluating one assertion: a 0–1 score (boolean assertions use
* exactly 0 or 1) with optional human-readable detail and metadata.
*/
export interface AssertionOutcome {
readonly score: number;
readonly message?: string;
readonly metadata?: Readonly<Record<string, unknown>>;
}
/**
* A scoped assertion evaluated lazily after `test(t)` returns. The selected
* subject may be the aggregate run, one session, or one immutable turn.
*/
export interface RunAssertion {
readonly name: string;
evaluate(result: EveEvalAssertionSubject): AssertionOutcome | Promise<AssertionOutcome>;
}
/**
* Collects the assertions recorded by an eval's `test(t)`. Run-level
* assertions register a deferred spec; value/judge assertions evaluate their
* captured value immediately (the value is ephemeral) and register the pending
* promise. {@link finalize} resolves everything against the final result and
* produces the ordered {@link AssertionResult} list the verdict reads.
*/
export declare class AssertionCollector {
#private;
/** Whether the eval has already recorded an assertion. */
get hasEntries(): boolean;
/** Register a deferred assertion against a turn or session scope. */
recordScoped(spec: RunAssertion, selectSubject: (result: EveEvalTaskResult) => EveEvalAssertionSubject, severity?: AssertionSeverity): AssertionHandle;
/** Register a value/judge assertion, evaluating the captured value now. */
recordValue(input: {
readonly name: string;
readonly severity: AssertionSeverity;
readonly threshold?: number;
readonly score: () => Promise<AssertionOutcome>;
}): AssertionHandle;
/** Record an already-computed assertion outcome and return whether it passed. */
recordOutcome(input: {
readonly name: string;
readonly outcome: AssertionOutcome;
}): boolean;
/** Record and await a required value assertion, returning whether it passed. */
recordRequirement(input: {
readonly name: string;
readonly threshold?: number;
readonly score: () => Promise<AssertionOutcome>;
}): Promise<boolean>;
/**
* Awaits every pending value/judge assertion, evaluates the deferred
* run-level assertions against `result`, and returns the recorded results.
*/
finalize(result: EveEvalTaskResult): Promise<readonly AssertionResult[]>;
}