@machina.ai/cell-cli-core 1.20.2-rc1 → 1.25.0-rc1

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 (898) hide show
  1. package/dist/docs/AFTER_MERGE_PROMPT.md +26 -0
  2. package/dist/docs/CHANGES.md +124 -0
  3. package/dist/docs/api-proxy.md +27 -0
  4. package/dist/docs/architecture.md +80 -0
  5. package/dist/docs/assets/connected_devtools.png +0 -0
  6. package/dist/docs/assets/gemini-screenshot.png +0 -0
  7. package/dist/docs/assets/monitoring-dashboard-logs.png +0 -0
  8. package/dist/docs/assets/monitoring-dashboard-metrics.png +0 -0
  9. package/dist/docs/assets/monitoring-dashboard-overview.png +0 -0
  10. package/dist/docs/assets/release_patch.png +0 -0
  11. package/dist/docs/assets/theme-ansi-light.png +0 -0
  12. package/dist/docs/assets/theme-ansi.png +0 -0
  13. package/dist/docs/assets/theme-atom-one.png +0 -0
  14. package/dist/docs/assets/theme-ayu-light.png +0 -0
  15. package/dist/docs/assets/theme-ayu.png +0 -0
  16. package/dist/docs/assets/theme-custom.png +0 -0
  17. package/dist/docs/assets/theme-default-light.png +0 -0
  18. package/dist/docs/assets/theme-default.png +0 -0
  19. package/dist/docs/assets/theme-dracula.png +0 -0
  20. package/dist/docs/assets/theme-github-light.png +0 -0
  21. package/dist/docs/assets/theme-github.png +0 -0
  22. package/dist/docs/assets/theme-google-light.png +0 -0
  23. package/dist/docs/assets/theme-xcode-light.png +0 -0
  24. package/dist/docs/changelogs/index.md +612 -0
  25. package/dist/docs/changelogs/latest.md +153 -0
  26. package/dist/docs/changelogs/preview.md +131 -0
  27. package/dist/docs/changelogs/releases.md +1162 -0
  28. package/dist/docs/cli/authentication.md +3 -0
  29. package/dist/docs/cli/checkpointing.md +94 -0
  30. package/dist/docs/cli/commands.md +357 -0
  31. package/dist/docs/cli/custom-commands.md +315 -0
  32. package/dist/docs/cli/enterprise.md +564 -0
  33. package/dist/docs/cli/gemini-ignore.md +71 -0
  34. package/dist/docs/cli/gemini-md.md +109 -0
  35. package/dist/docs/cli/generation-settings.md +210 -0
  36. package/dist/docs/cli/headless.md +388 -0
  37. package/dist/docs/cli/index.md +63 -0
  38. package/dist/docs/cli/keyboard-shortcuts.md +136 -0
  39. package/dist/docs/cli/model-routing.md +37 -0
  40. package/dist/docs/cli/model.md +62 -0
  41. package/dist/docs/cli/sandbox.md +171 -0
  42. package/dist/docs/cli/session-management.md +158 -0
  43. package/dist/docs/cli/settings.md +148 -0
  44. package/dist/docs/cli/skills.md +188 -0
  45. package/dist/docs/cli/system-prompt.md +94 -0
  46. package/dist/docs/cli/telemetry.md +813 -0
  47. package/dist/docs/cli/themes.md +237 -0
  48. package/dist/docs/cli/token-caching.md +20 -0
  49. package/dist/docs/cli/trusted-folders.md +95 -0
  50. package/dist/docs/cli/tutorials/skills-getting-started.md +124 -0
  51. package/dist/docs/cli/tutorials.md +87 -0
  52. package/dist/docs/cli/uninstall.md +47 -0
  53. package/dist/docs/core/index.md +101 -0
  54. package/dist/docs/core/memport.md +246 -0
  55. package/dist/docs/core/policy-engine.md +268 -0
  56. package/dist/docs/core/tools-api.md +131 -0
  57. package/dist/docs/examples/proxy-script.md +83 -0
  58. package/dist/docs/extensions/extension-releasing.md +183 -0
  59. package/dist/docs/extensions/getting-started-extensions.md +244 -0
  60. package/dist/docs/extensions/index.md +343 -0
  61. package/dist/docs/faq.md +153 -0
  62. package/dist/docs/get-started/authentication.md +321 -0
  63. package/dist/docs/get-started/configuration-v1.md +890 -0
  64. package/dist/docs/get-started/configuration.md +1643 -0
  65. package/dist/docs/get-started/examples.md +218 -0
  66. package/dist/docs/get-started/gemini-3.md +101 -0
  67. package/dist/docs/get-started/index.md +71 -0
  68. package/dist/docs/get-started/installation.md +141 -0
  69. package/dist/docs/hooks/best-practices.md +856 -0
  70. package/dist/docs/hooks/index.md +723 -0
  71. package/dist/docs/hooks/reference.md +178 -0
  72. package/dist/docs/hooks/writing-hooks.md +1044 -0
  73. package/dist/docs/ide-integration/ide-companion-spec.md +267 -0
  74. package/dist/docs/ide-integration/index.md +201 -0
  75. package/dist/docs/index.md +147 -0
  76. package/dist/docs/integration-tests.md +211 -0
  77. package/dist/docs/issue-and-pr-automation.md +134 -0
  78. package/dist/docs/local-development.md +128 -0
  79. package/dist/docs/mcp_integration.md +160 -0
  80. package/dist/docs/mermaid/context.mmd +103 -0
  81. package/dist/docs/mermaid/render-path.mmd +64 -0
  82. package/dist/docs/npm.md +62 -0
  83. package/dist/docs/quota-and-pricing.md +158 -0
  84. package/dist/docs/release-confidence.md +164 -0
  85. package/dist/docs/releases.md +540 -0
  86. package/dist/docs/sidebar.json +301 -0
  87. package/dist/docs/tools/file-system.md +217 -0
  88. package/dist/docs/tools/index.md +95 -0
  89. package/dist/docs/tools/mcp-server.md +1045 -0
  90. package/dist/docs/tools/memory.md +54 -0
  91. package/dist/docs/tools/shell.md +260 -0
  92. package/dist/docs/tools/todos.md +56 -0
  93. package/dist/docs/tools/web-fetch.md +59 -0
  94. package/dist/docs/tools/web-search.md +42 -0
  95. package/dist/docs/tos-privacy.md +96 -0
  96. package/dist/docs/troubleshooting.md +162 -0
  97. package/dist/index.d.ts +1 -1
  98. package/dist/index.js +1 -1
  99. package/dist/index.js.map +1 -1
  100. package/dist/package.json +7 -4
  101. package/dist/src/agents/a2a-client-manager.d.ts +82 -0
  102. package/dist/src/agents/a2a-client-manager.js +295 -0
  103. package/dist/src/agents/a2a-client-manager.js.map +1 -0
  104. package/dist/src/agents/a2a-client-manager.test.js +281 -0
  105. package/dist/src/agents/a2a-client-manager.test.js.map +1 -0
  106. package/dist/src/agents/a2aUtils.d.ts +29 -0
  107. package/dist/src/agents/a2aUtils.js +113 -0
  108. package/dist/src/agents/a2aUtils.js.map +1 -0
  109. package/dist/src/agents/a2aUtils.test.js +147 -0
  110. package/dist/src/agents/a2aUtils.test.js.map +1 -0
  111. package/dist/src/agents/agentLoader.d.ts +68 -0
  112. package/dist/src/agents/agentLoader.js +255 -0
  113. package/dist/src/agents/agentLoader.js.map +1 -0
  114. package/dist/src/agents/agentLoader.test.js +307 -0
  115. package/dist/src/agents/agentLoader.test.js.map +1 -0
  116. package/dist/src/agents/cli-help-agent.d.ts +24 -0
  117. package/dist/src/agents/cli-help-agent.js +85 -0
  118. package/dist/src/agents/cli-help-agent.js.map +1 -0
  119. package/dist/src/agents/cli-help-agent.test.d.ts +6 -0
  120. package/dist/src/agents/cli-help-agent.test.js +65 -0
  121. package/dist/src/agents/cli-help-agent.test.js.map +1 -0
  122. package/dist/src/agents/codebase-investigator.d.ts +2 -2
  123. package/dist/src/agents/codebase-investigator.js +14 -8
  124. package/dist/src/agents/codebase-investigator.js.map +1 -1
  125. package/dist/src/agents/delegate-to-agent-tool.d.ts +19 -0
  126. package/dist/src/agents/delegate-to-agent-tool.js +122 -0
  127. package/dist/src/agents/delegate-to-agent-tool.js.map +1 -0
  128. package/dist/src/agents/delegate-to-agent-tool.test.d.ts +6 -0
  129. package/dist/src/agents/delegate-to-agent-tool.test.js +213 -0
  130. package/dist/src/agents/delegate-to-agent-tool.test.js.map +1 -0
  131. package/dist/src/agents/{executor.d.ts → local-executor.d.ts} +5 -11
  132. package/dist/src/agents/{executor.js → local-executor.js} +124 -63
  133. package/dist/src/agents/local-executor.js.map +1 -0
  134. package/dist/src/agents/local-executor.test.d.ts +6 -0
  135. package/dist/src/agents/{executor.test.js → local-executor.test.js} +136 -58
  136. package/dist/src/agents/local-executor.test.js.map +1 -0
  137. package/dist/src/agents/{invocation.d.ts → local-invocation.d.ts} +6 -7
  138. package/dist/src/agents/{invocation.js → local-invocation.js} +9 -10
  139. package/dist/src/agents/local-invocation.js.map +1 -0
  140. package/dist/src/agents/local-invocation.test.d.ts +6 -0
  141. package/dist/src/agents/{invocation.test.js → local-invocation.test.js} +29 -20
  142. package/dist/src/agents/local-invocation.test.js.map +1 -0
  143. package/dist/src/agents/registry.d.ts +37 -1
  144. package/dist/src/agents/registry.js +240 -27
  145. package/dist/src/agents/registry.js.map +1 -1
  146. package/dist/src/agents/registry.test.js +465 -30
  147. package/dist/src/agents/registry.test.js.map +1 -1
  148. package/dist/src/agents/remote-invocation.d.ts +35 -0
  149. package/dist/src/agents/remote-invocation.js +126 -0
  150. package/dist/src/agents/remote-invocation.js.map +1 -0
  151. package/dist/src/agents/remote-invocation.test.d.ts +6 -0
  152. package/dist/src/agents/remote-invocation.test.js +201 -0
  153. package/dist/src/agents/remote-invocation.test.js.map +1 -0
  154. package/dist/src/agents/subagent-tool-wrapper.d.ts +2 -2
  155. package/dist/src/agents/subagent-tool-wrapper.js +11 -6
  156. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
  157. package/dist/src/agents/subagent-tool-wrapper.test.js +33 -19
  158. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
  159. package/dist/src/agents/types.d.ts +21 -15
  160. package/dist/src/agents/types.js.map +1 -1
  161. package/dist/src/availability/errorClassification.d.ts +7 -0
  162. package/dist/src/availability/errorClassification.js +20 -0
  163. package/dist/src/availability/errorClassification.js.map +1 -0
  164. package/dist/src/availability/fallbackIntegration.test.d.ts +6 -0
  165. package/dist/src/availability/fallbackIntegration.test.js +58 -0
  166. package/dist/src/availability/fallbackIntegration.test.js.map +1 -0
  167. package/dist/src/availability/modelAvailabilityService.d.ts +3 -1
  168. package/dist/src/availability/modelAvailabilityService.js +3 -0
  169. package/dist/src/availability/modelAvailabilityService.js.map +1 -1
  170. package/dist/src/availability/modelPolicy.d.ts +8 -1
  171. package/dist/src/availability/policyCatalog.d.ts +1 -0
  172. package/dist/src/availability/policyCatalog.js +6 -7
  173. package/dist/src/availability/policyCatalog.js.map +1 -1
  174. package/dist/src/availability/policyCatalog.test.js +2 -2
  175. package/dist/src/availability/policyCatalog.test.js.map +1 -1
  176. package/dist/src/availability/policyHelpers.d.ts +34 -3
  177. package/dist/src/availability/policyHelpers.js +104 -13
  178. package/dist/src/availability/policyHelpers.js.map +1 -1
  179. package/dist/src/availability/policyHelpers.test.js +143 -13
  180. package/dist/src/availability/policyHelpers.test.js.map +1 -1
  181. package/dist/src/availability/testUtils.d.ts +10 -0
  182. package/dist/src/availability/testUtils.js +22 -0
  183. package/dist/src/availability/testUtils.js.map +1 -0
  184. package/dist/src/code_assist/experiments/client_metadata.js +2 -1
  185. package/dist/src/code_assist/experiments/client_metadata.js.map +1 -1
  186. package/dist/src/code_assist/experiments/client_metadata.test.js +7 -10
  187. package/dist/src/code_assist/experiments/client_metadata.test.js.map +1 -1
  188. package/dist/src/code_assist/experiments/experiments.d.ts +1 -1
  189. package/dist/src/code_assist/experiments/experiments.js +21 -0
  190. package/dist/src/code_assist/experiments/experiments.js.map +1 -1
  191. package/dist/src/code_assist/experiments/experiments_local.test.d.ts +6 -0
  192. package/dist/src/code_assist/experiments/experiments_local.test.js +110 -0
  193. package/dist/src/code_assist/experiments/experiments_local.test.js.map +1 -0
  194. package/dist/src/code_assist/oauth-credential-storage.js +3 -4
  195. package/dist/src/code_assist/oauth-credential-storage.js.map +1 -1
  196. package/dist/src/code_assist/oauth2.d.ts +2 -0
  197. package/dist/src/code_assist/oauth2.js +70 -14
  198. package/dist/src/code_assist/oauth2.js.map +1 -1
  199. package/dist/src/code_assist/oauth2.test.js +224 -22
  200. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  201. package/dist/src/code_assist/server.d.ts +9 -1
  202. package/dist/src/code_assist/server.js +74 -11
  203. package/dist/src/code_assist/server.js.map +1 -1
  204. package/dist/src/code_assist/server.test.js +199 -27
  205. package/dist/src/code_assist/server.test.js.map +1 -1
  206. package/dist/src/code_assist/setup.js +6 -4
  207. package/dist/src/code_assist/setup.js.map +1 -1
  208. package/dist/src/code_assist/setup.test.js +63 -0
  209. package/dist/src/code_assist/setup.test.js.map +1 -1
  210. package/dist/src/code_assist/telemetry.d.ts +14 -0
  211. package/dist/src/code_assist/telemetry.js +157 -0
  212. package/dist/src/code_assist/telemetry.js.map +1 -0
  213. package/dist/src/code_assist/telemetry.test.d.ts +6 -0
  214. package/dist/src/code_assist/telemetry.test.js +301 -0
  215. package/dist/src/code_assist/telemetry.test.js.map +1 -0
  216. package/dist/src/code_assist/types.d.ts +77 -1
  217. package/dist/src/code_assist/types.js +28 -0
  218. package/dist/src/code_assist/types.js.map +1 -1
  219. package/dist/src/commands/init.d.ts +7 -0
  220. package/dist/src/commands/init.js +53 -0
  221. package/dist/src/commands/init.js.map +1 -0
  222. package/dist/src/commands/init.test.d.ts +6 -0
  223. package/dist/src/commands/init.test.js +25 -0
  224. package/dist/src/commands/init.test.js.map +1 -0
  225. package/dist/src/commands/memory.d.ts +11 -0
  226. package/dist/src/commands/memory.js +80 -0
  227. package/dist/src/commands/memory.js.map +1 -0
  228. package/dist/src/commands/memory.test.d.ts +6 -0
  229. package/dist/src/commands/memory.test.js +155 -0
  230. package/dist/src/commands/memory.test.js.map +1 -0
  231. package/dist/src/commands/restore.d.ts +9 -0
  232. package/dist/src/commands/restore.js +46 -0
  233. package/dist/src/commands/restore.js.map +1 -0
  234. package/dist/src/commands/restore.test.d.ts +6 -0
  235. package/dist/src/commands/restore.test.js +137 -0
  236. package/dist/src/commands/restore.test.js.map +1 -0
  237. package/dist/src/commands/types.d.ts +41 -0
  238. package/dist/src/commands/types.js +7 -0
  239. package/dist/src/commands/types.js.map +1 -0
  240. package/dist/src/config/config.d.ts +145 -25
  241. package/dist/src/config/config.js +370 -132
  242. package/dist/src/config/config.js.map +1 -1
  243. package/dist/src/config/config.test.js +416 -50
  244. package/dist/src/config/config.test.js.map +1 -1
  245. package/dist/src/config/defaultModelConfigs.js +21 -0
  246. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  247. package/dist/src/config/flashFallback.test.js +11 -35
  248. package/dist/src/config/flashFallback.test.js.map +1 -1
  249. package/dist/src/config/models.d.ts +36 -15
  250. package/dist/src/config/models.js +89 -28
  251. package/dist/src/config/models.js.map +1 -1
  252. package/dist/src/config/models.test.js +107 -77
  253. package/dist/src/config/models.test.js.map +1 -1
  254. package/dist/src/config/storage.d.ts +5 -0
  255. package/dist/src/config/storage.js +17 -2
  256. package/dist/src/config/storage.js.map +1 -1
  257. package/dist/src/config/storage.test.js +16 -0
  258. package/dist/src/config/storage.test.js.map +1 -1
  259. package/dist/src/confirmation-bus/message-bus.js +3 -1
  260. package/dist/src/confirmation-bus/message-bus.js.map +1 -1
  261. package/dist/src/confirmation-bus/types.d.ts +4 -0
  262. package/dist/src/core/baseLlmClient.d.ts +3 -1
  263. package/dist/src/core/baseLlmClient.js +60 -22
  264. package/dist/src/core/baseLlmClient.js.map +1 -1
  265. package/dist/src/core/baseLlmClient.test.js +177 -7
  266. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  267. package/dist/src/core/client.d.ts +7 -1
  268. package/dist/src/core/client.js +261 -96
  269. package/dist/src/core/client.js.map +1 -1
  270. package/dist/src/core/client.test.js +397 -67
  271. package/dist/src/core/client.test.js.map +1 -1
  272. package/dist/src/core/clientHookTriggers.js +2 -2
  273. package/dist/src/core/clientHookTriggers.js.map +1 -1
  274. package/dist/src/core/contentGenerator.js +6 -4
  275. package/dist/src/core/contentGenerator.js.map +1 -1
  276. package/dist/src/core/contentGenerator.test.js +24 -23
  277. package/dist/src/core/contentGenerator.test.js.map +1 -1
  278. package/dist/src/core/coreToolHookTriggers.d.ts +9 -5
  279. package/dist/src/core/coreToolHookTriggers.js +119 -21
  280. package/dist/src/core/coreToolHookTriggers.js.map +1 -1
  281. package/dist/src/core/coreToolHookTriggers.test.d.ts +6 -0
  282. package/dist/src/core/coreToolHookTriggers.test.js +191 -0
  283. package/dist/src/core/coreToolHookTriggers.test.js.map +1 -0
  284. package/dist/src/core/coreToolScheduler.d.ts +7 -93
  285. package/dist/src/core/coreToolScheduler.js +139 -333
  286. package/dist/src/core/coreToolScheduler.js.map +1 -1
  287. package/dist/src/core/coreToolScheduler.test.js +304 -348
  288. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  289. package/dist/src/core/geminiChat.d.ts +26 -1
  290. package/dist/src/core/geminiChat.js +144 -80
  291. package/dist/src/core/geminiChat.js.map +1 -1
  292. package/dist/src/core/geminiChat.test.js +334 -253
  293. package/dist/src/core/geminiChat.test.js.map +1 -1
  294. package/dist/src/core/geminiChatHookTriggers.d.ts +8 -4
  295. package/dist/src/core/geminiChatHookTriggers.js +34 -12
  296. package/dist/src/core/geminiChatHookTriggers.js.map +1 -1
  297. package/dist/src/core/geminiChatHookTriggers.test.d.ts +6 -0
  298. package/dist/src/core/geminiChatHookTriggers.test.js +153 -0
  299. package/dist/src/core/geminiChatHookTriggers.test.js.map +1 -0
  300. package/dist/src/core/geminiChat_network_retry.test.d.ts +6 -0
  301. package/dist/src/core/geminiChat_network_retry.test.js +196 -0
  302. package/dist/src/core/geminiChat_network_retry.test.js.map +1 -0
  303. package/dist/src/core/logger.js.map +1 -1
  304. package/dist/src/core/loggingContentGenerator.js +19 -2
  305. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  306. package/dist/src/core/loggingContentGenerator.test.js +30 -0
  307. package/dist/src/core/loggingContentGenerator.test.js.map +1 -1
  308. package/dist/src/core/nonInteractiveToolExecutor.test.js +7 -8
  309. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  310. package/dist/src/core/prompts.js +48 -22
  311. package/dist/src/core/prompts.js.map +1 -1
  312. package/dist/src/core/prompts.test.js +66 -11
  313. package/dist/src/core/prompts.test.js.map +1 -1
  314. package/dist/src/core/tokenLimits.js +6 -12
  315. package/dist/src/core/tokenLimits.js.map +1 -1
  316. package/dist/src/core/tokenLimits.test.js +8 -4
  317. package/dist/src/core/tokenLimits.test.js.map +1 -1
  318. package/dist/src/core/turn.d.ts +21 -21
  319. package/dist/src/core/turn.js +32 -22
  320. package/dist/src/core/turn.js.map +1 -1
  321. package/dist/src/core/turn.test.js +79 -5
  322. package/dist/src/core/turn.test.js.map +1 -1
  323. package/dist/src/fallback/handler.js +55 -120
  324. package/dist/src/fallback/handler.js.map +1 -1
  325. package/dist/src/fallback/handler.test.js +115 -288
  326. package/dist/src/fallback/handler.test.js.map +1 -1
  327. package/dist/src/generated/git-commit.d.ts +3 -3
  328. package/dist/src/generated/git-commit.js +3 -3
  329. package/dist/src/hooks/hookAggregator.js +7 -0
  330. package/dist/src/hooks/hookAggregator.js.map +1 -1
  331. package/dist/src/hooks/hookEventHandler.d.ts +9 -5
  332. package/dist/src/hooks/hookEventHandler.js +120 -16
  333. package/dist/src/hooks/hookEventHandler.js.map +1 -1
  334. package/dist/src/hooks/hookEventHandler.test.js +231 -9
  335. package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
  336. package/dist/src/hooks/hookPlanner.d.ts +1 -5
  337. package/dist/src/hooks/hookPlanner.js +2 -7
  338. package/dist/src/hooks/hookPlanner.js.map +1 -1
  339. package/dist/src/hooks/hookPlanner.test.js +62 -2
  340. package/dist/src/hooks/hookPlanner.test.js.map +1 -1
  341. package/dist/src/hooks/hookRegistry.d.ts +6 -18
  342. package/dist/src/hooks/hookRegistry.js +49 -35
  343. package/dist/src/hooks/hookRegistry.js.map +1 -1
  344. package/dist/src/hooks/hookRegistry.test.js +167 -8
  345. package/dist/src/hooks/hookRegistry.test.js.map +1 -1
  346. package/dist/src/hooks/hookRunner.d.ts +5 -3
  347. package/dist/src/hooks/hookRunner.js +68 -18
  348. package/dist/src/hooks/hookRunner.js.map +1 -1
  349. package/dist/src/hooks/hookRunner.test.js +173 -36
  350. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  351. package/dist/src/hooks/hookSystem.d.ts +10 -6
  352. package/dist/src/hooks/hookSystem.js +36 -16
  353. package/dist/src/hooks/hookSystem.js.map +1 -1
  354. package/dist/src/hooks/hookSystem.test.js +123 -18
  355. package/dist/src/hooks/hookSystem.test.js.map +1 -1
  356. package/dist/src/hooks/hookTranslator.js +2 -1
  357. package/dist/src/hooks/hookTranslator.js.map +1 -1
  358. package/dist/src/hooks/index.d.ts +2 -1
  359. package/dist/src/hooks/index.js +1 -0
  360. package/dist/src/hooks/index.js.map +1 -1
  361. package/dist/src/hooks/trustedHooks.d.ts +28 -0
  362. package/dist/src/hooks/trustedHooks.js +90 -0
  363. package/dist/src/hooks/trustedHooks.js.map +1 -0
  364. package/dist/src/hooks/trustedHooks.test.d.ts +6 -0
  365. package/dist/src/hooks/trustedHooks.test.js +154 -0
  366. package/dist/src/hooks/trustedHooks.test.js.map +1 -0
  367. package/dist/src/hooks/types.d.ts +42 -11
  368. package/dist/src/hooks/types.js +31 -42
  369. package/dist/src/hooks/types.js.map +1 -1
  370. package/dist/src/hooks/types.test.js +9 -52
  371. package/dist/src/hooks/types.test.js.map +1 -1
  372. package/dist/src/ide/detect-ide.d.ts +4 -0
  373. package/dist/src/ide/detect-ide.js +7 -2
  374. package/dist/src/ide/detect-ide.js.map +1 -1
  375. package/dist/src/ide/detect-ide.test.js +42 -1
  376. package/dist/src/ide/detect-ide.test.js.map +1 -1
  377. package/dist/src/ide/ide-client.js +6 -1
  378. package/dist/src/ide/ide-client.js.map +1 -1
  379. package/dist/src/ide/ide-installer.js +2 -2
  380. package/dist/src/ide/ide-installer.js.map +1 -1
  381. package/dist/src/ide/ide-installer.test.js +12 -3
  382. package/dist/src/ide/ide-installer.test.js.map +1 -1
  383. package/dist/src/index.d.ts +23 -1
  384. package/dist/src/index.js +25 -2
  385. package/dist/src/index.js.map +1 -1
  386. package/dist/src/mcp/oauth-provider.js +7 -3
  387. package/dist/src/mcp/oauth-provider.js.map +1 -1
  388. package/dist/src/mcp/oauth-provider.test.js +4 -1
  389. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  390. package/dist/src/mcp/oauth-utils.d.ts +8 -1
  391. package/dist/src/mcp/oauth-utils.js +31 -2
  392. package/dist/src/mcp/oauth-utils.js.map +1 -1
  393. package/dist/src/mcp/oauth-utils.test.js +42 -0
  394. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  395. package/dist/src/mcp/token-storage/file-token-storage.js +2 -2
  396. package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -1
  397. package/dist/src/mcp/token-storage/keychain-token-storage.js +1 -1
  398. package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -1
  399. package/dist/src/output/json-formatter.d.ts +2 -2
  400. package/dist/src/output/json-formatter.js +6 -3
  401. package/dist/src/output/json-formatter.js.map +1 -1
  402. package/dist/src/output/json-formatter.test.js +37 -9
  403. package/dist/src/output/json-formatter.test.js.map +1 -1
  404. package/dist/src/output/stream-json-formatter.js +6 -0
  405. package/dist/src/output/stream-json-formatter.js.map +1 -1
  406. package/dist/src/output/stream-json-formatter.test.js +98 -100
  407. package/dist/src/output/stream-json-formatter.test.js.map +1 -1
  408. package/dist/src/output/types.d.ts +3 -0
  409. package/dist/src/output/types.js.map +1 -1
  410. package/dist/src/policy/config.js +140 -15
  411. package/dist/src/policy/config.js.map +1 -1
  412. package/dist/src/policy/config.test.js +24 -2
  413. package/dist/src/policy/config.test.js.map +1 -1
  414. package/dist/src/policy/persistence.test.d.ts +6 -0
  415. package/dist/src/policy/persistence.test.js +154 -0
  416. package/dist/src/policy/persistence.test.js.map +1 -0
  417. package/dist/src/policy/policies/agent.toml +31 -0
  418. package/dist/src/policy/policies/write.toml +5 -0
  419. package/dist/src/policy/policies/yolo.toml +1 -0
  420. package/dist/src/policy/policy-engine.d.ts +14 -1
  421. package/dist/src/policy/policy-engine.js +165 -7
  422. package/dist/src/policy/policy-engine.js.map +1 -1
  423. package/dist/src/policy/policy-engine.test.js +315 -3
  424. package/dist/src/policy/policy-engine.test.js.map +1 -1
  425. package/dist/src/policy/policy-updater.test.d.ts +6 -0
  426. package/dist/src/policy/policy-updater.test.js +116 -0
  427. package/dist/src/policy/policy-updater.test.js.map +1 -0
  428. package/dist/src/policy/shell-safety.test.d.ts +6 -0
  429. package/dist/src/policy/shell-safety.test.js +438 -0
  430. package/dist/src/policy/shell-safety.test.js.map +1 -0
  431. package/dist/src/policy/toml-loader.d.ts +3 -5
  432. package/dist/src/policy/toml-loader.js +43 -60
  433. package/dist/src/policy/toml-loader.js.map +1 -1
  434. package/dist/src/policy/toml-loader.test.js +41 -7
  435. package/dist/src/policy/toml-loader.test.js.map +1 -1
  436. package/dist/src/policy/types.d.ts +25 -0
  437. package/dist/src/policy/utils.d.ts +21 -0
  438. package/dist/src/policy/utils.js +45 -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 +92 -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/routingStrategy.d.ts +2 -0
  454. package/dist/src/routing/strategies/classifierStrategy.js +10 -21
  455. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
  456. package/dist/src/routing/strategies/classifierStrategy.test.js +18 -1
  457. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
  458. package/dist/src/routing/strategies/compositeStrategy.js +4 -2
  459. package/dist/src/routing/strategies/compositeStrategy.js.map +1 -1
  460. package/dist/src/routing/strategies/compositeStrategy.test.js +11 -10
  461. package/dist/src/routing/strategies/compositeStrategy.test.js.map +1 -1
  462. package/dist/src/routing/strategies/fallbackStrategy.d.ts +1 -1
  463. package/dist/src/routing/strategies/fallbackStrategy.js +21 -13
  464. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
  465. package/dist/src/routing/strategies/fallbackStrategy.test.js +76 -39
  466. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -1
  467. package/dist/src/routing/strategies/overrideStrategy.d.ts +1 -1
  468. package/dist/src/routing/strategies/overrideStrategy.js +5 -4
  469. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
  470. package/dist/src/routing/strategies/overrideStrategy.test.js +14 -0
  471. package/dist/src/routing/strategies/overrideStrategy.test.js.map +1 -1
  472. package/dist/src/safety/checker-runner.js +17 -6
  473. package/dist/src/safety/checker-runner.js.map +1 -1
  474. package/dist/src/scheduler/tool-executor.d.ts +22 -0
  475. package/dist/src/scheduler/tool-executor.js +198 -0
  476. package/dist/src/scheduler/tool-executor.js.map +1 -0
  477. package/dist/src/scheduler/tool-executor.test.d.ts +6 -0
  478. package/dist/src/scheduler/tool-executor.test.js +231 -0
  479. package/dist/src/scheduler/tool-executor.test.js.map +1 -0
  480. package/dist/src/scheduler/tool-modifier.d.ts +23 -0
  481. package/dist/src/scheduler/tool-modifier.js +50 -0
  482. package/dist/src/scheduler/tool-modifier.js.map +1 -0
  483. package/dist/src/scheduler/tool-modifier.test.d.ts +6 -0
  484. package/dist/src/scheduler/tool-modifier.test.js +159 -0
  485. package/dist/src/scheduler/tool-modifier.test.js.map +1 -0
  486. package/dist/src/scheduler/types.d.ts +95 -0
  487. package/dist/src/scheduler/types.js +7 -0
  488. package/dist/src/scheduler/types.js.map +1 -0
  489. package/dist/src/services/chatCompressionService.js +8 -1
  490. package/dist/src/services/chatCompressionService.js.map +1 -1
  491. package/dist/src/services/chatCompressionService.test.js +3 -0
  492. package/dist/src/services/chatCompressionService.test.js.map +1 -1
  493. package/dist/src/services/chatRecordingService.d.ts +21 -1
  494. package/dist/src/services/chatRecordingService.js +57 -2
  495. package/dist/src/services/chatRecordingService.js.map +1 -1
  496. package/dist/src/services/chatRecordingService.test.js +43 -0
  497. package/dist/src/services/chatRecordingService.test.js.map +1 -1
  498. package/dist/src/services/contextManager.d.ts +5 -11
  499. package/dist/src/services/contextManager.js +20 -17
  500. package/dist/src/services/contextManager.js.map +1 -1
  501. package/dist/src/services/contextManager.test.js +40 -41
  502. package/dist/src/services/contextManager.test.js.map +1 -1
  503. package/dist/src/services/environmentSanitization.d.ts +15 -0
  504. package/dist/src/services/environmentSanitization.js +142 -0
  505. package/dist/src/services/environmentSanitization.js.map +1 -0
  506. package/dist/src/services/environmentSanitization.test.d.ts +6 -0
  507. package/dist/src/services/environmentSanitization.test.js +284 -0
  508. package/dist/src/services/environmentSanitization.test.js.map +1 -0
  509. package/dist/src/services/fileSystemService.d.ts +0 -9
  510. package/dist/src/services/fileSystemService.js +0 -11
  511. package/dist/src/services/fileSystemService.js.map +1 -1
  512. package/dist/src/services/gitService.js +15 -1
  513. package/dist/src/services/gitService.js.map +1 -1
  514. package/dist/src/services/gitService.test.js +56 -2
  515. package/dist/src/services/gitService.test.js.map +1 -1
  516. package/dist/src/services/loopDetectionService.js +4 -3
  517. package/dist/src/services/loopDetectionService.js.map +1 -1
  518. package/dist/src/services/loopDetectionService.test.js +14 -8
  519. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  520. package/dist/src/services/modelConfig.golden.test.js +32 -0
  521. package/dist/src/services/modelConfig.golden.test.js.map +1 -1
  522. package/dist/src/services/modelConfig.integration.test.js +3 -3
  523. package/dist/src/services/modelConfig.integration.test.js.map +1 -1
  524. package/dist/src/services/modelConfigService.d.ts +41 -4
  525. package/dist/src/services/modelConfigService.js +135 -75
  526. package/dist/src/services/modelConfigService.js.map +1 -1
  527. package/dist/src/services/modelConfigService.test.js +226 -0
  528. package/dist/src/services/modelConfigService.test.js.map +1 -1
  529. package/dist/src/services/modelConfigServiceTestUtils.d.ts +10 -0
  530. package/dist/src/services/modelConfigServiceTestUtils.js +17 -0
  531. package/dist/src/services/modelConfigServiceTestUtils.js.map +1 -0
  532. package/dist/src/services/sessionSummaryService.d.ts +28 -0
  533. package/dist/src/services/sessionSummaryService.js +131 -0
  534. package/dist/src/services/sessionSummaryService.js.map +1 -0
  535. package/dist/src/services/sessionSummaryService.test.d.ts +6 -0
  536. package/dist/src/services/sessionSummaryService.test.js +785 -0
  537. package/dist/src/services/sessionSummaryService.test.js.map +1 -0
  538. package/dist/src/services/sessionSummaryUtils.d.ts +16 -0
  539. package/dist/src/services/sessionSummaryUtils.js +129 -0
  540. package/dist/src/services/sessionSummaryUtils.js.map +1 -0
  541. package/dist/src/services/sessionSummaryUtils.test.d.ts +6 -0
  542. package/dist/src/services/sessionSummaryUtils.test.js +137 -0
  543. package/dist/src/services/sessionSummaryUtils.test.js.map +1 -0
  544. package/dist/src/services/shellExecutionService.d.ts +2 -0
  545. package/dist/src/services/shellExecutionService.js +34 -72
  546. package/dist/src/services/shellExecutionService.js.map +1 -1
  547. package/dist/src/services/shellExecutionService.test.js +114 -8
  548. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  549. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +238 -0
  550. package/dist/src/services/test-data/resolved-aliases.golden.json +16 -0
  551. package/dist/src/skills/skillLoader.d.ts +31 -0
  552. package/dist/src/skills/skillLoader.js +77 -0
  553. package/dist/src/skills/skillLoader.js.map +1 -0
  554. package/dist/src/skills/skillLoader.test.d.ts +6 -0
  555. package/dist/src/skills/skillLoader.test.js +75 -0
  556. package/dist/src/skills/skillLoader.test.js.map +1 -0
  557. package/dist/src/skills/skillManager.d.ts +69 -0
  558. package/dist/src/skills/skillManager.js +127 -0
  559. package/dist/src/skills/skillManager.js.map +1 -0
  560. package/dist/src/skills/skillManager.test.d.ts +6 -0
  561. package/dist/src/skills/skillManager.test.js +210 -0
  562. package/dist/src/skills/skillManager.test.js.map +1 -0
  563. package/dist/src/telemetry/activity-detector.test.js.map +1 -1
  564. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +19 -9
  565. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +261 -164
  566. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  567. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +223 -27
  568. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  569. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +12 -3
  570. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +26 -5
  571. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  572. package/dist/src/telemetry/config.js +2 -0
  573. package/dist/src/telemetry/config.js.map +1 -1
  574. package/dist/src/telemetry/config.test.js +25 -0
  575. package/dist/src/telemetry/config.test.js.map +1 -1
  576. package/dist/src/telemetry/gcp-exporters.d.ts +4 -3
  577. package/dist/src/telemetry/gcp-exporters.js +8 -4
  578. package/dist/src/telemetry/gcp-exporters.js.map +1 -1
  579. package/dist/src/telemetry/index.d.ts +1 -1
  580. package/dist/src/telemetry/index.js +1 -1
  581. package/dist/src/telemetry/index.js.map +1 -1
  582. package/dist/src/telemetry/loggers.d.ts +4 -3
  583. package/dist/src/telemetry/loggers.js +351 -340
  584. package/dist/src/telemetry/loggers.js.map +1 -1
  585. package/dist/src/telemetry/loggers.test.circular.js +1 -0
  586. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  587. package/dist/src/telemetry/loggers.test.js +71 -15
  588. package/dist/src/telemetry/loggers.test.js.map +1 -1
  589. package/dist/src/telemetry/metrics.test.js.map +1 -1
  590. package/dist/src/telemetry/sdk.d.ts +9 -2
  591. package/dist/src/telemetry/sdk.js +142 -17
  592. package/dist/src/telemetry/sdk.js.map +1 -1
  593. package/dist/src/telemetry/sdk.test.js +130 -28
  594. package/dist/src/telemetry/sdk.test.js.map +1 -1
  595. package/dist/src/telemetry/startupProfiler.js +26 -3
  596. package/dist/src/telemetry/startupProfiler.js.map +1 -1
  597. package/dist/src/telemetry/startupProfiler.test.js +49 -7
  598. package/dist/src/telemetry/startupProfiler.test.js.map +1 -1
  599. package/dist/src/telemetry/telemetry.test.js +10 -3
  600. package/dist/src/telemetry/telemetry.test.js.map +1 -1
  601. package/dist/src/telemetry/trace.js.map +1 -1
  602. package/dist/src/telemetry/types.d.ts +37 -12
  603. package/dist/src/telemetry/types.js +61 -20
  604. package/dist/src/telemetry/types.js.map +1 -1
  605. package/dist/src/telemetry/uiTelemetry.d.ts +1 -0
  606. package/dist/src/telemetry/uiTelemetry.js +2 -0
  607. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  608. package/dist/src/telemetry/uiTelemetry.test.js +4 -0
  609. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  610. package/dist/src/test-utils/mock-message-bus.d.ts +1 -0
  611. package/dist/src/test-utils/mock-message-bus.js +29 -0
  612. package/dist/src/test-utils/mock-message-bus.js.map +1 -1
  613. package/dist/src/test-utils/mock-tool.d.ts +5 -3
  614. package/dist/src/test-utils/mock-tool.js +11 -10
  615. package/dist/src/test-utils/mock-tool.js.map +1 -1
  616. package/dist/src/tools/activate-skill.d.ts +27 -0
  617. package/dist/src/tools/activate-skill.js +133 -0
  618. package/dist/src/tools/activate-skill.js.map +1 -0
  619. package/dist/src/tools/activate-skill.test.d.ts +6 -0
  620. package/dist/src/tools/activate-skill.test.js +113 -0
  621. package/dist/src/tools/activate-skill.test.js.map +1 -0
  622. package/dist/src/tools/confirmation-policy.test.d.ts +6 -0
  623. package/dist/src/tools/confirmation-policy.test.js +143 -0
  624. package/dist/src/tools/confirmation-policy.test.js.map +1 -0
  625. package/dist/src/tools/edit.d.ts +27 -5
  626. package/dist/src/tools/edit.js +460 -136
  627. package/dist/src/tools/edit.js.map +1 -1
  628. package/dist/src/tools/edit.test.js +292 -526
  629. package/dist/src/tools/edit.test.js.map +1 -1
  630. package/dist/src/tools/get-internal-docs.d.ts +27 -0
  631. package/dist/src/tools/get-internal-docs.js +122 -0
  632. package/dist/src/tools/get-internal-docs.js.map +1 -0
  633. package/dist/src/tools/get-internal-docs.test.d.ts +6 -0
  634. package/dist/src/tools/get-internal-docs.test.js +57 -0
  635. package/dist/src/tools/get-internal-docs.test.js.map +1 -0
  636. package/dist/src/tools/glob.d.ts +2 -2
  637. package/dist/src/tools/glob.js +1 -1
  638. package/dist/src/tools/glob.js.map +1 -1
  639. package/dist/src/tools/glob.test.js +2 -1
  640. package/dist/src/tools/glob.test.js.map +1 -1
  641. package/dist/src/tools/grep.d.ts +2 -2
  642. package/dist/src/tools/grep.js +1 -1
  643. package/dist/src/tools/grep.js.map +1 -1
  644. package/dist/src/tools/grep.test.js +5 -4
  645. package/dist/src/tools/grep.test.js.map +1 -1
  646. package/dist/src/tools/ls.d.ts +2 -2
  647. package/dist/src/tools/ls.js +2 -2
  648. package/dist/src/tools/ls.js.map +1 -1
  649. package/dist/src/tools/ls.test.js +2 -1
  650. package/dist/src/tools/ls.test.js.map +1 -1
  651. package/dist/src/tools/mcp-client-manager.d.ts +2 -1
  652. package/dist/src/tools/mcp-client-manager.js +32 -9
  653. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  654. package/dist/src/tools/mcp-client-manager.test.js +41 -10
  655. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  656. package/dist/src/tools/mcp-client.d.ts +43 -6
  657. package/dist/src/tools/mcp-client.js +443 -176
  658. package/dist/src/tools/mcp-client.js.map +1 -1
  659. package/dist/src/tools/mcp-client.test.js +664 -39
  660. package/dist/src/tools/mcp-client.test.js.map +1 -1
  661. package/dist/src/tools/mcp-tool.d.ts +20 -5
  662. package/dist/src/tools/mcp-tool.js +21 -8
  663. package/dist/src/tools/mcp-tool.js.map +1 -1
  664. package/dist/src/tools/mcp-tool.test.js +35 -5
  665. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  666. package/dist/src/tools/memoryTool.d.ts +3 -3
  667. package/dist/src/tools/memoryTool.js +3 -4
  668. package/dist/src/tools/memoryTool.js.map +1 -1
  669. package/dist/src/tools/memoryTool.test.js +5 -2
  670. package/dist/src/tools/memoryTool.test.js.map +1 -1
  671. package/dist/src/tools/message-bus-integration.test.js +10 -37
  672. package/dist/src/tools/message-bus-integration.test.js.map +1 -1
  673. package/dist/src/tools/modifiable-tool.js.map +1 -1
  674. package/dist/src/tools/modifiable-tool.test.js +22 -13
  675. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  676. package/dist/src/tools/read-file.d.ts +2 -2
  677. package/dist/src/tools/read-file.js +2 -2
  678. package/dist/src/tools/read-file.js.map +1 -1
  679. package/dist/src/tools/read-file.test.js +3 -2
  680. package/dist/src/tools/read-file.test.js.map +1 -1
  681. package/dist/src/tools/read-many-files.d.ts +2 -2
  682. package/dist/src/tools/read-many-files.js +7 -6
  683. package/dist/src/tools/read-many-files.js.map +1 -1
  684. package/dist/src/tools/read-many-files.test.js +4 -3
  685. package/dist/src/tools/read-many-files.test.js.map +1 -1
  686. package/dist/src/tools/ripGrep.d.ts +3 -2
  687. package/dist/src/tools/ripGrep.js +18 -7
  688. package/dist/src/tools/ripGrep.js.map +1 -1
  689. package/dist/src/tools/ripGrep.test.js +60 -4
  690. package/dist/src/tools/ripGrep.test.js.map +1 -1
  691. package/dist/src/tools/shell.d.ts +5 -7
  692. package/dist/src/tools/shell.js +35 -49
  693. package/dist/src/tools/shell.js.map +1 -1
  694. package/dist/src/tools/shell.test.js +36 -59
  695. package/dist/src/tools/shell.test.js.map +1 -1
  696. package/dist/src/tools/tool-error.d.ts +6 -1
  697. package/dist/src/tools/tool-error.js +6 -0
  698. package/dist/src/tools/tool-error.js.map +1 -1
  699. package/dist/src/tools/tool-names.d.ts +17 -0
  700. package/dist/src/tools/tool-names.js +59 -0
  701. package/dist/src/tools/tool-names.js.map +1 -1
  702. package/dist/src/tools/tool-names.test.d.ts +6 -0
  703. package/dist/src/tools/tool-names.test.js +43 -0
  704. package/dist/src/tools/tool-names.test.js.map +1 -0
  705. package/dist/src/tools/tool-registry.d.ts +11 -7
  706. package/dist/src/tools/tool-registry.js +15 -10
  707. package/dist/src/tools/tool-registry.js.map +1 -1
  708. package/dist/src/tools/tool-registry.test.js +16 -11
  709. package/dist/src/tools/tool-registry.test.js.map +1 -1
  710. package/dist/src/tools/tools.d.ts +27 -6
  711. package/dist/src/tools/tools.js +44 -25
  712. package/dist/src/tools/tools.js.map +1 -1
  713. package/dist/src/tools/tools.test.js +3 -1
  714. package/dist/src/tools/tools.test.js.map +1 -1
  715. package/dist/src/tools/web-fetch.d.ts +2 -2
  716. package/dist/src/tools/web-fetch.js +21 -8
  717. package/dist/src/tools/web-fetch.js.map +1 -1
  718. package/dist/src/tools/web-fetch.test.js +18 -19
  719. package/dist/src/tools/web-fetch.test.js.map +1 -1
  720. package/dist/src/tools/web-search.d.ts +2 -2
  721. package/dist/src/tools/web-search.js +5 -5
  722. package/dist/src/tools/web-search.js.map +1 -1
  723. package/dist/src/tools/web-search.test.js +2 -1
  724. package/dist/src/tools/web-search.test.js.map +1 -1
  725. package/dist/src/tools/write-file.d.ts +2 -2
  726. package/dist/src/tools/write-file.js +14 -6
  727. package/dist/src/tools/write-file.js.map +1 -1
  728. package/dist/src/tools/write-file.test.js +49 -7
  729. package/dist/src/tools/write-file.test.js.map +1 -1
  730. package/dist/src/tools/write-todos.d.ts +2 -2
  731. package/dist/src/tools/write-todos.js +5 -4
  732. package/dist/src/tools/write-todos.js.map +1 -1
  733. package/dist/src/tools/write-todos.test.js +2 -1
  734. package/dist/src/tools/write-todos.test.js.map +1 -1
  735. package/dist/src/utils/apiConversionUtils.d.ts +12 -0
  736. package/dist/src/utils/apiConversionUtils.js +46 -0
  737. package/dist/src/utils/apiConversionUtils.js.map +1 -0
  738. package/dist/src/utils/apiConversionUtils.test.d.ts +6 -0
  739. package/dist/src/utils/apiConversionUtils.test.js +150 -0
  740. package/dist/src/utils/apiConversionUtils.test.js.map +1 -0
  741. package/dist/src/utils/bfsFileSearch.d.ts +8 -0
  742. package/dist/src/utils/bfsFileSearch.js +63 -23
  743. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  744. package/dist/src/utils/bfsFileSearch.test.js +65 -1
  745. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  746. package/dist/src/utils/checkpointUtils.d.ts +82 -0
  747. package/dist/src/utils/checkpointUtils.js +117 -0
  748. package/dist/src/utils/checkpointUtils.js.map +1 -0
  749. package/dist/src/utils/checkpointUtils.test.d.ts +6 -0
  750. package/dist/src/utils/checkpointUtils.test.js +229 -0
  751. package/dist/src/utils/checkpointUtils.test.js.map +1 -0
  752. package/dist/src/utils/debugLogger.d.ts +3 -0
  753. package/dist/src/utils/debugLogger.js +28 -0
  754. package/dist/src/utils/debugLogger.js.map +1 -1
  755. package/dist/src/utils/editCorrector.d.ts +3 -3
  756. package/dist/src/utils/editCorrector.js +27 -10
  757. package/dist/src/utils/editCorrector.js.map +1 -1
  758. package/dist/src/utils/editCorrector.test.js +27 -23
  759. package/dist/src/utils/editCorrector.test.js.map +1 -1
  760. package/dist/src/utils/editor.d.ts +10 -1
  761. package/dist/src/utils/editor.js +48 -19
  762. package/dist/src/utils/editor.js.map +1 -1
  763. package/dist/src/utils/editor.test.js +27 -4
  764. package/dist/src/utils/editor.test.js.map +1 -1
  765. package/dist/src/utils/environmentContext.d.ts +1 -0
  766. package/dist/src/utils/environmentContext.js +4 -0
  767. package/dist/src/utils/environmentContext.js.map +1 -1
  768. package/dist/src/utils/environmentContext.test.js +2 -0
  769. package/dist/src/utils/environmentContext.test.js.map +1 -1
  770. package/dist/src/utils/errorReporting.d.ts +1 -1
  771. package/dist/src/utils/errorReporting.js +13 -12
  772. package/dist/src/utils/errorReporting.js.map +1 -1
  773. package/dist/src/utils/errorReporting.test.js +17 -14
  774. package/dist/src/utils/errorReporting.test.js.map +1 -1
  775. package/dist/src/utils/errors.d.ts +8 -0
  776. package/dist/src/utils/errors.js +39 -2
  777. package/dist/src/utils/errors.js.map +1 -1
  778. package/dist/src/utils/errors.test.d.ts +6 -0
  779. package/dist/src/utils/errors.test.js +155 -0
  780. package/dist/src/utils/errors.test.js.map +1 -0
  781. package/dist/src/utils/events.d.ts +71 -19
  782. package/dist/src/utils/events.js +35 -9
  783. package/dist/src/utils/events.js.map +1 -1
  784. package/dist/src/utils/events.test.js +25 -0
  785. package/dist/src/utils/events.test.js.map +1 -1
  786. package/dist/src/utils/extensionLoader.d.ts +2 -2
  787. package/dist/src/utils/extensionLoader.js +5 -6
  788. package/dist/src/utils/extensionLoader.js.map +1 -1
  789. package/dist/src/utils/extensionLoader.test.js +11 -0
  790. package/dist/src/utils/extensionLoader.test.js.map +1 -1
  791. package/dist/src/utils/fetch.d.ts +1 -1
  792. package/dist/src/utils/fetch.js +3 -3
  793. package/dist/src/utils/fetch.js.map +1 -1
  794. package/dist/src/utils/fileDiffUtils.d.ts +18 -0
  795. package/dist/src/utils/fileDiffUtils.js +37 -0
  796. package/dist/src/utils/fileDiffUtils.js.map +1 -0
  797. package/dist/src/utils/fileDiffUtils.test.d.ts +6 -0
  798. package/dist/src/utils/fileDiffUtils.test.js +84 -0
  799. package/dist/src/utils/fileDiffUtils.test.js.map +1 -0
  800. package/dist/src/utils/fileUtils.d.ts +4 -0
  801. package/dist/src/utils/fileUtils.js +53 -0
  802. package/dist/src/utils/fileUtils.js.map +1 -1
  803. package/dist/src/utils/fileUtils.test.js +127 -1
  804. package/dist/src/utils/fileUtils.test.js.map +1 -1
  805. package/dist/src/utils/filesearch/crawlCache.js.map +1 -1
  806. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  807. package/dist/src/utils/flashFallback.test.js +1 -1
  808. package/dist/src/utils/flashFallback.test.js.map +1 -1
  809. package/dist/src/utils/geminiIgnoreParser.d.ts +11 -0
  810. package/dist/src/utils/geminiIgnoreParser.js +20 -0
  811. package/dist/src/utils/geminiIgnoreParser.js.map +1 -1
  812. package/dist/src/utils/geminiIgnoreParser.test.js +48 -0
  813. package/dist/src/utils/geminiIgnoreParser.test.js.map +1 -1
  814. package/dist/src/utils/generateContentResponseUtilities.d.ts +3 -1
  815. package/dist/src/utils/generateContentResponseUtilities.js +106 -0
  816. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
  817. package/dist/src/utils/generateContentResponseUtilities.test.js +279 -2
  818. package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -1
  819. package/dist/src/utils/getFolderStructure.js +7 -2
  820. package/dist/src/utils/getFolderStructure.js.map +1 -1
  821. package/dist/src/utils/gitIgnoreParser.js +9 -10
  822. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  823. package/dist/src/utils/googleErrors.js +31 -18
  824. package/dist/src/utils/googleErrors.js.map +1 -1
  825. package/dist/src/utils/googleErrors.test.js +10 -2
  826. package/dist/src/utils/googleErrors.test.js.map +1 -1
  827. package/dist/src/utils/googleQuotaErrors.d.ts +3 -3
  828. package/dist/src/utils/googleQuotaErrors.js +32 -6
  829. package/dist/src/utils/googleQuotaErrors.js.map +1 -1
  830. package/dist/src/utils/googleQuotaErrors.test.js +94 -2
  831. package/dist/src/utils/googleQuotaErrors.test.js.map +1 -1
  832. package/dist/src/utils/installationManager.test.js +11 -3
  833. package/dist/src/utils/installationManager.test.js.map +1 -1
  834. package/dist/src/utils/memoryDiscovery.js +3 -4
  835. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  836. package/dist/src/utils/memoryDiscovery.test.js +12 -1
  837. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  838. package/dist/src/utils/nextSpeakerChecker.test.js +4 -0
  839. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  840. package/dist/src/utils/partUtils.js +1 -1
  841. package/dist/src/utils/partUtils.js.map +1 -1
  842. package/dist/src/utils/pathCorrector.js +12 -2
  843. package/dist/src/utils/pathCorrector.js.map +1 -1
  844. package/dist/src/utils/pathCorrector.test.js +6 -2
  845. package/dist/src/utils/pathCorrector.test.js.map +1 -1
  846. package/dist/src/utils/paths.d.ts +10 -0
  847. package/dist/src/utils/paths.js +20 -1
  848. package/dist/src/utils/paths.js.map +1 -1
  849. package/dist/src/utils/retry.d.ts +12 -0
  850. package/dist/src/utils/retry.js +70 -17
  851. package/dist/src/utils/retry.js.map +1 -1
  852. package/dist/src/utils/retry.test.js +181 -21
  853. package/dist/src/utils/retry.test.js.map +1 -1
  854. package/dist/src/utils/shell-utils.d.ts +16 -47
  855. package/dist/src/utils/shell-utils.js +98 -194
  856. package/dist/src/utils/shell-utils.js.map +1 -1
  857. package/dist/src/utils/shell-utils.test.js +99 -288
  858. package/dist/src/utils/shell-utils.test.js.map +1 -1
  859. package/dist/src/utils/summarizer.test.js +3 -2
  860. package/dist/src/utils/summarizer.test.js.map +1 -1
  861. package/dist/src/utils/terminal.d.ts +4 -0
  862. package/dist/src/utils/terminal.js +12 -0
  863. package/dist/src/utils/terminal.js.map +1 -1
  864. package/dist/src/utils/terminalSerializer.test.js +17 -0
  865. package/dist/src/utils/terminalSerializer.test.js.map +1 -1
  866. package/dist/src/utils/tokenCalculation.js +20 -5
  867. package/dist/src/utils/tokenCalculation.js.map +1 -1
  868. package/dist/src/utils/tokenCalculation.test.js +11 -2
  869. package/dist/src/utils/tokenCalculation.test.js.map +1 -1
  870. package/dist/src/utils/tool-utils.d.ts +9 -0
  871. package/dist/src/utils/tool-utils.js +29 -0
  872. package/dist/src/utils/tool-utils.js.map +1 -1
  873. package/dist/src/utils/tool-utils.test.js +17 -2
  874. package/dist/src/utils/tool-utils.test.js.map +1 -1
  875. package/dist/src/utils/userAccountManager.test.js +5 -5
  876. package/dist/src/utils/userAccountManager.test.js.map +1 -1
  877. package/dist/src/utils/version.d.ts +6 -0
  878. package/dist/src/utils/version.js +15 -0
  879. package/dist/src/utils/version.js.map +1 -0
  880. package/dist/src/utils/version.test.d.ts +6 -0
  881. package/dist/src/utils/version.test.js +39 -0
  882. package/dist/src/utils/version.test.js.map +1 -0
  883. package/dist/src/utils/workspaceContext.test.js +1 -1
  884. package/dist/src/utils/workspaceContext.test.js.map +1 -1
  885. package/dist/tsconfig.tsbuildinfo +1 -1
  886. package/package.json +8 -6
  887. package/dist/src/agents/executor.js.map +0 -1
  888. package/dist/src/agents/executor.test.js.map +0 -1
  889. package/dist/src/agents/invocation.js.map +0 -1
  890. package/dist/src/agents/invocation.test.js.map +0 -1
  891. package/dist/src/tools/smart-edit.d.ts +0 -78
  892. package/dist/src/tools/smart-edit.js +0 -717
  893. package/dist/src/tools/smart-edit.js.map +0 -1
  894. package/dist/src/tools/smart-edit.test.js +0 -592
  895. package/dist/src/tools/smart-edit.test.js.map +0 -1
  896. /package/dist/src/agents/{executor.test.d.ts → a2a-client-manager.test.d.ts} +0 -0
  897. /package/dist/src/agents/{invocation.test.d.ts → a2aUtils.test.d.ts} +0 -0
  898. /package/dist/src/{tools/smart-edit.test.d.ts → agents/agentLoader.test.d.ts} +0 -0
