oc-codex-multi-auth 6.11.3 → 6.11.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.
@@ -11,6 +11,7 @@ import { MODEL_FAMILIES } from "../prompts/codex.js";
11
11
  import { registerCleanup, unregisterCleanup } from "../shutdown.js";
12
12
  import { withAccountStorageTransaction, } from "../storage.js";
13
13
  import { getWorkspaceIdentityKey } from "../storage/identity.js";
14
+ import { nowMs } from "../utils.js";
14
15
  import { clampNonNegativeInt } from "./rate-limits.js";
15
16
  const log = createLogger("accounts");
16
17
  /**
@@ -52,8 +53,11 @@ export class AccountPersistence {
52
53
  addedAt: account.addedAt,
53
54
  lastUsed: account.lastUsed,
54
55
  lastSwitchReason: account.lastSwitchReason,
56
+ // Copied, not referenced: adoptLongerDiskRateLimits merges the
57
+ // on-disk blocks into this payload, and it must not reach back
58
+ // through a shared reference into live rotation state.
55
59
  rateLimitResetTimes: Object.keys(account.rateLimitResetTimes).length > 0
56
- ? account.rateLimitResetTimes
60
+ ? { ...account.rateLimitResetTimes }
57
61
  : undefined,
58
62
  coolingDownUntil: account.coolingDownUntil,
59
63
  cooldownReason: account.cooldownReason,
@@ -70,11 +74,65 @@ export class AccountPersistence {
70
74
  // persisting.
71
75
  await withAccountStorageTransaction(async (current, persist) => {
72
76
  if (current) {
77
+ // Before adoptNewerDiskCredentials: for records without workspace
78
+ // ids the refresh token participates in the identity key, and
79
+ // adopting a rotated token would change which disk record this
80
+ // account matches.
81
+ this.adoptLongerDiskRateLimits(storage, current);
73
82
  this.adoptNewerDiskCredentials(storage, current);
74
83
  }
75
84
  await persist(storage);
76
85
  });
77
86
  }
87
+ /**
88
+ * Merges still-active rate-limit blocks from `disk` into `outgoing`, keeping
89
+ * whichever block runs longer per quota key.
90
+ *
91
+ * Rate-limit state is otherwise last-writer-wins, which is fine for a 5h
92
+ * window that both processes rediscover within minutes. It is not fine for a
93
+ * quota block: a second opencode process holding a stale snapshot would save
94
+ * over the weekly block another process had just recorded, and the exhausted
95
+ * account would be back in rotation after the next reload (issue #218).
96
+ *
97
+ * Only blocks still in the future are adopted, so an expired entry another
98
+ * process has not pruned yet cannot be resurrected, and a block this process
99
+ * deliberately cleared stays cleared once it has elapsed. `codex-doctor --fix`
100
+ * is unaffected: it persists through its own storage transaction rather than
101
+ * this method.
102
+ *
103
+ * Live in-memory state is intentionally left alone — unlike a consumed
104
+ * refresh token, a missing block is self-correcting, since the very next
105
+ * response re-applies it from the quota headers.
106
+ */
107
+ adoptLongerDiskRateLimits(outgoing, disk) {
108
+ const now = nowMs();
109
+ const diskByIdentity = new Map();
110
+ for (const record of disk.accounts) {
111
+ diskByIdentity.set(getWorkspaceIdentityKey(record), record);
112
+ }
113
+ for (const mine of outgoing.accounts) {
114
+ if (!mine)
115
+ continue;
116
+ const theirs = diskByIdentity.get(getWorkspaceIdentityKey(mine));
117
+ const theirResets = theirs?.rateLimitResetTimes;
118
+ if (!theirResets)
119
+ continue;
120
+ for (const [key, theirReset] of Object.entries(theirResets)) {
121
+ if (typeof theirReset !== "number" ||
122
+ !Number.isFinite(theirReset) ||
123
+ theirReset <= now) {
124
+ continue;
125
+ }
126
+ const myReset = mine.rateLimitResetTimes?.[key];
127
+ if (typeof myReset === "number" && myReset >= theirReset)
128
+ continue;
129
+ mine.rateLimitResetTimes = {
130
+ ...(mine.rateLimitResetTimes ?? {}),
131
+ [key]: theirReset,
132
+ };
133
+ }
134
+ }
135
+ }
78
136
  /**
79
137
  * Merges credentials from `disk` into `outgoing` (and the live in-memory
80
138
  * accounts) for every account whose on-disk refresh token differs and
@@ -1 +1 @@
1
- {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../lib/accounts/persistence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../lib/accounts/persistence.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAoB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EACN,6BAA6B,GAG7B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGvD,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;AAErC;;;GAGG;AACH,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAExC,MAAM,OAAO,kBAAkB;IAKD;IAJrB,iBAAiB,GAAyC,IAAI,CAAC;IAC/D,WAAW,GAAyB,IAAI,CAAC;IACzC,eAAe,GAAiC,IAAI,CAAC;IAE7D,YAA6B,KAAmB;QAAnB,UAAK,GAAL,KAAK,CAAc;IAAG,CAAC;IAEpD,KAAK,CAAC,UAAU;QACf,MAAM,mBAAmB,GAAyC,EAAE,CAAC;QACrE,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;YAC3D,mBAAmB,CAAC,MAAM,CAAC,GAAG,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAEtE,MAAM,OAAO,GAAqB;YACjC,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC/C,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,WAAW,EAAE,OAAO,CAAC,MAAM;gBAC3B,SAAS,EAAE,OAAO,CAAC,OAAO;gBAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBACtD,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,+DAA+D;gBAC/D,+DAA+D;gBAC/D,uDAAuD;gBACvD,mBAAmB,EAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,MAAM,GAAG,CAAC;oBAClD,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE;oBACpC,CAAC,CAAC,SAAS;gBACb,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,cAAc,EAAE,OAAO,CAAC,cAAc;aACtC,CAAC,CAAC;YACH,WAAW;YACX,mBAAmB;SACnB,CAAC;QAEF,mEAAmE;QACnE,oEAAoE;QACpE,gEAAgE;QAChE,oEAAoE;QACpE,+DAA+D;QAC/D,kEAAkE;QAClE,cAAc;QACd,MAAM,6BAA6B,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;YAC9D,IAAI,OAAO,EAAE,CAAC;gBACb,kEAAkE;gBAClE,8DAA8D;gBAC9D,+DAA+D;gBAC/D,mBAAmB;gBACnB,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACjD,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACK,yBAAyB,CAChC,QAA0B,EAC1B,IAAsB;QAEtB,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC;QACpB,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAC;QAC5D,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,cAAc,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7D,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;YACjE,MAAM,WAAW,GAAG,MAAM,EAAE,mBAAmB,CAAC;YAChD,IAAI,CAAC,WAAW;gBAAE,SAAS;YAE3B,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7D,IACC,OAAO,UAAU,KAAK,QAAQ;oBAC9B,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;oBAC5B,UAAU,IAAI,GAAG,EAChB,CAAC;oBACF,SAAS;gBACV,CAAC;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,CAAC;gBAChD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,UAAU;oBAAE,SAAS;gBACnE,IAAI,CAAC,mBAAmB,GAAG;oBAC1B,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC;oBACnC,CAAC,GAAG,CAAC,EAAE,UAAU;iBACjB,CAAC;YACH,CAAC;QACF,CAAC;IACF,CAAC;IAED;;;;;;;;OAQG;IACK,yBAAyB,CAChC,QAA0B,EAC1B,IAAsB;QAEtB,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAC;QAC5D,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,cAAc,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7D,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,MAAM,EAAE,YAAY,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;gBACxE,SAAS;YACV,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,EAAE,CAAC;gBAChE,SAAS;YACV,CAAC;YAED,MAAM,YAAY,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;YACxC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;YACtC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YAClC,wEAAwE;YACxE,uEAAuE;YACvE,6BAA6B;YAC7B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;YACvD,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;YAE5C,mEAAmE;YACnE,mEAAmE;YACnE,oEAAoE;YACpE,iEAAiE;YACjE,+DAA+D;YAC/D,iEAAiE;YACjE,yCAAyC;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CACpC,CAAC,SAAS,EAAE,EAAE,CAAC,uBAAuB,CAAC,SAAS,CAAC,KAAK,YAAY,CAClE,CAAC;YACF,IAAI,IAAI,EAAE,CAAC;gBACV,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;gBACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;gBACjC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;gBAChC,IAAI,MAAM,CAAC,UAAU;oBAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;gBAC3D,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;YAC7C,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,+CAA+C,EAAE;gBACzD,YAAY,EAAE,CAAC;gBACf,SAAS,EAAE,MAAM,CAAC,cAAc;aAChC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,mBAAmB,CAAC,OAAO,GAAG,GAAG;QAChC,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,GAAG,EAAE;YACxC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;gBACzB,IAAI,CAAC;oBACJ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;wBACtB,MAAM,IAAI,CAAC,WAAW,CAAC;oBACxB,CAAC;oBACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;wBACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;oBACzB,CAAC,CAAC,CAAC;oBACH,MAAM,IAAI,CAAC,WAAW,CAAC;gBACxB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE;wBACjC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;qBAC7D,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC,CAAC;YACF,KAAK,MAAM,EAAE,CAAC;QACf,CAAC,EAAE,OAAO,CAAC,CAAC;IACb,CAAC;IAED,KAAK,CAAC,gBAAgB;QACrB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACrC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,WAAW,CAAC;QACxB,CAAC;IACF,CAAC;IAED;;;;;;OAMG;IACK,6BAA6B;QACpC,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO;QACjC,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;YACzC,iEAAiE;YACjE,iEAAiE;YACjE,mEAAmE;YACnE,mEAAmE;YACnE,+DAA+D;YAC/D,gCAAgC;YAChC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,YAAY,GAAyC,IAAI,CAAC;YAC9D,IAAI,CAAC;gBACJ,MAAM,OAAO,CAAC,IAAI,CAAC;oBAClB,IAAI,CAAC,gBAAgB,EAAE;oBACvB,IAAI,OAAO,CAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;wBACtC,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;4BAC9B,MAAM,CACL,IAAI,KAAK,CACR,oCAAoC,yBAAyB,IAAI,CACjE,CACD,CAAC;wBACH,CAAC,EAAE,yBAAyB,CAAC,CAAC;oBAC/B,CAAC,CAAC;iBACF,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE;oBACjC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC7D,CAAC,CAAC;YACJ,CAAC;oBAAS,CAAC;gBACV,IAAI,YAAY;oBAAE,YAAY,CAAC,YAAY,CAAC,CAAC;YAC9C,CAAC;QACF,CAAC,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAC/B,eAAe,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,sBAAsB;QACrB,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO;QAClC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACxC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC7B,CAAC;CACD"}
@@ -60,7 +60,42 @@ export declare class AccountRotation {
60
60
  */
