@namzu/cli 30.0.0 → 32.0.0

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 (256) hide show
  1. package/CHANGELOG.md +217 -1
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +5 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/acp.d.ts +20 -2
  6. package/dist/commands/acp.d.ts.map +1 -1
  7. package/dist/commands/acp.js +42 -5
  8. package/dist/commands/acp.js.map +1 -1
  9. package/dist/commands/drain.d.ts.map +1 -1
  10. package/dist/commands/drain.js +2 -1
  11. package/dist/commands/drain.js.map +1 -1
  12. package/dist/commands/exec-json.d.ts.map +1 -1
  13. package/dist/commands/exec-json.js +24 -1
  14. package/dist/commands/exec-json.js.map +1 -1
  15. package/dist/commands/exec.d.ts.map +1 -1
  16. package/dist/commands/exec.js +2 -1
  17. package/dist/commands/exec.js.map +1 -1
  18. package/dist/commands/prior-messages.d.ts.map +1 -1
  19. package/dist/commands/prior-messages.js +42 -2
  20. package/dist/commands/prior-messages.js.map +1 -1
  21. package/dist/commands/schedule.d.ts.map +1 -1
  22. package/dist/commands/schedule.js +7 -5
  23. package/dist/commands/schedule.js.map +1 -1
  24. package/dist/config/composer-triggers.d.ts +41 -0
  25. package/dist/config/composer-triggers.d.ts.map +1 -0
  26. package/dist/config/composer-triggers.js +80 -0
  27. package/dist/config/composer-triggers.js.map +1 -0
  28. package/dist/config/load.d.ts.map +1 -1
  29. package/dist/config/load.js +58 -0
  30. package/dist/config/load.js.map +1 -1
  31. package/dist/config/schema.d.ts +34 -0
  32. package/dist/config/schema.d.ts.map +1 -1
  33. package/dist/config/schema.js.map +1 -1
  34. package/dist/context/doctrine.d.ts +3 -3
  35. package/dist/context/doctrine.d.ts.map +1 -1
  36. package/dist/context/doctrine.js +3 -3
  37. package/dist/context/doctrine.js.map +1 -1
  38. package/dist/context/runtime-message.d.ts.map +1 -1
  39. package/dist/context/runtime-message.js +4 -0
  40. package/dist/context/runtime-message.js.map +1 -1
  41. package/dist/integrations/mcp/servers.d.ts +72 -5
  42. package/dist/integrations/mcp/servers.d.ts.map +1 -1
  43. package/dist/integrations/mcp/servers.js +144 -23
  44. package/dist/integrations/mcp/servers.js.map +1 -1
  45. package/dist/integrations/plugins/runtime.d.ts +11 -9
  46. package/dist/integrations/plugins/runtime.d.ts.map +1 -1
  47. package/dist/integrations/plugins/runtime.js +17 -36
  48. package/dist/integrations/plugins/runtime.js.map +1 -1
  49. package/dist/integrations/resident/session-step.d.ts.map +1 -1
  50. package/dist/integrations/resident/session-step.js +2 -1
  51. package/dist/integrations/resident/session-step.js.map +1 -1
  52. package/dist/integrations/sessions/store.d.ts.map +1 -1
  53. package/dist/integrations/sessions/store.js +20 -2
  54. package/dist/integrations/sessions/store.js.map +1 -1
  55. package/dist/integrations/subagents/NamzuCliAgent.d.ts +8 -0
  56. package/dist/integrations/subagents/NamzuCliAgent.d.ts.map +1 -0
  57. package/dist/integrations/subagents/NamzuCliAgent.js +9 -0
  58. package/dist/integrations/subagents/NamzuCliAgent.js.map +1 -0
  59. package/dist/integrations/subagents/runtime.d.ts +5 -4
  60. package/dist/integrations/subagents/runtime.d.ts.map +1 -1
  61. package/dist/integrations/subagents/runtime.js +46 -11
  62. package/dist/integrations/subagents/runtime.js.map +1 -1
  63. package/dist/integrations/web/search.d.ts.map +1 -1
  64. package/dist/integrations/web/search.js +8 -6
  65. package/dist/integrations/web/search.js.map +1 -1
  66. package/dist/permissions/rules.d.ts +5 -1
  67. package/dist/permissions/rules.d.ts.map +1 -1
  68. package/dist/permissions/rules.js +85 -3
  69. package/dist/permissions/rules.js.map +1 -1
  70. package/dist/schedule/build.d.ts +19 -2
  71. package/dist/schedule/build.d.ts.map +1 -1
  72. package/dist/schedule/build.js +119 -21
  73. package/dist/schedule/build.js.map +1 -1
  74. package/dist/schedule/changes.d.ts.map +1 -1
  75. package/dist/schedule/changes.js +13 -0
  76. package/dist/schedule/changes.js.map +1 -1
  77. package/dist/schedule/commands/add.d.ts +1 -1
  78. package/dist/schedule/commands/add.d.ts.map +1 -1
  79. package/dist/schedule/commands/add.js +186 -40
  80. package/dist/schedule/commands/add.js.map +1 -1
  81. package/dist/schedule/commands/list.d.ts +2 -0
  82. package/dist/schedule/commands/list.d.ts.map +1 -1
  83. package/dist/schedule/commands/list.js +64 -19
  84. package/dist/schedule/commands/list.js.map +1 -1
  85. package/dist/schedule/daemon/daemon.d.ts +1 -1
  86. package/dist/schedule/daemon/daemon.d.ts.map +1 -1
  87. package/dist/schedule/daemon/daemon.js +17 -5
  88. package/dist/schedule/daemon/daemon.js.map +1 -1
  89. package/dist/schedule/daemon/notify.d.ts +21 -1
  90. package/dist/schedule/daemon/notify.d.ts.map +1 -1
  91. package/dist/schedule/daemon/notify.js +43 -0
  92. package/dist/schedule/daemon/notify.js.map +1 -1
  93. package/dist/schedule/fire/fire.d.ts +1 -1
  94. package/dist/schedule/fire/fire.d.ts.map +1 -1
  95. package/dist/schedule/fire/fire.js +200 -14
  96. package/dist/schedule/fire/fire.js.map +1 -1
  97. package/dist/schedule/fire/result.d.ts +1 -1
  98. package/dist/schedule/fire/result.d.ts.map +1 -1
  99. package/dist/schedule/fire/result.js +2 -1
  100. package/dist/schedule/fire/result.js.map +1 -1
  101. package/dist/schedule/fire/run-script.d.ts +46 -0
  102. package/dist/schedule/fire/run-script.d.ts.map +1 -0
  103. package/dist/schedule/fire/run-script.js +81 -0
  104. package/dist/schedule/fire/run-script.js.map +1 -0
  105. package/dist/schedule/fire/unattended-note.d.ts +8 -0
  106. package/dist/schedule/fire/unattended-note.d.ts.map +1 -1
  107. package/dist/schedule/fire/unattended-note.js +5 -0
  108. package/dist/schedule/fire/unattended-note.js.map +1 -1
  109. package/dist/schedule/fire/wake-gate.d.ts +39 -0
  110. package/dist/schedule/fire/wake-gate.d.ts.map +1 -0
  111. package/dist/schedule/fire/wake-gate.js +90 -0
  112. package/dist/schedule/fire/wake-gate.js.map +1 -0
  113. package/dist/schedule/floor.d.ts +1 -1
  114. package/dist/schedule/floor.d.ts.map +1 -1
  115. package/dist/schedule/floor.js +288 -16
  116. package/dist/schedule/floor.js.map +1 -1
  117. package/dist/schedule/policy.d.ts +40 -0
  118. package/dist/schedule/policy.d.ts.map +1 -1
  119. package/dist/schedule/policy.js +36 -0
  120. package/dist/schedule/policy.js.map +1 -1
  121. package/dist/schedule/script-check.d.ts +53 -0
  122. package/dist/schedule/script-check.d.ts.map +1 -0
  123. package/dist/schedule/script-check.js +145 -0
  124. package/dist/schedule/script-check.js.map +1 -0
  125. package/dist/schedule/script-shell.d.ts +3 -0
  126. package/dist/schedule/script-shell.d.ts.map +1 -0
  127. package/dist/schedule/script-shell.js +5 -0
  128. package/dist/schedule/script-shell.js.map +1 -0
  129. package/dist/schedule/service/manifest.js +1 -1
  130. package/dist/schedule/service/manifest.js.map +1 -1
  131. package/dist/schedule/store/atomic.d.ts +5 -2
  132. package/dist/schedule/store/atomic.d.ts.map +1 -1
  133. package/dist/schedule/store/atomic.js +7 -4
  134. package/dist/schedule/store/atomic.js.map +1 -1
  135. package/dist/schedule/store/claims.js +1 -1
  136. package/dist/schedule/store/claims.js.map +1 -1
  137. package/dist/schedule/store/history.d.ts +1 -1
  138. package/dist/schedule/store/history.d.ts.map +1 -1
  139. package/dist/schedule/store/history.js +4 -1
  140. package/dist/schedule/store/history.js.map +1 -1
  141. package/dist/schedule/store/jobs.d.ts +19 -3
  142. package/dist/schedule/store/jobs.d.ts.map +1 -1
  143. package/dist/schedule/store/jobs.js +83 -16
  144. package/dist/schedule/store/jobs.js.map +1 -1
  145. package/dist/schedule/store/state.js +1 -1
  146. package/dist/schedule/store/state.js.map +1 -1
  147. package/dist/schedule/types.d.ts +71 -6
  148. package/dist/schedule/types.d.ts.map +1 -1
  149. package/dist/schedule/types.js +25 -1
  150. package/dist/schedule/types.js.map +1 -1
  151. package/dist/schedule/visible-source.d.ts +18 -0
  152. package/dist/schedule/visible-source.d.ts.map +1 -0
  153. package/dist/schedule/visible-source.js +59 -0
  154. package/dist/schedule/visible-source.js.map +1 -0
  155. package/dist/test-support/toolset.d.ts +23 -0
  156. package/dist/test-support/toolset.d.ts.map +1 -0
  157. package/dist/test-support/toolset.js +27 -0
  158. package/dist/test-support/toolset.js.map +1 -0
  159. package/dist/tui/App.d.ts.map +1 -1
  160. package/dist/tui/App.js +323 -60
  161. package/dist/tui/App.js.map +1 -1
  162. package/dist/tui/ChoicePicker.d.ts +2 -0
  163. package/dist/tui/ChoicePicker.d.ts.map +1 -1
  164. package/dist/tui/ChoicePicker.js +10 -2
  165. package/dist/tui/ChoicePicker.js.map +1 -1
  166. package/dist/tui/Composer.d.ts +62 -3
  167. package/dist/tui/Composer.d.ts.map +1 -1
  168. package/dist/tui/Composer.js +162 -25
  169. package/dist/tui/Composer.js.map +1 -1
  170. package/dist/tui/ComposerFrame.d.ts +1 -1
  171. package/dist/tui/ComposerFrame.js +3 -3
  172. package/dist/tui/ComposerFrame.js.map +1 -1
  173. package/dist/tui/EffortSlider.d.ts +8 -9
  174. package/dist/tui/EffortSlider.d.ts.map +1 -1
  175. package/dist/tui/EffortSlider.js +15 -12
  176. package/dist/tui/EffortSlider.js.map +1 -1
  177. package/dist/tui/StatusBar.d.ts +12 -12
  178. package/dist/tui/StatusBar.d.ts.map +1 -1
  179. package/dist/tui/StatusBar.js +15 -15
  180. package/dist/tui/StatusBar.js.map +1 -1
  181. package/dist/tui/agent.d.ts +46 -7
  182. package/dist/tui/agent.d.ts.map +1 -1
  183. package/dist/tui/agent.js +386 -178
  184. package/dist/tui/agent.js.map +1 -1
  185. package/dist/tui/hypermode.d.ts +37 -0
  186. package/dist/tui/hypermode.d.ts.map +1 -0
  187. package/dist/tui/hypermode.js +58 -0
  188. package/dist/tui/hypermode.js.map +1 -0
  189. package/dist/tui/permission-review.d.ts +1 -1
  190. package/dist/tui/permission-review.js +1 -1
  191. package/dist/tui/schedule/host-commands.d.ts.map +1 -1
  192. package/dist/tui/schedule/host-commands.js +94 -33
  193. package/dist/tui/schedule/host-commands.js.map +1 -1
  194. package/dist/tui/schedule/integration.d.ts +6 -2
  195. package/dist/tui/schedule/integration.d.ts.map +1 -1
  196. package/dist/tui/schedule/integration.js +3 -1
  197. package/dist/tui/schedule/integration.js.map +1 -1
  198. package/dist/tui/schedule/resume.d.ts.map +1 -1
  199. package/dist/tui/schedule/resume.js +10 -1
  200. package/dist/tui/schedule/resume.js.map +1 -1
  201. package/dist/tui/schedule/tool-host.d.ts +4 -1
  202. package/dist/tui/schedule/tool-host.d.ts.map +1 -1
  203. package/dist/tui/schedule/tool-host.js +155 -40
  204. package/dist/tui/schedule/tool-host.js.map +1 -1
  205. package/dist/tui/slashCommands.d.ts +23 -5
  206. package/dist/tui/slashCommands.d.ts.map +1 -1
  207. package/dist/tui/slashCommands.js +80 -31
  208. package/dist/tui/slashCommands.js.map +1 -1
  209. package/dist/tui/theme.d.ts +10 -4
  210. package/dist/tui/theme.d.ts.map +1 -1
  211. package/dist/tui/theme.js +4 -3
  212. package/dist/tui/theme.js.map +1 -1
  213. package/dist/tui/triggers/analyze.d.ts +57 -0
  214. package/dist/tui/triggers/analyze.d.ts.map +1 -0
  215. package/dist/tui/triggers/analyze.js +221 -0
  216. package/dist/tui/triggers/analyze.js.map +1 -0
  217. package/dist/tui/triggers/context-text.d.ts +21 -0
  218. package/dist/tui/triggers/context-text.d.ts.map +1 -0
  219. package/dist/tui/triggers/context-text.js +44 -0
  220. package/dist/tui/triggers/context-text.js.map +1 -0
  221. package/dist/tui/triggers/copy.d.ts +38 -0
  222. package/dist/tui/triggers/copy.d.ts.map +1 -0
  223. package/dist/tui/triggers/copy.js +163 -0
  224. package/dist/tui/triggers/copy.js.map +1 -0
  225. package/dist/tui/triggers/detect.d.ts +83 -0
  226. package/dist/tui/triggers/detect.d.ts.map +1 -0
  227. package/dist/tui/triggers/detect.js +295 -0
  228. package/dist/tui/triggers/detect.js.map +1 -0
  229. package/dist/tui/triggers/fold.d.ts +34 -0
  230. package/dist/tui/triggers/fold.d.ts.map +1 -0
  231. package/dist/tui/triggers/fold.js +44 -0
  232. package/dist/tui/triggers/fold.js.map +1 -0
  233. package/dist/tui/triggers/pattern.d.ts +66 -0
  234. package/dist/tui/triggers/pattern.d.ts.map +1 -0
  235. package/dist/tui/triggers/pattern.js +243 -0
  236. package/dist/tui/triggers/pattern.js.map +1 -0
  237. package/dist/tui/triggers/provenance.d.ts +58 -0
  238. package/dist/tui/triggers/provenance.d.ts.map +1 -0
  239. package/dist/tui/triggers/provenance.js +98 -0
  240. package/dist/tui/triggers/provenance.js.map +1 -0
  241. package/dist/tui/triggers/registry.d.ts +113 -0
  242. package/dist/tui/triggers/registry.d.ts.map +1 -0
  243. package/dist/tui/triggers/registry.js +164 -0
  244. package/dist/tui/triggers/registry.js.map +1 -0
  245. package/dist/tui/triggers/setting.d.ts +18 -0
  246. package/dist/tui/triggers/setting.d.ts.map +1 -0
  247. package/dist/tui/triggers/setting.js +61 -0
  248. package/dist/tui/triggers/setting.js.map +1 -0
  249. package/dist/tui/triggers/verbs.d.ts +29 -0
  250. package/dist/tui/triggers/verbs.d.ts.map +1 -0
  251. package/dist/tui/triggers/verbs.js +140 -0
  252. package/dist/tui/triggers/verbs.js.map +1 -0
  253. package/dist/tui/types.d.ts +3 -1
  254. package/dist/tui/types.d.ts.map +1 -1
  255. package/package.json +12 -12
  256. package/skills/schedule-task/SKILL.md +115 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,221 @@
