gm-skill 2.0.1178 → 2.0.1180

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.1178` — auto-bumped from the canonical `gm` repo. Every push to `AnEntrypoint/gm` (or any cascading sibling crate) republishes this package.
38
+ `2.0.1180` — 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
 
@@ -1 +1 @@
1
- 0.1.425
1
+ 0.1.426
package/bin/plugkit.wasm CHANGED
Binary file
@@ -1 +1 @@
1
- 6e4d5f1dd88d74e7adf2058e4668a42548a74452a14c33e6561838c8bf9acbef plugkit.wasm
1
+ 9dd65bfeb7037f9d883a3064d22fab4a34581e8fde962aa8dfe20141fbb2dd1c plugkit.wasm
@@ -1008,6 +1008,15 @@ async function runSpoolWatcher(instance, spoolDir) {
1008
1008
  if (_ownWrapperSha12 && holderSha && holderSha !== _ownWrapperSha12) {
1009
1009
  try { logEvent('plugkit', 'peer.stale-wrapper-takeover', { holder_pid: pidStr, holder_sha: holderSha, own_sha: _ownWrapperSha12, lock_age_ms: age }); } catch (_) {}
1010
1010
  console.error(`[plugkit-wasm] peer wrapper-sha mismatch (holder=${holderSha} own=${_ownWrapperSha12}); killing pid=${pidStr} and taking over`);
1011
+ try {
1012
+ fs.writeFileSync(path.join(spoolDir, '.shutdown-reason.json'), JSON.stringify({
1013
+ reason: 'peer-stale-takeover',
1014
+ ts: Date.now(),
1015
+ taker_pid: process.pid,
1016
+ taker_sha: _ownWrapperSha12,
1017
+ holder_sha: holderSha,
1018
+ }));
1019
+ } catch (_) {}
1011
1020
  try { process.kill(parseInt(pidStr, 10), 'SIGTERM'); } catch (_) {}
1012
1021
  } else {
1013
1022
  const msg = JSON.stringify({ ok: false, reason: 'another-watcher-active', pid: pidStr, age_ms: age });
@@ -1073,6 +1082,15 @@ async function runSpoolWatcher(instance, spoolDir) {
1073
1082
  } catch (_) { continue; }
1074
1083
  logEvent('plugkit', 'peer.stale-wrapper-killed', { peer_cwd: peerCwd, peer_pid: peerPid, peer_sha: peerSha, own_sha: _ownWrapperSha12, lock_age_ms: age });
1075
1084
  console.error(`[plugkit-wasm] peer-sweep killing stale-wrapper watcher pid=${peerPid} cwd=${peerCwd} sha=${peerSha} (own=${_ownWrapperSha12})`);
1085
+ try {
1086
+ fs.writeFileSync(path.join(peerCwd, '.gm', 'exec-spool', '.shutdown-reason.json'), JSON.stringify({
1087
+ reason: 'peer-stale-takeover',
1088
+ ts: Date.now(),
1089
+ killer_pid: process.pid,
1090
+ killer_sha: _ownWrapperSha12,
1091
+ peer_sha: peerSha,
1092
+ }));
1093
+ } catch (_) {}
1076
1094
  try { process.kill(peerPid, 'SIGTERM'); } catch (_) {}
1077
1095
  }
1078
1096
  }
@@ -130,7 +130,7 @@ function spawnWatcher(bootReason) {
130
130
  const shutdownReason = readShutdownReason();
131
131
  const reason = shutdownReason && shutdownReason.reason;
132
132
  const idleClean = reason === 'idle';
133
- const plannedReasons = new Set(['idle', 'sigterm', 'version-change']);
133
+ const plannedReasons = new Set(['idle', 'sigterm', 'version-change', 'wrapper-change', 'peer-stale-takeover', 'external-planned']);
134
134
  const isPlanned = plannedReasons.has(reason);
135
135
  const eventName = idleClean
136
136
  ? 'supervisor.watcher-exited-idle'
package/gm.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm",
3
- "version": "2.0.1178",
3
+ "version": "2.0.1180",
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.425"
20
+ "plugkitVersion": "0.1.426"
21
21
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm-skill",
3
- "version": "2.0.1178",
3
+ "version": "2.0.1180",
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.1178"
42
+ "gm-plugkit": "^2.0.1180"
43
43
  },
44
44
  "engines": {
45
45
  "node": ">=16.0.0"