@qduc/term2 0.11.1 → 0.13.0

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 (1386) hide show
  1. package/README.md +12 -5
  2. package/dist/agent.d.ts +24 -24
  3. package/dist/agent.d.ts.map +1 -1
  4. package/dist/agent.js +107 -31
  5. package/dist/agent.js.map +1 -1
  6. package/dist/app.d.ts +3 -1
  7. package/dist/app.d.ts.map +1 -1
  8. package/dist/app.js +359 -131
  9. package/dist/app.js.map +1 -1
  10. package/dist/cli.js +124 -49
  11. package/dist/cli.js.map +1 -1
  12. package/dist/commands/auto-approve-command.d.ts.map +1 -1
  13. package/dist/commands/auto-approve-command.js +12 -4
  14. package/dist/commands/auto-approve-command.js.map +1 -1
  15. package/dist/commands/copy-command.d.ts +3 -1
  16. package/dist/commands/copy-command.d.ts.map +1 -1
  17. package/dist/commands/copy-command.js +36 -9
  18. package/dist/commands/copy-command.js.map +1 -1
  19. package/dist/commands/mode-commands.js.map +1 -1
  20. package/dist/commands/retry-tool-command.d.ts +13 -0
  21. package/dist/commands/retry-tool-command.d.ts.map +1 -0
  22. package/dist/commands/retry-tool-command.js +20 -0
  23. package/dist/commands/retry-tool-command.js.map +1 -0
  24. package/dist/commands/rewind-command.d.ts +37 -0
  25. package/dist/commands/rewind-command.d.ts.map +1 -0
  26. package/dist/commands/rewind-command.js +97 -0
  27. package/dist/commands/rewind-command.js.map +1 -0
  28. package/dist/commands/sandbox-command.d.ts.map +1 -1
  29. package/dist/commands/sandbox-command.js +6 -1
  30. package/dist/commands/sandbox-command.js.map +1 -1
  31. package/dist/components/InputBox.d.ts +17 -32
  32. package/dist/components/InputBox.d.ts.map +1 -1
  33. package/dist/components/InputBox.js +182 -579
  34. package/dist/components/InputBox.js.map +1 -1
  35. package/dist/components/input/ApplicationInputSurface.d.ts +42 -0
  36. package/dist/components/input/ApplicationInputSurface.d.ts.map +1 -0
  37. package/dist/components/input/ApplicationInputSurface.js +82 -0
  38. package/dist/components/input/ApplicationInputSurface.js.map +1 -0
  39. package/dist/components/input/CopyMenuSession.d.ts +16 -0
  40. package/dist/components/input/CopyMenuSession.d.ts.map +1 -0
  41. package/dist/components/input/CopyMenuSession.js +49 -0
  42. package/dist/components/input/CopyMenuSession.js.map +1 -0
  43. package/dist/components/input/FirstRunSetupPrompt.d.ts +9 -0
  44. package/dist/components/input/FirstRunSetupPrompt.d.ts.map +1 -0
  45. package/dist/components/input/FirstRunSetupPrompt.js +20 -0
  46. package/dist/components/input/FirstRunSetupPrompt.js.map +1 -0
  47. package/dist/components/input/MenuStackHost.d.ts +12 -0
  48. package/dist/components/input/MenuStackHost.d.ts.map +1 -0
  49. package/dist/components/input/MenuStackHost.js +13 -0
  50. package/dist/components/input/MenuStackHost.js.map +1 -0
  51. package/dist/components/input/MenuSurface.d.ts +13 -0
  52. package/dist/components/input/MenuSurface.d.ts.map +1 -0
  53. package/dist/components/input/MenuSurface.js +87 -0
  54. package/dist/components/input/MenuSurface.js.map +1 -0
  55. package/dist/components/input/ModelMenuSession.d.ts +19 -0
  56. package/dist/components/input/ModelMenuSession.d.ts.map +1 -0
  57. package/dist/components/input/ModelMenuSession.js +154 -0
  58. package/dist/components/input/ModelMenuSession.js.map +1 -0
  59. package/dist/components/input/PathMenuSession.d.ts +16 -0
  60. package/dist/components/input/PathMenuSession.d.ts.map +1 -0
  61. package/dist/components/input/PathMenuSession.js +68 -0
  62. package/dist/components/input/PathMenuSession.js.map +1 -0
  63. package/dist/components/input/PendingQueueList.d.ts +20 -0
  64. package/dist/components/input/PendingQueueList.d.ts.map +1 -0
  65. package/dist/components/input/PendingQueueList.js +26 -0
  66. package/dist/components/input/PendingQueueList.js.map +1 -0
  67. package/dist/components/input/ProviderMenuSession.d.ts +16 -0
  68. package/dist/components/input/ProviderMenuSession.d.ts.map +1 -0
  69. package/dist/components/input/ProviderMenuSession.js +99 -0
  70. package/dist/components/input/ProviderMenuSession.js.map +1 -0
  71. package/dist/components/input/RewindMenuSession.d.ts +14 -0
  72. package/dist/components/input/RewindMenuSession.d.ts.map +1 -0
  73. package/dist/components/input/RewindMenuSession.js +77 -0
  74. package/dist/components/input/RewindMenuSession.js.map +1 -0
  75. package/dist/components/input/SettingsMenuSession.d.ts +17 -0
  76. package/dist/components/input/SettingsMenuSession.d.ts.map +1 -0
  77. package/dist/components/input/SettingsMenuSession.js +136 -0
  78. package/dist/components/input/SettingsMenuSession.js.map +1 -0
  79. package/dist/components/input/SettingsValueMenuSession.d.ts +19 -0
  80. package/dist/components/input/SettingsValueMenuSession.d.ts.map +1 -0
  81. package/dist/components/input/SettingsValueMenuSession.js +113 -0
  82. package/dist/components/input/SettingsValueMenuSession.js.map +1 -0
  83. package/dist/components/input/SkillsMenuSession.d.ts +19 -0
  84. package/dist/components/input/SkillsMenuSession.d.ts.map +1 -0
  85. package/dist/components/input/SkillsMenuSession.js +58 -0
  86. package/dist/components/input/SkillsMenuSession.js.map +1 -0
  87. package/dist/components/input/SlashMenuSession.d.ts +25 -0
  88. package/dist/components/input/SlashMenuSession.d.ts.map +1 -0
  89. package/dist/components/input/SlashMenuSession.js +69 -0
  90. package/dist/components/input/SlashMenuSession.js.map +1 -0
  91. package/dist/components/input/determine-active-menu.d.ts +2 -0
  92. package/dist/components/input/determine-active-menu.d.ts.map +1 -1
  93. package/dist/components/input/determine-active-menu.js +12 -4
  94. package/dist/components/input/determine-active-menu.js.map +1 -1
  95. package/dist/components/input/insertions.d.ts +0 -13
  96. package/dist/components/input/insertions.d.ts.map +1 -1
  97. package/dist/components/input/insertions.js +0 -26
  98. package/dist/components/input/insertions.js.map +1 -1
  99. package/dist/components/input/menu-controller.d.ts +52 -0
  100. package/dist/components/input/menu-controller.d.ts.map +1 -0
  101. package/dist/components/input/menu-controller.js +690 -0
  102. package/dist/components/input/menu-controller.js.map +1 -0
  103. package/dist/components/input/menu-editor.d.ts +9 -0
  104. package/dist/components/input/menu-editor.d.ts.map +1 -0
  105. package/dist/components/input/menu-editor.js +45 -0
  106. package/dist/components/input/menu-editor.js.map +1 -0
  107. package/dist/components/input/menu-registry.d.ts +20 -0
  108. package/dist/components/input/menu-registry.d.ts.map +1 -0
  109. package/dist/components/input/menu-registry.js +27 -0
  110. package/dist/components/input/menu-registry.js.map +1 -0
  111. package/dist/components/input/menu-types.d.ts +327 -0
  112. package/dist/components/input/menu-types.d.ts.map +1 -0
  113. package/dist/components/input/menu-types.js +2 -0
  114. package/dist/components/input/menu-types.js.map +1 -0
  115. package/dist/components/input/settings-intent-host.d.ts +22 -0
  116. package/dist/components/input/settings-intent-host.d.ts.map +1 -0
  117. package/dist/components/input/settings-intent-host.js +69 -0
  118. package/dist/components/input/settings-intent-host.js.map +1 -0
  119. package/dist/components/input/triggers.d.ts +3 -0
  120. package/dist/components/input/triggers.d.ts.map +1 -1
  121. package/dist/components/input/triggers.js +258 -0
  122. package/dist/components/input/triggers.js.map +1 -1
  123. package/dist/components/layout/BackgroundTaskManager.d.ts +16 -0
  124. package/dist/components/layout/BackgroundTaskManager.d.ts.map +1 -0
  125. package/dist/components/layout/BackgroundTaskManager.js +254 -0
  126. package/dist/components/layout/BackgroundTaskManager.js.map +1 -0
  127. package/dist/components/layout/BackgroundTasksPanel.d.ts +3 -2
  128. package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -1
  129. package/dist/components/layout/BackgroundTasksPanel.js +80 -34
  130. package/dist/components/layout/BackgroundTasksPanel.js.map +1 -1
  131. package/dist/components/layout/Banner.js.map +1 -1
  132. package/dist/components/layout/BottomArea.d.ts +39 -21
  133. package/dist/components/layout/BottomArea.d.ts.map +1 -1
  134. package/dist/components/layout/BottomArea.js +77 -48
  135. package/dist/components/layout/BottomArea.js.map +1 -1
  136. package/dist/components/layout/StatusBar.d.ts +3 -1
  137. package/dist/components/layout/StatusBar.d.ts.map +1 -1
  138. package/dist/components/layout/StatusBar.js +100 -66
  139. package/dist/components/layout/StatusBar.js.map +1 -1
  140. package/dist/components/menu/CopyMenu.d.ts +9 -0
  141. package/dist/components/menu/CopyMenu.d.ts.map +1 -0
  142. package/dist/components/menu/CopyMenu.js +7 -0
  143. package/dist/components/menu/CopyMenu.js.map +1 -0
  144. package/dist/components/menu/ModelSelectionMenu.d.ts +1 -0
  145. package/dist/components/menu/ModelSelectionMenu.d.ts.map +1 -1
  146. package/dist/components/menu/ModelSelectionMenu.js +23 -6
  147. package/dist/components/menu/ModelSelectionMenu.js.map +1 -1
  148. package/dist/components/menu/ProviderSelectionMenu.d.ts +1 -0
  149. package/dist/components/menu/ProviderSelectionMenu.d.ts.map +1 -1
  150. package/dist/components/menu/ProviderSelectionMenu.js +12 -4
  151. package/dist/components/menu/ProviderSelectionMenu.js.map +1 -1
  152. package/dist/components/menu/RewindMenu.d.ts +18 -0
  153. package/dist/components/menu/RewindMenu.d.ts.map +1 -0
  154. package/dist/components/menu/RewindMenu.js +59 -0
  155. package/dist/components/menu/RewindMenu.js.map +1 -0
  156. package/dist/components/message/ChatMessage.d.ts +2 -1
  157. package/dist/components/message/ChatMessage.d.ts.map +1 -1
  158. package/dist/components/message/ChatMessage.js +1 -1
  159. package/dist/components/message/ChatMessage.js.map +1 -1
  160. package/dist/components/message/CommandMessage.d.ts.map +1 -1
  161. package/dist/components/message/CommandMessage.js +142 -17
  162. package/dist/components/message/CommandMessage.js.map +1 -1
  163. package/dist/components/message/MemoryRenderer.d.ts.map +1 -1
  164. package/dist/components/message/MemoryRenderer.js +16 -10
  165. package/dist/components/message/MemoryRenderer.js.map +1 -1
  166. package/dist/components/message/MessageList.d.ts +20 -3
  167. package/dist/components/message/MessageList.d.ts.map +1 -1
  168. package/dist/components/message/MessageList.js +1 -1
  169. package/dist/components/message/MessageList.js.map +1 -1
  170. package/dist/components/message/SubagentActivityMessage.d.ts +5 -1
  171. package/dist/components/message/SubagentActivityMessage.d.ts.map +1 -1
  172. package/dist/components/message/SubagentActivityMessage.js +12 -4
  173. package/dist/components/message/SubagentActivityMessage.js.map +1 -1
  174. package/dist/components/message/command-message-helpers.d.ts +37 -0
  175. package/dist/components/message/command-message-helpers.d.ts.map +1 -1
  176. package/dist/components/message/command-message-helpers.js +49 -8
  177. package/dist/components/message/command-message-helpers.js.map +1 -1
  178. package/dist/components/prompt/ApprovalPrompt.d.ts +1 -0
  179. package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
  180. package/dist/components/prompt/ApprovalPrompt.js +135 -83
  181. package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
  182. package/dist/context/InputContext.d.ts +15 -8
  183. package/dist/context/InputContext.d.ts.map +1 -1
  184. package/dist/context/InputContext.js +94 -15
  185. package/dist/context/InputContext.js.map +1 -1
  186. package/dist/contracts/application-stream.d.ts +44 -0
  187. package/dist/contracts/application-stream.d.ts.map +1 -0
  188. package/dist/contracts/application-stream.js +2 -0
  189. package/dist/contracts/application-stream.js.map +1 -0
  190. package/dist/contracts/continuation-handle.d.ts +18 -0
  191. package/dist/contracts/continuation-handle.d.ts.map +1 -0
  192. package/dist/contracts/continuation-handle.js +22 -0
  193. package/dist/contracts/continuation-handle.js.map +1 -0
  194. package/dist/contracts/conversation-items.d.ts +47 -0
  195. package/dist/contracts/conversation-items.d.ts.map +1 -0
  196. package/dist/contracts/conversation-items.js +2 -0
  197. package/dist/contracts/conversation-items.js.map +1 -0
  198. package/dist/contracts/conversation.d.ts +44 -4
  199. package/dist/contracts/conversation.d.ts.map +1 -1
  200. package/dist/contracts/conversation.js +9 -0
  201. package/dist/contracts/conversation.js.map +1 -1
  202. package/dist/contracts/model-errors.d.ts +10 -0
  203. package/dist/contracts/model-errors.d.ts.map +1 -0
  204. package/dist/contracts/model-errors.js +15 -0
  205. package/dist/contracts/model-errors.js.map +1 -0
  206. package/dist/contracts/model-types.d.ts +16 -0
  207. package/dist/contracts/model-types.d.ts.map +1 -0
  208. package/dist/contracts/model-types.js +2 -0
  209. package/dist/contracts/model-types.js.map +1 -0
  210. package/dist/contracts/patch.d.ts +17 -0
  211. package/dist/contracts/patch.d.ts.map +1 -0
  212. package/dist/contracts/patch.js +2 -0
  213. package/dist/contracts/patch.js.map +1 -0
  214. package/dist/contracts/provider-input.d.ts +34 -0
  215. package/dist/contracts/provider-input.d.ts.map +1 -0
  216. package/dist/contracts/provider-input.js +2 -0
  217. package/dist/contracts/provider-input.js.map +1 -0
  218. package/dist/contracts/streamed-model-turn.d.ts +230 -0
  219. package/dist/contracts/streamed-model-turn.d.ts.map +1 -0
  220. package/dist/contracts/streamed-model-turn.js +2 -0
  221. package/dist/contracts/streamed-model-turn.js.map +1 -0
  222. package/dist/env-setup.js +1 -1
  223. package/dist/hooks/conversation-ui-reducer.d.ts +28 -4
  224. package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
  225. package/dist/hooks/conversation-ui-reducer.js +46 -4
  226. package/dist/hooks/conversation-ui-reducer.js.map +1 -1
  227. package/dist/hooks/handoff-flow-reducer.d.ts +1 -36
  228. package/dist/hooks/handoff-flow-reducer.d.ts.map +1 -1
  229. package/dist/hooks/handoff-flow-reducer.js +3 -57
  230. package/dist/hooks/handoff-flow-reducer.js.map +1 -1
  231. package/dist/hooks/settings-completion-config.d.ts +1 -0
  232. package/dist/hooks/settings-completion-config.d.ts.map +1 -1
  233. package/dist/hooks/settings-completion-config.js +32 -6
  234. package/dist/hooks/settings-completion-config.js.map +1 -1
  235. package/dist/hooks/use-app-commands.d.ts +15 -11
  236. package/dist/hooks/use-app-commands.d.ts.map +1 -1
  237. package/dist/hooks/use-app-commands.js +91 -63
  238. package/dist/hooks/use-app-commands.js.map +1 -1
  239. package/dist/hooks/use-app-keyboard-shortcuts.d.ts +24 -1
  240. package/dist/hooks/use-app-keyboard-shortcuts.d.ts.map +1 -1
  241. package/dist/hooks/use-app-keyboard-shortcuts.js +145 -6
  242. package/dist/hooks/use-app-keyboard-shortcuts.js.map +1 -1
  243. package/dist/hooks/use-conversation.d.ts +34 -13
  244. package/dist/hooks/use-conversation.d.ts.map +1 -1
  245. package/dist/hooks/use-conversation.js +96 -20
  246. package/dist/hooks/use-conversation.js.map +1 -1
  247. package/dist/hooks/use-debounced-value.d.ts +13 -0
  248. package/dist/hooks/use-debounced-value.d.ts.map +1 -0
  249. package/dist/hooks/use-debounced-value.js +27 -0
  250. package/dist/hooks/use-debounced-value.js.map +1 -0
  251. package/dist/hooks/use-escape-key.d.ts +4 -32
  252. package/dist/hooks/use-escape-key.d.ts.map +1 -1
  253. package/dist/hooks/use-escape-key.js +27 -68
  254. package/dist/hooks/use-escape-key.js.map +1 -1
  255. package/dist/hooks/use-first-run-setup.d.ts +24 -0
  256. package/dist/hooks/use-first-run-setup.d.ts.map +1 -0
  257. package/dist/hooks/use-first-run-setup.js +114 -0
  258. package/dist/hooks/use-first-run-setup.js.map +1 -0
  259. package/dist/hooks/use-handoff-flow.d.ts +6 -6
  260. package/dist/hooks/use-handoff-flow.d.ts.map +1 -1
  261. package/dist/hooks/use-handoff-flow.js +110 -118
  262. package/dist/hooks/use-handoff-flow.js.map +1 -1
  263. package/dist/hooks/use-model-selection.d.ts +1 -0
  264. package/dist/hooks/use-model-selection.d.ts.map +1 -1
  265. package/dist/hooks/use-model-selection.js +93 -59
  266. package/dist/hooks/use-model-selection.js.map +1 -1
  267. package/dist/hooks/use-path-completion.d.ts.map +1 -1
  268. package/dist/hooks/use-path-completion.js +20 -11
  269. package/dist/hooks/use-path-completion.js.map +1 -1
  270. package/dist/hooks/use-provider-selection.d.ts +5 -1
  271. package/dist/hooks/use-provider-selection.d.ts.map +1 -1
  272. package/dist/hooks/use-provider-selection.js +55 -27
  273. package/dist/hooks/use-provider-selection.js.map +1 -1
  274. package/dist/hooks/use-rewind-selection.d.ts +30 -0
  275. package/dist/hooks/use-rewind-selection.d.ts.map +1 -0
  276. package/dist/hooks/{use-undo-selection.js → use-rewind-selection.js} +37 -28
  277. package/dist/hooks/use-rewind-selection.js.map +1 -0
  278. package/dist/hooks/use-runtime-settings.d.ts.map +1 -1
  279. package/dist/hooks/use-runtime-settings.js +4 -3
  280. package/dist/hooks/use-runtime-settings.js.map +1 -1
  281. package/dist/hooks/use-selection.d.ts +1 -0
  282. package/dist/hooks/use-selection.d.ts.map +1 -1
  283. package/dist/hooks/use-selection.js +1 -1
  284. package/dist/hooks/use-selection.js.map +1 -1
  285. package/dist/hooks/use-setting.d.ts +3 -2
  286. package/dist/hooks/use-setting.d.ts.map +1 -1
  287. package/dist/hooks/use-setting.js +1 -1
  288. package/dist/hooks/use-setting.js.map +1 -1
  289. package/dist/hooks/use-settings-completion.d.ts +1 -0
  290. package/dist/hooks/use-settings-completion.d.ts.map +1 -1
  291. package/dist/hooks/use-settings-completion.js +22 -15
  292. package/dist/hooks/use-settings-completion.js.map +1 -1
  293. package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
  294. package/dist/hooks/use-settings-value-completion.js +40 -28
  295. package/dist/hooks/use-settings-value-completion.js.map +1 -1
  296. package/dist/hooks/use-shell-mode.d.ts +3 -13
  297. package/dist/hooks/use-shell-mode.d.ts.map +1 -1
  298. package/dist/hooks/use-shell-mode.js +14 -53
  299. package/dist/hooks/use-shell-mode.js.map +1 -1
  300. package/dist/hooks/use-skill-selection.d.ts.map +1 -1
  301. package/dist/hooks/use-skill-selection.js +17 -11
  302. package/dist/hooks/use-skill-selection.js.map +1 -1
  303. package/dist/hooks/use-slash-commands.d.ts +0 -1
  304. package/dist/hooks/use-slash-commands.d.ts.map +1 -1
  305. package/dist/hooks/use-slash-commands.js +11 -18
  306. package/dist/hooks/use-slash-commands.js.map +1 -1
  307. package/dist/hooks/use-terminal-focus-notifier.js.map +1 -1
  308. package/dist/lib/agent-chat-service.d.ts +12 -8
  309. package/dist/lib/agent-chat-service.d.ts.map +1 -1
  310. package/dist/lib/agent-chat-service.js +88 -49
  311. package/dist/lib/agent-chat-service.js.map +1 -1
  312. package/dist/lib/agent-client.d.ts +98 -17
  313. package/dist/lib/agent-client.d.ts.map +1 -1
  314. package/dist/lib/agent-client.js +427 -37
  315. package/dist/lib/agent-client.js.map +1 -1
  316. package/dist/lib/agent-configuration.d.ts +36 -15
  317. package/dist/lib/agent-configuration.d.ts.map +1 -1
  318. package/dist/lib/agent-configuration.js +107 -9
  319. package/dist/lib/agent-configuration.js.map +1 -1
  320. package/dist/lib/agent-factory.d.ts +25 -4
  321. package/dist/lib/agent-factory.d.ts.map +1 -1
  322. package/dist/lib/agent-factory.js +143 -106
  323. package/dist/lib/agent-factory.js.map +1 -1
  324. package/dist/lib/chained-input-filter.d.ts +7 -1
  325. package/dist/lib/chained-input-filter.d.ts.map +1 -1
  326. package/dist/lib/chained-input-filter.js +46 -62
  327. package/dist/lib/chained-input-filter.js.map +1 -1
  328. package/dist/lib/continuation-projection-mode.d.ts +3 -0
  329. package/dist/lib/continuation-projection-mode.d.ts.map +1 -0
  330. package/dist/lib/continuation-projection-mode.js +2 -0
  331. package/dist/lib/continuation-projection-mode.js.map +1 -0
  332. package/dist/lib/editor-impl.d.ts +1 -1
  333. package/dist/lib/editor-impl.d.ts.map +1 -1
  334. package/dist/lib/editor-impl.js +1 -1
  335. package/dist/lib/editor-impl.js.map +1 -1
  336. package/dist/lib/harness-invariant-error.d.ts +22 -0
  337. package/dist/lib/harness-invariant-error.d.ts.map +1 -0
  338. package/dist/lib/harness-invariant-error.js +30 -0
  339. package/dist/lib/harness-invariant-error.js.map +1 -0
  340. package/dist/lib/input-owner.d.ts +67 -0
  341. package/dist/lib/input-owner.d.ts.map +1 -0
  342. package/dist/lib/input-owner.js +39 -0
  343. package/dist/lib/input-owner.js.map +1 -0
  344. package/dist/lib/openai-strict-tool-schema.d.ts +7 -4
  345. package/dist/lib/openai-strict-tool-schema.d.ts.map +1 -1
  346. package/dist/lib/openai-strict-tool-schema.js +8 -0
  347. package/dist/lib/openai-strict-tool-schema.js.map +1 -1
  348. package/dist/lib/subagent-bridge.d.ts +38 -4
  349. package/dist/lib/subagent-bridge.d.ts.map +1 -1
  350. package/dist/lib/subagent-bridge.js +96 -21
  351. package/dist/lib/subagent-bridge.js.map +1 -1
  352. package/dist/lib/tool-invoke.d.ts +18 -10
  353. package/dist/lib/tool-invoke.d.ts.map +1 -1
  354. package/dist/lib/tool-invoke.js +92 -44
  355. package/dist/lib/tool-invoke.js.map +1 -1
  356. package/dist/non-interactive.d.ts +14 -4
  357. package/dist/non-interactive.d.ts.map +1 -1
  358. package/dist/non-interactive.js +91 -84
  359. package/dist/non-interactive.js.map +1 -1
  360. package/dist/prompts/async-subagent-delegation.d.ts +1 -4
  361. package/dist/prompts/async-subagent-delegation.d.ts.map +1 -1
  362. package/dist/prompts/async-subagent-delegation.js +9 -47
  363. package/dist/prompts/async-subagent-delegation.js.map +1 -1
  364. package/dist/prompts/async-subagent-delegation.ts +9 -58
  365. package/dist/prompts/background-shell.d.ts +3 -0
  366. package/dist/prompts/background-shell.d.ts.map +1 -0
  367. package/dist/prompts/background-shell.js +11 -0
  368. package/dist/prompts/background-shell.js.map +1 -0
  369. package/dist/prompts/background-shell.ts +10 -0
  370. package/dist/prompts/memory.md +1 -1
  371. package/dist/prompts/orchestrator-prompt.test.ts +22 -0
  372. package/dist/prompts/orchestrator.md +7 -5
  373. package/dist/prompts/plan-mode-info.md +1 -1
  374. package/dist/prompts/prompt-constructor.d.ts +2 -0
  375. package/dist/prompts/prompt-constructor.d.ts.map +1 -1
  376. package/dist/prompts/prompt-constructor.js +9 -7
  377. package/dist/prompts/prompt-constructor.js.map +1 -1
  378. package/dist/prompts/prompt-constructor.test.ts +25 -9
  379. package/dist/prompts/prompt-constructor.ts +13 -7
  380. package/dist/prompts/shell-auto-approval.d.ts +2 -2
  381. package/dist/prompts/shell-auto-approval.d.ts.map +1 -1
  382. package/dist/prompts/shell-auto-approval.js +20 -5
  383. package/dist/prompts/shell-auto-approval.js.map +1 -1
  384. package/dist/prompts/shell-auto-approval.ts +20 -5
  385. package/dist/prompts/steering-notice.d.ts +16 -0
  386. package/dist/prompts/steering-notice.d.ts.map +1 -0
  387. package/dist/prompts/steering-notice.js +24 -0
  388. package/dist/prompts/steering-notice.js.map +1 -0
  389. package/dist/prompts/steering-notice.ts +24 -0
  390. package/dist/prompts/subagent-delegation.d.ts +6 -5
  391. package/dist/prompts/subagent-delegation.d.ts.map +1 -1
  392. package/dist/prompts/subagent-delegation.js +36 -13
  393. package/dist/prompts/subagent-delegation.js.map +1 -1
  394. package/dist/prompts/subagent-delegation.test.ts +9 -2
  395. package/dist/prompts/subagent-delegation.ts +54 -14
  396. package/dist/prompts/subagents/explorer.md +24 -14
  397. package/dist/prompts/subagents/worker-prompt.test.ts +2 -2
  398. package/dist/prompts/subagents/worker.md +1 -1
  399. package/dist/prompts/worktree-hygiene.md +1 -0
  400. package/dist/providers/ai-sdk-anthropic.provider.d.ts +3 -3
  401. package/dist/providers/ai-sdk-anthropic.provider.d.ts.map +1 -1
  402. package/dist/providers/ai-sdk-anthropic.provider.js +8 -4
  403. package/dist/providers/ai-sdk-anthropic.provider.js.map +1 -1
  404. package/dist/providers/ai-sdk-google.provider.d.ts +5 -4
  405. package/dist/providers/ai-sdk-google.provider.d.ts.map +1 -1
  406. package/dist/providers/ai-sdk-google.provider.js +23 -3
  407. package/dist/providers/ai-sdk-google.provider.js.map +1 -1
  408. package/dist/providers/ai-sdk-message-normalizer.d.ts +3 -7
  409. package/dist/providers/ai-sdk-message-normalizer.d.ts.map +1 -1
  410. package/dist/providers/ai-sdk-message-normalizer.js +27 -11
  411. package/dist/providers/ai-sdk-message-normalizer.js.map +1 -1
  412. package/dist/providers/ai-sdk-openrouter.provider.d.ts +5 -4
  413. package/dist/providers/ai-sdk-openrouter.provider.d.ts.map +1 -1
  414. package/dist/providers/ai-sdk-openrouter.provider.js +25 -3
  415. package/dist/providers/ai-sdk-openrouter.provider.js.map +1 -1
  416. package/dist/providers/ai-sdk-provider-settings.d.ts +10 -0
  417. package/dist/providers/ai-sdk-provider-settings.d.ts.map +1 -0
  418. package/dist/providers/ai-sdk-provider-settings.js +37 -0
  419. package/dist/providers/ai-sdk-provider-settings.js.map +1 -0
  420. package/dist/providers/ai-sdk-streamed-model.d.ts +5 -0
  421. package/dist/providers/ai-sdk-streamed-model.d.ts.map +1 -0
  422. package/dist/providers/ai-sdk-streamed-model.js +338 -0
  423. package/dist/providers/ai-sdk-streamed-model.js.map +1 -0
  424. package/dist/providers/codex-auth.d.ts +6 -0
  425. package/dist/providers/codex-auth.d.ts.map +1 -0
  426. package/dist/providers/codex-auth.js +35 -0
  427. package/dist/providers/codex-auth.js.map +1 -0
  428. package/dist/providers/codex-responses-model.d.ts +39 -12
  429. package/dist/providers/codex-responses-model.d.ts.map +1 -1
  430. package/dist/providers/codex-responses-model.js +669 -159
  431. package/dist/providers/codex-responses-model.js.map +1 -1
  432. package/dist/providers/codex-turn-converter.d.ts +12 -0
  433. package/dist/providers/codex-turn-converter.d.ts.map +1 -0
  434. package/dist/providers/codex-turn-converter.js +168 -0
  435. package/dist/providers/codex-turn-converter.js.map +1 -0
  436. package/dist/providers/codex.provider.d.ts +23 -1
  437. package/dist/providers/codex.provider.d.ts.map +1 -1
  438. package/dist/providers/codex.provider.js +60 -55
  439. package/dist/providers/codex.provider.js.map +1 -1
  440. package/dist/providers/common/openai-compatible-message-contract.d.ts +8 -0
  441. package/dist/providers/common/openai-compatible-message-contract.d.ts.map +1 -0
  442. package/dist/providers/common/openai-compatible-message-contract.js +23 -0
  443. package/dist/providers/common/openai-compatible-message-contract.js.map +1 -0
  444. package/dist/providers/common/openai-compatible-messages.d.ts +0 -4
  445. package/dist/providers/common/openai-compatible-messages.d.ts.map +1 -1
  446. package/dist/providers/common/openai-compatible-messages.js +0 -288
  447. package/dist/providers/common/openai-compatible-messages.js.map +1 -1
  448. package/dist/providers/fetch/composer.d.ts.map +1 -1
  449. package/dist/providers/fetch/composer.js +1 -0
  450. package/dist/providers/fetch/composer.js.map +1 -1
  451. package/dist/providers/model-catalog/catalog.d.ts +64 -0
  452. package/dist/providers/model-catalog/catalog.d.ts.map +1 -0
  453. package/dist/providers/model-catalog/catalog.generated.d.ts +3010 -0
  454. package/dist/providers/model-catalog/catalog.generated.d.ts.map +1 -0
  455. package/dist/providers/model-catalog/catalog.generated.js +3004 -0
  456. package/dist/providers/model-catalog/catalog.generated.js.map +1 -0
  457. package/dist/providers/model-catalog/catalog.js +126 -0
  458. package/dist/providers/model-catalog/catalog.js.map +1 -0
  459. package/dist/providers/model-catalog/generate-catalog.d.ts +42 -0
  460. package/dist/providers/model-catalog/generate-catalog.d.ts.map +1 -0
  461. package/dist/providers/model-catalog/generate-catalog.js +96 -0
  462. package/dist/providers/model-catalog/generate-catalog.js.map +1 -0
  463. package/dist/providers/openai-chained-input-compatibility.d.ts +36 -0
  464. package/dist/providers/openai-chained-input-compatibility.d.ts.map +1 -0
  465. package/dist/providers/openai-chained-input-compatibility.js +60 -0
  466. package/dist/providers/openai-chained-input-compatibility.js.map +1 -0
  467. package/dist/providers/openai-chat-completions-model.d.ts +13 -0
  468. package/dist/providers/openai-chat-completions-model.d.ts.map +1 -0
  469. package/dist/providers/openai-chat-completions-model.js +441 -0
  470. package/dist/providers/openai-chat-completions-model.js.map +1 -0
  471. package/dist/providers/openai-compatible-lazy.d.ts +1 -1
  472. package/dist/providers/openai-compatible-lazy.d.ts.map +1 -1
  473. package/dist/providers/openai-compatible-lazy.js +25 -36
  474. package/dist/providers/openai-compatible-lazy.js.map +1 -1
  475. package/dist/providers/openai-compatible-middleware.d.ts +4 -1
  476. package/dist/providers/openai-compatible-middleware.d.ts.map +1 -1
  477. package/dist/providers/openai-compatible-middleware.js +16 -27
  478. package/dist/providers/openai-compatible-middleware.js.map +1 -1
  479. package/dist/providers/openai-compatible-response-normalizer.d.ts +12 -2
  480. package/dist/providers/openai-compatible-response-normalizer.d.ts.map +1 -1
  481. package/dist/providers/openai-compatible-response-normalizer.js +18 -18
  482. package/dist/providers/openai-compatible-response-normalizer.js.map +1 -1
  483. package/dist/providers/openai-compatible.provider.d.ts +8 -10
  484. package/dist/providers/openai-compatible.provider.d.ts.map +1 -1
  485. package/dist/providers/openai-compatible.provider.js +89 -78
  486. package/dist/providers/openai-compatible.provider.js.map +1 -1
  487. package/dist/providers/openai-request-prefix-binding.d.ts +28 -0
  488. package/dist/providers/openai-request-prefix-binding.d.ts.map +1 -0
  489. package/dist/providers/openai-request-prefix-binding.js +78 -0
  490. package/dist/providers/openai-request-prefix-binding.js.map +1 -0
  491. package/dist/providers/openai-responses-model.d.ts +43 -0
  492. package/dist/providers/openai-responses-model.d.ts.map +1 -0
  493. package/dist/providers/openai-responses-model.js +564 -0
  494. package/dist/providers/openai-responses-model.js.map +1 -0
  495. package/dist/providers/openai.provider.d.ts +11 -8
  496. package/dist/providers/openai.provider.d.ts.map +1 -1
  497. package/dist/providers/openai.provider.js +43 -91
  498. package/dist/providers/openai.provider.js.map +1 -1
  499. package/dist/providers/opencode-routing.d.ts +1 -1
  500. package/dist/providers/opencode-routing.d.ts.map +1 -1
  501. package/dist/providers/opencode-routing.js +4 -2
  502. package/dist/providers/opencode-routing.js.map +1 -1
  503. package/dist/providers/opencode-session.d.ts.map +1 -1
  504. package/dist/providers/opencode-session.js +28 -3
  505. package/dist/providers/opencode-session.js.map +1 -1
  506. package/dist/providers/openrouter.provider.d.ts.map +1 -1
  507. package/dist/providers/openrouter.provider.js +33 -33
  508. package/dist/providers/openrouter.provider.js.map +1 -1
  509. package/dist/providers/provider-request-capture.d.ts +35 -0
  510. package/dist/providers/provider-request-capture.d.ts.map +1 -0
  511. package/dist/providers/provider-request-capture.js +22 -0
  512. package/dist/providers/provider-request-capture.js.map +1 -0
  513. package/dist/providers/provider-service.d.ts +10 -7
  514. package/dist/providers/provider-service.d.ts.map +1 -1
  515. package/dist/providers/provider-service.js +33 -28
  516. package/dist/providers/provider-service.js.map +1 -1
  517. package/dist/providers/registry.d.ts +14 -9
  518. package/dist/providers/registry.d.ts.map +1 -1
  519. package/dist/providers/registry.js.map +1 -1
  520. package/dist/providers/retrying-model.d.ts +8 -6
  521. package/dist/providers/retrying-model.d.ts.map +1 -1
  522. package/dist/providers/retrying-model.js +7 -20
  523. package/dist/providers/retrying-model.js.map +1 -1
  524. package/dist/providers/web-search/exa.provider.js.map +1 -1
  525. package/dist/providers/web-search/registry.js.map +1 -1
  526. package/dist/providers/web-search/tavily.provider.js.map +1 -1
  527. package/dist/providers/websocket-receive-watchdog.d.ts.map +1 -1
  528. package/dist/providers/websocket-receive-watchdog.js +9 -1
  529. package/dist/providers/websocket-receive-watchdog.js.map +1 -1
  530. package/dist/scripts/eval-auto-approval/runner.js +2 -0
  531. package/dist/scripts/eval-auto-approval/runner.js.map +1 -1
  532. package/dist/services/agent-runtime/application-run-loop.d.ts +205 -0
  533. package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -0
  534. package/dist/services/agent-runtime/application-run-loop.js +1258 -0
  535. package/dist/services/agent-runtime/application-run-loop.js.map +1 -0
  536. package/dist/services/agent-runtime/compose-agent-runtime.d.ts +3 -0
  537. package/dist/services/agent-runtime/compose-agent-runtime.d.ts.map +1 -1
  538. package/dist/services/agent-runtime/compose-agent-runtime.js +4 -0
  539. package/dist/services/agent-runtime/compose-agent-runtime.js.map +1 -1
  540. package/dist/services/agent-runtime/generation-guard.d.ts +69 -0
  541. package/dist/services/agent-runtime/generation-guard.d.ts.map +1 -0
  542. package/dist/services/agent-runtime/generation-guard.js +270 -0
  543. package/dist/services/agent-runtime/generation-guard.js.map +1 -0
  544. package/dist/services/agent-runtime/model-resolver.d.ts.map +1 -1
  545. package/dist/services/agent-runtime/model-resolver.js +7 -6
  546. package/dist/services/agent-runtime/model-resolver.js.map +1 -1
  547. package/dist/services/agent-runtime/scope-resolver.d.ts.map +1 -1
  548. package/dist/services/agent-runtime/scope-resolver.js +2 -1
  549. package/dist/services/agent-runtime/scope-resolver.js.map +1 -1
  550. package/dist/services/agent-runtime/structured-output.d.ts.map +1 -1
  551. package/dist/services/agent-runtime/structured-output.js +1 -21
  552. package/dist/services/agent-runtime/structured-output.js.map +1 -1
  553. package/dist/services/agent-runtime/tool-invocation-context.d.ts +73 -0
  554. package/dist/services/agent-runtime/tool-invocation-context.d.ts.map +1 -0
  555. package/dist/services/agent-runtime/tool-invocation-context.js +66 -0
  556. package/dist/services/agent-runtime/tool-invocation-context.js.map +1 -0
  557. package/dist/services/agent-stream.d.ts +41 -2
  558. package/dist/services/agent-stream.d.ts.map +1 -1
  559. package/dist/services/agent-stream.js +47 -1
  560. package/dist/services/agent-stream.js.map +1 -1
  561. package/dist/services/approval/approval-decision-executor.d.ts +42 -0
  562. package/dist/services/approval/approval-decision-executor.d.ts.map +1 -0
  563. package/dist/services/approval/approval-decision-executor.js +210 -0
  564. package/dist/services/approval/approval-decision-executor.js.map +1 -0
  565. package/dist/services/approval/approval-decision-policy.d.ts.map +1 -1
  566. package/dist/services/approval/approval-decision-policy.js +0 -2
  567. package/dist/services/approval/approval-decision-policy.js.map +1 -1
  568. package/dist/services/approval/approval-flow-coordinator.d.ts +25 -8
  569. package/dist/services/approval/approval-flow-coordinator.d.ts.map +1 -1
  570. package/dist/services/approval/approval-flow-coordinator.js +34 -167
  571. package/dist/services/approval/approval-flow-coordinator.js.map +1 -1
  572. package/dist/services/approval/approval-replay.d.ts +52 -0
  573. package/dist/services/approval/approval-replay.d.ts.map +1 -0
  574. package/dist/services/approval/approval-replay.js +68 -0
  575. package/dist/services/approval/approval-replay.js.map +1 -0
  576. package/dist/services/approval/approval-state.d.ts +3 -6
  577. package/dist/services/approval/approval-state.d.ts.map +1 -1
  578. package/dist/services/approval/approval-state.js +0 -10
  579. package/dist/services/approval/approval-state.js.map +1 -1
  580. package/dist/services/approval/background-subagent-approval-controller.d.ts +25 -0
  581. package/dist/services/approval/background-subagent-approval-controller.d.ts.map +1 -0
  582. package/dist/services/approval/background-subagent-approval-controller.js +65 -0
  583. package/dist/services/approval/background-subagent-approval-controller.js.map +1 -0
  584. package/dist/services/approval/background-subagent-approval-queue.d.ts +137 -0
  585. package/dist/services/approval/background-subagent-approval-queue.d.ts.map +1 -0
  586. package/dist/services/approval/background-subagent-approval-queue.js +200 -0
  587. package/dist/services/approval/background-subagent-approval-queue.js.map +1 -0
  588. package/dist/services/approval/non-interactive-approval-policy.d.ts +33 -0
  589. package/dist/services/approval/non-interactive-approval-policy.d.ts.map +1 -0
  590. package/dist/services/approval/non-interactive-approval-policy.js +85 -0
  591. package/dist/services/approval/non-interactive-approval-policy.js.map +1 -0
  592. package/dist/services/approval/session-read-access.d.ts +10 -0
  593. package/dist/services/approval/session-read-access.d.ts.map +1 -1
  594. package/dist/services/approval/session-read-access.js +14 -1
  595. package/dist/services/approval/session-read-access.js.map +1 -1
  596. package/dist/services/approval/session-read-grant-target.d.ts +7 -0
  597. package/dist/services/approval/session-read-grant-target.d.ts.map +1 -0
  598. package/dist/services/approval/session-read-grant-target.js +36 -0
  599. package/dist/services/approval/session-read-grant-target.js.map +1 -0
  600. package/dist/services/approval/shell-auto-approval-evaluator.d.ts +11 -3
  601. package/dist/services/approval/shell-auto-approval-evaluator.d.ts.map +1 -1
  602. package/dist/services/approval/shell-auto-approval-evaluator.js +140 -46
  603. package/dist/services/approval/shell-auto-approval-evaluator.js.map +1 -1
  604. package/dist/services/approval/shell-auto-approval-resolver.d.ts +14 -1
  605. package/dist/services/approval/shell-auto-approval-resolver.d.ts.map +1 -1
  606. package/dist/services/approval/shell-auto-approval-resolver.js +83 -7
  607. package/dist/services/approval/shell-auto-approval-resolver.js.map +1 -1
  608. package/dist/services/approval/shell-sandbox-approval.d.ts +22 -1
  609. package/dist/services/approval/shell-sandbox-approval.d.ts.map +1 -1
  610. package/dist/services/approval/shell-sandbox-approval.js +31 -4
  611. package/dist/services/approval/shell-sandbox-approval.js.map +1 -1
  612. package/dist/services/approval/tool-approval-batch-coordinator.d.ts +9 -0
  613. package/dist/services/approval/tool-approval-batch-coordinator.d.ts.map +1 -1
  614. package/dist/services/approval/tool-approval-batch-coordinator.js +22 -5
  615. package/dist/services/approval/tool-approval-batch-coordinator.js.map +1 -1
  616. package/dist/services/approval/tool-owner.d.ts +5 -2
  617. package/dist/services/approval/tool-owner.d.ts.map +1 -1
  618. package/dist/services/approval/tool-owner.js +0 -56
  619. package/dist/services/approval/tool-owner.js.map +1 -1
  620. package/dist/services/approval/tool-ownership-registry.d.ts +25 -0
  621. package/dist/services/approval/tool-ownership-registry.d.ts.map +1 -0
  622. package/dist/services/approval/tool-ownership-registry.js +63 -0
  623. package/dist/services/approval/tool-ownership-registry.js.map +1 -0
  624. package/dist/services/command-message-streaming.d.ts +8 -4
  625. package/dist/services/command-message-streaming.d.ts.map +1 -1
  626. package/dist/services/command-message-streaming.js +13 -52
  627. package/dist/services/command-message-streaming.js.map +1 -1
  628. package/dist/services/conversation/conversation-adapter-factory.d.ts.map +1 -1
  629. package/dist/services/conversation/conversation-adapter-factory.js +1 -0
  630. package/dist/services/conversation/conversation-adapter-factory.js.map +1 -1
  631. package/dist/services/conversation/conversation-adapter.d.ts +112 -13
  632. package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
  633. package/dist/services/conversation/conversation-adapter.js +270 -47
  634. package/dist/services/conversation/conversation-adapter.js.map +1 -1
  635. package/dist/services/conversation/conversation-admission-workflow.d.ts +69 -0
  636. package/dist/services/conversation/conversation-admission-workflow.d.ts.map +1 -0
  637. package/dist/services/conversation/conversation-admission-workflow.js +112 -0
  638. package/dist/services/conversation/conversation-admission-workflow.js.map +1 -0
  639. package/dist/services/conversation/conversation-decoder.d.ts +14 -0
  640. package/dist/services/conversation/conversation-decoder.d.ts.map +1 -0
  641. package/dist/services/conversation/conversation-decoder.js +155 -0
  642. package/dist/services/conversation/conversation-decoder.js.map +1 -0
  643. package/dist/services/conversation/conversation-events.d.ts +80 -26
  644. package/dist/services/conversation/conversation-events.d.ts.map +1 -1
  645. package/dist/services/conversation/conversation-history-repair.d.ts.map +1 -1
  646. package/dist/services/conversation/conversation-history-repair.js +34 -37
  647. package/dist/services/conversation/conversation-history-repair.js.map +1 -1
  648. package/dist/services/conversation/conversation-message-projection.d.ts +27 -0
  649. package/dist/services/conversation/conversation-message-projection.d.ts.map +1 -0
  650. package/dist/services/conversation/conversation-message-projection.js +59 -0
  651. package/dist/services/conversation/conversation-message-projection.js.map +1 -0
  652. package/dist/services/conversation/conversation-orchestrator.d.ts +25 -14
  653. package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
  654. package/dist/services/conversation/conversation-orchestrator.js +471 -160
  655. package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
  656. package/dist/services/conversation/conversation-orchestrator.types.d.ts +16 -11
  657. package/dist/services/conversation/conversation-orchestrator.types.d.ts.map +1 -1
  658. package/dist/services/conversation/conversation-persistence-types.d.ts +15 -38
  659. package/dist/services/conversation/conversation-persistence-types.d.ts.map +1 -1
  660. package/dist/services/conversation/conversation-persistence.d.ts +3 -10
  661. package/dist/services/conversation/conversation-persistence.d.ts.map +1 -1
  662. package/dist/services/conversation/conversation-persistence.js +66 -15
  663. package/dist/services/conversation/conversation-persistence.js.map +1 -1
  664. package/dist/services/conversation/conversation-replay.d.ts +7 -5
  665. package/dist/services/conversation/conversation-replay.d.ts.map +1 -1
  666. package/dist/services/conversation/conversation-replay.js +172 -66
  667. package/dist/services/conversation/conversation-replay.js.map +1 -1
  668. package/dist/services/conversation/conversation-result-builder.d.ts +16 -2
  669. package/dist/services/conversation/conversation-result-builder.d.ts.map +1 -1
  670. package/dist/services/conversation/conversation-result-builder.js +63 -15
  671. package/dist/services/conversation/conversation-result-builder.js.map +1 -1
  672. package/dist/services/conversation/conversation-runtime-factory.d.ts +18 -0
  673. package/dist/services/conversation/conversation-runtime-factory.d.ts.map +1 -1
  674. package/dist/services/conversation/conversation-runtime-factory.js.map +1 -1
  675. package/dist/services/conversation/conversation-service.d.ts +65 -12
  676. package/dist/services/conversation/conversation-service.d.ts.map +1 -1
  677. package/dist/services/conversation/conversation-service.js +129 -16
  678. package/dist/services/conversation/conversation-service.js.map +1 -1
  679. package/dist/services/conversation/conversation-state-projector.d.ts +3 -3
  680. package/dist/services/conversation/conversation-state-projector.d.ts.map +1 -1
  681. package/dist/services/conversation/conversation-state-projector.js +18 -0
  682. package/dist/services/conversation/conversation-state-projector.js.map +1 -1
  683. package/dist/services/conversation/conversation-store.d.ts +78 -12
  684. package/dist/services/conversation/conversation-store.d.ts.map +1 -1
  685. package/dist/services/conversation/conversation-store.js +228 -119
  686. package/dist/services/conversation/conversation-store.js.map +1 -1
  687. package/dist/services/conversation/conversation-turn-items.d.ts +8 -2
  688. package/dist/services/conversation/conversation-turn-items.d.ts.map +1 -1
  689. package/dist/services/conversation/conversation-turn-items.js +96 -275
  690. package/dist/services/conversation/conversation-turn-items.js.map +1 -1
  691. package/dist/services/conversation/journal-to-ledger.d.ts.map +1 -1
  692. package/dist/services/conversation/journal-to-ledger.js +4 -24
  693. package/dist/services/conversation/journal-to-ledger.js.map +1 -1
  694. package/dist/services/conversation/run-item-normalizer.d.ts +5 -0
  695. package/dist/services/conversation/run-item-normalizer.d.ts.map +1 -0
  696. package/dist/services/conversation/run-item-normalizer.js +245 -0
  697. package/dist/services/conversation/run-item-normalizer.js.map +1 -0
  698. package/dist/services/conversation/user-turn-item.d.ts +14 -0
  699. package/dist/services/conversation/user-turn-item.d.ts.map +1 -0
  700. package/dist/services/conversation/user-turn-item.js +27 -0
  701. package/dist/services/conversation/user-turn-item.js.map +1 -0
  702. package/dist/services/conversation-agent-client.d.ts +77 -6
  703. package/dist/services/conversation-agent-client.d.ts.map +1 -1
  704. package/dist/services/cost/model-cost.d.ts +158 -0
  705. package/dist/services/cost/model-cost.d.ts.map +1 -0
  706. package/dist/services/cost/model-cost.js +218 -0
  707. package/dist/services/cost/model-cost.js.map +1 -0
  708. package/dist/services/cost/pricing-overlay.d.ts +26 -0
  709. package/dist/services/cost/pricing-overlay.d.ts.map +1 -0
  710. package/dist/services/cost/pricing-overlay.js +39 -0
  711. package/dist/services/cost/pricing-overlay.js.map +1 -0
  712. package/dist/services/cost/pricing.d.ts +13 -0
  713. package/dist/services/cost/pricing.d.ts.map +1 -0
  714. package/dist/services/cost/pricing.js +82 -0
  715. package/dist/services/cost/pricing.js.map +1 -0
  716. package/dist/services/execution-context.d.ts +31 -0
  717. package/dist/services/execution-context.d.ts.map +1 -1
  718. package/dist/services/execution-context.js +59 -0
  719. package/dist/services/execution-context.js.map +1 -1
  720. package/dist/services/file-service.d.ts.map +1 -1
  721. package/dist/services/file-service.js +12 -3
  722. package/dist/services/file-service.js.map +1 -1
  723. package/dist/services/handoff/handoff-flow-reducer.d.ts +27 -0
  724. package/dist/services/handoff/handoff-flow-reducer.d.ts.map +1 -0
  725. package/dist/services/handoff/handoff-flow-reducer.js +26 -0
  726. package/dist/services/handoff/handoff-flow-reducer.js.map +1 -0
  727. package/dist/services/handoff/handoff-session.d.ts +35 -0
  728. package/dist/services/handoff/handoff-session.d.ts.map +1 -0
  729. package/dist/services/handoff/handoff-session.js +136 -0
  730. package/dist/services/handoff/handoff-session.js.map +1 -0
  731. package/dist/services/hooks/hook-contracts.d.ts +124 -0
  732. package/dist/services/hooks/hook-contracts.d.ts.map +1 -0
  733. package/dist/services/hooks/hook-contracts.js +92 -0
  734. package/dist/services/hooks/hook-contracts.js.map +1 -0
  735. package/dist/services/hooks/hook-discovery.d.ts +45 -0
  736. package/dist/services/hooks/hook-discovery.d.ts.map +1 -0
  737. package/dist/services/hooks/hook-discovery.js +255 -0
  738. package/dist/services/hooks/hook-discovery.js.map +1 -0
  739. package/dist/services/hooks/hook-editor-shim.d.ts +6 -0
  740. package/dist/services/hooks/hook-editor-shim.d.ts.map +1 -0
  741. package/dist/services/hooks/hook-editor-shim.js +190 -0
  742. package/dist/services/hooks/hook-editor-shim.js.map +1 -0
  743. package/dist/services/hooks/hook-event-factory.d.ts +19 -0
  744. package/dist/services/hooks/hook-event-factory.d.ts.map +1 -0
  745. package/dist/services/hooks/hook-event-factory.js +45 -0
  746. package/dist/services/hooks/hook-event-factory.js.map +1 -0
  747. package/dist/services/hooks/hook-module-loader.d.ts +38 -0
  748. package/dist/services/hooks/hook-module-loader.d.ts.map +1 -0
  749. package/dist/services/hooks/hook-module-loader.js +69 -0
  750. package/dist/services/hooks/hook-module-loader.js.map +1 -0
  751. package/dist/services/hooks/hook-registry.d.ts +47 -0
  752. package/dist/services/hooks/hook-registry.d.ts.map +1 -0
  753. package/dist/services/hooks/hook-registry.js +185 -0
  754. package/dist/services/hooks/hook-registry.js.map +1 -0
  755. package/dist/services/hooks/hook-service.d.ts +44 -0
  756. package/dist/services/hooks/hook-service.d.ts.map +1 -0
  757. package/dist/services/hooks/hook-service.js +138 -0
  758. package/dist/services/hooks/hook-service.js.map +1 -0
  759. package/dist/services/hooks/hook-tool-lifecycle.d.ts +6 -0
  760. package/dist/services/hooks/hook-tool-lifecycle.d.ts.map +1 -0
  761. package/dist/services/hooks/hook-tool-lifecycle.js +33 -0
  762. package/dist/services/hooks/hook-tool-lifecycle.js.map +1 -0
  763. package/dist/services/hooks/index.d.ts +2 -0
  764. package/dist/services/hooks/index.d.ts.map +1 -0
  765. package/dist/services/hooks/index.js +2 -0
  766. package/dist/services/hooks/index.js.map +1 -0
  767. package/dist/services/input-surge-guard.d.ts.map +1 -1
  768. package/dist/services/input-surge-guard.js +13 -34
  769. package/dist/services/input-surge-guard.js.map +1 -1
  770. package/dist/services/large-uncached-input-guard.d.ts +26 -1
  771. package/dist/services/large-uncached-input-guard.d.ts.map +1 -1
  772. package/dist/services/large-uncached-input-guard.js +73 -38
  773. package/dist/services/large-uncached-input-guard.js.map +1 -1
  774. package/dist/services/logging/assistant-turn-journal.d.ts +1 -1
  775. package/dist/services/logging/assistant-turn-journal.d.ts.map +1 -1
  776. package/dist/services/logging/assistant-turn-journal.js +21 -36
  777. package/dist/services/logging/assistant-turn-journal.js.map +1 -1
  778. package/dist/services/logging/conversation-log-events.d.ts +75 -7
  779. package/dist/services/logging/conversation-log-events.d.ts.map +1 -1
  780. package/dist/services/logging/conversation-log-events.js +9 -0
  781. package/dist/services/logging/conversation-log-events.js.map +1 -1
  782. package/dist/services/logging/conversation-log-writer.d.ts +9 -4
  783. package/dist/services/logging/conversation-log-writer.d.ts.map +1 -1
  784. package/dist/services/logging/conversation-log-writer.js +183 -56
  785. package/dist/services/logging/conversation-log-writer.js.map +1 -1
  786. package/dist/services/logging/conversation-logger.d.ts.map +1 -1
  787. package/dist/services/logging/conversation-logger.js +35 -1
  788. package/dist/services/logging/conversation-logger.js.map +1 -1
  789. package/dist/services/logging/logging-contract.d.ts.map +1 -1
  790. package/dist/services/logging/logging-contract.js +4 -0
  791. package/dist/services/logging/logging-contract.js.map +1 -1
  792. package/dist/services/logging/logging-service.d.ts.map +1 -1
  793. package/dist/services/logging/logging-service.js +6 -2
  794. package/dist/services/logging/logging-service.js.map +1 -1
  795. package/dist/services/logging/provider-traffic.d.ts +2 -1
  796. package/dist/services/logging/provider-traffic.d.ts.map +1 -1
  797. package/dist/services/logging/provider-traffic.js +81 -5
  798. package/dist/services/logging/provider-traffic.js.map +1 -1
  799. package/dist/services/memory/memory-capabilities.d.ts.map +1 -1
  800. package/dist/services/memory/memory-capabilities.js +13 -8
  801. package/dist/services/memory/memory-capabilities.js.map +1 -1
  802. package/dist/services/model-service.d.ts +10 -0
  803. package/dist/services/model-service.d.ts.map +1 -1
  804. package/dist/services/model-service.js +24 -1
  805. package/dist/services/model-service.js.map +1 -1
  806. package/dist/services/models/model-catalog-session.d.ts +26 -0
  807. package/dist/services/models/model-catalog-session.d.ts.map +1 -0
  808. package/dist/services/models/model-catalog-session.js +77 -0
  809. package/dist/services/models/model-catalog-session.js.map +1 -0
  810. package/dist/services/openai-candidate-observer.d.ts +18 -0
  811. package/dist/services/openai-candidate-observer.d.ts.map +1 -0
  812. package/dist/services/openai-candidate-observer.js +56 -0
  813. package/dist/services/openai-candidate-observer.js.map +1 -0
  814. package/dist/services/openai-root-checkpoint-lifecycle-observer.d.ts +20 -0
  815. package/dist/services/openai-root-checkpoint-lifecycle-observer.d.ts.map +1 -0
  816. package/dist/services/openai-root-checkpoint-lifecycle-observer.js +21 -0
  817. package/dist/services/openai-root-checkpoint-lifecycle-observer.js.map +1 -0
  818. package/dist/services/openai-root-provider-identity.d.ts +11 -0
  819. package/dist/services/openai-root-provider-identity.d.ts.map +1 -0
  820. package/dist/services/openai-root-provider-identity.js +16 -0
  821. package/dist/services/openai-root-provider-identity.js.map +1 -0
  822. package/dist/services/openai-root-selector-parity-observer.d.ts +53 -0
  823. package/dist/services/openai-root-selector-parity-observer.d.ts.map +1 -0
  824. package/dist/services/openai-root-selector-parity-observer.js +62 -0
  825. package/dist/services/openai-root-selector-parity-observer.js.map +1 -0
  826. package/dist/services/plan-mode-interceptor.js +2 -2
  827. package/dist/services/plan-mode-interceptor.js.map +1 -1
  828. package/dist/services/provider-continuity.d.ts +94 -0
  829. package/dist/services/provider-continuity.d.ts.map +1 -1
  830. package/dist/services/provider-continuity.js +203 -0
  831. package/dist/services/provider-continuity.js.map +1 -1
  832. package/dist/services/providers/provider-management-session.d.ts +12 -0
  833. package/dist/services/providers/provider-management-session.d.ts.map +1 -0
  834. package/dist/services/providers/provider-management-session.js +21 -0
  835. package/dist/services/providers/provider-management-session.js.map +1 -0
  836. package/dist/services/queue/queue-controller.d.ts +9 -14
  837. package/dist/services/queue/queue-controller.d.ts.map +1 -1
  838. package/dist/services/queue/queue-controller.js +75 -60
  839. package/dist/services/queue/queue-controller.js.map +1 -1
  840. package/dist/services/retry/conversation-retry-policy.js +3 -3
  841. package/dist/services/retry/conversation-retry-policy.js.map +1 -1
  842. package/dist/services/retry/recovery-executor.d.ts.map +1 -1
  843. package/dist/services/retry/recovery-executor.js +15 -8
  844. package/dist/services/retry/recovery-executor.js.map +1 -1
  845. package/dist/services/retry/recovery-policy.d.ts.map +1 -1
  846. package/dist/services/retry/recovery-policy.js +4 -1
  847. package/dist/services/retry/recovery-policy.js.map +1 -1
  848. package/dist/services/retry/retry-classifier.d.ts.map +1 -1
  849. package/dist/services/retry/retry-classifier.js +3 -1
  850. package/dist/services/retry/retry-classifier.js.map +1 -1
  851. package/dist/services/retry/retry-contracts.d.ts +3 -5
  852. package/dist/services/retry/retry-contracts.d.ts.map +1 -1
  853. package/dist/services/retry/retry-error-classification.d.ts +20 -0
  854. package/dist/services/retry/retry-error-classification.d.ts.map +1 -1
  855. package/dist/services/retry/retry-error-classification.js +82 -0
  856. package/dist/services/retry/retry-error-classification.js.map +1 -1
  857. package/dist/services/retry/retry-event-presenter.d.ts.map +1 -1
  858. package/dist/services/retry/retry-event-presenter.js +4 -1
  859. package/dist/services/retry/retry-event-presenter.js.map +1 -1
  860. package/dist/services/retry/upstream-retry-policy.js +3 -3
  861. package/dist/services/rtk-service.d.ts.map +1 -1
  862. package/dist/services/rtk-service.js +3 -15
  863. package/dist/services/rtk-service.js.map +1 -1
  864. package/dist/services/runtime-setting-router.d.ts +19 -0
  865. package/dist/services/runtime-setting-router.d.ts.map +1 -1
  866. package/dist/services/runtime-setting-router.js +33 -0
  867. package/dist/services/runtime-setting-router.js.map +1 -1
  868. package/dist/services/service-interfaces.d.ts +19 -2
  869. package/dist/services/service-interfaces.d.ts.map +1 -1
  870. package/dist/services/session/background-task-control.d.ts +128 -0
  871. package/dist/services/session/background-task-control.d.ts.map +1 -0
  872. package/dist/services/session/background-task-control.js +217 -0
  873. package/dist/services/session/background-task-control.js.map +1 -0
  874. package/dist/services/session/background-task-liveness.d.ts +24 -0
  875. package/dist/services/session/background-task-liveness.d.ts.map +1 -0
  876. package/dist/services/session/background-task-liveness.js +23 -0
  877. package/dist/services/session/background-task-liveness.js.map +1 -0
  878. package/dist/services/session/continuation-call-id-resolver.d.ts +16 -9
  879. package/dist/services/session/continuation-call-id-resolver.d.ts.map +1 -1
  880. package/dist/services/session/continuation-call-id-resolver.js +34 -48
  881. package/dist/services/session/continuation-call-id-resolver.js.map +1 -1
  882. package/dist/services/session/continuation-plan-applier.d.ts.map +1 -1
  883. package/dist/services/session/continuation-plan-applier.js +1 -3
  884. package/dist/services/session/continuation-plan-applier.js.map +1 -1
  885. package/dist/services/session/continuation-recovery-handler.d.ts.map +1 -1
  886. package/dist/services/session/continuation-recovery-handler.js +0 -2
  887. package/dist/services/session/continuation-recovery-handler.js.map +1 -1
  888. package/dist/services/session/continuation-state.d.ts +9 -5
  889. package/dist/services/session/continuation-state.d.ts.map +1 -1
  890. package/dist/services/session/continuation-state.js +1 -1
  891. package/dist/services/session/continuation-state.js.map +1 -1
  892. package/dist/services/session/live-run.d.ts +29 -0
  893. package/dist/services/session/live-run.d.ts.map +1 -0
  894. package/dist/services/session/live-run.js +111 -0
  895. package/dist/services/session/live-run.js.map +1 -0
  896. package/dist/services/session/nested-tool-compatibility-state.d.ts +20 -0
  897. package/dist/services/session/nested-tool-compatibility-state.d.ts.map +1 -0
  898. package/dist/services/session/nested-tool-compatibility-state.js +29 -0
  899. package/dist/services/session/nested-tool-compatibility-state.js.map +1 -0
  900. package/dist/services/session/pending-interaction-state.d.ts +60 -0
  901. package/dist/services/session/pending-interaction-state.d.ts.map +1 -0
  902. package/dist/services/session/pending-interaction-state.js +132 -0
  903. package/dist/services/session/pending-interaction-state.js.map +1 -0
  904. package/dist/services/session/post-execute-pause-capability.d.ts +17 -0
  905. package/dist/services/session/post-execute-pause-capability.d.ts.map +1 -0
  906. package/dist/services/session/post-execute-pause-capability.js +27 -0
  907. package/dist/services/session/post-execute-pause-capability.js.map +1 -0
  908. package/dist/services/session/post-execute-pause-policy.d.ts +20 -0
  909. package/dist/services/session/post-execute-pause-policy.d.ts.map +1 -0
  910. package/dist/services/session/post-execute-pause-policy.js +34 -0
  911. package/dist/services/session/post-execute-pause-policy.js.map +1 -0
  912. package/dist/services/session/post-execute-pending-registry.d.ts +63 -0
  913. package/dist/services/session/post-execute-pending-registry.d.ts.map +1 -0
  914. package/dist/services/session/post-execute-pending-registry.js +123 -0
  915. package/dist/services/session/post-execute-pending-registry.js.map +1 -0
  916. package/dist/services/session/session-access-state.d.ts +24 -0
  917. package/dist/services/session/session-access-state.d.ts.map +1 -0
  918. package/dist/services/session/session-access-state.js +92 -0
  919. package/dist/services/session/session-access-state.js.map +1 -0
  920. package/dist/services/session/session-client-factory.d.ts +71 -0
  921. package/dist/services/session/session-client-factory.d.ts.map +1 -0
  922. package/dist/services/session/session-client-factory.js +130 -0
  923. package/dist/services/session/session-client-factory.js.map +1 -0
  924. package/dist/services/session/session-composition.d.ts +58 -0
  925. package/dist/services/session/session-composition.d.ts.map +1 -1
  926. package/dist/services/session/session-composition.js +179 -13
  927. package/dist/services/session/session-composition.js.map +1 -1
  928. package/dist/services/session/session-input-planner.d.ts +22 -2
  929. package/dist/services/session/session-input-planner.d.ts.map +1 -1
  930. package/dist/services/session/session-input-planner.js +121 -10
  931. package/dist/services/session/session-input-planner.js.map +1 -1
  932. package/dist/services/session/session-lifecycle.d.ts +5 -0
  933. package/dist/services/session/session-lifecycle.d.ts.map +1 -1
  934. package/dist/services/session/session-lifecycle.js +16 -6
  935. package/dist/services/session/session-lifecycle.js.map +1 -1
  936. package/dist/services/session/session-manager.d.ts +11 -1
  937. package/dist/services/session/session-manager.d.ts.map +1 -1
  938. package/dist/services/session/session-manager.js +16 -3
  939. package/dist/services/session/session-manager.js.map +1 -1
  940. package/dist/services/session/session-stream-processor.d.ts +6 -0
  941. package/dist/services/session/session-stream-processor.d.ts.map +1 -1
  942. package/dist/services/session/session-stream-processor.js +177 -35
  943. package/dist/services/session/session-stream-processor.js.map +1 -1
  944. package/dist/services/session/session-tool-tracker.d.ts +16 -21
  945. package/dist/services/session/session-tool-tracker.d.ts.map +1 -1
  946. package/dist/services/session/session-tool-tracker.js +21 -52
  947. package/dist/services/session/session-tool-tracker.js.map +1 -1
  948. package/dist/services/session/terminal-result-collector.d.ts +8 -0
  949. package/dist/services/session/terminal-result-collector.d.ts.map +1 -1
  950. package/dist/services/session/terminal-result-collector.js +30 -4
  951. package/dist/services/session/terminal-result-collector.js.map +1 -1
  952. package/dist/services/session/test-helpers/conversation-session-fixtures.d.ts.map +1 -1
  953. package/dist/services/session/test-helpers/conversation-session-fixtures.js +8 -1
  954. package/dist/services/session/test-helpers/conversation-session-fixtures.js.map +1 -1
  955. package/dist/services/session/turn-attempt-factory.d.ts +2 -2
  956. package/dist/services/session/turn-attempt-factory.d.ts.map +1 -1
  957. package/dist/services/session/turn-attempt.d.ts +4 -2
  958. package/dist/services/session/turn-attempt.d.ts.map +1 -1
  959. package/dist/services/session/turn-attempt.js +5 -0
  960. package/dist/services/session/turn-attempt.js.map +1 -1
  961. package/dist/services/session/turn-coordinator.d.ts +32 -2
  962. package/dist/services/session/turn-coordinator.d.ts.map +1 -1
  963. package/dist/services/session/turn-coordinator.js +180 -9
  964. package/dist/services/session/turn-coordinator.js.map +1 -1
  965. package/dist/services/session/turn-status-machine.d.ts +21 -6
  966. package/dist/services/session/turn-status-machine.d.ts.map +1 -1
  967. package/dist/services/session/turn-status-machine.js +50 -13
  968. package/dist/services/session/turn-status-machine.js.map +1 -1
  969. package/dist/services/session/turn-workflow.d.ts +35 -0
  970. package/dist/services/session/turn-workflow.d.ts.map +1 -1
  971. package/dist/services/session/turn-workflow.js +377 -27
  972. package/dist/services/session/turn-workflow.js.map +1 -1
  973. package/dist/services/settings/ancillary-settings-migration.js +3 -3
  974. package/dist/services/settings/ancillary-settings-migration.js.map +1 -1
  975. package/dist/services/settings/custom-provider-normalization.d.ts +10 -0
  976. package/dist/services/settings/custom-provider-normalization.d.ts.map +1 -1
  977. package/dist/services/settings/custom-provider-normalization.js +35 -2
  978. package/dist/services/settings/custom-provider-normalization.js.map +1 -1
  979. package/dist/services/settings/settings-env.d.ts +3 -0
  980. package/dist/services/settings/settings-env.d.ts.map +1 -1
  981. package/dist/services/settings/settings-env.js +3 -3
  982. package/dist/services/settings/settings-env.js.map +1 -1
  983. package/dist/services/settings/settings-merger.d.ts +6 -5
  984. package/dist/services/settings/settings-merger.d.ts.map +1 -1
  985. package/dist/services/settings/settings-merger.js +9 -4
  986. package/dist/services/settings/settings-merger.js.map +1 -1
  987. package/dist/services/settings/settings-path.d.ts +6 -0
  988. package/dist/services/settings/settings-path.d.ts.map +1 -0
  989. package/dist/services/settings/settings-path.js +15 -0
  990. package/dist/services/settings/settings-path.js.map +1 -0
  991. package/dist/services/settings/settings-persistence.d.ts +17 -6
  992. package/dist/services/settings/settings-persistence.d.ts.map +1 -1
  993. package/dist/services/settings/settings-persistence.js +155 -28
  994. package/dist/services/settings/settings-persistence.js.map +1 -1
  995. package/dist/services/settings/settings-schema.d.ts +107 -5
  996. package/dist/services/settings/settings-schema.d.ts.map +1 -1
  997. package/dist/services/settings/settings-schema.js +91 -9
  998. package/dist/services/settings/settings-schema.js.map +1 -1
  999. package/dist/services/settings/settings-service.d.ts +42 -5
  1000. package/dist/services/settings/settings-service.d.ts.map +1 -1
  1001. package/dist/services/settings/settings-service.js +282 -12
  1002. package/dist/services/settings/settings-service.js.map +1 -1
  1003. package/dist/services/settings/settings-sources.d.ts.map +1 -1
  1004. package/dist/services/settings/settings-sources.js +7 -0
  1005. package/dist/services/settings/settings-sources.js.map +1 -1
  1006. package/dist/services/shell/background-shell-output-store.d.ts +90 -0
  1007. package/dist/services/shell/background-shell-output-store.d.ts.map +1 -0
  1008. package/dist/services/shell/background-shell-output-store.js +207 -0
  1009. package/dist/services/shell/background-shell-output-store.js.map +1 -0
  1010. package/dist/services/shell/background-shell-registry.d.ts +128 -0
  1011. package/dist/services/shell/background-shell-registry.d.ts.map +1 -0
  1012. package/dist/services/shell/background-shell-registry.js +341 -0
  1013. package/dist/services/shell/background-shell-registry.js.map +1 -0
  1014. package/dist/services/shell/background-shell-watches.d.ts +141 -0
  1015. package/dist/services/shell/background-shell-watches.d.ts.map +1 -0
  1016. package/dist/services/shell/background-shell-watches.js +245 -0
  1017. package/dist/services/shell/background-shell-watches.js.map +1 -0
  1018. package/dist/services/shell/shell-interaction-session.d.ts +43 -0
  1019. package/dist/services/shell/shell-interaction-session.d.ts.map +1 -0
  1020. package/dist/services/shell/shell-interaction-session.js +113 -0
  1021. package/dist/services/shell/shell-interaction-session.js.map +1 -0
  1022. package/dist/services/stream-event-processor.d.ts +11 -12
  1023. package/dist/services/stream-event-processor.d.ts.map +1 -1
  1024. package/dist/services/stream-event-processor.js +119 -352
  1025. package/dist/services/stream-event-processor.js.map +1 -1
  1026. package/dist/services/stream-snapshot.d.ts +0 -1
  1027. package/dist/services/stream-snapshot.d.ts.map +1 -1
  1028. package/dist/services/stream-snapshot.js +0 -1
  1029. package/dist/services/stream-snapshot.js.map +1 -1
  1030. package/dist/services/subagents/codename-run-id.d.ts +43 -0
  1031. package/dist/services/subagents/codename-run-id.d.ts.map +1 -0
  1032. package/dist/services/subagents/codename-run-id.js +683 -0
  1033. package/dist/services/subagents/codename-run-id.js.map +1 -0
  1034. package/dist/services/subagents/execution-runner.d.ts +2 -0
  1035. package/dist/services/subagents/execution-runner.d.ts.map +1 -1
  1036. package/dist/services/subagents/execution-runner.js +60 -6
  1037. package/dist/services/subagents/execution-runner.js.map +1 -1
  1038. package/dist/services/subagents/foreground-subagent-lease.d.ts +77 -0
  1039. package/dist/services/subagents/foreground-subagent-lease.d.ts.map +1 -0
  1040. package/dist/services/subagents/foreground-subagent-lease.js +156 -0
  1041. package/dist/services/subagents/foreground-subagent-lease.js.map +1 -0
  1042. package/dist/services/subagents/mentor-runner.d.ts.map +1 -1
  1043. package/dist/services/subagents/mentor-runner.js +50 -31
  1044. package/dist/services/subagents/mentor-runner.js.map +1 -1
  1045. package/dist/services/subagents/nested-runner.d.ts +47 -23
  1046. package/dist/services/subagents/nested-runner.d.ts.map +1 -1
  1047. package/dist/services/subagents/nested-runner.js +313 -66
  1048. package/dist/services/subagents/nested-runner.js.map +1 -1
  1049. package/dist/services/subagents/role-loader.d.ts +3 -3
  1050. package/dist/services/subagents/role-loader.d.ts.map +1 -1
  1051. package/dist/services/subagents/role-loader.js +6 -7
  1052. package/dist/services/subagents/role-loader.js.map +1 -1
  1053. package/dist/services/subagents/runtime.d.ts +10 -0
  1054. package/dist/services/subagents/runtime.d.ts.map +1 -1
  1055. package/dist/services/subagents/runtime.js +15 -1
  1056. package/dist/services/subagents/runtime.js.map +1 -1
  1057. package/dist/services/subagents/subagent-async-registry.d.ts +21 -2
  1058. package/dist/services/subagents/subagent-async-registry.d.ts.map +1 -1
  1059. package/dist/services/subagents/subagent-async-registry.js +193 -13
  1060. package/dist/services/subagents/subagent-async-registry.js.map +1 -1
  1061. package/dist/services/subagents/subagent-client-types.d.ts +2 -0
  1062. package/dist/services/subagents/subagent-client-types.d.ts.map +1 -1
  1063. package/dist/services/subagents/subagent-manager.d.ts +26 -7
  1064. package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
  1065. package/dist/services/subagents/subagent-manager.js +31 -1
  1066. package/dist/services/subagents/subagent-manager.js.map +1 -1
  1067. package/dist/services/subagents/subagent-notification-store.d.ts +91 -6
  1068. package/dist/services/subagents/subagent-notification-store.d.ts.map +1 -1
  1069. package/dist/services/subagents/subagent-notification-store.js +140 -10
  1070. package/dist/services/subagents/subagent-notification-store.js.map +1 -1
  1071. package/dist/services/subagents/subagent-session.d.ts +12 -7
  1072. package/dist/services/subagents/subagent-session.d.ts.map +1 -1
  1073. package/dist/services/subagents/subagent-session.js +13 -14
  1074. package/dist/services/subagents/subagent-session.js.map +1 -1
  1075. package/dist/services/subagents/test-helpers/subagent-manager-fixtures.d.ts +4 -5
  1076. package/dist/services/subagents/test-helpers/subagent-manager-fixtures.d.ts.map +1 -1
  1077. package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js +72 -70
  1078. package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js.map +1 -1
  1079. package/dist/services/subagents/tool-policy.d.ts +21 -17
  1080. package/dist/services/subagents/tool-policy.d.ts.map +1 -1
  1081. package/dist/services/subagents/tool-policy.js +100 -60
  1082. package/dist/services/subagents/tool-policy.js.map +1 -1
  1083. package/dist/services/subagents/types.d.ts +37 -3
  1084. package/dist/services/subagents/types.d.ts.map +1 -1
  1085. package/dist/services/subagents/types.js +2 -2
  1086. package/dist/services/subagents/types.js.map +1 -1
  1087. package/dist/services/subagents/utils.d.ts +8 -1
  1088. package/dist/services/subagents/utils.d.ts.map +1 -1
  1089. package/dist/services/subagents/utils.js +46 -16
  1090. package/dist/services/subagents/utils.js.map +1 -1
  1091. package/dist/services/subagents/worker-worktree.d.ts +25 -0
  1092. package/dist/services/subagents/worker-worktree.d.ts.map +1 -0
  1093. package/dist/services/subagents/worker-worktree.js +74 -0
  1094. package/dist/services/subagents/worker-worktree.js.map +1 -0
  1095. package/dist/services/test-helpers/mock-stream.d.ts +3 -0
  1096. package/dist/services/test-helpers/mock-stream.d.ts.map +1 -1
  1097. package/dist/services/test-helpers/mock-stream.js +8 -0
  1098. package/dist/services/test-helpers/mock-stream.js.map +1 -1
  1099. package/dist/services/tool-execution-ledger.d.ts +2 -0
  1100. package/dist/services/tool-execution-ledger.d.ts.map +1 -1
  1101. package/dist/services/tool-execution-ledger.js +59 -81
  1102. package/dist/services/tool-execution-ledger.js.map +1 -1
  1103. package/dist/services/workspace/active-workspace-root.d.ts +5 -0
  1104. package/dist/services/workspace/active-workspace-root.d.ts.map +1 -0
  1105. package/dist/services/workspace/active-workspace-root.js +24 -0
  1106. package/dist/services/workspace/active-workspace-root.js.map +1 -0
  1107. package/dist/services/workspace/parse-worktree-list.d.ts +24 -0
  1108. package/dist/services/workspace/parse-worktree-list.d.ts.map +1 -0
  1109. package/dist/services/workspace/parse-worktree-list.js +59 -0
  1110. package/dist/services/workspace/parse-worktree-list.js.map +1 -0
  1111. package/dist/services/workspace/worktree-inventory.d.ts +10 -0
  1112. package/dist/services/workspace/worktree-inventory.d.ts.map +1 -0
  1113. package/dist/services/workspace/worktree-inventory.js +28 -0
  1114. package/dist/services/workspace/worktree-inventory.js.map +1 -0
  1115. package/dist/services/workspace/worktree-transition.d.ts +85 -0
  1116. package/dist/services/workspace/worktree-transition.d.ts.map +1 -0
  1117. package/dist/services/workspace/worktree-transition.js +70 -0
  1118. package/dist/services/workspace/worktree-transition.js.map +1 -0
  1119. package/dist/test-helpers/conversation-session-with-adapter.d.ts +1 -1
  1120. package/dist/test-helpers/conversation-session-with-adapter.d.ts.map +1 -1
  1121. package/dist/test-helpers/conversation-session-with-adapter.js +5 -1
  1122. package/dist/test-helpers/conversation-session-with-adapter.js.map +1 -1
  1123. package/dist/test-helpers/ink-testing.d.ts.map +1 -1
  1124. package/dist/test-helpers/ink-testing.js +2 -1
  1125. package/dist/test-helpers/ink-testing.js.map +1 -1
  1126. package/dist/tools/agent/activate-skill.d.ts +6 -1
  1127. package/dist/tools/agent/activate-skill.d.ts.map +1 -1
  1128. package/dist/tools/agent/activate-skill.js.map +1 -1
  1129. package/dist/tools/agent/ask-mentor.d.ts +1 -1
  1130. package/dist/tools/agent/ask-mentor.d.ts.map +1 -1
  1131. package/dist/tools/agent/ask-mentor.js.map +1 -1
  1132. package/dist/tools/agent/ask-orchestrator.d.ts +1 -1
  1133. package/dist/tools/agent/ask-orchestrator.d.ts.map +1 -1
  1134. package/dist/tools/agent/ask-user-constants.d.ts +6 -0
  1135. package/dist/tools/agent/ask-user-constants.d.ts.map +1 -1
  1136. package/dist/tools/agent/ask-user-constants.js +6 -0
  1137. package/dist/tools/agent/ask-user-constants.js.map +1 -1
  1138. package/dist/tools/agent/run-subagent-async.d.ts +6 -6
  1139. package/dist/tools/agent/run-subagent-async.d.ts.map +1 -1
  1140. package/dist/tools/agent/run-subagent-async.js +34 -55
  1141. package/dist/tools/agent/run-subagent-async.js.map +1 -1
  1142. package/dist/tools/agent/run-subagent.d.ts +30 -14
  1143. package/dist/tools/agent/run-subagent.d.ts.map +1 -1
  1144. package/dist/tools/agent/run-subagent.js +191 -68
  1145. package/dist/tools/agent/run-subagent.js.map +1 -1
  1146. package/dist/tools/file/apply-patch.d.ts +3 -1
  1147. package/dist/tools/file/apply-patch.d.ts.map +1 -1
  1148. package/dist/tools/file/apply-patch.js +34 -10
  1149. package/dist/tools/file/apply-patch.js.map +1 -1
  1150. package/dist/tools/file/code-context.d.ts +2 -2
  1151. package/dist/tools/file/code-context.d.ts.map +1 -1
  1152. package/dist/tools/file/code-context.js +1 -1
  1153. package/dist/tools/file/code-context.js.map +1 -1
  1154. package/dist/tools/file/create-file.d.ts +4 -2
  1155. package/dist/tools/file/create-file.d.ts.map +1 -1
  1156. package/dist/tools/file/create-file.js +10 -7
  1157. package/dist/tools/file/create-file.js.map +1 -1
  1158. package/dist/tools/file/edit-healing.d.ts.map +1 -1
  1159. package/dist/tools/file/edit-healing.js +54 -35
  1160. package/dist/tools/file/edit-healing.js.map +1 -1
  1161. package/dist/tools/file/glob-target.d.ts +12 -0
  1162. package/dist/tools/file/glob-target.d.ts.map +1 -0
  1163. package/dist/tools/file/glob-target.js +22 -0
  1164. package/dist/tools/file/glob-target.js.map +1 -0
  1165. package/dist/tools/file/glob.d.ts +9 -2
  1166. package/dist/tools/file/glob.d.ts.map +1 -1
  1167. package/dist/tools/file/glob.js +12 -16
  1168. package/dist/tools/file/glob.js.map +1 -1
  1169. package/dist/tools/file/grep.d.ts +8 -1
  1170. package/dist/tools/file/grep.d.ts.map +1 -1
  1171. package/dist/tools/file/grep.js +60 -4
  1172. package/dist/tools/file/grep.js.map +1 -1
  1173. package/dist/tools/file/read-file.d.ts +7 -1
  1174. package/dist/tools/file/read-file.d.ts.map +1 -1
  1175. package/dist/tools/file/read-file.js +3 -4
  1176. package/dist/tools/file/read-file.js.map +1 -1
  1177. package/dist/tools/file/search-replace.d.ts +5 -3
  1178. package/dist/tools/file/search-replace.d.ts.map +1 -1
  1179. package/dist/tools/file/search-replace.js +29 -19
  1180. package/dist/tools/file/search-replace.js.map +1 -1
  1181. package/dist/tools/format-helpers.d.ts +4 -3
  1182. package/dist/tools/format-helpers.d.ts.map +1 -1
  1183. package/dist/tools/format-helpers.js +16 -17
  1184. package/dist/tools/format-helpers.js.map +1 -1
  1185. package/dist/tools/memory/memory-tools.d.ts.map +1 -1
  1186. package/dist/tools/memory/memory-tools.js +61 -49
  1187. package/dist/tools/memory/memory-tools.js.map +1 -1
  1188. package/dist/tools/run-agent-workflow.d.ts +1 -1
  1189. package/dist/tools/run-agent-workflow.d.ts.map +1 -1
  1190. package/dist/tools/system/shell.d.ts +80 -3
  1191. package/dist/tools/system/shell.d.ts.map +1 -1
  1192. package/dist/tools/system/shell.js +657 -152
  1193. package/dist/tools/system/shell.js.map +1 -1
  1194. package/dist/tools/system/worktree.d.ts +22 -0
  1195. package/dist/tools/system/worktree.d.ts.map +1 -0
  1196. package/dist/tools/system/worktree.js +138 -0
  1197. package/dist/tools/system/worktree.js.map +1 -0
  1198. package/dist/tools/types.d.ts +102 -5
  1199. package/dist/tools/types.d.ts.map +1 -1
  1200. package/dist/tools/types.js +4 -1
  1201. package/dist/tools/types.js.map +1 -1
  1202. package/dist/tools/utils.d.ts +18 -0
  1203. package/dist/tools/utils.d.ts.map +1 -1
  1204. package/dist/tools/utils.js +80 -1
  1205. package/dist/tools/utils.js.map +1 -1
  1206. package/dist/tools/web/web-fetch.d.ts +1 -1
  1207. package/dist/tools/web/web-fetch.d.ts.map +1 -1
  1208. package/dist/tools/web/web-fetch.js.map +1 -1
  1209. package/dist/tools/web/web-search.d.ts +1 -1
  1210. package/dist/tools/web/web-search.d.ts.map +1 -1
  1211. package/dist/tools/web/web-search.js.map +1 -1
  1212. package/dist/types/message.d.ts +2 -0
  1213. package/dist/types/message.d.ts.map +1 -1
  1214. package/dist/types/message.js.map +1 -1
  1215. package/dist/utils/ai/model-settings.d.ts.map +1 -1
  1216. package/dist/utils/ai/model-settings.js +0 -6
  1217. package/dist/utils/ai/model-settings.js.map +1 -1
  1218. package/dist/utils/ai/provider-credentials.d.ts +31 -2
  1219. package/dist/utils/ai/provider-credentials.d.ts.map +1 -1
  1220. package/dist/utils/ai/provider-credentials.js +119 -11
  1221. package/dist/utils/ai/provider-credentials.js.map +1 -1
  1222. package/dist/utils/ai/token-usage.d.ts +10 -5
  1223. package/dist/utils/ai/token-usage.d.ts.map +1 -1
  1224. package/dist/utils/ai/token-usage.js +48 -35
  1225. package/dist/utils/ai/token-usage.js.map +1 -1
  1226. package/dist/utils/apply-diff.d.ts +3 -0
  1227. package/dist/utils/apply-diff.d.ts.map +1 -0
  1228. package/dist/utils/apply-diff.js +192 -0
  1229. package/dist/utils/apply-diff.js.map +1 -0
  1230. package/dist/utils/conversation/conversation-event-handler.d.ts.map +1 -1
  1231. package/dist/utils/conversation/conversation-event-handler.js +72 -16
  1232. package/dist/utils/conversation/conversation-event-handler.js.map +1 -1
  1233. package/dist/utils/conversation/conversation-utils.d.ts +5 -0
  1234. package/dist/utils/conversation/conversation-utils.d.ts.map +1 -1
  1235. package/dist/utils/conversation/conversation-utils.js +1 -0
  1236. package/dist/utils/conversation/conversation-utils.js.map +1 -1
  1237. package/dist/utils/conversation/message-utils.d.ts +14 -2
  1238. package/dist/utils/conversation/message-utils.d.ts.map +1 -1
  1239. package/dist/utils/conversation/message-utils.js +55 -35
  1240. package/dist/utils/conversation/message-utils.js.map +1 -1
  1241. package/dist/utils/conversation/rewind-items.d.ts +32 -0
  1242. package/dist/utils/conversation/rewind-items.d.ts.map +1 -0
  1243. package/dist/utils/conversation/rewind-items.js +33 -0
  1244. package/dist/utils/conversation/rewind-items.js.map +1 -0
  1245. package/dist/utils/copy-selections.d.ts +8 -0
  1246. package/dist/utils/copy-selections.d.ts.map +1 -0
  1247. package/dist/utils/copy-selections.js +42 -0
  1248. package/dist/utils/copy-selections.js.map +1 -0
  1249. package/dist/utils/inject-warning-into-tool-output.d.ts +10 -0
  1250. package/dist/utils/inject-warning-into-tool-output.d.ts.map +1 -1
  1251. package/dist/utils/inject-warning-into-tool-output.js +17 -0
  1252. package/dist/utils/inject-warning-into-tool-output.js.map +1 -1
  1253. package/dist/utils/settings-command.d.ts.map +1 -1
  1254. package/dist/utils/settings-command.js +46 -4
  1255. package/dist/utils/settings-command.js.map +1 -1
  1256. package/dist/utils/shell/command-logger.js.map +1 -1
  1257. package/dist/utils/shell/command-safety/find-helpers.d.ts +3 -2
  1258. package/dist/utils/shell/command-safety/find-helpers.d.ts.map +1 -1
  1259. package/dist/utils/shell/command-safety/find-helpers.js +34 -17
  1260. package/dist/utils/shell/command-safety/find-helpers.js.map +1 -1
  1261. package/dist/utils/shell/command-safety/handlers/find-handler.d.ts.map +1 -1
  1262. package/dist/utils/shell/command-safety/handlers/find-handler.js +0 -2
  1263. package/dist/utils/shell/command-safety/handlers/find-handler.js.map +1 -1
  1264. package/dist/utils/shell/command-safety/handlers/git-handler.d.ts.map +1 -1
  1265. package/dist/utils/shell/command-safety/handlers/git-handler.js.map +1 -1
  1266. package/dist/utils/shell/command-safety/handlers/sed-handler.d.ts.map +1 -1
  1267. package/dist/utils/shell/command-safety/handlers/sed-handler.js +14 -9
  1268. package/dist/utils/shell/command-safety/handlers/sed-handler.js.map +1 -1
  1269. package/dist/utils/shell/command-safety/handlers/types.d.ts +5 -4
  1270. package/dist/utils/shell/command-safety/handlers/types.d.ts.map +1 -1
  1271. package/dist/utils/shell/command-safety/index.d.ts.map +1 -1
  1272. package/dist/utils/shell/command-safety/index.js +212 -88
  1273. package/dist/utils/shell/command-safety/index.js.map +1 -1
  1274. package/dist/utils/shell/command-safety/path-analysis.d.ts.map +1 -1
  1275. package/dist/utils/shell/command-safety/path-analysis.js +5 -1
  1276. package/dist/utils/shell/command-safety/path-analysis.js.map +1 -1
  1277. package/dist/utils/shell/command-safety/utils.d.ts +2 -1
  1278. package/dist/utils/shell/command-safety/utils.d.ts.map +1 -1
  1279. package/dist/utils/shell/command-safety/utils.js +5 -5
  1280. package/dist/utils/shell/command-safety/utils.js.map +1 -1
  1281. package/dist/utils/shell/execute-shell.d.ts +49 -3
  1282. package/dist/utils/shell/execute-shell.d.ts.map +1 -1
  1283. package/dist/utils/shell/execute-shell.js +245 -28
  1284. package/dist/utils/shell/execute-shell.js.map +1 -1
  1285. package/dist/utils/shell/sandbox/denied-read-stores.d.ts +1 -8
  1286. package/dist/utils/shell/sandbox/denied-read-stores.d.ts.map +1 -1
  1287. package/dist/utils/shell/sandbox/denied-read-stores.js +1 -8
  1288. package/dist/utils/shell/sandbox/denied-read-stores.js.map +1 -1
  1289. package/dist/utils/shell/sandbox/docker-host-control-grants.d.ts +36 -6
  1290. package/dist/utils/shell/sandbox/docker-host-control-grants.d.ts.map +1 -1
  1291. package/dist/utils/shell/sandbox/docker-host-control-grants.js +47 -17
  1292. package/dist/utils/shell/sandbox/docker-host-control-grants.js.map +1 -1
  1293. package/dist/utils/shell/sandbox/sandbox-env.d.ts.map +1 -1
  1294. package/dist/utils/shell/sandbox/sandbox-env.js +2 -1
  1295. package/dist/utils/shell/sandbox/sandbox-env.js.map +1 -1
  1296. package/dist/utils/shell/sandbox/sandbox-network-approval-coordinator.d.ts +21 -0
  1297. package/dist/utils/shell/sandbox/sandbox-network-approval-coordinator.d.ts.map +1 -0
  1298. package/dist/utils/shell/sandbox/sandbox-network-approval-coordinator.js +66 -0
  1299. package/dist/utils/shell/sandbox/sandbox-network-approval-coordinator.js.map +1 -0
  1300. package/dist/utils/shell/sandbox/sandbox-network-store.d.ts.map +1 -1
  1301. package/dist/utils/shell/sandbox/sandbox-network-store.js +3 -2
  1302. package/dist/utils/shell/sandbox/sandbox-network-store.js.map +1 -1
  1303. package/dist/utils/shell/sandbox/sandbox-policy.d.ts.map +1 -1
  1304. package/dist/utils/shell/sandbox/sandbox-policy.js +2 -1
  1305. package/dist/utils/shell/sandbox/sandbox-policy.js.map +1 -1
  1306. package/dist/utils/shell/shell-session.js.map +1 -1
  1307. package/dist/utils/slash-command-dispatch.d.ts +21 -0
  1308. package/dist/utils/slash-command-dispatch.d.ts.map +1 -0
  1309. package/dist/utils/slash-command-dispatch.js +34 -0
  1310. package/dist/utils/slash-command-dispatch.js.map +1 -0
  1311. package/dist/utils/streaming/extract-command-messages.d.ts.map +1 -1
  1312. package/dist/utils/streaming/extract-command-messages.js +29 -51
  1313. package/dist/utils/streaming/extract-command-messages.js.map +1 -1
  1314. package/dist/utils/value-suggestions.d.ts.map +1 -1
  1315. package/dist/utils/value-suggestions.js +6 -8
  1316. package/dist/utils/value-suggestions.js.map +1 -1
  1317. package/package.json +21 -19
  1318. package/dist/commands/retry-command.d.ts +0 -20
  1319. package/dist/commands/retry-command.d.ts.map +0 -1
  1320. package/dist/commands/retry-command.js +0 -39
  1321. package/dist/commands/retry-command.js.map +0 -1
  1322. package/dist/commands/undo-command.d.ts +0 -15
  1323. package/dist/commands/undo-command.d.ts.map +0 -1
  1324. package/dist/commands/undo-command.js +0 -28
  1325. package/dist/commands/undo-command.js.map +0 -1
  1326. package/dist/components/input/PopupManager.d.ts +0 -88
  1327. package/dist/components/input/PopupManager.d.ts.map +0 -1
  1328. package/dist/components/input/PopupManager.js +0 -21
  1329. package/dist/components/input/PopupManager.js.map +0 -1
  1330. package/dist/components/input/popup-key-navigation.d.ts +0 -18
  1331. package/dist/components/input/popup-key-navigation.d.ts.map +0 -1
  1332. package/dist/components/input/popup-key-navigation.js +0 -16
  1333. package/dist/components/input/popup-key-navigation.js.map +0 -1
  1334. package/dist/components/input/popup-props.d.ts +0 -24
  1335. package/dist/components/input/popup-props.d.ts.map +0 -1
  1336. package/dist/components/input/popup-props.js +0 -72
  1337. package/dist/components/input/popup-props.js.map +0 -1
  1338. package/dist/components/menu/UndoSelectionMenu.d.ts +0 -12
  1339. package/dist/components/menu/UndoSelectionMenu.d.ts.map +0 -1
  1340. package/dist/components/menu/UndoSelectionMenu.js +0 -19
  1341. package/dist/components/menu/UndoSelectionMenu.js.map +0 -1
  1342. package/dist/hooks/use-mode-handlers.d.ts +0 -79
  1343. package/dist/hooks/use-mode-handlers.d.ts.map +0 -1
  1344. package/dist/hooks/use-mode-handlers.js +0 -183
  1345. package/dist/hooks/use-mode-handlers.js.map +0 -1
  1346. package/dist/hooks/use-pending-turn-guards.d.ts +0 -43
  1347. package/dist/hooks/use-pending-turn-guards.d.ts.map +0 -1
  1348. package/dist/hooks/use-pending-turn-guards.js +0 -120
  1349. package/dist/hooks/use-pending-turn-guards.js.map +0 -1
  1350. package/dist/hooks/use-trigger-detection.d.ts +0 -49
  1351. package/dist/hooks/use-trigger-detection.d.ts.map +0 -1
  1352. package/dist/hooks/use-trigger-detection.js +0 -104
  1353. package/dist/hooks/use-trigger-detection.js.map +0 -1
  1354. package/dist/hooks/use-undo-selection.d.ts +0 -23
  1355. package/dist/hooks/use-undo-selection.d.ts.map +0 -1
  1356. package/dist/hooks/use-undo-selection.js.map +0 -1
  1357. package/dist/lib/agent-run-orchestrator.d.ts +0 -38
  1358. package/dist/lib/agent-run-orchestrator.d.ts.map +0 -1
  1359. package/dist/lib/agent-run-orchestrator.js +0 -266
  1360. package/dist/lib/agent-run-orchestrator.js.map +0 -1
  1361. package/dist/lib/retry-executor.d.ts +0 -16
  1362. package/dist/lib/retry-executor.d.ts.map +0 -1
  1363. package/dist/lib/retry-executor.js +0 -53
  1364. package/dist/lib/retry-executor.js.map +0 -1
  1365. package/dist/lib/runner-manager.d.ts +0 -22
  1366. package/dist/lib/runner-manager.d.ts.map +0 -1
  1367. package/dist/lib/runner-manager.js +0 -56
  1368. package/dist/lib/runner-manager.js.map +0 -1
  1369. package/dist/prompts/shell-sandbox.md +0 -18
  1370. package/dist/prompts/simple.md +0 -53
  1371. package/dist/prompts/simple_prev.md +0 -33
  1372. package/dist/prompts/simple_v2.md +0 -84
  1373. package/dist/prompts/simple_v3.md +0 -267
  1374. package/dist/prompts/subagents/researcher.md +0 -46
  1375. package/dist/providers/ai-sdk-agents-adapter.d.ts +0 -7
  1376. package/dist/providers/ai-sdk-agents-adapter.d.ts.map +0 -1
  1377. package/dist/providers/ai-sdk-agents-adapter.js +0 -80
  1378. package/dist/providers/ai-sdk-agents-adapter.js.map +0 -1
  1379. package/dist/providers/fallback-responses-model.d.ts +0 -46
  1380. package/dist/providers/fallback-responses-model.d.ts.map +0 -1
  1381. package/dist/providers/fallback-responses-model.js +0 -296
  1382. package/dist/providers/fallback-responses-model.js.map +0 -1
  1383. package/dist/services/stream-event-parsing.d.ts +0 -4
  1384. package/dist/services/stream-event-parsing.d.ts.map +0 -1
  1385. package/dist/services/stream-event-parsing.js +0 -79
  1386. package/dist/services/stream-event-parsing.js.map +0 -1
