ai-mind-map 1.16.3 → 1.18.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.
@@ -28,41 +28,36 @@ function mcpText(text) {
28
28
  // ============================================================
29
29
  // Registration
30
30
  // ============================================================
31
- export function registerSessionTools(server, graph, changelog, config, estimator = defaultEstimator) {
32
- // CONSOLIDATED: Functionality available via other tools
33
- /* if (false) {
31
+ export function registerSessionTools(server, graph, changelog, config, estimator = defaultEstimator, persistentMemory) {
34
32
  // ── mindmap_session_start ──────────────────────────────────
35
- server.tool(
36
- 'mindmap_session_start',
37
- 'Start a new AI coding session. Records the agent name and task ' +
33
+ server.tool('mindmap_session_start', 'Start a new AI coding session. Records the agent name and task ' +
38
34
  'for session tracking. Changes made during this session will be ' +
39
- 'attributed to it. Returns the session ID.',
40
- {
35
+ 'attributed to it. Returns the session ID.', {
41
36
  agent: z.string().optional().describe('Name of the AI agent (e.g., "cursor", "claude", "copilot")'),
42
37
  task: z.string().optional().describe('Brief description of what you\'re working on'),
43
- },
44
- async (args) => {
38
+ }, async (args) => {
45
39
  try {
46
- const sessionId = changelog.startSession(
47
- args.agent || 'ai-agent',
48
- args.task,
49
- );
50
- return mcpText(ok({
51
- sessionId,
52
- message: `Session started. Changes will be tracked under this session.`,
53
- tip: 'Call mindmap_session_end when done to save a summary for next time.',
54
- }, estimator));
55
- } catch (err: unknown) {
56
- return mcpText(fail(`Failed to start session: ${err instanceof Error ? err.message : String(err)}`));
40
+ const sessionId = changelog.startSession(args.agent || 'ai-agent', args.task);
41
+ return mcpText(ok({
42
+ sessionId,
43
+ message: `Session started. Changes will be tracked under this session.`,
44
+ tip: 'Call mindmap_session_end when done to save a summary for next time.',
45
+ }, estimator));
46
+ }
47
+ catch (err) {
48
+ return mcpText(fail(`Failed to start session: ${err instanceof Error ? err.message : String(err)}`));
57
49
  }
58
- },
59
- );
60
- } */
50
+ });
61
51
  // ── mindmap_session_resume ─────────────────────────────────
62
52
  server.tool('mindmap_session_resume', 'Resume from the last AI coding session. Returns what was worked on, ' +
63
53
  'what files changed since then, and relevant memories. ' +
64
54
  'THIS IS THE FIRST TOOL AN AI AGENT SHOULD CALL to avoid re-reading the codebase.', {
65
55
  agent: z.string().optional().describe('Name of the AI agent resuming'),
56
+ }, {
57
+ readOnlyHint: false,
58
+ destructiveHint: false,
59
+ idempotentHint: false,
60
+ openWorldHint: false,
66
61
  }, async (args) => {
67
62
  try {
68
63
  // 1. Get last completed session
@@ -135,6 +130,24 @@ export function registerSessionTools(server, graph, changelog, config, estimator
135
130
  .map(([name, count]) => `${name} (${count}x)`),
136
131
  }));
137
132
  }
133
+ // Include relevant memories for context
134
+ if (persistentMemory) {
135
+ try {
136
+ const memories = persistentMemory.queryMemories({
137
+ text: config.projectRoot,
138
+ limit: 5,
139
+ minImportance: 0.3,
140
+ });
141
+ if (memories && memories.length > 0) {
142
+ result.relevantMemories = memories.map(m => ({
143
+ category: m.category,
144
+ content: m.content,
145
+ importance: m.importance,
146
+ }));
147
+ }
148
+ }
149
+ catch { /* non-fatal */ }
150
+ }
138
151
  // CRITICAL: If index is empty, tell the AI to index first
