@sentropic/h2a-runtime 0.98.1 → 0.98.4
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/agent-launch-args.d.ts +1 -1
- package/dist/agent-launch-args.d.ts.map +1 -1
- package/dist/agent-launch-args.js +16 -1
- package/dist/agent-launch-args.js.map +1 -1
- package/dist/auth-bundle.d.ts.map +1 -1
- package/dist/auth-bundle.js +1 -0
- package/dist/auth-bundle.js.map +1 -1
- package/dist/cli-help-groups.d.ts.map +1 -1
- package/dist/cli-help-groups.js +1 -0
- package/dist/cli-help-groups.js.map +1 -1
- package/dist/delegate.d.ts.map +1 -1
- package/dist/delegate.js +14 -2
- package/dist/delegate.js.map +1 -1
- package/dist/gateway-host/config-file.d.ts +19 -0
- package/dist/gateway-host/config-file.d.ts.map +1 -0
- package/dist/gateway-host/config-file.js +54 -0
- package/dist/gateway-host/config-file.js.map +1 -0
- package/dist/gateway-host/daemon.d.ts +61 -0
- package/dist/gateway-host/daemon.d.ts.map +1 -0
- package/dist/gateway-host/daemon.js +274 -0
- package/dist/gateway-host/daemon.js.map +1 -0
- package/dist/gateway-host/host.d.ts +34 -0
- package/dist/gateway-host/host.d.ts.map +1 -0
- package/dist/gateway-host/host.js +228 -0
- package/dist/gateway-host/host.js.map +1 -0
- package/dist/{llm-gateway-runtime/session-ledger.d.ts → gateway-host/ledger.d.ts} +4 -4
- package/dist/gateway-host/ledger.d.ts.map +1 -0
- package/dist/{llm-gateway-runtime/session-ledger.js → gateway-host/ledger.js} +1 -1
- package/dist/gateway-host/ledger.js.map +1 -0
- package/dist/{llm-gateway-runtime/sticky.d.ts → gateway-host/sessions.d.ts} +9 -1
- package/dist/gateway-host/sessions.d.ts.map +1 -0
- package/dist/gateway-host/sessions.js +120 -0
- package/dist/gateway-host/sessions.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +52 -25
- package/dist/index.js.map +1 -1
- package/dist/llm-mesh-accounts.d.ts +55 -0
- package/dist/llm-mesh-accounts.d.ts.map +1 -0
- package/dist/llm-mesh-accounts.js +188 -0
- package/dist/llm-mesh-accounts.js.map +1 -0
- package/dist/native-host.d.ts +1 -1
- package/dist/native-host.d.ts.map +1 -1
- package/dist/native-host.js +84 -21
- package/dist/native-host.js.map +1 -1
- package/dist/native-terminal/attach-recovery.d.ts +9 -0
- package/dist/native-terminal/attach-recovery.d.ts.map +1 -0
- package/dist/native-terminal/attach-recovery.js +54 -0
- package/dist/native-terminal/attach-recovery.js.map +1 -0
- package/dist/native-terminal/fleet.d.ts +2 -1
- package/dist/native-terminal/fleet.d.ts.map +1 -1
- package/dist/native-terminal/fleet.js +10 -1
- package/dist/native-terminal/fleet.js.map +1 -1
- package/dist/native-terminal/host.d.ts +1 -0
- package/dist/native-terminal/host.d.ts.map +1 -1
- package/dist/native-terminal/host.js +5 -2
- package/dist/native-terminal/host.js.map +1 -1
- package/dist/native-terminal/journal.d.ts +48 -0
- package/dist/native-terminal/journal.d.ts.map +1 -0
- package/dist/native-terminal/journal.js +305 -0
- package/dist/native-terminal/journal.js.map +1 -0
- package/dist/native-terminal/op.d.ts +3 -0
- package/dist/native-terminal/op.d.ts.map +1 -1
- package/dist/native-terminal/op.js +148 -33
- package/dist/native-terminal/op.js.map +1 -1
- package/dist/native-terminal/process.d.ts.map +1 -1
- package/dist/native-terminal/process.js +134 -46
- package/dist/native-terminal/process.js.map +1 -1
- package/dist/native-terminal/replay-buffer.d.ts +3 -0
- package/dist/native-terminal/replay-buffer.d.ts.map +1 -1
- package/dist/native-terminal/replay-buffer.js +11 -0
- package/dist/native-terminal/replay-buffer.js.map +1 -1
- package/dist/native-terminal/reset-relay.d.ts +11 -0
- package/dist/native-terminal/reset-relay.d.ts.map +1 -0
- package/dist/native-terminal/reset-relay.js +38 -0
- package/dist/native-terminal/reset-relay.js.map +1 -0
- package/dist/native-terminal/server.d.ts +8 -0
- package/dist/native-terminal/server.d.ts.map +1 -1
- package/dist/native-terminal/server.js +535 -58
- package/dist/native-terminal/server.js.map +1 -1
- package/dist/native-terminal/terminal-modes.d.ts +15 -0
- package/dist/native-terminal/terminal-modes.d.ts.map +1 -0
- package/dist/native-terminal/terminal-modes.js +180 -0
- package/dist/native-terminal/terminal-modes.js.map +1 -0
- package/dist/profile-menu.d.ts.map +1 -1
- package/dist/profile-menu.js +2 -0
- package/dist/profile-menu.js.map +1 -1
- package/dist/profiles.d.ts +2 -0
- package/dist/profiles.d.ts.map +1 -1
- package/dist/profiles.js +6 -0
- package/dist/profiles.js.map +1 -1
- package/dist/protocol-local.d.ts +1 -1
- package/dist/protocol-local.d.ts.map +1 -1
- package/dist/protocol-local.js +1 -0
- package/dist/protocol-local.js.map +1 -1
- package/dist/registry.d.ts +24 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +57 -1
- package/dist/registry.js.map +1 -1
- package/dist/restore.d.ts +1 -1
- package/dist/restore.d.ts.map +1 -1
- package/dist/resume-launch-options.d.ts +59 -0
- package/dist/resume-launch-options.d.ts.map +1 -0
- package/dist/resume-launch-options.js +64 -0
- package/dist/resume-launch-options.js.map +1 -0
- package/dist/{llm-routing-config.d.ts → routing-preferences.d.ts} +2 -2
- package/dist/routing-preferences.d.ts.map +1 -0
- package/dist/{llm-routing-config.js → routing-preferences.js} +16 -13
- package/dist/routing-preferences.js.map +1 -0
- package/dist/sentropic/auth-token.d.ts +1 -1
- package/dist/sentropic/auth-token.js +1 -1
- package/dist/status-projection.d.ts +1 -1
- package/dist/status-projection.d.ts.map +1 -1
- package/dist/throttle-signatures.d.ts.map +1 -1
- package/dist/throttle-signatures.js +3 -0
- package/dist/throttle-signatures.js.map +1 -1
- package/dist/tmux.d.ts +17 -1
- package/dist/tmux.d.ts.map +1 -1
- package/dist/tmux.js +10 -4
- package/dist/tmux.js.map +1 -1
- package/package.json +8 -4
- package/dist/llm-gateway-runtime/index.d.ts +0 -10
- package/dist/llm-gateway-runtime/index.d.ts.map +0 -1
- package/dist/llm-gateway-runtime/index.js +0 -147
- package/dist/llm-gateway-runtime/index.js.map +0 -1
- package/dist/llm-gateway-runtime/session-ledger.d.ts.map +0 -1
- package/dist/llm-gateway-runtime/session-ledger.js.map +0 -1
- package/dist/llm-gateway-runtime/sticky.d.ts.map +0 -1
- package/dist/llm-gateway-runtime/sticky.js +0 -51
- package/dist/llm-gateway-runtime/sticky.js.map +0 -1
- package/dist/llm-mesh.d.ts +0 -154
- package/dist/llm-mesh.d.ts.map +0 -1
- package/dist/llm-mesh.js +0 -490
- package/dist/llm-mesh.js.map +0 -1
- package/dist/llm-routing-config.d.ts.map +0 -1
- package/dist/llm-routing-config.js.map +0 -1
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
/** Local gateway daemon lifecycle and caller environment. */
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { spawn } from "node:child_process";
|
|
6
|
+
import { createConnection } from "node:net";
|
|
7
|
+
import { randomBytes } from "node:crypto";
|
|
8
|
+
import { llmMeshOwnerScopeRef } from "../llm-mesh-accounts.js";
|
|
9
|
+
import { sentropicDir, readLlmMeshConfig, writePrivateMetadata } from "./config-file.js";
|
|
10
|
+
const ANTHROPIC_GATEWAY_ENV_KEYS = [
|
|
11
|
+
"ANTHROPIC_BASE_URL",
|
|
12
|
+
"ANTHROPIC_AUTH_TOKEN",
|
|
13
|
+
"ANTHROPIC_API_KEY",
|
|
14
|
+
];
|
|
15
|
+
/**
|
|
16
|
+
* Temporarily replace the H2A gateway lane and return an exact restorer.
|
|
17
|
+
* Direct launches preserve a user-owned ANTHROPIC_API_KEY. Gateway launches
|
|
18
|
+
* hide it from Claude Code because the local gateway authenticates with the
|
|
19
|
+
* opaque AUTH_TOKEN lane instead.
|
|
20
|
+
*/
|
|
21
|
+
export function replaceAnthropicGatewayEnvironment(env, replacement) {
|
|
22
|
+
const previous = new Map(ANTHROPIC_GATEWAY_ENV_KEYS.map((key) => [key, env[key]]));
|
|
23
|
+
for (const key of ANTHROPIC_GATEWAY_ENV_KEYS) {
|
|
24
|
+
if (key !== "ANTHROPIC_API_KEY" || replacement !== undefined) {
|
|
25
|
+
delete env[key];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
for (const [key, value] of Object.entries(replacement ?? {})) {
|
|
29
|
+
if (value !== undefined)
|
|
30
|
+
env[key] = value;
|
|
31
|
+
}
|
|
32
|
+
return () => {
|
|
33
|
+
for (const [key, value] of previous) {
|
|
34
|
+
if (value === undefined)
|
|
35
|
+
delete env[key];
|
|
36
|
+
else
|
|
37
|
+
env[key] = value;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export function llmMeshPidPath(dir) {
|
|
42
|
+
return join(dir ?? sentropicDir(), "llm-mesh.pid");
|
|
43
|
+
}
|
|
44
|
+
export function llmMeshTokenPath(dir) {
|
|
45
|
+
return join(dir ?? sentropicDir(), "llm-mesh-token.json");
|
|
46
|
+
}
|
|
47
|
+
export function llmMeshLogPath(config, dir) {
|
|
48
|
+
return config?.logFile ?? join(dir ?? sentropicDir(), "llm-mesh.log");
|
|
49
|
+
}
|
|
50
|
+
/** Resolve the embedded gateway runtime entry point relative to this package. */
|
|
51
|
+
export function gatewayScriptPath() {
|
|
52
|
+
const thisFile = fileURLToPath(import.meta.url);
|
|
53
|
+
return join(dirname(thisFile), "host.js");
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* A gateway session is an account-affinity boundary, so a local CLI session
|
|
57
|
+
* must never inherit a process-wide static identifier. Callers provide the
|
|
58
|
+
* stable tmux/conversation identity when they have one; standalone gateway
|
|
59
|
+
* management gets a fresh ephemeral identity instead.
|
|
60
|
+
*/
|
|
61
|
+
export function gatewayClientSessionId(clientSessionId) {
|
|
62
|
+
const supplied = clientSessionId?.trim();
|
|
63
|
+
return supplied || `local-${randomBytes(16).toString("hex")}`;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Start the llm-gateway as a detached background process.
|
|
67
|
+
* Returns the PID, port, and a gw-token for Claude Code.
|
|
68
|
+
*/
|
|
69
|
+
export async function startGateway(config, opts = {}) {
|
|
70
|
+
const port = config.port ?? 3002;
|
|
71
|
+
const stateDir = opts.stateDir;
|
|
72
|
+
// An explicitly isolated state root must not inherit a live gateway's log.
|
|
73
|
+
const logFile = stateDir ? llmMeshLogPath(undefined, stateDir) : llmMeshLogPath(config);
|
|
74
|
+
const gatewayScript = gatewayScriptPath();
|
|
75
|
+
if (!existsSync(gatewayScript)) {
|
|
76
|
+
throw new Error(`Gateway script not found: ${gatewayScript}\n` +
|
|
77
|
+
`Run \`npm run build -w @sentropic/remote-cli\` first.`);
|
|
78
|
+
}
|
|
79
|
+
mkdirSync(stateDir ?? sentropicDir(), { recursive: true });
|
|
80
|
+
const gatewayEnv = {
|
|
81
|
+
...process.env,
|
|
82
|
+
PORT: String(port),
|
|
83
|
+
H2A_LLM_MESH_OWNER_SCOPE: llmMeshOwnerScopeRef(),
|
|
84
|
+
...(config.routing
|
|
85
|
+
? { H2A_LLM_MESH_ROUTING_JSON: JSON.stringify(config.routing) }
|
|
86
|
+
: {}),
|
|
87
|
+
};
|
|
88
|
+
// Start detached, piping stdout+stderr to logFile
|
|
89
|
+
const { openSync } = await import("node:fs");
|
|
90
|
+
const logFd = openSync(logFile, "a");
|
|
91
|
+
const child = spawn("node", [gatewayScript], {
|
|
92
|
+
detached: true,
|
|
93
|
+
stdio: ["ignore", logFd, logFd],
|
|
94
|
+
env: gatewayEnv,
|
|
95
|
+
});
|
|
96
|
+
child.unref();
|
|
97
|
+
const pid = child.pid;
|
|
98
|
+
// Write PID file
|
|
99
|
+
writeFileSync(llmMeshPidPath(stateDir), String(pid) + "\n");
|
|
100
|
+
// Wait for the gateway to be ready
|
|
101
|
+
const baseUrl = `http://localhost:${port}`;
|
|
102
|
+
await waitForHealth(baseUrl, 10_000);
|
|
103
|
+
// Acquire a session token
|
|
104
|
+
const sessionResp = await fetch(`${baseUrl}/v1/session`, {
|
|
105
|
+
method: "POST",
|
|
106
|
+
headers: { "content-type": "application/json" },
|
|
107
|
+
body: JSON.stringify({
|
|
108
|
+
sessionId: gatewayClientSessionId(opts.clientSessionId),
|
|
109
|
+
clientSessionId: opts.clientSessionId,
|
|
110
|
+
workspaceId: process.cwd(),
|
|
111
|
+
}),
|
|
112
|
+
});
|
|
113
|
+
if (!sessionResp.ok) {
|
|
114
|
+
throw new Error(`Session acquisition failed: ${sessionResp.status}`);
|
|
115
|
+
}
|
|
116
|
+
const session = (await sessionResp.json());
|
|
117
|
+
const gatewayToken = session.gatewayToken;
|
|
118
|
+
if (!gatewayToken)
|
|
119
|
+
throw new Error("No gatewayToken in session response");
|
|
120
|
+
// Persist only process metadata. The opaque bearer remains process-local and
|
|
121
|
+
// is reacquired for each caller affinity.
|
|
122
|
+
writePrivateMetadata(llmMeshTokenPath(stateDir), {
|
|
123
|
+
baseUrl,
|
|
124
|
+
pid,
|
|
125
|
+
});
|
|
126
|
+
return { pid, port, gatewayToken };
|
|
127
|
+
}
|
|
128
|
+
export async function waitForHealth(baseUrl, timeoutMs) {
|
|
129
|
+
const deadline = Date.now() + timeoutMs;
|
|
130
|
+
while (Date.now() < deadline) {
|
|
131
|
+
try {
|
|
132
|
+
const resp = await fetch(`${baseUrl}/readyz`, { signal: AbortSignal.timeout(Math.max(1, deadline - Date.now())) });
|
|
133
|
+
if (resp.ok)
|
|
134
|
+
return;
|
|
135
|
+
if (resp.status === 404) {
|
|
136
|
+
process.stderr.write("[h2a] older daemon readiness fallback: /health (no /readyz endpoint)\n");
|
|
137
|
+
const legacy = await fetch(`${baseUrl}/health`, { signal: AbortSignal.timeout(Math.max(1, deadline - Date.now())) });
|
|
138
|
+
if (legacy.ok)
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
// not ready yet
|
|
144
|
+
}
|
|
145
|
+
await new Promise((r) => setTimeout(r, 200));
|
|
146
|
+
}
|
|
147
|
+
throw new Error(`Gateway did not become ready within ${timeoutMs}ms`);
|
|
148
|
+
}
|
|
149
|
+
/** Read the running gateway's PID. Returns null if not running. */
|
|
150
|
+
export function readGatewayPid(dir) {
|
|
151
|
+
try {
|
|
152
|
+
const raw = readFileSync(llmMeshPidPath(dir), "utf8").trim();
|
|
153
|
+
const pid = parseInt(raw, 10);
|
|
154
|
+
if (isNaN(pid))
|
|
155
|
+
return null;
|
|
156
|
+
// Check if the process is still alive
|
|
157
|
+
process.kill(pid, 0);
|
|
158
|
+
return pid;
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function configuredGatewayBaseUrl(dir) {
|
|
165
|
+
const config = readLlmMeshConfig(dir);
|
|
166
|
+
if (!config)
|
|
167
|
+
return null;
|
|
168
|
+
return `http://localhost:${config.port ?? 3002}`;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Acquire a fresh in-memory gateway token from the running local gateway.
|
|
172
|
+
* Gateway tokens are intentionally not durable. The runtime metadata file
|
|
173
|
+
* contains only the base URL and PID; every caller reacquires its own bearer.
|
|
174
|
+
*/
|
|
175
|
+
export async function acquireLlmMeshSessionEnv(dir, clientSessionId) {
|
|
176
|
+
try {
|
|
177
|
+
let baseUrl;
|
|
178
|
+
let pid;
|
|
179
|
+
try {
|
|
180
|
+
const raw = readFileSync(llmMeshTokenPath(dir), "utf8");
|
|
181
|
+
const tokenFile = JSON.parse(raw);
|
|
182
|
+
baseUrl = tokenFile.baseUrl;
|
|
183
|
+
pid = tokenFile.pid;
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
baseUrl = configuredGatewayBaseUrl(dir) ?? undefined;
|
|
187
|
+
pid = readGatewayPid(dir) ?? undefined;
|
|
188
|
+
}
|
|
189
|
+
if (!baseUrl || !pid)
|
|
190
|
+
return null;
|
|
191
|
+
try {
|
|
192
|
+
process.kill(pid, 0);
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
const workspaceId = dir ?? process.cwd();
|
|
198
|
+
const sessionResp = await fetch(`${baseUrl}/v1/session`, {
|
|
199
|
+
method: "POST",
|
|
200
|
+
headers: { "content-type": "application/json" },
|
|
201
|
+
body: JSON.stringify({
|
|
202
|
+
sessionId: gatewayClientSessionId(clientSessionId),
|
|
203
|
+
clientSessionId,
|
|
204
|
+
workspaceId,
|
|
205
|
+
}),
|
|
206
|
+
});
|
|
207
|
+
if (!sessionResp.ok)
|
|
208
|
+
return null;
|
|
209
|
+
const session = (await sessionResp.json());
|
|
210
|
+
if (!session.gatewayToken)
|
|
211
|
+
return null;
|
|
212
|
+
return {
|
|
213
|
+
ANTHROPIC_BASE_URL: baseUrl,
|
|
214
|
+
ANTHROPIC_AUTH_TOKEN: session.gatewayToken,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
return null;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/** Whether the old listener still accepts loopback connections. */
|
|
222
|
+
async function listenerReleased(port) {
|
|
223
|
+
return new Promise((resolve) => {
|
|
224
|
+
const socket = createConnection({ host: "127.0.0.1", port });
|
|
225
|
+
const finish = (released) => { socket.destroy(); resolve(released); };
|
|
226
|
+
socket.once("connect", () => finish(false));
|
|
227
|
+
socket.once("error", (error) => finish(error.code === "ECONNREFUSED"));
|
|
228
|
+
socket.setTimeout(200, () => finish(false));
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
/** Stop and await process exit AND listener release before removing the PID. */
|
|
232
|
+
export async function stopGateway(dir, timeoutMs = 5000) {
|
|
233
|
+
const pid = readGatewayPid(dir);
|
|
234
|
+
if (!pid)
|
|
235
|
+
return { stopped: false };
|
|
236
|
+
let port = readLlmMeshConfig(dir)?.port ?? 3002;
|
|
237
|
+
try {
|
|
238
|
+
const metadata = JSON.parse(readFileSync(llmMeshTokenPath(dir), "utf8"));
|
|
239
|
+
port = Number(new URL(metadata.baseUrl).port) || port;
|
|
240
|
+
}
|
|
241
|
+
catch { /* Older daemons may have only the public config and PID. */ }
|
|
242
|
+
try {
|
|
243
|
+
process.kill(pid, "SIGTERM");
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
if (error.code !== "ESRCH")
|
|
247
|
+
throw error;
|
|
248
|
+
}
|
|
249
|
+
const deadline = Date.now() + timeoutMs;
|
|
250
|
+
while (Date.now() < deadline) {
|
|
251
|
+
let exited = false;
|
|
252
|
+
try {
|
|
253
|
+
process.kill(pid, 0);
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
if (error.code !== "ESRCH")
|
|
257
|
+
throw error;
|
|
258
|
+
exited = true;
|
|
259
|
+
}
|
|
260
|
+
if (exited && await listenerReleased(port)) {
|
|
261
|
+
try {
|
|
262
|
+
unlinkSync(llmMeshPidPath(dir));
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
if (error.code !== "ENOENT")
|
|
266
|
+
throw error;
|
|
267
|
+
}
|
|
268
|
+
return { stopped: true, pid };
|
|
269
|
+
}
|
|
270
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
271
|
+
}
|
|
272
|
+
throw new Error(`Gateway shutdown timed out after ${timeoutMs}ms (pid ${pid}, port ${port}); PID retained`);
|
|
273
|
+
}
|
|
274
|
+
//# sourceMappingURL=daemon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/gateway-host/daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { serve } from "@hono/node-server";
|
|
2
|
+
import { Hono } from "hono";
|
|
3
|
+
import { createGatewayNamespaceModule } from "@sentropic/cluster-mesh/compose/gateway";
|
|
4
|
+
import { type LlmMeshRoutingConfig } from "../routing-preferences.js";
|
|
5
|
+
export declare const LEGACY_PORTS_INERT: {
|
|
6
|
+
mode: "personal-passthrough";
|
|
7
|
+
crossUserPoolEnabled: boolean;
|
|
8
|
+
pool: {
|
|
9
|
+
listEligibleAccounts: () => never;
|
|
10
|
+
select: () => never;
|
|
11
|
+
snapshotModels: () => never;
|
|
12
|
+
};
|
|
13
|
+
authResolver: {
|
|
14
|
+
resolve: () => never;
|
|
15
|
+
};
|
|
16
|
+
dispatch: {
|
|
17
|
+
dispatch: () => never;
|
|
18
|
+
dispatchStream: () => never;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export interface LocalGatewayAppOptions {
|
|
22
|
+
readonly routing?: LlmMeshRoutingConfig;
|
|
23
|
+
readonly ownerScopeRef?: string;
|
|
24
|
+
/** Composition injection for readiness and fail-before-bind qualification. */
|
|
25
|
+
readonly prepareNamespace?: typeof createGatewayNamespaceModule;
|
|
26
|
+
}
|
|
27
|
+
export declare function createGatewayHost(options?: LocalGatewayAppOptions): {
|
|
28
|
+
app: Hono;
|
|
29
|
+
ready: Promise<void>;
|
|
30
|
+
};
|
|
31
|
+
/** Await preflight and composition before exposing a ready application. */
|
|
32
|
+
export declare function createLocalGatewayApp(options?: LocalGatewayAppOptions): Promise<Hono>;
|
|
33
|
+
export declare function startServer(options?: LocalGatewayAppOptions, listen?: typeof serve): Promise<ReturnType<typeof serve>>;
|
|
34
|
+
//# sourceMappingURL=host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/gateway-host/host.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAoB1C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAQ5B,OAAO,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AAMvF,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAC;AAmBnC,eAAO,MAAM,kBAAkB;;;;oCADD,KAAK;sBAAL,KAAK;8BAAL,KAAK;;;uBAAL,KAAK;;;wBAAL,KAAK;8BAAL,KAAK;;CAOlC,CAAC;AAyCF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,8EAA8E;IAC9E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,4BAA4B,CAAC;CACjE;AAyBD,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,sBAA2B,GAAG;IAAE,GAAG,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CA+H3G;AAED,2EAA2E;AAC3E,wBAAsB,qBAAqB,CAAC,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/F;AAED,wBAAsB,WAAW,CAC/B,OAAO,GAAE,sBAA2B,EACpC,MAAM,GAAE,OAAO,KAAa,GAC3B,OAAO,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAUnC"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { serve } from "@hono/node-server";
|
|
3
|
+
import { CloudCodeRuntimeClient, CodexRuntimeClient, GeminiAdapter, MistralAdapter, MistralRuntimeClient, MuseAdapter, MuseRuntimeClient, OpenAIAdapter, createLlmMesh, createProviderRegistry, } from "@sentropic/cluster-mesh/llm-mesh";
|
|
4
|
+
import {} from "@sentropic/cluster-mesh/gateway";
|
|
5
|
+
import { Hono } from "hono";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
import { resolve } from "node:path";
|
|
8
|
+
import { createClusterMeshModules, createClusterMeshPlugin, createClusterMeshRuntime, } from "@sentropic/cluster-mesh";
|
|
9
|
+
import { createGatewayNamespaceModule } from "@sentropic/cluster-mesh/compose/gateway";
|
|
10
|
+
import { readLlmMeshConfig } from "./config-file.js";
|
|
11
|
+
import { createCliLlmMeshFacade, llmMeshOwnerScopeRef, } from "../llm-mesh-accounts.js";
|
|
12
|
+
import { parseLlmMeshRoutingConfig, routingProfiles, } from "../routing-preferences.js";
|
|
13
|
+
import { getSessionLedgerEntry, getSessionLedgerEntryForClient, listSessionLedger, recordRoutePlan, recordRouteSettlement, } from "./ledger.js";
|
|
14
|
+
import { acquireSession, lookupSessionById, lookupToken, listPublicSessions, sessionCount, } from "./sessions.js";
|
|
15
|
+
/** Pending upstream U3: legacy config ports are inert on the planner-routed path. */
|
|
16
|
+
const legacyPortReached = () => { throw new Error("Inert legacy gateway port reached (pending upstream U3)"); };
|
|
17
|
+
export const LEGACY_PORTS_INERT = {
|
|
18
|
+
mode: "personal-passthrough",
|
|
19
|
+
crossUserPoolEnabled: false,
|
|
20
|
+
pool: { listEligibleAccounts: legacyPortReached, select: legacyPortReached, snapshotModels: legacyPortReached },
|
|
21
|
+
authResolver: { resolve: legacyPortReached },
|
|
22
|
+
dispatch: { dispatch: legacyPortReached, dispatchStream: legacyPortReached },
|
|
23
|
+
};
|
|
24
|
+
const routingConfigFromEnvironment = () => {
|
|
25
|
+
const raw = process.env.H2A_LLM_MESH_ROUTING_JSON;
|
|
26
|
+
return raw ? parseLlmMeshRoutingConfig(raw) : undefined;
|
|
27
|
+
};
|
|
28
|
+
const runtimeMesh = () => createLlmMesh({
|
|
29
|
+
registry: createProviderRegistry([
|
|
30
|
+
new OpenAIAdapter({ client: new CodexRuntimeClient() }),
|
|
31
|
+
new GeminiAdapter({ client: new CloudCodeRuntimeClient() }),
|
|
32
|
+
new MistralAdapter({ client: new MistralRuntimeClient() }),
|
|
33
|
+
new MuseAdapter({ client: new MuseRuntimeClient() }),
|
|
34
|
+
]),
|
|
35
|
+
});
|
|
36
|
+
const bearerFromHeaders = (headers) => {
|
|
37
|
+
const authorization = headers.authorization;
|
|
38
|
+
if (authorization?.toLowerCase().startsWith("bearer ")) {
|
|
39
|
+
return authorization.slice(7).trim();
|
|
40
|
+
}
|
|
41
|
+
return headers["x-api-key"]?.trim() || undefined;
|
|
42
|
+
};
|
|
43
|
+
const observablePlanner = (delegate) => ({
|
|
44
|
+
...(delegate.listModels
|
|
45
|
+
? { listModels: (subject) => delegate.listModels(subject) }
|
|
46
|
+
: {}),
|
|
47
|
+
async plan(subject, input) {
|
|
48
|
+
const plan = await delegate.plan(subject, input);
|
|
49
|
+
const session = lookupSessionById(subject.principalRef);
|
|
50
|
+
if (session)
|
|
51
|
+
recordRoutePlan(session, input, plan);
|
|
52
|
+
return plan;
|
|
53
|
+
},
|
|
54
|
+
prepareAttempt: (...args) => delegate.prepareAttempt(...args),
|
|
55
|
+
describeAffinity: (...args) => delegate.describeAffinity(...args),
|
|
56
|
+
promoteAffinity: (...args) => delegate.promoteAffinity(...args),
|
|
57
|
+
rebindAffinity: (...args) => delegate.rebindAffinity(...args),
|
|
58
|
+
resetAffinity: (...args) => delegate.resetAffinity(...args),
|
|
59
|
+
});
|
|
60
|
+
function publicSessionLedger() {
|
|
61
|
+
const routed = listSessionLedger();
|
|
62
|
+
const routedIds = new Set(routed.map((entry) => entry.gatewaySessionId));
|
|
63
|
+
const idle = listPublicSessions()
|
|
64
|
+
.filter((session) => !routedIds.has(session.sessionId))
|
|
65
|
+
.map((session) => ({
|
|
66
|
+
gatewaySessionId: session.sessionId,
|
|
67
|
+
clientSessionId: session.clientSessionId,
|
|
68
|
+
...(session.workspaceId ? { workspaceId: session.workspaceId } : {}),
|
|
69
|
+
...(session.profile ? { profile: session.profile } : {}),
|
|
70
|
+
account: { id: "unselected", provider: "mesh", label: "unselected" },
|
|
71
|
+
transport: "mesh",
|
|
72
|
+
state: "idle",
|
|
73
|
+
createdAt: session.createdAt,
|
|
74
|
+
lastUsedAt: session.createdAt,
|
|
75
|
+
updatedAt: session.createdAt,
|
|
76
|
+
requestCount: 0,
|
|
77
|
+
inFlightRequests: 0,
|
|
78
|
+
detailsAmbiguous: false,
|
|
79
|
+
}));
|
|
80
|
+
return [...routed, ...idle].sort((a, b) => a.createdAt.localeCompare(b.createdAt));
|
|
81
|
+
}
|
|
82
|
+
export function createGatewayHost(options = {}) {
|
|
83
|
+
let composed = false;
|
|
84
|
+
const readiness = { async isReady() { return composed; } };
|
|
85
|
+
const routing = options.routing ?? routingConfigFromEnvironment();
|
|
86
|
+
const currentRouting = () => {
|
|
87
|
+
if (options.routing)
|
|
88
|
+
return options.routing;
|
|
89
|
+
const publicConfig = readLlmMeshConfig();
|
|
90
|
+
// A present config with no routing field is an intentional live reset.
|
|
91
|
+
// Fall back to the startup environment only when no config exists at all.
|
|
92
|
+
return publicConfig ? publicConfig.routing : routing;
|
|
93
|
+
};
|
|
94
|
+
const ownerScopeRef = options.ownerScopeRef ?? llmMeshOwnerScopeRef();
|
|
95
|
+
const facade = createCliLlmMeshFacade();
|
|
96
|
+
const profiles = routingProfiles(routing);
|
|
97
|
+
const planner = observablePlanner(facade.createRoutePlanner(runtimeMesh(), {
|
|
98
|
+
...(routing?.council ? { council: routing.council } : {}),
|
|
99
|
+
...(profiles ? { profiles } : {}),
|
|
100
|
+
}));
|
|
101
|
+
const callerAuth = {
|
|
102
|
+
async verify(headers) {
|
|
103
|
+
const token = bearerFromHeaders(headers);
|
|
104
|
+
const session = token ? await lookupToken(token) : undefined;
|
|
105
|
+
if (!session)
|
|
106
|
+
return { ok: false, reason: "invalid local gateway bearer" };
|
|
107
|
+
return {
|
|
108
|
+
ok: true,
|
|
109
|
+
cost: {
|
|
110
|
+
tenantId: ownerScopeRef,
|
|
111
|
+
principalId: session.sessionId,
|
|
112
|
+
ownerScopeRef,
|
|
113
|
+
...(session.workspaceId ? { workspaceId: session.workspaceId } : {}),
|
|
114
|
+
source: "h2a-local-gateway",
|
|
115
|
+
correlationId: randomUUID(),
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
const routeMetering = {
|
|
121
|
+
settleRoute(settlement) {
|
|
122
|
+
recordRouteSettlement(settlement);
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
const app = new Hono();
|
|
126
|
+
let gatewayPlugin;
|
|
127
|
+
app.get("/health", (c) => c.json({ ok: true }));
|
|
128
|
+
// This route also covers the interval before the composed router is mounted.
|
|
129
|
+
app.get("/readyz", async (c) => {
|
|
130
|
+
const ready = await readiness.isReady();
|
|
131
|
+
return c.json({ ready }, ready ? 200 : 503);
|
|
132
|
+
});
|
|
133
|
+
app.post("/v1/session", async (c) => {
|
|
134
|
+
let body;
|
|
135
|
+
try {
|
|
136
|
+
body = await c.req.json();
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
return c.json({ error: "invalid JSON" }, 400);
|
|
140
|
+
}
|
|
141
|
+
if (typeof body.sessionId !== "string" || !body.sessionId.trim()) {
|
|
142
|
+
return c.json({ error: "sessionId (string) required" }, 400);
|
|
143
|
+
}
|
|
144
|
+
const session = await acquireSession(body.sessionId, {
|
|
145
|
+
...(typeof body.clientSessionId === "string"
|
|
146
|
+
? { clientSessionId: body.clientSessionId }
|
|
147
|
+
: {}),
|
|
148
|
+
...(typeof body.workspaceId === "string" ? { workspaceId: body.workspaceId } : {}),
|
|
149
|
+
...(typeof body.profile === "string" ? { profile: body.profile } : {}),
|
|
150
|
+
});
|
|
151
|
+
return c.json(session, 201);
|
|
152
|
+
});
|
|
153
|
+
app.get("/v1/sessions", (c) => c.json({ data: publicSessionLedger() }));
|
|
154
|
+
app.get("/v1/sessions/:id", (c) => {
|
|
155
|
+
const entry = getSessionLedgerEntry(c.req.param("id"));
|
|
156
|
+
return entry ? c.json(entry) : c.json({ error: "session not found" }, 404);
|
|
157
|
+
});
|
|
158
|
+
app.get("/v1/status/client/:clientSessionId", (c) => {
|
|
159
|
+
const entry = getSessionLedgerEntryForClient(c.req.param("clientSessionId"));
|
|
160
|
+
return entry ? c.json(entry) : c.json({ error: "client session not found" }, 404);
|
|
161
|
+
});
|
|
162
|
+
// Hono freezes its matcher on first use. Register the delegation before
|
|
163
|
+
// composition so in-process readiness checks cannot freeze a partial router.
|
|
164
|
+
app.all("*", (c) => gatewayPlugin
|
|
165
|
+
? gatewayPlugin.fetch(c.req.raw, c.env)
|
|
166
|
+
: c.json({ error: "gateway composition incomplete" }, 503));
|
|
167
|
+
const ready = (async () => {
|
|
168
|
+
const modules = createClusterMeshModules();
|
|
169
|
+
const namespace = await (options.prepareNamespace ?? createGatewayNamespaceModule)(modules, {
|
|
170
|
+
enabled: true,
|
|
171
|
+
authMode: "host",
|
|
172
|
+
createRouter({ gateway }) {
|
|
173
|
+
return gateway.createGatewayRouter({
|
|
174
|
+
config: { ...LEGACY_PORTS_INERT, callerAuth },
|
|
175
|
+
readiness,
|
|
176
|
+
routePlanner: planner,
|
|
177
|
+
routeMetering,
|
|
178
|
+
routeInput({ cost }) {
|
|
179
|
+
const session = lookupSessionById(cost.principalId);
|
|
180
|
+
const activeRouting = currentRouting();
|
|
181
|
+
return {
|
|
182
|
+
affinityKey: session?.clientSessionId ?? cost.principalId,
|
|
183
|
+
...(session?.workspaceId ? { workspaceId: session.workspaceId } : {}),
|
|
184
|
+
...(activeRouting?.policy ? { policyOverride: activeRouting.policy } : {}),
|
|
185
|
+
...(activeRouting?.activeProfile ? { policyProfile: activeRouting.activeProfile } : {}),
|
|
186
|
+
...(activeRouting?.explicit ? { explicit: activeRouting.explicit } : {}),
|
|
187
|
+
};
|
|
188
|
+
},
|
|
189
|
+
});
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
// Session-control ports are deliberately unavailable on this local gateway host.
|
|
193
|
+
// Bearer authentication and route settlement are injected above, through gateway ports.
|
|
194
|
+
const runtime = createClusterMeshRuntime({
|
|
195
|
+
generationId: randomUUID(),
|
|
196
|
+
config: { capacity: { poolSize: 1 } },
|
|
197
|
+
context: { async verify() { throw new Error("Session control is unavailable on the local gateway host"); } },
|
|
198
|
+
registration: { async authorize() { return { ok: false, reason: "missing_registration" }; } },
|
|
199
|
+
receipts: { async append() { throw new Error("Session-control receipts are unavailable on the local gateway host"); } },
|
|
200
|
+
});
|
|
201
|
+
gatewayPlugin = createClusterMeshPlugin({ runtime, namespaces: [namespace], mounts: { "/gw": "/" } });
|
|
202
|
+
composed = true;
|
|
203
|
+
})();
|
|
204
|
+
return { app, ready };
|
|
205
|
+
}
|
|
206
|
+
/** Await preflight and composition before exposing a ready application. */
|
|
207
|
+
export async function createLocalGatewayApp(options = {}) {
|
|
208
|
+
const host = createGatewayHost(options);
|
|
209
|
+
await host.ready;
|
|
210
|
+
return host.app;
|
|
211
|
+
}
|
|
212
|
+
export async function startServer(options = {}, listen = serve) {
|
|
213
|
+
const port = Number.parseInt(process.env.PORT ?? "3002", 10);
|
|
214
|
+
if (!Number.isInteger(port) || port < 1 || port > 65535)
|
|
215
|
+
throw new Error("Invalid gateway PORT: expected 1..65535");
|
|
216
|
+
const app = await createLocalGatewayApp(options);
|
|
217
|
+
// Session minting is unauthenticated local control-plane traffic: loopback only.
|
|
218
|
+
return listen({ fetch: app.fetch, port, hostname: "127.0.0.1" }, () => {
|
|
219
|
+
process.stdout.write(`[gateway-host] listening on :${port} — ${sessionCount()} local bearers\n`);
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
if (process.argv[1] && resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
|
|
223
|
+
startServer().catch((error) => {
|
|
224
|
+
process.stderr.write(`[gateway-host] startup failed before bind: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
225
|
+
process.exitCode = 1;
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../src/gateway-host/host.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { RoutePlan, RoutePlanInput } from "@sentropic/llm-mesh";
|
|
2
|
-
import type { RouteRequestSettlement } from "@sentropic/
|
|
3
|
-
import type { SessionEntry } from "./
|
|
1
|
+
import type { RoutePlan, RoutePlanInput } from "@sentropic/cluster-mesh/llm-mesh";
|
|
2
|
+
import type { RouteRequestSettlement } from "@sentropic/cluster-mesh/gateway";
|
|
3
|
+
import type { SessionEntry } from "./sessions.js";
|
|
4
4
|
export type GatewaySessionState = "idle" | "active" | "rate-limited";
|
|
5
5
|
export interface PublicAccountDescriptor {
|
|
6
6
|
/** Redacted mesh diagnostic reference, never an executable account id. */
|
|
@@ -46,4 +46,4 @@ export declare function listSessionLedger(): SessionLedgerEntry[];
|
|
|
46
46
|
export declare function getSessionLedgerEntry(sessionId: string): SessionLedgerEntry | undefined;
|
|
47
47
|
export declare function getSessionLedgerEntryForClient(clientSessionId: string): SessionLedgerEntry | undefined;
|
|
48
48
|
export declare function resetSessionLedger(): void;
|
|
49
|
-
//# sourceMappingURL=
|
|
49
|
+
//# sourceMappingURL=ledger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../src/gateway-host/ledger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,SAAS,EACT,cAAc,EACf,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,cAAc,CAAC;AAErE,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,EAAE,EAAE,uBAAuB,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,wBAAwB,CAAC;IAClD,QAAQ,CAAC,YAAY,CAAC,EAAE,uBAAuB,CAAC;CACjD;AAyBD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,SAAS,EACf,GAAG,OAAa,GACf,IAAI,CAsCN;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,sBAAsB,EAClC,GAAG,OAAa,GACf,IAAI,CAoDN;AAED,wBAAgB,iBAAiB,IAAI,kBAAkB,EAAE,CAExD;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAEvF;AAED,wBAAgB,8BAA8B,CAC5C,eAAe,EAAE,MAAM,GACtB,kBAAkB,GAAG,SAAS,CAGhC;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/gateway-host/ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,12 @@
|
|
|
4
4
|
* H2A owns only minting and forwarding this opaque, process-local bearer. It
|
|
5
5
|
* contains no provider credential, account binding, route, model or affinity.
|
|
6
6
|
* Mesh owns every one of those concerns after caller authentication.
|
|
7
|
+
*
|
|
8
|
+
* The registry persists to disk so a gateway restart (or an h2a upgrade, which
|
|
9
|
+
* restarts the gateway) keeps every live session's bearer valid: an old token
|
|
10
|
+
* still authenticates after boot, and re-acquiring the same sessionId returns
|
|
11
|
+
* the same token instead of minting a replacement. Owner decision 2026-10-10:
|
|
12
|
+
* restarts must never invalidate live sessions.
|
|
7
13
|
*/
|
|
8
14
|
export interface SessionEntry {
|
|
9
15
|
readonly sessionId: string;
|
|
@@ -27,5 +33,7 @@ export declare function acquireSession(sessionId: string, options?: AcquireSessi
|
|
|
27
33
|
export declare function lookupToken(gatewayToken: string): Promise<SessionEntry | undefined>;
|
|
28
34
|
export declare function lookupSessionById(sessionId: string): SessionEntry | undefined;
|
|
29
35
|
export declare function sessionCount(): number;
|
|
36
|
+
/** Public registry view for sessions that have not acquired a route yet. */
|
|
37
|
+
export declare function listPublicSessions(): Omit<SessionEntry, "gatewayToken">[];
|
|
30
38
|
export declare function resetSessions(): void;
|
|
31
|
-
//# sourceMappingURL=
|
|
39
|
+
//# sourceMappingURL=sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/gateway-host/sessions.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AA+DD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,aAAa,CAAC,CAgCxB;AAED,wBAAsB,WAAW,CAC/B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAGnC;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAI7E;AAED,wBAAgB,YAAY,IAAI,MAAM,CAGrC;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,IAAI,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,CAGzE;AAED,wBAAgB,aAAa,IAAI,IAAI,CAKpC"}
|