@google/gemini-cli-core 0.21.0-nightly.20251217.db643e916 → 0.21.0-nightly.20251218.739c02bd6
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.20251216.bb0c0d8ee.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 -5
- package/dist/src/agents/{executor.js → local-executor.js} +7 -7
- package/dist/src/agents/local-executor.js.map +1 -0
- package/dist/src/agents/local-executor.test.d.ts +12 -0
- package/dist/src/agents/{executor.test.js → local-executor.test.js} +40 -39
- 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.js +35 -24
- package/dist/src/agents/registry.js.map +1 -1
- package/dist/src/agents/registry.test.js +34 -4
- 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.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/types.d.ts +12 -4
- 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 +6 -13
- package/dist/src/config/config.js +61 -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/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/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/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/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/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 -1
- 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-invocation.test.d.ts} +0 -0
- /package/dist/src/agents/{invocation.test.d.ts → remote-invocation.test.d.ts} +0 -0
package/dist/src/core/turn.js
CHANGED
|
@@ -91,7 +91,7 @@ export class Turn {
|
|
|
91
91
|
// Handle function calls (requesting tool execution)
|
|
92
92
|
const functionCalls = resp.functionCalls ?? [];
|
|
93
93
|
for (const fnCall of functionCalls) {
|
|
94
|
-
const event = this.handlePendingFunctionCall(fnCall);
|
|
94
|
+
const event = this.handlePendingFunctionCall(fnCall, traceId);
|
|
95
95
|
if (event) {
|
|
96
96
|
yield event;
|
|
97
97
|
}
|
|
@@ -155,7 +155,7 @@ export class Turn {
|
|
|
155
155
|
return;
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
|
-
handlePendingFunctionCall(fnCall) {
|
|
158
|
+
handlePendingFunctionCall(fnCall, traceId) {
|
|
159
159
|
const callId = fnCall.id ??
|
|
160
160
|
`${fnCall.name}-${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
161
161
|
const name = fnCall.name || 'undefined_tool_name';
|
|
@@ -166,6 +166,7 @@ export class Turn {
|
|
|
166
166
|
args,
|
|
167
167
|
isClientInitiated: false,
|
|
168
168
|
prompt_id: this.prompt_id,
|
|
169
|
+
traceId,
|
|
169
170
|
};
|
|
170
171
|
this.pendingToolCalls.push(toolCallRequest);
|
|
171
172
|
// Yield a request for the tool call, not the pending/confirming status
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn.js","sourceRoot":"","sources":["../../../src/core/turn.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAuB,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAiB5E,MAAM,CAAN,IAAY,eAiBX;AAjBD,WAAY,eAAe;IACzB,sCAAmB,CAAA;IACnB,wDAAqC,CAAA;IACrC,0DAAuC,CAAA;IACvC,kEAA+C,CAAA;IAC/C,mDAAgC,CAAA;IAChC,kCAAe,CAAA;IACf,qDAAkC,CAAA;IAClC,sCAAmB,CAAA;IACnB,wDAAqC,CAAA;IACrC,wCAAqB,CAAA;IACrB,iDAA8B,CAAA;IAC9B,wCAAqB,CAAA;IACrB,kCAAe,CAAA;IACf,6EAA0D,CAAA;IAC1D,mDAAgC,CAAA;IAChC,2CAAwB,CAAA;AAC1B,CAAC,EAjBW,eAAe,KAAf,eAAe,QAiB1B;
|
|
1
|
+
{"version":3,"file":"turn.js","sourceRoot":"","sources":["../../../src/core/turn.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,64 +4,14 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { AuthType } from '../core/contentGenerator.js';
|
|
7
|
-
import { DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_MODEL, PREVIEW_GEMINI_MODEL, } from '../config/models.js';
|
|
8
|
-
import { logFlashFallback, FlashFallbackEvent } from '../telemetry/index.js';
|
|
9
7
|
import { openBrowserSecurely } from '../utils/secure-browser-launcher.js';
|
|
10
8
|
import { debugLogger } from '../utils/debugLogger.js';
|
|
11
9
|
import { getErrorMessage } from '../utils/errors.js';
|
|
12
|
-
import { ModelNotFoundError } from '../utils/httpErrors.js';
|
|
13
|
-
import { TerminalQuotaError } from '../utils/googleQuotaErrors.js';
|
|
14
|
-
import { coreEvents } from '../utils/events.js';
|
|
15
10
|
import { classifyFailureKind } from '../availability/errorClassification.js';
|
|
16
|
-
import { buildFallbackPolicyContext, resolvePolicyChain, resolvePolicyAction, } from '../availability/policyHelpers.js';
|
|
11
|
+
import { buildFallbackPolicyContext, resolvePolicyChain, resolvePolicyAction, applyAvailabilityTransition, } from '../availability/policyHelpers.js';
|
|
17
12
|
const UPGRADE_URL_PAGE = 'https://goo.gle/set-up-gemini-code-assist';
|
|
18
13
|
export async function handleFallback(config, failedModel, authType, error) {
|
|
19
|
-
|
|
20
|
-
return handlePolicyDrivenFallback(config, failedModel, authType, error);
|
|
21
|
-
}
|
|
22
|
-
return legacyHandleFallback(config, failedModel, authType, error);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Old fallback logic relying on hard coded strings
|
|
26
|
-
*/
|
|
27
|
-
async function legacyHandleFallback(config, failedModel, authType, error) {
|
|
28
|
-
if (authType !== AuthType.LOGIN_WITH_GOOGLE)
|
|
29
|
-
return null;
|
|
30
|
-
// Guardrail: If it's a ModelNotFoundError but NOT the preview model, do not handle it.
|
|
31
|
-
if (error instanceof ModelNotFoundError &&
|
|
32
|
-
failedModel !== PREVIEW_GEMINI_MODEL) {
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
const shouldActivatePreviewFallback = failedModel === PREVIEW_GEMINI_MODEL &&
|
|
36
|
-
!(error instanceof TerminalQuotaError);
|
|
37
|
-
// Preview Model Specific Logic
|
|
38
|
-
if (shouldActivatePreviewFallback) {
|
|
39
|
-
// Always set bypass mode for the immediate retry, for non-TerminalQuotaErrors.
|
|
40
|
-
// This ensures the next attempt uses 2.5 Pro.
|
|
41
|
-
config.setPreviewModelBypassMode(true);
|
|
42
|
-
// If we are already in Preview Model fallback mode (user previously said "Always"),
|
|
43
|
-
// we silently retry (which will use 2.5 Pro due to bypass mode).
|
|
44
|
-
if (config.isPreviewModelFallbackMode()) {
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
const fallbackModel = shouldActivatePreviewFallback
|
|
49
|
-
? DEFAULT_GEMINI_MODEL
|
|
50
|
-
: DEFAULT_GEMINI_FLASH_MODEL;
|
|
51
|
-
// Consult UI Handler for Intent
|
|
52
|
-
const fallbackModelHandler = config.fallbackModelHandler;
|
|
53
|
-
if (typeof fallbackModelHandler !== 'function')
|
|
54
|
-
return null;
|
|
55
|
-
try {
|
|
56
|
-
// Pass the specific failed model to the UI handler.
|
|
57
|
-
const intent = await fallbackModelHandler(failedModel, fallbackModel, error);
|
|
58
|
-
// Process Intent and Update State
|
|
59
|
-
return await processIntent(config, intent, failedModel, fallbackModel, authType, error);
|
|
60
|
-
}
|
|
61
|
-
catch (handlerError) {
|
|
62
|
-
console.error('Fallback UI handler failed:', handlerError);
|
|
63
|
-
return null;
|
|
64
|
-
}
|
|
14
|
+
return handlePolicyDrivenFallback(config, failedModel, authType, error);
|
|
65
15
|
}
|
|
66
16
|
/**
|
|
67
17
|
* New fallback logic using the ModelAvailabilityService
|
|
@@ -73,39 +23,58 @@ async function handlePolicyDrivenFallback(config, failedModel, authType, error)
|
|
|
73
23
|
const chain = resolvePolicyChain(config);
|
|
74
24
|
const { failedPolicy, candidates } = buildFallbackPolicyContext(chain, failedModel);
|
|
75
25
|
const failureKind = classifyFailureKind(error);
|
|
76
|
-
if (!candidates.length) {
|
|
77
|
-
return null;
|
|
78
|
-
}
|
|
79
26
|
const availability = config.getModelAvailabilityService();
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
if (!fallbackModel || fallbackModel === failedModel || !selectedPolicy) {
|
|
85
|
-
return null;
|
|
86
|
-
}
|
|
87
|
-
// failureKind is already declared and calculated above
|
|
88
|
-
const action = resolvePolicyAction(failureKind, selectedPolicy);
|
|
89
|
-
if (action === 'silent') {
|
|
90
|
-
return processIntent(config, 'retry_always', failedModel, fallbackModel, authType, error);
|
|
91
|
-
}
|
|
92
|
-
// This will be used in the future when FallbackRecommendation is passed through UI
|
|
93
|
-
const recommendation = {
|
|
94
|
-
...selection,
|
|
95
|
-
selectedModel: fallbackModel,
|
|
96
|
-
action,
|
|
97
|
-
failureKind,
|
|
98
|
-
failedPolicy,
|
|
99
|
-
selectedPolicy,
|
|
27
|
+
const getAvailabilityContext = () => {
|
|
28
|
+
if (!failedPolicy)
|
|
29
|
+
return undefined;
|
|
30
|
+
return { service: availability, policy: failedPolicy };
|
|
100
31
|
};
|
|
101
|
-
|
|
32
|
+
let fallbackModel;
|
|
33
|
+
if (!candidates.length) {
|
|
34
|
+
fallbackModel = failedModel;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const selection = availability.selectFirstAvailable(candidates.map((policy) => policy.model));
|
|
38
|
+
const lastResortPolicy = candidates.find((policy) => policy.isLastResort);
|
|
39
|
+
const selectedFallbackModel = selection.selectedModel ?? lastResortPolicy?.model;
|
|
40
|
+
const selectedPolicy = candidates.find((policy) => policy.model === selectedFallbackModel);
|
|
41
|
+
if (!selectedFallbackModel ||
|
|
42
|
+
selectedFallbackModel === failedModel ||
|
|
43
|
+
!selectedPolicy) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
fallbackModel = selectedFallbackModel;
|
|
47
|
+
// failureKind is already declared and calculated above
|
|
48
|
+
const action = resolvePolicyAction(failureKind, selectedPolicy);
|
|
49
|
+
if (action === 'silent') {
|
|
50
|
+
applyAvailabilityTransition(getAvailabilityContext, failureKind);
|
|
51
|
+
return processIntent(config, 'retry_always', fallbackModel);
|
|
52
|
+
}
|
|
53
|
+
// This will be used in the future when FallbackRecommendation is passed through UI
|
|
54
|
+
const recommendation = {
|
|
55
|
+
...selection,
|
|
56
|
+
selectedModel: fallbackModel,
|
|
57
|
+
action,
|
|
58
|
+
failureKind,
|
|
59
|
+
failedPolicy,
|
|
60
|
+
selectedPolicy,
|
|
61
|
+
};
|
|
62
|
+
void recommendation;
|
|
63
|
+
}
|
|
102
64
|
const handler = config.getFallbackModelHandler();
|
|
103
65
|
if (typeof handler !== 'function') {
|
|
104
66
|
return null;
|
|
105
67
|
}
|
|
106
68
|
try {
|
|
107
69
|
const intent = await handler(failedModel, fallbackModel, error);
|
|
108
|
-
|
|
70
|
+
// If the user chose to switch/retry, we apply the availability transition
|
|
71
|
+
// to the failed model (e.g. marking it terminal if it had a quota error).
|
|
72
|
+
// We DO NOT apply it if the user chose 'stop' or 'retry_later', allowing
|
|
73
|
+
// them to try again later with the same model state.
|
|
74
|
+
if (intent === 'retry_always' || intent === 'retry_once') {
|
|
75
|
+
applyAvailabilityTransition(getAvailabilityContext, failureKind);
|
|
76
|
+
}
|
|
77
|
+
return await processIntent(config, intent, fallbackModel);
|
|
109
78
|
}
|
|
110
79
|
catch (handlerError) {
|
|
111
80
|
debugLogger.error('Fallback handler failed:', handlerError);
|
|
@@ -120,41 +89,20 @@ async function handleUpgrade() {
|
|
|
120
89
|
debugLogger.warn('Failed to open browser automatically:', getErrorMessage(error));
|
|
121
90
|
}
|
|
122
91
|
}
|
|
123
|
-
async function processIntent(config, intent,
|
|
124
|
-
const isAvailabilityEnabled = config.isModelAvailabilityServiceEnabled();
|
|
92
|
+
async function processIntent(config, intent, fallbackModel) {
|
|
125
93
|
switch (intent) {
|
|
126
94
|
case 'retry_always':
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
config.setActiveModel(fallbackModel);
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
// If the error is non-retryable, e.g. TerminalQuota Error, trigger a regular fallback to flash.
|
|
134
|
-
// For all other errors, activate previewModel fallback.
|
|
135
|
-
if (failedModel === PREVIEW_GEMINI_MODEL &&
|
|
136
|
-
!(error instanceof TerminalQuotaError)) {
|
|
137
|
-
activatePreviewModelFallbackMode(config);
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
activateFallbackMode(config, authType);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
95
|
+
// TODO(telemetry): Implement generic fallback event logging. Existing
|
|
96
|
+
// logFlashFallback is specific to a single Model.
|
|
97
|
+
config.setActiveModel(fallbackModel);
|
|
143
98
|
return true;
|
|
144
99
|
case 'retry_once':
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
100
|
+
// For distinct retry (retry_once), we do NOT set the active model permanently.
|
|
101
|
+
// The FallbackStrategy will handle routing to the available model for this turn
|
|
102
|
+
// based on the availability service state (which is updated before this).
|
|
148
103
|
return true;
|
|
149
104
|
case 'stop':
|
|
150
|
-
|
|
151
|
-
// TODO(telemetry): Implement generic fallback event logging. Existing
|
|
152
|
-
// logFlashFallback is specific to a single Model.
|
|
153
|
-
config.setActiveModel(fallbackModel);
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
activateFallbackMode(config, authType);
|
|
157
|
-
}
|
|
105
|
+
// Do not switch model on stop. User wants to stay on current model (and stop).
|
|
158
106
|
return false;
|
|
159
107
|
case 'retry_later':
|
|
160
108
|
return false;
|
|
@@ -165,19 +113,4 @@ async function processIntent(config, intent, failedModel, fallbackModel, authTyp
|
|
|
165
113
|
throw new Error(`Unexpected fallback intent received from fallbackModelHandler: "${intent}"`);
|
|
166
114
|
}
|
|
167
115
|
}
|
|
168
|
-
function activateFallbackMode(config, authType) {
|
|
169
|
-
if (!config.isInFallbackMode()) {
|
|
170
|
-
config.setFallbackMode(true);
|
|
171
|
-
coreEvents.emitFallbackModeChanged(true);
|
|
172
|
-
if (authType) {
|
|
173
|
-
logFlashFallback(config, new FlashFallbackEvent(authType));
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
function activatePreviewModelFallbackMode(config) {
|
|
178
|
-
if (!config.isPreviewModelFallbackMode()) {
|
|
179
|
-
config.setPreviewModelFallbackMode(true);
|
|
180
|
-
// We might want a specific event for Preview Model fallback, but for now we just set the mode.
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
116
|
//# sourceMappingURL=handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/fallback/handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/fallback/handler.ts"],"names":[],"mappings":"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"}
|