@dewtech/dare-graphrag
Advanced tools
| export {}; | ||
| //# sourceMappingURL=graph-rag.test.d.ts.map |
| {"version":3,"file":"graph-rag.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/graph-rag.test.ts"],"names":[],"mappings":""} |
| import { describe, it, expect, beforeEach } from 'vitest'; | ||
| import { GraphRAG } from '../graph-rag.js'; | ||
| describe('GraphRAG', () => { | ||
| let graph; | ||
| beforeEach(async () => { | ||
| // Use in-memory DB for tests | ||
| graph = new GraphRAG(':memory:'); | ||
| await graph.init(); | ||
| }); | ||
| it('should add and retrieve a node', async () => { | ||
| await graph.addNode({ | ||
| id: 'test-node-1', | ||
| type: 'task', | ||
| label: 'Test Task', | ||
| description: 'A test task', | ||
| metadata: { status: 'PENDING' } | ||
| }); | ||
| const node = await graph.getNode('test-node-1'); | ||
| expect(node).toBeDefined(); | ||
| expect(node?.id).toBe('test-node-1'); | ||
| expect(node?.label).toBe('Test Task'); | ||
| }); | ||
| it('should add and retrieve an edge', async () => { | ||
| await graph.addNode({ id: 'node-1', type: 'task', label: 'Node 1' }); | ||
| await graph.addNode({ id: 'node-2', type: 'task', label: 'Node 2' }); | ||
| await graph.addEdge({ | ||
| id: 'edge-1', | ||
| sourceId: 'node-1', | ||
| targetId: 'node-2', | ||
| type: 'depends_on' | ||
| }); | ||
| const edges = await graph.getEdges('node-1'); | ||
| expect(edges.length).toBe(1); | ||
| expect(edges[0].targetId).toBe('node-2'); | ||
| }); | ||
| it('should search nodes', async () => { | ||
| await graph.addNode({ id: 'search-1', type: 'task', label: 'Find this label' }); | ||
| await graph.addNode({ id: 'search-2', type: 'file', label: 'Ignore this one' }); | ||
| const results = await graph.searchNodes('Find this'); | ||
| expect(results.length).toBeGreaterThan(0); | ||
| expect(results[0].node.id).toBe('search-1'); | ||
| }); | ||
| }); | ||
| //# sourceMappingURL=graph-rag.test.js.map |
| {"version":3,"file":"graph-rag.test.js","sourceRoot":"","sources":["../../src/__tests__/graph-rag.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,IAAI,KAAe,CAAC;IAEpB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,6BAA6B;QAC7B,KAAK,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;QACjC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,KAAK,CAAC,OAAO,CAAC;YAClB,EAAE,EAAE,aAAa;YACjB,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,WAAW;YAClB,WAAW,EAAE,aAAa;YAC1B,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;SAChC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrE,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAErE,MAAM,KAAK,CAAC,OAAO,CAAC;YAClB,EAAE,EAAE,QAAQ;YACZ,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACnC,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAChF,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAEhF,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} |
+4
-3
| { | ||
| "name": "@dewtech/dare-graphrag", | ||
| "version": "0.1.0", | ||
| "version": "0.2.0", | ||
| "description": "DARE Framework GraphRAG - Knowledge graph with SQLite persistence and FTS5 search", | ||
@@ -20,3 +20,4 @@ "type": "module", | ||
| "fs-extra": "^11.1.1", | ||
| "sql.js": "^1.11.0" | ||
| "sql.js": "^1.11.0", | ||
| "@dewtech/dare-core": "0.2.0" | ||
| }, | ||
@@ -55,3 +56,3 @@ "devDependencies": { | ||
| "dev": "tsx watch src/index.ts", | ||
| "test": "vitest", | ||
| "test": "vitest run", | ||
| "lint": "eslint src --ext .ts", | ||
@@ -58,0 +59,0 @@ "format": "prettier --write src" |
+6
-5
| # @dewtech/dare-graphrag | ||
| Knowledge graph engine for DARE Framework with SQLite persistence and FTS5 semantic search. | ||
| Knowledge graph engine for DARE Framework with SQLite persistence (via sql.js) and semantic search. | ||
| ## Features | ||
| - **SQLite persistence** with WAL mode for performance | ||
| - **SQLite persistence** via pure JavaScript (sql.js) without native compilation | ||
| - **7 node types**: task, file, schema, endpoint, component, entity, concept | ||
| - **7 edge types**: depends_on, implements, uses, references, related_to, contains, extends | ||
| - **FTS5 full-text search** for semantic queries | ||
| - **LIKE-based full-text search** for semantic queries | ||
| - **Graph traversal** for dependency analysis | ||
@@ -26,2 +26,3 @@ - **Import/export** to JSON format | ||
| const graph = new GraphRAG('.dare/graph.db'); | ||
| await graph.init(); | ||
@@ -97,5 +98,5 @@ // Add nodes | ||
| - WAL mode: concurrent reads while writing | ||
| - FTS5: full-text search in ~10ms | ||
| - sql.js: pure JavaScript, no C compiler required | ||
| - LIKE-based search for cross-platform compatibility | ||
| - Indexes: type/label queries in O(log n) | ||
| - Cache: 10k pages in memory |
31186
15.09%19
26.67%335
15.12%101
1%4
33.33%+ Added
+ Added