1
1
  # @namzu/cli
2
2
 
3
+ ## 32.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - 567ada8: CLI MCP tool names change from `mcp_<server>_<tool>` to `mcp__<server>__<tool>`. Update any permissions, saved prompts or integrations that refer to those names; the CLI warns once for each configured permission rule still using the old form. MCP tools now update after server notifications and reconnects. Configure `allow`, `deny`, `maxRetries`, `requireApproval`, `readOnlyHintTrusted` and `instructions` per server under `mcpServers`; `instructions: true` includes the server's text as labelled untrusted request context. `/mcp tools` shows the server's current tool names and instructions.
8
+
9
+ The SDK now skips prompt discovery when a server did not advertise prompt support and keeps approval-wrapped tool definitions stable across unchanged toolset snapshots.
10
+
11
+ - 567ada8: Plugin tools now carry a source for their owning plugin (`plugin:<name>`) or MCP server (`plugin:<name>/mcp:<server>`), so source authorization can distinguish them. Plugin MCP servers use `mcpToolset`, gaining live tool and prompt discovery, policy-filtered deferred resources and held changed definitions. Plugin MCP prompt tool names change from `<plugin>__mcp_prompt_<server>_<name>` to `<plugin>__mcp__<server>__prompt__<name>`; update saved tool names and permission rules that refer to them. `MCPToolsetOptions.reconnect` also accepts a function that returns the current reconnect policy.
12
+ - fbeac55: A scheduled job can now be a fixed shell script instead of a model prompt, or a cheap "wake-gate" script that decides whether to run the model at all — `namzu schedule add --kind script|script+agent`, or the model's `schedule` tool with `kind`/`script`. A `script` job spends zero tokens and opens no session; a `script+agent` job runs a gate script first and calls the model only when it prints `{"wake": true, "context": "..."}`. The script body is checked against the scheduled-run floor (the whole text, exactly as a live `bash` call is read) and then every `deny` rule — the operator's own and any config file's — per lexed command; **`allow`/`ask` rules and `unmatched` are never consulted for a script**, since it is fixed, human-confirmed text, not a call a model improvises. A `script+agent` job's `allow`/`ask`/`unmatched` rules still govern its AGENT phase only, unaffected by the script's own (deny-only) check.
13
+
14
+ **`@namzu/sdk` (major)**
15
+
16
+ - **Breaking type correction:** `ScheduleJobPreview.model` is optional because a pure `script` job has no model. Hosts that display it must handle its absence for `runKind: 'script'`; previews for `agent` and `script+agent` still carry the pinned model.
17
+ - `ScheduleJobPreview.networkAccess` now includes a host script or an allowed host shell that could reach the network, even without web/browser tool grants. Its new optional `networkGrantAccess` separates those grants from shell capability; a host implementing `previewUpdate` should set it so a kind-only conversion can be checked against the network-beside-host-shell rule without refusing every script. An older host that omits it is treated conservatively using `networkAccess`.
18
+ - An unattended sandbox-escape opt-in no longer waives review of a runtime-chosen program name or another call's outside-root path in the same batch.
19
+ - **Security fix:** a recognised wrapper such as `env`, `nice`, `sudo`, `busybox` or `toybox` can no longer hide a shell's `-c` payload from review. Literal payloads are read for permission checks; an expanding payload requires review and is refused in unattended runs. `script -t -c` now recognises `-c` as the command option; `-T` consumes its required timing-file value.
20
+ - **Security fix:** `find`'s `-exec` family now follows wrappers and shell `-c` payloads inside each clause, including when another wrapper launches `find`. A dynamically selected program or a `find` placeholder in a shell payload requires live review and is refused in an unattended scheduled script. The scheduled-run floor also sees service-changing tools behind wrappers in these clauses.
21
+ - **Breaking:** `ScheduleJobDraft.prompt` is now optional (`prompt?: string`), since a pure `script` draft has none. Any `ScheduleToolHost` implementation that reads `draft.prompt` as a bare `string` needs a null check (or to keep reading it only when `draft.runKind` is `'agent'`/`'script+agent'`, where it is still guaranteed present).
22
+ - `ScheduleJobDraft` gains `runKind?: 'agent' | 'script' | 'script+agent'` (absent = `'agent'`, unchanged from before) and `script?: { body, shell, timeoutMs? }`. `ScheduleJobPreview` gains the same `runKind`/`script` fields so a host's confirmation screen can show the exact text.
23
+ - The `schedule` tool's input schema gains `kind` and `script`; `create` requires `script` unless `kind` is `'agent'` and requires `prompt` unless `kind` is `'script'`, and refuses an agent draft that also carries a script. The existing network-beside-a-host-shell refusal now also covers a `script`/`script+agent` job on the host: the script IS shell code, not a rule a live call might reach later.
24
+ - **Security/UX fix:** `update` accepted `kind`/`script` in its input schema but silently dropped both from the change it actually applied, reporting success with no error or warning that the model's new script was ignored. `ScheduleJobChanges` gains `runKind`/`script` (additive, so this alone would be `minor`) and `update` now forwards both to `ScheduleToolHost.previewUpdate`, re-verified fresh against the scheduled-run floor and every `deny` rule exactly like a new job's, and shown in full — with what changed — on the same confirmation screen `create` uses. A host that does not yet read the new fields off `ScheduleJobChanges` silently keeps a job's existing kind/script on every update, the same as before this release; only `@namzu/cli`'s own host (below) newly acts on them.
25
+ - **Security fix:** `update` checks the effective preview's network grants after applying every change, so a kind-only conversion cannot inherit web/browser access beside a newly introduced host script. A call that changes the kind and leaves permissions unset is checked too.
26
+ - New exports from the root entry: `execHostShell`, `ExecHostShellProgress`, `CommandShell`, `CommandShellProbe`, `findCommandShell`, `hostCommandShell`, `hostShellSpawn`, `withoutBashStartup` — the shell-resolution and spawn machinery the `bash` tool already used internally, now available to a host that runs a command line outside a live tool call.
27
+ - `findCommandShellForDialect` and `installedCommandShellForDialect` select an installed bash or sh explicitly, returning no shell if the requested interpreter is absent. `execHostShell` accepts that `CommandShell` through its optional `shell` option, keeping its existing process supervision and output capture for hosts that choose an interpreter themselves.
28
+ - **Security fix, in the scheduled-run floor, so a live `bash` call benefits too:** `trap 'ACTION' SIGNAL` now reads `ACTION` as a command line (it runs when the signal fires); `find … -exec|-execdir|-ok|-okdir … ;|+` is refused when its clause contains `{}` and the search root is unknown or could reach NAMZU_HOME, a `-name`/`-path` filter could match NAMZU_HOME's own name, or the clause's own program can stop or remove a service; running a file the SAME command line wrote earlier (`>`, `>>`, `tee`, `cp`/`mv`, then `./x`, `sh x`, `bash x`, `. x`, `source x`) is refused, since its content was never confirmed.
29
+ - **`lexShellCommandLine` now reads `$(…)` and backtick bodies as nested command lines** (the same treatment `bash -c` payloads already got) instead of calling the whole containing line opaque outright: each command inside a substitution is in `ShellLexResult.commands`, marked `origin: 'substitution'`, checked by the scheduled-run floor and by every `deny` rule exactly like the rest of the line. Two shapes stay opaque because what actually runs cannot be pinned down from the text alone, measured against real bash (5.2.21 and 5.3.15): a command substitution beside brace expansion in the same word (`$(cmd){a,b}` runs `cmd` once per alternative, not once) and an unquoted substitution used as a `<`/`>` redirection target (a `${var:-…}`-style default value can run its substitution twice when the target turns out ambiguous) — both are refused the same way an unmodeled construct always was. `${ list; }` (bash 5.3's brace-form substitution) and process substitution (`<(…)`, `>(…)`) are unchanged, still opaque; out of this scope. `ShellWord` gains `substitutes: boolean` (additive). Proven differentially against a real bash on the host (`command_not_found_handle` argv capture, disabled builtins, empty `PATH`): every existing corpus line, the exhaustive up-to-three-token sweep, a 6,000-line seeded random sample (manually run to 150,000 with zero mismatches before landing), and new hand-written cases for nesting, mixed quoting, and the two constructs above. `decomposeCommandLine`'s `segments`/`opaque` change the same way for these two constructs.
30
+ - **Security fix, follow-up to the above:** a second review found that the scheduled-run floor's own `pkill`/`killall`/`systemctl`/`launchctl`/`schtasks`/D-Bus detection read a wild (expanding) program-name word as NOT being the tool in question unless its raw, unevaluated text happened to contain the tool's name as one contiguous run — `$(echo pk)ill -f node` and `$(echo system)ctl stop $(echo namzu)-scheduler.service` both passed. A wild word in the program-name position (the head, or right after a `sudo`/`env`-style one-level prefix) now counts as being every tool this checks for; a wild word elsewhere (an ordinary argument, a path) is unaffected. `find ~/.namzu -exec rm {} \;`-style commands are unaffected: the fix is scoped to the program-name position, not to "any wild word anywhere."
31
+ - **Security fix, live tool authorization behaviour changes (`packages/sdk/src/runtime/query/`):** the same review found that a `deny` rule written against a command's real name (`"git push*": deny`) never matches one produced by a substitution or a variable (`$(echo git) push`, `` `echo rm` -rf x``, `$X push`, or a variable in the program's path, `"$HOME"/bin/tool`), since the name never appears as such anywhere in the call's text — for the scheduled-run floor's script check (`verifyScheduledScript`, which now refuses such a command outright, naming it, the same posture as an opaque script) and, pre-existing and more broadly, for the live `bash` tool's own permission rules. **An operator now sees more review prompts:** a bash call whose lexed command's own program-name word expands is escalated (`ToolCallSummary.escalation.unknownProgram`, new field) the same unconditional way a sandbox escape already is — never approved by an allow rule, a remembered grant, `accept-edits` or `auto`/an unattended turn, asked about in every mode that gets that far (naming why: "the program this runs is decided at runtime: `<text>`"), and refused outright with no prompt (`UNKNOWN_PROGRAM_UNATTENDED_REFUSAL`, new export) — there is no unattended opt-in for this the way `unattendedSandboxEscape: 'allow'` is for a sandbox escape. A `deny` rule that matches some other way (the tool's own name, an unrelated word) still refuses the call outright, unaffected. Argument-level expansion alone does not trigger this — only the program-name word — so an ordinary `echo $(date)` is unaffected. New audit actions `unknown_program` (`approved`/`refused`). See `docs/sdk/escalations.md`.
32
+ - **Security fix, follow-up to both of the above — one extra word defeated every one of them:** a third review found that all three consumers (the escalation, the scheduled-run floor, `verifyScheduledScript`) only ever looked at a command's literal head word, so `env $(echo git) push`, `command $(echo git) push`, `exec $(echo git) push`, and a re-exec wrapper with a mandatory argument of its own before the program (`timeout 5 …`, `stdbuf -oL …`, `chrt 0 …`, `env VAR=value …`) all ran, or passed the script check, unverified — the floor's one-hop `REEXEC_PREFIX` guess put the program at the wrong word entirely for these, and `exec`/`command`/`taskset`/`time`/`builtin`/`xargs` were not in it at all. `eval`/`source`/`.` were not read as unverifiable either, though `command-line.ts` already treats them as opaque for `deny`/`allow` rules. **New SDK module, `packages/sdk/src/authorization/program.ts`, exported from `@namzu/sdk`:** `programPositions(command, dialect)` is the one place "where does this command actually exec a program" now lives — it unwraps a chain of re-exec wrappers (`sudo`, `doas`, `pkexec`, `env`, `nice`, `ionice`, `nohup`, `setsid`, `timeout`, `stdbuf`, `chrt`, `taskset`, `time`, `command`, `builtin`, `exec`, `xargs`) with each one's own real option grammar, failing closed on an option it does not recognise, and reads each `find -exec`-family clause as its own position. `source path`/`. path` and `eval word…` are read the same way a nested `bash -c '<literal>'` payload already is: a LITERAL path is known, exactly as `bash path` is (nothing inspects either one's contents), and a LITERAL `eval` payload is joined and lexed as a command line of its own, with every position inside it folded in (so `eval 'env $(echo git) push'` is still unknown, transitively); an expanding path/argument word, or a payload that does not read cleanly, is unknown. `hasPoisoningPrefix`/`poisonsLaterCommands`/`poisonedProgramPosition`/`resolveScriptPrograms`/`DYNAMIC_RESOLUTION_VARIABLES` cover the other half: a command-prefix or `export`/bare assignment to `PATH`, `LD_PRELOAD`, `LD_LIBRARY_PATH`, `BASH_ENV`, `ENV` or `IFS` makes a LATER literal program name unverifiable too. **Behaviour change:** `unknownProgram`'s text is now the command plus why its program's position could not be resolved, not a bare word — a host that pattern-matches the exact string should match on substring/prefix, not equality. `ToolCallEscalation.unknownProgram`'s doc comment, `escalationReason`'s wording, and the floor's own `heads`/`REEXEC_PREFIX` mechanism (removed, replaced by `programPositions`) all changed accordingly. `packages/sdk/src/authorization/__tests__/program.test.ts` (new). See `docs/sdk/escalations.md`, `docs/sdk/command-lines.md`, `docs/cli/scheduled-tasks.md`.
33
+ - **Security fix, two CRITICAL bugs from a final review of `program.ts`, plus wrapper coverage:** (1) `sudo`'s own case never skipped a `NAME=value` pair the way `env`'s already did, so `sudo VAR=value $(echo ls)` reported the ASSIGNMENT WORD as the program and never examined the real, wild one after it; both `sudo`'s and `env`'s assignment-skipping now also feed a poisoning name (`PATH=`, `LD_PRELOAD=`, …) into the poisoning check instead of silently passing it through. (2) `executor.ts`'s `unknownProgramOf` ignored the reading's own `opaque`/`!complete` flag, so `bash -c "$X"` — whose payload the lexer cannot follow at all — was never escalated; a new exported function, `unknownProgramInLine(value, dialect)`, checks that first, and `executor.ts` now delegates to it rather than re-implementing the walk. New wrapper coverage: `busybox`/`toybox` (transparent applet dispatch); `declare -x`/`typeset -x` (any option cluster with it, never `+x`) now poison like `export`, and `export -n` correctly does not; `su -c`/`runuser -c`/`script -c`/`flock -c` read a literal payload recursively like a nested `bash -c '<literal>'` (`su`/`runuser` with no `-c` are unknown: an interactive login shell); `flock`'s positional form; `unshare`, `nsenter`, `chroot` (unknown with no command), `setpriv`, `prlimit`, `numactl`; `watch` (default payload joined and lexed like `eval`'s, `-x` execs the argv directly); `sudo -i`/`-s`/`-e`/`--login`/`--shell`/`--edit` and bare `sudoedit` are explicit unknowns. `ssh host cmd` is deliberately not modelled (the command is remote); `docs/sdk/escalations.md` now documents this residual boundary — the full modelled-wrapper list, and that an unmodelled one is treated as the program itself, with `deny` rules, the floor and ordinary review still applying to it. `packages/sdk/src/authorization/program.ts`, `runtime/query/executor.ts`, `packages/sdk/src/authorization/__tests__/program.test.ts`.
34
+
35
+ **`@namzu/cli` (major)**
36
+
37
+ - A pure `script` job now creates and runs without a configured provider or `--model`. New script jobs omit the unused `model` field; older confirmed script jobs that already store a real model still read with their confirmation digest intact and keep it on a script edit. Explicit `--model`, `--effort`, prompt, agent budget, provider wait, approval TTL, session retention and browser grant inputs are refused for a pure script instead of silently ignored; older stored fields remain readable but inert. `agent` and `script+agent` still require a model; converting a model-free script to either kind requires one. Text previews, the SDK `ScheduleJobPreview.budget`, and `schedule show` report zero model tokens and the script timeout for pure scripts. The schedule tool's success message reports pure script history without claiming a session.
38
+ - **Breaking, on disk:** the job/run-result/history file format moves to `v: 2` for a job that actually uses `runKind`/`script`, a `check-failed` status, or `gateResult`/`scriptOutput`. An older namzu that reads such a file refuses it loudly ("was written by a newer namzu...") rather than misreading a script job as a malformed agent job. A plain `agent` job stays `v: 1`, byte-for-byte as before, and every existing job keeps reading and confirming exactly as it did — downgrade only affects a job you have actually converted to `script`/`script+agent`.
39
+ - **Fix:** a job file an older namzu (or a hand edit) left in a format the current one refuses to fully parse was previously invisible to `createJob`'s name-uniqueness check and to `findJob` (by name or id prefix) — a name collision with it went undetected, and looking it up said "No scheduled job is named…" instead of the real reason. Both now read a refused file's `id`/`name` leniently, off the raw JSON, without validating anything else about it: a name collision with such a file is now refused, naming the file and the reason; looking it up by its own name or a matching id prefix now reports the real reason (e.g. "written by a newer namzu…"); a name or id prefix matching more than one job — readable, unreadable, or a mix — is an error listing every match and how to address each. `schedule list` says `N job files could not be read` instead of `No scheduled jobs` when every job file is such a file.
40
+ - New `schedule add`/`edit` flags: `--kind agent|script|script+agent`, `--script`/`--script-file`, `--shell bash|sh`, `--script-timeout`. A `script` job needs `--shell` and a non-empty script and has no `--prompt`; `--unmatched park` is refused for a pure `script` job (nothing can wait for the operator mid-script); `--execution sandbox` is refused for `script`/`script+agent` in this release; `script`/`script+agent` job creation is refused outright on native (non-WSL) Windows, where the only available shell reading is a loose `cmd.exe` approximation the floor cannot fully verify.
41
+ - **Fix:** `--shell sh` previously only labeled a script for verification while fire always used the live bash tool's automatically chosen shell. On a bash host, a newly confirmed `sh` job was guaranteed to stop at first fire. A script now executes under its chosen installed `bash` or `sh`; creation and every confirmation refuse an absent interpreter, and fire blocks if it has since disappeared. Native Windows remains refused.
42
+ - `ScheduleRunStatus` gains `check-failed` (a script or wake-gate malfunctioned: non-zero exit, its own timeout, or stdout that is not the wake-gate's JSON contract) — CLI-internal, not part of the SDK's public surface. It joins the failure bucket for the failure streak and automatic pause, and gets its own notification and `noticeText` case.
43
+ - `schedule show`/`history --json` gain `gateResult` (`{ wake, contextChars }`) and `scriptOutput` (`{ stdout, stderr }`, capped with an explicit truncation marker) on a fired `script`/`script+agent` run; `show`'s text view gains a "Script"/"Wake-gate script" section beside "Prompt".
44
+ - `schedule list` (text and `--json`) now shows each job's kind: `[script, 0 tokens]` and `[script+agent]` in the text view, `kind` (absent for `agent`) in `--json`. The TUI's `/schedule` list marks the same two kinds. Found missing in a UX review — nothing distinguished a zero-token `script` job from an `agent` job in either listing.
45
+ - **Security fix:** a `script`/`script+agent` run's own output — a wake-gate parse failure's quoted stdout, a script-check refusal's quoted command, a `check-failed` notification's reason, `scriptSummaryOf`'s extracted summary line, and `schedule show`/`history`'s text-view `reason`/`summary` — is untrusted runtime text, not anything an operator confirmed, and is now run through the same `sanitizeLine()` a model's own answer already is before it reaches a terminal or a desktop notification, so it cannot plant control characters, terminal escape sequences or invisible/bidi characters on the operator's screen. `--json` output is unaffected and stays raw.
46
+ - **Security fix:** CLI and TUI schedule add/edit/confirm/list/show text views now show terminal controls and bidi characters in script text, prompts, changed lines and folder paths as visible code point escapes, so a script cannot erase or reorder its own confirmation. The model's schedule-tool confirmation uses the same projection. Persisted jobs and JSON output preserve the original source text.
47
+ - **Security/UX fix:** the TUI's `schedule` tool host now acts on an `update`'s `runKind`/`script`: previously it always carried a job's existing kind and script forward unchanged, silently, whatever the model asked to change. Moving to `kind: 'agent'` drops the script (an agent job cannot carry one); a change that touches `kind` or `script` shows up in "Changed since it was last confirmed" the same as every other field, alongside the new script's full text in its own section (`packages/cli/src/tui/schedule/tool-host.ts` `updateRequest`, `packages/cli/src/schedule/changes.ts` `confirmationView`).
48
+ - **Security fix:** `namzu schedule __fire` now refuses a `script`/`script+agent` run outright on native (non-WSL) Windows, the same way job creation already does. Job creation alone was not enough: a job confirmed on WSL or Linux, whose daemon later finds itself running on native Windows (a moved `NAMZU_HOME`, a machine re-imaged from WSL to a native install), previously ran anyway whenever the job's confirmed shell dialect happened to still read as `sh` — the label native Windows's `cmd.exe` approximation and POSIX sh both report, so the existing dialect-mismatch check alone could not tell them apart.
49
+ - A `script`/`script+agent` script (and the scheduled-run floor generally, so a live `bash` call benefits too) may now use `$(…)`/backtick command substitution: it is checked the same as the rest of the script instead of refusing the whole thing outright (see the SDK's `lexShellCommandLine` entry above). The `schedule-task` skill's guidance on this is updated to match; the two narrow shapes still refused (a substitution beside brace expansion, or unquoted as a `<`/`>` redirection target) are named there with why.
50
+
51
+ Upgrade step: nothing changes for an existing `agent` job. Adopting a `script`/`script+agent` job on a `NAMZU_HOME` you may downgrade the CLI on later means that job's files become unreadable by the older version until you upgrade again; keep that in mind before converting a job you might need to roll back.
52
+
53
+ - 567ada8: **`@namzu/cli`**: the session's tool roster is now composed from named `Toolset`s (`@namzu/sdk`'s toolsets, plan.md v3 §8) instead of a `ToolRegistry`. This is internal composition, not a config or CLI-flag change — nothing in `namzu.config.json` or the command line changes — but it is a breaking change for anything that imported `@namzu/cli`'s internals directly:
54
+
55
+ | Removed / changed | Replace with |
56
+ | ---------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
57
+ | `createCliPluginRuntime(config, tools: ToolRegistry, cwd, hooks?, skillTool?)` | `createCliPluginRuntime(config, cwd, hooks?)` — it no longer takes or mutates a tool registry. Read `runtime.skills.size` and fold `runtime.manager.toolsets` into your own toolsets list; the `skill` tool is your own toolset now, not something this runtime registers. |
58
+ | `SubagentRuntimeOptions.buildTools: () => ToolRegistryContract` | `buildTools: () => readonly Toolset[]`. |
59
+ | `SubagentRuntimeOptions.configureWebSearch?: (provider, model, tools: ToolRegistryContract) => WebSearchConfig \| undefined` | `configureWebSearch?: (provider, model, toolsets: readonly Toolset[]) => WebSearchConfig \| undefined` — a pure decision now; it no longer removes `web_search` itself, so a caller building the child's final toolsets filters it out when this returns truthy (`filtered(ts, (t) => t.name !== 'web_search')`). |
60
+ | `McpConnection.tools: readonly ToolDefinition[]` (still present) | `McpConnection.toolsets: readonly Toolset[]`, two per connected server (main tools and deferred resources, both kind `mcp_server`, id `mcp:<server>`) — prefer these; `.tools` is now just the flattened union across all of them. |
61
+
62
+ Additive: `AgentSession` gained a `presenter: ToolPresenter` field — the session's real tool-call/result presenter, for a host that renders events outside `send()`'s own stream. The ACP bridge (`namzu acp`) now uses it instead of a presenter built over a permanently empty registry, so tool-specific `presentCall`/`presentResult` views (a richer diff, a custom label) render over ACP for the first time; every ACP tool view had silently fallen back to the generic label before.
63
+
64
+ Behaviour: because tool availability is now derived from the turn's own revealed-tool history (`@namzu/sdk`'s `ToolManager`) rather than a per-send registry fork, a tool `search_tools` reveals in one send now stays active in a later send of the same session, and after `namzu resume` — it no longer resets every send.
65
+
66
+ **`@namzu/sdk`**: two `combineToolsets` usage bugs, found while wiring the CLI onto toolsets, are fixed — `query()`'s own generated tools and `SupervisorAgent`'s coordinator tools are now two separate array entries (an eager one and a deferred one) rather than one `combineToolsets`'d together, so `runtimeToolOverrides: { name: 'deferred' }` (task tools, coordinator tools) is honoured again instead of silently falling back to `'active'` for both halves. `query()` also no longer adds its own `search_tools` when a caller's `toolsets` already contribute a tool under that exact name (a connector genuinely named `search_tools`), matching the pre-toolsets registry's behaviour and avoiding a spurious `ToolsetConflictError`. Pure bug fixes, no API change.
67
+
68
+ ### Minor Changes
69
+
70
+ - 567ada8: `mcpServers` entries in `namzu.config.json` may now reference the operator's own environment from inside an `env` or `headers` value with a bare `${VAR_NAME}` (identifier characters only — no `${VAR:-default}` fallback). This is narrower than the interpolation some other MCP clients' configs use: only `env` and `headers` values are expanded (never `command`, `args`, `url` or `cwd`), and a reference to a variable that is not set fails that one server with a named reason instead of substituting an empty string. `inheritEnv` remains the primary way to grant a named variable to a stdio child under its own name; `${VAR_NAME}` is for the value itself, and is the only secret-safe option `headers` has ever had.
71
+
72
+ Purely additive: a config with no `${...}` in its `env`/`headers` values behaves exactly as before. A config that happened to contain a literal `${SOMENAME}` string matching a variable name that is set in the operator's environment now has that string substituted rather than passed through literally.
73
+
74
+ - 567ada8: Plugin manifests can declare `instructions`. An enabled plugin contributes the text as labelled, untrusted request context; disabling it revokes the contribution, including for an already-running turn. SDK hosts can also call `definePlugin({ name, tools, hooks, instructions, mcpServers })` and `PluginLifecycleManager.installDefined(plugin)` to install a host-authored plugin without a manifest file or dynamic module import.
75
+
76
+ ### Patch Changes
77
+
78
+ - 567ada8: Fixed: `namzu acp`'s tool-call/result presenter (added in this release to fix the previously-always-empty ACP presenter) delegated through one connection-global "active session" slot. Two ACP sessions with prompts in flight at the same time could have session A's tool-call/result rendered with session B's tool-specific view once B's prompt started — worse than the pre-fix behaviour (always generic, but never wrong) for exactly the concurrent case `acp-session-isolation.test.ts` otherwise covers.
79
+
80
+ The presenter now tracks which session's event it is presenting for only the synchronous span of that one event — bracketed around each `record.route(event)` call rather than held for a whole turn — so a second session's prompt starting, or finishing, while the first is still streaming can no longer be read as "active" while the first session's own event is being presented.
81
+
82
+ - 567ada8: The SDK now accepts application-defined agent type strings and provides `QueryAgent` as the generic managed query adapter. `defineAgent` gives its `run` callback a required fourth `AbortSignal` parameter and creates fresh instances for delegated turns. Code that invokes a `DefineAgentOptions.run` callback directly must supply that fourth argument; existing three-argument callback implementations remain assignable. `ReactiveAgent` and the supervisor, pipeline and router exports remain available as deprecated compatibility names. CLI delegated turns use a CLI-owned `NamzuCliAgent` while keeping their existing configuration behavior.
83
+ - 567ada8: Authorization rules can now match the owning toolset's source id with `{ type: 'by_source', sources: ['mcp:github'], decision: 'review' }`. This lets a host ask, allow or deny every tool from one or more MCP servers without listing names individually. A rule with no matching host-supplied source leaves the call to later rules.
84
+
85
+ The CLI accepts `[permissions.sources]` with source ids or globs mapped to `allow`, `ask` or `deny`, and its permissions display shows those rules and their decisions.
86
+
87
+ - 567ada8: Releases live toolset change listeners when a CLI session or turn ends, including a send with extra per-turn tools. Closing the session keeps its plugin and MCP connection cleanup while dropping the host-side manager subscriptions.
88
+ - 567ada8: `CommandNameCollisionError` (`tui/slashCommands.ts`, thrown when a kernel command and a CLI-local one claim the same name) now extends `@namzu/sdk`'s `RegistryCollisionError`, matching every SDK `*CollisionError` after its registry-collision convergence. Name, message and behavior are unchanged; a catch block naming `CommandNameCollisionError` still works, and one that wants "some registry collided" without naming every class can now catch `RegistryCollisionError` instead. See [docs/sdk/registries.md](../docs/sdk/registries.md).
89
+ - 567ada8: MCP tool definitions that change after initial admission keep serving their earlier definition across turns; new and removed names still update. `/mcp` and `exec --json` now report server discovery changes and current policy refusals, including changed definitions held for review.
90
+ - 567ada8: Former MCP permission-name warnings now use the CLI's structured logger instead of writing plain text to stderr. Consumers of `exec --json` stderr can continue parsing log records when a legacy permission rule is configured. Plugin MCP disconnect warnings use a fixed message and put the operation in a log attribute.
91
+ - 567ada8: Shipped prose no longer names other named products. `matchesToolSelector`'s doc comment (`packages/sdk/src/tools/roster.ts`) and [Tool metadata and selectors](../docs/sdk/tool-metadata-and-selectors.md) describe its synchronous-only design against "some other agent frameworks' equivalent selector" instead of one by name; [Tool servers](../docs/cli/mcp-servers.md) describes the wider `${VAR}`/`${VAR:-default}` interpolation some MCP clients accept as "several desktop and editor MCP clients" instead of naming two. Wording only: no type, default or behaviour changed.
92
+ - 567ada8: Invalid JavaScript plugin tools now fail when a plugin is enabled, with the
93
+ plugin and module named, if they omit a usable `inputSchema`. Before, a
94
+ deferred plugin tool could load successfully and then crash the turn with a
95
+ Zod `_def` error after `search_tools` revealed it. Supply a Zod
96
+ `inputSchema`, or a compatible parser and explicit `modelInputSchema`.
97
+ - 567ada8: Fixed: under `toolLoading: 'deferred'`, `search_tools` was refused by review in every mode but `auto` — `plan` and `strict` refused it outright, and the interactive default (`prompt`) put up an approval dialog for it on every discovery call, where before the toolsets migration it ran silently. The session's own review-exemption manager is built from `sessionToolsets` alone and never learns about `search_tools` (mounted internally, per turn, by `query()`), so `reviewExemptionFor`'s lookup resolved it as an unknown tool and treated it as never exempt.
98
+
99
+ `reviewExemptionFor` now falls back to the SDK's own `search_tools` definition for a name the session's manager does not carry, read exactly the way the kernel reads a known tool (`isTrustedReadOnly`), so the exemption holds regardless of whether this turn's `query()` actually mounts it. This does not add `search_tools` to `/tools` or `/permissions` (`promptExemptToolNames`), which still read the session's roster bare and stay fixed at boot, as `tools-and-permissions-agree.test.ts` requires.
100
+
101
+ This is also what makes the earlier claim in this same release — that a tool `search_tools` reveals in one send stays active in a later send — true for `permissionMode: 'plan'` too; it previously held only for `auto`, since a blocked `search_tools` call never revealed anything to persist.
102
+
103
+ - 567ada8: Restores file-defined sub-agent shadowing: a project agent file named `explore` or `general-purpose` again replaces the matching built-in, using the new `AgentRegistry.replace` instead of `register` now that registries throw on a duplicate id by default (`@namzu/sdk`'s registry-collision convergence). No change from the last published `@namzu/cli` behavior — this restores parity with a regression introduced earlier in this same line of work, before it ever shipped.
104
+ - Updated dependencies [567ada8]
105
+ - Updated dependencies [567ada8]
106
+ - Updated dependencies [567ada8]
107
+ - Updated dependencies [567ada8]
108
+ - Updated dependencies [567ada8]
109
+ - Updated dependencies [567ada8]
110
+ - Updated dependencies [567ada8]
111
+ - Updated dependencies [567ada8]
112
+ - Updated dependencies [567ada8]
113
+ - Updated dependencies [567ada8]
114
+ - Updated dependencies [567ada8]
115
+ - Updated dependencies [567ada8]
116
+ - Updated dependencies [567ada8]
117
+ - Updated dependencies [567ada8]
118
+ - Updated dependencies [567ada8]
119
+ - Updated dependencies [567ada8]
120
+ - Updated dependencies [567ada8]
121
+ - Updated dependencies [567ada8]
122
+ - Updated dependencies [567ada8]
123
+ - Updated dependencies [567ada8]
124
+ - Updated dependencies [567ada8]
125
+ - Updated dependencies [567ada8]
126
+ - Updated dependencies [567ada8]
127
+ - Updated dependencies [567ada8]
128
+ - Updated dependencies [fbeac55]
129
+ - Updated dependencies [567ada8]
130
+ - Updated dependencies [567ada8]
131
+ - Updated dependencies [567ada8]
132
+ - Updated dependencies [567ada8]
133
+ - Updated dependencies [567ada8]
134
+ - Updated dependencies [567ada8]
135
+ - Updated dependencies [567ada8]
136
+ - Updated dependencies [567ada8]
137
+ - Updated dependencies [567ada8]
138
+ - @namzu/sdk@48.0.0
139
+ - @namzu/browser@0.1.1
140
+ - @namzu/computer-use@2.0.2
141
+ - @namzu/anthropic@6.2.2
142
+ - @namzu/deepseek@2.0.2
143
+ - @namzu/openai@4.1.3
144
+ - @namzu/openrouter@3.0.3
145
+ - @namzu/zen@2.5.2
146
+ - @namzu/ollama@2.2.5
147
+
148
+ ## 31.0.0
149
+
150
+ ### Major Changes
151
+
152
+ - 166fe10: **Words you type in the interactive composer can now act for that message — on by default.** This changes what existing keystrokes do, so it is a major version.
153
+
154
+ - `hypermode` at the start or end of a message (or clause) arms a one-turn hypermode: that turn runs at `xhigh` effort (the highest level below it on a model without `xhigh`) and the model is asked to delegate independent work to parallel agents. The next turn gets neither, and `/hypermode` (the session setting) is not turned on.
155
+ - "save this as a skill", "turn it into a skill", "bunu skill olarak kaydet", "bunu skill'e çevir", "bundan bir skill yap" and their request forms (`kaydeder misin`, `kaydedebilir misin`, `kaydedelim mi`, …) run `/skills save` after the turn — only when that turn completed, did tool work and did not already save a skill. A message that is only the phrase runs `/skills save` at once.
156
+ - Schedule phrases ("run it every day", "bunu her sabah çalıştır") are only suggested; they never act on their own.
157
+
158
+ Before you press Enter, the words are highlighted and a row above the input says exactly what will happen, for example `✦ hypermode · this turn: effort xhigh, delegate to parallel agents · alt+w drop`. **Alt+W** drops it for that message; Backspace right after `hypermode` drops it too. Only keys you type arm a trigger: pasted, recalled or edited text only shows a suggestion (`✧ hypermode? · alt+w arms`), and loops, pickers, `namzu exec`, `drain`, ACP and scheduled runs never act on these words. Talking about a word does not arm it: "what is hypermode?", a word in the middle of a sentence, in quotes, in code or in a path stays prose. A trigger grants nothing and skips no confirmation; `save_skill` and scheduled jobs still show their own screens. Your message reaches the model and the log unchanged.
159
+
160
+ **To keep the old behaviour**, turn composer triggers off with `/config triggers off` (writes the user config), or in `~/.namzu/config.yaml`:
161
+
162
+ ```yaml
163
+ composerTriggers:
164
+ enabled: false
165
+ ```
166
+
167
+ Or keep the feature and turn one trigger down: `composerTriggers.builtin.hypermode: suggest` (or `off`), likewise `save-skill`. A project's `namzu.config.json` can turn triggers off or down for that project but cannot turn them back on over your user file. The `composerTriggers` key is new on the exported `NamzuCliConfig` type.
168
+
169
+ - 166fe10: The multi-agent session mode is now called **hypermode**. Turn it on with `/hypermode on` (or pick the last stop of the `/effort` picker, which now reads `xhigh + hypermode (workflows)`, with `Off · delegates to parallel agents by default` under it). The footer shows `· hypermode` and the message box's border names it the same way. **One behaviour change:** the mode now pins reasoning effort to `xhigh`, not to the highest level the model publishes. On a model that offers `max` (or `ultra`), turning the mode on used to select `max`; it now selects `xhigh`, which spends less per turn. A model without `xhigh` gets the highest level it publishes below it, and the stop names that level (`high + hypermode (workflows)`). To run a hypermode session at `max`, turn the mode on and then choose `/effort max`; the mode keeps delegating by default. Independent work is still delegated to parallel agents by default, for this session only.
170
+
171
+ `/orchestrate` still works: it prints `/orchestrate is deprecated: the mode is now called hypermode. Use /hypermode; /orchestrate will be removed in a later major version.` and then does exactly what `/hypermode` does. Switch any scripts, notes or muscle memory to `/hypermode` before the next major version. The mode was never stored in a config file, so there is nothing to migrate.
172
+
173
+ ### Minor Changes
174
+
175
+ - 443094a: Stateless `namzu exec --json` history on stdin (`Message[]`, no `--session`) now accepts and keeps an optional `id` on each message (`BaseMessage.id`, `@namzu/sdk`'s new field), the same way it already keeps `toolCalls[].id`: validated as a string, never required, never stripped. A host that reads a prior turn back from `namzu history --session <key>` (which carries the real durable id on every message) can feed that same history into a later stateless call unmodified and have `query()` reconcile it by id. This stream's own `delta`/`tool-start`/`tool-end` events do not yet surface a message's id as it happens, so a host that only ever rebuilds `Message[]` from this stream still has none to attach — that keeps working exactly as before, reconciled by value.
176
+
177
+ ### Patch Changes
178
+
179
+ - 2d4ff9a: **`ask_user_question` says which option it recommends in a field, not in the label.** An option takes `recommended: true`, and `UserQuestionOption.recommended` is set on each recommended option of the question your `ResumeHandler` receives; it is absent on the others. The answer's `data.selected[]` carries `recommended: true` on a chosen option the model recommended. The tool no longer tells the model to append " (Recommended)" to a label.
180
+
181
+ Labels now reach your handler without a recommendation marker. An option is recommended when the model set `recommended: true` on it, or left the flag out and ended its label in "(Recommended)". That English marker was already removed from the answer; it is now also removed from the label you are shown, on every option that carries it, and an option the model set `recommended: false` on stays unrecommended. What was left before it still reaches you and the answer whole: "Cloud (AWS) (Recommended)" reads "Cloud (AWS)", as the answer did before. On a recommended option, a trailing parenthesised group of one to three words — "(Önerilen)", "(Empfohlen)", "(推荐)", which used to reach both your screen and the answer the model read back — is taken for the marker and removed from the label you are shown and from the answer. That includes a qualifier the model put there against the tool's instructions: a flagged "Use cache (Redis)" arrives as "Use cache". It is removed only when every option whose label ends in a group is recommended, did not end in "(Recommended)", and ends in that same group (letter case aside, compared the same way whatever your host's locale), so a group that differs between options is kept, flagged or not: "Postgres (managed)" / "Postgres (self-hosted)", or a multi-select's "Tests (unit)" / "Tests (e2e)". A marker that is all that tells two options apart ("Redis (Empfohlen)" next to "Redis") and a group with digits or symbols are kept too, and the order of the options changes none of this. Nothing else changes a label or makes an option recommended: apart from surrounding spaces and a trailing "(Recommended)", an option that is not recommended reaches you, and the answer, exactly as written, and a localised marker on it stays.
182
+
183
+ What to do: if your question UI showed the recommendation only because the label said "(Recommended)", show it from `option.recommended` instead; nothing else changes. In the CLI the question card draws `[recommended]` next to that option.
184
+
185
+ - 49491b9: A cut-off or malformed `Agent` call is no longer answered with advice about writing files. The tool declares `prompt` as its one long argument, so a call whose prompt filled the response when the output limit cut it off is told to keep `prompt` under half of what arrived, or under 12000 characters when that is less, and to put long material in a file and name it in the prompt. A call cut off by a stream that ended is told 12000 characters. When most of the response went to reasoning, or to what came before the call, the call is told that instead, with no budget. A malformed call is told to send valid JSON and how to write a newline, tab, quote or backslash inside the `prompt` string, with nothing about files or size.
186
+ - 49491b9: `namzu exec --json` now writes a `tool-input-unreadable` event for a tool call whose streamed arguments could not be read, before the call's `tool-start`. It carries `toolUseId`, `turnId`, `inputError` (whose `reason` says whether the arguments were cut off, `truncated`, or were not valid JSON, `malformed`) and `partialArguments`, the first 16 384 characters of what the model sent. A host used to see only the failed `tool-end`, so it could not tell the two apart or record what was sent. A host that line-scans by `kind` and ignores kinds it does not know needs no change.
187
+ - 49491b9: `namzu exec --json` checks a prior tool call's `metadata.inputError` on the history it reads from stdin, as it already checked `inputTruncated` and `partialArguments`. The executor words its answer to that call from the field, so a `reason` other than `truncated` or `malformed`, or a `length` that is not a count, reached the model as "after undefined characters". Such history is now refused before the turn starts, naming the field, like any other invalid history.
188
+ - 166fe10: `/hypermode off` now puts back the reasoning effort you had before turning the mode on (the message says which: `Hypermode is off — effort back to low.`). Before, turning the mode off left effort pinned at the level the mode chose, so later turns kept running — and spending — at that level although the help said both settings revert. If you picked a level yourself while the mode was on, that level stays. Nothing to change on your side.
189
+ - 166fe10: Security fix: a loop the model creates with the `session_loop` tool now sends its prompt to the model as plain text every time it fires. Before, the TUI treated a model loop's prompt like a line you typed: a prompt starting with `!` ran a shell command on your machine, outside the sandbox and without review; `#` saved a project memory; `/` ran a slash command; and a sentence such as "modeli opus-5 yapar mısın" switched the model. A loop fires every interval for up to seven days, so one approval of its creation (none in `auto` mode) could become unreviewed host commands.
190
+
191
+ Loops you create with `/loop` are unchanged: their `/`, `!` and `#` still work. No loop's prompt is added to the composer's history any more, so Up brings back only what you typed. Nothing to configure; if you relied on a model-created loop running a command, create the loop yourself with `/loop <interval> <command>`.
192
+
193
+ - 2d4ff9a: Earlier entries in this package's CHANGELOG no longer name one particular application built on namzu, or quote a path from outside this repository. This changes only the CHANGELOG.md that ships in the tarball; no code or types change, and there is nothing to do to upgrade.
194
+ - 7c810bc: `web_search`'s transcript presenter stripped the untrusted-content envelope from its own tool result by matching the frame's literal opening/closing tags by hand. `@namzu/sdk`'s `wrapUntrusted` now binds those tags to a per-render nonce (see the `@namzu/sdk` major changeset in this same release), so the hand-rolled match would have silently stopped recognizing the envelope and shown the raw, tagged text in the transcript instead of the clean result. The presenter now reads the body back with the exported `untrustedEnvelopeBody`, which already understands the nonce, instead of re-deriving the tag shape.
195
+ - Updated dependencies [2d4ff9a]
196
+ - Updated dependencies [49491b9]
197
+ - Updated dependencies [166fe10]
198
+ - Updated dependencies [2d4ff9a]
199
+ - Updated dependencies [2d4ff9a]
200
+ - Updated dependencies [49491b9]
201
+ - Updated dependencies [7c810bc]
202
+ - Updated dependencies [443094a]
203
+ - Updated dependencies [49491b9]
204
+ - Updated dependencies [7c810bc]
205
+ - Updated dependencies [49491b9]
206
+ - Updated dependencies [443094a]
207
+ - @namzu/sdk@47.0.0
208
+ - @namzu/anthropic@6.2.1
209
+ - @namzu/openrouter@3.0.2
210
+ - @namzu/deepseek@2.0.1
211
+ - @namzu/openai@4.1.2
212
+ - @namzu/google@1.1.1
213
+ - @namzu/computer-use@2.0.1
214
+ - @namzu/ollama@2.2.5
215
+ - @namzu/files@1.1.2
216
+ - @namzu/zen@2.5.1
217
+ - @namzu/browser@0.1.0
218
+
3
219
  ## 30.0.0
4
220
 
5
221
  ### Major Changes
@@ -6314,7 +6530,7 @@ redis"` passes through untouched; the extra words are what distinguish a request
6314
6530
  What a consumer sees change:
6315
6531
 
6316
6532
  - `@namzu/sandbox` raised `Sandbox backend 'x' is not implemented yet. Track
6317
- progress in vendor/namzu/docs.local/sessions/ses_004-...` — a runtime error
6533
+ progress in <a local notes directory>/...` — a runtime error
6318
6534
  instructing the reader to open a path that is not in the package, not in the
6319
6535
  repository, and not on the internet. It now names what does ship instead.
6320
6536
  - `@namzu/computer-use`'s README linked to an adapter-pattern document under a
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA8BH,OAAO,EAEN,KAAK,gBAAgB,EAKrB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAmDxD,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAI7E;AAED,MAAM,WAAW,aAAa;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;CACvD;AAQD,wBAAsB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAyajE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CA4E5F"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA8BH,OAAO,EAEN,KAAK,gBAAgB,EAKrB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAmDxD,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAI7E;AAED,MAAM,WAAW,aAAa;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;CACvD;AAQD,wBAAsB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CA6ajE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CA4E5F"}
package/dist/cli.js CHANGED
@@ -34,7 +34,7 @@ import { resolveNamzuHome } from './integrations/state/home.js';
34
34
  import { cliLogger, createStderrSink, installCliLogging, resolveLogFormat, resolveLogLevel, } from './logging.js';
35
35
  import { createFormatter, isFormatName } from './output/index.js';
36
36
  import { compileBrowserSites, withBrowserSiteRules } from './permissions/browser-sites.js';
37
- import { compilePermissions } from './permissions/rules.js';
37
+ import { compilePermissions, warnLegacyMcpPermissionNames } from './permissions/rules.js';
38
38
  import { CLI_VERSION } from './version.js';
39
39
  /** sysexits EX_USAGE — command-line argument error. */
40
40
  const EX_USAGE = 64;
@@ -294,6 +294,7 @@ export async function runCli(opts) {
294
294
  const commandCtx = getBootstrapContext();
295
295
  beginCatalogueRefresh(commandCtx.config);
296
296
  const buildTuiContext = (resolvedCtx, cwd) => {
297
+ warnLegacyMcpPermissionNames(resolvedCtx.config.permissions);
297
298
  const permissions = compilePermissions(resolvedCtx.config.permissions, resolvedCtx.config.permissionChecks);
298
299
  for (const d of permissions.diagnostics) {
299
300
  const where = d.pattern ? `permissions.${d.tool}."${d.pattern}"` : `permissions.${d.tool}`;
@@ -326,6 +327,9 @@ export async function runCli(opts) {
326
327
  ...(resolvedCtx.config.mcpServers ? { mcpServers: resolvedCtx.config.mcpServers } : {}),
327
328
  ...(resolvedCtx.config.plugins ? { plugins: resolvedCtx.config.plugins } : {}),
328
329
  ...(resolvedCtx.config.skills ? { skills: resolvedCtx.config.skills } : {}),
330
+ ...(resolvedCtx.config.composerTriggers
331
+ ? { composerTriggers: resolvedCtx.config.composerTriggers }
332
+ : {}),
329
333
  ...(resolvedCtx.config.web ? { web: resolvedCtx.config.web } : {}),
330
334
  ...(resolvedCtx.config.hooks ? { hooks: resolvedCtx.config.hooks } : {}),
331
335
  ...(resolvedCtx.config.compaction ? { compaction: resolvedCtx.config.compaction } : {}),
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type AcpAgentGateway, type ExternalRefTarget, type Origin, type SessionId } from '@namzu/sdk';
1
+ import { type AcpAgentGateway, type ExternalRefTarget, type Origin, type SessionId, type ToolPresenter } from '@namzu/sdk';
2
2
  import { resolveTrustedProjectContext } from '../config/trusted-project-context.js';
3
3
  import type { DetectedProvider, Preferences } from '../integrations/providers/index.js';
4
4
  import { decideHeadlessTrust } from '../permissions/headless-trust.js';
@@ -40,7 +40,7 @@ export type ExternalSessionLookup = (protocol: 'acp', kind: 'session', externalI
40
40
  * finds the same session.
41
41
  */
42
42
  export declare function resolveAcpSession(wireSessionId: string, lookup: ExternalSessionLookup): Promise<AcpSessionTarget>;
43
- type AcpLiveSession = Pick<AgentSession, 'hasProvider' | 'errorHint' | 'mcpFailed' | 'send' | 'close'>;
43
+ type AcpLiveSession = Pick<AgentSession, 'hasProvider' | 'errorHint' | 'mcpFailed' | 'send' | 'close' | 'presenter'>;
44
44
  export interface AcpRuntimeDependencies {
45
45
  readonly probe: typeof probeAgentSession;
46
46
  readonly createSession: (preferences: Preferences, detected: readonly DetectedProvider[], options: Parameters<typeof createAgentSession>[2]) => Promise<AcpLiveSession>;
@@ -51,6 +51,24 @@ export interface AcpRuntimeDependencies {
51
51
  }
52
52
  export interface CliAcpRuntime {
53
53
  readonly gateway: AcpAgentGateway;
54
+ /**
55
+ * Delegates to whichever session's own event is being rendered RIGHT NOW
56
+ * — never "whichever session's `prompt` call is live", which two
57
+ * concurrent prompts both are. `record.route` (see `gateway.prompt`
58
+ * below) wraps the SDK's `onEvent` so that `activeRecord` is set to
59
+ * `record` for exactly the synchronous span of that one call: `update.ts`
60
+ * reads `presenter` synchronously while building the update it emits, so
61
+ * bracketing the call this tightly, rather than for the whole turn, is
62
+ * what keeps a second session's prompt — live at the same time — from
63
+ * ever being read as "active" while this event is presented. Falls back
64
+ * to the generic label/view before any turn has run. Was permanently a
65
+ * presenter over an empty, never-populated registry; every ACP
66
+ * tool-call/result view fell back to the generic label for every tool,
67
+ * every session (fixed here, not in the SDK: `ACPServerConfig.presenter`
68
+ * is one value for the whole server, not per session, so this is the
69
+ * best a CLI-side fix can do without also changing that surface).
70
+ */
71
+ readonly presenter: ToolPresenter;
54
72
  close(): Promise<void>;
55
73
  }
56
74
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"acp.d.ts","sourceRoot":"","sources":["../../src/commands/acp.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,eAAe,EACpB,KAAK,iBAAiB,EAGtB,KAAK,MAAM,EAGX,KAAK,SAAS,EAOd,MAAM,YAAY,CAAA;AAMnB,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAA;AACnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAEvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAEtE,OAAO,EAAE,KAAK,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAmD5D;;;;;;;;;;;;;;;GAeG;AAEH,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,4EAA4E;AAC5E,MAAM,MAAM,qBAAqB,GAAG,CACnC,QAAQ,EAAE,KAAK,EACf,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,MAAM,KACd,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAA;AAE3C;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACtC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,qBAAqB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAQ3B;AAgBD,KAAK,cAAc,GAAG,IAAI,CACzB,YAAY,EACZ,aAAa,GAAG,WAAW,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAC5D,CAAA;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,iBAAiB,CAAA;IACxC,QAAQ,CAAC,aAAa,EAAE,CACvB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EACrC,OAAO,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAC7C,OAAO,CAAC,cAAc,CAAC,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,OAAO,mBAAmB,CAAA;IAChD,QAAQ,CAAC,qBAAqB,EAAE,OAAO,4BAA4B,CAAA;IACnE,uFAAuF;IACvF,QAAQ,CAAC,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;CAC7E;AAQD,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;IACjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAUD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAClC,YAAY,EAAE,cAAc,EAC5B,IAAI,GAAE,sBAA6C,GACjD,aAAa,CA8Nf;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAmCxE;AAED,eAAO,MAAM,UAAU,EAAE,UAIxB,CAAA"}
1
+ {"version":3,"file":"acp.d.ts","sourceRoot":"","sources":["../../src/commands/acp.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,eAAe,EACpB,KAAK,iBAAiB,EAGtB,KAAK,MAAM,EAGX,KAAK,SAAS,EACd,KAAK,aAAa,EAMlB,MAAM,YAAY,CAAA;AAMnB,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAA;AACnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAEvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAEtE,OAAO,EAAE,KAAK,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAmD5D;;;;;;;;;;;;;;;GAeG;AAEH,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,4EAA4E;AAC5E,MAAM,MAAM,qBAAqB,GAAG,CACnC,QAAQ,EAAE,KAAK,EACf,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,MAAM,KACd,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAA;AAE3C;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACtC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,qBAAqB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAQ3B;AAgBD,KAAK,cAAc,GAAG,IAAI,CACzB,YAAY,EACZ,aAAa,GAAG,WAAW,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAC1E,CAAA;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,iBAAiB,CAAA;IACxC,QAAQ,CAAC,aAAa,EAAE,CACvB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EACrC,OAAO,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAC7C,OAAO,CAAC,cAAc,CAAC,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,OAAO,mBAAmB,CAAA;IAChD,QAAQ,CAAC,qBAAqB,EAAE,OAAO,4BAA4B,CAAA;IACnE,uFAAuF;IACvF,QAAQ,CAAC,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;CAC7E;AAQD,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;IACjC;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAA;IACjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAUD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAClC,YAAY,EAAE,cAAc,EAC5B,IAAI,GAAE,sBAA6C,GACjD,aAAa,CAoQf;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAmCxE;AAED,eAAO,MAAM,UAAU,EAAE,UAIxB,CAAA"}
@@ -1,11 +1,11 @@
1
- import { ACPServer, HostCommandRegistry, ServerStdioTransport, ToolRegistry, createToolPresenter, createUserMessage, generateSessionId, isEntityId, openSessionIndex, } from '@namzu/sdk';
1
+ import { ACPServer, HostCommandRegistry, ServerStdioTransport, createUserMessage, generateSessionId, genericLabel, isEntityId, openSessionIndex, } from '@namzu/sdk';
2
2
  import { readFileSync } from 'node:fs';
3
3
  import { dirname, join } from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
5
  import { resolveTrustedProjectContext } from '../config/trusted-project-context.js';
6
6
  import { cliLogger } from '../logging.js';
7
7
  import { decideHeadlessTrust } from '../permissions/headless-trust.js';
8
- import { compilePermissions } from '../permissions/rules.js';
8
+ import { compilePermissions, warnLegacyMcpPermissionNames } from '../permissions/rules.js';
9
9
  import { createAgentSession, probeAgentSession } from '../tui/agent.js';
10
10
  /** Same read as `cli.ts`'s `--version`: the manifest, never a second copy. */
11
11
  function readPackageVersion() {
@@ -105,6 +105,22 @@ export function createCliAcpRuntime(bootstrapCtx, deps = DEFAULT_RUNTIME_DEPS) {
105
105
  const constructing = new Map();
106
106
  let probePromise;
107
107
  let closed = false;
108
+ // The record whose event `toAcpSessionUpdate` is presenting RIGHT NOW —
109
+ // set only for the synchronous span of one `record.route(event)` call
110
+ // (see `gateway.prompt`), never for a whole turn, so two turns in flight
111
+ // at once cannot read each other's record while presenting their own
112
+ // event.
113
+ let activeRecord;
114
+ const presenter = {
115
+ presentCall: (toolName, input) => activeRecord?.session.presenter.presentCall(toolName, input) ?? {
116
+ kind: 'generic',
117
+ label: genericLabel(input),
118
+ },
119
+ presentResult: (toolName, input, result) => activeRecord?.session.presenter.presentResult(toolName, input, result) ?? {
120
+ kind: 'generic',
121
+ label: genericLabel(input),
122
+ },
123
+ };
108
124
  const sharedProbe = () => {
109
125
  if (!probePromise) {
110
126
  probePromise = deps.probe().catch((error) => {
@@ -145,6 +161,7 @@ export function createCliAcpRuntime(bootstrapCtx, deps = DEFAULT_RUNTIME_DEPS) {
145
161
  };
146
162
  try {
147
163
  const projectCtx = deps.resolveProjectContext(bootstrapCtx, cwd);
164
+ warnLegacyMcpPermissionNames(projectCtx.config.permissions);
148
165
  const permissions = compilePermissions(projectCtx.config.permissions, projectCtx.config.permissionChecks);
149
166
  if (permissions.diagnostics.length > 0) {
150
167
  throw new Error(permissions.diagnostics
@@ -238,7 +255,26 @@ export function createCliAcpRuntime(bootstrapCtx, deps = DEFAULT_RUNTIME_DEPS) {
238
255
  return { stopReason: 'cancelled' };
239
256
  throw error;
240
257
  }
241
- record.route = onEvent;
258
+ // Wraps `onEvent`, not aliases it: `toAcpSessionUpdate` reads
259
+ // `presenter` synchronously while building the update this call
260
+ // produces, so `activeRecord` is `record` for exactly that
261
+ // synchronous span and restored (not just cleared) afterward — a
262
+ // concurrent session's own routed event, firing between two of
263
+ // this session's, sets and restores the SAME variable around its
264
+ // own span without corrupting this one. `routedEvent`, not
265
+ // `onEvent`, is what the `finally` below compares against, since
266
+ // `record.route` never holds `onEvent` itself anymore.
267
+ const routedEvent = (event) => {
268
+ const outer = activeRecord;
269
+ activeRecord = record;
270
+ try {
271
+ onEvent(event);
272
+ }
273
+ finally {
274
+ activeRecord = outer;
275
+ }
276
+ };
277
+ record.route = routedEvent;
242
278
  try {
243
279
  let stopReason;
244
280
  let settledHistory;
@@ -286,13 +322,14 @@ export function createCliAcpRuntime(bootstrapCtx, deps = DEFAULT_RUNTIME_DEPS) {
286
322
  };
287
323
  }
288
324
  finally {
289
- if (record.route === onEvent)
325
+ if (record.route === routedEvent)
290
326
  record.route = undefined;
291
327
  }
292
328
  },
293
329
  };
294
330
  return {
295
331
  gateway,
332
+ presenter,
296
333
  close: async () => {
297
334
  closed = true;
298
335
  const owned = [...records.values()];
@@ -312,7 +349,7 @@ export async function runAcpCommand(ctx) {
312
349
  transport: new ServerStdioTransport(),
313
350
  gateway: runtime.gateway,
314
351
  commands: new HostCommandRegistry(),
315
- presenter: createToolPresenter(new ToolRegistry()),
352
+ presenter: runtime.presenter,
316
353
  agentInfo: { name: 'namzu', version: readPackageVersion() },
317
354
  });
318
355
  await server.start();