purecontext-mcp 1.1.7 → 1.2.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 +393 -0
- package/AGENT_INSTRUCTIONS_SHORT.md +53 -0
- package/AST-SEARCH.md +274 -0
- package/CHANGELOG.md +62 -0
- package/CODE-INTELLIGENCE.md +369 -0
- package/HEALTH-DASHBOARDS.md +241 -0
- package/README.md +7 -0
- package/REFACTORING-SAFELY.md +279 -0
- package/UNDERSTANDING-RELATIONSHIPS.md +240 -0
- package/USER-GUIDE.md +14 -0
- package/VISUALIZING-CODE.md +199 -0
- package/WORKFLOW-TECH-DEBT.md +286 -0
- package/dist/core/db/dep-store.d.ts +75 -0
- package/dist/core/db/dep-store.d.ts.map +1 -1
- package/dist/core/db/dep-store.js +277 -0
- package/dist/core/db/dep-store.js.map +1 -1
- package/dist/core/db/schema.d.ts.map +1 -1
- package/dist/core/db/schema.js +12 -0
- package/dist/core/db/schema.js.map +1 -1
- package/dist/core/index-manager.js +1 -1
- package/dist/core/index-manager.js.map +1 -1
- package/dist/core/token-tracker.d.ts +0 -9
- package/dist/core/token-tracker.d.ts.map +1 -1
- package/dist/core/token-tracker.js +0 -21
- package/dist/core/token-tracker.js.map +1 -1
- package/dist/core/types.d.ts +5 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/graph/diagram-renderer.d.ts +83 -0
- package/dist/graph/diagram-renderer.d.ts.map +1 -0
- package/dist/graph/diagram-renderer.js +294 -0
- package/dist/graph/diagram-renderer.js.map +1 -0
- package/dist/graph/graph-traversal.d.ts +92 -0
- package/dist/graph/graph-traversal.d.ts.map +1 -1
- package/dist/graph/graph-traversal.js +440 -2
- package/dist/graph/graph-traversal.js.map +1 -1
- package/dist/server/http-server.d.ts.map +1 -1
- package/dist/server/http-server.js +30 -1
- package/dist/server/http-server.js.map +1 -1
- package/dist/server/mcp-server.d.ts.map +1 -1
- package/dist/server/mcp-server.js +145 -0
- package/dist/server/mcp-server.js.map +1 -1
- package/dist/server/tools/_meta.d.ts +0 -2
- package/dist/server/tools/_meta.d.ts.map +1 -1
- package/dist/server/tools/_meta.js +1 -4
- package/dist/server/tools/_meta.js.map +1 -1
- package/dist/server/tools/check-delete-safe.d.ts +50 -0
- package/dist/server/tools/check-delete-safe.d.ts.map +1 -0
- package/dist/server/tools/check-delete-safe.js +308 -0
- package/dist/server/tools/check-delete-safe.js.map +1 -0
- package/dist/server/tools/check-move-safe.d.ts +44 -0
- package/dist/server/tools/check-move-safe.d.ts.map +1 -0
- package/dist/server/tools/check-move-safe.js +266 -0
- package/dist/server/tools/check-move-safe.js.map +1 -0
- package/dist/server/tools/check-rename-safe.d.ts +48 -0
- package/dist/server/tools/check-rename-safe.d.ts.map +1 -0
- package/dist/server/tools/check-rename-safe.js +218 -0
- package/dist/server/tools/check-rename-safe.js.map +1 -0
- package/dist/server/tools/diff-health-radar.d.ts +44 -0
- package/dist/server/tools/diff-health-radar.d.ts.map +1 -0
- package/dist/server/tools/diff-health-radar.js +192 -0
- package/dist/server/tools/diff-health-radar.js.map +1 -0
- package/dist/server/tools/find-cycles.d.ts +31 -0
- package/dist/server/tools/find-cycles.d.ts.map +1 -0
- package/dist/server/tools/find-cycles.js +85 -0
- package/dist/server/tools/find-cycles.js.map +1 -0
- package/dist/server/tools/find-implementations.d.ts +47 -0
- package/dist/server/tools/find-implementations.d.ts.map +1 -0
- package/dist/server/tools/find-implementations.js +167 -0
- package/dist/server/tools/find-implementations.js.map +1 -0
- package/dist/server/tools/find-untested-symbols.d.ts +52 -0
- package/dist/server/tools/find-untested-symbols.d.ts.map +1 -0
- package/dist/server/tools/find-untested-symbols.js +308 -0
- package/dist/server/tools/find-untested-symbols.js.map +1 -0
- package/dist/server/tools/get-architecture-snapshot.d.ts +43 -0
- package/dist/server/tools/get-architecture-snapshot.d.ts.map +1 -0
- package/dist/server/tools/get-architecture-snapshot.js +292 -0
- package/dist/server/tools/get-architecture-snapshot.js.map +1 -0
- package/dist/server/tools/get-call-hierarchy.d.ts +43 -0
- package/dist/server/tools/get-call-hierarchy.d.ts.map +1 -0
- package/dist/server/tools/get-call-hierarchy.js +119 -0
- package/dist/server/tools/get-call-hierarchy.js.map +1 -0
- package/dist/server/tools/get-class-hierarchy.d.ts +36 -0
- package/dist/server/tools/get-class-hierarchy.d.ts.map +1 -0
- package/dist/server/tools/get-class-hierarchy.js +125 -0
- package/dist/server/tools/get-class-hierarchy.js.map +1 -0
- package/dist/server/tools/get-complexity-hotspots.d.ts +50 -0
- package/dist/server/tools/get-complexity-hotspots.d.ts.map +1 -0
- package/dist/server/tools/get-complexity-hotspots.js +282 -0
- package/dist/server/tools/get-complexity-hotspots.js.map +1 -0
- package/dist/server/tools/get-coupling-map.d.ts +39 -0
- package/dist/server/tools/get-coupling-map.d.ts.map +1 -0
- package/dist/server/tools/get-coupling-map.js +107 -0
- package/dist/server/tools/get-coupling-map.js.map +1 -0
- package/dist/server/tools/get-debt-report.d.ts +44 -0
- package/dist/server/tools/get-debt-report.d.ts.map +1 -0
- package/dist/server/tools/get-debt-report.js +606 -0
- package/dist/server/tools/get-debt-report.js.map +1 -0
- package/dist/server/tools/get-entry-points.d.ts +79 -0
- package/dist/server/tools/get-entry-points.d.ts.map +1 -0
- package/dist/server/tools/get-entry-points.js +362 -0
- package/dist/server/tools/get-entry-points.js.map +1 -0
- package/dist/server/tools/get-public-api.d.ts +53 -0
- package/dist/server/tools/get-public-api.d.ts.map +1 -0
- package/dist/server/tools/get-public-api.js +218 -0
- package/dist/server/tools/get-public-api.js.map +1 -0
- package/dist/server/tools/get-savings-stats.d.ts.map +1 -1
- package/dist/server/tools/get-savings-stats.js +1 -3
- package/dist/server/tools/get-savings-stats.js.map +1 -1
- package/dist/server/tools/get-test-coverage-map.d.ts +66 -0
- package/dist/server/tools/get-test-coverage-map.d.ts.map +1 -0
- package/dist/server/tools/get-test-coverage-map.js +588 -0
- package/dist/server/tools/get-test-coverage-map.js.map +1 -0
- package/dist/server/tools/get-todos.d.ts +51 -0
- package/dist/server/tools/get-todos.d.ts.map +1 -0
- package/dist/server/tools/get-todos.js +180 -0
- package/dist/server/tools/get-todos.js.map +1 -0
- package/dist/server/tools/get-type-graph.d.ts +73 -0
- package/dist/server/tools/get-type-graph.d.ts.map +1 -0
- package/dist/server/tools/get-type-graph.js +437 -0
- package/dist/server/tools/get-type-graph.js.map +1 -0
- package/dist/server/tools/health-radar.d.ts +50 -0
- package/dist/server/tools/health-radar.d.ts.map +1 -0
- package/dist/server/tools/health-radar.js +426 -0
- package/dist/server/tools/health-radar.js.map +1 -0
- package/dist/server/tools/plan-refactoring.d.ts +74 -0
- package/dist/server/tools/plan-refactoring.d.ts.map +1 -0
- package/dist/server/tools/plan-refactoring.js +644 -0
- package/dist/server/tools/plan-refactoring.js.map +1 -0
- package/dist/server/tools/render-call-graph.d.ts +40 -0
- package/dist/server/tools/render-call-graph.d.ts.map +1 -0
- package/dist/server/tools/render-call-graph.js +215 -0
- package/dist/server/tools/render-call-graph.js.map +1 -0
- package/dist/server/tools/render-class-hierarchy.d.ts +42 -0
- package/dist/server/tools/render-class-hierarchy.d.ts.map +1 -0
- package/dist/server/tools/render-class-hierarchy.js +265 -0
- package/dist/server/tools/render-class-hierarchy.js.map +1 -0
- package/dist/server/tools/render-dep-matrix.d.ts +38 -0
- package/dist/server/tools/render-dep-matrix.d.ts.map +1 -0
- package/dist/server/tools/render-dep-matrix.js +186 -0
- package/dist/server/tools/render-dep-matrix.js.map +1 -0
- package/dist/server/tools/render-diagram.d.ts +47 -0
- package/dist/server/tools/render-diagram.d.ts.map +1 -0
- package/dist/server/tools/render-diagram.js +266 -0
- package/dist/server/tools/render-diagram.js.map +1 -0
- package/dist/server/tools/render-import-graph.d.ts +41 -0
- package/dist/server/tools/render-import-graph.d.ts.map +1 -0
- package/dist/server/tools/render-import-graph.js +158 -0
- package/dist/server/tools/render-import-graph.js.map +1 -0
- package/dist/server/tools/search-ast.d.ts +55 -0
- package/dist/server/tools/search-ast.d.ts.map +1 -0
- package/dist/server/tools/search-ast.js +279 -0
- package/dist/server/tools/search-ast.js.map +1 -0
- package/dist/server/tools/search-by-complexity.d.ts +92 -0
- package/dist/server/tools/search-by-complexity.d.ts.map +1 -0
- package/dist/server/tools/search-by-complexity.js +268 -0
- package/dist/server/tools/search-by-complexity.js.map +1 -0
- package/dist/server/tools/search-by-decorator.d.ts +48 -0
- package/dist/server/tools/search-by-decorator.d.ts.map +1 -0
- package/dist/server/tools/search-by-decorator.js +518 -0
- package/dist/server/tools/search-by-decorator.js.map +1 -0
- package/dist/server/tools/search-by-signature.d.ts +56 -0
- package/dist/server/tools/search-by-signature.d.ts.map +1 -0
- package/dist/server/tools/search-by-signature.js +200 -0
- package/dist/server/tools/search-by-signature.js.map +1 -0
- package/dist/ui/assets/BlastRadius-QdgESOL8.js +1 -0
- package/dist/ui/assets/{DependencyGraph-CDtBHM0U.js → DependencyGraph-BSMhzwWV.js} +6 -6
- package/dist/ui/assets/{NotFound-Cdt6X8pl.js → NotFound-CipFP_s1.js} +1 -1
- package/dist/ui/assets/RepoDetail-Dfp5z5Kq.js +1 -0
- package/dist/ui/assets/{RepoList-B9LaZvob.js → RepoList-BKtST3hB.js} +1 -1
- package/dist/ui/assets/{Search-CLqv2KGV.js → Search-DzhGDViy.js} +1 -1
- package/dist/ui/assets/{SymbolView-BlbDR1DU.js → SymbolView-ryVEwAHG.js} +1 -1
- package/dist/ui/assets/{index-DADf5y_L.css → index-Ny8gn9F0.css} +1 -1
- package/dist/ui/assets/{index-i3Q1XbEh.js → index-nX2chMqi.js} +6 -6
- package/dist/ui/assets/{useSearch-mbMk6-M1.js → useSearch-BnBCRKui.js} +1 -1
- package/dist/ui/index.html +2 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/dev/jcodemunch-gap-analysis.md +198 -0
- package/package.json +9 -1
- package/user-manual.md +2466 -0
- package/dist/ui/assets/BlastRadius-BDZWhEk-.js +0 -1
- package/dist/ui/assets/RepoDetail-M6WaYbZ3.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
var O=Object.defineProperty;var _=(e,t,a)=>t in e?O(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var R=(e,t,a)=>_(e,typeof t!="symbol"?t+"":t,a);import{r as s,a as L,A as j}from"./index-
|
|
1
|
+
var O=Object.defineProperty;var _=(e,t,a)=>t in e?O(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var R=(e,t,a)=>_(e,typeof t!="symbol"?t+"":t,a);import{r as s,a as L,A as j}from"./index-nX2chMqi.js";function q(e,t,a,c){return JSON.stringify({repoId:e,repoIds:t?[...t].sort():void 0,query:a,kinds:[...c.kinds].sort(),filePath:c.filePath})}class B{constructor(t){R(this,"map",new Map);this.maxSize=t}get(t){const a=this.map.get(t);return a!==void 0&&(this.map.delete(t),this.map.set(t,a)),a}set(t,a){if(this.map.has(t)&&this.map.delete(t),this.map.set(t,a),this.map.size>this.maxSize){const c=this.map.keys().next().value;c!==void 0&&this.map.delete(c)}}}const T=new B(50);function H({repoId:e,repoIds:t,debounceMs:a=300,cacheSize:c=50}){const[v,P]=s.useState(""),[h,x]=s.useState({kinds:[],filePath:""}),[A,m]=s.useState([]),[F,o]=s.useState(!1),[K,f]=s.useState(null),[y,C]=s.useState(null),d=s.useRef(null),u=s.useRef(null),g=s.useRef(null);s.useEffect(()=>{!e||!h.coverageStatus||t&&t.length>1||d.current!==e&&(d.current=e,L.getRepoCoverage(e).then(n=>{const r=new Map;for(const i of n.mappings)r.set(i.symbolId,i.coverageStatus);C(r)}).catch(()=>{C(null)}))},[e,h.coverageStatus]),s.useEffect(()=>{d.current=null,C(null)},[e,t]);const z=s.useCallback((n,r,i)=>{var w;const S=t&&t.length>1;if(!S&&!e){m([]),o(!1),f(null);return}if(n.trim().length===0){m([]),o(!1),f(null);return}const b=q(e,t,n,r),k=T.get(b);if(k){const l=r.coverageStatus&&i&&!S?k.filter(E=>i.get(E.id)===r.coverageStatus):k;m(l),o(!1),f(null);return}(w=u.current)==null||w.call(u);let p=!1;u.current=()=>{p=!0},o(!0),f(null);const M={query:n,...r.kinds.length===1?{kind:r.kinds[0]}:{},...r.filePath?{filePath:r.filePath}:{},limit:50,...S?{repoIds:t}:{}};L.searchSymbols(S?null:e,M).then(l=>{if(p)return;T.set(b,l.results);const E=r.coverageStatus&&i&&!S?l.results.filter(N=>i.get(N.id)===r.coverageStatus):l.results;m(E),o(!1)}).catch(l=>{p||(f(l instanceof j?l.message:String(l)),o(!1))})},[e,t]);s.useEffect(()=>(g.current!==null&&clearTimeout(g.current),g.current=setTimeout(()=>{z(v,h,y)},a),()=>{g.current!==null&&clearTimeout(g.current)}),[v,h,y,a,z]),s.useEffect(()=>()=>{var n;(n=u.current)==null||n.call(u)},[]);const Q=s.useCallback(n=>{P(n)},[]),J=s.useCallback(()=>{var n;P(""),x({kinds:[],filePath:""}),m([]),f(null),(n=u.current)==null||n.call(u)},[]);return{query:v,setQuery:Q,filters:h,setFilters:x,results:A,loading:F,error:K,clearSearch:J}}export{H as u};
|
package/dist/ui/index.html
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>PureContext</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-nX2chMqi.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Ny8gn9F0.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div id="root"></div>
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "1.
|
|
1
|
+
export declare const VERSION = "1.2.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = '1.
|
|
1
|
+
export const VERSION = '1.2.0';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# jCodeMunch Gap Analysis
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-05-11
|
|
4
|
+
**Source:** Static analysis of `reference/jcodemunch-mcp/` vs `src/server/tools/`
|
|
5
|
+
**Purpose:** Identify PureContext feature gaps relative to jCodeMunch v1.4.1 to inform upcoming phases.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Tool Count Summary
|
|
10
|
+
|
|
11
|
+
| Server | Tool Count |
|
|
12
|
+
|--------|-----------|
|
|
13
|
+
| PureContext | 35 |
|
|
14
|
+
| jCodeMunch | 82 |
|
|
15
|
+
| **Gap** | **47 tools** |
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Shared Tools (23)
|
|
20
|
+
|
|
21
|
+
Both servers expose equivalent versions of these core navigation tools:
|
|
22
|
+
|
|
23
|
+
`index_folder`, `list_repos`, `resolve_repo`, `search_symbols`, `search_semantic`, `search_text`,
|
|
24
|
+
`get_symbol_source`, `get_file_outline`, `get_repo_outline`, `get_file_tree`, `get_context_bundle`,
|
|
25
|
+
`get_blast_radius`, `find_importers`, `find_dead_code`, `find_references`, `get_file_content`,
|
|
26
|
+
`get_symbols`, `invalidate_cache`, `analyze_diff`, `get_symbol_history`, `search_columns`,
|
|
27
|
+
`get_layer_violations`, `generate_docs`
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## PureContext Advantages (12 tools jCodeMunch lacks)
|
|
32
|
+
|
|
33
|
+
| Tool | Description |
|
|
34
|
+
|------|-------------|
|
|
35
|
+
| `export_index` | Serialize index to portable archive |
|
|
36
|
+
| `import_index` | Import a previously exported index |
|
|
37
|
+
| `fetch_public_index` | Download a pre-built index from the public registry |
|
|
38
|
+
| `get_quality_metrics` | Per-file/symbol complexity, coupling, cohesion, doc coverage |
|
|
39
|
+
| `get_churn_metrics` | File and symbol churn scores from git history |
|
|
40
|
+
| `detect_antipatterns` | Detect god classes, circular deps, dead code structurally |
|
|
41
|
+
| `get_symbols` | Batch fetch multiple symbols by ID in one call |
|
|
42
|
+
| `find_cross_repo_usages` | Find usages of a symbol across indexed repos |
|
|
43
|
+
| `search_similar` | HNSW vector similarity search across repos |
|
|
44
|
+
| `get_savings_stats` | Cumulative token savings tracker |
|
|
45
|
+
| `get_task_context` | Assemble focused context bundle for a task description |
|
|
46
|
+
| `search_cross_repo` | Search symbols across multiple repos simultaneously |
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## jCodeMunch Advantages (59 tools PureContext lacks)
|
|
51
|
+
|
|
52
|
+
### Category 1 — Runtime Trace Integration (6 tools)
|
|
53
|
+
|
|
54
|
+
**Impact: Highest.** These tools are architecturally distinct — they ingest production runtime telemetry and overlay it on the static symbol graph. PureContext is purely static; this category cannot be bridged by static analysis alone.
|
|
55
|
+
|
|
56
|
+
| Tool | Description |
|
|
57
|
+
|------|-------------|
|
|
58
|
+
| `import_runtime_signal` | Ingest a runtime trace (coverage report, profiler output) into the index |
|
|
59
|
+
| `get_runtime_coverage` | Show which symbols were hit in production vs. never called |
|
|
60
|
+
| `find_hot_paths` | Identify the most-executed code paths from runtime data |
|
|
61
|
+
| `find_unused_paths` | Find code that is statically reachable but never called at runtime |
|
|
62
|
+
| `get_redaction_log` | Audit log of what runtime data was redacted before ingestion |
|
|
63
|
+
| `annotate_with_runtime` | Attach runtime hit counts to symbol records |
|
|
64
|
+
|
|
65
|
+
### Category 2 — Refactoring Guidance (8 tools)
|
|
66
|
+
|
|
67
|
+
**Impact: High.** PureContext supports discovery; jCodeMunch supports the full edit lifecycle including pre-flight safety checks and ready-to-apply plans.
|
|
68
|
+
|
|
69
|
+
| Tool | Description |
|
|
70
|
+
|------|-------------|
|
|
71
|
+
| `plan_refactoring` | Generate a sequenced, edit-ready refactoring plan for a symbol or file |
|
|
72
|
+
| `check_rename_safe` | Pre-flight check: is renaming this symbol safe? Lists all affected sites |
|
|
73
|
+
| `check_delete_safe` | Pre-flight check: is deleting this symbol safe? Checks for live references |
|
|
74
|
+
| `check_move_safe` | Pre-flight check: is moving this file/symbol safe? Resolves import impact |
|
|
75
|
+
| `apply_rename` | Execute a rename across the codebase (writes files) |
|
|
76
|
+
| `preview_refactoring` | Dry-run a refactoring plan and return a unified diff |
|
|
77
|
+
| `estimate_refactoring_effort` | Score the complexity and risk of a proposed refactoring |
|
|
78
|
+
| `get_refactoring_history` | List past refactoring operations applied via jCodeMunch |
|
|
79
|
+
|
|
80
|
+
### Category 3 — Architectural Visualization (8 tools)
|
|
81
|
+
|
|
82
|
+
**Impact: High.** Visual output that the existing dep graph could power but PureContext doesn't expose.
|
|
83
|
+
|
|
84
|
+
| Tool | Description |
|
|
85
|
+
|------|-------------|
|
|
86
|
+
| `render_diagram` | Generate Mermaid diagram from dep graph (module, call, class hierarchy) |
|
|
87
|
+
| `get_tectonic_map` | High-level cluster map of the codebase's architectural zones |
|
|
88
|
+
| `get_signal_chains` | Trace event/signal propagation paths through the system |
|
|
89
|
+
| `render_call_graph` | Render a call graph rooted at a symbol as Mermaid/DOT |
|
|
90
|
+
| `render_import_graph` | Render file-level import graph for a directory |
|
|
91
|
+
| `render_class_hierarchy` | UML-style class hierarchy diagram |
|
|
92
|
+
| `render_dep_matrix` | Dependency matrix heatmap (coupling between modules) |
|
|
93
|
+
| `get_architecture_snapshot` | Freeze current architecture state for before/after comparison |
|
|
94
|
+
|
|
95
|
+
### Category 4 — Advanced Relationship Analysis (8 tools)
|
|
96
|
+
|
|
97
|
+
**Impact: High.** Deeper graph traversals than PureContext currently exposes.
|
|
98
|
+
|
|
99
|
+
| Tool | Description |
|
|
100
|
+
|------|-------------|
|
|
101
|
+
| `get_dependency_graph` | Full dep graph for a file or module (not just blast radius) |
|
|
102
|
+
| `get_call_hierarchy` | Callers and callees of a function, N levels deep |
|
|
103
|
+
| `get_class_hierarchy` | Inheritance chain for a class (up and down) |
|
|
104
|
+
| `find_implementations` | Find all concrete implementations of an interface or abstract class |
|
|
105
|
+
| `find_overrides` | Find all method overrides for a given base method |
|
|
106
|
+
| `get_coupling_map` | Per-file coupling scores with named dependencies |
|
|
107
|
+
| `find_cycles` | Detect all import cycles in the graph |
|
|
108
|
+
| `get_interface_contracts` | Extract all methods/properties required by an interface |
|
|
109
|
+
|
|
110
|
+
### Category 5 — Health Dashboards (3 tools)
|
|
111
|
+
|
|
112
|
+
**Impact: Medium.** Aggregates PureContext's individual metrics into at-a-glance views.
|
|
113
|
+
|
|
114
|
+
| Tool | Description |
|
|
115
|
+
|------|-------------|
|
|
116
|
+
| `health_radar` | 6-axis composite health score for the repo (complexity, coupling, coverage, churn, debt, docs) |
|
|
117
|
+
| `diff_health_radar` | Compare health radar between two commits or branches |
|
|
118
|
+
| `get_debt_report` | Prioritized technical debt report with effort estimates |
|
|
119
|
+
|
|
120
|
+
### Category 6 — Session Awareness (5 tools)
|
|
121
|
+
|
|
122
|
+
**Impact: Medium.** jCodeMunch maintains stateful sessions across turns; PureContext is stateless.
|
|
123
|
+
|
|
124
|
+
| Tool | Description |
|
|
125
|
+
|------|-------------|
|
|
126
|
+
| `start_session` | Begin a stateful editing session; tracks edits and context across turns |
|
|
127
|
+
| `end_session` | Finalize a session and produce a summary of changes made |
|
|
128
|
+
| `get_session_state` | Return current session context: symbols touched, edits pending |
|
|
129
|
+
| `record_edit` | Log an edit to session state for rollback/audit |
|
|
130
|
+
| `get_confidence_score` | Return jCodeMunch's confidence level for a proposed change |
|
|
131
|
+
|
|
132
|
+
### Category 7 — AST-Level Search (4 tools)
|
|
133
|
+
|
|
134
|
+
**Impact: Medium.** Structural code search beyond symbol name matching.
|
|
135
|
+
|
|
136
|
+
| Tool | Description |
|
|
137
|
+
|------|-------------|
|
|
138
|
+
| `search_ast` | Structural AST pattern search (find all arrow functions returning JSX, etc.) |
|
|
139
|
+
| `search_by_signature` | Find symbols matching a type signature pattern |
|
|
140
|
+
| `search_by_decorator` | Find all symbols annotated with a given decorator |
|
|
141
|
+
| `search_by_complexity` | Find symbols above a complexity threshold |
|
|
142
|
+
|
|
143
|
+
### Category 8 — Code Intelligence Helpers (8 tools)
|
|
144
|
+
|
|
145
|
+
**Impact: Medium.** Utility tools that improve agent decision quality.
|
|
146
|
+
|
|
147
|
+
| Tool | Description |
|
|
148
|
+
|------|-------------|
|
|
149
|
+
| `get_entry_points` | Find all public entry points of the codebase (main, exports, routes) |
|
|
150
|
+
| `get_public_api` | Extract the public API surface of a module |
|
|
151
|
+
| `get_test_coverage_map` | Map symbols to their test files |
|
|
152
|
+
| `find_untested_symbols` | Find exported symbols with no corresponding test |
|
|
153
|
+
| `get_dependency_versions` | Report dependency versions and known vulnerabilities |
|
|
154
|
+
| `get_todos` | Extract all TODO/FIXME/HACK comments with locations |
|
|
155
|
+
| `get_type_graph` | Type dependency graph (which types reference which) |
|
|
156
|
+
| `get_complexity_hotspots` | Top-N most complex symbols repo-wide |
|
|
157
|
+
|
|
158
|
+
### Category 9 — Multi-language & Ecosystem Extras (9 tools)
|
|
159
|
+
|
|
160
|
+
**Impact: Lower (mostly niche).** Additional ecosystem integrations.
|
|
161
|
+
|
|
162
|
+
| Tool | Description |
|
|
163
|
+
|------|-------------|
|
|
164
|
+
| `index_github_repo` | Index a remote GitHub repo without cloning locally |
|
|
165
|
+
| `get_npm_dependents` | Find npm packages that depend on this package |
|
|
166
|
+
| `search_rust_traits` | Find Rust trait implementations |
|
|
167
|
+
| `search_python_decorators` | Find Python decorated functions by decorator name |
|
|
168
|
+
| `get_go_interfaces` | Extract Go interface definitions and implementors |
|
|
169
|
+
| `search_sql_tables` | Find SQL table definitions across .sql files |
|
|
170
|
+
| `get_proto_services` | Extract gRPC service definitions from .proto files |
|
|
171
|
+
| `get_terraform_resources` | List all Terraform resource definitions |
|
|
172
|
+
| `get_openapi_routes` | List all OpenAPI-defined routes with methods and schemas |
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Priority Ranking for PureContext Roadmap
|
|
177
|
+
|
|
178
|
+
Ranked by value vs. implementation effort:
|
|
179
|
+
|
|
180
|
+
| Priority | Category | Tools | Rationale |
|
|
181
|
+
|----------|----------|-------|-----------|
|
|
182
|
+
| P1 | Advanced Relationship Analysis | `find_implementations`, `get_call_hierarchy`, `get_class_hierarchy`, `find_cycles` | High value, data already in dep graph |
|
|
183
|
+
| P1 | Architectural Visualization | `render_diagram`, `render_call_graph` | Data exists; just needs Mermaid renderer |
|
|
184
|
+
| P2 | Refactoring Guidance | `check_rename_safe`, `check_delete_safe`, `plan_refactoring` | Safety checks are high-value, low risk |
|
|
185
|
+
| P2 | Health Dashboards | `health_radar`, `diff_health_radar` | Wraps existing metrics — mostly aggregation |
|
|
186
|
+
| P2 | AST-Level Search | `search_ast`, `search_by_decorator` | Needs tree-sitter query DSL; medium effort |
|
|
187
|
+
| P3 | Code Intelligence Helpers | `get_entry_points`, `get_public_api`, `find_untested_symbols`, `get_todos` | Useful utilities; straightforward to implement |
|
|
188
|
+
| P3 | Session Awareness | `start_session`, `get_session_state` | Requires stateful layer; architectural change |
|
|
189
|
+
| P4 | Runtime Trace Integration | All 6 tools | Major architectural addition; high value but complex |
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Notes
|
|
194
|
+
|
|
195
|
+
- jCodeMunch tool list extracted from `reference/jcodemunch-mcp/src/jcodemunch_mcp/server.py` lines 47–99
|
|
196
|
+
- PureContext tool list extracted from `src/server/mcp-server.ts` lines 141–314
|
|
197
|
+
- Some jCodeMunch tool names inferred from source; verify against their latest changelog before committing to parity work
|
|
198
|
+
- Runtime trace tools require a telemetry ingestion pipeline that is out of scope for a pure static-analysis server; treat as a separate product decision
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "purecontext-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Token-efficient source code navigation MCP server for AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -35,21 +35,29 @@
|
|
|
35
35
|
"AGENT_INSTRUCTIONS.md",
|
|
36
36
|
"AGENT_INSTRUCTIONS_SHORT.md",
|
|
37
37
|
"AI-SUMMARIES.md",
|
|
38
|
+
"AST-SEARCH.md",
|
|
38
39
|
"CHANGELOG.md",
|
|
39
40
|
"CODE-HEALTH.md",
|
|
40
41
|
"CODE-HISTORY.md",
|
|
42
|
+
"CODE-INTELLIGENCE.md",
|
|
41
43
|
"FINDING-CODE.md",
|
|
42
44
|
"FULL-INSTALLATAION-GUIDE.md",
|
|
45
|
+
"HEALTH-DASHBOARDS.md",
|
|
43
46
|
"LICENSE",
|
|
44
47
|
"NAVIGATING-NEW-CODE.md",
|
|
48
|
+
"REFACTORING-SAFELY.md",
|
|
45
49
|
"SAFE-CHANGES.md",
|
|
46
50
|
"TEAM-SETUP.md",
|
|
51
|
+
"UNDERSTANDING-RELATIONSHIPS.md",
|
|
47
52
|
"USER-GUIDE.md",
|
|
53
|
+
"user-manual.md",
|
|
54
|
+
"VISUALIZING-CODE.md",
|
|
48
55
|
"WEB-UI.md",
|
|
49
56
|
"WHY-PURECONTEXT.md",
|
|
50
57
|
"WORKFLOW-ONBOARDING.md",
|
|
51
58
|
"WORKFLOW-PR-REVIEW.md",
|
|
52
59
|
"WORKFLOW-REFACTORING.md",
|
|
60
|
+
"WORKFLOW-TECH-DEBT.md",
|
|
53
61
|
"docs/"
|
|
54
62
|
],
|
|
55
63
|
"main": "./dist/index.js",
|