139
152
  if (stats.totalNodes === 0) {
140
153
  result._indexRequired = true;
@@ -152,6 +165,11 @@ export function registerSessionTools(server, graph, changelog, config, estimator
152
165
  server.tool('mindmap_session_end', 'End the current AI coding session with a summary. ' +
153
166
  'The summary will be shown to the next AI agent that calls mindmap_session_resume.', {
154
167
  summary: z.string().optional().describe('Summary of what was accomplished in this session'),
168
+ }, {
169
+ readOnlyHint: false,
170
+ destructiveHint: false,
171
+ idempotentHint: true,
172
+ openWorldHint: false,
155
173
  }, async (args) => {
156
174
  try {
157
175
  const currentSession = changelog.getCurrentSession();
@@ -161,6 +179,20 @@ export function registerSessionTools(server, graph, changelog, config, estimator
161
179
  // Get session changes for stats
162
180
  const changes = changelog.getSessionChanges(currentSession.id);
163
181
  changelog.endSession(currentSession.id, args.summary);
182
+ // Auto-create memories from significant session changes
183
+ if (persistentMemory && changes && changes.length > 0) {
184
+ try {
185
+ if (args.summary) {
186
+ persistentMemory.createMemory({
187
+ content: `Session: ${args.summary}. Files modified: ${currentSession.filesModified.length}`,
188
+ category: 'context',
189
+ importance: 0.6,
190
+ tags: ['auto-session', 'changes'],
191
+ });
192
+ }
193
+ }
194
+ catch { /* non-fatal */ }
195
+ }
164
196
  // Prune old entries
165
197
  const pruned = changelog.pruneChangelog();
166
198
  return mcpText(ok({
@@ -184,6 +216,11 @@ export function registerSessionTools(server, graph, changelog, config, estimator
184
216
  'Use this instead of re-reading files to see what changed.', {
185
217
  since: z.string().optional().describe('ISO timestamp or relative: "1h", "30m", "1d", "last_session". Default: "last_session"'),
186
218
  file: z.string().optional().describe('Filter to a specific file path (relative to project root)'),
219
+ }, {
220
+ readOnlyHint: true,
221
+ destructiveHint: false,
222
+ idempotentHint: true,
223
+ openWorldHint: false,
187
224
  }, async (args) => {
188
225
  try {
189
226
  let sinceMs;
@@ -224,225 +261,176 @@ export function registerSessionTools(server, graph, changelog, config, estimator
224
261
  return mcpText(fail(`Failed to get changelog: ${err instanceof Error ? err.message : String(err)}`));
225
262
  }
226
263
  });
227
- // CONSOLIDATED: Functionality available via other tools
228
- /* if (false) {
229
264
  // ── mindmap_hotspots ───────────────────────────────────────
230
- server.tool(
231
- 'mindmap_hotspots',
232
- 'Get the most frequently changed files and symbols in the codebase. ' +
233
- 'Hot files are more likely to have bugs and benefit from closer review.',
234
- {
265
+ server.tool('mindmap_hotspots', 'Get the most frequently changed files and symbols in the codebase. ' +
266
+ 'Hot files are more likely to have bugs and benefit from closer review.', {
235
267
  limit: z.number().optional().describe('Number of hotspots to return (default: 15)'),
236
- },
237
- async (args) => {
268
+ }, async (args) => {
238
269
  try {
239
- const limit = args.limit || 15;
240
- const hotspots = changelog.getHotspots(limit);
241
-
242
- if (hotspots.length > 0) {
243
- const result = hotspots.map(h => ({
244
- file: relative(config.projectRoot, h.filePath).replace(/\\/g, '/'),
245
- totalChanges: h.changeCount,
246
- lastChanged: new Date(h.lastChangedAt).toISOString(),
247
- hotSymbols: Object.entries(h.symbolChanges)
248
- .sort(([, a], [, b]) => (b as number) - (a as number))
249
- .slice(0, 5)
250
- .map(([name, count]) => ({ name, changes: count })),
251
- }));
252
-
253
- return mcpText(ok({ hotspots: result, tip: 'Files with high change frequency are more likely to contain bugs.' }, estimator));
254
- }
255
-
256
- // Fallback: use graph degree centrality when no changelog data
257
- const allNodes = graph.getAllNodes().filter(n => n.type !== 'file');
258
- const nodeDegrees: { node: typeof allNodes[0]; degree: number }[] = [];
259
-
260
- for (const node of allNodes) {
261
- const inEdges = graph.getInEdges(node.id);
262
- const outEdges = graph.getOutEdges(node.id);
263
- nodeDegrees.push({ node, degree: inEdges.length + outEdges.length });
264
- }
265
-
266
- nodeDegrees.sort((a, b) => b.degree - a.degree);
267
- const topNodes = nodeDegrees.slice(0, limit);
268
-
269
- // Group by file
270
- const fileMap = new Map<string, { degree: number; symbols: { name: string; type: string; degree: number }[] }>();
271
- for (const { node, degree } of topNodes) {
272
- const relPath = relative(config.projectRoot, node.filePath).replace(/\\/g, '/') || node.filePath;
273
- if (!fileMap.has(relPath)) {
274
- fileMap.set(relPath, { degree: 0, symbols: [] });
270
+ const limit = args.limit || 15;
271
+ const hotspots = changelog.getHotspots(limit);
272
+ if (hotspots.length > 0) {
273
+ const result = hotspots.map(h => ({
274
+ file: relative(config.projectRoot, h.filePath).replace(/\\/g, '/'),
275
+ totalChanges: h.changeCount,
276
+ lastChanged: new Date(h.lastChangedAt).toISOString(),
277
+ hotSymbols: Object.entries(h.symbolChanges)
278
+ .sort(([, a], [, b]) => b - a)
279
+ .slice(0, 5)
280
+ .map(([name, count]) => ({ name, changes: count })),
281
+ }));
282
+ return mcpText(ok({ hotspots: result, tip: 'Files with high change frequency are more likely to contain bugs.' }, estimator));
275
283
  }
276
- const entry = fileMap.get(relPath)!;
277
- entry.degree += degree;
278
- entry.symbols.push({ name: node.name, type: node.type, degree });
279
- }
280
-
281
- const fallbackResult = Array.from(fileMap.entries())
282
- .sort(([, a], [, b]) => b.degree - a.degree)
283
- .slice(0, limit)
284
- .map(([file, info]) => ({
285
- file,
286
- totalChanges: 0,
287
- connectivity: info.degree,
288
- hotSymbols: info.symbols
289
- .sort((a, b) => b.degree - a.degree)
290
- .slice(0, 5)
291
- .map(s => ({ name: s.name, type: s.type, connections: s.degree })),
284
+ // Fallback: use graph degree centrality when no changelog data
285
+ const allNodes = graph.getAllNodes().filter(n => n.type !== 'file');
286
+ const nodeDegrees = [];
287
+ for (const node of allNodes) {
288
+ const inEdges = graph.getInEdges(node.id);
289
+ const outEdges = graph.getOutEdges(node.id);
290
+ nodeDegrees.push({ node, degree: inEdges.length + outEdges.length });
291
+ }
292
+ nodeDegrees.sort((a, b) => b.degree - a.degree);
293
+ const topNodes = nodeDegrees.slice(0, limit);
294
+ // Group by file
295
+ const fileMap = new Map();
296
+ for (const { node, degree } of topNodes) {
297
+ const relPath = relative(config.projectRoot, node.filePath).replace(/\\/g, '/') || node.filePath;
298
+ if (!fileMap.has(relPath)) {
299
+ fileMap.set(relPath, { degree: 0, symbols: [] });
300
+ }
301
+ const entry = fileMap.get(relPath);
302
+ entry.degree += degree;
303
+ entry.symbols.push({ name: node.name, type: node.type, degree });
304
+ }
305
+ const fallbackResult = Array.from(fileMap.entries())
306
+ .sort(([, a], [, b]) => b.degree - a.degree)
307
+ .slice(0, limit)
308
+ .map(([file, info]) => ({
309
+ file,
310
+ totalChanges: 0,
311
+ connectivity: info.degree,
312
+ hotSymbols: info.symbols
313
+ .sort((a, b) => b.degree - a.degree)
314
+ .slice(0, 5)
315
+ .map(s => ({ name: s.name, type: s.type, connections: s.degree })),
292
316
  }));
293
-
294
- return mcpText(ok({
295
- hotspots: fallbackResult,
296
- source: 'graph-degree-centrality',
297
- tip: 'No change history available. Showing most connected symbols by graph degree centrality instead.',
298
- }, estimator));
299
- } catch (err: unknown) {
300
- return mcpText(fail(`Failed to get hotspots: ${err instanceof Error ? err.message : String(err)}`));
317
+ return mcpText(ok({
318
+ hotspots: fallbackResult,
319
+ source: 'graph-degree-centrality',
320
+ tip: 'No change history available. Showing most connected symbols by graph degree centrality instead.',
321
+ }, estimator));
322
+ }
323
+ catch (err) {
324
+ return mcpText(fail(`Failed to get hotspots: ${err instanceof Error ? err.message : String(err)}`));
301
325
  }
302
- },
303
- );
304
- } */
305
- // CONSOLIDATED: Functionality available via other tools
306
- /* if (false) {
326
+ });
307
327
  // ── mindmap_verify_changes ─────────────────────────────────
308
- server.tool(
309
- 'mindmap_verify_changes',
310
- 'Verify what actually changed in files after editing them. ' +
328
+ server.tool('mindmap_verify_changes', 'Verify what actually changed in files after editing them. ' +
311
329
  'Re-parses the specified files and compares with the stored index to show ' +
312
330
  'exactly which functions/classes were added, modified, or deleted. ' +
313
331
  'Use this INSTEAD of re-reading files to verify your edits took effect. ' +
314
- 'Also updates the index with the new file state.',
315
- {
316
- files: z.array(z.string()).describe(
317
- 'List of file paths (absolute or relative to project root) to verify'
318
- ),
319
- },
320
- async ({ files }) => {
332
+ 'Also updates the index with the new file state.', {
333
+ files: z.array(z.string()).describe('List of file paths (absolute or relative to project root) to verify'),
334
+ }, async ({ files }) => {
321
335
  try {
322
- const { parseFile: parse } = await import('../knowledge-graph/parser.js');
323
- const { resolve, relative: rel } = await import('node:path');
324
-
325
- const results: Array<{
326
- file: string;
327
- status: 'modified' | 'added' | 'unchanged' | 'deleted' | 'error';
328
- symbolChanges?: {
329
- added: string[];
330
- modified: string[];
331
- deleted: string[];
332
- };
333
- error?: string;
334
- }> = [];
335
-
336
- for (const filePath of files) {
337
- // Resolve relative paths against project root
338
- const absPath = resolve(config.projectRoot, filePath);
339
- const relPath = rel(config.projectRoot, absPath).replace(/\\/g, '/');
340
-
341
- try {
342
- // Get old nodes from graph
343
- const oldNodes = graph.getNodesForFile(absPath);
344
-
345
- // Re-parse the file
346
- const parseResult = await parse(absPath);
347
-
348
- if (!parseResult || parseResult.nodes.length === 0) {
349
- if (oldNodes.length > 0) {
350
- // File was deleted or emptied
351
- results.push({
352
- file: relPath,
353
- status: 'deleted',
354
- symbolChanges: {
355
- added: [],
356
- modified: [],
357
- deleted: oldNodes
336
+ const { parseFile: parse } = await import('../knowledge-graph/parser.js');
337
+ const { resolve, relative: rel } = await import('node:path');
338
+ const results = [];
339
+ for (const filePath of files) {
340
+ // Resolve relative paths against project root
341
+ const absPath = resolve(config.projectRoot, filePath);
342
+ const relPath = rel(config.projectRoot, absPath).replace(/\\/g, '/');
343
+ try {
344
+ // Get old nodes from graph
345
+ const oldNodes = graph.getNodesForFile(absPath);
346
+ // Re-parse the file
347
+ const parseResult = await parse(absPath);
348
+ if (!parseResult || parseResult.nodes.length === 0) {
349
+ if (oldNodes.length > 0) {
350
+ // File was deleted or emptied
351
+ results.push({
352
+ file: relPath,
353
+ status: 'deleted',
354
+ symbolChanges: {
355
+ added: [],
356
+ modified: [],
357
+ deleted: oldNodes
358
+ .filter(n => n.type !== 'file')
359
+ .map(n => `${n.type} ${n.name}`),
360
+ },
361
+ });
362
+ }
363
+ else {
364
+ results.push({ file: relPath, status: 'unchanged' });
365
+ }
366
+ continue;
367
+ }
368
+ // Build name→signature maps for comparison
369
+ const oldMap = new Map(oldNodes
358
370
  .filter(n => n.type !== 'file')
359
- .map(n => `${n.type} ${n.name}`),
360
- },
361
- });
362
- } else {
363
- results.push({ file: relPath, status: 'unchanged' });
364
- }
365
- continue;
366
- }
367
-
368
- // Build name→signature maps for comparison
369
- const oldMap = new Map(
370
- oldNodes
371
- .filter(n => n.type !== 'file')
372
- .map(n => [n.name, { type: n.type, signature: n.signature || '' }])
373
- );
374
- const newMap = new Map(
375
- parseResult.nodes
376
- .filter(n => n.type !== 'file')
377
- .map(n => [n.name, { type: n.type, signature: n.signature || '' }])
378
- );
379
-
380
- const added: string[] = [];
381
- const modified: string[] = [];
382
- const deleted: string[] = [];
383
-
384
- // Find added and modified
385
- for (const [name, info] of newMap) {
386
- const old = oldMap.get(name);
387
- if (!old) {
388
- added.push(`${info.type} ${name}`);
389
- } else if (old.signature !== info.signature) {
390
- modified.push(`${info.type} ${name} (signature changed)`);
371
+ .map(n => [n.name, { type: n.type, signature: n.signature || '' }]));
372
+ const newMap = new Map(parseResult.nodes
373
+ .filter(n => n.type !== 'file')
374
+ .map(n => [n.name, { type: n.type, signature: n.signature || '' }]));
375
+ const added = [];
376
+ const modified = [];
377
+ const deleted = [];
378
+ // Find added and modified
379
+ for (const [name, info] of newMap) {
380
+ const old = oldMap.get(name);
381
+ if (!old) {
382
+ added.push(`${info.type} ${name}`);
383
+ }
384
+ else if (old.signature !== info.signature) {
385
+ modified.push(`${info.type} ${name} (signature changed)`);
386
+ }
387
+ }
388
+ // Find deleted
389
+ for (const [name, info] of oldMap) {
390
+ if (!newMap.has(name)) {
391
+ deleted.push(`${info.type} ${name}`);
392
+ }
393
+ }
394
+ // Determine status
395
+ let status = 'unchanged';
396
+ if (oldNodes.length === 0 && parseResult.nodes.length > 0) {
397
+ status = 'added';
398
+ }
399
+ else if (added.length > 0 || modified.length > 0 || deleted.length > 0) {
400
+ status = 'modified';
401
+ }
402
+ // Update the graph with new data
403
+ graph.replaceFileData(absPath, parseResult.nodes, parseResult.edges);
404
+ results.push({
405
+ file: relPath,
406
+ status,
407
+ symbolChanges: { added, modified, deleted },
408
+ });
391
409
  }
392
- }
393
-
394
- // Find deleted
395
- for (const [name, info] of oldMap) {
396
- if (!newMap.has(name)) {
397
- deleted.push(`${info.type} ${name}`);
410
+ catch (err) {
411
+ results.push({
412
+ file: relPath,
413
+ status: 'error',
414
+ error: err instanceof Error ? err.message : String(err),
415
+ });
398
416
  }
399
- }
400
-
401
- // Determine status
402
- let status: 'modified' | 'added' | 'unchanged' = 'unchanged';
403
- if (oldNodes.length === 0 && parseResult.nodes.length > 0) {
404
- status = 'added';
405
- } else if (added.length > 0 || modified.length > 0 || deleted.length > 0) {
406
- status = 'modified';
407
- }
408
-
409
- // Update the graph with new data
410
- graph.replaceFileData(absPath, parseResult.nodes, parseResult.edges);
411
-
412
- results.push({
413
- file: relPath,
414
- status,
415
- symbolChanges: { added, modified, deleted },
416
- });
417
-
418
- } catch (err) {
419
- results.push({
420
- file: relPath,
421
- status: 'error',
422
- error: err instanceof Error ? err.message : String(err),
423
- });
424
417
  }
425
- }
426
-
427
- const totalChanges = results.reduce((sum, r) =>
428
- sum + (r.symbolChanges
429
- ? r.symbolChanges.added.length + r.symbolChanges.modified.length + r.symbolChanges.deleted.length
430
- : 0), 0);
431
-
432
- return mcpText(ok({
433
- verified: true,
434
- filesChecked: files.length,
435
- totalSymbolChanges: totalChanges,
436
- files: results,
437
- message: totalChanges > 0
438
- ? ` Verified ${files.length} file(s): ${totalChanges} symbol-level changes detected and index updated.`
439
- : ` Verified ${files.length} file(s): no symbol-level changes detected.`,
440
- }, estimator));
441
- } catch (err: unknown) {
442
- return mcpText(fail(`verify_changes failed: ${err instanceof Error ? err.message : String(err)}`));
418
+ const totalChanges = results.reduce((sum, r) => sum + (r.symbolChanges
419
+ ? r.symbolChanges.added.length + r.symbolChanges.modified.length + r.symbolChanges.deleted.length
420
+ : 0), 0);
421
+ return mcpText(ok({
422
+ verified: true,
423
+ filesChecked: files.length,
424
+ totalSymbolChanges: totalChanges,
425
+ files: results,
426
+ message: totalChanges > 0
427
+ ? ` Verified ${files.length} file(s): ${totalChanges} symbol-level changes detected and index updated.`
428
+ : ` Verified ${files.length} file(s): no symbol-level changes detected.`,
429
+ }, estimator));
430
+ }
431
+ catch (err) {
432
+ return mcpText(fail(`verify_changes failed: ${err instanceof Error ? err.message : String(err)}`));
443
433
  }
444
- },
445
- );
446
- } */
434
+ });
447
435
  }
448
436
  //# sourceMappingURL=session-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-tools.js","sourceRoot":"","sources":["../../src/tools/session-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-tools.js","sourceRoot":"","sources":["../../src/tools/session-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * AI Mind Map — Smart Context Tool
3
+ *
4
+ * Replaces 10+ tool calls with 1. Given symbols or a task description,
5
+ * returns all relevant context the AI needs to start coding immediately.
6
+ */
7
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
8
+ import type { MindMapConfig } from '../types.js';
9
+ import { KnowledgeGraph } from '../knowledge-graph/graph.js';
10
+ import type { ChangelogEngine } from '../knowledge-graph/changelog.js';
11
+ export interface ITokenEstimator {
12
+ estimate(text: string): number;
13
+ }
14
+ export declare function registerSmartContextTools(server: McpServer, graph: KnowledgeGraph, changelog: ChangelogEngine, config: MindMapConfig, estimator?: ITokenEstimator): void;
15
+ //# sourceMappingURL=smart-context-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-context-tool.d.ts","sourceRoot":"","sources":["../../src/tools/smart-context-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,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;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAMvE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;AA6BD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,eAAe,EAC1B,MAAM,EAAE,aAAa,EACrB,SAAS,GAAE,eAAkC,GAC5C,IAAI,CAsNN"}