@dewtech/dare-cli 2.3.1 → 2.4.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 (48) hide show
  1. package/README.md +34 -0
  2. package/dist/__tests__/dag-runner/graph-ingest.test.js +81 -1
  3. package/dist/__tests__/dag-runner/graph-ingest.test.js.map +1 -1
  4. package/dist/__tests__/graphrag/factory.test.d.ts +2 -0
  5. package/dist/__tests__/graphrag/factory.test.d.ts.map +1 -0
  6. package/dist/__tests__/graphrag/factory.test.js +64 -0
  7. package/dist/__tests__/graphrag/factory.test.js.map +1 -0
  8. package/dist/__tests__/validate.test.d.ts +2 -0
  9. package/dist/__tests__/validate.test.d.ts.map +1 -0
  10. package/dist/__tests__/validate.test.js +130 -0
  11. package/dist/__tests__/validate.test.js.map +1 -0
  12. package/dist/bin/dare.js +4 -0
  13. package/dist/bin/dare.js.map +1 -1
  14. package/dist/commands/execute.d.ts.map +1 -1
  15. package/dist/commands/execute.js +44 -0
  16. package/dist/commands/execute.js.map +1 -1
  17. package/dist/commands/info.d.ts +9 -0
  18. package/dist/commands/info.d.ts.map +1 -0
  19. package/dist/commands/info.js +94 -0
  20. package/dist/commands/info.js.map +1 -0
  21. package/dist/commands/validate.d.ts +19 -0
  22. package/dist/commands/validate.d.ts.map +1 -0
  23. package/dist/commands/validate.js +112 -0
  24. package/dist/commands/validate.js.map +1 -0
  25. package/dist/dag-runner/graph-ingest.d.ts +10 -0
  26. package/dist/dag-runner/graph-ingest.d.ts.map +1 -1
  27. package/dist/dag-runner/graph-ingest.js +125 -0
  28. package/dist/dag-runner/graph-ingest.js.map +1 -1
  29. package/dist/graphrag/factory.d.ts +3 -0
  30. package/dist/graphrag/factory.d.ts.map +1 -1
  31. package/dist/graphrag/factory.js +19 -3
  32. package/dist/graphrag/factory.js.map +1 -1
  33. package/dist/graphrag/index.d.ts +2 -0
  34. package/dist/graphrag/index.d.ts.map +1 -1
  35. package/dist/graphrag/index.js +1 -0
  36. package/dist/graphrag/index.js.map +1 -1
  37. package/dist/graphrag/neo4j-graph.d.ts +58 -0
  38. package/dist/graphrag/neo4j-graph.d.ts.map +1 -0
  39. package/dist/graphrag/neo4j-graph.js +184 -0
  40. package/dist/graphrag/neo4j-graph.js.map +1 -0
  41. package/dist/index.d.ts +2 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +2 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/utils/project-generator.js +3 -2
  46. package/dist/utils/project-generator.js.map +1 -1
  47. package/package.json +1 -1
  48. package/templates/hooks/pre-commit-dare-validate +24 -0
