@qduc/term2 0.7.1 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (956) hide show
  1. package/dist/agent.d.ts +1 -0
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +17 -1
  4. package/dist/agent.js.map +1 -1
  5. package/dist/agent.test.js +36 -0
  6. package/dist/agent.test.js.map +1 -1
  7. package/dist/app.d.ts +3 -3
  8. package/dist/app.d.ts.map +1 -1
  9. package/dist/app.js +193 -86
  10. package/dist/app.js.map +1 -1
  11. package/dist/app.large-uncached-warning.test.js.map +1 -1
  12. package/dist/cli.integration.test.js +101 -5
  13. package/dist/cli.integration.test.js.map +1 -1
  14. package/dist/cli.js +61 -12
  15. package/dist/cli.js.map +1 -1
  16. package/dist/components/ApprovalPrompt.ask-user.test.d.ts +2 -0
  17. package/dist/components/ApprovalPrompt.ask-user.test.d.ts.map +1 -0
  18. package/dist/components/ApprovalPrompt.ask-user.test.js +108 -0
  19. package/dist/components/ApprovalPrompt.ask-user.test.js.map +1 -0
  20. package/dist/components/ApprovalPrompt.d.ts +4 -4
  21. package/dist/components/ApprovalPrompt.d.ts.map +1 -1
  22. package/dist/components/ApprovalPrompt.js +76 -13
  23. package/dist/components/ApprovalPrompt.js.map +1 -1
  24. package/dist/components/BottomArea.d.ts +11 -2
  25. package/dist/components/BottomArea.d.ts.map +1 -1
  26. package/dist/components/BottomArea.js +20 -6
  27. package/dist/components/BottomArea.js.map +1 -1
  28. package/dist/components/BottomArea.test.js +37 -4
  29. package/dist/components/BottomArea.test.js.map +1 -1
  30. package/dist/components/Common/MenuContainer.d.ts +3 -4
  31. package/dist/components/Common/MenuContainer.d.ts.map +1 -1
  32. package/dist/components/Common/MenuContainer.js +14 -14
  33. package/dist/components/Common/MenuContainer.js.map +1 -1
  34. package/dist/components/Common/MenuContainer.test.d.ts +2 -0
  35. package/dist/components/Common/MenuContainer.test.d.ts.map +1 -0
  36. package/dist/components/Common/MenuContainer.test.js +66 -0
  37. package/dist/components/Common/MenuContainer.test.js.map +1 -0
  38. package/dist/components/Input/PopupManager.d.ts +14 -0
  39. package/dist/components/Input/PopupManager.d.ts.map +1 -1
  40. package/dist/components/Input/PopupManager.js +6 -4
  41. package/dist/components/Input/PopupManager.js.map +1 -1
  42. package/dist/components/Input/input-width.d.ts +2 -1
  43. package/dist/components/Input/input-width.d.ts.map +1 -1
  44. package/dist/components/Input/input-width.js +6 -2
  45. package/dist/components/Input/input-width.js.map +1 -1
  46. package/dist/components/Input/popup-props.d.ts +3 -1
  47. package/dist/components/Input/popup-props.d.ts.map +1 -1
  48. package/dist/components/Input/popup-props.js +12 -1
  49. package/dist/components/Input/popup-props.js.map +1 -1
  50. package/dist/components/Input/popup-props.test.js +9 -0
  51. package/dist/components/Input/popup-props.test.js.map +1 -1
  52. package/dist/components/InputBox.d.ts +8 -0
  53. package/dist/components/InputBox.d.ts.map +1 -1
  54. package/dist/components/InputBox.js +97 -33
  55. package/dist/components/InputBox.js.map +1 -1
  56. package/dist/components/InputBox.test.js +174 -7
  57. package/dist/components/InputBox.test.js.map +1 -1
  58. package/dist/components/LargeUncachedConfirmationPrompt.d.ts +10 -0
  59. package/dist/components/LargeUncachedConfirmationPrompt.d.ts.map +1 -0
  60. package/dist/components/LargeUncachedConfirmationPrompt.js +49 -0
  61. package/dist/components/LargeUncachedConfirmationPrompt.js.map +1 -0
  62. package/dist/components/LargeUncachedConfirmationPrompt.test.d.ts +2 -0
  63. package/dist/components/LargeUncachedConfirmationPrompt.test.d.ts.map +1 -0
  64. package/dist/components/LargeUncachedConfirmationPrompt.test.js +48 -0
  65. package/dist/components/LargeUncachedConfirmationPrompt.test.js.map +1 -0
  66. package/dist/components/MessageList.d.ts +10 -0
  67. package/dist/components/MessageList.d.ts.map +1 -1
  68. package/dist/components/MessageList.js +34 -3
  69. package/dist/components/MessageList.js.map +1 -1
  70. package/dist/components/MessageList.test.js +54 -1
  71. package/dist/components/MessageList.test.js.map +1 -1
  72. package/dist/components/ModelSelectionMenu.d.ts.map +1 -1
  73. package/dist/components/ModelSelectionMenu.debug.test.d.ts +2 -0
  74. package/dist/components/ModelSelectionMenu.debug.test.d.ts.map +1 -0
  75. package/dist/components/ModelSelectionMenu.debug.test.js.map +1 -0
  76. package/dist/components/ModelSelectionMenu.js +1 -4
  77. package/dist/components/ModelSelectionMenu.js.map +1 -1
  78. package/dist/components/PathSelectionMenu.d.ts +1 -0
  79. package/dist/components/PathSelectionMenu.d.ts.map +1 -1
  80. package/dist/components/PathSelectionMenu.js +11 -15
  81. package/dist/components/PathSelectionMenu.js.map +1 -1
  82. package/dist/components/PathSelectionMenu.test.d.ts +2 -0
  83. package/dist/components/PathSelectionMenu.test.d.ts.map +1 -0
  84. package/dist/components/PathSelectionMenu.test.js +17 -0
  85. package/dist/components/PathSelectionMenu.test.js.map +1 -0
  86. package/dist/components/ProviderSelectionMenu.d.ts +15 -0
  87. package/dist/components/ProviderSelectionMenu.d.ts.map +1 -0
  88. package/dist/components/ProviderSelectionMenu.js +172 -0
  89. package/dist/components/ProviderSelectionMenu.js.map +1 -0
  90. package/dist/components/ProviderSelectionMenu.test.d.ts +2 -0
  91. package/dist/components/ProviderSelectionMenu.test.d.ts.map +1 -0
  92. package/dist/components/ProviderSelectionMenu.test.js +97 -0
  93. package/dist/components/ProviderSelectionMenu.test.js.map +1 -0
  94. package/dist/components/SettingsSelectionMenu.d.ts.map +1 -1
  95. package/dist/components/SettingsSelectionMenu.js +1 -12
  96. package/dist/components/SettingsSelectionMenu.js.map +1 -1
  97. package/dist/components/SettingsValueSelectionMenu.d.ts +2 -1
  98. package/dist/components/SettingsValueSelectionMenu.d.ts.map +1 -1
  99. package/dist/components/SettingsValueSelectionMenu.js +12 -13
  100. package/dist/components/SettingsValueSelectionMenu.js.map +1 -1
  101. package/dist/components/StatusBar.d.ts +1 -0
  102. package/dist/components/StatusBar.d.ts.map +1 -1
  103. package/dist/components/StatusBar.js +21 -15
  104. package/dist/components/StatusBar.js.map +1 -1
  105. package/dist/components/StatusBar.test.js +23 -4
  106. package/dist/components/StatusBar.test.js.map +1 -1
  107. package/dist/components/UndoSelectionMenu.d.ts.map +1 -1
  108. package/dist/components/UndoSelectionMenu.js +1 -1
  109. package/dist/components/UndoSelectionMenu.js.map +1 -1
  110. package/dist/context/InputContext.d.ts +6 -1
  111. package/dist/context/InputContext.d.ts.map +1 -1
  112. package/dist/context/InputContext.images.test.d.ts +2 -0
  113. package/dist/context/InputContext.images.test.d.ts.map +1 -0
  114. package/dist/context/InputContext.images.test.js +56 -0
  115. package/dist/context/InputContext.images.test.js.map +1 -0
  116. package/dist/context/InputContext.js +3 -2
  117. package/dist/context/InputContext.js.map +1 -1
  118. package/dist/hooks/use-app-commands.d.ts +2 -1
  119. package/dist/hooks/use-app-commands.d.ts.map +1 -1
  120. package/dist/hooks/use-app-commands.js +11 -2
  121. package/dist/hooks/use-app-commands.js.map +1 -1
  122. package/dist/hooks/use-app-commands.test.js +2 -0
  123. package/dist/hooks/use-app-commands.test.js.map +1 -1
  124. package/dist/hooks/use-conversation.clear.test.js +31 -0
  125. package/dist/hooks/use-conversation.clear.test.js.map +1 -1
  126. package/dist/hooks/use-conversation.d.ts +12 -2
  127. package/dist/hooks/use-conversation.d.ts.map +1 -1
  128. package/dist/hooks/use-conversation.js +36 -5
  129. package/dist/hooks/use-conversation.js.map +1 -1
  130. package/dist/hooks/use-conversation.resume.test.js +26 -3
  131. package/dist/hooks/use-conversation.resume.test.js.map +1 -1
  132. package/dist/hooks/use-escape-key.d.ts +12 -3
  133. package/dist/hooks/use-escape-key.d.ts.map +1 -1
  134. package/dist/hooks/use-escape-key.js +25 -11
  135. package/dist/hooks/use-escape-key.js.map +1 -1
  136. package/dist/hooks/use-escape-key.test.js +154 -14
  137. package/dist/hooks/use-escape-key.test.js.map +1 -1
  138. package/dist/hooks/use-mode-handlers.d.ts +13 -1
  139. package/dist/hooks/use-mode-handlers.d.ts.map +1 -1
  140. package/dist/hooks/use-mode-handlers.js +22 -1
  141. package/dist/hooks/use-mode-handlers.js.map +1 -1
  142. package/dist/hooks/use-mode-handlers.test.d.ts +2 -0
  143. package/dist/hooks/use-mode-handlers.test.d.ts.map +1 -0
  144. package/dist/hooks/use-mode-handlers.test.js +119 -0
  145. package/dist/hooks/use-mode-handlers.test.js.map +1 -0
  146. package/dist/hooks/use-path-completion.d.ts +10 -3
  147. package/dist/hooks/use-path-completion.d.ts.map +1 -1
  148. package/dist/hooks/use-path-completion.js +53 -9
  149. package/dist/hooks/use-path-completion.js.map +1 -1
  150. package/dist/hooks/use-path-completion.test.d.ts +2 -0
  151. package/dist/hooks/use-path-completion.test.d.ts.map +1 -0
  152. package/dist/hooks/use-path-completion.test.js +66 -0
  153. package/dist/hooks/use-path-completion.test.js.map +1 -0
  154. package/dist/hooks/use-provider-selection.d.ts +60 -0
  155. package/dist/hooks/use-provider-selection.d.ts.map +1 -0
  156. package/dist/hooks/use-provider-selection.js +767 -0
  157. package/dist/hooks/use-provider-selection.js.map +1 -0
  158. package/dist/hooks/use-provider-selection.test.d.ts +2 -0
  159. package/dist/hooks/use-provider-selection.test.d.ts.map +1 -0
  160. package/dist/hooks/use-provider-selection.test.js +793 -0
  161. package/dist/hooks/use-provider-selection.test.js.map +1 -0
  162. package/dist/hooks/use-runtime-settings.d.ts.map +1 -1
  163. package/dist/hooks/use-runtime-settings.js +2 -2
  164. package/dist/hooks/use-runtime-settings.js.map +1 -1
  165. package/dist/hooks/use-selection.d.ts +3 -1
  166. package/dist/hooks/use-selection.d.ts.map +1 -1
  167. package/dist/hooks/use-selection.js +115 -24
  168. package/dist/hooks/use-selection.js.map +1 -1
  169. package/dist/hooks/use-selection.test.js +96 -2
  170. package/dist/hooks/use-selection.test.js.map +1 -1
  171. package/dist/hooks/use-settings-completion.d.ts.map +1 -1
  172. package/dist/hooks/use-settings-completion.js +8 -1
  173. package/dist/hooks/use-settings-completion.js.map +1 -1
  174. package/dist/hooks/use-settings-completion.test.js +4 -0
  175. package/dist/hooks/use-settings-completion.test.js.map +1 -1
  176. package/dist/hooks/use-settings-value-completion.d.ts +3 -0
  177. package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
  178. package/dist/hooks/use-settings-value-completion.js +140 -18
  179. package/dist/hooks/use-settings-value-completion.js.map +1 -1
  180. package/dist/hooks/use-settings-value-completion.test.js +71 -1
  181. package/dist/hooks/use-settings-value-completion.test.js.map +1 -1
  182. package/dist/hooks/use-terminal-width.d.ts +2 -1
  183. package/dist/hooks/use-terminal-width.d.ts.map +1 -1
  184. package/dist/hooks/use-terminal-width.js +2 -1
  185. package/dist/hooks/use-terminal-width.js.map +1 -1
  186. package/dist/hooks/use-trigger-detection.d.ts +4 -2
  187. package/dist/hooks/use-trigger-detection.d.ts.map +1 -1
  188. package/dist/hooks/use-trigger-detection.js +42 -8
  189. package/dist/hooks/use-trigger-detection.js.map +1 -1
  190. package/dist/hooks/use-trigger-detection.test.js +2 -1
  191. package/dist/hooks/use-trigger-detection.test.js.map +1 -1
  192. package/dist/inspect_zod.d.ts +2 -0
  193. package/dist/inspect_zod.d.ts.map +1 -0
  194. package/dist/inspect_zod.js +16 -0
  195. package/dist/inspect_zod.js.map +1 -0
  196. package/dist/lib/openai-agent-client.chat.test.js +8 -0
  197. package/dist/lib/openai-agent-client.chat.test.js.map +1 -1
  198. package/dist/lib/openai-agent-client.d.ts +11 -6
  199. package/dist/lib/openai-agent-client.d.ts.map +1 -1
  200. package/dist/lib/openai-agent-client.js +241 -37
  201. package/dist/lib/openai-agent-client.js.map +1 -1
  202. package/dist/lib/openai-agent-client.public-methods.test.js +326 -23
  203. package/dist/lib/openai-agent-client.public-methods.test.js.map +1 -1
  204. package/dist/lib/openai-agent-client.test.js +62 -0
  205. package/dist/lib/openai-agent-client.test.js.map +1 -1
  206. package/dist/lib/tool-execution-limiter.d.ts +16 -0
  207. package/dist/lib/tool-execution-limiter.d.ts.map +1 -0
  208. package/dist/lib/tool-execution-limiter.js +112 -0
  209. package/dist/lib/tool-execution-limiter.js.map +1 -0
  210. package/dist/lib/tool-execution-limiter.test.d.ts +2 -0
  211. package/dist/lib/tool-execution-limiter.test.d.ts.map +1 -0
  212. package/dist/lib/tool-execution-limiter.test.js +70 -0
  213. package/dist/lib/tool-execution-limiter.test.js.map +1 -0
  214. package/dist/lib/tool-invoke.d.ts +27 -0
  215. package/dist/lib/tool-invoke.d.ts.map +1 -1
  216. package/dist/lib/tool-invoke.js +124 -95
  217. package/dist/lib/tool-invoke.js.map +1 -1
  218. package/dist/lib/tool-invoke.test.js +92 -30
  219. package/dist/lib/tool-invoke.test.js.map +1 -1
  220. package/dist/non-interactive.d.ts +2 -1
  221. package/dist/non-interactive.d.ts.map +1 -1
  222. package/dist/non-interactive.js +10 -2
  223. package/dist/non-interactive.js.map +1 -1
  224. package/dist/prompts/gpt-5-modern.md +105 -91
  225. package/dist/prompts/gpt-5.5.md +106 -0
  226. package/dist/prompts/gpt-5.md +7 -4
  227. package/dist/prompts/orchestrator.md +27 -44
  228. package/dist/prompts/plan-mode-info.md +2 -0
  229. package/dist/prompts/prompt-constructor.d.ts.map +1 -1
  230. package/dist/prompts/prompt-constructor.js +8 -0
  231. package/dist/prompts/prompt-constructor.js.map +1 -1
  232. package/dist/prompts/prompt-constructor.test.js +13 -0
  233. package/dist/prompts/prompt-constructor.test.js.map +1 -1
  234. package/dist/prompts/prompt-constructor.test.ts +16 -0
  235. package/dist/prompts/prompt-constructor.ts +10 -0
  236. package/dist/prompts/prompt-profiles.js +1 -1
  237. package/dist/prompts/prompt-profiles.js.map +1 -1
  238. package/dist/prompts/prompt-profiles.ts +1 -1
  239. package/dist/prompts/prompt-selector.test.js +1 -1
  240. package/dist/prompts/prompt-selector.test.js.map +1 -1
  241. package/dist/prompts/prompt-selector.test.ts +1 -1
  242. package/dist/prompts/subagent-delegation.d.ts.map +1 -1
  243. package/dist/prompts/subagent-delegation.js +17 -1
  244. package/dist/prompts/subagent-delegation.js.map +1 -1
  245. package/dist/prompts/subagent-delegation.test.js +21 -0
  246. package/dist/prompts/subagent-delegation.test.js.map +1 -1
  247. package/dist/prompts/subagent-delegation.test.ts +26 -0
  248. package/dist/prompts/subagent-delegation.ts +17 -1
  249. package/dist/prompts/subagents/base-anthropic.md +3 -0
  250. package/dist/prompts/subagents/base-codex.md +3 -0
  251. package/dist/prompts/subagents/base-gpt-5-modern.md +3 -0
  252. package/dist/prompts/subagents/base-simple.md +3 -0
  253. package/dist/prompts/subagents/explorer.md +8 -10
  254. package/dist/prompts/subagents/researcher.md +2 -1
  255. package/dist/prompts/subagents/worker.md +12 -3
  256. package/dist/prompts/subagents/worktree-hygiene.md +6 -0
  257. package/dist/providers/ai-sdk-anthropic.provider.d.ts +4 -1
  258. package/dist/providers/ai-sdk-anthropic.provider.d.ts.map +1 -1
  259. package/dist/providers/ai-sdk-anthropic.provider.js +65 -22
  260. package/dist/providers/ai-sdk-anthropic.provider.js.map +1 -1
  261. package/dist/providers/ai-sdk-anthropic.provider.test.js +24 -1
  262. package/dist/providers/ai-sdk-anthropic.provider.test.js.map +1 -1
  263. package/dist/providers/ai-sdk-openai-compatible.provider.d.ts +0 -2
  264. package/dist/providers/ai-sdk-openai-compatible.provider.d.ts.map +1 -1
  265. package/dist/providers/ai-sdk-openai-compatible.provider.js +4 -8
  266. package/dist/providers/ai-sdk-openai-compatible.provider.js.map +1 -1
  267. package/dist/providers/ai-sdk-openai-compatible.provider.test.js +1 -119
  268. package/dist/providers/ai-sdk-openai-compatible.provider.test.js.map +1 -1
  269. package/dist/providers/anthropic-middleware.d.ts +25 -0
  270. package/dist/providers/anthropic-middleware.d.ts.map +1 -0
  271. package/dist/providers/anthropic-middleware.js +32 -0
  272. package/dist/providers/anthropic-middleware.js.map +1 -0
  273. package/dist/providers/anthropic-middleware.test.d.ts +2 -0
  274. package/dist/providers/anthropic-middleware.test.d.ts.map +1 -0
  275. package/dist/providers/anthropic-middleware.test.js +142 -0
  276. package/dist/providers/anthropic-middleware.test.js.map +1 -0
  277. package/dist/providers/codex-responses-model.d.ts +1 -0
  278. package/dist/providers/codex-responses-model.d.ts.map +1 -1
  279. package/dist/providers/codex-responses-model.js +97 -34
  280. package/dist/providers/codex-responses-model.js.map +1 -1
  281. package/dist/providers/codex-responses-model.test.js +158 -0
  282. package/dist/providers/codex-responses-model.test.js.map +1 -1
  283. package/dist/providers/codex.provider.d.ts.map +1 -1
  284. package/dist/providers/codex.provider.js +16 -9
  285. package/dist/providers/codex.provider.js.map +1 -1
  286. package/dist/providers/codex.provider.test.js +2 -1
  287. package/dist/providers/codex.provider.test.js.map +1 -1
  288. package/dist/providers/custom-provider-adapter.test.js +6 -2
  289. package/dist/providers/custom-provider-adapter.test.js.map +1 -1
  290. package/dist/providers/fallback-responses-model.d.ts +3 -1
  291. package/dist/providers/fallback-responses-model.d.ts.map +1 -1
  292. package/dist/providers/fallback-responses-model.js +31 -4
  293. package/dist/providers/fallback-responses-model.js.map +1 -1
  294. package/dist/providers/fallback-responses-model.test.js +65 -8
  295. package/dist/providers/fallback-responses-model.test.js.map +1 -1
  296. package/dist/providers/fetch/composer.d.ts +1 -0
  297. package/dist/providers/fetch/composer.d.ts.map +1 -1
  298. package/dist/providers/fetch/composer.js +1 -0
  299. package/dist/providers/fetch/composer.js.map +1 -1
  300. package/dist/providers/fetch/composer.test.js +58 -17
  301. package/dist/providers/fetch/composer.test.js.map +1 -1
  302. package/dist/providers/fetch/logging-middleware.d.ts +3 -2
  303. package/dist/providers/fetch/logging-middleware.d.ts.map +1 -1
  304. package/dist/providers/fetch/logging-middleware.js +5 -2
  305. package/dist/providers/fetch/logging-middleware.js.map +1 -1
  306. package/dist/providers/openai-compatible-behavior-gate.test.js +1 -42
  307. package/dist/providers/openai-compatible-behavior-gate.test.js.map +1 -1
  308. package/dist/providers/openai-compatible-lazy.d.ts +4 -0
  309. package/dist/providers/openai-compatible-lazy.d.ts.map +1 -0
  310. package/dist/providers/openai-compatible-lazy.js +55 -0
  311. package/dist/providers/openai-compatible-lazy.js.map +1 -0
  312. package/dist/providers/openai-compatible-middleware.d.ts +5 -2
  313. package/dist/providers/openai-compatible-middleware.d.ts.map +1 -1
  314. package/dist/providers/openai-compatible-middleware.js +8 -11
  315. package/dist/providers/openai-compatible-middleware.js.map +1 -1
  316. package/dist/providers/openai-compatible.provider.d.ts +5 -1
  317. package/dist/providers/openai-compatible.provider.d.ts.map +1 -1
  318. package/dist/providers/openai-compatible.provider.js +59 -37
  319. package/dist/providers/openai-compatible.provider.js.map +1 -1
  320. package/dist/providers/openai-compatible.provider.test.js +97 -2
  321. package/dist/providers/openai-compatible.provider.test.js.map +1 -1
  322. package/dist/providers/openai.provider.d.ts +8 -1
  323. package/dist/providers/openai.provider.d.ts.map +1 -1
  324. package/dist/providers/openai.provider.js +43 -10
  325. package/dist/providers/openai.provider.js.map +1 -1
  326. package/dist/providers/openai.provider.test.d.ts +2 -0
  327. package/dist/providers/openai.provider.test.d.ts.map +1 -0
  328. package/dist/providers/openai.provider.test.js +59 -0
  329. package/dist/providers/openai.provider.test.js.map +1 -0
  330. package/dist/providers/opencode-routing.d.ts +4 -0
  331. package/dist/providers/opencode-routing.d.ts.map +1 -0
  332. package/dist/providers/opencode-routing.js +14 -0
  333. package/dist/providers/opencode-routing.js.map +1 -0
  334. package/dist/providers/opencode-session.d.ts +19 -0
  335. package/dist/providers/opencode-session.d.ts.map +1 -0
  336. package/dist/providers/opencode-session.js +76 -0
  337. package/dist/providers/opencode-session.js.map +1 -0
  338. package/dist/providers/opencode.provider.d.ts +0 -8
  339. package/dist/providers/opencode.provider.d.ts.map +1 -1
  340. package/dist/providers/opencode.provider.js +0 -32
  341. package/dist/providers/opencode.provider.js.map +1 -1
  342. package/dist/providers/opencode.provider.test.d.ts +2 -0
  343. package/dist/providers/opencode.provider.test.d.ts.map +1 -0
  344. package/dist/providers/opencode.provider.test.js +186 -0
  345. package/dist/providers/opencode.provider.test.js.map +1 -0
  346. package/dist/providers/openrouter.provider.createRunner.test.js +5 -0
  347. package/dist/providers/openrouter.provider.createRunner.test.js.map +1 -1
  348. package/dist/providers/openrouter.provider.d.ts.map +1 -1
  349. package/dist/providers/openrouter.provider.js +8 -4
  350. package/dist/providers/openrouter.provider.js.map +1 -1
  351. package/dist/providers/registry.d.ts +3 -0
  352. package/dist/providers/registry.d.ts.map +1 -1
  353. package/dist/providers/registry.js.map +1 -1
  354. package/dist/providers/registry.test.js +1 -0
  355. package/dist/providers/registry.test.js.map +1 -1
  356. package/dist/scripts/eval-auto-approval/runner.js +4 -0
  357. package/dist/scripts/eval-auto-approval/runner.js.map +1 -1
  358. package/dist/services/conversation-integration.test.js +8 -4
  359. package/dist/services/conversation-integration.test.js.map +1 -1
  360. package/dist/services/conversation-log-events.d.ts +3 -0
  361. package/dist/services/conversation-log-events.d.ts.map +1 -1
  362. package/dist/services/conversation-log-events.js.map +1 -1
  363. package/dist/services/conversation-log-writer.d.ts.map +1 -1
  364. package/dist/services/conversation-log-writer.js +1 -2
  365. package/dist/services/conversation-log-writer.js.map +1 -1
  366. package/dist/services/conversation-persistence.d.ts +1 -1
  367. package/dist/services/conversation-persistence.d.ts.map +1 -1
  368. package/dist/services/conversation-persistence.js +53 -4
  369. package/dist/services/conversation-persistence.js.map +1 -1
  370. package/dist/services/conversation-persistence.test.js +203 -1
  371. package/dist/services/conversation-persistence.test.js.map +1 -1
  372. package/dist/services/conversation-replay.d.ts.map +1 -1
  373. package/dist/services/conversation-replay.js +114 -8
  374. package/dist/services/conversation-replay.js.map +1 -1
  375. package/dist/services/conversation-replay.test.js +368 -0
  376. package/dist/services/conversation-replay.test.js.map +1 -1
  377. package/dist/services/conversation-result-builder.test.js +9 -0
  378. package/dist/services/conversation-result-builder.test.js.map +1 -1
  379. package/dist/services/conversation-service.d.ts +3 -1
  380. package/dist/services/conversation-service.d.ts.map +1 -1
  381. package/dist/services/conversation-service.js +3 -0
  382. package/dist/services/conversation-service.js.map +1 -1
  383. package/dist/services/conversation-session-reasoning.test.js +5 -1
  384. package/dist/services/conversation-session-reasoning.test.js.map +1 -1
  385. package/dist/services/conversation-session.auto-approval.test.js +25 -1
  386. package/dist/services/conversation-session.auto-approval.test.js.map +1 -1
  387. package/dist/services/conversation-session.d.ts +8 -2
  388. package/dist/services/conversation-session.d.ts.map +1 -1
  389. package/dist/services/conversation-session.js +88 -44
  390. package/dist/services/conversation-session.js.map +1 -1
  391. package/dist/services/conversation-store.merge-modes.test.d.ts.map +1 -1
  392. package/dist/services/conversation-store.merge-modes.test.js +160 -1
  393. package/dist/services/conversation-store.merge-modes.test.js.map +1 -1
  394. package/dist/services/file-service.d.ts +20 -4
  395. package/dist/services/file-service.d.ts.map +1 -1
  396. package/dist/services/file-service.js +111 -52
  397. package/dist/services/file-service.js.map +1 -1
  398. package/dist/services/file-service.test.d.ts +2 -0
  399. package/dist/services/file-service.test.d.ts.map +1 -0
  400. package/dist/services/file-service.test.js +60 -0
  401. package/dist/services/file-service.test.js.map +1 -0
  402. package/dist/services/large-uncached-input-guard.d.ts.map +1 -1
  403. package/dist/services/large-uncached-input-guard.js +4 -3
  404. package/dist/services/large-uncached-input-guard.js.map +1 -1
  405. package/dist/services/large-uncached-input-guard.test.js +22 -0
  406. package/dist/services/large-uncached-input-guard.test.js.map +1 -1
  407. package/dist/services/logging-service.d.ts +0 -3
  408. package/dist/services/logging-service.d.ts.map +1 -1
  409. package/dist/services/logging-service.js +12 -8
  410. package/dist/services/logging-service.js.map +1 -1
  411. package/dist/services/mode-notices.d.ts +4 -5
  412. package/dist/services/mode-notices.d.ts.map +1 -1
  413. package/dist/services/mode-notices.js +4 -5
  414. package/dist/services/mode-notices.js.map +1 -1
  415. package/dist/services/notification-service.d.ts +42 -0
  416. package/dist/services/notification-service.d.ts.map +1 -0
  417. package/dist/services/notification-service.js +116 -0
  418. package/dist/services/notification-service.js.map +1 -0
  419. package/dist/services/notification-service.test.d.ts +2 -0
  420. package/dist/services/notification-service.test.d.ts.map +1 -0
  421. package/dist/services/notification-service.test.js +151 -0
  422. package/dist/services/notification-service.test.js.map +1 -0
  423. package/dist/services/provider-traffic.d.ts +8 -9
  424. package/dist/services/provider-traffic.d.ts.map +1 -1
  425. package/dist/services/provider-traffic.js +25 -12
  426. package/dist/services/provider-traffic.js.map +1 -1
  427. package/dist/services/provider-traffic.test.js +102 -1
  428. package/dist/services/provider-traffic.test.js.map +1 -1
  429. package/dist/services/service-interfaces.d.ts +12 -16
  430. package/dist/services/service-interfaces.d.ts.map +1 -1
  431. package/dist/services/session-context-service.d.ts +8 -0
  432. package/dist/services/session-context-service.d.ts.map +1 -0
  433. package/dist/services/session-context-service.js +19 -0
  434. package/dist/services/session-context-service.js.map +1 -0
  435. package/dist/services/session-context-service.test.d.ts +2 -0
  436. package/dist/services/session-context-service.test.d.ts.map +1 -0
  437. package/dist/services/session-context-service.test.js +38 -0
  438. package/dist/services/session-context-service.test.js.map +1 -0
  439. package/dist/services/settings-env.d.ts.map +1 -1
  440. package/dist/services/settings-env.js +4 -1
  441. package/dist/services/settings-env.js.map +1 -1
  442. package/dist/services/settings-persistence.d.ts.map +1 -1
  443. package/dist/services/settings-persistence.js +0 -1
  444. package/dist/services/settings-persistence.js.map +1 -1
  445. package/dist/services/settings-persistence.test.js +2 -2
  446. package/dist/services/settings-persistence.test.js.map +1 -1
  447. package/dist/services/settings-schema.d.ts +25 -1
  448. package/dist/services/settings-schema.d.ts.map +1 -1
  449. package/dist/services/settings-schema.js +54 -23
  450. package/dist/services/settings-schema.js.map +1 -1
  451. package/dist/services/settings-schema.test.js +10 -0
  452. package/dist/services/settings-schema.test.js.map +1 -1
  453. package/dist/services/settings-service.d.ts +8 -0
  454. package/dist/services/settings-service.d.ts.map +1 -1
  455. package/dist/services/settings-service.js +60 -23
  456. package/dist/services/settings-service.js.map +1 -1
  457. package/dist/services/settings-sources.d.ts.map +1 -1
  458. package/dist/services/settings-sources.js +1 -0
  459. package/dist/services/settings-sources.js.map +1 -1
  460. package/dist/services/settings-sources.test.js +2 -0
  461. package/dist/services/settings-sources.test.js.map +1 -1
  462. package/dist/services/shell-auto-approval-evaluator.d.ts +3 -2
  463. package/dist/services/shell-auto-approval-evaluator.d.ts.map +1 -1
  464. package/dist/services/shell-auto-approval-evaluator.js +3 -3
  465. package/dist/services/shell-auto-approval-evaluator.js.map +1 -1
  466. package/dist/services/shell-auto-approval-evaluator.test.js +20 -0
  467. package/dist/services/shell-auto-approval-evaluator.test.js.map +1 -1
  468. package/dist/services/shell-auto-approval-resolver.d.ts +2 -1
  469. package/dist/services/shell-auto-approval-resolver.d.ts.map +1 -1
  470. package/dist/services/shell-auto-approval-resolver.js +2 -0
  471. package/dist/services/shell-auto-approval-resolver.js.map +1 -1
  472. package/dist/services/shell-auto-approval-resolver.test.js +10 -0
  473. package/dist/services/shell-auto-approval-resolver.test.js.map +1 -1
  474. package/dist/services/subagents/subagent-manager.d.ts +2 -1
  475. package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
  476. package/dist/services/subagents/subagent-manager.js +182 -13
  477. package/dist/services/subagents/subagent-manager.js.map +1 -1
  478. package/dist/services/subagents/subagent-manager.test.js +548 -17
  479. package/dist/services/subagents/subagent-manager.test.js.map +1 -1
  480. package/dist/tools/apply-patch.d.ts.map +1 -1
  481. package/dist/tools/apply-patch.js +2 -2
  482. package/dist/tools/apply-patch.js.map +1 -1
  483. package/dist/tools/ask-user-constants.d.ts +7 -0
  484. package/dist/tools/ask-user-constants.d.ts.map +1 -0
  485. package/dist/tools/ask-user-constants.js +7 -0
  486. package/dist/tools/ask-user-constants.js.map +1 -0
  487. package/dist/tools/ask-user.d.ts +11 -0
  488. package/dist/tools/ask-user.d.ts.map +1 -0
  489. package/dist/tools/ask-user.js +56 -0
  490. package/dist/tools/ask-user.js.map +1 -0
  491. package/dist/tools/ask-user.test.d.ts +2 -0
  492. package/dist/tools/ask-user.test.d.ts.map +1 -0
  493. package/dist/tools/ask-user.test.js +129 -0
  494. package/dist/tools/ask-user.test.js.map +1 -0
  495. package/dist/tools/code-context.js +1 -1
  496. package/dist/tools/code-context.js.map +1 -1
  497. package/dist/tools/code-context.test.js +278 -0
  498. package/dist/tools/code-context.test.js.map +1 -1
  499. package/dist/tools/format-helpers.d.ts +13 -0
  500. package/dist/tools/format-helpers.d.ts.map +1 -1
  501. package/dist/tools/format-helpers.js +34 -0
  502. package/dist/tools/format-helpers.js.map +1 -1
  503. package/dist/tools/format-helpers.test.d.ts +2 -0
  504. package/dist/tools/format-helpers.test.d.ts.map +1 -0
  505. package/dist/tools/format-helpers.test.js +51 -0
  506. package/dist/tools/format-helpers.test.js.map +1 -0
  507. package/dist/tools/language-providers.d.ts.map +1 -1
  508. package/dist/tools/language-providers.js +379 -0
  509. package/dist/tools/language-providers.js.map +1 -1
  510. package/dist/tools/languages/cpp.d.ts +8 -0
  511. package/dist/tools/languages/cpp.d.ts.map +1 -0
  512. package/dist/tools/languages/cpp.js +306 -0
  513. package/dist/tools/languages/cpp.js.map +1 -0
  514. package/dist/tools/languages/csharp.d.ts +5 -0
  515. package/dist/tools/languages/csharp.d.ts.map +1 -0
  516. package/dist/tools/languages/csharp.js +225 -0
  517. package/dist/tools/languages/csharp.js.map +1 -0
  518. package/dist/tools/languages/go.d.ts +7 -0
  519. package/dist/tools/languages/go.d.ts.map +1 -0
  520. package/dist/tools/languages/go.js +223 -0
  521. package/dist/tools/languages/go.js.map +1 -0
  522. package/dist/tools/languages/index.d.ts +6 -0
  523. package/dist/tools/languages/index.d.ts.map +1 -0
  524. package/dist/tools/languages/index.js +32 -0
  525. package/dist/tools/languages/index.js.map +1 -0
  526. package/dist/tools/languages/java.d.ts +5 -0
  527. package/dist/tools/languages/java.d.ts.map +1 -0
  528. package/dist/tools/languages/java.js +183 -0
  529. package/dist/tools/languages/java.js.map +1 -0
  530. package/dist/tools/languages/json.d.ts +3 -0
  531. package/dist/tools/languages/json.d.ts.map +1 -0
  532. package/dist/tools/languages/json.js +40 -0
  533. package/dist/tools/languages/json.js.map +1 -0
  534. package/dist/tools/languages/php.d.ts +8 -0
  535. package/dist/tools/languages/php.d.ts.map +1 -0
  536. package/dist/tools/languages/php.js +139 -0
  537. package/dist/tools/languages/php.js.map +1 -0
  538. package/dist/tools/languages/python.d.ts +7 -0
  539. package/dist/tools/languages/python.d.ts.map +1 -0
  540. package/dist/tools/languages/python.js +189 -0
  541. package/dist/tools/languages/python.js.map +1 -0
  542. package/dist/tools/languages/ruby.d.ts +8 -0
  543. package/dist/tools/languages/ruby.d.ts.map +1 -0
  544. package/dist/tools/languages/ruby.js +94 -0
  545. package/dist/tools/languages/ruby.js.map +1 -0
  546. package/dist/tools/languages/rust.d.ts +7 -0
  547. package/dist/tools/languages/rust.d.ts.map +1 -0
  548. package/dist/tools/languages/rust.js +186 -0
  549. package/dist/tools/languages/rust.js.map +1 -0
  550. package/dist/tools/languages/types.d.ts +39 -0
  551. package/dist/tools/languages/types.d.ts.map +1 -0
  552. package/dist/tools/languages/types.js +2 -0
  553. package/dist/tools/languages/types.js.map +1 -0
  554. package/dist/tools/languages/typescript.d.ts +4 -0
  555. package/dist/tools/languages/typescript.d.ts.map +1 -0
  556. package/dist/tools/languages/typescript.js +94 -0
  557. package/dist/tools/languages/typescript.js.map +1 -0
  558. package/dist/tools/languages/utils.d.ts +14 -0
  559. package/dist/tools/languages/utils.d.ts.map +1 -0
  560. package/dist/tools/languages/utils.js +73 -0
  561. package/dist/tools/languages/utils.js.map +1 -0
  562. package/dist/tools/search-replace.d.ts.map +1 -1
  563. package/dist/tools/search-replace.js +2 -2
  564. package/dist/tools/search-replace.js.map +1 -1
  565. package/dist/tools/shell.d.ts.map +1 -1
  566. package/dist/tools/shell.js +13 -1
  567. package/dist/tools/shell.js.map +1 -1
  568. package/dist/tools/tool-names.d.ts +1 -0
  569. package/dist/tools/tool-names.d.ts.map +1 -1
  570. package/dist/tools/tool-names.js +1 -0
  571. package/dist/tools/tool-names.js.map +1 -1
  572. package/dist/tools/web-fetch.d.ts.map +1 -1
  573. package/dist/tools/web-fetch.js +1 -1
  574. package/dist/tools/web-fetch.js.map +1 -1
  575. package/dist/utils/clipboard.d.ts +2 -1
  576. package/dist/utils/clipboard.d.ts.map +1 -1
  577. package/dist/utils/clipboard.js +2 -35
  578. package/dist/utils/clipboard.js.map +1 -1
  579. package/dist/utils/command-safety/_scratch-classify.test.d.ts +2 -0
  580. package/dist/utils/command-safety/_scratch-classify.test.d.ts.map +1 -0
  581. package/dist/utils/command-safety/_scratch-classify.test.js +22 -0
  582. package/dist/utils/command-safety/_scratch-classify.test.js.map +1 -0
  583. package/dist/utils/command-safety/constants.d.ts.map +1 -1
  584. package/dist/utils/command-safety/constants.js +21 -0
  585. package/dist/utils/command-safety/constants.js.map +1 -1
  586. package/dist/utils/command-safety/handlers/git-handler.d.ts.map +1 -1
  587. package/dist/utils/command-safety/handlers/git-handler.js +28 -2
  588. package/dist/utils/command-safety/handlers/git-handler.js.map +1 -1
  589. package/dist/utils/command-safety/path-analysis.d.ts.map +1 -1
  590. package/dist/utils/command-safety/path-analysis.js +6 -0
  591. package/dist/utils/command-safety/path-analysis.js.map +1 -1
  592. package/dist/utils/command-safety/scratch-classify.test.d.ts +2 -0
  593. package/dist/utils/command-safety/scratch-classify.test.d.ts.map +1 -0
  594. package/dist/utils/command-safety/scratch-classify.test.js +22 -0
  595. package/dist/utils/command-safety/scratch-classify.test.js.map +1 -0
  596. package/dist/utils/command-safety/scratch-tally.test.d.ts +2 -0
  597. package/dist/utils/command-safety/scratch-tally.test.d.ts.map +1 -0
  598. package/dist/utils/command-safety/scratch-tally.test.js +68 -0
  599. package/dist/utils/command-safety/scratch-tally.test.js.map +1 -0
  600. package/dist/utils/command-safety.evaluator-false-positives.test.d.ts +2 -0
  601. package/dist/utils/command-safety.evaluator-false-positives.test.d.ts.map +1 -0
  602. package/dist/utils/command-safety.evaluator-false-positives.test.js +72 -0
  603. package/dist/utils/command-safety.evaluator-false-positives.test.js.map +1 -0
  604. package/dist/utils/header-sanitizer.d.ts +2 -0
  605. package/dist/utils/header-sanitizer.d.ts.map +1 -0
  606. package/dist/utils/header-sanitizer.js +38 -0
  607. package/dist/utils/header-sanitizer.js.map +1 -0
  608. package/dist/utils/header-sanitizer.test.d.ts +2 -0
  609. package/dist/utils/header-sanitizer.test.d.ts.map +1 -0
  610. package/dist/utils/header-sanitizer.test.js +56 -0
  611. package/dist/utils/header-sanitizer.test.js.map +1 -0
  612. package/dist/utils/home-directory-start-guard.d.ts +10 -0
  613. package/dist/utils/home-directory-start-guard.d.ts.map +1 -0
  614. package/dist/utils/home-directory-start-guard.js +20 -0
  615. package/dist/utils/home-directory-start-guard.js.map +1 -0
  616. package/dist/utils/home-directory-start-guard.test.d.ts +2 -0
  617. package/dist/utils/home-directory-start-guard.test.d.ts.map +1 -0
  618. package/dist/utils/home-directory-start-guard.test.js +40 -0
  619. package/dist/utils/home-directory-start-guard.test.js.map +1 -0
  620. package/dist/utils/inject-warning-into-tool-output.d.ts +2 -0
  621. package/dist/utils/inject-warning-into-tool-output.d.ts.map +1 -0
  622. package/dist/utils/inject-warning-into-tool-output.js +66 -0
  623. package/dist/utils/inject-warning-into-tool-output.js.map +1 -0
  624. package/dist/utils/project-tree.d.ts +14 -0
  625. package/dist/utils/project-tree.d.ts.map +1 -0
  626. package/dist/utils/project-tree.js +111 -0
  627. package/dist/utils/project-tree.js.map +1 -0
  628. package/dist/utils/project-tree.test.d.ts +2 -0
  629. package/dist/utils/project-tree.test.d.ts.map +1 -0
  630. package/dist/utils/project-tree.test.js +149 -0
  631. package/dist/utils/project-tree.test.js.map +1 -0
  632. package/dist/utils/provider-traffic-extractor.d.ts +1 -0
  633. package/dist/utils/provider-traffic-extractor.d.ts.map +1 -1
  634. package/dist/utils/provider-traffic-extractor.js +1 -0
  635. package/dist/utils/provider-traffic-extractor.js.map +1 -1
  636. package/dist/utils/provider-traffic-extractor.test.js +2 -0
  637. package/dist/utils/provider-traffic-extractor.test.js.map +1 -1
  638. package/dist/utils/settings-command.d.ts.map +1 -1
  639. package/dist/utils/settings-command.js +11 -0
  640. package/dist/utils/settings-command.js.map +1 -1
  641. package/dist/utils/terminal-clear.d.ts +7 -0
  642. package/dist/utils/terminal-clear.d.ts.map +1 -0
  643. package/dist/utils/terminal-clear.js +5 -0
  644. package/dist/utils/terminal-clear.js.map +1 -0
  645. package/dist/utils/terminal-clear.test.d.ts +2 -0
  646. package/dist/utils/terminal-clear.test.d.ts.map +1 -0
  647. package/dist/utils/terminal-clear.test.js +13 -0
  648. package/dist/utils/terminal-clear.test.js.map +1 -0
  649. package/dist/utils/token-usage.d.ts +6 -2
  650. package/dist/utils/token-usage.d.ts.map +1 -1
  651. package/dist/utils/token-usage.js +11 -4
  652. package/dist/utils/token-usage.js.map +1 -1
  653. package/dist/utils/token-usage.test.js +15 -0
  654. package/dist/utils/token-usage.test.js.map +1 -1
  655. package/dist/utils/tty-osc.d.ts +27 -0
  656. package/dist/utils/tty-osc.d.ts.map +1 -0
  657. package/dist/utils/tty-osc.js +66 -0
  658. package/dist/utils/tty-osc.js.map +1 -0
  659. package/dist/utils/tty-osc.test.d.ts +2 -0
  660. package/dist/utils/tty-osc.test.d.ts.map +1 -0
  661. package/dist/utils/tty-osc.test.js +130 -0
  662. package/dist/utils/tty-osc.test.js.map +1 -0
  663. package/package.json +2 -2
  664. package/readme.md +2 -2
  665. package/dist/agent.lite-mode.test.d.ts +0 -2
  666. package/dist/agent.lite-mode.test.d.ts.map +0 -1
  667. package/dist/agent.lite-mode.test.js +0 -39
  668. package/dist/agent.lite-mode.test.js.map +0 -1
  669. package/dist/app.large-uncached-warning.test.js +0 -15
  670. package/dist/components/ApprovalPrompt.test.d.ts +0 -2
  671. package/dist/components/ApprovalPrompt.test.d.ts.map +0 -1
  672. package/dist/components/ApprovalPrompt.test.js +0 -23
  673. package/dist/components/ApprovalPrompt.test.js.map +0 -1
  674. package/dist/components/LiveResponse.test.d.ts +0 -2
  675. package/dist/components/LiveResponse.test.d.ts.map +0 -1
  676. package/dist/components/LiveResponse.test.js +0 -13
  677. package/dist/components/LiveResponse.test.js.map +0 -1
  678. package/dist/components/ModelSelectionMenu.error-tabs.test.d.ts +0 -2
  679. package/dist/components/ModelSelectionMenu.error-tabs.test.d.ts.map +0 -1
  680. package/dist/components/ModelSelectionMenu.error-tabs.test.js +0 -18
  681. package/dist/components/ModelSelectionMenu.error-tabs.test.js.map +0 -1
  682. package/dist/components/TextInput.d.ts +0 -42
  683. package/dist/components/TextInput.d.ts.map +0 -1
  684. package/dist/components/TextInput.js +0 -398
  685. package/dist/components/TextInput.js.map +0 -1
  686. package/dist/components/TextInput.test.d.ts +0 -2
  687. package/dist/components/TextInput.test.d.ts.map +0 -1
  688. package/dist/components/TextInput.test.js +0 -75
  689. package/dist/components/TextInput.test.js.map +0 -1
  690. package/dist/debug_ask_mentor.d.ts +0 -2
  691. package/dist/debug_ask_mentor.d.ts.map +0 -1
  692. package/dist/debug_ask_mentor.js +0 -73
  693. package/dist/debug_ask_mentor.js.map +0 -1
  694. package/dist/hooks/use-conversation.max-turns-undo.test.d.ts +0 -2
  695. package/dist/hooks/use-conversation.max-turns-undo.test.d.ts.map +0 -1
  696. package/dist/hooks/use-conversation.max-turns-undo.test.js +0 -118
  697. package/dist/hooks/use-conversation.max-turns-undo.test.js.map +0 -1
  698. package/dist/lib/shell.d.ts +0 -7
  699. package/dist/lib/shell.d.ts.map +0 -1
  700. package/dist/lib/shell.js +0 -56
  701. package/dist/lib/shell.js.map +0 -1
  702. package/dist/modes/companion/command-index.d.ts +0 -26
  703. package/dist/modes/companion/command-index.d.ts.map +0 -1
  704. package/dist/modes/companion/command-index.js +0 -50
  705. package/dist/modes/companion/command-index.js.map +0 -1
  706. package/dist/modes/companion/command-index.test.d.ts +0 -2
  707. package/dist/modes/companion/command-index.test.d.ts.map +0 -1
  708. package/dist/modes/companion/command-index.test.js +0 -86
  709. package/dist/modes/companion/command-index.test.js.map +0 -1
  710. package/dist/modes/companion/companion-app.d.ts +0 -12
  711. package/dist/modes/companion/companion-app.d.ts.map +0 -1
  712. package/dist/modes/companion/companion-app.js +0 -297
  713. package/dist/modes/companion/companion-app.js.map +0 -1
  714. package/dist/modes/companion/companion-session.d.ts +0 -63
  715. package/dist/modes/companion/companion-session.d.ts.map +0 -1
  716. package/dist/modes/companion/companion-session.js +0 -146
  717. package/dist/modes/companion/companion-session.js.map +0 -1
  718. package/dist/modes/companion/companion-session.test.d.ts +0 -2
  719. package/dist/modes/companion/companion-session.test.d.ts.map +0 -1
  720. package/dist/modes/companion/companion-session.test.js +0 -28
  721. package/dist/modes/companion/companion-session.test.js.map +0 -1
  722. package/dist/modes/companion/components/status-bar.d.ts +0 -13
  723. package/dist/modes/companion/components/status-bar.d.ts.map +0 -1
  724. package/dist/modes/companion/components/status-bar.js +0 -26
  725. package/dist/modes/companion/components/status-bar.js.map +0 -1
  726. package/dist/modes/companion/context-buffer.d.ts +0 -65
  727. package/dist/modes/companion/context-buffer.d.ts.map +0 -1
  728. package/dist/modes/companion/context-buffer.js +0 -156
  729. package/dist/modes/companion/context-buffer.js.map +0 -1
  730. package/dist/modes/companion/context-buffer.test.d.ts +0 -2
  731. package/dist/modes/companion/context-buffer.test.d.ts.map +0 -1
  732. package/dist/modes/companion/context-buffer.test.js +0 -154
  733. package/dist/modes/companion/context-buffer.test.js.map +0 -1
  734. package/dist/modes/companion/event-detector.d.ts +0 -46
  735. package/dist/modes/companion/event-detector.d.ts.map +0 -1
  736. package/dist/modes/companion/event-detector.js +0 -169
  737. package/dist/modes/companion/event-detector.js.map +0 -1
  738. package/dist/modes/companion/event-detector.test.d.ts +0 -2
  739. package/dist/modes/companion/event-detector.test.d.ts.map +0 -1
  740. package/dist/modes/companion/event-detector.test.js +0 -121
  741. package/dist/modes/companion/event-detector.test.js.map +0 -1
  742. package/dist/modes/companion/index.d.ts +0 -33
  743. package/dist/modes/companion/index.d.ts.map +0 -1
  744. package/dist/modes/companion/index.js +0 -21
  745. package/dist/modes/companion/index.js.map +0 -1
  746. package/dist/modes/companion/input-key-mapper.d.ts +0 -3
  747. package/dist/modes/companion/input-key-mapper.d.ts.map +0 -1
  748. package/dist/modes/companion/input-key-mapper.js +0 -31
  749. package/dist/modes/companion/input-key-mapper.js.map +0 -1
  750. package/dist/modes/companion/input-key-mapper.test.d.ts +0 -2
  751. package/dist/modes/companion/input-key-mapper.test.d.ts.map +0 -1
  752. package/dist/modes/companion/input-key-mapper.test.js +0 -26
  753. package/dist/modes/companion/input-key-mapper.test.js.map +0 -1
  754. package/dist/modes/companion/input-parser.d.ts +0 -53
  755. package/dist/modes/companion/input-parser.d.ts.map +0 -1
  756. package/dist/modes/companion/input-parser.js +0 -114
  757. package/dist/modes/companion/input-parser.js.map +0 -1
  758. package/dist/modes/companion/input-parser.test.d.ts +0 -2
  759. package/dist/modes/companion/input-parser.test.d.ts.map +0 -1
  760. package/dist/modes/companion/input-parser.test.js +0 -123
  761. package/dist/modes/companion/input-parser.test.js.map +0 -1
  762. package/dist/modes/companion/mode-manager.d.ts +0 -41
  763. package/dist/modes/companion/mode-manager.d.ts.map +0 -1
  764. package/dist/modes/companion/mode-manager.js +0 -56
  765. package/dist/modes/companion/mode-manager.js.map +0 -1
  766. package/dist/modes/companion/mode-manager.test.d.ts +0 -2
  767. package/dist/modes/companion/mode-manager.test.d.ts.map +0 -1
  768. package/dist/modes/companion/mode-manager.test.js +0 -65
  769. package/dist/modes/companion/mode-manager.test.js.map +0 -1
  770. package/dist/modes/companion/output-classifier.d.ts +0 -15
  771. package/dist/modes/companion/output-classifier.d.ts.map +0 -1
  772. package/dist/modes/companion/output-classifier.js +0 -77
  773. package/dist/modes/companion/output-classifier.js.map +0 -1
  774. package/dist/modes/companion/output-classifier.test.d.ts +0 -2
  775. package/dist/modes/companion/output-classifier.test.d.ts.map +0 -1
  776. package/dist/modes/companion/output-classifier.test.js +0 -133
  777. package/dist/modes/companion/output-classifier.test.js.map +0 -1
  778. package/dist/modes/companion/pty-wrapper.d.ts +0 -46
  779. package/dist/modes/companion/pty-wrapper.d.ts.map +0 -1
  780. package/dist/modes/companion/pty-wrapper.js +0 -143
  781. package/dist/modes/companion/pty-wrapper.js.map +0 -1
  782. package/dist/modes/companion/safety-classifier.d.ts +0 -31
  783. package/dist/modes/companion/safety-classifier.d.ts.map +0 -1
  784. package/dist/modes/companion/safety-classifier.js +0 -140
  785. package/dist/modes/companion/safety-classifier.js.map +0 -1
  786. package/dist/modes/companion/safety-classifier.test.d.ts +0 -2
  787. package/dist/modes/companion/safety-classifier.test.d.ts.map +0 -1
  788. package/dist/modes/companion/safety-classifier.test.js +0 -151
  789. package/dist/modes/companion/safety-classifier.test.js.map +0 -1
  790. package/dist/modes/companion/summarizer.d.ts +0 -24
  791. package/dist/modes/companion/summarizer.d.ts.map +0 -1
  792. package/dist/modes/companion/summarizer.js +0 -132
  793. package/dist/modes/companion/summarizer.js.map +0 -1
  794. package/dist/modes/companion/terminal-history.d.ts +0 -27
  795. package/dist/modes/companion/terminal-history.d.ts.map +0 -1
  796. package/dist/modes/companion/terminal-history.js +0 -142
  797. package/dist/modes/companion/terminal-history.js.map +0 -1
  798. package/dist/prompts/simple-mentor.md +0 -215
  799. package/dist/providers/ai-sdk-openai.provider.d.ts +0 -14
  800. package/dist/providers/ai-sdk-openai.provider.d.ts.map +0 -1
  801. package/dist/providers/ai-sdk-openai.provider.js +0 -18
  802. package/dist/providers/ai-sdk-openai.provider.js.map +0 -1
  803. package/dist/providers/github-copilot/converters.d.ts +0 -45
  804. package/dist/providers/github-copilot/converters.d.ts.map +0 -1
  805. package/dist/providers/github-copilot/converters.js +0 -118
  806. package/dist/providers/github-copilot/converters.js.map +0 -1
  807. package/dist/providers/github-copilot/converters.test.d.ts +0 -2
  808. package/dist/providers/github-copilot/converters.test.d.ts.map +0 -1
  809. package/dist/providers/github-copilot/converters.test.js +0 -162
  810. package/dist/providers/github-copilot/converters.test.js.map +0 -1
  811. package/dist/providers/github-copilot/github-copilot.provider.d.ts +0 -2
  812. package/dist/providers/github-copilot/github-copilot.provider.d.ts.map +0 -1
  813. package/dist/providers/github-copilot/github-copilot.provider.js +0 -75
  814. package/dist/providers/github-copilot/github-copilot.provider.js.map +0 -1
  815. package/dist/providers/github-copilot/github-copilot.provider.test.d.ts +0 -2
  816. package/dist/providers/github-copilot/github-copilot.provider.test.d.ts.map +0 -1
  817. package/dist/providers/github-copilot/github-copilot.provider.test.js +0 -26
  818. package/dist/providers/github-copilot/github-copilot.provider.test.js.map +0 -1
  819. package/dist/providers/github-copilot/index.d.ts +0 -4
  820. package/dist/providers/github-copilot/index.d.ts.map +0 -1
  821. package/dist/providers/github-copilot/index.js +0 -4
  822. package/dist/providers/github-copilot/index.js.map +0 -1
  823. package/dist/providers/github-copilot/model.d.ts +0 -24
  824. package/dist/providers/github-copilot/model.d.ts.map +0 -1
  825. package/dist/providers/github-copilot/model.delta.test.d.ts +0 -2
  826. package/dist/providers/github-copilot/model.delta.test.d.ts.map +0 -1
  827. package/dist/providers/github-copilot/model.delta.test.js +0 -15
  828. package/dist/providers/github-copilot/model.delta.test.js.map +0 -1
  829. package/dist/providers/github-copilot/model.js +0 -498
  830. package/dist/providers/github-copilot/model.js.map +0 -1
  831. package/dist/providers/github-copilot/model.test.d.ts +0 -2
  832. package/dist/providers/github-copilot/model.test.d.ts.map +0 -1
  833. package/dist/providers/github-copilot/model.test.js +0 -63
  834. package/dist/providers/github-copilot/model.test.js.map +0 -1
  835. package/dist/providers/github-copilot/provider.d.ts +0 -15
  836. package/dist/providers/github-copilot/provider.d.ts.map +0 -1
  837. package/dist/providers/github-copilot/provider.js +0 -25
  838. package/dist/providers/github-copilot/provider.js.map +0 -1
  839. package/dist/providers/github-copilot/provider.test.d.ts +0 -2
  840. package/dist/providers/github-copilot/provider.test.d.ts.map +0 -1
  841. package/dist/providers/github-copilot/provider.test.js +0 -52
  842. package/dist/providers/github-copilot/provider.test.js.map +0 -1
  843. package/dist/providers/github-copilot/utils.d.ts +0 -20
  844. package/dist/providers/github-copilot/utils.d.ts.map +0 -1
  845. package/dist/providers/github-copilot/utils.js +0 -142
  846. package/dist/providers/github-copilot/utils.js.map +0 -1
  847. package/dist/providers/github-copilot/utils.test.d.ts +0 -2
  848. package/dist/providers/github-copilot/utils.test.d.ts.map +0 -1
  849. package/dist/providers/github-copilot/utils.test.js +0 -21
  850. package/dist/providers/github-copilot/utils.test.js.map +0 -1
  851. package/dist/providers/openai-compatible/api.d.ts +0 -17
  852. package/dist/providers/openai-compatible/api.d.ts.map +0 -1
  853. package/dist/providers/openai-compatible/api.js +0 -58
  854. package/dist/providers/openai-compatible/api.js.map +0 -1
  855. package/dist/providers/openai-compatible/model.d.ts +0 -17
  856. package/dist/providers/openai-compatible/model.d.ts.map +0 -1
  857. package/dist/providers/openai-compatible/model.js +0 -473
  858. package/dist/providers/openai-compatible/model.js.map +0 -1
  859. package/dist/providers/openai-compatible/provider.d.ts +0 -22
  860. package/dist/providers/openai-compatible/provider.d.ts.map +0 -1
  861. package/dist/providers/openai-compatible/provider.js +0 -43
  862. package/dist/providers/openai-compatible/provider.js.map +0 -1
  863. package/dist/providers/openai-compatible/reasoning-content.test.d.ts +0 -2
  864. package/dist/providers/openai-compatible/reasoning-content.test.d.ts.map +0 -1
  865. package/dist/providers/openai-compatible/reasoning-content.test.js +0 -258
  866. package/dist/providers/openai-compatible/reasoning-content.test.js.map +0 -1
  867. package/dist/providers/openai-compatible/utils.d.ts +0 -3
  868. package/dist/providers/openai-compatible/utils.d.ts.map +0 -1
  869. package/dist/providers/openai-compatible/utils.js +0 -11
  870. package/dist/providers/openai-compatible/utils.js.map +0 -1
  871. package/dist/providers/openrouter/api.d.ts +0 -39
  872. package/dist/providers/openrouter/api.d.ts.map +0 -1
  873. package/dist/providers/openrouter/api.js +0 -164
  874. package/dist/providers/openrouter/api.js.map +0 -1
  875. package/dist/providers/openrouter/converters.d.ts +0 -8
  876. package/dist/providers/openrouter/converters.d.ts.map +0 -1
  877. package/dist/providers/openrouter/converters.js +0 -391
  878. package/dist/providers/openrouter/converters.js.map +0 -1
  879. package/dist/providers/openrouter/converters.test.d.ts +0 -2
  880. package/dist/providers/openrouter/converters.test.d.ts.map +0 -1
  881. package/dist/providers/openrouter/converters.test.js +0 -179
  882. package/dist/providers/openrouter/converters.test.js.map +0 -1
  883. package/dist/providers/openrouter/index.d.ts +0 -4
  884. package/dist/providers/openrouter/index.d.ts.map +0 -1
  885. package/dist/providers/openrouter/index.js +0 -4
  886. package/dist/providers/openrouter/index.js.map +0 -1
  887. package/dist/providers/openrouter/model.d.ts +0 -14
  888. package/dist/providers/openrouter/model.d.ts.map +0 -1
  889. package/dist/providers/openrouter/model.js +0 -457
  890. package/dist/providers/openrouter/model.js.map +0 -1
  891. package/dist/providers/openrouter/provider.d.ts +0 -15
  892. package/dist/providers/openrouter/provider.d.ts.map +0 -1
  893. package/dist/providers/openrouter/provider.js +0 -21
  894. package/dist/providers/openrouter/provider.js.map +0 -1
  895. package/dist/providers/openrouter/reasoning-content.test.d.ts +0 -2
  896. package/dist/providers/openrouter/reasoning-content.test.d.ts.map +0 -1
  897. package/dist/providers/openrouter/reasoning-content.test.js +0 -122
  898. package/dist/providers/openrouter/reasoning-content.test.js.map +0 -1
  899. package/dist/providers/openrouter/utils.d.ts +0 -11
  900. package/dist/providers/openrouter/utils.d.ts.map +0 -1
  901. package/dist/providers/openrouter/utils.js +0 -29
  902. package/dist/providers/openrouter/utils.js.map +0 -1
  903. package/dist/providers/openrouter.api.retry.test.d.ts +0 -2
  904. package/dist/providers/openrouter.api.retry.test.d.ts.map +0 -1
  905. package/dist/providers/openrouter.api.retry.test.js +0 -148
  906. package/dist/providers/openrouter.api.retry.test.js.map +0 -1
  907. package/dist/providers/openrouter.test.d.ts +0 -2
  908. package/dist/providers/openrouter.test.d.ts.map +0 -1
  909. package/dist/providers/openrouter.test.js +0 -1449
  910. package/dist/providers/openrouter.test.js.map +0 -1
  911. package/dist/providers/protocol-client.d.ts +0 -17
  912. package/dist/providers/protocol-client.d.ts.map +0 -1
  913. package/dist/providers/protocol-client.js +0 -57
  914. package/dist/providers/protocol-client.js.map +0 -1
  915. package/dist/providers/protocol-client.test.d.ts +0 -2
  916. package/dist/providers/protocol-client.test.d.ts.map +0 -1
  917. package/dist/providers/protocol-client.test.js +0 -55
  918. package/dist/providers/protocol-client.test.js.map +0 -1
  919. package/dist/safety-checker.js +0 -57
  920. package/dist/services/check_mock.d.ts +0 -2
  921. package/dist/services/check_mock.d.ts.map +0 -1
  922. package/dist/services/check_mock.js +0 -22
  923. package/dist/services/check_mock.js.map +0 -1
  924. package/dist/services/conversation-service.test.d.ts +0 -2
  925. package/dist/services/conversation-service.test.d.ts.map +0 -1
  926. package/dist/services/conversation-service.test.js +0 -156
  927. package/dist/services/conversation-service.test.js.map +0 -1
  928. package/dist/services/conversation-store.merge-modes.removed.d.ts +0 -2
  929. package/dist/services/conversation-store.merge-modes.removed.d.ts.map +0 -1
  930. package/dist/services/conversation-store.merge-modes.removed.js +0 -2
  931. package/dist/services/conversation-store.merge-modes.removed.js.map +0 -1
  932. package/dist/services/repro-error.test.d.ts +0 -2
  933. package/dist/services/repro-error.test.d.ts.map +0 -1
  934. package/dist/services/repro-error.test.js +0 -38
  935. package/dist/services/repro-error.test.js.map +0 -1
  936. package/dist/services/subagents/reasoning-inheritance.test.d.ts +0 -2
  937. package/dist/services/subagents/reasoning-inheritance.test.d.ts.map +0 -1
  938. package/dist/services/subagents/reasoning-inheritance.test.js +0 -73
  939. package/dist/services/subagents/reasoning-inheritance.test.js.map +0 -1
  940. package/dist/tools/bash.d.ts +0 -10
  941. package/dist/tools/bash.d.ts.map +0 -1
  942. package/dist/tools/bash.js +0 -55
  943. package/dist/tools/bash.js.map +0 -1
  944. package/dist/utils/command-safety.d.ts +0 -21
  945. package/dist/utils/command-safety.d.ts.map +0 -1
  946. package/dist/utils/command-safety.devnull.test.d.ts +0 -2
  947. package/dist/utils/command-safety.devnull.test.d.ts.map +0 -1
  948. package/dist/utils/command-safety.devnull.test.js +0 -13
  949. package/dist/utils/command-safety.devnull.test.js.map +0 -1
  950. package/dist/utils/command-safety.js +0 -348
  951. package/dist/utils/command-safety.js.map +0 -1
  952. package/dist/utils/extract-command-messages.test.d.ts +0 -2
  953. package/dist/utils/extract-command-messages.test.d.ts.map +0 -1
  954. package/dist/utils/provider-traffic-extractor.repro.test.d.ts +0 -2
  955. package/dist/utils/provider-traffic-extractor.repro.test.d.ts.map +0 -1
  956. package/dist/utils/provider-traffic-extractor.repro.test.js.map +0 -1
