@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,9 +1,11 @@
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
+ import * as fs from 'node:fs';
6
7
  import * as path from 'node:path';
8
+ import * as os from 'node:os';
7
9
  import { inspect } from 'node:util';
8
10
  import process from 'node:process';
9
11
  import { AuthType, createContentGenerator, createContentGeneratorConfig, } from '../core/contentGenerator.js';
@@ -22,20 +24,23 @@ import { WriteFileTool } from '../tools/write-file.js';
22
24
  import { WebFetchTool } from '../tools/web-fetch.js';
23
25
  import { MemoryTool, setGeminiMdFilename } from '../tools/memoryTool.js';
24
26
  import { WebSearchTool } from '../tools/web-search.js';
27
+ import { AskUserTool } from '../tools/ask-user.js';
28
+ import { ExitPlanModeTool } from '../tools/exit-plan-mode.js';
29
+ import { EnterPlanModeTool } from '../tools/enter-plan-mode.js';
25
30
  import { GeminiClient } from '../core/client.js';
26
31
  import { BaseLlmClient } from '../core/baseLlmClient.js';
27
32
  import { FileDiscoveryService } from '../services/fileDiscoveryService.js';
28
33
  import { GitService } from '../services/gitService.js';
29
34
  import { initializeTelemetry, DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT, uiTelemetryService, } from '../telemetry/index.js';
30
- import { coreEvents } from '../utils/events.js';
35
+ import { coreEvents, CoreEvent } from '../utils/events.js';
31
36
  import { tokenLimit } from '../core/tokenLimits.js';
32
- import { DEFAULT_GEMINI_EMBEDDING_MODEL, DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_MODEL_AUTO, DEFAULT_THINKING_MODE, isPreviewModel, PREVIEW_GEMINI_MODEL, PREVIEW_GEMINI_MODEL_AUTO, } from './models.js';
37
+ import { DEFAULT_GEMINI_EMBEDDING_MODEL, DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_MODEL_AUTO, isAutoModel, isPreviewModel, PREVIEW_GEMINI_FLASH_MODEL, PREVIEW_GEMINI_MODEL, PREVIEW_GEMINI_MODEL_AUTO, resolveModel, } from './models.js';
33
38
  import { shouldAttemptBrowserLaunch } from '../utils/browser.js';
34
39
  import { ideContextStore } from '../ide/ideContext.js';
35
40
  import { WriteTodosTool } from '../tools/write-todos.js';
36
41
  import { StandardFileSystemService } from '../services/fileSystemService.js';
37
42
  import { logRipgrepFallback, logFlashFallback } from '../telemetry/loggers.js';
38
- import { RipgrepFallbackEvent, FlashFallbackEvent, } from '../telemetry/types.js';
43
+ import { RipgrepFallbackEvent, FlashFallbackEvent, ApprovalModeSwitchEvent, ApprovalModeDurationEvent, } from '../telemetry/types.js';
39
44
  import { ModelAvailabilityService } from '../availability/modelAvailabilityService.js';
40
45
  import { ModelRouterService } from '../routing/modelRouterService.js';
41
46
  import { OutputFormat } from '../output/types.js';
@@ -47,24 +52,29 @@ import { Storage } from './storage.js';
47
52
  import { FileExclusions } from '../utils/ignorePatterns.js';
48
53
  import { MessageBus } from '../confirmation-bus/message-bus.js';
49
54
  import { PolicyEngine } from '../policy/policy-engine.js';
55
+ import { ApprovalMode } from '../policy/types.js';
50
56
  import { HookSystem } from '../hooks/index.js';
51
57
  import { getCodeAssistServer } from '../code_assist/codeAssist.js';
52
58
  import { AgentRegistry } from '../agents/registry.js';
59
+ import { AcknowledgedAgentsService } from '../agents/acknowledgedAgents.js';
53
60
  import { setGlobalProxy } from '../utils/fetch.js';
54
- import { DelegateToAgentTool } from '../agents/delegate-to-agent-tool.js';
55
- import { DELEGATE_TO_AGENT_TOOL_NAME } from '../tools/tool-names.js';
61
+ import { SubagentTool } from '../agents/subagent-tool.js';
56
62
  import { getExperiments } from '../code_assist/experiments/experiments.js';
57
63
  import { ExperimentFlags } from '../code_assist/experiments/flagNames.js';
58
64
  import { debugLogger } from '../utils/debugLogger.js';
59
65
  import { SkillManager } from '../skills/skillManager.js';
60
66
  import { startupProfiler } from '../telemetry/startupProfiler.js';
61
- import { ApprovalMode } from '../policy/types.js';
67
+ import { logApprovalModeSwitch, logApprovalModeDuration, } from '../telemetry/loggers.js';
68
+ import { fetchAdminControls } from '../code_assist/admin/admin_controls.js';
69
+ import { isSubpath } from '../utils/paths.js';
62
70
  import { DEFAULT_FILE_FILTERING_OPTIONS, DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, } from './constants.js';
71
+ import { DEFAULT_TOOL_PROTECTION_THRESHOLD, DEFAULT_MIN_PRUNABLE_TOKENS_THRESHOLD, DEFAULT_PROTECT_LATEST_TURN, } from '../services/toolOutputMaskingService.js';
63
72
  import { SimpleExtensionLoader, } from '../utils/extensionLoader.js';
64
73
  import { McpClientManager } from '../tools/mcp-client-manager.js';
74
+ import { getErrorMessage } from '../utils/errors.js';
75
+ import { ENTER_PLAN_MODE_TOOL_NAME, EXIT_PLAN_MODE_TOOL_NAME, } from '../tools/tool-names.js';
65
76
  export { DEFAULT_FILE_FILTERING_OPTIONS, DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, };
