audit-tools 0.33.7 → 0.33.10
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/audit/orchestrator/rollingDispatch.js +1 -1
- package/dist/audit/orchestrator/rollingDispatch.js.map +1 -1
- package/dist/remediate/steps/nextStep.js +1 -1
- package/dist/remediate/steps/nextStep.js.map +1 -1
- package/dist/shared/dispatch/admissionLeaseReconcile.js +1 -1
- package/dist/shared/dispatch/admissionLeaseReconcile.js.map +1 -1
- package/dist/shared/dispatch/admissionLoop.d.ts +42 -10
- package/dist/shared/dispatch/admissionLoop.d.ts.map +1 -1
- package/dist/shared/dispatch/admissionLoop.js +74 -7
- package/dist/shared/dispatch/admissionLoop.js.map +1 -1
- package/dist/shared/dispatch/dispatchQuotaContract.d.ts +82 -7
- package/dist/shared/dispatch/dispatchQuotaContract.d.ts.map +1 -1
- package/dist/shared/dispatch/hostDispatchWall.d.ts.map +1 -1
- package/dist/shared/dispatch/hostDispatchWall.js +8 -0
- package/dist/shared/dispatch/hostDispatchWall.js.map +1 -1
- package/dist/shared/dispatch/rollingDispatch.d.ts +17 -10
- package/dist/shared/dispatch/rollingDispatch.d.ts.map +1 -1
- package/dist/shared/dispatch/rollingDispatch.js +49 -33
- package/dist/shared/dispatch/rollingDispatch.js.map +1 -1
- package/dist/shared/dispatch/unifiedRolling.d.ts +3 -2
- package/dist/shared/dispatch/unifiedRolling.d.ts.map +1 -1
- package/dist/shared/dispatch/unifiedRolling.js +12 -4
- package/dist/shared/dispatch/unifiedRolling.js.map +1 -1
- package/dist/shared/index.d.ts +2 -2
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +5 -1
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/providers/auditorSources.js +16 -0
- package/dist/shared/providers/auditorSources.js.map +1 -1
- package/dist/shared/quota/accountId.d.ts +70 -0
- package/dist/shared/quota/accountId.d.ts.map +1 -1
- package/dist/shared/quota/accountId.js +82 -5
- package/dist/shared/quota/accountId.js.map +1 -1
- package/dist/shared/quota/apiPool.d.ts.map +1 -1
- package/dist/shared/quota/apiPool.js +12 -1
- package/dist/shared/quota/apiPool.js.map +1 -1
- package/dist/shared/quota/capacity.d.ts +82 -0
- package/dist/shared/quota/capacity.d.ts.map +1 -1
- package/dist/shared/quota/capacity.js +42 -1
- package/dist/shared/quota/capacity.js.map +1 -1
- package/dist/shared/quota/claudeOAuthQuotaSource.d.ts.map +1 -1
- package/dist/shared/quota/claudeOAuthQuotaSource.js +46 -8
- package/dist/shared/quota/claudeOAuthQuotaSource.js.map +1 -1
- package/dist/shared/quota/quotaSource.d.ts +73 -2
- package/dist/shared/quota/quotaSource.d.ts.map +1 -1
- package/dist/shared/quota/quotaSource.js +57 -2
- package/dist/shared/quota/quotaSource.js.map +1 -1
- package/dist/shared/quota/reservationLedger.d.ts +98 -26
- package/dist/shared/quota/reservationLedger.d.ts.map +1 -1
- package/dist/shared/quota/reservationLedger.js +109 -37
- package/dist/shared/quota/reservationLedger.js.map +1 -1
- package/dist/shared/quota/scheduler.d.ts +25 -1
- package/dist/shared/quota/scheduler.d.ts.map +1 -1
- package/dist/shared/quota/scheduler.js +115 -10
- package/dist/shared/quota/scheduler.js.map +1 -1
- package/dist/shared/quota/state.d.ts +24 -9
- package/dist/shared/quota/state.d.ts.map +1 -1
- package/dist/shared/quota/state.js +43 -16
- package/dist/shared/quota/state.js.map +1 -1
- package/dist/shared/quota/types.d.ts +57 -6
- package/dist/shared/quota/types.d.ts.map +1 -1
- package/dist/shared/quota/types.js.map +1 -1
- package/dist/shared/quota/windowConstraints.d.ts +56 -0
- package/dist/shared/quota/windowConstraints.d.ts.map +1 -0
- package/dist/shared/quota/windowConstraints.js +71 -0
- package/dist/shared/quota/windowConstraints.js.map +1 -0
- package/docs/audit-pkg/operator-guide.md +4 -1
- package/package.json +1 -1
|
@@ -110,6 +110,44 @@ function sumOutstanding(leases, now) {
|
|
|
110
110
|
}
|
|
111
111
|
return total;
|
|
112
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* How close a constraint came to blocking, as a dimensionless ratio of the draw to
|
|
115
|
+
* the room available for it. Comparable ACROSS windows that meter in different
|
|
116
|
+
* units, which raw headroom is not. Higher = tighter; > 1 means it blocked.
|
|
117
|
+
*/
|
|
118
|
+
function tightness(outcome) {
|
|
119
|
+
// Order matters. A zero-cost constraint ALWAYS clears — including on an exhausted
|
|
120
|
+
// window — so it must rank loosest, not tightest. Testing headroom first returned
|
|
121
|
+
// +Infinity for `cost 0, headroom 0` and let a constraint that cleared outrank one
|
|
122
|
+
// that actually blocked. With this order the invariant below is exact: cleared
|
|
123
|
+
// ⇒ tightness <= 1 (cost <= 0 ⇒ 0, else headroom >= cost ⇒ ratio <= 1), and
|
|
124
|
+
// blocked ⇒ > 1 or +Infinity.
|
|
125
|
+
if (outcome.cost <= 0)
|
|
126
|
+
return 0;
|
|
127
|
+
if (outcome.headroomBefore <= 0)
|
|
128
|
+
return Number.POSITIVE_INFINITY;
|
|
129
|
+
return outcome.cost / outcome.headroomBefore;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* The constraint closest to blocking — what a report should name as the binding
|
|
133
|
+
* window. Replaces the MIN-collapse that used to happen before the ledger was
|
|
134
|
+
* reached. Ranked by {@link tightness}, so the result does not depend on the order
|
|
135
|
+
* the caller listed the constraints in, and a blocked constraint always wins.
|
|
136
|
+
*/
|
|
137
|
+
function pickBinding(outcomes) {
|
|
138
|
+
if (outcomes.length === 0)
|
|
139
|
+
return null;
|
|
140
|
+
return outcomes.reduce((tightest, o) => {
|
|
141
|
+
const a = tightness(o);
|
|
142
|
+
const b = tightness(tightest);
|
|
143
|
+
if (a !== b)
|
|
144
|
+
return a > b ? o : tightest;
|
|
145
|
+
// Ties are reachable (two exhausted windows both score +Infinity; equal ratios).
|
|
146
|
+
// Break them on the key so the answer is a property of the ledger state, not of
|
|
147
|
+
// the order the caller happened to list the constraints in.
|
|
148
|
+
return o.resourceKey < tightest.resourceKey ? o : tightest;
|
|
149
|
+
});
|
|
150
|
+
}
|
|
113
151
|
/** Drop expired leases from every key, returning the trimmed map and how many were dropped. */
|
|
114
152
|
function pruneExpired(ledger, now) {
|
|
115
153
|
let dropped = 0;
|
|
@@ -147,65 +185,99 @@ export class ReservationLedger {
|
|
|
147
185
|
this.defaultTtlMs = defaultTtlMs;
|
|
148
186
|
}
|
|
149
187
|
/**
|
|
150
|
-
* Attempt to reserve
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
* (
|
|
155
|
-
* is
|
|
156
|
-
*
|
|
157
|
-
*
|
|
188
|
+
* Attempt to reserve against EVERY constraint that applies to this dispatch.
|
|
189
|
+
* Each is admitted iff `budget - Σ outstanding_leases(resourceKey) >= cost`, and
|
|
190
|
+
* the dispatch is admitted iff every one clears — **all-or-nothing**: either one
|
|
191
|
+
* lease id is recorded under each key, or nothing is written. A partial
|
|
192
|
+
* reservation (fits the account window, overruns its model window) is therefore
|
|
193
|
+
* unrepresentable, which is what makes `reconcile` by lease id total.
|
|
194
|
+
*
|
|
195
|
+
* The whole evaluation runs atomically under the lock, so concurrent admitters
|
|
196
|
+
* serialize and each sees the others' in-flight reservations across every key.
|
|
197
|
+
* A non-finite `budget` is unbounded (optimistic start — the reactive floor still
|
|
198
|
+
* corrects); a non-positive `cost` always clears its own constraint so completion
|
|
199
|
+
* still reconciles symmetrically. Every constraint is evaluated even after one
|
|
200
|
+
* blocks, so the explain record shows the full picture rather than the first
|
|
201
|
+
* failure.
|
|
202
|
+
*
|
|
203
|
+
* Two constraints on the same `resourceKey` accumulate within the attempt — the
|
|
204
|
+
* second sees the first's draw as outstanding — so a caller that supplies a key
|
|
205
|
+
* twice cannot double-spend one allowance.
|
|
158
206
|
*/
|
|
159
207
|
async admit(input) {
|
|
160
208
|
const ttl = input.leaseTtlMs ?? this.defaultTtlMs;
|
|
161
209
|
return withFileLock(this.lockPath, async () => {
|
|
162
210
|
const now = this.now();
|
|
163
211
|
const { ledger } = pruneExpired(await readLedger(this.ledgerPath), now);
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
const
|
|
167
|
-
const
|
|
168
|
-
|
|
212
|
+
// Draws already committed by EARLIER constraints in this same attempt, so a
|
|
213
|
+
// repeated resourceKey is metered once against its real allowance.
|
|
214
|
+
const pendingByKey = new Map();
|
|
215
|
+
const outcomes = [];
|
|
216
|
+
let anyOutstanding = false;
|
|
217
|
+
for (const constraint of input.constraints) {
|
|
218
|
+
const pending = pendingByKey.get(constraint.resourceKey) ?? 0;
|
|
219
|
+
const priorOutstanding = sumOutstanding(ledger[constraint.resourceKey], now);
|
|
220
|
+
if (priorOutstanding > 0)
|
|
221
|
+
anyOutstanding = true;
|
|
222
|
+
const outstandingBefore = priorOutstanding + pending;
|
|
223
|
+
const budget = Number.isFinite(constraint.budget) ? constraint.budget : Number.POSITIVE_INFINITY;
|
|
224
|
+
const headroomBefore = budget - outstandingBefore;
|
|
225
|
+
// Normalize ONCE: the value validated against headroom, accumulated for a
|
|
226
|
+
// repeated key, and persisted on the lease must be the same number. A
|
|
227
|
+
// negative cost reaching the lease would subtract from the key's outstanding
|
|
228
|
+
// total and manufacture headroom that does not exist for every peer.
|
|
229
|
+
const cost = Number.isFinite(constraint.cost) ? Math.max(0, constraint.cost) : 0;
|
|
230
|
+
outcomes.push({
|
|
231
|
+
resourceKey: constraint.resourceKey,
|
|
232
|
+
headroomBefore,
|
|
233
|
+
outstandingBefore,
|
|
234
|
+
cost,
|
|
235
|
+
cleared: cost <= 0 || headroomBefore >= cost,
|
|
236
|
+
});
|
|
237
|
+
pendingByKey.set(constraint.resourceKey, pending + cost);
|
|
238
|
+
}
|
|
239
|
+
const admitted = outcomes.every((o) => o.cleared);
|
|
240
|
+
const binding = pickBinding(outcomes);
|
|
169
241
|
if (!admitted) {
|
|
170
242
|
// Persist the prune even on a blocked admission so expired leases don't
|
|
171
243
|
// linger and depress headroom for the next attempt.
|
|
172
244
|
await writeLedger(this.ledgerPath, ledger);
|
|
173
|
-
return { admitted: false, leaseId: null,
|
|
245
|
+
return { admitted: false, leaseId: null, constraints: outcomes, binding, anyOutstanding };
|
|
174
246
|
}
|
|
175
247
|
const leaseId = mintLeaseId();
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
cost,
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
};
|
|
182
|
-
ledger[input.resourceKey] = [...(ledger[input.resourceKey] ?? []), lease];
|
|
248
|
+
const expiresAt = now + ttl;
|
|
249
|
+
for (const outcome of outcomes) {
|
|
250
|
+
const lease = { leaseId, cost: outcome.cost, poolId: input.poolId, expiresAt };
|
|
251
|
+
ledger[outcome.resourceKey] = [...(ledger[outcome.resourceKey] ?? []), lease];
|
|
252
|
+
}
|
|
183
253
|
await writeLedger(this.ledgerPath, ledger);
|
|
184
|
-
return { admitted: true, leaseId,
|
|
254
|
+
return { admitted: true, leaseId, constraints: outcomes, binding, anyOutstanding };
|
|
185
255
|
});
|
|
186
256
|
}
|
|
187
257
|
/**
|
|
188
258
|
* Free a reservation on completion (success OR failure — the request is no longer
|
|
189
|
-
* in flight either way). Token-checked by `leaseId
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
259
|
+
* in flight either way). Token-checked by `leaseId` and swept across EVERY key, so
|
|
260
|
+
* a multi-constraint reservation is released in full or not at all — the caller
|
|
261
|
+
* cannot leak one window's reservation by forgetting which keys it took. A no-op
|
|
262
|
+
* if the lease is already gone (expired / reconciled). Returns whether anything was
|
|
263
|
+
* removed. The lease's real cost surfaces in the provider's next quota snapshot;
|
|
264
|
+
* the ledger's job is only to stop reserving it.
|
|
193
265
|
*/
|
|
194
|
-
async reconcile(
|
|
266
|
+
async reconcile(leaseId) {
|
|
195
267
|
return withFileLock(this.lockPath, async () => {
|
|
196
268
|
const now = this.now();
|
|
197
269
|
const { ledger } = pruneExpired(await readLedger(this.ledgerPath), now);
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
270
|
+
let removed = false;
|
|
271
|
+
for (const [resourceKey, leases] of Object.entries(ledger)) {
|
|
272
|
+
const remaining = leases.filter((l) => l.leaseId !== leaseId);
|
|
273
|
+
if (remaining.length === leases.length)
|
|
274
|
+
continue;
|
|
275
|
+
removed = true;
|
|
276
|
+
if (remaining.length > 0)
|
|
277
|
+
ledger[resourceKey] = remaining;
|
|
278
|
+
else
|
|
279
|
+
delete ledger[resourceKey];
|
|
202
280
|
}
|
|
203
|
-
const remaining = leases.filter((l) => l.leaseId !== leaseId);
|
|
204
|
-
const removed = remaining.length !== leases.length;
|
|
205
|
-
if (remaining.length > 0)
|
|
206
|
-
ledger[resourceKey] = remaining;
|
|
207
|
-
else
|
|
208
|
-
delete ledger[resourceKey];
|
|
209
281
|
await writeLedger(this.ledgerPath, ledger);
|
|
210
282
|
return removed;
|
|
211
283
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reservationLedger.js","sourceRoot":"","sources":["../../../src/shared/quota/reservationLedger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,6EAA6E;AAC7E,+EAA+E;AAC/E,4EAA4E;AAC5E,mFAAmF;AACnF,mFAAmF;AACnF,mFAAmF;AACnF,mFAAmF;AACnF,mFAAmF;AACnF,gFAAgF;AAChF,EAAE;AACF,kFAAkF;AAClF,6EAA6E;AAC7E,oFAAoF;AACpF,mFAAmF;AACnF,kFAAkF;AAClF,gFAAgF;AAChF,iFAAiF;AACjF,EAAE;AACF,wEAAwE;AACxE,6EAA6E;AAC7E,gFAAgF;AAChF,6EAA6E;AAC7E,4EAA4E;AAC5E,8EAA8E;AAC9E,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,mEAAmE;AAEnE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"reservationLedger.js","sourceRoot":"","sources":["../../../src/shared/quota/reservationLedger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import type { ResolvedProviderName, SessionConfig } from "../types/sessionConfig.js";
|
|
3
3
|
import type { HostConcurrencyLimit, QuotaStateEntry, WaveSchedule } from "./types.js";
|
|
4
|
-
import type
|
|
4
|
+
import { type QuotaUsageSnapshot } from "./quotaSource.js";
|
|
5
5
|
import { type ProviderType } from "./limits.js";
|
|
6
6
|
/**
|
|
7
7
|
* Minimal structural shape of capabilities discovered at runtime — RPM/TPM (e.g.
|
|
@@ -255,6 +255,30 @@ export declare function deriveColdStartAdmissionBatch(params: {
|
|
|
255
255
|
perPacketTokenEstimate: number;
|
|
256
256
|
safetyFraction?: number;
|
|
257
257
|
}): number;
|
|
258
|
+
/**
|
|
259
|
+
* Every window on a snapshot must declare its metering scope. Unmeterable, NOT
|
|
260
|
+
* defaultable: the scope decides which partition the window's allowance is drawn
|
|
261
|
+
* from, so guessing it silently meters against the wrong one. The test tree is
|
|
262
|
+
* untypechecked, so a stale fixture can omit the field with `tsc` staying silent —
|
|
263
|
+
* defaulting would let that fixture pass while exercising the wrong partition,
|
|
264
|
+
* which is precisely how the previous defect stayed invisible.
|
|
265
|
+
*
|
|
266
|
+
* ⚠ Deliberately still called from `scheduleWave` ONLY, and NOT hoisted to the
|
|
267
|
+
* producer boundary, which the design of record scheduled for this step. That move
|
|
268
|
+
* turns out not to be mechanical: every production caller of `probeQuotaSource`
|
|
269
|
+
* swallows a throw into `status: "degraded"` (`apiPool.ts`'s `.catch`, and the
|
|
270
|
+
* `queryCurrentUsage` branch's own try), so asserting there would not fail loud — it
|
|
271
|
+
* would quietly convert a contract violation into a degraded pool. `compositeQuotaSource`
|
|
272
|
+
* bypasses `probeQuotaSource` entirely, so "safe by construction" would be false
|
|
273
|
+
* regardless. Doing it properly needs a distinct error class that the degrade
|
|
274
|
+
* catches deliberately re-throw. Tracked in `docs/backlog.md`.
|
|
275
|
+
*
|
|
276
|
+
* This is a LIVE path, so it must stay a throw: `scheduleWave` is where a scope-less
|
|
277
|
+
* window would actually mis-meter. Snapshots read back from PERSISTED artifacts are a
|
|
278
|
+
* different case and are handled by skipping, not throwing — see
|
|
279
|
+
* `quotaSnapshotWindowPctMap`.
|
|
280
|
+
*/
|
|
281
|
+
export declare function assertWindowScopes(snapshot: QuotaUsageSnapshot): void;
|
|
258
282
|
export declare function scheduleWave(options: ScheduleWaveOptions): WaveSchedule;
|
|
259
283
|
/**
|
|
260
284
|
* Build the quota pool key used for indexing quota-state.json entries and gating
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAe,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAGlG,OAAO,KAAK,EACV,oBAAoB,EAEpB,eAAe,EAGf,YAAY,
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { DispatchModelTierSchema } from "../types/stepContract.js";
|
|
3
|
+
import { hasWindowScope, windowSlopeKey, } from "./quotaSource.js";
|
|
3
4
|
import { hostClassFor, resolveLimits, } from "./limits.js";
|
|
4
5
|
/**
|
|
5
6
|
* One entry of the host's model roster, reported at the dispatch handshake
|
|
@@ -252,13 +253,46 @@ export function deriveColdStartAdmissionBatch(params) {
|
|
|
252
253
|
}
|
|
253
254
|
return COLD_START_PROBE_BATCH;
|
|
254
255
|
}
|
|
256
|
+
/**
|
|
257
|
+
* Every window on a snapshot must declare its metering scope. Unmeterable, NOT
|
|
258
|
+
* defaultable: the scope decides which partition the window's allowance is drawn
|
|
259
|
+
* from, so guessing it silently meters against the wrong one. The test tree is
|
|
260
|
+
* untypechecked, so a stale fixture can omit the field with `tsc` staying silent —
|
|
261
|
+
* defaulting would let that fixture pass while exercising the wrong partition,
|
|
262
|
+
* which is precisely how the previous defect stayed invisible.
|
|
263
|
+
*
|
|
264
|
+
* ⚠ Deliberately still called from `scheduleWave` ONLY, and NOT hoisted to the
|
|
265
|
+
* producer boundary, which the design of record scheduled for this step. That move
|
|
266
|
+
* turns out not to be mechanical: every production caller of `probeQuotaSource`
|
|
267
|
+
* swallows a throw into `status: "degraded"` (`apiPool.ts`'s `.catch`, and the
|
|
268
|
+
* `queryCurrentUsage` branch's own try), so asserting there would not fail loud — it
|
|
269
|
+
* would quietly convert a contract violation into a degraded pool. `compositeQuotaSource`
|
|
270
|
+
* bypasses `probeQuotaSource` entirely, so "safe by construction" would be false
|
|
271
|
+
* regardless. Doing it properly needs a distinct error class that the degrade
|
|
272
|
+
* catches deliberately re-throw. Tracked in `docs/backlog.md`.
|
|
273
|
+
*
|
|
274
|
+
* This is a LIVE path, so it must stay a throw: `scheduleWave` is where a scope-less
|
|
275
|
+
* window would actually mis-meter. Snapshots read back from PERSISTED artifacts are a
|
|
276
|
+
* different case and are handled by skipping, not throwing — see
|
|
277
|
+
* `quotaSnapshotWindowPctMap`.
|
|
278
|
+
*/
|
|
279
|
+
export function assertWindowScopes(snapshot) {
|
|
280
|
+
for (const w of snapshot.windows ?? []) {
|
|
281
|
+
if (!hasWindowScope(w)) {
|
|
282
|
+
throw new Error(`quota window "${w.label}" has no metering scope (got ${JSON.stringify(w.scope)}). ` +
|
|
283
|
+
`Every window must declare scope "account" or "model" at its producer — see ` +
|
|
284
|
+
`QuotaWindowScopeSchema in quotaSource.ts.`);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
255
288
|
/**
|
|
256
289
|
* Derive a single window's remaining token budget, in learned/absolute priority:
|
|
257
290
|
* 1. absolute `tokens_remaining` when the window reports one;
|
|
258
|
-
* 2. else the learned `tokens_per_pct[label]`
|
|
291
|
+
* 2. else the learned slope `tokens_per_pct[windowSlopeKey(scope, label)]`
|
|
292
|
+
* × remaining_pct × 100;
|
|
259
293
|
* 3. else `null` (cold start — the caller applies the calibration bootstrap).
|
|
260
294
|
*/
|
|
261
|
-
function deriveWindowTokenBudget(
|
|
295
|
+
function deriveWindowTokenBudget(slopeKey, remainingPct, tokensRemaining, learnedSlopes) {
|
|
262
296
|
if (typeof tokensRemaining === "number" && Number.isFinite(tokensRemaining)) {
|
|
263
297
|
return Math.max(0, tokensRemaining);
|
|
264
298
|
}
|
|
@@ -271,7 +305,7 @@ function deriveWindowTokenBudget(windowLabel, remainingPct, tokensRemaining, lea
|
|
|
271
305
|
if (remainingPct != null && Number.isFinite(remainingPct) && remainingPct <= 0) {
|
|
272
306
|
return 0;
|
|
273
307
|
}
|
|
274
|
-
const slope = learnedSlopes?.[
|
|
308
|
+
const slope = learnedSlopes?.[slopeKey];
|
|
275
309
|
if (typeof slope === "number" &&
|
|
276
310
|
Number.isFinite(slope) &&
|
|
277
311
|
slope > 0 &&
|
|
@@ -282,15 +316,16 @@ function deriveWindowTokenBudget(windowLabel, remainingPct, tokensRemaining, lea
|
|
|
282
316
|
return null;
|
|
283
317
|
}
|
|
284
318
|
/**
|
|
285
|
-
* Resolve the pool's remaining
|
|
286
|
-
*
|
|
287
|
-
*
|
|
288
|
-
*
|
|
319
|
+
* Resolve the pool's per-window remaining allowances from its snapshot, plus the MIN
|
|
320
|
+
* across them for reporting. Uses the per-window breakdown when present, else the
|
|
321
|
+
* flat top-level snapshot as a single implicit account-scoped window. Per-window:
|
|
322
|
+
* absolute → learned-slope → cold-start.
|
|
289
323
|
*/
|
|
290
324
|
function deriveTokenBudget(snapshot, learnedSlopes) {
|
|
291
325
|
const windows = snapshot.windows && snapshot.windows.length > 0
|
|
292
326
|
? snapshot.windows.map((w) => ({
|
|
293
327
|
label: w.label,
|
|
328
|
+
scope: w.scope,
|
|
294
329
|
remaining_pct: w.remaining_pct,
|
|
295
330
|
tokens_remaining: w.tokens_remaining ?? null,
|
|
296
331
|
reset_at: w.reset_at,
|
|
@@ -298,6 +333,13 @@ function deriveTokenBudget(snapshot, learnedSlopes) {
|
|
|
298
333
|
: [
|
|
299
334
|
{
|
|
300
335
|
label: "default",
|
|
336
|
+
// A source exposing ONE aggregate number is stating an account-wide
|
|
337
|
+
// allowance that applies to every model on the credential — the
|
|
338
|
+
// documented fallback, stated rather than assumed. Never `model`:
|
|
339
|
+
// that would give each of N siblings its own copy of one shared
|
|
340
|
+
// allowance, which is the N× over-admission this partition exists
|
|
341
|
+
// to close.
|
|
342
|
+
scope: "account",
|
|
301
343
|
remaining_pct: snapshot.remaining_pct,
|
|
302
344
|
tokens_remaining: snapshot.tokens_remaining,
|
|
303
345
|
reset_at: snapshot.reset_at,
|
|
@@ -307,12 +349,61 @@ function deriveTokenBudget(snapshot, learnedSlopes) {
|
|
|
307
349
|
let calibrating = false;
|
|
308
350
|
let exhaustedResetAt = null;
|
|
309
351
|
let bindingWindow = null;
|
|
352
|
+
const windowBudgets = [];
|
|
310
353
|
for (const w of windows) {
|
|
311
|
-
const
|
|
354
|
+
const slopeKey = windowSlopeKey(w.scope, w.label);
|
|
355
|
+
const windowBudget = deriveWindowTokenBudget(slopeKey, w.remaining_pct, w.tokens_remaining, learnedSlopes);
|
|
312
356
|
if (windowBudget == null) {
|
|
313
357
|
calibrating = true;
|
|
314
358
|
continue;
|
|
315
359
|
}
|
|
360
|
+
// Emit the window in the unit it can actually meter in. An absolute
|
|
361
|
+
// `tokens_remaining` is directly commensurable (no exchange rate), so it meters
|
|
362
|
+
// in tokens even when account-scoped. Otherwise the shared quantity is the
|
|
363
|
+
// window's PERCENT, priced through this pool's own learned slope — which is what
|
|
364
|
+
// lets N siblings draw on one account allowance at their own conversion rates.
|
|
365
|
+
if (typeof w.tokens_remaining === "number" && Number.isFinite(w.tokens_remaining)) {
|
|
366
|
+
windowBudgets.push({
|
|
367
|
+
scope: w.scope,
|
|
368
|
+
label: w.label,
|
|
369
|
+
budget: Math.max(0, w.tokens_remaining),
|
|
370
|
+
unit: "tokens",
|
|
371
|
+
reset_at: w.reset_at,
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
const slope = learnedSlopes?.[slopeKey];
|
|
376
|
+
if (typeof slope === "number" &&
|
|
377
|
+
Number.isFinite(slope) &&
|
|
378
|
+
slope > 0 &&
|
|
379
|
+
w.remaining_pct != null &&
|
|
380
|
+
Number.isFinite(w.remaining_pct)) {
|
|
381
|
+
windowBudgets.push({
|
|
382
|
+
scope: w.scope,
|
|
383
|
+
label: w.label,
|
|
384
|
+
budget: Math.max(0, w.remaining_pct * 100),
|
|
385
|
+
unit: "percent",
|
|
386
|
+
tokensPerPct: slope,
|
|
387
|
+
reset_at: w.reset_at,
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
// A window with a derivable TOKEN budget but no metering unit is only
|
|
392
|
+
// reachable via the `remaining_pct <= 0` known-empty branch, whose budget is
|
|
393
|
+
// 0. Emit it as an exhausted window so admission BLOCKS on it rather than
|
|
394
|
+
// dropping it from the constraint set (dropping = metering against fewer
|
|
395
|
+
// allowances than apply). The unit is immaterial at budget 0 — a zero ceiling
|
|
396
|
+
// refuses any positive draw either way — so it is emitted as `tokens`, which
|
|
397
|
+
// needs no slope.
|
|
398
|
+
windowBudgets.push({
|
|
399
|
+
scope: w.scope,
|
|
400
|
+
label: w.label,
|
|
401
|
+
budget: 0,
|
|
402
|
+
unit: "tokens",
|
|
403
|
+
reset_at: w.reset_at,
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
}
|
|
316
407
|
// A near-empty window needs no special-case cliff: its own budget
|
|
317
408
|
// (remaining_pct × slope, or an absolute tokens_remaining) is already tiny,
|
|
318
409
|
// so the MIN reduction and the K-clamp below throttle it naturally. A
|
|
@@ -331,7 +422,7 @@ function deriveTokenBudget(snapshot, learnedSlopes) {
|
|
|
331
422
|
bindingWindow = { label: w.label, reset_at: w.reset_at, budget: windowBudget };
|
|
332
423
|
}
|
|
333
424
|
}
|
|
334
|
-
return { budget, calibrating, exhaustedResetAt, bindingWindow };
|
|
425
|
+
return { budget, calibrating, exhaustedResetAt, bindingWindow, windowBudgets };
|
|
335
426
|
}
|
|
336
427
|
function sumTopN(sorted, n) {
|
|
337
428
|
let sum = 0;
|
|
@@ -455,11 +546,24 @@ export function scheduleWave(options) {
|
|
|
455
546
|
let calibrating = false;
|
|
456
547
|
// The binding window (D1), hoisted so an empty_grant wall can surface it + its reset.
|
|
457
548
|
let bindingWindow = null;
|
|
549
|
+
// Per-window allowances — the METERING basis admission reserves against. Empty on
|
|
550
|
+
// the cooldown path and when there is no snapshot, which admission reads as "no
|
|
551
|
+
// live signal" and falls back to one unbounded pool-keyed constraint.
|
|
552
|
+
let windowBudgets = [];
|
|
553
|
+
// Validate window scopes on EVERY path that carries a snapshot, not only the
|
|
554
|
+
// one that derives a budget. `deriveTokenBudget` is skipped under an active
|
|
555
|
+
// cooldown, but the snapshot is still stamped onto the returned schedule and
|
|
556
|
+
// flows downstream — so a guard living inside the derivation is not a gate at
|
|
557
|
+
// all for the cooldown path. An incomplete gate reads exactly like a working
|
|
558
|
+
// one, which is the failure shape this whole change exists to remove.
|
|
559
|
+
if (quotaSourceSnapshot)
|
|
560
|
+
assertWindowScopes(quotaSourceSnapshot);
|
|
458
561
|
if (quotaSourceSnapshot && !cooldownUntil) {
|
|
459
|
-
const { budget, calibrating: windowCalibrating, exhaustedResetAt, bindingWindow: windowBinding, } = deriveTokenBudget(quotaSourceSnapshot, quotaStateEntry?.tokens_per_pct);
|
|
562
|
+
const { budget, calibrating: windowCalibrating, exhaustedResetAt, bindingWindow: windowBinding, windowBudgets: derivedWindowBudgets, } = deriveTokenBudget(quotaSourceSnapshot, quotaStateEntry?.tokens_per_pct);
|
|
460
563
|
remainingTokenBudget = budget;
|
|
461
564
|
calibrating = windowCalibrating;
|
|
462
565
|
bindingWindow = windowBinding;
|
|
566
|
+
windowBudgets = derivedWindowBudgets;
|
|
463
567
|
if (budget === 0) {
|
|
464
568
|
// A genuinely empty window (remaining fraction 0 / absolute count 0):
|
|
465
569
|
// throttle to 1 and persist a cooldown to its reset so a later transiently
|
|
@@ -525,6 +629,7 @@ export function scheduleWave(options) {
|
|
|
525
629
|
binding_cap: bindingCap,
|
|
526
630
|
remaining_token_budget: remainingTokenBudget,
|
|
527
631
|
binding_window: bindingWindow,
|
|
632
|
+
window_budgets: windowBudgets,
|
|
528
633
|
in_flight_tokens: inFlightTokens,
|
|
529
634
|
calibrating,
|
|
530
635
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../../src/shared/quota/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAUnE,OAAO,EACL,YAAY,EACZ,aAAa,GAEd,MAAM,aAAa,CAAC;AA0BrB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC;KACxC,MAAM,CAAC;IACN,IAAI,EAAE,uBAAuB;IAC7B,oEAAoE;IACpE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,uDAAuD;IACvD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC;KACD,MAAM,EAAE,CAAC;AAGZ,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAS,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AAExE;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,qCAAqC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC9F,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,0BAA0B,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,KAAgC,CAAC;QACjF,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CACb,iBAAiB,KAAK,+CAA+C,CACtE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAK,cAAyB,IAAI,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,KAAK,CACb,iBAAiB,KAAK,8CAA8C,CACrE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAK,aAAwB,IAAI,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,KAAK,CACb,iBAAiB,KAAK,6CAA6C,CACpE,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAgC,CAAC;QACtD,IACE,QAAQ,KAAK,SAAS;YACtB,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,EAC9D,CAAC;YACD,MAAM,IAAI,KAAK,CACb,iBAAiB,KAAK,sDAAsD,CAC7E,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,IAAyB;YAC/B,cAAc,EAAE,cAAwB;YACxC,aAAa,EAAE,aAAuB;YACtC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAuBD,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,mCAAmC;AACnC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AACzC;;;;;;;GAOG;AACH,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC;;;;;;;;GAQG;AACH,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAqCjC;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,YAAkC;IAC5D,OAAO,YAAY,KAAK,aAAa,IAAI,YAAY,KAAK,aAAa,CAAC;AAC1E,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAC9B,YAAkC;IAElC,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACnD,OAAO;QACL,SAAS;QACT,yEAAyE;QACzE,6DAA6D;QAC7D,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,sBAAsB;QAC7E,eAAe,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,cAAc;KACjF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAgCjD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAgC;IAEhC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,+BAA+B,CAAC;IACrE,IAAI,KAAK,CAAC,cAAc,CAAC,eAAe,KAAK,sBAAsB,EAAE,CAAC;QACpE,OAAO;YACL,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,qEAAqE;SAC9E,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO;YACL,QAAQ,EAAE,WAAW;YACrB,MAAM,EAAE,6EAA6E;SACtF,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,iBAAiB,GAAG,SAAS,EAAE,CAAC;QACxC,OAAO;YACL,QAAQ,EAAE,WAAW;YACrB,MAAM,EAAE,aAAa,KAAK,CAAC,iBAAiB,2CAA2C,SAAS,2CAA2C;SAC5I,CAAC;IACJ,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,cAAc;QACxB,MAAM,EAAE,aAAa,KAAK,CAAC,iBAAiB,kBAAkB,SAAS,UAAU,KAAK,CAAC,KAAK,uEAAuE;KACpK,CAAC;AACJ,CAAC;AAGD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,6BAA6B,CAAC,MAI7C;IACC,MAAM,EAAE,eAAe,EAAE,sBAAsB,EAAE,cAAc,GAAG,qBAAqB,EAAE,GAAG,MAAM,CAAC;IACnG,IACE,eAAe,IAAI,IAAI;QACvB,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC;QAChC,eAAe,IAAI,CAAC;QACpB,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACvC,sBAAsB,GAAG,CAAC,EAC1B,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,GAAG,cAAc,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,SAAS,uBAAuB,CAC9B,WAAmB,EACnB,YAAuC,EACvC,eAA0C,EAC1C,aAAiD;IAEjD,IAAI,OAAO,eAAe,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC5E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IACtC,CAAC;IACD,gFAAgF;IAChF,+EAA+E;IAC/E,6EAA6E;IAC7E,0EAA0E;IAC1E,8EAA8E;IAC9E,wEAAwE;IACxE,IAAI,YAAY,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QAC/E,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC,WAAW,CAAC,CAAC;IAC3C,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtB,KAAK,GAAG,CAAC;QACT,YAAY,IAAI,IAAI;QACpB,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC7B,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAqBD;;;;;GAKG;AACH,SAAS,iBAAiB,CACxB,QAA4B,EAC5B,aAAiD;IAQjD,MAAM,OAAO,GACX,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAC7C,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,aAAa,EAAE,CAAC,CAAC,aAAa;YAC9B,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,IAAI,IAAI;YAC5C,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACrB,CAAC,CAAC;QACL,CAAC,CAAC;YACE;gBACE,KAAK,EAAE,SAAS;gBAChB,aAAa,EAAE,QAAQ,CAAC,aAAa;gBACrC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;gBAC3C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;aAC5B;SACF,CAAC;IAER,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,gBAAgB,GAAkB,IAAI,CAAC;IAC3C,IAAI,aAAa,GAA8B,IAAI,CAAC;IAEpD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,uBAAuB,CAC1C,CAAC,CAAC,KAAK,EACP,CAAC,CAAC,aAAa,EACf,CAAC,CAAC,gBAAgB,EAClB,aAAa,CACd,CAAC;QACF,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YACzB,WAAW,GAAG,IAAI,CAAC;YACnB,SAAS;QACX,CAAC;QACD,kEAAkE;QAClE,4EAA4E;QAC5E,sEAAsE;QACtE,+EAA+E;QAC/E,sCAAsC;QACtC,IAAI,YAAY,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAW,CAAC,CAAC,QAAQ,CAAC;YACjC,IAAI,gBAAgB,IAAI,IAAI,IAAI,KAAK,GAAG,gBAAgB,EAAE,CAAC;gBACzD,gBAAgB,GAAG,KAAK,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,kFAAkF;QAClF,+DAA+D;QAC/D,IAAI,MAAM,IAAI,IAAI,IAAI,YAAY,GAAG,MAAM,EAAE,CAAC;YAC5C,MAAM,GAAG,YAAY,CAAC;YACtB,aAAa,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QACjF,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,OAAO,CAAC,MAAgB,EAAE,CAAS;IAC1C,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;QAAE,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,GAAG,CAAC;AACb,CAAC;AAyBD,SAAS,uBAAuB,CAAC,KAAmC;IAClE,MAAM,EACJ,QAAQ,EAAE,WAAW,EACrB,MAAM,EACN,YAAY,EACZ,SAAS,EACT,WAAW,GACZ,GAAG,KAAK,CAAC;IACV,IAAI,OAAO,GAAG,WAAW,CAAC;IAC1B,IAAI,UAAU,GAAmB,MAAM,CAAC;IAExC,6BAA6B;IAC7B,IAAI,MAAM,CAAC,mBAAmB,IAAI,IAAI,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,GAAG,YAAY,CAAC,CAAC,CAAC;QAClF,IAAI,MAAM,GAAG,OAAO,EAAE,CAAC;YACrB,OAAO,GAAG,MAAM,CAAC;YACjB,UAAU,GAAG,KAAK,CAAC;QACrB,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,IAAI,MAAM,CAAC,uBAAuB,IAAI,IAAI,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,uBAAuB,GAAG,YAAY,CAAC;QAChE,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,IAAI,aAAa,GAAG,OAAO,CAAC;YAC5B,OAAO,aAAa,GAAG,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,SAAS,EAAE,CAAC;gBAC5E,aAAa,EAAE,CAAC;YAClB,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;YAC1C,IAAI,MAAM,GAAG,OAAO,EAAE,CAAC;gBACrB,OAAO,GAAG,MAAM,CAAC;gBACjB,UAAU,GAAG,KAAK,CAAC;YACrB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC;YAC9D,IAAI,MAAM,GAAG,OAAO,EAAE,CAAC;gBACrB,OAAO,GAAG,MAAM,CAAC;gBACjB,UAAU,GAAG,KAAK,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,4EAA4E;IAC5E,qEAAqE;IACrE,gFAAgF;IAChF,uEAAuE;IACvE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAA4B;IACvD,MAAM,EACJ,YAAY,EACZ,aAAa,EACb,SAAS,EACT,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,GAAG,IAAI,EACtB,oBAAoB,GAAG,IAAI,EAC3B,mBAAmB,GAAG,IAAI,EAC1B,gBAAgB,GAAG,IAAI,EACvB,cAAc,GAAG,CAAC,GACnB,GAAG,OAAO,CAAC;IACZ,qDAAqD;IACrD,MAAM,WAAW,GAAG,mBAAmB;QACrC,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,SAAS,GAAG,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QACrD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;QACzE,CAAC,CAAC,CAAC,CAAC;IAEN,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC;IAExC,MAAM,yBAAyB,GAAG,CAAC,QAAgB,EAAU,EAAE;QAC7D,IAAI,oBAAoB,KAAK,IAAI;YAAE,OAAO,QAAQ,CAAC;QACnD,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IACnE,CAAC,CAAC;IAEF,0EAA0E;IAC1E,2EAA2E;IAC3E,gFAAgF;IAChF,gFAAgF;IAChF,+EAA+E;IAC/E,8EAA8E;IAC9E,gDAAgD;IAEhD,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,IAAI,qBAAqB,CAAC;IAElE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAEnH,iFAAiF;IACjF,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,CAAC,mBAAmB,KAAK,gBAAgB,CAAC,mBAAmB,IAAI,IAAI,CAAC;QAC5E,MAAM,CAAC,uBAAuB,KAAK,gBAAgB,CAAC,uBAAuB,IAAI,IAAI,CAAC;QACpF,MAAM,CAAC,wBAAwB,KAAK,gBAAgB,CAAC,wBAAwB,IAAI,IAAI,CAAC;IACxF,CAAC;IAED,IAAI,aAAa,GAAkB,IAAI,CAAC;IAExC,oCAAoC;IACpC,IAAI,eAAe,EAAE,cAAc,EAAE,CAAC;QACpC,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1E,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAChC,aAAa,GAAG,eAAe,CAAC,cAAc,CAAC;QACjD,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,6EAA6E;IAC7E,6BAA6B;IAC7B,IAAI,QAAQ,GAAG,oBAAoB,CAAC;IACpC,IAAI,UAAU,GAAmB,MAAM,CAAC;IACxC,IAAI,aAAa,EAAE,CAAC;QAClB,QAAQ,GAAG,CAAC,CAAC;QACb,UAAU,GAAG,UAAU,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,uBAAuB,CAAC;YACvC,QAAQ;YACR,MAAM;YACN,YAAY;YACZ,SAAS;YACT,WAAW;SACZ,CAAC,CAAC;QACH,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;QACzB,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC;IACpC,CAAC;IAED,gFAAgF;IAChF,4EAA4E;IAC5E,8EAA8E;IAC9E,4EAA4E;IAC5E,gFAAgF;IAChF,6EAA6E;IAC7E,uDAAuD;IACvD,+EAA+E;IAC/E,iFAAiF;IACjF,gFAAgF;IAChF,8DAA8D;IAC9D,IAAI,oBAAoB,GAAkB,IAAI,CAAC;IAC/C,gFAAgF;IAChF,mFAAmF;IACnF,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,sFAAsF;IACtF,IAAI,aAAa,GAA8B,IAAI,CAAC;IACpD,IAAI,mBAAmB,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,EACJ,MAAM,EACN,WAAW,EAAE,iBAAiB,EAC9B,gBAAgB,EAChB,aAAa,EAAE,aAAa,GAC7B,GAAG,iBAAiB,CAAC,mBAAmB,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;QAC5E,oBAAoB,GAAG,MAAM,CAAC;QAC9B,WAAW,GAAG,iBAAiB,CAAC;QAChC,aAAa,GAAG,aAAa,CAAC;QAC9B,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACjB,sEAAsE;YACtE,2EAA2E;YAC3E,uEAAuE;YACvE,MAAM,YAAY,GAAG,QAAQ,CAAC;YAC9B,QAAQ,GAAG,CAAC,CAAC;YACb,aAAa,GAAG,gBAAgB,IAAI,mBAAmB,CAAC,QAAQ,IAAI,aAAa,CAAC;YAClF,IAAI,aAAa;gBAAE,UAAU,GAAG,UAAU,CAAC;iBACtC,IAAI,YAAY,GAAG,CAAC;gBAAE,UAAU,GAAG,cAAc,CAAC;QACzD,CAAC;aAAM,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,YAAY,GAAG,MAAM,GAAG,YAAY,CAAC;YAC3C,IAAI,CAAC,GAAG,QAAQ,CAAC;YACjB,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,cAAc,GAAG,YAAY;oBAAE,CAAC,EAAE,CAAC;YAC/E,CAAC;iBAAM,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gBACzB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,cAAc,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;YAC3E,CAAC;YACD,uEAAuE;YACvE,wEAAwE;YACxE,wEAAwE;YACxE,0EAA0E;YAC1E,sEAAsE;YACtE,gDAAgD;YAChD,IAAI,WAAW,EAAE,CAAC;gBAChB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC;YACjD,CAAC;YACD,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC;gBACjB,QAAQ,GAAG,CAAC,CAAC;gBACb,UAAU,GAAG,cAAc,CAAC;YAC9B,CAAC;QACH,CAAC;aAAM,IAAI,WAAW,EAAE,CAAC;YACvB,0EAA0E;YAC1E,qEAAqE;YACrE,kFAAkF;YAClF,IAAI,6BAA6B,GAAG,QAAQ,EAAE,CAAC;gBAC7C,QAAQ,GAAG,6BAA6B,CAAC;gBACzC,UAAU,GAAG,cAAc,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC;IAC/B,QAAQ,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,QAAQ,GAAG,aAAa;QAAE,UAAU,GAAG,kBAAkB,CAAC;IAC9D,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEjC,OAAO;QACL,cAAc,EAAE,QAAQ;QACxB,qBAAqB,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,SAAS;QAC1F,cAAc,EAAE,aAAa;QAC7B,UAAU;QACV,MAAM;QACN,eAAe,EAAE,MAAM;QACvB,sBAAsB,EAAE,oBAAoB;QAC5C,KAAK,EAAE,SAAS;QAChB,qBAAqB,EAAE,mBAAmB;QAC1C,WAAW,EAAE,UAAU;QACvB,sBAAsB,EAAE,oBAAoB;QAC5C,cAAc,EAAE,aAAa;QAC7B,gBAAgB,EAAE,cAAc;QAChC,WAAW;KACZ,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,YAAoB,EACpB,SAAoC,EACpC,OAAuB;IAEvB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;IACnE,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC;AAC1D,CAAC"}
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../../src/shared/quota/scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ObservedWaveOutcome, QuotaState } from "./types.js";
|
|
2
|
-
import type
|
|
2
|
+
import { type QuotaUsageSnapshot, type WindowSlopeKey } from "./quotaSource.js";
|
|
3
3
|
export declare function setQuotaStateDir(dir: string): void;
|
|
4
4
|
export declare function getQuotaStatePath(): string;
|
|
5
5
|
/**
|
|
@@ -91,7 +91,7 @@ export declare const MIN_SLOPE_DELTA_PERCENT = 0.5;
|
|
|
91
91
|
* positive (≥ {@link MIN_SLOPE_DELTA_PERCENT}), when tokens are non-positive, or
|
|
92
92
|
* when any input is non-finite. Never throws.
|
|
93
93
|
*/
|
|
94
|
-
export declare function foldTokensPerPctObservation(prior: Record<string, number> | undefined,
|
|
94
|
+
export declare function foldTokensPerPctObservation(prior: Record<string, number> | undefined, slopeKey: WindowSlopeKey, priorRemainingPct: number, newRemainingPct: number, tokensDispatched: number): Record<string, number>;
|
|
95
95
|
export declare const OUTPUT_RATIO_EWMA_ALPHA = 0.3;
|
|
96
96
|
/**
|
|
97
97
|
* Fold one output/input token-ratio observation into a lens's learned EWMA ratio,
|
|
@@ -121,7 +121,7 @@ export declare function recordOutputRatioObservation(providerModelKey: string, l
|
|
|
121
121
|
* rebuilt ({@link readQuotaStateForUpdate}); a transient-unreadable one rejects.
|
|
122
122
|
* An observation that doesn't move the slope leaves the file untouched-in-value.
|
|
123
123
|
*/
|
|
124
|
-
export declare function recordTokensPerPctObservation(providerModelKey: string,
|
|
124
|
+
export declare function recordTokensPerPctObservation(providerModelKey: string, slopeKey: WindowSlopeKey, priorRemainingPct: number, newRemainingPct: number, tokensDispatched: number): Promise<void>;
|
|
125
125
|
/**
|
|
126
126
|
* One window's remaining-percent reading paired with the `reset_at` identity
|
|
127
127
|
* it was read against, so two readings of the "same" label taken at different
|
|
@@ -134,16 +134,31 @@ export interface QuotaWindowPctReading {
|
|
|
134
134
|
resetAt: string | null;
|
|
135
135
|
}
|
|
136
136
|
/**
|
|
137
|
-
* Build a
|
|
138
|
-
* snapshot. Falls back to a single `"default"`
|
|
139
|
-
* per-window breakdown (single-window providers
|
|
140
|
-
*
|
|
137
|
+
* Build a {@link windowSlopeKey} → {@link QuotaWindowPctReading} map from a quota
|
|
138
|
+
* usage snapshot. Falls back to a single account-scoped `"default"` window when the
|
|
139
|
+
* source has no per-window breakdown (single-window providers — matching the
|
|
140
|
+
* synthetic window the scheduler derives for the same case). Returns an empty map
|
|
141
|
+
* for a null/absent snapshot or one with no usable percent reading.
|
|
142
|
+
*
|
|
143
|
+
* Keyed by `(scope, label)` so a slope sample is attributed to the same partition
|
|
144
|
+
* the budget will later be metered against — keying by bare label would blend an
|
|
145
|
+
* account-wide and a model-scoped window that happen to share a group name.
|
|
141
146
|
*
|
|
142
147
|
* Single-sourced so the in-process rolling dispatcher and the host-dispatch
|
|
143
148
|
* merge path attribute a slope sample against the SAME window semantics —
|
|
144
149
|
* see {@link foldSlopeObservationFromSnapshots}.
|
|
150
|
+
*
|
|
151
|
+
* ⚠ A window with no usable `scope` is SKIPPED (loudly), never keyed. This path is
|
|
152
|
+
* fed PERSISTED snapshots — `dispatch-quota.json` written before scope existed, read
|
|
153
|
+
* back raw with no schema parse — so scope-less windows are real on disk, not a
|
|
154
|
+
* hypothetical. Two rejected alternatives: keying them anyway produces
|
|
155
|
+
* `"undefined:<label>"`, which no reader ever looks up, so the slope is silently
|
|
156
|
+
* orphaned; and THROWING would break {@link foldSlopeObservationFromSnapshots}'s
|
|
157
|
+
* documented "never throws" contract and kill slope learning on any run resumed
|
|
158
|
+
* across the upgrade. Skipping costs one window's slope sample, says so, and lets
|
|
159
|
+
* the rest of the fold proceed.
|
|
145
160
|
*/
|
|
146
|
-
export declare function quotaSnapshotWindowPctMap(snapshot: QuotaUsageSnapshot | null | undefined): Map<
|
|
161
|
+
export declare function quotaSnapshotWindowPctMap(snapshot: QuotaUsageSnapshot | null | undefined): Map<WindowSlopeKey, QuotaWindowPctReading>;
|
|
147
162
|
/**
|
|
148
163
|
* Attribute tokens dispatched between a PRE and POST window-pct reading (as
|
|
149
164
|
* produced by {@link quotaSnapshotWindowPctMap}) to whichever windows moved
|
|
@@ -184,7 +199,7 @@ export declare function quotaSnapshotWindowPctMap(snapshot: QuotaUsageSnapshot |
|
|
|
184
199
|
* any fold (the in-process dispatcher) can tell whether one occurred without
|
|
185
200
|
* re-deriving the same comparison.
|
|
186
201
|
*/
|
|
187
|
-
export declare function foldSlopeObservationFromPctMaps(providerModelKey: string,
|
|
202
|
+
export declare function foldSlopeObservationFromPctMaps(providerModelKey: string, priorPctByKey: Map<WindowSlopeKey, QuotaWindowPctReading>, currentPctByKey: Map<WindowSlopeKey, QuotaWindowPctReading>, tokensDispatched: number): Promise<string[]>;
|
|
188
203
|
/**
|
|
189
204
|
* Snapshot-based convenience wrapper over {@link foldSlopeObservationFromPctMaps}:
|
|
190
205
|
* maps a PRE and POST {@link QuotaUsageSnapshot} through
|