@orion-agents/orion-code 0.1.7 → 0.1.9

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 (431) hide show
  1. package/CHANGELOG.md +445 -0
  2. package/README.md +60 -41
  3. package/README.zh-CN.md +34 -8
  4. package/dist/agents/coordinator.d.ts.map +1 -1
  5. package/dist/agents/coordinator.js +49 -9
  6. package/dist/agents/coordinator.js.map +1 -1
  7. package/dist/agents/fork.d.ts +5 -1
  8. package/dist/agents/fork.d.ts.map +1 -1
  9. package/dist/agents/fork.js +9 -10
  10. package/dist/agents/fork.js.map +1 -1
  11. package/dist/agents/worker-pool.d.ts.map +1 -1
  12. package/dist/agents/worker-pool.js +8 -3
  13. package/dist/agents/worker-pool.js.map +1 -1
  14. package/dist/cli.js +6 -6
  15. package/dist/cli.js.map +1 -1
  16. package/dist/commands/context-tool-command-handlers.d.ts.map +1 -1
  17. package/dist/commands/context-tool-command-handlers.js +42 -0
  18. package/dist/commands/context-tool-command-handlers.js.map +1 -1
  19. package/dist/commands/core-command-handlers.d.ts.map +1 -1
  20. package/dist/commands/core-command-handlers.js +3 -4
  21. package/dist/commands/core-command-handlers.js.map +1 -1
  22. package/dist/commands/diagnostic-command-handlers.d.ts.map +1 -1
  23. package/dist/commands/diagnostic-command-handlers.js +3 -0
  24. package/dist/commands/diagnostic-command-handlers.js.map +1 -1
  25. package/dist/commands/model-command-handlers.d.ts +1 -1
  26. package/dist/commands/model-command-handlers.d.ts.map +1 -1
  27. package/dist/commands/model-command-handlers.js +166 -1
  28. package/dist/commands/model-command-handlers.js.map +1 -1
  29. package/dist/commands/registry.d.ts.map +1 -1
  30. package/dist/commands/registry.js +7 -3
  31. package/dist/commands/registry.js.map +1 -1
  32. package/dist/commands/session-command-handlers.d.ts.map +1 -1
  33. package/dist/commands/session-command-handlers.js +97 -5
  34. package/dist/commands/session-command-handlers.js.map +1 -1
  35. package/dist/commands/session-commands.js +2 -2
  36. package/dist/commands/session-commands.js.map +1 -1
  37. package/dist/commands/types.d.ts +6 -0
  38. package/dist/commands/types.d.ts.map +1 -1
  39. package/dist/commands/types.js.map +1 -1
  40. package/dist/commands/workflow-command-handlers.d.ts.map +1 -1
  41. package/dist/commands/workflow-command-handlers.js +2 -2
  42. package/dist/commands/workflow-command-handlers.js.map +1 -1
  43. package/dist/commands/workflow-commands.d.ts.map +1 -1
  44. package/dist/commands/workflow-commands.js +1 -1
  45. package/dist/commands/workflow-commands.js.map +1 -1
  46. package/dist/core/checkpoint.d.ts.map +1 -1
  47. package/dist/core/checkpoint.js +9 -8
  48. package/dist/core/checkpoint.js.map +1 -1
  49. package/dist/framework/index.d.ts +5 -3
  50. package/dist/framework/index.d.ts.map +1 -1
  51. package/dist/framework/index.js +9 -1
  52. package/dist/framework/index.js.map +1 -1
  53. package/dist/framework/prompt.d.ts +1 -1
  54. package/dist/framework/prompt.d.ts.map +1 -1
  55. package/dist/framework/prompt.js +5 -4
  56. package/dist/framework/prompt.js.map +1 -1
  57. package/dist/framework/query.d.ts +30 -4
  58. package/dist/framework/query.d.ts.map +1 -1
  59. package/dist/framework/query.js +329 -62
  60. package/dist/framework/query.js.map +1 -1
  61. package/dist/framework/stop-decision.d.ts +56 -0
  62. package/dist/framework/stop-decision.d.ts.map +1 -0
  63. package/dist/framework/stop-decision.js +36 -0
  64. package/dist/framework/stop-decision.js.map +1 -0
  65. package/dist/framework/store.d.ts.map +1 -1
  66. package/dist/framework/store.js +4 -4
  67. package/dist/framework/store.js.map +1 -1
  68. package/dist/framework/tool-scheduler.d.ts +23 -13
  69. package/dist/framework/tool-scheduler.d.ts.map +1 -1
  70. package/dist/framework/tool-scheduler.js +93 -77
  71. package/dist/framework/tool-scheduler.js.map +1 -1
  72. package/dist/framework/tool.d.ts +7 -0
  73. package/dist/framework/tool.d.ts.map +1 -1
  74. package/dist/framework/tool.js +9 -0
  75. package/dist/framework/tool.js.map +1 -1
  76. package/dist/harness/assembler.d.ts.map +1 -1
  77. package/dist/harness/assembler.js +77 -19
  78. package/dist/harness/assembler.js.map +1 -1
  79. package/dist/harness/capability-profile.d.ts +3 -0
  80. package/dist/harness/capability-profile.d.ts.map +1 -0
  81. package/dist/harness/capability-profile.js +44 -0
  82. package/dist/harness/capability-profile.js.map +1 -0
  83. package/dist/harness/capsule.d.ts.map +1 -1
  84. package/dist/harness/capsule.js +22 -3
  85. package/dist/harness/capsule.js.map +1 -1
  86. package/dist/harness/compact-benchmark-corpus.d.ts +10 -0
  87. package/dist/harness/compact-benchmark-corpus.d.ts.map +1 -0
  88. package/dist/harness/compact-benchmark-corpus.js +56 -0
  89. package/dist/harness/compact-benchmark-corpus.js.map +1 -0
  90. package/dist/harness/context-harness.d.ts +23 -3
  91. package/dist/harness/context-harness.d.ts.map +1 -1
  92. package/dist/harness/context-harness.js +183 -11
  93. package/dist/harness/context-harness.js.map +1 -1
  94. package/dist/harness/contract.d.ts.map +1 -1
  95. package/dist/harness/contract.js +106 -11
  96. package/dist/harness/contract.js.map +1 -1
  97. package/dist/harness/drift-guard.d.ts +2 -1
  98. package/dist/harness/drift-guard.d.ts.map +1 -1
  99. package/dist/harness/drift-guard.js +315 -20
  100. package/dist/harness/drift-guard.js.map +1 -1
  101. package/dist/harness/evidence.d.ts.map +1 -1
  102. package/dist/harness/evidence.js +25 -12
  103. package/dist/harness/evidence.js.map +1 -1
  104. package/dist/harness/index.d.ts +7 -2
  105. package/dist/harness/index.d.ts.map +1 -1
  106. package/dist/harness/index.js +19 -1
  107. package/dist/harness/index.js.map +1 -1
  108. package/dist/harness/ledger.d.ts.map +1 -1
  109. package/dist/harness/ledger.js +44 -14
  110. package/dist/harness/ledger.js.map +1 -1
  111. package/dist/harness/progress-controller.d.ts +14 -0
  112. package/dist/harness/progress-controller.d.ts.map +1 -0
  113. package/dist/harness/progress-controller.js +110 -0
  114. package/dist/harness/progress-controller.js.map +1 -0
  115. package/dist/harness/state.d.ts.map +1 -1
  116. package/dist/harness/state.js +5 -2
  117. package/dist/harness/state.js.map +1 -1
  118. package/dist/harness/stop-controller.d.ts +15 -0
  119. package/dist/harness/stop-controller.d.ts.map +1 -0
  120. package/dist/harness/stop-controller.js +87 -0
  121. package/dist/harness/stop-controller.js.map +1 -0
  122. package/dist/harness/types.d.ts +137 -0
  123. package/dist/harness/types.d.ts.map +1 -1
  124. package/dist/harness/verification.d.ts +7 -0
  125. package/dist/harness/verification.d.ts.map +1 -0
  126. package/dist/harness/verification.js +122 -0
  127. package/dist/harness/verification.js.map +1 -0
  128. package/dist/index.d.ts +5 -5
  129. package/dist/index.d.ts.map +1 -1
  130. package/dist/index.js +7 -1
  131. package/dist/index.js.map +1 -1
  132. package/dist/ink-ui/screens/ReplScreen.d.ts +3 -0
  133. package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
  134. package/dist/ink-ui/screens/ReplScreen.js +30 -5
  135. package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
  136. package/dist/memory/index.d.ts +1 -0
  137. package/dist/memory/index.d.ts.map +1 -1
  138. package/dist/memory/index.js +1 -0
  139. package/dist/memory/index.js.map +1 -1
  140. package/dist/memory/prompt-context.d.ts +42 -0
  141. package/dist/memory/prompt-context.d.ts.map +1 -0
  142. package/dist/memory/prompt-context.js +129 -0
  143. package/dist/memory/prompt-context.js.map +1 -0
  144. package/dist/print-ui/launch.d.ts +1 -0
  145. package/dist/print-ui/launch.d.ts.map +1 -1
  146. package/dist/print-ui/launch.js +5 -2
  147. package/dist/print-ui/launch.js.map +1 -1
  148. package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
  149. package/dist/runtime/agent-runtime-controller.js +60 -22
  150. package/dist/runtime/agent-runtime-controller.js.map +1 -1
  151. package/dist/runtime/chat-checkpoint.d.ts.map +1 -1
  152. package/dist/runtime/chat-checkpoint.js +2 -5
  153. package/dist/runtime/chat-checkpoint.js.map +1 -1
  154. package/dist/runtime/chat-command-scope.d.ts +5 -0
  155. package/dist/runtime/chat-command-scope.d.ts.map +1 -0
  156. package/dist/runtime/chat-command-scope.js +22 -0
  157. package/dist/runtime/chat-command-scope.js.map +1 -0
  158. package/dist/runtime/chat-compact.d.ts +26 -0
  159. package/dist/runtime/chat-compact.d.ts.map +1 -0
  160. package/dist/runtime/chat-compact.js +132 -0
  161. package/dist/runtime/chat-compact.js.map +1 -0
  162. package/dist/runtime/chat-controller.d.ts.map +1 -1
  163. package/dist/runtime/chat-controller.js +102 -130
  164. package/dist/runtime/chat-controller.js.map +1 -1
  165. package/dist/runtime/chat-presentation.d.ts +6 -3
  166. package/dist/runtime/chat-presentation.d.ts.map +1 -1
  167. package/dist/runtime/chat-presentation.js +30 -6
  168. package/dist/runtime/chat-presentation.js.map +1 -1
  169. package/dist/runtime/goals/coordinator.d.ts +8 -0
  170. package/dist/runtime/goals/coordinator.d.ts.map +1 -1
  171. package/dist/runtime/goals/coordinator.js +103 -30
  172. package/dist/runtime/goals/coordinator.js.map +1 -1
  173. package/dist/runtime/goals/evidence.d.ts +10 -0
  174. package/dist/runtime/goals/evidence.d.ts.map +1 -1
  175. package/dist/runtime/goals/evidence.js +18 -0
  176. package/dist/runtime/goals/evidence.js.map +1 -1
  177. package/dist/runtime/goals/lifecycle.d.ts +13 -0
  178. package/dist/runtime/goals/lifecycle.d.ts.map +1 -0
  179. package/dist/runtime/goals/lifecycle.js +46 -0
  180. package/dist/runtime/goals/lifecycle.js.map +1 -0
  181. package/dist/runtime/goals/objective.d.ts +18 -0
  182. package/dist/runtime/goals/objective.d.ts.map +1 -0
  183. package/dist/runtime/goals/objective.js +60 -0
  184. package/dist/runtime/goals/objective.js.map +1 -0
  185. package/dist/runtime/goals/prompt.d.ts.map +1 -1
  186. package/dist/runtime/goals/prompt.js +7 -1
  187. package/dist/runtime/goals/prompt.js.map +1 -1
  188. package/dist/runtime/goals/stop-policy.d.ts +9 -0
  189. package/dist/runtime/goals/stop-policy.d.ts.map +1 -0
  190. package/dist/runtime/goals/stop-policy.js +83 -0
  191. package/dist/runtime/goals/stop-policy.js.map +1 -0
  192. package/dist/runtime/goals/tools.d.ts.map +1 -1
  193. package/dist/runtime/goals/tools.js +2 -2
  194. package/dist/runtime/goals/tools.js.map +1 -1
  195. package/dist/runtime/goals/types.d.ts +4 -1
  196. package/dist/runtime/goals/types.d.ts.map +1 -1
  197. package/dist/runtime/goals/types.js +2 -1
  198. package/dist/runtime/goals/types.js.map +1 -1
  199. package/dist/runtime/loop-budget.d.ts +2 -0
  200. package/dist/runtime/loop-budget.d.ts.map +1 -1
  201. package/dist/runtime/loop-budget.js +6 -2
  202. package/dist/runtime/loop-budget.js.map +1 -1
  203. package/dist/runtime/model-coordinator.d.ts +44 -1
  204. package/dist/runtime/model-coordinator.d.ts.map +1 -1
  205. package/dist/runtime/model-coordinator.js +161 -19
  206. package/dist/runtime/model-coordinator.js.map +1 -1
  207. package/dist/runtime/subagents/index.d.ts +1 -1
  208. package/dist/runtime/subagents/index.d.ts.map +1 -1
  209. package/dist/runtime/subagents/index.js.map +1 -1
  210. package/dist/runtime/subagents/production.d.ts +6 -2
  211. package/dist/runtime/subagents/production.d.ts.map +1 -1
  212. package/dist/runtime/subagents/production.js +25 -6
  213. package/dist/runtime/subagents/production.js.map +1 -1
  214. package/dist/runtime/subagents/runner.d.ts +12 -1
  215. package/dist/runtime/subagents/runner.d.ts.map +1 -1
  216. package/dist/runtime/subagents/runner.js +62 -1
  217. package/dist/runtime/subagents/runner.js.map +1 -1
  218. package/dist/runtime/subagents/runtime-integration.d.ts.map +1 -1
  219. package/dist/runtime/subagents/runtime-integration.js +2 -1
  220. package/dist/runtime/subagents/runtime-integration.js.map +1 -1
  221. package/dist/runtime/subagents/supervisor.d.ts.map +1 -1
  222. package/dist/runtime/subagents/supervisor.js +6 -0
  223. package/dist/runtime/subagents/supervisor.js.map +1 -1
  224. package/dist/runtime/subagents/types.d.ts +4 -1
  225. package/dist/runtime/subagents/types.d.ts.map +1 -1
  226. package/dist/runtime/subagents/types.js.map +1 -1
  227. package/dist/runtime/ui-events.d.ts +37 -1
  228. package/dist/runtime/ui-events.d.ts.map +1 -1
  229. package/dist/runtime/ui-events.js.map +1 -1
  230. package/dist/runtime/ui-view-model.d.ts +10 -1
  231. package/dist/runtime/ui-view-model.d.ts.map +1 -1
  232. package/dist/runtime/ui-view-model.js +93 -4
  233. package/dist/runtime/ui-view-model.js.map +1 -1
  234. package/dist/services/bounded-response.d.ts +12 -0
  235. package/dist/services/bounded-response.d.ts.map +1 -0
  236. package/dist/services/bounded-response.js +67 -0
  237. package/dist/services/bounded-response.js.map +1 -0
  238. package/dist/services/compact/auto-compact.d.ts +82 -2
  239. package/dist/services/compact/auto-compact.d.ts.map +1 -1
  240. package/dist/services/compact/auto-compact.js +226 -44
  241. package/dist/services/compact/auto-compact.js.map +1 -1
  242. package/dist/services/compact/compact.d.ts +54 -37
  243. package/dist/services/compact/compact.d.ts.map +1 -1
  244. package/dist/services/compact/compact.js +512 -127
  245. package/dist/services/compact/compact.js.map +1 -1
  246. package/dist/services/compact/coordinator.d.ts +5 -1
  247. package/dist/services/compact/coordinator.d.ts.map +1 -1
  248. package/dist/services/compact/coordinator.js +10 -1
  249. package/dist/services/compact/coordinator.js.map +1 -1
  250. package/dist/services/compact/fingerprint.d.ts +27 -0
  251. package/dist/services/compact/fingerprint.d.ts.map +1 -0
  252. package/dist/services/compact/fingerprint.js +69 -0
  253. package/dist/services/compact/fingerprint.js.map +1 -0
  254. package/dist/services/compact/index.d.ts +7 -5
  255. package/dist/services/compact/index.d.ts.map +1 -1
  256. package/dist/services/compact/index.js +19 -6
  257. package/dist/services/compact/index.js.map +1 -1
  258. package/dist/services/compact/planner.d.ts +41 -0
  259. package/dist/services/compact/planner.d.ts.map +1 -0
  260. package/dist/services/compact/planner.js +102 -0
  261. package/dist/services/compact/planner.js.map +1 -0
  262. package/dist/services/compact/semantic-summary.d.ts +93 -0
  263. package/dist/services/compact/semantic-summary.d.ts.map +1 -0
  264. package/dist/services/compact/semantic-summary.js +158 -0
  265. package/dist/services/compact/semantic-summary.js.map +1 -0
  266. package/dist/services/compact/summary-generator.d.ts +23 -0
  267. package/dist/services/compact/summary-generator.d.ts.map +1 -1
  268. package/dist/services/compact/summary-generator.js +173 -39
  269. package/dist/services/compact/summary-generator.js.map +1 -1
  270. package/dist/services/concurrent-sessions.d.ts +1 -0
  271. package/dist/services/concurrent-sessions.d.ts.map +1 -1
  272. package/dist/services/concurrent-sessions.js +35 -22
  273. package/dist/services/concurrent-sessions.js.map +1 -1
  274. package/dist/services/file-context.d.ts.map +1 -1
  275. package/dist/services/file-context.js +29 -33
  276. package/dist/services/file-context.js.map +1 -1
  277. package/dist/services/file-lock.d.ts.map +1 -1
  278. package/dist/services/file-lock.js +60 -27
  279. package/dist/services/file-lock.js.map +1 -1
  280. package/dist/services/global-config.d.ts +6 -0
  281. package/dist/services/global-config.d.ts.map +1 -1
  282. package/dist/services/global-config.js +23 -13
  283. package/dist/services/global-config.js.map +1 -1
  284. package/dist/services/goal-storage.d.ts +1 -1
  285. package/dist/services/goal-storage.d.ts.map +1 -1
  286. package/dist/services/goal-storage.js +14 -4
  287. package/dist/services/goal-storage.js.map +1 -1
  288. package/dist/services/llm.d.ts +3 -0
  289. package/dist/services/llm.d.ts.map +1 -1
  290. package/dist/services/llm.js +7 -0
  291. package/dist/services/llm.js.map +1 -1
  292. package/dist/services/project-instructions.d.ts +8 -0
  293. package/dist/services/project-instructions.d.ts.map +1 -1
  294. package/dist/services/project-instructions.js +101 -51
  295. package/dist/services/project-instructions.js.map +1 -1
  296. package/dist/services/provider-resilience/request-gate.d.ts +9 -5
  297. package/dist/services/provider-resilience/request-gate.d.ts.map +1 -1
  298. package/dist/services/provider-resilience/request-gate.js +71 -23
  299. package/dist/services/provider-resilience/request-gate.js.map +1 -1
  300. package/dist/services/safe-project-reader.d.ts +30 -0
  301. package/dist/services/safe-project-reader.d.ts.map +1 -0
  302. package/dist/services/safe-project-reader.js +141 -0
  303. package/dist/services/safe-project-reader.js.map +1 -0
  304. package/dist/services/session-storage.d.ts +146 -10
  305. package/dist/services/session-storage.d.ts.map +1 -1
  306. package/dist/services/session-storage.js +851 -120
  307. package/dist/services/session-storage.js.map +1 -1
  308. package/dist/services/tool-allowlist.d.ts +4 -4
  309. package/dist/services/tool-allowlist.js +4 -4
  310. package/dist/services/usage-state.d.ts +7 -0
  311. package/dist/services/usage-state.d.ts.map +1 -1
  312. package/dist/services/usage-state.js +117 -16
  313. package/dist/services/usage-state.js.map +1 -1
  314. package/dist/services/web-search-adapters.d.ts.map +1 -1
  315. package/dist/services/web-search-adapters.js +24 -10
  316. package/dist/services/web-search-adapters.js.map +1 -1
  317. package/dist/services/web-search-mcp.d.ts.map +1 -1
  318. package/dist/services/web-search-mcp.js +13 -3
  319. package/dist/services/web-search-mcp.js.map +1 -1
  320. package/dist/services/workspace-containment.d.ts +8 -0
  321. package/dist/services/workspace-containment.d.ts.map +1 -0
  322. package/dist/services/workspace-containment.js +44 -0
  323. package/dist/services/workspace-containment.js.map +1 -0
  324. package/dist/skills/runtime.d.ts.map +1 -1
  325. package/dist/skills/runtime.js +34 -35
  326. package/dist/skills/runtime.js.map +1 -1
  327. package/dist/terminal-ui/completion.d.ts.map +1 -1
  328. package/dist/terminal-ui/completion.js +5 -1
  329. package/dist/terminal-ui/completion.js.map +1 -1
  330. package/dist/terminal-ui/launch.d.ts +5 -0
  331. package/dist/terminal-ui/launch.d.ts.map +1 -1
  332. package/dist/terminal-ui/launch.js +53 -17
  333. package/dist/terminal-ui/launch.js.map +1 -1
  334. package/dist/tools/git.d.ts.map +1 -1
  335. package/dist/tools/git.js +47 -12
  336. package/dist/tools/git.js.map +1 -1
  337. package/dist/tools/index.d.ts.map +1 -1
  338. package/dist/tools/index.js +73 -64
  339. package/dist/tools/index.js.map +1 -1
  340. package/dist/tools/plan.d.ts.map +1 -1
  341. package/dist/tools/plan.js +7 -6
  342. package/dist/tools/plan.js.map +1 -1
  343. package/dist/tools/web.d.ts.map +1 -1
  344. package/dist/tools/web.js +11 -2
  345. package/dist/tools/web.js.map +1 -1
  346. package/dist/tui-ui/chrome-view-model.js +1 -1
  347. package/dist/tui-ui/chrome-view-model.js.map +1 -1
  348. package/dist/tui-ui/inline-surface.d.ts +1 -1
  349. package/dist/tui-ui/inline-surface.d.ts.map +1 -1
  350. package/dist/tui-ui/inline-surface.js +24 -16
  351. package/dist/tui-ui/inline-surface.js.map +1 -1
  352. package/dist/tui-ui/state.d.ts.map +1 -1
  353. package/dist/tui-ui/state.js +93 -13
  354. package/dist/tui-ui/state.js.map +1 -1
  355. package/dist/tui-ui/transcript-layout.d.ts.map +1 -1
  356. package/dist/tui-ui/transcript-layout.js +38 -29
  357. package/dist/tui-ui/transcript-layout.js.map +1 -1
  358. package/dist/ui/command-panel.d.ts +2 -0
  359. package/dist/ui/command-panel.d.ts.map +1 -1
  360. package/dist/ui/command-panel.js +46 -20
  361. package/dist/ui/command-panel.js.map +1 -1
  362. package/dist/ui/file-completion.d.ts.map +1 -1
  363. package/dist/ui/file-completion.js +12 -6
  364. package/dist/ui/file-completion.js.map +1 -1
  365. package/dist/ui/shared/command-palette.d.ts.map +1 -1
  366. package/dist/ui/shared/command-palette.js +13 -9
  367. package/dist/ui/shared/command-palette.js.map +1 -1
  368. package/dist/ui/shared/text.d.ts +2 -0
  369. package/dist/ui/shared/text.d.ts.map +1 -1
  370. package/dist/ui/shared/text.js +20 -12
  371. package/dist/ui/shared/text.js.map +1 -1
  372. package/dist/ui/suggestions.d.ts.map +1 -1
  373. package/dist/ui/suggestions.js +7 -6
  374. package/dist/ui/suggestions.js.map +1 -1
  375. package/docs/migration/v0.1.8-to-v0.1.9.md +60 -0
  376. package/docs/plan/v0.1.9-release-checklist.md +64 -0
  377. package/docs/readme.md +27 -0
  378. package/npm-shrinkwrap.json +7124 -0
  379. package/package.json +17 -7
  380. package/dist/ink/index.d.ts +0 -54
  381. package/dist/ink/index.d.ts.map +0 -1
  382. package/dist/ink/index.js +0 -111
  383. package/dist/ink/index.js.map +0 -1
  384. package/dist/services/compact/micro-compact.d.ts +0 -21
  385. package/dist/services/compact/micro-compact.d.ts.map +0 -1
  386. package/dist/services/compact/micro-compact.js +0 -99
  387. package/dist/services/compact/micro-compact.js.map +0 -1
  388. package/dist/ui-v2/components/command-palette.d.ts +0 -2
  389. package/dist/ui-v2/components/command-palette.d.ts.map +0 -1
  390. package/dist/ui-v2/components/command-palette.js +0 -18
  391. package/dist/ui-v2/components/command-palette.js.map +0 -1
  392. package/dist/ui-v2/components/edit-preview-picker.d.ts +0 -26
  393. package/dist/ui-v2/components/edit-preview-picker.d.ts.map +0 -1
  394. package/dist/ui-v2/components/edit-preview-picker.js +0 -79
  395. package/dist/ui-v2/components/edit-preview-picker.js.map +0 -1
  396. package/dist/ui-v2/components/session-picker.d.ts +0 -19
  397. package/dist/ui-v2/components/session-picker.d.ts.map +0 -1
  398. package/dist/ui-v2/components/session-picker.js +0 -52
  399. package/dist/ui-v2/components/session-picker.js.map +0 -1
  400. package/dist/ui-v2/components/shell.d.ts +0 -36
  401. package/dist/ui-v2/components/shell.d.ts.map +0 -1
  402. package/dist/ui-v2/components/shell.js +0 -131
  403. package/dist/ui-v2/components/shell.js.map +0 -1
  404. package/dist/ui-v2/index.d.ts +0 -11
  405. package/dist/ui-v2/index.d.ts.map +0 -1
  406. package/dist/ui-v2/index.js +0 -27
  407. package/dist/ui-v2/index.js.map +0 -1
  408. package/dist/ui-v2/runtime/text.d.ts +0 -2
  409. package/dist/ui-v2/runtime/text.d.ts.map +0 -1
  410. package/dist/ui-v2/runtime/text.js +0 -18
  411. package/dist/ui-v2/runtime/text.js.map +0 -1
  412. package/dist/ui-v2/state/input-reducer.d.ts +0 -39
  413. package/dist/ui-v2/state/input-reducer.d.ts.map +0 -1
  414. package/dist/ui-v2/state/input-reducer.js +0 -82
  415. package/dist/ui-v2/state/input-reducer.js.map +0 -1
  416. package/dist/ui-v2/state/picker.d.ts +0 -16
  417. package/dist/ui-v2/state/picker.d.ts.map +0 -1
  418. package/dist/ui-v2/state/picker.js +0 -52
  419. package/dist/ui-v2/state/picker.js.map +0 -1
  420. package/dist/ui-v2/state/sessions.d.ts +0 -15
  421. package/dist/ui-v2/state/sessions.d.ts.map +0 -1
  422. package/dist/ui-v2/state/sessions.js +0 -70
  423. package/dist/ui-v2/state/sessions.js.map +0 -1
  424. package/dist/ui-v2/state/suggestions.d.ts +0 -2
  425. package/dist/ui-v2/state/suggestions.d.ts.map +0 -1
  426. package/dist/ui-v2/state/suggestions.js +0 -18
  427. package/dist/ui-v2/state/suggestions.js.map +0 -1
  428. package/dist/ui-v2/types.d.ts +0 -2
  429. package/dist/ui-v2/types.d.ts.map +0 -1
  430. package/dist/ui-v2/types.js +0 -18
  431. package/dist/ui-v2/types.js.map +0 -1
