@google/gemini-cli-core 0.21.1 → 0.22.0-preview.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 (273) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/src/agents/codebase-investigator.js +2 -2
  5. package/dist/src/agents/codebase-investigator.js.map +1 -1
  6. package/dist/src/agents/codebase-investigator.test.js +2 -2
  7. package/dist/src/agents/codebase-investigator.test.js.map +1 -1
  8. package/dist/src/agents/delegate-to-agent-tool.d.ts +19 -0
  9. package/dist/src/agents/delegate-to-agent-tool.js +111 -0
  10. package/dist/src/agents/delegate-to-agent-tool.js.map +1 -0
  11. package/dist/src/agents/delegate-to-agent-tool.test.d.ts +6 -0
  12. package/dist/src/agents/delegate-to-agent-tool.test.js +133 -0
  13. package/dist/src/agents/delegate-to-agent-tool.test.js.map +1 -0
  14. package/dist/src/agents/executor.js +1 -1
  15. package/dist/src/agents/executor.js.map +1 -1
  16. package/dist/src/agents/executor.test.js.map +1 -1
  17. package/dist/src/agents/registry.d.ts +15 -0
  18. package/dist/src/agents/registry.js +49 -17
  19. package/dist/src/agents/registry.js.map +1 -1
  20. package/dist/src/agents/registry.test.js +22 -33
  21. package/dist/src/agents/registry.test.js.map +1 -1
  22. package/dist/src/availability/policyCatalog.d.ts +0 -1
  23. package/dist/src/availability/policyCatalog.js +8 -6
  24. package/dist/src/availability/policyCatalog.js.map +1 -1
  25. package/dist/src/availability/policyCatalog.test.js +2 -2
  26. package/dist/src/availability/policyCatalog.test.js.map +1 -1
  27. package/dist/src/availability/policyHelpers.d.ts +2 -5
  28. package/dist/src/availability/policyHelpers.js +17 -30
  29. package/dist/src/availability/policyHelpers.js.map +1 -1
  30. package/dist/src/availability/policyHelpers.test.js +2 -30
  31. package/dist/src/availability/policyHelpers.test.js.map +1 -1
  32. package/dist/src/code_assist/experiments/client_metadata.js +2 -1
  33. package/dist/src/code_assist/experiments/client_metadata.js.map +1 -1
  34. package/dist/src/code_assist/experiments/client_metadata.test.js +7 -10
  35. package/dist/src/code_assist/experiments/client_metadata.test.js.map +1 -1
  36. package/dist/src/commands/init.d.ts +7 -0
  37. package/dist/src/commands/init.js +53 -0
  38. package/dist/src/commands/init.js.map +1 -0
  39. package/dist/src/commands/init.test.d.ts +6 -0
  40. package/dist/src/commands/init.test.js +25 -0
  41. package/dist/src/commands/init.test.js.map +1 -0
  42. package/dist/src/config/config.d.ts +0 -5
  43. package/dist/src/config/config.js +30 -69
  44. package/dist/src/config/config.js.map +1 -1
  45. package/dist/src/config/config.test.js +36 -123
  46. package/dist/src/config/config.test.js.map +1 -1
  47. package/dist/src/config/defaultModelConfigs.js +10 -11
  48. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  49. package/dist/src/config/models.d.ts +17 -22
  50. package/dist/src/config/models.js +32 -64
  51. package/dist/src/config/models.js.map +1 -1
  52. package/dist/src/config/models.test.js +89 -57
  53. package/dist/src/config/models.test.js.map +1 -1
  54. package/dist/src/confirmation-bus/message-bus.js.map +1 -1
  55. package/dist/src/confirmation-bus/types.d.ts +4 -0
  56. package/dist/src/core/baseLlmClient.d.ts +1 -3
  57. package/dist/src/core/baseLlmClient.js +1 -8
  58. package/dist/src/core/baseLlmClient.js.map +1 -1
  59. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  60. package/dist/src/core/client.js +3 -4
  61. package/dist/src/core/client.js.map +1 -1
  62. package/dist/src/core/client.test.js +1 -3
  63. package/dist/src/core/client.test.js.map +1 -1
  64. package/dist/src/core/contentGenerator.js +5 -3
  65. package/dist/src/core/contentGenerator.js.map +1 -1
  66. package/dist/src/core/contentGenerator.test.js +29 -2
  67. package/dist/src/core/contentGenerator.test.js.map +1 -1
  68. package/dist/src/core/coreToolScheduler.d.ts +1 -1
  69. package/dist/src/core/coreToolScheduler.js +72 -34
  70. package/dist/src/core/coreToolScheduler.js.map +1 -1
  71. package/dist/src/core/coreToolScheduler.test.js +134 -37
  72. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  73. package/dist/src/core/geminiChat.js +23 -16
  74. package/dist/src/core/geminiChat.js.map +1 -1
  75. package/dist/src/core/geminiChat.test.js +186 -40
  76. package/dist/src/core/geminiChat.test.js.map +1 -1
  77. package/dist/src/core/geminiChat_network_retry.test.js +0 -2
  78. package/dist/src/core/geminiChat_network_retry.test.js.map +1 -1
  79. package/dist/src/core/logger.js.map +1 -1
  80. package/dist/src/core/nonInteractiveToolExecutor.test.js +4 -5
  81. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  82. package/dist/src/core/prompts.js +15 -12
  83. package/dist/src/core/prompts.js.map +1 -1
  84. package/dist/src/core/prompts.test.js +14 -13
  85. package/dist/src/core/prompts.test.js.map +1 -1
  86. package/dist/src/core/turn.js +1 -1
  87. package/dist/src/core/turn.js.map +1 -1
  88. package/dist/src/fallback/handler.js +121 -54
  89. package/dist/src/fallback/handler.js.map +1 -1
  90. package/dist/src/fallback/handler.test.js +266 -82
  91. package/dist/src/fallback/handler.test.js.map +1 -1
  92. package/dist/src/generated/git-commit.d.ts +2 -2
  93. package/dist/src/generated/git-commit.js +2 -2
  94. package/dist/src/generated/git-commit.js.map +1 -1
  95. package/dist/src/hooks/hookEventHandler.js +6 -1
  96. package/dist/src/hooks/hookEventHandler.js.map +1 -1
  97. package/dist/src/hooks/hookEventHandler.test.js +8 -1
  98. package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
  99. package/dist/src/hooks/hookRegistry.d.ts +0 -7
  100. package/dist/src/hooks/hookRegistry.js +0 -20
  101. package/dist/src/hooks/hookRegistry.js.map +1 -1
  102. package/dist/src/hooks/hookRegistry.test.js +1 -7
  103. package/dist/src/hooks/hookRegistry.test.js.map +1 -1
  104. package/dist/src/hooks/hookRunner.test.js +1 -1
  105. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  106. package/dist/src/hooks/hookSystem.d.ts +0 -8
  107. package/dist/src/hooks/hookSystem.js +0 -18
  108. package/dist/src/hooks/hookSystem.js.map +1 -1
  109. package/dist/src/hooks/hookSystem.test.js +2 -21
  110. package/dist/src/hooks/hookSystem.test.js.map +1 -1
  111. package/dist/src/ide/detect-ide.test.js +32 -1
  112. package/dist/src/ide/detect-ide.test.js.map +1 -1
  113. package/dist/src/ide/ide-installer.test.js +1 -1
  114. package/dist/src/ide/ide-installer.test.js.map +1 -1
  115. package/dist/src/index.d.ts +3 -0
  116. package/dist/src/index.js +3 -0
  117. package/dist/src/index.js.map +1 -1
  118. package/dist/src/mcp/oauth-provider.js.map +1 -1
  119. package/dist/src/output/json-formatter.test.js +2 -0
  120. package/dist/src/output/json-formatter.test.js.map +1 -1
  121. package/dist/src/output/stream-json-formatter.js +6 -0
  122. package/dist/src/output/stream-json-formatter.js.map +1 -1
  123. package/dist/src/output/stream-json-formatter.test.js +98 -100
  124. package/dist/src/output/stream-json-formatter.test.js.map +1 -1
  125. package/dist/src/output/types.d.ts +2 -0
  126. package/dist/src/policy/config.js +71 -2
  127. package/dist/src/policy/config.js.map +1 -1
  128. package/dist/src/policy/persistence.test.d.ts +6 -0
  129. package/dist/src/policy/persistence.test.js +149 -0
  130. package/dist/src/policy/persistence.test.js.map +1 -0
  131. package/dist/src/policy/policies/agent.toml +31 -0
  132. package/dist/src/policy/policy-engine.js +55 -1
  133. package/dist/src/policy/policy-engine.js.map +1 -1
  134. package/dist/src/policy/shell-safety.test.d.ts +6 -0
  135. package/dist/src/policy/shell-safety.test.js +74 -0
  136. package/dist/src/policy/shell-safety.test.js.map +1 -0
  137. package/dist/src/policy/toml-loader.d.ts +8 -0
  138. package/dist/src/policy/toml-loader.js +3 -3
  139. package/dist/src/policy/toml-loader.js.map +1 -1
  140. package/dist/src/routing/modelRouterService.js +15 -0
  141. package/dist/src/routing/modelRouterService.js.map +1 -1
  142. package/dist/src/routing/modelRouterService.test.js +62 -0
  143. package/dist/src/routing/modelRouterService.test.js.map +1 -1
  144. package/dist/src/routing/strategies/classifierStrategy.js +21 -10
  145. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
  146. package/dist/src/routing/strategies/classifierStrategy.test.js +1 -2
  147. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
  148. package/dist/src/routing/strategies/fallbackStrategy.js +12 -23
  149. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
  150. package/dist/src/routing/strategies/fallbackStrategy.test.js +39 -69
  151. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -1
  152. package/dist/src/routing/strategies/overrideStrategy.js +3 -4
  153. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
  154. package/dist/src/safety/checker-runner.js +17 -6
  155. package/dist/src/safety/checker-runner.js.map +1 -1
  156. package/dist/src/services/chatCompressionService.js +1 -3
  157. package/dist/src/services/chatCompressionService.js.map +1 -1
  158. package/dist/src/services/chatRecordingService.d.ts +5 -0
  159. package/dist/src/services/chatRecordingService.js +7 -0
  160. package/dist/src/services/chatRecordingService.js.map +1 -1
  161. package/dist/src/services/fileSystemService.d.ts +0 -9
  162. package/dist/src/services/fileSystemService.js +0 -11
  163. package/dist/src/services/fileSystemService.js.map +1 -1
  164. package/dist/src/services/loopDetectionService.js +2 -2
  165. package/dist/src/services/loopDetectionService.js.map +1 -1
  166. package/dist/src/services/modelConfig.golden.test.js +32 -0
  167. package/dist/src/services/modelConfig.golden.test.js.map +1 -1
  168. package/dist/src/services/modelConfigService.d.ts +3 -0
  169. package/dist/src/services/modelConfigService.js +3 -2
  170. package/dist/src/services/modelConfigService.js.map +1 -1
  171. package/dist/src/services/modelConfigService.test.js +110 -0
  172. package/dist/src/services/modelConfigService.test.js.map +1 -1
  173. package/dist/src/services/shellExecutionService.js +1 -2
  174. package/dist/src/services/shellExecutionService.js.map +1 -1
  175. package/dist/src/services/shellExecutionService.test.js +6 -3
  176. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  177. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +222 -0
  178. package/dist/src/services/test-data/resolved-aliases.golden.json +0 -16
  179. package/dist/src/telemetry/activity-detector.test.js.map +1 -1
  180. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +5 -5
  181. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  182. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +18 -1
  183. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  184. package/dist/src/telemetry/config.js.map +1 -1
  185. package/dist/src/telemetry/loggers.test.js +5 -5
  186. package/dist/src/telemetry/loggers.test.js.map +1 -1
  187. package/dist/src/telemetry/metrics.test.js.map +1 -1
  188. package/dist/src/telemetry/startupProfiler.test.js +1 -2
  189. package/dist/src/telemetry/startupProfiler.test.js.map +1 -1
  190. package/dist/src/telemetry/trace.js.map +1 -1
  191. package/dist/src/telemetry/types.d.ts +10 -5
  192. package/dist/src/telemetry/types.js +16 -8
  193. package/dist/src/telemetry/types.js.map +1 -1
  194. package/dist/src/telemetry/uiTelemetry.d.ts +1 -0
  195. package/dist/src/telemetry/uiTelemetry.js +2 -0
  196. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  197. package/dist/src/telemetry/uiTelemetry.test.js +4 -0
  198. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  199. package/dist/src/test-utils/mock-message-bus.js.map +1 -1
  200. package/dist/src/tools/edit.js +1 -0
  201. package/dist/src/tools/edit.js.map +1 -1
  202. package/dist/src/tools/edit.test.js.map +1 -1
  203. package/dist/src/tools/grep.js.map +1 -1
  204. package/dist/src/tools/mcp-tool.js +13 -0
  205. package/dist/src/tools/mcp-tool.js.map +1 -1
  206. package/dist/src/tools/mcp-tool.test.js +25 -0
  207. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  208. package/dist/src/tools/memoryTool.js +1 -0
  209. package/dist/src/tools/memoryTool.js.map +1 -1
  210. package/dist/src/tools/modifiable-tool.js.map +1 -1
  211. package/dist/src/tools/read-file.test.js.map +1 -1
  212. package/dist/src/tools/shell.d.ts +2 -1
  213. package/dist/src/tools/shell.js +9 -1
  214. package/dist/src/tools/shell.js.map +1 -1
  215. package/dist/src/tools/shell.test.js +2 -1
  216. package/dist/src/tools/shell.test.js.map +1 -1
  217. package/dist/src/tools/smart-edit.js +1 -0
  218. package/dist/src/tools/smart-edit.js.map +1 -1
  219. package/dist/src/tools/smart-edit.test.js.map +1 -1
  220. package/dist/src/tools/tool-names.d.ts +1 -0
  221. package/dist/src/tools/tool-names.js +1 -0
  222. package/dist/src/tools/tool-names.js.map +1 -1
  223. package/dist/src/tools/tools.d.ts +19 -0
  224. package/dist/src/tools/tools.js +28 -9
  225. package/dist/src/tools/tools.js.map +1 -1
  226. package/dist/src/tools/web-fetch.js +1 -0
  227. package/dist/src/tools/web-fetch.js.map +1 -1
  228. package/dist/src/tools/write-file.js +1 -0
  229. package/dist/src/tools/write-file.js.map +1 -1
  230. package/dist/src/tools/write-file.test.js.map +1 -1
  231. package/dist/src/utils/bfsFileSearch.d.ts +8 -0
  232. package/dist/src/utils/bfsFileSearch.js +63 -23
  233. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  234. package/dist/src/utils/bfsFileSearch.test.js +65 -1
  235. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  236. package/dist/src/utils/checkpointUtils.js.map +1 -1
  237. package/dist/src/utils/extensionLoader.d.ts +2 -2
  238. package/dist/src/utils/extensionLoader.js +5 -6
  239. package/dist/src/utils/extensionLoader.js.map +1 -1
  240. package/dist/src/utils/extensionLoader.test.js +11 -0
  241. package/dist/src/utils/extensionLoader.test.js.map +1 -1
  242. package/dist/src/utils/filesearch/crawlCache.js.map +1 -1
  243. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  244. package/dist/src/utils/flashFallback.test.js +1 -1
  245. package/dist/src/utils/flashFallback.test.js.map +1 -1
  246. package/dist/src/utils/pathCorrector.js +12 -2
  247. package/dist/src/utils/pathCorrector.js.map +1 -1
  248. package/dist/src/utils/pathCorrector.test.js +6 -2
  249. package/dist/src/utils/pathCorrector.test.js.map +1 -1
  250. package/dist/src/utils/retry.js +16 -2
  251. package/dist/src/utils/retry.js.map +1 -1
  252. package/dist/src/utils/retry.test.js +22 -7
  253. package/dist/src/utils/retry.test.js.map +1 -1
  254. package/dist/src/utils/shell-permissions.d.ts +52 -0
  255. package/dist/src/utils/shell-permissions.js +188 -0
  256. package/dist/src/utils/shell-permissions.js.map +1 -0
  257. package/dist/src/utils/shell-permissions.test.d.ts +6 -0
  258. package/dist/src/utils/shell-permissions.test.js +342 -0
  259. package/dist/src/utils/shell-permissions.test.js.map +1 -0
  260. package/dist/src/utils/shell-utils.d.ts +10 -47
  261. package/dist/src/utils/shell-utils.js +1 -182
  262. package/dist/src/utils/shell-utils.js.map +1 -1
  263. package/dist/src/utils/shell-utils.test.js +1 -288
  264. package/dist/src/utils/shell-utils.test.js.map +1 -1
  265. package/dist/src/utils/tool-utils.js.map +1 -1
  266. package/dist/src/utils/version.d.ts +6 -0
  267. package/dist/src/utils/version.js +15 -0
  268. package/dist/src/utils/version.js.map +1 -0
  269. package/dist/src/utils/version.test.d.ts +6 -0
  270. package/dist/src/utils/version.test.js +39 -0
  271. package/dist/src/utils/version.test.js.map +1 -0
  272. package/dist/tsconfig.tsbuildinfo +1 -1
  273. package/package.json +2 -1
