@claudexor/budget 3.1.0 → 3.1.1
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/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/router.d.ts +9 -2
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +27 -5
- package/dist/router.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from "./ledger.js";
|
|
2
2
|
export * from "./router.js";
|
|
3
3
|
export * from "./observe.js";
|
|
4
|
-
export { loadHarnessMetrics, recordHarnessMetric
|
|
4
|
+
export { loadHarnessMetrics, recordHarnessMetric } from "./metrics.js";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from "./ledger.js";
|
|
2
2
|
export * from "./router.js";
|
|
3
3
|
export * from "./observe.js";
|
|
4
|
-
export { loadHarnessMetrics, recordHarnessMetric
|
|
4
|
+
export { loadHarnessMetrics, recordHarnessMetric } from "./metrics.js";
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/router.d.ts
CHANGED
|
@@ -45,12 +45,19 @@ export interface RouteContext {
|
|
|
45
45
|
intent: Intent;
|
|
46
46
|
qualityTiers: QualityTierSet;
|
|
47
47
|
ledger: BudgetLedger;
|
|
48
|
+
/**
|
|
49
|
+
* The instant EVERY clock-dependent axis is evaluated at (cooldown expiry and
|
|
50
|
+
* quota pace slack). Optional: each entry point pins one `Date.now()` for the
|
|
51
|
+
* whole call when it is absent. A caller that ranks a pool and then explains
|
|
52
|
+
* the SAME pool must pass a pinned instant so both passes read one clock.
|
|
53
|
+
*/
|
|
54
|
+
now?: number;
|
|
48
55
|
}
|
|
49
56
|
export declare class RoutingPreflightError extends Error {
|
|
50
57
|
readonly code = "routing_preflight_refused";
|
|
51
58
|
}
|
|
52
59
|
/** Order candidates transparently; lower tuple values win. Unknown quota remains eligible. */
|
|
53
|
-
export declare function rankHarnesses(candidates: RouterCandidate[],
|
|
60
|
+
export declare function rankHarnesses(candidates: RouterCandidate[], context: RouteContext): RouterCandidate[];
|
|
54
61
|
export declare function selectHarness(candidates: RouterCandidate[], ctx: RouteContext): RouterCandidate | null;
|
|
55
62
|
/**
|
|
56
63
|
* Explain a ranking as a typed record (QA-034): the per-candidate billing/cost
|
|
@@ -60,5 +67,5 @@ export declare function selectHarness(candidates: RouterCandidate[], ctx: RouteC
|
|
|
60
67
|
* The shape is the schema-owned RouteRankingRationale (snake_case) so it can be
|
|
61
68
|
* persisted verbatim as RunTelemetry.routing_rationale.
|
|
62
69
|
*/
|
|
63
|
-
export declare function explainRanking(candidates: RouterCandidate[],
|
|
70
|
+
export declare function explainRanking(candidates: RouterCandidate[], context: RouteContext): RouteRankingRationale;
|
|
64
71
|
//# sourceMappingURL=router.d.ts.map
|
package/dist/router.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,MAAM,EACN,YAAY,EACZ,cAAc,EAEd,qBAAqB,EAErB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,gBAAgB,CAAC;CAChC;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,iBAAiB,GAAG,gBAAgB,CAM1F;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;iFAG6E;IAC7E,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;qEAGiE;IACjE,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,cAAc,CAAC;IAC7B,MAAM,EAAE,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,MAAM,EACN,YAAY,EACZ,cAAc,EAEd,qBAAqB,EAErB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,gBAAgB,CAAC;CAChC;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,iBAAiB,GAAG,gBAAgB,CAM1F;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;iFAG6E;IAC7E,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;qEAGiE;IACjE,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,cAAc,CAAC;IAC7B,MAAM,EAAE,YAAY,CAAC;IACrB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,+BAA+B;CAC7C;AAkHD,8FAA8F;AAC9F,wBAAgB,aAAa,CAC3B,UAAU,EAAE,eAAe,EAAE,EAC7B,OAAO,EAAE,YAAY,GACpB,eAAe,EAAE,CAwBnB;AAED,wBAAgB,aAAa,CAC3B,UAAU,EAAE,eAAe,EAAE,EAC7B,GAAG,EAAE,YAAY,GAChB,eAAe,GAAG,IAAI,CAExB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,eAAe,EAAE,EAC7B,OAAO,EAAE,YAAY,GACpB,qBAAqB,CAgBvB"}
|
package/dist/router.js
CHANGED
|
@@ -33,9 +33,20 @@ function effectiveBilling(candidate) {
|
|
|
33
33
|
function isIncrementalPaid(candidate) {
|
|
34
34
|
return !["proven_zero", "subscription_entitlement"].includes(effectiveBilling(candidate));
|
|
35
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Pin ONE evaluation instant for a whole ranking pass. Reading the clock again
|
|
38
|
+
* per candidate makes the comparator time-varying: two candidates carrying
|
|
39
|
+
* IDENTICAL quota observations get slacks that differ by whatever milliseconds
|
|
40
|
+
* elapsed between the two reads, so a pool nothing actually separates is
|
|
41
|
+
* ordered by scheduler jitter and reports `expiring_quota_slack` instead of the
|
|
42
|
+
* honest `declared_order`. The pin is what makes equal inputs compare equal.
|
|
43
|
+
*/
|
|
44
|
+
function pinInstant(ctx) {
|
|
45
|
+
return ctx.now === undefined ? { ...ctx, now: Date.now() } : ctx;
|
|
46
|
+
}
|
|
36
47
|
function eligible(candidates, ctx) {
|
|
37
48
|
const ready = candidates.filter((candidate) => candidate.available &&
|
|
38
|
-
!ctx.ledger.cooldownActive(candidate.harnessId, candidate.credentialRoute, candidate.credentialSubjectId));
|
|
49
|
+
!ctx.ledger.cooldownActive(candidate.harnessId, candidate.credentialRoute, candidate.credentialSubjectId, ctx.now));
|
|
39
50
|
const free = ready.filter((candidate) => !isIncrementalPaid(candidate));
|
|
40
51
|
if (ctx.paidFallback === "never")
|
|
41
52
|
return free;
|
|
@@ -48,9 +59,11 @@ function eligible(candidates, ctx) {
|
|
|
48
59
|
function tierValueOf(candidate, ctx) {
|
|
49
60
|
return tierIndex(candidate, ctx) ?? Number.MAX_SAFE_INTEGER;
|
|
50
61
|
}
|
|
51
|
-
/** Binding pace slack the `auto` comparator orders by; null = none observed.
|
|
62
|
+
/** Binding pace slack the `auto` comparator orders by; null = none observed.
|
|
63
|
+
* Evaluated at the pass-wide pinned instant (`ctx.now`) — never at a freshly
|
|
64
|
+
* read clock, which would make two identical quota states differ. */
|
|
52
65
|
function autoSlack(candidate, ctx) {
|
|
53
|
-
return ctx.ledger.bindingPaceSlack(candidate.harnessId, candidate.credentialRoute, candidate.credentialSubjectId);
|
|
66
|
+
return ctx.ledger.bindingPaceSlack(candidate.harnessId, candidate.credentialRoute, candidate.credentialSubjectId, ctx.now);
|
|
54
67
|
}
|
|
55
68
|
/** null slack collapses to this so a slack-carrying candidate always outranks a
|
|
56
69
|
* slack-less one, exactly as the comparator subtraction does. */
|
|
@@ -69,6 +82,11 @@ const AUTO_SLACK_ABSENT = Number.NEGATIVE_INFINITY;
|
|
|
69
82
|
* two EQUAL non-null slacks yield order 0 and a null axis (declared order, and
|
|
70
83
|
* the sort does NOT fall through to tiers). Only when BOTH slacks are absent
|
|
71
84
|
* does the comparator compare tier indices.
|
|
85
|
+
*
|
|
86
|
+
* Both slacks are read at the pass-wide pinned instant (`ctx.now`), so the
|
|
87
|
+
* subtraction compares two quota states and nothing else. Re-reading the clock
|
|
88
|
+
* per candidate made the comparator time-varying and broke exactly the
|
|
89
|
+
* guarantee above: equal quota states produced a non-zero order.
|
|
72
90
|
*/
|
|
73
91
|
function compareAutoTraced(a, b, ctx) {
|
|
74
92
|
const aSlack = autoSlack(a, ctx);
|
|
@@ -81,7 +99,8 @@ function compareAutoTraced(a, b, ctx) {
|
|
|
81
99
|
return { order, axis: order !== 0 ? "quality_tier" : null };
|
|
82
100
|
}
|
|
83
101
|
/** Order candidates transparently; lower tuple values win. Unknown quota remains eligible. */
|
|
84
|
-
export function rankHarnesses(candidates,
|
|
102
|
+
export function rankHarnesses(candidates, context) {
|
|
103
|
+
const ctx = pinInstant(context);
|
|
85
104
|
const routes = eligible(candidates, ctx);
|
|
86
105
|
if (ctx.goal === "quality" && routes.every((candidate) => tierIndex(candidate, ctx) === null)) {
|
|
87
106
|
throw new RoutingPreflightError(`quality routing requires a comparable user-declared tier for intent '${ctx.intent}'`);
|
|
@@ -116,7 +135,10 @@ export function selectHarness(candidates, ctx) {
|
|
|
116
135
|
* The shape is the schema-owned RouteRankingRationale (snake_case) so it can be
|
|
117
136
|
* persisted verbatim as RunTelemetry.routing_rationale.
|
|
118
137
|
*/
|
|
119
|
-
export function explainRanking(candidates,
|
|
138
|
+
export function explainRanking(candidates, context) {
|
|
139
|
+
// ONE instant for both passes: the sort and the reason walk must read the same
|
|
140
|
+
// clock, or the recorded rationale can disagree with the order it explains.
|
|
141
|
+
const ctx = pinInstant(context);
|
|
120
142
|
const rankedCandidates = rankHarnesses(candidates, ctx);
|
|
121
143
|
const order = rankedCandidates.map((c) => c.harnessId);
|
|
122
144
|
const eligibleIds = new Set(order);
|
package/dist/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AA4BA;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAAC,QAA2B;IACtE,IAAI,QAAQ,CAAC,KAAK,KAAK,iBAAiB;QAAE,OAAO,SAAS,CAAC;IAC3D,IAAI,QAAQ,CAAC,KAAK,KAAK,eAAe,IAAI,QAAQ,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC7E,OAAO,0BAA0B,CAAC;IACpC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claudexor/budget",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Budget governor: pre-call leases, circuit breaker, evidence-based routing goals, and multi-window quota pacing.",
|
|
6
6
|
"type": "module",
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"dist"
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@claudexor/
|
|
20
|
-
"@claudexor/
|
|
19
|
+
"@claudexor/schema": "3.1.1",
|
|
20
|
+
"@claudexor/util": "3.1.1"
|
|
21
21
|
},
|
|
22
22
|
"repository": {
|
|
23
23
|
"type": "git",
|