codex-multi-auth 2.3.0-beta.2 → 2.3.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 (162) hide show
  1. package/.codex-plugin/plugin.json +2 -1
  2. package/README.md +2 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +6 -0
  5. package/dist/lib/account-policy.d.ts.map +1 -1
  6. package/dist/lib/account-policy.js +2 -1
  7. package/dist/lib/accounts/rate-limits.d.ts +8 -0
  8. package/dist/lib/accounts/rate-limits.d.ts.map +1 -1
  9. package/dist/lib/accounts/rate-limits.js +13 -0
  10. package/dist/lib/accounts.d.ts +19 -1
  11. package/dist/lib/accounts.d.ts.map +1 -1
  12. package/dist/lib/accounts.js +31 -2
  13. package/dist/lib/audit.d.ts +0 -9
  14. package/dist/lib/audit.d.ts.map +1 -1
  15. package/dist/lib/auth/device-auth.d.ts +1 -6
  16. package/dist/lib/auth/device-auth.d.ts.map +1 -1
  17. package/dist/lib/auth/device-auth.js +5 -5
  18. package/dist/lib/budget-guard.d.ts.map +1 -1
  19. package/dist/lib/budget-guard.js +2 -1
  20. package/dist/lib/codex-cli/writer.d.ts.map +1 -1
  21. package/dist/lib/codex-cli/writer.js +2 -1
  22. package/dist/lib/codex-manager/backend-settings-helpers.d.ts +0 -1
  23. package/dist/lib/codex-manager/backend-settings-helpers.d.ts.map +1 -1
  24. package/dist/lib/codex-manager/backend-settings-helpers.js +1 -1
  25. package/dist/lib/codex-manager/behavior-settings-panel.d.ts +0 -19
  26. package/dist/lib/codex-manager/behavior-settings-panel.d.ts.map +1 -1
  27. package/dist/lib/codex-manager/commands/report.d.ts.map +1 -1
  28. package/dist/lib/codex-manager/commands/report.js +2 -1
  29. package/dist/lib/codex-manager/commands/uninstall.d.ts +2 -2
  30. package/dist/lib/codex-manager/commands/uninstall.d.ts.map +1 -1
  31. package/dist/lib/codex-manager/commands/uninstall.js +1 -1
  32. package/dist/lib/codex-manager/commands/usage.d.ts.map +1 -1
  33. package/dist/lib/codex-manager/commands/usage.js +2 -1
  34. package/dist/lib/codex-manager/commands/verify.d.ts +2 -2
  35. package/dist/lib/codex-manager/commands/verify.d.ts.map +1 -1
  36. package/dist/lib/codex-manager/commands/why-selected.d.ts +1 -22
  37. package/dist/lib/codex-manager/commands/why-selected.d.ts.map +1 -1
  38. package/dist/lib/codex-manager/dashboard-display-panel.d.ts +0 -14
  39. package/dist/lib/codex-manager/dashboard-display-panel.d.ts.map +1 -1
  40. package/dist/lib/codex-manager/experimental-settings-prompt.d.ts +2 -1
  41. package/dist/lib/codex-manager/experimental-settings-prompt.d.ts.map +1 -1
  42. package/dist/lib/codex-manager/forecast-report-shared.d.ts +2 -2
  43. package/dist/lib/codex-manager/forecast-report-shared.d.ts.map +1 -1
  44. package/dist/lib/codex-manager/forecast-report-shared.js +2 -2
  45. package/dist/lib/codex-manager/formatters/quota-formatters.d.ts +0 -2
  46. package/dist/lib/codex-manager/formatters/quota-formatters.d.ts.map +1 -1
  47. package/dist/lib/codex-manager/formatters/quota-formatters.js +2 -2
  48. package/dist/lib/codex-manager/help.d.ts +2 -1
  49. package/dist/lib/codex-manager/help.d.ts.map +1 -1
  50. package/dist/lib/codex-manager/repair-commands.d.ts +0 -15
  51. package/dist/lib/codex-manager/repair-commands.d.ts.map +1 -1
  52. package/dist/lib/codex-manager/repair-commands.js +5 -5
  53. package/dist/lib/codex-manager/settings-hub/backend.d.ts +0 -5
  54. package/dist/lib/codex-manager/settings-hub/backend.d.ts.map +1 -1
  55. package/dist/lib/codex-manager/settings-hub/backend.js +1 -1
  56. package/dist/lib/codex-manager/settings-hub/dashboard.d.ts +1 -14
  57. package/dist/lib/codex-manager/settings-hub/dashboard.d.ts.map +1 -1
  58. package/dist/lib/codex-manager/settings-hub/dashboard.js +8 -8
  59. package/dist/lib/codex-manager/settings-write-queue.d.ts +0 -10
  60. package/dist/lib/codex-manager/settings-write-queue.d.ts.map +1 -1
  61. package/dist/lib/codex-manager/settings-write-queue.js +10 -10
  62. package/dist/lib/codex-manager/statusline-settings-panel.d.ts +2 -17
  63. package/dist/lib/codex-manager/statusline-settings-panel.d.ts.map +1 -1
  64. package/dist/lib/codex-manager/theme-settings-panel.d.ts +0 -13
  65. package/dist/lib/codex-manager/theme-settings-panel.d.ts.map +1 -1
  66. package/dist/lib/config.d.ts +0 -13
  67. package/dist/lib/config.d.ts.map +1 -1
  68. package/dist/lib/config.js +22 -19
  69. package/dist/lib/dashboard-settings.d.ts +3 -3
  70. package/dist/lib/dashboard-settings.d.ts.map +1 -1
  71. package/dist/lib/dashboard-settings.js +0 -1
  72. package/dist/lib/errors.d.ts +0 -1
  73. package/dist/lib/errors.d.ts.map +1 -1
  74. package/dist/lib/forecast.d.ts +4 -3
  75. package/dist/lib/forecast.d.ts.map +1 -1
  76. package/dist/lib/fs-retry.d.ts +0 -3
  77. package/dist/lib/fs-retry.d.ts.map +1 -1
  78. package/dist/lib/fs-retry.js +3 -3
  79. package/dist/lib/index.d.ts +1 -0
  80. package/dist/lib/index.d.ts.map +1 -1
  81. package/dist/lib/index.js +1 -0
  82. package/dist/lib/local-client-tokens.d.ts.map +1 -1
  83. package/dist/lib/local-client-tokens.js +2 -1
  84. package/dist/lib/oc-chatgpt-import-adapter.d.ts +1 -1
  85. package/dist/lib/oc-chatgpt-import-adapter.d.ts.map +1 -1
  86. package/dist/lib/oc-chatgpt-orchestrator.d.ts.map +1 -1
  87. package/dist/lib/oc-chatgpt-orchestrator.js +2 -1
  88. package/dist/lib/oc-chatgpt-target-detection.d.ts +1 -1
  89. package/dist/lib/oc-chatgpt-target-detection.d.ts.map +1 -1
  90. package/dist/lib/prompts/codex-host-bridge.d.ts +0 -8
  91. package/dist/lib/prompts/codex-host-bridge.d.ts.map +1 -1
  92. package/dist/lib/prompts/codex-host-bridge.js +0 -20
  93. package/dist/lib/prompts/codex.d.ts.map +1 -1
  94. package/dist/lib/prompts/codex.js +2 -1
  95. package/dist/lib/prompts/fetch-utils.d.ts +0 -2
  96. package/dist/lib/prompts/fetch-utils.d.ts.map +1 -1
  97. package/dist/lib/prompts/fetch-utils.js +2 -2
  98. package/dist/lib/prompts/host-codex-prompt.d.ts.map +1 -1
  99. package/dist/lib/prompts/host-codex-prompt.js +2 -1
  100. package/dist/lib/quota-cache.d.ts.map +1 -1
  101. package/dist/lib/quota-cache.js +2 -1
  102. package/dist/lib/recovery/storage.d.ts.map +1 -1
  103. package/dist/lib/recovery/storage.js +5 -3
  104. package/dist/lib/recovery/types.d.ts +4 -12
  105. package/dist/lib/recovery/types.d.ts.map +1 -1
  106. package/dist/lib/recovery.d.ts +2 -2
  107. package/dist/lib/recovery.d.ts.map +1 -1
  108. package/dist/lib/request/response-compaction.d.ts +2 -1
  109. package/dist/lib/request/response-compaction.d.ts.map +1 -1
  110. package/dist/lib/request/stream-failover-runtime.d.ts.map +1 -1
  111. package/dist/lib/request/stream-failover-runtime.js +30 -1
  112. package/dist/lib/rotation.d.ts +1 -3
  113. package/dist/lib/rotation.d.ts.map +1 -1
  114. package/dist/lib/rotation.js +1 -2
  115. package/dist/lib/routing-profiles.d.ts.map +1 -1
  116. package/dist/lib/routing-profiles.js +2 -1
  117. package/dist/lib/runtime/config-toml.d.ts +0 -6
  118. package/dist/lib/runtime/config-toml.d.ts.map +1 -1
  119. package/dist/lib/runtime/config-toml.js +6 -6
  120. package/dist/lib/runtime/event-handler.d.ts +0 -31
  121. package/dist/lib/runtime/event-handler.d.ts.map +1 -1
  122. package/dist/lib/runtime/event-handler.js +0 -22
  123. package/dist/lib/runtime/first-run.d.ts +3 -5
  124. package/dist/lib/runtime/first-run.d.ts.map +1 -1
  125. package/dist/lib/runtime/first-run.js +2 -2
  126. package/dist/lib/runtime/quota-headers.d.ts +1 -6
  127. package/dist/lib/runtime/quota-headers.d.ts.map +1 -1
  128. package/dist/lib/runtime/quota-headers.js +5 -5
  129. package/dist/lib/runtime/rotation-proxy-state.d.ts.map +1 -1
  130. package/dist/lib/runtime/rotation-proxy-state.js +24 -0
  131. package/dist/lib/runtime/runtime-current-account.d.ts +3 -3
  132. package/dist/lib/runtime/runtime-current-account.d.ts.map +1 -1
  133. package/dist/lib/runtime/runtime-current-account.js +1 -1
  134. package/dist/lib/runtime/runtime-observability.d.ts +2 -2
  135. package/dist/lib/runtime/runtime-observability.d.ts.map +1 -1
  136. package/dist/lib/runtime/runtime-observability.js +0 -4
  137. package/dist/lib/runtime-rotation-proxy.d.ts.map +1 -1
  138. package/dist/lib/runtime-rotation-proxy.js +20 -6
  139. package/dist/lib/schemas.d.ts +3 -91
  140. package/dist/lib/schemas.d.ts.map +1 -1
  141. package/dist/lib/schemas.js +8 -8
  142. package/dist/lib/storage/file-paths.d.ts +2 -2
  143. package/dist/lib/storage/file-paths.d.ts.map +1 -1
  144. package/dist/lib/storage/file-paths.js +2 -2
  145. package/dist/lib/storage/flagged-storage-io.d.ts.map +1 -1
  146. package/dist/lib/storage/flagged-storage-io.js +2 -2
  147. package/dist/lib/storage/import-export.d.ts.map +1 -1
  148. package/dist/lib/storage/import-export.js +2 -2
  149. package/dist/lib/storage/migrations.d.ts +2 -1
  150. package/dist/lib/storage/migrations.d.ts.map +1 -1
  151. package/dist/lib/storage.d.ts.map +1 -1
  152. package/dist/lib/storage.js +30 -23
  153. package/dist/lib/temp-path.d.ts +26 -0
  154. package/dist/lib/temp-path.d.ts.map +1 -0
  155. package/dist/lib/temp-path.js +30 -0
  156. package/dist/lib/ui/theme.d.ts +3 -2
  157. package/dist/lib/ui/theme.d.ts.map +1 -1
  158. package/dist/lib/unified-settings.d.ts.map +1 -1
  159. package/dist/lib/unified-settings.js +2 -1
  160. package/dist/lib/update-notice.d.ts.map +1 -1
  161. package/dist/lib/update-notice.js +2 -1
  162. package/package.json +1 -2
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "codex-multi-auth",
3
- "version": "2.3.0-beta.1",
3
+ "version": "2.3.0",
4
4
  "description": "Install and operate codex-multi-auth for the official @openai/codex CLI with multi-account OAuth rotation, switching, health checks, and recovery tools.",
