@pentoshi/clai 4.8.4 → 4.10.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 (318) hide show
  1. package/README.md +91 -4
  2. package/dist/agent/compaction-executor.d.ts +3 -5
  3. package/dist/agent/compaction-executor.js +165 -28
  4. package/dist/agent/compaction-executor.js.map +1 -1
  5. package/dist/agent/finalize-gate.js +0 -9
  6. package/dist/agent/finalize-gate.js.map +1 -1
  7. package/dist/agent/plan-mode-reminders.js +5 -5
  8. package/dist/agent/plan-mode-reminders.js.map +1 -1
  9. package/dist/agent/plan-tool.d.ts +1 -0
  10. package/dist/agent/plan-tool.js +50 -21
  11. package/dist/agent/plan-tool.js.map +1 -1
  12. package/dist/agent/reliability-policy.d.ts +9 -0
  13. package/dist/agent/reliability-policy.js +36 -1
  14. package/dist/agent/reliability-policy.js.map +1 -1
  15. package/dist/agent/runner.d.ts +4 -0
  16. package/dist/agent/runner.js +193 -116
  17. package/dist/agent/runner.js.map +1 -1
  18. package/dist/agent/task-analyzer.d.ts +8 -18
  19. package/dist/agent/task-analyzer.js +75 -182
  20. package/dist/agent/task-analyzer.js.map +1 -1
  21. package/dist/agent/task-evidence.js +10 -0
  22. package/dist/agent/task-evidence.js.map +1 -1
  23. package/dist/agent/tool-call-parser.js +14 -13
  24. package/dist/agent/tool-call-parser.js.map +1 -1
  25. package/dist/app/adapters/current-agent-adapter.d.ts +5 -1
  26. package/dist/app/adapters/current-agent-adapter.js +2 -1
  27. package/dist/app/adapters/current-agent-adapter.js.map +1 -1
  28. package/dist/app/commands/catalog.js +10 -0
  29. package/dist/app/commands/catalog.js.map +1 -1
  30. package/dist/app/commands/registry.js +1 -0
  31. package/dist/app/commands/registry.js.map +1 -1
  32. package/dist/app/controllers/session-compact-helper.js +3 -6
  33. package/dist/app/controllers/session-compact-helper.js.map +1 -1
  34. package/dist/app/ports/transcript-item.d.ts +4 -0
  35. package/dist/classic/app/ClassicApp.js +1 -1
  36. package/dist/classic/app/ClassicApp.js.map +1 -1
  37. package/dist/classic/app/action-handlers.js +4 -0
  38. package/dist/classic/app/action-handlers.js.map +1 -1
  39. package/dist/classic/app/app-wiring.js +1 -0
  40. package/dist/classic/app/app-wiring.js.map +1 -1
  41. package/dist/classic/app/wiring-lifecycle.js +1 -0
  42. package/dist/classic/app/wiring-lifecycle.js.map +1 -1
  43. package/dist/classic/blocks/compacted-lines.js +3 -0
  44. package/dist/classic/blocks/compacted-lines.js.map +1 -1
  45. package/dist/classic/blocks/thinking-lines.js +11 -2
  46. package/dist/classic/blocks/thinking-lines.js.map +1 -1
  47. package/dist/classic/bootstrap/start-classic.d.ts +1 -0
  48. package/dist/classic/bootstrap/start-classic.js +16 -0
  49. package/dist/classic/bootstrap/start-classic.js.map +1 -1
  50. package/dist/classic/chrome/Composer.d.ts +6 -0
  51. package/dist/classic/chrome/Composer.js +2 -3
  52. package/dist/classic/chrome/Composer.js.map +1 -1
  53. package/dist/classic/chrome/composer-controller.d.ts +6 -1
  54. package/dist/classic/chrome/composer-controller.js +18 -8
  55. package/dist/classic/chrome/composer-controller.js.map +1 -1
  56. package/dist/classic/chrome/editor-view.d.ts +2 -1
  57. package/dist/classic/chrome/editor-view.js +1 -1
  58. package/dist/classic/chrome/editor-view.js.map +1 -1
  59. package/dist/classic/chrome/status-rows.js +3 -2
  60. package/dist/classic/chrome/status-rows.js.map +1 -1
  61. package/dist/classic/panels/TextEditorPanel.d.ts +3 -0
  62. package/dist/classic/panels/TextEditorPanel.js +7 -0
  63. package/dist/classic/panels/TextEditorPanel.js.map +1 -0
  64. package/dist/classic/panels/panel-controller.js +28 -1
  65. package/dist/classic/panels/panel-controller.js.map +1 -1
  66. package/dist/classic/panels/panel-effect.d.ts +3 -0
  67. package/dist/classic/panels/panel-effect.js.map +1 -1
  68. package/dist/classic/panels/panel-effects.js +3 -0
  69. package/dist/classic/panels/panel-effects.js.map +1 -1
  70. package/dist/classic/panels/panel-host.js +3 -0
  71. package/dist/classic/panels/panel-host.js.map +1 -1
  72. package/dist/classic/panels/panel-types.d.ts +2 -0
  73. package/dist/classic/panels/secret-panel.d.ts +1 -1
  74. package/dist/classic/panels/secret-panel.js +4 -2
  75. package/dist/classic/panels/secret-panel.js.map +1 -1
  76. package/dist/classic/panels/text-editor-panel.d.ts +33 -0
  77. package/dist/classic/panels/text-editor-panel.js +101 -0
  78. package/dist/classic/panels/text-editor-panel.js.map +1 -0
  79. package/dist/index.js +60 -7
  80. package/dist/index.js.map +1 -1
  81. package/dist/interactive-session/transport-node-pty.d.ts +10 -1
  82. package/dist/interactive-session/transport-node-pty.js +36 -12
  83. package/dist/interactive-session/transport-node-pty.js.map +1 -1
  84. package/dist/llm/adapters/anthropic-tools.d.ts +2 -1
  85. package/dist/llm/adapters/anthropic-tools.js +55 -4
  86. package/dist/llm/adapters/anthropic-tools.js.map +1 -1
  87. package/dist/llm/anthropic.js +1 -1
  88. package/dist/llm/anthropic.js.map +1 -1
  89. package/dist/llm/aws-mantle.js +2 -0
  90. package/dist/llm/aws-mantle.js.map +1 -1
  91. package/dist/llm/meta.js +62 -68
  92. package/dist/llm/meta.js.map +1 -1
  93. package/dist/llm/operation-ledger.js +6 -2
  94. package/dist/llm/operation-ledger.js.map +1 -1
  95. package/dist/llm/provider.js +7 -7
  96. package/dist/llm/request-plan.js +7 -2
  97. package/dist/llm/request-plan.js.map +1 -1
  98. package/dist/llm/tool-protocol.d.ts +1 -0
  99. package/dist/llm/tool-protocol.js +7 -0
  100. package/dist/llm/tool-protocol.js.map +1 -1
  101. package/dist/mcp/client.d.ts +27 -0
  102. package/dist/mcp/client.js +119 -0
  103. package/dist/mcp/client.js.map +1 -0
  104. package/dist/mcp/config-file.d.ts +35 -0
  105. package/dist/mcp/config-file.js +217 -0
  106. package/dist/mcp/config-file.js.map +1 -0
  107. package/dist/mcp/discovery.d.ts +4 -0
  108. package/dist/mcp/discovery.js +409 -0
  109. package/dist/mcp/discovery.js.map +1 -0
  110. package/dist/mcp/format.d.ts +17 -0
  111. package/dist/mcp/format.js +122 -0
  112. package/dist/mcp/format.js.map +1 -0
  113. package/dist/mcp/index.d.ts +15 -0
  114. package/dist/mcp/index.js +16 -0
  115. package/dist/mcp/index.js.map +1 -0
  116. package/dist/mcp/jsonrpc.d.ts +40 -0
  117. package/dist/mcp/jsonrpc.js +175 -0
  118. package/dist/mcp/jsonrpc.js.map +1 -0
  119. package/dist/mcp/manager.d.ts +36 -0
  120. package/dist/mcp/manager.js +300 -0
  121. package/dist/mcp/manager.js.map +1 -0
  122. package/dist/mcp/mentions.d.ts +9 -0
  123. package/dist/mcp/mentions.js +44 -0
  124. package/dist/mcp/mentions.js.map +1 -0
  125. package/dist/mcp/names.d.ts +15 -0
  126. package/dist/mcp/names.js +59 -0
  127. package/dist/mcp/names.js.map +1 -0
  128. package/dist/mcp/results.d.ts +6 -0
  129. package/dist/mcp/results.js +182 -0
  130. package/dist/mcp/results.js.map +1 -0
  131. package/dist/mcp/runtime.d.ts +107 -0
  132. package/dist/mcp/runtime.js +505 -0
  133. package/dist/mcp/runtime.js.map +1 -0
  134. package/dist/mcp/substitution.d.ts +13 -0
  135. package/dist/mcp/substitution.js +74 -0
  136. package/dist/mcp/substitution.js.map +1 -0
  137. package/dist/mcp/transport-http.d.ts +53 -0
  138. package/dist/mcp/transport-http.js +433 -0
  139. package/dist/mcp/transport-http.js.map +1 -0
  140. package/dist/mcp/transport-stdio.d.ts +39 -0
  141. package/dist/mcp/transport-stdio.js +268 -0
  142. package/dist/mcp/transport-stdio.js.map +1 -0
  143. package/dist/mcp/transport.d.ts +20 -0
  144. package/dist/mcp/transport.js +44 -0
  145. package/dist/mcp/transport.js.map +1 -0
  146. package/dist/mcp/types.d.ts +179 -0
  147. package/dist/mcp/types.js +30 -0
  148. package/dist/mcp/types.js.map +1 -0
  149. package/dist/mcp/validation.d.ts +16 -0
  150. package/dist/mcp/validation.js +222 -0
  151. package/dist/mcp/validation.js.map +1 -0
  152. package/dist/modes/agent.d.ts +2 -0
  153. package/dist/modes/agent.js.map +1 -1
  154. package/dist/noninteractive/start-noninteractive.js +4 -0
  155. package/dist/noninteractive/start-noninteractive.js.map +1 -1
  156. package/dist/prompts/embedded.js +2 -2
  157. package/dist/prompts/embedded.js.map +1 -1
  158. package/dist/prompts/index.d.ts +3 -0
  159. package/dist/prompts/index.js +70 -55
  160. package/dist/prompts/index.js.map +1 -1
  161. package/dist/prompts/system.agent.md +34 -10
  162. package/dist/prompts/system.ask.md +8 -0
  163. package/dist/safety/classifier.js +4 -0
  164. package/dist/safety/classifier.js.map +1 -1
  165. package/dist/session-runtime/binding.d.ts +5 -0
  166. package/dist/session-runtime/binding.js +28 -0
  167. package/dist/session-runtime/binding.js.map +1 -0
  168. package/dist/session-runtime/child-bridge.d.ts +31 -0
  169. package/dist/session-runtime/child-bridge.js +169 -0
  170. package/dist/session-runtime/child-bridge.js.map +1 -0
  171. package/dist/session-runtime/client.d.ts +8 -0
  172. package/dist/session-runtime/client.js +448 -0
  173. package/dist/session-runtime/client.js.map +1 -0
  174. package/dist/session-runtime/discovery.d.ts +6 -0
  175. package/dist/session-runtime/discovery.js +100 -0
  176. package/dist/session-runtime/discovery.js.map +1 -0
  177. package/dist/session-runtime/host.d.ts +77 -0
  178. package/dist/session-runtime/host.js +758 -0
  179. package/dist/session-runtime/host.js.map +1 -0
  180. package/dist/session-runtime/launch.d.ts +11 -0
  181. package/dist/session-runtime/launch.js +68 -0
  182. package/dist/session-runtime/launch.js.map +1 -0
  183. package/dist/session-runtime/paths.d.ts +8 -0
  184. package/dist/session-runtime/paths.js +92 -0
  185. package/dist/session-runtime/paths.js.map +1 -0
  186. package/dist/session-runtime/protocol.d.ts +22 -0
  187. package/dist/session-runtime/protocol.js +149 -0
  188. package/dist/session-runtime/protocol.js.map +1 -0
  189. package/dist/session-runtime/replay-buffer.d.ts +12 -0
  190. package/dist/session-runtime/replay-buffer.js +50 -0
  191. package/dist/session-runtime/replay-buffer.js.map +1 -0
  192. package/dist/session-runtime/store.d.ts +14 -0
  193. package/dist/session-runtime/store.js +143 -0
  194. package/dist/session-runtime/store.js.map +1 -0
  195. package/dist/session-runtime/types.d.ts +102 -0
  196. package/dist/session-runtime/types.js +2 -0
  197. package/dist/session-runtime/types.js.map +1 -0
  198. package/dist/store/logs.js +17 -6
  199. package/dist/store/logs.js.map +1 -1
  200. package/dist/store/plan.d.ts +2 -0
  201. package/dist/store/plan.js.map +1 -1
  202. package/dist/store/session-workspace.js +2 -1
  203. package/dist/store/session-workspace.js.map +1 -1
  204. package/dist/tools/definitions.js +18 -0
  205. package/dist/tools/definitions.js.map +1 -1
  206. package/dist/tools/external-tools.d.ts +30 -0
  207. package/dist/tools/external-tools.js +52 -0
  208. package/dist/tools/external-tools.js.map +1 -0
  209. package/dist/tools/registry.js +36 -5
  210. package/dist/tools/registry.js.map +1 -1
  211. package/dist/tui-v2/bootstrap/start-tui-v2.d.ts +1 -0
  212. package/dist/tui-v2/bootstrap/start-tui-v2.js +16 -0
  213. package/dist/tui-v2/bootstrap/start-tui-v2.js.map +1 -1
  214. package/dist/tui-v2/components/completion/completion-menu.d.ts +4 -6
  215. package/dist/tui-v2/components/completion/completion-menu.js +34 -16
  216. package/dist/tui-v2/components/completion/completion-menu.js.map +1 -1
  217. package/dist/tui-v2/components/composer/composer-input-box.js +3 -1
  218. package/dist/tui-v2/components/composer/composer-input-box.js.map +1 -1
  219. package/dist/tui-v2/components/modal/secret-modal.js +6 -4
  220. package/dist/tui-v2/components/modal/secret-modal.js.map +1 -1
  221. package/dist/tui-v2/components/modal/text-editor-modal.d.ts +19 -0
  222. package/dist/tui-v2/components/modal/text-editor-modal.js +85 -0
  223. package/dist/tui-v2/components/modal/text-editor-modal.js.map +1 -0
  224. package/dist/tui-v2/components/overlay/overlay-host.js +2 -1
  225. package/dist/tui-v2/components/overlay/overlay-host.js.map +1 -1
  226. package/dist/tui-v2/components/transcript/compacted-row.js +12 -3
  227. package/dist/tui-v2/components/transcript/compacted-row.js.map +1 -1
  228. package/dist/tui-v2/components/transcript/thinking-block.d.ts +9 -1
  229. package/dist/tui-v2/components/transcript/thinking-block.js +253 -49
  230. package/dist/tui-v2/components/transcript/thinking-block.js.map +1 -1
  231. package/dist/tui-v2/components/transcript/thinking-presentation.d.ts +46 -0
  232. package/dist/tui-v2/components/transcript/thinking-presentation.js +84 -0
  233. package/dist/tui-v2/components/transcript/thinking-presentation.js.map +1 -0
  234. package/dist/tui-v2/components/transcript/transcript-row.d.ts +2 -0
  235. package/dist/tui-v2/components/transcript/transcript-row.js +7 -2
  236. package/dist/tui-v2/components/transcript/transcript-row.js.map +1 -1
  237. package/dist/tui-v2/components/transcript/transcript-view.js +195 -83
  238. package/dist/tui-v2/components/transcript/transcript-view.js.map +1 -1
  239. package/dist/tui-v2/composer/composer-editor.js +54 -39
  240. package/dist/tui-v2/composer/composer-editor.js.map +1 -1
  241. package/dist/tui-v2/composer/composer-highlight.d.ts +20 -0
  242. package/dist/tui-v2/composer/composer-highlight.js +97 -0
  243. package/dist/tui-v2/composer/composer-highlight.js.map +1 -0
  244. package/dist/tui-v2/composer/textarea-keybindings.d.ts +5 -0
  245. package/dist/tui-v2/composer/textarea-keybindings.js +12 -0
  246. package/dist/tui-v2/composer/textarea-keybindings.js.map +1 -1
  247. package/dist/ui/mentions.js +4 -1
  248. package/dist/ui/mentions.js.map +1 -1
  249. package/dist/ui-core/actions/action-id.d.ts +1 -1
  250. package/dist/ui-core/actions/action-id.js +1 -0
  251. package/dist/ui-core/actions/action-id.js.map +1 -1
  252. package/dist/ui-core/actions/format-shortcuts.js +5 -0
  253. package/dist/ui-core/actions/format-shortcuts.js.map +1 -1
  254. package/dist/ui-core/actions/keymap.js +3 -0
  255. package/dist/ui-core/actions/keymap.js.map +1 -1
  256. package/dist/ui-core/bootstrap/composition-root.d.ts +7 -0
  257. package/dist/ui-core/bootstrap/composition-root.js +7 -1
  258. package/dist/ui-core/bootstrap/composition-root.js.map +1 -1
  259. package/dist/ui-core/commands/command-handlers.js +5 -2
  260. package/dist/ui-core/commands/command-handlers.js.map +1 -1
  261. package/dist/ui-core/commands/config-commands.d.ts +1 -0
  262. package/dist/ui-core/commands/config-commands.js +6 -0
  263. package/dist/ui-core/commands/config-commands.js.map +1 -1
  264. package/dist/ui-core/commands/mcp-commands.d.ts +3 -0
  265. package/dist/ui-core/commands/mcp-commands.js +310 -0
  266. package/dist/ui-core/commands/mcp-commands.js.map +1 -0
  267. package/dist/ui-core/commands/picker-commands.d.ts +1 -1
  268. package/dist/ui-core/commands/picker-commands.js +70 -27
  269. package/dist/ui-core/commands/picker-commands.js.map +1 -1
  270. package/dist/ui-core/commands/session-commands.js +1 -0
  271. package/dist/ui-core/commands/session-commands.js.map +1 -1
  272. package/dist/ui-core/composer/completion-viewport.d.ts +40 -0
  273. package/dist/ui-core/composer/completion-viewport.js +105 -0
  274. package/dist/ui-core/composer/completion-viewport.js.map +1 -0
  275. package/dist/ui-core/controllers/overlay-controller.d.ts +24 -3
  276. package/dist/ui-core/controllers/overlay-controller.js +35 -4
  277. package/dist/ui-core/controllers/overlay-controller.js.map +1 -1
  278. package/dist/ui-core/rendering/artifact-pager-source.d.ts +1 -0
  279. package/dist/ui-core/rendering/artifact-pager-source.js +67 -1
  280. package/dist/ui-core/rendering/artifact-pager-source.js.map +1 -1
  281. package/dist/ui-core/rendering/duration.d.ts +3 -1
  282. package/dist/ui-core/rendering/duration.js +14 -0
  283. package/dist/ui-core/rendering/duration.js.map +1 -1
  284. package/dist/ui-core/rendering/exit-summary.js +4 -4
  285. package/dist/ui-core/rendering/format-help.js +4 -0
  286. package/dist/ui-core/rendering/format-help.js.map +1 -1
  287. package/dist/ui-core/rendering/intro-header.js +4 -4
  288. package/dist/ui-core/rendering/open-tool-output.js +90 -32
  289. package/dist/ui-core/rendering/open-tool-output.js.map +1 -1
  290. package/dist/ui-core/rendering/theme.d.ts +5 -3
  291. package/dist/ui-core/rendering/theme.js +8 -4
  292. package/dist/ui-core/rendering/theme.js.map +1 -1
  293. package/dist/ui-core/rendering/wordmark.d.ts +2 -2
  294. package/dist/ui-core/rendering/wordmark.js +62 -62
  295. package/dist/ui-core/rendering/wordmark.js.map +1 -1
  296. package/dist/ui-core/state/thinking-copy.d.ts +13 -0
  297. package/dist/ui-core/state/thinking-copy.js +33 -0
  298. package/dist/ui-core/state/thinking-copy.js.map +1 -0
  299. package/dist/ui-core/state/transcript-hydrate.js +20 -0
  300. package/dist/ui-core/state/transcript-hydrate.js.map +1 -1
  301. package/dist/ui-core/state/transcript-reducer.js +140 -62
  302. package/dist/ui-core/state/transcript-reducer.js.map +1 -1
  303. package/dist/ui-core/state/transcript-store.d.ts +10 -0
  304. package/dist/ui-core/state/transcript-store.js +235 -31
  305. package/dist/ui-core/state/transcript-store.js.map +1 -1
  306. package/dist/ui-core/state/transcript-types.d.ts +10 -0
  307. package/dist/ui-core/state/transcript-types.js +1 -0
  308. package/dist/ui-core/state/transcript-types.js.map +1 -1
  309. package/dist/ui-core/state/transcript-window.d.ts +32 -0
  310. package/dist/ui-core/state/transcript-window.js +63 -0
  311. package/dist/ui-core/state/transcript-window.js.map +1 -0
  312. package/dist/version.generated.d.ts +2 -2
  313. package/dist/version.generated.js +2 -2
  314. package/dist/version.generated.js.map +1 -1
  315. package/package.json +1 -1
  316. package/dist/tui-v2/composer/skill-highlight.d.ts +0 -3
  317. package/dist/tui-v2/composer/skill-highlight.js +0 -63
  318. package/dist/tui-v2/composer/skill-highlight.js.map +0 -1
