@qduc/term2 0.6.1 → 0.7.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 (659) hide show
  1. package/dist/agent.d.ts +9 -1
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +158 -69
  4. package/dist/agent.js.map +1 -1
  5. package/dist/agent.test.js +165 -15
  6. package/dist/agent.test.js.map +1 -1
  7. package/dist/app.d.ts +14 -3
  8. package/dist/app.d.ts.map +1 -1
  9. package/dist/app.js +192 -28
  10. package/dist/app.js.map +1 -1
  11. package/dist/app.large-uncached-warning.test.d.ts +2 -0
  12. package/dist/app.large-uncached-warning.test.d.ts.map +1 -0
  13. package/dist/app.large-uncached-warning.test.js +15 -0
  14. package/dist/app.large-uncached-warning.test.js.map +1 -0
  15. package/dist/app.startup-banner.test.js +3 -19
  16. package/dist/app.startup-banner.test.js.map +1 -1
  17. package/dist/cli.integration.test.d.ts +2 -0
  18. package/dist/cli.integration.test.d.ts.map +1 -0
  19. package/dist/cli.integration.test.js +102 -0
  20. package/dist/cli.integration.test.js.map +1 -0
  21. package/dist/cli.js +158 -71
  22. package/dist/cli.js.map +1 -1
  23. package/dist/commands/auto-approve-command.d.ts +10 -0
  24. package/dist/commands/auto-approve-command.d.ts.map +1 -0
  25. package/dist/commands/auto-approve-command.js +40 -0
  26. package/dist/commands/auto-approve-command.js.map +1 -0
  27. package/dist/commands/clear-command.d.ts +3 -0
  28. package/dist/commands/clear-command.d.ts.map +1 -0
  29. package/dist/commands/clear-command.js +12 -0
  30. package/dist/commands/clear-command.js.map +1 -0
  31. package/dist/commands/copy-command.d.ts +10 -0
  32. package/dist/commands/copy-command.d.ts.map +1 -0
  33. package/dist/commands/copy-command.js +25 -0
  34. package/dist/commands/copy-command.js.map +1 -0
  35. package/dist/commands/effort-command.d.ts +11 -0
  36. package/dist/commands/effort-command.d.ts.map +1 -0
  37. package/dist/commands/effort-command.js +34 -0
  38. package/dist/commands/effort-command.js.map +1 -0
  39. package/dist/commands/guarded-settings-command.d.ts +14 -0
  40. package/dist/commands/guarded-settings-command.d.ts.map +1 -0
  41. package/dist/commands/guarded-settings-command.js +23 -0
  42. package/dist/commands/guarded-settings-command.js.map +1 -0
  43. package/dist/commands/handoff-command.d.ts +10 -0
  44. package/dist/commands/handoff-command.d.ts.map +1 -0
  45. package/dist/commands/handoff-command.js +17 -0
  46. package/dist/commands/handoff-command.js.map +1 -0
  47. package/dist/commands/mode-commands.d.ts +32 -0
  48. package/dist/commands/mode-commands.d.ts.map +1 -0
  49. package/dist/commands/mode-commands.js +64 -0
  50. package/dist/commands/mode-commands.js.map +1 -0
  51. package/dist/commands/model-command.d.ts +11 -0
  52. package/dist/commands/model-command.d.ts.map +1 -0
  53. package/dist/commands/model-command.js +35 -0
  54. package/dist/commands/model-command.js.map +1 -0
  55. package/dist/commands/quit-command.d.ts +3 -0
  56. package/dist/commands/quit-command.d.ts.map +1 -0
  57. package/dist/commands/quit-command.js +10 -0
  58. package/dist/commands/quit-command.js.map +1 -0
  59. package/dist/commands/retry-command.d.ts +19 -0
  60. package/dist/commands/retry-command.d.ts.map +1 -0
  61. package/dist/commands/retry-command.js +30 -0
  62. package/dist/commands/retry-command.js.map +1 -0
  63. package/dist/commands/undo-command.d.ts +15 -0
  64. package/dist/commands/undo-command.d.ts.map +1 -0
  65. package/dist/commands/undo-command.js +28 -0
  66. package/dist/commands/undo-command.js.map +1 -0
  67. package/dist/commands/usage-command.d.ts +3 -0
  68. package/dist/commands/usage-command.d.ts.map +1 -0
  69. package/dist/commands/usage-command.js +11 -0
  70. package/dist/commands/usage-command.js.map +1 -0
  71. package/dist/components/Banner.d.ts.map +1 -1
  72. package/dist/components/Banner.js +35 -17
  73. package/dist/components/Banner.js.map +1 -1
  74. package/dist/components/BottomArea.d.ts +10 -1
  75. package/dist/components/BottomArea.d.ts.map +1 -1
  76. package/dist/components/BottomArea.js +8 -6
  77. package/dist/components/BottomArea.js.map +1 -1
  78. package/dist/components/BottomArea.test.js +14 -1
  79. package/dist/components/BottomArea.test.js.map +1 -1
  80. package/dist/components/CommandMessage.d.ts.map +1 -1
  81. package/dist/components/CommandMessage.js +31 -1
  82. package/dist/components/CommandMessage.js.map +1 -1
  83. package/dist/components/CommandMessage.test.js +150 -31
  84. package/dist/components/CommandMessage.test.js.map +1 -1
  85. package/dist/components/Common/MenuContainer.d.ts +20 -0
  86. package/dist/components/Common/MenuContainer.d.ts.map +1 -0
  87. package/dist/components/Common/MenuContainer.js +52 -0
  88. package/dist/components/Common/MenuContainer.js.map +1 -0
  89. package/dist/components/Common/ScrollableTabBar.d.ts +26 -0
  90. package/dist/components/Common/ScrollableTabBar.d.ts.map +1 -0
  91. package/dist/components/Common/ScrollableTabBar.js +26 -0
  92. package/dist/components/Common/ScrollableTabBar.js.map +1 -0
  93. package/dist/components/Common/compute-visible-tabs.d.ts +16 -0
  94. package/dist/components/Common/compute-visible-tabs.d.ts.map +1 -0
  95. package/dist/components/Common/compute-visible-tabs.js +53 -0
  96. package/dist/components/Common/compute-visible-tabs.js.map +1 -0
  97. package/dist/components/Common/compute-visible-tabs.test.d.ts +2 -0
  98. package/dist/components/Common/compute-visible-tabs.test.d.ts.map +1 -0
  99. package/dist/components/Common/compute-visible-tabs.test.js +97 -0
  100. package/dist/components/Common/compute-visible-tabs.test.js.map +1 -0
  101. package/dist/components/HandoffConfirmationPrompt.d.ts +9 -0
  102. package/dist/components/HandoffConfirmationPrompt.d.ts.map +1 -0
  103. package/dist/components/HandoffConfirmationPrompt.js +38 -0
  104. package/dist/components/HandoffConfirmationPrompt.js.map +1 -0
  105. package/dist/components/HandoffConfirmationPrompt.test.d.ts +2 -0
  106. package/dist/components/HandoffConfirmationPrompt.test.d.ts.map +1 -0
  107. package/dist/components/HandoffConfirmationPrompt.test.js +12 -0
  108. package/dist/components/HandoffConfirmationPrompt.test.js.map +1 -0
  109. package/dist/components/Input/PopupManager.d.ts +5 -1
  110. package/dist/components/Input/PopupManager.d.ts.map +1 -1
  111. package/dist/components/Input/PopupManager.js +2 -2
  112. package/dist/components/Input/PopupManager.js.map +1 -1
  113. package/dist/components/Input/popup-key-navigation.js +2 -2
  114. package/dist/components/Input/popup-key-navigation.js.map +1 -1
  115. package/dist/components/Input/popup-key-navigation.test.js +5 -3
  116. package/dist/components/Input/popup-key-navigation.test.js.map +1 -1
  117. package/dist/components/Input/popup-props.d.ts.map +1 -1
  118. package/dist/components/Input/popup-props.js +4 -0
  119. package/dist/components/Input/popup-props.js.map +1 -1
  120. package/dist/components/Input/popup-props.test.d.ts +2 -0
  121. package/dist/components/Input/popup-props.test.d.ts.map +1 -0
  122. package/dist/components/Input/popup-props.test.js +70 -0
  123. package/dist/components/Input/popup-props.test.js.map +1 -0
  124. package/dist/components/InputBox.d.ts +1 -1
  125. package/dist/components/InputBox.d.ts.map +1 -1
  126. package/dist/components/InputBox.js +67 -14
  127. package/dist/components/InputBox.js.map +1 -1
  128. package/dist/components/InputBox.test.js +192 -12
  129. package/dist/components/InputBox.test.js.map +1 -1
  130. package/dist/components/MessageList.d.ts +1 -0
  131. package/dist/components/MessageList.d.ts.map +1 -1
  132. package/dist/components/MessageList.js.map +1 -1
  133. package/dist/components/ModelSelectionMenu.d.ts.map +1 -1
  134. package/dist/components/ModelSelectionMenu.js +29 -125
  135. package/dist/components/ModelSelectionMenu.js.map +1 -1
  136. package/dist/components/ModelSelectionMenu.test.js +9 -5
  137. package/dist/components/ModelSelectionMenu.test.js.map +1 -1
  138. package/dist/components/PathSelectionMenu.d.ts.map +1 -1
  139. package/dist/components/PathSelectionMenu.js +15 -55
  140. package/dist/components/PathSelectionMenu.js.map +1 -1
  141. package/dist/components/SettingsSelectionMenu.d.ts +4 -1
  142. package/dist/components/SettingsSelectionMenu.d.ts.map +1 -1
  143. package/dist/components/SettingsSelectionMenu.js +48 -104
  144. package/dist/components/SettingsSelectionMenu.js.map +1 -1
  145. package/dist/components/SettingsSelectionMenu.scroll.test.js +140 -0
  146. package/dist/components/SettingsSelectionMenu.scroll.test.js.map +1 -1
  147. package/dist/components/SettingsSelectionMenu.test.js +38 -5
  148. package/dist/components/SettingsSelectionMenu.test.js.map +1 -1
  149. package/dist/components/SettingsValueSelectionMenu.d.ts.map +1 -1
  150. package/dist/components/SettingsValueSelectionMenu.js +24 -51
  151. package/dist/components/SettingsValueSelectionMenu.js.map +1 -1
  152. package/dist/components/SlashCommandMenu.d.ts +1 -0
  153. package/dist/components/SlashCommandMenu.d.ts.map +1 -1
  154. package/dist/components/SlashCommandMenu.js +11 -14
  155. package/dist/components/SlashCommandMenu.js.map +1 -1
  156. package/dist/components/StatusBar.d.ts +6 -0
  157. package/dist/components/StatusBar.d.ts.map +1 -1
  158. package/dist/components/StatusBar.js +51 -4
  159. package/dist/components/StatusBar.js.map +1 -1
  160. package/dist/components/StatusBar.test.js +47 -0
  161. package/dist/components/StatusBar.test.js.map +1 -1
  162. package/dist/components/UndoSelectionMenu.d.ts.map +1 -1
  163. package/dist/components/UndoSelectionMenu.js +6 -33
  164. package/dist/components/UndoSelectionMenu.js.map +1 -1
  165. package/dist/context/InputContext.stability.test.js +9 -7
  166. package/dist/context/InputContext.stability.test.js.map +1 -1
  167. package/dist/contracts/conversation.d.ts +3 -0
  168. package/dist/contracts/conversation.d.ts.map +1 -1
  169. package/dist/env-setup.js +1 -0
  170. package/dist/env-setup.js.map +1 -1
  171. package/dist/hooks/use-app-commands.d.ts +20 -21
  172. package/dist/hooks/use-app-commands.d.ts.map +1 -1
  173. package/dist/hooks/use-app-commands.js +65 -330
  174. package/dist/hooks/use-app-commands.js.map +1 -1
  175. package/dist/hooks/use-app-commands.test.js +146 -3
  176. package/dist/hooks/use-app-commands.test.js.map +1 -1
  177. package/dist/hooks/use-conversation.clear.test.js +61 -8
  178. package/dist/hooks/use-conversation.clear.test.js.map +1 -1
  179. package/dist/hooks/use-conversation.d.ts +25 -2
  180. package/dist/hooks/use-conversation.d.ts.map +1 -1
  181. package/dist/hooks/use-conversation.js +91 -30
  182. package/dist/hooks/use-conversation.js.map +1 -1
  183. package/dist/hooks/use-escape-key.d.ts +8 -1
  184. package/dist/hooks/use-escape-key.d.ts.map +1 -1
  185. package/dist/hooks/use-escape-key.js +15 -4
  186. package/dist/hooks/use-escape-key.js.map +1 -1
  187. package/dist/hooks/use-escape-key.test.js +135 -28
  188. package/dist/hooks/use-escape-key.test.js.map +1 -1
  189. package/dist/hooks/use-input-history.test.js +14 -8
  190. package/dist/hooks/use-input-history.test.js.map +1 -1
  191. package/dist/hooks/use-mode-handlers.d.ts +16 -2
  192. package/dist/hooks/use-mode-handlers.d.ts.map +1 -1
  193. package/dist/hooks/use-mode-handlers.js +37 -2
  194. package/dist/hooks/use-mode-handlers.js.map +1 -1
  195. package/dist/hooks/use-model-selection.d.ts +6 -1
  196. package/dist/hooks/use-model-selection.d.ts.map +1 -1
  197. package/dist/hooks/use-model-selection.js +50 -8
  198. package/dist/hooks/use-model-selection.js.map +1 -1
  199. package/dist/hooks/use-model-selection.test.js +306 -50
  200. package/dist/hooks/use-model-selection.test.js.map +1 -1
  201. package/dist/hooks/use-path-completion.d.ts +4 -0
  202. package/dist/hooks/use-path-completion.d.ts.map +1 -1
  203. package/dist/hooks/use-path-completion.js +23 -17
  204. package/dist/hooks/use-path-completion.js.map +1 -1
  205. package/dist/hooks/use-runtime-settings.d.ts.map +1 -1
  206. package/dist/hooks/use-runtime-settings.js +9 -4
  207. package/dist/hooks/use-runtime-settings.js.map +1 -1
  208. package/dist/hooks/use-runtime-settings.test.d.ts +2 -0
  209. package/dist/hooks/use-runtime-settings.test.d.ts.map +1 -0
  210. package/dist/hooks/use-runtime-settings.test.js +44 -0
  211. package/dist/hooks/use-runtime-settings.test.js.map +1 -0
  212. package/dist/hooks/use-selection.d.ts +6 -2
  213. package/dist/hooks/use-selection.d.ts.map +1 -1
  214. package/dist/hooks/use-selection.js +53 -16
  215. package/dist/hooks/use-selection.js.map +1 -1
  216. package/dist/hooks/use-selection.test.d.ts +2 -0
  217. package/dist/hooks/use-selection.test.d.ts.map +1 -0
  218. package/dist/hooks/use-selection.test.js +132 -0
  219. package/dist/hooks/use-selection.test.js.map +1 -0
  220. package/dist/hooks/use-settings-completion.d.ts +19 -0
  221. package/dist/hooks/use-settings-completion.d.ts.map +1 -1
  222. package/dist/hooks/use-settings-completion.js +106 -18
  223. package/dist/hooks/use-settings-completion.js.map +1 -1
  224. package/dist/hooks/use-settings-completion.scroll.test.js +68 -29
  225. package/dist/hooks/use-settings-completion.scroll.test.js.map +1 -1
  226. package/dist/hooks/use-settings-completion.test.js +36 -1
  227. package/dist/hooks/use-settings-completion.test.js.map +1 -1
  228. package/dist/hooks/use-settings-value-completion.d.ts +7 -1
  229. package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
  230. package/dist/hooks/use-settings-value-completion.js +18 -7
  231. package/dist/hooks/use-settings-value-completion.js.map +1 -1
  232. package/dist/hooks/use-slash-commands.d.ts +5 -0
  233. package/dist/hooks/use-slash-commands.d.ts.map +1 -1
  234. package/dist/hooks/use-slash-commands.js +32 -2
  235. package/dist/hooks/use-slash-commands.js.map +1 -1
  236. package/dist/hooks/use-slash-commands.test.js +35 -5
  237. package/dist/hooks/use-slash-commands.test.js.map +1 -1
  238. package/dist/hooks/use-trigger-detection.test.js +9 -6
  239. package/dist/hooks/use-trigger-detection.test.js.map +1 -1
  240. package/dist/hooks/use-undo-selection.d.ts +4 -0
  241. package/dist/hooks/use-undo-selection.d.ts.map +1 -1
  242. package/dist/hooks/use-undo-selection.js +20 -1
  243. package/dist/hooks/use-undo-selection.js.map +1 -1
  244. package/dist/lib/openai-agent-client.d.ts +10 -3
  245. package/dist/lib/openai-agent-client.d.ts.map +1 -1
  246. package/dist/lib/openai-agent-client.flex-tier.test.js +8 -3
  247. package/dist/lib/openai-agent-client.flex-tier.test.js.map +1 -1
  248. package/dist/lib/openai-agent-client.js +198 -38
  249. package/dist/lib/openai-agent-client.js.map +1 -1
  250. package/dist/lib/openai-agent-client.public-methods.test.js +193 -0
  251. package/dist/lib/openai-agent-client.public-methods.test.js.map +1 -1
  252. package/dist/lib/openai-agent-client.test.js +71 -1
  253. package/dist/lib/openai-agent-client.test.js.map +1 -1
  254. package/dist/lib/tool-invoke.d.ts +3 -2
  255. package/dist/lib/tool-invoke.d.ts.map +1 -1
  256. package/dist/lib/tool-invoke.js +213 -10
  257. package/dist/lib/tool-invoke.js.map +1 -1
  258. package/dist/lib/tool-invoke.test.js +103 -0
  259. package/dist/lib/tool-invoke.test.js.map +1 -1
  260. package/dist/lib/tool-selection-policy.d.ts.map +1 -1
  261. package/dist/lib/tool-selection-policy.js +43 -2
  262. package/dist/lib/tool-selection-policy.js.map +1 -1
  263. package/dist/lib/tool-selection-policy.test.js +39 -0
  264. package/dist/lib/tool-selection-policy.test.js.map +1 -1
  265. package/dist/prompts/codex.md +105 -97
  266. package/dist/prompts/fragments/gpt-5.3-codex.md +7 -0
  267. package/dist/prompts/fragments/gpt-5.4-small.md +6 -0
  268. package/dist/prompts/fragments/gpt-5.4.md +7 -0
  269. package/dist/prompts/fragments/gpt-5.5.md +7 -0
  270. package/dist/prompts/gpt-5-modern.md +90 -54
  271. package/dist/prompts/plan-mode-info.md +14 -3
  272. package/dist/prompts/prompt-constructor.d.ts +19 -0
  273. package/dist/prompts/prompt-constructor.d.ts.map +1 -0
  274. package/dist/prompts/prompt-constructor.js +53 -0
  275. package/dist/prompts/prompt-constructor.js.map +1 -0
  276. package/dist/prompts/prompt-constructor.test.d.ts +2 -0
  277. package/dist/prompts/prompt-constructor.test.d.ts.map +1 -0
  278. package/dist/prompts/prompt-constructor.test.js +99 -0
  279. package/dist/prompts/prompt-constructor.test.js.map +1 -0
  280. package/dist/prompts/prompt-constructor.test.ts +112 -0
  281. package/dist/prompts/prompt-constructor.ts +91 -0
  282. package/dist/prompts/prompt-profiles.d.ts +17 -0
  283. package/dist/prompts/prompt-profiles.d.ts.map +1 -0
  284. package/dist/prompts/prompt-profiles.js +61 -0
  285. package/dist/prompts/prompt-profiles.js.map +1 -0
  286. package/dist/prompts/prompt-profiles.ts +77 -0
  287. package/dist/prompts/prompt-selector.d.ts.map +1 -1
  288. package/dist/prompts/prompt-selector.js +3 -21
  289. package/dist/prompts/prompt-selector.js.map +1 -1
  290. package/dist/prompts/prompt-selector.ts +3 -25
  291. package/dist/prompts/reasoning-efficiency.d.ts.map +1 -1
  292. package/dist/prompts/reasoning-efficiency.js +2 -0
  293. package/dist/prompts/reasoning-efficiency.js.map +1 -1
  294. package/dist/prompts/reasoning-efficiency.test.d.ts +2 -0
  295. package/dist/prompts/reasoning-efficiency.test.d.ts.map +1 -0
  296. package/dist/prompts/reasoning-efficiency.test.js +11 -0
  297. package/dist/prompts/reasoning-efficiency.test.js.map +1 -0
  298. package/dist/prompts/reasoning-efficiency.test.ts +12 -0
  299. package/dist/prompts/reasoning-efficiency.ts +2 -0
  300. package/dist/prompts/search-via-shell.d.ts.map +1 -1
  301. package/dist/prompts/search-via-shell.js +0 -1
  302. package/dist/prompts/search-via-shell.js.map +1 -1
  303. package/dist/prompts/search-via-shell.test.js +19 -16
  304. package/dist/prompts/search-via-shell.test.js.map +1 -1
  305. package/dist/prompts/search-via-shell.test.ts +20 -16
  306. package/dist/prompts/search-via-shell.ts +0 -1
  307. package/dist/prompts/shell-auto-approval.d.ts +2 -2
  308. package/dist/prompts/shell-auto-approval.d.ts.map +1 -1
  309. package/dist/prompts/shell-auto-approval.js +6 -6
  310. package/dist/prompts/shell-auto-approval.js.map +1 -1
  311. package/dist/prompts/shell-auto-approval.ts +6 -6
  312. package/dist/prompts/simple-prev.md +55 -0
  313. package/dist/prompts/simple.md +31 -53
  314. package/dist/prompts/subagent-delegation.js +2 -2
  315. package/dist/prompts/subagent-delegation.js.map +1 -1
  316. package/dist/prompts/subagent-delegation.test.js +12 -10
  317. package/dist/prompts/subagent-delegation.test.js.map +1 -1
  318. package/dist/prompts/subagent-delegation.test.ts +13 -10
  319. package/dist/prompts/subagent-delegation.ts +2 -2
  320. package/dist/prompts/worktree-hygiene.md +9 -0
  321. package/dist/providers/ai-sdk-logging-fetch.d.ts.map +1 -1
  322. package/dist/providers/ai-sdk-logging-fetch.js +78 -3
  323. package/dist/providers/ai-sdk-logging-fetch.js.map +1 -1
  324. package/dist/providers/ai-sdk-logging-fetch.test.js +143 -0
  325. package/dist/providers/ai-sdk-logging-fetch.test.js.map +1 -1
  326. package/dist/providers/codex-responses-model.d.ts +21 -0
  327. package/dist/providers/codex-responses-model.d.ts.map +1 -0
  328. package/dist/providers/codex-responses-model.js +180 -0
  329. package/dist/providers/codex-responses-model.js.map +1 -0
  330. package/dist/providers/codex-responses-model.test.d.ts +2 -0
  331. package/dist/providers/codex-responses-model.test.d.ts.map +1 -0
  332. package/dist/providers/codex-responses-model.test.js +354 -0
  333. package/dist/providers/codex-responses-model.test.js.map +1 -0
  334. package/dist/providers/codex.provider.d.ts +27 -0
  335. package/dist/providers/codex.provider.d.ts.map +1 -0
  336. package/dist/providers/codex.provider.js +482 -0
  337. package/dist/providers/codex.provider.js.map +1 -0
  338. package/dist/providers/codex.provider.test.d.ts +2 -0
  339. package/dist/providers/codex.provider.test.d.ts.map +1 -0
  340. package/dist/providers/codex.provider.test.js +607 -0
  341. package/dist/providers/codex.provider.test.js.map +1 -0
  342. package/dist/providers/custom-provider-adapter.test.js +59 -3
  343. package/dist/providers/custom-provider-adapter.test.js.map +1 -1
  344. package/dist/providers/fallback-responses-model.d.ts +20 -0
  345. package/dist/providers/fallback-responses-model.d.ts.map +1 -0
  346. package/dist/providers/fallback-responses-model.js +346 -0
  347. package/dist/providers/fallback-responses-model.js.map +1 -0
  348. package/dist/providers/fallback-responses-model.test.d.ts +2 -0
  349. package/dist/providers/fallback-responses-model.test.d.ts.map +1 -0
  350. package/dist/providers/fallback-responses-model.test.js +568 -0
  351. package/dist/providers/fallback-responses-model.test.js.map +1 -0
  352. package/dist/providers/fetch/compose.d.ts +7 -0
  353. package/dist/providers/fetch/compose.d.ts.map +1 -0
  354. package/dist/providers/fetch/compose.js +20 -0
  355. package/dist/providers/fetch/compose.js.map +1 -0
  356. package/dist/providers/fetch/composer.d.ts +13 -0
  357. package/dist/providers/fetch/composer.d.ts.map +1 -0
  358. package/dist/providers/fetch/composer.js +15 -0
  359. package/dist/providers/fetch/composer.js.map +1 -0
  360. package/dist/providers/fetch/composer.test.d.ts +2 -0
  361. package/dist/providers/fetch/composer.test.d.ts.map +1 -0
  362. package/dist/providers/fetch/composer.test.js +448 -0
  363. package/dist/providers/fetch/composer.test.js.map +1 -0
  364. package/dist/providers/fetch/logging-middleware.d.ts +16 -0
  365. package/dist/providers/fetch/logging-middleware.d.ts.map +1 -0
  366. package/dist/providers/fetch/logging-middleware.js +214 -0
  367. package/dist/providers/fetch/logging-middleware.js.map +1 -0
  368. package/dist/providers/index.d.ts +1 -0
  369. package/dist/providers/index.d.ts.map +1 -1
  370. package/dist/providers/index.js +1 -0
  371. package/dist/providers/index.js.map +1 -1
  372. package/dist/providers/llama-cpp.provider.d.ts +3 -0
  373. package/dist/providers/llama-cpp.provider.d.ts.map +1 -0
  374. package/dist/providers/llama-cpp.provider.js +34 -0
  375. package/dist/providers/llama-cpp.provider.js.map +1 -0
  376. package/dist/providers/openai-compatible-middleware.d.ts +7 -0
  377. package/dist/providers/openai-compatible-middleware.d.ts.map +1 -0
  378. package/dist/providers/openai-compatible-middleware.js +133 -0
  379. package/dist/providers/openai-compatible-middleware.js.map +1 -0
  380. package/dist/providers/openai-compatible-models.d.ts +6 -0
  381. package/dist/providers/openai-compatible-models.d.ts.map +1 -0
  382. package/dist/providers/openai-compatible-models.js +17 -0
  383. package/dist/providers/openai-compatible-models.js.map +1 -0
  384. package/dist/providers/openai-compatible-response-normalizer.d.ts +7 -0
  385. package/dist/providers/openai-compatible-response-normalizer.d.ts.map +1 -0
  386. package/dist/providers/openai-compatible-response-normalizer.js +58 -0
  387. package/dist/providers/openai-compatible-response-normalizer.js.map +1 -0
  388. package/dist/providers/openai-compatible.provider.d.ts +6 -3
  389. package/dist/providers/openai-compatible.provider.d.ts.map +1 -1
  390. package/dist/providers/openai-compatible.provider.js +71 -327
  391. package/dist/providers/openai-compatible.provider.js.map +1 -1
  392. package/dist/providers/openai-compatible.provider.test.js +106 -1
  393. package/dist/providers/openai-compatible.provider.test.js.map +1 -1
  394. package/dist/providers/openai.provider.js +44 -10
  395. package/dist/providers/openai.provider.js.map +1 -1
  396. package/dist/providers/opencode.provider.d.ts +19 -0
  397. package/dist/providers/opencode.provider.d.ts.map +1 -0
  398. package/dist/providers/opencode.provider.js +45 -0
  399. package/dist/providers/opencode.provider.js.map +1 -0
  400. package/dist/providers/openrouter.provider.d.ts +2 -3
  401. package/dist/providers/openrouter.provider.d.ts.map +1 -1
  402. package/dist/providers/openrouter.provider.js +23 -24
  403. package/dist/providers/openrouter.provider.js.map +1 -1
  404. package/dist/providers/openrouter.provider.request-preprocessing.test.js +12 -9
  405. package/dist/providers/openrouter.provider.request-preprocessing.test.js.map +1 -1
  406. package/dist/providers/protocol-client.d.ts +17 -0
  407. package/dist/providers/protocol-client.d.ts.map +1 -0
  408. package/dist/providers/protocol-client.js +57 -0
  409. package/dist/providers/protocol-client.js.map +1 -0
  410. package/dist/providers/protocol-client.test.d.ts +2 -0
  411. package/dist/providers/protocol-client.test.d.ts.map +1 -0
  412. package/dist/providers/protocol-client.test.js +55 -0
  413. package/dist/providers/protocol-client.test.js.map +1 -0
  414. package/dist/providers/registry.d.ts +1 -0
  415. package/dist/providers/registry.d.ts.map +1 -1
  416. package/dist/providers/registry.js.map +1 -1
  417. package/dist/providers/registry.test.js +6 -22
  418. package/dist/providers/registry.test.js.map +1 -1
  419. package/dist/providers/timed-responses-ws-model.d.ts +20 -0
  420. package/dist/providers/timed-responses-ws-model.d.ts.map +1 -0
  421. package/dist/providers/timed-responses-ws-model.js +381 -0
  422. package/dist/providers/timed-responses-ws-model.js.map +1 -0
  423. package/dist/providers/timed-responses-ws-model.test.d.ts +2 -0
  424. package/dist/providers/timed-responses-ws-model.test.d.ts.map +1 -0
  425. package/dist/providers/timed-responses-ws-model.test.js +441 -0
  426. package/dist/providers/timed-responses-ws-model.test.js.map +1 -0
  427. package/dist/providers/timed-ws-connection.d.ts +26 -0
  428. package/dist/providers/timed-ws-connection.d.ts.map +1 -0
  429. package/dist/providers/timed-ws-connection.js +156 -0
  430. package/dist/providers/timed-ws-connection.js.map +1 -0
  431. package/dist/providers/timed-ws-connection.test.d.ts +2 -0
  432. package/dist/providers/timed-ws-connection.test.d.ts.map +1 -0
  433. package/dist/providers/timed-ws-connection.test.js +223 -0
  434. package/dist/providers/timed-ws-connection.test.js.map +1 -0
  435. package/dist/providers/timed-ws-timeouts.d.ts +6 -0
  436. package/dist/providers/timed-ws-timeouts.d.ts.map +1 -0
  437. package/dist/providers/timed-ws-timeouts.js +6 -0
  438. package/dist/providers/timed-ws-timeouts.js.map +1 -0
  439. package/dist/scripts/eval-auto-approval/dataset.d.ts +2 -2
  440. package/dist/services/approval-flow-coordinator.d.ts.map +1 -1
  441. package/dist/services/approval-flow-coordinator.js +17 -1
  442. package/dist/services/approval-flow-coordinator.js.map +1 -1
  443. package/dist/services/approval-flow-coordinator.test.js +22 -0
  444. package/dist/services/approval-flow-coordinator.test.js.map +1 -1
  445. package/dist/services/command-message-streaming.d.ts.map +1 -1
  446. package/dist/services/command-message-streaming.js +8 -6
  447. package/dist/services/command-message-streaming.js.map +1 -1
  448. package/dist/services/command-message-streaming.test.js +4 -2
  449. package/dist/services/command-message-streaming.test.js.map +1 -1
  450. package/dist/services/conversation-clear-save.test.js +37 -66
  451. package/dist/services/conversation-clear-save.test.js.map +1 -1
  452. package/dist/services/conversation-events.d.ts +48 -1
  453. package/dist/services/conversation-events.d.ts.map +1 -1
  454. package/dist/services/conversation-history-repair.d.ts.map +1 -1
  455. package/dist/services/conversation-history-repair.js +81 -26
  456. package/dist/services/conversation-history-repair.js.map +1 -1
  457. package/dist/services/conversation-integration.test.js +112 -1
  458. package/dist/services/conversation-integration.test.js.map +1 -1
  459. package/dist/services/conversation-log-events.d.ts +113 -0
  460. package/dist/services/conversation-log-events.d.ts.map +1 -0
  461. package/dist/services/conversation-log-events.js +12 -0
  462. package/dist/services/conversation-log-events.js.map +1 -0
  463. package/dist/services/conversation-log-writer.d.ts +40 -0
  464. package/dist/services/conversation-log-writer.d.ts.map +1 -0
  465. package/dist/services/conversation-log-writer.js +264 -0
  466. package/dist/services/conversation-log-writer.js.map +1 -0
  467. package/dist/services/conversation-persistence-types.d.ts +46 -0
  468. package/dist/services/conversation-persistence-types.d.ts.map +1 -0
  469. package/dist/services/conversation-persistence-types.js +2 -0
  470. package/dist/services/conversation-persistence-types.js.map +1 -0
  471. package/dist/services/conversation-persistence.d.ts +44 -39
  472. package/dist/services/conversation-persistence.d.ts.map +1 -1
  473. package/dist/services/conversation-persistence.js +273 -83
  474. package/dist/services/conversation-persistence.js.map +1 -1
  475. package/dist/services/conversation-persistence.test.js +708 -624
  476. package/dist/services/conversation-persistence.test.js.map +1 -1
  477. package/dist/services/conversation-replay.d.ts +26 -0
  478. package/dist/services/conversation-replay.d.ts.map +1 -0
  479. package/dist/services/conversation-replay.js +460 -0
  480. package/dist/services/conversation-replay.js.map +1 -0
  481. package/dist/services/conversation-replay.test.d.ts +2 -0
  482. package/dist/services/conversation-replay.test.d.ts.map +1 -0
  483. package/dist/services/conversation-replay.test.js +492 -0
  484. package/dist/services/conversation-replay.test.js.map +1 -0
  485. package/dist/services/conversation-result-builder.d.ts +2 -0
  486. package/dist/services/conversation-result-builder.d.ts.map +1 -1
  487. package/dist/services/conversation-result-builder.js +12 -2
  488. package/dist/services/conversation-result-builder.js.map +1 -1
  489. package/dist/services/conversation-result-builder.test.js +179 -0
  490. package/dist/services/conversation-result-builder.test.js.map +1 -1
  491. package/dist/services/conversation-retry-policy.d.ts +17 -0
  492. package/dist/services/conversation-retry-policy.d.ts.map +1 -1
  493. package/dist/services/conversation-retry-policy.js +38 -5
  494. package/dist/services/conversation-retry-policy.js.map +1 -1
  495. package/dist/services/conversation-retry-policy.test.js +60 -1
  496. package/dist/services/conversation-retry-policy.test.js.map +1 -1
  497. package/dist/services/conversation-service.d.ts +12 -3
  498. package/dist/services/conversation-service.d.ts.map +1 -1
  499. package/dist/services/conversation-service.js +18 -3
  500. package/dist/services/conversation-service.js.map +1 -1
  501. package/dist/services/conversation-session.d.ts +23 -7
  502. package/dist/services/conversation-session.d.ts.map +1 -1
  503. package/dist/services/conversation-session.js +620 -67
  504. package/dist/services/conversation-session.js.map +1 -1
  505. package/dist/services/conversation-store.d.ts +16 -13
  506. package/dist/services/conversation-store.d.ts.map +1 -1
  507. package/dist/services/conversation-store.js +62 -191
  508. package/dist/services/conversation-store.js.map +1 -1
  509. package/dist/services/conversation-store.merge-modes.removed.d.ts +2 -0
  510. package/dist/services/conversation-store.merge-modes.removed.d.ts.map +1 -0
  511. package/dist/services/conversation-store.merge-modes.removed.js +2 -0
  512. package/dist/services/conversation-store.merge-modes.removed.js.map +1 -0
  513. package/dist/services/conversation-store.merge-modes.test.d.ts +2 -0
  514. package/dist/services/conversation-store.merge-modes.test.d.ts.map +1 -0
  515. package/dist/services/conversation-store.merge-modes.test.js +2 -0
  516. package/dist/services/conversation-store.merge-modes.test.js.map +1 -0
  517. package/dist/services/conversation-store.test.js +157 -294
  518. package/dist/services/conversation-store.test.js.map +1 -1
  519. package/dist/services/conversation-turn-items.d.ts +5 -0
  520. package/dist/services/conversation-turn-items.d.ts.map +1 -0
  521. package/dist/services/conversation-turn-items.js +351 -0
  522. package/dist/services/conversation-turn-items.js.map +1 -0
  523. package/dist/services/conversation-turn-items.test.d.ts +2 -0
  524. package/dist/services/conversation-turn-items.test.d.ts.map +1 -0
  525. package/dist/services/conversation-turn-items.test.js +68 -0
  526. package/dist/services/conversation-turn-items.test.js.map +1 -0
  527. package/dist/services/input-surge-guard.d.ts +4 -0
  528. package/dist/services/input-surge-guard.d.ts.map +1 -1
  529. package/dist/services/input-surge-guard.js +2 -2
  530. package/dist/services/input-surge-guard.js.map +1 -1
  531. package/dist/services/input-surge-guard.test.js +15 -1
  532. package/dist/services/input-surge-guard.test.js.map +1 -1
  533. package/dist/services/large-uncached-input-guard.d.ts +35 -0
  534. package/dist/services/large-uncached-input-guard.d.ts.map +1 -0
  535. package/dist/services/large-uncached-input-guard.js +127 -0
  536. package/dist/services/large-uncached-input-guard.js.map +1 -0
  537. package/dist/services/large-uncached-input-guard.test.d.ts +2 -0
  538. package/dist/services/large-uncached-input-guard.test.d.ts.map +1 -0
  539. package/dist/services/large-uncached-input-guard.test.js +160 -0
  540. package/dist/services/large-uncached-input-guard.test.js.map +1 -0
  541. package/dist/services/model-service.d.ts +2 -0
  542. package/dist/services/model-service.d.ts.map +1 -1
  543. package/dist/services/model-service.js +7 -0
  544. package/dist/services/model-service.js.map +1 -1
  545. package/dist/services/provider-traffic.d.ts.map +1 -1
  546. package/dist/services/provider-traffic.js +82 -24
  547. package/dist/services/provider-traffic.js.map +1 -1
  548. package/dist/services/provider-traffic.test.js +98 -6
  549. package/dist/services/provider-traffic.test.js.map +1 -1
  550. package/dist/services/repro-error.test.d.ts +2 -0
  551. package/dist/services/repro-error.test.d.ts.map +1 -0
  552. package/dist/services/repro-error.test.js +38 -0
  553. package/dist/services/repro-error.test.js.map +1 -0
  554. package/dist/services/rtk-service.d.ts.map +1 -1
  555. package/dist/services/rtk-service.js +1 -2
  556. package/dist/services/rtk-service.js.map +1 -1
  557. package/dist/services/settings-schema.d.ts +36 -28
  558. package/dist/services/settings-schema.d.ts.map +1 -1
  559. package/dist/services/settings-schema.js +7 -2
  560. package/dist/services/settings-schema.js.map +1 -1
  561. package/dist/services/settings-sources.d.ts.map +1 -1
  562. package/dist/services/settings-sources.js +1 -0
  563. package/dist/services/settings-sources.js.map +1 -1
  564. package/dist/services/stream-event-processor.d.ts +4 -0
  565. package/dist/services/stream-event-processor.d.ts.map +1 -1
  566. package/dist/services/stream-event-processor.js +78 -39
  567. package/dist/services/stream-event-processor.js.map +1 -1
  568. package/dist/services/stream-event-processor.test.js +71 -0
  569. package/dist/services/stream-event-processor.test.js.map +1 -1
  570. package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
  571. package/dist/services/subagents/subagent-manager.js +120 -46
  572. package/dist/services/subagents/subagent-manager.js.map +1 -1
  573. package/dist/services/subagents/subagent-manager.test.js +361 -11
  574. package/dist/services/subagents/subagent-manager.test.js.map +1 -1
  575. package/dist/services/subagents/subagent-session.d.ts +1 -1
  576. package/dist/services/subagents/subagent-session.d.ts.map +1 -1
  577. package/dist/services/subagents/subagent-session.js +2 -2
  578. package/dist/services/subagents/subagent-session.js.map +1 -1
  579. package/dist/services/subagents/subagent-session.test.js +3 -3
  580. package/dist/services/subagents/subagent-session.test.js.map +1 -1
  581. package/dist/services/subagents/types.d.ts +2 -1
  582. package/dist/services/subagents/types.d.ts.map +1 -1
  583. package/dist/services/terminal-result-collector.d.ts.map +1 -1
  584. package/dist/services/terminal-result-collector.js +49 -1
  585. package/dist/services/terminal-result-collector.js.map +1 -1
  586. package/dist/services/terminal-result-collector.test.js +44 -0
  587. package/dist/services/terminal-result-collector.test.js.map +1 -1
  588. package/dist/services/tool-call-arguments.d.ts +20 -0
  589. package/dist/services/tool-call-arguments.d.ts.map +1 -0
  590. package/dist/services/tool-call-arguments.js +49 -0
  591. package/dist/services/tool-call-arguments.js.map +1 -0
  592. package/dist/services/tool-execution-ledger.d.ts +41 -0
  593. package/dist/services/tool-execution-ledger.d.ts.map +1 -0
  594. package/dist/services/tool-execution-ledger.js +269 -0
  595. package/dist/services/tool-execution-ledger.js.map +1 -0
  596. package/dist/services/tool-execution-ledger.test.d.ts +2 -0
  597. package/dist/services/tool-execution-ledger.test.d.ts.map +1 -0
  598. package/dist/services/tool-execution-ledger.test.js +271 -0
  599. package/dist/services/tool-execution-ledger.test.js.map +1 -0
  600. package/dist/tools/apply-patch.d.ts +8 -0
  601. package/dist/tools/apply-patch.d.ts.map +1 -1
  602. package/dist/tools/apply-patch.js +187 -14
  603. package/dist/tools/apply-patch.js.map +1 -1
  604. package/dist/tools/apply-patch.test.js +81 -0
  605. package/dist/tools/apply-patch.test.js.map +1 -1
  606. package/dist/tools/edit-healing.d.ts.map +1 -1
  607. package/dist/tools/edit-healing.js +9 -3
  608. package/dist/tools/edit-healing.js.map +1 -1
  609. package/dist/tools/run-subagent.d.ts +0 -1
  610. package/dist/tools/run-subagent.d.ts.map +1 -1
  611. package/dist/tools/run-subagent.js +1 -8
  612. package/dist/tools/run-subagent.js.map +1 -1
  613. package/dist/tools/run-subagent.test.js +0 -18
  614. package/dist/tools/run-subagent.test.js.map +1 -1
  615. package/dist/tools/search-replace.d.ts.map +1 -1
  616. package/dist/tools/search-replace.js +92 -140
  617. package/dist/tools/search-replace.js.map +1 -1
  618. package/dist/utils/clipboard.d.ts +7 -0
  619. package/dist/utils/clipboard.d.ts.map +1 -1
  620. package/dist/utils/clipboard.js +83 -4
  621. package/dist/utils/clipboard.js.map +1 -1
  622. package/dist/utils/clipboard.test.js +152 -2
  623. package/dist/utils/clipboard.test.js.map +1 -1
  624. package/dist/utils/conversation-event-handler.d.ts.map +1 -1
  625. package/dist/utils/conversation-event-handler.js +36 -1
  626. package/dist/utils/conversation-event-handler.js.map +1 -1
  627. package/dist/utils/conversation-event-handler.test.js +116 -0
  628. package/dist/utils/conversation-event-handler.test.js.map +1 -1
  629. package/dist/utils/error-helpers.d.ts +1 -0
  630. package/dist/utils/error-helpers.d.ts.map +1 -1
  631. package/dist/utils/error-helpers.js +61 -0
  632. package/dist/utils/error-helpers.js.map +1 -1
  633. package/dist/utils/error-helpers.test.js +13 -1
  634. package/dist/utils/error-helpers.test.js.map +1 -1
  635. package/dist/utils/extract-command-messages.d.ts.map +1 -1
  636. package/dist/utils/extract-command-messages.js +8 -4
  637. package/dist/utils/extract-command-messages.js.map +1 -1
  638. package/dist/utils/ink-render-options.d.ts +1 -1
  639. package/dist/utils/ink-render-options.d.ts.map +1 -1
  640. package/dist/utils/ink-render-options.js +1 -1
  641. package/dist/utils/ink-render-options.js.map +1 -1
  642. package/dist/utils/message-utils.d.ts +7 -0
  643. package/dist/utils/message-utils.d.ts.map +1 -0
  644. package/dist/utils/message-utils.js +31 -0
  645. package/dist/utils/message-utils.js.map +1 -0
  646. package/dist/utils/resume-list.d.ts +15 -0
  647. package/dist/utils/resume-list.d.ts.map +1 -0
  648. package/dist/utils/resume-list.js +68 -0
  649. package/dist/utils/resume-list.js.map +1 -0
  650. package/dist/utils/resume-list.test.d.ts +2 -0
  651. package/dist/utils/resume-list.test.d.ts.map +1 -0
  652. package/dist/utils/resume-list.test.js +89 -0
  653. package/dist/utils/resume-list.test.js.map +1 -0
  654. package/dist/utils/streaming-session-factory.d.ts +2 -0
  655. package/dist/utils/streaming-session-factory.d.ts.map +1 -1
  656. package/dist/utils/streaming-session-factory.js +4 -0
  657. package/dist/utils/streaming-session-factory.js.map +1 -1
  658. package/package.json +2 -2
  659. package/readme.md +22 -7
