@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
@@ -1 +1 @@
1
- {"version":3,"file":"continue-orient.js","sourceRoot":"","sources":["../../src/agent/continue-orient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"continue-orient.js","sourceRoot":"","sources":["../../src/agent/continue-orient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { ToolCall } from "../types.js";
2
+ import type { OutcomeEnvelope } from "./outcomes.js";
3
+ import { type SessionPlan } from "../store/plan.js";
4
+ export declare const DURABLE_ENVELOPE_PREFIX = "DURABLE WORK ENVELOPE";
5
+ export type FileMutationKind = "created" | "modified" | "deleted";
6
+ export declare class WorkLedger {
7
+ private readonly files;
8
+ private readonly artifacts;
9
+ recordToolCall(call: ToolCall, ok: boolean, artifactPath?: string): void;
10
+ pathsByKind(kind: FileMutationKind): string[];
11
+ artifactPaths(): string[];
12
+ get size(): number;
13
+ }
14
+ export interface ResponderEnvelopeState {
15
+ readonly unread: readonly string[];
16
+ readonly consumed: readonly string[];
17
+ }
18
+ export interface EnvelopeJobState {
19
+ readonly id: string;
20
+ readonly status: string;
21
+ readonly command: string;
22
+ readonly taskId?: string | undefined;
23
+ readonly artifact?: string | undefined;
24
+ }
25
+ export interface DurableEnvelopeInput {
26
+ readonly plan?: SessionPlan | undefined;
27
+ readonly outcome?: OutcomeEnvelope | undefined;
28
+ readonly ledger?: WorkLedger | undefined;
29
+ readonly responder?: ResponderEnvelopeState | undefined;
30
+ /** Background work still running when compaction happened. */
31
+ readonly liveJobs?: readonly EnvelopeJobState[] | undefined;
32
+ /** Terminal jobs whose output has not been harvested yet. */
33
+ readonly finishedJobs?: readonly EnvelopeJobState[] | undefined;
34
+ readonly projectRoot?: string | undefined;
35
+ readonly packageManager?: string | undefined;
36
+ readonly scopeSummary?: string | undefined;
37
+ }
38
+ export declare function buildDurableEnvelope(input: DurableEnvelopeInput): string | undefined;
39
+ export declare function isDurableEnvelopeContent(content: string): boolean;
@@ -0,0 +1,195 @@
1
+ // Deterministic durable work envelope for compaction.
2
+ //
3
+ // Narrative memory is model-written and therefore lossy. The envelope is built
4
+ // from canonical stores (plan, outcome contract, evidence, responder ledger,
5
+ // mutation ledger) so file changes, proven checks, unresolved criteria, failed
6
+ // approaches and the exact next step survive every compaction verbatim.
7
+ import { relative } from "node:path";
8
+ import { scratchWriteTargetPaths } from "./scratch-write.js";
9
+ import { foregroundActiveTask, foregroundRemaining, foregroundTasks, responderOpenTasks, } from "../store/plan.js";
10
+ export const DURABLE_ENVELOPE_PREFIX = "DURABLE WORK ENVELOPE";
11
+ // Max entries rendered per list before a bounded overflow marker.
12
+ const MAX_LIST_ENTRIES = 20;
13
+ // Max chars of a single rendered statement.
14
+ const MAX_STATEMENT_CHARS = 180;
15
+ const MUTATION_KIND_BY_TOOL = new Map([
16
+ ["fs.write", "created"],
17
+ ["fs.writeMany", "created"],
18
+ ["fs.edit", "modified"],
19
+ ["fs.replaceLines", "modified"],
20
+ ["fs.append", "modified"],
21
+ ["fs.delete", "deleted"],
22
+ ]);
23
+ // Session-scoped record of successful filesystem mutations and durable
24
+ // artifacts. Insertion order is preserved so the envelope is stable between
25
+ // compactions of the same work.
26
+ export class WorkLedger {
27
+ files = new Map();
28
+ artifacts = new Set();
29
+ recordToolCall(call, ok, artifactPath) {
30
+ if (artifactPath)
31
+ this.artifacts.add(artifactPath);
32
+ if (!ok)
33
+ return;
34
+ const kind = MUTATION_KIND_BY_TOOL.get(call.name);
35
+ if (!kind)
36
+ return;
37
+ for (const path of scratchWriteTargetPaths(call)) {
38
+ const existing = this.files.get(path);
39
+ // A create followed by edits is still a create; a delete always wins.
40
+ if (kind === "deleted" || existing === undefined) {
41
+ this.files.set(path, kind);
42
+ }
43
+ }
44
+ }
45
+ pathsByKind(kind) {
46
+ return [...this.files.entries()]
47
+ .filter(([, value]) => value === kind)
48
+ .map(([path]) => path);
49
+ }
50
+ artifactPaths() {
51
+ return [...this.artifacts];
52
+ }
53
+ get size() {
54
+ return this.files.size + this.artifacts.size;
55
+ }
56
+ }
57
+ function clip(text, max = MAX_STATEMENT_CHARS) {
58
+ const cleaned = text.replace(/\s+/g, " ").trim();
59
+ return cleaned.length <= max ? cleaned : `${cleaned.slice(0, max - 1)}…`;
60
+ }
61
+ function renderList(paths, root) {
62
+ const shown = paths.slice(0, MAX_LIST_ENTRIES).map((path) => {
63
+ if (!root)
64
+ return path;
65
+ const rel = relative(root, path);
66
+ return rel && !rel.startsWith("..") ? rel : path;
67
+ });
68
+ const overflow = paths.length - shown.length;
69
+ return overflow > 0
70
+ ? `${shown.join(", ")} (+${overflow} more)`
71
+ : shown.join(", ");
72
+ }
73
+ function planLines(plan, lines) {
74
+ const foreground = foregroundTasks(plan);
75
+ const active = foregroundActiveTask(plan);
76
+ const remaining = foregroundRemaining(plan);
77
+ lines.push(`Plan ${plan.sessionId} (${plan.status}): ${clip(plan.goal || "(no goal)")} — ${foreground.length - remaining.length}/${foreground.length} foreground tasks done`);
78
+ if (active) {
79
+ lines.push(`Active foreground task: ${active.id} ${clip(active.title)}`);
80
+ }
81
+ const next = remaining.find((task) => task.id !== active?.id);
82
+ if (next)
83
+ lines.push(`Next foreground task: ${next.id} ${clip(next.title)}`);
84
+ const open = responderOpenTasks(plan);
85
+ if (open.length > 0) {
86
+ lines.push(`Open responder children: ${open.map((task) => task.id).slice(0, MAX_LIST_ENTRIES).join(", ")}`);
87
+ }
88
+ }
89
+ function outcomeLines(outcome, lines) {
90
+ const proven = outcome.outcome.criteria.filter((criterion) => criterion.status === "proven");
91
+ const unresolved = outcome.outcome.criteria.filter((criterion) => criterion.status === "unproven" ||
92
+ criterion.status === "supported" ||
93
+ criterion.status === "refuted");
94
+ lines.push(`Outcome ${outcome.outcome.kind}: ${outcome.outcome.status}`);
95
+ if (proven.length > 0) {
96
+ lines.push(`Proven criteria: ${proven.map((c) => `${c.id} ${clip(c.statement, 80)}`).slice(0, MAX_LIST_ENTRIES).join("; ")}`);
97
+ }
98
+ if (unresolved.length > 0) {
99
+ lines.push(`Unresolved criteria: ${unresolved
100
+ .map((c) => `${c.id} (${c.status}${c.required ? ", required" : ""}) ${clip(c.statement, 80)}`)
101
+ .slice(0, MAX_LIST_ENTRIES)
102
+ .join("; ")}`);
103
+ }
104
+ const passes = outcome.evidence.filter((record) => record.result === "pass");
105
+ if (passes.length > 0) {
106
+ const recent = passes.slice(-MAX_LIST_ENTRIES);
107
+ lines.push(`Verified checks: ${recent.map((record) => `${record.source.tool} ${clip(record.observation, 70)}`).join("; ")}`);
108
+ }
109
+ if (outcome.failedHypotheses.length > 0) {
110
+ const recent = outcome.failedHypotheses.slice(-MAX_LIST_ENTRIES);
111
+ lines.push(`Failed approaches (do not repeat): ${recent.map((entry) => `${entry.signature} — ${clip(entry.premise, 90)}`).join("; ")}`);
112
+ }
113
+ const completed = outcome.completedOperations ?? [];
114
+ if (completed.length > 0) {
115
+ lines.push(`Completed read-only operations (do not repeat identical calls): ${completed
116
+ .slice(-MAX_LIST_ENTRIES)
117
+ .map((entry) => `${entry.signature} ${clip(entry.summary, 90)} — ${clip(entry.observation, 80)}${entry.artifact ? ` artifact=${entry.artifact}` : ""}`)
118
+ .join("; ")}`);
119
+ }
120
+ }
121
+ function renderJob(job) {
122
+ const task = job.taskId ? ` task=${job.taskId}` : "";
123
+ const artifact = job.artifact ? ` artifact=${job.artifact}` : "";
124
+ return `[${job.id}] ${job.status}${task} — ${clip(job.command, 90)}${artifact}`;
125
+ }
126
+ // Background work is the state most often lost across compaction: without it
127
+ // the model relaunches scans/builds that are already running or finished.
128
+ function jobLines(input, lines) {
129
+ const live = input.liveJobs ?? [];
130
+ const finished = input.finishedJobs ?? [];
131
+ if (live.length > 0) {
132
+ lines.push(`Live background jobs (do not relaunch; use shell.tail): ${live
133
+ .slice(0, MAX_LIST_ENTRIES)
134
+ .map(renderJob)
135
+ .join("; ")}`);
136
+ }
137
+ if (finished.length > 0) {
138
+ lines.push(`Finished background jobs (harvest output before redoing the work): ${finished
139
+ .slice(0, MAX_LIST_ENTRIES)
140
+ .map(renderJob)
141
+ .join("; ")}`);
142
+ }
143
+ }
144
+ // Render the envelope. Returns undefined when there is no canonical state worth
145
+ // preserving, so compaction does not inject an empty block.
146
+ export function buildDurableEnvelope(input) {
147
+ const lines = [];
148
+ if (input.projectRoot) {
149
+ lines.push(`Project root: ${input.projectRoot}${input.packageManager ? ` (package manager: ${input.packageManager})` : ""}`);
150
+ }
151
+ if (input.scopeSummary)
152
+ lines.push(`Engagement scope: ${clip(input.scopeSummary, 240)}`);
153
+ if (input.plan)
154
+ planLines(input.plan, lines);
155
+ if (input.outcome)
156
+ outcomeLines(input.outcome, lines);
157
+ if (input.responder) {
158
+ if (input.responder.unread.length > 0) {
159
+ lines.push(`Unread responder results: ${input.responder.unread.join(", ")}`);
160
+ }
161
+ if (input.responder.consumed.length > 0) {
162
+ lines.push(`Consumed responder results (never re-read): ${input.responder.consumed.join(", ")}`);
163
+ }
164
+ }
165
+ jobLines(input, lines);
166
+ const ledger = input.ledger;
167
+ if (ledger && ledger.size > 0) {
168
+ const created = ledger.pathsByKind("created");
169
+ const modified = ledger.pathsByKind("modified");
170
+ const deleted = ledger.pathsByKind("deleted");
171
+ const artifacts = ledger.artifactPaths();
172
+ if (created.length > 0) {
173
+ lines.push(`Files created: ${renderList(created, input.projectRoot)}`);
174
+ }
175
+ if (modified.length > 0) {
176
+ lines.push(`Files modified: ${renderList(modified, input.projectRoot)}`);
177
+ }
178
+ if (deleted.length > 0) {
179
+ lines.push(`Files deleted: ${renderList(deleted, input.projectRoot)}`);
180
+ }
181
+ if (artifacts.length > 0) {
182
+ lines.push(`Artifacts on disk: ${renderList(artifacts)}`);
183
+ }
184
+ }
185
+ if (lines.length === 0)
186
+ return undefined;
187
+ return [
188
+ `${DURABLE_ENVELOPE_PREFIX} (canonical; authoritative over summarized narrative)`,
189
+ ...lines,
190
+ ].join("\n");
191
+ }
192
+ export function isDurableEnvelopeContent(content) {
193
+ return content.startsWith(DURABLE_ENVELOPE_PREFIX);
194
+ }
195
+ //# sourceMappingURL=durable-envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"durable-envelope.js","sourceRoot":"","sources":["../../src/agent/durable-envelope.ts"],"names":[],"mappings":"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"}
@@ -75,6 +75,27 @@ export type AgentEvent = {
75
75
  type: "turn-error";
76
76
  message: string;
77
77
  } | {
78
+ type: "compaction-start";
79
+ id: string;
80
+ beforeTokens: number;
81
+ } | {
82
+ type: "compaction-delta";
83
+ id: string;
84
+ text: string;
85
+ } | {
86
+ type: "compaction-completed";
87
+ id: string;
88
+ summary: string;
89
+ beforeTokens: number;
90
+ afterTokens: number;
91
+ } | {
92
+ type: "compaction-failed";
93
+ id: string;
94
+ message: string;
95
+ retainedTokens: number;
96
+ }
97
+ /** Legacy one-shot compaction event retained for non-streaming integrations. */
98
+ | {
78
99
  type: "compacted";
79
100
  summary: string;
80
101
  beforeTokens: number;
@@ -1,3 +1,4 @@
1
+ import { type CompletedOperation } from "./outcomes.js";
1
2
  export interface ToolAttempt {
2
3
  step: number;
3
4
  callName: string;
@@ -21,20 +22,30 @@ export interface RetryContext {
21
22
  dependenciesChanged?: boolean;
22
23
  /** The execution environment changed since the failed attempt. */
23
24
  environmentChanged?: boolean;
25
+ /** Stable live state for status probes, excluding elapsed time. */
26
+ stateKey?: string | undefined;
24
27
  /** Structured justification for retrying without an external change. */
25
28
  retryReason?: {
26
29
  code: string;
27
30
  detail: string;
28
31
  };
29
32
  }
33
+ export interface LoopDecision {
34
+ block: boolean;
35
+ kind?: "failed-retry" | "unchanged-success" | undefined;
36
+ reason?: string | undefined;
37
+ }
30
38
  export declare class LoopGuard {
31
39
  private attempts;
32
40
  private signatureCount;
33
41
  private signatureSuccess;
34
42
  /** Failed read-only signatures that already used their one free env-change retry. */
35
43
  private failedReadRetryUsed;
44
+ private successfulProbes;
45
+ private failedProbes;
36
46
  private lastSuccessfulNonMetaStep;
37
47
  constructor(_options?: LoopGuardOptions);
48
+ restoreCompletedOperations(operations: readonly CompletedOperation[]): void;
38
49
  /**
39
50
  * Produce a canonical string for a (name, args) pair so that calls
40
51
  * with identical semantics match even if arg order differs or
@@ -44,7 +55,7 @@ export declare class LoopGuard {
44
55
  * verbatim — so writeMany scaffolds cannot pin multi-MB strings in Maps.
45
56
  */
46
57
  canonicalize(name: string, args: Record<string, unknown>): string;
47
- recordAttempt(step: number, name: string, args: Record<string, unknown>, ok: boolean, exitCode?: number | undefined, _output?: string | undefined): void;
58
+ recordAttempt(step: number, name: string, args: Record<string, unknown>, ok: boolean, exitCode?: number | undefined, output?: string | undefined, context?: RetryContext | undefined): void;
48
59
  private isPathMutatingTool;
49
60
  /** Drop list/read signatures that touch paths a successful tool may have created. */
50
61
  private invalidateReadsAfterSuccess;
@@ -53,10 +64,7 @@ export declare class LoopGuard {
53
64
  * Successful re-calls always pass through with no warning — no
54
65
  * "already succeeded / use prior results" messaging.
55
66
  */
56
- shouldBlock(name: string, args: Record<string, unknown>, retryContext?: RetryContext): {
57
- block: boolean;
58
- reason?: string | undefined;
59
- };
67
+ shouldBlock(name: string, args: Record<string, unknown>, retryContext?: RetryContext): LoopDecision;
60
68
  getAttemptCount(name: string, args: Record<string, unknown>): number;
61
69
  /**
62
70
  * Check if recent calls show a pattern of repeated failures
@@ -1,4 +1,5 @@
1
1
  import { slimToolArgs } from "./message-slim.js";
2
+ import { completedOperationObservationDigest, completedOperationSignature, } from "./outcomes.js";
2
3
  /** Bound attempt history so long thrash turns cannot retain thousands of sigs. */
3
4
  const MAX_ATTEMPT_HISTORY = 400;
4
5
  /**
@@ -27,8 +28,28 @@ export class LoopGuard {
27
28
  signatureSuccess = new Map();
28
29
  /** Failed read-only signatures that already used their one free env-change retry. */
29
30
  failedReadRetryUsed = new Set();
31
+ successfulProbes = new Map();
32
+ failedProbes = new Map();
30
33
  lastSuccessfulNonMetaStep = -1;
31
34
  constructor(_options = {}) { }
35
+ restoreCompletedOperations(operations) {
36
+ for (const operation of operations) {
37
+ if (operation.ok === false) {
38
+ this.failedProbes.set(operation.signature, {
39
+ ...(operation.stateKey ? { stateKey: operation.stateKey } : {}),
40
+ });
41
+ continue;
42
+ }
43
+ if (!operation.observationDigest)
44
+ continue;
45
+ this.successfulProbes.set(operation.signature, {
46
+ digest: operation.observationDigest,
47
+ unchangedRepeats: operation.unchangedRepeats ?? 0,
48
+ ...(operation.stateKey ? { stateKey: operation.stateKey } : {}),
49
+ compareAfterRestore: true,
50
+ });
51
+ }
52
+ }
32
53
  /**
33
54
  * Produce a canonical string for a (name, args) pair so that calls
34
55
  * with identical semantics match even if arg order differs or
@@ -46,7 +67,7 @@ export class LoopGuard {
46
67
  }
47
68
  return `${name}::${JSON.stringify(slimmed)}`;
48
69
  }
49
- recordAttempt(step, name, args, ok, exitCode, _output) {
70
+ recordAttempt(step, name, args, ok, exitCode, output, context) {
50
71
  const sig = this.canonicalize(name, args);
51
72
  this.attempts.push({
52
73
  step,
@@ -69,7 +90,35 @@ export class LoopGuard {
69
90
  if (!this.signatureSuccess.has(sig))
70
91
  this.signatureSuccess.set(sig, false);
71
92
  }
93
+ const probeSignature = completedOperationSignature(name, args);
94
+ if (ok && output !== undefined && probeSignature) {
95
+ const digest = completedOperationObservationDigest(name, output);
96
+ const prior = this.successfulProbes.get(probeSignature);
97
+ const unchanged = prior?.digest === digest && prior.stateKey === context?.stateKey;
98
+ this.successfulProbes.set(probeSignature, {
99
+ digest,
100
+ unchangedRepeats: unchanged ? (prior?.unchangedRepeats ?? 0) + 1 : 0,
101
+ ...(context?.stateKey ? { stateKey: context.stateKey } : {}),
102
+ compareAfterRestore: false,
103
+ ...(prior?.retryReason ? { retryReason: prior.retryReason } : {}),
104
+ });
105
+ }
106
+ if (probeSignature) {
107
+ if (ok) {
108
+ this.failedProbes.delete(probeSignature);
109
+ }
110
+ else {
111
+ const priorFailure = this.failedProbes.get(probeSignature);
112
+ this.failedProbes.set(probeSignature, {
113
+ ...(context?.stateKey ? { stateKey: context.stateKey } : {}),
114
+ ...(priorFailure?.retryReason
115
+ ? { retryReason: priorFailure.retryReason }
116
+ : {}),
117
+ });
118
+ }
119
+ }
72
120
  if (ok && this.isPathMutatingTool(name)) {
121
+ this.successfulProbes.clear();
73
122
  this.invalidateReadsAfterSuccess(name, args);
74
123
  }
75
124
  }
@@ -128,7 +177,70 @@ export class LoopGuard {
128
177
  if (name === "task.update" || name === "plan.create") {
129
178
  return { block: false };
130
179
  }
180
+ const probeSignature = completedOperationSignature(name, args);
181
+ const probe = probeSignature
182
+ ? this.successfulProbes.get(probeSignature)
183
+ : undefined;
184
+ if (probe) {
185
+ if (probe.compareAfterRestore) {
186
+ probe.compareAfterRestore = false;
187
+ return { block: false };
188
+ }
189
+ if (retryContext?.stateKey !== undefined &&
190
+ retryContext.stateKey !== probe.stateKey) {
191
+ return { block: false };
192
+ }
193
+ const retryReason = retryContext?.retryReason;
194
+ const reasonKey = retryReason?.code.trim() && retryReason.detail.trim()
195
+ ? `${retryReason.code.trim()}\0${retryReason.detail.trim()}`
196
+ : undefined;
197
+ if (reasonKey && reasonKey !== probe.retryReason) {
198
+ probe.retryReason = reasonKey;
199
+ return { block: false };
200
+ }
201
+ return {
202
+ block: true,
203
+ kind: "unchanged-success",
204
+ reason: `${name} already completed with identical arguments and no observed state change. ` +
205
+ "Reuse the prior observation; choose a different action unless the job state, arguments, or retry reason changes.",
206
+ };
207
+ }
131
208
  const sig = this.canonicalize(name, args);
209
+ const restoredFailure = probeSignature
210
+ ? this.failedProbes.get(probeSignature)
211
+ : undefined;
212
+ if (restoredFailure) {
213
+ if (retryContext?.dependenciesChanged === true ||
214
+ retryContext?.environmentChanged === true ||
215
+ (retryContext?.stateKey !== undefined &&
216
+ retryContext.stateKey !== restoredFailure.stateKey)) {
217
+ return { block: false };
218
+ }
219
+ if (READ_ONLY_TOOLS.has(name) && !this.failedReadRetryUsed.has(sig)) {
220
+ const lastFailStep = [...this.attempts]
221
+ .reverse()
222
+ .find((attempt) => attempt.canonicalSignature === sig && !attempt.ok)?.step;
223
+ if (lastFailStep !== undefined &&
224
+ this.lastSuccessfulNonMetaStep > lastFailStep) {
225
+ this.failedReadRetryUsed.add(sig);
226
+ return { block: false };
227
+ }
228
+ }
229
+ const retryReason = retryContext?.retryReason;
230
+ const reasonKey = retryReason?.code.trim() && retryReason.detail.trim()
231
+ ? `${retryReason.code.trim()}\0${retryReason.detail.trim()}`
232
+ : undefined;
233
+ if (reasonKey && reasonKey !== restoredFailure.retryReason) {
234
+ restoredFailure.retryReason = reasonKey;
235
+ return { block: false };
236
+ }
237
+ return {
238
+ block: true,
239
+ kind: "failed-retry",
240
+ reason: `${name} previously failed with identical arguments, including in an interrupted turn. ` +
241
+ "Change the command/args, fix the environment, or provide one new structured retry reason.",
242
+ };
243
+ }
132
244
  const count = this.signatureCount.get(sig) ?? 0;
133
245
  if (count === 0)
134
246
  return { block: false };
@@ -159,6 +271,7 @@ export class LoopGuard {
159
271
  }
160
272
  return {
161
273
  block: true,
274
+ kind: "failed-retry",
162
275
  reason: `${name} previously failed with identical arguments. Change the command/args, fix the environment, or provide a structured retry reason.`,
163
276
  };
164
277
  }
@@ -1 +1 @@
1
- {"version":3,"file":"loop-guard.js","sourceRoot":"","sources":["../../src/agent/loop-guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop-guard.js","sourceRoot":"","sources":["../../src/agent/loop-guard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACL,mCAAmC,EACnC,2BAA2B,GAE5B,MAAM,eAAe,CAAC;AAUvB,kFAAkF;AAClF,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC;;;GAGG;AACH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,SAAS;IACT,SAAS;IACT,WAAW;IACX,SAAS;IACT,aAAa;IACb,YAAY;IACZ,eAAe;IACf,WAAW;IACX,UAAU;CACX,CAAC,CAAC;AAkCH,MAAM,OAAO,SAAS;IACZ,QAAQ,GAAkB,EAAE,CAAC;IAC7B,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,gBAAgB,GAAG,IAAI,GAAG,EAAmB,CAAC;IACtD,qFAAqF;IAC7E,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,gBAAgB,GAAG,IAAI,GAAG,EAS/B,CAAC;IACI,YAAY,GAAG,IAAI,GAAG,EAG3B,CAAC;IACI,yBAAyB,GAAG,CAAC,CAAC,CAAC;IAEvC,YAAY,WAA6B,EAAE,IAAG,CAAC;IAE/C,0BAA0B,CAAC,UAAyC;QAClE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,SAAS,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;gBAC3B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE;oBACzC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChE,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,iBAAiB;gBAAE,SAAS;YAC3C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE;gBAC7C,MAAM,EAAE,SAAS,CAAC,iBAAiB;gBACnC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,IAAI,CAAC;gBACjD,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,mBAAmB,EAAE,IAAI;aAC1B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,IAAY,EAAE,IAA6B;QACtD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACnC,iFAAiF;QACjF,IACE,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,aAAa,CAAC;YACjD,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EACnC,CAAC;YACD,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/C,CAAC;IAED,aAAa,CACX,IAAY,EACZ,IAAY,EACZ,IAA6B,EAC7B,EAAW,EACX,QAA6B,EAC7B,MAA2B,EAC3B,OAAkC;QAElC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,IAAI;YACJ,QAAQ,EAAE,IAAI;YACd,kBAAkB,EAAE,GAAG;YACvB,EAAE;YACF,QAAQ;SACT,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;YAC/C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,mBAAmB,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACtE,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACrC,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;gBACrD,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;YACxC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,cAAc,GAAG,2BAA2B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/D,IAAI,EAAE,IAAI,MAAM,KAAK,SAAS,IAAI,cAAc,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,mCAAmC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACjE,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACxD,MAAM,SAAS,GACb,KAAK,EAAE,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,EAAE,QAAQ,CAAC;YACnE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,EAAE;gBACxC,MAAM;gBACN,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,gBAAgB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpE,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,mBAAmB,EAAE,KAAK;gBAC1B,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClE,CAAC,CAAC;QACL,CAAC;QAED,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,EAAE,EAAE,CAAC;gBACP,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAC3D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE;oBACpC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5D,GAAG,CAAC,YAAY,EAAE,WAAW;wBAC3B,CAAC,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC,WAAW,EAAE;wBAC3C,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,IAAY;QACrC,OAAO,CACL,IAAI,KAAK,UAAU;YACnB,IAAI,KAAK,cAAc;YACvB,IAAI,KAAK,SAAS;YAClB,IAAI,KAAK,iBAAiB;YAC1B,IAAI,KAAK,WAAW;YACpB,IAAI,KAAK,WAAW;YACpB,IAAI,KAAK,YAAY;YACrB,IAAI,KAAK,aAAa,CACvB,CAAC;IACJ,CAAC;IAED,qFAAqF;IAC7E,2BAA2B,CACjC,IAAY,EACZ,IAA6B;QAE7B,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC3B,IACE,CAAC;oBACD,OAAO,CAAC,KAAK,QAAQ;oBACrB,OAAQ,CAAuB,CAAC,IAAI,KAAK,QAAQ,EACjD,CAAC;oBACD,KAAK,CAAC,IAAI,CAAE,CAAsB,CAAC,IAAI,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC;QACD,IACE,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,aAAa,CAAC;YACjD,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAChC,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;YACzB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAC1B,oFAAoF,CACrF,EAAE,CAAC;gBACF,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;oBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC/B,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;gBAAE,SAAS;YAC3E,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAClC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,WAAW,CACT,IAAY,EACZ,IAA6B,EAC7B,YAA2B;QAE3B,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YACrD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC1B,CAAC;QAED,MAAM,cAAc,GAAG,2BAA2B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,cAAc;YAC1B,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC;YAC3C,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC;gBAC9B,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC;gBAClC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAC1B,CAAC;YACD,IACE,YAAY,EAAE,QAAQ,KAAK,SAAS;gBACpC,YAAY,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,EACxC,CAAC;gBACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAC1B,CAAC;YACD,MAAM,WAAW,GAAG,YAAY,EAAE,WAAW,CAAC;YAC9C,MAAM,SAAS,GACb,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE;gBACnD,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;gBAC5D,CAAC,CAAC,SAAS,CAAC;YAChB,IAAI,SAAS,IAAI,SAAS,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;gBACjD,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAC1B,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,mBAAmB;gBACzB,MAAM,EACJ,GAAG,IAAI,4EAA4E;oBACnF,kHAAkH;aACrH,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,eAAe,GAAG,cAAc;YACpC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC;YACvC,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,eAAe,EAAE,CAAC;YACpB,IACE,YAAY,EAAE,mBAAmB,KAAK,IAAI;gBAC1C,YAAY,EAAE,kBAAkB,KAAK,IAAI;gBACzC,CAAC,YAAY,EAAE,QAAQ,KAAK,SAAS;oBACnC,YAAY,CAAC,QAAQ,KAAK,eAAe,CAAC,QAAQ,CAAC,EACrD,CAAC;gBACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAC1B,CAAC;YACD,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpE,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;qBACpC,OAAO,EAAE;qBACT,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,kBAAkB,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;gBAC9E,IACE,YAAY,KAAK,SAAS;oBAC1B,IAAI,CAAC,yBAAyB,GAAG,YAAY,EAC7C,CAAC;oBACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAClC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;gBAC1B,CAAC;YACH,CAAC;YACD,MAAM,WAAW,GAAG,YAAY,EAAE,WAAW,CAAC;YAC9C,MAAM,SAAS,GACb,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE;gBACnD,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;gBAC5D,CAAC,CAAC,SAAS,CAAC;YAChB,IAAI,SAAS,IAAI,SAAS,KAAK,eAAe,CAAC,WAAW,EAAE,CAAC;gBAC3D,eAAe,CAAC,WAAW,GAAG,SAAS,CAAC;gBACxC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAC1B,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,cAAc;gBACpB,MAAM,EACJ,GAAG,IAAI,iFAAiF;oBACxF,2FAA2F;aAC9F,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAEzC,mEAAmE;QACnE,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;YAC7C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC1B,CAAC;QAED,yEAAyE;QACzE,kEAAkE;QAClE,MAAM,gBAAgB,GAAG,YAAY,EAAE,WAAW,CAAC;QACnD,MAAM,UAAU,GACd,YAAY,EAAE,mBAAmB,KAAK,IAAI;YAC1C,YAAY,EAAE,kBAAkB,KAAK,IAAI;YACzC,OAAO,CACL,gBAAgB,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,CAChE,CAAC;QACJ,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpE,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;iBACpC,OAAO,EAAE;iBACT,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;YAC5D,IACE,YAAY,KAAK,SAAS;gBAC1B,IAAI,CAAC,yBAAyB,GAAG,YAAY,EAC7C,CAAC;gBACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAClC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,OAAO;YACL,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,GAAG,IAAI,kIAAkI;SAClJ,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,IAAY,EAAE,IAA6B;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,SAAS,GAAG,CAAC;QAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,SAAS;YAAE,OAAO,KAAK,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,uBAAuB;QACrB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,EAAE;gBAAE,KAAK,EAAE,CAAC;;gBAC9B,MAAM;QACb,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,oBAAoB;QAClB,MAAM,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC3D,IAAI,mBAAmB,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAEzC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,WAAW;aAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;aACtE,KAAK,CAAC,CAAC,CAAC,CAAC;aACT,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,QAAQ,GAAG,mBAAmB,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAEnE,OAAO,mCAAmC,QAAQ,OAAO,mBAAmB;;;EAG9E,WAAW;;;;;;;;;;;;gHAYmG,CAAC;IAC/G,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CACxC,CAAC;IACJ,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;CACF"}
@@ -45,6 +45,20 @@ export interface EvidenceRecord {
45
45
  environment?: Record<string, string> | undefined;
46
46
  outcomeRevision: number;
47
47
  }
48
+ export interface CompletedOperation {
49
+ signature: string;
50
+ tool: string;
51
+ summary: string;
52
+ observation: string;
53
+ /** Missing on legacy entries means a successful completed observation. */
54
+ ok?: boolean | undefined;
55
+ exitCode?: number | undefined;
56
+ observationDigest?: string | undefined;
57
+ unchangedRepeats?: number | undefined;
58
+ stateKey?: string | undefined;
59
+ artifact?: string | undefined;
60
+ observedAt: string;
61
+ }
48
62
  export interface OutcomeEnvelope {
49
63
  schemaVersion: 1;
50
64
  outcome: OutcomeContract;
@@ -54,6 +68,7 @@ export interface OutcomeEnvelope {
54
68
  premise: string;
55
69
  observedAt: string;
56
70
  }>;
71
+ completedOperations?: CompletedOperation[] | undefined;
57
72
  }
58
73
  export declare function createOutcome(input: {
59
74
  sessionId: string;
@@ -89,13 +104,27 @@ export declare function recordFailedHypothesis(envelope: OutcomeEnvelope, input:
89
104
  signature: string;
90
105
  premise: string;
91
106
  }): void;
107
+ export declare function isCompletedReadOperation(tool: string, args?: Record<string, unknown>): boolean;
108
+ export declare function completedOperationSignature(tool: string, args?: Record<string, unknown>): string | undefined;
109
+ export declare function completedOperationObservationDigest(tool: string, output: string): string;
110
+ export declare function recordCompletedOperation(envelope: OutcomeEnvelope, input: {
111
+ tool: string;
112
+ args?: Record<string, unknown>;
113
+ output: string;
114
+ ok?: boolean;
115
+ exitCode?: number;
116
+ artifact?: string;
117
+ stateKey?: string;
118
+ }): CompletedOperation | undefined;
92
119
  export declare function recordToolEvidence(envelope: OutcomeEnvelope, input: {
93
120
  tool: string;
94
121
  callId: string;
95
122
  ok: boolean;
123
+ exitCode?: number | undefined;
96
124
  output: string;
97
125
  artifact?: string | undefined;
98
126
  taskId?: string | undefined;
99
127
  args?: Record<string, unknown> | undefined;
128
+ stateKey?: string | undefined;
100
129
  }): EvidenceRecord[];
101
130
  export declare function recordAnswerEvidence(envelope: OutcomeEnvelope, answer: string): EvidenceRecord | undefined;