package/README.md CHANGED
@@ -19,8 +19,10 @@ Two things make it practical for everyday use:
19
19
  - **Scope-based pentesting.** Opt-in engagement scope with authorized/excluded targets, allowed phases, rate and concurrency ceilings, redirect and DNS-rebinding escape detection, and out-of-scope flagging — designed for authorized pentests and bug-bounty programs.
20
20
  - **Real building & debugging.** Scaffolds apps, edits code surgically, installs packages, runs builds/tests, starts dev servers as background jobs, and probes them before reporting success.
21
21
  - **Durable plans.** `plan.create` / `task.update` drive a live checklist that survives context compaction and reloads with `/history` — the agent works task-by-task and won't fake completion.
22
+ - **Durable agent sessions.** Interactive sessions run behind an authenticated local PTY broker, so an agent keeps working after `/minimise`, an SSH disconnect, or switching to another history session; `clai --resume <id>` reattaches to the same live UI and output stream.
22
23
  - **Persistent interactive terminals.** Conversation-owned PTY or pipe sessions keep REPLs such as Python, Metasploit, Meterpreter, database consoles, and debuggers open across model turns. The agent can send follow-up input, read incremental output, resize, interrupt, and close them without losing state.
23
24
  - **Native + text tool calling.** Uses provider-native function calling where available, with a text-fence fallback (`toolCalling: auto|native|text`).
