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.
- package/dist/index.js +27 -6
- package/dist/index.js.map +1 -1
- package/dist/knowledge-graph/graph.d.ts +14 -0
- package/dist/knowledge-graph/graph.d.ts.map +1 -1
- package/dist/knowledge-graph/graph.js +24 -0
- package/dist/knowledge-graph/graph.js.map +1 -1
- package/dist/knowledge-graph/indexer.d.ts +17 -0
- package/dist/knowledge-graph/indexer.d.ts.map +1 -1
- package/dist/knowledge-graph/indexer.js +160 -4
- package/dist/knowledge-graph/indexer.js.map +1 -1
- package/dist/knowledge-graph/parser.d.ts +1 -1
- package/dist/knowledge-graph/parser.d.ts.map +1 -1
- package/dist/knowledge-graph/parser.js +224 -2
- package/dist/knowledge-graph/parser.js.map +1 -1
- package/dist/tools/filesystem-tools.d.ts.map +1 -1
- package/dist/tools/filesystem-tools.js +10 -0
- package/dist/tools/filesystem-tools.js.map +1 -1
- package/dist/tools/session-tools.d.ts +2 -1
- package/dist/tools/session-tools.d.ts.map +1 -1
- package/dist/tools/session-tools.js +216 -228
- package/dist/tools/session-tools.js.map +1 -1
- package/dist/tools/smart-context-tool.d.ts +15 -0
- package/dist/tools/smart-context-tool.d.ts.map +1 -0
- package/dist/tools/smart-context-tool.js +207 -0
- package/dist/tools/smart-context-tool.js.map +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -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
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
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
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
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
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
.
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
.
|
|
290
|
-
.
|
|
291
|
-
|
|
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
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
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
|
-
|
|
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
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
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 =>
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
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
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
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
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
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"}
|