@sentropic/h2a-runtime 0.91.0 → 0.92.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/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +16 -3
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +79 -58
- package/dist/index.js.map +1 -1
- package/dist/llm-gateway-runtime/index.d.ts +6 -0
- package/dist/llm-gateway-runtime/index.d.ts.map +1 -1
- package/dist/llm-gateway-runtime/index.js +134 -60
- package/dist/llm-gateway-runtime/index.js.map +1 -1
- package/dist/llm-gateway-runtime/session-ledger.d.ts +38 -55
- package/dist/llm-gateway-runtime/session-ledger.d.ts.map +1 -1
- package/dist/llm-gateway-runtime/session-ledger.js +102 -250
- package/dist/llm-gateway-runtime/session-ledger.js.map +1 -1
- package/dist/llm-gateway-runtime/sticky.d.ts +25 -52
- package/dist/llm-gateway-runtime/sticky.d.ts.map +1 -1
- package/dist/llm-gateway-runtime/sticky.js +36 -605
- package/dist/llm-gateway-runtime/sticky.js.map +1 -1
- package/dist/llm-mesh.d.ts +19 -72
- package/dist/llm-mesh.d.ts.map +1 -1
- package/dist/llm-mesh.js +42 -399
- package/dist/llm-mesh.js.map +1 -1
- package/dist/llm-routing-config.d.ts +28 -0
- package/dist/llm-routing-config.d.ts.map +1 -0
- package/dist/llm-routing-config.js +100 -0
- package/dist/llm-routing-config.js.map +1 -0
- package/dist/native-terminal/client.d.ts +23 -0
- package/dist/native-terminal/client.d.ts.map +1 -0
- package/dist/native-terminal/client.js +203 -0
- package/dist/native-terminal/client.js.map +1 -0
- package/dist/native-terminal/host.d.ts +78 -0
- package/dist/native-terminal/host.d.ts.map +1 -0
- package/dist/native-terminal/host.js +275 -0
- package/dist/native-terminal/host.js.map +1 -0
- package/dist/native-terminal/process.d.ts +11 -0
- package/dist/native-terminal/process.d.ts.map +1 -0
- package/dist/native-terminal/process.js +137 -0
- package/dist/native-terminal/process.js.map +1 -0
- package/dist/native-terminal/protocol.d.ts +57 -0
- package/dist/native-terminal/protocol.d.ts.map +1 -0
- package/dist/native-terminal/protocol.js +102 -0
- package/dist/native-terminal/protocol.js.map +1 -0
- package/dist/native-terminal/replay-buffer.d.ts +26 -0
- package/dist/native-terminal/replay-buffer.d.ts.map +1 -0
- package/dist/native-terminal/replay-buffer.js +84 -0
- package/dist/native-terminal/replay-buffer.js.map +1 -0
- package/dist/native-terminal/server.d.ts +13 -0
- package/dist/native-terminal/server.d.ts.map +1 -0
- package/dist/native-terminal/server.js +555 -0
- package/dist/native-terminal/server.js.map +1 -0
- package/dist/native-terminal/socket-path.d.ts +8 -0
- package/dist/native-terminal/socket-path.d.ts.map +1 -0
- package/dist/native-terminal/socket-path.js +41 -0
- package/dist/native-terminal/socket-path.js.map +1 -0
- package/dist/native-terminal/supervisor.d.ts +26 -0
- package/dist/native-terminal/supervisor.d.ts.map +1 -0
- package/dist/native-terminal/supervisor.js +273 -0
- package/dist/native-terminal/supervisor.js.map +1 -0
- package/dist/pty.d.ts +1 -0
- package/dist/pty.d.ts.map +1 -1
- package/dist/pty.js +78 -2
- package/dist/pty.js.map +1 -1
- package/dist/registry.d.ts +7 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +37 -1
- package/dist/registry.js.map +1 -1
- package/dist/status-projection.d.ts.map +1 -1
- package/dist/tmux.d.ts +7 -5
- package/dist/tmux.d.ts.map +1 -1
- package/dist/tmux.js +33 -7
- package/dist/tmux.js.map +1 -1
- package/package.json +3 -3
- package/dist/llm-gateway-runtime/accounts.d.ts +0 -62
- package/dist/llm-gateway-runtime/accounts.d.ts.map +0 -1
- package/dist/llm-gateway-runtime/accounts.js +0 -323
- package/dist/llm-gateway-runtime/accounts.js.map +0 -1
- package/dist/llm-gateway-runtime/model-catalog.d.ts +0 -44
- package/dist/llm-gateway-runtime/model-catalog.d.ts.map +0 -1
- package/dist/llm-gateway-runtime/model-catalog.js +0 -191
- package/dist/llm-gateway-runtime/model-catalog.js.map +0 -1
- package/dist/llm-gateway-runtime/proxy-anthropic.d.ts +0 -3
- package/dist/llm-gateway-runtime/proxy-anthropic.d.ts.map +0 -1
- package/dist/llm-gateway-runtime/proxy-anthropic.js +0 -318
- package/dist/llm-gateway-runtime/proxy-anthropic.js.map +0 -1
- package/dist/llm-gateway-runtime/proxy-cloud-code.d.ts +0 -11
- package/dist/llm-gateway-runtime/proxy-cloud-code.d.ts.map +0 -1
- package/dist/llm-gateway-runtime/proxy-cloud-code.js +0 -215
- package/dist/llm-gateway-runtime/proxy-cloud-code.js.map +0 -1
- package/dist/llm-gateway-runtime/proxy-openai.d.ts +0 -118
- package/dist/llm-gateway-runtime/proxy-openai.d.ts.map +0 -1
- package/dist/llm-gateway-runtime/proxy-openai.js +0 -1305
- package/dist/llm-gateway-runtime/proxy-openai.js.map +0 -1
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
import { describeCanonicalTargetRoutes } from "@sentropic/llm-gateway";
|
|
2
|
-
const CODEX_CAPABILITIES = ["streaming", "tools", "reasoning_effort"];
|
|
3
|
-
const GOOGLE_CAPABILITIES = ["streaming", "tools"];
|
|
4
|
-
const CLOUD_CODE_CATALOG = [
|
|
5
|
-
{
|
|
6
|
-
id: "gemini-2.5-pro",
|
|
7
|
-
provider: "google",
|
|
8
|
-
targetProviderId: "google",
|
|
9
|
-
transportProviderId: "cloud-code",
|
|
10
|
-
upstreamModel: "gemini-2.5-pro",
|
|
11
|
-
accountPool: "google",
|
|
12
|
-
inputProtocol: "anthropic.messages",
|
|
13
|
-
outputProtocol: "anthropic.messages",
|
|
14
|
-
capabilities: [...GOOGLE_CAPABILITIES],
|
|
15
|
-
defaultPolicy: "round-robin",
|
|
16
|
-
routeKind: "faithful",
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
id: "gemini-2.5-flash",
|
|
20
|
-
provider: "google",
|
|
21
|
-
targetProviderId: "google",
|
|
22
|
-
transportProviderId: "cloud-code",
|
|
23
|
-
upstreamModel: "gemini-2.5-flash",
|
|
24
|
-
accountPool: "google",
|
|
25
|
-
inputProtocol: "anthropic.messages",
|
|
26
|
-
outputProtocol: "anthropic.messages",
|
|
27
|
-
capabilities: [...GOOGLE_CAPABILITIES],
|
|
28
|
-
defaultPolicy: "round-robin",
|
|
29
|
-
routeKind: "faithful",
|
|
30
|
-
},
|
|
31
|
-
];
|
|
32
|
-
let _catalog = null;
|
|
33
|
-
let _envModelMap = null;
|
|
34
|
-
function parseEnvModelMap() {
|
|
35
|
-
if (_envModelMap)
|
|
36
|
-
return _envModelMap;
|
|
37
|
-
if (!process.env.OPENAI_MODEL_MAP) {
|
|
38
|
-
_envModelMap = {};
|
|
39
|
-
return _envModelMap;
|
|
40
|
-
}
|
|
41
|
-
_envModelMap = JSON.parse(process.env.OPENAI_MODEL_MAP);
|
|
42
|
-
return _envModelMap;
|
|
43
|
-
}
|
|
44
|
-
function envCatalogEntries() {
|
|
45
|
-
return Object.entries(parseEnvModelMap()).map(([id, upstreamModel]) => {
|
|
46
|
-
const isGoogle = upstreamModel.toLowerCase().includes("gemini");
|
|
47
|
-
const isAnthropic = upstreamModel.toLowerCase().includes("claude");
|
|
48
|
-
return {
|
|
49
|
-
id,
|
|
50
|
-
provider: isGoogle ? "google" : (isAnthropic ? "anthropic" : "codex"),
|
|
51
|
-
targetProviderId: isGoogle
|
|
52
|
-
? "google"
|
|
53
|
-
: isAnthropic
|
|
54
|
-
? "anthropic"
|
|
55
|
-
: "openai",
|
|
56
|
-
transportProviderId: isGoogle
|
|
57
|
-
? "cloud-code"
|
|
58
|
-
: isAnthropic
|
|
59
|
-
? "claude-code"
|
|
60
|
-
: "codex",
|
|
61
|
-
upstreamModel,
|
|
62
|
-
accountPool: isGoogle ? "google" : (isAnthropic ? "anthropic" : "codex"),
|
|
63
|
-
inputProtocol: "anthropic.messages",
|
|
64
|
-
outputProtocol: "anthropic.messages",
|
|
65
|
-
capabilities: isGoogle ? [...GOOGLE_CAPABILITIES] : [...CODEX_CAPABILITIES],
|
|
66
|
-
defaultPolicy: "round-robin",
|
|
67
|
-
routeKind: upstreamModel === id ? "faithful" : "alias",
|
|
68
|
-
};
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
export function listModelCatalog() {
|
|
72
|
-
if (!_catalog) {
|
|
73
|
-
const canonical = describeCanonicalTargetRoutes().map((route) => {
|
|
74
|
-
const accountPool = accountPoolForProvider(route.transportProviderId) ??
|
|
75
|
-
accountPoolForProvider(route.providerId);
|
|
76
|
-
if (!accountPool) {
|
|
77
|
-
throw new Error(`canonical route ${route.requestedId} has unsupported transport ${route.transportProviderId}`);
|
|
78
|
-
}
|
|
79
|
-
return {
|
|
80
|
-
id: route.requestedId,
|
|
81
|
-
provider: accountPool,
|
|
82
|
-
targetProviderId: route.providerId,
|
|
83
|
-
transportProviderId: route.transportProviderId,
|
|
84
|
-
upstreamModel: route.model,
|
|
85
|
-
accountPool,
|
|
86
|
-
inputProtocol: "anthropic.messages",
|
|
87
|
-
outputProtocol: "anthropic.messages",
|
|
88
|
-
capabilities: accountPool === "google"
|
|
89
|
-
? [...GOOGLE_CAPABILITIES]
|
|
90
|
-
: [...CODEX_CAPABILITIES],
|
|
91
|
-
defaultPolicy: "round-robin",
|
|
92
|
-
...(route.effort ? { effort: route.effort } : {}),
|
|
93
|
-
routeKind: route.kind,
|
|
94
|
-
};
|
|
95
|
-
});
|
|
96
|
-
const byId = new Map(canonical.map((entry) => [entry.id, entry]));
|
|
97
|
-
for (const entry of CLOUD_CODE_CATALOG)
|
|
98
|
-
byId.set(entry.id, entry);
|
|
99
|
-
for (const entry of envCatalogEntries())
|
|
100
|
-
byId.set(entry.id, entry);
|
|
101
|
-
_catalog = [...byId.values()];
|
|
102
|
-
}
|
|
103
|
-
return _catalog;
|
|
104
|
-
}
|
|
105
|
-
export function resetModelCatalogCache() {
|
|
106
|
-
_catalog = null;
|
|
107
|
-
_envModelMap = null;
|
|
108
|
-
}
|
|
109
|
-
export function accountPoolForProvider(provider) {
|
|
110
|
-
const normalized = provider.toLowerCase();
|
|
111
|
-
if (normalized === "openai" || normalized === "codex") {
|
|
112
|
-
return "codex";
|
|
113
|
-
}
|
|
114
|
-
if (normalized === "google" ||
|
|
115
|
-
normalized === "gemini" ||
|
|
116
|
-
normalized === "gcp" ||
|
|
117
|
-
normalized === "cloud-code") {
|
|
118
|
-
return "google";
|
|
119
|
-
}
|
|
120
|
-
if (normalized === "anthropic" || normalized === "claude-code")
|
|
121
|
-
return "anthropic";
|
|
122
|
-
return undefined;
|
|
123
|
-
}
|
|
124
|
-
export function routeForProvider(provider) {
|
|
125
|
-
const accountPool = accountPoolForProvider(provider);
|
|
126
|
-
if (!accountPool)
|
|
127
|
-
return undefined;
|
|
128
|
-
return {
|
|
129
|
-
accountPool,
|
|
130
|
-
routingPolicy: "round-robin",
|
|
131
|
-
routeReason: "provider-request",
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
export function resolveModelRoute(model) {
|
|
135
|
-
const envMap = parseEnvModelMap();
|
|
136
|
-
const envUpstream = envMap[model];
|
|
137
|
-
if (envUpstream) {
|
|
138
|
-
const isGoogle = envUpstream.toLowerCase().includes("gemini") || envUpstream.toLowerCase().includes("google");
|
|
139
|
-
const isAnthropic = envUpstream.toLowerCase().includes("claude");
|
|
140
|
-
return {
|
|
141
|
-
requestedModel: model,
|
|
142
|
-
catalogModelId: model,
|
|
143
|
-
upstreamModel: envUpstream,
|
|
144
|
-
accountPool: isGoogle ? "google" : (isAnthropic ? "anthropic" : "codex"),
|
|
145
|
-
routingPolicy: "round-robin",
|
|
146
|
-
routeReason: "env-model-map",
|
|
147
|
-
providerId: isGoogle ? "google" : (isAnthropic ? "anthropic" : "openai"),
|
|
148
|
-
transportProviderId: isGoogle ? "cloud-code" : (isAnthropic ? "claude-code" : "codex"),
|
|
149
|
-
routeKind: envUpstream === model ? "faithful" : "alias",
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
for (const entry of listModelCatalog()) {
|
|
153
|
-
if (entry.id === model) {
|
|
154
|
-
return {
|
|
155
|
-
requestedModel: model,
|
|
156
|
-
catalogModelId: entry.id,
|
|
157
|
-
upstreamModel: entry.upstreamModel,
|
|
158
|
-
accountPool: entry.accountPool,
|
|
159
|
-
routingPolicy: entry.defaultPolicy,
|
|
160
|
-
routeReason: "canonical-route",
|
|
161
|
-
providerId: entry.targetProviderId,
|
|
162
|
-
transportProviderId: entry.transportProviderId,
|
|
163
|
-
...(entry.effort ? { effort: entry.effort } : {}),
|
|
164
|
-
routeKind: entry.routeKind,
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
return undefined;
|
|
169
|
-
}
|
|
170
|
-
export function routeModelOrThrow(model) {
|
|
171
|
-
const route = resolveModelRoute(model);
|
|
172
|
-
if (!route)
|
|
173
|
-
throw new Error(`unsupported model: ${model}`);
|
|
174
|
-
return route;
|
|
175
|
-
}
|
|
176
|
-
export function modelCatalogResponse(entries = listModelCatalog()) {
|
|
177
|
-
const modelMap = new Map();
|
|
178
|
-
for (const entry of entries) {
|
|
179
|
-
modelMap.set(entry.id, {
|
|
180
|
-
...entry,
|
|
181
|
-
id: entry.id,
|
|
182
|
-
object: "model",
|
|
183
|
-
owned_by: entry.provider,
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
return {
|
|
187
|
-
object: "list",
|
|
188
|
-
data: Array.from(modelMap.values()),
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
//# sourceMappingURL=model-catalog.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-catalog.js","sourceRoot":"","sources":["../../src/llm-gateway-runtime/model-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-anthropic.d.ts","sourceRoot":"","sources":["../../src/llm-gateway-runtime/proxy-anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AA+SpC,wBAAsB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CA+FlE"}
|
|
@@ -1,318 +0,0 @@
|
|
|
1
|
-
import { accountSupportsRoute, findAccount, markAccountExhausted, selectFallbackAccount } from "./accounts.js";
|
|
2
|
-
import { lookupToken, rebindGatewaySession, } from "./sticky.js";
|
|
3
|
-
import { handleMessagesViaCloudCode } from "./proxy-cloud-code.js";
|
|
4
|
-
import { handleMessagesViaOpenAI } from "./proxy-openai.js";
|
|
5
|
-
import { accountPoolForProvider, resolveModelRoute, } from "./model-catalog.js";
|
|
6
|
-
import { recordSessionActive, recordSessionFallback, recordSessionIdle, recordSessionRateLimitComplete, recordSessionRateLimited, recordSessionRequest, } from "./session-ledger.js";
|
|
7
|
-
const ANTHROPIC_BASE = process.env.ANTHROPIC_UPSTREAM_URL ?? "https://api.anthropic.com";
|
|
8
|
-
const PASSTHROUGH_REQUEST_HEADERS = [
|
|
9
|
-
"anthropic-version",
|
|
10
|
-
"anthropic-beta",
|
|
11
|
-
"content-type",
|
|
12
|
-
];
|
|
13
|
-
const PASSTHROUGH_RESPONSE_HEADERS = [
|
|
14
|
-
"content-type",
|
|
15
|
-
"transfer-encoding",
|
|
16
|
-
"retry-after",
|
|
17
|
-
];
|
|
18
|
-
function gatewayTokenFromRequest(c) {
|
|
19
|
-
const auth = c.req.header("authorization") ?? "";
|
|
20
|
-
if (auth.startsWith("Bearer gw-"))
|
|
21
|
-
return auth.slice("Bearer ".length);
|
|
22
|
-
const apiKey = c.req.header("x-api-key") ?? "";
|
|
23
|
-
if (apiKey.startsWith("gw-"))
|
|
24
|
-
return apiKey;
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
function usesOpenAIProvider(provider) {
|
|
28
|
-
return provider === "openai" || provider === "codex";
|
|
29
|
-
}
|
|
30
|
-
function isQuotaFallbackResponse(response) {
|
|
31
|
-
return response.status === 429 || response.status === 404;
|
|
32
|
-
}
|
|
33
|
-
function quotaReason(response) {
|
|
34
|
-
return `upstream ${response.status}`;
|
|
35
|
-
}
|
|
36
|
-
function retryAfterMs(response, nowMs = Date.now()) {
|
|
37
|
-
const raw = response.headers.get("retry-after")?.trim();
|
|
38
|
-
if (!raw)
|
|
39
|
-
return undefined;
|
|
40
|
-
const seconds = Number(raw);
|
|
41
|
-
if (Number.isFinite(seconds) && seconds >= 0)
|
|
42
|
-
return Math.round(seconds * 1000);
|
|
43
|
-
const at = Date.parse(raw);
|
|
44
|
-
return Number.isFinite(at) ? Math.max(0, at - nowMs) : undefined;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Pool identity for the quota-refusal comparison, fail-CLOSED on an unknown
|
|
48
|
-
* provider.
|
|
49
|
-
*
|
|
50
|
-
* accountPoolForProvider only knows the recognised pools and returns undefined
|
|
51
|
-
* for anything else. Comparing its results directly meant two UNKNOWN providers
|
|
52
|
-
* compared as `undefined !== undefined`, i.e. EQUAL, so the cross-pool refusal
|
|
53
|
-
* did not fire and the session was rebound across providers anyway. Measured on
|
|
54
|
-
* a hand-written GATEWAY_ACCOUNTS with providers outside the union: an exhausted
|
|
55
|
-
* account was rebound to a foreign one. Nothing validates that field, so a
|
|
56
|
-
* hand-edited account list reaches this path.
|
|
57
|
-
*
|
|
58
|
-
* Falling back to the normalised provider name makes an unrecognised provider
|
|
59
|
-
* its OWN pool: two different unknown providers now differ (refused), while the
|
|
60
|
-
* same unknown provider still matches, which preserves the intra-pool failover
|
|
61
|
-
* the owner ratified.
|
|
62
|
-
*/
|
|
63
|
-
function quotaPoolKey(provider) {
|
|
64
|
-
return accountPoolForProvider(provider) ?? provider.trim().toLowerCase();
|
|
65
|
-
}
|
|
66
|
-
async function rebindAfterQuotaResponse(gatewayToken, session, response, route) {
|
|
67
|
-
if (!session.accountId || !session.provider)
|
|
68
|
-
return undefined;
|
|
69
|
-
const exhaustedAccount = findAccount(session.accountId);
|
|
70
|
-
if (exhaustedAccount && response.status === 429) {
|
|
71
|
-
const retry = retryAfterMs(response);
|
|
72
|
-
recordSessionRateLimited(session.sessionId, exhaustedAccount, {
|
|
73
|
-
...(route ? { route } : {}),
|
|
74
|
-
...(retry !== undefined ? { retryAfterMs: retry } : {}),
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
markAccountExhausted(session.accountId, quotaReason(response));
|
|
78
|
-
const fallback = selectFallbackAccount(session.accountId, Date.now(), {
|
|
79
|
-
...(session.requiredTransport
|
|
80
|
-
? { requiredTransport: session.requiredTransport }
|
|
81
|
-
: {}),
|
|
82
|
-
...(route ? { route } : {}),
|
|
83
|
-
});
|
|
84
|
-
if (!fallback)
|
|
85
|
-
return undefined;
|
|
86
|
-
if (response.status === 429 &&
|
|
87
|
-
quotaPoolKey(fallback.provider) !== quotaPoolKey(session.provider)) {
|
|
88
|
-
return undefined;
|
|
89
|
-
}
|
|
90
|
-
let rebound;
|
|
91
|
-
try {
|
|
92
|
-
rebound = await rebindGatewaySession(gatewayToken, fallback, route);
|
|
93
|
-
}
|
|
94
|
-
catch (err) {
|
|
95
|
-
console.warn(`[llm-gateway] quota fallback rebind failed for ${session.accountId}: ${String(err)}`);
|
|
96
|
-
return undefined;
|
|
97
|
-
}
|
|
98
|
-
if (!rebound)
|
|
99
|
-
return undefined;
|
|
100
|
-
if (exhaustedAccount) {
|
|
101
|
-
recordSessionFallback(session.sessionId, exhaustedAccount, fallback, route);
|
|
102
|
-
}
|
|
103
|
-
await response.body?.cancel().catch(() => { });
|
|
104
|
-
console.warn(`[llm-gateway] account ${session.accountId} returned ${response.status}; ` +
|
|
105
|
-
`rebinding session to ${fallback.id} (${fallback.provider})`);
|
|
106
|
-
return rebound;
|
|
107
|
-
}
|
|
108
|
-
function completeWhenBodyEnds(response, complete) {
|
|
109
|
-
if (!response.body) {
|
|
110
|
-
complete();
|
|
111
|
-
return response;
|
|
112
|
-
}
|
|
113
|
-
const reader = response.body.getReader();
|
|
114
|
-
let completed = false;
|
|
115
|
-
const completeOnce = () => {
|
|
116
|
-
if (completed)
|
|
117
|
-
return;
|
|
118
|
-
completed = true;
|
|
119
|
-
complete();
|
|
120
|
-
};
|
|
121
|
-
const body = new ReadableStream({
|
|
122
|
-
async pull(controller) {
|
|
123
|
-
try {
|
|
124
|
-
const result = await reader.read();
|
|
125
|
-
if (result.done) {
|
|
126
|
-
completeOnce();
|
|
127
|
-
controller.close();
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
controller.enqueue(result.value);
|
|
131
|
-
}
|
|
132
|
-
catch (error) {
|
|
133
|
-
completeOnce();
|
|
134
|
-
controller.error(error);
|
|
135
|
-
}
|
|
136
|
-
},
|
|
137
|
-
async cancel(reason) {
|
|
138
|
-
completeOnce();
|
|
139
|
-
await reader.cancel(reason);
|
|
140
|
-
},
|
|
141
|
-
});
|
|
142
|
-
return new Response(body, {
|
|
143
|
-
status: response.status,
|
|
144
|
-
statusText: response.statusText,
|
|
145
|
-
headers: response.headers,
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
async function handleMessagesViaAnthropic(c, session, body) {
|
|
149
|
-
const upstreamUrl = `${ANTHROPIC_BASE}/v1/messages`;
|
|
150
|
-
const requestHeaders = {
|
|
151
|
-
"anthropic-version": c.req.header("anthropic-version") ?? "2023-06-01",
|
|
152
|
-
};
|
|
153
|
-
for (const h of PASSTHROUGH_REQUEST_HEADERS) {
|
|
154
|
-
const v = c.req.header(h);
|
|
155
|
-
if (v !== undefined)
|
|
156
|
-
requestHeaders[h] = v;
|
|
157
|
-
}
|
|
158
|
-
// SECURITY (architect review 2026-07-13): a Claude Code OAuth token (sk-ant-oat…) must NEVER be
|
|
159
|
-
// relayed here as a raw Anthropic Bearer. It is stored as a pooled claude-code account (WP16) but
|
|
160
|
-
// is meant to be served via the personal-passthrough EXECUTION path (the account executes the
|
|
161
|
-
// request), not by replaying the subscription token to api.anthropic.com (ToS/ban risk on the
|
|
162
|
-
// user's Claude Max). The claude-code serve mechanism is pending the gateway (claude:mesh) lane;
|
|
163
|
-
// do NOT re-add a raw Bearer relay without that sign-off. Keep the API-key path here.
|
|
164
|
-
requestHeaders["x-api-key"] = session.token;
|
|
165
|
-
let upstream;
|
|
166
|
-
try {
|
|
167
|
-
upstream = await fetch(upstreamUrl, {
|
|
168
|
-
method: "POST",
|
|
169
|
-
headers: requestHeaders,
|
|
170
|
-
body,
|
|
171
|
-
// @ts-expect-error Node 18+ fetch supports duplex for streaming
|
|
172
|
-
duplex: "half",
|
|
173
|
-
signal: c.req.raw.signal,
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
catch (err) {
|
|
177
|
-
if (err.name === "AbortError") {
|
|
178
|
-
return new Response(null, { status: 499 });
|
|
179
|
-
}
|
|
180
|
-
throw err;
|
|
181
|
-
}
|
|
182
|
-
const responseHeaders = {};
|
|
183
|
-
for (const h of PASSTHROUGH_RESPONSE_HEADERS) {
|
|
184
|
-
const v = upstream.headers.get(h);
|
|
185
|
-
if (v !== null)
|
|
186
|
-
responseHeaders[h] = v;
|
|
187
|
-
}
|
|
188
|
-
// Pipe stream directly — never buffer
|
|
189
|
-
return new Response(upstream.body, {
|
|
190
|
-
status: upstream.status,
|
|
191
|
-
headers: responseHeaders,
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
async function dispatchToSessionAccount(c, session, body, recordOutbound) {
|
|
195
|
-
if (session.transportConstraints) {
|
|
196
|
-
return handleMessagesViaCloudCode(c, session, body);
|
|
197
|
-
}
|
|
198
|
-
if (!session.accountId || !session.provider) {
|
|
199
|
-
return c.json({ error: "gateway session account is unavailable" }, 503);
|
|
200
|
-
}
|
|
201
|
-
if (session.requiredTransport &&
|
|
202
|
-
session.transport !== session.requiredTransport) {
|
|
203
|
-
return c.json({ error: "gateway session transport constraint is no longer satisfied" }, 503);
|
|
204
|
-
}
|
|
205
|
-
// The account/transport guard above has passed. This is the final common
|
|
206
|
-
// point immediately before the provider-specific outbound request is
|
|
207
|
-
// constructed, so route text cannot be claimed merely from parsing or a
|
|
208
|
-
// successful rebind.
|
|
209
|
-
recordOutbound();
|
|
210
|
-
const account = findAccount(session.accountId);
|
|
211
|
-
if (!account) {
|
|
212
|
-
return c.json({ error: "gateway session account is unavailable" }, 503);
|
|
213
|
-
}
|
|
214
|
-
if (usesOpenAIProvider(session.provider)) {
|
|
215
|
-
return handleMessagesViaOpenAI(c, {
|
|
216
|
-
token: account.token,
|
|
217
|
-
gatewayToken: session.gatewayToken,
|
|
218
|
-
accountId: session.accountId,
|
|
219
|
-
sessionId: session.sessionId,
|
|
220
|
-
...(session.requiredTransport
|
|
221
|
-
? { requiredTransport: session.requiredTransport }
|
|
222
|
-
: {}),
|
|
223
|
-
}, body);
|
|
224
|
-
}
|
|
225
|
-
return handleMessagesViaAnthropic(c, account, body);
|
|
226
|
-
}
|
|
227
|
-
function routeFromRequestBody(body) {
|
|
228
|
-
try {
|
|
229
|
-
const parsed = JSON.parse(new TextDecoder().decode(body));
|
|
230
|
-
return typeof parsed.model === "string"
|
|
231
|
-
? resolveModelRoute(parsed.model)
|
|
232
|
-
: undefined;
|
|
233
|
-
}
|
|
234
|
-
catch {
|
|
235
|
-
return undefined;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
export async function handleMessages(c) {
|
|
239
|
-
const gatewayToken = gatewayTokenFromRequest(c);
|
|
240
|
-
if (!gatewayToken)
|
|
241
|
-
return c.json({ error: "unauthorized" }, 403);
|
|
242
|
-
let session = await lookupToken(gatewayToken);
|
|
243
|
-
if (!session)
|
|
244
|
-
return c.json({ error: "unauthorized" }, 403);
|
|
245
|
-
const body = await c.req.raw.arrayBuffer();
|
|
246
|
-
const route = routeFromRequestBody(body);
|
|
247
|
-
if (session.transportConstraints) {
|
|
248
|
-
if (route?.transportProviderId && route.transportProviderId !== "cloud-code") {
|
|
249
|
-
return c.json({ error: "gateway session transport constraint is no longer satisfied" }, 503);
|
|
250
|
-
}
|
|
251
|
-
return handleMessagesViaCloudCode(c, session, body);
|
|
252
|
-
}
|
|
253
|
-
if (!session.accountId) {
|
|
254
|
-
return c.json({ error: "gateway session account is unavailable" }, 503);
|
|
255
|
-
}
|
|
256
|
-
const sessionAccount = findAccount(session.accountId);
|
|
257
|
-
if (route && !sessionAccount) {
|
|
258
|
-
return c.json({ error: "gateway session account is unavailable" }, 503);
|
|
259
|
-
}
|
|
260
|
-
if (route && sessionAccount && !accountSupportsRoute(sessionAccount, route)) {
|
|
261
|
-
const correctPoolAccount = selectFallbackAccount(session.accountId, Date.now(), {
|
|
262
|
-
route,
|
|
263
|
-
});
|
|
264
|
-
if (!correctPoolAccount) {
|
|
265
|
-
return c.json({ error: "no account can serve the requested route" }, 503);
|
|
266
|
-
}
|
|
267
|
-
try {
|
|
268
|
-
const rebound = await rebindGatewaySession(gatewayToken, correctPoolAccount, route);
|
|
269
|
-
if (!rebound) {
|
|
270
|
-
return c.json({ error: "requested route could not be rebound" }, 503);
|
|
271
|
-
}
|
|
272
|
-
const reboundSession = rebound;
|
|
273
|
-
session = reboundSession;
|
|
274
|
-
}
|
|
275
|
-
catch (err) {
|
|
276
|
-
console.error("rebindGatewaySession failed:", err);
|
|
277
|
-
return c.json({ error: "requested route could not be rebound" }, 503);
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
const attempted = new Set();
|
|
281
|
-
let outboundRecorded = false;
|
|
282
|
-
try {
|
|
283
|
-
for (;;) {
|
|
284
|
-
const dispatchSession = session;
|
|
285
|
-
if (!dispatchSession.accountId) {
|
|
286
|
-
return c.json({ error: "gateway session account is unavailable" }, 503);
|
|
287
|
-
}
|
|
288
|
-
attempted.add(dispatchSession.accountId);
|
|
289
|
-
const response = await dispatchToSessionAccount(c, dispatchSession, body, () => {
|
|
290
|
-
if (outboundRecorded)
|
|
291
|
-
return;
|
|
292
|
-
recordSessionRequest(dispatchSession.sessionId, route);
|
|
293
|
-
outboundRecorded = true;
|
|
294
|
-
});
|
|
295
|
-
if (!isQuotaFallbackResponse(response)) {
|
|
296
|
-
const completedSessionId = session.sessionId;
|
|
297
|
-
return completeWhenBodyEnds(response, () => recordSessionIdle(completedSessionId, route));
|
|
298
|
-
}
|
|
299
|
-
const rebound = await rebindAfterQuotaResponse(gatewayToken, session, response, route);
|
|
300
|
-
if (!rebound?.accountId || attempted.has(rebound.accountId)) {
|
|
301
|
-
if (response.status === 429) {
|
|
302
|
-
recordSessionRateLimitComplete(session.sessionId, route);
|
|
303
|
-
}
|
|
304
|
-
else {
|
|
305
|
-
recordSessionIdle(session.sessionId, route);
|
|
306
|
-
}
|
|
307
|
-
return response;
|
|
308
|
-
}
|
|
309
|
-
session = rebound;
|
|
310
|
-
recordSessionActive(session.sessionId, route);
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
catch (error) {
|
|
314
|
-
recordSessionIdle(session.sessionId, route);
|
|
315
|
-
throw error;
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
//# sourceMappingURL=proxy-anthropic.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-anthropic.js","sourceRoot":"","sources":["../../src/llm-gateway-runtime/proxy-anthropic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { type LlmMeshFacade } from "@sentropic/llm-mesh/facade";
|
|
2
|
-
import type { Context } from "hono";
|
|
3
|
-
import type { SessionEntry } from "./sticky.js";
|
|
4
|
-
/** The gateway keeps the opaque mesh facade, never a provider credential. */
|
|
5
|
-
export declare function getCloudCodeFacade(): LlmMeshFacade;
|
|
6
|
-
/**
|
|
7
|
-
* Execute a Cloud Code request through the mesh facade. `execute()` owns every
|
|
8
|
-
* non-abort outcome; an aborted client request releases only its reservation.
|
|
9
|
-
*/
|
|
10
|
-
export declare function handleMessagesViaCloudCode(c: Context, session: Pick<SessionEntry, "sessionId" | "transportConstraints">, requestBody?: ArrayBuffer, llmMesh?: LlmMeshFacade): Promise<Response>;
|
|
11
|
-
//# sourceMappingURL=proxy-cloud-code.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-cloud-code.d.ts","sourceRoot":"","sources":["../../src/llm-gateway-runtime/proxy-cloud-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiChD,6EAA6E;AAC7E,wBAAgB,kBAAkB,IAAI,aAAa,CAMlD;AAgED;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,CAAC,EAAE,OAAO,EACV,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,sBAAsB,CAAC,EACjE,WAAW,CAAC,EAAE,WAAW,EACzB,OAAO,GAAE,aAAoC,GAC5C,OAAO,CAAC,QAAQ,CAAC,CAyHnB"}
|