@@ -1,18 +1,324 @@
1
- import { OpenAIResponsesModel, OpenAIResponsesWSModel } from '@openai/agents-openai';
2
- import { getCurrentTrace, withTrace } from '@openai/agents-core';
3
1
  import { randomUUID } from 'node:crypto';
2
+ import { ResponsesWS } from 'openai/resources/responses/ws';
3
+ import OpenAI from 'openai';
4
+ import { toCodexResponsesInput } from './codex-turn-converter.js';
4
5
  import { sanitizeHeaders } from '../utils/header-sanitizer.js';
5
- import { dropUnpairedFunctionCalls } from '../services/tool-execution-ledger.js';
6
+ import { OrphanedChainedToolOutputError } from '../lib/chained-input-filter.js';
6
7
  import { AmbiguousModelOutcomeError } from '../services/retry/retry-errors.js';
7
8
  import { ChainedWireState } from './chained-wire-state.js';
8
9
  import { LunaResponsesLiteWireProtocol } from './luna-responses-lite-wire-protocol.js';
10
+ import { captureProviderRequest } from './provider-request-capture.js';
9
11
  import { createWebSocketReceiveWatchdog, DEFAULT_WEBSOCKET_RECEIVE_TIMEOUTS, } from './websocket-receive-watchdog.js';