@@ -20,10 +20,12 @@ const tool_artifacts_1 = require("../core/tool-artifacts");
20
20
  const skills_1 = require("../skills");
21
21
  const subagents_1 = require("./subagents");
22
22
  const file_context_1 = require("../services/file-context");
23
- const prompt_context_1 = require("../services/prompt-context");
23
+ const prompt_context_1 = require("../memory/prompt-context");
24
+ const prompt_context_2 = require("../services/prompt-context");
24
25
  const workspace_state_1 = require("../services/workspace-state");
25
26
  const verification_profile_1 = require("../services/verification-profile");
26
27
  const ui_events_1 = require("./ui-events");
28
+ const ui_view_model_1 = require("./ui-view-model");
27
29
  const agent_status_1 = require("./agent-status");
28
30
  const loop_budget_1 = require("./loop-budget");
29
31
  const observability_1 = require("../utils/observability");
@@ -32,7 +34,9 @@ const chat_checkpoint_1 = require("./chat-checkpoint");
32
34
  const chat_workspace_1 = require("./chat-workspace");
33
35
  const chat_presentation_1 = require("./chat-presentation");
34
36
  const chat_effort_1 = require("./chat-effort");
37
+ const chat_compact_1 = require("./chat-compact");
35
38
  const agent_mode_1 = require("../framework/agent-mode");
