@office-ai/aioncli-core 0.18.7 → 0.24.0

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 (890) hide show
  1. package/dist/docs/CONTRIBUTING.md +546 -0
  2. package/dist/docs/architecture.md +80 -0
  3. package/dist/docs/assets/connected_devtools.png +0 -0
  4. package/dist/docs/assets/gemini-screenshot.png +0 -0
  5. package/dist/docs/assets/release_patch.png +0 -0
  6. package/dist/docs/assets/theme-ansi-light.png +0 -0
  7. package/dist/docs/assets/theme-ansi.png +0 -0
  8. package/dist/docs/assets/theme-atom-one.png +0 -0
  9. package/dist/docs/assets/theme-ayu-light.png +0 -0
  10. package/dist/docs/assets/theme-ayu.png +0 -0
  11. package/dist/docs/assets/theme-custom.png +0 -0
  12. package/dist/docs/assets/theme-default-light.png +0 -0
  13. package/dist/docs/assets/theme-default.png +0 -0
  14. package/dist/docs/assets/theme-dracula.png +0 -0
  15. package/dist/docs/assets/theme-github-light.png +0 -0
  16. package/dist/docs/assets/theme-github.png +0 -0
  17. package/dist/docs/assets/theme-google-light.png +0 -0
  18. package/dist/docs/assets/theme-xcode-light.png +0 -0
  19. package/dist/docs/changelogs/index.md +592 -0
  20. package/dist/docs/changelogs/latest.md +225 -0
  21. package/dist/docs/changelogs/preview.md +129 -0
  22. package/dist/docs/changelogs/releases.md +896 -0
  23. package/dist/docs/cli/authentication.md +3 -0
  24. package/dist/docs/cli/checkpointing.md +94 -0
  25. package/dist/docs/cli/commands.md +354 -0
  26. package/dist/docs/cli/configuration.md +780 -0
  27. package/dist/docs/cli/custom-commands.md +315 -0
  28. package/dist/docs/cli/enterprise.md +565 -0
  29. package/dist/docs/cli/gemini-ignore.md +71 -0
  30. package/dist/docs/cli/gemini-md.md +108 -0
  31. package/dist/docs/cli/generation-settings.md +210 -0
  32. package/dist/docs/cli/headless.md +388 -0
  33. package/dist/docs/cli/index.md +63 -0
  34. package/dist/docs/cli/keyboard-shortcuts.md +143 -0
  35. package/dist/docs/cli/model-routing.md +37 -0
  36. package/dist/docs/cli/model.md +62 -0
  37. package/dist/docs/cli/sandbox.md +171 -0
  38. package/dist/docs/cli/session-management.md +158 -0
  39. package/dist/docs/cli/settings.md +114 -0
  40. package/dist/docs/cli/skills.md +156 -0
  41. package/dist/docs/cli/system-prompt.md +93 -0
  42. package/dist/docs/cli/telemetry.md +791 -0
  43. package/dist/docs/cli/themes.md +237 -0
  44. package/dist/docs/cli/token-caching.md +20 -0
  45. package/dist/docs/cli/trusted-folders.md +95 -0
  46. package/dist/docs/cli/tutorials/skills-getting-started.md +124 -0
  47. package/dist/docs/cli/tutorials.md +87 -0
  48. package/dist/docs/cli/uninstall.md +47 -0
  49. package/dist/docs/core/index.md +101 -0
  50. package/dist/docs/core/memport.md +244 -0
  51. package/dist/docs/core/policy-engine.md +267 -0
  52. package/dist/docs/core/tools-api.md +131 -0
  53. package/dist/docs/examples/proxy-script.md +83 -0
  54. package/dist/docs/extension.md +160 -0
  55. package/dist/docs/extensions/extension-releasing.md +183 -0
  56. package/dist/docs/extensions/getting-started-extensions.md +245 -0
  57. package/dist/docs/extensions/index.md +293 -0
  58. package/dist/docs/faq.md +154 -0
  59. package/dist/docs/get-started/authentication.md +321 -0
  60. package/dist/docs/get-started/configuration-v1.md +888 -0
  61. package/dist/docs/get-started/configuration.md +1536 -0
  62. package/dist/docs/get-started/deployment.md +143 -0
  63. package/dist/docs/get-started/examples.md +219 -0
  64. package/dist/docs/get-started/gemini-3.md +116 -0
  65. package/dist/docs/get-started/index.md +71 -0
  66. package/dist/docs/get-started/installation.md +141 -0
  67. package/dist/docs/hooks/best-practices.md +856 -0
  68. package/dist/docs/hooks/index.md +687 -0
  69. package/dist/docs/hooks/reference.md +168 -0
  70. package/dist/docs/hooks/writing-hooks.md +1026 -0
  71. package/dist/docs/ide-integration/ide-companion-spec.md +267 -0
  72. package/dist/docs/ide-integration/index.md +202 -0
  73. package/dist/docs/index.md +147 -0
  74. package/dist/docs/integration-tests.md +211 -0
  75. package/dist/docs/issue-and-pr-automation.md +134 -0
  76. package/dist/docs/local-development.md +128 -0
  77. package/dist/docs/mermaid/context.mmd +103 -0
  78. package/dist/docs/mermaid/render-path.mmd +64 -0
  79. package/dist/docs/npm.md +62 -0
  80. package/dist/docs/quota-and-pricing.md +158 -0
  81. package/dist/docs/release-confidence.md +164 -0
  82. package/dist/docs/releases.md +540 -0
  83. package/dist/docs/sidebar.json +301 -0
  84. package/dist/docs/tools/file-system.md +217 -0
  85. package/dist/docs/tools/index.md +95 -0
  86. package/dist/docs/tools/mcp-server.md +1044 -0
  87. package/dist/docs/tools/memory.md +54 -0
  88. package/dist/docs/tools/shell.md +260 -0
  89. package/dist/docs/tools/todos.md +57 -0
  90. package/dist/docs/tools/web-fetch.md +59 -0
  91. package/dist/docs/tools/web-search.md +42 -0
  92. package/dist/docs/tos-privacy.md +96 -0
  93. package/dist/docs/troubleshooting.md +158 -0
  94. package/dist/index.d.ts +1 -1
  95. package/dist/index.js +1 -1
  96. package/dist/index.js.map +1 -1
  97. package/dist/src/agents/a2a-client-manager.d.ts +78 -0
  98. package/dist/src/agents/a2a-client-manager.js +295 -0
  99. package/dist/src/agents/a2a-client-manager.js.map +1 -0
  100. package/dist/src/agents/a2a-client-manager.test.d.ts +6 -0
  101. package/dist/src/agents/a2a-client-manager.test.js +237 -0
  102. package/dist/src/agents/a2a-client-manager.test.js.map +1 -0
  103. package/dist/src/agents/a2aUtils.d.ts +28 -0
  104. package/dist/src/agents/a2aUtils.js +111 -0
  105. package/dist/src/agents/a2aUtils.js.map +1 -0
  106. package/dist/src/agents/a2aUtils.test.d.ts +6 -0
  107. package/dist/src/agents/a2aUtils.test.js +147 -0
  108. package/dist/src/agents/a2aUtils.test.js.map +1 -0
  109. package/dist/src/agents/codebase-investigator.d.ts +2 -2
  110. package/dist/src/agents/codebase-investigator.js +5 -4
  111. package/dist/src/agents/codebase-investigator.js.map +1 -1
  112. package/dist/src/agents/delegate-to-agent-tool.d.ts +19 -0
  113. package/dist/src/agents/delegate-to-agent-tool.js +115 -0
  114. package/dist/src/agents/delegate-to-agent-tool.js.map +1 -0
  115. package/dist/src/agents/delegate-to-agent-tool.test.d.ts +6 -0
  116. package/dist/src/agents/delegate-to-agent-tool.test.js +165 -0
  117. package/dist/src/agents/delegate-to-agent-tool.test.js.map +1 -0
  118. package/dist/src/agents/introspection-agent.d.ts +23 -0
  119. package/dist/src/agents/introspection-agent.js +72 -0
  120. package/dist/src/agents/introspection-agent.js.map +1 -0
  121. package/dist/src/agents/introspection-agent.test.d.ts +6 -0
  122. package/dist/src/agents/introspection-agent.test.js +47 -0
  123. package/dist/src/agents/introspection-agent.test.js.map +1 -0
  124. package/dist/src/agents/local-executor.d.ts +108 -0
  125. package/dist/src/agents/local-executor.js +801 -0
  126. package/dist/src/agents/local-executor.js.map +1 -0
  127. package/dist/src/agents/local-executor.test.d.ts +6 -0
  128. package/dist/src/agents/local-executor.test.js +1380 -0
  129. package/dist/src/agents/local-executor.test.js.map +1 -0
  130. package/dist/src/agents/local-invocation.d.ts +45 -0
  131. package/dist/src/agents/local-invocation.js +101 -0
  132. package/dist/src/agents/local-invocation.js.map +1 -0
  133. package/dist/src/agents/local-invocation.test.d.ts +6 -0
  134. package/dist/src/agents/local-invocation.test.js +218 -0
  135. package/dist/src/agents/local-invocation.test.js.map +1 -0
  136. package/dist/src/agents/registry.d.ts +25 -1
  137. package/dist/src/agents/registry.js +149 -5
  138. package/dist/src/agents/registry.js.map +1 -1
  139. package/dist/src/agents/registry.test.js +247 -25
  140. package/dist/src/agents/registry.test.js.map +1 -1
  141. package/dist/src/agents/remote-invocation.d.ts +35 -0
  142. package/dist/src/agents/remote-invocation.js +129 -0
  143. package/dist/src/agents/remote-invocation.js.map +1 -0
  144. package/dist/src/agents/remote-invocation.test.d.ts +6 -0
  145. package/dist/src/agents/remote-invocation.test.js +201 -0
  146. package/dist/src/agents/remote-invocation.test.js.map +1 -0
  147. package/dist/src/agents/subagent-tool-wrapper.d.ts +2 -2
  148. package/dist/src/agents/subagent-tool-wrapper.js +11 -6
  149. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
  150. package/dist/src/agents/subagent-tool-wrapper.test.js +25 -17
  151. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
  152. package/dist/src/agents/toml-loader.d.ts +74 -0
  153. package/dist/src/agents/toml-loader.js +248 -0
  154. package/dist/src/agents/toml-loader.js.map +1 -0
  155. package/dist/src/agents/toml-loader.test.d.ts +6 -0
  156. package/dist/src/agents/toml-loader.test.js +309 -0
  157. package/dist/src/agents/toml-loader.test.js.map +1 -0
  158. package/dist/src/agents/types.d.ts +18 -4
  159. package/dist/src/availability/errorClassification.d.ts +7 -0
  160. package/dist/src/availability/errorClassification.js +20 -0
  161. package/dist/src/availability/errorClassification.js.map +1 -0
  162. package/dist/src/availability/modelAvailabilityService.d.ts +36 -0
  163. package/dist/src/availability/modelAvailabilityService.js +87 -0
  164. package/dist/src/availability/modelAvailabilityService.js.map +1 -0
  165. package/dist/src/availability/modelAvailabilityService.test.d.ts +6 -0
  166. package/dist/src/availability/modelAvailabilityService.test.js +140 -0
  167. package/dist/src/availability/modelAvailabilityService.test.js.map +1 -0
  168. package/dist/src/availability/modelPolicy.d.ts +49 -0
  169. package/dist/src/availability/modelPolicy.js +7 -0
  170. package/dist/src/availability/modelPolicy.js.map +1 -0
  171. package/dist/src/availability/policyCatalog.d.ts +23 -0
  172. package/dist/src/availability/policyCatalog.js +82 -0
  173. package/dist/src/availability/policyCatalog.js.map +1 -0
  174. package/dist/src/availability/policyCatalog.test.d.ts +6 -0
  175. package/dist/src/availability/policyCatalog.test.js +70 -0
  176. package/dist/src/availability/policyCatalog.test.js.map +1 -0
  177. package/dist/src/availability/policyHelpers.d.ts +52 -0
  178. package/dist/src/availability/policyHelpers.js +136 -0
  179. package/dist/src/availability/policyHelpers.js.map +1 -0
  180. package/dist/src/availability/policyHelpers.test.d.ts +6 -0
  181. package/dist/src/availability/policyHelpers.test.js +182 -0
  182. package/dist/src/availability/policyHelpers.test.js.map +1 -0
  183. package/dist/src/availability/testUtils.d.ts +10 -0
  184. package/dist/src/availability/testUtils.js +22 -0
  185. package/dist/src/availability/testUtils.js.map +1 -0
  186. package/dist/src/code_assist/experiments/client_metadata.js +3 -2
  187. package/dist/src/code_assist/experiments/client_metadata.js.map +1 -1
  188. package/dist/src/code_assist/experiments/client_metadata.test.js +7 -10
  189. package/dist/src/code_assist/experiments/client_metadata.test.js.map +1 -1
  190. package/dist/src/code_assist/experiments/experiments.js +2 -2
  191. package/dist/src/code_assist/experiments/experiments.js.map +1 -1
  192. package/dist/src/code_assist/oauth2.d.ts +2 -0
  193. package/dist/src/code_assist/oauth2.js +73 -17
  194. package/dist/src/code_assist/oauth2.js.map +1 -1
  195. package/dist/src/code_assist/oauth2.test.js +195 -18
  196. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  197. package/dist/src/code_assist/server.d.ts +10 -1
  198. package/dist/src/code_assist/server.js +81 -15
  199. package/dist/src/code_assist/server.js.map +1 -1
  200. package/dist/src/code_assist/server.test.js +221 -25
  201. package/dist/src/code_assist/server.test.js.map +1 -1
  202. package/dist/src/code_assist/setup.js +6 -4
  203. package/dist/src/code_assist/setup.js.map +1 -1
  204. package/dist/src/code_assist/setup.test.js +63 -0
  205. package/dist/src/code_assist/setup.test.js.map +1 -1
  206. package/dist/src/code_assist/telemetry.d.ts +14 -0
  207. package/dist/src/code_assist/telemetry.js +156 -0
  208. package/dist/src/code_assist/telemetry.js.map +1 -0
  209. package/dist/src/code_assist/telemetry.test.d.ts +6 -0
  210. package/dist/src/code_assist/telemetry.test.js +300 -0
  211. package/dist/src/code_assist/telemetry.test.js.map +1 -0
  212. package/dist/src/code_assist/types.d.ts +84 -1
  213. package/dist/src/code_assist/types.js +21 -0
  214. package/dist/src/code_assist/types.js.map +1 -1
  215. package/dist/src/commands/init.d.ts +7 -0
  216. package/dist/src/commands/init.js +53 -0
  217. package/dist/src/commands/init.js.map +1 -0
  218. package/dist/src/commands/init.test.d.ts +6 -0
  219. package/dist/src/commands/init.test.js +25 -0
  220. package/dist/src/commands/init.test.js.map +1 -0
  221. package/dist/src/commands/restore.d.ts +9 -0
  222. package/dist/src/commands/restore.js +46 -0
  223. package/dist/src/commands/restore.js.map +1 -0
  224. package/dist/src/commands/restore.test.d.ts +6 -0
  225. package/dist/src/commands/restore.test.js +137 -0
  226. package/dist/src/commands/restore.test.js.map +1 -0
  227. package/dist/src/commands/types.d.ts +41 -0
  228. package/dist/src/commands/types.js +7 -0
  229. package/dist/src/commands/types.js.map +1 -0
  230. package/dist/src/config/config.d.ts +120 -23
  231. package/dist/src/config/config.js +336 -116
  232. package/dist/src/config/config.js.map +1 -1
  233. package/dist/src/config/config.test.js +373 -95
  234. package/dist/src/config/config.test.js.map +1 -1
  235. package/dist/src/config/defaultModelConfigs.js +46 -0
  236. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  237. package/dist/src/config/flashFallback.test.js +11 -35
  238. package/dist/src/config/flashFallback.test.js.map +1 -1
  239. package/dist/src/config/models.d.ts +29 -15
  240. package/dist/src/config/models.js +78 -28
  241. package/dist/src/config/models.js.map +1 -1
  242. package/dist/src/config/models.test.js +91 -77
  243. package/dist/src/config/models.test.js.map +1 -1
  244. package/dist/src/config/storage.d.ts +4 -0
  245. package/dist/src/config/storage.js +12 -0
  246. package/dist/src/config/storage.js.map +1 -1
  247. package/dist/src/config/storage.test.js +16 -0
  248. package/dist/src/config/storage.test.js.map +1 -1
  249. package/dist/src/confirmation-bus/message-bus.d.ts +6 -0
  250. package/dist/src/confirmation-bus/message-bus.js +66 -3
  251. package/dist/src/confirmation-bus/message-bus.js.map +1 -1
  252. package/dist/src/confirmation-bus/types.d.ts +29 -2
  253. package/dist/src/confirmation-bus/types.js +3 -0
  254. package/dist/src/confirmation-bus/types.js.map +1 -1
  255. package/dist/src/core/baseLlmClient.d.ts +30 -2
  256. package/dist/src/core/baseLlmClient.js +107 -49
  257. package/dist/src/core/baseLlmClient.js.map +1 -1
  258. package/dist/src/core/baseLlmClient.test.js +271 -13
  259. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  260. package/dist/src/core/client.d.ts +5 -1
  261. package/dist/src/core/client.js +241 -63
  262. package/dist/src/core/client.js.map +1 -1
  263. package/dist/src/core/client.test.js +462 -72
  264. package/dist/src/core/client.test.js.map +1 -1
  265. package/dist/src/core/clientHookTriggers.d.ts +36 -0
  266. package/dist/src/core/clientHookTriggers.js +76 -0
  267. package/dist/src/core/clientHookTriggers.js.map +1 -0
  268. package/dist/src/core/contentGenerator.js +17 -4
  269. package/dist/src/core/contentGenerator.js.map +1 -1
  270. package/dist/src/core/contentGenerator.test.js +132 -3
  271. package/dist/src/core/contentGenerator.test.js.map +1 -1
  272. package/dist/src/core/coreToolHookTriggers.d.ts +55 -0
  273. package/dist/src/core/coreToolHookTriggers.js +304 -0
  274. package/dist/src/core/coreToolHookTriggers.js.map +1 -0
  275. package/dist/src/core/coreToolHookTriggers.test.d.ts +6 -0
  276. package/dist/src/core/coreToolHookTriggers.test.js +191 -0
  277. package/dist/src/core/coreToolHookTriggers.test.js.map +1 -0
  278. package/dist/src/core/coreToolScheduler.d.ts +6 -85
  279. package/dist/src/core/coreToolScheduler.js +91 -274
  280. package/dist/src/core/coreToolScheduler.js.map +1 -1
  281. package/dist/src/core/coreToolScheduler.test.js +161 -346
  282. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  283. package/dist/src/core/geminiChat.js +132 -76
  284. package/dist/src/core/geminiChat.js.map +1 -1
  285. package/dist/src/core/geminiChat.test.js +240 -257
  286. package/dist/src/core/geminiChat.test.js.map +1 -1
  287. package/dist/src/core/geminiChatHookTriggers.d.ts +64 -0
  288. package/dist/src/core/geminiChatHookTriggers.js +136 -0
  289. package/dist/src/core/geminiChatHookTriggers.js.map +1 -0
  290. package/dist/src/core/geminiChat_network_retry.test.d.ts +6 -0
  291. package/dist/src/core/geminiChat_network_retry.test.js +196 -0
  292. package/dist/src/core/geminiChat_network_retry.test.js.map +1 -0
  293. package/dist/src/core/logger.js.map +1 -1
  294. package/dist/src/core/loggingContentGenerator.js +23 -6
  295. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  296. package/dist/src/core/nonInteractiveToolExecutor.test.js +13 -8
  297. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  298. package/dist/src/core/prompts.js +82 -26
  299. package/dist/src/core/prompts.js.map +1 -1
  300. package/dist/src/core/prompts.test.js +102 -3
  301. package/dist/src/core/prompts.test.js.map +1 -1
  302. package/dist/src/core/sessionHookTriggers.d.ts +29 -0
  303. package/dist/src/core/sessionHookTriggers.js +75 -0
  304. package/dist/src/core/sessionHookTriggers.js.map +1 -0
  305. package/dist/src/core/turn.d.ts +34 -21
  306. package/dist/src/core/turn.js +33 -13
  307. package/dist/src/core/turn.js.map +1 -1
  308. package/dist/src/core/turn.test.js +0 -5
  309. package/dist/src/core/turn.test.js.map +1 -1
  310. package/dist/src/fallback/handler.js +101 -93
  311. package/dist/src/fallback/handler.js.map +1 -1
  312. package/dist/src/fallback/handler.test.js +186 -173
  313. package/dist/src/fallback/handler.test.js.map +1 -1
  314. package/dist/src/fallback/types.d.ts +8 -0
  315. package/dist/src/generated/git-commit.d.ts +3 -3
  316. package/dist/src/generated/git-commit.js +3 -3
  317. package/dist/src/generated/git-commit.js.map +1 -1
  318. package/dist/src/hooks/hookAggregator.js +7 -0
  319. package/dist/src/hooks/hookAggregator.js.map +1 -1
  320. package/dist/src/hooks/hookEventHandler.d.ts +113 -0
  321. package/dist/src/hooks/hookEventHandler.js +571 -0
  322. package/dist/src/hooks/hookEventHandler.js.map +1 -0
  323. package/dist/src/hooks/hookEventHandler.test.d.ts +6 -0
  324. package/dist/src/hooks/hookEventHandler.test.js +461 -0
  325. package/dist/src/hooks/hookEventHandler.test.js.map +1 -0
  326. package/dist/src/hooks/hookPlanner.d.ts +1 -5
  327. package/dist/src/hooks/hookPlanner.js +2 -7
  328. package/dist/src/hooks/hookPlanner.js.map +1 -1
  329. package/dist/src/hooks/hookPlanner.test.js +62 -2
  330. package/dist/src/hooks/hookPlanner.test.js.map +1 -1
  331. package/dist/src/hooks/hookRegistry.d.ts +6 -18
  332. package/dist/src/hooks/hookRegistry.js +49 -35
  333. package/dist/src/hooks/hookRegistry.js.map +1 -1
  334. package/dist/src/hooks/hookRegistry.test.js +167 -8
  335. package/dist/src/hooks/hookRegistry.test.js.map +1 -1
  336. package/dist/src/hooks/hookRunner.d.ts +5 -3
  337. package/dist/src/hooks/hookRunner.js +74 -18
  338. package/dist/src/hooks/hookRunner.js.map +1 -1
  339. package/dist/src/hooks/hookRunner.test.js +174 -36
  340. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  341. package/dist/src/hooks/hookSystem.d.ts +40 -0
  342. package/dist/src/hooks/hookSystem.js +65 -0
  343. package/dist/src/hooks/hookSystem.js.map +1 -0
  344. package/dist/src/hooks/hookSystem.test.d.ts +6 -0
  345. package/dist/src/hooks/hookSystem.test.js +319 -0
  346. package/dist/src/hooks/hookSystem.test.js.map +1 -0
  347. package/dist/src/hooks/index.d.ts +17 -0
  348. package/dist/src/hooks/index.js +18 -0
  349. package/dist/src/hooks/index.js.map +1 -0
  350. package/dist/src/hooks/trustedHooks.d.ts +28 -0
  351. package/dist/src/hooks/trustedHooks.js +90 -0
  352. package/dist/src/hooks/trustedHooks.js.map +1 -0
  353. package/dist/src/hooks/trustedHooks.test.d.ts +6 -0
  354. package/dist/src/hooks/trustedHooks.test.js +154 -0
  355. package/dist/src/hooks/trustedHooks.test.js.map +1 -0
  356. package/dist/src/hooks/types.d.ts +21 -11
  357. package/dist/src/hooks/types.js +31 -27
  358. package/dist/src/hooks/types.js.map +1 -1
  359. package/dist/src/hooks/types.test.js +5 -24
  360. package/dist/src/hooks/types.test.js.map +1 -1
  361. package/dist/src/ide/detect-ide.test.js +32 -1
  362. package/dist/src/ide/detect-ide.test.js.map +1 -1
  363. package/dist/src/ide/ide-client.js +9 -4
  364. package/dist/src/ide/ide-client.js.map +1 -1
  365. package/dist/src/ide/ide-client.test.js +17 -0
  366. package/dist/src/ide/ide-client.test.js.map +1 -1
  367. package/dist/src/ide/ide-installer.test.js +1 -1
  368. package/dist/src/ide/ide-installer.test.js.map +1 -1
  369. package/dist/src/ide/types.d.ts +4 -4
  370. package/dist/src/index.d.ts +17 -1
  371. package/dist/src/index.js +18 -2
  372. package/dist/src/index.js.map +1 -1
  373. package/dist/src/mcp/auth-provider.d.ts +16 -0
  374. package/dist/src/mcp/auth-provider.js +7 -0
  375. package/dist/src/mcp/auth-provider.js.map +1 -0
  376. package/dist/src/mcp/google-auth-provider.d.ts +10 -2
  377. package/dist/src/mcp/google-auth-provider.js +28 -0
  378. package/dist/src/mcp/google-auth-provider.js.map +1 -1
  379. package/dist/src/mcp/google-auth-provider.test.js +45 -0
  380. package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
  381. package/dist/src/mcp/oauth-provider.js +6 -2
  382. package/dist/src/mcp/oauth-provider.js.map +1 -1
  383. package/dist/src/mcp/oauth-provider.test.js +4 -1
  384. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  385. package/dist/src/mcp/oauth-utils.d.ts +8 -1
  386. package/dist/src/mcp/oauth-utils.js +31 -2
  387. package/dist/src/mcp/oauth-utils.js.map +1 -1
  388. package/dist/src/mcp/oauth-utils.test.js +42 -0
  389. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  390. package/dist/src/mcp/sa-impersonation-provider.d.ts +2 -2
  391. package/dist/src/mcp/sa-impersonation-provider.js.map +1 -1
  392. package/dist/src/mcp/token-storage/hybrid-token-storage.js +1 -1
  393. package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -1
  394. package/dist/src/mcp/token-storage/keychain-token-storage.js +1 -1
  395. package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -1
  396. package/dist/src/output/json-formatter.d.ts +2 -2
  397. package/dist/src/output/json-formatter.js +6 -3
  398. package/dist/src/output/json-formatter.js.map +1 -1
  399. package/dist/src/output/json-formatter.test.js +37 -9
  400. package/dist/src/output/json-formatter.test.js.map +1 -1
  401. package/dist/src/output/stream-json-formatter.js +6 -0
  402. package/dist/src/output/stream-json-formatter.js.map +1 -1
  403. package/dist/src/output/stream-json-formatter.test.js +98 -100
  404. package/dist/src/output/stream-json-formatter.test.js.map +1 -1
  405. package/dist/src/output/types.d.ts +3 -0
  406. package/dist/src/output/types.js.map +1 -1
  407. package/dist/src/policy/config.js +140 -15
  408. package/dist/src/policy/config.js.map +1 -1
  409. package/dist/src/policy/config.test.js +21 -0
  410. package/dist/src/policy/config.test.js.map +1 -1
  411. package/dist/src/policy/persistence.test.d.ts +6 -0
  412. package/dist/src/policy/persistence.test.js +154 -0
  413. package/dist/src/policy/persistence.test.js.map +1 -0
  414. package/dist/src/policy/policies/agent.toml +31 -0
  415. package/dist/src/policy/policies/read-only.toml +5 -0
  416. package/dist/src/policy/policies/write.toml +5 -0
  417. package/dist/src/policy/policies/yolo.toml +1 -0
  418. package/dist/src/policy/policy-engine.d.ts +30 -1
  419. package/dist/src/policy/policy-engine.js +192 -5
  420. package/dist/src/policy/policy-engine.js.map +1 -1
  421. package/dist/src/policy/policy-engine.test.js +520 -3
  422. package/dist/src/policy/policy-engine.test.js.map +1 -1
  423. package/dist/src/policy/policy-updater.test.d.ts +6 -0
  424. package/dist/src/policy/policy-updater.test.js +116 -0
  425. package/dist/src/policy/policy-updater.test.js.map +1 -0
  426. package/dist/src/policy/shell-safety.test.d.ts +6 -0
  427. package/dist/src/policy/shell-safety.test.js +75 -0
  428. package/dist/src/policy/shell-safety.test.js.map +1 -0
  429. package/dist/src/policy/toml-loader.d.ts +3 -5
  430. package/dist/src/policy/toml-loader.js +12 -60
  431. package/dist/src/policy/toml-loader.js.map +1 -1
  432. package/dist/src/policy/toml-loader.test.js +38 -7
  433. package/dist/src/policy/toml-loader.test.js.map +1 -1
  434. package/dist/src/policy/types.d.ts +72 -1
  435. package/dist/src/policy/types.js +21 -0
  436. package/dist/src/policy/types.js.map +1 -1
  437. package/dist/src/policy/utils.d.ts +21 -0
  438. package/dist/src/policy/utils.js +42 -0
  439. package/dist/src/policy/utils.js.map +1 -0
  440. package/dist/src/policy/utils.test.d.ts +6 -0
  441. package/dist/src/policy/utils.test.js +64 -0
  442. package/dist/src/policy/utils.test.js.map +1 -0
  443. package/dist/src/resources/resource-registry.d.ts +30 -0
  444. package/dist/src/resources/resource-registry.js +57 -0
  445. package/dist/src/resources/resource-registry.js.map +1 -0
  446. package/dist/src/resources/resource-registry.test.d.ts +6 -0
  447. package/dist/src/resources/resource-registry.test.js +54 -0
  448. package/dist/src/resources/resource-registry.test.js.map +1 -0
  449. package/dist/src/routing/modelRouterService.js +0 -15
  450. package/dist/src/routing/modelRouterService.js.map +1 -1
  451. package/dist/src/routing/modelRouterService.test.js +0 -62
  452. package/dist/src/routing/modelRouterService.test.js.map +1 -1
  453. package/dist/src/routing/strategies/classifierStrategy.js +10 -21
  454. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
  455. package/dist/src/routing/strategies/classifierStrategy.test.js +2 -1
  456. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
  457. package/dist/src/routing/strategies/compositeStrategy.js +4 -2
  458. package/dist/src/routing/strategies/compositeStrategy.js.map +1 -1
  459. package/dist/src/routing/strategies/compositeStrategy.test.js +11 -10
  460. package/dist/src/routing/strategies/compositeStrategy.test.js.map +1 -1
  461. package/dist/src/routing/strategies/fallbackStrategy.js +20 -12
  462. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
  463. package/dist/src/routing/strategies/fallbackStrategy.test.js +63 -39
  464. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -1
  465. package/dist/src/routing/strategies/overrideStrategy.js +3 -2
  466. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
  467. package/dist/src/safety/checker-runner.js +17 -6
  468. package/dist/src/safety/checker-runner.js.map +1 -1
  469. package/dist/src/scheduler/tool-executor.d.ts +22 -0
  470. package/dist/src/scheduler/tool-executor.js +198 -0
  471. package/dist/src/scheduler/tool-executor.js.map +1 -0
  472. package/dist/src/scheduler/tool-executor.test.d.ts +6 -0
  473. package/dist/src/scheduler/tool-executor.test.js +231 -0
  474. package/dist/src/scheduler/tool-executor.test.js.map +1 -0
  475. package/dist/src/scheduler/types.d.ts +95 -0
  476. package/dist/src/scheduler/types.js +7 -0
  477. package/dist/src/scheduler/types.js.map +1 -0
  478. package/dist/src/services/chatCompressionService.d.ts +1 -0
  479. package/dist/src/services/chatCompressionService.js +38 -8
  480. package/dist/src/services/chatCompressionService.js.map +1 -1
  481. package/dist/src/services/chatCompressionService.test.js +35 -31
  482. package/dist/src/services/chatCompressionService.test.js.map +1 -1
  483. package/dist/src/services/chatRecordingService.d.ts +14 -0
  484. package/dist/src/services/chatRecordingService.js +37 -0
  485. package/dist/src/services/chatRecordingService.js.map +1 -1
  486. package/dist/src/services/contextManager.d.ts +29 -0
  487. package/dist/src/services/contextManager.js +71 -0
  488. package/dist/src/services/contextManager.js.map +1 -0
  489. package/dist/src/services/contextManager.test.d.ts +6 -0
  490. package/dist/src/services/contextManager.test.js +104 -0
  491. package/dist/src/services/contextManager.test.js.map +1 -0
  492. package/dist/src/services/environmentSanitization.d.ts +15 -0
  493. package/dist/src/services/environmentSanitization.js +141 -0
  494. package/dist/src/services/environmentSanitization.js.map +1 -0
  495. package/dist/src/services/environmentSanitization.test.d.ts +6 -0
  496. package/dist/src/services/environmentSanitization.test.js +284 -0
  497. package/dist/src/services/environmentSanitization.test.js.map +1 -0
  498. package/dist/src/services/fileSystemService.d.ts +0 -9
  499. package/dist/src/services/fileSystemService.js +0 -11
  500. package/dist/src/services/fileSystemService.js.map +1 -1
  501. package/dist/src/services/gitService.js +18 -2
  502. package/dist/src/services/gitService.js.map +1 -1
  503. package/dist/src/services/gitService.test.js +56 -0
  504. package/dist/src/services/gitService.test.js.map +1 -1
  505. package/dist/src/services/loopDetectionService.js +5 -4
  506. package/dist/src/services/loopDetectionService.js.map +1 -1
  507. package/dist/src/services/loopDetectionService.test.js +14 -8
  508. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  509. package/dist/src/services/modelConfig.golden.test.js +32 -0
  510. package/dist/src/services/modelConfig.golden.test.js.map +1 -1
  511. package/dist/src/services/modelConfig.integration.test.js +1 -1
  512. package/dist/src/services/modelConfig.integration.test.js.map +1 -1
  513. package/dist/src/services/modelConfigService.d.ts +4 -0
  514. package/dist/src/services/modelConfigService.js +8 -3
  515. package/dist/src/services/modelConfigService.js.map +1 -1
  516. package/dist/src/services/modelConfigService.test.js +221 -0
  517. package/dist/src/services/modelConfigService.test.js.map +1 -1
  518. package/dist/src/services/modelConfigServiceTestUtils.d.ts +10 -0
  519. package/dist/src/services/modelConfigServiceTestUtils.js +17 -0
  520. package/dist/src/services/modelConfigServiceTestUtils.js.map +1 -0
  521. package/dist/src/services/sessionSummaryService.d.ts +28 -0
  522. package/dist/src/services/sessionSummaryService.js +131 -0
  523. package/dist/src/services/sessionSummaryService.js.map +1 -0
  524. package/dist/src/services/sessionSummaryService.test.d.ts +6 -0
  525. package/dist/src/services/sessionSummaryService.test.js +785 -0
  526. package/dist/src/services/sessionSummaryService.test.js.map +1 -0
  527. package/dist/src/services/sessionSummaryUtils.d.ts +16 -0
  528. package/dist/src/services/sessionSummaryUtils.js +129 -0
  529. package/dist/src/services/sessionSummaryUtils.js.map +1 -0
  530. package/dist/src/services/sessionSummaryUtils.test.d.ts +6 -0
  531. package/dist/src/services/sessionSummaryUtils.test.js +137 -0
  532. package/dist/src/services/sessionSummaryUtils.test.js.map +1 -0
  533. package/dist/src/services/shellExecutionService.d.ts +4 -0
  534. package/dist/src/services/shellExecutionService.js +45 -27
  535. package/dist/src/services/shellExecutionService.js.map +1 -1
  536. package/dist/src/services/shellExecutionService.test.js +240 -8
  537. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  538. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +238 -0
  539. package/dist/src/services/test-data/resolved-aliases.golden.json +36 -0
  540. package/dist/src/skills/skillLoader.d.ts +28 -0
  541. package/dist/src/skills/skillLoader.js +77 -0
  542. package/dist/src/skills/skillLoader.js.map +1 -0
  543. package/dist/src/skills/skillLoader.test.d.ts +1 -0
  544. package/dist/src/skills/skillLoader.test.js +2 -0
  545. package/dist/src/skills/skillLoader.test.js.map +1 -0
  546. package/dist/src/skills/skillManager.d.ts +51 -0
  547. package/dist/src/skills/skillManager.js +89 -0
  548. package/dist/src/skills/skillManager.js.map +1 -0
  549. package/dist/src/skills/skillManager.test.d.ts +6 -0
  550. package/dist/src/skills/skillManager.test.js +128 -0
  551. package/dist/src/skills/skillManager.test.js.map +1 -0
  552. package/dist/src/telemetry/activity-detector.test.js.map +1 -1
  553. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +11 -7
  554. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +127 -47
  555. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  556. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +105 -18
  557. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  558. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +9 -3
  559. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +20 -5
  560. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  561. package/dist/src/telemetry/config.js +2 -0
  562. package/dist/src/telemetry/config.js.map +1 -1
  563. package/dist/src/telemetry/config.test.js +25 -0
  564. package/dist/src/telemetry/config.test.js.map +1 -1
  565. package/dist/src/telemetry/gcp-exporters.d.ts +4 -3
  566. package/dist/src/telemetry/gcp-exporters.js +8 -4
  567. package/dist/src/telemetry/gcp-exporters.js.map +1 -1
  568. package/dist/src/telemetry/index.d.ts +2 -1
  569. package/dist/src/telemetry/index.js +2 -1
  570. package/dist/src/telemetry/index.js.map +1 -1
  571. package/dist/src/telemetry/loggers.d.ts +5 -3
  572. package/dist/src/telemetry/loggers.js +353 -334
  573. package/dist/src/telemetry/loggers.js.map +1 -1
  574. package/dist/src/telemetry/loggers.test.circular.js +1 -0
  575. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  576. package/dist/src/telemetry/loggers.test.js +238 -31
  577. package/dist/src/telemetry/loggers.test.js.map +1 -1
  578. package/dist/src/telemetry/metrics.d.ts +22 -0
  579. package/dist/src/telemetry/metrics.js +32 -0
  580. package/dist/src/telemetry/metrics.js.map +1 -1
  581. package/dist/src/telemetry/metrics.test.js +64 -0
  582. package/dist/src/telemetry/metrics.test.js.map +1 -1
  583. package/dist/src/telemetry/sanitize.d.ts +25 -0
  584. package/dist/src/telemetry/sanitize.js +48 -0
  585. package/dist/src/telemetry/sanitize.js.map +1 -0
  586. package/dist/src/telemetry/sanitize.test.d.ts +6 -0
  587. package/dist/src/telemetry/sanitize.test.js +279 -0
  588. package/dist/src/telemetry/sanitize.test.js.map +1 -0
  589. package/dist/src/telemetry/sdk.d.ts +9 -2
  590. package/dist/src/telemetry/sdk.js +142 -17
  591. package/dist/src/telemetry/sdk.js.map +1 -1
  592. package/dist/src/telemetry/sdk.test.js +130 -28
  593. package/dist/src/telemetry/sdk.test.js.map +1 -1
  594. package/dist/src/telemetry/semantic.js +1 -1
  595. package/dist/src/telemetry/semantic.js.map +1 -1
  596. package/dist/src/telemetry/startupProfiler.d.ts +51 -0
  597. package/dist/src/telemetry/startupProfiler.js +170 -0
  598. package/dist/src/telemetry/startupProfiler.js.map +1 -0
  599. package/dist/src/telemetry/startupProfiler.test.d.ts +6 -0
  600. package/dist/src/telemetry/startupProfiler.test.js +285 -0
  601. package/dist/src/telemetry/startupProfiler.test.js.map +1 -0
  602. package/dist/src/telemetry/telemetry.test.js +10 -3
  603. package/dist/src/telemetry/telemetry.test.js.map +1 -1
  604. package/dist/src/telemetry/trace.js +2 -2
  605. package/dist/src/telemetry/trace.js.map +1 -1
  606. package/dist/src/telemetry/types.d.ts +62 -16
  607. package/dist/src/telemetry/types.js +157 -27
  608. package/dist/src/telemetry/types.js.map +1 -1
  609. package/dist/src/telemetry/uiTelemetry.d.ts +1 -0
  610. package/dist/src/telemetry/uiTelemetry.js +2 -0
  611. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  612. package/dist/src/telemetry/uiTelemetry.test.js +4 -0
  613. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  614. package/dist/src/test-utils/mock-message-bus.d.ts +61 -0
  615. package/dist/src/test-utils/mock-message-bus.js +160 -0
  616. package/dist/src/test-utils/mock-message-bus.js.map +1 -0
  617. package/dist/src/test-utils/mock-tool.d.ts +5 -3
  618. package/dist/src/test-utils/mock-tool.js +12 -11
  619. package/dist/src/test-utils/mock-tool.js.map +1 -1
  620. package/dist/src/tools/activate-skill.d.ts +27 -0
  621. package/dist/src/tools/activate-skill.js +120 -0
  622. package/dist/src/tools/activate-skill.js.map +1 -0
  623. package/dist/src/tools/activate-skill.test.d.ts +6 -0
  624. package/dist/src/tools/activate-skill.test.js +95 -0
  625. package/dist/src/tools/activate-skill.test.js.map +1 -0
  626. package/dist/src/tools/confirmation-policy.test.d.ts +6 -0
  627. package/dist/src/tools/confirmation-policy.test.js +142 -0
  628. package/dist/src/tools/confirmation-policy.test.js.map +1 -0
  629. package/dist/src/tools/edit.d.ts +27 -5
  630. package/dist/src/tools/edit.js +449 -137
  631. package/dist/src/tools/edit.js.map +1 -1
  632. package/dist/src/tools/edit.test.js +258 -526
  633. package/dist/src/tools/edit.test.js.map +1 -1
  634. package/dist/src/tools/get-internal-docs.d.ts +27 -0
  635. package/dist/src/tools/get-internal-docs.js +129 -0
  636. package/dist/src/tools/get-internal-docs.js.map +1 -0
  637. package/dist/src/tools/get-internal-docs.test.d.ts +6 -0
  638. package/dist/src/tools/get-internal-docs.test.js +57 -0
  639. package/dist/src/tools/get-internal-docs.test.js.map +1 -0
  640. package/dist/src/tools/glob.d.ts +2 -2
  641. package/dist/src/tools/glob.js +1 -1
  642. package/dist/src/tools/glob.js.map +1 -1
  643. package/dist/src/tools/glob.test.js +2 -1
  644. package/dist/src/tools/glob.test.js.map +1 -1
  645. package/dist/src/tools/grep.d.ts +2 -2
  646. package/dist/src/tools/grep.js +1 -1
  647. package/dist/src/tools/grep.js.map +1 -1
  648. package/dist/src/tools/grep.test.js +5 -4
  649. package/dist/src/tools/grep.test.js.map +1 -1
  650. package/dist/src/tools/ls.d.ts +2 -2
  651. package/dist/src/tools/ls.js +2 -2
  652. package/dist/src/tools/ls.js.map +1 -1
  653. package/dist/src/tools/ls.test.js +2 -1
  654. package/dist/src/tools/ls.test.js.map +1 -1
  655. package/dist/src/tools/mcp-client-manager.d.ts +3 -1
  656. package/dist/src/tools/mcp-client-manager.js +42 -9
  657. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  658. package/dist/src/tools/mcp-client-manager.test.js +66 -10
  659. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  660. package/dist/src/tools/mcp-client.d.ts +44 -6
  661. package/dist/src/tools/mcp-client.js +476 -176
  662. package/dist/src/tools/mcp-client.js.map +1 -1
  663. package/dist/src/tools/mcp-client.test.js +633 -36
  664. package/dist/src/tools/mcp-client.test.js.map +1 -1
  665. package/dist/src/tools/mcp-tool.d.ts +2 -2
  666. package/dist/src/tools/mcp-tool.js +20 -7
  667. package/dist/src/tools/mcp-tool.js.map +1 -1
  668. package/dist/src/tools/mcp-tool.test.js +35 -5
  669. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  670. package/dist/src/tools/memoryTool.d.ts +3 -3
  671. package/dist/src/tools/memoryTool.js +3 -4
  672. package/dist/src/tools/memoryTool.js.map +1 -1
  673. package/dist/src/tools/memoryTool.test.js +5 -2
  674. package/dist/src/tools/memoryTool.test.js.map +1 -1
  675. package/dist/src/tools/message-bus-integration.test.js +10 -37
  676. package/dist/src/tools/message-bus-integration.test.js.map +1 -1
  677. package/dist/src/tools/modifiable-tool.js.map +1 -1
  678. package/dist/src/tools/modifiable-tool.test.js +22 -13
  679. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  680. package/dist/src/tools/read-file.d.ts +2 -2
  681. package/dist/src/tools/read-file.js +2 -2
  682. package/dist/src/tools/read-file.js.map +1 -1
  683. package/dist/src/tools/read-file.test.js +3 -2
  684. package/dist/src/tools/read-file.test.js.map +1 -1
  685. package/dist/src/tools/read-many-files.d.ts +2 -2
  686. package/dist/src/tools/read-many-files.js +7 -6
  687. package/dist/src/tools/read-many-files.js.map +1 -1
  688. package/dist/src/tools/read-many-files.test.js +4 -3
  689. package/dist/src/tools/read-many-files.test.js.map +1 -1
  690. package/dist/src/tools/ripGrep.d.ts +3 -2
  691. package/dist/src/tools/ripGrep.js +18 -7
  692. package/dist/src/tools/ripGrep.js.map +1 -1
  693. package/dist/src/tools/ripGrep.test.js +60 -4
  694. package/dist/src/tools/ripGrep.test.js.map +1 -1
  695. package/dist/src/tools/shell.d.ts +5 -7
  696. package/dist/src/tools/shell.js +77 -51
  697. package/dist/src/tools/shell.js.map +1 -1
  698. package/dist/src/tools/shell.test.js +59 -63
  699. package/dist/src/tools/shell.test.js.map +1 -1
  700. package/dist/src/tools/tool-error.d.ts +2 -1
  701. package/dist/src/tools/tool-error.js +2 -0
  702. package/dist/src/tools/tool-error.js.map +1 -1
  703. package/dist/src/tools/tool-names.d.ts +17 -0
  704. package/dist/src/tools/tool-names.js +59 -0
  705. package/dist/src/tools/tool-names.js.map +1 -1
  706. package/dist/src/tools/tool-names.test.d.ts +6 -0
  707. package/dist/src/tools/tool-names.test.js +43 -0
  708. package/dist/src/tools/tool-names.test.js.map +1 -0
  709. package/dist/src/tools/tool-registry.d.ts +11 -7
  710. package/dist/src/tools/tool-registry.js +15 -10
  711. package/dist/src/tools/tool-registry.js.map +1 -1
  712. package/dist/src/tools/tool-registry.test.js +16 -11
  713. package/dist/src/tools/tool-registry.test.js.map +1 -1
  714. package/dist/src/tools/tools.d.ts +25 -6
  715. package/dist/src/tools/tools.js +44 -25
  716. package/dist/src/tools/tools.js.map +1 -1
  717. package/dist/src/tools/tools.test.js +3 -1
  718. package/dist/src/tools/tools.test.js.map +1 -1
  719. package/dist/src/tools/web-fetch.d.ts +2 -2
  720. package/dist/src/tools/web-fetch.js +22 -9
  721. package/dist/src/tools/web-fetch.js.map +1 -1
  722. package/dist/src/tools/web-fetch.test.js +18 -19
  723. package/dist/src/tools/web-fetch.test.js.map +1 -1
  724. package/dist/src/tools/web-search.d.ts +2 -2
  725. package/dist/src/tools/web-search.js +5 -5
  726. package/dist/src/tools/web-search.js.map +1 -1
  727. package/dist/src/tools/web-search.test.js +2 -1
  728. package/dist/src/tools/web-search.test.js.map +1 -1
  729. package/dist/src/tools/write-file.d.ts +2 -2
  730. package/dist/src/tools/write-file.js +10 -4
  731. package/dist/src/tools/write-file.js.map +1 -1
  732. package/dist/src/tools/write-file.test.js +4 -1
  733. package/dist/src/tools/write-file.test.js.map +1 -1
  734. package/dist/src/tools/write-todos.d.ts +2 -2
  735. package/dist/src/tools/write-todos.js +5 -4
  736. package/dist/src/tools/write-todos.js.map +1 -1
  737. package/dist/src/tools/write-todos.test.js +2 -1
  738. package/dist/src/tools/write-todos.test.js.map +1 -1
  739. package/dist/src/utils/bfsFileSearch.d.ts +8 -0
  740. package/dist/src/utils/bfsFileSearch.js +63 -23
  741. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  742. package/dist/src/utils/bfsFileSearch.test.js +65 -1
  743. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  744. package/dist/src/utils/checkpointUtils.d.ts +82 -0
  745. package/dist/src/utils/checkpointUtils.js +117 -0
  746. package/dist/src/utils/checkpointUtils.js.map +1 -0
  747. package/dist/src/utils/checkpointUtils.test.d.ts +6 -0
  748. package/dist/src/utils/checkpointUtils.test.js +229 -0
  749. package/dist/src/utils/checkpointUtils.test.js.map +1 -0
  750. package/dist/src/utils/customHeaderUtils.d.ts +9 -0
  751. package/dist/src/utils/customHeaderUtils.js +34 -0
  752. package/dist/src/utils/customHeaderUtils.js.map +1 -0
  753. package/dist/src/utils/customHeaderUtils.test.d.ts +6 -0
  754. package/dist/src/utils/customHeaderUtils.test.js +77 -0
  755. package/dist/src/utils/customHeaderUtils.test.js.map +1 -0
  756. package/dist/src/utils/debugLogger.d.ts +3 -0
  757. package/dist/src/utils/debugLogger.js +28 -0
  758. package/dist/src/utils/debugLogger.js.map +1 -1
  759. package/dist/src/utils/editCorrector.js +6 -5
  760. package/dist/src/utils/editCorrector.js.map +1 -1
  761. package/dist/src/utils/editCorrector.test.js +7 -3
  762. package/dist/src/utils/editCorrector.test.js.map +1 -1
  763. package/dist/src/utils/editor.d.ts +9 -1
  764. package/dist/src/utils/editor.js +23 -14
  765. package/dist/src/utils/editor.js.map +1 -1
  766. package/dist/src/utils/environmentContext.d.ts +1 -0
  767. package/dist/src/utils/environmentContext.js +4 -0
  768. package/dist/src/utils/environmentContext.js.map +1 -1
  769. package/dist/src/utils/environmentContext.test.js +2 -0
  770. package/dist/src/utils/environmentContext.test.js.map +1 -1
  771. package/dist/src/utils/errorReporting.d.ts +1 -1
  772. package/dist/src/utils/errorReporting.js +13 -12
  773. package/dist/src/utils/errorReporting.js.map +1 -1
  774. package/dist/src/utils/errorReporting.test.js +17 -14
  775. package/dist/src/utils/errorReporting.test.js.map +1 -1
  776. package/dist/src/utils/errors.d.ts +8 -0
  777. package/dist/src/utils/errors.js +39 -2
  778. package/dist/src/utils/errors.js.map +1 -1
  779. package/dist/src/utils/errors.test.d.ts +6 -0
  780. package/dist/src/utils/errors.test.js +155 -0
  781. package/dist/src/utils/errors.test.js.map +1 -0
  782. package/dist/src/utils/events.d.ts +49 -19
  783. package/dist/src/utils/events.js +21 -9
  784. package/dist/src/utils/events.js.map +1 -1
  785. package/dist/src/utils/events.test.js +25 -0
  786. package/dist/src/utils/events.test.js.map +1 -1
  787. package/dist/src/utils/exitCodes.d.ts +12 -0
  788. package/dist/src/utils/exitCodes.js +13 -0
  789. package/dist/src/utils/exitCodes.js.map +1 -0
  790. package/dist/src/utils/extensionLoader.d.ts +2 -2
  791. package/dist/src/utils/extensionLoader.js +5 -6
  792. package/dist/src/utils/extensionLoader.js.map +1 -1
  793. package/dist/src/utils/extensionLoader.test.js +11 -0
  794. package/dist/src/utils/extensionLoader.test.js.map +1 -1
  795. package/dist/src/utils/fetch.d.ts +1 -1
  796. package/dist/src/utils/fetch.js +3 -3
  797. package/dist/src/utils/fetch.js.map +1 -1
  798. package/dist/src/utils/fileUtils.d.ts +4 -0
  799. package/dist/src/utils/fileUtils.js +53 -0
  800. package/dist/src/utils/fileUtils.js.map +1 -1
  801. package/dist/src/utils/fileUtils.test.js +127 -1
  802. package/dist/src/utils/fileUtils.test.js.map +1 -1
  803. package/dist/src/utils/filesearch/crawlCache.js.map +1 -1
  804. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  805. package/dist/src/utils/flashFallback.test.js +1 -1
  806. package/dist/src/utils/flashFallback.test.js.map +1 -1
  807. package/dist/src/utils/geminiIgnoreParser.d.ts +11 -0
  808. package/dist/src/utils/geminiIgnoreParser.js +20 -0
  809. package/dist/src/utils/geminiIgnoreParser.js.map +1 -1
  810. package/dist/src/utils/geminiIgnoreParser.test.js +48 -0
  811. package/dist/src/utils/geminiIgnoreParser.test.js.map +1 -1
  812. package/dist/src/utils/generateContentResponseUtilities.d.ts +3 -1
  813. package/dist/src/utils/generateContentResponseUtilities.js +106 -0
  814. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
  815. package/dist/src/utils/generateContentResponseUtilities.test.js +279 -2
  816. package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -1
  817. package/dist/src/utils/getFolderStructure.js +7 -2
  818. package/dist/src/utils/getFolderStructure.js.map +1 -1
  819. package/dist/src/utils/googleErrors.js +31 -18
  820. package/dist/src/utils/googleErrors.js.map +1 -1
  821. package/dist/src/utils/googleErrors.test.js +10 -2
  822. package/dist/src/utils/googleErrors.test.js.map +1 -1
  823. package/dist/src/utils/googleQuotaErrors.d.ts +3 -3
  824. package/dist/src/utils/googleQuotaErrors.js +32 -6
  825. package/dist/src/utils/googleQuotaErrors.js.map +1 -1
  826. package/dist/src/utils/googleQuotaErrors.test.js +94 -2
  827. package/dist/src/utils/googleQuotaErrors.test.js.map +1 -1
  828. package/dist/src/utils/memoryDiscovery.d.ts +5 -0
  829. package/dist/src/utils/memoryDiscovery.js +9 -5
  830. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  831. package/dist/src/utils/memoryDiscovery.test.js +31 -1
  832. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  833. package/dist/src/utils/nextSpeakerChecker.test.js +4 -0
  834. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  835. package/dist/src/utils/package.d.ts +14 -0
  836. package/dist/src/utils/package.js +15 -2
  837. package/dist/src/utils/package.js.map +1 -1
  838. package/dist/src/utils/pathCorrector.js +12 -2
  839. package/dist/src/utils/pathCorrector.js.map +1 -1
  840. package/dist/src/utils/pathCorrector.test.js +6 -2
  841. package/dist/src/utils/pathCorrector.test.js.map +1 -1
  842. package/dist/src/utils/retry.d.ts +11 -0
  843. package/dist/src/utils/retry.js +62 -21
  844. package/dist/src/utils/retry.js.map +1 -1
  845. package/dist/src/utils/retry.test.js +170 -10
  846. package/dist/src/utils/retry.test.js.map +1 -1
  847. package/dist/src/utils/schemaValidator.d.ts +1 -1
  848. package/dist/src/utils/schemaValidator.js +1 -1
  849. package/dist/src/utils/shell-permissions.d.ts +52 -0
  850. package/dist/src/utils/shell-permissions.js +188 -0
  851. package/dist/src/utils/shell-permissions.js.map +1 -0
  852. package/dist/src/utils/shell-permissions.test.d.ts +6 -0
  853. package/dist/src/utils/shell-permissions.test.js +369 -0
  854. package/dist/src/utils/shell-permissions.test.js.map +1 -0
  855. package/dist/src/utils/shell-utils.d.ts +16 -47
  856. package/dist/src/utils/shell-utils.js +99 -195
  857. package/dist/src/utils/shell-utils.js.map +1 -1
  858. package/dist/src/utils/shell-utils.test.js +99 -288
  859. package/dist/src/utils/shell-utils.test.js.map +1 -1
  860. package/dist/src/utils/stdio.d.ts +2 -2
  861. package/dist/src/utils/stdio.js +2 -2
  862. package/dist/src/utils/stdio.js.map +1 -1
  863. package/dist/src/utils/stdio.test.js +5 -5
  864. package/dist/src/utils/stdio.test.js.map +1 -1
  865. package/dist/src/utils/summarizer.test.js +3 -2
  866. package/dist/src/utils/summarizer.test.js.map +1 -1
  867. package/dist/src/utils/terminal.d.ts +4 -0
  868. package/dist/src/utils/terminal.js +12 -0
  869. package/dist/src/utils/terminal.js.map +1 -1
  870. package/dist/src/utils/terminalSerializer.test.js +17 -0
  871. package/dist/src/utils/terminalSerializer.test.js.map +1 -1
  872. package/dist/src/utils/tokenCalculation.d.ts +19 -0
  873. package/dist/src/utils/tokenCalculation.js +85 -0
  874. package/dist/src/utils/tokenCalculation.js.map +1 -0
  875. package/dist/src/utils/tokenCalculation.test.d.ts +6 -0
  876. package/dist/src/utils/tokenCalculation.test.js +87 -0
  877. package/dist/src/utils/tokenCalculation.test.js.map +1 -0
  878. package/dist/src/utils/tool-utils.d.ts +9 -0
  879. package/dist/src/utils/tool-utils.js +29 -0
  880. package/dist/src/utils/tool-utils.js.map +1 -1
  881. package/dist/src/utils/tool-utils.test.js +17 -2
  882. package/dist/src/utils/tool-utils.test.js.map +1 -1
  883. package/dist/src/utils/version.d.ts +6 -0
  884. package/dist/src/utils/version.js +15 -0
  885. package/dist/src/utils/version.js.map +1 -0
  886. package/dist/src/utils/version.test.d.ts +6 -0
  887. package/dist/src/utils/version.test.js +39 -0
  888. package/dist/src/utils/version.test.js.map +1 -0
  889. package/dist/tsconfig.tsbuildinfo +1 -1
  890. package/package.json +8 -7
