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.
Files changed (78) hide show
  1. package/README.md +24 -0
  2. package/config/README.md +19 -93
  3. package/config/opencode-modern.json +149 -42
  4. package/dist/index.d.ts +0 -12
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +215 -109
  7. package/dist/index.js.map +1 -1
  8. package/dist/lib/account-pool.d.ts +29 -3
  9. package/dist/lib/account-pool.d.ts.map +1 -1
  10. package/dist/lib/account-pool.js +211 -44
  11. package/dist/lib/account-pool.js.map +1 -1
  12. package/dist/lib/auth/auth.d.ts +55 -4
  13. package/dist/lib/auth/auth.d.ts.map +1 -1
  14. package/dist/lib/auth/auth.js +142 -13
  15. package/dist/lib/auth/auth.js.map +1 -1
  16. package/dist/lib/auth/server.d.ts.map +1 -1
  17. package/dist/lib/auth/server.js +12 -8
  18. package/dist/lib/auth/server.js.map +1 -1
  19. package/dist/lib/auth/ui/account-menu.d.ts +50 -0
  20. package/dist/lib/auth/ui/account-menu.d.ts.map +1 -0
  21. package/dist/lib/auth/ui/account-menu.js +258 -0
  22. package/dist/lib/auth/ui/account-menu.js.map +1 -0
  23. package/dist/lib/auth/ui/ansi.d.ts +23 -0
  24. package/dist/lib/auth/ui/ansi.d.ts.map +1 -0
  25. package/dist/lib/auth/ui/ansi.js +37 -0
  26. package/dist/lib/auth/ui/ansi.js.map +1 -0
  27. package/dist/lib/auth/ui/confirm.d.ts +2 -0
  28. package/dist/lib/auth/ui/confirm.d.ts.map +1 -0
  29. package/dist/lib/auth/ui/confirm.js +8 -0
  30. package/dist/lib/auth/ui/confirm.js.map +1 -0
  31. package/dist/lib/auth/ui/select.d.ts +21 -0
  32. package/dist/lib/auth/ui/select.d.ts.map +1 -0
  33. package/dist/lib/auth/ui/select.js +208 -0
  34. package/dist/lib/auth/ui/select.js.map +1 -0
  35. package/dist/lib/config.d.ts.map +1 -1
  36. package/dist/lib/config.js +13 -4
  37. package/dist/lib/config.js.map +1 -1
  38. package/dist/lib/constants.d.ts +76 -3
  39. package/dist/lib/constants.d.ts.map +1 -1
  40. package/dist/lib/constants.js +80 -3
  41. package/dist/lib/constants.js.map +1 -1
  42. package/dist/lib/logger.d.ts +6 -0
  43. package/dist/lib/logger.d.ts.map +1 -1
  44. package/dist/lib/logger.js +11 -2
  45. package/dist/lib/logger.js.map +1 -1
  46. package/dist/lib/prompts/codex.d.ts +1 -1
  47. package/dist/lib/prompts/codex.d.ts.map +1 -1
  48. package/dist/lib/prompts/codex.js +15 -2
  49. package/dist/lib/prompts/codex.js.map +1 -1
  50. package/dist/lib/refresh-queue.d.ts +56 -0
  51. package/dist/lib/refresh-queue.d.ts.map +1 -0
  52. package/dist/lib/refresh-queue.js +148 -0
  53. package/dist/lib/refresh-queue.js.map +1 -0
  54. package/dist/lib/request/fetch-helpers.d.ts +2 -1
  55. package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
  56. package/dist/lib/request/fetch-helpers.js +25 -5
  57. package/dist/lib/request/fetch-helpers.js.map +1 -1
  58. package/dist/lib/request/helpers/input-utils.d.ts.map +1 -1
  59. package/dist/lib/request/helpers/input-utils.js +12 -10
  60. package/dist/lib/request/helpers/input-utils.js.map +1 -1
  61. package/dist/lib/request/helpers/model-map.d.ts.map +1 -1
  62. package/dist/lib/request/helpers/model-map.js +14 -1
  63. package/dist/lib/request/helpers/model-map.js.map +1 -1
  64. package/dist/lib/request/request-transformer.d.ts.map +1 -1
  65. package/dist/lib/request/request-transformer.js +33 -29
  66. package/dist/lib/request/request-transformer.js.map +1 -1
  67. package/dist/lib/request/response-handler.d.ts.map +1 -1
  68. package/dist/lib/request/response-handler.js +17 -13
  69. package/dist/lib/request/response-handler.js.map +1 -1
  70. package/dist/lib/schemas.d.ts +85 -0
  71. package/dist/lib/schemas.d.ts.map +1 -0
  72. package/dist/lib/schemas.js +93 -0
  73. package/dist/lib/schemas.js.map +1 -0
  74. package/dist/lib/types.d.ts +18 -2
  75. package/dist/lib/types.d.ts.map +1 -1
  76. package/package.json +6 -7
  77. package/scripts/install-opencode-codex-auth.js +7 -27
  78. package/config/opencode-legacy.json +0 -571
@@ -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
- const STORAGE_VERSION = 1;
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), accounts.length || 1),
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 payload = {
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
- chmodSync(path, 0o600);
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
- catch {
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
- const incomingIsOlder = normalized.expires < existing.expires;
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).length;
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
- if (!account.rateLimitedUntil || account.rateLimitedUntil <= t)
184
- continue;
185
- const remaining = account.rateLimitedUntil - t;
186
- if (min === null || remaining < min) {
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
- markRateLimited(accountId, headers, cooldownMs) {
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 fallback = normalizeCooldown(cooldownMs);
197
- const retryAfter = retryAfterFromHeaders(headers, fallback);
198
- account.rateLimitedUntil = now() + retryAfter;
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.clearExpiredLimits();
355
+ this.clearExpiredStates();
204
356
  if (strategy === "sticky") {
205
357
  const current = this.accounts[this.activeIndex];
206
- if (current && !this.isLimited(current)) {
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.isLimited(candidate))
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
- isLimited(account) {
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
- clearExpiredLimits() {
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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"}
@@ -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
- * Refresh access token using refresh token
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;AAGzG,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;AAE3D;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAwBtE;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC9C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,MAAqB,GAChC,OAAO,CAAC,WAAW,CAAC,CAoCtB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAU1D;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAiDnF;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAiB1E"}
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"}