@mrciphersmith/keryx 0.3.10 → 0.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. package/README.md +63 -2
  2. package/dist/cli.js +1640 -1042
  3. package/dist/core.js +12 -0
  4. package/package.json +1 -1
package/README.md CHANGED
@@ -759,14 +759,74 @@ The seams exist for the model-backed variants when they ship.
759
759
  Tree-sitter grammars for the symbol/call graph are downloadable and optional; the
760
760
  graph falls back to its deterministic resolver when a grammar is absent.
761
761
 
762
- ## Jev EDIT GUARD (opt-in)
762
+ ## Keeping private work in-house: /external
763
+
764
+ `/external on|off` (and `keryx external on|off`) is one general switch that
765
+ stops keryx from sending private work — code, diffs, CI-log excerpts,
766
+ prompts, rule text — to Jev/TypeSafe and to model vendors/tiers the
767
+ operator has not decided to trust with it. It is on by default (today's
768
+ behavior, unchanged) and is checked at the two places that actually send
769
+ anything out: the Jev client (`callJevSystemOne`, so every `review-jev-*`
770
+ command, `conform`, `ci-triage`, `jev-select`, the routing classifier and
771
+ the turn guard are covered by one change) and the routing/model-selection
772
+ choke point (a listed provider/model is excluded from a category
773
+ resolution, falling through to the next layer with a notice rather than
774
+ silently).
775
+
776
+ ```bash
777
+ keryx external status # effective on/off, source, Jev credential availability, what's blocked now
778
+ keryx external off # keep this project's/your work in-house
779
+ keryx external off --project # override for this project only (wins over your per-user setting)
780
+ keryx external list # the effective block list — every provider id and model pattern, with its reason
781
+ ```
782
+
783
+ The block list lives in an editable JSON file
784
+ (`<keryx config dir>/external-providers.json`), created with built-in
785
+ defaults on first use and never overwritten again. The defaults: Jev/
786
+ TypeSafe System One (the OpenRouter `/api/v1/systemone` endpoint — it
787
+ receives code and CI logs on every call); keryx's own direct provider ids
788
+ for vendors hosted under jurisdictions/terms where a prompt may be
789
+ retained or trained on (`deepseek`, `zai`/`zai-coding`, `moonshot`); the
790
+ same vendors reached instead through an OpenRouter model id, plus vendors
791
+ with no first-class keryx provider at all (`deepseek/*`, `minimax/*`,
792
+ `z-ai/*`/`zhipu/*`/`glm/*`, `moonshotai/*`, `qwen/*`/`alibaba/*`,
793
+ `baidu/*`, `tencent/*`, `bytedance/*`, `01-ai/*`); OpenRouter's free tier
794
+ (`*:free`), whose underlying provider's logging/training policy is
795
+ unaudited per-model; and any model id containing `muse`, named explicitly
796
+ by the operator. The mainstream paid US providers you connect directly —
797
+ Anthropic, OpenAI, Google/Gemini, GitHub Copilot, xAI, Groq — stay off the
798
+ list; adjust any of it by editing the file.
799
+
800
+ Because Jev is only worth blocking when it would otherwise run, the
801
+ recommended, fail-open review steps (`ci_triage`, `select`, `edit_guard` —
802
+ see below) are now **on by default wherever Jev is reachable**: as soon as
803
+ a Jev/OpenRouter credential resolves and `/external` is on, no per-project
804
+ opt-in is needed. `keryx review jev-profile show` names each key's
805
+ effective source (`explicit`/`default-because-jev-available`/
806
+ `off-by-external`), and the first time a project actually sends data
807
+ because of the default — not an explicit opt-in — one line is shown once,
808
+ then never repeats for that project: `Jev is on here: redacted code/CI
809
+ snippets go to OpenRouter/TypeSafe. Turn off: /external off`.
810
+
811
+ In the TUI, `/external` (bare) shows the same status block; `/external
812
+ on|off` toggles the per-user setting; a sidebar row appears when it is
813
+ `off` (the default "on" state costs no permanent sidebar space, same idiom
814
+ `/guard`/`/route` use for their own default state). See [the CLI
815
+ reference](docs/docs/cli-reference.md#external) for the full command and
816
+ [Jev in review](docs/docs/jev-in-review.md#recommended-profile-now-on-by-default-when-jev-is-reachable)
817
+ for what changed there.
818
+
819
+ ## Jev EDIT GUARD
763
820
 
764
821
  A Claude Code `PostToolUse` hook that checks every `Edit`/`Write`/`MultiEdit` a
765
822
  coding agent makes against your project's own written rules, using Jev, and
766
823
  feeds violations straight back to the agent through the hook's
767
824
  `additionalContext` channel — before the code ever reaches a human reviewer.
768
825
  It never blocks the tool call: on any error, timeout, or missing credential
769
- it fails open silently and always exits `0`.
826
+ it fails open silently and always exits `0`. As of the `/external` switch
827
+ above, it (along with CI triage and reviewer selection) is on by default
828
+ wherever Jev is reachable — the opt-in below still works, but only records
829
+ the choice explicitly rather than leaving it to the default.
770
830
 
771
831
  Measured on a real project (10 tasks × 2 runs, a large production
772
832
  React/MobX frontend):
@@ -870,6 +930,7 @@ Full documentation site: **<https://mrciphersmith.github.io/keryx/>**
870
930
  - **[Module reference](docs/docs/modules.md)** — one section per module: purpose, CLI surface, mechanics, data paths.
871
931
  - **[CLI reference](docs/docs/cli-reference.md)** — the command surface: subcommands, flags and exit codes.
872
932
  - **[Jev in review](docs/docs/jev-in-review.md)** — what we measured putting Jev in the review domain: CI triage (proven), three CLI-engine reviewers (measured weaker than a strong model), and reviewer selection (unmeasured, most promising).
933
+ - **[Jev in the delivery loop](docs/docs/guides/jev-in-the-delivery-loop.md)** — edit guard and CI triage inside `job-orchestrator`/`flow-orchestrator`/`task-implementer`/`code-verifier`, on by default wherever Jev is reachable.
873
934
  - **[Workspace & lifecycle](docs/docs/workspace-and-lifecycle.md)** — the `.metaproject/` contract and `init`/`update` lifecycle.
874
935
  - **[Limitations](docs/docs/limitations.md)** — known gaps, platform caveats, and what to do instead.
875
936
  - **[Shared Agent Context](docs/docs/guides/shared-agent-context.md)** *(experimental)* — local-first work-context layer: FWK overview, proposals, runtime policy guard.