regen-koi-mcp 1.0.3 → 1.0.5

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.
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Graph Tool - MCP Tool for Querying Regen Code Knowledge Graph
3
+ *
4
+ * Provides an MCP tool interface for querying the Apache AGE graph database
5
+ * containing Regen Network code entities and relationships.
6
+ */
7
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
8
+ export declare const GRAPH_TOOL: Tool;
9
+ /**
10
+ * Execute the query_code_graph tool
11
+ */
12
+ export declare function executeGraphTool(args: any): Promise<{
13
+ content: {
14
+ type: string;
15
+ text: string;
16
+ }[];
17
+ }>;
18
+ /**
19
+ * Export for easy integration into MCP server
20
+ */
21
+ declare const _default: {
22
+ tool: {
23
+ [x: string]: unknown;
24
+ name: string;
25
+ inputSchema: {
26
+ [x: string]: unknown;
27
+ type: "object";
28
+ properties?: {
29
+ [x: string]: unknown;
30
+ } | undefined;
31
+ required?: string[] | undefined;
32
+ };
33
+ title?: string | undefined;
34
+ description?: string | undefined;
35
+ outputSchema?: {
36
+ [x: string]: unknown;
37
+ type: "object";
38
+ properties?: {
39
+ [x: string]: unknown;
40
+ } | undefined;
41
+ required?: string[] | undefined;
42
+ } | undefined;
43
+ annotations?: {
44
+ [x: string]: unknown;
45
+ title?: string | undefined;
46
+ readOnlyHint?: boolean | undefined;
47
+ destructiveHint?: boolean | undefined;
48
+ idempotentHint?: boolean | undefined;
49
+ openWorldHint?: boolean | undefined;
50
+ } | undefined;
51
+ _meta?: {
52
+ [x: string]: unknown;
53
+ } | undefined;
54
+ icons?: {
55
+ [x: string]: unknown;
56
+ src: string;
57
+ mimeType?: string | undefined;
58
+ sizes?: string[] | undefined;
59
+ }[] | undefined;
60
+ };
61
+ execute: typeof executeGraphTool;
62
+ };
63
+ export default _default;
64
+ //# sourceMappingURL=graph_tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph_tool.d.ts","sourceRoot":"","sources":["../src/graph_tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAe1D,eAAO,MAAM,UAAU,EAAE,IAuCxB,CAAC;AAgBF;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,GAAG;;;;;GAia/C;AAgID;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACH,wBAGE"}
@@ -0,0 +1,546 @@
1
+ /**
2
+ * Graph Tool - MCP Tool for Querying Regen Code Knowledge Graph
3
+ *
4
+ * Provides an MCP tool interface for querying the Apache AGE graph database
5
+ * containing Regen Network code entities and relationships.
6
+ */
7
+ import { createGraphClient, } from './graph_client.js';
8
+ // Tool definition following the pattern from tools.ts
9
+ export const GRAPH_TOOL = {
10
+ name: 'query_code_graph',
11
+ description: 'Query the Regen code knowledge graph to find code entities (Classes, Functions, Sensors, Handlers, Interfaces) and their relationships across repositories',
12
+ inputSchema: {
13
+ type: 'object',
14
+ properties: {
15
+ query_type: {
16
+ type: 'string',
17
+ enum: [
18
+ 'keeper_for_msg', 'msgs_for_keeper', 'docs_mentioning', 'entities_in_doc',
19
+ 'related_entities', 'find_by_type', 'search_entities', 'list_repos',
20
+ // RAPTOR module queries
21
+ 'list_modules', 'get_module', 'search_modules', 'module_entities', 'module_for_entity'
22
+ ],
23
+ description: 'Type of graph query: find_by_type (get all Sensors, Handlers, etc.), search_entities (search by name), list_repos (show indexed repositories), list_modules (show all modules), search_modules (search modules by keyword)'
24
+ },
25
+ entity_name: {
26
+ type: 'string',
27
+ description: 'Name or search term (e.g., "MsgCreateBatch", "Sensor", "Twitter")'
28
+ },
29
+ entity_type: {
30
+ type: 'string',
31
+ description: 'Entity type for find_by_type query (e.g., "Sensor", "Handler", "Class", "Interface", "Function")'
32
+ },
33
+ doc_path: {
34
+ type: 'string',
35
+ description: 'Document path for doc-related queries'
36
+ },
37
+ repo_name: {
38
+ type: 'string',
39
+ description: 'Repository name to filter by (e.g., "koi-sensors", "GAIA")'
40
+ },
41
+ module_name: {
42
+ type: 'string',
43
+ description: 'Module name for module-related queries (e.g., "ecocredit", "cli", "sensors")'
44
+ }
45
+ },
46
+ required: ['query_type']
47
+ }
48
+ };
49
+ /**
50
+ * Execute the query_code_graph tool
51
+ */
52
+ export async function executeGraphTool(args) {
53
+ const { query_type, entity_name, doc_path } = args;
54
+ // Validate required parameters
55
+ if (!query_type) {
56
+ return {
57
+ content: [{
58
+ type: 'text',
59
+ text: 'Error: query_type is required'
60
+ }]
61
+ };
62
+ }
63
+ // Create graph client
64
+ const client = createGraphClient();
65
+ try {
66
+ const startTime = Date.now();
67
+ // Execute query based on type
68
+ let markdownSummary = '';
69
+ let hits = [];
70
+ let total_results = 0;
71
+ switch (query_type) {
72
+ case 'keeper_for_msg':
73
+ if (!entity_name) {
74
+ return {
75
+ content: [{
76
+ type: 'text',
77
+ text: 'Error: entity_name is required for keeper_for_msg query'
78
+ }]
79
+ };
80
+ }
81
+ const keeperResults = await client.getKeeperForMsg(entity_name);
82
+ total_results = keeperResults.length;
83
+ markdownSummary = formatKeeperForMsgResults(entity_name, keeperResults);
84
+ hits = keeperResults.map(r => ({
85
+ entity_type: 'Keeper',
86
+ entity_name: r.keeper_name,
87
+ file_path: r.keeper_file_path,
88
+ line_number: r.keeper_line_number,
89
+ content_preview: `${r.keeper_name} handles ${entity_name}`,
90
+ edges: [{ type: 'HANDLES', target: entity_name }]
91
+ }));
92
+ break;
93
+ case 'msgs_for_keeper':
94
+ if (!entity_name) {
95
+ return {
96
+ content: [{
97
+ type: 'text',
98
+ text: 'Error: entity_name is required for msgs_for_keeper query'
99
+ }]
100
+ };
101
+ }
102
+ const msgResults = await client.getMsgsForKeeper(entity_name);
103
+ total_results = msgResults.length;
104
+ markdownSummary = formatMsgsForKeeperResults(entity_name, msgResults);
105
+ hits = msgResults.map(r => ({
106
+ entity_type: 'Msg',
107
+ entity_name: r.msg_name,
108
+ content_preview: r.msg_package ? `${r.msg_name} (${r.msg_package})` : r.msg_name,
109
+ edges: [{ type: 'HANDLED_BY', target: entity_name }]
110
+ }));
111
+ break;
112
+ case 'docs_mentioning':
113
+ if (!entity_name) {
114
+ return {
115
+ content: [{
116
+ type: 'text',
117
+ text: 'Error: entity_name is required for docs_mentioning query'
118
+ }]
119
+ };
120
+ }
121
+ const docResults = await client.getDocsMentioning(entity_name);
122
+ total_results = docResults.length;
123
+ markdownSummary = formatDocsMentioningResults(entity_name, docResults);
124
+ hits = docResults.map(r => ({
125
+ entity_type: 'Document',
126
+ entity_name: r.title,
127
+ file_path: r.file_path,
128
+ content_preview: `Document mentions ${entity_name}`,
129
+ edges: [{ type: 'MENTIONS', target: entity_name }]
130
+ }));
131
+ break;
132
+ case 'entities_in_doc':
133
+ if (!doc_path) {
134
+ return {
135
+ content: [{
136
+ type: 'text',
137
+ text: 'Error: doc_path is required for entities_in_doc query'
138
+ }]
139
+ };
140
+ }
141
+ const entityResults = await client.getEntitiesInDoc(doc_path);
142
+ total_results = entityResults.length;
143
+ markdownSummary = formatEntitiesInDocResults(doc_path, entityResults);
144
+ hits = entityResults.map(r => ({
145
+ entity_type: r.type,
146
+ entity_name: r.name,
147
+ content_preview: `${r.type}: ${r.name}`,
148
+ edges: [{ type: 'MENTIONED_IN', target: doc_path }]
149
+ }));
150
+ break;
151
+ case 'related_entities':
152
+ if (!entity_name) {
153
+ return {
154
+ content: [{
155
+ type: 'text',
156
+ text: 'Error: entity_name is required for related_entities query'
157
+ }]
158
+ };
159
+ }
160
+ const relatedResults = await client.getRelatedEntities(entity_name);
161
+ total_results = relatedResults.length;
162
+ markdownSummary = formatRelatedEntitiesResults(entity_name, relatedResults);
163
+ hits = relatedResults.map(r => ({
164
+ entity_type: r.type,
165
+ entity_name: r.name,
166
+ score: r.shared_docs ? r.shared_docs / 10 : 0.5, // Normalize score
167
+ content_preview: `${r.type}: ${r.name} (${r.shared_docs || 0} shared docs)`,
168
+ edges: [{ type: 'RELATED_VIA_DOCS', target: entity_name }]
169
+ }));
170
+ break;
171
+ case 'find_by_type':
172
+ const entityType = args.entity_type;
173
+ if (!entityType) {
174
+ return {
175
+ content: [{
176
+ type: 'text',
177
+ text: 'Error: entity_type is required for find_by_type query'
178
+ }]
179
+ };
180
+ }
181
+ const typeResults = await client.getEntitiesByType(entityType);
182
+ total_results = typeResults.length;
183
+ markdownSummary = `# Entities of Type: ${entityType}\n\nFound **${total_results}** ${entityType}(s):\n\n`;
184
+ typeResults.forEach((r, i) => {
185
+ markdownSummary += `## ${i + 1}. ${r.name}\n`;
186
+ markdownSummary += `- **File:** \`${r.file_path || 'N/A'}\`\n`;
187
+ if (r.line_number)
188
+ markdownSummary += `- **Line:** ${r.line_number}\n`;
189
+ markdownSummary += '\n';
190
+ });
191
+ hits = typeResults.map(r => ({
192
+ entity_type: r.type,
193
+ entity_name: r.name,
194
+ file_path: r.file_path,
195
+ line_number: r.line_number,
196
+ content_preview: r.docstring || `${r.type}: ${r.name}`
197
+ }));
198
+ break;
199
+ case 'search_entities':
200
+ const searchTerm = entity_name;
201
+ if (!searchTerm) {
202
+ return {
203
+ content: [{
204
+ type: 'text',
205
+ text: 'Error: entity_name (search term) is required for search_entities query'
206
+ }]
207
+ };
208
+ }
209
+ const searchResults = await client.findEntitiesByName(searchTerm);
210
+ total_results = searchResults.length;
211
+ markdownSummary = `# Search Results: "${searchTerm}"\n\nFound **${total_results}** matching entities:\n\n`;
212
+ searchResults.forEach((r, i) => {
213
+ markdownSummary += `## ${i + 1}. ${r.name} (${r.type})\n`;
214
+ markdownSummary += `- **Repository:** ${r.repo || 'N/A'}\n`;
215
+ markdownSummary += `- **File:** \`${r.file_path || 'N/A'}\`\n`;
216
+ if (r.line_number)
217
+ markdownSummary += `- **Line:** ${r.line_number}\n`;
218
+ markdownSummary += '\n';
219
+ });
220
+ hits = searchResults.map((r) => ({
221
+ entity_type: r.type,
222
+ entity_name: r.name,
223
+ file_path: r.file_path,
224
+ line_number: r.line_number,
225
+ content_preview: r.docstring || `${r.type}: ${r.name}`
226
+ }));
227
+ break;
228
+ case 'list_repos':
229
+ const repoResults = await client.getRepositories();
230
+ total_results = repoResults.length;
231
+ markdownSummary = `# Indexed Repositories\n\nFound **${total_results}** repositories:\n\n`;
232
+ markdownSummary += '| Repository | Entity Count |\n|------------|-------------|\n';
233
+ repoResults.forEach(r => {
234
+ markdownSummary += `| ${r.name} | ${r.entity_count} |\n`;
235
+ });
236
+ hits = repoResults.map(r => ({
237
+ entity_type: 'Repository',
238
+ entity_name: r.name,
239
+ content_preview: `${r.entity_count} entities`
240
+ }));
241
+ break;
242
+ // ============= RAPTOR Module Queries =============
243
+ case 'list_modules':
244
+ const moduleResults = await client.getAllModules();
245
+ total_results = moduleResults.length;
246
+ markdownSummary = `# All Modules (RAPTOR)\n\nFound **${total_results}** modules:\n\n`;
247
+ markdownSummary += '| Module | Repository | Path | Entities |\n|--------|------------|------|----------|\n';
248
+ moduleResults.forEach(m => {
249
+ markdownSummary += `| ${m.name} | ${m.repo} | ${m.path} | ${m.entity_count} |\n`;
250
+ });
251
+ hits = moduleResults.map(m => ({
252
+ entity_type: 'Module',
253
+ entity_name: m.name,
254
+ file_path: m.path,
255
+ content_preview: m.summary ? m.summary.substring(0, 200) + '...' : `${m.entity_count} entities in ${m.repo}`
256
+ }));
257
+ break;
258
+ case 'get_module':
259
+ const moduleName = args.module_name;
260
+ const repoFilter = args.repo_name;
261
+ if (!moduleName) {
262
+ return {
263
+ content: [{
264
+ type: 'text',
265
+ text: 'Error: module_name is required for get_module query'
266
+ }]
267
+ };
268
+ }
269
+ const moduleResult = await client.getModule(moduleName, repoFilter);
270
+ if (!moduleResult) {
271
+ markdownSummary = `# Module Not Found: ${moduleName}\n\nNo module named **${moduleName}** was found.\n`;
272
+ total_results = 0;
273
+ }
274
+ else {
275
+ total_results = 1;
276
+ markdownSummary = `# Module: ${moduleResult.name}\n\n`;
277
+ markdownSummary += `- **Repository:** ${moduleResult.repo}\n`;
278
+ markdownSummary += `- **Path:** \`${moduleResult.path}\`\n`;
279
+ markdownSummary += `- **Entity Count:** ${moduleResult.entity_count}\n\n`;
280
+ if (moduleResult.summary) {
281
+ markdownSummary += `## Summary\n\n${moduleResult.summary}\n`;
282
+ }
283
+ hits = [{
284
+ entity_type: 'Module',
285
+ entity_name: moduleResult.name,
286
+ file_path: moduleResult.path,
287
+ content_preview: moduleResult.summary || `${moduleResult.entity_count} entities`
288
+ }];
289
+ }
290
+ break;
291
+ case 'search_modules':
292
+ const searchPattern = entity_name;
293
+ if (!searchPattern) {
294
+ return {
295
+ content: [{
296
+ type: 'text',
297
+ text: 'Error: entity_name (search pattern) is required for search_modules query'
298
+ }]
299
+ };
300
+ }
301
+ const moduleSearchResults = await client.searchModules(searchPattern);
302
+ total_results = moduleSearchResults.length;
303
+ markdownSummary = `# Module Search: "${searchPattern}"\n\nFound **${total_results}** matching modules:\n\n`;
304
+ moduleSearchResults.forEach((m, i) => {
305
+ markdownSummary += `## ${i + 1}. ${m.name} (${m.repo})\n`;
306
+ markdownSummary += `- **Path:** \`${m.path}\`\n`;
307
+ markdownSummary += `- **Entities:** ${m.entity_count}\n`;
308
+ if (m.summary) {
309
+ markdownSummary += `\n${m.summary.substring(0, 300)}...\n`;
310
+ }
311
+ markdownSummary += '\n';
312
+ });
313
+ hits = moduleSearchResults.map(m => ({
314
+ entity_type: 'Module',
315
+ entity_name: m.name,
316
+ file_path: m.path,
317
+ content_preview: m.summary || `${m.entity_count} entities in ${m.repo}`
318
+ }));
319
+ break;
320
+ case 'module_entities':
321
+ const targetModule = args.module_name;
322
+ const targetRepo = args.repo_name;
323
+ if (!targetModule) {
324
+ return {
325
+ content: [{
326
+ type: 'text',
327
+ text: 'Error: module_name is required for module_entities query'
328
+ }]
329
+ };
330
+ }
331
+ const moduleEntities = await client.getModuleEntities(targetModule, targetRepo);
332
+ total_results = moduleEntities.length;
333
+ markdownSummary = `# Entities in Module: ${targetModule}\n\nFound **${total_results}** entities:\n\n`;
334
+ // Group by type
335
+ const byType = {};
336
+ moduleEntities.forEach(e => {
337
+ if (!byType[e.type])
338
+ byType[e.type] = [];
339
+ byType[e.type].push(e);
340
+ });
341
+ Object.keys(byType).forEach(type => {
342
+ markdownSummary += `## ${type}s (${byType[type].length})\n\n`;
343
+ byType[type].forEach(e => {
344
+ markdownSummary += `- **${e.name}**`;
345
+ if (e.file_path)
346
+ markdownSummary += ` (\`${e.file_path}\`)`;
347
+ markdownSummary += '\n';
348
+ });
349
+ markdownSummary += '\n';
350
+ });
351
+ hits = moduleEntities.map(e => ({
352
+ entity_type: e.type,
353
+ entity_name: e.name,
354
+ file_path: e.file_path,
355
+ line_number: e.line_number
356
+ }));
357
+ break;
358
+ case 'module_for_entity':
359
+ const entityToFind = entity_name;
360
+ if (!entityToFind) {
361
+ return {
362
+ content: [{
363
+ type: 'text',
364
+ text: 'Error: entity_name is required for module_for_entity query'
365
+ }]
366
+ };
367
+ }
368
+ const containingModule = await client.getModuleForEntity(entityToFind);
369
+ if (!containingModule) {
370
+ markdownSummary = `# Module for Entity: ${entityToFind}\n\nNo module found containing **${entityToFind}**.\n`;
371
+ total_results = 0;
372
+ hits = [];
373
+ }
374
+ else {
375
+ total_results = 1;
376
+ markdownSummary = `# Module for Entity: ${entityToFind}\n\n`;
377
+ markdownSummary += `**${entityToFind}** is part of the **${containingModule.name}** module.\n\n`;
378
+ markdownSummary += `- **Repository:** ${containingModule.repo}\n`;
379
+ markdownSummary += `- **Path:** \`${containingModule.path}\`\n`;
380
+ markdownSummary += `- **Entity Count:** ${containingModule.entity_count}\n\n`;
381
+ if (containingModule.summary) {
382
+ markdownSummary += `## Module Summary\n\n${containingModule.summary}\n`;
383
+ }
384
+ hits = [{
385
+ entity_type: 'Module',
386
+ entity_name: containingModule.name,
387
+ file_path: containingModule.path,
388
+ content_preview: containingModule.summary || `Contains ${entityToFind}`
389
+ }];
390
+ }
391
+ break;
392
+ default:
393
+ return {
394
+ content: [{
395
+ type: 'text',
396
+ text: `Error: Unknown query_type: ${query_type}`
397
+ }]
398
+ };
399
+ }
400
+ const duration_ms = Date.now() - startTime;
401
+ // Return response - MCP only supports type: 'text'
402
+ // Include JSON as a code block in the markdown for eval harness
403
+ const jsonData = JSON.stringify({
404
+ hits,
405
+ metadata: {
406
+ query_type,
407
+ entity_name: entity_name || doc_path,
408
+ duration_ms,
409
+ total_results
410
+ }
411
+ }, null, 2);
412
+ return {
413
+ content: [
414
+ {
415
+ type: 'text',
416
+ text: markdownSummary + '\n\n---\n\n<details>\n<summary>Raw JSON (for eval harness)</summary>\n\n```json\n' + jsonData + '\n```\n</details>'
417
+ }
418
+ ]
419
+ };
420
+ }
421
+ catch (error) {
422
+ console.error('[query_code_graph] Error:', error);
423
+ return {
424
+ content: [{
425
+ type: 'text',
426
+ text: `Error querying graph: ${error instanceof Error ? error.message : 'Unknown error'}`
427
+ }]
428
+ };
429
+ }
430
+ finally {
431
+ await client.close();
432
+ }
433
+ }
434
+ /**
435
+ * Format keeper_for_msg results as markdown
436
+ */
437
+ function formatKeeperForMsgResults(msgName, results) {
438
+ if (results.length === 0) {
439
+ return `# Keeper for Message: ${msgName}\n\nNo Keeper found that handles **${msgName}**.\n\n` +
440
+ `This could mean:\n` +
441
+ `- The message hasn't been indexed yet\n` +
442
+ `- The HANDLES relationship hasn't been created\n` +
443
+ `- The message name is incorrect\n`;
444
+ }
445
+ let markdown = `# Keeper for Message: ${msgName}\n\n`;
446
+ markdown += `Found **${results.length}** Keeper(s) that handle **${msgName}**:\n\n`;
447
+ results.forEach((result, index) => {
448
+ markdown += `## ${index + 1}. ${result.keeper_name}\n\n`;
449
+ markdown += `- **File:** \`${result.keeper_file_path}\`\n`;
450
+ markdown += `- **Line:** ${result.keeper_line_number}\n`;
451
+ markdown += `- **Relationship:** HANDLES → ${msgName}\n\n`;
452
+ });
453
+ return markdown;
454
+ }
455
+ /**
456
+ * Format msgs_for_keeper results as markdown
457
+ */
458
+ function formatMsgsForKeeperResults(keeperName, results) {
459
+ if (results.length === 0) {
460
+ return `# Messages Handled by: ${keeperName}\n\n**${keeperName}** doesn't handle any messages (or hasn't been indexed yet).\n`;
461
+ }
462
+ let markdown = `# Messages Handled by: ${keeperName}\n\n`;
463
+ markdown += `**${keeperName}** handles **${results.length}** message(s):\n\n`;
464
+ results.forEach((result, index) => {
465
+ markdown += `${index + 1}. **${result.msg_name}**`;
466
+ if (result.msg_package) {
467
+ markdown += ` (package: ${result.msg_package})`;
468
+ }
469
+ markdown += `\n`;
470
+ });
471
+ markdown += `\n`;
472
+ return markdown;
473
+ }
474
+ /**
475
+ * Format docs_mentioning results as markdown
476
+ */
477
+ function formatDocsMentioningResults(entityName, results) {
478
+ if (results.length === 0) {
479
+ return `# Documents Mentioning: ${entityName}\n\nNo documents found that mention **${entityName}**.\n\n` +
480
+ `This could mean:\n` +
481
+ `- Documents haven't been indexed yet\n` +
482
+ `- MENTIONS relationships haven't been created\n` +
483
+ `- The entity name is incorrect\n`;
484
+ }
485
+ let markdown = `# Documents Mentioning: ${entityName}\n\n`;
486
+ markdown += `Found **${results.length}** document(s) that mention **${entityName}**:\n\n`;
487
+ results.forEach((result, index) => {
488
+ markdown += `${index + 1}. **${result.title}**\n`;
489
+ markdown += ` - Path: \`${result.file_path}\`\n\n`;
490
+ });
491
+ return markdown;
492
+ }
493
+ /**
494
+ * Format entities_in_doc results as markdown
495
+ */
496
+ function formatEntitiesInDocResults(docPath, results) {
497
+ if (results.length === 0) {
498
+ return `# Entities in Document: ${docPath}\n\nNo entities found in this document.\n`;
499
+ }
500
+ let markdown = `# Entities in Document\n\n`;
501
+ markdown += `**Path:** \`${docPath}\`\n\n`;
502
+ markdown += `Found **${results.length}** entities mentioned in this document:\n\n`;
503
+ // Group by type
504
+ const byType = {};
505
+ results.forEach(result => {
506
+ if (!byType[result.type]) {
507
+ byType[result.type] = [];
508
+ }
509
+ byType[result.type].push(result.name);
510
+ });
511
+ Object.keys(byType).forEach(type => {
512
+ markdown += `## ${type}s (${byType[type].length})\n\n`;
513
+ byType[type].forEach(name => {
514
+ markdown += `- ${name}\n`;
515
+ });
516
+ markdown += `\n`;
517
+ });
518
+ return markdown;
519
+ }
520
+ /**
521
+ * Format related_entities results as markdown
522
+ */
523
+ function formatRelatedEntitiesResults(entityName, results) {
524
+ if (results.length === 0) {
525
+ return `# Related Entities: ${entityName}\n\nNo related entities found for **${entityName}**.\n`;
526
+ }
527
+ let markdown = `# Related Entities: ${entityName}\n\n`;
528
+ markdown += `Found **${results.length}** entities related to **${entityName}** (via shared documentation):\n\n`;
529
+ results.forEach((result, index) => {
530
+ markdown += `${index + 1}. **${result.name}** (${result.type})`;
531
+ if (result.shared_docs) {
532
+ markdown += ` - ${result.shared_docs} shared document(s)`;
533
+ }
534
+ markdown += `\n`;
535
+ });
536
+ markdown += `\n`;
537
+ return markdown;
538
+ }
539
+ /**
540
+ * Export for easy integration into MCP server
541
+ */
542
+ export default {
543
+ tool: GRAPH_TOOL,
544
+ execute: executeGraphTool,
545
+ };
546
+ //# sourceMappingURL=graph_tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph_tool.js","sourceRoot":"","sources":["../src/graph_tool.ts"],"names":[],"mappings":"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"}
@@ -48,7 +48,7 @@ export class HybridSearchClient {
48
48
  */
49
49
  async queryVector(query, limit = 10, filters) {
50
50
  try {
51
- const body = { query: query, limit, include_metadata: true };
51
+ const body = { question: query, limit, include_metadata: true };
52
52
  if (filters && Object.keys(filters).length > 0)
53
53
  body.filters = filters;
54
54
  const response = await axios.post(`${VECTOR_API_URL}/query`, body);