5
5
  "interface": {
6
6
  "composerIcon": "./assets/codex-multi-auth-icon.svg"
7
7
  },
8
8
  "skills": "./skills/"
9
9
  }
10
+
package/README.md CHANGED
@@ -383,8 +383,8 @@ codex-multi-auth doctor --json
383
383
 
384
384
  ## Release Notes
385
385
 
386
- - Current prerelease: [docs/releases/v2.3.0-beta.2.md](docs/releases/v2.3.0-beta.2.md) — install via `npm i -g codex-multi-auth@beta`
387
- - Current stable: [docs/releases/v2.2.2.md](docs/releases/v2.2.2.md) — install via `npm i -g codex-multi-auth`
386
+ - Current stable: [docs/releases/v2.3.0.md](docs/releases/v2.3.0.md) — install via `npm i -g codex-multi-auth`
387
+ - Previous stable: [docs/releases/v2.2.2.md](docs/releases/v2.2.2.md)
388
388
  - Previous stable: [docs/releases/v2.2.1.md](docs/releases/v2.2.1.md)
389
389
  - Previous stable: [docs/releases/v2.2.0.md](docs/releases/v2.2.0.md)
390
390
  - Previous stable: [docs/releases/v2.1.12.md](docs/releases/v2.1.12.md)
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,kBAAkB,CAAC;AA2V5D;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,iBAAiB,EAAE,MAquI/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,KAAoB,CAAC;AAElD,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,kBAAkB,CAAC;AA2V5D;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,iBAAiB,EAAE,MA2uI/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,KAAoB,CAAC;AAElD,eAAe,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -1360,6 +1360,12 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
1360
1360
  // regardless of the cooldown mark (AUDIT-H3 / D-07).
1361
1361
  accountManager.markRateLimitedWithReason(account, cooldownMs, modelFamily, parseRateLimitReason(rateLimit?.code), model);
1362
1362
  accountManager.recordRateLimit(account, modelFamily, model);
