@google/gemini-cli-core 0.9.0-nightly.20251003.2ab61dd1 → 0.9.0-nightly.20251005.7f8537a1

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 (66) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.js +1 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/src/agents/codebase-investigator.d.ts +36 -1
  5. package/dist/src/agents/codebase-investigator.js +54 -89
  6. package/dist/src/agents/codebase-investigator.js.map +1 -1
  7. package/dist/src/agents/executor.d.ts +4 -3
  8. package/dist/src/agents/executor.js +35 -5
  9. package/dist/src/agents/executor.js.map +1 -1
  10. package/dist/src/agents/executor.test.js +7 -11
  11. package/dist/src/agents/executor.test.js.map +1 -1
  12. package/dist/src/agents/invocation.d.ts +3 -2
  13. package/dist/src/agents/invocation.js +1 -0
  14. package/dist/src/agents/invocation.js.map +1 -1
  15. package/dist/src/agents/invocation.test.js +1 -0
  16. package/dist/src/agents/invocation.test.js.map +1 -1
  17. package/dist/src/agents/registry.d.ts +2 -1
  18. package/dist/src/agents/registry.js +2 -0
  19. package/dist/src/agents/registry.js.map +1 -1
  20. package/dist/src/agents/types.d.ts +15 -5
  21. package/dist/src/agents/types.js +1 -0
  22. package/dist/src/agents/types.js.map +1 -1
  23. package/dist/src/core/geminiChat.js +1 -14
  24. package/dist/src/core/geminiChat.js.map +1 -1
  25. package/dist/src/core/geminiChat.test.js +14 -18
  26. package/dist/src/core/geminiChat.test.js.map +1 -1
  27. package/dist/src/generated/git-commit.d.ts +2 -2
  28. package/dist/src/generated/git-commit.js +2 -2
  29. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +0 -8
  30. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  31. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +2 -2
  32. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +4 -4
  33. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  34. package/dist/src/tools/mcp-client.d.ts +3 -2
  35. package/dist/src/tools/mcp-client.js +25 -30
  36. package/dist/src/tools/mcp-client.js.map +1 -1
  37. package/dist/src/tools/mcp-client.test.js +110 -7
  38. package/dist/src/tools/mcp-client.test.js.map +1 -1
  39. package/dist/src/utils/errorParsing.d.ts +1 -1
  40. package/dist/src/utils/errorParsing.js +5 -33
  41. package/dist/src/utils/errorParsing.js.map +1 -1
  42. package/dist/src/utils/errorParsing.test.js +0 -88
  43. package/dist/src/utils/errorParsing.test.js.map +1 -1
  44. package/dist/src/utils/flashFallback.test.js +26 -45
  45. package/dist/src/utils/flashFallback.test.js.map +1 -1
  46. package/dist/src/utils/googleErrors.d.ts +104 -0
  47. package/dist/src/utils/googleErrors.js +108 -0
  48. package/dist/src/utils/googleErrors.js.map +1 -0
  49. package/dist/src/utils/googleErrors.test.d.ts +6 -0
  50. package/dist/src/utils/googleErrors.test.js +212 -0
  51. package/dist/src/utils/googleErrors.test.js.map +1 -0
  52. package/dist/src/utils/googleQuotaErrors.d.ts +35 -0
  53. package/dist/src/utils/googleQuotaErrors.js +108 -0
  54. package/dist/src/utils/googleQuotaErrors.js.map +1 -0
  55. package/dist/src/utils/googleQuotaErrors.test.d.ts +6 -0
  56. package/dist/src/utils/googleQuotaErrors.test.js +189 -0
  57. package/dist/src/utils/googleQuotaErrors.test.js.map +1 -0
  58. package/dist/src/utils/quotaErrorDetection.d.ts +0 -2
  59. package/dist/src/utils/quotaErrorDetection.js +0 -46
  60. package/dist/src/utils/quotaErrorDetection.js.map +1 -1
  61. package/dist/src/utils/retry.js +40 -157
  62. package/dist/src/utils/retry.js.map +1 -1
  63. package/dist/src/utils/retry.test.js +85 -144
  64. package/dist/src/utils/retry.test.js.map +1 -1
  65. package/dist/tsconfig.tsbuildinfo +1 -1
  66. package/package.json +1 -1