39
+ const chat_command_scope_1 = require("./chat-command-scope");
36
40
  var chat_presentation_2 = require("./chat-presentation");
37
41
  Object.defineProperty(exports, "createAssistantStreamPresenter", { enumerable: true, get: function () { return chat_presentation_2.createAssistantStreamPresenter; } });
38
42
  Object.defineProperty(exports, "createToolEventPresenter", { enumerable: true, get: function () { return chat_presentation_2.createToolEventPresenter; } });
@@ -42,9 +46,11 @@ class AgentChatController {
42
46
  this.goalCoordinator = coord;
43
47
  }
44
48
  resolveToolAllowlist() {
45
- // Reload on every scheduling boundary so a project/global approval selected
46
- // by the interactive prompt affects the very next tool call in this process.
47
- return (0, tool_allowlist_1.resolveProjectToolAllowlist)(this.runtime.cwd).evaluator;
49
+ // Resolve on every evaluation, including execution. A model response can
50
+ // contain several serial calls prepared before the first permission prompt;
51
+ // once the user chooses project/global scope, the next call in that same
52
+ // response must observe the persisted grant instead of prompting again.
53
+ return (toolName, args) => (0, tool_allowlist_1.resolveProjectToolAllowlist)(this.runtime.cwd).evaluator?.(toolName, args);
48
54
  }
