llm-relay 0.30.0 → 0.32.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.js +20 -2
- package/dist/cli.js.map +1 -1
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -1
- package/dist/context-limits.d.ts +11 -2
- package/dist/context-limits.js +25 -78
- package/dist/context-limits.js.map +1 -1
- package/dist/dynamic-pools.js +21 -4
- package/dist/dynamic-pools.js.map +1 -1
- package/dist/refusal-interpretation.d.ts +46 -0
- package/dist/refusal-interpretation.js +134 -2
- package/dist/refusal-interpretation.js.map +1 -1
- package/dist/server.js +72 -8
- package/dist/server.js.map +1 -1
- package/dist/target-facts.d.ts +12 -1
- package/dist/target-facts.js +25 -1
- package/dist/target-facts.js.map +1 -1
- package/package.json +1 -1
- package/skills/llm-relay/SKILL.md +31 -0
|
@@ -22,6 +22,11 @@ export function materializeScope(template, provider, model) {
|
|
|
22
22
|
* but not forever, so a mistaken reject heals on its own rather than needing a file edited by hand.
|
|
23
23
|
*/
|
|
24
24
|
export const IGNORED_TTL_MS = 30 * 24 * 60 * 60 * 1000;
|
|
25
|
+
/**
|
|
26
|
+
* The longest reset any of these providers publishes. Beyond it a value is a parse artifact or a
|
|
27
|
+
* mistaken assertion, and believing it would strand a deployment far past any real window.
|
|
28
|
+
*/
|
|
29
|
+
const MAX_RESET_MS = 7 * 24 * 60 * 60 * 1000;
|
|
25
30
|
let _store = null;
|
|
26
31
|
let _path = null;
|
|
27
32
|
const writer = new WriteBehindTimer();
|
|
@@ -156,11 +161,112 @@ export function parseStatedResetMs(body) {
|
|
|
156
161
|
const ms = Number(m[1]) * scale;
|
|
157
162
|
// A week is the longest window any of these providers publish; beyond that it is a parse
|
|
158
163
|
// artifact, and believing it would strand a deployment far past any real reset.
|
|
159
|
-
if (Number.isFinite(ms) && ms > 0 && ms <=
|
|
164
|
+
if (Number.isFinite(ms) && ms > 0 && ms <= MAX_RESET_MS)
|
|
160
165
|
return Math.round(ms);
|
|
161
166
|
}
|
|
162
167
|
return null;
|
|
163
168
|
}
|
|
169
|
+
/**
|
|
170
|
+
* Apply a reviewed reset rule to one response body.
|
|
171
|
+
*
|
|
172
|
+
* Ranked below anything the response itself states — see `resolveResetMs` in `server.ts`. A
|
|
173
|
+
* `field` rule reads THIS response, so it is still a measurement; a `fixed` rule is the reviewer's
|
|
174
|
+
* knowledge of a window and is the last word before falling back to the kind's TTL.
|
|
175
|
+
*/
|
|
176
|
+
export function applyResetRule(rule, body) {
|
|
177
|
+
if (!rule)
|
|
178
|
+
return null;
|
|
179
|
+
if (rule.kind === "fixed")
|
|
180
|
+
return rule.ms > 0 && rule.ms <= MAX_RESET_MS ? Math.round(rule.ms) : null;
|
|
181
|
+
const raw = findField(body, rule.field);
|
|
182
|
+
if (raw === null)
|
|
183
|
+
return null;
|
|
184
|
+
// Providers write durations as "3600s", "3600", or a number. Seconds is the universal unit here
|
|
185
|
+
// (Retry-After, RetryInfo, every JSON spelling seen), so anything without a unit is seconds.
|
|
186
|
+
const m = /(\d+(?:\.\d+)?)\s*(ms|s|m|h)?/i.exec(String(raw));
|
|
187
|
+
if (!m?.[1])
|
|
188
|
+
return null;
|
|
189
|
+
const scale = m[2]?.toLowerCase() === "ms" ? 1 : m[2]?.toLowerCase() === "m" ? 60_000 : m[2]?.toLowerCase() === "h" ? 3_600_000 : 1000;
|
|
190
|
+
const ms = Number(m[1]) * scale;
|
|
191
|
+
return Number.isFinite(ms) && ms > 0 && ms <= MAX_RESET_MS ? Math.round(ms) : null;
|
|
192
|
+
}
|
|
193
|
+
/** Deep lookup of a JSON key by NAME, wrapper-tolerant. Returns the first scalar found. */
|
|
194
|
+
function findField(body, field) {
|
|
195
|
+
const parse = (text) => {
|
|
196
|
+
try {
|
|
197
|
+
return JSON.parse(text);
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
const brace = text.search(/[[{]/);
|
|
201
|
+
if (brace <= 0)
|
|
202
|
+
return null;
|
|
203
|
+
try {
|
|
204
|
+
return JSON.parse(text.slice(brace));
|
|
205
|
+
}
|
|
206
|
+
catch {
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
const walk = (v, depth = 0) => {
|
|
212
|
+
if (depth > 8 || v === null || typeof v !== "object")
|
|
213
|
+
return null;
|
|
214
|
+
for (const [k, val] of Object.entries(v)) {
|
|
215
|
+
if (k === field && (typeof val === "string" || typeof val === "number"))
|
|
216
|
+
return val;
|
|
217
|
+
const found = walk(val, depth + 1);
|
|
218
|
+
if (found !== null)
|
|
219
|
+
return found;
|
|
220
|
+
}
|
|
221
|
+
return null;
|
|
222
|
+
};
|
|
223
|
+
return walk(parse(body.length > 8192 ? body.slice(0, 8192) : body));
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Meaning read from a SELF-DESCRIBING error payload, rather than from prose.
|
|
227
|
+
*
|
|
228
|
+
* Some providers publish the fact in a structured, versioned envelope that names its own schema.
|
|
229
|
+
* Google's is the one in use here: a 429 carries `google.rpc.QuotaFailure` whose `quotaId` states
|
|
230
|
+
* both the window and what the limit is counted against —
|
|
231
|
+
* `GenerateRequestsPerDayPerProjectPerModel-FreeTier` says, unambiguously, that this is a *daily*
|
|
232
|
+
* allowance counted *per model* on the *free tier*. No wording to interpret.
|
|
233
|
+
*
|
|
234
|
+
* ⚠ This is NOT a per-provider switch, which this project refuses elsewhere (`catalog.ts` uses a
|
|
235
|
+
* generic field-alias list; `authEnv.ts` refuses to guess). The dispatch key is the payload's own
|
|
236
|
+
* `@type` URL — the message declares which schema it is speaking, and we read only schemas we
|
|
237
|
+
* understand. A provider adopting `google.rpc` gets this for free; one that does not is unaffected.
|
|
238
|
+
*
|
|
239
|
+
* Ranked ABOVE the prose seeds and BELOW an accepted human verdict: structured evidence beats a
|
|
240
|
+
* pattern guess, and an operator's explicit decision beats both.
|
|
241
|
+
*/
|
|
242
|
+
function interpretStructured(status, body) {
|
|
243
|
+
if (!/google\.rpc\.QuotaFailure/.test(body))
|
|
244
|
+
return null;
|
|
245
|
+
// The quotaId is the load-bearing field; read it without trusting the surrounding shape, because
|
|
246
|
+
// a partial or wrapped body must degrade to "learned nothing" rather than throwing.
|
|
247
|
+
const m = /"quotaId"\s*:\s*"([^"]{1,200})"/.exec(body);
|
|
248
|
+
const quotaId = m?.[1];
|
|
249
|
+
if (!quotaId)
|
|
250
|
+
return null;
|
|
251
|
+
// WINDOW → which fact this is. Per-minute/second is throughput; per-hour and longer is an
|
|
252
|
+
// allowance. This is the rate-limit-vs-quota distinction read off a field instead of inferred
|
|
253
|
+
// from wording, which is exactly where reading wording got it wrong before.
|
|
254
|
+
const perShort = /Per(?:Second|Minute)/i.test(quotaId);
|
|
255
|
+
const perLong = /Per(?:Hour|Day|Week|Month)/i.test(quotaId);
|
|
256
|
+
if (!perShort && !perLong)
|
|
257
|
+
return null;
|
|
258
|
+
const kind = perShort ? "rate-limited" : "allowance-exhausted";
|
|
259
|
+
// SCOPE → what the limit is counted against. "PerProjectPerModel" is counted per model, so the
|
|
260
|
+
// project's other models are unaffected; "PerProject" alone covers the whole credential.
|
|
261
|
+
const scope = /PerModel/i.test(quotaId)
|
|
262
|
+
? { kind: "deployment" }
|
|
263
|
+
: /Per(?:Project|User|Consumer|Client)/i.test(quotaId)
|
|
264
|
+
? { kind: "provider" }
|
|
265
|
+
: { kind: "deployment" }; // Unrecognized dimension: assume the narrowest blast radius.
|
|
266
|
+
// A 429 is the only status this shape is published on; anything else naming QuotaFailure is not
|
|
267
|
+
// something we have seen and should not be guessed at.
|
|
268
|
+
return status === 429 || status === 403 ? { class: kind, scope } : null;
|
|
269
|
+
}
|
|
164
270
|
/** The lookup key. Per (provider, model, normalized message) — see the header for why all three. */
|
|
165
271
|
export function refusalSignature(provider, model, status, body) {
|
|
166
272
|
return `${provider}|${model ?? "-"}|${status}|${normalizeRefusalMessage(body)}`;
|
|
@@ -170,6 +276,13 @@ export function refusalSignature(provider, model, status, body) {
|
|
|
170
276
|
* a real account (probed 2026-08-08). These bind without review: they are deterministic code in
|
|
171
277
|
* version control, and an operator who disagrees can override the entry.
|
|
172
278
|
*
|
|
279
|
+
* ⚠ **This list is a BOOTSTRAP, not the mechanism.** Reaching for a new seed every time an
|
|
280
|
+
* unfamiliar message appears means the relay's author learned something and the relay did not —
|
|
281
|
+
* and it is the reflex this two-tier design exists to replace. A researched interpretation carries
|
|
282
|
+
* the same information, is reviewed the same way, and a future session inherits it without a
|
|
283
|
+
* release. Add a seed only for a message shape common enough that every install should start
|
|
284
|
+
* knowing it.
|
|
285
|
+
*
|
|
173
286
|
* ⚠ These are matched as PATTERNS against the normalized message, not as exact signatures, because
|
|
174
287
|
* a seed has to cover a provider it has never been run against. That is a deliberate exception to
|
|
175
288
|
* the per-model keying rule above and the only one — a seed is reviewed source, whereas a
|
|
@@ -307,6 +420,19 @@ export function interpretRefusal(provider, model, status, body, opts = {}) {
|
|
|
307
420
|
// A researched entry binds only once accepted; an unaccepted one is still sitting in review.
|
|
308
421
|
if (hit && (hit.source === "seed" || hit.acceptedAt !== undefined))
|
|
309
422
|
return hit;
|
|
423
|
+
// Structured evidence beats prose: the payload states its own schema and its own dimensions,
|
|
424
|
+
// where a seed only pattern-matches wording. Below an accepted human verdict, above the seeds.
|
|
425
|
+
const structured = interpretStructured(status, body);
|
|
426
|
+
if (structured) {
|
|
427
|
+
return {
|
|
428
|
+
class: structured.class,
|
|
429
|
+
scope: structured.scope,
|
|
430
|
+
source: "seed",
|
|
431
|
+
// The same envelope carries `google.rpc.RetryInfo`, so the reset is read from the response
|
|
432
|
+
// itself rather than falling back to the kind's default TTL.
|
|
433
|
+
reset: { kind: "field", field: "retryDelay" },
|
|
434
|
+
};
|
|
435
|
+
}
|
|
310
436
|
const normalized = normalizeRefusalMessage(body);
|
|
311
437
|
for (const seed of SEED_INTERPRETATIONS) {
|
|
312
438
|
if (!seed.status(status))
|
|
@@ -417,12 +543,18 @@ export function acceptInterpretation(signature, opts = {}) {
|
|
|
417
543
|
const path = opts.path ?? defaultPath();
|
|
418
544
|
const store = load(path);
|
|
419
545
|
const pending = store.unknown[signature];
|
|
420
|
-
const verdict = opts.override ?? (pending?.proposed
|
|
546
|
+
const verdict = opts.override ?? (pending?.proposed
|
|
547
|
+
? { class: pending.proposed.class, scope: pending.proposed.scope, reset: pending.proposed.reset }
|
|
548
|
+
: null);
|
|
421
549
|
if (!verdict)
|
|
422
550
|
return false;
|
|
551
|
+
// The reset travels with the verdict: accepting an interpretation commits everything known about
|
|
552
|
+
// that message shape — what it means, who it covers, and when it clears — not just a label.
|
|
553
|
+
const reset = verdict.reset ?? pending?.proposed?.reset;
|
|
423
554
|
store.confirmed[signature] = {
|
|
424
555
|
class: verdict.class,
|
|
425
556
|
scope: verdict.scope,
|
|
557
|
+
...(reset ? { reset } : {}),
|
|
426
558
|
source: "researched",
|
|
427
559
|
acceptedAt: opts.now ?? Date.now(),
|
|
428
560
|
...(pending?.proposed?.rationale ? { rationale: pending.proposed.rationale } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refusal-interpretation.js","sourceRoot":"","sources":["../src/refusal-interpretation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAyDrD,sFAAsF;AACtF,MAAM,UAAU,gBAAgB,CAAC,QAAuB,EAAE,QAAgB,EAAE,KAAa;IACvF,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,YAAY;YACf,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACjD,KAAK,UAAU;YACb,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;QACxC,KAAK,OAAO;YACV,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAClC,KAAK,OAAO;YACV,0FAA0F;YAC1F,8DAA8D;YAC9D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;IACpI,CAAC;AACH,CAAC;AAoDD;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEvD,IAAI,MAAM,GAA+B,IAAI,CAAC;AAC9C,IAAI,KAAK,GAAkB,IAAI,CAAC;AAChC,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAEtC,mGAAmG;AACnG,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,4FAA4F;AAC5F,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB,SAAS,WAAW;IAClB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,kCAAkC,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACxC,MAAM,OAAO,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;IAC3F,OAAO,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;SAClC,WAAW,EAAE;SACb,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;SACnC,OAAO,CAAC,+DAA+D,EAAE,MAAM,CAAC;SAChF,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC;SACpC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC;SAC7B,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE;SACN,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,8FAA8F;AAC9F,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,UAAU,GAAa,CAAC,IAAI,CAAC,CAAC;IACpC,iFAAiF;IACjF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,KAAK,GAAG,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAY,CAAC,CAAC;YAC5D,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sFAAsF;AACtF,SAAS,WAAW,CAAC,CAAU,EAAE,KAAK,GAAG,CAAC;IACxC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACxC,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,CAA4B,CAAC;QACzC,KAAK,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;YAC5D,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,QAAQ;gBAAE,OAAO,GAAG,CAAC,KAAK,CAAW,CAAC;YAChE,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACjD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBACjD,IAAI,KAAK;oBAAE,OAAO,KAAK,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,MAAM,QAAQ,GAAyC;QACrD,gEAAgE;QAChE,EAAE,EAAE,EAAE,+CAA+C,EAAE,KAAK,EAAE,IAAI,EAAE;QACpE,kEAAkE;QAClE,EAAE,EAAE,EAAE,+DAA+D,EAAE,KAAK,EAAE,IAAI,EAAE;QACpF,6EAA6E;QAC7E,EAAE,EAAE,EAAE,wEAAwE,EAAE,KAAK,EAAE,IAAI,EAAE;QAC7F,EAAE,EAAE,EAAE,sEAAsE,EAAE,KAAK,EAAE,MAAM,EAAE;QAC7F,EAAE,EAAE,EAAE,mEAAmE,EAAE,KAAK,EAAE,SAAS,EAAE;KAC9F,CAAC;IACF,KAAK,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,QAAQ,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAAE,SAAS;QACtB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QAChC,yFAAyF;QACzF,gFAAgF;QAChF,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,KAAgC,EAAE,MAAc,EAAE,IAAY;IAC/G,OAAO,GAAG,QAAQ,IAAI,KAAK,IAAI,GAAG,IAAI,MAAM,IAAI,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;AAClF,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAM5B;IACH;QACE,+FAA+F;QAC/F,6FAA6F;QAC7F,EAAE;QACF,8FAA8F;QAC9F,2FAA2F;QAC3F,+FAA+F;QAC/F,yFAAyF;QACzF,yEAAyE;QACzE,EAAE;QACF,6FAA6F;QAC7F,2FAA2F;QAC3F,wFAAwF;QACxF,+FAA+F;QAC/F,+CAA+C;QAC/C,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;QACrC,OAAO,EAAE,wNAAwN;QACjO,KAAK,EAAE,qBAAqB;QAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QAC3B,IAAI,EAAE,qFAAqF;KAC5F;IACD;QACE,6FAA6F;QAC7F,uEAAuE;QACvE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG;QACxB,OAAO,EAAE,yIAAyI;QAClJ,KAAK,EAAE,qBAAqB;QAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QAC3B,IAAI,EAAE,0DAA0D;KACjE;IACD;QACE,4FAA4F;QAC5F,8FAA8F;QAC9F,8CAA8C;QAC9C,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG;QACxB,OAAO,EAAE,4HAA4H;QACrI,KAAK,EAAE,uBAAuB;QAC9B,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;QAC7B,IAAI,EAAE,gEAAgE;KACvE;IACD;QACE,8FAA8F;QAC9F,4FAA4F;QAC5F,2EAA2E;QAC3E,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;QACrC,OAAO,EAAE,kGAAkG;QAC3G,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;QAC7B,IAAI,EAAE,mCAAmC;KAC1C;IACD;QACE,6FAA6F;QAC7F,2FAA2F;QAC3F,8EAA8E;QAC9E,EAAE;QACF,gGAAgG;QAChG,0FAA0F;QAC1F,8FAA8F;QAC9F,8DAA8D;QAC9D,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;QACrC,OAAO,EAAE,gLAAgL;QACzL,KAAK,EAAE,oBAAoB;QAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QAC3B,IAAI,EAAE,gEAAgE;KACvE;IACD;QACE,0FAA0F;QAC1F,8FAA8F;QAC9F,EAAE;QACF,8FAA8F;QAC9F,oFAAoF;QACpF,4FAA4F;QAC5F,4DAA4D;QAC5D,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG;QACxB,OAAO,EAAE,iNAAiN;QAC1N,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QAC3B,IAAI,EAAE,+DAA+D;KACtE;CACF,CAAC;AAGF,SAAS,IAAI,CAAC,IAAY;IACxB,IAAI,MAAM,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAC5C,KAAK,GAAG,IAAI,CAAC;IACb,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAiC,CAAC;QACtF,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,GAAG;gBACP,OAAO,EAAE,CAAC;gBACV,SAAS,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAmC;gBACrE,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAmC;gBACjE,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAmC;aAClE,CAAC;YACF,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,6FAA6F;QAC7F,6EAA6E;IAC/E,CAAC;IACD,MAAM,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACjE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,IAAI,CAAC;QACH,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;QACzC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;QACnE,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,wFAAwF;IAC1F,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAgB,EAChB,KAAgC,EAChC,MAAc,EACd,IAAY,EACZ,OAA0B,EAAE;IAE5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7E,6FAA6F;IAC7F,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC;QAAE,OAAO,GAAG,CAAC;IAE/E,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAAE,SAAS;QACnC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACrG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,KAAgC,EAChC,MAAc,EACd,IAAY,EACZ,OAAwC,EAAE;IAE1C,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU;QAAE,OAAO;IACxB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5D,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;QAAE,OAAO;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACnC,8FAA8F;IAC9F,yFAAyF;IACzF,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;IAC3C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,GAAG,GAAG,SAAS,GAAG,cAAc;QAAE,OAAO;IAC9E,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;QACpB,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;YACrD,4FAA4F;YAC5F,oEAAoE;YACpE,IAAI,SAAS,GAAkB,IAAI,CAAC;YACpC,IAAI,QAAQ,GAAG,QAAQ,CAAC;YACxB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnD,IAAI,CAAC,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC;oBAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;oBAAC,SAAS,GAAG,CAAC,CAAC;gBAAC,CAAC;YACtE,CAAC;YACD,IAAI,SAAS;gBAAE,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG;YACnB,QAAQ;YACR,KAAK,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;YAC/C,MAAM;YACN,UAAU;YACV,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;YACvE,KAAK,EAAE,CAAC;YACR,SAAS,EAAE,GAAG;YACd,QAAQ,EAAE,GAAG;SACd,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,eAAe,CAAC,OAA0B,EAAE;IAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,gGAAgG;IAChG,iGAAiG;IACjG,gEAAgE;IAChE,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/D,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI;YAAE,SAAS;QACnC,IAAI,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI;YAAE,SAAS;QAC3G,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IACD,IAAI,QAAQ;QAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;SACjC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;SAC9C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AAClE,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,qBAAqB,CACnC,SAAiB,EACjB,QAAsE,EACtE,OAAwC,EAAE;IAE1C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,CAAC,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAC/D,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAiB,EACjB,OAA8F,EAAE;IAEhG,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/H,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG;QAC3B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,YAAY;QACpB,UAAU,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE;QAClC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnF,CAAC;IACF,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAiB,EAAE,OAAwC,EAAE;IAChG,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,KAAK,CAAC,OAAO,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;IAC1F,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,oBAAoB,CAAC,OAA0B,EAAE;IAC/D,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO;IAC1B,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,IAAI,CAAC;IACd,KAAK,GAAG,IAAI,CAAC;IACb,MAAM,CAAC,KAAK,EAAE,CAAC;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"refusal-interpretation.js","sourceRoot":"","sources":["../src/refusal-interpretation.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -7,7 +7,7 @@ import { reconstructFromSse } from "./sse.js";
|
|
|
7
7
|
import { emitSse, emitSseTail, syntheticMessageId } from "./emitSse.js";
|
|
8
8
|
import { repair, destructiveMatcher } from "./repair.js";
|
|
9
9
|
import { FailoverReshaper, HttpReshaper } from "./reshaper.js";
|
|
10
|
-
import { fetchBackend, fetchOpenAiFront, normalizeOpenAiErrorBody, parseRetryAfterMs, SERVED_BY_HEADER, POOL_ATTEMPTS_HEADER, UNKNOWN_REFUSAL_HEADER, DEGRADED_HEADER, errorOrigin } from "./backend.js";
|
|
10
|
+
import { fetchBackend, fetchOpenAiFront, normalizeOpenAiErrorBody, parseRetryAfterMs, SERVED_BY_HEADER, POOL_ATTEMPTS_HEADER, UNKNOWN_REFUSAL_HEADER, DEGRADED_HEADER, PAID_HEADER, errorOrigin } from "./backend.js";
|
|
11
11
|
import { ModelCatalog } from "./catalog.js";
|
|
12
12
|
import { handleAdminRoutes } from "./routes/admin.js";
|
|
13
13
|
import { toolSchemaMap } from "./anthropic.js";
|
|
@@ -20,7 +20,7 @@ import { materializeDynamicPools } from "./dynamic-pools.js";
|
|
|
20
20
|
import { baseLog } from "./request-log.js";
|
|
21
21
|
import { looksLikeContextLengthError, parseStatedContextLimit, recordObservedContextLimit } from "./context-limits.js";
|
|
22
22
|
import { clearFacts, cooldownUntil, isCostBlocked, recordFact } from "./target-facts.js";
|
|
23
|
-
import { interpretRefusal, materializeScope, parseStatedResetMs, recordUnknownRefusal } from "./refusal-interpretation.js";
|
|
23
|
+
import { applyResetRule, interpretRefusal, materializeScope, parseStatedResetMs, recordUnknownRefusal } from "./refusal-interpretation.js";
|
|
24
24
|
import { CONTROL_AUTHORIZATION_HEADER, createControlAuthorization, resolveControlAuthorizationConfigDir, validateControlAuthorization, } from "./control-authorization.js";
|
|
25
25
|
export { baseLog, logSafePath } from "./request-log.js";
|
|
26
26
|
const HOP_BY_HOP = new Set([
|
|
@@ -349,7 +349,7 @@ async function handle(req, res, cfg, h) {
|
|
|
349
349
|
// free-lane traffic and never the vendor passthrough, and the guard can only ever refuse to
|
|
350
350
|
// spend, so extending it there cannot cost anyone an answer they were entitled to.
|
|
351
351
|
const addressesPool = typeof routedModel === "string" && routedModel.startsWith("pool/");
|
|
352
|
-
if ((subSpec !== null || addressesPool) && offloadRule(cfg, requestClient)
|
|
352
|
+
if ((subSpec !== null || addressesPool) && freeOnlyApplies(offloadRule(cfg, requestClient), subSpec !== null)) {
|
|
353
353
|
const kept = [];
|
|
354
354
|
let blocked = null;
|
|
355
355
|
for (const t of targetCandidates) {
|
|
@@ -456,6 +456,7 @@ async function handle(req, res, cfg, h) {
|
|
|
456
456
|
req,
|
|
457
457
|
addressedPool,
|
|
458
458
|
degradedSpecs,
|
|
459
|
+
cfg,
|
|
459
460
|
}, h);
|
|
460
461
|
return;
|
|
461
462
|
}
|
|
@@ -590,7 +591,7 @@ async function handle(req, res, cfg, h) {
|
|
|
590
591
|
else {
|
|
591
592
|
const poolRetryAfterMs = pool429.overrideMs(backendRes.status, retryAfterMs);
|
|
592
593
|
pool429.recordFinal(backendRes.status);
|
|
593
|
-
await transparentPath(res, backendRes, timer, { tools, streamed, willValidate, started, path, hadTools, req, target, attempt, signal: controller.signal, retryAfterOverrideMs: poolRetryAfterMs, poolSummary: pool429.summary(), poolUnknownRefusals: pool429.unknownCount(), degraded: degradedLabel(addressedPool, degradedSpecs, target) }, h);
|
|
594
|
+
await transparentPath(res, backendRes, timer, { tools, streamed, willValidate, started, path, hadTools, req, target, attempt, signal: controller.signal, retryAfterOverrideMs: poolRetryAfterMs, poolSummary: pool429.summary(), poolUnknownRefusals: pool429.unknownCount(), degraded: degradedLabel(addressedPool, degradedSpecs, target), paid: paidLabel(cfg, h, target) }, h);
|
|
594
595
|
}
|
|
595
596
|
return;
|
|
596
597
|
}
|
|
@@ -636,6 +637,16 @@ async function handle(req, res, cfg, h) {
|
|
|
636
637
|
* at all" — but only because the caller is told. An unannounced downgrade is indistinguishable
|
|
637
638
|
* from getting what you asked for.
|
|
638
639
|
*/
|
|
640
|
+
function paidLabel(cfg, h, target) {
|
|
641
|
+
// Only openai-kind targets carry a price we can assess; the anthropic passthrough is the
|
|
642
|
+
// caller's own subscription and is reported by the absence of any pool at all.
|
|
643
|
+
if (target.kind !== "openai" || !target.model)
|
|
644
|
+
return null;
|
|
645
|
+
const assessment = assessCost(target.model, h.catalog.cachedLimits(target.provider, target.model), cfg.providers[target.provider]?.tierType);
|
|
646
|
+
if (assessment.costClass === "free")
|
|
647
|
+
return null;
|
|
648
|
+
return `${specOfTarget(target)} (${assessment.costClass}, ${assessment.basis})`;
|
|
649
|
+
}
|
|
639
650
|
function degradedLabel(pool, degraded, target) {
|
|
640
651
|
if (pool === null || degraded === null)
|
|
641
652
|
return null;
|
|
@@ -875,11 +886,8 @@ function observeEligibility(target, status, retryAfterMs, body) {
|
|
|
875
886
|
// and model. A provider-scoped verdict therefore covers every deployment behind that
|
|
876
887
|
// credential from one observation — which is the whole point: a stated credit balance or a
|
|
877
888
|
// rejected key is one fact, and rediscovering it once per model is pure waste.
|
|
878
|
-
// A reset the BODY stated outranks the header, and outranks the kind's default TTL. Gemini
|
|
879
|
-
// says when a spent quota returns only in `google.rpc.RetryInfo` inside the error details, so
|
|
880
|
-
// without this a 5-hourly or weekly quota is re-probed on a schedule the relay invented.
|
|
881
889
|
recordFact(verdict.class, materializeScope(verdict.scope, target.provider, target.model), {
|
|
882
|
-
retryAfterMs: retryAfterMs
|
|
890
|
+
retryAfterMs: resolveResetMs(verdict, retryAfterMs, body),
|
|
883
891
|
});
|
|
884
892
|
}
|
|
885
893
|
catch {
|
|
@@ -887,6 +895,56 @@ function observeEligibility(target, status, retryAfterMs, body) {
|
|
|
887
895
|
}
|
|
888
896
|
return false;
|
|
889
897
|
}
|
|
898
|
+
/**
|
|
899
|
+
* Does the free-only guard bind this request?
|
|
900
|
+
*
|
|
901
|
+
* explicit `true` → always. The owner's standing "this lane never spends money", which a
|
|
902
|
+
* per-call `@relay:` directive and a dispatch cliLane must not outrank.
|
|
903
|
+
* explicit `false` → never. Spending was opted into deliberately.
|
|
904
|
+
* UNSET → defaults ON for offload-rerouted traffic, OFF for a directly addressed pool.
|
|
905
|
+
*
|
|
906
|
+
* ⚠ That asymmetry is the whole point, and it is why `loadConfig` keeps "unset" distinguishable
|
|
907
|
+
* from "false". Offload exists to spend somebody else's free capacity instead of your
|
|
908
|
+
* subscription, so an install that has never thought about cost must not discover the feature by
|
|
909
|
+
* being billed for it — the default belongs there. But a request that *names* `pool/<name>` is an
|
|
910
|
+
* explicit routing choice by someone who knows what a pool is, and silently gating all of it on a
|
|
911
|
+
* flag they never set would turn every unpriced deployment into a 503 for a decision they did not
|
|
912
|
+
* make. Defaulting both the same way was tried: it failed 29 tests, all of them pool traffic that
|
|
913
|
+
* had nothing to do with offload, which is exactly the surprise a user would have hit.
|
|
914
|
+
*/
|
|
915
|
+
function freeOnlyApplies(rule, rerouted) {
|
|
916
|
+
return rule.freeOnly ?? rerouted;
|
|
917
|
+
}
|
|
918
|
+
/**
|
|
919
|
+
* When the condition this refusal describes clears, best evidence first.
|
|
920
|
+
*
|
|
921
|
+
* 1. `Retry-After` — the header, stated by THIS response.
|
|
922
|
+
* 2. A reviewed `field` rule — also read from THIS response, just from a place only a reviewer
|
|
923
|
+
* knew to look (Google's `retryDelay`, which no header carries).
|
|
924
|
+
* 3. The generic body parse — the same class of evidence, found without being told where.
|
|
925
|
+
* 4. A reviewed `fixed` window — a reviewer's knowledge of the provider, not a measurement of
|
|
926
|
+
* this response, so it ranks below everything the response actually said.
|
|
927
|
+
* 5. null ⇒ the fact kind's default TTL.
|
|
928
|
+
*
|
|
929
|
+
* ⚠ The ordering is the point. A reviewer may know MORE than the response (that a daily quota
|
|
930
|
+
* resets in hours when the body says nothing), but never more than the response about itself — so
|
|
931
|
+
* an assertion can fill a gap and can never overrule a statement.
|
|
932
|
+
*/
|
|
933
|
+
function resolveResetMs(interpretation, headerMs, body) {
|
|
934
|
+
if (headerMs !== null)
|
|
935
|
+
return headerMs;
|
|
936
|
+
if (interpretation.reset?.kind === "field") {
|
|
937
|
+
const fromField = applyResetRule(interpretation.reset, body);
|
|
938
|
+
if (fromField !== null)
|
|
939
|
+
return fromField;
|
|
940
|
+
}
|
|
941
|
+
const generic = parseStatedResetMs(body);
|
|
942
|
+
if (generic !== null)
|
|
943
|
+
return generic;
|
|
944
|
+
if (interpretation.reset?.kind === "fixed")
|
|
945
|
+
return applyResetRule(interpretation.reset, body);
|
|
946
|
+
return null;
|
|
947
|
+
}
|
|
890
948
|
/**
|
|
891
949
|
* Statuses whose body can carry a durable fact.
|
|
892
950
|
*
|
|
@@ -1134,6 +1192,9 @@ async function openAiFrontPath(res, candidates, ctx, h) {
|
|
|
1134
1192
|
const degradedBy = degradedLabel(ctx.addressedPool ?? null, ctx.degradedSpecs ?? null, target);
|
|
1135
1193
|
if (degradedBy)
|
|
1136
1194
|
headers[DEGRADED_HEADER] = degradedBy;
|
|
1195
|
+
const paidBy = ctx.cfg ? paidLabel(ctx.cfg, h, target) : null;
|
|
1196
|
+
if (paidBy)
|
|
1197
|
+
headers[PAID_HEADER] = paidBy;
|
|
1137
1198
|
// Same aggregate as the Anthropic path, from the same tracker — the two fronts having
|
|
1138
1199
|
// separate copies of one policy is the defect this file has already shipped once.
|
|
1139
1200
|
pool429.recordFinal(upstream.status);
|
|
@@ -1216,6 +1277,9 @@ async function transparentPath(res, backendRes, timer, ctx, h) {
|
|
|
1216
1277
|
responseHeaders[UNKNOWN_REFUSAL_HEADER] = String(ctx.poolUnknownRefusals);
|
|
1217
1278
|
if (ctx.degraded)
|
|
1218
1279
|
responseHeaders[DEGRADED_HEADER] = ctx.degraded;
|
|
1280
|
+
// Spending is never silent — see PAID_HEADER.
|
|
1281
|
+
if (ctx.paid)
|
|
1282
|
+
responseHeaders[PAID_HEADER] = ctx.paid;
|
|
1219
1283
|
res.writeHead(backendRes.status, responseHeaders);
|
|
1220
1284
|
let assistant = null;
|
|
1221
1285
|
try {
|