gm-cc 2.0.577 → 2.0.579

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.
@@ -4,7 +4,7 @@
4
4
  "name": "AnEntrypoint"
5
5
  },
6
6
  "description": "State machine agent with hooks, skills, and automated git enforcement",
7
- "version": "2.0.577",
7
+ "version": "2.0.579",
8
8
  "metadata": {
9
9
  "description": "State machine agent with hooks, skills, and automated git enforcement"
10
10
  },
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/bin/plugkit.exe CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm-cc",
3
- "version": "2.0.577",
3
+ "version": "2.0.579",
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.577",
3
+ "version": "2.0.579",
4
4
  "description": "State machine agent with hooks, skills, and automated git enforcement",
5
5
  "author": {
6
6
  "name": "AnEntrypoint",
@@ -8,9 +8,21 @@ description: Mandatory codebase search workflow. Use whenever you need to find a
8
8
  **Use gm subagents for all independent work items. Invoke all skills in the chain: planning → gm-execute → gm-emit → gm-complete → update-docs.**
9
9
 
10
10
 
11
- `exec:codesearch` is the only way to search the codebase. Glob, Grep, Find, Explore are hook-blocked.
11
+ `exec:codesearch` is the only way to search the codebase. **`Grep`, `Glob`, `Find`, `Explore`, and `grep`/`rg`/`find`/`ripgrep` inside `exec:bash` are ALL hook-blocked.** There is no fallback path for exact matches, regex, or file-name patterns — codesearch handles all of them. If you find yourself reaching for Grep or Glob, that reflex is wrong; replace with codesearch.
12
12
 
13
- **PDFs are indexed like code.** Any `.pdf` in the repository — specs, papers, manuals, RFCs, datasheets, design docs — is extracted page-by-page at scan time and enters the BM25 + vector index alongside source files. Treat PDF hits as first-class search results. A PDF chunk reports `line_start = line_end = page_number`; cite as `path/to/doc.pdf:<page>`. Unscanned digital PDFs are a search gap — if you know a doc exists and it isn't returning, check it is not under an ignored dir and that extraction succeeded (encrypted / image-only PDFs yield empty chunks silently).
13
+ **What codesearch handles** (every codebase-lookup need lands here):
14
+ - Exact identifier / symbol lookup (function names, class names, constants) — symbols are extracted and indexed separately, exact matches rank top.
15
+ - Exact string content — query tokens >1 trigger a literal-substring boost in content scoring.
16
+ - File-name fragments — file paths are tokenized and matched with a score boost.
17
+ - Regex-ish patterns — BM25 tokenization covers snake_case, camelCase, dot/dash splits; matching component words returns the file.
18
+ - Natural-language concept queries — BM25 + vector re-ranking handle "find the hook that blocks grep", "where is PR stats calculated", etc.
19
+ - PDF pages — specs, papers, manuals, RFCs, datasheets, design docs extracted page-by-page into the same index. Cite `path/to/doc.pdf:<page>`.
20
+
21
+ **Direct-read exceptions** (no search required):
22
+ - Known absolute path → `Read` tool.
23
+ - Listing a known directory → `exec:nodejs` + `fs.readdirSync`.
24
+
25
+ Unscanned digital PDFs are a search gap — if you know a doc exists and it isn't returning, check it is not under an ignored dir and that extraction succeeded (encrypted / image-only PDFs yield empty chunks silently).
14
26
 
15
27
  ## Syntax
16
28
 
@@ -67,10 +67,6 @@ Do not use `EnterPlanMode`. Do not run code directly via Bash. Invoke `planning`
67
67
 
68
68
  ## RESPONSE POLICY — ALWAYS ACTIVE
69
69
 
70
- Terse like smart caveman. Technical substance stays. Fluff dies. Default: **full**. Switch: `/caveman lite|full|ultra`.
70
+ Always terse. Technical substance stays. Fluff dies. Drop articles, filler, pleasantries, hedging. Fragments OK. Short synonyms. Technical terms exact. Pattern: `[thing] [action] [reason]. [next step].`
71
71
 
72
- Drop: articles, filler, pleasantries, hedging. Fragments OK. Short synonyms. Technical terms exact. Code unchanged. Pattern: `[thing] [action] [reason]. [next step].`
73
-
74
- Levels: **lite** = no filler, full sentences | **full** = drop articles, fragments OK | **ultra** = abbreviate all, arrows for causality | **wenyan-full** = 文言文, 80-90% compression | **wenyan-ultra** = max classical terse.
75
-
76
- Auto-Clarity: drop caveman for security warnings, irreversible confirmations, ambiguous sequences. Resume after. Code/commits/PRs write normal. "stop caveman" / "normal mode": revert.
72
+ Code, commits, and PR descriptions write in normal prose. Security warnings, destructive confirmations, and genuinely ambiguous sequences also drop terseness. Everything else stays terse.
@@ -110,14 +110,14 @@ Only git in bash directly. Background tasks: `exec:sleep\n<id>`, `exec:status\n<
110
110
  - Target under 12s per exec call; split work across multiple calls only when dependencies require it
111
111
  - Prefer a single well-structured exec that does 5 things over 5 sequential execs
112
112
 
113
- ## CODEBASE EXPLORATION
113
+ ## CODEBASE EXPLORATION — exec:codesearch ONLY
114
114
 
115
115
  ```
116
116
  exec:codesearch
117
- <natural language description>
117
+ <two-word query>
118
118
  ```
119
119
 
120
- PDFs in the repo are part of the same index — when verifying a change conforms to a published spec, search the spec PDF directly and cite `doc.pdf:<page>` as evidence. A verification that references a PDF without having searched it is unwitnessed.
120
+ `Grep`, `Glob`, `Find`, `Explore`, and `grep`/`rg`/`find` inside `exec:bash` are all hook-blocked. `exec:codesearch` is the single codebase-exploration tool. `Read` is available for a known absolute path. PDFs in the repo are part of the same index — when verifying a change conforms to a published spec, search the spec PDF directly and cite `doc.pdf:<page>` as evidence. A verification that references a PDF without having searched it is unwitnessed.
121
121
 
122
122
  ## GIT ENFORCEMENT
123
123
 
@@ -133,14 +133,14 @@ The post-emit verification is a differential diagnosis against the pre-emit base
133
133
  - CHANGELOG.md updated with changes
134
134
  - TODO.md cleared or deleted
135
135
 
136
- ## CODEBASE EXPLORATION
136
+ ## CODEBASE EXPLORATION — exec:codesearch ONLY
137
137
 
138
138
  ```
139
139
  exec:codesearch
140
- <natural language description>
140
+ <two-word query>
141
141
  ```
142
142
 
143
- Alias: `exec:search`. **Glob, Grep, Read, Explore are hook-blocked** use `exec:codesearch` exclusively. PDF pages are in the same index as source files; when verifying that emitted code matches a spec, search the PDF directly (e.g. `exec:codesearch\nregister layout`) and cite `doc.pdf:<page>` in the pre-emit comparison.
143
+ `Grep`, `Glob`, `Find`, `Explore` tools and `grep`/`rg`/`find` inside `exec:bash` are all hook-blocked. `exec:codesearch` is the single codebase-exploration tool — it handles exact strings, symbols, regex patterns, file-name fragments, and PDF pages. `Read` is available for a known absolute path. There is no third option. PDF pages are indexed alongside source; when verifying that emitted code matches a spec, search the PDF directly and cite `doc.pdf:<page>`.
144
144
 
145
145
  ## BROWSER DEBUGGING
146
146
 
@@ -118,28 +118,30 @@ Watch and triage the same way.
118
118
 
119
119
  **Zero silent pushes.** Not watching a CI run you triggered = operating outside this contract. This rule supersedes any implicit assumption that CI can be "checked later in gm-complete" — if you are about to push, you are about to execute code remotely, so the watch happens now.
120
120
 
121
- ## CODEBASE EXPLORATION
121
+ ## CODEBASE EXPLORATION — exec:codesearch ONLY
122
122
 
123
- `exec:codesearch` is the preferred semantic search. **Glob, Explore, WebSearch are hook-blocked. Grep/Read ARE availableuse them for exact-match or direct reads.**
123
+ **Grep, Glob, Find, Explore, WebSearch, and `grep`/`rg`/`find` inside `exec:bash` are ALL hook-blocked.** Attempting them returns a redirect error. The hook is not a suggestion it is enforced. `Read` is available for known absolute paths.
124
+
125
+ Default reflex for "I need to find X in the codebase" = `exec:codesearch`. No exceptions. Not even for exact strings, not even for regex, not even for "just one quick check". If you find yourself reaching for Grep or Glob, that reflex is wrong — replace with codesearch.
124
126
 
125
127
  ```
126
128
  exec:codesearch
127
129
  <two-word query to start>
128
130
  ```
129
131
 
130
- `exec:codesearch` indexes PDFs the same way it indexes source — spec PDFs, datasheets, papers, and RFCs return as first-class hits with `file:page` citations. When resolving a mutable that depends on external specification (protocol field, register layout, compliance text), search the PDF corpus before reimplementing or assuming. Unwitnessed assumption from a doc you did not search is an UNKNOWN.
132
+ `exec:codesearch` handles exact strings, symbols, regex-ish patterns, file-name fragments, and PDF pages (indexed page-by-page with `file:page` citations). Two words in, iterate by changing or adding one word per pass, minimum four attempts before concluding absent. Full protocol in `code-search` skill.
133
+
134
+ **Direct-read exceptions** (no search needed):
135
+ - Known absolute path → `Read` tool.
136
+ - Directory listing at known path → `exec:nodejs` + `fs.readdirSync`.
137
+ - File content inspection without search → `Read`.
131
138
 
132
- **Mandatory search protocol** for codesearch (from `code-search` skill):
133
- 1. Start with exactly **two words** never one, never a sentence
134
- 2. No results change one word (synonym or related term)
135
- 3. Still no results add a third word to narrow scope
136
- 4. Keep changing or adding words each pass until content is found
137
- 5. Minimum 4 attempts before concluding content is absent
139
+ **Never**:
140
+ - `Grep`, `Glob`, `Find`, `Explore` tools (all hook-blocked)
141
+ - `grep`, `rg`, `ripgrep`, `find`, `ag`, `ack` inside `exec:bash` (banned-tool hook intercepts)
142
+ - Reaching for exact-match tools "because codesearch seems fuzzy" codesearch handles exact matches fine
138
143
 
139
- **When codesearch is the wrong tool:**
140
- - Exact symbol / string / regex match: use `Grep` tool directly, or `exec:nodejs` with `execSync("rg -n 'PATTERN'")`.
141
- - Known file path: use `Read` tool directly.
142
- - Find files by name pattern: hook-blocked `Glob` would help; use `exec:nodejs + fs.readdirSync` or `exec:nodejs + execSync("rg --files | rg PATTERN")`.
144
+ When a mutable depends on external specification (protocol field, register layout, compliance text), search the PDF corpus first. Unwitnessed assumption from a doc you did not search = UNKNOWN.
143
145
 
144
146
  **Platform note — exec:bash on Windows:** runs real bash (git-bash) when installed, falls back to PowerShell otherwise. If you see a POSIX-syntax parse error (`[ -n ...]`, `&&`, `if/then/fi`), bash wasn't found — either install git-bash or rewrite in `exec:nodejs`.
145
147
 
@@ -220,7 +222,7 @@ Never respond to the user from this phase. When all mutables are KNOWN, immediat
220
222
 
221
223
  ## CONSTRAINTS
222
224
 
223
- **Never**: `Bash(node/npm/npx/bun)` | fake data | mock files | scattered test files (only root test.js) | fallback/demo modes | Glob/Explore (hook-blocked — use exec:codesearch, Grep or Read) | sequential independent items | absorb surprises silently | respond to user or pause for input | edit files before executing to understand current behavior | duplicate existing code | write explicit if/else chains when a dispatch table or native method suffices | write packed one-liners that obscure structure | reinvent what a library or native API already provides
225
+ **Never**: `Bash(node/npm/npx/bun)` | fake data | mock files | scattered test files (only root test.js) | fallback/demo modes | `Grep`/`Glob`/`Find`/`Explore` tools or `grep`/`rg`/`find` inside `exec:bash` (ALL hook-blocked — use `exec:codesearch` for every codebase lookup, `Read` for known absolute paths) | sequential independent items | absorb surprises silently | respond to user or pause for input | edit files before executing to understand current behavior | duplicate existing code | write explicit if/else chains when a dispatch table or native method suffices | write packed one-liners that obscure structure | reinvent what a library or native API already provides
224
226
 
225
227
  **Always**: witness every hypothesis | import real modules | scan codebase before creating/editing files | regress to planning on any new unknown | fix immediately on discovery | delete mocks/stubs/comments/scattered test files on discovery | consolidate test coverage into root test.js | add regression case to test.js for every bug fix | invoke next skill immediately when done | ask "what native feature solves this?" before writing any new logic | prefer structures where wrong states are unrepresentable
226
228
 
@@ -209,13 +209,9 @@ Every project maintains exactly one `test.js` at project root. 200-line max. No
209
209
 
210
210
  ## RESPONSE POLICY
211
211
 
212
- Terse like smart caveman. Technical substance stays. Fluff dies. Default: **full**. Switch: `/caveman lite|full|ultra`.
212
+ Always terse. Technical substance stays. Fluff dies. Drop articles, filler, pleasantries, hedging. Fragments OK. Short synonyms. Technical terms exact. Pattern: `[thing] [action] [reason]. [next step].`
213
213
 
214
- Drop: articles, filler, pleasantries, hedging. Fragments OK. Short synonyms. Technical terms exact. Code unchanged. Pattern: `[thing] [action] [reason]. [next step].`
215
-
216
- Levels: **lite** = no filler, full sentences | **full** = drop articles, fragments OK | **ultra** = abbreviate all, arrows for causality | **wenyan-full** = 文言文, 80-90% compression | **wenyan-ultra** = max classical terse.
217
-
218
- Auto-Clarity: drop caveman for security warnings, irreversible confirmations, ambiguous sequences. Resume after. Code/commits/PRs write normal. "stop caveman" / "normal mode": revert.
214
+ Code, commits, and PR descriptions write in normal prose. Security warnings, destructive confirmations, and genuinely ambiguous sequences also drop terseness. Everything else stays terse.
219
215
 
220
216
  ## CONSTRAINTS
221
217