agentdb 3.0.0-alpha.9 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (718) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +248 -269
  3. package/dist/schemas/frontier-schema.sql +7 -0
  4. package/dist/schemas/schema.sql +7 -0
  5. package/dist/src/backends/VectorBackend.d.ts +48 -6
  6. package/dist/src/backends/VectorBackend.d.ts.map +1 -1
  7. package/dist/src/backends/VectorBackend.js +13 -1
  8. package/dist/src/backends/VectorBackend.js.map +1 -1
  9. package/dist/src/backends/detector.js.map +1 -1
  10. package/dist/src/backends/factory.d.ts +16 -33
  11. package/dist/src/backends/factory.d.ts.map +1 -1
  12. package/dist/src/backends/factory.js +140 -110
  13. package/dist/src/backends/factory.js.map +1 -1
  14. package/dist/src/backends/graph/GraphDatabaseAdapter.d.ts +54 -6
  15. package/dist/src/backends/graph/GraphDatabaseAdapter.d.ts.map +1 -1
  16. package/dist/src/backends/graph/GraphDatabaseAdapter.js +143 -6
  17. package/dist/src/backends/graph/GraphDatabaseAdapter.js.map +1 -1
  18. package/dist/src/backends/hnswlib/HNSWLibBackend.d.ts.map +1 -1
  19. package/dist/src/backends/hnswlib/HNSWLibBackend.js +35 -8
  20. package/dist/src/backends/hnswlib/HNSWLibBackend.js.map +1 -1
  21. package/dist/src/backends/index.d.ts +2 -1
  22. package/dist/src/backends/index.d.ts.map +1 -1
  23. package/dist/src/backends/index.js +2 -0
  24. package/dist/src/backends/index.js.map +1 -1
  25. package/dist/src/backends/ruvector/RuVectorBackend.d.ts +256 -45
  26. package/dist/src/backends/ruvector/RuVectorBackend.d.ts.map +1 -1
  27. package/dist/src/backends/ruvector/RuVectorBackend.js +764 -290
  28. package/dist/src/backends/ruvector/RuVectorBackend.js.map +1 -1
  29. package/dist/src/backends/ruvector/RuVectorLearning.d.ts +0 -4
  30. package/dist/src/backends/ruvector/RuVectorLearning.d.ts.map +1 -1
  31. package/dist/src/backends/ruvector/RuVectorLearning.js +0 -6
  32. package/dist/src/backends/ruvector/RuVectorLearning.js.map +1 -1
  33. package/dist/src/backends/rvf/AdaptiveIndexTuner.d.ts +175 -0
  34. package/dist/src/backends/rvf/AdaptiveIndexTuner.d.ts.map +1 -0
  35. package/dist/src/backends/rvf/AdaptiveIndexTuner.js +567 -0
  36. package/dist/src/backends/rvf/AdaptiveIndexTuner.js.map +1 -0
  37. package/dist/src/backends/rvf/ContrastiveTrainer.d.ts +148 -0
  38. package/dist/src/backends/rvf/ContrastiveTrainer.d.ts.map +1 -0
  39. package/dist/src/backends/rvf/ContrastiveTrainer.js +438 -0
  40. package/dist/src/backends/rvf/ContrastiveTrainer.js.map +1 -0
  41. package/dist/src/backends/rvf/FederatedSessionManager.d.ts +212 -0
  42. package/dist/src/backends/rvf/FederatedSessionManager.d.ts.map +1 -0
  43. package/dist/src/backends/rvf/FederatedSessionManager.js +397 -0
  44. package/dist/src/backends/rvf/FederatedSessionManager.js.map +1 -0
  45. package/dist/src/backends/rvf/FilterBuilder.d.ts +136 -0
  46. package/dist/src/backends/rvf/FilterBuilder.d.ts.map +1 -0
  47. package/dist/src/backends/rvf/FilterBuilder.js +157 -0
  48. package/dist/src/backends/rvf/FilterBuilder.js.map +1 -0
  49. package/dist/src/backends/rvf/NativeAccelerator.d.ts +158 -0
  50. package/dist/src/backends/rvf/NativeAccelerator.d.ts.map +1 -0
  51. package/dist/src/backends/rvf/NativeAccelerator.js +702 -0
  52. package/dist/src/backends/rvf/NativeAccelerator.js.map +1 -0
  53. package/dist/src/backends/rvf/RvfBackend.d.ts +207 -0
  54. package/dist/src/backends/rvf/RvfBackend.d.ts.map +1 -0
  55. package/dist/src/backends/rvf/RvfBackend.js +651 -0
  56. package/dist/src/backends/rvf/RvfBackend.js.map +1 -0
  57. package/dist/src/backends/rvf/RvfSolver.d.ts +175 -0
  58. package/dist/src/backends/rvf/RvfSolver.d.ts.map +1 -0
  59. package/dist/src/backends/rvf/RvfSolver.js +176 -0
  60. package/dist/src/backends/rvf/RvfSolver.js.map +1 -0
  61. package/dist/src/backends/rvf/SelfLearningRvfBackend.d.ts +143 -0
  62. package/dist/src/backends/rvf/SelfLearningRvfBackend.d.ts.map +1 -0
  63. package/dist/src/backends/rvf/SelfLearningRvfBackend.js +612 -0
  64. package/dist/src/backends/rvf/SelfLearningRvfBackend.js.map +1 -0
  65. package/dist/src/backends/rvf/SemanticQueryRouter.d.ts +128 -0
  66. package/dist/src/backends/rvf/SemanticQueryRouter.d.ts.map +1 -0
  67. package/dist/src/backends/rvf/SemanticQueryRouter.js +415 -0
  68. package/dist/src/backends/rvf/SemanticQueryRouter.js.map +1 -0
  69. package/dist/src/backends/rvf/SimdFallbacks.d.ts +25 -0
  70. package/dist/src/backends/rvf/SimdFallbacks.d.ts.map +1 -0
  71. package/dist/src/backends/rvf/SimdFallbacks.js +287 -0
  72. package/dist/src/backends/rvf/SimdFallbacks.js.map +1 -0
  73. package/dist/src/backends/rvf/SolverBandit.d.ts +100 -0
  74. package/dist/src/backends/rvf/SolverBandit.d.ts.map +1 -0
  75. package/dist/src/backends/rvf/SolverBandit.js +216 -0
  76. package/dist/src/backends/rvf/SolverBandit.js.map +1 -0
  77. package/dist/src/backends/rvf/SonaLearningBackend.d.ts +157 -0
  78. package/dist/src/backends/rvf/SonaLearningBackend.d.ts.map +1 -0
  79. package/dist/src/backends/rvf/SonaLearningBackend.js +283 -0
  80. package/dist/src/backends/rvf/SonaLearningBackend.js.map +1 -0
  81. package/dist/src/backends/rvf/SqlJsRvfBackend.d.ts +104 -0
  82. package/dist/src/backends/rvf/SqlJsRvfBackend.d.ts.map +1 -0
  83. package/dist/src/backends/rvf/SqlJsRvfBackend.js +464 -0
  84. package/dist/src/backends/rvf/SqlJsRvfBackend.js.map +1 -0
  85. package/dist/src/backends/rvf/WasmStoreBridge.d.ts +27 -0
  86. package/dist/src/backends/rvf/WasmStoreBridge.d.ts.map +1 -0
  87. package/dist/src/backends/rvf/WasmStoreBridge.js +87 -0
  88. package/dist/src/backends/rvf/WasmStoreBridge.js.map +1 -0
  89. package/dist/src/backends/rvf/validation.d.ts +20 -0
  90. package/dist/src/backends/rvf/validation.d.ts.map +1 -0
  91. package/dist/src/backends/rvf/validation.js +78 -0
  92. package/dist/src/backends/rvf/validation.js.map +1 -0
  93. package/dist/src/benchmark/BenchmarkSuite.d.ts +318 -0
  94. package/dist/src/benchmark/BenchmarkSuite.d.ts.map +1 -0
  95. package/dist/src/benchmark/BenchmarkSuite.js +984 -0
  96. package/dist/src/benchmark/BenchmarkSuite.js.map +1 -0
  97. package/dist/src/benchmark/index.d.ts +29 -0
  98. package/dist/src/benchmark/index.d.ts.map +1 -0
  99. package/dist/src/benchmark/index.js +39 -0
  100. package/dist/src/benchmark/index.js.map +1 -0
  101. package/dist/src/browser/AttentionBrowser.d.ts.map +1 -1
  102. package/dist/src/browser/AttentionBrowser.js +1 -0
  103. package/dist/src/browser/AttentionBrowser.js.map +1 -1
  104. package/dist/src/cli/agentdb-cli.d.ts +14 -0
  105. package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
  106. package/dist/src/cli/agentdb-cli.js +839 -143
  107. package/dist/src/cli/agentdb-cli.js.map +1 -1
  108. package/dist/src/cli/commands/attention.js +12 -2
  109. package/dist/src/cli/commands/attention.js.map +1 -1
  110. package/dist/src/cli/commands/doctor.js +5 -5
  111. package/dist/src/cli/commands/doctor.js.map +1 -1
  112. package/dist/src/cli/commands/hyperbolic.d.ts +11 -0
  113. package/dist/src/cli/commands/hyperbolic.d.ts.map +1 -0
  114. package/dist/src/cli/commands/hyperbolic.js +440 -0
  115. package/dist/src/cli/commands/hyperbolic.js.map +1 -0
  116. package/dist/src/cli/commands/install-embeddings.d.ts +1 -1
  117. package/dist/src/cli/commands/install-embeddings.d.ts.map +1 -1
  118. package/dist/src/cli/commands/install-embeddings.js +17 -11
  119. package/dist/src/cli/commands/install-embeddings.js.map +1 -1
  120. package/dist/src/cli/commands/learn.d.ts +11 -0
  121. package/dist/src/cli/commands/learn.d.ts.map +1 -0
  122. package/dist/src/cli/commands/learn.js +410 -0
  123. package/dist/src/cli/commands/learn.js.map +1 -0
  124. package/dist/src/cli/commands/migrate.d.ts +15 -0
  125. package/dist/src/cli/commands/migrate.d.ts.map +1 -1
  126. package/dist/src/cli/commands/migrate.js +190 -10
  127. package/dist/src/cli/commands/migrate.js.map +1 -1
  128. package/dist/src/cli/commands/route.d.ts +11 -0
  129. package/dist/src/cli/commands/route.d.ts.map +1 -0
  130. package/dist/src/cli/commands/route.js +419 -0
  131. package/dist/src/cli/commands/route.js.map +1 -0
  132. package/dist/src/cli/commands/rvf.d.ts +21 -0
  133. package/dist/src/cli/commands/rvf.d.ts.map +1 -0
  134. package/dist/src/cli/commands/rvf.js +448 -0
  135. package/dist/src/cli/commands/rvf.js.map +1 -0
  136. package/dist/src/cli/commands/simulate-report.js +14 -2
  137. package/dist/src/cli/commands/simulate-report.js.map +1 -1
  138. package/dist/src/cli/lib/report-store.d.ts +2 -1
  139. package/dist/src/cli/lib/report-store.d.ts.map +1 -1
  140. package/dist/src/cli/lib/report-store.js +85 -65
  141. package/dist/src/cli/lib/report-store.js.map +1 -1
  142. package/dist/src/cli/lib/simulation-runner.d.ts +40 -3
  143. package/dist/src/cli/lib/simulation-runner.d.ts.map +1 -1
  144. package/dist/src/cli/lib/simulation-runner.js +248 -6
  145. package/dist/src/cli/lib/simulation-runner.js.map +1 -1
  146. package/dist/src/compatibility/DeprecationWarnings.d.ts +54 -0
  147. package/dist/src/compatibility/DeprecationWarnings.d.ts.map +1 -0
  148. package/dist/src/compatibility/DeprecationWarnings.js +131 -0
  149. package/dist/src/compatibility/DeprecationWarnings.js.map +1 -0
  150. package/dist/src/compatibility/MigrationUtilities.d.ts +30 -0
  151. package/dist/src/compatibility/MigrationUtilities.d.ts.map +1 -0
  152. package/dist/src/compatibility/MigrationUtilities.js +184 -0
  153. package/dist/src/compatibility/MigrationUtilities.js.map +1 -0
  154. package/dist/src/compatibility/V1toV2Adapter.d.ts +76 -0
  155. package/dist/src/compatibility/V1toV2Adapter.d.ts.map +1 -0
  156. package/dist/src/compatibility/V1toV2Adapter.js +185 -0
  157. package/dist/src/compatibility/V1toV2Adapter.js.map +1 -0
  158. package/dist/src/compatibility/VersionDetector.d.ts +32 -0
  159. package/dist/src/compatibility/VersionDetector.d.ts.map +1 -0
  160. package/dist/src/compatibility/VersionDetector.js +144 -0
  161. package/dist/src/compatibility/VersionDetector.js.map +1 -0
  162. package/dist/src/compatibility/index.d.ts +14 -0
  163. package/dist/src/compatibility/index.d.ts.map +1 -0
  164. package/dist/src/compatibility/index.js +21 -0
  165. package/dist/src/compatibility/index.js.map +1 -0
  166. package/dist/src/compatibility/types.d.ts +103 -0
  167. package/dist/src/compatibility/types.d.ts.map +1 -0
  168. package/dist/src/compatibility/types.js +5 -0
  169. package/dist/src/compatibility/types.js.map +1 -0
  170. package/dist/src/controllers/AttentionService.d.ts +99 -202
  171. package/dist/src/controllers/AttentionService.d.ts.map +1 -1
  172. package/dist/src/controllers/AttentionService.js +450 -558
  173. package/dist/src/controllers/AttentionService.js.map +1 -1
  174. package/dist/src/controllers/CausalMemoryGraph.d.ts +30 -5
  175. package/dist/src/controllers/CausalMemoryGraph.d.ts.map +1 -1
  176. package/dist/src/controllers/CausalMemoryGraph.js +92 -15
  177. package/dist/src/controllers/CausalMemoryGraph.js.map +1 -1
  178. package/dist/src/controllers/CausalRecall.d.ts +4 -0
  179. package/dist/src/controllers/CausalRecall.d.ts.map +1 -1
  180. package/dist/src/controllers/CausalRecall.js +23 -5
  181. package/dist/src/controllers/CausalRecall.js.map +1 -1
  182. package/dist/src/controllers/EmbeddingService.d.ts +29 -0
  183. package/dist/src/controllers/EmbeddingService.d.ts.map +1 -1
  184. package/dist/src/controllers/EmbeddingService.js +154 -32
  185. package/dist/src/controllers/EmbeddingService.js.map +1 -1
  186. package/dist/src/controllers/EnhancedEmbeddingService.d.ts +4 -0
  187. package/dist/src/controllers/EnhancedEmbeddingService.d.ts.map +1 -1
  188. package/dist/src/controllers/EnhancedEmbeddingService.js +21 -7
  189. package/dist/src/controllers/EnhancedEmbeddingService.js.map +1 -1
  190. package/dist/src/controllers/ExplainableRecall.d.ts +1 -1
  191. package/dist/src/controllers/ExplainableRecall.d.ts.map +1 -1
  192. package/dist/src/controllers/ExplainableRecall.js +1 -1
  193. package/dist/src/controllers/ExplainableRecall.js.map +1 -1
  194. package/dist/src/controllers/HNSWIndex.d.ts +20 -2
  195. package/dist/src/controllers/HNSWIndex.d.ts.map +1 -1
  196. package/dist/src/controllers/HNSWIndex.js +114 -39
  197. package/dist/src/controllers/HNSWIndex.js.map +1 -1
  198. package/dist/src/controllers/LearningSystem.d.ts +6 -17
  199. package/dist/src/controllers/LearningSystem.d.ts.map +1 -1
  200. package/dist/src/controllers/LearningSystem.js +66 -155
  201. package/dist/src/controllers/LearningSystem.js.map +1 -1
  202. package/dist/src/controllers/MemoryController.d.ts +174 -0
  203. package/dist/src/controllers/MemoryController.d.ts.map +1 -0
  204. package/dist/src/controllers/MemoryController.js +320 -0
  205. package/dist/src/controllers/MemoryController.js.map +1 -0
  206. package/dist/src/controllers/MetadataFilter.d.ts.map +1 -1
  207. package/dist/src/controllers/MetadataFilter.js +38 -26
  208. package/dist/src/controllers/MetadataFilter.js.map +1 -1
  209. package/dist/src/controllers/MincutService.d.ts +92 -0
  210. package/dist/src/controllers/MincutService.d.ts.map +1 -0
  211. package/dist/src/controllers/MincutService.js +336 -0
  212. package/dist/src/controllers/MincutService.js.map +1 -0
  213. package/dist/src/controllers/NightlyLearner.d.ts +5 -1
  214. package/dist/src/controllers/NightlyLearner.d.ts.map +1 -1
  215. package/dist/src/controllers/NightlyLearner.js +45 -31
  216. package/dist/src/controllers/NightlyLearner.js.map +1 -1
  217. package/dist/src/controllers/QUICClient.d.ts +45 -0
  218. package/dist/src/controllers/QUICClient.d.ts.map +1 -1
  219. package/dist/src/controllers/QUICClient.js +211 -21
  220. package/dist/src/controllers/QUICClient.js.map +1 -1
  221. package/dist/src/controllers/QUICServer.d.ts.map +1 -1
  222. package/dist/src/controllers/QUICServer.js +36 -27
  223. package/dist/src/controllers/QUICServer.js.map +1 -1
  224. package/dist/src/controllers/ReasoningBank.d.ts +6 -3
  225. package/dist/src/controllers/ReasoningBank.d.ts.map +1 -1
  226. package/dist/src/controllers/ReasoningBank.js +77 -56
  227. package/dist/src/controllers/ReasoningBank.js.map +1 -1
  228. package/dist/src/controllers/ReflexionMemory.d.ts +129 -6
  229. package/dist/src/controllers/ReflexionMemory.d.ts.map +1 -1
  230. package/dist/src/controllers/ReflexionMemory.js +678 -220
  231. package/dist/src/controllers/ReflexionMemory.js.map +1 -1
  232. package/dist/src/controllers/SkillLibrary.d.ts +32 -3
  233. package/dist/src/controllers/SkillLibrary.d.ts.map +1 -1
  234. package/dist/src/controllers/SkillLibrary.js +239 -104
  235. package/dist/src/controllers/SkillLibrary.js.map +1 -1
  236. package/dist/src/controllers/SparsificationService.d.ts +151 -0
  237. package/dist/src/controllers/SparsificationService.d.ts.map +1 -0
  238. package/dist/src/controllers/SparsificationService.js +375 -0
  239. package/dist/src/controllers/SparsificationService.js.map +1 -0
  240. package/dist/src/controllers/SyncCoordinator.d.ts.map +1 -1
  241. package/dist/src/controllers/SyncCoordinator.js +126 -12
  242. package/dist/src/controllers/SyncCoordinator.js.map +1 -1
  243. package/dist/src/controllers/WASMVectorSearch.d.ts +12 -30
  244. package/dist/src/controllers/WASMVectorSearch.d.ts.map +1 -1
  245. package/dist/src/controllers/WASMVectorSearch.js +161 -102
  246. package/dist/src/controllers/WASMVectorSearch.js.map +1 -1
  247. package/dist/src/controllers/attention/AttentionCache.d.ts +38 -0
  248. package/dist/src/controllers/attention/AttentionCache.d.ts.map +1 -0
  249. package/dist/src/controllers/attention/AttentionCache.js +80 -0
  250. package/dist/src/controllers/attention/AttentionCache.js.map +1 -0
  251. package/dist/src/controllers/attention/AttentionConfig.d.ts +127 -0
  252. package/dist/src/controllers/attention/AttentionConfig.d.ts.map +1 -0
  253. package/dist/src/controllers/attention/AttentionConfig.js +124 -0
  254. package/dist/src/controllers/attention/AttentionConfig.js.map +1 -0
  255. package/dist/src/controllers/attention/AttentionCore.d.ts +89 -0
  256. package/dist/src/controllers/attention/AttentionCore.d.ts.map +1 -0
  257. package/dist/src/controllers/attention/AttentionCore.js +289 -0
  258. package/dist/src/controllers/attention/AttentionCore.js.map +1 -0
  259. package/dist/src/controllers/attention/AttentionHelpers.d.ts +55 -0
  260. package/dist/src/controllers/attention/AttentionHelpers.d.ts.map +1 -0
  261. package/dist/src/controllers/attention/AttentionHelpers.js +148 -0
  262. package/dist/src/controllers/attention/AttentionHelpers.js.map +1 -0
  263. package/dist/src/controllers/attention/AttentionMetrics.d.ts +55 -0
  264. package/dist/src/controllers/attention/AttentionMetrics.d.ts.map +1 -0
  265. package/dist/src/controllers/attention/AttentionMetrics.js +72 -0
  266. package/dist/src/controllers/attention/AttentionMetrics.js.map +1 -0
  267. package/dist/src/controllers/attention/AttentionWASM.d.ts +98 -0
  268. package/dist/src/controllers/attention/AttentionWASM.d.ts.map +1 -0
  269. package/dist/src/controllers/attention/AttentionWASM.js +147 -0
  270. package/dist/src/controllers/attention/AttentionWASM.js.map +1 -0
  271. package/dist/src/controllers/attention/CrossAttentionController.d.ts +141 -0
  272. package/dist/src/controllers/attention/CrossAttentionController.d.ts.map +1 -0
  273. package/dist/src/controllers/attention/CrossAttentionController.js +325 -0
  274. package/dist/src/controllers/attention/CrossAttentionController.js.map +1 -0
  275. package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts +137 -0
  276. package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts.map +1 -0
  277. package/dist/src/controllers/attention/MultiHeadAttentionController.js +336 -0
  278. package/dist/src/controllers/attention/MultiHeadAttentionController.js.map +1 -0
  279. package/dist/src/controllers/attention/SelfAttentionController.d.ts +117 -0
  280. package/dist/src/controllers/attention/SelfAttentionController.d.ts.map +1 -0
  281. package/dist/src/controllers/attention/SelfAttentionController.js +205 -0
  282. package/dist/src/controllers/attention/SelfAttentionController.js.map +1 -0
  283. package/dist/src/controllers/attention/index.d.ts +24 -0
  284. package/dist/src/controllers/attention/index.d.ts.map +1 -0
  285. package/dist/src/controllers/attention/index.js +20 -0
  286. package/dist/src/controllers/attention/index.js.map +1 -0
  287. package/dist/src/controllers/index.d.ts +15 -28
  288. package/dist/src/controllers/index.d.ts.map +1 -1
  289. package/dist/src/controllers/index.js +11 -19
  290. package/dist/src/controllers/index.js.map +1 -1
  291. package/dist/src/controllers/prerequisites.d.ts +76 -0
  292. package/dist/src/controllers/prerequisites.d.ts.map +1 -0
  293. package/dist/src/controllers/prerequisites.js +235 -0
  294. package/dist/src/controllers/prerequisites.js.map +1 -0
  295. package/dist/src/core/AgentDB.d.ts +33 -19
  296. package/dist/src/core/AgentDB.d.ts.map +1 -1
  297. package/dist/src/core/AgentDB.js +87 -127
  298. package/dist/src/core/AgentDB.js.map +1 -1
  299. package/dist/src/core/QueryCache.d.ts +138 -0
  300. package/dist/src/core/QueryCache.d.ts.map +1 -0
  301. package/dist/src/core/QueryCache.js +309 -0
  302. package/dist/src/core/QueryCache.js.map +1 -0
  303. package/dist/src/db-fallback.d.ts +52 -4
  304. package/dist/src/db-fallback.d.ts.map +1 -1
  305. package/dist/src/db-fallback.js +521 -71
  306. package/dist/src/db-fallback.js.map +1 -1
  307. package/dist/src/db-unified.d.ts.map +1 -1
  308. package/dist/src/db-unified.js +32 -30
  309. package/dist/src/db-unified.js.map +1 -1
  310. package/dist/src/embedding/EmbeddingSpaceIdentity.d.ts +58 -0
  311. package/dist/src/embedding/EmbeddingSpaceIdentity.d.ts.map +1 -0
  312. package/dist/src/embedding/EmbeddingSpaceIdentity.js +137 -0
  313. package/dist/src/embedding/EmbeddingSpaceIdentity.js.map +1 -0
  314. package/dist/src/embedding/index.d.ts +3 -0
  315. package/dist/src/embedding/index.d.ts.map +1 -0
  316. package/dist/src/embedding/index.js +2 -0
  317. package/dist/src/embedding/index.js.map +1 -0
  318. package/dist/src/examples/quic-sync-example.js +2 -2
  319. package/dist/src/examples/quic-sync-example.js.map +1 -1
  320. package/dist/src/governance/MetaHarnessGateway.d.ts +55 -0
  321. package/dist/src/governance/MetaHarnessGateway.d.ts.map +1 -0
  322. package/dist/src/governance/MetaHarnessGateway.js +65 -0
  323. package/dist/src/governance/MetaHarnessGateway.js.map +1 -0
  324. package/dist/src/governance/RvfExperimentBranch.d.ts +65 -0
  325. package/dist/src/governance/RvfExperimentBranch.d.ts.map +1 -0
  326. package/dist/src/governance/RvfExperimentBranch.js +115 -0
  327. package/dist/src/governance/RvfExperimentBranch.js.map +1 -0
  328. package/dist/src/index.d.ts +20 -16
  329. package/dist/src/index.d.ts.map +1 -1
  330. package/dist/src/index.js +44 -12
  331. package/dist/src/index.js.map +1 -1
  332. package/dist/src/mcp/agentdb-mcp-server.js +178 -15
  333. package/dist/src/mcp/agentdb-mcp-server.js.map +1 -1
  334. package/dist/src/mcp/reset-database.d.ts +15 -0
  335. package/dist/src/mcp/reset-database.d.ts.map +1 -0
  336. package/dist/src/mcp/reset-database.js +45 -0
  337. package/dist/src/mcp/reset-database.js.map +1 -0
  338. package/dist/src/model/ModelCacheLoader.d.ts +31 -0
  339. package/dist/src/model/ModelCacheLoader.d.ts.map +1 -0
  340. package/dist/src/model/ModelCacheLoader.js +209 -0
  341. package/dist/src/model/ModelCacheLoader.js.map +1 -0
  342. package/dist/src/observability/index.d.ts +8 -0
  343. package/dist/src/observability/index.d.ts.map +1 -0
  344. package/dist/src/observability/index.js +8 -0
  345. package/dist/src/observability/index.js.map +1 -0
  346. package/dist/src/observability/integration.d.ts +32 -0
  347. package/dist/src/observability/integration.d.ts.map +1 -0
  348. package/dist/src/observability/integration.js +159 -0
  349. package/dist/src/observability/integration.js.map +1 -0
  350. package/dist/src/observability/telemetry.d.ts +137 -0
  351. package/dist/src/observability/telemetry.d.ts.map +1 -0
  352. package/dist/src/observability/telemetry.js +424 -0
  353. package/dist/src/observability/telemetry.js.map +1 -0
  354. package/dist/src/optimizations/BatchOperations.d.ts +47 -0
  355. package/dist/src/optimizations/BatchOperations.d.ts.map +1 -1
  356. package/dist/src/optimizations/BatchOperations.js +189 -35
  357. package/dist/src/optimizations/BatchOperations.js.map +1 -1
  358. package/dist/src/optimizations/Quantization.d.ts +330 -0
  359. package/dist/src/optimizations/Quantization.d.ts.map +1 -0
  360. package/dist/src/optimizations/Quantization.js +793 -0
  361. package/dist/src/optimizations/Quantization.js.map +1 -0
  362. package/dist/src/optimizations/index.d.ts +1 -3
  363. package/dist/src/optimizations/index.d.ts.map +1 -1
  364. package/dist/src/optimizations/index.js +0 -1
  365. package/dist/src/optimizations/index.js.map +1 -1
  366. package/dist/src/quantization/index.d.ts +7 -0
  367. package/dist/src/quantization/index.d.ts.map +1 -0
  368. package/dist/src/quantization/index.js +15 -0
  369. package/dist/src/quantization/index.js.map +1 -0
  370. package/dist/src/quantization/vector-quantization.d.ts +388 -0
  371. package/dist/src/quantization/vector-quantization.d.ts.map +1 -0
  372. package/dist/src/quantization/vector-quantization.js +1132 -0
  373. package/dist/src/quantization/vector-quantization.js.map +1 -0
  374. package/dist/src/schemas/inline.d.ts +3 -0
  375. package/dist/src/schemas/inline.d.ts.map +1 -0
  376. package/dist/src/schemas/inline.js +10 -0
  377. package/dist/src/schemas/inline.js.map +1 -0
  378. package/dist/src/search/HybridSearch.d.ts +311 -0
  379. package/dist/src/search/HybridSearch.d.ts.map +1 -0
  380. package/dist/src/search/HybridSearch.js +713 -0
  381. package/dist/src/search/HybridSearch.js.map +1 -0
  382. package/dist/src/search/index.d.ts +12 -0
  383. package/dist/src/search/index.d.ts.map +1 -0
  384. package/dist/src/search/index.js +16 -0
  385. package/dist/src/search/index.js.map +1 -0
  386. package/dist/src/security/input-validation.d.ts +30 -0
  387. package/dist/src/security/input-validation.d.ts.map +1 -1
  388. package/dist/src/security/input-validation.js +77 -3
  389. package/dist/src/security/input-validation.js.map +1 -1
  390. package/dist/src/security/limits.d.ts.map +1 -1
  391. package/dist/src/security/limits.js +12 -3
  392. package/dist/src/security/limits.js.map +1 -1
  393. package/dist/src/security/mcp-policy.d.ts +17 -0
  394. package/dist/src/security/mcp-policy.d.ts.map +1 -0
  395. package/dist/src/security/mcp-policy.js +90 -0
  396. package/dist/src/security/mcp-policy.js.map +1 -0
  397. package/dist/src/security/path-security.d.ts.map +1 -1
  398. package/dist/src/security/path-security.js +3 -1
  399. package/dist/src/security/path-security.js.map +1 -1
  400. package/dist/src/security/validation.js +3 -3
  401. package/dist/src/security/validation.js.map +1 -1
  402. package/dist/src/services/AttentionService.d.ts +303 -0
  403. package/dist/src/services/AttentionService.d.ts.map +1 -0
  404. package/dist/src/services/AttentionService.js +1165 -0
  405. package/dist/src/services/AttentionService.js.map +1 -0
  406. package/dist/src/services/LLMRouter.d.ts +70 -8
  407. package/dist/src/services/LLMRouter.d.ts.map +1 -1
  408. package/dist/src/services/LLMRouter.js +279 -28
  409. package/dist/src/services/LLMRouter.js.map +1 -1
  410. package/dist/src/services/audit-logger.service.d.ts +168 -0
  411. package/dist/src/services/audit-logger.service.d.ts.map +1 -0
  412. package/dist/src/services/audit-logger.service.js +331 -0
  413. package/dist/src/services/audit-logger.service.js.map +1 -0
  414. package/dist/src/services/enhanced-embeddings.d.ts +271 -0
  415. package/dist/src/services/enhanced-embeddings.d.ts.map +1 -0
  416. package/dist/src/services/enhanced-embeddings.js +1036 -0
  417. package/dist/src/services/enhanced-embeddings.js.map +1 -0
  418. package/dist/src/services/federated-learning.d.ts +172 -0
  419. package/dist/src/services/federated-learning.d.ts.map +1 -0
  420. package/dist/src/services/federated-learning.js +344 -0
  421. package/dist/src/services/federated-learning.js.map +1 -0
  422. package/dist/src/simd/index.d.ts +9 -0
  423. package/dist/src/simd/index.d.ts.map +1 -0
  424. package/dist/src/simd/index.js +27 -0
  425. package/dist/src/simd/index.js.map +1 -0
  426. package/dist/src/simd/simd-vector-ops.d.ts +332 -0
  427. package/dist/src/simd/simd-vector-ops.d.ts.map +1 -0
  428. package/dist/src/simd/simd-vector-ops.js +945 -0
  429. package/dist/src/simd/simd-vector-ops.js.map +1 -0
  430. package/dist/src/types/database.types.d.ts +275 -0
  431. package/dist/src/types/database.types.d.ts.map +1 -0
  432. package/dist/src/types/database.types.js +55 -0
  433. package/dist/src/types/database.types.js.map +1 -0
  434. package/dist/src/types/graph.d.ts +29 -0
  435. package/dist/src/types/graph.d.ts.map +1 -0
  436. package/dist/src/types/graph.js +8 -0
  437. package/dist/src/types/graph.js.map +1 -0
  438. package/dist/src/utils/chalk-fallback.d.ts +3 -0
  439. package/dist/src/utils/chalk-fallback.d.ts.map +1 -0
  440. package/dist/src/utils/chalk-fallback.js +20 -0
  441. package/dist/src/utils/chalk-fallback.js.map +1 -0
  442. package/dist/src/utils/similarity.d.ts +11 -0
  443. package/dist/src/utils/similarity.d.ts.map +1 -0
  444. package/dist/src/utils/similarity.js +25 -0
  445. package/dist/src/utils/similarity.js.map +1 -0
  446. package/dist/src/wasm-loader.d.ts +66 -0
  447. package/dist/src/wasm-loader.d.ts.map +1 -0
  448. package/dist/src/wasm-loader.js +76 -0
  449. package/dist/src/wasm-loader.js.map +1 -0
  450. package/dist/src/wrappers/agentdb-fast.d.ts +140 -0
  451. package/dist/src/wrappers/agentdb-fast.d.ts.map +1 -0
  452. package/dist/src/wrappers/agentdb-fast.js +309 -0
  453. package/dist/src/wrappers/agentdb-fast.js.map +1 -0
  454. package/dist/src/wrappers/attention-fallbacks.d.ts +343 -0
  455. package/dist/src/wrappers/attention-fallbacks.d.ts.map +1 -0
  456. package/dist/src/wrappers/attention-fallbacks.js +1484 -0
  457. package/dist/src/wrappers/attention-fallbacks.js.map +1 -0
  458. package/dist/src/wrappers/attention-native.d.ts +111 -0
  459. package/dist/src/wrappers/attention-native.d.ts.map +1 -0
  460. package/dist/src/wrappers/attention-native.js +273 -0
  461. package/dist/src/wrappers/attention-native.js.map +1 -0
  462. package/dist/src/wrappers/embedding-service.d.ts +117 -0
  463. package/dist/src/wrappers/embedding-service.d.ts.map +1 -0
  464. package/dist/src/wrappers/embedding-service.js +370 -0
  465. package/dist/src/wrappers/embedding-service.js.map +1 -0
  466. package/dist/src/wrappers/gnn-wrapper.d.ts +71 -0
  467. package/dist/src/wrappers/gnn-wrapper.d.ts.map +1 -0
  468. package/dist/src/wrappers/gnn-wrapper.js +236 -0
  469. package/dist/src/wrappers/gnn-wrapper.js.map +1 -0
  470. package/dist/src/wrappers/index.d.ts +48 -0
  471. package/dist/src/wrappers/index.d.ts.map +1 -0
  472. package/dist/src/wrappers/index.js +83 -0
  473. package/dist/src/wrappers/index.js.map +1 -0
  474. package/package.json +130 -80
  475. package/scripts/postinstall.cjs +13 -144
  476. package/dist/agentdb.browser.js +0 -1685
  477. package/dist/agentdb.browser.js.map +0 -7
  478. package/dist/agentdb.browser.min.js +0 -3
  479. package/dist/agentdb.browser.min.js.map +0 -7
  480. package/dist/agentdb.wasm-loader.js +0 -207
  481. package/dist/backends/VectorBackend.d.ts +0 -120
  482. package/dist/backends/VectorBackend.js +0 -14
  483. package/dist/backends/VectorBackend.js.map +0 -1
  484. package/dist/optimizations/RVFOptimizer.d.ts +0 -225
  485. package/dist/optimizations/RVFOptimizer.js +0 -541
  486. package/dist/optimizations/RVFOptimizer.js.map +0 -1
  487. package/dist/simulation/cli.d.ts +0 -9
  488. package/dist/simulation/cli.d.ts.map +0 -1
  489. package/dist/simulation/cli.js +0 -68
  490. package/dist/simulation/cli.js.map +0 -1
  491. package/dist/simulation/runner.d.ts +0 -21
  492. package/dist/simulation/runner.d.ts.map +0 -1
  493. package/dist/simulation/runner.js +0 -241
  494. package/dist/simulation/runner.js.map +0 -1
  495. package/dist/simulation/scenarios/aidefence-integration.d.ts +0 -24
  496. package/dist/simulation/scenarios/aidefence-integration.d.ts.map +0 -1
  497. package/dist/simulation/scenarios/aidefence-integration.js +0 -124
  498. package/dist/simulation/scenarios/aidefence-integration.js.map +0 -1
  499. package/dist/simulation/scenarios/bmssp-integration.d.ts +0 -23
  500. package/dist/simulation/scenarios/bmssp-integration.d.ts.map +0 -1
  501. package/dist/simulation/scenarios/bmssp-integration.js +0 -104
  502. package/dist/simulation/scenarios/bmssp-integration.js.map +0 -1
  503. package/dist/simulation/scenarios/causal-reasoning.d.ts +0 -16
  504. package/dist/simulation/scenarios/causal-reasoning.d.ts.map +0 -1
  505. package/dist/simulation/scenarios/causal-reasoning.js +0 -108
  506. package/dist/simulation/scenarios/causal-reasoning.js.map +0 -1
  507. package/dist/simulation/scenarios/consciousness-explorer.d.ts +0 -25
  508. package/dist/simulation/scenarios/consciousness-explorer.d.ts.map +0 -1
  509. package/dist/simulation/scenarios/consciousness-explorer.js +0 -108
  510. package/dist/simulation/scenarios/consciousness-explorer.js.map +0 -1
  511. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.d.ts +0 -135
  512. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.d.ts.map +0 -1
  513. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.js +0 -158
  514. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.js.map +0 -1
  515. package/dist/simulation/scenarios/domain-examples/index.d.ts +0 -14
  516. package/dist/simulation/scenarios/domain-examples/index.d.ts.map +0 -1
  517. package/dist/simulation/scenarios/domain-examples/index.js +0 -14
  518. package/dist/simulation/scenarios/domain-examples/index.js.map +0 -1
  519. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.d.ts +0 -178
  520. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.d.ts.map +0 -1
  521. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.js +0 -218
  522. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.js.map +0 -1
  523. package/dist/simulation/scenarios/domain-examples/medical-imaging.d.ts +0 -122
  524. package/dist/simulation/scenarios/domain-examples/medical-imaging.d.ts.map +0 -1
  525. package/dist/simulation/scenarios/domain-examples/medical-imaging.js +0 -129
  526. package/dist/simulation/scenarios/domain-examples/medical-imaging.js.map +0 -1
  527. package/dist/simulation/scenarios/domain-examples/robotics-navigation.d.ts +0 -166
  528. package/dist/simulation/scenarios/domain-examples/robotics-navigation.d.ts.map +0 -1
  529. package/dist/simulation/scenarios/domain-examples/robotics-navigation.js +0 -161
  530. package/dist/simulation/scenarios/domain-examples/robotics-navigation.js.map +0 -1
  531. package/dist/simulation/scenarios/domain-examples/scientific-research.d.ts +0 -151
  532. package/dist/simulation/scenarios/domain-examples/scientific-research.d.ts.map +0 -1
  533. package/dist/simulation/scenarios/domain-examples/scientific-research.js +0 -187
  534. package/dist/simulation/scenarios/domain-examples/scientific-research.js.map +0 -1
  535. package/dist/simulation/scenarios/domain-examples/trading-systems.d.ts +0 -102
  536. package/dist/simulation/scenarios/domain-examples/trading-systems.d.ts.map +0 -1
  537. package/dist/simulation/scenarios/domain-examples/trading-systems.js +0 -100
  538. package/dist/simulation/scenarios/domain-examples/trading-systems.js.map +0 -1
  539. package/dist/simulation/scenarios/goalie-integration.d.ts +0 -24
  540. package/dist/simulation/scenarios/goalie-integration.d.ts.map +0 -1
  541. package/dist/simulation/scenarios/goalie-integration.js +0 -121
  542. package/dist/simulation/scenarios/goalie-integration.js.map +0 -1
  543. package/dist/simulation/scenarios/graph-traversal.d.ts +0 -17
  544. package/dist/simulation/scenarios/graph-traversal.d.ts.map +0 -1
  545. package/dist/simulation/scenarios/graph-traversal.js +0 -101
  546. package/dist/simulation/scenarios/graph-traversal.js.map +0 -1
  547. package/dist/simulation/scenarios/latent-space/attention-analysis.d.ts +0 -45
  548. package/dist/simulation/scenarios/latent-space/attention-analysis.d.ts.map +0 -1
  549. package/dist/simulation/scenarios/latent-space/attention-analysis.js +0 -435
  550. package/dist/simulation/scenarios/latent-space/attention-analysis.js.map +0 -1
  551. package/dist/simulation/scenarios/latent-space/clustering-analysis.d.ts +0 -55
  552. package/dist/simulation/scenarios/latent-space/clustering-analysis.d.ts.map +0 -1
  553. package/dist/simulation/scenarios/latent-space/clustering-analysis.js +0 -606
  554. package/dist/simulation/scenarios/latent-space/clustering-analysis.js.map +0 -1
  555. package/dist/simulation/scenarios/latent-space/hnsw-exploration.d.ts +0 -74
  556. package/dist/simulation/scenarios/latent-space/hnsw-exploration.d.ts.map +0 -1
  557. package/dist/simulation/scenarios/latent-space/hnsw-exploration.js +0 -391
  558. package/dist/simulation/scenarios/latent-space/hnsw-exploration.js.map +0 -1
  559. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.d.ts +0 -51
  560. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.d.ts.map +0 -1
  561. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.js +0 -536
  562. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.js.map +0 -1
  563. package/dist/simulation/scenarios/latent-space/index.d.ts +0 -35
  564. package/dist/simulation/scenarios/latent-space/index.d.ts.map +0 -1
  565. package/dist/simulation/scenarios/latent-space/index.js +0 -35
  566. package/dist/simulation/scenarios/latent-space/index.js.map +0 -1
  567. package/dist/simulation/scenarios/latent-space/neural-augmentation.d.ts +0 -52
  568. package/dist/simulation/scenarios/latent-space/neural-augmentation.d.ts.map +0 -1
  569. package/dist/simulation/scenarios/latent-space/neural-augmentation.js +0 -472
  570. package/dist/simulation/scenarios/latent-space/neural-augmentation.js.map +0 -1
  571. package/dist/simulation/scenarios/latent-space/quantum-hybrid.d.ts +0 -53
  572. package/dist/simulation/scenarios/latent-space/quantum-hybrid.d.ts.map +0 -1
  573. package/dist/simulation/scenarios/latent-space/quantum-hybrid.js +0 -391
  574. package/dist/simulation/scenarios/latent-space/quantum-hybrid.js.map +0 -1
  575. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.d.ts +0 -52
  576. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.d.ts.map +0 -1
  577. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.js +0 -514
  578. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.js.map +0 -1
  579. package/dist/simulation/scenarios/latent-space/traversal-optimization.d.ts +0 -53
  580. package/dist/simulation/scenarios/latent-space/traversal-optimization.d.ts.map +0 -1
  581. package/dist/simulation/scenarios/latent-space/traversal-optimization.js +0 -595
  582. package/dist/simulation/scenarios/latent-space/traversal-optimization.js.map +0 -1
  583. package/dist/simulation/scenarios/lean-agentic-swarm.d.ts +0 -18
  584. package/dist/simulation/scenarios/lean-agentic-swarm.d.ts.map +0 -1
  585. package/dist/simulation/scenarios/lean-agentic-swarm.js +0 -132
  586. package/dist/simulation/scenarios/lean-agentic-swarm.js.map +0 -1
  587. package/dist/simulation/scenarios/multi-agent-swarm.d.ts +0 -17
  588. package/dist/simulation/scenarios/multi-agent-swarm.d.ts.map +0 -1
  589. package/dist/simulation/scenarios/multi-agent-swarm.js +0 -111
  590. package/dist/simulation/scenarios/multi-agent-swarm.js.map +0 -1
  591. package/dist/simulation/scenarios/psycho-symbolic-reasoner.d.ts +0 -23
  592. package/dist/simulation/scenarios/psycho-symbolic-reasoner.d.ts.map +0 -1
  593. package/dist/simulation/scenarios/psycho-symbolic-reasoner.js +0 -98
  594. package/dist/simulation/scenarios/psycho-symbolic-reasoner.js.map +0 -1
  595. package/dist/simulation/scenarios/reflexion-learning.d.ts +0 -16
  596. package/dist/simulation/scenarios/reflexion-learning.d.ts.map +0 -1
  597. package/dist/simulation/scenarios/reflexion-learning.js +0 -98
  598. package/dist/simulation/scenarios/reflexion-learning.js.map +0 -1
  599. package/dist/simulation/scenarios/research-swarm.d.ts +0 -24
  600. package/dist/simulation/scenarios/research-swarm.d.ts.map +0 -1
  601. package/dist/simulation/scenarios/research-swarm.js +0 -146
  602. package/dist/simulation/scenarios/research-swarm.js.map +0 -1
  603. package/dist/simulation/scenarios/skill-evolution.d.ts +0 -16
  604. package/dist/simulation/scenarios/skill-evolution.d.ts.map +0 -1
  605. package/dist/simulation/scenarios/skill-evolution.js +0 -109
  606. package/dist/simulation/scenarios/skill-evolution.js.map +0 -1
  607. package/dist/simulation/scenarios/stock-market-emergence.d.ts +0 -33
  608. package/dist/simulation/scenarios/stock-market-emergence.d.ts.map +0 -1
  609. package/dist/simulation/scenarios/stock-market-emergence.js +0 -246
  610. package/dist/simulation/scenarios/stock-market-emergence.js.map +0 -1
  611. package/dist/simulation/scenarios/strange-loops.d.ts +0 -18
  612. package/dist/simulation/scenarios/strange-loops.d.ts.map +0 -1
  613. package/dist/simulation/scenarios/strange-loops.js +0 -133
  614. package/dist/simulation/scenarios/strange-loops.js.map +0 -1
  615. package/dist/simulation/scenarios/sublinear-solver.d.ts +0 -22
  616. package/dist/simulation/scenarios/sublinear-solver.d.ts.map +0 -1
  617. package/dist/simulation/scenarios/sublinear-solver.js +0 -82
  618. package/dist/simulation/scenarios/sublinear-solver.js.map +0 -1
  619. package/dist/simulation/scenarios/temporal-lead-solver.d.ts +0 -23
  620. package/dist/simulation/scenarios/temporal-lead-solver.d.ts.map +0 -1
  621. package/dist/simulation/scenarios/temporal-lead-solver.js +0 -90
  622. package/dist/simulation/scenarios/temporal-lead-solver.js.map +0 -1
  623. package/dist/simulation/scenarios/voting-system-consensus.d.ts +0 -27
  624. package/dist/simulation/scenarios/voting-system-consensus.d.ts.map +0 -1
  625. package/dist/simulation/scenarios/voting-system-consensus.js +0 -175
  626. package/dist/simulation/scenarios/voting-system-consensus.js.map +0 -1
  627. package/dist/simulation/types.d.ts +0 -162
  628. package/dist/simulation/types.d.ts.map +0 -1
  629. package/dist/simulation/types.js +0 -5
  630. package/dist/simulation/types.js.map +0 -1
  631. package/dist/simulation/utils/PerformanceOptimizer.d.ts +0 -115
  632. package/dist/simulation/utils/PerformanceOptimizer.d.ts.map +0 -1
  633. package/dist/simulation/utils/PerformanceOptimizer.js +0 -223
  634. package/dist/simulation/utils/PerformanceOptimizer.js.map +0 -1
  635. package/dist/src/backends/index.cjs +0 -6
  636. package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts +0 -93
  637. package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts.map +0 -1
  638. package/dist/src/backends/ruvector/GuardedVectorBackend.js +0 -182
  639. package/dist/src/backends/ruvector/GuardedVectorBackend.js.map +0 -1
  640. package/dist/src/consensus/RaftConsensus.d.ts +0 -220
  641. package/dist/src/consensus/RaftConsensus.d.ts.map +0 -1
  642. package/dist/src/consensus/RaftConsensus.js +0 -762
  643. package/dist/src/consensus/RaftConsensus.js.map +0 -1
  644. package/dist/src/controllers/HierarchicalMemory.d.ts +0 -197
  645. package/dist/src/controllers/HierarchicalMemory.d.ts.map +0 -1
  646. package/dist/src/controllers/HierarchicalMemory.js +0 -519
  647. package/dist/src/controllers/HierarchicalMemory.js.map +0 -1
  648. package/dist/src/controllers/MemoryConsolidation.d.ts +0 -142
  649. package/dist/src/controllers/MemoryConsolidation.d.ts.map +0 -1
  650. package/dist/src/controllers/MemoryConsolidation.js +0 -479
  651. package/dist/src/controllers/MemoryConsolidation.js.map +0 -1
  652. package/dist/src/controllers/QUICConnection.d.ts +0 -122
  653. package/dist/src/controllers/QUICConnection.d.ts.map +0 -1
  654. package/dist/src/controllers/QUICConnection.js +0 -329
  655. package/dist/src/controllers/QUICConnection.js.map +0 -1
  656. package/dist/src/controllers/QUICConnectionPool.d.ts +0 -83
  657. package/dist/src/controllers/QUICConnectionPool.d.ts.map +0 -1
  658. package/dist/src/controllers/QUICConnectionPool.js +0 -256
  659. package/dist/src/controllers/QUICConnectionPool.js.map +0 -1
  660. package/dist/src/controllers/QUICStreamManager.d.ts +0 -114
  661. package/dist/src/controllers/QUICStreamManager.d.ts.map +0 -1
  662. package/dist/src/controllers/QUICStreamManager.js +0 -267
  663. package/dist/src/controllers/QUICStreamManager.js.map +0 -1
  664. package/dist/src/controllers/StreamingEmbeddingService.d.ts +0 -82
  665. package/dist/src/controllers/StreamingEmbeddingService.d.ts.map +0 -1
  666. package/dist/src/controllers/StreamingEmbeddingService.js +0 -243
  667. package/dist/src/controllers/StreamingEmbeddingService.js.map +0 -1
  668. package/dist/src/controllers/index.cjs +0 -6
  669. package/dist/src/coordination/MultiDatabaseCoordinator.d.ts +0 -348
  670. package/dist/src/coordination/MultiDatabaseCoordinator.d.ts.map +0 -1
  671. package/dist/src/coordination/MultiDatabaseCoordinator.js +0 -803
  672. package/dist/src/coordination/MultiDatabaseCoordinator.js.map +0 -1
  673. package/dist/src/coordination/index.d.ts +0 -10
  674. package/dist/src/coordination/index.d.ts.map +0 -1
  675. package/dist/src/coordination/index.js +0 -10
  676. package/dist/src/coordination/index.js.map +0 -1
  677. package/dist/src/index.cjs +0 -6
  678. package/dist/src/optimizations/RVFOptimizer.d.ts +0 -226
  679. package/dist/src/optimizations/RVFOptimizer.d.ts.map +0 -1
  680. package/dist/src/optimizations/RVFOptimizer.js +0 -541
  681. package/dist/src/optimizations/RVFOptimizer.js.map +0 -1
  682. package/dist/src/security/AttestationLog.d.ts +0 -70
  683. package/dist/src/security/AttestationLog.d.ts.map +0 -1
  684. package/dist/src/security/AttestationLog.js +0 -174
  685. package/dist/src/security/AttestationLog.js.map +0 -1
  686. package/dist/src/security/MutationGuard.d.ts +0 -83
  687. package/dist/src/security/MutationGuard.d.ts.map +0 -1
  688. package/dist/src/security/MutationGuard.js +0 -364
  689. package/dist/src/security/MutationGuard.js.map +0 -1
  690. package/dist/src/security/index.cjs +0 -6
  691. package/dist/src/security/index.d.ts +0 -15
  692. package/dist/src/security/index.d.ts.map +0 -1
  693. package/dist/src/security/index.js +0 -18
  694. package/dist/src/security/index.js.map +0 -1
  695. package/dist/src/services/GNNService.d.ts +0 -172
  696. package/dist/src/services/GNNService.d.ts.map +0 -1
  697. package/dist/src/services/GNNService.js +0 -612
  698. package/dist/src/services/GNNService.js.map +0 -1
  699. package/dist/src/services/GraphTransformerService.d.ts +0 -80
  700. package/dist/src/services/GraphTransformerService.d.ts.map +0 -1
  701. package/dist/src/services/GraphTransformerService.js +0 -369
  702. package/dist/src/services/GraphTransformerService.js.map +0 -1
  703. package/dist/src/services/SemanticRouter.d.ts +0 -83
  704. package/dist/src/services/SemanticRouter.d.ts.map +0 -1
  705. package/dist/src/services/SemanticRouter.js +0 -160
  706. package/dist/src/services/SemanticRouter.js.map +0 -1
  707. package/dist/src/services/SonaTrajectoryService.d.ts +0 -224
  708. package/dist/src/services/SonaTrajectoryService.d.ts.map +0 -1
  709. package/dist/src/services/SonaTrajectoryService.js +0 -539
  710. package/dist/src/services/SonaTrajectoryService.js.map +0 -1
  711. package/dist/src/utils/LegacyAttentionAdapter.d.ts +0 -93
  712. package/dist/src/utils/LegacyAttentionAdapter.d.ts.map +0 -1
  713. package/dist/src/utils/LegacyAttentionAdapter.js +0 -241
  714. package/dist/src/utils/LegacyAttentionAdapter.js.map +0 -1
  715. package/dist/src/utils/vector-math.d.ts +0 -29
  716. package/dist/src/utils/vector-math.d.ts.map +0 -1
  717. package/dist/src/utils/vector-math.js +0 -66
  718. package/dist/src/utils/vector-math.js.map +0 -1
