codex-multi-auth 1.2.1 → 1.2.4

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 (151) hide show
  1. package/README.md +3 -3
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +55 -21
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/accounts.d.ts +11 -0
  6. package/dist/lib/accounts.d.ts.map +1 -1
  7. package/dist/lib/accounts.js +320 -70
  8. package/dist/lib/accounts.js.map +1 -1
  9. package/dist/lib/circuit-breaker.d.ts +4 -0
  10. package/dist/lib/circuit-breaker.d.ts.map +1 -1
  11. package/dist/lib/circuit-breaker.js +33 -1
  12. package/dist/lib/circuit-breaker.js.map +1 -1
  13. package/dist/lib/codex-manager/commands/forecast.d.ts +2 -1
  14. package/dist/lib/codex-manager/commands/forecast.d.ts.map +1 -1
  15. package/dist/lib/codex-manager/commands/forecast.js +92 -2
  16. package/dist/lib/codex-manager/commands/forecast.js.map +1 -1
  17. package/dist/lib/codex-manager/commands/report.d.ts +3 -1
  18. package/dist/lib/codex-manager/commands/report.d.ts.map +1 -1
  19. package/dist/lib/codex-manager/commands/report.js +102 -12
  20. package/dist/lib/codex-manager/commands/report.js.map +1 -1
  21. package/dist/lib/codex-manager.d.ts.map +1 -1
  22. package/dist/lib/codex-manager.js +50 -40
  23. package/dist/lib/codex-manager.js.map +1 -1
  24. package/dist/lib/config.d.ts.map +1 -1
  25. package/dist/lib/config.js +172 -17
  26. package/dist/lib/config.js.map +1 -1
  27. package/dist/lib/forecast.d.ts.map +1 -1
  28. package/dist/lib/forecast.js +1 -19
  29. package/dist/lib/forecast.js.map +1 -1
  30. package/dist/lib/health.d.ts +1 -0
  31. package/dist/lib/health.d.ts.map +1 -1
  32. package/dist/lib/health.js +6 -2
  33. package/dist/lib/health.js.map +1 -1
  34. package/dist/lib/parallel-probe.d.ts +1 -1
  35. package/dist/lib/parallel-probe.d.ts.map +1 -1
  36. package/dist/lib/parallel-probe.js +5 -2
  37. package/dist/lib/parallel-probe.js.map +1 -1
  38. package/dist/lib/preemptive-quota-scheduler.d.ts.map +1 -1
  39. package/dist/lib/preemptive-quota-scheduler.js +6 -3
  40. package/dist/lib/preemptive-quota-scheduler.js.map +1 -1
  41. package/dist/lib/proactive-refresh.d.ts +1 -1
  42. package/dist/lib/proactive-refresh.d.ts.map +1 -1
  43. package/dist/lib/proactive-refresh.js +14 -5
  44. package/dist/lib/proactive-refresh.js.map +1 -1
  45. package/dist/lib/refresh-guardian.d.ts +3 -0
  46. package/dist/lib/refresh-guardian.d.ts.map +1 -1
  47. package/dist/lib/refresh-guardian.js +142 -52
  48. package/dist/lib/refresh-guardian.js.map +1 -1
  49. package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
  50. package/dist/lib/request/fetch-helpers.js +180 -43
  51. package/dist/lib/request/fetch-helpers.js.map +1 -1
  52. package/dist/lib/rotation.d.ts +14 -11
  53. package/dist/lib/rotation.d.ts.map +1 -1
  54. package/dist/lib/rotation.js +36 -30
  55. package/dist/lib/rotation.js.map +1 -1
  56. package/dist/lib/runtime/account-check.d.ts +4 -0
  57. package/dist/lib/runtime/account-check.d.ts.map +1 -1
  58. package/dist/lib/runtime/account-check.js +15 -10
  59. package/dist/lib/runtime/account-check.js.map +1 -1
  60. package/dist/lib/runtime/account-state.d.ts +1 -12
  61. package/dist/lib/runtime/account-state.d.ts.map +1 -1
  62. package/dist/lib/runtime/account-state.js +1 -37
  63. package/dist/lib/runtime/account-state.js.map +1 -1
  64. package/dist/lib/runtime/verify-flagged.d.ts +4 -0
  65. package/dist/lib/runtime/verify-flagged.d.ts.map +1 -1
  66. package/dist/lib/runtime/verify-flagged.js +32 -23
  67. package/dist/lib/runtime/verify-flagged.js.map +1 -1
  68. package/dist/lib/storage/flagged-load-entry.d.ts +2 -0
  69. package/dist/lib/storage/flagged-load-entry.d.ts.map +1 -1
  70. package/dist/lib/storage/flagged-load-entry.js +1 -0
  71. package/dist/lib/storage/flagged-load-entry.js.map +1 -1
  72. package/dist/lib/storage/flagged-storage-file.d.ts +4 -0
  73. package/dist/lib/storage/flagged-storage-file.d.ts.map +1 -1
  74. package/dist/lib/storage/flagged-storage-file.js +1 -1
  75. package/dist/lib/storage/flagged-storage-file.js.map +1 -1
  76. package/dist/lib/storage/flagged-storage-io.d.ts +1 -0
  77. package/dist/lib/storage/flagged-storage-io.d.ts.map +1 -1
  78. package/dist/lib/storage/flagged-storage-io.js +130 -5
  79. package/dist/lib/storage/flagged-storage-io.js.map +1 -1
  80. package/dist/lib/storage/identity.d.ts +6 -0
  81. package/dist/lib/storage/identity.d.ts.map +1 -1
  82. package/dist/lib/storage/identity.js +14 -3
  83. package/dist/lib/storage/identity.js.map +1 -1
  84. package/dist/lib/storage/path-state.d.ts +1 -0
  85. package/dist/lib/storage/path-state.d.ts.map +1 -1
  86. package/dist/lib/storage/path-state.js +3 -0
  87. package/dist/lib/storage/path-state.js.map +1 -1
  88. package/dist/lib/storage/paths.d.ts.map +1 -1
  89. package/dist/lib/storage/paths.js +3 -2
  90. package/dist/lib/storage/paths.js.map +1 -1
  91. package/dist/lib/storage.d.ts.map +1 -1
  92. package/dist/lib/storage.js +7 -0
  93. package/dist/lib/storage.js.map +1 -1
  94. package/dist/lib/unified-settings.d.ts.map +1 -1
  95. package/dist/lib/unified-settings.js +226 -28
  96. package/dist/lib/unified-settings.js.map +1 -1
  97. package/package.json +8 -3
  98. package/scripts/codex-bin-resolver.js +99 -0
  99. package/scripts/codex.js +709 -81
  100. package/dist/lib/codex-manager/best.d.ts +0 -26
  101. package/dist/lib/codex-manager/best.d.ts.map +0 -1
  102. package/dist/lib/codex-manager/best.js +0 -249
  103. package/dist/lib/codex-manager/best.js.map +0 -1
  104. package/dist/lib/codex-manager/config-explain.d.ts +0 -2
  105. package/dist/lib/codex-manager/config-explain.d.ts.map +0 -1
  106. package/dist/lib/codex-manager/config-explain.js +0 -62
  107. package/dist/lib/codex-manager/config-explain.js.map +0 -1
  108. package/dist/lib/codex-manager/config-template.d.ts +0 -2
  109. package/dist/lib/codex-manager/config-template.d.ts.map +0 -1
  110. package/dist/lib/codex-manager/config-template.js +0 -112
  111. package/dist/lib/codex-manager/config-template.js.map +0 -1
  112. package/dist/lib/codex-manager/debug-bundle.d.ts +0 -2
  113. package/dist/lib/codex-manager/debug-bundle.d.ts.map +0 -1
  114. package/dist/lib/codex-manager/debug-bundle.js +0 -128
  115. package/dist/lib/codex-manager/debug-bundle.js.map +0 -1
  116. package/dist/lib/codex-manager/doctor.d.ts +0 -20
  117. package/dist/lib/codex-manager/doctor.d.ts.map +0 -1
  118. package/dist/lib/codex-manager/doctor.js +0 -546
  119. package/dist/lib/codex-manager/doctor.js.map +0 -1
  120. package/dist/lib/codex-manager/fix.d.ts +0 -26
  121. package/dist/lib/codex-manager/fix.d.ts.map +0 -1
  122. package/dist/lib/codex-manager/fix.js +0 -366
  123. package/dist/lib/codex-manager/fix.js.map +0 -1
  124. package/dist/lib/codex-manager/forecast.d.ts +0 -26
  125. package/dist/lib/codex-manager/forecast.d.ts.map +0 -1
  126. package/dist/lib/codex-manager/forecast.js +0 -218
  127. package/dist/lib/codex-manager/forecast.js.map +0 -1
  128. package/dist/lib/codex-manager/info.d.ts +0 -11
  129. package/dist/lib/codex-manager/info.d.ts.map +0 -1
  130. package/dist/lib/codex-manager/info.js +0 -91
  131. package/dist/lib/codex-manager/info.js.map +0 -1
  132. package/dist/lib/codex-manager/login.d.ts +0 -40
  133. package/dist/lib/codex-manager/login.d.ts.map +0 -1
  134. package/dist/lib/codex-manager/login.js +0 -1041
  135. package/dist/lib/codex-manager/login.js.map +0 -1
  136. package/dist/lib/codex-manager/report.d.ts +0 -39
  137. package/dist/lib/codex-manager/report.d.ts.map +0 -1
  138. package/dist/lib/codex-manager/report.js +0 -243
  139. package/dist/lib/codex-manager/report.js.map +0 -1
  140. package/dist/lib/codex-manager/switch.d.ts +0 -31
  141. package/dist/lib/codex-manager/switch.d.ts.map +0 -1
  142. package/dist/lib/codex-manager/switch.js +0 -103
  143. package/dist/lib/codex-manager/switch.js.map +0 -1
  144. package/dist/lib/codex-manager/verify-flagged.d.ts +0 -20
  145. package/dist/lib/codex-manager/verify-flagged.d.ts.map +0 -1
  146. package/dist/lib/codex-manager/verify-flagged.js +0 -316
  147. package/dist/lib/codex-manager/verify-flagged.js.map +0 -1
  148. package/dist/lib/request/trace-mode.d.ts +0 -9
  149. package/dist/lib/request/trace-mode.d.ts.map +0 -1
  150. package/dist/lib/request/trace-mode.js +0 -14
  151. package/dist/lib/request/trace-mode.js.map +0 -1
