@dewtech/dare-cli 3.4.0 → 3.5.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 (175) hide show
  1. package/dist/__tests__/dag-runner/buildLocateContext.test.d.ts +2 -0
  2. package/dist/__tests__/dag-runner/buildLocateContext.test.d.ts.map +1 -0
  3. package/dist/__tests__/dag-runner/buildLocateContext.test.js +53 -0
  4. package/dist/__tests__/dag-runner/buildLocateContext.test.js.map +1 -0
  5. package/dist/__tests__/dual-graph.test.d.ts +2 -0
  6. package/dist/__tests__/dual-graph.test.d.ts.map +1 -0
  7. package/dist/__tests__/dual-graph.test.js +141 -0
  8. package/dist/__tests__/dual-graph.test.js.map +1 -0
  9. package/dist/__tests__/graphrag/contract/traverse.contract.d.ts +9 -0
  10. package/dist/__tests__/graphrag/contract/traverse.contract.d.ts.map +1 -0
  11. package/dist/__tests__/graphrag/contract/traverse.contract.js +58 -0
  12. package/dist/__tests__/graphrag/contract/traverse.contract.js.map +1 -0
  13. package/dist/__tests__/graphrag/contract/traverse.contract.test.d.ts +2 -0
  14. package/dist/__tests__/graphrag/contract/traverse.contract.test.d.ts.map +1 -0
  15. package/dist/__tests__/graphrag/contract/traverse.contract.test.js +100 -0
  16. package/dist/__tests__/graphrag/contract/traverse.contract.test.js.map +1 -0
  17. package/dist/__tests__/graphrag/factory.test.js +10 -1
  18. package/dist/__tests__/graphrag/factory.test.js.map +1 -1
  19. package/dist/__tests__/graphrag/fixtures/dual-graph/build-fixture-graph.d.ts +11 -0
  20. package/dist/__tests__/graphrag/fixtures/dual-graph/build-fixture-graph.d.ts.map +1 -0
  21. package/dist/__tests__/graphrag/fixtures/dual-graph/build-fixture-graph.js +34 -0
  22. package/dist/__tests__/graphrag/fixtures/dual-graph/build-fixture-graph.js.map +1 -0
  23. package/dist/__tests__/graphrag/fixtures/dual-graph/fixtures.test.d.ts +2 -0
  24. package/dist/__tests__/graphrag/fixtures/dual-graph/fixtures.test.d.ts.map +1 -0
  25. package/dist/__tests__/graphrag/fixtures/dual-graph/fixtures.test.js +46 -0
  26. package/dist/__tests__/graphrag/fixtures/dual-graph/fixtures.test.js.map +1 -0
  27. package/dist/__tests__/graphrag/graph-rag.test.js +31 -0
  28. package/dist/__tests__/graphrag/graph-rag.test.js.map +1 -1
  29. package/dist/__tests__/graphrag/json-graph.test.js +57 -0
  30. package/dist/__tests__/graphrag/json-graph.test.js.map +1 -1
  31. package/dist/__tests__/graphrag/neo4j-graph.test.d.ts +2 -0
  32. package/dist/__tests__/graphrag/neo4j-graph.test.d.ts.map +1 -0
  33. package/dist/__tests__/graphrag/neo4j-graph.test.js +104 -0
  34. package/dist/__tests__/graphrag/neo4j-graph.test.js.map +1 -0
  35. package/dist/__tests__/graphrag/neo4j-persistence.test.d.ts +2 -0
  36. package/dist/__tests__/graphrag/neo4j-persistence.test.d.ts.map +1 -0
  37. package/dist/__tests__/graphrag/neo4j-persistence.test.js +110 -0
  38. package/dist/__tests__/graphrag/neo4j-persistence.test.js.map +1 -0
  39. package/dist/commands/__tests__/execute.telemetry.spec.js +9 -0
  40. package/dist/commands/__tests__/execute.telemetry.spec.js.map +1 -1
  41. package/dist/commands/__tests__/graph-viz-layers.test.d.ts +2 -0
  42. package/dist/commands/__tests__/graph-viz-layers.test.d.ts.map +1 -0
  43. package/dist/commands/__tests__/graph-viz-layers.test.js +36 -0
  44. package/dist/commands/__tests__/graph-viz-layers.test.js.map +1 -0
  45. package/dist/commands/__tests__/impact.test.d.ts +2 -0
  46. package/dist/commands/__tests__/impact.test.d.ts.map +1 -0
  47. package/dist/commands/__tests__/impact.test.js +26 -0
  48. package/dist/commands/__tests__/impact.test.js.map +1 -0
  49. package/dist/commands/__tests__/locate.test.d.ts +2 -0
  50. package/dist/commands/__tests__/locate.test.d.ts.map +1 -0
  51. package/dist/commands/__tests__/locate.test.js +35 -0
  52. package/dist/commands/__tests__/locate.test.js.map +1 -0
  53. package/dist/commands/__tests__/owners.test.d.ts +2 -0
  54. package/dist/commands/__tests__/owners.test.d.ts.map +1 -0
  55. package/dist/commands/__tests__/owners.test.js +34 -0
  56. package/dist/commands/__tests__/owners.test.js.map +1 -0
  57. package/dist/commands/__tests__/trace.test.d.ts +2 -0
  58. package/dist/commands/__tests__/trace.test.d.ts.map +1 -0
  59. package/dist/commands/__tests__/trace.test.js +29 -0
  60. package/dist/commands/__tests__/trace.test.js.map +1 -0
  61. package/dist/commands/execute.d.ts.map +1 -1
  62. package/dist/commands/execute.js +11 -6
  63. package/dist/commands/execute.js.map +1 -1
  64. package/dist/commands/graph-queries.d.ts +48 -0
  65. package/dist/commands/graph-queries.d.ts.map +1 -0
  66. package/dist/commands/graph-queries.js +204 -0
  67. package/dist/commands/graph-queries.js.map +1 -0
  68. package/dist/commands/graph.d.ts +13 -0
  69. package/dist/commands/graph.d.ts.map +1 -1
  70. package/dist/commands/graph.js +212 -8
  71. package/dist/commands/graph.js.map +1 -1
  72. package/dist/dag-runner/__tests__/fixtures/src/math.d.ts +3 -0
  73. package/dist/dag-runner/__tests__/fixtures/src/math.d.ts.map +1 -0
  74. package/dist/dag-runner/__tests__/fixtures/src/math.js +7 -0
  75. package/dist/dag-runner/__tests__/fixtures/src/math.js.map +1 -0
  76. package/dist/dag-runner/__tests__/graph-ingest-symbols.test.d.ts +2 -0
  77. package/dist/dag-runner/__tests__/graph-ingest-symbols.test.d.ts.map +1 -0
  78. package/dist/dag-runner/__tests__/graph-ingest-symbols.test.js +81 -0
  79. package/dist/dag-runner/__tests__/graph-ingest-symbols.test.js.map +1 -0
  80. package/dist/dag-runner/graph-ingest.d.ts.map +1 -1
  81. package/dist/dag-runner/graph-ingest.js +46 -0
  82. package/dist/dag-runner/graph-ingest.js.map +1 -1
  83. package/dist/dag-runner/graph-locate.d.ts +11 -0
  84. package/dist/dag-runner/graph-locate.d.ts.map +1 -0
  85. package/dist/dag-runner/graph-locate.js +74 -0
  86. package/dist/dag-runner/graph-locate.js.map +1 -0
  87. package/dist/dag-runner/run_dag.d.ts +3 -1
  88. package/dist/dag-runner/run_dag.d.ts.map +1 -1
  89. package/dist/dag-runner/run_dag.js +2 -1
  90. package/dist/dag-runner/run_dag.js.map +1 -1
  91. package/dist/dag-runner/utils/stitch-context.d.ts +3 -1
  92. package/dist/dag-runner/utils/stitch-context.d.ts.map +1 -1
  93. package/dist/dag-runner/utils/stitch-context.js +8 -2
  94. package/dist/dag-runner/utils/stitch-context.js.map +1 -1
  95. package/dist/graphrag/__tests__/code-index.test.d.ts +2 -0
  96. package/dist/graphrag/__tests__/code-index.test.d.ts.map +1 -0
  97. package/dist/graphrag/__tests__/code-index.test.js +75 -0
  98. package/dist/graphrag/__tests__/code-index.test.js.map +1 -0
  99. package/dist/graphrag/__tests__/fixtures/code-index/sample.d.ts +5 -0
  100. package/dist/graphrag/__tests__/fixtures/code-index/sample.d.ts.map +1 -0
  101. package/dist/graphrag/__tests__/fixtures/code-index/sample.js +10 -0
  102. package/dist/graphrag/__tests__/fixtures/code-index/sample.js.map +1 -0
  103. package/dist/graphrag/__tests__/locate.test.d.ts +2 -0
  104. package/dist/graphrag/__tests__/locate.test.d.ts.map +1 -0
  105. package/dist/graphrag/__tests__/locate.test.js +43 -0
  106. package/dist/graphrag/__tests__/locate.test.js.map +1 -0
  107. package/dist/graphrag/__tests__/requirement-ingest.test.d.ts +2 -0
  108. package/dist/graphrag/__tests__/requirement-ingest.test.d.ts.map +1 -0
  109. package/dist/graphrag/__tests__/requirement-ingest.test.js +66 -0
  110. package/dist/graphrag/__tests__/requirement-ingest.test.js.map +1 -0
  111. package/dist/graphrag/__tests__/traverse.test.d.ts +2 -0
  112. package/dist/graphrag/__tests__/traverse.test.d.ts.map +1 -0
  113. package/dist/graphrag/__tests__/traverse.test.js +71 -0
  114. package/dist/graphrag/__tests__/traverse.test.js.map +1 -0
  115. package/dist/graphrag/__tests__/types.test.d.ts +2 -0
  116. package/dist/graphrag/__tests__/types.test.d.ts.map +1 -0
  117. package/dist/graphrag/__tests__/types.test.js +52 -0
  118. package/dist/graphrag/__tests__/types.test.js.map +1 -0
  119. package/dist/graphrag/code-index.d.ts +15 -0
  120. package/dist/graphrag/code-index.d.ts.map +1 -0
  121. package/dist/graphrag/code-index.js +205 -0
  122. package/dist/graphrag/code-index.js.map +1 -0
  123. package/dist/graphrag/factory.d.ts.map +1 -1
  124. package/dist/graphrag/factory.js +5 -0
  125. package/dist/graphrag/factory.js.map +1 -1
  126. package/dist/graphrag/graph-rag.d.ts +6 -2
  127. package/dist/graphrag/graph-rag.d.ts.map +1 -1
  128. package/dist/graphrag/graph-rag.js +40 -2
  129. package/dist/graphrag/graph-rag.js.map +1 -1
  130. package/dist/graphrag/index.d.ts +8 -2
  131. package/dist/graphrag/index.d.ts.map +1 -1
  132. package/dist/graphrag/index.js +5 -1
  133. package/dist/graphrag/index.js.map +1 -1
  134. package/dist/graphrag/json-graph.d.ts +8 -0
  135. package/dist/graphrag/json-graph.d.ts.map +1 -1
  136. package/dist/graphrag/json-graph.js +50 -4
  137. package/dist/graphrag/json-graph.js.map +1 -1
  138. package/dist/graphrag/knowledge-graph.d.ts +8 -3
  139. package/dist/graphrag/knowledge-graph.d.ts.map +1 -1
  140. package/dist/graphrag/neo4j-graph.d.ts +19 -18
  141. package/dist/graphrag/neo4j-graph.d.ts.map +1 -1
  142. package/dist/graphrag/neo4j-graph.js +164 -38
  143. package/dist/graphrag/neo4j-graph.js.map +1 -1
  144. package/dist/graphrag/requirement-ingest.d.ts +15 -0
  145. package/dist/graphrag/requirement-ingest.d.ts.map +1 -0
  146. package/dist/graphrag/requirement-ingest.js +158 -0
  147. package/dist/graphrag/requirement-ingest.js.map +1 -0
  148. package/dist/graphrag/traverse.d.ts +5 -0
  149. package/dist/graphrag/traverse.d.ts.map +1 -0
  150. package/dist/graphrag/traverse.js +139 -0
  151. package/dist/graphrag/traverse.js.map +1 -0
  152. package/dist/graphrag/types.d.ts +60 -2
  153. package/dist/graphrag/types.d.ts.map +1 -1
  154. package/dist/graphrag/types.js +34 -1
  155. package/dist/graphrag/types.js.map +1 -1
  156. package/dist/mcp-server/__tests__/mcp-graph.test.d.ts +2 -0
  157. package/dist/mcp-server/__tests__/mcp-graph.test.d.ts.map +1 -0
  158. package/dist/mcp-server/__tests__/mcp-graph.test.js +85 -0
  159. package/dist/mcp-server/__tests__/mcp-graph.test.js.map +1 -0
  160. package/dist/mcp-server/server.d.ts.map +1 -1
  161. package/dist/mcp-server/server.js +106 -1
  162. package/dist/mcp-server/server.js.map +1 -1
  163. package/dist/utils/__tests__/static-analyzer-exports.test.d.ts +2 -0
  164. package/dist/utils/__tests__/static-analyzer-exports.test.d.ts.map +1 -0
  165. package/dist/utils/__tests__/static-analyzer-exports.test.js +21 -0
  166. package/dist/utils/__tests__/static-analyzer-exports.test.js.map +1 -0
  167. package/dist/utils/project-generator.js +12 -0
  168. package/dist/utils/project-generator.js.map +1 -1
  169. package/dist/utils/static-analyzer.d.ts +9 -0
  170. package/dist/utils/static-analyzer.d.ts.map +1 -1
  171. package/dist/utils/static-analyzer.js +2 -2
  172. package/dist/utils/static-analyzer.js.map +1 -1
  173. package/dist/verification/__tests__/telemetry.test.js +9 -0
  174. package/dist/verification/__tests__/telemetry.test.js.map +1 -1
  175. package/package.json +1 -1
