@mclean-capital/neura 2.1.1 → 2.1.3

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/core/version.txt CHANGED
@@ -1 +1 @@
1
- 2.1.1
1
+ 2.1.3
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAuCA;;;;;GAKG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA6GnD"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAqDA;;;;;GAKG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA+GnD"}
@@ -1,5 +1,5 @@
1
1
  import chalk from 'chalk';
2
- import { spawnSync } from 'child_process';
2
+ import { execSync, spawnSync } from 'child_process';
3
3
  import { existsSync } from 'fs';
4
4
  import { join } from 'path';
5
5
  import { CLI_VERSION } from '../version.js';
@@ -22,19 +22,33 @@ const PACKAGE_NAME = '@mclean-capital/neura';
22
22
  * install layout); the caller falls back to printing a manual instruction.
23
23
  */
24
24
  function resolveFreshCliEntrypoint() {
25
+ // We use execSync rather than spawnSync here to avoid DEP0190. The npm
26
+ // CLI on Windows is `npm.cmd` (a shell-script wrapper), and spawning
27
+ // `.cmd`/`.bat` files on Windows requires `shell: true` (CVE-2024-27980).
28
+ // But `spawnSync(cmd, args, { shell: true })` is deprecated in Node 22+
29
+ // because the args are concatenated into the shell command string
30
+ // without escaping. execSync with a single pre-joined command string
31
+ // sidesteps both problems — and because every token in this command is
32
+ // a hardcoded constant, there's no injection surface.
25
33
  const npmCmd = process.platform === 'win32' ? 'npm.cmd' : 'npm';
26
- const result = spawnSync(npmCmd, ['root', '-g'], {
27
- encoding: 'utf-8',
28
- shell: process.platform === 'win32',
29
- });
30
- if (result.status !== 0 || !result.stdout)
31
- return null;
32
- const globalRoot = result.stdout.trim();
33
- if (!globalRoot)
34
+ try {
35
+ const stdout = execSync(`${npmCmd} root -g`, {
36
+ encoding: 'utf-8',
37
+ stdio: ['ignore', 'pipe', 'ignore'],
38
+ });
39
+ const globalRoot = stdout.trim();
40
+ if (!globalRoot)
41
+ return null;
42
+ // npm packages with scopes live at <root>/@scope/name/
43
+ const candidate = join(globalRoot, PACKAGE_NAME, 'dist', 'index.js');
44
+ return existsSync(candidate) ? candidate : null;
45
+ }
46
+ catch {
47
+ // `npm` not on PATH, `npm root -g` exited non-zero, or the candidate
48
+ // path isn't where we expected — caller falls back to manual
49
+ // instructions.
34
50
  return null;
35
- // npm packages with scopes live at <root>/@scope/name/
36
- const candidate = join(globalRoot, PACKAGE_NAME, 'dist', 'index.js');
37
- return existsSync(candidate) ? candidate : null;
51
+ }
38
52
  }
