purecontext-mcp 1.5.2 → 1.11.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.
- package/AGENT_INSTRUCTIONS.md +18 -10
- package/AGENT_REFERENCE.md +684 -561
- package/CHANGELOG.md +567 -445
- package/CODE-HISTORY.md +29 -1
- package/FRAMEWORK-ADAPTERS.md +368 -351
- package/FULL-INSTALLATION-GUIDE.md +351 -341
- package/README.md +411 -339
- package/REFACTORING-SAFELY.md +338 -279
- package/SAFE-CHANGES.md +208 -156
- package/USER-GUIDE.md +3 -1
- package/WHY-PURECONTEXT.md +103 -73
- package/WORKFLOW-PR-REVIEW.md +245 -199
- package/dist/adapters/astro-preprocessor.d.ts +25 -0
- package/dist/adapters/astro-preprocessor.d.ts.map +1 -0
- package/dist/adapters/astro-preprocessor.js +50 -0
- package/dist/adapters/astro-preprocessor.js.map +1 -0
- package/dist/adapters/astro.d.ts +13 -0
- package/dist/adapters/astro.d.ts.map +1 -0
- package/dist/adapters/astro.js +83 -0
- package/dist/adapters/astro.js.map +1 -0
- package/dist/adapters/detect-utils.d.ts +38 -0
- package/dist/adapters/detect-utils.d.ts.map +1 -0
- package/dist/adapters/detect-utils.js +95 -0
- package/dist/adapters/detect-utils.js.map +1 -0
- package/dist/adapters/nuxt.d.ts +20 -0
- package/dist/adapters/nuxt.d.ts.map +1 -1
- package/dist/adapters/nuxt.js +128 -13
- package/dist/adapters/nuxt.js.map +1 -1
- package/dist/adapters/svelte-preprocessor.d.ts +29 -0
- package/dist/adapters/svelte-preprocessor.d.ts.map +1 -0
- package/dist/adapters/svelte-preprocessor.js +83 -0
- package/dist/adapters/svelte-preprocessor.js.map +1 -0
- package/dist/adapters/svelte.d.ts +13 -0
- package/dist/adapters/svelte.d.ts.map +1 -0
- package/dist/adapters/svelte.js +96 -0
- package/dist/adapters/svelte.js.map +1 -0
- package/dist/adapters/vue.d.ts.map +1 -1
- package/dist/adapters/vue.js +87 -20
- package/dist/adapters/vue.js.map +1 -1
- package/dist/bin.d.ts +16 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +21 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli/hooks.d.ts +2 -2
- package/dist/cli/hooks.d.ts.map +1 -1
- package/dist/cli/hooks.js +123 -135
- package/dist/cli/hooks.js.map +1 -1
- package/dist/cli/install-writers.d.ts.map +1 -1
- package/dist/cli/install-writers.js +281 -36
- package/dist/cli/install-writers.js.map +1 -1
- package/dist/cli/resolve-node.d.ts +53 -0
- package/dist/cli/resolve-node.d.ts.map +1 -0
- package/dist/cli/resolve-node.js +84 -0
- package/dist/cli/resolve-node.js.map +1 -0
- package/dist/config/config-loader.js +24 -0
- package/dist/config/config-loader.js.map +1 -1
- package/dist/config/config-schema.d.ts +71 -0
- package/dist/config/config-schema.d.ts.map +1 -1
- package/dist/config/config-schema.js +102 -0
- package/dist/config/config-schema.js.map +1 -1
- package/dist/core/db/api-keys.d.ts +1 -1
- package/dist/core/db/api-keys.d.ts.map +1 -1
- package/dist/core/db/api-keys.js +39 -39
- package/dist/core/db/api-keys.js.map +1 -1
- package/dist/core/db/co-change-store.d.ts +34 -0
- package/dist/core/db/co-change-store.d.ts.map +1 -0
- package/dist/core/db/co-change-store.js +78 -0
- package/dist/core/db/co-change-store.js.map +1 -0
- package/dist/core/db/schema.d.ts +3 -3
- package/dist/core/db/schema.d.ts.map +1 -1
- package/dist/core/db/schema.js +12 -30
- package/dist/core/db/schema.js.map +1 -1
- package/dist/core/db/sqlite-loader.d.ts +51 -0
- package/dist/core/db/sqlite-loader.d.ts.map +1 -0
- package/dist/core/db/sqlite-loader.js +94 -0
- package/dist/core/db/sqlite-loader.js.map +1 -0
- package/dist/core/db/wasm-sqlite.d.ts +4 -0
- package/dist/core/db/wasm-sqlite.d.ts.map +1 -0
- package/dist/core/db/wasm-sqlite.js +270 -0
- package/dist/core/db/wasm-sqlite.js.map +1 -0
- package/dist/core/diff-parser.d.ts.map +1 -1
- package/dist/core/diff-parser.js +6 -1
- package/dist/core/diff-parser.js.map +1 -1
- package/dist/core/git-log-reader.d.ts +28 -0
- package/dist/core/git-log-reader.d.ts.map +1 -1
- package/dist/core/git-log-reader.js +74 -3
- package/dist/core/git-log-reader.js.map +1 -1
- package/dist/core/index-manager.d.ts.map +1 -1
- package/dist/core/index-manager.js +29 -3
- package/dist/core/index-manager.js.map +1 -1
- package/dist/core/indexing-worker.d.ts +2 -0
- package/dist/core/indexing-worker.d.ts.map +1 -1
- package/dist/core/indexing-worker.js +2 -0
- package/dist/core/indexing-worker.js.map +1 -1
- package/dist/core/watcher/file-watcher.d.ts +6 -0
- package/dist/core/watcher/file-watcher.d.ts.map +1 -1
- package/dist/core/watcher/file-watcher.js +11 -1
- package/dist/core/watcher/file-watcher.js.map +1 -1
- package/dist/graph/path-resolver.js +86 -17
- package/dist/graph/path-resolver.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/node-guard.d.ts +15 -0
- package/dist/node-guard.d.ts.map +1 -0
- package/dist/node-guard.js +33 -0
- package/dist/node-guard.js.map +1 -0
- package/dist/server/admin-api.d.ts +1 -1
- package/dist/server/admin-api.d.ts.map +1 -1
- package/dist/server/admin-api.js +2 -2
- package/dist/server/admin-api.js.map +1 -1
- package/dist/server/auth/api-key.d.ts +1 -1
- package/dist/server/auth/api-key.d.ts.map +1 -1
- package/dist/server/mcp-server.d.ts.map +1 -1
- package/dist/server/mcp-server.js +25 -0
- package/dist/server/mcp-server.js.map +1 -1
- package/dist/server/tools/analyze-diff.d.ts +8 -0
- package/dist/server/tools/analyze-diff.d.ts.map +1 -1
- package/dist/server/tools/analyze-diff.js +80 -16
- package/dist/server/tools/analyze-diff.js.map +1 -1
- package/dist/server/tools/change-synthesis.d.ts +90 -0
- package/dist/server/tools/change-synthesis.d.ts.map +1 -0
- package/dist/server/tools/change-synthesis.js +236 -0
- package/dist/server/tools/change-synthesis.js.map +1 -0
- package/dist/server/tools/co-change.d.ts +65 -0
- package/dist/server/tools/co-change.d.ts.map +1 -0
- package/dist/server/tools/co-change.js +146 -0
- package/dist/server/tools/co-change.js.map +1 -0
- package/dist/server/tools/compare-change-impact.d.ts +58 -0
- package/dist/server/tools/compare-change-impact.d.ts.map +1 -0
- package/dist/server/tools/compare-change-impact.js +0 -0
- package/dist/server/tools/compare-change-impact.js.map +1 -0
- package/dist/server/tools/find-refactoring-opportunities.d.ts +1 -1
- package/dist/server/tools/get-architecture-snapshot.d.ts.map +1 -1
- package/dist/server/tools/get-architecture-snapshot.js +28 -14
- package/dist/server/tools/get-architecture-snapshot.js.map +1 -1
- package/dist/server/tools/get-churn-metrics.d.ts.map +1 -1
- package/dist/server/tools/get-churn-metrics.js +1 -12
- package/dist/server/tools/get-churn-metrics.js.map +1 -1
- package/dist/server/tools/get-co-change.d.ts +37 -0
- package/dist/server/tools/get-co-change.d.ts.map +1 -0
- package/dist/server/tools/get-co-change.js +120 -0
- package/dist/server/tools/get-co-change.js.map +1 -0
- package/dist/server/tools/get-context-bundle.d.ts.map +1 -1
- package/dist/server/tools/get-context-bundle.js +56 -3
- package/dist/server/tools/get-context-bundle.js.map +1 -1
- package/dist/server/tools/get-entry-points.d.ts +1 -1
- package/dist/server/tools/get-symbol-risk.d.ts +25 -0
- package/dist/server/tools/get-symbol-risk.d.ts.map +1 -0
- package/dist/server/tools/get-symbol-risk.js +60 -0
- package/dist/server/tools/get-symbol-risk.js.map +1 -0
- package/dist/server/tools/get-symbol-source.d.ts +2 -0
- package/dist/server/tools/get-symbol-source.d.ts.map +1 -1
- package/dist/server/tools/get-symbol-source.js +18 -1
- package/dist/server/tools/get-symbol-source.js.map +1 -1
- package/dist/server/tools/index-repo.d.ts.map +1 -1
- package/dist/server/tools/index-repo.js +8 -2
- package/dist/server/tools/index-repo.js.map +1 -1
- package/dist/server/tools/prepare-change.d.ts +61 -0
- package/dist/server/tools/prepare-change.d.ts.map +1 -0
- package/dist/server/tools/prepare-change.js +262 -0
- package/dist/server/tools/prepare-change.js.map +1 -0
- package/dist/server/tools/search-symbols.d.ts +2 -0
- package/dist/server/tools/search-symbols.d.ts.map +1 -1
- package/dist/server/tools/search-symbols.js +33 -0
- package/dist/server/tools/search-symbols.js.map +1 -1
- package/dist/server/tools/symbol-lines.d.ts +25 -0
- package/dist/server/tools/symbol-lines.d.ts.map +1 -0
- package/dist/server/tools/symbol-lines.js +40 -0
- package/dist/server/tools/symbol-lines.js.map +1 -0
- package/dist/server/tools/symbol-risk.d.ts +109 -0
- package/dist/server/tools/symbol-risk.d.ts.map +1 -0
- package/dist/server/tools/symbol-risk.js +251 -0
- package/dist/server/tools/symbol-risk.js.map +1 -0
- package/dist/server/tools/verify-change.d.ts +40 -0
- package/dist/server/tools/verify-change.d.ts.map +1 -0
- package/dist/server/tools/verify-change.js +149 -0
- package/dist/server/tools/verify-change.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/docs/01-introduction.md +2 -2
- package/docs/02-installation.md +97 -89
- package/docs/03-quick-start.md +138 -135
- package/docs/04-configuration.md +247 -214
- package/docs/05-cli-reference.md +236 -219
- package/docs/06-tools-reference.md +902 -499
- package/docs/14-transport-modes.md +170 -167
- package/docs/18-git-history.md +43 -0
- package/docs/23-performance.md +123 -121
- package/docs/26-troubleshooting.md +249 -234
- package/grammars/README.md +88 -0
- package/package.json +7 -25
- package/AGENT_INSTRUCTIONS_SHORT.md +0 -150
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
# PureContext MCP — Agent Instructions
|
|
2
|
-
|
|
3
|
-
PureContext indexes codebases with tree-sitter and serves symbols via MCP. Retrieving a 45-line function by name costs ~150 tokens vs ~2,000 tokens for reading the whole file. Use these tools instead of reading files.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Mandatory first step
|
|
8
|
-
|
|
9
|
-
Always call `list_repos` before any code navigation. If the project is not listed, call `index_folder` with the absolute project path. Every other tool requires the `repoId` returned by these two calls.
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## Pick the right tool
|
|
14
|
-
|
|
15
|
-
| I need to… | Use |
|
|
16
|
-
|---|---|
|
|
17
|
-
| Find a function/class/method by name | `search_symbols` |
|
|
18
|
-
| Find code by what it does (meaning, not name) | `search_semantic` |
|
|
19
|
-
| Find a literal string, comment, or config value | `search_text` |
|
|
20
|
-
| Read a symbol's implementation | `get_symbol_source` |
|
|
21
|
-
| Fetch several symbols at once | `get_symbols` |
|
|
22
|
-
| Survey all symbols in one file | `get_file_outline` |
|
|
23
|
-
| Survey the whole project layout | `get_repo_outline` or `get_file_tree` |
|
|
24
|
-
| Read a non-symbol file section (imports, config block) | `get_file_content` with `startLine`/`endLine` |
|
|
25
|
-
| Understand what a symbol depends on | `get_context_bundle` |
|
|
26
|
-
| Know what breaks if I change a symbol | `get_blast_radius` |
|
|
27
|
-
| Find all call sites of a symbol | `find_references` |
|
|
28
|
-
| Check who imports a file directly | `find_importers` |
|
|
29
|
-
| Find unused exports | `find_dead_code` |
|
|
30
|
-
| Check if similar code exists across repos | `find_similar` |
|
|
31
|
-
| Search all indexed repos at once | `search_cross_repo` |
|
|
32
|
-
| Trace a dbt column's lineage | `search_columns` |
|
|
33
|
-
| Understand symbol-level git history | `get_symbol_history` |
|
|
34
|
-
| Identify high-churn / high-risk files | `get_churn_metrics` |
|
|
35
|
-
| Get per-file quality scores (complexity, coupling) | `get_quality_metrics` |
|
|
36
|
-
| Find god classes, circular deps, dead code | `detect_antipatterns` |
|
|
37
|
-
| Generate an architecture overview doc | `get_architecture_doc` |
|
|
38
|
-
| Find all implementations of an interface / abstract class | `find_implementations` |
|
|
39
|
-
| Trace execution flow (callers / callees tree) | `get_call_hierarchy` |
|
|
40
|
-
| Understand class inheritance (ancestors / descendants) | `get_class_hierarchy` |
|
|
41
|
-
| Detect circular import dependencies | `find_cycles` |
|
|
42
|
-
| Get per-file coupling and instability scores | `get_coupling_map` |
|
|
43
|
-
| Generate a Mermaid / DOT diagram (import graph, call graph, class hierarchy) | `render_diagram` (or specialized variants) |
|
|
44
|
-
| Capture an architectural snapshot for before/after comparison | `get_architecture_snapshot` |
|
|
45
|
-
| Pre-flight check before renaming a symbol | `check_rename_safe` |
|
|
46
|
-
| Pre-flight check before deleting a symbol | `check_delete_safe` |
|
|
47
|
-
| Pre-flight check before moving a symbol to another file | `check_move_safe` |
|
|
48
|
-
| Get a sequenced, risk-annotated refactoring plan | `plan_refactoring` |
|
|
49
|
-
| 5-axis codebase health score (CI gate / dashboard) | `health_radar` |
|
|
50
|
-
| Compare health before and after a refactoring | `diff_health_radar` |
|
|
51
|
-
| Detailed debt report with per-file rankings | `get_debt_report` |
|
|
52
|
-
| Find every occurrence of an AST node type (try/catch, arrow fn, etc.) | `search_ast` |
|
|
53
|
-
| Find symbols matching a type signature pattern | `search_by_signature` |
|
|
54
|
-
| Find all symbols with a specific decorator | `search_by_decorator` |
|
|
55
|
-
| Find the most complex functions by threshold | `search_by_complexity` |
|
|
56
|
-
| Identify where an application starts (main, CLI, Lambda, server) | `get_entry_points` |
|
|
57
|
-
| Audit a module's exported public API surface | `get_public_api` |
|
|
58
|
-
| Find all TODO / FIXME / HACK comments | `get_todos` |
|
|
59
|
-
| Rank symbols by complexity score | `get_complexity_hotspots` |
|
|
60
|
-
| Understand type dependency relationships | `get_type_graph` |
|
|
61
|
-
| Find exported symbols with no test coverage | `find_untested_symbols` |
|
|
62
|
-
| Get a per-file test coverage map | `get_test_coverage_map` |
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## Rules
|
|
67
|
-
|
|
68
|
-
**1. Never read whole files to find code.** Use `search_symbols` + `get_symbol_source`. Reading files wastes tokens.
|
|
69
|
-
|
|
70
|
-
**2. `search_symbols` returns no source.** It returns signatures and summaries only. Call `get_symbol_source` only for symbols you will actually work with — not for every result.
|
|
71
|
-
|
|
72
|
-
**3. Trust summaries, but verify before modifying.** Summaries describe intent, not contract. Use the `summary` field to navigate; always read the source before making a change.
|
|
73
|
-
|
|
74
|
-
**4. Before modifying a symbol:** call `get_churn_metrics` first. If `churnScore > 6`, warn the user. Then call `get_blast_radius` for impact scope and `get_context_bundle` for dependencies.
|
|
75
|
-
|
|
76
|
-
**5. `search_text` is grep, not symbol search.** Use it only for literal strings, comments, and values that are not named symbols.
|
|
77
|
-
|
|
78
|
-
**6. Use `get_symbols` for batches.** When you need source for multiple symbols, one `get_symbols` call beats multiple `get_symbol_source` calls.
|
|
79
|
-
|
|
80
|
-
**7. camelCase = snake_case for queries.** `processOrder`, `process_order`, and `process order` return the same results. Use `kind:` to narrow (e.g. `kind: "function"`).
|
|
81
|
-
|
|
82
|
-
**8. Use `mode: "hybrid"` when unsure of the exact name.** Combines keyword precision with semantic recall.
|
|
83
|
-
|
|
84
|
-
**9. Check for duplicates before implementing new code.** Call `find_similar` (cross-repo) to discover existing implementations before writing something new.
|
|
85
|
-
|
|
86
|
-
**10. Use `get_architecture_doc` when onboarding.** Call it early on an unfamiliar codebase to build a mental model before diving into symbols.
|
|
87
|
-
|
|
88
|
-
**11. For dbt projects:** always run `dbt compile` before `index_folder`. Use `search_columns` for column lineage, `get_context_bundle` for model dependencies, and `search_symbols` with `kind: "route"` for API endpoints.
|
|
89
|
-
|
|
90
|
-
**12. Always run a pre-flight check before rename/delete/move.** Call `check_rename_safe`, `check_delete_safe`, or `check_move_safe` first. If `safe: false`, resolve the listed blockers before proceeding — never bypass string-literal conflicts.
|
|
91
|
-
|
|
92
|
-
**13. Before modifying an interface or base class:** call `find_implementations` to get every class that must be updated, and `get_class_hierarchy` to see the full descendant tree.
|
|
93
|
-
|
|
94
|
-
**14. Use `health_radar` for quick health assessment; `get_debt_report` for actionable detail.** `health_radar` is compact (A–F grade + 5 scores); `get_debt_report` has per-file rankings and recommendations.
|
|
95
|
-
|
|
96
|
-
**15. `search_ast` is for structural patterns, not symbol names.** Use it to find all try/catch blocks, all arrow functions, all JSX elements — things `search_symbols` cannot express. Node type names are case-sensitive tree-sitter names.
|
|
97
|
-
|
|
98
|
-
---
|
|
99
|
-
|
|
100
|
-
## Common patterns
|
|
101
|
-
|
|
102
|
-
**Explore an unfamiliar codebase**
|
|
103
|
-
```
|
|
104
|
-
list_repos → (index_folder if missing) → get_architecture_doc → get_quality_metrics → get_repo_outline → search_symbols → get_context_bundle
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
**Modify a function safely**
|
|
108
|
-
```
|
|
109
|
-
search_symbols → get_churn_metrics → get_symbol_history → get_blast_radius → get_context_bundle → get_symbol_source → [edit]
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
**Find where a symbol is used**
|
|
113
|
-
```
|
|
114
|
-
search_symbols → find_references → get_symbol_source for relevant call sites
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
**Before implementing new functionality**
|
|
118
|
-
```
|
|
119
|
-
find_similar (crossRepo: true) → search_cross_repo → [only build if nothing equivalent exists]
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
**Debug a recent regression**
|
|
123
|
-
```
|
|
124
|
-
get_churn_metrics → get_symbol_history for changed symbols → search_symbols → get_symbol_source
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
**Architecture / code health review**
|
|
128
|
-
```
|
|
129
|
-
get_quality_metrics → detect_antipatterns → get_architecture_doc (before) → [refactor] → detect_antipatterns (after)
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
**Rename / delete / move a symbol safely**
|
|
133
|
-
```
|
|
134
|
-
check_rename_safe / check_delete_safe / check_move_safe → [resolve blockers if safe:false] → [edit] → find_dead_code
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
**Modify an interface or base class**
|
|
138
|
-
```
|
|
139
|
-
find_implementations → get_class_hierarchy (descendants) → get_blast_radius → [edit] → find_implementations (verify missingMethods=[])
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
**Tech debt sprint**
|
|
143
|
-
```
|
|
144
|
-
health_radar → get_debt_report → get_complexity_hotspots → find_untested_symbols → find_cycles → get_architecture_snapshot (before) → [fix] → get_architecture_snapshot (after) → diff_health_radar
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
**Onboard to a new codebase**
|
|
148
|
-
```
|
|
149
|
-
get_entry_points → get_public_api → get_context_bundle (from entry point) → get_type_graph → get_todos → get_test_coverage_map
|
|
150
|
-
```
|