@orion-agents/orion-code 0.1.1 → 0.1.2

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 (602) hide show
  1. package/README.md +93 -68
  2. package/README.zh-CN.md +181 -216
  3. package/dist/cli.js +13 -17
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/index.d.ts.map +1 -1
  6. package/dist/commands/index.js +213 -114
  7. package/dist/commands/index.js.map +1 -1
  8. package/dist/commands/target-command.d.ts.map +1 -1
  9. package/dist/commands/target-command.js +42 -8
  10. package/dist/commands/target-command.js.map +1 -1
  11. package/dist/core/agent.d.ts.map +1 -1
  12. package/dist/core/agent.js +2 -2
  13. package/dist/core/agent.js.map +1 -1
  14. package/dist/framework/external-assertion.d.ts +65 -0
  15. package/dist/framework/external-assertion.d.ts.map +1 -0
  16. package/dist/framework/external-assertion.js +571 -0
  17. package/dist/framework/external-assertion.js.map +1 -0
  18. package/dist/framework/index.d.ts +6 -4
  19. package/dist/framework/index.d.ts.map +1 -1
  20. package/dist/framework/index.js +4 -1
  21. package/dist/framework/index.js.map +1 -1
  22. package/dist/framework/query.d.ts +15 -1
  23. package/dist/framework/query.d.ts.map +1 -1
  24. package/dist/framework/query.js +42 -23
  25. package/dist/framework/query.js.map +1 -1
  26. package/dist/framework/tool-scheduler.d.ts +2 -0
  27. package/dist/framework/tool-scheduler.d.ts.map +1 -1
  28. package/dist/framework/tool-scheduler.js +23 -9
  29. package/dist/framework/tool-scheduler.js.map +1 -1
  30. package/dist/framework/tool-serializer.d.ts.map +1 -1
  31. package/dist/framework/tool-serializer.js +20 -4
  32. package/dist/framework/tool-serializer.js.map +1 -1
  33. package/dist/framework/tool.d.ts +11 -5
  34. package/dist/framework/tool.d.ts.map +1 -1
  35. package/dist/framework/tool.js.map +1 -1
  36. package/dist/harness/safety.d.ts.map +1 -1
  37. package/dist/harness/safety.js +19 -3
  38. package/dist/harness/safety.js.map +1 -1
  39. package/dist/init.d.ts +1 -1
  40. package/dist/init.d.ts.map +1 -1
  41. package/dist/init.js +115 -34
  42. package/dist/init.js.map +1 -1
  43. package/dist/memory/storage.d.ts.map +1 -1
  44. package/dist/memory/storage.js +1 -0
  45. package/dist/memory/storage.js.map +1 -1
  46. package/dist/memory/store.d.ts.map +1 -1
  47. package/dist/memory/store.js +11 -5
  48. package/dist/memory/store.js.map +1 -1
  49. package/dist/print-ui/launch.d.ts +4 -0
  50. package/dist/print-ui/launch.d.ts.map +1 -1
  51. package/dist/print-ui/launch.js +102 -9
  52. package/dist/print-ui/launch.js.map +1 -1
  53. package/dist/product/identity.d.ts +2 -2
  54. package/dist/product/identity.d.ts.map +1 -1
  55. package/dist/product/identity.js +2 -2
  56. package/dist/product/identity.js.map +1 -1
  57. package/dist/product/index.d.ts +2 -1
  58. package/dist/product/index.d.ts.map +1 -1
  59. package/dist/product/index.js +5 -1
  60. package/dist/product/index.js.map +1 -1
  61. package/dist/product/version.d.ts +12 -0
  62. package/dist/product/version.d.ts.map +1 -0
  63. package/dist/product/version.js +31 -0
  64. package/dist/product/version.js.map +1 -0
  65. package/dist/runtime/agent-runtime-controller.d.ts +34 -0
  66. package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
  67. package/dist/runtime/agent-runtime-controller.js +953 -148
  68. package/dist/runtime/agent-runtime-controller.js.map +1 -1
  69. package/dist/runtime/agent-runtime-protocol.d.ts +7 -2
  70. package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
  71. package/dist/runtime/agent-runtime-protocol.js +6 -0
  72. package/dist/runtime/agent-runtime-protocol.js.map +1 -1
  73. package/dist/runtime/chat-controller.d.ts +6 -0
  74. package/dist/runtime/chat-controller.d.ts.map +1 -1
  75. package/dist/runtime/chat-controller.js +200 -19
  76. package/dist/runtime/chat-controller.js.map +1 -1
  77. package/dist/runtime/goals/accounting.d.ts +28 -0
  78. package/dist/runtime/goals/accounting.d.ts.map +1 -1
  79. package/dist/runtime/goals/accounting.js +69 -0
  80. package/dist/runtime/goals/accounting.js.map +1 -1
  81. package/dist/runtime/goals/completion-audit.d.ts +13 -8
  82. package/dist/runtime/goals/completion-audit.d.ts.map +1 -1
  83. package/dist/runtime/goals/completion-audit.js +598 -16
  84. package/dist/runtime/goals/completion-audit.js.map +1 -1
  85. package/dist/runtime/goals/coordinator.d.ts +44 -5
  86. package/dist/runtime/goals/coordinator.d.ts.map +1 -1
  87. package/dist/runtime/goals/coordinator.js +1124 -58
  88. package/dist/runtime/goals/coordinator.js.map +1 -1
  89. package/dist/runtime/goals/evidence.d.ts +37 -0
  90. package/dist/runtime/goals/evidence.d.ts.map +1 -0
  91. package/dist/runtime/goals/evidence.js +300 -0
  92. package/dist/runtime/goals/evidence.js.map +1 -0
  93. package/dist/runtime/goals/presentation.d.ts +4 -0
  94. package/dist/runtime/goals/presentation.d.ts.map +1 -0
  95. package/dist/runtime/goals/presentation.js +50 -0
  96. package/dist/runtime/goals/presentation.js.map +1 -0
  97. package/dist/runtime/goals/prompt.d.ts.map +1 -1
  98. package/dist/runtime/goals/prompt.js +38 -8
  99. package/dist/runtime/goals/prompt.js.map +1 -1
  100. package/dist/runtime/goals/tools.d.ts +18 -1
  101. package/dist/runtime/goals/tools.d.ts.map +1 -1
  102. package/dist/runtime/goals/tools.js +308 -28
  103. package/dist/runtime/goals/tools.js.map +1 -1
  104. package/dist/runtime/goals/types.d.ts +241 -7
  105. package/dist/runtime/goals/types.d.ts.map +1 -1
  106. package/dist/runtime/goals/types.js +8 -2
  107. package/dist/runtime/goals/types.js.map +1 -1
  108. package/dist/runtime/subagents/child-executor-guard.d.ts +12 -4
  109. package/dist/runtime/subagents/child-executor-guard.d.ts.map +1 -1
  110. package/dist/runtime/subagents/child-executor-guard.js +397 -61
  111. package/dist/runtime/subagents/child-executor-guard.js.map +1 -1
  112. package/dist/runtime/subagents/presets.d.ts +4 -5
  113. package/dist/runtime/subagents/presets.d.ts.map +1 -1
  114. package/dist/runtime/subagents/presets.js +18 -33
  115. package/dist/runtime/subagents/presets.js.map +1 -1
  116. package/dist/runtime/subagents/production.d.ts +3 -1
  117. package/dist/runtime/subagents/production.d.ts.map +1 -1
  118. package/dist/runtime/subagents/production.js +37 -7
  119. package/dist/runtime/subagents/production.js.map +1 -1
  120. package/dist/runtime/subagents/runner.d.ts.map +1 -1
  121. package/dist/runtime/subagents/runner.js +24 -3
  122. package/dist/runtime/subagents/runner.js.map +1 -1
  123. package/dist/runtime/subagents/runtime-integration.d.ts +3 -0
  124. package/dist/runtime/subagents/runtime-integration.d.ts.map +1 -1
  125. package/dist/runtime/subagents/runtime-integration.js +18 -7
  126. package/dist/runtime/subagents/runtime-integration.js.map +1 -1
  127. package/dist/runtime/subagents/supervisor.d.ts +4 -4
  128. package/dist/runtime/subagents/supervisor.d.ts.map +1 -1
  129. package/dist/runtime/subagents/supervisor.js +39 -19
  130. package/dist/runtime/subagents/supervisor.js.map +1 -1
  131. package/dist/runtime/subagents/types.d.ts +7 -0
  132. package/dist/runtime/subagents/types.d.ts.map +1 -1
  133. package/dist/runtime/subagents/types.js +12 -1
  134. package/dist/runtime/subagents/types.js.map +1 -1
  135. package/dist/runtime/ui-events.d.ts +6 -0
  136. package/dist/runtime/ui-events.d.ts.map +1 -1
  137. package/dist/runtime/ui-events.js +5 -5
  138. package/dist/runtime/ui-events.js.map +1 -1
  139. package/dist/services/config.d.ts +1 -1
  140. package/dist/services/config.d.ts.map +1 -1
  141. package/dist/services/config.js +53 -48
  142. package/dist/services/config.js.map +1 -1
  143. package/dist/services/doctor.d.ts.map +1 -1
  144. package/dist/services/doctor.js +163 -17
  145. package/dist/services/doctor.js.map +1 -1
  146. package/dist/services/goal-storage.d.ts +9 -4
  147. package/dist/services/goal-storage.d.ts.map +1 -1
  148. package/dist/services/goal-storage.js +1113 -75
  149. package/dist/services/goal-storage.js.map +1 -1
  150. package/dist/services/llm.d.ts +19 -0
  151. package/dist/services/llm.d.ts.map +1 -1
  152. package/dist/services/llm.js +153 -20
  153. package/dist/services/llm.js.map +1 -1
  154. package/dist/services/model-registry.d.ts +1 -1
  155. package/dist/services/model-registry.d.ts.map +1 -1
  156. package/dist/services/model-registry.js +69 -19
  157. package/dist/services/model-registry.js.map +1 -1
  158. package/dist/services/provider-resilience/coordinator.d.ts +2 -1
  159. package/dist/services/provider-resilience/coordinator.d.ts.map +1 -1
  160. package/dist/services/provider-resilience/coordinator.js +7 -6
  161. package/dist/services/provider-resilience/coordinator.js.map +1 -1
  162. package/dist/services/provider-resilience/error-classifier.d.ts.map +1 -1
  163. package/dist/services/provider-resilience/error-classifier.js +67 -17
  164. package/dist/services/provider-resilience/error-classifier.js.map +1 -1
  165. package/dist/services/provider-resilience/types.d.ts +1 -1
  166. package/dist/services/provider-resilience/types.d.ts.map +1 -1
  167. package/dist/services/provider-resilience/types.js.map +1 -1
  168. package/dist/services/redaction.d.ts.map +1 -1
  169. package/dist/services/redaction.js +9 -1
  170. package/dist/services/redaction.js.map +1 -1
  171. package/dist/services/session-storage.d.ts +12 -1
  172. package/dist/services/session-storage.d.ts.map +1 -1
  173. package/dist/services/session-storage.js +23 -7
  174. package/dist/services/session-storage.js.map +1 -1
  175. package/dist/services/storage-maintenance.d.ts +73 -3
  176. package/dist/services/storage-maintenance.d.ts.map +1 -1
  177. package/dist/services/storage-maintenance.js +771 -104
  178. package/dist/services/storage-maintenance.js.map +1 -1
  179. package/dist/services/task-manager.d.ts.map +1 -1
  180. package/dist/services/task-manager.js +2 -2
  181. package/dist/services/task-manager.js.map +1 -1
  182. package/dist/services/web-search-adapters.d.ts.map +1 -1
  183. package/dist/services/web-search-adapters.js +89 -49
  184. package/dist/services/web-search-adapters.js.map +1 -1
  185. package/dist/services/web-search-mcp.d.ts.map +1 -1
  186. package/dist/services/web-search-mcp.js +34 -37
  187. package/dist/services/web-search-mcp.js.map +1 -1
  188. package/dist/services/workspace-state.d.ts +4 -0
  189. package/dist/services/workspace-state.d.ts.map +1 -1
  190. package/dist/services/workspace-state.js +30 -9
  191. package/dist/services/workspace-state.js.map +1 -1
  192. package/dist/terminal-ui/launch.d.ts +2 -0
  193. package/dist/terminal-ui/launch.d.ts.map +1 -1
  194. package/dist/terminal-ui/launch.js +21 -7
  195. package/dist/terminal-ui/launch.js.map +1 -1
  196. package/dist/tools/git.d.ts.map +1 -1
  197. package/dist/tools/git.js +275 -27
  198. package/dist/tools/git.js.map +1 -1
  199. package/dist/tools/index.d.ts.map +1 -1
  200. package/dist/tools/index.js +23 -4
  201. package/dist/tools/index.js.map +1 -1
  202. package/dist/tools/mcp.d.ts.map +1 -1
  203. package/dist/tools/mcp.js +20 -12
  204. package/dist/tools/mcp.js.map +1 -1
  205. package/dist/tools/web.d.ts.map +1 -1
  206. package/dist/tools/web.js +38 -14
  207. package/dist/tools/web.js.map +1 -1
  208. package/dist/tui-ui/layout.d.ts.map +1 -1
  209. package/dist/tui-ui/layout.js +36 -23
  210. package/dist/tui-ui/layout.js.map +1 -1
  211. package/dist/tui-ui/pickers.d.ts.map +1 -1
  212. package/dist/tui-ui/pickers.js +4 -3
  213. package/dist/tui-ui/pickers.js.map +1 -1
  214. package/dist/tui-ui/runner.d.ts +1 -0
  215. package/dist/tui-ui/runner.d.ts.map +1 -1
  216. package/dist/tui-ui/runner.js +14 -0
  217. package/dist/tui-ui/runner.js.map +1 -1
  218. package/dist/tui-ui/state.d.ts +6 -0
  219. package/dist/tui-ui/state.d.ts.map +1 -1
  220. package/dist/tui-ui/state.js +60 -30
  221. package/dist/tui-ui/state.js.map +1 -1
  222. package/package.json +13 -9
  223. package/dist/core/state.d.ts +0 -94
  224. package/dist/core/state.d.ts.map +0 -1
  225. package/dist/core/state.js +0 -178
  226. package/dist/core/state.js.map +0 -1
  227. package/dist/ink/bidi.d.ts +0 -16
  228. package/dist/ink/bidi.d.ts.map +0 -1
  229. package/dist/ink/bidi.js +0 -124
  230. package/dist/ink/bidi.js.map +0 -1
  231. package/dist/ink/clearTerminal.d.ts +0 -14
  232. package/dist/ink/clearTerminal.d.ts.map +0 -1
  233. package/dist/ink/clearTerminal.js +0 -63
  234. package/dist/ink/clearTerminal.js.map +0 -1
  235. package/dist/ink/colorize.d.ts +0 -17
  236. package/dist/ink/colorize.d.ts.map +0 -1
  237. package/dist/ink/colorize.js +0 -208
  238. package/dist/ink/colorize.js.map +0 -1
  239. package/dist/ink/components/App.d.ts +0 -73
  240. package/dist/ink/components/App.d.ts.map +0 -1
  241. package/dist/ink/components/App.js +0 -646
  242. package/dist/ink/components/App.js.map +0 -1
  243. package/dist/ink/components/AppContext.d.ts +0 -12
  244. package/dist/ink/components/AppContext.d.ts.map +0 -1
  245. package/dist/ink/components/AppContext.js +0 -14
  246. package/dist/ink/components/AppContext.js.map +0 -1
  247. package/dist/ink/components/Box.d.ts +0 -44
  248. package/dist/ink/components/Box.d.ts.map +0 -1
  249. package/dist/ink/components/Box.js +0 -191
  250. package/dist/ink/components/Box.js.map +0 -1
  251. package/dist/ink/components/ClockContext.d.ts +0 -9
  252. package/dist/ink/components/ClockContext.d.ts.map +0 -1
  253. package/dist/ink/components/ClockContext.js +0 -146
  254. package/dist/ink/components/ClockContext.js.map +0 -1
  255. package/dist/ink/components/CursorDeclarationContext.d.ts +0 -23
  256. package/dist/ink/components/CursorDeclarationContext.d.ts.map +0 -1
  257. package/dist/ink/components/CursorDeclarationContext.js +0 -6
  258. package/dist/ink/components/CursorDeclarationContext.js.map +0 -1
  259. package/dist/ink/components/ErrorOverview.d.ts +0 -6
  260. package/dist/ink/components/ErrorOverview.d.ts.map +0 -1
  261. package/dist/ink/components/ErrorOverview.js +0 -27
  262. package/dist/ink/components/ErrorOverview.js.map +0 -1
  263. package/dist/ink/components/Newline.d.ts +0 -13
  264. package/dist/ink/components/Newline.d.ts.map +0 -1
  265. package/dist/ink/components/Newline.js +0 -36
  266. package/dist/ink/components/Newline.js.map +0 -1
  267. package/dist/ink/components/NoSelect.d.ts +0 -20
  268. package/dist/ink/components/NoSelect.d.ts.map +0 -1
  269. package/dist/ink/components/NoSelect.js +0 -63
  270. package/dist/ink/components/NoSelect.js.map +0 -1
  271. package/dist/ink/components/RawAnsi.d.ts +0 -17
  272. package/dist/ink/components/RawAnsi.d.ts.map +0 -1
  273. package/dist/ink/components/RawAnsi.js +0 -52
  274. package/dist/ink/components/RawAnsi.js.map +0 -1
  275. package/dist/ink/components/Spacer.d.ts +0 -6
  276. package/dist/ink/components/Spacer.d.ts.map +0 -1
  277. package/dist/ink/components/Spacer.js +0 -26
  278. package/dist/ink/components/Spacer.js.map +0 -1
  279. package/dist/ink/components/StdinContext.d.ts +0 -28
  280. package/dist/ink/components/StdinContext.d.ts.map +0 -1
  281. package/dist/ink/components/StdinContext.js +0 -19
  282. package/dist/ink/components/StdinContext.js.map +0 -1
  283. package/dist/ink/components/TerminalFocusContext.d.ts +0 -10
  284. package/dist/ink/components/TerminalFocusContext.d.ts.map +0 -1
  285. package/dist/ink/components/TerminalFocusContext.js +0 -81
  286. package/dist/ink/components/TerminalFocusContext.js.map +0 -1
  287. package/dist/ink/components/TerminalSizeContext.d.ts +0 -6
  288. package/dist/ink/components/TerminalSizeContext.d.ts.map +0 -1
  289. package/dist/ink/components/TerminalSizeContext.js +0 -6
  290. package/dist/ink/components/TerminalSizeContext.js.map +0 -1
  291. package/dist/ink/components/Text.d.ts +0 -56
  292. package/dist/ink/components/Text.d.ts.map +0 -1
  293. package/dist/ink/components/Text.js +0 -201
  294. package/dist/ink/components/Text.js.map +0 -1
  295. package/dist/ink/constants.d.ts +0 -2
  296. package/dist/ink/constants.d.ts.map +0 -1
  297. package/dist/ink/constants.js +0 -6
  298. package/dist/ink/constants.js.map +0 -1
  299. package/dist/ink/devtools.d.ts +0 -3
  300. package/dist/ink/devtools.d.ts.map +0 -1
  301. package/dist/ink/devtools.js +0 -5
  302. package/dist/ink/devtools.js.map +0 -1
  303. package/dist/ink/dom.d.ts +0 -77
  304. package/dist/ink/dom.d.ts.map +0 -1
  305. package/dist/ink/dom.js +0 -322
  306. package/dist/ink/dom.js.map +0 -1
  307. package/dist/ink/events/click-event.d.ts +0 -32
  308. package/dist/ink/events/click-event.d.ts.map +0 -1
  309. package/dist/ink/events/click-event.js +0 -30
  310. package/dist/ink/events/click-event.js.map +0 -1
  311. package/dist/ink/events/dispatcher.d.ts +0 -41
  312. package/dist/ink/events/dispatcher.d.ts.map +0 -1
  313. package/dist/ink/events/dispatcher.js +0 -181
  314. package/dist/ink/events/dispatcher.js.map +0 -1
  315. package/dist/ink/events/emitter.d.ts +0 -6
  316. package/dist/ink/events/emitter.d.ts.map +0 -1
  317. package/dist/ink/events/emitter.js +0 -36
  318. package/dist/ink/events/emitter.js.map +0 -1
  319. package/dist/ink/events/event-handlers.d.ts +0 -47
  320. package/dist/ink/events/event-handlers.d.ts.map +0 -1
  321. package/dist/ink/events/event-handlers.js +0 -34
  322. package/dist/ink/events/event-handlers.js.map +0 -1
  323. package/dist/ink/events/event.d.ts +0 -6
  324. package/dist/ink/events/event.d.ts.map +0 -1
  325. package/dist/ink/events/event.js +0 -16
  326. package/dist/ink/events/event.js.map +0 -1
  327. package/dist/ink/events/focus-event.d.ts +0 -14
  328. package/dist/ink/events/focus-event.d.ts.map +0 -1
  329. package/dist/ink/events/focus-event.js +0 -20
  330. package/dist/ink/events/focus-event.js.map +0 -1
  331. package/dist/ink/events/input-event.d.ts +0 -31
  332. package/dist/ink/events/input-event.d.ts.map +0 -1
  333. package/dist/ink/events/input-event.js +0 -163
  334. package/dist/ink/events/input-event.js.map +0 -1
  335. package/dist/ink/events/keyboard-event.d.ts +0 -20
  336. package/dist/ink/events/keyboard-event.d.ts.map +0 -1
  337. package/dist/ink/events/keyboard-event.js +0 -44
  338. package/dist/ink/events/keyboard-event.js.map +0 -1
  339. package/dist/ink/events/terminal-event.d.ts +0 -55
  340. package/dist/ink/events/terminal-event.d.ts.map +0 -1
  341. package/dist/ink/events/terminal-event.js +0 -79
  342. package/dist/ink/events/terminal-event.js.map +0 -1
  343. package/dist/ink/events/terminal-focus-event.d.ts +0 -14
  344. package/dist/ink/events/terminal-focus-event.d.ts.map +0 -1
  345. package/dist/ink/events/terminal-focus-event.js +0 -19
  346. package/dist/ink/events/terminal-focus-event.js.map +0 -1
  347. package/dist/ink/focus.d.ts +0 -44
  348. package/dist/ink/focus.d.ts.map +0 -1
  349. package/dist/ink/focus.js +0 -164
  350. package/dist/ink/focus.js.map +0 -1
  351. package/dist/ink/frame.d.ts +0 -95
  352. package/dist/ink/frame.d.ts.map +0 -1
  353. package/dist/ink/frame.js +0 -35
  354. package/dist/ink/frame.js.map +0 -1
  355. package/dist/ink/get-max-width.d.ts +0 -18
  356. package/dist/ink/get-max-width.d.ts.map +0 -1
  357. package/dist/ink/get-max-width.js +0 -26
  358. package/dist/ink/get-max-width.js.map +0 -1
  359. package/dist/ink/hit-test.d.ts +0 -34
  360. package/dist/ink/hit-test.d.ts.map +0 -1
  361. package/dist/ink/hit-test.js +0 -119
  362. package/dist/ink/hit-test.js.map +0 -1
  363. package/dist/ink/hooks/use-animation-frame.d.ts +0 -27
  364. package/dist/ink/hooks/use-animation-frame.d.ts.map +0 -1
  365. package/dist/ink/hooks/use-animation-frame.js +0 -52
  366. package/dist/ink/hooks/use-animation-frame.js.map +0 -1
  367. package/dist/ink/hooks/use-app.d.ts +0 -6
  368. package/dist/ink/hooks/use-app.d.ts.map +0 -1
  369. package/dist/ink/hooks/use-app.js +0 -13
  370. package/dist/ink/hooks/use-app.js.map +0 -1
  371. package/dist/ink/hooks/use-declared-cursor.d.ts +0 -27
  372. package/dist/ink/hooks/use-declared-cursor.d.ts.map +0 -1
  373. package/dist/ink/hooks/use-declared-cursor.js +0 -67
  374. package/dist/ink/hooks/use-declared-cursor.js.map +0 -1
  375. package/dist/ink/hooks/use-input.d.ts +0 -38
  376. package/dist/ink/hooks/use-input.d.ts.map +0 -1
  377. package/dist/ink/hooks/use-input.js +0 -86
  378. package/dist/ink/hooks/use-input.js.map +0 -1
  379. package/dist/ink/hooks/use-interval.d.ts +0 -19
  380. package/dist/ink/hooks/use-interval.d.ts.map +0 -1
  381. package/dist/ink/hooks/use-interval.js +0 -59
  382. package/dist/ink/hooks/use-interval.js.map +0 -1
  383. package/dist/ink/hooks/use-search-highlight.d.ts +0 -31
  384. package/dist/ink/hooks/use-search-highlight.d.ts.map +0 -1
  385. package/dist/ink/hooks/use-search-highlight.js +0 -39
  386. package/dist/ink/hooks/use-search-highlight.js.map +0 -1
  387. package/dist/ink/hooks/use-selection.d.ts +0 -40
  388. package/dist/ink/hooks/use-selection.d.ts.map +0 -1
  389. package/dist/ink/hooks/use-selection.js +0 -68
  390. package/dist/ink/hooks/use-selection.js.map +0 -1
  391. package/dist/ink/hooks/use-stdin.d.ts +0 -6
  392. package/dist/ink/hooks/use-stdin.d.ts.map +0 -1
  393. package/dist/ink/hooks/use-stdin.js +0 -13
  394. package/dist/ink/hooks/use-stdin.js.map +0 -1
  395. package/dist/ink/hooks/use-tab-status.d.ts +0 -14
  396. package/dist/ink/hooks/use-tab-status.d.ts.map +0 -1
  397. package/dist/ink/hooks/use-tab-status.js +0 -61
  398. package/dist/ink/hooks/use-tab-status.js.map +0 -1
  399. package/dist/ink/hooks/use-terminal-focus.d.ts +0 -11
  400. package/dist/ink/hooks/use-terminal-focus.d.ts.map +0 -1
  401. package/dist/ink/hooks/use-terminal-focus.js +0 -22
  402. package/dist/ink/hooks/use-terminal-focus.js.map +0 -1
  403. package/dist/ink/hooks/use-terminal-title.d.ts +0 -13
  404. package/dist/ink/hooks/use-terminal-title.d.ts.map +0 -1
  405. package/dist/ink/hooks/use-terminal-title.js +0 -36
  406. package/dist/ink/hooks/use-terminal-title.js.map +0 -1
  407. package/dist/ink/hooks/use-terminal-viewport.d.ts +0 -30
  408. package/dist/ink/hooks/use-terminal-viewport.d.ts.map +0 -1
  409. package/dist/ink/hooks/use-terminal-viewport.js +0 -81
  410. package/dist/ink/hooks/use-terminal-viewport.js.map +0 -1
  411. package/dist/ink/ink.d.ts +0 -371
  412. package/dist/ink/ink.d.ts.map +0 -1
  413. package/dist/ink/ink.js +0 -1686
  414. package/dist/ink/ink.js.map +0 -1
  415. package/dist/ink/instances.d.ts +0 -4
  416. package/dist/ink/instances.d.ts.map +0 -1
  417. package/dist/ink/instances.js +0 -10
  418. package/dist/ink/instances.js.map +0 -1
  419. package/dist/ink/line-width-cache.d.ts +0 -2
  420. package/dist/ink/line-width-cache.d.ts.map +0 -1
  421. package/dist/ink/line-width-cache.js +0 -23
  422. package/dist/ink/line-width-cache.js.map +0 -1
  423. package/dist/ink/log-update.d.ts +0 -18
  424. package/dist/ink/log-update.d.ts.map +0 -1
  425. package/dist/ink/log-update.js +0 -637
  426. package/dist/ink/log-update.js.map +0 -1
  427. package/dist/ink/measure-element.d.ts +0 -17
  428. package/dist/ink/measure-element.d.ts.map +0 -1
  429. package/dist/ink/measure-element.js +0 -11
  430. package/dist/ink/measure-element.js.map +0 -1
  431. package/dist/ink/measure-text.d.ts +0 -7
  432. package/dist/ink/measure-text.d.ts.map +0 -1
  433. package/dist/ink/measure-text.js +0 -38
  434. package/dist/ink/measure-text.js.map +0 -1
  435. package/dist/ink/node-cache.d.ts +0 -21
  436. package/dist/ink/node-cache.d.ts.map +0 -1
  437. package/dist/ink/node-cache.js +0 -36
  438. package/dist/ink/node-cache.js.map +0 -1
  439. package/dist/ink/optimizer.d.ts +0 -16
  440. package/dist/ink/optimizer.d.ts.map +0 -1
  441. package/dist/ink/optimizer.js +0 -85
  442. package/dist/ink/optimizer.js.map +0 -1
  443. package/dist/ink/output.d.ts +0 -120
  444. package/dist/ink/output.d.ts.map +0 -1
  445. package/dist/ink/output.js +0 -559
  446. package/dist/ink/output.js.map +0 -1
  447. package/dist/ink/parse-keypress.d.ts +0 -112
  448. package/dist/ink/parse-keypress.d.ts.map +0 -1
  449. package/dist/ink/parse-keypress.js +0 -719
  450. package/dist/ink/parse-keypress.js.map +0 -1
  451. package/dist/ink/parse-keypress.test.d.ts +0 -2
  452. package/dist/ink/parse-keypress.test.d.ts.map +0 -1
  453. package/dist/ink/parse-keypress.test.js +0 -37
  454. package/dist/ink/parse-keypress.test.js.map +0 -1
  455. package/dist/ink/reconciler.d.ts +0 -12
  456. package/dist/ink/reconciler.d.ts.map +0 -1
  457. package/dist/ink/reconciler.js +0 -456
  458. package/dist/ink/reconciler.js.map +0 -1
  459. package/dist/ink/render-border.d.ts +0 -25
  460. package/dist/ink/render-border.d.ts.map +0 -1
  461. package/dist/ink/render-border.js +0 -141
  462. package/dist/ink/render-border.js.map +0 -1
  463. package/dist/ink/render-node-to-output.d.ts +0 -46
  464. package/dist/ink/render-node-to-output.d.ts.map +0 -1
  465. package/dist/ink/render-node-to-output.js +0 -1257
  466. package/dist/ink/render-node-to-output.js.map +0 -1
  467. package/dist/ink/render-to-screen.d.ts +0 -47
  468. package/dist/ink/render-to-screen.d.ts.map +0 -1
  469. package/dist/ink/render-to-screen.js +0 -213
  470. package/dist/ink/render-to-screen.js.map +0 -1
  471. package/dist/ink/renderer.d.ts +0 -15
  472. package/dist/ink/renderer.d.ts.map +0 -1
  473. package/dist/ink/renderer.js +0 -169
  474. package/dist/ink/renderer.js.map +0 -1
  475. package/dist/ink/root.d.ts +0 -75
  476. package/dist/ink/root.d.ts.map +0 -1
  477. package/dist/ink/root.js +0 -89
  478. package/dist/ink/root.js.map +0 -1
  479. package/dist/ink/screen.d.ts +0 -270
  480. package/dist/ink/screen.d.ts.map +0 -1
  481. package/dist/ink/screen.js +0 -1194
  482. package/dist/ink/screen.js.map +0 -1
  483. package/dist/ink/searchHighlight.d.ts +0 -21
  484. package/dist/ink/searchHighlight.d.ts.map +0 -1
  485. package/dist/ink/searchHighlight.js +0 -82
  486. package/dist/ink/searchHighlight.js.map +0 -1
  487. package/dist/ink/selection.d.ts +0 -230
  488. package/dist/ink/selection.d.ts.map +0 -1
  489. package/dist/ink/selection.js +0 -814
  490. package/dist/ink/selection.js.map +0 -1
  491. package/dist/ink/squash-text-nodes.d.ts +0 -23
  492. package/dist/ink/squash-text-nodes.d.ts.map +0 -1
  493. package/dist/ink/squash-text-nodes.js +0 -60
  494. package/dist/ink/squash-text-nodes.js.map +0 -1
  495. package/dist/ink/stringWidth.d.ts +0 -2
  496. package/dist/ink/stringWidth.d.ts.map +0 -1
  497. package/dist/ink/stringWidth.js +0 -207
  498. package/dist/ink/stringWidth.js.map +0 -1
  499. package/dist/ink/styles.d.ts +0 -307
  500. package/dist/ink/styles.d.ts.map +0 -1
  501. package/dist/ink/styles.js +0 -302
  502. package/dist/ink/styles.js.map +0 -1
  503. package/dist/ink/supports-hyperlinks.d.ts +0 -14
  504. package/dist/ink/supports-hyperlinks.d.ts.map +0 -1
  505. package/dist/ink/supports-hyperlinks.js +0 -48
  506. package/dist/ink/supports-hyperlinks.js.map +0 -1
  507. package/dist/ink/tabstops.d.ts +0 -2
  508. package/dist/ink/tabstops.d.ts.map +0 -1
  509. package/dist/ink/tabstops.js +0 -43
  510. package/dist/ink/tabstops.js.map +0 -1
  511. package/dist/ink/terminal-focus-state.d.ts +0 -7
  512. package/dist/ink/terminal-focus-state.d.ts.map +0 -1
  513. package/dist/ink/terminal-focus-state.js +0 -43
  514. package/dist/ink/terminal-focus-state.js.map +0 -1
  515. package/dist/ink/terminal-querier.d.ts +0 -130
  516. package/dist/ink/terminal-querier.d.ts.map +0 -1
  517. package/dist/ink/terminal-querier.js +0 -184
  518. package/dist/ink/terminal-querier.js.map +0 -1
  519. package/dist/ink/terminal.d.ts +0 -56
  520. package/dist/ink/terminal.d.ts.map +0 -1
  521. package/dist/ink/terminal.js +0 -249
  522. package/dist/ink/terminal.js.map +0 -1
  523. package/dist/ink/termio/csi.d.ts +0 -166
  524. package/dist/ink/termio/csi.d.ts.map +0 -1
  525. package/dist/ink/termio/csi.js +0 -285
  526. package/dist/ink/termio/csi.js.map +0 -1
  527. package/dist/ink/termio/dec.d.ts +0 -38
  528. package/dist/ink/termio/dec.d.ts.map +0 -1
  529. package/dist/ink/termio/dec.js +0 -59
  530. package/dist/ink/termio/dec.js.map +0 -1
  531. package/dist/ink/termio.d.ts +0 -25
  532. package/dist/ink/termio.d.ts.map +0 -1
  533. package/dist/ink/termio.js +0 -32
  534. package/dist/ink/termio.js.map +0 -1
  535. package/dist/ink/useTerminalNotification.d.ts +0 -27
  536. package/dist/ink/useTerminalNotification.d.ts.map +0 -1
  537. package/dist/ink/useTerminalNotification.js +0 -62
  538. package/dist/ink/useTerminalNotification.js.map +0 -1
  539. package/dist/ink/warn.d.ts +0 -2
  540. package/dist/ink/warn.d.ts.map +0 -1
  541. package/dist/ink/warn.js +0 -14
  542. package/dist/ink/warn.js.map +0 -1
  543. package/dist/ink/widest-line.d.ts +0 -2
  544. package/dist/ink/widest-line.d.ts.map +0 -1
  545. package/dist/ink/widest-line.js +0 -18
  546. package/dist/ink/widest-line.js.map +0 -1
  547. package/dist/ink/wrap-text.d.ts +0 -3
  548. package/dist/ink/wrap-text.d.ts.map +0 -1
  549. package/dist/ink/wrap-text.js +0 -61
  550. package/dist/ink/wrap-text.js.map +0 -1
  551. package/dist/ink/wrapAnsi.d.ts +0 -8
  552. package/dist/ink/wrapAnsi.d.ts.map +0 -1
  553. package/dist/ink/wrapAnsi.js +0 -13
  554. package/dist/ink/wrapAnsi.js.map +0 -1
  555. package/dist/ink-ui/components/TerminalCursor.d.ts +0 -15
  556. package/dist/ink-ui/components/TerminalCursor.d.ts.map +0 -1
  557. package/dist/ink-ui/components/TerminalCursor.js +0 -49
  558. package/dist/ink-ui/components/TerminalCursor.js.map +0 -1
  559. package/dist/ink-ui/runtime/stdout.d.ts +0 -11
  560. package/dist/ink-ui/runtime/stdout.d.ts.map +0 -1
  561. package/dist/ink-ui/runtime/stdout.js +0 -82
  562. package/dist/ink-ui/runtime/stdout.js.map +0 -1
  563. package/dist/runtime/goal-coordinator.d.ts +0 -66
  564. package/dist/runtime/goal-coordinator.d.ts.map +0 -1
  565. package/dist/runtime/goal-coordinator.js +0 -200
  566. package/dist/runtime/goal-coordinator.js.map +0 -1
  567. package/dist/screens/REPL.d.ts +0 -21
  568. package/dist/screens/REPL.d.ts.map +0 -1
  569. package/dist/screens/REPL.js +0 -139
  570. package/dist/screens/REPL.js.map +0 -1
  571. package/dist/services/goal-sidecar.d.ts +0 -96
  572. package/dist/services/goal-sidecar.d.ts.map +0 -1
  573. package/dist/services/goal-sidecar.js +0 -145
  574. package/dist/services/goal-sidecar.js.map +0 -1
  575. package/dist/tools/goal.d.ts +0 -17
  576. package/dist/tools/goal.d.ts.map +0 -1
  577. package/dist/tools/goal.js +0 -191
  578. package/dist/tools/goal.js.map +0 -1
  579. package/dist/ui/ink/components/App.d.ts +0 -6
  580. package/dist/ui/ink/components/App.d.ts.map +0 -1
  581. package/dist/ui/ink/components/App.js +0 -38
  582. package/dist/ui/ink/components/App.js.map +0 -1
  583. package/dist/ui/ink/components/CommandPanel.d.ts +0 -13
  584. package/dist/ui/ink/components/CommandPanel.d.ts.map +0 -1
  585. package/dist/ui/ink/components/CommandPanel.js +0 -41
  586. package/dist/ui/ink/components/CommandPanel.js.map +0 -1
  587. package/dist/ui/ink/components/InputLine.d.ts +0 -8
  588. package/dist/ui/ink/components/InputLine.d.ts.map +0 -1
  589. package/dist/ui/ink/components/InputLine.js +0 -15
  590. package/dist/ui/ink/components/InputLine.js.map +0 -1
  591. package/dist/ui/ink/components/StatusBar.d.ts +0 -9
  592. package/dist/ui/ink/components/StatusBar.d.ts.map +0 -1
  593. package/dist/ui/ink/components/StatusBar.js +0 -18
  594. package/dist/ui/ink/components/StatusBar.js.map +0 -1
  595. package/dist/ui/ink/components/index.d.ts +0 -5
  596. package/dist/ui/ink/components/index.d.ts.map +0 -1
  597. package/dist/ui/ink/components/index.js +0 -5
  598. package/dist/ui/ink/components/index.js.map +0 -1
  599. package/dist/utils/chalk.d.ts +0 -9
  600. package/dist/utils/chalk.d.ts.map +0 -1
  601. package/dist/utils/chalk.js +0 -16
  602. package/dist/utils/chalk.js.map +0 -1