25
+ - **MCP, explicitly controlled.** Discovers local stdio and remote HTTP/SSE servers from project and compatible inherited configs. MCP tools are off by default; `/mcp` inspects and adds servers, and picking one drops an editable `@mcp:<server>` token into your prompt — stack as many as you need, delete one with backspace, or switch the whole session on with `/mcp all`.
24
26
  - **Safety gate you control.** Every action is classified safe / confirm / block; deletes always confirm with a preview; destructive patterns are blocked.
25
27
 
26
28
  ---
@@ -435,7 +437,7 @@ You own authorization; clai still gates risk on every action:
435
437
 
436
438
  ## Terminal UI
437
439
 
438
- The old line REPL has been removed — there are only full surfaces now. An OpenTUI full-screen console is selected for a sufficiently large interactive POSIX terminal. The classic Ink UI is selected on Windows, on smaller terminals, or with `--classic`; non-TTY prompts use the noninteractive stream renderer. In the classic UI, mouse reporting is on by default so wheel swipes scroll the live tail and panels instead of being misread as prompt-history keys; native text selection stays one modifier away (Shift/Option/Fn), and `CLAI_CLASSIC_MOUSE=0` turns mouse reporting off. The interactive surfaces provide streaming chat, nested tool cards (including `tool.batch` sub-calls), file diffs, a live plan pane, pickers, history, and secure masked key prompts.
440
+ The old line REPL has been removed — there are only full surfaces now. An OpenTUI full-screen console is selected for a sufficiently large interactive POSIX terminal. The classic Ink UI is selected on Windows, on smaller terminals, or with `--classic`; non-TTY prompts use the noninteractive stream renderer. In the classic UI, mouse reporting is on by default so wheel swipes scroll the live tail and panels instead of being misread as prompt-history keys; native text selection stays one modifier away (Shift/Option/Fn), and `CLAI_CLASSIC_MOUSE=0` turns mouse reporting off. The interactive surfaces provide streaming chat, nested tool cards (including `tool.batch` sub-calls), file diffs, a live plan pane, pickers, history, and secure masked key prompts. MCP tools stay off by default; picking a server with `/mcp` inserts an aqua `@mcp:<server>` token into the prompt you are typing — several tokens can coexist, backspace deletes one like any other text, and `all` / `off` add no token. MCP counts never appear in status bars.
439
441
 
