@kaitranntt/ccs 8.10.0-dev.16 → 8.10.0-dev.18

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 (75) hide show
  1. package/dist/cliproxy/quota/quota-fetcher-claude-normalizer.d.ts +9 -3
  2. package/dist/cliproxy/quota/quota-fetcher-claude-normalizer.d.ts.map +1 -1
  3. package/dist/cliproxy/quota/quota-fetcher-claude-normalizer.js +140 -155
  4. package/dist/cliproxy/quota/quota-fetcher-claude-normalizer.js.map +1 -1
  5. package/dist/cliproxy/quota/quota-fetcher-claude-probe-state.d.ts +3 -0
  6. package/dist/cliproxy/quota/quota-fetcher-claude-probe-state.d.ts.map +1 -1
  7. package/dist/cliproxy/quota/quota-fetcher-claude-probe-state.js +17 -10
  8. package/dist/cliproxy/quota/quota-fetcher-claude-probe-state.js.map +1 -1
  9. package/dist/cliproxy/quota/quota-label-sanitizer.d.ts +3 -2
  10. package/dist/cliproxy/quota/quota-label-sanitizer.d.ts.map +1 -1
  11. package/dist/cliproxy/quota/quota-label-sanitizer.js +6 -5
  12. package/dist/cliproxy/quota/quota-label-sanitizer.js.map +1 -1
  13. package/dist/cliproxy/quota/quota-manager.d.ts.map +1 -1
  14. package/dist/cliproxy/quota/quota-manager.js +3 -9
  15. package/dist/cliproxy/quota/quota-manager.js.map +1 -1
  16. package/dist/cliproxy/quota/quota-types.d.ts +4 -0
  17. package/dist/cliproxy/quota/quota-types.d.ts.map +1 -1
  18. package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
  19. package/dist/commands/cliproxy/help-subcommand.js +4 -0
  20. package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
  21. package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.d.ts +1 -2
  22. package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.d.ts.map +1 -1
  23. package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.js +5 -16
  24. package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.js.map +1 -1
  25. package/dist/commands/cliproxy/quota-subcommand/sections/claude.d.ts.map +1 -1
  26. package/dist/commands/cliproxy/quota-subcommand/sections/claude.js +1 -1
  27. package/dist/commands/cliproxy/quota-subcommand/sections/claude.js.map +1 -1
  28. package/dist/ui/assets/{Trans-BColIKz5.js → Trans-CPnBpG1v.js} +1 -1
  29. package/dist/ui/assets/{accounts-B1EU_9XM.js → accounts-CNsh__yA.js} +1 -1
  30. package/dist/ui/assets/{alert-dialog-C9SBIgEr.js → alert-dialog-BYANf24Z.js} +1 -1
  31. package/dist/ui/assets/{api-CXEV44f5.js → api-D2dp1jJI.js} +1 -1
  32. package/dist/ui/assets/{auth-section-CxZLOcwq.js → auth-section-C4hvIAlN.js} +1 -1
  33. package/dist/ui/assets/{backups-section-AUiHpQLi.js → backups-section-DtTXw8sS.js} +1 -1
  34. package/dist/ui/assets/{channels-TvJTgk8j.js → channels-BjAOue3A.js} +1 -1
  35. package/dist/ui/assets/{checkbox-Y1tmDCN3.js → checkbox-B8YUecwA.js} +1 -1
  36. package/dist/ui/assets/{claude-extension-CXJxJ4I9.js → claude-extension-B8rZNkvs.js} +1 -1
  37. package/dist/ui/assets/cliproxy-CYqhtq-C.js +4 -0
  38. package/dist/ui/assets/{cliproxy-ai-providers-2cXOlCUk.js → cliproxy-ai-providers-BdDJFdTh.js} +6 -6
  39. package/dist/ui/assets/{cliproxy-control-panel-C0HZZkG4.js → cliproxy-control-panel-Bfpgneqv.js} +1 -1
  40. package/dist/ui/assets/{codex-CyRwFWCe.js → codex-DUY9JsFG.js} +5 -5
  41. package/dist/ui/assets/{confirm-dialog-DUXnaSiV.js → confirm-dialog-7jPYymzW.js} +1 -1
  42. package/dist/ui/assets/{copilot-BPzXDtRF.js → copilot-MguCekxl.js} +1 -1
  43. package/dist/ui/assets/{cursor-Cvbm3VQV.js → cursor-DNDXozWa.js} +1 -1
  44. package/dist/ui/assets/{droid-CxsGvbvg.js → droid-mqdkhgvG.js} +2 -2
  45. package/dist/ui/assets/{globalenv-section-B-OdeaLT.js → globalenv-section-Dbl5LGSi.js} +1 -1
  46. package/dist/ui/assets/{health-C5VpmnOt.js → health-CkaDg4o2.js} +1 -1
  47. package/dist/ui/assets/{index-DO7WQcf-.js → index-0KmLQDBQ.js} +1 -1
  48. package/dist/ui/assets/index-0hASk2BU.css +1 -0
  49. package/dist/ui/assets/{index-D_L7ifkY.js → index-9X-gMfb1.js} +1 -1
  50. package/dist/ui/assets/{index-MKFBuvTT.js → index-BWS1uZea.js} +1 -1
  51. package/dist/ui/assets/{index-BeYBDzxI.js → index-BgqtZmiP.js} +39 -39
  52. package/dist/ui/assets/{index-nWYdiHn7.js → index-D-4SspwZ.js} +1 -1
  53. package/dist/ui/assets/{index-BPnoXiuI.js → index-D310z9x_.js} +1 -1
  54. package/dist/ui/assets/{index-gX4bxk3X.js → index-DqlWP0oL.js} +1 -1
  55. package/dist/ui/assets/{logs-DpdmvGkn.js → logs-1wSbFLwP.js} +1 -1
  56. package/dist/ui/assets/{masked-input-BddhXNda.js → masked-input-DYAPgWPy.js} +1 -1
  57. package/dist/ui/assets/{proxy-status-widget-B2hslsKA.js → proxy-status-widget-K0YX2AO9.js} +1 -1
  58. package/dist/ui/assets/{raw-json-settings-editor-panel-BidvqG9g.js → raw-json-settings-editor-panel-BQp45JoM.js} +1 -1
  59. package/dist/ui/assets/{searchable-select-B1PQOOG-.js → searchable-select-Czuhr_nX.js} +1 -1
  60. package/dist/ui/assets/{separator-xK1UZiz1.js → separator-XX_4XrJf.js} +1 -1
  61. package/dist/ui/assets/{shared-BAY-V4yj.js → shared-BRIhwmbj.js} +3 -3
  62. package/dist/ui/assets/{table-BoNFTKua.js → table-Z6T_rVZN.js} +1 -1
  63. package/dist/ui/assets/{updates-D_mt64pY.js → updates-Cd3ekbRR.js} +1 -1
  64. package/dist/ui/assets/{use-accounts-B-nOJ4XB.js → use-accounts-C4G9WOre.js} +1 -1
  65. package/dist/ui/index.html +2 -2
  66. package/dist/web-server/routes/bar-pool-account-quota-adapter.d.ts.map +1 -1
  67. package/dist/web-server/routes/bar-pool-account-quota-adapter.js +1 -3
  68. package/dist/web-server/routes/bar-pool-account-quota-adapter.js.map +1 -1
  69. package/dist/web-server/usage/native-quota-collector.d.ts.map +1 -1
  70. package/dist/web-server/usage/native-quota-collector.js +33 -65
  71. package/dist/web-server/usage/native-quota-collector.js.map +1 -1
  72. package/package.json +1 -1
  73. package/scripts/run-test-bucket.js +2 -0
  74. package/dist/ui/assets/cliproxy-DhX3qxPR.js +0 -4
  75. package/dist/ui/assets/index-DzFlVVV3.css +0 -1
