@orion-agents/orion-code 0.1.1 → 0.1.3

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 (643) hide show
  1. package/README.md +165 -68
  2. package/README.zh-CN.md +252 -212
  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 +381 -168
  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/commands/types.d.ts +3 -1
  12. package/dist/commands/types.d.ts.map +1 -1
  13. package/dist/commands/types.js.map +1 -1
  14. package/dist/core/agent.d.ts.map +1 -1
  15. package/dist/core/agent.js +2 -2
  16. package/dist/core/agent.js.map +1 -1
  17. package/dist/framework/external-assertion.d.ts +65 -0
  18. package/dist/framework/external-assertion.d.ts.map +1 -0
  19. package/dist/framework/external-assertion.js +571 -0
  20. package/dist/framework/external-assertion.js.map +1 -0
  21. package/dist/framework/index.d.ts +6 -4
  22. package/dist/framework/index.d.ts.map +1 -1
  23. package/dist/framework/index.js +4 -1
  24. package/dist/framework/index.js.map +1 -1
  25. package/dist/framework/query.d.ts +18 -1
  26. package/dist/framework/query.d.ts.map +1 -1
  27. package/dist/framework/query.js +43 -23
  28. package/dist/framework/query.js.map +1 -1
  29. package/dist/framework/tool-scheduler.d.ts +63 -1
  30. package/dist/framework/tool-scheduler.d.ts.map +1 -1
  31. package/dist/framework/tool-scheduler.js +183 -51
  32. package/dist/framework/tool-scheduler.js.map +1 -1
  33. package/dist/framework/tool-serializer.d.ts.map +1 -1
  34. package/dist/framework/tool-serializer.js +20 -4
  35. package/dist/framework/tool-serializer.js.map +1 -1
  36. package/dist/framework/tool.d.ts +17 -5
  37. package/dist/framework/tool.d.ts.map +1 -1
  38. package/dist/framework/tool.js +2 -0
  39. package/dist/framework/tool.js.map +1 -1
  40. package/dist/harness/safety.d.ts.map +1 -1
  41. package/dist/harness/safety.js +19 -3
  42. package/dist/harness/safety.js.map +1 -1
  43. package/dist/init.d.ts +1 -1
  44. package/dist/init.d.ts.map +1 -1
  45. package/dist/init.js +115 -34
  46. package/dist/init.js.map +1 -1
  47. package/dist/ink-ui/screens/ReplScreen.d.ts +2 -1
  48. package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
  49. package/dist/ink-ui/screens/ReplScreen.js +65 -0
  50. package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
  51. package/dist/memory/storage.d.ts.map +1 -1
  52. package/dist/memory/storage.js +1 -0
  53. package/dist/memory/storage.js.map +1 -1
  54. package/dist/memory/store.d.ts.map +1 -1
  55. package/dist/memory/store.js +11 -5
  56. package/dist/memory/store.js.map +1 -1
  57. package/dist/print-ui/launch.d.ts +6 -1
  58. package/dist/print-ui/launch.d.ts.map +1 -1
  59. package/dist/print-ui/launch.js +109 -9
  60. package/dist/print-ui/launch.js.map +1 -1
  61. package/dist/product/identity.d.ts +2 -2
  62. package/dist/product/identity.d.ts.map +1 -1
  63. package/dist/product/identity.js +2 -2
  64. package/dist/product/identity.js.map +1 -1
  65. package/dist/product/index.d.ts +2 -1
  66. package/dist/product/index.d.ts.map +1 -1
  67. package/dist/product/index.js +5 -1
  68. package/dist/product/index.js.map +1 -1
  69. package/dist/product/version.d.ts +12 -0
  70. package/dist/product/version.d.ts.map +1 -0
  71. package/dist/product/version.js +31 -0
  72. package/dist/product/version.js.map +1 -0
  73. package/dist/runtime/agent-runtime-controller.d.ts +35 -0
  74. package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
  75. package/dist/runtime/agent-runtime-controller.js +975 -149
  76. package/dist/runtime/agent-runtime-controller.js.map +1 -1
  77. package/dist/runtime/agent-runtime-protocol.d.ts +20 -3
  78. package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
  79. package/dist/runtime/agent-runtime-protocol.js +12 -0
  80. package/dist/runtime/agent-runtime-protocol.js.map +1 -1
  81. package/dist/runtime/chat-controller.d.ts +12 -0
  82. package/dist/runtime/chat-controller.d.ts.map +1 -1
  83. package/dist/runtime/chat-controller.js +213 -19
  84. package/dist/runtime/chat-controller.js.map +1 -1
  85. package/dist/runtime/goals/accounting.d.ts +28 -0
  86. package/dist/runtime/goals/accounting.d.ts.map +1 -1
  87. package/dist/runtime/goals/accounting.js +69 -0
  88. package/dist/runtime/goals/accounting.js.map +1 -1
  89. package/dist/runtime/goals/completion-audit.d.ts +13 -8
  90. package/dist/runtime/goals/completion-audit.d.ts.map +1 -1
  91. package/dist/runtime/goals/completion-audit.js +598 -16
  92. package/dist/runtime/goals/completion-audit.js.map +1 -1
  93. package/dist/runtime/goals/coordinator.d.ts +44 -5
  94. package/dist/runtime/goals/coordinator.d.ts.map +1 -1
  95. package/dist/runtime/goals/coordinator.js +1124 -58
  96. package/dist/runtime/goals/coordinator.js.map +1 -1
  97. package/dist/runtime/goals/evidence.d.ts +37 -0
  98. package/dist/runtime/goals/evidence.d.ts.map +1 -0
  99. package/dist/runtime/goals/evidence.js +300 -0
  100. package/dist/runtime/goals/evidence.js.map +1 -0
  101. package/dist/runtime/goals/presentation.d.ts +4 -0
  102. package/dist/runtime/goals/presentation.d.ts.map +1 -0
  103. package/dist/runtime/goals/presentation.js +50 -0
  104. package/dist/runtime/goals/presentation.js.map +1 -0
  105. package/dist/runtime/goals/prompt.d.ts.map +1 -1
  106. package/dist/runtime/goals/prompt.js +38 -8
  107. package/dist/runtime/goals/prompt.js.map +1 -1
  108. package/dist/runtime/goals/tools.d.ts +18 -1
  109. package/dist/runtime/goals/tools.d.ts.map +1 -1
  110. package/dist/runtime/goals/tools.js +310 -30
  111. package/dist/runtime/goals/tools.js.map +1 -1
  112. package/dist/runtime/goals/types.d.ts +247 -7
  113. package/dist/runtime/goals/types.d.ts.map +1 -1
  114. package/dist/runtime/goals/types.js +8 -2
  115. package/dist/runtime/goals/types.js.map +1 -1
  116. package/dist/runtime/subagents/child-executor-guard.d.ts +12 -4
  117. package/dist/runtime/subagents/child-executor-guard.d.ts.map +1 -1
  118. package/dist/runtime/subagents/child-executor-guard.js +397 -61
  119. package/dist/runtime/subagents/child-executor-guard.js.map +1 -1
  120. package/dist/runtime/subagents/presets.d.ts +4 -5
  121. package/dist/runtime/subagents/presets.d.ts.map +1 -1
  122. package/dist/runtime/subagents/presets.js +18 -33
  123. package/dist/runtime/subagents/presets.js.map +1 -1
  124. package/dist/runtime/subagents/production.d.ts +3 -1
  125. package/dist/runtime/subagents/production.d.ts.map +1 -1
  126. package/dist/runtime/subagents/production.js +37 -7
  127. package/dist/runtime/subagents/production.js.map +1 -1
  128. package/dist/runtime/subagents/runner.d.ts.map +1 -1
  129. package/dist/runtime/subagents/runner.js +24 -3
  130. package/dist/runtime/subagents/runner.js.map +1 -1
  131. package/dist/runtime/subagents/runtime-integration.d.ts +3 -0
  132. package/dist/runtime/subagents/runtime-integration.d.ts.map +1 -1
  133. package/dist/runtime/subagents/runtime-integration.js +18 -7
  134. package/dist/runtime/subagents/runtime-integration.js.map +1 -1
  135. package/dist/runtime/subagents/supervisor.d.ts +4 -4
  136. package/dist/runtime/subagents/supervisor.d.ts.map +1 -1
  137. package/dist/runtime/subagents/supervisor.js +39 -19
  138. package/dist/runtime/subagents/supervisor.js.map +1 -1
  139. package/dist/runtime/subagents/types.d.ts +7 -0
  140. package/dist/runtime/subagents/types.d.ts.map +1 -1
  141. package/dist/runtime/subagents/types.js +12 -1
  142. package/dist/runtime/subagents/types.js.map +1 -1
  143. package/dist/runtime/turn-controller.d.ts.map +1 -1
  144. package/dist/runtime/turn-controller.js +3 -1
  145. package/dist/runtime/turn-controller.js.map +1 -1
  146. package/dist/runtime/ui-events.d.ts +23 -0
  147. package/dist/runtime/ui-events.d.ts.map +1 -1
  148. package/dist/runtime/ui-events.js +5 -5
  149. package/dist/runtime/ui-events.js.map +1 -1
  150. package/dist/services/config.d.ts +1 -1
  151. package/dist/services/config.d.ts.map +1 -1
  152. package/dist/services/config.js +55 -49
  153. package/dist/services/config.js.map +1 -1
  154. package/dist/services/doctor.d.ts.map +1 -1
  155. package/dist/services/doctor.js +163 -17
  156. package/dist/services/doctor.js.map +1 -1
  157. package/dist/services/global-config.d.ts +31 -0
  158. package/dist/services/global-config.d.ts.map +1 -1
  159. package/dist/services/global-config.js.map +1 -1
  160. package/dist/services/goal-storage.d.ts +9 -4
  161. package/dist/services/goal-storage.d.ts.map +1 -1
  162. package/dist/services/goal-storage.js +1113 -75
  163. package/dist/services/goal-storage.js.map +1 -1
  164. package/dist/services/llm.d.ts +19 -0
  165. package/dist/services/llm.d.ts.map +1 -1
  166. package/dist/services/llm.js +153 -20
  167. package/dist/services/llm.js.map +1 -1
  168. package/dist/services/model-catalog.d.ts +2 -0
  169. package/dist/services/model-catalog.d.ts.map +1 -1
  170. package/dist/services/model-catalog.js +25 -15
  171. package/dist/services/model-catalog.js.map +1 -1
  172. package/dist/services/model-context.d.ts.map +1 -1
  173. package/dist/services/model-context.js +36 -0
  174. package/dist/services/model-context.js.map +1 -1
  175. package/dist/services/model-registry.d.ts +1 -1
  176. package/dist/services/model-registry.d.ts.map +1 -1
  177. package/dist/services/model-registry.js +101 -19
  178. package/dist/services/model-registry.js.map +1 -1
  179. package/dist/services/provider-resilience/coordinator.d.ts +2 -1
  180. package/dist/services/provider-resilience/coordinator.d.ts.map +1 -1
  181. package/dist/services/provider-resilience/coordinator.js +7 -6
  182. package/dist/services/provider-resilience/coordinator.js.map +1 -1
  183. package/dist/services/provider-resilience/error-classifier.d.ts.map +1 -1
  184. package/dist/services/provider-resilience/error-classifier.js +67 -17
  185. package/dist/services/provider-resilience/error-classifier.js.map +1 -1
  186. package/dist/services/provider-resilience/types.d.ts +1 -1
  187. package/dist/services/provider-resilience/types.d.ts.map +1 -1
  188. package/dist/services/provider-resilience/types.js.map +1 -1
  189. package/dist/services/redaction.d.ts.map +1 -1
  190. package/dist/services/redaction.js +9 -1
  191. package/dist/services/redaction.js.map +1 -1
  192. package/dist/services/session-storage.d.ts +12 -1
  193. package/dist/services/session-storage.d.ts.map +1 -1
  194. package/dist/services/session-storage.js +23 -7
  195. package/dist/services/session-storage.js.map +1 -1
  196. package/dist/services/storage-maintenance.d.ts +73 -3
  197. package/dist/services/storage-maintenance.d.ts.map +1 -1
  198. package/dist/services/storage-maintenance.js +771 -104
  199. package/dist/services/storage-maintenance.js.map +1 -1
  200. package/dist/services/task-manager.d.ts.map +1 -1
  201. package/dist/services/task-manager.js +2 -2
  202. package/dist/services/task-manager.js.map +1 -1
  203. package/dist/services/tool-allowlist.d.ts +100 -0
  204. package/dist/services/tool-allowlist.d.ts.map +1 -0
  205. package/dist/services/tool-allowlist.js +250 -0
  206. package/dist/services/tool-allowlist.js.map +1 -0
  207. package/dist/services/web-search-adapters.d.ts.map +1 -1
  208. package/dist/services/web-search-adapters.js +89 -49
  209. package/dist/services/web-search-adapters.js.map +1 -1
  210. package/dist/services/web-search-mcp.d.ts.map +1 -1
  211. package/dist/services/web-search-mcp.js +34 -37
  212. package/dist/services/web-search-mcp.js.map +1 -1
  213. package/dist/services/workspace-state.d.ts +4 -0
  214. package/dist/services/workspace-state.d.ts.map +1 -1
  215. package/dist/services/workspace-state.js +30 -9
  216. package/dist/services/workspace-state.js.map +1 -1
  217. package/dist/terminal-ui/launch.d.ts +24 -2
  218. package/dist/terminal-ui/launch.d.ts.map +1 -1
  219. package/dist/terminal-ui/launch.js +166 -8
  220. package/dist/terminal-ui/launch.js.map +1 -1
  221. package/dist/tools/git.d.ts +4 -0
  222. package/dist/tools/git.d.ts.map +1 -1
  223. package/dist/tools/git.js +585 -30
  224. package/dist/tools/git.js.map +1 -1
  225. package/dist/tools/index.d.ts.map +1 -1
  226. package/dist/tools/index.js +79 -11
  227. package/dist/tools/index.js.map +1 -1
  228. package/dist/tools/mcp.d.ts.map +1 -1
  229. package/dist/tools/mcp.js +20 -12
  230. package/dist/tools/mcp.js.map +1 -1
  231. package/dist/tools/sandbox.d.ts +139 -0
  232. package/dist/tools/sandbox.d.ts.map +1 -0
  233. package/dist/tools/sandbox.js +485 -0
  234. package/dist/tools/sandbox.js.map +1 -0
  235. package/dist/tools/web.d.ts.map +1 -1
  236. package/dist/tools/web.js +149 -54
  237. package/dist/tools/web.js.map +1 -1
  238. package/dist/tui-ui/launch.d.ts.map +1 -1
  239. package/dist/tui-ui/launch.js +46 -8
  240. package/dist/tui-ui/launch.js.map +1 -1
  241. package/dist/tui-ui/layout.d.ts.map +1 -1
  242. package/dist/tui-ui/layout.js +98 -23
  243. package/dist/tui-ui/layout.js.map +1 -1
  244. package/dist/tui-ui/pickers.d.ts.map +1 -1
  245. package/dist/tui-ui/pickers.js +4 -3
  246. package/dist/tui-ui/pickers.js.map +1 -1
  247. package/dist/tui-ui/runner.d.ts +7 -0
  248. package/dist/tui-ui/runner.d.ts.map +1 -1
  249. package/dist/tui-ui/runner.js +95 -1
  250. package/dist/tui-ui/runner.js.map +1 -1
  251. package/dist/tui-ui/state.d.ts +25 -1
  252. package/dist/tui-ui/state.d.ts.map +1 -1
  253. package/dist/tui-ui/state.js +95 -37
  254. package/dist/tui-ui/state.js.map +1 -1
  255. package/dist/tui-ui/terminal-image.d.ts +3 -13
  256. package/dist/tui-ui/terminal-image.d.ts.map +1 -1
  257. package/dist/tui-ui/terminal-image.js +5 -160
  258. package/dist/tui-ui/terminal-image.js.map +1 -1
  259. package/dist/utils/mask.d.ts +28 -0
  260. package/dist/utils/mask.d.ts.map +1 -0
  261. package/dist/utils/mask.js +54 -0
  262. package/dist/utils/mask.js.map +1 -0
  263. package/package.json +14 -9
  264. package/dist/core/state.d.ts +0 -94
  265. package/dist/core/state.d.ts.map +0 -1
  266. package/dist/core/state.js +0 -178
  267. package/dist/core/state.js.map +0 -1
  268. package/dist/ink/bidi.d.ts +0 -16
  269. package/dist/ink/bidi.d.ts.map +0 -1
  270. package/dist/ink/bidi.js +0 -124
  271. package/dist/ink/bidi.js.map +0 -1
  272. package/dist/ink/clearTerminal.d.ts +0 -14
  273. package/dist/ink/clearTerminal.d.ts.map +0 -1
  274. package/dist/ink/clearTerminal.js +0 -63
  275. package/dist/ink/clearTerminal.js.map +0 -1
  276. package/dist/ink/colorize.d.ts +0 -17
  277. package/dist/ink/colorize.d.ts.map +0 -1
  278. package/dist/ink/colorize.js +0 -208
  279. package/dist/ink/colorize.js.map +0 -1
  280. package/dist/ink/components/App.d.ts +0 -73
  281. package/dist/ink/components/App.d.ts.map +0 -1
  282. package/dist/ink/components/App.js +0 -646
  283. package/dist/ink/components/App.js.map +0 -1
  284. package/dist/ink/components/AppContext.d.ts +0 -12
  285. package/dist/ink/components/AppContext.d.ts.map +0 -1
  286. package/dist/ink/components/AppContext.js +0 -14
  287. package/dist/ink/components/AppContext.js.map +0 -1
  288. package/dist/ink/components/Box.d.ts +0 -44
  289. package/dist/ink/components/Box.d.ts.map +0 -1
  290. package/dist/ink/components/Box.js +0 -191
  291. package/dist/ink/components/Box.js.map +0 -1
  292. package/dist/ink/components/ClockContext.d.ts +0 -9
  293. package/dist/ink/components/ClockContext.d.ts.map +0 -1
  294. package/dist/ink/components/ClockContext.js +0 -146
  295. package/dist/ink/components/ClockContext.js.map +0 -1
  296. package/dist/ink/components/CursorDeclarationContext.d.ts +0 -23
  297. package/dist/ink/components/CursorDeclarationContext.d.ts.map +0 -1
  298. package/dist/ink/components/CursorDeclarationContext.js +0 -6
  299. package/dist/ink/components/CursorDeclarationContext.js.map +0 -1
  300. package/dist/ink/components/ErrorOverview.d.ts +0 -6
  301. package/dist/ink/components/ErrorOverview.d.ts.map +0 -1
  302. package/dist/ink/components/ErrorOverview.js +0 -27
  303. package/dist/ink/components/ErrorOverview.js.map +0 -1
  304. package/dist/ink/components/Newline.d.ts +0 -13
  305. package/dist/ink/components/Newline.d.ts.map +0 -1
  306. package/dist/ink/components/Newline.js +0 -36
  307. package/dist/ink/components/Newline.js.map +0 -1
  308. package/dist/ink/components/NoSelect.d.ts +0 -20
  309. package/dist/ink/components/NoSelect.d.ts.map +0 -1
  310. package/dist/ink/components/NoSelect.js +0 -63
  311. package/dist/ink/components/NoSelect.js.map +0 -1
  312. package/dist/ink/components/RawAnsi.d.ts +0 -17
  313. package/dist/ink/components/RawAnsi.d.ts.map +0 -1
  314. package/dist/ink/components/RawAnsi.js +0 -52
  315. package/dist/ink/components/RawAnsi.js.map +0 -1
  316. package/dist/ink/components/Spacer.d.ts +0 -6
  317. package/dist/ink/components/Spacer.d.ts.map +0 -1
  318. package/dist/ink/components/Spacer.js +0 -26
  319. package/dist/ink/components/Spacer.js.map +0 -1
  320. package/dist/ink/components/StdinContext.d.ts +0 -28
  321. package/dist/ink/components/StdinContext.d.ts.map +0 -1
  322. package/dist/ink/components/StdinContext.js +0 -19
  323. package/dist/ink/components/StdinContext.js.map +0 -1
  324. package/dist/ink/components/TerminalFocusContext.d.ts +0 -10
  325. package/dist/ink/components/TerminalFocusContext.d.ts.map +0 -1
  326. package/dist/ink/components/TerminalFocusContext.js +0 -81
  327. package/dist/ink/components/TerminalFocusContext.js.map +0 -1
  328. package/dist/ink/components/TerminalSizeContext.d.ts +0 -6
  329. package/dist/ink/components/TerminalSizeContext.d.ts.map +0 -1
  330. package/dist/ink/components/TerminalSizeContext.js +0 -6
  331. package/dist/ink/components/TerminalSizeContext.js.map +0 -1
  332. package/dist/ink/components/Text.d.ts +0 -56
  333. package/dist/ink/components/Text.d.ts.map +0 -1
  334. package/dist/ink/components/Text.js +0 -201
  335. package/dist/ink/components/Text.js.map +0 -1
  336. package/dist/ink/constants.d.ts +0 -2
  337. package/dist/ink/constants.d.ts.map +0 -1
  338. package/dist/ink/constants.js +0 -6
  339. package/dist/ink/constants.js.map +0 -1
  340. package/dist/ink/devtools.d.ts +0 -3
  341. package/dist/ink/devtools.d.ts.map +0 -1
  342. package/dist/ink/devtools.js +0 -5
  343. package/dist/ink/devtools.js.map +0 -1
  344. package/dist/ink/dom.d.ts +0 -77
  345. package/dist/ink/dom.d.ts.map +0 -1
  346. package/dist/ink/dom.js +0 -322
  347. package/dist/ink/dom.js.map +0 -1
  348. package/dist/ink/events/click-event.d.ts +0 -32
  349. package/dist/ink/events/click-event.d.ts.map +0 -1
  350. package/dist/ink/events/click-event.js +0 -30
  351. package/dist/ink/events/click-event.js.map +0 -1
  352. package/dist/ink/events/dispatcher.d.ts +0 -41
  353. package/dist/ink/events/dispatcher.d.ts.map +0 -1
  354. package/dist/ink/events/dispatcher.js +0 -181
  355. package/dist/ink/events/dispatcher.js.map +0 -1
  356. package/dist/ink/events/emitter.d.ts +0 -6
  357. package/dist/ink/events/emitter.d.ts.map +0 -1
  358. package/dist/ink/events/emitter.js +0 -36
  359. package/dist/ink/events/emitter.js.map +0 -1
  360. package/dist/ink/events/event-handlers.d.ts +0 -47
  361. package/dist/ink/events/event-handlers.d.ts.map +0 -1
  362. package/dist/ink/events/event-handlers.js +0 -34
  363. package/dist/ink/events/event-handlers.js.map +0 -1
  364. package/dist/ink/events/event.d.ts +0 -6
  365. package/dist/ink/events/event.d.ts.map +0 -1
  366. package/dist/ink/events/event.js +0 -16
  367. package/dist/ink/events/event.js.map +0 -1
  368. package/dist/ink/events/focus-event.d.ts +0 -14
  369. package/dist/ink/events/focus-event.d.ts.map +0 -1
  370. package/dist/ink/events/focus-event.js +0 -20
  371. package/dist/ink/events/focus-event.js.map +0 -1
  372. package/dist/ink/events/input-event.d.ts +0 -31
  373. package/dist/ink/events/input-event.d.ts.map +0 -1
  374. package/dist/ink/events/input-event.js +0 -163
  375. package/dist/ink/events/input-event.js.map +0 -1
  376. package/dist/ink/events/keyboard-event.d.ts +0 -20
  377. package/dist/ink/events/keyboard-event.d.ts.map +0 -1
  378. package/dist/ink/events/keyboard-event.js +0 -44
  379. package/dist/ink/events/keyboard-event.js.map +0 -1
  380. package/dist/ink/events/terminal-event.d.ts +0 -55
  381. package/dist/ink/events/terminal-event.d.ts.map +0 -1
  382. package/dist/ink/events/terminal-event.js +0 -79
  383. package/dist/ink/events/terminal-event.js.map +0 -1
  384. package/dist/ink/events/terminal-focus-event.d.ts +0 -14
  385. package/dist/ink/events/terminal-focus-event.d.ts.map +0 -1
  386. package/dist/ink/events/terminal-focus-event.js +0 -19
  387. package/dist/ink/events/terminal-focus-event.js.map +0 -1
  388. package/dist/ink/focus.d.ts +0 -44
  389. package/dist/ink/focus.d.ts.map +0 -1
  390. package/dist/ink/focus.js +0 -164
  391. package/dist/ink/focus.js.map +0 -1
  392. package/dist/ink/frame.d.ts +0 -95
  393. package/dist/ink/frame.d.ts.map +0 -1
  394. package/dist/ink/frame.js +0 -35
  395. package/dist/ink/frame.js.map +0 -1
  396. package/dist/ink/get-max-width.d.ts +0 -18
  397. package/dist/ink/get-max-width.d.ts.map +0 -1
  398. package/dist/ink/get-max-width.js +0 -26
  399. package/dist/ink/get-max-width.js.map +0 -1
  400. package/dist/ink/hit-test.d.ts +0 -34
  401. package/dist/ink/hit-test.d.ts.map +0 -1
  402. package/dist/ink/hit-test.js +0 -119
  403. package/dist/ink/hit-test.js.map +0 -1
  404. package/dist/ink/hooks/use-animation-frame.d.ts +0 -27
  405. package/dist/ink/hooks/use-animation-frame.d.ts.map +0 -1
  406. package/dist/ink/hooks/use-animation-frame.js +0 -52
  407. package/dist/ink/hooks/use-animation-frame.js.map +0 -1
  408. package/dist/ink/hooks/use-app.d.ts +0 -6
  409. package/dist/ink/hooks/use-app.d.ts.map +0 -1
  410. package/dist/ink/hooks/use-app.js +0 -13
  411. package/dist/ink/hooks/use-app.js.map +0 -1
  412. package/dist/ink/hooks/use-declared-cursor.d.ts +0 -27
  413. package/dist/ink/hooks/use-declared-cursor.d.ts.map +0 -1
  414. package/dist/ink/hooks/use-declared-cursor.js +0 -67
  415. package/dist/ink/hooks/use-declared-cursor.js.map +0 -1
  416. package/dist/ink/hooks/use-input.d.ts +0 -38
  417. package/dist/ink/hooks/use-input.d.ts.map +0 -1
  418. package/dist/ink/hooks/use-input.js +0 -86
  419. package/dist/ink/hooks/use-input.js.map +0 -1
  420. package/dist/ink/hooks/use-interval.d.ts +0 -19
  421. package/dist/ink/hooks/use-interval.d.ts.map +0 -1
  422. package/dist/ink/hooks/use-interval.js +0 -59
  423. package/dist/ink/hooks/use-interval.js.map +0 -1
  424. package/dist/ink/hooks/use-search-highlight.d.ts +0 -31
  425. package/dist/ink/hooks/use-search-highlight.d.ts.map +0 -1
  426. package/dist/ink/hooks/use-search-highlight.js +0 -39
  427. package/dist/ink/hooks/use-search-highlight.js.map +0 -1
  428. package/dist/ink/hooks/use-selection.d.ts +0 -40
  429. package/dist/ink/hooks/use-selection.d.ts.map +0 -1
  430. package/dist/ink/hooks/use-selection.js +0 -68
  431. package/dist/ink/hooks/use-selection.js.map +0 -1
  432. package/dist/ink/hooks/use-stdin.d.ts +0 -6
  433. package/dist/ink/hooks/use-stdin.d.ts.map +0 -1
  434. package/dist/ink/hooks/use-stdin.js +0 -13
  435. package/dist/ink/hooks/use-stdin.js.map +0 -1
  436. package/dist/ink/hooks/use-tab-status.d.ts +0 -14
  437. package/dist/ink/hooks/use-tab-status.d.ts.map +0 -1
  438. package/dist/ink/hooks/use-tab-status.js +0 -61
  439. package/dist/ink/hooks/use-tab-status.js.map +0 -1
  440. package/dist/ink/hooks/use-terminal-focus.d.ts +0 -11
  441. package/dist/ink/hooks/use-terminal-focus.d.ts.map +0 -1
  442. package/dist/ink/hooks/use-terminal-focus.js +0 -22
  443. package/dist/ink/hooks/use-terminal-focus.js.map +0 -1
  444. package/dist/ink/hooks/use-terminal-title.d.ts +0 -13
  445. package/dist/ink/hooks/use-terminal-title.d.ts.map +0 -1
  446. package/dist/ink/hooks/use-terminal-title.js +0 -36
  447. package/dist/ink/hooks/use-terminal-title.js.map +0 -1
  448. package/dist/ink/hooks/use-terminal-viewport.d.ts +0 -30
  449. package/dist/ink/hooks/use-terminal-viewport.d.ts.map +0 -1
  450. package/dist/ink/hooks/use-terminal-viewport.js +0 -81
  451. package/dist/ink/hooks/use-terminal-viewport.js.map +0 -1
  452. package/dist/ink/ink.d.ts +0 -371
  453. package/dist/ink/ink.d.ts.map +0 -1
  454. package/dist/ink/ink.js +0 -1686
  455. package/dist/ink/ink.js.map +0 -1
  456. package/dist/ink/instances.d.ts +0 -4
  457. package/dist/ink/instances.d.ts.map +0 -1
  458. package/dist/ink/instances.js +0 -10
  459. package/dist/ink/instances.js.map +0 -1
  460. package/dist/ink/line-width-cache.d.ts +0 -2
  461. package/dist/ink/line-width-cache.d.ts.map +0 -1
  462. package/dist/ink/line-width-cache.js +0 -23
  463. package/dist/ink/line-width-cache.js.map +0 -1
  464. package/dist/ink/log-update.d.ts +0 -18
  465. package/dist/ink/log-update.d.ts.map +0 -1
  466. package/dist/ink/log-update.js +0 -637
  467. package/dist/ink/log-update.js.map +0 -1
  468. package/dist/ink/measure-element.d.ts +0 -17
  469. package/dist/ink/measure-element.d.ts.map +0 -1
  470. package/dist/ink/measure-element.js +0 -11
  471. package/dist/ink/measure-element.js.map +0 -1
  472. package/dist/ink/measure-text.d.ts +0 -7
  473. package/dist/ink/measure-text.d.ts.map +0 -1
  474. package/dist/ink/measure-text.js +0 -38
  475. package/dist/ink/measure-text.js.map +0 -1
  476. package/dist/ink/node-cache.d.ts +0 -21
  477. package/dist/ink/node-cache.d.ts.map +0 -1
  478. package/dist/ink/node-cache.js +0 -36
  479. package/dist/ink/node-cache.js.map +0 -1
  480. package/dist/ink/optimizer.d.ts +0 -16
  481. package/dist/ink/optimizer.d.ts.map +0 -1
  482. package/dist/ink/optimizer.js +0 -85
  483. package/dist/ink/optimizer.js.map +0 -1
  484. package/dist/ink/output.d.ts +0 -120
  485. package/dist/ink/output.d.ts.map +0 -1
  486. package/dist/ink/output.js +0 -559
  487. package/dist/ink/output.js.map +0 -1
  488. package/dist/ink/parse-keypress.d.ts +0 -112
  489. package/dist/ink/parse-keypress.d.ts.map +0 -1
  490. package/dist/ink/parse-keypress.js +0 -719
  491. package/dist/ink/parse-keypress.js.map +0 -1
  492. package/dist/ink/parse-keypress.test.d.ts +0 -2
  493. package/dist/ink/parse-keypress.test.d.ts.map +0 -1
  494. package/dist/ink/parse-keypress.test.js +0 -37
  495. package/dist/ink/parse-keypress.test.js.map +0 -1
  496. package/dist/ink/reconciler.d.ts +0 -12
  497. package/dist/ink/reconciler.d.ts.map +0 -1
  498. package/dist/ink/reconciler.js +0 -456
  499. package/dist/ink/reconciler.js.map +0 -1
  500. package/dist/ink/render-border.d.ts +0 -25
  501. package/dist/ink/render-border.d.ts.map +0 -1
  502. package/dist/ink/render-border.js +0 -141
  503. package/dist/ink/render-border.js.map +0 -1
  504. package/dist/ink/render-node-to-output.d.ts +0 -46
  505. package/dist/ink/render-node-to-output.d.ts.map +0 -1
  506. package/dist/ink/render-node-to-output.js +0 -1257
  507. package/dist/ink/render-node-to-output.js.map +0 -1
  508. package/dist/ink/render-to-screen.d.ts +0 -47
  509. package/dist/ink/render-to-screen.d.ts.map +0 -1
  510. package/dist/ink/render-to-screen.js +0 -213
  511. package/dist/ink/render-to-screen.js.map +0 -1
  512. package/dist/ink/renderer.d.ts +0 -15
  513. package/dist/ink/renderer.d.ts.map +0 -1
  514. package/dist/ink/renderer.js +0 -169
  515. package/dist/ink/renderer.js.map +0 -1
  516. package/dist/ink/root.d.ts +0 -75
  517. package/dist/ink/root.d.ts.map +0 -1
  518. package/dist/ink/root.js +0 -89
  519. package/dist/ink/root.js.map +0 -1
  520. package/dist/ink/screen.d.ts +0 -270
  521. package/dist/ink/screen.d.ts.map +0 -1
  522. package/dist/ink/screen.js +0 -1194
  523. package/dist/ink/screen.js.map +0 -1
  524. package/dist/ink/searchHighlight.d.ts +0 -21
  525. package/dist/ink/searchHighlight.d.ts.map +0 -1
  526. package/dist/ink/searchHighlight.js +0 -82
  527. package/dist/ink/searchHighlight.js.map +0 -1
  528. package/dist/ink/selection.d.ts +0 -230
  529. package/dist/ink/selection.d.ts.map +0 -1
  530. package/dist/ink/selection.js +0 -814
  531. package/dist/ink/selection.js.map +0 -1
  532. package/dist/ink/squash-text-nodes.d.ts +0 -23
  533. package/dist/ink/squash-text-nodes.d.ts.map +0 -1
  534. package/dist/ink/squash-text-nodes.js +0 -60
  535. package/dist/ink/squash-text-nodes.js.map +0 -1
  536. package/dist/ink/stringWidth.d.ts +0 -2
  537. package/dist/ink/stringWidth.d.ts.map +0 -1
  538. package/dist/ink/stringWidth.js +0 -207
  539. package/dist/ink/stringWidth.js.map +0 -1
  540. package/dist/ink/styles.d.ts +0 -307
  541. package/dist/ink/styles.d.ts.map +0 -1
  542. package/dist/ink/styles.js +0 -302
  543. package/dist/ink/styles.js.map +0 -1
  544. package/dist/ink/supports-hyperlinks.d.ts +0 -14
  545. package/dist/ink/supports-hyperlinks.d.ts.map +0 -1
  546. package/dist/ink/supports-hyperlinks.js +0 -48
  547. package/dist/ink/supports-hyperlinks.js.map +0 -1
  548. package/dist/ink/tabstops.d.ts +0 -2
  549. package/dist/ink/tabstops.d.ts.map +0 -1
  550. package/dist/ink/tabstops.js +0 -43
  551. package/dist/ink/tabstops.js.map +0 -1
  552. package/dist/ink/terminal-focus-state.d.ts +0 -7
  553. package/dist/ink/terminal-focus-state.d.ts.map +0 -1
  554. package/dist/ink/terminal-focus-state.js +0 -43
  555. package/dist/ink/terminal-focus-state.js.map +0 -1
  556. package/dist/ink/terminal-querier.d.ts +0 -130
  557. package/dist/ink/terminal-querier.d.ts.map +0 -1
  558. package/dist/ink/terminal-querier.js +0 -184
  559. package/dist/ink/terminal-querier.js.map +0 -1
  560. package/dist/ink/terminal.d.ts +0 -56
  561. package/dist/ink/terminal.d.ts.map +0 -1
  562. package/dist/ink/terminal.js +0 -249
  563. package/dist/ink/terminal.js.map +0 -1
  564. package/dist/ink/termio/csi.d.ts +0 -166
  565. package/dist/ink/termio/csi.d.ts.map +0 -1
  566. package/dist/ink/termio/csi.js +0 -285
  567. package/dist/ink/termio/csi.js.map +0 -1
  568. package/dist/ink/termio/dec.d.ts +0 -38
  569. package/dist/ink/termio/dec.d.ts.map +0 -1
  570. package/dist/ink/termio/dec.js +0 -59
  571. package/dist/ink/termio/dec.js.map +0 -1
  572. package/dist/ink/termio.d.ts +0 -25
  573. package/dist/ink/termio.d.ts.map +0 -1
  574. package/dist/ink/termio.js +0 -32
  575. package/dist/ink/termio.js.map +0 -1
  576. package/dist/ink/useTerminalNotification.d.ts +0 -27
  577. package/dist/ink/useTerminalNotification.d.ts.map +0 -1
  578. package/dist/ink/useTerminalNotification.js +0 -62
  579. package/dist/ink/useTerminalNotification.js.map +0 -1
  580. package/dist/ink/warn.d.ts +0 -2
  581. package/dist/ink/warn.d.ts.map +0 -1
  582. package/dist/ink/warn.js +0 -14
  583. package/dist/ink/warn.js.map +0 -1
  584. package/dist/ink/widest-line.d.ts +0 -2
  585. package/dist/ink/widest-line.d.ts.map +0 -1
  586. package/dist/ink/widest-line.js +0 -18
  587. package/dist/ink/widest-line.js.map +0 -1
  588. package/dist/ink/wrap-text.d.ts +0 -3
  589. package/dist/ink/wrap-text.d.ts.map +0 -1
  590. package/dist/ink/wrap-text.js +0 -61
  591. package/dist/ink/wrap-text.js.map +0 -1
  592. package/dist/ink/wrapAnsi.d.ts +0 -8
  593. package/dist/ink/wrapAnsi.d.ts.map +0 -1
  594. package/dist/ink/wrapAnsi.js +0 -13
  595. package/dist/ink/wrapAnsi.js.map +0 -1
  596. package/dist/ink-ui/components/TerminalCursor.d.ts +0 -15
  597. package/dist/ink-ui/components/TerminalCursor.d.ts.map +0 -1
  598. package/dist/ink-ui/components/TerminalCursor.js +0 -49
  599. package/dist/ink-ui/components/TerminalCursor.js.map +0 -1
  600. package/dist/ink-ui/runtime/stdout.d.ts +0 -11
  601. package/dist/ink-ui/runtime/stdout.d.ts.map +0 -1
  602. package/dist/ink-ui/runtime/stdout.js +0 -82
  603. package/dist/ink-ui/runtime/stdout.js.map +0 -1
  604. package/dist/runtime/goal-coordinator.d.ts +0 -66
  605. package/dist/runtime/goal-coordinator.d.ts.map +0 -1
  606. package/dist/runtime/goal-coordinator.js +0 -200
  607. package/dist/runtime/goal-coordinator.js.map +0 -1
  608. package/dist/screens/REPL.d.ts +0 -21
  609. package/dist/screens/REPL.d.ts.map +0 -1
  610. package/dist/screens/REPL.js +0 -139
  611. package/dist/screens/REPL.js.map +0 -1
  612. package/dist/services/goal-sidecar.d.ts +0 -96
  613. package/dist/services/goal-sidecar.d.ts.map +0 -1
  614. package/dist/services/goal-sidecar.js +0 -145
  615. package/dist/services/goal-sidecar.js.map +0 -1
  616. package/dist/tools/goal.d.ts +0 -17
  617. package/dist/tools/goal.d.ts.map +0 -1
  618. package/dist/tools/goal.js +0 -191
  619. package/dist/tools/goal.js.map +0 -1
  620. package/dist/ui/ink/components/App.d.ts +0 -6
  621. package/dist/ui/ink/components/App.d.ts.map +0 -1
  622. package/dist/ui/ink/components/App.js +0 -38
  623. package/dist/ui/ink/components/App.js.map +0 -1
  624. package/dist/ui/ink/components/CommandPanel.d.ts +0 -13
  625. package/dist/ui/ink/components/CommandPanel.d.ts.map +0 -1
  626. package/dist/ui/ink/components/CommandPanel.js +0 -41
  627. package/dist/ui/ink/components/CommandPanel.js.map +0 -1
  628. package/dist/ui/ink/components/InputLine.d.ts +0 -8
  629. package/dist/ui/ink/components/InputLine.d.ts.map +0 -1
  630. package/dist/ui/ink/components/InputLine.js +0 -15
  631. package/dist/ui/ink/components/InputLine.js.map +0 -1
  632. package/dist/ui/ink/components/StatusBar.d.ts +0 -9
  633. package/dist/ui/ink/components/StatusBar.d.ts.map +0 -1
  634. package/dist/ui/ink/components/StatusBar.js +0 -18
  635. package/dist/ui/ink/components/StatusBar.js.map +0 -1
  636. package/dist/ui/ink/components/index.d.ts +0 -5
  637. package/dist/ui/ink/components/index.d.ts.map +0 -1
  638. package/dist/ui/ink/components/index.js +0 -5
  639. package/dist/ui/ink/components/index.js.map +0 -1
  640. package/dist/utils/chalk.d.ts +0 -9
  641. package/dist/utils/chalk.d.ts.map +0 -1
  642. package/dist/utils/chalk.js +0 -16
  643. package/dist/utils/chalk.js.map +0 -1
