gm-skill 2.0.1858 → 2.0.1860

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.
@@ -1 +1 @@
1
- 0.1.847
1
+ 0.1.848
@@ -1 +1 @@
1
- 457e35906ffdd1f37790aef7fe77cf06a4b0fe6477d57d16546b5e9b008617df plugkit.wasm
1
+ af729353622744a84500ada72c9fb8f8ba7bb8ea8f5a3977979b7d36220dd748 plugkit.wasm
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm-plugkit",
3
- "version": "2.0.1858",
3
+ "version": "2.0.1860",
4
4
  "description": "Bootstrap and daemon-spawn tool for gm plugkit binary. Downloads the correct platform binary, verifies SHA256, and starts the spool watcher daemon. Includes plugkit-wasm-wrapper for WASM-based spool watching.",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -1278,6 +1278,29 @@ function spawnChromiumOnce(browserBin, profileDir, port, headless, noSandbox, cw
1278
1278
  return { pid: child.pid, chromeLogPath };
1279
1279
  }
1280
1280
 
1281
+ const BROWSER_AUTODETECT_PORTS = [3000, 5173, 8080, 4200, 5000, 8000];
1282
+
1283
+ function probeLocalHttpPort(port, timeoutMs) {
1284
+ const r = spawnSync(process.execPath, ['-e', `
1285
+ const http = require('http');
1286
+ const req = http.request({ host: '127.0.0.1', port: ${port}, path: '/', method: 'HEAD', timeout: ${timeoutMs || 400} }, (res) => {
1287
+ res.resume();
1288
+ process.exit(0);
1289
+ });
1290
+ req.on('error', () => process.exit(1));
1291
+ req.on('timeout', () => { req.destroy(); process.exit(1); });
1292
+ req.end();
1293
+ `], { timeout: (timeoutMs || 400) + 300, windowsHide: true });
1294
+ return r.status === 0;
1295
+ }
1296
+
1297
+ function autodetectLocalDevServerUrl() {
1298
+ for (const port of BROWSER_AUTODETECT_PORTS) {
1299
+ if (probeLocalHttpPort(port, 400)) return `http://127.0.0.1:${port}/`;
1300
+ }
1301
+ return null;
1302
+ }
1303
+
1281
1304
  function resolveBrowserStartUrl(cwd) {
1282
1305
  if (process.env.GM_BROWSER_START_URL) return process.env.GM_BROWSER_START_URL;
1283
1306
  try {
@@ -1286,6 +1309,12 @@ function resolveBrowserStartUrl(cwd) {
1286
1309
  const url = fs.readFileSync(cfgPath, 'utf-8').trim();
1287
1310
  if (url) return url;
1288
1311
  } catch (_) {}
1312
+ const detected = autodetectLocalDevServerUrl();
1313
+ if (detected) {
1314
+ try { logEvent('plugkit', 'browser.start-url-autodetected', { url: detected }); } catch (_) {}
1315
+ return detected;
1316
+ }
1317
+ try { logEvent('plugkit', 'browser.start-url-fallback-blank', { reason: 'no GM_BROWSER_START_URL, no .gm/browser-target-url, no local dev server detected on common ports' }); } catch (_) {}
1289
1318
  return 'about:blank';
1290
1319
  }
1291
1320
 
@@ -1461,7 +1490,7 @@ function resolveExistingBrowserEntry(cwd, claudeSessionId, pw, portsFile, sessio
1461
1490
  sessions[claudeSessionId] = [sid];
1462
1491
  writeJsonFile(portsFile, ports);
1463
1492
  writeJsonFile(sessionsFile, sessions);
1464
- logEvent('plugkit', 'browser.attached', { pwSessionId: sid, reused: true });
1493
+ logEvent('plugkit', 'browser.attached', { pwSessionId: sid, reused: true, pid: existing.pid, same_chromium: true });
1465
1494
  return sid;
1466
1495
  }
1467
1496
  }
@@ -1526,7 +1555,7 @@ function getOrCreateBrowserSession(cwd, claudeSessionId, pw) {
1526
1555
  const sid = a && a.status === 0 ? parseSessionId(a.stdout || '') : null;
1527
1556
  if (sid) {
1528
1557
  checkSessionNavigatedAway(winner.port, claudeSessionId);
1529
- logEvent('plugkit', 'browser.attached', { pwSessionId: sid, reused: true, via: 'spawn-lock-wait' });
1558
+ logEvent('plugkit', 'browser.attached', { pwSessionId: sid, reused: true, via: 'spawn-lock-wait', pid: winner.pid, same_chromium: true });
1530
1559
  return sid;
1531
1560
  }
1532
1561
  }
@@ -1 +1 @@
1
- 0.1.847
1
+ 0.1.848
package/gm.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm",
3
- "version": "2.0.1858",
3
+ "version": "2.0.1860",
4
4
  "description": "Spool-dispatch orchestration engine with unified state machine, skills, and automated git enforcement",
5
5
  "author": "AnEntrypoint",
6
6
  "license": "MIT",
@@ -17,5 +17,5 @@
17
17
  "publishConfig": {
18
18
  "access": "public"
19
19
  },
20
- "plugkitVersion": "0.1.847"
20
+ "plugkitVersion": "0.1.848"
21
21
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm-skill",
3
- "version": "2.0.1858",
3
+ "version": "2.0.1860",
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",