@@ -4,11 +4,17 @@
4
4
  * Parses Anthropic policy-limits or OAuth-usage payloads into normalized windows and core usage summary.
5
5
  */
6
6
  import type { ClaudeCoreUsageSummary, ClaudeQuotaWindow } from './quota-types';
7
+ /** Known legacy IDs are the only safe fallback for metadata-free cached windows. */
8
+ export declare function getClaudeWindowMetadata(window: Pick<ClaudeQuotaWindow, 'rateLimitType' | 'scope' | 'cadence' | 'modelLabel'>): Pick<ClaudeQuotaWindow, 'scope' | 'cadence' | 'modelLabel'>;
9
+ /**
10
+ * Parse raw policy limits response into normalized windows.
11
+ * Supports both policy-limits `restrictions` payloads and OAuth usage payloads
12
+ * keyed by window name (`five_hour`, `seven_day`, `seven_day_sonnet`, ...).
13
+ */
7
14
  export declare function buildClaudeQuotaWindows(payload: Record<string, unknown>): ClaudeQuotaWindow[];
15
+ /** Account-wide weekly quota only; model and unknown windows never bind account health. */
8
16
  export declare function isClaudeWeeklyRateLimitType(rateLimitType: string): boolean;
9
17
  export declare function pickMostRestrictiveClaudeWeeklyWindow(windows: ClaudeQuotaWindow[]): ClaudeQuotaWindow | null;
10
- /**
11
- * Build explicit 5h + weekly usage summary from Claude policy windows.
12
- */
18
+ /** Rebuild from actual windows, never trust a previously collapsed core summary. */
13
19
  export declare function buildClaudeCoreUsageSummary(windows: ClaudeQuotaWindow[]): ClaudeCoreUsageSummary;
14
20
  //# sourceMappingURL=quota-fetcher-claude-normalizer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"quota-fetcher-claude-normalizer.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-fetcher-claude-normalizer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AA6N/E,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB,EAAE,CAgD7F;AA0CD,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,iBAAiB,EAAE,GAC3B,iBAAiB,GAAG,IAAI,CAK1B;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,sBAAsB,CAsChG"}
