gm-skill 2.0.1111 → 2.0.1113

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
@@ -28,7 +28,7 @@ npx gm-skill-bootstrap
28
28
 
29
29
  ## Version
30
30
 
31
- `2.0.1111` — auto-bumped from the canonical `gm` repo. Every push to `AnEntrypoint/gm` republishes this package alongside all 15 platform packages.
31
+ `2.0.1113` — auto-bumped from the canonical `gm` repo. Every push to `AnEntrypoint/gm` republishes this package alongside all 15 platform packages.
32
32
 
33
33
  ## Source of truth
34
34
 
@@ -1 +1 @@
1
- 0.1.390
1
+ 0.1.391
package/bin/plugkit.wasm CHANGED
Binary file
@@ -1 +1 @@
1
- 228c370afbe435aca3a7aff8b9783000d05551efa3c254765d9ef2d05823fdac plugkit.wasm
1
+ 60d4e5c1920e6d8e0bab42346c6bf54bc752ced23e2102e1f4e63617aa6d42ca plugkit.wasm
@@ -21,9 +21,6 @@ function cosineSim(a, b) {
21
21
  return dot / (Math.sqrt(na) * Math.sqrt(nb));
22
22
  }
23
23
 
24
- const browserSessions = new Map();
25
- let nextBrowserSessionId = 1;
26
-
27
24
  function createWasiShim(instanceRef) {
28
25
  const getMemory = () => instanceRef.value.exports.memory.buffer;
29
26
  const shim = {
@@ -317,36 +314,6 @@ function makeHostFunctions(instanceRef) {
317
314
  }
318
315
  },
319
316
 
320
- host_browser_spawn: (urlPtr, urlLen) => {
321
- try {
322
- const url = readWasmStr(instanceRef.value, urlPtr, urlLen);
323
- const id = BigInt(nextBrowserSessionId++);
324
- browserSessions.set(id, { url, opened_at: Date.now() });
325
- return id;
326
- } catch (e) {
327
- return 0n;
328
- }
329
- },
330
-
331
- host_browser_eval: (sessionId, codePtr, codeLen) => {
332
- try {
333
- const code = readWasmStr(instanceRef.value, codePtr, codeLen);
334
- const session = browserSessions.get(BigInt(sessionId));
335
- if (!session) return writeWasmJson(instanceRef.value, { error: 'session not found' });
336
- return writeWasmJson(instanceRef.value, { ok: false, error: 'browser eval not implemented in JS host; route via spool browser verb' });
337
- } catch (e) {
338
- return writeWasmJson(instanceRef.value, { error: e.message });
339
- }
340
- },
341
-
342
- host_browser_close: (sessionId) => {
343
- try {
344
- return browserSessions.delete(BigInt(sessionId)) ? 1 : 0;
345
- } catch (e) {
346
- return 0;
347
- }
348
- },
349
-
350
317
  host_exec_js: (codePtr, codeLen, optsPtr, optsLen) => {
351
318
  try {
352
319
  const code = readWasmStr(instanceRef.value, codePtr, codeLen);
@@ -549,10 +516,18 @@ async function runSpoolWatcher(instance, spoolDir) {
549
516
  return files;
550
517
  }
551
518
 
552
- const heartbeatPath = path.join(spoolDir, '.watcher.heartbeat');
553
- setInterval(() => {
554
- try { fs.writeFileSync(heartbeatPath, String(Date.now())); } catch (_) {}
555
- }, 5000);
519
+ const STATUS_PATH = path.join(spoolDir, '.status.json');
520
+ function writeStatus() {
521
+ try {
522
+ fs.writeFileSync(STATUS_PATH, JSON.stringify({
523
+ pid: process.pid,
524
+ ts: Date.now(),
525
+ version: resolveVersion(instance),
526
+ }));
527
+ } catch (_) {}
528
+ }
529
+ setInterval(writeStatus, 5000);
530
+ writeStatus();
556
531
 
557
532
  const pollInterval = setInterval(async () => {
558
533
  const existing = walkDir(inDir);
package/gm.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm",
3
- "version": "2.0.1111",
3
+ "version": "2.0.1113",
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.390"
20
+ "plugkitVersion": "0.1.391"
21
21
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm-skill",
3
- "version": "2.0.1111",
3
+ "version": "2.0.1113",
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.1111"
42
+ "gm-plugkit": "^2.0.1113"
43
43
  },
44
44
  "engines": {
45
45
  "node": ">=16.0.0"
@@ -1,12 +1,20 @@
1
1
  ---
2
2
  name: gm-skill
3
3
  description: AI-native software engineering harness. plugkit serves all instructions, state, guardrails via the spool.
4
- allowed-tools: Skill, Read, Write
4
+ allowed-tools: Skill, Read, Write, Bash(node *), Bash(bun *)
5
5
  ---
6
6
 
7
7
  # gm — single entry point
8
8
 
9
- The wasm artifact lives at `~/.claude/gm-tools/plugkit.wasm`; the spool watcher runs it. If `.gm/exec-spool/.status.json` is stale or absent, bootstrap has not seeded the watcher yet — re-invoke the skill or start it manually (`node plugkit-wasm-wrapper.js spool &`).
9
+ The wasm artifact lives at `~/.claude/gm-tools/plugkit.wasm`; the spool watcher runs it.
10
+
11
+ ## Boot the spool watcher (first turn only)
12
+
13
+ Check `.gm/exec-spool/.status.json`. If absent or `ts` > 15s old, run:
14
+
15
+ `node ~/.claude/gm-tools/plugkit-wasm-wrapper.js spool > /dev/null 2>&1 &`
16
+
17
+ Wait 2 seconds, verify `.status.json` is fresh. Then proceed with dispatch.
10
18
 
11
19
  ## Dispatch ABI
12
20
 
@@ -22,6 +30,10 @@ Dispatch `instruction` (empty body for current phase; `phase=<NAME>` line, `{"ph
22
30
 
23
31
  ## Host verbs
24
32
 
25
- `fs_read`, `fs_write`, `fs_stat`, `fs_readdir`, `kv_get`, `kv_put`, `kv_query`, `fetch`, `exec_js`, `env_get`, `recall`, `codesearch`, `memorize`, `health`.
33
+ `fs_read`, `fs_write`, `fs_stat`, `fs_readdir`, `kv_get`, `kv_put`, `kv_query`, `fetch`, `exec_js`, `env_get`, `recall`, `codesearch`, `memorize`, `health`, `status`, `wait`, `sleep`, `close`, `kill-port`, `forget`, `feedback`, `learn-status`, `learn-debug`, `learn-build`, `discipline`, `pause`, `runner`, `inference`.
34
+
35
+ ## Language verbs
36
+
37
+ `nodejs`, `python`, `bash`, `powershell`, `ssh`, `go`, `rust`, `c`, `cpp`, `java`, `deno` — write raw code as the request body.
26
38
 
27
39
  Plugkit serves what prior skills (`gm:planning`, `gm:gm-execute`) used to serve, on demand, per phase. There is no other skill.