@@ -0,0 +1,94 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import fs from 'fs-extra';
4
+ import path from 'path';
5
+ import { createRequire } from 'module';
6
+ import { convertYamlToDag } from '../utils/dag-converter.js';
7
+ import { loadAndApplyState, DEFAULT_STATE_PATH } from '../dag-runner/state-store.js';
8
+ import { loadGraphConfig } from '../graphrag/index.js';
9
+ const require = createRequire(import.meta.url);
10
+ /**
11
+ * `dare info` — print version, paths and project integrity.
12
+ *
13
+ * Read-only and side-effect free. Useful for diagnostics ("is the project
14
+ * properly set up?", "where does the graph live?", "how many tasks pending?").
15
+ */
16
+ export const infoCommand = new Command('info')
17
+ .description("Show version, paths and the current project's DARE integrity")
18
+ .action(async () => {
19
+ const cwd = process.cwd();
20
+ const cliPkg = require('../../package.json');
21
+ console.log(chalk.blue.bold('\nšŸ“– DARE Framework\n'));
22
+ console.log(` Package : ${chalk.cyan(cliPkg.name)}@${chalk.cyan(cliPkg.version)}`);
23
+ console.log(` Node : ${process.version}`);
24
+ console.log(` Platform : ${process.platform} ${process.arch}`);
25
+ console.log(` CWD : ${cwd}`);
26
+ // Project artifacts
27
+ const artifacts = [
28
+ ['dare.config.json', 'dare.config.json'],
29
+ ['DARE/DESIGN.md', path.join('DARE', 'DESIGN.md')],
30
+ ['DARE/BLUEPRINT.md', path.join('DARE', 'BLUEPRINT.md')],
31
+ ['DARE/dare-dag.yaml', path.join('DARE', 'dare-dag.yaml')],
32
+ ['DARE/TASKS.md', path.join('DARE', 'TASKS.md')],
33
+ ['DARE/.canvas.md', path.join('DARE', '.canvas.md')],
34
+ ['dare-graph.yml', 'dare-graph.yml'],
35
+ ['.dare/state.json', DEFAULT_STATE_PATH],
36
+ ];
37
+ console.log(chalk.bold('\n Artifacts:'));
38
+ for (const [label, rel] of artifacts) {
39
+ const abs = path.resolve(cwd, rel);
40
+ const exists = await fs.pathExists(abs);
41
+ const icon = exists ? chalk.green('āœ“') : chalk.gray('—');
42
+ console.log(` ${icon} ${label.padEnd(22)} ${exists ? chalk.gray(rel) : chalk.gray('(absent)')}`);
43
+ }
44
+ // Graph backend
45
+ try {
46
+ const graphConfig = await loadGraphConfig({ cwd });
47
+ const graphPath = graphConfig.path
48
+ ? path.resolve(cwd, graphConfig.path)
49
+ : '(default)';
50
+ const graphExists = graphConfig.backend !== 'neo4j' && (await fs.pathExists(graphPath));
51
+ console.log(chalk.bold('\n Knowledge graph:'));
52
+ console.log(` backend : ${chalk.cyan(graphConfig.backend)}`);
53
+ console.log(` path : ${graphPath}`);
54
+ console.log(` persisted : ${graphExists ? chalk.green('yes') : chalk.gray('not yet')}`);
55
+ }
56
+ catch (err) {
57
+ console.log(chalk.yellow(`\n Knowledge graph: error reading config — ${err instanceof Error ? err.message : String(err)}`));
58
+ }
59
+ // Task summary (best-effort — only when DAG exists)
60
+ const dagPath = path.resolve(cwd, 'DARE/dare-dag.yaml');
61
+ if (await fs.pathExists(dagPath)) {
62
+ const yaml = await fs.readFile(dagPath, 'utf-8');
63
+ try {
64
+ const dag = convertYamlToDag(yaml);
65
+ await loadAndApplyState(dag, path.resolve(cwd, DEFAULT_STATE_PATH));
66
+ const counts = countByStatus(dag.tasks.map((t) => t.status ?? 'PENDING'));
67
+ const total = dag.tasks.length;
68
+ console.log(chalk.bold('\n Task progress:'));
69
+ console.log(` total : ${total}`);
70
+ console.log(` āœ… DONE : ${counts.DONE}`);
71
+ console.log(` šŸ”„ RUNNING : ${counts.RUNNING}`);
72
+ console.log(` ā³ PENDING : ${counts.PENDING}`);
73
+ console.log(` āŒ FAILED : ${counts.FAILED}`);
74
+ console.log(` ā­ļø SKIPPED : ${counts.SKIPPED}`);
75
+ }
76
+ catch (err) {
77
+ console.log(chalk.yellow(`\n Task progress: dare-dag.yaml parse error — ${err instanceof Error ? err.message : String(err)}`));
78
+ }
79
+ }
80
+ console.log();
81
+ });
82
+ function countByStatus(statuses) {
83
+ const out = {
84
+ PENDING: 0,
85
+ RUNNING: 0,
86
+ DONE: 0,
87
+ FAILED: 0,
88
+ SKIPPED: 0,
89
+ };
90
+ for (const s of statuses)
91
+ out[s]++;
92
+ return out;
93
+ }
94
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * `dare validate` — static checks on `dare-dag.yaml`. Designed for use in
4
+ * pre-commit hooks and CI.
5
+ *
6
+ * Exit codes:
7
+ * 0 → no errors (warnings are tolerated unless `--strict`)
8
+ * 1 → at least one error
9
+ *
10
+ * Checks:
11
+ * - file exists and parses as YAML
12
+ * - task ids are unique and kebab-case
13
+ * - depends_on points to existing ids
14
+ * - no cycles (Kahn's traversal)
15
+ * - subtask_prompt is non-empty
16
+ * - WARNING: only one task at rank 0 (no real parallelism)
17
+ */
18
+ export declare const validateCommand: Command;
19
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,SAuGxB,CAAC"}
@@ -0,0 +1,112 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import fs from 'fs-extra';
4
+ import path from 'path';
5
+ import { convertYamlToDag } from '../utils/dag-converter.js';
6
+ import { computeRanks } from '../dag-runner/run_dag.js';
7
+ /**
8
+ * `dare validate` — static checks on `dare-dag.yaml`. Designed for use in
9
+ * pre-commit hooks and CI.
10
+ *
11
+ * Exit codes:
12
+ * 0 → no errors (warnings are tolerated unless `--strict`)
13
+ * 1 → at least one error
14
+ *
15
+ * Checks:
16
+ * - file exists and parses as YAML
17
+ * - task ids are unique and kebab-case
18
+ * - depends_on points to existing ids
19
+ * - no cycles (Kahn's traversal)
20
+ * - subtask_prompt is non-empty
21
+ * - WARNING: only one task at rank 0 (no real parallelism)
22
+ */
23
+ export const validateCommand = new Command('validate')
24
+ .description('Validate dare-dag.yaml integrity (suitable for pre-commit hooks and CI)')
25
+ .option('--dag <file>', 'Path to dare-dag.yaml', 'DARE/dare-dag.yaml')
26
+ .option('--strict', 'Treat warnings as errors', false)
27
+ .action(async (options) => {
28
+ const cwd = process.cwd();
29
+ const dagPath = path.resolve(cwd, options.dag);
30
+ if (!(await fs.pathExists(dagPath))) {
31
+ console.error(chalk.red(`āŒ ${options.dag} not found.`));
32
+ process.exit(1);
33
+ }
34
+ const yaml = await fs.readFile(dagPath, 'utf-8');
35
+ let dag;
36
+ try {
37
+ dag = convertYamlToDag(yaml);
38
+ }
39
+ catch (err) {
40
+ console.error(chalk.red(`āŒ Failed to parse ${options.dag}: ${formatError(err)}`));
41
+ process.exit(1);
42
+ }
43
+ const errors = [];
44
+ const warnings = [];
45
+ // 1. Unique ids
46
+ const seen = new Set();
47
+ for (const task of dag.tasks) {
48
+ if (seen.has(task.id))
49
+ errors.push(`Duplicate task id: ${task.id}`);
50
+ seen.add(task.id);
51
+ }
52
+ // 2. kebab-case ids
53
+ const KEBAB_RE = /^[a-z][a-z0-9-]*$/;
54
+ for (const task of dag.tasks) {
55
+ if (!KEBAB_RE.test(task.id)) {
56
+ errors.push(`Invalid id "${task.id}" — use kebab-case (a-z, 0-9, -).`);
57
+ }
58
+ }
59
+ // 3. depends_on references existing ids
60
+ for (const task of dag.tasks) {
61
+ for (const dep of task.depends_on) {
62
+ if (!seen.has(dep)) {
63
+ errors.push(`Task "${task.id}" depends on unknown task "${dep}".`);
64
+ }
65
+ if (dep === task.id) {
66
+ errors.push(`Task "${task.id}" depends on itself.`);
67
+ }
68
+ }
69
+ }
70
+ // 4. No cycles (computeRanks throws on cycles)
71
+ if (errors.length === 0) {
72
+ try {
73
+ computeRanks(dag.tasks);
74
+ }
75
+ catch (err) {
76
+ errors.push(formatError(err));
77
+ }
78
+ }
79
+ // 5. Non-empty prompts
80
+ for (const task of dag.tasks) {
81
+ if (!task.subtask_prompt || task.subtask_prompt.trim().length === 0) {
82
+ warnings.push(`Task "${task.id}" has empty subtask_prompt.`);
83
+ }
84
+ }
85
+ // 6. Parallelism warning
86
+ if (errors.length === 0) {
87
+ const ranks = computeRanks(dag.tasks);
88
+ const rank0 = [...ranks.values()].filter((r) => r === 0).length;
89
+ if (rank0 < 2) {
90
+ warnings.push(`Only ${rank0} task(s) at rank 0 — DAG has no real parallelism. Consider relaxing some depends_on.`);
91
+ }
92
+ }
93
+ // Report
94
+ if (errors.length === 0 && warnings.length === 0) {
95
+ console.log(chalk.green(`āœ… ${options.dag}: ${dag.tasks.length} tasks — valid.`));
96
+ return;
97
+ }
98
+ for (const e of errors)
99
+ console.log(chalk.red(` āŒ ${e}`));
100
+ for (const w of warnings)
101
+ console.log(chalk.yellow(` ⚠ ${w}`));
102
+ const failOnWarnings = options.strict && warnings.length > 0;
103
+ if (errors.length > 0 || failOnWarnings) {
104
+ console.log(chalk.red(`\n ${errors.length} error(s), ${warnings.length} warning(s).${failOnWarnings ? ' (--strict)' : ''}`));
105
+ process.exit(1);
106
+ }
107
+ console.log(chalk.yellow(`\n 0 errors, ${warnings.length} warning(s). Pass --strict to fail on warnings.`));
108
+ });
109
+ function formatError(err) {
110
+ return err instanceof Error ? err.message : String(err);
111
+ }
112
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
@@ -14,4 +14,14 @@ export declare function ingestTask(graph: KnowledgeGraph, task: DagTask, dag: Da
14
14
  */
15
15
  export declare function ingestDag(graph: KnowledgeGraph, dag: Dag, opts?: IngestOptions): void;
16
16
  export declare function extractFilePaths(text: string): string[];
17
+ declare const HTTP_METHODS: readonly ["GET", "POST", "PUT", "PATCH", "DELETE"];
18
+ type HttpMethod = (typeof HTTP_METHODS)[number];
19
+ export interface ExtractedEndpoint {
20
+ method: HttpMethod;
21
+ path: string;
22
+ }
23
+ export declare function extractEndpoints(text: string): ExtractedEndpoint[];
24
+ export declare function extractSchemas(text: string): string[];
25
+ export declare function extractComponents(text: string): string[];
26
+ export {};
17
27
  //# sourceMappingURL=graph-ingest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graph-ingest.d.ts","sourceRoot":"","sources":["../../src/dag-runner/graph-ingest.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,GAAG,EACR,KAAK,GAAE,aAAkB,GACxB,IAAI,CA+CN;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,GAAE,aAAkB,GAAG,IAAI,CAEzF;AAqBD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBvD"}
1
+ {"version":3,"file":"graph-ingest.d.ts","sourceRoot":"","sources":["../../src/dag-runner/graph-ingest.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,GAAG,EACR,KAAK,GAAE,aAAkB,GACxB,IAAI,CAoGN;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,GAAE,aAAkB,GAAG,IAAI,CAEzF;AAqBD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBvD;AAID,QAAA,MAAM,YAAY,oDAAqD,CAAC;AACxE,KAAK,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAIhD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAWlE;AAgBD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAUrD;AAqBD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAUxD"}
@@ -63,6 +63,55 @@ export function ingestTask(graph, task, dag, _opts = {}) {
63
63
  type: 'implements',
64
64
  });
65
65
  }
66
+ // 4) endpoints (HTTP routes detected in the output)
67
+ for (const endpoint of extractEndpoints(task.output)) {
68
+ const id = `${endpoint.method}:${endpoint.path}`;
69
+ graph.addNode({
70
+ id: nodeId('endpoint', id),
71
+ type: 'endpoint',
72
+ label: id,
73
+ description: `${endpoint.method} ${endpoint.path}`,
74
+ metadata: { method: endpoint.method, path: endpoint.path },
75
+ });
76
+ graph.addEdge({
77
+ id: edgeId('implements', task.id, `endpoint:${id}`),
78
+ sourceId: nodeId('task', task.id),
79
+ targetId: nodeId('endpoint', id),
80
+ type: 'implements',
81
+ });
82
+ }
83
+ // 5) schemas (database tables / migrations detected in the output)
84
+ for (const schema of extractSchemas(task.output)) {
85
+ graph.addNode({
86
+ id: nodeId('schema', schema),
87
+ type: 'schema',
88
+ label: schema,
89
+ description: `table: ${schema}`,
90
+ metadata: { tableName: schema },
91
+ });
92
+ graph.addEdge({
93
+ id: edgeId('implements', task.id, `schema:${schema}`),
94
+ sourceId: nodeId('task', task.id),
95
+ targetId: nodeId('schema', schema),
96
+ type: 'implements',
97
+ });
98
+ }
99
+ // 6) components (UI components detected in the output)
100
+ for (const component of extractComponents(task.output)) {
101
+ graph.addNode({
102
+ id: nodeId('component', component),
103
+ type: 'component',
104
+ label: component,
105
+ description: `component: ${component}`,
106
+ metadata: { name: component },
107
+ });
108
+ graph.addEdge({
109
+ id: edgeId('implements', task.id, `component:${component}`),
110
+ sourceId: nodeId('task', task.id),
111
+ targetId: nodeId('component', component),
112
+ type: 'implements',
113
+ });
114
+ }
66
115
  }
