agentfootprint
Version:
The explainable agent framework — backtrack a wrong answer to the exact context that caused it (evidence, not guesses). Built on footprintjs.
39 lines • 2 kB
TypeScript
/**
* version — is this string a version, or something that looks like one?
*
* Pattern: a total predicate + a refusal sentence. Pure, no dependencies.
* Role: recipes/ layer. Used by `defineAgentRecipe` and by the same
* validation `AgentBuilder.recipe()` runs on a hand-written literal.
* Emits: N/A.
*
* ## Why strict SemVer, and why a near-miss is refused rather than repaired
*
* The version is the half of a recipe row that makes the other half worth
* reading: two runs of `support-desk` that behaved differently are a mystery
* until the record says `1.2.0` and `1.3.0`. That only works if every producer
* spells versions the same way, so the ones that would quietly break grouping
* are refused at the declaration:
*
* `'1.2'` two runs, `'1.2'` and `'1.2.0'`, that are the same version and
* do not group together.
* `'v1.2.3'` the same, with a decoration that sorts differently.
* `'1.02.3'` leading zeros: `'1.02.3'` and `'1.2.3'` again split one arm.
* `'latest'` a RANGE, not a version — it names whatever was installed, so
* `'^1.2.3'` the row would describe a different composition each week and
* `'1.x'` say nothing about the run it is stamped on.
*
* None is repaired. Padding `'1.2'` to `'1.2.0'` would put a version on the
* record that the author never wrote, which is the one thing a manifest field
* may not do.
*/
/** Whether `value` is a SemVer 2.0.0 version string. Total: any input, no throw. */
export declare function isSemverVersion(value: unknown): value is string;
/**
* The sentence a bad version gets. Names the value, the grammar, and the
* specific mistake when the shape identifies one — a refusal that only says
* "invalid" makes the author guess which half was wrong.
*
* @param callSite - the API the author called, e.g. `defineAgentRecipe`.
*/
export declare function versionRefusal(callSite: string, value: unknown): string;
//# sourceMappingURL=version.d.ts.map