@@ -40,10 +40,12 @@ 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");
46
47
  const config_1 = require("../services/config");
48
+ const tool_allowlist_1 = require("../services/tool-allowlist");
47
49
  const framework_1 = require("../framework");
48
50
  const prompt_1 = require("./goals/prompt");
49
51
  const harness_1 = require("../harness");
@@ -397,7 +399,14 @@ function appendAssistantNotice(messages, notice) {
397
399
  function recordTraceEvent(events, sessionId, event) {
398
400
  if (!sessionId)
399
401
  return null;
400
- const traceEvent = (0, session_storage_1.appendSessionTraceEvent)(sessionId, event);
402
+ const goal = goalTraceContext.getStore();
403
+ const traceEvent = (0, session_storage_1.appendSessionTraceEvent)(sessionId, {
404
+ ...event,
405
+ goalId: goal?.goalId,
406
+ goalRevision: goal?.goalRevision,
407
+ goalInputKind: goal?.goalInputKind,
408
+ goalStopReason: goal?.getStopReason(),
409
+ });
401
410
  if (traceEvent) {
402
411
  events.traceEventRecorded?.(traceEvent);
403
412
  }
@@ -485,9 +494,12 @@ function structuredToolFinishActivity(event, seq, options = {}) {
485
494
  const outputBytes = event.outputBytes ?? Buffer.byteLength(durableOutput, 'utf8');
486
495
  const aggregatePresentation = (0, aggregate_tool_presenter_1.presentAggregateToolResult)(event.name, durableOutput, outputBytes);
487
496
  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);
497
+ const storedArtifact = event.artifactRef ??
498
+ (options.projectPath &&
499
+ durableOutput &&
500
+ (outputBytes > tool_output_presentation_1.DEFAULT_TOOL_OUTPUT_POLICY.inlineMaxBytes || aggregate)
501
+ ? ((0, tool_artifacts_1.storeArtifact)(options.projectPath, event.name, durableOutput, outputBytes) ?? undefined)
502
+ : undefined);
491
503
  const artifactRef = storedArtifact
492
504
  ? { id: storedArtifact.id, outputBytes: storedArtifact.outputBytes }
493
505
  : undefined;
@@ -645,13 +657,13 @@ function sessionMessagesToTranscriptEntries(sessionId, options = {}) {
645
657
  : durable;
646
658
  const durableOutput = typeof durable.output === 'string' ? durable.output : '';
647
659
  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');
660
+ const outputBytes = trace?.outputBytes ??
661
+ (durable.schemaVersion === 1 ? durable.outputBytes : undefined) ??
662
+ Buffer.byteLength(durableOutput, 'utf8');
651
663
  const artifactId = durable.artifactRef?.id ?? trace?.artifactId;
652
664
  fallbackToolSequence += 1;
653
665
  const sequence = message.toolCallId
654
- ? sequenceByCallId.get(message.toolCallId) ?? fallbackToolSequence
666
+ ? (sequenceByCallId.get(message.toolCallId) ?? fallbackToolSequence)
655
667
  : fallbackToolSequence;
656
668
  const outputView = options.includeToolOutputViews && call && message.toolCallId
657
669
  ? (0, tool_output_presentation_1.createToolOutputView)({
@@ -764,6 +776,7 @@ function createAssistantStreamPresenter(events, abortSignal) {
764
776
  },
765
777
  };
766
778
  }
779
+ const goalTraceContext = new async_hooks_1.AsyncLocalStorage();
767
780
  class LocalFastPathBlockedError extends Error {
768
781
  constructor(message) {
769
782
  super(message);
@@ -902,6 +915,7 @@ function createToolEventPresenter(events, options = {}) {
902
915
  outputBytes: toolActivity.outputView.detailRef.outputBytes,
903
916
  }
904
917
  : event.artifactRef,
918
+ externalAssertion: event.externalAssertion,
905
919
  sequence: seq,
906
920
  batchCount: event.batchCount,
907
921
  batchIndex: event.batchIndex,
@@ -964,6 +978,13 @@ class AgentChatController {
964
978
  setGoalCoordinator(coord) {
965
979
  this.goalCoordinator = coord;
966
980
  }
981
+ resolveToolAllowlist() {
982
+ const cwd = this.runtime.cwd;
983
+ if (this.toolAllowlistCache?.cwd !== cwd) {
984
+ this.toolAllowlistCache = { cwd, evaluator: (0, tool_allowlist_1.resolveProjectToolAllowlist)(cwd).evaluator };
985
+ }
986
+ return this.toolAllowlistCache.evaluator;
987
+ }
967
988
  constructor(runtime, events, controllerOptions = {}) {
968
989
  this.runtime = runtime;
969
990
  this.events = events;
@@ -979,6 +1000,14 @@ class AgentChatController {
979
1000
  const text = input.trim();
980
1001
  if (!text)
981
1002
  return;
1003
+ // Every root input owns a fresh accounting snapshot. Commands and local
1004
+ // fast paths are known zero-provider turns; runChat changes tokenUsage to
1005
+ // null before networking so missing provider usage remains fail-closed.
1006
+ const storeWithState = this.runtime.store;
1007
+ storeWithState.setState?.({
1008
+ tokenUsage: { promptTokens: 0, completionTokens: 0 },
1009
+ lastLoopStats: undefined,
1010
+ });
982
1011
  const parsed = (0, parser_1.parseInput)(text);
983
1012
  if (!parsed.isCommand) {
984
1013
  const localFastPath = parseLocalFastPath(text);
@@ -1022,7 +1051,67 @@ class AgentChatController {
1022
1051
  return;
1023
1052
  }
1024
1053
  const ctx = this.createCommandContext(options.abortSignal, options.turnId);
1025
- const { result, output } = await captureConsoleOutput(() => command.execute(ctx, parsed.args));
1054
+ let commandProviderAttempts = 0;
1055
+ const commandProviderPreflight = async (context) => {
1056
+ commandProviderAttempts += 1;
1057
+ return this.controllerOptions.beforeProviderRequest
1058
+ ? this.controllerOptions.beforeProviderRequest(context)
1059
+ : { available: true };
1060
+ };
1061
+ const restoreProviderPreflight = typeof this.runtime.llm?.setProviderRequestPreflight === 'function'
1062
+ ? this.runtime.llm.setProviderRequestPreflight(commandProviderPreflight)
1063
+ : undefined;
1064
+ const commandUsage = { promptTokens: 0, completionTokens: 0 };
1065
+ let commandUsageEvents = 0;
1066
+ const unsubscribeCommandUsage = typeof this.runtime.llm?.subscribeUsage === 'function'
1067
+ ? this.runtime.llm.subscribeUsage(event => {
1068
+ commandUsageEvents += 1;
1069
+ commandUsage.promptTokens += event.usage.promptTokens;
1070
+ commandUsage.completionTokens += event.usage.completionTokens;
1071
+ })
1072
+ : undefined;
1073
+ let result;
1074
+ let output;
1075
+ try {
1076
+ ({ result, output } = await captureConsoleOutput(() => command.execute(ctx, parsed.args)));
1077
+ }
1078
+ finally {
1079
+ unsubscribeCommandUsage?.();
1080
+ restoreProviderPreflight?.();
1081
+ if (commandUsage.promptTokens > 0 || commandUsage.completionTokens > 0) {
1082
+ this.runtime.store.setTokenUsage(commandUsage);
1083
+ }
1084
+ const providerRequests = Math.max(commandProviderAttempts, commandUsageEvents);
1085
+ if (providerRequests > 0) {
1086
+ const diagnostics = getLastRequestDiagnostics(this.runtime.llm);
1087
+ const retryCount = diagnostics?.retryCount ?? 0;
1088
+ const fallbackCount = diagnostics?.fallbackTriggered ? 1 : 0;
1089
+ this.setLoopStats({
1090
+ turnsStarted: 1,
1091
+ llmRequests: providerRequests,
1092
+ toolCalls: 0,
1093
+ readOnlyToolCalls: 0,
1094
+ unsafeToolCalls: 0,
1095
+ toolResultBytes: 0,
1096
+ modelVisibleToolBytes: 0,
1097
+ summarizedBytes: 0,
1098
+ finishReason: commandUsageEvents > 0 ? 'completed' : 'failed',
1099
+ providerRetryCount: retryCount,
1100
+ providerRetryDelayMs: diagnostics?.retryDelayMs,
1101
+ providerRetryErrorTypes: diagnostics?.retryErrorTypes,
1102
+ providerLastRetryErrorType: diagnostics?.lastRetryErrorType,
1103
+ providerLastRetryStatus: diagnostics?.lastRetryStatus,
1104
+ providerFallbackCount: fallbackCount,
1105
+ providerFallbackFromModel: diagnostics?.fallbackFromModel,
1106
+ providerFallbackToModel: diagnostics?.fallbackToModel,
1107
+ providerFinalModel: diagnostics?.finalModel,
1108
+ providerUsingFallback: diagnostics?.usingFallback,
1109
+ singleReadOnlyStreak: 0,
1110
+ batchReadSuggestionCount: 0,
1111
+ localFastPathUsed: false,
1112
+ });
1113
+ }
1114
+ }
1026
1115
  if (output) {
1027
1116
  this.events.append({
1028
1117
  role: result.success ? 'system' : 'error',
@@ -1049,6 +1138,10 @@ class AgentChatController {
1049
1138
  this.events.showSessionPicker(result.sessionPicker);
1050
1139
  return;
1051
1140
  }
1141
+ if (result.modelPicker) {
1142
+ this.events.showModelPicker?.(result.modelPicker);
1143
+ return;
1144
+ }
1052
1145
  if (result.editPreview) {
1053
1146
  this.events.showEditPreview(result.editPreview);
1054
1147
  return;
@@ -1057,6 +1150,25 @@ class AgentChatController {
1057
1150
  await this.runChat(result.chatInput ?? parsed.args, options);
1058
1151
  }
1059
1152
  }
1153
+ async runRequest(request, options = {}) {
1154
+ const internalInput = request.text?.trim() ||
1155
+ 'Continue pursuing the active goal from its persisted plan and evidence.';
1156
+ const run = () => this.runInput(internalInput, {
1157
+ ...options,
1158
+ persistAsUserMessage: request.persistAsUserMessage,
1159
+ inputKind: request.inputKind,
1160
+ });
1161
+ if (!request.goal) {
1162
+ await run();
1163
+ return;
1164
+ }
1165
+ await goalTraceContext.run({
1166
+ goalId: request.goal.goalId,
1167
+ goalRevision: request.goal.revision,
1168
+ goalInputKind: request.inputKind,
1169
+ getStopReason: () => this.goalCoordinator?.goal?.stopReason?.message,
1170
+ }, run);
1171
+ }
1060
1172
  async runLocalFastPath(input, action, options = {}) {
1061
1173
  const activeSession = this.runtime.getSession() ??
1062
1174
  this.runtime.ensureSession() ??
@@ -1088,7 +1200,9 @@ class AgentChatController {
1088
1200
  note: compactMiddle(action.label, 160),
1089
1201
  });
1090
1202
  }
1091
- this.runtime.store.addMessage({ role: 'user', content: input });
1203
+ if (options.persistAsUserMessage !== false) {
1204
+ this.runtime.store.addMessage({ role: 'user', content: input });
1205
+ }
1092
1206
  this.events.setStatus(`Running local ${action.label}...`);
1093
1207
  try {
1094
1208
  const tool = (0, tools_1.getRuntimeTools)().find(candidate => candidate.name === action.tool);
@@ -1253,9 +1367,7 @@ class AgentChatController {
1253
1367
  ensureSession: this.runtime.ensureSession,
1254
1368
  setSession: session => {
1255
1369
  this.runtime.setSession(session);
1256
- const renderer = this.controllerOptions.uiRenderer
1257
- ?? this.runtime.config.ui?.renderer
1258
- ?? 'terminal';
1370
+ const renderer = this.controllerOptions.uiRenderer ?? this.runtime.config.ui?.renderer ?? 'terminal';
1259
1371
  this.events.replaceTranscript(sessionMessagesToTranscriptEntries(session.id, {
1260
1372
  includeToolOutputViews: renderer === 'tui',
1261
1373
  }));
@@ -1349,7 +1461,7 @@ class AgentChatController {
1349
1461
  if (!bundle)
1350
1462
  return stats;
1351
1463
  const usage = bundle.getAggregateUsage();
1352
- if (usage.modelRequests === 0 && usage.toolCalls === 0)
1464
+ if (usage.modelRequests === 0 && usage.toolCalls === 0 && usage.usageComplete === true)
1353
1465
  return stats;
1354
1466
  const subtaskCount = bundle.getSubtaskCount();
1355
1467
  const subagentSuffix = `subagents: ${usage.modelRequests} req/${usage.toolCalls} calls across ${subtaskCount} task(s)`;
@@ -1358,6 +1470,11 @@ class AgentChatController {
1358
1470
  llmRequests: (stats.llmRequests ?? 0) + usage.modelRequests,
1359
1471
  toolCalls: (stats.toolCalls ?? 0) + usage.toolCalls,
1360
1472
  readOnlyToolCalls: (stats.readOnlyToolCalls ?? 0) + usage.toolCalls,
1473
+ subagentPromptTokens: usage.promptTokens,
1474
+ subagentCompletionTokens: usage.completionTokens,
1475
+ subagentTotalTokens: usage.promptTokens + usage.completionTokens,
1476
+ usageAccountingComplete: stats.usageAccountingComplete !== false &&
1477
+ usage.usageComplete === true,
1361
1478
  continuationHint: stats.continuationHint
1362
1479
  ? `${stats.continuationHint} (${subagentSuffix})`
1363
1480
  : subagentSuffix,
@@ -1380,6 +1497,9 @@ class AgentChatController {
1380
1497
  });
1381
1498
  return;
1382
1499
  }
1500
+ // Usage belongs to a single root turn. Clear the previous snapshot before
1501
+ // any provider request so failures without usage cannot inherit stale data.
1502
+ this.runtime.store.setState({ tokenUsage: null });
1383
1503
  const abortSignal = options.abortSignal;
1384
1504
  const turnId = traceTurnId(options.turnId);
1385
1505
  const activeSession = this.runtime.getSession() ??
@@ -1396,7 +1516,7 @@ class AgentChatController {
1396
1516
  sessionId,
1397
1517
  });
1398
1518
  const appliedSkillNames = skillResolution.skills.map(skill => skill.name);
1399
- if (sessionId) {
1519
+ if (sessionId && options.persistAsUserMessage !== false) {
1400
1520
  (0, session_storage_1.appendSessionMessage)(sessionId, {
1401
1521
  role: 'user',
1402
1522
  content: input,
@@ -1411,7 +1531,9 @@ class AgentChatController {
1411
1531
  });
1412
1532
  appendWorkspaceSnapshotTrace(this.events, sessionId, turnId, 'pre_turn', preWorkspace);
1413
1533
  }
1414
- this.runtime.store.addMessage({ role: 'user', content: input });
1534
+ if (options.persistAsUserMessage !== false) {
1535
+ this.runtime.store.addMessage({ role: 'user', content: input });
1536
+ }
1415
1537
  (0, prompt_context_1.refreshProjectInstructions)(this.runtime.store, this.runtime.cwd);
1416
1538
  const snapshot = this.runtime.store.getSnapshot();
1417
1539
  const harness = (0, harness_1.createContextHarness)({
@@ -1424,7 +1546,9 @@ class AgentChatController {
1424
1546
  completionGate: true,
1425
1547
  },
1426
1548
  });
1427
- const intent = harness.updateContractFromUserInput(input);
1549
+ const intent = harness.updateContractFromUserInput(options.inputKind === 'goal_continuation'
1550
+ ? (this.goalCoordinator?.goal?.objective ?? input)
1551
+ : input);
1428
1552
  harness.recordAppliedSkills(skillResolution.skills);
1429
1553
  // Reconcile diagnostic: when harness state is present but objective may be incomplete
1430
1554
  if (snapshot.harnessState &&
@@ -1480,6 +1604,7 @@ class AgentChatController {
1480
1604
  // R6: wire child usage callback so CostTracker records subagent
1481
1605
  // token consumption. Injected by AgentRuntimeController via chatOptions.
1482
1606
  onChildUsage: this.controllerOptions.onChildUsage,
1607
+ beforeProviderRequest: this.controllerOptions.beforeProviderRequest,
1483
1608
  })
1484
1609
  : null;
1485
1610
  const subtaskTool = subagentBundle?.tool ?? null;
@@ -1503,6 +1628,9 @@ class AgentChatController {
1503
1628
  { role: 'system', content: systemPrompt.static, cacheControl: { type: 'ephemeral' } },
1504
1629
  ...(systemPrompt.dynamic ? [{ role: 'system', content: systemPrompt.dynamic }] : []),
1505
1630
  ...snapshot.conversationHistory,
1631
+ ...(options.persistAsUserMessage === false
1632
+ ? [{ role: 'user', content: input }]
1633
+ : []),
1506
1634
  ];
1507
1635
  let finalContent = '';
1508
1636
  let finalUsage;
@@ -1563,6 +1691,26 @@ class AgentChatController {
1563
1691
  let observedUnsafeToolCalls = 0;
1564
1692
  let observedToolResultBytes = 0;
1565
1693
  let observedModelVisibleToolBytes = 0;
1694
+ const restoreProviderPreflight = typeof this.runtime.llm.setProviderRequestPreflight === 'function'
1695
+ ? this.runtime.llm.setProviderRequestPreflight(this.controllerOptions.beforeProviderRequest)
1696
+ : undefined;
1697
+ const persistInterruptedAccounting = (rootUsage, stats, usageAccountingComplete) => {
1698
+ const accountingStats = {
1699
+ ...stats,
1700
+ finishReason: 'cancelled',
1701
+ usageAccountingComplete,
1702
+ };
1703
+ const interruptedStats = this.foldSubagentUsage(accountingStats, subagentBundle);
1704
+ this.setLoopStats(interruptedStats);
1705
+ const subagentUsage = subagentBundle?.getAggregateUsage();
1706
+ const knownZeroRootUsage = usageAccountingComplete && interruptedStats.llmRequests === 0;
1707
+ if (rootUsage || knownZeroRootUsage) {
1708
+ this.runtime.store.setTokenUsage({
1709
+ promptTokens: (rootUsage?.promptTokens ?? 0) + (subagentUsage?.promptTokens ?? 0),
1710
+ completionTokens: (rootUsage?.completionTokens ?? 0) + (subagentUsage?.completionTokens ?? 0),
1711
+ });
1712
+ }
1713
+ };
1566
1714
  try {
1567
1715
  for await (const event of (0, framework_1.query)({
1568
1716
  messages,
@@ -1573,6 +1721,7 @@ class AgentChatController {
1573
1721
  costTracker: snapshot.costTracker,
1574
1722
  permissionMode: snapshot.permissionMode,
1575
1723
  toolConfirmation: this.runtime.config.toolConfirmation,
1724
+ toolAllowlist: this.resolveToolAllowlist(),
1576
1725
  confirmToolUse: this.controllerOptions.confirmToolUse,
1577
1726
  toolContext: {
1578
1727
  cwd: this.runtime.cwd,
@@ -1861,6 +2010,19 @@ class AgentChatController {
1861
2010
  }
1862
2011
  const wasAborted = abortSignal?.aborted === true;
1863
2012
  if (wasAborted) {
2013
+ const stats = pendingCompleteStats ??
2014
+ (0, framework_1.createFailedLoopStats)({
2015
+ loopBudget,
2016
+ diagnostics: observedLlmRequests > 0 ? getLastRequestDiagnostics(this.runtime.llm) : undefined,
2017
+ turnsStarted: observedTurnsStarted,
2018
+ llmRequests: observedLlmRequests,
2019
+ toolCalls: observedToolCalls,
2020
+ readOnlyToolCalls: observedReadOnlyToolCalls,
2021
+ unsafeToolCalls: observedUnsafeToolCalls,
2022
+ toolResultBytes: observedToolResultBytes,
2023
+ modelVisibleToolBytes: observedModelVisibleToolBytes,
2024
+ });
2025
+ persistInterruptedAccounting(finalUsage, stats, finalUsage !== undefined || stats.llmRequests === 0);
1864
2026
  assistantStream.discardSegment();
1865
2027
  this.events.setStatus('Interrupted.');
1866
2028
  removeTrailingUserMessage(this.runtime);
@@ -2087,10 +2249,30 @@ class AgentChatController {
2087
2249
  gc.deferContinuation();
2088
2250
  }
2089
2251
  }
2090
- catch { /* best effort */ }
2252
+ catch {
2253
+ /* best effort */
2254
+ }
2091
2255
  return;
2092
2256
  }
2093
2257
  if (isAbortError(error, abortSignal)) {
2258
+ const interruptedStats = error instanceof framework_1.QueryLoopError
2259
+ ? error.stats
2260
+ : (0, framework_1.createFailedLoopStats)({
2261
+ loopBudget,
2262
+ diagnostics: observedLlmRequests > 0 ? getLastRequestDiagnostics(this.runtime.llm) : undefined,
2263
+ turnsStarted: observedTurnsStarted,
2264
+ llmRequests: observedLlmRequests,
2265
+ toolCalls: observedToolCalls,
2266
+ readOnlyToolCalls: observedReadOnlyToolCalls,
2267
+ unsafeToolCalls: observedUnsafeToolCalls,
2268
+ toolResultBytes: observedToolResultBytes,
2269
+ modelVisibleToolBytes: observedModelVisibleToolBytes,
2270
+ });
2271
+ const interruptedRootUsage = error instanceof framework_1.QueryLoopError ? error.aggregateUsage : undefined;
2272
+ // A thrown abort after a provider request started can only prove a
2273
+ // lower bound: the in-flight request may be billable even when its
2274
+ // final usage chunk never arrived.
2275
+ persistInterruptedAccounting(interruptedRootUsage, interruptedStats, interruptedStats.llmRequests === 0);
2094
2276
  assistantStream.discardSegment();
2095
2277
  this.events.setStatus('Interrupted.');
2096
2278
  removeTrailingUserMessage(this.runtime);
@@ -2123,7 +2305,7 @@ class AgentChatController {
2123
2305
  errorLayer: errorLayerForChatError(error),
2124
2306
  });
2125
2307
  this.events.setStatus('Turn failed. Ready for the next input.');
2126
- const failedStats = error instanceof framework_1.QueryLoopError
2308
+ const failedStats = this.foldSubagentUsage(error instanceof framework_1.QueryLoopError
2127
2309
  ? error.stats
2128
2310
  : (0, framework_1.createFailedLoopStats)({
2129
2311
  loopBudget,
@@ -2135,7 +2317,16 @@ class AgentChatController {
2135
2317
  unsafeToolCalls: observedUnsafeToolCalls,
2136
2318
  toolResultBytes: observedToolResultBytes,
2137
2319
  modelVisibleToolBytes: observedModelVisibleToolBytes,
2320
+ }), subagentBundle);
2321
+ const rootUsage = error instanceof framework_1.QueryLoopError ? error.aggregateUsage : undefined;
2322
+ const subagentUsage = subagentBundle?.getAggregateUsage();
2323
+ const hasSubagentUsage = (subagentUsage?.promptTokens ?? 0) > 0 || (subagentUsage?.completionTokens ?? 0) > 0;
2324
+ if (rootUsage || hasSubagentUsage) {
2325
+ this.runtime.store.setTokenUsage({
2326
+ promptTokens: (rootUsage?.promptTokens ?? 0) + (subagentUsage?.promptTokens ?? 0),
2327
+ completionTokens: (rootUsage?.completionTokens ?? 0) + (subagentUsage?.completionTokens ?? 0),
2138
2328
  });
2329
+ }
2139
2330
  this.setLoopStats(failedStats);
2140
2331
  if (sessionId) {
2141
2332
  recordProviderTraceEvents(this.events, sessionId, turnId, failedStats);
@@ -2183,6 +2374,9 @@ class AgentChatController {
2183
2374
  this.runtime.store.setState({ conversationHistory: history.slice(0, -1) });
2184
2375
  }
2185
2376
  }
2377
+ finally {
2378
+ restoreProviderPreflight?.();
2379
+ }
2186
2380
  }
2187
2381
  }
2188
2382
  exports.AgentChatController = AgentChatController;