Repository navigation
Releases: fiale-plus/jev-cli
Release list
v0.2.0
v0.1.3 — validated record boundary
Fixes the advertised record contract and documents the complete library workflow.
Fixed
The package root exported isRecord as a DecisionRecord type guard, but it only detected record-shaped envelopes: isRecord({ response: null }) returned true, so a consumer could treat a malformed envelope as a validated record.
isRecord(input): boolean— envelope detector only.readRecord(input): DecisionRecord— new validated boundary; returns a checked record or throws.gate,replay, andextractResponseroute through it. Same validator, same errors on malformed input; only the contract is honest.
Added
examples/library/record-and-gate.mts: the full recorded workflow with public imports only — one shared SDK client, SIGINT/SIGTERM abort, elapsed-time measurement, client errors that never reach policy, a record storing hashes of state/questions plus model identity and latency (never the supplied text), then offline policy over readRecord + evaluatePolicy. Verified against the stub (says_nothing at 0.6 → deny exit 3). README library section rebuilt around it.
Publishing
Staged via the publish workflow (npm stage publish, provenance signed); a maintainer approves it with 2FA. Requires Node.js >= 22.0.0.
v0.1.2 — gate, packs, records
Moves the CLI from returning probabilities to making decisions: questions are judged by the model, policy is applied offline to a saved answer.
jev ask --pack verify --state-file claim.json --state-format json --record decisions/claim-1.json
jev gate --input decisions/claim-1.json --pack verify; echo "exit $?" # 0 2 3 4
jev replay --record decisions/claim-1.json| exit | decision | caller action |
|---|---|---|
| 0 | accept | proceed |
| 2 | review | escalate |
| 3 | deny | refuse |
| 4 | abstain | not enough information — never acceptance |
Added
jev gate— offline policy evaluation over a saved judgment or record, with per-rule reasons on stdout. Fail-closed: a choice answer needs a normalized probability map (no confidence substitution), a score must sit inside its reported scale, a missing or wrong-typed answer abstains, and a label outsideacceptnever accepts.mode: alltakes the worst outcome (deny > abstain > review > accept); policies are validated on load.- Packs —
verify(claim vs. cited evidence),screen(injection, harmful content, severity, plus substance and relevance for the caller),route(deterministic / specialist / human / none, plus complexity). Each carries a state contract, an embedded policy, and a content hash that records and gate output name. - Records and replay —
--recordwrites model resolved, latency, pack hash, and type-tagged hashes of the state and questions, never the state itself.jev replayre-emits stored answers marked"replayed": true; it is not a rerun. jev doctor [--live]— engine, key presence (never the value), base URL, model, and packs;--liveadds auth, model list, probe latency, and cost.- Offline tooling —
tools/stub-server.mjsfor wiring a pipeline without a key (never claims the requested model, and all three bundled policies deny its answers), andtools/evaluate.mjsfor scoring a policy against labeled records: accuracy, outcome mix, and the support curveaccept_atsits on.
Fixed
- SIGINT/SIGTERM cancellation was dropped: the signal travelled in client options, which ignore it, instead of request options.
batchJSON rows bypassed cost enrichment, so they lacked thecostblock every other JSON response carries.--versionreadspackage.jsonat runtime instead of a hardcoded string.
Publishing
v0.1.1 was tagged at the same commit as v0.1.0 and never reached the registry — its publish run failed with 403 — OIDC permission denied after signing provenance. Trusted-publisher connections created after 2026-09-03 are staging-only, so the workflow now runs npm stage publish and a maintainer approves it with 2FA. v0.1.1 is superseded by this release.
Requires Node.js >= 22.0.0.
v0.1.1
Superseded by v0.1.2.
This tag points at the same commit as v0.1.0 and its publish run failed: provenance was signed, then the registry rejected the upload with 403 — OIDC permission denied. Trusted-publisher connections created after 2026-09-03 are staging-only, so direct npm publish is not permitted; the workflow now runs npm stage publish and a maintainer approves it with 2FA.
No v0.1.1 was ever published to npm. Install v0.1.2 instead.
v0.1.0
First release: unofficial Jev CLI for AI agents.
- noul/choice/score/ask over the TypeSafe System One API via official SDK
- JSONL batch with ordered slots, bounded concurrency, per-record results
- stdout stays machine-parseable (SDK logs to stderr); execution exit codes
- Structural question lint, cost estimates, versioned model pinning