@@ -0,0 +1,189 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, vi, afterEach } from 'vitest';
7
+ import { classifyGoogleError, RetryableQuotaError, TerminalQuotaError, } from './googleQuotaErrors.js';
8
+ import * as errorParser from './googleErrors.js';
9
+ describe('classifyGoogleError', () => {
10
+ afterEach(() => {
11
+ vi.restoreAllMocks();
12
+ });
13
+ it('should return original error if not a Google API error', () => {
14
+ const regularError = new Error('Something went wrong');
15
+ vi.spyOn(errorParser, 'parseGoogleApiError').mockReturnValue(null);
16
+ const result = classifyGoogleError(regularError);
17
+ expect(result).toBe(regularError);
18
+ });
19
+ it('should return original error if code is not 429', () => {
20
+ const apiError = {
21
+ code: 500,
22
+ message: 'Server error',
23
+ details: [],
24
+ };
25
+ vi.spyOn(errorParser, 'parseGoogleApiError').mockReturnValue(apiError);
26
+ const originalError = new Error();
27
+ const result = classifyGoogleError(originalError);
28
+ expect(result).toBe(originalError);
29
+ expect(result).not.toBeInstanceOf(TerminalQuotaError);
30
+ expect(result).not.toBeInstanceOf(RetryableQuotaError);
31
+ });
32
+ it('should return TerminalQuotaError for daily quota violations in QuotaFailure', () => {
33
+ const apiError = {
34
+ code: 429,
35
+ message: 'Quota exceeded',
36
+ details: [
37
+ {
38
+ '@type': 'type.googleapis.com/google.rpc.QuotaFailure',
39
+ violations: [
40
+ {
41
+ subject: 'user',
42
+ description: 'daily limit',
43
+ quotaId: 'RequestsPerDay-limit',
44
+ },
45
+ ],
46
+ },
47
+ ],
48
+ };
49
+ vi.spyOn(errorParser, 'parseGoogleApiError').mockReturnValue(apiError);
50
+ const result = classifyGoogleError(new Error());
51
+ expect(result).toBeInstanceOf(TerminalQuotaError);
52
+ expect(result.cause).toBe(apiError);
53
+ });
54
+ it('should return TerminalQuotaError for daily quota violations in ErrorInfo', () => {
55
+ const apiError = {
56
+ code: 429,
57
+ message: 'Quota exceeded',
58
+ details: [
59
+ {
60
+ '@type': 'type.googleapis.com/google.rpc.ErrorInfo',
61
+ reason: 'QUOTA_EXCEEDED',
62
+ domain: 'googleapis.com',
63
+ metadata: {
64
+ quota_limit: 'RequestsPerDay_PerProject_PerUser',
65
+ },
66
+ },
67
+ ],
68
+ };
69
+ vi.spyOn(errorParser, 'parseGoogleApiError').mockReturnValue(apiError);
70
+ const result = classifyGoogleError(new Error());
71
+ expect(result).toBeInstanceOf(TerminalQuotaError);
72
+ });
73
+ it('should return TerminalQuotaError for long retry delays', () => {
74
+ const apiError = {
75
+ code: 429,
76
+ message: 'Too many requests',
77
+ details: [
78
+ {
79
+ '@type': 'type.googleapis.com/google.rpc.RetryInfo',
80
+ retryDelay: '301s', // > 5 minutes
81
+ },
82
+ ],
83
+ };
84
+ vi.spyOn(errorParser, 'parseGoogleApiError').mockReturnValue(apiError);
85
+ const result = classifyGoogleError(new Error());
86
+ expect(result).toBeInstanceOf(TerminalQuotaError);
87
+ });
88
+ it('should return RetryableQuotaError for short retry delays', () => {
89
+ const apiError = {
90
+ code: 429,
91
+ message: 'Too many requests',
92
+ details: [
93
+ {
94
+ '@type': 'type.googleapis.com/google.rpc.RetryInfo',
95
+ retryDelay: '45.123s',
96
+ },
97
+ ],
98
+ };
99
+ vi.spyOn(errorParser, 'parseGoogleApiError').mockReturnValue(apiError);
100
+ const result = classifyGoogleError(new Error());
101
+ expect(result).toBeInstanceOf(RetryableQuotaError);
102
+ expect(result.retryDelayMs).toBe(45123);
103
+ });
104
+ it('should return RetryableQuotaError for per-minute quota violations in QuotaFailure', () => {
105
+ const apiError = {
106
+ code: 429,
107
+ message: 'Quota exceeded',
108
+ details: [
109
+ {
110
+ '@type': 'type.googleapis.com/google.rpc.QuotaFailure',
111
+ violations: [
112
+ {
113
+ subject: 'user',
114
+ description: 'per minute limit',
115
+ quotaId: 'RequestsPerMinute-limit',
116
+ },
117
+ ],
118
+ },
119
+ ],
120
+ };
121
+ vi.spyOn(errorParser, 'parseGoogleApiError').mockReturnValue(apiError);
122
+ const result = classifyGoogleError(new Error());
123
+ expect(result).toBeInstanceOf(RetryableQuotaError);
124
+ expect(result.retryDelayMs).toBe(60000);
125
+ });
126
+ it('should return RetryableQuotaError for per-minute quota violations in ErrorInfo', () => {
127
+ const apiError = {
128
+ code: 429,
129
+ message: 'Quota exceeded',
130
+ details: [
131
+ {
132
+ '@type': 'type.googleapis.com/google.rpc.ErrorInfo',
133
+ reason: 'QUOTA_EXCEEDED',
134
+ domain: 'googleapis.com',
135
+ metadata: {
136
+ quota_limit: 'RequestsPerMinute_PerProject_PerUser',
137
+ },
138
+ },
139
+ ],
140
+ };
141
+ vi.spyOn(errorParser, 'parseGoogleApiError').mockReturnValue(apiError);
142
+ const result = classifyGoogleError(new Error());
143
+ expect(result).toBeInstanceOf(RetryableQuotaError);
144
+ expect(result.retryDelayMs).toBe(60000);
145
+ });
146
+ it('should prioritize daily limit over retry info', () => {
147
+ const apiError = {
148
+ code: 429,
149
+ message: 'Quota exceeded',
150
+ details: [
151
+ {
152
+ '@type': 'type.googleapis.com/google.rpc.QuotaFailure',
153
+ violations: [
154
+ {
155
+ subject: 'user',
156
+ description: 'daily limit',
157
+ quotaId: 'RequestsPerDay-limit',
158
+ },
159
+ ],
160
+ },
161
+ {
162
+ '@type': 'type.googleapis.com/google.rpc.RetryInfo',
163
+ retryDelay: '10s',
164
+ },
165
+ ],
166
+ };
167
+ vi.spyOn(errorParser, 'parseGoogleApiError').mockReturnValue(apiError);
168
+ const result = classifyGoogleError(new Error());
169
+ expect(result).toBeInstanceOf(TerminalQuotaError);
170
+ });
171
+ it('should return original error for 429 without specific details', () => {
172
+ const apiError = {
173
+ code: 429,
174
+ message: 'Too many requests',
175
+ details: [
176
+ {
177
+ '@type': 'type.googleapis.com/google.rpc.DebugInfo',
178
+ detail: 'some debug info',
179
+ stackEntries: [],
180
+ },
181
+ ],
182
+ };
183
+ vi.spyOn(errorParser, 'parseGoogleApiError').mockReturnValue(apiError);
184
+ const originalError = new Error();
185
+ const result = classifyGoogleError(originalError);
186
+ expect(result).toBe(originalError);
187
+ });
188
+ });
189
+ //# sourceMappingURL=googleQuotaErrors.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"googleQuotaErrors.test.js","sourceRoot":"","sources":["../../../src/utils/googleQuotaErrors.test.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,3 @@ export interface ApiError {
14
14
  }
