@pentoshi/clai 3.9.2 → 3.9.4

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 (407) hide show
  1. package/dist/agent/compaction-attempt.d.ts +22 -0
  2. package/dist/agent/compaction-attempt.js +69 -0
  3. package/dist/agent/compaction-attempt.js.map +1 -0
  4. package/dist/agent/compaction-summary.d.ts +27 -0
  5. package/dist/agent/compaction-summary.js +62 -0
  6. package/dist/agent/compaction-summary.js.map +1 -1
  7. package/dist/agent/context-breakdown.d.ts +2 -0
  8. package/dist/agent/context-breakdown.js +37 -0
  9. package/dist/agent/context-breakdown.js.map +1 -1
  10. package/dist/agent/context-manager.d.ts +7 -1
  11. package/dist/agent/context-manager.js +64 -15
  12. package/dist/agent/context-manager.js.map +1 -1
  13. package/dist/agent/continue-orient.d.ts +8 -0
  14. package/dist/agent/continue-orient.js +26 -3
  15. package/dist/agent/continue-orient.js.map +1 -1
  16. package/dist/agent/durable-envelope.d.ts +39 -0
  17. package/dist/agent/durable-envelope.js +195 -0
  18. package/dist/agent/durable-envelope.js.map +1 -0
  19. package/dist/agent/events.d.ts +21 -0
  20. package/dist/agent/loop-guard.d.ts +13 -5
  21. package/dist/agent/loop-guard.js +114 -1
  22. package/dist/agent/loop-guard.js.map +1 -1
  23. package/dist/agent/outcomes.d.ts +29 -0
  24. package/dist/agent/outcomes.js +118 -3
  25. package/dist/agent/outcomes.js.map +1 -1
  26. package/dist/agent/plan-decision.js +8 -3
  27. package/dist/agent/plan-decision.js.map +1 -1
  28. package/dist/agent/plan-tool.d.ts +5 -0
  29. package/dist/agent/plan-tool.js +166 -6
  30. package/dist/agent/plan-tool.js.map +1 -1
  31. package/dist/agent/reliability-policy.d.ts +11 -6
  32. package/dist/agent/reliability-policy.js +19 -13
  33. package/dist/agent/reliability-policy.js.map +1 -1
  34. package/dist/agent/request-budget.d.ts +24 -0
  35. package/dist/agent/request-budget.js +59 -0
  36. package/dist/agent/request-budget.js.map +1 -0
  37. package/dist/agent/responder-context.js +2 -2
  38. package/dist/agent/responder-context.js.map +1 -1
  39. package/dist/agent/responder-parent.d.ts +30 -0
  40. package/dist/agent/responder-parent.js +82 -0
  41. package/dist/agent/responder-parent.js.map +1 -0
  42. package/dist/agent/runner.d.ts +15 -2
  43. package/dist/agent/runner.js +766 -213
  44. package/dist/agent/runner.js.map +1 -1
  45. package/dist/agent/scope-context.d.ts +5 -0
  46. package/dist/agent/scope-context.js +7 -1
  47. package/dist/agent/scope-context.js.map +1 -1
  48. package/dist/agent/session-policy.js +1 -0
  49. package/dist/agent/session-policy.js.map +1 -1
  50. package/dist/agent/stop-summary.js +13 -7
  51. package/dist/agent/stop-summary.js.map +1 -1
  52. package/dist/agent/task-analyzer.js +7 -3
  53. package/dist/agent/task-analyzer.js.map +1 -1
  54. package/dist/agent/task-evidence.js +2 -0
  55. package/dist/agent/task-evidence.js.map +1 -1
  56. package/dist/agent/task-sync.d.ts +11 -0
  57. package/dist/agent/task-sync.js +31 -0
  58. package/dist/agent/task-sync.js.map +1 -1
  59. package/dist/agent/tool-call-parser.d.ts +6 -13
  60. package/dist/agent/tool-call-parser.js +186 -82
  61. package/dist/agent/tool-call-parser.js.map +1 -1
  62. package/dist/agent/tool-history.d.ts +8 -2
  63. package/dist/agent/tool-history.js +8 -1
  64. package/dist/agent/tool-history.js.map +1 -1
  65. package/dist/agent/turn-outcome.d.ts +4 -1
  66. package/dist/agent/turn-outcome.js +16 -2
  67. package/dist/agent/turn-outcome.js.map +1 -1
  68. package/dist/app/adapters/agent-event-adapter.js +27 -0
  69. package/dist/app/adapters/agent-event-adapter.js.map +1 -1
  70. package/dist/app/adapters/current-agent-adapter.js +1 -0
  71. package/dist/app/adapters/current-agent-adapter.js.map +1 -1
  72. package/dist/app/adapters/current-interactive-sessions-adapter.d.ts +4 -0
  73. package/dist/app/adapters/current-interactive-sessions-adapter.js +11 -0
  74. package/dist/app/adapters/current-interactive-sessions-adapter.js.map +1 -0
  75. package/dist/app/adapters/current-jobs-adapter.js +4 -3
  76. package/dist/app/adapters/current-jobs-adapter.js.map +1 -1
  77. package/dist/app/adapters/current-store-adapter.js +4 -3
  78. package/dist/app/adapters/current-store-adapter.js.map +1 -1
  79. package/dist/app/adapters/current-updates-adapter.d.ts +1 -1
  80. package/dist/app/adapters/current-updates-adapter.js +34 -5
  81. package/dist/app/adapters/current-updates-adapter.js.map +1 -1
  82. package/dist/app/adapters/quiet-meta-tools.js +2 -1
  83. package/dist/app/adapters/quiet-meta-tools.js.map +1 -1
  84. package/dist/app/controllers/cancel-all-result.d.ts +8 -0
  85. package/dist/app/controllers/cancel-all-result.js +32 -0
  86. package/dist/app/controllers/cancel-all-result.js.map +1 -0
  87. package/dist/app/controllers/job-controller.d.ts +4 -3
  88. package/dist/app/controllers/job-controller.js +9 -6
  89. package/dist/app/controllers/job-controller.js.map +1 -1
  90. package/dist/app/controllers/plan-controller.js +14 -0
  91. package/dist/app/controllers/plan-controller.js.map +1 -1
  92. package/dist/app/controllers/responder-settlement.js +2 -2
  93. package/dist/app/controllers/responder-settlement.js.map +1 -1
  94. package/dist/app/controllers/session-compact-helper.d.ts +23 -1
  95. package/dist/app/controllers/session-compact-helper.js +117 -7
  96. package/dist/app/controllers/session-compact-helper.js.map +1 -1
  97. package/dist/app/controllers/session-context-usage.d.ts +24 -0
  98. package/dist/app/controllers/session-context-usage.js +89 -0
  99. package/dist/app/controllers/session-context-usage.js.map +1 -0
  100. package/dist/app/controllers/session-controller.d.ts +25 -17
  101. package/dist/app/controllers/session-controller.js +142 -128
  102. package/dist/app/controllers/session-controller.js.map +1 -1
  103. package/dist/app/controllers/session-prompt-queue.d.ts +3 -0
  104. package/dist/app/controllers/session-prompt-queue.js +20 -1
  105. package/dist/app/controllers/session-prompt-queue.js.map +1 -1
  106. package/dist/app/controllers/session-responder.js +16 -6
  107. package/dist/app/controllers/session-responder.js.map +1 -1
  108. package/dist/app/controllers/session-turn-request.d.ts +18 -0
  109. package/dist/app/controllers/session-turn-request.js +31 -0
  110. package/dist/app/controllers/session-turn-request.js.map +1 -0
  111. package/dist/app/controllers/turn-continuation.d.ts +14 -0
  112. package/dist/app/controllers/turn-continuation.js +46 -0
  113. package/dist/app/controllers/turn-continuation.js.map +1 -0
  114. package/dist/app/events/app-event.d.ts +21 -0
  115. package/dist/app/events/app-event.js +1 -0
  116. package/dist/app/events/app-event.js.map +1 -1
  117. package/dist/app/ports/agent-port.d.ts +7 -0
  118. package/dist/app/ports/interactive-sessions-port.d.ts +21 -0
  119. package/dist/app/ports/interactive-sessions-port.js +9 -0
  120. package/dist/app/ports/interactive-sessions-port.js.map +1 -0
  121. package/dist/app/ports/jobs-port.d.ts +4 -3
  122. package/dist/app/ports/persistence-port.d.ts +11 -0
  123. package/dist/app/ports/updates-port.d.ts +8 -0
  124. package/dist/attachments/service.js +13 -2
  125. package/dist/attachments/service.js.map +1 -1
  126. package/dist/commands/providers.js +13 -10
  127. package/dist/commands/providers.js.map +1 -1
  128. package/dist/commands/update.d.ts +4 -0
  129. package/dist/commands/update.js +14 -0
  130. package/dist/commands/update.js.map +1 -1
  131. package/dist/index.js +21 -8
  132. package/dist/index.js.map +1 -1
  133. package/dist/interactive-session/artifact-writer.d.ts +54 -0
  134. package/dist/interactive-session/artifact-writer.js +161 -0
  135. package/dist/interactive-session/artifact-writer.js.map +1 -0
  136. package/dist/interactive-session/cleanup.d.ts +36 -0
  137. package/dist/interactive-session/cleanup.js +157 -0
  138. package/dist/interactive-session/cleanup.js.map +1 -0
  139. package/dist/interactive-session/config.d.ts +118 -0
  140. package/dist/interactive-session/config.js +141 -0
  141. package/dist/interactive-session/config.js.map +1 -0
  142. package/dist/interactive-session/input-policy.d.ts +41 -0
  143. package/dist/interactive-session/input-policy.js +163 -0
  144. package/dist/interactive-session/input-policy.js.map +1 -0
  145. package/dist/interactive-session/manager.d.ts +107 -0
  146. package/dist/interactive-session/manager.js +927 -0
  147. package/dist/interactive-session/manager.js.map +1 -0
  148. package/dist/interactive-session/output-store.d.ts +81 -0
  149. package/dist/interactive-session/output-store.js +239 -0
  150. package/dist/interactive-session/output-store.js.map +1 -0
  151. package/dist/interactive-session/output-view.d.ts +20 -0
  152. package/dist/interactive-session/output-view.js +142 -0
  153. package/dist/interactive-session/output-view.js.map +1 -0
  154. package/dist/interactive-session/recovery-journal.d.ts +55 -0
  155. package/dist/interactive-session/recovery-journal.js +115 -0
  156. package/dist/interactive-session/recovery-journal.js.map +1 -0
  157. package/dist/interactive-session/registry.d.ts +59 -0
  158. package/dist/interactive-session/registry.js +170 -0
  159. package/dist/interactive-session/registry.js.map +1 -0
  160. package/dist/interactive-session/runtime.d.ts +107 -0
  161. package/dist/interactive-session/runtime.js +191 -0
  162. package/dist/interactive-session/runtime.js.map +1 -0
  163. package/dist/interactive-session/session-runtime.d.ts +50 -0
  164. package/dist/interactive-session/session-runtime.js +63 -0
  165. package/dist/interactive-session/session-runtime.js.map +1 -0
  166. package/dist/interactive-session/streaming-redactor.d.ts +53 -0
  167. package/dist/interactive-session/streaming-redactor.js +263 -0
  168. package/dist/interactive-session/streaming-redactor.js.map +1 -0
  169. package/dist/interactive-session/telemetry.d.ts +30 -0
  170. package/dist/interactive-session/telemetry.js +47 -0
  171. package/dist/interactive-session/telemetry.js.map +1 -0
  172. package/dist/interactive-session/transport-factory.d.ts +8 -0
  173. package/dist/interactive-session/transport-factory.js +16 -0
  174. package/dist/interactive-session/transport-factory.js.map +1 -0
  175. package/dist/interactive-session/transport-node-pty.d.ts +49 -0
  176. package/dist/interactive-session/transport-node-pty.js +219 -0
  177. package/dist/interactive-session/transport-node-pty.js.map +1 -0
  178. package/dist/interactive-session/transport-pipe.d.ts +9 -0
  179. package/dist/interactive-session/transport-pipe.js +215 -0
  180. package/dist/interactive-session/transport-pipe.js.map +1 -0
  181. package/dist/interactive-session/transport.d.ts +104 -0
  182. package/dist/interactive-session/transport.js +89 -0
  183. package/dist/interactive-session/transport.js.map +1 -0
  184. package/dist/interactive-session/types.d.ts +254 -0
  185. package/dist/interactive-session/types.js +191 -0
  186. package/dist/interactive-session/types.js.map +1 -0
  187. package/dist/llm/adapters/anthropic-tools.d.ts +14 -1
  188. package/dist/llm/adapters/anthropic-tools.js +36 -5
  189. package/dist/llm/adapters/anthropic-tools.js.map +1 -1
  190. package/dist/llm/adapters/gemini-tools.d.ts +3 -1
  191. package/dist/llm/adapters/gemini-tools.js +5 -2
  192. package/dist/llm/adapters/gemini-tools.js.map +1 -1
  193. package/dist/llm/adapters/ollama-tools.js +8 -3
  194. package/dist/llm/adapters/ollama-tools.js.map +1 -1
  195. package/dist/llm/adapters/openai-tools.js +8 -1
  196. package/dist/llm/adapters/openai-tools.js.map +1 -1
  197. package/dist/llm/agentrouter.js +2 -0
  198. package/dist/llm/agentrouter.js.map +1 -1
  199. package/dist/llm/anthropic.d.ts +8 -0
  200. package/dist/llm/anthropic.js +68 -9
  201. package/dist/llm/anthropic.js.map +1 -1
  202. package/dist/llm/aws-mantle.js +60 -12
  203. package/dist/llm/aws-mantle.js.map +1 -1
  204. package/dist/llm/bynara.js +2 -0
  205. package/dist/llm/bynara.js.map +1 -1
  206. package/dist/llm/capabilities.d.ts +7 -0
  207. package/dist/llm/capabilities.js +22 -0
  208. package/dist/llm/capabilities.js.map +1 -1
  209. package/dist/llm/gemini.d.ts +3 -0
  210. package/dist/llm/gemini.js +71 -11
  211. package/dist/llm/gemini.js.map +1 -1
  212. package/dist/llm/groq.d.ts +20 -1
  213. package/dist/llm/groq.js +32 -4
  214. package/dist/llm/groq.js.map +1 -1
  215. package/dist/llm/http.d.ts +29 -0
  216. package/dist/llm/http.js +122 -29
  217. package/dist/llm/http.js.map +1 -1
  218. package/dist/llm/kimchi.js +2 -0
  219. package/dist/llm/kimchi.js.map +1 -1
  220. package/dist/llm/nvidia.js +2 -0
  221. package/dist/llm/nvidia.js.map +1 -1
  222. package/dist/llm/ollama.d.ts +5 -0
  223. package/dist/llm/ollama.js +53 -6
  224. package/dist/llm/ollama.js.map +1 -1
  225. package/dist/llm/openai.js +2 -0
  226. package/dist/llm/openai.js.map +1 -1
  227. package/dist/llm/openrouter.js +2 -0
  228. package/dist/llm/openrouter.js.map +1 -1
  229. package/dist/llm/qwen-cloud.js +2 -0
  230. package/dist/llm/qwen-cloud.js.map +1 -1
  231. package/dist/llm/router.d.ts +16 -0
  232. package/dist/llm/router.js +79 -23
  233. package/dist/llm/router.js.map +1 -1
  234. package/dist/llm/sampling.d.ts +32 -0
  235. package/dist/llm/sampling.js +48 -0
  236. package/dist/llm/sampling.js.map +1 -0
  237. package/dist/llm/stream-progress.d.ts +4 -0
  238. package/dist/llm/stream-progress.js +43 -0
  239. package/dist/llm/stream-progress.js.map +1 -0
  240. package/dist/llm/system-messages.d.ts +29 -0
  241. package/dist/llm/system-messages.js +51 -0
  242. package/dist/llm/system-messages.js.map +1 -0
  243. package/dist/llm/token-usage.d.ts +4 -1
  244. package/dist/llm/token-usage.js +56 -4
  245. package/dist/llm/token-usage.js.map +1 -1
  246. package/dist/llm/tool-protocol.js +30 -0
  247. package/dist/llm/tool-protocol.js.map +1 -1
  248. package/dist/os/process-identity.d.ts +46 -0
  249. package/dist/os/process-identity.js +147 -0
  250. package/dist/os/process-identity.js.map +1 -0
  251. package/dist/os/process-tree.d.ts +15 -0
  252. package/dist/os/process-tree.js +77 -0
  253. package/dist/os/process-tree.js.map +1 -0
  254. package/dist/prompts/embedded.js +1 -1
  255. package/dist/prompts/embedded.js.map +1 -1
  256. package/dist/prompts/system.agent.md +13 -12
  257. package/dist/repl/prompt-line.d.ts +5 -0
  258. package/dist/repl/prompt-line.js +7 -1
  259. package/dist/repl/prompt-line.js.map +1 -1
  260. package/dist/repl.js +71 -41
  261. package/dist/repl.js.map +1 -1
  262. package/dist/safety/classifier.js +98 -44
  263. package/dist/safety/classifier.js.map +1 -1
  264. package/dist/safety/engagement-policy.d.ts +8 -0
  265. package/dist/safety/engagement-policy.js +52 -7
  266. package/dist/safety/engagement-policy.js.map +1 -1
  267. package/dist/safety/patterns.d.ts +44 -0
  268. package/dist/safety/patterns.js +168 -37
  269. package/dist/safety/patterns.js.map +1 -1
  270. package/dist/store/config.d.ts +9 -1
  271. package/dist/store/config.js +51 -1
  272. package/dist/store/config.js.map +1 -1
  273. package/dist/store/history-index.d.ts +12 -0
  274. package/dist/store/history-index.js +47 -18
  275. package/dist/store/history-index.js.map +1 -1
  276. package/dist/store/history.d.ts +5 -2
  277. package/dist/store/history.js +153 -62
  278. package/dist/store/history.js.map +1 -1
  279. package/dist/store/plan.d.ts +81 -5
  280. package/dist/store/plan.js +406 -46
  281. package/dist/store/plan.js.map +1 -1
  282. package/dist/store/redaction-cache.d.ts +12 -0
  283. package/dist/store/redaction-cache.js +51 -0
  284. package/dist/store/redaction-cache.js.map +1 -0
  285. package/dist/store/responder-settlement.d.ts +5 -1
  286. package/dist/store/responder-settlement.js +42 -30
  287. package/dist/store/responder-settlement.js.map +1 -1
  288. package/dist/store/scope.js +36 -27
  289. package/dist/store/scope.js.map +1 -1
  290. package/dist/store/task-transitions.d.ts +19 -0
  291. package/dist/store/task-transitions.js +46 -0
  292. package/dist/store/task-transitions.js.map +1 -0
  293. package/dist/tools/capabilities.js +33 -18
  294. package/dist/tools/capabilities.js.map +1 -1
  295. package/dist/tools/command-intent.d.ts +24 -0
  296. package/dist/tools/command-intent.js +158 -4
  297. package/dist/tools/command-intent.js.map +1 -1
  298. package/dist/tools/definitions.d.ts +5 -1
  299. package/dist/tools/definitions.js +257 -21
  300. package/dist/tools/definitions.js.map +1 -1
  301. package/dist/tools/fs.d.ts +16 -0
  302. package/dist/tools/fs.js +122 -46
  303. package/dist/tools/fs.js.map +1 -1
  304. package/dist/tools/image.js +1 -1
  305. package/dist/tools/image.js.map +1 -1
  306. package/dist/tools/interactive-session-tools.d.ts +11 -0
  307. package/dist/tools/interactive-session-tools.js +261 -0
  308. package/dist/tools/interactive-session-tools.js.map +1 -0
  309. package/dist/tools/jobs.d.ts +78 -4
  310. package/dist/tools/jobs.js +486 -127
  311. package/dist/tools/jobs.js.map +1 -1
  312. package/dist/tools/net-ping-sweep.d.ts +3 -1
  313. package/dist/tools/net-ping-sweep.js +64 -26
  314. package/dist/tools/net-ping-sweep.js.map +1 -1
  315. package/dist/tools/nmap-runner.js +5 -2
  316. package/dist/tools/nmap-runner.js.map +1 -1
  317. package/dist/tools/pdf.js +50 -7
  318. package/dist/tools/pdf.js.map +1 -1
  319. package/dist/tools/registry.js +158 -96
  320. package/dist/tools/registry.js.map +1 -1
  321. package/dist/tools/shell.d.ts +24 -2
  322. package/dist/tools/shell.js +113 -28
  323. package/dist/tools/shell.js.map +1 -1
  324. package/dist/tools/tool-types.d.ts +2 -0
  325. package/dist/tools/validate.d.ts +8 -5
  326. package/dist/tools/validate.js +177 -7
  327. package/dist/tools/validate.js.map +1 -1
  328. package/dist/tools/wordlists.js +69 -17
  329. package/dist/tools/wordlists.js.map +1 -1
  330. package/dist/tui/state.d.ts +4 -0
  331. package/dist/tui/state.js +88 -2
  332. package/dist/tui/state.js.map +1 -1
  333. package/dist/tui-v2/actions/keymap.js +3 -8
  334. package/dist/tui-v2/actions/keymap.js.map +1 -1
  335. package/dist/tui-v2/app/App.js +52 -4
  336. package/dist/tui-v2/app/App.js.map +1 -1
  337. package/dist/tui-v2/app/commands/config-commands.js +5 -2
  338. package/dist/tui-v2/app/commands/config-commands.js.map +1 -1
  339. package/dist/tui-v2/app/commands/picker-commands.js +3 -0
  340. package/dist/tui-v2/app/commands/picker-commands.js.map +1 -1
  341. package/dist/tui-v2/app/plan-lifecycle.d.ts +1 -1
  342. package/dist/tui-v2/app/plan-lifecycle.js +2 -1
  343. package/dist/tui-v2/app/plan-lifecycle.js.map +1 -1
  344. package/dist/tui-v2/bootstrap/composition-root.d.ts +3 -0
  345. package/dist/tui-v2/bootstrap/composition-root.js +3 -0
  346. package/dist/tui-v2/bootstrap/composition-root.js.map +1 -1
  347. package/dist/tui-v2/bootstrap/start-tui-v2.js +10 -0
  348. package/dist/tui-v2/bootstrap/start-tui-v2.js.map +1 -1
  349. package/dist/tui-v2/components/composer/composer-input-box.d.ts +1 -1
  350. package/dist/tui-v2/components/composer/composer-input-box.js +12 -3
  351. package/dist/tui-v2/components/composer/composer-input-box.js.map +1 -1
  352. package/dist/tui-v2/components/jobs/jobs-panel.js +19 -6
  353. package/dist/tui-v2/components/jobs/jobs-panel.js.map +1 -1
  354. package/dist/tui-v2/components/plan/plan-view.js +9 -6
  355. package/dist/tui-v2/components/plan/plan-view.js.map +1 -1
  356. package/dist/tui-v2/components/status/status-line.d.ts +15 -0
  357. package/dist/tui-v2/components/status/status-line.js +33 -25
  358. package/dist/tui-v2/components/status/status-line.js.map +1 -1
  359. package/dist/tui-v2/components/transcript/assistant-message.js +17 -9
  360. package/dist/tui-v2/components/transcript/assistant-message.js.map +1 -1
  361. package/dist/tui-v2/components/transcript/compacted-row.js +49 -22
  362. package/dist/tui-v2/components/transcript/compacted-row.js.map +1 -1
  363. package/dist/tui-v2/components/transcript/intro-card.js +3 -0
  364. package/dist/tui-v2/components/transcript/intro-card.js.map +1 -1
  365. package/dist/tui-v2/components/transcript/thinking-block.js +2 -1
  366. package/dist/tui-v2/components/transcript/thinking-block.js.map +1 -1
  367. package/dist/tui-v2/components/transcript/transcript-view.js +27 -2
  368. package/dist/tui-v2/components/transcript/transcript-view.js.map +1 -1
  369. package/dist/tui-v2/components/transcript/use-transcript-selection.js +57 -6
  370. package/dist/tui-v2/components/transcript/use-transcript-selection.js.map +1 -1
  371. package/dist/tui-v2/composer/composer-editor.js +12 -6
  372. package/dist/tui-v2/composer/composer-editor.js.map +1 -1
  373. package/dist/tui-v2/rendering/incremental-strip.d.ts +11 -0
  374. package/dist/tui-v2/rendering/incremental-strip.js +89 -0
  375. package/dist/tui-v2/rendering/incremental-strip.js.map +1 -0
  376. package/dist/tui-v2/rendering/plan-view.d.ts +12 -0
  377. package/dist/tui-v2/rendering/plan-view.js +71 -2
  378. package/dist/tui-v2/rendering/plan-view.js.map +1 -1
  379. package/dist/tui-v2/rendering/streaming-markdown.d.ts +25 -0
  380. package/dist/tui-v2/rendering/streaming-markdown.js +108 -0
  381. package/dist/tui-v2/rendering/streaming-markdown.js.map +1 -0
  382. package/dist/tui-v2/rendering/thinking-tail.d.ts +5 -0
  383. package/dist/tui-v2/rendering/thinking-tail.js +26 -0
  384. package/dist/tui-v2/rendering/thinking-tail.js.map +1 -0
  385. package/dist/tui-v2/state/transcript-hydrate.js +6 -2
  386. package/dist/tui-v2/state/transcript-hydrate.js.map +1 -1
  387. package/dist/tui-v2/state/transcript-reducer.js +146 -25
  388. package/dist/tui-v2/state/transcript-reducer.js.map +1 -1
  389. package/dist/tui-v2/state/transcript-types.d.ts +6 -0
  390. package/dist/tui-v2/state/transcript-types.js +17 -0
  391. package/dist/tui-v2/state/transcript-types.js.map +1 -1
  392. package/dist/types.d.ts +34 -0
  393. package/dist/types.js.map +1 -1
  394. package/dist/ui/intro-header.d.ts +1 -0
  395. package/dist/ui/intro-header.js +10 -13
  396. package/dist/ui/intro-header.js.map +1 -1
  397. package/dist/ui/markdown.js +9 -2
  398. package/dist/ui/markdown.js.map +1 -1
  399. package/dist/ui/mentions.d.ts +5 -0
  400. package/dist/ui/mentions.js +66 -7
  401. package/dist/ui/mentions.js.map +1 -1
  402. package/dist/ui/thinking.d.ts +5 -1
  403. package/dist/ui/thinking.js +3 -2
  404. package/dist/ui/thinking.js.map +1 -1
  405. package/dist/version.generated.d.ts +2 -2
  406. package/dist/version.generated.js +2 -2
  407. package/package.json +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/interactive-session/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Cursor-addressed output retention.
