@aaronsb/kg-cli 0.6.6 → 0.7.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 (96) hide show
  1. package/dist/api/client.d.ts +127 -1
  2. package/dist/api/client.d.ts.map +1 -1
  3. package/dist/api/client.js +147 -0
  4. package/dist/api/client.js.map +1 -1
  5. package/dist/cli/batch.d.ts +8 -0
  6. package/dist/cli/batch.d.ts.map +1 -0
  7. package/dist/cli/batch.js +225 -0
  8. package/dist/cli/batch.js.map +1 -0
  9. package/dist/cli/commands.d.ts.map +1 -1
  10. package/dist/cli/commands.js +8 -0
  11. package/dist/cli/commands.js.map +1 -1
  12. package/dist/cli/concept.d.ts +9 -0
  13. package/dist/cli/concept.d.ts.map +1 -0
  14. package/dist/cli/concept.js +336 -0
  15. package/dist/cli/concept.js.map +1 -0
  16. package/dist/cli/edge.d.ts +9 -0
  17. package/dist/cli/edge.d.ts.map +1 -0
  18. package/dist/cli/edge.js +364 -0
  19. package/dist/cli/edge.js.map +1 -0
  20. package/dist/cli/jobs.js +111 -3
  21. package/dist/cli/jobs.js.map +1 -1
  22. package/dist/cli/storage.d.ts +10 -0
  23. package/dist/cli/storage.d.ts.map +1 -0
  24. package/dist/cli/storage.js +260 -0
  25. package/dist/cli/storage.js.map +1 -0
  26. package/dist/cli/vocabulary/index.d.ts.map +1 -1
  27. package/dist/cli/vocabulary/index.js +1 -0
  28. package/dist/cli/vocabulary/index.js.map +1 -1
  29. package/dist/cli/vocabulary/similarity.d.ts +1 -0
  30. package/dist/cli/vocabulary/similarity.d.ts.map +1 -1
  31. package/dist/cli/vocabulary/similarity.js +60 -9
  32. package/dist/cli/vocabulary/similarity.js.map +1 -1
  33. package/dist/lib/interactive.d.ts +84 -0
  34. package/dist/lib/interactive.d.ts.map +1 -0
  35. package/dist/lib/interactive.js +296 -0
  36. package/dist/lib/interactive.js.map +1 -0
  37. package/dist/lib/validation.d.ts +106 -0
  38. package/dist/lib/validation.d.ts.map +1 -0
  39. package/dist/lib/validation.js +354 -0
  40. package/dist/lib/validation.js.map +1 -0
  41. package/dist/mcp/formatters/concept.d.ts +24 -0
  42. package/dist/mcp/formatters/concept.d.ts.map +1 -0
  43. package/dist/mcp/formatters/concept.js +243 -0
  44. package/dist/mcp/formatters/concept.js.map +1 -0
  45. package/dist/mcp/formatters/document.d.ts +25 -0
  46. package/dist/mcp/formatters/document.d.ts.map +1 -0
  47. package/dist/mcp/formatters/document.js +178 -0
  48. package/dist/mcp/formatters/document.js.map +1 -0
  49. package/dist/mcp/formatters/epistemic.d.ts +16 -0
  50. package/dist/mcp/formatters/epistemic.d.ts.map +1 -0
  51. package/dist/mcp/formatters/epistemic.js +269 -0
  52. package/dist/mcp/formatters/epistemic.js.map +1 -0
  53. package/dist/mcp/formatters/graph.d.ts +63 -0
  54. package/dist/mcp/formatters/graph.d.ts.map +1 -0
  55. package/dist/mcp/formatters/graph.js +220 -0
  56. package/dist/mcp/formatters/graph.js.map +1 -0
  57. package/dist/mcp/formatters/index.d.ts +18 -0
  58. package/dist/mcp/formatters/index.d.ts.map +1 -0
  59. package/dist/mcp/formatters/index.js +63 -0
  60. package/dist/mcp/formatters/index.js.map +1 -0
  61. package/dist/mcp/formatters/ingest.d.ts +16 -0
  62. package/dist/mcp/formatters/ingest.d.ts.map +1 -0
  63. package/dist/mcp/formatters/ingest.js +169 -0
  64. package/dist/mcp/formatters/ingest.js.map +1 -0
  65. package/dist/mcp/formatters/job.d.ts +13 -0
  66. package/dist/mcp/formatters/job.d.ts.map +1 -0
  67. package/dist/mcp/formatters/job.js +204 -0
  68. package/dist/mcp/formatters/job.js.map +1 -0
  69. package/dist/mcp/formatters/source.d.ts +19 -0
  70. package/dist/mcp/formatters/source.d.ts.map +1 -0
  71. package/dist/mcp/formatters/source.js +182 -0
  72. package/dist/mcp/formatters/source.js.map +1 -0
  73. package/dist/mcp/formatters/system.d.ts +10 -0
  74. package/dist/mcp/formatters/system.d.ts.map +1 -0
  75. package/dist/mcp/formatters/system.js +152 -0
  76. package/dist/mcp/formatters/system.js.map +1 -0
  77. package/dist/mcp/formatters/utils.d.ts +17 -0
  78. package/dist/mcp/formatters/utils.d.ts.map +1 -0
  79. package/dist/mcp/formatters/utils.js +55 -0
  80. package/dist/mcp/formatters/utils.js.map +1 -0
  81. package/dist/mcp/graph-operations.d.ts +242 -0
  82. package/dist/mcp/graph-operations.d.ts.map +1 -0
  83. package/dist/mcp/graph-operations.js +532 -0
  84. package/dist/mcp/graph-operations.js.map +1 -0
  85. package/dist/mcp-server.js +460 -32
  86. package/dist/mcp-server.js.map +1 -1
  87. package/dist/types/index.d.ts +153 -0
  88. package/dist/types/index.d.ts.map +1 -1
  89. package/dist/version.d.ts +3 -3
  90. package/dist/version.js +3 -3
  91. package/dist/version.js.map +1 -1
  92. package/package.json +1 -1
  93. package/dist/mcp/formatters.d.ts +0 -100
  94. package/dist/mcp/formatters.d.ts.map +0 -1
  95. package/dist/mcp/formatters.js +0 -1411
  96. package/dist/mcp/formatters.js.map +0 -1
