@qduc/term2 0.6.0 → 0.6.1

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 (442) hide show
  1. package/dist/agent.d.ts.map +1 -1
  2. package/dist/agent.js +11 -9
  3. package/dist/agent.js.map +1 -1
  4. package/dist/agent.lite-mode.test.d.ts +2 -0
  5. package/dist/agent.lite-mode.test.d.ts.map +1 -0
  6. package/dist/agent.lite-mode.test.js +39 -0
  7. package/dist/agent.lite-mode.test.js.map +1 -0
  8. package/dist/agent.test.js +17 -4
  9. package/dist/agent.test.js.map +1 -1
  10. package/dist/app.d.ts +4 -2
  11. package/dist/app.d.ts.map +1 -1
  12. package/dist/app.js +24 -1
  13. package/dist/app.js.map +1 -1
  14. package/dist/cli.js +53 -24
  15. package/dist/cli.js.map +1 -1
  16. package/dist/components/ApprovalPrompt.test.d.ts +2 -0
  17. package/dist/components/ApprovalPrompt.test.d.ts.map +1 -0
  18. package/dist/components/ApprovalPrompt.test.js +23 -0
  19. package/dist/components/ApprovalPrompt.test.js.map +1 -0
  20. package/dist/components/LiveResponse.test.d.ts +2 -0
  21. package/dist/components/LiveResponse.test.d.ts.map +1 -0
  22. package/dist/components/LiveResponse.test.js +13 -0
  23. package/dist/components/LiveResponse.test.js.map +1 -0
  24. package/dist/components/ModelSelectionMenu.error-tabs.test.d.ts +2 -0
  25. package/dist/components/ModelSelectionMenu.error-tabs.test.d.ts.map +1 -0
  26. package/dist/components/ModelSelectionMenu.error-tabs.test.js +18 -0
  27. package/dist/components/ModelSelectionMenu.error-tabs.test.js.map +1 -0
  28. package/dist/components/TextInput.d.ts +42 -0
  29. package/dist/components/TextInput.d.ts.map +1 -0
  30. package/dist/components/TextInput.js +398 -0
  31. package/dist/components/TextInput.js.map +1 -0
  32. package/dist/components/TextInput.test.d.ts +2 -0
  33. package/dist/components/TextInput.test.d.ts.map +1 -0
  34. package/dist/components/TextInput.test.js +75 -0
  35. package/dist/components/TextInput.test.js.map +1 -0
  36. package/dist/debug_ask_mentor.d.ts +2 -0
  37. package/dist/debug_ask_mentor.d.ts.map +1 -0
  38. package/dist/debug_ask_mentor.js +73 -0
  39. package/dist/debug_ask_mentor.js.map +1 -0
  40. package/dist/hooks/use-conversation.clear.test.d.ts +2 -0
  41. package/dist/hooks/use-conversation.clear.test.d.ts.map +1 -0
  42. package/dist/hooks/use-conversation.clear.test.js +49 -0
  43. package/dist/hooks/use-conversation.clear.test.js.map +1 -0
  44. package/dist/hooks/use-conversation.d.ts +5 -2
  45. package/dist/hooks/use-conversation.d.ts.map +1 -1
  46. package/dist/hooks/use-conversation.js +10 -4
  47. package/dist/hooks/use-conversation.js.map +1 -1
  48. package/dist/hooks/use-conversation.max-turns-undo.test.d.ts +2 -0
  49. package/dist/hooks/use-conversation.max-turns-undo.test.d.ts.map +1 -0
  50. package/dist/hooks/use-conversation.max-turns-undo.test.js +118 -0
  51. package/dist/hooks/use-conversation.max-turns-undo.test.js.map +1 -0
  52. package/dist/lib/openai-agent-client.chat.test.js +40 -0
  53. package/dist/lib/openai-agent-client.chat.test.js.map +1 -1
  54. package/dist/lib/openai-agent-client.d.ts +8 -1
  55. package/dist/lib/openai-agent-client.d.ts.map +1 -1
  56. package/dist/lib/openai-agent-client.js +43 -1
  57. package/dist/lib/openai-agent-client.js.map +1 -1
  58. package/dist/lib/retry-executor.js +45 -7
  59. package/dist/lib/retry-executor.js.map +1 -1
  60. package/dist/lib/retry-executor.test.js +63 -0
  61. package/dist/lib/retry-executor.test.js.map +1 -1
  62. package/dist/lib/shell.d.ts +7 -0
  63. package/dist/lib/shell.d.ts.map +1 -0
  64. package/dist/lib/shell.js +56 -0
  65. package/dist/lib/shell.js.map +1 -0
  66. package/dist/modes/companion/command-index.d.ts +26 -0
  67. package/dist/modes/companion/command-index.d.ts.map +1 -0
  68. package/dist/modes/companion/command-index.js +50 -0
  69. package/dist/modes/companion/command-index.js.map +1 -0
  70. package/dist/modes/companion/command-index.test.d.ts +2 -0
  71. package/dist/modes/companion/command-index.test.d.ts.map +1 -0
  72. package/dist/modes/companion/command-index.test.js +86 -0
  73. package/dist/modes/companion/command-index.test.js.map +1 -0
  74. package/dist/modes/companion/companion-app.d.ts +12 -0
  75. package/dist/modes/companion/companion-app.d.ts.map +1 -0
  76. package/dist/modes/companion/companion-app.js +297 -0
  77. package/dist/modes/companion/companion-app.js.map +1 -0
  78. package/dist/modes/companion/companion-session.d.ts +63 -0
  79. package/dist/modes/companion/companion-session.d.ts.map +1 -0
  80. package/dist/modes/companion/companion-session.js +146 -0
  81. package/dist/modes/companion/companion-session.js.map +1 -0
  82. package/dist/modes/companion/companion-session.test.d.ts +2 -0
  83. package/dist/modes/companion/companion-session.test.d.ts.map +1 -0
  84. package/dist/modes/companion/companion-session.test.js +28 -0
  85. package/dist/modes/companion/companion-session.test.js.map +1 -0
  86. package/dist/modes/companion/components/status-bar.d.ts +13 -0
  87. package/dist/modes/companion/components/status-bar.d.ts.map +1 -0
  88. package/dist/modes/companion/components/status-bar.js +26 -0
  89. package/dist/modes/companion/components/status-bar.js.map +1 -0
  90. package/dist/modes/companion/context-buffer.d.ts +65 -0
  91. package/dist/modes/companion/context-buffer.d.ts.map +1 -0
  92. package/dist/modes/companion/context-buffer.js +156 -0
  93. package/dist/modes/companion/context-buffer.js.map +1 -0
  94. package/dist/modes/companion/context-buffer.test.d.ts +2 -0
  95. package/dist/modes/companion/context-buffer.test.d.ts.map +1 -0
  96. package/dist/modes/companion/context-buffer.test.js +154 -0
  97. package/dist/modes/companion/context-buffer.test.js.map +1 -0
  98. package/dist/modes/companion/event-detector.d.ts +46 -0
  99. package/dist/modes/companion/event-detector.d.ts.map +1 -0
  100. package/dist/modes/companion/event-detector.js +169 -0
  101. package/dist/modes/companion/event-detector.js.map +1 -0
  102. package/dist/modes/companion/event-detector.test.d.ts +2 -0
  103. package/dist/modes/companion/event-detector.test.d.ts.map +1 -0
  104. package/dist/modes/companion/event-detector.test.js +121 -0
  105. package/dist/modes/companion/event-detector.test.js.map +1 -0
  106. package/dist/modes/companion/index.d.ts +33 -0
  107. package/dist/modes/companion/index.d.ts.map +1 -0
  108. package/dist/modes/companion/index.js +21 -0
  109. package/dist/modes/companion/index.js.map +1 -0
  110. package/dist/modes/companion/input-key-mapper.d.ts +3 -0
  111. package/dist/modes/companion/input-key-mapper.d.ts.map +1 -0
  112. package/dist/modes/companion/input-key-mapper.js +31 -0
  113. package/dist/modes/companion/input-key-mapper.js.map +1 -0
  114. package/dist/modes/companion/input-key-mapper.test.d.ts +2 -0
  115. package/dist/modes/companion/input-key-mapper.test.d.ts.map +1 -0
  116. package/dist/modes/companion/input-key-mapper.test.js +26 -0
  117. package/dist/modes/companion/input-key-mapper.test.js.map +1 -0
  118. package/dist/modes/companion/input-parser.d.ts +53 -0
  119. package/dist/modes/companion/input-parser.d.ts.map +1 -0
  120. package/dist/modes/companion/input-parser.js +114 -0
  121. package/dist/modes/companion/input-parser.js.map +1 -0
  122. package/dist/modes/companion/input-parser.test.d.ts +2 -0
  123. package/dist/modes/companion/input-parser.test.d.ts.map +1 -0
  124. package/dist/modes/companion/input-parser.test.js +123 -0
  125. package/dist/modes/companion/input-parser.test.js.map +1 -0
  126. package/dist/modes/companion/mode-manager.d.ts +41 -0
  127. package/dist/modes/companion/mode-manager.d.ts.map +1 -0
  128. package/dist/modes/companion/mode-manager.js +56 -0
  129. package/dist/modes/companion/mode-manager.js.map +1 -0
  130. package/dist/modes/companion/mode-manager.test.d.ts +2 -0
  131. package/dist/modes/companion/mode-manager.test.d.ts.map +1 -0
  132. package/dist/modes/companion/mode-manager.test.js +65 -0
  133. package/dist/modes/companion/mode-manager.test.js.map +1 -0
  134. package/dist/modes/companion/output-classifier.d.ts +15 -0
  135. package/dist/modes/companion/output-classifier.d.ts.map +1 -0
  136. package/dist/modes/companion/output-classifier.js +77 -0
  137. package/dist/modes/companion/output-classifier.js.map +1 -0
  138. package/dist/modes/companion/output-classifier.test.d.ts +2 -0
  139. package/dist/modes/companion/output-classifier.test.d.ts.map +1 -0
  140. package/dist/modes/companion/output-classifier.test.js +133 -0
  141. package/dist/modes/companion/output-classifier.test.js.map +1 -0
  142. package/dist/modes/companion/pty-wrapper.d.ts +46 -0
  143. package/dist/modes/companion/pty-wrapper.d.ts.map +1 -0
  144. package/dist/modes/companion/pty-wrapper.js +143 -0
  145. package/dist/modes/companion/pty-wrapper.js.map +1 -0
  146. package/dist/modes/companion/safety-classifier.d.ts +31 -0
  147. package/dist/modes/companion/safety-classifier.d.ts.map +1 -0
  148. package/dist/modes/companion/safety-classifier.js +140 -0
  149. package/dist/modes/companion/safety-classifier.js.map +1 -0
  150. package/dist/modes/companion/safety-classifier.test.d.ts +2 -0
  151. package/dist/modes/companion/safety-classifier.test.d.ts.map +1 -0
  152. package/dist/modes/companion/safety-classifier.test.js +151 -0
  153. package/dist/modes/companion/safety-classifier.test.js.map +1 -0
  154. package/dist/modes/companion/summarizer.d.ts +24 -0
  155. package/dist/modes/companion/summarizer.d.ts.map +1 -0
  156. package/dist/modes/companion/summarizer.js +132 -0
  157. package/dist/modes/companion/summarizer.js.map +1 -0
  158. package/dist/modes/companion/terminal-history.d.ts +27 -0
  159. package/dist/modes/companion/terminal-history.d.ts.map +1 -0
  160. package/dist/modes/companion/terminal-history.js +142 -0
  161. package/dist/modes/companion/terminal-history.js.map +1 -0
  162. package/dist/non-interactive.d.ts +1 -0
  163. package/dist/non-interactive.d.ts.map +1 -1
  164. package/dist/non-interactive.js +3 -1
  165. package/dist/non-interactive.js.map +1 -1
  166. package/dist/non-interactive.test.js +8 -1
  167. package/dist/non-interactive.test.js.map +1 -1
  168. package/dist/prompts/gpt-5.md +4 -7
  169. package/dist/prompts/simple-mentor.md +215 -0
  170. package/dist/providers/ai-sdk-logging-fetch.d.ts +1 -1
  171. package/dist/providers/ai-sdk-logging-fetch.d.ts.map +1 -1
  172. package/dist/providers/ai-sdk-logging-fetch.js +67 -44
  173. package/dist/providers/ai-sdk-logging-fetch.js.map +1 -1
  174. package/dist/providers/ai-sdk-logging-fetch.test.js +59 -5
  175. package/dist/providers/ai-sdk-logging-fetch.test.js.map +1 -1
  176. package/dist/providers/ai-sdk-openai-compatible.provider.d.ts +2 -0
  177. package/dist/providers/ai-sdk-openai-compatible.provider.d.ts.map +1 -1
  178. package/dist/providers/ai-sdk-openai-compatible.provider.js +8 -4
  179. package/dist/providers/ai-sdk-openai-compatible.provider.js.map +1 -1
  180. package/dist/providers/ai-sdk-openai-compatible.provider.test.js +119 -1
  181. package/dist/providers/ai-sdk-openai-compatible.provider.test.js.map +1 -1
  182. package/dist/providers/ai-sdk-openai.provider.d.ts +14 -0
  183. package/dist/providers/ai-sdk-openai.provider.d.ts.map +1 -0
  184. package/dist/providers/ai-sdk-openai.provider.js +18 -0
  185. package/dist/providers/ai-sdk-openai.provider.js.map +1 -0
  186. package/dist/providers/github-copilot/converters.d.ts +45 -0
  187. package/dist/providers/github-copilot/converters.d.ts.map +1 -0
  188. package/dist/providers/github-copilot/converters.js +118 -0
  189. package/dist/providers/github-copilot/converters.js.map +1 -0
  190. package/dist/providers/github-copilot/converters.test.d.ts +2 -0
  191. package/dist/providers/github-copilot/converters.test.d.ts.map +1 -0
  192. package/dist/providers/github-copilot/converters.test.js +162 -0
  193. package/dist/providers/github-copilot/converters.test.js.map +1 -0
  194. package/dist/providers/github-copilot/github-copilot.provider.d.ts +2 -0
  195. package/dist/providers/github-copilot/github-copilot.provider.d.ts.map +1 -0
  196. package/dist/providers/github-copilot/github-copilot.provider.js +75 -0
  197. package/dist/providers/github-copilot/github-copilot.provider.js.map +1 -0
  198. package/dist/providers/github-copilot/github-copilot.provider.test.d.ts +2 -0
  199. package/dist/providers/github-copilot/github-copilot.provider.test.d.ts.map +1 -0
  200. package/dist/providers/github-copilot/github-copilot.provider.test.js +26 -0
  201. package/dist/providers/github-copilot/github-copilot.provider.test.js.map +1 -0
  202. package/dist/providers/github-copilot/index.d.ts +4 -0
  203. package/dist/providers/github-copilot/index.d.ts.map +1 -0
  204. package/dist/providers/github-copilot/index.js +4 -0
  205. package/dist/providers/github-copilot/index.js.map +1 -0
  206. package/dist/providers/github-copilot/model.d.ts +24 -0
  207. package/dist/providers/github-copilot/model.d.ts.map +1 -0
  208. package/dist/providers/github-copilot/model.delta.test.d.ts +2 -0
  209. package/dist/providers/github-copilot/model.delta.test.d.ts.map +1 -0
  210. package/dist/providers/github-copilot/model.delta.test.js +15 -0
  211. package/dist/providers/github-copilot/model.delta.test.js.map +1 -0
  212. package/dist/providers/github-copilot/model.js +498 -0
  213. package/dist/providers/github-copilot/model.js.map +1 -0
  214. package/dist/providers/github-copilot/model.test.d.ts +2 -0
  215. package/dist/providers/github-copilot/model.test.d.ts.map +1 -0
  216. package/dist/providers/github-copilot/model.test.js +63 -0
  217. package/dist/providers/github-copilot/model.test.js.map +1 -0
  218. package/dist/providers/github-copilot/provider.d.ts +15 -0
  219. package/dist/providers/github-copilot/provider.d.ts.map +1 -0
  220. package/dist/providers/github-copilot/provider.js +25 -0
  221. package/dist/providers/github-copilot/provider.js.map +1 -0
  222. package/dist/providers/github-copilot/provider.test.d.ts +2 -0
  223. package/dist/providers/github-copilot/provider.test.d.ts.map +1 -0
  224. package/dist/providers/github-copilot/provider.test.js +52 -0
  225. package/dist/providers/github-copilot/provider.test.js.map +1 -0
  226. package/dist/providers/github-copilot/utils.d.ts +20 -0
  227. package/dist/providers/github-copilot/utils.d.ts.map +1 -0
  228. package/dist/providers/github-copilot/utils.js +142 -0
  229. package/dist/providers/github-copilot/utils.js.map +1 -0
  230. package/dist/providers/github-copilot/utils.test.d.ts +2 -0
  231. package/dist/providers/github-copilot/utils.test.d.ts.map +1 -0
  232. package/dist/providers/github-copilot/utils.test.js +21 -0
  233. package/dist/providers/github-copilot/utils.test.js.map +1 -0
  234. package/dist/providers/openai-compatible/api.d.ts +17 -0
  235. package/dist/providers/openai-compatible/api.d.ts.map +1 -0
  236. package/dist/providers/openai-compatible/api.js +58 -0
  237. package/dist/providers/openai-compatible/api.js.map +1 -0
  238. package/dist/providers/openai-compatible/model.d.ts +17 -0
  239. package/dist/providers/openai-compatible/model.d.ts.map +1 -0
  240. package/dist/providers/openai-compatible/model.js +473 -0
  241. package/dist/providers/openai-compatible/model.js.map +1 -0
  242. package/dist/providers/openai-compatible/provider.d.ts +22 -0
  243. package/dist/providers/openai-compatible/provider.d.ts.map +1 -0
  244. package/dist/providers/openai-compatible/provider.js +43 -0
  245. package/dist/providers/openai-compatible/provider.js.map +1 -0
  246. package/dist/providers/openai-compatible/reasoning-content.test.d.ts +2 -0
  247. package/dist/providers/openai-compatible/reasoning-content.test.d.ts.map +1 -0
  248. package/dist/providers/openai-compatible/reasoning-content.test.js +258 -0
  249. package/dist/providers/openai-compatible/reasoning-content.test.js.map +1 -0
  250. package/dist/providers/openai-compatible/utils.d.ts +3 -0
  251. package/dist/providers/openai-compatible/utils.d.ts.map +1 -0
  252. package/dist/providers/openai-compatible/utils.js +11 -0
  253. package/dist/providers/openai-compatible/utils.js.map +1 -0
  254. package/dist/providers/openai-compatible-behavior-gate.test.js +42 -1
  255. package/dist/providers/openai-compatible-behavior-gate.test.js.map +1 -1
  256. package/dist/providers/openai.provider.js +21 -1
  257. package/dist/providers/openai.provider.js.map +1 -1
  258. package/dist/providers/openrouter/api.d.ts +39 -0
  259. package/dist/providers/openrouter/api.d.ts.map +1 -0
  260. package/dist/providers/openrouter/api.js +164 -0
  261. package/dist/providers/openrouter/api.js.map +1 -0
  262. package/dist/providers/openrouter/converters.d.ts +8 -0
  263. package/dist/providers/openrouter/converters.d.ts.map +1 -0
  264. package/dist/providers/openrouter/converters.js +391 -0
  265. package/dist/providers/openrouter/converters.js.map +1 -0
  266. package/dist/providers/openrouter/converters.test.d.ts +2 -0
  267. package/dist/providers/openrouter/converters.test.d.ts.map +1 -0
  268. package/dist/providers/openrouter/converters.test.js +179 -0
  269. package/dist/providers/openrouter/converters.test.js.map +1 -0
  270. package/dist/providers/openrouter/index.d.ts +4 -0
  271. package/dist/providers/openrouter/index.d.ts.map +1 -0
  272. package/dist/providers/openrouter/index.js +4 -0
  273. package/dist/providers/openrouter/index.js.map +1 -0
  274. package/dist/providers/openrouter/model.d.ts +14 -0
  275. package/dist/providers/openrouter/model.d.ts.map +1 -0
  276. package/dist/providers/openrouter/model.js +457 -0
  277. package/dist/providers/openrouter/model.js.map +1 -0
  278. package/dist/providers/openrouter/provider.d.ts +15 -0
  279. package/dist/providers/openrouter/provider.d.ts.map +1 -0
  280. package/dist/providers/openrouter/provider.js +21 -0
  281. package/dist/providers/openrouter/provider.js.map +1 -0
  282. package/dist/providers/openrouter/reasoning-content.test.d.ts +2 -0
  283. package/dist/providers/openrouter/reasoning-content.test.d.ts.map +1 -0
  284. package/dist/providers/openrouter/reasoning-content.test.js +122 -0
  285. package/dist/providers/openrouter/reasoning-content.test.js.map +1 -0
  286. package/dist/providers/openrouter/utils.d.ts +11 -0
  287. package/dist/providers/openrouter/utils.d.ts.map +1 -0
  288. package/dist/providers/openrouter/utils.js +29 -0
  289. package/dist/providers/openrouter/utils.js.map +1 -0
  290. package/dist/providers/openrouter.api.retry.test.d.ts +2 -0
  291. package/dist/providers/openrouter.api.retry.test.d.ts.map +1 -0
  292. package/dist/providers/openrouter.api.retry.test.js +148 -0
  293. package/dist/providers/openrouter.api.retry.test.js.map +1 -0
  294. package/dist/providers/openrouter.provider.d.ts +2 -0
  295. package/dist/providers/openrouter.provider.d.ts.map +1 -1
  296. package/dist/providers/openrouter.provider.js +20 -2
  297. package/dist/providers/openrouter.provider.js.map +1 -1
  298. package/dist/providers/openrouter.provider.request-preprocessing.test.d.ts +2 -0
  299. package/dist/providers/openrouter.provider.request-preprocessing.test.d.ts.map +1 -0
  300. package/dist/providers/openrouter.provider.request-preprocessing.test.js +48 -0
  301. package/dist/providers/openrouter.provider.request-preprocessing.test.js.map +1 -0
  302. package/dist/providers/openrouter.test.d.ts +2 -0
  303. package/dist/providers/openrouter.test.d.ts.map +1 -0
  304. package/dist/providers/openrouter.test.js +1449 -0
  305. package/dist/providers/openrouter.test.js.map +1 -0
  306. package/dist/providers/registry.test.js +27 -2
  307. package/dist/providers/registry.test.js.map +1 -1
  308. package/dist/safety-checker.js +57 -0
  309. package/dist/scripts/eval-auto-approval/dataset.d.ts +1 -1
  310. package/dist/services/check_mock.d.ts +2 -0
  311. package/dist/services/check_mock.d.ts.map +1 -0
  312. package/dist/services/check_mock.js +22 -0
  313. package/dist/services/check_mock.js.map +1 -0
  314. package/dist/services/conversation-clear-save.test.d.ts +2 -0
  315. package/dist/services/conversation-clear-save.test.d.ts.map +1 -0
  316. package/dist/services/conversation-clear-save.test.js +85 -0
  317. package/dist/services/conversation-clear-save.test.js.map +1 -0
  318. package/dist/services/conversation-history-repair.d.ts +25 -0
  319. package/dist/services/conversation-history-repair.d.ts.map +1 -0
  320. package/dist/services/conversation-history-repair.js +227 -0
  321. package/dist/services/conversation-history-repair.js.map +1 -0
  322. package/dist/services/conversation-history-repair.test.d.ts +2 -0
  323. package/dist/services/conversation-history-repair.test.d.ts.map +1 -0
  324. package/dist/services/conversation-history-repair.test.js +76 -0
  325. package/dist/services/conversation-history-repair.test.js.map +1 -0
  326. package/dist/services/conversation-persistence.d.ts +7 -4
  327. package/dist/services/conversation-persistence.d.ts.map +1 -1
  328. package/dist/services/conversation-persistence.js +68 -15
  329. package/dist/services/conversation-persistence.js.map +1 -1
  330. package/dist/services/conversation-persistence.test.js +297 -2
  331. package/dist/services/conversation-persistence.test.js.map +1 -1
  332. package/dist/services/conversation-retry-policy.d.ts +7 -0
  333. package/dist/services/conversation-retry-policy.d.ts.map +1 -1
  334. package/dist/services/conversation-retry-policy.js +34 -0
  335. package/dist/services/conversation-retry-policy.js.map +1 -1
  336. package/dist/services/conversation-retry-policy.test.js +44 -2
  337. package/dist/services/conversation-retry-policy.test.js.map +1 -1
  338. package/dist/services/conversation-service.d.ts +3 -2
  339. package/dist/services/conversation-service.d.ts.map +1 -1
  340. package/dist/services/conversation-service.js +11 -3
  341. package/dist/services/conversation-service.js.map +1 -1
  342. package/dist/services/conversation-service.test.d.ts +2 -0
  343. package/dist/services/conversation-service.test.d.ts.map +1 -0
  344. package/dist/services/conversation-service.test.js +156 -0
  345. package/dist/services/conversation-service.test.js.map +1 -0
  346. package/dist/services/conversation-session.auto-approval.test.js +2 -1
  347. package/dist/services/conversation-session.auto-approval.test.js.map +1 -1
  348. package/dist/services/conversation-session.d.ts +3 -1
  349. package/dist/services/conversation-session.d.ts.map +1 -1
  350. package/dist/services/conversation-session.js +160 -89
  351. package/dist/services/conversation-session.js.map +1 -1
  352. package/dist/services/conversation-store.d.ts.map +1 -1
  353. package/dist/services/conversation-store.js +6 -5
  354. package/dist/services/conversation-store.js.map +1 -1
  355. package/dist/services/conversation-store.test.js +34 -0
  356. package/dist/services/conversation-store.test.js.map +1 -1
  357. package/dist/services/logging-contract.d.ts +1 -1
  358. package/dist/services/logging-service.d.ts +4 -0
  359. package/dist/services/logging-service.d.ts.map +1 -1
  360. package/dist/services/logging-service.js +91 -33
  361. package/dist/services/logging-service.js.map +1 -1
  362. package/dist/services/model-service.d.ts.map +1 -1
  363. package/dist/services/model-service.js +0 -1
  364. package/dist/services/model-service.js.map +1 -1
  365. package/dist/services/provider-traffic.d.ts +87 -0
  366. package/dist/services/provider-traffic.d.ts.map +1 -0
  367. package/dist/services/provider-traffic.js +545 -0
  368. package/dist/services/provider-traffic.js.map +1 -0
  369. package/dist/services/provider-traffic.test.d.ts +2 -0
  370. package/dist/services/provider-traffic.test.d.ts.map +1 -0
  371. package/dist/services/provider-traffic.test.js +383 -0
  372. package/dist/services/provider-traffic.test.js.map +1 -0
  373. package/dist/services/service-interfaces.d.ts +16 -0
  374. package/dist/services/service-interfaces.d.ts.map +1 -1
  375. package/dist/services/settings-service.js +6 -6
  376. package/dist/services/settings-service.js.map +1 -1
  377. package/dist/services/shell-auto-approval-evaluator.d.ts +1 -1
  378. package/dist/services/shell-auto-approval-evaluator.d.ts.map +1 -1
  379. package/dist/services/shell-auto-approval-evaluator.js +284 -81
  380. package/dist/services/shell-auto-approval-evaluator.js.map +1 -1
  381. package/dist/services/shell-auto-approval-evaluator.test.js +215 -15
  382. package/dist/services/shell-auto-approval-evaluator.test.js.map +1 -1
  383. package/dist/services/subagents/reasoning-inheritance.test.d.ts +2 -0
  384. package/dist/services/subagents/reasoning-inheritance.test.d.ts.map +1 -0
  385. package/dist/services/subagents/reasoning-inheritance.test.js +73 -0
  386. package/dist/services/subagents/reasoning-inheritance.test.js.map +1 -0
  387. package/dist/services/subagents/subagent-manager.d.ts +2 -0
  388. package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
  389. package/dist/services/subagents/subagent-manager.js +36 -5
  390. package/dist/services/subagents/subagent-manager.js.map +1 -1
  391. package/dist/services/subagents/subagent-manager.test.js +99 -0
  392. package/dist/services/subagents/subagent-manager.test.js.map +1 -1
  393. package/dist/tools/bash.d.ts +10 -0
  394. package/dist/tools/bash.d.ts.map +1 -0
  395. package/dist/tools/bash.js +55 -0
  396. package/dist/tools/bash.js.map +1 -0
  397. package/dist/utils/command-safety/path-analysis.d.ts.map +1 -1
  398. package/dist/utils/command-safety/path-analysis.js +143 -35
  399. package/dist/utils/command-safety/path-analysis.js.map +1 -1
  400. package/dist/utils/command-safety.d.ts +21 -0
  401. package/dist/utils/command-safety.d.ts.map +1 -0
  402. package/dist/utils/command-safety.devnull.test.d.ts +2 -0
  403. package/dist/utils/command-safety.devnull.test.d.ts.map +1 -0
  404. package/dist/utils/command-safety.devnull.test.js +13 -0
  405. package/dist/utils/command-safety.devnull.test.js.map +1 -0
  406. package/dist/utils/command-safety.js +348 -0
  407. package/dist/utils/command-safety.js.map +1 -0
  408. package/dist/utils/conversation-event-handler.d.ts.map +1 -1
  409. package/dist/utils/conversation-event-handler.js +19 -3
  410. package/dist/utils/conversation-event-handler.js.map +1 -1
  411. package/dist/utils/conversation-event-handler.test.js +72 -0
  412. package/dist/utils/conversation-event-handler.test.js.map +1 -1
  413. package/dist/utils/extract-command-messages.test.d.ts +2 -0
  414. package/dist/utils/extract-command-messages.test.d.ts.map +1 -0
  415. package/dist/utils/provider-traffic-extractor.repro.test.d.ts +2 -0
  416. package/dist/utils/provider-traffic-extractor.repro.test.d.ts.map +1 -0
  417. package/dist/utils/provider-traffic-extractor.repro.test.js.map +1 -0
  418. package/package.json +1 -1
  419. package/dist/hooks/use-path-completion.test.d.ts +0 -2
  420. package/dist/hooks/use-path-completion.test.d.ts.map +0 -1
  421. package/dist/hooks/use-path-completion.test.js +0 -54
  422. package/dist/hooks/use-path-completion.test.js.map +0 -1
  423. package/dist/providers/openai.provider.test.d.ts +0 -2
  424. package/dist/providers/openai.provider.test.d.ts.map +0 -1
  425. package/dist/providers/openai.provider.test.js +0 -22
  426. package/dist/providers/openai.provider.test.js.map +0 -1
  427. package/dist/utils/project-tree.d.ts +0 -14
  428. package/dist/utils/project-tree.d.ts.map +0 -1
  429. package/dist/utils/project-tree.js +0 -111
  430. package/dist/utils/project-tree.js.map +0 -1
  431. package/dist/utils/project-tree.test.d.ts +0 -2
  432. package/dist/utils/project-tree.test.d.ts.map +0 -1
  433. package/dist/utils/project-tree.test.js +0 -149
  434. package/dist/utils/project-tree.test.js.map +0 -1
  435. package/dist/utils/terminal-clear.d.ts +0 -7
  436. package/dist/utils/terminal-clear.d.ts.map +0 -1
  437. package/dist/utils/terminal-clear.js +0 -5
  438. package/dist/utils/terminal-clear.js.map +0 -1
  439. package/dist/utils/terminal-clear.test.d.ts +0 -2
  440. package/dist/utils/terminal-clear.test.d.ts.map +0 -1
  441. package/dist/utils/terminal-clear.test.js +0 -13
  442. package/dist/utils/terminal-clear.test.js.map +0 -1
