@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.
Files changed (91) hide show
  1. package/dist/cli-help-groups.d.ts +1 -1
  2. package/dist/cli-help-groups.d.ts.map +1 -1
  3. package/dist/cli-help-groups.js +5 -0
  4. package/dist/cli-help-groups.js.map +1 -1
  5. package/dist/convsync.d.ts +1 -1
  6. package/dist/convsync.d.ts.map +1 -1
  7. package/dist/convsync.js +14 -2
  8. package/dist/convsync.js.map +1 -1
  9. package/dist/identity-cull/cull.d.ts +167 -0
  10. package/dist/identity-cull/cull.d.ts.map +1 -0
  11. package/dist/identity-cull/cull.js +924 -0
  12. package/dist/identity-cull/cull.js.map +1 -0
  13. package/dist/index.d.ts +17 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +92 -109
  16. package/dist/index.js.map +1 -1
  17. package/dist/llm-gateway-runtime/accounts.d.ts +1 -1
  18. package/dist/llm-gateway-runtime/accounts.d.ts.map +1 -1
  19. package/dist/llm-gateway-runtime/accounts.js +12 -4
  20. package/dist/llm-gateway-runtime/accounts.js.map +1 -1
  21. package/dist/llm-gateway-runtime/model-catalog.d.ts.map +1 -1
  22. package/dist/llm-gateway-runtime/model-catalog.js +33 -3
  23. package/dist/llm-gateway-runtime/model-catalog.js.map +1 -1
  24. package/dist/llm-gateway-runtime/proxy-anthropic.d.ts.map +1 -1
  25. package/dist/llm-gateway-runtime/proxy-anthropic.js +27 -9
  26. package/dist/llm-gateway-runtime/proxy-anthropic.js.map +1 -1
  27. package/dist/llm-gateway-runtime/proxy-cloud-code.d.ts +11 -0
  28. package/dist/llm-gateway-runtime/proxy-cloud-code.d.ts.map +1 -0
  29. package/dist/llm-gateway-runtime/proxy-cloud-code.js +215 -0
  30. package/dist/llm-gateway-runtime/proxy-cloud-code.js.map +1 -0
  31. package/dist/llm-gateway-runtime/proxy-openai.d.ts.map +1 -1
  32. package/dist/llm-gateway-runtime/proxy-openai.js +0 -3
  33. package/dist/llm-gateway-runtime/proxy-openai.js.map +1 -1
  34. package/dist/llm-gateway-runtime/sticky.d.ts +15 -6
  35. package/dist/llm-gateway-runtime/sticky.d.ts.map +1 -1
  36. package/dist/llm-gateway-runtime/sticky.js +104 -29
  37. package/dist/llm-gateway-runtime/sticky.js.map +1 -1
  38. package/dist/llm-mesh.d.ts +31 -7
  39. package/dist/llm-mesh.d.ts.map +1 -1
  40. package/dist/llm-mesh.js +104 -73
  41. package/dist/llm-mesh.js.map +1 -1
  42. package/dist/migrate.d.ts.map +1 -1
  43. package/dist/migrate.js +4 -3
  44. package/dist/migrate.js.map +1 -1
  45. package/dist/native-terminal/client.d.ts +23 -0
  46. package/dist/native-terminal/client.d.ts.map +1 -0
  47. package/dist/native-terminal/client.js +203 -0
  48. package/dist/native-terminal/client.js.map +1 -0
  49. package/dist/native-terminal/host.d.ts +78 -0
  50. package/dist/native-terminal/host.d.ts.map +1 -0
  51. package/dist/native-terminal/host.js +275 -0
  52. package/dist/native-terminal/host.js.map +1 -0
  53. package/dist/native-terminal/process.d.ts +11 -0
  54. package/dist/native-terminal/process.d.ts.map +1 -0
  55. package/dist/native-terminal/process.js +137 -0
  56. package/dist/native-terminal/process.js.map +1 -0
  57. package/dist/native-terminal/protocol.d.ts +57 -0
  58. package/dist/native-terminal/protocol.d.ts.map +1 -0
  59. package/dist/native-terminal/protocol.js +102 -0
  60. package/dist/native-terminal/protocol.js.map +1 -0
  61. package/dist/native-terminal/replay-buffer.d.ts +26 -0
  62. package/dist/native-terminal/replay-buffer.d.ts.map +1 -0
  63. package/dist/native-terminal/replay-buffer.js +84 -0
  64. package/dist/native-terminal/replay-buffer.js.map +1 -0
  65. package/dist/native-terminal/server.d.ts +13 -0
  66. package/dist/native-terminal/server.d.ts.map +1 -0
  67. package/dist/native-terminal/server.js +555 -0
  68. package/dist/native-terminal/server.js.map +1 -0
  69. package/dist/native-terminal/socket-path.d.ts +8 -0
  70. package/dist/native-terminal/socket-path.d.ts.map +1 -0
  71. package/dist/native-terminal/socket-path.js +41 -0
  72. package/dist/native-terminal/socket-path.js.map +1 -0
  73. package/dist/native-terminal/supervisor.d.ts +26 -0
  74. package/dist/native-terminal/supervisor.d.ts.map +1 -0
  75. package/dist/native-terminal/supervisor.js +273 -0
  76. package/dist/native-terminal/supervisor.js.map +1 -0
  77. package/dist/pty.d.ts +1 -0
  78. package/dist/pty.d.ts.map +1 -1
  79. package/dist/pty.js +78 -2
  80. package/dist/pty.js.map +1 -1
  81. package/dist/restore.d.ts +15 -14
  82. package/dist/restore.d.ts.map +1 -1
  83. package/dist/restore.js +63 -44
  84. package/dist/restore.js.map +1 -1
  85. package/dist/tmux.js +1 -1
  86. package/dist/tmux.js.map +1 -1
  87. package/package.json +2 -1
  88. package/dist/llm-gateway-runtime/proxy-gemini.d.ts +0 -82
  89. package/dist/llm-gateway-runtime/proxy-gemini.d.ts.map +0 -1
  90. package/dist/llm-gateway-runtime/proxy-gemini.js +0 -523
  91. 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