1363
+ // Persist the rate-limit window like the full-rotation
1364
+ // branch below (line ~2327). markRateLimitedWithReason
1365
+ // mutates `rateLimitResetTimes`, which is serialized to
1366
+ // disk; without this a crash during the retry sleep loses
1367
+ // the cooldown and the account is re-selected on restart.
1368
+ accountManager.saveToDiskDebounced();
1363
1369
  if (accountManager.shouldShowAccountToast(account.index, rateLimitToastDebounceMs)) {
1364
1370
  await showRuntimeToast(client, `Rate limited. Retrying in ${waitLabel} (attempt ${shortRateLimitRetryCount})...`, "warning", { duration: toastDurationMs });
1365
1371
  accountManager.markToastShown(account.index);
@@ -1 +1 @@
1
- {"version":3,"file":"account-policy.d.ts","sourceRoot":"","sources":["../../lib/account-policy.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtD,MAAM,WAAW,aAAa;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACxC;AAkFD,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,GAAG,OAAO,CAAC,EACvD,MAAM,CAAC,EAAE,MAAM,GACb,MAAM,CAMR;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAa1E;AAED,wBAAsB,sBAAsB,CAC3C,KAAK,EAAE,kBAAkB,GACvB,OAAO,CAAC,IAAI,CAAC,CAsCf;AAED,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,kBAAkB,EACzB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,EACvC,GAAG,SAAa,GACd,aAAa,CAgBf;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEtE;AAED,wBAAgB,oCAAoC,IAAI,IAAI,CAE3D"}
1
+ {"version":3,"file":"account-policy.d.ts","sourceRoot":"","sources":["../../lib/account-policy.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAItD,MAAM,WAAW,aAAa;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACxC;AAkFD,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,GAAG,OAAO,CAAC,EACvD,MAAM,CAAC,EAAE,MAAM,GACb,MAAM,CAMR;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAa1E;AAED,wBAAsB,sBAAsB,CAC3C,KAAK,EAAE,kBAAkB,GACvB,OAAO,CAAC,IAAI,CAAC,CAsCf;AAED,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,kBAAkB,EACzB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,EACvC,GAAG,SAAa,GACd,aAAa,CAgBf;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEtE;AAED,wBAAgB,oCAAoC,IAAI,IAAI,CAE3D"}
@@ -4,6 +4,7 @@ import { basename, join } from "node:path";
4
4
  import { logWarn } from "./logger.js";
5
5
  import { getCodexMultiAuthDir } from "./runtime-paths.js";
6
6
  import { isRecord, sleep } from "./utils.js";
7
+ import { tempPathFor } from "./temp-path.js";
7
8
  const ACCOUNT_POLICY_FILE_NAME = "account-policies.json";
8
9
  const RETRYABLE_FS_CODES = new Set(["EBUSY", "EPERM"]);
9
10
  let writeQueue = Promise.resolve();
@@ -102,7 +103,7 @@ export async function saveAccountPolicyStore(store) {
102
103
  const payload = normalizeStore(store);
103
104
  const task = async () => {
104
105
  await fs.mkdir(getCodexMultiAuthDir(), { recursive: true, mode: 0o700 });
105
- const tempPath = `${path}.${process.pid}.${Date.now()}.${Math.random().toString(36).slice(2, 8)}.tmp`;
106
+ const tempPath = tempPathFor(path);
106
107
  let moved = false;
107
108
  try {
108
109
  await fs.writeFile(tempPath, `${JSON.stringify(payload, null, 2)}\n`, {
@@ -16,6 +16,14 @@ export interface RateLimitedEntity {
16
16
  rateLimitResetTimes: RateLimitState;
17
17
  }
18
18
  export declare function clearExpiredRateLimits(entity: RateLimitedEntity): void;
19
+ /**
20
+ * Remove every rate-limit reset entry from `entity`, regardless of whether the
21
+ * window has expired. Unlike {@link clearExpiredRateLimits}, this drops
22
+ * still-future entries too. Used by the stale-runtime recovery path to give a
23
+ * reloaded account pool a clean slate so transient state persisted to disk
24
+ * cannot keep the pool wedged (issue #606).
25
+ */
26
+ export declare function clearAllRateLimits(entity: RateLimitedEntity): void;
19
27
  export declare function isRateLimitedForQuotaKey(entity: RateLimitedEntity, key: QuotaKey): boolean;
20
28
  export declare function isRateLimitedForFamily(entity: RateLimitedEntity, family: ModelFamily, model?: string | null): boolean;
21
29
  export declare function formatWaitTime(ms: number): string;
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limits.d.ts","sourceRoot":"","sources":["../../../lib/accounts/rate-limits.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC;AACvC,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,GAAG,YAAY,IAAI,MAAM,EAAE,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,CAAC;AAE5E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,eAAe,CAO9E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,CAKhF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK5E;AAED,MAAM,WAAW,cAAc;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IACjC,mBAAmB,EAAE,cAAc,CAAC;CACpC;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAStE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAG1F;AAED,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,OAAO,CAYT;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMjD"}
1
+ {"version":3,"file":"rate-limits.d.ts","sourceRoot":"","sources":["../../../lib/accounts/rate-limits.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC;AACvC,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,GAAG,YAAY,IAAI,MAAM,EAAE,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,CAAC;AAE5E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,eAAe,CAO9E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,CAKhF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK5E;AAED,MAAM,WAAW,cAAc;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IACjC,mBAAmB,EAAE,cAAc,CAAC;CACpC;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAStE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAKlE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAG1F;AAED,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,OAAO,CAYT;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMjD"}
@@ -37,6 +37,19 @@ export function clearExpiredRateLimits(entity) {
37
37
  }
38
38
  }
39
39
  }
40
+ /**
41
+ * Remove every rate-limit reset entry from `entity`, regardless of whether the
42
+ * window has expired. Unlike {@link clearExpiredRateLimits}, this drops
43
+ * still-future entries too. Used by the stale-runtime recovery path to give a
44
+ * reloaded account pool a clean slate so transient state persisted to disk
45
+ * cannot keep the pool wedged (issue #606).
46
+ */
47
+ export function clearAllRateLimits(entity) {
48
+ const keys = Object.keys(entity.rateLimitResetTimes);
49
+ for (const key of keys) {
50
+ delete entity.rateLimitResetTimes[key];
51
+ }
52
+ }
40
53
  export function isRateLimitedForQuotaKey(entity, key) {
41
54
  const resetTime = entity.rateLimitResetTimes[key];
42
55
  return resetTime !== undefined && nowMs() < resetTime;
@@ -6,7 +6,7 @@ import { type ModelFamily } from "./request/helpers/model-map.js";
6
6
  import { type HybridSelectionOptions } from "./rotation.js";
7
7
  import { type RoutingMutexMode, type SelectionRecord } from "./routing-mutex.js";
8
8
  export { extractAccountId, extractAccountEmail, getAccountIdCandidates, selectBestAccountCandidate, resolveRuntimeRequestIdentity, shouldUpdateAccountIdFromToken, resolveRequestAccountId, sanitizeEmail, type AccountIdCandidate, } from "./auth/token-utils.js";
9
- export { parseRateLimitReason, getQuotaKey, clampNonNegativeInt, clearExpiredRateLimits, isRateLimitedForQuotaKey, isRateLimitedForFamily, formatWaitTime, type QuotaKey, type BaseQuotaKey, type RateLimitReason, type RateLimitState, type RateLimitedEntity, } from "./accounts/rate-limits.js";
9
+ export { parseRateLimitReason, getQuotaKey, clampNonNegativeInt, clearExpiredRateLimits, clearAllRateLimits, isRateLimitedForQuotaKey, isRateLimitedForFamily, formatWaitTime, type QuotaKey, type BaseQuotaKey, type RateLimitReason, type RateLimitState, type RateLimitedEntity, } from "./accounts/rate-limits.js";
10
10
  export { lookupCodexCliTokensByEmail, isCodexCliSyncEnabled, type CodexCliTokenCacheEntry, } from "./codex-cli/state.js";
11
11
  import { type RateLimitReason } from "./accounts/rate-limits.js";
12
12
  export declare function getRuntimeTrackerKey(account: ManagedAccount): string | number;
@@ -80,6 +80,24 @@ export declare class AccountManager {
80
80
  isAccountAvailableForFamily(index: number, family: ModelFamily, model?: string | null): boolean;
81
81
  getAccountRuntimeSkipReason(index: number, family: ModelFamily, model?: string | null): string | null;
82
82
  static resetVolatileRuntimeState(): void;
83
+ /**
84
+ * Wipe per-account transient state — active cooldowns and all rate-limit
85
+ * reset windows — across every managed account, then schedule a debounced
86
+ * persist of the cleared pool.
87
+ *
88
+ * `resetVolatileRuntimeState` only clears process-global singletons (rotation
89
+ * trackers, circuit breakers); the cooldown timestamps and `rateLimitResetTimes`
90
+ * maps live on the `ManagedAccount` objects and are serialized to disk by
91
+ * `buildStorageSnapshot`. The stale-runtime recovery path reloads accounts
92
+ * from that snapshot, so without this the same transient state that wedged the
93
+ * pool is restored verbatim and recovery never escapes it (issue #606).
94
+ *
95
+ * The in-memory clear is immediate (it is what unblocks the live pool). The
96
+ * disk write is debounced via `saveToDiskDebounced`, so a caller that needs
97
+ * the cleared state to survive a restart should `await flushPendingSave()`
98
+ * afterwards rather than rely on the debounce window completing.
99
+ */
100
+ clearAccountTransientState(): void;
83
101
  setActiveIndex(index: number): ManagedAccount | null;
84
102
  syncCodexCliActiveSelectionForIndex(index: number): Promise<void>;
85
103
  getCurrentAccount(): ManagedAccount | null;
@@ -1 +1 @@
1
- {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../lib/accounts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../lib/accounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,EAKN,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EAGrB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAMN,KAAK,sBAAsB,EAC3B,MAAM,eAAe,CAAC;AACvB,OAAO,EAEN,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,MAAM,oBAAoB,CAAC;AAqB5B,OAAO,EACN,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,0BAA0B,EAC1B,6BAA6B,EAC7B,8BAA8B,EAC9B,uBAAuB,EACvB,aAAa,EACb,KAAK,kBAAkB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACN,oBAAoB,EACpB,WAAW,EACX,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,cAAc,EACd,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACtB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACN,2BAA2B,EAC3B,qBAAqB,EACrB,KAAK,uBAAuB,GAC5B,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EAON,KAAK,eAAe,EACpB,MAAM,2BAA2B,CAAC;AAanC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,GAAG,MAAM,CAQ7E;AAQD,KAAK,wBAAwB,GAAG,IAAI,CACnC,cAAc,EACd,WAAW,GAAG,OAAO,GAAG,cAAc,CACtC,GAAG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AA2GF,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EACd,YAAY,GACZ,SAAS,GACT,UAAU,GACV,MAAM,GACN,SAAS,GACT,QAAQ,CAAC;IACZ,mBAAmB,CAAC,EAAE,eAAe,CAAC;IACtC,mBAAmB,EAAE,gBAAgB,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,cAAc;IAC1B,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,cAAc,CAAmD;IACzE,OAAO,CAAC,2BAA2B,CACd;IACrB,OAAO,CAAC,qBAAqB,CAAM;IACnC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,iBAAiB,CAA8C;IACvE,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB,CAAqB;IAC/C;;;;OAIG;IACH,OAAO,CAAC,kBAAkB,CAAS;IACnC;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB,CAA8B;WAEzC,YAAY,CACxB,YAAY,CAAC,EAAE,gBAAgB,GAC7B,OAAO,CAAC,cAAc,CAAC;IAmB1B,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;YAMhC,mBAAmB;gBAqEhC,YAAY,CAAC,EAAE,gBAAgB,EAC/B,MAAM,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAoLjC,eAAe,IAAI,MAAM;IAIzB,cAAc,IAAI,MAAM;IAIxB,uBAAuB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM;IAqBpD,mBAAmB,IAAI,cAAc,EAAE;IAavC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAOvD,2BAA2B,CAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,OAAO;IAaV,2BAA2B,CAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,MAAM,GAAG,IAAI;IAgBhB,MAAM,CAAC,yBAAyB,IAAI,IAAI;IAKxC;;;;;;;;;;;;;;;;OAgBG;IACH,0BAA0B,IAAI,IAAI;IAYlC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAkB9C,mCAAmC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvE,iBAAiB,IAAI,cAAc,GAAG,IAAI;IAI1C,0BAA0B,CAAC,MAAM,EAAE,WAAW,GAAG,cAAc,GAAG,IAAI;IAYtE,gBAAgB,IAAI,cAAc,GAAG,IAAI;IAIzC,yBAAyB,CACxB,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,cAAc,GAAG,IAAI;IA+BxB,gBAAgB,CACf,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,cAAc,GAAG,IAAI;IA8BxB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,mCAAmC,CAClC,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAClC,cAAc,GAAG,IAAI;IAkDxB,+BAA+B,CAC9B,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,OAAO,CAAC,EAAE,sBAAsB,GAC9B,cAAc,GAAG,IAAI;IA8CxB,aAAa,CACZ,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,IAAI;IA2BP,eAAe,CACd,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,IAAI;IASP,aAAa,CACZ,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,IAAI;IAOP,YAAY,CACX,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,OAAO;IAiBV;;;;OAIG;IACH,WAAW,CACV,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,OAAO;IAMV,YAAY,CACX,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,EACxD,MAAM,EAAE,WAAW,GACjB,IAAI;IAeP;;;;;OAKG;IACH,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAIjD,2EAA2E;IAC3E,mBAAmB,IAAI,gBAAgB;IAIvC;;;;;;;OAOG;IACG,kBAAkB,CACvB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,EACxD,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACpD,OAAO,CAAC,eAAe,CAAC;IA4B3B;;;OAGG;IACG,4BAA4B,CACjC,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,GACpB,OAAO,CAAC,IAAI,CAAC;IAQhB;;;;OAIG;IACG,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAMzE,eAAe,CACd,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,IAAI;IAUP,yBAAyB,CACxB,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,eAAe,EACvB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,IAAI;IAsBP,sBAAsB,CACrB,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,GACpB,IAAI;IAMP,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO;IAStD,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAKnD,OAAO,CAAC,kBAAkB;IAI1B,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM;IAMtD,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIhD,oBAAoB,CACnB,SAAS,EAAE,wBAAwB,EACnC,IAAI,CAAC,EAAE,gBAAgB,GACrB,cAAc,GAAG,IAAI;IAQxB,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,SAAQ,GAAG,OAAO;IAWzE,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAK1C,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAgBrE,OAAO,CAAC,oBAAoB;IA8EtB,mBAAmB,CACxB,MAAM,EAAE,IAAI,CACX,cAAc,EACd,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,cAAc,CAChD,EACD,IAAI,EAAE,gBAAgB,GACpB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAgHjC,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAS5C,cAAc,IAAI,MAAM;IAIxB,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;IAqD3E;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAcvB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO;IAmJ/C,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAQ5C,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI;IA6CnE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQjC,mBAAmB,CAAC,OAAO,SAAM,GAAG,IAAI;IAyBlC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAYvC,OAAO,CAAC,eAAe;IAiBvB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI;IAQ9D,uBAAuB,CACtB,OAAO,EAAE,cAAc,EACvB,mBAAmB,CAAC,EAAE,MAAM,GAC1B,OAAO;IAqBV,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI;IAoBhE;;;OAGG;IACH,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO;IAOtD,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM;IAIlD,wBAAwB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM;CAIzD;AAmBD,wBAAgB,kBAAkB,CACjC,OAAO,EACJ;IACA,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAC9B,GACD,SAAS,EACZ,KAAK,EAAE,MAAM,GACX,MAAM,CA4BR;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EACJ;IAAE,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D,SAAS,EACZ,MAAM,SAAQ,GACZ,MAAM,EAAE,CAgBV;AAED,wBAAgB,cAAc,CAC7B,OAAO,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,EAC/D,GAAG,SAAU,GACX,MAAM,GAAG,IAAI,CAMf"}
@@ -14,10 +14,10 @@ import { getAccountIdentityKey, getRuntimeAccountIdentityKey, } from "./storage/
14
14
  import { getCircuitBreaker, resetAllCircuitBreakers, removeCircuitBreaker } from "./circuit-breaker.js";
15
15
  import { getStoragePathState, runWithStoragePathState, } from "./storage/path-state.js";
16
16
  export { extractAccountId, extractAccountEmail, getAccountIdCandidates, selectBestAccountCandidate, resolveRuntimeRequestIdentity, shouldUpdateAccountIdFromToken, resolveRequestAccountId, sanitizeEmail, } from "./auth/token-utils.js";
17
- export { parseRateLimitReason, getQuotaKey, clampNonNegativeInt, clearExpiredRateLimits, isRateLimitedForQuotaKey, isRateLimitedForFamily, formatWaitTime, } from "./accounts/rate-limits.js";
17
+ export { parseRateLimitReason, getQuotaKey, clampNonNegativeInt, clearExpiredRateLimits, clearAllRateLimits, isRateLimitedForQuotaKey, isRateLimitedForFamily, formatWaitTime, } from "./accounts/rate-limits.js";
18
18
  export { lookupCodexCliTokensByEmail, isCodexCliSyncEnabled, } from "./codex-cli/state.js";
19
19
  import { extractAccountId, extractAccountEmail, shouldUpdateAccountIdFromToken, sanitizeEmail, } from "./auth/token-utils.js";
20
- import { clampNonNegativeInt, getQuotaKey, clearExpiredRateLimits, isRateLimitedForFamily, formatWaitTime, } from "./accounts/rate-limits.js";
20
+ import { clampNonNegativeInt, getQuotaKey, clearExpiredRateLimits, clearAllRateLimits, isRateLimitedForFamily, formatWaitTime, } from "./accounts/rate-limits.js";
21
21
  const log = createLogger("accounts");
22
22
  let nextRuntimeCircuitKeyId = 0;
23
23
  function getAccountCircuitKey(account) {
@@ -449,6 +449,35 @@ export class AccountManager {
449
449
  resetTrackers();
450
450
  resetAllCircuitBreakers();
451
451
  }
452
+ /**
453
+ * Wipe per-account transient state — active cooldowns and all rate-limit
454
+ * reset windows — across every managed account, then schedule a debounced
455
+ * persist of the cleared pool.
456
+ *
457
+ * `resetVolatileRuntimeState` only clears process-global singletons (rotation
458
+ * trackers, circuit breakers); the cooldown timestamps and `rateLimitResetTimes`
459
+ * maps live on the `ManagedAccount` objects and are serialized to disk by
460
+ * `buildStorageSnapshot`. The stale-runtime recovery path reloads accounts
461
+ * from that snapshot, so without this the same transient state that wedged the
462
+ * pool is restored verbatim and recovery never escapes it (issue #606).
463
+ *
464
+ * The in-memory clear is immediate (it is what unblocks the live pool). The
465
+ * disk write is debounced via `saveToDiskDebounced`, so a caller that needs
466
+ * the cleared state to survive a restart should `await flushPendingSave()`
467
+ * afterwards rather than rely on the debounce window completing.
468
+ */
469
+ clearAccountTransientState() {
470
+ if (this.accounts.length === 0)
471
+ return;
472
+ // Snapshot the reference list so a concurrent mutation of `this.accounts`
473
+ // (e.g. removeAccount) cannot reshape the array mid-iteration.
474
+ for (const account of [...this.accounts]) {
475
+ this.clearAccountCooldown(account);
476
+ clearAllRateLimits(account);
477
+ account.lastRateLimitReason = undefined;
478
+ }
479
+ this.saveToDiskDebounced();
480
+ }
452
481
  setActiveIndex(index) {
453
482
  if (!Number.isFinite(index))
454
483
  return null;
@@ -22,15 +22,6 @@ export declare enum AuditOutcome {
22
22
  FAILURE = "failure",
23
23
  PARTIAL = "partial"
24
24
  }
25
- export interface AuditEntry {
26
- timestamp: string;
27
- correlationId: string | null;
28
- action: AuditAction;
29
- actor: string;
30
- resource: string;
31
- outcome: AuditOutcome;
32
- metadata?: Record<string, unknown>;
33
- }
34
25
  export interface AuditConfig {
35
26
  enabled: boolean;
36
27
  logDir: string;
@@ -1 +1 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../lib/audit.ts"],"names":[],"mappings":"AAKA,oBAAY,WAAW;IACtB,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,UAAU,eAAe;IACzB,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,eAAe,oBAAoB;IACnC,eAAe,oBAAoB;IACnC,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;CAC/B;AAED,oBAAY,YAAY;IACvB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACnB;AAED,MAAM,WAAW,UAAU;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAWD,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAEjE;AAED,wBAAgB,cAAc,IAAI,WAAW,CAE5C;AA0DD,wBAAgB,QAAQ,CACvB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,YAAY,EACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI,CAwBN;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAO5C"}
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../lib/audit.ts"],"names":[],"mappings":"AAKA,oBAAY,WAAW;IACtB,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,UAAU,eAAe;IACzB,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,eAAe,oBAAoB;IACnC,eAAe,oBAAoB;IACnC,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;CAC/B;AAED,oBAAY,YAAY;IACvB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACnB;AAYD,MAAM,WAAW,WAAW;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAWD,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAEjE;AAED,wBAAgB,cAAc,IAAI,WAAW,CAE5C;AA0DD,wBAAgB,QAAQ,CACvB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,YAAY,EACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI,CAwBN;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAO5C"}
@@ -1,10 +1,6 @@
1
1
  import type { TokenResult } from "../types.js";
2
- export declare const DEVICE_AUTH_BASE_URL = "https://auth.openai.com";
3
- export declare const DEVICE_AUTH_API_BASE_URL = "https://auth.openai.com/api/accounts";
4
2
  export declare const DEVICE_AUTH_VERIFICATION_URL = "https://auth.openai.com/codex/device";
5
3
  export declare const DEVICE_AUTH_REDIRECT_URI = "https://auth.openai.com/deviceauth/callback";
6
- export declare const DEVICE_AUTH_TIMEOUT_MS: number;
7
- export declare const DEVICE_AUTH_DEFAULT_INTERVAL_MS = 5000;
8
4
  type FetchLike = typeof fetch;
9
5
  export interface DeviceAuthCode {
10
6
  verificationUrl: string;
@@ -13,7 +9,7 @@ export interface DeviceAuthCode {
13
9
  intervalMs: number;
14
10
  expiresAtMs?: number;
15
11
  }
16
- export interface DeviceAuthCompletion {
12
+ interface DeviceAuthCompletion {
17
13
  authorizationCode: string;
18
14
  codeVerifier: string;
19
15
  }
@@ -40,7 +36,6 @@ export interface DeviceAuthFlowOptions {
40
36
  keepAlive?: boolean;
41
37
  }
42
38
  export declare function requestDeviceAuthorization(options?: DeviceAuthFlowOptions): Promise<DeviceAuthCodeResult>;
43
- export declare function printDeviceAuthorizationPrompt(deviceCode: DeviceAuthCode, log?: (message: string) => void, timeoutMs?: number, nowMs?: number): void;
44
39
  export declare function pollDeviceAuthorization(deviceCode: DeviceAuthCode, options?: DeviceAuthFlowOptions): Promise<DeviceAuthCompletionResult>;
45
40
  export declare function runDeviceAuthFlow(options?: DeviceAuthFlowOptions): Promise<TokenResult>;
46
41
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"device-auth.d.ts","sourceRoot":"","sources":["../../../lib/auth/device-auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAO/C,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,wBAAwB,yCAAyC,CAAC;AAC/E,eAAO,MAAM,4BAA4B,yCAAyC,CAAC;AACnF,eAAO,MAAM,wBAAwB,gDAAgD,CAAC;AACtF,eAAO,MAAM,sBAAsB,QAAiB,CAAC;AACrD,eAAO,MAAM,+BAA+B,OAAQ,CAAC;AAUrD,KAAK,SAAS,GAAG,OAAO,KAAK,CAAC;AAE9B,MAAM,WAAW,cAAc;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,oBAAoB,GAC7B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,cAAc,CAAA;CAAE,GAC/C,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAE5C,MAAM,MAAM,0BAA0B,GACnC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,oBAAoB,CAAA;CAAE,GACrD,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAE5C,MAAM,WAAW,qBAAqB;IACrC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IAMtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAwSD,wBAAsB,0BAA0B,CAC/C,OAAO,GAAE,qBAA0B,GACjC,OAAO,CAAC,oBAAoB,CAAC,CAkD/B;AAED,wBAAgB,8BAA8B,CAC7C,UAAU,EAAE,cAAc,EAC1B,GAAG,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAkB,EAC5C,SAAS,SAAyB,EAClC,KAAK,SAAa,GAChB,IAAI,CAWN;AAED,wBAAsB,uBAAuB,CAC5C,UAAU,EAAE,cAAc,EAC1B,OAAO,GAAE,qBAA0B,GACjC,OAAO,CAAC,0BAA0B,CAAC,CA2ErC;AAED,wBAAsB,iBAAiB,CACtC,OAAO,GAAE,qBAA0B,GACjC,OAAO,CAAC,WAAW,CAAC,CA6BtB"}
1
+ {"version":3,"file":"device-auth.d.ts","sourceRoot":"","sources":["../../../lib/auth/device-auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAS/C,eAAO,MAAM,4BAA4B,yCAAyC,CAAC;AACnF,eAAO,MAAM,wBAAwB,gDAAgD,CAAC;AAYtF,KAAK,SAAS,GAAG,OAAO,KAAK,CAAC;AAE9B,MAAM,WAAW,cAAc;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,oBAAoB;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,oBAAoB,GAC7B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,cAAc,CAAA;CAAE,GAC/C,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAE5C,MAAM,MAAM,0BAA0B,GACnC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,oBAAoB,CAAA;CAAE,GACrD,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAE5C,MAAM,WAAW,qBAAqB;IACrC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IAMtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAwSD,wBAAsB,0BAA0B,CAC/C,OAAO,GAAE,qBAA0B,GACjC,OAAO,CAAC,oBAAoB,CAAC,CAkD/B;AAoBD,wBAAsB,uBAAuB,CAC5C,UAAU,EAAE,cAAc,EAC1B,OAAO,GAAE,qBAA0B,GACjC,OAAO,CAAC,0BAA0B,CAAC,CA2ErC;AAED,wBAAsB,iBAAiB,CACtC,OAAO,GAAE,qBAA0B,GACjC,OAAO,CAAC,WAAW,CAAC,CA6BtB"}
@@ -1,10 +1,10 @@
1
1
  import { CLIENT_ID, exchangeAuthorizationCode, sanitizeOAuthResponseBodyForLog, } from "./auth.js";
2
- export const DEVICE_AUTH_BASE_URL = "https://auth.openai.com";
3
- export const DEVICE_AUTH_API_BASE_URL = `${DEVICE_AUTH_BASE_URL}/api/accounts`;
2
+ const DEVICE_AUTH_BASE_URL = "https://auth.openai.com";
3
+ const DEVICE_AUTH_API_BASE_URL = `${DEVICE_AUTH_BASE_URL}/api/accounts`;
4
4
  export const DEVICE_AUTH_VERIFICATION_URL = `${DEVICE_AUTH_BASE_URL}/codex/device`;
5
5
  export const DEVICE_AUTH_REDIRECT_URI = `${DEVICE_AUTH_BASE_URL}/deviceauth/callback`;
6
- export const DEVICE_AUTH_TIMEOUT_MS = 15 * 60 * 1000;
7
- export const DEVICE_AUTH_DEFAULT_INTERVAL_MS = 5_000;
6
+ const DEVICE_AUTH_TIMEOUT_MS = 15 * 60 * 1000;
7
+ const DEVICE_AUTH_DEFAULT_INTERVAL_MS = 5_000;
8
8
  const DEVICE_AUTH_ABORTED_MESSAGE = "aborted";
9
9
  const DEVICE_AUTH_TRANSIENT_PENDING_STATUSES = new Set([
10
10
  408,
@@ -285,7 +285,7 @@ export async function requestDeviceAuthorization(options = {}) {
285
285
  return failedResult("network_error", error instanceof Error ? error.message : String(error));
286
286
  }
287
287
  }
288
- export function printDeviceAuthorizationPrompt(deviceCode, log = console.log, timeoutMs = DEVICE_AUTH_TIMEOUT_MS, nowMs = Date.now()) {
288
+ function printDeviceAuthorizationPrompt(deviceCode, log = console.log, timeoutMs = DEVICE_AUTH_TIMEOUT_MS, nowMs = Date.now()) {
289
289
  const effectiveTimeoutMs = deviceCode.expiresAtMs === undefined
290
290
  ? timeoutMs
291
291
  : Math.min(timeoutMs, Math.max(0, deviceCode.expiresAtMs - nowMs));
@@ -1 +1 @@
1
- {"version":3,"file":"budget-guard.d.ts","sourceRoot":"","sources":["../../lib/budget-guard.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,qBAAqB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,EAAE;QACP,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC;CACF;AA6ED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE/D;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAatE;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCjF;AAED,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EACrC,GAAG,SAAa,GACd,WAAW,CAOb;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,SAAa,GAAG,MAAM,CAoBnF;AAED,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,YAAY,GACnB,qBAAqB,CAsCvB;AAED,wBAAgB,kCAAkC,IAAI,IAAI,CAEzD"}
1
+ {"version":3,"file":"budget-guard.d.ts","sourceRoot":"","sources":["../../lib/budget-guard.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIrD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,qBAAqB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,EAAE;QACP,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC;CACF;AA6ED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE/D;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAatE;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCjF;AAED,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EACrC,GAAG,SAAa,GACd,WAAW,CAOb;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,SAAa,GAAG,MAAM,CAoBnF;AAED,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,YAAY,GACnB,qBAAqB,CAsCvB;AAED,wBAAgB,kCAAkC,IAAI,IAAI,CAEzD"}
@@ -3,6 +3,7 @@ import { basename, join } from "node:path";
3
3
  import { logWarn } from "./logger.js";
4
4
  import { getCodexMultiAuthDir } from "./runtime-paths.js";
5
5
  import { isRecord, sleep } from "./utils.js";
6
+ import { tempPathFor } from "./temp-path.js";
6
7
  const BUDGET_GUARD_FILE_NAME = "budget-guards.json";
7
8
  const RETRYABLE_FS_CODES = new Set(["EBUSY", "EPERM"]);
8
9
  const VALID_WINDOWS = new Set(["hour", "day", "week", "month"]);
@@ -98,7 +99,7 @@ export async function saveBudgetGuardStore(store) {
98
99
  const payload = normalizeStore(store);
99
100
  const task = async () => {
100
101
  await fs.mkdir(getCodexMultiAuthDir(), { recursive: true, mode: 0o700 });
101
- const tempPath = `${path}.${process.pid}.${Date.now()}.${Math.random().toString(36).slice(2, 8)}.tmp`;
102
+ const tempPath = tempPathFor(path);
102
103
  let moved = false;
103
104
  try {
104
105
  await fs.writeFile(tempPath, `${JSON.stringify(payload, null, 2)}\n`, {
@@ -1 +1 @@
1
- {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../lib/codex-cli/writer.ts"],"names":[],"mappings":"AAmBA,UAAU,eAAe;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AA2XD,wBAAsB,0BAA0B,CAC/C,SAAS,EAAE,eAAe,GACxB,OAAO,CAAC,OAAO,CAAC,CAqMlB;AAED,wBAAgB,sCAAsC,IAAI,MAAM,CAE/D"}
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../lib/codex-cli/writer.ts"],"names":[],"mappings":"AAoBA,UAAU,eAAe;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AA2XD,wBAAsB,0BAA0B,CAC/C,SAAS,EAAE,eAAe,GACxB,OAAO,CAAC,OAAO,CAAC,CAqMlB;AAED,wBAAgB,sCAAsC,IAAI,MAAM,CAE/D"}
@@ -3,6 +3,7 @@ import { dirname } from "node:path";
3
3
  import { createLogger } from "../logger.js";
4
4
  import { clearCodexCliStateCache, getCodexCliAccountsPath, getCodexCliAuthPath, getCodexCliConfigPath, isCodexCliSyncEnabled, } from "./state.js";
5
5
  import { incrementCodexCliMetric, makeAccountFingerprint, } from "./observability.js";
6
+ import { tempPathFor } from "../temp-path.js";
6
7
  const log = createLogger("codex-cli-writer");
7
8
  let lastCodexCliSelectionWriteAt = 0;
8
9
  let activeSelectionWriteQueue = Promise.resolve();
@@ -160,7 +161,7 @@ function toIsoTime(ms) {
160
161
  return new Date().toISOString();
161
162
  }
162
163
  async function atomicWriteText(path, content) {
163
- const tempPath = `${path}.${Date.now()}.${Math.random().toString(36).slice(2, 8)}.tmp`;
164
+ const tempPath = tempPathFor(path);
164
165
  await fs.mkdir(dirname(path), { recursive: true });
165
166
  try {
166
167
  await fs.writeFile(tempPath, content, {
@@ -4,7 +4,6 @@ export declare function cloneBackendPluginConfig(config: PluginConfig): PluginCo
4
4
  export declare function backendSettingsSnapshot(config: PluginConfig): Record<string, unknown>;
5
5
  export declare function backendSettingsEqual(left: PluginConfig, right: PluginConfig): boolean;
6
6
  export declare function formatBackendNumberValue(option: BackendNumberSettingOption, value: number): string;
7
- export declare function clampBackendNumber(option: BackendNumberSettingOption, value: number): number;
8
7
  export declare function buildBackendSettingsPreview(config: PluginConfig, ui: ReturnType<typeof import("../ui/runtime.js").getUiRuntimeOptions>, focus: BackendSettingFocusKey, deps: {
9
8
  highlightPreviewToken: (text: string, ui: ReturnType<typeof import("../ui/runtime.js").getUiRuntimeOptions>) => string;
10
9
  }): {
@@ -1 +1 @@
1
- {"version":3,"file":"backend-settings-helpers.d.ts","sourceRoot":"","sources":["../../../lib/codex-manager/backend-settings-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAMN,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,MAAM,8BAA8B,CAAC;AAEtC,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAU3E;AAED,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,YAAY,GAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWzB;AAED,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,YAAY,GACjB,OAAO,CAKT;AAED,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,0BAA0B,EAClC,KAAK,EAAE,MAAM,GACX,MAAM,CAUR;AAED,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,0BAA0B,EAClC,KAAK,EAAE,MAAM,GACX,MAAM,CAER;AAED,wBAAgB,2BAA2B,CAC1C,MAAM,EAAE,YAAY,EACpB,EAAE,EAAE,UAAU,CAAC,cAAc,kBAAkB,EAAE,mBAAmB,CAAC,EACrE,KAAK,EAAE,sBAAsB,EAC7B,IAAI,EAAE;IACL,qBAAqB,EAAE,CACtB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,UAAU,CAAC,cAAc,kBAAkB,EAAE,mBAAmB,CAAC,KACjE,MAAM,CAAC;CACZ,GACC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAiDjC;AAED,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,YAAY,GAClB,OAAO,CAAC,YAAY,CAAC,CAevB;AAED,wBAAgB,0BAA0B,CACzC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACX,MAAM,CAQR"}
1
+ {"version":3,"file":"backend-settings-helpers.d.ts","sourceRoot":"","sources":["../../../lib/codex-manager/backend-settings-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAMN,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,MAAM,8BAA8B,CAAC;AAEtC,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAU3E;AAED,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,YAAY,GAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWzB;AAED,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,YAAY,GACjB,OAAO,CAKT;AAED,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,0BAA0B,EAClC,KAAK,EAAE,MAAM,GACX,MAAM,CAUR;AASD,wBAAgB,2BAA2B,CAC1C,MAAM,EAAE,YAAY,EACpB,EAAE,EAAE,UAAU,CAAC,cAAc,kBAAkB,EAAE,mBAAmB,CAAC,EACrE,KAAK,EAAE,sBAAsB,EAC7B,IAAI,EAAE;IACL,qBAAqB,EAAE,CACtB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,UAAU,CAAC,cAAc,kBAAkB,EAAE,mBAAmB,CAAC,KACjE,MAAM,CAAC;CACZ,GACC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAiDjC;AAED,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,YAAY,GAClB,OAAO,CAAC,YAAY,CAAC,CAevB;AAED,wBAAgB,0BAA0B,CACzC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACX,MAAM,CAQR"}
@@ -38,7 +38,7 @@ export function formatBackendNumberValue(option, value) {
38
38
  }
39
39
  return `${Math.round(value)}ms`;
40
40
  }
41
- export function clampBackendNumber(option, value) {
41
+ function clampBackendNumber(option, value) {
42
42
  return Math.max(option.min, Math.min(option.max, Math.round(value)));
43
43
  }
44
44
  export function buildBackendSettingsPreview(config, ui, focus, deps) {
@@ -1,24 +1,5 @@
1
1
  import type { DashboardDisplaySettings } from "../dashboard-settings.js";
2
2
  import type { UI_COPY } from "../ui/ui-copy.js";
3
- export type BehaviorConfigAction = {
4
- type: "set-delay";
5
- delayMs: number;
6
- } | {
7
- type: "toggle-pause";
8
- } | {
9
- type: "toggle-menu-limit-fetch";
10
- } | {
11
- type: "toggle-menu-fetch-status";
12
- } | {
13
- type: "set-menu-quota-ttl";
14
- ttlMs: number;
15
- } | {
16
- type: "reset";
17
- } | {
18
- type: "save";
19
- } | {
20
- type: "cancel";
21
- };
22
3
  export interface BehaviorSettingsPanelDeps {
23
4
  cloneDashboardSettings: (settings: DashboardDisplaySettings) => DashboardDisplaySettings;
24
5
  applyDashboardDefaultsForKeys: (draft: DashboardDisplaySettings, keys: readonly (keyof DashboardDisplaySettings)[]) => DashboardDisplaySettings;
@@ -1 +1 @@
1
- {"version":3,"file":"behavior-settings-panel.d.ts","sourceRoot":"","sources":["../../../lib/codex-manager/behavior-settings-panel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAIhD,MAAM,MAAM,oBAAoB,GAC7B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,yBAAyB,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,0BAA0B,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEtB,MAAM,WAAW,yBAAyB;IACzC,sBAAsB,EAAE,CACvB,QAAQ,EAAE,wBAAwB,KAC9B,wBAAwB,CAAC;IAC9B,6BAA6B,EAAE,CAC9B,KAAK,EAAE,wBAAwB,EAC/B,IAAI,EAAE,SAAS,CAAC,MAAM,wBAAwB,CAAC,EAAE,KAC7C,wBAAwB,CAAC;IAC9B,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,sBAAsB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,yBAAyB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,mBAAmB,EAAE,SAAS,CAAC,MAAM,wBAAwB,CAAC,EAAE,CAAC;IACjE,OAAO,EAAE,OAAO,OAAO,CAAC;CACxB;AAED,wBAAsB,2BAA2B,CAChD,OAAO,EAAE,wBAAwB,EACjC,IAAI,EAAE,yBAAyB,GAC7B,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAqL1C"}
1
+ {"version":3,"file":"behavior-settings-panel.d.ts","sourceRoot":"","sources":["../../../lib/codex-manager/behavior-settings-panel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAchD,MAAM,WAAW,yBAAyB;IACzC,sBAAsB,EAAE,CACvB,QAAQ,EAAE,wBAAwB,KAC9B,wBAAwB,CAAC;IAC9B,6BAA6B,EAAE,CAC9B,KAAK,EAAE,wBAAwB,EAC/B,IAAI,EAAE,SAAS,CAAC,MAAM,wBAAwB,CAAC,EAAE,KAC7C,wBAAwB,CAAC;IAC9B,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,sBAAsB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,yBAAyB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,mBAAmB,EAAE,SAAS,CAAC,MAAM,wBAAwB,CAAC,EAAE,CAAC;IACjE,OAAO,EAAE,OAAO,OAAO,CAAC;CACxB;AAED,wBAAsB,2BAA2B,CAChD,OAAO,EAAE,wBAAwB,EACjC,IAAI,EAAE,yBAAyB,GAC7B,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAqL1C"}
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../../lib/codex-manager/commands/report.ts"],"names":[],"mappings":"AAoBA,OAAO,EACN,KAAK,kBAAkB,EAGvB,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AA0ChE,MAAM,WAAW,iBAAiB;IACjC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IACrD,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,kBAAkB,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC;IAC5E,oBAAoB,EAAE,CACrB,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,aAAa,GAAG,WAAW,CAAC,EAC7D,GAAG,EAAE,MAAM,KACP,OAAO,CAAC;IACb,aAAa,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9D,uBAAuB,EAAE,CAAC,KAAK,EAAE;QAChC,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACd,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAClC,oBAAoB,EAAE,CACrB,OAAO,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAC7C,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,OAAO,KACX,MAAM,GAAG,IAAI,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC3D,sBAAsB,EAAE,CACvB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,MAAM,EAAE,MAAM,GAAG,SAAS,KACtB,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,gCAAgC,CAAC,EAAE,MAAM,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAAC;IACtF,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CACtD;AAoLD,wBAAsB,gBAAgB,CACrC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,iBAAiB,GACrB,OAAO,CAAC,MAAM,CAAC,CAmVjB"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../../lib/codex-manager/commands/report.ts"],"names":[],"mappings":"AAoBA,OAAO,EACN,KAAK,kBAAkB,EAGvB,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AA2ChE,MAAM,WAAW,iBAAiB;IACjC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IACrD,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,kBAAkB,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC;IAC5E,oBAAoB,EAAE,CACrB,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,aAAa,GAAG,WAAW,CAAC,EAC7D,GAAG,EAAE,MAAM,KACP,OAAO,CAAC;IACb,aAAa,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9D,uBAAuB,EAAE,CAAC,KAAK,EAAE;QAChC,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACd,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAClC,oBAAoB,EAAE,CACrB,OAAO,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAC7C,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,OAAO,KACX,MAAM,GAAG,IAAI,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC3D,sBAAsB,EAAE,CACvB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,MAAM,EAAE,MAAM,GAAG,SAAS,KACtB,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,gCAAgC,CAAC,EAAE,MAAM,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAAC;IACtF,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CACtD;AAoLD,wBAAsB,gBAAgB,CACrC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,iBAAiB,GACrB,OAAO,CAAC,MAAM,CAAC,CAmVjB"}
@@ -6,6 +6,7 @@ import { applyRefreshedAccountPatch, persistRefreshedAccountPatch, serializeFore
6
6
  import { formatQuotaSnapshotLine, describeCodexProbeFailure, } from "../../quota-probe.js";
7
7
  import { DEFAULT_MODEL, getModelCapabilities, getModelProfile, resolveNormalizedModel, } from "../../request/helpers/model-map.js";
8
8
  import { sleep } from "../../utils.js";
9
+ import { tempPathFor } from "../../temp-path.js";
9
10
  function parsePositiveIntegerOption(rawValue) {
10
11
  const normalized = rawValue.trim();
11
12
  if (!/^\d+$/.test(normalized)) {
@@ -165,7 +166,7 @@ function formatModelInspection(model) {
165
166
  }
166
167
  async function defaultWriteFile(path, contents) {
167
168
  await fs.mkdir(dirname(path), { recursive: true });
168
- const tempPath = `${path}.${process.pid}.${Date.now()}.${Math.random().toString(36).slice(2, 8)}.tmp`;
169
+ const tempPath = tempPathFor(path);
169
170
  let moved = false;
170
171
  try {
171
172
  await fs.writeFile(tempPath, contents, "utf-8");
@@ -4,7 +4,7 @@ export declare function resolveUninstallPaths(platform?: NodeJS.Platform, env?:
4
4
  cacheBunLock: string;
5
5
  };
6
6
  export declare function removePluginFromList(list: unknown[]): unknown[];
7
- export type UninstallCliOptions = {
7
+ type UninstallCliOptions = {
8
8
  dryRun: boolean;
9
9
  json: boolean;
10
10
  clearAccounts: boolean;
@@ -20,7 +20,6 @@ export type ParsedUninstallArgs = {
20
20
  reason: "error";
21
21
  message: string;
22
22
  };
23
- export declare function printUninstallUsage(): void;
24
23
  export declare function parseUninstallArgs(args: string[]): ParsedUninstallArgs;
25
24
  export type UninstallCommandDeps = {
26
25
  log?: (message: string) => void;
@@ -33,4 +32,5 @@ export type UninstallCommandDeps = {
33
32
  paths?: ReturnType<typeof resolveUninstallPaths>;
34
33
  };
35
34
  export declare function runUninstallCommand(args: string[], deps?: UninstallCommandDeps): Promise<number>;
35
+ export {};
36
36
  //# sourceMappingURL=uninstall.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../../lib/codex-manager/commands/uninstall.ts"],"names":[],"mappings":"AASA,wBAAgB,qBAAqB,CACpC,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,GAAE,MAAkB;;;;EAkBxB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAQ/D;AAED,MAAM,MAAM,mBAAmB,GAAG;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,GAC1C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,wBAAgB,mBAAmB,IAAI,IAAI,CAqB1C;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,mBAAmB,CA2BtE;AAED,MAAM,MAAM,oBAAoB,GAAG;IAClC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE;QAC1B,MAAM,EAAE,IAAI,CAAC;QACb,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;KAC3B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;CACjD,CAAC;AAmBF,wBAAsB,mBAAmB,CACxC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,oBAAyB,GAC7B,OAAO,CAAC,MAAM,CAAC,CA0MjB"}
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../../lib/codex-manager/commands/uninstall.ts"],"names":[],"mappings":"AASA,wBAAgB,qBAAqB,CACpC,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,GAAE,MAAkB;;;;EAkBxB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAQ/D;AAED,KAAK,mBAAmB,GAAG;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,GAC1C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAyBnD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,mBAAmB,CA2BtE;AAED,MAAM,MAAM,oBAAoB,GAAG;IAClC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE;QAC1B,MAAM,EAAE,IAAI,CAAC;QACb,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;KAC3B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;CACjD,CAAC;AAmBF,wBAAsB,mBAAmB,CACxC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,oBAAyB,GAC7B,OAAO,CAAC,MAAM,CAAC,CA0MjB"}
@@ -33,7 +33,7 @@ export function removePluginFromList(list) {
33
33
  return entry !== PLUGIN_NAME && !entry.startsWith(`${PLUGIN_NAME}@`);
34
34
  });
35
35
  }
36
- export function printUninstallUsage() {
36
+ function printUninstallUsage() {
37
37
  console.log([
38
38
  "Usage:",
39
39
  " codex-multi-auth uninstall [--dry-run] [--json] [--clear-accounts]",
@@ -1 +1 @@
1
- {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../../lib/codex-manager/commands/usage.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EAKpB,MAAM,sBAAsB,CAAC;AAmB9B,MAAM,WAAW,gBAAgB;IAChC,cAAc,CAAC,EAAE,OAAO,oBAAoB,CAAC;IAC7C,aAAa,CAAC,EAAE,OAAO,kBAAkB,CAAC;IAC1C,QAAQ,CAAC,EAAE,OAAO,mBAAmB,CAAC;IACtC,YAAY,CAAC,EAAE,OAAO,iBAAiB,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAoRD,wBAAsB,eAAe,CACpC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,gBAAqB,GACzB,OAAO,CAAC,MAAM,CAAC,CAiGjB"}
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../../lib/codex-manager/commands/usage.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EAKpB,MAAM,sBAAsB,CAAC;AAoB9B,MAAM,WAAW,gBAAgB;IAChC,cAAc,CAAC,EAAE,OAAO,oBAAoB,CAAC;IAC7C,aAAa,CAAC,EAAE,OAAO,kBAAkB,CAAC;IAC1C,QAAQ,CAAC,EAAE,OAAO,mBAAmB,CAAC;IACtC,YAAY,CAAC,EAAE,OAAO,iBAAiB,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAoRD,wBAAsB,eAAe,CACpC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,gBAAqB,GACzB,OAAO,CAAC,MAAM,CAAC,CAiGjB"}
@@ -2,6 +2,7 @@ import { promises as fs } from "node:fs";
2
2
  import { dirname, resolve } from "node:path";
3
3
  import { sleep } from "../../utils.js";
4
4
  import { readUsageLedgerRows, rotateUsageLedger, summarizeUsageRows, summarizeUsageLedger, } from "../../usage/index.js";
5
+ import { tempPathFor } from "../../temp-path.js";
5
6
  const VALID_GROUPS = new Set([
6
7
  "model",
7
8
  "account",
@@ -233,7 +234,7 @@ function isRetryableWriteError(error) {
233
234
  }
234
235
  async function defaultWriteFile(path, contents) {
235
236
  await fs.mkdir(dirname(path), { recursive: true });
236
- const tempPath = `${path}.${process.pid}.${Date.now()}.${Math.random().toString(36).slice(2, 8)}.tmp`;
237
+ const tempPath = tempPathFor(path);
237
238
  let moved = false;
238
239
  try {
239
240
  await fs.writeFile(tempPath, contents, "utf-8");
@@ -11,14 +11,14 @@ type ParsedArgsResult<T> = {
11
11
  ok: false;
12
12
  message: string;
13
13
  };
14
- export interface VerifyPathStep {
14
+ interface VerifyPathStep {
15
15
  name: string;
16
16
  input?: string;
17
17
  output?: string;
18
18
  ok: boolean;
19
19
  error?: string;
20
20
  }
21
- export interface VerifySandboxResult {
21
+ interface VerifySandboxResult {
22
22
  name: string;
23
23
  input: string;
24
24
  rejected: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../lib/codex-manager/commands/verify.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CACb;AAED,KAAK,gBAAgB,CAAC,CAAC,IACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,CAAC,CAAA;CAAE,GACxB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,QAAQ,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,YAAY,EAAE,mBAAmB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,MAAM,MAAM,CAAC;IACrB,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrD,iCAAiC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IACnE,oBAAoB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IACtD,mBAAmB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IACrD,yBAAyB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3D,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IACjC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACxE,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,iBAAiB,CAAC;IAC9D,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,eAAe,EAAE,eAAe,CAAC;IACjC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,CAyF5E;AAoID,wBAAsB,gBAAgB,CACrC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,iBAAiB,GACrB,OAAO,CAAC,MAAM,CAAC,CA6FjB;AAED,wBAAgB,eAAe,CAC9B,IAAI,EAAE,MAAM,EAAE,GACZ,gBAAgB,CAAC,gBAAgB,CAAC,CA4CpC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAiBvC"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../lib/codex-manager/commands/verify.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CACb;AAED,KAAK,gBAAgB,CAAC,CAAC,IACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,CAAC,CAAA;CAAE,GACxB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC,UAAU,cAAc;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,mBAAmB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,QAAQ,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,YAAY,EAAE,mBAAmB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,MAAM,MAAM,CAAC;IACrB,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrD,iCAAiC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IACnE,oBAAoB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IACtD,mBAAmB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IACrD,yBAAyB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3D,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IACjC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACxE,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,iBAAiB,CAAC;IAC9D,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,eAAe,EAAE,eAAe,CAAC;IACjC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,CAyF5E;AAoID,wBAAsB,gBAAgB,CACrC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,iBAAiB,GACrB,OAAO,CAAC,MAAM,CAAC,CA6FjB;AAED,wBAAgB,eAAe,CAC9B,IAAI,EAAE,MAAM,EAAE,GACZ,gBAAgB,CAAC,gBAAgB,CAAC,CA4CpC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAiBvC"}
@@ -11,7 +11,7 @@ type ParsedArgsResult<T> = {
11
11
  ok: false;
12
12
  message: string;
13
13
  };
14
- export interface WhySelectedRuntimeSnapshot {
14
+ interface WhySelectedRuntimeSnapshot {
15
15
  lastSwitchReason?: string;
16
16
  lastRateLimitReason?: string;
17
17
  cooldownReason?: string;
@@ -29,27 +29,6 @@ export interface WhySelectedCommandDeps {
29
29
  logInfo?: (message: string) => void;
30
30
  logError?: (message: string) => void;
31
31
  }
32
- export interface WhySelectedCandidateRecord {
33
- index: number;
34
- oneBasedIndex: number;
35
- email?: string;
36
- accountId?: string;
37
- enabled: boolean;
38
- available: boolean;
39
- health: number;
40
- tokens: number;
41
- hoursSinceUsed: number;
42
- capabilityBoost: number;
43
- pidBonus: number;
44
- score: number;
45
- lastSwitchReason?: string;
46
- lastRateLimitReason?: string;
47
- cooldownReason?: string;
48
- reason?: string;
49
- }
50
- export interface WhySelectedSelectedRecord extends WhySelectedCandidateRecord {
51
- selectionReason: string;
52
- }
53
32
  export declare function runWhySelectedCommand(args: string[], deps: WhySelectedCommandDeps): Promise<number>;
54
33
  export declare function parseWhySelectedArgs(args: string[]): ParsedArgsResult<WhySelectedCliOptions>;
55
34
  export declare function printWhySelectedUsage(): void;