purecontext-mcp 1.11.1 → 1.13.0

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.
Files changed (69) hide show
  1. package/AGENT_INSTRUCTIONS.md +50 -10
  2. package/AGENT_REFERENCE.md +46 -0
  3. package/CHANGELOG.md +57 -0
  4. package/assets/agent-rules.md +57 -0
  5. package/dist/cli/hooks.d.ts.map +1 -1
  6. package/dist/cli/hooks.js +19 -8
  7. package/dist/cli/hooks.js.map +1 -1
  8. package/dist/cli/install-writers.d.ts.map +1 -1
  9. package/dist/cli/install-writers.js +26 -48
  10. package/dist/cli/install-writers.js.map +1 -1
  11. package/dist/config/cli.d.ts +8 -0
  12. package/dist/config/cli.d.ts.map +1 -1
  13. package/dist/config/cli.js +35 -0
  14. package/dist/config/cli.js.map +1 -1
  15. package/dist/config/config-loader.js +12 -0
  16. package/dist/config/config-loader.js.map +1 -1
  17. package/dist/config/config-schema.d.ts +29 -0
  18. package/dist/config/config-schema.d.ts.map +1 -1
  19. package/dist/config/config-schema.js +54 -0
  20. package/dist/config/config-schema.js.map +1 -1
  21. package/dist/core/index-manager.d.ts.map +1 -1
  22. package/dist/core/index-manager.js +17 -14
  23. package/dist/core/index-manager.js.map +1 -1
  24. package/dist/index.js +8 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/server/mcp-server.d.ts.map +1 -1
  27. package/dist/server/mcp-server.js +20 -0
  28. package/dist/server/mcp-server.js.map +1 -1
  29. package/dist/server/tools/check-consistency.d.ts +21 -0
  30. package/dist/server/tools/check-consistency.d.ts.map +1 -0
  31. package/dist/server/tools/check-consistency.js +214 -0
  32. package/dist/server/tools/check-consistency.js.map +1 -0
  33. package/dist/server/tools/check-index-staleness.d.ts +13 -0
  34. package/dist/server/tools/check-index-staleness.d.ts.map +1 -0
  35. package/dist/server/tools/check-index-staleness.js +127 -0
  36. package/dist/server/tools/check-index-staleness.js.map +1 -0
  37. package/dist/server/tools/compare-change-impact.d.ts.map +1 -1
  38. package/dist/server/tools/compare-change-impact.js +0 -0
  39. package/dist/server/tools/compare-change-impact.js.map +1 -1
  40. package/dist/server/tools/gate-envelope.d.ts +55 -0
  41. package/dist/server/tools/gate-envelope.d.ts.map +1 -0
  42. package/dist/server/tools/gate-envelope.js +119 -0
  43. package/dist/server/tools/gate-envelope.js.map +1 -0
  44. package/dist/server/tools/get-task-context.d.ts +52 -2
  45. package/dist/server/tools/get-task-context.d.ts.map +1 -1
  46. package/dist/server/tools/get-task-context.js +258 -20
  47. package/dist/server/tools/get-task-context.js.map +1 -1
  48. package/dist/server/tools/index-file.d.ts +13 -0
  49. package/dist/server/tools/index-file.d.ts.map +1 -0
  50. package/dist/server/tools/index-file.js +107 -0
  51. package/dist/server/tools/index-file.js.map +1 -0
  52. package/dist/server/tools/merge-readiness.d.ts +35 -0
  53. package/dist/server/tools/merge-readiness.d.ts.map +1 -0
  54. package/dist/server/tools/merge-readiness.js +118 -0
  55. package/dist/server/tools/merge-readiness.js.map +1 -0
  56. package/dist/server/tools/prepare-change.d.ts.map +1 -1
  57. package/dist/server/tools/prepare-change.js +10 -4
  58. package/dist/server/tools/prepare-change.js.map +1 -1
  59. package/dist/server/tools/verify-change.d.ts.map +1 -1
  60. package/dist/server/tools/verify-change.js +7 -1
  61. package/dist/server/tools/verify-change.js.map +1 -1
  62. package/dist/version.d.ts +1 -1
  63. package/dist/version.js +1 -1
  64. package/docs/04-configuration.md +23 -0
  65. package/docs/05-cli-reference.md +11 -0
  66. package/docs/06-tools-reference.md +79 -2
  67. package/docs/27-api-stability.md +27 -17
  68. package/docs/HARNESS-CONTRACT.md +128 -0
  69. package/package.json +3 -1
@@ -46,6 +46,7 @@ Do not read entire files to find code. Use the tools:
46
46
 
47
47
  | Goal | Tool |
48
48
  |------|------|
49
+ | Orient on a task (relevant symbols + files from a description) | `get_task_context` |
49
50
  | Find a function/class/method by name | `search_symbols` |
50
51
  | Find code by what it does | `search_semantic` |
51
52
  | Find a literal string, comment, or config value | `search_text` |
@@ -56,6 +57,12 @@ Do not read entire files to find code. Use the tools:
56
57
  | Know what breaks if I change a symbol | `get_blast_radius` |
