ai-mind-map 1.18.0 → 1.20.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/dist/index.js +79 -91
- package/dist/index.js.map +1 -1
- package/dist/knowledge-graph/graph.d.ts.map +1 -1
- package/dist/knowledge-graph/graph.js +38 -19
- package/dist/knowledge-graph/graph.js.map +1 -1
- package/dist/tools/advanced-tools.d.ts.map +1 -1
- package/dist/tools/advanced-tools.js +22 -21
- package/dist/tools/advanced-tools.js.map +1 -1
- package/dist/tools/change-tools.d.ts.map +1 -1
- package/dist/tools/change-tools.js +11 -5
- package/dist/tools/change-tools.js.map +1 -1
- package/dist/tools/context-tools.d.ts +17 -6
- package/dist/tools/context-tools.d.ts.map +1 -1
- package/dist/tools/context-tools.js +96 -21
- package/dist/tools/context-tools.js.map +1 -1
- package/dist/tools/digest-tools.d.ts.map +1 -1
- package/dist/tools/digest-tools.js +106 -13
- package/dist/tools/digest-tools.js.map +1 -1
- package/dist/tools/evolving-tools.d.ts.map +1 -1
- package/dist/tools/evolving-tools.js +2 -16
- package/dist/tools/evolving-tools.js.map +1 -1
- package/dist/tools/filesystem-tools.d.ts.map +1 -1
- package/dist/tools/filesystem-tools.js +19 -16
- package/dist/tools/filesystem-tools.js.map +1 -1
- package/dist/tools/flow-tools.d.ts.map +1 -1
- package/dist/tools/flow-tools.js +11 -9
- package/dist/tools/flow-tools.js.map +1 -1
- package/dist/tools/graph-tools.d.ts.map +1 -1
- package/dist/tools/graph-tools.js +46 -17
- package/dist/tools/graph-tools.js.map +1 -1
- package/dist/tools/memory-tools.d.ts.map +1 -1
- package/dist/tools/memory-tools.js +14 -8
- package/dist/tools/memory-tools.js.map +1 -1
- package/dist/tools/project-map-tool.d.ts.map +1 -1
- package/dist/tools/project-map-tool.js +8 -8
- package/dist/tools/project-map-tool.js.map +1 -1
- package/dist/tools/quality-tools.d.ts.map +1 -1
- package/dist/tools/quality-tools.js +3 -9
- package/dist/tools/quality-tools.js.map +1 -1
- package/dist/tools/semantic-tools.d.ts.map +1 -1
- package/dist/tools/semantic-tools.js +1 -5
- package/dist/tools/semantic-tools.js.map +1 -1
- package/dist/tools/session-tools.d.ts.map +1 -1
- package/dist/tools/session-tools.js +19 -28
- package/dist/tools/session-tools.js.map +1 -1
- package/dist/tools/smart-context-tool.d.ts.map +1 -1
- package/dist/tools/smart-context-tool.js +1 -5
- package/dist/tools/smart-context-tool.js.map +1 -1
- package/dist/tools/smart-tools.d.ts.map +1 -1
- package/dist/tools/smart-tools.js +13 -12
- package/dist/tools/smart-tools.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* Registers context-engine tools on the MCP server: smart context
|
|
5
5
|
* loading, content compression, re-indexing, and system status.
|
|
6
6
|
*/
|
|
7
|
+
import { statSync } from 'node:fs';
|
|
8
|
+
import { basename } from 'node:path';
|
|
7
9
|
import { z } from 'zod';
|
|
8
10
|
const defaultEstimator = {
|
|
9
11
|
estimate: (text) => Math.ceil(text.length / 4),
|
|
@@ -35,6 +37,12 @@ function mcpText(result) {
|
|
|
35
37
|
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
36
38
|
};
|
|
37
39
|
}
|
|
40
|
+
function mcpErrorText(result) {
|
|
41
|
+
return {
|
|
42
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
43
|
+
isError: true,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
38
46
|
function ok(data, estimator) {
|
|
39
47
|
const serialised = JSON.stringify(data);
|
|
40
48
|
const tokens = estimator.estimate(serialised);
|
|
@@ -45,8 +53,8 @@ function okWithSavings(data, tokensSaved, estimator) {
|
|
|
45
53
|
const tokens = estimator.estimate(serialised);
|
|
46
54
|
return { success: true, data, tokenCount: tokens, tokensSaved };
|
|
47
55
|
}
|
|
48
|
-
function fail(message) {
|
|
49
|
-
return { success: false, data: null, tokenCount: 0, tokensSaved: 0, message };
|
|
56
|
+
function fail(message, recovery) {
|
|
57
|
+
return { success: false, data: null, tokenCount: 0, tokensSaved: 0, message, ...(recovery ? { recovery } : {}) };
|
|
50
58
|
}
|
|
51
59
|
// ============================================================
|
|
52
60
|
// Registration
|
|
@@ -54,12 +62,15 @@ function fail(message) {
|
|
|
54
62
|
/**
|
|
55
63
|
* Register all Context Management tools on the given MCP server.
|
|
56
64
|
*
|
|
57
|
-
* @param server
|
|
58
|
-
* @param context
|
|
59
|
-
* @param indexer
|
|
60
|
-
* @param estimator
|
|
65
|
+
* @param server The MCP server instance.
|
|
66
|
+
* @param context Concrete context-engine implementation.
|
|
67
|
+
* @param indexer Concrete indexer implementation.
|
|
68
|
+
* @param estimator Optional token estimator.
|
|
69
|
+
* @param config Project configuration (for health-check).
|
|
70
|
+
* @param serverVersion Package version string (for health-check).
|
|
71
|
+
* @param db Optional raw DB handle for PRAGMA diagnostics.
|
|
61
72
|
*/
|
|
62
|
-
export function registerContextTools(server, context, indexer, estimator = defaultEstimator) {
|
|
73
|
+
export function registerContextTools(server, context, indexer, estimator = defaultEstimator, config, serverVersion, db) {
|
|
63
74
|
// CONSOLIDATED: Functionality available via other tools
|
|
64
75
|
/* if (false) {
|
|
65
76
|
server.tool(
|
|
@@ -136,15 +147,7 @@ export function registerContextTools(server, context, indexer, estimator = defau
|
|
|
136
147
|
);
|
|
137
148
|
} */
|
|
138
149
|
// ── mindmap_reindex ─────────────────────────────────────────
|
|
139
|
-
server.tool('mindmap_reindex', 'Index or re-index a codebase
|
|
140
|
-
'"No codebase index found", call this with the PROJECT PATH of the code you are working on. ' +
|
|
141
|
-
'Pass the projectPath parameter -- this is the root directory of the user\'s project ' +
|
|
142
|
-
'(e.g. "E:\\\\myproject" or "/home/user/project"). Without projectPath, it re-indexes the current project. ' +
|
|
143
|
-
'This creates a knowledge graph of all functions, classes, types, and relationships. ' +
|
|
144
|
-
'FIRST-TIME indexing takes ~30-90 seconds (subsequent re-indexes are much faster). ' +
|
|
145
|
-
'IMPORTANT: Before calling this tool for the first time on a new project, tell the user: ' +
|
|
146
|
-
'"Building the knowledge graph for the first time -- this takes about a minute. After that, all queries are instant." ' +
|
|
147
|
-
'After indexing, all other tools return real data.', {
|
|
150
|
+
server.tool('mindmap_reindex', 'Index or re-index a codebase to build the knowledge graph.', {
|
|
148
151
|
projectPath: z.string().optional().describe('Absolute path to the project directory to index. ALWAYS provide this when indexing a new project.'),
|
|
149
152
|
}, async ({ projectPath }) => {
|
|
150
153
|
try {
|
|
@@ -170,16 +173,88 @@ export function registerContextTools(server, context, indexer, estimator = defau
|
|
|
170
173
|
}
|
|
171
174
|
catch (err) {
|
|
172
175
|
const msg = err instanceof Error ? err.message : String(err);
|
|
173
|
-
return
|
|
176
|
+
return mcpErrorText(fail(`reindex failed: ${msg}`, 'Check if the project path exists and is accessible'));
|
|
174
177
|
}
|
|
175
178
|
});
|
|
176
179
|
// ── mindmap_status ──────────────────────────────────────────
|
|
177
|
-
server.tool('mindmap_status', '
|
|
180
|
+
server.tool('mindmap_status', 'Full health check: DB integrity, index status, memory usage, uptime.', {}, async () => {
|
|
178
181
|
try {
|
|
179
182
|
const stats = indexer.getStats();
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
+
const mem = process.memoryUsage();
|
|
184
|
+
// ── DB diagnostics ────────────────────────────────
|
|
185
|
+
let dbInfo = {};
|
|
186
|
+
if (config) {
|
|
187
|
+
let sizeBytes = 0;
|
|
188
|
+
try {
|
|
189
|
+
sizeBytes = statSync(config.dbPath).size;
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
// DB file may not exist yet
|
|
193
|
+
}
|
|
194
|
+
let integrity = 'unknown';
|
|
195
|
+
let walMode = false;
|
|
196
|
+
if (db) {
|
|
197
|
+
try {
|
|
198
|
+
const intResult = db.pragma('integrity_check');
|
|
199
|
+
integrity = Array.isArray(intResult) && intResult.length > 0
|
|
200
|
+
? intResult[0].integrity_check
|
|
201
|
+
: 'ok';
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
integrity = 'error';
|
|
205
|
+
}
|
|
206
|
+
try {
|
|
207
|
+
const jmResult = db.pragma('journal_mode');
|
|
208
|
+
const mode = Array.isArray(jmResult) && jmResult.length > 0
|
|
209
|
+
? jmResult[0].journal_mode
|
|
210
|
+
: '';
|
|
211
|
+
walMode = mode === 'wal';
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
// leave as false
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
dbInfo = {
|
|
218
|
+
path: config.dbPath,
|
|
219
|
+
sizeBytes,
|
|
220
|
+
sizeMB: (sizeBytes / 1024 / 1024).toFixed(1),
|
|
221
|
+
integrity,
|
|
222
|
+
walMode,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
// ── Index status ──────────────────────────────────
|
|
226
|
+
const notIndexed = stats.indexedFiles === 0 && stats.totalNodes === 0;
|
|
227
|
+
// ── Assemble full health-check response ──────────
|
|
228
|
+
const response = {
|
|
229
|
+
healthy: !notIndexed,
|
|
230
|
+
project: config
|
|
231
|
+
? {
|
|
232
|
+
root: config.projectRoot,
|
|
233
|
+
name: basename(config.projectRoot),
|
|
234
|
+
}
|
|
235
|
+
: { root: stats.projectRoot ?? 'unknown', name: 'unknown' },
|
|
236
|
+
db: dbInfo,
|
|
237
|
+
index: {
|
|
238
|
+
files: stats.indexedFiles,
|
|
239
|
+
symbols: stats.totalNodes,
|
|
240
|
+
edges: stats.totalEdges,
|
|
241
|
+
languages: stats.languageBreakdown,
|
|
242
|
+
stale: false,
|
|
243
|
+
},
|
|
244
|
+
runtime: {
|
|
245
|
+
heapUsedMB: (mem.heapUsed / 1024 / 1024).toFixed(1),
|
|
246
|
+
rssMB: (mem.rss / 1024 / 1024).toFixed(1),
|
|
247
|
+
uptimeSeconds: Math.round(process.uptime()),
|
|
248
|
+
nodeVersion: process.version,
|
|
249
|
+
serverVersion: serverVersion ?? 'unknown',
|
|
250
|
+
},
|
|
251
|
+
tools: {
|
|
252
|
+
active: 18,
|
|
253
|
+
disabled: 15,
|
|
254
|
+
},
|
|
255
|
+
};
|
|
256
|
+
// Preserve user-facing guidance when no index exists
|
|
257
|
+
if (notIndexed) {
|
|
183
258
|
response._indexStatus = 'NOT_INDEXED';
|
|
184
259
|
response._message = '⚠ No codebase has been indexed yet. Call mindmap_reindex to index the project.';
|
|
185
260
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-tools.js","sourceRoot":"","sources":["../../src/tools/context-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"context-tools.js","sourceRoot":"","sources":["../../src/tools/context-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"digest-tools.d.ts","sourceRoot":"","sources":["../../src/tools/digest-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"digest-tools.d.ts","sourceRoot":"","sources":["../../src/tools/digest-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AA8B3D,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,eAAe,EAC1B,MAAM,EAAE,aAAa,EACrB,SAAS,GAAE,eAAkC,GAC5C,IAAI,CAudN"}
|
|
@@ -15,25 +15,25 @@ const defaultEstimator = {
|
|
|
15
15
|
estimate: (s) => Math.ceil(s.length / 4),
|
|
16
16
|
};
|
|
17
17
|
function ok(data, estimator) {
|
|
18
|
-
const json = JSON.stringify(data
|
|
18
|
+
const json = JSON.stringify(data);
|
|
19
19
|
const tokens = estimator.estimate(json);
|
|
20
20
|
return JSON.stringify({ success: true, data, tokenCount: tokens });
|
|
21
21
|
}
|
|
22
|
-
function fail(message) {
|
|
23
|
-
return JSON.stringify({ success: false, error: message });
|
|
22
|
+
function fail(message, recovery) {
|
|
23
|
+
return JSON.stringify({ success: false, error: message, ...(recovery ? { recovery } : {}) });
|
|
24
24
|
}
|
|
25
25
|
function mcpText(text) {
|
|
26
26
|
return { content: [{ type: 'text', text }] };
|
|
27
27
|
}
|
|
28
|
+
function mcpErrorText(text) {
|
|
29
|
+
return { content: [{ type: 'text', text }], isError: true };
|
|
30
|
+
}
|
|
28
31
|
// ============================================================
|
|
29
32
|
// Registration
|
|
30
33
|
// ============================================================
|
|
31
34
|
export function registerDigestTools(server, graph, changelog, config, estimator = defaultEstimator) {
|
|
32
35
|
// ── mindmap_digest ─────────────────────────────────────────
|
|
33
|
-
server.tool('mindmap_digest', 'Get a compressed
|
|
34
|
-
'Includes: file tree, tech stack, architecture layers, key symbols, ' +
|
|
35
|
-
'and recent changes. USE THIS instead of reading multiple files to ' +
|
|
36
|
-
'understand a project.', {
|
|
36
|
+
server.tool('mindmap_digest', 'Get a compressed project summary in under 2000 tokens.', {
|
|
37
37
|
includeChanges: z.boolean().optional().describe('Include recent changes in digest (default: true)'),
|
|
38
38
|
maxTokens: z.number().optional().describe('Max tokens for digest (default: 2000)'),
|
|
39
39
|
}, async (args) => {
|
|
@@ -157,13 +157,11 @@ export function registerDigestTools(server, graph, changelog, config, estimator
|
|
|
157
157
|
return mcpText(result);
|
|
158
158
|
}
|
|
159
159
|
catch (err) {
|
|
160
|
-
return
|
|
160
|
+
return mcpErrorText(fail(`Failed to generate digest: ${err instanceof Error ? err.message : String(err)}`, 'Ensure the project is indexed via mindmap_set_project'));
|
|
161
161
|
}
|
|
162
162
|
});
|
|
163
163
|
// ── mindmap_file_digest ────────────────────────────────────
|
|
164
|
-
server.tool('mindmap_file_digest', 'Get a compressed summary of a
|
|
165
|
-
'Returns: exports, key functions with signatures, dependencies, and recent changes. ' +
|
|
166
|
-
'Use this to understand a file before deciding whether to read it fully.', {
|
|
164
|
+
server.tool('mindmap_file_digest', 'Get a compressed summary of a file without reading it fully.', {
|
|
167
165
|
file: z.string().describe('File path (relative to project root or absolute)'),
|
|
168
166
|
}, async (args) => {
|
|
169
167
|
try {
|
|
@@ -184,12 +182,12 @@ export function registerDigestTools(server, graph, changelog, config, estimator
|
|
|
184
182
|
return buildFileDigest(match, nodes, args.file);
|
|
185
183
|
}
|
|
186
184
|
}
|
|
187
|
-
return
|
|
185
|
+
return mcpErrorText(fail(`File not found in index: ${args.file}`, 'Verify the file path exists and is within the project, then run mindmap_reindex'));
|
|
188
186
|
}
|
|
189
187
|
return buildFileDigest(filePath, fileNodes, args.file);
|
|
190
188
|
}
|
|
191
189
|
catch (err) {
|
|
192
|
-
return
|
|
190
|
+
return mcpErrorText(fail(`Failed to get file digest: ${err instanceof Error ? err.message : String(err)}`, 'Verify the file path exists and is within the project'));
|
|
193
191
|
}
|
|
194
192
|
});
|
|
195
193
|
function buildFileDigest(filePath, fileNodes, displayPath) {
|
|
@@ -328,5 +326,100 @@ export function registerDigestTools(server, graph, changelog, config, estimator
|
|
|
328
326
|
}
|
|
329
327
|
});
|
|
330
328
|
} // end CONSOLIDATED mindmap_verify
|
|
329
|
+
// ── mindmap_file_skeleton ───────────────────────────────────
|
|
330
|
+
server.tool('mindmap_file_skeleton', 'Get file structure as compact text: signatures, doc comments, and line ranges. Use BEFORE reading a full file.', {
|
|
331
|
+
file: z.string().describe('File path (relative or absolute)'),
|
|
332
|
+
includePrivate: z.boolean().default(false).describe('Include private/internal symbols'),
|
|
333
|
+
}, async (args) => {
|
|
334
|
+
try {
|
|
335
|
+
// Resolve file path
|
|
336
|
+
let filePath = args.file;
|
|
337
|
+
if (!filePath.includes(':') && !filePath.startsWith('/')) {
|
|
338
|
+
filePath = resolve(config.projectRoot, filePath);
|
|
339
|
+
}
|
|
340
|
+
// Get all nodes for this file
|
|
341
|
+
let fileNodes = graph.getFileStructure(filePath);
|
|
342
|
+
if (fileNodes.length === 0) {
|
|
343
|
+
const allFiles = graph.getIndexedFiles();
|
|
344
|
+
const match = allFiles.find(f => relative(config.projectRoot, f).replace(/\\/g, '/') === args.file.replace(/\\/g, '/'));
|
|
345
|
+
if (match) {
|
|
346
|
+
fileNodes = graph.getFileStructure(match);
|
|
347
|
+
filePath = match;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
if (fileNodes.length === 0) {
|
|
351
|
+
return mcpErrorText(fail(`File not found in index: ${args.file}`, 'Verify the file path exists and is within the project, then run mindmap_reindex'));
|
|
352
|
+
}
|
|
353
|
+
const relPath = relative(config.projectRoot, filePath).replace(/\\/g, '/');
|
|
354
|
+
const symbols = fileNodes.filter((n) => n.type !== 'file');
|
|
355
|
+
// Filter private if not requested
|
|
356
|
+
const filtered = args.includePrivate
|
|
357
|
+
? symbols
|
|
358
|
+
: symbols.filter((n) => n.visibility !== 'private');
|
|
359
|
+
// Get file info
|
|
360
|
+
const fileNode = fileNodes.find((n) => n.type === 'file');
|
|
361
|
+
const totalLines = fileNode?.endLine || Math.max(...symbols.map((n) => n.endLine || 0));
|
|
362
|
+
const lang = fileNode?.language || symbols[0]?.language || 'unknown';
|
|
363
|
+
// Build compact text skeleton
|
|
364
|
+
const lines = [];
|
|
365
|
+
lines.push(`# ${relPath} (${totalLines} lines, ${lang})`);
|
|
366
|
+
lines.push('');
|
|
367
|
+
// Group by class/interface
|
|
368
|
+
const classes = filtered.filter((n) => n.type === 'class' || n.type === 'interface');
|
|
369
|
+
const topLevel = filtered.filter((n) => !['class', 'interface'].includes(n.type) &&
|
|
370
|
+
!n.qualifiedName?.includes('.'));
|
|
371
|
+
const classMembers = filtered.filter((n) => !['class', 'interface'].includes(n.type) &&
|
|
372
|
+
n.qualifiedName?.includes('.'));
|
|
373
|
+
// Render top-level symbols
|
|
374
|
+
for (const sym of topLevel) {
|
|
375
|
+
const exp = sym.isExported ? 'export ' : '';
|
|
376
|
+
const doc = sym.docComment
|
|
377
|
+
? ` // ${sym.docComment.split('\n')[0].replace(/^[\s*\/]+/, '').trim().substring(0, 60)}`
|
|
378
|
+
: '';
|
|
379
|
+
lines.push(`${exp}${sym.signature || `${sym.type} ${sym.name}`} // L${sym.startLine}-${sym.endLine}${doc}`);
|
|
380
|
+
}
|
|
381
|
+
// Render classes with their members
|
|
382
|
+
for (const cls of classes) {
|
|
383
|
+
lines.push('');
|
|
384
|
+
const exp = cls.isExported ? 'export ' : '';
|
|
385
|
+
const doc = cls.docComment
|
|
386
|
+
? ` // ${cls.docComment.split('\n')[0].replace(/^[\s*\/]+/, '').trim().substring(0, 60)}`
|
|
387
|
+
: '';
|
|
388
|
+
lines.push(`${exp}${cls.signature || `${cls.type} ${cls.name}`} // L${cls.startLine}-${cls.endLine}${doc}`);
|
|
389
|
+
// Find members of this class
|
|
390
|
+
const members = classMembers.filter((m) => m.qualifiedName?.startsWith(cls.name + '.') ||
|
|
391
|
+
(m.startLine >= cls.startLine && m.endLine <= cls.endLine));
|
|
392
|
+
for (const mem of members) {
|
|
393
|
+
const vis = mem.visibility === 'private' ? '- ' : mem.visibility === 'protected' ? '# ' : '+ ';
|
|
394
|
+
const sig = mem.signature || `${mem.type} ${mem.name}`;
|
|
395
|
+
// Shorten signature to essential parts
|
|
396
|
+
const shortSig = sig.length > 80 ? sig.substring(0, 77) + '...' : sig;
|
|
397
|
+
const memDoc = mem.docComment
|
|
398
|
+
? ` // ${mem.docComment.split('\n')[0].replace(/^[\s*\/]+/, '').trim().substring(0, 50)}`
|
|
399
|
+
: '';
|
|
400
|
+
lines.push(` ${vis}${shortSig} // L${mem.startLine}${memDoc}`);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
const skeleton = lines.join('\n');
|
|
404
|
+
// Get recent changes for this file
|
|
405
|
+
const changes = changelog.getFileChanges(filePath, 5);
|
|
406
|
+
let changeInfo = '';
|
|
407
|
+
if (changes && changes.length > 0) {
|
|
408
|
+
changeInfo = '\n\n## Recent Changes\n' + changes.slice(0, 5).map((c) => ` ${c.type || 'modified'}: ${c.symbolName || c.name || 'unknown'}`).join('\n');
|
|
409
|
+
}
|
|
410
|
+
return mcpText(JSON.stringify({
|
|
411
|
+
success: true,
|
|
412
|
+
data: {
|
|
413
|
+
skeleton: skeleton + changeInfo,
|
|
414
|
+
symbolCount: filtered.length,
|
|
415
|
+
totalLines,
|
|
416
|
+
tokensSaved: `~${Math.round(totalLines * 25)} tokens saved vs reading full file`,
|
|
417
|
+
},
|
|
418
|
+
}));
|
|
419
|
+
}
|
|
420
|
+
catch (err) {
|
|
421
|
+
return mcpErrorText(fail(`Failed to get file skeleton: ${err instanceof Error ? err.message : String(err)}`, 'Verify the file path exists and is within the project'));
|
|
422
|
+
}
|
|
423
|
+
});
|
|
331
424
|
}
|
|
332
425
|
//# sourceMappingURL=digest-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"digest-tools.js","sourceRoot":"","sources":["../../src/tools/digest-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"digest-tools.js","sourceRoot":"","sources":["../../src/tools/digest-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evolving-tools.d.ts","sourceRoot":"","sources":["../../src/tools/evolving-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAc,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAM7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;AA0BD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,aAAa,EACrB,SAAS,GAAE,eAAkC,GAC5C,IAAI,
|
|
1
|
+
{"version":3,"file":"evolving-tools.d.ts","sourceRoot":"","sources":["../../src/tools/evolving-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAc,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAM7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;AA0BD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,aAAa,EACrB,SAAS,GAAE,eAAkC,GAC5C,IAAI,CAiLN"}
|
|
@@ -35,19 +35,7 @@ function fail(message) {
|
|
|
35
35
|
*/
|
|
36
36
|
export function registerEvolvingTools(server, graph, config, estimator = defaultEstimator) {
|
|
37
37
|
// ── mindmap_teach ────────────────────────────────────────────
|
|
38
|
-
server.tool('mindmap_teach', 'Teach
|
|
39
|
-
'The rule is saved in the project database and automatically applied ' +
|
|
40
|
-
'in future sessions. Use this when:\n' +
|
|
41
|
-
'- A file/pattern is misclassified → teach a classification rule\n' +
|
|
42
|
-
'- You keep searching for synonyms → teach a search alias\n' +
|
|
43
|
-
'- You notice a project convention → teach a convention\n' +
|
|
44
|
-
'- You spot a code pattern → teach a code pattern\n\n' +
|
|
45
|
-
'Examples:\n' +
|
|
46
|
-
' Classification: { type: "classification", name: "bloc_files", layer: "state_update", ' +
|
|
47
|
-
'source: "path", patterns: ["\\\\.bloc\\\\.dart$"], weight: 3 }\n' +
|
|
48
|
-
' Search alias: { type: "search_alias", name: "auth_aliases", term: "auth", ' +
|
|
49
|
-
'aliases: ["login", "authentication", "session", "jwt"] }\n' +
|
|
50
|
-
' Convention: { type: "convention", name: "api_naming", description: "All API methods end with Async" }', {
|
|
38
|
+
server.tool('mindmap_teach', 'Teach a persistent project-specific rule or convention.', {
|
|
51
39
|
type: z.enum(['classification', 'search_alias', 'code_pattern', 'convention'])
|
|
52
40
|
.describe('Type of rule to teach'),
|
|
53
41
|
name: z.string().min(1).max(100)
|
|
@@ -145,9 +133,7 @@ export function registerEvolvingTools(server, graph, config, estimator = default
|
|
|
145
133
|
}
|
|
146
134
|
});
|
|
147
135
|
// ── mindmap_get_learned ──────────────────────────────────────
|
|
148
|
-
server.tool('mindmap_get_learned', 'View all rules
|
|
149
|
-
'search aliases, code patterns, and conventions — sorted by usage count. ' +
|
|
150
|
-
'Use this at the start of a session to see what the system has already learned.', {
|
|
136
|
+
server.tool('mindmap_get_learned', 'View all learned rules for this project.', {
|
|
151
137
|
type: z.enum(['classification', 'search_alias', 'code_pattern', 'convention', 'all'])
|
|
152
138
|
.default('all')
|
|
153
139
|
.describe('Filter by rule type, or "all" for everything'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evolving-tools.js","sourceRoot":"","sources":["../../src/tools/evolving-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,MAAM,gBAAgB,GAAoB;IACxC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;CAC/C,CAAC;AAEF,SAAS,OAAO,CAAC,MAAkB;IACjC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,SAAS,EAAE,CAAC,IAAa,EAAE,SAA0B;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,SAAS,IAAI,CAAC,OAAe;IAC3B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;AAChF,CAAC;AAED,+DAA+D;AAC/D,eAAe;AACf,+DAA+D;AAE/D;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAiB,EACjB,KAAqB,EACrB,MAAqB,EACrB,YAA6B,gBAAgB;IAG7C,gEAAgE;IAChE,MAAM,CAAC,IAAI,CACT,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"evolving-tools.js","sourceRoot":"","sources":["../../src/tools/evolving-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem-tools.d.ts","sourceRoot":"","sources":["../../src/tools/filesystem-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAeH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAc,aAAa,EAAa,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAM7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;
|
|
1
|
+
{"version":3,"file":"filesystem-tools.d.ts","sourceRoot":"","sources":["../../src/tools/filesystem-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAeH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAc,aAAa,EAAa,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAM7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;AAsmBD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,aAAa,EACrB,SAAS,GAAE,eAAkC,GAC5C,IAAI,CA6tBN"}
|
|
@@ -27,13 +27,19 @@ function mcpText(result) {
|
|
|
27
27
|
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
|
+
function mcpErrorText(result) {
|
|
31
|
+
return {
|
|
32
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
33
|
+
isError: true,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
30
36
|
function ok(data, estimator) {
|
|
31
37
|
const serialised = JSON.stringify(data);
|
|
32
38
|
const tokens = estimator.estimate(serialised);
|
|
33
39
|
return { success: true, data, tokenCount: tokens, tokensSaved: 0 };
|
|
34
40
|
}
|
|
35
|
-
function fail(message) {
|
|
36
|
-
return { success: false, data: null, tokenCount: 0, tokensSaved: 0, message };
|
|
41
|
+
function fail(message, recovery) {
|
|
42
|
+
return { success: false, data: null, tokenCount: 0, tokensSaved: 0, message, ...(recovery ? { recovery } : {}) };
|
|
37
43
|
}
|
|
38
44
|
// ============================================================
|
|
39
45
|
// Constants
|
|
@@ -518,8 +524,7 @@ function estimateIndexTime(totalFiles) {
|
|
|
518
524
|
*/
|
|
519
525
|
export function registerFilesystemTools(server, graph, config, estimator = defaultEstimator) {
|
|
520
526
|
// ── mindmap_list_dir ──────────────────────────────────────────
|
|
521
|
-
server.tool('mindmap_list_dir', 'List
|
|
522
|
-
'Directories are sorted first, then files, alphabetically.', {
|
|
527
|
+
server.tool('mindmap_list_dir', 'List files and directories at a given path with size info.', {
|
|
523
528
|
path: z.string().describe('Absolute or relative path to directory'),
|
|
524
529
|
includeHidden: z.boolean().default(false).describe('Include hidden files/dirs (starting with .)'),
|
|
525
530
|
}, {
|
|
@@ -531,26 +536,25 @@ export function registerFilesystemTools(server, graph, config, estimator = defau
|
|
|
531
536
|
try {
|
|
532
537
|
const resolved = resolvePath(inputPath, config.projectRoot, true);
|
|
533
538
|
if (!resolved) {
|
|
534
|
-
return
|
|
539
|
+
return mcpErrorText(fail(`Path "${inputPath}" resolves outside the project root`, 'Provide a path within the project root'));
|
|
535
540
|
}
|
|
536
541
|
if (!existsSync(resolved)) {
|
|
537
|
-
return
|
|
542
|
+
return mcpErrorText(fail(`Directory not found: ${resolved}`, 'Verify the directory path exists'));
|
|
538
543
|
}
|
|
539
544
|
const stat = statSync(resolved);
|
|
540
545
|
if (!stat.isDirectory()) {
|
|
541
|
-
return
|
|
546
|
+
return mcpErrorText(fail(`Not a directory: ${resolved}`, 'Provide a path to a directory, not a file'));
|
|
542
547
|
}
|
|
543
548
|
const result = listDirectory(resolved, includeHidden);
|
|
544
549
|
return mcpText(ok(result, estimator));
|
|
545
550
|
}
|
|
546
551
|
catch (err) {
|
|
547
552
|
const msg = err instanceof Error ? err.message : String(err);
|
|
548
|
-
return
|
|
553
|
+
return mcpErrorText(fail(`Failed to list directory: ${msg}`, 'Verify the directory path exists and is accessible'));
|
|
549
554
|
}
|
|
550
555
|
});
|
|
551
556
|
// ── mindmap_read_lines ────────────────────────────────────────
|
|
552
|
-
server.tool('mindmap_read_lines', 'Read specific
|
|
553
|
-
'(function/class) from the knowledge graph if indexed. Capped at 500 lines per request.', {
|
|
557
|
+
server.tool('mindmap_read_lines', 'Read specific line ranges from a file efficiently.', {
|
|
554
558
|
filePath: z.string().describe('Absolute or relative path to file'),
|
|
555
559
|
startLine: z.number().int().min(1).default(1).describe('First line to read (1-indexed)'),
|
|
556
560
|
endLine: z.number().int().min(1).optional().describe('Last line to read (1-indexed, inclusive). Omit to read 200 lines from startLine'),
|
|
@@ -564,21 +568,21 @@ export function registerFilesystemTools(server, graph, config, estimator = defau
|
|
|
564
568
|
try {
|
|
565
569
|
const resolved = resolvePath(inputPath, config.projectRoot, true);
|
|
566
570
|
if (!resolved) {
|
|
567
|
-
return
|
|
571
|
+
return mcpErrorText(fail(`Path "${inputPath}" resolves outside the project root`, 'Provide a path within the project root'));
|
|
568
572
|
}
|
|
569
573
|
if (!existsSync(resolved)) {
|
|
570
|
-
return
|
|
574
|
+
return mcpErrorText(fail(`File not found: ${resolved}`, 'Verify the file path exists and is within the project'));
|
|
571
575
|
}
|
|
572
576
|
const stat = statSync(resolved);
|
|
573
577
|
if (!stat.isFile()) {
|
|
574
|
-
return
|
|
578
|
+
return mcpErrorText(fail(`Not a file: ${resolved}`, 'Provide a path to a file, not a directory'));
|
|
575
579
|
}
|
|
576
580
|
const result = readLines(resolved, startLine, endLine, includeContext, graph);
|
|
577
581
|
return mcpText(ok(result, estimator));
|
|
578
582
|
}
|
|
579
583
|
catch (err) {
|
|
580
584
|
const msg = err instanceof Error ? err.message : String(err);
|
|
581
|
-
return
|
|
585
|
+
return mcpErrorText(fail(`Failed to read file: ${msg}`, 'Verify the file path exists and is within the project'));
|
|
582
586
|
}
|
|
583
587
|
});
|
|
584
588
|
// ── mindmap_project_summary ───────────────────────────────────
|
|
@@ -1025,8 +1029,7 @@ export function registerFilesystemTools(server, graph, config, estimator = defau
|
|
|
1025
1029
|
// ── mindmap_batch_read ────────────────────────────────────────
|
|
1026
1030
|
// CONSOLIDATED: mindmap_batch_read disabled to reduce schema payload
|
|
1027
1031
|
if (false) {
|
|
1028
|
-
server.tool('mindmap_batch_read', 'Read
|
|
1029
|
-
'Each file request specifies a path and optional line range. Returns all results at once.', {
|
|
1032
|
+
server.tool('mindmap_batch_read', 'Read specific line ranges from a file efficiently.', {
|
|
1030
1033
|
files: z.array(z.object({
|
|
1031
1034
|
path: z.string().describe('Absolute or relative file path'),
|
|
1032
1035
|
startLine: z.number().int().min(1).default(1).describe('First line to read (1-indexed)'),
|