purecontext-mcp 1.1.8 → 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/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/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/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-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-B60SMPbX.js → DependencyGraph-BSMhzwWV.js} +1 -1
- package/dist/ui/assets/{NotFound-Bsg8Wppk.js → NotFound-CipFP_s1.js} +1 -1
- package/dist/ui/assets/{RepoDetail-Cie0D4_s.js → RepoDetail-Dfp5z5Kq.js} +1 -1
- package/dist/ui/assets/{RepoList-CldNt89M.js → RepoList-BKtST3hB.js} +1 -1
- package/dist/ui/assets/{Search-CgvpHMOi.js → Search-DzhGDViy.js} +1 -1
- package/dist/ui/assets/{SymbolView-B9h0LZTz.js → SymbolView-ryVEwAHG.js} +1 -1
- package/dist/ui/assets/{index-DADf5y_L.css → index-Ny8gn9F0.css} +1 -1
- package/dist/ui/assets/{index-eK0wMkUR.js → index-nX2chMqi.js} +2 -2
- package/dist/ui/assets/{useSearch-KAl3Qyi2.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-RP7vJEyQ.js +0 -1
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* search-by-complexity.ts
|
|
3
|
+
*
|
|
4
|
+
* MCP tool: search_by_complexity
|
|
5
|
+
*
|
|
6
|
+
* Find all symbols whose complexity metrics match a set of min/max filters.
|
|
7
|
+
* Covers six dimensions stored at index time:
|
|
8
|
+
* cyclomatic_complexity, cognitive_complexity, line_count,
|
|
9
|
+
* nesting_depth, param_count, return_count
|
|
10
|
+
*
|
|
11
|
+
* All filters are optional and combined with AND. Omitting a filter means
|
|
12
|
+
* "no constraint on that dimension". The tool returns only symbols that have
|
|
13
|
+
* metrics (logic-carrying kinds: function, method, class, component, etc.).
|
|
14
|
+
*
|
|
15
|
+
* Designed for targeted queries like:
|
|
16
|
+
* "show me every function with ≥8 cyclomatic complexity"
|
|
17
|
+
* "find all methods with exactly 0–2 parameters"
|
|
18
|
+
* "list functions that are between 20 and 50 lines"
|
|
19
|
+
*
|
|
20
|
+
* Use get_quality_metrics when you want a ranked worst-offenders list with a
|
|
21
|
+
* composite score. Use search_by_complexity when you have a specific threshold
|
|
22
|
+
* or range in mind for one or more individual dimensions.
|
|
23
|
+
*/
|
|
24
|
+
import { z } from 'zod';
|
|
25
|
+
import { openDatabase } from '../../core/db/schema.js';
|
|
26
|
+
import { buildMeta } from './_meta.js';
|
|
27
|
+
export const name = 'search_by_complexity';
|
|
28
|
+
export const description = 'Find symbols matching specific complexity criteria. ' +
|
|
29
|
+
'Filter by any combination of cyclomatic complexity, cognitive complexity, ' +
|
|
30
|
+
'line count, nesting depth, parameter count, and return count — each with ' +
|
|
31
|
+
'optional min and/or max bounds. Only symbols with computed metrics are returned ' +
|
|
32
|
+
'(functions, methods, classes, components, etc.).' +
|
|
33
|
+
'\n\nExample use cases:' +
|
|
34
|
+
'\n minCyclomaticComplexity: 8 — dangerously complex functions' +
|
|
35
|
+
'\n minParamCount: 5 — functions with too many arguments' +
|
|
36
|
+
'\n minLineCount: 100 — long functions to split' +
|
|
37
|
+
'\n minNestingDepth: 4 — deeply nested, hard-to-read code' +
|
|
38
|
+
'\n maxCyclomaticComplexity: 2, maxLineCount: 15 — simple utility functions' +
|
|
39
|
+
'\n minReturnCount: 4 — functions with many exit points';
|
|
40
|
+
export const inputSchema = {
|
|
41
|
+
repoId: z.string().describe('Repository ID returned by index_folder or list_repos'),
|
|
42
|
+
// Cyclomatic complexity bounds
|
|
43
|
+
minCyclomaticComplexity: z
|
|
44
|
+
.number().int().min(1).optional()
|
|
45
|
+
.describe('Only return symbols with cyclomatic complexity ≥ this value'),
|
|
46
|
+
maxCyclomaticComplexity: z
|
|
47
|
+
.number().int().min(1).optional()
|
|
48
|
+
.describe('Only return symbols with cyclomatic complexity ≤ this value'),
|
|
49
|
+
// Cognitive complexity bounds
|
|
50
|
+
minCognitiveComplexity: z
|
|
51
|
+
.number().int().min(1).optional()
|
|
52
|
+
.describe('Only return symbols with cognitive complexity ≥ this value'),
|
|
53
|
+
maxCognitiveComplexity: z
|
|
54
|
+
.number().int().min(1).optional()
|
|
55
|
+
.describe('Only return symbols with cognitive complexity ≤ this value'),
|
|
56
|
+
// Line count bounds
|
|
57
|
+
minLineCount: z
|
|
58
|
+
.number().int().min(1).optional()
|
|
59
|
+
.describe('Only return symbols with line count ≥ this value'),
|
|
60
|
+
maxLineCount: z
|
|
61
|
+
.number().int().min(1).optional()
|
|
62
|
+
.describe('Only return symbols with line count ≤ this value'),
|
|
63
|
+
// Nesting depth bounds
|
|
64
|
+
minNestingDepth: z
|
|
65
|
+
.number().int().min(1).optional()
|
|
66
|
+
.describe('Only return symbols with max nesting depth ≥ this value'),
|
|
67
|
+
maxNestingDepth: z
|
|
68
|
+
.number().int().min(1).optional()
|
|
69
|
+
.describe('Only return symbols with max nesting depth ≤ this value'),
|
|
70
|
+
// Param count bounds
|
|
71
|
+
minParamCount: z
|
|
72
|
+
.number().int().min(0).optional()
|
|
73
|
+
.describe('Only return symbols with parameter count ≥ this value'),
|
|
74
|
+
maxParamCount: z
|
|
75
|
+
.number().int().min(0).optional()
|
|
76
|
+
.describe('Only return symbols with parameter count ≤ this value'),
|
|
77
|
+
// Return count bounds
|
|
78
|
+
minReturnCount: z
|
|
79
|
+
.number().int().min(0).optional()
|
|
80
|
+
.describe('Only return symbols with return statement count ≥ this value'),
|
|
81
|
+
maxReturnCount: z
|
|
82
|
+
.number().int().min(0).optional()
|
|
83
|
+
.describe('Only return symbols with return statement count ≤ this value'),
|
|
84
|
+
// Sort controls
|
|
85
|
+
sortBy: z
|
|
86
|
+
.enum(['complexity', 'cognitive', 'size', 'nesting', 'params', 'returns'])
|
|
87
|
+
.optional()
|
|
88
|
+
.describe('Sort dimension: "complexity" (cyclomatic, default), "cognitive", ' +
|
|
89
|
+
'"size" (line count), "nesting", "params", "returns"'),
|
|
90
|
+
sortOrder: z
|
|
91
|
+
.enum(['asc', 'desc'])
|
|
92
|
+
.optional()
|
|
93
|
+
.describe('Sort direction: "desc" (default, worst first) or "asc" (best first)'),
|
|
94
|
+
// Filters
|
|
95
|
+
kind: z
|
|
96
|
+
.enum([
|
|
97
|
+
'function', 'class', 'method', 'const', 'type', 'interface', 'enum',
|
|
98
|
+
'component', 'composable', 'hook', 'route', 'decorator', 'middleware',
|
|
99
|
+
])
|
|
100
|
+
.optional()
|
|
101
|
+
.describe('Filter results to a specific symbol kind'),
|
|
102
|
+
filePath: z
|
|
103
|
+
.string()
|
|
104
|
+
.optional()
|
|
105
|
+
.describe('Restrict search to a specific file path or directory prefix'),
|
|
106
|
+
limit: z
|
|
107
|
+
.number().int().positive().optional()
|
|
108
|
+
.describe('Maximum number of results to return (default 50)'),
|
|
109
|
+
};
|
|
110
|
+
// ─── Sort column map ──────────────────────────────────────────────────────────
|
|
111
|
+
const SORT_COL = {
|
|
112
|
+
complexity: 'cyclomatic_complexity',
|
|
113
|
+
cognitive: 'cognitive_complexity',
|
|
114
|
+
size: 'line_count',
|
|
115
|
+
nesting: 'nesting_depth',
|
|
116
|
+
params: 'param_count',
|
|
117
|
+
returns: 'return_count',
|
|
118
|
+
};
|
|
119
|
+
// ─── Handler ──────────────────────────────────────────────────────────────────
|
|
120
|
+
export async function handler(args) {
|
|
121
|
+
const t0 = Date.now();
|
|
122
|
+
const { repoId, sortBy = 'complexity', sortOrder = 'desc', limit = 50, } = args;
|
|
123
|
+
const db = openDatabase(repoId);
|
|
124
|
+
try {
|
|
125
|
+
// ── Build query ────────────────────────────────────────────────────────────
|
|
126
|
+
const conditions = ['repo_id = @repoId', 'line_count IS NOT NULL'];
|
|
127
|
+
const params = { repoId };
|
|
128
|
+
if (args.minCyclomaticComplexity !== undefined) {
|
|
129
|
+
conditions.push('COALESCE(cyclomatic_complexity, 1) >= @minCC');
|
|
130
|
+
params['minCC'] = args.minCyclomaticComplexity;
|
|
131
|
+
}
|
|
132
|
+
if (args.maxCyclomaticComplexity !== undefined) {
|
|
133
|
+
conditions.push('COALESCE(cyclomatic_complexity, 1) <= @maxCC');
|
|
134
|
+
params['maxCC'] = args.maxCyclomaticComplexity;
|
|
135
|
+
}
|
|
136
|
+
if (args.minCognitiveComplexity !== undefined) {
|
|
137
|
+
conditions.push('COALESCE(cognitive_complexity, 0) >= @minCog');
|
|
138
|
+
params['minCog'] = args.minCognitiveComplexity;
|
|
139
|
+
}
|
|
140
|
+
if (args.maxCognitiveComplexity !== undefined) {
|
|
141
|
+
conditions.push('COALESCE(cognitive_complexity, 0) <= @maxCog');
|
|
142
|
+
params['maxCog'] = args.maxCognitiveComplexity;
|
|
143
|
+
}
|
|
144
|
+
if (args.minLineCount !== undefined) {
|
|
145
|
+
conditions.push('COALESCE(line_count, 0) >= @minLC');
|
|
146
|
+
params['minLC'] = args.minLineCount;
|
|
147
|
+
}
|
|
148
|
+
if (args.maxLineCount !== undefined) {
|
|
149
|
+
conditions.push('COALESCE(line_count, 0) <= @maxLC');
|
|
150
|
+
params['maxLC'] = args.maxLineCount;
|
|
151
|
+
}
|
|
152
|
+
if (args.minNestingDepth !== undefined) {
|
|
153
|
+
conditions.push('COALESCE(nesting_depth, 0) >= @minND');
|
|
154
|
+
params['minND'] = args.minNestingDepth;
|
|
155
|
+
}
|
|
156
|
+
if (args.maxNestingDepth !== undefined) {
|
|
157
|
+
conditions.push('COALESCE(nesting_depth, 0) <= @maxND');
|
|
158
|
+
params['maxND'] = args.maxNestingDepth;
|
|
159
|
+
}
|
|
160
|
+
if (args.minParamCount !== undefined) {
|
|
161
|
+
conditions.push('COALESCE(param_count, 0) >= @minPC');
|
|
162
|
+
params['minPC'] = args.minParamCount;
|
|
163
|
+
}
|
|
164
|
+
if (args.maxParamCount !== undefined) {
|
|
165
|
+
conditions.push('COALESCE(param_count, 0) <= @maxPC');
|
|
166
|
+
params['maxPC'] = args.maxParamCount;
|
|
167
|
+
}
|
|
168
|
+
if (args.minReturnCount !== undefined) {
|
|
169
|
+
conditions.push('COALESCE(return_count, 0) >= @minRC');
|
|
170
|
+
params['minRC'] = args.minReturnCount;
|
|
171
|
+
}
|
|
172
|
+
if (args.maxReturnCount !== undefined) {
|
|
173
|
+
conditions.push('COALESCE(return_count, 0) <= @maxRC');
|
|
174
|
+
params['maxRC'] = args.maxReturnCount;
|
|
175
|
+
}
|
|
176
|
+
if (args.kind) {
|
|
177
|
+
conditions.push('kind = @kind');
|
|
178
|
+
params['kind'] = args.kind;
|
|
179
|
+
}
|
|
180
|
+
if (args.filePath) {
|
|
181
|
+
conditions.push('(file_path = @filePath OR file_path LIKE @filePathPrefix)');
|
|
182
|
+
params['filePath'] = args.filePath;
|
|
183
|
+
params['filePathPrefix'] = `${args.filePath}%`;
|
|
184
|
+
}
|
|
185
|
+
params['limit'] = limit;
|
|
186
|
+
const orderCol = SORT_COL[sortBy] ?? 'cyclomatic_complexity';
|
|
187
|
+
const order = sortOrder === 'asc' ? 'ASC' : 'DESC';
|
|
188
|
+
const sql = `
|
|
189
|
+
SELECT id, name, kind, file_path, start_byte, signature, summary,
|
|
190
|
+
COALESCE(line_count, 0) AS line_count,
|
|
191
|
+
COALESCE(cyclomatic_complexity, 1) AS cyclomatic_complexity,
|
|
192
|
+
COALESCE(cognitive_complexity, 0) AS cognitive_complexity,
|
|
193
|
+
COALESCE(param_count, 0) AS param_count,
|
|
194
|
+
COALESCE(return_count, 0) AS return_count,
|
|
195
|
+
COALESCE(nesting_depth, 0) AS nesting_depth
|
|
196
|
+
FROM symbols
|
|
197
|
+
WHERE ${conditions.join(' AND ')}
|
|
198
|
+
ORDER BY ${orderCol} ${order}, file_path ASC, start_byte ASC
|
|
199
|
+
LIMIT @limit
|
|
200
|
+
`;
|
|
201
|
+
const rows = db.prepare(sql).all(params);
|
|
202
|
+
// ── Compute startLine from stored file content ─────────────────────────────
|
|
203
|
+
const fileSymbols = new Map();
|
|
204
|
+
for (const row of rows) {
|
|
205
|
+
const list = fileSymbols.get(row.file_path) ?? [];
|
|
206
|
+
list.push(row);
|
|
207
|
+
fileSymbols.set(row.file_path, list);
|
|
208
|
+
}
|
|
209
|
+
const lineMap = new Map(); // symbolId → startLine
|
|
210
|
+
for (const [filePath, syms] of fileSymbols) {
|
|
211
|
+
const fileRow = db.prepare('SELECT raw_content FROM files WHERE repo_id = ? AND path = ?').get(repoId, filePath);
|
|
212
|
+
if (fileRow?.raw_content) {
|
|
213
|
+
const content = fileRow.raw_content;
|
|
214
|
+
for (const sym of syms) {
|
|
215
|
+
const slice = content.slice(0, Math.min(sym.start_byte, content.length));
|
|
216
|
+
let line = 1;
|
|
217
|
+
for (let i = 0; i < slice.length; i++) {
|
|
218
|
+
if (slice[i] === 0x0a)
|
|
219
|
+
line++;
|
|
220
|
+
}
|
|
221
|
+
lineMap.set(sym.id, line);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
for (const sym of syms) {
|
|
226
|
+
lineMap.set(sym.id, Math.max(1, Math.floor(sym.start_byte / 80) + 1));
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
// ── Shape output ───────────────────────────────────────────────────────────
|
|
231
|
+
const symbols = rows.map((row) => ({
|
|
232
|
+
symbolId: row.id,
|
|
233
|
+
name: row.name,
|
|
234
|
+
kind: row.kind,
|
|
235
|
+
filePath: row.file_path,
|
|
236
|
+
startLine: lineMap.get(row.id) ?? 1,
|
|
237
|
+
signature: row.signature,
|
|
238
|
+
summary: row.summary,
|
|
239
|
+
metrics: {
|
|
240
|
+
cyclomaticComplexity: row.cyclomatic_complexity,
|
|
241
|
+
cognitiveComplexity: row.cognitive_complexity,
|
|
242
|
+
lineCount: row.line_count,
|
|
243
|
+
nestingDepth: row.nesting_depth,
|
|
244
|
+
paramCount: row.param_count,
|
|
245
|
+
returnCount: row.return_count,
|
|
246
|
+
},
|
|
247
|
+
}));
|
|
248
|
+
const responseBytes = symbols.reduce((sum, s) => sum + s.signature.length + s.summary.length + s.filePath.length + 100, 0);
|
|
249
|
+
const tokenEstimate = Math.ceil(responseBytes / 4);
|
|
250
|
+
return {
|
|
251
|
+
content: [{
|
|
252
|
+
type: 'text',
|
|
253
|
+
text: JSON.stringify({
|
|
254
|
+
symbols,
|
|
255
|
+
totalFound: symbols.length,
|
|
256
|
+
sortedBy: sortBy,
|
|
257
|
+
sortOrder,
|
|
258
|
+
_tokenEstimate: tokenEstimate,
|
|
259
|
+
_meta: buildMeta({ timingMs: Date.now() - t0 }),
|
|
260
|
+
}, null, 2),
|
|
261
|
+
}],
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
finally {
|
|
265
|
+
db.close();
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
//# sourceMappingURL=search-by-complexity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-by-complexity.js","sourceRoot":"","sources":["../../../src/server/tools/search-by-complexity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* search-by-decorator.ts
|
|
3
|
+
*
|
|
4
|
+
* MCP tool: search_by_decorator
|
|
5
|
+
*
|
|
6
|
+
* Find all symbols (classes, methods, functions, properties) annotated with
|
|
7
|
+
* a specific decorator. Re-parses stored file content via tree-sitter to
|
|
8
|
+
* locate `decorator` AST nodes, then resolves each back to its parent symbol
|
|
9
|
+
* in the index.
|
|
10
|
+
*
|
|
11
|
+
* Three match modes:
|
|
12
|
+
* - exact (default) — decorator name exactly matches the query (case-sensitive)
|
|
13
|
+
* - contains — decorator name contains the query
|
|
14
|
+
* - prefix — decorator name starts with the query
|
|
15
|
+
*
|
|
16
|
+
* Parameter decorators (on function parameters) are excluded — they do not
|
|
17
|
+
* correspond to indexed symbols.
|
|
18
|
+
*
|
|
19
|
+
* Only files backed by a WASM grammar are searched. Regex-only handlers
|
|
20
|
+
* (Perl, Terraform, Protobuf, GraphQL, etc.) are silently skipped.
|
|
21
|
+
*/
|
|
22
|
+
import { z } from 'zod';
|
|
23
|
+
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
24
|
+
export declare const name = "search_by_decorator";
|
|
25
|
+
export declare const description: string;
|
|
26
|
+
export declare const inputSchema: {
|
|
27
|
+
repoId: z.ZodString;
|
|
28
|
+
decoratorName: z.ZodString;
|
|
29
|
+
matchMode: z.ZodOptional<z.ZodEnum<{
|
|
30
|
+
prefix: "prefix";
|
|
31
|
+
contains: "contains";
|
|
32
|
+
exact: "exact";
|
|
33
|
+
}>>;
|
|
34
|
+
language: z.ZodOptional<z.ZodString>;
|
|
35
|
+
filePath: z.ZodOptional<z.ZodString>;
|
|
36
|
+
includeDecoratorText: z.ZodOptional<z.ZodBoolean>;
|
|
37
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
38
|
+
};
|
|
39
|
+
export declare function handler(args: {
|
|
40
|
+
repoId: string;
|
|
41
|
+
decoratorName: string;
|
|
42
|
+
matchMode?: 'exact' | 'contains' | 'prefix';
|
|
43
|
+
language?: string;
|
|
44
|
+
filePath?: string;
|
|
45
|
+
includeDecoratorText?: boolean;
|
|
46
|
+
limit?: number;
|
|
47
|
+
}): Promise<CallToolResult>;
|
|
48
|
+
//# sourceMappingURL=search-by-decorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-by-decorator.d.ts","sourceRoot":"","sources":["../../../src/server/tools/search-by-decorator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGzE,eAAO,MAAM,IAAI,wBAAwB,CAAC;AAE1C,eAAO,MAAM,WAAW,QAagE,CAAC;AAEzF,eAAO,MAAM,WAAW;;;;;;;;;;;;CAyCvB,CAAC;AAqUF,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyN1B"}
|