@@ -40,6 +40,7 @@ exports.createToolEventPresenter = createToolEventPresenter;
40
40
  exports.loadSessionIntoRuntime = loadSessionIntoRuntime;
41
41
  exports.closeSession = closeSession;
42
42
  const commands_1 = require("../commands");
43
+ const async_hooks_1 = require("async_hooks");
43
44
  const parser_1 = require("../commands/parser");
44
45
  const path = __importStar(require("path"));
45
46
  const session_storage_1 = require("../services/session-storage");
@@ -397,7 +398,14 @@ function appendAssistantNotice(messages, notice) {
397
398
  function recordTraceEvent(events, sessionId, event) {
398
399
  if (!sessionId)
399
400
  return null;
400
- const traceEvent = (0, session_storage_1.appendSessionTraceEvent)(sessionId, event);
401
+ const goal = goalTraceContext.getStore();
402
+ const traceEvent = (0, session_storage_1.appendSessionTraceEvent)(sessionId, {
403
+ ...event,
404
+ goalId: goal?.goalId,
405
+ goalRevision: goal?.goalRevision,
406
+ goalInputKind: goal?.goalInputKind,
407
+ goalStopReason: goal?.getStopReason(),
408
+ });
401
409
  if (traceEvent) {
402
410
  events.traceEventRecorded?.(traceEvent);
403
411
  }
@@ -485,9 +493,12 @@ function structuredToolFinishActivity(event, seq, options = {}) {
485
493
  const outputBytes = event.outputBytes ?? Buffer.byteLength(durableOutput, 'utf8');
486
494
  const aggregatePresentation = (0, aggregate_tool_presenter_1.presentAggregateToolResult)(event.name, durableOutput, outputBytes);
487
495
  const aggregate = aggregatePresentation?.view;
488
- const storedArtifact = event.artifactRef ?? (options.projectPath && durableOutput && (outputBytes > tool_output_presentation_1.DEFAULT_TOOL_OUTPUT_POLICY.inlineMaxBytes || aggregate)
489
- ? (0, tool_artifacts_1.storeArtifact)(options.projectPath, event.name, durableOutput, outputBytes) ?? undefined
490
- : undefined);
496
+ const storedArtifact = event.artifactRef ??
497
+ (options.projectPath &&
498
+ durableOutput &&
499
+ (outputBytes > tool_output_presentation_1.DEFAULT_TOOL_OUTPUT_POLICY.inlineMaxBytes || aggregate)
500
+ ? ((0, tool_artifacts_1.storeArtifact)(options.projectPath, event.name, durableOutput, outputBytes) ?? undefined)
501
+ : undefined);
491
502
  const artifactRef = storedArtifact
492
503
  ? { id: storedArtifact.id, outputBytes: storedArtifact.outputBytes }
493
504
  : undefined;
@@ -645,13 +656,13 @@ function sessionMessagesToTranscriptEntries(sessionId, options = {}) {
645
656
  : durable;
646
657
  const durableOutput = typeof durable.output === 'string' ? durable.output : '';
647
658
  const displayOutput = typeof modelVisible.output === 'string' ? modelVisible.output : durableOutput;
648
- const outputBytes = trace?.outputBytes
649
- ?? (durable.schemaVersion === 1 ? durable.outputBytes : undefined)
650
- ?? Buffer.byteLength(durableOutput, 'utf8');
659
+ const outputBytes = trace?.outputBytes ??
660
+ (durable.schemaVersion === 1 ? durable.outputBytes : undefined) ??
661
+ Buffer.byteLength(durableOutput, 'utf8');
651
662
  const artifactId = durable.artifactRef?.id ?? trace?.artifactId;
652
663
  fallbackToolSequence += 1;
653
664
  const sequence = message.toolCallId
654
- ? sequenceByCallId.get(message.toolCallId) ?? fallbackToolSequence
665
+ ? (sequenceByCallId.get(message.toolCallId) ?? fallbackToolSequence)
655
666
  : fallbackToolSequence;
656
667
  const outputView = options.includeToolOutputViews && call && message.toolCallId
657
668
  ? (0, tool_output_presentation_1.createToolOutputView)({
@@ -764,6 +775,7 @@ function createAssistantStreamPresenter(events, abortSignal) {
764
775
  },
765
776
  };
766
777
  }
778
+ const goalTraceContext = new async_hooks_1.AsyncLocalStorage();
767
779
  class LocalFastPathBlockedError extends Error {
768
780
  constructor(message) {
769
781
  super(message);
@@ -902,6 +914,7 @@ function createToolEventPresenter(events, options = {}) {
902
914
  outputBytes: toolActivity.outputView.detailRef.outputBytes,
903
915
  }
904
916
  : event.artifactRef,
917
+ externalAssertion: event.externalAssertion,
905
918
  sequence: seq,
906
919
  batchCount: event.batchCount,
907
920
  batchIndex: event.batchIndex,
@@ -979,6 +992,14 @@ class AgentChatController {
979
992
  const text = input.trim();
980
993
  if (!text)
981
994
  return;
995
+ // Every root input owns a fresh accounting snapshot. Commands and local
996
+ // fast paths are known zero-provider turns; runChat changes tokenUsage to
997
+ // null before networking so missing provider usage remains fail-closed.
998
+ const storeWithState = this.runtime.store;
999
+ storeWithState.setState?.({
1000
+ tokenUsage: { promptTokens: 0, completionTokens: 0 },
1001
+ lastLoopStats: undefined,
1002
+ });
982
1003
  const parsed = (0, parser_1.parseInput)(text);
983
1004
  if (!parsed.isCommand) {
984
1005
  const localFastPath = parseLocalFastPath(text);
@@ -1022,7 +1043,67 @@ class AgentChatController {
1022
1043
  return;
1023
1044
  }
1024
1045
  const ctx = this.createCommandContext(options.abortSignal, options.turnId);
1025
- const { result, output } = await captureConsoleOutput(() => command.execute(ctx, parsed.args));
1046
+ let commandProviderAttempts = 0;
1047
+ const commandProviderPreflight = async (context) => {
1048
+ commandProviderAttempts += 1;
1049
+ return this.controllerOptions.beforeProviderRequest
1050
+ ? this.controllerOptions.beforeProviderRequest(context)
1051
+ : { available: true };
1052
+ };
1053
+ const restoreProviderPreflight = typeof this.runtime.llm?.setProviderRequestPreflight === 'function'
1054
+ ? this.runtime.llm.setProviderRequestPreflight(commandProviderPreflight)
1055
+ : undefined;
1056
+ const commandUsage = { promptTokens: 0, completionTokens: 0 };
1057
+ let commandUsageEvents = 0;
1058
+ const unsubscribeCommandUsage = typeof this.runtime.llm?.subscribeUsage === 'function'
1059
+ ? this.runtime.llm.subscribeUsage(event => {
1060
+ commandUsageEvents += 1;
1061
+ commandUsage.promptTokens += event.usage.promptTokens;
1062
+ commandUsage.completionTokens += event.usage.completionTokens;
1063
+ })
1064
+ : undefined;
1065
+ let result;
1066
+ let output;
1067
+ try {
1068
+ ({ result, output } = await captureConsoleOutput(() => command.execute(ctx, parsed.args)));
1069
+ }
1070
+ finally {
1071
+ unsubscribeCommandUsage?.();
1072
+ restoreProviderPreflight?.();
1073
+ if (commandUsage.promptTokens > 0 || commandUsage.completionTokens > 0) {
1074
+ this.runtime.store.setTokenUsage(commandUsage);
1075
+ }
1076
+ const providerRequests = Math.max(commandProviderAttempts, commandUsageEvents);
1077
+ if (providerRequests > 0) {
1078
+ const diagnostics = getLastRequestDiagnostics(this.runtime.llm);
1079
+ const retryCount = diagnostics?.retryCount ?? 0;
1080
+ const fallbackCount = diagnostics?.fallbackTriggered ? 1 : 0;
1081
+ this.setLoopStats({
1082
+ turnsStarted: 1,
1083
+ llmRequests: providerRequests,
1084
+ toolCalls: 0,
1085
+ readOnlyToolCalls: 0,
1086
+ unsafeToolCalls: 0,
1087
+ toolResultBytes: 0,
1088
+ modelVisibleToolBytes: 0,
1089
+ summarizedBytes: 0,
1090
+ finishReason: commandUsageEvents > 0 ? 'completed' : 'failed',
1091
+ providerRetryCount: retryCount,
1092
+ providerRetryDelayMs: diagnostics?.retryDelayMs,
1093
+ providerRetryErrorTypes: diagnostics?.retryErrorTypes,
1094
+ providerLastRetryErrorType: diagnostics?.lastRetryErrorType,
1095
+ providerLastRetryStatus: diagnostics?.lastRetryStatus,
1096
+ providerFallbackCount: fallbackCount,
1097
+ providerFallbackFromModel: diagnostics?.fallbackFromModel,
1098
+ providerFallbackToModel: diagnostics?.fallbackToModel,
1099
+ providerFinalModel: diagnostics?.finalModel,
1100
+ providerUsingFallback: diagnostics?.usingFallback,
1101
+ singleReadOnlyStreak: 0,
1102
+ batchReadSuggestionCount: 0,
1103
+ localFastPathUsed: false,
1104
+ });
1105
+ }
1106
+ }
1026
1107
  if (output) {
1027
1108
  this.events.append({
1028
1109
  role: result.success ? 'system' : 'error',
@@ -1057,6 +1138,25 @@ class AgentChatController {
1057
1138
  await this.runChat(result.chatInput ?? parsed.args, options);
1058
1139
  }
1059
1140
  }
1141
+ async runRequest(request, options = {}) {
1142
+ const internalInput = request.text?.trim() ||
1143
+ 'Continue pursuing the active goal from its persisted plan and evidence.';
1144
+ const run = () => this.runInput(internalInput, {
1145
+ ...options,
1146
+ persistAsUserMessage: request.persistAsUserMessage,
1147
+ inputKind: request.inputKind,
1148
+ });
1149
+ if (!request.goal) {
1150
+ await run();
1151
+ return;
1152
+ }
1153
+ await goalTraceContext.run({
1154
+ goalId: request.goal.goalId,
1155
+ goalRevision: request.goal.revision,
1156
+ goalInputKind: request.inputKind,
1157
+ getStopReason: () => this.goalCoordinator?.goal?.stopReason?.message,
1158
+ }, run);
1159
+ }
1060
1160
  async runLocalFastPath(input, action, options = {}) {
1061
1161
  const activeSession = this.runtime.getSession() ??
1062
1162
  this.runtime.ensureSession() ??
@@ -1088,7 +1188,9 @@ class AgentChatController {
1088
1188
  note: compactMiddle(action.label, 160),
1089
1189
  });
1090
1190
  }
1091
- this.runtime.store.addMessage({ role: 'user', content: input });
1191
+ if (options.persistAsUserMessage !== false) {
1192
+ this.runtime.store.addMessage({ role: 'user', content: input });
1193
+ }
1092
1194
  this.events.setStatus(`Running local ${action.label}...`);
1093
1195
  try {
1094
1196
  const tool = (0, tools_1.getRuntimeTools)().find(candidate => candidate.name === action.tool);
@@ -1253,9 +1355,7 @@ class AgentChatController {
1253
1355
  ensureSession: this.runtime.ensureSession,
1254
1356
  setSession: session => {
1255
1357
  this.runtime.setSession(session);
1256
- const renderer = this.controllerOptions.uiRenderer
1257
- ?? this.runtime.config.ui?.renderer
1258
- ?? 'terminal';
1358
+ const renderer = this.controllerOptions.uiRenderer ?? this.runtime.config.ui?.renderer ?? 'terminal';
1259
1359
  this.events.replaceTranscript(sessionMessagesToTranscriptEntries(session.id, {
1260
1360
  includeToolOutputViews: renderer === 'tui',
1261
1361
  }));
@@ -1349,7 +1449,7 @@ class AgentChatController {
1349
1449
  if (!bundle)
1350
1450
  return stats;
1351
1451
  const usage = bundle.getAggregateUsage();
1352
- if (usage.modelRequests === 0 && usage.toolCalls === 0)
1452
+ if (usage.modelRequests === 0 && usage.toolCalls === 0 && usage.usageComplete === true)
1353
1453
  return stats;
1354
1454
  const subtaskCount = bundle.getSubtaskCount();
1355
1455
  const subagentSuffix = `subagents: ${usage.modelRequests} req/${usage.toolCalls} calls across ${subtaskCount} task(s)`;
@@ -1358,6 +1458,11 @@ class AgentChatController {
1358
1458
  llmRequests: (stats.llmRequests ?? 0) + usage.modelRequests,
1359
1459
  toolCalls: (stats.toolCalls ?? 0) + usage.toolCalls,
1360
1460
  readOnlyToolCalls: (stats.readOnlyToolCalls ?? 0) + usage.toolCalls,
1461
+ subagentPromptTokens: usage.promptTokens,
1462
+ subagentCompletionTokens: usage.completionTokens,
1463
+ subagentTotalTokens: usage.promptTokens + usage.completionTokens,
1464
+ usageAccountingComplete: stats.usageAccountingComplete !== false &&
1465
+ usage.usageComplete === true,
1361
1466
  continuationHint: stats.continuationHint
1362
1467
  ? `${stats.continuationHint} (${subagentSuffix})`
1363
1468
  : subagentSuffix,
@@ -1380,6 +1485,9 @@ class AgentChatController {
1380
1485
  });
1381
1486
  return;
1382
1487
  }
1488
+ // Usage belongs to a single root turn. Clear the previous snapshot before
1489
+ // any provider request so failures without usage cannot inherit stale data.
1490
+ this.runtime.store.setState({ tokenUsage: null });
1383
1491
  const abortSignal = options.abortSignal;
1384
1492
  const turnId = traceTurnId(options.turnId);
1385
1493
  const activeSession = this.runtime.getSession() ??
@@ -1396,7 +1504,7 @@ class AgentChatController {
1396
1504
  sessionId,
1397
1505
  });
1398
1506
  const appliedSkillNames = skillResolution.skills.map(skill => skill.name);
1399
- if (sessionId) {
1507
+ if (sessionId && options.persistAsUserMessage !== false) {
1400
1508
  (0, session_storage_1.appendSessionMessage)(sessionId, {
1401
1509
  role: 'user',
1402
1510
  content: input,
@@ -1411,7 +1519,9 @@ class AgentChatController {
1411
1519
  });
1412
1520
  appendWorkspaceSnapshotTrace(this.events, sessionId, turnId, 'pre_turn', preWorkspace);
1413
1521
  }
1414
- this.runtime.store.addMessage({ role: 'user', content: input });
1522
+ if (options.persistAsUserMessage !== false) {
1523
+ this.runtime.store.addMessage({ role: 'user', content: input });
1524
+ }
1415
1525
  (0, prompt_context_1.refreshProjectInstructions)(this.runtime.store, this.runtime.cwd);
1416
1526
  const snapshot = this.runtime.store.getSnapshot();
1417
1527
  const harness = (0, harness_1.createContextHarness)({
@@ -1424,7 +1534,9 @@ class AgentChatController {
1424
1534
  completionGate: true,
1425
1535
  },
1426
1536
  });
1427
- const intent = harness.updateContractFromUserInput(input);
1537
+ const intent = harness.updateContractFromUserInput(options.inputKind === 'goal_continuation'
1538
+ ? (this.goalCoordinator?.goal?.objective ?? input)
1539
+ : input);
1428
1540
  harness.recordAppliedSkills(skillResolution.skills);
1429
1541
  // Reconcile diagnostic: when harness state is present but objective may be incomplete
1430
1542
  if (snapshot.harnessState &&
@@ -1480,6 +1592,7 @@ class AgentChatController {
1480
1592
  // R6: wire child usage callback so CostTracker records subagent
1481
1593
  // token consumption. Injected by AgentRuntimeController via chatOptions.
1482
1594
  onChildUsage: this.controllerOptions.onChildUsage,
1595
+ beforeProviderRequest: this.controllerOptions.beforeProviderRequest,
1483
1596
  })
1484
1597
  : null;
1485
1598
  const subtaskTool = subagentBundle?.tool ?? null;
@@ -1503,6 +1616,9 @@ class AgentChatController {
1503
1616
  { role: 'system', content: systemPrompt.static, cacheControl: { type: 'ephemeral' } },
1504
1617
  ...(systemPrompt.dynamic ? [{ role: 'system', content: systemPrompt.dynamic }] : []),
1505
1618
  ...snapshot.conversationHistory,
1619
+ ...(options.persistAsUserMessage === false
1620
+ ? [{ role: 'user', content: input }]
1621
+ : []),
1506
1622
  ];
1507
1623
  let finalContent = '';
1508
1624
  let finalUsage;
@@ -1563,6 +1679,26 @@ class AgentChatController {
1563
1679
  let observedUnsafeToolCalls = 0;
1564
1680
  let observedToolResultBytes = 0;
1565
1681
  let observedModelVisibleToolBytes = 0;
1682
+ const restoreProviderPreflight = typeof this.runtime.llm.setProviderRequestPreflight === 'function'
1683
+ ? this.runtime.llm.setProviderRequestPreflight(this.controllerOptions.beforeProviderRequest)
1684
+ : undefined;
1685
+ const persistInterruptedAccounting = (rootUsage, stats, usageAccountingComplete) => {
1686
+ const accountingStats = {
1687
+ ...stats,
1688
+ finishReason: 'cancelled',
1689
+ usageAccountingComplete,
1690
+ };
1691
+ const interruptedStats = this.foldSubagentUsage(accountingStats, subagentBundle);
1692
+ this.setLoopStats(interruptedStats);
1693
+ const subagentUsage = subagentBundle?.getAggregateUsage();
1694
+ const knownZeroRootUsage = usageAccountingComplete && interruptedStats.llmRequests === 0;
1695
+ if (rootUsage || knownZeroRootUsage) {
1696
+ this.runtime.store.setTokenUsage({
1697
+ promptTokens: (rootUsage?.promptTokens ?? 0) + (subagentUsage?.promptTokens ?? 0),
1698
+ completionTokens: (rootUsage?.completionTokens ?? 0) + (subagentUsage?.completionTokens ?? 0),
1699
+ });
1700
+ }
1701
+ };
1566
1702
  try {
1567
1703
  for await (const event of (0, framework_1.query)({
1568
1704
  messages,
@@ -1861,6 +1997,19 @@ class AgentChatController {
1861
1997
  }
1862
1998
  const wasAborted = abortSignal?.aborted === true;
1863
1999
  if (wasAborted) {
2000
+ const stats = pendingCompleteStats ??
2001
+ (0, framework_1.createFailedLoopStats)({
2002
+ loopBudget,
2003
+ diagnostics: observedLlmRequests > 0 ? getLastRequestDiagnostics(this.runtime.llm) : undefined,
2004
+ turnsStarted: observedTurnsStarted,
2005
+ llmRequests: observedLlmRequests,
2006
+ toolCalls: observedToolCalls,
2007
+ readOnlyToolCalls: observedReadOnlyToolCalls,
2008
+ unsafeToolCalls: observedUnsafeToolCalls,
2009
+ toolResultBytes: observedToolResultBytes,
2010
+ modelVisibleToolBytes: observedModelVisibleToolBytes,
2011
+ });
2012
+ persistInterruptedAccounting(finalUsage, stats, finalUsage !== undefined || stats.llmRequests === 0);
1864
2013
  assistantStream.discardSegment();
1865
2014
  this.events.setStatus('Interrupted.');
1866
2015
  removeTrailingUserMessage(this.runtime);
@@ -2087,10 +2236,30 @@ class AgentChatController {
2087
2236
  gc.deferContinuation();
2088
2237
  }
2089
2238
  }
2090
- catch { /* best effort */ }
2239
+ catch {
2240
+ /* best effort */
2241
+ }
2091
2242
  return;
2092
2243
  }
2093
2244
  if (isAbortError(error, abortSignal)) {
2245
+ const interruptedStats = error instanceof framework_1.QueryLoopError
2246
+ ? error.stats
2247
+ : (0, framework_1.createFailedLoopStats)({
2248
+ loopBudget,
2249
+ diagnostics: observedLlmRequests > 0 ? getLastRequestDiagnostics(this.runtime.llm) : undefined,
2250
+ turnsStarted: observedTurnsStarted,
2251
+ llmRequests: observedLlmRequests,
2252
+ toolCalls: observedToolCalls,
2253
+ readOnlyToolCalls: observedReadOnlyToolCalls,
2254
+ unsafeToolCalls: observedUnsafeToolCalls,
2255
+ toolResultBytes: observedToolResultBytes,
2256
+ modelVisibleToolBytes: observedModelVisibleToolBytes,
2257
+ });
2258
+ const interruptedRootUsage = error instanceof framework_1.QueryLoopError ? error.aggregateUsage : undefined;
2259
+ // A thrown abort after a provider request started can only prove a
2260
+ // lower bound: the in-flight request may be billable even when its
2261
+ // final usage chunk never arrived.
2262
+ persistInterruptedAccounting(interruptedRootUsage, interruptedStats, interruptedStats.llmRequests === 0);
2094
2263
  assistantStream.discardSegment();
2095
2264
  this.events.setStatus('Interrupted.');
2096
2265
  removeTrailingUserMessage(this.runtime);
@@ -2123,7 +2292,7 @@ class AgentChatController {
2123
2292
  errorLayer: errorLayerForChatError(error),
2124
2293
  });
2125
2294
  this.events.setStatus('Turn failed. Ready for the next input.');
2126
- const failedStats = error instanceof framework_1.QueryLoopError
2295
+ const failedStats = this.foldSubagentUsage(error instanceof framework_1.QueryLoopError
2127
2296
  ? error.stats
2128
2297
  : (0, framework_1.createFailedLoopStats)({
2129
2298
  loopBudget,
@@ -2135,7 +2304,16 @@ class AgentChatController {
2135
2304
  unsafeToolCalls: observedUnsafeToolCalls,
2136
2305
  toolResultBytes: observedToolResultBytes,
2137
2306
  modelVisibleToolBytes: observedModelVisibleToolBytes,
2307
+ }), subagentBundle);
2308
+ const rootUsage = error instanceof framework_1.QueryLoopError ? error.aggregateUsage : undefined;
2309
+ const subagentUsage = subagentBundle?.getAggregateUsage();
2310
+ const hasSubagentUsage = (subagentUsage?.promptTokens ?? 0) > 0 || (subagentUsage?.completionTokens ?? 0) > 0;
2311
+ if (rootUsage || hasSubagentUsage) {
2312
+ this.runtime.store.setTokenUsage({
2313
+ promptTokens: (rootUsage?.promptTokens ?? 0) + (subagentUsage?.promptTokens ?? 0),
2314
+ completionTokens: (rootUsage?.completionTokens ?? 0) + (subagentUsage?.completionTokens ?? 0),
2138
2315
  });
2316
+ }
2139
2317
  this.setLoopStats(failedStats);
2140
2318
  if (sessionId) {
2141
2319
  recordProviderTraceEvents(this.events, sessionId, turnId, failedStats);
@@ -2183,6 +2361,9 @@ class AgentChatController {
2183
2361
  this.runtime.store.setState({ conversationHistory: history.slice(0, -1) });
2184
2362
  }
2185
2363
  }
2364
+ finally {
2365
+ restoreProviderPreflight?.();
2366
+ }
2186
2367
  }
2187
2368
  }
2188
2369
  exports.AgentChatController = AgentChatController;