440
442
  | Action | Key |
441
443
  |--------|-----|
@@ -446,15 +448,38 @@ The old line REPL has been removed — there are only full surfaces now. An Open
446
448
  | Plan pane / plan detail | `Ctrl+H` / `Ctrl+P` |
447
449
  | Background jobs | `Ctrl+J` |
448
450
  | Expand thinking / tool output | `Ctrl+T` / `Ctrl+O` |
451
+ | Copy the focused thinking block | `c` |
449
452
  | Search transcript | `Ctrl+R` |
450
453
  | Copy selection | `Ctrl+Shift+C` |
451
454
  | Commands / file mentions | `/` · `@` |
452
- | Help / shortcuts | `Ctrl+G` |
455
+ | MCP servers / project config | `/mcp` |
456
+ | Command help / shortcut reference | `Ctrl+G` / `/shortcuts` |
457
+
458
+ Completed thinking collapses to one clickable `✦ Thought for 3.2s` line; clicking it (or `Ctrl+T`) opens the reasoning in a card that scrolls internally when the reasoning is long. Clicking a card focuses it — the border turns violet and the wheel scrolls that card instead of the chat, even at its first and last row — while an unfocused card dims, shows `click to focus`, and leaves the wheel to the transcript. Moving the pointer out or clicking elsewhere releases it, and `c` copies the focused block's full reasoning and then releases it.
453
459
 
454
460
  Tool cards show the command/input clearly, with a live elapsed timer next to the command name while they run (the final duration stays visible afterwards), and keep long scan tails in an expandable OUTPUT pager (search, copy, export). File writes show a diff preview. When the agent finishes each prompt — naturally or aborted — a `✻ Worked for 1m16s` row is appended under the response, and it is restored when the session is resumed from `/history`. The status line names what the agent is actually doing right now — `responding` while streaming, `compacting` during auto or manual context compaction — instead of holding the last tool name. Prompts typed while the agent is busy are queued and run automatically in order once the turn settles; the queue pauses only when the previous turn was cancelled, errored, or stopped by the loop guard. Compaction cards preserve session memory without dropping the plan, and `/history` restores full sessions — prompts, tool results, and the matching plan — even after an abort or autosave.
455
461
 
456
462
  On exit, both interactive surfaces leave the alternate screen and print a sign-off card on the normal terminal: the wordmark beside a labelled block — session title, folder, elapsed time and message count, reasoning/cache token notes, and the command that reopens the session — followed by the same per-provider/model token table `/usage` shows. Resuming is `clai --resume <id>` (a unique id prefix is enough, and `-c/--continue` picks the newest session for the current directory). Sessions that were never persisted (`--no-history`, private mode, or nothing sent) say so instead of offering a resume command. The card is borderless and reflows down to very narrow terminals: the wordmark drops from six rows to four, then the block stacks beneath it, and labels give way before the resume command is ever shortened.
457
463
 
464
+ ### Background sessions, minimise, and SSH reattach
465
+
466
+ Normal persistent interactive launches use a per-session local PTY broker. The UI and agent run inside that broker-owned terminal, while the shell process you interact with is a disposable client. This keeps the exact same live UI, pending confirmation, queue, tools, MCP connections, and terminal subprocesses alive when the client goes away.
467
+
468
+ - `/minimise` (also `/minimize`) detaches immediately and returns the shell prompt without cancelling the current turn. It prints the session id and the exact `clai --resume <id>` command.
469
+ - An SSH or terminal disconnect has the same detach behavior. SSH into the VM again as the same OS user and run `clai --resume <id>`; `clai -c` prefers the newest live session in the current directory.
470
+ - `/history` marks running, attached, and detached sessions. Selecting another session attaches or starts its own runtime instead of loading over a running agent, so the outgoing agent continues independently.
471
+ - One terminal controls a session at a time. Attaching from another terminal safely transfers control and releases the old terminal; this prevents duplicate keystrokes while still allowing cross-computer SSH takeover.
472
+ - The broker stores only bounded terminal replay (2 MiB), uses an authenticated user-only Unix socket or Windows named pipe, and keeps runtime metadata/locks user-readable only. It never opens a TCP port.
473
+ - A detached runtime stays alive while a turn, compaction, queued prompt, or responder job is active. Once truly idle and detached, it exits after 30 minutes by default; the saved session still resumes normally without keeping idle processes forever.
474
+ - `--no-history`, private mode, non-TTY/one-shot runs, and systems without a usable PTY retain the existing direct foreground behavior. `/minimise` reports that background detach is unavailable instead of partially detaching.
475
+
476
+ Optional controls:
477
+
478
+ ```sh
479
+ CLAI_SESSION_RUNTIME_IDLE_MS=1800000 # detached idle lifetime (1 minute–24 hours)
480
+ CLAI_DISABLE_SESSION_RUNTIME=1 # force legacy direct foreground ownership
481
+ ```
482
+
458
483
  ---
459
484
 
460
485
  ## Slash commands
@@ -468,6 +493,7 @@ On exit, both interactive surfaces leave the alternate screen and print a sign-o
468
493
  | `/effort [level]` · `/reasoning [level]` | Thinking / reasoning effort |
469
494
  | `/freeonly [on\|off]` · `/fallback [on\|off]` | Free-only filter · cross-provider fallback |
470
495
  | `/search [provider]` · `/search-provider` | Choose web-search backend |
496
+ | `/mcp [server\|all\|off\|list\|status\|tools\|locations\|refresh]` | Browse and select MCP servers; add/reconnect servers and inspect project/inherited configuration |
471
497
  | `/scope [show\|add\|new\|clear]` | Engagement scope |
472
498
  | `/output [last\|id\|list]` | Open full tool output (also `Ctrl+O`) |
473
499
  | `/jobs` | Background jobs (also `Ctrl+J`) |
@@ -477,6 +503,7 @@ On exit, both interactive surfaces leave the alternate screen and print a sign-o
477
503
  | `/cwd <path>` | Change working directory |
478
504
  | `/think` · `/thinking` | Show thinking from the last response |