@@ -0,0 +1,532 @@
1
+ "use strict";
2
+ /**
3
+ * GraphOperationExecutor - Handles graph CRUD operations for MCP tool
4
+ * ADR-089 Phase 3a refactoring: Extracted from mcp-server.ts handler
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.GraphOperationExecutor = void 0;
8
+ // ========== Constants ==========
9
+ /**
10
+ * Valid edge categories (server-side validation).
11
+ * Listed here for helpful error messages.
12
+ */
13
+ const VALID_CATEGORIES = [
14
+ 'logical_truth',
15
+ 'empirical_claim',
16
+ 'value_judgment',
17
+ 'conceptual',
18
+ 'temporal_sequence',
19
+ 'causal',
20
+ 'other',
21
+ ];
22
+ /**
23
+ * Enhance error messages for common validation failures.
24
+ */
25
+ function enhanceErrorMessage(error) {
26
+ // Check for category validation errors
27
+ if (error.includes('category') && (error.includes('validation') || error.includes('invalid') || error.includes('422'))) {
28
+ return `Invalid category. Valid options: ${VALID_CATEGORIES.join(', ')}`;
29
+ }
30
+ return error;
31
+ }
32
+ // ========== GraphOperationExecutor Class ==========
33
+ /**
34
+ * Executes graph CRUD operations with semantic resolution support.
35
+ */
36
+ class GraphOperationExecutor {
37
+ constructor(client) {
38
+ this.client = client;
39
+ }
40
+ /**
41
+ * Resolve a concept label to its ID using semantic search.
42
+ * @param label - The concept label to resolve
43
+ * @returns The concept ID
44
+ * @throws Error if no confident match found
45
+ */
46
+ async resolveConceptByLabel(label) {
47
+ const searchResult = await this.client.searchConcepts({
48
+ query: label,
49
+ limit: 1,
50
+ min_similarity: 0.85,
51
+ });
52
+ if (searchResult.count === 0) {
53
+ throw new Error(`No concept found matching label: "${label}". Try creating it first or use a more specific label.`);
54
+ }
55
+ const match = searchResult.results[0];
56
+ if (match.score < 0.85) {
57
+ throw new Error(`No confident match for "${label}". Best match: "${match.label}" (${(match.score * 100).toFixed(1)}% similarity). Use concept_id for precise reference.`);
58
+ }
59
+ return match.concept_id;
60
+ }
61
+ /**
62
+ * Resolve concept ID from params, using label resolution if needed.
63
+ * @param id - Explicit concept ID (optional)
64
+ * @param label - Concept label for resolution (optional)
65
+ * @param fieldName - Name of the field for error messages
66
+ * @param throwOnMissing - Whether to throw if neither ID nor label provided
67
+ * @returns The resolved concept ID or undefined
68
+ */
69
+ async resolveConceptId(id, label, fieldName, throwOnMissing = true) {
70
+ if (id) {
71
+ return id;
72
+ }
73
+ if (label) {
74
+ return await this.resolveConceptByLabel(label);
75
+ }
76
+ if (throwOnMissing) {
77
+ throw new Error(`${fieldName}_concept_id or ${fieldName}_label is required`);
78
+ }
79
+ return undefined;
80
+ }
81
+ /**
82
+ * Resolve concept ID for list operations (silently skip on error).
83
+ */
84
+ async resolveConceptIdForList(id, label) {
85
+ if (id) {
86
+ return id;
87
+ }
88
+ if (label) {
89
+ try {
90
+ return await this.resolveConceptByLabel(label);
91
+ }
92
+ catch {
93
+ // Ignore resolution errors for list - just skip filter
94
+ return undefined;
95
+ }
96
+ }
97
+ return undefined;
98
+ }
99
+ // ========== Create Operations ==========
100
+ async createConcept(params) {
101
+ if (!params.label) {
102
+ return { success: false, error: 'label is required for creating a concept' };
103
+ }
104
+ if (!params.ontology) {
105
+ return { success: false, error: 'ontology is required for creating a concept' };
106
+ }
107
+ try {
108
+ const result = await this.client.createConcept({
109
+ label: params.label,
110
+ ontology: params.ontology,
111
+ description: params.description,
112
+ search_terms: params.search_terms,
113
+ matching_mode: params.matching_mode || 'auto',
114
+ creation_method: 'mcp',
115
+ });
116
+ return { success: true, data: result };
117
+ }
118
+ catch (err) {
119
+ const error = err instanceof Error ? err.message : String(err);
120
+ return { success: false, error };
121
+ }
122
+ }
123
+ async createEdge(params) {
124
+ if (!params.relationship_type) {
125
+ return { success: false, error: 'relationship_type is required for creating an edge' };
126
+ }
127
+ try {
128
+ const fromId = await this.resolveConceptId(params.from_concept_id, params.from_label, 'from');
129
+ const toId = await this.resolveConceptId(params.to_concept_id, params.to_label, 'to');
130
+ const result = await this.client.createEdge({
131
+ from_concept_id: fromId,
132
+ to_concept_id: toId,
133
+ relationship_type: params.relationship_type,
134
+ category: (params.category || 'logical_truth'), // Server validates
135
+ confidence: params.confidence ?? 1.0,
136
+ source: 'api_creation',
137
+ });
138
+ // Enrich result with resolved labels for better output
139
+ const enrichedResult = {
140
+ ...result,
141
+ from_label: params.from_label || fromId,
142
+ to_label: params.to_label || toId,
143
+ };
144
+ return { success: true, data: enrichedResult };
145
+ }
146
+ catch (err) {
147
+ const rawError = err instanceof Error ? err.message : String(err);
148
+ return { success: false, error: enhanceErrorMessage(rawError) };
149
+ }
150
+ }
151
+ // ========== List Operations ==========
152
+ async listConcepts(params) {
153
+ try {
154
+ const result = await this.client.listConceptsCRUD({
155
+ ontology: params.ontology,
156
+ label_contains: params.label_contains,
157
+ creation_method: params.creation_method,
158
+ offset: params.offset || 0,
159
+ limit: params.limit || 20,
160
+ });
161
+ return { success: true, data: result };
162
+ }
163
+ catch (err) {
164
+ const error = err instanceof Error ? err.message : String(err);
165
+ return { success: false, error };
166
+ }
167
+ }
168
+ async listEdges(params) {
169
+ try {
170
+ const fromId = await this.resolveConceptIdForList(params.from_concept_id, params.from_label);
171
+ const toId = await this.resolveConceptIdForList(params.to_concept_id, params.to_label);
172
+ const result = await this.client.listEdges({
173
+ from_concept_id: fromId,
174
+ to_concept_id: toId,
175
+ relationship_type: params.relationship_type,
176
+ category: params.category,
177
+ source: params.source,
178
+ offset: params.offset || 0,
179
+ limit: params.limit || 20,
180
+ });
181
+ return { success: true, data: result };
182
+ }
183
+ catch (err) {
184
+ const error = err instanceof Error ? err.message : String(err);
185
+ return { success: false, error };
186
+ }
187
+ }
188
+ // ========== Edit Operations ==========
189
+ async editConcept(params) {
190
+ if (!params.concept_id) {
191
+ return { success: false, error: 'concept_id is required for editing a concept' };
192
+ }
193
+ const updateData = {};
194
+ if (params.label !== undefined)
195
+ updateData.label = params.label;
196
+ if (params.description !== undefined)
197
+ updateData.description = params.description;
198
+ if (params.search_terms !== undefined)
199
+ updateData.search_terms = params.search_terms;
200
+ if (Object.keys(updateData).length === 0) {
201
+ return {
202
+ success: false,
203
+ error: 'At least one field (label, description, or search_terms) must be provided for edit',
204
+ };
205
+ }
206
+ try {
207
+ const result = await this.client.updateConcept(params.concept_id, updateData);
208
+ return { success: true, data: result };
209
+ }
210
+ catch (err) {
211
+ const error = err instanceof Error ? err.message : String(err);
212
+ return { success: false, error };
213
+ }
214
+ }
215
+ async editEdge(params) {
216
+ try {
217
+ const fromId = await this.resolveConceptId(params.from_concept_id, params.from_label, 'from');
218
+ const toId = await this.resolveConceptId(params.to_concept_id, params.to_label, 'to');
219
+ if (!params.relationship_type) {
220
+ return { success: false, error: 'relationship_type is required for editing an edge' };
221
+ }
222
+ const updateData = {};
223
+ if (params.confidence !== undefined)
224
+ updateData.confidence = params.confidence;
225
+ if (params.category !== undefined)
226
+ updateData.category = params.category;
227
+ if (Object.keys(updateData).length === 0) {
228
+ return {
229
+ success: false,
230
+ error: 'At least one field (confidence or category) must be provided for edge edit',
231
+ };
232
+ }
233
+ const result = await this.client.updateEdge(fromId, params.relationship_type, toId, updateData // Server validates category
234
+ );
235
+ const enrichedResult = {
236
+ ...result,
237
+ from_label: params.from_label || fromId,
238
+ to_label: params.to_label || toId,
239
+ };
240
+ return { success: true, data: enrichedResult };
241
+ }
242
+ catch (err) {
243
+ const rawError = err instanceof Error ? err.message : String(err);
244
+ return { success: false, error: enhanceErrorMessage(rawError) };
245
+ }
246
+ }
247
+ // ========== Delete Operations ==========
248
+ async deleteConcept(params) {
249
+ if (!params.concept_id) {
250
+ return { success: false, error: 'concept_id is required for deleting a concept' };
251
+ }
252
+ try {
253
+ await this.client.deleteConcept(params.concept_id, params.cascade || false);
254
+ return { success: true, data: { concept_id: params.concept_id } };
255
+ }
256
+ catch (err) {
257
+ const error = err instanceof Error ? err.message : String(err);
258
+ return { success: false, error };
259
+ }
260
+ }
261
+ async deleteEdge(params) {
262
+ try {
263
+ const fromId = await this.resolveConceptId(params.from_concept_id, params.from_label, 'from');
264
+ const toId = await this.resolveConceptId(params.to_concept_id, params.to_label, 'to');
265
+ if (!params.relationship_type) {
266
+ return { success: false, error: 'relationship_type is required for deleting an edge' };
267
+ }
268
+ await this.client.deleteEdge(fromId, params.relationship_type, toId);
269
+ return {
270
+ success: true,
271
+ data: {
272
+ from_concept_id: fromId,
273
+ to_concept_id: toId,
274
+ relationship_type: params.relationship_type,
275
+ },
276
+ };
277
+ }
278
+ catch (err) {
279
+ const error = err instanceof Error ? err.message : String(err);
280
+ return { success: false, error };
281
+ }
282
+ }
283
+ // ========== Queue Execution ==========
284
+ /**
285
+ * Execute a queue of operations sequentially.
286
+ * @param operations - Array of operations to execute
287
+ * @param continueOnError - Whether to continue after errors
288
+ * @returns Queue execution result with all operation results
289
+ */
290
+ async executeQueue(operations, continueOnError = false) {
291
+ const results = [];
292
+ let stopIndex = -1;
293
+ for (let i = 0; i < operations.length; i++) {
294
+ const op = operations[i];
295
+ if (!op.op || !op.entity) {
296
+ results.push({
297
+ index: i + 1,
298
+ status: 'error',
299
+ op: op.op || 'unknown',
300
+ entity: op.entity || 'unknown',
301
+ error: `Operation ${i + 1}: missing 'op' or 'entity'`,
302
+ });
303
+ if (!continueOnError) {
304
+ stopIndex = i;
305
+ break;
306
+ }
307
+ continue;
308
+ }
309
+ try {
310
+ const result = await this.executeSingleOperation(op, i + 1);
311
+ results.push(result);
312
+ if (result.status === 'error' && !continueOnError) {
313
+ stopIndex = i;
314
+ break;
315
+ }
316
+ }
317
+ catch (err) {
318
+ const error = err instanceof Error ? err.message : String(err);
319
+ results.push({
320
+ index: i + 1,
321
+ status: 'error',
322
+ op: op.op,
323
+ entity: op.entity,
324
+ error,
325
+ });
326
+ if (!continueOnError) {
327
+ stopIndex = i;
328
+ break;
329
+ }
330
+ }
331
+ }
332
+ return {
333
+ results,
334
+ stopIndex,
335
+ successCount: results.filter((r) => r.status === 'ok').length,
336
+ errorCount: results.filter((r) => r.status === 'error').length,
337
+ };
338
+ }
339
+ /**
340
+ * Execute a single queue operation.
341
+ */
342
+ async executeSingleOperation(op, index) {
343
+ const { op: action, entity } = op;
344
+ // Create concept
345
+ if (action === 'create' && entity === 'concept') {
346
+ if (!op.label || !op.ontology) {
347
+ throw new Error('label and ontology required');
348
+ }
349
+ const result = await this.createConcept({
350
+ label: op.label,
351
+ ontology: op.ontology,
352
+ description: op.description,
353
+ search_terms: op.search_terms,
354
+ matching_mode: op.matching_mode,
355
+ });
356
+ if (!result.success) {
357
+ throw new Error(result.error);
358
+ }
359
+ return {
360
+ index,
361
+ status: 'ok',
362
+ op: 'create',
363
+ entity: 'concept',
364
+ label: result.data.label,
365
+ id: result.data.concept_id,
366
+ matched_existing: result.data.matched_existing,
367
+ };
368
+ }
369
+ // Create edge
370
+ if (action === 'create' && entity === 'edge') {
371
+ const result = await this.createEdge({
372
+ from_concept_id: op.from_concept_id,
373
+ from_label: op.from_label,
374
+ to_concept_id: op.to_concept_id,
375
+ to_label: op.to_label,
376
+ relationship_type: op.relationship_type,
377
+ category: op.category,
378
+ confidence: op.confidence,
379
+ });
380
+ if (!result.success) {
381
+ throw new Error(result.error);
382
+ }
383
+ return {
384
+ index,
385
+ status: 'ok',
386
+ op: 'create',
387
+ entity: 'edge',
388
+ relationship: `${op.from_label || result.data.from_concept_id} -[${op.relationship_type}]-> ${op.to_label || result.data.to_concept_id}`,
389
+ };
390
+ }
391
+ // List concepts
392
+ if (action === 'list' && entity === 'concept') {
393
+ const result = await this.listConcepts({
394
+ ontology: op.ontology,
395
+ label_contains: op.label_contains,
396
+ creation_method: op.creation_method,
397
+ offset: op.offset,
398
+ limit: op.limit,
399
+ });
400
+ if (!result.success) {
401
+ throw new Error(result.error);
402
+ }
403
+ return {
404
+ index,
405
+ status: 'ok',
406
+ op: 'list',
407
+ entity: 'concept',
408
+ count: result.data.concepts.length,
409
+ total: result.data.total,
410
+ concepts: result.data.concepts.map((c) => ({ id: c.concept_id, label: c.label })),
411
+ };
412
+ }
413
+ // List edges
414
+ if (action === 'list' && entity === 'edge') {
415
+ const result = await this.listEdges({
416
+ from_concept_id: op.from_concept_id,
417
+ from_label: op.from_label,
418
+ to_concept_id: op.to_concept_id,
419
+ to_label: op.to_label,
420
+ relationship_type: op.relationship_type,
421
+ category: op.category,
422
+ source: op.source,
423
+ offset: op.offset,
424
+ limit: op.limit,
425
+ });
426
+ if (!result.success) {
427
+ throw new Error(result.error);
428
+ }
429
+ return {
430
+ index,
431
+ status: 'ok',
432
+ op: 'list',
433
+ entity: 'edge',
434
+ count: result.data.edges.length,
435
+ total: result.data.total,
436
+ edges: result.data.edges.map((e) => ({
437
+ from: e.from_concept_id,
438
+ type: e.relationship_type,
439
+ to: e.to_concept_id,
440
+ })),
441
+ };
442
+ }
443
+ // Edit concept
444
+ if (action === 'edit' && entity === 'concept') {
445
+ if (!op.concept_id) {
446
+ throw new Error('concept_id required for edit');
447
+ }
448
+ const result = await this.editConcept({
449
+ concept_id: op.concept_id,
450
+ label: op.label,
451
+ description: op.description,
452
+ search_terms: op.search_terms,
453
+ });
454
+ if (!result.success) {
455
+ throw new Error(result.error);
456
+ }
457
+ return {
458
+ index,
459
+ status: 'ok',
460
+ op: 'edit',
461
+ entity: 'concept',
462
+ id: result.data.concept_id,
463
+ label: result.data.label,
464
+ };
465
+ }
466
+ // Edit edge
467
+ if (action === 'edit' && entity === 'edge') {
468
+ const result = await this.editEdge({
469
+ from_concept_id: op.from_concept_id,
470
+ from_label: op.from_label,
471
+ to_concept_id: op.to_concept_id,
472
+ to_label: op.to_label,
473
+ relationship_type: op.relationship_type,
474
+ confidence: op.confidence,
475
+ category: op.category,
476
+ });
477
+ if (!result.success) {
478
+ throw new Error(result.error);
479
+ }
480
+ return {
481
+ index,
482
+ status: 'ok',
483
+ op: 'edit',
484
+ entity: 'edge',
485
+ relationship: `${op.from_label || result.data.from_concept_id} -[${op.relationship_type}]-> ${op.to_label || result.data.to_concept_id}`,
486
+ };
487
+ }
488
+ // Delete concept
489
+ if (action === 'delete' && entity === 'concept') {
490
+ if (!op.concept_id) {
491
+ throw new Error('concept_id required for delete');
492
+ }
493
+ const result = await this.deleteConcept({
494
+ concept_id: op.concept_id,
495
+ cascade: op.cascade,
496
+ });
497
+ if (!result.success) {
498
+ throw new Error(result.error);
499
+ }
500
+ return {
501
+ index,
502
+ status: 'ok',
503
+ op: 'delete',
504
+ entity: 'concept',
505
+ id: op.concept_id,
506
+ };
507
+ }
508
+ // Delete edge
509
+ if (action === 'delete' && entity === 'edge') {
510
+ const result = await this.deleteEdge({
511
+ from_concept_id: op.from_concept_id,
512
+ from_label: op.from_label,
513
+ to_concept_id: op.to_concept_id,
514
+ to_label: op.to_label,
515
+ relationship_type: op.relationship_type,
516
+ });
517
+ if (!result.success) {
518
+ throw new Error(result.error);
519
+ }
520
+ return {
521
+ index,
522
+ status: 'ok',
523
+ op: 'delete',
524
+ entity: 'edge',
525
+ relationship: `${op.from_label || result.data.from_concept_id} -[${op.relationship_type}]-> ${op.to_label || result.data.to_concept_id}`,
526
+ };
527
+ }
528
+ throw new Error(`Unknown operation: ${action} ${entity}`);
529
+ }
530
+ }
531
+ exports.GraphOperationExecutor = GraphOperationExecutor;
532
+ //# sourceMappingURL=graph-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-operations.js","sourceRoot":"","sources":["../../src/mcp/graph-operations.ts"],"names":[],"mappings":"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"}