opencode-openai-codex-auth-multi 4.3.0-multiaccount.1 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/LICENSE +37 -37
  2. package/README.md +463 -80
  3. package/assets/opencode-logo-ornate-dark.svg +18 -18
  4. package/assets/readme-hero.svg +31 -31
  5. package/config/README.md +98 -98
  6. package/config/minimal-opencode.json +11 -11
  7. package/config/opencode-legacy.json +568 -568
  8. package/config/opencode-modern.json +236 -236
  9. package/dist/index.d.ts +2 -2
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +391 -135
  12. package/dist/index.js.map +1 -1
  13. package/dist/lib/accounts.d.ts +85 -11
  14. package/dist/lib/accounts.d.ts.map +1 -1
  15. package/dist/lib/accounts.js +352 -62
  16. package/dist/lib/accounts.js.map +1 -1
  17. package/dist/lib/auth/auth.d.ts +9 -1
  18. package/dist/lib/auth/auth.d.ts.map +1 -1
  19. package/dist/lib/auth/auth.js +26 -13
  20. package/dist/lib/auth/auth.js.map +1 -1
  21. package/dist/lib/auth/browser.d.ts.map +1 -1
  22. package/dist/lib/auth/browser.js +9 -2
  23. package/dist/lib/auth/browser.js.map +1 -1
  24. package/dist/lib/auth/server.d.ts.map +1 -1
  25. package/dist/lib/auth/server.js +11 -4
  26. package/dist/lib/auth/server.js.map +1 -1
  27. package/dist/lib/auto-update-checker.d.ts +10 -0
  28. package/dist/lib/auto-update-checker.d.ts.map +1 -0
  29. package/dist/lib/auto-update-checker.js +129 -0
  30. package/dist/lib/auto-update-checker.js.map +1 -0
  31. package/dist/lib/cli.d.ts +1 -0
  32. package/dist/lib/cli.d.ts.map +1 -1
  33. package/dist/lib/cli.js +11 -6
  34. package/dist/lib/cli.js.map +1 -1
  35. package/dist/lib/config.d.ts +5 -7
  36. package/dist/lib/config.d.ts.map +1 -1
  37. package/dist/lib/config.js +49 -6
  38. package/dist/lib/config.js.map +1 -1
  39. package/dist/lib/constants.d.ts +7 -0
  40. package/dist/lib/constants.d.ts.map +1 -1
  41. package/dist/lib/constants.js +7 -0
  42. package/dist/lib/constants.js.map +1 -1
  43. package/dist/lib/index.d.ts +13 -0
  44. package/dist/lib/index.d.ts.map +1 -0
  45. package/dist/lib/index.js +13 -0
  46. package/dist/lib/index.js.map +1 -0
  47. package/dist/lib/logger.d.ts +13 -17
  48. package/dist/lib/logger.d.ts.map +1 -1
  49. package/dist/lib/logger.js +89 -24
  50. package/dist/lib/logger.js.map +1 -1
  51. package/dist/lib/oauth-success.html +712 -712
  52. package/dist/lib/prompts/codex-opencode-bridge.js +121 -121
  53. package/dist/lib/prompts/codex.d.ts +5 -0
  54. package/dist/lib/prompts/codex.d.ts.map +1 -1
  55. package/dist/lib/prompts/codex.js +114 -93
  56. package/dist/lib/prompts/codex.js.map +1 -1
  57. package/dist/lib/refresh-queue.d.ts +100 -0
  58. package/dist/lib/refresh-queue.d.ts.map +1 -0
  59. package/dist/lib/refresh-queue.js +196 -0
  60. package/dist/lib/refresh-queue.js.map +1 -0
  61. package/dist/lib/request/fetch-helpers.d.ts +2 -3
  62. package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
  63. package/dist/lib/request/fetch-helpers.js +26 -29
  64. package/dist/lib/request/fetch-helpers.js.map +1 -1
  65. package/dist/lib/request/rate-limit-backoff.d.ts +17 -0
  66. package/dist/lib/request/rate-limit-backoff.d.ts.map +1 -0
  67. package/dist/lib/request/rate-limit-backoff.js +74 -0
  68. package/dist/lib/request/rate-limit-backoff.js.map +1 -0
  69. package/dist/lib/request/request-transformer.d.ts.map +1 -1
  70. package/dist/lib/request/request-transformer.js +3 -2
  71. package/dist/lib/request/request-transformer.js.map +1 -1
  72. package/dist/lib/request/response-handler.js +1 -1
  73. package/dist/lib/request/response-handler.js.map +1 -1
  74. package/dist/lib/rotation.d.ts +121 -0
  75. package/dist/lib/rotation.d.ts.map +1 -0
  76. package/dist/lib/rotation.js +248 -0
  77. package/dist/lib/rotation.js.map +1 -0
  78. package/dist/lib/storage.d.ts +72 -4
  79. package/dist/lib/storage.d.ts.map +1 -1
  80. package/dist/lib/storage.js +189 -19
  81. package/dist/lib/storage.js.map +1 -1
  82. package/dist/lib/types.d.ts +37 -1
  83. package/dist/lib/types.d.ts.map +1 -1
  84. package/package.json +85 -71
  85. package/scripts/install-opencode-codex-auth.js +191 -191
  86. package/scripts/test-all-models.sh +258 -258
  87. package/scripts/validate-model-map.sh +97 -97
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Refresh Queue Module
3
+ *
4
+ * Prevents race conditions when multiple concurrent requests try to refresh
5
+ * the same account's token simultaneously. Instead of firing parallel refresh
6
+ * requests, subsequent callers await the existing in-flight refresh.
7
+ *
8
+ * Ported from antigravity-auth refresh-queue.ts pattern.
9
+ */
10
+ import type { TokenResult } from "./types.js";
11
+ /**
12
+ * Manages queued token refresh operations to prevent race conditions.
13
+ *
14
+ * When multiple concurrent requests need to refresh the same account's token,
15
+ * only the first request triggers the actual refresh. Subsequent requests
16
+ * await the same promise, ensuring:
17
+ * - No duplicate refresh API calls for the same refresh token
18
+ * - Consistent token state across all waiting callers
19
+ * - Reduced load on OpenAI's token endpoint
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const queue = new RefreshQueue();
24
+ *
25
+ * // These three concurrent calls will only trigger ONE actual refresh
26
+ * const [result1, result2, result3] = await Promise.all([
27
+ * queue.refresh(refreshToken),
28
+ * queue.refresh(refreshToken),
29
+ * queue.refresh(refreshToken),
30
+ * ]);
31
+ *
32
+ * // All three get the same result
33
+ * console.log(result1 === result2); // true (same object reference)
34
+ * ```
35
+ */
36
+ export declare class RefreshQueue {
37
+ private pending;
38
+ /**
39
+ * Maximum time to keep a refresh entry in the queue (prevents memory leaks
40
+ * from stuck requests). After this timeout, the entry is removed and new
41
+ * callers will trigger a fresh refresh.
42
+ */
43
+ private readonly maxEntryAgeMs;
44
+ /**
45
+ * Create a new RefreshQueue instance.
46
+ * @param maxEntryAgeMs - Maximum age for pending entries before cleanup (default: 30s)
47
+ */
48
+ constructor(maxEntryAgeMs?: number);
49
+ /**
50
+ * Refresh a token, deduplicating concurrent requests for the same refresh token.
51
+ *
52
+ * If a refresh is already in-flight for this token, returns the existing promise.
53
+ * Otherwise, initiates a new refresh and caches the promise for other callers.
54
+ *
55
+ * @param refreshToken - The refresh token to use
56
+ * @returns Token result (success with new tokens, or failure)
57
+ */
58
+ refresh(refreshToken: string): Promise<TokenResult>;
59
+ /**
60
+ * Execute the actual refresh and log results.
61
+ */
62
+ private executeRefresh;
63
+ /**
64
+ * Remove stale entries that have been pending too long.
65
+ * This prevents memory leaks from stuck or abandoned refresh operations.
66
+ */
67
+ private cleanup;
68
+ /**
69
+ * Check if there's an in-flight refresh for a given token.
70
+ * @param refreshToken - The refresh token to check
71
+ * @returns True if refresh is in progress
72
+ */
73
+ isRefreshing(refreshToken: string): boolean;
74
+ /**
75
+ * Get the number of pending refresh operations.
76
+ * Useful for debugging and monitoring.
77
+ */
78
+ get pendingCount(): number;
79
+ /**
80
+ * Clear all pending entries (primarily for testing).
81
+ */
82
+ clear(): void;
83
+ }
84
+ /**
85
+ * Get the singleton RefreshQueue instance.
86
+ * @param maxEntryAgeMs - Maximum age for pending entries (only used on first call)
87
+ * @returns The global RefreshQueue instance
88
+ */
89
+ export declare function getRefreshQueue(maxEntryAgeMs?: number): RefreshQueue;
90
+ /**
91
+ * Reset the singleton instance (primarily for testing).
92
+ */
93
+ export declare function resetRefreshQueue(): void;
94
+ /**
95
+ * Convenience function to refresh a token using the singleton queue.
96
+ * @param refreshToken - The refresh token to use
97
+ * @returns Token result
98
+ */
99
+ export declare function queuedRefresh(refreshToken: string): Promise<TokenResult>;
100
+ //# sourceMappingURL=refresh-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh-queue.d.ts","sourceRoot":"","sources":["../../lib/refresh-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAa9C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAwC;IAEvD;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC;;;OAGG;gBACS,aAAa,GAAE,MAAe;IAI1C;;;;;;;;OAQG;IACG,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA4BzD;;OAEG;YACW,cAAc;IAsC5B;;;OAGG;IACH,OAAO,CAAC,OAAO;IAmBf;;;;OAIG;IACH,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI3C;;;OAGG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAQD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,YAAY,CAKpE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAE9E"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Refresh Queue Module
3
+ *
4
+ * Prevents race conditions when multiple concurrent requests try to refresh
5
+ * the same account's token simultaneously. Instead of firing parallel refresh
6
+ * requests, subsequent callers await the existing in-flight refresh.
7
+ *
8
+ * Ported from antigravity-auth refresh-queue.ts pattern.
9
+ */
10
+ import { refreshAccessToken } from "./auth/auth.js";
11
+ import { createLogger } from "./logger.js";
12
+ const log = createLogger("refresh-queue");
13
+ /**
14
+ * Manages queued token refresh operations to prevent race conditions.
15
+ *
16
+ * When multiple concurrent requests need to refresh the same account's token,
17
+ * only the first request triggers the actual refresh. Subsequent requests
18
+ * await the same promise, ensuring:
19
+ * - No duplicate refresh API calls for the same refresh token
20
+ * - Consistent token state across all waiting callers
21
+ * - Reduced load on OpenAI's token endpoint
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const queue = new RefreshQueue();
26
+ *
27
+ * // These three concurrent calls will only trigger ONE actual refresh
28
+ * const [result1, result2, result3] = await Promise.all([
29
+ * queue.refresh(refreshToken),
30
+ * queue.refresh(refreshToken),
31
+ * queue.refresh(refreshToken),
32
+ * ]);
33
+ *
34
+ * // All three get the same result
35
+ * console.log(result1 === result2); // true (same object reference)
36
+ * ```
37
+ */
38
+ export class RefreshQueue {
39
+ pending = new Map();
40
+ /**
41
+ * Maximum time to keep a refresh entry in the queue (prevents memory leaks
42
+ * from stuck requests). After this timeout, the entry is removed and new
43
+ * callers will trigger a fresh refresh.
44
+ */
45
+ maxEntryAgeMs;
46
+ /**
47
+ * Create a new RefreshQueue instance.
48
+ * @param maxEntryAgeMs - Maximum age for pending entries before cleanup (default: 30s)
49
+ */
50
+ constructor(maxEntryAgeMs = 30_000) {
51
+ this.maxEntryAgeMs = maxEntryAgeMs;
52
+ }
53
+ /**
54
+ * Refresh a token, deduplicating concurrent requests for the same refresh token.
55
+ *
56
+ * If a refresh is already in-flight for this token, returns the existing promise.
57
+ * Otherwise, initiates a new refresh and caches the promise for other callers.
58
+ *
59
+ * @param refreshToken - The refresh token to use
60
+ * @returns Token result (success with new tokens, or failure)
61
+ */
62
+ async refresh(refreshToken) {
63
+ // Clean up stale entries first
64
+ this.cleanup();
65
+ // Check for existing in-flight refresh
66
+ const existing = this.pending.get(refreshToken);
67
+ if (existing) {
68
+ log.info("Reusing in-flight refresh for token", {
69
+ tokenSuffix: refreshToken.slice(-6),
70
+ waitingMs: Date.now() - existing.startedAt,
71
+ });
72
+ return existing.promise;
73
+ }
74
+ // Start a new refresh
75
+ const startedAt = Date.now();
76
+ const promise = this.executeRefresh(refreshToken);
77
+ this.pending.set(refreshToken, { promise, startedAt });
78
+ try {
79
+ return await promise;
80
+ }
81
+ finally {
82
+ // Clean up after completion
83
+ this.pending.delete(refreshToken);
84
+ }
85
+ }
86
+ /**
87
+ * Execute the actual refresh and log results.
88
+ */
89
+ async executeRefresh(refreshToken) {
90
+ const startTime = Date.now();
91
+ log.info("Starting token refresh", { tokenSuffix: refreshToken.slice(-6) });
92
+ try {
93
+ const result = await refreshAccessToken(refreshToken);
94
+ const duration = Date.now() - startTime;
95
+ if (result.type === "success") {
96
+ log.info("Token refresh succeeded", {
97
+ tokenSuffix: refreshToken.slice(-6),
98
+ durationMs: duration,
99
+ });
100
+ }
101
+ else {
102
+ log.warn("Token refresh failed", {
103
+ tokenSuffix: refreshToken.slice(-6),
104
+ reason: result.reason,
105
+ durationMs: duration,
106
+ });
107
+ }
108
+ return result;
109
+ }
110
+ catch (error) {
111
+ const duration = Date.now() - startTime;
112
+ log.error("Token refresh threw exception", {
113
+ tokenSuffix: refreshToken.slice(-6),
114
+ error: error?.message ?? String(error),
115
+ durationMs: duration,
116
+ });
117
+ return {
118
+ type: "failed",
119
+ reason: "network_error",
120
+ message: error?.message ?? "Unknown error during refresh",
121
+ };
122
+ }
123
+ }
124
+ /**
125
+ * Remove stale entries that have been pending too long.
126
+ * This prevents memory leaks from stuck or abandoned refresh operations.
127
+ */
128
+ cleanup() {
129
+ const now = Date.now();
130
+ const staleTokens = [];
131
+ for (const [token, entry] of this.pending.entries()) {
132
+ if (now - entry.startedAt > this.maxEntryAgeMs) {
133
+ staleTokens.push(token);
134
+ }
135
+ }
136
+ for (const token of staleTokens) {
137
+ log.warn("Removing stale refresh entry", {
138
+ tokenSuffix: token.slice(-6),
139
+ ageMs: now - (this.pending.get(token)?.startedAt ?? now),
140
+ });
141
+ this.pending.delete(token);
142
+ }
143
+ }
144
+ /**
145
+ * Check if there's an in-flight refresh for a given token.
146
+ * @param refreshToken - The refresh token to check
147
+ * @returns True if refresh is in progress
148
+ */
149
+ isRefreshing(refreshToken) {
150
+ return this.pending.has(refreshToken);
151
+ }
152
+ /**
153
+ * Get the number of pending refresh operations.
154
+ * Useful for debugging and monitoring.
155
+ */
156
+ get pendingCount() {
157
+ return this.pending.size;
158
+ }
159
+ /**
160
+ * Clear all pending entries (primarily for testing).
161
+ */
162
+ clear() {
163
+ this.pending.clear();
164
+ }
165
+ }
166
+ // ============================================================================
167
+ // Singleton Instance
168
+ // ============================================================================
169
+ let refreshQueueInstance = null;
170
+ /**
171
+ * Get the singleton RefreshQueue instance.
172
+ * @param maxEntryAgeMs - Maximum age for pending entries (only used on first call)
173
+ * @returns The global RefreshQueue instance
174
+ */
175
+ export function getRefreshQueue(maxEntryAgeMs) {
176
+ if (!refreshQueueInstance) {
177
+ refreshQueueInstance = new RefreshQueue(maxEntryAgeMs);
178
+ }
179
+ return refreshQueueInstance;
180
+ }
181
+ /**
182
+ * Reset the singleton instance (primarily for testing).
183
+ */
184
+ export function resetRefreshQueue() {
185
+ refreshQueueInstance?.clear();
186
+ refreshQueueInstance = null;
187
+ }
188
+ /**
189
+ * Convenience function to refresh a token using the singleton queue.
190
+ * @param refreshToken - The refresh token to use
191
+ * @returns Token result
192
+ */
193
+ export async function queuedRefresh(refreshToken) {
194
+ return getRefreshQueue().refresh(refreshToken);
195
+ }
196
+ //# sourceMappingURL=refresh-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh-queue.js","sourceRoot":"","sources":["../../lib/refresh-queue.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,7 @@
2
2
  * Helper functions for the custom fetch implementation
