agentfootprint
Version:
The explainable agent framework — backtrack a wrong answer to the exact context that caused it (evidence, not guesses). Built on footprintjs.
48 lines (47 loc) • 2.32 kB
TypeScript
/**
* artifacts/conformance/run — running the battery, and saying honestly how it
* went.
*
* The runner owns exactly three decisions, and all three are about the ways a
* case can NOT run:
*
* 1. the case is about an OPTIONAL port member this store does not implement
* (`putStream` / `getStream`) → `'not-applicable'`, naming the member.
* Feature detection, which is the port's own rule applied to its own
* battery.
* 2. the store implements it and cannot satisfy the case, and the harness said
* so by name → `'declared'`, carrying the reason. It is run ANYWAY, so a
* declaration that has quietly become untrue is visible rather than
* permanent.
* 3. the case needs a harness hook nobody supplied and nobody declared →
* `'failed'`. This is the one that matters: an undeclared skip is a pass
* with the evidence removed, which is the same shape as every defect a
* conformance battery exists to catch.
*/
import type { ArtifactStoreCase, ArtifactStoreHarness, ArtifactStoreOutcome, ArtifactStoreReport } from './types.js';
/**
* Run ONE case against one store, building and disposing the store around it.
*
* Exported because a test framework wants one assertion per case: iterate
* {@link artifactStoreConformance}, call this, and turn the outcome into an
* `it()`. That gives per-case granularity in any framework without this module
* knowing what a framework is.
*/
export declare function runArtifactStoreCase(testCase: ArtifactStoreCase, harness: ArtifactStoreHarness): Promise<ArtifactStoreOutcome>;
/**
* Run the whole battery against one store and report.
*
* @example Claiming the port for a store of your own
* const report = await runArtifactStoreConformance({
* name: 'ourOwnArtifacts',
* createStore: () => ourOwnArtifacts({ bucket }),
* disposeStore: (store) => store.close(),
* });
* if (!report.ok) throw new Error(formatArtifactStoreReport(report));
*/
export declare function runArtifactStoreConformance(harness: ArtifactStoreHarness): Promise<ArtifactStoreReport>;
/**
* The report as something to put in a failure message or a log — one line per
* case, with the reason a case did not simply pass.
*/
export declare function formatArtifactStoreReport(report: ArtifactStoreReport): string;