@sriinnu/kosha-discovery 1.14.0 → 1.15.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/README.md +85 -78
- package/dist/cli-cmd-doctor.d.ts.map +1 -1
- package/dist/cli-cmd-doctor.js +42 -17
- package/dist/cli-cmd-doctor.js.map +1 -1
- package/dist/cli-cmd-model.d.ts.map +1 -1
- package/dist/cli-cmd-model.js +6 -1
- package/dist/cli-cmd-model.js.map +1 -1
- package/dist/cli-cmd-registry.d.ts +2 -1
- package/dist/cli-cmd-registry.d.ts.map +1 -1
- package/dist/cli-cmd-registry.js +30 -1
- package/dist/cli-cmd-registry.js.map +1 -1
- package/dist/cli-commands.d.ts.map +1 -1
- package/dist/cli-commands.js +16 -5
- package/dist/cli-commands.js.map +1 -1
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +4 -1
- package/dist/cli-help.js.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/cost.d.ts +16 -1
- package/dist/cost.d.ts.map +1 -1
- package/dist/cost.js +73 -14
- package/dist/cost.js.map +1 -1
- package/dist/discovery/snapshot-catalog.d.ts +18 -0
- package/dist/discovery/snapshot-catalog.d.ts.map +1 -1
- package/dist/discovery/snapshot-catalog.js +83 -3
- package/dist/discovery/snapshot-catalog.js.map +1 -1
- package/dist/discovery/vercel.d.ts.map +1 -1
- package/dist/discovery/vercel.js +19 -0
- package/dist/discovery/vercel.js.map +1 -1
- package/dist/discovery-contract.d.ts +8 -3
- package/dist/discovery-contract.d.ts.map +1 -1
- package/dist/discovery-contract.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lifecycle.d.ts +13 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +19 -0
- package/dist/lifecycle.js.map +1 -0
- package/dist/price-trust.d.ts +12 -0
- package/dist/price-trust.d.ts.map +1 -1
- package/dist/price-trust.js +72 -0
- package/dist/price-trust.js.map +1 -1
- package/dist/provider-catalog.d.ts +6 -0
- package/dist/provider-catalog.d.ts.map +1 -1
- package/dist/provider-catalog.js +9 -0
- package/dist/provider-catalog.js.map +1 -1
- package/dist/proxy.d.ts +9 -0
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +177 -27
- package/dist/proxy.js.map +1 -1
- package/dist/registry-query.d.ts.map +1 -1
- package/dist/registry-query.js +9 -7
- package/dist/registry-query.js.map +1 -1
- package/dist/registry-routing.d.ts.map +1 -1
- package/dist/registry-routing.js +2 -1
- package/dist/registry-routing.js.map +1 -1
- package/dist/registry-runtime.d.ts +34 -2
- package/dist/registry-runtime.d.ts.map +1 -1
- package/dist/registry-runtime.js +385 -57
- package/dist/registry-runtime.js.map +1 -1
- package/dist/registry.d.ts +5 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +14 -3
- package/dist/registry.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +16 -3
- package/dist/server.js.map +1 -1
- package/dist/snapshot-gate.d.ts +50 -0
- package/dist/snapshot-gate.d.ts.map +1 -0
- package/dist/snapshot-gate.js +128 -0
- package/dist/snapshot-gate.js.map +1 -0
- package/dist/subscription-plans.d.ts.map +1 -1
- package/dist/subscription-plans.js +3 -1
- package/dist/subscription-plans.js.map +1 -1
- package/package.json +2 -2
- package/server.json +2 -2
package/dist/provider-catalog.js
CHANGED
|
@@ -58,6 +58,7 @@ export const PROVIDER_CATALOG = [
|
|
|
58
58
|
isLocal: false,
|
|
59
59
|
transport: "native-http",
|
|
60
60
|
defaultBaseUrl: "https://api.openai.com",
|
|
61
|
+
chatCompletionsPath: "/v1/chat/completions",
|
|
61
62
|
credentialRequired: true,
|
|
62
63
|
credentialEnvVars: ["OPENAI_API_KEY"],
|
|
63
64
|
primaryCredentialEnvVar: "OPENAI_API_KEY",
|
|
@@ -137,6 +138,7 @@ export const PROVIDER_CATALOG = [
|
|
|
137
138
|
isLocal: true,
|
|
138
139
|
transport: "native-http",
|
|
139
140
|
defaultBaseUrl: "http://localhost:11434",
|
|
141
|
+
chatCompletionsPath: "/v1/chat/completions",
|
|
140
142
|
credentialRequired: false,
|
|
141
143
|
credentialEnvVars: [],
|
|
142
144
|
cacheBehavior: {
|
|
@@ -154,6 +156,7 @@ export const PROVIDER_CATALOG = [
|
|
|
154
156
|
isLocal: true,
|
|
155
157
|
transport: "openai-compatible-http",
|
|
156
158
|
defaultBaseUrl: "http://127.0.0.1:8080",
|
|
159
|
+
chatCompletionsPath: "/v1/chat/completions",
|
|
157
160
|
credentialRequired: false,
|
|
158
161
|
credentialEnvVars: [],
|
|
159
162
|
cacheBehavior: {
|
|
@@ -171,6 +174,7 @@ export const PROVIDER_CATALOG = [
|
|
|
171
174
|
isLocal: true,
|
|
172
175
|
transport: "openai-compatible-http",
|
|
173
176
|
defaultBaseUrl: "http://127.0.0.1:1234",
|
|
177
|
+
chatCompletionsPath: "/v1/chat/completions",
|
|
174
178
|
credentialRequired: false,
|
|
175
179
|
credentialEnvVars: [],
|
|
176
180
|
cacheBehavior: {
|
|
@@ -188,6 +192,7 @@ export const PROVIDER_CATALOG = [
|
|
|
188
192
|
isLocal: true,
|
|
189
193
|
transport: "openai-compatible-http",
|
|
190
194
|
defaultBaseUrl: "http://127.0.0.1:8000",
|
|
195
|
+
chatCompletionsPath: "/v1/chat/completions",
|
|
191
196
|
credentialRequired: false,
|
|
192
197
|
credentialEnvVars: [],
|
|
193
198
|
cacheBehavior: {
|
|
@@ -384,6 +389,7 @@ export const PROVIDER_CATALOG = [
|
|
|
384
389
|
// international key cannot authenticate against; `moonshot-cn` now
|
|
385
390
|
// carries that host explicitly.
|
|
386
391
|
defaultBaseUrl: "https://api.moonshot.ai",
|
|
392
|
+
chatCompletionsPath: "/v1/chat/completions",
|
|
387
393
|
credentialRequired: true,
|
|
388
394
|
credentialEnvVars: ["MOONSHOT_API_KEY", "KIMI_API_KEY"],
|
|
389
395
|
primaryCredentialEnvVar: "MOONSHOT_API_KEY",
|
|
@@ -430,6 +436,7 @@ export const PROVIDER_CATALOG = [
|
|
|
430
436
|
isLocal: false,
|
|
431
437
|
transport: "openai-compatible-http",
|
|
432
438
|
defaultBaseUrl: "https://api.moonshot.cn",
|
|
439
|
+
chatCompletionsPath: "/v1/chat/completions",
|
|
433
440
|
credentialRequired: true,
|
|
434
441
|
credentialEnvVars: ["MOONSHOT_CN_API_KEY", "MOONSHOT_API_KEY", "KIMI_API_KEY"],
|
|
435
442
|
primaryCredentialEnvVar: "MOONSHOT_CN_API_KEY",
|
|
@@ -450,6 +457,7 @@ export const PROVIDER_CATALOG = [
|
|
|
450
457
|
isLocal: false,
|
|
451
458
|
transport: "openai-compatible-http",
|
|
452
459
|
defaultBaseUrl: "https://api.minimaxi.com",
|
|
460
|
+
chatCompletionsPath: "/v1/chat/completions",
|
|
453
461
|
credentialRequired: true,
|
|
454
462
|
credentialEnvVars: ["MINIMAX_CN_API_KEY", "MINIMAX_API_KEY"],
|
|
455
463
|
primaryCredentialEnvVar: "MINIMAX_CN_API_KEY",
|
|
@@ -740,6 +748,7 @@ export const PROVIDER_CATALOG = [
|
|
|
740
748
|
isLocal: false,
|
|
741
749
|
transport: "openai-compatible-http",
|
|
742
750
|
defaultBaseUrl: "https://api.minimax.io",
|
|
751
|
+
chatCompletionsPath: "/v1/chat/completions",
|
|
743
752
|
credentialRequired: true,
|
|
744
753
|
credentialEnvVars: ["MINIMAX_API_KEY"],
|
|
745
754
|
primaryCredentialEnvVar: "MINIMAX_API_KEY",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-catalog.js","sourceRoot":"","sources":["../src/provider-catalog.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provider-catalog.js","sourceRoot":"","sources":["../src/provider-catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/proxy.d.ts
CHANGED
|
@@ -54,6 +54,15 @@ export interface ProxyMetricsSnapshot {
|
|
|
54
54
|
* complements the breaker / provider-observation data the registry exposes.
|
|
55
55
|
*/
|
|
56
56
|
export declare function snapshotProxyMetrics(): ProxyMetricsSnapshot;
|
|
57
|
+
/**
|
|
58
|
+
* Return the upstream URL if-and-only-if its hostname is one we trust.
|
|
59
|
+
* Returns null for an unparseable URL, an exotic protocol, or a hostname
|
|
60
|
+
* outside the catalog allowlist / loopback families. The caller refuses the
|
|
61
|
+
* request in that case rather than dialing a tainted host. Written with
|
|
62
|
+
* explicit `===` checks against literal strings so static taint analysis
|
|
63
|
+
* recognizes this function as a sanitizer.
|
|
64
|
+
*/
|
|
65
|
+
export declare function safeUpstreamUrl(rawUrl: string, isLocalProvider: boolean): URL | null;
|
|
57
66
|
/**
|
|
58
67
|
* Extract a tenant tag from the request. Two carriers are accepted:
|
|
59
68
|
*
|
package/dist/proxy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,MAAM,CAAC;AAqB1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAgDnD,+EAA+E;AAC/E,MAAM,WAAW,oBAAoB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,oBAAoB,CAU3D;AA0BD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,GAAG,GAAG,IAAI,CAyBpF;AAyJD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAM/G;AAkND,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,WAAW,GAAG,IAAI,CA2tB1G"}
|
package/dist/proxy.js
CHANGED
|
@@ -38,8 +38,9 @@
|
|
|
38
38
|
* @module
|
|
39
39
|
*/
|
|
40
40
|
import { randomUUID } from "node:crypto";
|
|
41
|
-
import { actualCostFromUsage, appendLedgerEntry, estimateRequestCost, readMonthlyBudgetUsd, readSpendForMonth, readTenantBudgetUsd, } from "./cost.js";
|
|
41
|
+
import { actualCostFromUsage, appendLedgerEntry, BudgetConfigError, estimateRequestCost, readMonthlyBudgetUsd, readSpendForMonth, readTenantBudgetUsd, UNTAGGED_TENANT, } from "./cost.js";
|
|
42
42
|
import { isPlanBilled } from "./discovery/free-tier.js";
|
|
43
|
+
import { isRetired } from "./lifecycle.js";
|
|
43
44
|
import { isUnverifiedZeroPrice } from "./price-trust.js";
|
|
44
45
|
import { getProviderDescriptor, listProviderDescriptors, providerExecutionCredentialRequired, } from "./provider-catalog.js";
|
|
45
46
|
import { parseRouteStrategy } from "./registry-routing.js";
|
|
@@ -111,7 +112,7 @@ const ALLOWED_UPSTREAM_HOSTS = (() => {
|
|
|
111
112
|
* explicit `===` checks against literal strings so static taint analysis
|
|
112
113
|
* recognizes this function as a sanitizer.
|
|
113
114
|
*/
|
|
114
|
-
function safeUpstreamUrl(rawUrl, isLocalProvider) {
|
|
115
|
+
export function safeUpstreamUrl(rawUrl, isLocalProvider) {
|
|
115
116
|
let parsed;
|
|
116
117
|
try {
|
|
117
118
|
parsed = new URL(rawUrl);
|
|
@@ -130,7 +131,8 @@ function safeUpstreamUrl(rawUrl, isLocalProvider) {
|
|
|
130
131
|
return parsed;
|
|
131
132
|
if (host === "127.0.0.1")
|
|
132
133
|
return parsed;
|
|
133
|
-
|
|
134
|
+
// WHATWG URL keeps IPv6 hostnames bracketed: new URL("http://[::1]").hostname === "[::1]".
|
|
135
|
+
if (host === "[::1]")
|
|
134
136
|
return parsed;
|
|
135
137
|
if (host === "0.0.0.0")
|
|
136
138
|
return parsed;
|
|
@@ -198,7 +200,7 @@ function parseKoshaHint(model) {
|
|
|
198
200
|
function isForwardable(model) {
|
|
199
201
|
// Retired models are no longer served upstream — never offer them as a
|
|
200
202
|
// proxy route, even when their transport would otherwise be forwardable.
|
|
201
|
-
if (model
|
|
203
|
+
if (isRetired(model))
|
|
202
204
|
return false;
|
|
203
205
|
const descriptor = getProviderDescriptor(model.provider);
|
|
204
206
|
if (!descriptor)
|
|
@@ -357,12 +359,12 @@ function buildUpstreamUrl(model, registry) {
|
|
|
357
359
|
else {
|
|
358
360
|
base = (descriptor?.defaultBaseUrl ?? "").replace(/\/$/, "");
|
|
359
361
|
}
|
|
360
|
-
//
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
return `${base}
|
|
362
|
+
// Roots that serve chat-completions under /v1 declare it on the descriptor.
|
|
363
|
+
// A configured local base that already ends in /v1 isn't given a second one.
|
|
364
|
+
let path = descriptor?.chatCompletionsPath ?? "/chat/completions";
|
|
365
|
+
if (base.endsWith("/v1") && path.startsWith("/v1/"))
|
|
366
|
+
path = path.slice(3);
|
|
367
|
+
return `${base}${path}`;
|
|
366
368
|
}
|
|
367
369
|
/**
|
|
368
370
|
* Make caller- or upstream-derived text safe to reflect into a response
|
|
@@ -381,7 +383,9 @@ function headerSafe(value, max = 400) {
|
|
|
381
383
|
* usage seen, or null when the stream never carried one — on every terminal
|
|
382
384
|
* path, including the client cancelling or the upstream erroring.
|
|
383
385
|
*/
|
|
384
|
-
function observeOpenAIStreamUsage(upstream) {
|
|
386
|
+
function observeOpenAIStreamUsage(upstream, options = {}) {
|
|
387
|
+
if (options.dropUsageChunk)
|
|
388
|
+
return relayDroppingUsageChunk(upstream);
|
|
385
389
|
const decoder = new TextDecoder();
|
|
386
390
|
let buffer = "";
|
|
387
391
|
let lastUsage = null;
|
|
@@ -430,10 +434,86 @@ function observeOpenAIStreamUsage(upstream) {
|
|
|
430
434
|
}));
|
|
431
435
|
return { stream, usage };
|
|
432
436
|
}
|
|
437
|
+
/**
|
|
438
|
+
* The stream relay for a request kosha asked usage for on the caller's
|
|
439
|
+
* behalf: re-frames the SSE stream event by event, records the usage, and
|
|
440
|
+
* drops the usage-only chunk (`choices: []` plus `usage`) the caller didn't
|
|
441
|
+
* ask for. Every other event passes through byte for byte.
|
|
442
|
+
*/
|
|
443
|
+
function relayDroppingUsageChunk(upstream) {
|
|
444
|
+
const decoder = new TextDecoder();
|
|
445
|
+
const encoder = new TextEncoder();
|
|
446
|
+
let buffer = "";
|
|
447
|
+
let lastUsage = null;
|
|
448
|
+
let resolve;
|
|
449
|
+
const usage = new Promise((r) => {
|
|
450
|
+
resolve = r;
|
|
451
|
+
});
|
|
452
|
+
const keep = (event) => {
|
|
453
|
+
for (const line of event.split(/\r?\n/)) {
|
|
454
|
+
if (!line.startsWith("data:"))
|
|
455
|
+
continue;
|
|
456
|
+
const data = line.slice(5).trim();
|
|
457
|
+
if (!data || data === "[DONE]")
|
|
458
|
+
continue;
|
|
459
|
+
try {
|
|
460
|
+
const evt = JSON.parse(data);
|
|
461
|
+
if (evt && typeof evt === "object" && evt.usage && typeof evt.usage === "object") {
|
|
462
|
+
lastUsage = evt.usage;
|
|
463
|
+
if (Array.isArray(evt.choices) && evt.choices.length === 0)
|
|
464
|
+
return false;
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
catch {
|
|
468
|
+
// partial / non-JSON line — pass it through
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
return true;
|
|
472
|
+
};
|
|
473
|
+
const emit = (controller, flushAll) => {
|
|
474
|
+
const separator = /\r?\n\r?\n/g;
|
|
475
|
+
let start = 0;
|
|
476
|
+
for (let match = separator.exec(buffer); match; match = separator.exec(buffer)) {
|
|
477
|
+
const end = match.index + match[0].length;
|
|
478
|
+
const event = buffer.slice(start, end);
|
|
479
|
+
if (keep(event))
|
|
480
|
+
controller.enqueue(encoder.encode(event));
|
|
481
|
+
start = end;
|
|
482
|
+
}
|
|
483
|
+
buffer = buffer.slice(start);
|
|
484
|
+
if (flushAll && buffer) {
|
|
485
|
+
if (keep(buffer))
|
|
486
|
+
controller.enqueue(encoder.encode(buffer));
|
|
487
|
+
buffer = "";
|
|
488
|
+
}
|
|
489
|
+
// An event bigger than this has no business in a chat stream: pass it on.
|
|
490
|
+
if (buffer.length > 1_048_576) {
|
|
491
|
+
controller.enqueue(encoder.encode(buffer));
|
|
492
|
+
buffer = "";
|
|
493
|
+
}
|
|
494
|
+
};
|
|
495
|
+
const stream = upstream.pipeThrough(new TransformStream({
|
|
496
|
+
transform(chunk, controller) {
|
|
497
|
+
buffer += decoder.decode(chunk, { stream: true });
|
|
498
|
+
emit(controller, false);
|
|
499
|
+
},
|
|
500
|
+
flush(controller) {
|
|
501
|
+
buffer += decoder.decode();
|
|
502
|
+
emit(controller, true);
|
|
503
|
+
resolve(lastUsage);
|
|
504
|
+
},
|
|
505
|
+
cancel() {
|
|
506
|
+
resolve(lastUsage);
|
|
507
|
+
},
|
|
508
|
+
}));
|
|
509
|
+
return { stream, usage };
|
|
510
|
+
}
|
|
433
511
|
// ---------------------------------------------------------------------------
|
|
434
512
|
// Route registration
|
|
435
513
|
// ---------------------------------------------------------------------------
|
|
436
514
|
export function registerProxyRoutes(app, registry, shutdownSignal) {
|
|
515
|
+
// Providers that answered 400 to stream_options.include_usage.
|
|
516
|
+
const streamUsageRefused = new Set();
|
|
437
517
|
// Spend rows that didn't reach the ledger. Budgets are enforced against
|
|
438
518
|
// the ledger, so while any are held, budgeted requests are refused, like a
|
|
439
519
|
// failed read. Each budgeted request first writes the held rows again, in
|
|
@@ -547,7 +627,7 @@ export function registerProxyRoutes(app, registry, shutdownSignal) {
|
|
|
547
627
|
// We don't trust the value as authentication — it just buckets ledger
|
|
548
628
|
// rows and per-tenant budgets. The proxy still resolves real upstream
|
|
549
629
|
// credentials from env / CLI files as usual.
|
|
550
|
-
const
|
|
630
|
+
const taggedTenant = parseTenantTag(ctx.req.header("authorization"), ctx.req.header("x-kosha-tenant"));
|
|
551
631
|
// ── Budget gate ────────────────────────────────────────────────
|
|
552
632
|
// When a budget is configured we MUST fail closed: if the ledger is
|
|
553
633
|
// unreadable (permissions, FS error, partial mount) we cannot prove the
|
|
@@ -557,8 +637,21 @@ export function registerProxyRoutes(app, registry, shutdownSignal) {
|
|
|
557
637
|
// The global cap is always checked against TOTAL spend — never a
|
|
558
638
|
// tenant's slice — so a caller cannot escape it by inventing a fresh
|
|
559
639
|
// tenant tag per request. A per-tenant cap is an additional gate.
|
|
560
|
-
|
|
561
|
-
|
|
640
|
+
let budget;
|
|
641
|
+
let tenantBudget;
|
|
642
|
+
try {
|
|
643
|
+
budget = readMonthlyBudgetUsd();
|
|
644
|
+
tenantBudget = readTenantBudgetUsd();
|
|
645
|
+
}
|
|
646
|
+
catch (err) {
|
|
647
|
+
// A budget kosha can't read is not "no budget": refuse until it's fixed.
|
|
648
|
+
const message = err instanceof BudgetConfigError ? err.message : "budget could not be read";
|
|
649
|
+
console.error(`kosha: ${message}`);
|
|
650
|
+
return ctx.json({ error: `budget enforcement unavailable — ${message}` }, 503);
|
|
651
|
+
}
|
|
652
|
+
// Leaving the tenant tag off must not skip a tenant cap: untagged
|
|
653
|
+
// requests share one bucket.
|
|
654
|
+
const tenant = taggedTenant ?? (tenantBudget !== null ? UNTAGGED_TENANT : null);
|
|
562
655
|
let spent = 0;
|
|
563
656
|
let tenantSpent = 0;
|
|
564
657
|
if (budget !== null || tenantBudget !== null) {
|
|
@@ -583,13 +676,16 @@ export function registerProxyRoutes(app, registry, shutdownSignal) {
|
|
|
583
676
|
budgetUsd: budget ?? tenantBudget,
|
|
584
677
|
}, 503);
|
|
585
678
|
}
|
|
586
|
-
|
|
679
|
+
// A $0 budget refuses paid routes one by one below, so free ones
|
|
680
|
+
// (local runtimes, plans you hold) still run; any other reached cap
|
|
681
|
+
// stops everything here.
|
|
682
|
+
if (budget !== null && spent >= budget && (budget > 0 || spent > 0)) {
|
|
587
683
|
return ctx.json({ error: "monthly budget exceeded", spentUsd: spent, budgetUsd: budget }, 429, {
|
|
588
684
|
"x-kosha-budget-remaining-usd": Math.max(0, budget - spent).toFixed(4),
|
|
589
685
|
"x-kosha-budget-usd": budget.toFixed(2),
|
|
590
686
|
});
|
|
591
687
|
}
|
|
592
|
-
if (tenantBudget !== null && tenantSpent >= tenantBudget) {
|
|
688
|
+
if (tenantBudget !== null && tenantSpent >= tenantBudget && (tenantBudget > 0 || tenantSpent > 0)) {
|
|
593
689
|
return ctx.json({ error: "tenant monthly budget exceeded", tenant, spentUsd: tenantSpent, budgetUsd: tenantBudget }, 429, {
|
|
594
690
|
"x-kosha-budget-remaining-usd": Math.max(0, tenantBudget - tenantSpent).toFixed(4),
|
|
595
691
|
"x-kosha-budget-usd": tenantBudget.toFixed(2),
|
|
@@ -618,9 +714,23 @@ export function registerProxyRoutes(app, registry, shutdownSignal) {
|
|
|
618
714
|
const wantsStream = body.stream === true;
|
|
619
715
|
const includeUsage = wantsStream && body.stream_options?.include_usage === true;
|
|
620
716
|
for (const model of candidates) {
|
|
621
|
-
|
|
622
|
-
const
|
|
717
|
+
// A key in config outranks env vars, exactly as it does for discovery.
|
|
718
|
+
const configuredKey = registry.configuredApiKey(model.provider);
|
|
719
|
+
const credential = resolver
|
|
720
|
+
? await resolver.resolve(model.provider, configuredKey)
|
|
721
|
+
: fallbackRegistryCredential(model.provider, configuredKey);
|
|
623
722
|
const descriptor = getProviderDescriptor(model.provider);
|
|
723
|
+
// A key from a shared env var (one vendor's regions and plans read the
|
|
724
|
+
// same one) belongs only to the providers that accepted it at
|
|
725
|
+
// discovery. Sending it, and the prompt, to a sibling region that
|
|
726
|
+
// never accepted it leaks both across a data-residency line.
|
|
727
|
+
if (credential.shared && registry.provider(model.provider)?.authenticated !== true) {
|
|
728
|
+
attemptChain.push(`${model.provider}:unverified-shared-key`);
|
|
729
|
+
continue;
|
|
730
|
+
}
|
|
731
|
+
// A Claude subscription OAuth token is for Claude's own apps, not for
|
|
732
|
+
// a proxy to spend: it is not an API key and isn't forwarded.
|
|
733
|
+
const bearerToken = credential.apiKey ?? (credential.source === "oauth" ? undefined : credential.accessToken);
|
|
624
734
|
if (descriptor && providerExecutionCredentialRequired(descriptor) && !bearerToken) {
|
|
625
735
|
const envHint = descriptor.credentialEnvVars.length
|
|
626
736
|
? descriptor.credentialEnvVars.join(" or ")
|
|
@@ -679,6 +789,11 @@ export function registerProxyRoutes(app, registry, shutdownSignal) {
|
|
|
679
789
|
let upstreamBody;
|
|
680
790
|
let upstreamUrlString;
|
|
681
791
|
let wireNotes = [];
|
|
792
|
+
// Without include_usage an OpenAI stream carries no usage, and the
|
|
793
|
+
// ledger would keep a guess (512 output tokens by default). Ask for
|
|
794
|
+
// it; the usage-only chunk is dropped again if the caller didn't.
|
|
795
|
+
const injectUsage = !usesAnthropicWire && wantsStream && !includeUsage && !streamUsageRefused.has(model.provider);
|
|
796
|
+
let plainBody = null;
|
|
682
797
|
if (usesAnthropicWire) {
|
|
683
798
|
// Anthropic /v1/messages: auth via x-api-key + anthropic-version,
|
|
684
799
|
// body translated from OpenAI chat-completions on the way in,
|
|
@@ -720,6 +835,15 @@ export function registerProxyRoutes(app, registry, shutdownSignal) {
|
|
|
720
835
|
if (bearerToken)
|
|
721
836
|
upstreamHeaders.authorization = `Bearer ${bearerToken}`;
|
|
722
837
|
upstreamBody = JSON.stringify({ ...body, model: model.id });
|
|
838
|
+
if (injectUsage) {
|
|
839
|
+
plainBody = upstreamBody;
|
|
840
|
+
const callerOptions = body.stream_options && typeof body.stream_options === "object" ? body.stream_options : {};
|
|
841
|
+
upstreamBody = JSON.stringify({
|
|
842
|
+
...body,
|
|
843
|
+
model: model.id,
|
|
844
|
+
stream_options: { ...callerOptions, include_usage: true },
|
|
845
|
+
});
|
|
846
|
+
}
|
|
723
847
|
upstreamUrlString = safeUrl.toString();
|
|
724
848
|
}
|
|
725
849
|
fetchAttempts += 1;
|
|
@@ -743,6 +867,23 @@ export function registerProxyRoutes(app, registry, shutdownSignal) {
|
|
|
743
867
|
body: upstreamBody,
|
|
744
868
|
signal,
|
|
745
869
|
});
|
|
870
|
+
// A 400 here may be the provider refusing stream_options rather
|
|
871
|
+
// than the caller's request: retry once as the caller sent it. Only
|
|
872
|
+
// when that retry gets past the 400 was it the option, so only then
|
|
873
|
+
// stop asking this provider; a bad request (any caller can send
|
|
874
|
+
// one) used to turn off usage reconciliation until restart.
|
|
875
|
+
if (plainBody !== null && upstream.status === 400) {
|
|
876
|
+
await upstream.body?.cancel().catch(() => { });
|
|
877
|
+
upstream = await fetch(upstreamUrlString, {
|
|
878
|
+
method: "POST",
|
|
879
|
+
headers: upstreamHeaders,
|
|
880
|
+
body: plainBody,
|
|
881
|
+
signal,
|
|
882
|
+
});
|
|
883
|
+
if (upstream.status !== 400)
|
|
884
|
+
streamUsageRefused.add(model.provider);
|
|
885
|
+
plainBody = null;
|
|
886
|
+
}
|
|
746
887
|
}
|
|
747
888
|
catch (err) {
|
|
748
889
|
releaseTimer();
|
|
@@ -758,17 +899,26 @@ export function registerProxyRoutes(app, registry, shutdownSignal) {
|
|
|
758
899
|
}
|
|
759
900
|
// A retryable upstream failure (5xx) rolls over to the next route,
|
|
760
901
|
// unless we've spent our fetch budget — then we surface it.
|
|
761
|
-
|
|
902
|
+
// A shared key that a plan host listed models for may still be a
|
|
903
|
+
// pay-as-you-go key the plan refuses to bill: then the paid route for
|
|
904
|
+
// the same model should get the request, not the caller a 401.
|
|
905
|
+
const planRefusedSharedKey = (isPlanBilled(model) || descriptor?.subscriptionPlan === true) &&
|
|
906
|
+
credential.shared === true &&
|
|
907
|
+
(upstream.status === 401 || upstream.status === 403);
|
|
908
|
+
if ((upstream.status >= 500 || planRefusedSharedKey) && fetchAttempts < MAX_FETCHES) {
|
|
762
909
|
releaseTimer();
|
|
763
910
|
attemptChain.push(`${model.provider}:${upstream.status}`);
|
|
764
911
|
await upstream.body?.cancel().catch(() => { });
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
912
|
+
// A refused key says nothing about the provider's health.
|
|
913
|
+
if (!planRefusedSharedKey) {
|
|
914
|
+
registry.recordProxyOutcome(model.provider, {
|
|
915
|
+
ok: false,
|
|
916
|
+
status: upstream.status,
|
|
917
|
+
latencyMs: Date.now() - attemptStart,
|
|
918
|
+
errorType: "transport",
|
|
919
|
+
});
|
|
920
|
+
bumpProxyMetric(model.provider, false, Date.now() - attemptStart);
|
|
921
|
+
}
|
|
772
922
|
continue;
|
|
773
923
|
}
|
|
774
924
|
attemptChain.push(`${model.provider}:${upstream.status}`);
|
|
@@ -959,7 +1109,7 @@ export function registerProxyRoutes(app, registry, shutdownSignal) {
|
|
|
959
1109
|
// usage chunk (present when the caller asked for include_usage).
|
|
960
1110
|
// Estimate now; reconcile when the stream ends with usage.
|
|
961
1111
|
recordSpend(null);
|
|
962
|
-
const { stream, usage } = observeOpenAIStreamUsage(upstream.body);
|
|
1112
|
+
const { stream, usage } = observeOpenAIStreamUsage(upstream.body, { dropUsageChunk: plainBody !== null });
|
|
963
1113
|
usage.then((u) => recordAdjustment(actualCostFromUsage(model, u, "openai"))).catch(() => { });
|
|
964
1114
|
releaseTimer();
|
|
965
1115
|
return new Response(stream, { status: upstream.status, headers: responseHeaders });
|