@coreidentitylabs/open-graph-memory-mcp 1.0.1
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/.agents/skills/mcp-builder/LICENSE.txt +202 -0
- package/.agents/skills/mcp-builder/SKILL.md +236 -0
- package/.agents/skills/mcp-builder/reference/evaluation.md +602 -0
- package/.agents/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/.agents/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/.agents/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/.agents/skills/mcp-builder/scripts/connections.py +151 -0
- package/.agents/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/.agents/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/.agents/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/.env.example +26 -0
- package/Implementation Plan.md +358 -0
- package/README.md +187 -0
- package/dist/constants.d.ts +34 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +40 -0
- package/dist/constants.js.map +1 -0
- package/dist/encoding/embedder.d.ts +12 -0
- package/dist/encoding/embedder.d.ts.map +1 -0
- package/dist/encoding/embedder.js +85 -0
- package/dist/encoding/embedder.js.map +1 -0
- package/dist/encoding/pipeline.d.ts +28 -0
- package/dist/encoding/pipeline.d.ts.map +1 -0
- package/dist/encoding/pipeline.js +146 -0
- package/dist/encoding/pipeline.js.map +1 -0
- package/dist/evolution/consolidator.d.ts +12 -0
- package/dist/evolution/consolidator.d.ts.map +1 -0
- package/dist/evolution/consolidator.js +212 -0
- package/dist/evolution/consolidator.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/openai-provider.d.ts +23 -0
- package/dist/llm/openai-provider.d.ts.map +1 -0
- package/dist/llm/openai-provider.js +141 -0
- package/dist/llm/openai-provider.js.map +1 -0
- package/dist/llm/prompts.d.ts +10 -0
- package/dist/llm/prompts.d.ts.map +1 -0
- package/dist/llm/prompts.js +63 -0
- package/dist/llm/prompts.js.map +1 -0
- package/dist/llm/provider.d.ts +7 -0
- package/dist/llm/provider.d.ts.map +1 -0
- package/dist/llm/provider.js +25 -0
- package/dist/llm/provider.js.map +1 -0
- package/dist/resources/context-resource.d.ts +8 -0
- package/dist/resources/context-resource.d.ts.map +1 -0
- package/dist/resources/context-resource.js +51 -0
- package/dist/resources/context-resource.js.map +1 -0
- package/dist/retrieval/search.d.ts +24 -0
- package/dist/retrieval/search.d.ts.map +1 -0
- package/dist/retrieval/search.js +143 -0
- package/dist/retrieval/search.js.map +1 -0
- package/dist/storage/factory.d.ts +10 -0
- package/dist/storage/factory.d.ts.map +1 -0
- package/dist/storage/factory.js +35 -0
- package/dist/storage/factory.js.map +1 -0
- package/dist/storage/json-store.d.ts +34 -0
- package/dist/storage/json-store.d.ts.map +1 -0
- package/dist/storage/json-store.js +248 -0
- package/dist/storage/json-store.js.map +1 -0
- package/dist/storage/neo4j-store.d.ts +31 -0
- package/dist/storage/neo4j-store.d.ts.map +1 -0
- package/dist/storage/neo4j-store.js +440 -0
- package/dist/storage/neo4j-store.js.map +1 -0
- package/dist/tools/memory-tools.d.ts +4 -0
- package/dist/tools/memory-tools.d.ts.map +1 -0
- package/dist/tools/memory-tools.js +873 -0
- package/dist/tools/memory-tools.js.map +1 -0
- package/dist/types.d.ts +129 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/implementation_plan.md.resolved.md +322 -0
- package/package.json +43 -0
- package/src/constants.ts +52 -0
- package/src/encoding/embedder.ts +93 -0
- package/src/encoding/pipeline.ts +197 -0
- package/src/evolution/consolidator.ts +281 -0
- package/src/index.ts +67 -0
- package/src/llm/openai-provider.ts +208 -0
- package/src/llm/prompts.ts +66 -0
- package/src/llm/provider.ts +37 -0
- package/src/resources/context-resource.ts +74 -0
- package/src/retrieval/search.ts +203 -0
- package/src/storage/factory.ts +48 -0
- package/src/storage/json-store.ts +325 -0
- package/src/storage/neo4j-store.ts +564 -0
- package/src/tools/memory-tools.ts +1067 -0
- package/src/types.ts +207 -0
- package/tsconfig.json +21 -0
package/src/types.ts
ADDED
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Open-Memory MCP Server — Core Type Definitions
|
|
3
|
+
// =============================================================================
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Node types in the memory graph.
|
|
7
|
+
* - entity: People, tools, libraries, services
|
|
8
|
+
* - concept: Abstract ideas, patterns, paradigms
|
|
9
|
+
* - event: Something that happened (meeting, deployment, decision)
|
|
10
|
+
* - code_pattern: Recurring code structures, architectures
|
|
11
|
+
* - decision: Technical decisions and their rationale
|
|
12
|
+
* - conversation: Raw conversation history snapshot
|
|
13
|
+
*/
|
|
14
|
+
export type NodeType =
|
|
15
|
+
| "entity"
|
|
16
|
+
| "concept"
|
|
17
|
+
| "event"
|
|
18
|
+
| "code_pattern"
|
|
19
|
+
| "decision"
|
|
20
|
+
| "conversation";
|
|
21
|
+
|
|
22
|
+
// -----------------------------------------------------------------------------
|
|
23
|
+
// Memory Graph Nodes & Edges
|
|
24
|
+
// -----------------------------------------------------------------------------
|
|
25
|
+
|
|
26
|
+
export interface MemoryNode {
|
|
27
|
+
id: string;
|
|
28
|
+
name: string;
|
|
29
|
+
type: NodeType;
|
|
30
|
+
description: string;
|
|
31
|
+
embedding?: number[];
|
|
32
|
+
metadata: Record<string, unknown>;
|
|
33
|
+
createdAt: string;
|
|
34
|
+
updatedAt: string;
|
|
35
|
+
/** Bi-temporal: when the fact became true in the real world */
|
|
36
|
+
validFrom?: string;
|
|
37
|
+
/** Bi-temporal: when the fact ceased to be true */
|
|
38
|
+
validUntil?: string;
|
|
39
|
+
/** Origin of this memory */
|
|
40
|
+
source?: string;
|
|
41
|
+
/** Number of times this node was retrieved */
|
|
42
|
+
accessCount: number;
|
|
43
|
+
/** Last time this node was accessed */
|
|
44
|
+
lastAccessedAt?: string;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface MemoryEdge {
|
|
48
|
+
id: string;
|
|
49
|
+
/** Source node ID */
|
|
50
|
+
source: string;
|
|
51
|
+
/** Target node ID */
|
|
52
|
+
target: string;
|
|
53
|
+
/** Relationship type, e.g. "uses", "depends_on", "decided_to" */
|
|
54
|
+
relation: string;
|
|
55
|
+
/** Natural language description of the relationship */
|
|
56
|
+
description: string;
|
|
57
|
+
/** Confidence/strength weight (0-1) */
|
|
58
|
+
weight: number;
|
|
59
|
+
metadata: Record<string, unknown>;
|
|
60
|
+
createdAt: string;
|
|
61
|
+
updatedAt: string;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// -----------------------------------------------------------------------------
|
|
65
|
+
// Search & Retrieval Types
|
|
66
|
+
// -----------------------------------------------------------------------------
|
|
67
|
+
|
|
68
|
+
export interface ScoredNode {
|
|
69
|
+
node: MemoryNode;
|
|
70
|
+
score: number;
|
|
71
|
+
matchType: "semantic" | "text" | "graph";
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export interface Subgraph {
|
|
75
|
+
nodes: MemoryNode[];
|
|
76
|
+
edges: MemoryEdge[];
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface SearchResult {
|
|
80
|
+
nodes: ScoredNode[];
|
|
81
|
+
relatedEdges: MemoryEdge[];
|
|
82
|
+
totalNodes: number;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export interface NodeFilter {
|
|
86
|
+
type?: NodeType;
|
|
87
|
+
source?: string;
|
|
88
|
+
createdAfter?: string;
|
|
89
|
+
createdBefore?: string;
|
|
90
|
+
nameContains?: string;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// -----------------------------------------------------------------------------
|
|
94
|
+
// Graph Statistics
|
|
95
|
+
// -----------------------------------------------------------------------------
|
|
96
|
+
|
|
97
|
+
export interface GraphStats {
|
|
98
|
+
totalNodes: number;
|
|
99
|
+
totalEdges: number;
|
|
100
|
+
nodesByType: Record<string, number>;
|
|
101
|
+
storageBackend: string;
|
|
102
|
+
lastConsolidated?: string;
|
|
103
|
+
memoryFilePath?: string;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// -----------------------------------------------------------------------------
|
|
107
|
+
// Storage Backend Interface
|
|
108
|
+
// -----------------------------------------------------------------------------
|
|
109
|
+
|
|
110
|
+
export interface StorageBackend {
|
|
111
|
+
initialize(): Promise<void>;
|
|
112
|
+
|
|
113
|
+
// Node operations
|
|
114
|
+
addNode(node: MemoryNode): Promise<void>;
|
|
115
|
+
updateNode(
|
|
116
|
+
id: string,
|
|
117
|
+
updates: Partial<MemoryNode>,
|
|
118
|
+
): Promise<MemoryNode | null>;
|
|
119
|
+
deleteNode(id: string): Promise<boolean>;
|
|
120
|
+
getNode(id: string): Promise<MemoryNode | null>;
|
|
121
|
+
getNodeByName(name: string): Promise<MemoryNode | null>;
|
|
122
|
+
findNodes(filter: NodeFilter): Promise<MemoryNode[]>;
|
|
123
|
+
getAllNodes(
|
|
124
|
+
limit: number,
|
|
125
|
+
offset: number,
|
|
126
|
+
): Promise<{ nodes: MemoryNode[]; total: number }>;
|
|
127
|
+
findNodesByEmbedding(
|
|
128
|
+
embedding: number[],
|
|
129
|
+
topK: number,
|
|
130
|
+
): Promise<ScoredNode[]>;
|
|
131
|
+
|
|
132
|
+
// Edge operations
|
|
133
|
+
addEdge(edge: MemoryEdge): Promise<void>;
|
|
134
|
+
updateEdge(
|
|
135
|
+
id: string,
|
|
136
|
+
updates: Partial<MemoryEdge>,
|
|
137
|
+
): Promise<MemoryEdge | null>;
|
|
138
|
+
deleteEdge(id: string): Promise<boolean>;
|
|
139
|
+
getEdge(id: string): Promise<MemoryEdge | null>;
|
|
140
|
+
getEdgesForNode(
|
|
141
|
+
nodeId: string,
|
|
142
|
+
direction?: "in" | "out" | "both",
|
|
143
|
+
): Promise<MemoryEdge[]>;
|
|
144
|
+
getEdgesBetween(sourceId: string, targetId: string): Promise<MemoryEdge[]>;
|
|
145
|
+
|
|
146
|
+
// Graph traversal
|
|
147
|
+
getNeighborhood(nodeId: string, depth: number): Promise<Subgraph>;
|
|
148
|
+
|
|
149
|
+
// Stats & lifecycle
|
|
150
|
+
getStats(): Promise<GraphStats>;
|
|
151
|
+
close(): Promise<void>;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// -----------------------------------------------------------------------------
|
|
155
|
+
// Encoding / Extraction Types
|
|
156
|
+
// -----------------------------------------------------------------------------
|
|
157
|
+
|
|
158
|
+
export interface ExtractedEntity {
|
|
159
|
+
name: string;
|
|
160
|
+
type: NodeType;
|
|
161
|
+
description: string;
|
|
162
|
+
metadata?: Record<string, unknown>;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export interface ExtractedRelation {
|
|
166
|
+
source: string;
|
|
167
|
+
target: string;
|
|
168
|
+
relation: string;
|
|
169
|
+
description?: string;
|
|
170
|
+
weight?: number;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
export interface ExtractionResult {
|
|
174
|
+
entities: ExtractedEntity[];
|
|
175
|
+
relations: ExtractedRelation[];
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// -----------------------------------------------------------------------------
|
|
179
|
+
// LLM Provider Interface (Optional)
|
|
180
|
+
// -----------------------------------------------------------------------------
|
|
181
|
+
|
|
182
|
+
export interface LLMProvider {
|
|
183
|
+
extractEntitiesAndRelations(
|
|
184
|
+
text: string,
|
|
185
|
+
existingEntities: string[],
|
|
186
|
+
): Promise<ExtractionResult>;
|
|
187
|
+
generateEmbedding(text: string): Promise<number[]>;
|
|
188
|
+
generateEmbeddingBatch(texts: string[]): Promise<number[][]>;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// -----------------------------------------------------------------------------
|
|
192
|
+
// Consolidation Types
|
|
193
|
+
// -----------------------------------------------------------------------------
|
|
194
|
+
|
|
195
|
+
export interface ConsolidationResult {
|
|
196
|
+
mergedNodes: number;
|
|
197
|
+
resolvedConflicts: number;
|
|
198
|
+
inferredEdges: number;
|
|
199
|
+
prunedNodes: number;
|
|
200
|
+
duration: number;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
export type ConsolidationStrategy =
|
|
204
|
+
| "full"
|
|
205
|
+
| "merge_only"
|
|
206
|
+
| "prune_only"
|
|
207
|
+
| "infer_only";
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"module": "Node16",
|
|
5
|
+
"moduleResolution": "Node16",
|
|
6
|
+
"lib": ["ES2022"],
|
|
7
|
+
"outDir": "./dist",
|
|
8
|
+
"rootDir": "./src",
|
|
9
|
+
"strict": true,
|
|
10
|
+
"esModuleInterop": true,
|
|
11
|
+
"skipLibCheck": true,
|
|
12
|
+
"forceConsistentCasingInFileNames": true,
|
|
13
|
+
"declaration": true,
|
|
14
|
+
"declarationMap": true,
|
|
15
|
+
"sourceMap": true,
|
|
16
|
+
"allowSyntheticDefaultImports": true,
|
|
17
|
+
"resolveJsonModule": true
|
|
18
|
+
},
|
|
19
|
+
"include": ["src/**/*"],
|
|
20
|
+
"exclude": ["node_modules", "dist"]
|
|
21
|
+
}
|