@@ -7,11 +7,15 @@
7
7
  */
8
8
  import path from 'path';
9
9
  import fs from 'fs-extra';
10
+ import { emptyEdgesByType, emptyNodesByType } from './types.js';
11
+ import { traverse as traverseFn, locate as locateFn } from './traverse.js';
10
12
  export class JsonGraph {
11
13
  constructor(filePath) {
12
14
  this.filePath = filePath;
13
15
  this.nodes = new Map();
14
16
  this.edges = new Map();
17
+ /** qualifiedName → node id (code_symbol only) */
18
+ this.qnIndex = new Map();
15
19
  }
16
20
  async init() {
17
21
  await fs.ensureDir(path.dirname(this.filePath));
@@ -22,6 +26,7 @@ export class JsonGraph {
22
26
  this.nodes.set(n.id, n);
23
27
  for (const e of data.edges ?? [])
24
28
  this.edges.set(e.id, e);
29
+ this.rebuildQnIndex();
25
30
  }
26
31
  catch {
27
32
  // corrupt file — start fresh, but keep a backup
@@ -49,6 +54,7 @@ export class JsonGraph {
49
54
  updatedAt: now,
50
55
  };
51
56
  this.nodes.set(node.id, merged);
57
+ this.indexCodeSymbol(merged);
52
58
  this.flushSync();
53
59
  }
54
60
  getNode(id) {
@@ -78,6 +84,12 @@ export class JsonGraph {
78
84
  return out;
79
85
  }
80
86
  deleteNode(id) {
87
+ const removed = this.nodes.get(id);
88
+ if (removed?.type === 'code_symbol') {
89
+ const qn = String(removed.metadata?.qualifiedName ?? '');
90
+ if (qn)
91
+ this.qnIndex.delete(qn);
92
+ }
81
93
  this.nodes.delete(id);
82
94
  for (const [edgeId, e] of this.edges) {
83
95
  if (e.sourceId === id || e.targetId === id)
@@ -125,13 +137,13 @@ export class JsonGraph {
125
137
  }
126
138
  // ─── Utilities ────────────────────────────────────────────────────────────
127
139
  getStatistics() {
128
- const nodesByType = {};
129
- const edgesByType = {};
140
+ const nodesByType = emptyNodesByType();
141
+ const edgesByType = emptyEdgesByType();
130
142
  for (const n of this.nodes.values()) {
131
- nodesByType[n.type] = (nodesByType[n.type] ?? 0) + 1;
143
+ nodesByType[n.type] += 1;
132
144
  }
133
145
  for (const e of this.edges.values()) {
134
- edgesByType[e.type] = (edgesByType[e.type] ?? 0) + 1;
146
+ edgesByType[e.type] += 1;
135
147
  }
136
148
  return {
137
149
  totalNodes: this.nodes.size,
@@ -148,10 +160,44 @@ export class JsonGraph {
148
160
  this.addNode(n);
149
161
  for (const e of data.edges)
150
162
  this.addEdge(e);
163
+ this.rebuildQnIndex();
164
+ }
165
+ traverse(opts) {
166
+ return traverseFn(this, opts);
167
+ }
168
+ locate(seedQuery, opts) {
169
+ return locateFn(this, seedQuery, opts);
170
+ }
171
+ findByQualifiedName(qn) {
172
+ const normalized = qn.startsWith('code_symbol:') ? qn.slice('code_symbol:'.length) : qn;
173
+ const id = this.qnIndex.get(normalized);
174
+ if (id) {
175
+ const node = this.nodes.get(id);
176
+ if (node?.type === 'code_symbol')
177
+ return node;
178
+ }
179
+ const directId = `code_symbol:${normalized}`;
180
+ const direct = this.nodes.get(directId);
181
+ if (direct?.type === 'code_symbol')
182
+ return direct;
183
+ return null;
151
184
  }
152
185
  close() {
153
186
  // Synchronous flush is performed on every mutation; no shutdown work.
154
187
  }
188
+ indexCodeSymbol(node) {
189
+ if (node.type !== 'code_symbol')
190
+ return;
191
+ const qn = String(node.metadata?.qualifiedName ?? '');
192
+ if (qn)
193
+ this.qnIndex.set(qn, node.id);
194
+ }
195
+ rebuildQnIndex() {
196
+ this.qnIndex.clear();
197
+ for (const n of this.nodes.values()) {
198
+ this.indexCodeSymbol(n);
199
+ }
200
+ }
155
201
  flushSync() {
156
202
  const data = {
157
203
  nodes: [...this.nodes.values()],
@@ -1 +1 @@
1
- {"version":3,"file":"json-graph.js","sourceRoot":"","sources":["../../src/graphrag/json-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-graph.js","sourceRoot":"","sources":["../../src/graphrag/json-graph.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * - persist incrementally (or on close, when that's safer)
8
8
  * - never throw on unknown ids — return `null` / empty arrays
9
9
  */
10
- import type { GraphNode, GraphEdge, NodeType, EdgeType, SearchResult, GraphStatistics } from './types.js';
10
+ import type { GraphNode, GraphEdge, NodeType, EdgeType, SearchResult, GraphStatistics, TraverseOptions, TraverseResult, LocateOptions, LocateResult, CodeSymbolNode } from './types.js';
11
11
  export interface KnowledgeGraph {
12
12
  init(): Promise<void>;
13
13
  addNode(node: GraphNode): void;
@@ -19,6 +19,9 @@ export interface KnowledgeGraph {
19
19
  getEdges(nodeId: string, direction?: 'out' | 'in' | 'both'): GraphEdge[];
20
20
  getNodeDependencies(nodeId: string, depth?: number): GraphNode[];
21
21
  getStatistics(): GraphStatistics;
22
+ traverse(opts: TraverseOptions): TraverseResult;
23
+ locate(seedQuery: string, opts?: LocateOptions): LocateResult;
24
+ findByQualifiedName(qn: string): CodeSymbolNode | null;
22
25
  exportToJson(): {
23
26
  nodes: GraphNode[];
24
27
  edges: GraphEdge[];
@@ -27,7 +30,9 @@ export interface KnowledgeGraph {
27
30
  nodes: GraphNode[];
28
31
  edges: GraphEdge[];
29
32
  }): void;
30
- close(): void;
33
+ /** Optional — Neo4j batches writes and flushes on demand. */
34
+ flush?(): Promise<void>;
35
+ close(): void | Promise<void>;
31
36
  }
32
- export type { NodeType, EdgeType, GraphNode, GraphEdge, SearchResult, GraphStatistics };
37
+ export type { NodeType, EdgeType, GraphNode, GraphEdge, SearchResult, GraphStatistics, TraverseOptions, TraverseResult, LocateOptions, LocateResult, CodeSymbolNode, };
33
38
  //# sourceMappingURL=knowledge-graph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge-graph.d.ts","sourceRoot":"","sources":["../../src/graphrag/knowledge-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACtC,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC;IACzD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;IAC3D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC;IACzE,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC;IAEjE,aAAa,IAAI,eAAe,CAAC;IAEjC,YAAY,IAAI;QAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAAC,KAAK,EAAE,SAAS,EAAE,CAAA;KAAE,CAAC;IAC3D,cAAc,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAAC,KAAK,EAAE,SAAS,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAEvE,KAAK,IAAI,IAAI,CAAC;CACf;AAED,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"knowledge-graph.d.ts","sourceRoot":"","sources":["../../src/graphrag/knowledge-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACtC,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC;IACzD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;IAC3D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC;IACzE,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC;IAEjE,aAAa,IAAI,eAAe,CAAC;IAEjC,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,cAAc,CAAC;IAChD,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;IAC9D,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAAC;IAEvD,YAAY,IAAI;QAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAAC,KAAK,EAAE,SAAS,EAAE,CAAA;KAAE,CAAC;IAC3D,cAAc,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAAC,KAAK,EAAE,SAAS,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAEvE,6DAA6D;IAC7D,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExB,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,YAAY,EACZ,eAAe,EACf,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,GACf,CAAC"}
@@ -1,40 +1,34 @@
1
1
  /**
2
2
  * Neo4jGraph — knowledge graph backend that talks to a Neo4j server via the
3
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
4
  */
21
5
  import type { KnowledgeGraph, GraphNode, GraphEdge, NodeType, SearchResult, GraphStatistics } from './knowledge-graph.js';
6
+ import type { CodeSymbolNode, TraverseOptions, TraverseResult, LocateOptions, LocateResult } from './types.js';
7
+ export declare class Neo4jQueryError extends Error {
8
+ readonly code: string;
9
+ constructor(code: string, message: string);
10
+ }
22
11
  export interface Neo4jConfig {
23
12
  url: string;
24
13
  database?: string;
25
14
  username?: string;
26
15
  password?: string;
27
- /** Optional pre-built Authorization header (overrides username/password). */
28
16
  auth?: string;
17
+ /** Must be true to use the neo4j backend (RF-09 experimental gate). */
18
+ experimental?: boolean;
29
19
  }
20
+ export declare function parseNodeFromRecord(row: unknown[]): GraphNode;
21
+ export declare function parseEdgeFromRecord(row: unknown[]): GraphEdge;
30
22
  export declare class Neo4jGraph implements KnowledgeGraph {
31
23
  private readonly config;
32
24
  private endpoint;
33
25
  private headers;
34
26
  private nodeCache;
35
27
  private edgeCache;
28
+ private pendingWrites;
36
29
  constructor(config: Neo4jConfig);
37
30
  init(): Promise<void>;
31
+ private hydrateFromServer;
38
32
  addNode(node: GraphNode): void;
39
33
  getNode(id: string): GraphNode | null;
40
34
  queryNodes(type?: NodeType, limit?: number): GraphNode[];
@@ -52,7 +46,14 @@ export declare class Neo4jGraph implements KnowledgeGraph {
52
46
  nodes: GraphNode[];
53
47
  edges: GraphEdge[];
54
48
  }): void;
55
- close(): void;
49
+ traverse(opts: TraverseOptions): TraverseResult;
50
+ locate(seedQuery: string, opts?: LocateOptions): LocateResult;
51
+ findByQualifiedName(qn: string): CodeSymbolNode | null;
52
+ flush(): Promise<void>;
53
+ close(): Promise<void>;
54
+ private enqueue;
55
+ private runRead;
56
56
  private runMany;
57
+ private postCypher;
57
58
  }
58
59
  //# sourceMappingURL=neo4j-graph.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"neo4j-graph.d.ts","sourceRoot":"","sources":["../../src/graphrag/neo4j-graph.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,QAAQ,EAER,YAAY,EACZ,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACb,MAAM,YAAY,CAAC;AAUpB,qBAAa,eAAgB,SAAQ,KAAK;aAEtB,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM;CAKlB;AAED,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,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAYD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,SAAS,CA8B7D;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,SAAS,CA2B7D;AAED,qBAAa,UAAW,YAAW,cAAc;IAOnC,OAAO,CAAC,QAAQ,CAAC,MAAM;IANnC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,aAAa,CAA0B;gBAElB,MAAM,EAAE,WAAW;IAkB1C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAQb,iBAAiB;IAoB/B,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAqB9B,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;IAW5B,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAmB9B,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;IAahC,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,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,cAAc;IAI/C,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,YAAY;IAI7D,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAYhD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,OAAO,CAAC,OAAO;YAUD,OAAO;YASP,OAAO;YAMP,UAAU;CAqBzB"}
@@ -1,8 +1,83 @@
1
+ import { ALL_EDGE_TYPES, ALL_NODE_TYPES, emptyEdgesByType, emptyNodesByType, } from './types.js';
2
+ import { traverse as traverseFn, locate as locateFn } from './traverse.js';
3
+ const FLUSH_THRESHOLD = 500;
4
+ export class Neo4jQueryError extends Error {
5
+ constructor(code, message) {
6
+ super(`Neo4j[${code}]: ${message}`);
7
+ this.code = code;
8
+ this.name = 'Neo4jQueryError';
9
+ }
10
+ }
11
+ const NODE_TYPES = new Set(ALL_NODE_TYPES);
12
+ const EDGE_TYPES = new Set(ALL_EDGE_TYPES);
13
+ export function parseNodeFromRecord(row) {
14
+ const [id, type, label, description, metadata, createdAt, updatedAt] = row;
15
+ if (typeof id !== 'string' || !id) {
16
+ throw new Neo4jQueryError('SHAPE', 'node id must be a non-empty string');
17
+ }
18
+ if (typeof type !== 'string' || !NODE_TYPES.has(type)) {
19
+ throw new Neo4jQueryError('SHAPE', `invalid node type: ${String(type)}`);
20
+ }
21
+ if (typeof label !== 'string' || !label) {
22
+ throw new Neo4jQueryError('SHAPE', 'node label must be a non-empty string');
23
+ }
24
+ let meta = {};
25
+ if (typeof metadata === 'string' && metadata) {
26
+ try {
27
+ meta = JSON.parse(metadata);
28
+ }
29
+ catch {
30
+ meta = {};
31
+ }
32
+ }
33
+ else if (metadata && typeof metadata === 'object') {
34
+ meta = metadata;
35
+ }
36
+ return {
37
+ id,
38
+ type: type,
39
+ label,
40
+ description: typeof description === 'string' ? description : undefined,
41
+ metadata: meta,
42
+ createdAt: typeof createdAt === 'string' ? createdAt : undefined,
43
+ updatedAt: typeof updatedAt === 'string' ? updatedAt : undefined,
44
+ };
45
+ }
46
+ export function parseEdgeFromRecord(row) {
47
+ const [id, sourceId, targetId, type, weight, metadata] = row;
48
+ if (typeof id !== 'string' || !id) {
49
+ throw new Neo4jQueryError('SHAPE', 'edge id must be a non-empty string');
50
+ }
51
+ if (typeof sourceId !== 'string' || typeof targetId !== 'string') {
52
+ throw new Neo4jQueryError('SHAPE', 'edge endpoints must be strings');
53
+ }
54
+ if (typeof type !== 'string' || !EDGE_TYPES.has(type)) {
55
+ throw new Neo4jQueryError('SHAPE', `invalid edge type: ${String(type)}`);
56
+ }
57
+ let meta = {};
58
+ if (typeof metadata === 'string' && metadata) {
59
+ try {
60
+ meta = JSON.parse(metadata);
61
+ }
62
+ catch {
63
+ meta = {};
64
+ }
65
+ }
66
+ return {
67
+ id,
68
+ sourceId,
69
+ targetId,
70
+ type: type,
71
+ weight: typeof weight === 'number' ? weight : 1,
72
+ metadata: meta,
73
+ };
74
+ }
1
75
  export class Neo4jGraph {
2
76
  constructor(config) {
3
77
  this.config = config;
4
78
  this.nodeCache = new Map();
5
79
  this.edgeCache = new Map();
80
+ this.pendingWrites = [];
6
81
  if (!config.url) {
7
82
  throw new Error('Neo4jGraph: `url` is required.');
8
83
  }
@@ -21,13 +96,24 @@ export class Neo4jGraph {
21
96
  }
22
97
  }
23
98
  async init() {
24
- // Verify connectivity + ensure indexes exist (idempotent).
25
99
  await this.runMany([
26
100
  { statement: 'CREATE CONSTRAINT dare_node_id IF NOT EXISTS FOR (n:DareNode) REQUIRE n.id IS UNIQUE' },
27
101
  { statement: 'CREATE INDEX dare_node_type IF NOT EXISTS FOR (n:DareNode) ON (n.type)' },
28
102
  ]);
103
+ await this.hydrateFromServer();
104
+ }
105
+ async hydrateFromServer() {
106
+ const nodeRows = await this.runRead('MATCH (n:DareNode) RETURN n.id, n.type, n.label, n.description, n.metadata, n.created_at, n.updated_at LIMIT $limit', { limit: 10000 });
107
+ for (const row of nodeRows) {
108
+ const node = parseNodeFromRecord(row);
109
+ this.nodeCache.set(node.id, node);
110
+ }
111
+ const edgeRows = await this.runRead('MATCH (s:DareNode)-[r:DARE_EDGE]->(t:DareNode) RETURN r.id, s.id, t.id, r.type, r.weight, r.metadata LIMIT $limit', { limit: 10000 });
112
+ for (const row of edgeRows) {
113
+ const edge = parseEdgeFromRecord(row);
114
+ this.edgeCache.set(edge.id, edge);
115
+ }
29
116
  }
30
- // ─── Nodes ────────────────────────────────────────────────────────────────
31
117
  addNode(node) {
32
118
  const now = new Date().toISOString();
33
119
  const params = {
@@ -39,14 +125,12 @@ export class Neo4jGraph {
39
125
  createdAt: node.createdAt ?? now,
40
126
  updatedAt: now,
41
127
  };
42
- void this.runMany([
43
- {
44
- statement: 'MERGE (n:DareNode {id:$id}) ' +
45
- 'ON CREATE SET n.type=$type,n.label=$label,n.description=$description,n.metadata=$metadata,n.created_at=$createdAt,n.updated_at=$updatedAt ' +
46
- 'ON MATCH SET n.label=$label,n.description=$description,n.metadata=$metadata,n.updated_at=$updatedAt',
47
- parameters: params,
48
- },
49
- ]);
128
+ this.enqueue({
129
+ statement: 'MERGE (n:DareNode {id:$id}) ' +
130
+ 'ON CREATE SET n.type=$type,n.label=$label,n.description=$description,n.metadata=$metadata,n.created_at=$createdAt,n.updated_at=$updatedAt ' +
131
+ 'ON MATCH SET n.label=$label,n.description=$description,n.metadata=$metadata,n.updated_at=$updatedAt',
132
+ parameters: params,
133
+ });
50
134
  this.nodeCache.set(node.id, { ...node, createdAt: params.createdAt, updatedAt: params.updatedAt });
51
135
  }
52
136
  getNode(id) {
@@ -72,16 +156,16 @@ export class Neo4jGraph {
72
156
  return out;
73
157
  }
74
158
  deleteNode(id) {
75
- void this.runMany([
76
- { statement: 'MATCH (n:DareNode {id:$id}) DETACH DELETE n', parameters: { id } },
77
- ]);
159
+ this.enqueue({
160
+ statement: 'MATCH (n:DareNode {id:$id}) DETACH DELETE n',
161
+ parameters: { id },
162
+ });
78
163
  this.nodeCache.delete(id);
79
164
  for (const [edgeId, e] of this.edgeCache) {
80
165
  if (e.sourceId === id || e.targetId === id)
81
166
  this.edgeCache.delete(edgeId);
82
167
  }
83
168
  }
84
- // ─── Edges ────────────────────────────────────────────────────────────────
85
169
  addEdge(edge) {
86
170
  const params = {
87
171
  id: edge.id,
@@ -91,14 +175,12 @@ export class Neo4jGraph {
91
175
  weight: edge.weight ?? 1,
92
176
  metadata: JSON.stringify(edge.metadata ?? {}),
93
177
  };
94
- void this.runMany([
95
- {
96
- statement: 'MATCH (s:DareNode {id:$sourceId}),(t:DareNode {id:$targetId}) ' +
97
- 'MERGE (s)-[r:DARE_EDGE {id:$id}]->(t) ' +
98
- 'SET r.type=$type,r.weight=$weight,r.metadata=$metadata',
99
- parameters: params,
100
- },
101
- ]);
178
+ this.enqueue({
179
+ statement: 'MATCH (s:DareNode {id:$sourceId}),(t:DareNode {id:$targetId}) ' +
180
+ 'MERGE (s)-[r:DARE_EDGE {id:$id}]->(t) ' +
181
+ 'SET r.type=$type,r.weight=$weight,r.metadata=$metadata',
182
+ parameters: params,
183
+ });
102
184
  this.edgeCache.set(edge.id, { ...edge, weight: params.weight, metadata: edge.metadata ?? {} });
103
185
  }
104
186
  getEdges(nodeId, direction = 'both') {
@@ -113,7 +195,7 @@ export class Neo4jGraph {
113
195
  getNodeDependencies(nodeId, depth = 3) {
114
196
  const visited = new Set();
115
197
  const out = [];
116
- const traverse = (id, d) => {
198
+ const walk = (id, d) => {
117
199
  if (d === 0 || visited.has(id))
118
200
  return;
119
201
  visited.add(id);
@@ -123,22 +205,20 @@ export class Neo4jGraph {
123
205
  const target = this.nodeCache.get(e.targetId);
124
206
  if (target) {
125
207
  out.push(target);
126
- traverse(e.targetId, d - 1);
208
+ walk(e.targetId, d - 1);
127
209
  }
128
210
  }
129
211
  };
130
- traverse(nodeId, depth);
212
+ walk(nodeId, depth);
131
213
  return out;
132
214
  }
133
215
  getStatistics() {
134
- const nodesByType = {};
135
- const edgesByType = {};
136
- for (const n of this.nodeCache.values()) {
137
- nodesByType[n.type] = (nodesByType[n.type] ?? 0) + 1;
138
- }
139
- for (const e of this.edgeCache.values()) {
140
- edgesByType[e.type] = (edgesByType[e.type] ?? 0) + 1;
141
- }
216
+ const nodesByType = emptyNodesByType();
217
+ const edgesByType = emptyEdgesByType();
218
+ for (const n of this.nodeCache.values())
219
+ nodesByType[n.type] += 1;
220
+ for (const e of this.edgeCache.values())
221
+ edgesByType[e.type] += 1;
142
222
  return {
143
223
  totalNodes: this.nodeCache.size,
144
224
  totalEdges: this.edgeCache.size,
@@ -158,11 +238,55 @@ export class Neo4jGraph {
158
238
  for (const e of data.edges)
159
239
  this.addEdge(e);
160
240
  }
161
- close() {
162
- // HTTP API has no persistent connection; cache is GC-collected on exit.
241
+ traverse(opts) {
242
+ return traverseFn(this, opts);
243
+ }
244
+ locate(seedQuery, opts) {
245
+ return locateFn(this, seedQuery, opts);
246
+ }
247
+ findByQualifiedName(qn) {
248
+ const normalized = qn.startsWith('code_symbol:') ? qn.slice('code_symbol:'.length) : qn;
249
+ const direct = this.nodeCache.get(`code_symbol:${normalized}`);
250
+ if (direct?.type === 'code_symbol')
251
+ return direct;
252
+ for (const node of this.nodeCache.values()) {
253
+ if (node.type === 'code_symbol' && node.metadata?.qualifiedName === normalized) {
254
+ return node;
255
+ }
256
+ }
257
+ return null;
258
+ }
259
+ async flush() {
260
+ if (this.pendingWrites.length === 0)
261
+ return;
262
+ const batch = this.pendingWrites;
263
+ this.pendingWrites = [];
264
+ try {
265
+ await this.runMany(batch);
266
+ }
267
+ catch (err) {
268
+ this.pendingWrites = batch.concat(this.pendingWrites);
269
+ throw err;
270
+ }
271
+ }
272
+ async close() {
273
+ await this.flush();
274
+ }
275
+ enqueue(stmt) {
276
+ this.pendingWrites.push(stmt);
277
+ if (this.pendingWrites.length > FLUSH_THRESHOLD) {
278
+ throw new Neo4jQueryError('QUEUE_OVERFLOW', `pending write queue exceeded ${FLUSH_THRESHOLD} statements — call flush() before adding more`);
279
+ }
280
+ }
281
+ async runRead(statement, parameters = {}) {
282
+ const payload = await this.postCypher([{ statement, parameters }]);
283
+ const rows = payload.results?.[0]?.data ?? [];
284
+ return rows.map((d) => d.row);
163
285
  }
164
- // ─── Internal HTTP plumbing ──────────────────────────────────────────────
165
286
  async runMany(statements) {
287
+ await this.postCypher(statements);
288
+ }
289
+ async postCypher(statements) {
166
290
  const res = await fetch(this.endpoint, {
167
291
  method: 'POST',
168
292
  headers: this.headers,
@@ -170,12 +294,14 @@ export class Neo4jGraph {
170
294
  });
171
295
  if (!res.ok) {
172
296
  const body = await res.text().catch(() => '');
173
- throw new Error(`Neo4j ${res.status} ${res.statusText}: ${body.slice(0, 200)}`);
297
+ throw new Neo4jQueryError(String(res.status), `${res.statusText}: ${body.slice(0, 200)}`);
174
298
  }
175
299
  const payload = (await res.json());
176
300
  if (payload.errors && payload.errors.length > 0) {
177
- throw new Error(`Neo4j: ${payload.errors.map((e) => `${e.code} — ${e.message}`).join('; ')}`);
301
+ const first = payload.errors[0];
302
+ throw new Neo4jQueryError(first.code, first.message);
178
303
  }
304
+ return payload;
179
305
  }
180
306
  }
181
307
  function stripTrailingSlash(url) {
@@ -1 +1 @@
1
- {"version":3,"file":"neo4j-graph.js","sourceRoot":"","sources":["../../src/graphrag/neo4j-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"neo4j-graph.js","sourceRoot":"","sources":["../../src/graphrag/neo4j-graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { KnowledgeGraph } from './knowledge-graph.js';
2
+ import type { RequirementNode } from './types.js';
3
+ export interface ParsedRequirement {
4
+ readonly reqId: string;
5
+ readonly title: string;
6
+ readonly priority?: 'MUST' | 'SHOULD' | 'COULD';
7
+ readonly parentId?: string;
8
+ readonly source: RequirementNode['source'];
9
+ }
10
+ export declare function parseRequirementsFromMarkdown(content: string, source: RequirementNode['source']): ParsedRequirement[];
11
+ export declare function ingestRequirements(graph: KnowledgeGraph, projectRoot: string): {
12
+ nodes: number;
13
+ edges: number;
14
+ };
15
+ //# sourceMappingURL=requirement-ingest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requirement-ingest.d.ts","sourceRoot":"","sources":["../../src/graphrag/requirement-ingest.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;CAC5C;AAmBD,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,GAChC,iBAAiB,EAAE,CA0ErB;AAiBD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE,MAAM,GAClB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CA2DlC"}