57
58
  | How risky is a symbol to change (composite verdict) | `get_symbol_risk` |
58
59
  | Files that historically change together with this one | `get_co_change` |
60
+ | Impact verdict BEFORE editing existing code | `prepare_change` |
61
+ | Dedup / pattern check before writing NEW code | `check_consistency` |
62
+ | Re-index a file right after editing it (mid-task) | `index_file` |
63
+ | Confirm a finished edit is complete (plan vs actual) | `verify_change` |
64
+ | Did my change add a cycle / layer violation? | `compare_change_impact` |
65
+ | One go/no-go before merging a change | `merge_readiness` |
59
66
  | Find all call sites for a symbol | `find_references` |
60
67
  | Non-symbol file content (imports block, config) | `get_file_content` with `startLine`/`endLine` |
61
68
  | All implementations of an interface | `find_implementations` |
@@ -107,6 +114,34 @@ If the response includes `verdict: "no_match"`, the symbol does not exist in thi
107
114
 
108
115
  ---
109
116
 
117
+ ## Changing code safely — close the loop
118
+
119
+ PureContext is **judgment, not actuation** — it never edits files. You make the edit; these tools tell you what's safe before you start and what you missed after you finish. Run the loop for any non-trivial change:
120
+
121
+ ```
122
+ 1. get_task_context({ repoId, task }) → orient: relevant symbols/files + evidenceGaps
123
+ 2a. EXISTING code → prepare_change({ repoId, intent, targetSymbolId | query })
124
+ → predicted files, risk, missingCoChange, tests, gate
125
+ → keep predictedFilePaths + missingCoChange for step 5
126
+ 2b. NEW symbol → check_consistency({ repoId, name, kind, signature, intendedFilePath })
127
+ → duplicates, pattern to follow, where it belongs
128
+ 3. [make the edit]
129
+ 4. index_file({ repoId, filePaths }) → refresh the index, O(one file) — NOT index_folder
130
+ 5. verify_change({ repoId, diff, predictedFilePaths, predictedCoChange })
131
+ → unaddressedCoChange, unplannedChanges, coverage gaps
132
+ 6. merge_readiness({ repoId, diff, ... }) → one go/no-go: completeness + architecture regression
133
+ ```
134
+
135
+ **Gate envelope.** `prepare_change`, `verify_change`, `compare_change_impact`, `check_consistency`, and `merge_readiness` each return `{ gate: "pass" | "warn" | "block", gateReasons, nextAction }`. Branch on `gate`: `pass` = proceed · `warn` = proceed with judgment · `block` = fix what `gateReasons` lists first.
136
+
137
+ - **`prepare_change`** intents: `rename` / `delete` / `modify` / `extract`. Returns `ambiguous_target` + candidates when a `query` has no clear winner (it never guesses) and `no_target` when nothing matches.
138
+ - **`verify_change`** is **stateless** — pass `predictedFilePaths` and `predictedCoChange` back inline from `prepare_change`. Co-change reconciliation is suppressed on low git signal (it won't invent "you forgot X").
139
+ - **`compare_change_impact`** reports only the regression *delta* vs a baseline `get_architecture_snapshot` — new cycles / layer violations the change introduced, never pre-existing ones.
140
+
141
+ > Mid-task freshness is the linchpin: after every write call `index_file` (single-file, repo-size-independent), never `index_folder` (it re-scans the whole tree and stalls). See `docs/HARNESS-CONTRACT.md` for full greenfield/brownfield loop recipes.
142
+
143
+ ---
144
+
110
145
  ## Key navigation patterns
111
146
 
112
147
  ### Modify a function safely
@@ -203,14 +238,18 @@ If the response includes `verdict: "no_match"`, the symbol does not exist in thi
203
238
 
204
239
  ## Keeping the index fresh
205
240
 
206
- The file watcher triggers incremental re-indexing automatically. If the index seems stale:
241
+ Searches are only as good as the index. The cheap, mid-task path is the single most important freshness habit:
207
242
 
208
243
  ```
209
- index_folder({ path, force: false }) incremental (changed files only)
210
- index_folder({ path, force: true }) full re-index
244
+ index_file({ repoId, filePaths }) re-index just the files you edited (O(one file))
245
+ check_index_staleness({ repoId, filePaths }) is the index current? (no discovery pass)
246
+ index_folder({ path }) → cold start / first index of a repo (re-scans the whole tree)
247
+ index_folder({ path, force: true }) → full re-index (rebuild everything)
211
248
  invalidate_cache({ repoId }) → clear hashes, then index_folder
212
249
  ```
213
250
 
251
+ **After editing a file, call `index_file` — never `index_folder`.** `index_folder` stats every file in the tree (discovery-bound, slow on large repos); `index_file` skips discovery entirely and re-indexes only what you pass. Reserve `index_folder` for the first index of a repo. Use `check_index_staleness` at task start to decide between a cold `index_folder` and targeted `index_file`.
252
+
214
253
  ### Claude Code hooks (optional but recommended)
215
254
 
216
255
  Install the PureContext hooks to keep the index in sync automatically and preserve session orientation across context compaction:
@@ -219,15 +258,16 @@ Install the PureContext hooks to keep the index in sync automatically and preser
219
258
  npx purecontext-mcp hooks --install
220
259
  ```
221
260
 
222
- This installs three hooks into `~/.claude/settings.json`:
261
+ The hooks register as CLI commands in `~/.claude/settings.json` (no scripts copied — they update with the package). Highlights:
223
262
 
224
- | Hook | When it fires | What it does |
225
- |------|--------------|-------------|
226
- | **Index hook** | After `Edit` / `Write` | Re-indexes the modified file immediately |
227
- | **Session snapshot** | Before context compaction | Injects indexed repo list into the next turn so orientation is preserved |
228
- | **Edit guard** | Before `Edit` / `Write` | Soft warning suggesting `get_blast_radius` and `get_symbol_source` first |
263
+ | Hook event | What it does |
264
+ |------------|-------------|
265
+ | **PostToolUse** | After `Edit`/`Write`, re-indexes the modified file via the cheap `index_file` path (bootstraps a full index on first sight) |
266
+ | **PreToolUse** | Soft edit guard suggests `get_blast_radius` / `get_symbol_source` before editing |
267
+ | **PreCompact** | Injects the indexed-repo list before context compaction so orientation survives |
268
+ | **SubagentStart** | Injects condensed repo orientation for newly spawned subagents |
229
269
 
230
- All hooks are Node.js scripts they work identically on Windows, Linux, and macOS.
270
+ All hooks are Node.js — identical on Windows, Linux, and macOS.
231
271
 
232
272
  ---
233
273
 
@@ -9,6 +9,7 @@ The always-on instructions (mandatory workflow, decision rules, anti-patterns) l
9
9
 
10
10
  | I need to… | Use |
11
11
  |---|---|
12
+ | Orient on a task — get the relevant symbols + files from a task description | `get_task_context` |
12
13
  | Find a function/class/method by name | `search_symbols` |
13
14
  | Find code by what it does (meaning, not name) | `search_semantic` |
14
15
  | Find a literal string, comment, or config value | `search_text` |
@@ -46,6 +47,10 @@ The always-on instructions (mandatory workflow, decision rules, anti-patterns) l
46
47
  | Pre-edit impact verdict for an intended change | `prepare_change` |
47
48
  | Confirm an applied change is complete (plan vs actual) | `verify_change` |
48
49
  | Did my change introduce a new cycle / layer violation? | `compare_change_impact` |
50
+ | One go/no-go before merging a completed change | `merge_readiness` |
51
+ | Cheap single-file re-index after a write (mid-run) | `index_file` |
52
+ | Is the index current for these files? (no discovery) | `check_index_staleness` |
53
+ | Pre-write dedup/drift check for a NEW symbol (greenfield) | `check_consistency` |
49
54
  | 5-axis codebase health score (CI gate / dashboard) | `health_radar` |
50
55
  | Compare health before and after a refactoring | `diff_health_radar` |
51
56
  | Detailed debt report with per-file rankings | `get_debt_report` |
@@ -86,6 +91,20 @@ Index a local directory. Returns `repoId`. Re-indexing is incremental — only c
86
91
  - `force` (optional) — set `true` to force re-index of all files, even unchanged ones
87
92
  - `fileLimit` (optional) — override the configured file limit for this run
88
93
 
94
+ ### `index_file`
95
+ Targeted re-index of one or a few specific files WITHOUT the full-tree discovery pass `index_folder` performs — O(one file), independent of repo size. This is the mid-run freshness path: call it after writing/editing a file so subsequent searches reflect current state. Firing `index_folder` after every edit is discovery-bound and stalls; `index_file` does not.
96
+
97
+ - `repoId` (required)
98
+ - `filePaths` (required) — absolute or repo-relative; paths missing from disk are treated as deletions
99
+
100
+ The PostToolUse hook uses this automatically when installed.
101
+
102
+ ### `check_index_staleness`
103
+ Cheaply check whether the index is current — no discovery pass. Pass `filePaths` for a per-file `fresh`/`stale` verdict (compares stored content hash vs disk); omit them for a repo-level summary (indexed? + last-indexed time + counts). Use at task start to decide cold `index_folder` vs targeted `index_file`.
104
+
105
+ - `repoId` (required)
106
+ - `filePaths` (optional)
107
+
89
108
  ### `resolve_repo`
90
109
  Convert a local path to its `repoId` without indexing. Use when the project is already indexed but you don't have the `repoId` at hand.
91
110
 
@@ -172,6 +191,9 @@ Directory tree with file counts. Use when you need to understand the project's f
172
191
  ### `find_references`
173
192
  Find all usage sites for a symbol across the repo. Use before renaming or modifying a symbol.
174
193
 
194
+ ### `get_task_context`
195
+ Assemble a focused context bundle from a natural-language task description — the symbols and files most relevant to the work. The cold-start orientation front door. In the default `mode:"associative"` it discovers seed symbols, then **walks the real dependency + co-change graph** (imports, callers, historically co-changing files), so a structurally essential but lexically dissimilar symbol can be surfaced — not just keyword matches. Each item carries a `role` derived from the graph edge (`dependency`/`caller`/`historical`/`primary`) and `provenance`; the result adds `evidenceGaps` (`lowConfidenceSeeds`/`droppedByBudget`/`unselectedCoChange`) and `suggestedProbes[]` so you can decide whether to probe further. Works with zero embeddings (ranks by graph provenance). Pass `mode:"flat"` for legacy single-pass similarity. Fanout is governed by config `taskContext.*`.
196
+
175
197
  ---
176
198
 
177
199
  ## Dependency graph tools
@@ -404,6 +426,30 @@ Returns `verdict` (`complete` / `incomplete` / `scope_expanded`), `unaddressedCo
404
426
 
405
427
  Returns `verdict` (`regressed` / `improved` / `unchanged` / `no_baseline`), `newCycles` / `newLayerViolations` (what the change introduced), and `resolvedCycles` / `resolvedLayerViolations`. Distinct from `analyze_diff`'s `architecturalFlags`, which flag *pre-existing* issues — this reports only the delta and never blames the change for problems it didn't create. With no baseline snapshot it returns `no_baseline` and degrades to current-state counts.
406
428
 
429
+ **`merge_readiness`** — one pre-merge go/no-go that folds `verify_change` (completeness) and `compare_change_impact` (architecture regression) into a single envelope. Thin consumer — no new analysis.
430
+
431
+ ```json
432
+ { "repoId": "...", "diff": "<git diff>", "predictedFilePaths": ["..."], "predictedCoChange": ["..."], "baselineSnapshotId": "<id>" }
433
+ ```
434
+
435
+ Returns `gate` (`pass` / `warn` / `block`), `reasons[]`, and `unresolved[]` (the exact list of unaddressed co-change, untested changed symbols, new cycles, and new layer violations standing between the diff and a clean merge). `block` → fix `unresolved[]` and re-run.
436
+
437
+ ### The normalized gate envelope
438
+
439
+ `prepare_change`, `verify_change`, `compare_change_impact`, `check_consistency`, and `merge_readiness` each return a stable `{ gate: "pass"|"warn"|"block", gateReasons[], nextAction }` a harness can branch on with one field — additive to their detailed verdicts. `pass` = proceed; `warn` = proceed with judgment; `block` = unfinished/regressed work.
440
+
441
+ ### `check_consistency` — the greenfield pre-write front door
442
+
443
+ Before creating a NEW symbol/file (greenfield, where there is no git history yet), check it against the growing index — structural search only, no embedding provider needed (`mode: "structural"`).
444
+
445
+ ```json
446
+ { "repoId": "...", "name": "WindsurfConnector", "kind": "class", "intendedFilePath": "src/connectors/windsurf.ts" }
447
+ ```
448
+
449
+ Returns `duplicates` ("you already wrote this"), `patternFit` (closest existing siblings to mirror), `placement` (does the intended path fit where siblings live?), `existingApiPointer` (what already lives in the target dir), and the gate envelope. On a near-empty index it returns `signalQuality: "low"` and suppresses duplicate claims (never invents "already exists").
450
+
451
+ > **Using PureContext inside an automated harness?** See `docs/HARNESS-CONTRACT.md` for the greenfield and brownfield loop recipes, the freshness rules (`index_file` mid-run, never `index_folder`), and the stable gate-envelope contract.
452
+
407
453
  ---
408
454
 
409
455
  ## Health & debt tools
package/CHANGELOG.md CHANGED
@@ -11,6 +11,63 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
11
11
 
12
12
  ---
13
13
 
14
+ ## [1.13.0] - 2026-06-28
15
+
16
+ ### Added
17
+
18
+ **Active context reconstruction — `get_task_context` associative mode**
19
+
20
+ `get_task_context` no longer does a single-shot "top-N similarity → one AI selection" pass. In the new default `associative` mode it discovers seed symbols, then **walks the real dependency and temporal graph** around them — imports (forward deps), callers (reverse deps via blast radius), and historically co-changing files — so a structurally essential but lexically dissimilar symbol (a dependency, a caller, a co-change partner) can now be selected.
21
+
22
+ - Each returned item carries a `role` **derived from the graph edge that surfaced it** (`dependency` / `caller` / `historical` / `primary`), plus a `provenance` object (`{ via, seedId?, confidence? }`). The AI keeps only the prose `relevanceReason`.
23
+ - New top-level `evidenceGaps` (`lowConfidenceSeeds`, `droppedByBudget`, `unselectedCoChange`) and `suggestedProbes[]` tell the agent what it still hasn't seen — the agent is the router and decides whether to probe further (no server-side reflective loop).
24
+ - Works **with zero embeddings**: when no AI/embedding provider is configured, results rank by graph provenance instead of keyword similarity — the floor rises from "top-N keyword guess" to "seeds + real graph neighborhood" (pure SQL).
25
+ - `_meta` gains `mode`, `seedsExpanded`, and `poolSize`.
26
+ - Pass `mode:"flat"` for the legacy single-pass similarity selection — **byte-identical to pre-1.13.0 output** (regression-guarded).
27
+
28
+ These are thin consumers of existing engines (`get_context_bundle`, `get_blast_radius`, `get_co_change`) — no new analysis engine.
29
+
30
+ ### Configuration
31
+
32
+ - `taskContext.seedCount` (default 8) — top-N discovery hits expanded via the graph.
33
+ - `taskContext.expansionDepth` (default 1) — dep-graph hops walked per seed (forward + reverse).
34
+ - `taskContext.maxPool` (default 60) — candidate pool cap before ranking.
35
+ - `taskContext.maxCoChangePartners` (default 5) — co-change partner files pulled per seed.
36
+ - `taskContext.maxSymbolsPerPartner` (default 5) — symbols pulled per co-change partner file.
37
+
38
+ ---
39
+
40
+ ## [1.12.0] - 2026-06-28
41
+
42
+ ### Added
43
+
44
+ **Harness Loop Fit — making PureContext usable inside automated codegen harnesses**
45
+
46
+ PureContext is the persistent cross-process brain a harness lacks: it tells the generating agent what already exists, what it's drifting from, and what it forgot — without re-reading the codebase from scratch every run. New tools across index freshness, greenfield consistency, and brownfield merge-gating:
47
+
48
+ - **`index_file`** — targeted re-index of one or a few files **without** the full-tree discovery pass `index_folder` performs (O(one file), independent of repo size). This is the mid-run freshness path: call it after writing a file so subsequent searches reflect current state. Firing `index_folder` after every edit is discovery-bound and stalls; `index_file` does not.
49
+ - **`check_index_staleness`** — cheaply check whether the index is current with no discovery pass. Pass `filePaths` for a per-file `fresh`/`stale` verdict (stored content hash vs disk); omit them for a repo-level summary. Use at task start to choose a cold `index_folder` vs targeted `index_file`.
50
+ - **`check_consistency`** — the greenfield pre-write front door: given an intended new symbol (name/kind/signature/target dir) it returns `duplicates` ("you already wrote this"), `patternFit` (sibling exemplars), `placement`, and `existingApiPointer`. Runs on **structural search alone — no embedding provider required** (`mode:"structural"`); `signalQuality:"low"` suppresses dedup on a sparse index.
51
+ - **`merge_readiness`** — one pre-merge go/no-go that folds `verify_change` (completeness vs the prediction) and `compare_change_impact` (architecture regression vs a baseline snapshot) into a single `{ gate, reasons[], unresolved[] }`. Thin consumer — no new analysis.
52
+
53
+ **Normalized gate envelope.** `prepare_change`, `verify_change`, `compare_change_impact`, `check_consistency`, and `merge_readiness` each return a stable `{ gate: "pass"|"warn"|"block", gateReasons[], nextAction }` a harness can branch on with a single field — additive to their detailed verdicts.
54
+
55
+ **`index-file` CLI subcommand + PostToolUse hook.** The Claude Code PostToolUse hook now calls the cheap targeted re-index (`purecontext-mcp index-file --repo <dir> <file...>`) instead of a full `index-folder`, bootstrapping a full index automatically the first time a repo is seen.
56
+
57
+ **`docs/HARNESS-CONTRACT.md`** — greenfield + brownfield loop recipes, freshness rules (`index_file` mid-run, never `index_folder`), and the stable gate-envelope contract.
58
+
59
+ ### Fixed
60
+
61
+ - **No-op re-index churn.** `index_folder` used to skip persisting the content hash for files that yield 0 symbols and 0 imports, so those files were re-read and re-parsed on every run. The hash is now always persisted (delete-then-upsert even when empty), so a true no-op reports `filesIndexed: 0`. `reindexFiles` also now clears stale rows when an edit empties a file's last symbol (parity with a full index).
62
+
63
+ ### Configuration
64
+
65
+ - `consistency.maxDuplicates` (default 5) — max duplicate candidates returned by `check_consistency`.
66
+ - `consistency.maxPatternFit` (default 5) — max sibling/pattern-fit exemplars returned.
67
+ - `consistency.maxApiPointer` (default 20) — max existing-symbol names listed for the target directory.
68
+
69
+ ---
70
+
14
71
  ## [1.11.0] - 2026-06-14
15
72
 
16
73
  ### Added
@@ -0,0 +1,57 @@
1
+ ## PureContext MCP — Code Navigation & Safe Change
2
+
3
+ Use PureContext MCP tools to read and change code. Never read whole files to find code, and assess impact before you edit.
4
+
5
+ ### Mandatory workflow
6
+
7
+ 1. **Start every session**: `list_repos()` → get `repoId` (required for all tools). Not indexed? `index_folder({ path })`.
8
+ 2. **Orient on a task**: `get_task_context({ repoId, task })` → the symbols and files most relevant to the work, walked over the real dependency + co-change graph (not just keyword matches), plus `evidenceGaps` for what you haven't seen yet.
9
+ 3. **Find code**: `search_symbols` (by name) → read `summary`/`signature` → `get_symbol_source` only for what you'll edit. `search_semantic` for concepts, `search_text` for literals.
10
+
11
+ ### Changing code safely — close the loop
12
+
13
+ PureContext is judgment, not actuation: it never edits files. You make the edit; these tools say what's safe and what you forgot.
14
+
15
+ 1. **Before editing existing code**: `prepare_change({ repoId, intent, targetSymbolId | query })` → predicted files, risk, co-changing files you'd forget (`missingCoChange`), tests, and a `gate`. Keep `predictedFilePaths` + `missingCoChange` for step 5.
16
+ 2. **Before writing a NEW symbol** (greenfield): `check_consistency({ repoId, name, kind, signature, intendedFilePath })` → duplicates ("you already wrote this"), the pattern to follow, where it belongs.
17
+ 3. **Make the edit.**
18
+ 4. **Refresh the index**: `index_file({ repoId, filePaths })` after each write — O(one file). Never `index_folder` mid-task (it re-scans the whole tree).
19
+ 5. **Verify**: `verify_change({ repoId, diff, predictedFilePaths, predictedCoChange })` → did you address everything (and only what) you planned?
20
+ 6. **Before merge**: `merge_readiness({ repoId, diff, ... })` → one go/no-go folding completeness + architecture regression.
21
+
22
+ Every gate tool returns `{ gate: "pass" | "warn" | "block", gateReasons, nextAction }` — branch on `gate`: `pass`=proceed, `warn`=proceed with judgment, `block`=fix first.
23
+
24
+ ### Pick the right tool
25
+
26
+ | I need to… | Use |
27
+ |------------|-----|
28
+ | Orient on a task (relevant symbols + files) | `get_task_context` |
29
+ | Find a function/class/method by name | `search_symbols` |
30
+ | Find code by what it does (meaning) | `search_semantic` |
31
+ | Find a literal string / comment / config value | `search_text` |
32
+ | Read a symbol's implementation | `get_symbol_source` |
33
+ | Survey one file / whole project | `get_file_outline` / `get_repo_outline` |
34
+ | Know what breaks if I change a symbol | `get_blast_radius` |
35
+ | Find every call site of a symbol | `find_references` |
36
+ | Judge how risky a symbol is to change | `get_symbol_risk` |
37
+ | Files that historically change together | `get_co_change` |
38
+ | Impact verdict BEFORE an edit | `prepare_change` |
39
+ | Dedup / pattern check before writing NEW code | `check_consistency` |
40
+ | Re-index a file after editing it (mid-task) | `index_file` |
41
+ | Confirm a finished edit is complete | `verify_change` |
42
+ | Did my change add a cycle / layer violation? | `compare_change_impact` |
43
+ | One go/no-go before merging | `merge_readiness` |
44
+ | Pre-flight a rename / delete / move | `check_rename_safe` / `check_delete_safe` / `check_move_safe` |
45
+ | Find exported symbols with no tests | `find_untested_symbols` |
46
+ | Codebase health / debt report | `health_radar` / `get_debt_report` |
47
+
48
+ ### Anti-patterns — never do these
49
+
50
+ - Do not read whole files to find a function — use `search_symbols` + `get_symbol_source`
51
+ - Do not call `get_symbol_source` for every result — read `summary` first
52
+ - Do not skip `list_repos` — every tool needs a `repoId`
53
+ - Do not run `index_folder` after every edit — use `index_file` (single-file, cheap)
54
+ - Do not use `search_text` for symbol lookups — use `search_symbols`
55
+ - Do not re-search after `verdict: "no_match"` — the symbol does not exist
56
+
57
+ Full tool reference, navigation patterns, and harness loop recipes: **`AGENT_REFERENCE.md`** and **`docs/HARNESS-CONTRACT.md`**.
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/cli/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAoHH,wBAAgB,eAAe,IAAI,IAAI,CAetC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAenC;AAID,wBAAgB,aAAa,IAAI,IAAI,CAoDpC;AA6BD,wBAAgB,cAAc,IAAI,IAAI,CAuBrC;AAwCD,oDAAoD;AACpD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBvD;AAED,iEAAiE;AACjE,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CA8BxD;AA+DD,qEAAqE;AACrE,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBvD;AAED,uDAAuD;AACvD,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoB3D;AAED,8EAA8E;AAC9E,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3D;AAuED,qFAAqF;AACrF,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAwC1D;AAED,8EAA8E;AAC9E,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CA8C1D;AAID,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAUpD"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/cli/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAoHH,wBAAgB,eAAe,IAAI,IAAI,CAetC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAenC;AAID,wBAAgB,aAAa,IAAI,IAAI,CAoDpC;AA6BD,wBAAgB,cAAc,IAAI,IAAI,CAuBrC;AA8CD,oDAAoD;AACpD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBvD;AAED,iEAAiE;AACjE,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmCxD;AA+DD,qEAAqE;AACrE,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBvD;AAED,uDAAuD;AACvD,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoB3D;AAED,8EAA8E;AAC9E,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3D;AAuED,qFAAqF;AACrF,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAwC1D;AAED,8EAA8E;AAC9E,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CA8C1D;AAID,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAUpD"}
package/dist/cli/hooks.js CHANGED
@@ -228,11 +228,17 @@ function findRepoRoot(filePath) {
228
228
  dir = parent;
229
229
  }
