agent-orcha 0.0.2 → 0.0.3

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 (273) hide show
  1. package/README.md +777 -100
  2. package/dist/lib/agents/agent-executor.d.ts +6 -1
  3. package/dist/lib/agents/agent-executor.d.ts.map +1 -1
  4. package/dist/lib/agents/agent-executor.js +241 -45
  5. package/dist/lib/agents/agent-executor.js.map +1 -1
  6. package/dist/lib/agents/agent-loader.d.ts.map +1 -1
  7. package/dist/lib/agents/agent-loader.js +3 -1
  8. package/dist/lib/agents/agent-loader.js.map +1 -1
  9. package/dist/lib/agents/index.d.ts +2 -1
  10. package/dist/lib/agents/index.d.ts.map +1 -1
  11. package/dist/lib/agents/index.js +1 -0
  12. package/dist/lib/agents/index.js.map +1 -1
  13. package/dist/lib/agents/structured-output-wrapper.d.ts +19 -0
  14. package/dist/lib/agents/structured-output-wrapper.d.ts.map +1 -0
  15. package/dist/lib/agents/structured-output-wrapper.js +104 -0
  16. package/dist/lib/agents/structured-output-wrapper.js.map +1 -0
  17. package/dist/lib/agents/types.d.ts +17 -10
  18. package/dist/lib/agents/types.d.ts.map +1 -1
  19. package/dist/lib/agents/types.js +1 -1
  20. package/dist/lib/agents/types.js.map +1 -1
  21. package/dist/lib/index.d.ts +9 -7
  22. package/dist/lib/index.d.ts.map +1 -1
  23. package/dist/lib/index.js +7 -5
  24. package/dist/lib/index.js.map +1 -1
  25. package/dist/lib/knowledge/graph-rag/community-detector.d.ts +16 -0
  26. package/dist/lib/knowledge/graph-rag/community-detector.d.ts.map +1 -0
  27. package/dist/lib/knowledge/graph-rag/community-detector.js +81 -0
  28. package/dist/lib/knowledge/graph-rag/community-detector.js.map +1 -0
  29. package/dist/lib/knowledge/graph-rag/community-summarizer.d.ts +17 -0
  30. package/dist/lib/knowledge/graph-rag/community-summarizer.d.ts.map +1 -0
  31. package/dist/lib/knowledge/graph-rag/community-summarizer.js +87 -0
  32. package/dist/lib/knowledge/graph-rag/community-summarizer.js.map +1 -0
  33. package/dist/lib/knowledge/graph-rag/entity-extractor.d.ts +36 -0
  34. package/dist/lib/knowledge/graph-rag/entity-extractor.d.ts.map +1 -0
  35. package/dist/lib/knowledge/graph-rag/entity-extractor.js +192 -0
  36. package/dist/lib/knowledge/graph-rag/entity-extractor.js.map +1 -0
  37. package/dist/lib/knowledge/graph-rag/extraction-cache.d.ts +30 -0
  38. package/dist/lib/knowledge/graph-rag/extraction-cache.d.ts.map +1 -0
  39. package/dist/lib/knowledge/graph-rag/extraction-cache.js +88 -0
  40. package/dist/lib/knowledge/graph-rag/extraction-cache.js.map +1 -0
  41. package/dist/lib/knowledge/graph-rag/global-search.d.ts +19 -0
  42. package/dist/lib/knowledge/graph-rag/global-search.d.ts.map +1 -0
  43. package/dist/lib/knowledge/graph-rag/global-search.js +96 -0
  44. package/dist/lib/knowledge/graph-rag/global-search.js.map +1 -0
  45. package/dist/lib/knowledge/graph-rag/graph-rag-factory.d.ts +24 -0
  46. package/dist/lib/knowledge/graph-rag/graph-rag-factory.d.ts.map +1 -0
  47. package/dist/lib/knowledge/graph-rag/graph-rag-factory.js +239 -0
  48. package/dist/lib/knowledge/graph-rag/graph-rag-factory.js.map +1 -0
  49. package/dist/lib/knowledge/graph-rag/index.d.ts +14 -0
  50. package/dist/lib/knowledge/graph-rag/index.d.ts.map +1 -0
  51. package/dist/lib/knowledge/graph-rag/index.js +12 -0
  52. package/dist/lib/knowledge/graph-rag/index.js.map +1 -0
  53. package/dist/lib/knowledge/graph-rag/local-search.d.ts +20 -0
  54. package/dist/lib/knowledge/graph-rag/local-search.d.ts.map +1 -0
  55. package/dist/lib/knowledge/graph-rag/local-search.js +110 -0
  56. package/dist/lib/knowledge/graph-rag/local-search.js.map +1 -0
  57. package/dist/lib/knowledge/graph-rag/memory-graph-store.d.ts +31 -0
  58. package/dist/lib/knowledge/graph-rag/memory-graph-store.d.ts.map +1 -0
  59. package/dist/lib/knowledge/graph-rag/memory-graph-store.js +165 -0
  60. package/dist/lib/knowledge/graph-rag/memory-graph-store.js.map +1 -0
  61. package/dist/lib/knowledge/graph-rag/neo4j-graph-store.d.ts +38 -0
  62. package/dist/lib/knowledge/graph-rag/neo4j-graph-store.d.ts.map +1 -0
  63. package/dist/lib/knowledge/graph-rag/neo4j-graph-store.js +190 -0
  64. package/dist/lib/knowledge/graph-rag/neo4j-graph-store.js.map +1 -0
  65. package/dist/lib/knowledge/graph-rag/search-mode-detector.d.ts +11 -0
  66. package/dist/lib/knowledge/graph-rag/search-mode-detector.d.ts.map +1 -0
  67. package/dist/lib/knowledge/graph-rag/search-mode-detector.js +50 -0
  68. package/dist/lib/knowledge/graph-rag/search-mode-detector.js.map +1 -0
  69. package/dist/lib/knowledge/graph-rag/types.d.ts +368 -0
  70. package/dist/lib/knowledge/graph-rag/types.d.ts.map +1 -0
  71. package/dist/lib/knowledge/graph-rag/types.js +48 -0
  72. package/dist/lib/knowledge/graph-rag/types.js.map +1 -0
  73. package/dist/lib/knowledge/index.d.ts +9 -0
  74. package/dist/lib/knowledge/index.d.ts.map +1 -0
  75. package/dist/lib/knowledge/index.js +8 -0
  76. package/dist/lib/knowledge/index.js.map +1 -0
  77. package/dist/lib/knowledge/knowledge-store-factory.d.ts +16 -0
  78. package/dist/lib/knowledge/knowledge-store-factory.d.ts.map +1 -0
  79. package/dist/lib/{vectors/vector-store-factory.js → knowledge/knowledge-store-factory.js} +36 -10
  80. package/dist/lib/knowledge/knowledge-store-factory.js.map +1 -0
  81. package/dist/lib/knowledge/knowledge-store-manager.d.ts +18 -0
  82. package/dist/lib/knowledge/knowledge-store-manager.d.ts.map +1 -0
  83. package/dist/lib/knowledge/knowledge-store-manager.js +98 -0
  84. package/dist/lib/knowledge/knowledge-store-manager.js.map +1 -0
  85. package/dist/lib/knowledge/loaders/database-loader.d.ts +18 -0
  86. package/dist/lib/knowledge/loaders/database-loader.d.ts.map +1 -0
  87. package/dist/lib/knowledge/loaders/database-loader.js +115 -0
  88. package/dist/lib/knowledge/loaders/database-loader.js.map +1 -0
  89. package/dist/lib/knowledge/loaders/index.d.ts +4 -0
  90. package/dist/lib/knowledge/loaders/index.d.ts.map +1 -0
  91. package/dist/lib/knowledge/loaders/index.js +4 -0
  92. package/dist/lib/knowledge/loaders/index.js.map +1 -0
  93. package/dist/lib/knowledge/loaders/s3-loader.d.ts +17 -0
  94. package/dist/lib/knowledge/loaders/s3-loader.d.ts.map +1 -0
  95. package/dist/lib/knowledge/loaders/s3-loader.js +185 -0
  96. package/dist/lib/knowledge/loaders/s3-loader.js.map +1 -0
  97. package/dist/lib/knowledge/loaders/web-loader.d.ts +12 -0
  98. package/dist/lib/knowledge/loaders/web-loader.d.ts.map +1 -0
  99. package/dist/lib/knowledge/loaders/web-loader.js +56 -0
  100. package/dist/lib/knowledge/loaders/web-loader.js.map +1 -0
  101. package/dist/lib/knowledge/types.d.ts +1839 -0
  102. package/dist/lib/knowledge/types.d.ts.map +1 -0
  103. package/dist/lib/knowledge/types.js +111 -0
  104. package/dist/lib/knowledge/types.js.map +1 -0
  105. package/dist/lib/knowledge/utils/connection-pool.d.ts +18 -0
  106. package/dist/lib/knowledge/utils/connection-pool.d.ts.map +1 -0
  107. package/dist/lib/knowledge/utils/connection-pool.js +77 -0
  108. package/dist/lib/knowledge/utils/connection-pool.js.map +1 -0
  109. package/dist/lib/knowledge/utils/file-type-detector.d.ts +10 -0
  110. package/dist/lib/knowledge/utils/file-type-detector.d.ts.map +1 -0
  111. package/dist/lib/knowledge/utils/file-type-detector.js +32 -0
  112. package/dist/lib/knowledge/utils/file-type-detector.js.map +1 -0
  113. package/dist/lib/knowledge/utils/index.d.ts +3 -0
  114. package/dist/lib/knowledge/utils/index.d.ts.map +1 -0
  115. package/dist/lib/knowledge/utils/index.js +3 -0
  116. package/dist/lib/knowledge/utils/index.js.map +1 -0
  117. package/dist/lib/mcp/mcp-client.d.ts +9 -1
  118. package/dist/lib/mcp/mcp-client.d.ts.map +1 -1
  119. package/dist/lib/mcp/mcp-client.js +33 -0
  120. package/dist/lib/mcp/mcp-client.js.map +1 -1
  121. package/dist/lib/memory/conversation-store.d.ts +43 -0
  122. package/dist/lib/memory/conversation-store.d.ts.map +1 -0
  123. package/dist/lib/memory/conversation-store.js +109 -0
  124. package/dist/lib/memory/conversation-store.js.map +1 -0
  125. package/dist/lib/memory/index.d.ts +3 -0
  126. package/dist/lib/memory/index.d.ts.map +1 -0
  127. package/dist/lib/memory/index.js +3 -0
  128. package/dist/lib/memory/index.js.map +1 -0
  129. package/dist/lib/memory/types.d.ts +19 -0
  130. package/dist/lib/memory/types.d.ts.map +1 -0
  131. package/dist/lib/memory/types.js +6 -0
  132. package/dist/lib/memory/types.js.map +1 -0
  133. package/dist/lib/orchestrator.d.ts +56 -14
  134. package/dist/lib/orchestrator.d.ts.map +1 -1
  135. package/dist/lib/orchestrator.js +182 -25
  136. package/dist/lib/orchestrator.js.map +1 -1
  137. package/dist/lib/tools/agent-tool-wrapper.d.ts +22 -0
  138. package/dist/lib/tools/agent-tool-wrapper.d.ts.map +1 -0
  139. package/dist/lib/tools/agent-tool-wrapper.js +56 -0
  140. package/dist/lib/tools/agent-tool-wrapper.js.map +1 -0
  141. package/dist/lib/tools/built-in/ask-user.tool.d.ts +7 -0
  142. package/dist/lib/tools/built-in/ask-user.tool.d.ts.map +1 -0
  143. package/dist/lib/tools/built-in/ask-user.tool.js +23 -0
  144. package/dist/lib/tools/built-in/ask-user.tool.js.map +1 -0
  145. package/dist/lib/tools/built-in/index.d.ts +2 -1
  146. package/dist/lib/tools/built-in/index.d.ts.map +1 -1
  147. package/dist/lib/tools/built-in/index.js +2 -1
  148. package/dist/lib/tools/built-in/index.js.map +1 -1
  149. package/dist/lib/tools/built-in/knowledge-search.tool.d.ts +4 -0
  150. package/dist/lib/tools/built-in/knowledge-search.tool.d.ts.map +1 -0
  151. package/dist/lib/tools/built-in/{vector-search.tool.js → knowledge-search.tool.js} +4 -4
  152. package/dist/lib/tools/built-in/knowledge-search.tool.js.map +1 -0
  153. package/dist/lib/tools/index.d.ts +3 -1
  154. package/dist/lib/tools/index.d.ts.map +1 -1
  155. package/dist/lib/tools/index.js +3 -1
  156. package/dist/lib/tools/index.js.map +1 -1
  157. package/dist/lib/tools/tool-discovery.d.ts +50 -0
  158. package/dist/lib/tools/tool-discovery.d.ts.map +1 -0
  159. package/dist/lib/tools/tool-discovery.js +178 -0
  160. package/dist/lib/tools/tool-discovery.js.map +1 -0
  161. package/dist/lib/tools/tool-registry.d.ts +19 -3
  162. package/dist/lib/tools/tool-registry.d.ts.map +1 -1
  163. package/dist/lib/tools/tool-registry.js +63 -10
  164. package/dist/lib/tools/tool-registry.js.map +1 -1
  165. package/dist/lib/workflows/index.d.ts +4 -2
  166. package/dist/lib/workflows/index.d.ts.map +1 -1
  167. package/dist/lib/workflows/index.js +3 -1
  168. package/dist/lib/workflows/index.js.map +1 -1
  169. package/dist/lib/workflows/interrupt-manager.d.ts +42 -0
  170. package/dist/lib/workflows/interrupt-manager.d.ts.map +1 -0
  171. package/dist/lib/workflows/interrupt-manager.js +102 -0
  172. package/dist/lib/workflows/interrupt-manager.js.map +1 -0
  173. package/dist/lib/workflows/langgraph-executor.d.ts +51 -0
  174. package/dist/lib/workflows/langgraph-executor.d.ts.map +1 -0
  175. package/dist/lib/workflows/langgraph-executor.js +297 -0
  176. package/dist/lib/workflows/langgraph-executor.js.map +1 -0
  177. package/dist/lib/workflows/types.d.ts +911 -34
  178. package/dist/lib/workflows/types.d.ts.map +1 -1
  179. package/dist/lib/workflows/types.js +51 -2
  180. package/dist/lib/workflows/types.js.map +1 -1
  181. package/dist/lib/workflows/workflow-executor.d.ts.map +1 -1
  182. package/dist/lib/workflows/workflow-executor.js +4 -0
  183. package/dist/lib/workflows/workflow-executor.js.map +1 -1
  184. package/dist/lib/workflows/workflow-loader.d.ts.map +1 -1
  185. package/dist/lib/workflows/workflow-loader.js +3 -1
  186. package/dist/lib/workflows/workflow-loader.js.map +1 -1
  187. package/dist/public/index.html +133 -700
  188. package/dist/public/src/components/AgentsView.js +763 -0
  189. package/dist/public/src/components/AppRoot.js +76 -0
  190. package/dist/public/src/components/IdeView.js +330 -0
  191. package/dist/public/src/components/KnowledgeView.js +133 -0
  192. package/dist/public/src/components/LlmView.js +127 -0
  193. package/dist/public/src/components/McpView.js +387 -0
  194. package/dist/public/src/components/NavBar.js +71 -0
  195. package/dist/public/src/components/WorkflowsView.js +243 -0
  196. package/dist/public/src/main.js +9 -0
  197. package/dist/public/src/services/ApiService.js +142 -0
  198. package/dist/public/src/store.js +41 -0
  199. package/dist/public/src/utils/Component.js +23 -0
  200. package/dist/public/src/utils/markdown.js +82 -0
  201. package/dist/src/cli/commands/start.d.ts.map +1 -1
  202. package/dist/src/cli/commands/start.js +3 -2
  203. package/dist/src/cli/commands/start.js.map +1 -1
  204. package/dist/src/index.js +46 -12
  205. package/dist/src/index.js.map +1 -1
  206. package/dist/src/routes/agents.route.d.ts.map +1 -1
  207. package/dist/src/routes/agents.route.js +38 -5
  208. package/dist/src/routes/agents.route.js.map +1 -1
  209. package/dist/src/routes/files.route.d.ts +3 -0
  210. package/dist/src/routes/files.route.d.ts.map +1 -0
  211. package/dist/src/routes/files.route.js +160 -0
  212. package/dist/src/routes/files.route.js.map +1 -0
  213. package/dist/src/routes/functions.route.d.ts +3 -0
  214. package/dist/src/routes/functions.route.d.ts.map +1 -0
  215. package/dist/src/routes/functions.route.js +83 -0
  216. package/dist/src/routes/functions.route.js.map +1 -0
  217. package/dist/src/routes/knowledge.route.d.ts +3 -0
  218. package/dist/src/routes/knowledge.route.d.ts.map +1 -0
  219. package/dist/src/routes/knowledge.route.js +153 -0
  220. package/dist/src/routes/knowledge.route.js.map +1 -0
  221. package/dist/src/routes/mcp.route.d.ts +3 -0
  222. package/dist/src/routes/mcp.route.d.ts.map +1 -0
  223. package/dist/src/routes/mcp.route.js +79 -0
  224. package/dist/src/routes/mcp.route.js.map +1 -0
  225. package/dist/src/routes/workflows.route.d.ts.map +1 -1
  226. package/dist/src/routes/workflows.route.js +2 -1
  227. package/dist/src/routes/workflows.route.js.map +1 -1
  228. package/dist/src/server.d.ts.map +1 -1
  229. package/dist/src/server.js +8 -2
  230. package/dist/src/server.js.map +1 -1
  231. package/dist/templates/.env.example +21 -0
  232. package/dist/templates/README.md +43 -152
  233. package/dist/templates/agents/call-center-analyst-simple.agent.yaml +36 -0
  234. package/dist/templates/agents/math.agent.yaml +4 -14
  235. package/dist/templates/agents/sentiment-structured.agent.yaml +42 -0
  236. package/dist/templates/functions/calculator.function.js +69 -0
  237. package/dist/templates/functions/text-formatter.function.js +66 -0
  238. package/dist/templates/{vectors/example.vector.yaml → knowledge/example.knowledge.yaml} +1 -1
  239. package/dist/templates/knowledge/transcripts/call-001.txt +40 -0
  240. package/dist/templates/knowledge/transcripts/call-002.txt +36 -0
  241. package/dist/templates/knowledge/transcripts/call-003.txt +42 -0
  242. package/dist/templates/llm.md +1195 -0
  243. package/dist/templates/workflows/example.workflow.yaml +8 -19
  244. package/dist/templates/workflows/langgraph-example.workflow.yaml +84 -0
  245. package/package.json +19 -10
  246. package/dist/lib/tools/built-in/vector-search.tool.d.ts +0 -4
  247. package/dist/lib/tools/built-in/vector-search.tool.d.ts.map +0 -1
  248. package/dist/lib/tools/built-in/vector-search.tool.js.map +0 -1
  249. package/dist/lib/vectors/index.d.ts +0 -5
  250. package/dist/lib/vectors/index.d.ts.map +0 -1
  251. package/dist/lib/vectors/index.js +0 -4
  252. package/dist/lib/vectors/index.js.map +0 -1
  253. package/dist/lib/vectors/types.d.ts +0 -212
  254. package/dist/lib/vectors/types.d.ts.map +0 -1
  255. package/dist/lib/vectors/types.js +0 -39
  256. package/dist/lib/vectors/types.js.map +0 -1
  257. package/dist/lib/vectors/vector-store-factory.d.ts +0 -14
  258. package/dist/lib/vectors/vector-store-factory.d.ts.map +0 -1
  259. package/dist/lib/vectors/vector-store-factory.js.map +0 -1
  260. package/dist/lib/vectors/vector-store-manager.d.ts +0 -18
  261. package/dist/lib/vectors/vector-store-manager.d.ts.map +0 -1
  262. package/dist/lib/vectors/vector-store-manager.js +0 -79
  263. package/dist/lib/vectors/vector-store-manager.js.map +0 -1
  264. package/dist/src/routes/vectors.route.d.ts +0 -3
  265. package/dist/src/routes/vectors.route.d.ts.map +0 -1
  266. package/dist/src/routes/vectors.route.js +0 -74
  267. package/dist/src/routes/vectors.route.js.map +0 -1
  268. package/dist/templates/agents/example.agent.yaml +0 -32
  269. package/dist/templates/agents/knowledge.agent.yaml +0 -36
  270. package/dist/templates/agents/time.agent.yaml +0 -42
  271. package/dist/templates/functions/README.md +0 -195
  272. package/dist/templates/functions/fibonacci.function.js +0 -55
  273. package/dist/templates/vectors/sample-data/example-document.txt +0 -15
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-extractor.js","sourceRoot":"","sources":["../../../../lib/knowledge/graph-rag/entity-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { CachedGraphData, ExtractedEntity, ExtractedRelationship, Community } from './types.js';
2
+ /**
3
+ * File-based JSON cache for graph extraction results.
4
+ * Invalidates when source document content changes (SHA-256 hash).
5
+ */
6
+ export declare class ExtractionCache {
7
+ private cacheDir;
8
+ constructor(baseDir: string, knowledgeName: string);
9
+ /**
10
+ * Compute SHA-256 hash of concatenated document contents.
11
+ */
12
+ static computeSourceHash(documentContents: string[]): string;
13
+ /**
14
+ * Check if valid cache exists for the given source hash.
15
+ */
16
+ isValid(sourceHash: string): Promise<boolean>;
17
+ /**
18
+ * Load cached graph data.
19
+ */
20
+ load(): Promise<CachedGraphData>;
21
+ /**
22
+ * Save graph data to cache.
23
+ */
24
+ save(sourceHash: string, entities: ExtractedEntity[], relationships: ExtractedRelationship[], communities: Community[]): Promise<void>;
25
+ /**
26
+ * Clear the cache directory.
27
+ */
28
+ clear(): Promise<void>;
29
+ }
30
+ //# sourceMappingURL=extraction-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extraction-cache.d.ts","sourceRoot":"","sources":["../../../../lib/knowledge/graph-rag/extraction-cache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAiB,eAAe,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAOpH;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IAIlD;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,MAAM;IAQ5D;;OAEG;IACG,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWnD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC;IAgBtC;;OAEG;IACG,IAAI,CACR,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,eAAe,EAAE,EAC3B,aAAa,EAAE,qBAAqB,EAAE,EACtC,WAAW,EAAE,SAAS,EAAE,GACvB,OAAO,CAAC,IAAI,CAAC;IAmBhB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ7B"}
@@ -0,0 +1,88 @@
1
+ import * as fs from 'fs/promises';
2
+ import * as path from 'path';
3
+ import * as crypto from 'crypto';
4
+ import { createLogger } from '../../logger.js';
5
+ const logger = createLogger('ExtractionCache');
6
+ const CONFIG_VERSION = '1.0';
7
+ /**
8
+ * File-based JSON cache for graph extraction results.
9
+ * Invalidates when source document content changes (SHA-256 hash).
10
+ */
11
+ export class ExtractionCache {
12
+ cacheDir;
13
+ constructor(baseDir, knowledgeName) {
14
+ this.cacheDir = path.join(baseDir, knowledgeName);
15
+ }
16
+ /**
17
+ * Compute SHA-256 hash of concatenated document contents.
18
+ */
19
+ static computeSourceHash(documentContents) {
20
+ const hash = crypto.createHash('sha256');
21
+ for (const content of documentContents) {
22
+ hash.update(content);
23
+ }
24
+ return hash.digest('hex');
25
+ }
26
+ /**
27
+ * Check if valid cache exists for the given source hash.
28
+ */
29
+ async isValid(sourceHash) {
30
+ try {
31
+ const metadataPath = path.join(this.cacheDir, 'metadata.json');
32
+ const content = await fs.readFile(metadataPath, 'utf-8');
33
+ const metadata = JSON.parse(content);
34
+ return metadata.sourceHash === sourceHash && metadata.configVersion === CONFIG_VERSION;
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ }
40
+ /**
41
+ * Load cached graph data.
42
+ */
43
+ async load() {
44
+ const [metadataRaw, entitiesRaw, relationshipsRaw, communitiesRaw] = await Promise.all([
45
+ fs.readFile(path.join(this.cacheDir, 'metadata.json'), 'utf-8'),
46
+ fs.readFile(path.join(this.cacheDir, 'entities.json'), 'utf-8'),
47
+ fs.readFile(path.join(this.cacheDir, 'relationships.json'), 'utf-8'),
48
+ fs.readFile(path.join(this.cacheDir, 'communities.json'), 'utf-8'),
49
+ ]);
50
+ return {
51
+ metadata: JSON.parse(metadataRaw),
52
+ entities: JSON.parse(entitiesRaw),
53
+ relationships: JSON.parse(relationshipsRaw),
54
+ communities: JSON.parse(communitiesRaw),
55
+ };
56
+ }
57
+ /**
58
+ * Save graph data to cache.
59
+ */
60
+ async save(sourceHash, entities, relationships, communities) {
61
+ await fs.mkdir(this.cacheDir, { recursive: true });
62
+ const metadata = {
63
+ sourceHash,
64
+ extractedAt: new Date().toISOString(),
65
+ configVersion: CONFIG_VERSION,
66
+ };
67
+ await Promise.all([
68
+ fs.writeFile(path.join(this.cacheDir, 'metadata.json'), JSON.stringify(metadata, null, 2)),
69
+ fs.writeFile(path.join(this.cacheDir, 'entities.json'), JSON.stringify(entities, null, 2)),
70
+ fs.writeFile(path.join(this.cacheDir, 'relationships.json'), JSON.stringify(relationships, null, 2)),
71
+ fs.writeFile(path.join(this.cacheDir, 'communities.json'), JSON.stringify(communities, null, 2)),
72
+ ]);
73
+ logger.info(`Cache saved to ${this.cacheDir} (${entities.length} entities, ${relationships.length} relationships, ${communities.length} communities)`);
74
+ }
75
+ /**
76
+ * Clear the cache directory.
77
+ */
78
+ async clear() {
79
+ try {
80
+ await fs.rm(this.cacheDir, { recursive: true, force: true });
81
+ logger.info(`Cache cleared: ${this.cacheDir}`);
82
+ }
83
+ catch {
84
+ // Cache directory may not exist
85
+ }
86
+ }
87
+ }
88
+ //# sourceMappingURL=extraction-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extraction-cache.js","sourceRoot":"","sources":["../../../../lib/knowledge/graph-rag/extraction-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
+ import type { GraphStore, GlobalSearchConfig } from './types.js';
3
+ import type { SearchResult } from '../types.js';
4
+ /**
5
+ * Community-summary map-reduce search.
6
+ * 1. Retrieve top N community summaries
7
+ * 2. Map: ask LLM to answer query using each summary
8
+ * 3. Reduce: synthesize all partial answers into final response
9
+ */
10
+ export declare class GlobalSearch {
11
+ private store;
12
+ private llm;
13
+ private config;
14
+ constructor(store: GraphStore, llm: BaseChatModel, config: GlobalSearchConfig);
15
+ search(query: string, _k: number): Promise<SearchResult[]>;
16
+ private mapQuery;
17
+ private reduceAnswers;
18
+ }
19
+ //# sourceMappingURL=global-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-search.d.ts","sourceRoot":"","sources":["../../../../lib/knowledge/graph-rag/global-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAEjF,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKhD;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,MAAM,CAAqB;gBAEvB,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,kBAAkB;IAMvE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YAyDlD,QAAQ;YAoBR,aAAa;CAyB5B"}
@@ -0,0 +1,96 @@
1
+ import { HumanMessage, SystemMessage } from '@langchain/core/messages';
2
+ import { createLogger } from '../../logger.js';
3
+ const logger = createLogger('GraphGlobalSearch');
4
+ /**
5
+ * Community-summary map-reduce search.
6
+ * 1. Retrieve top N community summaries
7
+ * 2. Map: ask LLM to answer query using each summary
8
+ * 3. Reduce: synthesize all partial answers into final response
9
+ */
10
+ export class GlobalSearch {
11
+ store;
12
+ llm;
13
+ config;
14
+ constructor(store, llm, config) {
15
+ this.store = store;
16
+ this.llm = llm;
17
+ this.config = config;
18
+ }
19
+ async search(query, _k) {
20
+ logger.info(`Global search: "${query.substring(0, 50)}..." (topCommunities=${this.config.topCommunities})`);
21
+ const communities = await this.store.getCommunities();
22
+ if (communities.length === 0) {
23
+ logger.warn('No communities found');
24
+ return [];
25
+ }
26
+ // Take top N communities (sorted by size, largest first)
27
+ const topCommunities = [...communities]
28
+ .sort((a, b) => b.nodeIds.length - a.nodeIds.length)
29
+ .slice(0, this.config.topCommunities);
30
+ logger.info(`Using ${topCommunities.length} communities for map-reduce`);
31
+ // Map phase: get partial answers from each community
32
+ const partialAnswers = [];
33
+ for (const community of topCommunities) {
34
+ if (!community.summary)
35
+ continue;
36
+ try {
37
+ const answer = await this.mapQuery(query, community.title ?? community.id, community.summary);
38
+ if (answer && answer.trim().length > 0) {
39
+ partialAnswers.push({
40
+ communityId: community.id,
41
+ title: community.title ?? community.id,
42
+ answer,
43
+ });
44
+ }
45
+ }
46
+ catch (error) {
47
+ logger.warn(`Map failed for community ${community.id}: ${error instanceof Error ? error.message : String(error)}`);
48
+ }
49
+ }
50
+ if (partialAnswers.length === 0) {
51
+ logger.warn('No partial answers generated');
52
+ return [];
53
+ }
54
+ // Reduce phase: synthesize final answer
55
+ const synthesized = await this.reduceAnswers(query, partialAnswers);
56
+ const result = {
57
+ content: synthesized,
58
+ metadata: {
59
+ type: 'graph-global',
60
+ communitiesUsed: partialAnswers.length,
61
+ communityIds: partialAnswers.map((a) => a.communityId),
62
+ },
63
+ score: 1.0, // Global search is always fully relevant to broad queries
64
+ };
65
+ return [result];
66
+ }
67
+ async mapQuery(query, communityTitle, communitySummary) {
68
+ const response = await this.llm.invoke([
69
+ new SystemMessage(`You are a helpful analyst. Given a community summary from a knowledge graph, answer the user's question based on the information available. If the community summary is not relevant to the question, respond with an empty string "".
70
+ Be concise and factual.`),
71
+ new HumanMessage(`Community: ${communityTitle}\n\nSummary:\n${communitySummary}\n\nQuestion: ${query}`),
72
+ ]);
73
+ const text = typeof response.content === 'string'
74
+ ? response.content
75
+ : Array.isArray(response.content)
76
+ ? response.content.map((c) => (typeof c === 'string' ? c : 'text' in c ? c.text : '')).join('')
77
+ : '';
78
+ return text.trim();
79
+ }
80
+ async reduceAnswers(query, partialAnswers) {
81
+ const answersText = partialAnswers
82
+ .map((a, i) => `[${i + 1}] Community "${a.title}":\n${a.answer}`)
83
+ .join('\n\n');
84
+ const response = await this.llm.invoke([
85
+ new SystemMessage(`You are a synthesis expert. Given multiple partial answers from different knowledge graph communities, synthesize them into a single comprehensive answer. Remove redundancies, reconcile any conflicts, and present a coherent response.`),
86
+ new HumanMessage(`Question: ${query}\n\nPartial answers from different communities:\n\n${answersText}\n\nProvide a synthesized comprehensive answer:`),
87
+ ]);
88
+ const text = typeof response.content === 'string'
89
+ ? response.content
90
+ : Array.isArray(response.content)
91
+ ? response.content.map((c) => (typeof c === 'string' ? c : 'text' in c ? c.text : '')).join('')
92
+ : '';
93
+ return text.trim();
94
+ }
95
+ }
96
+ //# sourceMappingURL=global-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-search.js","sourceRoot":"","sources":["../../../../lib/knowledge/graph-rag/global-search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { GraphStore } from './types.js';
2
+ import type { KnowledgeStoreInstance } from '../types.js';
3
+ import type { GraphRagKnowledgeConfig } from '../types.js';
4
+ /**
5
+ * Creates a GraphRAG KnowledgeStoreInstance from a graph-rag configuration.
6
+ * Orchestrates: load → split → extract entities → build graph → detect communities → summarize → index.
7
+ */
8
+ export declare class GraphRagFactory {
9
+ /** Graph store references for API access (keyed by knowledge store name) */
10
+ private static graphStores;
11
+ /** Get a graph store by knowledge store name (for API endpoints) */
12
+ static getGraphStore(name: string): GraphStore | undefined;
13
+ static create(config: GraphRagKnowledgeConfig, projectRoot: string): Promise<KnowledgeStoreInstance>;
14
+ private static createGraphStore;
15
+ /**
16
+ * Build GraphNode objects from extracted entities, creating embeddings for each.
17
+ */
18
+ private static buildNodes;
19
+ /**
20
+ * Build GraphEdge objects from extracted relationships, resolving entity names to node IDs.
21
+ */
22
+ private static buildEdges;
23
+ }
24
+ //# sourceMappingURL=graph-rag-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-rag-factory.d.ts","sourceRoot":"","sources":["../../../../lib/knowledge/graph-rag/graph-rag-factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAIV,UAAU,EAIX,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,sBAAsB,EAAgB,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAiB3D;;;GAGG;AACH,qBAAa,eAAe;IAC1B,4EAA4E;IAC5E,OAAO,CAAC,MAAM,CAAC,WAAW,CAAiC;IAE3D,oEAAoE;IACpE,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;WAI7C,MAAM,CAAC,MAAM,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAmJ1G,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAiB/B;;OAEG;mBACkB,UAAU;IAgC/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;CAkC1B"}
@@ -0,0 +1,239 @@
1
+ import { MemoryGraphStore } from './memory-graph-store.js';
2
+ import { Neo4jGraphStore } from './neo4j-graph-store.js';
3
+ import { EntityExtractor } from './entity-extractor.js';
4
+ import { ExtractionCache } from './extraction-cache.js';
5
+ import { CommunityDetector } from './community-detector.js';
6
+ import { CommunitySummarizer } from './community-summarizer.js';
7
+ import { LocalSearch } from './local-search.js';
8
+ import { GlobalSearch } from './global-search.js';
9
+ import { detectSearchMode } from './search-mode-detector.js';
10
+ import { LLMFactory } from '../../llm/llm-factory.js';
11
+ import { KnowledgeStoreFactory } from '../knowledge-store-factory.js';
12
+ import { createLogger } from '../../logger.js';
13
+ import * as path from 'path';
14
+ const logger = createLogger('GraphRAGFactory');
15
+ /**
16
+ * Creates a GraphRAG KnowledgeStoreInstance from a graph-rag configuration.
17
+ * Orchestrates: load → split → extract entities → build graph → detect communities → summarize → index.
18
+ */
19
+ export class GraphRagFactory {
20
+ /** Graph store references for API access (keyed by knowledge store name) */
21
+ static graphStores = new Map();
22
+ /** Get a graph store by knowledge store name (for API endpoints) */
23
+ static getGraphStore(name) {
24
+ return this.graphStores.get(name);
25
+ }
26
+ static async create(config, projectRoot) {
27
+ const graphConfig = config.graph;
28
+ const searchConfig = config.search;
29
+ logger.info(`Creating GraphRAG store "${config.name}"...`);
30
+ // 1. Load and split documents (reuse existing infrastructure)
31
+ logger.info('Loading documents...');
32
+ const documents = await KnowledgeStoreFactory.loadDocuments(config, projectRoot);
33
+ logger.info(`Loaded ${documents.length} document(s)`);
34
+ const splitDocs = await KnowledgeStoreFactory.splitDocuments(config, documents);
35
+ logger.info(`Split into ${splitDocs.length} chunk(s)`);
36
+ // 2. Create embeddings for entity descriptions
37
+ const embeddings = KnowledgeStoreFactory.createEmbeddings(config.embedding);
38
+ // 3. Create graph store
39
+ const store = this.createGraphStore(graphConfig);
40
+ // 4. Check cache
41
+ const cacheEnabled = graphConfig.cache.enabled;
42
+ const cachePath = path.resolve(projectRoot, graphConfig.cache.directory);
43
+ const cache = new ExtractionCache(cachePath, config.name);
44
+ const docContents = splitDocs.map((d) => d.pageContent);
45
+ const sourceHash = ExtractionCache.computeSourceHash(docContents);
46
+ let entities = [];
47
+ let relationships = [];
48
+ let communities = [];
49
+ let cacheHit = false;
50
+ if (cacheEnabled && await cache.isValid(sourceHash)) {
51
+ try {
52
+ logger.info('Cache HIT - loading from cache');
53
+ const cached = await cache.load();
54
+ entities = cached.entities;
55
+ relationships = cached.relationships;
56
+ communities = cached.communities;
57
+ cacheHit = true;
58
+ }
59
+ catch (cacheError) {
60
+ logger.warn(`Cache load failed, falling back to extraction: ${cacheError instanceof Error ? cacheError.message : String(cacheError)}`);
61
+ }
62
+ }
63
+ if (!cacheHit) {
64
+ if (cacheEnabled) {
65
+ logger.info('Cache MISS - running extraction pipeline');
66
+ }
67
+ // 5. Entity extraction
68
+ const extractionLlm = LLMFactory.create(graphConfig.extraction.llm);
69
+ const extractor = new EntityExtractor({
70
+ llm: extractionLlm,
71
+ entityTypes: graphConfig.extraction.entityTypes,
72
+ relationshipTypes: graphConfig.extraction.relationshipTypes,
73
+ });
74
+ const chunks = splitDocs.map((doc, idx) => ({
75
+ id: `chunk-${idx}`,
76
+ content: doc.pageContent,
77
+ }));
78
+ const extracted = await extractor.extractFromChunks(chunks);
79
+ entities = extracted.entities;
80
+ relationships = extracted.relationships;
81
+ // 6. Build graph
82
+ const nodes = await this.buildNodes(entities, embeddings);
83
+ const edges = this.buildEdges(relationships, nodes);
84
+ await store.addNodes(nodes);
85
+ await store.addEdges(edges);
86
+ // 7. Community detection
87
+ if (store instanceof MemoryGraphStore) {
88
+ const detector = new CommunityDetector(graphConfig.communities);
89
+ communities = await detector.detect(store);
90
+ // 8. Community summarization
91
+ if (communities.length > 0) {
92
+ const summaryLlm = LLMFactory.create(graphConfig.communities.summaryLlm);
93
+ const summarizer = new CommunitySummarizer(summaryLlm);
94
+ communities = await summarizer.summarize(communities, store);
95
+ }
96
+ }
97
+ else {
98
+ // Neo4j: community detection not yet supported directly
99
+ communities = [];
100
+ logger.warn('Community detection not supported for Neo4j store (use memory store)');
101
+ }
102
+ await store.setCommunities(communities);
103
+ // 9. Save to cache
104
+ if (cacheEnabled) {
105
+ await cache.save(sourceHash, entities, relationships, communities);
106
+ }
107
+ }
108
+ // If loading from cache, we need to rebuild the graph store
109
+ if (cacheEnabled && entities.length > 0 && (await store.getAllNodes()).length === 0) {
110
+ const nodes = await this.buildNodes(entities, embeddings);
111
+ const edges = this.buildEdges(relationships, nodes);
112
+ await store.addNodes(nodes);
113
+ await store.addEdges(edges);
114
+ await store.setCommunities(communities);
115
+ }
116
+ logger.info(`GraphRAG "${config.name}" ready: ${entities.length} entities, ${relationships.length} relationships, ${communities.length} communities`);
117
+ // Register graph store for API access
118
+ this.graphStores.set(config.name, store);
119
+ // 10. Create search instances
120
+ const localSearch = new LocalSearch(store, embeddings, searchConfig.localSearch);
121
+ const globalSearchLlm = LLMFactory.create(searchConfig.globalSearch.llm);
122
+ const globalSearch = new GlobalSearch(store, globalSearchLlm, searchConfig.globalSearch);
123
+ // 11. Return KnowledgeStoreInstance
124
+ return {
125
+ config: config, // GraphRagKnowledgeConfig is compatible with KnowledgeConfig via the union
126
+ search: async (query, k) => {
127
+ const numResults = k ?? searchConfig.defaultK;
128
+ const mode = detectSearchMode(query);
129
+ logger.info(`Search mode: ${mode} for query: "${query.substring(0, 50)}..."`);
130
+ if (mode === 'global') {
131
+ return globalSearch.search(query, numResults);
132
+ }
133
+ return localSearch.search(query, numResults);
134
+ },
135
+ addDocuments: async () => {
136
+ logger.warn('addDocuments not supported for GraphRAG stores - use refresh() instead');
137
+ },
138
+ refresh: async () => {
139
+ logger.info(`Refreshing GraphRAG store "${config.name}"...`);
140
+ await store.clear();
141
+ if (cacheEnabled) {
142
+ await cache.clear();
143
+ }
144
+ // Re-run the full pipeline
145
+ await GraphRagFactory.create(config, projectRoot);
146
+ },
147
+ };
148
+ }
149
+ static createGraphStore(config) {
150
+ switch (config.store.type) {
151
+ case 'neo4j': {
152
+ const opts = config.store.options;
153
+ return new Neo4jGraphStore({
154
+ uri: opts.uri ?? 'bolt://localhost:7687',
155
+ username: opts.username ?? 'neo4j',
156
+ password: opts.password ?? 'password',
157
+ database: opts.database,
158
+ });
159
+ }
160
+ case 'memory':
161
+ default:
162
+ return new MemoryGraphStore();
163
+ }
164
+ }
165
+ /**
166
+ * Build GraphNode objects from extracted entities, creating embeddings for each.
167
+ */
168
+ static async buildNodes(entities, embeddings) {
169
+ const nodes = [];
170
+ // Batch embed all entity descriptions
171
+ const descriptions = entities.map((e) => `${e.name}: ${e.description}`);
172
+ let embeddingVectors = [];
173
+ try {
174
+ embeddingVectors = await embeddings.embedDocuments(descriptions);
175
+ }
176
+ catch (error) {
177
+ logger.error(`Failed to embed entity descriptions: ${error instanceof Error ? error.message : String(error)}`);
178
+ // Fall back to empty embeddings
179
+ embeddingVectors = entities.map(() => []);
180
+ }
181
+ for (let i = 0; i < entities.length; i++) {
182
+ const entity = entities[i];
183
+ const nodeId = normalizeId(entity.name, entity.type);
184
+ nodes.push({
185
+ id: nodeId,
186
+ type: entity.type,
187
+ name: entity.name,
188
+ description: entity.description,
189
+ properties: entity.properties,
190
+ sourceChunkIds: entity.properties.sourceChunkIds ?? [],
191
+ embedding: embeddingVectors[i],
192
+ });
193
+ }
194
+ return nodes;
195
+ }
196
+ /**
197
+ * Build GraphEdge objects from extracted relationships, resolving entity names to node IDs.
198
+ */
199
+ static buildEdges(relationships, nodes) {
200
+ const nodeIdMap = new Map();
201
+ for (const node of nodes) {
202
+ const key = `${node.name.toLowerCase()}::${node.type.toLowerCase()}`;
203
+ nodeIdMap.set(key, node.id);
204
+ }
205
+ const edges = [];
206
+ for (let i = 0; i < relationships.length; i++) {
207
+ const rel = relationships[i];
208
+ const sourceKey = `${rel.sourceName.toLowerCase()}::${rel.sourceType.toLowerCase()}`;
209
+ const targetKey = `${rel.targetName.toLowerCase()}::${rel.targetType.toLowerCase()}`;
210
+ const sourceId = nodeIdMap.get(sourceKey);
211
+ const targetId = nodeIdMap.get(targetKey);
212
+ if (!sourceId || !targetId) {
213
+ logger.debug(`Skipping relationship: missing node for ${rel.sourceName} -> ${rel.targetName}`);
214
+ continue;
215
+ }
216
+ edges.push({
217
+ id: `edge-${i}-${rel.type}`,
218
+ type: rel.type,
219
+ sourceId,
220
+ targetId,
221
+ description: rel.description,
222
+ weight: rel.weight,
223
+ properties: {},
224
+ });
225
+ }
226
+ return edges;
227
+ }
228
+ }
229
+ /**
230
+ * Create a deterministic node ID from entity name and type.
231
+ */
232
+ function normalizeId(name, type) {
233
+ const normalized = `${type}::${name}`
234
+ .toLowerCase()
235
+ .replace(/[^a-z0-9:]+/g, '-')
236
+ .replace(/^-|-$/g, '');
237
+ return normalized;
238
+ }
239
+ //# sourceMappingURL=graph-rag-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-rag-factory.js","sourceRoot":"","sources":["../../../../lib/knowledge/graph-rag/graph-rag-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export { GraphRagFactory } from './graph-rag-factory.js';
2
+ export { MemoryGraphStore } from './memory-graph-store.js';
3
+ export { Neo4jGraphStore } from './neo4j-graph-store.js';
4
+ export { EntityExtractor } from './entity-extractor.js';
5
+ export { ExtractionCache } from './extraction-cache.js';
6
+ export { CommunityDetector } from './community-detector.js';
7
+ export { CommunitySummarizer } from './community-summarizer.js';
8
+ export { LocalSearch } from './local-search.js';
9
+ export { GlobalSearch } from './global-search.js';
10
+ export { detectSearchMode } from './search-mode-detector.js';
11
+ export type { SearchMode } from './search-mode-detector.js';
12
+ export { GraphConfigSchema, GraphSearchConfigSchema, GraphExtractionConfigSchema, GraphCommunitiesConfigSchema, GraphStoreConfigSchema, GraphCacheConfigSchema, EntityTypeSchema, RelationshipTypeSchema, LocalSearchConfigSchema, GlobalSearchConfigSchema, } from './types.js';
13
+ export type { GraphNode, GraphEdge, Community, GraphStore, GraphConfig, GraphSearchConfig, GraphExtractionConfig, GraphCommunitiesConfig, GraphStoreConfig, GraphCacheConfig, EntityTypeConfig, RelationshipTypeConfig, LocalSearchConfig, GlobalSearchConfig, ExtractedEntity, ExtractedRelationship, ExtractionResult, CacheMetadata, CachedGraphData, } from './types.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../lib/knowledge/graph-rag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,4BAA4B,EAC5B,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACT,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,eAAe,GAChB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,12 @@
1
+ export { GraphRagFactory } from './graph-rag-factory.js';
2
+ export { MemoryGraphStore } from './memory-graph-store.js';
3
+ export { Neo4jGraphStore } from './neo4j-graph-store.js';
4
+ export { EntityExtractor } from './entity-extractor.js';
5
+ export { ExtractionCache } from './extraction-cache.js';
6
+ export { CommunityDetector } from './community-detector.js';
7
+ export { CommunitySummarizer } from './community-summarizer.js';
8
+ export { LocalSearch } from './local-search.js';
9
+ export { GlobalSearch } from './global-search.js';
10
+ export { detectSearchMode } from './search-mode-detector.js';
11
+ export { GraphConfigSchema, GraphSearchConfigSchema, GraphExtractionConfigSchema, GraphCommunitiesConfigSchema, GraphStoreConfigSchema, GraphCacheConfigSchema, EntityTypeSchema, RelationshipTypeSchema, LocalSearchConfigSchema, GlobalSearchConfigSchema, } from './types.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/knowledge/graph-rag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,4BAA4B,EAC5B,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { Embeddings } from '@langchain/core/embeddings';
2
+ import type { GraphStore, LocalSearchConfig } from './types.js';
3
+ import type { SearchResult } from '../types.js';
4
+ /**
5
+ * Entity-neighborhood search.
6
+ * 1. Embed the query
7
+ * 2. Find top-K similar entity nodes by embedding
8
+ * 3. Expand each node's neighborhood by maxDepth hops
9
+ * 4. Return structured context as SearchResult[]
10
+ */
11
+ export declare class LocalSearch {
12
+ private store;
13
+ private embeddings;
14
+ private config;
15
+ constructor(store: GraphStore, embeddings: Embeddings, config: LocalSearchConfig);
16
+ search(query: string, k: number): Promise<SearchResult[]>;
17
+ private formatNeighborhood;
18
+ private computeRelevanceScore;
19
+ }
20
+ //# sourceMappingURL=local-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-search.d.ts","sourceRoot":"","sources":["../../../../lib/knowledge/graph-rag/local-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAwB,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKhD;;;;;;GAMG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,MAAM,CAAoB;gBAEtB,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB;IAM1E,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAiD/D,OAAO,CAAC,kBAAkB;IAoC1B,OAAO,CAAC,qBAAqB;CAI9B"}