better-opencode-openai-codex-auth 0.1.1 → 0.1.3
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/README.md +24 -0
- package/config/README.md +19 -93
- package/config/opencode-modern.json +149 -42
- package/dist/index.d.ts +0 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +215 -109
- package/dist/index.js.map +1 -1
- package/dist/lib/account-pool.d.ts +29 -3
- package/dist/lib/account-pool.d.ts.map +1 -1
- package/dist/lib/account-pool.js +211 -44
- package/dist/lib/account-pool.js.map +1 -1
- package/dist/lib/auth/auth.d.ts +55 -4
- package/dist/lib/auth/auth.d.ts.map +1 -1
- package/dist/lib/auth/auth.js +142 -13
- package/dist/lib/auth/auth.js.map +1 -1
- package/dist/lib/auth/server.d.ts.map +1 -1
- package/dist/lib/auth/server.js +12 -8
- package/dist/lib/auth/server.js.map +1 -1
- package/dist/lib/auth/ui/account-menu.d.ts +50 -0
- package/dist/lib/auth/ui/account-menu.d.ts.map +1 -0
- package/dist/lib/auth/ui/account-menu.js +258 -0
- package/dist/lib/auth/ui/account-menu.js.map +1 -0
- package/dist/lib/auth/ui/ansi.d.ts +23 -0
- package/dist/lib/auth/ui/ansi.d.ts.map +1 -0
- package/dist/lib/auth/ui/ansi.js +37 -0
- package/dist/lib/auth/ui/ansi.js.map +1 -0
- package/dist/lib/auth/ui/confirm.d.ts +2 -0
- package/dist/lib/auth/ui/confirm.d.ts.map +1 -0
- package/dist/lib/auth/ui/confirm.js +8 -0
- package/dist/lib/auth/ui/confirm.js.map +1 -0
- package/dist/lib/auth/ui/select.d.ts +21 -0
- package/dist/lib/auth/ui/select.d.ts.map +1 -0
- package/dist/lib/auth/ui/select.js +208 -0
- package/dist/lib/auth/ui/select.js.map +1 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +13 -4
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/constants.d.ts +76 -3
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +80 -3
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/logger.d.ts +6 -0
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +11 -2
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/prompts/codex.d.ts +1 -1
- package/dist/lib/prompts/codex.d.ts.map +1 -1
- package/dist/lib/prompts/codex.js +15 -2
- package/dist/lib/prompts/codex.js.map +1 -1
- package/dist/lib/refresh-queue.d.ts +56 -0
- package/dist/lib/refresh-queue.d.ts.map +1 -0
- package/dist/lib/refresh-queue.js +148 -0
- package/dist/lib/refresh-queue.js.map +1 -0
- package/dist/lib/request/fetch-helpers.d.ts +2 -1
- package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
- package/dist/lib/request/fetch-helpers.js +25 -5
- package/dist/lib/request/fetch-helpers.js.map +1 -1
- package/dist/lib/request/helpers/input-utils.d.ts.map +1 -1
- package/dist/lib/request/helpers/input-utils.js +12 -10
- package/dist/lib/request/helpers/input-utils.js.map +1 -1
- package/dist/lib/request/helpers/model-map.d.ts.map +1 -1
- package/dist/lib/request/helpers/model-map.js +14 -1
- package/dist/lib/request/helpers/model-map.js.map +1 -1
- package/dist/lib/request/request-transformer.d.ts.map +1 -1
- package/dist/lib/request/request-transformer.js +33 -29
- package/dist/lib/request/request-transformer.js.map +1 -1
- package/dist/lib/request/response-handler.d.ts.map +1 -1
- package/dist/lib/request/response-handler.js +17 -13
- package/dist/lib/request/response-handler.js.map +1 -1
- package/dist/lib/schemas.d.ts +85 -0
- package/dist/lib/schemas.d.ts.map +1 -0
- package/dist/lib/schemas.js +93 -0
- package/dist/lib/schemas.js.map +1 -0
- package/dist/lib/types.d.ts +18 -2
- package/dist/lib/types.d.ts.map +1 -1
- package/package.json +6 -7
- package/scripts/install-opencode-codex-auth.js +7 -27
- package/config/opencode-legacy.json +0 -571
package/dist/lib/account-pool.js
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
|
-
import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
1
|
+
import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
4
4
|
import { dirname, join } from "node:path";
|
|
5
|
-
|
|
5
|
+
import { ACCOUNT_FAILURE, RATE_LIMIT_TIERS } from "./constants.js";
|
|
6
|
+
const STORAGE_VERSION = 2;
|
|
6
7
|
const DEFAULT_COOLDOWN_MS = 60_000;
|
|
8
|
+
const LOCK_RETRY_MS = 25;
|
|
9
|
+
const LOCK_TIMEOUT_MS = 2_000;
|
|
7
10
|
function storagePath() {
|
|
8
11
|
if (process.env.OPENAI_CODEX_ACCOUNTS_PATH) {
|
|
9
12
|
return process.env.OPENAI_CODEX_ACCOUNTS_PATH;
|
|
10
13
|
}
|
|
11
14
|
return join(homedir(), ".opencode", "openai-codex-accounts.json");
|
|
12
15
|
}
|
|
16
|
+
function lockPath(path) {
|
|
17
|
+
return `${path}.lock`;
|
|
18
|
+
}
|
|
13
19
|
function clampIndex(index, size) {
|
|
14
20
|
if (!Number.isFinite(index) || size <= 0)
|
|
15
21
|
return 0;
|
|
@@ -35,8 +41,73 @@ function normalizeEntry(entry) {
|
|
|
35
41
|
email: entry.email,
|
|
36
42
|
lastUsed: entry.lastUsed,
|
|
37
43
|
rateLimitedUntil: entry.rateLimitedUntil,
|
|
44
|
+
// Preserve failure-tracking fields across save/load
|
|
45
|
+
coolingDownUntil: entry.coolingDownUntil,
|
|
46
|
+
consecutiveFailures: entry.consecutiveFailures,
|
|
47
|
+
lastFailureAt: entry.lastFailureAt,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function mergeAccountEntries(existing, incoming) {
|
|
51
|
+
const incomingIsOlder = incoming.expires < existing.expires;
|
|
52
|
+
const nextAccess = incomingIsOlder ? existing.access : incoming.access;
|
|
53
|
+
const nextRefresh = incomingIsOlder ? existing.refresh : incoming.refresh;
|
|
54
|
+
const nextExpires = incomingIsOlder ? existing.expires : incoming.expires;
|
|
55
|
+
return {
|
|
56
|
+
...existing,
|
|
57
|
+
...incoming,
|
|
58
|
+
access: nextAccess,
|
|
59
|
+
refresh: nextRefresh,
|
|
60
|
+
expires: nextExpires,
|
|
61
|
+
rateLimitedUntil: Math.max(existing.rateLimitedUntil ?? 0, incoming.rateLimitedUntil ?? 0) || undefined,
|
|
62
|
+
coolingDownUntil: Math.max(existing.coolingDownUntil ?? 0, incoming.coolingDownUntil ?? 0) || undefined,
|
|
63
|
+
consecutiveFailures: Math.max(existing.consecutiveFailures ?? 0, incoming.consecutiveFailures ?? 0) || undefined,
|
|
64
|
+
lastFailureAt: Math.max(existing.lastFailureAt ?? 0, incoming.lastFailureAt ?? 0) || undefined,
|
|
65
|
+
lastUsed: Math.max(existing.lastUsed ?? 0, incoming.lastUsed ?? 0) || undefined,
|
|
66
|
+
email: existing.email ?? incoming.email,
|
|
38
67
|
};
|
|
39
68
|
}
|
|
69
|
+
function dedupeAccounts(entries) {
|
|
70
|
+
const deduped = [];
|
|
71
|
+
for (const entry of entries) {
|
|
72
|
+
const normalized = normalizeEntry(entry);
|
|
73
|
+
if (!normalized)
|
|
74
|
+
continue;
|
|
75
|
+
const idx = deduped.findIndex((existing) => existing.accountId === normalized.accountId ||
|
|
76
|
+
(!!existing.email && !!normalized.email && existing.email === normalized.email));
|
|
77
|
+
if (idx >= 0) {
|
|
78
|
+
const existing = deduped[idx];
|
|
79
|
+
if (!existing)
|
|
80
|
+
continue;
|
|
81
|
+
deduped[idx] = mergeAccountEntries(existing, normalized);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
deduped.push(normalized);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return deduped;
|
|
88
|
+
}
|
|
89
|
+
function acquireLock(path) {
|
|
90
|
+
const target = lockPath(path);
|
|
91
|
+
const started = Date.now();
|
|
92
|
+
while (true) {
|
|
93
|
+
try {
|
|
94
|
+
mkdirSync(target);
|
|
95
|
+
return () => {
|
|
96
|
+
try {
|
|
97
|
+
rmSync(target, { recursive: true, force: true });
|
|
98
|
+
}
|
|
99
|
+
catch { }
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
if (Date.now() - started >= LOCK_TIMEOUT_MS) {
|
|
104
|
+
throw new Error(`Timed out acquiring account-pool lock: ${target}`);
|
|
105
|
+
}
|
|
106
|
+
const waitUntil = Date.now() + LOCK_RETRY_MS;
|
|
107
|
+
while (Date.now() < waitUntil) { }
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
40
111
|
function parseStorage(raw) {
|
|
41
112
|
let parsed;
|
|
42
113
|
try {
|
|
@@ -53,14 +124,15 @@ function parseStorage(raw) {
|
|
|
53
124
|
.map((e) => normalizeEntry(e))
|
|
54
125
|
.filter((e) => e !== null)
|
|
55
126
|
: [];
|
|
127
|
+
const dedupedAccounts = dedupeAccounts(accounts);
|
|
56
128
|
return {
|
|
57
129
|
version: STORAGE_VERSION,
|
|
58
|
-
activeIndex: clampIndex(Number(obj.activeIndex ?? 0),
|
|
59
|
-
accounts,
|
|
130
|
+
activeIndex: clampIndex(Number(obj.activeIndex ?? 0), dedupedAccounts.length || 1),
|
|
131
|
+
accounts: dedupedAccounts,
|
|
60
132
|
};
|
|
61
133
|
}
|
|
62
134
|
function normalizeCooldown(cooldownMs) {
|
|
63
|
-
if (!Number.isFinite(cooldownMs) || cooldownMs < 1000) {
|
|
135
|
+
if (cooldownMs === undefined || !Number.isFinite(cooldownMs) || cooldownMs < 1000) {
|
|
64
136
|
return DEFAULT_COOLDOWN_MS;
|
|
65
137
|
}
|
|
66
138
|
return Math.floor(cooldownMs);
|
|
@@ -94,6 +166,23 @@ function retryAfterFromHeaders(headers, fallbackMs) {
|
|
|
94
166
|
}
|
|
95
167
|
return fallbackMs;
|
|
96
168
|
}
|
|
169
|
+
/**
|
|
170
|
+
* Resolve the cooldown duration for a rate-limited account.
|
|
171
|
+
*
|
|
172
|
+
* Priority:
|
|
173
|
+
* 1. Tiered duration from known ChatGPT error codes (#10)
|
|
174
|
+
* 2. Server-supplied retry-after header
|
|
175
|
+
* 3. Plugin-configured default or built-in 60s default
|
|
176
|
+
*/
|
|
177
|
+
function resolveCooldownMs(errorCode, headers, configDefault) {
|
|
178
|
+
// Tiered duration for known ChatGPT quota/plan error codes
|
|
179
|
+
if (errorCode && RATE_LIMIT_TIERS[errorCode] !== undefined) {
|
|
180
|
+
return RATE_LIMIT_TIERS[errorCode];
|
|
181
|
+
}
|
|
182
|
+
// Server-supplied header takes precedence over plugin default
|
|
183
|
+
const fallback = normalizeCooldown(configDefault);
|
|
184
|
+
return retryAfterFromHeaders(headers, fallback);
|
|
185
|
+
}
|
|
97
186
|
export class AccountPool {
|
|
98
187
|
accounts = [];
|
|
99
188
|
activeIndex = 0;
|
|
@@ -121,21 +210,46 @@ export class AccountPool {
|
|
|
121
210
|
if (!existsSync(dir)) {
|
|
122
211
|
mkdirSync(dir, { recursive: true });
|
|
123
212
|
}
|
|
124
|
-
const
|
|
125
|
-
version: STORAGE_VERSION,
|
|
126
|
-
activeIndex: clampIndex(this.activeIndex, this.accounts.length || 1),
|
|
127
|
-
accounts: this.accounts,
|
|
128
|
-
};
|
|
129
|
-
const tempPath = `${path}.tmp.${process.pid}.${Date.now()}.${randomUUID()}`;
|
|
130
|
-
writeFileSync(tempPath, `${JSON.stringify(payload, null, 2)}\n`, {
|
|
131
|
-
encoding: "utf8",
|
|
132
|
-
mode: 0o600,
|
|
133
|
-
});
|
|
134
|
-
renameSync(tempPath, path);
|
|
213
|
+
const releaseLock = acquireLock(path);
|
|
135
214
|
try {
|
|
136
|
-
|
|
215
|
+
let latestAccounts = [];
|
|
216
|
+
let latestActiveIndex = 0;
|
|
217
|
+
if (existsSync(path)) {
|
|
218
|
+
try {
|
|
219
|
+
const raw = readFileSync(path, "utf8");
|
|
220
|
+
const parsed = parseStorage(raw);
|
|
221
|
+
if (parsed) {
|
|
222
|
+
latestAccounts = parsed.accounts;
|
|
223
|
+
latestActiveIndex = parsed.activeIndex;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
catch { }
|
|
227
|
+
}
|
|
228
|
+
const mergedAccounts = dedupeAccounts([...latestAccounts, ...this.accounts]);
|
|
229
|
+
this.accounts = mergedAccounts;
|
|
230
|
+
this.activeIndex = clampIndex(Math.max(this.activeIndex, latestActiveIndex), mergedAccounts.length || 1);
|
|
231
|
+
const payload = {
|
|
232
|
+
version: STORAGE_VERSION,
|
|
233
|
+
activeIndex: clampIndex(this.activeIndex, this.accounts.length || 1),
|
|
234
|
+
accounts: this.accounts,
|
|
235
|
+
};
|
|
236
|
+
const tempPath = `${path}.tmp.${process.pid}.${Date.now()}.${randomUUID()}`;
|
|
237
|
+
writeFileSync(tempPath, `${JSON.stringify(payload, null, 2)}\n`, {
|
|
238
|
+
encoding: "utf8",
|
|
239
|
+
mode: 0o600,
|
|
240
|
+
});
|
|
241
|
+
renameSync(tempPath, path);
|
|
242
|
+
try {
|
|
243
|
+
chmodSync(path, 0o600);
|
|
244
|
+
}
|
|
245
|
+
catch (chmodErr) {
|
|
246
|
+
if (process.platform !== "win32") {
|
|
247
|
+
console.warn(`[openai-codex-plugin] Failed to chmod ${path}:`, chmodErr);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
137
250
|
}
|
|
138
|
-
|
|
251
|
+
finally {
|
|
252
|
+
releaseLock();
|
|
139
253
|
}
|
|
140
254
|
}
|
|
141
255
|
upsert(entry) {
|
|
@@ -151,22 +265,12 @@ export class AccountPool {
|
|
|
151
265
|
const existing = this.accounts[idx];
|
|
152
266
|
if (!existing)
|
|
153
267
|
return;
|
|
154
|
-
|
|
155
|
-
const nextAccess = incomingIsOlder ? existing.access : normalized.access;
|
|
156
|
-
const nextRefresh = incomingIsOlder ? existing.refresh : normalized.refresh;
|
|
157
|
-
const nextExpires = incomingIsOlder ? existing.expires : normalized.expires;
|
|
158
|
-
this.accounts[idx] = {
|
|
159
|
-
...existing,
|
|
160
|
-
...normalized,
|
|
161
|
-
access: nextAccess,
|
|
162
|
-
refresh: nextRefresh,
|
|
163
|
-
expires: nextExpires,
|
|
164
|
-
rateLimitedUntil: existing.rateLimitedUntil,
|
|
165
|
-
};
|
|
268
|
+
this.accounts[idx] = mergeAccountEntries(existing, normalized);
|
|
166
269
|
}
|
|
167
270
|
else {
|
|
168
271
|
this.accounts.push(normalized);
|
|
169
272
|
}
|
|
273
|
+
this.accounts = dedupeAccounts(this.accounts);
|
|
170
274
|
this.activeIndex = clampIndex(this.activeIndex, this.accounts.length || 1);
|
|
171
275
|
}
|
|
172
276
|
count() {
|
|
@@ -174,36 +278,84 @@ export class AccountPool {
|
|
|
174
278
|
}
|
|
175
279
|
getAvailableCount() {
|
|
176
280
|
const t = now();
|
|
177
|
-
return this.accounts.filter((a) => !a.rateLimitedUntil || a.rateLimitedUntil <= t)
|
|
281
|
+
return this.accounts.filter((a) => (!a.rateLimitedUntil || a.rateLimitedUntil <= t) &&
|
|
282
|
+
(!a.coolingDownUntil || a.coolingDownUntil <= t)).length;
|
|
178
283
|
}
|
|
179
284
|
getMinRetryAfterMs() {
|
|
180
285
|
const t = now();
|
|
181
286
|
let min = null;
|
|
182
287
|
for (const account of this.accounts) {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
288
|
+
const limitRemaining = account.rateLimitedUntil && account.rateLimitedUntil > t
|
|
289
|
+
? account.rateLimitedUntil - t
|
|
290
|
+
: null;
|
|
291
|
+
const coolRemaining = account.coolingDownUntil && account.coolingDownUntil > t
|
|
292
|
+
? account.coolingDownUntil - t
|
|
293
|
+
: null;
|
|
294
|
+
// The soonest this account will be usable
|
|
295
|
+
const remaining = limitRemaining !== null || coolRemaining !== null
|
|
296
|
+
? Math.min(limitRemaining ?? Infinity, coolRemaining ?? Infinity)
|
|
297
|
+
: null;
|
|
298
|
+
if (remaining !== null && (min === null || remaining < min)) {
|
|
187
299
|
min = remaining;
|
|
188
300
|
}
|
|
189
301
|
}
|
|
190
302
|
return min;
|
|
191
303
|
}
|
|
192
|
-
|
|
304
|
+
/**
|
|
305
|
+
* Mark an account as rate-limited.
|
|
306
|
+
* Applies tiered cooldown based on the ChatGPT error code (#10):
|
|
307
|
+
* - usage_limit_reached → 4 hours
|
|
308
|
+
* - usage_not_included → 24 hours
|
|
309
|
+
* - rate_limit_exceeded → 60 seconds
|
|
310
|
+
* - unknown / no code → retry-after header or configured default
|
|
311
|
+
*/
|
|
312
|
+
markRateLimited(accountId, headers, cooldownMs, errorCode) {
|
|
313
|
+
const account = this.accounts.find((a) => a.accountId === accountId);
|
|
314
|
+
if (!account)
|
|
315
|
+
return;
|
|
316
|
+
const duration = resolveCooldownMs(errorCode, headers, cooldownMs);
|
|
317
|
+
account.rateLimitedUntil = now() + duration;
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Record an auth/token-refresh failure for an account (#9).
|
|
321
|
+
*
|
|
322
|
+
* Increments consecutiveFailures with a 2-hour TTL reset. After
|
|
323
|
+
* MAX_FAILURES consecutive failures the account is placed in cooldown
|
|
324
|
+
* for COOLDOWN_MS — during which it is skipped by next().
|
|
325
|
+
*/
|
|
326
|
+
markAuthFailure(accountId) {
|
|
193
327
|
const account = this.accounts.find((a) => a.accountId === accountId);
|
|
194
328
|
if (!account)
|
|
195
329
|
return;
|
|
196
|
-
const
|
|
197
|
-
const
|
|
198
|
-
|
|
330
|
+
const t = now();
|
|
331
|
+
const withinWindow = account.lastFailureAt !== undefined &&
|
|
332
|
+
t - account.lastFailureAt < ACCOUNT_FAILURE.FAILURE_RESET_MS;
|
|
333
|
+
const failures = withinWindow ? (account.consecutiveFailures ?? 0) + 1 : 1;
|
|
334
|
+
account.consecutiveFailures = failures;
|
|
335
|
+
account.lastFailureAt = t;
|
|
336
|
+
if (failures >= ACCOUNT_FAILURE.MAX_FAILURES) {
|
|
337
|
+
account.coolingDownUntil = t + ACCOUNT_FAILURE.COOLDOWN_MS;
|
|
338
|
+
account.consecutiveFailures = 0; // reset so next cooldown window starts fresh
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Clear the failure counter and cooldown for an account (called on success).
|
|
343
|
+
*/
|
|
344
|
+
clearAuthFailures(accountId) {
|
|
345
|
+
const account = this.accounts.find((a) => a.accountId === accountId);
|
|
346
|
+
if (!account)
|
|
347
|
+
return;
|
|
348
|
+
account.consecutiveFailures = 0;
|
|
349
|
+
account.lastFailureAt = undefined;
|
|
350
|
+
account.coolingDownUntil = undefined;
|
|
199
351
|
}
|
|
200
352
|
next(strategy) {
|
|
201
353
|
if (this.accounts.length === 0)
|
|
202
354
|
return null;
|
|
203
|
-
this.
|
|
355
|
+
this.clearExpiredStates();
|
|
204
356
|
if (strategy === "sticky") {
|
|
205
357
|
const current = this.accounts[this.activeIndex];
|
|
206
|
-
if (current && !this.
|
|
358
|
+
if (current && !this.isUnavailable(current)) {
|
|
207
359
|
current.lastUsed = now();
|
|
208
360
|
return current;
|
|
209
361
|
}
|
|
@@ -212,7 +364,7 @@ export class AccountPool {
|
|
|
212
364
|
for (let i = 0; i < this.accounts.length; i++) {
|
|
213
365
|
const idx = (start + i) % this.accounts.length;
|
|
214
366
|
const candidate = this.accounts[idx];
|
|
215
|
-
if (!candidate || this.
|
|
367
|
+
if (!candidate || this.isUnavailable(candidate))
|
|
216
368
|
continue;
|
|
217
369
|
this.activeIndex = idx;
|
|
218
370
|
candidate.lastUsed = now();
|
|
@@ -228,15 +380,30 @@ export class AccountPool {
|
|
|
228
380
|
account.refresh = refresh;
|
|
229
381
|
account.expires = expires;
|
|
230
382
|
}
|
|
231
|
-
|
|
383
|
+
/** Returns all accounts (for use by ProactiveRefreshQueue) */
|
|
384
|
+
getAccounts() {
|
|
385
|
+
return this.accounts;
|
|
386
|
+
}
|
|
387
|
+
/** True if account is rate-limited OR in auth-failure cooldown */
|
|
388
|
+
isUnavailable(account) {
|
|
389
|
+
return this.isRateLimited(account) || this.isCoolingDown(account);
|
|
390
|
+
}
|
|
391
|
+
isRateLimited(account) {
|
|
232
392
|
return !!account.rateLimitedUntil && account.rateLimitedUntil > now();
|
|
233
393
|
}
|
|
234
|
-
|
|
394
|
+
isCoolingDown(account) {
|
|
395
|
+
return !!account.coolingDownUntil && account.coolingDownUntil > now();
|
|
396
|
+
}
|
|
397
|
+
/** Clear expired rate-limit and cooldown timestamps */
|
|
398
|
+
clearExpiredStates() {
|
|
235
399
|
const t = now();
|
|
236
400
|
for (const account of this.accounts) {
|
|
237
401
|
if (account.rateLimitedUntil && account.rateLimitedUntil <= t) {
|
|
238
402
|
delete account.rateLimitedUntil;
|
|
239
403
|
}
|
|
404
|
+
if (account.coolingDownUntil && account.coolingDownUntil <= t) {
|
|
405
|
+
delete account.coolingDownUntil;
|
|
406
|
+
}
|
|
240
407
|
}
|
|
241
408
|
}
|
|
242
409
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-pool.js","sourceRoot":"","sources":["../../lib/account-pool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"account-pool.js","sourceRoot":"","sources":["../../lib/account-pool.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/auth/auth.d.ts
CHANGED
|
@@ -16,11 +16,14 @@ export declare function createState(): string;
|
|
|
16
16
|
*/
|
|
17
17
|
export declare function parseAuthorizationInput(input: string): ParsedAuthInput;
|
|
18
18
|
/**
|
|
19
|
-
* Exchange authorization code for access and refresh tokens
|
|
19
|
+
* Exchange authorization code for access and refresh tokens.
|
|
20
|
+
* Captures id_token when returned — it contains chatgpt_account_id as a
|
|
21
|
+
* dedicated JWT claim, making account-ID extraction more reliable.
|
|
22
|
+
*
|
|
20
23
|
* @param code - Authorization code from OAuth flow
|
|
21
24
|
* @param verifier - PKCE verifier
|
|
22
25
|
* @param redirectUri - OAuth redirect URI
|
|
23
|
-
* @returns Token result
|
|
26
|
+
* @returns Token result (includes id_token when available)
|
|
24
27
|
*/
|
|
25
28
|
export declare function exchangeAuthorizationCode(code: string, verifier: string, redirectUri?: string): Promise<TokenResult>;
|
|
26
29
|
/**
|
|
@@ -30,14 +33,62 @@ export declare function exchangeAuthorizationCode(code: string, verifier: string
|
|
|
30
33
|
*/
|
|
31
34
|
export declare function decodeJWT(token: string): JWTPayload | null;
|
|
32
35
|
/**
|
|
33
|
-
*
|
|
36
|
+
* Extract the ChatGPT account ID from a JWT token string.
|
|
37
|
+
* Checks (in priority order, matching first-party opencode CodexAuthPlugin):
|
|
38
|
+
* 1. Root-level chatgpt_account_id claim
|
|
39
|
+
* 2. Nested https://api.openai.com/auth.chatgpt_account_id claim
|
|
40
|
+
* 3. organizations[0].id fallback
|
|
41
|
+
*
|
|
42
|
+
* @param token - JWT string (id_token or access_token)
|
|
43
|
+
* @returns Account ID or undefined if not found
|
|
44
|
+
*/
|
|
45
|
+
export declare function extractAccountIdFromToken(token: string): string | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Extract account ID from a token-response object.
|
|
48
|
+
* Tries id_token first (more authoritative), then access_token.
|
|
49
|
+
*
|
|
50
|
+
* @param tokens - Object with access_token and optional id_token
|
|
51
|
+
* @returns Account ID or undefined
|
|
52
|
+
*/
|
|
53
|
+
export declare function extractAccountId(tokens: {
|
|
54
|
+
access_token: string;
|
|
55
|
+
id_token?: string;
|
|
56
|
+
}): string | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* Refresh access token using refresh token.
|
|
59
|
+
* Captures id_token when returned by the server.
|
|
60
|
+
*
|
|
34
61
|
* @param refreshToken - Refresh token
|
|
35
62
|
* @returns Token result
|
|
36
63
|
*/
|
|
37
64
|
export declare function refreshAccessToken(refreshToken: string): Promise<TokenResult>;
|
|
65
|
+
export declare function refreshAccessTokenShared(accountKey: string, refreshToken: string): Promise<TokenResult>;
|
|
38
66
|
/**
|
|
39
|
-
* Create OAuth authorization flow
|
|
67
|
+
* Create OAuth authorization flow (browser PKCE)
|
|
40
68
|
* @returns Authorization flow details
|
|
41
69
|
*/
|
|
42
70
|
export declare function createAuthorizationFlow(): Promise<AuthorizationFlow>;
|
|
71
|
+
/**
|
|
72
|
+
* Device authorization flow result
|
|
73
|
+
*/
|
|
74
|
+
export interface DeviceAuthorizationFlow {
|
|
75
|
+
/** URL the user visits to enter the code */
|
|
76
|
+
activateUrl: string;
|
|
77
|
+
/** Short code the user types on the device page */
|
|
78
|
+
userCode: string;
|
|
79
|
+
/** Poll interval in milliseconds (server-controlled + safety margin) */
|
|
80
|
+
pollIntervalMs: number;
|
|
81
|
+
/** Poll for completion and exchange for tokens */
|
|
82
|
+
poll: () => Promise<TokenResult>;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Create a headless/device-code authorization flow.
|
|
86
|
+
*
|
|
87
|
+
* This flow requires no browser on the machine running opencode. The user
|
|
88
|
+
* visits a URL on any device and enters a short code to authenticate.
|
|
89
|
+
* Matches the "headless" method in the first-party opencode CodexAuthPlugin.
|
|
90
|
+
*
|
|
91
|
+
* @returns Device authorization flow details
|
|
92
|
+
*/
|
|
93
|
+
export declare function createDeviceAuthorizationFlow(): Promise<DeviceAuthorizationFlow>;
|
|
43
94
|
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../lib/auth/auth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAY,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../lib/auth/auth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAY,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzG,eAAO,MAAM,SAAS,iCAAiC,CAAC;AACxD,eAAO,MAAM,aAAa,4CAA4C,CAAC;AACvE,eAAO,MAAM,SAAS,wCAAwC,CAAC;AAC/D,eAAO,MAAM,YAAY,wCAAwC,CAAC;AAClE,eAAO,MAAM,KAAK,wCAAwC,CAAC;AAI3D;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAwBtE;AAED;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAC9C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,MAAqB,GAChC,OAAO,CAAC,WAAW,CAAC,CAsCtB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAkB1D;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAyB3E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,GAAG,SAAS,CAMrB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAiDnF;AAED,wBAAgB,wBAAwB,CACvC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,CAAC,CAYtB;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAkB1E;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,cAAc,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,IAAI,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;CACjC;AAED;;;;;;;;GAQG;AACH,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAmEtF"}
|