1
+ {"version":3,"file":"quota-fetcher-claude-normalizer.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-fetcher-claude-normalizer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAkG/E,oFAAoF;AACpF,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC,GACpF,IAAI,CAAC,iBAAiB,EAAE,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC,CAmB7D;AAiFD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB,EAAE,CAqF7F;AAaD,2FAA2F;AAC3F,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,iBAAiB,EAAE,GAC3B,iBAAiB,GAAG,IAAI,CAO1B;AAED,oFAAoF;AACpF,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,sBAAsB,CAWhG"}
@@ -5,8 +5,8 @@
5
5
  * Parses Anthropic policy-limits or OAuth-usage payloads into normalized windows and core usage summary.
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.buildClaudeCoreUsageSummary = exports.pickMostRestrictiveClaudeWeeklyWindow = exports.isClaudeWeeklyRateLimitType = exports.buildClaudeQuotaWindows = void 0;
9
- const percentage_1 = require("../../utils/percentage");
8
+ exports.buildClaudeCoreUsageSummary = exports.pickMostRestrictiveClaudeWeeklyWindow = exports.isClaudeWeeklyRateLimitType = exports.buildClaudeQuotaWindows = exports.getClaudeWindowMetadata = void 0;
9
+ const quota_label_sanitizer_1 = require("./quota-label-sanitizer");
10
10
  // Distinguishes epoch milliseconds from seconds (1e12 ~= 2001-09-09T01:46:40Z).
11
11
  const EPOCH_MS_THRESHOLD = 1e12;