61
61
  refundToken(account: ManagedAccount, family: ModelFamily, model?: string | null): boolean;
62
62
  markRateLimited(account: ManagedAccount, retryAfterMs: number, family: ModelFamily, model?: string | null): void;
63
+ /**
64
+ * The quota keys a (family, model) block covers: the family-wide key, plus
65
+ * the model-scoped one when a model is named.
66
+ */
67
+ private getBlockedQuotaKeys;
68
+ /**
69
+ * Write a rate-limit reset for `key`, keeping whichever block runs longer.
70
+ *
71
+ * Every writer goes through here so a later, shorter block can never shorten
72
+ * an existing one: a concurrent in-flight request that lands a plain 429 with
73
+ * a 30s retry-after must not pull a week-long weekly-quota block forward
74
+ * (issue #218). A stale past value can never win, because any reset written
75
+ * here is at or after `nowMs()`, and expired entries are dropped by
76
+ * `clearExpiredRateLimits` on the next selection pass anyway.
77
+ *
78
+ * @returns true when the stored reset moved later.
79
+ */
80
+ private extendRateLimitReset;
63
81
  markRateLimitedWithReason(account: ManagedAccount, retryAfterMs: number, family: ModelFamily, reason: RateLimitReason, model?: string | null): void;
82
+ /**
83
+ * Block an account until a quota window the backend reported as fully spent
84
+ * resets (issue #218).
85
+ *
86
+ * Differs from {@link markRateLimitedWithReason} in taking an ABSOLUTE reset
87
+ * stamp, so a week-long weekly-quota block is never rebuilt from a capped or
88
+ * backed-off retry delay. Like every writer it goes through
89
+ * {@link extendRateLimitReset}, so it neither shortens an existing block nor
90
+ * can be shortened by a later one.
91
+ *
92
+ * The block rides on the same persisted `rateLimitResetTimes` map as server
93
+ * 429s, so it survives restarts and is shared with other processes through
94
+ * the accounts file, and it expires on its own via `clearExpiredRateLimits`.
95
+ *
96
+ * @returns true when a new (or longer) block was written.
97
+ */
98
+ markQuotaExhausted(account: ManagedAccount, resetAtMs: number, family: ModelFamily, model?: string | null): boolean;
64
99
  markAccountCoolingDown(account: ManagedAccount, cooldownMs: number, reason: CooldownReason): void;
