@sentropic/h2a-runtime 0.98.0 → 0.98.2
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/index.d.ts.map +1 -1
- package/dist/index.js +52 -18
- 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/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/restore.d.ts.map +1 -1
- package/dist/restore.js +8 -2
- package/dist/restore.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 +1 -1
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";
|
|
@@ -4143,7 +4143,22 @@ export async function main(argv) {
|
|
|
4143
4143
|
process.stderr.write(`[h2a] conversation ${opts.resume} is already being resumed; duplicate launch request skipped.\n`);
|
|
4144
4144
|
return;
|
|
4145
4145
|
}
|
|
4146
|
+
// Covers the entire attempt, including an already-created agent when
|
|
4147
|
+
// sidecar selection fails. Component-level refusals cannot clear it.
|
|
4148
|
+
let creationAttempted = false;
|
|
4149
|
+
const onCreateAttempt = () => {
|
|
4150
|
+
creationAttempted = true;
|
|
4151
|
+
if (opts.json && opts.name) {
|
|
4152
|
+
process.stderr.write(`${STRUCTURED_LAUNCH_PHASE_PREFIX}${JSON.stringify({
|
|
4153
|
+
launchId: opts.name, phase: "creation-attempted",
|
|
4154
|
+
})}\n`);
|
|
4155
|
+
}
|
|
4156
|
+
};
|
|
4146
4157
|
try {
|
|
4158
|
+
if (structuredLaunch && sessionHost === "native") {
|
|
4159
|
+
for (const label of labels)
|
|
4160
|
+
preflightNativeLaunch(localSessionName(slugify(label ?? cwd)));
|
|
4161
|
+
}
|
|
4147
4162
|
const reservedTmuxSlugs = tmuxAvailable()
|
|
4148
4163
|
? existingLocalSessionSlugs(labels, cwd)
|
|
4149
4164
|
: [];
|
|
@@ -4183,16 +4198,22 @@ export async function main(argv) {
|
|
|
4183
4198
|
// to launch on an unprovable host state.
|
|
4184
4199
|
const nativeExistence = labels
|
|
4185
4200
|
.map((label) => slugify(label ?? cwd))
|
|
4186
|
-
.map((slug) =>
|
|
4187
|
-
slug
|
|
4188
|
-
probe
|
|
4189
|
-
|
|
4201
|
+
.map((slug) => {
|
|
4202
|
+
const detail = nativeSessionState(localSessionName(slug));
|
|
4203
|
+
const probe = detail.state === "unknown" ? "unknown"
|
|
4204
|
+
: detail.state === "found" && detail.session.status === "running" ? "live" : "dead";
|
|
4205
|
+
return { slug, probe, reason: detail.state === "unknown" ? detail.reason : undefined };
|
|
4206
|
+
});
|
|
4190
4207
|
const unknownNativeSlugs = nativeExistence
|
|
4191
|
-
.filter((probed) => probed.probe === "unknown")
|
|
4192
|
-
.map((probed) => probed.slug);
|
|
4208
|
+
.filter((probed) => probed.probe === "unknown");
|
|
4193
4209
|
if (unknownNativeSlugs.length > 0) {
|
|
4194
|
-
for (const slug of unknownNativeSlugs) {
|
|
4195
|
-
process.stderr.write(`[h2a] cannot start ${slug}: native host state is unknown (the
|
|
4210
|
+
for (const { slug, reason } of unknownNativeSlugs) {
|
|
4211
|
+
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`);
|
|
4212
|
+
}
|
|
4213
|
+
if (opts.json && opts.name) {
|
|
4214
|
+
const failure = new NativeLaunchAdmissionError({ code: "native-inventory-unknown",
|
|
4215
|
+
hosts: unknownNativeSlugs.map(({ slug, reason }) => ({ id: localSessionName(slug), reason })) });
|
|
4216
|
+
process.stdout.write(`${JSON.stringify(failure.toRunFailure(opts.name))}\n`);
|
|
4196
4217
|
}
|
|
4197
4218
|
process.exitCode = 1;
|
|
4198
4219
|
return;
|
|
@@ -4337,12 +4358,6 @@ export async function main(argv) {
|
|
|
4337
4358
|
let promptDelivery;
|
|
4338
4359
|
let launchGuard;
|
|
4339
4360
|
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
4361
|
if (opts.headless) {
|
|
4347
4362
|
const runDir = join(cwd, ".h2a", "runs", label);
|
|
4348
4363
|
mkdirSync(runDir, { recursive: true });
|
|
@@ -4358,14 +4373,18 @@ export async function main(argv) {
|
|
|
4358
4373
|
})
|
|
4359
4374
|
: initialPrompt;
|
|
4360
4375
|
if (sessionHost === "native") {
|
|
4361
|
-
({ name, slug, promptFile } = startNativeHeadlessSession(profile, command, cwd, args, resultJson, outputLog, label, headlessPromptInput, structuredLaunch, sessionClass)
|
|
4376
|
+
({ name, slug, promptFile } = startNativeHeadlessSession(profile, command, cwd, args, resultJson, outputLog, label, headlessPromptInput, structuredLaunch, sessionClass, onCreateAttempt, structuredLaunch ? (owned) => {
|
|
4377
|
+
launchOwnership = { host: "native", sessions: [owned] };
|
|
4378
|
+
launchGuard = startLaunchGuard(runDir, launchOwnership);
|
|
4379
|
+
} : undefined));
|
|
4362
4380
|
}
|
|
4363
4381
|
else {
|
|
4364
|
-
({ name, slug, agentPane, promptFile } = startHeadlessSession(profile, command, cwd, args, resultJson, outputLog, label, getTmuxProfileConfig().profile, headlessPromptInput, structuredLaunch, sessionClass));
|
|
4382
|
+
({ name, slug, agentPane, promptFile } = startHeadlessSession(profile, command, cwd, args, resultJson, outputLog, label, getTmuxProfileConfig().profile, headlessPromptInput, structuredLaunch, sessionClass, onCreateAttempt));
|
|
4365
4383
|
}
|
|
4366
4384
|
}
|
|
4367
4385
|
else if (sessionHost === "native") {
|
|
4368
4386
|
({ name, slug } = startNativeSession(profile, command, cwd, args, label, {
|
|
4387
|
+
onCreateAttempt,
|
|
4369
4388
|
...(opts.resume !== undefined ? { resumeId: opts.resume } : {}),
|
|
4370
4389
|
...(initialPrompt !== undefined
|
|
4371
4390
|
? { terminateOnAgentExit: true }
|
|
@@ -4380,6 +4399,7 @@ export async function main(argv) {
|
|
|
4380
4399
|
}
|
|
4381
4400
|
else {
|
|
4382
4401
|
({ name, slug, agentPane } = startLocalSession(profile, command, cwd, args, label, getTmuxProfileConfig().profile, {
|
|
4402
|
+
onCreateAttempt,
|
|
4383
4403
|
...(opts.resume !== undefined
|
|
4384
4404
|
? { resumeId: opts.resume }
|
|
4385
4405
|
: {}),
|
|
@@ -4417,6 +4437,7 @@ export async function main(argv) {
|
|
|
4417
4437
|
let h2aSidecarStarted = false;
|
|
4418
4438
|
if (h2aSidecar && sessionHost === "native") {
|
|
4419
4439
|
h2aSidecarStarted = startNativeH2aSidecar(name, cwd, h2a.command, {
|
|
4440
|
+
onCreateAttempt,
|
|
4420
4441
|
...(structuredLaunch ? { verified: true } : {}),
|
|
4421
4442
|
...(launchGuard && launchOwnership?.host === "native" ? { beforeCreate: (owned) => {
|
|
4422
4443
|
if (launchOwnership?.host === "native") {
|
|
@@ -4571,9 +4592,12 @@ export async function main(argv) {
|
|
|
4571
4592
|
gatewayMode: launchGatewayMode,
|
|
4572
4593
|
bare: useBare,
|
|
4573
4594
|
});
|
|
4595
|
+
const nativeOwnerSocket = launchOwnership?.host === "native"
|
|
4596
|
+
? launchOwnership.sessions.find(owned => owned.name === name)?.socketPath : undefined;
|
|
4574
4597
|
started.push({
|
|
4575
4598
|
name,
|
|
4576
4599
|
slug,
|
|
4600
|
+
...(nativeOwnerSocket ? { socketPath: nativeOwnerSocket } : {}),
|
|
4577
4601
|
...(agentPane !== undefined ? { pane: agentPane } : {}),
|
|
4578
4602
|
h2aSidecar: h2aSidecarStarted,
|
|
4579
4603
|
...(pid !== undefined ? { pid } : {}),
|
|
@@ -4601,6 +4625,7 @@ export async function main(argv) {
|
|
|
4601
4625
|
ok: true,
|
|
4602
4626
|
state: "started",
|
|
4603
4627
|
session: {
|
|
4628
|
+
...(only.socketPath ? { socketPath: only.socketPath } : {}),
|
|
4604
4629
|
id: only.slug,
|
|
4605
4630
|
tmuxSession: only.name,
|
|
4606
4631
|
host: sessionHost === "native" ? "native" : "tmux",
|
|
@@ -4657,6 +4682,14 @@ export async function main(argv) {
|
|
|
4657
4682
|
: attachLocalSession(only.name);
|
|
4658
4683
|
return;
|
|
4659
4684
|
}
|
|
4685
|
+
catch (error) {
|
|
4686
|
+
if (!(error instanceof NativeHostCapabilityMismatchError || error instanceof NativeLaunchAdmissionError) || creationAttempted)
|
|
4687
|
+
throw error;
|
|
4688
|
+
process.stderr.write(`[h2a] ${error.message}\n`);
|
|
4689
|
+
if (opts.json && opts.name)
|
|
4690
|
+
process.stdout.write(`${JSON.stringify(error.toRunFailure(opts.name))}\n`);
|
|
4691
|
+
process.exitCode = 1;
|
|
4692
|
+
}
|
|
4660
4693
|
finally {
|
|
4661
4694
|
resumeClaim?.release();
|
|
4662
4695
|
}
|
|
@@ -6106,12 +6139,13 @@ export async function main(argv) {
|
|
|
6106
6139
|
state: "live",
|
|
6107
6140
|
generation: probe.session.generation,
|
|
6108
6141
|
incarnation: probe.session.incarnation,
|
|
6142
|
+
...(probe.session.socketPath ? { socketPath: probe.session.socketPath } : {}),
|
|
6109
6143
|
controlled: probe.session.controlled ?? true,
|
|
6110
6144
|
};
|
|
6111
6145
|
},
|
|
6112
6146
|
prepare: (candidate, _snapshot, mode) => prepareNativeRestart(candidate, mode),
|
|
6113
6147
|
restart: (candidate, snapshot, mode, prepared) => {
|
|
6114
|
-
if (!killNativeSessionIfIncarnation(candidate.name, snapshot.generation, snapshot.incarnation)) {
|
|
6148
|
+
if (!killNativeSessionIfIncarnation(candidate.name, snapshot.generation, snapshot.incarnation, snapshot.socketPath)) {
|
|
6115
6149
|
throw new Error("fenced native stop failed");
|
|
6116
6150
|
}
|
|
6117
6151
|
const restore = replaceAnthropicGatewayEnvironment(process.env, prepared.gatewayEnvironment);
|