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.
Files changed (46) hide show
  1. package/README.md +10 -6
  2. package/config/README.md +1 -1
  3. package/dist/lib/auth/token-utils.d.ts +21 -0
  4. package/dist/lib/auth/token-utils.d.ts.map +1 -1
  5. package/dist/lib/auth/token-utils.js +30 -0
  6. package/dist/lib/auth/token-utils.js.map +1 -1
  7. package/dist/lib/codex-reset.d.ts +13 -0
  8. package/dist/lib/codex-reset.d.ts.map +1 -1
  9. package/dist/lib/codex-reset.js +20 -4
  10. package/dist/lib/codex-reset.js.map +1 -1
  11. package/dist/lib/codex-usage.d.ts +64 -0
  12. package/dist/lib/codex-usage.d.ts.map +1 -1
  13. package/dist/lib/codex-usage.js +128 -0
  14. package/dist/lib/codex-usage.js.map +1 -1
  15. package/dist/lib/config.d.ts +2 -0
  16. package/dist/lib/config.d.ts.map +1 -1
  17. package/dist/lib/config.js +7 -1
  18. package/dist/lib/config.js.map +1 -1
  19. package/dist/lib/prompts/codex.d.ts.map +1 -1
  20. package/dist/lib/prompts/codex.js +10 -11
  21. package/dist/lib/prompts/codex.js.map +1 -1
  22. package/dist/lib/quota-notifications.d.ts +1 -1
  23. package/dist/lib/quota-notifications.d.ts.map +1 -1
  24. package/dist/lib/quota-notifications.js +42 -13
  25. package/dist/lib/quota-notifications.js.map +1 -1
  26. package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
  27. package/dist/lib/request/fetch-helpers.js +13 -2
  28. package/dist/lib/request/fetch-helpers.js.map +1 -1
  29. package/dist/lib/request/helpers/responses-lite.d.ts.map +1 -1
  30. package/dist/lib/request/helpers/responses-lite.js +8 -26
  31. package/dist/lib/request/helpers/responses-lite.js.map +1 -1
  32. package/dist/lib/schemas.d.ts +1 -0
  33. package/dist/lib/schemas.d.ts.map +1 -1
  34. package/dist/lib/schemas.js +1 -0
  35. package/dist/lib/schemas.js.map +1 -1
  36. package/dist/lib/storage/normalize.d.ts.map +1 -1
  37. package/dist/lib/storage/normalize.js +50 -5
  38. package/dist/lib/storage/normalize.js.map +1 -1
  39. package/dist/lib/tools/codex-limits.d.ts.map +1 -1
  40. package/dist/lib/tools/codex-limits.js +28 -2
  41. package/dist/lib/tools/codex-limits.js.map +1 -1
  42. package/dist/lib/tui-status.d.ts.map +1 -1
  43. package/dist/lib/tui-status.js +176 -46
  44. package/dist/lib/tui-status.js.map +1 -1
  45. package/package.json +1 -1
  46. 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. While the plugin is
302
- running, it checks all enabled accounts and alerts through Notification Center
303
- when the best remaining 5-hour or weekly pool quota crosses 25%, 10%, or 0%.
304
- The feature is disabled by default.
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` or the monitor has nothing to deliver and stops
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 by default. Astra is the one lite model whose membership is *inferred* rather than read from a catalog entry: the public Codex catalog has had no `gpt-6-astra` entry since its 2026-08-20 refresh, and Astra launched 2026-09-03. Override with `CODEX_AUTH_ASTRA_RESPONSES_LITE=0` (classic shape) or `=1` (force lite).
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":"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"}
1
+ {"version":3,"file":"codex-reset.d.ts","sourceRoot":"","sources":["../../lib/codex-reset.ts"],"names":[],"mappings":"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"}
@@ -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 reported = payload.available_count;
61
- const availableCount = typeof reported === "number" && Number.isFinite(reported) && reported >= 0
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,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;IACzC,MAAM,cAAc,GACnB,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC;QACzE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACtB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;IAE1D,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACrC,OAAiC,EACjC,QAAiB;IAEjB,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC;IACrC,IAAI,WAAW,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,WAAW,CAAC,CAAC;QACnE,OAAO,MAAM;YACZ,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE;YAC9B,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IACjD,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC5B,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAwB;IAC9D,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAChE,IAAI,MAAM,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAChE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACrD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC;SACjC,MAAM,CAAC,sCAAsC,QAAQ,EAAE,CAAC;SACxD,MAAM,EAAE,CAAC;IACX,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3C,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5G,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAI,MAQvC;IACA,MAAM,OAAO,GAAG,kBAAkB,CACjC,SAAS,EACT,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,WAAW,EAClB,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CACzC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CACzB,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EACxB,MAAM,CAAC,SAAS,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,CAAC,CACzD,CAAC;IAEF,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE;YAC/D,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO;YACP,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;YACzE,MAAM,EAAE,UAAU,CAAC,MAAM;SACzB,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClB,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC;gBACJ,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;YACrE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC3D,MAAM,8BAA8B,EAAE,CAAC;gBACxC,CAAC;gBACD,MAAM,KAAK,CAAC;YACb,CAAC;YACD,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC/B,MAAM,8BAA8B,EAAE,CAAC;YACxC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,8BAA8B,EAAE,CAAC;QACxC,CAAC;QACD,MAAM,KAAK,CAAC;IACb,CAAC;YAAS,CAAC;QACV,YAAY,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAK5C;IACA,OAAO,MAAM,qBAAqB,CAA2B;QAC5D,GAAG,MAAM;QACT,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE,KAAK;KACb,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,MAO7C;IACA,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IACtD,OAAO,MAAM,qBAAqB,CAA2B;QAC5D,GAAG,IAAI;QACP,IAAI,EAAE,0BAA0B;QAChC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,EAAE;KACjE,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC5C,MAAgC;IAEhC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC/D,IAAI,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,UAAU,EAAE,CAAC,CAAC;IACrD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;SAAM,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AACzD,CAAC"}
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":"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"}
1
+ {"version":3,"file":"codex-usage.d.ts","sourceRoot":"","sources":["../../lib/codex-usage.ts"],"names":[],"mappings":"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"}
@@ -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,