12
12
  function asString(value) {
@@ -26,7 +26,7 @@ function asBoolean(value) {
26
26
  function asNumber(value) {
27
27
  if (typeof value === 'number' && isFinite(value))
28
28
  return value;
29
- if (typeof value === 'string') {
29
+ if (typeof value === 'string' && value.trim()) {
30
30
  const parsed = Number(value);
31
31
  return isFinite(parsed) ? parsed : null;
32
32
  }
@@ -80,45 +80,43 @@ function getClaudeWindowLabel(rateLimitType) {
80
80
  .join(' ');
81
81
  }
82
82
  }
83
- function clampUnit(value) {
84
- return Math.max(0, Math.min(1, value));
85
- }
86
83
  function normalizeUtilization(raw, unit) {
87
- const utilizationRaw = asNumber(raw['utilization']);
88
- const usedPercentRaw = asNumber(raw['usedPercent'] ?? raw['used_percent']);
89
- const remainingPercentRaw = asNumber(raw['remainingPercent'] ?? raw['remaining_percent']);
90
- if (utilizationRaw !== null) {
91
- const usedPercent = unit === 'ratio'
92
- ? (0, percentage_1.clampPercent)(clampUnit(utilizationRaw) * 100)
93
- : (0, percentage_1.clampPercent)(utilizationRaw);
94
- return {
95
- utilization: usedPercent / 100,
96
- usedPercent,
97
- remainingPercent: (0, percentage_1.clampPercent)(100 - usedPercent),
98
- };
99
- }
100
- if (usedPercentRaw !== null) {
101
- const usedPercent = (0, percentage_1.clampPercent)(usedPercentRaw);
102
- return {
103
- utilization: usedPercent / 100,
104
- usedPercent,
105
- remainingPercent: (0, percentage_1.clampPercent)(100 - usedPercent),
106
- };
107
- }
108
- if (remainingPercentRaw !== null) {
109
- const remainingPercent = (0, percentage_1.clampPercent)(remainingPercentRaw);
110
- const usedPercent = (0, percentage_1.clampPercent)(100 - remainingPercent);
111
- return {
112
- utilization: usedPercent / 100,
113
- usedPercent,
114
- remainingPercent,
115
- };
84
+ const utilization = asNumber(raw['utilization']);
85
+ const used = asNumber(raw['usedPercent'] ?? raw['used_percent'] ?? raw['used_percentage']);
86
+ const remaining = asNumber(raw['remainingPercent'] ?? raw['remaining_percent']);
87
+ const usedPercent = utilization !== null
88
+ ? unit === 'ratio'
89
+ ? utilization * 100
90
+ : utilization
91
+ : (used ?? (remaining !== null ? 100 - remaining : null));
92
+ if (usedPercent === null || usedPercent < 0 || usedPercent > 100)
93
+ return null;
94
+ return { utilization: usedPercent / 100, usedPercent, remainingPercent: 100 - usedPercent };
95
+ }
96
+ /** Known legacy IDs are the only safe fallback for metadata-free cached windows. */
97
+ function getClaudeWindowMetadata(window) {
98
+ if (window.scope !== undefined)
99
+ return { scope: window.scope, cadence: window.cadence, modelLabel: window.modelLabel };
100
+ switch (window.rateLimitType) {
101
+ case 'five_hour':
102
+ return { scope: 'account', cadence: '5h' };
103
+ case 'seven_day':
104
+ return { scope: 'account', cadence: 'weekly' };
105
+ case 'seven_day_opus':
106
+ return { scope: 'model', cadence: 'weekly', modelLabel: 'Opus' };
107
+ case 'seven_day_sonnet':
108
+ return { scope: 'model', cadence: 'weekly', modelLabel: 'Sonnet' };
109
+ case 'fable_weekly':
110
+ case 'fable_seven_day':
111
+ case 'seven_day_fable':
112
+ return { scope: 'model', cadence: 'weekly', modelLabel: 'Fable' };
113
+ default:
114
+ return { scope: 'unknown' };
116
115
  }
117
- return {
118
- utilization: null,
119
- usedPercent: 0,
120
- remainingPercent: 100,
121
- };
116
+ }
117
+ exports.getClaudeWindowMetadata = getClaudeWindowMetadata;
118
+ function normalizeModelLabel(label) {
119
+ return label.trim().replace(/\s+/g, ' ').toLowerCase();
122
120
  }
123
121
  function normalizeRateLimitType(value, fallbackKey) {
124
122
  const direct = asString(value);
@@ -126,16 +124,28 @@ function normalizeRateLimitType(value, fallbackKey) {
126
124
  return direct;
127
125
  if (fallbackKey)
128
126
  return fallbackKey;
129
- return 'unknown';
127
+ return '';
130
128
  }
131
129
  function toObject(value) {
132
130
  if (typeof value !== 'object' || value === null || Array.isArray(value))
133
131
  return null;
134
132
  return value;
135
133
  }
134
+ /** Credit grants can expose utilization/reset fields without being time quotas. */
135
+ function isMonetaryCreditBucket(raw) {
136
+ return ['limit_dollars', 'used_dollars', 'remaining_dollars'].some((key) => Object.prototype.hasOwnProperty.call(raw, key));
137
+ }
138
+ function isUnscoped(value) {
139
+ if (value === null || value === undefined)
140
+ return true;
141
+ const scope = toObject(value);
142
+ return (scope !== null && Object.values(scope).every((entry) => entry === null || entry === undefined));
143
+ }
136
144
  function normalizeRestriction(raw, fallbackKey, unit) {
145
+ if (isMonetaryCreditBucket(raw))
146
+ return null;
137
147
  const rateLimitType = normalizeRateLimitType(raw['rateLimitType'] ?? raw['rate_limit_type'] ?? raw['claim'] ?? raw['claimAbbrev'], fallbackKey);
138
- if (!rateLimitType || rateLimitType === 'unknown')
148
+ if (!rateLimitType)
139
149
  return null;
140
150
  const status = asString(raw['status']) || 'unknown';
141
151
  const resetAt = normalizeTimestamp(raw['resetsAt'] ?? raw['resets_at'] ?? raw['resetAt'] ?? raw['reset_at']) ||
@@ -144,14 +154,18 @@ function normalizeRestriction(raw, fallbackKey, unit) {
144
154
  raw['overage_resets_at'] ??
145
155
  raw['overageResetAt'] ??
146
156
  raw['overage_reset_at']) || null;
147
- const { utilization, usedPercent, remainingPercent } = normalizeUtilization(raw, unit);
157
+ const metrics = normalizeUtilization(raw, unit);
158
+ if (!metrics)
159
+ return null;
160
+ const metadata = getClaudeWindowMetadata({ rateLimitType });
148
161
  return {
149
162
  rateLimitType,
150
- label: getClaudeWindowLabel(rateLimitType),
163
+ label: metadata.modelLabel
164
+ ? metadata.modelLabel + ' weekly limit'
165
+ : getClaudeWindowLabel(rateLimitType),
166
+ ...metadata,
151
167
  status,
152
- utilization,
153
- usedPercent,
154
- remainingPercent,
168
+ ...metrics,
155
169
  resetAt,
156
170
  surpassedThreshold: asBoolean(raw['surpassedThreshold'] ?? raw['surpassed_threshold']),
157
171
  severity: asString(raw['severity']) || undefined,
@@ -167,95 +181,100 @@ function normalizeRestriction(raw, fallbackKey, unit) {
167
181
  * Supports both policy-limits `restrictions` payloads and OAuth usage payloads
168
182
  * keyed by window name (`five_hour`, `seven_day`, `seven_day_sonnet`, ...).
169
183
  */
170
- function isClaudeOAuthUsageWindowCandidate(key, raw) {
171
- if (key === 'extra_usage')
172
- return false;
173
- if (asNumber(raw['utilization']) === null)
174
- return false;
175
- const resetAt = raw['resetsAt'] ?? raw['resets_at'] ?? raw['resetAt'] ?? raw['reset_at'] ?? null;
176
- return resetAt !== null && resetAt !== undefined;
177
- }
178
184
  function buildClaudeQuotaWindows(payload) {
179
- const rawRestrictions = payload['restrictions'];
180
185
  const windows = [];
181
- if (Array.isArray(rawRestrictions)) {
182
- for (const item of rawRestrictions) {
186
+ // Parse modern rows first so valid scoped entries win over legacy aliases.
187
+ if (Array.isArray(payload['limits'])) {
188
+ for (const item of payload['limits']) {
183
189
  const raw = toObject(item);
184
190
  if (!raw)
185
191
  continue;
186
- // policy-limits restrictions[] returns utilization as a 0..1 ratio.
187
- const window = normalizeRestriction(raw, undefined, 'ratio');
188
- if (window)
192
+ const model = toObject(toObject(raw['scope'])?.['model']);
193
+ const modelLabel = (0, quota_label_sanitizer_1.sanitizeQuotaLabelOrNull)(model?.['display_name']);
194
+ const kind = asString(raw['kind']);
195
+ if (!kind)
196
+ continue;
197
+ const percent = asNumber(raw['percent']);
198
+ if (percent === null)
199
+ continue;
200
+ const generalKind = isUnscoped(raw['scope']) && kind === 'session'
201
+ ? 'five_hour'
202
+ : isUnscoped(raw['scope']) && kind === 'weekly_all'
203
+ ? 'seven_day'
204
+ : null;
205
+ const window = normalizeRestriction({ ...raw, rateLimitType: generalKind ?? kind, utilization: percent }, undefined, 'percent');
206
+ if (!window)
207
+ continue;
208
+ if (generalKind) {
189
209
  windows.push(window);
210
+ continue;
211
+ }
212
+ if (kind !== 'weekly_scoped' || !modelLabel) {
213
+ windows.push({ ...window, scope: 'unknown' });
214
+ continue;
215
+ }
216
+ windows.push({
217
+ ...window,
218
+ rateLimitType: 'weekly_scoped:' + normalizeModelLabel(modelLabel),
219
+ scope: 'model',
220
+ cadence: 'weekly',
221
+ modelLabel: modelLabel.replace(/\s+/g, ' '),
222
+ label: modelLabel.replace(/\s+/g, ' ') + ' weekly limit',
223
+ });
190
224
  }
191
225
  }
192
- else if (toObject(rawRestrictions)) {
193
- for (const [key, value] of Object.entries(rawRestrictions)) {
194
- const raw = toObject(value);
195
- if (!raw)
196
- continue;
197
- // policy-limits restrictions{} returns utilization as a 0..1 ratio.
198
- const window = normalizeRestriction(raw, key, 'ratio');
226
+ const restrictions = payload['restrictions'];
227
+ if (Array.isArray(restrictions)) {
228
+ for (const item of restrictions) {
229
+ const raw = toObject(item);
230
+ const window = raw ? normalizeRestriction(raw, undefined, 'ratio') : null;
199
231
  if (window)
200
232
  windows.push(window);
201
233
  }
202
234
  }
203
- else if (toObject(payload)) {
204
- for (const [key, value] of Object.entries(payload)) {
235
+ else if (toObject(restrictions)) {
236
+ for (const [key, value] of Object.entries(restrictions)) {
205
237
  const raw = toObject(value);
206
- if (!raw)
207
- continue;
208
- if (!isClaudeOAuthUsageWindowCandidate(key, raw))
209
- continue;
210
- // OAuth /oauth/usage payloads return utilization as percent 0..100.
211
- const window = normalizeRestriction(raw, key, 'percent');
238
+ const window = raw ? normalizeRestriction(raw, key, 'ratio') : null;
212
239
  if (window)
213
240
  windows.push(window);
214
241
  }
215
- // Some responses may contain a single restriction object directly,
216
- // matching the policy-limits ratio shape.
217
- if (windows.length === 0) {
218
- const direct = normalizeRestriction(payload, undefined, 'ratio');
219
- if (direct)
220
- windows.push(direct);
221
- }
242
+ }
243
+ for (const [key, value] of Object.entries(payload)) {
244
+ if (key === 'extra_usage' || key === 'restrictions' || key === 'scope')
245
+ continue;
246
+ const raw = toObject(value);
247
+ if (!raw)
248
+ continue;
249
+ const window = normalizeRestriction(raw, key, 'percent');
250
+ if (window)
251
+ windows.push(window);
252
+ }
253
+ if (windows.length === 0) {
254
+ const direct = normalizeRestriction(payload, undefined, 'ratio');
255
+ if (direct)
256
+ windows.push(direct);
222
257
  }
223
258
  const seen = new Set();
224
- const unique = [];
225
- for (const window of windows) {
226
- const key = `${window.rateLimitType}:${window.resetAt ?? ''}:${window.status}`;
259
+ return windows
260
+ .filter((window) => {
261
+ const key = [
262
+ window.scope,
263
+ window.cadence,
264
+ window.modelLabel
265
+ ? normalizeModelLabel(window.modelLabel)
266
+ : window.scope === 'account'
267
+ ? ''
268
+ : window.rateLimitType,
269
+ ].join(':');
227
270
  if (seen.has(key))
228
- continue;
271
+ return false;
229
272
  seen.add(key);
230
- unique.push(window);
231
- }
232
- return unique.sort((a, b) => a.rateLimitType.localeCompare(b.rateLimitType));
273
+ return true;
274
+ })
275
+ .sort((a, b) => a.rateLimitType.localeCompare(b.rateLimitType));
233
276
  }
234
277
  exports.buildClaudeQuotaWindows = buildClaudeQuotaWindows;
235
- function toEpochMs(iso) {
236
- if (!iso)
237
- return null;
238
- const value = new Date(iso).getTime();
239
- return isNaN(value) ? null : value;
240
- }
241
- function pickMostRestrictiveWeekly(windows) {
242
- if (windows.length === 0)
243
- return null;
244
- return [...windows].sort((a, b) => {
245
- if (a.remainingPercent !== b.remainingPercent) {
246
- return a.remainingPercent - b.remainingPercent;
247
- }
248
- const aReset = toEpochMs(a.resetAt);
249
- const bReset = toEpochMs(b.resetAt);
250
- if (aReset === null && bReset === null)
251
- return 0;
252
- if (aReset === null)
253
- return 1;
254
- if (bReset === null)
255
- return -1;
256
- return aReset - bReset;
257
- })[0];
258
- }
259
278
  function mapCoreWindow(window) {
260
279
  if (!window)
261
280
  return null;
@@ -267,55 +286,21 @@ function mapCoreWindow(window) {
267
286
  status: window.status,
268
287
  };
269
288
  }
270
- const WEEKLY_RATE_LIMIT_TYPES = new Set([
271
- 'seven_day',
272
- 'seven_day_opus',
273
- 'seven_day_sonnet',
274
- 'seven_day_oauth_apps',
275
- 'seven_day_cowork',
276
- ]);
289
+ /** Account-wide weekly quota only; model and unknown windows never bind account health. */
277
290
  function isClaudeWeeklyRateLimitType(rateLimitType) {
278
- return WEEKLY_RATE_LIMIT_TYPES.has(rateLimitType);
291
+ return rateLimitType === 'seven_day';
279
292
  }
280
293
  exports.isClaudeWeeklyRateLimitType = isClaudeWeeklyRateLimitType;
281
294
  function pickMostRestrictiveClaudeWeeklyWindow(windows) {
282
- const weeklyCandidates = windows.filter((window) => isClaudeWeeklyRateLimitType(window.rateLimitType));
283
- return pickMostRestrictiveWeekly(weeklyCandidates);
295
+ return (windows.find((window) => window.rateLimitType === 'seven_day' && getClaudeWindowMetadata(window).scope === 'account') ?? null);
284
296
  }
285
297
  exports.pickMostRestrictiveClaudeWeeklyWindow = pickMostRestrictiveClaudeWeeklyWindow;
286
- /**
287
- * Build explicit 5h + weekly usage summary from Claude policy windows.
288
- */
298
+ /** Rebuild from actual windows, never trust a previously collapsed core summary. */
289
299
  function buildClaudeCoreUsageSummary(windows) {
290
- if (!windows || windows.length === 0) {
291
- return { fiveHour: null, weekly: null };
292
- }
293
- const fiveHourWindow = windows.find((window) => window.rateLimitType === 'five_hour') || null;
294
- const weeklyWindow = pickMostRestrictiveClaudeWeeklyWindow(windows);
295
- if (fiveHourWindow && weeklyWindow) {
296
- return {
297
- fiveHour: mapCoreWindow(fiveHourWindow),
298
- weekly: mapCoreWindow(weeklyWindow),
299
- };
300
- }
301
- // Fallback: infer shortest/longest reset windows from non-overage limits.
302
- const nonOverage = windows.filter((window) => window.rateLimitType !== 'overage');
303
- const withReset = nonOverage
304
- .map((window) => ({
305
- window,
306
- resetMs: toEpochMs(window.resetAt),
307
- }))
308
- .filter((entry) => entry.resetMs !== null)
309
- .sort((a, b) => a.resetMs - b.resetMs);
310
- const inferredWeekly = weeklyWindow ||
311
- [...withReset].reverse().find((entry) => entry.window !== fiveHourWindow)?.window ||
312
- pickMostRestrictiveWeekly(nonOverage.filter((window) => window !== fiveHourWindow));
313
- const inferredFiveHour = fiveHourWindow ||
314
- withReset.find((entry) => entry.window !== inferredWeekly)?.window ||
315
- pickMostRestrictiveWeekly(nonOverage.filter((window) => window !== inferredWeekly));
316
300
  return {
317
- fiveHour: mapCoreWindow(inferredFiveHour),
318
- weekly: mapCoreWindow(inferredWeekly),
301
+ fiveHour: mapCoreWindow(windows.find((window) => window.rateLimitType === 'five_hour' &&
302
+ getClaudeWindowMetadata(window).scope === 'account') ?? null),
303
+ weekly: mapCoreWindow(pickMostRestrictiveClaudeWeeklyWindow(windows)),
319
304
  };
320
305
  }
321
306
  exports.buildClaudeCoreUsageSummary = buildClaudeCoreUsageSummary;
@@ -1 +1 @@
1
- {"version":3,"file":"quota-fetcher-claude-normalizer.js","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-fetcher-claude-normalizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quota-fetcher-claude-normalizer.js","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-fetcher-claude-normalizer.ts"],"names":[],"mappings":"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"}
@@ -19,8 +19,11 @@ export declare const CLAUDE_PROBE_COOLDOWN_BASE_MS: number;
19
19
  export declare const CLAUDE_PROBE_COOLDOWN_MAX_MS: number;
20
20
  /** Never serve a last-good result older than this, even if no window reset has passed. */
21
21
  export declare const CLAUDE_PROBE_STALE_MAX_AGE_MS: number;
22
+ export declare const CLAUDE_QUOTA_NORMALIZATION_VERSION = 3;
22
23
  export interface ClaudeProbeState {
23
24
  version: number;
25
+ /** Independent of the storage schema; old normalized numbers must not be reused. */
26
+ normalizationVersion?: number;
24
27
  /** Last successful usage result (success: true). */
25
28
  lastGood: ClaudeQuotaResult | null;
26
29
  /** Consecutive 429 responses since the last success. */
@@ -1 +1 @@
1
- {"version":3,"file":"quota-fetcher-claude-probe-state.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-fetcher-claude-probe-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,kFAAkF;AAClF,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,qEAAqE;AACrE,eAAO,MAAM,6BAA6B,QAAa,CAAC;AACxD,eAAO,MAAM,4BAA4B,QAAc,CAAC;AAGxD,0FAA0F;AAC1F,eAAO,MAAM,6BAA6B,QAAkB,CAAC;AAI7D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC,wDAAwD;IACxD,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;CACvB;AAUD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAmBxE;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAetF;AAED,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQxF;AAED,sFAAsF;AACtF,wBAAgB,4BAA4B,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,UAO/F;AAQD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,iBAAiB,EAC3B,GAAG,EAAE,MAAM,GACV,iBAAiB,GAAG,IAAI,CAe1B"}
1
+ {"version":3,"file":"quota-fetcher-claude-probe-state.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-fetcher-claude-probe-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvD,kFAAkF;AAClF,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,qEAAqE;AACrE,eAAO,MAAM,6BAA6B,QAAa,CAAC;AACxD,eAAO,MAAM,4BAA4B,QAAc,CAAC;AAGxD,0FAA0F;AAC1F,eAAO,MAAM,6BAA6B,QAAkB,CAAC;AAG7D,eAAO,MAAM,kCAAkC,IAAI,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oDAAoD;IACpD,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC,wDAAwD;IACxD,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;CACvB;AAgBD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAuBxE;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAmBtF;AAED,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQxF;AAED,sFAAsF;AACtF,wBAAgB,4BAA4B,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,UAO/F;AAQD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,iBAAiB,EAC3B,GAAG,EAAE,MAAM,GACV,iBAAiB,GAAG,IAAI,CAU1B"}
@@ -36,11 +36,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
36
36
  return result;
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.buildStaleClaudeResult = exports.computeClaudeProbeCooldownMs = exports.parseRetryAfterMs = exports.writeClaudeProbeState = exports.readClaudeProbeState = exports.CLAUDE_PROBE_STALE_MAX_AGE_MS = exports.CLAUDE_PROBE_COOLDOWN_MAX_MS = exports.CLAUDE_PROBE_COOLDOWN_BASE_MS = exports.CLAUDE_PROBE_SHARED_TTL_MS = void 0;
39
+ exports.buildStaleClaudeResult = exports.computeClaudeProbeCooldownMs = exports.parseRetryAfterMs = exports.writeClaudeProbeState = exports.readClaudeProbeState = exports.CLAUDE_QUOTA_NORMALIZATION_VERSION = exports.CLAUDE_PROBE_STALE_MAX_AGE_MS = exports.CLAUDE_PROBE_COOLDOWN_MAX_MS = exports.CLAUDE_PROBE_COOLDOWN_BASE_MS = exports.CLAUDE_PROBE_SHARED_TTL_MS = void 0;
40
40
  const fs = __importStar(require("node:fs"));
41
41
  const path = __importStar(require("node:path"));
42
42
  const config_manager_1 = require("../../utils/config-manager");
43
43
  const auth_utils_1 = require("../auth/auth-utils");
44
+ const quota_fetcher_claude_normalizer_1 = require("./quota-fetcher-claude-normalizer");
44
45
  /** Reuse another process's successful result for this long instead of probing. */
45
46
  exports.CLAUDE_PROBE_SHARED_TTL_MS = 60000;
46
47
  /** First 429 cooldown; doubles per consecutive 429 up to the max. */
@@ -51,8 +52,15 @@ const CLAUDE_PROBE_RETRY_AFTER_MAX_MS = 60 * 60000;
51
52
  /** Never serve a last-good result older than this, even if no window reset has passed. */
52
53
  exports.CLAUDE_PROBE_STALE_MAX_AGE_MS = 6 * 60 * 60000;
53
54
  const STATE_VERSION = 1;
55
+ exports.CLAUDE_QUOTA_NORMALIZATION_VERSION = 3;
54
56
  function emptyState() {
55
- return { version: STATE_VERSION, lastGood: null, consecutive429: 0, cooldownUntil: 0 };
57
+ return {
58
+ version: STATE_VERSION,
59
+ normalizationVersion: exports.CLAUDE_QUOTA_NORMALIZATION_VERSION,
60
+ lastGood: null,
61
+ consecutive429: 0,
62
+ cooldownUntil: 0,
63
+ };
56
64
  }
57
65
  function getStateFile(accountId) {
58
66
  return path.join((0, config_manager_1.getCcsDir)(), 'cache', 'claude-quota', `${(0, auth_utils_1.sanitizeEmail)(accountId)}.json`);
@@ -65,11 +73,15 @@ function readClaudeProbeState(accountId) {
65
73
  const state = parsed;
66
74
  if (state.version !== STATE_VERSION)
67
75
  return emptyState();
68
- const lastGood = state.lastGood && state.lastGood.success === true && Array.isArray(state.lastGood.windows)
76
+ const lastGood = state.normalizationVersion === exports.CLAUDE_QUOTA_NORMALIZATION_VERSION &&
77
+ state.lastGood &&
78
+ state.lastGood.success === true &&
79
+ Array.isArray(state.lastGood.windows)
69
80
  ? state.lastGood
70
81
  : null;
71
82
  return {
72
83
  version: STATE_VERSION,
84
+ normalizationVersion: exports.CLAUDE_QUOTA_NORMALIZATION_VERSION,
73
85
  lastGood,
74
86
  consecutive429: Number.isFinite(state.consecutive429) ? Number(state.consecutive429) : 0,
75
87
  cooldownUntil: Number.isFinite(state.cooldownUntil) ? Number(state.cooldownUntil) : 0,
@@ -86,7 +98,7 @@ function writeClaudeProbeState(accountId, state) {
86
98
  const tmp = `${file}.${process.pid}.${Date.now()}.tmp`;
87
99
  try {
88
100
  fs.mkdirSync(path.dirname(file), { recursive: true, mode: 0o700 });
89
- fs.writeFileSync(tmp, JSON.stringify(state), { mode: 0o600 });
101
+ fs.writeFileSync(tmp, JSON.stringify({ ...state, normalizationVersion: exports.CLAUDE_QUOTA_NORMALIZATION_VERSION }), { mode: 0o600 });
90
102
  fs.renameSync(tmp, file);
91
103
  }
92
104
  catch {
@@ -137,15 +149,10 @@ function buildStaleClaudeResult(lastGood, now) {
137
149
  const windows = lastGood.windows.filter((window) => !hasReset(window.resetAt, now));
138
150
  if (windows.length === 0)
139
151
  return null;
140
- const fiveHour = lastGood.coreUsage?.fiveHour ?? null;
141
- const weekly = lastGood.coreUsage?.weekly ?? null;
142
152
  return {
143
153
  ...lastGood,
144
154
  windows,
145
- coreUsage: {
146
- fiveHour: fiveHour && !hasReset(fiveHour.resetAt, now) ? fiveHour : null,
147
- weekly: weekly && !hasReset(weekly.resetAt, now) ? weekly : null,
148
- },
155
+ coreUsage: (0, quota_fetcher_claude_normalizer_1.buildClaudeCoreUsageSummary)(windows),
149
156
  stale: true,
150
157
  };
151
158
  }
@@ -1 +1 @@
1
- {"version":3,"file":"quota-fetcher-claude-probe-state.js","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-fetcher-claude-probe-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quota-fetcher-claude-probe-state.js","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-fetcher-claude-probe-state.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  /**
2
- * Sanitize upstream Codex feature labels before storing or rendering them.
2
+ * Sanitize upstream quota labels before storing or rendering them.
3
3
  *
4
4
  * The quota API is not schema-validated at runtime, so additional-rate-limit
5
5
  * labels must be constrained to safe, printable strings before they reach the
6
6
  * terminal.
7
7
  */
8
- export declare function sanitizeCodexFeatureLabelOrNull(value: unknown): string | null;
8
+ export declare function sanitizeQuotaLabelOrNull(value: unknown): string | null;
9
+ export declare const sanitizeCodexFeatureLabelOrNull: typeof sanitizeQuotaLabelOrNull;
9
10
  export declare function sanitizeCodexFeatureLabel(value: unknown): string;
10
11
  //# sourceMappingURL=quota-label-sanitizer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"quota-label-sanitizer.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-label-sanitizer.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAW7E;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEhE"}
1
+ {"version":3,"file":"quota-label-sanitizer.d.ts","sourceRoot":"","sources":["../../../src/cliproxy/quota/quota-label-sanitizer.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAWtE;AAED,eAAO,MAAM,+BAA+B,iCAA2B,CAAC;AAExE,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEhE"}