@qduc/term2 0.5.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 (488) hide show
  1. package/dist/agent.d.ts +1 -1
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +55 -7
  4. package/dist/agent.js.map +1 -1
  5. package/dist/agent.test.js +135 -10
  6. package/dist/agent.test.js.map +1 -1
  7. package/dist/app.d.ts +15 -0
  8. package/dist/app.d.ts.map +1 -1
  9. package/dist/app.js +86 -16
  10. package/dist/app.js.map +1 -1
  11. package/dist/app.startup-banner.test.js +48 -1
  12. package/dist/app.startup-banner.test.js.map +1 -1
  13. package/dist/cli.js +226 -28
  14. package/dist/cli.js.map +1 -1
  15. package/dist/components/ApprovalPrompt.d.ts.map +1 -1
  16. package/dist/components/ApprovalPrompt.js +11 -35
  17. package/dist/components/ApprovalPrompt.js.map +1 -1
  18. package/dist/components/Banner.d.ts.map +1 -1
  19. package/dist/components/Banner.js +2 -7
  20. package/dist/components/Banner.js.map +1 -1
  21. package/dist/components/BottomArea.d.ts +7 -1
  22. package/dist/components/BottomArea.d.ts.map +1 -1
  23. package/dist/components/BottomArea.js +2 -2
  24. package/dist/components/BottomArea.js.map +1 -1
  25. package/dist/components/CommandMessage.d.ts.map +1 -1
  26. package/dist/components/CommandMessage.js +38 -42
  27. package/dist/components/CommandMessage.js.map +1 -1
  28. package/dist/components/CommandMessage.test.js +69 -0
  29. package/dist/components/CommandMessage.test.js.map +1 -1
  30. package/dist/components/DiffView.d.ts +7 -0
  31. package/dist/components/DiffView.d.ts.map +1 -0
  32. package/dist/components/DiffView.js +80 -0
  33. package/dist/components/DiffView.js.map +1 -0
  34. package/dist/components/DiffView.test.d.ts +2 -0
  35. package/dist/components/DiffView.test.d.ts.map +1 -0
  36. package/dist/components/DiffView.test.js +45 -0
  37. package/dist/components/DiffView.test.js.map +1 -0
  38. package/dist/components/Input/PopupManager.d.ts +7 -0
  39. package/dist/components/Input/PopupManager.d.ts.map +1 -1
  40. package/dist/components/Input/PopupManager.js +4 -2
  41. package/dist/components/Input/PopupManager.js.map +1 -1
  42. package/dist/components/Input/determine-active-menu.d.ts.map +1 -1
  43. package/dist/components/Input/determine-active-menu.js +4 -1
  44. package/dist/components/Input/determine-active-menu.js.map +1 -1
  45. package/dist/components/Input/popup-props.d.ts +3 -1
  46. package/dist/components/Input/popup-props.d.ts.map +1 -1
  47. package/dist/components/Input/popup-props.js +7 -1
  48. package/dist/components/Input/popup-props.js.map +1 -1
  49. package/dist/components/InputBox.d.ts +6 -0
  50. package/dist/components/InputBox.d.ts.map +1 -1
  51. package/dist/components/InputBox.js +74 -11
  52. package/dist/components/InputBox.js.map +1 -1
  53. package/dist/components/InputBox.menu-logic.test.js +16 -1
  54. package/dist/components/InputBox.menu-logic.test.js.map +1 -1
  55. package/dist/components/InputBox.test.js +1 -0
  56. package/dist/components/InputBox.test.js.map +1 -1
  57. package/dist/components/MarkdownRenderer.d.ts.map +1 -1
  58. package/dist/components/MarkdownRenderer.js +52 -1
  59. package/dist/components/MarkdownRenderer.js.map +1 -1
  60. package/dist/components/MessageList.d.ts.map +1 -1
  61. package/dist/components/MessageList.js +3 -2
  62. package/dist/components/MessageList.js.map +1 -1
  63. package/dist/components/MessageList.test.js +16 -0
  64. package/dist/components/MessageList.test.js.map +1 -1
  65. package/dist/components/SettingsValueSelectionMenu.d.ts.map +1 -1
  66. package/dist/components/SettingsValueSelectionMenu.js +4 -1
  67. package/dist/components/SettingsValueSelectionMenu.js.map +1 -1
  68. package/dist/components/StatusBar.d.ts.map +1 -1
  69. package/dist/components/StatusBar.js +5 -3
  70. package/dist/components/StatusBar.js.map +1 -1
  71. package/dist/components/StatusBar.test.js +24 -0
  72. package/dist/components/StatusBar.test.js.map +1 -1
  73. package/dist/components/SubagentActivityMessage.d.ts.map +1 -1
  74. package/dist/components/SubagentActivityMessage.js +16 -1
  75. package/dist/components/SubagentActivityMessage.js.map +1 -1
  76. package/dist/components/UndoSelectionMenu.d.ts +12 -0
  77. package/dist/components/UndoSelectionMenu.d.ts.map +1 -0
  78. package/dist/components/UndoSelectionMenu.js +46 -0
  79. package/dist/components/UndoSelectionMenu.js.map +1 -0
  80. package/dist/components/UndoSelectionMenu.test.d.ts +2 -0
  81. package/dist/components/UndoSelectionMenu.test.d.ts.map +1 -0
  82. package/dist/components/UndoSelectionMenu.test.js +40 -0
  83. package/dist/components/UndoSelectionMenu.test.js.map +1 -0
  84. package/dist/components/theme.d.ts +1 -1
  85. package/dist/components/theme.d.ts.map +1 -1
  86. package/dist/components/theme.js +1 -3
  87. package/dist/components/theme.js.map +1 -1
  88. package/dist/context/InputContext.d.ts +1 -1
  89. package/dist/context/InputContext.d.ts.map +1 -1
  90. package/dist/context/InputContext.js.map +1 -1
  91. package/dist/hooks/use-app-commands.d.ts +14 -2
  92. package/dist/hooks/use-app-commands.d.ts.map +1 -1
  93. package/dist/hooks/use-app-commands.js +115 -32
  94. package/dist/hooks/use-app-commands.js.map +1 -1
  95. package/dist/hooks/use-app-commands.test.js +231 -1
  96. package/dist/hooks/use-app-commands.test.js.map +1 -1
  97. package/dist/hooks/use-conversation.clear.test.d.ts +2 -0
  98. package/dist/hooks/use-conversation.clear.test.d.ts.map +1 -0
  99. package/dist/hooks/use-conversation.clear.test.js +49 -0
  100. package/dist/hooks/use-conversation.clear.test.js.map +1 -0
  101. package/dist/hooks/use-conversation.d.ts +12 -2
  102. package/dist/hooks/use-conversation.d.ts.map +1 -1
  103. package/dist/hooks/use-conversation.js +88 -5
  104. package/dist/hooks/use-conversation.js.map +1 -1
  105. package/dist/hooks/use-conversation.max-turns-undo.test.d.ts +2 -0
  106. package/dist/hooks/use-conversation.max-turns-undo.test.d.ts.map +1 -0
  107. package/dist/hooks/use-conversation.max-turns-undo.test.js +118 -0
  108. package/dist/hooks/use-conversation.max-turns-undo.test.js.map +1 -0
  109. package/dist/hooks/use-conversation.resume.test.d.ts +2 -0
  110. package/dist/hooks/use-conversation.resume.test.d.ts.map +1 -0
  111. package/dist/hooks/use-conversation.resume.test.js +26 -0
  112. package/dist/hooks/use-conversation.resume.test.js.map +1 -0
  113. package/dist/hooks/use-escape-key.d.ts.map +1 -1
  114. package/dist/hooks/use-escape-key.js +14 -7
  115. package/dist/hooks/use-escape-key.js.map +1 -1
  116. package/dist/hooks/use-escape-key.test.js +168 -4
  117. package/dist/hooks/use-escape-key.test.js.map +1 -1
  118. package/dist/hooks/use-input-history.d.ts +4 -3
  119. package/dist/hooks/use-input-history.d.ts.map +1 -1
  120. package/dist/hooks/use-input-history.js +10 -8
  121. package/dist/hooks/use-input-history.js.map +1 -1
  122. package/dist/hooks/use-input-history.test.d.ts +2 -0
  123. package/dist/hooks/use-input-history.test.d.ts.map +1 -0
  124. package/dist/hooks/use-input-history.test.js +43 -0
  125. package/dist/hooks/use-input-history.test.js.map +1 -0
  126. package/dist/hooks/use-mode-handlers.d.ts +10 -2
  127. package/dist/hooks/use-mode-handlers.d.ts.map +1 -1
  128. package/dist/hooks/use-mode-handlers.js +21 -2
  129. package/dist/hooks/use-mode-handlers.js.map +1 -1
  130. package/dist/hooks/use-model-selection.d.ts +3 -0
  131. package/dist/hooks/use-model-selection.d.ts.map +1 -1
  132. package/dist/hooks/use-model-selection.js +3 -0
  133. package/dist/hooks/use-model-selection.js.map +1 -1
  134. package/dist/hooks/use-runtime-settings.d.ts.map +1 -1
  135. package/dist/hooks/use-runtime-settings.js +15 -6
  136. package/dist/hooks/use-runtime-settings.js.map +1 -1
  137. package/dist/hooks/use-settings-completion.d.ts.map +1 -1
  138. package/dist/hooks/use-settings-completion.js +0 -1
  139. package/dist/hooks/use-settings-completion.js.map +1 -1
  140. package/dist/hooks/use-settings-value-completion.d.ts +1 -0
  141. package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
  142. package/dist/hooks/use-settings-value-completion.js +25 -19
  143. package/dist/hooks/use-settings-value-completion.js.map +1 -1
  144. package/dist/hooks/use-shell-mode.d.ts.map +1 -1
  145. package/dist/hooks/use-shell-mode.js +2 -1
  146. package/dist/hooks/use-shell-mode.js.map +1 -1
  147. package/dist/hooks/use-slash-commands.d.ts +1 -0
  148. package/dist/hooks/use-slash-commands.d.ts.map +1 -1
  149. package/dist/hooks/use-slash-commands.js +10 -1
  150. package/dist/hooks/use-slash-commands.js.map +1 -1
  151. package/dist/hooks/use-undo-selection.d.ts +19 -0
  152. package/dist/hooks/use-undo-selection.d.ts.map +1 -0
  153. package/dist/hooks/use-undo-selection.js +76 -0
  154. package/dist/hooks/use-undo-selection.js.map +1 -0
  155. package/dist/lib/openai-agent-client.chat.test.js +40 -0
  156. package/dist/lib/openai-agent-client.chat.test.js.map +1 -1
  157. package/dist/lib/openai-agent-client.d.ts +10 -1
  158. package/dist/lib/openai-agent-client.d.ts.map +1 -1
  159. package/dist/lib/openai-agent-client.js +114 -6
  160. package/dist/lib/openai-agent-client.js.map +1 -1
  161. package/dist/lib/openai-agent-client.test.js +23 -0
  162. package/dist/lib/openai-agent-client.test.js.map +1 -1
  163. package/dist/lib/retry-executor.js +45 -7
  164. package/dist/lib/retry-executor.js.map +1 -1
  165. package/dist/lib/retry-executor.test.js +63 -0
  166. package/dist/lib/retry-executor.test.js.map +1 -1
  167. package/dist/non-interactive.d.ts +7 -1
  168. package/dist/non-interactive.d.ts.map +1 -1
  169. package/dist/non-interactive.js +73 -5
  170. package/dist/non-interactive.js.map +1 -1
  171. package/dist/non-interactive.test.js +184 -2
  172. package/dist/non-interactive.test.js.map +1 -1
  173. package/dist/prompts/orchestrator.md +46 -0
  174. package/dist/prompts/plan-mode-info.md +17 -0
  175. package/dist/prompts/prompt-selector.d.ts +2 -1
  176. package/dist/prompts/prompt-selector.d.ts.map +1 -1
  177. package/dist/prompts/prompt-selector.js +5 -1
  178. package/dist/prompts/prompt-selector.js.map +1 -1
  179. package/dist/prompts/prompt-selector.test.js +7 -0
  180. package/dist/prompts/prompt-selector.test.js.map +1 -1
  181. package/dist/prompts/prompt-selector.test.ts +18 -0
  182. package/dist/prompts/prompt-selector.ts +7 -1
  183. package/dist/prompts/reasoning-efficiency.d.ts +7 -0
  184. package/dist/prompts/reasoning-efficiency.d.ts.map +1 -0
  185. package/dist/prompts/reasoning-efficiency.js +19 -0
  186. package/dist/prompts/reasoning-efficiency.js.map +1 -0
  187. package/dist/prompts/reasoning-efficiency.ts +18 -0
  188. package/dist/prompts/search-via-shell.test.js +17 -17
  189. package/dist/prompts/search-via-shell.test.js.map +1 -1
  190. package/dist/prompts/search-via-shell.test.ts +17 -17
  191. package/dist/prompts/shell-auto-approval.d.ts +3 -0
  192. package/dist/prompts/shell-auto-approval.d.ts.map +1 -0
  193. package/dist/prompts/shell-auto-approval.js +23 -0
  194. package/dist/prompts/shell-auto-approval.js.map +1 -0
  195. package/dist/prompts/shell-auto-approval.ts +23 -0
  196. package/dist/prompts/subagent-delegation.d.ts +10 -0
  197. package/dist/prompts/subagent-delegation.d.ts.map +1 -0
  198. package/dist/prompts/subagent-delegation.js +33 -0
  199. package/dist/prompts/subagent-delegation.js.map +1 -0
  200. package/dist/prompts/subagent-delegation.test.d.ts +2 -0
  201. package/dist/prompts/subagent-delegation.test.d.ts.map +1 -0
  202. package/dist/prompts/subagent-delegation.test.js +17 -0
  203. package/dist/prompts/subagent-delegation.test.js.map +1 -0
  204. package/dist/prompts/subagent-delegation.test.ts +21 -0
  205. package/dist/prompts/subagent-delegation.ts +40 -0
  206. package/dist/prompts/subagents/explorer.md +1 -2
  207. package/dist/prompts/subagents/mentor.md +0 -1
  208. package/dist/prompts/subagents/researcher.md +0 -1
  209. package/dist/prompts/subagents/worker.md +3 -4
  210. package/dist/providers/ai-sdk-anthropic.provider.d.ts +1 -0
  211. package/dist/providers/ai-sdk-anthropic.provider.d.ts.map +1 -1
  212. package/dist/providers/ai-sdk-anthropic.provider.js +67 -1
  213. package/dist/providers/ai-sdk-anthropic.provider.js.map +1 -1
  214. package/dist/providers/ai-sdk-anthropic.provider.test.d.ts +2 -0
  215. package/dist/providers/ai-sdk-anthropic.provider.test.d.ts.map +1 -0
  216. package/dist/providers/ai-sdk-anthropic.provider.test.js +87 -0
  217. package/dist/providers/ai-sdk-anthropic.provider.test.js.map +1 -0
  218. package/dist/providers/ai-sdk-logging-fetch.d.ts +1 -1
  219. package/dist/providers/ai-sdk-logging-fetch.d.ts.map +1 -1
  220. package/dist/providers/ai-sdk-logging-fetch.js +67 -44
  221. package/dist/providers/ai-sdk-logging-fetch.js.map +1 -1
  222. package/dist/providers/ai-sdk-logging-fetch.test.js +59 -5
  223. package/dist/providers/ai-sdk-logging-fetch.test.js.map +1 -1
  224. package/dist/providers/common/openai-compatible-messages.d.ts.map +1 -1
  225. package/dist/providers/common/openai-compatible-messages.js +10 -4
  226. package/dist/providers/common/openai-compatible-messages.js.map +1 -1
  227. package/dist/providers/common/openai-compatible-messages.test.js +22 -0
  228. package/dist/providers/common/openai-compatible-messages.test.js.map +1 -1
  229. package/dist/providers/custom-provider-adapter.test.js +39 -1
  230. package/dist/providers/custom-provider-adapter.test.js.map +1 -1
  231. package/dist/providers/openai-compatible.provider.d.ts +11 -1
  232. package/dist/providers/openai-compatible.provider.d.ts.map +1 -1
  233. package/dist/providers/openai-compatible.provider.js +122 -8
  234. package/dist/providers/openai-compatible.provider.js.map +1 -1
  235. package/dist/providers/openai-compatible.provider.test.js +61 -0
  236. package/dist/providers/openai-compatible.provider.test.js.map +1 -1
  237. package/dist/providers/openai.provider.js +21 -1
  238. package/dist/providers/openai.provider.js.map +1 -1
  239. package/dist/providers/openrouter.provider.d.ts +2 -0
  240. package/dist/providers/openrouter.provider.d.ts.map +1 -1
  241. package/dist/providers/openrouter.provider.js +20 -2
  242. package/dist/providers/openrouter.provider.js.map +1 -1
  243. package/dist/providers/openrouter.provider.request-preprocessing.test.d.ts +2 -0
  244. package/dist/providers/openrouter.provider.request-preprocessing.test.d.ts.map +1 -0
  245. package/dist/providers/openrouter.provider.request-preprocessing.test.js +48 -0
  246. package/dist/providers/openrouter.provider.request-preprocessing.test.js.map +1 -0
  247. package/dist/providers/registry.test.js +27 -2
  248. package/dist/providers/registry.test.js.map +1 -1
  249. package/dist/scripts/eval-auto-approval/dataset.d.ts +2 -2
  250. package/dist/services/agent-stream.d.ts +1 -0
  251. package/dist/services/agent-stream.d.ts.map +1 -1
  252. package/dist/services/approval-flow-coordinator.d.ts +2 -0
  253. package/dist/services/approval-flow-coordinator.d.ts.map +1 -1
  254. package/dist/services/approval-flow-coordinator.js +45 -18
  255. package/dist/services/approval-flow-coordinator.js.map +1 -1
  256. package/dist/services/approval-flow-coordinator.test.js +87 -0
  257. package/dist/services/approval-flow-coordinator.test.js.map +1 -1
  258. package/dist/services/approval-state.d.ts +4 -0
  259. package/dist/services/approval-state.d.ts.map +1 -1
  260. package/dist/services/approval-state.js +2 -0
  261. package/dist/services/approval-state.js.map +1 -1
  262. package/dist/services/approval-state.test.js +21 -0
  263. package/dist/services/approval-state.test.js.map +1 -1
  264. package/dist/services/conversation-clear-save.test.d.ts +2 -0
  265. package/dist/services/conversation-clear-save.test.d.ts.map +1 -0
  266. package/dist/services/conversation-clear-save.test.js +85 -0
  267. package/dist/services/conversation-clear-save.test.js.map +1 -0
  268. package/dist/services/conversation-history-repair.d.ts +25 -0
  269. package/dist/services/conversation-history-repair.d.ts.map +1 -0
  270. package/dist/services/conversation-history-repair.js +227 -0
  271. package/dist/services/conversation-history-repair.js.map +1 -0
  272. package/dist/services/conversation-history-repair.test.d.ts +2 -0
  273. package/dist/services/conversation-history-repair.test.d.ts.map +1 -0
  274. package/dist/services/conversation-history-repair.test.js +76 -0
  275. package/dist/services/conversation-history-repair.test.js.map +1 -0
  276. package/dist/services/conversation-persistence.d.ts +55 -0
  277. package/dist/services/conversation-persistence.d.ts.map +1 -0
  278. package/dist/services/conversation-persistence.js +216 -0
  279. package/dist/services/conversation-persistence.js.map +1 -0
  280. package/dist/services/conversation-persistence.test.d.ts +2 -0
  281. package/dist/services/conversation-persistence.test.d.ts.map +1 -0
  282. package/dist/services/conversation-persistence.test.js +713 -0
  283. package/dist/services/conversation-persistence.test.js.map +1 -0
  284. package/dist/services/conversation-result-builder.d.ts.map +1 -1
  285. package/dist/services/conversation-result-builder.js +13 -0
  286. package/dist/services/conversation-result-builder.js.map +1 -1
  287. package/dist/services/conversation-retry-policy.d.ts +7 -0
  288. package/dist/services/conversation-retry-policy.d.ts.map +1 -1
  289. package/dist/services/conversation-retry-policy.js +34 -0
  290. package/dist/services/conversation-retry-policy.js.map +1 -1
  291. package/dist/services/conversation-retry-policy.test.js +44 -2
  292. package/dist/services/conversation-retry-policy.test.js.map +1 -1
  293. package/dist/services/conversation-service.d.ts +25 -2
  294. package/dist/services/conversation-service.d.ts.map +1 -1
  295. package/dist/services/conversation-service.js +29 -3
  296. package/dist/services/conversation-service.js.map +1 -1
  297. package/dist/services/conversation-session.auto-approval.test.js +7 -10
  298. package/dist/services/conversation-session.auto-approval.test.js.map +1 -1
  299. package/dist/services/conversation-session.d.ts +28 -1
  300. package/dist/services/conversation-session.d.ts.map +1 -1
  301. package/dist/services/conversation-session.js +300 -95
  302. package/dist/services/conversation-session.js.map +1 -1
  303. package/dist/services/conversation-store.d.ts +42 -0
  304. package/dist/services/conversation-store.d.ts.map +1 -1
  305. package/dist/services/conversation-store.js +188 -6
  306. package/dist/services/conversation-store.js.map +1 -1
  307. package/dist/services/conversation-store.test.js +344 -1
  308. package/dist/services/conversation-store.test.js.map +1 -1
  309. package/dist/services/history-service.d.ts +6 -1
  310. package/dist/services/history-service.d.ts.map +1 -1
  311. package/dist/services/history-service.js +46 -6
  312. package/dist/services/history-service.js.map +1 -1
  313. package/dist/services/history-service.test.d.ts +2 -0
  314. package/dist/services/history-service.test.d.ts.map +1 -0
  315. package/dist/services/history-service.test.js +77 -0
  316. package/dist/services/history-service.test.js.map +1 -0
  317. package/dist/services/input-surge-guard.d.ts +37 -0
  318. package/dist/services/input-surge-guard.d.ts.map +1 -0
  319. package/dist/services/input-surge-guard.js +190 -0
  320. package/dist/services/input-surge-guard.js.map +1 -0
  321. package/dist/services/input-surge-guard.test.d.ts +2 -0
  322. package/dist/services/input-surge-guard.test.d.ts.map +1 -0
  323. package/dist/services/input-surge-guard.test.js +126 -0
  324. package/dist/services/input-surge-guard.test.js.map +1 -0
  325. package/dist/services/logging-contract.d.ts +1 -1
  326. package/dist/services/logging-service.d.ts +4 -0
  327. package/dist/services/logging-service.d.ts.map +1 -1
  328. package/dist/services/logging-service.js +91 -33
  329. package/dist/services/logging-service.js.map +1 -1
  330. package/dist/services/mode-notices.d.ts +11 -0
  331. package/dist/services/mode-notices.d.ts.map +1 -0
  332. package/dist/services/mode-notices.js +16 -0
  333. package/dist/services/mode-notices.js.map +1 -0
  334. package/dist/services/model-service.d.ts.map +1 -1
  335. package/dist/services/model-service.js +0 -1
  336. package/dist/services/model-service.js.map +1 -1
  337. package/dist/services/plan-mode-interceptor.d.ts +10 -0
  338. package/dist/services/plan-mode-interceptor.d.ts.map +1 -0
  339. package/dist/services/plan-mode-interceptor.js +38 -0
  340. package/dist/services/plan-mode-interceptor.js.map +1 -0
  341. package/dist/services/plan-mode-interceptor.test.d.ts +2 -0
  342. package/dist/services/plan-mode-interceptor.test.d.ts.map +1 -0
  343. package/dist/services/plan-mode-interceptor.test.js +55 -0
  344. package/dist/services/plan-mode-interceptor.test.js.map +1 -0
  345. package/dist/services/provider-traffic.d.ts +87 -0
  346. package/dist/services/provider-traffic.d.ts.map +1 -0
  347. package/dist/services/provider-traffic.js +545 -0
  348. package/dist/services/provider-traffic.js.map +1 -0
  349. package/dist/services/provider-traffic.test.d.ts +2 -0
  350. package/dist/services/provider-traffic.test.d.ts.map +1 -0
  351. package/dist/services/provider-traffic.test.js +383 -0
  352. package/dist/services/provider-traffic.test.js.map +1 -0
  353. package/dist/services/service-interfaces.d.ts +20 -1
  354. package/dist/services/service-interfaces.d.ts.map +1 -1
  355. package/dist/services/settings-persistence.js +1 -1
  356. package/dist/services/settings-schema.d.ts +107 -4
  357. package/dist/services/settings-schema.d.ts.map +1 -1
  358. package/dist/services/settings-schema.js +103 -5
  359. package/dist/services/settings-schema.js.map +1 -1
  360. package/dist/services/settings-schema.test.js +35 -1
  361. package/dist/services/settings-schema.test.js.map +1 -1
  362. package/dist/services/settings-service.d.ts +3 -1
  363. package/dist/services/settings-service.d.ts.map +1 -1
  364. package/dist/services/settings-service.js +40 -4
  365. package/dist/services/settings-service.js.map +1 -1
  366. package/dist/services/settings-sources.d.ts.map +1 -1
  367. package/dist/services/settings-sources.js +2 -1
  368. package/dist/services/settings-sources.js.map +1 -1
  369. package/dist/services/settings-sources.test.js +4 -0
  370. package/dist/services/settings-sources.test.js.map +1 -1
  371. package/dist/services/shell-auto-approval-evaluator.d.ts +3 -2
  372. package/dist/services/shell-auto-approval-evaluator.d.ts.map +1 -1
  373. package/dist/services/shell-auto-approval-evaluator.js +287 -101
  374. package/dist/services/shell-auto-approval-evaluator.js.map +1 -1
  375. package/dist/services/shell-auto-approval-evaluator.test.js +216 -18
  376. package/dist/services/shell-auto-approval-evaluator.test.js.map +1 -1
  377. package/dist/services/shell-auto-approval-resolver.test.js +1 -1
  378. package/dist/services/shell-auto-approval-resolver.test.js.map +1 -1
  379. package/dist/services/stream-event-processor.d.ts.map +1 -1
  380. package/dist/services/stream-event-processor.js +5 -0
  381. package/dist/services/stream-event-processor.js.map +1 -1
  382. package/dist/services/stream-event-processor.test.js +27 -0
  383. package/dist/services/stream-event-processor.test.js.map +1 -1
  384. package/dist/services/subagents/reasoning-inheritance.test.d.ts +2 -0
  385. package/dist/services/subagents/reasoning-inheritance.test.d.ts.map +1 -0
  386. package/dist/services/subagents/reasoning-inheritance.test.js +73 -0
  387. package/dist/services/subagents/reasoning-inheritance.test.js.map +1 -0
  388. package/dist/services/subagents/subagent-manager.d.ts +2 -0
  389. package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
  390. package/dist/services/subagents/subagent-manager.js +204 -33
  391. package/dist/services/subagents/subagent-manager.js.map +1 -1
  392. package/dist/services/subagents/subagent-manager.test.js +331 -42
  393. package/dist/services/subagents/subagent-manager.test.js.map +1 -1
  394. package/dist/services/subagents/types.d.ts +6 -0
  395. package/dist/services/subagents/types.d.ts.map +1 -1
  396. package/dist/services/terminal-result-collector.d.ts.map +1 -1
  397. package/dist/services/terminal-result-collector.js +1 -2
  398. package/dist/services/terminal-result-collector.js.map +1 -1
  399. package/dist/slash-commands.d.ts +1 -0
  400. package/dist/slash-commands.d.ts.map +1 -1
  401. package/dist/slash-commands.js +8 -1
  402. package/dist/slash-commands.js.map +1 -1
  403. package/dist/slash-commands.test.d.ts +2 -0
  404. package/dist/slash-commands.test.d.ts.map +1 -0
  405. package/dist/slash-commands.test.js +22 -0
  406. package/dist/slash-commands.test.js.map +1 -0
  407. package/dist/tools/apply-patch.d.ts.map +1 -1
  408. package/dist/tools/apply-patch.js +2 -6
  409. package/dist/tools/apply-patch.js.map +1 -1
  410. package/dist/tools/apply-patch.test.js +2 -13
  411. package/dist/tools/apply-patch.test.js.map +1 -1
  412. package/dist/tools/code-context.test.js +4 -3
  413. package/dist/tools/code-context.test.js.map +1 -1
  414. package/dist/tools/create-file.d.ts.map +1 -1
  415. package/dist/tools/create-file.js +2 -3
  416. package/dist/tools/create-file.js.map +1 -1
  417. package/dist/tools/create-file.test.js +3 -14
  418. package/dist/tools/create-file.test.js.map +1 -1
  419. package/dist/tools/edit-healing.d.ts +3 -3
  420. package/dist/tools/edit-healing.d.ts.map +1 -1
  421. package/dist/tools/edit-healing.js.map +1 -1
  422. package/dist/tools/edit-healing.test.js +0 -1
  423. package/dist/tools/edit-healing.test.js.map +1 -1
  424. package/dist/tools/find-files.test.js +3 -2
  425. package/dist/tools/find-files.test.js.map +1 -1
  426. package/dist/tools/grep.d.ts +1 -0
  427. package/dist/tools/grep.d.ts.map +1 -1
  428. package/dist/tools/grep.js +65 -4
  429. package/dist/tools/grep.js.map +1 -1
  430. package/dist/tools/grep.test.js +39 -0
  431. package/dist/tools/grep.test.js.map +1 -0
  432. package/dist/tools/read-file.d.ts +1 -0
  433. package/dist/tools/read-file.d.ts.map +1 -1
  434. package/dist/tools/read-file.js +7 -5
  435. package/dist/tools/read-file.js.map +1 -1
  436. package/dist/tools/read-file.test.js +3 -2
  437. package/dist/tools/read-file.test.js.map +1 -1
  438. package/dist/tools/run-subagent.d.ts +1 -1
  439. package/dist/tools/run-subagent.d.ts.map +1 -1
  440. package/dist/tools/run-subagent.js +27 -23
  441. package/dist/tools/run-subagent.js.map +1 -1
  442. package/dist/tools/run-subagent.test.js +55 -8
  443. package/dist/tools/run-subagent.test.js.map +1 -1
  444. package/dist/tools/search-replace.d.ts +13 -5
  445. package/dist/tools/search-replace.d.ts.map +1 -1
  446. package/dist/tools/search-replace.js +46 -115
  447. package/dist/tools/search-replace.js.map +1 -1
  448. package/dist/tools/search-replace.test.js +275 -240
  449. package/dist/tools/search-replace.test.js.map +1 -1
  450. package/dist/tools/shell.d.ts +1 -0
  451. package/dist/tools/shell.d.ts.map +1 -1
  452. package/dist/tools/shell.js +14 -6
  453. package/dist/tools/shell.js.map +1 -1
  454. package/dist/tools/shell.test.js +52 -0
  455. package/dist/tools/shell.test.js.map +1 -1
  456. package/dist/tools/tool-parameter-schema.test.js +13 -4
  457. package/dist/tools/tool-parameter-schema.test.js.map +1 -1
  458. package/dist/tools/types.d.ts +1 -1
  459. package/dist/tools/types.d.ts.map +1 -1
  460. package/dist/tools/web-fetch.d.ts.map +1 -1
  461. package/dist/tools/web-fetch.js +29 -4
  462. package/dist/tools/web-fetch.js.map +1 -1
  463. package/dist/tools/web-fetch.test.js +64 -0
  464. package/dist/tools/web-fetch.test.js.map +1 -1
  465. package/dist/utils/command-safety/path-analysis.d.ts.map +1 -1
  466. package/dist/utils/command-safety/path-analysis.js +143 -35
  467. package/dist/utils/command-safety/path-analysis.js.map +1 -1
  468. package/dist/utils/conversation-event-handler.d.ts.map +1 -1
  469. package/dist/utils/conversation-event-handler.js +23 -3
  470. package/dist/utils/conversation-event-handler.js.map +1 -1
  471. package/dist/utils/conversation-event-handler.test.js +94 -0
  472. package/dist/utils/conversation-event-handler.test.js.map +1 -1
  473. package/dist/utils/execute-shell.d.ts +2 -0
  474. package/dist/utils/execute-shell.d.ts.map +1 -1
  475. package/dist/utils/execute-shell.js +25 -1
  476. package/dist/utils/execute-shell.js.map +1 -1
  477. package/dist/utils/execute-shell.test.js +22 -0
  478. package/dist/utils/execute-shell.test.js.map +1 -1
  479. package/dist/utils/model-settings.d.ts.map +1 -1
  480. package/dist/utils/model-settings.js +18 -0
  481. package/dist/utils/model-settings.js.map +1 -1
  482. package/dist/utils/output-trim.d.ts.map +1 -1
  483. package/dist/utils/output-trim.js +14 -6
  484. package/dist/utils/output-trim.js.map +1 -1
  485. package/dist/utils/token-usage.test.js +31 -0
  486. package/dist/utils/token-usage.test.js.map +1 -1
  487. package/package.json +3 -3
  488. package/readme.md +271 -44
