gm-skill 2.0.1230 → 2.0.1232

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/README.md CHANGED
@@ -35,7 +35,7 @@ An earlier generation fanned out fifteen per-platform downstream repos (gm-cc, g
35
35
 
36
36
  ## Version
37
37
 
38
- `2.0.1230` — auto-bumped from the canonical `gm` repo. Every push to `AnEntrypoint/gm` (or any cascading sibling crate) republishes this package.
38
+ `2.0.1232` — auto-bumped from the canonical `gm` repo. Every push to `AnEntrypoint/gm` (or any cascading sibling crate) republishes this package.
39
39
 
40
40
  ## Source of truth
41
41
 
package/bin/bootstrap.js CHANGED
@@ -264,6 +264,9 @@ async function extractNpmPackageWasm(destPath, version) {
264
264
  timeout: ATTEMPT_TIMEOUT_MS,
265
265
  encoding: 'utf8',
266
266
  windowsHide: true,
267
+ // CREATE_NO_WINDOW — inherited by all .cmd shims npm/npx spawn
268
+ // during package extraction, so no conhost flash during install.
269
+ ...(process.platform === 'win32' ? { creationFlags: 0x08000000 } : {}),
267
270
  }
268
271
  );
269
272
 
@@ -211,6 +211,9 @@ async function extractNpmPackageWasm(destPath, version) {
211
211
  timeout: ATTEMPT_TIMEOUT_MS,
212
212
  encoding: 'utf8',
213
213
  windowsHide: true,
214
+ // CREATE_NO_WINDOW — inherited by .cmd shims npm spawns during
215
+ // package install, so no conhost flash during the extract step.
216
+ ...(process.platform === 'win32' ? { creationFlags: 0x08000000 } : {}),
214
217
  });
215
218
 
216
219
  if (result.error) throw result.error;
@@ -797,15 +797,22 @@ function ensureAcptoapi() {
797
797
  }
798
798
  // Resolve `bun` to its actual .exe on Windows so the spawned daemon
799
799
  // doesn't enter conhost via a bun.cmd shim. See
800
- // [[windows-spawn-cmd-shim-flash]] — cmd.exe + .cmd chain re-enters
801
- // conhost even with windowsHide:true on the parent. Falls back to
802
- // the bare name on non-Windows / when `where` can't resolve.
800
+ // [[windows-spawn-cmd-shim-flash]].
801
+ //
802
+ // Use CREATE_NO_WINDOW (0x08000000) | DETACHED_PROCESS (0x00000008)
803
+ // creationFlags so the suppression is INHERITED by every descendant
804
+ // bun-x downloads and launches (acptoapi itself spawns 11 ACP sub-
805
+ // daemons via .cmd shims; without this flag each one pops a conhost
806
+ // window). windowsHide:true alone only hides the immediate child.
807
+ const CREATE_NO_WINDOW = 0x08000000;
808
+ const DETACHED_PROCESS = 0x00000008;
803
809
  const cmd = resolveWindowsExeLocal('bun');
804
810
  const child = spawn(cmd, ['x', 'acptoapi@latest'], {
805
811
  detached: true,
806
812
  stdio: 'ignore',
807
813
  windowsHide: true,
808
814
  shell: false,
815
+ creationFlags: CREATE_NO_WINDOW | DETACHED_PROCESS,
809
816
  });
810
817
  child.unref();
811
818
  _acptoapiBoot.spawned_at = Date.now();
@@ -906,7 +913,17 @@ function getOrCreateBrowserSession(cwd, claudeSessionId, pw) {
906
913
  '--no-default-browser-check',
907
914
  '--disable-features=Translate',
908
915
  ];
909
- const child = spawn(chrome, chromeArgs, { detached: true, stdio: 'ignore' });
916
+ // Chrome itself is GUI but its remote-debugging port creates conhost
917
+ // when launched from a console-attached parent. CREATE_NO_WINDOW
918
+ // (0x08000000) | DETACHED_PROCESS (0x00000008) prevents the helper
919
+ // processes (sandbox, GPU, network service) from allocating consoles.
920
+ // Inherited by the entire chrome subprocess tree on Windows.
921
+ const child = spawn(chrome, chromeArgs, {
922
+ detached: true,
923
+ stdio: 'ignore',
924
+ windowsHide: true,
925
+ ...(process.platform === 'win32' ? { creationFlags: 0x08000000 | 0x00000008 } : {}),
926
+ });
910
927
  const chromePid = child.pid;
911
928
  child.unref();
912
929
  const deadline = Date.now() + 10000;
package/gm.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm",
3
- "version": "2.0.1230",
3
+ "version": "2.0.1232",
4
4
  "description": "Spool-dispatch orchestration engine with unified state machine, skills, and automated git enforcement",
5
5
  "author": "AnEntrypoint",
6
6
  "license": "MIT",
@@ -181,11 +181,16 @@ async function ensureRsLearningDaemonRunning() {
181
181
  CLAUDE_SESSION_ID: sessionId,
182
182
  });
183
183
 
184
+ // CREATE_NO_WINDOW (0x08000000) is inherited by all descendants —
185
+ // .cmd shims that bun-x downloads/launches never get a console window.
186
+ // DETACHED_PROCESS (0x00000008) detaches the process group. Windows-only;
187
+ // Node ignores creationFlags on POSIX.
184
188
  const proc = spawn(resolveWindowsExe('bun'), ['x', 'rs-learn@latest'], {
185
189
  detached: true,
186
190
  stdio: 'ignore',
187
191
  windowsHide: true,
188
192
  env,
193
+ creationFlags: 0x08000000 | 0x00000008,
189
194
  });