@@ -8,14 +8,15 @@ import { inspect } from 'node:util';
8
8
  import process from 'node:process';
9
9
  import { AuthType, createContentGenerator, createContentGeneratorConfig, } from '../core/contentGenerator.js';
10
10
  import { PromptRegistry } from '../prompts/prompt-registry.js';
11
+ import { ResourceRegistry } from '../resources/resource-registry.js';
11
12
  import { ToolRegistry } from '../tools/tool-registry.js';
12
13
  import { LSTool } from '../tools/ls.js';
13
14
  import { ReadFileTool } from '../tools/read-file.js';
14
15
  import { GrepTool } from '../tools/grep.js';
15
16
  import { canUseRipgrep, RipGrepTool } from '../tools/ripGrep.js';
16
17
  import { GlobTool } from '../tools/glob.js';
18
+ import { ActivateSkillTool } from '../tools/activate-skill.js';
17
19
  import { EditTool } from '../tools/edit.js';
18
- import { SmartEditTool } from '../tools/smart-edit.js';
19
20
  import { ShellTool } from '../tools/shell.js';
20
21
  import { WriteFileTool } from '../tools/write-file.js';
21
22
  import { WebFetchTool } from '../tools/web-fetch.js';
@@ -28,29 +29,35 @@ import { GitService } from '../services/gitService.js';
28
29
  import { initializeTelemetry, DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT, uiTelemetryService, } from '../telemetry/index.js';