@@ -1,4 +1,5 @@
1
1
  export type PtyHandle = {
2
+ readonly pid: number;
2
3
  readonly cols: number;
3
4
  readonly rows: number;
4
5
  write(data: string): void;
package/dist/pty.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pty.d.ts","sourceRoot":"","sources":["../src/pty.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG;IACtB,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,UA2C5B,CAAC"}
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 proc = pty.spawn(options.command, [...options.args], {
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
- proc.kill(signal);
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":"AAuBA,MAAM,CAAC,MAAM,cAAc,GAAe,CAAC,OAAO,EAAE,EAAE;IACpD,0EAA0E;IAC1E,uDAAuD;IAEvD,MAAM,GAAG,GAAmB,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE;QACzD,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,gBAAgB;KACvB,CAAC,CAAC;IACH,OAAO;QACL,IAAI,IAAI;YACN,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,IAAI;YACN,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;QACD,KAAK,CAAC,IAAI;YACR,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,IAAI;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,MAAM;YACT,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QACD,MAAM,CAAC,OAAO;YACZ,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1C,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;QACnD,CAAC;QACD,MAAM,CAAC,OAAO;YACZ,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBACzC,MAAM,OAAO,GAA0C;oBACrD,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBACzB,CAAC;gBACF,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;oBAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC9D,OAAO,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;QACnD,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"pty.js","sourceRoot":"","sources":["../src/pty.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,MAAM,yBAAyB,GAAG,SAAS,CAAC;AAC5C,MAAM,uBAAuB,GAAG,SAAS,CAAC;AAC1C,MAAM,yBAAyB,GAAG;IAChC,wBAAwB;IACxB,OAAO;IACP,sFAAsF;IACtF,oKAAoK;IACpK,gEAAgE;IAChE,4BAA4B;IAC5B,4BAA4B;IAC5B,8BAA8B;IAC9B,0BAA0B;IAC1B,mBAAmB;IACnB,cAAc;IACd,gBAAgB;IAChB,qBAAqB;IACrB,iBAAiB;IACjB,0DAA0D;IAC1D,MAAM;CACP,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,SAAS,gBAAgB;IACvB,KAAK,MAAM,SAAS,IAAI,CAAC,kBAAkB,EAAE,cAAc,CAAC,EAAE,CAAC;QAC7D,IAAI,CAAC;YACH,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YACxC,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,4EAA4E;QAC9E,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;AACJ,CAAC;AAED,SAAS,aAAa;IACpB,KAAK,MAAM,SAAS,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YACxC,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,4EAA4E;QAC9E,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CACb,qDAAqD,CACtD,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAkC;IAI7D,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/D,CAAC;IACD,OAAO;QACL,OAAO,EAAE,gBAAgB,EAAE;QAC3B,IAAI,EAAE;YACJ,aAAa;YACb,yBAAyB;YACzB,IAAI;YACJ,aAAa,EAAE;YACf,IAAI;YACJ,yBAAyB;YACzB,kBAAkB;YAClB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;YACnB,OAAO,CAAC,OAAO;YACf,GAAG,OAAO,CAAC,IAAI;SAChB;KACF,CAAC;AACJ,CAAC;AAwBD,MAAM,CAAC,MAAM,cAAc,GAAe,CAAC,OAAO,EAAE,EAAE;IACpD,0EAA0E;IAC1E,uDAAuD;IAEvD,MAAM,GAAG,GAAmB,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;QACpD,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,gBAAgB;KACvB,CAAC,CAAC;IACH,OAAO;QACL,IAAI,GAAG;YACL,OAAO,IAAI,CAAC,GAAG,CAAC;QAClB,CAAC;QACD,IAAI,IAAI;YACN,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,IAAI;YACN,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;QACD,KAAK,CAAC,IAAI;YACR,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,IAAI;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,MAAM;YACT,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC,IAAI,CACP,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,MAAM,CACxD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QACD,MAAM,CAAC,OAAO;YACZ,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1C,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;QACnD,CAAC;QACD,MAAM,CAAC,OAAO;YACZ,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBACzC,MAAM,OAAO,GAA0C;oBACrD,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBACzB,CAAC;gBACF,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;oBAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC9D,OAAO,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;QACnD,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
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: SCW via `attach --exec`; a LOCAL session that is already
181
- * live → `remote attach <slug>` (do NOT `remote run -r`, which the single-writer
182
- * guard refuses while that session still holds the conversation — this is what
183
- * broke a `restore` over still-detached sessions); otherwise create it via
184
- * `remote run … --resume …` (which attaches by default). `liveSlugs` = slugs of
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 (reattach=false): sessions already live in tmux are SKIPPED —
196
- * no new terminal tab is opened for them. The assumption is that if a tmux session
197
- * exists, the user either has a terminal showing it or intentionally left it running.
198
- * Use reattach=true (--reattach flag) to reopen a terminal tab for every session
199
- * regardless of its current tmux state.
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 the WHOLE restore, overriding every
221
- * session's pinned gatewayMode. Live sessions on the wrong posture are
222
- * relaunched (--replace) so the switch actually takes effect.
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;
@@ -1 +1 @@
1
- {"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../src/restore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../src/restore.ts"],"names":[],"mappings":"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"}