15
15
  export declare function isApiError(error: unknown): error is ApiError;
16
16
  export declare function isStructuredError(error: unknown): error is StructuredError;
17
- export declare function isProQuotaExceededError(error: unknown): boolean;
18
- export declare function isGenericQuotaExceededError(error: unknown): boolean;
@@ -16,50 +16,4 @@ export function isStructuredError(error) {
16
16
  'message' in error &&
17
17
  typeof error.message === 'string');
18
18
  }
19
- export function isProQuotaExceededError(error) {
20
- // Check for Pro quota exceeded errors by looking for the specific pattern
21
- // This will match patterns like:
22
- // - "Quota exceeded for quota metric 'Gemini 2.5 Pro Requests'"
23
- // - "Quota exceeded for quota metric 'Gemini 2.5-preview Pro Requests'"
24
- // We use string methods instead of regex to avoid ReDoS vulnerabilities
25
- const checkMessage = (message) => message.includes("Quota exceeded for quota metric 'Gemini") &&
26
- message.includes("Pro Requests'");
27
- if (typeof error === 'string') {
28
- return checkMessage(error);
29
- }
30
- if (isStructuredError(error)) {
31
- return checkMessage(error.message);
32
- }
33
- if (isApiError(error)) {
34
- return checkMessage(error.error.message);
35
- }
36
- // Check if it's a Gaxios error with response data
37
- if (error && typeof error === 'object' && 'response' in error) {
38
- const gaxiosError = error;
39
- if (gaxiosError.response && gaxiosError.response.data) {
40
- if (typeof gaxiosError.response.data === 'string') {
41
- return checkMessage(gaxiosError.response.data);
42
- }
43
- if (typeof gaxiosError.response.data === 'object' &&
44
- gaxiosError.response.data !== null &&
45
- 'error' in gaxiosError.response.data) {
46
- const errorData = gaxiosError.response.data;
47
- return checkMessage(errorData.error?.message || '');
48
- }
49
- }
50
- }
51
- return false;
52
- }
53
- export function isGenericQuotaExceededError(error) {
54
- if (typeof error === 'string') {
55
- return error.includes('Quota exceeded for quota metric');
56
- }
57
- if (isStructuredError(error)) {
58
- return error.message.includes('Quota exceeded for quota metric');
59
- }
60
- if (isApiError(error)) {
61
- return error.error.message.includes('Quota exceeded for quota metric');
62
- }
63
- return false;
64
- }
65
19
  //# sourceMappingURL=quotaErrorDetection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quotaErrorDetection.js","sourceRoot":"","sources":["../../../src/utils/quotaErrorDetection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,KAAK;QAChB,OAAQ,KAAkB,CAAC,KAAK,KAAK,QAAQ;QAC7C,SAAS,IAAK,KAAkB,CAAC,KAAK,CACvC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,SAAS,IAAI,KAAK;QAClB,OAAQ,KAAyB,CAAC,OAAO,KAAK,QAAQ,CACvD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,0EAA0E;IAC1E,iCAAiC;IACjC,gEAAgE;IAChE,wEAAwE;IACxE,wEAAwE;IAExE,MAAM,YAAY,GAAG,CAAC,OAAe,EAAW,EAAE,CAChD,OAAO,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QAC3D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAEpC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,kDAAkD;IAClD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;QAC9D,MAAM,WAAW,GAAG,KAInB,CAAC;QACF,IAAI,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtD,IAAI,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClD,OAAO,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjD,CAAC;YACD,IACE,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ;gBAC7C,WAAW,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI;gBAClC,OAAO,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,EACpC,CAAC;gBACD,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,IAEtC,CAAC;gBACF,OAAO,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"quotaErrorDetection.js","sourceRoot":"","sources":["../../../src/utils/quotaErrorDetection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,KAAK;QAChB,OAAQ,KAAkB,CAAC,KAAK,KAAK,QAAQ;QAC7C,SAAS,IAAK,KAAkB,CAAC,KAAK,CACvC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,SAAS,IAAI,KAAK;QAClB,OAAQ,KAAyB,CAAC,OAAO,KAAK,QAAQ,CACvD,CAAC;AACJ,CAAC"}