29
30
  import { coreEvents } from '../utils/events.js';
30
31
  import { tokenLimit } from '../core/tokenLimits.js';
31
- import { DEFAULT_GEMINI_EMBEDDING_MODEL, DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_MODEL_AUTO, DEFAULT_THINKING_MODE, } from './models.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';
32
33
  import { shouldAttemptBrowserLaunch } from '../utils/browser.js';
33
34
  import { ideContextStore } from '../ide/ideContext.js';
34
35
  import { WriteTodosTool } from '../tools/write-todos.js';
35
36
  import { StandardFileSystemService } from '../services/fileSystemService.js';
36
- import { logRipgrepFallback } from '../telemetry/loggers.js';
37
- import { RipgrepFallbackEvent } from '../telemetry/types.js';
37
+ import { logRipgrepFallback, logFlashFallback } from '../telemetry/loggers.js';
38
+ import { RipgrepFallbackEvent, FlashFallbackEvent, } from '../telemetry/types.js';
39
+ import { ModelAvailabilityService } from '../availability/modelAvailabilityService.js';
38
40
  import { ModelRouterService } from '../routing/modelRouterService.js';
39
41
  import { OutputFormat } from '../output/types.js';
40
42
  import { ModelConfigService } from '../services/modelConfigService.js';
41
43
  import { DEFAULT_MODEL_CONFIGS } from './defaultModelConfigs.js';
