@claudexor/daemon 3.19.0 → 3.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/command-retention.d.ts +1 -1
- package/dist/command-retention.d.ts.map +1 -1
- package/dist/command-retention.js +20 -4
- package/dist/command-retention.js.map +1 -1
- package/dist/continuation-admission.d.ts +11 -0
- package/dist/continuation-admission.d.ts.map +1 -0
- package/dist/continuation-admission.js +16 -0
- package/dist/continuation-admission.js.map +1 -0
- package/dist/credential-generation.d.ts +18 -0
- package/dist/credential-generation.d.ts.map +1 -0
- package/dist/credential-generation.js +43 -0
- package/dist/credential-generation.js.map +1 -0
- package/dist/credential-unusable-ledger.d.ts +26 -22
- package/dist/credential-unusable-ledger.d.ts.map +1 -1
- package/dist/credential-unusable-ledger.js +178 -38
- package/dist/credential-unusable-ledger.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/journal-fold-policy.d.ts.map +1 -1
- package/dist/journal-fold-policy.js +26 -2
- package/dist/journal-fold-policy.js.map +1 -1
- package/dist/pre-progress-refusal-ledger.d.ts +3 -6
- package/dist/pre-progress-refusal-ledger.d.ts.map +1 -1
- package/dist/pre-progress-refusal-ledger.js +7 -16
- package/dist/pre-progress-refusal-ledger.js.map +1 -1
- package/dist/project-partitions.d.ts +4 -0
- package/dist/project-partitions.d.ts.map +1 -1
- package/dist/project-partitions.js +7 -0
- package/dist/project-partitions.js.map +1 -1
- package/dist/quota-poll-lanes.d.ts +27 -9
- package/dist/quota-poll-lanes.d.ts.map +1 -1
- package/dist/quota-poll-lanes.js +95 -20
- package/dist/quota-poll-lanes.js.map +1 -1
- package/dist/quota-poll-pacer.d.ts +33 -36
- package/dist/quota-poll-pacer.d.ts.map +1 -1
- package/dist/quota-poll-pacer.js +115 -63
- package/dist/quota-poll-pacer.js.map +1 -1
- package/dist/quota-registry-support.d.ts +74 -0
- package/dist/quota-registry-support.d.ts.map +1 -1
- package/dist/quota-registry-support.js +154 -8
- package/dist/quota-registry-support.js.map +1 -1
- package/dist/quota-registry.d.ts +32 -7
- package/dist/quota-registry.d.ts.map +1 -1
- package/dist/quota-registry.js +76 -73
- package/dist/quota-registry.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -1
- package/dist/server.js.map +1 -1
- package/dist/terminal-authority.d.ts +1 -0
- package/dist/terminal-authority.d.ts.map +1 -1
- package/dist/thread-store-support.d.ts.map +1 -1
- package/dist/thread-store-support.js +10 -1
- package/dist/thread-store-support.js.map +1 -1
- package/dist/threads.d.ts +3 -1
- package/dist/threads.d.ts.map +1 -1
- package/dist/threads.js +2 -2
- package/dist/threads.js.map +1 -1
- package/package.json +6 -5
|
@@ -15,11 +15,85 @@ export declare function reactiveCooldownSnapshot(input: {
|
|
|
15
15
|
source: QuotaSource;
|
|
16
16
|
existing: QuotaSnapshot | undefined;
|
|
17
17
|
}, now: Date): QuotaSnapshot;
|
|
18
|
+
/** Freshness-annotated snapshots with expired (>24h) observations pruned.
|
|
19
|
+
* An old observation whose constraint still EXTENDS into the future (a
|
|
20
|
+
* weekly cooldown/reset seen once) is kept and stale-marked: pruning it
|
|
21
|
+
* would hide a live cap from both the footer and the router's ledger. */
|
|
22
|
+
export declare function activeQuotaSnapshots(snapshots: readonly QuotaSnapshot[], now: number): QuotaSnapshot[];
|
|
18
23
|
export declare const QUOTA_FRESHNESS_TTL_MS: number;
|
|
19
24
|
/** Same quota EVIDENCE: everything but the observation time (a freshness flip
|
|
20
25
|
* is evidence). A poll that only re-observed unchanged evidence keeps the fresh
|
|
21
26
|
* `observed_at` in memory without a journal frame. */
|
|
22
27
|
export declare function sameQuotaEvidence(a: QuotaSnapshot, b: QuotaSnapshot): boolean;
|
|
28
|
+
/** Retire only restrictions superseded by a later authenticated primary read.
|
|
29
|
+
* The registry must journal a changed result even when the primary read only
|
|
30
|
+
* changed its timestamp. Keep the old observation's time and unrelated facts. */
|
|
31
|
+
export declare function withoutSupersededQuotaConstraints(existing: QuotaSnapshot, observation: QuotaSnapshot, now: Date): QuotaSnapshot;
|
|
32
|
+
/** One reconciliation over the current raw snapshots; the registry commits all
|
|
33
|
+
* returned facts together before updating any in-memory projection. */
|
|
34
|
+
export declare function reconcileQuotaSnapshot(value: QuotaSnapshot, existing: readonly QuotaSnapshot[], now: Date): {
|
|
35
|
+
snapshot: {
|
|
36
|
+
subject: {
|
|
37
|
+
harness: string;
|
|
38
|
+
credential_route: "local" | "managed_api_key" | "vendor_native";
|
|
39
|
+
plan_label: string | null;
|
|
40
|
+
subject_id: string | null;
|
|
41
|
+
};
|
|
42
|
+
constraints: {
|
|
43
|
+
id: string;
|
|
44
|
+
label: string;
|
|
45
|
+
applies_to_models?: string[] | null | undefined;
|
|
46
|
+
applies_to_model_prefixes?: string[] | undefined;
|
|
47
|
+
applies_to_unspecified_model?: boolean | undefined;
|
|
48
|
+
used_ratio: number | null;
|
|
49
|
+
window_seconds: number | null;
|
|
50
|
+
resets_at: string | null;
|
|
51
|
+
cooldown_until: string | null;
|
|
52
|
+
}[];
|
|
53
|
+
source: "agy_command_usage" | "claude_api_retry" | "claude_oauth_usage" | "claude_rate_limit_event" | "claude_statusline" | "codex_app_server" | "codex_app_server_event" | "codex_rollout" | "cursor_rate_limit";
|
|
54
|
+
observed_at: string;
|
|
55
|
+
freshness: "fresh" | "stale" | "unknown";
|
|
56
|
+
};
|
|
57
|
+
updates: {
|
|
58
|
+
subject: {
|
|
59
|
+
harness: string;
|
|
60
|
+
credential_route: "local" | "managed_api_key" | "vendor_native";
|
|
61
|
+
plan_label: string | null;
|
|
62
|
+
subject_id: string | null;
|
|
63
|
+
};
|
|
64
|
+
constraints: {
|
|
65
|
+
id: string;
|
|
66
|
+
label: string;
|
|
67
|
+
applies_to_models?: string[] | null | undefined;
|
|
68
|
+
applies_to_model_prefixes?: string[] | undefined;
|
|
69
|
+
applies_to_unspecified_model?: boolean | undefined;
|
|
70
|
+
used_ratio: number | null;
|
|
71
|
+
window_seconds: number | null;
|
|
72
|
+
resets_at: string | null;
|
|
73
|
+
cooldown_until: string | null;
|
|
74
|
+
}[];
|
|
75
|
+
source: "agy_command_usage" | "claude_api_retry" | "claude_oauth_usage" | "claude_rate_limit_event" | "claude_statusline" | "codex_app_server" | "codex_app_server_event" | "codex_rollout" | "cursor_rate_limit";
|
|
76
|
+
observed_at: string;
|
|
77
|
+
freshness: "fresh" | "stale" | "unknown";
|
|
78
|
+
}[];
|
|
79
|
+
supersessions: {
|
|
80
|
+
subject: {
|
|
81
|
+
harness: string;
|
|
82
|
+
credential_route: "local" | "managed_api_key" | "vendor_native";
|
|
83
|
+
plan_label: string | null;
|
|
84
|
+
subject_id: string | null;
|
|
85
|
+
};
|
|
86
|
+
observed_at: string;
|
|
87
|
+
version: 1;
|
|
88
|
+
snapshot_id: string;
|
|
89
|
+
}[];
|
|
90
|
+
reconciled: boolean;
|
|
91
|
+
};
|
|
92
|
+
/** Existing prepare/upsert wire shape, reusable for an atomic reconciliation. */
|
|
93
|
+
export declare function quotaSnapshotRecords(snapshot: QuotaSnapshot): Array<{
|
|
94
|
+
type: string;
|
|
95
|
+
payload: unknown;
|
|
96
|
+
}>;
|
|
23
97
|
export declare function snapshotKey(snapshot: QuotaSnapshot): string;
|
|
24
98
|
/** Exact durable payload accepted by the strict v3.2.0 quota schemas. Keep an
|
|
25
99
|
* explicit allowlist at every nested level so a future additive field cannot
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-registry-support.d.ts","sourceRoot":"","sources":["../src/quota-registry-support.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"quota-registry-support.d.ts","sourceRoot":"","sources":["../src/quota-registry-support.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EASL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAG3B;;2EAE2E;AAC3E,wBAAgB,wBAAwB,CACtC,KAAK,EAAE;IACL,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,eAAe,CAAC;IACjC,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;CACrC,EACD,GAAG,EAAE,IAAI,GACR,aAAa,CAyCf;AAMD;;;yEAGyE;AACzE,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,aAAa,EAAE,EACnC,GAAG,EAAE,MAAM,GACV,aAAa,EAAE,CAgBjB;AAED,eAAO,MAAM,sBAAsB,QAAa,CAAC;AAEjD;;sDAEsD;AACtD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,OAAO,CAE7E;AAED;;iFAEiF;AACjF,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,aAAa,EAC1B,GAAG,EAAE,IAAI,GACR,aAAa,CAqCf;AAyDD;uEACuE;AACvE,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,SAAS,aAAa,EAAE,EAClC,GAAG,EAAE,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBV;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,aAAa,GACtB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAyB3C;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAE3D;AAED;;6DAE6D;AAC7D,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,CAoBzE;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAM3E;AAED;;;;oDAIoD;AACpD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAQlE;AAED;;+EAE+E;AAC/E,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzF;AAOD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,EAC/B,UAAU,EAAE,eAAe,EAC3B,GAAG,EAAE,MAAM,GACV,OAAO,CAQT;AAED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,aAAa,EACvB,GAAG,EAAE,MAAM,GACV,aAAa,GAAG,IAAI,CAMtB"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* keying, freshness aging, and expired scoped-cooldown pruning. No registry
|
|
5
5
|
* state lives here.
|
|
6
6
|
*/
|
|
7
|
-
import { REACTIVE_COOLDOWN_SOURCE, legacyV320QuotaSource, vendorResetDayCooldownEnd, } from "@claudexor/schema";
|
|
7
|
+
import { REACTIVE_COOLDOWN_SOURCE, legacyV320QuotaSource, quotaSourceTraits, quotaSnapshotIdentity, quotaConstraintIdentity, QuotaWindowObservation, vendorResetDayCooldownEnd, } from "@claudexor/schema";
|
|
8
8
|
import { hashJson } from "@claudexor/util";
|
|
9
9
|
/** The reactive vendor-limit cooldown snapshot for a harness event: the
|
|
10
10
|
* existing subject's constraints minus the superseded/expired cooldown, plus
|
|
@@ -47,6 +47,30 @@ export function reactiveCooldownSnapshot(input, now) {
|
|
|
47
47
|
],
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
|
+
/** Snapshots older than this are pruned from every projection read (W17):
|
|
51
|
+
* a day-old observation is not quota truth, just footer clutter. */
|
|
52
|
+
const MAX_SNAPSHOT_AGE_MS = 24 * 60 * 60_000;
|
|
53
|
+
/** Freshness-annotated snapshots with expired (>24h) observations pruned.
|
|
54
|
+
* An old observation whose constraint still EXTENDS into the future (a
|
|
55
|
+
* weekly cooldown/reset seen once) is kept and stale-marked: pruning it
|
|
56
|
+
* would hide a live cap from both the footer and the router's ledger. */
|
|
57
|
+
export function activeQuotaSnapshots(snapshots, now) {
|
|
58
|
+
return snapshots
|
|
59
|
+
.map((snapshot) => withoutExpiredScopedCooldowns(snapshot, now))
|
|
60
|
+
.filter((snapshot) => snapshot !== null)
|
|
61
|
+
.filter((snapshot) => {
|
|
62
|
+
const observed = Date.parse(snapshot.observed_at);
|
|
63
|
+
if (!Number.isFinite(observed))
|
|
64
|
+
return false;
|
|
65
|
+
if (now - observed <= MAX_SNAPSHOT_AGE_MS)
|
|
66
|
+
return true;
|
|
67
|
+
return snapshot.constraints.some((constraint) => [constraint.cooldown_until, constraint.resets_at].some((raw) => {
|
|
68
|
+
const at = raw ? Date.parse(raw) : Number.NaN;
|
|
69
|
+
return Number.isFinite(at) && at > now;
|
|
70
|
+
}));
|
|
71
|
+
})
|
|
72
|
+
.map((snapshot) => staleAt(snapshot, now));
|
|
73
|
+
}
|
|
50
74
|
export const QUOTA_FRESHNESS_TTL_MS = 5 * 60_000;
|
|
51
75
|
/** Same quota EVIDENCE: everything but the observation time (a freshness flip
|
|
52
76
|
* is evidence). A poll that only re-observed unchanged evidence keeps the fresh
|
|
@@ -54,14 +78,136 @@ export const QUOTA_FRESHNESS_TTL_MS = 5 * 60_000;
|
|
|
54
78
|
export function sameQuotaEvidence(a, b) {
|
|
55
79
|
return hashJson({ ...a, observed_at: null }) === hashJson({ ...b, observed_at: null });
|
|
56
80
|
}
|
|
57
|
-
|
|
58
|
-
|
|
81
|
+
/** Retire only restrictions superseded by a later authenticated primary read.
|
|
82
|
+
* The registry must journal a changed result even when the primary read only
|
|
83
|
+
* changed its timestamp. Keep the old observation's time and unrelated facts. */
|
|
84
|
+
export function withoutSupersededQuotaConstraints(existing, observation, now) {
|
|
85
|
+
const traits = quotaSourceTraits(observation.source);
|
|
86
|
+
if (!traits.vendorAuthenticated ||
|
|
87
|
+
traits.refreshDemandHarness !== observation.subject.harness ||
|
|
88
|
+
staleAt(observation, now.getTime()).freshness !== "fresh" ||
|
|
89
|
+
REACTIVE_COOLDOWN_SOURCE[existing.subject.harness] !== existing.source ||
|
|
90
|
+
existing.subject.harness !== observation.subject.harness ||
|
|
91
|
+
existing.subject.credential_route !== observation.subject.credential_route ||
|
|
92
|
+
existing.subject.subject_id !== observation.subject.subject_id ||
|
|
93
|
+
!(Date.parse(observation.observed_at) > Date.parse(existing.observed_at))) {
|
|
94
|
+
return existing;
|
|
95
|
+
}
|
|
96
|
+
const constraints = existing.constraints.filter((constraint) => {
|
|
97
|
+
// A generic refusal retained no window identity. A successful recognized
|
|
98
|
+
// read permits the next requested attempt, including unknown/empty quota;
|
|
99
|
+
// it does not promise that the provider will accept that attempt.
|
|
100
|
+
if (constraint.id === "cooldown" &&
|
|
101
|
+
!constraint.applies_to_models?.length &&
|
|
102
|
+
!constraint.applies_to_model_prefixes?.length) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
// Independently identified windows require a measured replacement of the
|
|
106
|
+
// same window and scope. Absence/unknown usage cannot disprove one.
|
|
107
|
+
return !observation.constraints.some((current) => current.used_ratio !== null &&
|
|
108
|
+
sameQuotaWindow(existing.source, constraint.id, current.id) &&
|
|
109
|
+
sameModelScope(constraint, current));
|
|
110
|
+
});
|
|
111
|
+
return constraints.length === existing.constraints.length
|
|
112
|
+
? existing
|
|
113
|
+
: { ...existing, constraints };
|
|
114
|
+
}
|
|
115
|
+
function sameQuotaWindow(source, oldId, newId) {
|
|
116
|
+
const id = oldId.startsWith("cooldown:") ? oldId.slice("cooldown:".length) : oldId;
|
|
117
|
+
if (id === newId)
|
|
118
|
+
return true;
|
|
119
|
+
// Codex rollout omits the native default bucket id that app-server includes.
|
|
120
|
+
// A different bucket (for example review) is an independent constraint.
|
|
121
|
+
return source === "codex_rollout" && (newId === `codex:${id}` || newId === `default:${id}`);
|
|
122
|
+
}
|
|
123
|
+
function sameModelScope(a, b) {
|
|
124
|
+
return hashJson(quotaModelScope(a)) === hashJson(quotaModelScope(b));
|
|
125
|
+
}
|
|
126
|
+
function quotaModelScope(constraint) {
|
|
127
|
+
const { id, label, used_ratio, window_seconds, resets_at, cooldown_until, ...scope } = constraint;
|
|
128
|
+
return {
|
|
129
|
+
...scope,
|
|
130
|
+
applies_to_models: [...(scope.applies_to_models ?? [])].sort(),
|
|
131
|
+
applies_to_unspecified_model: scope.applies_to_unspecified_model ?? false,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
/** Match only a measured replacement of the exact known window, never an
|
|
135
|
+
* absent window, unknown usage, another credential or a different scope. */
|
|
136
|
+
function windowSupersession(existing, observation, now) {
|
|
137
|
+
if (quotaSourceTraits(existing.source).snapshotMode !== "window" ||
|
|
138
|
+
!quotaSourceTraits(observation.source).vendorAuthenticated ||
|
|
139
|
+
quotaSourceTraits(observation.source).refreshDemandHarness !== observation.subject.harness ||
|
|
140
|
+
staleAt(observation, now.getTime()).freshness !== "fresh" ||
|
|
141
|
+
existing.subject.harness !== observation.subject.harness ||
|
|
142
|
+
existing.subject.credential_route !== observation.subject.credential_route ||
|
|
143
|
+
existing.subject.subject_id !== observation.subject.subject_id ||
|
|
144
|
+
Date.parse(observation.observed_at) <= Date.parse(existing.observed_at))
|
|
145
|
+
return null;
|
|
146
|
+
const identity = quotaConstraintIdentity(existing.constraints[0]);
|
|
147
|
+
if (!observation.constraints.some((constraint) => constraint.used_ratio !== null && quotaConstraintIdentity(constraint) === identity))
|
|
148
|
+
return null;
|
|
149
|
+
return {
|
|
150
|
+
version: 1,
|
|
151
|
+
subject: existing.subject,
|
|
152
|
+
snapshot_id: snapshotKey(existing),
|
|
153
|
+
observed_at: observation.observed_at,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
/** One reconciliation over the current raw snapshots; the registry commits all
|
|
157
|
+
* returned facts together before updating any in-memory projection. */
|
|
158
|
+
export function reconcileQuotaSnapshot(value, existing, now) {
|
|
159
|
+
let snapshot = value;
|
|
160
|
+
const witnesses = [];
|
|
161
|
+
const supersessions = [];
|
|
162
|
+
for (const observation of existing) {
|
|
163
|
+
const atObservation = new Date(observation.observed_at);
|
|
164
|
+
const reduced = withoutSupersededQuotaConstraints(snapshot, observation, atObservation);
|
|
165
|
+
const supersession = windowSupersession(snapshot, observation, atObservation);
|
|
166
|
+
if (reduced !== snapshot || supersession)
|
|
167
|
+
witnesses.push(observation);
|
|
168
|
+
if (supersession)
|
|
169
|
+
supersessions.push(supersession);
|
|
170
|
+
snapshot = reduced;
|
|
171
|
+
}
|
|
172
|
+
const retired = existing.flatMap((prior) => {
|
|
173
|
+
const supersession = windowSupersession(prior, snapshot, now);
|
|
174
|
+
if (supersession)
|
|
175
|
+
supersessions.push(supersession);
|
|
176
|
+
const next = withoutSupersededQuotaConstraints(prior, snapshot, now);
|
|
177
|
+
return next === prior ? [] : [next];
|
|
178
|
+
});
|
|
179
|
+
return {
|
|
180
|
+
snapshot,
|
|
181
|
+
updates: [...witnesses, snapshot, ...retired],
|
|
182
|
+
supersessions,
|
|
183
|
+
reconciled: witnesses.length > 0 || retired.length > 0 || supersessions.length > 0,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
/** Existing prepare/upsert wire shape, reusable for an atomic reconciliation. */
|
|
187
|
+
export function quotaSnapshotRecords(snapshot) {
|
|
188
|
+
if (quotaSourceTraits(snapshot.source).snapshotMode === "window") {
|
|
189
|
+
return [
|
|
190
|
+
{
|
|
191
|
+
type: "quota.window.observed",
|
|
192
|
+
payload: QuotaWindowObservation.parse({ version: 1, snapshot }),
|
|
193
|
+
},
|
|
194
|
+
];
|
|
195
|
+
}
|
|
196
|
+
const legacy = legacyV320Snapshot(snapshot);
|
|
197
|
+
const upsert = { type: "quota.snapshot.upserted", payload: legacy };
|
|
198
|
+
if (legacy.source === snapshot.source &&
|
|
199
|
+
!snapshot.constraints.some((c) => c.applies_to_models !== undefined || c.applies_to_model_prefixes !== undefined))
|
|
200
|
+
return [upsert];
|
|
59
201
|
return [
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
202
|
+
{
|
|
203
|
+
type: "quota.snapshot.scoped_prepared",
|
|
204
|
+
payload: { version: 1, base_hash: hashJson(legacy), snapshot },
|
|
205
|
+
},
|
|
206
|
+
upsert,
|
|
207
|
+
];
|
|
208
|
+
}
|
|
209
|
+
export function snapshotKey(snapshot) {
|
|
210
|
+
return quotaSnapshotIdentity(snapshot);
|
|
65
211
|
}
|
|
66
212
|
/** Exact durable payload accepted by the strict v3.2.0 quota schemas. Keep an
|
|
67
213
|
* explicit allowlist at every nested level so a future additive field cannot
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-registry-support.js","sourceRoot":"","sources":["../src/quota-registry-support.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,GAM1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;2EAE2E;AAC3E,MAAM,UAAU,wBAAwB,CACtC,KAMC,EACD,GAAS;IAET,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACpE,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,SAAS,IAAI,IAAI,CAAC;IAClD,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,cAAc,IAAI,IAAI,CAAC;IACvD,kFAAkF;IAClF,MAAM,aAAa,GACjB,KAAK;QACL,yBAAyB,CAAC,KAAK,CAAC,OAAO,CAAC;QACxC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3F,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,EAAE,aAAa;QAClD,CAAC,CAAC,YAAY,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE;QAC9C,CAAC,CAAC,UAAU,CAAC;IACf,OAAO;QACL,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI;YAC5B,OAAO;YACP,gBAAgB,EAAE,eAAe;YACjC,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,KAAK,CAAC,qBAAqB,IAAI,IAAI;SAChD;QACD,MAAM;QACN,WAAW,EAAE,KAAK,CAAC,EAAE;QACrB,SAAS,EAAE,OAAO;QAClB,WAAW,EAAE;YACX,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAC9B,CAAC,UAAU,EAAE,EAAE,CACb,UAAU,CAAC,EAAE,KAAK,YAAY;gBAC9B,CAAC,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAC9D,IAAI,EAAE,CAAC;YACR;gBACE,EAAE,EAAE,YAAY;gBAChB,KAAK,EAAE,UAAU;gBACjB,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,iBAAiB,KAAK,SAAS;oBACnD,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE;oBAC3D,CAAC,CAAC,EAAE,CAAC;gBACP,UAAU,EAAE,IAAI;gBAChB,cAAc,EAAE,IAAI;gBACpB,SAAS,EAAE,KAAK;gBAChB,cAAc,EAAE,aAAa;aAC9B;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAG,MAAM,CAAC;AAEjD;;sDAEsD;AACtD,MAAM,UAAU,iBAAiB,CAAC,CAAgB,EAAE,CAAgB;IAClE,OAAO,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,KAAK,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAuB;IACjD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IACjC,OAAO;QACL,OAAO,CAAC,OAAO;QACf,OAAO,CAAC,gBAAgB;QACxB,OAAO,CAAC,UAAU,IAAI,EAAE;QACxB,QAAQ,CAAC,MAAM;KAChB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;6DAE6D;AAC7D,MAAM,UAAU,kBAAkB,CAAC,QAAuB;IACxD,OAAO;QACL,OAAO,EAAE;YACP,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO;YACjC,gBAAgB,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB;YACnD,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU;YACvC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU;SACxC;QACD,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAmB,EAAE,CAAC,CAAC;YACtE,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,cAAc,EAAE,UAAU,CAAC,cAAc;SAC1C,CAAC,CAAC;QACH,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC9C,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,SAAS,EAAE,QAAQ,CAAC,SAAS;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,QAAuB,EAAE,GAAW;IAC1D,IAAI,QAAQ,CAAC,SAAS,KAAK,OAAO;QAAE,OAAO,QAAQ,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;IAChG,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,QAAQ,GAAG,sBAAsB,CAAC;IACrF,OAAO,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AACjF,CAAC;AAED;;;;oDAIoD;AACpD,MAAM,UAAU,kBAAkB,CAAC,QAAuB;IACxD,IAAI,QAAQ,CAAC,SAAS,KAAK,OAAO;QAAE,OAAO,MAAM,CAAC,iBAAiB,CAAC;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,MAAM,CAAC,iBAAiB,CAAC;IAChE,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW;SAChC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC3F,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,sBAAsB,EAAE,GAAG,MAAM,CAAC,CAAC;AAChE,CAAC;AAED;;+EAE+E;AAC/E,MAAM,UAAU,sBAAsB,CAAC,QAAuB,EAAE,QAAgB;IAC9E,OAAO,kBAAkB,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;AAClD,CAAC;AAED,SAAS,cAAc,CAAC,UAA8C,EAAE,GAAW;IACjF,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IACnF,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,MAA+B,EAC/B,UAA2B,EAC3B,GAAW;IAEX,mFAAmF;IACnF,0FAA0F;IAC1F,OAAO,CACL,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QACxD,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QACrC,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,CAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,QAAuB,EACvB,GAAW;IAEX,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAC7C,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,CAC3E,CAAC;IACF,IAAI,WAAW,CAAC,MAAM,KAAK,QAAQ,CAAC,WAAW,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IACxE,OAAO,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,CAAC;AACxE,CAAC"}
|
|
1
|
+
{"version":3,"file":"quota-registry-support.js","sourceRoot":"","sources":["../src/quota-registry-support.ts"],"names":[],"mappings":"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"}
|
package/dist/quota-registry.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export declare class QuotaRegistry {
|
|
|
12
12
|
private readonly now;
|
|
13
13
|
private readonly subjects?;
|
|
14
14
|
private readonly snapshots;
|
|
15
|
+
private readonly supersededWindows;
|
|
15
16
|
/** Ephemeral typed-absence state, recomputed each refresh/poll cycle — NOT
|
|
16
17
|
* journaled: an absence is a live derivation of "who reported nothing this
|
|
17
18
|
* cycle", never a durable fact to replay. */
|
|
@@ -39,15 +40,17 @@ export declare class QuotaRegistry {
|
|
|
39
40
|
id: string;
|
|
40
41
|
label: string;
|
|
41
42
|
applies_to_models?: string[] | null | undefined;
|
|
43
|
+
applies_to_model_prefixes?: string[] | undefined;
|
|
42
44
|
applies_to_unspecified_model?: boolean | undefined;
|
|
43
45
|
used_ratio: number | null;
|
|
44
46
|
window_seconds: number | null;
|
|
45
47
|
resets_at: string | null;
|
|
46
48
|
cooldown_until: string | null;
|
|
47
49
|
}[];
|
|
48
|
-
source: "agy_command_usage" | "claude_api_retry" | "claude_oauth_usage" | "claude_statusline" | "codex_app_server" | "codex_rollout" | "cursor_rate_limit";
|
|
50
|
+
source: "agy_command_usage" | "claude_api_retry" | "claude_oauth_usage" | "claude_rate_limit_event" | "claude_statusline" | "codex_app_server" | "codex_app_server_event" | "codex_rollout" | "cursor_rate_limit";
|
|
49
51
|
observed_at: string;
|
|
50
52
|
freshness: "fresh" | "stale" | "unknown";
|
|
53
|
+
snapshot_id?: string | undefined;
|
|
51
54
|
availability?: {
|
|
52
55
|
state: "available" | "cooldown" | "exhausted";
|
|
53
56
|
blocking_constraints: string[];
|
|
@@ -55,6 +58,7 @@ export declare class QuotaRegistry {
|
|
|
55
58
|
model_scoped_exhaustions: {
|
|
56
59
|
constraint_id: string;
|
|
57
60
|
applies_to_models: string[];
|
|
61
|
+
applies_to_model_prefixes?: string[] | undefined;
|
|
58
62
|
resets_at: string | null;
|
|
59
63
|
}[];
|
|
60
64
|
} | undefined;
|
|
@@ -74,13 +78,15 @@ export declare class QuotaRegistry {
|
|
|
74
78
|
refreshed_at: string | null;
|
|
75
79
|
refresh_skipped?: {
|
|
76
80
|
vendor: string;
|
|
81
|
+
subject?: {
|
|
82
|
+
harness: string;
|
|
83
|
+
credential_route: "local" | "managed_api_key" | "vendor_native";
|
|
84
|
+
plan_label: string | null;
|
|
85
|
+
subject_id: string | null;
|
|
86
|
+
} | undefined;
|
|
77
87
|
not_before: string;
|
|
78
88
|
}[] | undefined;
|
|
79
89
|
};
|
|
80
|
-
/** Freshness-annotated snapshots with expired (>24h) observations pruned.
|
|
81
|
-
* An old observation whose constraint still EXTENDS into the future (a
|
|
82
|
-
* weekly cooldown/reset seen once) is kept and stale-marked: pruning it
|
|
83
|
-
* would hide a live cap from both the footer and the router's ledger. */
|
|
84
90
|
private activeSnapshots;
|
|
85
91
|
refresh(): Promise<{
|
|
86
92
|
snapshots: {
|
|
@@ -94,15 +100,17 @@ export declare class QuotaRegistry {
|
|
|
94
100
|
id: string;
|
|
95
101
|
label: string;
|
|
96
102
|
applies_to_models?: string[] | null | undefined;
|
|
103
|
+
applies_to_model_prefixes?: string[] | undefined;
|
|
97
104
|
applies_to_unspecified_model?: boolean | undefined;
|
|
98
105
|
used_ratio: number | null;
|
|
99
106
|
window_seconds: number | null;
|
|
100
107
|
resets_at: string | null;
|
|
101
108
|
cooldown_until: string | null;
|
|
102
109
|
}[];
|
|
103
|
-
source: "agy_command_usage" | "claude_api_retry" | "claude_oauth_usage" | "claude_statusline" | "codex_app_server" | "codex_rollout" | "cursor_rate_limit";
|
|
110
|
+
source: "agy_command_usage" | "claude_api_retry" | "claude_oauth_usage" | "claude_rate_limit_event" | "claude_statusline" | "codex_app_server" | "codex_app_server_event" | "codex_rollout" | "cursor_rate_limit";
|
|
104
111
|
observed_at: string;
|
|
105
112
|
freshness: "fresh" | "stale" | "unknown";
|
|
113
|
+
snapshot_id?: string | undefined;
|
|
106
114
|
availability?: {
|
|
107
115
|
state: "available" | "cooldown" | "exhausted";
|
|
108
116
|
blocking_constraints: string[];
|
|
@@ -110,6 +118,7 @@ export declare class QuotaRegistry {
|
|
|
110
118
|
model_scoped_exhaustions: {
|
|
111
119
|
constraint_id: string;
|
|
112
120
|
applies_to_models: string[];
|
|
121
|
+
applies_to_model_prefixes?: string[] | undefined;
|
|
113
122
|
resets_at: string | null;
|
|
114
123
|
}[];
|
|
115
124
|
} | undefined;
|
|
@@ -129,6 +138,12 @@ export declare class QuotaRegistry {
|
|
|
129
138
|
refreshed_at: string | null;
|
|
130
139
|
refresh_skipped?: {
|
|
131
140
|
vendor: string;
|
|
141
|
+
subject?: {
|
|
142
|
+
harness: string;
|
|
143
|
+
credential_route: "local" | "managed_api_key" | "vendor_native";
|
|
144
|
+
plan_label: string | null;
|
|
145
|
+
subject_id: string | null;
|
|
146
|
+
} | undefined;
|
|
132
147
|
not_before: string;
|
|
133
148
|
}[] | undefined;
|
|
134
149
|
}>;
|
|
@@ -148,15 +163,17 @@ export declare class QuotaRegistry {
|
|
|
148
163
|
id: string;
|
|
149
164
|
label: string;
|
|
150
165
|
applies_to_models?: string[] | null | undefined;
|
|
166
|
+
applies_to_model_prefixes?: string[] | undefined;
|
|
151
167
|
applies_to_unspecified_model?: boolean | undefined;
|
|
152
168
|
used_ratio: number | null;
|
|
153
169
|
window_seconds: number | null;
|
|
154
170
|
resets_at: string | null;
|
|
155
171
|
cooldown_until: string | null;
|
|
156
172
|
}[];
|
|
157
|
-
source: "agy_command_usage" | "claude_api_retry" | "claude_oauth_usage" | "claude_statusline" | "codex_app_server" | "codex_rollout" | "cursor_rate_limit";
|
|
173
|
+
source: "agy_command_usage" | "claude_api_retry" | "claude_oauth_usage" | "claude_rate_limit_event" | "claude_statusline" | "codex_app_server" | "codex_app_server_event" | "codex_rollout" | "cursor_rate_limit";
|
|
158
174
|
observed_at: string;
|
|
159
175
|
freshness: "fresh" | "stale" | "unknown";
|
|
176
|
+
snapshot_id?: string | undefined;
|
|
160
177
|
availability?: {
|
|
161
178
|
state: "available" | "cooldown" | "exhausted";
|
|
162
179
|
blocking_constraints: string[];
|
|
@@ -164,6 +181,7 @@ export declare class QuotaRegistry {
|
|
|
164
181
|
model_scoped_exhaustions: {
|
|
165
182
|
constraint_id: string;
|
|
166
183
|
applies_to_models: string[];
|
|
184
|
+
applies_to_model_prefixes?: string[] | undefined;
|
|
167
185
|
resets_at: string | null;
|
|
168
186
|
}[];
|
|
169
187
|
} | undefined;
|
|
@@ -183,6 +201,12 @@ export declare class QuotaRegistry {
|
|
|
183
201
|
refreshed_at: string | null;
|
|
184
202
|
refresh_skipped?: {
|
|
185
203
|
vendor: string;
|
|
204
|
+
subject?: {
|
|
205
|
+
harness: string;
|
|
206
|
+
credential_route: "local" | "managed_api_key" | "vendor_native";
|
|
207
|
+
plan_label: string | null;
|
|
208
|
+
subject_id: string | null;
|
|
209
|
+
} | undefined;
|
|
186
210
|
not_before: string;
|
|
187
211
|
}[] | undefined;
|
|
188
212
|
};
|
|
@@ -238,6 +262,7 @@ export declare class QuotaRegistry {
|
|
|
238
262
|
validateProjection(): void;
|
|
239
263
|
private upsertCooldown;
|
|
240
264
|
private apply;
|
|
265
|
+
private applyWindowSupersession;
|
|
241
266
|
private remove;
|
|
242
267
|
}
|
|
243
268
|
//# sourceMappingURL=quota-registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-registry.d.ts","sourceRoot":"","sources":["../src/quota-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,
|
|
1
|
+
{"version":3,"file":"quota-registry.d.ts","sourceRoot":"","sources":["../src/quota-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAYL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAU3B,OAAO,EAWL,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAE1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAmBlE;;iDAEiD;AACjD,MAAM,MAAM,oBAAoB,GAAG,MAAM,YAAY,EAAE,CAAC;AAExD,iEAAiE;AACjE,qBAAa,aAAa;IAmBtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IArB5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAC9D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA8C;IAChF;;iDAE6C;IAC7C,OAAO,CAAC,QAAQ,CAAsB;IACtC;;gDAE4C;IAC5C,OAAO,CAAC,gCAAgC,CAAuB;IAC/D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAE/B;IACJ,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,qBAAqB,CAAS;IAEtC,YACmB,OAAO,EAAE,cAAc,EACxC,UAAU,GAAE,SAAS,CAAC,cAAc,GAAG,oBAAoB,CAAC,EAAO,EAClD,GAAG,GAAE,MAAM,IAAuB,EAClC,QAAQ,CAAC,EAAE,oBAAoB,YAAA,EAChD,UAAU,CAAC,EAAE,oBAAoB,EAmFlC;IAED,iFAAiF;IACjF,mBAAmB,IAAI,IAAI,CAI1B;IAED,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAOH;IAED,OAAO,CAAC,eAAe;IAIjB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAEZ;IAED;;8EAE0E;IACpE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAGtB;IAED;;;;;;mDAM+C;YACjC,YAAY;YAcZ,mBAAmB;IA4FjC;;;;;;;;;;;0DAWsD;IACtD,OAAO,CAAC,iBAAiB;IAyCzB;;8DAE0D;IAC1D,OAAO,CAAC,cAAc;IAatB;;;;2DAIuD;IACvD,oBAAoB,IAAI,IAAI,CAG3B;IAED;;;4EAGwE;IACxE,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAuB5B;IAED,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CA2B9C;IAED,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAUjC;IAED,OAAO,CAAC,YAAY;IA0BpB;;6EAEyE;IACzE,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAW/D;IAED,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,8BAA8B;IAOtC,OAAO,CAAC,mBAAmB;IAS3B,kBAAkB,IAAI,IAAI,CAEzB;IAED,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,MAAM;CAcf"}
|