@@ -1,6 +1,10 @@
1
1
  import test from 'ava';
2
2
  import { OpenAIAgentClient } from './openai-agent-client.js';
3
3
  import { registerProvider } from '../providers/registry.js';
4
+ const createSessionContextService = () => ({
5
+ runWithContext: (_context, fn) => fn(),
6
+ getContext: () => null,
7
+ });
4
8
  // ========== Mock Utilities ==========
5
9
  function createMockLogger() {
6
10
  return {
@@ -63,6 +67,8 @@ let chainingProviderRegistered = false;
63
67
  let chainingRunnerCalls = [];
64
68
  let codexProviderRegistered = false;
65
69
  let codexRunnerCalls = [];
70
+ let openaiProviderRegistered = false;
71
+ let openaiRunnerCalls = [];
66
72
  let failingProviderRegistered = false;
67
73
  function ensureMentorProvidersRegistered() {
68
74
  if (!mentorProviderRegistered) {
@@ -127,7 +133,7 @@ function ensureChainingProvidersRegistered() {
127
133
  label: 'Mock Chaining False',
128
134
  createRunner: () => ({
129
135
  run: async (_agent, _input, options) => {
130
- chainingRunnerCalls.push({ options, providerId: 'mock-chaining-false' });
136
+ chainingRunnerCalls.push({ input: _input, options, providerId: 'mock-chaining-false' });
131
137
  return {
132
138
  status: 'completed',
133
139
  finalOutput: 'ok',
@@ -146,7 +152,7 @@ function ensureChainingProvidersRegistered() {
146
152
  label: 'Mock Chaining True',
147
153
  createRunner: () => ({
148
154
  run: async (_agent, _input, options) => {
149
- chainingRunnerCalls.push({ options, providerId: 'mock-chaining-true' });
155
+ chainingRunnerCalls.push({ input: _input, options, providerId: 'mock-chaining-true' });
150
156
  return {
151
157
  status: 'completed',
152
158
  finalOutput: 'ok',
@@ -182,11 +188,37 @@ function ensureCodexProviderRegistered() {
182
188
  capabilities: {
183
189
  supportsConversationChaining: true,
184
190
  supportsTracingControl: true,
191
+ supportsPromptCacheKey: true,
185
192
  },
186
193
  }, { allowOverride: true });
187
194
  codexProviderRegistered = true;
188
195
  }
189
196
  }
197
+ function ensureOpenAIProviderRegistered() {
198
+ if (!openaiProviderRegistered) {
199
+ registerProvider({
200
+ id: 'openai',
201
+ label: 'Mock OpenAI',
202
+ createRunner: () => ({
203
+ run: async (agent, _input, options) => {
204
+ openaiRunnerCalls.push({ agent, options });
205
+ return {
206
+ status: 'completed',
207
+ finalOutput: 'ok',
208
+ messages: [],
209
+ };
210
+ },
211
+ }),
212
+ fetchModels: async () => [{ id: 'mock-model' }],
213
+ capabilities: {
214
+ supportsConversationChaining: true,
215
+ supportsTracingControl: true,
216
+ supportsPromptCacheKey: true,
217
+ },
218
+ }, { allowOverride: true });
219
+ openaiProviderRegistered = true;
220
+ }
221
+ }
190
222
  function ensureFailingProviderRegistered() {
191
223
  if (!failingProviderRegistered) {
192
224
  registerProvider({
@@ -210,6 +242,7 @@ test.beforeEach(() => {
210
242
  ensureMentorProvidersRegistered();
211
243
  ensureChainingProvidersRegistered();
212
244
  ensureCodexProviderRegistered();
245
+ ensureOpenAIProviderRegistered();
213
246
  ensureFailingProviderRegistered();
214
247
  capturedMainAgentForMentorTest = null;
215
248
  mentorInputs = [];
@@ -217,12 +250,13 @@ test.beforeEach(() => {
217
250
  mentorResponseCounter = 0;
218
251
  chainingRunnerCalls = [];
219
252
  codexRunnerCalls = [];
253
+ openaiRunnerCalls = [];
220
254
  });
221
255
  // ========== setModel tests ==========
222
256
  test.serial('setModel updates the internal model', async (t) => {
223
257
  const settings = createMockSettings();
224
258
  const client = new OpenAIAgentClient({
225
- deps: { logger: createMockLogger(), settings },
259
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
226
260
  });
227
261
  // Set a new model
228
262
  client.setModel('gpt-4-turbo');
@@ -237,14 +271,14 @@ test.serial('setModel updates the internal model', async (t) => {
237
271
  test.serial('getProvider returns current provider', (t) => {
238
272
  const settings = createMockSettings({ 'agent.provider': 'mock-provider-public-methods' });
239
273
  const client = new OpenAIAgentClient({
240
- deps: { logger: createMockLogger(), settings },
274
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
241
275
  });
242
276
  t.is(client.getProvider(), 'mock-provider-public-methods');
243
277
  });
244
278
  test.serial('setProvider updates provider and persists to settings', (t) => {
245
279
  const settings = createMockSettings({ 'agent.provider': 'mock-provider-public-methods' });
246
280
  const client = new OpenAIAgentClient({
247
- deps: { logger: createMockLogger(), settings },
281
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
248
282
  });
249
283
  client.setProvider('openai');
250
284
  t.is(client.getProvider(), 'openai');
@@ -253,7 +287,7 @@ test.serial('setProvider updates provider and persists to settings', (t) => {
253
287
  test.serial('setProvider does not initialize provider credentials eagerly', async (t) => {
254
288
  const settings = createMockSettings({ 'agent.provider': 'mock-provider-public-methods' });
255
289
  const client = new OpenAIAgentClient({
256
- deps: { logger: createMockLogger(), settings },
290
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
257
291
  });
258
292
  client.setProvider('mock-missing-creds');
259
293
  t.is(client.getProvider(), 'mock-missing-creds');
@@ -266,7 +300,7 @@ test.serial('startStream only passes previousResponseId when provider supports c
266
300
  'agent.provider': 'mock-chaining-false',
267
301
  });
268
302
  const client = new OpenAIAgentClient({
269
- deps: { logger: createMockLogger(), settings },
303
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
270
304
  });
271
305
  await client.startStream('Hello', { previousResponseId: 'prev-1' });
272
306
  t.is(chainingRunnerCalls.length, 1);
@@ -276,18 +310,203 @@ test.serial('startStream only passes previousResponseId when provider supports c
276
310
  t.is(chainingRunnerCalls.length, 2);
277
311
  t.is(chainingRunnerCalls[1].options.previousResponseId, 'prev-2');
278
312
  });
313
+ test.serial('continueRunStream filters replayed history to delta input when chaining from previousResponseId', async (t) => {
314
+ const settings = createMockSettings({
315
+ 'agent.provider': 'mock-chaining-true',
316
+ });
317
+ const client = new OpenAIAgentClient({
318
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
319
+ });
320
+ const state = {
321
+ _context: { context: { turnCount: 0 } },
322
+ _generatedItems: [
323
+ { rawItem: { type: 'function_call', callId: 'call-read', name: 'read_file', arguments: '{}' } },
324
+ { rawItem: { type: 'function_call_output', callId: 'call-read', output: 'done' } },
325
+ ],
326
+ };
327
+ await client.continueRunStream(state, { previousResponseId: 'resp-prev' });
328
+ t.is(chainingRunnerCalls.length, 1);
329
+ const call = chainingRunnerCalls[0];
330
+ t.is(call.input, state);
331
+ t.is(call.options.previousResponseId, 'resp-prev');
332
+ const filtered = call.options.callModelInputFilter({
333
+ context: { turnCount: 0 },
334
+ modelData: {
335
+ input: [
336
+ { role: 'user', type: 'message', content: 'inspect file' },
337
+ { role: 'assistant', type: 'message', content: [{ type: 'output_text', text: 'I will inspect it.' }] },
338
+ { type: 'function_call', callId: 'call-read', name: 'read_file', arguments: '{}' },
339
+ { type: 'function_call_output', callId: 'call-read', output: 'done' },
340
+ ],
341
+ instructions: 'system',
342
+ },
343
+ });
344
+ t.deepEqual(filtered.input, [{ type: 'function_call_output', callId: 'call-read', output: 'done' }]);
345
+ t.is(filtered.instructions, 'system');
346
+ });
347
+ test.serial('continueRunStream filters replayed history to delta input with function_call_output_result and tool_call_output_item', async (t) => {
348
+ const settings = createMockSettings({
349
+ 'agent.provider': 'mock-chaining-true',
350
+ });
351
+ const client = new OpenAIAgentClient({
352
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
353
+ });
354
+ await client.continueRunStream({ _context: { context: { turnCount: 0 } } }, { previousResponseId: 'resp-prev' });
355
+ const filtered = chainingRunnerCalls[0].options.callModelInputFilter({
356
+ context: { turnCount: 0 },
357
+ modelData: {
358
+ input: [
359
+ { role: 'user', type: 'message', content: 'inspect file' },
360
+ { role: 'assistant', type: 'message', content: [{ type: 'output_text', text: 'I will inspect it.' }] },
361
+ { type: 'function_call', callId: 'call-read', name: 'read_file', arguments: '{}' },
362
+ { type: 'function_call_output_result', callId: 'call-read', output: 'done' },
363
+ { type: 'tool_call_output_item', callId: 'call-read', output: 'done' },
364
+ ],
365
+ instructions: 'system',
366
+ },
367
+ });
368
+ t.deepEqual(filtered.input, [
369
+ { type: 'function_call_output_result', callId: 'call-read', output: 'done' },
370
+ { type: 'tool_call_output_item', callId: 'call-read', output: 'done' },
371
+ ]);
372
+ });
373
+ test.serial('continueRunStream keeps the latest user item when chained model input replays full history', async (t) => {
374
+ const settings = createMockSettings({
375
+ 'agent.provider': 'mock-chaining-true',
376
+ });
377
+ const client = new OpenAIAgentClient({
378
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
379
+ });
380
+ await client.continueRunStream({ _context: { context: { turnCount: 0 } } }, { previousResponseId: 'resp-prev' });
381
+ const filtered = chainingRunnerCalls[0].options.callModelInputFilter({
382
+ context: { turnCount: 0 },
383
+ modelData: {
384
+ input: [
385
+ { role: 'user', type: 'message', content: 'first' },
386
+ { role: 'assistant', type: 'message', content: [{ type: 'output_text', text: 'first response' }] },
387
+ { role: 'user', type: 'message', content: 'second' },
388
+ ],
389
+ instructions: 'system',
390
+ },
391
+ });
392
+ t.deepEqual(filtered.input, [{ role: 'user', type: 'message', content: 'second' }]);
393
+ });
394
+ test.serial('startStream filters replayed history to delta input when chaining from previousResponseId', async (t) => {
395
+ const settings = createMockSettings({
396
+ 'agent.provider': 'mock-chaining-true',
397
+ });
398
+ const client = new OpenAIAgentClient({
399
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
400
+ });
401
+ await client.startStream('inspect file', { previousResponseId: 'resp-prev' });
402
+ t.is(chainingRunnerCalls.length, 1);
403
+ const call = chainingRunnerCalls[0];
404
+ t.is(call.options.previousResponseId, 'resp-prev');
405
+ const filtered = call.options.callModelInputFilter({
406
+ context: { turnCount: 0 },
407
+ modelData: {
408
+ input: [
409
+ { role: 'user', type: 'message', content: 'inspect file' },
410
+ { role: 'assistant', type: 'message', content: [{ type: 'output_text', text: 'I will inspect it.' }] },
411
+ { type: 'function_call', callId: 'call-read', name: 'read_file', arguments: '{}' },
412
+ { type: 'function_call_output', callId: 'call-read', output: 'done' },
413
+ ],
414
+ instructions: 'system',
415
+ },
416
+ });
417
+ t.deepEqual(filtered.input, [{ type: 'function_call_output', callId: 'call-read', output: 'done' }]);
418
+ t.is(filtered.instructions, 'system');
419
+ });
420
+ test.serial('continueRun filters replayed history to delta input when chaining from previousResponseId', async (t) => {
421
+ const settings = createMockSettings({
422
+ 'agent.provider': 'mock-chaining-true',
423
+ });
424
+ const client = new OpenAIAgentClient({
425
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
426
+ });
427
+ const state = {
428
+ _context: { context: { turnCount: 0 } },
429
+ _generatedItems: [
430
+ { rawItem: { type: 'function_call', callId: 'call-read', name: 'read_file', arguments: '{}' } },
431
+ { rawItem: { type: 'function_call_output', callId: 'call-read', output: 'done' } },
432
+ ],
433
+ };
434
+ await client.continueRun(state, { previousResponseId: 'resp-prev' });
435
+ t.is(chainingRunnerCalls.length, 1);
436
+ const call = chainingRunnerCalls[0];
437
+ t.is(call.input, state);
438
+ t.is(call.options.previousResponseId, 'resp-prev');
439
+ const filtered = call.options.callModelInputFilter({
440
+ context: { turnCount: 0 },
441
+ modelData: {
442
+ input: [
443
+ { role: 'user', type: 'message', content: 'inspect file' },
444
+ { role: 'assistant', type: 'message', content: [{ type: 'output_text', text: 'I will inspect it.' }] },
445
+ { type: 'function_call', callId: 'call-read', name: 'read_file', arguments: '{}' },
446
+ { type: 'function_call_output', callId: 'call-read', output: 'done' },
447
+ ],
448
+ instructions: 'system',
449
+ },
450
+ });
451
+ t.deepEqual(filtered.input, [{ type: 'function_call_output', callId: 'call-read', output: 'done' }]);
452
+ t.is(filtered.instructions, 'system');
453
+ });
454
+ test.serial('continueRunStream filters and keeps user message even with custom type', async (t) => {
455
+ const settings = createMockSettings({
456
+ 'agent.provider': 'mock-chaining-true',
457
+ });
458
+ const client = new OpenAIAgentClient({
459
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
460
+ });
461
+ await client.continueRunStream({ _context: { context: { turnCount: 0 } } }, { previousResponseId: 'resp-prev' });
462
+ const filtered = chainingRunnerCalls[0].options.callModelInputFilter({
463
+ context: { turnCount: 0 },
464
+ modelData: {
465
+ input: [
466
+ { role: 'user', type: 'message', content: 'first' },
467
+ { role: 'assistant', type: 'message', content: [{ type: 'output_text', text: 'first response' }] },
468
+ { role: 'user', type: 'custom_input_type', content: 'second' },
469
+ ],
470
+ instructions: 'system',
471
+ },
472
+ });
473
+ t.deepEqual(filtered.input, [{ role: 'user', type: 'custom_input_type', content: 'second' }]);
474
+ });
279
475
  test.serial('codex startStream puts prompt_cache_key on agent modelSettings, not run options', async (t) => {
280
476
  const settings = createMockSettings({
281
477
  'agent.provider': 'codex',
282
478
  });
283
479
  const client = new OpenAIAgentClient({
284
- deps: { logger: createMockLogger(), settings },
480
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
285
481
  });
286
482
  await client.startStream('Hello', { sessionId: 'session-123' });
287
483
  t.is(codexRunnerCalls.length, 1);
288
484
  t.is(codexRunnerCalls[0].agent.modelSettings.prompt_cache_key, 'session-123');
289
485
  t.false('modelSettings' in codexRunnerCalls[0].options);
290
486
  });
487
+ test.serial('openai startStream puts prompt_cache_key on agent modelSettings, not run options', async (t) => {
488
+ const settings = createMockSettings({
489
+ 'agent.provider': 'openai',
490
+ });
491
+ const client = new OpenAIAgentClient({
492
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
493
+ });
494
+ await client.startStream('Hello', { sessionId: 'session-456' });
495
+ t.is(openaiRunnerCalls.length, 1);
496
+ t.is(openaiRunnerCalls[0].agent.modelSettings.prompt_cache_key, 'session-456');
497
+ t.false('modelSettings' in openaiRunnerCalls[0].options);
498
+ });
499
+ test.serial('startStream omits prompt_cache_key when provider does not support it', async (t) => {
500
+ const settings = createMockSettings({
501
+ 'agent.provider': 'mock-provider-public-methods',
502
+ });
503
+ const client = new OpenAIAgentClient({
504
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
505
+ });
506
+ await client.startStream('Hello', { sessionId: 'session-789' });
507
+ t.is(runnerCalls.length, 1);
508
+ t.falsy(runnerCalls[0].agent.modelSettings?.prompt_cache_key);
509
+ });
291
510
  test.serial('abort logs with active trace id before clearing correlation', async (t) => {
292
511
  const debugLogs = [];
293
512
  let correlationId;
@@ -312,7 +531,7 @@ test.serial('abort logs with active trace id before clearing correlation', async
312
531
  'agent.provider': 'mock-chaining-false',
313
532
  });
314
533
  const client = new OpenAIAgentClient({
315
- deps: { logger, settings },
534
+ deps: { logger, settings, sessionContextService: createSessionContextService() },
316
535
  });
317
536
  await client.startStream('Hello');
318
537
  const activeCorrelationId = correlationId;
@@ -328,7 +547,7 @@ test.serial('abort logs with active trace id before clearing correlation', async
328
547
  test.serial('addToolInterceptor returns removal function', (t) => {
329
548
  const settings = createMockSettings();
330
549
  const client = new OpenAIAgentClient({
331
- deps: { logger: createMockLogger(), settings },
550
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
332
551
  });
333
552
  const remove = client.addToolInterceptor(async () => {
334
553
  return null;
@@ -341,7 +560,7 @@ test.serial('addToolInterceptor returns removal function', (t) => {
341
560
  test.serial('addToolInterceptor can be removed', (t) => {
342
561
  const settings = createMockSettings();
343
562
  const client = new OpenAIAgentClient({
344
- deps: { logger: createMockLogger(), settings },
563
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
345
564
  });
346
565
  const remove = client.addToolInterceptor(async () => {
347
566
  return null;
@@ -356,7 +575,7 @@ test.serial('addToolInterceptor can be removed', (t) => {
356
575
  test.serial('abort does not throw when called without active operation', (t) => {
357
576
  const settings = createMockSettings();
358
577
  const client = new OpenAIAgentClient({
359
- deps: { logger: createMockLogger(), settings },
578
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
360
579
  });
361
580
  // Should not throw
362
581
  t.notThrows(() => client.abort());
@@ -364,7 +583,7 @@ test.serial('abort does not throw when called without active operation', (t) =>
364
583
  test.serial('abort can be called multiple times', (t) => {
365
584
  const settings = createMockSettings();
366
585
  const client = new OpenAIAgentClient({
367
- deps: { logger: createMockLogger(), settings },
586
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
368
587
  });
369
588
  t.notThrows(() => {
370
589
  client.abort();
@@ -376,14 +595,14 @@ test.serial('abort can be called multiple times', (t) => {
376
595
  test.serial('clearConversations does not throw', (t) => {
377
596
  const settings = createMockSettings();
378
597
  const client = new OpenAIAgentClient({
379
- deps: { logger: createMockLogger(), settings },
598
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
380
599
  });
381
600
  t.notThrows(() => client.clearConversations());
382
601
  });
383
602
  test.serial('clearConversations can be called multiple times', (t) => {
384
603
  const settings = createMockSettings();
385
604
  const client = new OpenAIAgentClient({
386
- deps: { logger: createMockLogger(), settings },
605
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
387
606
  });
388
607
  t.notThrows(() => {
389
608
  client.clearConversations();
@@ -394,7 +613,7 @@ test.serial('clearConversations can be called multiple times', (t) => {
394
613
  test.serial('setReasoningEffort accepts valid effort levels', (t) => {
395
614
  const settings = createMockSettings();
396
615
  const client = new OpenAIAgentClient({
397
- deps: { logger: createMockLogger(), settings },
616
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
398
617
  });
399
618
  t.notThrows(() => client.setReasoningEffort('high'));
400
619
  t.notThrows(() => client.setReasoningEffort('medium'));
@@ -406,7 +625,7 @@ test.serial('setReasoningEffort accepts valid effort levels', (t) => {
406
625
  test.serial('setTemperature accepts numeric values', (t) => {
407
626
  const settings = createMockSettings();
408
627
  const client = new OpenAIAgentClient({
409
- deps: { logger: createMockLogger(), settings },
628
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
410
629
  });
411
630
  t.notThrows(() => client.setTemperature(0.5));
412
631
  t.notThrows(() => client.setTemperature(1.0));
@@ -417,10 +636,45 @@ test.serial('setTemperature accepts numeric values', (t) => {
417
636
  test.serial('setRetryCallback accepts callback function', (t) => {
418
637
  const settings = createMockSettings();
419
638
  const client = new OpenAIAgentClient({
420
- deps: { logger: createMockLogger(), settings },
639
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
421
640
  });
422
641
  t.notThrows(() => client.setRetryCallback(() => { }));
423
642
  });
643
+ test.serial('setAskUserAnswer stores and consumes answers by call id', (t) => {
644
+ const settings = createMockSettings();
645
+ const client = new OpenAIAgentClient({
646
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
647
+ });
648
+ client.setAskUserAnswer('call-1', 'Use the existing config');
649
+ t.is(client.getAskUserAnswer('call-1'), 'Use the existing config');
650
+ t.is(client.getAskUserAnswer('call-1'), undefined);
651
+ });
652
+ test.serial('getAskUserAnswer returns undefined for unknown call ids', (t) => {
653
+ const settings = createMockSettings();
654
+ const client = new OpenAIAgentClient({
655
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
656
+ });
657
+ t.is(client.getAskUserAnswer('missing-call'), undefined);
658
+ t.is(client.getAskUserAnswer(), undefined);
659
+ });
660
+ test.serial('ask_user tool executes using the stored approval answer', async (t) => {
661
+ const settings = createMockSettings({
662
+ 'agent.provider': 'mock-main-mentor-refresh',
663
+ 'agent.model': 'mock-model',
664
+ 'app.liteMode': false,
665
+ });
666
+ const client = new OpenAIAgentClient({
667
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
668
+ });
669
+ await client.chat('prime tools');
670
+ const askUserTool = capturedMainAgentForMentorTest?.tools?.find((tool) => tool?.name === 'ask_user');
671
+ t.truthy(askUserTool);
672
+ t.is(typeof askUserTool?.invoke, 'function');
673
+ client.setAskUserAnswer('call-bridge', 'Use the safe option');
674
+ const result = await askUserTool.invoke({}, JSON.stringify({ question: 'Which option should I use?', options: ['Use the safe option', 'Ask later'] }), { toolCall: { callId: 'call-bridge' } });
675
+ t.is(result, 'Use the safe option');
676
+ t.is(client.getAskUserAnswer('call-bridge'), undefined);
677
+ });
424
678
  test.serial('setModel resets mentor conversation chain used by ask_mentor', async (t) => {
425
679
  const settings = createMockSettings({
426
680
  'agent.provider': 'mock-main-mentor-refresh',
@@ -430,7 +684,7 @@ test.serial('setModel resets mentor conversation chain used by ask_mentor', asyn
430
684
  'app.liteMode': false,
431
685
  });
432
686
  const client = new OpenAIAgentClient({
433
- deps: { logger: createMockLogger(), settings },
687
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
434
688
  });
435
689
  await client.chat('prime tools');
436
690
  const askMentorTool = capturedMainAgentForMentorTest?.tools?.find((tool) => tool?.name === 'ask_mentor');
@@ -458,7 +712,7 @@ test.serial('ask_mentor resets conversation chain when mentor provider changes',
458
712
  'app.liteMode': false,
459
713
  });
460
714
  const client = new OpenAIAgentClient({
461
- deps: { logger: createMockLogger(), settings },
715
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
462
716
  });
463
717
  await client.chat('prime tools');
464
718
  const askMentorTool = capturedMainAgentForMentorTest?.tools?.find((tool) => tool?.name === 'ask_mentor');
@@ -505,7 +759,7 @@ test.serial('setSubagentEventSink defers cleanup to null when subagents are acti
505
759
  'app.liteMode': false,
506
760
  });
507
761
  const client = new OpenAIAgentClient({
508
- deps: { logger: createMockLogger(), settings },
762
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
509
763
  });
510
764
  await client.chat('prime tools');
511
765
  const askMentorTool = capturedMainAgentForMentorTest?.tools?.find((tool) => tool?.name === 'ask_mentor');
@@ -557,7 +811,7 @@ test.serial('codex resolves default_reasoning_level if agent.reasoningEffort is
557
811
  },
558
812
  }, { allowOverride: true });
559
813
  const client = new OpenAIAgentClient({
560
- deps: { logger: createMockLogger(), settings },
814
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
561
815
  });
562
816
  await client.startStream('Hello');
563
817
  t.is(codexRunnerCalls.length, 1);
@@ -592,7 +846,7 @@ test.serial('codex chat resolves default_reasoning_level if agent.reasoningEffor
592
846
  },
593
847
  }, { allowOverride: true });
594
848
  const client = new OpenAIAgentClient({
595
- deps: { logger: createMockLogger(), settings },
849
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
596
850
  });
597
851
  await client.chat('Hello', { provider: 'codex', model: 'gpt-5.3-codex', reasoningEffort: 'default' });
598
852
  t.is(codexRunnerCalls.length, 1);
@@ -600,4 +854,53 @@ test.serial('codex chat resolves default_reasoning_level if agent.reasoningEffor
600
854
  t.truthy(agent);
601
855
  t.is(agent.modelSettings?.reasoning?.effort, 'medium');
602
856
  });
857
+ test.serial('main agent client injects warning into tool output when turns left <= 5', async (t) => {
858
+ let executeOutput = null;
859
+ registerProvider({
860
+ id: 'mock-provider-maxturns',
861
+ label: 'Mock Provider MaxTurns',
862
+ createRunner: () => ({
863
+ run: async (agent, _input, options) => {
864
+ if (options.callModelInputFilter) {
865
+ // Simulate 96 turns
866
+ for (let i = 0; i < 96; i++) {
867
+ await options.callModelInputFilter({
868
+ modelData: { input: [] },
869
+ agent,
870
+ context: options.context,
871
+ });
872
+ }
873
+ }
874
+ // Execute a tool to see if the warning is injected
875
+ const readFileTool = agent.tools.find((tool) => tool.name === 'read_file');
876
+ if (readFileTool) {
877
+ const mockRunContext = {
878
+ context: options.context,
879
+ };
880
+ executeOutput = await readFileTool.invoke(mockRunContext, JSON.stringify({ path: 'package.json' }), {});
881
+ }
882
+ return {
883
+ status: 'completed',
884
+ finalOutput: 'done',
885
+ history: [],
886
+ messages: [],
887
+ };
888
+ },
889
+ }),
890
+ fetchModels: async () => [{ id: 'mock-model' }],
891
+ });
892
+ const settings = createMockSettings({
893
+ 'agent.provider': 'mock-provider-maxturns',
894
+ 'agent.model': 'mock-model',
895
+ });
896
+ const client = new OpenAIAgentClient({
897
+ maxTurns: 100,
898
+ deps: { logger: createMockLogger(), settings, sessionContextService: createSessionContextService() },
899
+ });
900
+ // Trigger startStream to initiate the provider run with correct context
901
+ await client.startStream('Hello');
902
+ t.truthy(executeOutput);
903
+ t.true(executeOutput.includes('approaching the maximum turn limit'), 'should contain max turns warning');
904
+ t.true(executeOutput.includes('4 turns left'), 'should indicate correct number of turns left');
905
+ });
603
906
  //# sourceMappingURL=openai-agent-client.public-methods.test.js.map