@mrciphersmith/keryx 0.3.67 → 0.3.73

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.
package/README.md CHANGED
@@ -709,16 +709,23 @@ Grouped by what you are trying to do, not by internal module layout.
709
709
  order, your choice, the time you took and, after a deviation, an optional
710
710
  reason (asked once, and the tool result waits for it; an empty answer releases
711
711
  the wait; add or change it later with `/decisions reason`).
712
- One question in three is asked blind (no "recommended" mark, random order,
713
- revealed after the answer, changeable with `/decisions change`), never for
712
+ A question with a recommendation is asked in one of four ways: ordinary (arm A, the
713
+ recommended option preselected), the mark with nothing preselected (B), shuffled with the
714
+ mark (C), or blind (D: no "recommended" mark in the flag or the words, random order,
715
+ revealed after the answer, changeable with `/decisions change`). The arm is a seeded
716
+ function of a per-repository salt; the weights are 0.4, 0.2, 0.2, 0.2. Never blind for
714
717
  release, ship, publish, deploy, delete or push, nor for merge, drop, remove or
715
718
  force next to main, production, a branch or a table, or with no real object
716
719
  ("merge it"); agents set `--action` (or `irreversible: true` in `ask_user`) for
717
720
  the irreversible ones, and the report counts how often blind was refused.
718
- `keryx decisions report` prints the match share by mode and stage and the
719
- deviations, with no model; `keryx decisions open|answer|reason` lets any agent
721
+ `keryx decisions report` prints the match share by mode, arm, channel and stage and
722
+ the deviations, with no model (the pre-arm records are shown apart as legacy);
723
+ `keryx decisions rate` records whether a recommendation was good (yours, or a
724
+ model's self-assessment in a clean context) and `keryx decisions export` writes
725
+ the structure of each decision with no question or option text;
726
+ `keryx decisions open|answer|reason` lets any agent
720
727
  or chat bridge drive it. In the TUI, `/decisions` and a sidebar row show the
721
- same report. See the
728
+ same report. The guide says what the journal does not measure. See the
722
729
  [Recommendation journal guide](docs/docs/guides/recommendation-journal.md).
723
730
  - **security** — deterministic secrets / PII / prompt-injection / egress
724
731
  scanning, redaction, and a policy gate at agent write seams, with a committed
@@ -742,7 +749,11 @@ Grouped by what you are trying to do, not by internal module layout.
742
749
  a working session keeps, plus an external hand onto it: the `slate.open` /
743
750
  `slate.writeSeed` / `slate.close` MCP tools let any MCP-connected harness open
744
751
  one scoped to its own session id and close it into the same review pipeline.
745
- Local stdio only; there is no CLI verb. See the
752
+ Local stdio only; there is no CLI verb. In keryx's own sessions the slate is
753
+ also the model's working memory: a harness-written Trail of every tool call,
754
+ model-written Notes (`slate_note`), and read-only recall (`slate_trail`,
755
+ `recall_step`, `history_search`) replace re-sending old rounds; `/trail` and
756
+ `/notes` show you the same Trail and Notes in the shell. See the
746
757
  [Slate guide](docs/docs/guides/slate.md).
747
758
 
748
759
  **Run agents inside boundaries**
@@ -1040,19 +1051,36 @@ queued lines will not run. From the topic you can also run a fixed list of slash
1040
1051
  commands (`/status`, `/model` and `/connect` as buttons, `/new`, `/clear`, `/resume`
1041
1052
  in the same topic); `/mode trust`, `/plan off`, `/delegate` and `/external*` run only
1042
1053
  after a Yes press, and commands such as `/mcp`, `/guard`, `/route`, `/provider`,
1043
- `/schedule`, `/rewind`, `/conform` and `/ci` stay local. Each message shows its state as a reaction and the topic shows typing
1054
+ `/schedule`, `/rewind`, `/conform` and `/ci` stay local. A topic is deleted when the
1055
+ shell exits, so `/history [N]` (1 to 20, 10 by default) posts the session's last messages
1056
+ back into the topic, yours and the agent's final answers, one message each; a resumed
1057
+ session whose topic was just created gets the last 10 by itself, once (the first time remote control is turned on in that shell); a turn that looks like it holds a secret is replaced by a placeholder. Each message shows its state as a reaction and the topic shows typing
1044
1058
  while a turn runs; see
1045
1059
  [commands from the topic](docs/docs/guides/drive-keryx-remotely.md#commands-from-the-topic).
1046
1060
  Without a connection `serve` starts as before, with remote control off, and only
1047
1061
  offers the local `/channels` routes. Replies are rendered in one of four modes,
1048
1062
  `remote.rendering` = `auto` (the default), `rich`, `html` or `plain`, set from the
1049
1063
  `/settings` row **Telegram rendering**: a table goes out as a native Telegram rich
1050
- message in `auto` and `rich` (an aligned `<pre>` block in HTML), ordered and nested
1064
+ message in `auto` and `rich`, as wide as its content and scrolling sideways with no
1065
+ cell shortened (an aligned `<pre>` block in HTML; more than 20 columns stays ordinary
1066
+ text), ordered and nested
1051
1067
  lists, task items and rules keep their shape, and a refused rich message falls back
1052
1068
  once to HTML and once to plain text, so a reply is never dropped. `keryx remote
1053
1069
  format-sample` prints the sample in every mode with no network, and `/channels`
1054
1070
  shows the mode and the last fallback; see
1055
1071
  [how replies look in Telegram](docs/docs/guides/drive-keryx-remotely.md#how-replies-look-in-telegram).
1072
+ A turn started from Telegram runs under `trust` by default, like a shell `trust`
1073
+ turn: ordinary commands in the project run without a question and are recorded with
1074
+ the Telegram user id, while destructive commands, privilege escalation, downloaders,
1075
+ agent credential files, publish leases, untrusted content and MCP tools still ask;
1076
+ `spawn_subagent` is auto-approved under `trust`, as in the shell.
1077
+ The question carries an `Always` button that saves a pattern (list and remove them
1078
+ with `keryx permissions` or `/permissions`), waits 15 minutes by default, and there
1079
+ is no run limit unless `runTimeoutMs` sets one; `/stop` in the topic ends a run.
1080
+ `/remote-policy` and the **Telegram** group of `/settings` change the defaults. To
1081
+ get the old behaviour back set `permissionMode: "ask"`, `runTimeoutMs: 1800000` and
1082
+ `approvalTimeoutMs: 300000` in `remote/config.json`; see
1083
+ [permissions in a topic](docs/docs/guides/drive-keryx-remotely.md#permissions-in-a-topic).
1056
1084
  An approval question is confirmed by the shell: after you press Allow or Deny,
1057
1085
  `serve` waits five seconds for the shell to say it applied the answer to the question
1058
1086
  it was waiting on, then edits the message to "Allowed by ... at ..." or "Denied by ... at ...".