39
53
  /**
40
54
  * Update Neura by reinstalling the npm package and restarting the core service.
@@ -77,13 +91,17 @@ export async function updateCommand() {
77
91
  // want to run `npm install -g` and re-register the service below. Both
78
92
  // operations are idempotent and fast when nothing actually changes.
79
93
  const npmCmd = process.platform === 'win32' ? 'npm.cmd' : 'npm';
80
- console.log(chalk.dim(` Running: ${npmCmd} install -g ${PACKAGE_NAME}@latest`));
94
+ const installCmd = `${npmCmd} install -g ${PACKAGE_NAME}@latest`;
95
+ console.log(chalk.dim(` Running: ${installCmd}`));
81
96
  console.log();
82
- const result = spawnSync(npmCmd, ['install', '-g', `${PACKAGE_NAME}@latest`], {
83
- stdio: 'inherit',
84
- shell: process.platform === 'win32',
85
- });
86
- if (result.status !== 0) {
97
+ // Same DEP0190 reasoning as `resolveFreshCliEntrypoint` above: use
98
+ // execSync with a single pre-joined command string rather than
99
+ // `spawnSync(cmd, args, { shell: true })`. All three tokens in this
100
+ // string are hardcoded constants — no injection surface.
101
+ try {
102
+ execSync(installCmd, { stdio: 'inherit' });
103
+ }
104
+ catch {
87
105
  console.log();
88
106
  console.log(chalk.red(' ✗ npm install failed. Check your network connection and try running the\n' +
89
107
  ' command above manually.'));
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAE7C;;;;;;;;;;;;;;;GAeG;AACH,SAAS,yBAAyB;IAChC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IAChE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;QAC/C,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;KACpC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,uDAAuD;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACrE,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,UAAU,uBAAuB,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,gDAAgD;IAChD,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,8BAA8B,YAAY,SAAS,EAAE;YAC3E,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;YACvC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;YACxD,MAAM,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;QAChC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,6EAA6E;IAC/E,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC,CAAC;YACxF,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IACD,0EAA0E;IAC1E,0EAA0E;IAC1E,wEAAwE;IACxE,uEAAuE;IACvE,oEAAoE;IAEpE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,MAAM,eAAe,YAAY,SAAS,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,YAAY,SAAS,CAAC,EAAE;QAC5E,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;KACpC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,6EAA6E;YAC3E,6BAA6B,CAChC,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAEhD,mEAAmE;IACnE,EAAE;IACF,kEAAkE;IAClE,oEAAoE;IACpE,8DAA8D;IAC9D,EAAE;IACF,wEAAwE;IACxE,wEAAwE;IACxE,wEAAwE;IACxE,sEAAsE;IACtE,sEAAsE;IACtE,iDAAiD;IACjD,EAAE;IACF,wEAAwE;IACxE,kEAAkE;IAClE,qEAAqE;IACrE,sEAAsE;IACtE,uEAAuE;IACvE,qEAAqE;IACrE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,yBAAyB,EAAE,CAAC;IAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,kEAAkE;YAChE,gEAAgE;YAChE,uBAAuB,CAC1B,CACF,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE;QAClF,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IAEH,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,yDAAyD;YACvD,uDAAuD,CAC1D,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,12 @@ interface ShimContext {
42
42
  errLogFile: string;
43
43
  pidFile: string;
44
44
  cmdPath: string;
45
+ /**
46
+ * VBScript launcher path. Used by `spawnDetachedCore` via `wscript.exe`
47
+ * to kick off the `.cmd` shim without allocating a visible console
48
+ * window. See `renderVbsLauncher` and `spawnDetachedCore` for details.
49
+ */
50
+ vbsPath: string;
45
51
  }
46
52
  declare function getShimContext(): ShimContext;
47
53
  declare function getStartupShimPath(): string;
@@ -82,6 +88,45 @@ declare function escapeCmd(str: string): string;
82
88
  * `stop()` key off of.
83
89
  */
84
90
  declare function renderCmdShim(ctx: ShimContext): string;
91
+ /**
92
+ * Escape a string for safe embedding in a VBScript string literal.
93
+ *
94
+ * VBScript strings use `""` as the escape for a literal double-quote.
95
+ * No other escapes needed for our use case (we only interpolate
96
+ * filesystem paths, which on Windows can't contain newlines and
97
+ * effectively never contain `"`).
98
+ */
99
+ declare function escapeVbs(str: string): string;
100
+ /**
101
+ * Render the VBScript launcher that `spawnDetachedCore` invokes via
102
+ * `wscript.exe` to kick off the `.cmd` shim without a visible window.
103
+ *
104
+ * Why this indirection exists at all:
105
+ *
106
+ * On Windows, spawning the shim directly via
107
+ * `spawn('cmd.exe', [shim], { detached: true, windowsHide: true })`
108
+ * pops up a terminal window in recent Windows Terminal installs
109
+ * where "Default terminal" is set to Windows Terminal. Node's docs
110
+ * explicitly state that on Windows, `detached: true` "will have
111
+ * its own console window" — that console allocation is intercepted
112
+ * by Windows Terminal and shown as a visible tab, `windowsHide`
113
+ * notwithstanding.
114
+ *
115
+ * Removing `detached: true` fixes the popup but also kills the
116
+ * child when the Neura CLI process exits (the core needs to
117
+ * survive long past the 100ms `neura start` invocation).
118
+ *
119
+ * The fix: spawn `wscript.exe` instead of `cmd.exe`. WScript is a
120
+ * GUI app, not a console app — it has no console to attach to, so
121
+ * `detached: true` doesn't create a new console window. WScript
122
+ * runs this `.vbs` file, which calls `WshShell.Run` with window
123
+ * style `0` (hidden), which internally uses `ShellExecuteEx` to
124
+ * launch the `.cmd` shim fully detached with no visible window.
125
+ * WScript exits immediately after dispatching the Run call, and
126
+ * the shim's cmd.exe + node.exe subtree continues running,
127
+ * invisible and independent.
128
+ */
129
+ declare function renderVbsLauncher(ctx: ShimContext): string;
85
130
  export declare function isInstalled(): boolean;