@@ -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';
@@ -26,15 +27,15 @@ import { BaseLlmClient } from '../core/baseLlmClient.js';
26
27
  import { FileDiscoveryService } from '../services/fileDiscoveryService.js';
27
28
  import { GitService } from '../services/gitService.js';
28
29
  import { initializeTelemetry, DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT, uiTelemetryService, } from '../telemetry/index.js';
29
- import { coreEvents } from '../utils/events.js';
30
+ import { coreEvents, CoreEvent } 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_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';
38
39
  import { ModelAvailabilityService } from '../availability/modelAvailabilityService.js';
39
40
  import { ModelRouterService } from '../routing/modelRouterService.js';
40
41
  import { OutputFormat } from '../output/types.js';
@@ -46,17 +47,18 @@ import { Storage } from './storage.js';
46
47
  import { FileExclusions } from '../utils/ignorePatterns.js';
47
48
  import { MessageBus } from '../confirmation-bus/message-bus.js';
48
49
  import { PolicyEngine } from '../policy/policy-engine.js';
50
+ import { ApprovalMode } from '../policy/types.js';
49
51
  import { HookSystem } from '../hooks/index.js';
50
52
  import { getCodeAssistServer } from '../code_assist/codeAssist.js';
51
53
  import { AgentRegistry } from '../agents/registry.js';
