oc-codex-multi-auth 6.17.0 → 6.19.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 +10 -6
- package/config/README.md +1 -1
- package/dist/lib/auth/token-utils.d.ts +21 -0
- package/dist/lib/auth/token-utils.d.ts.map +1 -1
- package/dist/lib/auth/token-utils.js +30 -0
- package/dist/lib/auth/token-utils.js.map +1 -1
- package/dist/lib/codex-reset.d.ts +13 -0
- package/dist/lib/codex-reset.d.ts.map +1 -1
- package/dist/lib/codex-reset.js +20 -4
- package/dist/lib/codex-reset.js.map +1 -1
- package/dist/lib/codex-usage.d.ts +64 -0
- package/dist/lib/codex-usage.d.ts.map +1 -1
- package/dist/lib/codex-usage.js +128 -0
- package/dist/lib/codex-usage.js.map +1 -1
- package/dist/lib/config.d.ts +2 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +7 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/prompts/codex.d.ts.map +1 -1
- package/dist/lib/prompts/codex.js +10 -11
- package/dist/lib/prompts/codex.js.map +1 -1
- package/dist/lib/quota-notifications.d.ts +1 -1
- package/dist/lib/quota-notifications.d.ts.map +1 -1
- package/dist/lib/quota-notifications.js +42 -13
- package/dist/lib/quota-notifications.js.map +1 -1
- package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
- package/dist/lib/request/fetch-helpers.js +13 -2
- package/dist/lib/request/fetch-helpers.js.map +1 -1
- package/dist/lib/request/helpers/responses-lite.d.ts.map +1 -1
- package/dist/lib/request/helpers/responses-lite.js +8 -26
- package/dist/lib/request/helpers/responses-lite.js.map +1 -1
- package/dist/lib/schemas.d.ts +1 -0
- package/dist/lib/schemas.d.ts.map +1 -1
- package/dist/lib/schemas.js +1 -0
- package/dist/lib/schemas.js.map +1 -1
- package/dist/lib/storage/normalize.d.ts.map +1 -1
- package/dist/lib/storage/normalize.js +50 -5
- package/dist/lib/storage/normalize.js.map +1 -1
- package/dist/lib/tools/codex-limits.d.ts.map +1 -1
- package/dist/lib/tools/codex-limits.js +28 -2
- package/dist/lib/tools/codex-limits.js.map +1 -1
- package/dist/lib/tui-status.d.ts.map +1 -1
- package/dist/lib/tui-status.js +176 -46
- package/dist/lib/tui-status.js.map +1 -1
- package/package.json +1 -1
- package/scripts/install-oc-codex-multi-auth-core.js +106 -19
package/README.md
CHANGED
|
@@ -258,6 +258,7 @@ Most of these also run as a **direct CLI** with no agent/model involvement (no t
|
|
|
258
258
|
- `reasoning.encrypted_content` is preserved for multi-turn continuity
|
|
259
259
|
- GPT-6 Astra, the Daybreak tiers and the GPT-5.6 tiers use the responses-lite request shape and default client identity `opencode`; other models default to `codex_cli_rs`
|
|
260
260
|
- account rotation is health-aware (`rotationStrategy` default `hybrid`) and avoids repeatedly selecting cooling accounts
|
|
261
|
+
- The quota guard checks each enabled account at a bounded interval (30 minutes by default). When it finds a fully spent 5-hour or weekly subscription quota, rotation skips that account until its reported reset instead of drawing from paid Credits. `codex-limits` applies the same guard immediately when run manually. After running standalone `limits`, restart an already-running OpenCode instance or wait for its next quota poll to reload the updated account state.
|
|
261
262
|
- same-host OpenCode processes sharing an account file serialize refresh-token exchange and commit so one current single-use token is exchanged once
|
|
262
263
|
- 5xx bursts, network failures, and quota responses penalize account health
|
|
263
264
|
- token refresh is queued to avoid refresh races
|
|
@@ -298,10 +299,12 @@ Primary config files:
|
|
|
298
299
|
|
|
299
300
|
### Desktop quota notifications
|
|
300
301
|
|
|
301
|
-
Quota notifications are an optional macOS-only feature.
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
302
|
+
Quota notifications are an optional macOS-only feature. Separately, the quota
|
|
303
|
+
guard checks enabled accounts every 30 minutes by default and prevents rotation
|
|
304
|
+
from drawing paid Credits after the backend reports a fully spent subscription
|
|
305
|
+
window. While notifications are enabled, the same poll also alerts through
|
|
306
|
+
Notification Center when the best remaining 5-hour or weekly pool quota crosses
|
|
307
|
+
25%, 10%, or 0%. Alerts are disabled by default; the quota guard is enabled.
|
|
305
308
|
|
|
306
309
|
Each line reports the enabled account with the most headroom in that window,
|
|
307
310
|
together with that same account's reset time, so the pair always describes a
|
|
@@ -319,6 +322,7 @@ Weekly: 72% | resets 22:30 on Aug 30
|
|
|
319
322
|
{
|
|
320
323
|
"quotaNotifications": {
|
|
321
324
|
"enabled": true,
|
|
325
|
+
"autoProtectCredits": true,
|
|
322
326
|
"intervalMs": 1800000,
|
|
323
327
|
"notifyEveryCheck": false,
|
|
324
328
|
"thresholds": [25, 10, 0]
|
|
@@ -335,8 +339,8 @@ ignored on Windows and Linux.
|
|
|
335
339
|
Set `"notifyEveryCheck": true` to show the aggregate quota notification after
|
|
336
340
|
every successful poll interval instead of only when a configured threshold is
|
|
337
341
|
crossed. Set `"thresholds": []` to turn threshold alerts off entirely; pair it
|
|
338
|
-
with `"notifyEveryCheck": true`
|
|
339
|
-
polling.
|
|
342
|
+
with `"notifyEveryCheck": true` to keep receiving alerts. The quota guard keeps
|
|
343
|
+
polling unless `"autoProtectCredits": false` is set.
|
|
340
344
|
|
|
341
345
|
Delivery state lives beside the accounts file the alerts are computed from, so
|
|
342
346
|
OpenCode processes working in the same account scope show only one alert per
|
package/config/README.md
CHANGED
|
@@ -85,7 +85,7 @@ If your OpenCode runtime supports global compaction tuning, you can also set val
|
|
|
85
85
|
|
|
86
86
|
## GPT-6 Astra notes
|
|
87
87
|
|
|
88
|
-
- Served over the **responses-lite** path
|
|
88
|
+
- Served over the **responses-lite** path. Astra's catalog entry landed in openai/codex commit `ed391d4d` (2026-09-03) and reads `use_responses_lite: true`, `tool_mode: "code_mode_only"`, `multi_agent_version: "v2"`, so the shape is read rather than inferred. The `CODEX_AUTH_ASTRA_RESPONSES_LITE` switch that 6.17.0 carried while this was unverifiable has been removed.
|
|
89
89
|
- Rollout gate: Astra reached a limited set of organizations first, so accounts outside it auto-fallback
|
|
90
90
|
`gpt-6-astra → gpt-5.6-sol → gpt-5.6-terra → gpt-5.6-luna → gpt-5.5`
|
|
91
91
|
(disable with `CODEX_AUTH_DISABLE_GPT6_AUTO_FALLBACK=1`).
|
|
@@ -22,6 +22,27 @@ export interface AccountIdCandidate {
|
|
|
22
22
|
* name a user chose and is left alone.
|
|
23
23
|
*/
|
|
24
24
|
export declare function isGeneratedAccountLabel(label: string | undefined): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Whether a stored label is one this plugin generated for *this* account.
|
|
27
|
+
*
|
|
28
|
+
* {@link isGeneratedAccountLabel} answers a softer question - may a login
|
|
29
|
+
* replace this label - and deliberately treats any trailing `[id:…]` as
|
|
30
|
+
* generated, because the worst case there is that a login overwrites a name
|
|
31
|
+
* with a fresh one. Deleting a label outright is not reversible, and
|
|
32
|
+
* `codex-label` accepts any string, so `Work [id:mine]` is a name someone is
|
|
33
|
+
* allowed to have typed.
|
|
34
|
+
*
|
|
35
|
+
* Every generator here emits the account's own id suffix in that marker, so
|
|
36
|
+
* the stricter test compares it against what this account's id would produce.
|
|
37
|
+
* A label carrying an arbitrary word, someone else's suffix, or belonging to
|
|
38
|
+
* an account with no stored id to compare against, is left alone.
|
|
39
|
+
*
|
|
40
|
+
* A user who types a label ending in their own real id suffix is
|
|
41
|
+
* indistinguishable from the generator and loses it. Nothing in the stored
|
|
42
|
+
* data separates those two cases; the alternative is deleting every
|
|
43
|
+
* `[id:…]` label, which is the strictly worse trade.
|
|
44
|
+
*/
|
|
45
|
+
export declare function isStaleGeneratedAccountLabel(label: string | undefined, accountId: string | undefined): boolean;
|
|
25
46
|
/**
|
|
26
47
|
* Select the best workspace candidate for OAuth account binding.
|
|
27
48
|
* Preference order:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-utils.d.ts","sourceRoot":"","sources":["../../../lib/auth/token-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAc,MAAM,aAAa,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAkDD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAI1E;AA6SD;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACzC,UAAU,EAAE,kBAAkB,EAAE,GAC9B,kBAAkB,GAAG,SAAS,CA8BhC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKzE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAO7E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA8B9F;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,GACd,kBAAkB,EAAE,CAiCtB;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC7C,MAAM,EAAE,eAAe,GAAG,SAAS,EACnC,gBAAgB,CAAC,EAAE,MAAM,GACvB,OAAO,CAIT;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACtC,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,MAAM,EAAE,eAAe,GAAG,SAAS,EACnC,cAAc,EAAE,MAAM,GAAG,SAAS,GAChC,MAAM,GAAG,SAAS,CAkBpB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAK3E"}
|
|
1
|
+
{"version":3,"file":"token-utils.d.ts","sourceRoot":"","sources":["../../../lib/auth/token-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAc,MAAM,aAAa,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAkDD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAI1E;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,4BAA4B,CAC3C,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAOT;AA6SD;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACzC,UAAU,EAAE,kBAAkB,EAAE,GAC9B,kBAAkB,GAAG,SAAS,CA8BhC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKzE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAO7E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA8B9F;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,GACd,kBAAkB,EAAE,CAiCtB;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC7C,MAAM,EAAE,eAAe,GAAG,SAAS,EACnC,gBAAgB,CAAC,EAAE,MAAM,GACvB,OAAO,CAIT;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACtC,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,MAAM,EAAE,eAAe,GAAG,SAAS,EACnC,cAAc,EAAE,MAAM,GAAG,SAAS,GAChC,MAAM,GAAG,SAAS,CAkBpB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAK3E"}
|
|
@@ -66,6 +66,36 @@ export function isGeneratedAccountLabel(label) {
|
|
|
66
66
|
return true;
|
|
67
67
|
return GENERATED_LABEL_PATTERN.test(normalized);
|
|
68
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Whether a stored label is one this plugin generated for *this* account.
|
|
71
|
+
*
|
|
72
|
+
* {@link isGeneratedAccountLabel} answers a softer question - may a login
|
|
73
|
+
* replace this label - and deliberately treats any trailing `[id:…]` as
|
|
74
|
+
* generated, because the worst case there is that a login overwrites a name
|
|
75
|
+
* with a fresh one. Deleting a label outright is not reversible, and
|
|
76
|
+
* `codex-label` accepts any string, so `Work [id:mine]` is a name someone is
|
|
77
|
+
* allowed to have typed.
|
|
78
|
+
*
|
|
79
|
+
* Every generator here emits the account's own id suffix in that marker, so
|
|
80
|
+
* the stricter test compares it against what this account's id would produce.
|
|
81
|
+
* A label carrying an arbitrary word, someone else's suffix, or belonging to
|
|
82
|
+
* an account with no stored id to compare against, is left alone.
|
|
83
|
+
*
|
|
84
|
+
* A user who types a label ending in their own real id suffix is
|
|
85
|
+
* indistinguishable from the generator and loses it. Nothing in the stored
|
|
86
|
+
* data separates those two cases; the alternative is deleting every
|
|
87
|
+
* `[id:…]` label, which is the strictly worse trade.
|
|
88
|
+
*/
|
|
89
|
+
export function isStaleGeneratedAccountLabel(label, accountId) {
|
|
90
|
+
const normalizedLabel = toStringValue(label);
|
|
91
|
+
const normalizedId = toStringValue(accountId);
|
|
92
|
+
if (!normalizedLabel || !normalizedId)
|
|
93
|
+
return false;
|
|
94
|
+
const marker = normalizedLabel.match(GENERATED_LABEL_PATTERN)?.[0];
|
|
95
|
+
if (!marker)
|
|
96
|
+
return false;
|
|
97
|
+
return marker === ` [id:${formatAccountIdSuffix(normalizedId)}]`;
|
|
98
|
+
}
|
|
69
99
|
/**
|
|
70
100
|
* Extracts account ID from a JWT payload.
|
|
71
101
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-utils.js","sourceRoot":"","sources":["../../../lib/auth/token-utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"token-utils.js","sourceRoot":"","sources":["../../../lib/auth/token-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -67,6 +67,19 @@ export type CodexResetCreditSelection = {
|
|
|
67
67
|
type: "not-found";
|
|
68
68
|
creditId: string;
|
|
69
69
|
};
|
|
70
|
+
/**
|
|
71
|
+
* Read a reset-credit counter the server stated.
|
|
72
|
+
*
|
|
73
|
+
* A count is a whole number of redeemable resets, so a negative, fractional,
|
|
74
|
+
* non-finite or non-numeric value is a payload this code cannot read rather
|
|
75
|
+
* than a zero: truncating `1.9` to `1` would silently paper over a malformed
|
|
76
|
+
* response. Returning `null` leaves the fallback to each caller, which is why
|
|
77
|
+
* the two reset-credit surfaces stay consistent about what "sane" means
|
|
78
|
+
* without sharing a fallback policy they do not agree on. The list endpoint
|
|
79
|
+
* below derives the count from the credits it also sent; the usage endpoint,
|
|
80
|
+
* which sends no list, reports the count as unknown.
|
|
81
|
+
*/
|
|
82
|
+
export declare function normalizeResetCreditCount(value: unknown): number | null;
|
|
70
83
|
/**
|
|
71
84
|
* Normalize the list response.
|
|
72
85
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-reset.d.ts","sourceRoot":"","sources":["../../lib/codex-reset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAaH,8EAA8E;AAC9E,eAAO,MAAM,mCAAmC,cAAc,CAAC;AAM/D,mDAAmD;AACnD,MAAM,MAAM,qBAAqB,GAAG;IACnC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,yBAAyB;AACzB,MAAM,MAAM,wBAAwB,GAAG;IACtC,OAAO,CAAC,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,4BAA4B;AAC5B,MAAM,MAAM,wBAAwB,GAAG;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACvE,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,gBAAgB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC5B,CAAC;AAEF,kDAAkD;AAClD,MAAM,MAAM,yBAAyB,GAClC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAM3C;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACrC,OAAO,EAAE,wBAAwB,GAC/B,wBAAwB,
|
|
1
|
+
{"version":3,"file":"codex-reset.d.ts","sourceRoot":"","sources":["../../lib/codex-reset.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/codex-reset.js
CHANGED
|
@@ -31,6 +31,24 @@ const resetErrorBodyMaxChars = 4096;
|
|
|
31
31
|
function toTrimmedString(value) {
|
|
32
32
|
return typeof value === "string" && value.trim() ? value.trim() : null;
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Read a reset-credit counter the server stated.
|
|
36
|
+
*
|
|
37
|
+
* A count is a whole number of redeemable resets, so a negative, fractional,
|
|
38
|
+
* non-finite or non-numeric value is a payload this code cannot read rather
|
|
39
|
+
* than a zero: truncating `1.9` to `1` would silently paper over a malformed
|
|
40
|
+
* response. Returning `null` leaves the fallback to each caller, which is why
|
|
41
|
+
* the two reset-credit surfaces stay consistent about what "sane" means
|
|
42
|
+
* without sharing a fallback policy they do not agree on. The list endpoint
|
|
43
|
+
* below derives the count from the credits it also sent; the usage endpoint,
|
|
44
|
+
* which sends no list, reports the count as unknown.
|
|
45
|
+
*/
|
|
46
|
+
export function normalizeResetCreditCount(value) {
|
|
47
|
+
if (typeof value !== "number" || !Number.isInteger(value) || value < 0) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
34
52
|
/**
|
|
35
53
|
* Normalize the list response.
|
|
36
54
|
*
|
|
@@ -57,10 +75,8 @@ export function parseCodexResetCredits(payload) {
|
|
|
57
75
|
title: toTrimmedString(entry?.title),
|
|
58
76
|
});
|
|
59
77
|
}
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
? Math.trunc(reported)
|
|
63
|
-
: credits.filter((credit) => credit.isAvailable).length;
|
|
78
|
+
const availableCount = normalizeResetCreditCount(payload.available_count) ??
|
|
79
|
+
credits.filter((credit) => credit.isAvailable).length;
|
|
64
80
|
return { availableCount, credits };
|
|
65
81
|
}
|
|
66
82
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-reset.js","sourceRoot":"","sources":["../../lib/codex-reset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACN,iBAAiB,EACjB,4BAA4B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,8EAA8E;AAC9E,MAAM,CAAC,MAAM,mCAAmC,GAAG,WAAW,CAAC;AAE/D,MAAM,kBAAkB,GAAG,gCAAgC,CAAC;AAC5D,MAAM,0BAA0B,GAAG,wCAAwC,CAAC;AAC5E,MAAM,sBAAsB,GAAG,IAAI,CAAC;AA+CpC,SAAS,eAAe,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACxE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACrC,OAAiC;IAEjC,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QAC3C,MAAM,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,EAAE;YAAE,SAAS;QAClB,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,SAAS,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC;YACZ,EAAE;YACF,MAAM;YACN,WAAW,EAAE,MAAM,KAAK,mCAAmC;YAC3D,SAAS,EAAE,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC;YAC7C,SAAS,EAAE,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC;YAC7C,SAAS,EAAE,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC;YAC7C,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC;SACpC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,
|
|
1
|
+
{"version":3,"file":"codex-reset.js","sourceRoot":"","sources":["../../lib/codex-reset.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,10 @@ export type UsageCredits = {
|
|
|
19
19
|
unlimited?: boolean;
|
|
20
20
|
balance?: string | null;
|
|
21
21
|
} | null;
|
|
22
|
+
export type UsageResetCredits = {
|
|
23
|
+
available_count?: number | null;
|
|
24
|
+
applicable_available_count?: number | null;
|
|
25
|
+
} | null;
|
|
22
26
|
export type UsagePayload = {
|
|
23
27
|
plan_type?: string;
|
|
24
28
|
rate_limit?: UsageRateLimit;
|
|
@@ -29,6 +33,7 @@ export type UsagePayload = {
|
|
|
29
33
|
rate_limit?: UsageRateLimit;
|
|
30
34
|
}> | null;
|
|
31
35
|
credits?: UsageCredits;
|
|
36
|
+
rate_limit_reset_credits?: UsageResetCredits;
|
|
32
37
|
};
|
|
33
38
|
export type UsageLimitPayload = {
|
|
34
39
|
name: string;
|
|
@@ -42,9 +47,15 @@ export type AdditionalUsageLimit = {
|
|
|
42
47
|
name: string;
|
|
43
48
|
window: LimitWindow;
|
|
44
49
|
};
|
|
50
|
+
export type ResetCreditCounts = {
|
|
51
|
+
available: number;
|
|
52
|
+
/** `null` when the server stated a count this code cannot read. */
|
|
53
|
+
applicableNow: number | null;
|
|
54
|
+
};
|
|
45
55
|
export type CodexUsageSummary = {
|
|
46
56
|
planType: string | null;
|
|
47
57
|
credits: string | null;
|
|
58
|
+
resetCredits: ResetCreditCounts | null;
|
|
48
59
|
primary: LimitWindow;
|
|
49
60
|
secondary: LimitWindow;
|
|
50
61
|
codeReview: LimitWindow;
|
|
@@ -68,6 +79,37 @@ export declare function formatUsageLimitTitle(windowMinutes: number | undefined,
|
|
|
68
79
|
export declare function formatUsageLimitSummary(window: LimitWindow): string;
|
|
69
80
|
export declare function toUsageLimitPayload(name: string, window: LimitWindow): UsageLimitPayload;
|
|
70
81
|
export declare function formatUsageCredits(credits: UsageCredits): string | undefined;
|
|
82
|
+
/**
|
|
83
|
+
* Read the redeemable rate-limit resets the usage response already carries.
|
|
84
|
+
*
|
|
85
|
+
* These are a different currency from `credits`, and an account routinely
|
|
86
|
+
* holds both readings at once: a spent purchase balance alongside banked
|
|
87
|
+
* resets. Reporting only `credits` therefore says "you have nothing" while a
|
|
88
|
+
* full reset is waiting to be redeemed.
|
|
89
|
+
*
|
|
90
|
+
* `applicable_available_count` is the subset redeemable right now, which is
|
|
91
|
+
* smaller than the banked count whenever no window is exhausted yet. A
|
|
92
|
+
* response that omits it predates the field rather than reporting zero, so it
|
|
93
|
+
* defaults to the banked count - defaulting to zero would report every banked
|
|
94
|
+
* reset as unusable. Omitted means absent OR null: this endpoint sends a
|
|
95
|
+
* literal JSON null for a field it has no value for, which is how
|
|
96
|
+
* `secondary_window` arrives on every single-window plan.
|
|
97
|
+
*
|
|
98
|
+
* A count the server did state and this code cannot read is a different thing,
|
|
99
|
+
* and defaulting it would invent an answer. A negative, fractional,
|
|
100
|
+
* non-numeric or larger-than-banked applicable count therefore reports
|
|
101
|
+
* `applicableNow: null`, because over-reporting sends someone to redeem a
|
|
102
|
+
* credit that is not there.
|
|
103
|
+
*
|
|
104
|
+
* Only `applicableNow` goes unknown, not the whole reading: the banked count
|
|
105
|
+
* is a separate field that arrived intact, and dropping it would print
|
|
106
|
+
* "Credits: 0" while a full reset waits to be redeemed - the exact failure
|
|
107
|
+
* this function exists to fix. `codex-reset` reads the same banked total from
|
|
108
|
+
* the list endpoint, so discarding it here would also make the two surfaces
|
|
109
|
+
* disagree about the same account in the same session.
|
|
110
|
+
*/
|
|
111
|
+
export declare function parseUsageResetCredits(source: UsageResetCredits | undefined): ResetCreditCounts | null;
|
|
112
|
+
export declare function formatResetCredits(counts: ResetCreditCounts): string;
|
|
71
113
|
export declare function formatAdditionalUsageLimitName(name: string | undefined): string;
|
|
72
114
|
/**
|
|
73
115
|
* A window reported with a length of zero is disabled for the plan (e.g. the
|
|
@@ -76,6 +118,28 @@ export declare function formatAdditionalUsageLimitName(name: string | undefined)
|
|
|
76
118
|
* rejected on the explicit zero length or it renders as a full quota.
|
|
77
119
|
*/
|
|
78
120
|
export declare function hasUsageWindow(window: LimitWindow): boolean;
|
|
121
|
+
/**
|
|
122
|
+
* Return the latest valid reset time among fully spent ordinary Codex usage
|
|
123
|
+
* windows. This deliberately accepts only the primary and secondary windows:
|
|
124
|
+
* code-review and additional quotas do not govern ordinary model requests.
|
|
125
|
+
*
|
|
126
|
+
* The `/wham/usage` endpoint and request response headers describe the same
|
|
127
|
+
* 5-hour/weekly quota state. Applying this result to rotation lets an explicit
|
|
128
|
+
* `codex-limits` refresh protect paid Credits before the next model request.
|
|
129
|
+
*/
|
|
130
|
+
export declare function getUsageQuotaExhaustedResetAtMs(windows: readonly LimitWindow[], now?: number): number | undefined;
|
|
131
|
+
/**
|
|
132
|
+
* Persist a base block for every model family on stored entries sharing the
|
|
133
|
+
* queried usage quota. Rotation tracks each family independently, whereas the
|
|
134
|
+
* `/wham/usage` primary/secondary subscription quota is shared by all models.
|
|
135
|
+
* Writing every base key ensures the next round-robin selection cannot use a
|
|
136
|
+
* different model family to spend an already-exhausted account's Credits.
|
|
137
|
+
*
|
|
138
|
+
* This uses a storage transaction rather than saving the caller's usage
|
|
139
|
+
* snapshot: usage inspection can refresh a single-use token, while another
|
|
140
|
+
* process can independently update credentials or account membership.
|
|
141
|
+
*/
|
|
142
|
+
export declare function persistUsageQuotaExhaustion(account: AccountMetadataV3, resetAtMs: number): Promise<boolean>;
|
|
79
143
|
/**
|
|
80
144
|
* Reduce a `/wham/usage` document to the summary the callers render.
|
|
81
145
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-usage.d.ts","sourceRoot":"","sources":["../../lib/codex-usage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codex-usage.d.ts","sourceRoot":"","sources":["../../lib/codex-usage.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/codex-usage.js
CHANGED
|
@@ -2,11 +2,15 @@ import { createHash } from "node:crypto";
|
|
|
2
2
|
import { extractAccountId } from "./accounts.js";
|
|
3
3
|
import { extractAccountUserId } from "./auth/token-utils.js";
|
|
4
4
|
import { getFetchTimeoutMs, loadPluginConfig } from "./config.js";
|
|
5
|
+
import { normalizeResetCreditCount } from "./codex-reset.js";
|
|
5
6
|
import { CODEX_BASE_URL, PLUGIN_NAME } from "./constants.js";
|
|
6
7
|
import { createDeactivatedWorkspaceError, createUsageRequestTimeoutError, } from "./error-sentinels.js";
|
|
7
8
|
import { logWarn } from "./logger.js";
|
|
9
|
+
import { MODEL_FAMILIES } from "./prompts/codex.js";
|
|
10
|
+
import { isQuotaWindowExhausted, MAX_QUOTA_RESET_HORIZON_MS, } from "./quota-windows.js";
|
|
8
11
|
import { coordinatePersistedRefresh } from "./storage/coordinated-refresh.js";
|
|
9
12
|
import { createCodexHeaders, isDeactivatedWorkspaceError, isInvalidatedAuthTokenError, } from "./request/fetch-helpers.js";
|
|
13
|
+
import { withAccountStorageTransaction, } from "./storage.js";
|
|
10
14
|
const usageErrorBodyMaxChars = 4096;
|
|
11
15
|
export function getUsageLeftPercent(usedPercent) {
|
|
12
16
|
return typeof usedPercent === "number" && Number.isFinite(usedPercent)
|
|
@@ -125,6 +129,59 @@ export function formatUsageCredits(credits) {
|
|
|
125
129
|
return "available";
|
|
126
130
|
return undefined;
|
|
127
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Read the redeemable rate-limit resets the usage response already carries.
|
|
134
|
+
*
|
|
135
|
+
* These are a different currency from `credits`, and an account routinely
|
|
136
|
+
* holds both readings at once: a spent purchase balance alongside banked
|
|
137
|
+
* resets. Reporting only `credits` therefore says "you have nothing" while a
|
|
138
|
+
* full reset is waiting to be redeemed.
|
|
139
|
+
*
|
|
140
|
+
* `applicable_available_count` is the subset redeemable right now, which is
|
|
141
|
+
* smaller than the banked count whenever no window is exhausted yet. A
|
|
142
|
+
* response that omits it predates the field rather than reporting zero, so it
|
|
143
|
+
* defaults to the banked count - defaulting to zero would report every banked
|
|
144
|
+
* reset as unusable. Omitted means absent OR null: this endpoint sends a
|
|
145
|
+
* literal JSON null for a field it has no value for, which is how
|
|
146
|
+
* `secondary_window` arrives on every single-window plan.
|
|
147
|
+
*
|
|
148
|
+
* A count the server did state and this code cannot read is a different thing,
|
|
149
|
+
* and defaulting it would invent an answer. A negative, fractional,
|
|
150
|
+
* non-numeric or larger-than-banked applicable count therefore reports
|
|
151
|
+
* `applicableNow: null`, because over-reporting sends someone to redeem a
|
|
152
|
+
* credit that is not there.
|
|
153
|
+
*
|
|
154
|
+
* Only `applicableNow` goes unknown, not the whole reading: the banked count
|
|
155
|
+
* is a separate field that arrived intact, and dropping it would print
|
|
156
|
+
* "Credits: 0" while a full reset waits to be redeemed - the exact failure
|
|
157
|
+
* this function exists to fix. `codex-reset` reads the same banked total from
|
|
158
|
+
* the list endpoint, so discarding it here would also make the two surfaces
|
|
159
|
+
* disagree about the same account in the same session.
|
|
160
|
+
*/
|
|
161
|
+
export function parseUsageResetCredits(source) {
|
|
162
|
+
if (typeof source !== "object" || source === null)
|
|
163
|
+
return null;
|
|
164
|
+
const available = normalizeResetCreditCount(source.available_count);
|
|
165
|
+
if (available === null)
|
|
166
|
+
return null;
|
|
167
|
+
const stated = source.applicable_available_count;
|
|
168
|
+
if (stated === undefined || stated === null) {
|
|
169
|
+
return { available, applicableNow: available };
|
|
170
|
+
}
|
|
171
|
+
const applicableNow = normalizeResetCreditCount(stated);
|
|
172
|
+
if (applicableNow === null || applicableNow > available) {
|
|
173
|
+
return { available, applicableNow: null };
|
|
174
|
+
}
|
|
175
|
+
return { available, applicableNow };
|
|
176
|
+
}
|
|
177
|
+
export function formatResetCredits(counts) {
|
|
178
|
+
if (counts.applicableNow === null) {
|
|
179
|
+
return `${counts.available} banked (applicable now unknown)`;
|
|
180
|
+
}
|
|
181
|
+
return counts.applicableNow === counts.available
|
|
182
|
+
? `${counts.available} banked`
|
|
183
|
+
: `${counts.available} banked (${counts.applicableNow} applicable now)`;
|
|
184
|
+
}
|
|
128
185
|
export function formatAdditionalUsageLimitName(name) {
|
|
129
186
|
// `limit_name` is declared `string` but arrives straight from the usage
|
|
130
187
|
// document, so a non-string reaches `.replace` and throws.
|
|
@@ -149,6 +206,76 @@ export function hasUsageWindow(window) {
|
|
|
149
206
|
typeof window.usedPercent === "number" ||
|
|
150
207
|
window.resetAtMs);
|
|
151
208
|
}
|
|
209
|
+
/**
|
|
210
|
+
* Return the latest valid reset time among fully spent ordinary Codex usage
|
|
211
|
+
* windows. This deliberately accepts only the primary and secondary windows:
|
|
212
|
+
* code-review and additional quotas do not govern ordinary model requests.
|
|
213
|
+
*
|
|
214
|
+
* The `/wham/usage` endpoint and request response headers describe the same
|
|
215
|
+
* 5-hour/weekly quota state. Applying this result to rotation lets an explicit
|
|
216
|
+
* `codex-limits` refresh protect paid Credits before the next model request.
|
|
217
|
+
*/
|
|
218
|
+
export function getUsageQuotaExhaustedResetAtMs(windows, now = Date.now()) {
|
|
219
|
+
let latest;
|
|
220
|
+
for (const window of windows) {
|
|
221
|
+
if (!isQuotaWindowExhausted(window))
|
|
222
|
+
continue;
|
|
223
|
+
const resetAtMs = window.resetAtMs;
|
|
224
|
+
if (typeof resetAtMs !== "number" ||
|
|
225
|
+
!Number.isFinite(resetAtMs) ||
|
|
226
|
+
resetAtMs <= now ||
|
|
227
|
+
resetAtMs - now > MAX_QUOTA_RESET_HORIZON_MS) {
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
if (latest === undefined || resetAtMs > latest)
|
|
231
|
+
latest = resetAtMs;
|
|
232
|
+
}
|
|
233
|
+
return latest;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Persist a base block for every model family on stored entries sharing the
|
|
237
|
+
* queried usage quota. Rotation tracks each family independently, whereas the
|
|
238
|
+
* `/wham/usage` primary/secondary subscription quota is shared by all models.
|
|
239
|
+
* Writing every base key ensures the next round-robin selection cannot use a
|
|
240
|
+
* different model family to spend an already-exhausted account's Credits.
|
|
241
|
+
*
|
|
242
|
+
* This uses a storage transaction rather than saving the caller's usage
|
|
243
|
+
* snapshot: usage inspection can refresh a single-use token, while another
|
|
244
|
+
* process can independently update credentials or account membership.
|
|
245
|
+
*/
|
|
246
|
+
export async function persistUsageQuotaExhaustion(account, resetAtMs) {
|
|
247
|
+
const usageKey = getUsageAccountDedupeKey(account);
|
|
248
|
+
if (!usageKey)
|
|
249
|
+
return false;
|
|
250
|
+
return withAccountStorageTransaction(async (current, persist) => {
|
|
251
|
+
if (!current)
|
|
252
|
+
return false;
|
|
253
|
+
let changed = false;
|
|
254
|
+
for (const storedAccount of current.accounts) {
|
|
255
|
+
if (getUsageAccountDedupeKey(storedAccount) !== usageKey)
|
|
256
|
+
continue;
|
|
257
|
+
const rateLimitResetTimes = { ...(storedAccount.rateLimitResetTimes ?? {}) };
|
|
258
|
+
let accountChanged = false;
|
|
259
|
+
for (const family of MODEL_FAMILIES) {
|
|
260
|
+
const existingResetAtMs = rateLimitResetTimes[family];
|
|
261
|
+
if (typeof existingResetAtMs === "number" &&
|
|
262
|
+
Number.isFinite(existingResetAtMs) &&
|
|
263
|
+
existingResetAtMs >= resetAtMs) {
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
rateLimitResetTimes[family] = resetAtMs;
|
|
267
|
+
accountChanged = true;
|
|
268
|
+
}
|
|
269
|
+
if (accountChanged) {
|
|
270
|
+
storedAccount.rateLimitResetTimes = rateLimitResetTimes;
|
|
271
|
+
changed = true;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
if (changed)
|
|
275
|
+
await persist(current);
|
|
276
|
+
return changed;
|
|
277
|
+
});
|
|
278
|
+
}
|
|
152
279
|
/**
|
|
153
280
|
* Reduce a `/wham/usage` document to the summary the callers render.
|
|
154
281
|
*
|
|
@@ -195,6 +322,7 @@ export function parseCodexUsagePayload(payload) {
|
|
|
195
322
|
return {
|
|
196
323
|
planType: source.plan_type ?? null,
|
|
197
324
|
credits: credits ?? null,
|
|
325
|
+
resetCredits: parseUsageResetCredits(source.rate_limit_reset_credits),
|
|
198
326
|
primary,
|
|
199
327
|
secondary,
|
|
200
328
|
codeReview,
|