44
+ import { ContextManager } from '../services/contextManager.js';
42
45
  import { WorkspaceContext } from '../utils/workspaceContext.js';
43
46
  import { Storage } from './storage.js';
44
47
  import { FileExclusions } from '../utils/ignorePatterns.js';
45
48
  import { MessageBus } from '../confirmation-bus/message-bus.js';
46
49
  import { PolicyEngine } from '../policy/policy-engine.js';
50
+ import { HookSystem } from '../hooks/index.js';
47
51
  import { getCodeAssistServer } from '../code_assist/codeAssist.js';
48
52
  import { AgentRegistry } from '../agents/registry.js';
49
53
  import { setGlobalProxy } from '../utils/fetch.js';
50
- import { SubagentToolWrapper } from '../agents/subagent-tool-wrapper.js';
54
+ import { DelegateToAgentTool } from '../agents/delegate-to-agent-tool.js';
55
+ import { DELEGATE_TO_AGENT_TOOL_NAME } from '../tools/tool-names.js';
51
56
  import { getExperiments } from '../code_assist/experiments/experiments.js';
52
57
  import { ExperimentFlags } from '../code_assist/experiments/flagNames.js';
53
58
  import { debugLogger } from '../utils/debugLogger.js';
59
+ import { SkillManager } from '../skills/skillManager.js';
60
+ import { startupProfiler } from '../telemetry/startupProfiler.js';
54
61
  import { ApprovalMode } from '../policy/types.js';