49
55
  constructor(runtime, events, controllerOptions = {}) {
50
56
  this.runtime = runtime;
@@ -79,21 +85,6 @@ class AgentChatController {
79
85
  await this.runChat(text, options);
80
86
  return;
81
87
  }
82
- if (parsed.name === 'clear') {
83
- if (this.events.clearView) {
84
- this.events.clearView();
85
- }
86
- else {
87
- this.events.clearTranscript();
88
- }
89
- this.events.setStatus('View cleared. Conversation context is preserved.');
90
- return;
91
- }
92
- if (parsed.name === 'exit' || parsed.name === 'quit' || parsed.name === 'q') {
93
- this.events.shutdownRequested?.('user request');
94
- await this.runtime.shutdown();
95
- return;
96
- }
97
88
  const command = (0, commands_1.findCommand)(parsed.name);
98
89
  if (!command) {
99
90
  if ((0, skills_1.hasMatchingSkill)(text, this.runtime.cwd)) {
@@ -111,6 +102,24 @@ class AgentChatController {
111
102
  });
112
103
  return;
113
104
  }
105
+ const activeRenderer = this.controllerOptions.uiRenderer ?? this.runtime.config.ui?.renderer ?? 'terminal';
106
+ if ((0, chat_command_scope_1.rejectUnsupportedRenderer)(this.events, command, activeRenderer))
107
+ return;
108
+ if (parsed.name === 'clear') {
109
+ if (this.events.clearView) {
110
+ this.events.clearView();
111
+ }
112
+ else {
113
+ this.events.clearTranscript();
114
+ }
115
+ this.events.setStatus('View cleared. Conversation context is preserved.');
116
+ return;
117
+ }
118
+ if (parsed.name === 'exit' || parsed.name === 'quit' || parsed.name === 'q') {
119
+ this.events.shutdownRequested?.('user request');
120
+ await this.runtime.shutdown();
121
+ return;
122
+ }
114
123
  const compatibilityAlias = command.compatibilityAliases?.find(alias => alias.name.toLowerCase() === parsed.name.toLowerCase());
115
124
  const deprecation = compatibilityAlias?.lifecycle ??
116
125
  (command.lifecycle.status === 'deprecated' ? command.lifecycle : undefined);
@@ -342,12 +351,7 @@ class AgentChatController {
342
351
  allowlist: toolAllowlist?.(action.tool, action.args),
343
352
  toolConfirmation: this.runtime.config.toolConfirmation,
344
353
  });
