Skip to content

Releases: fiale-plus/jev-cli

v0.2.0

Choose a tag to compare

@bearmug bearmug released this 19 Sep 20:09
2de0057

Composition release: jev decide, project-owned pack files, correlation IDs, JSONL sink, installed offline workflows.

v0.1.3 — validated record boundary

Choose a tag to compare

@bearmug bearmug released this 18 Sep 19:42
75fa788

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, and extractResponse route 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

Choose a tag to compare

@bearmug bearmug released this 17 Sep 22:43
104fada

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 outside accept never accepts. mode: all takes 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 — --record writes model resolved, latency, pack hash, and type-tagged hashes of the state and questions, never the state itself. jev replay re-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; --live adds auth, model list, probe latency, and cost.
  • Offline tooling — tools/stub-server.mjs for wiring a pipeline without a key (never claims the requested model, and all three bundled policies deny its answers), and tools/evaluate.mjs for scoring a policy against labeled records: accuracy, outcome mix, and the support curve accept_at sits on.

Fixed

  • SIGINT/SIGTERM cancellation was dropped: the signal travelled in client options, which ignore it, instead of request options.
  • batch JSON rows bypassed cost enrichment, so they lacked the cost block every other JSON response carries.
  • --version reads package.json at 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

Choose a tag to compare

@bearmug bearmug released this 17 Sep 21:59
b4478a5

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

Choose a tag to compare

@bearmug bearmug released this 17 Sep 21:28
b4478a5

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