55
62
  import { DEFAULT_FILE_FILTERING_OPTIONS, DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, } from './constants.js';
56
63
  import { SimpleExtensionLoader, } from '../utils/extensionLoader.js';
@@ -67,6 +74,7 @@ export class MCPServerConfig {
67
74
  httpUrl;
68
75
  headers;
69
76
  tcp;
77
+ type;
70
78
  timeout;
71
79
  trust;
72
80
  description;
@@ -86,6 +94,12 @@ export class MCPServerConfig {
86
94
  httpUrl, headers,
87
95
  // For websocket transport
88
96
  tcp,
97
+ // Transport type (optional, for use with 'url' field)
98
+ // When set to 'http', uses StreamableHTTPClientTransport
99
+ // When set to 'sse', uses SSEClientTransport
100
+ // When omitted, auto-detects transport type
101
+ // Note: 'httpUrl' is deprecated in favor of 'url' + 'type'
102
+ type,
89
103
  // Common
90
104
  timeout, trust,
91
105
  // Metadata
@@ -105,6 +119,7 @@ export class MCPServerConfig {
105
119
  this.httpUrl = httpUrl;
106
120
  this.headers = headers;
107
121
  this.tcp = tcp;
122
+ this.type = type;
108
123
  this.timeout = timeout;
109
124
  this.trust = trust;
110
125
  this.description = description;
@@ -128,8 +143,13 @@ export class Config {
128
143
  mcpClientManager;
129
144
  allowedMcpServers;
130
145
  blockedMcpServers;
146
+ allowedEnvironmentVariables;
147
+ blockedEnvironmentVariables;
148
+ enableEnvironmentVariableRedaction;
131
149
  promptRegistry;
150
+ resourceRegistry;
132
151
  agentRegistry;
152
+ skillManager;
133
153
  sessionId;
134
154
  fileSystemService;
135
155
  contentGeneratorConfig;
@@ -147,11 +167,11 @@ export class Config {
147
167
  toolDiscoveryCommand;
148
168
  toolCallCommand;
149
169
  mcpServerCommand;
170
+ mcpEnabled;
150
171
  mcpServers;
151
172
  userMemory;
152
173
  geminiMdFileCount;
153
174
  geminiMdFilePaths;
154
- approvalMode;
155
175
  showMemoryUsage;
156
176
  accessibility;
157
177
  telemetrySettings;
@@ -159,6 +179,7 @@ export class Config {
159
179
  geminiClient;
160
180
  baseLlmClient;
161
181
  modelRouterService;
182
+ modelAvailabilityService;
162
183
  fileFiltering;
163
184
  fileDiscoveryService = null;
164
185
  gitService = undefined;
@@ -168,10 +189,11 @@ export class Config {
168
189
  bugCommand;
169
190
  model;
170
191
  previewFeatures;
192
+ hasAccessToPreviewModel = false;
171
193
  noBrowser;
172
194
  folderTrust;
173
195
  ideMode;
174
- inFallbackMode = false;
196
+ _activeModel;
175
197
  maxSessionTurns;
176
198
  listSessions;
177
199
  deleteSession;
@@ -203,29 +225,36 @@ export class Config {
203
225
  storage;
204
226
  fileExclusions;
205
227
  eventEmitter;
206
- useSmartEdit;
207
228
  useWriteTodos;
208
229
  messageBus;
209
230
  policyEngine;
210
231
  outputSettings;
211
- useModelRouter;
212
- initialUseModelRouter;
213
- disableModelRouterForAuth;
214
- enableMessageBusIntegration;
215
232
  codebaseInvestigatorSettings;
233
+ introspectionAgentSettings;
216
234
  continueOnFailedApiCall;
217
235
  retryFetchErrors;
218
236
  enableShellOutputEfficiency;
237
+ shellToolInactivityTimeout;
219
238
  fakeResponses;
220
239
  recordResponses;
221
240
  disableYoloMode;
222
241
  pendingIncludeDirectories;
223
242
  enableHooks;
224
243
  hooks;
244
+ projectHooks;
245
+ disabledHooks;
225
246
  experiments;
226
247
  experimentsPromise;
227
- previewModelFallbackMode = false;
228
- previewModelBypassMode = false;
248
+ hookSystem;
249
+ onModelChange;
250
+ onReload;
251
+ enableAgents;
252
+ skillsSupport;
253
+ disabledSkills;
254
+ experimentalJitContext;
255
+ contextManager;
256
+ terminalBackground = undefined;
257
+ remoteAdminSettings;
229
258
  constructor(params) {
230
259
  this.sessionId = params.sessionId;
231
260
  this.embeddingModel =
@@ -245,12 +274,16 @@ export class Config {
245
274
  this.toolCallCommand = params.toolCallCommand;
246
275
  this.mcpServerCommand = params.mcpServerCommand;
247
276
  this.mcpServers = params.mcpServers;
277
+ this.mcpEnabled = params.mcpEnabled ?? true;
248
278
  this.allowedMcpServers = params.allowedMcpServers ?? [];
249
279
  this.blockedMcpServers = params.blockedMcpServers ?? [];
280
+ this.allowedEnvironmentVariables = params.allowedEnvironmentVariables ?? [];
281
+ this.blockedEnvironmentVariables = params.blockedEnvironmentVariables ?? [];
282
+ this.enableEnvironmentVariableRedaction =
283
+ params.enableEnvironmentVariableRedaction ?? false;
250
284
  this.userMemory = params.userMemory ?? '';
251
285
  this.geminiMdFileCount = params.geminiMdFileCount ?? 0;
252
286
  this.geminiMdFilePaths = params.geminiMdFilePaths ?? [];
253
- this.approvalMode = params.approvalMode ?? ApprovalMode.DEFAULT;
254
287
  this.showMemoryUsage = params.showMemoryUsage ?? false;
255
288
  this.accessibility = params.accessibility ?? {};
256
289
  this.telemetrySettings = {
@@ -261,6 +294,7 @@ export class Config {
261
294
  logPrompts: params.telemetry?.logPrompts ?? true,
262
295
  outfile: params.telemetry?.outfile,
263
296
  useCollector: params.telemetry?.useCollector,
297
+ useCliAuth: params.telemetry?.useCliAuth,
264
298
  };
265
299
  this.usageStatisticsEnabled = params.usageStatisticsEnabled ?? true;
266
300
  this.fileFiltering = {
@@ -277,7 +311,13 @@ export class Config {
277
311
  this.fileDiscoveryService = params.fileDiscoveryService ?? null;
278
312
  this.bugCommand = params.bugCommand;
279
313
  this.model = params.model;
314
+ this._activeModel = params.model;
315
+ this.enableAgents = params.enableAgents ?? false;
316
+ this.skillsSupport = params.skillsSupport ?? false;
317
+ this.disabledSkills = params.disabledSkills ?? [];
318
+ this.modelAvailabilityService = new ModelAvailabilityService();
280
319
  this.previewFeatures = params.previewFeatures ?? undefined;
320
+ this.experimentalJitContext = params.experimentalJitContext ?? false;
281
321
  this.maxSessionTurns = params.maxSessionTurns ?? -1;
282
322
  this.experimentalZedIntegration =
283
323
  params.experimentalZedIntegration ?? false;
@@ -307,6 +347,7 @@ export class Config {
307
347
  terminalHeight: params.shellExecutionConfig?.terminalHeight ?? 24,
308
348
  showColor: params.shellExecutionConfig?.showColor ?? false,
309
349
  pager: params.shellExecutionConfig?.pager ?? 'cat',
350
+ sanitizationConfig: this.sanitizationConfig,
310
351
  };
311
352
  this.truncateToolOutputThreshold =
312
353
  params.truncateToolOutputThreshold ??
@@ -314,31 +355,31 @@ export class Config {
314
355
  this.truncateToolOutputLines =
315
356
  params.truncateToolOutputLines ?? DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES;
316
357
  this.enableToolOutputTruncation = params.enableToolOutputTruncation ?? true;
317
- this.useSmartEdit = params.useSmartEdit ?? true;
318
- this.useWriteTodos = params.useWriteTodos ?? true;
319
- this.initialUseModelRouter = params.useModelRouter ?? false;
320
- this.useModelRouter = this.initialUseModelRouter;
321
- this.disableModelRouterForAuth = params.disableModelRouterForAuth ?? [];
358
+ // // TODO(joshualitt): Re-evaluate the todo tool for 3 family.
359
+ this.useWriteTodos = isPreviewModel(this.model)
360
+ ? false
361
+ : (params.useWriteTodos ?? true);
322
362
  this.enableHooks = params.enableHooks ?? false;
323
- // Enable MessageBus integration if:
324
- // 1. Explicitly enabled via setting, OR
325
- // 2. Hooks are enabled and hooks are configured
326
- const hasHooks = params.hooks && Object.keys(params.hooks).length > 0;
327
- const hooksNeedMessageBus = this.enableHooks && hasHooks;
328
- this.enableMessageBusIntegration =
329
- params.enableMessageBusIntegration ??
330
- (hooksNeedMessageBus ? true : false);
363
+ this.disabledHooks =
364
+ (params.hooks && 'disabled' in params.hooks
365
+ ? params.hooks.disabled
366
+ : undefined) ?? [];
331
367
  this.codebaseInvestigatorSettings = {
332
368
  enabled: params.codebaseInvestigatorSettings?.enabled ?? true,
333
369
  maxNumTurns: params.codebaseInvestigatorSettings?.maxNumTurns ?? 10,
334
370
  maxTimeMinutes: params.codebaseInvestigatorSettings?.maxTimeMinutes ?? 3,
335
371
  thinkingBudget: params.codebaseInvestigatorSettings?.thinkingBudget ??
336
372
  DEFAULT_THINKING_MODE,
337
- model: params.codebaseInvestigatorSettings?.model ?? DEFAULT_GEMINI_MODEL,
373
+ model: params.codebaseInvestigatorSettings?.model,
374
+ };
375
+ this.introspectionAgentSettings = {
376
+ enabled: params.introspectionAgentSettings?.enabled ?? false,
338
377
  };
339
378
  this.continueOnFailedApiCall = params.continueOnFailedApiCall ?? true;
340
379
  this.enableShellOutputEfficiency =
341
380
  params.enableShellOutputEfficiency ?? true;
381
+ this.shellToolInactivityTimeout =
382
+ (params.shellToolInactivityTimeout ?? 300) * 1000; // 5 minutes
342
383
  this.extensionManagement = params.extensionManagement ?? true;
343
384
  this.enableExtensionReloading = params.enableExtensionReloading ?? false;
344
385
  this.storage = new Storage(this.targetDir);
@@ -347,19 +388,27 @@ export class Config {
347
388
  this.enablePromptCompletion = params.enablePromptCompletion ?? false;
348
389
  this.fileExclusions = new FileExclusions(this);
349
390
  this.eventEmitter = params.eventEmitter;
350
- this.policyEngine = new PolicyEngine(params.policyEngineConfig);
391
+ this.policyEngine = new PolicyEngine({
392
+ ...params.policyEngineConfig,
393
+ approvalMode: params.approvalMode ?? params.policyEngineConfig?.approvalMode,
394
+ });
351
395
  this.messageBus = new MessageBus(this.policyEngine, this.debugMode);
396
+ this.skillManager = new SkillManager();
352
397
  this.outputSettings = {
353
398
  format: params.output?.format ?? OutputFormat.TEXT,
354
399
  };
355
400
  this.retryFetchErrors = params.retryFetchErrors ?? false;
356
401
  this.disableYoloMode = params.disableYoloMode ?? false;
357
402
  this.hooks = params.hooks;
403
+ this.projectHooks = params.projectHooks;
358
404
  this.experiments = params.experiments;
405
+ this.onModelChange = params.onModelChange;
406
+ this.onReload = params.onReload;
359
407
  if (params.contextFileName) {
360
408
  setGeminiMdFilename(params.contextFileName);
361
409
  }
362
410
  if (this.telemetrySettings.enabled) {
411
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
363
412
  initializeTelemetry(this);
364
413
  }
365
414
  const proxy = this.getProxy();
@@ -381,11 +430,19 @@ export class Config {
381
430
  // TODO(12593): Fix the settings loading logic to properly merge defaults and
382
431
  // remove this hack.
383
432
  let modelConfigServiceConfig = params.modelConfigServiceConfig;
384
- if (modelConfigServiceConfig && !modelConfigServiceConfig.aliases) {
385
- modelConfigServiceConfig = {
386
- ...modelConfigServiceConfig,
387
- aliases: DEFAULT_MODEL_CONFIGS.aliases,
388
- };
433
+ if (modelConfigServiceConfig) {
434
+ if (!modelConfigServiceConfig.aliases) {
435
+ modelConfigServiceConfig = {
436
+ ...modelConfigServiceConfig,
437
+ aliases: DEFAULT_MODEL_CONFIGS.aliases,
438
+ };
439
+ }
440
+ if (!modelConfigServiceConfig.overrides) {
441
+ modelConfigServiceConfig = {
442
+ ...modelConfigServiceConfig,
443
+ overrides: DEFAULT_MODEL_CONFIGS.overrides,
444
+ };
445
+ }
389
446
  }
390
447
  this.modelConfigService = new ModelConfigService(modelConfigServiceConfig ?? DEFAULT_MODEL_CONFIGS);
391
448
  }
@@ -398,32 +455,50 @@ export class Config {
398
455
  }
399
456
  this.initialized = true;
400
457
  // Initialize centralized FileDiscoveryService
458
+ const discoverToolsHandle = startupProfiler.start('discover_tools');
401
459
  this.getFileService();
402
460
  if (this.getCheckpointingEnabled()) {
403
461
  await this.getGitService();
404
462
  }
405
463
  this.promptRegistry = new PromptRegistry();
464
+ this.resourceRegistry = new ResourceRegistry();
406
465
  this.agentRegistry = new AgentRegistry(this);
407
466
  await this.agentRegistry.initialize();
408
467
  this.toolRegistry = await this.createToolRegistry();
468
+ discoverToolsHandle?.end();
409
469
  this.mcpClientManager = new McpClientManager(this.toolRegistry, this, this.eventEmitter);
470
+ const initMcpHandle = startupProfiler.start('initialize_mcp_clients');
410
471
  await Promise.all([
411
472
  await this.mcpClientManager.startConfiguredMcpServers(),
412
473
  await this.getExtensionLoader().start(this),
413
474
  ]);
475
+ initMcpHandle?.end();
476
+ // Discover skills if enabled
477
+ 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));
483
+ }
484
+ }
485
+ // Initialize hook system if enabled
486
+ if (this.getEnableHooks()) {
487
+ this.hookSystem = new HookSystem(this);
488
+ await this.hookSystem.initialize();
489
+ }
490
+ if (this.experimentalJitContext) {
491
+ this.contextManager = new ContextManager(this);
492
+ await this.contextManager.refresh();
493
+ }
414
494
  await this.geminiClient.initialize();
415
495
  }
416
496
  getContentGenerator() {
417
497
  return this.contentGenerator;
418
498
  }
419
499
  async refreshAuth(authMethod) {
420
- this.useModelRouter = this.initialUseModelRouter;
421
- if (this.disableModelRouterForAuth?.includes(authMethod)) {
422
- this.useModelRouter = false;
423
- if (this.model === DEFAULT_GEMINI_MODEL_AUTO) {
424
- this.model = DEFAULT_GEMINI_MODEL;
425
- }
426
- }
500
+ // Reset availability service when switching auth
501
+ this.modelAvailabilityService.reset();
427
502
  // Vertex and Genai have incompatible encryption and sending history with
428
503
  // thoughtSignature from Genai to Vertex will fail, we need to strip them
429
504
  if (this.contentGeneratorConfig?.authType === AuthType.USE_GEMINI &&
@@ -431,20 +506,24 @@ export class Config {
431
506
  // Restore the conversation history to the new client
432
507
  this.geminiClient.stripThoughtsFromHistory();
433
508
  }
509
+ // Reset availability status when switching auth (e.g. from limited key to OAuth)
510
+ this.modelAvailabilityService.reset();
434
511
  const newContentGeneratorConfig = await createContentGeneratorConfig(this, authMethod);
435
512
  this.contentGenerator = await createContentGenerator(newContentGeneratorConfig, this, this.getSessionId());
436
513
  // Only assign to instance properties after successful initialization
437
514
  this.contentGeneratorConfig = newContentGeneratorConfig;
438
515
  // Initialize BaseLlmClient now that the ContentGenerator is available
439
516
  this.baseLlmClient = new BaseLlmClient(this.contentGenerator, this);
440
- const previewFeatures = this.getPreviewFeatures();
441
517
  const codeAssistServer = getCodeAssistServer(this);
442
518
  if (codeAssistServer) {
519
+ if (codeAssistServer.projectId) {
520
+ await this.refreshUserQuota();
521
+ }
443
522
  this.experimentsPromise = getExperiments(codeAssistServer)
444
523
  .then((experiments) => {
445
524
  this.setExperiments(experiments);
446
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
447
- if (previewFeatures === undefined) {
526
+ if (this.getPreviewFeatures() === undefined) {
448
527
  const remotePreviewFeatures = experiments.flags[ExperimentFlags.ENABLE_PREVIEW]?.boolValue;
449
528
  if (remotePreviewFeatures === true) {
450
529
  this.setPreviewFeatures(remotePreviewFeatures);
@@ -459,8 +538,25 @@ export class Config {
459
538
  this.experiments = undefined;
460
539
  this.experimentsPromise = undefined;
461
540
  }
462
- // Reset the session flag since we're explicitly changing auth and using default model
463
- this.inFallbackMode = false;
541
+ const authType = this.contentGeneratorConfig.authType;
542
+ if (authType === AuthType.USE_GEMINI ||
543
+ authType === AuthType.USE_VERTEX_AI) {
544
+ this.setHasAccessToPreviewModel(true);
545
+ }
546
+ // Update model if user no longer has access to the preview model
547
+ if (!this.hasAccessToPreviewModel && isPreviewModel(this.model)) {
548
+ this.setModel(DEFAULT_GEMINI_MODEL_AUTO);
549
+ }
550
+ }
551
+ async getExperimentsAsync() {
552
+ if (this.experiments) {
553
+ return this.experiments;
554
+ }
555
+ const codeAssistServer = getCodeAssistServer(this);
556
+ if (codeAssistServer) {
557
+ return getExperiments(codeAssistServer);
558
+ }
559
+ return undefined;
464
560
  }
465
561
  getUserTier() {
466
562
  return this.contentGenerator?.userTier;
@@ -486,6 +582,18 @@ export class Config {
486
582
  setSessionId(sessionId) {
487
583
  this.sessionId = sessionId;
488
584
  }
585
+ setTerminalBackground(terminalBackground) {
586
+ this.terminalBackground = terminalBackground;
587
+ }
588
+ getTerminalBackground() {
589
+ return this.terminalBackground;
590
+ }
591
+ getRemoteAdminSettings() {
592
+ return this.remoteAdminSettings;
593
+ }
594
+ setRemoteAdminSettings(settings) {
595
+ this.remoteAdminSettings = settings;
596
+ }
489
597
  shouldLoadMemoryFromIncludeDirectories() {
490
598
  return this.loadMemoryFromIncludeDirectories;
491
599
  }
@@ -501,18 +609,32 @@ export class Config {
501
609
  getModel() {
502
610
  return this.model;
503
611
  }
504
- setModel(newModel) {
505
- if (this.model !== newModel || this.inFallbackMode) {
612
+ setModel(newModel, isTemporary = true) {
613
+ if (this.model !== newModel || this._activeModel !== newModel) {
506
614
  this.model = newModel;
615
+ // When the user explicitly sets a model, that becomes the active model.
616
+ this._activeModel = newModel;
507
617
  coreEvents.emitModelChanged(newModel);
618
+ if (this.onModelChange && !isTemporary) {
619
+ this.onModelChange(newModel);
620
+ }
508
621
  }
509
- this.setFallbackMode(false);
622
+ this.modelAvailabilityService.reset();
510
623
  }
511
- isInFallbackMode() {
512
- return this.inFallbackMode;
624
+ activateFallbackMode(model) {
625
+ this.setModel(model, true);
626
+ const authType = this.getContentGeneratorConfig()?.authType;
627
+ if (authType) {
628
+ logFlashFallback(this, new FlashFallbackEvent(authType));
629
+ }
630
+ }
631
+ getActiveModel() {
632
+ return this._activeModel ?? this.model;
513
633
  }
514
- setFallbackMode(active) {
515
- this.inFallbackMode = active;
634
+ setActiveModel(model) {
635
+ if (this._activeModel !== model) {
636
+ this._activeModel = model;
637
+ }
516
638
  }
517
639
  setFallbackModelHandler(handler) {
518
640
  this.fallbackModelHandler = handler;
@@ -520,17 +642,8 @@ export class Config {
520
642
  getFallbackModelHandler() {
521
643
  return this.fallbackModelHandler;
522
644
  }
523
- isPreviewModelFallbackMode() {
524
- return this.previewModelFallbackMode;
525
- }
526
- setPreviewModelFallbackMode(active) {
527
- this.previewModelFallbackMode = active;
528
- }
529
- isPreviewModelBypassMode() {
530
- return this.previewModelBypassMode;
531
- }
532
- setPreviewModelBypassMode(active) {
533
- this.previewModelBypassMode = active;
645
+ resetTurn() {
646
+ this.modelAvailabilityService.resetTurn();
534
647
  }
535
648
  getMaxSessionTurns() {
536
649
  return this.maxSessionTurns;
@@ -567,12 +680,18 @@ export class Config {
567
680
  getAgentRegistry() {
568
681
  return this.agentRegistry;
569
682
  }
683
+ getSkillManager() {
684
+ return this.skillManager;
685
+ }
570
686
  getToolRegistry() {
571
687
  return this.toolRegistry;
572
688
  }
573
689
  getPromptRegistry() {
574
690
  return this.promptRegistry;
575
691
  }
692
+ getResourceRegistry() {
693
+ return this.resourceRegistry;
694
+ }
576
695
  getDebugMode() {
577
696
  return this.debugMode;
578
697
  }
@@ -583,7 +702,44 @@ export class Config {
583
702
  return this.previewFeatures;
584
703
  }
585
704
  setPreviewFeatures(previewFeatures) {
705
+ // No change in state, no action needed
706
+ if (this.previewFeatures === previewFeatures) {
707
+ return;
708
+ }
586
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
+ getHasAccessToPreviewModel() {
721
+ return this.hasAccessToPreviewModel;
722
+ }
723
+ setHasAccessToPreviewModel(hasAccess) {
724
+ this.hasAccessToPreviewModel = hasAccess;
725
+ }
726
+ async refreshUserQuota() {
727
+ const codeAssistServer = getCodeAssistServer(this);
728
+ if (!codeAssistServer || !codeAssistServer.projectId) {
729
+ return undefined;
730
+ }
731
+ try {
732
+ const quota = await codeAssistServer.retrieveUserQuota({
733
+ project: codeAssistServer.projectId,
734
+ });
735
+ const hasAccess = quota.buckets?.some((b) => b.modelId === PREVIEW_GEMINI_MODEL) ?? false;
736
+ this.setHasAccessToPreviewModel(hasAccess);
737
+ return quota;
738
+ }
739
+ catch (e) {
740
+ debugLogger.debug('Failed to retrieve user quota', e);
741
+ return undefined;
742
+ }
587
743
  }
588
744
  getCoreTools() {
589
745
  return this.coreTools;
@@ -626,6 +782,9 @@ export class Config {
626
782
  getMcpServers() {
627
783
  return this.mcpServers;
628
784
  }
785
+ getMcpEnabled() {
786
+ return this.mcpEnabled;
787
+ }
629
788
  getMcpClientManager() {
630
789
  return this.mcpClientManager;
631
790
  }
@@ -635,35 +794,68 @@ export class Config {
635
794
  getBlockedMcpServers() {
636
795
  return this.blockedMcpServers;
637
796
  }
797
+ get sanitizationConfig() {
798
+ return {
799
+ allowedEnvironmentVariables: this.allowedEnvironmentVariables,
800
+ blockedEnvironmentVariables: this.blockedEnvironmentVariables,
801
+ enableEnvironmentVariableRedaction: this.enableEnvironmentVariableRedaction,
802
+ };
803
+ }
638
804
  setMcpServers(mcpServers) {
639
805
  this.mcpServers = mcpServers;
640
806
  }
641
807
  getUserMemory() {
808
+ if (this.experimentalJitContext && this.contextManager) {
809
+ return [
810
+ this.contextManager.getGlobalMemory(),
811
+ this.contextManager.getEnvironmentMemory(),
812
+ ]
813
+ .filter(Boolean)
814
+ .join('\n\n');
815
+ }
642
816
  return this.userMemory;
643
817
  }
644
818
  setUserMemory(newUserMemory) {
645
819
  this.userMemory = newUserMemory;
646
820
  }
821
+ getGlobalMemory() {
822
+ return this.contextManager?.getGlobalMemory() ?? '';
823
+ }
824
+ getEnvironmentMemory() {
825
+ return this.contextManager?.getEnvironmentMemory() ?? '';
826
+ }
827
+ getContextManager() {
828
+ return this.contextManager;
829
+ }
830
+ isJitContextEnabled() {
831
+ return this.experimentalJitContext;
832
+ }
647
833
  getGeminiMdFileCount() {
834
+ if (this.experimentalJitContext && this.contextManager) {
835
+ return this.contextManager.getLoadedPaths().size;
836
+ }
648
837
  return this.geminiMdFileCount;
649
838
  }
650
839
  setGeminiMdFileCount(count) {
651
840
  this.geminiMdFileCount = count;
652
841
  }
653
842
  getGeminiMdFilePaths() {
843
+ if (this.experimentalJitContext && this.contextManager) {
844
+ return Array.from(this.contextManager.getLoadedPaths());
845
+ }
654
846
  return this.geminiMdFilePaths;
655
847
  }
656
848
  setGeminiMdFilePaths(paths) {
657
849
  this.geminiMdFilePaths = paths;
658
850
  }
659
851
  getApprovalMode() {
660
- return this.approvalMode;
852
+ return this.policyEngine.getApprovalMode();
661
853
  }
662
854
  setApprovalMode(mode) {
663
855
  if (!this.isTrustedFolder() && mode !== ApprovalMode.DEFAULT) {
664
856
  throw new Error('Cannot enable privileged approval modes in an untrusted folder.');
665
857
  }
666
- this.approvalMode = mode;
858
+ this.policyEngine.setApprovalMode(mode);
667
859
  }
668
860
  isYoloModeDisabled() {
669
861
  return this.disableYoloMode || !this.isTrustedFolder();
@@ -701,6 +893,9 @@ export class Config {
701
893
  getTelemetryUseCollector() {
702
894
  return this.telemetrySettings.useCollector ?? false;
703
895
  }
896
+ getTelemetryUseCliAuth() {
897
+ return this.telemetrySettings.useCliAuth ?? false;
898
+ }
704
899
  getGeminiClient() {
705
900
  return this.geminiClient;
706
901
  }
@@ -717,6 +912,9 @@ export class Config {
717
912
  getModelRouterService() {
718
913
  return this.modelRouterService;
719
914
  }
915
+ getModelAvailabilityService() {
916
+ return this.modelAvailabilityService;
917
+ }
720
918
  getEnableRecursiveFileSearch() {
721
919
  return this.fileFiltering.enableRecursiveFileSearch;
722
920
  }
@@ -799,6 +997,9 @@ export class Config {
799
997
  getEnableExtensionReloading() {
800
998
  return this.enableExtensionReloading;
801
999
  }
1000
+ isAgentsEnabled() {
1001
+ return this.enableAgents;
1002
+ }
802
1003
  getNoBrowser() {
803
1004
  return this.noBrowser;
804
1005
  }
@@ -822,21 +1023,12 @@ export class Config {
822
1023
  * 'false' for untrusted.
823
1024
  */
824
1025
  isTrustedFolder() {
825
- // isWorkspaceTrusted in cli/src/config/trustedFolder.js returns undefined
826
- // when the file based trust value is unavailable, since it is mainly used
827
- // in the initialization for trust dialogs, etc. Here we return true since
828
- // config.isTrustedFolder() is used for the main business logic of blocking
829
- // tool calls etc in the rest of the application.
830
- //
831
- // Default value is true since we load with trusted settings to avoid
832
- // restarts in the more common path. If the user chooses to mark the folder
833
- // as untrusted, the CLI will restart and we will have the trust value
834
- // reloaded.
835
1026
  const context = ideContextStore.get();
836
1027
  if (context?.workspaceState?.isTrusted !== undefined) {
837
1028
  return context.workspaceState.isTrusted;
838
1029
  }
839
- return this.trustedFolder ?? true;
1030
+ // Default to untrusted if folder trust is enabled and no explicit value is set.
1031
+ return this.folderTrust ? (this.trustedFolder ?? false) : true;
840
1032
  }
841
1033
  setIdeMode(value) {
842
1034
  this.ideMode = value;
@@ -895,6 +1087,32 @@ export class Config {
895
1087
  this.ptyInfo !== 'child_process' &&
896
1088
  this.enableInteractiveShell);
897
1089
  }
1090
+ isSkillsSupportEnabled() {
1091
+ return this.skillsSupport;
1092
+ }
1093
+ /**
1094
+ * Reloads skills by re-discovering them from extensions and local directories.
1095
+ */
1096
+ async reloadSkills() {
1097
+ if (!this.skillsSupport) {
1098
+ return;
1099
+ }
1100
+ if (this.onReload) {
1101
+ const refreshed = await this.onReload();
1102
+ this.disabledSkills = refreshed.disabledSkills ?? [];
1103
+ }
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));
1109
+ }
1110
+ else {
1111
+ this.getToolRegistry().unregisterTool(ActivateSkillTool.Name);
1112
+ }
1113
+ // Notify the client that system instructions might need updating
1114
+ await this.updateSystemInstructionIfInitialized();
1115
+ }
898
1116
  isInteractive() {
899
1117
  return this.interactive;
900
1118
  }
@@ -916,6 +1134,9 @@ export class Config {
916
1134
  getEnableShellOutputEfficiency() {
917
1135
  return this.enableShellOutputEfficiency;
918
1136
  }
1137
+ getShellToolInactivityTimeout() {
1138
+ return this.shellToolInactivityTimeout;
1139
+ }
919
1140
  getShellExecutionConfig() {
920
1141
  return this.shellExecutionConfig;
921
1142
  }
@@ -925,6 +1146,8 @@ export class Config {
925
1146
  terminalHeight: config.terminalHeight ?? this.shellExecutionConfig.terminalHeight,
926
1147
  showColor: config.showColor ?? this.shellExecutionConfig.showColor,
927
1148
  pager: config.pager ?? this.shellExecutionConfig.pager,
1149
+ sanitizationConfig: config.sanitizationConfig ??
1150
+ this.shellExecutionConfig.sanitizationConfig,
928
1151
  };
929
1152
  }
930
1153
  getScreenReader() {
@@ -945,9 +1168,6 @@ export class Config {
945
1168
  getTruncateToolOutputLines() {
946
1169
  return this.truncateToolOutputLines;
947
1170
  }
948
- getUseSmartEdit() {
949
- return this.useSmartEdit;
950
- }
951
1171
  getUseWriteTodos() {
952
1172
  return this.useWriteTodos;
953
1173
  }
@@ -956,9 +1176,6 @@ export class Config {
956
1176
  ? this.outputSettings.format
957
1177
  : OutputFormat.TEXT;
958
1178
  }
959
- getUseModelRouter() {
960
- return this.useModelRouter;
961
- }
962
1179
  async getGitService() {
963
1180
  if (!this.gitService) {
964
1181
  this.gitService = new GitService(this.targetDir, this.storage);
@@ -975,21 +1192,17 @@ export class Config {
975
1192
  getPolicyEngine() {
976
1193
  return this.policyEngine;
977
1194
  }
978
- getEnableMessageBusIntegration() {
979
- return this.enableMessageBusIntegration;
980
- }
981
1195
  getEnableHooks() {
982
1196
  return this.enableHooks;
983
1197
  }
984
1198
  getCodebaseInvestigatorSettings() {
985
1199
  return this.codebaseInvestigatorSettings;
986
1200
  }
1201
+ getIntrospectionAgentSettings() {
1202
+ return this.introspectionAgentSettings;
1203
+ }
987
1204
  async createToolRegistry() {
988
- const registry = new ToolRegistry(this);
989
- // Set message bus on tool registry before discovery so MCP tools can access it
990
- if (this.getEnableMessageBusIntegration()) {
991
- registry.setMessageBus(this.messageBus);
992
- }
1205
+ const registry = new ToolRegistry(this, this.messageBus);
993
1206
  // helper to create & register core tools that are enabled
994
1207
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
995
1208
  const registerCoreTool = (ToolClass, ...args) => {
@@ -1006,13 +1219,8 @@ export class Config {
1006
1219
  tool.startsWith(`${normalizedClassName}(`));
1007
1220
  }
1008
1221
  if (isEnabled) {
1009
- // Pass message bus to tools when feature flag is enabled
1010
- // This first implementation is only focused on the general case of
1011
- // the tool registry.
1012
- const messageBusEnabled = this.getEnableMessageBusIntegration();
1013
- const toolArgs = messageBusEnabled
1014
- ? [...args, this.getMessageBus()]
1015
- : args;
1222
+ // Pass message bus to tools (required for policy engine integration)
1223
+ const toolArgs = [...args, this.getMessageBus()];
1016
1224
  registry.registerTool(new ToolClass(...toolArgs));
1017
1225
  }
1018
1226
  };
@@ -1039,44 +1247,56 @@ export class Config {
1039
1247
  registerCoreTool(GrepTool, this);
1040
1248
  }
1041
1249
  registerCoreTool(GlobTool, this);
1042
- if (this.getUseSmartEdit()) {
1043
- registerCoreTool(SmartEditTool, this);
1044
- }
1045
- else {
1046
- registerCoreTool(EditTool, this);
1047
- }
1250
+ registerCoreTool(ActivateSkillTool, this);
1251
+ registerCoreTool(EditTool, this);
1048
1252
  registerCoreTool(WriteFileTool, this);
1049
1253
  registerCoreTool(WebFetchTool, this);
1050
1254
  registerCoreTool(ShellTool, this);
1051
1255
  registerCoreTool(MemoryTool);
1052
1256
  registerCoreTool(WebSearchTool, this);
1053
1257
  if (this.getUseWriteTodos()) {
1054
- registerCoreTool(WriteTodosTool, this);
1258
+ registerCoreTool(WriteTodosTool);
1055
1259
  }
1056
1260
  // Register Subagents as Tools
1057
- if (this.getCodebaseInvestigatorSettings().enabled) {
1058
- const definition = this.agentRegistry.getDefinition('codebase_investigator');
1059
- if (definition) {
1060
- // We must respect the main allowed/exclude lists for agents too.
1061
- const allowedTools = this.getAllowedTools();
1062
- const isAllowed = !allowedTools || allowedTools.includes(definition.name);
1063
- if (isAllowed) {
1064
- const messageBusEnabled = this.getEnableMessageBusIntegration();
1065
- const wrapper = new SubagentToolWrapper(definition, this, messageBusEnabled ? this.getMessageBus() : undefined);
1066
- registry.registerTool(wrapper);
1067
- }
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);
1068
1270
  }
1069
1271
  }
1070
1272
  await registry.discoverAllTools();
1071
1273
  registry.sortTools();
1072
1274
  return registry;
1073
1275
  }
1276
+ /**
1277
+ * Get the hook system instance
1278
+ */
1279
+ getHookSystem() {
1280
+ return this.hookSystem;
1281
+ }
1074
1282
  /**
1075
1283
  * Get hooks configuration
1076
1284
  */
1077
1285
  getHooks() {
1078
1286
  return this.hooks;
1079
1287
  }
1288
+ /**
1289
+ * Get project-specific hooks configuration
1290
+ */
1291
+ getProjectHooks() {
1292
+ return this.projectHooks;
1293
+ }
1294
+ /**
1295
+ * Get disabled hooks list
1296
+ */
1297
+ getDisabledHooks() {
1298
+ return this.disabledHooks;
1299
+ }
1080
1300
  /**
1081
1301
  * Get experiments configuration
1082
1302
  */