230
230
  }
231
- function reindexRepo(repoRoot) {
231
+ /**
232
+ * Targeted re-index of the edited files in one repo. Uses the cheap single-file
233
+ * path (index-file) rather than a full index-folder so the PostToolUse hook runs
234
+ * sub-second instead of stalling ~11s on every edit. index-file bootstraps a full
235
+ * index itself when the repo has not been indexed yet.
236
+ */
237
+ function reindexFilesInRepo(repoRoot, filePaths) {
232
238
  const selfScript = process.argv[1];
233
- if (!selfScript)
239
+ if (!selfScript || filePaths.length === 0)
234
240
  return;
235
- spawnSync(process.execPath, [selfScript, 'index-folder', '--path', repoRoot], {
241
+ spawnSync(process.execPath, [selfScript, 'index-file', '--repo', repoRoot, ...filePaths], {
236
242
  stdio: 'ignore',
237
243
  timeout: 60_000,
238
244
  });
@@ -284,14 +290,19 @@ export async function cmdHookPostToolUse() {
284
290
  paths.push(fp);
285
291
  }
286
292
  }
287
- const roots = new Set();
293
+ // Group edited files by repo root, then targeted-reindex each root once
294
+ // (batches a MultiEdit's files into a single index-file call).
295
+ const byRoot = new Map();
288
296
  for (const fp of paths) {
289
297
  const root = findRepoRoot(fp);
290
- if (root)
291
- roots.add(root);
298
+ if (!root)
299
+ continue;
300
+ const list = byRoot.get(root) ?? [];
301
+ list.push(fp);
302
+ byRoot.set(root, list);
292
303
  }
293
- for (const root of roots)
294
- reindexRepo(root);
304
+ for (const [root, files] of byRoot)
305
+ reindexFilesInRepo(root, files);
295
306
  }
296
307
  catch { /* never block the edit */ }
297
308
  process.exit(0);
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/cli/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/cli/hooks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"install-writers.d.ts","sourceRoot":"","sources":["../../src/cli/install-writers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAIhD,eAAO,MAAM,YAAY,mCAAmC,CAAC;AAC7D,eAAO,MAAM,UAAU,iCAAiC,CAAC;AA+CzD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,UAAU,GAAG,KAAK,GAAG,aAAa,GAAG,MAAM,CAQ7F;AA8BD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAepF;AAgQD;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBpF;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBtF;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBtF;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBnF;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBrF;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBrF;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC7F;AAeD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAShG,CAAC"}
1
+ {"version":3,"file":"install-writers.d.ts","sourceRoot":"","sources":["../../src/cli/install-writers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAIhD,eAAO,MAAM,YAAY,mCAAmC,CAAC;AAC7D,eAAO,MAAM,UAAU,iCAAiC,CAAC;AA6BzD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,UAAU,GAAG,KAAK,GAAG,aAAa,GAAG,MAAM,CAM7F;AA8BD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAepF;AAgQD;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBpF;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBtF;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBtF;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBnF;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBrF;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBrF;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC7F;AAeD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAShG,CAAC"}
@@ -10,6 +10,7 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
10
10
  import { spawnSync } from 'child_process';
11
11
  import yaml from 'js-yaml';
12
12
  import { join, dirname } from 'path';
13
+ import { fileURLToPath } from 'url';
13
14
  import { homedir, platform } from 'os';
14
15
  import { cmdHooksInstall } from './hooks.js';
15
16
  import { getClaudeDesktopConfigPath } from './install-detect.js';
@@ -18,56 +19,33 @@ import { resolveServerLaunch, nodeMajor } from './resolve-node.js';
18
19
  export const START_MARKER = '<!-- purecontext-mcp-start -->';
19
20
  export const END_MARKER = '<!-- purecontext-mcp-end -->';
20
21
  // ─── Shared instruction content ───────────────────────────────────────────────
21
- const MARKDOWN_CONTENT = `## PureContext MCP Code Navigation
22
-
23
- Always use PureContext MCP tools for code navigation. Never read entire files to find code.
24
-
25
- ### Mandatory workflow
26
-
27
- 1. **Start every session**: \`list_repos()\` → get \`repoId\` (required for all tools)
28
- 2. **Find code by name**: \`search_symbols\` → read \`summary\` and \`signature\` → only call \`get_symbol_source\` for symbols you will actually edit
29
- 3. **Find code by behaviour**: \`search_semantic\` for conceptual queries; \`search_text\` for literals/comments
30
-
31
- ### Pick the right tool
32
-
33
- | I need to… | Use |
34
- |------------|-----|
35
- | Find a function/class/method by name | \`search_symbols\` |
36
- | Find code by what it does (meaning) | \`search_semantic\` |
37
- | Find a literal string, comment, or config value | \`search_text\` |
38
- | Read a symbol's implementation | \`get_symbol_source\` |
39
- | Read a non-symbol file region (imports, config) | \`get_file_content\` |
40
- | Survey one file / the whole project | \`get_file_outline\` / \`get_repo_outline\` |
41
- | Know what breaks if I change a symbol | \`get_blast_radius\` |
42
- | Find every call site of a symbol | \`find_references\` |
43
- | See the callers/callees tree | \`get_call_hierarchy\` |
44
- | Judge how risky a symbol is to change | \`get_symbol_risk\` |
45
- | Find files that change together with this one | \`get_co_change\` |
46
- | Pre-flight a rename / delete / move | \`check_rename_safe\` / \`check_delete_safe\` / \`check_move_safe\` |
47
- | Find exported symbols with no tests | \`find_untested_symbols\` |
48
- | Codebase health score / debt report | \`health_radar\` / \`get_debt_report\` |
49
-
50
- ### Before editing risky code
51
-
52
- Before broad or automated edits to an unfamiliar symbol, check \`get_symbol_risk\` (composite churn + centrality + complexity + test-gap + co-change, banded \`low\`/\`review\`/\`high\`). For a \`high\` symbol, inspect its callers (\`get_blast_radius\`) and its historical co-changers (\`get_co_change\`) first — co-changing files are the second-order edits the import graph can't show you. \`search_symbols\` and \`get_symbol_source\` accept \`includeRisk: true\` to attach a compact \`{ band, riskScore }\` inline.
53
-
54
- ### Anti-patterns — never do these
55
-
56
- - Do not read whole files to find a function — use \`search_symbols\` + \`get_symbol_source\`
57
- - Do not call \`get_symbol_source\` for every result — read \`summary\` first
58
- - Do not skip \`list_repos\` — every tool needs a \`repoId\`
59
- - Do not use \`search_text\` for symbol lookups — it greps raw text; use \`search_symbols\`
60
- - Do not re-search after \`verdict: "no_match"\` — the symbol does not exist
61
-
62
- Full tool reference (every parameter), navigation patterns, and known limitations: **\`AGENT_REFERENCE.md\`**.`;
22
+ // Single source of truth for the compact always-on agent rules. It lives as
23
+ // plain markdown at the package root (`assets/agent-rules.md`) — edited there,
24
+ // read here. Both src/cli/ (dev + tests) and dist/cli/ (published package) sit
25
+ // exactly two levels under the package root, so the same relative path resolves
26
+ // in either layout. `assets/` is listed in package.json `files`, so it ships.
27
+ function agentRulesPath() {
28
+ const here = dirname(fileURLToPath(import.meta.url));
29
+ return join(here, '..', '..', 'assets', 'agent-rules.md');
30
+ }
31
+ let cachedMarkdownContent = null;
32
+ function getMarkdownContent() {
33
+ if (cachedMarkdownContent !== null)
34
+ return cachedMarkdownContent;
35
+ const path = agentRulesPath();
36
+ if (!existsSync(path)) {
37
+ throw new Error(`PureContext: agent rules file not found at ${path}. ` +
38
+ 'This file ships with the package reinstall purecontext-mcp if it is missing.');
39
+ }
40
+ cachedMarkdownContent = readFileSync(path, 'utf-8').trimEnd();
41
+ return cachedMarkdownContent;
42
+ }
63
43
  export function getPureContextInstructions(format) {
44
+ const content = getMarkdownContent();
64
45
  if (format === 'mdc') {
65
- return `---\ndescription: PureContext MCP code navigation rules\nalwaysApply: true\n---\n\n${MARKDOWN_CONTENT}`;
66
- }
67
- if (format === 'json-system') {
68
- return MARKDOWN_CONTENT;
46
+ return `---\ndescription: PureContext MCP code navigation rules\nalwaysApply: true\n---\n\n${content}`;
69
47
  }
70
- return MARKDOWN_CONTENT;
48
+ return content;
71
49
  }
72
50
  // ─── Helpers ──────────────────────────────────────────────────────────────────
73
51
  function replaceMarkerBlock(existing, newBlock) {
@@ -337,7 +315,7 @@ export async function installCursor(projectRoot, scope) {
337
315
  if (existsSync(filePath)) {
338
316
  const existing = readFileSync(filePath, 'utf-8');
339
317
  if (existing.includes(START_MARKER)) {
340
- writeFileSync(filePath, replaceMarkerBlock(existing, markedBlock(MARKDOWN_CONTENT)), 'utf-8');
318
+ writeFileSync(filePath, replaceMarkerBlock(existing, markedBlock(getMarkdownContent())), 'utf-8');
341
319
  return;
342
320
  }
343
321
  }