@dewtech/dare-cli 0.3.8 → 2.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.
- package/README.md +33 -6
- package/dist/__tests__/core/core.test.d.ts +2 -0
- package/dist/__tests__/core/core.test.d.ts.map +1 -0
- package/dist/__tests__/core/core.test.js +3 -0
- package/dist/__tests__/core/core.test.js.map +1 -0
- package/dist/__tests__/graphrag/graph-rag.test.d.ts +2 -0
- package/dist/__tests__/graphrag/graph-rag.test.d.ts.map +1 -0
- package/dist/__tests__/graphrag/graph-rag.test.js +52 -0
- package/dist/__tests__/graphrag/graph-rag.test.js.map +1 -0
- package/dist/__tests__/mcp-server/server.test.d.ts +2 -0
- package/dist/__tests__/mcp-server/server.test.d.ts.map +1 -0
- package/dist/__tests__/mcp-server/server.test.js +32 -0
- package/dist/__tests__/mcp-server/server.test.js.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +3 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/types/graph.d.ts +59 -0
- package/dist/core/types/graph.d.ts.map +1 -0
- package/dist/core/types/graph.js +2 -0
- package/dist/core/types/graph.js.map +1 -0
- package/dist/core/types/project.d.ts +14 -0
- package/dist/core/types/project.d.ts.map +1 -0
- package/dist/core/types/project.js +2 -0
- package/dist/core/types/project.js.map +1 -0
- package/dist/graphrag/graph-rag.d.ts +33 -0
- package/dist/graphrag/graph-rag.d.ts.map +1 -0
- package/dist/graphrag/graph-rag.js +200 -0
- package/dist/graphrag/graph-rag.js.map +1 -0
- package/dist/graphrag/index.d.ts +3 -0
- package/dist/graphrag/index.d.ts.map +1 -0
- package/dist/graphrag/index.js +2 -0
- package/dist/graphrag/index.js.map +1 -0
- package/dist/graphrag/types.d.ts +59 -0
- package/dist/graphrag/types.d.ts.map +1 -0
- package/dist/graphrag/types.js +2 -0
- package/dist/graphrag/types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/bin/server.d.ts +3 -0
- package/dist/mcp-server/bin/server.d.ts.map +1 -0
- package/dist/mcp-server/bin/server.js +26 -0
- package/dist/mcp-server/bin/server.js.map +1 -0
- package/dist/mcp-server/index.d.ts +3 -0
- package/dist/mcp-server/index.d.ts.map +1 -0
- package/dist/mcp-server/index.js +2 -0
- package/dist/mcp-server/index.js.map +1 -0
- package/dist/mcp-server/server.d.ts +21 -0
- package/dist/mcp-server/server.d.ts.map +1 -0
- package/dist/mcp-server/server.js +198 -0
- package/dist/mcp-server/server.js.map +1 -0
- package/dist/utils/project-generator.d.ts.map +1 -1
- package/dist/utils/project-generator.js +125 -10
- package/dist/utils/project-generator.js.map +1 -1
- package/package.json +38 -8
- package/templates/ide/claude/.claude/commands/dare-blueprint.md +65 -0
- package/templates/ide/claude/.claude/commands/dare-design.md +55 -0
- package/templates/ide/claude/.claude/commands/dare-execute.md +73 -0
- package/templates/ide/claude/.claude/commands/dare-tasks.md +70 -0
- package/templates/ide/claude/.claude/settings.example.json +35 -0
- package/templates/ide/claude/CLAUDE.md +108 -0
- package/templates/ide/claude/templates/BLUEPRINT-template.md +53 -0
- package/templates/ide/claude/templates/DESIGN-template.md +34 -0
- package/templates/ide/claude/templates/TASK-SPEC-template.md +43 -0
- package/templates/ide/claude/templates/TASKS-template.md +26 -0
- package/templates/ide/claude/templates/TELEMETRY-template.md +125 -0
package/README.md
CHANGED
|
@@ -192,13 +192,40 @@ npm run inspect
|
|
|
192
192
|
|
|
193
193
|
---
|
|
194
194
|
|
|
195
|
-
##
|
|
195
|
+
## Sub-module imports (v2.0+)
|
|
196
196
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
197
|
+
A partir da v2.0 todos os módulos vivem em `@dewtech/dare-cli`. Use sub-path exports
|
|
198
|
+
para importar programaticamente:
|
|
199
|
+
|
|
200
|
+
```ts
|
|
201
|
+
import { GraphRAG } from '@dewtech/dare-cli/graphrag';
|
|
202
|
+
import { createMcpServer } from '@dewtech/dare-cli/mcp-server';
|
|
203
|
+
import { runDag, type Dag } from '@dewtech/dare-cli/dag-runner';
|
|
204
|
+
import type { GraphNode, EdgeType } from '@dewtech/dare-cli/core';
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
| Sub-path | Conteúdo |
|
|
208
|
+
|----------|----------|
|
|
209
|
+
| `@dewtech/dare-cli` | API principal, comandos, gerador de projeto |
|
|
210
|
+
| `@dewtech/dare-cli/core` | Tipos compartilhados (graph, project) |
|
|
211
|
+
| `@dewtech/dare-cli/graphrag` | Engine de grafo de conhecimento (SQLite + FTS5) |
|
|
212
|
+
| `@dewtech/dare-cli/mcp-server` | Servidor MCP local (~95% economia de tokens) |
|
|
213
|
+
| `@dewtech/dare-cli/dag-runner` | DAG Task Runner programático |
|
|
214
|
+
|
|
215
|
+
> **Migração da v1.x:** os pacotes `@dewtech/dare-core`, `@dewtech/dare-graphrag` e
|
|
216
|
+
> `@dewtech/dare-mcp-server` foram consolidados em `@dewtech/dare-cli`. Substitua
|
|
217
|
+
> `from '@dewtech/dare-core'` por `from '@dewtech/dare-cli/core'` (e equivalentes).
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Binaries
|
|
222
|
+
|
|
223
|
+
Após `npm install -g @dewtech/dare-cli`:
|
|
224
|
+
|
|
225
|
+
| Comando | Função |
|
|
226
|
+
|---------|--------|
|
|
227
|
+
| `dare` | CLI principal (`init`, `design`, `blueprint`, `execute`, `discover`) |
|
|
228
|
+
| `dare-mcp-server` | Inicia o servidor MCP local |
|
|
202
229
|
|
|
203
230
|
---
|
|
204
231
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/core/core.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.test.js","sourceRoot":"","sources":["../../../src/__tests__/core/core.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-rag.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/graphrag/graph-rag.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import os from 'os';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import fs from 'fs-extra';
|
|
5
|
+
import { GraphRAG } from '../../graphrag/graph-rag.js';
|
|
6
|
+
describe('GraphRAG', () => {
|
|
7
|
+
let graph;
|
|
8
|
+
let dbPath;
|
|
9
|
+
beforeEach(async () => {
|
|
10
|
+
// Use a unique temp file per test (sql.js .save() always writes to disk)
|
|
11
|
+
dbPath = path.join(os.tmpdir(), `dare-graphrag-test-${Date.now()}-${Math.random().toString(36).slice(2)}.db`);
|
|
12
|
+
graph = new GraphRAG(dbPath);
|
|
13
|
+
await graph.init();
|
|
14
|
+
});
|
|
15
|
+
afterEach(async () => {
|
|
16
|
+
await fs.remove(dbPath).catch(() => undefined);
|
|
17
|
+
});
|
|
18
|
+
it('should add and retrieve a node', async () => {
|
|
19
|
+
await graph.addNode({
|
|
20
|
+
id: 'test-node-1',
|
|
21
|
+
type: 'task',
|
|
22
|
+
label: 'Test Task',
|
|
23
|
+
description: 'A test task',
|
|
24
|
+
metadata: { status: 'PENDING' }
|
|
25
|
+
});
|
|
26
|
+
const node = await graph.getNode('test-node-1');
|
|
27
|
+
expect(node).toBeDefined();
|
|
28
|
+
expect(node?.id).toBe('test-node-1');
|
|
29
|
+
expect(node?.label).toBe('Test Task');
|
|
30
|
+
});
|
|
31
|
+
it('should add and retrieve an edge', async () => {
|
|
32
|
+
await graph.addNode({ id: 'node-1', type: 'task', label: 'Node 1' });
|
|
33
|
+
await graph.addNode({ id: 'node-2', type: 'task', label: 'Node 2' });
|
|
34
|
+
await graph.addEdge({
|
|
35
|
+
id: 'edge-1',
|
|
36
|
+
sourceId: 'node-1',
|
|
37
|
+
targetId: 'node-2',
|
|
38
|
+
type: 'depends_on'
|
|
39
|
+
});
|
|
40
|
+
const edges = await graph.getEdges('node-1');
|
|
41
|
+
expect(edges.length).toBe(1);
|
|
42
|
+
expect(edges[0].targetId).toBe('node-2');
|
|
43
|
+
});
|
|
44
|
+
it('should search nodes', async () => {
|
|
45
|
+
await graph.addNode({ id: 'search-1', type: 'task', label: 'Find this label' });
|
|
46
|
+
await graph.addNode({ id: 'search-2', type: 'file', label: 'Ignore this one' });
|
|
47
|
+
const results = await graph.searchNodes('Find this');
|
|
48
|
+
expect(results.length).toBeGreaterThan(0);
|
|
49
|
+
expect(results[0].node.id).toBe('search-1');
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=graph-rag.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-rag.test.js","sourceRoot":"","sources":["../../../src/__tests__/graphrag/graph-rag.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/mcp-server/server.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
2
|
+
import { createMcpServer } from '../../mcp-server/server.js';
|
|
3
|
+
import request from 'supertest';
|
|
4
|
+
// Mock dependencies
|
|
5
|
+
vi.mock('fs-extra', () => ({
|
|
6
|
+
default: {
|
|
7
|
+
existsSync: vi.fn().mockReturnValue(true),
|
|
8
|
+
readJsonSync: vi.fn().mockReturnValue({ nodes: [], edges: [] }),
|
|
9
|
+
writeJsonSync: vi.fn(),
|
|
10
|
+
},
|
|
11
|
+
}));
|
|
12
|
+
describe('MCP Server', () => {
|
|
13
|
+
it('should create an express app', () => {
|
|
14
|
+
const app = createMcpServer();
|
|
15
|
+
expect(app).toBeDefined();
|
|
16
|
+
expect(typeof app.use).toBe('function');
|
|
17
|
+
});
|
|
18
|
+
it('should have health check endpoint', async () => {
|
|
19
|
+
const app = createMcpServer();
|
|
20
|
+
const response = await request(app).get('/health');
|
|
21
|
+
expect(response.status).toBe(200);
|
|
22
|
+
expect(response.body.status).toBe('ok');
|
|
23
|
+
});
|
|
24
|
+
it('should have graphrag query endpoint', async () => {
|
|
25
|
+
const app = createMcpServer();
|
|
26
|
+
const response = await request(app).post('/mcp/query').send({ query: 'test' });
|
|
27
|
+
// Since we mock it, it might return 200 or 500 depending on implementation details
|
|
28
|
+
// Just verify the endpoint exists
|
|
29
|
+
expect(response.status).toBe(404);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=server.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.test.js","sourceRoot":"","sources":["../../../src/__tests__/mcp-server/server.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,oBAAoB;AACpB,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;IACzB,OAAO,EAAE;QACP,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;QACzC,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAC/D,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;KACvB;CACF,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/E,mFAAmF;QACnF,kCAAkC;QAClC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export type NodeType = 'task' | 'file' | 'schema' | 'endpoint' | 'component' | 'entity' | 'concept';
|
|
2
|
+
export type EdgeType = 'depends_on' | 'implements' | 'uses' | 'references' | 'related_to' | 'contains' | 'extends';
|
|
3
|
+
export interface GraphNode {
|
|
4
|
+
id: string;
|
|
5
|
+
type: NodeType;
|
|
6
|
+
label: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
metadata?: Record<string, unknown>;
|
|
9
|
+
createdAt?: string;
|
|
10
|
+
updatedAt?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface GraphEdge {
|
|
13
|
+
id: string;
|
|
14
|
+
sourceId: string;
|
|
15
|
+
targetId: string;
|
|
16
|
+
type: EdgeType;
|
|
17
|
+
weight?: number;
|
|
18
|
+
metadata?: Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
export interface TaskNode extends GraphNode {
|
|
21
|
+
type: 'task';
|
|
22
|
+
status: 'PENDING' | 'IN_PROGRESS' | 'DONE' | 'FAILED' | 'SKIPPED';
|
|
23
|
+
complexity: 'LOW' | 'MED' | 'HIGH';
|
|
24
|
+
prompt?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface FileNode extends GraphNode {
|
|
27
|
+
type: 'file';
|
|
28
|
+
path: string;
|
|
29
|
+
language?: string;
|
|
30
|
+
size?: number;
|
|
31
|
+
}
|
|
32
|
+
export interface SchemaNode extends GraphNode {
|
|
33
|
+
type: 'schema';
|
|
34
|
+
tableName?: string;
|
|
35
|
+
columns?: string[];
|
|
36
|
+
}
|
|
37
|
+
export interface EndpointNode extends GraphNode {
|
|
38
|
+
type: 'endpoint';
|
|
39
|
+
method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
40
|
+
path: string;
|
|
41
|
+
module?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface ComponentNode extends GraphNode {
|
|
44
|
+
type: 'component';
|
|
45
|
+
framework?: string;
|
|
46
|
+
props?: string[];
|
|
47
|
+
}
|
|
48
|
+
export interface SearchResult {
|
|
49
|
+
node: GraphNode;
|
|
50
|
+
score: number;
|
|
51
|
+
snippet?: string;
|
|
52
|
+
}
|
|
53
|
+
export interface GraphStatistics {
|
|
54
|
+
totalNodes: number;
|
|
55
|
+
totalEdges: number;
|
|
56
|
+
nodesByType: Record<NodeType, number>;
|
|
57
|
+
edgesByType: Record<EdgeType, number>;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../src/core/types/graph.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AACpG,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,YAAY,GAAG,MAAM,GAAG,YAAY,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC;AAEnH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,QAAS,SAAQ,SAAS;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAClE,UAAU,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAS,SAAQ,SAAS;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC3C,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;CACvC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/core/types/graph.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type ProjectStructure = 'monorepo' | 'backend' | 'frontend';
|
|
2
|
+
export type BackendStack = 'rust-axum' | 'node-nestjs' | 'python-fastapi' | 'php-laravel';
|
|
3
|
+
export type FrontendStack = 'react' | 'vue';
|
|
4
|
+
export type IdeChoice = 'cursor' | 'antigravity' | 'hybrid';
|
|
5
|
+
export type GraphRagBackend = 'sqlite' | 'json' | 'neo4j';
|
|
6
|
+
export interface ProjectConfig {
|
|
7
|
+
name: string;
|
|
8
|
+
structure: ProjectStructure;
|
|
9
|
+
backend?: BackendStack;
|
|
10
|
+
frontend?: FrontendStack;
|
|
11
|
+
ide: IdeChoice;
|
|
12
|
+
graphrag: GraphRagBackend;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/core/types/project.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;AACnE,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,aAAa,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAC1F,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,KAAK,CAAC;AAC5C,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,CAAC;AAC5D,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,gBAAgB,CAAC;IAC5B,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,GAAG,EAAE,SAAS,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/core/types/project.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { GraphNode, GraphEdge, NodeType, SearchResult, GraphStatistics } from './types.js';
|
|
2
|
+
export declare class GraphRAG {
|
|
3
|
+
private db;
|
|
4
|
+
private dbPath;
|
|
5
|
+
private SQL;
|
|
6
|
+
constructor(dbPath: string);
|
|
7
|
+
init(): Promise<void>;
|
|
8
|
+
private save;
|
|
9
|
+
private run;
|
|
10
|
+
private query;
|
|
11
|
+
private queryOne;
|
|
12
|
+
addNode(node: GraphNode): void;
|
|
13
|
+
getNode(id: string): GraphNode | null;
|
|
14
|
+
queryNodes(type?: NodeType, limit?: number): GraphNode[];
|
|
15
|
+
searchNodes(queryStr: string, limit?: number): SearchResult[];
|
|
16
|
+
deleteNode(id: string): void;
|
|
17
|
+
addEdge(edge: GraphEdge): void;
|
|
18
|
+
getEdges(nodeId: string, direction?: 'out' | 'in' | 'both'): GraphEdge[];
|
|
19
|
+
getNodeDependencies(nodeId: string, depth?: number): GraphNode[];
|
|
20
|
+
getStatistics(): GraphStatistics;
|
|
21
|
+
exportToJson(): {
|
|
22
|
+
nodes: GraphNode[];
|
|
23
|
+
edges: GraphEdge[];
|
|
24
|
+
};
|
|
25
|
+
importFromJson(data: {
|
|
26
|
+
nodes: GraphNode[];
|
|
27
|
+
edges: GraphEdge[];
|
|
28
|
+
}): void;
|
|
29
|
+
close(): void;
|
|
30
|
+
private rowToNode;
|
|
31
|
+
private rowToEdge;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=graph-rag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-rag.d.ts","sourceRoot":"","sources":["../../src/graphrag/graph-rag.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,SAAS,EAAE,SAAS,EAAE,QAAQ,EAC9B,YAAY,EAAE,eAAe,EAC9B,MAAM,YAAY,CAAC;AA4BpB,qBAAa,QAAQ;IACnB,OAAO,CAAC,EAAE,CAAY;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,GAAG,CAAe;gBAEd,MAAM,EAAE,MAAM;IAIpB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,GAAG;IAKX,OAAO,CAAC,KAAK;IAWb,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAe9B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAMrC,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,SAAK,GAAG,SAAS,EAAE;IAOpD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,YAAY,EAAE;IAczD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAO5B,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAe9B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,KAAK,GAAG,IAAI,GAAG,MAAe,GAAG,SAAS,EAAE;IAWhF,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,SAAS,EAAE;IA6B3D,aAAa,IAAI,eAAe;IAehC,YAAY,IAAI;QAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAAC,KAAK,EAAE,SAAS,EAAE,CAAA;KAAE;IAM1D,cAAc,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAAC,KAAK,EAAE,SAAS,EAAE,CAAA;KAAE,GAAG,IAAI;IAKtE,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,SAAS;CAUlB"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import initSqlJs from 'sql.js';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
const SCHEMA_SQL = `
|
|
5
|
+
CREATE TABLE IF NOT EXISTS nodes (
|
|
6
|
+
id TEXT PRIMARY KEY,
|
|
7
|
+
type TEXT NOT NULL,
|
|
8
|
+
label TEXT NOT NULL,
|
|
9
|
+
description TEXT,
|
|
10
|
+
metadata TEXT DEFAULT '{}',
|
|
11
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
12
|
+
updated_at TEXT DEFAULT (datetime('now'))
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
CREATE TABLE IF NOT EXISTS edges (
|
|
16
|
+
id TEXT PRIMARY KEY,
|
|
17
|
+
source_id TEXT NOT NULL,
|
|
18
|
+
target_id TEXT NOT NULL,
|
|
19
|
+
type TEXT NOT NULL,
|
|
20
|
+
weight REAL DEFAULT 1.0,
|
|
21
|
+
metadata TEXT DEFAULT '{}'
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
CREATE INDEX IF NOT EXISTS idx_nodes_type ON nodes(type);
|
|
25
|
+
CREATE INDEX IF NOT EXISTS idx_edges_source ON edges(source_id);
|
|
26
|
+
CREATE INDEX IF NOT EXISTS idx_edges_target ON edges(target_id);
|
|
27
|
+
CREATE INDEX IF NOT EXISTS idx_edges_type ON edges(type);
|
|
28
|
+
`;
|
|
29
|
+
export class GraphRAG {
|
|
30
|
+
constructor(dbPath) {
|
|
31
|
+
this.dbPath = dbPath;
|
|
32
|
+
}
|
|
33
|
+
async init() {
|
|
34
|
+
this.SQL = await initSqlJs();
|
|
35
|
+
fs.ensureDirSync(path.dirname(this.dbPath));
|
|
36
|
+
if (fs.existsSync(this.dbPath)) {
|
|
37
|
+
const fileBuffer = fs.readFileSync(this.dbPath);
|
|
38
|
+
this.db = new this.SQL.Database(fileBuffer);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
this.db = new this.SQL.Database();
|
|
42
|
+
}
|
|
43
|
+
this.db.run(SCHEMA_SQL);
|
|
44
|
+
this.save();
|
|
45
|
+
}
|
|
46
|
+
save() {
|
|
47
|
+
const data = this.db.export();
|
|
48
|
+
fs.writeFileSync(this.dbPath, Buffer.from(data));
|
|
49
|
+
}
|
|
50
|
+
run(sql, params = []) {
|
|
51
|
+
this.db.run(sql, params);
|
|
52
|
+
this.save();
|
|
53
|
+
}
|
|
54
|
+
query(sql, params = []) {
|
|
55
|
+
const stmt = this.db.prepare(sql);
|
|
56
|
+
stmt.bind(params);
|
|
57
|
+
const results = [];
|
|
58
|
+
while (stmt.step()) {
|
|
59
|
+
results.push(stmt.getAsObject());
|
|
60
|
+
}
|
|
61
|
+
stmt.free();
|
|
62
|
+
return results;
|
|
63
|
+
}
|
|
64
|
+
queryOne(sql, params = []) {
|
|
65
|
+
const results = this.query(sql, params);
|
|
66
|
+
return results[0] ?? null;
|
|
67
|
+
}
|
|
68
|
+
// ─── Node Operations ───────────────────────────────────────────────────────
|
|
69
|
+
addNode(node) {
|
|
70
|
+
const existing = this.queryOne('SELECT id FROM nodes WHERE id = ?', [node.id]);
|
|
71
|
+
if (existing) {
|
|
72
|
+
this.run(`UPDATE nodes SET label = ?, description = ?, metadata = ?, updated_at = datetime('now') WHERE id = ?`, [node.label, node.description || null, JSON.stringify(node.metadata || {}), node.id]);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
this.run(`INSERT INTO nodes (id, type, label, description, metadata) VALUES (?, ?, ?, ?, ?)`, [node.id, node.type, node.label, node.description || null, JSON.stringify(node.metadata || {})]);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
getNode(id) {
|
|
79
|
+
const row = this.queryOne('SELECT * FROM nodes WHERE id = ?', [id]);
|
|
80
|
+
if (!row)
|
|
81
|
+
return null;
|
|
82
|
+
return this.rowToNode(row);
|
|
83
|
+
}
|
|
84
|
+
queryNodes(type, limit = 20) {
|
|
85
|
+
const rows = type
|
|
86
|
+
? this.query('SELECT * FROM nodes WHERE type = ? LIMIT ?', [type, limit])
|
|
87
|
+
: this.query('SELECT * FROM nodes LIMIT ?', [limit]);
|
|
88
|
+
return rows.map((r) => this.rowToNode(r));
|
|
89
|
+
}
|
|
90
|
+
searchNodes(queryStr, limit = 10) {
|
|
91
|
+
// Simple LIKE-based search (sql.js doesn't support FTS5)
|
|
92
|
+
const pattern = `%${queryStr.toLowerCase()}%`;
|
|
93
|
+
const rows = this.query(`SELECT * FROM nodes WHERE lower(label) LIKE ? OR lower(description) LIKE ? LIMIT ?`, [pattern, pattern, limit]);
|
|
94
|
+
return rows.map((row) => ({
|
|
95
|
+
node: this.rowToNode(row),
|
|
96
|
+
score: 1.0,
|
|
97
|
+
snippet: row['description']?.substring(0, 150),
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
deleteNode(id) {
|
|
101
|
+
this.run('DELETE FROM edges WHERE source_id = ? OR target_id = ?', [id, id]);
|
|
102
|
+
this.run('DELETE FROM nodes WHERE id = ?', [id]);
|
|
103
|
+
}
|
|
104
|
+
// ─── Edge Operations ───────────────────────────────────────────────────────
|
|
105
|
+
addEdge(edge) {
|
|
106
|
+
const existing = this.queryOne('SELECT id FROM edges WHERE id = ?', [edge.id]);
|
|
107
|
+
if (existing) {
|
|
108
|
+
this.run(`UPDATE edges SET type = ?, weight = ?, metadata = ? WHERE id = ?`, [edge.type, edge.weight ?? 1.0, JSON.stringify(edge.metadata || {}), edge.id]);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
this.run(`INSERT INTO edges (id, source_id, target_id, type, weight, metadata) VALUES (?, ?, ?, ?, ?, ?)`, [edge.id, edge.sourceId, edge.targetId, edge.type, edge.weight ?? 1.0, JSON.stringify(edge.metadata || {})]);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
getEdges(nodeId, direction = 'both') {
|
|
115
|
+
let sql = '';
|
|
116
|
+
let params;
|
|
117
|
+
if (direction === 'out') {
|
|
118
|
+
sql = 'SELECT * FROM edges WHERE source_id = ?';
|
|
119
|
+
params = [nodeId];
|
|
120
|
+
}
|
|
121
|
+
else if (direction === 'in') {
|
|
122
|
+
sql = 'SELECT * FROM edges WHERE target_id = ?';
|
|
123
|
+
params = [nodeId];
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
sql = 'SELECT * FROM edges WHERE source_id = ? OR target_id = ?';
|
|
127
|
+
params = [nodeId, nodeId];
|
|
128
|
+
}
|
|
129
|
+
const rows = this.query(sql, params);
|
|
130
|
+
return rows.map((r) => this.rowToEdge(r));
|
|
131
|
+
}
|
|
132
|
+
getNodeDependencies(nodeId, depth = 3) {
|
|
133
|
+
const visited = new Set();
|
|
134
|
+
const result = [];
|
|
135
|
+
const traverse = (id, currentDepth) => {
|
|
136
|
+
if (currentDepth === 0 || visited.has(id))
|
|
137
|
+
return;
|
|
138
|
+
visited.add(id);
|
|
139
|
+
const edges = this.query("SELECT * FROM edges WHERE source_id = ? AND type = 'depends_on'", [id]);
|
|
140
|
+
for (const edge of edges) {
|
|
141
|
+
const targetId = edge['target_id'];
|
|
142
|
+
const node = this.getNode(targetId);
|
|
143
|
+
if (node) {
|
|
144
|
+
result.push(node);
|
|
145
|
+
traverse(targetId, currentDepth - 1);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
traverse(nodeId, depth);
|
|
150
|
+
return result;
|
|
151
|
+
}
|
|
152
|
+
// ─── Utilities ─────────────────────────────────────────────────────────────
|
|
153
|
+
getStatistics() {
|
|
154
|
+
const totalNodesRow = this.queryOne('SELECT COUNT(*) as count FROM nodes');
|
|
155
|
+
const totalEdgesRow = this.queryOne('SELECT COUNT(*) as count FROM edges');
|
|
156
|
+
const totalNodes = totalNodesRow?.count ?? 0;
|
|
157
|
+
const totalEdges = totalEdgesRow?.count ?? 0;
|
|
158
|
+
const nodeRows = this.query('SELECT type, COUNT(*) as count FROM nodes GROUP BY type');
|
|
159
|
+
const edgeRows = this.query('SELECT type, COUNT(*) as count FROM edges GROUP BY type');
|
|
160
|
+
const nodesByType = Object.fromEntries(nodeRows.map((r) => [r.type, r.count]));
|
|
161
|
+
const edgesByType = Object.fromEntries(edgeRows.map((r) => [r.type, r.count]));
|
|
162
|
+
return { totalNodes, totalEdges, nodesByType, edgesByType };
|
|
163
|
+
}
|
|
164
|
+
exportToJson() {
|
|
165
|
+
const nodes = this.query('SELECT * FROM nodes').map((r) => this.rowToNode(r));
|
|
166
|
+
const edges = this.query('SELECT * FROM edges').map((r) => this.rowToEdge(r));
|
|
167
|
+
return { nodes, edges };
|
|
168
|
+
}
|
|
169
|
+
importFromJson(data) {
|
|
170
|
+
data.nodes.forEach((n) => this.addNode(n));
|
|
171
|
+
data.edges.forEach((e) => this.addEdge(e));
|
|
172
|
+
}
|
|
173
|
+
close() {
|
|
174
|
+
this.save();
|
|
175
|
+
this.db.close();
|
|
176
|
+
}
|
|
177
|
+
// ─── Private ───────────────────────────────────────────────────────────────
|
|
178
|
+
rowToNode(row) {
|
|
179
|
+
return {
|
|
180
|
+
id: row['id'],
|
|
181
|
+
type: row['type'],
|
|
182
|
+
label: row['label'],
|
|
183
|
+
description: row['description'],
|
|
184
|
+
metadata: JSON.parse(row['metadata'] || '{}'),
|
|
185
|
+
createdAt: row['created_at'],
|
|
186
|
+
updatedAt: row['updated_at'],
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
rowToEdge(row) {
|
|
190
|
+
return {
|
|
191
|
+
id: row['id'],
|
|
192
|
+
sourceId: row['source_id'],
|
|
193
|
+
targetId: row['target_id'],
|
|
194
|
+
type: row['type'],
|
|
195
|
+
weight: row['weight'],
|
|
196
|
+
metadata: JSON.parse(row['metadata'] || '{}'),
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=graph-rag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-rag.js","sourceRoot":"","sources":["../../src/graphrag/graph-rag.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graphrag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EACV,SAAS,EACT,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,eAAe,GAChB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graphrag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export type NodeType = 'task' | 'file' | 'schema' | 'endpoint' | 'component' | 'entity' | 'concept';
|
|
2
|
+
export type EdgeType = 'depends_on' | 'implements' | 'uses' | 'references' | 'related_to' | 'contains' | 'extends';
|
|
3
|
+
export interface GraphNode {
|
|
4
|
+
id: string;
|
|
5
|
+
type: NodeType;
|
|
6
|
+
label: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
metadata?: Record<string, unknown>;
|
|
9
|
+
createdAt?: string;
|
|
10
|
+
updatedAt?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface GraphEdge {
|
|
13
|
+
id: string;
|
|
14
|
+
sourceId: string;
|
|
15
|
+
targetId: string;
|
|
16
|
+
type: EdgeType;
|
|
17
|
+
weight?: number;
|
|
18
|
+
metadata?: Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
export interface TaskNode extends GraphNode {
|
|
21
|
+
type: 'task';
|
|
22
|
+
status: 'PENDING' | 'IN_PROGRESS' | 'DONE' | 'FAILED' | 'SKIPPED';
|
|
23
|
+
complexity: 'LOW' | 'MED' | 'HIGH';
|
|
24
|
+
prompt?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface FileNode extends GraphNode {
|
|
27
|
+
type: 'file';
|
|
28
|
+
path: string;
|
|
29
|
+
language?: string;
|
|
30
|
+
size?: number;
|
|
31
|
+
}
|
|
32
|
+
export interface SchemaNode extends GraphNode {
|
|
33
|
+
type: 'schema';
|
|
34
|
+
tableName?: string;
|
|
35
|
+
columns?: string[];
|
|
36
|
+
}
|
|
37
|
+
export interface EndpointNode extends GraphNode {
|
|
38
|
+
type: 'endpoint';
|
|
39
|
+
method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
40
|
+
path: string;
|
|
41
|
+
module?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface ComponentNode extends GraphNode {
|
|
44
|
+
type: 'component';
|
|
45
|
+
framework?: string;
|
|
46
|
+
props?: string[];
|
|
47
|
+
}
|
|
48
|
+
export interface SearchResult {
|
|
49
|
+
node: GraphNode;
|
|
50
|
+
score: number;
|
|
51
|
+
snippet?: string;
|
|
52
|
+
}
|
|
53
|
+
export interface GraphStatistics {
|
|
54
|
+
totalNodes: number;
|
|
55
|
+
totalEdges: number;
|
|
56
|
+
nodesByType: Record<NodeType, number>;
|
|
57
|
+
edgesByType: Record<EdgeType, number>;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/graphrag/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AACpG,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,YAAY,GAAG,MAAM,GAAG,YAAY,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC;AAEnH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,QAAS,SAAQ,SAAS;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAClE,UAAU,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAS,SAAQ,SAAS;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC3C,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;CACvC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/graphrag/types.ts"],"names":[],"mappings":""}
|