copilot-hub 0.1.23 → 0.1.25

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.
@@ -188,19 +188,28 @@ function findWindowsNpmGlobalCodexBin() {
188
188
  if (process.platform !== "win32") {
189
189
  return null;
190
190
  }
191
+ const packageRoots = [];
191
192
  const candidates = [];
192
193
  const appData = String(process.env.APPDATA ?? "").trim();
193
194
  if (appData) {
195
+ packageRoots.push(path.join(appData, "npm", "node_modules", "@openai", "codex"));
194
196
  candidates.push(path.join(appData, "npm", "codex.cmd"));
195
197
  candidates.push(path.join(appData, "npm", "codex.exe"));
196
198
  candidates.push(path.join(appData, "npm", "codex"));
197
199
  }
198
200
  const npmPrefix = readNpmPrefix();
199
201
  if (npmPrefix) {
202
+ packageRoots.push(path.join(npmPrefix, "node_modules", "@openai", "codex"));
200
203
  candidates.push(path.join(npmPrefix, "codex.cmd"));
201
204
  candidates.push(path.join(npmPrefix, "codex.exe"));
202
205
  candidates.push(path.join(npmPrefix, "codex"));
203
206
  }
207
+ for (const packageRoot of packageRoots) {
208
+ const entrypoint = path.join(packageRoot, "bin", "codex.js");
209
+ if (fs.existsSync(entrypoint)) {
210
+ return entrypoint;
211
+ }
212
+ }
204
213
  for (const candidate of candidates) {
205
214
  if (fs.existsSync(candidate)) {
206
215
  return candidate;
@@ -5,7 +5,7 @@ import { fileURLToPath } from "node:url";
5
5
  import express from "express";
6
6
  import { BotManager } from "@copilot-hub/core/bot-manager";
7
7
  import { CodexAppClient } from "@copilot-hub/core/codex-app-client";
8
- import { buildShellWrappedCommandLine, requiresShellWrappedSpawn, } from "@copilot-hub/core/codex-app-utils";
8
+ import { buildNodeScriptSpawnArgs, buildShellWrappedCommandLine, requiresNodeScriptSpawn, requiresShellWrappedSpawn, } from "@copilot-hub/core/codex-app-utils";
9
9
  import { loadBotRegistry } from "@copilot-hub/core/bot-registry";
10
10
  import { invalidateCodexQuotaUsageCache } from "@copilot-hub/core/telegram-channel";
11
11
  import { config } from "./config.js";
@@ -495,21 +495,29 @@ function startCodexDeviceAuthSession() {
495
495
  refreshedBots: [],
496
496
  refreshFailures: [],
497
497
  };
498
- const child = requiresShellWrappedSpawn(codexBin)
499
- ? spawn(buildShellWrappedCommandLine(codexBin, ["login", "--device-auth"]), {
500
- cwd: config.kernelRootPath,
501
- shell: true,
502
- stdio: ["ignore", "pipe", "pipe"],
503
- windowsHide: true,
504
- env: process.env,
505
- })
506
- : spawn(codexBin, ["login", "--device-auth"], {
498
+ const child = requiresNodeScriptSpawn(codexBin)
499
+ ? spawn(process.execPath, buildNodeScriptSpawnArgs(codexBin, ["login", "--device-auth"]), {
507
500
  cwd: config.kernelRootPath,
508
501
  shell: false,
509
502
  stdio: ["ignore", "pipe", "pipe"],
510
503
  windowsHide: true,
511
504
  env: process.env,
512
- });
505
+ })
506
+ : requiresShellWrappedSpawn(codexBin)
507
+ ? spawn(buildShellWrappedCommandLine(codexBin, ["login", "--device-auth"]), {
508
+ cwd: config.kernelRootPath,
509
+ shell: true,
510
+ stdio: ["ignore", "pipe", "pipe"],
511
+ windowsHide: true,
512
+ env: process.env,
513
+ })
514
+ : spawn(codexBin, ["login", "--device-auth"], {
515
+ cwd: config.kernelRootPath,
516
+ shell: false,
517
+ stdio: ["ignore", "pipe", "pipe"],
518
+ windowsHide: true,
519
+ env: process.env,
520
+ });
513
521
  session.child = child;
514
522
  codexDeviceAuthSession = session;
515
523
  child.stdout.on("data", (chunk) => {
@@ -788,17 +796,8 @@ function normalizeReasoningEffortValue(value) {
788
796
  }
789
797
  function runCodexCommand(args, { inputText = "" } = {}) {
790
798
  const codexBin = String(config.codexBin ?? "codex").trim() || "codex";
791
- const result = requiresShellWrappedSpawn(codexBin)
792
- ? spawnSync(buildShellWrappedCommandLine(codexBin, args), {
793
- cwd: config.kernelRootPath,
794
- shell: true,
795
- stdio: ["pipe", "pipe", "pipe"],
796
- windowsHide: true,
797
- encoding: "utf8",
798
- input: inputText,
799
- env: process.env,
800
- })
801
- : spawnSync(codexBin, args, {
799
+ const result = requiresNodeScriptSpawn(codexBin)
800
+ ? spawnSync(process.execPath, buildNodeScriptSpawnArgs(codexBin, args), {
802
801
  cwd: config.kernelRootPath,
803
802
  shell: false,
804
803
  stdio: ["pipe", "pipe", "pipe"],
@@ -806,7 +805,26 @@ function runCodexCommand(args, { inputText = "" } = {}) {
806
805
  encoding: "utf8",
807
806
  input: inputText,
808
807
  env: process.env,
809
- });
808
+ })
809
+ : requiresShellWrappedSpawn(codexBin)
810
+ ? spawnSync(buildShellWrappedCommandLine(codexBin, args), {
811
+ cwd: config.kernelRootPath,
812
+ shell: true,
813
+ stdio: ["pipe", "pipe", "pipe"],
814
+ windowsHide: true,
815
+ encoding: "utf8",
816
+ input: inputText,
817
+ env: process.env,
818
+ })
819
+ : spawnSync(codexBin, args, {
820
+ cwd: config.kernelRootPath,
821
+ shell: false,
822
+ stdio: ["pipe", "pipe", "pipe"],
823
+ windowsHide: true,
824
+ encoding: "utf8",
825
+ input: inputText,
826
+ env: process.env,
827
+ });
810
828
  if (result.error) {
811
829
  return {
812
830
  ok: false,
@@ -195,19 +195,28 @@ function findWindowsNpmGlobalCodexBin() {
195
195
  if (process.platform !== "win32") {
196
196
  return null;
197
197
  }
198
+ const packageRoots = [];
198
199
  const candidates = [];
199
200
  const appData = String(process.env.APPDATA ?? "").trim();
200
201
  if (appData) {
202
+ packageRoots.push(path.join(appData, "npm", "node_modules", "@openai", "codex"));
201
203
  candidates.push(path.join(appData, "npm", "codex.cmd"));
202
204
  candidates.push(path.join(appData, "npm", "codex.exe"));
203
205
  candidates.push(path.join(appData, "npm", "codex"));
204
206
  }
205
207
  const npmPrefix = readNpmPrefix();
206
208
  if (npmPrefix) {
209
+ packageRoots.push(path.join(npmPrefix, "node_modules", "@openai", "codex"));
207
210
  candidates.push(path.join(npmPrefix, "codex.cmd"));
208
211
  candidates.push(path.join(npmPrefix, "codex.exe"));
209
212
  candidates.push(path.join(npmPrefix, "codex"));
210
213
  }
214
+ for (const packageRoot of packageRoots) {
215
+ const entrypoint = path.join(packageRoot, "bin", "codex.js");
216
+ if (fs.existsSync(entrypoint)) {
217
+ return entrypoint;
218
+ }
219
+ }
211
220
  for (const candidate of candidates) {
212
221
  if (fs.existsSync(candidate)) {
213
222
  return candidate;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "copilot-hub",
3
- "version": "0.1.23",
3
+ "version": "0.1.25",
4
4
  "description": "Copilot Hub CLI and runtime bundle",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -4,7 +4,7 @@ import fs from "node:fs";
4
4
  import path from "node:path";
5
5
  import readline from "node:readline";
6
6
  import { extractQuotaSnapshot, extractSessionConfiguredModel, extractThreadLifecycleModel, } from "./codex-app-events.js";
7
- import { annotateSpawnError, asRecord, buildShellWrappedCommandLine, createApprovalId, isRecord, makeTurnKey, normalizeApprovalDecision, normalizeApprovalPolicy, normalizeCliPath, normalizeModel, normalizeReasoningEffort, normalizeServiceTier, normalizeSandboxMode, normalizeTimeout, normalizeTurnInputItems, requiresShellWrappedSpawn, sanitizeError, toRequestId, toRpcId, } from "./codex-app-utils.js";
7
+ import { annotateSpawnError, asRecord, buildNodeScriptSpawnArgs, buildShellWrappedCommandLine, createApprovalId, isRecord, makeTurnKey, normalizeApprovalDecision, normalizeApprovalPolicy, normalizeCliPath, normalizeModel, normalizeReasoningEffort, normalizeServiceTier, normalizeSandboxMode, normalizeTimeout, normalizeTurnInputItems, requiresNodeScriptSpawn, requiresShellWrappedSpawn, sanitizeError, toRequestId, toRpcId, } from "./codex-app-utils.js";
8
8
  const DEFAULT_REQUEST_TIMEOUT_MS = 30_000;
9
9
  const DEFAULT_TURN_ACTIVITY_TIMEOUT_MS = 3_600_000;
10
10
  export class CodexAppClient extends EventEmitter {
@@ -344,17 +344,23 @@ export class CodexAppClient extends EventEmitter {
344
344
  }
345
345
  const args = ["-C", normalizeCliPath(this.cwd), "app-server"];
346
346
  const env = this.#buildEnvironment();
347
- const child = requiresShellWrappedSpawn(this.codexBin)
348
- ? spawn(buildShellWrappedCommandLine(this.codexBin, args), {
349
- windowsHide: true,
350
- shell: true,
351
- env,
352
- })
353
- : spawn(this.codexBin, args, {
347
+ const child = requiresNodeScriptSpawn(this.codexBin)
348
+ ? spawn(process.execPath, buildNodeScriptSpawnArgs(this.codexBin, args), {
354
349
  windowsHide: true,
355
350
  shell: false,
356
351
  env,
357
- });
352
+ })
353
+ : requiresShellWrappedSpawn(this.codexBin)
354
+ ? spawn(buildShellWrappedCommandLine(this.codexBin, args), {
355
+ windowsHide: true,
356
+ shell: true,
357
+ env,
358
+ })
359
+ : spawn(this.codexBin, args, {
360
+ windowsHide: true,
361
+ shell: false,
362
+ env,
363
+ });
358
364
  this.child = child;
359
365
  this.started = true;
360
366
  this.reader = readline.createInterface({
@@ -1 +1 @@
1
- {"version":3,"file":"codex-app-client.js","sourceRoot":"","sources":["../src/codex-app-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-app-client.js","sourceRoot":"","sources":["../src/codex-app-client.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,9 @@ export declare function normalizeTimeout(value: unknown, fallback: number): numb
15
15
  export declare function parseTurnActivityTimeoutSetting(value: unknown, fallback: number): number;
16
16
  export declare function normalizeCliPath(value: string): string;
17
17
  export declare function requiresShellWrappedSpawn(command: unknown, platform?: NodeJS.Platform): boolean;
18
+ export declare function requiresNodeScriptSpawn(command: unknown): boolean;
18
19
  export declare function buildShellWrappedCommandLine(command: string, args: readonly string[]): string;
20
+ export declare function buildNodeScriptSpawnArgs(command: string, args: readonly string[]): readonly string[];
19
21
  export declare function makeTurnKey(threadId: string, turnId: string): string;
20
22
  export declare function createApprovalId(): string;
21
23
  export declare function annotateSpawnError(error: unknown, command: string): Error;
@@ -120,9 +120,15 @@ export function normalizeCliPath(value) {
120
120
  export function requiresShellWrappedSpawn(command, platform = process.platform) {
121
121
  return platform === "win32" && /\.(cmd|bat)$/i.test(String(command ?? "").trim());
122
122
  }
123
+ export function requiresNodeScriptSpawn(command) {
124
+ return /\.(cjs|mjs|js)$/i.test(String(command ?? "").trim());
125
+ }
123
126
  export function buildShellWrappedCommandLine(command, args) {
124
127
  return [quoteWindowsShellValue(command), ...args.map((arg) => quoteWindowsShellValue(arg))].join(" ");
125
128
  }
129
+ export function buildNodeScriptSpawnArgs(command, args) {
130
+ return [String(command ?? "").trim(), ...args];
131
+ }
126
132
  function parseTimeoutValue(value) {
127
133
  const raw = String(value ?? "").trim();
128
134
  if (!raw) {
@@ -1 +1 @@
1
- {"version":3,"file":"codex-app-utils.js","sourceRoot":"","sources":["../src/codex-app-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-app-utils.js","sourceRoot":"","sources":["../src/codex-app-utils.ts"],"names":[],"mappings":"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"}
@@ -201,19 +201,28 @@ function findWindowsNpmGlobalCodexBin(env, repoRoot) {
201
201
  if (process.platform !== "win32") {
202
202
  return "";
203
203
  }
204
+ const packageRoots = [];
204
205
  const candidates = [];
205
206
  const appData = nonEmpty(env.APPDATA);
206
207
  if (appData) {
208
+ packageRoots.push(path.join(appData, "npm", "node_modules", "@openai", "codex"));
207
209
  candidates.push(path.join(appData, "npm", "codex.cmd"));
208
210
  candidates.push(path.join(appData, "npm", "codex.exe"));
209
211
  candidates.push(path.join(appData, "npm", "codex"));
210
212
  }
211
213
  const npmPrefix = readNpmPrefix(repoRoot);
212
214
  if (npmPrefix) {
215
+ packageRoots.push(path.join(npmPrefix, "node_modules", "@openai", "codex"));
213
216
  candidates.push(path.join(npmPrefix, "codex.cmd"));
214
217
  candidates.push(path.join(npmPrefix, "codex.exe"));
215
218
  candidates.push(path.join(npmPrefix, "codex"));
216
219
  }
220
+ for (const packageRoot of dedupe(packageRoots)) {
221
+ const entrypoint = path.join(packageRoot, "bin", "codex.js");
222
+ if (fs.existsSync(entrypoint)) {
223
+ return entrypoint;
224
+ }
225
+ }
217
226
  for (const candidate of dedupe(candidates)) {
218
227
  if (fs.existsSync(candidate)) {
219
228
  return candidate;
@@ -253,6 +262,14 @@ function runCodex({ codexBin, args, repoRoot, }) {
253
262
  };
254
263
  }
255
264
  function spawnCodex(codexBin, args, repoRoot) {
265
+ if (/\.(cjs|mjs|js)$/i.test(codexBin)) {
266
+ return spawnSync(process.execPath, [codexBin, ...args], {
267
+ cwd: repoRoot,
268
+ stdio: ["ignore", "pipe", "pipe"],
269
+ shell: false,
270
+ encoding: "utf8",
271
+ });
272
+ }
256
273
  if (process.platform === "win32" && /\.(cmd|bat)$/i.test(codexBin)) {
257
274
  const commandLine = [
258
275
  quoteWindowsShellValue(codexBin),
@@ -27,6 +27,7 @@ const nodeBin = process.execPath;
27
27
  const agentEngineEnvPath = layout.agentEngineEnvPath;
28
28
  const controlPlaneEnvPath = layout.controlPlaneEnvPath;
29
29
  const codexInstallCommand = `npm install -g ${codexInstallPackageSpec}`;
30
+ const WINDOWS_BACKGROUND_ENV = "COPILOT_HUB_DAEMON_BACKGROUND";
30
31
  const BASE_CHECK_MS = 5000;
31
32
  const MAX_BACKOFF_MS = 60000;
32
33
  const action = String(process.argv[2] ?? "status")
@@ -62,13 +63,21 @@ async function main() {
62
63
  }
63
64
  }
64
65
  async function startDaemonProcess() {
65
- ensureScripts();
66
- ensureRuntimeDirs();
67
66
  const existingPid = getRunningDaemonPid();
68
67
  if (existingPid > 0) {
69
68
  console.log(`[daemon] already running (pid ${existingPid})`);
70
69
  return;
71
70
  }
71
+ const pid = await spawnDetachedDaemonProcess();
72
+ console.log(`[daemon] started (pid ${pid})`);
73
+ }
74
+ async function spawnDetachedDaemonProcess() {
75
+ ensureScripts();
76
+ ensureRuntimeDirs();
77
+ const existingPid = getRunningDaemonPid();
78
+ if (existingPid > 0) {
79
+ return existingPid;
80
+ }
72
81
  removeDaemonState();
73
82
  const logFd = fs.openSync(daemonLogPath, "a");
74
83
  let child;
@@ -79,7 +88,10 @@ async function startDaemonProcess() {
79
88
  stdio: ["ignore", logFd, logFd],
80
89
  windowsHide: true,
81
90
  shell: false,
82
- env: process.env,
91
+ env: {
92
+ ...process.env,
93
+ [WINDOWS_BACKGROUND_ENV]: "1",
94
+ },
83
95
  });
84
96
  }
85
97
  finally {
@@ -94,9 +106,13 @@ async function startDaemonProcess() {
94
106
  if (ready) {
95
107
  throw new Error(`Daemon process exited immediately (pid ${pid}). Check logs: ${daemonLogPath}`);
96
108
  }
97
- console.log(`[daemon] started (pid ${pid})`);
109
+ return pid;
98
110
  }
99
111
  async function runDaemonLoop() {
112
+ if (shouldDetachInteractiveWindowsDaemon()) {
113
+ await spawnDetachedDaemonProcess();
114
+ return;
115
+ }
100
116
  ensureScripts();
101
117
  ensureRuntimeDirs();
102
118
  const existingPid = getRunningDaemonPid();
@@ -465,6 +481,18 @@ function shouldPauseBeforeExit() {
465
481
  }
466
482
  return true;
467
483
  }
484
+ function shouldDetachInteractiveWindowsDaemon() {
485
+ if (process.platform !== "win32") {
486
+ return false;
487
+ }
488
+ if (String(process.env[WINDOWS_BACKGROUND_ENV] ?? "").trim() === "1") {
489
+ return false;
490
+ }
491
+ if (!process.stdin || !process.stdout) {
492
+ return false;
493
+ }
494
+ return Boolean(process.stdin.isTTY && process.stdout.isTTY);
495
+ }
468
496
  function detectFatalStartupError(ensureResult) {
469
497
  const evidenceChunks = [
470
498
  String(ensureResult?.combinedOutput ?? ""),
@@ -7,6 +7,7 @@ import process from "node:process";
7
7
  import { spawnSync } from "node:child_process";
8
8
  import { fileURLToPath } from "node:url";
9
9
  import { initializeCopilotHubLayout, resolveCopilotHubLayout } from "./install-layout.mjs";
10
+ import { buildWindowsHiddenLauncherCommand, ensureWindowsHiddenLauncher, getWindowsHiddenLauncherScriptPath, resolveWindowsScriptHost, } from "./windows-hidden-launcher.mjs";
10
11
  const __filename = fileURLToPath(import.meta.url);
11
12
  const __dirname = path.dirname(__filename);
12
13
  const repoRoot = path.resolve(__dirname, "..", "..");
@@ -14,6 +15,7 @@ const layout = resolveCopilotHubLayout({ repoRoot });
14
15
  initializeCopilotHubLayout({ repoRoot, layout });
15
16
  const nodeBin = process.execPath;
16
17
  const daemonScriptPath = path.join(repoRoot, "scripts", "dist", "daemon.mjs");
18
+ const windowsLauncherScriptPath = getWindowsHiddenLauncherScriptPath(layout.runtimeDir);
17
19
  const WINDOWS_TASK_NAME = "CopilotHub";
18
20
  const WINDOWS_RUN_KEY_PATH = "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run";
19
21
  const WINDOWS_RUN_VALUE_NAME = "CopilotHub";
@@ -117,7 +119,13 @@ async function showStatus() {
117
119
  }
118
120
  async function startService() {
119
121
  if (process.platform === "win32") {
120
- startWindowsAutoStart();
122
+ const mode = startWindowsAutoStart();
123
+ if (mode === "run-key") {
124
+ console.log("Service started in background (Windows startup registry entry).");
125
+ }
126
+ else {
127
+ console.log("Service started in background (Windows Task Scheduler).");
128
+ }
121
129
  return;
122
130
  }
123
131
  if (process.platform === "linux") {
@@ -160,7 +168,7 @@ function installWindowsAutoStart() {
160
168
  throw new Error(taskCreate.combinedOutput || "Failed to create Windows auto-start task.");
161
169
  }
162
170
  installWindowsRunKey(command);
163
- runDaemon("start");
171
+ runWindowsHiddenLauncher();
164
172
  return "run-key";
165
173
  }
166
174
  function uninstallWindowsAutoStart() {
@@ -185,6 +193,9 @@ function uninstallWindowsAutoStart() {
185
193
  else if (!isRegistryValueNotFoundMessage(runKeyDelete.combinedOutput)) {
186
194
  throw new Error(runKeyDelete.combinedOutput || "Failed to remove Windows startup registry entry.");
187
195
  }
196
+ if (fs.existsSync(windowsLauncherScriptPath)) {
197
+ fs.rmSync(windowsLauncherScriptPath, { force: true });
198
+ }
188
199
  return removed;
189
200
  }
190
201
  function showWindowsAutoStartStatus() {
@@ -219,12 +230,20 @@ function runWindowsTask() {
219
230
  }
220
231
  }
221
232
  function startWindowsAutoStart() {
233
+ const command = buildWindowsLaunchCommand();
222
234
  const runKey = queryWindowsRunKey();
223
235
  if (runKey.installed) {
224
- runDaemon("start");
225
- return;
236
+ installWindowsRunKey(command);
237
+ runWindowsHiddenLauncher();
238
+ return "run-key";
239
+ }
240
+ const task = queryWindowsTask();
241
+ if (!task.installed) {
242
+ throw new Error("Service is not installed. Run 'copilot-hub service install' first.");
226
243
  }
244
+ ensureTaskSchedulerAutoStart(command);
227
245
  runWindowsTask();
246
+ return "task";
228
247
  }
229
248
  function queryWindowsRunKey() {
230
249
  const result = runChecked("reg", ["query", WINDOWS_RUN_KEY_PATH, "/v", WINDOWS_RUN_VALUE_NAME], {
@@ -238,6 +257,18 @@ function queryWindowsRunKey() {
238
257
  }
239
258
  throw new Error(result.combinedOutput || "Failed to query Windows startup registry entry.");
240
259
  }
260
+ function queryWindowsTask() {
261
+ const result = runChecked("schtasks", ["/Query", "/TN", WINDOWS_TASK_NAME], {
262
+ allowFailure: true,
263
+ });
264
+ if (result.ok) {
265
+ return { installed: true };
266
+ }
267
+ if (isNotFoundMessage(result.combinedOutput)) {
268
+ return { installed: false };
269
+ }
270
+ throw new Error(result.combinedOutput || "Failed to query Windows auto-start task.");
271
+ }
241
272
  function installWindowsRunKey(command) {
242
273
  runChecked("reg", [
243
274
  "add",
@@ -251,6 +282,16 @@ function installWindowsRunKey(command) {
251
282
  "/f",
252
283
  ], { stdio: "pipe" });
253
284
  }
285
+ function ensureTaskSchedulerAutoStart(command) {
286
+ const result = runChecked("schtasks", ["/Create", "/TN", WINDOWS_TASK_NAME, "/SC", "ONLOGON", "/RL", "LIMITED", "/F", "/TR", command], { allowFailure: true });
287
+ if (result.ok) {
288
+ return;
289
+ }
290
+ if (isNotFoundMessage(result.combinedOutput)) {
291
+ throw new Error("Service is not installed. Run 'copilot-hub service install' first.");
292
+ }
293
+ throw new Error(result.combinedOutput || "Failed to update Windows auto-start task.");
294
+ }
254
295
  function installLinuxService() {
255
296
  ensureSystemctl();
256
297
  const unitPath = getLinuxUnitPath();
@@ -413,6 +454,19 @@ function ensureDaemonScript() {
413
454
  ].join("\n"));
414
455
  }
415
456
  }
457
+ function runWindowsHiddenLauncher() {
458
+ const launcherScriptPath = ensureWindowsLauncherScript();
459
+ const scriptHost = resolveWindowsScriptHost(process.env);
460
+ if (!fs.existsSync(scriptHost)) {
461
+ throw new Error("Windows Script Host is not available.");
462
+ }
463
+ const result = runChecked(scriptHost, ["//B", "//Nologo", launcherScriptPath], {
464
+ allowFailure: true,
465
+ });
466
+ if (!result.ok) {
467
+ throw new Error(result.combinedOutput || "Failed to launch hidden Windows service starter.");
468
+ }
469
+ }
416
470
  function ensureSystemctl() {
417
471
  ensureCommandAvailable("systemctl", ["--version"], "systemd is not available. This command requires Linux with systemd user services.");
418
472
  }
@@ -517,7 +571,17 @@ function getErrorMessage(error) {
517
571
  return String(error ?? "Unknown error.");
518
572
  }
519
573
  function buildWindowsLaunchCommand() {
520
- return `"${nodeBin}" "${daemonScriptPath}" run`;
574
+ const launcherScriptPath = ensureWindowsLauncherScript();
575
+ return buildWindowsHiddenLauncherCommand(launcherScriptPath, process.env);
576
+ }
577
+ function ensureWindowsLauncherScript() {
578
+ ensureDaemonScript();
579
+ return ensureWindowsHiddenLauncher({
580
+ scriptPath: windowsLauncherScriptPath,
581
+ nodeBin,
582
+ daemonScriptPath,
583
+ runtimeDir: layout.runtimeDir,
584
+ });
521
585
  }
522
586
  function escapeXml(value) {
523
587
  return String(value ?? "")
@@ -0,0 +1,51 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ export function resolveWindowsScriptHost(env = process.env) {
4
+ const systemRoot = String(env.SystemRoot ?? env.SYSTEMROOT ?? "C:\\Windows").trim();
5
+ const baseDir = systemRoot || "C:\\Windows";
6
+ return path.win32.join(baseDir, "System32", "wscript.exe");
7
+ }
8
+ export function getWindowsHiddenLauncherScriptPath(runtimeDir) {
9
+ return path.win32.join(runtimeDir, "windows-daemon-launcher.vbs");
10
+ }
11
+ export function ensureWindowsHiddenLauncher({ scriptPath, nodeBin, daemonScriptPath, runtimeDir, }) {
12
+ const content = buildWindowsHiddenLauncherContent({
13
+ nodeBin,
14
+ daemonScriptPath,
15
+ runtimeDir,
16
+ });
17
+ let current = "";
18
+ try {
19
+ current = fs.readFileSync(scriptPath, "utf8");
20
+ }
21
+ catch {
22
+ current = "";
23
+ }
24
+ if (current !== content) {
25
+ fs.mkdirSync(path.dirname(scriptPath), { recursive: true });
26
+ fs.writeFileSync(scriptPath, content, "utf8");
27
+ }
28
+ return scriptPath;
29
+ }
30
+ export function buildWindowsHiddenLauncherCommand(scriptPath, env = process.env) {
31
+ const scriptHost = resolveWindowsScriptHost(env);
32
+ return `"${scriptHost}" //B //Nologo "${scriptPath}"`;
33
+ }
34
+ export function buildWindowsHiddenLauncherContent({ nodeBin, daemonScriptPath, runtimeDir, }) {
35
+ const command = buildWindowsCommandLine([nodeBin, daemonScriptPath, "start"]);
36
+ return [
37
+ "Option Explicit",
38
+ "Dim shell",
39
+ 'Set shell = CreateObject("WScript.Shell")',
40
+ `shell.CurrentDirectory = "${escapeVbsString(runtimeDir)}"`,
41
+ `shell.Run "${escapeVbsString(command)}", 0, False`,
42
+ "Set shell = Nothing",
43
+ "",
44
+ ].join("\r\n");
45
+ }
46
+ function buildWindowsCommandLine(args) {
47
+ return args.map((value) => `"${String(value ?? "")}"`).join(" ");
48
+ }
49
+ function escapeVbsString(value) {
50
+ return String(value ?? "").replace(/"/g, '""');
51
+ }
@@ -316,9 +316,11 @@ function findWindowsNpmGlobalCodexBin(env: NodeJS.ProcessEnv, repoRoot: string):
316
316
  return "";
317
317
  }
318
318
 
319
+ const packageRoots: string[] = [];
319
320
  const candidates: string[] = [];
320
321
  const appData = nonEmpty(env.APPDATA);
321
322
  if (appData) {
323
+ packageRoots.push(path.join(appData, "npm", "node_modules", "@openai", "codex"));
322
324
  candidates.push(path.join(appData, "npm", "codex.cmd"));
323
325
  candidates.push(path.join(appData, "npm", "codex.exe"));
324
326
  candidates.push(path.join(appData, "npm", "codex"));
@@ -326,11 +328,19 @@ function findWindowsNpmGlobalCodexBin(env: NodeJS.ProcessEnv, repoRoot: string):
326
328
 
327
329
  const npmPrefix = readNpmPrefix(repoRoot);
328
330
  if (npmPrefix) {
331
+ packageRoots.push(path.join(npmPrefix, "node_modules", "@openai", "codex"));
329
332
  candidates.push(path.join(npmPrefix, "codex.cmd"));
330
333
  candidates.push(path.join(npmPrefix, "codex.exe"));
331
334
  candidates.push(path.join(npmPrefix, "codex"));
332
335
  }
333
336
 
337
+ for (const packageRoot of dedupe(packageRoots)) {
338
+ const entrypoint = path.join(packageRoot, "bin", "codex.js");
339
+ if (fs.existsSync(entrypoint)) {
340
+ return entrypoint;
341
+ }
342
+ }
343
+
334
344
  for (const candidate of dedupe(candidates)) {
335
345
  if (fs.existsSync(candidate)) {
336
346
  return candidate;
@@ -385,6 +395,15 @@ function runCodex({
385
395
  }
386
396
 
387
397
  function spawnCodex(codexBin: string, args: string[], repoRoot: string) {
398
+ if (/\.(cjs|mjs|js)$/i.test(codexBin)) {
399
+ return spawnSync(process.execPath, [codexBin, ...args], {
400
+ cwd: repoRoot,
401
+ stdio: ["ignore", "pipe", "pipe"],
402
+ shell: false,
403
+ encoding: "utf8",
404
+ });
405
+ }
406
+
388
407
  if (process.platform === "win32" && /\.(cmd|bat)$/i.test(codexBin)) {
389
408
  const commandLine = [
390
409
  quoteWindowsShellValue(codexBin),
@@ -35,6 +35,7 @@ const nodeBin = process.execPath;
35
35
  const agentEngineEnvPath = layout.agentEngineEnvPath;
36
36
  const controlPlaneEnvPath = layout.controlPlaneEnvPath;
37
37
  const codexInstallCommand = `npm install -g ${codexInstallPackageSpec}`;
38
+ const WINDOWS_BACKGROUND_ENV = "COPILOT_HUB_DAEMON_BACKGROUND";
38
39
 
39
40
  const BASE_CHECK_MS = 5000;
40
41
  const MAX_BACKOFF_MS = 60000;
@@ -74,13 +75,23 @@ async function main() {
74
75
  }
75
76
 
76
77
  async function startDaemonProcess() {
78
+ const existingPid = getRunningDaemonPid();
79
+ if (existingPid > 0) {
80
+ console.log(`[daemon] already running (pid ${existingPid})`);
81
+ return;
82
+ }
83
+
84
+ const pid = await spawnDetachedDaemonProcess();
85
+ console.log(`[daemon] started (pid ${pid})`);
86
+ }
87
+
88
+ async function spawnDetachedDaemonProcess() {
77
89
  ensureScripts();
78
90
  ensureRuntimeDirs();
79
91
 
80
92
  const existingPid = getRunningDaemonPid();
81
93
  if (existingPid > 0) {
82
- console.log(`[daemon] already running (pid ${existingPid})`);
83
- return;
94
+ return existingPid;
84
95
  }
85
96
 
86
97
  removeDaemonState();
@@ -94,7 +105,10 @@ async function startDaemonProcess() {
94
105
  stdio: ["ignore", logFd, logFd],
95
106
  windowsHide: true,
96
107
  shell: false,
97
- env: process.env,
108
+ env: {
109
+ ...process.env,
110
+ [WINDOWS_BACKGROUND_ENV]: "1",
111
+ },
98
112
  });
99
113
  } finally {
100
114
  fs.closeSync(logFd);
@@ -111,10 +125,15 @@ async function startDaemonProcess() {
111
125
  throw new Error(`Daemon process exited immediately (pid ${pid}). Check logs: ${daemonLogPath}`);
112
126
  }
113
127
 
114
- console.log(`[daemon] started (pid ${pid})`);
128
+ return pid;
115
129
  }
116
130
 
117
131
  async function runDaemonLoop() {
132
+ if (shouldDetachInteractiveWindowsDaemon()) {
133
+ await spawnDetachedDaemonProcess();
134
+ return;
135
+ }
136
+
118
137
  ensureScripts();
119
138
  ensureRuntimeDirs();
120
139
 
@@ -545,6 +564,22 @@ function shouldPauseBeforeExit() {
545
564
  return true;
546
565
  }
547
566
 
567
+ function shouldDetachInteractiveWindowsDaemon() {
568
+ if (process.platform !== "win32") {
569
+ return false;
570
+ }
571
+
572
+ if (String(process.env[WINDOWS_BACKGROUND_ENV] ?? "").trim() === "1") {
573
+ return false;
574
+ }
575
+
576
+ if (!process.stdin || !process.stdout) {
577
+ return false;
578
+ }
579
+
580
+ return Boolean(process.stdin.isTTY && process.stdout.isTTY);
581
+ }
582
+
548
583
  function detectFatalStartupError(ensureResult) {
549
584
  const evidenceChunks = [
550
585
  String(ensureResult?.combinedOutput ?? ""),
@@ -7,6 +7,12 @@ import process from "node:process";
7
7
  import { spawnSync } from "node:child_process";
8
8
  import { fileURLToPath } from "node:url";
9
9
  import { initializeCopilotHubLayout, resolveCopilotHubLayout } from "./install-layout.mjs";
10
+ import {
11
+ buildWindowsHiddenLauncherCommand,
12
+ ensureWindowsHiddenLauncher,
13
+ getWindowsHiddenLauncherScriptPath,
14
+ resolveWindowsScriptHost,
15
+ } from "./windows-hidden-launcher.mjs";
10
16
 
11
17
  const __filename = fileURLToPath(import.meta.url);
12
18
  const __dirname = path.dirname(__filename);
@@ -15,6 +21,7 @@ const layout = resolveCopilotHubLayout({ repoRoot });
15
21
  initializeCopilotHubLayout({ repoRoot, layout });
16
22
  const nodeBin = process.execPath;
17
23
  const daemonScriptPath = path.join(repoRoot, "scripts", "dist", "daemon.mjs");
24
+ const windowsLauncherScriptPath = getWindowsHiddenLauncherScriptPath(layout.runtimeDir);
18
25
 
19
26
  const WINDOWS_TASK_NAME = "CopilotHub";
20
27
  const WINDOWS_RUN_KEY_PATH = "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run";
@@ -134,7 +141,12 @@ async function showStatus() {
134
141
 
135
142
  async function startService() {
136
143
  if (process.platform === "win32") {
137
- startWindowsAutoStart();
144
+ const mode = startWindowsAutoStart();
145
+ if (mode === "run-key") {
146
+ console.log("Service started in background (Windows startup registry entry).");
147
+ } else {
148
+ console.log("Service started in background (Windows Task Scheduler).");
149
+ }
138
150
  return;
139
151
  }
140
152
 
@@ -196,7 +208,7 @@ function installWindowsAutoStart() {
196
208
  }
197
209
 
198
210
  installWindowsRunKey(command);
199
- runDaemon("start");
211
+ runWindowsHiddenLauncher();
200
212
  return "run-key";
201
213
  }
202
214
 
@@ -236,6 +248,10 @@ function uninstallWindowsAutoStart() {
236
248
  );
237
249
  }
238
250
 
251
+ if (fs.existsSync(windowsLauncherScriptPath)) {
252
+ fs.rmSync(windowsLauncherScriptPath, { force: true });
253
+ }
254
+
239
255
  return removed;
240
256
  }
241
257
 
@@ -281,12 +297,20 @@ function runWindowsTask() {
281
297
  }
282
298
 
283
299
  function startWindowsAutoStart() {
300
+ const command = buildWindowsLaunchCommand();
284
301
  const runKey = queryWindowsRunKey();
285
302
  if (runKey.installed) {
286
- runDaemon("start");
287
- return;
303
+ installWindowsRunKey(command);
304
+ runWindowsHiddenLauncher();
305
+ return "run-key";
306
+ }
307
+ const task = queryWindowsTask();
308
+ if (!task.installed) {
309
+ throw new Error("Service is not installed. Run 'copilot-hub service install' first.");
288
310
  }
311
+ ensureTaskSchedulerAutoStart(command);
289
312
  runWindowsTask();
313
+ return "task";
290
314
  }
291
315
 
292
316
  function queryWindowsRunKey() {
@@ -302,6 +326,19 @@ function queryWindowsRunKey() {
302
326
  throw new Error(result.combinedOutput || "Failed to query Windows startup registry entry.");
303
327
  }
304
328
 
329
+ function queryWindowsTask() {
330
+ const result = runChecked("schtasks", ["/Query", "/TN", WINDOWS_TASK_NAME], {
331
+ allowFailure: true,
332
+ });
333
+ if (result.ok) {
334
+ return { installed: true };
335
+ }
336
+ if (isNotFoundMessage(result.combinedOutput)) {
337
+ return { installed: false };
338
+ }
339
+ throw new Error(result.combinedOutput || "Failed to query Windows auto-start task.");
340
+ }
341
+
305
342
  function installWindowsRunKey(command) {
306
343
  runChecked(
307
344
  "reg",
@@ -320,6 +357,21 @@ function installWindowsRunKey(command) {
320
357
  );
321
358
  }
322
359
 
360
+ function ensureTaskSchedulerAutoStart(command) {
361
+ const result = runChecked(
362
+ "schtasks",
363
+ ["/Create", "/TN", WINDOWS_TASK_NAME, "/SC", "ONLOGON", "/RL", "LIMITED", "/F", "/TR", command],
364
+ { allowFailure: true },
365
+ );
366
+ if (result.ok) {
367
+ return;
368
+ }
369
+ if (isNotFoundMessage(result.combinedOutput)) {
370
+ throw new Error("Service is not installed. Run 'copilot-hub service install' first.");
371
+ }
372
+ throw new Error(result.combinedOutput || "Failed to update Windows auto-start task.");
373
+ }
374
+
323
375
  function installLinuxService() {
324
376
  ensureSystemctl();
325
377
  const unitPath = getLinuxUnitPath();
@@ -504,6 +556,20 @@ function ensureDaemonScript() {
504
556
  }
505
557
  }
506
558
 
559
+ function runWindowsHiddenLauncher() {
560
+ const launcherScriptPath = ensureWindowsLauncherScript();
561
+ const scriptHost = resolveWindowsScriptHost(process.env);
562
+ if (!fs.existsSync(scriptHost)) {
563
+ throw new Error("Windows Script Host is not available.");
564
+ }
565
+ const result = runChecked(scriptHost, ["//B", "//Nologo", launcherScriptPath], {
566
+ allowFailure: true,
567
+ });
568
+ if (!result.ok) {
569
+ throw new Error(result.combinedOutput || "Failed to launch hidden Windows service starter.");
570
+ }
571
+ }
572
+
507
573
  function ensureSystemctl() {
508
574
  ensureCommandAvailable(
509
575
  "systemctl",
@@ -629,7 +695,18 @@ function getErrorMessage(error) {
629
695
  }
630
696
 
631
697
  function buildWindowsLaunchCommand() {
632
- return `"${nodeBin}" "${daemonScriptPath}" run`;
698
+ const launcherScriptPath = ensureWindowsLauncherScript();
699
+ return buildWindowsHiddenLauncherCommand(launcherScriptPath, process.env);
700
+ }
701
+
702
+ function ensureWindowsLauncherScript() {
703
+ ensureDaemonScript();
704
+ return ensureWindowsHiddenLauncher({
705
+ scriptPath: windowsLauncherScriptPath,
706
+ nodeBin,
707
+ daemonScriptPath,
708
+ runtimeDir: layout.runtimeDir,
709
+ });
633
710
  }
634
711
 
635
712
  function escapeXml(value) {
@@ -0,0 +1,81 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+
4
+ export function resolveWindowsScriptHost(env: NodeJS.ProcessEnv = process.env): string {
5
+ const systemRoot = String(env.SystemRoot ?? env.SYSTEMROOT ?? "C:\\Windows").trim();
6
+ const baseDir = systemRoot || "C:\\Windows";
7
+ return path.win32.join(baseDir, "System32", "wscript.exe");
8
+ }
9
+
10
+ export function getWindowsHiddenLauncherScriptPath(runtimeDir: string): string {
11
+ return path.win32.join(runtimeDir, "windows-daemon-launcher.vbs");
12
+ }
13
+
14
+ export function ensureWindowsHiddenLauncher({
15
+ scriptPath,
16
+ nodeBin,
17
+ daemonScriptPath,
18
+ runtimeDir,
19
+ }: {
20
+ scriptPath: string;
21
+ nodeBin: string;
22
+ daemonScriptPath: string;
23
+ runtimeDir: string;
24
+ }): string {
25
+ const content = buildWindowsHiddenLauncherContent({
26
+ nodeBin,
27
+ daemonScriptPath,
28
+ runtimeDir,
29
+ });
30
+
31
+ let current = "";
32
+ try {
33
+ current = fs.readFileSync(scriptPath, "utf8");
34
+ } catch {
35
+ current = "";
36
+ }
37
+
38
+ if (current !== content) {
39
+ fs.mkdirSync(path.dirname(scriptPath), { recursive: true });
40
+ fs.writeFileSync(scriptPath, content, "utf8");
41
+ }
42
+
43
+ return scriptPath;
44
+ }
45
+
46
+ export function buildWindowsHiddenLauncherCommand(
47
+ scriptPath: string,
48
+ env: NodeJS.ProcessEnv = process.env,
49
+ ): string {
50
+ const scriptHost = resolveWindowsScriptHost(env);
51
+ return `"${scriptHost}" //B //Nologo "${scriptPath}"`;
52
+ }
53
+
54
+ export function buildWindowsHiddenLauncherContent({
55
+ nodeBin,
56
+ daemonScriptPath,
57
+ runtimeDir,
58
+ }: {
59
+ nodeBin: string;
60
+ daemonScriptPath: string;
61
+ runtimeDir: string;
62
+ }): string {
63
+ const command = buildWindowsCommandLine([nodeBin, daemonScriptPath, "start"]);
64
+ return [
65
+ "Option Explicit",
66
+ "Dim shell",
67
+ 'Set shell = CreateObject("WScript.Shell")',
68
+ `shell.CurrentDirectory = "${escapeVbsString(runtimeDir)}"`,
69
+ `shell.Run "${escapeVbsString(command)}", 0, False`,
70
+ "Set shell = Nothing",
71
+ "",
72
+ ].join("\r\n");
73
+ }
74
+
75
+ function buildWindowsCommandLine(args: string[]): string {
76
+ return args.map((value) => `"${String(value ?? "")}"`).join(" ");
77
+ }
78
+
79
+ function escapeVbsString(value: string): string {
80
+ return String(value ?? "").replace(/"/g, '""');
81
+ }
@@ -0,0 +1,66 @@
1
+ import assert from "node:assert/strict";
2
+ import fs from "node:fs";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import test from "node:test";
6
+ import {
7
+ buildWindowsHiddenLauncherCommand,
8
+ buildWindowsHiddenLauncherContent,
9
+ ensureWindowsHiddenLauncher,
10
+ resolveWindowsScriptHost,
11
+ } from "../dist/windows-hidden-launcher.mjs";
12
+
13
+ test("resolveWindowsScriptHost prefers SystemRoot", () => {
14
+ const actual = resolveWindowsScriptHost({ SystemRoot: "D:\\Windows" });
15
+ assert.equal(actual, path.win32.join("D:\\Windows", "System32", "wscript.exe"));
16
+ });
17
+
18
+ test("buildWindowsHiddenLauncherCommand uses wscript in batch mode", () => {
19
+ const actual = buildWindowsHiddenLauncherCommand("C:\\runtime\\launcher.vbs", {
20
+ SystemRoot: "C:\\Windows",
21
+ });
22
+ assert.equal(
23
+ actual,
24
+ '"C:\\Windows\\System32\\wscript.exe" //B //Nologo "C:\\runtime\\launcher.vbs"',
25
+ );
26
+ });
27
+
28
+ test("buildWindowsHiddenLauncherContent starts daemon in hidden mode", () => {
29
+ const content = buildWindowsHiddenLauncherContent({
30
+ nodeBin: "C:\\Program Files\\nodejs\\node.exe",
31
+ daemonScriptPath: "C:\\Program Files\\copilot-hub\\scripts\\dist\\daemon.mjs",
32
+ runtimeDir: "C:\\Users\\amine\\AppData\\Roaming\\copilot-hub\\runtime",
33
+ });
34
+
35
+ assert.match(content, /CreateObject\("WScript\.Shell"\)/);
36
+ assert.match(content, /shell\.Run/);
37
+ assert.match(content, /, 0, False/);
38
+ assert.match(content, /"start"/);
39
+ });
40
+
41
+ test("ensureWindowsHiddenLauncher writes and preserves launcher content", () => {
42
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "copilot-hub-launcher-"));
43
+ const scriptPath = path.join(tempDir, "windows-daemon-launcher.vbs");
44
+
45
+ try {
46
+ ensureWindowsHiddenLauncher({
47
+ scriptPath,
48
+ nodeBin: "C:\\node.exe",
49
+ daemonScriptPath: "C:\\copilot-hub\\daemon.mjs",
50
+ runtimeDir: "C:\\copilot-hub\\runtime",
51
+ });
52
+
53
+ const first = fs.readFileSync(scriptPath, "utf8");
54
+ ensureWindowsHiddenLauncher({
55
+ scriptPath,
56
+ nodeBin: "C:\\node.exe",
57
+ daemonScriptPath: "C:\\copilot-hub\\daemon.mjs",
58
+ runtimeDir: "C:\\copilot-hub\\runtime",
59
+ });
60
+ const second = fs.readFileSync(scriptPath, "utf8");
61
+
62
+ assert.equal(second, first);
63
+ } finally {
64
+ fs.rmSync(tempDir, { recursive: true, force: true });
65
+ }
66
+ });