@@ -1,9 +1,10 @@
1
1
  import { promises as fs } from "node:fs";
2
2
  import { dirname, resolve } from "node:path";
3
- import { extractAccountId, formatAccountLabel } from "../../accounts.js";
3
+ import { extractAccountEmail, extractAccountId, formatAccountLabel, sanitizeEmail, } from "../../accounts.js";
4
4
  import { evaluateForecastAccounts, recommendForecastAccount, summarizeForecast, } from "../../forecast.js";
5
5
  import { formatQuotaSnapshotLine, } from "../../quota-probe.js";
6
6
  import { getModelCapabilities, getModelProfile, resolveNormalizedModel, } from "../../request/helpers/model-map.js";
7
+ import { findMatchingAccountIndex, } from "../../storage.js";
7
8
  import { sleep } from "../../utils.js";
8
9
  const RETRYABLE_WRITE_CODES = new Set(["EBUSY", "EPERM"]);
9
10
  function isRetryableWriteError(error) {
@@ -157,6 +158,50 @@ async function defaultWriteFile(path, contents) {
157
158
  }
158
159
  }
159
160
  }
161
+ async function saveAccountsWithRetry(storage, saveAccounts) {
162
+ for (let attempt = 0;; attempt += 1) {
163
+ try {
164
+ await saveAccounts(storage);
165
+ return;
166
+ }
167
+ catch (error) {
168
+ if (!isRetryableWriteError(error) || attempt >= 3) {
169
+ throw error;
170
+ }
171
+ await sleep(10 * 2 ** attempt);
172
+ }
173
+ }
174
+ }
175
+ function applyRefreshedAccountPatch(account, patch) {
176
+ account.refreshToken = patch.refreshToken;
177
+ account.accessToken = patch.accessToken;
178
+ account.expiresAt = patch.expiresAt;
179
+ if (patch.email)
180
+ account.email = patch.email;
181
+ if (patch.accountId) {
182
+ account.accountId = patch.accountId;
183
+ account.accountIdSource = patch.accountIdSource;
184
+ }
185
+ }
186
+ async function persistRefreshedAccountPatch(storage, accountMatch, patch, loadAccounts, saveAccounts) {
187
+ const latestStorage = (await loadAccounts()) ?? storage;
188
+ const nextStorage = structuredClone(latestStorage);
189
+ const targetIndex = findMatchingAccountIndex(nextStorage.accounts, accountMatch, {
190
+ allowUniqueAccountIdFallbackWithoutEmail: true,
191
+ }) ??
192
+ findMatchingAccountIndex(nextStorage.accounts, patch, {
193
+ allowUniqueAccountIdFallbackWithoutEmail: true,
194
+ });
195
+ if (targetIndex === undefined) {
196
+ throw new Error("Unable to resolve refreshed account for persistence");
197
+ }
198
+ const targetAccount = nextStorage.accounts[targetIndex];
199
+ if (!targetAccount) {
200
+ throw new Error("Unable to resolve refreshed account for persistence");
201
+ }
202
+ applyRefreshedAccountPatch(targetAccount, patch);
203
+ await saveAccountsWithRetry(nextStorage, saveAccounts);
204
+ }
160
205
  export async function runReportCommand(args, deps) {
161
206
  const logInfo = deps.logInfo ?? console.log;
162
207
  const logError = deps.logError ?? console.error;
@@ -187,23 +232,68 @@ export async function runReportCommand(args, deps) {
187
232
  const account = storage.accounts[i];
188
233
  if (!account || account.enabled === false)
189
234
  continue;
190
- const refreshResult = await deps.queuedRefresh(account.refreshToken);
191
- if (refreshResult.type !== "success") {
192
- refreshFailures.set(i, {
193
- ...refreshResult,
194
- message: deps.normalizeFailureDetail(refreshResult.message, refreshResult.reason),
195
- });
196
- continue;
235
+ let probeAccessToken = account.accessToken;
236
+ let probeAccountId = account.accountId ?? extractAccountId(account.accessToken);
237
+ if (!deps.hasUsableAccessToken(account, now)) {
238
+ const refreshResult = await deps.queuedRefresh(account.refreshToken);
239
+ if (refreshResult.type !== "success") {
240
+ refreshFailures.set(i, {
241
+ ...refreshResult,
242
+ message: deps.normalizeFailureDetail(refreshResult.message, refreshResult.reason),
243
+ });
244
+ continue;
245
+ }
246
+ const refreshedEmail = sanitizeEmail(extractAccountEmail(refreshResult.access, refreshResult.idToken));
247
+ const tokenDerivedAccountId = extractAccountId(refreshResult.access);
248
+ const refreshedAccountId = account.accountId ?? tokenDerivedAccountId;
249
+ const previousRefreshToken = account.refreshToken;
250
+ const previousAccessToken = account.accessToken;
251
+ const previousExpiresAt = account.expiresAt;
252
+ const previousEmail = account.email;
253
+ const previousAccountId = account.accountId;
254
+ const refreshPatch = {
255
+ refreshToken: refreshResult.refresh,
256
+ accessToken: refreshResult.access,
257
+ expiresAt: refreshResult.expires,
258
+ };
259
+ if (refreshedEmail) {
260
+ refreshPatch.email = refreshedEmail;
261
+ }
262
+ if (tokenDerivedAccountId) {
263
+ refreshPatch.accountId = tokenDerivedAccountId;
264
+ refreshPatch.accountIdSource = "token";
265
+ }
266
+ const accountMatch = {
267
+ refreshToken: previousRefreshToken,
268
+ email: previousEmail,
269
+ accountId: previousAccountId,
270
+ };
271
+ applyRefreshedAccountPatch(account, refreshPatch);
272
+ probeAccessToken = refreshResult.access;
273
+ probeAccountId = account.accountId ?? refreshedAccountId;
274
+ if (previousRefreshToken !== refreshPatch.refreshToken ||
275
+ previousAccessToken !== refreshPatch.accessToken ||
276
+ previousExpiresAt !== refreshPatch.expiresAt ||
277
+ previousEmail !== account.email ||
278
+ previousAccountId !== account.accountId) {
279
+ try {
280
+ await persistRefreshedAccountPatch(storage, accountMatch, refreshPatch, deps.loadAccounts, deps.saveAccounts);
281
+ }
282
+ catch (error) {
283
+ const message = deps.normalizeFailureDetail(error instanceof Error ? error.message : String(error), undefined);
284
+ probeErrors.push(`${formatAccountLabel(account, i)}: ${message}`);
285
+ continue;
286
+ }
287
+ }
197
288
  }
198
- const accountId = account.accountId ?? extractAccountId(refreshResult.access);
199
- if (!accountId) {
289
+ if (!probeAccessToken || !probeAccountId) {
200
290
  probeErrors.push(`${formatAccountLabel(account, i)}: missing accountId for live probe`);
201
291
  continue;
202
292
  }
203
293
  try {
204
294
  const liveQuota = await deps.fetchCodexQuotaSnapshot({
205
- accountId,
206
- accessToken: refreshResult.access,
295
+ accountId: probeAccountId,
296
+ accessToken: probeAccessToken,
207
297
  model: modelInspection.normalized,
208
298
  });
209
299
  liveQuotaByIndex.set(i, liveQuota);
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../../../lib/codex-manager/commands/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../../../lib/codex-manager/commands/report.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"codex-manager.d.ts","sourceRoot":"","sources":["../../lib/codex-manager.ts"],"names":[],"mappings":"AAwzCA,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQ3D;AA+qDD,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,OAAO,CAAC,CAuGrE;AACD,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAgH7E"}
1
+ {"version":3,"file":"codex-manager.d.ts","sourceRoot":"","sources":["../../lib/codex-manager.ts"],"names":[],"mappings":"AAuyCA,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQ3D;AA6sDD,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,OAAO,CAAC,CAuGrE;AACD,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAkH7E"}
@@ -26,6 +26,7 @@ import { evaluateForecastAccounts, recommendForecastAccount, summarizeForecast,
26
26
  import { createLogger } from "./logger.js";
27
27
  import { MODEL_FAMILIES } from "./prompts/codex.js";
28
28
  import { getModelCapabilities, getModelProfile, resolveNormalizedModel, } from "./request/helpers/model-map.js";
29
+ import { formatRateLimitEntry as formatAccountRateLimitEntry, resolveActiveIndex, } from "./runtime/account-status.js";
29
30
  import { loadQuotaCache, saveQuotaCache, } from "./quota-cache.js";
30
31
  import { fetchCodexQuotaSnapshot, formatQuotaSnapshotLine, } from "./quota-probe.js";
31
32
  import { queuedRefresh } from "./refresh-queue.js";
@@ -307,41 +308,8 @@ const IMPLEMENTED_FEATURES = [
307
308
  { id: 40, name: "OAuth browser-first flow with manual callback fallback" },
308
309
  { id: 41, name: "Auto-switch to best account command" },
309
310
  ];
310
- function resolveActiveIndex(storage, family = "codex") {
311
- const total = storage.accounts.length;
312
- if (total === 0)
313
- return 0;
314
- const rawCandidate = storage.activeIndexByFamily?.[family] ?? storage.activeIndex;
315
- const raw = Number.isFinite(rawCandidate) ? rawCandidate : 0;
316
- return Math.max(0, Math.min(raw, total - 1));
317
- }
318
- function getRateLimitResetTimeForFamily(account, now, family) {
319
- const times = account.rateLimitResetTimes;
320
- if (!times)
321
- return null;
322
- let minReset = null;
323
- const prefix = `${family}:`;
324
- for (const [key, value] of Object.entries(times)) {
325
- if (typeof value !== "number")
326
- continue;
327
- if (value <= now)
328
- continue;
329
- if (key !== family && !key.startsWith(prefix))
330
- continue;
331
- if (minReset === null || value < minReset) {
332
- minReset = value;
333
- }
334
- }
335
- return minReset;
336
- }
337
311
  function formatRateLimitEntry(account, now, family = "codex") {
338
- const resetAt = getRateLimitResetTimeForFamily(account, now, family);
339
- if (typeof resetAt !== "number")
340
- return null;
341
- const remaining = resetAt - now;
342
- if (remaining <= 0)
343
- return null;
344
- return `resets in ${formatWaitTime(remaining)}`;
312
+ return formatAccountRateLimitEntry(account, now, formatWaitTime, family);
345
313
  }
346
314
  function normalizeQuotaEmail(email) {
347
315
  const normalized = sanitizeEmail(email);
@@ -682,6 +650,9 @@ function readQuotaLeftPercent(account, windowLabel) {
682
650
  }
683
651
  return parseLeftPercentFromQuotaSummary(account.quotaSummary, windowLabel);
684
652
  }
653
+ function readQuotaFloorPercent(account) {
654
+ return Math.min(readQuotaLeftPercent(account, "5h"), readQuotaLeftPercent(account, "7d"));
655
+ }
685
656
  function accountStatusSortBucket(status) {
686
657
  switch (status) {
687
658
  case "active":
@@ -700,7 +671,21 @@ function accountStatusSortBucket(status) {
700
671
  return 1;
701
672
  }
702
673
  }
674
+ function accountReadinessSortBucket(account) {
675
+ const statusBucket = accountStatusSortBucket(account.status);
676
+ if (statusBucket >= 2)
677
+ return statusBucket;
678
+ return account.quotaRateLimited ? 2 : statusBucket;
679
+ }
703
680
  function compareReadyFirstAccounts(left, right) {
681
+ const bucketDelta = accountReadinessSortBucket(left) -
682
+ accountReadinessSortBucket(right);
683
+ if (bucketDelta !== 0)
684
+ return bucketDelta;
685
+ const leftFloor = readQuotaFloorPercent(left);
686
+ const rightFloor = readQuotaFloorPercent(right);
687
+ if (leftFloor !== rightFloor)
688
+ return rightFloor - leftFloor;
704
689
  const left5h = readQuotaLeftPercent(left, "5h");
705
690
  const right5h = readQuotaLeftPercent(right, "5h");
706
691
  if (left5h !== right5h)
@@ -709,10 +694,6 @@ function compareReadyFirstAccounts(left, right) {
709
694
  const right7d = readQuotaLeftPercent(right, "7d");
710
695
  if (left7d !== right7d)
711
696
  return right7d - left7d;
712
- const bucketDelta = accountStatusSortBucket(left.status) -
713
- accountStatusSortBucket(right.status);
714
- if (bucketDelta !== 0)
715
- return bucketDelta;
716
697
  const leftLastUsed = left.lastUsed ?? 0;
717
698
  const rightLastUsed = right.lastUsed ?? 0;
718
699
  if (leftLastUsed !== rightLastUsed)
@@ -1781,6 +1762,7 @@ async function runForecast(args) {
1781
1762
  return runForecastCommand(args, {
1782
1763
  setStoragePath,
1783
1764
  loadAccounts,
1765
+ saveAccounts,
1784
1766
  loadDashboardDisplaySettings,
1785
1767
  resolveActiveIndex,
1786
1768
  loadQuotaCache,
@@ -1985,6 +1967,12 @@ async function runAuthLogin(args) {
1985
1967
  setStoragePath(null);
1986
1968
  let pendingMenuQuotaRefresh = null;
1987
1969
  let menuQuotaRefreshStatus;
1970
+ let skipNextMenuQuotaAutoRefresh = false;
1971
+ let menuQuotaRefreshGeneration = 0;
1972
+ const clearMenuQuotaAutoRefreshSkip = () => {
1973
+ skipNextMenuQuotaAutoRefresh = false;
1974
+ menuQuotaRefreshGeneration += 1;
1975
+ };
1988
1976
  loginFlow: while (true) {
1989
1977
  let existingStorage = await loadAccounts();
1990
1978
  if (existingStorage && existingStorage.accounts.length > 0) {
@@ -2000,18 +1988,30 @@ async function runAuthLogin(args) {
2000
1988
  const shouldAutoFetchLimits = displaySettings.menuAutoFetchLimits ?? true;
2001
1989
  const showFetchStatus = displaySettings.menuShowFetchStatus ?? true;
2002
1990
  const quotaTtlMs = displaySettings.menuQuotaTtlMs ?? DEFAULT_MENU_QUOTA_REFRESH_TTL_MS;
2003
- if (shouldAutoFetchLimits && !pendingMenuQuotaRefresh) {
1991
+ const shouldSkipAutoFetchThisPass = !pendingMenuQuotaRefresh && skipNextMenuQuotaAutoRefresh;
1992
+ if (shouldSkipAutoFetchThisPass) {
1993
+ skipNextMenuQuotaAutoRefresh = false;
1994
+ }
1995
+ if (shouldAutoFetchLimits
1996
+ && !pendingMenuQuotaRefresh
1997
+ && !shouldSkipAutoFetchThisPass) {
2004
1998
  const staleCount = countMenuQuotaRefreshTargets(currentStorage, quotaCache, quotaTtlMs);
2005
1999
  if (staleCount > 0) {
2006
2000
  if (showFetchStatus) {
2007
2001
  menuQuotaRefreshStatus = `${UI_COPY.mainMenu.loadingLimits} [0/${staleCount}]`;
2008
2002
  }
2003
+ const refreshGeneration = menuQuotaRefreshGeneration;
2009
2004
  pendingMenuQuotaRefresh = refreshQuotaCacheForMenu(currentStorage, quotaCache, quotaTtlMs, (current, total) => {
2010
2005
  if (!showFetchStatus)
2011
2006
  return;
2012
2007
  menuQuotaRefreshStatus = `${UI_COPY.mainMenu.loadingLimits} [${current}/${total}]`;
2013
2008
  })
2014
- .then(() => undefined)
2009
+ .then(() => {
2010
+ if (refreshGeneration === menuQuotaRefreshGeneration) {
2011
+ skipNextMenuQuotaAutoRefresh = true;
2012
+ }
2013
+ return undefined;
2014
+ })
2015
2015
  .catch(() => undefined)
2016
2016
  .finally(() => {
2017
2017
  menuQuotaRefreshStatus = undefined;
@@ -2031,40 +2031,47 @@ async function runAuthLogin(args) {
2031
2031
  return 0;
2032
2032
  }
2033
2033
  if (menuResult.mode === "check") {
2034
+ clearMenuQuotaAutoRefreshSkip();
2034
2035
  await runActionPanel("Quick Check", "Checking local session + live status", async () => {
2035
2036
  await runHealthCheck({ forceRefresh: false, liveProbe: true });
2036
2037
  }, displaySettings);
2037
2038
  continue;
2038
2039
  }
2039
2040
  if (menuResult.mode === "deep-check") {
2041
+ clearMenuQuotaAutoRefreshSkip();
2040
2042
  await runActionPanel("Deep Check", "Refreshing and testing all accounts", async () => {
2041
2043
  await runHealthCheck({ forceRefresh: true, liveProbe: true });
2042
2044
  }, displaySettings);
2043
2045
  continue;
2044
2046
  }
2045
2047
  if (menuResult.mode === "forecast") {
2048
+ clearMenuQuotaAutoRefreshSkip();
2046
2049
  await runActionPanel("Best Account", "Comparing accounts", async () => {
2047
2050
  await runForecast(["--live"]);
2048
2051
  }, displaySettings);
2049
2052
  continue;
2050
2053
  }
2051
2054
  if (menuResult.mode === "fix") {
2055
+ clearMenuQuotaAutoRefreshSkip();
2052
2056
  await runActionPanel("Auto-Fix", "Checking and fixing common issues", async () => {
2053
2057
  await runRepairFix(["--live"], createRepairCommandDeps());
2054
2058
  }, displaySettings);
2055
2059
  continue;
2056
2060
  }
2057
2061
  if (menuResult.mode === "settings") {
2062
+ clearMenuQuotaAutoRefreshSkip();
2058
2063
  await configureUnifiedSettings(displaySettings);
2059
2064
  continue;
2060
2065
  }
2061
2066
  if (menuResult.mode === "verify-flagged") {
2067
+ clearMenuQuotaAutoRefreshSkip();
2062
2068
  await runActionPanel("Problem Account Check", "Checking problem accounts", async () => {
2063
2069
  await runRepairVerifyFlagged([], createRepairCommandDeps());
2064
2070
  }, displaySettings);
2065
2071
  continue;
2066
2072
  }
2067
2073
  if (menuResult.mode === "fresh" && menuResult.deleteAll) {
2074
+ clearMenuQuotaAutoRefreshSkip();
2068
2075
  await runActionPanel("Reset Accounts", "Deleting all saved accounts", async () => {
2069
2076
  await clearAccountsAndReset();
2070
2077
  console.log("Cleared saved accounts from active storage. Recovery snapshots remain available.");
@@ -2072,6 +2079,7 @@ async function runAuthLogin(args) {
2072
2079
  continue;
2073
2080
  }
2074
2081
  if (menuResult.mode === "manage") {
2082
+ clearMenuQuotaAutoRefreshSkip();
2075
2083
  const requiresInteractiveOAuth = typeof menuResult.refreshAccountIndex === "number";
2076
2084
  if (requiresInteractiveOAuth) {
2077
2085
  await handleManageAction(currentStorage, menuResult);
@@ -2482,7 +2490,9 @@ export async function runCodexMultiAuthCli(rawArgs) {
2482
2490
  setStoragePath,
2483
2491
  getStoragePath,
2484
2492
  loadAccounts,
2493
+ saveAccounts,
2485
2494
  resolveActiveIndex,
2495
+ hasUsableAccessToken,
2486
2496
  queuedRefresh,
2487
2497
  fetchCodexQuotaSnapshot,
2488
2498
  formatRateLimitEntry,