saros-proxy 0.7.4 → 0.9.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/README.md +74 -44
- package/dist/cli/daemon.js +4 -0
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/dsh-config.d.ts +32 -0
- package/dist/cli/dsh-config.js +122 -0
- package/dist/cli/dsh-config.js.map +1 -0
- package/dist/cli/harness-models.d.ts +26 -2
- package/dist/cli/harness-models.js +192 -2
- package/dist/cli/harness-models.js.map +1 -1
- package/dist/cli/harness-sync.d.ts +3 -6
- package/dist/cli/harness-sync.js +14 -7
- package/dist/cli/harness-sync.js.map +1 -1
- package/dist/cli/help.js +2 -2
- package/dist/cli/omp-config.js +11 -1
- package/dist/cli/omp-config.js.map +1 -1
- package/dist/cli/overview.js +2 -1
- package/dist/cli/overview.js.map +1 -1
- package/dist/cli/pi-config.js +11 -1
- package/dist/cli/pi-config.js.map +1 -1
- package/dist/cli/setup.d.ts +6 -10
- package/dist/cli/setup.js +100 -232
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/ui.d.ts +0 -1
- package/dist/cli/ui.js +0 -16
- package/dist/cli/ui.js.map +1 -1
- package/dist/cli/usage.d.ts +12 -0
- package/dist/cli/usage.js +116 -0
- package/dist/cli/usage.js.map +1 -0
- package/dist/config.d.ts +13 -17
- package/dist/config.js +29 -78
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +6 -5
- package/dist/constants.js +10 -5
- package/dist/constants.js.map +1 -1
- package/dist/index.js +7 -25
- package/dist/index.js.map +1 -1
- package/dist/model-stats.d.ts +20 -0
- package/dist/model-stats.js +135 -0
- package/dist/model-stats.js.map +1 -0
- package/dist/providers/commandcode.d.ts +17 -0
- package/dist/providers/commandcode.js +232 -0
- package/dist/providers/commandcode.js.map +1 -0
- package/dist/providers/index.d.ts +43 -0
- package/dist/providers/index.js +75 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/infer.d.ts +23 -0
- package/dist/providers/infer.js +13 -0
- package/dist/providers/infer.js.map +1 -0
- package/dist/providers/opencode-go.d.ts +4 -0
- package/dist/providers/opencode-go.js +179 -0
- package/dist/providers/opencode-go.js.map +1 -0
- package/dist/providers/types.d.ts +118 -0
- package/dist/providers/types.js +10 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/proxy-logic.d.ts +46 -22
- package/dist/proxy-logic.js +146 -106
- package/dist/proxy-logic.js.map +1 -1
- package/dist/proxy.d.ts +20 -2
- package/dist/proxy.js +231 -57
- package/dist/proxy.js.map +1 -1
- package/dist/usage-client.d.ts +41 -0
- package/dist/usage-client.js +124 -0
- package/dist/usage-client.js.map +1 -0
- package/dist/validation.d.ts +5 -5
- package/dist/validation.js +7 -9
- package/dist/validation.js.map +1 -1
- package/package.json +6 -2
package/dist/proxy.js
CHANGED
|
@@ -8,11 +8,144 @@ import { Hono } from 'hono';
|
|
|
8
8
|
import { cors } from 'hono/cors';
|
|
9
9
|
import { rateLimiter } from 'hono-rate-limiter';
|
|
10
10
|
import crypto from 'node:crypto';
|
|
11
|
+
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
12
|
+
import { homedir } from 'node:os';
|
|
13
|
+
import { join } from 'node:path';
|
|
11
14
|
import { createProxyState, selectKeyForRequest, failoverRequest, completeRequest, markKeyFailed, markKeySucceeded, classifyHttpError, } from './proxy-logic.js';
|
|
12
15
|
import { logger, maskKey } from './logger.js';
|
|
13
|
-
import { getAllUsage, isScraperRunning } from './scraper.js';
|
|
14
16
|
import { MAX_BODY_SIZE, MAX_RETRIES, RATE_LIMIT_WINDOW_MS, RATE_LIMIT_MAX, } from './constants.js';
|
|
15
17
|
import { getModelsList } from './models-fetcher.js';
|
|
18
|
+
import { maybeRefreshUsage } from './usage-client.js';
|
|
19
|
+
import { recordModelRequest } from './model-stats.js';
|
|
20
|
+
import { getProvider, inferProvider } from './providers/index.js';
|
|
21
|
+
/** Canonical client-facing chat route prefix (the opencode-go shape). */
|
|
22
|
+
const CANONICAL_CHAT_BASE = '/zen/go/v1';
|
|
23
|
+
/**
|
|
24
|
+
* Resolve the upstream URL for one attempt: per-provider base URL + path
|
|
25
|
+
* remapping. Clients always speak canonical saros routes (/zen/go/v1/<rest>,
|
|
26
|
+
* the opencode-go shape); requests routed to a provider with a different
|
|
27
|
+
* chat surface get the prefix remapped (e.g. /provider/v1 for commandcode).
|
|
28
|
+
*/
|
|
29
|
+
export function resolveUpstreamUrl(config, provider, path) {
|
|
30
|
+
const base = (config.upstreams?.[provider.id] ?? (provider.id === 'opencode-go' ? config.upstreamBaseUrl : provider.baseUrl))
|
|
31
|
+
.replace(/\/+$/, '');
|
|
32
|
+
if (provider.chatBasePath === CANONICAL_CHAT_BASE) {
|
|
33
|
+
return buildUpstreamUrl(base, path);
|
|
34
|
+
}
|
|
35
|
+
const remapped = path.startsWith(CANONICAL_CHAT_BASE)
|
|
36
|
+
? provider.chatBasePath + path.slice(CANONICAL_CHAT_BASE.length)
|
|
37
|
+
: path;
|
|
38
|
+
return buildUpstreamUrl(base, remapped);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Extract a provider-suffix routing hint from a model id
|
|
42
|
+
* (e.g. 'claude-…@commandcode' → 'commandcode'). Returns null when absent.
|
|
43
|
+
*/
|
|
44
|
+
export function parseProviderSuffix(modelId) {
|
|
45
|
+
if (!modelId)
|
|
46
|
+
return null;
|
|
47
|
+
const at = modelId.lastIndexOf('@');
|
|
48
|
+
if (at <= 0 || at === modelId.length - 1)
|
|
49
|
+
return null;
|
|
50
|
+
return modelId.slice(at + 1);
|
|
51
|
+
}
|
|
52
|
+
/** Strip the @provider routing suffix from a model id for upstream forwarding. */
|
|
53
|
+
export function stripProviderSuffix(modelId) {
|
|
54
|
+
const at = modelId.lastIndexOf('@');
|
|
55
|
+
return at > 0 ? modelId.slice(0, at) : modelId;
|
|
56
|
+
}
|
|
57
|
+
function generateRequestId() {
|
|
58
|
+
return crypto.randomUUID();
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Opt-in diagnostics: when SAROS_CAPTURE_4XX=1, write the full request
|
|
62
|
+
* context of every upstream 4xx to <config dir>/captures/ so provider-side
|
|
63
|
+
* errors (role validation, plan gating) can be replayed and debugged.
|
|
64
|
+
* Never enabled by default — bodies may contain user content.
|
|
65
|
+
*/
|
|
66
|
+
function captureFailedRequest(ctx, status, errorBody) {
|
|
67
|
+
if (process.env.SAROS_CAPTURE_4XX !== '1')
|
|
68
|
+
return;
|
|
69
|
+
if (status < 400 || status >= 500)
|
|
70
|
+
return;
|
|
71
|
+
try {
|
|
72
|
+
const dir = join(homedir(), '.config', 'saros', 'captures');
|
|
73
|
+
mkdirSync(dir, { recursive: true });
|
|
74
|
+
const file = join(dir, `${Date.now()}-${ctx.requestId.slice(0, 8)}.json`);
|
|
75
|
+
writeFileSync(file, JSON.stringify({
|
|
76
|
+
ts: new Date().toISOString(),
|
|
77
|
+
requestId: ctx.requestId,
|
|
78
|
+
status,
|
|
79
|
+
method: ctx.method,
|
|
80
|
+
path: ctx.path,
|
|
81
|
+
model: ctx.modelId ?? null,
|
|
82
|
+
kind: ctx.kind,
|
|
83
|
+
upstreamError: errorBody.slice(0, 2000),
|
|
84
|
+
requestBody: ctx.bodyText.slice(0, 100_000),
|
|
85
|
+
}, null, 2), 'utf-8');
|
|
86
|
+
logger.warn({ requestId: ctx.requestId, file }, 'captured failing request (SAROS_CAPTURE_4XX)');
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
// diagnostics must never break the proxy
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Rewrite the model field inside a JSON request body. Returns the original
|
|
94
|
+
* text unchanged when the body isn't valid JSON or has no model field.
|
|
95
|
+
*/
|
|
96
|
+
function rewriteModelInBody(bodyText, modelId) {
|
|
97
|
+
try {
|
|
98
|
+
const parsed = JSON.parse(bodyText);
|
|
99
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
100
|
+
return bodyText;
|
|
101
|
+
if (typeof parsed.model !== 'string')
|
|
102
|
+
return bodyText;
|
|
103
|
+
parsed.model = modelId;
|
|
104
|
+
return JSON.stringify(parsed);
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return bodyText;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Rewrite a request's model id for the provider about to serve it.
|
|
112
|
+
*
|
|
113
|
+
* 1. '@provider' suffix → strip it (the suffix is saros's routing shim).
|
|
114
|
+
* 2. Otherwise, when the serving provider names the same model differently
|
|
115
|
+
* (bare name matches its catalog under a vendor-prefixed id — e.g.
|
|
116
|
+
* 'deepseek-v4-flash' → 'deepseek/deepseek-v4-flash' on commandcode),
|
|
117
|
+
* rewrite to the provider's native id so the upstream recognizes it.
|
|
118
|
+
* This is what makes cross-provider round-robin seamless: one id in,
|
|
119
|
+
* any of the serving keys out.
|
|
120
|
+
*/
|
|
121
|
+
function rewriteModelForProvider(bodyText, modelId, provider) {
|
|
122
|
+
if (!modelId)
|
|
123
|
+
return bodyText;
|
|
124
|
+
if (parseProviderSuffix(modelId)) {
|
|
125
|
+
return rewriteModelInBody(bodyText, stripProviderSuffix(modelId));
|
|
126
|
+
}
|
|
127
|
+
const bare = modelId.split('/').pop() ?? modelId;
|
|
128
|
+
const native = provider.resolveNativeId?.(bare.toLowerCase());
|
|
129
|
+
if (native && native !== modelId) {
|
|
130
|
+
return rewriteModelInBody(bodyText, native);
|
|
131
|
+
}
|
|
132
|
+
return bodyText;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Provider for a key snapshot. Suffix-routed requests (@provider model ids)
|
|
136
|
+
* pin the provider; otherwise structural inference from the key itself.
|
|
137
|
+
*/
|
|
138
|
+
function providerForKey(key, config, modelId) {
|
|
139
|
+
const suffixProvider = parseProviderSuffix(modelId);
|
|
140
|
+
if (suffixProvider) {
|
|
141
|
+
const pinned = getProvider(suffixProvider);
|
|
142
|
+
if (pinned)
|
|
143
|
+
return pinned;
|
|
144
|
+
}
|
|
145
|
+
const inferred = inferProvider({ label: key.label, key: key.key });
|
|
146
|
+
void config;
|
|
147
|
+
return getProvider(inferred) ?? getProvider('opencode-go');
|
|
148
|
+
}
|
|
16
149
|
// ---------------------------------------------------------------------------
|
|
17
150
|
// Helpers
|
|
18
151
|
// ---------------------------------------------------------------------------
|
|
@@ -45,9 +178,6 @@ class TimeoutError extends Error {
|
|
|
45
178
|
this.name = 'TimeoutError';
|
|
46
179
|
}
|
|
47
180
|
}
|
|
48
|
-
function generateRequestId() {
|
|
49
|
-
return crypto.randomUUID();
|
|
50
|
-
}
|
|
51
181
|
/**
|
|
52
182
|
* Build upstream URL from base + request path.
|
|
53
183
|
*/
|
|
@@ -62,8 +192,11 @@ export function buildUpstreamUrl(base, path) {
|
|
|
62
192
|
return normalizedBase + normalizedPath;
|
|
63
193
|
}
|
|
64
194
|
/**
|
|
65
|
-
* Clean headers for upstream forwarding: remove hop-by-hop headers
|
|
66
|
-
*
|
|
195
|
+
* Clean headers for upstream forwarding: remove hop-by-hop headers,
|
|
196
|
+
* pre-existing Authorization, and content-length (the forwarded body may be
|
|
197
|
+
* rewritten — model-id aliasing / suffix strip — so a stale content-length
|
|
198
|
+
* makes the upstream wait for bytes that never arrive; undici recomputes it
|
|
199
|
+
* from the real body).
|
|
67
200
|
*/
|
|
68
201
|
export function buildUpstreamHeaders(incoming, bearerToken) {
|
|
69
202
|
const headers = new Headers();
|
|
@@ -77,7 +210,8 @@ export function buildUpstreamHeaders(incoming, bearerToken) {
|
|
|
77
210
|
lower === 'te' ||
|
|
78
211
|
lower === 'transfer-encoding' ||
|
|
79
212
|
lower === 'upgrade' ||
|
|
80
|
-
lower === 'authorization'
|
|
213
|
+
lower === 'authorization' ||
|
|
214
|
+
lower === 'content-length') {
|
|
81
215
|
continue;
|
|
82
216
|
}
|
|
83
217
|
headers.set(key, value);
|
|
@@ -106,6 +240,15 @@ export function buildDownstreamHeaders(upstreamHeaders) {
|
|
|
106
240
|
lower === 'upgrade' ||
|
|
107
241
|
// Security-sensitive
|
|
108
242
|
lower === 'set-cookie' ||
|
|
243
|
+
// Body is already decoded: Node fetch transparently gunzips upstream
|
|
244
|
+
// responses, so forwarding content-encoding would make clients try to
|
|
245
|
+
// decompress plain text (found live against api.commandcode.ai).
|
|
246
|
+
lower === 'content-encoding' ||
|
|
247
|
+
// The forwarded body may be rewritten (model-id aliasing/suffix strip),
|
|
248
|
+
// so a forwarded content-length can disagree with the actual body and
|
|
249
|
+
// hang the upstream waiting for missing bytes (found live). Undici
|
|
250
|
+
// recomputes content-length from the real body.
|
|
251
|
+
lower === 'content-length' ||
|
|
109
252
|
// Internal debug
|
|
110
253
|
lower === 'x-request-id' ||
|
|
111
254
|
// Response constructor recalculates content-length
|
|
@@ -128,28 +271,19 @@ export function isStreamingRequest(bodyText) {
|
|
|
128
271
|
return false;
|
|
129
272
|
}
|
|
130
273
|
}
|
|
131
|
-
/**
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
if (accountUsage) {
|
|
145
|
-
usageMap.set(key.label, accountUsage.usage);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
|
-
if (usageMap.size === 0)
|
|
150
|
-
return undefined;
|
|
151
|
-
// Caller ensures config.scraping is defined when scraping is enabled
|
|
152
|
-
return { usageMap, usageThreshold: config.scraping?.usageThreshold ?? 50 };
|
|
274
|
+
/** Single JSON parse of a request body; null on invalid/missing input. */
|
|
275
|
+
function parseRequestBody(bodyText) {
|
|
276
|
+
if (!bodyText)
|
|
277
|
+
return null;
|
|
278
|
+
try {
|
|
279
|
+
const parsed = JSON.parse(bodyText);
|
|
280
|
+
return parsed && typeof parsed === 'object' && !Array.isArray(parsed)
|
|
281
|
+
? parsed
|
|
282
|
+
: null;
|
|
283
|
+
}
|
|
284
|
+
catch {
|
|
285
|
+
return null;
|
|
286
|
+
}
|
|
153
287
|
}
|
|
154
288
|
/**
|
|
155
289
|
* Shared retry loop for both streaming and non-streaming requests.
|
|
@@ -166,8 +300,7 @@ async function executeWithRetry(opts) {
|
|
|
166
300
|
incomingHeaders: opts.incomingHeaders,
|
|
167
301
|
bodyText: opts.bodyText,
|
|
168
302
|
kind: opts.kind,
|
|
169
|
-
|
|
170
|
-
keyOptions: opts.config.scraping?.enabled ? buildUsageKeyOptions(opts.config) : undefined,
|
|
303
|
+
modelId: opts.modelId,
|
|
171
304
|
onSuccess: opts.onSuccess,
|
|
172
305
|
};
|
|
173
306
|
let lastError = null;
|
|
@@ -185,9 +318,17 @@ async function executeSingleAttempt(attempt, ctx) {
|
|
|
185
318
|
return { kind: 'done', response: buildNoKeysResponse(ctx.state, ctx.requestId, ctx.kind, attempt) };
|
|
186
319
|
}
|
|
187
320
|
logKeyAttempt(ctx.requestId, key, attempt, ctx.kind);
|
|
188
|
-
|
|
321
|
+
// Per-attempt upstream: keys may be mixed-provider within one failover chain.
|
|
322
|
+
// Suffix-routed models (@provider) pin the provider and lose the suffix
|
|
323
|
+
// in the forwarded body; the upstream never sees saros's routing shim.
|
|
324
|
+
const provider = providerForKey(key, ctx.config, ctx.modelId);
|
|
325
|
+
const upstreamUrl = resolveUpstreamUrl(ctx.config, provider, ctx.path);
|
|
326
|
+
const outboundBody = ctx.bodyText
|
|
327
|
+
? rewriteModelForProvider(ctx.bodyText, ctx.modelId, provider)
|
|
328
|
+
: ctx.bodyText;
|
|
329
|
+
const fetchOptions = buildFetchOptions(ctx.method, outboundBody, ctx.kind, ctx.incomingHeaders, key.key, provider);
|
|
189
330
|
try {
|
|
190
|
-
const response = await fetchWithTimeout(
|
|
331
|
+
const response = await fetchWithTimeout(upstreamUrl, fetchOptions, ctx.config.requestTimeoutMs);
|
|
191
332
|
if (response.ok) {
|
|
192
333
|
markKeySucceeded(ctx.state, key.label);
|
|
193
334
|
completeRequest(ctx.state, ctx.requestId, true);
|
|
@@ -204,11 +345,17 @@ async function executeSingleAttempt(attempt, ctx) {
|
|
|
204
345
|
}
|
|
205
346
|
function pickKey(ctx, attempt) {
|
|
206
347
|
return attempt === 0
|
|
207
|
-
? selectKeyForRequest(ctx.state, ctx.requestId, ctx.
|
|
208
|
-
: failoverRequest(ctx.state, ctx.requestId
|
|
348
|
+
? selectKeyForRequest(ctx.state, ctx.requestId, ctx.modelId)
|
|
349
|
+
: failoverRequest(ctx.state, ctx.requestId);
|
|
209
350
|
}
|
|
210
|
-
function buildFetchOptions(method, bodyText, kind, incomingHeaders, bearerToken) {
|
|
351
|
+
function buildFetchOptions(method, bodyText, kind, incomingHeaders, bearerToken, provider) {
|
|
211
352
|
const headers = buildUpstreamHeaders(incomingHeaders, bearerToken);
|
|
353
|
+
// Provider-specific identity headers (e.g. CommandCode CLI headers)
|
|
354
|
+
if (provider?.extraUpstreamHeaders) {
|
|
355
|
+
for (const [name, value] of Object.entries(provider.extraUpstreamHeaders())) {
|
|
356
|
+
headers.set(name, value);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
212
359
|
const options = { method, headers };
|
|
213
360
|
if (!bodyText)
|
|
214
361
|
return options;
|
|
@@ -224,6 +371,7 @@ async function handleUpstreamErrorResponse(response, ctx, key) {
|
|
|
224
371
|
const errorBody = await response.text();
|
|
225
372
|
const errorType = classifyHttpError(response.status, errorBody);
|
|
226
373
|
logUpstreamError(ctx.requestId, key, response.status, errorType, errorBody, ctx.kind);
|
|
374
|
+
captureFailedRequest(ctx, response.status, errorBody);
|
|
227
375
|
if (errorType === 'RequestFault') {
|
|
228
376
|
// Client error — don't retry, don't penalise the key
|
|
229
377
|
completeRequest(ctx.state, ctx.requestId, false);
|
|
@@ -238,13 +386,16 @@ async function handleUpstreamErrorResponse(response, ctx, key) {
|
|
|
238
386
|
}
|
|
239
387
|
function handleNetworkError(err, ctx, key) {
|
|
240
388
|
const lastError = err instanceof Error ? err : new Error(String(err));
|
|
389
|
+
// Timeouts / connection errors are shared-upstream failures, not per-key
|
|
390
|
+
// faults: penalising them disabled every key during upstream hangs and
|
|
391
|
+
// locked the proxy into "all keys unavailable" until cooldown expired.
|
|
241
392
|
if (lastError instanceof TimeoutError) {
|
|
242
393
|
logTimeout(ctx.requestId, key, ctx.config.requestTimeoutMs, ctx.kind);
|
|
243
|
-
markKeyFailed(ctx.state, key.label, 'ServerFault');
|
|
244
|
-
return { kind: 'retry', lastError };
|
|
245
394
|
}
|
|
246
|
-
|
|
247
|
-
|
|
395
|
+
else {
|
|
396
|
+
logNetworkError(ctx.requestId, key, err, ctx.kind);
|
|
397
|
+
}
|
|
398
|
+
markKeyFailed(ctx.state, key.label, 'NetworkFault');
|
|
248
399
|
return { kind: 'retry', lastError };
|
|
249
400
|
}
|
|
250
401
|
function buildNoKeysResponse(state, requestId, kind, attempt) {
|
|
@@ -346,6 +497,7 @@ async function handleWithFailover(opts) {
|
|
|
346
497
|
incomingHeaders: opts.incomingHeaders,
|
|
347
498
|
bodyText: opts.bodyText,
|
|
348
499
|
kind: 'standard',
|
|
500
|
+
modelId: opts.modelId,
|
|
349
501
|
onSuccess: standardSuccessHandler,
|
|
350
502
|
maxRetries: opts.maxRetries ?? MAX_RETRIES,
|
|
351
503
|
});
|
|
@@ -365,6 +517,7 @@ async function handleStreamingRequest(opts) {
|
|
|
365
517
|
incomingHeaders: opts.incomingHeaders,
|
|
366
518
|
bodyText: opts.bodyText,
|
|
367
519
|
kind: 'streaming',
|
|
520
|
+
modelId: opts.modelId,
|
|
368
521
|
onSuccess: streamingSuccessHandler,
|
|
369
522
|
maxRetries: opts.maxRetries ?? MAX_RETRIES,
|
|
370
523
|
});
|
|
@@ -437,6 +590,24 @@ export function createProxyApp(config) {
|
|
|
437
590
|
circuitBreakerThreshold: config.circuitBreakerThreshold,
|
|
438
591
|
circuitBreakerCooldownMs: config.circuitBreakerCooldownMs,
|
|
439
592
|
});
|
|
593
|
+
// Model→provider affinity: requests naming a provider-specific model
|
|
594
|
+
// (e.g. commandcode's vendor-prefixed ids) are routed to a matching key
|
|
595
|
+
// first; 'maybe' providers remain as fallback. Bare-name matching lets
|
|
596
|
+
// shared models (deepseek-v4-flash etc.) rotate across ALL serving keys
|
|
597
|
+
// cross-provider. No-op for single-provider pools and when no provider
|
|
598
|
+
// claims the model.
|
|
599
|
+
state.affinityResolver = (providerId, modelId) => {
|
|
600
|
+
const provider = getProvider(providerId);
|
|
601
|
+
if (!provider)
|
|
602
|
+
return 'maybe';
|
|
603
|
+
const direct = provider.modelAffinity(modelId);
|
|
604
|
+
if (direct !== 'maybe')
|
|
605
|
+
return direct;
|
|
606
|
+
// Bare-name cross-check: 'deepseek-v4-flash' may be commandcode's
|
|
607
|
+
// 'deepseek/deepseek-v4-flash'.
|
|
608
|
+
const bare = (modelId.split('/').pop() ?? modelId).toLowerCase();
|
|
609
|
+
return provider.modelAffinityByName?.(bare) ?? 'maybe';
|
|
610
|
+
};
|
|
440
611
|
const app = new Hono();
|
|
441
612
|
// --- Rate limiting (prevent DoS and key exhaustion) ---
|
|
442
613
|
app.use('*', rateLimiter({
|
|
@@ -479,21 +650,6 @@ export function createProxyApp(config) {
|
|
|
479
650
|
const enabledCount = keys.filter((k) => k.enabled).length;
|
|
480
651
|
const disabledCount = keys.length - enabledCount;
|
|
481
652
|
const activeCount = state.activeRequests.size;
|
|
482
|
-
// Build scraping status
|
|
483
|
-
const scrapingStatus = config.scraping?.enabled
|
|
484
|
-
? {
|
|
485
|
-
enabled: true,
|
|
486
|
-
running: isScraperRunning(),
|
|
487
|
-
intervalMs: config.scraping.intervalMs,
|
|
488
|
-
usageThreshold: config.scraping.usageThreshold,
|
|
489
|
-
accounts: Array.from(getAllUsage().entries()).map(([workspaceId, data]) => ({
|
|
490
|
-
workspaceId,
|
|
491
|
-
usage: data.usage,
|
|
492
|
-
lastScrapedAt: data.lastScrapedAt.toISOString(),
|
|
493
|
-
lastError: data.lastError ?? null,
|
|
494
|
-
})),
|
|
495
|
-
}
|
|
496
|
-
: { enabled: false };
|
|
497
653
|
return c.json({
|
|
498
654
|
status: 'ok',
|
|
499
655
|
uptime: process.uptime(),
|
|
@@ -503,7 +659,14 @@ export function createProxyApp(config) {
|
|
|
503
659
|
activeRequests: activeCount,
|
|
504
660
|
circuitBreakerThreshold: state.circuitBreakerThreshold,
|
|
505
661
|
circuitBreakerCooldownMs: state.circuitBreakerCooldownMs,
|
|
506
|
-
|
|
662
|
+
// Per-provider key counts (multi-provider pools)
|
|
663
|
+
providers: keys.reduce((acc, k) => {
|
|
664
|
+
const entry = (acc[k.provider] ??= { total: 0, enabled: 0 });
|
|
665
|
+
entry.total++;
|
|
666
|
+
if (k.enabled)
|
|
667
|
+
entry.enabled++;
|
|
668
|
+
return acc;
|
|
669
|
+
}, {}),
|
|
507
670
|
});
|
|
508
671
|
});
|
|
509
672
|
// --- Models discovery endpoint (OpenAI-compatible) ---
|
|
@@ -529,8 +692,17 @@ export function createProxyApp(config) {
|
|
|
529
692
|
if (bodyText.length > MAX_BODY_SIZE) {
|
|
530
693
|
return c.json({ error: 'Request body too large', requestId }, 413);
|
|
531
694
|
}
|
|
695
|
+
maybeRefreshUsage(state, config);
|
|
696
|
+
// Parse once: used for both streaming detection and model tracking
|
|
697
|
+
const parsedBody = parseRequestBody(bodyText);
|
|
698
|
+
// Track most-used models for `saros-proxy usage` (best-effort)
|
|
699
|
+
if (parsedBody) {
|
|
700
|
+
const model = parsedBody.model;
|
|
701
|
+
if (typeof model === 'string' && model.length > 0)
|
|
702
|
+
recordModelRequest(model);
|
|
703
|
+
}
|
|
532
704
|
// Check for streaming mode
|
|
533
|
-
if (
|
|
705
|
+
if (parsedBody?.stream === true) {
|
|
534
706
|
logger.info({ requestId, method, path }, 'Streaming request detected');
|
|
535
707
|
return handleStreamingRequest({
|
|
536
708
|
state,
|
|
@@ -540,6 +712,7 @@ export function createProxyApp(config) {
|
|
|
540
712
|
path,
|
|
541
713
|
incomingHeaders,
|
|
542
714
|
bodyText,
|
|
715
|
+
modelId: typeof parsedBody.model === 'string' ? parsedBody.model : undefined,
|
|
543
716
|
});
|
|
544
717
|
}
|
|
545
718
|
// Non-streaming request with failover
|
|
@@ -551,6 +724,7 @@ export function createProxyApp(config) {
|
|
|
551
724
|
path,
|
|
552
725
|
incomingHeaders,
|
|
553
726
|
bodyText,
|
|
727
|
+
modelId: typeof parsedBody?.model === 'string' ? parsedBody.model : undefined,
|
|
554
728
|
});
|
|
555
729
|
}
|
|
556
730
|
// Unified catch-all: rewrites /v1/* → /zen/go/v1/* for upstream forwarding
|
package/dist/proxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* usage-client.ts — Per-key quota usage from the upstream usage API.
|
|
3
|
+
*
|
|
4
|
+
* GET <upstream>/zen/go/v1/usage (Bearer = the proxy's own API key) returns:
|
|
5
|
+
* {"usage":{"rolling":{"status":"ok","percent":12,"resetsAt":"…"},
|
|
6
|
+
* "weekly":{…},"monthly":{…}}}
|
|
7
|
+
*
|
|
8
|
+
* Refresh strategy: stale-while-revalidate on demand. `maybeRefreshUsage`
|
|
9
|
+
* is called on the request path; when data is older than USAGE_REFRESH_TTL_MS
|
|
10
|
+
* and no refresh is in flight, it fires a background refresh for every key.
|
|
11
|
+
* Failures keep the last known values (weighted rotation just keeps working
|
|
12
|
+
* with slightly stale percentages).
|
|
13
|
+
*/
|
|
14
|
+
import { type ProxyState } from './proxy-logic.js';
|
|
15
|
+
import type { ProxyConfig } from './config.js';
|
|
16
|
+
export interface KeyUsage {
|
|
17
|
+
/** Worst-window used percent, 0-100. */
|
|
18
|
+
usedPercent: number;
|
|
19
|
+
rollingPercent: number;
|
|
20
|
+
weeklyPercent: number;
|
|
21
|
+
monthlyPercent: number;
|
|
22
|
+
rollingResetsAt?: string;
|
|
23
|
+
weeklyResetsAt?: string;
|
|
24
|
+
monthlyResetsAt?: string;
|
|
25
|
+
}
|
|
26
|
+
/** Parse a usage API response body into KeyUsage (throws on contract violation). */
|
|
27
|
+
export declare function parseUsageResponse(body: string): KeyUsage;
|
|
28
|
+
/**
|
|
29
|
+
* Fetch current usage for one key. Returns null on any failure
|
|
30
|
+
* (network, timeout, non-200, contract violation) — callers treat null as
|
|
31
|
+
* "no fresh data".
|
|
32
|
+
*/
|
|
33
|
+
export declare function fetchKeyUsage(upstreamBaseUrl: string, apiKey: string, usagePath?: string): Promise<KeyUsage | null>;
|
|
34
|
+
/** Test seam: reset coordinator state. */
|
|
35
|
+
export declare function resetUsageRefreshState(): void;
|
|
36
|
+
/**
|
|
37
|
+
* Kick off a background refresh of every key's usage when the cached data is
|
|
38
|
+
* older than USAGE_REFRESH_TTL_MS. Fire-and-forget: never throws, never blocks
|
|
39
|
+
* the request path, deduplicates concurrent calls.
|
|
40
|
+
*/
|
|
41
|
+
export declare function maybeRefreshUsage(state: ProxyState, config: ProxyConfig): void;
|