10
12
  const DUMMY_PROVIDER_TRAFFIC = {
11
13
  recordRequestStart() { },
12
14
  async recordResponseReceived() { },
15
+ recordResponseClosed() { },
13
16
  recordRequestFailed() { },
14
17
  };
15
- import { isPreviousResponseNotFoundError, isRetryableTransportError, } from '../services/retry/retry-error-classification.js';
18
+ function toCodexToolChoice(choice) {
19
+ if (choice === 'auto' || choice === 'required' || choice === 'none')
20
+ return choice;
21
+ if (choice && typeof choice === 'object' && typeof choice.name === 'string') {
22
+ return { type: 'function', name: choice.name };
23
+ }
24
+ throw new Error('Unsupported Codex tool choice.');
25
+ }
26
+ /** Provider-owned transport seam used by Codex's HTTP and WebSocket models. */
27
+ export class CodexResponsesTransport {
28
+ client;
29
+ model;
30
+ websocket;
31
+ constructor(client = {}, model = '', websocket = false) {
32
+ this.client = client;
33
+ this.model = model;
34
+ this.websocket = websocket;
35
+ }
36
+ buildResponsesCreateRequest(request, stream) {
37
+ const providerOptions = request.providerOptions ?? {};
38
+ const { extraBody, extraHeaders: _extraHeaders, ...nativeProviderData } = providerOptions;
39
+ return {
40
+ requestData: {
41
+ model: this.model,
42
+ input: toCodexResponsesInput(request.input),
43
+ stream,
44
+ ...(request.instructions !== undefined ? { instructions: request.instructions } : {}),
45
+ ...(request.tools.length > 0 ? { tools: request.tools.map((tool) => ({ type: 'function', ...tool })) } : {}),
46
+ ...(request.toolChoice !== undefined ? { tool_choice: toCodexToolChoice(request.toolChoice) } : {}),
47
+ ...(request.temperature !== undefined ? { temperature: request.temperature } : {}),
48
+ ...(request.topP !== undefined ? { top_p: request.topP } : {}),
49
+ ...(request.frequencyPenalty !== undefined ? { frequency_penalty: request.frequencyPenalty } : {}),
50
+ ...(request.presencePenalty !== undefined ? { presence_penalty: request.presencePenalty } : {}),
51
+ ...(request.maxTokens !== undefined ? { max_output_tokens: request.maxTokens } : {}),
52
+ ...(request.reasoning !== undefined ? { reasoning: request.reasoning } : {}),
53
+ ...nativeProviderData,
54
+ ...(extraBody ?? {}),
55
+ ...(request.previousResponseId ? { previous_response_id: request.previousResponseId } : {}),
56
+ ...(request.codex?.promptCacheKey ? { prompt_cache_key: request.codex.promptCacheKey } : {}),
57
+ ...(request.codex?.include ? { include: request.codex.include } : {}),
58
+ },
59
+ };
60
+ }
61
+ async fetchResponse(request, stream, requestData) {
62
+ if (stream && this.websocket) {
63
+ if (!(this.client instanceof OpenAI) && typeof this.client?.responses?.create === 'function') {
64
+ return this.client.responses.create(requestData);
65
+ }
66
+ const headers = request.providerOptions?.extraHeaders;
67
+ const socket = new ResponsesWS(this.client, headers ? { headers: headers } : undefined);
68
+ const messages = socket.stream();
69
+ const requestEvent = { type: 'response.create', ...requestData };
70
+ if (socket.socket?.readyState === 0) {
71
+ socket.socket.once('open', () => socket.send(requestEvent));
72
+ }
73
+ else {
74
+ socket.send(requestEvent);
75
+ }
76
+ return (async function* () {
77
+ try {
78
+ for await (const message of messages) {
79
+ if (message.type === 'message')
80
+ yield message.message;
81
+ else if (message.event)
82
+ yield message.event;
83
+ else if (message.type === 'error')
84
+ throw message.error;
85
+ else if (message.type === 'close')
86
+ throw new Error('Codex WebSocket connection closed before a terminal response event.');
87
+ }
88
+ }
89
+ finally {
90
+ try {
91
+ socket.close();
92
+ }
93
+ catch {
94
+ /* best effort */
95
+ }
96
+ }
97
+ })();
98
+ }
99
+ return this.client.responses.create(requestData, {
100
+ ...(request.signal ? { signal: request.signal } : {}),
101
+ ...(request.providerOptions?.extraHeaders ? { headers: request.providerOptions.extraHeaders } : {}),
102
+ });
103
+ }
104
+ }
105
+ export class OpenAIResponsesModel {
106
+ client;
107
+ model;
108
+ transport;
109
+ constructor(client, model, transport, websocket = false) {
110
+ this.client = client;
111
+ this.model = model;
112
+ this.transport = transport ?? new CodexResponsesTransport(client, model, websocket);
113
+ }
114
+ buildResponsesCreateRequest(request, stream) {
115
+ const built = this.transport.buildResponsesCreateRequest(request, stream);
116
+ if (this.transport instanceof CodexResponsesTransport && built?.requestData) {
117
+ built.requestData.model = this.model;
118
+ }
119
+ return built;
120
+ }
121
+ async fetchResponse(request, stream) {
122
+ const built = this.buildResponsesCreateRequest(request, stream);
123
+ return this.transport.fetchResponse(request, stream, built.requestData);
124
+ }
125
+ async fetchUnaryResponse(request) {
126
+ return this.fetchResponse(request, false);
127
+ }
128
+ async *rawStream(request) {
129
+ const source = await this.fetchResponse(request, true);
130
+ for await (const event of source) {
131
+ if (event?.type === 'error')
132
+ throw new Error(event.error?.message ?? 'Codex WebSocket provider error');
133
+ if (event?.type === 'close')
134
+ throw new Error('Codex WebSocket connection closed before a terminal response event.');
135
+ yield event;
136
+ if (event?.type === 'response.completed' ||
137
+ event?.type === 'response.incomplete' ||
138
+ event?.type === 'response.failed')
139
+ return;
140
+ }
141
+ }
142
+ async *stream(request) {
143
+ yield* convertCodexRawStream(this.rawStream(request));
144
+ }
145
+ }
146
+ export class OpenAIResponsesWSModel extends OpenAIResponsesModel {
147
+ constructor(client, model, transport) {
148
+ super(client, model, transport, true);
149
+ }
150
+ }
151
+ async function* convertCodexRawStream(source) {
152
+ const output = [];
153
+ const pendingToolCalls = [];
154
+ const terminalReasoning = [];
155
+ const toolNamesByIndex = new Map();
156
+ const toolArgumentLengthsByIndex = new Map();
157
+ let sawReasoningDelta = false;
158
+ let responseId = '';
159
+ let finishReason;
160
+ let usage;
161
+ let sawCompletedResponse = false;
162
+ for await (const event of source) {
163
+ if (event?.type === 'codex.rate_limits') {
164
+ const rateLimits = event.rate_limits ?? event;
165
+ if (rateLimits && typeof rateLimits === 'object')
166
+ yield { type: 'codex_rate_limits', rateLimits };
167
+ }
168
+ else if (event?.type === 'response.output_text.delta') {
169
+ yield { type: 'text_delta', text: String(event.delta ?? '') };
170
+ }
171
+ else if (event?.type === 'response.reasoning_summary_text.delta') {
172
+ const text = String(event.delta ?? '');
173
+ if (text) {
174
+ sawReasoningDelta = true;
175
+ yield {
176
+ type: 'reasoning_delta',
177
+ ...(typeof event.item_id === 'string' ? { id: event.item_id } : {}),
178
+ text,
179
+ };
180
+ }
181
+ }
182
+ else if (event?.type === 'response.output_item.added' && event.output_item?.type === 'function_call') {
183
+ const index = typeof event.output_index === 'number' ? event.output_index : event.output_item.id ?? 0;
184
+ if (typeof event.output_item.name === 'string')
185
+ toolNamesByIndex.set(index, event.output_item.name);
186
+ toolArgumentLengthsByIndex.set(index, 0);
187
+ }
188
+ else if ((event?.type === 'response.function_call_arguments.delta' ||
189
+ event?.type === 'response.custom_tool_call_input.delta' ||
190
+ event?.type === 'response.mcp_call_arguments.delta') &&
191
+ typeof event.delta === 'string' &&
192
+ event.delta) {
193
+ const index = typeof event.output_index === 'number' ? event.output_index : event.item_id ?? 0;
194
+ const argumentCharCount = (toolArgumentLengthsByIndex.get(index) ?? 0) + event.delta.length;
195
+ toolArgumentLengthsByIndex.set(index, argumentCharCount);
196
+ const toolName = toolNamesByIndex.get(index);
197
+ yield { type: 'tool_call_streaming_delta', ...(toolName ? { toolName } : {}), argumentCharCount };
198
+ }
199
+ else if (event?.type === 'response.output_item.done' && event.item?.type === 'function_call') {
200
+ const call = toCodexToolCallOutput(event.item);
201
+ output.push(call);
202
+ pendingToolCalls.push(call);
203
+ }
204
+ else if (event?.type === 'response.completed') {
205
+ sawCompletedResponse = true;
206
+ responseId = codexString(event.response?.id) ?? responseId;
207
+ finishReason = codexString(event.response?.status) ?? codexString(event.response?.incomplete_details?.reason);
208
+ usage = toCodexUsage(event.response?.usage);
209
+ for (const item of event.response?.output ?? []) {
210
+ const converted = toCodexOutputItem(item);
211
+ if (converted.type !== 'tool_call') {
212
+ output.push(converted);
213
+ if (converted.type === 'reasoning')
214
+ terminalReasoning.push(converted);
215
+ }
216
+ }
217
+ const authoritativeReasoning = sawReasoningDelta ? [] : terminalReasoning;
218
+ for (const reasoning of authoritativeReasoning) {
219
+ yield {
220
+ type: 'reasoning_delta',
221
+ ...(reasoning.id ? { id: reasoning.id } : {}),
222
+ text: reasoning.text,
223
+ ...(reasoning.providerMetadata ? { providerMetadata: reasoning.providerMetadata } : {}),
224
+ };
225
+ }
226
+ for (const call of pendingToolCalls)
227
+ yield call;
228
+ break;
229
+ }
230
+ else if (event?.type === 'response.incomplete' ||
231
+ event?.type === 'response.failed' ||
232
+ event?.type === 'response.error') {
233
+ const status = String(event.type).slice('response.'.length);
234
+ const message = event.response?.error?.message ?? event.error?.message ?? `Codex response ${status}`;
235
+ throw new Error(`Codex provider response ${status}: ${message}`);
236
+ }
237
+ }
238
+ if (!sawCompletedResponse)
239
+ throw new Error('Codex streamed response ended without a completed response event.');
240
+ if (!responseId)
241
+ throw new Error('Codex completed response did not include an id.');
242
+ yield {
243
+ type: 'completion',
244
+ responseId,
245
+ output,
246
+ ...(finishReason ? { finishReason } : {}),
247
+ ...(usage ? { usage } : {}),
248
+ };
249
+ }
250
+ function toCodexToolCallOutput(item) {
251
+ const id = codexString(item?.call_id) ?? codexString(item?.id);
252
+ const name = codexString(item?.name);
253
+ if (!id || !name)
254
+ throw new Error('Codex function call output is missing its call id or name.');
255
+ return { type: 'tool_call', id, name, arguments: typeof item.arguments === 'string' ? item.arguments : '{}' };
256
+ }
257
+ function toCodexOutputItem(item) {
258
+ if (!item || typeof item !== 'object')
259
+ throw new Error('Unsupported Codex response output item.');
260
+ if (item.type === 'function_call')
261
+ return toCodexToolCallOutput(item);
262
+ if (item.type === 'message') {
263
+ const content = Array.isArray(item.content) ? item.content : [];
264
+ return {
265
+ type: 'message',
266
+ content: content.map((part) => {
267
+ if (part?.type && !['output_text', 'input_text', 'text'].includes(part.type))
268
+ throw new Error(`Unsupported Codex response message content: ${String(part.type)}.`);
269
+ if (typeof part?.text !== 'string')
270
+ throw new Error('Unsupported Codex response message content without text.');
271
+ return { type: 'text', text: part.text };
272
+ }),
273
+ };
274
+ }
275
+ if (item.type === 'reasoning') {
276
+ return {
277
+ type: 'reasoning',
278
+ ...(codexString(item.id) ? { id: item.id } : {}),
279
+ text: codexReasoningText(item.summary ?? item.content ?? ''),
280
+ providerMetadata: { codex: codexReasoningMetadata(item) },
281
+ };
282
+ }
283
+ throw new Error(`Unsupported Codex response output item type: ${String(item.type)}.`);
284
+ }
285
+ function codexReasoningText(value) {
286
+ if (typeof value === 'string')
287
+ return value;
288
+ if (!Array.isArray(value))
289
+ return '';
290
+ return value
291
+ .map((part) => {
292
+ if (!part || typeof part !== 'object' || typeof part.text !== 'string')
293
+ throw new Error('Unsupported Codex reasoning content without text.');
294
+ return part.text;
295
+ })
296
+ .join('');
297
+ }
298
+ function codexReasoningMetadata(item) {
299
+ const { type: _type, id: _id, summary: _summary, content: _content, ...metadata } = item;
300
+ return metadata;
301
+ }
302
+ function toCodexUsage(rawUsage) {
303
+ if (!rawUsage || typeof rawUsage !== 'object')
304
+ return undefined;
305
+ const inputTokens = rawUsage.input_tokens ?? rawUsage.inputTokens;
306
+ const outputTokens = rawUsage.output_tokens ?? rawUsage.outputTokens;
307
+ if (inputTokens === undefined && outputTokens === undefined)
308
+ return undefined;
309
+ const cachedInputTokens = rawUsage.input_tokens_details?.cached_tokens ?? rawUsage.inputTokensDetails?.cachedTokens;
310
+ const cacheWriteTokens = rawUsage.input_tokens_details?.cache_write_tokens ?? rawUsage.inputTokensDetails?.cacheWriteTokens;
311
+ return {
312
+ ...(inputTokens !== undefined ? { inputTokens } : {}),
313
+ ...(outputTokens !== undefined ? { outputTokens } : {}),
314
+ ...(cachedInputTokens !== undefined ? { cachedInputTokens } : {}),
315
+ ...(cacheWriteTokens !== undefined ? { cacheWriteTokens } : {}),
316
+ };
317
+ }
318
+ function codexString(value) {
319
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
320
+ }
321
+ import { isIncompleteStreamTerminalError, isPreviousResponseNotFoundError, isRetryableTransportError, isWebSocketConnectionLimitReachedError, } from '../services/retry/retry-error-classification.js';
16
322
  const SUSPICIOUS_RECONSTRUCTED_OUTPUT_ITEM_COUNT = 20;
