@google/gemini-cli-core 0.21.0-nightly.20251217.db643e916 → 0.21.0-nightly.20251219.70696e364

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 (212) hide show
  1. package/dist/google-gemini-cli-core-0.21.0-nightly.20251218.739c02bd6.tgz +0 -0
  2. package/dist/index.d.ts +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/agents/codebase-investigator.d.ts +2 -2
  6. package/dist/src/agents/codebase-investigator.js +6 -5
  7. package/dist/src/agents/codebase-investigator.js.map +1 -1
  8. package/dist/src/agents/codebase-investigator.test.js +2 -2
  9. package/dist/src/agents/codebase-investigator.test.js.map +1 -1
  10. package/dist/src/agents/delegate-to-agent-tool.js +8 -4
  11. package/dist/src/agents/delegate-to-agent-tool.js.map +1 -1
  12. package/dist/src/agents/delegate-to-agent-tool.test.js +5 -4
  13. package/dist/src/agents/delegate-to-agent-tool.test.js.map +1 -1
  14. package/dist/src/agents/{executor.d.ts → local-executor.d.ts} +5 -11
  15. package/dist/src/agents/{executor.js → local-executor.js} +75 -51
  16. package/dist/src/agents/local-executor.js.map +1 -0
  17. package/dist/src/agents/{executor.test.js → local-executor.test.js} +61 -45
  18. package/dist/src/agents/local-executor.test.js.map +1 -0
  19. package/dist/src/agents/{invocation.d.ts → local-invocation.d.ts} +5 -6
  20. package/dist/src/agents/{invocation.js → local-invocation.js} +8 -9
  21. package/dist/src/agents/local-invocation.js.map +1 -0
  22. package/dist/src/agents/{invocation.test.js → local-invocation.test.js} +18 -17
  23. package/dist/src/agents/local-invocation.test.js.map +1 -0
  24. package/dist/src/agents/registry.d.ts +1 -0
  25. package/dist/src/agents/registry.js +77 -28
  26. package/dist/src/agents/registry.js.map +1 -1
  27. package/dist/src/agents/registry.test.js +130 -5
  28. package/dist/src/agents/registry.test.js.map +1 -1
  29. package/dist/src/agents/remote-invocation.d.ts +21 -0
  30. package/dist/src/agents/remote-invocation.js +31 -0
  31. package/dist/src/agents/remote-invocation.js.map +1 -0
  32. package/dist/src/agents/remote-invocation.test.d.ts +6 -0
  33. package/dist/src/agents/remote-invocation.test.js +35 -0
  34. package/dist/src/agents/remote-invocation.test.js.map +1 -0
  35. package/dist/src/agents/subagent-tool-wrapper.js +7 -3
  36. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
  37. package/dist/src/agents/subagent-tool-wrapper.test.js +10 -9
  38. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
  39. package/dist/src/agents/toml-loader.d.ts +65 -0
  40. package/dist/src/agents/toml-loader.js +176 -0
  41. package/dist/src/agents/toml-loader.js.map +1 -0
  42. package/dist/src/agents/toml-loader.test.d.ts +6 -0
  43. package/dist/src/agents/toml-loader.test.js +190 -0
  44. package/dist/src/agents/toml-loader.test.js.map +1 -0
  45. package/dist/src/agents/types.d.ts +12 -4
  46. package/dist/src/availability/modelAvailabilityService.d.ts +2 -1
  47. package/dist/src/availability/policyCatalog.d.ts +1 -0
  48. package/dist/src/availability/policyCatalog.js +6 -8
  49. package/dist/src/availability/policyCatalog.js.map +1 -1
  50. package/dist/src/availability/policyCatalog.test.js +2 -2
  51. package/dist/src/availability/policyCatalog.test.js.map +1 -1
  52. package/dist/src/availability/policyHelpers.d.ts +9 -5
  53. package/dist/src/availability/policyHelpers.js +43 -37
  54. package/dist/src/availability/policyHelpers.js.map +1 -1
  55. package/dist/src/availability/policyHelpers.test.js +58 -20
  56. package/dist/src/availability/policyHelpers.test.js.map +1 -1
  57. package/dist/src/code_assist/oauth2.js +1 -1
  58. package/dist/src/code_assist/oauth2.js.map +1 -1
  59. package/dist/src/code_assist/oauth2.test.js +6 -8
  60. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  61. package/dist/src/code_assist/server.js +3 -9
  62. package/dist/src/code_assist/server.js.map +1 -1
  63. package/dist/src/code_assist/server.test.js +18 -3
  64. package/dist/src/code_assist/server.test.js.map +1 -1
  65. package/dist/src/code_assist/telemetry.d.ts +6 -1
  66. package/dist/src/code_assist/telemetry.js +92 -3
  67. package/dist/src/code_assist/telemetry.js.map +1 -1
  68. package/dist/src/code_assist/telemetry.test.js +206 -18
  69. package/dist/src/code_assist/telemetry.test.js.map +1 -1
  70. package/dist/src/config/config.d.ts +9 -13
  71. package/dist/src/config/config.js +68 -38
  72. package/dist/src/config/config.js.map +1 -1
  73. package/dist/src/config/config.test.js +134 -22
  74. package/dist/src/config/config.test.js.map +1 -1
  75. package/dist/src/config/defaultModelConfigs.js +11 -0
  76. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  77. package/dist/src/config/flashFallback.test.js +0 -37
  78. package/dist/src/config/flashFallback.test.js.map +1 -1
  79. package/dist/src/config/models.d.ts +23 -10
  80. package/dist/src/config/models.js +65 -23
  81. package/dist/src/config/models.js.map +1 -1
  82. package/dist/src/config/models.test.js +57 -76
  83. package/dist/src/config/models.test.js.map +1 -1
  84. package/dist/src/config/storage.d.ts +2 -0
  85. package/dist/src/config/storage.js +6 -0
  86. package/dist/src/config/storage.js.map +1 -1
  87. package/dist/src/config/storage.test.js +8 -0
  88. package/dist/src/config/storage.test.js.map +1 -1
  89. package/dist/src/core/baseLlmClient.d.ts +3 -1
  90. package/dist/src/core/baseLlmClient.js +51 -43
  91. package/dist/src/core/baseLlmClient.js.map +1 -1
  92. package/dist/src/core/baseLlmClient.test.js +12 -19
  93. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  94. package/dist/src/core/client.js +18 -33
  95. package/dist/src/core/client.js.map +1 -1
  96. package/dist/src/core/client.test.js +14 -65
  97. package/dist/src/core/client.test.js.map +1 -1
  98. package/dist/src/core/contentGenerator.js +1 -1
  99. package/dist/src/core/contentGenerator.js.map +1 -1
  100. package/dist/src/core/contentGenerator.test.js +0 -6
  101. package/dist/src/core/contentGenerator.test.js.map +1 -1
  102. package/dist/src/core/geminiChat.js +29 -88
  103. package/dist/src/core/geminiChat.js.map +1 -1
  104. package/dist/src/core/geminiChat.test.js +35 -257
  105. package/dist/src/core/geminiChat.test.js.map +1 -1
  106. package/dist/src/core/geminiChat_network_retry.test.js +6 -6
  107. package/dist/src/core/geminiChat_network_retry.test.js.map +1 -1
  108. package/dist/src/core/prompts.js +6 -7
  109. package/dist/src/core/prompts.js.map +1 -1
  110. package/dist/src/core/prompts.test.js +10 -7
  111. package/dist/src/core/prompts.test.js.map +1 -1
  112. package/dist/src/core/turn.d.ts +1 -0
  113. package/dist/src/core/turn.js +3 -2
  114. package/dist/src/core/turn.js.map +1 -1
  115. package/dist/src/fallback/handler.js +54 -121
  116. package/dist/src/fallback/handler.js.map +1 -1
  117. package/dist/src/fallback/handler.test.js +80 -285
  118. package/dist/src/fallback/handler.test.js.map +1 -1
  119. package/dist/src/generated/git-commit.d.ts +2 -2
  120. package/dist/src/generated/git-commit.js +2 -2
  121. package/dist/src/hooks/hookPlanner.js +3 -1
  122. package/dist/src/hooks/hookPlanner.js.map +1 -1
  123. package/dist/src/hooks/hookPlanner.test.js +61 -0
  124. package/dist/src/hooks/hookPlanner.test.js.map +1 -1
  125. package/dist/src/hooks/hookRegistry.d.ts +1 -1
  126. package/dist/src/hooks/hookRegistry.js +2 -2
  127. package/dist/src/hooks/hookRegistry.js.map +1 -1
  128. package/dist/src/hooks/hookRegistry.test.js +73 -0
  129. package/dist/src/hooks/hookRegistry.test.js.map +1 -1
  130. package/dist/src/hooks/hookRunner.js +2 -2
  131. package/dist/src/hooks/hookRunner.js.map +1 -1
  132. package/dist/src/hooks/hookRunner.test.js +23 -0
  133. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  134. package/dist/src/hooks/types.d.ts +2 -0
  135. package/dist/src/hooks/types.js.map +1 -1
  136. package/dist/src/index.d.ts +2 -0
  137. package/dist/src/index.js +2 -0
  138. package/dist/src/index.js.map +1 -1
  139. package/dist/src/routing/modelRouterService.js +0 -15
  140. package/dist/src/routing/modelRouterService.js.map +1 -1
  141. package/dist/src/routing/modelRouterService.test.js +0 -62
  142. package/dist/src/routing/modelRouterService.test.js.map +1 -1
  143. package/dist/src/routing/strategies/classifierStrategy.js +10 -21
  144. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
  145. package/dist/src/routing/strategies/classifierStrategy.test.js +2 -1
  146. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
  147. package/dist/src/routing/strategies/fallbackStrategy.js +20 -12
  148. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
  149. package/dist/src/routing/strategies/fallbackStrategy.test.js +63 -39
  150. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -1
  151. package/dist/src/routing/strategies/overrideStrategy.js +4 -3
  152. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
  153. package/dist/src/services/chatCompressionService.js +3 -1
  154. package/dist/src/services/chatCompressionService.js.map +1 -1
  155. package/dist/src/services/loopDetectionService.js +2 -1
  156. package/dist/src/services/loopDetectionService.js.map +1 -1
  157. package/dist/src/services/loopDetectionService.test.js +14 -8
  158. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  159. package/dist/src/services/modelConfig.integration.test.js +1 -1
  160. package/dist/src/services/modelConfig.integration.test.js.map +1 -1
  161. package/dist/src/services/shellExecutionService.js +18 -2
  162. package/dist/src/services/shellExecutionService.js.map +1 -1
  163. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +16 -0
  164. package/dist/src/services/test-data/resolved-aliases.golden.json +16 -0
  165. package/dist/src/telemetry/sdk.js +2 -2
  166. package/dist/src/telemetry/sdk.js.map +1 -1
  167. package/dist/src/tools/ripGrep.js +2 -2
  168. package/dist/src/tools/ripGrep.js.map +1 -1
  169. package/dist/src/tools/tool-names.d.ts +13 -0
  170. package/dist/src/tools/tool-names.js +54 -0
  171. package/dist/src/tools/tool-names.js.map +1 -1
  172. package/dist/src/tools/tool-names.test.d.ts +6 -0
  173. package/dist/src/tools/tool-names.test.js +43 -0
  174. package/dist/src/tools/tool-names.test.js.map +1 -0
  175. package/dist/src/tools/tool-registry.d.ts +0 -1
  176. package/dist/src/tools/tool-registry.js +1 -1
  177. package/dist/src/tools/tool-registry.js.map +1 -1
  178. package/dist/src/tools/tool-registry.test.js +2 -1
  179. package/dist/src/tools/tool-registry.test.js.map +1 -1
  180. package/dist/src/utils/checkpointUtils.js +1 -1
  181. package/dist/src/utils/checkpointUtils.js.map +1 -1
  182. package/dist/src/utils/checkpointUtils.test.js +1 -1
  183. package/dist/src/utils/checkpointUtils.test.js.map +1 -1
  184. package/dist/src/utils/editCorrector.js +1 -1
  185. package/dist/src/utils/editCorrector.js.map +1 -1
  186. package/dist/src/utils/editCorrector.test.js +2 -2
  187. package/dist/src/utils/editCorrector.test.js.map +1 -1
  188. package/dist/src/utils/environmentContext.d.ts +1 -0
  189. package/dist/src/utils/environmentContext.js +1 -0
  190. package/dist/src/utils/environmentContext.js.map +1 -1
  191. package/dist/src/utils/events.d.ts +0 -16
  192. package/dist/src/utils/events.js +0 -9
  193. package/dist/src/utils/events.js.map +1 -1
  194. package/dist/src/utils/flashFallback.test.js +1 -1
  195. package/dist/src/utils/flashFallback.test.js.map +1 -1
  196. package/dist/src/utils/googleQuotaErrors.js +20 -0
  197. package/dist/src/utils/googleQuotaErrors.js.map +1 -1
  198. package/dist/src/utils/googleQuotaErrors.test.js +53 -2
  199. package/dist/src/utils/googleQuotaErrors.test.js.map +1 -1
  200. package/dist/src/utils/retry.js +2 -16
  201. package/dist/src/utils/retry.js.map +1 -1
  202. package/dist/src/utils/retry.test.js +7 -22
  203. package/dist/src/utils/retry.test.js.map +1 -1
  204. package/dist/tsconfig.tsbuildinfo +1 -1
  205. package/package.json +1 -6
  206. package/dist/google-gemini-cli-core-0.21.0-nightly.20251216.bb0c0d8ee.tgz +0 -0
  207. package/dist/src/agents/executor.js.map +0 -1
  208. package/dist/src/agents/executor.test.js.map +0 -1
  209. package/dist/src/agents/invocation.js.map +0 -1
  210. package/dist/src/agents/invocation.test.js.map +0 -1
  211. /package/dist/src/agents/{executor.test.d.ts → local-executor.test.d.ts} +0 -0
  212. /package/dist/src/agents/{invocation.test.d.ts → local-invocation.test.d.ts} +0 -0