52
54
  import { setGlobalProxy } from '../utils/fetch.js';
53
- import { SubagentToolWrapper } from '../agents/subagent-tool-wrapper.js';
55
+ import { DelegateToAgentTool } from '../agents/delegate-to-agent-tool.js';
56
+ import { DELEGATE_TO_AGENT_TOOL_NAME } from '../tools/tool-names.js';
54
57
  import { getExperiments } from '../code_assist/experiments/experiments.js';
55
58
  import { ExperimentFlags } from '../code_assist/experiments/flagNames.js';
56
59
  import { debugLogger } from '../utils/debugLogger.js';
60
+ import { SkillManager } from '../skills/skillManager.js';
57
61
  import { startupProfiler } from '../telemetry/startupProfiler.js';
58
- import { ApprovalMode } from '../policy/types.js';
59
- export { ApprovalMode };
60
62
  import { DEFAULT_FILE_FILTERING_OPTIONS, DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, } from './constants.js';
61
63
  import { SimpleExtensionLoader, } from '../utils/extensionLoader.js';
62
64
  import { McpClientManager } from '../tools/mcp-client-manager.js';
@@ -73,6 +75,7 @@ export class MCPServerConfig {
73
75
  httpUrl;
74
76
  headers;
75
77
  tcp;
78
+ type;
76
79
  timeout;
77
80
  trust;
78
81
  description;
@@ -92,6 +95,12 @@ export class MCPServerConfig {
92
95
  httpUrl, headers,
93
96
  // For websocket transport
94
97
  tcp,
98
+ // Transport type (optional, for use with 'url' field)
99
+ // When set to 'http', uses StreamableHTTPClientTransport
100
+ // When set to 'sse', uses SSEClientTransport
101
+ // When omitted, auto-detects transport type
102
+ // Note: 'httpUrl' is deprecated in favor of 'url' + 'type'
103
+ type,
95
104
  // Common
96
105
  timeout, trust,
97
106
  // Metadata
@@ -112,6 +121,7 @@ export class MCPServerConfig {
112
121
  this.httpUrl = httpUrl;
113
122
  this.headers = headers;
114
123
  this.tcp = tcp;
124
+ this.type = type;
115
125
  this.timeout = timeout;
116
126
  this.trust = trust;
117
127
  this.description = description;
@@ -135,8 +145,13 @@ export class Config {
135
145
  mcpClientManager;
136
146
  allowedMcpServers;
137
147
  blockedMcpServers;
148
+ allowedEnvironmentVariables;
149
+ blockedEnvironmentVariables;
150
+ enableEnvironmentVariableRedaction;
138
151
  promptRegistry;
152
+ resourceRegistry;
139
153
  agentRegistry;
154
+ skillManager;
140
155
  sessionId;
141
156
  fileSystemService;
142
157
  contentGeneratorConfig;
@@ -154,11 +169,12 @@ export class Config {
154
169
  toolDiscoveryCommand;
155
170
  toolCallCommand;
156
171
  mcpServerCommand;
172
+ mcpEnabled;
173
+ extensionsEnabled;
157
174
  mcpServers;
158
175
  userMemory;
159
176
  geminiMdFileCount;
160
177
  geminiMdFilePaths;
161
- approvalMode;
162
178
  showMemoryUsage;
163
179
  accessibility;
164
180
  telemetrySettings;
@@ -180,10 +196,11 @@ export class Config {
180
196
  bugCommand;
181
197
  model;
182
198
  previewFeatures;
199
+ hasAccessToPreviewModel = false;
183
200
  noBrowser;
184
201
  folderTrust;
185
202
  ideMode;
186
- inFallbackMode = false;
203
+ _activeModel;
187
204
  maxSessionTurns;
188
205
  listSessions;
189
206
  deleteSession;
@@ -215,13 +232,12 @@ export class Config {
215
232
  storage;
216
233
  fileExclusions;
217
234
  eventEmitter;
218
- useSmartEdit;
219
235
  useWriteTodos;
220
236
  messageBus;
221
237
  policyEngine;
222
238
  outputSettings;
223
- enableMessageBusIntegration;
224
239
  codebaseInvestigatorSettings;
240
+ cliHelpAgentSettings;
225
241
  continueOnFailedApiCall;
226
242
  retryFetchErrors;
227
243
  enableShellOutputEfficiency;
@@ -231,15 +247,26 @@ export class Config {
231
247
  disableYoloMode;
232
248
  pendingIncludeDirectories;
233
249
  enableHooks;
250
+ enableHooksUI;
234
251
  hooks;
252
+ projectHooks;
253
+ disabledHooks;
235
254
  experiments;
236
255
  experimentsPromise;
237
256
  hookSystem;
238
- previewModelFallbackMode = false;
239
- previewModelBypassMode = false;
240
- enableModelAvailabilityService;
257
+ onModelChange;
258
+ onReload;
259
+ enableAgents;
260
+ agents;
261
+ skillsSupport;
262
+ disabledSkills;
263
+ adminSkillsEnabled;
241
264
  experimentalJitContext;
265
+ disableLLMCorrection;
242
266
  contextManager;
267
+ terminalBackground = undefined;
268
+ remoteAdminSettings;
269
+ latestApiRequest;
243
270
  constructor(params) {
244
271
  this.sessionId = params.sessionId;
245
272
  this.embeddingModel =
@@ -259,12 +286,17 @@ export class Config {
259
286
  this.toolCallCommand = params.toolCallCommand;
260
287
  this.mcpServerCommand = params.mcpServerCommand;
261
288
  this.mcpServers = params.mcpServers;
289
+ this.mcpEnabled = params.mcpEnabled ?? true;
290
+ this.extensionsEnabled = params.extensionsEnabled ?? true;
262
291
  this.allowedMcpServers = params.allowedMcpServers ?? [];
263
292
  this.blockedMcpServers = params.blockedMcpServers ?? [];
293
+ this.allowedEnvironmentVariables = params.allowedEnvironmentVariables ?? [];
294
+ this.blockedEnvironmentVariables = params.blockedEnvironmentVariables ?? [];
295
+ this.enableEnvironmentVariableRedaction =
296
+ params.enableEnvironmentVariableRedaction ?? false;
264
297
  this.userMemory = params.userMemory ?? '';
265
298
  this.geminiMdFileCount = params.geminiMdFileCount ?? 0;
266
299
  this.geminiMdFilePaths = params.geminiMdFilePaths ?? [];
267
- this.approvalMode = params.approvalMode ?? ApprovalMode.DEFAULT;
268
300
  this.showMemoryUsage = params.showMemoryUsage ?? false;
269
301
  this.accessibility = params.accessibility ?? {};
270
302
  this.telemetrySettings = {
@@ -275,6 +307,7 @@ export class Config {
275
307
  logPrompts: params.telemetry?.logPrompts ?? true,
276
308
  outfile: params.telemetry?.outfile,
277
309
  useCollector: params.telemetry?.useCollector,
310
+ useCliAuth: params.telemetry?.useCliAuth,
278
311
  };
279
312
  this.usageStatisticsEnabled = params.usageStatisticsEnabled ?? true;
280
313
  this.fileFiltering = {
@@ -295,11 +328,16 @@ export class Config {
295
328
  this.fileDiscoveryService = params.fileDiscoveryService ?? null;
296
329
  this.bugCommand = params.bugCommand;
297
330
  this.model = params.model;
298
- this.enableModelAvailabilityService =
299
- params.enableModelAvailabilityService ?? false;
300
- this.experimentalJitContext = params.experimentalJitContext ?? false;
331
+ this._activeModel = params.model;
332
+ this.enableAgents = params.enableAgents ?? false;
333
+ this.agents = params.agents ?? {};
334
+ this.disableLLMCorrection = params.disableLLMCorrection ?? false;
335
+ this.skillsSupport = params.skillsSupport ?? false;
336
+ this.disabledSkills = params.disabledSkills ?? [];
337
+ this.adminSkillsEnabled = params.adminSkillsEnabled ?? true;
301
338
  this.modelAvailabilityService = new ModelAvailabilityService();
302
339
  this.previewFeatures = params.previewFeatures ?? undefined;
340
+ this.experimentalJitContext = params.experimentalJitContext ?? false;
303
341
  this.maxSessionTurns = params.maxSessionTurns ?? -1;
304
342
  this.experimentalZedIntegration =
305
343
  params.experimentalZedIntegration ?? false;
@@ -329,6 +367,7 @@ export class Config {
329
367
  terminalHeight: params.shellExecutionConfig?.terminalHeight ?? 24,
330
368
  showColor: params.shellExecutionConfig?.showColor ?? false,
331
369
  pager: params.shellExecutionConfig?.pager ?? 'cat',
370
+ sanitizationConfig: this.sanitizationConfig,
332
371
  };
333
372
  this.truncateToolOutputThreshold =
334
373
  params.truncateToolOutputThreshold ??
@@ -336,24 +375,26 @@ export class Config {
336
375
  this.truncateToolOutputLines =
337
376
  params.truncateToolOutputLines ?? DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES;
338
377
  this.enableToolOutputTruncation = params.enableToolOutputTruncation ?? true;
339
- this.useSmartEdit = params.useSmartEdit ?? true;
340
- this.useWriteTodos = params.useWriteTodos ?? true;
378
+ // // TODO(joshualitt): Re-evaluate the todo tool for 3 family.
379
+ this.useWriteTodos = isPreviewModel(this.model)
380
+ ? false
381
+ : (params.useWriteTodos ?? true);
382
+ this.enableHooksUI = params.enableHooksUI ?? true;
341
383
  this.enableHooks = params.enableHooks ?? false;
342
- // Enable MessageBus integration if:
343
- // 1. Explicitly enabled via setting, OR
344
- // 2. Hooks are enabled and hooks are configured
345
- const hasHooks = params.hooks && Object.keys(params.hooks).length > 0;
346
- const hooksNeedMessageBus = this.enableHooks && hasHooks;
347
- this.enableMessageBusIntegration =
348
- params.enableMessageBusIntegration ??
349
- (hooksNeedMessageBus ? true : false);
384
+ this.disabledHooks =
385
+ (params.hooks && 'disabled' in params.hooks
386
+ ? params.hooks.disabled
387
+ : undefined) ?? [];
350
388
  this.codebaseInvestigatorSettings = {
351
389
  enabled: params.codebaseInvestigatorSettings?.enabled ?? true,
352
390
  maxNumTurns: params.codebaseInvestigatorSettings?.maxNumTurns ?? 10,
353
391
  maxTimeMinutes: params.codebaseInvestigatorSettings?.maxTimeMinutes ?? 3,
354
392
  thinkingBudget: params.codebaseInvestigatorSettings?.thinkingBudget ??
355
393
  DEFAULT_THINKING_MODE,
356
- model: params.codebaseInvestigatorSettings?.model ?? DEFAULT_GEMINI_MODEL,
394
+ model: params.codebaseInvestigatorSettings?.model,
395
+ };
396
+ this.cliHelpAgentSettings = {
397
+ enabled: params.cliHelpAgentSettings?.enabled ?? true,
357
398
  };
358
399
  this.continueOnFailedApiCall = params.continueOnFailedApiCall ?? true;
359
400
  this.enableShellOutputEfficiency =
@@ -368,19 +409,27 @@ export class Config {
368
409
  this.enablePromptCompletion = params.enablePromptCompletion ?? false;
369
410
  this.fileExclusions = new FileExclusions(this);
370
411
  this.eventEmitter = params.eventEmitter;
371
- this.policyEngine = new PolicyEngine(params.policyEngineConfig);
412
+ this.policyEngine = new PolicyEngine({
413
+ ...params.policyEngineConfig,
414
+ approvalMode: params.approvalMode ?? params.policyEngineConfig?.approvalMode,
415
+ });
372
416
  this.messageBus = new MessageBus(this.policyEngine, this.debugMode);
417
+ this.skillManager = new SkillManager();
373
418
  this.outputSettings = {
374
419
  format: params.output?.format ?? OutputFormat.TEXT,
375
420
  };
376
421
  this.retryFetchErrors = params.retryFetchErrors ?? false;
377
422
  this.disableYoloMode = params.disableYoloMode ?? false;
378
423
  this.hooks = params.hooks;
424
+ this.projectHooks = params.projectHooks;
379
425
  this.experiments = params.experiments;
426
+ this.onModelChange = params.onModelChange;
427
+ this.onReload = params.onReload;
380
428
  if (params.contextFileName) {
381
429
  setGeminiMdFilename(params.contextFileName);
382
430
  }
383
431
  if (this.telemetrySettings.enabled) {
432
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
384
433
  initializeTelemetry(this);
385
434
  }
386
435
  const proxy = this.getProxy();
@@ -402,11 +451,19 @@ export class Config {
402
451
  // TODO(12593): Fix the settings loading logic to properly merge defaults and
403
452
  // remove this hack.
404
453
  let modelConfigServiceConfig = params.modelConfigServiceConfig;
405
- if (modelConfigServiceConfig && !modelConfigServiceConfig.aliases) {
406
- modelConfigServiceConfig = {
407
- ...modelConfigServiceConfig,
408
- aliases: DEFAULT_MODEL_CONFIGS.aliases,
409
- };
454
+ if (modelConfigServiceConfig) {
455
+ if (!modelConfigServiceConfig.aliases) {
456
+ modelConfigServiceConfig = {
457
+ ...modelConfigServiceConfig,
458
+ aliases: DEFAULT_MODEL_CONFIGS.aliases,
459
+ };
460
+ }
461
+ if (!modelConfigServiceConfig.overrides) {
462
+ modelConfigServiceConfig = {
463
+ ...modelConfigServiceConfig,
464
+ overrides: DEFAULT_MODEL_CONFIGS.overrides,
465
+ };
466
+ }
410
467
  }
411
468
  this.modelConfigService = new ModelConfigService(modelConfigServiceConfig ?? DEFAULT_MODEL_CONFIGS);
412
469
  }
@@ -425,8 +482,10 @@ export class Config {
425
482
  await this.getGitService();
426
483
  }
427
484
  this.promptRegistry = new PromptRegistry();
485
+ this.resourceRegistry = new ResourceRegistry();
428
486
  this.agentRegistry = new AgentRegistry(this);
429
487
  await this.agentRegistry.initialize();
488
+ coreEvents.on(CoreEvent.AgentsRefreshed, this.onAgentsRefreshed);
430
489
  this.toolRegistry = await this.createToolRegistry();
431
490
  discoverToolsHandle?.end();
432
491
  this.mcpClientManager = new McpClientManager(this.toolRegistry, this, this.eventEmitter);
@@ -436,13 +495,26 @@ export class Config {
436
495
  await this.getExtensionLoader().start(this),
437
496
  ]);
438
497
  initMcpHandle?.end();
498
+ if (this.skillsSupport) {
499
+ this.getSkillManager().setAdminSettings(this.adminSkillsEnabled);
500
+ if (this.adminSkillsEnabled) {
501
+ await this.getSkillManager().discoverSkills(this.storage, this.getExtensions());
502
+ this.getSkillManager().setDisabledSkills(this.disabledSkills);
503
+ // Re-register ActivateSkillTool to update its schema with the discovered enabled skill enums
504
+ if (this.getSkillManager().getSkills().length > 0) {
505
+ this.getToolRegistry().unregisterTool(ActivateSkillTool.Name);
506
+ this.getToolRegistry().registerTool(new ActivateSkillTool(this, this.messageBus));
507
+ }
508
+ }
509
+ }
439
510
  // Initialize hook system if enabled
440
- if (this.enableHooks) {
511
+ if (this.getEnableHooks()) {
441
512
  this.hookSystem = new HookSystem(this);
442
513
  await this.hookSystem.initialize();
443
514
  }
444
515
  if (this.experimentalJitContext) {
445
516
  this.contextManager = new ContextManager(this);
517
+ await this.contextManager.refresh();
446
518
  }
447
519
  await this.geminiClient.initialize();
448
520
  }
@@ -450,6 +522,8 @@ export class Config {
450
522
  return this.contentGenerator;
451
523
  }
452
524
  async refreshAuth(authMethod, displayMessage) {
525
+ // Reset availability service when switching auth
526
+ this.modelAvailabilityService.reset();
453
527
  // Vertex and Genai have incompatible encryption and sending history with
454
528
  // thoughtSignature from Genai to Vertex will fail, we need to strip them
455
529
  if (this.contentGeneratorConfig?.authType === AuthType.USE_GEMINI &&
@@ -457,6 +531,8 @@ export class Config {
457
531
  // Restore the conversation history to the new client
458
532
  this.geminiClient.stripThoughtsFromHistory();
459
533
  }
534
+ // Reset availability status when switching auth (e.g. from limited key to OAuth)
535
+ this.modelAvailabilityService.reset();
460
536
  const newContentGeneratorConfig = await createContentGeneratorConfig(this, authMethod, {
461
537
  clientId: this.keycloakClientId,
462
538
  deviceEndpoint: this.keycloakDeviceEndpoint,
@@ -467,40 +543,44 @@ export class Config {
467
543
  this.contentGeneratorConfig = newContentGeneratorConfig;
468
544
  // Initialize BaseLlmClient now that the ContentGenerator is available
469
545
  this.baseLlmClient = new BaseLlmClient(this.contentGenerator, this);
470
- const previewFeatures = this.getPreviewFeatures();
471
546
  const codeAssistServer = getCodeAssistServer(this);
472
- if (codeAssistServer) {
473
- this.experimentsPromise = getExperiments(codeAssistServer)
474
- .then((experiments) => {
475
- this.setExperiments(experiments);
476
- // 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
477
- if (previewFeatures === undefined) {
478
- const remotePreviewFeatures = experiments.flags[ExperimentFlags.ENABLE_PREVIEW]?.boolValue;
479
- if (remotePreviewFeatures === true) {
480
- this.setPreviewFeatures(remotePreviewFeatures);
481
- }
547
+ if (codeAssistServer?.projectId) {
548
+ await this.refreshUserQuota();
549
+ }
550
+ this.experimentsPromise = getExperiments(codeAssistServer)
551
+ .then((experiments) => {
552
+ this.setExperiments(experiments);
553
+ // 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
554
+ if (this.getPreviewFeatures() === undefined) {
555
+ const remotePreviewFeatures = experiments.flags[ExperimentFlags.ENABLE_PREVIEW]?.boolValue;
556
+ if (remotePreviewFeatures === true) {
557
+ this.setPreviewFeatures(remotePreviewFeatures);
482
558
  }
483
- })
484
- .catch((e) => {
485
- debugLogger.error('Failed to fetch experiments', e);
486
- });
559
+ }
560
+ })
561
+ .catch((e) => {
562
+ debugLogger.error('Failed to fetch experiments', e);
563
+ });
564
+ const authType = this.contentGeneratorConfig.authType;
565
+ if (authType === AuthType.USE_GEMINI ||
566
+ authType === AuthType.USE_VERTEX_AI) {
567
+ this.setHasAccessToPreviewModel(true);
487
568
  }
488
- else {
489
- this.experiments = undefined;
490
- this.experimentsPromise = undefined;
569
+ // PATCH: If preview features are enabled, we assume access to the preview model.
570
+ // TODO(joshualitt): Revisit this logic to ensure that the user has access to
571
+ // the preview model through a proper quota check.
572
+ if (!this.getPreviewFeatures() &&
573
+ !this.hasAccessToPreviewModel &&
574
+ isPreviewModel(this.model)) {
575
+ this.setModel(DEFAULT_GEMINI_MODEL_AUTO);
491
576
  }
492
- // Reset the session flag since we're explicitly changing auth and using default model
493
- this.inFallbackMode = false;
494
577
  }
495
578
  async getExperimentsAsync() {
496
579
  if (this.experiments) {
497
580
  return this.experiments;
498
581
  }
499
582
  const codeAssistServer = getCodeAssistServer(this);
500
- if (codeAssistServer) {
501
- return getExperiments(codeAssistServer);
502
- }
503
- return undefined;
583
+ return getExperiments(codeAssistServer);
504
584
  }
505
585
  getUserTier() {
506
586
  return this.contentGenerator?.userTier;
@@ -526,6 +606,24 @@ export class Config {
526
606
  setSessionId(sessionId) {
527
607
  this.sessionId = sessionId;
528
608
  }
609
+ setTerminalBackground(terminalBackground) {
610
+ this.terminalBackground = terminalBackground;
611
+ }
612
+ getTerminalBackground() {
613
+ return this.terminalBackground;
614
+ }
615
+ getLatestApiRequest() {
616
+ return this.latestApiRequest;
617
+ }
618
+ setLatestApiRequest(req) {
619
+ this.latestApiRequest = req;
620
+ }
621
+ getRemoteAdminSettings() {
622
+ return this.remoteAdminSettings;
623
+ }
624
+ setRemoteAdminSettings(settings) {
625
+ this.remoteAdminSettings = settings;
626
+ }
529
627
  shouldLoadMemoryFromIncludeDirectories() {
530
628
  return this.loadMemoryFromIncludeDirectories;
531
629
  }
@@ -541,18 +639,32 @@ export class Config {
541
639
  getModel() {
542
640
  return this.model;
543
641
  }
544
- setModel(newModel) {
545
- if (this.model !== newModel || this.inFallbackMode) {
642
+ setModel(newModel, isTemporary = true) {
643
+ if (this.model !== newModel || this._activeModel !== newModel) {
546
644
  this.model = newModel;
645
+ // When the user explicitly sets a model, that becomes the active model.
646
+ this._activeModel = newModel;
547
647
  coreEvents.emitModelChanged(newModel);
648
+ if (this.onModelChange && !isTemporary) {
649
+ this.onModelChange(newModel);
650
+ }
548
651
  }
549
- this.setFallbackMode(false);
652
+ this.modelAvailabilityService.reset();
550
653
  }
551
- isInFallbackMode() {
552
- return this.inFallbackMode;
654
+ activateFallbackMode(model) {
655
+ this.setModel(model, true);
656
+ const authType = this.getContentGeneratorConfig()?.authType;
657
+ if (authType) {
658
+ logFlashFallback(this, new FlashFallbackEvent(authType));
659
+ }
553
660
  }
554
- setFallbackMode(active) {
555
- this.inFallbackMode = active;
661
+ getActiveModel() {
662
+ return this._activeModel ?? this.model;
663
+ }
664
+ setActiveModel(model) {
665
+ if (this._activeModel !== model) {
666
+ this._activeModel = model;
667
+ }
556
668
  }
557
669
  setFallbackModelHandler(handler) {
558
670
  this.fallbackModelHandler = handler;
@@ -560,17 +672,8 @@ export class Config {
560
672
  getFallbackModelHandler() {
561
673
  return this.fallbackModelHandler;
562
674
  }
563
- isPreviewModelFallbackMode() {
564
- return this.previewModelFallbackMode;
565
- }
566
- setPreviewModelFallbackMode(active) {
567
- this.previewModelFallbackMode = active;
568
- }
569
- isPreviewModelBypassMode() {
570
- return this.previewModelBypassMode;
571
- }
572
- setPreviewModelBypassMode(active) {
573
- this.previewModelBypassMode = active;
675
+ resetTurn() {
676
+ this.modelAvailabilityService.resetTurn();
574
677
  }
575
678
  getMaxSessionTurns() {
576
679
  return this.maxSessionTurns;
@@ -613,6 +716,12 @@ export class Config {
613
716
  getPromptRegistry() {
614
717
  return this.promptRegistry;
615
718
  }
719
+ getSkillManager() {
720
+ return this.skillManager;
721
+ }
722
+ getResourceRegistry() {
723
+ return this.resourceRegistry;
724
+ }
616
725
  getDebugMode() {
617
726
  return this.debugMode;
618
727
  }
@@ -623,7 +732,44 @@ export class Config {
623
732
  return this.previewFeatures;
624
733
  }
625
734
  setPreviewFeatures(previewFeatures) {
735
+ // No change in state, no action needed
736
+ if (this.previewFeatures === previewFeatures) {
737
+ return;
738
+ }
626
739
  this.previewFeatures = previewFeatures;
740
+ const currentModel = this.getModel();
741
+ // Case 1: Disabling preview features while on a preview model
742
+ if (!previewFeatures && isPreviewModel(currentModel)) {
743
+ this.setModel(DEFAULT_GEMINI_MODEL_AUTO);
744
+ }
745
+ // Case 2: Enabling preview features while on the default auto model
746
+ else if (previewFeatures && currentModel === DEFAULT_GEMINI_MODEL_AUTO) {
747
+ this.setModel(PREVIEW_GEMINI_MODEL_AUTO);
748
+ }
749
+ }
750
+ getHasAccessToPreviewModel() {
751
+ return this.hasAccessToPreviewModel;
752
+ }
753
+ setHasAccessToPreviewModel(hasAccess) {
754
+ this.hasAccessToPreviewModel = hasAccess;
755
+ }
756
+ async refreshUserQuota() {
757
+ const codeAssistServer = getCodeAssistServer(this);
758
+ if (!codeAssistServer || !codeAssistServer.projectId) {
759
+ return undefined;
760
+ }
761
+ try {
762
+ const quota = await codeAssistServer.retrieveUserQuota({
763
+ project: codeAssistServer.projectId,
764
+ });
765
+ const hasAccess = quota.buckets?.some((b) => b.modelId === PREVIEW_GEMINI_MODEL) ?? false;
766
+ this.setHasAccessToPreviewModel(hasAccess);
767
+ return quota;
768
+ }
769
+ catch (e) {
770
+ debugLogger.debug('Failed to retrieve user quota', e);
771
+ return undefined;
772
+ }
627
773
  }
628
774
  getCoreTools() {
629
775
  return this.coreTools;
@@ -666,6 +812,12 @@ export class Config {
666
812
  getMcpServers() {
667
813
  return this.mcpServers;
668
814
  }
815
+ getMcpEnabled() {
816
+ return this.mcpEnabled;
817
+ }
818
+ getExtensionsEnabled() {
819
+ return this.extensionsEnabled;
820
+ }
669
821
  getMcpClientManager() {
670
822
  return this.mcpClientManager;
671
823
  }
@@ -675,10 +827,25 @@ export class Config {
675
827
  getBlockedMcpServers() {
676
828
  return this.blockedMcpServers;
677
829
  }
830
+ get sanitizationConfig() {
831
+ return {
832
+ allowedEnvironmentVariables: this.allowedEnvironmentVariables,
833
+ blockedEnvironmentVariables: this.blockedEnvironmentVariables,
834
+ enableEnvironmentVariableRedaction: this.enableEnvironmentVariableRedaction,
835
+ };
836
+ }
678
837
  setMcpServers(mcpServers) {
679
838
  this.mcpServers = mcpServers;
680
839
  }
681
840
  getUserMemory() {
841
+ if (this.experimentalJitContext && this.contextManager) {
842
+ return [
843
+ this.contextManager.getGlobalMemory(),
844
+ this.contextManager.getEnvironmentMemory(),
845
+ ]
846
+ .filter(Boolean)
847
+ .join('\n\n');
848
+ }
682
849
  return this.userMemory;
683
850
  }
684
851
  setUserMemory(newUserMemory) {
@@ -697,25 +864,31 @@ export class Config {
697
864
  return this.experimentalJitContext;
698
865
  }
699
866
  getGeminiMdFileCount() {
867
+ if (this.experimentalJitContext && this.contextManager) {
868
+ return this.contextManager.getLoadedPaths().size;
869
+ }
700
870
  return this.geminiMdFileCount;
701
871
  }
702
872
  setGeminiMdFileCount(count) {
703
873
  this.geminiMdFileCount = count;
704
874
  }
705
875
  getGeminiMdFilePaths() {
876
+ if (this.experimentalJitContext && this.contextManager) {
877
+ return Array.from(this.contextManager.getLoadedPaths());
878
+ }
706
879
  return this.geminiMdFilePaths;
707
880
  }
708
881
  setGeminiMdFilePaths(paths) {
709
882
  this.geminiMdFilePaths = paths;
710
883
  }
711
884
  getApprovalMode() {
712
- return this.approvalMode;
885
+ return this.policyEngine.getApprovalMode();
713
886
  }
714
887
  setApprovalMode(mode) {
715
888
  if (!this.isTrustedFolder() && mode !== ApprovalMode.DEFAULT) {
716
889
  throw new Error('Cannot enable privileged approval modes in an untrusted folder.');
717
890
  }
718
- this.approvalMode = mode;
891
+ this.policyEngine.setApprovalMode(mode);
719
892
  }
720
893
  isYoloModeDisabled() {
721
894
  return this.disableYoloMode || !this.isTrustedFolder();
@@ -753,6 +926,9 @@ export class Config {
753
926
  getTelemetryUseCollector() {
754
927
  return this.telemetrySettings.useCollector ?? false;
755
928
  }
929
+ getTelemetryUseCliAuth() {
930
+ return this.telemetrySettings.useCliAuth ?? false;
931
+ }
756
932
  getGeminiClient() {
757
933
  return this.geminiClient;
758
934
  }
@@ -866,12 +1042,18 @@ export class Config {
866
1042
  getEnableExtensionReloading() {
867
1043
  return this.enableExtensionReloading;
868
1044
  }
869
- isModelAvailabilityServiceEnabled() {
870
- return this.enableModelAvailabilityService;
1045
+ getDisableLLMCorrection() {
1046
+ return this.disableLLMCorrection;
1047
+ }
1048
+ isAgentsEnabled() {
1049
+ return this.enableAgents;
871
1050
  }
872
1051
  getNoBrowser() {
873
1052
  return this.noBrowser;
874
1053
  }
1054
+ getAgentsSettings() {
1055
+ return this.agents;
1056
+ }
875
1057
  isBrowserLaunchSuppressed() {
876
1058
  return this.getNoBrowser() || !shouldAttemptBrowserLaunch();
877
1059
  }
@@ -892,21 +1074,12 @@ export class Config {
892
1074
  * 'false' for untrusted.
893
1075
  */
894
1076
  isTrustedFolder() {
895
- // isWorkspaceTrusted in cli/src/config/trustedFolder.js returns undefined
896
- // when the file based trust value is unavailable, since it is mainly used
897
- // in the initialization for trust dialogs, etc. Here we return true since
898
- // config.isTrustedFolder() is used for the main business logic of blocking
899
- // tool calls etc in the rest of the application.
900
- //
901
- // Default value is true since we load with trusted settings to avoid
902
- // restarts in the more common path. If the user chooses to mark the folder
903
- // as untrusted, the CLI will restart and we will have the trust value
904
- // reloaded.
905
1077
  const context = ideContextStore.get();
906
1078
  if (context?.workspaceState?.isTrusted !== undefined) {
907
1079
  return context.workspaceState.isTrusted;
908
1080
  }
909
- return this.trustedFolder ?? true;
1081
+ // Default to untrusted if folder trust is enabled and no explicit value is set.
1082
+ return this.folderTrust ? (this.trustedFolder ?? false) : true;
910
1083
  }
911
1084
  setIdeMode(value) {
912
1085
  this.ideMode = value;
@@ -965,6 +1138,40 @@ export class Config {
965
1138
  this.ptyInfo !== 'child_process' &&
966
1139
  this.enableInteractiveShell);
967
1140
  }
1141
+ isSkillsSupportEnabled() {
1142
+ return this.skillsSupport;
1143
+ }
1144
+ /**
1145
+ * Reloads skills by re-discovering them from extensions and local directories.
1146
+ */
1147
+ async reloadSkills() {
1148
+ if (!this.skillsSupport) {
1149
+ return;
1150
+ }
1151
+ if (this.onReload) {
1152
+ const refreshed = await this.onReload();
1153
+ this.disabledSkills = refreshed.disabledSkills ?? [];
1154
+ this.getSkillManager().setAdminSettings(refreshed.adminSkillsEnabled ?? this.adminSkillsEnabled);
1155
+ }
1156
+ if (this.getSkillManager().isAdminEnabled()) {
1157
+ await this.getSkillManager().discoverSkills(this.storage, this.getExtensions());
1158
+ this.getSkillManager().setDisabledSkills(this.disabledSkills);
1159
+ // Re-register ActivateSkillTool to update its schema with the newly discovered skills
1160
+ if (this.getSkillManager().getSkills().length > 0) {
1161
+ this.getToolRegistry().unregisterTool(ActivateSkillTool.Name);
1162
+ this.getToolRegistry().registerTool(new ActivateSkillTool(this, this.messageBus));
1163
+ }
1164
+ else {
1165
+ this.getToolRegistry().unregisterTool(ActivateSkillTool.Name);
1166
+ }
1167
+ }
1168
+ else {
1169
+ this.getSkillManager().clearSkills();
1170
+ this.getToolRegistry().unregisterTool(ActivateSkillTool.Name);
1171
+ }
1172
+ // Notify the client that system instructions might need updating
1173
+ await this.updateSystemInstructionIfInitialized();
1174
+ }
968
1175
  isInteractive() {
969
1176
  return this.interactive;
970
1177
  }
@@ -998,6 +1205,8 @@ export class Config {
998
1205
  terminalHeight: config.terminalHeight ?? this.shellExecutionConfig.terminalHeight,
999
1206
  showColor: config.showColor ?? this.shellExecutionConfig.showColor,
1000
1207
  pager: config.pager ?? this.shellExecutionConfig.pager,
1208
+ sanitizationConfig: config.sanitizationConfig ??
1209
+ this.shellExecutionConfig.sanitizationConfig,
1001
1210
  };
1002
1211
  }
1003
1212
  getScreenReader() {
@@ -1018,9 +1227,6 @@ export class Config {
1018
1227
  getTruncateToolOutputLines() {
1019
1228
  return this.truncateToolOutputLines;
1020
1229
  }
1021
- getUseSmartEdit() {
1022
- return this.useSmartEdit;
1023
- }
1024
1230
  getUseWriteTodos() {
1025
1231
  return this.useWriteTodos;
1026
1232
  }
@@ -1045,21 +1251,20 @@ export class Config {
1045
1251
  getPolicyEngine() {
1046
1252
  return this.policyEngine;
1047
1253
  }
1048
- getEnableMessageBusIntegration() {
1049
- return this.enableMessageBusIntegration;
1050
- }
1051
1254
  getEnableHooks() {
1052
1255
  return this.enableHooks;
1053
1256
  }
1257
+ getEnableHooksUI() {
1258
+ return this.enableHooksUI;
1259
+ }
1054
1260
  getCodebaseInvestigatorSettings() {
1055
1261
  return this.codebaseInvestigatorSettings;
1056
1262
  }
1263
+ getCliHelpAgentSettings() {
1264
+ return this.cliHelpAgentSettings;
1265
+ }
1057
1266
  async createToolRegistry() {
1058
- const registry = new ToolRegistry(this);
1059
- // Set message bus on tool registry before discovery so MCP tools can access it
1060
- if (this.getEnableMessageBusIntegration()) {
1061
- registry.setMessageBus(this.messageBus);
1062
- }
1267
+ const registry = new ToolRegistry(this, this.messageBus);
1063
1268
  // helper to create & register core tools that are enabled
1064
1269
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1065
1270
  const registerCoreTool = (ToolClass, ...args) => {
@@ -1076,13 +1281,8 @@ export class Config {
1076
1281
  tool.startsWith(`${normalizedClassName}(`));
1077
1282
  }
1078
1283
  if (isEnabled) {
1079
- // Pass message bus to tools when feature flag is enabled
1080
- // This first implementation is only focused on the general case of
1081
- // the tool registry.
1082
- const messageBusEnabled = this.getEnableMessageBusIntegration();
1083
- const toolArgs = messageBusEnabled
1084
- ? [...args, this.getMessageBus()]
1085
- : args;
1284
+ // Pass message bus to tools (required for policy engine integration)
1285
+ const toolArgs = [...args, this.getMessageBus()];
1086
1286
  registry.registerTool(new ToolClass(...toolArgs));
1087
1287
  }
1088
1288
  };
@@ -1109,38 +1309,39 @@ export class Config {
1109
1309
  registerCoreTool(GrepTool, this);
1110
1310
  }
1111
1311
  registerCoreTool(GlobTool, this);
1112
- if (this.getUseSmartEdit()) {
1113
- registerCoreTool(SmartEditTool, this);
1114
- }
1115
- else {
1116
- registerCoreTool(EditTool, this);
1117
- }
1312
+ registerCoreTool(ActivateSkillTool, this);
1313
+ registerCoreTool(EditTool, this);
1118
1314
  registerCoreTool(WriteFileTool, this);
1119
1315
  registerCoreTool(WebFetchTool, this);
1120
1316
  registerCoreTool(ShellTool, this);
1121
1317
  registerCoreTool(MemoryTool);
1122
1318
  registerCoreTool(WebSearchTool, this);
1123
1319
  if (this.getUseWriteTodos()) {
1124
- registerCoreTool(WriteTodosTool, this);
1320
+ registerCoreTool(WriteTodosTool);
1125
1321
  }
1126
1322
  // Register Subagents as Tools
1127
- if (this.getCodebaseInvestigatorSettings().enabled) {
1128
- const definition = this.agentRegistry.getDefinition('codebase_investigator');
1129
- if (definition) {
1130
- // We must respect the main allowed/exclude lists for agents too.
1131
- const allowedTools = this.getAllowedTools();
1132
- const isAllowed = !allowedTools || allowedTools.includes(definition.name);
1133
- if (isAllowed) {
1134
- const messageBusEnabled = this.getEnableMessageBusIntegration();
1135
- const wrapper = new SubagentToolWrapper(definition, this, messageBusEnabled ? this.getMessageBus() : undefined);
1136
- registry.registerTool(wrapper);
1137
- }
1138
- }
1139
- }
1323
+ // Register DelegateToAgentTool if agents are enabled
1324
+ this.registerDelegateToAgentTool(registry);
1140
1325
  await registry.discoverAllTools();
1141
1326
  registry.sortTools();
1142
1327
  return registry;
1143
1328
  }
1329
+ /**
1330
+ * Registers the DelegateToAgentTool if agents or related features are enabled.
1331
+ */
1332
+ registerDelegateToAgentTool(registry) {
1333
+ if (this.isAgentsEnabled() ||
1334
+ this.getCodebaseInvestigatorSettings().enabled ||
1335
+ this.getCliHelpAgentSettings().enabled) {
1336
+ // Check if the delegate tool itself is allowed (if allowedTools is set)
1337
+ const allowedTools = this.getAllowedTools();
1338
+ const isAllowed = !allowedTools || allowedTools.includes(DELEGATE_TO_AGENT_TOOL_NAME);
1339
+ if (isAllowed) {
1340
+ const delegateTool = new DelegateToAgentTool(this.agentRegistry, this, this.getMessageBus());
1341
+ registry.registerTool(delegateTool);
1342
+ }
1343
+ }
1344
+ }
1144
1345
  /**
1145
1346
  * Get the hook system instance
1146
1347
  */
@@ -1153,6 +1354,18 @@ export class Config {
1153
1354
  getHooks() {
1154
1355
  return this.hooks;
1155
1356
  }
1357
+ /**
1358
+ * Get project-specific hooks configuration
1359
+ */
1360
+ getProjectHooks() {
1361
+ return this.projectHooks;
1362
+ }
1363
+ /**
1364
+ * Get disabled hooks list
1365
+ */
1366
+ getDisabledHooks() {
1367
+ return this.disabledHooks;
1368
+ }
1156
1369
  /**
1157
1370
  * Get experiments configuration
1158
1371
  */
@@ -1203,6 +1416,31 @@ export class Config {
1203
1416
  });
1204
1417
  debugLogger.debug('Experiments loaded', summaryString);
1205
1418
  }
1419
+ onAgentsRefreshed = async () => {
1420
+ if (this.toolRegistry) {
1421
+ this.registerDelegateToAgentTool(this.toolRegistry);
1422
+ }
1423
+ // Propagate updates to the active chat session
1424
+ const client = this.getGeminiClient();
1425
+ if (client?.isInitialized()) {
1426
+ await client.setTools();
1427
+ await client.updateSystemInstruction();
1428
+ }
1429
+ else {
1430
+ debugLogger.debug('[Config] GeminiClient not initialized; skipping live prompt/tool refresh.');
1431
+ }
1432
+ };
1433
+ /**
1434
+ * Disposes of resources and removes event listeners.
1435
+ */
1436
+ async dispose() {
1437
+ coreEvents.off(CoreEvent.AgentsRefreshed, this.onAgentsRefreshed);
1438
+ this.agentRegistry?.dispose();
1439
+ this.geminiClient?.dispose();
1440
+ if (this.mcpClientManager) {
1441
+ await this.mcpClientManager.stop();
1442
+ }
1443
+ }
1206
1444
  }
1207
1445
  // Export model constants for use in CLI
1208
1446
  export { DEFAULT_GEMINI_FLASH_MODEL };