345
- // Local exec is a hidden shortcut rather than a plan artifact. Even a
346
- // read-only command must not execute through that shortcut in plan mode.
347
- if (effectivePermissionMode === 'plan' && action.tool === 'exec_command') {
348
- throw new chat_presentation_1.LocalFastPathBlockedError('Local run-test fast path is blocked in plan mode; switch mode before executing commands.');
349
- }
350
- if (effective.outcome === 'deny' || effective.outcome === 'block') {
354
+ if (effective.outcome === 'deny') {
351
355
  throw new chat_presentation_1.LocalFastPathBlockedError(effective.reason ||
352
356
  `Local fast path blocked by ${effective.source ?? 'permission policy'}.`);
353
357
  }
@@ -445,6 +449,7 @@ class AgentChatController {
445
449
  turnId,
446
450
  type: 'complete',
447
451
  finishReason: stats.finishReason,
452
+ stopDecision: stats.stopDecision,
448
453
  llmRequests: stats.llmRequests,
449
454
  toolCalls: stats.toolCalls,
450
455
  readOnlyToolCalls: stats.readOnlyToolCalls,
@@ -456,10 +461,6 @@ class AgentChatController {
456
461
  content: assistantContent,
457
462
  timestamp: Date.now(),
458
463
  });
459
- const recordedMessages = (0, session_storage_1.readSessionMessages)(sessionId);
460
- if (recordedMessages.length > 0) {
461
- (0, session_storage_1.updateSessionSummary)(sessionId, recordedMessages);
462
- }
463
464
  }
