@grafema/mcp 0.3.28 → 0.3.31
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/definitions/enox-tools.d.ts +10 -0
- package/dist/definitions/enox-tools.d.ts.map +1 -0
- package/dist/definitions/enox-tools.js +451 -0
- package/dist/definitions/enox-tools.js.map +1 -0
- package/dist/definitions/index.js +2 -2
- package/dist/definitions/index.js.map +1 -1
- package/dist/handlers/coverage-handlers.d.ts.map +1 -1
- package/dist/handlers/coverage-handlers.js +9 -0
- package/dist/handlers/coverage-handlers.js.map +1 -1
- package/dist/handlers/documentation-handlers.d.ts.map +1 -1
- package/dist/handlers/documentation-handlers.js +26 -5
- package/dist/handlers/documentation-handlers.js.map +1 -1
- package/dist/handlers/enox-handlers.d.ts +113 -0
- package/dist/handlers/enox-handlers.d.ts.map +1 -0
- package/dist/handlers/enox-handlers.js +877 -0
- package/dist/handlers/enox-handlers.js.map +1 -0
- package/dist/handlers/index.d.ts +1 -1
- package/dist/handlers/index.d.ts.map +1 -1
- package/dist/handlers/index.js +1 -1
- package/dist/handlers/index.js.map +1 -1
- package/dist/handlers/query-handlers.d.ts +7 -0
- package/dist/handlers/query-handlers.d.ts.map +1 -1
- package/dist/handlers/query-handlers.js +28 -14
- package/dist/handlers/query-handlers.js.map +1 -1
- package/dist/server.js +45 -17
- package/dist/server.js.map +1 -1
- package/dist/types.d.ts +64 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +12 -12
- package/src/definitions/enox-tools.ts +454 -0
- package/src/definitions/index.ts +2 -2
- package/src/handlers/coverage-handlers.ts +10 -0
- package/src/handlers/documentation-handlers.ts +26 -5
- package/src/handlers/enox-handlers.ts +1125 -0
- package/src/handlers/index.ts +1 -1
- package/src/handlers/query-handlers.ts +25 -12
- package/src/server.ts +86 -29
- package/src/types.ts +78 -0
- package/dist/definitions.d.ts +0 -23
- package/dist/definitions.d.ts.map +0 -1
- package/dist/definitions.js +0 -644
- package/dist/definitions.js.map +0 -1
- package/dist/handlers.d.ts +0 -61
- package/dist/handlers.d.ts.map +0 -1
- package/dist/handlers.js +0 -1310
- package/dist/handlers.js.map +0 -1
package/src/handlers/index.ts
CHANGED
|
@@ -14,7 +14,7 @@ export { handleFindGuards } from './guard-handlers.js';
|
|
|
14
14
|
export { handleGetDocumentation } from './documentation-handlers.js';
|
|
15
15
|
export { handleReportIssue } from './issue-handlers.js';
|
|
16
16
|
export { handleGetNode, handleGetNeighbors, handleTraverseGraph } from './graph-handlers.js';
|
|
17
|
-
export {
|
|
17
|
+
export { handleRemember, handleRecall, handleSemanticSearch, handleExploreEntity, handleAddAssertion, handleUpdateAssertion, handleDeleteAssertion, handleEnoxQuery, handleEnoxTraverse, handleEnoxStats, handleRecentActivity, handleUpdateNode, handleCrawlEntity, handleSaveDocument } from './enox-handlers.js';
|
|
18
18
|
// Disabled: requires git-ingest (US-17). See US-17 in AI-AGENT-STORIES.md
|
|
19
19
|
// export { handleGitChurn, handleGitCoChange, handleGitOwnership, handleGitArchaeology } from './knowledge-handlers.js';
|
|
20
20
|
export { handleDescribe } from './notation-handlers.js';
|
|
@@ -524,22 +524,35 @@ async function enrichNodes(
|
|
|
524
524
|
|
|
525
525
|
/** Convert a semantic ID to human-readable "name in file.ts" format.
|
|
526
526
|
* Handles: grafema://host/path/file.ts#TYPE->name[scope], path/file.ts#TYPE->name,
|
|
527
|
-
* TYPE-%3Ename (URL-encoded, no file prefix), or raw node IDs.
|
|
528
|
-
|
|
527
|
+
* TYPE-%3Ename (URL-encoded, no file prefix), or raw node IDs.
|
|
528
|
+
*
|
|
529
|
+
* Exported for unit testing.
|
|
530
|
+
* @internal */
|
|
531
|
+
export function humanReadableId(semanticId: string): string {
|
|
529
532
|
if (!semanticId) return '?';
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
//
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
533
|
+
|
|
534
|
+
// Split file path from node descriptor on the FIRST literal '#' of the RAW
|
|
535
|
+
// (still percent-encoded) id, BEFORE decoding. The grafema:// URI form encodes
|
|
536
|
+
// the disambiguation counter ('#N', appended by computeSemanticIdV2 for hash
|
|
537
|
+
// collisions) as '%23N' inside the fragment. Decoding first and then splitting
|
|
538
|
+
// on the LAST '#' would mistake that counter for the path/fragment boundary and
|
|
539
|
+
// corrupt the label. A file path never contains a literal '#'. This mirrors the
|
|
540
|
+
// canonical parseSemanticIdV2 (packages/util/src/core/SemanticId.ts).
|
|
541
|
+
const hashIdx = semanticId.indexOf('#');
|
|
542
|
+
let rawFile = '';
|
|
543
|
+
let rawNode = semanticId;
|
|
538
544
|
if (hashIdx !== -1) {
|
|
539
|
-
|
|
540
|
-
|
|
545
|
+
rawFile = semanticId.slice(0, hashIdx);
|
|
546
|
+
rawNode = semanticId.slice(hashIdx + 1);
|
|
541
547
|
}
|
|
542
548
|
|
|
549
|
+
const decode = (s: string): string => {
|
|
550
|
+
try { return decodeURIComponent(s); } catch { return s; }
|
|
551
|
+
};
|
|
552
|
+
const filePart = decode(rawFile);
|
|
553
|
+
// Strip the trailing disambiguation counter ('#N') from the decoded descriptor.
|
|
554
|
+
const nodePart = decode(rawNode).replace(/#\d+$/, '');
|
|
555
|
+
|
|
543
556
|
const fileName = filePart ? (filePart.split('/').pop() || '') : '';
|
|
544
557
|
|
|
545
558
|
// Extract name from TYPE->name or TYPE->name[in:scope,h:hash]
|
package/src/server.ts
CHANGED
|
@@ -67,11 +67,6 @@ import {
|
|
|
67
67
|
handleGetNode,
|
|
68
68
|
handleGetNeighbors,
|
|
69
69
|
handleTraverseGraph,
|
|
70
|
-
handleAddKnowledge,
|
|
71
|
-
handleQueryKnowledge,
|
|
72
|
-
handleQueryDecisions,
|
|
73
|
-
handleSupersedeFact,
|
|
74
|
-
handleGetKnowledgeStats,
|
|
75
70
|
// Disabled: requires git-ingest (US-17). See US-17 in AI-AGENT-STORIES.md
|
|
76
71
|
// handleGitChurn,
|
|
77
72
|
// handleGitCoChange,
|
|
@@ -83,6 +78,20 @@ import {
|
|
|
83
78
|
handleExplain,
|
|
84
79
|
handleTraceEffects,
|
|
85
80
|
handleFindSharedBehaviors,
|
|
81
|
+
handleRemember,
|
|
82
|
+
handleRecall,
|
|
83
|
+
handleSemanticSearch,
|
|
84
|
+
handleExploreEntity,
|
|
85
|
+
handleAddAssertion,
|
|
86
|
+
handleUpdateAssertion,
|
|
87
|
+
handleDeleteAssertion,
|
|
88
|
+
handleEnoxQuery,
|
|
89
|
+
handleEnoxTraverse,
|
|
90
|
+
handleEnoxStats,
|
|
91
|
+
handleRecentActivity,
|
|
92
|
+
handleUpdateNode,
|
|
93
|
+
handleCrawlEntity,
|
|
94
|
+
handleSaveDocument,
|
|
86
95
|
} from './handlers/index.js';
|
|
87
96
|
import type { ExplainArgs } from './handlers/index.js';
|
|
88
97
|
import type {
|
|
@@ -112,10 +121,6 @@ import type {
|
|
|
112
121
|
GetNodeArgs,
|
|
113
122
|
GetNeighborsArgs,
|
|
114
123
|
TraverseGraphArgs,
|
|
115
|
-
AddKnowledgeArgs,
|
|
116
|
-
QueryKnowledgeArgs,
|
|
117
|
-
QueryDecisionsArgs,
|
|
118
|
-
SupersedeFactArgs,
|
|
119
124
|
// Disabled: requires git-ingest (US-17). See US-17 in AI-AGENT-STORIES.md
|
|
120
125
|
// GitChurnArgs,
|
|
121
126
|
// GitCoChangeArgs,
|
|
@@ -127,6 +132,21 @@ import type {
|
|
|
127
132
|
QueryRegistryArgs,
|
|
128
133
|
FindSharedBehaviorsArgs,
|
|
129
134
|
} from './types.js';
|
|
135
|
+
import type {
|
|
136
|
+
RememberArgs,
|
|
137
|
+
RecallArgs,
|
|
138
|
+
SemanticSearchArgs,
|
|
139
|
+
ExploreEntityArgs,
|
|
140
|
+
AddAssertionArgs,
|
|
141
|
+
UpdateAssertionArgs,
|
|
142
|
+
DeleteAssertionArgs,
|
|
143
|
+
QueryGraphKnowledgeArgs,
|
|
144
|
+
TraverseArgs as EnoxTraverseArgs,
|
|
145
|
+
RecentActivityArgs,
|
|
146
|
+
UpdateNodeArgs as EnoxUpdateNodeArgs,
|
|
147
|
+
CrawlEntityArgs,
|
|
148
|
+
SaveDocumentArgs,
|
|
149
|
+
} from './handlers/enox-handlers.js';
|
|
130
150
|
|
|
131
151
|
/**
|
|
132
152
|
* Type-safe argument casting helper.
|
|
@@ -358,26 +378,6 @@ server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
|
|
|
358
378
|
result = await handleTraverseGraph(asArgs<TraverseGraphArgs>(args));
|
|
359
379
|
break;
|
|
360
380
|
|
|
361
|
-
case 'add_knowledge':
|
|
362
|
-
result = await handleAddKnowledge(asArgs<AddKnowledgeArgs>(args));
|
|
363
|
-
break;
|
|
364
|
-
|
|
365
|
-
case 'query_knowledge':
|
|
366
|
-
result = await handleQueryKnowledge(asArgs<QueryKnowledgeArgs>(args));
|
|
367
|
-
break;
|
|
368
|
-
|
|
369
|
-
case 'query_decisions':
|
|
370
|
-
result = await handleQueryDecisions(asArgs<QueryDecisionsArgs>(args));
|
|
371
|
-
break;
|
|
372
|
-
|
|
373
|
-
case 'supersede_fact':
|
|
374
|
-
result = await handleSupersedeFact(asArgs<SupersedeFactArgs>(args));
|
|
375
|
-
break;
|
|
376
|
-
|
|
377
|
-
case 'get_knowledge_stats':
|
|
378
|
-
result = await handleGetKnowledgeStats();
|
|
379
|
-
break;
|
|
380
|
-
|
|
381
381
|
// Disabled: requires git-ingest (US-17). See US-17 in AI-AGENT-STORIES.md
|
|
382
382
|
// case 'git_churn':
|
|
383
383
|
// result = await handleGitChurn(asArgs<GitChurnArgs>(args));
|
|
@@ -411,6 +411,63 @@ server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
|
|
|
411
411
|
result = await handleFindSharedBehaviors(asArgs<FindSharedBehaviorsArgs>(args));
|
|
412
412
|
break;
|
|
413
413
|
|
|
414
|
+
// === Enox knowledge graph ===
|
|
415
|
+
case 'remember':
|
|
416
|
+
result = await handleRemember(asArgs<RememberArgs>(args));
|
|
417
|
+
break;
|
|
418
|
+
|
|
419
|
+
case 'recall':
|
|
420
|
+
result = await handleRecall(asArgs<RecallArgs>(args));
|
|
421
|
+
break;
|
|
422
|
+
|
|
423
|
+
case 'semantic_search':
|
|
424
|
+
result = await handleSemanticSearch(asArgs<SemanticSearchArgs>(args));
|
|
425
|
+
break;
|
|
426
|
+
|
|
427
|
+
case 'enox_explore':
|
|
428
|
+
result = await handleExploreEntity(asArgs<ExploreEntityArgs>(args));
|
|
429
|
+
break;
|
|
430
|
+
|
|
431
|
+
case 'add_assertion':
|
|
432
|
+
result = await handleAddAssertion(asArgs<AddAssertionArgs>(args));
|
|
433
|
+
break;
|
|
434
|
+
|
|
435
|
+
case 'update_assertion':
|
|
436
|
+
result = await handleUpdateAssertion(asArgs<UpdateAssertionArgs>(args));
|
|
437
|
+
break;
|
|
438
|
+
|
|
439
|
+
case 'delete_assertion':
|
|
440
|
+
result = await handleDeleteAssertion(asArgs<DeleteAssertionArgs>(args));
|
|
441
|
+
break;
|
|
442
|
+
|
|
443
|
+
case 'enox_query':
|
|
444
|
+
result = await handleEnoxQuery(asArgs<QueryGraphKnowledgeArgs>(args));
|
|
445
|
+
break;
|
|
446
|
+
|
|
447
|
+
case 'enox_traverse':
|
|
448
|
+
result = await handleEnoxTraverse(asArgs<EnoxTraverseArgs>(args));
|
|
449
|
+
break;
|
|
450
|
+
|
|
451
|
+
case 'enox_stats':
|
|
452
|
+
result = await handleEnoxStats();
|
|
453
|
+
break;
|
|
454
|
+
|
|
455
|
+
case 'recent_activity':
|
|
456
|
+
result = await handleRecentActivity(asArgs<RecentActivityArgs>(args));
|
|
457
|
+
break;
|
|
458
|
+
|
|
459
|
+
case 'update_node':
|
|
460
|
+
result = await handleUpdateNode(asArgs<EnoxUpdateNodeArgs>(args));
|
|
461
|
+
break;
|
|
462
|
+
|
|
463
|
+
case 'crawl_entity':
|
|
464
|
+
result = await handleCrawlEntity(asArgs<CrawlEntityArgs>(args));
|
|
465
|
+
break;
|
|
466
|
+
|
|
467
|
+
case 'save_document':
|
|
468
|
+
result = await handleSaveDocument(asArgs<SaveDocumentArgs>(args));
|
|
469
|
+
break;
|
|
470
|
+
|
|
414
471
|
default:
|
|
415
472
|
result = errorResult(`Unknown tool: ${name}`);
|
|
416
473
|
}
|
package/src/types.ts
CHANGED
|
@@ -428,6 +428,84 @@ export interface SupersedeFactArgs {
|
|
|
428
428
|
new_slug?: string;
|
|
429
429
|
}
|
|
430
430
|
|
|
431
|
+
// === ENOX ARGS (knowledge graph) ===
|
|
432
|
+
|
|
433
|
+
export interface EnoxRememberArgs {
|
|
434
|
+
subject: string;
|
|
435
|
+
fact: string;
|
|
436
|
+
domain?: string;
|
|
437
|
+
confidence?: number;
|
|
438
|
+
relation?: string;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
export interface EnoxRecallArgs {
|
|
442
|
+
query: string;
|
|
443
|
+
depth?: number;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
export interface EnoxSemanticSearchArgs {
|
|
447
|
+
query: string;
|
|
448
|
+
top_k?: number;
|
|
449
|
+
domain?: string;
|
|
450
|
+
include_edges?: boolean;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
export interface EnoxExploreArgs {
|
|
454
|
+
entity: string;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
export interface EnoxAddAssertionArgs {
|
|
458
|
+
from: string;
|
|
459
|
+
relation: string;
|
|
460
|
+
to: string;
|
|
461
|
+
context?: string;
|
|
462
|
+
confidence?: number;
|
|
463
|
+
domain?: string;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
export interface EnoxUpdateAssertionArgs {
|
|
467
|
+
fact_id: string;
|
|
468
|
+
context?: string;
|
|
469
|
+
confidence?: number;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
export interface EnoxDeleteAssertionArgs {
|
|
473
|
+
fact_id: string;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
export interface EnoxQueryGraphArgs {
|
|
477
|
+
type?: string;
|
|
478
|
+
domain?: string;
|
|
479
|
+
name?: string;
|
|
480
|
+
limit?: number;
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
export interface EnoxTraverseArgs {
|
|
484
|
+
start: string;
|
|
485
|
+
direction?: string;
|
|
486
|
+
edge_types?: string[];
|
|
487
|
+
max_depth?: number;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
export interface EnoxRecentActivityArgs {
|
|
491
|
+
since?: string;
|
|
492
|
+
limit?: number;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
export interface EnoxUpdateNodeArgs {
|
|
496
|
+
node_id: string;
|
|
497
|
+
name?: string;
|
|
498
|
+
domain?: string;
|
|
499
|
+
description?: string;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
export interface EnoxSaveDocumentArgs {
|
|
503
|
+
title: string;
|
|
504
|
+
content: string;
|
|
505
|
+
doc_type?: string;
|
|
506
|
+
relates_to?: string[];
|
|
507
|
+
}
|
|
508
|
+
|
|
431
509
|
// === DESCRIBE ARGS (DSL notation) ===
|
|
432
510
|
|
|
433
511
|
export interface DescribeArgs {
|
package/dist/definitions.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Tool Definitions
|
|
3
|
-
*/
|
|
4
|
-
interface SchemaProperty {
|
|
5
|
-
type: string;
|
|
6
|
-
description?: string;
|
|
7
|
-
enum?: string[];
|
|
8
|
-
items?: SchemaProperty;
|
|
9
|
-
properties?: Record<string, SchemaProperty>;
|
|
10
|
-
required?: string[];
|
|
11
|
-
}
|
|
12
|
-
export interface ToolDefinition {
|
|
13
|
-
name: string;
|
|
14
|
-
description: string;
|
|
15
|
-
inputSchema: {
|
|
16
|
-
type: 'object';
|
|
17
|
-
properties: Record<string, SchemaProperty>;
|
|
18
|
-
required?: string[];
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
export declare const TOOLS: ToolDefinition[];
|
|
22
|
-
export {};
|
|
23
|
-
//# sourceMappingURL=definitions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../src/definitions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC3C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,eAAO,MAAM,KAAK,EAAE,cAAc,EA+nBjC,CAAC"}
|