ai-mind-map 1.1.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 (154) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +554 -0
  3. package/dist/change-tracker/change-log.d.ts +160 -0
  4. package/dist/change-tracker/change-log.d.ts.map +1 -0
  5. package/dist/change-tracker/change-log.js +507 -0
  6. package/dist/change-tracker/change-log.js.map +1 -0
  7. package/dist/change-tracker/diff-engine.d.ts +149 -0
  8. package/dist/change-tracker/diff-engine.d.ts.map +1 -0
  9. package/dist/change-tracker/diff-engine.js +530 -0
  10. package/dist/change-tracker/diff-engine.js.map +1 -0
  11. package/dist/change-tracker/watcher.d.ts +137 -0
  12. package/dist/change-tracker/watcher.d.ts.map +1 -0
  13. package/dist/change-tracker/watcher.js +300 -0
  14. package/dist/change-tracker/watcher.js.map +1 -0
  15. package/dist/cli.d.ts +20 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +937 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/config.d.ts +38 -0
  20. package/dist/config.d.ts.map +1 -0
  21. package/dist/config.js +222 -0
  22. package/dist/config.js.map +1 -0
  23. package/dist/context/compressor.d.ts +49 -0
  24. package/dist/context/compressor.d.ts.map +1 -0
  25. package/dist/context/compressor.js +769 -0
  26. package/dist/context/compressor.js.map +1 -0
  27. package/dist/context/progressive-disclosure.d.ts +71 -0
  28. package/dist/context/progressive-disclosure.d.ts.map +1 -0
  29. package/dist/context/progressive-disclosure.js +470 -0
  30. package/dist/context/progressive-disclosure.js.map +1 -0
  31. package/dist/context/token-budget.d.ts +121 -0
  32. package/dist/context/token-budget.d.ts.map +1 -0
  33. package/dist/context/token-budget.js +282 -0
  34. package/dist/context/token-budget.js.map +1 -0
  35. package/dist/index.d.ts +13 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +944 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/install.d.ts +66 -0
  40. package/dist/install.d.ts.map +1 -0
  41. package/dist/install.js +946 -0
  42. package/dist/install.js.map +1 -0
  43. package/dist/knowledge-graph/architecture.d.ts +213 -0
  44. package/dist/knowledge-graph/architecture.d.ts.map +1 -0
  45. package/dist/knowledge-graph/architecture.js +585 -0
  46. package/dist/knowledge-graph/architecture.js.map +1 -0
  47. package/dist/knowledge-graph/cypher.d.ts +113 -0
  48. package/dist/knowledge-graph/cypher.d.ts.map +1 -0
  49. package/dist/knowledge-graph/cypher.js +1051 -0
  50. package/dist/knowledge-graph/cypher.js.map +1 -0
  51. package/dist/knowledge-graph/dead-code.d.ts +121 -0
  52. package/dist/knowledge-graph/dead-code.d.ts.map +1 -0
  53. package/dist/knowledge-graph/dead-code.js +331 -0
  54. package/dist/knowledge-graph/dead-code.js.map +1 -0
  55. package/dist/knowledge-graph/flow-analyzer.d.ts +167 -0
  56. package/dist/knowledge-graph/flow-analyzer.d.ts.map +1 -0
  57. package/dist/knowledge-graph/flow-analyzer.js +739 -0
  58. package/dist/knowledge-graph/flow-analyzer.js.map +1 -0
  59. package/dist/knowledge-graph/graph.d.ts +291 -0
  60. package/dist/knowledge-graph/graph.d.ts.map +1 -0
  61. package/dist/knowledge-graph/graph.js +978 -0
  62. package/dist/knowledge-graph/graph.js.map +1 -0
  63. package/dist/knowledge-graph/index.d.ts +17 -0
  64. package/dist/knowledge-graph/index.d.ts.map +1 -0
  65. package/dist/knowledge-graph/index.js +14 -0
  66. package/dist/knowledge-graph/index.js.map +1 -0
  67. package/dist/knowledge-graph/indexer.d.ts +112 -0
  68. package/dist/knowledge-graph/indexer.d.ts.map +1 -0
  69. package/dist/knowledge-graph/indexer.js +506 -0
  70. package/dist/knowledge-graph/indexer.js.map +1 -0
  71. package/dist/knowledge-graph/pagerank.d.ts +141 -0
  72. package/dist/knowledge-graph/pagerank.d.ts.map +1 -0
  73. package/dist/knowledge-graph/pagerank.js +493 -0
  74. package/dist/knowledge-graph/pagerank.js.map +1 -0
  75. package/dist/knowledge-graph/parser.d.ts +55 -0
  76. package/dist/knowledge-graph/parser.d.ts.map +1 -0
  77. package/dist/knowledge-graph/parser.js +1090 -0
  78. package/dist/knowledge-graph/parser.js.map +1 -0
  79. package/dist/knowledge-graph/snapshot.d.ts +107 -0
  80. package/dist/knowledge-graph/snapshot.d.ts.map +1 -0
  81. package/dist/knowledge-graph/snapshot.js +435 -0
  82. package/dist/knowledge-graph/snapshot.js.map +1 -0
  83. package/dist/memory/decision-log.d.ts +151 -0
  84. package/dist/memory/decision-log.d.ts.map +1 -0
  85. package/dist/memory/decision-log.js +482 -0
  86. package/dist/memory/decision-log.js.map +1 -0
  87. package/dist/memory/persistent-memory.d.ts +182 -0
  88. package/dist/memory/persistent-memory.d.ts.map +1 -0
  89. package/dist/memory/persistent-memory.js +579 -0
  90. package/dist/memory/persistent-memory.js.map +1 -0
  91. package/dist/memory/session-memory.d.ts +165 -0
  92. package/dist/memory/session-memory.d.ts.map +1 -0
  93. package/dist/memory/session-memory.js +382 -0
  94. package/dist/memory/session-memory.js.map +1 -0
  95. package/dist/stress-test.d.ts +10 -0
  96. package/dist/stress-test.d.ts.map +1 -0
  97. package/dist/stress-test.js +258 -0
  98. package/dist/stress-test.js.map +1 -0
  99. package/dist/tools/advanced-tools.d.ts +32 -0
  100. package/dist/tools/advanced-tools.d.ts.map +1 -0
  101. package/dist/tools/advanced-tools.js +480 -0
  102. package/dist/tools/advanced-tools.js.map +1 -0
  103. package/dist/tools/change-tools.d.ts +76 -0
  104. package/dist/tools/change-tools.d.ts.map +1 -0
  105. package/dist/tools/change-tools.js +93 -0
  106. package/dist/tools/change-tools.js.map +1 -0
  107. package/dist/tools/context-tools.d.ts +68 -0
  108. package/dist/tools/context-tools.d.ts.map +1 -0
  109. package/dist/tools/context-tools.js +141 -0
  110. package/dist/tools/context-tools.js.map +1 -0
  111. package/dist/tools/debug-tools.d.ts +25 -0
  112. package/dist/tools/debug-tools.d.ts.map +1 -0
  113. package/dist/tools/debug-tools.js +286 -0
  114. package/dist/tools/debug-tools.js.map +1 -0
  115. package/dist/tools/evolving-tools.d.ts +23 -0
  116. package/dist/tools/evolving-tools.d.ts.map +1 -0
  117. package/dist/tools/evolving-tools.js +207 -0
  118. package/dist/tools/evolving-tools.js.map +1 -0
  119. package/dist/tools/flow-tools.d.ts +24 -0
  120. package/dist/tools/flow-tools.d.ts.map +1 -0
  121. package/dist/tools/flow-tools.js +265 -0
  122. package/dist/tools/flow-tools.js.map +1 -0
  123. package/dist/tools/graph-tools.d.ts +71 -0
  124. package/dist/tools/graph-tools.d.ts.map +1 -0
  125. package/dist/tools/graph-tools.js +165 -0
  126. package/dist/tools/graph-tools.js.map +1 -0
  127. package/dist/tools/memory-tools.d.ts +62 -0
  128. package/dist/tools/memory-tools.d.ts.map +1 -0
  129. package/dist/tools/memory-tools.js +195 -0
  130. package/dist/tools/memory-tools.js.map +1 -0
  131. package/dist/tools/smart-tools.d.ts +23 -0
  132. package/dist/tools/smart-tools.d.ts.map +1 -0
  133. package/dist/tools/smart-tools.js +482 -0
  134. package/dist/tools/smart-tools.js.map +1 -0
  135. package/dist/tools/snapshot-tools.d.ts +19 -0
  136. package/dist/tools/snapshot-tools.d.ts.map +1 -0
  137. package/dist/tools/snapshot-tools.js +149 -0
  138. package/dist/tools/snapshot-tools.js.map +1 -0
  139. package/dist/types.d.ts +181 -0
  140. package/dist/types.d.ts.map +1 -0
  141. package/dist/types.js +45 -0
  142. package/dist/types.js.map +1 -0
  143. package/dist/utils/logger.d.ts +59 -0
  144. package/dist/utils/logger.d.ts.map +1 -0
  145. package/dist/utils/logger.js +142 -0
  146. package/dist/utils/logger.js.map +1 -0
  147. package/dist/utils/token-counter.d.ts +51 -0
  148. package/dist/utils/token-counter.d.ts.map +1 -0
  149. package/dist/utils/token-counter.js +181 -0
  150. package/dist/utils/token-counter.js.map +1 -0
  151. package/install.ps1 +321 -0
  152. package/install.sh +345 -0
  153. package/package.json +94 -0
  154. package/setup.bat +62 -0