464
465
  this.events.setStatus(envelope.success ? `Completed local ${action.label}` : `Failed local ${action.label}`);
465
466
  }
@@ -487,6 +488,7 @@ class AgentChatController {
487
488
  turnId,
488
489
  type: 'complete',
489
490
  finishReason: stats.finishReason,
491
+ stopDecision: stats.stopDecision,
490
492
  llmRequests: stats.llmRequests,
491
493
  toolCalls: stats.toolCalls,
492
494
  localFastPathUsed: true,
@@ -507,6 +509,7 @@ class AgentChatController {
507
509
  store: this.runtime.store,
508
510
  llm: this.runtime.llm,
509
511
  compactCoordinator: this.runtime.compactCoordinator,
512
+ modelCoordinator: this.runtime.modelCoordinator,
510
513
  runtime: this.runtime.runtime,
511
514
  sessionId: this.runtime.getSession()?.id,
512
515
  turnId,
@@ -523,6 +526,7 @@ class AgentChatController {
523
526
  this.events.sessionRestored?.(event);
524
527
  },
525
528
  getSession: this.runtime.getSession,
529
+ getActiveGoal: () => this.goalCoordinator?.goal ?? null,
526
530
  abortSignal,
527
531
  writeOutput: text => {
528
532
  if (text.trim()) {
@@ -687,7 +691,7 @@ class AgentChatController {
687
691
  if (options.persistAsUserMessage !== false) {
688
692
  this.runtime.store.addMessage({ role: 'user', content: input });
689
693
  }
690
- (0, prompt_context_1.refreshProjectInstructions)(this.runtime.store, this.runtime.cwd);
694
+ (0, prompt_context_2.refreshProjectInstructions)(this.runtime.store, this.runtime.cwd);
691
695
  const snapshot = this.runtime.store.getSnapshot();
692
696
  const effectivePermissionMode = this.runtime.store.getEffectivePermissionMode();
693
697
  const onPlanModeChange = (0, agent_mode_1.createPlanModeChangeHandler)(this.runtime.store, this.controllerOptions.agentModeLifecycle);
@@ -832,12 +836,31 @@ class AgentChatController {
832
836
  : null;
833
837
  const subtaskTool = subagentBundle?.tool ?? null;
834
838
  const turnTools = subtaskTool ? [...skillResolution.tools, subtaskTool] : skillResolution.tools;
839
+ const memoryPrompt = (0, prompt_context_1.buildMemoryPromptContext)(input, this.runtime.cwd);
840
+ if (sessionId) {
841
+ const selected = memoryPrompt.manifest.selected.map(item => `memory:${item.name}`);
842
+ const omitted = memoryPrompt.manifest.omitted.map(item => `memory:${item.name}`);
843
+ (0, chat_trace_1.recordTraceEvent)(this.events, sessionId, {
844
+ turnId: String(turnId),
845
+ type: 'message',
846
+ name: 'memory_context',
847
+ argsSummary: JSON.stringify({
848
+ budgetChars: memoryPrompt.manifest.budgetChars,
849
+ usedChars: memoryPrompt.manifest.usedChars,
850
+ candidateCount: memoryPrompt.manifest.candidateCount,
851
+ entrypointTruncated: memoryPrompt.manifest.entrypoint.truncated,
852
+ selected: selected.slice(0, 10),
853
+ omitted: omitted.slice(0, 10),
854
+ }),
855
+ contentBytes: Buffer.byteLength(memoryPrompt.content, 'utf8'),
856
+ });
857
+ }
835
858
  const promptCtx = {
836
859
  cwd: this.runtime.cwd,
837
860
  platform: process.platform,
838
861
  nodeVersion: process.version,
839
862
  tools: turnTools,
840
- memoryContent: snapshot.memoryContent,
863
+ memoryContent: memoryPrompt.content,
841
864
  skillsContent: snapshot.skillsContent,
842
865
  projectInstructionsContent: snapshot.projectInstructionsContent,
843
866
  activeSkillsContent: skillResolution.promptInjection,
@@ -915,10 +938,9 @@ class AgentChatController {
915
938
  onPlanModeChange,
916
939
  });
917
940
  };
918
- const resolvedLoopBudget = (0, loop_budget_1.resolveRuntimeLoopBudget)(input, this.runtime.config, harness.toJSON());
919
941
  const loopBudget = options.inputKind === 'goal_continuation'
920
- ? (0, loop_budget_1.capAutonomousGoalLoopBudget)(resolvedLoopBudget)
921
- : resolvedLoopBudget;
942
+ ? (0, loop_budget_1.resolveAutonomousGoalLoopBudget)(this.runtime.config)
943
+ : (0, loop_budget_1.resolveRuntimeLoopBudget)(input, this.runtime.config, harness.toJSON());
922
944
  let observedTurnsStarted = 0;
923
945
  let observedLlmRequests = 0;
924
946
  let observedToolCalls = 0;
@@ -980,6 +1002,9 @@ class AgentChatController {
980
1002
  this.runtime.store.setContextUsage(usage);
981
1003
  },
982
1004
  compactCoordinator: this.runtime.compactCoordinator,
1005
+ onCompactPrepare: sessionId
1006
+ ? () => (0, session_storage_1.prepareSessionCompactSourceReceipt)(sessionId)
1007
+ : undefined,
983
1008
  })) {
984
1009
  switch (event.type) {
985
1010
  case 'request_start':
@@ -1012,6 +1037,10 @@ class AgentChatController {
1012
1037
  promptOmittedEvidence: event.omittedEvidence,
1013
1038
  promptIncludedEvidenceCount: event.includedEvidenceCount,
1014
1039
  promptOmittedEvidenceCount: event.omittedEvidenceCount,
1040
+ promptSectionManifest: event.sectionManifest,
1041
+ promptOverBudget: event.overBudget,
1042
+ promptCapabilityProfileVersion: event.capabilityProfileVersion,
1043
+ promptCapabilityProfileFingerprint: event.capabilityProfileFingerprint,
1015
1044
  });
1016
1045
  }
1017
1046
  break;
@@ -1094,6 +1123,7 @@ class AgentChatController {
1094
1123
  }
1095
1124
  break;
1096
1125
  case 'permission_decision':
1126
+ toolEvents.permission(event);
1097
1127
  if (sessionId) {
1098
1128
  (0, chat_trace_1.recordTraceEvent)(this.events, sessionId, {
1099
1129
  turnId,
@@ -1220,6 +1250,7 @@ class AgentChatController {
1220
1250
  model: event.model,
1221
1251
  contentBytes: (0, chat_trace_1.byteLength)(event.content || ''),
1222
1252
  finishReason: event.stats.finishReason,
1253
+ stopDecision: event.stats.stopDecision,
1223
1254
  llmRequests: event.stats.llmRequests,
1224
1255
  toolCalls: event.stats.toolCalls,
1225
1256
  readOnlyToolCalls: event.stats.readOnlyToolCalls,
@@ -1234,6 +1265,9 @@ class AgentChatController {
1234
1265
  budgetExceededReason: event.stats.budgetExceededReason,
1235
1266
  continuationActions: event.stats.continuationActions,
1236
1267
  continuationHint: event.stats.continuationHint,
1268
+ lastToolName: event.stats.lastToolName,
1269
+ lastToolSummary: event.stats.lastToolSummary,
1270
+ lastToolSuccess: event.stats.lastToolSuccess,
1237
1271
  localFastPathUsed: event.stats.localFastPathUsed,
1238
1272
  };
1239
1273
  }
@@ -1325,10 +1359,10 @@ class AgentChatController {
1325
1359
  }
1326
1360
  const stats = pendingCompleteStats ?? this.runtime.store.getSnapshot().lastLoopStats;
1327
1361
  if (stats) {
1328
- pendingCompleteStats = {
1329
- ...(0, chat_workspace_1.withVerificationLoopStats)(stats, summary),
1330
- finishReason: 'completion_gate',
1331
- };
1362
+ pendingCompleteStats = (0, framework_1.withLoopFinishReason)((0, chat_workspace_1.withVerificationLoopStats)(stats, summary), 'completion_gate');
1363
+ if (pendingCompleteTrace) {
1364
+ pendingCompleteTrace.stopDecision = pendingCompleteStats.stopDecision;
1365
+ }
1332
1366
  }
1333
1367
  }
1334
1368
  else if (profile.changedFiles.length > 0 && profile.required) {
@@ -1337,35 +1371,20 @@ class AgentChatController {
1337
1371
  }
1338
1372
  if (pendingCompleteStats?.finishReason === 'budget_exceeded') {
1339
1373
  const stats = pendingCompleteStats;
1340
- const lines = ['Loop budget reached — stopping this turn.'];
1341
- if (stats.budgetExceededReason) {
1342
- lines.push(`Reason: ${stats.budgetExceededReason}`);
1343
- }
1344
- const progressParts = [];
1345
- if (typeof stats.loopBudgetMaxLlmRequests === 'number') {
1346
- progressParts.push(`${stats.llmRequests ?? 0}/${stats.loopBudgetMaxLlmRequests} LLM requests`);
1347
- }
1348
- if (typeof stats.loopBudgetMaxToolCalls === 'number') {
1349
- progressParts.push(`${stats.toolCalls ?? 0}/${stats.loopBudgetMaxToolCalls} tool calls`);
1350
- }
1351
- if (progressParts.length) {
1352
- lines.push(`Progress: ${progressParts.join(', ')}`);
1353
- }
1354
- if (stats.continuationActions?.length) {
1355
- lines.push(`Next: ${stats.continuationActions.join('; ')}`);
1356
- }
1357
- else if (stats.continuationHint) {
1358
- lines.push(`Next: ${stats.continuationHint}`);
1359
- }
1360
- const notice = lines.join('\n');
1374
+ const budgetStop = (0, ui_view_model_1.createLoopBudgetStopView)(stats);
1375
+ const notice = (0, ui_view_model_1.formatLoopBudgetStopView)(budgetStop, (0, ui_view_model_1.budgetStopLocaleForInput)(input));
1361
1376
  this.events.append({
1362
1377
  role: 'status',
1363
1378
  title: 'budget',
1364
1379
  statusTone: 'warning',
1365
1380
  content: notice,
1381
+ budgetStop,
1366
1382
  });
1367
1383
  finalContent = finalContent ? `${finalContent}\n\n${notice}` : notice;
1368
1384
  (0, chat_trace_1.appendAssistantNotice)(sessionMessagesToRecord, notice);
1385
+ if (pendingCompleteTrace) {
1386
+ pendingCompleteTrace.contentBytes = (0, chat_trace_1.byteLength)(finalContent);
1387
+ }
1369
1388
  }
1370
1389
  if (pendingCompleteStats) {
1371
1390
  this.setLoopStats(this.foldSubagentUsage(pendingCompleteStats, subagentBundle));
@@ -1376,64 +1395,30 @@ class AgentChatController {
1376
1395
  if (sessionId && sessionMessagesToRecord.length > 0) {
1377
1396
  (0, session_storage_1.appendSessionMessages)(sessionId, sessionMessagesToRecord);
1378
1397
  }
1398
+ harness.ingestTurn({
1399
+ userInput: input,
1400
+ assistantContent: finalContent,
1401
+ sessionMessages: sessionMessagesToRecord,
1402
+ intent,
1403
+ });
1404
+ const harnessState = harness.toJSON();
1405
+ this.runtime.store.setState({ harnessState });
1406
+ (0, chat_trace_1.emitHarnessDiagnostics)(this.events, harnessState);
1407
+ if (sessionId) {
1408
+ (0, session_storage_1.updateSessionHarnessState)(sessionId, harnessState);
1409
+ }
1379
1410
  if (pendingCompact) {
1380
- try {
1381
- let committedCheckpointId;
1382
- if (sessionId) {
1383
- const sourceMessageCount = (0, session_storage_1.readSessionMessages)(sessionId).length;
1384
- const checkpoint = (0, session_storage_1.commitSessionCompactCheckpoint)({
1385
- sessionId,
1386
- mode: pendingCompact.mode,
1387
- modelId: finalModel || this.runtime.llm.getModel(),
1388
- sourceMessageCount,
1389
- transcriptStartMessageIndex: Math.max(0, sourceMessageCount - 20),
1390
- modelHistory: pendingCompact.modelHistory,
1391
- summary: pendingCompact.summary,
1392
- beforeUsage: pendingCompact.before,
1393
- afterUsage: pendingCompact.after,
1394
- });
1395
- committedCheckpointId = checkpoint.checkpointId;
1396
- this.runtime.store.setState({ conversationHistory: checkpoint.modelHistory });
1397
- }
1398
- else {
1399
- this.runtime.store.setState({
1400
- conversationHistory: pendingCompact.modelHistory.filter(message => message.role !== 'system'),
1401
- });
1402
- }
1403
- this.runtime.store.setContextUsage(pendingCompact.after);
1404
- if (sessionId) {
1405
- (0, chat_trace_1.recordTraceEvent)(this.events, sessionId, {
1406
- turnId,
1407
- type: 'compact_completed',
1408
- checkpointId: committedCheckpointId,
1409
- model: finalModel || this.runtime.llm.getModel(),
1410
- note: pendingCompact.mode,
1411
- });
1412
- }
1413
- this.events.append({
1414
- role: 'status',
1415
- title: 'auto-compact',
1416
- statusTone: 'neutral',
1417
- content: `Context reached ${pendingCompact.before.percent}% of the safe input budget. Agent core committed a ${pendingCompact.mode} compact checkpoint; current context is ${pendingCompact.after.percent}%.`,
1418
- });
1419
- }
1420
- catch (error) {
1421
- if (sessionId) {
1422
- (0, chat_trace_1.recordTraceEvent)(this.events, sessionId, {
1423
- turnId,
1424
- type: 'compact_failed',
1425
- model: finalModel || this.runtime.llm.getModel(),
1426
- error: (0, chat_trace_1.compactTraceError)(error),
1427
- note: pendingCompact.mode,
1428
- });
1429
- }
1430
- this.events.append({
1431
- role: 'error',
1432
- title: 'compact-failed',
1433
- content: `Compact checkpoint failed; the previous model context remains active. ${error instanceof Error ? error.message : String(error)}`,
1434
- errorLayer: 'runtime',
1435
- });
1436
- }
1411
+ (0, chat_compact_1.commitChatCompact)({
1412
+ pendingCompact,
1413
+ sessionId,
1414
+ turnId,
1415
+ modelId: finalModel || this.runtime.llm.getModel(),
1416
+ sessionMessages: sessionMessagesToRecord,
1417
+ harnessState,
1418
+ activeGoal: this.goalCoordinator?.goal,
1419
+ store: this.runtime.store,
1420
+ events: this.events,
1421
+ });
1437
1422
  }
1438
1423
  if (finalUsage) {
1439
1424
  // Fold subagent token usage into /cost accounting.
@@ -1446,25 +1431,11 @@ class AgentChatController {
1446
1431
  }
1447
1432
  this.runtime.store.setTokenUsage(finalUsage);
1448
1433
  }
1449
- harness.ingestTurn({
1450
- userInput: input,
1451
- assistantContent: finalContent,
1452
- sessionMessages: sessionMessagesToRecord,
1453
- intent,
1454
- });
1455
- const harnessState = harness.toJSON();
1456
- this.runtime.store.setState({ harnessState });
1457
- (0, chat_trace_1.emitHarnessDiagnostics)(this.events, harnessState);
1458
1434
  if (sessionId) {
1459
1435
  if (pendingCompleteTrace) {
1460
1436
  (0, chat_trace_1.recordTraceEvent)(this.events, sessionId, pendingCompleteTrace);
1461
1437
  }
1462
1438
  (0, session_storage_1.updateSessionSkills)(sessionId, appliedSkillNames);
1463
- (0, session_storage_1.updateSessionHarnessState)(sessionId, harnessState);
1464
- const recordedMessages = (0, session_storage_1.readSessionMessages)(sessionId);
1465
- if (recordedMessages.length > 0) {
1466
- (0, session_storage_1.updateSessionSummary)(sessionId, recordedMessages);
1467
- }
1468
1439
  }
1469
1440
  this.events.setStatus(finalModel ? `Completed with ${finalModel}` : 'Completed');
1470
1441
  }
@@ -1594,6 +1565,7 @@ class AgentChatController {
1594
1565
  model: failedStats.providerFinalModel ?? this.runtime.llm.getModel(),
1595
1566
  contentBytes: 0,
1596
1567
  finishReason: failedStats.finishReason,
1568
+ stopDecision: failedStats.stopDecision,
1597
1569
  llmRequests: failedStats.llmRequests,
1598
1570
  toolCalls: failedStats.toolCalls,
1599
1571
  readOnlyToolCalls: failedStats.readOnlyToolCalls,