@sentropic/h2a-runtime 0.91.1 → 0.93.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/conv-guard.d.ts +6 -1
- package/dist/conv-guard.d.ts.map +1 -1
- package/dist/conv-guard.js +33 -8
- package/dist/conv-guard.js.map +1 -1
- package/dist/enroll.d.ts.map +1 -1
- package/dist/enroll.js +12 -2
- package/dist/enroll.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +819 -155
- package/dist/index.js.map +1 -1
- package/dist/launch-layout.d.ts +74 -0
- package/dist/launch-layout.d.ts.map +1 -0
- package/dist/launch-layout.js +324 -0
- package/dist/launch-layout.js.map +1 -0
- 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-host.d.ts +146 -0
- package/dist/native-host.d.ts.map +1 -0
- package/dist/native-host.js +456 -0
- package/dist/native-host.js.map +1 -0
- package/dist/native-terminal/host.d.ts +317 -1
- package/dist/native-terminal/host.d.ts.map +1 -1
- package/dist/native-terminal/host.js +696 -3
- package/dist/native-terminal/host.js.map +1 -1
- package/dist/native-terminal/op.d.ts +5 -0
- package/dist/native-terminal/op.d.ts.map +1 -0
- package/dist/native-terminal/op.js +408 -0
- package/dist/native-terminal/op.js.map +1 -0
- package/dist/native-terminal/process.d.ts +2 -0
- package/dist/native-terminal/process.d.ts.map +1 -1
- package/dist/native-terminal/process.js +16 -2
- package/dist/native-terminal/process.js.map +1 -1
- package/dist/native-terminal/server.d.ts.map +1 -1
- package/dist/native-terminal/server.js +6 -2
- package/dist/native-terminal/server.js.map +1 -1
- package/dist/native-terminal/socket-path.d.ts +8 -0
- package/dist/native-terminal/socket-path.d.ts.map +1 -1
- package/dist/native-terminal/socket-path.js +31 -1
- package/dist/native-terminal/socket-path.js.map +1 -1
- package/dist/native-terminal/supervisor.d.ts +13 -0
- package/dist/native-terminal/supervisor.d.ts.map +1 -1
- package/dist/native-terminal/supervisor.js +45 -0
- package/dist/native-terminal/supervisor.js.map +1 -1
- package/dist/pty.d.ts +23 -0
- package/dist/pty.d.ts.map +1 -1
- package/dist/pty.js +35 -0
- package/dist/pty.js.map +1 -1
- package/dist/readiness.d.ts +7 -0
- package/dist/readiness.d.ts.map +1 -1
- package/dist/readiness.js +12 -9
- package/dist/readiness.js.map +1 -1
- package/dist/registry.d.ts +324 -2
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +659 -20
- package/dist/registry.js.map +1 -1
- package/dist/restore.d.ts +91 -32
- package/dist/restore.d.ts.map +1 -1
- package/dist/restore.js +226 -186
- package/dist/restore.js.map +1 -1
- package/dist/status-projection.d.ts.map +1 -1
- package/dist/tmux.d.ts +9 -6
- package/dist/tmux.d.ts.map +1 -1
- package/dist/tmux.js +34 -8
- 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
package/dist/llm-mesh.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* llm-mesh — local LLM gateway management for solo-dev mode.
|
|
3
3
|
*
|
|
4
|
-
* Enrollment: `h2a llm-mesh enroll cloud-code|codex` delegates OAuth
|
|
5
|
-
*
|
|
4
|
+
* Enrollment: `h2a llm-mesh enroll cloud-code|codex` delegates OAuth and
|
|
5
|
+
* account persistence entirely to the sentropic-owned facade.
|
|
6
6
|
*
|
|
7
|
-
* Startup: `
|
|
8
|
-
* gateway runtime as a background process
|
|
9
|
-
*
|
|
7
|
+
* Startup: `h2a llm-mesh start` reads public host config and starts the
|
|
8
|
+
* embedded gateway runtime as a background process. Callers acquire an
|
|
9
|
+
* opaque process-local bearer without printing it.
|
|
10
10
|
*
|
|
11
11
|
* Config path: ~/.sentropic/llm-mesh.json (0600, public metadata only)
|
|
12
12
|
* PID file: ~/.sentropic/llm-mesh.pid
|
|
13
|
-
*
|
|
14
|
-
* Seed file: ~/.sentropic/llm-mesh-seed (0600, sole durable gateway-token secret)
|
|
13
|
+
* Runtime file: ~/.sentropic/llm-mesh-token.json (0600, base URL + PID only)
|
|
15
14
|
*/
|
|
16
|
-
import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync,
|
|
15
|
+
import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from "node:fs";
|
|
17
16
|
import { homedir, hostname } from "node:os";
|
|
18
17
|
import { dirname, join } from "node:path";
|
|
19
18
|
import { fileURLToPath } from "node:url";
|
|
20
19
|
import { spawn } from "node:child_process";
|
|
21
20
|
import { randomBytes } from "node:crypto";
|
|
22
21
|
import { createLlmMeshFacade, } from "@sentropic/llm-mesh/facade";
|
|
22
|
+
import { validateLlmMeshRoutingConfig, } from "./llm-routing-config.js";
|
|
23
23
|
const ANTHROPIC_GATEWAY_ENV_KEYS = [
|
|
24
24
|
"ANTHROPIC_BASE_URL",
|
|
25
25
|
"ANTHROPIC_AUTH_TOKEN",
|
|
@@ -66,8 +66,13 @@ export function createCliLlmMeshFacade() {
|
|
|
66
66
|
return createLlmMeshFacade({
|
|
67
67
|
configResolver: facadeConfigResolver(),
|
|
68
68
|
mode: "cli",
|
|
69
|
+
legacyAccountOwnerScopeRef: llmMeshOwnerScopeRef(),
|
|
69
70
|
});
|
|
70
71
|
}
|
|
72
|
+
/** Stable local owner used both at enrollment and by gateway-authenticated routing. */
|
|
73
|
+
export function llmMeshOwnerScopeRef() {
|
|
74
|
+
return process.env.H2A_LLM_MESH_OWNER_SCOPE?.trim() || `cli:${hostname()}`;
|
|
75
|
+
}
|
|
71
76
|
function openEnrollmentBrowser(url) {
|
|
72
77
|
const command = process.platform === "darwin"
|
|
73
78
|
? "open"
|
|
@@ -85,8 +90,8 @@ function openEnrollmentBrowser(url) {
|
|
|
85
90
|
}
|
|
86
91
|
/**
|
|
87
92
|
* Enroll through the sentropic-owned OAuth state machine. H2A never receives
|
|
88
|
-
* an authorization code or a provider token
|
|
89
|
-
*
|
|
93
|
+
* an authorization code or a provider token. Account records remain owned by
|
|
94
|
+
* the facade/keyring and are not copied into h2a config.
|
|
90
95
|
*/
|
|
91
96
|
export async function enrollViaFacade(provider, options = {}) {
|
|
92
97
|
const facade = options.facade ?? createCliLlmMeshFacade();
|
|
@@ -94,7 +99,7 @@ export async function enrollViaFacade(provider, options = {}) {
|
|
|
94
99
|
configRef: options.configRef ?? process.env.H2A_LLM_MESH_CONFIG_REF ?? "default",
|
|
95
100
|
mode: "cli",
|
|
96
101
|
redirectUri: options.redirectUri ?? "http://127.0.0.1",
|
|
97
|
-
ownerScope: options.ownerScope ??
|
|
102
|
+
ownerScope: options.ownerScope ?? llmMeshOwnerScopeRef(),
|
|
98
103
|
});
|
|
99
104
|
const completed = provider === "cloud-code"
|
|
100
105
|
? await (async () => {
|
|
@@ -114,12 +119,6 @@ export async function enrollViaFacade(provider, options = {}) {
|
|
|
114
119
|
})();
|
|
115
120
|
return { accountId: completed.accountId, provider, label: completed.label };
|
|
116
121
|
}
|
|
117
|
-
export function recordFacadeEnrollment(account, dir) {
|
|
118
|
-
const config = readLlmMeshConfig(dir) ?? { accounts: [] };
|
|
119
|
-
const meshAccounts = (config.meshAccounts ?? []).filter((existing) => existing.accountId !== account.accountId);
|
|
120
|
-
meshAccounts.push(account);
|
|
121
|
-
writeLlmMeshConfig({ ...config, meshAccounts }, dir);
|
|
122
|
-
}
|
|
123
122
|
// ---------------------------------------------------------------------------
|
|
124
123
|
// Capitalized LlmMeshManager API
|
|
125
124
|
// ---------------------------------------------------------------------------
|
|
@@ -130,22 +129,6 @@ export class LlmMeshManager {
|
|
|
130
129
|
SaveConfig(config, dir) {
|
|
131
130
|
writeLlmMeshConfig(config, dir);
|
|
132
131
|
}
|
|
133
|
-
EnrollAccount(provider, customDir) {
|
|
134
|
-
const p = provider.toLowerCase();
|
|
135
|
-
if (p === "codex" || p === "openai") {
|
|
136
|
-
return enrollCodexAccount(customDir);
|
|
137
|
-
}
|
|
138
|
-
if (p === "google" || p === "gemini") {
|
|
139
|
-
return enrollGeminiAccount(customDir);
|
|
140
|
-
}
|
|
141
|
-
if (p === "anthropic") {
|
|
142
|
-
return enrollClaudeAccount(customDir);
|
|
143
|
-
}
|
|
144
|
-
throw new Error(`Unsupported provider for enrollment: ${provider}`);
|
|
145
|
-
}
|
|
146
|
-
async RefreshToken(account) {
|
|
147
|
-
return refreshAccountToken(account);
|
|
148
|
-
}
|
|
149
132
|
async StartGateway(config, opts = {}) {
|
|
150
133
|
return startGateway(config, opts);
|
|
151
134
|
}
|
|
@@ -171,12 +154,6 @@ export function llmMeshPidPath(dir) {
|
|
|
171
154
|
export function llmMeshTokenPath(dir) {
|
|
172
155
|
return join(dir ?? sentropicDir(), "llm-mesh-token.json");
|
|
173
156
|
}
|
|
174
|
-
export function llmMeshSeedPath(dir) {
|
|
175
|
-
return join(dir ?? sentropicDir(), "llm-mesh-seed");
|
|
176
|
-
}
|
|
177
|
-
export function llmMeshStickyPath(dir) {
|
|
178
|
-
return join(dir ?? sentropicDir(), "llm-mesh-sticky.json");
|
|
179
|
-
}
|
|
180
157
|
export function llmMeshLogPath(config, dir) {
|
|
181
158
|
return config?.logFile ?? join(dir ?? sentropicDir(), "llm-mesh.log");
|
|
182
159
|
}
|
|
@@ -198,304 +175,32 @@ function writeSecret(path, value) {
|
|
|
198
175
|
chmodSync(tmp, 0o600);
|
|
199
176
|
renameSync(tmp, path);
|
|
200
177
|
}
|
|
201
|
-
function writeSecretString(path, value) {
|
|
202
|
-
mkdirSync(dirname(path), { recursive: true });
|
|
203
|
-
const tmp = `${path}.tmp.${process.pid}`;
|
|
204
|
-
writeFileSync(tmp, value + "\n", { mode: 0o600 });
|
|
205
|
-
chmodSync(tmp, 0o600);
|
|
206
|
-
renameSync(tmp, path);
|
|
207
|
-
}
|
|
208
178
|
export function readLlmMeshConfig(dir) {
|
|
209
179
|
const config = readJson(llmMeshConfigPath(dir));
|
|
210
180
|
if (!config)
|
|
211
181
|
return null;
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
return { ...config, accounts: [] };
|
|
182
|
+
const { accounts: _legacyAccounts, meshAccounts: _legacyPublicIds, ...publicConfig } = config;
|
|
183
|
+
return publicConfig;
|
|
215
184
|
}
|
|
216
185
|
export function writeLlmMeshConfig(config, dir) {
|
|
217
186
|
// The facade/keyring own credentials. Keep only public enrollment metadata
|
|
218
187
|
// in llm-mesh.json, including when migrating a pre-facade configuration.
|
|
219
|
-
const { accounts: _legacyCredentialRecords, ...publicConfig } = config;
|
|
188
|
+
const { accounts: _legacyCredentialRecords, meshAccounts: _legacyPublicIds, ...publicConfig } = config;
|
|
189
|
+
if (publicConfig.routing)
|
|
190
|
+
validateLlmMeshRoutingConfig(publicConfig.routing);
|
|
220
191
|
writeSecret(llmMeshConfigPath(dir), publicConfig);
|
|
221
192
|
}
|
|
222
|
-
export function
|
|
223
|
-
const
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
// best effort only
|
|
234
|
-
}
|
|
235
|
-
return seed;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
catch {
|
|
239
|
-
// create below
|
|
240
|
-
}
|
|
241
|
-
const seed = randomBytes(32).toString("base64url");
|
|
242
|
-
writeSecretString(path, seed);
|
|
243
|
-
return seed;
|
|
244
|
-
}
|
|
245
|
-
// ---------------------------------------------------------------------------
|
|
246
|
-
// JWT helpers (no signature verification — expiry check only)
|
|
247
|
-
// ---------------------------------------------------------------------------
|
|
248
|
-
export function jwtExpiry(token) {
|
|
249
|
-
try {
|
|
250
|
-
const parts = token.split(".");
|
|
251
|
-
if (parts.length < 2)
|
|
252
|
-
return null;
|
|
253
|
-
const payload = JSON.parse(Buffer.from(parts[1], "base64url").toString("utf8"));
|
|
254
|
-
if (typeof payload.exp !== "number")
|
|
255
|
-
return null;
|
|
256
|
-
return new Date(payload.exp * 1000);
|
|
257
|
-
}
|
|
258
|
-
catch {
|
|
259
|
-
return null;
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
export function isTokenExpired(token, graceSeconds = 300) {
|
|
263
|
-
const exp = jwtExpiry(token);
|
|
264
|
-
if (!exp)
|
|
265
|
-
return false; // non-JWT token — assume valid
|
|
266
|
-
return exp.getTime() - graceSeconds * 1000 < Date.now();
|
|
267
|
-
}
|
|
268
|
-
function isAccountTokenExpired(account, graceSeconds = 300) {
|
|
269
|
-
if (account.expiresAt) {
|
|
270
|
-
const expiresAtMs = Date.parse(account.expiresAt);
|
|
271
|
-
if (Number.isFinite(expiresAtMs)) {
|
|
272
|
-
return expiresAtMs - graceSeconds * 1000 < Date.now();
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
return isTokenExpired(account.token, graceSeconds);
|
|
276
|
-
}
|
|
277
|
-
/**
|
|
278
|
-
* Read Codex credentials from ~/.codex/auth.json and produce an LlmMeshAccount.
|
|
279
|
-
* Supports:
|
|
280
|
-
* - OPENAI_API_KEY (raw sk-... key, pay-per-token tier)
|
|
281
|
-
* - tokens.access_token (ChatGPT Pro OAuth JWT, subscription flat-rate tier)
|
|
282
|
-
*/
|
|
283
|
-
export function enrollCodexAccount(codexDir) {
|
|
284
|
-
const authPath = join(codexDir ?? join(homedir(), ".codex"), "auth.json");
|
|
285
|
-
const auth = readJson(authPath);
|
|
286
|
-
if (!auth) {
|
|
287
|
-
throw new Error(`Codex auth file not found or unreadable: ${authPath}`);
|
|
288
|
-
}
|
|
289
|
-
// Raw API key path (standard pay-per-token)
|
|
290
|
-
if (typeof auth.OPENAI_API_KEY === "string" && auth.OPENAI_API_KEY.trim()) {
|
|
291
|
-
return {
|
|
292
|
-
id: "codex-api",
|
|
293
|
-
provider: "openai",
|
|
294
|
-
label: "Codex (API key)",
|
|
295
|
-
token: auth.OPENAI_API_KEY.trim(),
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
|
-
// OAuth path (ChatGPT Pro / subscription)
|
|
299
|
-
const accessToken = auth.tokens?.access_token;
|
|
300
|
-
if (!accessToken || !accessToken.trim()) {
|
|
301
|
-
throw new Error(`No usable credential in ${authPath}: OPENAI_API_KEY is null/absent ` +
|
|
302
|
-
`and tokens.access_token is missing. Run \`codex auth login\` first.`);
|
|
303
|
-
}
|
|
304
|
-
const expiresAt = jwtExpiry(accessToken);
|
|
305
|
-
const refreshToken = auth.tokens?.refresh_token;
|
|
306
|
-
const account = {
|
|
307
|
-
id: "codex-oauth",
|
|
308
|
-
provider: "openai",
|
|
309
|
-
label: "Codex (ChatGPT Pro OAuth)",
|
|
310
|
-
token: accessToken.trim(),
|
|
311
|
-
};
|
|
312
|
-
if (refreshToken)
|
|
313
|
-
account.refreshToken = refreshToken;
|
|
314
|
-
if (expiresAt)
|
|
315
|
-
account.expiresAt = expiresAt.toISOString();
|
|
316
|
-
return account;
|
|
317
|
-
}
|
|
318
|
-
/**
|
|
319
|
-
* Read the Google Code Assist OAuth login from ~/.gemini/oauth_creds.json and produce a gateway
|
|
320
|
-
* account.
|
|
321
|
-
*/
|
|
322
|
-
export function enrollGeminiAccount(geminiDir) {
|
|
323
|
-
const baseDir = geminiDir ?? join(homedir(), ".gemini");
|
|
324
|
-
// ── Try AGY (Antigravity) token — access_token only (refresh_token is
|
|
325
|
-
// bound to AGY's own OAuth client and cannot be refreshed by h2a) ──
|
|
326
|
-
const agyPath = join(baseDir, "antigravity-cli", "antigravity-oauth-token");
|
|
327
|
-
const agyRaw = readJson(agyPath);
|
|
328
|
-
const agyToken = agyRaw?.token?.access_token?.trim();
|
|
329
|
-
const agyExpiry = agyRaw?.token?.expiry ? Date.parse(agyRaw.token.expiry) : NaN;
|
|
330
|
-
// Only use AGY token if it's still valid (not expired).
|
|
331
|
-
const agyStillValid = Number.isFinite(agyExpiry) && agyExpiry > Date.now();
|
|
332
|
-
if (agyToken && agyStillValid) {
|
|
333
|
-
return {
|
|
334
|
-
id: "gemini-code",
|
|
335
|
-
provider: "google",
|
|
336
|
-
authType: "bearer",
|
|
337
|
-
label: "Antigravity (Google OAuth)",
|
|
338
|
-
token: agyToken,
|
|
339
|
-
expiresAt: new Date(agyExpiry).toISOString(),
|
|
340
|
-
// No refreshToken — AGY's refresh_token is bound to its own OAuth client.
|
|
341
|
-
};
|
|
342
|
-
}
|
|
343
|
-
// ── Fallback: legacy Gemini CLI oauth_creds.json ──
|
|
344
|
-
const path = join(baseDir, "oauth_creds.json");
|
|
345
|
-
const oauth = readJson(path);
|
|
346
|
-
const accessToken = oauth?.access_token;
|
|
347
|
-
if (!accessToken || !accessToken.trim()) {
|
|
348
|
-
throw new Error(`No usable Google OAuth found.\n` +
|
|
349
|
-
` Tried AGY token: ${agyPath} (missing or empty)\n` +
|
|
350
|
-
` Tried Gemini CLI: ${path} (missing or empty)\n` +
|
|
351
|
-
`Log in with the Antigravity CLI (agy) or Gemini CLI first.`);
|
|
352
|
-
}
|
|
353
|
-
const account = {
|
|
354
|
-
id: "gemini-code",
|
|
355
|
-
provider: "google",
|
|
356
|
-
authType: "bearer",
|
|
357
|
-
label: "Gemini Code Assist (OAuth)",
|
|
358
|
-
token: accessToken.trim(),
|
|
359
|
-
};
|
|
360
|
-
if (oauth?.refresh_token)
|
|
361
|
-
account.refreshToken = oauth.refresh_token;
|
|
362
|
-
if (typeof oauth?.expiry_date === "number") {
|
|
363
|
-
account.expiresAt = new Date(oauth.expiry_date).toISOString();
|
|
364
|
-
}
|
|
365
|
-
return account;
|
|
366
|
-
}
|
|
367
|
-
/**
|
|
368
|
-
* Read the local Claude Code OAuth login from ~/.claude/.credentials.json and produce a gateway
|
|
369
|
-
* account that upstreams via the Claude-code transport (Anthropic /v1/messages with a Bearer OAuth
|
|
370
|
-
* token + the oauth beta, NOT an sk-ant-api key). Mirrors enrollCodexAccount. The proxy uses the
|
|
371
|
-
* `sk-ant-oat` token prefix (and authType:"bearer") to pick the Bearer + anthropic-beta path.
|
|
372
|
-
*/
|
|
373
|
-
export function enrollClaudeAccount(claudeDir) {
|
|
374
|
-
const path = join(claudeDir ?? join(homedir(), ".claude"), ".credentials.json");
|
|
375
|
-
const raw = readJson(path);
|
|
376
|
-
const oauth = raw?.claudeAiOauth;
|
|
377
|
-
const accessToken = oauth?.accessToken;
|
|
378
|
-
if (!accessToken || !accessToken.trim()) {
|
|
379
|
-
throw new Error(`No usable Claude Code OAuth in ${path}: claudeAiOauth.accessToken is missing. ` +
|
|
380
|
-
`Log in with the Claude Code CLI first.`);
|
|
381
|
-
}
|
|
382
|
-
const label = oauth?.subscriptionType
|
|
383
|
-
? `Claude Code (${oauth.subscriptionType} OAuth)`
|
|
384
|
-
: "Claude Code (OAuth)";
|
|
385
|
-
const account = {
|
|
386
|
-
id: "claude-code",
|
|
387
|
-
provider: "anthropic",
|
|
388
|
-
authType: "bearer",
|
|
389
|
-
label,
|
|
390
|
-
token: accessToken.trim(),
|
|
391
|
-
};
|
|
392
|
-
if (oauth?.refreshToken)
|
|
393
|
-
account.refreshToken = oauth.refreshToken;
|
|
394
|
-
if (typeof oauth?.expiresAt === "number") {
|
|
395
|
-
account.expiresAt = new Date(oauth.expiresAt).toISOString();
|
|
396
|
-
}
|
|
397
|
-
return account;
|
|
398
|
-
}
|
|
399
|
-
// Google OAuth client credentials for token refresh.
|
|
400
|
-
// AGY (Antigravity CLI) and Gemini CLI use different OAuth installed-app clients.
|
|
401
|
-
// Both are public credentials shipped in open-source binaries (not server secrets).
|
|
402
|
-
// We try AGY first (since enrollGeminiAccount prefers AGY tokens), then Gemini CLI.
|
|
403
|
-
const AGY_CLIENT_ID = Buffer.from("MTA3MTAwNjA2MDU5MS10" + "bWhzc2luMmgyMWxjcmUy" + "MzV2dG9sb2poNGc0MDNl" + "cC5hcHBzLmdvb2dsZXVz" + "ZXJjb250ZW50LmNvbQ==", "base64").toString();
|
|
404
|
-
const AGY_CLIENT_SECRET = Buffer.from("R09DU1BYLTlZUVdwRjdS" + "V0RDMFFUZGotWXhLTXdSMFp0c1g=", "base64").toString();
|
|
405
|
-
const GEMINI_CLI_CLIENT_ID = Buffer.from("NjgxMjU1ODA5Mzk1LW9v" + "OGZ0Mm9wcmRybnA5ZTNh" + "cWY2YXYzaG1kaWIxMzVq" + "LmFwcHMuZ29vZ2xldXNl" + "cmNvbnRlbnQuY29t", "base64").toString();
|
|
406
|
-
const GEMINI_CLI_CLIENT_SECRET = Buffer.from("R09DU1BYLTR1SGdNUG0t" + "MW83U2stZ2VWNkN1NWNsWEZzeGw=", "base64").toString();
|
|
407
|
-
/**
|
|
408
|
-
* Attempt to refresh an account's OAuth access token using its refresh_token.
|
|
409
|
-
* Returns the updated account, or the original if refresh is not applicable
|
|
410
|
-
* (no refresh_token, or already a raw API key).
|
|
411
|
-
*/
|
|
412
|
-
export async function refreshAccountToken(account, dir) {
|
|
413
|
-
if (account.provider === "google" ||
|
|
414
|
-
account.provider === "gemini" ||
|
|
415
|
-
account.provider === "gcp") {
|
|
416
|
-
if (!account.refreshToken) {
|
|
417
|
-
const baseDir = dir ?? homedir();
|
|
418
|
-
const agyPath = join(baseDir, ".gemini", "antigravity-cli", "antigravity-oauth-token");
|
|
419
|
-
const agyRaw = readJson(agyPath);
|
|
420
|
-
const agyToken = agyRaw?.token?.access_token?.trim();
|
|
421
|
-
if (agyToken) {
|
|
422
|
-
const agyExpiry = agyRaw?.token?.expiry ? Date.parse(agyRaw.token.expiry) : NaN;
|
|
423
|
-
return {
|
|
424
|
-
...account,
|
|
425
|
-
token: agyToken,
|
|
426
|
-
...(Number.isFinite(agyExpiry) ? { expiresAt: new Date(agyExpiry).toISOString() } : {}),
|
|
427
|
-
};
|
|
428
|
-
}
|
|
429
|
-
return account;
|
|
430
|
-
}
|
|
431
|
-
if (!isAccountTokenExpired(account))
|
|
432
|
-
return account;
|
|
433
|
-
const clientId = process.env["GOOGLE_OAUTH_CLIENT_ID"] ?? AGY_CLIENT_ID;
|
|
434
|
-
const clientSecret = process.env["GOOGLE_OAUTH_CLIENT_SECRET"] ?? AGY_CLIENT_SECRET;
|
|
435
|
-
const doRefresh = async (cId, cSecret) => {
|
|
436
|
-
return fetch("https://oauth2.googleapis.com/token", {
|
|
437
|
-
method: "POST",
|
|
438
|
-
headers: { "content-type": "application/x-www-form-urlencoded" },
|
|
439
|
-
body: new URLSearchParams({
|
|
440
|
-
grant_type: "refresh_token",
|
|
441
|
-
refresh_token: account.refreshToken,
|
|
442
|
-
client_id: cId,
|
|
443
|
-
client_secret: cSecret,
|
|
444
|
-
}),
|
|
445
|
-
});
|
|
446
|
-
};
|
|
447
|
-
let resp = await doRefresh(clientId, clientSecret);
|
|
448
|
-
if (resp.status === 401 && !process.env["GOOGLE_OAUTH_CLIENT_ID"]) {
|
|
449
|
-
resp = await doRefresh(GEMINI_CLI_CLIENT_ID, GEMINI_CLI_CLIENT_SECRET);
|
|
450
|
-
}
|
|
451
|
-
if (!resp.ok) {
|
|
452
|
-
throw new Error(`Google token refresh failed (${resp.status}): ${await resp.text()}`);
|
|
453
|
-
}
|
|
454
|
-
const data = (await resp.json());
|
|
455
|
-
if (!data.access_token) {
|
|
456
|
-
throw new Error("Google token refresh: no access_token in response");
|
|
457
|
-
}
|
|
458
|
-
const refreshedAccount = {
|
|
459
|
-
...account,
|
|
460
|
-
token: data.access_token,
|
|
461
|
-
};
|
|
462
|
-
if (typeof data.expires_in === "number" && data.expires_in > 0) {
|
|
463
|
-
refreshedAccount.expiresAt = new Date(Date.now() + data.expires_in * 1000).toISOString();
|
|
464
|
-
}
|
|
465
|
-
else {
|
|
466
|
-
delete refreshedAccount.expiresAt;
|
|
467
|
-
}
|
|
468
|
-
return refreshedAccount;
|
|
469
|
-
}
|
|
470
|
-
if (!account.refreshToken)
|
|
471
|
-
return account;
|
|
472
|
-
if (!isAccountTokenExpired(account))
|
|
473
|
-
return account;
|
|
474
|
-
// Never send a non-OpenAI provider's refresh token across provider
|
|
475
|
-
// boundaries. In particular, Claude OAuth accounts are not refreshable here.
|
|
476
|
-
if (account.provider !== "openai")
|
|
477
|
-
return account;
|
|
478
|
-
const resp = await fetch("https://auth.openai.com/oauth/token", {
|
|
479
|
-
method: "POST",
|
|
480
|
-
headers: { "content-type": "application/x-www-form-urlencoded" },
|
|
481
|
-
body: new URLSearchParams({
|
|
482
|
-
grant_type: "refresh_token",
|
|
483
|
-
refresh_token: account.refreshToken,
|
|
484
|
-
client_id: "app_EMoamEEZ73f0CkXaXp7hrann",
|
|
485
|
-
}),
|
|
486
|
-
});
|
|
487
|
-
if (!resp.ok) {
|
|
488
|
-
throw new Error(`Token refresh failed (${resp.status}): ${await resp.text()}`);
|
|
489
|
-
}
|
|
490
|
-
const data = (await resp.json());
|
|
491
|
-
if (!data.access_token)
|
|
492
|
-
throw new Error("Token refresh: no access_token in response");
|
|
493
|
-
const expiresAt = jwtExpiry(data.access_token);
|
|
494
|
-
return {
|
|
495
|
-
...account,
|
|
496
|
-
token: data.access_token,
|
|
497
|
-
...(expiresAt ? { expiresAt: expiresAt.toISOString() } : {}),
|
|
498
|
-
};
|
|
193
|
+
export function updateLlmMeshRoutingConfig(routing, dir) {
|
|
194
|
+
const config = readLlmMeshConfig(dir) ?? {};
|
|
195
|
+
const next = routing
|
|
196
|
+
? { ...config, routing: validateLlmMeshRoutingConfig(routing) }
|
|
197
|
+
: (() => {
|
|
198
|
+
const copy = { ...config };
|
|
199
|
+
delete copy.routing;
|
|
200
|
+
return copy;
|
|
201
|
+
})();
|
|
202
|
+
writeLlmMeshConfig(next, dir);
|
|
203
|
+
return next;
|
|
499
204
|
}
|
|
500
205
|
// ---------------------------------------------------------------------------
|
|
501
206
|
// Gateway process management
|
|
@@ -505,11 +210,6 @@ export function gatewayScriptPath() {
|
|
|
505
210
|
const thisFile = fileURLToPath(import.meta.url);
|
|
506
211
|
return join(dirname(thisFile), "llm-gateway-runtime", "index.js");
|
|
507
212
|
}
|
|
508
|
-
export function localGatewaySessionProvider(accounts) {
|
|
509
|
-
return accounts.some((account) => account.provider === "cloud-code")
|
|
510
|
-
? "cloud-code"
|
|
511
|
-
: undefined;
|
|
512
|
-
}
|
|
513
213
|
/**
|
|
514
214
|
* A gateway session is an account-affinity boundary, so a local CLI session
|
|
515
215
|
* must never inherit a process-wide static identifier. Callers provide the
|
|
@@ -533,15 +233,13 @@ export async function startGateway(config, opts = {}) {
|
|
|
533
233
|
`Run \`npm run build -w @sentropic/remote-cli\` first.`);
|
|
534
234
|
}
|
|
535
235
|
mkdirSync(sentropicDir(), { recursive: true });
|
|
536
|
-
const sessionProvider = localGatewaySessionProvider(config.meshAccounts ?? []);
|
|
537
|
-
if (!sessionProvider) {
|
|
538
|
-
throw new Error("llm-mesh has no Cloud Code enrollment. Run `h2a llm-mesh enroll cloud-code` first.");
|
|
539
|
-
}
|
|
540
236
|
const gatewayEnv = {
|
|
541
237
|
...process.env,
|
|
542
|
-
LLM_GATEWAY_TOKEN_SEED: readOrCreateLlmMeshSeed(),
|
|
543
|
-
LLM_GATEWAY_STICKY_FILE: llmMeshStickyPath(),
|
|
544
238
|
PORT: String(port),
|
|
239
|
+
H2A_LLM_MESH_OWNER_SCOPE: llmMeshOwnerScopeRef(),
|
|
240
|
+
...(config.routing
|
|
241
|
+
? { H2A_LLM_MESH_ROUTING_JSON: JSON.stringify(config.routing) }
|
|
242
|
+
: {}),
|
|
545
243
|
};
|
|
546
244
|
// Start detached, piping stdout+stderr to logFile
|
|
547
245
|
const { openSync } = await import("node:fs");
|
|
@@ -564,9 +262,8 @@ export async function startGateway(config, opts = {}) {
|
|
|
564
262
|
headers: { "content-type": "application/json" },
|
|
565
263
|
body: JSON.stringify({
|
|
566
264
|
sessionId: gatewayClientSessionId(opts.clientSessionId),
|
|
265
|
+
clientSessionId: opts.clientSessionId,
|
|
567
266
|
workspaceId: process.cwd(),
|
|
568
|
-
provider: sessionProvider,
|
|
569
|
-
requiredTransport: "cloud-code",
|
|
570
267
|
}),
|
|
571
268
|
});
|
|
572
269
|
if (!sessionResp.ok) {
|
|
@@ -576,12 +273,11 @@ export async function startGateway(config, opts = {}) {
|
|
|
576
273
|
const gatewayToken = session.gatewayToken;
|
|
577
274
|
if (!gatewayToken)
|
|
578
275
|
throw new Error("No gatewayToken in session response");
|
|
579
|
-
// Persist
|
|
276
|
+
// Persist only process metadata. The opaque bearer remains process-local and
|
|
277
|
+
// is reacquired for each caller affinity.
|
|
580
278
|
writeSecret(llmMeshTokenPath(), {
|
|
581
|
-
gatewayToken,
|
|
582
279
|
baseUrl,
|
|
583
280
|
pid,
|
|
584
|
-
provider: sessionProvider,
|
|
585
281
|
});
|
|
586
282
|
return { pid, port, gatewayToken };
|
|
587
283
|
}
|
|
@@ -621,57 +317,20 @@ function configuredGatewayBaseUrl(dir) {
|
|
|
621
317
|
return null;
|
|
622
318
|
return `http://localhost:${config.port ?? 3002}`;
|
|
623
319
|
}
|
|
624
|
-
/**
|
|
625
|
-
* Returns {ANTHROPIC_BASE_URL, ANTHROPIC_AUTH_TOKEN} for the running local
|
|
626
|
-
* gateway, or null if not running or token file absent.
|
|
627
|
-
*
|
|
628
|
-
* Used by `remote run` to auto-inject the gateway env into every tmux session
|
|
629
|
-
* (interactive + headless) so all Claude sessions + their subagents use the gateway.
|
|
630
|
-
*/
|
|
631
|
-
export function readLlmMeshSessionEnv(dir) {
|
|
632
|
-
try {
|
|
633
|
-
const raw = readFileSync(llmMeshTokenPath(dir), "utf8");
|
|
634
|
-
const { gatewayToken, baseUrl, pid } = JSON.parse(raw);
|
|
635
|
-
if (!gatewayToken || !baseUrl)
|
|
636
|
-
return null;
|
|
637
|
-
// Verify the gateway process is still alive
|
|
638
|
-
try {
|
|
639
|
-
process.kill(pid, 0);
|
|
640
|
-
}
|
|
641
|
-
catch {
|
|
642
|
-
return null;
|
|
643
|
-
}
|
|
644
|
-
return {
|
|
645
|
-
ANTHROPIC_BASE_URL: baseUrl,
|
|
646
|
-
ANTHROPIC_AUTH_TOKEN: gatewayToken,
|
|
647
|
-
// Claude Code subagents may re-read API-key style env instead of the
|
|
648
|
-
// auth-token env used by the parent process. Keep both pointed at the
|
|
649
|
-
// same opaque gateway token; do not write Claude config.
|
|
650
|
-
ANTHROPIC_API_KEY: gatewayToken,
|
|
651
|
-
};
|
|
652
|
-
}
|
|
653
|
-
catch {
|
|
654
|
-
return null;
|
|
655
|
-
}
|
|
656
|
-
}
|
|
657
320
|
/**
|
|
658
321
|
* Acquire a fresh in-memory gateway token from the running local gateway.
|
|
659
|
-
* Gateway tokens are intentionally not durable
|
|
660
|
-
*
|
|
322
|
+
* Gateway tokens are intentionally not durable. The runtime metadata file
|
|
323
|
+
* contains only the base URL and PID; every caller reacquires its own bearer.
|
|
661
324
|
*/
|
|
662
325
|
export async function acquireLlmMeshSessionEnv(dir, clientSessionId) {
|
|
663
326
|
try {
|
|
664
327
|
let baseUrl;
|
|
665
328
|
let pid;
|
|
666
|
-
let provider;
|
|
667
329
|
try {
|
|
668
330
|
const raw = readFileSync(llmMeshTokenPath(dir), "utf8");
|
|
669
331
|
const tokenFile = JSON.parse(raw);
|
|
670
332
|
baseUrl = tokenFile.baseUrl;
|
|
671
333
|
pid = tokenFile.pid;
|
|
672
|
-
provider = tokenFile.provider === "cloud-code"
|
|
673
|
-
? tokenFile.provider
|
|
674
|
-
: undefined;
|
|
675
334
|
}
|
|
676
335
|
catch {
|
|
677
336
|
baseUrl = configuredGatewayBaseUrl(dir) ?? undefined;
|
|
@@ -679,14 +338,6 @@ export async function acquireLlmMeshSessionEnv(dir, clientSessionId) {
|
|
|
679
338
|
}
|
|
680
339
|
if (!baseUrl || !pid)
|
|
681
340
|
return null;
|
|
682
|
-
if (!provider) {
|
|
683
|
-
const config = readLlmMeshConfig(dir);
|
|
684
|
-
provider = config
|
|
685
|
-
? localGatewaySessionProvider(config.meshAccounts ?? [])
|
|
686
|
-
: undefined;
|
|
687
|
-
}
|
|
688
|
-
if (!provider)
|
|
689
|
-
return null;
|
|
690
341
|
try {
|
|
691
342
|
process.kill(pid, 0);
|
|
692
343
|
}
|
|
@@ -699,9 +350,8 @@ export async function acquireLlmMeshSessionEnv(dir, clientSessionId) {
|
|
|
699
350
|
headers: { "content-type": "application/json" },
|
|
700
351
|
body: JSON.stringify({
|
|
701
352
|
sessionId: gatewayClientSessionId(clientSessionId),
|
|
353
|
+
clientSessionId,
|
|
702
354
|
workspaceId,
|
|
703
|
-
provider,
|
|
704
|
-
requiredTransport: "cloud-code",
|
|
705
355
|
}),
|
|
706
356
|
});
|
|
707
357
|
if (!sessionResp.ok)
|
|
@@ -709,16 +359,9 @@ export async function acquireLlmMeshSessionEnv(dir, clientSessionId) {
|
|
|
709
359
|
const session = (await sessionResp.json());
|
|
710
360
|
if (!session.gatewayToken)
|
|
711
361
|
return null;
|
|
712
|
-
writeSecret(llmMeshTokenPath(dir), {
|
|
713
|
-
gatewayToken: session.gatewayToken,
|
|
714
|
-
baseUrl,
|
|
715
|
-
pid,
|
|
716
|
-
provider,
|
|
717
|
-
});
|
|
718
362
|
return {
|
|
719
363
|
ANTHROPIC_BASE_URL: baseUrl,
|
|
720
364
|
ANTHROPIC_AUTH_TOKEN: session.gatewayToken,
|
|
721
|
-
ANTHROPIC_API_KEY: session.gatewayToken,
|
|
722
365
|
};
|
|
723
366
|
}
|
|
724
367
|
catch {
|
package/dist/llm-mesh.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-mesh.js","sourceRoot":"","sources":["../src/llm-mesh.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"llm-mesh.js","sourceRoot":"","sources":["../src/llm-mesh.ts"],"names":[],"mappings":"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"}
|