gm-codex 2.0.957 → 2.0.959

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,6 +1,6 @@
1
1
  {
2
2
  "name": "gm-codex",
3
- "version": "2.0.957",
3
+ "version": "2.0.959",
4
4
  "description": "State machine agent with hooks, skills, and automated git enforcement",
5
5
  "author": {
6
6
  "name": "AnEntrypoint",
package/gm.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm",
3
- "version": "2.0.957",
3
+ "version": "2.0.959",
4
4
  "description": "State machine agent with hooks, skills, and automated git enforcement",
5
5
  "author": "AnEntrypoint",
6
6
  "license": "MIT",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm-codex",
3
- "version": "2.0.957",
3
+ "version": "2.0.959",
4
4
  "description": "State machine agent with hooks, skills, and automated git enforcement",
5
5
  "author": "AnEntrypoint",
6
6
  "license": "MIT",
package/plugin.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm",
3
- "version": "2.0.957",
3
+ "version": "2.0.959",
4
4
  "description": "State machine agent with hooks, skills, and automated git enforcement",
5
5
  "author": {
6
6
  "name": "AnEntrypoint",
@@ -50,12 +50,13 @@ N facts → N parallel calls in one message. End of turn: scan for un-memorized
50
50
 
51
51
  ## Execution order
52
52
 
53
- 1. Recall (`exec:recall`) — cheapest
54
- 2. Code execution (`exec:<lang>`, `exec:codesearch`) 90% of unknowns
55
- 3. Web (`WebFetch`, `WebSearch`) — env facts not in codebase
56
- 4. Userlast resort
53
+ 1. Recall (`exec:recall` via Bash) — cheapest
54
+ 2. Code execution — write to `.gm/exec-spool/in/<lang>/<N>.<ext>` (nodejs, python, bash, typescript, go, rust, c, cpp, java, deno); spool watcher runs and writes `out/<N>.json`
55
+ 3. Codebase search (`exec:codesearch` via Bash) — 90% of lookups
56
+ 4. Web (`WebFetch`, `WebSearch`) env facts not in codebase
57
+ 5. User — last resort
57
58
 
58
- `exec:<lang>` only via Bash. Never `Bash(node/npm/npx/bun)`. `git push` triggers auto CI watch via Stop hook.
59
+ Bash accepts ONLY git commands and utility verbs (`exec:recall`, `exec:codesearch`, `exec:memorize`, `exec:wait`, `exec:browser`, etc.). All code execution goes via the spool. Never `Bash(node/npm/npx/bun)`. `git push` triggers auto CI watch via Stop hook.
59
60
 
60
61
  Skill chain: `planning` → `gm-execute` → `gm-emit` → `gm-complete` → `update-docs`.
61
62
 
@@ -33,10 +33,9 @@ Failure triage: broken output to EMIT, wrong logic to EXECUTE, new unknown to PL
33
33
 
34
34
  ## End-to-end verification
35
35
 
36
- Real system, real data, witness actual output. Doc updates, "saying done", and screenshots alone are not verification.
36
+ Real system, real data, witness actual output. Doc updates, "saying done", and screenshots alone are not verification. Write the e2e probe to the spool (`.gm/exec-spool/in/nodejs/<N>.js`):
37
37
 
38
38
  ```
39
- exec:nodejs
40
39
  const { fn } = await import('/abs/path/to/module.js');
41
40
  console.log(await fn(realInput));
42
41
  ```
@@ -59,8 +58,9 @@ Pre-flight: run `git diff --name-only origin/main..HEAD` and grep for `client/|d
59
58
 
60
59
  ## Integration test gate
61
60
 
61
+ Write to `.gm/exec-spool/in/nodejs/<N>.js`:
62
+
62
63
  ```
63
- exec:nodejs
64
64
  const { execSync } = require('child_process');
65
65
  try { execSync('node test.js', { stdio: 'inherit', timeout: 30000 }); console.log('PASS'); }
66
66
  catch (e) { console.error('FAIL'); process.exit(1); }
@@ -70,8 +70,9 @@ Failure → `gm-execute`. No test.js in a repo with testable surface → `gm-exe
70
70
 
71
71
  ## Git enforcement
72
72
 
73
+ Run directly via Bash:
74
+
73
75
  ```
74
- exec:bash
75
76
  git status --porcelain
76
77
  git log origin/main..HEAD --oneline
77
78
  ```
@@ -30,10 +30,9 @@ Any failure regresses to `gm-execute` to witness what was missing, or `planning`
30
30
 
31
31
  ## Pre-emit run
32
32
 
33
- Mandatory before writing any file.
33
+ Mandatory before writing any file. Write the probe to the spool (`.gm/exec-spool/in/nodejs/<N>.js`):
34
34
 
35
35
  ```
36
- exec:nodejs
37
36
  const { fn } = await import('/abs/path/to/module.js');
38
37
  console.log(await fn(realInput));
39
38
  ```
@@ -42,7 +41,7 @@ Import the actual module from disk to witness current behavior as the baseline.
42
41
 
43
42
  ## Writing
44
43
 
45
- `exec:nodejs` with `require('fs')`. Write only when every gate mutable resolves simultaneously.
44
+ Use the Write tool, or a nodejs spool file with `require('fs')`. Write only when every gate mutable resolves simultaneously.
46
45
 
47
46
  ## Post-emit verification
48
47
 
@@ -40,7 +40,7 @@ Spend on `.prd` items in descending order of consequence-if-wrong × distance-fr
40
40
 
41
41
  ## Code execution
42
42
 
43
- `exec:<lang>` only via Bash. Languages: nodejs (default), bash, python, typescript, go, rust, c, cpp, java, deno, cmd. File I/O via `exec:nodejs` + `require('fs')`. Git directly in Bash. Never `Bash(node/npm/npx/bun)`.
43
+ Code runs through the file-spool, not Bash. Write a file to `.gm/exec-spool/in/<lang>/<N>.<ext>` (e.g. `in/nodejs/42.js`, `in/python/43.py`, `in/bash/44.sh`); the spool watcher executes and writes `out/<N>.json`; the result returns as systemMessage. Languages: nodejs (default), bash, python, typescript, go, rust, c, cpp, java, deno. File I/O via a nodejs spool file + `require('fs')`. Git directly in Bash. Utility verbs (`exec:recall`, `exec:codesearch`, `exec:memorize`, `exec:wait`, `exec:sleep`, `exec:browser`, etc.) DO run via Bash with the verb on line 1 and arg on line 2. Never `Bash(node/npm/npx/bun)`.
44
44
 
45
45
  Pack runs: `Promise.allSettled`, each idea own try/catch, under 12s per call. Runner: `exec:runner\n{start|stop|status}`.
46
46
 
@@ -61,10 +61,10 @@ Start two words, change/add one per pass, minimum four attempts before concludin
61
61
 
62
62
  ## Import-based execution
63
63
 
64
- Hypotheses become real by importing actual modules from disk. Reimplemented behavior is UNKNOWN.
64
+ Hypotheses become real by importing actual modules from disk. Reimplemented behavior is UNKNOWN. Write the import probe to the spool:
65
65
 
66
66
  ```
67
- exec:nodejs
67
+ # write .gm/exec-spool/in/nodejs/42.js
68
68
  const { fn } = await import('/abs/path/to/module.js');
69
69
  console.log(await fn(realInput));
70
70
  ```
@@ -53,7 +53,7 @@ Every unknown surfaced during PLAN lands as an entry in `.gm/mutables.yml` the s
53
53
 
54
54
  ## .prd format
55
55
 
56
- Path: `./.gm/prd.yml`. Write via `exec:nodejs` + `fs.writeFileSync`. Delete the file when empty.
56
+ Path: `./.gm/prd.yml`. Write via the Write tool or by emitting a nodejs spool file (`in/nodejs/<N>.js`) that calls `fs.writeFileSync`. Delete the file when empty.
57
57
 
58
58
  ```yaml
59
59
  - id: kebab-id
@@ -103,7 +103,7 @@ The 200 lines are a *budget* for maximum surface coverage, not a target. Subsyst
103
103
 
104
104
  ## Execution norms encoded in the plan
105
105
 
106
- `exec:<lang>` only via Bash; file I/O via `exec:nodejs` + `fs`; git directly in Bash; never `Bash(node/npm/npx/bun)`. Paths in `exec:nodejs` are platform-literal — use `os.tmpdir()` and `path.join`, reserve `/tmp/...` for `exec:bash` heredocs. Every `exec:<lang>` and `exec:bash` call passes `--timeout-ms <ms>`; on timeout, partial output is preserved and the runner emits `[exec timed out after Nms; partial output above]` — re-issue with a higher budget rather than retrying blindly.
106
+ Code execution writes to `.gm/exec-spool/in/<lang>/<N>.<ext>`; the spool watcher runs the file and emits `out/<N>.json` as systemMessage. Utility verbs (`exec:recall`, `exec:codesearch`, `exec:memorize`, `exec:wait`, etc.) and `git` run directly via Bash. Never `Bash(node/npm/npx/bun)`. Spool paths in nodejs files are platform-literal — use `os.tmpdir()` and `path.join`. The spool enforces per-task timeouts; on timeout, partial output is preserved and the watcher emits `[exec timed out after Nms; partial output above]`.
107
107
 
108
108
  `exec:codesearch` only — Grep/Glob/Find/Explore are hook-blocked. Start two words, change/add one per pass, minimum four attempts before concluding absent.
109
109
 
@@ -11,18 +11,16 @@ Every claim in docs is verifiable against disk. Phase names match frontmatter, p
11
11
 
12
12
  ## Sequence
13
13
 
14
- What changed:
14
+ What changed — run directly via Bash:
15
15
 
16
16
  ```
17
- exec:bash
18
17
  git log -5 --oneline
19
18
  git diff HEAD~1 --stat
20
19
  ```
21
20
 
22
- Read current docs:
21
+ Read current docs via Read tool, or via a nodejs spool file (`in/nodejs/<N>.js`):
23
22
 
24
23
  ```
25
- exec:nodejs
26
24
  const fs = require('fs');
27
25
  ['README.md', 'AGENTS.md', 'docs/index.html', 'gm-starter/agents/gm.md'].forEach(f => {
28
26
  try { console.log(`=== ${f} ===\n` + fs.readFileSync(f, 'utf8')); }
@@ -37,18 +35,16 @@ Write changed sections only:
37
35
  - **docs/index.html** — `PHASES` array, platform lists, state machine diagram
38
36
  - **gm-starter/agents/gm.md** — skill chain line if new skills added
39
37
 
40
- Verify from disk:
38
+ Verify from disk (Read tool, or a nodejs spool file):
41
39
 
42
40
  ```
43
- exec:nodejs
44
41
  const content = require('fs').readFileSync('/abs/path/file.md', 'utf8');
45
42
  console.log(content.includes('expectedString'), content.length);
46
43
  ```
47
44
 
48
- Commit and push:
45
+ Commit and push directly via Bash:
49
46
 
50
47
  ```
51
- exec:bash
52
48
  git add README.md docs/index.html gm-starter/agents/gm.md
53
49
  git commit -m "docs: update documentation to reflect session changes"
54
50
  git push -u origin HEAD