llm-relay 0.22.0 → 0.24.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/backend.d.ts +12 -0
- package/dist/backend.js +12 -0
- package/dist/backend.js.map +1 -1
- package/dist/cli.d.ts +15 -0
- package/dist/cli.js +130 -5
- package/dist/cli.js.map +1 -1
- package/dist/context-limits.d.ts +47 -0
- package/dist/context-limits.js +155 -0
- package/dist/context-limits.js.map +1 -0
- package/dist/deployment-eligibility.d.ts +134 -0
- package/dist/deployment-eligibility.js +188 -0
- package/dist/deployment-eligibility.js.map +1 -0
- package/dist/dispatch.d.ts +27 -6
- package/dist/dispatch.js +25 -6
- package/dist/dispatch.js.map +1 -1
- package/dist/dynamic-pools.js +17 -0
- package/dist/dynamic-pools.js.map +1 -1
- package/dist/metadata.d.ts +8 -4
- package/dist/metadata.js +13 -4
- package/dist/metadata.js.map +1 -1
- package/dist/refusal-interpretation.d.ts +183 -0
- package/dist/refusal-interpretation.js +330 -0
- package/dist/refusal-interpretation.js.map +1 -0
- package/dist/routes/admin.js +2 -1
- package/dist/routes/admin.js.map +1 -1
- package/dist/server.d.ts +0 -17
- package/dist/server.js +221 -8
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
- package/skills/llm-relay/SKILL.md +9 -6
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deployment eligibility LEARNED from what a backend said when it refused to serve.
|
|
3
|
+
*
|
|
4
|
+
* Sibling of `context-limits.ts`, and built on the same rule: only an EXPLICITLY STATED fact is
|
|
5
|
+
* recorded. A bare 403 teaches nothing (it could be a revoked key, which is the credential axis's
|
|
6
|
+
* job); a 403 that says "this model requires a subscription" is the provider stating that this
|
|
7
|
+
* deployment is not included in the plan we hold.
|
|
8
|
+
*
|
|
9
|
+
* This module is the CONSEQUENCE half only. Deciding what a given refusal message means belongs to
|
|
10
|
+
* `refusal-interpretation.ts`, which answers it by deterministic lookup and queues anything it
|
|
11
|
+
* cannot answer for offline research. Nothing here interprets anything; it stores verdicts and
|
|
12
|
+
* reports what they imply for admission and ordering.
|
|
13
|
+
*
|
|
14
|
+
* Why this exists at all: `assessCost()` admits a model from a `tierType: "free"` provider with
|
|
15
|
+
* unpublished prices as free on the `provider-tier` basis. That is the right default — most free
|
|
16
|
+
* providers publish no prices — but it is an assumption about a ROSTER, and a roster contains
|
|
17
|
+
* subscription-gated SKUs and models that have been de-listed behind the scenes. Those are only
|
|
18
|
+
* ever discovered by asking. This store is where the answer goes so the next request does not have
|
|
19
|
+
* to ask again.
|
|
20
|
+
*
|
|
21
|
+
* ⚠ **The three classes are NOT interchangeable, and the distinction is the point.**
|
|
22
|
+
*
|
|
23
|
+
* not-servable — the deployment does not exist (404/400 "does not exist", "not found
|
|
24
|
+
* for account"). An EXISTENCE fact. Drop it from pool admission.
|
|
25
|
+
* subscription-required — it exists, but is not covered by the plan we hold (403 "requires a
|
|
26
|
+
* subscription"). A COST fact: it refutes the `provider-tier` free
|
|
27
|
+
* assessment for this one deployment. Drop it from FREE pool admission.
|
|
28
|
+
* allowance-exhausted — it exists AND it is free; the free allowance is spent until it
|
|
29
|
+
* refreshes (402 "you have depleted your monthly included credits").
|
|
30
|
+
* A TEMPORAL fact, and emphatically NOT a cost fact.
|
|
31
|
+
*
|
|
32
|
+
* **Never let `allowance-exhausted` mean "paid".** A free-tier account that has spent this
|
|
33
|
+
* period's credits is the single most common state of every provider this proxy fronts — it is the
|
|
34
|
+
* normal condition of a working free lane, not a discovery about its price. Reclassifying it as
|
|
35
|
+
* paid would evict the deployment from every free pool on a condition that clears by itself, and
|
|
36
|
+
* the eviction would outlive the exhaustion. So it is deliberately unreachable from the cost path:
|
|
37
|
+
* `isCostBlocked()` does not consider it, and only `cooldownUntil()` reports it — a demotion, on
|
|
38
|
+
* the same footing as a 429, that expires on its own and clears the moment anything succeeds.
|
|
39
|
+
*/
|
|
40
|
+
/** What a refusal proved about a deployment. See the header — these are not ranks of one scale. */
|
|
41
|
+
export type EligibilityClass = "not-servable" | "subscription-required" | "allowance-exhausted";
|
|
42
|
+
/**
|
|
43
|
+
* Whose fact it is.
|
|
44
|
+
*
|
|
45
|
+
* `deployment` — about this (provider, model) alone.
|
|
46
|
+
* `account` — about the credential, so every deployment on that provider shares it. Reserved
|
|
47
|
+
* for refusals that state an ACCOUNT-level condition ("you have depleted your
|
|
48
|
+
* monthly included credits" names a balance, not a model). This is what stops a
|
|
49
|
+
* pool holding six HuggingFace members from spending six round-trips to rediscover
|
|
50
|
+
* one balance — measured on this machine, `pool/xhigh`'s 15 members resolve to only
|
|
51
|
+
* four independent quota domains.
|
|
52
|
+
*/
|
|
53
|
+
export type EligibilityScope = "deployment" | "account";
|
|
54
|
+
/**
|
|
55
|
+
* How long each class is believed without re-checking.
|
|
56
|
+
*
|
|
57
|
+
* All three expire, because all three are reversible: a de-listed model can come back, a plan can
|
|
58
|
+
* be upgraded, and an allowance always refreshes. The spread reflects how fast each moves, and
|
|
59
|
+
* `allowance-exhausted` is deliberately the SHORTEST — HuggingFace's included credits are monthly,
|
|
60
|
+
* but cooling a whole provider for a month on one 402 would be catastrophic if the balance were
|
|
61
|
+
* topped up an hour later. One re-probe an hour costs one request and is self-correcting; it also
|
|
62
|
+
* matches the breaker's own `QUOTA_EXHAUSTED_COOLDOWN_MS`, so the two cannot disagree about when a
|
|
63
|
+
* quota-exhausted target is worth trying again.
|
|
64
|
+
*/
|
|
65
|
+
export declare const ELIGIBILITY_TTL_MS: Record<EligibilityClass, number>;
|
|
66
|
+
/**
|
|
67
|
+
* Record what a deployment stated about itself. A fresh observation always replaces an older one:
|
|
68
|
+
* the deployment is the authority, and one that changed its answer is telling us so.
|
|
69
|
+
*/
|
|
70
|
+
export declare function recordEligibility(provider: string, model: string, observation: {
|
|
71
|
+
class: EligibilityClass;
|
|
72
|
+
scope: EligibilityScope;
|
|
73
|
+
}, opts?: {
|
|
74
|
+
path?: string;
|
|
75
|
+
now?: number;
|
|
76
|
+
retryAfterMs?: number | null;
|
|
77
|
+
}): void;
|
|
78
|
+
/** The live observation covering a deployment (its own, else its provider's), or null. */
|
|
79
|
+
export declare function observedEligibility(provider: string, model: string | null | undefined, opts?: {
|
|
80
|
+
path?: string;
|
|
81
|
+
now?: number;
|
|
82
|
+
}): {
|
|
83
|
+
class: EligibilityClass;
|
|
84
|
+
scope: EligibilityScope;
|
|
85
|
+
} | null;
|
|
86
|
+
/**
|
|
87
|
+
* Has this deployment been PROVEN unfit for a free pool?
|
|
88
|
+
*
|
|
89
|
+
* ⚠ True only for `not-servable` and `subscription-required`. `allowance-exhausted` is
|
|
90
|
+
* deliberately absent and must stay absent — see the file header. A spent allowance says nothing
|
|
91
|
+
* about what the deployment costs, and evicting it from the pool would outlive the exhaustion that
|
|
92
|
+
* caused it.
|
|
93
|
+
*/
|
|
94
|
+
export declare function isCostBlocked(provider: string, model: string | null | undefined, opts?: {
|
|
95
|
+
path?: string;
|
|
96
|
+
now?: number;
|
|
97
|
+
}): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* When a temporarily-unavailable deployment is worth trying again, or null when nothing is cooling
|
|
100
|
+
* it. Only `allowance-exhausted` produces a cooldown — the other two classes are not cooling, they
|
|
101
|
+
* are excluded, and a caller that wants those wants `isCostBlocked`.
|
|
102
|
+
*/
|
|
103
|
+
export declare function cooldownUntil(provider: string, model: string | null | undefined, opts?: {
|
|
104
|
+
path?: string;
|
|
105
|
+
now?: number;
|
|
106
|
+
}): number | null;
|
|
107
|
+
/**
|
|
108
|
+
* A success clears what the deployment previously refused — including its ACCOUNT record.
|
|
109
|
+
*
|
|
110
|
+
* A served request is first-party proof that the credential has allowance right now, which is a
|
|
111
|
+
* strictly better signal than an hour-old 402 and covers the case that matters most: credits
|
|
112
|
+
* topped up, or the month rolled over, well before the TTL would have expired. Same contract as
|
|
113
|
+
* the breaker clearing a credential fault on success.
|
|
114
|
+
*/
|
|
115
|
+
export declare function clearEligibility(provider: string, model: string | null | undefined, opts?: {
|
|
116
|
+
path?: string;
|
|
117
|
+
}): void;
|
|
118
|
+
/** Every live observation, for `llm-relay eligibility`. Expired entries are omitted, not reported. */
|
|
119
|
+
export declare function allObservations(opts?: {
|
|
120
|
+
path?: string;
|
|
121
|
+
now?: number;
|
|
122
|
+
}): Array<{
|
|
123
|
+
key: string;
|
|
124
|
+
class: EligibilityClass;
|
|
125
|
+
scope: EligibilityScope;
|
|
126
|
+
at: number;
|
|
127
|
+
until: number;
|
|
128
|
+
}>;
|
|
129
|
+
/** Flush pending observations. Called on shutdown, like the other write-behind stores. */
|
|
130
|
+
export declare function flushEligibility(opts?: {
|
|
131
|
+
path?: string;
|
|
132
|
+
}): void;
|
|
133
|
+
/** Test seam: drop the in-memory store so a suite can point at a fresh path. */
|
|
134
|
+
export declare function resetEligibility(): void;
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { homedir, tmpdir } from "node:os";
|
|
4
|
+
import { WriteBehindTimer } from "./write-behind.js";
|
|
5
|
+
/**
|
|
6
|
+
* How long each class is believed without re-checking.
|
|
7
|
+
*
|
|
8
|
+
* All three expire, because all three are reversible: a de-listed model can come back, a plan can
|
|
9
|
+
* be upgraded, and an allowance always refreshes. The spread reflects how fast each moves, and
|
|
10
|
+
* `allowance-exhausted` is deliberately the SHORTEST — HuggingFace's included credits are monthly,
|
|
11
|
+
* but cooling a whole provider for a month on one 402 would be catastrophic if the balance were
|
|
12
|
+
* topped up an hour later. One re-probe an hour costs one request and is self-correcting; it also
|
|
13
|
+
* matches the breaker's own `QUOTA_EXHAUSTED_COOLDOWN_MS`, so the two cannot disagree about when a
|
|
14
|
+
* quota-exhausted target is worth trying again.
|
|
15
|
+
*/
|
|
16
|
+
export const ELIGIBILITY_TTL_MS = {
|
|
17
|
+
"not-servable": 6 * 60 * 60 * 1000,
|
|
18
|
+
"subscription-required": 24 * 60 * 60 * 1000,
|
|
19
|
+
"allowance-exhausted": 60 * 60 * 1000,
|
|
20
|
+
};
|
|
21
|
+
let _store = null;
|
|
22
|
+
let _path = null;
|
|
23
|
+
const writer = new WriteBehindTimer();
|
|
24
|
+
function defaultPath() {
|
|
25
|
+
// ⚠ Redirected under vitest for the same reason probe-cache and context-limits are: a test's
|
|
26
|
+
// synthetic refusal persisted here would evict a real deployment from the user's live pools.
|
|
27
|
+
if (process.env.VITEST !== undefined) {
|
|
28
|
+
return join(tmpdir(), `llm-relay-test-eligibility-${process.pid}.json`);
|
|
29
|
+
}
|
|
30
|
+
const xdg = process.env.XDG_CONFIG_HOME;
|
|
31
|
+
const baseDir = xdg && xdg.trim() ? join(xdg, "llm-relay") : join(homedir(), ".llm-relay");
|
|
32
|
+
return join(baseDir, "deployment-eligibility.json");
|
|
33
|
+
}
|
|
34
|
+
function deploymentKey(provider, model) {
|
|
35
|
+
return `${provider}/${model}`;
|
|
36
|
+
}
|
|
37
|
+
function accountKey(provider) {
|
|
38
|
+
return `${provider}/*`;
|
|
39
|
+
}
|
|
40
|
+
function load(path) {
|
|
41
|
+
if (_store && _path === path)
|
|
42
|
+
return _store;
|
|
43
|
+
_path = path;
|
|
44
|
+
try {
|
|
45
|
+
const parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
46
|
+
if (parsed && typeof parsed === "object" && parsed.observations && typeof parsed.observations === "object") {
|
|
47
|
+
_store = { version: 1, observations: parsed.observations };
|
|
48
|
+
return _store;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// Unreadable or corrupt: start clean. Everything here is a re-learnable optimization — the
|
|
53
|
+
// worst consequence of losing the file is one wasted round-trip per deployment.
|
|
54
|
+
}
|
|
55
|
+
_store = { version: 1, observations: {} };
|
|
56
|
+
return _store;
|
|
57
|
+
}
|
|
58
|
+
function persist(path) {
|
|
59
|
+
if (!_store)
|
|
60
|
+
return;
|
|
61
|
+
try {
|
|
62
|
+
mkdirSync(join(path, ".."), { recursive: true });
|
|
63
|
+
const tmp = `${path}.${process.pid}.tmp`;
|
|
64
|
+
writeFileSync(tmp, JSON.stringify(_store, null, 2) + "\n", "utf8");
|
|
65
|
+
renameSync(tmp, path);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// Same contract as every other store here: a full disk is a storage problem, never a request
|
|
69
|
+
// failure. The observation stays in memory for this process's lifetime.
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Record what a deployment stated about itself. A fresh observation always replaces an older one:
|
|
74
|
+
* the deployment is the authority, and one that changed its answer is telling us so.
|
|
75
|
+
*/
|
|
76
|
+
export function recordEligibility(provider, model, observation, opts = {}) {
|
|
77
|
+
const path = opts.path ?? defaultPath();
|
|
78
|
+
const store = load(path);
|
|
79
|
+
const now = opts.now ?? Date.now();
|
|
80
|
+
const key = observation.scope === "account" ? accountKey(provider) : deploymentKey(provider, model);
|
|
81
|
+
const stated = typeof opts.retryAfterMs === "number" && opts.retryAfterMs > 0 ? opts.retryAfterMs : null;
|
|
82
|
+
store.observations[key] = {
|
|
83
|
+
class: observation.class,
|
|
84
|
+
scope: observation.scope,
|
|
85
|
+
at: now,
|
|
86
|
+
// A vendor-stated reset beats our TTL, exactly as it does for the breaker's cooldown: the
|
|
87
|
+
// provider knows when its own allowance refreshes and we are guessing.
|
|
88
|
+
...(stated !== null ? { until: now + stated } : {}),
|
|
89
|
+
};
|
|
90
|
+
writer.touch(() => persist(path));
|
|
91
|
+
}
|
|
92
|
+
/** The live observation covering a deployment (its own, else its provider's), or null. */
|
|
93
|
+
export function observedEligibility(provider, model, opts = {}) {
|
|
94
|
+
const path = opts.path ?? defaultPath();
|
|
95
|
+
const store = load(path);
|
|
96
|
+
const now = opts.now ?? Date.now();
|
|
97
|
+
const keys = typeof model === "string" ? [deploymentKey(provider, model), accountKey(provider)] : [accountKey(provider)];
|
|
98
|
+
for (const key of keys) {
|
|
99
|
+
const hit = store.observations[key];
|
|
100
|
+
if (!hit)
|
|
101
|
+
continue;
|
|
102
|
+
const expiry = hit.until ?? hit.at + (ELIGIBILITY_TTL_MS[hit.class] ?? 0);
|
|
103
|
+
if (now >= expiry)
|
|
104
|
+
continue;
|
|
105
|
+
return { class: hit.class, scope: hit.scope };
|
|
106
|
+
}
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Has this deployment been PROVEN unfit for a free pool?
|
|
111
|
+
*
|
|
112
|
+
* ⚠ True only for `not-servable` and `subscription-required`. `allowance-exhausted` is
|
|
113
|
+
* deliberately absent and must stay absent — see the file header. A spent allowance says nothing
|
|
114
|
+
* about what the deployment costs, and evicting it from the pool would outlive the exhaustion that
|
|
115
|
+
* caused it.
|
|
116
|
+
*/
|
|
117
|
+
export function isCostBlocked(provider, model, opts = {}) {
|
|
118
|
+
const hit = observedEligibility(provider, model, opts);
|
|
119
|
+
return hit !== null && hit.class !== "allowance-exhausted";
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* When a temporarily-unavailable deployment is worth trying again, or null when nothing is cooling
|
|
123
|
+
* it. Only `allowance-exhausted` produces a cooldown — the other two classes are not cooling, they
|
|
124
|
+
* are excluded, and a caller that wants those wants `isCostBlocked`.
|
|
125
|
+
*/
|
|
126
|
+
export function cooldownUntil(provider, model, opts = {}) {
|
|
127
|
+
const path = opts.path ?? defaultPath();
|
|
128
|
+
const store = load(path);
|
|
129
|
+
const now = opts.now ?? Date.now();
|
|
130
|
+
const keys = typeof model === "string" ? [deploymentKey(provider, model), accountKey(provider)] : [accountKey(provider)];
|
|
131
|
+
for (const key of keys) {
|
|
132
|
+
const hit = store.observations[key];
|
|
133
|
+
if (!hit || hit.class !== "allowance-exhausted")
|
|
134
|
+
continue;
|
|
135
|
+
const expiry = hit.until ?? hit.at + ELIGIBILITY_TTL_MS[hit.class];
|
|
136
|
+
if (now < expiry)
|
|
137
|
+
return expiry;
|
|
138
|
+
}
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* A success clears what the deployment previously refused — including its ACCOUNT record.
|
|
143
|
+
*
|
|
144
|
+
* A served request is first-party proof that the credential has allowance right now, which is a
|
|
145
|
+
* strictly better signal than an hour-old 402 and covers the case that matters most: credits
|
|
146
|
+
* topped up, or the month rolled over, well before the TTL would have expired. Same contract as
|
|
147
|
+
* the breaker clearing a credential fault on success.
|
|
148
|
+
*/
|
|
149
|
+
export function clearEligibility(provider, model, opts = {}) {
|
|
150
|
+
const path = opts.path ?? defaultPath();
|
|
151
|
+
const store = load(path);
|
|
152
|
+
let changed = false;
|
|
153
|
+
for (const key of typeof model === "string" ? [deploymentKey(provider, model), accountKey(provider)] : [accountKey(provider)]) {
|
|
154
|
+
if (store.observations[key]) {
|
|
155
|
+
delete store.observations[key];
|
|
156
|
+
changed = true;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (changed)
|
|
160
|
+
writer.touch(() => persist(path));
|
|
161
|
+
}
|
|
162
|
+
/** Every live observation, for `llm-relay eligibility`. Expired entries are omitted, not reported. */
|
|
163
|
+
export function allObservations(opts = {}) {
|
|
164
|
+
const store = load(opts.path ?? defaultPath());
|
|
165
|
+
const now = opts.now ?? Date.now();
|
|
166
|
+
const out = [];
|
|
167
|
+
for (const [key, hit] of Object.entries(store.observations)) {
|
|
168
|
+
const until = hit.until ?? hit.at + (ELIGIBILITY_TTL_MS[hit.class] ?? 0);
|
|
169
|
+
if (now >= until)
|
|
170
|
+
continue;
|
|
171
|
+
out.push({ key, class: hit.class, scope: hit.scope, at: hit.at, until });
|
|
172
|
+
}
|
|
173
|
+
return out.sort((a, b) => b.at - a.at);
|
|
174
|
+
}
|
|
175
|
+
/** Flush pending observations. Called on shutdown, like the other write-behind stores. */
|
|
176
|
+
export function flushEligibility(opts = {}) {
|
|
177
|
+
if (!writer.dirty)
|
|
178
|
+
return;
|
|
179
|
+
writer.clear();
|
|
180
|
+
persist(opts.path ?? defaultPath());
|
|
181
|
+
}
|
|
182
|
+
/** Test seam: drop the in-memory store so a suite can point at a fresh path. */
|
|
183
|
+
export function resetEligibility() {
|
|
184
|
+
_store = null;
|
|
185
|
+
_path = null;
|
|
186
|
+
writer.clear();
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=deployment-eligibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-eligibility.js","sourceRoot":"","sources":["../src/deployment-eligibility.ts"],"names":[],"mappings":"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"}
|
package/dist/dispatch.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Config } from "./config.js";
|
|
2
2
|
import type { HostRoutingState } from "./host-routing.js";
|
|
3
|
-
import type { ResolvedContextWindow } from "./metadata.js";
|
|
3
|
+
import type { ContextWindowSource, ResolvedContextWindow } from "./metadata.js";
|
|
4
4
|
/**
|
|
5
5
|
* The dispatch ladder: which LANE a host agent should hand a delegated task to, in what order,
|
|
6
6
|
* and what to do when one is spent.
|
|
@@ -95,7 +95,13 @@ export interface DispatchLane {
|
|
|
95
95
|
*
|
|
96
96
|
* For a pool this describes the MEMBER that set the minimum, which is the binding constraint.
|
|
97
97
|
*/
|
|
98
|
-
contextWindowSource?:
|
|
98
|
+
contextWindowSource?: ContextWindowSource;
|
|
99
|
+
/**
|
|
100
|
+
* How many members of a POOL had no resolvable window. The reported number is the minimum over
|
|
101
|
+
* the members that DID resolve, so this says how much of the pool that minimum actually covers.
|
|
102
|
+
* Absent or 0 means every member resolved.
|
|
103
|
+
*/
|
|
104
|
+
contextWindowUnknownMembers?: number;
|
|
99
105
|
/**
|
|
100
106
|
* Why this rung cannot be used by the calling host as configured. Set when a `relay` rung needs
|
|
101
107
|
* transposing and no `routing.cliLane` template exists to transpose it with. Such a rung is
|
|
@@ -190,11 +196,26 @@ export declare const CONTEXT_TOKEN = "{contextWindow}";
|
|
|
190
196
|
* omitting it: the client already has a conservative default, and a number we invented would
|
|
191
197
|
* override that default with fiction and overflow the real backend.
|
|
192
198
|
*
|
|
193
|
-
* For a POOL
|
|
194
|
-
*
|
|
195
|
-
*
|
|
199
|
+
* For a POOL the MINIMUM across members that resolve is used: failover can land the request on any
|
|
200
|
+
* member, so the pool's usable window is the smallest one known.
|
|
201
|
+
*
|
|
202
|
+
* ⚠ **An unresolvable member does NOT veto the pool.** That was the original rule and it was
|
|
203
|
+
* wrong twice over. Practically, a single model with no published figure anywhere blanked three of
|
|
204
|
+
* four pools on the owner's machine — `huggingface/Qwen/Qwen3-235B-A22B-Instruct-2507` alone
|
|
205
|
+
* blocked `low`, `medium` and `high` while 44 of 49, 38 of 41 and 28 of 29 members resolved fine.
|
|
206
|
+
* Conceptually, a pool is a ROUTING construct — a ranked candidate list — and membership of one
|
|
207
|
+
* says nothing about any member's context window; treating "we have no data on one model" as "we
|
|
208
|
+
* know nothing about this pool" confuses an absent measurement with a measured absence.
|
|
209
|
+
*
|
|
210
|
+
* The residual risk — an unmeasured member whose real ceiling is below the reported minimum — is
|
|
211
|
+
* exactly what the observed rung exists to close: the first over-length rejection from that
|
|
212
|
+
* deployment states its ceiling, `context-limits.ts` records it, and the next dispatch reports the
|
|
213
|
+
* corrected floor. `contextWindowUnknownMembers` carries how much of the pool the number covers,
|
|
214
|
+
* so the gap is visible rather than implied.
|
|
196
215
|
*/
|
|
197
|
-
export declare function specContextWindow(spec: string, cfg: Config, published: (spec: string) => ResolvedContextWindow | null): ResolvedContextWindow
|
|
216
|
+
export declare function specContextWindow(spec: string, cfg: Config, published: (spec: string) => ResolvedContextWindow | null): (ResolvedContextWindow & {
|
|
217
|
+
unknownMembers: number;
|
|
218
|
+
}) | null;
|
|
198
219
|
/**
|
|
199
220
|
* Resolve command names whose Windows shell semantics differ from their POSIX spelling.
|
|
200
221
|
*
|
package/dist/dispatch.js
CHANGED
|
@@ -138,9 +138,22 @@ export const CONTEXT_TOKEN = "{contextWindow}";
|
|
|
138
138
|
* omitting it: the client already has a conservative default, and a number we invented would
|
|
139
139
|
* override that default with fiction and overflow the real backend.
|
|
140
140
|
*
|
|
141
|
-
* For a POOL
|
|
142
|
-
*
|
|
143
|
-
*
|
|
141
|
+
* For a POOL the MINIMUM across members that resolve is used: failover can land the request on any
|
|
142
|
+
* member, so the pool's usable window is the smallest one known.
|
|
143
|
+
*
|
|
144
|
+
* ⚠ **An unresolvable member does NOT veto the pool.** That was the original rule and it was
|
|
145
|
+
* wrong twice over. Practically, a single model with no published figure anywhere blanked three of
|
|
146
|
+
* four pools on the owner's machine — `huggingface/Qwen/Qwen3-235B-A22B-Instruct-2507` alone
|
|
147
|
+
* blocked `low`, `medium` and `high` while 44 of 49, 38 of 41 and 28 of 29 members resolved fine.
|
|
148
|
+
* Conceptually, a pool is a ROUTING construct — a ranked candidate list — and membership of one
|
|
149
|
+
* says nothing about any member's context window; treating "we have no data on one model" as "we
|
|
150
|
+
* know nothing about this pool" confuses an absent measurement with a measured absence.
|
|
151
|
+
*
|
|
152
|
+
* The residual risk — an unmeasured member whose real ceiling is below the reported minimum — is
|
|
153
|
+
* exactly what the observed rung exists to close: the first over-length rejection from that
|
|
154
|
+
* deployment states its ceiling, `context-limits.ts` records it, and the next dispatch reports the
|
|
155
|
+
* corrected floor. `contextWindowUnknownMembers` carries how much of the pool the number covers,
|
|
156
|
+
* so the gap is visible rather than implied.
|
|
144
157
|
*/
|
|
145
158
|
export function specContextWindow(spec, cfg, published) {
|
|
146
159
|
let specs;
|
|
@@ -153,16 +166,20 @@ export function specContextWindow(spec, cfg, published) {
|
|
|
153
166
|
if (specs.length === 0)
|
|
154
167
|
return null;
|
|
155
168
|
let best = null;
|
|
169
|
+
let unknown = 0;
|
|
156
170
|
for (const s of specs) {
|
|
157
171
|
const window = published(s);
|
|
158
|
-
if (window === null || !Number.isFinite(window.tokens) || window.tokens <= 0)
|
|
159
|
-
|
|
172
|
+
if (window === null || !Number.isFinite(window.tokens) || window.tokens <= 0) {
|
|
173
|
+
unknown++;
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
160
176
|
// The MEMBER that sets the minimum is the binding constraint, so its provenance is the one
|
|
161
177
|
// that describes the number being reported — not the first member's, and not a blend.
|
|
162
178
|
if (best === null || window.tokens < best.tokens)
|
|
163
179
|
best = window;
|
|
164
180
|
}
|
|
165
|
-
|
|
181
|
+
// Nothing resolved at all is still null: a floor over an empty set is not a floor.
|
|
182
|
+
return best === null ? null : { ...best, unknownMembers: unknown };
|
|
166
183
|
}
|
|
167
184
|
/**
|
|
168
185
|
* Can a bypassed host reach this spec with a plain subagent, no relay involvement?
|
|
@@ -391,6 +408,8 @@ function toLane(rung, position, cfg, opts, now, client, platform, host, entrypoi
|
|
|
391
408
|
if (window !== null) {
|
|
392
409
|
lane.contextWindow = window.tokens;
|
|
393
410
|
lane.contextWindowSource = window.source;
|
|
411
|
+
if (window.unknownMembers > 0)
|
|
412
|
+
lane.contextWindowUnknownMembers = window.unknownMembers;
|
|
394
413
|
}
|
|
395
414
|
}
|
|
396
415
|
else {
|
package/dist/dispatch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../src/dispatch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../src/dispatch.ts"],"names":[],"mappings":"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"}
|
package/dist/dynamic-pools.js
CHANGED
|
@@ -4,6 +4,7 @@ import { getRealWorldScore, loadRuntimeTelemetry } from "./ping/runtime-telemetr
|
|
|
4
4
|
import { loadPersistedSamples, loadProbeCache } from "./ping/probe-cache.js";
|
|
5
5
|
import { getStabilityScore } from "./ping/metrics.js";
|
|
6
6
|
import { assessCost } from "./metadata.js";
|
|
7
|
+
import { isCostBlocked } from "./deployment-eligibility.js";
|
|
7
8
|
export const DYNAMIC_POOL_RANKING_EPOCH_MS = 30_000;
|
|
8
9
|
const materializationCache = new WeakMap();
|
|
9
10
|
/** Operational and task-fit signals for one concrete provider deployment. */
|
|
@@ -83,6 +84,22 @@ export function materializeDynamicPools(cfg, catalog, opts = {}) {
|
|
|
83
84
|
// rule in via the provider-tier basis.
|
|
84
85
|
if (assessCost(model, catalog.cachedLimits(provider, model), p.tierType).costClass !== "free")
|
|
85
86
|
continue;
|
|
87
|
+
// What the deployment itself said, which outranks what the roster implies about it.
|
|
88
|
+
//
|
|
89
|
+
// `assessCost`'s `provider-tier` basis admits any unpriced model from a `tierType: "free"`
|
|
90
|
+
// provider — the right default, since most free providers publish no prices at all, but it
|
|
91
|
+
// is an assumption about a ROSTER and a roster contains subscription-gated SKUs and models
|
|
92
|
+
// that were de-listed behind the scenes. Both were measured here: five `ollama-cloud/*`
|
|
93
|
+
// members answering 403 "requires a subscription", and `nim/moonshotai/kimi-k2.6` answering
|
|
94
|
+
// 404 "not found for account", all of them still holding pool slots and burning one failover
|
|
95
|
+
// round-trip per request.
|
|
96
|
+
//
|
|
97
|
+
// ⚠ Only proven-unfit deployments are dropped. `isCostBlocked` deliberately excludes
|
|
98
|
+
// `allowance-exhausted`: a spent free allowance is the normal state of a working free lane,
|
|
99
|
+
// not a discovery about price, and evicting on it would outlive the exhaustion that caused
|
|
100
|
+
// it. That case cools in `orderByUsability` and returns on its own.
|
|
101
|
+
if (isCostBlocked(provider, model))
|
|
102
|
+
continue;
|
|
86
103
|
discovered.push({
|
|
87
104
|
provider,
|
|
88
105
|
model,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-pools.js","sourceRoot":"","sources":["../src/dynamic-pools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAEpG,OAAO,EAAE,YAAY,EAAE,aAAa,EAAiB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAsB,MAAM,6BAA6B,CAAC;AAC1G,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAuB,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"dynamic-pools.js","sourceRoot":"","sources":["../src/dynamic-pools.ts"],"names":[],"mappings":"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"}
|
package/dist/metadata.d.ts
CHANGED
|
@@ -85,7 +85,7 @@ export declare function assessCost(model: string | null | undefined, limits: {
|
|
|
85
85
|
*/
|
|
86
86
|
export declare function estimateRequestTokens(reqJson: unknown): number;
|
|
87
87
|
/** Where a context window came from, in descending order of authority. */
|
|
88
|
-
export type ContextWindowSource = "provider" | "snapshot";
|
|
88
|
+
export type ContextWindowSource = "observed" | "provider" | "snapshot";
|
|
89
89
|
export interface ResolvedContextWindow {
|
|
90
90
|
tokens: number;
|
|
91
91
|
source: ContextWindowSource;
|
|
@@ -96,8 +96,12 @@ export interface ResolvedContextWindow {
|
|
|
96
96
|
* Two rungs, both REAL PUBLICATIONS — there is deliberately no guessed rung, for the same reason
|
|
97
97
|
* `resolveMetadata` has none and the request-path guardrail stays silent on an unknown limit:
|
|
98
98
|
*
|
|
99
|
-
* 1. `
|
|
100
|
-
*
|
|
99
|
+
* 1. `observed` — a ceiling THIS deployment stated when it refused an over-length request. The
|
|
100
|
+
* strongest evidence there is: a first-party fact about the exact deployment that will serve
|
|
101
|
+
* the next request, which a published catalogue figure can contradict by being generic or
|
|
102
|
+
* stale. Only an explicitly stated maximum is ever recorded — see `context-limits.ts`.
|
|
103
|
+
* 2. `provider` — the serving deployment's own published `contextLength`.
|
|
104
|
+
* 3. `snapshot` — `context_length` from the synced capability snapshot (`docs/tier-data.json`,
|
|
101
105
|
* OpenRouter), matched **exactly** on the spec's last segment.
|
|
102
106
|
*
|
|
103
107
|
* ⚠ Rung 2 exists because rung 1 is nearly empty in practice: free providers publish little
|
|
@@ -115,4 +119,4 @@ export interface ResolvedContextWindow {
|
|
|
115
119
|
export declare function contextWindowResolver(providerLimit: (provider: string, model: string) => number | null, snapshot: (spec: string) => {
|
|
116
120
|
tokens: number;
|
|
117
121
|
match: "exact" | "fuzzy";
|
|
118
|
-
} | null): (spec: string) => ResolvedContextWindow | null;
|
|
122
|
+
} | null, observed?: (provider: string, model: string) => number | null): (spec: string) => ResolvedContextWindow | null;
|