mcard-js 2.0.0 → 2.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.
- package/README.md +91 -3
- package/dist/model/ContentTypeInterpreter.d.ts +16 -0
- package/dist/model/ContentTypeInterpreter.d.ts.map +1 -0
- package/dist/model/ContentTypeInterpreter.js +78 -0
- package/dist/model/ContentTypeInterpreter.js.map +1 -0
- package/dist/model/GTime.d.ts +15 -0
- package/dist/model/GTime.d.ts.map +1 -1
- package/dist/model/GTime.js +44 -2
- package/dist/model/GTime.js.map +1 -1
- package/dist/model/detectors/BaseDetector.d.ts +26 -0
- package/dist/model/detectors/BaseDetector.d.ts.map +1 -0
- package/dist/model/detectors/BaseDetector.js +5 -0
- package/dist/model/detectors/BaseDetector.js.map +1 -0
- package/dist/model/detectors/BinaryDetector.d.ts +12 -0
- package/dist/model/detectors/BinaryDetector.d.ts.map +1 -0
- package/dist/model/detectors/BinaryDetector.js +82 -0
- package/dist/model/detectors/BinaryDetector.js.map +1 -0
- package/dist/model/detectors/DataFormatDetectors.d.ts +29 -0
- package/dist/model/detectors/DataFormatDetectors.d.ts.map +1 -0
- package/dist/model/detectors/DataFormatDetectors.js +223 -0
- package/dist/model/detectors/DataFormatDetectors.js.map +1 -0
- package/dist/model/detectors/LanguageDetector.d.ts +11 -0
- package/dist/model/detectors/LanguageDetector.d.ts.map +1 -0
- package/dist/model/detectors/LanguageDetector.js +148 -0
- package/dist/model/detectors/LanguageDetector.js.map +1 -0
- package/dist/model/detectors/MarkupDetectors.d.ts +22 -0
- package/dist/model/detectors/MarkupDetectors.d.ts.map +1 -0
- package/dist/model/detectors/MarkupDetectors.js +132 -0
- package/dist/model/detectors/MarkupDetectors.js.map +1 -0
- package/dist/model/detectors/OBJDetector.d.ts +8 -0
- package/dist/model/detectors/OBJDetector.d.ts.map +1 -0
- package/dist/model/detectors/OBJDetector.js +48 -0
- package/dist/model/detectors/OBJDetector.js.map +1 -0
- package/dist/model/detectors/registry.d.ts +13 -0
- package/dist/model/detectors/registry.d.ts.map +1 -0
- package/dist/model/detectors/registry.js +67 -0
- package/dist/model/detectors/registry.js.map +1 -0
- package/dist/ptr/llm/providers/OllamaEmbeddingProvider.d.ts +20 -0
- package/dist/ptr/llm/providers/OllamaEmbeddingProvider.d.ts.map +1 -0
- package/dist/ptr/llm/providers/OllamaEmbeddingProvider.js +42 -0
- package/dist/ptr/llm/providers/OllamaEmbeddingProvider.js.map +1 -0
- package/dist/ptr/node/CLMLoader.d.ts.map +1 -1
- package/dist/ptr/node/CLMLoader.js +8 -0
- package/dist/ptr/node/CLMLoader.js.map +1 -1
- package/dist/ptr/node/CLMRunner.d.ts.map +1 -1
- package/dist/ptr/node/CLMRunner.js +4 -3
- package/dist/ptr/node/CLMRunner.js.map +1 -1
- package/dist/ptr/node/Runtimes.d.ts +7 -0
- package/dist/ptr/node/Runtimes.d.ts.map +1 -1
- package/dist/ptr/node/Runtimes.js +94 -3
- package/dist/ptr/node/Runtimes.js.map +1 -1
- package/dist/rag/HandleVectorStore.d.ts +201 -0
- package/dist/rag/HandleVectorStore.d.ts.map +1 -0
- package/dist/rag/HandleVectorStore.js +527 -0
- package/dist/rag/HandleVectorStore.js.map +1 -0
- package/dist/rag/PersistentIndexer.d.ts +144 -0
- package/dist/rag/PersistentIndexer.d.ts.map +1 -0
- package/dist/rag/PersistentIndexer.js +275 -0
- package/dist/rag/PersistentIndexer.js.map +1 -0
- package/dist/rag/embeddings/VisionEmbeddingProvider.d.ts +87 -0
- package/dist/rag/embeddings/VisionEmbeddingProvider.d.ts.map +1 -0
- package/dist/rag/embeddings/VisionEmbeddingProvider.js +164 -0
- package/dist/rag/embeddings/VisionEmbeddingProvider.js.map +1 -0
- package/dist/rag/graph/community.d.ts +56 -0
- package/dist/rag/graph/community.d.ts.map +1 -0
- package/dist/rag/graph/community.js +247 -0
- package/dist/rag/graph/community.js.map +1 -0
- package/dist/rag/graph/extractor.d.ts +99 -0
- package/dist/rag/graph/extractor.d.ts.map +1 -0
- package/dist/rag/graph/extractor.js +210 -0
- package/dist/rag/graph/extractor.js.map +1 -0
- package/dist/rag/graph/store.d.ts +176 -0
- package/dist/rag/graph/store.d.ts.map +1 -0
- package/dist/rag/graph/store.js +504 -0
- package/dist/rag/graph/store.js.map +1 -0
- package/dist/rag/index.d.ts +19 -0
- package/dist/rag/index.d.ts.map +1 -0
- package/dist/rag/index.js +24 -0
- package/dist/rag/index.js.map +1 -0
- package/dist/rag/semanticVersioning.d.ts +187 -0
- package/dist/rag/semanticVersioning.d.ts.map +1 -0
- package/dist/rag/semanticVersioning.js +253 -0
- package/dist/rag/semanticVersioning.js.map +1 -0
- package/dist/storage/IndexedDBEngine.d.ts.map +1 -1
- package/dist/storage/IndexedDBEngine.js +9 -1
- package/dist/storage/IndexedDBEngine.js.map +1 -1
- package/dist/storage/SqliteNodeEngine.d.ts.map +1 -1
- package/dist/storage/SqliteNodeEngine.js +26 -4
- package/dist/storage/SqliteNodeEngine.js.map +1 -1
- package/dist/storage/SqliteWasmEngine.d.ts.map +1 -1
- package/dist/storage/SqliteWasmEngine.js +9 -1
- package/dist/storage/SqliteWasmEngine.js.map +1 -1
- package/dist/storage/StorageAdapter.d.ts +2 -0
- package/dist/storage/StorageAdapter.d.ts.map +1 -1
- package/dist/storage/VectorStore.d.ts +28 -5
- package/dist/storage/VectorStore.d.ts.map +1 -1
- package/dist/storage/VectorStore.js +110 -50
- package/dist/storage/VectorStore.js.map +1 -1
- package/dist/storage/schema.d.ts +123 -80
- package/dist/storage/schema.d.ts.map +1 -1
- package/dist/storage/schema.js +305 -217
- package/dist/storage/schema.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,504 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph Store
|
|
3
|
+
*
|
|
4
|
+
* SQLite-based knowledge graph storage with traversal capabilities.
|
|
5
|
+
*
|
|
6
|
+
* Mirrors Python: mcard/rag/graph/store.py
|
|
7
|
+
*/
|
|
8
|
+
import Database from 'better-sqlite3';
|
|
9
|
+
import { initGraphSchemas } from '../../storage/schema';
|
|
10
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
11
|
+
// GraphStore Class
|
|
12
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
13
|
+
/**
|
|
14
|
+
* SQLite-based storage for knowledge graph.
|
|
15
|
+
*
|
|
16
|
+
* Features:
|
|
17
|
+
* - Entity and relationship storage
|
|
18
|
+
* - Graph traversal (BFS)
|
|
19
|
+
* - Multi-hop pathfinding
|
|
20
|
+
* - Community management
|
|
21
|
+
*
|
|
22
|
+
* Usage:
|
|
23
|
+
* const store = new GraphStore('graph.db');
|
|
24
|
+
*
|
|
25
|
+
* // Add entities
|
|
26
|
+
* const entityId = store.addEntity(entity, sourceHash);
|
|
27
|
+
*
|
|
28
|
+
* // Add relationships
|
|
29
|
+
* store.addRelationship(sourceId, targetId, 'relates_to', sourceHash);
|
|
30
|
+
*
|
|
31
|
+
* // Find related entities
|
|
32
|
+
* const related = store.findRelated('MCard', 2);
|
|
33
|
+
*/
|
|
34
|
+
export class GraphStore {
|
|
35
|
+
db;
|
|
36
|
+
dbPath;
|
|
37
|
+
constructor(dbPath = ':memory:') {
|
|
38
|
+
this.dbPath = dbPath;
|
|
39
|
+
this.db = this.initDatabase();
|
|
40
|
+
}
|
|
41
|
+
initDatabase() {
|
|
42
|
+
const db = new Database(this.dbPath);
|
|
43
|
+
// Create all graph tables using SSoT schema
|
|
44
|
+
initGraphSchemas(db);
|
|
45
|
+
console.debug(`Initialized graph store at ${this.dbPath}`);
|
|
46
|
+
return db;
|
|
47
|
+
}
|
|
48
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
49
|
+
// Entity Operations
|
|
50
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
51
|
+
/**
|
|
52
|
+
* Add an entity to the graph.
|
|
53
|
+
*
|
|
54
|
+
* @param entity - Entity to add
|
|
55
|
+
* @param sourceHash - Source MCard hash
|
|
56
|
+
* @param embedding - Optional entity embedding
|
|
57
|
+
* @returns Entity ID
|
|
58
|
+
*/
|
|
59
|
+
addEntity(entity, sourceHash, embedding) {
|
|
60
|
+
const now = new Date().toISOString();
|
|
61
|
+
try {
|
|
62
|
+
const stmt = this.db.prepare(`
|
|
63
|
+
INSERT INTO graph_entities (name, type, description, source_hash, embedding, created_at)
|
|
64
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
65
|
+
`);
|
|
66
|
+
const result = stmt.run(entity.name, entity.type, entity.description, sourceHash, embedding || null, now);
|
|
67
|
+
return result.lastInsertRowid;
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
// Entity already exists, get its ID
|
|
71
|
+
if (error.code === 'SQLITE_CONSTRAINT_UNIQUE' || error.message?.includes('UNIQUE')) {
|
|
72
|
+
const stmt = this.db.prepare(`
|
|
73
|
+
SELECT id FROM graph_entities
|
|
74
|
+
WHERE name = ? AND type = ? AND source_hash = ?
|
|
75
|
+
`);
|
|
76
|
+
const row = stmt.get(entity.name, entity.type, sourceHash);
|
|
77
|
+
return row?.id ?? -1;
|
|
78
|
+
}
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get entity by name (case-insensitive)
|
|
84
|
+
*/
|
|
85
|
+
getEntityByName(name) {
|
|
86
|
+
const stmt = this.db.prepare(`
|
|
87
|
+
SELECT id, name, type, description, source_hash, created_at
|
|
88
|
+
FROM graph_entities
|
|
89
|
+
WHERE LOWER(name) = LOWER(?)
|
|
90
|
+
LIMIT 1
|
|
91
|
+
`);
|
|
92
|
+
const row = stmt.get(name);
|
|
93
|
+
if (row) {
|
|
94
|
+
return {
|
|
95
|
+
id: row.id,
|
|
96
|
+
name: row.name,
|
|
97
|
+
type: row.type,
|
|
98
|
+
description: row.description,
|
|
99
|
+
sourceHash: row.source_hash,
|
|
100
|
+
createdAt: row.created_at,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get entity by ID
|
|
107
|
+
*/
|
|
108
|
+
getEntityById(entityId) {
|
|
109
|
+
const stmt = this.db.prepare(`
|
|
110
|
+
SELECT id, name, type, description, source_hash, created_at
|
|
111
|
+
FROM graph_entities
|
|
112
|
+
WHERE id = ?
|
|
113
|
+
`);
|
|
114
|
+
const row = stmt.get(entityId);
|
|
115
|
+
if (row) {
|
|
116
|
+
return {
|
|
117
|
+
id: row.id,
|
|
118
|
+
name: row.name,
|
|
119
|
+
type: row.type,
|
|
120
|
+
description: row.description,
|
|
121
|
+
sourceHash: row.source_hash,
|
|
122
|
+
createdAt: row.created_at,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Search entities by name pattern
|
|
129
|
+
*/
|
|
130
|
+
searchEntities(query, typeFilter, limit = 10) {
|
|
131
|
+
let stmt;
|
|
132
|
+
let rows;
|
|
133
|
+
if (typeFilter) {
|
|
134
|
+
stmt = this.db.prepare(`
|
|
135
|
+
SELECT id, name, type, description, source_hash
|
|
136
|
+
FROM graph_entities
|
|
137
|
+
WHERE name LIKE ? AND type = ?
|
|
138
|
+
LIMIT ?
|
|
139
|
+
`);
|
|
140
|
+
rows = stmt.all(`%${query}%`, typeFilter, limit);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
stmt = this.db.prepare(`
|
|
144
|
+
SELECT id, name, type, description, source_hash
|
|
145
|
+
FROM graph_entities
|
|
146
|
+
WHERE name LIKE ?
|
|
147
|
+
LIMIT ?
|
|
148
|
+
`);
|
|
149
|
+
rows = stmt.all(`%${query}%`, limit);
|
|
150
|
+
}
|
|
151
|
+
return rows.map(r => ({
|
|
152
|
+
id: r.id,
|
|
153
|
+
name: r.name,
|
|
154
|
+
type: r.type,
|
|
155
|
+
description: r.description,
|
|
156
|
+
sourceHash: r.source_hash,
|
|
157
|
+
}));
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get all entities from a source MCard
|
|
161
|
+
*/
|
|
162
|
+
getEntitiesBySource(sourceHash) {
|
|
163
|
+
const stmt = this.db.prepare(`
|
|
164
|
+
SELECT id, name, type, description
|
|
165
|
+
FROM graph_entities
|
|
166
|
+
WHERE source_hash = ?
|
|
167
|
+
`);
|
|
168
|
+
const rows = stmt.all(sourceHash);
|
|
169
|
+
return rows.map(r => ({
|
|
170
|
+
id: r.id,
|
|
171
|
+
name: r.name,
|
|
172
|
+
type: r.type,
|
|
173
|
+
description: r.description,
|
|
174
|
+
sourceHash: sourceHash,
|
|
175
|
+
}));
|
|
176
|
+
}
|
|
177
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
178
|
+
// Relationship Operations
|
|
179
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
180
|
+
/**
|
|
181
|
+
* Add a relationship between entities.
|
|
182
|
+
*
|
|
183
|
+
* @param sourceEntityId - Source entity ID
|
|
184
|
+
* @param targetEntityId - Target entity ID
|
|
185
|
+
* @param relationship - Relationship type/verb
|
|
186
|
+
* @param sourceHash - Source MCard hash
|
|
187
|
+
* @param description - Optional description
|
|
188
|
+
* @param weight - Relationship weight
|
|
189
|
+
* @returns Relationship ID
|
|
190
|
+
*/
|
|
191
|
+
addRelationship(sourceEntityId, targetEntityId, relationship, sourceHash, description = '', weight = 1.0) {
|
|
192
|
+
const now = new Date().toISOString();
|
|
193
|
+
try {
|
|
194
|
+
const stmt = this.db.prepare(`
|
|
195
|
+
INSERT INTO graph_relationships
|
|
196
|
+
(source_entity_id, target_entity_id, relationship, description, weight, source_hash, created_at)
|
|
197
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
198
|
+
`);
|
|
199
|
+
const result = stmt.run(sourceEntityId, targetEntityId, relationship, description, weight, sourceHash, now);
|
|
200
|
+
return result.lastInsertRowid;
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
// Relationship already exists
|
|
204
|
+
if (error.code === 'SQLITE_CONSTRAINT_UNIQUE' || error.message?.includes('UNIQUE')) {
|
|
205
|
+
return -1;
|
|
206
|
+
}
|
|
207
|
+
throw error;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Get outgoing relationships from an entity
|
|
212
|
+
*/
|
|
213
|
+
getRelationshipsFrom(entityId) {
|
|
214
|
+
const stmt = this.db.prepare(`
|
|
215
|
+
SELECT r.id, r.relationship, r.description, r.weight,
|
|
216
|
+
e.id as target_id, e.name as target_name, e.type as target_type
|
|
217
|
+
FROM graph_relationships r
|
|
218
|
+
JOIN graph_entities e ON r.target_entity_id = e.id
|
|
219
|
+
WHERE r.source_entity_id = ?
|
|
220
|
+
`);
|
|
221
|
+
const rows = stmt.all(entityId);
|
|
222
|
+
return rows.map(r => ({
|
|
223
|
+
relId: r.id,
|
|
224
|
+
relationship: r.relationship,
|
|
225
|
+
description: r.description,
|
|
226
|
+
weight: r.weight,
|
|
227
|
+
targetId: r.target_id,
|
|
228
|
+
targetName: r.target_name,
|
|
229
|
+
targetType: r.target_type,
|
|
230
|
+
}));
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Get incoming relationships to an entity
|
|
234
|
+
*/
|
|
235
|
+
getRelationshipsTo(entityId) {
|
|
236
|
+
const stmt = this.db.prepare(`
|
|
237
|
+
SELECT r.id, r.relationship, r.description, r.weight,
|
|
238
|
+
e.id as source_id, e.name as source_name, e.type as source_type
|
|
239
|
+
FROM graph_relationships r
|
|
240
|
+
JOIN graph_entities e ON r.source_entity_id = e.id
|
|
241
|
+
WHERE r.target_entity_id = ?
|
|
242
|
+
`);
|
|
243
|
+
const rows = stmt.all(entityId);
|
|
244
|
+
return rows.map(r => ({
|
|
245
|
+
relId: r.id,
|
|
246
|
+
relationship: r.relationship,
|
|
247
|
+
description: r.description,
|
|
248
|
+
weight: r.weight,
|
|
249
|
+
sourceId: r.source_id,
|
|
250
|
+
sourceName: r.source_name,
|
|
251
|
+
sourceType: r.source_type,
|
|
252
|
+
}));
|
|
253
|
+
}
|
|
254
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
255
|
+
// Community Operations
|
|
256
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
257
|
+
/**
|
|
258
|
+
* Add a community summary
|
|
259
|
+
*/
|
|
260
|
+
addCommunity(title, summary, memberIds, level = 0, parentId, embedding) {
|
|
261
|
+
const now = new Date().toISOString();
|
|
262
|
+
const stmt = this.db.prepare(`
|
|
263
|
+
INSERT INTO graph_communities
|
|
264
|
+
(title, summary, member_entity_ids, level, parent_community_id, embedding, created_at)
|
|
265
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
266
|
+
`);
|
|
267
|
+
const result = stmt.run(title, summary, JSON.stringify(memberIds), level, parentId ?? null, embedding ?? null, now);
|
|
268
|
+
return result.lastInsertRowid;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Get communities by level
|
|
272
|
+
*/
|
|
273
|
+
getCommunities(level = 0) {
|
|
274
|
+
const stmt = this.db.prepare(`
|
|
275
|
+
SELECT id, title, summary, member_entity_ids, level
|
|
276
|
+
FROM graph_communities
|
|
277
|
+
WHERE level = ?
|
|
278
|
+
`);
|
|
279
|
+
const rows = stmt.all(level);
|
|
280
|
+
return rows.map(r => ({
|
|
281
|
+
id: r.id,
|
|
282
|
+
title: r.title,
|
|
283
|
+
summary: r.summary,
|
|
284
|
+
memberIds: r.member_entity_ids ? JSON.parse(r.member_entity_ids) : [],
|
|
285
|
+
level: r.level,
|
|
286
|
+
}));
|
|
287
|
+
}
|
|
288
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
289
|
+
// Graph Traversal
|
|
290
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
291
|
+
/**
|
|
292
|
+
* Find entities within N hops of a given entity.
|
|
293
|
+
*
|
|
294
|
+
* @param entityName - Starting entity name
|
|
295
|
+
* @param hops - Maximum traversal depth
|
|
296
|
+
* @param direction - 'outgoing', 'incoming', or 'both'
|
|
297
|
+
* @returns List of related entities with their paths
|
|
298
|
+
*/
|
|
299
|
+
findRelated(entityName, hops = 2, direction = 'both') {
|
|
300
|
+
// Find starting entity
|
|
301
|
+
const start = this.getEntityByName(entityName);
|
|
302
|
+
if (!start)
|
|
303
|
+
return [];
|
|
304
|
+
const visited = new Set([start.id]);
|
|
305
|
+
const results = [];
|
|
306
|
+
const frontier = [[start.id, 0, [start.name]]];
|
|
307
|
+
while (frontier.length > 0) {
|
|
308
|
+
const [currentId, depth, path] = frontier.shift();
|
|
309
|
+
if (depth >= hops)
|
|
310
|
+
continue;
|
|
311
|
+
// Get adjacent entities
|
|
312
|
+
const neighbors = [];
|
|
313
|
+
if (direction === 'outgoing' || direction === 'both') {
|
|
314
|
+
for (const rel of this.getRelationshipsFrom(currentId)) {
|
|
315
|
+
neighbors.push([
|
|
316
|
+
rel.targetId,
|
|
317
|
+
rel.targetName,
|
|
318
|
+
rel.relationship,
|
|
319
|
+
'outgoing'
|
|
320
|
+
]);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
if (direction === 'incoming' || direction === 'both') {
|
|
324
|
+
for (const rel of this.getRelationshipsTo(currentId)) {
|
|
325
|
+
neighbors.push([
|
|
326
|
+
rel.sourceId,
|
|
327
|
+
rel.sourceName,
|
|
328
|
+
rel.relationship,
|
|
329
|
+
'incoming'
|
|
330
|
+
]);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
for (const [neighborId, neighborName, rel, dir] of neighbors) {
|
|
334
|
+
if (!visited.has(neighborId)) {
|
|
335
|
+
visited.add(neighborId);
|
|
336
|
+
const newPath = [...path, `--${rel}->`, neighborName];
|
|
337
|
+
const entity = this.getEntityById(neighborId);
|
|
338
|
+
if (entity) {
|
|
339
|
+
results.push({
|
|
340
|
+
entity,
|
|
341
|
+
depth: depth + 1,
|
|
342
|
+
path: newPath,
|
|
343
|
+
relationship: rel,
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
frontier.push([neighborId, depth + 1, newPath]);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return results;
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Find shortest path between two entities.
|
|
354
|
+
*
|
|
355
|
+
* @param sourceName - Starting entity name
|
|
356
|
+
* @param targetName - Target entity name
|
|
357
|
+
* @param maxDepth - Maximum path length
|
|
358
|
+
* @returns List of entity names in path, or null if no path
|
|
359
|
+
*/
|
|
360
|
+
findPath(sourceName, targetName, maxDepth = 4) {
|
|
361
|
+
const source = this.getEntityByName(sourceName);
|
|
362
|
+
const target = this.getEntityByName(targetName);
|
|
363
|
+
if (!source || !target)
|
|
364
|
+
return null;
|
|
365
|
+
if (source.id === target.id)
|
|
366
|
+
return [sourceName];
|
|
367
|
+
// BFS for shortest path
|
|
368
|
+
const visited = new Set([source.id]);
|
|
369
|
+
const queue = [[source.id, [source.name]]];
|
|
370
|
+
while (queue.length > 0) {
|
|
371
|
+
const [currentId, path] = queue.shift();
|
|
372
|
+
if (path.length > maxDepth)
|
|
373
|
+
continue;
|
|
374
|
+
for (const rel of this.getRelationshipsFrom(currentId)) {
|
|
375
|
+
const neighborId = rel.targetId;
|
|
376
|
+
if (neighborId === target.id) {
|
|
377
|
+
return [...path, `--${rel.relationship}->`, targetName];
|
|
378
|
+
}
|
|
379
|
+
if (!visited.has(neighborId)) {
|
|
380
|
+
visited.add(neighborId);
|
|
381
|
+
queue.push([
|
|
382
|
+
neighborId,
|
|
383
|
+
[...path, `--${rel.relationship}->`, rel.targetName]
|
|
384
|
+
]);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
return null;
|
|
389
|
+
}
|
|
390
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
391
|
+
// Extraction Tracking
|
|
392
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
393
|
+
/**
|
|
394
|
+
* Mark a source as having been extracted
|
|
395
|
+
*/
|
|
396
|
+
markExtracted(sourceHash, entityCount, relCount) {
|
|
397
|
+
const now = new Date().toISOString();
|
|
398
|
+
const stmt = this.db.prepare(`
|
|
399
|
+
INSERT OR REPLACE INTO graph_extractions
|
|
400
|
+
(hash, entity_count, relationship_count, extracted_at)
|
|
401
|
+
VALUES (?, ?, ?, ?)
|
|
402
|
+
`);
|
|
403
|
+
stmt.run(sourceHash, entityCount, relCount, now);
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Check if a source has been extracted
|
|
407
|
+
*/
|
|
408
|
+
isExtracted(sourceHash) {
|
|
409
|
+
const stmt = this.db.prepare('SELECT 1 FROM graph_extractions WHERE hash = ?');
|
|
410
|
+
return stmt.get(sourceHash) !== undefined;
|
|
411
|
+
}
|
|
412
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
413
|
+
// Statistics
|
|
414
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
415
|
+
countEntities() {
|
|
416
|
+
const stmt = this.db.prepare('SELECT COUNT(*) as count FROM graph_entities');
|
|
417
|
+
return stmt.get().count;
|
|
418
|
+
}
|
|
419
|
+
countRelationships() {
|
|
420
|
+
const stmt = this.db.prepare('SELECT COUNT(*) as count FROM graph_relationships');
|
|
421
|
+
return stmt.get().count;
|
|
422
|
+
}
|
|
423
|
+
countExtractions() {
|
|
424
|
+
const stmt = this.db.prepare('SELECT COUNT(*) as count FROM graph_extractions');
|
|
425
|
+
return stmt.get().count;
|
|
426
|
+
}
|
|
427
|
+
getEntityTypes() {
|
|
428
|
+
const stmt = this.db.prepare(`
|
|
429
|
+
SELECT type, COUNT(*) as count FROM graph_entities
|
|
430
|
+
GROUP BY type
|
|
431
|
+
ORDER BY COUNT(*) DESC
|
|
432
|
+
`);
|
|
433
|
+
const rows = stmt.all();
|
|
434
|
+
const result = {};
|
|
435
|
+
for (const row of rows) {
|
|
436
|
+
result[row.type] = row.count;
|
|
437
|
+
}
|
|
438
|
+
return result;
|
|
439
|
+
}
|
|
440
|
+
getStats() {
|
|
441
|
+
return {
|
|
442
|
+
entityCount: this.countEntities(),
|
|
443
|
+
relationshipCount: this.countRelationships(),
|
|
444
|
+
extractionCount: this.countExtractions(),
|
|
445
|
+
entityTypes: this.getEntityTypes(),
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Clear all graph data
|
|
450
|
+
*/
|
|
451
|
+
clear() {
|
|
452
|
+
this.db.exec('DELETE FROM graph_relationships');
|
|
453
|
+
this.db.exec('DELETE FROM graph_entities');
|
|
454
|
+
this.db.exec('DELETE FROM graph_communities');
|
|
455
|
+
this.db.exec('DELETE FROM graph_extractions');
|
|
456
|
+
console.info('Graph store cleared');
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Close the database connection
|
|
460
|
+
*/
|
|
461
|
+
close() {
|
|
462
|
+
this.db.close();
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
466
|
+
// Batch Operations
|
|
467
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
468
|
+
/**
|
|
469
|
+
* Store an extraction result in the graph.
|
|
470
|
+
*
|
|
471
|
+
* @param store - GraphStore instance
|
|
472
|
+
* @param result - ExtractionResult from GraphExtractor
|
|
473
|
+
* @param sourceHash - Source MCard hash
|
|
474
|
+
* @returns Tuple of [entityCount, relationshipCount] stored
|
|
475
|
+
*/
|
|
476
|
+
export function storeExtractionResult(store, result, sourceHash) {
|
|
477
|
+
if (!result.success) {
|
|
478
|
+
return [0, 0];
|
|
479
|
+
}
|
|
480
|
+
const entityMap = {};
|
|
481
|
+
// Add entities
|
|
482
|
+
for (const entity of result.entities) {
|
|
483
|
+
const entityId = store.addEntity(entity, sourceHash);
|
|
484
|
+
if (entityId > 0) {
|
|
485
|
+
entityMap[entity.name.toLowerCase()] = entityId;
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
// Add relationships
|
|
489
|
+
let relCount = 0;
|
|
490
|
+
for (const rel of result.relationships) {
|
|
491
|
+
const sourceId = entityMap[rel.source.toLowerCase()];
|
|
492
|
+
const targetId = entityMap[rel.target.toLowerCase()];
|
|
493
|
+
if (sourceId && targetId) {
|
|
494
|
+
const relId = store.addRelationship(sourceId, targetId, rel.relationship, sourceHash, rel.description);
|
|
495
|
+
if (relId > 0) {
|
|
496
|
+
relCount++;
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
// Mark as extracted
|
|
501
|
+
store.markExtracted(sourceHash, Object.keys(entityMap).length, relCount);
|
|
502
|
+
return [Object.keys(entityMap).length, relCount];
|
|
503
|
+
}
|
|
504
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/rag/graph/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RAG (Retrieval-Augmented Generation) Module
|
|
3
|
+
*
|
|
4
|
+
* Exports core RAG components for MCard including:
|
|
5
|
+
* - Persistent Indexing
|
|
6
|
+
* - Semantic Search (Vector Store)
|
|
7
|
+
* - Knowledge Graph (Nodes, Edges, Communities)
|
|
8
|
+
* - Embeddings (Text, Vision)
|
|
9
|
+
* - Semantic Versioning & Handle Management
|
|
10
|
+
*/
|
|
11
|
+
export * from './PersistentIndexer';
|
|
12
|
+
export * from './graph/store';
|
|
13
|
+
export * from './graph/extractor';
|
|
14
|
+
export * from './graph/community';
|
|
15
|
+
export * from './embeddings/VisionEmbeddingProvider';
|
|
16
|
+
export * from '../storage/VectorStore';
|
|
17
|
+
export * from './HandleVectorStore';
|
|
18
|
+
export * from './semanticVersioning';
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rag/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,cAAc,qBAAqB,CAAC;AAGpC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,sCAAsC,CAAC;AAGrD,cAAc,wBAAwB,CAAC;AAGvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RAG (Retrieval-Augmented Generation) Module
|
|
3
|
+
*
|
|
4
|
+
* Exports core RAG components for MCard including:
|
|
5
|
+
* - Persistent Indexing
|
|
6
|
+
* - Semantic Search (Vector Store)
|
|
7
|
+
* - Knowledge Graph (Nodes, Edges, Communities)
|
|
8
|
+
* - Embeddings (Text, Vision)
|
|
9
|
+
* - Semantic Versioning & Handle Management
|
|
10
|
+
*/
|
|
11
|
+
// Persistent Indexer
|
|
12
|
+
export * from './PersistentIndexer';
|
|
13
|
+
// Graph Components
|
|
14
|
+
export * from './graph/store';
|
|
15
|
+
export * from './graph/extractor';
|
|
16
|
+
export * from './graph/community';
|
|
17
|
+
// Embeddings
|
|
18
|
+
export * from './embeddings/VisionEmbeddingProvider';
|
|
19
|
+
// Vector Store Utilities
|
|
20
|
+
export * from '../storage/VectorStore';
|
|
21
|
+
// Handle Management & Semantic Versioning
|
|
22
|
+
export * from './HandleVectorStore';
|
|
23
|
+
export * from './semanticVersioning';
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rag/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,qBAAqB;AACrB,cAAc,qBAAqB,CAAC;AAEpC,mBAAmB;AACnB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAElC,aAAa;AACb,cAAc,sCAAsC,CAAC;AAErD,yBAAyB;AACzB,cAAc,wBAAwB,CAAC;AAEvC,0CAA0C;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC"}
|