v2.16.0
[2.16.0] — 2026-09-23
Added
- A Jev decision model can pick agents and skills instead of keyword ranking. Point
MONOMIND_JEV_URLat a self-hosted OpenJev server, or setTYPESAFE_API_KEYplusMONOMIND_JEV_HOSTED=1for hosted TypeSafe (api.typesafe.ai) — either way it's off by default, and keyword ranking stays as the fallback whenever nothing is configured or a call fails. It now backs the prompt hook's agent/skill choice, the route layer, the newmonomind pick -t "<task>"command,org skills search, per-task org skill suggestions, andorg_task'sassignee: "auto". Prompt text is scanned for credential-shaped strings and masked before any of it leaves the machine; the prompt hook budgets 1.5s for a decision, and a failed call trips a 5-minute circuit breaker (.monomind/jev-breaker.json) so a flaky provider can't slow down every keystroke.monomind doctor -c jevprobes each configured provider. monomind catalog— a policy-governed catalog for imported and locally authored skills.stage,inspect,approve,activate,disable,quarantine,release,revoke,list,show,search,audit,project, andunprojectmove an entry through an explicit lifecycle, with archetypes and blueprints for org roles and projection to.claude/skillsand.agents/skillshappening only once an operator asks for it. With no.monomind/catalog, every consumer behaves exactly as before — the catalog is entirely inert until a mutating command runs.monomind doctor -c catalogchecks its health. See Skill Catalog.
Fixed
monobrowse --versioncrashed instead of printing a version. (Fixes #320) The standalone binary read its manifest with_require('../package.json')— correct forsrc/cli.ts, which sits one level under the package root, and wrong for the only file that ever runs it. The package compiles withrootDir: ".", so the entry point emits todist/src/cli.jsandcreateRequire(import.meta.url)resolved../todist/, which holds no manifest: everymonobrowse --version/-Vdied with✗ Cannot find module '../package.json'and exit 1, in the repo and from a cleannpm installalike. The path now resolves from the compiled location, and a subprocess test spawns the builtdist/src/cli.js— the exact filebin.monobrowsepoints at — because an in-process test re-resolves fromsrc/, where the broken path already worked. Present since the binary was added (2026-06-22,89b25c2ca1);monomind browsenever used this code path and was unaffected.@monoes/monobrowse1.0.22.
Security
- Six rounds of review hardening on the catalog and Jev integration. A frontmatter allow-list rejects unknown keys instead of passing them through; shell-execution syntax is refused wherever it can hide — including Claude Code's own argument substitution and a fence cut at the frontmatter boundary; the catalog scanner now fails closed on an unreadable or ambiguous package instead of admitting it; secret redaction runs in linear time so a large pasted blob can't stall the prompt hook; and Jev only ever sees catalog skills that are both active and explicitly granted to the
jevtarget — approving a skill for any other surface no longer leaks it into Jev's picks.
npm: monomind@2.16.0, @monoes/monomindcli@2.16.0, @monoes/monobrowse@1.0.22 published to npm.