479
505
  | `/privacy [...]` | Private mode · clear history/logs/artifacts |
506
+ | `/minimise` · `/minimize` | Detach this terminal while the live session continues in the background |
480
507
  | `/update` · `/help` · `/shortcuts` · `/exit` | Housekeeping |
481
508
 
482
509
  ---
@@ -490,7 +517,7 @@ clai [prompt...] # interactive UI, or one-shot with a prom
490
517
  --show-thinking --verbose --quiet # one-shot stream controls
491
518
  --tui --classic
492
519
  --ui <tui|v2|opentui|classic|legacy|ink> # aliases; ignored with a prompt
493
- --resume <sessionId> -c/--continue # reopen a saved session; ignored with a prompt
520
+ --resume <sessionId> -c/--continue # reattach live or reopen saved session; ignored with a prompt
494
521
 
495
522
  clai set <provider> [key] # --from-env <VAR> | --stdin | --url <url> (repeatable) | --skip-ping
496
523
  clai unset <provider> # remove all keys for a provider (--url = endpoint URLs instead)
@@ -524,6 +551,65 @@ enabled with `CLAI_SHOW_THINKING=1`.
524
551
 
525
552
  ---
526
553
 
554
+ ## Model Context Protocol (MCP)
555
+
556
+ clai can discover and call tools from local or remote MCP servers. MCP tools are **off by default** and are not sent to the model until a prompt mentions a server or the session is switched on with `/mcp all`. Run `/mcp` to discover configured servers and open the shared picker in Classic or OpenTUI. Picking a server inserts an aqua `@mcp:<server>` token into the composer text, exactly like a `skill:` mention: it is ordinary editable text, so backspace removes it, and several tokens select several servers for that prompt. `all` and `off` insert no token.
557
+
558
+ ### Project configuration
559
+
560
+ The native project file is `.clai/mcp.json`. It accepts JSON or JSONC and the common `servers` / `mcpServers` shapes. A minimal configuration can mix stdio and Streamable HTTP servers:
561
+
562
+ ```json
563
+ {
564
+ "servers": {
565
+ "local": {
566
+ "command": "my-mcp-server",
567
+ "args": ["--root", "${workspaceFolder}"],
568
+ "env": {
569
+ "MCP_TOKEN": "${env:MCP_TOKEN}"
570
+ }
571
+ },
572
+ "remote": {
573
+ "url": "https://mcp.example.com/mcp",
574
+ "headers": {
575
+ "Authorization": "Bearer ${env:MCP_TOKEN}"
576
+ }
577
+ }
578
+ }
579
+ }
580
+ ```
581
+
582
+ A `command` entry uses stdio. A `url` entry uses Streamable HTTP by default; set `"type": "sse"` for a legacy SSE endpoint. `${workspaceFolder}`, `${env:NAME}` / `${env.NAME}`, and compatible `${input:name}` substitutions are resolved at discovery time, and resolved secret values are redacted from diagnostics.
583
+
584
+ The picker can add one server without hand-editing the file: choose **+ add MCP server** and a full multiline editor opens — visible caret, arrow-key and word/line navigation, mid-text edits, selection, and multi-line paste. `Enter` inserts a newline, `Ctrl+S` saves, `Esc` cancels. If the JSON does not validate, the editor reopens with your text intact and the parse error in the header, so a long paste is never retyped. You can also supply the fragment inline:
585
+
586
+ ```text
587
+ /mcp add {"name":"docs","command":"docs-server","args":[]}
588
+ ```
589
+
590
+ The add flow accepts one named object or a one-entry `servers` / `mcpServers` fragment, validates it, then atomically merges it into the current project `.clai/mcp.json` with deterministic server ordering and restrictive permissions. Existing unrelated metadata is preserved.
591
+
592
+ clai also inherits compatible configuration from `CLAI_MCP_CONFIG` (an OS-delimited file list), ancestor `.clai/mcp.json` and `.mcp.json` files, repository `.github/mcp.json` and `.vscode/mcp.json`, clai user config, and supported Copilot, Claude, and VS Code user locations. Higher-precedence definitions deterministically shadow inherited servers with the same name. `/mcp locations` shows the exact project target and inherited paths for the current workspace.
593
+
594
+ ### Select and inspect servers
595
+
596
+ ```text
597
+ /mcp # picker: add, off, all, or one server
598
+ /mcp docs # drop @mcp:docs into the prompt (repeat for more servers)
599
+ /mcp all # expose tools from every live server
600
+ /mcp off # default: expose no MCP tools
601
+ /mcp list # sources, transports, state, selection, and catalog
602
+ /mcp status # live, failed, and invalid server details
603
+ /mcp tools [server] # canonical mcp.<server>.<tool> names
604
+ /mcp locations # project and inherited configuration paths
605
+ /mcp refresh # rediscover configs and live tools
606
+ /mcp reconnect docs # restart one server connection
607
+ ```
608
+
609
+ Static built-in tools always remain first; selected MCP definitions are appended in deterministic order as `mcp.<server>.<tool>`. A tool explicitly annotated read-only can run under the normal safe/parallel policy. Unmarked, mutating, or destructive MCP tools require the usual confirmation, and ask mode exposes only safe tools. Server descriptions and results are treated as untrusted data, secrets are redacted, response sizes and lifecycles are bounded, and HTTP credentials are never forwarded through redirects.
610
+
611
+ ---
612
+
527
613
  ## Built-in tools
528
614
 
529
615
  | Group | Tools |
@@ -575,7 +661,7 @@ Search-provider keys are multi-key and rotate just like model providers.
575
661
 
576
662
  ## Per-project context
577
663
 
578
- Drop a `.clai/context.md` in a repo and its contents are injected every turn — lab topology, in-scope hosts, stack assumptions, coding conventions, or anything the agent should always know for that project.
664
+ Drop a `.clai/context.md` in a repo and its contents are injected every turn — lab topology, in-scope hosts, stack assumptions, coding conventions, or anything the agent should always know for that project. Project-scoped MCP servers belong in `.clai/mcp.json`; use `/mcp locations` to see that target plus every inherited compatible source.
579
665
 
580
666
  ---
581
667
 
@@ -647,6 +733,7 @@ clai/
647
733
  │ ├─ index.ts # CLI entry + subcommands
648
734
  │ ├─ agent/ # loop, plans, compaction, resume orientation, tool parsing
649
735
  │ ├─ llm/ # 18 providers, streaming, native tools, key rotation + fallback
736
+ │ ├─ mcp/ # discovery, validation, transports, lifecycle, and tool dispatch
650
737
  │ ├─ tools/ # fs, shell, net, http, web, pentest, batch, plan
651
738
  │ ├─ safety/ # risk classifier + engagement (scope) policy
652
739
  │ ├─ store/ # config, history, keys, plans, scope
@@ -30,11 +30,9 @@ export interface CompactionSummaryExecution {
30
30
  readonly onToken?: ((text: string, replace?: boolean) => void) | undefined;
31
31
  }
32
32
  /**
33
- * The cache-preserving compaction request: the exact messages of the last
34
- * successful turn request, any history messages appended since, then the
35
- * compaction instruction as the final user turn. The previous prompt is a
36
- * strict prefix of this request, so APC providers serve it entirely from
37
- * cache and only the tail + instruction bill as fresh input.
33
+ * Cache-preserving compaction history: the last successful request's text and
34
+ * protocol timeline, any appended history, then the compaction instruction.
35
+ * Binary image payloads are deliberately omitted from this text operation.
38
36
  */
39
37
  export declare function buildCompactionReplayMessages(baseRequest: SuccessfulRequestSnapshot, history: readonly ChatMessage[], userPrompt: string): ChatMessage[];