86
131
  /**
87
132
  * Check if the core process is currently alive.
@@ -131,6 +176,8 @@ export declare const __test__: {
131
176
  getShimContext: typeof getShimContext;
132
177
  getStartupShimPath: typeof getStartupShimPath;
133
178
  renderCmdShim: typeof renderCmdShim;
179
+ renderVbsLauncher: typeof renderVbsLauncher;
134
180
  escapeCmd: typeof escapeCmd;
181
+ escapeVbs: typeof escapeVbs;
135
182
  };
136
183
  //# sourceMappingURL=windows.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"windows.d.ts","sourceRoot":"","sources":["../../src/service/windows.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,iBAAS,cAAc,IAAI,WAAW,CAarC;AAED,iBAAS,kBAAkB,IAAI,MAAM,CAYpC;AAED;;;;;;;;GAQG;AACH,iBAAS,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,iBAAS,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAc/C;AA2GD,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAgBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,IAAI,OAAO,CA0BnC;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAI5D,wEAAwE;AACxE,wBAAgB,kBAAkB,IAAI,WAAW,GAAG,IAAI,CAEvD;AAED,wBAAgB,OAAO,IAAI,IAAI,CAuC9B;AAED,wBAAgB,SAAS,IAAI,IAAI,CAOhC;AAED,wBAAgB,KAAK,IAAI,IAAI,CAG5B;AAED,wBAAgB,IAAI,IAAI,IAAI,CA6B3B;AAED,wBAAgB,OAAO,IAAI,IAAI,CAG9B;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;;;;;;;;;;;AAED,wBASW;AAGX,eAAO,MAAM,QAAQ;;;;;;CAMpB,CAAC"}
1
+ {"version":3,"file":"windows.d.ts","sourceRoot":"","sources":["../../src/service/windows.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,iBAAS,cAAc,IAAI,WAAW,CAcrC;AAED,iBAAS,kBAAkB,IAAI,MAAM,CAYpC;AAED;;;;;;;;GAQG;AACH,iBAAS,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,iBAAS,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAc/C;AAYD;;;;;;;GAOG;AACH,iBAAS,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,iBAAS,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAUnD;AAuID,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAgBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,IAAI,OAAO,CA0BnC;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAI5D,wEAAwE;AACxE,wBAAgB,kBAAkB,IAAI,WAAW,GAAG,IAAI,CAEvD;AAED,wBAAgB,OAAO,IAAI,IAAI,CA+C9B;AAED,wBAAgB,SAAS,IAAI,IAAI,CAQhC;AAED,wBAAgB,KAAK,IAAI,IAAI,CAG5B;AAED,wBAAgB,IAAI,IAAI,IAAI,CA6B3B;AAED,wBAAgB,OAAO,IAAI,IAAI,CAG9B;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;;;;;;;;;;;AAED,wBASW;AAGX,eAAO,MAAM,QAAQ;;;;;;;;CAQpB,CAAC"}
@@ -17,6 +17,7 @@ function getShimContext() {
17
17
  errLogFile: join(logDir, 'core.error.log'),
18
18
  pidFile: join(home, 'neura-core.pid'),
19
19
  cmdPath: join(home, 'neura-core.cmd'),
20
+ vbsPath: join(home, 'neura-core-launcher.vbs'),
20
21
  };
21
22
  }
22
23
  function getStartupShimPath() {
@@ -89,6 +90,60 @@ function writeCmdShim(ctx) {
89
90
  mkdirSync(ctx.logDir, { recursive: true });
90
91
  writeFileSync(ctx.cmdPath, renderCmdShim(ctx), 'utf-8');
91
92
  }
93
+ /**
94
+ * Escape a string for safe embedding in a VBScript string literal.
95
+ *
96
+ * VBScript strings use `""` as the escape for a literal double-quote.
97
+ * No other escapes needed for our use case (we only interpolate
98
+ * filesystem paths, which on Windows can't contain newlines and
99
+ * effectively never contain `"`).
100
+ */
101
+ function escapeVbs(str) {
102
+ return str.replace(/"/g, '""');
103
+ }
104
+ /**
105
+ * Render the VBScript launcher that `spawnDetachedCore` invokes via
106
+ * `wscript.exe` to kick off the `.cmd` shim without a visible window.
107
+ *
108
+ * Why this indirection exists at all:
109
+ *
110
+ * On Windows, spawning the shim directly via
111
+ * `spawn('cmd.exe', [shim], { detached: true, windowsHide: true })`
112
+ * pops up a terminal window in recent Windows Terminal installs
113
+ * where "Default terminal" is set to Windows Terminal. Node's docs
114
+ * explicitly state that on Windows, `detached: true` "will have
115
+ * its own console window" — that console allocation is intercepted
116
+ * by Windows Terminal and shown as a visible tab, `windowsHide`
117
+ * notwithstanding.
118
+ *
119
+ * Removing `detached: true` fixes the popup but also kills the
120
+ * child when the Neura CLI process exits (the core needs to
121
+ * survive long past the 100ms `neura start` invocation).
122
+ *
123
+ * The fix: spawn `wscript.exe` instead of `cmd.exe`. WScript is a
124
+ * GUI app, not a console app — it has no console to attach to, so
125
+ * `detached: true` doesn't create a new console window. WScript
126
+ * runs this `.vbs` file, which calls `WshShell.Run` with window
127
+ * style `0` (hidden), which internally uses `ShellExecuteEx` to
128
+ * launch the `.cmd` shim fully detached with no visible window.
129
+ * WScript exits immediately after dispatching the Run call, and
130
+ * the shim's cmd.exe + node.exe subtree continues running,
131
+ * invisible and independent.
132
+ */
133
+ function renderVbsLauncher(ctx) {
134
+ // WshShell.Run(command, windowStyle, bWaitOnReturn):
135
+ // command = fully-quoted path to the .cmd shim
136
+ // windowStyle = 0 → hidden
137
+ // bWaitOnReturn = False → fire-and-forget
138
+ return `' Neura core hidden launcher. Generated by \`neura install\`.\r
139
+ ' Do not edit; re-run \`neura install\` to regenerate.\r
140
+ Set shell = CreateObject("WScript.Shell")\r
141
+ shell.Run Chr(34) & "${escapeVbs(ctx.cmdPath)}" & Chr(34), 0, False\r
142
+ `;
143
+ }
144
+ function writeVbsLauncher(ctx) {
145
+ writeFileSync(ctx.vbsPath, renderVbsLauncher(ctx), 'utf-8');
146
+ }
92
147
  /**
93
148
  * Register the Scheduled Task via `schtasks /Create`.
94
149
  *
@@ -157,15 +212,49 @@ function removeStartupShim() {
157
212
  unlinkSync(shimPath);
158
213
  }
159
214
  /**
160
- * Spawn the launcher `.cmd` as a detached child so the core starts
161
- * immediately on first install (instead of waiting for the next logon).
215
+ * Spawn the launcher `.cmd` so the core starts immediately after
216
+ * `neura install` / `neura start` (instead of waiting for the next
217
+ * logon to trigger the Scheduled Task / Startup shim).
218
+ *
219
+ * The spawn chain:
220
+ *
221
+ * Node CLI
222
+ * → wscript.exe (detached, hidden, no console to show)
223
+ * → neura-core-launcher.vbs
224
+ * → WshShell.Run("neura-core.cmd", windowStyle=0, wait=False)
225
+ * → cmd.exe (hidden, detached via ShellExecuteEx)
226
+ * → node.exe running the core bundle
162
227
  *
163
- * We use `spawn` + `{ detached: true, stdio: 'ignore' }` + `.unref()` so
164
- * the parent `neura install` process can exit cleanly while core keeps
165
- * running. `windowsHide: true` suppresses the flash of a cmd console.
228
+ * Why this convoluted chain? We tried the obvious thing
229
+ * `spawn('cmd.exe', [shim], { detached: true, windowsHide: true })`
230
+ * and it pops up a visible Windows Terminal tab in any install where
231
+ * "Default terminal" is set to Windows Terminal. Node's docs say
232
+ * `detached: true` "will have its own console window" on Windows, and
233
+ * that console allocation is intercepted by Windows Terminal's
234
+ * default-terminal shim regardless of the `windowsHide` flag.
235
+ *
236
+ * Removing `detached: true` fixes the popup but breaks survival: the
237
+ * child gets killed when the parent Node CLI exits (~100ms later).
238
+ *
239
+ * The workaround is to launch via `wscript.exe`, a GUI application
240
+ * that has no console. With `detached: true`, Windows still creates a
241
+ * fresh process-group leader, but there is no console allocation at
242
+ * all — no popup. `wscript.exe` runs a tiny `.vbs` file that invokes
243
+ * `WshShell.Run` with window style `0` and `bWaitOnReturn=False`.
244
+ * That's a thin wrapper over `ShellExecuteEx`, which launches the
245
+ * `.cmd` shim with `SW_HIDE` and returns immediately. The shim runs
246
+ * `cmd.exe` → `node.exe` invisibly, and those processes survive long
247
+ * after both `wscript` and the Neura CLI have exited because
248
+ * ShellExecuteEx properly orphans them.
249
+ *
250
+ * Verified end-to-end on a real Windows machine where the previous
251
+ * `cmd.exe` approach reliably popped up a terminal tab — this chain
252
+ * produces zero visible windows and the core runs on the correct
253
+ * port, surviving the parent `neura start` process exiting ~100ms
254
+ * after spawn.
166
255
  */
167
256
  function spawnDetachedCore(ctx) {
168
- const child = spawn('cmd.exe', ['/d', '/c', ctx.cmdPath], {
257
+ const child = spawn('wscript.exe', [ctx.vbsPath], {
169
258
  detached: true,
170
259
  stdio: 'ignore',
171
260
  windowsHide: true,
@@ -238,10 +327,18 @@ export function getLastInstallMode() {
238
327
  }
239
328
  export function install() {
240
329
  const ctx = getShimContext();
241
- // Always regenerate the launcher shim so it picks up any new paths
242
- // or config changes since the last install. Idempotent: overwriting
243
- // the .cmd file is safe whether or not the task is already registered.
330
+ // Always regenerate both launchers so they pick up any new paths or
331
+ // config changes since the last install. Idempotent: overwriting
332
+ // both files is safe whether or not the task is already registered.
333
+ //
334
+ // - `neura-core.cmd` → invoked by the Scheduled Task or
335
+ // Startup-folder shim at logon
336
+ // - `neura-core-launcher.vbs` → invoked by `spawnDetachedCore`
337
+ // via `wscript.exe` to start the
338
+ // core from `install()`/`start()`
339
+ // without a visible popup window
244
340
  writeCmdShim(ctx);
341
+ writeVbsLauncher(ctx);
245
342
  // Prefer the Scheduled Task path — it survives reboots cleanly and
246
343
  // shows up in Task Scheduler so the user can manage it from the GUI.
247
344
  // If it fails (GPO, corp lockdown, schtasks.exe missing from PATH,
@@ -278,9 +375,10 @@ export function uninstall() {
278
375
  stop();
279
376
  deleteScheduledTask();
280
377
  removeStartupShim();
281
- // Leave NEURA_HOME/neura-core.cmd in place — it's harmless and is
282
- // re-written on next `neura install`. Don't delete NEURA_HOME itself;
283
- // that's the user's config + memory store.
378
+ // Leave NEURA_HOME/neura-core.cmd and neura-core-launcher.vbs in
379
+ // place they're harmless and get re-written on next
380
+ // `neura install`. Don't delete NEURA_HOME itself; that's the user's
381
+ // config + memory store.
284
382
  }
285
383
  export function start() {
286
384
  if (isRunning())
@@ -341,6 +439,8 @@ export const __test__ = {
341
439
  getShimContext,
342
440
  getStartupShimPath,
343
441
  renderCmdShim,
442
+ renderVbsLauncher,
344
443
  escapeCmd,
444
+ escapeVbs,
345
445
  };
346
446
  //# sourceMappingURL=windows.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"windows.js","sourceRoot":"","sources":["../../src/service/windows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"windows.js","sourceRoot":"","sources":["../../src/service/windows.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mclean-capital/neura",
3
- "version": "2.1.1",
3
+ "version": "2.1.3",
4
4
  "description": "Neura — CLI for installing and managing the Neura AI assistant core service. Includes text chat and voice listen clients.",
5
5
  "keywords": [
6
6
  "neura",