@@ -3,33 +3,26 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { createDefaultPolicy, createSingleModelChain, getModelPolicyChain, } from './policyCatalog.js';
7
- import { DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_MODEL_AUTO, PREVIEW_GEMINI_MODEL_AUTO, resolveModel, } from '../config/models.js';
6
+ import { createDefaultPolicy, getModelPolicyChain } from './policyCatalog.js';
7
+ import { DEFAULT_GEMINI_MODEL, getEffectiveModel } from '../config/models.js';
8
8
  /**
9
9
  * Resolves the active policy chain for the given config, ensuring the
10
10
  * user-selected active model is represented.
11
11
  */
12
- export function resolvePolicyChain(config, preferredModel, wrapsAround = false) {
13
- // Availability uses the active/requested model directly. Legacy fallback logic
14
- // (getEffectiveModel) only applies when availability is disabled.
15
- const modelFromConfig = preferredModel ?? config.getActiveModel?.() ?? config.getModel();
16
- let chain;
17
- if (config.getModel() === PREVIEW_GEMINI_MODEL_AUTO ||
18
- config.getModel() === DEFAULT_GEMINI_MODEL_AUTO) {
19
- chain = getModelPolicyChain({
20
- previewEnabled: config.getModel() === PREVIEW_GEMINI_MODEL_AUTO,
21
- userTier: config.getUserTier(),
22
- });
23
- }
24
- else {
25
- chain = createSingleModelChain(modelFromConfig);
12
+ export function resolvePolicyChain(config, preferredModel) {
13
+ const chain = getModelPolicyChain({
14
+ previewEnabled: !!config.getPreviewFeatures(),
15
+ userTier: config.getUserTier(),
16
+ });
17
+ // TODO: This will be replaced when we get rid of Fallback Modes.
18
+ // Switch to getActiveModel()
19
+ const activeModel = preferredModel ??
20
+ getEffectiveModel(config.isInFallbackMode(), config.getModel(), config.getPreviewFeatures());
21
+ if (activeModel === 'auto') {
22
+ return [...chain];
26
23
  }
27
- const activeModel = resolveModel(modelFromConfig);
28
- const activeIndex = chain.findIndex((policy) => policy.model === activeModel);
29
- if (activeIndex !== -1) {
30
- return wrapsAround
31
- ? [...chain.slice(activeIndex), ...chain.slice(0, activeIndex)]
32
- : [...chain.slice(activeIndex)];
24
+ if (chain.some((policy) => policy.model === activeModel)) {
25
+ return [...chain];
33
26
  }
34
27
  // If the user specified a model not in the default chain, we assume they want
35
28
  // *only* that model. We do not fallback to the default chain.
@@ -38,23 +31,17 @@ export function resolvePolicyChain(config, preferredModel, wrapsAround = false)
38
31
  /**
39
32
  * Produces the failed policy (if it exists in the chain) and the list of
40
33
  * fallback candidates that follow it.
41
- * @param chain - The ordered list of available model policies.
42
- * @param failedModel - The identifier of the model that failed.
43
- * @param wrapsAround - If true, treats the chain as a circular buffer.
44
34
  */
45
- export function buildFallbackPolicyContext(chain, failedModel, wrapsAround = false) {
35
+ export function buildFallbackPolicyContext(chain, failedModel) {
46
36
  const index = chain.findIndex((policy) => policy.model === failedModel);
47
37
  if (index === -1) {
48
38
  return { failedPolicy: undefined, candidates: chain };
49
39
  }
50
40
  // Return [candidates_after, candidates_before] to prioritize downgrades
51
41
  // (continuing the chain) before wrapping around to upgrades.
52
- const candidates = wrapsAround
53
- ? [...chain.slice(index + 1), ...chain.slice(0, index)]
54
- : [...chain.slice(index + 1)];
55
42
  return {
56
43
  failedPolicy: chain[index],
57
- candidates,
44
+ candidates: [...chain.slice(index + 1), ...chain.slice(0, index)],
58
45
  };
59
46
  }
60
47
  export function resolvePolicyAction(failureKind, policy) {
@@ -1 +1 @@
1
- {"version":3,"file":"policyHelpers.js","sourceRoot":"","sources":["../../../src/availability/policyHelpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policyHelpers.js","sourceRoot":"","sources":["../../../src/availability/policyHelpers.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,6 @@
6
6
  import { describe, it, expect, vi, beforeEach } from 'vitest';
7
7
  import { resolvePolicyChain, buildFallbackPolicyContext, applyModelSelection, } from './policyHelpers.js';
8
8
  import { createDefaultPolicy } from './policyCatalog.js';
9
- import { DEFAULT_GEMINI_MODEL_AUTO } from '../config/models.js';
10
9
  const createMockConfig = (overrides = {}) => ({
11
10
  getPreviewFeatures: () => false,
12
11
  getUserTier: () => undefined,
@@ -16,7 +15,7 @@ const createMockConfig = (overrides = {}) => ({
16
15
  });
17
16
  describe('policyHelpers', () => {
18
17
  describe('resolvePolicyChain', () => {
19
- it('returns a single-model chain for a custom model', () => {
18
+ it('inserts the active model when missing from the catalog', () => {
20
19
  const config = createMockConfig({
21
20
  getModel: () => 'custom-model',
22
21
  });
@@ -33,7 +32,7 @@ describe('policyHelpers', () => {
33
32
  });
34
33
  it('returns the default chain when active model is "auto"', () => {
35
34
  const config = createMockConfig({
36
- getModel: () => DEFAULT_GEMINI_MODEL_AUTO,
35
+ getModel: () => 'auto',
37
36
  });
38
37
  const chain = resolvePolicyChain(config);
39
38
  // Expect default chain [Pro, Flash]
@@ -41,23 +40,6 @@ describe('policyHelpers', () => {
41
40
  expect(chain[0]?.model).toBe('gemini-2.5-pro');
42
41
  expect(chain[1]?.model).toBe('gemini-2.5-flash');
43
42
  });
44
- it('starts chain from preferredModel when model is "auto"', () => {
45
- const config = createMockConfig({
46
- getModel: () => DEFAULT_GEMINI_MODEL_AUTO,
47
- });
48
- const chain = resolvePolicyChain(config, 'gemini-2.5-flash');
49
- expect(chain).toHaveLength(1);
50
- expect(chain[0]?.model).toBe('gemini-2.5-flash');
51
- });
52
- it('wraps around the chain when wrapsAround is true', () => {
53
- const config = createMockConfig({
54
- getModel: () => DEFAULT_GEMINI_MODEL_AUTO,
55
- });
56
- const chain = resolvePolicyChain(config, 'gemini-2.5-flash', true);
57
- expect(chain).toHaveLength(2);
58
- expect(chain[0]?.model).toBe('gemini-2.5-flash');
59
- expect(chain[1]?.model).toBe('gemini-2.5-pro');
60
- });
61
43
  });
62
44
  describe('buildFallbackPolicyContext', () => {
63
45
  it('returns remaining candidates after the failed model', () => {
@@ -68,16 +50,6 @@ describe('policyHelpers', () => {
68
50
  ];
69
51
  const context = buildFallbackPolicyContext(chain, 'b');
70
52
  expect(context.failedPolicy?.model).toBe('b');
71
- expect(context.candidates.map((p) => p.model)).toEqual(['c']);
72
- });
73
- it('wraps around when building fallback context if wrapsAround is true', () => {
74
- const chain = [
75
- createDefaultPolicy('a'),
76
- createDefaultPolicy('b'),
77
- createDefaultPolicy('c'),
78
- ];
79
- const context = buildFallbackPolicyContext(chain, 'b', true);
80
- expect(context.failedPolicy?.model).toBe('b');
81
53
  expect(context.candidates.map((p) => p.model)).toEqual(['c', 'a']);
82
54
  });
83
55
  it('returns full chain when model is not in policy list', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"policyHelpers.test.js","sourceRoot":"","sources":["../../../src/availability/policyHelpers.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policyHelpers.test.js","sourceRoot":"","sources":["../../../src/availability/policyHelpers.test.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  import { getReleaseChannel } from '../../utils/channel.js';
7
7
  import { fileURLToPath } from 'node:url';
8
8
  import path from 'node:path';
9
+ import { getVersion } from '../../utils/version.js';
9
10
  const __filename = fileURLToPath(import.meta.url);
10
11
  const __dirname = path.dirname(__filename);
11
12
  // Cache all client metadata.
@@ -40,7 +41,7 @@ export async function getClientMetadata() {
40
41
  clientMetadataPromise = (async () => ({
41
42
  ideName: 'IDE_UNSPECIFIED',
42
43
  pluginType: 'GEMINI',
43
- ideVersion: process.env['CLI_VERSION'] || process.version,
44
+ ideVersion: await getVersion(),
44
45
  platform: getPlatform(),
45
46
  updateChannel: await getReleaseChannel(__dirname),
46
47
  }))();
@@ -1 +1 @@
1
- {"version":3,"file":"client_metadata.js","sourceRoot":"","sources":["../../../../src/code_assist/experiments/client_metadata.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,6BAA6B;AAC7B,IAAI,qBAA0D,CAAC;AAE/D,SAAS,WAAW;IAClB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,QAAQ,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QAC5C,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,QAAQ,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9C,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3C,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7C,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3C,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,qBAAqB,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACpC,OAAO,EAAE,iBAAiB;YAC1B,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,OAAO;YACzD,QAAQ,EAAE,WAAW,EAAE;YACvB,aAAa,EAAE,MAAM,iBAAiB,CAAC,SAAS,CAAC;SAClD,CAAC,CAAC,EAAE,CAAC;IACR,CAAC;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"client_metadata.js","sourceRoot":"","sources":["../../../../src/code_assist/experiments/client_metadata.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,6BAA6B;AAC7B,IAAI,qBAA0D,CAAC;AAE/D,SAAS,WAAW;IAClB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,QAAQ,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QAC5C,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,QAAQ,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9C,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3C,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7C,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3C,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,qBAAqB,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACpC,OAAO,EAAE,iBAAiB;YAC1B,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,MAAM,UAAU,EAAE;YAC9B,QAAQ,EAAE,WAAW,EAAE;YACvB,aAAa,EAAE,MAAM,iBAAiB,CAAC,SAAS,CAAC;SAClD,CAAC,CAAC,EAAE,CAAC;IACR,CAAC;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
7
  import { ReleaseChannel, getReleaseChannel } from '../../utils/channel.js';
8
+ import { getVersion } from '../../utils/version.js';
8
9
  // Mock dependencies before importing the module under test
9
10
  vi.mock('../../utils/channel.js', async () => {
10
11
  const actual = await vi.importActual('../../utils/channel.js');
@@ -13,6 +14,9 @@ vi.mock('../../utils/channel.js', async () => {
13
14
  getReleaseChannel: vi.fn(),
14
15
  };
15
16
  });
17
+ vi.mock('../../utils/version.js', async () => ({
18
+ getVersion: vi.fn(),
19
+ }));
16
20
  describe('client_metadata', () => {
17
21
  const originalPlatform = process.platform;
18
22
  const originalArch = process.arch;
@@ -25,6 +29,7 @@ describe('client_metadata', () => {
25
29
  await import('./client_metadata.js');
26
30
  // Provide a default mock implementation for each test
27
31
  vi.mocked(getReleaseChannel).mockResolvedValue(ReleaseChannel.STABLE);
32
+ vi.mocked(getVersion).mockResolvedValue('0.0.0');
28
33
  });
29
34
  afterEach(() => {
30
35
  // Restore original process properties to avoid side-effects between tests
@@ -55,20 +60,12 @@ describe('client_metadata', () => {
55
60
  }
56
61
  });
57
62
  describe('getClientMetadata', () => {
58
- it('should use CLI_VERSION for ideVersion if set', async () => {
59
- process.env['CLI_VERSION'] = '1.2.3';
60
- Object.defineProperty(process, 'version', { value: 'v18.0.0' });
63
+ it('should use version from getCliVersion for ideVersion', async () => {
64
+ vi.mocked(getVersion).mockResolvedValue('1.2.3');
61
65
  const { getClientMetadata } = await import('./client_metadata.js');
62
66
  const metadata = await getClientMetadata();
63
67
  expect(metadata.ideVersion).toBe('1.2.3');
64
68
  });
65
- it('should use process.version for ideVersion as a fallback', async () => {
66
- delete process.env['CLI_VERSION'];
67
- Object.defineProperty(process, 'version', { value: 'v20.0.0' });
68
- const { getClientMetadata } = await import('./client_metadata.js');
69
- const metadata = await getClientMetadata();
70
- expect(metadata.ideVersion).toBe('v20.0.0');
71
- });
72
69
  it('should call getReleaseChannel to get the update channel', async () => {
73
70
  vi.mocked(getReleaseChannel).mockResolvedValue(ReleaseChannel.NIGHTLY);
74
71
  const { getClientMetadata } = await import('./client_metadata.js');
@@ -1 +1 @@
1
- {"version":3,"file":"client_metadata.test.js","sourceRoot":"","sources":["../../../../src/code_assist/experiments/client_metadata.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client_metadata.test.js","sourceRoot":"","sources":["../../../../src/code_assist/experiments/client_metadata.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { CommandActionReturn } from './types.js';
7
+ export declare function performInit(doesGeminiMdExist: boolean): CommandActionReturn;
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export function performInit(doesGeminiMdExist) {
7
+ if (doesGeminiMdExist) {
8
+ return {
9
+ type: 'message',
10
+ messageType: 'info',
11
+ content: 'A GEMINI.md file already exists in this directory. No changes were made.',
12
+ };
13
+ }
14
+ return {
15
+ type: 'submit_prompt',
16
+ content: `
17
+ You are an AI agent that brings the power of Gemini directly into the terminal. Your task is to analyze the current directory and generate a comprehensive GEMINI.md file to be used as instructional context for future interactions.
18
+
19
+ **Analysis Process:**
20
+
21
+ 1. **Initial Exploration:**
22
+ * Start by listing the files and directories to get a high-level overview of the structure.
23
+ * Read the README file (e.g., \`README.md\`, \`README.txt\`) if it exists. This is often the best place to start.
24
+
25
+ 2. **Iterative Deep Dive (up to 10 files):**
26
+ * Based on your initial findings, select a few files that seem most important (e.g., configuration files, main source files, documentation).
27
+ * Read them. As you learn more, refine your understanding and decide which files to read next. You don't need to decide all 10 files at once. Let your discoveries guide your exploration.
28
+
29
+ 3. **Identify Project Type:**
30
+ * **Code Project:** Look for clues like \`package.json\`, \`requirements.txt\`, \`pom.xml\`, \`go.mod\`, \`Cargo.toml\`, \`build.gradle\`, or a \`src\` directory. If you find them, this is likely a software project.
31
+ * **Non-Code Project:** If you don't find code-related files, this might be a directory for documentation, research papers, notes, or something else.
32
+
33
+ **GEMINI.md Content Generation:**
34
+
35
+ **For a Code Project:**
36
+
37
+ * **Project Overview:** Write a clear and concise summary of the project's purpose, main technologies, and architecture.
38
+ * **Building and Running:** Document the key commands for building, running, and testing the project. Infer these from the files you've read (e.g., \`scripts\` in \`package.json\`, \`Makefile\`, etc.). If you can't find explicit commands, provide a placeholder with a TODO.
39
+ * **Development Conventions:** Describe any coding styles, testing practices, or contribution guidelines you can infer from the codebase.
40
+
41
+ **For a Non-Code Project:**
42
+
43
+ * **Directory Overview:** Describe the purpose and contents of the directory. What is it for? What kind of information does it hold?
44
+ * **Key Files:** List the most important files and briefly explain what they contain.
45
+ * **Usage:** Explain how the contents of this directory are intended to be used.
46
+
47
+ **Final Output:**
48
+
49
+ Write the complete content to the \`GEMINI.md\` file. The output must be well-formatted Markdown.
50
+ `,
51
+ };
52
+ }
53
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,WAAW,CAAC,iBAA0B;IACpD,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO;YACL,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,MAAM;YACnB,OAAO,EACL,0EAA0E;SAC7E,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCZ;KACE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { expect, describe, it } from 'vitest';
7
+ import { performInit } from './init.js';
8
+ describe('performInit', () => {
9
+ it('returns info if GEMINI.md already exists', () => {
10
+ const result = performInit(true);
11
+ expect(result.type).toBe('message');
12
+ if (result.type === 'message') {
13
+ expect(result.messageType).toBe('info');
14
+ expect(result.content).toContain('already exists');
15
+ }
16
+ });
17
+ it('returns submit_prompt if GEMINI.md does not exist', () => {
18
+ const result = performInit(false);
19
+ expect(result.type).toBe('submit_prompt');
20
+ if (result.type === 'submit_prompt') {
21
+ expect(result.content).toContain('You are an AI agent');
22
+ }
23
+ });
24
+ });
25
+ //# sourceMappingURL=init.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../../src/commands/init.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAEjC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE1C,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -36,7 +36,6 @@ import { PolicyEngine } from '../policy/policy-engine.js';
36
36
  import type { PolicyEngineConfig } from '../policy/types.js';
37
37
  import { HookSystem } from '../hooks/index.js';
38
38
  import type { UserTierId } from '../code_assist/types.js';
39
- import type { RetrieveUserQuotaResponse } from '../code_assist/types.js';
40
39
  import type { Experiments } from '../code_assist/experiments/experiments.js';
41
40
  import { AgentRegistry } from '../agents/registry.js';
42
41
  import { ApprovalMode } from '../policy/types.js';
@@ -280,7 +279,6 @@ export declare class Config {
280
279
  private readonly bugCommand;
281
280
  private model;
282
281
  private previewFeatures;
283
- private hasAccessToPreviewModel;
284
282
  private readonly noBrowser;
285
283
  private readonly folderTrust;
286
284
  private ideMode;
@@ -393,9 +391,6 @@ export declare class Config {
393
391
  getQuestion(): string | undefined;
394
392
  getPreviewFeatures(): boolean | undefined;
395
393
  setPreviewFeatures(previewFeatures: boolean): void;
396
- getHasAccessToPreviewModel(): boolean;
397
- setHasAccessToPreviewModel(hasAccess: boolean): void;
398
- refreshUserQuota(): Promise<RetrieveUserQuotaResponse | undefined>;
399
394
  getCoreTools(): string[] | undefined;
400
395
  getAllowedTools(): string[] | undefined;
401
396
  /**
@@ -29,7 +29,7 @@ import { GitService } from '../services/gitService.js';
29
29
  import { initializeTelemetry, DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT, uiTelemetryService, } from '../telemetry/index.js';
30
30
  import { coreEvents } from '../utils/events.js';
31
31
  import { tokenLimit } from '../core/tokenLimits.js';
32
- import { DEFAULT_GEMINI_EMBEDDING_MODEL, DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_MODEL_AUTO, DEFAULT_THINKING_MODE, isPreviewModel, PREVIEW_GEMINI_MODEL, } from './models.js';
32
+ import { DEFAULT_GEMINI_EMBEDDING_MODEL, DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_THINKING_MODE, } from './models.js';
33
33
  import { shouldAttemptBrowserLaunch } from '../utils/browser.js';
34
34
  import { ideContextStore } from '../ide/ideContext.js';
35
35
  import { WriteTodosTool } from '../tools/write-todos.js';
@@ -51,7 +51,8 @@ import { HookSystem } from '../hooks/index.js';
51
51
  import { getCodeAssistServer } from '../code_assist/codeAssist.js';
52
52
  import { AgentRegistry } from '../agents/registry.js';
53
53
  import { setGlobalProxy } from '../utils/fetch.js';
54
- 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';
55
56
  import { getExperiments } from '../code_assist/experiments/experiments.js';
56
57
  import { ExperimentFlags } from '../code_assist/experiments/flagNames.js';
57
58
  import { debugLogger } from '../utils/debugLogger.js';
@@ -183,7 +184,6 @@ export class Config {
183
184
  bugCommand;
184
185
  model;
185
186
  previewFeatures;
186
- hasAccessToPreviewModel = false;
187
187
  noBrowser;
188
188
  folderTrust;
189
189
  ideMode;
@@ -300,7 +300,8 @@ export class Config {
300
300
  this.bugCommand = params.bugCommand;
301
301
  this.model = params.model;
302
302
  this._activeModel = params.model;
303
- this.enableModelAvailabilityService = true;
303
+ this.enableModelAvailabilityService =
304
+ params.enableModelAvailabilityService ?? false;
304
305
  this.enableAgents = params.enableAgents ?? false;
305
306
  this.experimentalJitContext = params.experimentalJitContext ?? false;
306
307
  this.modelAvailabilityService = new ModelAvailabilityService();
@@ -342,10 +343,7 @@ export class Config {
342
343
  params.truncateToolOutputLines ?? DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES;
343
344
  this.enableToolOutputTruncation = params.enableToolOutputTruncation ?? true;
344
345
  this.useSmartEdit = params.useSmartEdit ?? true;
345
- // // TODO(joshualitt): Re-evaluate the todo tool for 3 family.
346
- this.useWriteTodos = isPreviewModel(this.model)
347
- ? false
348
- : (params.useWriteTodos ?? true);
346
+ this.useWriteTodos = params.useWriteTodos ?? true;
349
347
  this.enableHooks = params.enableHooks ?? false;
350
348
  this.disabledHooks =
351
349
  (params.hooks && 'disabled' in params.hooks
@@ -415,11 +413,19 @@ export class Config {
415
413
  // TODO(12593): Fix the settings loading logic to properly merge defaults and
416
414
  // remove this hack.
417
415
  let modelConfigServiceConfig = params.modelConfigServiceConfig;
418
- if (modelConfigServiceConfig && !modelConfigServiceConfig.aliases) {
419
- modelConfigServiceConfig = {
420
- ...modelConfigServiceConfig,
421
- aliases: DEFAULT_MODEL_CONFIGS.aliases,
422
- };
416
+ if (modelConfigServiceConfig) {
417
+ if (!modelConfigServiceConfig.aliases) {
418
+ modelConfigServiceConfig = {
419
+ ...modelConfigServiceConfig,
420
+ aliases: DEFAULT_MODEL_CONFIGS.aliases,
421
+ };
422
+ }
423
+ if (!modelConfigServiceConfig.overrides) {
424
+ modelConfigServiceConfig = {
425
+ ...modelConfigServiceConfig,
426
+ overrides: DEFAULT_MODEL_CONFIGS.overrides,
427
+ };
428
+ }
423
429
  }
424
430
  this.modelConfigService = new ModelConfigService(modelConfigServiceConfig ?? DEFAULT_MODEL_CONFIGS);
425
431
  }
@@ -473,8 +479,6 @@ export class Config {
473
479
  // Restore the conversation history to the new client
474
480
  this.geminiClient.stripThoughtsFromHistory();
475
481
  }
476
- // Reset availability status when switching auth (e.g. from limited key to OAuth)
477
- this.modelAvailabilityService.reset();
478
482
  const newContentGeneratorConfig = await createContentGeneratorConfig(this, authMethod);
479
483
  this.contentGenerator = await createContentGenerator(newContentGeneratorConfig, this, this.getSessionId());
480
484
  // Only assign to instance properties after successful initialization
@@ -484,9 +488,6 @@ export class Config {
484
488
  const previewFeatures = this.getPreviewFeatures();
485
489
  const codeAssistServer = getCodeAssistServer(this);
486
490
  if (codeAssistServer) {
487
- if (codeAssistServer.projectId) {
488
- await this.refreshUserQuota();
489
- }
490
491
  this.experimentsPromise = getExperiments(codeAssistServer)
491
492
  .then((experiments) => {
492
493
  this.setExperiments(experiments);
@@ -506,17 +507,8 @@ export class Config {
506
507
  this.experiments = undefined;
507
508
  this.experimentsPromise = undefined;
508
509
  }
509
- const authType = this.contentGeneratorConfig.authType;
510
- if (authType === AuthType.USE_GEMINI ||
511
- authType === AuthType.USE_VERTEX_AI) {
512
- this.setHasAccessToPreviewModel(true);
513
- }
514
510
  // Reset the session flag since we're explicitly changing auth and using default model
515
511
  this.inFallbackMode = false;
516
- // Update model if user no longer has access to the preview model
517
- if (!this.hasAccessToPreviewModel && isPreviewModel(this.model)) {
518
- this.setModel(DEFAULT_GEMINI_MODEL_AUTO);
519
- }
520
512
  }
521
513
  async getExperimentsAsync() {
522
514
  if (this.experiments) {
@@ -583,6 +575,7 @@ export class Config {
583
575
  setActiveModel(model) {
584
576
  if (this._activeModel !== model) {
585
577
  this._activeModel = model;
578
+ coreEvents.emitModelChanged(model);
586
579
  }
587
580
  }
588
581
  resetTurn() {
@@ -666,39 +659,8 @@ export class Config {
666
659
  return this.previewFeatures;
667
660
  }
668
661
  setPreviewFeatures(previewFeatures) {
669
- // If it's using a preview model and it's turning off previewFeatures,
670
- // switch the model to the default auto mode.
671
- if (this.previewFeatures && !previewFeatures) {
672
- if (isPreviewModel(this.getModel())) {
673
- this.setModel(DEFAULT_GEMINI_MODEL_AUTO);
674
- }
675
- }
676
662
  this.previewFeatures = previewFeatures;
677
663
  }
678
- getHasAccessToPreviewModel() {
679
- return this.hasAccessToPreviewModel;
680
- }
681
- setHasAccessToPreviewModel(hasAccess) {
682
- this.hasAccessToPreviewModel = hasAccess;
683
- }
684
- async refreshUserQuota() {
685
- const codeAssistServer = getCodeAssistServer(this);
686
- if (!codeAssistServer || !codeAssistServer.projectId) {
687
- return undefined;
688
- }
689
- try {
690
- const quota = await codeAssistServer.retrieveUserQuota({
691
- project: codeAssistServer.projectId,
692
- });
693
- const hasAccess = quota.buckets?.some((b) => b.modelId === PREVIEW_GEMINI_MODEL) ?? false;
694
- this.setHasAccessToPreviewModel(hasAccess);
695
- return quota;
696
- }
697
- catch (e) {
698
- debugLogger.debug('Failed to retrieve user quota', e);
699
- return undefined;
700
- }
701
- }
702
664
  getCoreTools() {
703
665
  return this.coreTools;
704
666
  }
@@ -1192,17 +1154,16 @@ export class Config {
1192
1154
  registerCoreTool(WriteTodosTool, this);
1193
1155
  }
1194
1156
  // Register Subagents as Tools
1195
- if (this.getCodebaseInvestigatorSettings().enabled) {
1196
- const definition = this.agentRegistry.getDefinition('codebase_investigator');
1197
- if (definition) {
1198
- // We must respect the main allowed/exclude lists for agents too.
1199
- const allowedTools = this.getAllowedTools();
1200
- const isAllowed = !allowedTools || allowedTools.includes(definition.name);
1201
- if (isAllowed) {
1202
- const messageBusEnabled = this.getEnableMessageBusIntegration();
1203
- const wrapper = new SubagentToolWrapper(definition, this, messageBusEnabled ? this.getMessageBus() : undefined);
1204
- registry.registerTool(wrapper);
1205
- }
1157
+ // Register DelegateToAgentTool if agents are enabled
1158
+ if (this.isAgentsEnabled() ||
1159
+ this.getCodebaseInvestigatorSettings().enabled) {
1160
+ // Check if the delegate tool itself is allowed (if allowedTools is set)
1161
+ const allowedTools = this.getAllowedTools();
1162
+ const isAllowed = !allowedTools || allowedTools.includes(DELEGATE_TO_AGENT_TOOL_NAME);
1163
+ if (isAllowed) {
1164
+ const messageBusEnabled = this.getEnableMessageBusIntegration();
1165
+ const delegateTool = new DelegateToAgentTool(this.agentRegistry, this, messageBusEnabled ? this.getMessageBus() : undefined);
1166
+ registry.registerTool(delegateTool);
1206
1167
  }
1207
1168
  }
1208
1169
  await registry.discoverAllTools();