67
116
  /**
68
117
  * Ingest every task of a DAG. Useful for `dare graph ingest` after an
@@ -109,6 +158,82 @@ export function extractFilePaths(text) {
109
158
  }
110
159
  return [...found];
111
160
  }
161
+ // ─── Endpoints ─────────────────────────────────────────────────────────────
162
+ const HTTP_METHODS = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'];
163
+ const ENDPOINT_RE = /\b(GET|POST|PUT|PATCH|DELETE)\s+(\/[A-Za-z0-9_/:{}.\-]+)/g;
164
+ export function extractEndpoints(text) {
165
+ const found = new Map();
166
+ ENDPOINT_RE.lastIndex = 0;
167
+ for (let m; (m = ENDPOINT_RE.exec(text));) {
168
+ const method = m[1];
169
+ const path = m[2].replace(/[.,;:!?)\]]+$/, '');
170
+ if (path.length < 2)
171
+ continue;
172
+ const key = `${method} ${path}`;
173
+ if (!found.has(key))
174
+ found.set(key, { method, path });
175
+ }
176
+ return [...found.values()];
177
+ }
178
+ // ─── Schemas (database tables) ─────────────────────────────────────────────
179
+ // Captures table names from common migration / SQL phrasing:
180
+ // CREATE TABLE users (...)
181
+ // Schema::create('users', ...)
182
+ // ALTER TABLE refresh_tokens ...
183
+ // Created table: products
184
+ const SCHEMA_PATTERNS = [
185
+ /\bCREATE\s+TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?["`']?(\w+)["`']?/gi,
186
+ /\bALTER\s+TABLE\s+["`']?(\w+)["`']?/gi,
187
+ /Schema::create\(\s*['"](\w+)['"]/g,
188
+ /(?:Created|Created table|Migration created|table)\s*[:\-]?\s*[`'"]?(\w+)[`'"]?\s+(?:table|migration)/gi,
189
+ ];
190
+ export function extractSchemas(text) {
191
+ const found = new Set();
192
+ for (const re of SCHEMA_PATTERNS) {
193
+ re.lastIndex = 0;
194
+ for (let m; (m = re.exec(text));) {
195
+ const name = m[1].toLowerCase();
196
+ if (looksLikeIdentifier(name) && !STOP_WORDS.has(name))
197
+ found.add(name);
198
+ }
199
+ }
200
+ return [...found];
201
+ }
202
+ // ─── Components (UI / class components) ────────────────────────────────────
203
+ // Detects PascalCase identifiers in JSX-like usage or class declarations:
204
+ // <UserForm /> or <UserForm>
205
+ // class UserForm extends Component
206
+ // export default function UserForm(...)
207
+ // const UserForm = (...)
208
+ const COMPONENT_PATTERNS = [
209
+ /<([A-Z][A-Za-z0-9]+)(?:\s|\/?>)/g,
210
+ /\bclass\s+([A-Z][A-Za-z0-9]+)\s+extends\s+(?:React\.)?Component\b/g,
211
+ /\bexport\s+default\s+function\s+([A-Z][A-Za-z0-9]+)\s*\(/g,
212
+ /\bfunction\s+([A-Z][A-Za-z0-9]+)\s*\([^)]*\)\s*(?::\s*[^{]+)?\{\s*return\s*</g,
213
+ ];
214
+ const COMPONENT_STOP = new Set([
215
+ 'React', 'Component', 'Fragment', 'Suspense', 'StrictMode', 'Provider',
216
+ 'Router', 'Route', 'Link', 'Outlet', 'NavLink',
217
+ ]);
218
+ export function extractComponents(text) {
219
+ const found = new Set();
220
+ for (const re of COMPONENT_PATTERNS) {
221
+ re.lastIndex = 0;
222
+ for (let m; (m = re.exec(text));) {
223
+ const name = m[1];
224
+ if (!COMPONENT_STOP.has(name))
225
+ found.add(name);
226
+ }
227
+ }
228
+ return [...found];
229
+ }
230
+ const STOP_WORDS = new Set([
231
+ 'if', 'as', 'on', 'is', 'or', 'do', 'in', 'to', 'a', 'an', 'the',
232
+ 'table', 'database', 'index', 'column', 'row', 'sql',
233
+ ]);
234
+ function looksLikeIdentifier(s) {
235
+ return /^[a-z_][a-z0-9_]{1,63}$/i.test(s);
236
+ }
112
237
  function looksLikePath(p) {
113
238
  if (p.length === 0 || p.length > 200)
114
239
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"graph-ingest.js","sourceRoot":"","sources":["../../src/dag-runner/graph-ingest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph-ingest.js","sourceRoot":"","sources":["../../src/dag-runner/graph-ingest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,IAAI,MAAM,MAAM,CAAC;AASxB;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,KAAqB,EACrB,IAAa,EACb,GAAQ,EACR,QAAuB,EAAE;IAEzB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO;IAEnF,eAAe;IACf,KAAK,CAAC,OAAO,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;QAC3B,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;QAC9C,QAAQ,EAAE;YACR,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,QAAQ;YAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB;KACF,CAAC,CAAC;IAEH,mCAAmC;IACnC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC,KAAK,CAAC,OAAO,CAAC;YACZ,EAAE,EAAE,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC;YAC3C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;YACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;YAClC,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;IACL,CAAC;IAED,yDAAyD;IACzD,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO;IAEnD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAChD,KAAK,CAAC,OAAO,CAAC;YACZ,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;YAC9B,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YAChC,WAAW,EAAE,UAAU;YACvB,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,EAAE;SACrE,CAAC,CAAC;QACH,KAAK,CAAC,OAAO,CAAC;YACZ,EAAE,EAAE,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC;YAC7C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;YACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;YACpC,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;IACL,CAAC;IAED,oDAAoD;IACpD,KAAK,MAAM,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACrD,MAAM,EAAE,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QACjD,KAAK,CAAC,OAAO,CAAC;YACZ,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;YAC1B,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,EAAE;YACT,WAAW,EAAE,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE;YAClD,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;SAC3D,CAAC,CAAC;QACH,KAAK,CAAC,OAAO,CAAC;YACZ,EAAE,EAAE,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,CAAC;YACnD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;YACjC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;YAChC,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;IACL,CAAC;IAED,mEAAmE;IACnE,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,KAAK,CAAC,OAAO,CAAC;YACZ,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC5B,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,UAAU,MAAM,EAAE;YAC/B,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;SAChC,CAAC,CAAC;QACH,KAAK,CAAC,OAAO,CAAC;YACZ,EAAE,EAAE,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,MAAM,EAAE,CAAC;YACrD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;YACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;YAClC,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;IACL,CAAC;IAED,uDAAuD;IACvD,KAAK,MAAM,SAAS,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,KAAK,CAAC,OAAO,CAAC;YACZ,EAAE,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC;YAClC,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,cAAc,SAAS,EAAE;YACtC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;SAC9B,CAAC,CAAC;QACH,KAAK,CAAC,OAAO,CAAC;YACZ,EAAE,EAAE,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,aAAa,SAAS,EAAE,CAAC;YAC3D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;YACjC,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC;YACxC,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB,EAAE,GAAQ,EAAE,OAAsB,EAAE;IACjF,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK;QAAE,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACnE,CAAC;AAED,+EAA+E;AAE/E,+EAA+E;AAC/E,uEAAuE;AACvE,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAC9C,MAAM,gBAAgB,GAAG;IACvB,sEAAsE;IACtE,oDAAoD;CACrD,CAAC;AAEF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IACtC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;IACvC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK;IACzC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAC5C,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ;IACtC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW;CAC7D,CAAC,CAAC;AAEH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,oEAAoE;IACpE,kCAAkC;IAClC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhC,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE,CAAC;QAClC,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC;QACjB,KAAK,IAAI,CAAyB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAI,CAAC;YAC/D,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,aAAa,CAAC,OAAO,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC;IAC9B,KAAK,IAAI,CAAyB,EAAE,CAAC,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAI,CAAC;QAC5E,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,aAAa,CAAC,OAAO,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,8EAA8E;AAE9E,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC;AAGxE,MAAM,WAAW,GAAG,2DAA2D,CAAC;AAOhF,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,KAAK,GAAG,IAAI,GAAG,EAA6B,CAAC;IACnD,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;IAC1B,KAAK,IAAI,CAAyB,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAI,CAAC;QACnE,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAe,CAAC;QAClC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAC9B,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,8EAA8E;AAE9E,6DAA6D;AAC7D,6BAA6B;AAC7B,iCAAiC;AACjC,mCAAmC;AACnC,4BAA4B;AAC5B,MAAM,eAAe,GAAa;IAChC,iEAAiE;IACjE,uCAAuC;IACvC,mCAAmC;IACnC,wGAAwG;CACzG,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;QACjC,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC;QACjB,KAAK,IAAI,CAAyB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAI,CAAC;YAC1D,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAChC,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,8EAA8E;AAE9E,0EAA0E;AAC1E,+BAA+B;AAC/B,qCAAqC;AACrC,0CAA0C;AAC1C,2BAA2B;AAC3B,MAAM,kBAAkB,GAAa;IACnC,kCAAkC;IAClC,oEAAoE;IACpE,2DAA2D;IAC3D,+EAA+E;CAChF,CAAC;AAEF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU;IACtE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS;CAC/C,CAAC,CAAC;AAEH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,EAAE,IAAI,kBAAkB,EAAE,CAAC;QACpC,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC;QACjB,KAAK,IAAI,CAAyB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAI,CAAC;YAC1D,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK;IAChE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK;CACrD,CAAC,CAAC;AAEH,SAAS,mBAAmB,CAAC,CAAS;IACpC,OAAO,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,aAAa,CAAC,CAAS;IAC9B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,KAAK,CAAC;IACnD,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,CAAC,CAAC,OAAO,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1D,MAAM,GAAG,GAA2B;QAClC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;QACnC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;QACzE,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,MAAM;QACV,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,KAAK;QACV,EAAE,EAAE,MAAM;QACV,GAAG,EAAE,KAAK;QACV,MAAM,EAAE,QAAQ;QAChB,GAAG,EAAE,KAAK;KACX,CAAC;IACF,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,MAAM,CACb,IAAkF,EAClF,EAAU;IAEV,OAAO,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,MAAM,CAAC,IAAY,EAAE,IAAY,EAAE,EAAU;IACpD,OAAO,GAAG,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;AAClC,CAAC"}
@@ -1,9 +1,12 @@
1
+ import { type Neo4jConfig } from './neo4j-graph.js';
1
2
  import type { KnowledgeGraph } from './knowledge-graph.js';
2
3
  export type GraphBackend = 'sqlite' | 'json' | 'neo4j';
3
4
  export interface GraphConfig {
4
5
  backend: GraphBackend;
5
6
  /** Path to the persistence target, relative to the project root. */