@@ -42,20 +42,23 @@ export interface SubagentActivityEvent {
42
42
  data: Record<string, unknown>;
43
43
  }
44
44
  /**
45
- * The definition for an agent.
45
+ * The base definition for an agent.
46
46
  * @template TOutput The specific Zod schema for the agent's final output object.
47
47
  */
48
- export interface AgentDefinition<TOutput extends z.ZodTypeAny = z.ZodUnknown> {
48
+ export interface BaseAgentDefinition<TOutput extends z.ZodTypeAny = z.ZodUnknown> {
49
49
  /** Unique identifier for the agent. */
50
50
  name: string;
51
51
  displayName?: string;
52
52
  description: string;
53
+ inputConfig: InputConfig;
54
+ outputConfig?: OutputConfig<TOutput>;
55
+ }
56
+ export interface LocalAgentDefinition<TOutput extends z.ZodTypeAny = z.ZodUnknown> extends BaseAgentDefinition<TOutput> {
57
+ kind: 'local';
53
58
  promptConfig: PromptConfig;
54
59
  modelConfig: ModelConfig;
55
60
  runConfig: RunConfig;
56
61
  toolConfig?: ToolConfig;
57
- outputConfig?: OutputConfig<TOutput>;
58
- inputConfig: InputConfig;
59
62
  /**
60
63
  * An optional function to process the raw output from the agent's final tool
61
64
  * call into a string format.
@@ -65,6 +68,11 @@ export interface AgentDefinition<TOutput extends z.ZodTypeAny = z.ZodUnknown> {
65
68
  */
66
69
  processOutput?: (output: z.infer<TOutput>) => string;
67
70
  }
71
+ export interface RemoteAgentDefinition<TOutput extends z.ZodTypeAny = z.ZodUnknown> extends BaseAgentDefinition<TOutput> {
72
+ kind: 'remote';
73
+ agentCardUrl: string;
74
+ }
75
+ export type AgentDefinition<TOutput extends z.ZodTypeAny = z.ZodUnknown> = LocalAgentDefinition<TOutput> | RemoteAgentDefinition<TOutput>;
68
76
  /**
69
77
  * Configures the initial prompt for the agent.
70
78
  */
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  export type ModelId = string;
7
- export type TerminalUnavailabilityReason = 'quota' | 'capacity';
7
+ type TerminalUnavailabilityReason = 'quota' | 'capacity';
8
8
  export type TurnUnavailabilityReason = 'retry_once_per_turn';
9
9
  export type UnavailabilityReason = TerminalUnavailabilityReason | TurnUnavailabilityReason | 'unknown';
10
10
  export type ModelHealthStatus = 'terminal' | 'sticky_retry';
@@ -33,3 +33,4 @@ export declare class ModelAvailabilityService {
33
33
  private setState;
34
34
  private clearState;
35
35
  }
36
+ export {};
@@ -13,6 +13,7 @@ export interface ModelPolicyOptions {
13
13
  * Returns the default ordered model policy chain for the user.
14
14
  */
15
15
  export declare function getModelPolicyChain(options: ModelPolicyOptions): ModelPolicyChain;
16
+ export declare function createSingleModelChain(model: string): ModelPolicyChain;
16
17
  /**
17
18
  * Provides a default policy scaffold for models not present in the catalog.
18
19
  */
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_MODEL, PREVIEW_GEMINI_MODEL, } from '../config/models.js';
6
+ import { DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_MODEL, PREVIEW_GEMINI_FLASH_MODEL, PREVIEW_GEMINI_MODEL, } from '../config/models.js';
7
7
  const DEFAULT_ACTIONS = {
8
8
  terminal: 'prompt',
9
9
  transient: 'prompt',
@@ -21,13 +21,8 @@ const DEFAULT_CHAIN = [
21
21
  definePolicy({ model: DEFAULT_GEMINI_FLASH_MODEL, isLastResort: true }),
22
22
  ];
23
23
  const PREVIEW_CHAIN = [
24
- definePolicy({
25
- model: PREVIEW_GEMINI_MODEL,
26
- stateTransitions: { transient: 'sticky_retry' },
27
- actions: { transient: 'silent' },
28
- }),
29
- definePolicy({ model: DEFAULT_GEMINI_MODEL }),
30
- definePolicy({ model: DEFAULT_GEMINI_FLASH_MODEL, isLastResort: true }),
24
+ definePolicy({ model: PREVIEW_GEMINI_MODEL }),
25
+ definePolicy({ model: PREVIEW_GEMINI_FLASH_MODEL, isLastResort: true }),
31
26
  ];
32
27
  /**
33
28
  * Returns the default ordered model policy chain for the user.
@@ -38,6 +33,9 @@ export function getModelPolicyChain(options) {
38
33
  }
39
34
  return cloneChain(DEFAULT_CHAIN);
40
35
  }
36
+ export function createSingleModelChain(model) {
37
+ return [definePolicy({ model, isLastResort: true })];
38
+ }
41
39
  /**
42
40
  * Provides a default policy scaffold for models not present in the catalog.
43
41
  */
@@ -1 +1 @@
1
- {"version":3,"file":"policyCatalog.js","sourceRoot":"","sources":["../../../src/availability/policyCatalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policyCatalog.js","sourceRoot":"","sources":["../../../src/availability/policyCatalog.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ describe('policyCatalog', () => {
10
10
  it('returns preview chain when preview enabled', () => {
11
11
  const chain = getModelPolicyChain({ previewEnabled: true });
12
12
  expect(chain[0]?.model).toBe(PREVIEW_GEMINI_MODEL);
13
- expect(chain).toHaveLength(3);
13
+ expect(chain).toHaveLength(2);
14
14
  });
15
15
  it('returns default chain when preview disabled', () => {
16
16
  const chain = getModelPolicyChain({ previewEnabled: false });
@@ -20,7 +20,7 @@ describe('policyCatalog', () => {
20
20
  it('marks preview transients as sticky retries', () => {
21
21
  const [previewPolicy] = getModelPolicyChain({ previewEnabled: true });
22
22
  expect(previewPolicy.model).toBe(PREVIEW_GEMINI_MODEL);
23
- expect(previewPolicy.stateTransitions.transient).toBe('sticky_retry');
23
+ expect(previewPolicy.stateTransitions.transient).toBe('terminal');
24
24
  });
25
25
  it('applies default actions and state transitions for unspecified kinds', () => {
26
26
  const [previewPolicy] = getModelPolicyChain({ previewEnabled: true });
@@ -1 +1 @@
1
- {"version":3,"file":"policyCatalog.test.js","sourceRoot":"","sources":["../../../src/availability/policyCatalog.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policyCatalog.test.js","sourceRoot":"","sources":["../../../src/availability/policyCatalog.test.ts"],"names":[],"mappings":"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"}
@@ -7,16 +7,20 @@ import type { GenerateContentConfig } from '@google/genai';
7
7
  import type { Config } from '../config/config.js';
8
8
  import type { FailureKind, FallbackAction, ModelPolicy, ModelPolicyChain, RetryAvailabilityContext } from './modelPolicy.js';
9
9
  import type { ModelSelectionResult } from './modelAvailabilityService.js';
10
+ import type { ModelConfigKey } from '../services/modelConfigService.js';
10
11
  /**
11
12
  * Resolves the active policy chain for the given config, ensuring the
12
13
  * user-selected active model is represented.
13
14
  */
14
- export declare function resolvePolicyChain(config: Config, preferredModel?: string): ModelPolicyChain;
15
+ export declare function resolvePolicyChain(config: Config, preferredModel?: string, wrapsAround?: boolean): ModelPolicyChain;
15
16
  /**
16
17
  * Produces the failed policy (if it exists in the chain) and the list of
17
18
  * fallback candidates that follow it.
19
+ * @param chain - The ordered list of available model policies.
20
+ * @param failedModel - The identifier of the model that failed.
21
+ * @param wrapsAround - If true, treats the chain as a circular buffer.
18
22
  */
19
- export declare function buildFallbackPolicyContext(chain: ModelPolicyChain, failedModel: string): {
23
+ export declare function buildFallbackPolicyContext(chain: ModelPolicyChain, failedModel: string, wrapsAround?: boolean): {
20
24
  failedPolicy?: ModelPolicy;
21
25
  candidates: ModelPolicy[];
22
26
  };
@@ -33,16 +37,16 @@ export declare function createAvailabilityContextProvider(config: Config, modelG
33
37
  * Selects the model to use for an attempt via the availability service and
34
38
  * returns the selection context.
35
39
  */
36
- export declare function selectModelForAvailability(config: Config, requestedModel: string): ModelSelectionResult | undefined;
40
+ export declare function selectModelForAvailability(config: Config, requestedModel: string): ModelSelectionResult;
37
41
  /**
38
42
  * Applies the model availability selection logic, including side effects
39
43
  * (setting active model, consuming sticky attempts) and config updates.
40
44
  */
41
- export declare function applyModelSelection(config: Config, requestedModel: string, currentConfig?: GenerateContentConfig, overrideScope?: string, options?: {
45
+ export declare function applyModelSelection(config: Config, modelConfigKey: ModelConfigKey, options?: {
42
46
  consumeAttempt?: boolean;
43
47
  }): {
44
48
  model: string;
45
- config?: GenerateContentConfig;
49
+ config: GenerateContentConfig;
46
50
  maxAttempts?: number;
47
51
  };
48
52
  export declare function applyAvailabilityTransition(getContext: (() => RetryAvailabilityContext | undefined) | undefined, failureKind: FailureKind): void;
@@ -3,26 +3,33 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { createDefaultPolicy, getModelPolicyChain } from './policyCatalog.js';
7
- import { DEFAULT_GEMINI_MODEL, getEffectiveModel } from '../config/models.js';
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';
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) {
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];
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);
23
26
  }
24
- if (chain.some((policy) => policy.model === activeModel)) {
25
- return [...chain];
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)];
26
33
  }
27
34
  // If the user specified a model not in the default chain, we assume they want
28
35
  // *only* that model. We do not fallback to the default chain.
@@ -31,17 +38,23 @@ export function resolvePolicyChain(config, preferredModel) {
31
38
  /**
32
39
  * Produces the failed policy (if it exists in the chain) and the list of
33
40
  * 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.
34
44
  */
35
- export function buildFallbackPolicyContext(chain, failedModel) {
45
+ export function buildFallbackPolicyContext(chain, failedModel, wrapsAround = false) {
36
46
  const index = chain.findIndex((policy) => policy.model === failedModel);
37
47
  if (index === -1) {
38
48
  return { failedPolicy: undefined, candidates: chain };
39
49
  }
40
50
  // Return [candidates_after, candidates_before] to prioritize downgrades
41
51
  // (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)];
42
55
  return {
43
56
  failedPolicy: chain[index],
44
- candidates: [...chain.slice(index + 1), ...chain.slice(0, index)],
57
+ candidates,
45
58
  };
46
59
  }
47
60
  export function resolvePolicyAction(failureKind, policy) {
@@ -56,9 +69,6 @@ export function resolvePolicyAction(failureKind, policy) {
56
69
  */
57
70
  export function createAvailabilityContextProvider(config, modelGetter) {
58
71
  return () => {
59
- if (!config.isModelAvailabilityServiceEnabled()) {
60
- return undefined;
61
- }
62
72
  const service = config.getModelAvailabilityService();
63
73
  const currentModel = modelGetter();
64
74
  // Resolve the chain for the specific model we are attempting.
@@ -72,9 +82,6 @@ export function createAvailabilityContextProvider(config, modelGetter) {
72
82
  * returns the selection context.
73
83
  */
74
84
  export function selectModelForAvailability(config, requestedModel) {
75
- if (!config.isModelAvailabilityServiceEnabled()) {
76
- return undefined;
77
- }
78
85
  const chain = resolvePolicyChain(config, requestedModel);
79
86
  const selection = config
80
87
  .getModelAvailabilityService()
@@ -88,22 +95,21 @@ export function selectModelForAvailability(config, requestedModel) {
88
95
  * Applies the model availability selection logic, including side effects
89
96
  * (setting active model, consuming sticky attempts) and config updates.
90
97
  */
91
- export function applyModelSelection(config, requestedModel, currentConfig, overrideScope, options = {}) {
92
- const selection = selectModelForAvailability(config, requestedModel);
93
- if (!selection?.selectedModel) {
94
- return { model: requestedModel, config: currentConfig };
98
+ export function applyModelSelection(config, modelConfigKey, options = {}) {
99
+ const resolved = config.modelConfigService.getResolvedConfig(modelConfigKey);
100
+ const model = resolved.model;
101
+ const selection = selectModelForAvailability(config, model);
102
+ if (!selection) {
103
+ return { model, config: resolved.generateContentConfig };
95
104
  }
96
- const finalModel = selection.selectedModel;
97
- let finalConfig = currentConfig;
98
- // If model changed, re-resolve config
99
- if (finalModel !== requestedModel) {
100
- const { generateContentConfig } = config.modelConfigService.getResolvedConfig({
101
- overrideScope,
105
+ const finalModel = selection.selectedModel ?? model;
106
+ let generateContentConfig = resolved.generateContentConfig;
107
+ if (finalModel !== model) {
108
+ const fallbackResolved = config.modelConfigService.getResolvedConfig({
109
+ ...modelConfigKey,
102
110
  model: finalModel,
103
111
  });
104
- finalConfig = currentConfig
105
- ? { ...currentConfig, ...generateContentConfig }
106
- : generateContentConfig;
112
+ generateContentConfig = fallbackResolved.generateContentConfig;
107
113
  }
108
114
  config.setActiveModel(finalModel);
109
115
  if (selection.attempts && options.consumeAttempt !== false) {
@@ -111,7 +117,7 @@ export function applyModelSelection(config, requestedModel, currentConfig, overr
111
117
  }
112
118
  return {
113
119
  model: finalModel,
114
- config: finalConfig,
120
+ config: generateContentConfig,
115
121
  maxAttempts: selection.attempts,
116
122
  };
117
123
  }
@@ -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,16 +6,16 @@
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';
9
10
  const createMockConfig = (overrides = {}) => ({
10
11
  getPreviewFeatures: () => false,
11
12
  getUserTier: () => undefined,
12
13
  getModel: () => 'gemini-2.5-pro',
13
- isInFallbackMode: () => false,
14
14
  ...overrides,
15
15
  });
16
16
  describe('policyHelpers', () => {
17
17
  describe('resolvePolicyChain', () => {
18
- it('inserts the active model when missing from the catalog', () => {
18
+ it('returns a single-model chain for a custom model', () => {
19
19
  const config = createMockConfig({
20
20
  getModel: () => 'custom-model',
21
21
  });
@@ -32,7 +32,7 @@ describe('policyHelpers', () => {
32
32
  });
33
33
  it('returns the default chain when active model is "auto"', () => {
34
34
  const config = createMockConfig({
35
- getModel: () => 'auto',
35
+ getModel: () => DEFAULT_GEMINI_MODEL_AUTO,
36
36
  });
37
37
  const chain = resolvePolicyChain(config);
38
38
  // Expect default chain [Pro, Flash]
@@ -40,6 +40,23 @@ describe('policyHelpers', () => {
40
40
  expect(chain[0]?.model).toBe('gemini-2.5-pro');
41
41
  expect(chain[1]?.model).toBe('gemini-2.5-flash');
42
42
  });
43
+ it('starts chain from preferredModel when model is "auto"', () => {
44
+ const config = createMockConfig({
45
+ getModel: () => DEFAULT_GEMINI_MODEL_AUTO,
46
+ });
47
+ const chain = resolvePolicyChain(config, 'gemini-2.5-flash');
48
+ expect(chain).toHaveLength(1);
49
+ expect(chain[0]?.model).toBe('gemini-2.5-flash');
50
+ });
51
+ it('wraps around the chain when wrapsAround is true', () => {
52
+ const config = createMockConfig({
53
+ getModel: () => DEFAULT_GEMINI_MODEL_AUTO,
54
+ });
55
+ const chain = resolvePolicyChain(config, 'gemini-2.5-flash', true);
56
+ expect(chain).toHaveLength(2);
57
+ expect(chain[0]?.model).toBe('gemini-2.5-flash');
58
+ expect(chain[1]?.model).toBe('gemini-2.5-pro');
59
+ });
43
60
  });
44
61
  describe('buildFallbackPolicyContext', () => {
45
62
  it('returns remaining candidates after the failed model', () => {
@@ -50,6 +67,16 @@ describe('policyHelpers', () => {
50
67
  ];
51
68
  const context = buildFallbackPolicyContext(chain, 'b');
52
69
  expect(context.failedPolicy?.model).toBe('b');
70
+ expect(context.candidates.map((p) => p.model)).toEqual(['c']);
71
+ });
72
+ it('wraps around when building fallback context if wrapsAround is true', () => {
73
+ const chain = [
74
+ createDefaultPolicy('a'),
75
+ createDefaultPolicy('b'),
76
+ createDefaultPolicy('c'),
77
+ ];
78
+ const context = buildFallbackPolicyContext(chain, 'b', true);
79
+ expect(context.failedPolicy?.model).toBe('b');
53
80
  expect(context.candidates.map((p) => p.model)).toEqual(['c', 'a']);
54
81
  });
55
82
  it('returns full chain when model is not in policy list', () => {
@@ -69,7 +96,6 @@ describe('policyHelpers', () => {
69
96
  };
70
97
  const createExtendedMockConfig = (overrides = {}) => {
71
98
  const defaults = {
72
- isModelAvailabilityServiceEnabled: () => true,
73
99
  getModelAvailabilityService: () => mockAvailabilityService,
74
100
  setActiveModel: vi.fn(),
75
101
  modelConfigService: mockModelConfigService,
@@ -79,39 +105,43 @@ describe('policyHelpers', () => {
79
105
  beforeEach(() => {
80
106
  vi.clearAllMocks();
81
107
  });
82
- it('returns requested model if availability service is disabled', () => {
83
- const config = createExtendedMockConfig({
84
- isModelAvailabilityServiceEnabled: () => false,
85
- });
86
- const result = applyModelSelection(config, 'gemini-pro');
87
- expect(result.model).toBe('gemini-pro');
88
- expect(config.setActiveModel).not.toHaveBeenCalled();
89
- });
90
108
  it('returns requested model if it is available', () => {
91
109
  const config = createExtendedMockConfig();
110
+ mockModelConfigService.getResolvedConfig.mockReturnValue({
111
+ model: 'gemini-pro',
112
+ generateContentConfig: {},
113
+ });
92
114
  mockAvailabilityService.selectFirstAvailable.mockReturnValue({
93
115
  selectedModel: 'gemini-pro',
94
116
  });
95
- const result = applyModelSelection(config, 'gemini-pro');
117
+ const result = applyModelSelection(config, { model: 'gemini-pro' });
96
118
  expect(result.model).toBe('gemini-pro');
97
119
  expect(result.maxAttempts).toBeUndefined();
98
120
  expect(config.setActiveModel).toHaveBeenCalledWith('gemini-pro');
99
121
  });
100
122
  it('switches to backup model and updates config if requested is unavailable', () => {
101
123
  const config = createExtendedMockConfig();
124
+ mockModelConfigService.getResolvedConfig
125
+ .mockReturnValueOnce({
126
+ model: 'gemini-pro',
127
+ generateContentConfig: { temperature: 0.9, topP: 1 },
128
+ })
129
+ .mockReturnValueOnce({
130
+ model: 'gemini-flash',
131
+ generateContentConfig: { temperature: 0.1, topP: 1 },
132
+ });
102
133
  mockAvailabilityService.selectFirstAvailable.mockReturnValue({
103
134
  selectedModel: 'gemini-flash',
104
135
  });
105
- mockModelConfigService.getResolvedConfig.mockReturnValue({
106
- generateContentConfig: { temperature: 0.1 },
107
- });
108
- const currentConfig = { temperature: 0.9, topP: 1 };
109
- const result = applyModelSelection(config, 'gemini-pro', currentConfig);
136
+ const result = applyModelSelection(config, { model: 'gemini-pro' });
110
137
  expect(result.model).toBe('gemini-flash');
111
138
  expect(result.config).toEqual({
112
139
  temperature: 0.1,
113
140
  topP: 1,
114
141
  });
142
+ expect(mockModelConfigService.getResolvedConfig).toHaveBeenCalledWith({
143
+ model: 'gemini-pro',
144
+ });
115
145
  expect(mockModelConfigService.getResolvedConfig).toHaveBeenCalledWith({
116
146
  model: 'gemini-flash',
117
147
  });
@@ -119,21 +149,29 @@ describe('policyHelpers', () => {
119
149
  });
120
150
  it('consumes sticky attempt if indicated', () => {
121
151
  const config = createExtendedMockConfig();
152
+ mockModelConfigService.getResolvedConfig.mockReturnValue({
153
+ model: 'gemini-pro',
154
+ generateContentConfig: {},
155
+ });
122
156
  mockAvailabilityService.selectFirstAvailable.mockReturnValue({
123
157
  selectedModel: 'gemini-pro',
124
158
  attempts: 1,
125
159
  });
126
- const result = applyModelSelection(config, 'gemini-pro');
160
+ const result = applyModelSelection(config, { model: 'gemini-pro' });
127
161
  expect(mockAvailabilityService.consumeStickyAttempt).toHaveBeenCalledWith('gemini-pro');
128
162
  expect(result.maxAttempts).toBe(1);
129
163
  });
130
164
  it('does not consume sticky attempt if consumeAttempt is false', () => {
131
165
  const config = createExtendedMockConfig();
166
+ mockModelConfigService.getResolvedConfig.mockReturnValue({
167
+ model: 'gemini-pro',
168
+ generateContentConfig: {},
169
+ });
132
170
  mockAvailabilityService.selectFirstAvailable.mockReturnValue({
133
171
  selectedModel: 'gemini-pro',
134
172
  attempts: 1,
135
173
  });
136
- const result = applyModelSelection(config, 'gemini-pro', undefined, undefined, {
174
+ const result = applyModelSelection(config, { model: 'gemini-pro' }, {
137
175
  consumeAttempt: false,
138
176
  });
139
177
  expect(mockAvailabilityService.consumeStickyAttempt).not.toHaveBeenCalled();
@@ -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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"}
@@ -68,7 +68,7 @@ async function initOauthClient(authType, config) {
68
68
  const auth = new GoogleAuth({
69
69
  scopes: OAUTH_SCOPE,
70
70
  });
71
- const byoidClient = await auth.fromJSON({
71
+ const byoidClient = auth.fromJSON({
72
72
  ...credentials,
73
73
  refresh_token: credentials.refresh_token ?? undefined,
74
74
  });