@@ -3,10 +3,11 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { ApiError } from '@google/genai';
6
7
  import { AuthType } from '../core/contentGenerator.js';
7
- import { isProQuotaExceededError, isGenericQuotaExceededError, } from './quotaErrorDetection.js';
8
+ import { classifyGoogleError, RetryableQuotaError, TerminalQuotaError, } from './googleQuotaErrors.js';
8
9
  const DEFAULT_RETRY_OPTIONS = {
9
- maxAttempts: 5,
10
+ maxAttempts: 10,
10
11
  initialDelayMs: 5000,
11
12
  maxDelayMs: 30000, // 30 seconds
12
13
  shouldRetryOnError: defaultShouldRetry,
@@ -18,18 +19,17 @@ const DEFAULT_RETRY_OPTIONS = {
18
19
  * @returns True if the error is a transient error, false otherwise.
19
20
  */
20
21
  function defaultShouldRetry(error) {
21
- // Check for common transient error status codes either in message or a status property
22
- if (error && typeof error.status === 'number') {
23
- const status = error.status;
24
- if (status === 429 || (status >= 500 && status < 600)) {
25
- return true;
26
- }
22
+ // Priority check for ApiError
23
+ if (error instanceof ApiError) {
24
+ // Explicitly do not retry 400 (Bad Request)
25
+ if (error.status === 400)
26
+ return false;
27
+ return error.status === 429 || (error.status >= 500 && error.status < 600);
27
28
  }
28
- if (error instanceof Error && error.message) {
29
- if (error.message.includes('429'))
30
- return true;
31
- if (error.message.match(/5\d{2}/))
32
- return true;
29
+ // Check for status using helper (handles other error shapes)
30
+ const status = getErrorStatus(error);
31
+ if (status !== undefined) {
32
+ return status === 429 || (status >= 500 && status < 600);
33
33
  }
34
34
  return false;
35
35
  }
@@ -61,7 +61,6 @@ export async function retryWithBackoff(fn, options) {
61
61
  };
62
62
  let attempt = 0;
63
63
  let currentDelay = initialDelayMs;
64
- let consecutive429Count = 0;
65
64
  while (attempt < maxAttempts) {
66
65
  attempt++;
67
66
  try {
@@ -77,114 +76,44 @@ export async function retryWithBackoff(fn, options) {
77
76
  return result;
78
77
  }
79
78
  catch (error) {
80
- const errorStatus = getErrorStatus(error);
81
- // Check for Pro quota exceeded error first - immediate fallback for OAuth users
82
- if (errorStatus === 429 &&
83
- authType === AuthType.LOGIN_WITH_GOOGLE &&
84
- isProQuotaExceededError(error) &&
85
- onPersistent429) {
86
- try {
87
- const fallbackModel = await onPersistent429(authType, error);
88
- if (fallbackModel !== false && fallbackModel !== null) {
89
- // Reset attempt counter and try with new model
90
- attempt = 0;
91
- consecutive429Count = 0;
92
- currentDelay = initialDelayMs;
93
- // With the model updated, we continue to the next attempt
94
- continue;
79
+ const classifiedError = classifyGoogleError(error);
80
+ if (classifiedError instanceof TerminalQuotaError) {
81
+ if (onPersistent429 && authType === AuthType.LOGIN_WITH_GOOGLE) {
82
+ try {
83
+ const fallbackModel = await onPersistent429(authType, classifiedError);
84
+ if (fallbackModel) {
85
+ attempt = 0; // Reset attempts and retry with the new model.
86
+ currentDelay = initialDelayMs;
87
+ continue;
88
+ }
95
89
  }
96
- else {
97
- // Fallback handler returned null/false, meaning don't continue - stop retry process
98
- throw error;
90
+ catch (fallbackError) {
91
+ console.warn('Model fallback failed:', fallbackError);
99
92
  }
100
93
  }
101
- catch (fallbackError) {
102
- // If fallback fails, continue with original error
103
- console.warn('Fallback to Flash model failed:', fallbackError);
104
- }
94
+ throw classifiedError; // Throw if no fallback or fallback failed.
105
95
  }
106
- // Check for generic quota exceeded error (but not Pro, which was handled above) - immediate fallback for OAuth users
107
- if (errorStatus === 429 &&
108
- authType === AuthType.LOGIN_WITH_GOOGLE &&
109
- !isProQuotaExceededError(error) &&
110
- isGenericQuotaExceededError(error) &&
111
- onPersistent429) {
112
- try {
113
- const fallbackModel = await onPersistent429(authType, error);
114
- if (fallbackModel !== false && fallbackModel !== null) {
115
- // Reset attempt counter and try with new model
116
- attempt = 0;
117
- consecutive429Count = 0;
118
- currentDelay = initialDelayMs;
119
- // With the model updated, we continue to the next attempt
120
- continue;
121
- }
122
- else {
123
- // Fallback handler returned null/false, meaning don't continue - stop retry process
124
- throw error;
125
- }
126
- }
127
- catch (fallbackError) {
128
- // If fallback fails, continue with original error
129
- console.warn('Fallback to Flash model failed:', fallbackError);
130
- }
131
- }
132
- // Track consecutive 429 errors
133
- if (errorStatus === 429) {
134
- consecutive429Count++;
135
- }
136
- else {
137
- consecutive429Count = 0;
138
- }
139
- // If we have persistent 429s and a fallback callback for OAuth
140
- if (consecutive429Count >= 2 &&
141
- onPersistent429 &&
142
- authType === AuthType.LOGIN_WITH_GOOGLE) {
143
- try {
144
- const fallbackModel = await onPersistent429(authType, error);
145
- if (fallbackModel !== false && fallbackModel !== null) {
146
- // Reset attempt counter and try with new model
147
- attempt = 0;
148
- consecutive429Count = 0;
149
- currentDelay = initialDelayMs;
150
- // With the model updated, we continue to the next attempt
151
- continue;
152
- }
153
- else {
154
- // Fallback handler returned null/false, meaning don't continue - stop retry process
155
- throw error;
156
- }
157
- }
158
- catch (fallbackError) {
159
- // If fallback fails, continue with original error
160
- console.warn('Fallback to Flash model failed:', fallbackError);
96
+ if (classifiedError instanceof RetryableQuotaError) {
97
+ if (attempt >= maxAttempts) {
98
+ throw classifiedError;
161
99
  }
100
+ console.warn(`Attempt ${attempt} failed: ${classifiedError.message}. Retrying after ${classifiedError.retryDelayMs}ms...`);
101
+ await delay(classifiedError.retryDelayMs);
102
+ continue;
162
103
  }
163
- // Check if we've exhausted retries or shouldn't retry
104
+ // Generic retry logic for other errors
164
105
  if (attempt >= maxAttempts || !shouldRetryOnError(error)) {
165
106
  throw error;
166
107
  }
167
- const { delayDurationMs, errorStatus: delayErrorStatus } = getDelayDurationAndStatus(error);
168
- if (delayDurationMs > 0) {
169
- // Respect Retry-After header if present and parsed
170
- console.warn(`Attempt ${attempt} failed with status ${delayErrorStatus ?? 'unknown'}. Retrying after explicit delay of ${delayDurationMs}ms...`, error);
171
- await delay(delayDurationMs);
172
- // Reset currentDelay for next potential non-429 error, or if Retry-After is not present next time
173
- currentDelay = initialDelayMs;
174
- }
175
- else {
176
- // Fall back to exponential backoff with jitter
177
- logRetryAttempt(attempt, error, errorStatus);
178
- // Add jitter: +/- 30% of currentDelay
179
- const jitter = currentDelay * 0.3 * (Math.random() * 2 - 1);
180
- const delayWithJitter = Math.max(0, currentDelay + jitter);
181
- await delay(delayWithJitter);
182
- currentDelay = Math.min(maxDelayMs, currentDelay * 2);
183
- }
108
+ const errorStatus = getErrorStatus(error);
109
+ logRetryAttempt(attempt, error, errorStatus);
110
+ // Exponential backoff with jitter for non-quota errors
111
+ const jitter = currentDelay * 0.3 * (Math.random() * 2 - 1);
112
+ const delayWithJitter = Math.max(0, currentDelay + jitter);
113
+ await delay(delayWithJitter);
114
+ currentDelay = Math.min(maxDelayMs, currentDelay * 2);
184
115
  }
185
116
  }
186
- // This line should theoretically be unreachable due to the throw in the catch block.
187
- // Added for type safety and to satisfy the compiler that a promise is always returned.
188
117
  throw new Error('Retry attempts exhausted');
189
118
  }
190
119
  /**
@@ -209,52 +138,6 @@ export function getErrorStatus(error) {
209
138
  }
210
139
  return undefined;
211
140
  }
212
- /**
213
- * Extracts the Retry-After delay from an error object's headers.
214
- * @param error The error object.
215
- * @returns The delay in milliseconds, or 0 if not found or invalid.
216
- */
217
- function getRetryAfterDelayMs(error) {
218
- if (typeof error === 'object' && error !== null) {
219
- // Check for error.response.headers (common in axios errors)
220
- if ('response' in error &&
221
- typeof error.response === 'object' &&
222
- error.response !== null) {
223
- const response = error.response;
224
- if ('headers' in response &&
225
- typeof response.headers === 'object' &&
226
- response.headers !== null) {
227
- const headers = response.headers;
228
- const retryAfterHeader = headers['retry-after'];
229
- if (typeof retryAfterHeader === 'string') {
230
- const retryAfterSeconds = parseInt(retryAfterHeader, 10);
231
- if (!isNaN(retryAfterSeconds)) {
232
- return retryAfterSeconds * 1000;
233
- }
234
- // It might be an HTTP date
235
- const retryAfterDate = new Date(retryAfterHeader);
236
- if (!isNaN(retryAfterDate.getTime())) {
237
- return Math.max(0, retryAfterDate.getTime() - Date.now());
238
- }
239
- }
240
- }
241
- }
242
- }
243
- return 0;
244
- }
245
- /**
246
- * Determines the delay duration based on the error, prioritizing Retry-After header.
247
- * @param error The error object.
248
- * @returns An object containing the delay duration in milliseconds and the error status.
249
- */
250
- function getDelayDurationAndStatus(error) {
251
- const errorStatus = getErrorStatus(error);
252
- let delayDurationMs = 0;
253
- if (errorStatus === 429) {
254
- delayDurationMs = getRetryAfterDelayMs(error);
255
- }
256
- return { delayDurationMs, errorStatus };
257
- }
258
141
  /**
259
142
  * Logs a message for a retry attempt when using exponential backoff.
260
143
  * @param attempt The current attempt number.
@@ -1 +1 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/utils/retry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/utils/retry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAmBhC,MAAM,qBAAqB,GAAiB;IAC1C,WAAW,EAAE,EAAE;IACf,cAAc,EAAE,IAAI;IACpB,UAAU,EAAE,KAAK,EAAE,aAAa;IAChC,kBAAkB,EAAE,kBAAkB;CACvC,CAAC;AAEF;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,KAAsB;IAChD,8BAA8B;IAC9B,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC9B,4CAA4C;QAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC;QACvC,OAAO,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAC7E,CAAC;IAED,6DAA6D;IAC7D,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAoB,EACpB,OAA+B;IAE/B,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,YAAY,GAAG,OAAO;QAC1B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QAC3E,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,EACJ,WAAW,EACX,cAAc,EACd,UAAU,EACV,eAAe,EACf,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,GACrB,GAAG;QACF,GAAG,qBAAqB;QACxB,GAAG,YAAY;KAChB,CAAC;IAEF,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,YAAY,GAAG,cAAc,CAAC;IAElC,OAAO,OAAO,GAAG,WAAW,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;QACV,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;YAE1B,IACE,oBAAoB;gBACpB,oBAAoB,CAAC,MAAiC,CAAC,EACvD,CAAC;gBACD,MAAM,MAAM,GAAG,YAAY,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC,CAAC;gBAC3D,MAAM,KAAK,CAAC,eAAe,CAAC,CAAC;gBAC7B,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;gBACtD,SAAS;YACX,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,eAAe,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAEnD,IAAI,eAAe,YAAY,kBAAkB,EAAE,CAAC;gBAClD,IAAI,eAAe,IAAI,QAAQ,KAAK,QAAQ,CAAC,iBAAiB,EAAE,CAAC;oBAC/D,IAAI,CAAC;wBACH,MAAM,aAAa,GAAG,MAAM,eAAe,CACzC,QAAQ,EACR,eAAe,CAChB,CAAC;wBACF,IAAI,aAAa,EAAE,CAAC;4BAClB,OAAO,GAAG,CAAC,CAAC,CAAC,+CAA+C;4BAC5D,YAAY,GAAG,cAAc,CAAC;4BAC9B,SAAS;wBACX,CAAC;oBACH,CAAC;oBAAC,OAAO,aAAa,EAAE,CAAC;wBACvB,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC;oBACxD,CAAC;gBACH,CAAC;gBACD,MAAM,eAAe,CAAC,CAAC,2CAA2C;YACpE,CAAC;YAED,IAAI,eAAe,YAAY,mBAAmB,EAAE,CAAC;gBACnD,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC;oBAC3B,MAAM,eAAe,CAAC;gBACxB,CAAC;gBACD,OAAO,CAAC,IAAI,CACV,WAAW,OAAO,YAAY,eAAe,CAAC,OAAO,oBAAoB,eAAe,CAAC,YAAY,OAAO,CAC7G,CAAC;gBACF,MAAM,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;gBAC1C,SAAS;YACX,CAAC;YAED,uCAAuC;YACvC,IAAI,OAAO,IAAI,WAAW,IAAI,CAAC,kBAAkB,CAAC,KAAc,CAAC,EAAE,CAAC;gBAClE,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YAC1C,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YAE7C,uDAAuD;YACvD,MAAM,MAAM,GAAG,YAAY,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC,CAAC;YAC3D,MAAM,KAAK,CAAC,eAAe,CAAC,CAAC;YAC7B,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,IAAI,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,CAAC;QACD,2DAA2D;QAC3D,IACE,UAAU,IAAI,KAAK;YACnB,OAAQ,KAAgC,CAAC,QAAQ,KAAK,QAAQ;YAC7D,KAAgC,CAAC,QAAQ,KAAK,IAAI,EACnD,CAAC;YACD,MAAM,QAAQ,GACZ,KACD,CAAC,QAAQ,CAAC;YACX,IAAI,QAAQ,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAChE,OAAO,QAAQ,CAAC,MAAM,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CACtB,OAAe,EACf,KAAc,EACd,WAAoB;IAEpB,IAAI,OAAO,GAAG,WAAW,OAAO,mCAAmC,CAAC;IACpE,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,GAAG,WAAW,OAAO,uBAAuB,WAAW,4BAA4B,CAAC;IAC7F,CAAC;IAED,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;SAAM,IAAI,WAAW,IAAI,WAAW,IAAI,GAAG,IAAI,WAAW,GAAG,GAAG,EAAE,CAAC;QAClE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;SAAM,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAClC,sEAAsE;QACtE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CACV,WAAW,OAAO,0EAA0E,EAC5F,KAAK,CACN,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,KAAK,CACX,WAAW,OAAO,kDAAkD,EACpE,KAAK,CACN,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,mCAAmC;QACnE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,2CAA2C;IAC3E,CAAC;AACH,CAAC"}