6
7
  path?: string;
8
+ /** Required when backend === 'neo4j'. */
9
+ neo4j?: Neo4jConfig;
7
10
  }
8
11
  /**
9
12
  * Resolve graph config:
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/graphrag/factory.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,YAAY,CAAC;IACtB,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAQD;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,IAAI,GAAE;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,WAAW,CAAC;CACnB,GAAG,OAAO,CAAC,WAAW,CAAC,CAoB5B;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,WAAW,EACnB,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1B,OAAO,CAAC,cAAc,CAAC,CAqBzB"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/graphrag/factory.ts"],"names":[],"mappings":"AAcA,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,YAAY,CAAC;IACtB,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAQD;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,IAAI,GAAE;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,WAAW,CAAC;CACnB,GAAG,OAAO,CAAC,WAAW,CAAC,CAgC5B;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,WAAW,EACnB,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1B,OAAO,CAAC,cAAc,CAAC,CA0BzB"}
@@ -12,6 +12,7 @@ import fs from 'fs-extra';
12
12
  import { parse as parseYaml } from 'yaml';
13
13
  import { GraphRAG } from './graph-rag.js';
14
14
  import { JsonGraph } from './json-graph.js';
15
+ import { Neo4jGraph } from './neo4j-graph.js';
15
16
  const DEFAULTS = {
16
17
  sqlite: '.dare/graph.db',
17
18
  json: '.dare/graph.json',
@@ -36,6 +37,16 @@ export async function loadGraphConfig(opts = {}) {
36
37
  const parsed = (parseYaml(raw) ?? {});
37
38
  const backend = parsed.backend ?? 'sqlite';
38
39
  const subBlock = parsed[backend] ?? {};
40
+ if (backend === 'neo4j') {
41
+ const neo4j = {
42
+ url: typeof subBlock.url === 'string' ? subBlock.url : 'http://localhost:7474',
43
+ database: typeof subBlock.database === 'string' ? subBlock.database : 'neo4j',
44
+ username: typeof subBlock.username === 'string' ? subBlock.username : undefined,
45
+ password: typeof subBlock.password === 'string' ? subBlock.password : undefined,
46
+ auth: typeof subBlock.auth === 'string' ? subBlock.auth : undefined,
47
+ };
48
+ return { backend, neo4j };
49
+ }
39
50
  const filePath = typeof subBlock.path === 'string' ? subBlock.path : DEFAULTS[backend];
40
51
  return normalize({ backend, path: filePath });
41
52
  }
@@ -45,10 +56,15 @@ export async function loadGraphConfig(opts = {}) {
45
56
  */