65
100
  /**
66
101
  * Mark every in-memory account sharing a refresh token as cooling down.
@@ -1 +1 @@
1
- {"version":3,"file":"rotation.d.ts","sourceRoot":"","sources":["../../../lib/accounts/rotation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAKN,KAAK,sBAAsB,EAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAIN,KAAK,eAAe,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/D,qBAAa,eAAe;IACf,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,YAAY;IAEhD;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,6BAA6B;IAmBrC,OAAO,CAAC,iBAAiB;IAOzB,yBAAyB,CACxB,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,GACrC,cAAc,GAAG,IAAI;IA2BxB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,GAAG,IAAI;IAoBnF,+BAA+B,CAC9B,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,OAAO,CAAC,EAAE,sBAAsB,EAChC,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,GACrC,cAAc,GAAG,IAAI;IA6DxB;;;;;;;;;;;;;;;OAeG;IACH,+BAA+B,CAC9B,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,GACrC,cAAc,GAAG,IAAI;IAwCxB,aAAa,CACZ,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,IAAI;IAKP,eAAe,CACd,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,IAAI;IAMP,aAAa,CACZ,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,IAAI;IAKP,YAAY,CACX,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,OAAO;IAKV;;;;OAIG;IACH,WAAW,CACV,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,OAAO;IAKV,eAAe,CACd,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,IAAI;IAIP,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;IAeP,sBAAsB,CACrB,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,GACpB,IAAI;IAMP;;;OAGG;IACH,uCAAuC,CACtC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,GACpB,MAAM;IAUT,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;CA+C3E"}
1
+ {"version":3,"file":"rotation.d.ts","sourceRoot":"","sources":["../../../lib/accounts/rotation.ts"],"names":[],"mappings":"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"}
@@ -218,17 +218,93 @@ export class AccountRotation {
218
218
  markRateLimited(account, retryAfterMs, family, model) {
219
219
  this.markRateLimitedWithReason(account, retryAfterMs, family, "unknown", model);
220
220
  }
221
+ /**
222
+ * The quota keys a (family, model) block covers: the family-wide key, plus
223
+ * the model-scoped one when a model is named.
224
+ */
225
+ getBlockedQuotaKeys(family, model) {
226
+ const keys = [getQuotaKey(family)];
227
+ if (model)
228
+ keys.push(getQuotaKey(family, model));
229
+ return keys;
230
+ }
231
+ /**
232
+ * Write a rate-limit reset for `key`, keeping whichever block runs longer.
233
+ *
234
+ * Every writer goes through here so a later, shorter block can never shorten
235
+ * an existing one: a concurrent in-flight request that lands a plain 429 with
236
+ * a 30s retry-after must not pull a week-long weekly-quota block forward
237
+ * (issue #218). A stale past value can never win, because any reset written
238
+ * here is at or after `nowMs()`, and expired entries are dropped by
239
+ * `clearExpiredRateLimits` on the next selection pass anyway.
240
+ *
241
+ * @returns true when the stored reset moved later.
242
+ */
243
+ extendRateLimitReset(account, key, resetAt) {
244
+ const existing = account.rateLimitResetTimes[key];
245
+ if (typeof existing === "number" &&
246
+ Number.isFinite(existing) &&
247
+ existing >= resetAt) {
248
+ return false;
249
+ }
250
+ account.rateLimitResetTimes[key] = resetAt;
251
+ return true;
252
+ }
221
253
  markRateLimitedWithReason(account, retryAfterMs, family, reason, model) {
222
254
  const retryMs = Math.max(0, Math.floor(retryAfterMs));
223
- const resetAt = nowMs() + retryMs;
224
- const baseKey = getQuotaKey(family);
225
- account.rateLimitResetTimes[baseKey] = resetAt;
226
- if (model) {
227
- const modelKey = getQuotaKey(family, model);
228
- account.rateLimitResetTimes[modelKey] = resetAt;
255
+ const keys = this.getBlockedQuotaKeys(family, model);
256
+ if (retryMs === 0) {
257
+ // A zero-length rate limit is not a block, it is the caller saying the
258
+ // window has elapsed. Clearing keeps the long-standing behavior: the
259
+ // old code wrote `nowMs()`, which clearExpiredRateLimits dropped on the
260
+ // next pass. It has to be explicit now, because the monotonic write
261
+ // below would otherwise preserve the very block the caller just
262
+ // declared expired. Nothing in the request path passes 0 — every
263
+ // server-derived delay is at least 1ms.
264
+ for (const key of keys)
265
+ delete account.rateLimitResetTimes[key];
229
266
  }
267
+ else {
268
+ const resetAt = nowMs() + retryMs;
269
+ for (const key of keys) {
270
+ this.extendRateLimitReset(account, key, resetAt);
271
+ }
272
+ }
273
+ // Set unconditionally even when the existing block already ran longer:
274
+ // this records the reason for the most recent 429, not for the block.
230
275
  account.lastRateLimitReason = reason;
231
276
  }
277
+ /**
278
+ * Block an account until a quota window the backend reported as fully spent
279
+ * resets (issue #218).
280
+ *
281
+ * Differs from {@link markRateLimitedWithReason} in taking an ABSOLUTE reset
282
+ * stamp, so a week-long weekly-quota block is never rebuilt from a capped or
283
+ * backed-off retry delay. Like every writer it goes through
284
+ * {@link extendRateLimitReset}, so it neither shortens an existing block nor
285
+ * can be shortened by a later one.
286
+ *
287
+ * The block rides on the same persisted `rateLimitResetTimes` map as server
288
+ * 429s, so it survives restarts and is shared with other processes through
289
+ * the accounts file, and it expires on its own via `clearExpiredRateLimits`.
290
+ *
291
+ * @returns true when a new (or longer) block was written.
292
+ */
293
+ markQuotaExhausted(account, resetAtMs, family, model) {
294
+ if (!Number.isFinite(resetAtMs))
295
+ return false;
296
+ const resetAt = Math.floor(resetAtMs);
297
+ if (resetAt <= nowMs())
298
+ return false;
299
+ let changed = false;
300
+ for (const key of this.getBlockedQuotaKeys(family, model)) {
301
+ if (this.extendRateLimitReset(account, key, resetAt))
302
+ changed = true;
303
+ }
304
+ if (changed)
305
+ account.lastRateLimitReason = "quota";
306
+ return changed;
307
+ }
232
308
  markAccountCoolingDown(account, cooldownMs, reason) {
233
309
  const ms = Math.max(0, Math.floor(cooldownMs));
234
310
  account.coolingDownUntil = nowMs() + ms;
@@ -1 +1 @@
1
- {"version":3,"file":"rotation.js","sourceRoot":"","sources":["../../../lib/accounts/rotation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rotation.js","sourceRoot":"","sources":["../../../lib/accounts/rotation.ts"],"names":[],"mappings":"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"}
@@ -75,6 +75,13 @@ export declare class AccountManager {
75
75
  refundToken(account: ManagedAccount, family: ModelFamily, model?: string | null): boolean;
76
76
  markRateLimited(account: ManagedAccount, retryAfterMs: number, family: ModelFamily, model?: string | null): void;
77
77
  markRateLimitedWithReason(account: ManagedAccount, retryAfterMs: number, family: ModelFamily, reason: RateLimitReason, model?: string | null): void;
78
+ /**
79
+ * Block an account until a fully-spent quota window resets. See
80
+ * {@link AccountRotation.markQuotaExhausted}.
81
+ *
82
+ * @returns true when a new (or longer) block was written.
83
+ */
84
+ markQuotaExhausted(account: ManagedAccount, resetAtMs: number, family: ModelFamily, model?: string | null): boolean;
78
85
  markAccountCoolingDown(account: ManagedAccount, cooldownMs: number, reason: CooldownReason): void;
79
86
  markAccountsWithRefreshTokenCoolingDown(refreshToken: string, cooldownMs: number, reason: CooldownReason): number;
80
87
  getMinWaitTime(): number;
@@ -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":"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"}
@@ -175,6 +175,15 @@ export class AccountManager {
175
175
  markRateLimitedWithReason(account, retryAfterMs, family, reason, model) {
176
176
  this.rotation.markRateLimitedWithReason(account, retryAfterMs, family, reason, model);
177
177
  }
178
+ /**
179
+ * Block an account until a fully-spent quota window resets. See
180
+ * {@link AccountRotation.markQuotaExhausted}.
181
+ *
182
+ * @returns true when a new (or longer) block was written.
183
+ */
184
+ markQuotaExhausted(account, resetAtMs, family, model) {
185
+ return this.rotation.markQuotaExhausted(account, resetAtMs, family, model);
186
+ }
178
187
  markAccountCoolingDown(account, cooldownMs, reason) {
179
188
  this.rotation.markAccountCoolingDown(account, cooldownMs, reason);
180
189
  }
@@ -1 +1 @@
1
- {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../lib/accounts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../lib/accounts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Shared parser for the per-window quota headers the Codex backend puts on
3
+ * every response (`x-codex-primary-*` = the rolling ~5h window,
4
+ * `x-codex-secondary-*` = the weekly window).
5
+ *
6
+ * These headers were previously only read for the TUI status line
7
+ * (`lib/tui-quota-cache.ts`), so the rotation layer had no idea an account had
8
+ * spent its weekly quota until the backend 429'd — and even then it could not
9
+ * tell *which* window was spent. Issue #218: an account at 0% weekly was picked
10
+ * again on every prompt, failed, and rotated away, forever.
11
+ *
12
+ * This module is deliberately a leaf (no imports): both the request path and
13
+ * the TUI cache depend on it, and it must not drag either into the other.
14
+ */
15
+ export type CodexQuotaWindowKind = "primary" | "secondary";
16
+ export interface CodexQuotaWindow {
17
+ kind: CodexQuotaWindowKind;
18
+ /** 0-100. Values >= 100 mean the window is spent. */
19
+ usedPercent?: number;
20
+ /** Window length in minutes. An explicit `0` means "disabled for this plan". */
21
+ windowMinutes?: number;
22
+ /** Absolute reset time in ms since epoch. */
23
+ resetAtMs?: number;
24
+ }
25
+ export declare const CODEX_QUOTA_WINDOW_KINDS: readonly CodexQuotaWindowKind[];
26
+ export declare const CODEX_QUOTA_HEADER_PREFIXES: Record<CodexQuotaWindowKind, string>;
27
+ /**
28
+ * Resolve a window's absolute reset time.
29
+ *
30
+ * `-reset-after-seconds` is preferred over `-reset-at` because it is immune to
31
+ * clock skew between this host and the backend. `-reset-at` is accepted both as
32
+ * an epoch stamp (seconds or milliseconds) and as an ISO-8601 date string.
33
+ */
34
+ export declare function parseQuotaResetAtMs(headers: Headers, prefix: string, now?: number): number | undefined;
35
+ export declare function hasCodexQuotaHeaders(headers: Headers): boolean;
36
+ export declare function parseCodexQuotaWindow(headers: Headers, kind: CodexQuotaWindowKind, now?: number): CodexQuotaWindow;
37
+ /**
38
+ * Parse every quota window the response describes. Windows with no headers at
39
+ * all are omitted, so an empty array means the backend reported no quota state.
40
+ */
41
+ export declare function parseCodexQuotaWindows(headers: Headers, now?: number): CodexQuotaWindow[];
42
+ /**
43
+ * A window reported with `window-minutes: 0` is switched off for the plan, not
44
+ * a window of unknown length. It still reports a used-percent, so it has to be
45
+ * rejected on the explicit zero rather than on missing data.
46
+ */
47
+ export declare function isQuotaWindowDisabled(window: Pick<CodexQuotaWindow, "windowMinutes">): boolean;
48
+ export declare function isQuotaWindowExhausted(window: Pick<CodexQuotaWindow, "windowMinutes" | "usedPercent">): boolean;
49
+ /**
50
+ * The instant at which every spent window has reset, or `undefined` when no
51
+ * window is spent (or the backend gave no usable reset time).
52
+ *
53
+ * The *latest* reset wins, not the soonest: an account whose weekly window is
54
+ * gone stays unusable even after its 5h window rolls over, so collapsing the
55
+ * two with `Math.min` is what let issue #218's account back into rotation every
56
+ * five hours.
57
+ */
58
+ export declare function getQuotaExhaustedResetAtMs(headers: Headers, now?: number): number | undefined;
59
+ //# sourceMappingURL=quota-windows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quota-windows.d.ts","sourceRoot":"","sources":["../../lib/quota-windows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,WAAW,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,wBAAwB,EAAE,SAAS,oBAAoB,EAGnE,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAG5E,CAAC;AA6BF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,GAAG,GAAE,MAAmB,GACtB,MAAM,GAAG,SAAS,CAsBpB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAO9D;AAED,wBAAgB,qBAAqB,CACpC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,oBAAoB,EAC1B,GAAG,GAAE,MAAmB,GACtB,gBAAgB,CAQlB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,OAAO,EAAE,OAAO,EAChB,GAAG,GAAE,MAAmB,GACtB,gBAAgB,EAAE,CAIpB;AAUD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,GAC7C,OAAO,CAET;AAED,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,eAAe,GAAG,aAAa,CAAC,GAC7D,OAAO,CAGT;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACzC,OAAO,EAAE,OAAO,EAChB,GAAG,GAAE,MAAmB,GACtB,MAAM,GAAG,SAAS,CASpB"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Shared parser for the per-window quota headers the Codex backend puts on
3
+ * every response (`x-codex-primary-*` = the rolling ~5h window,
4
+ * `x-codex-secondary-*` = the weekly window).
5
+ *
6
+ * These headers were previously only read for the TUI status line
7
+ * (`lib/tui-quota-cache.ts`), so the rotation layer had no idea an account had
8
+ * spent its weekly quota until the backend 429'd — and even then it could not
9
+ * tell *which* window was spent. Issue #218: an account at 0% weekly was picked
10
+ * again on every prompt, failed, and rotated away, forever.
11
+ *
12
+ * This module is deliberately a leaf (no imports): both the request path and
13
+ * the TUI cache depend on it, and it must not drag either into the other.
14
+ */
15
+ export const CODEX_QUOTA_WINDOW_KINDS = [
16
+ "primary",
17
+ "secondary",
18
+ ];
19
+ export const CODEX_QUOTA_HEADER_PREFIXES = {
20
+ primary: "x-codex-primary",
21
+ secondary: "x-codex-secondary",
22
+ };
23
+ const QUOTA_HEADER_SUFFIXES = [
24
+ "-used-percent",
25
+ "-window-minutes",
26
+ "-reset-at",
27
+ "-reset-after-seconds",
28
+ ];
29
+ /** Epoch values below this are seconds, above are milliseconds. */
30
+ const EPOCH_SECONDS_CEILING = 10_000_000_000;
31
+ function parseFiniteNumberHeader(headers, name) {
32
+ const raw = headers.get(name);
33
+ if (!raw)
34
+ return undefined;
35
+ const parsed = Number(raw);
36
+ return Number.isFinite(parsed) ? parsed : undefined;
37
+ }
38
+ function parseFiniteIntHeader(headers, name) {
39
+ const raw = headers.get(name);
40
+ if (!raw)
41
+ return undefined;
42
+ const parsed = Number.parseInt(raw, 10);
43
+ return Number.isFinite(parsed) ? parsed : undefined;
44
+ }
45
+ /**
46
+ * Resolve a window's absolute reset time.
47
+ *
48
+ * `-reset-after-seconds` is preferred over `-reset-at` because it is immune to
49
+ * clock skew between this host and the backend. `-reset-at` is accepted both as
50
+ * an epoch stamp (seconds or milliseconds) and as an ISO-8601 date string.
51
+ */
52
+ export function parseQuotaResetAtMs(headers, prefix, now = Date.now()) {
53
+ const resetAfterSeconds = parseFiniteIntHeader(headers, `${prefix}-reset-after-seconds`);
54
+ if (typeof resetAfterSeconds === "number" && resetAfterSeconds > 0) {
55
+ return now + resetAfterSeconds * 1000;
56
+ }
57
+ const resetAtRaw = headers.get(`${prefix}-reset-at`);
58
+ if (!resetAtRaw)
59
+ return undefined;
60
+ const trimmed = resetAtRaw.trim();
61
+ if (/^\d+$/.test(trimmed)) {
62
+ const parsed = Number.parseInt(trimmed, 10);
63
+ if (Number.isFinite(parsed) && parsed > 0) {
64
+ return parsed < EPOCH_SECONDS_CEILING ? parsed * 1000 : parsed;
65
+ }
66
+ return undefined;
67
+ }
68
+ const parsedDate = Date.parse(trimmed);
69
+ return Number.isFinite(parsedDate) ? parsedDate : undefined;
70
+ }
71
+ export function hasCodexQuotaHeaders(headers) {
72
+ return CODEX_QUOTA_WINDOW_KINDS.some((kind) => QUOTA_HEADER_SUFFIXES.some((suffix) => headers.get(`${CODEX_QUOTA_HEADER_PREFIXES[kind]}${suffix}`) !== null));
73
+ }
74
+ export function parseCodexQuotaWindow(headers, kind, now = Date.now()) {
75
+ const prefix = CODEX_QUOTA_HEADER_PREFIXES[kind];
76
+ return {
77
+ kind,
78
+ usedPercent: parseFiniteNumberHeader(headers, `${prefix}-used-percent`),
79
+ windowMinutes: parseFiniteIntHeader(headers, `${prefix}-window-minutes`),
80
+ resetAtMs: parseQuotaResetAtMs(headers, prefix, now),
81
+ };
82
+ }
83
+ /**
84
+ * Parse every quota window the response describes. Windows with no headers at
85
+ * all are omitted, so an empty array means the backend reported no quota state.
86
+ */
87
+ export function parseCodexQuotaWindows(headers, now = Date.now()) {
88
+ return CODEX_QUOTA_WINDOW_KINDS.map((kind) => parseCodexQuotaWindow(headers, kind, now)).filter(hasQuotaWindowData);
89
+ }
90
+ function hasQuotaWindowData(window) {
91
+ return (typeof window.usedPercent === "number" ||
92
+ typeof window.windowMinutes === "number" ||
93
+ typeof window.resetAtMs === "number");
94
+ }
95
+ /**
96
+ * A window reported with `window-minutes: 0` is switched off for the plan, not
97
+ * a window of unknown length. It still reports a used-percent, so it has to be
98
+ * rejected on the explicit zero rather than on missing data.
99
+ */
100
+ export function isQuotaWindowDisabled(window) {
101
+ return window.windowMinutes === 0;
102
+ }
103
+ export function isQuotaWindowExhausted(window) {
104
+ if (isQuotaWindowDisabled(window))
105
+ return false;
106
+ return typeof window.usedPercent === "number" && window.usedPercent >= 100;
107
+ }
108
+ /**
109
+ * The instant at which every spent window has reset, or `undefined` when no
110
+ * window is spent (or the backend gave no usable reset time).
111
+ *
112
+ * The *latest* reset wins, not the soonest: an account whose weekly window is
113
+ * gone stays unusable even after its 5h window rolls over, so collapsing the
114
+ * two with `Math.min` is what let issue #218's account back into rotation every
115
+ * five hours.
116
+ */
117
+ export function getQuotaExhaustedResetAtMs(headers, now = Date.now()) {
118
+ let latest;
119
+ for (const window of parseCodexQuotaWindows(headers, now)) {
120
+ if (!isQuotaWindowExhausted(window))
121
+ continue;
122
+ const resetAtMs = window.resetAtMs;
123
+ if (typeof resetAtMs !== "number" || resetAtMs <= now)
124
+ continue;
125
+ if (latest === undefined || resetAtMs > latest)
126
+ latest = resetAtMs;
127
+ }
128
+ return latest;
129
+ }
130
+ //# sourceMappingURL=quota-windows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quota-windows.js","sourceRoot":"","sources":["../../lib/quota-windows.ts"],"names":[],"mappings":"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"}