@sentropic/h2a-runtime 0.98.0 → 0.98.3
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} +3 -1
- package/dist/gateway-host/sessions.d.ts.map +1 -0
- package/dist/{llm-gateway-runtime/sticky.js → gateway-host/sessions.js} +6 -1
- package/dist/gateway-host/sessions.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +76 -28
- package/dist/index.js.map +1 -1
- package/dist/launch-guard.d.ts +3 -6
- package/dist/launch-guard.d.ts.map +1 -1
- package/dist/launch-guard.js +6 -4
- package/dist/launch-guard.js.map +1 -1
- package/dist/launch-layout.d.ts +2 -0
- package/dist/launch-layout.d.ts.map +1 -1
- package/dist/launch-layout.js +15 -2
- package/dist/launch-layout.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 +79 -14
- package/dist/native-host.d.ts.map +1 -1
- package/dist/native-host.js +218 -64
- package/dist/native-host.js.map +1 -1
- package/dist/native-restart.d.ts +1 -0
- package/dist/native-restart.d.ts.map +1 -1
- package/dist/native-restart.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 +32 -0
- package/dist/native-terminal/fleet.d.ts.map +1 -0
- package/dist/native-terminal/fleet.js +40 -0
- package/dist/native-terminal/fleet.js.map +1 -0
- 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 +279 -93
- 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/socket-path.d.ts +3 -0
- package/dist/native-terminal/socket-path.d.ts.map +1 -1
- package/dist/native-terminal/socket-path.js +21 -1
- package/dist/native-terminal/socket-path.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 +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +4 -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/restore.js +8 -2
- package/dist/restore.js.map +1 -1
- 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 +20 -2
- package/dist/tmux.d.ts.map +1 -1
- package/dist/tmux.js +14 -6
- 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.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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// Retained h2a adapter — owner decision 2026-10-03 (sessions h2a kept until convergence with sentropic workspace/session notions)
|
|
1
2
|
import { randomBytes } from "node:crypto";
|
|
2
3
|
const sessionsByToken = new Map();
|
|
3
4
|
const tokensBySession = new Map();
|
|
@@ -44,8 +45,12 @@ export function lookupSessionById(sessionId) {
|
|
|
44
45
|
export function sessionCount() {
|
|
45
46
|
return sessionsByToken.size;
|
|
46
47
|
}
|
|
48
|
+
/** Public registry view for sessions that have not acquired a route yet. */
|
|
49
|
+
export function listPublicSessions() {
|
|
50
|
+
return [...sessionsByToken.values()].map(({ gatewayToken: _bearer, ...session }) => session);
|
|
51
|
+
}
|
|
47
52
|
export function resetSessions() {
|
|
48
53
|
sessionsByToken.clear();
|
|
49
54
|
tokensBySession.clear();
|
|
50
55
|
}
|
|
51
|
-
//# sourceMappingURL=
|
|
56
|
+
//# sourceMappingURL=sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/gateway-host/sessions.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAuEA,OAAO,EAsDL,KAAK,YAAY,EAClB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -20,7 +20,7 @@ import { attachLocalSession, attachPodTmux, capturePane, capturePaneVisible, cle
|
|
|
20
20
|
import { deliverInitialPrompt, sleepSync, } from "./prompt-delivery.js";
|
|
21
21
|
import { startLaunchGuard } from "./launch-guard.js";
|
|
22
22
|
import { buildLaunchContext } from "./launch-context.js";
|
|
23
|
-
import { attachNativeSession, driveNativeInstruction, killNativeSessionIfIncarnation, killNativeSessionTree, nativeHostAvailable, nativePromptDeliveryDeps, nativeSessionLiveness, nativeSessionPid, nativeSessionState, nativeTreeCpuMs, nativeWorkerPid, resolveSessionHostKind, startNativeH2aSidecar, startNativeHeadlessSession, startNativeSession, } from "./native-host.js";
|
|
23
|
+
import { attachNativeSession, driveNativeInstruction, killNativeSessionIfIncarnation, killNativeSessionTree, nativeHostAvailable, nativePromptDeliveryDeps, nativeSessionLiveness, nativeSessionPid, nativeSessionState, nativeTreeCpuMs, nativeWorkerPid, preflightNativeLaunch, resolveSessionHostKind, startNativeH2aSidecar, startNativeHeadlessSession, startNativeSession, NativeHostCapabilityMismatchError, NativeLaunchAdmissionError, } from "./native-host.js";
|
|
24
24
|
import { executeNativeRestart, NativeRestartError, } from "./native-restart.js";
|
|
25
25
|
import { migrateTmuxNames } from "./tmux-name-migration.js";
|
|
26
26
|
import { projectStatusForH2a } from "./status-projection.js";
|
|
@@ -72,9 +72,11 @@ const H2A_RUN_API_VERSION = "h2a.run/v1";
|
|
|
72
72
|
const STRUCTURED_LAUNCH_PHASE_PREFIX = "[h2a] h2a.run.phase/v1 ";
|
|
73
73
|
const H2A_RUNTIME_VERSION = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8")).version;
|
|
74
74
|
import { CLI_PROFILES, gatewayModeForProfile, profileUsesLlmMeshGateway, } from "./protocol-local.js";
|
|
75
|
-
import { enrollViaFacade, formatLlmMeshAccountError, formatLlmMeshAccountList, listAccountsViaFacade,
|
|
76
|
-
import {
|
|
77
|
-
|
|
75
|
+
import { enrollViaFacade, formatLlmMeshAccountError, formatLlmMeshAccountList, listAccountsViaFacade, removeAccountViaFacade, } from "./llm-mesh-accounts.js";
|
|
76
|
+
import { readLlmMeshConfig, updateLlmMeshRoutingConfig, } from "./gateway-host/config-file.js";
|
|
77
|
+
import { startGateway, stopGateway, readGatewayPid, llmMeshLogPath, replaceAnthropicGatewayEnvironment, acquireLlmMeshSessionEnv, } from "./gateway-host/daemon.js";
|
|
78
|
+
import { describeLlmMeshRoutingConfig, parseLlmMeshRoutingConfig, preferredRoutingConfig, strategyRoutingConfig, } from "./routing-preferences.js";
|
|
79
|
+
const KNOWN_PROFILE_HELP = `${CLI_PROFILES.join(", ")} (aliases: claude-code, antigravity, gemini-cli, mistralcli, muse-code, mistral-vibe)`;
|
|
78
80
|
export const packageName = "@sentropic/h2a-runtime";
|
|
79
81
|
export const H2A_RUNTIME_CLI_API_VERSION = 1;
|
|
80
82
|
export { run } from "./run.js";
|
|
@@ -1320,6 +1322,11 @@ function localResumeArgs(profile, convId, opts = {}) {
|
|
|
1320
1322
|
case "agy":
|
|
1321
1323
|
case "antigravity":
|
|
1322
1324
|
return ["--resume", ...(convId ? [convId] : [])];
|
|
1325
|
+
case "vibe":
|
|
1326
|
+
case "mistral-vibe":
|
|
1327
|
+
// vibe: explicit id → --resume <id>; bare/most-recent → -c (never a
|
|
1328
|
+
// bare --resume: that would open the interactive picker).
|
|
1329
|
+
return convId ? ["--resume", convId] : ["-c"];
|
|
1323
1330
|
default:
|
|
1324
1331
|
return [];
|
|
1325
1332
|
}
|
|
@@ -1918,6 +1925,7 @@ export async function main(argv) {
|
|
|
1918
1925
|
["gemini", "gemini-cli"],
|
|
1919
1926
|
["mistral", "mistralcli"],
|
|
1920
1927
|
["muse", "muse-code"],
|
|
1928
|
+
["vibe", "mistral-vibe"],
|
|
1921
1929
|
["opencode", undefined],
|
|
1922
1930
|
["shell", undefined],
|
|
1923
1931
|
]) {
|
|
@@ -4143,7 +4151,22 @@ export async function main(argv) {
|
|
|
4143
4151
|
process.stderr.write(`[h2a] conversation ${opts.resume} is already being resumed; duplicate launch request skipped.\n`);
|
|
4144
4152
|
return;
|
|
4145
4153
|
}
|
|
4154
|
+
// Covers the entire attempt, including an already-created agent when
|
|
4155
|
+
// sidecar selection fails. Component-level refusals cannot clear it.
|
|
4156
|
+
let creationAttempted = false;
|
|
4157
|
+
const onCreateAttempt = () => {
|
|
4158
|
+
creationAttempted = true;
|
|
4159
|
+
if (opts.json && opts.name) {
|
|
4160
|
+
process.stderr.write(`${STRUCTURED_LAUNCH_PHASE_PREFIX}${JSON.stringify({
|
|
4161
|
+
launchId: opts.name, phase: "creation-attempted",
|
|
4162
|
+
})}\n`);
|
|
4163
|
+
}
|
|
4164
|
+
};
|
|
4146
4165
|
try {
|
|
4166
|
+
if (structuredLaunch && sessionHost === "native") {
|
|
4167
|
+
for (const label of labels)
|
|
4168
|
+
preflightNativeLaunch(localSessionName(slugify(label ?? cwd)));
|
|
4169
|
+
}
|
|
4147
4170
|
const reservedTmuxSlugs = tmuxAvailable()
|
|
4148
4171
|
? existingLocalSessionSlugs(labels, cwd)
|
|
4149
4172
|
: [];
|
|
@@ -4183,16 +4206,22 @@ export async function main(argv) {
|
|
|
4183
4206
|
// to launch on an unprovable host state.
|
|
4184
4207
|
const nativeExistence = labels
|
|
4185
4208
|
.map((label) => slugify(label ?? cwd))
|
|
4186
|
-
.map((slug) =>
|
|
4187
|
-
slug
|
|
4188
|
-
probe
|
|
4189
|
-
|
|
4209
|
+
.map((slug) => {
|
|
4210
|
+
const detail = nativeSessionState(localSessionName(slug));
|
|
4211
|
+
const probe = detail.state === "unknown" ? "unknown"
|
|
4212
|
+
: detail.state === "found" && detail.session.status === "running" ? "live" : "dead";
|
|
4213
|
+
return { slug, probe, reason: detail.state === "unknown" ? detail.reason : undefined };
|
|
4214
|
+
});
|
|
4190
4215
|
const unknownNativeSlugs = nativeExistence
|
|
4191
|
-
.filter((probed) => probed.probe === "unknown")
|
|
4192
|
-
.map((probed) => probed.slug);
|
|
4216
|
+
.filter((probed) => probed.probe === "unknown");
|
|
4193
4217
|
if (unknownNativeSlugs.length > 0) {
|
|
4194
|
-
for (const slug of unknownNativeSlugs) {
|
|
4195
|
-
process.stderr.write(`[h2a] cannot start ${slug}: native host state is unknown (the
|
|
4218
|
+
for (const { slug, reason } of unknownNativeSlugs) {
|
|
4219
|
+
process.stderr.write(`[h2a] cannot start ${slug}: native host state is unknown: ${reason}. Refusing to risk a second writer (fail closed). Inspect the named endpoint permissions and owning process identity, restore probe access, then retry; do not remove sockets or locks while ownership is unproven.\n`);
|
|
4220
|
+
}
|
|
4221
|
+
if (opts.json && opts.name) {
|
|
4222
|
+
const failure = new NativeLaunchAdmissionError({ code: "native-inventory-unknown",
|
|
4223
|
+
hosts: unknownNativeSlugs.map(({ slug, reason }) => ({ id: localSessionName(slug), reason })) });
|
|
4224
|
+
process.stdout.write(`${JSON.stringify(failure.toRunFailure(opts.name))}\n`);
|
|
4196
4225
|
}
|
|
4197
4226
|
process.exitCode = 1;
|
|
4198
4227
|
return;
|
|
@@ -4337,12 +4366,6 @@ export async function main(argv) {
|
|
|
4337
4366
|
let promptDelivery;
|
|
4338
4367
|
let launchGuard;
|
|
4339
4368
|
let launchOwnership;
|
|
4340
|
-
if (opts.json && opts.name) {
|
|
4341
|
-
process.stderr.write(`${STRUCTURED_LAUNCH_PHASE_PREFIX}${JSON.stringify({
|
|
4342
|
-
launchId: opts.name,
|
|
4343
|
-
phase: "creation-attempted",
|
|
4344
|
-
})}\n`);
|
|
4345
|
-
}
|
|
4346
4369
|
if (opts.headless) {
|
|
4347
4370
|
const runDir = join(cwd, ".h2a", "runs", label);
|
|
4348
4371
|
mkdirSync(runDir, { recursive: true });
|
|
@@ -4358,14 +4381,18 @@ export async function main(argv) {
|
|
|
4358
4381
|
})
|
|
4359
4382
|
: initialPrompt;
|
|
4360
4383
|
if (sessionHost === "native") {
|
|
4361
|
-
({ name, slug, promptFile } = startNativeHeadlessSession(profile, command, cwd, args, resultJson, outputLog, label, headlessPromptInput, structuredLaunch, sessionClass)
|
|
4384
|
+
({ name, slug, promptFile } = startNativeHeadlessSession(profile, command, cwd, args, resultJson, outputLog, label, headlessPromptInput, structuredLaunch, sessionClass, onCreateAttempt, structuredLaunch ? (owned) => {
|
|
4385
|
+
launchOwnership = { host: "native", sessions: [owned] };
|
|
4386
|
+
launchGuard = startLaunchGuard(runDir, launchOwnership);
|
|
4387
|
+
} : undefined));
|
|
4362
4388
|
}
|
|
4363
4389
|
else {
|
|
4364
|
-
({ name, slug, agentPane, promptFile } = startHeadlessSession(profile, command, cwd, args, resultJson, outputLog, label, getTmuxProfileConfig().profile, headlessPromptInput, structuredLaunch, sessionClass));
|
|
4390
|
+
({ name, slug, agentPane, promptFile } = startHeadlessSession(profile, command, cwd, args, resultJson, outputLog, label, getTmuxProfileConfig().profile, headlessPromptInput, structuredLaunch, sessionClass, onCreateAttempt));
|
|
4365
4391
|
}
|
|
4366
4392
|
}
|
|
4367
4393
|
else if (sessionHost === "native") {
|
|
4368
4394
|
({ name, slug } = startNativeSession(profile, command, cwd, args, label, {
|
|
4395
|
+
onCreateAttempt,
|
|
4369
4396
|
...(opts.resume !== undefined ? { resumeId: opts.resume } : {}),
|
|
4370
4397
|
...(initialPrompt !== undefined
|
|
4371
4398
|
? { terminateOnAgentExit: true }
|
|
@@ -4380,6 +4407,7 @@ export async function main(argv) {
|
|
|
4380
4407
|
}
|
|
4381
4408
|
else {
|
|
4382
4409
|
({ name, slug, agentPane } = startLocalSession(profile, command, cwd, args, label, getTmuxProfileConfig().profile, {
|
|
4410
|
+
onCreateAttempt,
|
|
4383
4411
|
...(opts.resume !== undefined
|
|
4384
4412
|
? { resumeId: opts.resume }
|
|
4385
4413
|
: {}),
|
|
@@ -4417,6 +4445,7 @@ export async function main(argv) {
|
|
|
4417
4445
|
let h2aSidecarStarted = false;
|
|
4418
4446
|
if (h2aSidecar && sessionHost === "native") {
|
|
4419
4447
|
h2aSidecarStarted = startNativeH2aSidecar(name, cwd, h2a.command, {
|
|
4448
|
+
onCreateAttempt,
|
|
4420
4449
|
...(structuredLaunch ? { verified: true } : {}),
|
|
4421
4450
|
...(launchGuard && launchOwnership?.host === "native" ? { beforeCreate: (owned) => {
|
|
4422
4451
|
if (launchOwnership?.host === "native") {
|
|
@@ -4571,9 +4600,12 @@ export async function main(argv) {
|
|
|
4571
4600
|
gatewayMode: launchGatewayMode,
|
|
4572
4601
|
bare: useBare,
|
|
4573
4602
|
});
|
|
4603
|
+
const nativeOwnerSocket = launchOwnership?.host === "native"
|
|
4604
|
+
? launchOwnership.sessions.find(owned => owned.name === name)?.socketPath : undefined;
|
|
4574
4605
|
started.push({
|
|
4575
4606
|
name,
|
|
4576
4607
|
slug,
|
|
4608
|
+
...(nativeOwnerSocket ? { socketPath: nativeOwnerSocket } : {}),
|
|
4577
4609
|
...(agentPane !== undefined ? { pane: agentPane } : {}),
|
|
4578
4610
|
h2aSidecar: h2aSidecarStarted,
|
|
4579
4611
|
...(pid !== undefined ? { pid } : {}),
|
|
@@ -4601,6 +4633,7 @@ export async function main(argv) {
|
|
|
4601
4633
|
ok: true,
|
|
4602
4634
|
state: "started",
|
|
4603
4635
|
session: {
|
|
4636
|
+
...(only.socketPath ? { socketPath: only.socketPath } : {}),
|
|
4604
4637
|
id: only.slug,
|
|
4605
4638
|
tmuxSession: only.name,
|
|
4606
4639
|
host: sessionHost === "native" ? "native" : "tmux",
|
|
@@ -4657,6 +4690,14 @@ export async function main(argv) {
|
|
|
4657
4690
|
: attachLocalSession(only.name);
|
|
4658
4691
|
return;
|
|
4659
4692
|
}
|
|
4693
|
+
catch (error) {
|
|
4694
|
+
if (!(error instanceof NativeHostCapabilityMismatchError || error instanceof NativeLaunchAdmissionError) || creationAttempted)
|
|
4695
|
+
throw error;
|
|
4696
|
+
process.stderr.write(`[h2a] ${error.message}\n`);
|
|
4697
|
+
if (opts.json && opts.name)
|
|
4698
|
+
process.stdout.write(`${JSON.stringify(error.toRunFailure(opts.name))}\n`);
|
|
4699
|
+
process.exitCode = 1;
|
|
4700
|
+
}
|
|
4660
4701
|
finally {
|
|
4661
4702
|
resumeClaim?.release();
|
|
4662
4703
|
}
|
|
@@ -6106,12 +6147,13 @@ export async function main(argv) {
|
|
|
6106
6147
|
state: "live",
|
|
6107
6148
|
generation: probe.session.generation,
|
|
6108
6149
|
incarnation: probe.session.incarnation,
|
|
6150
|
+
...(probe.session.socketPath ? { socketPath: probe.session.socketPath } : {}),
|
|
6109
6151
|
controlled: probe.session.controlled ?? true,
|
|
6110
6152
|
};
|
|
6111
6153
|
},
|
|
6112
6154
|
prepare: (candidate, _snapshot, mode) => prepareNativeRestart(candidate, mode),
|
|
6113
6155
|
restart: (candidate, snapshot, mode, prepared) => {
|
|
6114
|
-
if (!killNativeSessionIfIncarnation(candidate.name, snapshot.generation, snapshot.incarnation)) {
|
|
6156
|
+
if (!killNativeSessionIfIncarnation(candidate.name, snapshot.generation, snapshot.incarnation, snapshot.socketPath)) {
|
|
6115
6157
|
throw new Error("fenced native stop failed");
|
|
6116
6158
|
}
|
|
6117
6159
|
const restore = replaceAnthropicGatewayEnvironment(process.env, prepared.gatewayEnvironment);
|
|
@@ -7470,17 +7512,23 @@ export async function main(argv) {
|
|
|
7470
7512
|
llmMeshAccountCommand
|
|
7471
7513
|
.command("enroll <provider>")
|
|
7472
7514
|
.description("Enroll through the sentropic-owned OAuth state machine " +
|
|
7473
|
-
"(cloud-code, codex, muse CLI-store import,
|
|
7515
|
+
"(cloud-code, codex, muse CLI-store import, muse-code device flow, or mistral-vibe browser sign-in — alias: vibe)")
|
|
7474
7516
|
.option("--config-ref <ref>", "sentropic configuration reference for OAuth")
|
|
7475
7517
|
.action(async (provider, opts) => {
|
|
7476
|
-
|
|
7518
|
+
// "vibe" is the CLI-friendly alias of the mistral-vibe transport.
|
|
7519
|
+
const normalized = provider === "vibe" ? "mistral-vibe" : provider;
|
|
7520
|
+
if (normalized !== "cloud-code" &&
|
|
7521
|
+
normalized !== "codex" &&
|
|
7522
|
+
normalized !== "muse" &&
|
|
7523
|
+
normalized !== "muse-code" &&
|
|
7524
|
+
normalized !== "mistral-vibe") {
|
|
7477
7525
|
process.stderr.write(`[h2a] llm-mesh account: unsupported provider "${provider}". ` +
|
|
7478
|
-
"Supported: cloud-code, codex, muse, muse-code\n");
|
|
7526
|
+
"Supported: cloud-code, codex, muse, muse-code, mistral-vibe (alias: vibe)\n");
|
|
7479
7527
|
process.exitCode = 1;
|
|
7480
7528
|
return;
|
|
7481
7529
|
}
|
|
7482
7530
|
try {
|
|
7483
|
-
const account = await enrollViaFacade(
|
|
7531
|
+
const account = await enrollViaFacade(normalized, {
|
|
7484
7532
|
...(opts.configRef ? { configRef: opts.configRef } : {}),
|
|
7485
7533
|
});
|
|
7486
7534
|
process.stdout.write(`[h2a] llm-mesh account: enrolled ${account.provider}; ` +
|
|
@@ -7606,8 +7654,8 @@ export async function main(argv) {
|
|
|
7606
7654
|
llmMeshCommand
|
|
7607
7655
|
.command("stop")
|
|
7608
7656
|
.description("Stop the local LLM gateway")
|
|
7609
|
-
.action(() => {
|
|
7610
|
-
const res = stopGateway();
|
|
7657
|
+
.action(async () => {
|
|
7658
|
+
const res = await stopGateway();
|
|
7611
7659
|
if (res.stopped) {
|
|
7612
7660
|
process.stdout.write(`[h2a] llm-mesh: stopped (pid ${res.pid})\n`);
|
|
7613
7661
|
}
|
|
@@ -7621,7 +7669,7 @@ export async function main(argv) {
|
|
|
7621
7669
|
.option("-v, --verbose", "verbose output")
|
|
7622
7670
|
.action(async (opts) => {
|
|
7623
7671
|
const config = readLlmMeshConfig() ?? {};
|
|
7624
|
-
const stopped = stopGateway();
|
|
7672
|
+
const stopped = await stopGateway();
|
|
7625
7673
|
if (stopped.stopped) {
|
|
7626
7674
|
process.stdout.write(`[h2a] llm-mesh: stopped gateway (pid ${stopped.pid})\n`);
|
|
7627
7675
|
}
|