@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.
- package/dist/google-gemini-cli-core-0.21.0-nightly.20251218.739c02bd6.tgz +0 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/src/agents/codebase-investigator.d.ts +2 -2
- package/dist/src/agents/codebase-investigator.js +6 -5
- package/dist/src/agents/codebase-investigator.js.map +1 -1
- package/dist/src/agents/codebase-investigator.test.js +2 -2
- package/dist/src/agents/codebase-investigator.test.js.map +1 -1
- package/dist/src/agents/delegate-to-agent-tool.js +8 -4
- package/dist/src/agents/delegate-to-agent-tool.js.map +1 -1
- package/dist/src/agents/delegate-to-agent-tool.test.js +5 -4
- package/dist/src/agents/delegate-to-agent-tool.test.js.map +1 -1
- package/dist/src/agents/{executor.d.ts → local-executor.d.ts} +5 -11
- package/dist/src/agents/{executor.js → local-executor.js} +75 -51
- package/dist/src/agents/local-executor.js.map +1 -0
- package/dist/src/agents/{executor.test.js → local-executor.test.js} +61 -45
- package/dist/src/agents/local-executor.test.js.map +1 -0
- package/dist/src/agents/{invocation.d.ts → local-invocation.d.ts} +5 -6
- package/dist/src/agents/{invocation.js → local-invocation.js} +8 -9
- package/dist/src/agents/local-invocation.js.map +1 -0
- package/dist/src/agents/{invocation.test.js → local-invocation.test.js} +18 -17
- package/dist/src/agents/local-invocation.test.js.map +1 -0
- package/dist/src/agents/registry.d.ts +1 -0
- package/dist/src/agents/registry.js +77 -28
- package/dist/src/agents/registry.js.map +1 -1
- package/dist/src/agents/registry.test.js +130 -5
- package/dist/src/agents/registry.test.js.map +1 -1
- package/dist/src/agents/remote-invocation.d.ts +21 -0
- package/dist/src/agents/remote-invocation.js +31 -0
- package/dist/src/agents/remote-invocation.js.map +1 -0
- package/dist/src/agents/remote-invocation.test.d.ts +6 -0
- package/dist/src/agents/remote-invocation.test.js +35 -0
- package/dist/src/agents/remote-invocation.test.js.map +1 -0
- package/dist/src/agents/subagent-tool-wrapper.js +7 -3
- package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
- package/dist/src/agents/subagent-tool-wrapper.test.js +10 -9
- package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
- package/dist/src/agents/toml-loader.d.ts +65 -0
- package/dist/src/agents/toml-loader.js +176 -0
- package/dist/src/agents/toml-loader.js.map +1 -0
- package/dist/src/agents/toml-loader.test.d.ts +6 -0
- package/dist/src/agents/toml-loader.test.js +190 -0
- package/dist/src/agents/toml-loader.test.js.map +1 -0
- package/dist/src/agents/types.d.ts +12 -4
- package/dist/src/availability/modelAvailabilityService.d.ts +2 -1
- package/dist/src/availability/policyCatalog.d.ts +1 -0
- package/dist/src/availability/policyCatalog.js +6 -8
- package/dist/src/availability/policyCatalog.js.map +1 -1
- package/dist/src/availability/policyCatalog.test.js +2 -2
- package/dist/src/availability/policyCatalog.test.js.map +1 -1
- package/dist/src/availability/policyHelpers.d.ts +9 -5
- package/dist/src/availability/policyHelpers.js +43 -37
- package/dist/src/availability/policyHelpers.js.map +1 -1
- package/dist/src/availability/policyHelpers.test.js +58 -20
- package/dist/src/availability/policyHelpers.test.js.map +1 -1
- package/dist/src/code_assist/oauth2.js +1 -1
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +6 -8
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/code_assist/server.js +3 -9
- package/dist/src/code_assist/server.js.map +1 -1
- package/dist/src/code_assist/server.test.js +18 -3
- package/dist/src/code_assist/server.test.js.map +1 -1
- package/dist/src/code_assist/telemetry.d.ts +6 -1
- package/dist/src/code_assist/telemetry.js +92 -3
- package/dist/src/code_assist/telemetry.js.map +1 -1
- package/dist/src/code_assist/telemetry.test.js +206 -18
- package/dist/src/code_assist/telemetry.test.js.map +1 -1
- package/dist/src/config/config.d.ts +9 -13
- package/dist/src/config/config.js +68 -38
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +134 -22
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/defaultModelConfigs.js +11 -0
- package/dist/src/config/defaultModelConfigs.js.map +1 -1
- package/dist/src/config/flashFallback.test.js +0 -37
- package/dist/src/config/flashFallback.test.js.map +1 -1
- package/dist/src/config/models.d.ts +23 -10
- package/dist/src/config/models.js +65 -23
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/models.test.js +57 -76
- package/dist/src/config/models.test.js.map +1 -1
- package/dist/src/config/storage.d.ts +2 -0
- package/dist/src/config/storage.js +6 -0
- package/dist/src/config/storage.js.map +1 -1
- package/dist/src/config/storage.test.js +8 -0
- package/dist/src/config/storage.test.js.map +1 -1
- package/dist/src/core/baseLlmClient.d.ts +3 -1
- package/dist/src/core/baseLlmClient.js +51 -43
- package/dist/src/core/baseLlmClient.js.map +1 -1
- package/dist/src/core/baseLlmClient.test.js +12 -19
- package/dist/src/core/baseLlmClient.test.js.map +1 -1
- package/dist/src/core/client.js +18 -33
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +14 -65
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.js +1 -1
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.js +0 -6
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/geminiChat.js +29 -88
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +35 -257
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/core/geminiChat_network_retry.test.js +6 -6
- package/dist/src/core/geminiChat_network_retry.test.js.map +1 -1
- package/dist/src/core/prompts.js +6 -7
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/core/prompts.test.js +10 -7
- package/dist/src/core/prompts.test.js.map +1 -1
- package/dist/src/core/turn.d.ts +1 -0
- package/dist/src/core/turn.js +3 -2
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/fallback/handler.js +54 -121
- package/dist/src/fallback/handler.js.map +1 -1
- package/dist/src/fallback/handler.test.js +80 -285
- package/dist/src/fallback/handler.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/hooks/hookPlanner.js +3 -1
- package/dist/src/hooks/hookPlanner.js.map +1 -1
- package/dist/src/hooks/hookPlanner.test.js +61 -0
- package/dist/src/hooks/hookPlanner.test.js.map +1 -1
- package/dist/src/hooks/hookRegistry.d.ts +1 -1
- package/dist/src/hooks/hookRegistry.js +2 -2
- package/dist/src/hooks/hookRegistry.js.map +1 -1
- package/dist/src/hooks/hookRegistry.test.js +73 -0
- package/dist/src/hooks/hookRegistry.test.js.map +1 -1
- package/dist/src/hooks/hookRunner.js +2 -2
- package/dist/src/hooks/hookRunner.js.map +1 -1
- package/dist/src/hooks/hookRunner.test.js +23 -0
- package/dist/src/hooks/hookRunner.test.js.map +1 -1
- package/dist/src/hooks/types.d.ts +2 -0
- package/dist/src/hooks/types.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/routing/modelRouterService.js +0 -15
- package/dist/src/routing/modelRouterService.js.map +1 -1
- package/dist/src/routing/modelRouterService.test.js +0 -62
- package/dist/src/routing/modelRouterService.test.js.map +1 -1
- package/dist/src/routing/strategies/classifierStrategy.js +10 -21
- package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
- package/dist/src/routing/strategies/classifierStrategy.test.js +2 -1
- package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
- package/dist/src/routing/strategies/fallbackStrategy.js +20 -12
- package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
- package/dist/src/routing/strategies/fallbackStrategy.test.js +63 -39
- package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -1
- package/dist/src/routing/strategies/overrideStrategy.js +4 -3
- package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
- package/dist/src/services/chatCompressionService.js +3 -1
- package/dist/src/services/chatCompressionService.js.map +1 -1
- package/dist/src/services/loopDetectionService.js +2 -1
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/loopDetectionService.test.js +14 -8
- package/dist/src/services/loopDetectionService.test.js.map +1 -1
- package/dist/src/services/modelConfig.integration.test.js +1 -1
- package/dist/src/services/modelConfig.integration.test.js.map +1 -1
- package/dist/src/services/shellExecutionService.js +18 -2
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/test-data/resolved-aliases-retry.golden.json +16 -0
- package/dist/src/services/test-data/resolved-aliases.golden.json +16 -0
- package/dist/src/telemetry/sdk.js +2 -2
- package/dist/src/telemetry/sdk.js.map +1 -1
- package/dist/src/tools/ripGrep.js +2 -2
- package/dist/src/tools/ripGrep.js.map +1 -1
- package/dist/src/tools/tool-names.d.ts +13 -0
- package/dist/src/tools/tool-names.js +54 -0
- package/dist/src/tools/tool-names.js.map +1 -1
- package/dist/src/tools/tool-names.test.d.ts +6 -0
- package/dist/src/tools/tool-names.test.js +43 -0
- package/dist/src/tools/tool-names.test.js.map +1 -0
- package/dist/src/tools/tool-registry.d.ts +0 -1
- package/dist/src/tools/tool-registry.js +1 -1
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +2 -1
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/utils/checkpointUtils.js +1 -1
- package/dist/src/utils/checkpointUtils.js.map +1 -1
- package/dist/src/utils/checkpointUtils.test.js +1 -1
- package/dist/src/utils/checkpointUtils.test.js.map +1 -1
- package/dist/src/utils/editCorrector.js +1 -1
- package/dist/src/utils/editCorrector.js.map +1 -1
- package/dist/src/utils/editCorrector.test.js +2 -2
- package/dist/src/utils/editCorrector.test.js.map +1 -1
- package/dist/src/utils/environmentContext.d.ts +1 -0
- package/dist/src/utils/environmentContext.js +1 -0
- package/dist/src/utils/environmentContext.js.map +1 -1
- package/dist/src/utils/events.d.ts +0 -16
- package/dist/src/utils/events.js +0 -9
- package/dist/src/utils/events.js.map +1 -1
- package/dist/src/utils/flashFallback.test.js +1 -1
- package/dist/src/utils/flashFallback.test.js.map +1 -1
- package/dist/src/utils/googleQuotaErrors.js +20 -0
- package/dist/src/utils/googleQuotaErrors.js.map +1 -1
- package/dist/src/utils/googleQuotaErrors.test.js +53 -2
- package/dist/src/utils/googleQuotaErrors.test.js.map +1 -1
- package/dist/src/utils/retry.js +2 -16
- package/dist/src/utils/retry.js.map +1 -1
- package/dist/src/utils/retry.test.js +7 -22
- package/dist/src/utils/retry.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -6
- package/dist/google-gemini-cli-core-0.21.0-nightly.20251216.bb0c0d8ee.tgz +0 -0
- package/dist/src/agents/executor.js.map +0 -1
- package/dist/src/agents/executor.test.js.map +0 -1
- package/dist/src/agents/invocation.js.map +0 -1
- package/dist/src/agents/invocation.test.js.map +0 -1
- /package/dist/src/agents/{executor.test.d.ts → local-executor.test.d.ts} +0 -0
- /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
|
|
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
|
-
|
|
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
|
-
|
|
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":"AAAA;;;;GAIG;AAQH,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAc7B,MAAM,eAAe,GAAyB;IAC5C,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,QAAQ;IACnB,OAAO,EAAE,QAAQ;CAClB,CAAC;AAEF,MAAM,aAAa,GAAwB;IACzC,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,UAAU;IACrB,OAAO,EAAE,UAAU;CACpB,CAAC;AAEF,MAAM,aAAa,GAAqB;IACtC,YAAY,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC7C,YAAY,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;CACxE,CAAC;AAEF,MAAM,aAAa,GAAqB;IACtC,YAAY,CAAC
|
|
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(
|
|
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('
|
|
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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,KAAK,GAAG,mBAAmB,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,KAAK,GAAG,mBAAmB,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,aAAa,CAAC,GAAG,mBAAmB,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACvD,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,
|
|
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
|
|
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,
|
|
45
|
+
export declare function applyModelSelection(config: Config, modelConfigKey: ModelConfigKey, options?: {
|
|
42
46
|
consumeAttempt?: boolean;
|
|
43
47
|
}): {
|
|
44
48
|
model: string;
|
|
45
|
-
config
|
|
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,
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
25
|
-
|
|
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
|
|
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,
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
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
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
-
|
|
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:
|
|
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":"AAAA;;;;GAIG;AAWH,OAAO,
|
|
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('
|
|
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: () =>
|
|
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
|
-
|
|
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'
|
|
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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
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 =
|
|
71
|
+
const byoidClient = auth.fromJSON({
|
|
72
72
|
...credentials,
|
|
73
73
|
refresh_token: credentials.refresh_token ?? undefined,
|
|
74
74
|
});
|