@office-ai/aioncli-core 0.26.0 → 0.30.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 (1466) hide show
  1. package/dist/docs/admin/enterprise-controls.md +115 -0
  2. package/dist/docs/architecture.md +3 -3
  3. package/dist/docs/assets/monitoring-dashboard-logs.png +0 -0
  4. package/dist/docs/assets/monitoring-dashboard-metrics.png +0 -0
  5. package/dist/docs/assets/monitoring-dashboard-overview.png +0 -0
  6. package/dist/docs/assets/theme-ansi-dark.png +0 -0
  7. package/dist/docs/assets/theme-atom-one-dark.png +0 -0
  8. package/dist/docs/assets/theme-ayu-dark.png +0 -0
  9. package/dist/docs/assets/theme-default-dark.png +0 -0
  10. package/dist/docs/assets/theme-dracula-dark.png +0 -0
  11. package/dist/docs/assets/theme-github-dark.png +0 -0
  12. package/dist/docs/assets/theme-holiday-dark.png +0 -0
  13. package/dist/docs/assets/theme-shades-of-purple-dark.png +0 -0
  14. package/dist/docs/assets/theme-solarized-dark.png +0 -0
  15. package/dist/docs/assets/theme-solarized-light.png +0 -0
  16. package/dist/docs/bedrock-integration-plan.md +595 -0
  17. package/dist/docs/changelogs/index.md +187 -0
  18. package/dist/docs/changelogs/latest.md +299 -209
  19. package/dist/docs/changelogs/preview.md +353 -115
  20. package/dist/docs/cli/checkpointing.md +2 -3
  21. package/dist/docs/cli/cli-reference.md +115 -0
  22. package/dist/docs/cli/commands.md +360 -247
  23. package/dist/docs/cli/creating-skills.md +80 -0
  24. package/dist/docs/cli/custom-commands.md +12 -9
  25. package/dist/docs/cli/enterprise.md +25 -5
  26. package/dist/docs/cli/gemini-md.md +20 -12
  27. package/dist/docs/cli/headless.md +34 -372
  28. package/dist/docs/cli/index.md +123 -63
  29. package/dist/docs/cli/keyboard-shortcuts.md +95 -84
  30. package/dist/docs/cli/model-routing.md +7 -2
  31. package/dist/docs/cli/model.md +1 -1
  32. package/dist/docs/cli/notifications.md +58 -0
  33. package/dist/docs/cli/plan-mode.md +190 -0
  34. package/dist/docs/cli/rewind.md +51 -0
  35. package/dist/docs/cli/sandbox.md +4 -3
  36. package/dist/docs/cli/session-management.md +61 -44
  37. package/dist/docs/cli/settings.md +95 -61
  38. package/dist/docs/cli/skills.md +49 -71
  39. package/dist/docs/cli/system-prompt.md +32 -0
  40. package/dist/docs/cli/telemetry.md +75 -4
  41. package/dist/docs/cli/themes.md +85 -53
  42. package/dist/docs/cli/tutorials/automation.md +187 -0
  43. package/dist/docs/cli/tutorials/file-management.md +142 -0
  44. package/dist/docs/cli/tutorials/mcp-setup.md +105 -0
  45. package/dist/docs/cli/tutorials/memory-management.md +126 -0
  46. package/dist/docs/cli/tutorials/session-management.md +105 -0
  47. package/dist/docs/cli/tutorials/shell-commands.md +107 -0
  48. package/dist/docs/cli/tutorials/skills-getting-started.md +36 -58
  49. package/dist/docs/cli/tutorials/task-planning.md +93 -0
  50. package/dist/docs/cli/tutorials/web-tools.md +78 -0
  51. package/dist/docs/cli/uninstall.md +18 -0
  52. package/dist/docs/core/concepts.md +137 -0
  53. package/dist/docs/core/index.md +6 -0
  54. package/dist/docs/core/memport.md +2 -0
  55. package/dist/docs/core/policy-engine.md +57 -7
  56. package/dist/docs/core/remote-agents.md +84 -0
  57. package/dist/docs/core/subagents.md +191 -0
  58. package/dist/docs/extensions/best-practices.md +188 -0
  59. package/dist/docs/extensions/index.md +38 -270
  60. package/dist/docs/extensions/reference.md +265 -0
  61. package/dist/docs/extensions/releasing.md +154 -0
  62. package/dist/docs/extensions/writing-extensions.md +292 -0
  63. package/dist/docs/get-started/authentication.md +162 -0
  64. package/dist/docs/get-started/configuration-v1.md +5 -11
  65. package/dist/docs/get-started/configuration.md +228 -99
  66. package/dist/docs/get-started/examples.md +39 -119
  67. package/dist/docs/get-started/gemini-3.md +2 -17
  68. package/dist/docs/get-started/index.md +6 -4
  69. package/dist/docs/get-started/installation.md +110 -77
  70. package/dist/docs/hooks/best-practices.md +219 -398
  71. package/dist/docs/hooks/index.md +99 -622
  72. package/dist/docs/hooks/reference.md +269 -115
  73. package/dist/docs/hooks/writing-hooks.md +203 -779
  74. package/dist/docs/index.md +146 -147
  75. package/dist/docs/local-development.md +1 -1
  76. package/dist/docs/redirects.json +20 -0
  77. package/dist/docs/reference/commands.md +563 -0
  78. package/dist/docs/reference/configuration.md +1804 -0
  79. package/dist/docs/reference/keyboard-shortcuts.md +168 -0
  80. package/dist/docs/reference/memport.md +246 -0
  81. package/dist/docs/reference/policy-engine.md +386 -0
  82. package/dist/docs/reference/tools.md +106 -0
  83. package/dist/docs/releases.md +3 -3
  84. package/dist/docs/resources/faq.md +175 -0
  85. package/dist/docs/resources/quota-and-pricing.md +199 -0
  86. package/dist/docs/resources/tos-privacy.md +102 -0
  87. package/dist/docs/resources/troubleshooting.md +176 -0
  88. package/dist/docs/resources/uninstall.md +56 -0
  89. package/dist/docs/sidebar.json +105 -217
  90. package/dist/docs/tools/activate-skill.md +43 -0
  91. package/dist/docs/tools/ask-user.md +95 -0
  92. package/dist/docs/tools/file-system.md +48 -139
  93. package/dist/docs/tools/index.md +92 -85
  94. package/dist/docs/tools/internal-docs.md +46 -0
  95. package/dist/docs/tools/mcp-server.md +29 -5
  96. package/dist/docs/tools/memory.md +21 -40
  97. package/dist/docs/tools/planning.md +55 -0
  98. package/dist/docs/tools/shell.md +45 -89
  99. package/dist/docs/tools/todos.md +22 -44
  100. package/dist/docs/tools/web-fetch.md +22 -46
  101. package/dist/docs/tools/web-search.md +19 -29
  102. package/dist/docs/tos-privacy.md +1 -1
  103. package/dist/docs/troubleshooting.md +20 -5
  104. package/dist/index.d.ts +2 -1
  105. package/dist/index.js +2 -1
  106. package/dist/index.js.map +1 -1
  107. package/dist/src/agents/a2a-client-manager.d.ts +4 -5
  108. package/dist/src/agents/a2a-client-manager.js +9 -131
  109. package/dist/src/agents/a2a-client-manager.js.map +1 -1
  110. package/dist/src/agents/a2a-client-manager.test.js +10 -27
  111. package/dist/src/agents/a2a-client-manager.test.js.map +1 -1
  112. package/dist/src/agents/a2a-errors.d.ts +65 -0
  113. package/dist/src/agents/a2a-errors.js +164 -0
  114. package/dist/src/agents/a2a-errors.js.map +1 -0
  115. package/dist/src/agents/a2a-errors.test.d.ts +6 -0
  116. package/dist/src/agents/a2a-errors.test.js +183 -0
  117. package/dist/src/agents/a2a-errors.test.js.map +1 -0
  118. package/dist/src/agents/a2aUtils.d.ts +3 -2
  119. package/dist/src/agents/a2aUtils.js +28 -26
  120. package/dist/src/agents/a2aUtils.js.map +1 -1
  121. package/dist/src/agents/a2aUtils.test.js +9 -9
  122. package/dist/src/agents/a2aUtils.test.js.map +1 -1
  123. package/dist/src/agents/acknowledgedAgents.d.ts +18 -0
  124. package/dist/src/agents/acknowledgedAgents.js +58 -0
  125. package/dist/src/agents/acknowledgedAgents.js.map +1 -0
  126. package/dist/src/agents/acknowledgedAgents.test.d.ts +6 -0
  127. package/dist/src/agents/acknowledgedAgents.test.js +70 -0
  128. package/dist/src/agents/acknowledgedAgents.test.js.map +1 -0
  129. package/dist/src/agents/agent-scheduler.d.ts +35 -0
  130. package/dist/src/agents/agent-scheduler.js +30 -0
  131. package/dist/src/agents/agent-scheduler.js.map +1 -0
  132. package/dist/src/agents/agent-scheduler.test.d.ts +6 -0
  133. package/dist/src/agents/agent-scheduler.test.js +56 -0
  134. package/dist/src/agents/agent-scheduler.test.js.map +1 -0
  135. package/dist/src/agents/agentLoader.d.ts +88 -0
  136. package/dist/src/agents/agentLoader.js +394 -0
  137. package/dist/src/agents/agentLoader.js.map +1 -0
  138. package/dist/src/agents/agentLoader.test.js +458 -0
  139. package/dist/src/agents/agentLoader.test.js.map +1 -0
  140. package/dist/src/agents/auth-provider/api-key-provider.d.ts +30 -0
  141. package/dist/src/agents/auth-provider/api-key-provider.js +66 -0
  142. package/dist/src/agents/auth-provider/api-key-provider.js.map +1 -0
  143. package/dist/src/agents/auth-provider/api-key-provider.test.d.ts +6 -0
  144. package/dist/src/agents/auth-provider/api-key-provider.test.js +130 -0
  145. package/dist/src/agents/auth-provider/api-key-provider.test.js.map +1 -0
  146. package/dist/src/agents/auth-provider/base-provider.d.ts +40 -0
  147. package/dist/src/agents/auth-provider/base-provider.js +43 -0
  148. package/dist/src/agents/auth-provider/base-provider.js.map +1 -0
  149. package/dist/src/agents/auth-provider/base-provider.test.d.ts +6 -0
  150. package/dist/src/agents/auth-provider/base-provider.test.js +107 -0
  151. package/dist/src/agents/auth-provider/base-provider.test.js.map +1 -0
  152. package/dist/src/agents/auth-provider/factory.d.ts +27 -0
  153. package/dist/src/agents/auth-provider/factory.js +161 -0
  154. package/dist/src/agents/auth-provider/factory.js.map +1 -0
  155. package/dist/src/agents/auth-provider/factory.test.d.ts +6 -0
  156. package/dist/src/agents/auth-provider/factory.test.js +344 -0
  157. package/dist/src/agents/auth-provider/factory.test.js.map +1 -0
  158. package/dist/src/agents/auth-provider/http-provider.d.ts +28 -0
  159. package/dist/src/agents/auth-provider/http-provider.js +73 -0
  160. package/dist/src/agents/auth-provider/http-provider.js.map +1 -0
  161. package/dist/src/agents/auth-provider/http-provider.test.d.ts +6 -0
  162. package/dist/src/agents/auth-provider/http-provider.test.js +112 -0
  163. package/dist/src/agents/auth-provider/http-provider.test.js.map +1 -0
  164. package/dist/src/agents/auth-provider/oauth2-provider.d.ts +65 -0
  165. package/dist/src/agents/auth-provider/oauth2-provider.js +233 -0
  166. package/dist/src/agents/auth-provider/oauth2-provider.js.map +1 -0
  167. package/dist/src/agents/auth-provider/oauth2-provider.test.d.ts +6 -0
  168. package/dist/src/agents/auth-provider/oauth2-provider.test.js +490 -0
  169. package/dist/src/agents/auth-provider/oauth2-provider.test.js.map +1 -0
  170. package/dist/src/agents/auth-provider/types.d.ts +74 -0
  171. package/dist/src/agents/auth-provider/types.js +7 -0
  172. package/dist/src/agents/auth-provider/types.js.map +1 -0
  173. package/dist/src/agents/auth-provider/value-resolver.d.ts +29 -0
  174. package/dist/src/agents/auth-provider/value-resolver.js +85 -0
  175. package/dist/src/agents/auth-provider/value-resolver.js.map +1 -0
  176. package/dist/src/agents/auth-provider/value-resolver.test.d.ts +6 -0
  177. package/dist/src/agents/auth-provider/value-resolver.test.js +100 -0
  178. package/dist/src/agents/auth-provider/value-resolver.test.js.map +1 -0
  179. package/dist/src/agents/browser/analyzeScreenshot.d.ts +35 -0
  180. package/dist/src/agents/browser/analyzeScreenshot.js +183 -0
  181. package/dist/src/agents/browser/analyzeScreenshot.js.map +1 -0
  182. package/dist/src/agents/browser/analyzeScreenshot.test.d.ts +6 -0
  183. package/dist/src/agents/browser/analyzeScreenshot.test.js +161 -0
  184. package/dist/src/agents/browser/analyzeScreenshot.test.js.map +1 -0
  185. package/dist/src/agents/browser/automationOverlay.d.ts +26 -0
  186. package/dist/src/agents/browser/automationOverlay.js +100 -0
  187. package/dist/src/agents/browser/automationOverlay.js.map +1 -0
  188. package/dist/src/agents/browser/browserAgentDefinition.d.ts +50 -0
  189. package/dist/src/agents/browser/browserAgentDefinition.js +141 -0
  190. package/dist/src/agents/browser/browserAgentDefinition.js.map +1 -0
  191. package/dist/src/agents/browser/browserAgentFactory.d.ts +42 -0
  192. package/dist/src/agents/browser/browserAgentFactory.js +116 -0
  193. package/dist/src/agents/browser/browserAgentFactory.js.map +1 -0
  194. package/dist/src/agents/browser/browserAgentFactory.test.d.ts +6 -0
  195. package/dist/src/agents/browser/browserAgentFactory.test.js +240 -0
  196. package/dist/src/agents/browser/browserAgentFactory.test.js.map +1 -0
  197. package/dist/src/agents/browser/browserAgentInvocation.d.ts +34 -0
  198. package/dist/src/agents/browser/browserAgentInvocation.js +386 -0
  199. package/dist/src/agents/browser/browserAgentInvocation.js.map +1 -0
  200. package/dist/src/agents/browser/browserAgentInvocation.test.d.ts +6 -0
  201. package/dist/src/agents/browser/browserAgentInvocation.test.js +382 -0
  202. package/dist/src/agents/browser/browserAgentInvocation.test.js.map +1 -0
  203. package/dist/src/agents/browser/browserManager.d.ts +115 -0
  204. package/dist/src/agents/browser/browserManager.js +370 -0
  205. package/dist/src/agents/browser/browserManager.js.map +1 -0
  206. package/dist/src/agents/browser/browserManager.test.d.ts +6 -0
  207. package/dist/src/agents/browser/browserManager.test.js +382 -0
  208. package/dist/src/agents/browser/browserManager.test.js.map +1 -0
  209. package/dist/src/agents/browser/mcpToolWrapper.d.ts +45 -0
  210. package/dist/src/agents/browser/mcpToolWrapper.js +358 -0
  211. package/dist/src/agents/browser/mcpToolWrapper.js.map +1 -0
  212. package/dist/src/agents/browser/mcpToolWrapper.test.d.ts +6 -0
  213. package/dist/src/agents/browser/mcpToolWrapper.test.js +126 -0
  214. package/dist/src/agents/browser/mcpToolWrapper.test.js.map +1 -0
  215. package/dist/src/agents/browser/mcpToolWrapperConfirmation.test.d.ts +6 -0
  216. package/dist/src/agents/browser/mcpToolWrapperConfirmation.test.js +59 -0
  217. package/dist/src/agents/browser/mcpToolWrapperConfirmation.test.js.map +1 -0
  218. package/dist/src/agents/browser/modelAvailability.d.ts +23 -0
  219. package/dist/src/agents/browser/modelAvailability.js +23 -0
  220. package/dist/src/agents/browser/modelAvailability.js.map +1 -0
  221. package/dist/src/agents/cli-help-agent.d.ts +24 -0
  222. package/dist/src/agents/cli-help-agent.js +80 -0
  223. package/dist/src/agents/cli-help-agent.js.map +1 -0
  224. package/dist/src/agents/cli-help-agent.test.js +53 -0
  225. package/dist/src/agents/cli-help-agent.test.js.map +1 -0
  226. package/dist/src/agents/codebase-investigator.d.ts +2 -1
  227. package/dist/src/agents/codebase-investigator.js +68 -39
  228. package/dist/src/agents/codebase-investigator.js.map +1 -1
  229. package/dist/src/agents/codebase-investigator.test.js +37 -9
  230. package/dist/src/agents/codebase-investigator.test.js.map +1 -1
  231. package/dist/src/agents/generalist-agent.d.ts +21 -0
  232. package/dist/src/agents/generalist-agent.js +60 -0
  233. package/dist/src/agents/generalist-agent.js.map +1 -0
  234. package/dist/src/agents/generalist-agent.test.d.ts +6 -0
  235. package/dist/src/agents/generalist-agent.test.js +32 -0
  236. package/dist/src/agents/generalist-agent.test.js.map +1 -0
  237. package/dist/src/agents/introspection-agent.d.ts +2 -2
  238. package/dist/src/agents/local-executor.d.ts +2 -0
  239. package/dist/src/agents/local-executor.js +186 -90
  240. package/dist/src/agents/local-executor.js.map +1 -1
  241. package/dist/src/agents/local-executor.test.js +431 -256
  242. package/dist/src/agents/local-executor.test.js.map +1 -1
  243. package/dist/src/agents/local-invocation.test.js +15 -5
  244. package/dist/src/agents/local-invocation.test.js.map +1 -1
  245. package/dist/src/agents/registry.d.ts +24 -8
  246. package/dist/src/agents/registry.js +193 -96
  247. package/dist/src/agents/registry.js.map +1 -1
  248. package/dist/src/agents/registry.test.js +509 -58
  249. package/dist/src/agents/registry.test.js.map +1 -1
  250. package/dist/src/agents/registry_acknowledgement.test.d.ts +6 -0
  251. package/dist/src/agents/registry_acknowledgement.test.js +130 -0
  252. package/dist/src/agents/registry_acknowledgement.test.js.map +1 -0
  253. package/dist/src/agents/remote-invocation.js +12 -14
  254. package/dist/src/agents/remote-invocation.js.map +1 -1
  255. package/dist/src/agents/remote-invocation.test.js +16 -4
  256. package/dist/src/agents/remote-invocation.test.js.map +1 -1
  257. package/dist/src/agents/subagent-tool-wrapper.js +1 -3
  258. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
  259. package/dist/src/agents/subagent-tool-wrapper.test.js +18 -27
  260. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
  261. package/dist/src/agents/subagent-tool.d.ts +15 -0
  262. package/dist/src/agents/subagent-tool.js +57 -0
  263. package/dist/src/agents/subagent-tool.js.map +1 -0
  264. package/dist/src/agents/subagent-tool.test.d.ts +6 -0
  265. package/dist/src/agents/subagent-tool.test.js +97 -0
  266. package/dist/src/agents/subagent-tool.test.js.map +1 -0
  267. package/dist/src/agents/types.d.ts +37 -22
  268. package/dist/src/agents/types.js +12 -0
  269. package/dist/src/agents/types.js.map +1 -1
  270. package/dist/src/availability/fallbackIntegration.test.js +57 -0
  271. package/dist/src/availability/fallbackIntegration.test.js.map +1 -0
  272. package/dist/src/availability/policyCatalog.d.ts +3 -0
  273. package/dist/src/availability/policyCatalog.js +29 -5
  274. package/dist/src/availability/policyCatalog.js.map +1 -1
  275. package/dist/src/availability/policyCatalog.test.js +20 -1
  276. package/dist/src/availability/policyCatalog.test.js.map +1 -1
  277. package/dist/src/availability/policyHelpers.js +40 -11
  278. package/dist/src/availability/policyHelpers.js.map +1 -1
  279. package/dist/src/availability/policyHelpers.test.js +72 -2
  280. package/dist/src/availability/policyHelpers.test.js.map +1 -1
  281. package/dist/src/availability/testUtils.js +1 -0
  282. package/dist/src/availability/testUtils.js.map +1 -1
  283. package/dist/src/billing/billing.d.ts +80 -0
  284. package/dist/src/billing/billing.js +128 -0
  285. package/dist/src/billing/billing.js.map +1 -0
  286. package/dist/src/billing/billing.test.d.ts +6 -0
  287. package/dist/src/billing/billing.test.js +182 -0
  288. package/dist/src/billing/billing.test.js.map +1 -0
  289. package/dist/src/billing/index.d.ts +6 -0
  290. package/dist/src/billing/index.js +7 -0
  291. package/dist/src/billing/index.js.map +1 -0
  292. package/dist/src/code_assist/admin/admin_controls.d.ts +49 -0
  293. package/dist/src/code_assist/admin/admin_controls.js +197 -0
  294. package/dist/src/code_assist/admin/admin_controls.js.map +1 -0
  295. package/dist/src/code_assist/admin/admin_controls.test.js +589 -0
  296. package/dist/src/code_assist/admin/admin_controls.test.js.map +1 -0
  297. package/dist/src/code_assist/admin/mcpUtils.d.ts +22 -0
  298. package/dist/src/code_assist/admin/mcpUtils.js +53 -0
  299. package/dist/src/code_assist/admin/mcpUtils.js.map +1 -0
  300. package/dist/src/code_assist/admin/mcpUtils.test.d.ts +6 -0
  301. package/dist/src/code_assist/admin/mcpUtils.test.js +101 -0
  302. package/dist/src/code_assist/admin/mcpUtils.test.js.map +1 -0
  303. package/dist/src/code_assist/codeAssist.js +2 -2
  304. package/dist/src/code_assist/codeAssist.js.map +1 -1
  305. package/dist/src/code_assist/codeAssist.test.d.ts +1 -1
  306. package/dist/src/code_assist/codeAssist.test.js +10 -6
  307. package/dist/src/code_assist/codeAssist.test.js.map +1 -1
  308. package/dist/src/code_assist/converter.js +8 -3
  309. package/dist/src/code_assist/converter.js.map +1 -1
  310. package/dist/src/code_assist/converter.test.js +8 -0
  311. package/dist/src/code_assist/converter.test.js.map +1 -1
  312. package/dist/src/code_assist/experiments/experiments.d.ts +1 -1
  313. package/dist/src/code_assist/experiments/experiments.js +22 -0
  314. package/dist/src/code_assist/experiments/experiments.js.map +1 -1
  315. package/dist/src/code_assist/experiments/experiments.test.js +1 -0
  316. package/dist/src/code_assist/experiments/experiments.test.js.map +1 -1
  317. package/dist/src/code_assist/experiments/experiments_local.test.d.ts +6 -0
  318. package/dist/src/code_assist/experiments/experiments_local.test.js +115 -0
  319. package/dist/src/code_assist/experiments/experiments_local.test.js.map +1 -0
  320. package/dist/src/code_assist/experiments/flagNames.d.ts +7 -0
  321. package/dist/src/code_assist/experiments/flagNames.js +7 -0
  322. package/dist/src/code_assist/experiments/flagNames.js.map +1 -1
  323. package/dist/src/code_assist/oauth-credential-storage.js +4 -4
  324. package/dist/src/code_assist/oauth-credential-storage.js.map +1 -1
  325. package/dist/src/code_assist/oauth2.d.ts +1 -1
  326. package/dist/src/code_assist/oauth2.test.js +10 -3
  327. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  328. package/dist/src/code_assist/server.d.ts +7 -4
  329. package/dist/src/code_assist/server.js +20 -4
  330. package/dist/src/code_assist/server.js.map +1 -1
  331. package/dist/src/code_assist/server.test.js +18 -5
  332. package/dist/src/code_assist/server.test.js.map +1 -1
  333. package/dist/src/code_assist/setup.d.ts +35 -3
  334. package/dist/src/code_assist/setup.js +98 -16
  335. package/dist/src/code_assist/setup.js.map +1 -1
  336. package/dist/src/code_assist/setup.test.js +322 -5
  337. package/dist/src/code_assist/setup.test.js.map +1 -1
  338. package/dist/src/code_assist/telemetry.js +2 -1
  339. package/dist/src/code_assist/telemetry.js.map +1 -1
  340. package/dist/src/code_assist/telemetry.test.js +2 -1
  341. package/dist/src/code_assist/telemetry.test.js.map +1 -1
  342. package/dist/src/code_assist/types.d.ts +255 -24
  343. package/dist/src/code_assist/types.js +57 -7
  344. package/dist/src/code_assist/types.js.map +1 -1
  345. package/dist/src/commands/memory.d.ts +11 -0
  346. package/dist/src/commands/memory.js +81 -0
  347. package/dist/src/commands/memory.js.map +1 -0
  348. package/dist/src/commands/memory.test.d.ts +6 -0
  349. package/dist/src/commands/memory.test.js +155 -0
  350. package/dist/src/commands/memory.test.js.map +1 -0
  351. package/dist/src/commands/restore.js +1 -0
  352. package/dist/src/commands/restore.js.map +1 -1
  353. package/dist/src/config/agent-loop-context.d.ts +22 -0
  354. package/dist/src/config/agent-loop-context.js +7 -0
  355. package/dist/src/config/agent-loop-context.js.map +1 -0
  356. package/dist/src/config/config.d.ts +267 -58
  357. package/dist/src/config/config.js +663 -164
  358. package/dist/src/config/config.js.map +1 -1
  359. package/dist/src/config/config.test.d.ts +1 -1
  360. package/dist/src/config/config.test.js +585 -166
  361. package/dist/src/config/config.test.js.map +1 -1
  362. package/dist/src/config/constants.d.ts +4 -0
  363. package/dist/src/config/constants.js +8 -0
  364. package/dist/src/config/constants.js.map +1 -1
  365. package/dist/src/config/defaultModelConfigs.js +27 -8
  366. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  367. package/dist/src/config/memory.d.ts +14 -0
  368. package/dist/src/config/memory.js +28 -0
  369. package/dist/src/config/memory.js.map +1 -0
  370. package/dist/src/config/memory.test.d.ts +6 -0
  371. package/dist/src/config/memory.test.js +82 -0
  372. package/dist/src/config/memory.test.js.map +1 -0
  373. package/dist/src/config/models.d.ts +77 -6
  374. package/dist/src/config/models.js +240 -23
  375. package/dist/src/config/models.js.map +1 -1
  376. package/dist/src/config/models.test.js +153 -47
  377. package/dist/src/config/models.test.js.map +1 -1
  378. package/dist/src/config/projectRegistry.d.ts +36 -0
  379. package/dist/src/config/projectRegistry.js +262 -0
  380. package/dist/src/config/projectRegistry.js.map +1 -0
  381. package/dist/src/config/projectRegistry.test.d.ts +6 -0
  382. package/dist/src/config/projectRegistry.test.js +219 -0
  383. package/dist/src/config/projectRegistry.test.js.map +1 -0
  384. package/dist/src/config/storage.d.ts +23 -1
  385. package/dist/src/config/storage.js +104 -15
  386. package/dist/src/config/storage.js.map +1 -1
  387. package/dist/src/config/storage.test.js +118 -2
  388. package/dist/src/config/storage.test.js.map +1 -1
  389. package/dist/src/config/storageMigration.d.ts +16 -0
  390. package/dist/src/config/storageMigration.js +42 -0
  391. package/dist/src/config/storageMigration.js.map +1 -0
  392. package/dist/src/config/storageMigration.test.d.ts +6 -0
  393. package/dist/src/config/storageMigration.test.js +70 -0
  394. package/dist/src/config/storageMigration.test.js.map +1 -0
  395. package/dist/src/config/trackerFeatureFlag.test.d.ts +6 -0
  396. package/dist/src/config/trackerFeatureFlag.test.js +43 -0
  397. package/dist/src/config/trackerFeatureFlag.test.js.map +1 -0
  398. package/dist/src/config/userHintService.d.ts +46 -0
  399. package/dist/src/config/userHintService.js +81 -0
  400. package/dist/src/config/userHintService.js.map +1 -0
  401. package/dist/src/config/userHintService.test.d.ts +6 -0
  402. package/dist/src/config/userHintService.test.js +62 -0
  403. package/dist/src/config/userHintService.test.js.map +1 -0
  404. package/dist/src/confirmation-bus/message-bus.js +3 -33
  405. package/dist/src/confirmation-bus/message-bus.js.map +1 -1
  406. package/dist/src/confirmation-bus/types.d.ts +95 -20
  407. package/dist/src/confirmation-bus/types.js +9 -3
  408. package/dist/src/confirmation-bus/types.js.map +1 -1
  409. package/dist/src/core/anthropicContentGenerator.d.ts +3 -2
  410. package/dist/src/core/anthropicContentGenerator.js +2 -2
  411. package/dist/src/core/anthropicContentGenerator.js.map +1 -1
  412. package/dist/src/core/baseLlmClient.d.ts +9 -0
  413. package/dist/src/core/baseLlmClient.js +9 -8
  414. package/dist/src/core/baseLlmClient.js.map +1 -1
  415. package/dist/src/core/baseLlmClient.test.js +17 -7
  416. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  417. package/dist/src/core/bedrockContentGenerator.d.ts +73 -0
  418. package/dist/src/core/bedrockContentGenerator.js +628 -0
  419. package/dist/src/core/bedrockContentGenerator.js.map +1 -0
  420. package/dist/src/core/client.d.ts +13 -4
  421. package/dist/src/core/client.js +132 -41
  422. package/dist/src/core/client.js.map +1 -1
  423. package/dist/src/core/client.test.js +333 -79
  424. package/dist/src/core/client.test.js.map +1 -1
  425. package/dist/src/core/contentGenerator.d.ts +16 -3
  426. package/dist/src/core/contentGenerator.js +56 -2
  427. package/dist/src/core/contentGenerator.js.map +1 -1
  428. package/dist/src/core/contentGenerator.test.d.ts +1 -1
  429. package/dist/src/core/contentGenerator.test.js +127 -24
  430. package/dist/src/core/contentGenerator.test.js.map +1 -1
  431. package/dist/src/core/coreToolHookTriggers.d.ts +4 -36
  432. package/dist/src/core/coreToolHookTriggers.js +42 -150
  433. package/dist/src/core/coreToolHookTriggers.js.map +1 -1
  434. package/dist/src/core/coreToolHookTriggers.test.js +62 -94
  435. package/dist/src/core/coreToolHookTriggers.test.js.map +1 -1
  436. package/dist/src/core/coreToolScheduler.d.ts +1 -8
  437. package/dist/src/core/coreToolScheduler.js +160 -125
  438. package/dist/src/core/coreToolScheduler.js.map +1 -1
  439. package/dist/src/core/coreToolScheduler.test.js +480 -62
  440. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  441. package/dist/src/core/fakeContentGenerator.d.ts +4 -2
  442. package/dist/src/core/fakeContentGenerator.js +9 -2
  443. package/dist/src/core/fakeContentGenerator.js.map +1 -1
  444. package/dist/src/core/fakeContentGenerator.test.js +8 -7
  445. package/dist/src/core/fakeContentGenerator.test.js.map +1 -1
  446. package/dist/src/core/geminiChat.d.ts +31 -3
  447. package/dist/src/core/geminiChat.js +144 -34
  448. package/dist/src/core/geminiChat.js.map +1 -1
  449. package/dist/src/core/geminiChat.test.js +175 -50
  450. package/dist/src/core/geminiChat.test.js.map +1 -1
  451. package/dist/src/core/geminiChat_network_retry.test.js +146 -16
  452. package/dist/src/core/geminiChat_network_retry.test.js.map +1 -1
  453. package/dist/src/core/localLiteRtLmClient.d.ts +24 -0
  454. package/dist/src/core/localLiteRtLmClient.js +77 -0
  455. package/dist/src/core/localLiteRtLmClient.js.map +1 -0
  456. package/dist/src/core/localLiteRtLmClient.test.d.ts +6 -0
  457. package/dist/src/core/localLiteRtLmClient.test.js +87 -0
  458. package/dist/src/core/localLiteRtLmClient.test.js.map +1 -0
  459. package/dist/src/core/logger.js +11 -0
  460. package/dist/src/core/logger.js.map +1 -1
  461. package/dist/src/core/logger.test.js +2 -4
  462. package/dist/src/core/logger.test.js.map +1 -1
  463. package/dist/src/core/loggingContentGenerator.d.ts +7 -3
  464. package/dist/src/core/loggingContentGenerator.js +40 -21
  465. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  466. package/dist/src/core/loggingContentGenerator.test.d.ts +1 -1
  467. package/dist/src/core/loggingContentGenerator.test.js +50 -8
  468. package/dist/src/core/loggingContentGenerator.test.js.map +1 -1
  469. package/dist/src/core/openaiContentGenerator.d.ts +4 -2
  470. package/dist/src/core/openaiContentGenerator.js +31 -23
  471. package/dist/src/core/openaiContentGenerator.js.map +1 -1
  472. package/dist/src/core/openaiContentGenerator.test.js +57 -4
  473. package/dist/src/core/openaiContentGenerator.test.js.map +1 -1
  474. package/dist/src/core/prompts-substitution.test.d.ts +6 -0
  475. package/dist/src/core/prompts-substitution.test.js +109 -0
  476. package/dist/src/core/prompts-substitution.test.js.map +1 -0
  477. package/dist/src/core/prompts.d.ts +11 -9
  478. package/dist/src/core/prompts.js +14 -405
  479. package/dist/src/core/prompts.js.map +1 -1
  480. package/dist/src/core/prompts.test.js +290 -56
  481. package/dist/src/core/prompts.test.js.map +1 -1
  482. package/dist/src/core/recordingContentGenerator.d.ts +5 -3
  483. package/dist/src/core/recordingContentGenerator.js +12 -5
  484. package/dist/src/core/recordingContentGenerator.js.map +1 -1
  485. package/dist/src/core/recordingContentGenerator.test.js +5 -4
  486. package/dist/src/core/recordingContentGenerator.test.js.map +1 -1
  487. package/dist/src/core/tokenLimits.js +6 -10
  488. package/dist/src/core/tokenLimits.js.map +1 -1
  489. package/dist/src/core/tokenLimits.test.js +8 -4
  490. package/dist/src/core/tokenLimits.test.js.map +1 -1
  491. package/dist/src/core/turn.d.ts +10 -2
  492. package/dist/src/core/turn.js +36 -17
  493. package/dist/src/core/turn.js.map +1 -1
  494. package/dist/src/core/turn.test.js +82 -2
  495. package/dist/src/core/turn.test.js.map +1 -1
  496. package/dist/src/fallback/handler.js +1 -1
  497. package/dist/src/fallback/handler.js.map +1 -1
  498. package/dist/src/fallback/handler.test.js +10 -12
  499. package/dist/src/fallback/handler.test.js.map +1 -1
  500. package/dist/src/fallback/types.d.ts +9 -0
  501. package/dist/src/generated/git-commit.d.ts +2 -2
  502. package/dist/src/generated/git-commit.js +2 -2
  503. package/dist/src/hooks/hookAggregator.js +16 -4
  504. package/dist/src/hooks/hookAggregator.js.map +1 -1
  505. package/dist/src/hooks/hookEventHandler.d.ts +10 -16
  506. package/dist/src/hooks/hookEventHandler.js +35 -281
  507. package/dist/src/hooks/hookEventHandler.js.map +1 -1
  508. package/dist/src/hooks/hookEventHandler.test.js +189 -4
  509. package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
  510. package/dist/src/hooks/hookRegistry.js +8 -3
  511. package/dist/src/hooks/hookRegistry.js.map +1 -1
  512. package/dist/src/hooks/hookRegistry.test.js +31 -2
  513. package/dist/src/hooks/hookRegistry.test.js.map +1 -1
  514. package/dist/src/hooks/hookRunner.js +21 -18
  515. package/dist/src/hooks/hookRunner.js.map +1 -1
  516. package/dist/src/hooks/hookSystem.d.ts +59 -0
  517. package/dist/src/hooks/hookSystem.js +206 -6
  518. package/dist/src/hooks/hookSystem.js.map +1 -1
  519. package/dist/src/hooks/hookSystem.test.js +20 -9
  520. package/dist/src/hooks/hookSystem.test.js.map +1 -1
  521. package/dist/src/hooks/hookTranslator.js +13 -6
  522. package/dist/src/hooks/hookTranslator.js.map +1 -1
  523. package/dist/src/hooks/index.d.ts +0 -1
  524. package/dist/src/hooks/index.js +0 -2
  525. package/dist/src/hooks/index.js.map +1 -1
  526. package/dist/src/hooks/runtimeHooks.test.d.ts +6 -0
  527. package/dist/src/hooks/runtimeHooks.test.js +100 -0
  528. package/dist/src/hooks/runtimeHooks.test.js.map +1 -0
  529. package/dist/src/hooks/trustedHooks.js +2 -0
  530. package/dist/src/hooks/trustedHooks.js.map +1 -1
  531. package/dist/src/hooks/types.d.ts +49 -1
  532. package/dist/src/hooks/types.js +43 -19
  533. package/dist/src/hooks/types.js.map +1 -1
  534. package/dist/src/hooks/types.test.js +13 -29
  535. package/dist/src/hooks/types.test.js.map +1 -1
  536. package/dist/src/ide/detect-ide.d.ts +49 -0
  537. package/dist/src/ide/detect-ide.js +56 -3
  538. package/dist/src/ide/detect-ide.js.map +1 -1
  539. package/dist/src/ide/detect-ide.test.js +70 -0
  540. package/dist/src/ide/detect-ide.test.js.map +1 -1
  541. package/dist/src/ide/ide-client.d.ts +0 -10
  542. package/dist/src/ide/ide-client.js +31 -199
  543. package/dist/src/ide/ide-client.js.map +1 -1
  544. package/dist/src/ide/ide-client.test.js +39 -191
  545. package/dist/src/ide/ide-client.test.js.map +1 -1
  546. package/dist/src/ide/ide-connection-utils.d.ts +27 -0
  547. package/dist/src/ide/ide-connection-utils.js +195 -0
  548. package/dist/src/ide/ide-connection-utils.js.map +1 -0
  549. package/dist/src/ide/ide-connection-utils.test.d.ts +6 -0
  550. package/dist/src/ide/ide-connection-utils.test.js +372 -0
  551. package/dist/src/ide/ide-connection-utils.test.js.map +1 -0
  552. package/dist/src/ide/ide-installer.js +76 -5
  553. package/dist/src/ide/ide-installer.js.map +1 -1
  554. package/dist/src/ide/ide-installer.test.js +40 -2
  555. package/dist/src/ide/ide-installer.test.js.map +1 -1
  556. package/dist/src/ide/types.d.ts +40 -40
  557. package/dist/src/index.d.ts +30 -2
  558. package/dist/src/index.js +31 -2
  559. package/dist/src/index.js.map +1 -1
  560. package/dist/src/mcp/mcp-oauth-provider.d.ts +43 -0
  561. package/dist/src/mcp/mcp-oauth-provider.js +67 -0
  562. package/dist/src/mcp/mcp-oauth-provider.js.map +1 -0
  563. package/dist/src/mcp/mcp-oauth-provider.test.d.ts +6 -0
  564. package/dist/src/mcp/mcp-oauth-provider.test.js +63 -0
  565. package/dist/src/mcp/mcp-oauth-provider.test.js.map +1 -0
  566. package/dist/src/mcp/oauth-provider.d.ts +10 -3
  567. package/dist/src/mcp/oauth-provider.js +49 -14
  568. package/dist/src/mcp/oauth-provider.js.map +1 -1
  569. package/dist/src/mcp/oauth-provider.test.js +180 -1
  570. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  571. package/dist/src/mcp/oauth-token-storage.js +3 -0
  572. package/dist/src/mcp/oauth-token-storage.js.map +1 -1
  573. package/dist/src/mcp/oauth-utils.d.ts +13 -4
  574. package/dist/src/mcp/oauth-utils.js +25 -19
  575. package/dist/src/mcp/oauth-utils.js.map +1 -1
  576. package/dist/src/mcp/oauth-utils.test.js +13 -8
  577. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  578. package/dist/src/mcp/sa-impersonation-provider.js +3 -1
  579. package/dist/src/mcp/sa-impersonation-provider.js.map +1 -1
  580. package/dist/src/mcp/token-storage/file-token-storage.js +6 -2
  581. package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -1
  582. package/dist/src/mcp/token-storage/hybrid-token-storage.js +4 -0
  583. package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -1
  584. package/dist/src/mcp/token-storage/hybrid-token-storage.test.js +12 -0
  585. package/dist/src/mcp/token-storage/hybrid-token-storage.test.js.map +1 -1
  586. package/dist/src/mcp/token-storage/keychain-token-storage.js +8 -0
  587. package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -1
  588. package/dist/src/mcp/token-storage/keychain-token-storage.test.js +10 -5
  589. package/dist/src/mcp/token-storage/keychain-token-storage.test.js.map +1 -1
  590. package/dist/src/output/json-formatter.test.js +2 -0
  591. package/dist/src/output/json-formatter.test.js.map +1 -1
  592. package/dist/src/output/stream-json-formatter.test.js +4 -0
  593. package/dist/src/output/stream-json-formatter.test.js.map +1 -1
  594. package/dist/src/policy/config.d.ts +5 -3
  595. package/dist/src/policy/config.js +137 -64
  596. package/dist/src/policy/config.js.map +1 -1
  597. package/dist/src/policy/config.test.js +218 -12
  598. package/dist/src/policy/config.test.js.map +1 -1
  599. package/dist/src/policy/integrity.d.ts +45 -0
  600. package/dist/src/policy/integrity.js +121 -0
  601. package/dist/src/policy/integrity.js.map +1 -0
  602. package/dist/src/policy/integrity.test.d.ts +6 -0
  603. package/dist/src/policy/integrity.test.js +132 -0
  604. package/dist/src/policy/integrity.test.js.map +1 -0
  605. package/dist/src/policy/persistence.test.js +31 -11
  606. package/dist/src/policy/persistence.test.js.map +1 -1
  607. package/dist/src/policy/policies/conseca.toml +6 -0
  608. package/dist/src/policy/policies/plan.toml +56 -0
  609. package/dist/src/policy/policies/read-only.toml +1 -11
  610. package/dist/src/policy/policies/yolo.toml +13 -2
  611. package/dist/src/policy/policy-engine.d.ts +16 -11
  612. package/dist/src/policy/policy-engine.js +208 -101
  613. package/dist/src/policy/policy-engine.js.map +1 -1
  614. package/dist/src/policy/policy-engine.test.js +538 -199
  615. package/dist/src/policy/policy-engine.test.js.map +1 -1
  616. package/dist/src/policy/policy-updater.test.js +20 -6
  617. package/dist/src/policy/policy-updater.test.js.map +1 -1
  618. package/dist/src/policy/shell-safety.test.js +371 -8
  619. package/dist/src/policy/shell-safety.test.js.map +1 -1
  620. package/dist/src/policy/stable-stringify.js +1 -0
  621. package/dist/src/policy/stable-stringify.js.map +1 -1
  622. package/dist/src/policy/toml-loader.d.ts +5 -5
  623. package/dist/src/policy/toml-loader.js +65 -22
  624. package/dist/src/policy/toml-loader.js.map +1 -1
  625. package/dist/src/policy/toml-loader.test.js +88 -9
  626. package/dist/src/policy/toml-loader.test.js.map +1 -1
  627. package/dist/src/policy/types.d.ts +26 -1
  628. package/dist/src/policy/types.js +8 -0
  629. package/dist/src/policy/types.js.map +1 -1
  630. package/dist/src/policy/utils.d.ts +5 -0
  631. package/dist/src/policy/utils.js +32 -1
  632. package/dist/src/policy/utils.js.map +1 -1
  633. package/dist/src/policy/utils.test.js +67 -7
  634. package/dist/src/policy/utils.test.js.map +1 -1
  635. package/dist/src/policy/workspace-policy.test.d.ts +6 -0
  636. package/dist/src/policy/workspace-policy.test.js +231 -0
  637. package/dist/src/policy/workspace-policy.test.js.map +1 -0
  638. package/dist/src/prompts/promptProvider.d.ts +19 -0
  639. package/dist/src/prompts/promptProvider.js +174 -0
  640. package/dist/src/prompts/promptProvider.js.map +1 -0
  641. package/dist/src/prompts/promptProvider.test.d.ts +6 -0
  642. package/dist/src/prompts/promptProvider.test.js +71 -0
  643. package/dist/src/prompts/promptProvider.test.js.map +1 -0
  644. package/dist/src/prompts/snippets.d.ts +86 -0
  645. package/dist/src/prompts/snippets.js +573 -0
  646. package/dist/src/prompts/snippets.js.map +1 -0
  647. package/dist/src/prompts/snippets.legacy.d.ts +91 -0
  648. package/dist/src/prompts/snippets.legacy.js +573 -0
  649. package/dist/src/prompts/snippets.legacy.js.map +1 -0
  650. package/dist/src/prompts/utils.d.ts +23 -0
  651. package/dist/src/prompts/utils.js +82 -0
  652. package/dist/src/prompts/utils.js.map +1 -0
  653. package/dist/src/routing/modelRouterService.js +18 -8
  654. package/dist/src/routing/modelRouterService.js.map +1 -1
  655. package/dist/src/routing/modelRouterService.test.js +14 -6
  656. package/dist/src/routing/modelRouterService.test.js.map +1 -1
  657. package/dist/src/routing/routingStrategy.d.ts +2 -0
  658. package/dist/src/routing/strategies/approvalModeStrategy.d.ts +18 -0
  659. package/dist/src/routing/strategies/approvalModeStrategy.js +59 -0
  660. package/dist/src/routing/strategies/approvalModeStrategy.js.map +1 -0
  661. package/dist/src/routing/strategies/approvalModeStrategy.test.d.ts +6 -0
  662. package/dist/src/routing/strategies/approvalModeStrategy.test.js +140 -0
  663. package/dist/src/routing/strategies/approvalModeStrategy.test.js.map +1 -0
  664. package/dist/src/routing/strategies/classifierStrategy.js +14 -9
  665. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
  666. package/dist/src/routing/strategies/classifierStrategy.test.js +72 -7
  667. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
  668. package/dist/src/routing/strategies/compositeStrategy.js +1 -0
  669. package/dist/src/routing/strategies/compositeStrategy.js.map +1 -1
  670. package/dist/src/routing/strategies/defaultStrategy.d.ts +1 -1
  671. package/dist/src/routing/strategies/defaultStrategy.js +5 -4
  672. package/dist/src/routing/strategies/defaultStrategy.js.map +1 -1
  673. package/dist/src/routing/strategies/defaultStrategy.test.js +58 -4
  674. package/dist/src/routing/strategies/defaultStrategy.test.js.map +1 -1
  675. package/dist/src/routing/strategies/fallbackStrategy.d.ts +1 -1
  676. package/dist/src/routing/strategies/fallbackStrategy.js +3 -3
  677. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
  678. package/dist/src/routing/strategies/fallbackStrategy.test.js +13 -1
  679. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -1
  680. package/dist/src/routing/strategies/gemmaClassifierStrategy.d.ts +14 -0
  681. package/dist/src/routing/strategies/gemmaClassifierStrategy.js +182 -0
  682. package/dist/src/routing/strategies/gemmaClassifierStrategy.js.map +1 -0
  683. package/dist/src/routing/strategies/gemmaClassifierStrategy.test.d.ts +6 -0
  684. package/dist/src/routing/strategies/gemmaClassifierStrategy.test.js +218 -0
  685. package/dist/src/routing/strategies/gemmaClassifierStrategy.test.js.map +1 -0
  686. package/dist/src/routing/strategies/numericalClassifierStrategy.d.ts +13 -0
  687. package/dist/src/routing/strategies/numericalClassifierStrategy.js +188 -0
  688. package/dist/src/routing/strategies/numericalClassifierStrategy.js.map +1 -0
  689. package/dist/src/routing/strategies/numericalClassifierStrategy.test.d.ts +6 -0
  690. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js +401 -0
  691. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js.map +1 -0
  692. package/dist/src/routing/strategies/overrideStrategy.d.ts +1 -1
  693. package/dist/src/routing/strategies/overrideStrategy.js +6 -6
  694. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
  695. package/dist/src/routing/strategies/overrideStrategy.test.js +13 -3
  696. package/dist/src/routing/strategies/overrideStrategy.test.js.map +1 -1
  697. package/dist/src/safety/built-in.js +1 -0
  698. package/dist/src/safety/built-in.js.map +1 -1
  699. package/dist/src/safety/conseca/conseca.d.ts +31 -0
  700. package/dist/src/safety/conseca/conseca.js +105 -0
  701. package/dist/src/safety/conseca/conseca.js.map +1 -0
  702. package/dist/src/safety/conseca/conseca.test.d.ts +6 -0
  703. package/dist/src/safety/conseca/conseca.test.js +226 -0
  704. package/dist/src/safety/conseca/conseca.test.js.map +1 -0
  705. package/dist/src/safety/conseca/integration.test.d.ts +6 -0
  706. package/dist/src/safety/conseca/integration.test.js +19 -0
  707. package/dist/src/safety/conseca/integration.test.js.map +1 -0
  708. package/dist/src/safety/conseca/policy-enforcer.d.ts +13 -0
  709. package/dist/src/safety/conseca/policy-enforcer.js +135 -0
  710. package/dist/src/safety/conseca/policy-enforcer.js.map +1 -0
  711. package/dist/src/safety/conseca/policy-enforcer.test.d.ts +6 -0
  712. package/dist/src/safety/conseca/policy-enforcer.test.js +141 -0
  713. package/dist/src/safety/conseca/policy-enforcer.test.js.map +1 -0
  714. package/dist/src/safety/conseca/policy-generator.d.ts +15 -0
  715. package/dist/src/safety/conseca/policy-generator.js +144 -0
  716. package/dist/src/safety/conseca/policy-generator.js.map +1 -0
  717. package/dist/src/safety/conseca/policy-generator.test.d.ts +6 -0
  718. package/dist/src/safety/conseca/policy-generator.test.js +84 -0
  719. package/dist/src/safety/conseca/policy-generator.test.js.map +1 -0
  720. package/dist/src/safety/conseca/types.d.ts +15 -0
  721. package/dist/src/safety/conseca/types.js +7 -0
  722. package/dist/src/safety/conseca/types.js.map +1 -0
  723. package/dist/src/safety/context-builder.js +3 -1
  724. package/dist/src/safety/context-builder.js.map +1 -1
  725. package/dist/src/scheduler/confirmation.d.ts +50 -0
  726. package/dist/src/scheduler/confirmation.js +204 -0
  727. package/dist/src/scheduler/confirmation.js.map +1 -0
  728. package/dist/src/scheduler/confirmation.test.d.ts +6 -0
  729. package/dist/src/scheduler/confirmation.test.js +310 -0
  730. package/dist/src/scheduler/confirmation.test.js.map +1 -0
  731. package/dist/src/scheduler/policy.d.ts +33 -0
  732. package/dist/src/scheduler/policy.js +119 -0
  733. package/dist/src/scheduler/policy.js.map +1 -0
  734. package/dist/src/scheduler/policy.test.d.ts +6 -0
  735. package/dist/src/scheduler/policy.test.js +419 -0
  736. package/dist/src/scheduler/policy.test.js.map +1 -0
  737. package/dist/src/scheduler/scheduler.d.ts +63 -0
  738. package/dist/src/scheduler/scheduler.js +371 -0
  739. package/dist/src/scheduler/scheduler.js.map +1 -0
  740. package/dist/src/scheduler/scheduler.test.d.ts +6 -0
  741. package/dist/src/scheduler/scheduler.test.js +937 -0
  742. package/dist/src/scheduler/scheduler.test.js.map +1 -0
  743. package/dist/src/scheduler/scheduler_parallel.test.d.ts +6 -0
  744. package/dist/src/scheduler/scheduler_parallel.test.js +401 -0
  745. package/dist/src/scheduler/scheduler_parallel.test.js.map +1 -0
  746. package/dist/src/scheduler/scheduler_waiting_callback.test.d.ts +6 -0
  747. package/dist/src/scheduler/scheduler_waiting_callback.test.js +62 -0
  748. package/dist/src/scheduler/scheduler_waiting_callback.test.js.map +1 -0
  749. package/dist/src/scheduler/state-manager.d.ts +74 -0
  750. package/dist/src/scheduler/state-manager.js +368 -0
  751. package/dist/src/scheduler/state-manager.js.map +1 -0
  752. package/dist/src/scheduler/state-manager.test.d.ts +6 -0
  753. package/dist/src/scheduler/state-manager.test.js +433 -0
  754. package/dist/src/scheduler/state-manager.test.js.map +1 -0
  755. package/dist/src/scheduler/tool-executor.js +25 -27
  756. package/dist/src/scheduler/tool-executor.js.map +1 -1
  757. package/dist/src/scheduler/tool-executor.test.js +26 -25
  758. package/dist/src/scheduler/tool-executor.test.js.map +1 -1
  759. package/dist/src/scheduler/tool-modifier.d.ts +23 -0
  760. package/dist/src/scheduler/tool-modifier.js +53 -0
  761. package/dist/src/scheduler/tool-modifier.js.map +1 -0
  762. package/dist/src/scheduler/tool-modifier.test.d.ts +6 -0
  763. package/dist/src/scheduler/tool-modifier.test.js +179 -0
  764. package/dist/src/scheduler/tool-modifier.test.js.map +1 -0
  765. package/dist/src/scheduler/types.d.ts +51 -8
  766. package/dist/src/scheduler/types.js +15 -1
  767. package/dist/src/scheduler/types.js.map +1 -1
  768. package/dist/src/services/FolderTrustDiscoveryService.d.ts +32 -0
  769. package/dist/src/services/FolderTrustDiscoveryService.js +169 -0
  770. package/dist/src/services/FolderTrustDiscoveryService.js.map +1 -0
  771. package/dist/src/services/FolderTrustDiscoveryService.test.d.ts +6 -0
  772. package/dist/src/services/FolderTrustDiscoveryService.test.js +118 -0
  773. package/dist/src/services/FolderTrustDiscoveryService.test.js.map +1 -0
  774. package/dist/src/services/chatCompressionService.d.ts +5 -1
  775. package/dist/src/services/chatCompressionService.js +169 -23
  776. package/dist/src/services/chatCompressionService.js.map +1 -1
  777. package/dist/src/services/chatCompressionService.test.js +382 -18
  778. package/dist/src/services/chatCompressionService.test.js.map +1 -1
  779. package/dist/src/services/chatRecordingService.d.ts +23 -3
  780. package/dist/src/services/chatRecordingService.js +137 -7
  781. package/dist/src/services/chatRecordingService.js.map +1 -1
  782. package/dist/src/services/chatRecordingService.test.js +450 -186
  783. package/dist/src/services/chatRecordingService.test.js.map +1 -1
  784. package/dist/src/services/contextManager.d.ts +7 -4
  785. package/dist/src/services/contextManager.js +43 -18
  786. package/dist/src/services/contextManager.js.map +1 -1
  787. package/dist/src/services/contextManager.test.js +54 -27
  788. package/dist/src/services/contextManager.test.js.map +1 -1
  789. package/dist/src/services/environmentSanitization.js +4 -3
  790. package/dist/src/services/environmentSanitization.js.map +1 -1
  791. package/dist/src/services/fileDiscoveryService.d.ts +14 -2
  792. package/dist/src/services/fileDiscoveryService.js +79 -7
  793. package/dist/src/services/fileDiscoveryService.js.map +1 -1
  794. package/dist/src/services/fileDiscoveryService.test.js +142 -10
  795. package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
  796. package/dist/src/services/fileKeychain.d.ts +24 -0
  797. package/dist/src/services/fileKeychain.js +123 -0
  798. package/dist/src/services/fileKeychain.js.map +1 -0
  799. package/dist/src/services/gitService.d.ts +2 -1
  800. package/dist/src/services/gitService.js +16 -6
  801. package/dist/src/services/gitService.js.map +1 -1
  802. package/dist/src/services/gitService.test.js +26 -10
  803. package/dist/src/services/gitService.test.js.map +1 -1
  804. package/dist/src/services/keychainService.d.ts +51 -0
  805. package/dist/src/services/keychainService.js +133 -0
  806. package/dist/src/services/keychainService.js.map +1 -0
  807. package/dist/src/services/keychainService.test.d.ts +6 -0
  808. package/dist/src/services/keychainService.test.js +150 -0
  809. package/dist/src/services/keychainService.test.js.map +1 -0
  810. package/dist/src/services/keychainTypes.d.ts +41 -0
  811. package/dist/src/services/keychainTypes.js +18 -0
  812. package/dist/src/services/keychainTypes.js.map +1 -0
  813. package/dist/src/services/loopDetectionService.js +23 -4
  814. package/dist/src/services/loopDetectionService.js.map +1 -1
  815. package/dist/src/services/loopDetectionService.test.js +24 -0
  816. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  817. package/dist/src/services/modelConfig.integration.test.js +2 -2
  818. package/dist/src/services/modelConfig.integration.test.js.map +1 -1
  819. package/dist/src/services/modelConfigService.d.ts +39 -4
  820. package/dist/src/services/modelConfigService.js +153 -76
  821. package/dist/src/services/modelConfigService.js.map +1 -1
  822. package/dist/src/services/modelConfigService.test.js +175 -0
  823. package/dist/src/services/modelConfigService.test.js.map +1 -1
  824. package/dist/src/services/modelConfigServiceTestUtils.js +3 -1
  825. package/dist/src/services/modelConfigServiceTestUtils.js.map +1 -1
  826. package/dist/src/services/sessionSummaryService.js +2 -0
  827. package/dist/src/services/sessionSummaryService.js.map +1 -1
  828. package/dist/src/services/sessionSummaryService.test.js +1 -1
  829. package/dist/src/services/sessionSummaryService.test.js.map +1 -1
  830. package/dist/src/services/shellExecutionService.d.ts +48 -0
  831. package/dist/src/services/shellExecutionService.js +339 -97
  832. package/dist/src/services/shellExecutionService.js.map +1 -1
  833. package/dist/src/services/shellExecutionService.test.js +132 -17
  834. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  835. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +26 -8
  836. package/dist/src/services/test-data/resolved-aliases.golden.json +26 -8
  837. package/dist/src/services/toolOutputMaskingService.d.ts +43 -0
  838. package/dist/src/services/toolOutputMaskingService.js +286 -0
  839. package/dist/src/services/toolOutputMaskingService.js.map +1 -0
  840. package/dist/src/services/toolOutputMaskingService.test.d.ts +6 -0
  841. package/dist/src/services/toolOutputMaskingService.test.js +546 -0
  842. package/dist/src/services/toolOutputMaskingService.test.js.map +1 -0
  843. package/dist/src/services/trackerService.d.ts +49 -0
  844. package/dist/src/services/trackerService.js +193 -0
  845. package/dist/src/services/trackerService.js.map +1 -0
  846. package/dist/src/services/trackerService.test.d.ts +6 -0
  847. package/dist/src/services/trackerService.test.js +117 -0
  848. package/dist/src/services/trackerService.test.js.map +1 -0
  849. package/dist/src/services/trackerTypes.d.ts +51 -0
  850. package/dist/src/services/trackerTypes.js +33 -0
  851. package/dist/src/services/trackerTypes.js.map +1 -0
  852. package/dist/src/skills/builtin/skill-creator/SKILL.md +382 -0
  853. package/dist/src/skills/builtin/skill-creator/scripts/init_skill.cjs +239 -0
  854. package/dist/src/skills/builtin/skill-creator/scripts/package_skill.cjs +106 -0
  855. package/dist/src/skills/builtin/skill-creator/scripts/validate_skill.cjs +131 -0
  856. package/dist/src/skills/skillLoader.d.ts +3 -0
  857. package/dist/src/skills/skillLoader.js +73 -12
  858. package/dist/src/skills/skillLoader.js.map +1 -1
  859. package/dist/src/skills/skillLoader.test.d.ts +5 -0
  860. package/dist/src/skills/skillLoader.test.js +195 -1
  861. package/dist/src/skills/skillLoader.test.js.map +1 -1
  862. package/dist/src/skills/skillManager.d.ts +25 -3
  863. package/dist/src/skills/skillManager.js +76 -11
  864. package/dist/src/skills/skillManager.js.map +1 -1
  865. package/dist/src/skills/skillManager.test.js +209 -9
  866. package/dist/src/skills/skillManager.test.js.map +1 -1
  867. package/dist/src/skills/skillManagerAlias.test.d.ts +6 -0
  868. package/dist/src/skills/skillManagerAlias.test.js +140 -0
  869. package/dist/src/skills/skillManagerAlias.test.js.map +1 -0
  870. package/dist/src/telemetry/activity-monitor.js +1 -0
  871. package/dist/src/telemetry/activity-monitor.js.map +1 -1
  872. package/dist/src/telemetry/billingEvents.d.ts +75 -0
  873. package/dist/src/telemetry/billingEvents.js +181 -0
  874. package/dist/src/telemetry/billingEvents.js.map +1 -0
  875. package/dist/src/telemetry/billingEvents.test.d.ts +6 -0
  876. package/dist/src/telemetry/billingEvents.test.js +139 -0
  877. package/dist/src/telemetry/billingEvents.test.js.map +1 -0
  878. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +25 -4
  879. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +207 -12
  880. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  881. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +210 -6
  882. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  883. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +23 -1
  884. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +61 -1
  885. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  886. package/dist/src/telemetry/conseca-logger.d.ts +9 -0
  887. package/dist/src/telemetry/conseca-logger.js +91 -0
  888. package/dist/src/telemetry/conseca-logger.js.map +1 -0
  889. package/dist/src/telemetry/conseca-logger.test.d.ts +6 -0
  890. package/dist/src/telemetry/conseca-logger.test.js +90 -0
  891. package/dist/src/telemetry/conseca-logger.test.js.map +1 -0
  892. package/dist/src/telemetry/file-exporters.js +2 -1
  893. package/dist/src/telemetry/file-exporters.js.map +1 -1
  894. package/dist/src/telemetry/file-exporters.test.d.ts +6 -0
  895. package/dist/src/telemetry/file-exporters.test.js +142 -0
  896. package/dist/src/telemetry/file-exporters.test.js.map +1 -0
  897. package/dist/src/telemetry/gcp-exporters.js +1 -0
  898. package/dist/src/telemetry/gcp-exporters.js.map +1 -1
  899. package/dist/src/telemetry/index.d.ts +3 -2
  900. package/dist/src/telemetry/index.js +3 -2
  901. package/dist/src/telemetry/index.js.map +1 -1
  902. package/dist/src/telemetry/integration.test.circular.js +2 -1
  903. package/dist/src/telemetry/integration.test.circular.js.map +1 -1
  904. package/dist/src/telemetry/llmRole.d.ts +18 -0
  905. package/dist/src/telemetry/llmRole.js +20 -0
  906. package/dist/src/telemetry/llmRole.js.map +1 -0
  907. package/dist/src/telemetry/loggers.d.ts +8 -1
  908. package/dist/src/telemetry/loggers.js +113 -10
  909. package/dist/src/telemetry/loggers.js.map +1 -1
  910. package/dist/src/telemetry/loggers.test.circular.js +5 -2
  911. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  912. package/dist/src/telemetry/loggers.test.js +169 -19
  913. package/dist/src/telemetry/loggers.test.js.map +1 -1
  914. package/dist/src/telemetry/memory-monitor.test.js +1 -0
  915. package/dist/src/telemetry/memory-monitor.test.js.map +1 -1
  916. package/dist/src/telemetry/metrics.d.ts +39 -1
  917. package/dist/src/telemetry/metrics.js +105 -4
  918. package/dist/src/telemetry/metrics.js.map +1 -1
  919. package/dist/src/telemetry/metrics.test.js +84 -4
  920. package/dist/src/telemetry/metrics.test.js.map +1 -1
  921. package/dist/src/telemetry/sanitize.test.js +2 -0
  922. package/dist/src/telemetry/sanitize.test.js.map +1 -1
  923. package/dist/src/telemetry/sdk.js +24 -0
  924. package/dist/src/telemetry/sdk.js.map +1 -1
  925. package/dist/src/telemetry/sdk.test.js +5 -1
  926. package/dist/src/telemetry/sdk.test.js.map +1 -1
  927. package/dist/src/telemetry/semantic.js +92 -0
  928. package/dist/src/telemetry/semantic.js.map +1 -1
  929. package/dist/src/telemetry/semantic.truncation.test.d.ts +1 -0
  930. package/dist/src/telemetry/semantic.truncation.test.js +92 -0
  931. package/dist/src/telemetry/semantic.truncation.test.js.map +1 -0
  932. package/dist/src/telemetry/telemetryAttributes.js +5 -0
  933. package/dist/src/telemetry/telemetryAttributes.js.map +1 -1
  934. package/dist/src/telemetry/trace.test.d.ts +6 -0
  935. package/dist/src/telemetry/trace.test.js +116 -0
  936. package/dist/src/telemetry/trace.test.js.map +1 -0
  937. package/dist/src/telemetry/types.d.ts +98 -15
  938. package/dist/src/telemetry/types.js +227 -16
  939. package/dist/src/telemetry/types.js.map +1 -1
  940. package/dist/src/telemetry/uiTelemetry.d.ts +16 -0
  941. package/dist/src/telemetry/uiTelemetry.js +39 -0
  942. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  943. package/dist/src/telemetry/uiTelemetry.test.js +29 -0
  944. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  945. package/dist/src/test-utils/mock-message-bus.d.ts +1 -19
  946. package/dist/src/test-utils/mock-message-bus.js +5 -65
  947. package/dist/src/test-utils/mock-message-bus.js.map +1 -1
  948. package/dist/src/test-utils/mock-tool.d.ts +1 -0
  949. package/dist/src/test-utils/mock-tool.js +1 -0
  950. package/dist/src/test-utils/mock-tool.js.map +1 -1
  951. package/dist/src/test-utils/mockWorkspaceContext.js +1 -0
  952. package/dist/src/test-utils/mockWorkspaceContext.js.map +1 -1
  953. package/dist/src/tools/activate-skill.d.ts +1 -0
  954. package/dist/src/tools/activate-skill.js +28 -25
  955. package/dist/src/tools/activate-skill.js.map +1 -1
  956. package/dist/src/tools/activate-skill.test.js +24 -6
  957. package/dist/src/tools/activate-skill.test.js.map +1 -1
  958. package/dist/src/tools/ask-user.d.ts +29 -0
  959. package/dist/src/tools/ask-user.js +141 -0
  960. package/dist/src/tools/ask-user.js.map +1 -0
  961. package/dist/src/tools/ask-user.test.d.ts +6 -0
  962. package/dist/src/tools/ask-user.test.js +446 -0
  963. package/dist/src/tools/ask-user.test.js.map +1 -0
  964. package/dist/src/tools/confirmation-policy.test.js +21 -0
  965. package/dist/src/tools/confirmation-policy.test.js.map +1 -1
  966. package/dist/src/tools/constants.d.ts +7 -0
  967. package/dist/src/tools/constants.js +8 -0
  968. package/dist/src/tools/constants.js.map +1 -0
  969. package/dist/src/tools/definitions/base-declarations.d.ts +26 -0
  970. package/dist/src/tools/definitions/base-declarations.js +30 -0
  971. package/dist/src/tools/definitions/base-declarations.js.map +1 -0
  972. package/dist/src/tools/definitions/coreTools.d.ts +36 -0
  973. package/dist/src/tools/definitions/coreTools.js +143 -0
  974. package/dist/src/tools/definitions/coreTools.js.map +1 -0
  975. package/dist/src/tools/definitions/coreToolsModelSnapshots.test.d.ts +6 -0
  976. package/dist/src/tools/definitions/coreToolsModelSnapshots.test.js +82 -0
  977. package/dist/src/tools/definitions/coreToolsModelSnapshots.test.js.map +1 -0
  978. package/dist/src/tools/definitions/dynamic-declaration-helpers.d.ts +30 -0
  979. package/dist/src/tools/definitions/dynamic-declaration-helpers.js +135 -0
  980. package/dist/src/tools/definitions/dynamic-declaration-helpers.js.map +1 -0
  981. package/dist/src/tools/definitions/model-family-sets/default-legacy.d.ts +11 -0
  982. package/dist/src/tools/definitions/model-family-sets/default-legacy.js +575 -0
  983. package/dist/src/tools/definitions/model-family-sets/default-legacy.js.map +1 -0
  984. package/dist/src/tools/definitions/model-family-sets/gemini-3.d.ts +14 -0
  985. package/dist/src/tools/definitions/model-family-sets/gemini-3.js +578 -0
  986. package/dist/src/tools/definitions/model-family-sets/gemini-3.js.map +1 -0
  987. package/dist/src/tools/definitions/modelFamilyService.d.ts +14 -0
  988. package/dist/src/tools/definitions/modelFamilyService.js +29 -0
  989. package/dist/src/tools/definitions/modelFamilyService.js.map +1 -0
  990. package/dist/src/tools/definitions/resolver.d.ts +15 -0
  991. package/dist/src/tools/definitions/resolver.js +27 -0
  992. package/dist/src/tools/definitions/resolver.js.map +1 -0
  993. package/dist/src/tools/definitions/resolver.test.d.ts +6 -0
  994. package/dist/src/tools/definitions/resolver.test.js +58 -0
  995. package/dist/src/tools/definitions/resolver.test.js.map +1 -0
  996. package/dist/src/tools/definitions/trackerTools.d.ts +12 -0
  997. package/dist/src/tools/definitions/trackerTools.js +146 -0
  998. package/dist/src/tools/definitions/trackerTools.js.map +1 -0
  999. package/dist/src/tools/definitions/types.d.ts +44 -0
  1000. package/dist/src/tools/definitions/types.js +7 -0
  1001. package/dist/src/tools/definitions/types.js.map +1 -0
  1002. package/dist/src/tools/diff-utils.d.ts +9 -0
  1003. package/dist/src/tools/diff-utils.js +66 -0
  1004. package/dist/src/tools/diff-utils.js.map +1 -0
  1005. package/dist/src/tools/diff-utils.test.d.ts +6 -0
  1006. package/dist/src/tools/diff-utils.test.js +53 -0
  1007. package/dist/src/tools/diff-utils.test.js.map +1 -0
  1008. package/dist/src/tools/diffOptions.d.ts +1 -1
  1009. package/dist/src/tools/diffOptions.js +7 -3
  1010. package/dist/src/tools/diffOptions.js.map +1 -1
  1011. package/dist/src/tools/diffOptions.test.js +17 -0
  1012. package/dist/src/tools/diffOptions.test.js.map +1 -1
  1013. package/dist/src/tools/edit.d.ts +1 -0
  1014. package/dist/src/tools/edit.js +52 -82
  1015. package/dist/src/tools/edit.js.map +1 -1
  1016. package/dist/src/tools/edit.test.js +96 -1
  1017. package/dist/src/tools/edit.test.js.map +1 -1
  1018. package/dist/src/tools/enter-plan-mode.d.ts +25 -0
  1019. package/dist/src/tools/enter-plan-mode.js +69 -0
  1020. package/dist/src/tools/enter-plan-mode.js.map +1 -0
  1021. package/dist/src/tools/enter-plan-mode.test.d.ts +6 -0
  1022. package/dist/src/tools/enter-plan-mode.test.js +102 -0
  1023. package/dist/src/tools/enter-plan-mode.test.js.map +1 -0
  1024. package/dist/src/tools/exit-plan-mode.d.ts +33 -0
  1025. package/dist/src/tools/exit-plan-mode.js +173 -0
  1026. package/dist/src/tools/exit-plan-mode.js.map +1 -0
  1027. package/dist/src/tools/exit-plan-mode.test.d.ts +6 -0
  1028. package/dist/src/tools/exit-plan-mode.test.js +311 -0
  1029. package/dist/src/tools/exit-plan-mode.test.js.map +1 -0
  1030. package/dist/src/tools/get-internal-docs.d.ts +1 -0
  1031. package/dist/src/tools/get-internal-docs.js +17 -27
  1032. package/dist/src/tools/get-internal-docs.js.map +1 -1
  1033. package/dist/src/tools/glob.d.ts +1 -0
  1034. package/dist/src/tools/glob.js +15 -36
  1035. package/dist/src/tools/glob.js.map +1 -1
  1036. package/dist/src/tools/glob.test.js +219 -280
  1037. package/dist/src/tools/glob.test.js.map +1 -1
  1038. package/dist/src/tools/grep-utils.d.ts +49 -0
  1039. package/dist/src/tools/grep-utils.js +147 -0
  1040. package/dist/src/tools/grep-utils.js.map +1 -0
  1041. package/dist/src/tools/grep.d.ts +18 -8
  1042. package/dist/src/tools/grep.js +273 -247
  1043. package/dist/src/tools/grep.js.map +1 -1
  1044. package/dist/src/tools/grep.test.js +165 -16
  1045. package/dist/src/tools/grep.test.js.map +1 -1
  1046. package/dist/src/tools/line-endings.test.d.ts +6 -0
  1047. package/dist/src/tools/line-endings.test.js +209 -0
  1048. package/dist/src/tools/line-endings.test.js.map +1 -0
  1049. package/dist/src/tools/ls.d.ts +1 -0
  1050. package/dist/src/tools/ls.js +18 -37
  1051. package/dist/src/tools/ls.js.map +1 -1
  1052. package/dist/src/tools/ls.test.js +25 -3
  1053. package/dist/src/tools/ls.test.js.map +1 -1
  1054. package/dist/src/tools/mcp-client-manager.d.ts +18 -5
  1055. package/dist/src/tools/mcp-client-manager.js +118 -37
  1056. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  1057. package/dist/src/tools/mcp-client-manager.test.js +124 -16
  1058. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  1059. package/dist/src/tools/mcp-client.d.ts +18 -7
  1060. package/dist/src/tools/mcp-client.js +137 -42
  1061. package/dist/src/tools/mcp-client.js.map +1 -1
  1062. package/dist/src/tools/mcp-client.test.js +248 -29
  1063. package/dist/src/tools/mcp-client.test.js.map +1 -1
  1064. package/dist/src/tools/mcp-tool.d.ts +26 -4
  1065. package/dist/src/tools/mcp-tool.js +17 -5
  1066. package/dist/src/tools/mcp-tool.js.map +1 -1
  1067. package/dist/src/tools/mcp-tool.test.js +5 -5
  1068. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  1069. package/dist/src/tools/memoryTool.d.ts +2 -7
  1070. package/dist/src/tools/memoryTool.js +54 -80
  1071. package/dist/src/tools/memoryTool.js.map +1 -1
  1072. package/dist/src/tools/memoryTool.test.js +62 -114
  1073. package/dist/src/tools/memoryTool.test.js.map +1 -1
  1074. package/dist/src/tools/modifiable-tool.test.js +3 -3
  1075. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  1076. package/dist/src/tools/omissionPlaceholderDetector.d.ts +15 -0
  1077. package/dist/src/tools/omissionPlaceholderDetector.js +90 -0
  1078. package/dist/src/tools/omissionPlaceholderDetector.js.map +1 -0
  1079. package/dist/src/tools/omissionPlaceholderDetector.test.d.ts +6 -0
  1080. package/dist/src/tools/omissionPlaceholderDetector.test.js +49 -0
  1081. package/dist/src/tools/omissionPlaceholderDetector.test.js.map +1 -0
  1082. package/dist/src/tools/read-file.d.ts +2 -0
  1083. package/dist/src/tools/read-file.js +26 -30
  1084. package/dist/src/tools/read-file.js.map +1 -1
  1085. package/dist/src/tools/read-file.test.js +90 -3
  1086. package/dist/src/tools/read-file.test.js.map +1 -1
  1087. package/dist/src/tools/read-many-files.d.ts +1 -0
  1088. package/dist/src/tools/read-many-files.js +21 -63
  1089. package/dist/src/tools/read-many-files.js.map +1 -1
  1090. package/dist/src/tools/read-many-files.test.js +43 -1
  1091. package/dist/src/tools/read-many-files.test.js.map +1 -1
  1092. package/dist/src/tools/ripGrep.d.ts +20 -3
  1093. package/dist/src/tools/ripGrep.js +217 -189
  1094. package/dist/src/tools/ripGrep.js.map +1 -1
  1095. package/dist/src/tools/ripGrep.test.js +745 -567
  1096. package/dist/src/tools/ripGrep.test.js.map +1 -1
  1097. package/dist/src/tools/shell.d.ts +1 -0
  1098. package/dist/src/tools/shell.js +8 -3
  1099. package/dist/src/tools/shell.js.map +1 -1
  1100. package/dist/src/tools/shell.test.js +248 -11
  1101. package/dist/src/tools/shell.test.js.map +1 -1
  1102. package/dist/src/tools/tool-error.d.ts +4 -0
  1103. package/dist/src/tools/tool-error.js +4 -0
  1104. package/dist/src/tools/tool-error.js.map +1 -1
  1105. package/dist/src/tools/tool-names.d.ts +27 -17
  1106. package/dist/src/tools/tool-names.js +59 -20
  1107. package/dist/src/tools/tool-names.js.map +1 -1
  1108. package/dist/src/tools/tool-names.test.js +55 -2
  1109. package/dist/src/tools/tool-names.test.js.map +1 -1
  1110. package/dist/src/tools/tool-registry.d.ts +10 -2
  1111. package/dist/src/tools/tool-registry.js +58 -11
  1112. package/dist/src/tools/tool-registry.js.map +1 -1
  1113. package/dist/src/tools/tool-registry.test.js +113 -1
  1114. package/dist/src/tools/tool-registry.test.js.map +1 -1
  1115. package/dist/src/tools/tools.d.ts +52 -5
  1116. package/dist/src/tools/tools.js +35 -18
  1117. package/dist/src/tools/tools.js.map +1 -1
  1118. package/dist/src/tools/trackerTools.d.ts +122 -0
  1119. package/dist/src/tools/trackerTools.js +365 -0
  1120. package/dist/src/tools/trackerTools.js.map +1 -0
  1121. package/dist/src/tools/trackerTools.test.d.ts +6 -0
  1122. package/dist/src/tools/trackerTools.test.js +97 -0
  1123. package/dist/src/tools/trackerTools.test.js.map +1 -0
  1124. package/dist/src/tools/web-fetch.d.ts +1 -0
  1125. package/dist/src/tools/web-fetch.js +12 -12
  1126. package/dist/src/tools/web-fetch.js.map +1 -1
  1127. package/dist/src/tools/web-search.d.ts +1 -0
  1128. package/dist/src/tools/web-search.js +9 -11
  1129. package/dist/src/tools/web-search.js.map +1 -1
  1130. package/dist/src/tools/write-file.d.ts +1 -4
  1131. package/dist/src/tools/write-file.js +42 -35
  1132. package/dist/src/tools/write-file.js.map +1 -1
  1133. package/dist/src/tools/write-file.test.js +105 -18
  1134. package/dist/src/tools/write-file.test.js.map +1 -1
  1135. package/dist/src/tools/write-todos.d.ts +1 -30
  1136. package/dist/src/tools/write-todos.js +5 -123
  1137. package/dist/src/tools/write-todos.js.map +1 -1
  1138. package/dist/src/tools/xcode-mcp-fix-transport.d.ts +30 -0
  1139. package/dist/src/tools/xcode-mcp-fix-transport.js +82 -0
  1140. package/dist/src/tools/xcode-mcp-fix-transport.js.map +1 -0
  1141. package/dist/src/tools/xcode-mcp-fix-transport.test.d.ts +1 -0
  1142. package/dist/src/tools/xcode-mcp-fix-transport.test.js +98 -0
  1143. package/dist/src/tools/xcode-mcp-fix-transport.test.js.map +1 -0
  1144. package/dist/src/utils/apiConversionUtils.d.ts +12 -0
  1145. package/dist/src/utils/apiConversionUtils.js +46 -0
  1146. package/dist/src/utils/apiConversionUtils.js.map +1 -0
  1147. package/dist/src/utils/apiConversionUtils.test.d.ts +6 -0
  1148. package/dist/src/utils/apiConversionUtils.test.js +150 -0
  1149. package/dist/src/utils/apiConversionUtils.test.js.map +1 -0
  1150. package/dist/src/utils/approvalModeUtils.d.ts +14 -0
  1151. package/dist/src/utils/approvalModeUtils.js +35 -0
  1152. package/dist/src/utils/approvalModeUtils.js.map +1 -0
  1153. package/dist/src/utils/approvalModeUtils.test.d.ts +6 -0
  1154. package/dist/src/utils/approvalModeUtils.test.js +36 -0
  1155. package/dist/src/utils/approvalModeUtils.test.js.map +1 -0
  1156. package/dist/src/utils/authConsent.d.ts +10 -0
  1157. package/dist/src/utils/authConsent.js +52 -0
  1158. package/dist/src/utils/authConsent.js.map +1 -0
  1159. package/dist/src/utils/authConsent.test.d.ts +6 -0
  1160. package/dist/src/utils/authConsent.test.js +74 -0
  1161. package/dist/src/utils/authConsent.test.js.map +1 -0
  1162. package/dist/src/utils/bfsFileSearch.js +2 -0
  1163. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  1164. package/dist/src/utils/bfsFileSearch.test.js +6 -1
  1165. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  1166. package/dist/src/utils/cache.d.ts +63 -0
  1167. package/dist/src/utils/cache.js +103 -0
  1168. package/dist/src/utils/cache.js.map +1 -0
  1169. package/dist/src/utils/cache.test.d.ts +6 -0
  1170. package/dist/src/utils/cache.test.js +158 -0
  1171. package/dist/src/utils/cache.test.js.map +1 -0
  1172. package/dist/src/utils/checkpointUtils.js +2 -0
  1173. package/dist/src/utils/checkpointUtils.js.map +1 -1
  1174. package/dist/src/utils/checks.d.ts +19 -0
  1175. package/dist/src/utils/checks.js +24 -0
  1176. package/dist/src/utils/checks.js.map +1 -0
  1177. package/dist/src/utils/checks.test.d.ts +6 -0
  1178. package/dist/src/utils/checks.test.js +29 -0
  1179. package/dist/src/utils/checks.test.js.map +1 -0
  1180. package/dist/src/utils/compatibility.d.ts +41 -0
  1181. package/dist/src/utils/compatibility.js +112 -0
  1182. package/dist/src/utils/compatibility.js.map +1 -0
  1183. package/dist/src/utils/compatibility.test.d.ts +6 -0
  1184. package/dist/src/utils/compatibility.test.js +233 -0
  1185. package/dist/src/utils/compatibility.test.js.map +1 -0
  1186. package/dist/src/utils/constants.d.ts +7 -0
  1187. package/dist/src/utils/constants.js +8 -0
  1188. package/dist/src/utils/constants.js.map +1 -0
  1189. package/dist/src/utils/deadlineTimer.d.ts +36 -0
  1190. package/dist/src/utils/deadlineTimer.js +87 -0
  1191. package/dist/src/utils/deadlineTimer.js.map +1 -0
  1192. package/dist/src/utils/deadlineTimer.test.d.ts +6 -0
  1193. package/dist/src/utils/deadlineTimer.test.js +64 -0
  1194. package/dist/src/utils/deadlineTimer.test.js.map +1 -0
  1195. package/dist/src/utils/editCorrector.d.ts +3 -3
  1196. package/dist/src/utils/editCorrector.js +37 -10
  1197. package/dist/src/utils/editCorrector.js.map +1 -1
  1198. package/dist/src/utils/editCorrector.test.js +49 -20
  1199. package/dist/src/utils/editCorrector.test.js.map +1 -1
  1200. package/dist/src/utils/editor.d.ts +17 -3
  1201. package/dist/src/utils/editor.js +84 -15
  1202. package/dist/src/utils/editor.js.map +1 -1
  1203. package/dist/src/utils/editor.test.js +160 -17
  1204. package/dist/src/utils/editor.test.js.map +1 -1
  1205. package/dist/src/utils/envExpansion.d.ts +18 -0
  1206. package/dist/src/utils/envExpansion.js +46 -0
  1207. package/dist/src/utils/envExpansion.js.map +1 -0
  1208. package/dist/src/utils/envExpansion.test.d.ts +6 -0
  1209. package/dist/src/utils/envExpansion.test.js +110 -0
  1210. package/dist/src/utils/envExpansion.test.js.map +1 -0
  1211. package/dist/src/utils/environmentContext.js +9 -20
  1212. package/dist/src/utils/environmentContext.js.map +1 -1
  1213. package/dist/src/utils/environmentContext.test.js +31 -14
  1214. package/dist/src/utils/environmentContext.test.js.map +1 -1
  1215. package/dist/src/utils/errors.d.ts +3 -0
  1216. package/dist/src/utils/errors.js +13 -3
  1217. package/dist/src/utils/errors.js.map +1 -1
  1218. package/dist/src/utils/errors.test.js +23 -1
  1219. package/dist/src/utils/errors.test.js.map +1 -1
  1220. package/dist/src/utils/errors_timeout.test.d.ts +6 -0
  1221. package/dist/src/utils/errors_timeout.test.js +40 -0
  1222. package/dist/src/utils/errors_timeout.test.js.map +1 -0
  1223. package/dist/src/utils/events.d.ts +107 -3
  1224. package/dist/src/utils/events.js +65 -1
  1225. package/dist/src/utils/events.js.map +1 -1
  1226. package/dist/src/utils/events.test.js +43 -0
  1227. package/dist/src/utils/events.test.js.map +1 -1
  1228. package/dist/src/utils/extensionLoader.js +2 -0
  1229. package/dist/src/utils/extensionLoader.js.map +1 -1
  1230. package/dist/src/utils/extensionLoader.test.js +21 -0
  1231. package/dist/src/utils/extensionLoader.test.js.map +1 -1
  1232. package/dist/src/utils/fastAckHelper.d.ts +30 -0
  1233. package/dist/src/utils/fastAckHelper.js +142 -0
  1234. package/dist/src/utils/fastAckHelper.js.map +1 -0
  1235. package/dist/src/utils/fastAckHelper.test.d.ts +6 -0
  1236. package/dist/src/utils/fastAckHelper.test.js +115 -0
  1237. package/dist/src/utils/fastAckHelper.test.js.map +1 -0
  1238. package/dist/src/utils/fetch.test.d.ts +6 -0
  1239. package/dist/src/utils/fetch.test.js +206 -0
  1240. package/dist/src/utils/fetch.test.js.map +1 -0
  1241. package/dist/src/utils/fileDiffUtils.d.ts +18 -0
  1242. package/dist/src/utils/fileDiffUtils.js +37 -0
  1243. package/dist/src/utils/fileDiffUtils.js.map +1 -0
  1244. package/dist/src/utils/fileDiffUtils.test.d.ts +6 -0
  1245. package/dist/src/utils/fileDiffUtils.test.js +84 -0
  1246. package/dist/src/utils/fileDiffUtils.test.js.map +1 -0
  1247. package/dist/src/utils/fileUtils.d.ts +27 -3
  1248. package/dist/src/utils/fileUtils.js +104 -60
  1249. package/dist/src/utils/fileUtils.js.map +1 -1
  1250. package/dist/src/utils/fileUtils.test.js +129 -109
  1251. package/dist/src/utils/fileUtils.test.js.map +1 -1
  1252. package/dist/src/utils/filesearch/crawler.d.ts +1 -0
  1253. package/dist/src/utils/filesearch/crawler.js +18 -1
  1254. package/dist/src/utils/filesearch/crawler.js.map +1 -1
  1255. package/dist/src/utils/filesearch/crawler.test.js +101 -82
  1256. package/dist/src/utils/filesearch/crawler.test.js.map +1 -1
  1257. package/dist/src/utils/filesearch/fileSearch.d.ts +4 -3
  1258. package/dist/src/utils/filesearch/fileSearch.js +5 -4
  1259. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  1260. package/dist/src/utils/filesearch/fileSearch.test.js +172 -84
  1261. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
  1262. package/dist/src/utils/filesearch/ignore.d.ts +2 -7
  1263. package/dist/src/utils/filesearch/ignore.js +7 -14
  1264. package/dist/src/utils/filesearch/ignore.js.map +1 -1
  1265. package/dist/src/utils/filesearch/ignore.test.js +30 -32
  1266. package/dist/src/utils/filesearch/ignore.test.js.map +1 -1
  1267. package/dist/src/utils/formatters.d.ts +1 -1
  1268. package/dist/src/utils/formatters.js +1 -1
  1269. package/dist/src/utils/formatters.js.map +1 -1
  1270. package/dist/src/utils/formatters.test.js +5 -5
  1271. package/dist/src/utils/formatters.test.js.map +1 -1
  1272. package/dist/src/utils/generateContentResponseUtilities.js +3 -0
  1273. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
  1274. package/dist/src/utils/getFolderStructure.test.js +5 -2
  1275. package/dist/src/utils/getFolderStructure.test.js.map +1 -1
  1276. package/dist/src/utils/getPty.js +3 -0
  1277. package/dist/src/utils/getPty.js.map +1 -1
  1278. package/dist/src/utils/gitIgnoreParser.js +10 -11
  1279. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  1280. package/dist/src/utils/googleErrors.js +4 -0
  1281. package/dist/src/utils/googleErrors.js.map +1 -1
  1282. package/dist/src/utils/googleQuotaErrors.d.ts +23 -9
  1283. package/dist/src/utils/googleQuotaErrors.js +90 -23
  1284. package/dist/src/utils/googleQuotaErrors.js.map +1 -1
  1285. package/dist/src/utils/googleQuotaErrors.test.js +168 -23
  1286. package/dist/src/utils/googleQuotaErrors.test.js.map +1 -1
  1287. package/dist/src/utils/headless.d.ts +26 -0
  1288. package/dist/src/utils/headless.js +33 -0
  1289. package/dist/src/utils/headless.js.map +1 -0
  1290. package/dist/src/utils/headless.test.d.ts +6 -0
  1291. package/dist/src/utils/headless.test.js +167 -0
  1292. package/dist/src/utils/headless.test.js.map +1 -0
  1293. package/dist/src/utils/httpErrors.js +4 -1
  1294. package/dist/src/utils/httpErrors.js.map +1 -1
  1295. package/dist/src/utils/ignoreFileParser.d.ts +30 -0
  1296. package/dist/src/utils/ignoreFileParser.js +100 -0
  1297. package/dist/src/utils/ignoreFileParser.js.map +1 -0
  1298. package/dist/src/utils/ignoreFileParser.test.d.ts +6 -0
  1299. package/dist/src/utils/ignoreFileParser.test.js +167 -0
  1300. package/dist/src/utils/ignoreFileParser.test.js.map +1 -0
  1301. package/dist/src/utils/installationManager.test.js +11 -3
  1302. package/dist/src/utils/installationManager.test.js.map +1 -1
  1303. package/dist/src/utils/llm-edit-fixer.js +9 -9
  1304. package/dist/src/utils/llm-edit-fixer.js.map +1 -1
  1305. package/dist/src/utils/llm-edit-fixer.test.js +2 -2
  1306. package/dist/src/utils/llm-edit-fixer.test.js.map +1 -1
  1307. package/dist/src/utils/markdownUtils.d.ts +22 -0
  1308. package/dist/src/utils/markdownUtils.js +126 -0
  1309. package/dist/src/utils/markdownUtils.js.map +1 -0
  1310. package/dist/src/utils/markdownUtils.test.d.ts +6 -0
  1311. package/dist/src/utils/markdownUtils.test.js +107 -0
  1312. package/dist/src/utils/markdownUtils.test.js.map +1 -0
  1313. package/dist/src/utils/memoryDiscovery.d.ts +11 -3
  1314. package/dist/src/utils/memoryDiscovery.js +122 -102
  1315. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  1316. package/dist/src/utils/memoryDiscovery.test.js +163 -109
  1317. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  1318. package/dist/src/utils/memoryImportProcessor.js +7 -24
  1319. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  1320. package/dist/src/utils/nextSpeakerChecker.js +3 -0
  1321. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  1322. package/dist/src/utils/oauth-flow.d.ts +105 -0
  1323. package/dist/src/utils/oauth-flow.js +370 -0
  1324. package/dist/src/utils/oauth-flow.js.map +1 -0
  1325. package/dist/src/utils/oauth-flow.test.d.ts +6 -0
  1326. package/dist/src/utils/oauth-flow.test.js +360 -0
  1327. package/dist/src/utils/oauth-flow.test.js.map +1 -0
  1328. package/dist/src/utils/package.js +10 -3
  1329. package/dist/src/utils/package.js.map +1 -1
  1330. package/dist/src/utils/package.test.d.ts +6 -0
  1331. package/dist/src/utils/package.test.js +57 -0
  1332. package/dist/src/utils/package.test.js.map +1 -0
  1333. package/dist/src/utils/partUtils.js +2 -1
  1334. package/dist/src/utils/partUtils.js.map +1 -1
  1335. package/dist/src/utils/paths.d.ts +33 -9
  1336. package/dist/src/utils/paths.js +88 -29
  1337. package/dist/src/utils/paths.js.map +1 -1
  1338. package/dist/src/utils/paths.test.js +206 -110
  1339. package/dist/src/utils/paths.test.js.map +1 -1
  1340. package/dist/src/utils/planUtils.d.ts +29 -0
  1341. package/dist/src/utils/planUtils.js +55 -0
  1342. package/dist/src/utils/planUtils.js.map +1 -0
  1343. package/dist/src/utils/planUtils.test.d.ts +6 -0
  1344. package/dist/src/utils/planUtils.test.js +76 -0
  1345. package/dist/src/utils/planUtils.test.js.map +1 -0
  1346. package/dist/src/utils/process-utils.d.ts +32 -0
  1347. package/dist/src/utils/process-utils.js +88 -0
  1348. package/dist/src/utils/process-utils.js.map +1 -0
  1349. package/dist/src/utils/process-utils.test.d.ts +6 -0
  1350. package/dist/src/utils/process-utils.test.js +103 -0
  1351. package/dist/src/utils/process-utils.test.js.map +1 -0
  1352. package/dist/src/utils/promptIdContext.d.ts +6 -0
  1353. package/dist/src/utils/promptIdContext.js +15 -0
  1354. package/dist/src/utils/promptIdContext.js.map +1 -1
  1355. package/dist/src/utils/quotaErrorDetection.js +3 -0
  1356. package/dist/src/utils/quotaErrorDetection.js.map +1 -1
  1357. package/dist/src/utils/retry.d.ts +4 -0
  1358. package/dist/src/utils/retry.js +84 -5
  1359. package/dist/src/utils/retry.js.map +1 -1
  1360. package/dist/src/utils/retry.test.js +70 -3
  1361. package/dist/src/utils/retry.test.js.map +1 -1
  1362. package/dist/src/utils/safeJsonStringify.js +1 -0
  1363. package/dist/src/utils/safeJsonStringify.js.map +1 -1
  1364. package/dist/src/utils/schemaValidator.d.ts +8 -1
  1365. package/dist/src/utils/schemaValidator.js +78 -11
  1366. package/dist/src/utils/schemaValidator.js.map +1 -1
  1367. package/dist/src/utils/schemaValidator.test.js +77 -0
  1368. package/dist/src/utils/schemaValidator.test.js.map +1 -1
  1369. package/dist/src/utils/security.d.ts +16 -0
  1370. package/dist/src/utils/security.js +91 -0
  1371. package/dist/src/utils/security.js.map +1 -0
  1372. package/dist/src/utils/security.test.d.ts +1 -0
  1373. package/dist/src/utils/security.test.js +121 -0
  1374. package/dist/src/utils/security.test.js.map +1 -0
  1375. package/dist/src/utils/sessionUtils.d.ts +14 -0
  1376. package/dist/src/utils/sessionUtils.js +122 -0
  1377. package/dist/src/utils/sessionUtils.js.map +1 -0
  1378. package/dist/src/utils/sessionUtils.test.d.ts +1 -0
  1379. package/dist/src/utils/sessionUtils.test.js +171 -0
  1380. package/dist/src/utils/sessionUtils.test.js.map +1 -0
  1381. package/dist/src/utils/shell-utils.d.ts +14 -0
  1382. package/dist/src/utils/shell-utils.integration.test.d.ts +1 -0
  1383. package/dist/src/utils/shell-utils.integration.test.js +58 -0
  1384. package/dist/src/utils/shell-utils.integration.test.js.map +1 -0
  1385. package/dist/src/utils/shell-utils.js +191 -30
  1386. package/dist/src/utils/shell-utils.js.map +1 -1
  1387. package/dist/src/utils/shell-utils.test.js +108 -1
  1388. package/dist/src/utils/shell-utils.test.js.map +1 -1
  1389. package/dist/src/utils/summarizer.js +2 -1
  1390. package/dist/src/utils/summarizer.js.map +1 -1
  1391. package/dist/src/utils/terminal.d.ts +4 -0
  1392. package/dist/src/utils/terminal.js +12 -0
  1393. package/dist/src/utils/terminal.js.map +1 -1
  1394. package/dist/src/utils/terminalSerializer.d.ts +1 -1
  1395. package/dist/src/utils/terminalSerializer.js +25 -13
  1396. package/dist/src/utils/terminalSerializer.js.map +1 -1
  1397. package/dist/src/utils/testUtils.js +1 -0
  1398. package/dist/src/utils/testUtils.js.map +1 -1
  1399. package/dist/src/utils/textUtils.d.ts +14 -0
  1400. package/dist/src/utils/textUtils.js +23 -0
  1401. package/dist/src/utils/textUtils.js.map +1 -1
  1402. package/dist/src/utils/textUtils.test.js +18 -1
  1403. package/dist/src/utils/textUtils.test.js.map +1 -1
  1404. package/dist/src/utils/tokenCalculation.d.ts +2 -2
  1405. package/dist/src/utils/tokenCalculation.js +87 -21
  1406. package/dist/src/utils/tokenCalculation.js.map +1 -1
  1407. package/dist/src/utils/tokenCalculation.test.js +189 -76
  1408. package/dist/src/utils/tokenCalculation.test.js.map +1 -1
  1409. package/dist/src/utils/tool-utils.d.ts +26 -0
  1410. package/dist/src/utils/tool-utils.js +36 -0
  1411. package/dist/src/utils/tool-utils.js.map +1 -1
  1412. package/dist/src/utils/tool-utils.test.js +73 -3
  1413. package/dist/src/utils/tool-utils.test.js.map +1 -1
  1414. package/dist/src/utils/toolCallContext.d.ts +35 -0
  1415. package/dist/src/utils/toolCallContext.js +29 -0
  1416. package/dist/src/utils/toolCallContext.js.map +1 -0
  1417. package/dist/src/utils/toolCallContext.test.d.ts +6 -0
  1418. package/dist/src/utils/toolCallContext.test.js +68 -0
  1419. package/dist/src/utils/toolCallContext.test.js.map +1 -0
  1420. package/dist/src/utils/userAccountManager.js +1 -0
  1421. package/dist/src/utils/userAccountManager.js.map +1 -1
  1422. package/dist/src/utils/userAccountManager.test.js +5 -5
  1423. package/dist/src/utils/userAccountManager.test.js.map +1 -1
  1424. package/dist/src/utils/version.d.ts +2 -0
  1425. package/dist/src/utils/version.js +14 -3
  1426. package/dist/src/utils/version.js.map +1 -1
  1427. package/dist/src/utils/version.test.js +15 -1
  1428. package/dist/src/utils/version.test.js.map +1 -1
  1429. package/dist/src/utils/workspaceContext.d.ts +28 -0
  1430. package/dist/src/utils/workspaceContext.js +74 -9
  1431. package/dist/src/utils/workspaceContext.js.map +1 -1
  1432. package/dist/src/utils/workspaceContext.test.js +56 -1
  1433. package/dist/src/utils/workspaceContext.test.js.map +1 -1
  1434. package/dist/src/voice/responseFormatter.d.ts +38 -0
  1435. package/dist/src/voice/responseFormatter.js +130 -0
  1436. package/dist/src/voice/responseFormatter.js.map +1 -0
  1437. package/dist/src/voice/responseFormatter.test.d.ts +6 -0
  1438. package/dist/src/voice/responseFormatter.test.js +214 -0
  1439. package/dist/src/voice/responseFormatter.test.js.map +1 -0
  1440. package/dist/tsconfig.tsbuildinfo +1 -1
  1441. package/package.json +25 -15
  1442. package/dist/docs/CONTRIBUTING.md +0 -546
  1443. package/dist/src/agents/executor.d.ts +0 -114
  1444. package/dist/src/agents/executor.js +0 -779
  1445. package/dist/src/agents/executor.js.map +0 -1
  1446. package/dist/src/agents/executor.test.js +0 -1362
  1447. package/dist/src/agents/executor.test.js.map +0 -1
  1448. package/dist/src/agents/invocation.d.ts +0 -46
  1449. package/dist/src/agents/invocation.js +0 -102
  1450. package/dist/src/agents/invocation.js.map +0 -1
  1451. package/dist/src/agents/invocation.test.js +0 -215
  1452. package/dist/src/agents/invocation.test.js.map +0 -1
  1453. package/dist/src/core/subagent.d.ts +0 -236
  1454. package/dist/src/core/subagent.js +0 -482
  1455. package/dist/src/core/subagent.js.map +0 -1
  1456. package/dist/src/core/subagent.test.js +0 -530
  1457. package/dist/src/core/subagent.test.js.map +0 -1
  1458. package/dist/src/tools/smart-edit.d.ts +0 -78
  1459. package/dist/src/tools/smart-edit.js +0 -717
  1460. package/dist/src/tools/smart-edit.js.map +0 -1
  1461. package/dist/src/tools/smart-edit.test.js +0 -592
  1462. package/dist/src/tools/smart-edit.test.js.map +0 -1
  1463. /package/dist/src/agents/{executor.test.d.ts → agentLoader.test.d.ts} +0 -0
  1464. /package/dist/src/agents/{invocation.test.d.ts → cli-help-agent.test.d.ts} +0 -0
  1465. /package/dist/src/{core/subagent.test.d.ts → availability/fallbackIntegration.test.d.ts} +0 -0
  1466. /package/dist/src/{tools/smart-edit.test.d.ts → code_assist/admin/admin_controls.test.d.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * Copyright 2025 Google LLC
3
+ * Copyright 2026 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
@@ -9,10 +9,12 @@ import { ExperimentFlags } from '../code_assist/experiments/flagNames.js';
9
9
  import { debugLogger } from '../utils/debugLogger.js';
10
10
  import { ApprovalMode } from '../policy/types.js';
11
11
  import { HookType, HookEventName } from '../hooks/types.js';
12
+ import { FileDiscoveryService } from '../services/fileDiscoveryService.js';
12
13
  import * as path from 'node:path';
14
+ import * as fs from 'node:fs';
13
15
  import { setGeminiMdFilename as mockSetGeminiMdFilename } from '../tools/memoryTool.js';
14
16
  import { DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT, } from '../telemetry/index.js';
15
- import { AuthType, createContentGeneratorConfig, } from '../core/contentGenerator.js';
17
+ import { AuthType, createContentGenerator, createContentGeneratorConfig, } from '../core/contentGenerator.js';
16
18
  import { GeminiClient } from '../core/client.js';
17
19
  import { GitService } from '../services/gitService.js';
18
20
  import { ShellTool } from '../tools/shell.js';
@@ -24,7 +26,8 @@ import { RipgrepFallbackEvent } from '../telemetry/types.js';
24
26
  import { ToolRegistry } from '../tools/tool-registry.js';
25
27
  import { ACTIVATE_SKILL_TOOL_NAME } from '../tools/tool-names.js';
26
28
  import { DEFAULT_MODEL_CONFIGS } from './defaultModelConfigs.js';
27
- import { DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_MODEL_AUTO, PREVIEW_GEMINI_MODEL, PREVIEW_GEMINI_MODEL_AUTO, } from './models.js';
29
+ import { DEFAULT_GEMINI_MODEL } from './models.js';
30
+ import { Storage } from './storage.js';
28
31
  vi.mock('fs', async (importOriginal) => {
29
32
  const actual = await importOriginal();
30
33
  return {
@@ -85,6 +88,8 @@ vi.mock('../core/client.js', () => ({
85
88
  initialize: vi.fn().mockResolvedValue(undefined),
86
89
  stripThoughtsFromHistory: vi.fn(),
87
90
  isInitialized: vi.fn().mockReturnValue(false),
91
+ setTools: vi.fn().mockResolvedValue(undefined),
92
+ updateSystemInstruction: vi.fn(),
88
93
  })),
89
94
  }));
90
95
  vi.mock('../telemetry/index.js', async (importOriginal) => {
@@ -109,6 +114,7 @@ vi.mock('../services/gitService.js', () => {
109
114
  GitServiceMock.prototype.initialize = vi.fn();
110
115
  return { GitService: GitServiceMock };
111
116
  });
117
+ vi.mock('../services/fileDiscoveryService.js');
112
118
  vi.mock('../ide/ide-client.js', () => ({
113
119
  IdeClient: {
114
120
  getInstance: vi.fn().mockResolvedValue({
@@ -125,8 +131,8 @@ vi.mock('../agents/registry.js', () => {
125
131
  AgentRegistryMock.prototype.getDefinition = vi.fn();
126
132
  return { AgentRegistry: AgentRegistryMock };
127
133
  });
128
- vi.mock('../agents/delegate-to-agent-tool.js', () => ({
129
- DelegateToAgentTool: vi.fn(),
134
+ vi.mock('../agents/subagent-tool.js', () => ({
135
+ SubagentTool: vi.fn(),
130
136
  }));
131
137
  vi.mock('../resources/resource-registry.js', () => ({
132
138
  ResourceRegistry: vi.fn(),
@@ -135,21 +141,38 @@ const mockCoreEvents = vi.hoisted(() => ({
135
141
  emitFeedback: vi.fn(),
136
142
  emitModelChanged: vi.fn(),
137
143
  emitConsoleLog: vi.fn(),
144
+ emitQuotaChanged: vi.fn(),
145
+ on: vi.fn(),
138
146
  }));
139
147
  const mockSetGlobalProxy = vi.hoisted(() => vi.fn());
140
- vi.mock('../utils/events.js', () => ({
141
- coreEvents: mockCoreEvents,
142
- }));
148
+ vi.mock('../utils/events.js', async (importOriginal) => {
149
+ const actual = await importOriginal();
150
+ return {
151
+ ...actual,
152
+ coreEvents: mockCoreEvents,
153
+ };
154
+ });
143
155
  vi.mock('../utils/fetch.js', () => ({
144
156
  setGlobalProxy: mockSetGlobalProxy,
145
157
  }));
146
- vi.mock('../services/contextManager.js');
158
+ vi.mock('../services/contextManager.js', () => ({
159
+ ContextManager: vi.fn().mockImplementation(() => ({
160
+ refresh: vi.fn(),
161
+ getGlobalMemory: vi.fn().mockReturnValue(''),
162
+ getExtensionMemory: vi.fn().mockReturnValue(''),
163
+ getEnvironmentMemory: vi.fn().mockReturnValue(''),
164
+ getLoadedPaths: vi.fn().mockReturnValue(new Set()),
165
+ })),
166
+ }));
147
167
  import { BaseLlmClient } from '../core/baseLlmClient.js';
148
168
  import { tokenLimit } from '../core/tokenLimits.js';
149
169
  import { uiTelemetryService } from '../telemetry/index.js';
150
170
  import { getCodeAssistServer } from '../code_assist/codeAssist.js';
151
171
  import { getExperiments } from '../code_assist/experiments/experiments.js';
152
172
  import { ContextManager } from '../services/contextManager.js';
173
+ import { UserTierId } from '../code_assist/types.js';
174
+ import { ExitPlanModeTool } from '../tools/exit-plan-mode.js';
175
+ import { EnterPlanModeTool } from '../tools/enter-plan-mode.js';
153
176
  vi.mock('../core/baseLlmClient.js');
154
177
  vi.mock('../core/tokenLimits.js', () => ({
155
178
  tokenLimit: vi.fn(),
@@ -185,11 +208,15 @@ describe('Server Config (config.ts)', () => {
185
208
  beforeEach(() => {
186
209
  // Reset mocks if necessary
187
210
  vi.clearAllMocks();
211
+ vi.mocked(getExperiments).mockResolvedValue({
212
+ experimentIds: [],
213
+ flags: {},
214
+ });
188
215
  });
189
216
  describe('initialize', () => {
190
217
  it('should throw an error if checkpointing is enabled and GitService fails', async () => {
191
218
  const gitError = new Error('Git is not installed');
192
- GitService.prototype.initialize.mockRejectedValue(gitError);
219
+ vi.mocked(GitService.prototype.initialize).mockRejectedValue(gitError);
193
220
  const config = new Config({
194
221
  ...baseParams,
195
222
  checkpointing: true,
@@ -198,20 +225,71 @@ describe('Server Config (config.ts)', () => {
198
225
  });
199
226
  it('should not throw an error if checkpointing is disabled and GitService fails', async () => {
200
227
  const gitError = new Error('Git is not installed');
201
- GitService.prototype.initialize.mockRejectedValue(gitError);
228
+ vi.mocked(GitService.prototype.initialize).mockRejectedValue(gitError);
202
229
  const config = new Config({
203
230
  ...baseParams,
204
231
  checkpointing: false,
205
232
  });
206
233
  await expect(config.initialize()).resolves.toBeUndefined();
207
234
  });
208
- it('should throw an error if initialized more than once', async () => {
235
+ it('should deduplicate multiple calls to initialize', async () => {
209
236
  const config = new Config({
210
237
  ...baseParams,
211
238
  checkpointing: false,
212
239
  });
213
- await expect(config.initialize()).resolves.toBeUndefined();
214
- await expect(config.initialize()).rejects.toThrow('Config was already initialized');
240
+ const storageSpy = vi.spyOn(Storage.prototype, 'initialize');
241
+ await Promise.all([
242
+ config.initialize(),
243
+ config.initialize(),
244
+ config.initialize(),
245
+ ]);
246
+ expect(storageSpy).toHaveBeenCalledTimes(1);
247
+ });
248
+ it('should await MCP initialization in non-interactive mode', async () => {
249
+ const config = new Config({
250
+ ...baseParams,
251
+ checkpointing: false,
252
+ // interactive defaults to false
253
+ });
254
+ const { McpClientManager } = await import('../tools/mcp-client-manager.js');
255
+ let mcpStarted = false;
256
+ vi.mocked(McpClientManager).mockImplementation(() => ({
257
+ startConfiguredMcpServers: vi.fn().mockImplementation(async () => {
258
+ await new Promise((resolve) => setTimeout(resolve, 50));
259
+ mcpStarted = true;
260
+ }),
261
+ getMcpInstructions: vi.fn(),
262
+ }));
263
+ await config.initialize();
264
+ // Should wait for MCP to finish
265
+ expect(mcpStarted).toBe(true);
266
+ });
267
+ it('should not await MCP initialization in interactive mode', async () => {
268
+ const config = new Config({
269
+ ...baseParams,
270
+ checkpointing: false,
271
+ interactive: true,
272
+ });
273
+ const { McpClientManager } = await import('../tools/mcp-client-manager.js');
274
+ let mcpStarted = false;
275
+ let resolveMcp;
276
+ const mcpPromise = new Promise((resolve) => {
277
+ resolveMcp = resolve;
278
+ });
279
+ McpClientManager.mockImplementation(() => ({
280
+ startConfiguredMcpServers: vi.fn().mockImplementation(async () => {
281
+ await mcpPromise;
282
+ mcpStarted = true;
283
+ }),
284
+ getMcpInstructions: vi.fn(),
285
+ }));
286
+ await config.initialize();
287
+ // Should return immediately, before MCP finishes
288
+ expect(mcpStarted).toBe(false);
289
+ // Now let it finish
290
+ resolveMcp(undefined);
291
+ await new Promise((resolve) => setTimeout(resolve, 0));
292
+ expect(mcpStarted).toBe(true);
215
293
  });
216
294
  describe('getCompressionThreshold', () => {
217
295
  it('should return the local compression threshold if it is set', async () => {
@@ -305,98 +383,40 @@ describe('Server Config (config.ts)', () => {
305
383
  const config = new Config(baseParams);
306
384
  const service = config.getModelAvailabilityService();
307
385
  const spy = vi.spyOn(service, 'reset');
308
- vi.mocked(createContentGeneratorConfig).mockImplementation(async (_, authType) => ({ authType }));
386
+ vi.mocked(createContentGeneratorConfig).mockImplementation(async (_, authType) => ({
387
+ authType,
388
+ }));
309
389
  await config.refreshAuth(AuthType.USE_GEMINI);
310
390
  expect(spy).toHaveBeenCalled();
311
391
  });
312
392
  it('should strip thoughts when switching from GenAI to Vertex', async () => {
313
393
  const config = new Config(baseParams);
314
- vi.mocked(createContentGeneratorConfig).mockImplementation(async (_, authType) => ({ authType }));
394
+ vi.mocked(createContentGeneratorConfig).mockImplementation(async (_, authType) => ({
395
+ authType,
396
+ }));
315
397
  await config.refreshAuth(AuthType.USE_GEMINI);
316
398
  await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
317
399
  expect(config.getGeminiClient().stripThoughtsFromHistory).toHaveBeenCalledWith();
318
400
  });
319
401
  it('should strip thoughts when switching from GenAI to Vertex AI', async () => {
320
402
  const config = new Config(baseParams);
321
- vi.mocked(createContentGeneratorConfig).mockImplementation(async (_, authType) => ({ authType }));
403
+ vi.mocked(createContentGeneratorConfig).mockImplementation(async (_, authType) => ({
404
+ authType,
405
+ }));
322
406
  await config.refreshAuth(AuthType.USE_GEMINI);
323
407
  await config.refreshAuth(AuthType.USE_VERTEX_AI);
324
408
  expect(config.getGeminiClient().stripThoughtsFromHistory).toHaveBeenCalledWith();
325
409
  });
326
410
  it('should not strip thoughts when switching from Vertex to GenAI', async () => {
327
411
  const config = new Config(baseParams);
328
- vi.mocked(createContentGeneratorConfig).mockImplementation(async (_, authType) => ({ authType }));
412
+ vi.mocked(createContentGeneratorConfig).mockImplementation(async (_, authType) => ({
413
+ authType,
414
+ }));
329
415
  await config.refreshAuth(AuthType.USE_VERTEX_AI);
330
416
  await config.refreshAuth(AuthType.USE_GEMINI);
331
417
  expect(config.getGeminiClient().stripThoughtsFromHistory).not.toHaveBeenCalledWith();
332
418
  });
333
419
  });
334
- describe('Preview Features Logic in refreshAuth', () => {
335
- beforeEach(() => {
336
- // Set up default mock behavior for these functions before each test
337
- vi.mocked(getCodeAssistServer).mockReturnValue(undefined);
338
- vi.mocked(getExperiments).mockResolvedValue({
339
- flags: {},
340
- experimentIds: [],
341
- });
342
- });
343
- it('should enable preview features for Google auth when remote flag is true', async () => {
344
- // Override the default mock for this specific test
345
- vi.mocked(getCodeAssistServer).mockReturnValue({}); // Simulate Google auth by returning a truthy value
346
- vi.mocked(getExperiments).mockResolvedValue({
347
- flags: {
348
- [ExperimentFlags.ENABLE_PREVIEW]: { boolValue: true },
349
- },
350
- experimentIds: [],
351
- });
352
- const config = new Config({ ...baseParams, previewFeatures: undefined });
353
- await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
354
- expect(config.getPreviewFeatures()).toBe(true);
355
- });
356
- it('should disable preview features for Google auth when remote flag is false', async () => {
357
- // Override the default mock
358
- vi.mocked(getCodeAssistServer).mockReturnValue({});
359
- vi.mocked(getExperiments).mockResolvedValue({
360
- flags: {
361
- [ExperimentFlags.ENABLE_PREVIEW]: { boolValue: false },
362
- },
363
- experimentIds: [],
364
- });
365
- const config = new Config({ ...baseParams, previewFeatures: undefined });
366
- await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
367
- expect(config.getPreviewFeatures()).toBe(undefined);
368
- });
369
- it('should disable preview features for Google auth when remote flag is missing', async () => {
370
- // Override the default mock for getCodeAssistServer, the getExperiments mock is already correct
371
- vi.mocked(getCodeAssistServer).mockReturnValue({});
372
- const config = new Config({ ...baseParams, previewFeatures: undefined });
373
- await config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
374
- expect(config.getPreviewFeatures()).toBe(undefined);
375
- });
376
- it('should not change preview features or model if it is already set to true', async () => {
377
- const initialModel = 'some-other-model';
378
- const config = new Config({
379
- ...baseParams,
380
- previewFeatures: true,
381
- model: initialModel,
382
- });
383
- // It doesn't matter which auth method we use here, the logic should exit early
384
- await config.refreshAuth(AuthType.USE_GEMINI);
385
- expect(config.getPreviewFeatures()).toBe(true);
386
- expect(config.getModel()).toBe(initialModel);
387
- });
388
- it('should not change preview features or model if it is already set to false', async () => {
389
- const initialModel = 'some-other-model';
390
- const config = new Config({
391
- ...baseParams,
392
- previewFeatures: false,
393
- model: initialModel,
394
- });
395
- await config.refreshAuth(AuthType.USE_GEMINI);
396
- expect(config.getPreviewFeatures()).toBe(false);
397
- expect(config.getModel()).toBe(initialModel);
398
- });
399
- });
400
420
  it('Config constructor should store userMemory correctly', () => {
401
421
  const config = new Config(baseParams);
402
422
  expect(config.getUserMemory()).toBe(USER_MEMORY);
@@ -436,6 +456,28 @@ describe('Server Config (config.ts)', () => {
436
456
  const config = new Config(paramsWithFileFiltering);
437
457
  expect(config.getFileFilteringRespectGitIgnore()).toBe(false);
438
458
  });
459
+ it('should set customIgnoreFilePaths from params', () => {
460
+ const params = {
461
+ ...baseParams,
462
+ fileFiltering: {
463
+ customIgnoreFilePaths: ['/path/to/ignore/file'],
464
+ },
465
+ };
466
+ const config = new Config(params);
467
+ expect(config.getCustomIgnoreFilePaths()).toStrictEqual([
468
+ '/path/to/ignore/file',
469
+ ]);
470
+ });
471
+ it('should set customIgnoreFilePaths to empty array if not provided', () => {
472
+ const params = {
473
+ ...baseParams,
474
+ fileFiltering: {
475
+ respectGitIgnore: true,
476
+ },
477
+ };
478
+ const config = new Config(params);
479
+ expect(config.getCustomIgnoreFilePaths()).toStrictEqual([]);
480
+ });
439
481
  it('should initialize WorkspaceContext with includeDirectories', () => {
440
482
  const includeDirectories = ['dir1', 'dir2'];
441
483
  const paramsWithIncludeDirs = {
@@ -502,6 +544,23 @@ describe('Server Config (config.ts)', () => {
502
544
  const fileService = config.getFileService();
503
545
  expect(fileService).toBeDefined();
504
546
  });
547
+ it('should pass file filtering options to FileDiscoveryService', () => {
548
+ const configParams = {
549
+ ...baseParams,
550
+ fileFiltering: {
551
+ respectGitIgnore: false,
552
+ respectGeminiIgnore: false,
553
+ customIgnoreFilePaths: ['.myignore'],
554
+ },
555
+ };
556
+ const config = new Config(configParams);
557
+ config.getFileService();
558
+ expect(FileDiscoveryService).toHaveBeenCalledWith(path.resolve(TARGET_DIR), {
559
+ respectGitIgnore: false,
560
+ respectGeminiIgnore: false,
561
+ customIgnoreFilePaths: ['.myignore'],
562
+ });
563
+ });
505
564
  describe('Usage Statistics', () => {
506
565
  it('defaults usage statistics to enabled if not specified', () => {
507
566
  const config = new Config({
@@ -661,6 +720,20 @@ describe('Server Config (config.ts)', () => {
661
720
  expect(config.getUseWriteTodos()).toBe(true);
662
721
  });
663
722
  });
723
+ describe('Event Driven Scheduler Configuration', () => {
724
+ it('should default enableEventDrivenScheduler to true when not provided', () => {
725
+ const config = new Config(baseParams);
726
+ expect(config.isEventDrivenSchedulerEnabled()).toBe(true);
727
+ });
728
+ it('should set enableEventDrivenScheduler to false when provided as false', () => {
729
+ const params = {
730
+ ...baseParams,
731
+ enableEventDrivenScheduler: false,
732
+ };
733
+ const config = new Config(params);
734
+ expect(config.isEventDrivenSchedulerEnabled()).toBe(false);
735
+ });
736
+ });
664
737
  describe('Shell Tool Inactivity Timeout', () => {
665
738
  it('should default to 300000ms (300 seconds) when not provided', () => {
666
739
  const config = new Config(baseParams);
@@ -714,10 +787,14 @@ describe('Server Config (config.ts)', () => {
714
787
  const wasReadFileToolRegistered = registerToolMock.mock.calls.some((call) => call[0] instanceof vi.mocked(ReadFileTool));
715
788
  expect(wasReadFileToolRegistered).toBe(false);
716
789
  });
717
- it('should register subagents as tools when codebaseInvestigatorSettings.enabled is true', async () => {
790
+ it('should register subagents as tools when agents.overrides.codebase_investigator.enabled is true', async () => {
718
791
  const params = {
719
792
  ...baseParams,
720
- codebaseInvestigatorSettings: { enabled: true },
793
+ agents: {
794
+ overrides: {
795
+ codebase_investigator: { enabled: true },
796
+ },
797
+ },
721
798
  };
722
799
  const config = new Config(params);
723
800
  const mockAgentDefinition = {
@@ -727,29 +804,57 @@ describe('Server Config (config.ts)', () => {
727
804
  };
728
805
  const AgentRegistryMock = (await vi.importMock('../agents/registry.js')).AgentRegistry;
729
806
  AgentRegistryMock.prototype.getDefinition.mockReturnValue(mockAgentDefinition);
730
- const DelegateToAgentToolMock = (await vi.importMock('../agents/delegate-to-agent-tool.js')).DelegateToAgentTool;
807
+ AgentRegistryMock.prototype.getAllDefinitions.mockReturnValue([
808
+ mockAgentDefinition,
809
+ ]);
810
+ const SubAgentToolMock = (await vi.importMock('../agents/subagent-tool.js')).SubagentTool;
731
811
  await config.initialize();
732
812
  const registerToolMock = (await vi.importMock('../tools/tool-registry')).ToolRegistry.prototype.registerTool;
733
- expect(DelegateToAgentToolMock).toHaveBeenCalledTimes(1);
734
- expect(DelegateToAgentToolMock).toHaveBeenCalledWith(expect.anything(), // AgentRegistry
813
+ expect(SubAgentToolMock).toHaveBeenCalledTimes(1);
814
+ expect(SubAgentToolMock).toHaveBeenCalledWith(expect.anything(), // AgentRegistry
735
815
  config, expect.anything());
736
816
  const calls = registerToolMock.mock.calls;
737
- const registeredWrappers = calls.filter((call) => call[0] instanceof DelegateToAgentToolMock);
817
+ const registeredWrappers = calls.filter((call) => call[0] instanceof SubAgentToolMock);
738
818
  expect(registeredWrappers).toHaveLength(1);
739
819
  });
740
- it('should not register subagents as tools when codebaseInvestigatorSettings.enabled is false', async () => {
820
+ it('should register subagents as tools even when they are not in allowedTools', async () => {
741
821
  const params = {
742
822
  ...baseParams,
743
- codebaseInvestigatorSettings: { enabled: false },
823
+ allowedTools: ['read_file'], // codebase-investigator is NOT here
824
+ agents: {
825
+ overrides: {
826
+ codebase_investigator: { enabled: true },
827
+ },
828
+ },
744
829
  };
745
830
  const config = new Config(params);
746
- const DelegateToAgentToolMock = (await vi.importMock('../agents/delegate-to-agent-tool.js')).DelegateToAgentTool;
831
+ const mockAgentDefinition = {
832
+ name: 'codebase-investigator',
833
+ description: 'Agent 1',
834
+ instructions: 'Inst 1',
835
+ };
836
+ const AgentRegistryMock = (await vi.importMock('../agents/registry.js')).AgentRegistry;
837
+ AgentRegistryMock.prototype.getAllDefinitions.mockReturnValue([
838
+ mockAgentDefinition,
839
+ ]);
840
+ const SubAgentToolMock = (await vi.importMock('../agents/subagent-tool.js')).SubagentTool;
747
841
  await config.initialize();
748
- expect(DelegateToAgentToolMock).not.toHaveBeenCalled();
842
+ expect(SubAgentToolMock).toHaveBeenCalled();
749
843
  });
750
- it('should not set default codebase investigator model in config (defaults in registry)', () => {
751
- const config = new Config(baseParams);
752
- expect(config.getCodebaseInvestigatorSettings()?.model).toBeUndefined();
844
+ it('should not register subagents as tools when agents are disabled', async () => {
845
+ const params = {
846
+ ...baseParams,
847
+ agents: {
848
+ overrides: {
849
+ codebase_investigator: { enabled: false },
850
+ cli_help: { enabled: false },
851
+ },
852
+ },
853
+ };
854
+ const config = new Config(params);
855
+ const SubAgentToolMock = (await vi.importMock('../agents/subagent-tool.js')).SubagentTool;
856
+ await config.initialize();
857
+ expect(SubAgentToolMock).not.toHaveBeenCalled();
753
858
  });
754
859
  describe('with minified tool class names', () => {
755
860
  beforeEach(() => {
@@ -796,16 +901,16 @@ describe('Server Config (config.ts)', () => {
796
901
  vi.mocked(tokenLimit).mockReturnValue(32000);
797
902
  vi.mocked(uiTelemetryService.getLastPromptTokenCount).mockReturnValue(1000);
798
903
  // 4 * (32000 - 1000) = 4 * 31000 = 124000
799
- // default is 4_000_000
800
- expect(config.getTruncateToolOutputThreshold()).toBe(124000);
904
+ // default is 40_000, so min(124000, 40000) = 40000
905
+ expect(config.getTruncateToolOutputThreshold()).toBe(40_000);
801
906
  });
802
907
  it('should return the default threshold when the calculated value is larger', () => {
803
908
  const config = new Config(baseParams);
804
909
  vi.mocked(tokenLimit).mockReturnValue(2_000_000);
805
910
  vi.mocked(uiTelemetryService.getLastPromptTokenCount).mockReturnValue(500_000);
806
911
  // 4 * (2_000_000 - 500_000) = 4 * 1_500_000 = 6_000_000
807
- // default is 4_000_000
808
- expect(config.getTruncateToolOutputThreshold()).toBe(4_000_000);
912
+ // default is 40_000
913
+ expect(config.getTruncateToolOutputThreshold()).toBe(40_000);
809
914
  });
810
915
  it('should use a custom truncateToolOutputThreshold if provided', () => {
811
916
  const customParams = {
@@ -903,15 +1008,49 @@ describe('setApprovalMode with folder trust', () => {
903
1008
  expect(() => config.setApprovalMode(ApprovalMode.AUTO_EDIT)).not.toThrow();
904
1009
  expect(() => config.setApprovalMode(ApprovalMode.DEFAULT)).not.toThrow();
905
1010
  });
1011
+ it('should update system instruction when entering Plan mode', () => {
1012
+ const config = new Config(baseParams);
1013
+ vi.spyOn(config, 'isTrustedFolder').mockReturnValue(true);
1014
+ vi.spyOn(config, 'getToolRegistry').mockReturnValue({
1015
+ getTool: vi.fn().mockReturnValue(undefined),
1016
+ unregisterTool: vi.fn(),
1017
+ registerTool: vi.fn(),
1018
+ });
1019
+ const updateSpy = vi.spyOn(config, 'updateSystemInstructionIfInitialized');
1020
+ config.setApprovalMode(ApprovalMode.PLAN);
1021
+ expect(updateSpy).toHaveBeenCalled();
1022
+ });
1023
+ it('should update system instruction when leaving Plan mode', () => {
1024
+ const config = new Config({
1025
+ ...baseParams,
1026
+ approvalMode: ApprovalMode.PLAN,
1027
+ });
1028
+ vi.spyOn(config, 'isTrustedFolder').mockReturnValue(true);
1029
+ vi.spyOn(config, 'getToolRegistry').mockReturnValue({
1030
+ getTool: vi.fn().mockReturnValue(undefined),
1031
+ unregisterTool: vi.fn(),
1032
+ registerTool: vi.fn(),
1033
+ });
1034
+ const updateSpy = vi.spyOn(config, 'updateSystemInstructionIfInitialized');
1035
+ config.setApprovalMode(ApprovalMode.DEFAULT);
1036
+ expect(updateSpy).toHaveBeenCalled();
1037
+ });
1038
+ it('should not update system instruction when switching between non-Plan modes', () => {
1039
+ const config = new Config(baseParams);
1040
+ vi.spyOn(config, 'isTrustedFolder').mockReturnValue(true);
1041
+ const updateSpy = vi.spyOn(config, 'updateSystemInstructionIfInitialized');
1042
+ config.setApprovalMode(ApprovalMode.AUTO_EDIT);
1043
+ expect(updateSpy).not.toHaveBeenCalled();
1044
+ });
906
1045
  describe('registerCoreTools', () => {
907
1046
  beforeEach(() => {
908
1047
  vi.clearAllMocks();
909
1048
  });
910
1049
  it('should register RipGrepTool when useRipgrep is true and it is available', async () => {
911
- canUseRipgrep.mockResolvedValue(true);
1050
+ vi.mocked(canUseRipgrep).mockResolvedValue(true);
912
1051
  const config = new Config({ ...baseParams, useRipgrep: true });
913
1052
  await config.initialize();
914
- const calls = ToolRegistry.prototype.registerTool.mock.calls;
1053
+ const calls = vi.mocked(ToolRegistry.prototype.registerTool).mock.calls;
915
1054
  const wasRipGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(RipGrepTool));
916
1055
  const wasGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
917
1056
  expect(wasRipGrepRegistered).toBe(true);
@@ -919,36 +1058,36 @@ describe('setApprovalMode with folder trust', () => {
919
1058
  expect(logRipgrepFallback).not.toHaveBeenCalled();
920
1059
  });
921
1060
  it('should register GrepTool as a fallback when useRipgrep is true but it is not available', async () => {
922
- canUseRipgrep.mockResolvedValue(false);
1061
+ vi.mocked(canUseRipgrep).mockResolvedValue(false);
923
1062
  const config = new Config({ ...baseParams, useRipgrep: true });
924
1063
  await config.initialize();
925
- const calls = ToolRegistry.prototype.registerTool.mock.calls;
1064
+ const calls = vi.mocked(ToolRegistry.prototype.registerTool).mock.calls;
926
1065
  const wasRipGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(RipGrepTool));
927
1066
  const wasGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
928
1067
  expect(wasRipGrepRegistered).toBe(false);
929
1068
  expect(wasGrepRegistered).toBe(true);
930
1069
  expect(logRipgrepFallback).toHaveBeenCalledWith(config, expect.any(RipgrepFallbackEvent));
931
- const event = logRipgrepFallback.mock.calls[0][1];
1070
+ const event = vi.mocked(logRipgrepFallback).mock.calls[0][1];
932
1071
  expect(event.error).toBeUndefined();
933
1072
  });
934
1073
  it('should register GrepTool as a fallback when canUseRipgrep throws an error', async () => {
935
1074
  const error = new Error('ripGrep check failed');
936
- canUseRipgrep.mockRejectedValue(error);
1075
+ vi.mocked(canUseRipgrep).mockRejectedValue(error);
937
1076
  const config = new Config({ ...baseParams, useRipgrep: true });
938
1077
  await config.initialize();
939
- const calls = ToolRegistry.prototype.registerTool.mock.calls;
1078
+ const calls = vi.mocked(ToolRegistry.prototype.registerTool).mock.calls;
940
1079
  const wasRipGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(RipGrepTool));
941
1080
  const wasGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
942
1081
  expect(wasRipGrepRegistered).toBe(false);
943
1082
  expect(wasGrepRegistered).toBe(true);
944
1083
  expect(logRipgrepFallback).toHaveBeenCalledWith(config, expect.any(RipgrepFallbackEvent));
945
- const event = logRipgrepFallback.mock.calls[0][1];
1084
+ const event = vi.mocked(logRipgrepFallback).mock.calls[0][1];
946
1085
  expect(event.error).toBe(String(error));
947
1086
  });
948
1087
  it('should register GrepTool when useRipgrep is false', async () => {
949
1088
  const config = new Config({ ...baseParams, useRipgrep: false });
950
1089
  await config.initialize();
951
- const calls = ToolRegistry.prototype.registerTool.mock.calls;
1090
+ const calls = vi.mocked(ToolRegistry.prototype.registerTool).mock.calls;
952
1091
  const wasRipGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(RipGrepTool));
953
1092
  const wasGrepRegistered = calls.some((call) => call[0] instanceof vi.mocked(GrepTool));
954
1093
  expect(wasRipGrepRegistered).toBe(false);
@@ -1069,7 +1208,6 @@ describe('Generation Config Merging (HACK)', () => {
1069
1208
  },
1070
1209
  };
1071
1210
  const config = new Config(params);
1072
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1073
1211
  const serviceConfig = config.modelConfigService.config;
1074
1212
  // Assert that the default aliases are present
1075
1213
  expect(serviceConfig.aliases).toEqual(DEFAULT_MODEL_CONFIGS.aliases);
@@ -1089,7 +1227,6 @@ describe('Generation Config Merging (HACK)', () => {
1089
1227
  },
1090
1228
  };
1091
1229
  const config = new Config(params);
1092
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1093
1230
  const serviceConfig = config.modelConfigService.config;
1094
1231
  // Assert that the user's aliases are present
1095
1232
  expect(serviceConfig.aliases).toEqual(userAliases);
@@ -1109,7 +1246,6 @@ describe('Generation Config Merging (HACK)', () => {
1109
1246
  },
1110
1247
  };
1111
1248
  const config = new Config(params);
1112
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1113
1249
  const serviceConfig = config.modelConfigService.config;
1114
1250
  // Assert that the user's aliases are used, not the defaults
1115
1251
  expect(serviceConfig.aliases).toEqual(userAliases);
@@ -1117,7 +1253,6 @@ describe('Generation Config Merging (HACK)', () => {
1117
1253
  it('should use default generation config if none is provided', () => {
1118
1254
  const params = { ...baseParams };
1119
1255
  const config = new Config(params);
1120
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1121
1256
  const serviceConfig = config.modelConfigService.config;
1122
1257
  // Assert that the full default config is used
1123
1258
  expect(serviceConfig).toEqual(DEFAULT_MODEL_CONFIGS);
@@ -1145,37 +1280,15 @@ describe('Config getHooks', () => {
1145
1280
  });
1146
1281
  it('should return the hooks configuration when provided', () => {
1147
1282
  const mockHooks = {
1148
- [HookEventName.BeforeTool]: [
1149
- {
1150
- matcher: 'write_file',
1151
- hooks: [
1152
- {
1153
- type: HookType.Command,
1154
- command: 'echo "test hook"',
1155
- timeout: 5000,
1156
- },
1157
- ],
1158
- },
1159
- ],
1160
- [HookEventName.AfterTool]: [
1283
+ BeforeTool: [
1161
1284
  {
1162
- hooks: [
1163
- {
1164
- type: HookType.Command,
1165
- command: './hooks/after-tool.sh',
1166
- timeout: 10000,
1167
- },
1168
- ],
1285
+ hooks: [{ type: HookType.Command, command: 'echo 1' }],
1169
1286
  },
1170
1287
  ],
1171
1288
  };
1172
- const config = new Config({
1173
- ...baseParams,
1174
- hooks: mockHooks,
1175
- });
1289
+ const config = new Config({ ...baseParams, hooks: mockHooks });
1176
1290
  const retrievedHooks = config.getHooks();
1177
1291
  expect(retrievedHooks).toEqual(mockHooks);
1178
- expect(retrievedHooks).toBe(mockHooks); // Should return the same reference
1179
1292
  });
1180
1293
  it('should return hooks with all supported event types', () => {
1181
1294
  const allEventHooks = {
@@ -1409,9 +1522,38 @@ describe('Availability Service Integration', () => {
1409
1522
  expect(spy).toHaveBeenCalled();
1410
1523
  });
1411
1524
  });
1525
+ describe('Hooks configuration', () => {
1526
+ const baseParams = {
1527
+ sessionId: 'test',
1528
+ targetDir: '.',
1529
+ debugMode: false,
1530
+ model: 'test-model',
1531
+ cwd: '.',
1532
+ disabledHooks: ['initial-hook'],
1533
+ };
1534
+ it('updateDisabledHooks should update the disabled list', () => {
1535
+ const config = new Config(baseParams);
1536
+ expect(config.getDisabledHooks()).toEqual(['initial-hook']);
1537
+ const newDisabled = ['new-hook-1', 'new-hook-2'];
1538
+ config.updateDisabledHooks(newDisabled);
1539
+ expect(config.getDisabledHooks()).toEqual(['new-hook-1', 'new-hook-2']);
1540
+ });
1541
+ it('updateDisabledHooks should only update disabled list and not definitions', () => {
1542
+ const initialHooks = {
1543
+ BeforeAgent: [
1544
+ {
1545
+ hooks: [{ type: HookType.Command, command: 'initial' }],
1546
+ },
1547
+ ],
1548
+ };
1549
+ const config = new Config({ ...baseParams, hooks: initialHooks });
1550
+ config.updateDisabledHooks(['some-hook']);
1551
+ expect(config.getDisabledHooks()).toEqual(['some-hook']);
1552
+ expect(config.getHooks()).toEqual(initialHooks);
1553
+ });
1554
+ });
1412
1555
  describe('Config Quota & Preview Model Access', () => {
1413
1556
  let config;
1414
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1415
1557
  let mockCodeAssistServer;
1416
1558
  const baseParams = {
1417
1559
  cwd: '/tmp',
@@ -1438,18 +1580,82 @@ describe('Config Quota & Preview Model Access', () => {
1438
1580
  describe('refreshUserQuota', () => {
1439
1581
  it('should update hasAccessToPreviewModel to true if quota includes preview model', async () => {
1440
1582
  mockCodeAssistServer.retrieveUserQuota.mockResolvedValue({
1441
- buckets: [{ modelId: PREVIEW_GEMINI_MODEL }],
1583
+ buckets: [
1584
+ {
1585
+ modelId: 'gemini-3-pro-preview',
1586
+ remainingAmount: '100',
1587
+ remainingFraction: 1.0,
1588
+ },
1589
+ ],
1590
+ });
1591
+ await config.refreshUserQuota();
1592
+ expect(config.getHasAccessToPreviewModel()).toBe(true);
1593
+ });
1594
+ it('should update hasAccessToPreviewModel to true if quota includes Gemini 3.1 preview model', async () => {
1595
+ mockCodeAssistServer.retrieveUserQuota.mockResolvedValue({
1596
+ buckets: [
1597
+ {
1598
+ modelId: 'gemini-3.1-pro-preview',
1599
+ remainingAmount: '100',
1600
+ remainingFraction: 1.0,
1601
+ },
1602
+ ],
1442
1603
  });
1443
1604
  await config.refreshUserQuota();
1444
1605
  expect(config.getHasAccessToPreviewModel()).toBe(true);
1445
1606
  });
1446
1607
  it('should update hasAccessToPreviewModel to false if quota does not include preview model', async () => {
1447
1608
  mockCodeAssistServer.retrieveUserQuota.mockResolvedValue({
1448
- buckets: [{ modelId: 'some-other-model' }],
1609
+ buckets: [
1610
+ {
1611
+ modelId: 'some-other-model',
1612
+ remainingAmount: '10',
1613
+ remainingFraction: 0.1,
1614
+ },
1615
+ ],
1449
1616
  });
1450
1617
  await config.refreshUserQuota();
1451
1618
  expect(config.getHasAccessToPreviewModel()).toBe(false);
1452
1619
  });
1620
+ it('should calculate pooled quota correctly for auto models', async () => {
1621
+ mockCodeAssistServer.retrieveUserQuota.mockResolvedValue({
1622
+ buckets: [
1623
+ {
1624
+ modelId: 'gemini-2.5-pro',
1625
+ remainingAmount: '10',
1626
+ remainingFraction: 0.2,
1627
+ },
1628
+ {
1629
+ modelId: 'gemini-2.5-flash',
1630
+ remainingAmount: '80',
1631
+ remainingFraction: 0.8,
1632
+ },
1633
+ ],
1634
+ });
1635
+ config.setModel('auto-gemini-2.5');
1636
+ await config.refreshUserQuota();
1637
+ const pooled = config.getPooledQuota();
1638
+ // Pro: 10 / 0.2 = 50 total.
1639
+ // Flash: 80 / 0.8 = 100 total.
1640
+ // Pooled: (10 + 80) / (50 + 100) = 90 / 150 = 0.6
1641
+ expect(pooled?.remaining).toBe(90);
1642
+ expect(pooled?.limit).toBe(150);
1643
+ expect((pooled?.remaining ?? 0) / (pooled?.limit ?? 1)).toBeCloseTo(0.6);
1644
+ });
1645
+ it('should return undefined pooled quota for non-auto models', async () => {
1646
+ mockCodeAssistServer.retrieveUserQuota.mockResolvedValue({
1647
+ buckets: [
1648
+ {
1649
+ modelId: 'gemini-2.5-pro',
1650
+ remainingAmount: '10',
1651
+ remainingFraction: 0.2,
1652
+ },
1653
+ ],
1654
+ });
1655
+ config.setModel('gemini-2.5-pro');
1656
+ await config.refreshUserQuota();
1657
+ expect(config.getPooledQuota()).toEqual({});
1658
+ });
1453
1659
  it('should update hasAccessToPreviewModel to false if buckets are undefined', async () => {
1454
1660
  mockCodeAssistServer.retrieveUserQuota.mockResolvedValue({});
1455
1661
  await config.refreshUserQuota();
@@ -1469,31 +1675,97 @@ describe('Config Quota & Preview Model Access', () => {
1469
1675
  expect(config.getHasAccessToPreviewModel()).toBe(false);
1470
1676
  });
1471
1677
  });
1472
- describe('setPreviewFeatures', () => {
1473
- it('should reset model to default auto if disabling preview features while using a preview model', () => {
1474
- config.setPreviewFeatures(true);
1475
- config.setModel(PREVIEW_GEMINI_MODEL);
1476
- config.setPreviewFeatures(false);
1477
- expect(config.getModel()).toBe(DEFAULT_GEMINI_MODEL_AUTO);
1678
+ describe('refreshUserQuotaIfStale', () => {
1679
+ beforeEach(() => {
1680
+ vi.useFakeTimers();
1681
+ vi.setSystemTime(new Date('2025-01-01T00:00:00Z'));
1682
+ });
1683
+ afterEach(() => {
1684
+ vi.useRealTimers();
1478
1685
  });
1479
- it('should NOT reset model if disabling preview features while NOT using a preview model', () => {
1480
- config.setPreviewFeatures(true);
1481
- const nonPreviewModel = 'gemini-1.5-pro';
1482
- config.setModel(nonPreviewModel);
1483
- config.setPreviewFeatures(false);
1484
- expect(config.getModel()).toBe(nonPreviewModel);
1686
+ it('should refresh quota if stale', async () => {
1687
+ mockCodeAssistServer.retrieveUserQuota.mockResolvedValue({
1688
+ buckets: [],
1689
+ });
1690
+ // First call to initialize lastQuotaFetchTime
1691
+ await config.refreshUserQuota();
1692
+ expect(mockCodeAssistServer.retrieveUserQuota).toHaveBeenCalledTimes(1);
1693
+ // Advance time by 31 seconds (default TTL is 30s)
1694
+ vi.setSystemTime(Date.now() + 31_000);
1695
+ await config.refreshUserQuotaIfStale();
1696
+ expect(mockCodeAssistServer.retrieveUserQuota).toHaveBeenCalledTimes(2);
1485
1697
  });
1486
- it('should switch to preview auto model if enabling preview features while using default auto model', () => {
1487
- config.setPreviewFeatures(false);
1488
- config.setModel(DEFAULT_GEMINI_MODEL_AUTO);
1489
- config.setPreviewFeatures(true);
1490
- expect(config.getModel()).toBe(PREVIEW_GEMINI_MODEL_AUTO);
1698
+ it('should not refresh quota if fresh', async () => {
1699
+ mockCodeAssistServer.retrieveUserQuota.mockResolvedValue({
1700
+ buckets: [],
1701
+ });
1702
+ // First call
1703
+ await config.refreshUserQuota();
1704
+ expect(mockCodeAssistServer.retrieveUserQuota).toHaveBeenCalledTimes(1);
1705
+ // Advance time by only 10 seconds
1706
+ vi.setSystemTime(Date.now() + 10_000);
1707
+ await config.refreshUserQuotaIfStale();
1708
+ expect(mockCodeAssistServer.retrieveUserQuota).toHaveBeenCalledTimes(1);
1709
+ });
1710
+ it('should respect custom staleMs', async () => {
1711
+ mockCodeAssistServer.retrieveUserQuota.mockResolvedValue({
1712
+ buckets: [],
1713
+ });
1714
+ // First call
1715
+ await config.refreshUserQuota();
1716
+ expect(mockCodeAssistServer.retrieveUserQuota).toHaveBeenCalledTimes(1);
1717
+ // Advance time by 5 seconds
1718
+ vi.setSystemTime(Date.now() + 5_000);
1719
+ // Refresh with 2s staleMs -> should refresh
1720
+ await config.refreshUserQuotaIfStale(2_000);
1721
+ expect(mockCodeAssistServer.retrieveUserQuota).toHaveBeenCalledTimes(2);
1722
+ // Advance by another 5 seconds
1723
+ vi.setSystemTime(Date.now() + 5_000);
1724
+ // Refresh with 10s staleMs -> should NOT refresh
1725
+ await config.refreshUserQuotaIfStale(10_000);
1726
+ expect(mockCodeAssistServer.retrieveUserQuota).toHaveBeenCalledTimes(2);
1727
+ });
1728
+ });
1729
+ describe('getUserTier and getUserTierName', () => {
1730
+ it('should return undefined if contentGenerator is not initialized', () => {
1731
+ const config = new Config(baseParams);
1732
+ expect(config.getUserTier()).toBeUndefined();
1733
+ expect(config.getUserTierName()).toBeUndefined();
1491
1734
  });
1492
- it('should NOT reset model if enabling preview features', () => {
1493
- config.setPreviewFeatures(false);
1494
- config.setModel(PREVIEW_GEMINI_MODEL); // Just pretending it was set somehow
1495
- config.setPreviewFeatures(true);
1496
- expect(config.getModel()).toBe(PREVIEW_GEMINI_MODEL);
1735
+ it('should return values from contentGenerator after refreshAuth', async () => {
1736
+ const config = new Config(baseParams);
1737
+ const mockTier = UserTierId.STANDARD;
1738
+ const mockTierName = 'Standard Tier';
1739
+ vi.mocked(createContentGeneratorConfig).mockResolvedValue({
1740
+ authType: AuthType.USE_GEMINI,
1741
+ });
1742
+ vi.mocked(createContentGenerator).mockResolvedValue({
1743
+ userTier: mockTier,
1744
+ userTierName: mockTierName,
1745
+ });
1746
+ await config.refreshAuth(AuthType.USE_GEMINI);
1747
+ expect(config.getUserTier()).toBe(mockTier);
1748
+ expect(config.getUserTierName()).toBe(mockTierName);
1749
+ });
1750
+ });
1751
+ describe('isPlanEnabled', () => {
1752
+ it('should return false by default', () => {
1753
+ const config = new Config(baseParams);
1754
+ expect(config.isPlanEnabled()).toBe(false);
1755
+ });
1756
+ it('should return true when plan is enabled', () => {
1757
+ const config = new Config({
1758
+ ...baseParams,
1759
+ plan: true,
1760
+ });
1761
+ expect(config.isPlanEnabled()).toBe(true);
1762
+ });
1763
+ it('should return false when plan is explicitly disabled', () => {
1764
+ const config = new Config({
1765
+ ...baseParams,
1766
+ plan: false,
1767
+ });
1768
+ expect(config.isPlanEnabled()).toBe(false);
1497
1769
  });
1498
1770
  });
1499
1771
  });
@@ -1505,6 +1777,7 @@ describe('Config JIT Initialization', () => {
1505
1777
  mockContextManager = {
1506
1778
  refresh: vi.fn(),
1507
1779
  getGlobalMemory: vi.fn().mockReturnValue('Global Memory'),
1780
+ getExtensionMemory: vi.fn().mockReturnValue('Extension Memory'),
1508
1781
  getEnvironmentMemory: vi
1509
1782
  .fn()
1510
1783
  .mockReturnValue('Environment Memory\n\nMCP Instructions'),
@@ -1526,7 +1799,11 @@ describe('Config JIT Initialization', () => {
1526
1799
  await config.initialize();
1527
1800
  expect(ContextManager).toHaveBeenCalledWith(config);
1528
1801
  expect(mockContextManager.refresh).toHaveBeenCalled();
1529
- expect(config.getUserMemory()).toBe('Global Memory\n\nEnvironment Memory\n\nMCP Instructions');
1802
+ expect(config.getUserMemory()).toEqual({
1803
+ global: 'Global Memory',
1804
+ extension: 'Extension Memory',
1805
+ project: 'Environment Memory\n\nMCP Instructions',
1806
+ });
1530
1807
  // Verify state update (delegated to ContextManager)
1531
1808
  expect(config.getGeminiMdFileCount()).toBe(1);
1532
1809
  expect(config.getGeminiMdFilePaths()).toEqual(['/path/to/GEMINI.md']);
@@ -1574,7 +1851,7 @@ describe('Config JIT Initialization', () => {
1574
1851
  expect(mockOnReload).toHaveBeenCalled();
1575
1852
  expect(skillManager.setDisabledSkills).toHaveBeenCalledWith(['skill2']);
1576
1853
  expect(toolRegistry.registerTool).toHaveBeenCalled();
1577
- expect(toolRegistry.unregisterTool).not.toHaveBeenCalledWith(ACTIVATE_SKILL_TOOL_NAME);
1854
+ expect(toolRegistry.unregisterTool).toHaveBeenCalledWith(ACTIVATE_SKILL_TOOL_NAME);
1578
1855
  });
1579
1856
  it('should unregister ActivateSkillTool when no skills exist after reload', async () => {
1580
1857
  const params = {
@@ -1620,6 +1897,148 @@ describe('Config JIT Initialization', () => {
1620
1897
  await config.reloadSkills();
1621
1898
  expect(skillManager.setDisabledSkills).toHaveBeenCalledWith([]);
1622
1899
  });
1900
+ it('should update admin settings from onReload', async () => {
1901
+ const mockOnReload = vi.fn().mockResolvedValue({
1902
+ adminSkillsEnabled: false,
1903
+ });
1904
+ const params = {
1905
+ sessionId: 'test-session',
1906
+ targetDir: '/tmp/test',
1907
+ debugMode: false,
1908
+ model: 'test-model',
1909
+ cwd: '/tmp/test',
1910
+ skillsSupport: true,
1911
+ onReload: mockOnReload,
1912
+ };
1913
+ config = new Config(params);
1914
+ await config.initialize();
1915
+ const skillManager = config.getSkillManager();
1916
+ vi.spyOn(skillManager, 'setAdminSettings');
1917
+ await config.reloadSkills();
1918
+ expect(skillManager.setAdminSettings).toHaveBeenCalledWith(false);
1919
+ });
1920
+ });
1921
+ });
1922
+ describe('Plans Directory Initialization', () => {
1923
+ const baseParams = {
1924
+ sessionId: 'test-session',
1925
+ targetDir: '/tmp/test',
1926
+ debugMode: false,
1927
+ model: 'test-model',
1928
+ cwd: '/tmp/test',
1929
+ };
1930
+ beforeEach(() => {
1931
+ vi.spyOn(fs.promises, 'mkdir').mockResolvedValue(undefined);
1932
+ });
1933
+ afterEach(() => {
1934
+ vi.mocked(fs.promises.mkdir).mockRestore();
1935
+ });
1936
+ it('should create plans directory and add it to workspace context when plan is enabled', async () => {
1937
+ const config = new Config({
1938
+ ...baseParams,
1939
+ plan: true,
1940
+ });
1941
+ await config.initialize();
1942
+ const plansDir = config.storage.getProjectTempPlansDir();
1943
+ expect(fs.promises.mkdir).toHaveBeenCalledWith(plansDir, {
1944
+ recursive: true,
1945
+ });
1946
+ const context = config.getWorkspaceContext();
1947
+ expect(context.getDirectories()).toContain(plansDir);
1948
+ });
1949
+ it('should NOT create plans directory or add it to workspace context when plan is disabled', async () => {
1950
+ const config = new Config({
1951
+ ...baseParams,
1952
+ plan: false,
1953
+ });
1954
+ await config.initialize();
1955
+ const plansDir = config.storage.getProjectTempPlansDir();
1956
+ expect(fs.promises.mkdir).not.toHaveBeenCalledWith(plansDir, {
1957
+ recursive: true,
1958
+ });
1959
+ const context = config.getWorkspaceContext();
1960
+ expect(context.getDirectories()).not.toContain(plansDir);
1961
+ });
1962
+ });
1963
+ describe('syncPlanModeTools', () => {
1964
+ const baseParams = {
1965
+ sessionId: 'test-session',
1966
+ targetDir: '.',
1967
+ debugMode: false,
1968
+ model: 'test-model',
1969
+ cwd: '.',
1970
+ };
1971
+ it('should register ExitPlanModeTool and unregister EnterPlanModeTool when in PLAN mode', async () => {
1972
+ const config = new Config({
1973
+ ...baseParams,
1974
+ approvalMode: ApprovalMode.PLAN,
1975
+ });
1976
+ const registry = new ToolRegistry(config, config.getMessageBus());
1977
+ vi.spyOn(config, 'getToolRegistry').mockReturnValue(registry);
1978
+ const registerSpy = vi.spyOn(registry, 'registerTool');
1979
+ const unregisterSpy = vi.spyOn(registry, 'unregisterTool');
1980
+ const getToolSpy = vi.spyOn(registry, 'getTool');
1981
+ getToolSpy.mockImplementation((name) => {
1982
+ if (name === 'enter_plan_mode')
1983
+ return new EnterPlanModeTool(config, config.getMessageBus());
1984
+ return undefined;
1985
+ });
1986
+ config.syncPlanModeTools();
1987
+ expect(unregisterSpy).toHaveBeenCalledWith('enter_plan_mode');
1988
+ expect(registerSpy).toHaveBeenCalledWith(expect.anything());
1989
+ const registeredTool = registerSpy.mock.calls[0][0];
1990
+ const { ExitPlanModeTool } = await import('../tools/exit-plan-mode.js');
1991
+ expect(registeredTool).toBeInstanceOf(ExitPlanModeTool);
1992
+ });
1993
+ it('should register EnterPlanModeTool and unregister ExitPlanModeTool when NOT in PLAN mode and experimental.plan is enabled', async () => {
1994
+ const config = new Config({
1995
+ ...baseParams,
1996
+ approvalMode: ApprovalMode.DEFAULT,
1997
+ plan: true,
1998
+ });
1999
+ const registry = new ToolRegistry(config, config.getMessageBus());
2000
+ vi.spyOn(config, 'getToolRegistry').mockReturnValue(registry);
2001
+ const registerSpy = vi.spyOn(registry, 'registerTool');
2002
+ const unregisterSpy = vi.spyOn(registry, 'unregisterTool');
2003
+ const getToolSpy = vi.spyOn(registry, 'getTool');
2004
+ getToolSpy.mockImplementation((name) => {
2005
+ if (name === 'exit_plan_mode')
2006
+ return new ExitPlanModeTool(config, config.getMessageBus());
2007
+ return undefined;
2008
+ });
2009
+ config.syncPlanModeTools();
2010
+ expect(unregisterSpy).toHaveBeenCalledWith('exit_plan_mode');
2011
+ expect(registerSpy).toHaveBeenCalledWith(expect.anything());
2012
+ const registeredTool = registerSpy.mock.calls[0][0];
2013
+ const { EnterPlanModeTool } = await import('../tools/enter-plan-mode.js');
2014
+ expect(registeredTool).toBeInstanceOf(EnterPlanModeTool);
2015
+ });
2016
+ it('should NOT register EnterPlanModeTool when experimental.plan is disabled', async () => {
2017
+ const config = new Config({
2018
+ ...baseParams,
2019
+ approvalMode: ApprovalMode.DEFAULT,
2020
+ plan: false,
2021
+ });
2022
+ const registry = new ToolRegistry(config, config.getMessageBus());
2023
+ vi.spyOn(config, 'getToolRegistry').mockReturnValue(registry);
2024
+ const registerSpy = vi.spyOn(registry, 'registerTool');
2025
+ vi.spyOn(registry, 'getTool').mockReturnValue(undefined);
2026
+ config.syncPlanModeTools();
2027
+ const { EnterPlanModeTool } = await import('../tools/enter-plan-mode.js');
2028
+ const registeredTool = registerSpy.mock.calls.find((call) => call[0] instanceof EnterPlanModeTool);
2029
+ expect(registeredTool).toBeUndefined();
2030
+ });
2031
+ it('should call geminiClient.setTools if initialized', async () => {
2032
+ const config = new Config(baseParams);
2033
+ const registry = new ToolRegistry(config, config.getMessageBus());
2034
+ vi.spyOn(config, 'getToolRegistry').mockReturnValue(registry);
2035
+ const client = config.getGeminiClient();
2036
+ vi.spyOn(client, 'isInitialized').mockReturnValue(true);
2037
+ const setToolsSpy = vi
2038
+ .spyOn(client, 'setTools')
2039
+ .mockResolvedValue(undefined);
2040
+ config.syncPlanModeTools();
2041
+ expect(setToolsSpy).toHaveBeenCalled();
1623
2042
  });
1624
2043
  });
1625
2044
  //# sourceMappingURL=config.test.js.map