@@ -0,0 +1,215 @@
1
+ You are an interactive CLI tool working collaboratively with a mentor model. You are the eyes and hands; the mentor is a peer reviewer who challenges your thinking.
2
+
3
+ **CRITICAL RULE**: Do quick reconnaissance first, then consult mentor with findings. Come with specific findings and questions, not open-ended requests. The mentor will challenge your assumptions and probe for gaps.
4
+
5
+ # Three Participants
6
+
7
+ This conversation has three distinct participants:
8
+
9
+ 1. **You (AI Assistant)**: You are the hands and eyes - you have access to all the tools (read_file, find_files, grep, search_replace, Shell). You explore the codebase and execute changes.
10
+
11
+ 2. **User (Real Human)**: The human who gives you tasks and requirements. They are the customer/stakeholder who defines what needs to be done.
12
+
13
+ 3. **Mentor (Smarter AI)**: A separate, more powerful AI model that acts as your peer reviewer and strategic advisor. The mentor does NOT have access to the codebase, tools, your thinking process, or files you have read - they rely entirely on what you share in your question. Use the "ask_mentor" tool to consult with them.
14
+
15
+ **IMPORTANT**: Do NOT confuse the User with the Mentor. When the User gives you a task, you explore first, then consult the Mentor (not the User) for strategic guidance. Only ask the User for clarification on requirements, not technical approach.
16
+
17
+ # Core Principles
18
+
19
+ - **Explore first, then collaborate**: Do initial reconnaissance (2-3 targeted searches), then consult mentor with findings
20
+ - **Read before editing**: NEVER modify code you haven't read first
21
+ - **Follow existing patterns**: Match the codebase's style, conventions, and practices
22
+ - **Minimal changes**: Only make requested changes, no extras or improvements
23
+ - **Complete tasks**: Finish what you start, don't stop mid-task
24
+ - **Parallel tools**: Call independent tools together for better performance
25
+
26
+ # Workflow
27
+
28
+ 1. **New task from user** → Do quick reconnaissance (2-3 targeted searches to gather initial context)
29
+ 2. **Consult Mentor** → Share findings, proposed approach, and confidence level (high/medium/low)
30
+ 3. **Implement** → After mentor approval, read files with read_file, make changes with search_replace, run tests
31
+ 4. **When blocked** → Consult Mentor for alternative approach
32
+ 5. **Unclear requirements** → Ask user for clarification
33
+
34
+ **IMPORTANT**: Come to mentor with findings and specific questions, not open-ended requests. Expect pushback—the mentor will challenge your assumptions, probe for gaps, and suggest alternatives. This is peer review, not rubber-stamping.
35
+
36
+ # What NOT to Do
37
+
38
+ - Over-engineer or add unrequested features
39
+ - Add error handling for impossible scenarios
40
+ - Create abstractions for one-time operations
41
+ - Add comments/types to unchanged code
42
+ - Keep unused code with hacks like `_vars` or `// removed`
43
+
44
+ # Error Handling
45
+
46
+ - Try different approaches, don't repeat failures
47
+ - After 2 failures on same operation, consult Mentor for guidance
48
+ - When stuck, describe what you tried and ask Mentor for alternative approach
49
+
50
+ # Communication
51
+
52
+ - Be concise (terminal output)
53
+ - Output text directly, never via command outputs (echo, comments)
54
+
55
+ # Planning Complex Tasks
56
+
57
+ For multi-step tasks, state your plan in plain text before executing:
58
+
59
+ - List the steps you'll take (numbered or bulleted)
60
+ - Update the user as you complete each step
61
+ - Keep the plan concise and actionable
62
+
63
+ Example: "I'll tackle this in 3 steps: 1) Search for the auth module, 2) Read the current implementation, 3) Add the new validation logic."
64
+
65
+ # Tools
66
+
67
+ ## read_file
68
+
69
+ Read file content with line numbers (1-indexed). Supports reading specific line ranges.
70
+
71
+ - Use for reading entire files or specific sections
72
+ - Automatically adds line numbers (like `cat -n`)
73
+ - Supports `start_line` and `end_line` for partial reads
74
+ - Prefer this over Shell commands like `sed` or `cat`
75
+
76
+ ## find_files
77
+
78
+ Search for files by name or glob pattern in the workspace.
79
+
80
+ - Use for finding files by pattern (e.g., `*.ts`, `**/*.test.ts`)
81
+ - Supports glob patterns for flexible matching
82
+ - Returns up to 50 results by default (configurable with `max_results`)
83
+ - Prefer this over Shell commands like `ls` or `rg --files`
84
+
85
+ ## create_file
86
+
87
+ Create a new file with the specified content.
88
+
89
+ - Use this for explicitly creating new files
90
+ - Fails if the file already exists (use `search_replace` for existing files)
91
+ - Automatically creates parent directories if they don't exist
92
+
93
+ ## search_replace
94
+
95
+ Modify files with exact text replacement.
96
+
97
+ - Include surrounding context (whitespace, indentation) for accuracy
98
+ - `replace_all: true` updates all occurrences; `false` expects single match
99
+ - For large replacements, include 3+ lines of context
100
+
101
+ ## grep
102
+
103
+ Search patterns across files. Always use before editing.
104
+
105
+ - Be specific: `function myFunc(` not just `myFunc`
106
+ - Use `file_pattern` (e.g., `*.ts`) to narrow scope
107
+ - grep uses `rg` under the hood
108
+ - Use for finding code patterns, not file names (use find_files instead)
109
+
110
+ ## Shell
111
+
112
+ Execute shell commands (tests, builds, git, dependencies).
113
+
114
+ - Use for running tests, builds, git operations, package management
115
+ - Single commands preferred; provide `timeout_ms` for long operations
116
+ - For reading files, use read_file tool instead
117
+ - For finding files, use find_files tool instead
118
+
119
+ ## ask_mentor
120
+
121
+ Your mentor is your strategic partner for complex decisions and guidance. They are a peer reviewer who will challenge your thinking.
122
+
123
+ **Mentor has**: Project context (AGENTS.md, environment), conversation memory, architectural knowledge
124
+
125
+ **CRITICAL: Your mentor is working REMOTELY and does NOT have access to the codebase.** They cannot see your thinking process, tool results, file contents, or search outputs. You must explicitly share all relevant information in your messages - treat it like explaining to someone over a phone call who can't see your screen.
126
+
127
+ ### When to ask_mentor (REQUIRED)
128
+
129
+ 1. **After initial reconnaissance** → Share findings and get validation on approach before implementing
130
+ 2. **Multiple valid approaches** → Get guidance on trade-offs and best fit
131
+ 3. **After 2 failed attempts** → Get alternative approach
132
+ 4. **Architectural uncertainty** → Validate impact before proceeding
133
+
134
+ **Critical**: Always consult after gathering initial context and before implementing significant changes.
135
+
136
+ ### How to ask_mentor
137
+
138
+ **IMPORTANT**: Think of this as a phone call with a remote colleague who can't see your screen. They need you to describe everything you're looking at. Come with findings, not open-ended questions.
139
+
140
+ **What to include:**
141
+ - **User's goal**: State clearly and completely what the user wants
142
+ - **What you found**: File paths, relevant code snippets, current patterns
143
+ - **What's unclear or missing**: Specific unknowns or gaps
144
+ - **Your proposed approach**: Present your recommendation or options
145
+ - **Your confidence level**: High/medium/low on the proposed approach
146
+
147
+ **Expect pushback.** The mentor will challenge your assumptions, probe for gaps, and suggest alternatives. This is peer review, not rubber-stamping.
148
+
149
+ **Example:**
150
+ "User wants to add dark mode support to the app. I did a quick search and found a ThemeProvider at src/context/ThemeContext.tsx that manages CSS variables like `--background-color` and `--text-color`. The provider currently has a fixed 'light' theme. There's also a config in src/styles/theme.css with the CSS variable definitions. I propose extending this existing ThemeProvider to toggle between light/dark themes rather than creating a new system. Confidence: High. Does this approach make sense or should I consider alternatives?"
151
+
152
+ # Codebase Exploration
153
+
154
+ ## Quick Decision Tree
155
+
156
+ 1. Know file path? → read_file directly
157
+ 2. Know general area? → find_files with pattern, then grep or read_file
158
+ 3. Looking for specific symbol? → grep with pattern (e.g., `"class UserService"`)
159
+ 4. New codebase? → find_files to map structure, then grep to narrow
160
+
161
+ ## Tool Selection Tips
162
+
163
+ - Start with find_files to locate files by pattern
164
+ - Use grep to find specific code patterns across files
165
+ - Use read_file to view complete file content with line numbers
166
+ - Keep a tight find → search → read → edit loop; avoid broad scans
167
+ - Prefer small, surgical replacements with stable context
168
+ - After 2 dead-end searches, pivot symbols, globs, or entry points
169
+
170
+ ## Key Strategies
171
+
172
+ - **Progressive narrowing**: find_files → grep content → read_file sections
173
+ - **Use glob patterns in find_files**:
174
+ - Good: `"*.ts"`, `"**/*.test.ts"` | Bad: overly broad patterns
175
+ - **Use file_pattern in grep**:
176
+ - Good: `"*.{ts,tsx,js,jsx}"` | Bad: `null`
177
+ - **Specific patterns in grep**: `"function handleLogin"` not `"login"`
178
+ - **Stop after 2 failed searches**: Reconsider approach, try different entry point
179
+
180
+ ## State Your Intent
181
+
182
+ Before exploring, briefly state why (e.g., "Searching for UserService to understand auth flow")
183
+
184
+ # Examples
185
+
186
+ **Fix login button styling**:
187
+
188
+ 1. find_files or grep → find LoginButton component
189
+ 2. read_file → view file to understand current styles
190
+ 3. **ask_mentor** → "User wants to fix the login button styling - it's currently too small and hard to read. I found the LoginButton component at src/components/auth/LoginButton.tsx. It currently uses inline styles like this: `style={{padding: '4px', fontSize: '12px'}}`. The component is a simple button element. I see other components in this directory use inline styles too. I propose updating the inline styles directly to increase padding and font size. Confidence: Medium - not sure if there's a design system I should follow instead. Should I proceed with inline style updates or is there a better approach?"
191
+ 4. search_replace → update styles (per mentor's guidance)
192
+ 5. Shell → run tests
193
+
194
+ **Add dark mode feature**:
195
+
196
+ 1. find_files/grep → search for theme infrastructure
197
+ 2. read_file → view ThemeProvider and theme config
198
+ 3. **ask_mentor** → "User wants to add dark mode support to the app. I found a ThemeProvider at src/context/ThemeContext.tsx that manages CSS variables like `--background-color` and `--text-color`. The provider currently has a fixed 'light' theme. There's also a config in src/styles/theme.css with the CSS variable definitions. I propose extending this existing ThemeProvider to toggle between light/dark themes rather than creating a new theming system. Confidence: High. Does this approach make sense?"
199
+ 4. search_replace → implement changes (per mentor's direction)
200
+ 5. Shell → verify changes
201
+
202
+ **Add logging to function**:
203
+
204
+ 1. grep → find function
205
+ 2. read_file → view function and surrounding context
206
+ 3. **ask_mentor** → "User wants logging added to the handleSubmit function. Found handleSubmit at src/handlers/form.ts:45. Here's the current function:
207
+ ```typescript
208
+ async function handleSubmit(data: FormData) {
209
+ const result = await api.submit(data);
210
+ return result;
211
+ }
212
+ ```
213
+ I also found that other files in src/handlers/ use console.log() for logging, but I noticed there's a logger service at src/services/logger.ts. I propose following the existing console.log pattern for consistency with surrounding code. Confidence: Medium - the logger service might be the better practice. Should I use console.log to match existing patterns or switch to the logger service?"
214
+ 4. search_replace → add logging statements (per mentor's guidance)
215
+ 5. Shell → test changes
@@ -3,7 +3,7 @@ type FetchLike = typeof fetch;
3
3
  type CreateAiSdkLoggingFetchOptions = {
4
4
  provider: string;
5
5
  model: string;
6
- loggingService: Pick<ILoggingService, 'debug' | 'error' | 'getCorrelationId'>;
6
+ loggingService: Pick<ILoggingService, 'debug' | 'error' | 'getCorrelationId' | 'getTrafficContext'>;
7
7
  fetchImpl?: FetchLike;
8
8
  };
9
9
  export declare function createAiSdkLoggingFetch({ provider, model, loggingService, fetchImpl, }: CreateAiSdkLoggingFetchOptions): FetchLike;
@@ -1 +1 @@
1
- {"version":3,"file":"ai-sdk-logging-fetch.d.ts","sourceRoot":"","sources":["../../source/providers/ai-sdk-logging-fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAGzE,KAAK,SAAS,GAAG,OAAO,KAAK,CAAC;AAE9B,KAAK,8BAA8B,GAAG;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,OAAO,GAAG,kBAAkB,CAAC,CAAC;IAC9E,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAqEF,wBAAgB,uBAAuB,CAAC,EACtC,QAAQ,EACR,KAAK,EACL,cAAc,EACd,SAAiB,GAClB,EAAE,8BAA8B,GAAG,SAAS,CAqE5C"}
1
+ {"version":3,"file":"ai-sdk-logging-fetch.d.ts","sourceRoot":"","sources":["../../source/providers/ai-sdk-logging-fetch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAGzE,KAAK,SAAS,GAAG,OAAO,KAAK,CAAC;AAE9B,KAAK,8BAA8B,GAAG;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,OAAO,GAAG,kBAAkB,GAAG,mBAAmB,CAAC,CAAC;IACpG,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AA8EF,wBAAgB,uBAAuB,CAAC,EACtC,QAAQ,EACR,KAAK,EACL,cAAc,EACd,SAAiB,GAClB,EAAE,8BAA8B,GAAG,SAAS,CAkF5C"}
@@ -1,4 +1,5 @@
1
- import { truncateLogText } from '../utils/log-truncation.js';
1
+ import { randomUUID } from 'node:crypto';
2
+ import { summarizeReceivedTraffic } from '../services/provider-traffic.js';
2
3
  const toRecord = (value) => {
3
4
  if (!value || typeof value !== 'object' || Array.isArray(value)) {
4
5
  return null;
@@ -13,27 +14,14 @@ const parseJsonObject = (raw) => {
13
14
  return null;
14
15
  }
15
16
  };
16
- const readRequestBody = async (input, init) => {
17
- if (typeof init?.body === 'string') {
18
- return init.body;
19
- }
20
- if (init?.body instanceof URLSearchParams) {
21
- return init.body.toString();
22
- }
23
- if (input instanceof Request) {
24
- try {
25
- return await input.clone().text();
26
- }
27
- catch {
28
- return null;
29
- }
30
- }
31
- return null;
32
- };
33
17
  const extractResponseText = (body) => {
34
- const outputText = body.output_text;
35
- if (typeof outputText === 'string') {
36
- return outputText;
18
+ if (!body)
19
+ return undefined;
20
+ if (typeof body.output_text === 'string') {
21
+ return body.output_text;
22
+ }
23
+ if (typeof body.text === 'string') {
24
+ return body.text;
37
25
  }
38
26
  const choices = body.choices;
39
27
  if (Array.isArray(choices)) {
@@ -42,6 +30,10 @@ const extractResponseText = (body) => {
42
30
  if (typeof message?.content === 'string') {
43
31
  return message.content;
44
32
  }
33
+ const delta = toRecord(firstChoice?.delta);
34
+ if (typeof delta?.content === 'string') {
35
+ return delta.content;
36
+ }
45
37
  if (typeof firstChoice?.text === 'string') {
46
38
  return firstChoice.text;
47
39
  }
@@ -49,30 +41,63 @@ const extractResponseText = (body) => {
49
41
  return undefined;
50
42
  };
51
43
  const extractToolCalls = (body) => {
44
+ if (!body)
45
+ return undefined;
52
46
  const choices = body.choices;
53
47
  if (!Array.isArray(choices)) {
54
48
  return undefined;
55
49
  }
56
50
  const firstChoice = toRecord(choices[0]);
57
51
  const message = toRecord(firstChoice?.message);
58
- return message?.tool_calls;
52
+ const delta = toRecord(firstChoice?.delta);
53
+ return message?.tool_calls ?? delta?.tool_calls;
54
+ };
55
+ const readRequestBody = async (input, init) => {
56
+ if (typeof init?.body === 'string') {
57
+ return init.body;
58
+ }
59
+ if (init?.body instanceof URLSearchParams) {
60
+ return init.body.toString();
61
+ }
62
+ if (input instanceof Request) {
63
+ try {
64
+ return await input.clone().text();
65
+ }
66
+ catch {
67
+ return null;
68
+ }
69
+ }
70
+ return null;
59
71
  };
60
72
  export function createAiSdkLoggingFetch({ provider, model, loggingService, fetchImpl = fetch, }) {
61
73
  return async (input, init) => {
62
74
  const requestBody = await readRequestBody(input, init);
63
75
  const parsedRequest = requestBody ? parseJsonObject(requestBody) : null;
64
76
  const requestModel = typeof parsedRequest?.model === 'string' ? parsedRequest.model : model;
77
+ const requestId = randomUUID();
78
+ const trafficContext = loggingService.getTrafficContext?.() ?? null;
79
+ const baseMeta = {
80
+ requestId,
81
+ traceId: trafficContext?.traceId ?? loggingService.getCorrelationId?.(),
82
+ sessionId: trafficContext?.sessionId,
83
+ sessionStartedAt: trafficContext?.sessionStartedAt,
84
+ firstUserMessagePreview: trafficContext?.firstUserMessagePreview,
85
+ mode: trafficContext?.mode,
86
+ provider,
87
+ model: requestModel,
88
+ };
89
+ const isEvaluator = trafficContext?.evaluator === true;
90
+ const eventPrefix = isEvaluator ? 'evaluator' : 'provider';
65
91
  loggingService.debug(`${provider} ai sdk request`, {
66
- eventType: 'provider.request.started',
92
+ eventType: `${eventPrefix}.request.started`,
67
93
  category: 'provider',
68
94
  phase: 'request_start',
69
95
  direction: 'sent',
70
- traceId: loggingService.getCorrelationId?.(),
71
- provider,
72
- model: requestModel,
96
+ ...baseMeta,
73
97
  messageCount: Array.isArray(parsedRequest?.messages) ? parsedRequest.messages.length : undefined,
74
98
  messages: parsedRequest?.messages,
75
99
  toolsCount: Array.isArray(parsedRequest?.tools) ? parsedRequest.tools.length : undefined,
100
+ payload: parsedRequest ?? undefined,
76
101
  });
77
102
  let response;
78
103
  try {
@@ -83,31 +108,31 @@ export function createAiSdkLoggingFetch({ provider, model, loggingService, fetch
83
108
  eventType: 'provider.response.failed',
84
109
  category: 'provider',
85
110
  phase: 'provider_response',
86
- traceId: loggingService.getCorrelationId?.(),
87
- provider,
88
- model: requestModel,
111
+ ...baseMeta,
89
112
  error: error instanceof Error ? error.message : String(error),
90
113
  });
91
114
  throw error;
92
115
  }
93
- response
94
- .clone()
95
- .text()
96
- .then((rawResponse) => {
97
- const parsedResponse = rawResponse ? parseJsonObject(rawResponse) : null;
98
- const responseText = parsedResponse ? extractResponseText(parsedResponse) : truncateLogText(rawResponse);
116
+ Promise.resolve()
117
+ .then(async () => {
118
+ const summary = await summarizeReceivedTraffic(response.clone());
119
+ const summaryPayload = toRecord(summary.payload);
120
+ const responseText = summaryPayload
121
+ ? extractResponseText(summaryPayload)
122
+ : typeof summary.fallbackBody === 'string'
123
+ ? summary.fallbackBody
124
+ : undefined;
125
+ const toolCalls = extractToolCalls(summaryPayload);
99
126
  loggingService.debug(`${provider} ai sdk response`, {
100
- eventType: 'provider.response.received',
127
+ eventType: `${eventPrefix}.response.received`,
101
128
  category: 'provider',
102
129
  phase: 'provider_response',
103
130
  direction: 'received',
104
- traceId: loggingService.getCorrelationId?.(),
105
- provider,
106
- model: requestModel,
131
+ ...baseMeta,
107
132
  status: response.status,
108
133
  text: responseText,
109
- toolCalls: parsedResponse ? extractToolCalls(parsedResponse) : undefined,
110
- payload: parsedResponse ?? { rawPreview: truncateLogText(rawResponse) },
134
+ toolCalls,
135
+ payload: summary,
111
136
  });
112
137
  })
113
138
  .catch((error) => {
@@ -115,9 +140,7 @@ export function createAiSdkLoggingFetch({ provider, model, loggingService, fetch
115
140
  eventType: 'provider.response.log_failed',
116
141
  category: 'provider',
117
142
  phase: 'provider_response',
118
- traceId: loggingService.getCorrelationId?.(),
119
- provider,
120
- model: requestModel,
143
+ ...baseMeta,
121
144
  error: error instanceof Error ? error.message : String(error),
122
145
  });
123
146
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ai-sdk-logging-fetch.js","sourceRoot":"","sources":["../../source/providers/ai-sdk-logging-fetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-sdk-logging-fetch.js","sourceRoot":"","sources":["../../source/providers/ai-sdk-logging-fetch.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,12 @@ test('createAiSdkLoggingFetch logs request and response traffic around fetch', a
13
13
  logs.push({ message, meta });
14
14
  },
15
15
  getCorrelationId: () => 'trace-test',
16
+ getTrafficContext: () => ({
17
+ sessionId: 'session-123',
18
+ sessionStartedAt: '2026-05-22T09:14:31.125Z',
19
+ firstUserMessagePreview: 'hi',
20
+ mode: 'standard',
21
+ }),
16
22
  },
17
23
  fetchImpl: async () => new Response(JSON.stringify({ choices: [{ message: { content: 'hello' } }] }), {
18
24
  status: 200,
@@ -36,6 +42,7 @@ test('createAiSdkLoggingFetch logs request and response traffic around fetch', a
36
42
  meta: {
37
43
  eventType: 'provider.request.started',
38
44
  direction: 'sent',
45
+ sessionId: 'session-123',
39
46
  provider: 'openrouter',
40
47
  model: 'test-model',
41
48
  messageCount: 1,
@@ -48,12 +55,15 @@ test('createAiSdkLoggingFetch logs request and response traffic around fetch', a
48
55
  meta: {
49
56
  eventType: 'provider.response.received',
50
57
  direction: 'received',
58
+ sessionId: 'session-123',
51
59
  provider: 'openrouter',
52
60
  model: 'test-model',
53
61
  status: 200,
54
62
  },
55
63
  });
56
64
  t.is(logs[1].meta.text, 'hello');
65
+ t.truthy(logs[0].meta.requestId);
66
+ t.is(logs[0].meta.requestId, logs[1].meta.requestId);
57
67
  });
58
68
  test('createAiSdkLoggingFetch truncates raw streaming response text', async (t) => {
59
69
  const logs = [];
@@ -80,6 +90,12 @@ test('createAiSdkLoggingFetch truncates raw streaming response text', async (t)
80
90
  logs.push({ message, meta });
81
91
  },
82
92
  getCorrelationId: () => 'trace-test',
93
+ getTrafficContext: () => ({
94
+ sessionId: 'session-123',
95
+ sessionStartedAt: '2026-05-22T09:14:31.125Z',
96
+ firstUserMessagePreview: 'hi',
97
+ mode: 'standard',
98
+ }),
83
99
  },
84
100
  fetchImpl: async () => new Response(streamingBody, {
85
101
  status: 200,
@@ -98,10 +114,48 @@ test('createAiSdkLoggingFetch truncates raw streaming response text', async (t)
98
114
  await new Promise((resolve) => setTimeout(resolve, 0));
99
115
  t.is(logs.length, 2);
100
116
  t.true(typeof logs[1].meta.text === 'string');
101
- t.true(logs[1].meta.text.length < streamingBody.length);
102
- t.true(logs[1].meta.text.startsWith(': OPENROUTER PROCESSING'));
103
- t.true(logs[1].meta.text.endsWith('data: {"tail":"preserved"}'));
104
- t.true(typeof logs[1].meta.payload.rawPreview === 'string');
105
- t.true(logs[1].meta.payload.rawPreview.length < streamingBody.length);
117
+ t.is(logs[0].meta.requestId, logs[1].meta.requestId);
118
+ t.is(logs[1].meta.text, 'Hello world');
119
+ t.truthy(logs[1].meta.payload);
120
+ });
121
+ test('createAiSdkLoggingFetch logs received error record when response body summarization fails', async (t) => {
122
+ const logs = [];
123
+ const wrapped = createAiSdkLoggingFetch({
124
+ provider: 'openrouter',
125
+ model: 'test-model',
126
+ loggingService: {
127
+ debug: (message, meta) => {
128
+ logs.push({ message, meta });
129
+ },
130
+ error: (message, meta) => {
131
+ logs.push({ message, meta });
132
+ },
133
+ getCorrelationId: () => 'trace-test',
134
+ getTrafficContext: () => ({
135
+ sessionId: 'session-123',
136
+ sessionStartedAt: '2026-05-22T09:14:31.125Z',
137
+ firstUserMessagePreview: 'hi',
138
+ mode: 'standard',
139
+ }),
140
+ },
141
+ fetchImpl: async () => {
142
+ const response = new Response('ok', {
143
+ status: 200,
144
+ headers: { 'content-type': 'application/json' },
145
+ });
146
+ response.clone = () => {
147
+ throw new Error('clone failed');
148
+ };
149
+ return response;
150
+ },
151
+ });
152
+ await wrapped('https://example.test/chat/completions', {
153
+ method: 'POST',
154
+ body: JSON.stringify({ model: 'test-model', messages: [{ role: 'user', content: 'hi' }] }),
155
+ });
156
+ await new Promise((resolve) => setTimeout(resolve, 0));
157
+ t.is(logs.length, 2);
158
+ t.is(logs[1].meta.eventType, 'provider.response.log_failed');
159
+ t.is(logs[0].meta.requestId, logs[1].meta.requestId);
106
160
  });
107
161
  //# sourceMappingURL=ai-sdk-logging-fetch.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai-sdk-logging-fetch.test.js","sourceRoot":"","sources":["../../source/providers/ai-sdk-logging-fetch.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-sdk-logging-fetch.test.js","sourceRoot":"","sources":["../../source/providers/ai-sdk-logging-fetch.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { type ModelProvider, type Model } from '@openai/agents-core';
2
2
  export type AiSdkOpenAICompatibleConfig = {
3
+ providerType?: string;
3
4
  baseURL: string;
4
5
  apiKey?: string;
5
6
  headers?: Record<string, string>;
@@ -17,6 +18,7 @@ export declare class AiSdkOpenAICompatibleProvider implements ModelProvider {
17
18
  #private;
18
19
  constructor(deps: {
19
20
  label: string;
21
+ providerType?: string;
20
22
  defaultModel: string;
21
23
  resolveConfig: () => AiSdkOpenAICompatibleConfig;
22
24
  createProvider?: AiSdkOpenAICompatibleProviderFactory;
@@ -1 +1 @@
1
- {"version":3,"file":"ai-sdk-openai-compatible.provider.d.ts","sourceRoot":"","sources":["../../source/providers/ai-sdk-openai-compatible.provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAGrE,MAAM,MAAM,2BAA2B,GAAG;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG,CAAC,OAAO,EAAE;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB,KAAK,CAAC,OAAO,EAAE,MAAM,KAAK,GAAG,CAAC;AAE/B,qBAAa,6BAA8B,YAAW,aAAa;;gBAMrD,IAAI,EAAE;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,2BAA2B,CAAC;QACjD,cAAc,CAAC,EAAE,oCAAoC,CAAC;KACvD;IAOD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK;CAarD"}
1
+ {"version":3,"file":"ai-sdk-openai-compatible.provider.d.ts","sourceRoot":"","sources":["../../source/providers/ai-sdk-openai-compatible.provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAGrE,MAAM,MAAM,2BAA2B,GAAG;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG,CAAC,OAAO,EAAE;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB,KAAK,CAAC,OAAO,EAAE,MAAM,KAAK,GAAG,CAAC;AAM/B,qBAAa,6BAA8B,YAAW,aAAa;;gBAMrD,IAAI,EAAE;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,2BAA2B,CAAC;QACjD,cAAc,CAAC,EAAE,oCAAoC,CAAC;KACvD;IAOD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK;CAkBrD"}
@@ -1,27 +1,31 @@
1
1
  import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
2
2
  import { adaptAiSdkModelForAgents } from './ai-sdk-agents-adapter.js';
3
+ function getProviderOptionsKey(providerType) {
4
+ return providerType.split('.')[0] || providerType;
5
+ }
3
6
  export class AiSdkOpenAICompatibleProvider {
4
- #label;
7
+ #providerType;
5
8
  #defaultModel;
6
9
  #resolveConfig;
7
10
  #createProvider;
8
11
  constructor(deps) {
9
- this.#label = deps.label;
12
+ this.#providerType = deps.providerType || 'openai-compatible';
10
13
  this.#defaultModel = deps.defaultModel;
11
14
  this.#resolveConfig = deps.resolveConfig;
12
15
  this.#createProvider = deps.createProvider ?? createOpenAICompatible;
13
16
  }
14
17
  getModel(modelName) {
15
18
  const config = this.#resolveConfig();
19
+ const providerType = config.providerType || this.#providerType;
16
20
  const provider = this.#createProvider({
17
- name: this.#label,
21
+ name: providerType,
18
22
  baseURL: config.baseURL,
19
23
  apiKey: config.apiKey,
20
24
  headers: config.headers,
21
25
  includeUsage: true,
22
26
  fetch: config.fetch,
23
27
  });
24
- return adaptAiSdkModelForAgents(provider(modelName || this.#defaultModel));
28
+ return adaptAiSdkModelForAgents(provider(modelName || this.#defaultModel), undefined, getProviderOptionsKey(providerType));
25
29
  }
26
30
  }
27
31
  //# sourceMappingURL=ai-sdk-openai-compatible.provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai-sdk-openai-compatible.provider.js","sourceRoot":"","sources":["../../source/providers/ai-sdk-openai-compatible.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAkBtE,MAAM,OAAO,6BAA6B;IACxC,MAAM,CAAS;IACf,aAAa,CAAS;IACtB,cAAc,CAAoC;IAClD,eAAe,CAAuC;IAEtD,YAAY,IAKX;QACC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,IAAK,sBAA+D,CAAC;IACjH,CAAC;IAED,QAAQ,CAAC,SAAkB;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;YACpC,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC;QAEH,OAAO,wBAAwB,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAC7E,CAAC;CACF"}
1
+ {"version":3,"file":"ai-sdk-openai-compatible.provider.js","sourceRoot":"","sources":["../../source/providers/ai-sdk-openai-compatible.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAmBtE,SAAS,qBAAqB,CAAC,YAAoB;IACjD,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC;AACpD,CAAC;AAED,MAAM,OAAO,6BAA6B;IACxC,aAAa,CAAS;IACtB,aAAa,CAAS;IACtB,cAAc,CAAoC;IAClD,eAAe,CAAuC;IAEtD,YAAY,IAMX;QACC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,IAAI,mBAAmB,CAAC;QAC9D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,IAAK,sBAA+D,CAAC;IACjH,CAAC;IAED,QAAQ,CAAC,SAAkB;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;YACpC,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC;QAEH,OAAO,wBAAwB,CAC7B,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,EACzC,SAAS,EACT,qBAAqB,CAAC,YAAY,CAAC,CACpC,CAAC;IACJ,CAAC;CACF"}