@kaitranntt/ccs 8.10.0-dev.17 → 8.10.0-dev.19
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/dist/cliproxy/accounts/claude-pool-policy-api.d.ts +12 -0
- package/dist/cliproxy/accounts/claude-pool-policy-api.d.ts.map +1 -0
- package/dist/cliproxy/accounts/claude-pool-policy-api.js +74 -0
- package/dist/cliproxy/accounts/claude-pool-policy-api.js.map +1 -0
- package/dist/cliproxy/accounts/claude-pool-policy-lease.d.ts +11 -0
- package/dist/cliproxy/accounts/claude-pool-policy-lease.d.ts.map +1 -0
- package/dist/cliproxy/accounts/claude-pool-policy-lease.js +55 -0
- package/dist/cliproxy/accounts/claude-pool-policy-lease.js.map +1 -0
- package/dist/cliproxy/accounts/claude-pool-policy-reconciliation.d.ts +13 -0
- package/dist/cliproxy/accounts/claude-pool-policy-reconciliation.d.ts.map +1 -0
- package/dist/cliproxy/accounts/claude-pool-policy-reconciliation.js +215 -0
- package/dist/cliproxy/accounts/claude-pool-policy-reconciliation.js.map +1 -0
- package/dist/cliproxy/accounts/claude-pool-policy-runtime.d.ts +19 -0
- package/dist/cliproxy/accounts/claude-pool-policy-runtime.d.ts.map +1 -0
- package/dist/cliproxy/accounts/claude-pool-policy-runtime.js +65 -0
- package/dist/cliproxy/accounts/claude-pool-policy-runtime.js.map +1 -0
- package/dist/cliproxy/accounts/claude-pool-policy-state.d.ts +37 -0
- package/dist/cliproxy/accounts/claude-pool-policy-state.d.ts.map +1 -0
- package/dist/cliproxy/accounts/claude-pool-policy-state.js +205 -0
- package/dist/cliproxy/accounts/claude-pool-policy-state.js.map +1 -0
- package/dist/cliproxy/accounts/claude-pool-policy.d.ts +48 -0
- package/dist/cliproxy/accounts/claude-pool-policy.d.ts.map +1 -0
- package/dist/cliproxy/accounts/claude-pool-policy.js +401 -0
- package/dist/cliproxy/accounts/claude-pool-policy.js.map +1 -0
- package/dist/cliproxy/accounts/drain-order.d.ts +1 -1
- package/dist/cliproxy/accounts/drain-order.d.ts.map +1 -1
- package/dist/cliproxy/accounts/drain-order.js +17 -0
- package/dist/cliproxy/accounts/drain-order.js.map +1 -1
- package/dist/cliproxy/accounts/pool-state.d.ts +1 -1
- package/dist/cliproxy/accounts/pool-state.d.ts.map +1 -1
- package/dist/cliproxy/accounts/registry-config.d.ts +4 -0
- package/dist/cliproxy/accounts/registry-config.d.ts.map +1 -0
- package/dist/cliproxy/accounts/registry-config.js +46 -0
- package/dist/cliproxy/accounts/registry-config.js.map +1 -0
- package/dist/cliproxy/accounts/token-file-ops.d.ts +1 -2
- package/dist/cliproxy/accounts/token-file-ops.d.ts.map +1 -1
- package/dist/cliproxy/accounts/token-file-ops.js +2 -7
- package/dist/cliproxy/accounts/token-file-ops.js.map +1 -1
- package/dist/cliproxy/accounts/types.d.ts +1 -1
- package/dist/cliproxy/accounts/types.d.ts.map +1 -1
- package/dist/cliproxy/config/generator.d.ts +2 -1
- package/dist/cliproxy/config/generator.d.ts.map +1 -1
- package/dist/cliproxy/config/generator.js +7 -2
- package/dist/cliproxy/config/generator.js.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-claude-normalizer.d.ts +17 -4
- package/dist/cliproxy/quota/quota-fetcher-claude-normalizer.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-claude-normalizer.js +246 -153
- package/dist/cliproxy/quota/quota-fetcher-claude-normalizer.js.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-claude-probe-state.d.ts +3 -0
- package/dist/cliproxy/quota/quota-fetcher-claude-probe-state.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-claude-probe-state.js +17 -10
- package/dist/cliproxy/quota/quota-fetcher-claude-probe-state.js.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-claude.d.ts +4 -4
- package/dist/cliproxy/quota/quota-fetcher-claude.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-claude.js +118 -29
- package/dist/cliproxy/quota/quota-fetcher-claude.js.map +1 -1
- package/dist/cliproxy/quota/quota-label-sanitizer.d.ts +3 -2
- package/dist/cliproxy/quota/quota-label-sanitizer.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-label-sanitizer.js +6 -5
- package/dist/cliproxy/quota/quota-label-sanitizer.js.map +1 -1
- package/dist/cliproxy/quota/quota-manager.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-manager.js +3 -9
- package/dist/cliproxy/quota/quota-manager.js.map +1 -1
- package/dist/cliproxy/quota/quota-types.d.ts +12 -0
- package/dist/cliproxy/quota/quota-types.d.ts.map +1 -1
- package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/help-subcommand.js +9 -0
- package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/order-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/order-subcommand.js +86 -44
- package/dist/commands/cliproxy/order-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/pool-state-renderer.d.ts.map +1 -1
- package/dist/commands/cliproxy/pool-state-renderer.js +9 -2
- package/dist/commands/cliproxy/pool-state-renderer.js.map +1 -1
- package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.d.ts +1 -2
- package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.d.ts.map +1 -1
- package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.js +5 -16
- package/dist/commands/cliproxy/quota-subcommand/claude-window-helpers.js.map +1 -1
- package/dist/commands/cliproxy/quota-subcommand/sections/claude.d.ts.map +1 -1
- package/dist/commands/cliproxy/quota-subcommand/sections/claude.js +1 -1
- package/dist/commands/cliproxy/quota-subcommand/sections/claude.js.map +1 -1
- package/dist/docker/docker-bootstrap.d.ts.map +1 -1
- package/dist/docker/docker-bootstrap.js +29 -5
- package/dist/docker/docker-bootstrap.js.map +1 -1
- package/dist/shared/claude-pool-policy.d.ts +20 -0
- package/dist/shared/claude-pool-policy.d.ts.map +1 -0
- package/dist/shared/claude-pool-policy.js +3 -0
- package/dist/shared/claude-pool-policy.js.map +1 -0
- package/dist/ui/assets/{Trans-ButNUgI0.js → Trans-Dlb02vqu.js} +1 -1
- package/dist/ui/assets/{accounts-MLY7WLik.js → accounts-NMmfEBnl.js} +1 -1
- package/dist/ui/assets/{alert-dialog-B5gsPnVB.js → alert-dialog-CLeTz0Di.js} +1 -1
- package/dist/ui/assets/{api-Bz71asnK.js → api-DxGxeHbw.js} +1 -1
- package/dist/ui/assets/{auth-section-BqGQc4ub.js → auth-section-AI2YNrUB.js} +1 -1
- package/dist/ui/assets/{backups-section-BP8fVjA2.js → backups-section-CxyuzCda.js} +1 -1
- package/dist/ui/assets/{channels-CXItlOs8.js → channels-SBcIEMn0.js} +1 -1
- package/dist/ui/assets/{checkbox-D3_x-6PV.js → checkbox-C1D6YcRy.js} +1 -1
- package/dist/ui/assets/{claude-extension-DvAAS238.js → claude-extension-C3Ik79tl.js} +1 -1
- package/dist/ui/assets/{cliproxy-io8Z1slq.js → cliproxy-BySCuRxu.js} +1 -1
- package/dist/ui/assets/{cliproxy-ai-providers-DkgBWX_r.js → cliproxy-ai-providers-B8LPZhj3.js} +1 -1
- package/dist/ui/assets/{cliproxy-control-panel-C6IMwMpu.js → cliproxy-control-panel-Dsv31SI_.js} +1 -1
- package/dist/ui/assets/{codex-BKntGtWm.js → codex-CWZlSLEn.js} +1 -1
- package/dist/ui/assets/{confirm-dialog-CU4RRUuI.js → confirm-dialog-tpU9d5TR.js} +1 -1
- package/dist/ui/assets/{copilot-S045zi-v.js → copilot-C5uwBK-k.js} +1 -1
- package/dist/ui/assets/{cursor-q4VVsOHM.js → cursor-BwoYXKM4.js} +1 -1
- package/dist/ui/assets/{droid-C4hxPz1p.js → droid-Cv6mZctn.js} +1 -1
- package/dist/ui/assets/{globalenv-section-DeVJimxG.js → globalenv-section-CKc1Udhj.js} +1 -1
- package/dist/ui/assets/{health-D5k73-1v.js → health-Ctfcm6p0.js} +1 -1
- package/dist/ui/assets/{index-BJJcWQcN.js → index--TAxR0Iy.js} +1 -1
- package/dist/ui/assets/index-0hASk2BU.css +1 -0
- package/dist/ui/assets/{index-DpL-rgkN.js → index-C2ABCKof.js} +1 -1
- package/dist/ui/assets/{index-CSfupFf3.js → index-C5YaR--I.js} +1 -1
- package/dist/ui/assets/{index-9RHJNAlK.js → index-CBKaNavQ.js} +1 -1
- package/dist/ui/assets/{index-DQWeKrTw.js → index-DnnSa3K6.js} +1 -1
- package/dist/ui/assets/{index-Nd8v14jh.js → index-G9JzuSyw.js} +1 -1
- package/dist/ui/assets/{index-B7Y50Pmj.js → index-gX7Mi5Ws.js} +37 -37
- package/dist/ui/assets/{logs-DBRI0Vct.js → logs-D6LiKkzU.js} +1 -1
- package/dist/ui/assets/{masked-input-CO6eBTBI.js → masked-input-CmtENW5h.js} +1 -1
- package/dist/ui/assets/proxy-status-widget-DqVBhfEP.js +1 -0
- package/dist/ui/assets/{raw-json-settings-editor-panel-Czb-dWwA.js → raw-json-settings-editor-panel-C9-_RC57.js} +1 -1
- package/dist/ui/assets/{searchable-select-EyJfxEUO.js → searchable-select-BeEQJh2E.js} +1 -1
- package/dist/ui/assets/{separator-DbhOtMVl.js → separator-CB-e5SCL.js} +1 -1
- package/dist/ui/assets/{shared-Dx9MtTlc.js → shared-GU9wziRt.js} +1 -1
- package/dist/ui/assets/{table-NcM1_A4G.js → table-BFrniqUJ.js} +1 -1
- package/dist/ui/assets/{updates-BmhLCm82.js → updates-DYhBCREi.js} +1 -1
- package/dist/ui/assets/{use-accounts-sRp8XTDE.js → use-accounts-xaNW9KeG.js} +1 -1
- package/dist/ui/index.html +2 -2
- package/dist/web-server/index.d.ts +1 -1
- package/dist/web-server/index.d.ts.map +1 -1
- package/dist/web-server/index.js +4 -1
- package/dist/web-server/index.js.map +1 -1
- package/dist/web-server/routes/bar-pool-account-quota-adapter.d.ts.map +1 -1
- package/dist/web-server/routes/bar-pool-account-quota-adapter.js +1 -3
- package/dist/web-server/routes/bar-pool-account-quota-adapter.js.map +1 -1
- package/dist/web-server/routes/cliproxy-routing-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-routing-routes.js +16 -0
- package/dist/web-server/routes/cliproxy-routing-routes.js.map +1 -1
- package/dist/web-server/shutdown.d.ts +2 -3
- package/dist/web-server/shutdown.d.ts.map +1 -1
- package/dist/web-server/shutdown.js +16 -8
- package/dist/web-server/shutdown.js.map +1 -1
- package/dist/web-server/usage/native-quota-collector.d.ts.map +1 -1
- package/dist/web-server/usage/native-quota-collector.js +33 -65
- package/dist/web-server/usage/native-quota-collector.js.map +1 -1
- package/package.json +1 -1
- package/dist/ui/assets/index-h0wykXqj.css +0 -1
- package/dist/ui/assets/proxy-status-widget-Bfp37KO_.js +0 -1
|
@@ -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
|
|
8
|
+
exports.buildClaudeCoreUsageSummary = exports.pickMostRestrictiveClaudeWeeklyWindow = exports.isClaudeWeeklyRateLimitType = exports.buildClaudeGeneralWindowPresence = 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
|
|
88
|
-
const
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
?
|
|
93
|
-
:
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
return {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
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
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
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 '
|
|
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
|
|
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
|
|
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:
|
|
163
|
+
label: metadata.modelLabel
|
|
164
|
+
? metadata.modelLabel + ' weekly limit'
|
|
165
|
+
: getClaudeWindowLabel(rateLimitType),
|
|
166
|
+
...metadata,
|
|
151
167
|
status,
|
|
152
|
-
|
|
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,208 @@ 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
|
-
|
|
182
|
-
|
|
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
|
-
|
|
187
|
-
const
|
|
188
|
-
|
|
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
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
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(
|
|
204
|
-
for (const [key, value] of Object.entries(
|
|
235
|
+
else if (toObject(restrictions)) {
|
|
236
|
+
for (const [key, value] of Object.entries(restrictions)) {
|
|
205
237
|
const raw = toObject(value);
|
|
206
|
-
|
|
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
|
-
|
|
216
|
-
|
|
217
|
-
if (
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
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
|
-
|
|
225
|
-
|
|
226
|
-
const key =
|
|
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
|
-
|
|
271
|
+
return false;
|
|
229
272
|
seen.add(key);
|
|
230
|
-
|
|
231
|
-
}
|
|
232
|
-
|
|
273
|
+
return true;
|
|
274
|
+
})
|
|
275
|
+
.sort((a, b) => a.rateLimitType.localeCompare(b.rateLimitType));
|
|
233
276
|
}
|
|
234
277
|
exports.buildClaudeQuotaWindows = buildClaudeQuotaWindows;
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
function
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
278
|
+
/**
|
|
279
|
+
* Preserve general-window presence before numeric normalization can omit invalid rows.
|
|
280
|
+
* Lists are complete snapshots only when their entry structure is valid. Legacy
|
|
281
|
+
* keyed OAuth snapshots must explicitly contain both general keys to prove a
|
|
282
|
+
* missing counterpart absent; a lone key may instead be a partial response.
|
|
283
|
+
*/
|
|
284
|
+
function buildClaudeGeneralWindowPresence(payload) {
|
|
285
|
+
const observations = {
|
|
286
|
+
fiveHour: { present: false, invalid: false, absent: false },
|
|
287
|
+
weekly: { present: false, invalid: false, absent: false },
|
|
288
|
+
};
|
|
289
|
+
let complete = false;
|
|
290
|
+
const keyForType = (rateLimitType) => rateLimitType === 'five_hour' ? 'fiveHour' : rateLimitType === 'seven_day' ? 'weekly' : null;
|
|
291
|
+
const hasOwn = (key) => Object.prototype.hasOwnProperty.call(payload, key);
|
|
292
|
+
const observe = (value, fallbackKey, unit) => {
|
|
293
|
+
const fallbackGeneralKey = fallbackKey ? keyForType(fallbackKey) : null;
|
|
294
|
+
if (value === null && fallbackGeneralKey) {
|
|
295
|
+
observations[fallbackGeneralKey].absent = true;
|
|
296
|
+
return true;
|
|
297
|
+
}
|
|
298
|
+
const raw = toObject(value);
|
|
299
|
+
if (!raw) {
|
|
300
|
+
if (fallbackGeneralKey)
|
|
301
|
+
observations[fallbackGeneralKey].invalid = true;
|
|
302
|
+
return false;
|
|
303
|
+
}
|
|
304
|
+
const rateLimitType = normalizeRateLimitType(raw['rateLimitType'] ?? raw['rate_limit_type'] ?? raw['claim'] ?? raw['claimAbbrev'], fallbackKey);
|
|
305
|
+
if (!rateLimitType)
|
|
306
|
+
return false;
|
|
307
|
+
const key = keyForType(rateLimitType);
|
|
308
|
+
if (fallbackGeneralKey && fallbackGeneralKey !== key) {
|
|
309
|
+
observations[fallbackGeneralKey].invalid = true;
|
|
310
|
+
}
|
|
311
|
+
if (!key)
|
|
312
|
+
return true;
|
|
313
|
+
// Legacy identifiers with additional constraints cannot prove a general quota.
|
|
314
|
+
const window = isUnscoped(raw['scope']) ? normalizeRestriction(raw, fallbackKey, unit) : null;
|
|
315
|
+
if (window)
|
|
316
|
+
observations[key].present = true;
|
|
317
|
+
else
|
|
318
|
+
observations[key].invalid = true;
|
|
319
|
+
return true;
|
|
320
|
+
};
|
|
321
|
+
const limits = payload['limits'];
|
|
322
|
+
if (Array.isArray(limits)) {
|
|
323
|
+
let validStructure = true;
|
|
324
|
+
for (const item of limits) {
|
|
325
|
+
const raw = toObject(item);
|
|
326
|
+
const kind = raw ? asString(raw['kind']) : null;
|
|
327
|
+
if (!raw || !kind) {
|
|
328
|
+
validStructure = false;
|
|
329
|
+
continue;
|
|
330
|
+
}
|
|
331
|
+
const key = kind === 'session' ? 'fiveHour' : kind === 'weekly_all' ? 'weekly' : null;
|
|
332
|
+
const scope = raw['scope'];
|
|
333
|
+
if (scope !== undefined && scope !== null && !toObject(scope)) {
|
|
334
|
+
validStructure = false;
|
|
335
|
+
if (key)
|
|
336
|
+
observations[key].invalid = true;
|
|
337
|
+
continue;
|
|
338
|
+
}
|
|
339
|
+
if (!key || !isUnscoped(raw['scope']))
|
|
340
|
+
continue;
|
|
341
|
+
const percent = asNumber(raw['percent']);
|
|
342
|
+
const rateLimitType = key === 'fiveHour' ? 'five_hour' : 'seven_day';
|
|
343
|
+
if (percent === null) {
|
|
344
|
+
observations[key].invalid = true;
|
|
345
|
+
continue;
|
|
346
|
+
}
|
|
347
|
+
observe({ ...raw, rateLimitType, utilization: percent }, undefined, 'percent');
|
|
247
348
|
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
349
|
+
complete || (complete = validStructure);
|
|
350
|
+
}
|
|
351
|
+
const restrictions = payload['restrictions'];
|
|
352
|
+
if (Array.isArray(restrictions)) {
|
|
353
|
+
let validStructure = true;
|
|
354
|
+
for (const item of restrictions)
|
|
355
|
+
validStructure = observe(item, undefined, 'ratio') && validStructure;
|
|
356
|
+
complete || (complete = validStructure);
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
const restrictionMap = toObject(restrictions);
|
|
360
|
+
if (restrictionMap) {
|
|
361
|
+
let validStructure = true;
|
|
362
|
+
for (const [key, value] of Object.entries(restrictionMap)) {
|
|
363
|
+
validStructure = observe(value, key, 'ratio') && validStructure;
|
|
364
|
+
}
|
|
365
|
+
complete || (complete = validStructure);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
for (const key of ['five_hour', 'seven_day']) {
|
|
369
|
+
if (hasOwn(key))
|
|
370
|
+
observe(payload[key], key, 'percent');
|
|
371
|
+
}
|
|
372
|
+
complete || (complete = hasOwn('five_hour') && hasOwn('seven_day'));
|
|
373
|
+
const presence = (key) => {
|
|
374
|
+
const observation = observations[key];
|
|
375
|
+
if (observation.present)
|
|
376
|
+
return 'present';
|
|
377
|
+
if (observation.invalid)
|
|
378
|
+
return 'unknown';
|
|
379
|
+
if (observation.absent || complete)
|
|
380
|
+
return 'absent';
|
|
381
|
+
return 'unknown';
|
|
382
|
+
};
|
|
383
|
+
return { fiveHour: presence('fiveHour'), weekly: presence('weekly') };
|
|
258
384
|
}
|
|
385
|
+
exports.buildClaudeGeneralWindowPresence = buildClaudeGeneralWindowPresence;
|
|
259
386
|
function mapCoreWindow(window) {
|
|
260
387
|
if (!window)
|
|
261
388
|
return null;
|
|
@@ -267,55 +394,21 @@ function mapCoreWindow(window) {
|
|
|
267
394
|
status: window.status,
|
|
268
395
|
};
|
|
269
396
|
}
|
|
270
|
-
|
|
271
|
-
'seven_day',
|
|
272
|
-
'seven_day_opus',
|
|
273
|
-
'seven_day_sonnet',
|
|
274
|
-
'seven_day_oauth_apps',
|
|
275
|
-
'seven_day_cowork',
|
|
276
|
-
]);
|
|
397
|
+
/** Account-wide weekly quota only; model and unknown windows never bind account health. */
|
|
277
398
|
function isClaudeWeeklyRateLimitType(rateLimitType) {
|
|
278
|
-
return
|
|
399
|
+
return rateLimitType === 'seven_day';
|
|
279
400
|
}
|
|
280
401
|
exports.isClaudeWeeklyRateLimitType = isClaudeWeeklyRateLimitType;
|
|
281
402
|
function pickMostRestrictiveClaudeWeeklyWindow(windows) {
|
|
282
|
-
|
|
283
|
-
return pickMostRestrictiveWeekly(weeklyCandidates);
|
|
403
|
+
return (windows.find((window) => window.rateLimitType === 'seven_day' && getClaudeWindowMetadata(window).scope === 'account') ?? null);
|
|
284
404
|
}
|
|
285
405
|
exports.pickMostRestrictiveClaudeWeeklyWindow = pickMostRestrictiveClaudeWeeklyWindow;
|
|
286
|
-
/**
|
|
287
|
-
* Build explicit 5h + weekly usage summary from Claude policy windows.
|
|
288
|
-
*/
|
|
406
|
+
/** Rebuild from actual windows, never trust a previously collapsed core summary. */
|
|
289
407
|
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
408
|
return {
|
|
317
|
-
fiveHour: mapCoreWindow(
|
|
318
|
-
|
|
409
|
+
fiveHour: mapCoreWindow(windows.find((window) => window.rateLimitType === 'five_hour' &&
|
|
410
|
+
getClaudeWindowMetadata(window).scope === 'account') ?? null),
|
|
411
|
+
weekly: mapCoreWindow(pickMostRestrictiveClaudeWeeklyWindow(windows)),
|
|
319
412
|
};
|
|
320
413
|
}
|
|
321
414
|
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 = 4;
|
|
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;
|
|
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 = 4;
|
|
54
56
|
function emptyState() {
|
|
55
|
-
return {
|
|
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.
|
|
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
|
}
|