gm-skill 2.0.1397 → 2.0.1399
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/gm-plugkit/package.json +1 -1
- package/gm-plugkit/plugkit-wasm-wrapper.js +18 -4
- package/gm.json +1 -1
- package/package.json +1 -1
- package/skills/gm-skill/SKILL.md +1 -1
package/gm-plugkit/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gm-plugkit",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1399",
|
|
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": {
|
|
@@ -2287,11 +2287,10 @@ async function runSpoolWatcher(instance, spoolDir) {
|
|
|
2287
2287
|
action: 'spawn-replacement-and-exit',
|
|
2288
2288
|
boot_reason: bootReason,
|
|
2289
2289
|
});
|
|
2290
|
-
console.error(`[plugkit-wasm] wrapper.js drift detected — spawning replacement
|
|
2290
|
+
console.error(`[plugkit-wasm] wrapper.js drift detected — spawning replacement directly from installed wrapper then exiting`);
|
|
2291
2291
|
try {
|
|
2292
2292
|
const cp = require('child_process');
|
|
2293
|
-
const
|
|
2294
|
-
const child = cp.spawn(bunPath, ['x', 'gm-plugkit@latest', 'spool'], {
|
|
2293
|
+
const child = cp.spawn(process.execPath, [_wrapperPathInstalled, 'spool'], {
|
|
2295
2294
|
cwd: process.cwd(),
|
|
2296
2295
|
detached: true,
|
|
2297
2296
|
stdio: 'ignore',
|
|
@@ -2300,7 +2299,21 @@ async function runSpoolWatcher(instance, spoolDir) {
|
|
|
2300
2299
|
});
|
|
2301
2300
|
child.unref();
|
|
2302
2301
|
} catch (e) {
|
|
2303
|
-
console.error(`[plugkit-wasm]
|
|
2302
|
+
console.error(`[plugkit-wasm] direct node spawn failed: ${e.message}; falling back to bun x`);
|
|
2303
|
+
try {
|
|
2304
|
+
const cp = require('child_process');
|
|
2305
|
+
const bunPath = process.env.GM_BUN_PATH || 'bun';
|
|
2306
|
+
const child = cp.spawn(bunPath, ['x', 'gm-plugkit@latest', 'spool'], {
|
|
2307
|
+
cwd: process.cwd(),
|
|
2308
|
+
detached: true,
|
|
2309
|
+
stdio: 'ignore',
|
|
2310
|
+
windowsHide: true,
|
|
2311
|
+
env: { ...process.env, PLUGKIT_BOOT_REASON: 'self-respawn-from-wrapper-drift-fallback' },
|
|
2312
|
+
});
|
|
2313
|
+
child.unref();
|
|
2314
|
+
} catch (e2) {
|
|
2315
|
+
console.error(`[plugkit-wasm] fallback bun-x also failed: ${e2.message}`);
|
|
2316
|
+
}
|
|
2304
2317
|
}
|
|
2305
2318
|
try { fs.writeFileSync(path.join(spoolDir, '.shutdown-reason.json'), JSON.stringify({ reason: 'wrapper-drift-unsupervised', ts: Date.now(), pid: process.pid, boot_sha: _wrapperShaAtBoot.slice(0, 12), file_sha: cur.slice(0, 12) })); } catch (_) {}
|
|
2306
2319
|
try { releaseLock(); } catch (_) {}
|
|
@@ -2817,6 +2830,7 @@ async function runSpoolWatcher(instance, spoolDir) {
|
|
|
2817
2830
|
ts: Date.now(),
|
|
2818
2831
|
watcher_pid: process.pid,
|
|
2819
2832
|
watcher_version: instV || fileV,
|
|
2833
|
+
watcher_uptime_ms: Math.round(process.uptime() * 1000),
|
|
2820
2834
|
phase,
|
|
2821
2835
|
last_skill: lastSkill,
|
|
2822
2836
|
prd_pending: prdPending,
|
package/gm.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gm-skill",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1399",
|
|
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",
|
package/skills/gm-skill/SKILL.md
CHANGED
|
@@ -28,7 +28,7 @@ Your first tool call of every session is the boot probe, in one Bash invocation.
|
|
|
28
28
|
cat .gm/exec-spool/.status.json 2>/dev/null; echo ---; cat .gm/exec-spool/.turn-summary.json 2>/dev/null; echo ---; date +%s%3N
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
`.turn-summary.json` carries `phase`, `last_skill`, `prd_pending`, `last_instruction_ts`, `last_instruction_age_ms`, `long_gap_threshold_ms`, `browser_sessions_alive`, `update_available`, `deviations_30m`. When age exceeds the threshold, your next non-orienting verb will be gated — dispatch `instruction` first. When `update_available` is non-null, the watcher has detected drift: kill the watcher and re-bootstrap before continuing so the next instruction lands on the fresh wasm. `deviations_30m` is the rolling count of `deviation.*` events from hook+plugkit logs in the past 30 min — read it instead of running gmsniff at session start; non-zero indicates active drift worth investigating before continuing.
|
|
31
|
+
`.turn-summary.json` carries `phase`, `last_skill`, `prd_pending`, `last_instruction_ts`, `last_instruction_age_ms`, `long_gap_threshold_ms`, `browser_sessions_alive`, `update_available`, `deviations_30m`, `watcher_uptime_ms`. When age exceeds the threshold, your next non-orienting verb will be gated — dispatch `instruction` first. When `update_available` is non-null, the watcher has detected drift: kill the watcher and re-bootstrap before continuing so the next instruction lands on the fresh wasm. `deviations_30m` is the rolling count of `deviation.*` events from hook+plugkit logs in the past 30 min — read it instead of running gmsniff at session start; non-zero indicates active drift worth investigating before continuing. `watcher_uptime_ms` shows how long the current watcher process has been alive; combined with `watcher_version` and `update_available` it tells you whether the watcher's loaded code is recent — a multi-hour uptime with no `update_available` means you're on latest, an uptime of seconds means a fresh boot just happened.
|
|
32
32
|
|
|
33
33
|
Compare `.status.json` `ts` field to the printed epoch ms. If the gap is >15000, the watcher is dead — boot it:
|
|
34
34
|
|