17
323
  const TERMINAL_RESPONSE_EVENT_TYPES = new Set([
18
324
  'response.completed',
@@ -53,23 +359,52 @@ function stripCodexReplayIds(input) {
53
359
  }
54
360
  function normalizeCodexRequestData(requestData, request, model, options = {}) {
55
361
  const normalizedRequestData = { ...requestData };
56
- // Codex responses endpoint rejects temperature; always omit it.
362
+ // Codex responses endpoint rejects temperature and max_output_tokens; always omit them.
57
363
  if ('temperature' in normalizedRequestData) {
58
364
  delete normalizedRequestData.temperature;
59
365
  }
366
+ if ('max_output_tokens' in normalizedRequestData) {
367
+ delete normalizedRequestData.max_output_tokens;
368
+ }
60
369
  const hasPreviousResponseId = (typeof normalizedRequestData.previous_response_id === 'string' &&
61
370
  normalizedRequestData.previous_response_id.length > 0) ||
62
371
  (typeof request?.previousResponseId === 'string' && request.previousResponseId.length > 0);
63
372
  const normalizedInput = !hasPreviousResponseId && Array.isArray(normalizedRequestData.input)
64
- ? dropUnpairedFunctionCalls(normalizedRequestData.input)
373
+ ? dropUnpairedCodexToolItems(normalizedRequestData.input)
65
374
  : normalizedRequestData.input;
66
- normalizedRequestData.input = stripCodexReplayIds(normalizedInput);
67
- const modelInclude = request?.modelSettings?.include;
375
+ normalizedRequestData.input = stripCodexReplayIds(Array.isArray(normalizedInput)
376
+ ? normalizedInput.map((item) => {
377
+ if (item?.type === 'function_call_result' || item?.type === 'function_call_output') {
378
+ // The Responses API rejects unknown parameters, so the camelCase
379
+ // spellings must be dropped, not just shadowed by the snake_case one
380
+ // added below — spreading `...item` alone leaves `callId` on the
381
+ // object alongside the new `call_id`.
382
+ const { callId: _callId, call_id: _call_id, tool_call_id: _toolCallId, ...rest } = item;
383
+ return {
384
+ ...rest,
385
+ type: 'function_call_output',
386
+ call_id: item.call_id ?? item.callId ?? item.tool_call_id,
387
+ // Responses supports rich function output content (input text,
388
+ // images, and files). Preserve the already-normalized array;
389
+ // only legacy object output needs JSON serialization.
390
+ output: typeof item.output === 'string' || Array.isArray(item.output)
391
+ ? item.output
392
+ : JSON.stringify(item.output ?? ''),
393
+ };
394
+ }
395
+ if (item?.type === 'function_call' && item.callId && !item.call_id) {
396
+ const { callId: _callId, ...rest } = item;
397
+ return { ...rest, call_id: item.callId };
398
+ }
399
+ return item;
400
+ })
401
+ : normalizedInput);
402
+ const modelInclude = request?.codex?.include;
68
403
  if (Array.isArray(modelInclude) && modelInclude.length > 0) {
69
404
  const existingInclude = Array.isArray(normalizedRequestData.include) ? normalizedRequestData.include : [];
70
405
  normalizedRequestData.include = Array.from(new Set([...existingInclude, ...modelInclude].filter((entry) => typeof entry === 'string' && entry.length > 0)));
71
406
  }
72
- const promptCacheKey = request?.modelSettings?.prompt_cache_key;
407
+ const promptCacheKey = request?.codex?.promptCacheKey;
73
408
  if (typeof promptCacheKey === 'string' && promptCacheKey.length > 0) {
74
409
  normalizedRequestData.prompt_cache_key = promptCacheKey;
75
410
  }
@@ -133,17 +468,13 @@ const summarizeReconstructedItems = (items) => {
133
468
  // Codex's `/backend-api/codex/responses` endpoint can ship terminal response
134
469
  // frames with either an empty `output` array or no `output` field at all, even
135
470
  // when the assistant message was already delivered via
136
- // `response.output_item.done`. The agents-SDK runner trusts terminal
137
- // `response.output` as the final output; when it is empty or missing it either
138
- // sees no items and re-runs the same request until maxTurns or crashes while
139
- // converting the terminal payload.
471
+ // `response.output_item.done`. The application transport must treat the
472
+ // terminal frame as authoritative; when it is empty or missing, retaining the
473
+ // completed output items prevents a false empty completion.
140
474
  //
141
- // This wrapper subclasses `OpenAIResponsesModel`, overrides the streaming
142
- // fetch path, and patches the terminal frame in flight: it accumulates raw
143
- // items from `response.output_item.done` and, only when terminal
144
- // `response.output` is empty or missing, swaps in the accumulated items so the
145
- // parent's existing conversion logic (`convertToOutputItem`) produces a normal
146
- // `response_done` event.
475
+ // The Codex transport accumulates raw items from `response.output_item.done`
476
+ // and, only when terminal `response.output` is empty or missing, uses those
477
+ // accumulated items for its application-owned completion event.
147
478
  const CODEX_SERVER_HISTORY_TOOL_RESULT_TYPES = new Set([
148
479
  'function_call_output',
149
480
  'function_call_result',
@@ -161,13 +492,16 @@ const normalizeCodexServerHistoryItem = (item) => {
161
492
  const record = asRecord(item);
162
493
  const type = stringValue(record?.type);
163
494
  const itemId = stringValue(record?.id);
164
- const callId = stringValue(record?.call_id) ?? stringValue(record?.callId) ?? stringValue(record?.tool_call_id);
495
+ const callId = stringValue(record?.call_id) ??
496
+ stringValue(record?.callId) ??
497
+ stringValue(record?.tool_call_id) ??
498
+ (type === 'tool_call' || type === 'tool_result' ? stringValue(record?.id) : undefined);
165
499
  return {
166
500
  type,
167
501
  itemId,
168
502
  callId,
169
- isFunctionCall: type === 'function_call',
170
- isToolResult: typeof type === 'string' && CODEX_SERVER_HISTORY_TOOL_RESULT_TYPES.has(type),
503
+ isFunctionCall: type === 'function_call' || type === 'tool_call',
504
+ isToolResult: type === 'tool_result' || (typeof type === 'string' && CODEX_SERVER_HISTORY_TOOL_RESULT_TYPES.has(type)),
171
505
  };
172
506
  };
173
507
  const isUserInputMessage = (item) => asRecord(item)?.role === 'user';
@@ -190,17 +524,16 @@ const isToolContinuationItem = (item) => {
190
524
  return normalized.isFunctionCall && Boolean(normalized.itemId);
191
525
  };
192
526
  const findServerManagedDeltaStart = (input) => {
193
- let trailingToolResultStart = input.length;
194
- // Walk backward through tool-continuation items (tool results and
195
- // their interleaved function calls) so parallel outputs from the same
196
- // model response stay together in the delta instead of leaking into
197
- // the warmup. Items without a call id (user messages, assistant
198
- // messages, reasoning) naturally stop the walk.
199
- while (trailingToolResultStart > 0 && isToolContinuationItem(input[trailingToolResultStart - 1])) {
200
- trailingToolResultStart--;
201
- }
202
- if (trailingToolResultStart < input.length) {
203
- return trailingToolResultStart;
527
+ let endUserIndex = input.length;
528
+ while (endUserIndex > 0 && isUserInputMessage(input[endUserIndex - 1])) {
529
+ endUserIndex--;
530
+ }
531
+ if (endUserIndex > 0 && isToolContinuationItem(input[endUserIndex - 1])) {
532
+ let toolStart = endUserIndex;
533
+ while (toolStart > 0 && isToolContinuationItem(input[toolStart - 1])) {
534
+ toolStart--;
535
+ }
536
+ return toolStart;
204
537
  }
205
538
  for (let index = input.length - 1; index >= 0; index--) {
206
539
  if (isUserInputMessage(input[index])) {
@@ -231,6 +564,45 @@ const collectToolResultCallIds = (input) => {
231
564
  }
232
565
  return ids;
233
566
  };
567
+ const collectFunctionCallIds = (input) => {
568
+ if (!Array.isArray(input)) {
569
+ return [];
570
+ }
571
+ const ids = [];
572
+ for (const item of input) {
573
+ const normalized = normalizeCodexServerHistoryItem(item);
574
+ if (normalized.isFunctionCall && normalized.callId) {
575
+ ids.push(normalized.callId);
576
+ }
577
+ }
578
+ return ids;
579
+ };
580
+ const dropUnpairedCodexToolItems = (history) => {
581
+ const callIds = new Set();
582
+ const resultIds = new Set();
583
+ for (const item of history) {
584
+ const normalized = normalizeCodexServerHistoryItem(item);
585
+ if (!normalized.callId)
586
+ continue;
587
+ if (normalized.isFunctionCall)
588
+ callIds.add(normalized.callId);
589
+ if (normalized.isToolResult)
590
+ resultIds.add(normalized.callId);
591
+ }
592
+ if (callIds.size === 0 && resultIds.size === 0)
593
+ return history;
594
+ const filtered = history.filter((item) => {
595
+ const normalized = normalizeCodexServerHistoryItem(item);
596
+ if (!normalized.callId)
597
+ return true;
598
+ if (normalized.isFunctionCall)
599
+ return resultIds.has(normalized.callId);
600
+ if (normalized.isToolResult)
601
+ return callIds.has(normalized.callId);
602
+ return true;
603
+ });
604
+ return filtered.length === history.length ? history : filtered;
605
+ };
234
606
  const filterServerManagedInput = (input, consumedToolResultCallIds) => {
235
607
  if (!Array.isArray(input)) {
236
608
  return input;
@@ -245,27 +617,24 @@ const filterServerManagedInput = (input, consumedToolResultCallIds) => {
245
617
  // function calls it issued). The request only needs the *new* items
246
618
  // produced since then.
247
619
  // Tool continuation: the input ends with a tool-call output answering the
248
- // previous response's function call(s). A previous response may issue
249
- // several parallel calls, and the reconstructed history pairs each call
250
- // with its result (fc₁,fco₁,fc₂,fco₂,…) instead of grouping every output
251
- // in one trailing block. Collect EVERY trailing tool-result item — walking
252
- // back across tool results and their interleaved function calls (everything
253
- // carrying a call id) — so the outputs for the earlier parallel calls are
254
- // not dropped. Stopping at the first interleaved function call would send
255
- // only the trailing output and the server rejects the request with a 400
256
- // ("No tool output found for function call …"). The interleaved
257
- // function-call items are then dropped because the server already holds
258
- // them via previous_response_id.
259
- if (isToolResultItem(input[input.length - 1])) {
260
- let start = input.length - 1;
620
+ // previous response's function call(s) — or tool-call output(s) followed by
621
+ // user steer message(s) admitted mid-turn.
622
+ let endUserIndex = input.length;
623
+ while (endUserIndex > 0 && isUserInputMessage(input[endUserIndex - 1])) {
624
+ endUserIndex--;
625
+ }
626
+ if (endUserIndex > 0 && isToolResultItem(input[endUserIndex - 1])) {
627
+ let start = endUserIndex - 1;
261
628
  while (start > 0 && isToolContinuationItem(input[start - 1])) {
262
629
  start--;
263
630
  }
264
- const trailing = input.slice(start);
631
+ const trailing = input.slice(start, endUserIndex);
265
632
  // A clean run of tool results (grouped layout) needs no filtering; for
266
633
  // the paired layout, drop the interleaved function-call items.
267
634
  const toolResults = trailing.every(isToolResultItem) ? trailing : trailing.filter(isToolResultItem);
268
- return filterConsumedToolResults(toolResults, consumedToolResultCallIds);
635
+ const filteredToolResults = filterConsumedToolResults(toolResults, consumedToolResultCallIds);
636
+ const trailingUserMessages = input.slice(endUserIndex);
637
+ return [...filteredToolResults, ...trailingUserMessages];
269
638
  }
270
639
  // Fresh user turn with no trailing tool output: the delta is the latest
271
640
  // user message onward.
@@ -278,11 +647,21 @@ const getResponseIdFromResponse = (response) => {
278
647
  return typeof responseId === 'string' && responseId.length > 0 ? responseId : undefined;
279
648
  };
280
649
  const getResponseIdFromStreamEvent = (event) => {
281
- const record = asRecord(event);
282
- if (record?.type !== 'response_done') {
650
+ const candidate = asRecord(event);
651
+ if (!candidate ||
652
+ !['response.completed', 'response.incomplete', 'response.failed'].includes(String(candidate.type))) {
653
+ return undefined;
654
+ }
655
+ return getResponseIdFromResponse(candidate.response) ?? getResponseIdFromResponse(candidate);
656
+ };
657
+ const getResponseOutputFromStreamEvent = (event) => {
658
+ const candidate = asRecord(event);
659
+ if (!candidate ||
660
+ !['response.completed', 'response.incomplete', 'response.failed'].includes(String(candidate.type))) {
283
661
  return undefined;
284
662
  }
285
- return getResponseIdFromResponse(record.response) ?? getResponseIdFromResponse(record);
663
+ const response = asRecord(candidate.response);
664
+ return Array.isArray(response?.output) ? response.output : undefined;
286
665
  };
287
666
  const getErrorMessage = (error) => {
288
667
  if (typeof error === 'string') {
@@ -301,6 +680,11 @@ const isDefinitelyUnsentWebSocketError = (error, seen = new Set()) => {
301
680
  if (!error || seen.has(error))
302
681
  return false;
303
682
  seen.add(error);
683
+ // The server explicitly rejects this request before model generation and
684
+ // instructs the client to reconnect. Retrying from durable history is safe;
685
+ // treating it as an ambiguous model outcome would suppress recovery.
686
+ if (isWebSocketConnectionLimitReachedError(error))
687
+ return true;
304
688
  if (typeof error === 'string') {
305
689
  const message = error.toLowerCase();
306
690
  return (message.includes('before opening') ||
@@ -319,45 +703,70 @@ const isDefinitelyUnsentWebSocketError = (error, seen = new Set()) => {
319
703
  return isDefinitelyUnsentWebSocketError(record.message, seen) || isDefinitelyUnsentWebSocketError(record.cause, seen);
320
704
  };
321
705
  const asAmbiguousModelOutcome = (error) => {
322
- if (!isRetryableTransportError(error).transportFallback || isDefinitelyUnsentWebSocketError(error)) {
706
+ // Connection never carried the request: safe to let outer retry / transport
707
+ // fallback policies decide. Do not pretend the model may have run.
708
+ if (isDefinitelyUnsentWebSocketError(error)) {
323
709
  return undefined;
324
710
  }
325
- return new AmbiguousModelOutcomeError(getErrorMessage(error) || 'Codex request outcome is unknown.', {
326
- cause: error,
327
- });
711
+ // Incomplete stream terminals keep transportFallback=false so Codex does not
712
+ // force an HTTP/WS switch — but the request may already have been accepted,
713
+ // so replaying is unsafe. Wrap them the same way as transport-fallback
714
+ // failures so RetryingModel and the conversation classifier terminate.
715
+ if (isIncompleteStreamTerminalError(error) || isRetryableTransportError(error).transportFallback) {
716
+ return new AmbiguousModelOutcomeError(getErrorMessage(error) || 'Codex request outcome is unknown.', {
717
+ cause: error,
718
+ });
719
+ }
720
+ return undefined;
328
721
  };
329
- const hasGenerateFalse = (request) => request.modelSettings?.providerData?.generate === false;
330
- const withProviderData = (request, providerData) => ({
722
+ const hasGenerateFalse = (request) => request.providerOptions?.generate === false;
723
+ const withProviderOptions = (request, providerOptions) => ({
331
724
  ...request,
332
- modelSettings: {
333
- ...request.modelSettings,
334
- providerData: {
335
- ...request.modelSettings?.providerData,
336
- ...providerData,
337
- },
725
+ providerOptions: {
726
+ ...request.providerOptions,
727
+ ...providerOptions,
338
728
  },
339
729
  });
340
730
  export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
341
731
  modelId;
342
732
  tokenManager;
343
- diagnosticLogger;
344
- sessionContextService;
345
- websocketReceiveTimeouts;
346
733
  codexPreviousResponseIds = new Map();
347
734
  codexConsumedToolResultCallIdsByResponseId = new Map();
735
+ codexFunctionCallIdsByResponseId = new Map();
348
736
  codexTurnIdsBySession = new Map();
349
737
  #serverHistoryReuseDisabled = false;
350
738
  providerTraffic;
739
+ diagnosticLogger;
740
+ sessionContextService;
741
+ requestCapture;
351
742
  chainedWireState = new ChainedWireState(new LunaResponsesLiteWireProtocol());
352
743
  requestTokens = new WeakMap();
353
- constructor(client, modelId, tokenManager, diagnosticLogger, providerTraffic, sessionContextService, websocketReceiveTimeouts = DEFAULT_WEBSOCKET_RECEIVE_TIMEOUTS) {
354
- super(client, modelId);
744
+ websocketReceiveTimeouts;
745
+ constructor(client, modelId, tokenManager, diagnosticLogger, providerTraffic, sessionContextService, websocketReceiveTimeouts = DEFAULT_WEBSOCKET_RECEIVE_TIMEOUTS, requestCapture, transport) {
746
+ const candidates = [
747
+ transport,
748
+ diagnosticLogger,
749
+ providerTraffic,
750
+ sessionContextService,
751
+ websocketReceiveTimeouts,
752
+ requestCapture,
753
+ ];
754
+ const injectedTransport = candidates.find((candidate) => candidate instanceof CodexResponsesTransport);
755
+ super(client, modelId, injectedTransport);
355
756
  this.modelId = modelId;
356
757
  this.tokenManager = tokenManager;
357
- this.diagnosticLogger = diagnosticLogger;
358
- this.sessionContextService = sessionContextService;
359
- this.websocketReceiveTimeouts = websocketReceiveTimeouts;
360
- this.providerTraffic = providerTraffic ?? DUMMY_PROVIDER_TRAFFIC;
758
+ this.diagnosticLogger = diagnosticLogger instanceof CodexResponsesTransport ? undefined : diagnosticLogger;
759
+ this.providerTraffic =
760
+ providerTraffic instanceof CodexResponsesTransport
761
+ ? DUMMY_PROVIDER_TRAFFIC
762
+ : providerTraffic ?? DUMMY_PROVIDER_TRAFFIC;
763
+ this.sessionContextService =
764
+ sessionContextService instanceof CodexResponsesTransport ? undefined : sessionContextService;
765
+ this.websocketReceiveTimeouts =
766
+ websocketReceiveTimeouts instanceof CodexResponsesTransport
767
+ ? DEFAULT_WEBSOCKET_RECEIVE_TIMEOUTS
768
+ : websocketReceiveTimeouts;
769
+ this.requestCapture = requestCapture instanceof CodexResponsesTransport ? undefined : requestCapture;
361
770
  }
362
771
  #modelNameFallback() {
363
772
  return this.modelId;
@@ -402,13 +811,39 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
402
811
  modelWrapperClass: WS_RESPONSE_WRAPPER_CLASS,
403
812
  });
404
813
  }
405
- async #withTrafficLogging(responseStream, requestId, requestData, wireStateKey, wireStateToken) {
814
+ #logTrafficClosed(requestId, requestData, outcome, eventCount) {
815
+ const providerTraffic = this.providerTraffic ?? DUMMY_PROVIDER_TRAFFIC;
816
+ const model = typeof requestData.model === 'string' ? requestData.model : this.#modelNameFallback();
817
+ providerTraffic.recordResponseClosed({
818
+ requestId,
819
+ provider: 'codex',
820
+ model,
821
+ outcome,
822
+ eventCount,
823
+ modelClass: WS_RESPONSE_MODEL_CLASS,
824
+ modelWrapperClass: WS_RESPONSE_WRAPPER_CLASS,
825
+ });
826
+ }
827
+ async #withTrafficLogging(responseStream, requestId, requestData, wireStateKey, wireStateToken, signal) {
406
828
  const logReceived = this.#logTrafficReceived.bind(this);
407
829
  const logFailed = this.#logTrafficFailed.bind(this);
830
+ const logClosed = this.#logTrafficClosed.bind(this);
408
831
  const wireState = this.chainedWireState;
409
832
  async function* wrapped() {
833
+ let sawTerminalEvent = false;
834
+ let sourceExhausted = false;
835
+ let streamFailed = false;
836
+ let eventCount = 0;
410
837
  try {
411
838
  for await (const event of responseStream) {
839
+ eventCount += 1;
840
+ if (event &&
841
+ typeof event === 'object' &&
842
+ (event.type === 'response.completed' ||
843
+ event.type === 'response.incomplete' ||
844
+ event.type === 'response.failed')) {
845
+ sawTerminalEvent = true;
846
+ }
412
847
  if (event &&
413
848
  typeof event === 'object' &&
414
849
  (event.type === 'response.completed' || event.type === 'response.incomplete') &&
@@ -421,15 +856,20 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
421
856
  }
422
857
  yield event;
423
858
  }
859
+ sourceExhausted = true;
424
860
  }
425
861
  catch (error) {
426
- if (wireStateKey) {
862
+ streamFailed = true;
863
+ if (wireStateKey && !isWebSocketConnectionLimitReachedError(error)) {
427
864
  wireState.invalidate(wireStateKey);
428
865
  }
429
866
  logFailed(requestId, requestData, error);
430
867
  throw error;
431
868
  }
432
869
  finally {
870
+ if (!sawTerminalEvent && !sourceExhausted && !streamFailed) {
871
+ logClosed(requestId, requestData, signal?.aborted ? 'aborted' : 'consumer_closed', eventCount);
872
+ }
433
873
  if (wireStateKey && wireStateToken) {
434
874
  wireState.abandon(wireStateKey, wireStateToken);
435
875
  }
@@ -441,9 +881,9 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
441
881
  if (!request) {
442
882
  return undefined;
443
883
  }
444
- const response = await super.getResponse(request);
884
+ const response = await super.fetchUnaryResponse(request);
445
885
  const responseId = getResponseIdFromResponse(response);
446
- this.#rememberCodexResponseId(responseId);
886
+ this.#rememberCodexResponseId(responseId, asRecord(response)?.output, request.input, true);
447
887
  return responseId;
448
888
  }
449
889
  async #warmupCodexStream(request) {
@@ -451,10 +891,13 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
451
891
  return undefined;
452
892
  }
453
893
  let responseId;
454
- for await (const event of super.getStreamedResponse(request)) {
455
- responseId = getResponseIdFromStreamEvent(event) ?? responseId;
894
+ for await (const event of super.rawStream(request)) {
895
+ const eventResponseId = getResponseIdFromStreamEvent(event);
896
+ if (eventResponseId) {
897
+ responseId = eventResponseId;
898
+ this.#rememberCodexResponseId(responseId, getResponseOutputFromStreamEvent(event), request.input, true);
899
+ }
456
900
  }
457
- this.#rememberCodexResponseId(responseId);
458
901
  return responseId;
459
902
  }
460
903
  #prepareCodexServerHistoryRequest(request) {
@@ -468,6 +911,13 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
468
911
  }
469
912
  const consumedToolResultCallIds = this.#getConsumedToolResultCallIds(previousResponseId);
470
913
  const filteredInput = filterServerManagedInput(input, consumedToolResultCallIds);
914
+ const knownFunctionCallIds = this.codexFunctionCallIdsByResponseId.get(previousResponseId);
915
+ if (request.previousResponseId === previousResponseId && knownFunctionCallIds) {
916
+ const orphanedCallIds = collectToolResultCallIds(filteredInput).filter((callId) => !knownFunctionCallIds.has(callId));
917
+ if (orphanedCallIds.length > 0) {
918
+ throw new OrphanedChainedToolOutputError([...new Set(orphanedCallIds)]);
919
+ }
920
+ }
471
921
  this.#warnIfConsumedToolResultsWereDropped(previousResponseId, input, filteredInput, consumedToolResultCallIds);
472
922
  if (request.previousResponseId === previousResponseId && filteredInput === input) {
473
923
  return request;
@@ -486,11 +936,18 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
486
936
  if (!key || hasGenerateFalse(request)) {
487
937
  return undefined;
488
938
  }
939
+ const hasToolResultBeforeTrailingUserMessages = (items) => {
940
+ let endUserIndex = items.length;
941
+ while (endUserIndex > 0 && isUserInputMessage(items[endUserIndex - 1])) {
942
+ endUserIndex--;
943
+ }
944
+ return endUserIndex > 0 && isToolResultItem(items[endUserIndex - 1]);
945
+ };
489
946
  const input = request.input;
490
947
  const isInternalToolContinuation = Array.isArray(input) &&
491
948
  input.length > 1 &&
492
949
  input.some(isUserInputMessage) &&
493
- isToolResultItem(input[input.length - 1]);
950
+ hasToolResultBeforeTrailingUserMessages(input);
494
951
  return isInternalToolContinuation ? this.codexPreviousResponseIds.get(key) : undefined;
495
952
  }
496
953
  #prepareCodexServerHistoryRequests(request) {
@@ -502,7 +959,7 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
502
959
  if (preparedRequest.previousResponseId) {
503
960
  return { request: preparedRequest };
504
961
  }
505
- const input = Array.isArray(request.input) ? dropUnpairedFunctionCalls(request.input) : request.input;
962
+ const input = Array.isArray(request.input) ? dropUnpairedCodexToolItems(request.input) : request.input;
506
963
  const replayRequest = input === request.input ? request : { ...request, input };
507
964
  if (!Array.isArray(input) || input.length === 0) {
508
965
  return { request: replayRequest };
@@ -528,7 +985,7 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
528
985
  }
529
986
  }
530
987
  return {
531
- warmupRequest: withProviderData({
988
+ warmupRequest: withProviderOptions({
532
989
  ...replayRequest,
533
990
  input: warmupItems,
534
991
  }, { generate: false }),
@@ -547,7 +1004,7 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
547
1004
  previousResponseId,
548
1005
  });
549
1006
  }
550
- #rememberCodexResponseId(responseId) {
1007
+ #rememberCodexResponseId(responseId, output, input, recordChainAnchor = false) {
551
1008
  if (!responseId) {
552
1009
  return;
553
1010
  }
@@ -556,6 +1013,9 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
556
1013
  if (key) {
557
1014
  this.codexPreviousResponseIds.set(key, responseId);
558
1015
  }
1016
+ if (recordChainAnchor && (Array.isArray(output) || Array.isArray(input))) {
1017
+ this.codexFunctionCallIdsByResponseId.set(responseId, new Set([...collectFunctionCallIds(output), ...collectFunctionCallIds(input)]));
1018
+ }
559
1019
  }
560
1020
  #getConsumedToolResultCallIds(responseId) {
561
1021
  if (!responseId) {
@@ -589,15 +1049,26 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
589
1049
  consumed.add(callId);
590
1050
  }
591
1051
  this.codexConsumedToolResultCallIdsByResponseId.set(responseId, consumed);
1052
+ // A continuation may explicitly reuse the prior response ID; retain the
1053
+ // consumed-output checkpoint under that anchor as well as the new response.
1054
+ if (previousResponseId)
1055
+ this.codexConsumedToolResultCallIdsByResponseId.set(previousResponseId, consumed);
592
1056
  }
593
1057
  #forgetCodexResponseId() {
594
1058
  this.#serverHistoryReuseDisabled = true;
595
1059
  this.codexPreviousResponseIds.clear();
596
1060
  this.codexConsumedToolResultCallIdsByResponseId.clear();
1061
+ this.codexFunctionCallIdsByResponseId.clear();
597
1062
  this.codexTurnIdsBySession.clear();
598
1063
  this.chainedWireState.clear();
599
1064
  }
600
1065
  #shouldForgetCodexServerHistory(error) {
1066
+ // This rejects the new request before generation; it expires the socket,
1067
+ // not the last acknowledged response. Retaining that response keeps an
1068
+ // already-executed tool output paired with the call that introduced it.
1069
+ if (isWebSocketConnectionLimitReachedError(error)) {
1070
+ return false;
1071
+ }
601
1072
  const message = getErrorMessage(error);
602
1073
  return (isPreviousResponseNotFoundError(error) ||
603
1074
  message.includes('previous_response_not_found') ||
@@ -665,7 +1136,7 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
665
1136
  const { previousResponseId: _previousResponseId, ...rest } = request;
666
1137
  return rest;
667
1138
  }
668
- async getResponse(request) {
1139
+ async fetchUnaryResponse(request) {
669
1140
  const run = async () => {
670
1141
  let attemptedWithServerHistory = false;
671
1142
  try {
@@ -673,9 +1144,9 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
673
1144
  attemptedWithServerHistory = Boolean(preparedRequest.warmupRequest || preparedRequest.request?.previousResponseId);
674
1145
  const warmupResponseId = await this.#warmupCodexUnary(preparedRequest.warmupRequest);
675
1146
  const effectiveRequest = this.#getEffectiveCodexRequestAfterWarmup(request, preparedRequest, warmupResponseId);
676
- const response = await super.getResponse(effectiveRequest);
1147
+ const response = await super.fetchUnaryResponse(effectiveRequest);
677
1148
  const responseId = getResponseIdFromResponse(response);
678
- this.#rememberCodexResponseId(responseId);
1149
+ this.#rememberCodexResponseId(responseId, asRecord(response)?.output, effectiveRequest.input);
679
1150
  this.#rememberConsumedToolResultCallIds(responseId, effectiveRequest.previousResponseId, effectiveRequest.input);
680
1151
  return response;
681
1152
  }
@@ -686,9 +1157,9 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
686
1157
  throw error;
687
1158
  }
688
1159
  const fallbackRequest = this.#withoutCodexServerHistory(request);
689
- const response = await super.getResponse(fallbackRequest);
1160
+ const response = await super.fetchUnaryResponse(fallbackRequest);
690
1161
  const responseId = getResponseIdFromResponse(response);
691
- this.#rememberCodexResponseId(responseId);
1162
+ this.#rememberCodexResponseId(responseId, asRecord(response)?.output, fallbackRequest.input);
692
1163
  this.#rememberConsumedToolResultCallIds(responseId, undefined, fallbackRequest.input);
693
1164
  return response;
694
1165
  }
@@ -698,14 +1169,10 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
698
1169
  throw asAmbiguousModelOutcome(error) ?? error;
699
1170
  }
700
1171
  };
701
- const currentTrace = getCurrentTrace();
702
- if (currentTrace) {
703
- return run();
704
- }
705
- return withTrace('codex-responses-ws-model-trace', run);
1172
+ return run();
706
1173
  }
707
- async *getStreamedResponse(request) {
708
- let yieldedAnyEvent = false;
1174
+ async *rawStream(request) {
1175
+ let receivedRawFrame = false;
709
1176
  let attemptedWithServerHistory = false;
710
1177
  try {
711
1178
  const preparedRequest = this.#prepareCodexServerHistoryRequests(request);
@@ -713,38 +1180,56 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
713
1180
  const warmupResponseId = await this.#warmupCodexStream(preparedRequest.warmupRequest);
714
1181
  const effectiveRequest = this.#getEffectiveCodexRequestAfterWarmup(request, preparedRequest, warmupResponseId);
715
1182
  let responseId;
716
- for await (const event of super.getStreamedResponse(effectiveRequest)) {
717
- responseId = getResponseIdFromStreamEvent(event) ?? responseId;
718
- this.#rememberCodexResponseId(responseId);
719
- yieldedAnyEvent = true;
1183
+ for await (const event of super.rawStream(effectiveRequest)) {
1184
+ const eventResponseId = getResponseIdFromStreamEvent(event);
1185
+ if (eventResponseId) {
1186
+ responseId = eventResponseId;
1187
+ this.#rememberCodexResponseId(responseId, getResponseOutputFromStreamEvent(event), effectiveRequest.input);
1188
+ }
1189
+ if (TERMINAL_RESPONSE_EVENT_TYPES.has(event?.type)) {
1190
+ this.#rememberConsumedToolResultCallIds(responseId, effectiveRequest.previousResponseId, effectiveRequest.input);
1191
+ }
1192
+ receivedRawFrame = true;
720
1193
  yield event;
721
1194
  }
722
1195
  this.#rememberConsumedToolResultCallIds(responseId, effectiveRequest.previousResponseId, effectiveRequest.input);
723
1196
  }
724
1197
  catch (error) {
725
- if (isPreviousResponseUnavailableError(error) && attemptedWithServerHistory && !yieldedAnyEvent) {
1198
+ if (isPreviousResponseUnavailableError(error) && attemptedWithServerHistory && !receivedRawFrame) {
726
1199
  this.#forgetCodexResponseId();
727
1200
  if (isPreviousResponseUnavailableError(error) && hasToolResultInput(request)) {
728
1201
  throw error;
729
1202
  }
730
1203
  const fallbackRequest = this.#withoutCodexServerHistory(request);
731
1204
  let responseId;
732
- for await (const event of super.getStreamedResponse(fallbackRequest)) {
733
- responseId = getResponseIdFromStreamEvent(event) ?? responseId;
734
- this.#rememberCodexResponseId(responseId);
735
- yield event;
1205
+ try {
1206
+ for await (const event of super.rawStream(fallbackRequest)) {
1207
+ receivedRawFrame = true;
1208
+ const eventResponseId = getResponseIdFromStreamEvent(event);
1209
+ if (eventResponseId) {
1210
+ responseId = eventResponseId;
1211
+ this.#rememberCodexResponseId(responseId, getResponseOutputFromStreamEvent(event), fallbackRequest.input);
1212
+ }
1213
+ if (TERMINAL_RESPONSE_EVENT_TYPES.has(event?.type)) {
1214
+ this.#rememberConsumedToolResultCallIds(responseId, undefined, fallbackRequest.input);
1215
+ }
1216
+ yield event;
1217
+ }
1218
+ this.#rememberConsumedToolResultCallIds(responseId, undefined, fallbackRequest.input);
1219
+ return;
1220
+ }
1221
+ catch (fallbackError) {
1222
+ throw asAmbiguousModelOutcome(fallbackError) ?? fallbackError;
736
1223
  }
737
- this.#rememberConsumedToolResultCallIds(responseId, undefined, fallbackRequest.input);
738
- return;
739
1224
  }
740
1225
  if (this.#shouldForgetCodexServerHistory(error)) {
741
1226
  this.#forgetCodexResponseId();
742
1227
  }
743
- throw (!yieldedAnyEvent ? asAmbiguousModelOutcome(error) : undefined) ?? error;
1228
+ throw asAmbiguousModelOutcome(error) ?? error;
744
1229
  }
745
1230
  }
746
- _buildResponsesCreateRequest(request, stream) {
747
- const built = super._buildResponsesCreateRequest(request, stream);
1231
+ buildResponsesCreateRequest(request, stream) {
1232
+ const built = super.buildResponsesCreateRequest(request, stream);
748
1233
  const requestData = normalizeCodexRequestData(built.requestData, request, this.modelId, {
749
1234
  includeDeveloperInstructionsOnChainedRequest: true,
750
1235
  });
@@ -760,7 +1245,7 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
760
1245
  requestData: prepared.requestData,
761
1246
  };
762
1247
  }
763
- async _fetchResponse(request, stream) {
1248
+ async fetchResponse(request, stream) {
764
1249
  const requestId = randomUUID();
765
1250
  const wireStateKey = RESPONSES_LITE_MODELS.has(this.modelId)
766
1251
  ? this.#getCodexServerHistoryKey() ?? undefined
@@ -783,46 +1268,46 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
783
1268
  if (accountId) {
784
1269
  extraHeaders['chatgpt-account-id'] = accountId;
785
1270
  }
1271
+ const watchdog = createWebSocketReceiveWatchdog(request.signal, this.websocketReceiveTimeouts);
786
1272
  const updatedRequest = {
787
1273
  ...request,
788
- signal: undefined,
789
- modelSettings: {
790
- ...request.modelSettings,
791
- providerData: {
792
- ...request.modelSettings?.providerData,
793
- ...(codexIdentity
794
- ? {
795
- client_metadata: {
796
- ...request.modelSettings?.providerData?.client_metadata,
797
- ...codexIdentity.clientMetadata,
798
- },
799
- }
800
- : {}),
801
- ...(isResponsesLite
802
- ? {
803
- client_metadata: {
804
- ...request.modelSettings?.providerData?.client_metadata,
805
- ...(codexIdentity?.clientMetadata ?? {}),
806
- ws_request_header_x_openai_internal_codex_responses_lite: 'true',
807
- },
808
- }
809
- : {}),
810
- extraHeaders: {
811
- ...request.modelSettings?.providerData?.extraHeaders,
812
- ...extraHeaders,
813
- },
1274
+ signal: watchdog.signal,
1275
+ providerOptions: {
1276
+ ...request.providerOptions,
1277
+ ...(codexIdentity
1278
+ ? {
1279
+ client_metadata: {
1280
+ ...asRecord(request.providerOptions?.client_metadata),
1281
+ ...codexIdentity.clientMetadata,
1282
+ },
1283
+ }
1284
+ : {}),
1285
+ ...(isResponsesLite
1286
+ ? {
1287
+ client_metadata: {
1288
+ ...asRecord(request.providerOptions?.client_metadata),
1289
+ ...(codexIdentity?.clientMetadata ?? {}),
1290
+ ws_request_header_x_openai_internal_codex_responses_lite: 'true',
1291
+ },
1292
+ }
1293
+ : {}),
1294
+ extraHeaders: {
1295
+ ...asRecord(request.providerOptions?.extraHeaders),
1296
+ ...extraHeaders,
814
1297
  },
815
1298
  },
816
1299
  };
817
- const watchdog = createWebSocketReceiveWatchdog(request.signal, this.websocketReceiveTimeouts);
818
- updatedRequest.signal = watchdog.signal;
819
- const builtRequest = this._buildResponsesCreateRequest(updatedRequest, true);
1300
+ const builtRequest = this.buildResponsesCreateRequest(updatedRequest, true);
820
1301
  const requestData = (asRecord(builtRequest?.requestData) ?? {});
821
1302
  const wireStateToken = this.requestTokens.get(updatedRequest);
1303
+ // This is the last application-owned point before the inherited
1304
+ // transport's private fetch path. Capture it without changing the
1305
+ // prepared request or wire state.
1306
+ captureProviderRequest(this.requestCapture, { provider: 'codex', transport: 'websocket', requestData });
822
1307
  this.#logTrafficStarted(requestId, requestData, extraHeaders);
823
1308
  if (!stream) {
824
1309
  try {
825
- const response = await fetchAndReconstructUnaryResponse(async () => watchdog.wrap(await super._fetchResponse(updatedRequest, true)), this.diagnosticLogger);
1310
+ const response = await fetchAndReconstructUnaryResponse(async () => watchdog.wrap(await super.fetchResponse(updatedRequest, true)), this.diagnosticLogger);
826
1311
  if (wireStateKey && wireStateToken && typeof response?.id === 'string' && response.id.length > 0) {
827
1312
  this.chainedWireState.recordResponse(wireStateKey, wireStateToken, response.id, response.output);
828
1313
  }
@@ -832,49 +1317,73 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
832
1317
  catch (error) {
833
1318
  const timeoutError = watchdog.timeoutError();
834
1319
  watchdog.close();
1320
+ const failure = timeoutError ?? error;
835
1321
  if (wireStateKey) {
836
- this.chainedWireState.invalidate(wireStateKey);
1322
+ if (isWebSocketConnectionLimitReachedError(failure)) {
1323
+ if (wireStateToken)
1324
+ this.chainedWireState.abandon(wireStateKey, wireStateToken);
1325
+ }
1326
+ else {
1327
+ this.chainedWireState.invalidate(wireStateKey);
1328
+ }
837
1329
  }
838
- this.#logTrafficFailed(requestId, requestData, timeoutError ?? error);
839
- throw timeoutError ?? error;
1330
+ this.#logTrafficFailed(requestId, requestData, failure);
1331
+ throw failure;
840
1332
  }
841
1333
  }
842
1334
  try {
843
- const response = (await super._fetchResponse(updatedRequest, stream));
1335
+ const response = (await super.fetchResponse(updatedRequest, stream));
844
1336
  const patched = wrapCodexStream(watchdog.wrap(response), this.diagnosticLogger);
845
- return this.#withTrafficLogging(patched, requestId, requestData, wireStateKey, wireStateToken);
1337
+ return this.#withTrafficLogging(patched, requestId, requestData, wireStateKey, wireStateToken, updatedRequest.signal);
846
1338
  }
847
1339
  catch (error) {
848
1340
  const timeoutError = watchdog.timeoutError();
849
1341
  watchdog.close();
1342
+ const failure = timeoutError ?? error;
850
1343
  if (wireStateKey) {
851
- this.chainedWireState.invalidate(wireStateKey);
1344
+ if (isWebSocketConnectionLimitReachedError(failure)) {
1345
+ if (wireStateToken)
1346
+ this.chainedWireState.abandon(wireStateKey, wireStateToken);
1347
+ }
1348
+ else {
1349
+ this.chainedWireState.invalidate(wireStateKey);
1350
+ }
852
1351
  }
853
- this.#logTrafficFailed(requestId, requestData, timeoutError ?? error);
854
- throw timeoutError ?? error;
1352
+ this.#logTrafficFailed(requestId, requestData, failure);
1353
+ throw failure;
855
1354
  }
856
1355
  }
857
1356
  }
858
1357
  export class CodexResponsesModel extends OpenAIResponsesModel {
859
1358
  modelId;
860
1359
  diagnosticLogger;
861
- constructor(client, modelId, diagnosticLogger) {
862
- super(client, modelId);
1360
+ requestCapture;
1361
+ constructor(client, modelId, diagnosticLogger, requestCapture, transport) {
1362
+ const candidates = [transport, diagnosticLogger, requestCapture];
1363
+ const injectedTransport = candidates.find((candidate) => candidate instanceof CodexResponsesTransport);
1364
+ super(client, modelId, injectedTransport);
863
1365
  this.modelId = modelId;
864
- this.diagnosticLogger = diagnosticLogger;
1366
+ this.diagnosticLogger = diagnosticLogger instanceof CodexResponsesTransport ? undefined : diagnosticLogger;
1367
+ this.requestCapture = requestCapture instanceof CodexResponsesTransport ? undefined : requestCapture;
865
1368
  }
866
- _buildResponsesCreateRequest(request, stream) {
867
- const built = OpenAIResponsesModel.prototype._buildResponsesCreateRequest.call(this, request, stream);
868
- return {
1369
+ buildResponsesCreateRequest(request, stream) {
1370
+ const built = super.buildResponsesCreateRequest(request, stream);
1371
+ const result = {
869
1372
  ...built,
870
1373
  requestData: normalizeCodexRequestData(built.requestData, request, this.modelId),
871
1374
  };
1375
+ captureProviderRequest(this.requestCapture, {
1376
+ provider: 'codex',
1377
+ transport: 'http',
1378
+ requestData: result.requestData,
1379
+ });
1380
+ return result;
872
1381
  }
873
- async _fetchResponse(request, stream) {
1382
+ async fetchResponse(request, stream) {
874
1383
  if (!stream) {
875
- return fetchAndReconstructUnaryResponse(() => OpenAIResponsesModel.prototype._fetchResponse.call(this, request, true), this.diagnosticLogger);
1384
+ return fetchAndReconstructUnaryResponse(() => super.fetchResponse(request, true), this.diagnosticLogger);
876
1385
  }
877
- const response = await OpenAIResponsesModel.prototype._fetchResponse.call(this, request, stream);
1386
+ const response = await super.fetchResponse(request, stream);
878
1387
  return wrapCodexStream(response, this.diagnosticLogger);
879
1388
  }
880
1389
  }
@@ -917,8 +1426,9 @@ export async function* wrapCodexStream(source, logger) {
917
1426
  const item = event.item;
918
1427
  const itemRecord = asRecord(item);
919
1428
  // If the accumulated function_call item is missing call_id, backfill it
920
- // from the itemCallIds map so the SDK's convertToOutputItem picks up the
921
- // correct identifier and the continuation request sends the right call_id.
1429
+ // from the itemCallIds map so the inherited transport's
1430
+ // convertToOutputItem picks up the correct identifier and the continuation
1431
+ // request sends the right call_id.
922
1432
  if (itemRecord?.type === 'function_call' &&
923
1433
  !stringValue(itemRecord?.call_id) &&
924
1434
  typeof itemRecord?.id === 'string') {