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.
Files changed (52) hide show
  1. package/dist/index.js +79 -91
  2. package/dist/index.js.map +1 -1
  3. package/dist/knowledge-graph/graph.d.ts.map +1 -1
  4. package/dist/knowledge-graph/graph.js +38 -19
  5. package/dist/knowledge-graph/graph.js.map +1 -1
  6. package/dist/tools/advanced-tools.d.ts.map +1 -1
  7. package/dist/tools/advanced-tools.js +22 -21
  8. package/dist/tools/advanced-tools.js.map +1 -1
  9. package/dist/tools/change-tools.d.ts.map +1 -1
  10. package/dist/tools/change-tools.js +11 -5
  11. package/dist/tools/change-tools.js.map +1 -1
  12. package/dist/tools/context-tools.d.ts +17 -6
  13. package/dist/tools/context-tools.d.ts.map +1 -1
  14. package/dist/tools/context-tools.js +96 -21
  15. package/dist/tools/context-tools.js.map +1 -1
  16. package/dist/tools/digest-tools.d.ts.map +1 -1
  17. package/dist/tools/digest-tools.js +106 -13
  18. package/dist/tools/digest-tools.js.map +1 -1
  19. package/dist/tools/evolving-tools.d.ts.map +1 -1
  20. package/dist/tools/evolving-tools.js +2 -16
  21. package/dist/tools/evolving-tools.js.map +1 -1
  22. package/dist/tools/filesystem-tools.d.ts.map +1 -1
  23. package/dist/tools/filesystem-tools.js +19 -16
  24. package/dist/tools/filesystem-tools.js.map +1 -1
  25. package/dist/tools/flow-tools.d.ts.map +1 -1
  26. package/dist/tools/flow-tools.js +11 -9
  27. package/dist/tools/flow-tools.js.map +1 -1
  28. package/dist/tools/graph-tools.d.ts.map +1 -1
  29. package/dist/tools/graph-tools.js +46 -17
  30. package/dist/tools/graph-tools.js.map +1 -1
  31. package/dist/tools/memory-tools.d.ts.map +1 -1
  32. package/dist/tools/memory-tools.js +14 -8
  33. package/dist/tools/memory-tools.js.map +1 -1
  34. package/dist/tools/project-map-tool.d.ts.map +1 -1
  35. package/dist/tools/project-map-tool.js +8 -8
  36. package/dist/tools/project-map-tool.js.map +1 -1
  37. package/dist/tools/quality-tools.d.ts.map +1 -1
  38. package/dist/tools/quality-tools.js +3 -9
  39. package/dist/tools/quality-tools.js.map +1 -1
  40. package/dist/tools/semantic-tools.d.ts.map +1 -1
  41. package/dist/tools/semantic-tools.js +1 -5
  42. package/dist/tools/semantic-tools.js.map +1 -1
  43. package/dist/tools/session-tools.d.ts.map +1 -1
  44. package/dist/tools/session-tools.js +19 -28
  45. package/dist/tools/session-tools.js.map +1 -1
  46. package/dist/tools/smart-context-tool.d.ts.map +1 -1
  47. package/dist/tools/smart-context-tool.js +1 -5
  48. package/dist/tools/smart-context-tool.js.map +1 -1
  49. package/dist/tools/smart-tools.d.ts.map +1 -1
  50. package/dist/tools/smart-tools.js +13 -12
  51. package/dist/tools/smart-tools.js.map +1 -1
  52. 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 The MCP server instance.
58
- * @param context Concrete context-engine implementation.
59
- * @param indexer Concrete indexer implementation.
60
- * @param estimator Optional token 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. CRITICAL: If you see empty results or _hint about ' +
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 mcpText(fail(`reindex failed: ${msg}`));
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', 'Show current Mind Map index statistics, memory usage, and token savings estimate.', {}, async () => {
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
- // Add explicit guidance if no index exists
181
- const response = { ...stats };
182
- if (stats.indexedFiles === 0 && stats.totalNodes === 0) {
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":"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"}
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;AA0B3D,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,eAAe,EAC1B,MAAM,EAAE,aAAa,EACrB,SAAS,GAAE,eAAkC,GAC5C,IAAI,CAgWN"}
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, null, 2);
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 codebase summary in under 2000 tokens. ' +
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 mcpText(fail(`Failed to generate digest: ${err instanceof Error ? err.message : String(err)}`));
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 single file WITHOUT reading the full file. ' +
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 mcpText(fail(`File not found in index: ${args.file}`));
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 mcpText(fail(`Failed to get file digest: ${err instanceof Error ? err.message : String(err)}`));
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,CA+LN"}
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 the AI Mind Map a new rule that persists on this machine. ' +
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 the AI has taught this project. Shows classification 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":"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"}
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;AA+lBD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,aAAa,EACrB,SAAS,GAAE,eAAkC,GAC5C,IAAI,CAguBN"}
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 directory contents without triggering indexing. Returns files and directories with sizes and child counts. ' +
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 mcpText(fail(`Path "${inputPath}" resolves outside the project root`));
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 mcpText(fail(`Directory not found: ${resolved}`));
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 mcpText(fail(`Not a directory: ${resolved}`));
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 mcpText(fail(`Failed to list directory: ${msg}`));
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 lines from a file (1-indexed, inclusive). Optionally includes the containing symbol ' +
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 mcpText(fail(`Path "${inputPath}" resolves outside the project root`));
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 mcpText(fail(`File not found: ${resolved}`));
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 mcpText(fail(`Not a file: ${resolved}`));
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 mcpText(fail(`Failed to read file: ${msg}`));
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 multiple file regions in a single call. Eliminates per-call overhead when reading from several files. ' +
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)'),