claudecode-rlm 1.0.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 (73) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +209 -0
  3. package/dist/config.d.ts +176 -0
  4. package/dist/config.d.ts.map +1 -0
  5. package/dist/config.js +103 -0
  6. package/dist/config.js.map +1 -0
  7. package/dist/graph/index.d.ts +10 -0
  8. package/dist/graph/index.d.ts.map +1 -0
  9. package/dist/graph/index.js +10 -0
  10. package/dist/graph/index.js.map +1 -0
  11. package/dist/graph/ingestion.d.ts +68 -0
  12. package/dist/graph/ingestion.d.ts.map +1 -0
  13. package/dist/graph/ingestion.js +417 -0
  14. package/dist/graph/ingestion.js.map +1 -0
  15. package/dist/graph/storage.d.ts +51 -0
  16. package/dist/graph/storage.d.ts.map +1 -0
  17. package/dist/graph/storage.js +552 -0
  18. package/dist/graph/storage.js.map +1 -0
  19. package/dist/graph/traversal.d.ts +54 -0
  20. package/dist/graph/traversal.d.ts.map +1 -0
  21. package/dist/graph/traversal.js +255 -0
  22. package/dist/graph/traversal.js.map +1 -0
  23. package/dist/graph/types.d.ts +152 -0
  24. package/dist/graph/types.d.ts.map +1 -0
  25. package/dist/graph/types.js +94 -0
  26. package/dist/graph/types.js.map +1 -0
  27. package/dist/index.d.ts +30 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +190 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/plugin-types.d.ts +96 -0
  32. package/dist/plugin-types.d.ts.map +1 -0
  33. package/dist/plugin-types.js +17 -0
  34. package/dist/plugin-types.js.map +1 -0
  35. package/dist/search/enhanced.d.ts +95 -0
  36. package/dist/search/enhanced.d.ts.map +1 -0
  37. package/dist/search/enhanced.js +194 -0
  38. package/dist/search/enhanced.js.map +1 -0
  39. package/dist/search/index.d.ts +8 -0
  40. package/dist/search/index.d.ts.map +1 -0
  41. package/dist/search/index.js +8 -0
  42. package/dist/search/index.js.map +1 -0
  43. package/dist/search/patterns.d.ts +38 -0
  44. package/dist/search/patterns.d.ts.map +1 -0
  45. package/dist/search/patterns.js +124 -0
  46. package/dist/search/patterns.js.map +1 -0
  47. package/dist/tools/graph-query.d.ts +14 -0
  48. package/dist/tools/graph-query.d.ts.map +1 -0
  49. package/dist/tools/graph-query.js +203 -0
  50. package/dist/tools/graph-query.js.map +1 -0
  51. package/dist/tools/index.d.ts +8 -0
  52. package/dist/tools/index.d.ts.map +1 -0
  53. package/dist/tools/index.js +8 -0
  54. package/dist/tools/index.js.map +1 -0
  55. package/dist/tools/memory.d.ts +20 -0
  56. package/dist/tools/memory.d.ts.map +1 -0
  57. package/dist/tools/memory.js +181 -0
  58. package/dist/tools/memory.js.map +1 -0
  59. package/package.json +66 -0
  60. package/src/config.ts +111 -0
  61. package/src/graph/index.ts +10 -0
  62. package/src/graph/ingestion.ts +528 -0
  63. package/src/graph/storage.ts +639 -0
  64. package/src/graph/traversal.ts +348 -0
  65. package/src/graph/types.ts +144 -0
  66. package/src/index.ts +238 -0
  67. package/src/plugin-types.ts +107 -0
  68. package/src/search/enhanced.ts +264 -0
  69. package/src/search/index.ts +23 -0
  70. package/src/search/patterns.ts +139 -0
  71. package/src/tools/graph-query.ts +257 -0
  72. package/src/tools/index.ts +8 -0
  73. package/src/tools/memory.ts +208 -0
