oc-codex-multi-auth 6.19.0 → 6.21.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.
- package/README.md +15 -12
- package/config/README.md +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +473 -145
- package/dist/index.js.map +1 -1
- package/dist/lib/account-display.d.ts.map +1 -1
- package/dist/lib/account-display.js +3 -1
- package/dist/lib/account-display.js.map +1 -1
- package/dist/lib/accounts/persistence.d.ts +25 -1
- package/dist/lib/accounts/persistence.d.ts.map +1 -1
- package/dist/lib/accounts/persistence.js +105 -2
- package/dist/lib/accounts/persistence.js.map +1 -1
- package/dist/lib/accounts/rate-limits.d.ts +22 -0
- package/dist/lib/accounts/rate-limits.d.ts.map +1 -1
- package/dist/lib/accounts/rate-limits.js +25 -0
- package/dist/lib/accounts/rate-limits.js.map +1 -1
- package/dist/lib/accounts/rotation.d.ts +22 -23
- package/dist/lib/accounts/rotation.d.ts.map +1 -1
- package/dist/lib/accounts/rotation.js +62 -37
- package/dist/lib/accounts/rotation.js.map +1 -1
- package/dist/lib/accounts/stale-state.d.ts +32 -0
- package/dist/lib/accounts/stale-state.d.ts.map +1 -1
- package/dist/lib/accounts/stale-state.js +86 -1
- package/dist/lib/accounts/stale-state.js.map +1 -1
- package/dist/lib/accounts/state.d.ts +6 -0
- package/dist/lib/accounts/state.d.ts.map +1 -1
- package/dist/lib/accounts/state.js +15 -1
- package/dist/lib/accounts/state.js.map +1 -1
- package/dist/lib/accounts/warm-recovery.d.ts +8 -0
- package/dist/lib/accounts/warm-recovery.d.ts.map +1 -0
- package/dist/lib/accounts/warm-recovery.js +70 -0
- package/dist/lib/accounts/warm-recovery.js.map +1 -0
- package/dist/lib/accounts/warm-request.d.ts +2 -0
- package/dist/lib/accounts/warm-request.d.ts.map +1 -1
- package/dist/lib/accounts/warm-request.js +4 -2
- package/dist/lib/accounts/warm-request.js.map +1 -1
- package/dist/lib/accounts.d.ts +1 -1
- package/dist/lib/accounts.d.ts.map +1 -1
- package/dist/lib/accounts.js +2 -2
- package/dist/lib/accounts.js.map +1 -1
- package/dist/lib/auth/login-runner.d.ts +3 -0
- package/dist/lib/auth/login-runner.d.ts.map +1 -1
- package/dist/lib/auth/login-runner.js +35 -0
- package/dist/lib/auth/login-runner.js.map +1 -1
- package/dist/lib/circuit-breaker.d.ts +5 -0
- package/dist/lib/circuit-breaker.d.ts.map +1 -1
- package/dist/lib/circuit-breaker.js +23 -6
- package/dist/lib/circuit-breaker.js.map +1 -1
- package/dist/lib/codex-reset.d.ts +7 -1
- package/dist/lib/codex-reset.d.ts.map +1 -1
- package/dist/lib/codex-reset.js +9 -2
- package/dist/lib/codex-reset.js.map +1 -1
- package/dist/lib/codex-usage.d.ts +16 -6
- package/dist/lib/codex-usage.d.ts.map +1 -1
- package/dist/lib/codex-usage.js +68 -23
- package/dist/lib/codex-usage.js.map +1 -1
- package/dist/lib/config.d.ts +2 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +38 -14
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/parallel-probe.d.ts.map +1 -1
- package/dist/lib/parallel-probe.js +5 -2
- package/dist/lib/parallel-probe.js.map +1 -1
- package/dist/lib/quota-notifications.d.ts.map +1 -1
- package/dist/lib/quota-notifications.js +10 -1
- package/dist/lib/quota-notifications.js.map +1 -1
- package/dist/lib/request/fetch-helpers.d.ts +24 -0
- package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
- package/dist/lib/request/fetch-helpers.js +88 -38
- package/dist/lib/request/fetch-helpers.js.map +1 -1
- package/dist/lib/request/response-handler.d.ts.map +1 -1
- package/dist/lib/request/response-handler.js +85 -43
- package/dist/lib/request/response-handler.js.map +1 -1
- package/dist/lib/rotation.d.ts +1 -1
- package/dist/lib/schemas.d.ts +9 -0
- package/dist/lib/schemas.d.ts.map +1 -1
- package/dist/lib/schemas.js +3 -0
- package/dist/lib/schemas.js.map +1 -1
- package/dist/lib/storage/flagged.d.ts.map +1 -1
- package/dist/lib/storage/flagged.js +5 -0
- package/dist/lib/storage/flagged.js.map +1 -1
- package/dist/lib/storage/load-save.d.ts +1 -0
- package/dist/lib/storage/load-save.d.ts.map +1 -1
- package/dist/lib/storage/load-save.js +11 -0
- package/dist/lib/storage/load-save.js.map +1 -1
- package/dist/lib/storage/migrations.d.ts +21 -0
- package/dist/lib/storage/migrations.d.ts.map +1 -1
- package/dist/lib/storage/migrations.js.map +1 -1
- package/dist/lib/storage/normalize.d.ts.map +1 -1
- package/dist/lib/storage/normalize.js +93 -1
- package/dist/lib/storage/normalize.js.map +1 -1
- package/dist/lib/storage/state.d.ts +1 -0
- package/dist/lib/storage/state.d.ts.map +1 -1
- package/dist/lib/storage/state.js +12 -0
- package/dist/lib/storage/state.js.map +1 -1
- package/dist/lib/tools/codex-doctor.d.ts.map +1 -1
- package/dist/lib/tools/codex-doctor.js +8 -66
- package/dist/lib/tools/codex-doctor.js.map +1 -1
- package/dist/lib/tools/codex-health.d.ts.map +1 -1
- package/dist/lib/tools/codex-health.js +7 -1
- package/dist/lib/tools/codex-health.js.map +1 -1
- package/dist/lib/tools/codex-limits.d.ts.map +1 -1
- package/dist/lib/tools/codex-limits.js +13 -1
- package/dist/lib/tools/codex-limits.js.map +1 -1
- package/dist/lib/tools/codex-list.d.ts.map +1 -1
- package/dist/lib/tools/codex-list.js +14 -1
- package/dist/lib/tools/codex-list.js.map +1 -1
- package/dist/lib/tools/codex-reset.d.ts.map +1 -1
- package/dist/lib/tools/codex-reset.js +40 -1
- package/dist/lib/tools/codex-reset.js.map +1 -1
- package/dist/lib/tools/codex-status.d.ts.map +1 -1
- package/dist/lib/tools/codex-status.js +6 -1
- package/dist/lib/tools/codex-status.js.map +1 -1
- package/dist/lib/tools/codex-warm.d.ts +2 -1
- package/dist/lib/tools/codex-warm.d.ts.map +1 -1
- package/dist/lib/tools/codex-warm.js +48 -5
- package/dist/lib/tools/codex-warm.js.map +1 -1
- package/dist/lib/tools/doctor-repair.d.ts +10 -0
- package/dist/lib/tools/doctor-repair.d.ts.map +1 -0
- package/dist/lib/tools/doctor-repair.js +86 -0
- package/dist/lib/tools/doctor-repair.js.map +1 -0
- package/dist/lib/tools/index.d.ts +4 -1
- package/dist/lib/tools/index.d.ts.map +1 -1
- package/dist/lib/tools/index.js.map +1 -1
- package/dist/lib/tui-quota-cache.d.ts.map +1 -1
- package/dist/lib/tui-quota-cache.js +3 -1
- package/dist/lib/tui-quota-cache.js.map +1 -1
- package/dist/tui.d.ts +4 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +24 -14
- package/dist/tui.js.map +1 -1
- package/package.json +1 -1
- package/scripts/install-oc-codex-multi-auth-core.js +168 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-display.js","sourceRoot":"","sources":["../../lib/account-display.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAyB;IAC5D,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"account-display.js","sourceRoot":"","sources":["../../lib/account-display.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAyB;IAC5D,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IACjC,qEAAqE;IACrE,wDAAwD;IACxD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,GAAG,MAAM,MAAM,MAAM,EAAE,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAClC,KAAyB,EACzB,SAAkB;IAElB,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAC3D,CAAC"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* *lifecycle* (when to save, how to flush before exit, how to dispose the
|
|
7
7
|
* shutdown hook) rather than the serialization shape itself.
|
|
8
8
|
*/
|
|
9
|
+
import { type AccountMetadataV3 } from "../storage.js";
|
|
9
10
|
import type { AccountState } from "./state.js";
|
|
10
11
|
export declare class AccountPersistence {
|
|
11
12
|
private readonly state;
|
|
@@ -18,6 +19,7 @@ export declare class AccountPersistence {
|
|
|
18
19
|
* further write degrades to {@link mergeVolatileState}.
|
|
19
20
|
*/
|
|
20
21
|
private disposed;
|
|
22
|
+
private externalReloadSnapshot?;
|
|
21
23
|
constructor(state: AccountState);
|
|
22
24
|
saveToDisk(): Promise<void>;
|
|
23
25
|
/**
|
|
@@ -35,6 +37,28 @@ export declare class AccountPersistence {
|
|
|
35
37
|
* self-correcting from the next response's quota headers.
|
|
36
38
|
*/
|
|
37
39
|
private mergeVolatileState;
|
|
40
|
+
/**
|
|
41
|
+
* Keep a `codex-doctor --fix` quota-stamp clear that landed on disk after
|
|
42
|
+
* this process loaded its snapshot.
|
|
43
|
+
*
|
|
44
|
+
* The #218 monotonic merge is one-directional by design: it adopts longer
|
|
45
|
+
* stamps so a stale process cannot wipe out a fresh week-long block, but
|
|
46
|
+
* that same direction resurrects a stamp a doctor verification just
|
|
47
|
+
* cleared — this process still holds the stamp in memory and writes it
|
|
48
|
+
* back verbatim on its next save. The doctor clear cannot distinguish
|
|
49
|
+
* "stale snapshot" from "new evidence" through values alone, so it dates
|
|
50
|
+
* its clear (`quotaExhaustedClearedAt`) and every authoritative stamp
|
|
51
|
+
* write dates itself (`quotaExhaustedStampAt`). A stamp at least as old
|
|
52
|
+
* as the clear stays cleared; a newer stamp (real 429/poller evidence
|
|
53
|
+
* recorded after the clear) wins and is kept.
|
|
54
|
+
*
|
|
55
|
+
* Stamps without provenance (`quotaExhaustedStampAt` undefined — written
|
|
56
|
+
* by pre-upgrade builds or hand-edited files) are treated as predating
|
|
57
|
+
* the clear, so the tombstone stays effective across mixed-version pools.
|
|
58
|
+
* The cost of a wrongly-suppressed legacy stamp is one upstream 429 that
|
|
59
|
+
* immediately re-stamps the account.
|
|
60
|
+
*/
|
|
61
|
+
private applyDiskQuotaClearTombstones;
|
|
38
62
|
/**
|
|
39
63
|
* Merges still-active rate-limit blocks from `disk` into `outgoing`, keeping
|
|
40
64
|
* whichever block runs longer per quota key.
|
|
@@ -110,6 +134,6 @@ export declare class AccountPersistence {
|
|
|
110
134
|
* it clears its own slot when it runs, so a manager whose shutdown flush has
|
|
111
135
|
* already fired must still be marked here.
|
|
112
136
|
*/
|
|
113
|
-
disposeShutdownHandler(): void;
|
|
137
|
+
disposeShutdownHandler(externalReload?: boolean, clearedSnapshots?: readonly AccountMetadataV3[]): void;
|
|
114
138
|
}
|
|
115
139
|
//# sourceMappingURL=persistence.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../lib/accounts/persistence.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../lib/accounts/persistence.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAEN,KAAK,iBAAiB,EAEtB,MAAM,eAAe,CAAC;AAIvB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAU/C,qBAAa,kBAAkB;IAalB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAZlC,OAAO,CAAC,iBAAiB,CAA8C;IACvE,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,eAAe,CAAsC;IAC7D;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,sBAAsB,CAAC,CACiE;gBAEnE,KAAK,EAAE,YAAY;IAE1C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA+EjC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,kBAAkB;IAyE1B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,6BAA6B;IA2BrC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,yBAAyB;IAoDjC;;;;;;;;OAQG;IACH,OAAO,CAAC,yBAAyB;IAuDjC;;;;;;;;OAQG;IACH,mBAAmB,CAAC,OAAO,SAAM,GAAG,IAAI;IA0BlC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWvC;;;;;;OAMG;IACH,OAAO,CAAC,6BAA6B;IAoCrC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,sBAAsB,CAAC,cAAc,UAAQ,EAAE,gBAAgB,CAAC,EAAE,SAAS,iBAAiB,EAAE,GAAG,IAAI;CAsBrG"}
|
|
@@ -30,6 +30,7 @@ export class AccountPersistence {
|
|
|
30
30
|
* further write degrades to {@link mergeVolatileState}.
|
|
31
31
|
*/
|
|
32
32
|
disposed = false;
|
|
33
|
+
externalReloadSnapshot;
|
|
33
34
|
constructor(state) {
|
|
34
35
|
this.state = state;
|
|
35
36
|
}
|
|
@@ -67,6 +68,9 @@ export class AccountPersistence {
|
|
|
67
68
|
rateLimitResetTimes: Object.keys(account.rateLimitResetTimes).length > 0
|
|
68
69
|
? { ...account.rateLimitResetTimes }
|
|
69
70
|
: undefined,
|
|
71
|
+
quotaExhaustedUntil: account.quotaExhaustedUntil,
|
|
72
|
+
quotaExhaustedStampAt: account.quotaExhaustedStampAt,
|
|
73
|
+
quotaExhaustedClearedAt: account.quotaExhaustedClearedAt,
|
|
70
74
|
coolingDownUntil: account.coolingDownUntil,
|
|
71
75
|
cooldownReason: account.cooldownReason,
|
|
72
76
|
})),
|
|
@@ -98,6 +102,7 @@ export class AccountPersistence {
|
|
|
98
102
|
// ids the refresh token participates in the identity key, and
|
|
99
103
|
// adopting a rotated token would change which disk record this
|
|
100
104
|
// account matches.
|
|
105
|
+
this.applyDiskQuotaClearTombstones(storage, current);
|
|
101
106
|
this.adoptLongerDiskRateLimits(storage, current);
|
|
102
107
|
this.adoptNewerDiskCredentials(storage, current);
|
|
103
108
|
}
|
|
@@ -130,12 +135,15 @@ export class AccountPersistence {
|
|
|
130
135
|
const mine = mineByIdentity.get(getWorkspaceIdentityKey(record));
|
|
131
136
|
if (!mine)
|
|
132
137
|
return record;
|
|
138
|
+
const superseded = this.externalReloadSnapshot?.get(getWorkspaceIdentityKey(record));
|
|
133
139
|
const merged = { ...record };
|
|
134
140
|
// Longest-block-wins per quota key, matching adoptLongerDiskRateLimits.
|
|
135
141
|
// Only blocks still in the future are carried, so an entry this
|
|
136
142
|
// manager never pruned cannot resurrect an expired block.
|
|
137
143
|
let resets;
|
|
138
144
|
for (const [key, mineReset] of Object.entries(mine.rateLimitResetTimes ?? {})) {
|
|
145
|
+
if (superseded && mineReset === superseded.rateLimitResetTimes?.[key])
|
|
146
|
+
continue;
|
|
139
147
|
if (typeof mineReset !== "number" || !Number.isFinite(mineReset) || mineReset <= now) {
|
|
140
148
|
continue;
|
|
141
149
|
}
|
|
@@ -146,12 +154,32 @@ export class AccountPersistence {
|
|
|
146
154
|
}
|
|
147
155
|
if (resets)
|
|
148
156
|
merged.rateLimitResetTimes = resets;
|
|
149
|
-
if (
|
|
157
|
+
if ((!superseded || mine.coolingDownUntil !== superseded.coolingDownUntil) &&
|
|
158
|
+
typeof mine.coolingDownUntil === "number" &&
|
|
150
159
|
mine.coolingDownUntil > now &&
|
|
151
160
|
mine.coolingDownUntil > (record.coolingDownUntil ?? 0)) {
|
|
152
161
|
merged.coolingDownUntil = mine.coolingDownUntil;
|
|
153
162
|
merged.cooldownReason = mine.cooldownReason;
|
|
154
163
|
}
|
|
164
|
+
// Account-wide quota exhaustion is monotonic like the per-family
|
|
165
|
+
// blocks: keep whichever side's stamp runs longer. A doctor-clear
|
|
166
|
+
// tombstone on the disk record outranks a snapshot stamp that was
|
|
167
|
+
// not written after the clear (see applyDiskQuotaClearTombstones);
|
|
168
|
+
// a stamp that IS newer displaces the tombstone.
|
|
169
|
+
const diskClearedAt = record.quotaExhaustedClearedAt;
|
|
170
|
+
const mineStampIsNewerThanClear = typeof diskClearedAt !== "number" ||
|
|
171
|
+
(typeof mine.quotaExhaustedStampAt === "number" &&
|
|
172
|
+
mine.quotaExhaustedStampAt > diskClearedAt);
|
|
173
|
+
if ((!superseded || mine.quotaExhaustedUntil !== superseded.quotaExhaustedUntil ||
|
|
174
|
+
mine.quotaExhaustedStampAt !== superseded.quotaExhaustedStampAt) &&
|
|
175
|
+
typeof mine.quotaExhaustedUntil === "number" &&
|
|
176
|
+
mine.quotaExhaustedUntil > now &&
|
|
177
|
+
mine.quotaExhaustedUntil > (record.quotaExhaustedUntil ?? 0) &&
|
|
178
|
+
mineStampIsNewerThanClear) {
|
|
179
|
+
merged.quotaExhaustedUntil = mine.quotaExhaustedUntil;
|
|
180
|
+
merged.quotaExhaustedStampAt = mine.quotaExhaustedStampAt;
|
|
181
|
+
delete merged.quotaExhaustedClearedAt;
|
|
182
|
+
}
|
|
155
183
|
if (typeof mine.lastUsed === "number" && mine.lastUsed > (record.lastUsed ?? 0)) {
|
|
156
184
|
merged.lastUsed = mine.lastUsed;
|
|
157
185
|
merged.lastSwitchReason = mine.lastSwitchReason ?? record.lastSwitchReason;
|
|
@@ -160,6 +188,49 @@ export class AccountPersistence {
|
|
|
160
188
|
}),
|
|
161
189
|
};
|
|
162
190
|
}
|
|
191
|
+
/**
|
|
192
|
+
* Keep a `codex-doctor --fix` quota-stamp clear that landed on disk after
|
|
193
|
+
* this process loaded its snapshot.
|
|
194
|
+
*
|
|
195
|
+
* The #218 monotonic merge is one-directional by design: it adopts longer
|
|
196
|
+
* stamps so a stale process cannot wipe out a fresh week-long block, but
|
|
197
|
+
* that same direction resurrects a stamp a doctor verification just
|
|
198
|
+
* cleared — this process still holds the stamp in memory and writes it
|
|
199
|
+
* back verbatim on its next save. The doctor clear cannot distinguish
|
|
200
|
+
* "stale snapshot" from "new evidence" through values alone, so it dates
|
|
201
|
+
* its clear (`quotaExhaustedClearedAt`) and every authoritative stamp
|
|
202
|
+
* write dates itself (`quotaExhaustedStampAt`). A stamp at least as old
|
|
203
|
+
* as the clear stays cleared; a newer stamp (real 429/poller evidence
|
|
204
|
+
* recorded after the clear) wins and is kept.
|
|
205
|
+
*
|
|
206
|
+
* Stamps without provenance (`quotaExhaustedStampAt` undefined — written
|
|
207
|
+
* by pre-upgrade builds or hand-edited files) are treated as predating
|
|
208
|
+
* the clear, so the tombstone stays effective across mixed-version pools.
|
|
209
|
+
* The cost of a wrongly-suppressed legacy stamp is one upstream 429 that
|
|
210
|
+
* immediately re-stamps the account.
|
|
211
|
+
*/
|
|
212
|
+
applyDiskQuotaClearTombstones(outgoing, disk) {
|
|
213
|
+
const diskByIdentity = new Map();
|
|
214
|
+
for (const record of disk.accounts) {
|
|
215
|
+
diskByIdentity.set(getWorkspaceIdentityKey(record), record);
|
|
216
|
+
}
|
|
217
|
+
for (const mine of outgoing.accounts) {
|
|
218
|
+
if (!mine)
|
|
219
|
+
continue;
|
|
220
|
+
const theirs = diskByIdentity.get(getWorkspaceIdentityKey(mine));
|
|
221
|
+
const clearedAt = theirs?.quotaExhaustedClearedAt;
|
|
222
|
+
if (typeof clearedAt !== "number" ||
|
|
223
|
+
!Number.isFinite(clearedAt) ||
|
|
224
|
+
mine.quotaExhaustedUntil === undefined) {
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
if ((mine.quotaExhaustedStampAt ?? 0) > clearedAt)
|
|
228
|
+
continue;
|
|
229
|
+
delete mine.quotaExhaustedUntil;
|
|
230
|
+
delete mine.quotaExhaustedStampAt;
|
|
231
|
+
mine.quotaExhaustedClearedAt = clearedAt;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
163
234
|
/**
|
|
164
235
|
* Merges still-active rate-limit blocks from `disk` into `outgoing`, keeping
|
|
165
236
|
* whichever block runs longer per quota key.
|
|
@@ -190,6 +261,21 @@ export class AccountPersistence {
|
|
|
190
261
|
if (!mine)
|
|
191
262
|
continue;
|
|
192
263
|
const theirs = diskByIdentity.get(getWorkspaceIdentityKey(mine));
|
|
264
|
+
// Adopt a longer on-disk quota-exhaustion stamp for the same reason the
|
|
265
|
+
// per-family blocks below are adopted (#218): a second process may have
|
|
266
|
+
// recorded a week-long block after this one loaded. Handled before the
|
|
267
|
+
// `theirResets` guard so a disk record carrying only a quota stamp is
|
|
268
|
+
// not skipped. The stamp's provenance travels with it, and a freshly
|
|
269
|
+
// adopted stamp displaces any tombstone (stamp writers never set both).
|
|
270
|
+
const theirQuota = theirs?.quotaExhaustedUntil;
|
|
271
|
+
if (typeof theirQuota === "number" &&
|
|
272
|
+
Number.isFinite(theirQuota) &&
|
|
273
|
+
theirQuota > now &&
|
|
274
|
+
theirQuota > (mine.quotaExhaustedUntil ?? 0)) {
|
|
275
|
+
mine.quotaExhaustedUntil = theirQuota;
|
|
276
|
+
mine.quotaExhaustedStampAt = theirs?.quotaExhaustedStampAt;
|
|
277
|
+
delete mine.quotaExhaustedClearedAt;
|
|
278
|
+
}
|
|
193
279
|
const theirResets = theirs?.rateLimitResetTimes;
|
|
194
280
|
if (!theirResets)
|
|
195
281
|
continue;
|
|
@@ -378,7 +464,24 @@ export class AccountPersistence {
|
|
|
378
464
|
* it clears its own slot when it runs, so a manager whose shutdown flush has
|
|
379
465
|
* already fired must still be marked here.
|
|
380
466
|
*/
|
|
381
|
-
disposeShutdownHandler() {
|
|
467
|
+
disposeShutdownHandler(externalReload = false, clearedSnapshots) {
|
|
468
|
+
if (clearedSnapshots) {
|
|
469
|
+
this.externalReloadSnapshot = new Map(clearedSnapshots.map((account) => [
|
|
470
|
+
getWorkspaceIdentityKey(account),
|
|
471
|
+
{ ...account, rateLimitResetTimes: { ...account.rateLimitResetTimes } },
|
|
472
|
+
]));
|
|
473
|
+
}
|
|
474
|
+
if (externalReload) {
|
|
475
|
+
// Only evidence acquired after an external reload may be saved by an
|
|
476
|
+
// in-flight request holding this superseded manager.
|
|
477
|
+
this.externalReloadSnapshot = new Map(this.state.accounts.map((account) => [
|
|
478
|
+
getWorkspaceIdentityKey(account),
|
|
479
|
+
{ ...account, rateLimitResetTimes: { ...account.rateLimitResetTimes } },
|
|
480
|
+
]));
|
|
481
|
+
if (this.saveDebounceTimer)
|
|
482
|
+
clearTimeout(this.saveDebounceTimer);
|
|
483
|
+
this.saveDebounceTimer = null;
|
|
484
|
+
}
|
|
382
485
|
this.disposed = true;
|
|
383
486
|
if (!this.shutdownHandler)
|
|
384
487
|
return;
|
|
@@ -1 +1 @@
|
|
|
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;IAWD;IAVrB,iBAAiB,GAAyC,IAAI,CAAC;IAC/D,WAAW,GAAyB,IAAI,CAAC;IACzC,eAAe,GAAiC,IAAI,CAAC;IAC7D;;;;OAIG;IACK,QAAQ,GAAG,KAAK,CAAC;IAEzB,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,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,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,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,gEAAgE;gBAChE,kEAAkE;gBAClE,gEAAgE;gBAChE,iEAAiE;gBACjE,kEAAkE;gBAClE,gEAAgE;gBAChE,+BAA+B;gBAC/B,IAAI,OAAO;oBAAE,MAAM,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC7D,OAAO;YACR,CAAC;YACD,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;;;;;;;;;;;;;OAaG;IACK,kBAAkB,CAAC,IAAsB;QAChD,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC;QACpB,MAAM,cAAc,GAAG,IAAI,GAAG,EAA4C,CAAC;QAC3E,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC3C,cAAc,CAAC,GAAG,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO;YACN,GAAG,IAAI;YACP,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACtC,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;gBACjE,IAAI,CAAC,IAAI;oBAAE,OAAO,MAAM,CAAC;gBACzB,MAAM,MAAM,GAAsB,EAAE,GAAG,MAAM,EAAE,CAAC;gBAEhD,wEAAwE;gBACxE,gEAAgE;gBAChE,0DAA0D;gBAC1D,IAAI,MAAsD,CAAC;gBAC3D,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,EAAE,CAAC;oBAC/E,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;wBACtF,SAAS;oBACV,CAAC;oBACD,MAAM,UAAU,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,CAAC;oBACrD,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,IAAI,SAAS;wBAAE,SAAS;oBACxE,MAAM,GAAG,EAAE,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC;gBAChF,CAAC;gBACD,IAAI,MAAM;oBAAE,MAAM,CAAC,mBAAmB,GAAG,MAAM,CAAC;gBAEhD,IACC,OAAO,IAAI,CAAC,gBAAgB,KAAK,QAAQ;oBACzC,IAAI,CAAC,gBAAgB,GAAG,GAAG;oBAC3B,IAAI,CAAC,gBAAgB,GAAG,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC,EACrD,CAAC;oBACF,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;oBAChD,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;gBAC7C,CAAC;gBAED,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC;oBACjF,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;oBAChC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC;gBAC5E,CAAC;gBAED,OAAO,MAAM,CAAC;YACf,CAAC,CAAC;SACF,CAAC;IACH,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;;;;;;;;OAQG;IACH,mBAAmB,CAAC,OAAO,GAAG,GAAG;QAChC,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACzD,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;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,sBAAsB;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;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"}
|
|
1
|
+
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../lib/accounts/persistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,28 @@ export interface RateLimitedEntity {
|
|
|
16
16
|
rateLimitResetTimes: RateLimitState;
|
|
17
17
|
}
|
|
18
18
|
export declare function clearExpiredRateLimits(entity: RateLimitedEntity): void;
|
|
19
|
+
export interface QuotaExhaustibleEntity {
|
|
20
|
+
/** Ms epoch until which this account's shared subscription quota is spent. */
|
|
21
|
+
quotaExhaustedUntil?: number;
|
|
22
|
+
/** When the stamp was written; see AccountMetadataV3. */
|
|
23
|
+
quotaExhaustedStampAt?: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Whether an account's shared subscription quota is currently spent.
|
|
27
|
+
*
|
|
28
|
+
* This is an ACCOUNT-WIDE block sourced from the `/wham/usage`
|
|
29
|
+
* primary/secondary window, deliberately distinct from the per-family /
|
|
30
|
+
* per-model transient blocks tracked in {@link RateLimitState}. Read sites
|
|
31
|
+
* report it separately so a 30-second 429 is never conflated with a week-long
|
|
32
|
+
* subscription-quota exhaustion.
|
|
33
|
+
*/
|
|
34
|
+
export declare function isQuotaExhausted(entity: QuotaExhaustibleEntity, now?: number): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Drop an elapsed (or non-finite) quota-exhaustion stamp so it does not leak
|
|
37
|
+
* into snapshots or persistence, mirroring {@link clearExpiredRateLimits} for
|
|
38
|
+
* the per-family map.
|
|
39
|
+
*/
|
|
40
|
+
export declare function clearExpiredQuotaExhaustion(entity: QuotaExhaustibleEntity, now?: number): void;
|
|
19
41
|
export declare function isRateLimitedForQuotaKey(entity: RateLimitedEntity, key: QuotaKey): boolean;
|
|
20
42
|
export declare function isRateLimitedForFamily(entity: RateLimitedEntity, family: ModelFamily, model?: string | null): boolean;
|
|
21
43
|
/**
|
|
@@ -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;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAUjD"}
|
|
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,MAAM,WAAW,sBAAsB;IACtC,8EAA8E;IAC9E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,yDAAyD;IACzD,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,sBAAsB,EAC9B,GAAG,GAAE,MAAgB,GACnB,OAAO,CAGT;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAC1C,MAAM,EAAE,sBAAsB,EAC9B,GAAG,GAAE,MAAgB,GACnB,IAAI,CAMN;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;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAUjD"}
|
|
@@ -37,6 +37,31 @@ export function clearExpiredRateLimits(entity) {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Whether an account's shared subscription quota is currently spent.
|
|
42
|
+
*
|
|
43
|
+
* This is an ACCOUNT-WIDE block sourced from the `/wham/usage`
|
|
44
|
+
* primary/secondary window, deliberately distinct from the per-family /
|
|
45
|
+
* per-model transient blocks tracked in {@link RateLimitState}. Read sites
|
|
46
|
+
* report it separately so a 30-second 429 is never conflated with a week-long
|
|
47
|
+
* subscription-quota exhaustion.
|
|
48
|
+
*/
|
|
49
|
+
export function isQuotaExhausted(entity, now = nowMs()) {
|
|
50
|
+
const until = entity.quotaExhaustedUntil;
|
|
51
|
+
return typeof until === "number" && Number.isFinite(until) && now < until;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Drop an elapsed (or non-finite) quota-exhaustion stamp so it does not leak
|
|
55
|
+
* into snapshots or persistence, mirroring {@link clearExpiredRateLimits} for
|
|
56
|
+
* the per-family map.
|
|
57
|
+
*/
|
|
58
|
+
export function clearExpiredQuotaExhaustion(entity, now = nowMs()) {
|
|
59
|
+
const until = entity.quotaExhaustedUntil;
|
|
60
|
+
if (until !== undefined && (!Number.isFinite(until) || now >= until)) {
|
|
61
|
+
delete entity.quotaExhaustedUntil;
|
|
62
|
+
delete entity.quotaExhaustedStampAt;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
40
65
|
export function isRateLimitedForQuotaKey(entity, key) {
|
|
41
66
|
const resetTime = entity.rateLimitResetTimes[key];
|
|
42
67
|
return resetTime !== undefined && nowMs() < resetTime;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limits.js","sourceRoot":"","sources":["../../../lib/accounts/rate-limits.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rate-limits.js","sourceRoot":"","sources":["../../../lib/accounts/rate-limits.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,16 +35,25 @@ export declare class AccountRotation {
|
|
|
35
35
|
* Health/token/freshness-weighted selection. The historical default.
|
|
36
36
|
*
|
|
37
37
|
* When at least one account is selectable this returns the best-scoring one.
|
|
38
|
-
* When NONE is — every account disabled, rate-limited or
|
|
39
|
-
* `selectHybridAccount` deliberately falls back to the
|
|
40
|
-
* account instead of returning null, because retrying a
|
|
41
|
-
* beats refusing to send anything (a single-account pool has
|
|
42
|
-
* over to, and a persisted block can outlive the limit that
|
|
38
|
+
* When NONE is — every account disabled, rate-limited, quota-exhausted or
|
|
39
|
+
* cooling down — `selectHybridAccount` deliberately falls back to the
|
|
40
|
+
* least-recently-used account instead of returning null, because retrying a
|
|
41
|
+
* blocked account beats refusing to send anything (a single-account pool has
|
|
42
|
+
* nowhere to fail over to, and a persisted block can outlive the limit that
|
|
43
|
+
* caused it).
|
|
43
44
|
*
|
|
44
45
|
* So a returned account is NOT a promise that it is selectable. Callers that
|
|
45
46
|
* need that guarantee must consult `getSelectionExplainability`, which is
|
|
46
47
|
* what `codex-doctor` does. {@link getCurrentOrNextForFamilySticky} and
|
|
47
48
|
* {@link getCurrentOrNextForFamily} return null in the same situation.
|
|
49
|
+
*
|
|
50
|
+
* The request path overrides this last-resort behavior: when the fallback
|
|
51
|
+
* account is marked ineligible in the selection explainability, the request
|
|
52
|
+
* loop discards it instead of sending it upstream, so an all-blocked pool
|
|
53
|
+
* waits out (or fails on) the block rather than retrying it — which is also
|
|
54
|
+
* what allows model fallback to degrade the model when every account is
|
|
55
|
+
* blocked. The last-resort retry still applies to callers that do not
|
|
56
|
+
* re-check eligibility (for example `codex-doctor` probing).
|
|
48
57
|
*/
|
|
49
58
|
getCurrentOrNextForFamilyHybrid(family: ModelFamily, model?: string | null, options?: HybridSelectionOptions, preferredAccountIds?: readonly string[], strictPreferredPool?: boolean, excludedIndices?: ReadonlySet<number>): ManagedAccount | null;
|
|
50
59
|
/**
|
|
@@ -106,27 +115,17 @@ export declare class AccountRotation {
|
|
|
106
115
|
* Block an account until a quota window the backend reported as fully spent
|
|
107
116
|
* resets (issue #218).
|
|
108
117
|
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
* 429s, so it survives restarts and is shared with other processes through
|
|
117
|
-
* the accounts file, and it expires on its own via `clearExpiredRateLimits`.
|
|
118
|
-
*
|
|
119
|
-
* Because that write is monotonic and persisted, it is also unforgiving: a
|
|
120
|
-
* reset stamp further out than any real window would strand the account for
|
|
121
|
-
* as long as it claims, with nothing in the product able to walk it back. The
|
|
122
|
-
* upper bound below is the same guard `parseQuotaResetAtMs` applies to the
|
|
123
|
-
* headers, repeated here because this is the method that makes a block
|
|
124
|
-
* permanent — the lower bound on the next line has always been checked for
|
|
125
|
-
* the same reason.
|
|
118
|
+
* Primary/secondary subscription windows are account-wide, irrespective of
|
|
119
|
+
* the request's family/model. Keep their absolute reset monotonically in
|
|
120
|
+
* `quotaExhaustedUntil`, persisted separately from transient server 429s and
|
|
121
|
+
* expired by `clearExpiredQuotaExhaustion`. Legacy family/model arguments
|
|
122
|
+
* remain accepted, but cannot narrow the subscription block's scope.
|
|
123
|
+
* Reject implausible timestamps using the parser's horizon guard so a bad
|
|
124
|
+
* header cannot strand an account indefinitely.
|
|
126
125
|
*
|
|
127
126
|
* @returns true when a new (or longer) block was written.
|
|
128
127
|
*/
|
|
129
|
-
markQuotaExhausted(account: ManagedAccount, resetAtMs: number,
|
|
128
|
+
markQuotaExhausted(account: ManagedAccount, resetAtMs: number, _family: ModelFamily, _model?: string | null): boolean;
|
|
130
129
|
markAccountCoolingDown(account: ManagedAccount, cooldownMs: number, reason: CooldownReason): void;
|
|
131
130
|
/**
|
|
132
131
|
* 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;AAGxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,
|
|
1
|
+
{"version":3,"file":"rotation.d.ts","sourceRoot":"","sources":["../../../lib/accounts/rotation.ts"],"names":[],"mappings":"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"}
|