46
57
  export async function createGraph(config, opts = {}) {
47
58
  const cwd = opts.cwd ?? process.cwd();
48
- const cfg = normalize(config);
49
- if (cfg.backend === 'neo4j') {
50
- throw new Error('Neo4j backend is not yet implemented in @dewtech/dare-cli. Use `backend: sqlite` or `backend: json` in dare-graph.yml. (PRs welcome.)');
59
+ if (config.backend === 'neo4j') {
60
+ if (!config.neo4j?.url) {
61
+ throw new Error('dare-graph.yml `neo4j.url` is required for the neo4j backend (e.g. http://localhost:7474).');
62
+ }
63
+ const graph = new Neo4jGraph(config.neo4j);
64
+ await graph.init();
65
+ return graph;
51
66
  }
67
+ const cfg = normalize(config);
52
68
  if (!cfg.path) {
53
69
  throw new Error(`dare-graph.yml is missing the storage path for backend=${cfg.backend}.`);
54
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/graphrag/factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/graphrag/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAoB,MAAM,kBAAkB,CAAC;AAahE,MAAM,QAAQ,GAA6C;IACzD,MAAM,EAAE,gBAAgB;IACxB,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,SAAS;CACjB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAGlC,EAAE;IACJ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAEjD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACtD,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC7D,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAC;IACjE,MAAM,OAAO,GAAI,MAAM,CAAC,OAAwB,IAAI,QAAQ,CAAC;IAC7D,MAAM,QAAQ,GAAI,MAAM,CAAC,OAAO,CAAyC,IAAI,EAAE,CAAC;IAEhF,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,KAAK,GAAgB;YACzB,GAAG,EAAE,OAAO,QAAQ,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,uBAAuB;YAC9E,QAAQ,EAAE,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO;YAC7E,QAAQ,EAAE,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YAC/E,QAAQ,EAAE,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YAC/E,IAAI,EAAE,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SACpE,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,QAAQ,GACZ,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAExE,OAAO,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAmB,EACnB,OAAyB,EAAE;IAE3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEtC,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,0DAA0D,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAEnF,MAAM,KAAK,GACT,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;IAE5E,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACnB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,GAAgB;IACjC,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;KACxC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,7 @@
1
1
  export { GraphRAG } from './graph-rag.js';
2
2
  export { JsonGraph } from './json-graph.js';
3
+ export { Neo4jGraph } from './neo4j-graph.js';
4
+ export type { Neo4jConfig } from './neo4j-graph.js';
3
5
  export { createGraph, loadGraphConfig } from './factory.js';
4
6
  export type { KnowledgeGraph } from './knowledge-graph.js';
5
7
  export type { GraphConfig, GraphBackend } from './factory.js';
@@ -1 +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,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC5D,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9D,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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graphrag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC5D,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9D,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"}
@@ -1,4 +1,5 @@
1
1
  export { GraphRAG } from './graph-rag.js';
2
2
  export { JsonGraph } from './json-graph.js';
3
+ export { Neo4jGraph } from './neo4j-graph.js';
3
4
  export { createGraph, loadGraphConfig } from './factory.js';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graphrag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graphrag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Neo4jGraph — knowledge graph backend that talks to a Neo4j server via the
3
+ * official HTTP API (`/db/{database}/tx/commit`).
4
+ *
5
+ * No external Node driver is pulled in — we use the global `fetch` available
6
+ * in Node 18+ and Bolt is not required for our usage. This trades a bit of
7
+ * latency for zero install footprint, which fits the DARE "single package"
8
+ * goal.
9
+ *
10
+ * Activated by `dare-graph.yml`:
11
+ *
12
+ * backend: neo4j
13
+ * neo4j:
14
+ * url: http://localhost:7474
15
+ * database: dare
16
+ * username: neo4j
17
+ * password: dare-secret
18
+ * # Or:
19
+ * # auth: bearer <token>
20
+ */
21
+ import type { KnowledgeGraph, GraphNode, GraphEdge, NodeType, SearchResult, GraphStatistics } from './knowledge-graph.js';
22
+ export interface Neo4jConfig {
23
+ url: string;
24
+ database?: string;
25
+ username?: string;
26
+ password?: string;
27
+ /** Optional pre-built Authorization header (overrides username/password). */
28
+ auth?: string;
29
+ }
30
+ export declare class Neo4jGraph implements KnowledgeGraph {
31
+ private readonly config;
32
+ private endpoint;
33
+ private headers;
34
+ private nodeCache;
35
+ private edgeCache;
36
+ constructor(config: Neo4jConfig);
37
+ init(): Promise<void>;
38
+ addNode(node: GraphNode): void;
39
+ getNode(id: string): GraphNode | null;
40
+ queryNodes(type?: NodeType, limit?: number): GraphNode[];
41
+ searchNodes(query: string, limit?: number): SearchResult[];
42
+ deleteNode(id: string): void;
43
+ addEdge(edge: GraphEdge): void;
44
+ getEdges(nodeId: string, direction?: 'out' | 'in' | 'both'): GraphEdge[];
45
+ getNodeDependencies(nodeId: string, depth?: number): GraphNode[];
46
+ getStatistics(): GraphStatistics;
47
+ exportToJson(): {
48
+ nodes: GraphNode[];
49
+ edges: GraphEdge[];
50
+ };
51
+ importFromJson(data: {
52
+ nodes: GraphNode[];
53
+ edges: GraphEdge[];
54
+ }): void;
55
+ close(): void;
56
+ private runMany;
57
+ }
58
+ //# sourceMappingURL=neo4j-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neo4j-graph.d.ts","sourceRoot":"","sources":["../../src/graphrag/neo4j-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,QAAQ,EAER,YAAY,EACZ,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,UAAW,YAAW,cAAc;IAMnC,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,SAAS,CAAgC;gBAEpB,MAAM,EAAE,WAAW;IAkB1C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAuB9B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIrC,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,SAAK,GAAG,SAAS,EAAE;IAOpD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,YAAY,EAAE;IAatD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAY5B,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAqB9B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,KAAK,GAAG,IAAI,GAAG,MAAe,GAAG,SAAS,EAAE;IAQhF,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,SAAS,EAAE;IAmB3D,aAAa,IAAI,eAAe;IAiBhC,YAAY,IAAI;QAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAAC,KAAK,EAAE,SAAS,EAAE,CAAA;KAAE;IAO1D,cAAc,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAAC,KAAK,EAAE,SAAS,EAAE,CAAA;KAAE,GAAG,IAAI;IAKtE,KAAK,IAAI,IAAI;YAMC,OAAO;CAmBtB"}