66
- export const DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD = 4_000_000;
67
- export const DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES = 1000;
77
+ export const DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD = 40_000;
68
78
  export class MCPServerConfig {
69
79
  command;
70
80
  args;
@@ -149,8 +159,10 @@ export class Config {
149
159
  promptRegistry;
150
160
  resourceRegistry;
151
161
  agentRegistry;
162
+ acknowledgedAgentsService;
152
163
  skillManager;
153
164
  sessionId;
165
+ clientVersion;
154
166
  fileSystemService;
155
167
  contentGeneratorConfig;
156
168
  contentGenerator;
@@ -162,13 +174,17 @@ export class Config {
162
174
  debugMode;
163
175
  question;
164
176
  coreTools;
177
+ /** @deprecated Use Policy Engine instead */
165
178
  allowedTools;
179
+ /** @deprecated Use Policy Engine instead */
166
180
  excludeTools;
167
181
  toolDiscoveryCommand;
168
182
  toolCallCommand;
169
183
  mcpServerCommand;
170
184
  mcpEnabled;
185
+ extensionsEnabled;
171
186
  mcpServers;
187
+ mcpEnablementCallbacks;
172
188
  userMemory;
173
189
  geminiMdFileCount;
174
190
  geminiMdFilePaths;
@@ -188,7 +204,7 @@ export class Config {
188
204
  cwd;
189
205
  bugCommand;
190
206
  model;
191
- previewFeatures;
207
+ disableLoopDetection;
192
208
  hasAccessToPreviewModel = false;
193
209
  noBrowser;
194
210
  folderTrust;
@@ -202,26 +218,44 @@ export class Config {
202
218
  _enabledExtensions;
203
219
  enableExtensionReloading;
204
220
  fallbackModelHandler;
221
+ validationHandler;
205
222
  quotaErrorOccurred = false;
223
+ modelQuotas = new Map();
224
+ lastRetrievedQuota;
225
+ lastQuotaFetchTime = 0;
226
+ lastEmittedQuotaRemaining;
227
+ lastEmittedQuotaLimit;
228
+ emitQuotaChangedEvent() {
229
+ const pooled = this.getPooledQuota();
230
+ if (this.lastEmittedQuotaRemaining !== pooled.remaining ||
231
+ this.lastEmittedQuotaLimit !== pooled.limit) {
232
+ this.lastEmittedQuotaRemaining = pooled.remaining;
233
+ this.lastEmittedQuotaLimit = pooled.limit;
234
+ coreEvents.emitQuotaChanged(pooled.remaining, pooled.limit, pooled.resetTime);
235
+ }
236
+ }
206
237
  summarizeToolOutput;
207
238
  experimentalZedIntegration = false;
208
239
  loadMemoryFromIncludeDirectories = false;
240
+ includeDirectoryTree = true;
209
241
  importFormat;
210
242
  discoveryMaxDirs;
211
243
  compressionThreshold;
244
+ /** Public for testing only */
212
245
  interactive;
213
246
  ptyInfo;
214
247
  trustedFolder;
215
248
  useRipgrep;
216
249
  enableInteractiveShell;
217
250
  skipNextSpeakerCheck;
251
+ useBackgroundColor;
218
252
  shellExecutionConfig;
219
253
  extensionManagement = true;
220
254
  enablePromptCompletion = false;
221
255
  truncateToolOutputThreshold;
222
- truncateToolOutputLines;
223
- enableToolOutputTruncation;
256
+ compressionTruncationCounter = 0;
224
257
  initialized = false;
258
+ initPromise;
225
259
  storage;
226
260
  fileExclusions;
227
261
  eventEmitter;
@@ -229,8 +263,6 @@ export class Config {
229
263
  messageBus;
230
264
  policyEngine;
231
265
  outputSettings;
232
- codebaseInvestigatorSettings;
233
- introspectionAgentSettings;
234
266
  continueOnFailedApiCall;
235
267
  retryFetchErrors;
236
268
  enableShellOutputEfficiency;
@@ -238,8 +270,12 @@ export class Config {
238
270
  fakeResponses;
239
271
  recordResponses;
240
272
  disableYoloMode;
273
+ rawOutput;
274
+ acceptRawOutputRisk;
241
275
  pendingIncludeDirectories;
242
276
  enableHooks;
277
+ enableHooksUI;
278
+ toolOutputMasking;
243
279
  hooks;
244
280
  projectHooks;
245
281
  disabledHooks;
@@ -249,14 +285,24 @@ export class Config {
249
285
  onModelChange;
250
286
  onReload;
251
287
  enableAgents;
288
+ agents;
289
+ enableEventDrivenScheduler;
252
290
  skillsSupport;
253
291
  disabledSkills;
292
+ adminSkillsEnabled;
254
293
  experimentalJitContext;
294
+ disableLLMCorrection;
295
+ planEnabled;
255
296
  contextManager;
256
297
  terminalBackground = undefined;
257
298
  remoteAdminSettings;
299
+ latestApiRequest;
300
+ lastModeSwitchTime = Date.now();
301
+ approvedPlanPath;
258
302
  constructor(params) {
259
303
  this.sessionId = params.sessionId;
304
+ this.clientVersion = params.clientVersion ?? 'unknown';
305
+ this.approvedPlanPath = undefined;
260
306
  this.embeddingModel =
261
307
  params.embeddingModel ?? DEFAULT_GEMINI_EMBEDDING_MODEL;
262
308
  this.fileSystemService = new StandardFileSystemService();
@@ -274,7 +320,9 @@ export class Config {
274
320
  this.toolCallCommand = params.toolCallCommand;
275
321
  this.mcpServerCommand = params.mcpServerCommand;
276
322
  this.mcpServers = params.mcpServers;
323
+ this.mcpEnablementCallbacks = params.mcpEnablementCallbacks;
277
324
  this.mcpEnabled = params.mcpEnabled ?? true;
325
+ this.extensionsEnabled = params.extensionsEnabled ?? true;
278
326
  this.allowedMcpServers = params.allowedMcpServers ?? [];
279
327
  this.blockedMcpServers = params.blockedMcpServers ?? [];
280
328
  this.allowedEnvironmentVariables = params.allowedEnvironmentVariables ?? [];
@@ -303,7 +351,14 @@ export class Config {
303
351
  respectGeminiIgnore: params.fileFiltering?.respectGeminiIgnore ??
304
352
  DEFAULT_FILE_FILTERING_OPTIONS.respectGeminiIgnore,
305
353
  enableRecursiveFileSearch: params.fileFiltering?.enableRecursiveFileSearch ?? true,
306
- disableFuzzySearch: params.fileFiltering?.disableFuzzySearch ?? false,
354
+ enableFuzzySearch: params.fileFiltering?.enableFuzzySearch ?? true,
355
+ maxFileCount: params.fileFiltering?.maxFileCount ??
356
+ DEFAULT_FILE_FILTERING_OPTIONS.maxFileCount ??
357
+ 20000,
358
+ searchTimeout: params.fileFiltering?.searchTimeout ??
359
+ DEFAULT_FILE_FILTERING_OPTIONS.searchTimeout ??
360
+ 5000,
361
+ customIgnoreFilePaths: params.fileFiltering?.customIgnoreFilePaths ?? [],
307
362
  };
308
363
  this.checkpointing = params.checkpointing ?? false;
309
364
  this.proxy = params.proxy;
@@ -311,13 +366,27 @@ export class Config {
311
366
  this.fileDiscoveryService = params.fileDiscoveryService ?? null;
312
367
  this.bugCommand = params.bugCommand;
313
368
  this.model = params.model;
369
+ this.disableLoopDetection = params.disableLoopDetection ?? false;
314
370
  this._activeModel = params.model;
315
371
  this.enableAgents = params.enableAgents ?? false;
316
- this.skillsSupport = params.skillsSupport ?? false;
372
+ this.agents = params.agents ?? {};
373
+ this.disableLLMCorrection = params.disableLLMCorrection ?? true;
374
+ this.planEnabled = params.plan ?? false;
375
+ this.enableEventDrivenScheduler = params.enableEventDrivenScheduler ?? true;
376
+ this.skillsSupport = params.skillsSupport ?? true;
317
377
  this.disabledSkills = params.disabledSkills ?? [];
378
+ this.adminSkillsEnabled = params.adminSkillsEnabled ?? true;
318
379
  this.modelAvailabilityService = new ModelAvailabilityService();
319
- this.previewFeatures = params.previewFeatures ?? undefined;
320
380
  this.experimentalJitContext = params.experimentalJitContext ?? false;
381
+ this.toolOutputMasking = {
382
+ enabled: params.toolOutputMasking?.enabled ?? true,
383
+ toolProtectionThreshold: params.toolOutputMasking?.toolProtectionThreshold ??
384
+ DEFAULT_TOOL_PROTECTION_THRESHOLD,
385
+ minPrunableTokensThreshold: params.toolOutputMasking?.minPrunableTokensThreshold ??
386
+ DEFAULT_MIN_PRUNABLE_TOKENS_THRESHOLD,
387
+ protectLatestTurn: params.toolOutputMasking?.protectLatestTurn ??
388
+ DEFAULT_PROTECT_LATEST_TURN,
389
+ };
321
390
  this.maxSessionTurns = params.maxSessionTurns ?? -1;
322
391
  this.experimentalZedIntegration =
323
392
  params.experimentalZedIntegration ?? false;
@@ -331,6 +400,7 @@ export class Config {
331
400
  this.summarizeToolOutput = params.summarizeToolOutput;
332
401
  this.folderTrust = params.folderTrust ?? false;
333
402
  this.ideMode = params.ideMode ?? false;
403
+ this.includeDirectoryTree = params.includeDirectoryTree ?? true;
334
404
  this.loadMemoryFromIncludeDirectories =
335
405
  params.loadMemoryFromIncludeDirectories ?? false;
336
406
  this.importFormat = params.importFormat ?? 'tree';
@@ -340,6 +410,7 @@ export class Config {
340
410
  this.ptyInfo = params.ptyInfo ?? 'child_process';
341
411
  this.trustedFolder = params.trustedFolder;
342
412
  this.useRipgrep = params.useRipgrep ?? true;
413
+ this.useBackgroundColor = params.useBackgroundColor ?? true;
343
414
  this.enableInteractiveShell = params.enableInteractiveShell ?? false;
344
415
  this.skipNextSpeakerCheck = params.skipNextSpeakerCheck ?? true;
345
416
  this.shellExecutionConfig = {
@@ -352,29 +423,13 @@ export class Config {
352
423
  this.truncateToolOutputThreshold =
353
424
  params.truncateToolOutputThreshold ??
354
425
  DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD;
355
- this.truncateToolOutputLines =
356
- params.truncateToolOutputLines ?? DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES;
357
- this.enableToolOutputTruncation = params.enableToolOutputTruncation ?? true;
358
426
  // // TODO(joshualitt): Re-evaluate the todo tool for 3 family.
359
427
  this.useWriteTodos = isPreviewModel(this.model)
360
428
  ? false
361
429
  : (params.useWriteTodos ?? true);
362
- this.enableHooks = params.enableHooks ?? false;
363
- this.disabledHooks =
364
- (params.hooks && 'disabled' in params.hooks
365
- ? params.hooks.disabled
366
- : undefined) ?? [];
367
- this.codebaseInvestigatorSettings = {
368
- enabled: params.codebaseInvestigatorSettings?.enabled ?? true,
369
- maxNumTurns: params.codebaseInvestigatorSettings?.maxNumTurns ?? 10,
370
- maxTimeMinutes: params.codebaseInvestigatorSettings?.maxTimeMinutes ?? 3,
371
- thinkingBudget: params.codebaseInvestigatorSettings?.thinkingBudget ??
372
- DEFAULT_THINKING_MODE,
373
- model: params.codebaseInvestigatorSettings?.model,
374
- };
375
- this.introspectionAgentSettings = {
376
- enabled: params.introspectionAgentSettings?.enabled ?? false,
377
- };
430
+ this.enableHooksUI = params.enableHooksUI ?? true;
431
+ this.enableHooks = params.enableHooks ?? true;
432
+ this.disabledHooks = params.disabledHooks ?? [];
378
433
  this.continueOnFailedApiCall = params.continueOnFailedApiCall ?? true;
379
434
  this.enableShellOutputEfficiency =
380
435
  params.enableShellOutputEfficiency ?? true;
@@ -382,7 +437,7 @@ export class Config {
382
437
  (params.shellToolInactivityTimeout ?? 300) * 1000; // 5 minutes
383
438
  this.extensionManagement = params.extensionManagement ?? true;
384
439
  this.enableExtensionReloading = params.enableExtensionReloading ?? false;
385
- this.storage = new Storage(this.targetDir);
440
+ this.storage = new Storage(this.targetDir, this.sessionId);
386
441
  this.fakeResponses = params.fakeResponses;
387
442
  this.recordResponses = params.recordResponses;
388
443
  this.enablePromptCompletion = params.enablePromptCompletion ?? false;
@@ -393,14 +448,21 @@ export class Config {
393
448
  approvalMode: params.approvalMode ?? params.policyEngineConfig?.approvalMode,
394
449
  });
395
450
  this.messageBus = new MessageBus(this.policyEngine, this.debugMode);
451
+ this.acknowledgedAgentsService = new AcknowledgedAgentsService();
396
452
  this.skillManager = new SkillManager();
397
453
  this.outputSettings = {
398
454
  format: params.output?.format ?? OutputFormat.TEXT,
399
455
  };
400
456
  this.retryFetchErrors = params.retryFetchErrors ?? false;
401
457
  this.disableYoloMode = params.disableYoloMode ?? false;
402
- this.hooks = params.hooks;
403
- this.projectHooks = params.projectHooks;
458
+ this.rawOutput = params.rawOutput ?? false;
459
+ this.acceptRawOutputRisk = params.acceptRawOutputRisk ?? false;
460
+ if (params.hooks) {
461
+ this.hooks = params.hooks;
462
+ }
463
+ if (params.projectHooks) {
464
+ this.projectHooks = params.projectHooks;
465
+ }
404
466
  this.experiments = params.experiments;
405
467
  this.onModelChange = params.onModelChange;
406
468
  this.onReload = params.onReload;
@@ -446,14 +508,32 @@ export class Config {
446
508
  }
447
509
  this.modelConfigService = new ModelConfigService(modelConfigServiceConfig ?? DEFAULT_MODEL_CONFIGS);
448
510
  }
511
+ isInitialized() {
512
+ return this.initialized;
513
+ }
449
514
  /**
450
- * Must only be called once, throws if called again.
515
+ * Dedups initialization requests using a shared promise that is only resolved
516
+ * once.
451
517
  */
452
518
  async initialize() {
453
- if (this.initialized) {
454
- throw Error('Config was already initialized');
519
+ if (this.initPromise) {
520
+ return this.initPromise;
521
+ }
522
+ this.initPromise = this._initialize();
523
+ return this.initPromise;
524
+ }
525
+ async _initialize() {
526
+ await this.storage.initialize();
527
+ // Add pending directories to workspace context
528
+ for (const dir of this.pendingIncludeDirectories) {
529
+ this.workspaceContext.addDirectory(dir);
530
+ }
531
+ // Add plans directory to workspace context for plan file storage
532
+ if (this.planEnabled) {
533
+ const plansDir = this.storage.getProjectTempPlansDir();
534
+ await fs.promises.mkdir(plansDir, { recursive: true });
535
+ this.workspaceContext.addDirectory(plansDir);
455
536
  }
456
- this.initialized = true;
457
537
  // Initialize centralized FileDiscoveryService
458
538
  const discoverToolsHandle = startupProfiler.start('discover_tools');
459
539
  this.getFileService();
@@ -464,22 +544,35 @@ export class Config {
464
544
  this.resourceRegistry = new ResourceRegistry();
465
545
  this.agentRegistry = new AgentRegistry(this);
466
546
  await this.agentRegistry.initialize();
547
+ coreEvents.on(CoreEvent.AgentsRefreshed, this.onAgentsRefreshed);
467
548
  this.toolRegistry = await this.createToolRegistry();
468
549
  discoverToolsHandle?.end();
469
- this.mcpClientManager = new McpClientManager(this.toolRegistry, this, this.eventEmitter);
470
- const initMcpHandle = startupProfiler.start('initialize_mcp_clients');
471
- await Promise.all([
472
- await this.mcpClientManager.startConfiguredMcpServers(),
473
- await this.getExtensionLoader().start(this),
474
- ]);
475
- initMcpHandle?.end();
476
- // Discover skills if enabled
550
+ this.mcpClientManager = new McpClientManager(this.clientVersion, this.toolRegistry, this, this.eventEmitter);
551
+ // We do not await this promise so that the CLI can start up even if
552
+ // MCP servers are slow to connect.
553
+ const mcpInitialization = Promise.allSettled([
554
+ this.mcpClientManager.startConfiguredMcpServers(),
555
+ this.getExtensionLoader().start(this),
556
+ ]).then((results) => {
557
+ for (const result of results) {
558
+ if (result.status === 'rejected') {
559
+ debugLogger.error('Error initializing MCP clients:', result.reason);
560
+ }
561
+ }
562
+ });
563
+ if (!this.interactive || this.experimentalZedIntegration) {
564
+ await mcpInitialization;
565
+ }
477
566
  if (this.skillsSupport) {
478
- await this.getSkillManager().discoverSkills(this.storage, this.getExtensions());
479
- this.getSkillManager().setDisabledSkills(this.disabledSkills);
480
- // Re-register ActivateSkillTool to update its schema with the discovered enabled skill enums
481
- if (this.getSkillManager().getSkills().length > 0) {
482
- this.getToolRegistry().registerTool(new ActivateSkillTool(this, this.messageBus));
567
+ this.getSkillManager().setAdminSettings(this.adminSkillsEnabled);
568
+ if (this.adminSkillsEnabled) {
569
+ await this.getSkillManager().discoverSkills(this.storage, this.getExtensions(), this.isTrustedFolder());
570
+ this.getSkillManager().setDisabledSkills(this.disabledSkills);
571
+ // Re-register ActivateSkillTool to update its schema with the discovered enabled skill enums
572
+ if (this.getSkillManager().getSkills().length > 0) {
573
+ this.getToolRegistry().unregisterTool(ActivateSkillTool.Name);
574
+ this.getToolRegistry().registerTool(new ActivateSkillTool(this, this.messageBus));
575
+ }
483
576
  }
484
577
  }
485
578
  // Initialize hook system if enabled
@@ -492,6 +585,8 @@ export class Config {
492
585
  await this.contextManager.refresh();
493
586
  }
494
587
  await this.geminiClient.initialize();
588
+ this.syncPlanModeTools();
589
+ this.initialized = true;
495
590
  }
496
591
  getContentGenerator() {
497
592
  return this.contentGenerator;
@@ -508,6 +603,11 @@ export class Config {
508
603
  }
509
604
  // Reset availability status when switching auth (e.g. from limited key to OAuth)
510
605
  this.modelAvailabilityService.reset();
606
+ // Clear stale authType to ensure getGemini31LaunchedSync doesn't return stale results
607
+ // during the transition.
608
+ if (this.contentGeneratorConfig) {
609
+ this.contentGeneratorConfig.authType = undefined;
610
+ }
511
611
  const newContentGeneratorConfig = await createContentGeneratorConfig(this, authMethod);
512
612
  this.contentGenerator = await createContentGenerator(newContentGeneratorConfig, this, this.getSessionId());
513
613
  // Only assign to instance properties after successful initialization
@@ -515,29 +615,16 @@ export class Config {
515
615
  // Initialize BaseLlmClient now that the ContentGenerator is available
516
616
  this.baseLlmClient = new BaseLlmClient(this.contentGenerator, this);
517
617
  const codeAssistServer = getCodeAssistServer(this);
518
- if (codeAssistServer) {
519
- if (codeAssistServer.projectId) {
520
- await this.refreshUserQuota();
521
- }
522
- this.experimentsPromise = getExperiments(codeAssistServer)
523
- .then((experiments) => {
524
- this.setExperiments(experiments);
525
- // If preview features have not been set and the user authenticated through Google, we enable preview based on remote config only if it's true
526
- if (this.getPreviewFeatures() === undefined) {
527
- const remotePreviewFeatures = experiments.flags[ExperimentFlags.ENABLE_PREVIEW]?.boolValue;
528
- if (remotePreviewFeatures === true) {
529
- this.setPreviewFeatures(remotePreviewFeatures);
530
- }
531
- }
532
- })
533
- .catch((e) => {
534
- debugLogger.error('Failed to fetch experiments', e);
535
- });
536
- }
537
- else {
538
- this.experiments = undefined;
539
- this.experimentsPromise = undefined;
618
+ if (codeAssistServer?.projectId) {
619
+ await this.refreshUserQuota();
540
620
  }
621
+ this.experimentsPromise = getExperiments(codeAssistServer)
622
+ .then((experiments) => {
623
+ this.setExperiments(experiments);
624
+ })
625
+ .catch((e) => {
626
+ debugLogger.error('Failed to fetch experiments', e);
627
+ });
541
628
  const authType = this.contentGeneratorConfig.authType;
542
629
  if (authType === AuthType.USE_GEMINI ||
543
630
  authType === AuthType.USE_VERTEX_AI) {
@@ -547,20 +634,29 @@ export class Config {
547
634
  if (!this.hasAccessToPreviewModel && isPreviewModel(this.model)) {
548
635
  this.setModel(DEFAULT_GEMINI_MODEL_AUTO);
549
636
  }
637
+ // Fetch admin controls
638
+ await this.ensureExperimentsLoaded();
639
+ const adminControlsEnabled = this.experiments?.flags[ExperimentFlags.ENABLE_ADMIN_CONTROLS]
640
+ ?.boolValue ?? false;
641
+ const adminControls = await fetchAdminControls(codeAssistServer, this.getRemoteAdminSettings(), adminControlsEnabled, (newSettings) => {
642
+ this.setRemoteAdminSettings(newSettings);
643
+ coreEvents.emitAdminSettingsChanged();
644
+ });
645
+ this.setRemoteAdminSettings(adminControls);
550
646
  }
551
647
  async getExperimentsAsync() {
552
648
  if (this.experiments) {
553
649
  return this.experiments;
554
650
  }
555
651
  const codeAssistServer = getCodeAssistServer(this);
556
- if (codeAssistServer) {
557
- return getExperiments(codeAssistServer);
558
- }
559
- return undefined;
652
+ return getExperiments(codeAssistServer);
560
653
  }
561
654
  getUserTier() {
562
655
  return this.contentGenerator?.userTier;
563
656
  }
657
+ getUserTierName() {
658
+ return this.contentGenerator?.userTierName;
659
+ }
564
660
  /**
565
661
  * Provides access to the BaseLlmClient for stateless LLM operations.
566
662
  */
@@ -588,6 +684,12 @@ export class Config {
588
684
  getTerminalBackground() {
589
685
  return this.terminalBackground;
590
686
  }
687
+ getLatestApiRequest() {
688
+ return this.latestApiRequest;
689
+ }
690
+ setLatestApiRequest(req) {
691
+ this.latestApiRequest = req;
692
+ }
591
693
  getRemoteAdminSettings() {
592
694
  return this.remoteAdminSettings;
593
695
  }
@@ -597,6 +699,9 @@ export class Config {
597
699
  shouldLoadMemoryFromIncludeDirectories() {
598
700
  return this.loadMemoryFromIncludeDirectories;
599
701
  }
702
+ getIncludeDirectoryTree() {
703
+ return this.includeDirectoryTree;
704
+ }
600
705
  getImportFormat() {
601
706
  return this.importFormat;
602
707
  }
@@ -609,6 +714,9 @@ export class Config {
609
714
  getModel() {
610
715
  return this.model;
611
716
  }
717
+ getDisableLoopDetection() {
718
+ return this.disableLoopDetection ?? false;
719
+ }
612
720
  setModel(newModel, isTemporary = true) {
613
721
  if (this.model !== newModel || this._activeModel !== newModel) {
614
722
  this.model = newModel;
@@ -642,6 +750,12 @@ export class Config {
642
750
  getFallbackModelHandler() {
643
751
  return this.fallbackModelHandler;
644
752
  }
753
+ setValidationHandler(handler) {
754
+ this.validationHandler = handler;
755
+ }
756
+ getValidationHandler() {
757
+ return this.validationHandler;
758
+ }
645
759
  resetTurn() {
646
760
  this.modelAvailabilityService.resetTurn();
647
761
  }
@@ -654,6 +768,69 @@ export class Config {
654
768
  getQuotaErrorOccurred() {
655
769
  return this.quotaErrorOccurred;
656
770
  }
771
+ setQuota(remaining, limit, modelId) {
772
+ const activeModel = modelId ?? this.getActiveModel();
773
+ if (remaining !== undefined && limit !== undefined) {
774
+ const current = this.modelQuotas.get(activeModel);
775
+ if (!current ||
776
+ current.remaining !== remaining ||
777
+ current.limit !== limit) {
778
+ this.modelQuotas.set(activeModel, { remaining, limit });
779
+ this.emitQuotaChangedEvent();
780
+ }
781
+ }
782
+ }
783
+ getPooledQuota() {
784
+ const model = this.getModel();
785
+ if (!isAutoModel(model)) {
786
+ return {};
787
+ }
788
+ const isPreview = model === PREVIEW_GEMINI_MODEL_AUTO ||
789
+ isPreviewModel(this.getActiveModel());
790
+ const proModel = isPreview ? PREVIEW_GEMINI_MODEL : DEFAULT_GEMINI_MODEL;
791
+ const flashModel = isPreview
792
+ ? PREVIEW_GEMINI_FLASH_MODEL
793
+ : DEFAULT_GEMINI_FLASH_MODEL;
794
+ const proQuota = this.modelQuotas.get(proModel);
795
+ const flashQuota = this.modelQuotas.get(flashModel);
796
+ if (proQuota || flashQuota) {
797
+ // For reset time, take the one that is furthest in the future (most conservative)
798
+ const resetTime = [proQuota?.resetTime, flashQuota?.resetTime]
799
+ .filter((t) => !!t)
800
+ .sort()
801
+ .reverse()[0];
802
+ return {
803
+ remaining: (proQuota?.remaining ?? 0) + (flashQuota?.remaining ?? 0),
804
+ limit: (proQuota?.limit ?? 0) + (flashQuota?.limit ?? 0),
805
+ resetTime,
806
+ };
807
+ }
808
+ return {};
809
+ }
810
+ getQuotaRemaining() {
811
+ const pooled = this.getPooledQuota();
812
+ if (pooled.remaining !== undefined) {
813
+ return pooled.remaining;
814
+ }
815
+ const primaryModel = resolveModel(this.getModel(), this.getGemini31LaunchedSync());
816
+ return this.modelQuotas.get(primaryModel)?.remaining;
817
+ }
818
+ getQuotaLimit() {
819
+ const pooled = this.getPooledQuota();
820
+ if (pooled.limit !== undefined) {
821
+ return pooled.limit;
822
+ }
823
+ const primaryModel = resolveModel(this.getModel(), this.getGemini31LaunchedSync());
824
+ return this.modelQuotas.get(primaryModel)?.limit;
825
+ }
826
+ getQuotaResetTime() {
827
+ const pooled = this.getPooledQuota();
828
+ if (pooled.resetTime !== undefined) {
829
+ return pooled.resetTime;
830
+ }
831
+ const primaryModel = resolveModel(this.getModel(), this.getGemini31LaunchedSync());
832
+ return this.modelQuotas.get(primaryModel)?.resetTime;
833
+ }
657
834
  getEmbeddingModel() {
658
835
  return this.embeddingModel;
659
836
  }
@@ -666,7 +843,8 @@ export class Config {
666
843
  return (!!sandboxConfig &&
667
844
  sandboxConfig.command === 'sandbox-exec' &&
668
845
  !!seatbeltProfile &&
669
- seatbeltProfile.startsWith('restrictive-'));
846
+ (seatbeltProfile.startsWith('restrictive-') ||
847
+ seatbeltProfile.startsWith('strict-')));
670
848
  }
671
849
  getTargetDir() {
672
850
  return this.targetDir;
@@ -683,6 +861,9 @@ export class Config {
683
861
  getSkillManager() {
684
862
  return this.skillManager;
685
863
  }
864
+ getAcknowledgedAgentsService() {
865
+ return this.acknowledgedAgentsService;
866
+ }
686
867
  getToolRegistry() {
687
868
  return this.toolRegistry;
688
869
  }
@@ -698,25 +879,6 @@ export class Config {
698
879
  getQuestion() {
699
880
  return this.question;
700
881
  }
701
- getPreviewFeatures() {
702
- return this.previewFeatures;
703
- }
704
- setPreviewFeatures(previewFeatures) {
705
- // No change in state, no action needed
706
- if (this.previewFeatures === previewFeatures) {
707
- return;
708
- }
709
- this.previewFeatures = previewFeatures;
710
- const currentModel = this.getModel();
711
- // Case 1: Disabling preview features while on a preview model
712
- if (!previewFeatures && isPreviewModel(currentModel)) {
713
- this.setModel(DEFAULT_GEMINI_MODEL_AUTO);
714
- }
715
- // Case 2: Enabling preview features while on the default auto model
716
- else if (previewFeatures && currentModel === DEFAULT_GEMINI_MODEL_AUTO) {
717
- this.setModel(PREVIEW_GEMINI_MODEL_AUTO);
718
- }
719
- }
720
882
  getHasAccessToPreviewModel() {
721
883
  return this.hasAccessToPreviewModel;
722
884
  }
@@ -732,7 +894,30 @@ export class Config {
732
894
  const quota = await codeAssistServer.retrieveUserQuota({
733
895
  project: codeAssistServer.projectId,
734
896
  });
735
- const hasAccess = quota.buckets?.some((b) => b.modelId === PREVIEW_GEMINI_MODEL) ?? false;
897
+ if (quota.buckets) {
898
+ this.lastRetrievedQuota = quota;
899
+ this.lastQuotaFetchTime = Date.now();
900
+ for (const bucket of quota.buckets) {
901
+ if (bucket.modelId &&
902
+ bucket.remainingAmount &&
903
+ bucket.remainingFraction != null) {
904
+ const remaining = parseInt(bucket.remainingAmount, 10);
905
+ const limit = bucket.remainingFraction > 0
906
+ ? Math.round(remaining / bucket.remainingFraction)
907
+ : (this.modelQuotas.get(bucket.modelId)?.limit ?? 0);
908
+ if (!isNaN(remaining) && Number.isFinite(limit) && limit > 0) {
909
+ this.modelQuotas.set(bucket.modelId, {
910
+ remaining,
911
+ limit,
912
+ resetTime: bucket.resetTime,
913
+ });
914
+ }
915
+ }
916
+ }
917
+ this.emitQuotaChangedEvent();
918
+ }
919
+ const hasAccess = quota.buckets?.some((b) => b.modelId && isPreviewModel(b.modelId)) ??
920
+ false;
736
921
  this.setHasAccessToPreviewModel(hasAccess);
737
922
  return quota;
738
923
  }
@@ -741,6 +926,28 @@ export class Config {
741
926
  return undefined;
742
927
  }
743
928
  }
929
+ async refreshUserQuotaIfStale(staleMs = 30_000) {
930
+ const now = Date.now();
931
+ if (now - this.lastQuotaFetchTime > staleMs) {
932
+ return this.refreshUserQuota();
933
+ }
934
+ return this.lastRetrievedQuota;
935
+ }
936
+ getLastRetrievedQuota() {
937
+ return this.lastRetrievedQuota;
938
+ }
939
+ getRemainingQuotaForModel(modelId) {
940
+ const bucket = this.lastRetrievedQuota?.buckets?.find((b) => b.modelId === modelId);
941
+ if (!bucket)
942
+ return undefined;
943
+ return {
944
+ remainingAmount: bucket.remainingAmount
945
+ ? parseInt(bucket.remainingAmount, 10)
946
+ : undefined,
947
+ remainingFraction: bucket.remainingFraction,
948
+ resetTime: bucket.resetTime,
949
+ };
950
+ }
744
951
  getCoreTools() {
745
952
  return this.coreTools;
746
953
  }
@@ -749,11 +956,12 @@ export class Config {
749
956
  }
750
957
  /**
751
958
  * All the excluded tools from static configuration, loaded extensions, or
752
- * other sources.
959
+ * other sources (like the Policy Engine).
753
960
  *
754
961
  * May change over time.
755
962
  */
756
963
  getExcludeTools() {
964
+ // Right now this is present for backward compatibility with settings.json exclude
757
965
  const excludeToolsSet = new Set([...(this.excludeTools ?? [])]);
758
966
  for (const extension of this.getExtensionLoader().getExtensions()) {
759
967
  if (!extension.isActive) {
@@ -763,6 +971,10 @@ export class Config {
763
971
  excludeToolsSet.add(tool);
764
972
  }
765
973
  }
974
+ const policyExclusions = this.policyEngine.getExcludedTools();
975
+ for (const tool of policyExclusions) {
976
+ excludeToolsSet.add(tool);
977
+ }
766
978
  return excludeToolsSet;
767
979
  }
768
980
  getToolDiscoveryCommand() {
@@ -785,6 +997,12 @@ export class Config {
785
997
  getMcpEnabled() {
786
998
  return this.mcpEnabled;
787
999
  }
1000
+ getMcpEnablementCallbacks() {
1001
+ return this.mcpEnablementCallbacks;
1002
+ }
1003
+ getExtensionsEnabled() {
1004
+ return this.extensionsEnabled;
1005
+ }
788
1006
  getMcpClientManager() {
789
1007
  return this.mcpClientManager;
790
1008
  }
@@ -806,15 +1024,30 @@ export class Config {
806
1024
  }
807
1025
  getUserMemory() {
808
1026
  if (this.experimentalJitContext && this.contextManager) {
809
- return [
810
- this.contextManager.getGlobalMemory(),
811
- this.contextManager.getEnvironmentMemory(),
812
- ]
813
- .filter(Boolean)
814
- .join('\n\n');
1027
+ return {
1028
+ global: this.contextManager.getGlobalMemory(),
1029
+ extension: this.contextManager.getExtensionMemory(),
1030
+ project: this.contextManager.getEnvironmentMemory(),
1031
+ };
815
1032
  }
816
1033
  return this.userMemory;
817
1034
  }
1035
+ /**
1036
+ * Refreshes the MCP context, including memory, tools, and system instructions.
1037
+ */
1038
+ async refreshMcpContext() {
1039
+ if (this.experimentalJitContext && this.contextManager) {
1040
+ await this.contextManager.refresh();
1041
+ }
1042
+ else {
1043
+ const { refreshServerHierarchicalMemory } = await import('../utils/memoryDiscovery.js');
1044
+ await refreshServerHierarchicalMemory(this);
1045
+ }
1046
+ if (this.geminiClient?.isInitialized()) {
1047
+ await this.geminiClient.setTools();
1048
+ this.geminiClient.updateSystemInstruction();
1049
+ }
1050
+ }
818
1051
  setUserMemory(newUserMemory) {
819
1052
  this.userMemory = newUserMemory;
820
1053
  }
@@ -830,6 +1063,34 @@ export class Config {
830
1063
  isJitContextEnabled() {
831
1064
  return this.experimentalJitContext;
832
1065
  }
1066
+ getToolOutputMaskingEnabled() {
1067
+ return this.toolOutputMasking.enabled;
1068
+ }
1069
+ async getToolOutputMaskingConfig() {
1070
+ await this.ensureExperimentsLoaded();
1071
+ const remoteProtection = this.experiments?.flags[ExperimentFlags.MASKING_PROTECTION_THRESHOLD]
1072
+ ?.intValue;
1073
+ const remotePrunable = this.experiments?.flags[ExperimentFlags.MASKING_PRUNABLE_THRESHOLD]
1074
+ ?.intValue;
1075
+ const remoteProtectLatest = this.experiments?.flags[ExperimentFlags.MASKING_PROTECT_LATEST_TURN]
1076
+ ?.boolValue;
1077
+ const parsedProtection = remoteProtection
1078
+ ? parseInt(remoteProtection, 10)
1079
+ : undefined;
1080
+ const parsedPrunable = remotePrunable
1081
+ ? parseInt(remotePrunable, 10)
1082
+ : undefined;
1083
+ return {
1084
+ enabled: this.toolOutputMasking.enabled,
1085
+ toolProtectionThreshold: parsedProtection !== undefined && !isNaN(parsedProtection)
1086
+ ? parsedProtection
1087
+ : this.toolOutputMasking.toolProtectionThreshold,
1088
+ minPrunableTokensThreshold: parsedPrunable !== undefined && !isNaN(parsedPrunable)
1089
+ ? parsedPrunable
1090
+ : this.toolOutputMasking.minPrunableTokensThreshold,
1091
+ protectLatestTurn: remoteProtectLatest ?? this.toolOutputMasking.protectLatestTurn,
1092
+ };
1093
+ }
833
1094
  getGeminiMdFileCount() {
834
1095
  if (this.experimentalJitContext && this.contextManager) {
835
1096
  return this.contextManager.getLoadedPaths().size;
@@ -855,11 +1116,72 @@ export class Config {
855
1116
  if (!this.isTrustedFolder() && mode !== ApprovalMode.DEFAULT) {
856
1117
  throw new Error('Cannot enable privileged approval modes in an untrusted folder.');
857
1118
  }
1119
+ const currentMode = this.getApprovalMode();
1120
+ if (currentMode !== mode) {
1121
+ this.logCurrentModeDuration(this.getApprovalMode());
1122
+ logApprovalModeSwitch(this, new ApprovalModeSwitchEvent(currentMode, mode));
1123
+ this.lastModeSwitchTime = Date.now();
1124
+ }
858
1125
  this.policyEngine.setApprovalMode(mode);
1126
+ const isPlanModeTransition = currentMode !== mode &&
1127
+ (currentMode === ApprovalMode.PLAN || mode === ApprovalMode.PLAN);
1128
+ if (isPlanModeTransition) {
1129
+ this.syncPlanModeTools();
1130
+ this.updateSystemInstructionIfInitialized();
1131
+ }
1132
+ }
1133
+ /**
1134
+ * Synchronizes enter/exit plan mode tools based on current mode.
1135
+ */
1136
+ syncPlanModeTools() {
1137
+ const isPlanMode = this.getApprovalMode() === ApprovalMode.PLAN;
1138
+ const registry = this.getToolRegistry();
1139
+ if (isPlanMode) {
1140
+ if (registry.getTool(ENTER_PLAN_MODE_TOOL_NAME)) {
1141
+ registry.unregisterTool(ENTER_PLAN_MODE_TOOL_NAME);
1142
+ }
1143
+ if (!registry.getTool(EXIT_PLAN_MODE_TOOL_NAME)) {
1144
+ registry.registerTool(new ExitPlanModeTool(this, this.messageBus));
1145
+ }
1146
+ }
1147
+ else {
1148
+ if (registry.getTool(EXIT_PLAN_MODE_TOOL_NAME)) {
1149
+ registry.unregisterTool(EXIT_PLAN_MODE_TOOL_NAME);
1150
+ }
1151
+ if (this.planEnabled) {
1152
+ if (!registry.getTool(ENTER_PLAN_MODE_TOOL_NAME)) {
1153
+ registry.registerTool(new EnterPlanModeTool(this, this.messageBus));
1154
+ }
1155
+ }
1156
+ else {
1157
+ if (registry.getTool(ENTER_PLAN_MODE_TOOL_NAME)) {
1158
+ registry.unregisterTool(ENTER_PLAN_MODE_TOOL_NAME);
1159
+ }
1160
+ }
1161
+ }
1162
+ if (this.geminiClient?.isInitialized()) {
1163
+ this.geminiClient.setTools().catch((err) => {
1164
+ debugLogger.error('Failed to update tools', err);
1165
+ });
1166
+ }
1167
+ }
1168
+ /**
1169
+ * Logs the duration of the current approval mode.
1170
+ */
1171
+ logCurrentModeDuration(mode) {
1172
+ const now = Date.now();
1173
+ const duration = now - this.lastModeSwitchTime;
1174
+ logApprovalModeDuration(this, new ApprovalModeDurationEvent(mode, duration));
859
1175
  }
860
1176
  isYoloModeDisabled() {
861
1177
  return this.disableYoloMode || !this.isTrustedFolder();
862
1178
  }
1179
+ getRawOutput() {
1180
+ return this.rawOutput;
1181
+ }
1182
+ getAcceptRawOutputRisk() {
1183
+ return this.acceptRawOutputRisk;
1184
+ }
863
1185
  getPendingIncludeDirectories() {
864
1186
  return this.pendingIncludeDirectories;
865
1187
  }
@@ -903,10 +1225,10 @@ export class Config {
903
1225
  * Updates the system instruction with the latest user memory.
904
1226
  * Whenever the user memory (GEMINI.md files) is updated.
905
1227
  */
906
- async updateSystemInstructionIfInitialized() {
1228
+ updateSystemInstructionIfInitialized() {
907
1229
  const geminiClient = this.getGeminiClient();
908
1230
  if (geminiClient?.isInitialized()) {
909
- await geminiClient.updateSystemInstruction();
1231
+ geminiClient.updateSystemInstruction();
910
1232
  }
911
1233
  }
912
1234
  getModelRouterService() {
@@ -918,8 +1240,8 @@ export class Config {
918
1240
  getEnableRecursiveFileSearch() {
919
1241
  return this.fileFiltering.enableRecursiveFileSearch;
920
1242
  }
921
- getFileFilteringDisableFuzzySearch() {
922
- return this.fileFiltering.disableFuzzySearch;
1243
+ getFileFilteringEnableFuzzySearch() {
1244
+ return this.fileFiltering.enableFuzzySearch;
923
1245
  }
924
1246
  getFileFilteringRespectGitIgnore() {
925
1247
  return this.fileFiltering.respectGitIgnore;
@@ -927,10 +1249,16 @@ export class Config {
927
1249
  getFileFilteringRespectGeminiIgnore() {
928
1250
  return this.fileFiltering.respectGeminiIgnore;
929
1251
  }
1252
+ getCustomIgnoreFilePaths() {
1253
+ return this.fileFiltering.customIgnoreFilePaths;
1254
+ }
930
1255
  getFileFilteringOptions() {
931
1256
  return {
932
1257
  respectGitIgnore: this.fileFiltering.respectGitIgnore,
933
1258
  respectGeminiIgnore: this.fileFiltering.respectGeminiIgnore,
1259
+ maxFileCount: this.fileFiltering.maxFileCount,
1260
+ searchTimeout: this.fileFiltering.searchTimeout,
1261
+ customIgnoreFilePaths: this.fileFiltering.customIgnoreFilePaths,
934
1262
  };
935
1263
  }
936
1264
  /**
@@ -961,7 +1289,11 @@ export class Config {
961
1289
  }
962
1290
  getFileService() {
963
1291
  if (!this.fileDiscoveryService) {
964
- this.fileDiscoveryService = new FileDiscoveryService(this.targetDir);
1292
+ this.fileDiscoveryService = new FileDiscoveryService(this.targetDir, {
1293
+ respectGitIgnore: this.fileFiltering.respectGitIgnore,
1294
+ respectGeminiIgnore: this.fileFiltering.respectGeminiIgnore,
1295
+ customIgnoreFilePaths: this.fileFiltering.customIgnoreFilePaths,
1296
+ });
965
1297
  }
966
1298
  return this.fileDiscoveryService;
967
1299
  }
@@ -997,12 +1329,30 @@ export class Config {
997
1329
  getEnableExtensionReloading() {
998
1330
  return this.enableExtensionReloading;
999
1331
  }
1332
+ getDisableLLMCorrection() {
1333
+ return this.disableLLMCorrection;
1334
+ }
1335
+ isPlanEnabled() {
1336
+ return this.planEnabled;
1337
+ }
1338
+ getApprovedPlanPath() {
1339
+ return this.approvedPlanPath;
1340
+ }
1341
+ setApprovedPlanPath(path) {
1342
+ this.approvedPlanPath = path;
1343
+ }
1000
1344
  isAgentsEnabled() {
1001
1345
  return this.enableAgents;
1002
1346
  }
1347
+ isEventDrivenSchedulerEnabled() {
1348
+ return this.enableEventDrivenScheduler;
1349
+ }
1003
1350
  getNoBrowser() {
1004
1351
  return this.noBrowser;
1005
1352
  }
1353
+ getAgentsSettings() {
1354
+ return this.agents;
1355
+ }
1006
1356
  isBrowserLaunchSuppressed() {
1007
1357
  return this.getNoBrowser() || !shouldAttemptBrowserLaunch();
1008
1358
  }
@@ -1039,6 +1389,56 @@ export class Config {
1039
1389
  getFileSystemService() {
1040
1390
  return this.fileSystemService;
1041
1391
  }
1392
+ /**
1393
+ * Checks if a given absolute path is allowed for file system operations.
1394
+ * A path is allowed if it's within the workspace context or the project's temporary directory.
1395
+ *
1396
+ * @param absolutePath The absolute path to check.
1397
+ * @returns true if the path is allowed, false otherwise.
1398
+ */
1399
+ isPathAllowed(absolutePath) {
1400
+ const realpath = (p) => {
1401
+ let resolved;
1402
+ try {
1403
+ resolved = fs.realpathSync(p);
1404
+ }
1405
+ catch {
1406
+ resolved = path.resolve(p);
1407
+ }
1408
+ return os.platform() === 'win32' ? resolved.toLowerCase() : resolved;
1409
+ };
1410
+ const resolvedPath = realpath(absolutePath);
1411
+ const workspaceContext = this.getWorkspaceContext();
1412
+ if (workspaceContext.isPathWithinWorkspace(resolvedPath)) {
1413
+ return true;
1414
+ }
1415
+ const projectTempDir = this.storage.getProjectTempDir();
1416
+ const resolvedTempDir = realpath(projectTempDir);
1417
+ return isSubpath(resolvedTempDir, resolvedPath);
1418
+ }
1419
+ /**
1420
+ * Validates if a path is allowed and returns a detailed error message if not.
1421
+ *
1422
+ * @param absolutePath The absolute path to validate.
1423
+ * @param checkType The type of access to check ('read' or 'write'). Defaults to 'write' for safety.
1424
+ * @returns An error message string if the path is disallowed, null otherwise.
1425
+ */
1426
+ validatePathAccess(absolutePath, checkType = 'write') {
1427
+ // For read operations, check read-only paths first
1428
+ if (checkType === 'read') {
1429
+ if (this.getWorkspaceContext().isPathReadable(absolutePath)) {
1430
+ return null;
1431
+ }
1432
+ }
1433
+ // Then check standard allowed paths (Workspace + Temp)
1434
+ // This covers 'write' checks and acts as a fallback/temp-dir check for 'read'
1435
+ if (this.isPathAllowed(absolutePath)) {
1436
+ return null;
1437
+ }
1438
+ const workspaceDirs = this.getWorkspaceContext().getDirectories();
1439
+ const projectTempDir = this.storage.getProjectTempDir();
1440
+ return `Path not in workspace: Attempted path "${absolutePath}" resolves outside the allowed workspace directories: ${workspaceDirs.join(', ')} or the project temp directory: ${projectTempDir}`;
1441
+ }
1042
1442
  /**
1043
1443
  * Set a custom FileSystemService
1044
1444
  */
@@ -1061,6 +1461,19 @@ export class Config {
1061
1461
  await this.ensureExperimentsLoaded();
1062
1462
  return this.experiments?.flags[ExperimentFlags.USER_CACHING]?.boolValue;
1063
1463
  }
1464
+ async getNumericalRoutingEnabled() {
1465
+ await this.ensureExperimentsLoaded();
1466
+ return !!this.experiments?.flags[ExperimentFlags.ENABLE_NUMERICAL_ROUTING]
1467
+ ?.boolValue;
1468
+ }
1469
+ async getClassifierThreshold() {
1470
+ await this.ensureExperimentsLoaded();
1471
+ const flag = this.experiments?.flags[ExperimentFlags.CLASSIFIER_THRESHOLD];
1472
+ if (flag?.intValue !== undefined) {
1473
+ return parseInt(flag.intValue, 10);
1474
+ }
1475
+ return flag?.floatValue;
1476
+ }
1064
1477
  async getBannerTextNoCapacityIssues() {
1065
1478
  await this.ensureExperimentsLoaded();
1066
1479
  return (this.experiments?.flags[ExperimentFlags.BANNER_TEXT_NO_CAPACITY_ISSUES]
@@ -1071,6 +1484,30 @@ export class Config {
1071
1484
  return (this.experiments?.flags[ExperimentFlags.BANNER_TEXT_CAPACITY_ISSUES]
1072
1485
  ?.stringValue ?? '');
1073
1486
  }
1487
+ /**
1488
+ * Returns whether Gemini 3.1 has been launched.
1489
+ * This method is async and ensures that experiments are loaded before returning the result.
1490
+ */
1491
+ async getGemini31Launched() {
1492
+ await this.ensureExperimentsLoaded();
1493
+ return this.getGemini31LaunchedSync();
1494
+ }
1495
+ /**
1496
+ * Returns whether Gemini 3.1 has been launched.
1497
+ *
1498
+ * Note: This method should only be called after startup, once experiments have been loaded.
1499
+ * If you need to call this during startup or from an async context, use
1500
+ * getGemini31Launched instead.
1501
+ */
1502
+ getGemini31LaunchedSync() {
1503
+ const authType = this.contentGeneratorConfig?.authType;
1504
+ if (authType === AuthType.USE_GEMINI ||
1505
+ authType === AuthType.USE_VERTEX_AI) {
1506
+ return true;
1507
+ }
1508
+ return (this.experiments?.flags[ExperimentFlags.GEMINI_3_1_PRO_LAUNCHED]
1509
+ ?.boolValue ?? false);
1510
+ }
1074
1511
  async ensureExperimentsLoaded() {
1075
1512
  if (!this.experimentsPromise) {
1076
1513
  return;
@@ -1100,18 +1537,37 @@ export class Config {
1100
1537
  if (this.onReload) {
1101
1538
  const refreshed = await this.onReload();
1102
1539
  this.disabledSkills = refreshed.disabledSkills ?? [];
1540
+ this.getSkillManager().setAdminSettings(refreshed.adminSkillsEnabled ?? this.adminSkillsEnabled);
1103
1541
  }
1104
- await this.getSkillManager().discoverSkills(this.storage, this.getExtensions());
1105
- this.getSkillManager().setDisabledSkills(this.disabledSkills);
1106
- // Re-register ActivateSkillTool to update its schema with the newly discovered skills
1107
- if (this.getSkillManager().getSkills().length > 0) {
1108
- this.getToolRegistry().registerTool(new ActivateSkillTool(this, this.messageBus));
1542
+ if (this.getSkillManager().isAdminEnabled()) {
1543
+ await this.getSkillManager().discoverSkills(this.storage, this.getExtensions(), this.isTrustedFolder());
1544
+ this.getSkillManager().setDisabledSkills(this.disabledSkills);
1545
+ // Re-register ActivateSkillTool to update its schema with the newly discovered skills
1546
+ if (this.getSkillManager().getSkills().length > 0) {
1547
+ this.getToolRegistry().unregisterTool(ActivateSkillTool.Name);
1548
+ this.getToolRegistry().registerTool(new ActivateSkillTool(this, this.messageBus));
1549
+ }
1550
+ else {
1551
+ this.getToolRegistry().unregisterTool(ActivateSkillTool.Name);
1552
+ }
1109
1553
  }
1110
1554
  else {
1555
+ this.getSkillManager().clearSkills();
1111
1556
  this.getToolRegistry().unregisterTool(ActivateSkillTool.Name);
1112
1557
  }
1113
1558
  // Notify the client that system instructions might need updating
1114
- await this.updateSystemInstructionIfInitialized();
1559
+ this.updateSystemInstructionIfInitialized();
1560
+ }
1561
+ /**
1562
+ * Reloads agent settings.
1563
+ */
1564
+ async reloadAgents() {
1565
+ if (this.onReload) {
1566
+ const refreshed = await this.onReload();
1567
+ if (refreshed.agents) {
1568
+ this.agents = refreshed.agents;
1569
+ }
1570
+ }
1115
1571
  }
1116
1572
  isInteractive() {
1117
1573
  return this.interactive;
@@ -1119,6 +1575,9 @@ export class Config {
1119
1575
  getUseRipgrep() {
1120
1576
  return this.useRipgrep;
1121
1577
  }
1578
+ getUseBackgroundColor() {
1579
+ return this.useBackgroundColor;
1580
+ }
1122
1581
  getEnableInteractiveShell() {
1123
1582
  return this.enableInteractiveShell;
1124
1583
  }
@@ -1156,17 +1615,14 @@ export class Config {
1156
1615
  getEnablePromptCompletion() {
1157
1616
  return this.enablePromptCompletion;
1158
1617
  }
1159
- getEnableToolOutputTruncation() {
1160
- return this.enableToolOutputTruncation;
1161
- }
1162
1618
  getTruncateToolOutputThreshold() {
1163
1619
  return Math.min(
1164
1620
  // Estimate remaining context window in characters (1 token ~= 4 chars).
1165
1621
  4 *
1166
1622
  (tokenLimit(this.model) - uiTelemetryService.getLastPromptTokenCount()), this.truncateToolOutputThreshold);
1167
1623
  }
1168
- getTruncateToolOutputLines() {
1169
- return this.truncateToolOutputLines;
1624
+ getNextCompressionTruncationId() {
1625
+ return ++this.compressionTruncationCounter;
1170
1626
  }
1171
1627
  getUseWriteTodos() {
1172
1628
  return this.useWriteTodos;
@@ -1195,19 +1651,15 @@ export class Config {
1195
1651
  getEnableHooks() {
1196
1652
  return this.enableHooks;
1197
1653
  }
1198
- getCodebaseInvestigatorSettings() {
1199
- return this.codebaseInvestigatorSettings;
1200
- }
1201
- getIntrospectionAgentSettings() {
1202
- return this.introspectionAgentSettings;
1654
+ getEnableHooksUI() {
1655
+ return this.enableHooksUI;
1203
1656
  }
1204
1657
  async createToolRegistry() {
1205
1658
  const registry = new ToolRegistry(this, this.messageBus);
1206
1659
  // helper to create & register core tools that are enabled
1207
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1208
- const registerCoreTool = (ToolClass, ...args) => {
1209
- const className = ToolClass.name;
1210
- const toolName = ToolClass.Name || className;
1660
+ const maybeRegister = (toolClass, registerFn) => {
1661
+ const className = toolClass.name;
1662
+ const toolName = toolClass.Name || className;
1211
1663
  const coreTools = this.getCoreTools();
1212
1664
  // On some platforms, the className can be minified to _ClassName.
1213
1665
  const normalizedClassName = className.replace(/^_+/, '');
@@ -1219,13 +1671,11 @@ export class Config {
1219
1671
  tool.startsWith(`${normalizedClassName}(`));
1220
1672
  }
1221
1673
  if (isEnabled) {
1222
- // Pass message bus to tools (required for policy engine integration)
1223
- const toolArgs = [...args, this.getMessageBus()];
1224
- registry.registerTool(new ToolClass(...toolArgs));
1674
+ registerFn();
1225
1675
  }
1226
1676
  };
1227
- registerCoreTool(LSTool, this);
1228
- registerCoreTool(ReadFileTool, this);
1677
+ maybeRegister(LSTool, () => registry.registerTool(new LSTool(this, this.messageBus)));
1678
+ maybeRegister(ReadFileTool, () => registry.registerTool(new ReadFileTool(this, this.messageBus)));
1229
1679
  if (this.getUseRipgrep()) {
1230
1680
  let useRipgrep = false;
1231
1681
  let errorString = undefined;
@@ -1236,43 +1686,58 @@ export class Config {
1236
1686
  errorString = String(error);
1237
1687
  }
1238
1688
  if (useRipgrep) {
1239
- registerCoreTool(RipGrepTool, this);
1689
+ maybeRegister(RipGrepTool, () => registry.registerTool(new RipGrepTool(this, this.messageBus)));
1240
1690
  }
1241
1691
  else {
1242
1692
  logRipgrepFallback(this, new RipgrepFallbackEvent(errorString));
1243
- registerCoreTool(GrepTool, this);
1693
+ maybeRegister(GrepTool, () => registry.registerTool(new GrepTool(this, this.messageBus)));
1244
1694
  }
1245
1695
  }
1246
1696
  else {
1247
- registerCoreTool(GrepTool, this);
1248
- }
1249
- registerCoreTool(GlobTool, this);
1250
- registerCoreTool(ActivateSkillTool, this);
1251
- registerCoreTool(EditTool, this);
1252
- registerCoreTool(WriteFileTool, this);
1253
- registerCoreTool(WebFetchTool, this);
1254
- registerCoreTool(ShellTool, this);
1255
- registerCoreTool(MemoryTool);
1256
- registerCoreTool(WebSearchTool, this);
1697
+ maybeRegister(GrepTool, () => registry.registerTool(new GrepTool(this, this.messageBus)));
1698
+ }
1699
+ maybeRegister(GlobTool, () => registry.registerTool(new GlobTool(this, this.messageBus)));
1700
+ maybeRegister(ActivateSkillTool, () => registry.registerTool(new ActivateSkillTool(this, this.messageBus)));
1701
+ maybeRegister(EditTool, () => registry.registerTool(new EditTool(this, this.messageBus)));
1702
+ maybeRegister(WriteFileTool, () => registry.registerTool(new WriteFileTool(this, this.messageBus)));
1703
+ maybeRegister(WebFetchTool, () => registry.registerTool(new WebFetchTool(this, this.messageBus)));
1704
+ maybeRegister(ShellTool, () => registry.registerTool(new ShellTool(this, this.messageBus)));
1705
+ maybeRegister(MemoryTool, () => registry.registerTool(new MemoryTool(this.messageBus)));
1706
+ maybeRegister(WebSearchTool, () => registry.registerTool(new WebSearchTool(this, this.messageBus)));
1707
+ maybeRegister(AskUserTool, () => registry.registerTool(new AskUserTool(this.messageBus)));
1257
1708
  if (this.getUseWriteTodos()) {
1258
- registerCoreTool(WriteTodosTool);
1709
+ maybeRegister(WriteTodosTool, () => registry.registerTool(new WriteTodosTool(this.messageBus)));
1259
1710
  }
1260
- // Register Subagents as Tools
1261
- // Register DelegateToAgentTool if agents are enabled
1262
- if (this.isAgentsEnabled() ||
1263
- this.getCodebaseInvestigatorSettings().enabled) {
1264
- // Check if the delegate tool itself is allowed (if allowedTools is set)
1265
- const allowedTools = this.getAllowedTools();
1266
- const isAllowed = !allowedTools || allowedTools.includes(DELEGATE_TO_AGENT_TOOL_NAME);
1267
- if (isAllowed) {
1268
- const delegateTool = new DelegateToAgentTool(this.agentRegistry, this, this.getMessageBus());
1269
- registry.registerTool(delegateTool);
1270
- }
1711
+ if (this.isPlanEnabled()) {
1712
+ maybeRegister(ExitPlanModeTool, () => registry.registerTool(new ExitPlanModeTool(this, this.messageBus)));
1713
+ maybeRegister(EnterPlanModeTool, () => registry.registerTool(new EnterPlanModeTool(this, this.messageBus)));
1271
1714
  }
1715
+ // Register Subagents as Tools
1716
+ this.registerSubAgentTools(registry);
1272
1717
  await registry.discoverAllTools();
1273
1718
  registry.sortTools();
1274
1719
  return registry;
1275
1720
  }
1721
+ /**
1722
+ * Registers SubAgentTools for all available agents.
1723
+ */
1724
+ registerSubAgentTools(registry) {
1725
+ const agentsOverrides = this.getAgentsSettings().overrides ?? {};
1726
+ if (this.isAgentsEnabled() ||
1727
+ agentsOverrides['codebase_investigator']?.enabled !== false ||
1728
+ agentsOverrides['cli_help']?.enabled !== false) {
1729
+ const definitions = this.agentRegistry.getAllDefinitions();
1730
+ for (const definition of definitions) {
1731
+ try {
1732
+ const tool = new SubagentTool(definition, this, this.getMessageBus());
1733
+ registry.registerTool(tool);
1734
+ }
1735
+ catch (e) {
1736
+ debugLogger.warn(`Failed to register tool for agent ${definition.name}: ${getErrorMessage(e)}`);
1737
+ }
1738
+ }
1739
+ }
1740
+ }
1276
1741
  /**
1277
1742
  * Get the hook system instance
1278
1743
  */
@@ -1291,6 +1756,14 @@ export class Config {
1291
1756
  getProjectHooks() {
1292
1757
  return this.projectHooks;
1293
1758
  }
1759
+ /**
1760
+ * Update the list of disabled hooks dynamically.
1761
+ * This is used to keep the running system in sync with settings changes
1762
+ * without risk of loading new hook definitions into memory.
1763
+ */
1764
+ updateDisabledHooks(disabledHooks) {
1765
+ this.disabledHooks = disabledHooks;
1766
+ }
1294
1767
  /**
1295
1768
  * Get disabled hooks list
1296
1769
  */
@@ -1347,6 +1820,32 @@ export class Config {
1347
1820
  });
1348
1821
  debugLogger.debug('Experiments loaded', summaryString);
1349
1822
  }
1823
+ onAgentsRefreshed = async () => {
1824
+ if (this.toolRegistry) {
1825
+ this.registerSubAgentTools(this.toolRegistry);
1826
+ }
1827
+ // Propagate updates to the active chat session
1828
+ const client = this.getGeminiClient();
1829
+ if (client?.isInitialized()) {
1830
+ await client.setTools();
1831
+ client.updateSystemInstruction();
1832
+ }
1833
+ else {
1834
+ debugLogger.debug('[Config] GeminiClient not initialized; skipping live prompt/tool refresh.');
1835
+ }
1836
+ };
1837
+ /**
1838
+ * Disposes of resources and removes event listeners.
1839
+ */
1840
+ async dispose() {
1841
+ this.logCurrentModeDuration(this.getApprovalMode());
1842
+ coreEvents.off(CoreEvent.AgentsRefreshed, this.onAgentsRefreshed);
1843
+ this.agentRegistry?.dispose();
1844
+ this.geminiClient?.dispose();
1845
+ if (this.mcpClientManager) {
1846
+ await this.mcpClientManager.stop();
1847
+ }
1848
+ }
1350
1849
  }
1351
1850
  // Export model constants for use in CLI
1352
1851
  export { DEFAULT_GEMINI_FLASH_MODEL };