3
+ *
4
+ * Cursors address the session's canonical safe byte stream — redacted bytes, not
5
+ * raw child bytes and not a rendered view — so plain and encoded views share one
6
+ * stable source and `nextCursor` stays independent of rendered length.
7
+ *
8
+ * Appends are serialized in callback observation order and never ordered by wall
9
+ * clock. Ingestion deliberately takes no session mutation lock so a chatty child
10
+ * cannot block Close.
11
+ */
12
+ import { type Unsubscribe } from "./runtime.js";
13
+ import { type ArtifactReference, type OutputPage, type OutputStream, type OutputView, type SessionOperation, type StableError } from "./types.js";
14
+ /** Durable sink for canonical redacted bytes. */
15
+ export interface OutputSink {
16
+ /** Returns false when the sink is applying backpressure. */
17
+ append(bytes: Uint8Array): boolean;
18
+ waitForDrain(): Promise<void>;
19
+ reference(): ArtifactReference;
20
+ /** True once the configured capture limit demands session termination. */
21
+ readonly limitReached: boolean;
22
+ readonly failed: boolean;
23
+ }
24
+ export interface OutputStoreOptions {
25
+ readonly memoryWindowBytes: number;
26
+ readonly pageBytes: number;
27
+ readonly redactionOverlapBytes: number;
28
+ readonly sink: OutputSink;
29
+ /** Invoked when the sink asks for, then releases, transport backpressure. */
30
+ readonly onPause?: (() => void) | undefined;
31
+ readonly onResume?: (() => void) | undefined;
32
+ /** Raised when persistence fails or the capture limit demands termination. */
33
+ readonly onPersistenceStop?: ((reason: "output-limit" | "persist-failed") => void) | undefined;
34
+ }
35
+ export interface PageOptions {
36
+ readonly cursor: number;
37
+ readonly view: OutputView;
38
+ readonly maxBytes?: number | undefined;
39
+ readonly operation: SessionOperation;
40
+ readonly sessionId: string;
41
+ }
42
+ export type PageOutcome = {
43
+ readonly ok: true;
44
+ readonly page: OutputPage;
45
+ } | {
46
+ readonly ok: false;
47
+ readonly error: StableError;
48
+ readonly page: OutputPage;
49
+ };
50
+ export declare class OutputStore {
51
+ private readonly options;
52
+ private readonly events;
53
+ private readonly redactors;
54
+ private readonly notifier;
55
+ private retainedBytes;
56
+ private earliest;
57
+ private latest;
58
+ private omittedBytes;
59
+ private paused;
60
+ private closed;
61
+ constructor(options: OutputStoreOptions);
62
+ get earliestCursor(): number;
63
+ get latestCursor(): number;
64
+ /** Monotonic generation used as the quiet-detection baseline. */
65
+ get generation(): number;
66
+ get artifact(): ArtifactReference;
67
+ registerExactSecret(value: string): void;
68
+ subscribe(listener: (generation: number) => void): Unsubscribe;
69
+ private redactorFor;
70
+ /** Ingest raw transport bytes. Redaction happens before cursor assignment. */
71
+ ingest(stream: OutputStream, raw: Uint8Array, observedAt: number): void;
72
+ /** Flush retained redaction overlap; called once during finalization. */
73
+ finish(): void;
74
+ private commit;
75
+ private evict;
76
+ private persist;
77
+ /** Build a contiguous page starting at `cursor`. */
78
+ page(options: PageOptions): PageOutcome;
79
+ private buildPage;
80
+ dispose(): void;
81
+ }
@@ -0,0 +1,239 @@
1
+ /**
2
+ * Cursor-addressed output retention.
3
+ *
4
+ * Cursors address the session's canonical safe byte stream — redacted bytes, not
5
+ * raw child bytes and not a rendered view — so plain and encoded views share one
6
+ * stable source and `nextCursor` stays independent of rendered length.
7
+ *
8
+ * Appends are serialized in callback observation order and never ordered by wall
9
+ * clock. Ingestion deliberately takes no session mutation lock so a chatty child
10
+ * cannot block Close.
11
+ */
12
+ import { presentEvents } from "./output-view.js";
13
+ import { Notifier } from "./runtime.js";
14
+ import { StreamingSecretRedactor, trailingIncompleteUtf8Bytes } from "./streaming-redactor.js";
15
+ import { sessionError, } from "./types.js";
16
+ export class OutputStore {
17
+ options;
18
+ events = [];
19
+ redactors = new Map();
20
+ notifier = new Notifier();
21
+ retainedBytes = 0;
22
+ earliest = 0;
23
+ latest = 0;
24
+ omittedBytes = 0;
25
+ paused = false;
26
+ closed = false;
27
+ constructor(options) {
28
+ this.options = options;
29
+ }
30
+ get earliestCursor() {
31
+ return this.earliest;
32
+ }
33
+ get latestCursor() {
34
+ return this.latest;
35
+ }
36
+ /** Monotonic generation used as the quiet-detection baseline. */
37
+ get generation() {
38
+ return this.notifier.current;
39
+ }
40
+ get artifact() {
41
+ return this.options.sink.reference();
42
+ }
43
+ registerExactSecret(value) {
44
+ for (const stream of ["terminal", "stdout", "stderr"]) {
45
+ this.redactorFor(stream).registerExactSecret(value);
46
+ }
47
+ }
48
+ subscribe(listener) {
49
+ return this.notifier.subscribe(listener);
50
+ }
51
+ redactorFor(stream) {
52
+ let redactor = this.redactors.get(stream);
53
+ if (!redactor) {
54
+ redactor = new StreamingSecretRedactor(this.options.redactionOverlapBytes);
55
+ this.redactors.set(stream, redactor);
56
+ }
57
+ return redactor;
58
+ }
59
+ /** Ingest raw transport bytes. Redaction happens before cursor assignment. */
60
+ ingest(stream, raw, observedAt) {
61
+ if (this.closed)
62
+ return;
63
+ const safe = this.redactorFor(stream).push(raw);
64
+ this.commit(stream, safe, observedAt);
65
+ }
66
+ /** Flush retained redaction overlap; called once during finalization. */
67
+ finish() {
68
+ if (this.closed)
69
+ return;
70
+ const now = Date.now();
71
+ for (const [stream, redactor] of this.redactors) {
72
+ this.commit(stream, redactor.close(), now);
73
+ }
74
+ this.closed = true;
75
+ }
76
+ commit(stream, bytes, observedAt) {
77
+ if (bytes.length === 0)
78
+ return;
79
+ const startCursor = this.latest;
80
+ this.latest += bytes.length;
81
+ this.events.push({
82
+ startCursor,
83
+ endCursor: this.latest,
84
+ stream,
85
+ observedAt,
86
+ bytes,
87
+ });
88
+ this.retainedBytes += bytes.length;
89
+ if (this.events.length === 1 && startCursor === 0)
90
+ this.earliest = 0;
91
+ this.evict();
92
+ this.persist(bytes);
93
+ this.notifier.bump();
94
+ }
95
+ evict() {
96
+ while (this.retainedBytes > this.options.memoryWindowBytes &&
97
+ this.events.length > 0) {
98
+ const oldest = this.events[0];
99
+ const overflow = this.retainedBytes - this.options.memoryWindowBytes;
100
+ const size = oldest.bytes.length;
101
+ if (size <= overflow) {
102
+ this.events.shift();
103
+ this.retainedBytes -= size;
104
+ this.earliest = oldest.endCursor;
105
+ this.omittedBytes += size;
106
+ continue;
107
+ }
108
+ // Partially evict the oldest chunk; later cursors are never renumbered.
109
+ const drop = overflow;
110
+ this.events[0] = {
111
+ ...oldest,
112
+ startCursor: oldest.startCursor + drop,
113
+ bytes: oldest.bytes.subarray(drop),
114
+ };
115
+ this.retainedBytes -= drop;
116
+ this.earliest = oldest.startCursor + drop;
117
+ this.omittedBytes += drop;
118
+ }
119
+ }
120
+ persist(bytes) {
121
+ const sink = this.options.sink;
122
+ const writable = sink.append(bytes);
123
+ if (sink.failed) {
124
+ this.options.onPersistenceStop?.("persist-failed");
125
+ return;
126
+ }
127
+ if (sink.limitReached) {
128
+ this.options.onPersistenceStop?.("output-limit");
129
+ return;
130
+ }
131
+ if (writable || this.paused)
132
+ return;
133
+ // Bound memory while the filesystem catches up rather than queueing output.
134
+ this.paused = true;
135
+ this.options.onPause?.();
136
+ void sink.waitForDrain().then(() => {
137
+ this.paused = false;
138
+ this.options.onResume?.();
139
+ });
140
+ }
141
+ /** Build a contiguous page starting at `cursor`. */
142
+ page(options) {
143
+ const limit = Math.max(1, options.maxBytes ?? this.options.pageBytes);
144
+ const requested = options.cursor;
145
+ if (requested < this.earliest) {
146
+ const omitted = this.earliest - requested;
147
+ const gapPage = this.buildPage([], requested, requested, options.view, false, omitted);
148
+ return {
149
+ ok: false,
150
+ page: gapPage,
151
+ error: sessionError({
152
+ code: "OUTPUT_GAP",
153
+ operation: options.operation,
154
+ sessionId: options.sessionId,
155
+ message: "Requested output has been evicted from the retention window; read from earliestAvailableCursor or the artifact.",
156
+ details: {
157
+ requestedCursor: requested,
158
+ earliestAvailableCursor: this.earliest,
159
+ omittedBytes: omitted,
160
+ artifactPath: this.artifact.path,
161
+ },
162
+ }),
163
+ };
164
+ }
165
+ if (requested > this.latest) {
166
+ return {
167
+ ok: false,
168
+ page: this.buildPage([], requested, requested, options.view, false),
169
+ error: sessionError({
170
+ code: "INVALID_REQUEST",
171
+ operation: options.operation,
172
+ sessionId: options.sessionId,
173
+ message: "Requested cursor is beyond the latest observed output byte.",
174
+ details: { requestedCursor: requested, latestCursor: this.latest },
175
+ }),
176
+ };
177
+ }
178
+ const selected = [];
179
+ let cursor = requested;
180
+ let budget = limit;
181
+ for (const event of this.events) {
182
+ if (event.endCursor <= cursor)
183
+ continue;
184
+ if (budget <= 0)
185
+ break;
186
+ const offset = Math.max(0, cursor - event.startCursor);
187
+ let slice = event.bytes.subarray(offset, offset + budget);
188
+ if (slice.length === 0)
189
+ continue;
190
+ const truncated = offset + slice.length < event.bytes.length;
191
+ if (truncated && options.view === "plain") {
192
+ // Never end a plain page inside a multi-byte code point.
193
+ const incomplete = trailingIncompleteUtf8Bytes(slice);
194
+ if (incomplete > 0 && slice.length > incomplete) {
195
+ slice = slice.subarray(0, slice.length - incomplete);
196
+ }
197
+ }
198
+ if (slice.length === 0)
199
+ break;
200
+ selected.push({
201
+ startCursor: cursor,
202
+ endCursor: cursor + slice.length,
203
+ stream: event.stream,
204
+ observedAt: event.observedAt,
205
+ bytes: slice,
206
+ });
207
+ cursor += slice.length;
208
+ budget -= slice.length;
209
+ }
210
+ const hasMore = cursor < this.latest;
211
+ return { ok: true, page: this.buildPage(selected, requested, cursor, options.view, hasMore) };
212
+ }
213
+ buildPage(events, requestedCursor, nextCursor, view, hasMore, omittedBytes) {
214
+ const presented = presentEvents(events, view);
215
+ return {
216
+ events: presented.events,
217
+ requestedCursor,
218
+ nextCursor,
219
+ hasMore,
220
+ earliestAvailableCursor: this.earliest,
221
+ latestCursor: this.latest,
222
+ view,
223
+ decodingLoss: presented.decodingLoss,
224
+ ...(omittedBytes !== undefined && omittedBytes > 0
225
+ ? { omittedBytes }
226
+ : this.omittedBytes > 0
227
+ ? { omittedBytes: this.omittedBytes }
228
+ : {}),
229
+ artifact: this.artifact,
230
+ };
231
+ }
232
+ dispose() {
233
+ this.finish();
234
+ this.notifier.clear();
235
+ this.events.length = 0;
236
+ this.retainedBytes = 0;
237
+ }
238
+ }
239
+ //# sourceMappingURL=output-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-store.js","sourceRoot":"","sources":["../../src/interactive-session/output-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Presentation views over canonical redacted output bytes.
3
+ *
4
+ * `encoded` is base64: it round-trips the exact canonical bytes and cannot
5
+ * execute a control sequence anywhere. `plain` is a bounded linearizer, not a
6
+ * terminal emulator: it keeps no screen grid, no alternate screen, and no
7
+ * cursor-addressable replay, and it guarantees that no host-terminal control
8
+ * byte survives into model, transcript, log, or UI output.
9
+ */
10
+ import type { OutputEvent, OutputView, PresentedOutputEvent } from "./types.js";
11
+ /**
12
+ * Strip or neutralize escape sequences and unsafe controls. Output is a pure
13
+ * function of the input text, so identical bytes always produce identical text.
14
+ */
15
+ export declare function neutralizeTerminalControls(input: string): string;
16
+ export declare function presentEvent(event: OutputEvent, view: OutputView): PresentedOutputEvent;
17
+ export declare function presentEvents(events: readonly OutputEvent[], view: OutputView): {
18
+ events: PresentedOutputEvent[];
19
+ decodingLoss: boolean;
20
+ };
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Presentation views over canonical redacted output bytes.
3
+ *
4
+ * `encoded` is base64: it round-trips the exact canonical bytes and cannot
5
+ * execute a control sequence anywhere. `plain` is a bounded linearizer, not a
6
+ * terminal emulator: it keeps no screen grid, no alternate screen, and no
7
+ * cursor-addressable replay, and it guarantees that no host-terminal control
8
+ * byte survives into model, transcript, log, or UI output.
9
+ */
10
+ const REPLACEMENT = "\uFFFD";
11
+ /** Inert visible tokens for control effects we deliberately do not execute. */
12
+ const PLAIN_TOKENS = {
13
+ backspace: "⌫",
14
+ osc: "[osc]",
15
+ dcs: "[dcs]",
16
+ nul: "^@",
17
+ };
18
+ function decodeUtf8(bytes) {
19
+ const text = Buffer.from(bytes).toString("utf8");
20
+ return { text, loss: text.includes(REPLACEMENT) };
21
+ }
22
+ function controlToken(code) {
23
+ if (code === 0)
24
+ return PLAIN_TOKENS.nul;
25
+ // C0 controls render as their caret form; C1 as a hex token.
26
+ if (code < 0x20)
27
+ return `^${String.fromCharCode(code + 64)}`;
28
+ return `^[0x${code.toString(16).padStart(2, "0")}]`;
29
+ }
30
+ /**
31
+ * Strip or neutralize escape sequences and unsafe controls. Output is a pure
32
+ * function of the input text, so identical bytes always produce identical text.
33
+ */
34
+ export function neutralizeTerminalControls(input) {
35
+ let out = "";
36
+ let index = 0;
37
+ while (index < input.length) {
38
+ const char = input[index];
39
+ const code = char.codePointAt(0);
40
+ if (code === 0x1b) {
41
+ const next = input[index + 1];
42
+ if (next === "[") {
43
+ // CSI: consume parameters and the final byte. SGR and cursor control are
44
+ // omitted entirely; they have no meaning in a linearized view.
45
+ let cursor = index + 2;
46
+ while (cursor < input.length && /[\d;?<>=: ]/.test(input[cursor]))
47
+ cursor += 1;
48
+ if (cursor < input.length)
49
+ cursor += 1;
50
+ index = cursor;
51
+ continue;
52
+ }
53
+ if (next === "]") {
54
+ index = consumeStringSequence(input, index + 2);
55
+ out += PLAIN_TOKENS.osc;
56
+ continue;
57
+ }
58
+ if (next === "P" || next === "X" || next === "^" || next === "_") {
59
+ index = consumeStringSequence(input, index + 2);
60
+ out += PLAIN_TOKENS.dcs;
61
+ continue;
62
+ }
63
+ // Two-character or single-character escapes (charset, keypad, RIS).
64
+ index += next === undefined ? 1 : 2;
65
+ continue;
66
+ }
67
+ if (char === "\r") {
68
+ // Lone CR is a line rewrite; CRLF collapses to one newline. Neither moves
69
+ // the host cursor.
70
+ if (input[index + 1] === "\n") {
71
+ out += "\n";
72
+ index += 2;
73
+ }
74
+ else {
75
+ out += "\n";
76
+ index += 1;
77
+ }
78
+ continue;
79
+ }
80
+ if (char === "\b") {
81
+ out += PLAIN_TOKENS.backspace;
82
+ index += 1;
83
+ continue;
84
+ }
85
+ if (char === "\n" || char === "\t") {
86
+ out += char;
87
+ index += 1;
88
+ continue;
89
+ }
90
+ if (code < 0x20 || code === 0x7f || (code >= 0x80 && code <= 0x9f)) {
91
+ out += controlToken(code);
92
+ index += 1;
93
+ continue;
94
+ }
95
+ out += char;
96
+ index += char.length;
97
+ }
98
+ return out;
99
+ }
100
+ /** Consume an OSC/DCS body up to BEL or ST, bounded by the input length. */
101
+ function consumeStringSequence(input, start) {
102
+ let index = start;
103
+ while (index < input.length) {
104
+ const char = input[index];
105
+ if (char === "\u0007")
106
+ return index + 1;
107
+ if (char === "\u001b" && input[index + 1] === "\\")
108
+ return index + 2;
109
+ if (char === "\u009c")
110
+ return index + 1;
111
+ index += 1;
112
+ }
113
+ return index;
114
+ }
115
+ export function presentEvent(event, view) {
116
+ if (view === "encoded") {
117
+ return {
118
+ startCursor: event.startCursor,
119
+ endCursor: event.endCursor,
120
+ stream: event.stream,
121
+ observedAt: event.observedAt,
122
+ content: Buffer.from(event.bytes).toString("base64"),
123
+ };
124
+ }
125
+ const decoded = decodeUtf8(event.bytes);
126
+ return {
127
+ startCursor: event.startCursor,
128
+ endCursor: event.endCursor,
129
+ stream: event.stream,
130
+ observedAt: event.observedAt,
131
+ content: neutralizeTerminalControls(decoded.text),
132
+ ...(decoded.loss ? { decodingLoss: true } : {}),
133
+ };
134
+ }
135
+ export function presentEvents(events, view) {
136
+ const presented = events.map((event) => presentEvent(event, view));
137
+ return {
138
+ events: presented,
139
+ decodingLoss: presented.some((event) => event.decodingLoss === true),
140
+ };
141
+ }
142
+ //# sourceMappingURL=output-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-view.js","sourceRoot":"","sources":["../../src/interactive-session/output-view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Crash-recovery journal for live interactive sessions.
3
+ *
4
+ * Interactive sessions are never reattachable: this file exists only so a crash
5
+ * cannot leave an orphaned process tree behind. It therefore stores cleanup
6
+ * evidence and nothing else — no command, cwd, input, environment, or output.
7
+ */
8
+ import { type ProcessIdentityComparison } from "../os/process-identity.js";
9
+ export interface JournalRecord {
10
+ readonly id: string;
11
+ /** Hashed owner id: enough to group records, never the conversation id. */
12
+ readonly ownerHash: string;
13
+ readonly pid: number | undefined;
14
+ readonly processGroupId: number | undefined;
15
+ readonly identity: string | undefined;
16
+ readonly platform: NodeJS.Platform;
17
+ readonly startedAt: number;
18
+ readonly artifactPath: string;
19
+ /** True once a pid was confirmed by the OS. */
20
+ readonly launchConfirmed: boolean;
21
+ }
22
+ export type ReconciliationOutcome = "terminated" | "gone" | "identity-mismatch" | "unverified" | "launch-failed";
23
+ export interface ReconciliationEntry {
24
+ readonly id: string;
25
+ readonly outcome: ReconciliationOutcome;
26
+ }
27
+ export declare function hashOwner(ownerId: string): string;
28
+ export interface RecoveryJournalProcessDeps {
29
+ readonly compareIdentity: (pid: number | undefined, identity: string | undefined) => ProcessIdentityComparison;
30
+ readonly terminateTree: (pid: number, options: {
31
+ signal: NodeJS.Signals;
32
+ processGroupId?: number | undefined;
33
+ }) => unknown;
34
+ }
35
+ export declare class RecoveryJournal {
36
+ private readonly directory;
37
+ private readonly path;
38
+ private readonly process;
39
+ private records;
40
+ constructor(directory?: string, processDeps?: Partial<RecoveryJournalProcessDeps>);
41
+ upsert(record: JournalRecord): void;
42
+ remove(id: string): void;
43
+ /** Load prior records without trusting any of them as running. */
44
+ load(): JournalRecord[];
45
+ /**
46
+ * Reconcile prior records before tools are enabled. Only an identity match
47
+ * authorizes signalling; `unknown` identity is reported unverified and left
48
+ * alone so a recycled pid is never killed.
49
+ */
50
+ reconcile(): ReconciliationEntry[];
51
+ private reconcileOne;
52
+ private persist;
53
+ /** Remove the journal file entirely; used when no live sessions remain. */
54
+ clear(): void;
55
+ }