3
3
  * These functions break down the complex fetch logic into manageable, testable units
4
4
  */
5
- import type { Auth } from "@opencode-ai/sdk";
6
- import type { OpencodeClient } from "@opencode-ai/sdk";
5
+ import type { Auth, OpencodeClient } from "@opencode-ai/sdk";
7
6
  import type { UserConfig, RequestBody } from "../types.js";
8
7
  export interface RateLimitInfo {
9
8
  retryAfterMs: number;
@@ -18,7 +17,7 @@ export interface ErrorHandlingResult {
18
17
  * @param auth - Current authentication state
19
18
  * @returns True if token is expired or invalid
20
19
  */
21
- export declare function shouldRefreshToken(auth: Auth): boolean;
20
+ export declare function shouldRefreshToken(auth: Auth, skewMs?: number): boolean;
22
21
  /**
23
22
  * Refreshes the OAuth token and updates stored credentials
24
23
  * @param currentAuth - Current auth state
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-helpers.d.ts","sourceRoot":"","sources":["../../../lib/request/fetch-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAW3D,MAAM,WAAW,aAAa;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,CAAC,EAAE,aAAa,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAEtD;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAC1C,WAAW,EAAE,IAAI,EACjB,MAAM,EAAE,cAAc,GACpB,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,CAIvE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC7C,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,UAAU,EACtB,SAAS,UAAO,GACd,OAAO,CAAC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,WAAW,CAAA;CAAE,GAAG,SAAS,CAAC,CA0DtE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAC9B,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD,OAAO,CAkBT;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,GACvB,OAAO,CAAC,mBAAmB,CAAC,CAW9B;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACvC,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,OAAO,GACrB,OAAO,CAAC,QAAQ,CAAC,CAcnB"}
1
+ {"version":3,"file":"fetch-helpers.d.ts","sourceRoot":"","sources":["../../../lib/request/fetch-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAM7D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAW3D,MAAM,WAAW,aAAa;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,CAAC,EAAE,aAAa,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,SAAI,GAAG,OAAO,CAMlE;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAC1C,WAAW,EAAE,IAAI,EACjB,MAAM,EAAE,cAAc,GACpB,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,CAIvE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC7C,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,UAAU,EACtB,SAAS,UAAO,GACd,OAAO,CAAC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,WAAW,CAAA;CAAE,GAAG,SAAS,CAAC,CA0DtE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAC9B,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD,OAAO,CAkBT;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,GACvB,OAAO,CAAC,mBAAmB,CAAC,CAY9B;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACvC,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,OAAO,GACrB,OAAO,CAAC,QAAQ,CAAC,CAcnB"}
@@ -2,7 +2,7 @@
2
2
  * Helper functions for the custom fetch implementation
3
3
  * These functions break down the complex fetch logic into manageable, testable units
4
4
  */
5
- import { refreshAccessToken } from "../auth/auth.js";
5
+ import { queuedRefresh } from "../refresh-queue.js";
6
6
  import { logRequest } from "../logger.js";
7
7
  import { getCodexInstructions, getModelFamily } from "../prompts/codex.js";
8
8
  import { transformRequestBody, normalizeModel } from "./request-transformer.js";
@@ -13,8 +13,13 @@ import { PLUGIN_NAME, HTTP_STATUS, OPENAI_HEADERS, OPENAI_HEADER_VALUES, URL_PAT
13
13
  * @param auth - Current authentication state
14
14
  * @returns True if token is expired or invalid
15
15
  */
16
- export function shouldRefreshToken(auth) {
17
- return auth.type !== "oauth" || !auth.access || auth.expires < Date.now();
16
+ export function shouldRefreshToken(auth, skewMs = 0) {
17
+ if (auth.type !== "oauth")
18
+ return true;
19
+ if (!auth.access)
20
+ return true;
21
+ const safeSkewMs = Math.max(0, Math.floor(skewMs));
22
+ return auth.expires <= Date.now() + safeSkewMs;
18
23
  }
19
24
  /**
20
25
  * Refreshes the OAuth token and updates stored credentials
@@ -24,7 +29,7 @@ export function shouldRefreshToken(auth) {
24
29
  */
25
30
  export async function refreshAndUpdateToken(currentAuth, client) {
26
31
  const refreshToken = currentAuth.type === "oauth" ? currentAuth.refresh : "";
27
- const refreshResult = await refreshAccessToken(refreshToken);
32
+ const refreshResult = await queuedRefresh(refreshToken);
28
33
  if (refreshResult.type === "failed") {
29
34
  throw new Error(ERROR_MESSAGES.TOKEN_REFRESH_FAILED);
30
35
  }
@@ -157,9 +162,10 @@ export function createCodexHeaders(init, accountId, accessToken, opts) {
157
162
  * @returns Original response or mapped retryable response
158
163
  */
159
164
  export async function handleErrorResponse(response) {
160
- const mapped = await mapUsageLimit404(response);
165
+ const bodyText = await safeReadBody(response);
166
+ const mapped = mapUsageLimit404WithBody(response, bodyText);
161
167
  const finalResponse = mapped ?? response;
162
- const rateLimit = await extractRateLimitInfo(finalResponse);
168
+ const rateLimit = extractRateLimitInfoFromBody(finalResponse, bodyText);
163
169
  logRequest(LOG_STAGES.ERROR_RESPONSE, {
164
170
  status: finalResponse.status,
165
171
  statusText: finalResponse.statusText,
@@ -187,43 +193,42 @@ export async function handleSuccessResponse(response, isStreaming) {
187
193
  headers: responseHeaders,
188
194
  });
189
195
  }
190
- async function mapUsageLimit404(response) {
191
- if (response.status !== HTTP_STATUS.NOT_FOUND)
192
- return null;
193
- const clone = response.clone();
194
- let text = "";
196
+ async function safeReadBody(response) {
195
197
  try {
196
- text = await clone.text();
198
+ return await response.clone().text();
197
199
  }
198
200
  catch {
199
- text = "";
201
+ return "";
200
202
  }
201
- if (!text)
203
+ }
204
+ function mapUsageLimit404WithBody(response, bodyText) {
205
+ if (response.status !== HTTP_STATUS.NOT_FOUND)
206
+ return null;
207
+ if (!bodyText)
202
208
  return null;
203
209
  let code = "";
204
210
  try {
205
- const parsed = JSON.parse(text);
211
+ const parsed = JSON.parse(bodyText);
206
212
  code = (parsed?.error?.code ?? parsed?.error?.type ?? "").toString();
207
213
  }
208
214
  catch {
209
215
  code = "";
210
216
  }
211
- const haystack = `${code} ${text}`.toLowerCase();
217
+ const haystack = `${code} ${bodyText}`.toLowerCase();
212
218
  if (!/usage_limit_reached|usage_not_included|rate_limit_exceeded|usage limit/i.test(haystack)) {
213
219
  return null;
214
220
  }
215
221
  const headers = new Headers(response.headers);
216
- return new Response(response.body, {
222
+ return new Response(bodyText, {
217
223
  status: HTTP_STATUS.TOO_MANY_REQUESTS,
218
224
  statusText: "Too Many Requests",
219
225
  headers,
220
226
  });
221
227
  }
222
- async function extractRateLimitInfo(response) {
228
+ function extractRateLimitInfoFromBody(response, bodyText) {
223
229
  const isStatusRateLimit = response.status === HTTP_STATUS.TOO_MANY_REQUESTS;
224
- const body = await safeReadBody(response);
225
- const parsed = parseRateLimitBody(body);
226
- const haystack = `${parsed?.code ?? ""} ${body}`.toLowerCase();
230
+ const parsed = parseRateLimitBody(bodyText);
231
+ const haystack = `${parsed?.code ?? ""} ${bodyText}`.toLowerCase();
227
232
  const isRateLimit = isStatusRateLimit ||
228
233
  /usage_limit_reached|usage_not_included|rate_limit_exceeded|rate_limit/i.test(haystack);
229
234
  if (!isRateLimit)
@@ -231,14 +236,6 @@ async function extractRateLimitInfo(response) {
231
236
  const retryAfterMs = parseRetryAfterMs(response, parsed) ?? 60000;
232
237
  return { retryAfterMs, code: parsed?.code };
233
238
  }
234
- async function safeReadBody(response) {
235
- try {
236
- return await response.clone().text();
237
- }
238
- catch {
239
- return "";
240
- }
241
- }
242
239
  function parseRateLimitBody(body) {
243
240
  if (!body)
244
241
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-helpers.js","sourceRoot":"","sources":["../../../lib/request/fetch-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-helpers.js","sourceRoot":"","sources":["../../../lib/request/fetch-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { RateLimitReason } from "../accounts.js";
2
+ export interface RateLimitBackoffResult {
3
+ attempt: number;
4
+ delayMs: number;
5
+ isDuplicate: boolean;
6
+ reason?: RateLimitReason;
7
+ }
8
+ export declare const RATE_LIMIT_SHORT_RETRY_THRESHOLD_MS = 5000;
9
+ /**
10
+ * Compute rate-limit backoff for an account+quota key.
11
+ */
12
+ export declare function getRateLimitBackoff(accountIndex: number, quotaKey: string, serverRetryAfterMs: number | null | undefined): RateLimitBackoffResult;
13
+ export declare function resetRateLimitBackoff(accountIndex: number, quotaKey: string): void;
14
+ export declare function clearRateLimitBackoffState(): void;
15
+ export declare function calculateBackoffMs(baseDelayMs: number, attempt: number, reason?: RateLimitReason): number;
16
+ export declare function getRateLimitBackoffWithReason(accountIndex: number, quotaKey: string, serverRetryAfterMs: number | null | undefined, reason?: RateLimitReason): RateLimitBackoffResult;
17
+ //# sourceMappingURL=rate-limit-backoff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limit-backoff.d.ts","sourceRoot":"","sources":["../../../lib/request/rate-limit-backoff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,WAAW,sBAAsB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,eAAe,CAAC;CACzB;AAaD,eAAO,MAAM,mCAAmC,OAAO,CAAC;AAexD;;GAEG;AACH,wBAAgB,mBAAmB,CAClC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC3C,sBAAsB,CAoCxB;AAED,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAElF;AAED,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AASD,wBAAgB,kBAAkB,CACjC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,eAA2B,GACjC,MAAM,CAIR;AAED,wBAAgB,6BAA6B,CAC5C,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC7C,MAAM,GAAE,eAA2B,GACjC,sBAAsB,CAQxB"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Rate limit state tracking with time-window deduplication.
3
+ *
4
+ * Matches the antigravity plugin behavior:
5
+ * - Deduplicate concurrent 429s so parallel requests don't over-increment backoff.
6
+ * - Reset backoff after a quiet period.
7
+ */
8
+ const RATE_LIMIT_DEDUP_WINDOW_MS = 2000;
9
+ const RATE_LIMIT_STATE_RESET_MS = 120_000;
10
+ const MAX_BACKOFF_MS = 60_000;
11
+ export const RATE_LIMIT_SHORT_RETRY_THRESHOLD_MS = 5000;
12
+ const rateLimitStateByAccountQuota = new Map();
13
+ function normalizeDelayMs(value, fallback) {
14
+ const candidate = typeof value === "number" && Number.isFinite(value) ? value : fallback;
15
+ return Math.max(0, Math.floor(candidate));
16
+ }
17
+ /**
18
+ * Compute rate-limit backoff for an account+quota key.
19
+ */
20
+ export function getRateLimitBackoff(accountIndex, quotaKey, serverRetryAfterMs) {
21
+ const now = Date.now();
22
+ const stateKey = `${accountIndex}:${quotaKey}`;
23
+ const previous = rateLimitStateByAccountQuota.get(stateKey);
24
+ const baseDelay = normalizeDelayMs(serverRetryAfterMs, 1000);
25
+ if (previous && now - previous.lastAt < RATE_LIMIT_DEDUP_WINDOW_MS) {
26
+ const backoffDelay = Math.min(baseDelay * Math.pow(2, previous.consecutive429 - 1), MAX_BACKOFF_MS);
27
+ return {
28
+ attempt: previous.consecutive429,
29
+ delayMs: Math.max(baseDelay, backoffDelay),
30
+ isDuplicate: true,
31
+ };
32
+ }
33
+ const attempt = previous && now - previous.lastAt < RATE_LIMIT_STATE_RESET_MS
34
+ ? previous.consecutive429 + 1
35
+ : 1;
36
+ rateLimitStateByAccountQuota.set(stateKey, {
37
+ consecutive429: attempt,
38
+ lastAt: now,
39
+ quotaKey,
40
+ });
41
+ const backoffDelay = Math.min(baseDelay * Math.pow(2, attempt - 1), MAX_BACKOFF_MS);
42
+ return {
43
+ attempt,
44
+ delayMs: Math.max(baseDelay, backoffDelay),
45
+ isDuplicate: false,
46
+ };
47
+ }
48
+ export function resetRateLimitBackoff(accountIndex, quotaKey) {
49
+ rateLimitStateByAccountQuota.delete(`${accountIndex}:${quotaKey}`);
50
+ }
51
+ export function clearRateLimitBackoffState() {
52
+ rateLimitStateByAccountQuota.clear();
53
+ }
54
+ const BACKOFF_MULTIPLIERS = {
55
+ quota: 3.0,
56
+ tokens: 1.5,
57
+ concurrent: 0.5,
58
+ unknown: 1.0,
59
+ };
60
+ export function calculateBackoffMs(baseDelayMs, attempt, reason = "unknown") {
61
+ const multiplier = BACKOFF_MULTIPLIERS[reason] ?? 1.0;
62
+ const exponentialDelay = baseDelayMs * Math.pow(2, attempt - 1);
63
+ return Math.min(Math.floor(exponentialDelay * multiplier), MAX_BACKOFF_MS);
64
+ }
65
+ export function getRateLimitBackoffWithReason(accountIndex, quotaKey, serverRetryAfterMs, reason = "unknown") {
66
+ const result = getRateLimitBackoff(accountIndex, quotaKey, serverRetryAfterMs);
67
+ const adjustedDelay = calculateBackoffMs(result.delayMs, result.attempt, reason);
68
+ return {
69
+ ...result,
70
+ delayMs: adjustedDelay,
71
+ reason,
72
+ };
73
+ }
74
+ //# sourceMappingURL=rate-limit-backoff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limit-backoff.js","sourceRoot":"","sources":["../../../lib/request/rate-limit-backoff.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"request-transformer.d.ts","sourceRoot":"","sources":["../../../lib/request/request-transformer.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACX,aAAa,EACb,SAAS,EACT,eAAe,EACf,WAAW,EACX,UAAU,EACV,MAAM,aAAa,CAAC;AAErB,OAAO,EACN,sBAAsB,EACtB,2CAA2C,GAC3C,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAiFhE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC7B,SAAS,EAAE,MAAM,EACjB,UAAU,GAAE,UAAuC,GACjD,aAAa,CAMf;AAiDD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CACjC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,GAAE,aAAkB,GAC5B,eAAe,CA2FjB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CAC1B,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,GAC5B,SAAS,EAAE,GAAG,SAAS,CAmBzB;AAED;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAChD,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,GAC5B,OAAO,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,CAalC;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAC9B,QAAQ,EAAE,OAAO,GACf,SAAS,EAAE,GAAG,SAAS,CAezB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAC9B,QAAQ,EAAE,OAAO,GACf,SAAS,EAAE,GAAG,SAAS,CAezB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CACzC,IAAI,EAAE,WAAW,EACjB,iBAAiB,EAAE,MAAM,EACzB,UAAU,GAAE,UAAuC,EACnD,SAAS,UAAO,GACd,OAAO,CAAC,WAAW,CAAC,CAwGtB"}
1
+ {"version":3,"file":"request-transformer.d.ts","sourceRoot":"","sources":["../../../lib/request/request-transformer.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACX,aAAa,EACb,SAAS,EACT,eAAe,EACf,WAAW,EACX,UAAU,EACV,MAAM,aAAa,CAAC;AAErB,OAAO,EACN,sBAAsB,EACtB,2CAA2C,GAC3C,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAiFhE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC7B,SAAS,EAAE,MAAM,EACjB,UAAU,GAAE,UAAuC,GACjD,aAAa,CAMf;AAiDD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CACjC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,GAAE,aAAkB,GAC5B,eAAe,CA2FjB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CAC1B,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,GAC5B,SAAS,EAAE,GAAG,SAAS,CAoBzB;AAED;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAChD,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,GAC5B,OAAO,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,CAalC;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAC9B,QAAQ,EAAE,OAAO,GACf,SAAS,EAAE,GAAG,SAAS,CAezB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAC9B,QAAQ,EAAE,OAAO,GACf,SAAS,EAAE,GAAG,SAAS,CAezB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CACzC,IAAI,EAAE,WAAW,EACjB,iBAAiB,EAAE,MAAM,EACzB,UAAU,GAAE,UAAuC,EACnD,SAAS,UAAO,GACd,OAAO,CAAC,WAAW,CAAC,CAwGtB"}
@@ -18,7 +18,7 @@ export function normalizeModel(model) {
18
18
  if (!model)
19
19
  return "gpt-5.1";
20
20
  // Strip provider prefix if present (e.g., "openai/gpt-5-codex" → "gpt-5-codex")
21
- const modelId = model.includes("/") ? model.split("/").pop() : model;
21
+ const modelId = model.includes("/") ? model.split("/").pop() ?? model : model;
22
22
  // Try explicit model map first (handles all known model variants)
23
23
  const mappedModel = getNormalizedModel(modelId);
24
24
  if (mappedModel) {
@@ -239,7 +239,8 @@ export function filterInput(input) {
239
239
  .map((item) => {
240
240
  // Strip IDs from all items (Codex API stateless mode)
241
241
  if (item.id) {
242
- const { id, ...itemWithoutId } = item;
242
+ const { id: _omit, ...itemWithoutId } = item;
243
+ void _omit;
243
244
  return itemWithoutId;
244
245
  }
245
246
  return item;