@sentropic/h2a-runtime 0.85.20 → 0.85.21

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1164,7 +1164,7 @@ function shouldUseClaudeBare(profile) {
1164
1164
  return ((profile === "claude" || profile === "claude-code") &&
1165
1165
  Boolean(process.env.ANTHROPIC_BASE_URL && process.env.ANTHROPIC_AUTH_TOKEN));
1166
1166
  }
1167
- async function injectLlmMeshGatewayEnv(mode = "auto", allowDirectFallback = true) {
1167
+ async function injectLlmMeshGatewayEnv(mode = "auto", allowDirectFallback = true, clientSessionId) {
1168
1168
  if (mode === "direct") {
1169
1169
  delete process.env.ANTHROPIC_BASE_URL;
1170
1170
  delete process.env.ANTHROPIC_AUTH_TOKEN;
@@ -1177,12 +1177,17 @@ async function injectLlmMeshGatewayEnv(mode = "auto", allowDirectFallback = true
1177
1177
  delete process.env.ANTHROPIC_API_KEY;
1178
1178
  return undefined;
1179
1179
  }
1180
- let meshEnv = readLlmMeshSessionEnv() ?? (await acquireLlmMeshSessionEnv());
1180
+ // A new local CLI session needs its own gateway token so account affinity is
1181
+ // keyed by that session's stable identity. The cached token remains useful
1182
+ // for callers that do not have a session identity (for example restore).
1183
+ let meshEnv = clientSessionId
1184
+ ? await acquireLlmMeshSessionEnv(undefined, clientSessionId)
1185
+ : readLlmMeshSessionEnv() ?? (await acquireLlmMeshSessionEnv());
1181
1186
  if (!meshEnv) {
1182
1187
  const config = readLlmMeshConfig();
1183
1188
  if (config?.accounts.length) {
1184
1189
  try {
1185
- const result = await startGateway(config);
1190
+ const result = await startGateway(config, { clientSessionId });
1186
1191
  meshEnv = {
1187
1192
  ANTHROPIC_BASE_URL: `http://localhost:${result.port}`,
1188
1193
  ANTHROPIC_AUTH_TOKEN: result.gatewayToken,
@@ -3101,7 +3106,7 @@ export async function main(argv) {
3101
3106
  process.exitCode = 1;
3102
3107
  return;
3103
3108
  }
3104
- const gateway = await injectLlmMeshGatewayEnv(gatewayMode);
3109
+ const gateway = await injectLlmMeshGatewayEnv(gatewayMode, true, entry.convId ?? localSessionName(resumeSlug));
3105
3110
  const useBare = shouldUseClaudeBare(profile);
3106
3111
  const command = localCliCommand(profile);
3107
3112
  const args = localResumeArgs(profile, entry.convId, {
@@ -3401,55 +3406,8 @@ export async function main(argv) {
3401
3406
  return;
3402
3407
  }
3403
3408
  const launchGatewayMode = structuredLaunch && profile === "codex" ? "direct" : gatewayMode;
3404
- let activeGateway;
3405
- try {
3406
- if (structuredLaunch) {
3407
- activeGateway = await prepareStructuredGateway(launchGatewayMode);
3408
- }
3409
- else {
3410
- activeGateway = await injectLlmMeshGatewayEnv(gatewayMode);
3411
- }
3412
- }
3413
- catch (error) {
3414
- process.stderr.write(`[h2a] ${error.message}\n`);
3415
- process.exitCode = 1;
3416
- return;
3417
- }
3418
- const useBare = shouldUseClaudeBare(profile);
3419
3409
  const command = localCliCommand(profile);
3420
- let args;
3421
- try {
3422
- args =
3423
- structuredLaunch && isAgentLaunchProfile(profile)
3424
- ? buildAgentLaunchArgs({
3425
- profile,
3426
- ...(initialPrompt !== undefined
3427
- ? { prompt: initialPrompt }
3428
- : {}),
3429
- ...(opts.model !== undefined ? { model: opts.model } : {}),
3430
- ...(opts.effort !== undefined
3431
- ? { effort: opts.effort }
3432
- : {}),
3433
- ...(opts.resume !== undefined
3434
- ? { resumeId: opts.resume }
3435
- : {}),
3436
- ...(opts.headless ? { headless: true } : {}),
3437
- ...(useBare ? { bare: true } : {}),
3438
- })
3439
- : opts.resume
3440
- ? localResumeArgs(profile, opts.resume, { bare: useBare })
3441
- : localStartArgs(profile, { bare: useBare });
3442
- }
3443
- catch (error) {
3444
- process.stderr.write(`[h2a] ${error.message}\n`);
3445
- process.exitCode = 2;
3446
- return;
3447
- }
3448
- if (opts.resume && args.length === 0) {
3449
- process.stderr.write(`[h2a] profile "${profile}" has no verified local resume argv; start it without -r/--resume\n`);
3450
- process.exitCode = 1;
3451
- return;
3452
- }
3410
+ let activeGateway;
3453
3411
  const h2a = getH2aConfig();
3454
3412
  const h2aSidecar = opts.h2a ?? h2a.enabled;
3455
3413
  if (opts.headless && h2aSidecar) {
@@ -3464,6 +3422,54 @@ export async function main(argv) {
3464
3422
  }
3465
3423
  const started = [];
3466
3424
  for (const label of labels) {
3425
+ const clientSessionId = opts.resume ?? localSessionName(slugify(label ?? cwd));
3426
+ try {
3427
+ if (structuredLaunch) {
3428
+ activeGateway = await prepareStructuredGateway(launchGatewayMode, (selectedMode) => injectLlmMeshGatewayEnv(selectedMode, selectedMode !== "gateway", clientSessionId));
3429
+ }
3430
+ else {
3431
+ activeGateway = await injectLlmMeshGatewayEnv(gatewayMode, true, clientSessionId);
3432
+ }
3433
+ }
3434
+ catch (error) {
3435
+ process.stderr.write(`[h2a] ${error.message}\n`);
3436
+ process.exitCode = 1;
3437
+ return;
3438
+ }
3439
+ const useBare = shouldUseClaudeBare(profile);
3440
+ let args;
3441
+ try {
3442
+ args =
3443
+ structuredLaunch && isAgentLaunchProfile(profile)
3444
+ ? buildAgentLaunchArgs({
3445
+ profile,
3446
+ ...(initialPrompt !== undefined
3447
+ ? { prompt: initialPrompt }
3448
+ : {}),
3449
+ ...(opts.model !== undefined ? { model: opts.model } : {}),
3450
+ ...(opts.effort !== undefined
3451
+ ? { effort: opts.effort }
3452
+ : {}),
3453
+ ...(opts.resume !== undefined
3454
+ ? { resumeId: opts.resume }
3455
+ : {}),
3456
+ ...(opts.headless ? { headless: true } : {}),
3457
+ ...(useBare ? { bare: true } : {}),
3458
+ })
3459
+ : opts.resume
3460
+ ? localResumeArgs(profile, opts.resume, { bare: useBare })
3461
+ : localStartArgs(profile, { bare: useBare });
3462
+ }
3463
+ catch (error) {
3464
+ process.stderr.write(`[h2a] ${error.message}\n`);
3465
+ process.exitCode = 2;
3466
+ return;
3467
+ }
3468
+ if (opts.resume && args.length === 0) {
3469
+ process.stderr.write(`[h2a] profile "${profile}" has no verified local resume argv; start it without -r/--resume\n`);
3470
+ process.exitCode = 1;
3471
+ return;
3472
+ }
3467
3473
  let name;
3468
3474
  let slug;
3469
3475
  let outputLog;