@@ -0,0 +1,165 @@
1
+ /**
2
+ * AI Mind Map — Knowledge Graph MCP Tools
3
+ *
4
+ * Registers all knowledge-graph-related tools on the MCP server.
5
+ * Each tool returns structured JSON data wrapped in the standard
6
+ * MCP text-content envelope.
7
+ */
8
+ import { z } from 'zod';
9
+ /** Simple 4-chars-per-token estimator used as default. */
10
+ const defaultEstimator = {
11
+ estimate: (text) => Math.ceil(text.length / 4),
12
+ };
13
+ // ============================================================
14
+ // Helpers
15
+ // ============================================================
16
+ /**
17
+ * Wrap a ToolResult in the MCP text-content format.
18
+ */
19
+ function mcpText(result) {
20
+ return {
21
+ content: [{ type: 'text', text: JSON.stringify(result) }],
22
+ };
23
+ }
24
+ /**
25
+ * Build a successful ToolResult.
26
+ */
27
+ function ok(data, estimator) {
28
+ const serialised = JSON.stringify(data);
29
+ const tokens = estimator.estimate(serialised);
30
+ return { success: true, data, tokenCount: tokens, tokensSaved: 0 };
31
+ }
32
+ /**
33
+ * Build an error ToolResult.
34
+ */
35
+ function fail(message) {
36
+ return { success: false, data: null, tokenCount: 0, tokensSaved: 0, message };
37
+ }
38
+ // ============================================================
39
+ // Node type enum values for Zod
40
+ // ============================================================
41
+ const NODE_TYPES = [
42
+ 'file', 'function', 'class', 'method', 'interface', 'type_alias',
43
+ 'enum', 'variable', 'constant', 'module', 'namespace', 'property',
44
+ 'constructor', 'decorator', 'route', 'component', 'hook', 'test', 'config',
45
+ ];
46
+ // ============================================================
47
+ // Registration
48
+ // ============================================================
49
+ /**
50
+ * Register all Knowledge Graph tools on the given MCP server.
51
+ *
52
+ * @param server The MCP server instance.
53
+ * @param graph Concrete knowledge-graph implementation.
54
+ * @param estimator Optional token estimator (defaults to 4-char heuristic).
55
+ */
56
+ export function registerGraphTools(server, graph, estimator = defaultEstimator) {
57
+ // ── mindmap_search ──────────────────────────────────────────
58
+ server.tool('mindmap_search', 'Search the codebase by symbol name, type, or free-text query. Returns matching nodes with their signatures.', {
59
+ query: z.string().describe('Search query (name, keyword, or free text)'),
60
+ type: z.enum(NODE_TYPES).optional().describe('Optional node-type filter'),
61
+ limit: z.number().int().min(1).max(100).default(20).describe('Max results to return'),
62
+ }, async ({ query, type, limit }) => {
63
+ try {
64
+ const nodes = graph.search(query, type, limit);
65
+ return mcpText(ok(nodes, estimator));
66
+ }
67
+ catch (err) {
68
+ const msg = err instanceof Error ? err.message : String(err);
69
+ return mcpText(fail(`Search failed: ${msg}`));
70
+ }
71
+ });
72
+ // ── mindmap_get_structure ───────────────────────────────────
73
+ server.tool('mindmap_get_structure', 'Get the project architecture overview — file tree with top-level symbols per file.', {
74
+ depth: z
75
+ .number()
76
+ .int()
77
+ .min(1)
78
+ .max(3)
79
+ .default(2)
80
+ .describe('Directory tree depth (1-3)'),
81
+ }, async ({ depth }) => {
82
+ try {
83
+ const structure = graph.getStructure(depth);
84
+ return mcpText(ok(structure, estimator));
85
+ }
86
+ catch (err) {
87
+ const msg = err instanceof Error ? err.message : String(err);
88
+ return mcpText(fail(`Get structure failed: ${msg}`));
89
+ }
90
+ });
91
+ // ── mindmap_trace_dependencies ──────────────────────────────
92
+ server.tool('mindmap_trace_dependencies', 'Trace the dependency chain of a symbol — who calls it, what it calls, or both.', {
93
+ symbolName: z.string().describe('Qualified or simple symbol name'),
94
+ direction: z
95
+ .enum(['callers', 'callees', 'both'])
96
+ .default('both')
97
+ .describe('Direction to trace'),
98
+ depth: z
99
+ .number()
100
+ .int()
101
+ .min(1)
102
+ .max(10)
103
+ .default(3)
104
+ .describe('Max depth of traversal'),
105
+ }, async ({ symbolName, direction, depth }) => {
106
+ try {
107
+ const result = graph.traceDependencies(symbolName, direction, depth);
108
+ return mcpText(ok(result, estimator));
109
+ }
110
+ catch (err) {
111
+ const msg = err instanceof Error ? err.message : String(err);
112
+ return mcpText(fail(`Trace dependencies failed: ${msg}`));
113
+ }
114
+ });
115
+ // ── mindmap_get_signature ───────────────────────────────────
116
+ server.tool('mindmap_get_signature', 'Get the full signature of a function or class (parameters, return type, doc comment) — without the body.', {
117
+ symbolName: z.string().describe('Name of the symbol to look up'),
118
+ filePath: z
119
+ .string()
120
+ .optional()
121
+ .describe('Optional file path to disambiguate'),
122
+ }, async ({ symbolName, filePath }) => {
123
+ try {
124
+ const result = graph.getSignature(symbolName, filePath);
125
+ if (!result) {
126
+ return mcpText(fail(`Symbol not found: ${symbolName}`));
127
+ }
128
+ return mcpText(ok(result, estimator));
129
+ }
130
+ catch (err) {
131
+ const msg = err instanceof Error ? err.message : String(err);
132
+ return mcpText(fail(`Get signature failed: ${msg}`));
133
+ }
134
+ });
135
+ // ── mindmap_find_references ─────────────────────────────────
136
+ server.tool('mindmap_find_references', 'Find every location where a symbol is referenced across the codebase.', {
137
+ symbolName: z.string().describe('Name of the symbol to find references for'),
138
+ }, async ({ symbolName }) => {
139
+ try {
140
+ const result = graph.findReferences(symbolName);
141
+ return mcpText(ok(result, estimator));
142
+ }
143
+ catch (err) {
144
+ const msg = err instanceof Error ? err.message : String(err);
145
+ return mcpText(fail(`Find references failed: ${msg}`));
146
+ }
147
+ });
148
+ // ── mindmap_get_file_map ────────────────────────────────────
149
+ server.tool('mindmap_get_file_map', 'Get the structural map of a specific file — all symbols with their signatures, visibility, and line ranges.', {
150
+ filePath: z.string().describe('Relative or absolute path to the file'),
151
+ }, async ({ filePath }) => {
152
+ try {
153
+ const result = graph.getFileMap(filePath);
154
+ if (!result) {
155
+ return mcpText(fail(`File not found in index: ${filePath}`));
156
+ }
157
+ return mcpText(ok(result, estimator));
158
+ }
159
+ catch (err) {
160
+ const msg = err instanceof Error ? err.message : String(err);
161
+ return mcpText(fail(`Get file map failed: ${msg}`));
162
+ }
163
+ });
164
+ }
165
+ //# sourceMappingURL=graph-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-tools.js","sourceRoot":"","sources":["../../src/tools/graph-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * AI Mind Map — Memory MCP Tools
3
+ *
4
+ * Registers all memory-related tools on the MCP server.
5
+ * Covers both episodic memories and architectural decisions.
6
+ */
7
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
8
+ import type { Memory, MemoryCategory, Decision, SessionSummary } from '../types.js';
9
+ /**
10
+ * Minimal interface expected of the Memory Store subsystem.
11
+ */
12
+ export interface IMemoryStore {
13
+ /** Retrieve memories matching a query, ranked by importance. */
14
+ recall(query: string, category?: MemoryCategory, limit?: number): Memory[];
15
+ /** Store a new memory. Returns the created memory. */
16
+ remember(params: {
17
+ content: string;
18
+ category: MemoryCategory;
19
+ tags: string[];
20
+ relatedFiles: string[];
21
+ importance?: number;
22
+ sessionId: string;
23
+ source: 'agent' | 'user' | 'auto';
24
+ }): Memory;
25
+ /** Retrieve architectural decisions. */
26
+ getDecisions(params: {
27
+ status?: 'active' | 'all';
28
+ query?: string;
29
+ }): Decision[];
30
+ /** Record a new decision. Returns the created decision. */
31
+ decide(params: {
32
+ title: string;
33
+ description: string;
34
+ rationale: string;
35
+ alternatives: string[];
36
+ consequences: string[];
37
+ relatedFiles: string[];
38
+ tags: string[];
39
+ decidedBy: string;
40
+ }): Decision;
41
+ /** Get summaries of previous AI sessions, most recent first. */
42
+ getSessionSummaries(count: number): SessionSummary[];
43
+ }
44
+ /**
45
+ * Provides the current session ID for tagging new memories.
46
+ */
47
+ export interface ISessionProvider {
48
+ currentSessionId(): string;
49
+ }
50
+ export interface ITokenEstimator {
51
+ estimate(text: string): number;
52
+ }
53
+ /**
54
+ * Register all Memory tools on the given MCP server.
55
+ *
56
+ * @param server The MCP server instance.
57
+ * @param store Concrete memory-store implementation.
58
+ * @param session Provides the current session ID.
59
+ * @param estimator Optional token estimator.
60
+ */
61
+ export declare function registerMemoryTools(server: McpServer, store: IMemoryStore, session: ISessionProvider, estimator?: ITokenEstimator): void;
62
+ //# sourceMappingURL=memory-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-tools.d.ts","sourceRoot":"","sources":["../../src/tools/memory-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EACV,MAAM,EACN,cAAc,EACd,QAAQ,EACR,cAAc,EAEf,MAAM,aAAa,CAAC;AAMrB;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gEAAgE;IAChE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE3E,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,cAAc,CAAC;QACzB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;KACnC,GAAG,MAAM,CAAC;IAEX,wCAAwC;IACxC,YAAY,CAAC,MAAM,EAAE;QACnB,MAAM,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,QAAQ,EAAE,CAAC;IAEf,2DAA2D;IAC3D,MAAM,CAAC,MAAM,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,QAAQ,CAAC;IAEb,gEAAgE;IAChE,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,IAAI,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;AA+CD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,gBAAgB,EACzB,SAAS,GAAE,eAAkC,GAC5C,IAAI,CAuLN"}
@@ -0,0 +1,195 @@
1
+ /**
2
+ * AI Mind Map — Memory MCP Tools
3
+ *
4
+ * Registers all memory-related tools on the MCP server.
5
+ * Covers both episodic memories and architectural decisions.
6
+ */
7
+ import { z } from 'zod';
8
+ const defaultEstimator = {
9
+ estimate: (text) => Math.ceil(text.length / 4),
10
+ };
11
+ // ============================================================
12
+ // Memory category enum for Zod
13
+ // ============================================================
14
+ const MEMORY_CATEGORIES = [
15
+ 'architecture',
16
+ 'convention',
17
+ 'decision',
18
+ 'gotcha',
19
+ 'dependency',
20
+ 'workflow',
21
+ 'context',
22
+ 'preference',
23
+ 'lesson_learned',
24
+ 'todo',
25
+ ];
26
+ // ============================================================
27
+ // Helpers
28
+ // ============================================================
29
+ function mcpText(result) {
30
+ return {
31
+ content: [{ type: 'text', text: JSON.stringify(result) }],
32
+ };
33
+ }
34
+ function ok(data, estimator) {
35
+ const serialised = JSON.stringify(data);
36
+ const tokens = estimator.estimate(serialised);
37
+ return { success: true, data, tokenCount: tokens, tokensSaved: 0 };
38
+ }
39
+ function fail(message) {
40
+ return { success: false, data: null, tokenCount: 0, tokensSaved: 0, message };
41
+ }
42
+ // ============================================================
43
+ // Registration
44
+ // ============================================================
45
+ /**
46
+ * Register all Memory tools on the given MCP server.
47
+ *
48
+ * @param server The MCP server instance.
49
+ * @param store Concrete memory-store implementation.
50
+ * @param session Provides the current session ID.
51
+ * @param estimator Optional token estimator.
52
+ */
53
+ export function registerMemoryTools(server, store, session, estimator = defaultEstimator) {
54
+ // ── mindmap_recall ──────────────────────────────────────────
55
+ server.tool('mindmap_recall', 'Retrieve relevant memories for the current task, ranked by importance.', {
56
+ query: z.string().describe('Describe what you need to recall'),
57
+ category: z
58
+ .enum(MEMORY_CATEGORIES)
59
+ .optional()
60
+ .describe('Optional category filter'),
61
+ limit: z
62
+ .number()
63
+ .int()
64
+ .min(1)
65
+ .max(50)
66
+ .default(10)
67
+ .describe('Max memories to return'),
68
+ }, async ({ query, category, limit }) => {
69
+ try {
70
+ const memories = store.recall(query, category, limit);
71
+ return mcpText(ok(memories, estimator));
72
+ }
73
+ catch (err) {
74
+ const msg = err instanceof Error ? err.message : String(err);
75
+ return mcpText(fail(`Recall failed: ${msg}`));
76
+ }
77
+ });
78
+ // ── mindmap_remember ────────────────────────────────────────
79
+ server.tool('mindmap_remember', 'Store an important fact, decision, or convention for future reference.', {
80
+ content: z.string().min(1).describe('The fact or insight to remember'),
81
+ category: z.enum(MEMORY_CATEGORIES).describe('Memory category'),
82
+ tags: z.array(z.string()).describe('Tags for retrieval'),
83
+ relatedFiles: z
84
+ .array(z.string())
85
+ .describe('File paths this memory relates to'),
86
+ importance: z
87
+ .number()
88
+ .min(0)
89
+ .max(1)
90
+ .optional()
91
+ .describe('Importance score 0-1 (default: auto-calculated)'),
92
+ }, async ({ content, category, tags, relatedFiles, importance }) => {
93
+ try {
94
+ const memory = store.remember({
95
+ content,
96
+ category,
97
+ tags,
98
+ relatedFiles,
99
+ importance,
100
+ sessionId: session.currentSessionId(),
101
+ source: 'agent',
102
+ });
103
+ return mcpText(ok({
104
+ id: memory.id,
105
+ message: 'Memory stored successfully',
106
+ category: memory.category,
107
+ importance: memory.importance,
108
+ }, estimator));
109
+ }
110
+ catch (err) {
111
+ const msg = err instanceof Error ? err.message : String(err);
112
+ return mcpText(fail(`Remember failed: ${msg}`));
113
+ }
114
+ });
115
+ // ── mindmap_get_decisions ───────────────────────────────────
116
+ server.tool('mindmap_get_decisions', 'Retrieve architectural and technical decisions. Useful for understanding why things were built a certain way.', {
117
+ status: z
118
+ .enum(['active', 'all'])
119
+ .optional()
120
+ .default('active')
121
+ .describe("Filter by status: 'active' (default) or 'all'"),
122
+ query: z
123
+ .string()
124
+ .optional()
125
+ .describe('Optional search query to filter decisions'),
126
+ }, async ({ status, query }) => {
127
+ try {
128
+ const decisions = store.getDecisions({ status, query });
129
+ return mcpText(ok(decisions, estimator));
130
+ }
131
+ catch (err) {
132
+ const msg = err instanceof Error ? err.message : String(err);
133
+ return mcpText(fail(`Get decisions failed: ${msg}`));
134
+ }
135
+ });
136
+ // ── mindmap_decide ──────────────────────────────────────────
137
+ server.tool('mindmap_decide', 'Record a new architectural or technical decision with rationale, alternatives, and consequences.', {
138
+ title: z.string().min(1).describe('Short title for the decision'),
139
+ description: z.string().min(1).describe('Detailed description'),
140
+ rationale: z.string().min(1).describe('Why this option was chosen'),
141
+ alternatives: z
142
+ .array(z.string())
143
+ .describe('Other options that were considered'),
144
+ consequences: z
145
+ .array(z.string())
146
+ .describe('Known trade-offs or downstream effects'),
147
+ relatedFiles: z
148
+ .array(z.string())
149
+ .describe('Files affected by this decision'),
150
+ tags: z.array(z.string()).describe('Tags for retrieval'),
151
+ }, async ({ title, description, rationale, alternatives, consequences, relatedFiles, tags, }) => {
152
+ try {
153
+ const decision = store.decide({
154
+ title,
155
+ description,
156
+ rationale,
157
+ alternatives,
158
+ consequences,
159
+ relatedFiles,
160
+ tags,
161
+ decidedBy: session.currentSessionId(),
162
+ });
163
+ return mcpText(ok({
164
+ id: decision.id,
165
+ message: 'Decision recorded successfully',
166
+ title: decision.title,
167
+ status: decision.status,
168
+ }, estimator));
169
+ }
170
+ catch (err) {
171
+ const msg = err instanceof Error ? err.message : String(err);
172
+ return mcpText(fail(`Decide failed: ${msg}`));
173
+ }
174
+ });
175
+ // ── mindmap_session_summary ─────────────────────────────────
176
+ server.tool('mindmap_session_summary', 'Get summaries of previous AI sessions — what was done, what changed, and what was decided.', {
177
+ count: z
178
+ .number()
179
+ .int()
180
+ .min(1)
181
+ .max(20)
182
+ .default(3)
183
+ .describe('Number of recent sessions to return'),
184
+ }, async ({ count }) => {
185
+ try {
186
+ const summaries = store.getSessionSummaries(count);
187
+ return mcpText(ok(summaries, estimator));
188
+ }
189
+ catch (err) {
190
+ const msg = err instanceof Error ? err.message : String(err);
191
+ return mcpText(fail(`Session summary failed: ${msg}`));
192
+ }
193
+ });
194
+ }
195
+ //# sourceMappingURL=memory-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-tools.js","sourceRoot":"","sources":["../../src/tools/memory-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * AI Mind Map — Smart MCP Tools
3
+ *
4
+ * The "never read files again" toolkit. These tools aggregate multiple
5
+ * data sources into single, rich responses so the AI never needs to
6
+ * chain tool calls or fall back to reading raw files.
7
+ *
8
+ * Tools:
9
+ * - mindmap_explain — Complete intelligence on any symbol in 1 call
10
+ * - mindmap_git_changes — Git-aware symbol-level change detection
11
+ * - mindmap_smart_search — Rich contextual search with full details
12
+ */
13
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
14
+ import type { MindMapConfig } from '../types.js';
15
+ import { KnowledgeGraph } from '../knowledge-graph/graph.js';
16
+ export interface ITokenEstimator {
17
+ estimate(text: string): number;
18
+ }
19
+ /**
20
+ * Register Smart tools — the "never read files" toolkit.
21
+ */
22
+ export declare function registerSmartTools(server: McpServer, graph: KnowledgeGraph, config: MindMapConfig, estimator?: ITokenEstimator): void;
23
+ //# sourceMappingURL=smart-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-tools.d.ts","sourceRoot":"","sources":["../../src/tools/smart-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAc,aAAa,EAAwB,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAO7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;AAmDD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,aAAa,EACrB,SAAS,GAAE,eAAkC,GAC5C,IAAI,CA2fN"}