copilot-hub 0.1.30 → 0.1.32

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "copilot-hub",
3
- "version": "0.1.30",
3
+ "version": "0.1.32",
4
4
  "description": "Copilot Hub CLI and runtime bundle",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -189,6 +189,7 @@ export declare class BotRuntime {
189
189
  telegramError: string | null;
190
190
  webPublicBaseUrl: string;
191
191
  initPromise: Promise<void> | null;
192
+ providerRefreshPromise: Promise<void> | null;
192
193
  constructor({ botConfig, providerDefaults, turnActivityTimeoutMs, maxMessages, kernelControl, channelAdapterFactory, }: {
193
194
  botConfig: RuntimeBotConfigInput;
194
195
  providerDefaults: ProviderDefaults;
@@ -26,6 +26,7 @@ export class BotRuntime {
26
26
  telegramError;
27
27
  webPublicBaseUrl;
28
28
  initPromise;
29
+ providerRefreshPromise;
29
30
  constructor({ botConfig, providerDefaults, turnActivityTimeoutMs, maxMessages, kernelControl = null, channelAdapterFactory = null, }) {
30
31
  this.config = normalizeRuntimeConfig(botConfig);
31
32
  this.providerDefaults = {
@@ -57,6 +58,7 @@ export class BotRuntime {
57
58
  this.telegramError = null;
58
59
  this.webPublicBaseUrl = "http://127.0.0.1:8787";
59
60
  this.initPromise = null;
61
+ this.providerRefreshPromise = null;
60
62
  }
61
63
  get id() {
62
64
  return this.config.id;
@@ -273,7 +275,17 @@ export class BotRuntime {
273
275
  metadata,
274
276
  ...(Array.isArray(inputItemsRaw) ? { inputItems: inputItemsRaw } : {}),
275
277
  };
276
- const result = (await this.#requireEngine().sendTurn(sendPayload));
278
+ let result = null;
279
+ try {
280
+ result = (await this.#requireEngine().sendTurn(sendPayload));
281
+ }
282
+ catch (error) {
283
+ await this.#recoverProviderSessionAfterTurnError(error);
284
+ throw error;
285
+ }
286
+ if (!result) {
287
+ throw new Error("Conversation engine returned no turn result.");
288
+ }
277
289
  await capabilityManager.runHook("onTurnResult", {
278
290
  threadId: sendPayload.threadId,
279
291
  prompt: sendPayload.prompt,
@@ -458,26 +470,66 @@ export class BotRuntime {
458
470
  onApprovalRequested: (approval) => this.onApprovalRequested(approval),
459
471
  });
460
472
  }
473
+ async #recoverProviderSessionAfterTurnError(error) {
474
+ if (!shouldRecoverProviderSessionAfterTurnError(error)) {
475
+ return;
476
+ }
477
+ try {
478
+ await this.#recreateProviderSession();
479
+ }
480
+ catch (refreshError) {
481
+ console.error(`[${this.id}] provider session recovery failed after turn error: ${sanitizeError(refreshError)}`);
482
+ }
483
+ }
461
484
  async #recreateProviderSession() {
462
- await this.ensureInitialized();
463
- const previousEngine = this.engine;
464
- const previousProvider = this.provider;
465
- this.engine = null;
466
- this.provider = null;
467
- if (previousEngine) {
468
- await previousEngine.shutdown();
485
+ if (this.providerRefreshPromise) {
486
+ await this.providerRefreshPromise;
487
+ return;
469
488
  }
470
- else if (previousProvider) {
471
- await previousProvider.shutdown();
489
+ this.providerRefreshPromise = (async () => {
490
+ await this.ensureInitialized();
491
+ const previousEngine = this.engine;
492
+ const previousProvider = this.provider;
493
+ this.engine = null;
494
+ this.provider = null;
495
+ if (previousEngine) {
496
+ await previousEngine.shutdown();
497
+ }
498
+ else if (previousProvider) {
499
+ await previousProvider.shutdown();
500
+ }
501
+ this.provider = this.#createProvider();
502
+ this.engine = this.#createConversationEngine(this.provider);
503
+ await this.#requireStore().ensureThread(this.webThreadId);
504
+ })();
505
+ try {
506
+ await this.providerRefreshPromise;
507
+ }
508
+ finally {
509
+ this.providerRefreshPromise = null;
472
510
  }
473
- this.provider = this.#createProvider();
474
- this.engine = this.#createConversationEngine(this.provider);
475
- await this.#requireStore().ensureThread(this.webThreadId);
476
511
  }
477
512
  }
478
513
  function asRecord(value) {
479
514
  return value && typeof value === "object" ? value : {};
480
515
  }
516
+ function sanitizeError(error) {
517
+ const raw = error instanceof Error ? error.message : String(error);
518
+ return raw.split(/\r?\n/).slice(0, 12).join("\n");
519
+ }
520
+ function shouldRecoverProviderSessionAfterTurnError(error) {
521
+ const normalized = sanitizeError(error).trim().toLowerCase();
522
+ if (!normalized) {
523
+ return false;
524
+ }
525
+ return (normalized.includes("inactive for") ||
526
+ normalized.includes("process stopped while waiting for turn completion") ||
527
+ normalized.includes("codex app-server process stopped") ||
528
+ normalized.includes("codex app-server exited with code") ||
529
+ normalized.includes("request 'turn/start' timed out") ||
530
+ normalized.includes("request 'thread/resume' timed out") ||
531
+ normalized.includes("request 'thread/start' timed out"));
532
+ }
481
533
  function normalizeRuntimeConfig(botConfig) {
482
534
  const id = String(botConfig?.id ?? "").trim() || "bot_default";
483
535
  const name = String(botConfig?.name ?? id).trim() || id;
@@ -1 +1 @@
1
- {"version":3,"file":"bot-runtime.js","sourceRoot":"","sources":["../src/bot-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bot-runtime.js","sourceRoot":"","sources":["../src/bot-runtime.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
+ import { normalizeTimeout } from "./codex-app-utils.js";
1
2
  import { normalizeThreadId } from "./thread-id.js";
2
3
  const DEFAULT_MAX_MESSAGES = 200;
4
+ const DEFAULT_TURN_ACTIVITY_TIMEOUT_MS = 3_600_000;
3
5
  export class ConversationEngine {
4
6
  store;
5
7
  assistantProvider;
@@ -15,7 +17,7 @@ export class ConversationEngine {
15
17
  this.store = store;
16
18
  this.assistantProvider = assistantProvider;
17
19
  this.projectRoot = projectRoot;
18
- this.turnActivityTimeoutMs = Number.parseInt(String(turnActivityTimeoutMs), 10) || 3_600_000;
20
+ this.turnActivityTimeoutMs = normalizeTimeout(turnActivityTimeoutMs, DEFAULT_TURN_ACTIVITY_TIMEOUT_MS);
19
21
  this.maxMessages = maxMessages;
20
22
  this.queueByThread = new Map();
21
23
  this.threadByProviderSession = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"bridge-service.js","sourceRoot":"","sources":["../src/bridge-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge-service.js","sourceRoot":"","sources":["../src/bridge-service.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import { createInterface } from "node:readline/promises";
7
7
  import { fileURLToPath } from "node:url";
8
8
  import { codexInstallPackageSpec } from "./codex-version.mjs";
9
9
  import { initializeCopilotHubLayout, resolveCopilotHubLayout } from "./install-layout.mjs";
10
+ import { isManagedProcessRunning, isProcessRunning, normalizePid } from "./process-identity.mjs";
10
11
  import { buildCodexCompatibilityError, probeCodexVersion, resolveCodexBinForStart, resolveCompatibleInstalledCodexBin, } from "./codex-runtime.mjs";
11
12
  const __filename = fileURLToPath(import.meta.url);
12
13
  const __dirname = path.dirname(__filename);
@@ -124,6 +125,8 @@ async function runDaemonLoop() {
124
125
  pid: process.pid,
125
126
  startedAt: new Date().toISOString(),
126
127
  command: `${nodeBin} ${daemonScriptPath} run`,
128
+ executablePath: nodeBin,
129
+ entryScript: daemonScriptPath,
127
130
  });
128
131
  const state = { stopping: false, shuttingDown: false };
129
132
  setupSignalHandlers(state);
@@ -191,8 +194,9 @@ async function stopDaemonProcess() {
191
194
  console.log("[daemon] not running.");
192
195
  return;
193
196
  }
197
+ const state = readDaemonState();
194
198
  await terminateProcess(pid);
195
- if (isProcessRunning(pid)) {
199
+ if (isManagedProcessRunning(state)) {
196
200
  throw new Error(`Daemon did not stop cleanly (pid ${pid}).`);
197
201
  }
198
202
  removeDaemonState();
@@ -278,7 +282,7 @@ function getRunningDaemonPid() {
278
282
  if (pid <= 0) {
279
283
  return 0;
280
284
  }
281
- return isProcessRunning(pid) ? pid : 0;
285
+ return isManagedProcessRunning(state) ? pid : 0;
282
286
  }
283
287
  function readDaemonState() {
284
288
  if (!fs.existsSync(daemonStatePath)) {
@@ -301,28 +305,6 @@ function removeDaemonState() {
301
305
  }
302
306
  fs.rmSync(daemonStatePath, { force: true });
303
307
  }
304
- function normalizePid(value) {
305
- const pid = Number.parseInt(String(value ?? ""), 10);
306
- if (!Number.isFinite(pid) || pid <= 0) {
307
- return 0;
308
- }
309
- return pid;
310
- }
311
- function isProcessRunning(pid) {
312
- if (!Number.isInteger(pid) || pid <= 0) {
313
- return false;
314
- }
315
- try {
316
- process.kill(pid, 0);
317
- return true;
318
- }
319
- catch (error) {
320
- if (error && typeof error === "object" && "code" in error && error.code === "EPERM") {
321
- return true;
322
- }
323
- return false;
324
- }
325
- }
326
308
  async function terminateProcess(pid) {
327
309
  if (process.platform === "win32") {
328
310
  await killTreeWindows(pid);
@@ -0,0 +1,226 @@
1
+ import path from "node:path";
2
+ import process from "node:process";
3
+ import { spawnSync } from "node:child_process";
4
+ const PROCESS_START_TOLERANCE_MS = 120_000;
5
+ export function normalizePid(value) {
6
+ const pid = Number.parseInt(String(value ?? ""), 10);
7
+ if (!Number.isFinite(pid) || pid <= 0) {
8
+ return 0;
9
+ }
10
+ return pid;
11
+ }
12
+ export function isManagedProcessRunning(state, platform = process.platform) {
13
+ const pid = normalizePid(state?.pid);
14
+ if (pid <= 0) {
15
+ return false;
16
+ }
17
+ if (!isProcessRunning(pid)) {
18
+ return false;
19
+ }
20
+ const identity = inspectProcess(pid, platform);
21
+ if (!identity) {
22
+ return true;
23
+ }
24
+ return matchesManagedProcessState(state, identity, platform);
25
+ }
26
+ export function matchesManagedProcessState(state, identity, platform = process.platform) {
27
+ const pid = normalizePid(state?.pid);
28
+ if (pid <= 0 || !identity) {
29
+ return false;
30
+ }
31
+ if (normalizePid(identity.pid) !== pid) {
32
+ return false;
33
+ }
34
+ const checks = [];
35
+ const expectedScript = normalizeCommandToken(state?.entryScript ?? extractScriptToken(state?.command), platform);
36
+ if (expectedScript) {
37
+ checks.push(commandLineContains(identity.commandLine, expectedScript, platform));
38
+ }
39
+ const expectedExecutablePath = normalizeCommandToken(state?.executablePath ?? extractExecutableToken(state?.command), platform);
40
+ if (expectedExecutablePath) {
41
+ const actualExecutablePath = normalizeCommandToken(identity.executablePath, platform);
42
+ if (actualExecutablePath) {
43
+ checks.push(actualExecutablePath === expectedExecutablePath ||
44
+ pathBasename(actualExecutablePath, platform) ===
45
+ pathBasename(expectedExecutablePath, platform));
46
+ }
47
+ else {
48
+ checks.push(commandLineContains(identity.commandLine, expectedExecutablePath, platform));
49
+ }
50
+ }
51
+ const expectedStartedAt = parseTimestamp(state?.startedAt);
52
+ const actualStartedAt = parseTimestamp(identity.startedAt);
53
+ if (expectedStartedAt !== null && actualStartedAt !== null) {
54
+ checks.push(Math.abs(actualStartedAt - expectedStartedAt) <= PROCESS_START_TOLERANCE_MS);
55
+ }
56
+ if (checks.length === 0) {
57
+ return true;
58
+ }
59
+ return checks.every(Boolean);
60
+ }
61
+ export function isProcessRunning(pid) {
62
+ if (!Number.isInteger(pid) || pid <= 0) {
63
+ return false;
64
+ }
65
+ try {
66
+ process.kill(pid, 0);
67
+ return true;
68
+ }
69
+ catch (error) {
70
+ if (error && typeof error === "object" && "code" in error && error.code === "EPERM") {
71
+ return true;
72
+ }
73
+ return false;
74
+ }
75
+ }
76
+ function inspectProcess(pid, platform) {
77
+ if (platform === "win32") {
78
+ return inspectWindowsProcess(pid);
79
+ }
80
+ if (platform === "linux" || platform === "darwin") {
81
+ return inspectPosixProcess(pid);
82
+ }
83
+ return null;
84
+ }
85
+ function inspectWindowsProcess(pid) {
86
+ const script = [
87
+ `$p = Get-CimInstance Win32_Process -Filter "ProcessId = ${pid}" -ErrorAction SilentlyContinue`,
88
+ "if ($null -eq $p) { exit 3 }",
89
+ "$created = ''",
90
+ "if ($p.CreationDate) {",
91
+ " try { $created = $p.CreationDate.ToString('o') } catch { $created = '' }",
92
+ "}",
93
+ "[pscustomobject]@{",
94
+ " pid = $p.ProcessId",
95
+ " commandLine = $p.CommandLine",
96
+ " executablePath = $p.ExecutablePath",
97
+ " startedAt = $created",
98
+ "} | ConvertTo-Json -Compress",
99
+ ].join("\n");
100
+ for (const shell of resolveWindowsPowerShellCandidates()) {
101
+ const result = spawnSync(shell, ["-NoProfile", "-NonInteractive", "-Command", script], {
102
+ encoding: "utf8",
103
+ windowsHide: true,
104
+ shell: false,
105
+ });
106
+ if (result.error || result.status !== 0) {
107
+ continue;
108
+ }
109
+ const stdout = String(result.stdout ?? "").trim();
110
+ if (!stdout) {
111
+ continue;
112
+ }
113
+ try {
114
+ const parsed = JSON.parse(stdout);
115
+ return {
116
+ pid: normalizePid(parsed.pid),
117
+ commandLine: String(parsed.commandLine ?? ""),
118
+ executablePath: normalizeOptionalString(parsed.executablePath),
119
+ startedAt: normalizeOptionalString(parsed.startedAt),
120
+ };
121
+ }
122
+ catch {
123
+ continue;
124
+ }
125
+ }
126
+ return null;
127
+ }
128
+ function inspectPosixProcess(pid) {
129
+ const commandResult = spawnSync("ps", ["-p", String(pid), "-o", "args="], {
130
+ encoding: "utf8",
131
+ shell: false,
132
+ });
133
+ if (commandResult.error || commandResult.status !== 0) {
134
+ return null;
135
+ }
136
+ const commandLine = String(commandResult.stdout ?? "").trim();
137
+ if (!commandLine) {
138
+ return null;
139
+ }
140
+ const startedAtResult = spawnSync("ps", ["-p", String(pid), "-o", "lstart="], {
141
+ encoding: "utf8",
142
+ shell: false,
143
+ });
144
+ const executablePathResult = spawnSync("ps", ["-p", String(pid), "-o", "comm="], {
145
+ encoding: "utf8",
146
+ shell: false,
147
+ });
148
+ return {
149
+ pid,
150
+ commandLine,
151
+ executablePath: normalizeOptionalString(executablePathResult.stdout),
152
+ startedAt: normalizeOptionalString(startedAtResult.stdout),
153
+ };
154
+ }
155
+ function resolveWindowsPowerShellCandidates() {
156
+ const candidates = [
157
+ path.join(process.env.SystemRoot ?? "C:\\Windows", "System32", "WindowsPowerShell", "v1.0", "powershell.exe"),
158
+ "powershell.exe",
159
+ "pwsh.exe",
160
+ ];
161
+ return [...new Set(candidates)];
162
+ }
163
+ function extractScriptToken(value) {
164
+ const tokens = tokenizeCommandLine(value);
165
+ for (const token of tokens) {
166
+ if (/\.(?:[cm]?js|mts)$/i.test(token)) {
167
+ return token;
168
+ }
169
+ }
170
+ return null;
171
+ }
172
+ function extractExecutableToken(value) {
173
+ const [first] = tokenizeCommandLine(value);
174
+ return first ? normalizeOptionalString(first) : null;
175
+ }
176
+ function tokenizeCommandLine(value) {
177
+ const text = String(value ?? "").trim();
178
+ if (!text) {
179
+ return [];
180
+ }
181
+ const tokens = [];
182
+ const pattern = /"([^"]*)"|'([^']*)'|[^\s]+/g;
183
+ let match = null;
184
+ while ((match = pattern.exec(text)) !== null) {
185
+ const token = match[1] ?? match[2] ?? match[0] ?? "";
186
+ const normalized = normalizeOptionalString(token);
187
+ if (normalized) {
188
+ tokens.push(normalized);
189
+ }
190
+ }
191
+ return tokens;
192
+ }
193
+ function parseTimestamp(value) {
194
+ const text = normalizeOptionalString(value);
195
+ if (!text) {
196
+ return null;
197
+ }
198
+ const timestamp = Date.parse(text);
199
+ if (!Number.isFinite(timestamp)) {
200
+ return null;
201
+ }
202
+ return timestamp;
203
+ }
204
+ function normalizeOptionalString(value) {
205
+ const normalized = String(value ?? "").trim();
206
+ return normalized ? normalized : null;
207
+ }
208
+ function normalizeCommandToken(value, platform) {
209
+ const normalized = normalizeOptionalString(value);
210
+ if (!normalized) {
211
+ return null;
212
+ }
213
+ const unquoted = normalized.replace(/^["']+|["']+$/g, "");
214
+ const slashed = platform === "win32" ? unquoted.replace(/\\/g, "/") : unquoted;
215
+ return platform === "win32" ? slashed.toLowerCase() : slashed;
216
+ }
217
+ function commandLineContains(commandLine, expectedToken, platform) {
218
+ const normalizedCommandLine = normalizeCommandToken(commandLine, platform);
219
+ if (!normalizedCommandLine) {
220
+ return false;
221
+ }
222
+ return normalizedCommandLine.includes(expectedToken);
223
+ }
224
+ function pathBasename(value, platform) {
225
+ return (platform === "win32" ? path.win32.basename(value) : path.posix.basename(value)).toLowerCase();
226
+ }
@@ -5,6 +5,7 @@ import process from "node:process";
5
5
  import { spawn } from "node:child_process";
6
6
  import { fileURLToPath } from "node:url";
7
7
  import { initializeCopilotHubLayout, resolveCopilotHubLayout } from "./install-layout.mjs";
8
+ import { isManagedProcessRunning, isProcessRunning, normalizePid } from "./process-identity.mjs";
8
9
  const __filename = fileURLToPath(import.meta.url);
9
10
  const __dirname = path.dirname(__filename);
10
11
  const repoRoot = path.resolve(__dirname, "..", "..");
@@ -106,7 +107,7 @@ function showStatus() {
106
107
  for (const service of SERVICES) {
107
108
  const state = readState(service);
108
109
  const pid = normalizePid(state?.pid);
109
- const running = pid > 0 && isProcessRunning(pid);
110
+ const running = pid > 0 && isManagedProcessRunning(state);
110
111
  if (state && !running) {
111
112
  removeState(service);
112
113
  }
@@ -127,7 +128,7 @@ async function startService(service, options = {}) {
127
128
  const suppressAlreadyRunning = options?.suppressAlreadyRunning === true;
128
129
  const existing = readState(service);
129
130
  const existingPid = normalizePid(existing?.pid);
130
- if (existingPid > 0 && isProcessRunning(existingPid)) {
131
+ if (existingPid > 0 && isManagedProcessRunning(existing)) {
131
132
  if (!suppressAlreadyRunning) {
132
133
  console.log(`[${service.id}] already running (pid ${existingPid})`);
133
134
  }
@@ -163,9 +164,11 @@ async function startService(service, options = {}) {
163
164
  pid,
164
165
  startedAt: new Date().toISOString(),
165
166
  command: `${process.execPath} ${service.entryScript}`,
167
+ executablePath: process.execPath,
168
+ entryScript: service.entryScript,
166
169
  });
167
170
  await sleep(250);
168
- if (!isProcessRunning(pid)) {
171
+ if (!isManagedProcessRunning(readState(service))) {
169
172
  removeState(service);
170
173
  console.error(`[${service.id}] exited immediately. Check logs: ${service.logFile}`);
171
174
  return false;
@@ -185,7 +188,7 @@ async function stopService(service) {
185
188
  console.log(`[${service.id}] removed invalid pid file`);
186
189
  return;
187
190
  }
188
- if (!isProcessRunning(pid)) {
191
+ if (!isManagedProcessRunning(state)) {
189
192
  removeState(service);
190
193
  console.log(`[${service.id}] not running (stale pid ${pid})`);
191
194
  return;
@@ -267,28 +270,6 @@ function removeState(service) {
267
270
  fs.rmSync(service.pidFile, { force: true });
268
271
  }
269
272
  }
270
- function normalizePid(value) {
271
- const pid = Number.parseInt(String(value ?? ""), 10);
272
- if (!Number.isFinite(pid) || pid <= 0) {
273
- return 0;
274
- }
275
- return pid;
276
- }
277
- function isProcessRunning(pid) {
278
- if (!Number.isInteger(pid) || pid <= 0) {
279
- return false;
280
- }
281
- try {
282
- process.kill(pid, 0);
283
- return true;
284
- }
285
- catch (error) {
286
- if (error && typeof error === "object" && "code" in error && error.code === "EPERM") {
287
- return true;
288
- }
289
- return false;
290
- }
291
- }
292
273
  function ensureRuntimeDirs() {
293
274
  fs.mkdirSync(runtimeDir, { recursive: true });
294
275
  fs.mkdirSync(pidsDir, { recursive: true });
@@ -7,6 +7,7 @@ import { createInterface } from "node:readline/promises";
7
7
  import { fileURLToPath } from "node:url";
8
8
  import { codexInstallPackageSpec } from "./codex-version.mjs";
9
9
  import { initializeCopilotHubLayout, resolveCopilotHubLayout } from "./install-layout.mjs";
10
+ import { isManagedProcessRunning, isProcessRunning, normalizePid } from "./process-identity.mjs";
10
11
  import {
11
12
  buildCodexCompatibilityError,
12
13
  probeCodexVersion,
@@ -147,6 +148,8 @@ async function runDaemonLoop() {
147
148
  pid: process.pid,
148
149
  startedAt: new Date().toISOString(),
149
150
  command: `${nodeBin} ${daemonScriptPath} run`,
151
+ executablePath: nodeBin,
152
+ entryScript: daemonScriptPath,
150
153
  });
151
154
 
152
155
  const state = { stopping: false, shuttingDown: false };
@@ -227,8 +230,9 @@ async function stopDaemonProcess() {
227
230
  return;
228
231
  }
229
232
 
233
+ const state = readDaemonState();
230
234
  await terminateProcess(pid);
231
- if (isProcessRunning(pid)) {
235
+ if (isManagedProcessRunning(state)) {
232
236
  throw new Error(`Daemon did not stop cleanly (pid ${pid}).`);
233
237
  }
234
238
 
@@ -336,7 +340,7 @@ function getRunningDaemonPid() {
336
340
  if (pid <= 0) {
337
341
  return 0;
338
342
  }
339
- return isProcessRunning(pid) ? pid : 0;
343
+ return isManagedProcessRunning(state) ? pid : 0;
340
344
  }
341
345
 
342
346
  function readDaemonState() {
@@ -362,29 +366,6 @@ function removeDaemonState() {
362
366
  fs.rmSync(daemonStatePath, { force: true });
363
367
  }
364
368
 
365
- function normalizePid(value) {
366
- const pid = Number.parseInt(String(value ?? ""), 10);
367
- if (!Number.isFinite(pid) || pid <= 0) {
368
- return 0;
369
- }
370
- return pid;
371
- }
372
-
373
- function isProcessRunning(pid) {
374
- if (!Number.isInteger(pid) || pid <= 0) {
375
- return false;
376
- }
377
- try {
378
- process.kill(pid, 0);
379
- return true;
380
- } catch (error) {
381
- if (error && typeof error === "object" && "code" in error && error.code === "EPERM") {
382
- return true;
383
- }
384
- return false;
385
- }
386
- }
387
-
388
369
  async function terminateProcess(pid) {
389
370
  if (process.platform === "win32") {
390
371
  await killTreeWindows(pid);
@@ -0,0 +1,296 @@
1
+ import path from "node:path";
2
+ import process from "node:process";
3
+ import { spawnSync } from "node:child_process";
4
+
5
+ const PROCESS_START_TOLERANCE_MS = 120_000;
6
+
7
+ export type ManagedProcessState = {
8
+ pid?: unknown;
9
+ startedAt?: unknown;
10
+ command?: unknown;
11
+ executablePath?: unknown;
12
+ entryScript?: unknown;
13
+ };
14
+
15
+ type ProcessIdentity = {
16
+ pid: number;
17
+ commandLine: string;
18
+ executablePath: string | null;
19
+ startedAt: string | null;
20
+ };
21
+
22
+ export function normalizePid(value: unknown): number {
23
+ const pid = Number.parseInt(String(value ?? ""), 10);
24
+ if (!Number.isFinite(pid) || pid <= 0) {
25
+ return 0;
26
+ }
27
+ return pid;
28
+ }
29
+
30
+ export function isManagedProcessRunning(
31
+ state: ManagedProcessState | null,
32
+ platform: NodeJS.Platform = process.platform,
33
+ ): boolean {
34
+ const pid = normalizePid(state?.pid);
35
+ if (pid <= 0) {
36
+ return false;
37
+ }
38
+ if (!isProcessRunning(pid)) {
39
+ return false;
40
+ }
41
+
42
+ const identity = inspectProcess(pid, platform);
43
+ if (!identity) {
44
+ return true;
45
+ }
46
+
47
+ return matchesManagedProcessState(state, identity, platform);
48
+ }
49
+
50
+ export function matchesManagedProcessState(
51
+ state: ManagedProcessState | null,
52
+ identity: ProcessIdentity | null,
53
+ platform: NodeJS.Platform = process.platform,
54
+ ): boolean {
55
+ const pid = normalizePid(state?.pid);
56
+ if (pid <= 0 || !identity) {
57
+ return false;
58
+ }
59
+ if (normalizePid(identity.pid) !== pid) {
60
+ return false;
61
+ }
62
+
63
+ const checks: boolean[] = [];
64
+ const expectedScript = normalizeCommandToken(
65
+ state?.entryScript ?? extractScriptToken(state?.command),
66
+ platform,
67
+ );
68
+ if (expectedScript) {
69
+ checks.push(commandLineContains(identity.commandLine, expectedScript, platform));
70
+ }
71
+
72
+ const expectedExecutablePath = normalizeCommandToken(
73
+ state?.executablePath ?? extractExecutableToken(state?.command),
74
+ platform,
75
+ );
76
+ if (expectedExecutablePath) {
77
+ const actualExecutablePath = normalizeCommandToken(identity.executablePath, platform);
78
+ if (actualExecutablePath) {
79
+ checks.push(
80
+ actualExecutablePath === expectedExecutablePath ||
81
+ pathBasename(actualExecutablePath, platform) ===
82
+ pathBasename(expectedExecutablePath, platform),
83
+ );
84
+ } else {
85
+ checks.push(commandLineContains(identity.commandLine, expectedExecutablePath, platform));
86
+ }
87
+ }
88
+
89
+ const expectedStartedAt = parseTimestamp(state?.startedAt);
90
+ const actualStartedAt = parseTimestamp(identity.startedAt);
91
+ if (expectedStartedAt !== null && actualStartedAt !== null) {
92
+ checks.push(Math.abs(actualStartedAt - expectedStartedAt) <= PROCESS_START_TOLERANCE_MS);
93
+ }
94
+
95
+ if (checks.length === 0) {
96
+ return true;
97
+ }
98
+ return checks.every(Boolean);
99
+ }
100
+
101
+ export function isProcessRunning(pid: number): boolean {
102
+ if (!Number.isInteger(pid) || pid <= 0) {
103
+ return false;
104
+ }
105
+
106
+ try {
107
+ process.kill(pid, 0);
108
+ return true;
109
+ } catch (error) {
110
+ if (error && typeof error === "object" && "code" in error && error.code === "EPERM") {
111
+ return true;
112
+ }
113
+ return false;
114
+ }
115
+ }
116
+
117
+ function inspectProcess(pid: number, platform: NodeJS.Platform): ProcessIdentity | null {
118
+ if (platform === "win32") {
119
+ return inspectWindowsProcess(pid);
120
+ }
121
+ if (platform === "linux" || platform === "darwin") {
122
+ return inspectPosixProcess(pid);
123
+ }
124
+ return null;
125
+ }
126
+
127
+ function inspectWindowsProcess(pid: number): ProcessIdentity | null {
128
+ const script = [
129
+ `$p = Get-CimInstance Win32_Process -Filter "ProcessId = ${pid}" -ErrorAction SilentlyContinue`,
130
+ "if ($null -eq $p) { exit 3 }",
131
+ "$created = ''",
132
+ "if ($p.CreationDate) {",
133
+ " try { $created = $p.CreationDate.ToString('o') } catch { $created = '' }",
134
+ "}",
135
+ "[pscustomobject]@{",
136
+ " pid = $p.ProcessId",
137
+ " commandLine = $p.CommandLine",
138
+ " executablePath = $p.ExecutablePath",
139
+ " startedAt = $created",
140
+ "} | ConvertTo-Json -Compress",
141
+ ].join("\n");
142
+
143
+ for (const shell of resolveWindowsPowerShellCandidates()) {
144
+ const result = spawnSync(shell, ["-NoProfile", "-NonInteractive", "-Command", script], {
145
+ encoding: "utf8",
146
+ windowsHide: true,
147
+ shell: false,
148
+ });
149
+ if (result.error || result.status !== 0) {
150
+ continue;
151
+ }
152
+ const stdout = String(result.stdout ?? "").trim();
153
+ if (!stdout) {
154
+ continue;
155
+ }
156
+ try {
157
+ const parsed = JSON.parse(stdout) as Record<string, unknown>;
158
+ return {
159
+ pid: normalizePid(parsed.pid),
160
+ commandLine: String(parsed.commandLine ?? ""),
161
+ executablePath: normalizeOptionalString(parsed.executablePath),
162
+ startedAt: normalizeOptionalString(parsed.startedAt),
163
+ };
164
+ } catch {
165
+ continue;
166
+ }
167
+ }
168
+
169
+ return null;
170
+ }
171
+
172
+ function inspectPosixProcess(pid: number): ProcessIdentity | null {
173
+ const commandResult = spawnSync("ps", ["-p", String(pid), "-o", "args="], {
174
+ encoding: "utf8",
175
+ shell: false,
176
+ });
177
+ if (commandResult.error || commandResult.status !== 0) {
178
+ return null;
179
+ }
180
+
181
+ const commandLine = String(commandResult.stdout ?? "").trim();
182
+ if (!commandLine) {
183
+ return null;
184
+ }
185
+
186
+ const startedAtResult = spawnSync("ps", ["-p", String(pid), "-o", "lstart="], {
187
+ encoding: "utf8",
188
+ shell: false,
189
+ });
190
+ const executablePathResult = spawnSync("ps", ["-p", String(pid), "-o", "comm="], {
191
+ encoding: "utf8",
192
+ shell: false,
193
+ });
194
+
195
+ return {
196
+ pid,
197
+ commandLine,
198
+ executablePath: normalizeOptionalString(executablePathResult.stdout),
199
+ startedAt: normalizeOptionalString(startedAtResult.stdout),
200
+ };
201
+ }
202
+
203
+ function resolveWindowsPowerShellCandidates(): string[] {
204
+ const candidates = [
205
+ path.join(
206
+ process.env.SystemRoot ?? "C:\\Windows",
207
+ "System32",
208
+ "WindowsPowerShell",
209
+ "v1.0",
210
+ "powershell.exe",
211
+ ),
212
+ "powershell.exe",
213
+ "pwsh.exe",
214
+ ];
215
+ return [...new Set(candidates)];
216
+ }
217
+
218
+ function extractScriptToken(value: unknown): string | null {
219
+ const tokens = tokenizeCommandLine(value);
220
+ for (const token of tokens) {
221
+ if (/\.(?:[cm]?js|mts)$/i.test(token)) {
222
+ return token;
223
+ }
224
+ }
225
+ return null;
226
+ }
227
+
228
+ function extractExecutableToken(value: unknown): string | null {
229
+ const [first] = tokenizeCommandLine(value);
230
+ return first ? normalizeOptionalString(first) : null;
231
+ }
232
+
233
+ function tokenizeCommandLine(value: unknown): string[] {
234
+ const text = String(value ?? "").trim();
235
+ if (!text) {
236
+ return [];
237
+ }
238
+
239
+ const tokens: string[] = [];
240
+ const pattern = /"([^"]*)"|'([^']*)'|[^\s]+/g;
241
+ let match: RegExpExecArray | null = null;
242
+ while ((match = pattern.exec(text)) !== null) {
243
+ const token = match[1] ?? match[2] ?? match[0] ?? "";
244
+ const normalized = normalizeOptionalString(token);
245
+ if (normalized) {
246
+ tokens.push(normalized);
247
+ }
248
+ }
249
+ return tokens;
250
+ }
251
+
252
+ function parseTimestamp(value: unknown): number | null {
253
+ const text = normalizeOptionalString(value);
254
+ if (!text) {
255
+ return null;
256
+ }
257
+ const timestamp = Date.parse(text);
258
+ if (!Number.isFinite(timestamp)) {
259
+ return null;
260
+ }
261
+ return timestamp;
262
+ }
263
+
264
+ function normalizeOptionalString(value: unknown): string | null {
265
+ const normalized = String(value ?? "").trim();
266
+ return normalized ? normalized : null;
267
+ }
268
+
269
+ function normalizeCommandToken(value: unknown, platform: NodeJS.Platform): string | null {
270
+ const normalized = normalizeOptionalString(value);
271
+ if (!normalized) {
272
+ return null;
273
+ }
274
+
275
+ const unquoted = normalized.replace(/^["']+|["']+$/g, "");
276
+ const slashed = platform === "win32" ? unquoted.replace(/\\/g, "/") : unquoted;
277
+ return platform === "win32" ? slashed.toLowerCase() : slashed;
278
+ }
279
+
280
+ function commandLineContains(
281
+ commandLine: string,
282
+ expectedToken: string,
283
+ platform: NodeJS.Platform,
284
+ ): boolean {
285
+ const normalizedCommandLine = normalizeCommandToken(commandLine, platform);
286
+ if (!normalizedCommandLine) {
287
+ return false;
288
+ }
289
+ return normalizedCommandLine.includes(expectedToken);
290
+ }
291
+
292
+ function pathBasename(value: string, platform: NodeJS.Platform): string {
293
+ return (
294
+ platform === "win32" ? path.win32.basename(value) : path.posix.basename(value)
295
+ ).toLowerCase();
296
+ }
@@ -5,6 +5,7 @@ import process from "node:process";
5
5
  import { spawn } from "node:child_process";
6
6
  import { fileURLToPath } from "node:url";
7
7
  import { initializeCopilotHubLayout, resolveCopilotHubLayout } from "./install-layout.mjs";
8
+ import { isManagedProcessRunning, isProcessRunning, normalizePid } from "./process-identity.mjs";
8
9
 
9
10
  const __filename = fileURLToPath(import.meta.url);
10
11
  const __dirname = path.dirname(__filename);
@@ -121,7 +122,7 @@ function showStatus() {
121
122
  for (const service of SERVICES) {
122
123
  const state = readState(service);
123
124
  const pid = normalizePid(state?.pid);
124
- const running = pid > 0 && isProcessRunning(pid);
125
+ const running = pid > 0 && isManagedProcessRunning(state);
125
126
 
126
127
  if (state && !running) {
127
128
  removeState(service);
@@ -147,7 +148,7 @@ async function startService(service, options: { suppressAlreadyRunning?: boolean
147
148
  const suppressAlreadyRunning = options?.suppressAlreadyRunning === true;
148
149
  const existing = readState(service);
149
150
  const existingPid = normalizePid(existing?.pid);
150
- if (existingPid > 0 && isProcessRunning(existingPid)) {
151
+ if (existingPid > 0 && isManagedProcessRunning(existing)) {
151
152
  if (!suppressAlreadyRunning) {
152
153
  console.log(`[${service.id}] already running (pid ${existingPid})`);
153
154
  }
@@ -188,11 +189,13 @@ async function startService(service, options: { suppressAlreadyRunning?: boolean
188
189
  pid,
189
190
  startedAt: new Date().toISOString(),
190
191
  command: `${process.execPath} ${service.entryScript}`,
192
+ executablePath: process.execPath,
193
+ entryScript: service.entryScript,
191
194
  });
192
195
 
193
196
  await sleep(250);
194
197
 
195
- if (!isProcessRunning(pid)) {
198
+ if (!isManagedProcessRunning(readState(service))) {
196
199
  removeState(service);
197
200
  console.error(`[${service.id}] exited immediately. Check logs: ${service.logFile}`);
198
201
  return false;
@@ -216,7 +219,7 @@ async function stopService(service) {
216
219
  return;
217
220
  }
218
221
 
219
- if (!isProcessRunning(pid)) {
222
+ if (!isManagedProcessRunning(state)) {
220
223
  removeState(service);
221
224
  console.log(`[${service.id}] not running (stale pid ${pid})`);
222
225
  return;
@@ -311,30 +314,6 @@ function removeState(service) {
311
314
  }
312
315
  }
313
316
 
314
- function normalizePid(value) {
315
- const pid = Number.parseInt(String(value ?? ""), 10);
316
- if (!Number.isFinite(pid) || pid <= 0) {
317
- return 0;
318
- }
319
- return pid;
320
- }
321
-
322
- function isProcessRunning(pid) {
323
- if (!Number.isInteger(pid) || pid <= 0) {
324
- return false;
325
- }
326
-
327
- try {
328
- process.kill(pid, 0);
329
- return true;
330
- } catch (error) {
331
- if (error && typeof error === "object" && "code" in error && error.code === "EPERM") {
332
- return true;
333
- }
334
- return false;
335
- }
336
- }
337
-
338
317
  function ensureRuntimeDirs() {
339
318
  fs.mkdirSync(runtimeDir, { recursive: true });
340
319
  fs.mkdirSync(pidsDir, { recursive: true });
@@ -0,0 +1,61 @@
1
+ import assert from "node:assert/strict";
2
+ import test from "node:test";
3
+ import { matchesManagedProcessState, normalizePid } from "../dist/process-identity.mjs";
4
+
5
+ test("normalizePid accepts valid positive integers only", () => {
6
+ assert.equal(normalizePid("123"), 123);
7
+ assert.equal(normalizePid(0), 0);
8
+ assert.equal(normalizePid(-1), 0);
9
+ assert.equal(normalizePid("abc"), 0);
10
+ });
11
+
12
+ test("matchesManagedProcessState accepts a matching managed daemon process", () => {
13
+ const state = {
14
+ pid: 2444,
15
+ startedAt: "2026-03-14T16:13:37.301Z",
16
+ executablePath: "C:/Program Files/nodejs/node.exe",
17
+ entryScript: "C:/Users/amine/Desktop/copilot_hub/scripts/dist/daemon.mjs",
18
+ };
19
+ const identity = {
20
+ pid: 2444,
21
+ executablePath: "C:\\Program Files\\nodejs\\node.exe",
22
+ commandLine:
23
+ '"C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\amine\\Desktop\\copilot_hub\\scripts\\dist\\daemon.mjs" run',
24
+ startedAt: "2026-03-14T16:13:37.900Z",
25
+ };
26
+
27
+ assert.equal(matchesManagedProcessState(state, identity, "win32"), true);
28
+ });
29
+
30
+ test("matchesManagedProcessState rejects a reused pid for an unrelated process", () => {
31
+ const state = {
32
+ pid: 2444,
33
+ startedAt: "2026-03-14T16:13:37.301Z",
34
+ command:
35
+ "C:\\Program Files\\nodejs\\node.exe C:\\Users\\amine\\Desktop\\copilot_hub\\scripts\\dist\\daemon.mjs run",
36
+ };
37
+ const identity = {
38
+ pid: 2444,
39
+ executablePath: "C:\\Windows\\System32\\IntelCpHDCPSvc.exe",
40
+ commandLine: "C:\\Windows\\System32\\IntelCpHDCPSvc.exe",
41
+ startedAt: "2026-03-14T16:55:00.000Z",
42
+ };
43
+
44
+ assert.equal(matchesManagedProcessState(state, identity, "win32"), false);
45
+ });
46
+
47
+ test("matchesManagedProcessState supports legacy states that only stored command", () => {
48
+ const state = {
49
+ pid: 17044,
50
+ startedAt: "2026-03-14T12:00:00.000Z",
51
+ command: "/usr/bin/node /opt/copilot-hub/scripts/dist/daemon.mjs run",
52
+ };
53
+ const identity = {
54
+ pid: 17044,
55
+ executablePath: "/usr/bin/node",
56
+ commandLine: "/usr/bin/node /opt/copilot-hub/scripts/dist/daemon.mjs run",
57
+ startedAt: "Fri Mar 14 12:00:00 2026",
58
+ };
59
+
60
+ assert.equal(matchesManagedProcessState(state, identity, "linux"), true);
61
+ });