40
38
  export interface CompactionReplayPlan {
@@ -18,6 +18,128 @@ const COMPACTION_ERROR_RETRY_DELAY_MS = 1_500;
18
18
  * summary runs, so the plan must leave room for them.
19
19
  */
20
20
  const REPLAY_PLAN_SLACK_TOKENS = 4_096;
21
+ const COMPACTION_THINKING = {
22
+ enabled: false,
23
+ effort: "low",
24
+ };
25
+ function cloneTextOnlyMessage(message) {
26
+ const clone = structuredClone(message);
27
+ delete clone.images;
28
+ return clone;
29
+ }
30
+ function cloneCompatibilityMessage(message) {
31
+ const clone = cloneTextOnlyMessage(message);
32
+ delete clone.reasoningBlock;
33
+ delete clone.reasoningArtifacts;
34
+ return clone;
35
+ }
36
+ function errorStatus(error) {
37
+ if (!error || typeof error !== "object" || !("status" in error)) {
38
+ return undefined;
39
+ }
40
+ const status = Number(error.status);
41
+ return Number.isFinite(status) ? status : undefined;
42
+ }
43
+ function errorText(error) {
44
+ const message = error instanceof Error ? error.message : String(error);
45
+ const body = error && typeof error === "object" && "body" in error
46
+ ? String(error.body ?? "")
47
+ : "";
48
+ return `${message}\n${body}`.trim();
49
+ }
50
+ function isRequestShapeRejection(error, signal) {
51
+ if (streamAlreadyEmitted(error) || isAbortError(error, signal))
52
+ return false;
53
+ const status = errorStatus(error);
54
+ if (status !== 400 && status !== 422)
55
+ return false;
56
+ const text = errorText(error);
57
+ return !/context length|maximum context|context window|prompt too long|too many tokens|model (?:is )?not found|unknown model|content policy|safety policy|moderation|unauthori[sz]ed|api key/i.test(text);
58
+ }
59
+ const REJECTABLE_WIRE_FIELDS = [
60
+ "chat_template_kwargs",
61
+ "enable_thinking",
62
+ "reasoning_effort",
63
+ "reasoning_budget",
64
+ "reasoning_content",
65
+ "parallel_tool_calls",
66
+ "tool_choice",
67
+ "stream_options",
68
+ "max_completion_tokens",
69
+ "max_tokens",
70
+ "temperature",
71
+ "top_p",
72
+ "image_url",
73
+ "images",
74
+ "tools",
75
+ "thinking",
76
+ "reasoning",
77
+ ];
78
+ function rejectedWireField(error) {
79
+ const text = errorText(error)
80
+ .toLowerCase()
81
+ .replace(/\(e\.g\.\s*images? on a text-only model\)/g, "");
82
+ const rejection = "not support|unsupported|unknown|unrecognized|not allowed|does not accept|extra inputs are not permitted|invalid(?: request)?(?: argument| parameter| field| value)?";
83
+ for (const field of REJECTABLE_WIRE_FIELDS) {
84
+ const escaped = field.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
85
+ if (new RegExp(`(?:${escaped}).{0,80}(?:${rejection})`, "i").test(text) ||
86
+ new RegExp(`(?:${rejection}).{0,80}(?:${escaped})`, "i").test(text)) {
87
+ return field;
88
+ }
89
+ }
90
+ return undefined;
91
+ }
92
+ function compactionCompatibilityRequest(request) {
93
+ const removed = [];
94
+ if (request.thinking !== undefined || request.forceReasoningReplay) {
95
+ removed.push("reasoning controls");
96
+ }
97
+ if (request.tools?.length ||
98
+ request.toolChoice !== undefined ||
99
+ request.parallelToolCalls !== undefined) {
100
+ removed.push("tool controls");
101
+ }
102
+ let removedArtifacts = false;
103
+ const messages = request.messages.map((message) => {
104
+ if (message.reasoningBlock || message.reasoningArtifacts?.length) {
105
+ removedArtifacts = true;
106
+ }
107
+ return cloneCompatibilityMessage(message);
108
+ });
109
+ if (removedArtifacts)
110
+ removed.push("reasoning replay artifacts");
111
+ if (removed.length === 0)
112
+ return undefined;
113
+ const { thinking: _thinking, forceReasoningReplay: _forceReasoningReplay, tools: _tools, toolChoice: _toolChoice, parallelToolCalls: _parallelToolCalls, ...rest } = request;
114
+ return {
115
+ request: {
116
+ ...rest,
117
+ messages,
118
+ },
119
+ removed,
120
+ };
121
+ }
122
+ function requestRejectionError(input) {
123
+ const field = rejectedWireField(input.error);
124
+ const upstream = errorText(input.error).replace(/\s+/g, " ").trim();
125
+ const cappedUpstream = upstream.length > 600 ? `${upstream.slice(0, 600)}…` : upstream;
126
+ const retry = input.retried
127
+ ? ` after one compatibility retry${input.removed?.length ? ` without ${input.removed.join(", ")}` : ""}`
128
+ : "";
129
+ const diagnosis = field
130
+ ? `The provider identified \`${field}\` as the rejected field.`
131
+ : "No image payload was sent, and the provider did not identify which request field was invalid; any image example in its generic message is not evidence that this request contained an image.";
132
+ const wrapped = new Error(`compaction failed: the provider rejected the text-only summary request${retry}. ${diagnosis} The original context was retained.${cappedUpstream ? ` Provider response: ${cappedUpstream}` : ""}`, { cause: input.error });
133
+ const status = errorStatus(input.error);
134
+ if (status !== undefined) {
135
+ Object.defineProperty(wrapped, "status", {
136
+ configurable: true,
137
+ enumerable: true,
138
+ value: status,
139
+ });
140
+ }
141
+ return wrapped;
142
+ }
21
143
  /**
22
144
  * A compaction failure worth one more admission. Retryable by default: the
23
145
  * only failures excluded are ones a retry cannot fix — aborts, partial streams
@@ -69,7 +191,7 @@ function comparableMessage(message) {
69
191
  const { images: _images, ...rest } = message;
70
192
  return JSON.stringify(rest);
71
193
  }
72
- function missingHistoryTail(requestMessages, history) {
194
+ function missingHistoryTail(requestMessages, history, textOnly = true) {
73
195
  let requestIndex = 0;
74
196
  let matchedHistory = 0;
75
197
  while (matchedHistory < history.length) {
@@ -86,18 +208,18 @@ function missingHistoryTail(requestMessages, history) {
86
208
  requestIndex = found + 1;
87
209
  matchedHistory += 1;
88
210
  }
89
- return history.slice(matchedHistory).map((message) => structuredClone(message));
211
+ return history
212
+ .slice(matchedHistory)
213
+ .map((message) => textOnly ? cloneTextOnlyMessage(message) : structuredClone(message));
90
214
  }
91
215
  /**
92
- * The cache-preserving compaction request: the exact messages of the last
93
- * successful turn request, any history messages appended since, then the
94
- * compaction instruction as the final user turn. The previous prompt is a
95
- * strict prefix of this request, so APC providers serve it entirely from
96
- * cache and only the tail + instruction bill as fresh input.
216
+ * Cache-preserving compaction history: the last successful request's text and
217
+ * protocol timeline, any appended history, then the compaction instruction.
218
+ * Binary image payloads are deliberately omitted from this text operation.
97
219
  */
98
220
  export function buildCompactionReplayMessages(baseRequest, history, userPrompt) {
99
221
  return [
100
- ...baseRequest.messages.map((message) => structuredClone(message)),
222
+ ...baseRequest.messages.map(cloneTextOnlyMessage),
101
223
  ...missingHistoryTail(baseRequest.messages, history),
102
224
  { role: "user", content: userPrompt },
103
225
  ];
@@ -133,12 +255,9 @@ export function planCompactionReplay(input) {
133
255
  }
134
256
  const continuationMessages = [
135
257
  ...baseRequest.messages.map((message) => structuredClone(message)),
136
- ...tail,
137
- ];
138
- const messages = [
139
- ...continuationMessages,
140
- { role: "user", content: input.prompt },
258
+ ...missingHistoryTail(baseRequest.messages, input.history, false),
141
259
  ];
260
+ const messages = buildCompactionReplayMessages(baseRequest, input.history, input.prompt);
142
261
  const account = (candidateMessages, compactionRequest) => accountAssembledRequest({
143
262
  provider: baseRequest.provider,
144
263
  model: baseRequest.model,
@@ -175,7 +294,7 @@ export async function executeCompactionSummary(execution) {
175
294
  }
176
295
  return execution.sourceMessages
177
296
  ? [
178
- ...execution.sourceMessages,
297
+ ...execution.sourceMessages.map(cloneTextOnlyMessage),
179
298
  { role: "user", content: userPrompt },
180
299
  ]
181
300
  : [
@@ -210,16 +329,13 @@ export async function executeCompactionSummary(execution) {
210
329
  }
211
330
  : {
212
331
  temperature: 0.1,
213
- // Disable reasoning for the compression pass. Use "low" (not "none"):
214
- // for openai-style gateways (TokenRouter etc.) `effort:"none"` maps to
215
- // the wire value `reasoning_effort:"none"`, which many models reject
216
- // ("reasoning option not supported"). "low" with enabled:false maps to
217
- // no reasoning knob on those gateways while still disabling default
218
- // thinking on deepseek-style models via their own mapping.
219
- thinking: { enabled: false, effort: "low" },
332
+ thinking: COMPACTION_THINKING,
220
333
  ...(execution.allowModelFallback ? { allowModelFallback: true } : {}),
221
334
  ...(execution.tools?.length
222
- ? { tools: execution.tools, toolChoice: "none" }
335
+ ? {
336
+ tools: execution.tools.map((tool) => structuredClone(tool)),
337
+ toolChoice: "none",
338
+ }
223
339
  : {}),
224
340
  }),
225
341
  ...(execution.signal ? { signal: execution.signal } : {}),
@@ -248,9 +364,6 @@ export async function executeCompactionSummary(execution) {
248
364
  }
249
365
  }
250
366
  const runProviderAttempt = async (attemptRequest, replace = false) => {
251
- // A pinned single dispatch is what makes the one-admission contract real:
252
- // without it the router can still rotate keys, fall back to another
253
- // provider, or retry a capability downgrade, each resending this prompt.
254
367
  const routerOptions = {
255
368
  maxRetries: 0,
256
369
  singleDispatch: true,
@@ -290,9 +403,7 @@ export async function executeCompactionSummary(execution) {
290
403
  signal?.addEventListener("abort", onAbort, { once: true });
291
404
  });
292
405
  };
293
- // One automatic retry after a transient failure: the replayed prefix is
294
- // cache-hot, so the second admission only re-bills the small fresh tail.
295
- const runAttempt = async (attemptRequest, replace = false) => {
406
+ const runTransientAttempt = async (attemptRequest, replace = false) => {
296
407
  try {
297
408
  return await runProviderAttempt(attemptRequest, replace);
298
409
  }
@@ -305,6 +416,32 @@ export async function executeCompactionSummary(execution) {
305
416
  return await runProviderAttempt(attemptRequest, replace);
306
417
  }
307
418
  };
419
+ const runAttempt = async (attemptRequest, replace = false) => {
420
+ try {
421
+ return await runTransientAttempt(attemptRequest, replace);
422
+ }
423
+ catch (error) {
424
+ if (!isRequestShapeRejection(error, execution.signal))
425
+ throw error;
426
+ const compatibility = compactionCompatibilityRequest(attemptRequest);
427
+ if (!compatibility) {
428
+ throw requestRejectionError({ error, retried: false });
429
+ }
430
+ try {
431
+ return await runTransientAttempt(compatibility.request);
432
+ }
433
+ catch (retryError) {
434
+ if (!isRequestShapeRejection(retryError, execution.signal)) {
435
+ throw retryError;
436
+ }
437
+ throw requestRejectionError({
438
+ error: retryError,
439
+ retried: true,
440
+ removed: compatibility.removed,
441
+ });
442
+ }
443
+ }
444
+ };
308
445
  const first = await runAttempt(request);
309
446
  if (first.toolCalls?.length) {
310
447
  throw new Error("compaction failed: model returned tool calls instead of a summary — original context retained");
@@ -1 +1 @@
1
- {"version":3,"file":"compaction-executor.js","sourceRoot":"","sources":["../../src/agent/compaction-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compaction-executor.js","sourceRoot":"","sources":["../../src/agent/compaction-executor.ts"],"names":[],"mappings":"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"}
@@ -84,15 +84,6 @@ export function chooseFinalizeRecovery(input) {
84
84
  cleaned.trim().length > 0) {
85
85
  return recoveryForFailedProbe();
86
86
  }
87
- if (input.buildLike &&
88
- !input.pentestLike &&
89
- !input.pentestSession &&
90
- input.sawFailedLocalHttpProbe &&
91
- !input.sawLocalHttpProbe &&
92
- budgetRemaining(recovery, "failedProbe") &&
93
- cleaned.trim().length > 0) {
94
- return recoveryForFailedProbe();
95
- }
96
87
  if ((input.pentestLike || input.pentestSession) &&
97
88
  budgetRemaining(recovery, "shallowPentest") &&
98
89
  looksLikeShallowPentestReport(cleaned, {
@@ -1 +1 @@
1
- {"version":3,"file":"finalize-gate.js","sourceRoot":"","sources":["../../src/agent/finalize-gate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,eAAe,EACf,6BAA6B,EAC7B,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,GAG1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oCAAoC,EACpC,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAqD/B,MAAM,UAAU,sBAAsB,CACpC,KAAwB;IAExB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAE1E,MAAM,YAAY,GAChB,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,eAAe,CAAC;QAC9C,CAAC,KAAK,CAAC,gBAAgB;QACvB,eAAe,KAAK,CAAC;QACrB,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,iBAAiB,GACrB,CAAC,KAAK,CAAC,qBAAqB;QAC5B,oCAAoC,CAAC,OAAO,CAAC,CAAC;IAEhD,MAAM,2BAA2B,GAC/B,eAAe,KAAK,CAAC;QACrB,YAAY;QACZ,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,iBAAiB,CAAC;YAChD,CAAC,KAAK,CAAC,kBAAkB,CAAC;QAC5B,CAAC,KAAK,CAAC,YAAY;YACjB,KAAK,CAAC,eAAe;YACrB,CAAC,KAAK,CAAC,cAAc,IAAI,iBAAiB,CAAC,CAAC;QAC9C,CAAC,KAAK,CAAC,YAAY,IAAI,iBAAiB,CAAC;QACzC,CAAC,KAAK,CAAC,aAAa,IAAI,iBAAiB,CAAC,CAAC;IAC7C,IACE,KAAK,CAAC,WAAW;QACjB,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QACzB,2BAA2B,EAC3B,CAAC;QACD,IAAI,MAAkC,CAAC;QACvC,IAAI,iBAAiB,IAAI,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC;YAC/D,MAAM,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC;QACpD,CAAC;aAAM,IACL,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;YACzC,KAAK,CAAC,eAAe;YACrB,KAAK,CAAC,YAAY,EAClB,CAAC;YACD,MAAM,GAAG,oBAAoB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAC5D,CAAC;aAAM,IACL,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;YACzC,KAAK,CAAC,eAAe,EACrB,CAAC;YACD,MAAM,GAAG,oBAAoB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAC1D,CAAC;aAAM,IACL,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;YACzC,KAAK,CAAC,iBAAiB,EACvB,CAAC;YACD,MAAM,GAAG,oBAAoB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;aAAM,IACL,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;YACzC,KAAK,CAAC,aAAa;YACnB,YAAY,EACZ,CAAC;YACD,MAAM,GAAG,oBAAoB,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;QACnE,CAAC;aAAM,IACL,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;YACzC,KAAK,CAAC,aAAa,EACnB,CAAC;YACD,MAAM,GAAG,oBAAoB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC;aAAM,IAAI,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,CAAC;YACrD,MAAM,GAAG,oBAAoB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IAED,IACE,KAAK,CAAC,UAAU;QAChB,CAAC,KAAK,CAAC,kBAAkB;QACzB,CAAC,KAAK,CAAC,kBAAkB;QACzB,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,EACtC,CAAC;QACD,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;YACpC,OAAO,sBAAsB,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,IACE,KAAK,CAAC,SAAS;QACf,CAAC,KAAK,CAAC,WAAW;QAClB,CAAC,KAAK,CAAC,cAAc;QACrB,KAAK,CAAC,YAAY;QAClB,KAAK,CAAC,aAAa;QACnB,CAAC,KAAK,CAAC,mBAAmB;QAC1B,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,uBAAuB,CAAC;QACtD,eAAe,GAAG,CAAC;QACnB,eAAe,CAAC,QAAQ,EAAE,aAAa,CAAC,EACxC,CAAC;QACD,OAAO,yBAAyB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACtD,CAAC;IAED,IACE,KAAK,CAAC,SAAS;QACf,CAAC,KAAK,CAAC,WAAW;QAClB,CAAC,KAAK,CAAC,cAAc;QACrB,KAAK,CAAC,uBAAuB;QAC7B,CAAC,KAAK,CAAC,iBAAiB;QACxB,eAAe,CAAC,QAAQ,EAAE,aAAa,CAAC;QACxC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EACzB,CAAC;QACD,OAAO,sBAAsB,EAAE,CAAC;IAClC,CAAC;IACD,IACE,KAAK,CAAC,SAAS;QACf,CAAC,KAAK,CAAC,WAAW;QAClB,CAAC,KAAK,CAAC,cAAc;QACrB,KAAK,CAAC,uBAAuB;QAC7B,CAAC,KAAK,CAAC,iBAAiB;QACxB,eAAe,CAAC,QAAQ,EAAE,aAAa,CAAC;QACxC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EACzB,CAAC;QACD,OAAO,sBAAsB,EAAE,CAAC;IAClC,CAAC;IAED,IACE,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,cAAc,CAAC;QAC3C,eAAe,CAAC,QAAQ,EAAE,gBAAgB,CAAC;QAC3C,6BAA6B,CAAC,OAAO,EAAE;YACrC,eAAe;YACf,aAAa,EAAE,KAAK,CAAC,oBAAoB;SAC1C,CAAC,EACF,CAAC;QACD,OAAO,yBAAyB,EAAE,CAAC;IACrC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"finalize-gate.js","sourceRoot":"","sources":["../../src/agent/finalize-gate.ts"],"names":[],"mappings":"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"}
@@ -47,11 +47,11 @@ export function planModeResearchReminder(opts) {
47
47
  ? "workspace/stack context, constraints, and architecture facts"
48
48
  : "context and discovery that will improve the plan";
49
49
  return (`\n\n[plan-mode reminder · step ${step}] ` +
50
- `This is only a reminder do NOT stop, limit, or cut research short because of this note. ` +
51
- `Continue and take as much time as you need. Do not miss important ${domain} by hurrying. ` +
52
- `Keep gathering until you honestly believe nothing material is left to discover for a strong plan. ` +
53
- `Plan mode’s deliverable is still one comprehensive plan.create (goal, evidence-backed detail, ordered tasks for post-accept work). ` +
54
- `When research is truly complete, present the plan and await accept put remaining implement/test/exploit work in tasks.`);
50
+ `This is a calibration note, not a stop order or a demand to keep collecting data. ` +
51
+ `Reconcile what you know against the requested outcome, material ${domain}, and the decisions the plan must make. ` +
52
+ `Continue research where an unresolved uncertainty could change scope, architecture, priority, safety, or verification; avoid repeating low-yield work once those decisions are supported. ` +
53
+ `Represent important unresolved or untested surfaces explicitly in the plan rather than hiding them or researching forever. ` +
54
+ `When material coverage is mapped and plan-changing uncertainty is resolved, deliver one comprehensive plan.create with evidence, assumptions, risks, ordered outcome tasks, branch conditions, and verification, then await acceptance.`);
55
55
  }
56
56
  /** Append reminder suffix when the gate passes; otherwise return content unchanged. */
57
57
  export function maybeAppendPlanModeReminder(toolContent, opts) {
@@ -1 +1 @@
1
- {"version":3,"file":"plan-mode-reminders.js","sourceRoot":"","sources":["../../src/agent/plan-mode-reminders.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAC3C,qDAAqD;AACrD,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAE9C,kEAAkE;AAClE,MAAM,CAAC,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AAa/D,8EAA8E;AAC9E,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,wBAAwB;QAAE,OAAO,KAAK,CAAC;IAC5E,OAAO,CAAC,IAAI,GAAG,wBAAwB,CAAC,GAAG,2BAA2B,KAAK,CAAC,CAAC;AAC/E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAAsB;IACjE,IAAI,CAAC,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC;QAAE,OAAO,KAAK,CAAC;IAChE,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;QAAE,OAAO,KAAK,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAOD;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAA0B;IACjE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,MAAM,MAAM,GACV,IAAI,CAAC,QAAQ,KAAK,SAAS;QACzB,CAAC,CAAC,gEAAgE;QAClE,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ;YAC1B,CAAC,CAAC,8DAA8D;YAChE,CAAC,CAAC,kDAAkD,CAAC;IAE3D,OAAO,CACL,kCAAkC,IAAI,IAAI;QAC1C,4FAA4F;QAC5F,qEAAqE,MAAM,gBAAgB;QAC3F,oGAAoG;QACpG,qIAAqI;QACrI,0HAA0H,CAC3H,CAAC;AACJ,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,2BAA2B,CACzC,WAAmB,EACnB,IAA6C;IAE7C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACnD,CAAC;IACD,MAAM,IAAI,GAAG,wBAAwB,CAAC;QACpC,IAAI,EAAE,IAAI,CAAC,cAAc;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"plan-mode-reminders.js","sourceRoot":"","sources":["../../src/agent/plan-mode-reminders.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAC3C,qDAAqD;AACrD,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAE9C,kEAAkE;AAClE,MAAM,CAAC,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AAa/D,8EAA8E;AAC9E,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,wBAAwB;QAAE,OAAO,KAAK,CAAC;IAC5E,OAAO,CAAC,IAAI,GAAG,wBAAwB,CAAC,GAAG,2BAA2B,KAAK,CAAC,CAAC;AAC/E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAAsB;IACjE,IAAI,CAAC,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC;QAAE,OAAO,KAAK,CAAC;IAChE,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;QAAE,OAAO,KAAK,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAOD;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAA0B;IACjE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,MAAM,MAAM,GACV,IAAI,CAAC,QAAQ,KAAK,SAAS;QACzB,CAAC,CAAC,gEAAgE;QAClE,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ;YAC1B,CAAC,CAAC,8DAA8D;YAChE,CAAC,CAAC,kDAAkD,CAAC;IAE3D,OAAO,CACL,kCAAkC,IAAI,IAAI;QAC1C,oFAAoF;QACpF,mEAAmE,MAAM,0CAA0C;QACnH,4LAA4L;QAC5L,6HAA6H;QAC7H,yOAAyO,CAC1O,CAAC;AACJ,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,2BAA2B,CACzC,WAAmB,EACnB,IAA6C;IAE7C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACnD,CAAC;IACD,MAAM,IAAI,GAAG,wBAAwB,CAAC;QACpC,IAAI,EAAE,IAAI,CAAC,cAAc;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACzD,CAAC"}
@@ -30,6 +30,7 @@ export interface NormalizedPlanTask {
30
30
  dependencies: string[];
31
31
  dependenciesSpecified: boolean;
32
32
  resourceLocks: string[];
33
+ acceptanceCriteria?: string | undefined;
33
34
  }
34
35
  /** Full entries including model-supplied id/name aliases (X3). */
35
36
  export declare function normalizePlanTaskEntries(args: Record<string, unknown>): NormalizedPlanTask[];