@@ -0,0 +1,713 @@
1
+ /**
2
+ * HybridSearch - Combined Vector + Keyword Search for AgentDB
3
+ *
4
+ * Features:
5
+ * - BM25 keyword search with inverted index
6
+ * - Vector similarity search integration
7
+ * - Reciprocal Rank Fusion (RRF) for result combination
8
+ * - Linear and max fusion methods
9
+ * - Configurable weights and fusion strategies
10
+ * - Metadata filtering support
11
+ *
12
+ * @module search/HybridSearch
13
+ */
14
+ import { searchVectors } from '../backends/VectorBackend.js';
15
+ // ============================================================================
16
+ // Stopwords
17
+ // ============================================================================
18
+ /**
19
+ * Common English stopwords to filter out during tokenization
20
+ */
21
+ const STOPWORDS = new Set([
22
+ 'a', 'an', 'the', 'and', 'or', 'but', 'in', 'on', 'at', 'to', 'for',
23
+ 'of', 'with', 'by', 'from', 'as', 'is', 'was', 'are', 'were', 'been',
24
+ 'be', 'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could',
25
+ 'should', 'may', 'might', 'must', 'shall', 'can', 'need', 'dare', 'ought',
26
+ 'used', 'it', 'its', 'this', 'that', 'these', 'those', 'i', 'you', 'he',
27
+ 'she', 'we', 'they', 'me', 'him', 'her', 'us', 'them', 'my', 'your',
28
+ 'his', 'our', 'their', 'mine', 'yours', 'hers', 'ours', 'theirs',
29
+ 'what', 'which', 'who', 'whom', 'when', 'where', 'why', 'how',
30
+ 'all', 'each', 'every', 'both', 'few', 'more', 'most', 'other', 'some',
31
+ 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too',
32
+ 'very', 'just', 'also', 'now', 'here', 'there', 'then', 'once',
33
+ 'if', 'else', 'because', 'although', 'though', 'while', 'unless',
34
+ 'until', 'after', 'before', 'since', 'during', 'about', 'into',
35
+ 'through', 'between', 'under', 'over', 'above', 'below', 'up', 'down',
36
+ 'out', 'off', 'again', 'further', 'any', 'even', 'still',
37
+ ]);
38
+ // ============================================================================
39
+ // KeywordIndex Class - BM25 Inverted Index
40
+ // ============================================================================
41
+ /**
42
+ * KeywordIndex - Inverted index with BM25 scoring for text search
43
+ *
44
+ * Implements the BM25 ranking function for document retrieval:
45
+ * score(D,Q) = SUM(IDF(qi) * (f(qi,D) * (k1 + 1)) / (f(qi,D) + k1 * (1 - b + b * |D|/avgdl)))
46
+ *
47
+ * Where:
48
+ * - IDF(qi) = log((N - n(qi) + 0.5) / (n(qi) + 0.5) + 1)
49
+ * - f(qi,D) = term frequency of qi in document D
50
+ * - |D| = document length
51
+ * - avgdl = average document length
52
+ * - k1, b = tuning parameters
53
+ */
54
+ export class KeywordIndex {
55
+ /** Inverted index: term -> posting list */
56
+ invertedIndex = new Map();
57
+ /** Document store: id -> document entry */
58
+ documents = new Map();
59
+ /** Total number of documents */
60
+ documentCount = 0;
61
+ /** Sum of all document lengths (for average calculation) */
62
+ totalDocumentLength = 0;
63
+ /** BM25 configuration */
64
+ config;
65
+ /** Custom stopwords (merged with defaults) */
66
+ stopwords;
67
+ constructor(config, customStopwords) {
68
+ this.config = {
69
+ k1: 1.2,
70
+ b: 0.75,
71
+ ...config,
72
+ };
73
+ this.stopwords = new Set([...STOPWORDS]);
74
+ if (customStopwords) {
75
+ customStopwords.forEach((word) => this.stopwords.add(word.toLowerCase()));
76
+ }
77
+ }
78
+ /**
79
+ * Tokenize text into terms
80
+ * - Lowercases text
81
+ * - Splits on non-alphanumeric characters
82
+ * - Removes stopwords
83
+ * - Filters short tokens (< 2 chars)
84
+ */
85
+ tokenize(text) {
86
+ if (!text || typeof text !== 'string') {
87
+ return [];
88
+ }
89
+ return text
90
+ .toLowerCase()
91
+ .split(/[^a-z0-9]+/)
92
+ .filter((token) => token.length >= 2 && !this.stopwords.has(token));
93
+ }
94
+ /**
95
+ * Calculate term frequencies for a list of tokens
96
+ */
97
+ calculateTermFrequencies(tokens) {
98
+ const frequencies = new Map();
99
+ for (const token of tokens) {
100
+ frequencies.set(token, (frequencies.get(token) || 0) + 1);
101
+ }
102
+ return frequencies;
103
+ }
104
+ /**
105
+ * Add a document to the index
106
+ *
107
+ * @param id - Unique document identifier
108
+ * @param text - Document text content
109
+ * @param metadata - Optional metadata to associate with the document
110
+ */
111
+ add(id, text, metadata) {
112
+ // Remove existing document if present (update case)
113
+ if (this.documents.has(id)) {
114
+ this.remove(id);
115
+ }
116
+ const tokens = this.tokenize(text);
117
+ const termFrequencies = this.calculateTermFrequencies(tokens);
118
+ // Create document entry
119
+ const docEntry = {
120
+ id,
121
+ termFrequencies,
122
+ length: tokens.length,
123
+ metadata,
124
+ };
125
+ this.documents.set(id, docEntry);
126
+ this.documentCount++;
127
+ this.totalDocumentLength += tokens.length;
128
+ // Update inverted index
129
+ for (const term of termFrequencies.keys()) {
130
+ let termEntry = this.invertedIndex.get(term);
131
+ if (!termEntry) {
132
+ termEntry = {
133
+ documentFrequency: 0,
134
+ postings: new Set(),
135
+ };
136
+ this.invertedIndex.set(term, termEntry);
137
+ }
138
+ if (!termEntry.postings.has(id)) {
139
+ termEntry.documentFrequency++;
140
+ termEntry.postings.add(id);
141
+ }
142
+ }
143
+ }
144
+ /**
145
+ * Remove a document from the index
146
+ *
147
+ * @param id - Document ID to remove
148
+ * @returns true if document was removed, false if not found
149
+ */
150
+ remove(id) {
151
+ const docEntry = this.documents.get(id);
152
+ if (!docEntry) {
153
+ return false;
154
+ }
155
+ // Update inverted index
156
+ for (const term of docEntry.termFrequencies.keys()) {
157
+ const termEntry = this.invertedIndex.get(term);
158
+ if (termEntry) {
159
+ termEntry.postings.delete(id);
160
+ termEntry.documentFrequency--;
161
+ // Remove term if no documents contain it
162
+ if (termEntry.documentFrequency === 0) {
163
+ this.invertedIndex.delete(term);
164
+ }
165
+ }
166
+ }
167
+ // Update statistics
168
+ this.totalDocumentLength -= docEntry.length;
169
+ this.documentCount--;
170
+ // Remove document
171
+ this.documents.delete(id);
172
+ return true;
173
+ }
174
+ /**
175
+ * Calculate IDF (Inverse Document Frequency) for a term
176
+ * Using BM25 IDF formula: log((N - n(q) + 0.5) / (n(q) + 0.5) + 1)
177
+ */
178
+ calculateIDF(documentFrequency) {
179
+ const N = this.documentCount;
180
+ const n = documentFrequency;
181
+ // BM25 IDF with smoothing
182
+ return Math.log((N - n + 0.5) / (n + 0.5) + 1);
183
+ }
184
+ /**
185
+ * Calculate BM25 score for a document given query terms
186
+ */
187
+ calculateBM25Score(docEntry, queryTerms) {
188
+ const { k1, b } = this.config;
189
+ const avgdl = this.totalDocumentLength / Math.max(this.documentCount, 1);
190
+ const docLength = docEntry.length;
191
+ let score = 0;
192
+ for (const term of queryTerms) {
193
+ const termEntry = this.invertedIndex.get(term);
194
+ if (!termEntry)
195
+ continue;
196
+ const tf = docEntry.termFrequencies.get(term) || 0;
197
+ if (tf === 0)
198
+ continue;
199
+ const idf = this.calculateIDF(termEntry.documentFrequency);
200
+ // BM25 scoring formula
201
+ const numerator = tf * (k1 + 1);
202
+ const denominator = tf + k1 * (1 - b + b * (docLength / avgdl));
203
+ const termScore = idf * (numerator / denominator);
204
+ score += termScore;
205
+ }
206
+ return score;
207
+ }
208
+ /**
209
+ * Search the index for documents matching the query
210
+ *
211
+ * @param query - Search query text
212
+ * @param limit - Maximum number of results
213
+ * @param filter - Optional metadata filter
214
+ * @returns Array of search results sorted by score (descending)
215
+ */
216
+ search(query, limit, filter) {
217
+ const queryTerms = this.tokenize(query);
218
+ if (queryTerms.length === 0) {
219
+ return [];
220
+ }
221
+ // Find candidate documents (union of postings lists)
222
+ const candidateIds = new Set();
223
+ for (const term of queryTerms) {
224
+ const termEntry = this.invertedIndex.get(term);
225
+ if (termEntry) {
226
+ for (const docId of termEntry.postings) {
227
+ candidateIds.add(docId);
228
+ }
229
+ }
230
+ }
231
+ // Score candidates
232
+ const results = [];
233
+ for (const docId of candidateIds) {
234
+ const docEntry = this.documents.get(docId);
235
+ if (!docEntry)
236
+ continue;
237
+ // Apply metadata filter
238
+ if (filter && !this.matchesFilter(docEntry.metadata, filter)) {
239
+ continue;
240
+ }
241
+ const score = this.calculateBM25Score(docEntry, queryTerms);
242
+ results.push({
243
+ id: docId,
244
+ score,
245
+ metadata: docEntry.metadata,
246
+ });
247
+ }
248
+ // Sort by score (descending) and limit
249
+ results.sort((a, b) => b.score - a.score);
250
+ return results.slice(0, limit);
251
+ }
252
+ /**
253
+ * Check if document metadata matches the filter criteria
254
+ */
255
+ matchesFilter(metadata, filter) {
256
+ if (!metadata)
257
+ return false;
258
+ for (const [key, value] of Object.entries(filter)) {
259
+ if (metadata[key] !== value) {
260
+ return false;
261
+ }
262
+ }
263
+ return true;
264
+ }
265
+ /**
266
+ * Get index statistics
267
+ */
268
+ getStats() {
269
+ return {
270
+ documentCount: this.documentCount,
271
+ termCount: this.invertedIndex.size,
272
+ avgDocumentLength: this.documentCount > 0
273
+ ? this.totalDocumentLength / this.documentCount
274
+ : 0,
275
+ k1: this.config.k1,
276
+ b: this.config.b,
277
+ };
278
+ }
279
+ /**
280
+ * Update BM25 parameters
281
+ */
282
+ setConfig(config) {
283
+ this.config = { ...this.config, ...config };
284
+ }
285
+ /**
286
+ * Clear the entire index
287
+ */
288
+ clear() {
289
+ this.invertedIndex.clear();
290
+ this.documents.clear();
291
+ this.documentCount = 0;
292
+ this.totalDocumentLength = 0;
293
+ }
294
+ /**
295
+ * Check if a document exists in the index
296
+ */
297
+ has(id) {
298
+ return this.documents.has(id);
299
+ }
300
+ /**
301
+ * Get document count
302
+ */
303
+ size() {
304
+ return this.documentCount;
305
+ }
306
+ /**
307
+ * Add stopwords dynamically
308
+ */
309
+ addStopwords(words) {
310
+ words.forEach((word) => this.stopwords.add(word.toLowerCase()));
311
+ }
312
+ /**
313
+ * Remove stopwords dynamically
314
+ */
315
+ removeStopwords(words) {
316
+ words.forEach((word) => this.stopwords.delete(word.toLowerCase()));
317
+ }
318
+ /**
319
+ * Get all indexed terms (for debugging/analysis)
320
+ */
321
+ getTerms() {
322
+ return Array.from(this.invertedIndex.keys());
323
+ }
324
+ /**
325
+ * Get document frequency for a term
326
+ */
327
+ getDocumentFrequency(term) {
328
+ const termEntry = this.invertedIndex.get(term.toLowerCase());
329
+ return termEntry?.documentFrequency || 0;
330
+ }
331
+ }
332
+ // ============================================================================
333
+ // HybridSearch Class
334
+ // ============================================================================
335
+ /**
336
+ * HybridSearch - Combines vector similarity and keyword search
337
+ *
338
+ * Supports multiple fusion strategies:
339
+ * - RRF (Reciprocal Rank Fusion): Robust rank-based fusion
340
+ * - Linear: Weighted score combination
341
+ * - Max: Take maximum score from either source
342
+ *
343
+ * Usage:
344
+ * ```typescript
345
+ * const hybrid = new HybridSearch(vectorBackend, keywordIndex);
346
+ *
347
+ * // Combined search
348
+ * const results = await hybrid.search(
349
+ * { text: "machine learning", vector: embedding },
350
+ * { limit: 10, vectorWeight: 0.7, keywordWeight: 0.3 }
351
+ * );
352
+ *
353
+ * // Vector-only search
354
+ * const vectorResults = await hybrid.search(
355
+ * { vector: embedding },
356
+ * { limit: 10 }
357
+ * );
358
+ *
359
+ * // Keyword-only search
360
+ * const keywordResults = await hybrid.search(
361
+ * { text: "neural networks" },
362
+ * { limit: 10 }
363
+ * );
364
+ * ```
365
+ */
366
+ export class HybridSearch {
367
+ vectorBackend;
368
+ keywordIndex;
369
+ constructor(vectorBackend, keywordIndex) {
370
+ this.vectorBackend = vectorBackend;
371
+ this.keywordIndex = keywordIndex;
372
+ }
373
+ /**
374
+ * Perform hybrid search combining vector and keyword results
375
+ *
376
+ * @param query - Query object containing text and/or vector
377
+ * @param options - Search options including weights and fusion method
378
+ * @returns Combined search results
379
+ */
380
+ async search(query, options) {
381
+ const { limit, vectorWeight = 0.7, keywordWeight = 0.3, filter, fusionMethod = 'rrf', rrfK = 60, threshold, efSearch, } = options;
382
+ // Validate weights
383
+ if (vectorWeight < 0 || keywordWeight < 0) {
384
+ throw new Error('Weights must be non-negative');
385
+ }
386
+ // Normalize weights
387
+ const totalWeight = vectorWeight + keywordWeight;
388
+ const normalizedVectorWeight = vectorWeight / totalWeight;
389
+ const normalizedKeywordWeight = keywordWeight / totalWeight;
390
+ // Collect results from both sources
391
+ let vectorResults = [];
392
+ let keywordResults = [];
393
+ // Perform vector search if vector provided
394
+ if (query.vector) {
395
+ const searchOptions = {
396
+ filter,
397
+ efSearch,
398
+ };
399
+ // Request more results than limit for better fusion
400
+ vectorResults = await searchVectors(this.vectorBackend, query.vector, Math.min(limit * 3, 1000), searchOptions);
401
+ }
402
+ // Perform keyword search if text provided
403
+ if (query.text) {
404
+ // Request more results than limit for better fusion
405
+ keywordResults = this.keywordIndex.search(query.text, Math.min(limit * 3, 1000), filter);
406
+ }
407
+ // If only one type of search was performed, return those results
408
+ if (!query.vector && query.text) {
409
+ return this.normalizeKeywordResults(keywordResults, limit, threshold);
410
+ }
411
+ if (query.vector && !query.text) {
412
+ return this.normalizeVectorResults(vectorResults, limit, threshold);
413
+ }
414
+ // Combine results using fusion method
415
+ let fusedResults;
416
+ switch (fusionMethod) {
417
+ case 'rrf':
418
+ fusedResults = this.reciprocalRankFusion(vectorResults, keywordResults, normalizedVectorWeight, normalizedKeywordWeight, rrfK);
419
+ break;
420
+ case 'linear':
421
+ fusedResults = this.linearFusion(vectorResults, keywordResults, normalizedVectorWeight, normalizedKeywordWeight);
422
+ break;
423
+ case 'max':
424
+ fusedResults = this.maxFusion(vectorResults, keywordResults);
425
+ break;
426
+ default:
427
+ throw new Error(`Unknown fusion method: ${fusionMethod}`);
428
+ }
429
+ // Apply threshold and limit
430
+ if (threshold !== undefined) {
431
+ fusedResults = fusedResults.filter((r) => r.score >= threshold);
432
+ }
433
+ return fusedResults.slice(0, limit);
434
+ }
435
+ /**
436
+ * Reciprocal Rank Fusion (RRF)
437
+ *
438
+ * Combines results based on their ranks rather than scores.
439
+ * RRF(d) = SUM(1 / (k + rank(d)))
440
+ *
441
+ * This is robust to different score distributions between sources.
442
+ */
443
+ reciprocalRankFusion(vectorResults, keywordResults, vectorWeight, keywordWeight, k) {
444
+ const scoreMap = new Map();
445
+ // Process vector results
446
+ vectorResults.forEach((result, index) => {
447
+ const rank = index + 1;
448
+ const rrfContribution = vectorWeight / (k + rank);
449
+ scoreMap.set(result.id, {
450
+ rrfScore: rrfContribution,
451
+ vectorScore: result.similarity,
452
+ vectorRank: rank,
453
+ metadata: result.metadata,
454
+ });
455
+ });
456
+ // Process keyword results
457
+ keywordResults.forEach((result, index) => {
458
+ const rank = index + 1;
459
+ const rrfContribution = keywordWeight / (k + rank);
460
+ const existing = scoreMap.get(result.id);
461
+ if (existing) {
462
+ existing.rrfScore += rrfContribution;
463
+ existing.keywordScore = result.score;
464
+ existing.keywordRank = rank;
465
+ // Merge metadata if not already present
466
+ if (!existing.metadata && result.metadata) {
467
+ existing.metadata = result.metadata;
468
+ }
469
+ }
470
+ else {
471
+ scoreMap.set(result.id, {
472
+ rrfScore: rrfContribution,
473
+ keywordScore: result.score,
474
+ keywordRank: rank,
475
+ metadata: result.metadata,
476
+ });
477
+ }
478
+ });
479
+ // Convert to results array
480
+ const results = [];
481
+ for (const [id, data] of scoreMap) {
482
+ const hasVector = data.vectorScore !== undefined;
483
+ const hasKeyword = data.keywordScore !== undefined;
484
+ results.push({
485
+ id,
486
+ score: data.rrfScore,
487
+ vectorScore: data.vectorScore,
488
+ keywordScore: data.keywordScore,
489
+ metadata: data.metadata,
490
+ source: hasVector && hasKeyword ? 'both' : hasVector ? 'vector' : 'keyword',
491
+ });
492
+ }
493
+ // Sort by RRF score (descending)
494
+ results.sort((a, b) => b.score - a.score);
495
+ // Normalize scores to 0-1 range
496
+ if (results.length > 0) {
497
+ const maxScore = results[0].score;
498
+ for (const result of results) {
499
+ result.score = result.score / maxScore;
500
+ }
501
+ }
502
+ return results;
503
+ }
504
+ /**
505
+ * Linear Fusion
506
+ *
507
+ * Combines normalized scores linearly:
508
+ * score(d) = vectorWeight * vectorScore(d) + keywordWeight * keywordScore(d)
509
+ */
510
+ linearFusion(vectorResults, keywordResults, vectorWeight, keywordWeight) {
511
+ // Normalize keyword scores to 0-1
512
+ const maxKeywordScore = keywordResults.length > 0
513
+ ? Math.max(...keywordResults.map((r) => r.score))
514
+ : 1;
515
+ const normalizedKeywordScores = new Map();
516
+ for (const result of keywordResults) {
517
+ normalizedKeywordScores.set(result.id, {
518
+ score: maxKeywordScore > 0 ? result.score / maxKeywordScore : 0,
519
+ metadata: result.metadata,
520
+ });
521
+ }
522
+ // Create vector score map
523
+ const vectorScores = new Map();
524
+ for (const result of vectorResults) {
525
+ vectorScores.set(result.id, {
526
+ score: result.similarity,
527
+ metadata: result.metadata,
528
+ });
529
+ }
530
+ // Combine all unique IDs
531
+ const allIds = new Set([
532
+ ...vectorScores.keys(),
533
+ ...normalizedKeywordScores.keys(),
534
+ ]);
535
+ // Calculate combined scores
536
+ const results = [];
537
+ for (const id of allIds) {
538
+ const vectorData = vectorScores.get(id);
539
+ const keywordData = normalizedKeywordScores.get(id);
540
+ const vScore = vectorData?.score || 0;
541
+ const kScore = keywordData?.score || 0;
542
+ const combinedScore = vectorWeight * vScore + keywordWeight * kScore;
543
+ const hasVector = vectorData !== undefined;
544
+ const hasKeyword = keywordData !== undefined;
545
+ results.push({
546
+ id,
547
+ score: combinedScore,
548
+ vectorScore: vectorData?.score,
549
+ keywordScore: keywordData?.score,
550
+ metadata: vectorData?.metadata || keywordData?.metadata,
551
+ source: hasVector && hasKeyword ? 'both' : hasVector ? 'vector' : 'keyword',
552
+ });
553
+ }
554
+ // Sort by combined score (descending)
555
+ results.sort((a, b) => b.score - a.score);
556
+ return results;
557
+ }
558
+ /**
559
+ * Max Fusion
560
+ *
561
+ * Takes the maximum normalized score from either source.
562
+ * score(d) = max(vectorScore(d), keywordScore(d))
563
+ */
564
+ maxFusion(vectorResults, keywordResults) {
565
+ // Normalize keyword scores to 0-1
566
+ const maxKeywordScore = keywordResults.length > 0
567
+ ? Math.max(...keywordResults.map((r) => r.score))
568
+ : 1;
569
+ const scoreMap = new Map();
570
+ // Process vector results
571
+ for (const result of vectorResults) {
572
+ scoreMap.set(result.id, {
573
+ maxScore: result.similarity,
574
+ vectorScore: result.similarity,
575
+ metadata: result.metadata,
576
+ });
577
+ }
578
+ // Process keyword results
579
+ for (const result of keywordResults) {
580
+ const normalizedScore = maxKeywordScore > 0 ? result.score / maxKeywordScore : 0;
581
+ const existing = scoreMap.get(result.id);
582
+ if (existing) {
583
+ existing.keywordScore = normalizedScore;
584
+ existing.maxScore = Math.max(existing.maxScore, normalizedScore);
585
+ if (!existing.metadata && result.metadata) {
586
+ existing.metadata = result.metadata;
587
+ }
588
+ }
589
+ else {
590
+ scoreMap.set(result.id, {
591
+ maxScore: normalizedScore,
592
+ keywordScore: normalizedScore,
593
+ metadata: result.metadata,
594
+ });
595
+ }
596
+ }
597
+ // Convert to results array
598
+ const results = [];
599
+ for (const [id, data] of scoreMap) {
600
+ const hasVector = data.vectorScore !== undefined;
601
+ const hasKeyword = data.keywordScore !== undefined;
602
+ results.push({
603
+ id,
604
+ score: data.maxScore,
605
+ vectorScore: data.vectorScore,
606
+ keywordScore: data.keywordScore,
607
+ metadata: data.metadata,
608
+ source: hasVector && hasKeyword ? 'both' : hasVector ? 'vector' : 'keyword',
609
+ });
610
+ }
611
+ // Sort by max score (descending)
612
+ results.sort((a, b) => b.score - a.score);
613
+ return results;
614
+ }
615
+ /**
616
+ * Normalize vector-only results to HybridSearchResult format
617
+ */
618
+ normalizeVectorResults(results, limit, threshold) {
619
+ let normalized = results.map((r) => ({
620
+ id: r.id,
621
+ score: r.similarity,
622
+ vectorScore: r.similarity,
623
+ metadata: r.metadata,
624
+ source: 'vector',
625
+ }));
626
+ if (threshold !== undefined) {
627
+ normalized = normalized.filter((r) => r.score >= threshold);
628
+ }
629
+ return normalized.slice(0, limit);
630
+ }
631
+ /**
632
+ * Normalize keyword-only results to HybridSearchResult format
633
+ */
634
+ normalizeKeywordResults(results, limit, threshold) {
635
+ // Normalize scores to 0-1
636
+ const maxScore = results.length > 0
637
+ ? Math.max(...results.map((r) => r.score))
638
+ : 1;
639
+ let normalized = results.map((r) => ({
640
+ id: r.id,
641
+ score: maxScore > 0 ? r.score / maxScore : 0,
642
+ keywordScore: maxScore > 0 ? r.score / maxScore : 0,
643
+ metadata: r.metadata,
644
+ source: 'keyword',
645
+ }));
646
+ if (threshold !== undefined) {
647
+ normalized = normalized.filter((r) => r.score >= threshold);
648
+ }
649
+ return normalized.slice(0, limit);
650
+ }
651
+ /**
652
+ * Add a document to the keyword index
653
+ * (Convenience method - delegates to KeywordIndex)
654
+ */
655
+ addDocument(id, text, metadata) {
656
+ this.keywordIndex.add(id, text, metadata);
657
+ }
658
+ /**
659
+ * Remove a document from the keyword index
660
+ * (Convenience method - delegates to KeywordIndex)
661
+ */
662
+ removeDocument(id) {
663
+ return this.keywordIndex.remove(id);
664
+ }
665
+ /**
666
+ * Get statistics about the hybrid search system
667
+ */
668
+ getStats() {
669
+ const vectorStats = this.vectorBackend.getStats();
670
+ const keywordStats = this.keywordIndex.getStats();
671
+ return {
672
+ vector: {
673
+ count: vectorStats.count,
674
+ dimension: vectorStats.dimension,
675
+ backend: vectorStats.backend,
676
+ },
677
+ keyword: {
678
+ documentCount: keywordStats.documentCount,
679
+ termCount: keywordStats.termCount,
680
+ avgDocumentLength: keywordStats.avgDocumentLength,
681
+ },
682
+ };
683
+ }
684
+ /**
685
+ * Get the underlying vector backend
686
+ */
687
+ getVectorBackend() {
688
+ return this.vectorBackend;
689
+ }
690
+ /**
691
+ * Get the underlying keyword index
692
+ */
693
+ getKeywordIndex() {
694
+ return this.keywordIndex;
695
+ }
696
+ }
697
+ // ============================================================================
698
+ // Factory Functions
699
+ // ============================================================================
700
+ /**
701
+ * Create a new KeywordIndex with default configuration
702
+ */
703
+ export function createKeywordIndex(config, customStopwords) {
704
+ return new KeywordIndex(config, customStopwords);
705
+ }
706
+ /**
707
+ * Create a new HybridSearch instance
708
+ */
709
+ export function createHybridSearch(vectorBackend, keywordIndex) {
710
+ const kwIndex = keywordIndex || new KeywordIndex();
711
+ return new HybridSearch(vectorBackend, kwIndex);
712
+ }
713
+ //# sourceMappingURL=HybridSearch.js.map