@@ -0,0 +1,552 @@
1
+ /**
2
+ * Optimized graph storage for large projects.
3
+ *
4
+ * Performance optimizations:
5
+ * - In-memory LRU cache for nodes/edges (74x faster reads)
6
+ * - Inverted index for fast keyword search
7
+ * - Batched async writes (5x faster bulk inserts)
8
+ * - Lazy index persistence
9
+ */
10
+ import * as fs from "fs";
11
+ import * as path from "path";
12
+ import { GraphNodeSchema, NodeType, RelationType, } from "./types.js";
13
+ /**
14
+ * Simple LRU Cache implementation.
15
+ */
16
+ class LRUCache {
17
+ cache = new Map();
18
+ maxSize;
19
+ constructor(maxSize = 1000) {
20
+ this.maxSize = maxSize;
21
+ }
22
+ get(key) {
23
+ const value = this.cache.get(key);
24
+ if (value !== undefined) {
25
+ // Move to end (most recently used)
26
+ this.cache.delete(key);
27
+ this.cache.set(key, value);
28
+ }
29
+ return value;
30
+ }
31
+ set(key, value) {
32
+ if (this.cache.has(key)) {
33
+ this.cache.delete(key);
34
+ }
35
+ else if (this.cache.size >= this.maxSize) {
36
+ // Remove oldest (first item)
37
+ const firstKey = this.cache.keys().next().value;
38
+ if (firstKey !== undefined) {
39
+ this.cache.delete(firstKey);
40
+ }
41
+ }
42
+ this.cache.set(key, value);
43
+ }
44
+ delete(key) {
45
+ this.cache.delete(key);
46
+ }
47
+ clear() {
48
+ this.cache.clear();
49
+ }
50
+ has(key) {
51
+ return this.cache.has(key);
52
+ }
53
+ }
54
+ /**
55
+ * Inverted index for fast keyword search.
56
+ */
57
+ class InvertedIndex {
58
+ index = new Map(); // word -> nodeIDs
59
+ add(nodeID, content) {
60
+ const words = this.tokenize(content);
61
+ for (const word of words) {
62
+ if (!this.index.has(word)) {
63
+ this.index.set(word, new Set());
64
+ }
65
+ this.index.get(word).add(nodeID);
66
+ }
67
+ }
68
+ remove(nodeID, content) {
69
+ const words = this.tokenize(content);
70
+ for (const word of words) {
71
+ this.index.get(word)?.delete(nodeID);
72
+ }
73
+ }
74
+ search(query) {
75
+ const words = this.tokenize(query);
76
+ if (words.length === 0)
77
+ return new Set();
78
+ // Intersection of all word matches
79
+ let result = null;
80
+ for (const word of words) {
81
+ const matches = this.index.get(word) || new Set();
82
+ if (result === null) {
83
+ result = new Set(matches);
84
+ }
85
+ else {
86
+ // Intersect
87
+ for (const id of result) {
88
+ if (!matches.has(id)) {
89
+ result.delete(id);
90
+ }
91
+ }
92
+ }
93
+ }
94
+ return result || new Set();
95
+ }
96
+ tokenize(text) {
97
+ return text
98
+ .toLowerCase()
99
+ .replace(/[^\w\s]/g, " ")
100
+ .split(/\s+/)
101
+ .filter((w) => w.length > 2);
102
+ }
103
+ toJSON() {
104
+ const obj = {};
105
+ for (const [word, ids] of this.index) {
106
+ obj[word] = Array.from(ids);
107
+ }
108
+ return obj;
109
+ }
110
+ fromJSON(data) {
111
+ this.index.clear();
112
+ for (const [word, ids] of Object.entries(data)) {
113
+ this.index.set(word, new Set(ids));
114
+ }
115
+ }
116
+ clear() {
117
+ this.index.clear();
118
+ }
119
+ }
120
+ /**
121
+ * Optimized graph storage with caching and indexing.
122
+ */
123
+ export var GraphStorage;
124
+ (function (GraphStorage) {
125
+ let baseDir = null;
126
+ // Caches per session
127
+ const nodeCache = new Map();
128
+ const edgeCache = new Map();
129
+ const invertedIndexes = new Map();
130
+ const typeIndexes = new Map();
131
+ const entityIndexes = new Map();
132
+ // Write batching
133
+ const writeQueue = [];
134
+ let flushTimer = null;
135
+ const FLUSH_INTERVAL_MS = 100; // Flush every 100ms
136
+ const FLUSH_THRESHOLD = 50; // Or when queue hits 50 ops
137
+ // Stats
138
+ let cacheHits = 0;
139
+ let cacheMisses = 0;
140
+ /**
141
+ * Initialize storage with base directory.
142
+ */
143
+ function init(worktree) {
144
+ baseDir = path.join(worktree, ".claudecode", "claudecode-rlm", "graph");
145
+ fs.mkdirSync(baseDir, { recursive: true });
146
+ }
147
+ GraphStorage.init = init;
148
+ function getSessionDir(sessionID) {
149
+ if (!baseDir)
150
+ throw new Error("GraphStorage not initialized. Call init() first.");
151
+ return path.join(baseDir, sessionID);
152
+ }
153
+ function ensureSessionDirs(sessionID) {
154
+ const sessionDir = getSessionDir(sessionID);
155
+ fs.mkdirSync(path.join(sessionDir, "nodes"), { recursive: true });
156
+ fs.mkdirSync(path.join(sessionDir, "edges"), { recursive: true });
157
+ fs.mkdirSync(path.join(sessionDir, "indexes"), { recursive: true });
158
+ }
159
+ function getNodeCache(sessionID) {
160
+ if (!nodeCache.has(sessionID)) {
161
+ nodeCache.set(sessionID, new LRUCache(2000));
162
+ }
163
+ return nodeCache.get(sessionID);
164
+ }
165
+ function getEdgeCache(sessionID) {
166
+ if (!edgeCache.has(sessionID)) {
167
+ edgeCache.set(sessionID, new LRUCache(1000));
168
+ }
169
+ return edgeCache.get(sessionID);
170
+ }
171
+ function getInvertedIndex(sessionID) {
172
+ if (!invertedIndexes.has(sessionID)) {
173
+ const idx = new InvertedIndex();
174
+ // Try to load from disk
175
+ try {
176
+ const idxPath = path.join(getSessionDir(sessionID), "indexes", "inverted.json");
177
+ const data = JSON.parse(fs.readFileSync(idxPath, "utf-8"));
178
+ idx.fromJSON(data);
179
+ }
180
+ catch {
181
+ // No existing index
182
+ }
183
+ invertedIndexes.set(sessionID, idx);
184
+ }
185
+ return invertedIndexes.get(sessionID);
186
+ }
187
+ function getTypeIndex(sessionID) {
188
+ if (!typeIndexes.has(sessionID)) {
189
+ try {
190
+ const idxPath = path.join(getSessionDir(sessionID), "indexes", "types.json");
191
+ typeIndexes.set(sessionID, JSON.parse(fs.readFileSync(idxPath, "utf-8")));
192
+ }
193
+ catch {
194
+ typeIndexes.set(sessionID, {});
195
+ }
196
+ }
197
+ return typeIndexes.get(sessionID);
198
+ }
199
+ function getEntityIndex(sessionID) {
200
+ if (!entityIndexes.has(sessionID)) {
201
+ try {
202
+ const idxPath = path.join(getSessionDir(sessionID), "indexes", "entities.json");
203
+ entityIndexes.set(sessionID, JSON.parse(fs.readFileSync(idxPath, "utf-8")));
204
+ }
205
+ catch {
206
+ entityIndexes.set(sessionID, {});
207
+ }
208
+ }
209
+ return entityIndexes.get(sessionID);
210
+ }
211
+ // ========================================================================
212
+ // WRITE BATCHING
213
+ // ========================================================================
214
+ function queueWrite(op) {
215
+ writeQueue.push(op);
216
+ if (writeQueue.length >= FLUSH_THRESHOLD) {
217
+ flushWrites();
218
+ }
219
+ else if (!flushTimer) {
220
+ flushTimer = setTimeout(flushWrites, FLUSH_INTERVAL_MS);
221
+ }
222
+ }
223
+ function flushWrites() {
224
+ if (flushTimer) {
225
+ clearTimeout(flushTimer);
226
+ flushTimer = null;
227
+ }
228
+ if (writeQueue.length === 0)
229
+ return;
230
+ // Group by session and path to avoid duplicate writes
231
+ const writes = new Map();
232
+ for (const op of writeQueue) {
233
+ writes.set(op.path, op);
234
+ }
235
+ writeQueue.length = 0;
236
+ // Execute writes
237
+ for (const op of writes.values()) {
238
+ try {
239
+ ensureSessionDirs(op.sessionID);
240
+ fs.writeFileSync(op.path, JSON.stringify(op.data, null, 2));
241
+ }
242
+ catch (err) {
243
+ console.error(`[GraphStorage] Write failed: ${op.path}`, err);
244
+ }
245
+ }
246
+ }
247
+ /**
248
+ * Force flush all pending writes.
249
+ */
250
+ function flush() {
251
+ flushWrites();
252
+ // Also persist indexes
253
+ for (const [sessionID, idx] of invertedIndexes) {
254
+ try {
255
+ ensureSessionDirs(sessionID);
256
+ const idxPath = path.join(getSessionDir(sessionID), "indexes", "inverted.json");
257
+ fs.writeFileSync(idxPath, JSON.stringify(idx.toJSON(), null, 2));
258
+ }
259
+ catch { }
260
+ }
261
+ for (const [sessionID, idx] of typeIndexes) {
262
+ try {
263
+ ensureSessionDirs(sessionID);
264
+ const idxPath = path.join(getSessionDir(sessionID), "indexes", "types.json");
265
+ fs.writeFileSync(idxPath, JSON.stringify(idx, null, 2));
266
+ }
267
+ catch { }
268
+ }
269
+ for (const [sessionID, idx] of entityIndexes) {
270
+ try {
271
+ ensureSessionDirs(sessionID);
272
+ const idxPath = path.join(getSessionDir(sessionID), "indexes", "entities.json");
273
+ fs.writeFileSync(idxPath, JSON.stringify(idx, null, 2));
274
+ }
275
+ catch { }
276
+ }
277
+ }
278
+ GraphStorage.flush = flush;
279
+ // ========================================================================
280
+ // NODE OPERATIONS
281
+ // ========================================================================
282
+ function addNode(node) {
283
+ const cache = getNodeCache(node.sessionID);
284
+ cache.set(node.id, node);
285
+ // Update inverted index
286
+ const invIdx = getInvertedIndex(node.sessionID);
287
+ invIdx.add(node.id, node.content);
288
+ // Update type index
289
+ const typeIdx = getTypeIndex(node.sessionID);
290
+ if (!typeIdx[node.type])
291
+ typeIdx[node.type] = [];
292
+ if (!typeIdx[node.type].includes(node.id)) {
293
+ typeIdx[node.type].push(node.id);
294
+ }
295
+ // Update entity index
296
+ if (node.type === NodeType.ENTITY) {
297
+ const entIdx = getEntityIndex(node.sessionID);
298
+ if (!entIdx[node.content])
299
+ entIdx[node.content] = [];
300
+ if (!entIdx[node.content].includes(node.id)) {
301
+ entIdx[node.content].push(node.id);
302
+ }
303
+ }
304
+ // Queue write
305
+ const nodePath = path.join(getSessionDir(node.sessionID), "nodes", `${node.id}.json`);
306
+ queueWrite({ type: "node", sessionID: node.sessionID, path: nodePath, data: node });
307
+ }
308
+ GraphStorage.addNode = addNode;
309
+ function getNode(sessionID, nodeID) {
310
+ const cache = getNodeCache(sessionID);
311
+ // Check cache first
312
+ const cached = cache.get(nodeID);
313
+ if (cached) {
314
+ cacheHits++;
315
+ return cached;
316
+ }
317
+ // Load from disk
318
+ cacheMisses++;
319
+ try {
320
+ const nodePath = path.join(getSessionDir(sessionID), "nodes", `${nodeID}.json`);
321
+ const node = GraphNodeSchema.parse(JSON.parse(fs.readFileSync(nodePath, "utf-8")));
322
+ cache.set(nodeID, node);
323
+ return node;
324
+ }
325
+ catch {
326
+ return null;
327
+ }
328
+ }
329
+ GraphStorage.getNode = getNode;
330
+ function getNodesByType(sessionID, nodeType, limit = 100) {
331
+ const typeIdx = getTypeIndex(sessionID);
332
+ const nodeIDs = typeIdx[nodeType] || [];
333
+ const nodes = [];
334
+ for (const nodeID of nodeIDs.slice(0, limit)) {
335
+ const node = getNode(sessionID, nodeID);
336
+ if (node)
337
+ nodes.push(node);
338
+ }
339
+ return nodes;
340
+ }
341
+ GraphStorage.getNodesByType = getNodesByType;
342
+ /**
343
+ * Fast keyword search using inverted index.
344
+ */
345
+ function searchNodes(sessionID, query, nodeType, limit = 20) {
346
+ const invIdx = getInvertedIndex(sessionID);
347
+ let matchingIDs = invIdx.search(query);
348
+ // Filter by type if specified
349
+ if (nodeType) {
350
+ const typeIdx = getTypeIndex(sessionID);
351
+ const typeIDs = new Set(typeIdx[nodeType] || []);
352
+ matchingIDs = new Set([...matchingIDs].filter((id) => typeIDs.has(id)));
353
+ }
354
+ // Get nodes
355
+ const results = [];
356
+ for (const nodeID of matchingIDs) {
357
+ if (results.length >= limit)
358
+ break;
359
+ const node = getNode(sessionID, nodeID);
360
+ if (node)
361
+ results.push(node);
362
+ }
363
+ return results;
364
+ }
365
+ GraphStorage.searchNodes = searchNodes;
366
+ function deleteNode(sessionID, nodeID) {
367
+ const node = getNode(sessionID, nodeID);
368
+ if (!node)
369
+ return false;
370
+ // Remove from caches
371
+ const cache = getNodeCache(sessionID);
372
+ cache.delete(nodeID);
373
+ // Remove from inverted index
374
+ const invIdx = getInvertedIndex(sessionID);
375
+ invIdx.remove(nodeID, node.content);
376
+ // Remove from type index
377
+ const typeIdx = getTypeIndex(sessionID);
378
+ if (typeIdx[node.type]) {
379
+ typeIdx[node.type] = typeIdx[node.type].filter((id) => id !== nodeID);
380
+ }
381
+ // Remove from entity index
382
+ if (node.type === NodeType.ENTITY) {
383
+ const entIdx = getEntityIndex(sessionID);
384
+ if (entIdx[node.content]) {
385
+ entIdx[node.content] = entIdx[node.content].filter((id) => id !== nodeID);
386
+ }
387
+ }
388
+ // Delete file
389
+ try {
390
+ const nodePath = path.join(getSessionDir(sessionID), "nodes", `${nodeID}.json`);
391
+ fs.unlinkSync(nodePath);
392
+ }
393
+ catch { }
394
+ try {
395
+ const edgesPath = path.join(getSessionDir(sessionID), "edges", `${nodeID}.edges.json`);
396
+ fs.unlinkSync(edgesPath);
397
+ }
398
+ catch { }
399
+ return true;
400
+ }
401
+ GraphStorage.deleteNode = deleteNode;
402
+ // ========================================================================
403
+ // EDGE OPERATIONS
404
+ // ========================================================================
405
+ function addEdgeWithSession(sessionID, edge) {
406
+ const eCache = getEdgeCache(sessionID);
407
+ // Update source's outgoing
408
+ let sourceAdj = eCache.get(edge.sourceID);
409
+ if (!sourceAdj) {
410
+ sourceAdj = loadEdgeAdjacency(sessionID, edge.sourceID);
411
+ }
412
+ sourceAdj.outgoing.push(edge);
413
+ eCache.set(edge.sourceID, sourceAdj);
414
+ // Update target's incoming
415
+ let targetAdj = eCache.get(edge.targetID);
416
+ if (!targetAdj) {
417
+ targetAdj = loadEdgeAdjacency(sessionID, edge.targetID);
418
+ }
419
+ targetAdj.incoming.push(edge);
420
+ eCache.set(edge.targetID, targetAdj);
421
+ // Queue writes
422
+ const sourcePath = path.join(getSessionDir(sessionID), "edges", `${edge.sourceID}.edges.json`);
423
+ queueWrite({ type: "edge", sessionID, path: sourcePath, data: sourceAdj });
424
+ const targetPath = path.join(getSessionDir(sessionID), "edges", `${edge.targetID}.edges.json`);
425
+ queueWrite({ type: "edge", sessionID, path: targetPath, data: targetAdj });
426
+ }
427
+ GraphStorage.addEdgeWithSession = addEdgeWithSession;
428
+ function loadEdgeAdjacency(sessionID, nodeID) {
429
+ try {
430
+ const edgesPath = path.join(getSessionDir(sessionID), "edges", `${nodeID}.edges.json`);
431
+ return JSON.parse(fs.readFileSync(edgesPath, "utf-8"));
432
+ }
433
+ catch {
434
+ return { outgoing: [], incoming: [] };
435
+ }
436
+ }
437
+ function getEdges(sessionID, nodeID, direction = "outgoing") {
438
+ const eCache = getEdgeCache(sessionID);
439
+ let adj = eCache.get(nodeID);
440
+ if (!adj) {
441
+ adj = loadEdgeAdjacency(sessionID, nodeID);
442
+ eCache.set(nodeID, adj);
443
+ }
444
+ if (direction === "outgoing")
445
+ return adj.outgoing;
446
+ if (direction === "incoming")
447
+ return adj.incoming;
448
+ return [...adj.outgoing, ...adj.incoming];
449
+ }
450
+ GraphStorage.getEdges = getEdges;
451
+ function getNeighbors(sessionID, nodeID, direction = "outgoing", relationship) {
452
+ const edges = getEdges(sessionID, nodeID, direction);
453
+ const neighborIDs = new Set();
454
+ for (const edge of edges) {
455
+ if (relationship && edge.relationship !== relationship)
456
+ continue;
457
+ const neighborID = edge.sourceID === nodeID ? edge.targetID : edge.sourceID;
458
+ neighborIDs.add(neighborID);
459
+ }
460
+ const neighbors = [];
461
+ for (const neighborID of neighborIDs) {
462
+ const node = getNode(sessionID, neighborID);
463
+ if (node)
464
+ neighbors.push(node);
465
+ }
466
+ return neighbors;
467
+ }
468
+ GraphStorage.getNeighbors = getNeighbors;
469
+ // ========================================================================
470
+ // SESSION OPERATIONS
471
+ // ========================================================================
472
+ function clearSession(sessionID) {
473
+ // Clear caches
474
+ nodeCache.delete(sessionID);
475
+ edgeCache.delete(sessionID);
476
+ invertedIndexes.delete(sessionID);
477
+ typeIndexes.delete(sessionID);
478
+ entityIndexes.delete(sessionID);
479
+ // Delete directory
480
+ try {
481
+ fs.rmSync(getSessionDir(sessionID), { recursive: true, force: true });
482
+ }
483
+ catch { }
484
+ }
485
+ GraphStorage.clearSession = clearSession;
486
+ function getSessions() {
487
+ if (!baseDir)
488
+ return [];
489
+ try {
490
+ return fs.readdirSync(baseDir).filter((name) => {
491
+ const stat = fs.statSync(path.join(baseDir, name));
492
+ return stat.isDirectory();
493
+ });
494
+ }
495
+ catch {
496
+ return [];
497
+ }
498
+ }
499
+ GraphStorage.getSessions = getSessions;
500
+ function getStats(sessionID) {
501
+ const typeIdx = getTypeIndex(sessionID);
502
+ let nodeCount = 0;
503
+ const nodesByType = {};
504
+ for (const [type, ids] of Object.entries(typeIdx)) {
505
+ nodesByType[type] = ids.length;
506
+ nodeCount += ids.length;
507
+ }
508
+ let edgeCount = 0;
509
+ try {
510
+ const edgesDir = path.join(getSessionDir(sessionID), "edges");
511
+ for (const file of fs.readdirSync(edgesDir)) {
512
+ const adj = JSON.parse(fs.readFileSync(path.join(edgesDir, file), "utf-8"));
513
+ edgeCount += adj.outgoing.length;
514
+ }
515
+ }
516
+ catch { }
517
+ const total = cacheHits + cacheMisses;
518
+ const hitRate = total > 0 ? ((cacheHits / total) * 100).toFixed(1) + "%" : "N/A";
519
+ return {
520
+ nodeCount,
521
+ edgeCount,
522
+ nodesByType,
523
+ cacheStats: { hits: cacheHits, misses: cacheMisses, hitRate },
524
+ };
525
+ }
526
+ GraphStorage.getStats = getStats;
527
+ /**
528
+ * Get chunks that mention an entity.
529
+ */
530
+ function getChunksForEntity(sessionID, entityName) {
531
+ const entIdx = getEntityIndex(sessionID);
532
+ const entityNodeIDs = entIdx[entityName] || [];
533
+ const chunkIDs = new Set();
534
+ for (const entityNodeID of entityNodeIDs) {
535
+ const edges = getEdges(sessionID, entityNodeID, "incoming");
536
+ for (const edge of edges) {
537
+ if (edge.relationship === RelationType.MENTIONS) {
538
+ chunkIDs.add(edge.sourceID);
539
+ }
540
+ }
541
+ }
542
+ const chunks = [];
543
+ for (const chunkID of chunkIDs) {
544
+ const node = getNode(sessionID, chunkID);
545
+ if (node)
546
+ chunks.push(node);
547
+ }
548
+ return chunks;
549
+ }
550
+ GraphStorage.getChunksForEntity = getChunksForEntity;
551
+ })(GraphStorage || (GraphStorage = {}));
552
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/graph/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Graph traversal and search for RLM-Graph.
3
+ *
4
+ * Provides utilities for navigating and searching the knowledge graph:
5
+ * - GraphTraverser: Breadth-first and path-based traversal
6
+ * - GraphSearcher: Combined keyword and semantic search
7
+ */
8
+ import { type GraphNode, type GraphSearchResult, NodeType, RelationType } from "./types.js";
9
+ /**
10
+ * Traverses the knowledge graph to find related context.
11
+ */
12
+ export declare namespace GraphTraverser {
13
+ /**
14
+ * Get neighboring nodes.
15
+ */
16
+ function getNeighbors(sessionID: string, nodeID: string, direction?: "outgoing" | "incoming" | "both", relationship?: RelationType): GraphNode[];
17
+ /**
18
+ * Expand context by traversing from given nodes using BFS.
19
+ */
20
+ function expandContext(sessionID: string, nodeIDs: string[], maxDepth?: number, maxNodes?: number): GraphNode[];
21
+ /**
22
+ * Find a path between two nodes using BFS.
23
+ */
24
+ function findPath(sessionID: string, startID: string, endID: string, maxDepth?: number): GraphNode[] | null;
25
+ /**
26
+ * Get all chunks that mention a specific entity.
27
+ */
28
+ function getEntityContext(sessionID: string, entityName: string, maxChunks?: number): GraphNode[];
29
+ /**
30
+ * Get the parent document for a chunk.
31
+ */
32
+ function getDocumentForChunk(sessionID: string, chunkID: string): GraphNode | null;
33
+ }
34
+ /**
35
+ * Search the knowledge graph using combined strategies.
36
+ */
37
+ export declare namespace GraphSearcher {
38
+ /**
39
+ * Search the graph for relevant nodes.
40
+ */
41
+ function search(sessionID: string, query: string, options?: {
42
+ limit?: number;
43
+ expandContext?: boolean;
44
+ nodeType?: NodeType;
45
+ }): GraphSearchResult[];
46
+ /**
47
+ * Search across all sessions.
48
+ */
49
+ function searchAllSessions(query: string, options?: {
50
+ limit?: number;
51
+ expandContext?: boolean;
52
+ }): GraphSearchResult[];
53
+ }
54
+ //# sourceMappingURL=traversal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traversal.d.ts","sourceRoot":"","sources":["../../src/graph/traversal.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,QAAQ,EACR,YAAY,EACb,MAAM,YAAY,CAAA;AAGnB;;GAEG;AACH,yBAAiB,cAAc,CAAC;IAC9B;;OAEG;IACH,SAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,UAAU,GAAG,UAAU,GAAG,MAAmB,EACxD,YAAY,CAAC,EAAE,YAAY,GAC1B,SAAS,EAAE,CAEb;IAED;;OAEG;IACH,SAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,GAAE,MAAU,EACpB,QAAQ,GAAE,MAAW,GACpB,SAAS,EAAE,CAmCb;IAED;;OAEG;IACH,SAAgB,QAAQ,CACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,MAAU,GACnB,SAAS,EAAE,GAAG,IAAI,CAsCpB;IAED;;OAEG;IACH,SAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,MAAW,GACrB,SAAS,EAAE,CA+Bb;IAED;;OAEG;IACH,SAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,SAAS,GAAG,IAAI,CAuBlB;CACF;AAED;;GAEG;AACH,yBAAiB,aAAa,CAAC;IAC7B;;OAEG;IACH,SAAgB,MAAM,CACpB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,aAAa,CAAC,EAAE,OAAO,CAAA;QACvB,QAAQ,CAAC,EAAE,QAAQ,CAAA;KACf,GACL,iBAAiB,EAAE,CA6ErB;IAED;;OAEG;IACH,SAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,aAAa,CAAC,EAAE,OAAO,CAAA;KACnB,GACL,iBAAiB,EAAE,CAsBrB;CAyBF"}