package/dist/agent.d.ts CHANGED
@@ -1,6 +1,14 @@
1
1
  import type { ToolDefinition } from './tools/types.js';
2
2
  import type { ISettingsService, ILoggingService } from './services/service-interfaces.js';
3
3
  import { ExecutionContext } from './services/execution-context.js';
4
+ type ProjectTreeOptions = {
5
+ maxDepth?: number;
6
+ maxEntriesPerDir?: number;
7
+ maxTotalEntries?: number;
8
+ includeFiles?: boolean;
9
+ ignoredNames?: Set<string>;
10
+ };
11
+ export declare function getProjectTreeForPrompt(cwd: string, options?: ProjectTreeOptions): string;
4
12
  export declare function getEnvInfo(settingsService: ISettingsService, executionContext?: ExecutionContext, lite?: boolean): string;
5
13
  export declare function getAgentsInstructions(cwd: string): string;
6
14
  export interface AgentDefinition {
@@ -20,7 +28,7 @@ export declare const getAgentDefinition: (deps: {
20
28
  runSubagent?: (params: {
21
29
  role: string;
22
30
  task: string;
23
- writeBoundary?: string[];
24
31
  }, context?: unknown, details?: unknown) => Promise<any>;
25
32
  }, model?: string) => AgentDefinition;
33
+ export {};
26
34
  //# sourceMappingURL=agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../source/agent.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAqBnE,wBAAgB,UAAU,CACxB,eAAe,EAAE,gBAAgB,EACjC,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,IAAI,UAAQ,GACX,MAAM,CAwBR;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAUzD;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAcD;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC7B,MAAM;IACJ,eAAe,EAAE,gBAAgB,CAAC;IAClC,cAAc,EAAE,eAAe,CAAC;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,WAAW,CAAC,EAAE,CACZ,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,EAChE,OAAO,CAAC,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,OAAO,KACd,OAAO,CAAC,GAAG,CAAC,CAAC;CACnB,EACD,QAAQ,MAAM,KACb,eA+LF,CAAC"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../source/agent.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAMnE,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B,CAAC;AA+CF,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,MAAM,CAoH7F;AAED,wBAAgB,UAAU,CACxB,eAAe,EAAE,gBAAgB,EACjC,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,IAAI,UAAQ,GACX,MAAM,CAwBR;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAUzD;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAmBD;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC7B,MAAM;IACJ,eAAe,EAAE,gBAAgB,CAAC;IAClC,cAAc,EAAE,eAAe,CAAC;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CAC9G,EACD,QAAQ,MAAM,KACb,eAsJF,CAAC"}
package/dist/agent.js CHANGED
@@ -14,22 +14,145 @@ import { registerToolFormatters } from './tools/command-message-formatters.js';
14
14
  import os from 'os';
15
15
  import fs from 'fs';
16
16
  import path from 'path';
17
- import { getPromptPath } from './prompts/prompt-selector.js';
17
+ import { default as createIgnore } from 'ignore';
18
+ import { buildPromptSpec } from './prompts/prompt-constructor.js';
18
19
  import { shouldPreferPatchEditingModel } from './lib/tool-selection-policy.js';
19
- import { getSearchViaShellAddendum } from './prompts/search-via-shell.js';
20
- import { getSubagentDelegationAddendum } from './prompts/subagent-delegation.js';
21
- import { getReasoningEfficiencyAddendum } from './prompts/reasoning-efficiency.js';
22
20
  const BASE_PROMPT_PATH = path.join(import.meta.dirname, './prompts');
23
- function getTopLevelEntries(cwd, limit = 50) {
21
+ const ALWAYS_IGNORE = ['.git', 'node_modules', 'dist', 'build', '.next', '.turbo', 'coverage', '.cache', '.DS_Store'];
22
+ const ALWAYS_INCLUDE = new Set([
23
+ 'package.json',
24
+ 'tsconfig.json',
25
+ 'README.md',
26
+ 'readme.md',
27
+ '.gitignore',
28
+ '.env.example',
29
+ ]);
30
+ const SENSITIVE_PATTERNS = [/^\.env$/, /^\.env\./, /secret/i, /private/i, /credential/i, /token/i];
31
+ function isSensitiveFile(name) {
32
+ return SENSITIVE_PATTERNS.some((pattern) => pattern.test(name));
33
+ }
34
+ function createProjectIgnore(cwd) {
35
+ const ig = createIgnore();
36
+ ig.add(ALWAYS_IGNORE);
37
+ const gitignorePath = path.join(cwd, '.gitignore');
24
38
  try {
25
- const entries = fs.readdirSync(cwd, { withFileTypes: true });
26
- const names = entries.map((e) => (e.isDirectory() ? `${e.name}/` : e.name));
27
- const shown = names.slice(0, limit);
28
- const more = names.length > limit ? `, ...(+${names.length - limit} more)` : '';
29
- return shown.join(', ') + more;
39
+ if (fs.existsSync(gitignorePath)) {
40
+ ig.add(fs.readFileSync(gitignorePath, 'utf8'));
41
+ }
42
+ }
43
+ catch {
44
+ // If .gitignore cannot be read, continue with default ignores.
45
+ }
46
+ return {
47
+ ignores(relativePath, basename) {
48
+ const normalized = relativePath.split(path.sep).join('/');
49
+ if (ALWAYS_INCLUDE.has(basename)) {
50
+ return false;
51
+ }
52
+ return ig.ignores(normalized);
53
+ },
54
+ };
55
+ }
56
+ export function getProjectTreeForPrompt(cwd, options = {}) {
57
+ const { maxDepth = 3, maxEntriesPerDir = 50, maxTotalEntries = 250, includeFiles = true } = options;
58
+ let totalEntries = 0;
59
+ let omittedByLimit = 0;
60
+ const projectIgnore = createProjectIgnore(cwd);
61
+ function walk(dir, depth, prefix) {
62
+ if (depth > maxDepth || totalEntries >= maxTotalEntries)
63
+ return [];
64
+ let entries;
65
+ try {
66
+ entries = fs.readdirSync(dir, { withFileTypes: true });
67
+ }
68
+ catch (e) {
69
+ return [`${prefix}└─ [failed to read: ${e.message}]`];
70
+ }
71
+ const filtered = entries
72
+ .filter((entry) => {
73
+ const absolutePath = path.join(dir, entry.name);
74
+ const relativePath = path.relative(cwd, absolutePath).split(path.sep).join('/');
75
+ if (isSensitiveFile(entry.name)) {
76
+ return false;
77
+ }
78
+ if (projectIgnore.ignores(relativePath, entry.name)) {
79
+ return false;
80
+ }
81
+ if (!includeFiles && !entry.isDirectory()) {
82
+ return false;
83
+ }
84
+ return true;
85
+ })
86
+ .sort((a, b) => {
87
+ if (a.isDirectory() && !b.isDirectory())
88
+ return -1;
89
+ if (!a.isDirectory() && b.isDirectory())
90
+ return 1;
91
+ return a.name.localeCompare(b.name);
92
+ });
93
+ const shown = filtered.slice(0, maxEntriesPerDir);
94
+ omittedByLimit += Math.max(0, filtered.length - shown.length);
95
+ const lines = [];
96
+ const subdirs = [];
97
+ // BFS: render all children at this level first, then recurse into subdirs.
98
+ // This guarantees breadth-first budget allocation — shallower entries
99
+ // always take priority over deeper ones.
100
+ for (let index = 0; index < shown.length; index++) {
101
+ if (totalEntries >= maxTotalEntries) {
102
+ omittedByLimit += shown.length - index;
103
+ break;
104
+ }
105
+ const entry = shown[index];
106
+ totalEntries++;
107
+ const isLast = index === shown.length - 1;
108
+ const connector = isLast ? '└─ ' : '├─ ';
109
+ const childPrefix = prefix + (isLast ? ' ' : '│ ');
110
+ const displayName = entry.isDirectory() ? `${entry.name}/` : entry.name;
111
+ lines.push(`${prefix}${connector}${displayName}`);
112
+ if (entry.isDirectory()) {
113
+ if (depth >= maxDepth) {
114
+ lines.push(`${childPrefix}└─ …`);
115
+ }
116
+ else {
117
+ subdirs.push({
118
+ path: path.join(dir, entry.name),
119
+ depth: depth + 1,
120
+ prefix: childPrefix,
121
+ });
122
+ }
123
+ }
124
+ }
125
+ // Now recurse into collected subdirs (BFS step 2: children of children).
126
+ // Each subdir call starts a new breadth-first pass, but since they are
127
+ // processed after all current-level siblings are rendered, the budget
128
+ // naturally fills shallower levels first.
129
+ for (const subdir of subdirs) {
130
+ if (totalEntries >= maxTotalEntries)
131
+ break;
132
+ lines.push(...walk(subdir.path, subdir.depth, subdir.prefix));
133
+ }
134
+ return lines;
135
+ }
136
+ try {
137
+ const lines = [
138
+ 'Project structure:',
139
+ '.',
140
+ ...walk(cwd, 1, ''),
141
+ '',
142
+ 'Project structure notes:',
143
+ `- Root: ${cwd}`,
144
+ `- Max depth: ${maxDepth}`,
145
+ `- Max entries per directory: ${maxEntriesPerDir}`,
146
+ `- Max total entries: ${maxTotalEntries}`,
147
+ `- Ignored via defaults and .gitignore`,
148
+ ];
149
+ if (omittedByLimit > 0) {
150
+ lines.push(`- Omitted due to limits: ${omittedByLimit}`);
151
+ }
152
+ return lines.join('\n');
30
153
  }
31
154
  catch (e) {
32
- return `failed to read: ${e.message}`;
155
+ return `Project structure:\n[failed to read ${cwd}: ${e.message}]`;
33
156
  }
34
157
  }
35
158
  export function getEnvInfo(settingsService, executionContext, lite = false) {
@@ -45,11 +168,11 @@ export function getEnvInfo(settingsService, executionContext, lite = false) {
45
168
  }
46
169
  // For remote sessions, we might not be able to list top-level entries efficiently or at all easily here synchronously
47
170
  // We'll skip top-level entries for now if remote, or maybe we can't get them sync.
48
- // getTopLevelEntries is sync and uses fs.readdirSync. This won't work for remote.
171
+ // getProjectTreeForPrompt is sync and uses fs.readdirSync. This won't work for remote.
49
172
  // So if remote, we skip that part.
50
173
  let topLevel = '';
51
174
  if (!executionContext?.isRemote()) {
52
- topLevel = `; top-level: ${getTopLevelEntries(cwd)}`;
175
+ topLevel = `; top-level: ${getProjectTreeForPrompt(cwd)}`;
53
176
  }
54
177
  return `OS: ${osType} ${osRelease} (${osPlatform}); shell: ${shellPath}; cwd: ${cwd}${topLevel}; date: ${now}`;
55
178
  }
@@ -70,7 +193,8 @@ function resolvePrompt(promptPath) {
70
193
  return fs.readFileSync(promptPath, 'utf-8').trim();
71
194
  }
72
195
  catch (e) {
73
- const sourcePromptPath = path.join(import.meta.dirname, '../source/prompts', path.basename(promptPath));
196
+ const relativePromptPath = path.relative(BASE_PROMPT_PATH, promptPath);
197
+ const sourcePromptPath = path.join(import.meta.dirname, '../source/prompts', relativePromptPath.startsWith('..') ? path.basename(promptPath) : relativePromptPath);
74
198
  if (sourcePromptPath !== promptPath && fs.existsSync(sourcePromptPath)) {
75
199
  return fs.readFileSync(sourcePromptPath, 'utf-8').trim();
76
200
  }
@@ -90,72 +214,40 @@ export const getAgentDefinition = (deps, model) => {
90
214
  const mentorMode = settingsService.get('app.mentorMode');
91
215
  const liteMode = settingsService.get('app.liteMode');
92
216
  const orchestratorMode = settingsService.get('app.orchestratorMode');
93
- const searchViaShell = settingsService.get('app.searchViaShell');
217
+ const searchViaShellSetting = settingsService.get('app.searchViaShell') ?? 'auto';
218
+ const searchViaShell = searchViaShellSetting === 'auto' ? shouldPreferPatchEditingModel(resolvedModel) : searchViaShellSetting === 'on';
94
219
  // Code-context tools operate on the local filesystem only; disable them for
95
220
  // remote (SSH) execution where the workspace lives on another host.
96
221
  const codeContextEnabled = !(executionContext?.isRemote() ?? false);
97
222
  const isGpt5 = !liteMode && shouldPreferPatchEditingModel(resolvedModel);
98
- const promptPath = getPromptPath({
99
- basePromptDir: BASE_PROMPT_PATH,
223
+ const promptSpec = buildPromptSpec({
100
224
  model: resolvedModel,
101
225
  liteMode,
102
226
  orchestratorMode,
227
+ mentorMode,
228
+ planMode,
229
+ searchViaShell,
230
+ codeContextEnabled,
231
+ runSubagentEnabled: Boolean(runSubagent),
232
+ executionContext,
103
233
  });
104
- let prompt = resolvePrompt(promptPath);
105
- if (mentorMode && !liteMode) {
106
- const addonPath = path.join(BASE_PROMPT_PATH, 'mentor-addon.md');
107
- try {
108
- const addon = resolvePrompt(addonPath);
109
- prompt = `${prompt}\n\n${addon}`;
110
- }
111
- catch (e) {
112
- loggingService.error(`Failed to load mentor addon: ${e}`);
113
- }
114
- }
115
- const codeContextDoc = !orchestratorMode && codeContextEnabled
116
- ? liteMode
117
- ? '### Code Context Tools\n\n- `read_code_outline`: inspect file structure.\n- `code_context_search`: find related files or symbol declarations. Use `read_file` before editing.'
118
- : '### Code Context Tools\n\n- Use `read_code_outline` for a compact file outline.\n- Use `code_context_search` for related files or symbol declarations.\n- Use `read_file` before editing.'
119
- : '';
120
- if (codeContextDoc) {
121
- prompt = `${prompt}\n\n${codeContextDoc}`;
122
- }
123
- if (!orchestratorMode && searchViaShell) {
124
- try {
125
- const addendum = getSearchViaShellAddendum({ executionContext });
126
- prompt = `${prompt}\n\n${addendum}`;
127
- }
128
- catch (e) {
129
- loggingService.error(`Failed to load search-via-shell addendum: ${e}`);
130
- }
131
- }
132
- else if (!orchestratorMode) {
133
- if (!isGpt5) {
134
- const searchToolsDoc = liteMode
135
- ? '### Search Tools\n\n- `find_files`: locate files by name or glob.\n- `grep`: search file contents.'
136
- : '### Search Tools\n\n- Prefer `find_files` for locating files by name or glob.\n- Prefer `grep` for searching code content or symbols.';
137
- prompt = `${prompt}\n\n${searchToolsDoc}`;
138
- }
139
- }
140
- // Delegation guidance is injected only in orchestrator mode when runSubagent is available.
141
- if (orchestratorMode && runSubagent) {
142
- prompt = `${prompt}\n\n${getSubagentDelegationAddendum({ orchestratorMode })}`;
143
- }
144
- if (planMode) {
234
+ let prompt = resolvePrompt(path.join(BASE_PROMPT_PATH, promptSpec.basePromptFile));
235
+ for (const fragmentFile of promptSpec.fragmentFiles) {
145
236
  try {
146
- const planModeInfoPath = path.join(BASE_PROMPT_PATH, 'plan-mode-info.md');
147
- prompt = `${prompt}\n\n${resolvePrompt(planModeInfoPath)}`;
237
+ prompt = `${prompt}\n\n${resolvePrompt(path.join(BASE_PROMPT_PATH, fragmentFile))}`;
148
238
  }
149
239
  catch (e) {
150
- loggingService.error(`Failed to load plan-mode-info: ${e}`);
240
+ loggingService.error(`Failed to load prompt fragment ${fragmentFile}: ${e}`);
151
241
  }
152
242
  }
153
- const isOverThinkingModels = ['kimi', 'deepseek', 'glm', 'qwen', 'minimax', 'mimo'].some((key) => resolvedModel.toLowerCase().includes(key));
154
- if (isOverThinkingModels) {
155
- prompt += `\n\n${getReasoningEfficiencyAddendum()}`;
243
+ for (const inlineSection of promptSpec.inlineSections) {
244
+ prompt = `${prompt}\n\n${inlineSection}`;
156
245
  }
157
- const envInfo = getEnvInfo(settingsService, executionContext, liteMode || orchestratorMode);
158
246
  const cwd = executionContext?.getCwd() || process.cwd();
247
+ const isLiteEnv = liteMode && !orchestratorMode && !planMode;
248
+ const envInfo = getEnvInfo(settingsService, executionContext, isLiteEnv);
249
+ const skipAgentsMd = isLiteEnv || (executionContext?.isRemote() ?? false);
250
+ const agentsInstructions = skipAgentsMd ? '' : getAgentsInstructions(cwd);
159
251
  if (orchestratorMode) {
160
252
  if (!runSubagent) {
161
253
  throw new Error('orchestratorMode requires runSubagent: cannot build orchestrator agent without a runSubagent implementation.');
@@ -169,7 +261,7 @@ export const getAgentDefinition = (deps, model) => {
169
261
  registerToolFormatters(tools);
170
262
  return {
171
263
  name: 'Agent',
172
- instructions: `${prompt}\n\nEnvironment: ${envInfo}`,
264
+ instructions: `${prompt}\n\nEnvironment: ${envInfo}${agentsInstructions}`,
173
265
  tools,
174
266
  model: resolvedModel,
175
267
  };
@@ -231,9 +323,6 @@ export const getAgentDefinition = (deps, model) => {
231
323
  }
232
324
  }
233
325
  registerToolFormatters(tools);
234
- // In lite mode, skip AGENTS.md loading.
235
- // In remote mode, we also skip because we can't synchronously read from remote disk.
236
- const agentsInstructions = liteMode || executionContext?.isRemote() ? '' : getAgentsInstructions(cwd);
237
326
  return {
238
327
  name: 'Terminal Assistant',
239
328
  instructions: `${prompt}\n\nEnvironment: ${envInfo}${agentsInstructions}`,
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../source/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../source/agent.ts"],"names":[],"mappings":"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"}
@@ -10,9 +10,10 @@ const mockLogger = {
10
10
  clearCorrelationId: () => { },
11
11
  getCorrelationId: () => undefined,
12
12
  };
13
+ const WORKTREE_HYGIENE_FRAGMENT_MARKER = 'Before making any code changes, inspect the repo worktree.';
13
14
  test('getAgentDefinition includes grep and find_files when searchViaShell is false', (t) => {
14
15
  const settingsService = createMockSettingsService({
15
- 'app.searchViaShell': false,
16
+ 'app.searchViaShell': 'off',
16
17
  'agent.model': 'gpt-4o',
17
18
  });
18
19
  const definition = getAgentDefinition({
@@ -126,7 +127,7 @@ test('getAgentDefinition throws if orchestratorMode is true and runSubagent is m
126
127
  });
127
128
  test('getAgentDefinition excludes grep and find_files when searchViaShell is true', (t) => {
128
129
  const settingsService = createMockSettingsService({
129
- 'app.searchViaShell': true,
130
+ 'app.searchViaShell': 'on',
130
131
  'agent.model': 'gpt-4o',
131
132
  });
132
133
  const definition = getAgentDefinition({
@@ -141,7 +142,7 @@ test('getAgentDefinition excludes grep and find_files when searchViaShell is tru
141
142
  });
142
143
  test('getAgentDefinition preserves read_file and editing tools when searchViaShell is true', (t) => {
143
144
  const settingsService = createMockSettingsService({
144
- 'app.searchViaShell': true,
145
+ 'app.searchViaShell': 'on',
145
146
  'agent.model': 'gpt-4o',
146
147
  });
147
148
  const definition = getAgentDefinition({
@@ -158,7 +159,7 @@ test('getAgentDefinition preserves read_file and editing tools when searchViaShe
158
159
  });
159
160
  test('getAgentDefinition excludes grep and find_files in lite mode when searchViaShell is true', (t) => {
160
161
  const settingsService = createMockSettingsService({
161
- 'app.searchViaShell': true,
162
+ 'app.searchViaShell': 'on',
162
163
  'app.liteMode': true,
163
164
  'agent.model': 'gpt-4o',
164
165
  });
@@ -176,7 +177,7 @@ test('getAgentDefinition excludes grep and find_files in lite mode when searchVi
176
177
  });
177
178
  test('getAgentDefinition for gpt-5 omits grep and find_files regardless of searchViaShell', (t) => {
178
179
  const settingsService = createMockSettingsService({
179
- 'app.searchViaShell': false,
180
+ 'app.searchViaShell': 'off',
180
181
  'agent.model': 'gpt-5',
181
182
  });
182
183
  const definition = getAgentDefinition({
@@ -190,9 +191,91 @@ test('getAgentDefinition for gpt-5 omits grep and find_files regardless of searc
190
191
  t.true(toolNames.includes('code_context_search'));
191
192
  t.true(toolNames.includes('apply_patch'));
192
193
  });
194
+ test('getAgentDefinition defaults searchViaShell to true for gpt-5 models when not explicitly configured', (t) => {
195
+ const settingsService = createMockSettingsService({
196
+ 'agent.model': 'gpt-5',
197
+ });
198
+ const definition = getAgentDefinition({
199
+ settingsService,
200
+ loggingService: mockLogger,
201
+ });
202
+ t.true(definition.instructions.includes('### Searching via the shell'));
203
+ });
204
+ test('getAgentDefinition respects explicitly disabled searchViaShell for gpt-5 models', (t) => {
205
+ const settingsService = createMockSettingsService({
206
+ 'app.searchViaShell': 'off',
207
+ 'agent.model': 'gpt-5',
208
+ });
209
+ const definition = getAgentDefinition({
210
+ settingsService,
211
+ loggingService: mockLogger,
212
+ });
213
+ t.false(definition.instructions.includes('### Searching via the shell'));
214
+ });
215
+ test('getAgentDefinition does not default searchViaShell to true for non-gpt-5 models', (t) => {
216
+ const settingsService = createMockSettingsService({
217
+ 'agent.model': 'gpt-4o',
218
+ });
219
+ const definition = getAgentDefinition({
220
+ settingsService,
221
+ loggingService: mockLogger,
222
+ });
223
+ t.false(definition.instructions.includes('### Searching via the shell'));
224
+ t.true(definition.instructions.includes('`find_files`'));
225
+ t.true(definition.instructions.includes('`grep`'));
226
+ });
227
+ test('getAgentDefinition forces searchViaShell on for non-gpt-5 models when explicitly set to on', (t) => {
228
+ const settingsService = createMockSettingsService({
229
+ 'app.searchViaShell': 'on',
230
+ 'agent.model': 'gpt-4o',
231
+ });
232
+ const definition = getAgentDefinition({
233
+ settingsService,
234
+ loggingService: mockLogger,
235
+ });
236
+ t.true(definition.instructions.includes('### Searching via the shell'));
237
+ t.false(definition.instructions.includes('`find_files`'));
238
+ t.false(definition.instructions.includes('`grep`'));
239
+ });
240
+ // test('getAgentDefinition includes GPT version-specific prompt fragments', (t) => {
241
+ // const gpt55 = getAgentDefinition({
242
+ // settingsService: createMockSettingsService({
243
+ // 'agent.model': 'gpt-5.5-2026-04-23',
244
+ // }),
245
+ // loggingService: mockLogger,
246
+ // });
247
+ // t.true(gpt55.instructions.includes('## GPT-5.5 Guidance'));
248
+ // t.true(gpt55.instructions.includes('outcome-first behavior'));
249
+ //
250
+ // const gpt54 = getAgentDefinition({
251
+ // settingsService: createMockSettingsService({
252
+ // 'agent.model': 'gpt-5.4',
253
+ // }),
254
+ // loggingService: mockLogger,
255
+ // });
256
+ // t.true(gpt54.instructions.includes('## GPT-5.4 Guidance'));
257
+ // t.false(gpt54.instructions.includes('## GPT-5.4 Small-Model Guidance'));
258
+ //
259
+ // const gpt54Mini = getAgentDefinition({
260
+ // settingsService: createMockSettingsService({
261
+ // 'agent.model': 'gpt-5.4-mini',
262
+ // }),
263
+ // loggingService: mockLogger,
264
+ // });
265
+ // t.true(gpt54Mini.instructions.includes('## GPT-5.4 Guidance'));
266
+ // t.true(gpt54Mini.instructions.includes('## GPT-5.4 Small-Model Guidance'));
267
+ //
268
+ // const gpt53Codex = getAgentDefinition({
269
+ // settingsService: createMockSettingsService({
270
+ // 'agent.model': 'gpt-5.3-codex',
271
+ // }),
272
+ // loggingService: mockLogger,
273
+ // });
274
+ // t.true(gpt53Codex.instructions.includes('## GPT-5.3 Codex Guidance'));
275
+ // });
193
276
  test('getAgentDefinition appends search-via-shell addendum when enabled', (t) => {
194
277
  const settingsService = createMockSettingsService({
195
- 'app.searchViaShell': true,
278
+ 'app.searchViaShell': 'on',
196
279
  'agent.model': 'gpt-4o',
197
280
  });
198
281
  const definition = getAgentDefinition({
@@ -203,7 +286,7 @@ test('getAgentDefinition appends search-via-shell addendum when enabled', (t) =>
203
286
  });
204
287
  test('getAgentDefinition omits dedicated search tool references from prompt when searchViaShell is true', (t) => {
205
288
  const settingsService = createMockSettingsService({
206
- 'app.searchViaShell': true,
289
+ 'app.searchViaShell': 'on',
207
290
  'agent.model': 'gpt-4o',
208
291
  });
209
292
  const definition = getAgentDefinition({
@@ -215,7 +298,7 @@ test('getAgentDefinition omits dedicated search tool references from prompt when
215
298
  });
216
299
  test('getAgentDefinition dynamically includes dedicated search tool references when searchViaShell is false', (t) => {
217
300
  const settingsService = createMockSettingsService({
218
- 'app.searchViaShell': false,
301
+ 'app.searchViaShell': 'off',
219
302
  'agent.model': 'gpt-4o',
220
303
  });
221
304
  const definition = getAgentDefinition({
@@ -230,7 +313,7 @@ test('getAgentDefinition dynamically includes dedicated search tool references w
230
313
  });
231
314
  test('getAgentDefinition dynamically includes code-context tool references when available', (t) => {
232
315
  const settingsService = createMockSettingsService({
233
- 'app.searchViaShell': true,
316
+ 'app.searchViaShell': 'on',
234
317
  'agent.model': 'gpt-4o',
235
318
  });
236
319
  const definition = getAgentDefinition({
@@ -243,7 +326,7 @@ test('getAgentDefinition dynamically includes code-context tool references when
243
326
  });
244
327
  test('getAgentDefinition dynamically includes code-context tool references for gpt-5 models', (t) => {
245
328
  const settingsService = createMockSettingsService({
246
- 'app.searchViaShell': false,
329
+ 'app.searchViaShell': 'off',
247
330
  'agent.model': 'gpt-5',
248
331
  });
249
332
  const definition = getAgentDefinition({
@@ -255,7 +338,7 @@ test('getAgentDefinition dynamically includes code-context tool references for g
255
338
  });
256
339
  test('getAgentDefinition uses fallback search prompt for remote execution', (t) => {
257
340
  const settingsService = createMockSettingsService({
258
- 'app.searchViaShell': true,
341
+ 'app.searchViaShell': 'on',
259
342
  'agent.model': 'gpt-4o',
260
343
  });
261
344
  const mockExecutionContext = {
@@ -276,7 +359,7 @@ test('getAgentDefinition uses fallback search prompt for remote execution', (t)
276
359
  });
277
360
  test('getAgentDefinition excludes code-context tools in remote (SSH) execution', (t) => {
278
361
  const settingsService = createMockSettingsService({
279
- 'app.searchViaShell': false,
362
+ 'app.searchViaShell': 'off',
280
363
  'agent.model': 'gpt-4o',
281
364
  });
282
365
  const mockExecutionContext = {
@@ -294,7 +377,7 @@ test('getAgentDefinition excludes code-context tools in remote (SSH) execution',
294
377
  t.false(toolNames.includes('code_context_search'));
295
378
  t.false(definition.instructions.includes('read_code_outline'));
296
379
  });
297
- test('getAgentDefinition conditionalizes plan mode instructions and does not filter tools based on planMode setting', (t) => {
380
+ test('getAgentDefinition does not filter tools based on planMode setting', (t) => {
298
381
  const settingsService = createMockSettingsService({
299
382
  'agent.model': 'gpt-4o',
300
383
  'app.planMode': true,
@@ -303,7 +386,6 @@ test('getAgentDefinition conditionalizes plan mode instructions and does not fil
303
386
  settingsService,
304
387
  loggingService: mockLogger,
305
388
  });
306
- t.true(definitionWithPlan.instructions.includes('restricted from making'));
307
389
  const toolsWithPlan = definitionWithPlan.tools.map((tool) => tool.name);
308
390
  t.true(toolsWithPlan.includes('create_file'));
309
391
  t.true(toolsWithPlan.includes('search_replace'));
@@ -315,9 +397,77 @@ test('getAgentDefinition conditionalizes plan mode instructions and does not fil
315
397
  settingsService: settingsServiceWithoutPlan,
316
398
  loggingService: mockLogger,
317
399
  });
318
- t.false(definitionWithoutPlan.instructions.includes('restricted from making'));
319
400
  const toolsWithoutPlan = definitionWithoutPlan.tools.map((tool) => tool.name);
320
401
  t.true(toolsWithoutPlan.includes('create_file'));
321
402
  t.true(toolsWithoutPlan.includes('search_replace'));
322
403
  });
404
+ test('getAgentDefinition includes AGENTS.md and full envInfo for orchestrator mode and plan mode', (t) => {
405
+ // Test Orchestrator Mode
406
+ const settingsOrchestrator = createMockSettingsService({
407
+ 'agent.model': 'gpt-4o',
408
+ 'app.orchestratorMode': true,
409
+ });
410
+ const definitionOrchestrator = getAgentDefinition({
411
+ settingsService: settingsOrchestrator,
412
+ loggingService: mockLogger,
413
+ runSubagent: async () => ({}),
414
+ });
415
+ t.true(definitionOrchestrator.instructions.includes('AGENTS.md contents:'));
416
+ t.true(definitionOrchestrator.instructions.includes('top-level:'));
417
+ // Test Plan Mode
418
+ const settingsPlan = createMockSettingsService({
419
+ 'agent.model': 'gpt-4o',
420
+ 'app.planMode': true,
421
+ });
422
+ const definitionPlan = getAgentDefinition({
423
+ settingsService: settingsPlan,
424
+ loggingService: mockLogger,
425
+ });
426
+ t.true(definitionPlan.instructions.includes('AGENTS.md contents:'));
427
+ t.true(definitionPlan.instructions.includes('top-level:'));
428
+ });
429
+ test('getAgentDefinition includes worktree hygiene fragment in standard, mentor, plan, and orchestrator modes', (t) => {
430
+ const standard = getAgentDefinition({
431
+ settingsService: createMockSettingsService({
432
+ 'agent.model': 'gpt-4o',
433
+ }),
434
+ loggingService: mockLogger,
435
+ });
436
+ t.true(standard.instructions.includes(WORKTREE_HYGIENE_FRAGMENT_MARKER));
437
+ const mentor = getAgentDefinition({
438
+ settingsService: createMockSettingsService({
439
+ 'agent.model': 'gpt-4o',
440
+ 'app.mentorMode': true,
441
+ }),
442
+ loggingService: mockLogger,
443
+ });
444
+ t.true(mentor.instructions.includes(WORKTREE_HYGIENE_FRAGMENT_MARKER));
445
+ const plan = getAgentDefinition({
446
+ settingsService: createMockSettingsService({
447
+ 'agent.model': 'gpt-4o',
448
+ 'app.planMode': true,
449
+ }),
450
+ loggingService: mockLogger,
451
+ });
452
+ t.true(plan.instructions.includes(WORKTREE_HYGIENE_FRAGMENT_MARKER));
453
+ const orchestrator = getAgentDefinition({
454
+ settingsService: createMockSettingsService({
455
+ 'agent.model': 'gpt-4o',
456
+ 'app.orchestratorMode': true,
457
+ }),
458
+ loggingService: mockLogger,
459
+ runSubagent: async () => ({}),
460
+ });
461
+ t.true(orchestrator.instructions.includes(WORKTREE_HYGIENE_FRAGMENT_MARKER));
462
+ });
463
+ test('getAgentDefinition omits worktree hygiene fragment in lite mode', (t) => {
464
+ const definition = getAgentDefinition({
465
+ settingsService: createMockSettingsService({
466
+ 'agent.model': 'gpt-4o',
467
+ 'app.liteMode': true,
468
+ }),
469
+ loggingService: mockLogger,
470
+ });
471
+ t.false(definition.instructions.includes(WORKTREE_HYGIENE_FRAGMENT_MARKER));
472
+ });
323
473
  //# sourceMappingURL=agent.test.js.map