190
195
 
191
196
  const pid = proc.pid;
@@ -235,11 +240,15 @@ async function ensureAcptoapiRunning() {
235
240
  });
236
241
 
237
242
  try {
243
+ // CREATE_NO_WINDOW | DETACHED_PROCESS — see ensureRsLearningDaemonRunning
244
+ // above. Inherited by acptoapi's 11 ACP sub-daemons so they don't pop
245
+ // conhost windows when bun-x launches their .cmd shims.
238
246
  const child = spawn(resolveWindowsExe('bun'), ['x', 'acptoapi@latest'], {
239
247
  detached: true,
240
248
  stdio: 'ignore',
241
249
  windowsHide: true,
242
250
  env,
251
+ creationFlags: 0x08000000 | 0x00000008,
243
252
  });
244
253
  child.unref();
245
254
  emitDaemonEvent('acptoapi', 'info', 'Daemon spawned', { pid: child.pid, port, sessionId });
@@ -283,11 +292,12 @@ async function ensureRsCodeinsightDaemonRunning() {
283
292
  CLAUDE_SESSION_ID: sessionId,
284
293
  });
285
294
 
286
- const proc = spawn('bun', ['x', 'rs-codeinsight@latest'], {
295
+ const proc = spawn(resolveWindowsExe('bun'), ['x', 'rs-codeinsight@latest'], {
287
296
  detached: true,
288
297
  stdio: 'ignore',
289
298
  windowsHide: true,
290
299
  env,
300
+ creationFlags: 0x08000000 | 0x00000008,
291
301
  });
292
302
 
293
303
  const pid = proc.pid;
@@ -328,11 +338,12 @@ async function ensureRsSearchDaemonRunning() {
328
338
  CLAUDE_SESSION_ID: sessionId,
329
339
  });
330
340
 
331
- const proc = spawn('bun', ['x', 'rs-search@latest'], {
341
+ const proc = spawn(resolveWindowsExe('bun'), ['x', 'rs-search@latest'], {
332
342
  detached: true,
333
343
  stdio: 'ignore',
334
344
  windowsHide: true,
335
345
  env,
346
+ creationFlags: 0x08000000 | 0x00000008,
336
347
  });
337
348
 
338
349
  const pid = proc.pid;
@@ -735,11 +735,17 @@ async function spawnPlugkitWatcher(wasmPath) {
735
735
  const logFd = openWatcherLog(projectDir);
736
736
 
737
737
  const runtime = process.platform === 'win32' ? 'bun.exe' : 'bun';
738
+ // CREATE_NO_WINDOW (0x08000000) | DETACHED_PROCESS (0x00000008) —
739
+ // inherited by all descendants so bun.exe → spool watcher → any
740
+ // downstream spawn never allocates a console window. Without this,
741
+ // windowsHide:true only hides the immediate bun.exe child while
742
+ // .cmd shims it later spawns each pop their own conhost.
738
743
  const proc = spawn(runtime, [wrapperPath, 'spool'], {
739
744
  detached: true,
740
745
  stdio: ['ignore', logFd, logFd],
741
746
  windowsHide: true,
742
747
  env: { ...process.env, CLAUDE_PROJECT_DIR: projectDir },
748
+ ...(process.platform === 'win32' ? { creationFlags: 0x08000000 | 0x00000008 } : {}),
743
749
  });
744
750
 
745
751
  try { fs.closeSync(logFd); } catch (_) {}
@@ -927,10 +933,14 @@ async function bootstrapAcptoapi() {
927
933
 
928
934
  emitBootstrapEvent('info', 'Spawning acptoapi daemon');
929
935
  try {
936
+ // CREATE_NO_WINDOW | DETACHED_PROCESS — see windows-spawn-cmd-shim-flash
937
+ // memory. acptoapi spawns 11 ACP sub-daemons via .cmd shims; without
938
+ // the inherited CREATE_NO_WINDOW flag each one pops a conhost window.
930
939
  const child = spawn('bun', ['x', 'acptoapi@latest'], {
931
940
  detached: true,
932
941
  stdio: 'ignore',
933
942
  windowsHide: true,
943
+ ...(process.platform === 'win32' ? { creationFlags: 0x08000000 | 0x00000008 } : {}),
934
944
  });
935
945
  child.unref();
936
946
  emitBootstrapEvent('info', 'acptoapi spawned', { pid: child.pid });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm-skill",
3
- "version": "2.0.1230",
3
+ "version": "2.0.1232",
4
4
  "description": "Canonical universal harness — AI-native software engineering via skill-driven orchestration; bootstraps plugkit for task execution and session isolation. Install in any AI coding agent host.",
5
5
  "author": "AnEntrypoint",
6
6
  "license": "MIT",
@@ -39,7 +39,7 @@
39
39
  "gm.json"
40
40
  ],
41
41
  "dependencies": {
42
- "gm-plugkit": "^2.0.1230"
42
+ "gm-plugkit": "^2.0.1232"
43
43
  },
44
44
  "engines": {
45
45
  "node": ">=16.0.0"