@@ -1,4 +1,5 @@
1
1
  import test from 'ava';
2
+ import * as fs from 'fs/promises';
2
3
  import { createWebFetchToolDefinition } from './web-fetch.js';
3
4
  // Mock services
4
5
  const mockSettingsService = {};
@@ -91,4 +92,67 @@ test.serial('execute: converts github blob links to raw links', async (t) => {
91
92
  global.fetch = originalFetch;
92
93
  }
93
94
  });
95
+ test.serial('execute: saves full content to temp file when content exceeds max_chars', async (t) => {
96
+ const originalFetch = global.fetch;
97
+ // Generate enough HTML to produce > 200 chars of markdown
98
+ const longText = 'This is a long paragraph that generates enough markdown to exceed the max_chars limit and trigger the temp file creation behavior in the web fetch tool. '.repeat(10);
99
+ const html = `<html><body><h1>Long Page</h1><p>${longText}</p></body></html>`;
100
+ global.fetch = async () => {
101
+ return {
102
+ ok: true,
103
+ status: 200,
104
+ headers: new Map([['content-type', 'text/html']]),
105
+ text: async () => html,
106
+ };
107
+ };
108
+ let tempFile = null;
109
+ try {
110
+ const result = await webFetchTool.execute({ url: 'https://example.com/long', max_chars: 200 });
111
+ t.true(result.includes('Content truncated at 200 characters'));
112
+ t.true(result.includes('Full content saved to temp file:'));
113
+ // Extract the temp file path from the output and clean up
114
+ const match = result.match(/`([^`]+\.md)`/);
115
+ if (match) {
116
+ tempFile = match[1];
117
+ }
118
+ }
119
+ finally {
120
+ global.fetch = originalFetch;
121
+ if (tempFile) {
122
+ await fs.rm(tempFile, { force: true });
123
+ }
124
+ }
125
+ });
126
+ test.serial('execute: does not save temp file when content fits within max_chars', async (t) => {
127
+ const originalFetch = global.fetch;
128
+ const shortHtml = '<html><body><h1>Short Page</h1><p>Small content.</p></body></html>';
129
+ global.fetch = async () => {
130
+ return {
131
+ ok: true,
132
+ status: 200,
133
+ headers: new Map([['content-type', 'text/html']]),
134
+ text: async () => shortHtml,
135
+ };
136
+ };
137
+ try {
138
+ const result = await webFetchTool.execute({ url: 'https://example.com/short' });
139
+ t.false(result.includes('Full content saved to temp file:'));
140
+ }
141
+ finally {
142
+ global.fetch = originalFetch;
143
+ }
144
+ });
145
+ test.serial('execute: does not save temp file on continuation request', async (t) => {
146
+ // Continuation requests should skip the temp file logic entirely,
147
+ // even if a valid result were returned.
148
+ const result = await webFetchTool.execute({
149
+ url: 'https://example.com/page',
150
+ max_chars: 200,
151
+ continuation_token: 'nonexistent-token',
152
+ });
153
+ // The call will error because the token doesn't exist in the cache,
154
+ // but it should never try to save a temp file.
155
+ t.true(result.startsWith('Error:'));
156
+ t.false(result.includes('Full content saved to temp file:'));
157
+ });
94
158
  //# sourceMappingURL=web-fetch.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"web-fetch.test.js","sourceRoot":"","sources":["../../source/tools/web-fetch.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-fetch.test.js","sourceRoot":"","sources":["../../source/tools/web-fetch.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"path-analysis.d.ts","sourceRoot":"","sources":["../../../source/utils/command-safety/path-analysis.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EACL,YAAY,EAOb,MAAM,gBAAgB,CAAC;AAmBxB,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,cAAc,CAAC,EAAE,eAAe,GAAG,YAAY,CAkK7G"}
1
+ {"version":3,"file":"path-analysis.d.ts","sourceRoot":"","sources":["../../../source/utils/command-safety/path-analysis.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EACL,YAAY,EAOb,MAAM,gBAAgB,CAAC;AAgHxB,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,cAAc,CAAC,EAAE,eAAe,GAAG,YAAY,CA2L7G"}
@@ -10,10 +10,98 @@ const nullLoggingService = {
10
10
  getCorrelationId: () => undefined,
11
11
  clearCorrelationId: () => { },
12
12
  };
13
- const SENSITIVE_LOCAL_PATH_SEGMENTS = new Set(['.ssh', '.gnupg', '.aws', '.kube', '.git', '.config', '.env']);
13
+ // Dot-directories that almost always contain credentials, private keys, or secrets.
14
+ // Access to these should be blocked (RED) regardless of the specific file inside.
15
+ const HIGHLY_SENSITIVE_HOME_DIRS = new Set([
16
+ '.ssh',
17
+ '.gnupg',
18
+ '.gpg',
19
+ '.aws',
20
+ '.azure',
21
+ '.gcloud',
22
+ '.config/gcloud',
23
+ '.kube',
24
+ '.docker',
25
+ '.netrc',
26
+ '.pgpass',
27
+ '.password-store',
28
+ '.cert',
29
+ '.certs',
30
+ '.keys',
31
+ '.secrets',
32
+ ]);
33
+ // Sensitive dotfiles at the root of the home directory (RED).
34
+ const HIGHLY_SENSITIVE_HOME_FILES = new Set([
35
+ '.netrc',
36
+ '.pgpass',
37
+ '.npmrc', // can contain auth tokens
38
+ '.pypirc', // can contain auth tokens
39
+ '.gitconfig', // may contain credentials / signing keys
40
+ '.git-credentials',
41
+ '.bash_history',
42
+ '.zsh_history',
43
+ '.python_history',
44
+ '.node_repl_history',
45
+ '.mysql_history',
46
+ '.psql_history',
47
+ '.lesshst',
48
+ ]);
49
+ // Dot-directories that are commonly used as working/cache/data directories.
50
+ // These should NOT be RED — they're YELLOW at worst, often GREEN-ish.
51
+ // Users frequently work in these (installing tools, inspecting caches, etc.).
52
+ const COMMON_WORKING_DOT_DIRS = new Set([
53
+ '.local',
54
+ '.cache',
55
+ '.config', // root .config is broad; specific sensitive subdirs handled above
56
+ '.npm',
57
+ '.yarn',
58
+ '.pnpm',
59
+ '.nvm',
60
+ '.node_modules',
61
+ '.vscode',
62
+ '.idea',
63
+ '.cursor',
64
+ '.vim',
65
+ '.emacs.d',
66
+ '.mozilla',
67
+ '.themes',
68
+ '.icons',
69
+ '.fonts',
70
+ '.gradle',
71
+ '.m2',
72
+ '.cargo',
73
+ '.rustup',
74
+ '.pyenv',
75
+ '.rbenv',
76
+ '.virtualenvs',
77
+ '.docker-desktop',
78
+ ]);
79
+ const SENSITIVE_LOCAL_PATH_SEGMENTS = new Set(['.ssh', '.gnupg', '.aws', '.kube', '.git', '.env']);
14
80
  function getLogger(loggingService) {
15
81
  return loggingService ?? nullLoggingService;
16
82
  }
83
+ /**
84
+ * Given a sliced home-relative path (e.g. "/.ssh/id_rsa" or "/.local/bin/foo"),
85
+ * return the first dot-segment (e.g. ".ssh", ".local") or undefined.
86
+ */
87
+ function firstDotSegment(sliced) {
88
+ const segments = sliced.split('/').filter(Boolean);
89
+ const first = segments[0];
90
+ return first && first.startsWith('.') ? first : undefined;
91
+ }
92
+ /**
93
+ * Check whether a sliced home path falls within a highly sensitive directory.
94
+ * Handles nested keys like ".config/gcloud".
95
+ */
96
+ function isInHighlySensitiveDir(sliced) {
97
+ const trimmed = sliced.replace(/^\/+/, '');
98
+ for (const dir of HIGHLY_SENSITIVE_HOME_DIRS) {
99
+ if (trimmed === dir || trimmed.startsWith(dir + '/')) {
100
+ return true;
101
+ }
102
+ }
103
+ return false;
104
+ }
17
105
  export function analyzePathRisk(inputPath, loggingService) {
18
106
  const logger = getLogger(loggingService);
19
107
  const candidate = inputPath?.trim();
@@ -46,48 +134,74 @@ export function analyzePathRisk(inputPath, loggingService) {
46
134
  // Plain home directory access without any suffix is broad and privacy-sensitive,
47
135
  // but not inherently destructive. Let the model judge the task context.
48
136
  if (sliced === '' || sliced === '/') {
49
- logger.security('Path risk: home directory access', {
50
- path: candidate,
51
- });
137
+ logger.security('Path risk: home directory access', { path: candidate });
52
138
  return SafetyStatus.YELLOW;
53
139
  }
54
- // Check for sensitive dotfiles and directories
55
- if (/^\/\.\w+/.test(sliced) || SENSITIVE_PATHS.some((sensitive) => sliced.includes(sensitive))) {
56
- logger.security('Path risk: home dotfile or config', {
57
- path: candidate,
58
- });
140
+ const filename = path.basename(candidate);
141
+ const topDot = firstDotSegment(sliced);
142
+ // RED: highly sensitive credential directories (anywhere inside)
143
+ if (isInHighlySensitiveDir(sliced)) {
144
+ logger.security('Path risk: sensitive credential directory', { path: candidate });
59
145
  return SafetyStatus.RED;
60
146
  }
61
- // Check if filename in home directory is suspicious (credentials, secrets, etc.)
62
- const filename = path.basename(candidate);
147
+ // RED: highly sensitive dotfiles at home root
148
+ // (only when the file sits directly under home, not deep inside another dir)
149
+ const slicedSegments = sliced.split('/').filter(Boolean);
150
+ if (slicedSegments.length === 1 && HIGHLY_SENSITIVE_HOME_FILES.has(slicedSegments[0])) {
151
+ logger.security('Path risk: sensitive home dotfile', { path: candidate });
152
+ return SafetyStatus.RED;
153
+ }
154
+ // Legacy explicit sensitive-path substring match (kept for back-compat with constants.ts)
155
+ if (SENSITIVE_PATHS.some((sensitive) => sliced.includes(sensitive))) {
156
+ logger.security('Path risk: known sensitive path', { path: candidate });
157
+ return SafetyStatus.RED;
158
+ }
159
+ // Suspicious filename patterns (credentials.json, *_token.json, etc.) anywhere in home -> RED
63
160
  if (/\.json$/i.test(filename) && SUSPICIOUS_JSON_PATTERNS.some((pattern) => pattern.test(filename))) {
64
161
  logger.security('Path risk: suspicious JSON file in home directory', { path: candidate });
65
162
  return SafetyStatus.RED;
66
163
  }
67
- // Check for other sensitive extensions in home directory
164
+ // Sensitive extensions (private keys, pem, etc.) anywhere in home -> RED
68
165
  if (SENSITIVE_EXTENSIONS.some((ext) => filename.endsWith(ext))) {
69
- logger.security('Path risk: sensitive file in home directory', {
70
- path: candidate,
71
- });
166
+ logger.security('Path risk: sensitive file in home directory', { path: candidate });
72
167
  return SafetyStatus.RED;
73
168
  }
169
+ // YELLOW: common working dot-directories (~/.local, ~/.cache, ~/.config/..., etc.)
170
+ // Users legitimately operate here often — flag as cautious, not blocked.
171
+ if (topDot && COMMON_WORKING_DOT_DIRS.has(topDot)) {
172
+ logger.security('Path risk: home working dot-directory', { path: candidate, segment: topDot });
173
+ return SafetyStatus.YELLOW;
174
+ }
175
+ // YELLOW: any other unknown dotfile/dotdir directly under home — be cautious
176
+ // but don't block, since many tools create custom dot-directories.
177
+ if (topDot) {
178
+ logger.security('Path risk: unknown home dot-entry', { path: candidate, segment: topDot });
179
+ return SafetyStatus.YELLOW;
180
+ }
181
+ // Non-dot files/folders inside home -> YELLOW (privacy-sensitive but not destructive)
182
+ logger.security('Path risk: home directory file', { path: candidate });
183
+ return SafetyStatus.YELLOW;
74
184
  }
75
185
  // YELLOW: Absolute System Paths
76
186
  if (path.isAbsolute(candidate)) {
77
187
  if (SYSTEM_PATHS.some((sys) => candidate.startsWith(sys))) {
78
- logger.security('Path risk: absolute system path', {
79
- path: candidate,
80
- });
188
+ logger.security('Path risk: absolute system path', { path: candidate });
81
189
  return SafetyStatus.YELLOW;
82
190
  }
83
- // Home dotfiles when absolute
84
- if (/^\/(home|Users)\/[^/]+\/\.\w+/.test(candidate) ||
85
- candidate.includes('/.ssh') ||
86
- candidate.includes('/.gitconfig')) {
87
- logger.security('Path risk: absolute home dotfile', {
88
- path: candidate,
89
- });
90
- return SafetyStatus.RED;
191
+ // Absolute paths into highly sensitive home dirs are still RED
192
+ const absHomeMatch = candidate.match(/^\/(?:home|Users)\/[^/]+(\/.*)?$/) ||
193
+ (candidate.startsWith('/root') ? [candidate, candidate.slice(5)] : null);
194
+ if (absHomeMatch) {
195
+ const tail = absHomeMatch[1] ?? '';
196
+ if (isInHighlySensitiveDir(tail)) {
197
+ logger.security('Path risk: absolute sensitive home dir', { path: candidate });
198
+ return SafetyStatus.RED;
199
+ }
200
+ const tailSegments = tail.split('/').filter(Boolean);
201
+ if (tailSegments.length === 1 && HIGHLY_SENSITIVE_HOME_FILES.has(tailSegments[0])) {
202
+ logger.security('Path risk: absolute sensitive home file', { path: candidate });
203
+ return SafetyStatus.RED;
204
+ }
91
205
  }
92
206
  // Check if absolute path is within current project directory or in a safe temporary directory
93
207
  const isTempDir = normalizedCandidate === '/tmp' ||
@@ -96,9 +210,7 @@ export function analyzePathRisk(inputPath, loggingService) {
96
210
  normalizedCandidate.startsWith('/private/tmp' + path.sep);
97
211
  if (!isWithinProject && !isTempDir) {
98
212
  // Absolute paths outside project are suspicious -> audit
99
- logger.security('Path risk: absolute non-system path', {
100
- path: candidate,
101
- });
213
+ logger.security('Path risk: absolute non-system path', { path: candidate });
102
214
  return SafetyStatus.YELLOW;
103
215
  }
104
216
  // If within project, continue with normal flow (treat like relative path)
@@ -106,16 +218,12 @@ export function analyzePathRisk(inputPath, loggingService) {
106
218
  }
107
219
  // YELLOW: Directory Traversal
108
220
  if (candidate.includes('..')) {
109
- logger.security('Path risk: directory traversal detected', {
110
- path: candidate,
111
- });
221
+ logger.security('Path risk: directory traversal detected', { path: candidate });
112
222
  return SafetyStatus.YELLOW;
113
223
  }
114
224
  const pathSegments = normalizedCandidate.split(/[\\/]+/).filter(Boolean);
115
225
  if (pathSegments.some((segment) => SENSITIVE_LOCAL_PATH_SEGMENTS.has(segment))) {
116
- logger.security('Path risk: sensitive local dot-directory', {
117
- path: candidate,
118
- });
226
+ logger.security('Path risk: sensitive local dot-directory', { path: candidate });
119
227
  return SafetyStatus.YELLOW;
120
228
  }
121
229
  const filename = path.basename(candidate);
@@ -1 +1 @@
1
- {"version":3,"file":"path-analysis.js","sourceRoot":"","sources":["../../../source/utils/command-safety/path-analysis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"path-analysis.js","sourceRoot":"","sources":["../../../source/utils/command-safety/path-analysis.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-event-handler.d.ts","sourceRoot":"","sources":["../../source/utils/conversation-event-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAyC,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAErG;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAsCvF;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,WAAW,4BAA4B,CAC3C,QAAQ,SAAS,SAAS,GAAG,SAAS,EACtC,eAAe,SAAS,cAAc,GAAG,cAAc;IAEvD,kBAAkB,EAAE;QAClB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QAC7B,MAAM,EAAE,MAAM,IAAI,CAAC;QACnB,KAAK,EAAE,MAAM,IAAI,CAAC;KACnB,CAAC;IACF,gBAAgB,EAAE;QAChB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QAC7B,MAAM,EAAE,MAAM,IAAI,CAAC;QACnB,KAAK,EAAE,MAAM,IAAI,CAAC;KACnB,CAAC;IACF,cAAc,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IAC/C,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,IAAI,CAAC;IACjE,eAAe,EAAE,MAAM,MAAM,CAAC;IAC9B,YAAY,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,CAAC;IACnD,sBAAsB,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,eAAe,CAAC;CACnE;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,SAAS,SAAS,GAAG,SAAS,EACtC,eAAe,SAAS,cAAc,GAAG,cAAc,EAEvD,IAAI,EAAE,4BAA4B,CAAC,QAAQ,EAAE,eAAe,CAAC,EAC7D,KAAK,EAAE,cAAc,GACpB,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CA6VpC"}
1
+ {"version":3,"file":"conversation-event-handler.d.ts","sourceRoot":"","sources":["../../source/utils/conversation-event-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAyC,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAErG;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAsCvF;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,WAAW,4BAA4B,CAC3C,QAAQ,SAAS,SAAS,GAAG,SAAS,EACtC,eAAe,SAAS,cAAc,GAAG,cAAc;IAEvD,kBAAkB,EAAE;QAClB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QAC7B,MAAM,EAAE,MAAM,IAAI,CAAC;QACnB,KAAK,EAAE,MAAM,IAAI,CAAC;KACnB,CAAC;IACF,gBAAgB,EAAE;QAChB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QAC7B,MAAM,EAAE,MAAM,IAAI,CAAC;QACnB,KAAK,EAAE,MAAM,IAAI,CAAC;KACnB,CAAC;IACF,cAAc,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IAC/C,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,IAAI,CAAC;IACjE,eAAe,EAAE,MAAM,MAAM,CAAC;IAC9B,YAAY,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,CAAC;IACnD,sBAAsB,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,eAAe,CAAC;CACnE;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,SAAS,SAAS,GAAG,SAAS,EACtC,eAAe,SAAS,cAAc,GAAG,cAAc,EAEvD,IAAI,EAAE,4BAA4B,CAAC,QAAQ,EAAE,eAAe,CAAC,EAC7D,KAAK,EAAE,cAAc,GACpB,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CA4WpC"}
@@ -241,6 +241,10 @@ export function createConversationEventHandler(deps, state) {
241
241
  if (toolCallId) {
242
242
  activeRunningToolCallIds.add(toolCallId);
243
243
  }
244
+ // run_subagent shows its own title via SubagentActivityMessage
245
+ if (toolName === 'run_subagent') {
246
+ return;
247
+ }
244
248
  appendMessages([pendingMessage]);
245
249
  return;
246
250
  }
@@ -324,9 +328,25 @@ export function createConversationEventHandler(deps, state) {
324
328
  return;
325
329
  }
326
330
  case 'retry': {
327
- const text = event.retryType === 'flex_service_tier'
328
- ? 'Flex service tier timed out. Falling back to standard service tier and retrying...'
329
- : `Tool hallucination detected (${event.toolName}). Retrying... (Attempt ${event.attempt}/${event.maxRetries})`;
331
+ let text;
332
+ if (event.retryType === 'flex_service_tier') {
333
+ text = 'Flex service tier timed out. Falling back to standard service tier and retrying...';
334
+ }
335
+ else if (event.retryType === 'upstream') {
336
+ text = `Upstream error or rate limit encountered. Retrying... (Attempt ${event.attempt}/${event.maxRetries})`;
337
+ }
338
+ else if (event.retryType === 'parsing_error') {
339
+ text = `Model parsing error detected. Retrying... (Attempt ${event.attempt}/${event.maxRetries})`;
340
+ }
341
+ else if (event.retryType === 'behavior') {
342
+ text = `Model behavior error detected. Retrying... (Attempt ${event.attempt}/${event.maxRetries})`;
343
+ }
344
+ else if (event.retryType === 'hallucination') {
345
+ text = `Tool hallucination detected (${event.toolName}). Retrying... (Attempt ${event.attempt}/${event.maxRetries})`;
346
+ }
347
+ else {
348
+ text = `Retrying... (Attempt ${event.attempt}/${event.maxRetries})`;
349
+ }
330
350
  const systemMessage = {
331
351
  id: createMessageId(),
332
352
  sender: 'system',
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-event-handler.js","sourceRoot":"","sources":["../../source/utils/conversation-event-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation-event-handler.js","sourceRoot":"","sources":["../../source/utils/conversation-event-handler.ts"],"names":[],"mappings":"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"}
@@ -94,6 +94,16 @@ test('text_delta: accumulates text and pushes to live response', (t) => {
94
94
  t.is(state.accumulatedText, 'Hello world!');
95
95
  t.deepEqual(deps.calls.botResponsePushes, ['Hello ', 'Hello world!']);
96
96
  });
97
+ test('text_delta: preserves newline between code fence language and first code line', (t) => {
98
+ const deps = createMockDeps();
99
+ const state = createStreamingState();
100
+ const handler = createConversationEventHandler(deps, state);
101
+ handler({ type: 'text_delta', delta: '```typescript' });
102
+ handler({ type: 'text_delta', delta: '\n' });
103
+ handler({ type: 'text_delta', delta: 'if (enabled) {\n' });
104
+ t.is(state.accumulatedText, '```typescript\nif (enabled) {\n');
105
+ t.true(deps.calls.botResponsePushes.includes('```typescript\nif (enabled) {\n'));
106
+ });
97
107
  test('text_delta: finalizes stable paragraphs and streams only the unfinished tail', (t) => {
98
108
  const deps = createMockDeps();
99
109
  const state = createStreamingState();
@@ -471,6 +481,18 @@ test('tool_started: formats grep command correctly', (t) => {
471
481
  const cmdMsg = deps.calls.appendedMessages[0][0];
472
482
  t.is(cmdMsg.command, 'grep "TODO" src/');
473
483
  });
484
+ test('tool_started: skips pending message for run_subagent (SubagentActivityMessage handles display)', (t) => {
485
+ const deps = createMockDeps();
486
+ const state = createStreamingState();
487
+ const handler = createConversationEventHandler(deps, state);
488
+ handler({
489
+ type: 'tool_started',
490
+ toolCallId: 'call-sa-1',
491
+ toolName: 'run_subagent',
492
+ arguments: { role: 'worker', task: 'fix the bug' },
493
+ });
494
+ t.is(deps.calls.appendedMessages.length, 0);
495
+ });
474
496
  test('tool_started: does not append duplicate running message for the same callId', (t) => {
475
497
  const deps = createMockDeps();
476
498
  const state = createStreamingState();
@@ -683,6 +705,7 @@ test('retry: adds system message about hallucination retry', (t) => {
683
705
  attempt: 1,
684
706
  maxRetries: 2,
685
707
  errorMessage: 'Tool hallucination detected',
708
+ retryType: 'hallucination',
686
709
  });
687
710
  t.is(deps.calls.setMessagesCalls.length, 1);
688
711
  const updater = deps.calls.setMessagesCalls[0];
@@ -692,6 +715,23 @@ test('retry: adds system message about hallucination retry', (t) => {
692
715
  t.true(result[0].text.includes('shell'));
693
716
  t.true(result[0].text.includes('1/2'));
694
717
  });
718
+ test('retry: adds generic system message when retryType is undefined', (t) => {
719
+ const deps = createMockDeps();
720
+ const state = createStreamingState();
721
+ const handler = createConversationEventHandler(deps, state);
722
+ handler({
723
+ type: 'retry',
724
+ toolName: 'shell',
725
+ attempt: 1,
726
+ maxRetries: 2,
727
+ errorMessage: 'Generic retry error',
728
+ });
729
+ const updater = deps.calls.setMessagesCalls[0];
730
+ const result = updater([]);
731
+ t.is(result.length, 1);
732
+ t.is(result[0].sender, 'system');
733
+ t.is(result[0].text, 'Retrying... (Attempt 1/2)');
734
+ });
695
735
  test('retry: adds system message about flex service tier fallback', (t) => {
696
736
  const deps = createMockDeps();
697
737
  const state = createStreamingState();
@@ -711,6 +751,60 @@ test('retry: adds system message about flex service tier fallback', (t) => {
711
751
  t.true(result[0].text.includes('Flex service tier timed out'));
712
752
  t.true(result[0].text.includes('standard service tier'));
713
753
  });
754
+ test('retry: adds system message about upstream retry', (t) => {
755
+ const deps = createMockDeps();
756
+ const state = createStreamingState();
757
+ const handler = createConversationEventHandler(deps, state);
758
+ handler({
759
+ type: 'retry',
760
+ toolName: 'continuation',
761
+ attempt: 1,
762
+ maxRetries: 3,
763
+ errorMessage: 'Connection error',
764
+ retryType: 'upstream',
765
+ });
766
+ const updater = deps.calls.setMessagesCalls[0];
767
+ const result = updater([]);
768
+ t.is(result.length, 1);
769
+ t.is(result[0].sender, 'system');
770
+ t.is(result[0].text, 'Upstream error or rate limit encountered. Retrying... (Attempt 1/3)');
771
+ });
772
+ test('retry: adds system message about parsing error retry', (t) => {
773
+ const deps = createMockDeps();
774
+ const state = createStreamingState();
775
+ const handler = createConversationEventHandler(deps, state);
776
+ handler({
777
+ type: 'retry',
778
+ toolName: 'model',
779
+ attempt: 1,
780
+ maxRetries: 2,
781
+ errorMessage: 'JSON parse error',
782
+ retryType: 'parsing_error',
783
+ });
784
+ const updater = deps.calls.setMessagesCalls[0];
785
+ const result = updater([]);
786
+ t.is(result.length, 1);
787
+ t.is(result[0].sender, 'system');
788
+ t.is(result[0].text, 'Model parsing error detected. Retrying... (Attempt 1/2)');
789
+ });
790
+ test('retry: adds system message about behavior error retry', (t) => {
791
+ const deps = createMockDeps();
792
+ const state = createStreamingState();
793
+ const handler = createConversationEventHandler(deps, state);
794
+ handler({
795
+ type: 'retry',
796
+ toolName: 'model',
797
+ attempt: 2,
798
+ maxRetries: 2,
799
+ errorMessage: 'Did not produce final response',
800
+ retryType: 'behavior',
801
+ });
802
+ const updater = deps.calls.setMessagesCalls[0];
803
+ const result = updater([]);
804
+ t.is(result.length, 1);
805
+ t.is(result[0].sender, 'system');
806
+ t.is(result[0].text, 'Model behavior error detected. Retrying... (Attempt 2/2)');
807
+ });
714
808
  // =============================================================================
715
809
  // final event tests
716
810
  // =============================================================================