@sentropic/h2a-runtime 0.90.3 → 0.91.1
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/cli-help-groups.d.ts +1 -1
- package/dist/cli-help-groups.d.ts.map +1 -1
- package/dist/cli-help-groups.js +5 -0
- package/dist/cli-help-groups.js.map +1 -1
- package/dist/convsync.d.ts +1 -1
- package/dist/convsync.d.ts.map +1 -1
- package/dist/convsync.js +14 -2
- package/dist/convsync.js.map +1 -1
- package/dist/identity-cull/cull.d.ts +167 -0
- package/dist/identity-cull/cull.d.ts.map +1 -0
- package/dist/identity-cull/cull.js +924 -0
- package/dist/identity-cull/cull.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +92 -109
- package/dist/index.js.map +1 -1
- package/dist/llm-gateway-runtime/accounts.d.ts +1 -1
- package/dist/llm-gateway-runtime/accounts.d.ts.map +1 -1
- package/dist/llm-gateway-runtime/accounts.js +12 -4
- package/dist/llm-gateway-runtime/accounts.js.map +1 -1
- package/dist/llm-gateway-runtime/model-catalog.d.ts.map +1 -1
- package/dist/llm-gateway-runtime/model-catalog.js +33 -3
- package/dist/llm-gateway-runtime/model-catalog.js.map +1 -1
- package/dist/llm-gateway-runtime/proxy-anthropic.d.ts.map +1 -1
- package/dist/llm-gateway-runtime/proxy-anthropic.js +27 -9
- package/dist/llm-gateway-runtime/proxy-anthropic.js.map +1 -1
- package/dist/llm-gateway-runtime/proxy-cloud-code.d.ts +11 -0
- package/dist/llm-gateway-runtime/proxy-cloud-code.d.ts.map +1 -0
- package/dist/llm-gateway-runtime/proxy-cloud-code.js +215 -0
- package/dist/llm-gateway-runtime/proxy-cloud-code.js.map +1 -0
- package/dist/llm-gateway-runtime/proxy-openai.d.ts.map +1 -1
- package/dist/llm-gateway-runtime/proxy-openai.js +0 -3
- package/dist/llm-gateway-runtime/proxy-openai.js.map +1 -1
- package/dist/llm-gateway-runtime/sticky.d.ts +15 -6
- package/dist/llm-gateway-runtime/sticky.d.ts.map +1 -1
- package/dist/llm-gateway-runtime/sticky.js +104 -29
- package/dist/llm-gateway-runtime/sticky.js.map +1 -1
- package/dist/llm-mesh.d.ts +31 -7
- package/dist/llm-mesh.d.ts.map +1 -1
- package/dist/llm-mesh.js +104 -73
- package/dist/llm-mesh.js.map +1 -1
- package/dist/migrate.d.ts.map +1 -1
- package/dist/migrate.js +4 -3
- package/dist/migrate.js.map +1 -1
- package/dist/native-terminal/client.d.ts +23 -0
- package/dist/native-terminal/client.d.ts.map +1 -0
- package/dist/native-terminal/client.js +203 -0
- package/dist/native-terminal/client.js.map +1 -0
- package/dist/native-terminal/host.d.ts +78 -0
- package/dist/native-terminal/host.d.ts.map +1 -0
- package/dist/native-terminal/host.js +275 -0
- package/dist/native-terminal/host.js.map +1 -0
- package/dist/native-terminal/process.d.ts +11 -0
- package/dist/native-terminal/process.d.ts.map +1 -0
- package/dist/native-terminal/process.js +137 -0
- package/dist/native-terminal/process.js.map +1 -0
- package/dist/native-terminal/protocol.d.ts +57 -0
- package/dist/native-terminal/protocol.d.ts.map +1 -0
- package/dist/native-terminal/protocol.js +102 -0
- package/dist/native-terminal/protocol.js.map +1 -0
- package/dist/native-terminal/replay-buffer.d.ts +26 -0
- package/dist/native-terminal/replay-buffer.d.ts.map +1 -0
- package/dist/native-terminal/replay-buffer.js +84 -0
- package/dist/native-terminal/replay-buffer.js.map +1 -0
- package/dist/native-terminal/server.d.ts +13 -0
- package/dist/native-terminal/server.d.ts.map +1 -0
- package/dist/native-terminal/server.js +555 -0
- package/dist/native-terminal/server.js.map +1 -0
- package/dist/native-terminal/socket-path.d.ts +8 -0
- package/dist/native-terminal/socket-path.d.ts.map +1 -0
- package/dist/native-terminal/socket-path.js +41 -0
- package/dist/native-terminal/socket-path.js.map +1 -0
- package/dist/native-terminal/supervisor.d.ts +26 -0
- package/dist/native-terminal/supervisor.d.ts.map +1 -0
- package/dist/native-terminal/supervisor.js +273 -0
- package/dist/native-terminal/supervisor.js.map +1 -0
- package/dist/pty.d.ts +1 -0
- package/dist/pty.d.ts.map +1 -1
- package/dist/pty.js +78 -2
- package/dist/pty.js.map +1 -1
- package/dist/restore.d.ts +15 -14
- package/dist/restore.d.ts.map +1 -1
- package/dist/restore.js +63 -44
- package/dist/restore.js.map +1 -1
- package/dist/tmux.js +1 -1
- package/dist/tmux.js.map +1 -1
- package/package.json +2 -1
- package/dist/llm-gateway-runtime/proxy-gemini.d.ts +0 -82
- package/dist/llm-gateway-runtime/proxy-gemini.d.ts.map +0 -1
- package/dist/llm-gateway-runtime/proxy-gemini.js +0 -523
- package/dist/llm-gateway-runtime/proxy-gemini.js.map +0 -1
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type ChildProcess } from "node:child_process";
|
|
2
|
+
import { NativeTerminalClient } from "./client.js";
|
|
3
|
+
export type NativeTerminalHostSpawn = (options: {
|
|
4
|
+
socketPath: string;
|
|
5
|
+
generation: string;
|
|
6
|
+
replayBytesPerSession: number;
|
|
7
|
+
maxSessions: number;
|
|
8
|
+
}) => ChildProcess;
|
|
9
|
+
export declare class NativeTerminalHostSupervisor {
|
|
10
|
+
#private;
|
|
11
|
+
constructor(options: {
|
|
12
|
+
socketPath: string;
|
|
13
|
+
replayBytesPerSession: number;
|
|
14
|
+
maxSessions?: number;
|
|
15
|
+
requestTimeoutMs?: number;
|
|
16
|
+
spawnHost?: NativeTerminalHostSpawn;
|
|
17
|
+
generationFactory?: () => string;
|
|
18
|
+
now?: () => number;
|
|
19
|
+
startupTimeoutMs?: number;
|
|
20
|
+
spawnTerminationGraceMs?: number;
|
|
21
|
+
});
|
|
22
|
+
get spawnedPid(): number | undefined;
|
|
23
|
+
client(): Promise<NativeTerminalClient>;
|
|
24
|
+
disconnect(): void;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=supervisor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../src/native-terminal/supervisor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAK9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAiBnD,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,EAAE;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB,KAAK,YAAY,CAAC;AA6EnB,qBAAa,4BAA4B;;gBAoB3B,OAAO,EAAE;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,SAAS,CAAC,EAAE,uBAAuB,CAAC;QACpC,iBAAiB,CAAC,EAAE,MAAM,MAAM,CAAC;QACjC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;QACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,uBAAuB,CAAC,EAAE,MAAM,CAAC;KAClC;IAoDD,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAEK,MAAM,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAiB7C,UAAU,IAAI,IAAI;CA8JnB"}
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { randomUUID } from "node:crypto";
|
|
3
|
+
import { once } from "node:events";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { NativeTerminalClient } from "./client.js";
|
|
6
|
+
import { NATIVE_TERMINAL_DEFAULT_MAX_SESSIONS, NATIVE_TERMINAL_DEFAULT_REQUEST_TIMEOUT_MS, NATIVE_TERMINAL_HEALTH_TIMEOUT_MS, NATIVE_TERMINAL_MAX_REPLAY_BYTES_PER_SESSION, NATIVE_TERMINAL_MAX_SESSIONS, NATIVE_TERMINAL_PROTOCOL_VERSION, } from "./protocol.js";
|
|
7
|
+
const NATIVE_TERMINAL_SPAWN_BACKOFF_BASE_MS = 250;
|
|
8
|
+
const NATIVE_TERMINAL_SPAWN_BACKOFF_MAX_MS = 5_000;
|
|
9
|
+
const NATIVE_TERMINAL_STARTUP_TIMEOUT_MS = 5_000;
|
|
10
|
+
const NATIVE_TERMINAL_SPAWN_TERMINATION_GRACE_MS = 1_000;
|
|
11
|
+
const NATIVE_TERMINAL_MAX_STARTUP_DIAGNOSTIC_BYTES = 4_096;
|
|
12
|
+
function defaultSpawnHost(options) {
|
|
13
|
+
const entry = fileURLToPath(new URL("./process.js", import.meta.url));
|
|
14
|
+
const child = spawn(process.execPath, [
|
|
15
|
+
entry,
|
|
16
|
+
"--socket",
|
|
17
|
+
options.socketPath,
|
|
18
|
+
"--generation",
|
|
19
|
+
options.generation,
|
|
20
|
+
"--replay-bytes",
|
|
21
|
+
String(options.replayBytesPerSession),
|
|
22
|
+
"--max-sessions",
|
|
23
|
+
String(options.maxSessions),
|
|
24
|
+
], {
|
|
25
|
+
detached: true,
|
|
26
|
+
stdio: ["ignore", "ignore", "pipe"],
|
|
27
|
+
env: process.env,
|
|
28
|
+
});
|
|
29
|
+
child.stderr?.unref?.();
|
|
30
|
+
child.unref();
|
|
31
|
+
return child;
|
|
32
|
+
}
|
|
33
|
+
function delay(milliseconds) {
|
|
34
|
+
return new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
35
|
+
}
|
|
36
|
+
function childExited(child) {
|
|
37
|
+
return child.exitCode !== null || child.signalCode !== null;
|
|
38
|
+
}
|
|
39
|
+
async function waitForChildExit(child, timeoutMs) {
|
|
40
|
+
if (childExited(child))
|
|
41
|
+
return true;
|
|
42
|
+
return Promise.race([
|
|
43
|
+
once(child, "exit").then(() => true),
|
|
44
|
+
delay(timeoutMs).then(() => false),
|
|
45
|
+
]);
|
|
46
|
+
}
|
|
47
|
+
async function connectHealthy(socketPath, requestTimeoutMs) {
|
|
48
|
+
const client = await NativeTerminalClient.connect(socketPath, {
|
|
49
|
+
connectTimeoutMs: NATIVE_TERMINAL_HEALTH_TIMEOUT_MS,
|
|
50
|
+
requestTimeoutMs,
|
|
51
|
+
});
|
|
52
|
+
try {
|
|
53
|
+
const ping = await client.ping(NATIVE_TERMINAL_HEALTH_TIMEOUT_MS);
|
|
54
|
+
if (ping.protocolVersion !== NATIVE_TERMINAL_PROTOCOL_VERSION
|
|
55
|
+
|| typeof ping.generation !== "string"
|
|
56
|
+
|| ping.generation.trim().length === 0
|
|
57
|
+
|| !Number.isSafeInteger(ping.hostPid)
|
|
58
|
+
|| ping.hostPid <= 0) {
|
|
59
|
+
throw new Error("native terminal host returned an invalid ping");
|
|
60
|
+
}
|
|
61
|
+
return { client, ping };
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
client.close();
|
|
65
|
+
throw error;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export class NativeTerminalHostSupervisor {
|
|
69
|
+
#socketPath;
|
|
70
|
+
#generationFactory;
|
|
71
|
+
#replayBytesPerSession;
|
|
72
|
+
#maxSessions;
|
|
73
|
+
#requestTimeoutMs;
|
|
74
|
+
#spawnHost;
|
|
75
|
+
#now;
|
|
76
|
+
#startupTimeoutMs;
|
|
77
|
+
#spawnTerminationGraceMs;
|
|
78
|
+
#client;
|
|
79
|
+
#connecting;
|
|
80
|
+
#spawned;
|
|
81
|
+
#spawnError;
|
|
82
|
+
#spawnDiagnostic = "";
|
|
83
|
+
#consecutiveSpawnFailures = 0;
|
|
84
|
+
#nextSpawnAllowedAt = 0;
|
|
85
|
+
#lastSpawnFailure;
|
|
86
|
+
#lastSpawnGeneration;
|
|
87
|
+
constructor(options) {
|
|
88
|
+
if (!Number.isSafeInteger(options.replayBytesPerSession)
|
|
89
|
+
|| options.replayBytesPerSession <= 0
|
|
90
|
+
|| options.replayBytesPerSession > NATIVE_TERMINAL_MAX_REPLAY_BYTES_PER_SESSION) {
|
|
91
|
+
throw new RangeError(`replayBytesPerSession must be between 1 and ${NATIVE_TERMINAL_MAX_REPLAY_BYTES_PER_SESSION}`);
|
|
92
|
+
}
|
|
93
|
+
const maxSessions = options.maxSessions ?? NATIVE_TERMINAL_DEFAULT_MAX_SESSIONS;
|
|
94
|
+
if (!Number.isSafeInteger(maxSessions) ||
|
|
95
|
+
maxSessions <= 0 ||
|
|
96
|
+
maxSessions > NATIVE_TERMINAL_MAX_SESSIONS) {
|
|
97
|
+
throw new RangeError(`maxSessions must be between 1 and ${NATIVE_TERMINAL_MAX_SESSIONS}`);
|
|
98
|
+
}
|
|
99
|
+
const requestTimeoutMs = options.requestTimeoutMs ?? NATIVE_TERMINAL_DEFAULT_REQUEST_TIMEOUT_MS;
|
|
100
|
+
if (!Number.isSafeInteger(requestTimeoutMs) || requestTimeoutMs <= 0) {
|
|
101
|
+
throw new RangeError("requestTimeoutMs must be a positive safe integer");
|
|
102
|
+
}
|
|
103
|
+
const startupTimeoutMs = options.startupTimeoutMs ?? NATIVE_TERMINAL_STARTUP_TIMEOUT_MS;
|
|
104
|
+
const spawnTerminationGraceMs = options.spawnTerminationGraceMs ??
|
|
105
|
+
NATIVE_TERMINAL_SPAWN_TERMINATION_GRACE_MS;
|
|
106
|
+
for (const [label, value] of [
|
|
107
|
+
["startupTimeoutMs", startupTimeoutMs],
|
|
108
|
+
["spawnTerminationGraceMs", spawnTerminationGraceMs],
|
|
109
|
+
]) {
|
|
110
|
+
if (!Number.isSafeInteger(value) || value <= 0) {
|
|
111
|
+
throw new RangeError(`${label} must be a positive safe integer`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
this.#socketPath = options.socketPath;
|
|
115
|
+
this.#generationFactory = options.generationFactory ?? randomUUID;
|
|
116
|
+
this.#replayBytesPerSession = options.replayBytesPerSession;
|
|
117
|
+
this.#maxSessions = maxSessions;
|
|
118
|
+
this.#requestTimeoutMs = requestTimeoutMs;
|
|
119
|
+
this.#spawnHost = options.spawnHost ?? defaultSpawnHost;
|
|
120
|
+
this.#now = options.now ?? Date.now;
|
|
121
|
+
this.#startupTimeoutMs = startupTimeoutMs;
|
|
122
|
+
this.#spawnTerminationGraceMs = spawnTerminationGraceMs;
|
|
123
|
+
}
|
|
124
|
+
get spawnedPid() {
|
|
125
|
+
return this.#spawned?.pid;
|
|
126
|
+
}
|
|
127
|
+
async client() {
|
|
128
|
+
if (this.#client) {
|
|
129
|
+
try {
|
|
130
|
+
await this.#client.ping(NATIVE_TERMINAL_HEALTH_TIMEOUT_MS);
|
|
131
|
+
return this.#client;
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
this.#client.close();
|
|
135
|
+
this.#client = undefined;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
this.#connecting ??= this.#connectOrStart().finally(() => {
|
|
139
|
+
this.#connecting = undefined;
|
|
140
|
+
});
|
|
141
|
+
this.#client = await this.#connecting;
|
|
142
|
+
return this.#client;
|
|
143
|
+
}
|
|
144
|
+
disconnect() {
|
|
145
|
+
this.#client?.close();
|
|
146
|
+
this.#client = undefined;
|
|
147
|
+
}
|
|
148
|
+
async #connectOrStart() {
|
|
149
|
+
try {
|
|
150
|
+
const connected = await connectHealthy(this.#socketPath, this.#requestTimeoutMs);
|
|
151
|
+
return await this.#adoptHealthyConnection(connected);
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
if (!this.#spawned || this.#spawned.exitCode !== null || this.#spawned.signalCode !== null) {
|
|
155
|
+
const now = this.#now();
|
|
156
|
+
if (now < this.#nextSpawnAllowedAt) {
|
|
157
|
+
const remaining = this.#nextSpawnAllowedAt - now;
|
|
158
|
+
throw new Error(`native terminal host restart backoff active for ${remaining}ms after: ${this.#lastSpawnFailure?.message ?? "startup failure"}`);
|
|
159
|
+
}
|
|
160
|
+
const generation = this.#generationFactory();
|
|
161
|
+
if (generation.trim().length === 0) {
|
|
162
|
+
throw new Error("native terminal host generation must not be empty");
|
|
163
|
+
}
|
|
164
|
+
if (generation === this.#lastSpawnGeneration) {
|
|
165
|
+
throw new Error("native terminal host generation must change after a restart");
|
|
166
|
+
}
|
|
167
|
+
this.#lastSpawnGeneration = generation;
|
|
168
|
+
this.#spawnError = undefined;
|
|
169
|
+
this.#spawnDiagnostic = "";
|
|
170
|
+
this.#spawned = this.#spawnHost({
|
|
171
|
+
socketPath: this.#socketPath,
|
|
172
|
+
generation,
|
|
173
|
+
replayBytesPerSession: this.#replayBytesPerSession,
|
|
174
|
+
maxSessions: this.#maxSessions,
|
|
175
|
+
});
|
|
176
|
+
const spawned = this.#spawned;
|
|
177
|
+
spawned.stderr?.setEncoding("utf8");
|
|
178
|
+
spawned.stderr?.on("data", (chunk) => {
|
|
179
|
+
const text = typeof chunk === "string" ? chunk : chunk.toString("utf8");
|
|
180
|
+
this.#spawnDiagnostic = (this.#spawnDiagnostic + text).slice(-NATIVE_TERMINAL_MAX_STARTUP_DIAGNOSTIC_BYTES);
|
|
181
|
+
});
|
|
182
|
+
spawned.once("error", (error) => {
|
|
183
|
+
if (this.#spawned === spawned)
|
|
184
|
+
this.#spawnError = error;
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
let lastError;
|
|
189
|
+
const startupDeadline = Date.now() + this.#startupTimeoutMs;
|
|
190
|
+
while (Date.now() < startupDeadline) {
|
|
191
|
+
try {
|
|
192
|
+
const connected = await connectHealthy(this.#socketPath, this.#requestTimeoutMs);
|
|
193
|
+
return await this.#adoptHealthyConnection(connected);
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
lastError = error;
|
|
197
|
+
}
|
|
198
|
+
if (this.#spawnError) {
|
|
199
|
+
const error = new Error(`native terminal host failed to start: ${this.#spawnError.message}`);
|
|
200
|
+
this.#recordSpawnFailure(error);
|
|
201
|
+
throw error;
|
|
202
|
+
}
|
|
203
|
+
if (this.#spawned?.exitCode !== null || this.#spawned.signalCode !== null) {
|
|
204
|
+
const diagnostic = this.#spawnDiagnostic.trim();
|
|
205
|
+
const error = new Error(`native terminal host exited before accepting connections (${this.#spawned?.exitCode ?? this.#spawned?.signalCode ?? "unknown"})${diagnostic ? `: ${diagnostic}` : ""}`);
|
|
206
|
+
this.#recordSpawnFailure(error);
|
|
207
|
+
throw error;
|
|
208
|
+
}
|
|
209
|
+
await delay(25);
|
|
210
|
+
}
|
|
211
|
+
const error = new Error(`native terminal host did not become ready: ${String(lastError)}`);
|
|
212
|
+
const spawned = this.#spawned;
|
|
213
|
+
if (spawned && !childExited(spawned)) {
|
|
214
|
+
try {
|
|
215
|
+
await this.#terminateOwnedSpawn(spawned);
|
|
216
|
+
}
|
|
217
|
+
catch (terminationError) {
|
|
218
|
+
const combined = new Error(`${error.message}; failed to reap owned child: ${String(terminationError)}`);
|
|
219
|
+
this.#recordSpawnFailure(combined);
|
|
220
|
+
throw combined;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
this.#recordSpawnFailure(error);
|
|
224
|
+
throw error;
|
|
225
|
+
}
|
|
226
|
+
async #adoptHealthyConnection(connected) {
|
|
227
|
+
const spawned = this.#spawned;
|
|
228
|
+
if (spawned &&
|
|
229
|
+
!childExited(spawned) &&
|
|
230
|
+
spawned.pid !== connected.ping.hostPid) {
|
|
231
|
+
try {
|
|
232
|
+
await this.#terminateOwnedSpawn(spawned);
|
|
233
|
+
}
|
|
234
|
+
catch (error) {
|
|
235
|
+
connected.client.close();
|
|
236
|
+
throw new Error(`native terminal host adoption could not reap losing owned child: ${String(error)}`);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
else if (spawned && childExited(spawned) && this.#spawned === spawned) {
|
|
240
|
+
this.#spawned = undefined;
|
|
241
|
+
}
|
|
242
|
+
this.#resetSpawnBackoff();
|
|
243
|
+
return connected.client;
|
|
244
|
+
}
|
|
245
|
+
async #terminateOwnedSpawn(spawned) {
|
|
246
|
+
if (this.#spawned !== spawned)
|
|
247
|
+
return;
|
|
248
|
+
if (!childExited(spawned)) {
|
|
249
|
+
spawned.kill("SIGTERM");
|
|
250
|
+
if (!await waitForChildExit(spawned, this.#spawnTerminationGraceMs)) {
|
|
251
|
+
spawned.kill("SIGKILL");
|
|
252
|
+
if (!await waitForChildExit(spawned, this.#spawnTerminationGraceMs)) {
|
|
253
|
+
throw new Error("owned native terminal host did not exit after SIGKILL");
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
if (this.#spawned === spawned)
|
|
258
|
+
this.#spawned = undefined;
|
|
259
|
+
}
|
|
260
|
+
#recordSpawnFailure(error) {
|
|
261
|
+
this.#consecutiveSpawnFailures += 1;
|
|
262
|
+
const delayMs = Math.min(NATIVE_TERMINAL_SPAWN_BACKOFF_BASE_MS *
|
|
263
|
+
2 ** (this.#consecutiveSpawnFailures - 1), NATIVE_TERMINAL_SPAWN_BACKOFF_MAX_MS);
|
|
264
|
+
this.#nextSpawnAllowedAt = this.#now() + delayMs;
|
|
265
|
+
this.#lastSpawnFailure = error;
|
|
266
|
+
}
|
|
267
|
+
#resetSpawnBackoff() {
|
|
268
|
+
this.#consecutiveSpawnFailures = 0;
|
|
269
|
+
this.#nextSpawnAllowedAt = 0;
|
|
270
|
+
this.#lastSpawnFailure = undefined;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
//# sourceMappingURL=supervisor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../../src/native-terminal/supervisor.ts"],"names":[],"mappings":"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"}
|
package/dist/pty.d.ts
CHANGED
package/dist/pty.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty.d.ts","sourceRoot":"","sources":["../src/pty.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pty.d.ts","sourceRoot":"","sources":["../src/pty.ts"],"names":[],"mappings":"AA+EA,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG;QAAE,OAAO,IAAI,IAAI,CAAA;KAAE,CAAC;IAC9D,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG;QACvE,OAAO,IAAI,IAAI,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,KAAK,SAAS,CAAC;AAEhB,eAAO,MAAM,cAAc,EAAE,UAqD5B,CAAC"}
|
package/dist/pty.js
CHANGED
|
@@ -1,8 +1,76 @@
|
|
|
1
|
+
import { accessSync, constants as fsConstants } from "node:fs";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
const require = createRequire(import.meta.url);
|
|
4
|
+
const LINUX_PARENT_DEATH_SIGNAL = "SIGUSR2";
|
|
5
|
+
const LINUX_FORCE_KILL_SIGNAL = "SIGUSR1";
|
|
6
|
+
const LINUX_PTY_GUARDIAN_SCRIPT = [
|
|
7
|
+
"h2a_expected_parent=$1",
|
|
8
|
+
"shift",
|
|
9
|
+
'[ "$PPID" -eq "$h2a_expected_parent" ] || { builtin kill -KILL -- "-$$"; exit 127; }',
|
|
10
|
+
'h2a_forward() { local h2a_signal=$1; trap "" "$h2a_signal"; builtin kill "-$h2a_signal" -- "-$$" 2>/dev/null || :; trap "h2a_forward $h2a_signal" "$h2a_signal"; }',
|
|
11
|
+
'h2a_force() { trap - USR1 USR2; builtin kill -KILL -- "-$$"; }',
|
|
12
|
+
"trap 'h2a_forward HUP' HUP",
|
|
13
|
+
"trap 'h2a_forward INT' INT",
|
|
14
|
+
"trap 'h2a_forward TERM' TERM",
|
|
15
|
+
"trap h2a_force USR1 USR2",
|
|
16
|
+
'"$@" < /dev/tty &',
|
|
17
|
+
"h2a_child=$!",
|
|
18
|
+
"while true; do",
|
|
19
|
+
' wait "$h2a_child"',
|
|
20
|
+
" h2a_status=$?",
|
|
21
|
+
' kill -0 "$h2a_child" 2>/dev/null || exit "$h2a_status"',
|
|
22
|
+
"done",
|
|
23
|
+
].join("\n");
|
|
24
|
+
function linuxSetprivPath() {
|
|
25
|
+
for (const candidate of ["/usr/bin/setpriv", "/bin/setpriv"]) {
|
|
26
|
+
try {
|
|
27
|
+
accessSync(candidate, fsConstants.X_OK);
|
|
28
|
+
return candidate;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Try the next fixed system path. Never resolve this boundary through PATH.
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
throw new Error("native terminal PTY crash containment requires util-linux setpriv");
|
|
35
|
+
}
|
|
36
|
+
function linuxBashPath() {
|
|
37
|
+
for (const candidate of ["/bin/bash", "/usr/bin/bash"]) {
|
|
38
|
+
try {
|
|
39
|
+
accessSync(candidate, fsConstants.X_OK);
|
|
40
|
+
return candidate;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// Try the next fixed system path. Never resolve this boundary through PATH.
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
throw new Error("native terminal PTY crash containment requires bash");
|
|
47
|
+
}
|
|
48
|
+
function guardedSpawnCommand(options) {
|
|
49
|
+
if (process.platform !== "linux") {
|
|
50
|
+
return { command: options.command, args: [...options.args] };
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
command: linuxSetprivPath(),
|
|
54
|
+
args: [
|
|
55
|
+
"--pdeathsig",
|
|
56
|
+
LINUX_PARENT_DEATH_SIGNAL,
|
|
57
|
+
"--",
|
|
58
|
+
linuxBashPath(),
|
|
59
|
+
"-c",
|
|
60
|
+
LINUX_PTY_GUARDIAN_SCRIPT,
|
|
61
|
+
"h2a-pty-guardian",
|
|
62
|
+
String(process.pid),
|
|
63
|
+
options.command,
|
|
64
|
+
...options.args,
|
|
65
|
+
],
|
|
66
|
+
};
|
|
67
|
+
}
|
|
1
68
|
export const nodePtySpawner = (options) => {
|
|
2
69
|
// Lazy load node-pty so test environments without the native binary still
|
|
3
70
|
// import this module — they substitute a stub spawner.
|
|
4
71
|
const pty = require("node-pty");
|
|
5
|
-
const
|
|
72
|
+
const guarded = guardedSpawnCommand(options);
|
|
73
|
+
const proc = pty.spawn(guarded.command, guarded.args, {
|
|
6
74
|
cwd: options.cwd,
|
|
7
75
|
env: options.env,
|
|
8
76
|
cols: options.cols,
|
|
@@ -10,6 +78,9 @@ export const nodePtySpawner = (options) => {
|
|
|
10
78
|
name: "xterm-256color",
|
|
11
79
|
});
|
|
12
80
|
return {
|
|
81
|
+
get pid() {
|
|
82
|
+
return proc.pid;
|
|
83
|
+
},
|
|
13
84
|
get cols() {
|
|
14
85
|
return options.cols;
|
|
15
86
|
},
|
|
@@ -23,7 +94,12 @@ export const nodePtySpawner = (options) => {
|
|
|
23
94
|
proc.resize(cols, rows);
|
|
24
95
|
},
|
|
25
96
|
kill(signal) {
|
|
26
|
-
|
|
97
|
+
if (process.platform === "linux") {
|
|
98
|
+
proc.kill(signal === "SIGKILL" ? LINUX_FORCE_KILL_SIGNAL : signal);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
proc.kill(signal);
|
|
102
|
+
}
|
|
27
103
|
},
|
|
28
104
|
onData(handler) {
|
|
29
105
|
const subscription = proc.onData(handler);
|
package/dist/pty.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty.js","sourceRoot":"","sources":["../src/pty.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pty.js","sourceRoot":"","sources":["../src/pty.ts"],"names":[],"mappings":"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"}
|
package/dist/restore.d.ts
CHANGED
|
@@ -177,26 +177,27 @@ export declare function groupSessions(sessions: DiscoveredSession[], cfg: Layout
|
|
|
177
177
|
dropped: number;
|
|
178
178
|
};
|
|
179
179
|
/**
|
|
180
|
-
* Per-tab command
|
|
181
|
-
*
|
|
182
|
-
*
|
|
183
|
-
*
|
|
184
|
-
*
|
|
185
|
-
* currently-live local tmux sessions (empty for the reproducible layout snapshot).
|
|
180
|
+
* Per-tab command for an ABSENT local session: create it via `remote run …
|
|
181
|
+
* --resume …` (which attaches by default). Live sessions are deliberately
|
|
182
|
+
* handled by `launchLayout`, which knows their exact tmux names and whether they
|
|
183
|
+
* have a client attached; it emits `tmux attach -t <exact-name>` and never
|
|
184
|
+
* relaunches them.
|
|
186
185
|
*/
|
|
187
186
|
export declare function tabCommand(tab: LayoutTab, liveSlugs?: ReadonlySet<string>, opts?: {
|
|
188
187
|
forceGateway?: "gateway" | "direct";
|
|
188
|
+
/** Exact existing tmux name — attach directly, never replace/relaunch it. */
|
|
189
|
+
attachSession?: string;
|
|
189
190
|
}): string;
|
|
190
191
|
/** Group collision candidates before restore emits bare-slug attach/resume commands. */
|
|
191
192
|
export declare function ambiguousLiveSessionNames(sessions: readonly Pick<LocalSession, "name" | "slug">[]): Map<string, string[]>;
|
|
192
193
|
/**
|
|
193
194
|
* Launch the layout in gnome-terminal: one window per group, one tab per session.
|
|
194
195
|
*
|
|
195
|
-
* Default behaviour
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
*
|
|
196
|
+
* Default behaviour: a live session with a tmux client is already visible and is
|
|
197
|
+
* skipped; a live session with zero clients is orphaned, so a terminal tab is
|
|
198
|
+
* opened directly onto that exact tmux session. An absent session is launched as
|
|
199
|
+
* before. `--reattach` explicitly opens another tab even for an already-visible
|
|
200
|
+
* session. This is deliberately a view decision, not a liveness decision.
|
|
200
201
|
*/
|
|
201
202
|
export declare function launchLayout(windows: LayoutWindow[], stderr?: NodeJS.WriteStream, opts?: {
|
|
202
203
|
reattach?: boolean;
|
|
@@ -217,9 +218,9 @@ export type RestoreOptions = {
|
|
|
217
218
|
*/
|
|
218
219
|
reattach?: boolean;
|
|
219
220
|
/**
|
|
220
|
-
* Force the llm-mesh gateway posture for
|
|
221
|
-
*
|
|
222
|
-
*
|
|
221
|
+
* Force the llm-mesh gateway posture for sessions launched by this restore.
|
|
222
|
+
* Existing sessions keep their running posture and are only attached, never
|
|
223
|
+
* replaced to apply this override.
|
|
223
224
|
*/
|
|
224
225
|
forceGateway?: "gateway" | "direct";
|
|
225
226
|
stderr?: NodeJS.WriteStream;
|
package/dist/restore.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../src/restore.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../src/restore.ts"],"names":[],"mappings":"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"}
|