@made-by-moonlight/athene-plugin-runtime-process 0.9.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/LICENSE +22 -0
- package/dist/__tests__/index.test.d.ts +2 -0
- package/dist/__tests__/index.test.d.ts.map +1 -0
- package/dist/__tests__/index.test.js +674 -0
- package/dist/__tests__/index.test.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +489 -0
- package/dist/index.js.map +1 -0
- package/dist/pty-client.d.ts +55 -0
- package/dist/pty-client.d.ts.map +1 -0
- package/dist/pty-client.js +248 -0
- package/dist/pty-client.js.map +1 -0
- package/dist/pty-host.d.ts +51 -0
- package/dist/pty-host.d.ts.map +1 -0
- package/dist/pty-host.js +354 -0
- package/dist/pty-host.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/__tests__/index.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type Runtime } from "@made-by-moonlight/athene-core";
|
|
2
|
+
export declare const manifest: {
|
|
3
|
+
name: string;
|
|
4
|
+
slot: "runtime";
|
|
5
|
+
description: string;
|
|
6
|
+
version: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function create(): Runtime;
|
|
9
|
+
/**
|
|
10
|
+
* Sweep all registered Windows pty-hosts: send a graceful kill via the named
|
|
11
|
+
* pipe (so node-pty disposes its ConPTY handle and avoids the WER 0x800700e8
|
|
12
|
+
* dialog), wait briefly, then SIGKILL stragglers via the OS process tree.
|
|
13
|
+
*
|
|
14
|
+
* Invoked by `athene stop` on Windows so orphaned pty-hosts (whose session JSON
|
|
15
|
+
* was wiped or whose parent died ungracefully) still get cleaned up.
|
|
16
|
+
*
|
|
17
|
+
* Returns counts for diagnostics. No-op on non-Windows.
|
|
18
|
+
*/
|
|
19
|
+
export declare function sweepWindowsPtyHosts(): Promise<{
|
|
20
|
+
attempted: number;
|
|
21
|
+
gracefullyExited: number;
|
|
22
|
+
forceKilled: number;
|
|
23
|
+
failed: number;
|
|
24
|
+
}>;
|
|
25
|
+
declare const _default: {
|
|
26
|
+
manifest: {
|
|
27
|
+
name: string;
|
|
28
|
+
slot: "runtime";
|
|
29
|
+
description: string;
|
|
30
|
+
version: string;
|
|
31
|
+
};
|
|
32
|
+
create: typeof create;
|
|
33
|
+
};
|
|
34
|
+
export default _default;
|
|
35
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAOL,KAAK,OAAO,EAKb,MAAM,gCAAgC,CAAC;AASxC,eAAO,MAAM,QAAQ;;;;;CAKpB,CAAC;AAmBF,wBAAgB,MAAM,IAAI,OAAO,CA0bhC;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAkDD;;;;;;;;;;AAED,wBAAoE"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,489 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { dirname, resolve } from "node:path";
|
|
4
|
+
import { getShell, isWindows, killProcessTree, registerWindowsPtyHost, unregisterWindowsPtyHost, } from "@made-by-moonlight/athene-core";
|
|
5
|
+
import { getPipePath, ptyHostSendMessage, ptyHostGetOutput, ptyHostIsAlive, ptyHostKill, } from "./pty-client.js";
|
|
6
|
+
export const manifest = {
|
|
7
|
+
name: "process",
|
|
8
|
+
slot: "runtime",
|
|
9
|
+
description: "Runtime plugin: child processes",
|
|
10
|
+
version: "0.1.0",
|
|
11
|
+
};
|
|
12
|
+
/** Only allow safe characters in session IDs */
|
|
13
|
+
const SAFE_SESSION_ID = /^[a-zA-Z0-9_-]+$/;
|
|
14
|
+
function assertValidSessionId(id) {
|
|
15
|
+
if (!SAFE_SESSION_ID.test(id)) {
|
|
16
|
+
throw new Error(`Invalid session ID "${id}": must match ${SAFE_SESSION_ID}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const MAX_OUTPUT_LINES = 1000;
|
|
20
|
+
export function create() {
|
|
21
|
+
// Per-instance process map — each create() call gets its own isolated state
|
|
22
|
+
const processes = new Map();
|
|
23
|
+
return {
|
|
24
|
+
name: "process",
|
|
25
|
+
async create(config) {
|
|
26
|
+
assertValidSessionId(config.sessionId);
|
|
27
|
+
const handleId = config.sessionId;
|
|
28
|
+
// Prevent duplicate session IDs — check and reserve atomically (no await
|
|
29
|
+
// between check and set) so concurrent create() calls can't both pass.
|
|
30
|
+
if (processes.has(handleId)) {
|
|
31
|
+
throw new Error(`Session "${handleId}" already exists — destroy it before re-creating`);
|
|
32
|
+
}
|
|
33
|
+
// Reserve the slot synchronously for both platforms so duplicate-create,
|
|
34
|
+
// getMetrics, and getAttachInfo see the entry on Windows too. Unix used
|
|
35
|
+
// to create this further down; we hoist it so the Windows branch shares
|
|
36
|
+
// the same bookkeeping.
|
|
37
|
+
const entry = {
|
|
38
|
+
process: null,
|
|
39
|
+
outputBuffer: [],
|
|
40
|
+
createdAt: Date.now(),
|
|
41
|
+
};
|
|
42
|
+
processes.set(handleId, entry);
|
|
43
|
+
// --- Windows: spawn via PTY host (ConPTY) ---
|
|
44
|
+
if (isWindows()) {
|
|
45
|
+
const pipePath = getPipePath(handleId);
|
|
46
|
+
const shellInfo = getShell();
|
|
47
|
+
const ptyHostScript = resolve(dirname(fileURLToPath(import.meta.url)), "pty-host.js");
|
|
48
|
+
const ptyEnv = { ...process.env, ...config.environment };
|
|
49
|
+
try {
|
|
50
|
+
const ptyChild = spawn(process.execPath, [
|
|
51
|
+
ptyHostScript,
|
|
52
|
+
handleId,
|
|
53
|
+
pipePath,
|
|
54
|
+
config.workspacePath,
|
|
55
|
+
shellInfo.cmd,
|
|
56
|
+
...shellInfo.args(config.launchCommand),
|
|
57
|
+
], {
|
|
58
|
+
cwd: config.workspacePath,
|
|
59
|
+
env: ptyEnv,
|
|
60
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
61
|
+
detached: true, // Must survive parent exit (like tmux daemon)
|
|
62
|
+
// Suppress the console window node-pty's conpty helper would
|
|
63
|
+
// otherwise flash on screen when a ConPTY child fails. Without
|
|
64
|
+
// this, errors from node-pty's internal conpty_console_list_agent
|
|
65
|
+
// surface as visible Windows error dialogs (0x800700e8).
|
|
66
|
+
windowsHide: true,
|
|
67
|
+
});
|
|
68
|
+
// Wait for PTY host to signal readiness (writes "READY:<pid>\n" to stdout)
|
|
69
|
+
const ptyPid = await new Promise((resolveReady, reject) => {
|
|
70
|
+
const timeout = setTimeout(() => {
|
|
71
|
+
ptyChild.kill();
|
|
72
|
+
reject(new Error("PTY host startup timeout (10s)"));
|
|
73
|
+
}, 10_000);
|
|
74
|
+
let data = "";
|
|
75
|
+
ptyChild.stdout?.on("data", (chunk) => {
|
|
76
|
+
data += chunk.toString();
|
|
77
|
+
const match = data.match(/READY:(\d+)/);
|
|
78
|
+
if (match) {
|
|
79
|
+
clearTimeout(timeout);
|
|
80
|
+
resolveReady(parseInt(match[1], 10));
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
ptyChild.stderr?.on("data", (chunk) => {
|
|
84
|
+
data += chunk.toString();
|
|
85
|
+
});
|
|
86
|
+
ptyChild.on("error", (err) => {
|
|
87
|
+
clearTimeout(timeout);
|
|
88
|
+
reject(new Error(`PTY host spawn error: ${err.message}`));
|
|
89
|
+
});
|
|
90
|
+
ptyChild.on("exit", (code) => {
|
|
91
|
+
clearTimeout(timeout);
|
|
92
|
+
reject(new Error(`PTY host exited during startup with code ${code}: ${data}`));
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
// Unref so this process can exit while pty-host stays alive
|
|
96
|
+
ptyChild.unref();
|
|
97
|
+
ptyChild.stdout?.destroy();
|
|
98
|
+
ptyChild.stderr?.destroy();
|
|
99
|
+
// Sideband registration so `athene stop` can find and graceful-kill this
|
|
100
|
+
// pty-host even if its session JSON is later wiped. Without this,
|
|
101
|
+
// `detached: true` puts pty-host in its own console group, escaping
|
|
102
|
+
// `taskkill /T` on the parent process. See windows-pty-registry.ts.
|
|
103
|
+
if (typeof ptyChild.pid === "number") {
|
|
104
|
+
try {
|
|
105
|
+
registerWindowsPtyHost({
|
|
106
|
+
sessionId: handleId,
|
|
107
|
+
ptyHostPid: ptyChild.pid,
|
|
108
|
+
pipePath,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
/* registry is best-effort; spawn must succeed regardless */
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
id: handleId,
|
|
117
|
+
runtimeName: "process",
|
|
118
|
+
data: {
|
|
119
|
+
pid: ptyPid,
|
|
120
|
+
ptyHostPid: ptyChild.pid,
|
|
121
|
+
pipePath,
|
|
122
|
+
createdAt: entry.createdAt,
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
processes.delete(handleId);
|
|
128
|
+
throw err;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// --- Unix: existing piped stdio path (unchanged below) ---
|
|
132
|
+
// Use explicit shell args instead of spawn's shell: option.
|
|
133
|
+
// When shell is a string, Node.js internally passes -c which is ambiguous
|
|
134
|
+
// on PowerShell 5.1 (-c matches both -Command and -ConfigurationName).
|
|
135
|
+
// getShell().args() returns the correct flag (-Command for pwsh/powershell.exe, /c for cmd).
|
|
136
|
+
// launchCommand comes from trusted YAML config and may contain pipes and redirects.
|
|
137
|
+
const shellInfo = getShell();
|
|
138
|
+
let child;
|
|
139
|
+
try {
|
|
140
|
+
child = spawn(shellInfo.cmd, shellInfo.args(config.launchCommand), {
|
|
141
|
+
cwd: config.workspacePath,
|
|
142
|
+
env: { ...process.env, ...config.environment },
|
|
143
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
144
|
+
detached: !isWindows(), // Own process group so destroy() can kill child commands (Unix only)
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
processes.delete(handleId);
|
|
149
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
150
|
+
throw new Error(`Failed to spawn process for session ${handleId}: ${msg}`, { cause: err });
|
|
151
|
+
}
|
|
152
|
+
entry.process = child;
|
|
153
|
+
// Attach exit handler immediately — before any await — so fast-exiting
|
|
154
|
+
// processes can't slip through the gap.
|
|
155
|
+
child.once("exit", () => {
|
|
156
|
+
entry.outputBuffer.push(`[process exited with code ${child.exitCode}]`);
|
|
157
|
+
processes.delete(handleId);
|
|
158
|
+
});
|
|
159
|
+
// Handle late errors (process crashes after spawn)
|
|
160
|
+
child.on("error", () => {
|
|
161
|
+
// Already captured via exit handler — prevent unhandled error crash
|
|
162
|
+
});
|
|
163
|
+
// Wait for spawn success or error
|
|
164
|
+
await new Promise((resolve, reject) => {
|
|
165
|
+
const onError = (err) => {
|
|
166
|
+
child.removeListener("spawn", onSpawn);
|
|
167
|
+
processes.delete(handleId);
|
|
168
|
+
reject(new Error(`Failed to spawn process for session ${handleId}: ${err.message}`));
|
|
169
|
+
};
|
|
170
|
+
const onSpawn = () => {
|
|
171
|
+
child.removeListener("error", onError);
|
|
172
|
+
resolve();
|
|
173
|
+
};
|
|
174
|
+
child.once("error", onError);
|
|
175
|
+
child.once("spawn", onSpawn);
|
|
176
|
+
});
|
|
177
|
+
// Capture stdout and stderr into rolling buffer.
|
|
178
|
+
// Each stream gets its own partial-line buffer so interleaved chunks
|
|
179
|
+
// from different streams don't corrupt each other.
|
|
180
|
+
function makeAppendOutput() {
|
|
181
|
+
let partial = "";
|
|
182
|
+
return (data) => {
|
|
183
|
+
const text = partial + data.toString("utf-8");
|
|
184
|
+
const lines = text.split("\n");
|
|
185
|
+
// Last element is either "" (if text ended with \n) or a partial line
|
|
186
|
+
partial = lines.pop();
|
|
187
|
+
for (const line of lines) {
|
|
188
|
+
entry.outputBuffer.push(line);
|
|
189
|
+
}
|
|
190
|
+
// Trim buffer to max size
|
|
191
|
+
if (entry.outputBuffer.length > MAX_OUTPUT_LINES) {
|
|
192
|
+
entry.outputBuffer.splice(0, entry.outputBuffer.length - MAX_OUTPUT_LINES);
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
const appendStdout = makeAppendOutput();
|
|
197
|
+
const appendStderr = makeAppendOutput();
|
|
198
|
+
child.stdout?.on("data", appendStdout);
|
|
199
|
+
child.stderr?.on("data", appendStderr);
|
|
200
|
+
// Flush any trailing partial lines when the process exits
|
|
201
|
+
child.once("exit", () => {
|
|
202
|
+
// Trigger flush by sending a final newline through each handler
|
|
203
|
+
appendStdout(Buffer.from("\n"));
|
|
204
|
+
appendStderr(Buffer.from("\n"));
|
|
205
|
+
});
|
|
206
|
+
return {
|
|
207
|
+
id: handleId,
|
|
208
|
+
runtimeName: "process",
|
|
209
|
+
data: {
|
|
210
|
+
pid: child.pid,
|
|
211
|
+
createdAt: entry.createdAt,
|
|
212
|
+
},
|
|
213
|
+
};
|
|
214
|
+
},
|
|
215
|
+
async destroy(handle) {
|
|
216
|
+
// PTY host path (Windows) — kill via named pipe + process tree
|
|
217
|
+
const pipePath = handle.data?.pipePath;
|
|
218
|
+
if (pipePath) {
|
|
219
|
+
// Ask the pty-host to dispose its ConPTY handle and exit gracefully.
|
|
220
|
+
await ptyHostKill(pipePath);
|
|
221
|
+
const ptyHostPid = handle.data?.ptyHostPid;
|
|
222
|
+
if (typeof ptyHostPid === "number" && ptyHostPid > 0) {
|
|
223
|
+
// Give the host ~500ms to shut down cleanly so node-pty can release
|
|
224
|
+
// the ConPTY. SIGKILLing immediately orphans the
|
|
225
|
+
// conpty_console_list_agent helper and triggers Windows Error
|
|
226
|
+
// Reporting dialogs (0x800700e8).
|
|
227
|
+
const deadline = Date.now() + 500;
|
|
228
|
+
while (Date.now() < deadline) {
|
|
229
|
+
try {
|
|
230
|
+
process.kill(ptyHostPid, 0); // probe
|
|
231
|
+
}
|
|
232
|
+
catch (err) {
|
|
233
|
+
// EPERM: the process exists but we lack permission to signal it
|
|
234
|
+
// (cross-context on Windows). It is NOT gone — fall through to
|
|
235
|
+
// killProcessTree so the orphan is reaped. Any other error code
|
|
236
|
+
// (typically ESRCH) means the process is gone — clean exit.
|
|
237
|
+
if (err.code === "EPERM")
|
|
238
|
+
break;
|
|
239
|
+
processes.delete(handle.id);
|
|
240
|
+
try {
|
|
241
|
+
unregisterWindowsPtyHost(handle.id);
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
/* best effort */
|
|
245
|
+
}
|
|
246
|
+
return; // already gone — clean exit
|
|
247
|
+
}
|
|
248
|
+
await new Promise((r) => setTimeout(r, 25));
|
|
249
|
+
}
|
|
250
|
+
await killProcessTree(ptyHostPid, "SIGKILL");
|
|
251
|
+
}
|
|
252
|
+
processes.delete(handle.id);
|
|
253
|
+
try {
|
|
254
|
+
unregisterWindowsPtyHost(handle.id);
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
/* best effort */
|
|
258
|
+
}
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
const entry = processes.get(handle.id);
|
|
262
|
+
if (!entry) {
|
|
263
|
+
// Process was spawned by a different Node.js process (e.g. athene spawn).
|
|
264
|
+
// The in-memory Map doesn't have it, but handle.data.pid has the OS PID.
|
|
265
|
+
const pid = handle.data?.pid;
|
|
266
|
+
if (typeof pid === "number" && pid > 0) {
|
|
267
|
+
await killProcessTree(pid, "SIGKILL");
|
|
268
|
+
}
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
const child = entry.process;
|
|
272
|
+
if (!child) {
|
|
273
|
+
// Process hasn't spawned yet — just remove the reservation
|
|
274
|
+
processes.delete(handle.id);
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
if (child.exitCode === null && child.signalCode === null) {
|
|
278
|
+
const pid = child.pid;
|
|
279
|
+
// Register the exit listener BEFORE sending the kill signal to avoid
|
|
280
|
+
// the race where the process exits during the async killProcessTree
|
|
281
|
+
// call and the "exit" event fires before the listener is attached,
|
|
282
|
+
// causing the full 5-second timeout to always elapse on Windows.
|
|
283
|
+
const waitForExit = new Promise((resolve) => {
|
|
284
|
+
const timeout = setTimeout(() => {
|
|
285
|
+
Promise.resolve(child.exitCode === null && child.signalCode === null
|
|
286
|
+
? pid
|
|
287
|
+
? killProcessTree(pid, "SIGKILL")
|
|
288
|
+
: void child.kill("SIGKILL")
|
|
289
|
+
: undefined)
|
|
290
|
+
.catch(() => { })
|
|
291
|
+
.finally(resolve);
|
|
292
|
+
}, 5000);
|
|
293
|
+
child.once("exit", () => {
|
|
294
|
+
clearTimeout(timeout);
|
|
295
|
+
resolve();
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
// Send SIGTERM after the listener is registered so we cannot miss
|
|
299
|
+
// the exit event regardless of how quickly the process terminates.
|
|
300
|
+
if (pid) {
|
|
301
|
+
await killProcessTree(pid, "SIGTERM");
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
child.kill("SIGTERM");
|
|
305
|
+
}
|
|
306
|
+
await waitForExit;
|
|
307
|
+
}
|
|
308
|
+
processes.delete(handle.id);
|
|
309
|
+
},
|
|
310
|
+
async sendMessage(handle, message) {
|
|
311
|
+
// PTY host path (Windows)
|
|
312
|
+
const pipePath = handle.data?.pipePath;
|
|
313
|
+
if (pipePath) {
|
|
314
|
+
await ptyHostSendMessage(pipePath, message);
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
const entry = processes.get(handle.id);
|
|
318
|
+
if (!entry) {
|
|
319
|
+
throw new Error(`No process found for session ${handle.id}`);
|
|
320
|
+
}
|
|
321
|
+
const child = entry.process;
|
|
322
|
+
if (!child) {
|
|
323
|
+
throw new Error(`Process for session ${handle.id} is still spawning`);
|
|
324
|
+
}
|
|
325
|
+
const stdin = child.stdin;
|
|
326
|
+
if (!stdin || !stdin.writable) {
|
|
327
|
+
throw new Error(`stdin not writable for session ${handle.id}`);
|
|
328
|
+
}
|
|
329
|
+
// Wrap write in a promise with done-flag to prevent double resolve/reject
|
|
330
|
+
await new Promise((resolve, reject) => {
|
|
331
|
+
let done = false;
|
|
332
|
+
const finish = (err) => {
|
|
333
|
+
if (done)
|
|
334
|
+
return;
|
|
335
|
+
done = true;
|
|
336
|
+
cleanup();
|
|
337
|
+
if (err)
|
|
338
|
+
reject(err);
|
|
339
|
+
else
|
|
340
|
+
resolve();
|
|
341
|
+
};
|
|
342
|
+
const onError = (err) => finish(err);
|
|
343
|
+
const onDrain = () => {
|
|
344
|
+
// Drain means backpressure cleared — still wait for write callback
|
|
345
|
+
};
|
|
346
|
+
const cleanup = () => {
|
|
347
|
+
stdin.removeListener("error", onError);
|
|
348
|
+
stdin.removeListener("drain", onDrain);
|
|
349
|
+
};
|
|
350
|
+
stdin.on("error", onError);
|
|
351
|
+
stdin.on("drain", onDrain);
|
|
352
|
+
stdin.write(message + "\n", (err) => finish(err ?? null));
|
|
353
|
+
});
|
|
354
|
+
},
|
|
355
|
+
async getOutput(handle, lines = 50) {
|
|
356
|
+
const pipePath = handle.data?.pipePath;
|
|
357
|
+
if (pipePath) {
|
|
358
|
+
return ptyHostGetOutput(pipePath, lines);
|
|
359
|
+
}
|
|
360
|
+
const entry = processes.get(handle.id);
|
|
361
|
+
if (!entry)
|
|
362
|
+
return "";
|
|
363
|
+
const buffer = entry.outputBuffer;
|
|
364
|
+
const start = Math.max(0, buffer.length - lines);
|
|
365
|
+
return buffer.slice(start).join("\n");
|
|
366
|
+
},
|
|
367
|
+
async isAlive(handle) {
|
|
368
|
+
const pipePath = handle.data?.pipePath;
|
|
369
|
+
if (pipePath) {
|
|
370
|
+
return ptyHostIsAlive(pipePath);
|
|
371
|
+
}
|
|
372
|
+
const entry = processes.get(handle.id);
|
|
373
|
+
if (!entry || !entry.process) {
|
|
374
|
+
// Not in our in-memory Map — check via PID signal-0
|
|
375
|
+
const pid = handle.data?.pid;
|
|
376
|
+
if (typeof pid === "number" && pid > 0) {
|
|
377
|
+
try {
|
|
378
|
+
process.kill(pid, 0);
|
|
379
|
+
return true;
|
|
380
|
+
}
|
|
381
|
+
catch (err) {
|
|
382
|
+
// EPERM means process exists but we don't have permission — still alive
|
|
383
|
+
if (err.code === "EPERM")
|
|
384
|
+
return true;
|
|
385
|
+
return false;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
return false;
|
|
389
|
+
}
|
|
390
|
+
return entry.process.exitCode === null && entry.process.signalCode === null;
|
|
391
|
+
},
|
|
392
|
+
async getMetrics(handle) {
|
|
393
|
+
const entry = processes.get(handle.id);
|
|
394
|
+
const createdAt = entry?.createdAt ?? Date.now();
|
|
395
|
+
return {
|
|
396
|
+
uptimeMs: Date.now() - createdAt,
|
|
397
|
+
};
|
|
398
|
+
},
|
|
399
|
+
async getAttachInfo(handle) {
|
|
400
|
+
const pipePath = handle.data?.pipePath;
|
|
401
|
+
if (pipePath) {
|
|
402
|
+
const alive = await ptyHostIsAlive(pipePath);
|
|
403
|
+
if (!alive) {
|
|
404
|
+
return { type: "process", target: "", command: `# process for session ${handle.id} is no longer running` };
|
|
405
|
+
}
|
|
406
|
+
return { type: "process", target: String(handle.data?.pid ?? ""), command: pipePath };
|
|
407
|
+
}
|
|
408
|
+
const entry = processes.get(handle.id);
|
|
409
|
+
if (!entry ||
|
|
410
|
+
!entry.process ||
|
|
411
|
+
entry.process.exitCode !== null ||
|
|
412
|
+
entry.process.signalCode !== null) {
|
|
413
|
+
return {
|
|
414
|
+
type: "process",
|
|
415
|
+
target: "",
|
|
416
|
+
command: `# process for session ${handle.id} is no longer running`,
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
return {
|
|
420
|
+
type: "process",
|
|
421
|
+
target: String(entry.process.pid),
|
|
422
|
+
};
|
|
423
|
+
},
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Sweep all registered Windows pty-hosts: send a graceful kill via the named
|
|
428
|
+
* pipe (so node-pty disposes its ConPTY handle and avoids the WER 0x800700e8
|
|
429
|
+
* dialog), wait briefly, then SIGKILL stragglers via the OS process tree.
|
|
430
|
+
*
|
|
431
|
+
* Invoked by `athene stop` on Windows so orphaned pty-hosts (whose session JSON
|
|
432
|
+
* was wiped or whose parent died ungracefully) still get cleaned up.
|
|
433
|
+
*
|
|
434
|
+
* Returns counts for diagnostics. No-op on non-Windows.
|
|
435
|
+
*/
|
|
436
|
+
export async function sweepWindowsPtyHosts() {
|
|
437
|
+
if (!isWindows()) {
|
|
438
|
+
return { attempted: 0, gracefullyExited: 0, forceKilled: 0, failed: 0 };
|
|
439
|
+
}
|
|
440
|
+
const { getWindowsPtyHosts, unregisterWindowsPtyHost } = await import("@made-by-moonlight/athene-core");
|
|
441
|
+
const entries = getWindowsPtyHosts();
|
|
442
|
+
let gracefullyExited = 0;
|
|
443
|
+
let forceKilled = 0;
|
|
444
|
+
let failed = 0;
|
|
445
|
+
for (const entry of entries) {
|
|
446
|
+
try {
|
|
447
|
+
// Step 1: graceful kill via the existing pipe protocol.
|
|
448
|
+
await ptyHostKill(entry.pipePath);
|
|
449
|
+
// Step 2: poll up to 500ms for the host to exit.
|
|
450
|
+
const deadline = Date.now() + 500;
|
|
451
|
+
let exited = false;
|
|
452
|
+
while (Date.now() < deadline) {
|
|
453
|
+
try {
|
|
454
|
+
process.kill(entry.ptyHostPid, 0);
|
|
455
|
+
}
|
|
456
|
+
catch (err) {
|
|
457
|
+
// EPERM: process exists but we can't signal it (cross-context on
|
|
458
|
+
// Windows). It is NOT gone — fall through to force-kill. Any other
|
|
459
|
+
// code (typically ESRCH) means it has already exited.
|
|
460
|
+
if (err.code !== "EPERM") {
|
|
461
|
+
exited = true;
|
|
462
|
+
}
|
|
463
|
+
break;
|
|
464
|
+
}
|
|
465
|
+
await new Promise((r) => setTimeout(r, 25));
|
|
466
|
+
}
|
|
467
|
+
if (exited) {
|
|
468
|
+
gracefullyExited++;
|
|
469
|
+
}
|
|
470
|
+
else {
|
|
471
|
+
// Step 3: force-kill stragglers.
|
|
472
|
+
await killProcessTree(entry.ptyHostPid, "SIGKILL");
|
|
473
|
+
forceKilled++;
|
|
474
|
+
}
|
|
475
|
+
try {
|
|
476
|
+
unregisterWindowsPtyHost(entry.sessionId);
|
|
477
|
+
}
|
|
478
|
+
catch {
|
|
479
|
+
/* best effort */
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
catch {
|
|
483
|
+
failed++;
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
return { attempted: entries.length, gracefullyExited, forceKilled, failed };
|
|
487
|
+
}
|
|
488
|
+
export default { manifest, create };
|
|
489
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|