agentdb 3.0.0-alpha.9 → 3.1.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 (726) 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/ExactSearch.d.ts +22 -0
  6. package/dist/src/backends/ExactSearch.d.ts.map +1 -0
  7. package/dist/src/backends/ExactSearch.js +36 -0
  8. package/dist/src/backends/ExactSearch.js.map +1 -0
  9. package/dist/src/backends/VectorBackend.d.ts +80 -6
  10. package/dist/src/backends/VectorBackend.d.ts.map +1 -1
  11. package/dist/src/backends/VectorBackend.js +67 -1
  12. package/dist/src/backends/VectorBackend.js.map +1 -1
  13. package/dist/src/backends/detector.js.map +1 -1
  14. package/dist/src/backends/factory.d.ts +16 -33
  15. package/dist/src/backends/factory.d.ts.map +1 -1
  16. package/dist/src/backends/factory.js +140 -110
  17. package/dist/src/backends/factory.js.map +1 -1
  18. package/dist/src/backends/graph/GraphDatabaseAdapter.d.ts +54 -6
  19. package/dist/src/backends/graph/GraphDatabaseAdapter.d.ts.map +1 -1
  20. package/dist/src/backends/graph/GraphDatabaseAdapter.js +143 -6
  21. package/dist/src/backends/graph/GraphDatabaseAdapter.js.map +1 -1
  22. package/dist/src/backends/hnswlib/HNSWLibBackend.d.ts.map +1 -1
  23. package/dist/src/backends/hnswlib/HNSWLibBackend.js +35 -8
  24. package/dist/src/backends/hnswlib/HNSWLibBackend.js.map +1 -1
  25. package/dist/src/backends/index.d.ts +2 -1
  26. package/dist/src/backends/index.d.ts.map +1 -1
  27. package/dist/src/backends/index.js +2 -0
  28. package/dist/src/backends/index.js.map +1 -1
  29. package/dist/src/backends/ruvector/RuVectorBackend.d.ts +256 -45
  30. package/dist/src/backends/ruvector/RuVectorBackend.d.ts.map +1 -1
  31. package/dist/src/backends/ruvector/RuVectorBackend.js +764 -290
  32. package/dist/src/backends/ruvector/RuVectorBackend.js.map +1 -1
  33. package/dist/src/backends/ruvector/RuVectorLearning.d.ts +0 -4
  34. package/dist/src/backends/ruvector/RuVectorLearning.d.ts.map +1 -1
  35. package/dist/src/backends/ruvector/RuVectorLearning.js +0 -6
  36. package/dist/src/backends/ruvector/RuVectorLearning.js.map +1 -1
  37. package/dist/src/backends/rvf/AdaptiveIndexTuner.d.ts +175 -0
  38. package/dist/src/backends/rvf/AdaptiveIndexTuner.d.ts.map +1 -0
  39. package/dist/src/backends/rvf/AdaptiveIndexTuner.js +567 -0
  40. package/dist/src/backends/rvf/AdaptiveIndexTuner.js.map +1 -0
  41. package/dist/src/backends/rvf/ContrastiveTrainer.d.ts +148 -0
  42. package/dist/src/backends/rvf/ContrastiveTrainer.d.ts.map +1 -0
  43. package/dist/src/backends/rvf/ContrastiveTrainer.js +438 -0
  44. package/dist/src/backends/rvf/ContrastiveTrainer.js.map +1 -0
  45. package/dist/src/backends/rvf/FederatedSessionManager.d.ts +212 -0
  46. package/dist/src/backends/rvf/FederatedSessionManager.d.ts.map +1 -0
  47. package/dist/src/backends/rvf/FederatedSessionManager.js +397 -0
  48. package/dist/src/backends/rvf/FederatedSessionManager.js.map +1 -0
  49. package/dist/src/backends/rvf/FilterBuilder.d.ts +136 -0
  50. package/dist/src/backends/rvf/FilterBuilder.d.ts.map +1 -0
  51. package/dist/src/backends/rvf/FilterBuilder.js +157 -0
  52. package/dist/src/backends/rvf/FilterBuilder.js.map +1 -0
  53. package/dist/src/backends/rvf/NativeAccelerator.d.ts +158 -0
  54. package/dist/src/backends/rvf/NativeAccelerator.d.ts.map +1 -0
  55. package/dist/src/backends/rvf/NativeAccelerator.js +702 -0
  56. package/dist/src/backends/rvf/NativeAccelerator.js.map +1 -0
  57. package/dist/src/backends/rvf/RvfBackend.d.ts +207 -0
  58. package/dist/src/backends/rvf/RvfBackend.d.ts.map +1 -0
  59. package/dist/src/backends/rvf/RvfBackend.js +651 -0
  60. package/dist/src/backends/rvf/RvfBackend.js.map +1 -0
  61. package/dist/src/backends/rvf/RvfSolver.d.ts +175 -0
  62. package/dist/src/backends/rvf/RvfSolver.d.ts.map +1 -0
  63. package/dist/src/backends/rvf/RvfSolver.js +176 -0
  64. package/dist/src/backends/rvf/RvfSolver.js.map +1 -0
  65. package/dist/src/backends/rvf/SelfLearningRvfBackend.d.ts +143 -0
  66. package/dist/src/backends/rvf/SelfLearningRvfBackend.d.ts.map +1 -0
  67. package/dist/src/backends/rvf/SelfLearningRvfBackend.js +612 -0
  68. package/dist/src/backends/rvf/SelfLearningRvfBackend.js.map +1 -0
  69. package/dist/src/backends/rvf/SemanticQueryRouter.d.ts +128 -0
  70. package/dist/src/backends/rvf/SemanticQueryRouter.d.ts.map +1 -0
  71. package/dist/src/backends/rvf/SemanticQueryRouter.js +415 -0
  72. package/dist/src/backends/rvf/SemanticQueryRouter.js.map +1 -0
  73. package/dist/src/backends/rvf/SimdFallbacks.d.ts +25 -0
  74. package/dist/src/backends/rvf/SimdFallbacks.d.ts.map +1 -0
  75. package/dist/src/backends/rvf/SimdFallbacks.js +287 -0
  76. package/dist/src/backends/rvf/SimdFallbacks.js.map +1 -0
  77. package/dist/src/backends/rvf/SolverBandit.d.ts +100 -0
  78. package/dist/src/backends/rvf/SolverBandit.d.ts.map +1 -0
  79. package/dist/src/backends/rvf/SolverBandit.js +216 -0
  80. package/dist/src/backends/rvf/SolverBandit.js.map +1 -0
  81. package/dist/src/backends/rvf/SonaLearningBackend.d.ts +157 -0
  82. package/dist/src/backends/rvf/SonaLearningBackend.d.ts.map +1 -0
  83. package/dist/src/backends/rvf/SonaLearningBackend.js +283 -0
  84. package/dist/src/backends/rvf/SonaLearningBackend.js.map +1 -0
  85. package/dist/src/backends/rvf/SqlJsRvfBackend.d.ts +104 -0
  86. package/dist/src/backends/rvf/SqlJsRvfBackend.d.ts.map +1 -0
  87. package/dist/src/backends/rvf/SqlJsRvfBackend.js +474 -0
  88. package/dist/src/backends/rvf/SqlJsRvfBackend.js.map +1 -0
  89. package/dist/src/backends/rvf/WasmStoreBridge.d.ts +27 -0
  90. package/dist/src/backends/rvf/WasmStoreBridge.d.ts.map +1 -0
  91. package/dist/src/backends/rvf/WasmStoreBridge.js +87 -0
  92. package/dist/src/backends/rvf/WasmStoreBridge.js.map +1 -0
  93. package/dist/src/backends/rvf/validation.d.ts +20 -0
  94. package/dist/src/backends/rvf/validation.d.ts.map +1 -0
  95. package/dist/src/backends/rvf/validation.js +78 -0
  96. package/dist/src/backends/rvf/validation.js.map +1 -0
  97. package/dist/src/benchmark/BenchmarkSuite.d.ts +318 -0
  98. package/dist/src/benchmark/BenchmarkSuite.d.ts.map +1 -0
  99. package/dist/src/benchmark/BenchmarkSuite.js +984 -0
  100. package/dist/src/benchmark/BenchmarkSuite.js.map +1 -0
  101. package/dist/src/benchmark/index.d.ts +29 -0
  102. package/dist/src/benchmark/index.d.ts.map +1 -0
  103. package/dist/src/benchmark/index.js +39 -0
  104. package/dist/src/benchmark/index.js.map +1 -0
  105. package/dist/src/browser/AttentionBrowser.d.ts.map +1 -1
  106. package/dist/src/browser/AttentionBrowser.js +1 -0
  107. package/dist/src/browser/AttentionBrowser.js.map +1 -1
  108. package/dist/src/cli/agentdb-cli.d.ts +14 -0
  109. package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
  110. package/dist/src/cli/agentdb-cli.js +839 -143
  111. package/dist/src/cli/agentdb-cli.js.map +1 -1
  112. package/dist/src/cli/commands/attention.js +12 -2
  113. package/dist/src/cli/commands/attention.js.map +1 -1
  114. package/dist/src/cli/commands/doctor.js +5 -5
  115. package/dist/src/cli/commands/doctor.js.map +1 -1
  116. package/dist/src/cli/commands/hyperbolic.d.ts +11 -0
  117. package/dist/src/cli/commands/hyperbolic.d.ts.map +1 -0
  118. package/dist/src/cli/commands/hyperbolic.js +440 -0
  119. package/dist/src/cli/commands/hyperbolic.js.map +1 -0
  120. package/dist/src/cli/commands/install-embeddings.d.ts +1 -1
  121. package/dist/src/cli/commands/install-embeddings.d.ts.map +1 -1
  122. package/dist/src/cli/commands/install-embeddings.js +17 -11
  123. package/dist/src/cli/commands/install-embeddings.js.map +1 -1
  124. package/dist/src/cli/commands/learn.d.ts +11 -0
  125. package/dist/src/cli/commands/learn.d.ts.map +1 -0
  126. package/dist/src/cli/commands/learn.js +410 -0
  127. package/dist/src/cli/commands/learn.js.map +1 -0
  128. package/dist/src/cli/commands/migrate.d.ts +15 -0
  129. package/dist/src/cli/commands/migrate.d.ts.map +1 -1
  130. package/dist/src/cli/commands/migrate.js +190 -10
  131. package/dist/src/cli/commands/migrate.js.map +1 -1
  132. package/dist/src/cli/commands/route.d.ts +11 -0
  133. package/dist/src/cli/commands/route.d.ts.map +1 -0
  134. package/dist/src/cli/commands/route.js +419 -0
  135. package/dist/src/cli/commands/route.js.map +1 -0
  136. package/dist/src/cli/commands/rvf.d.ts +21 -0
  137. package/dist/src/cli/commands/rvf.d.ts.map +1 -0
  138. package/dist/src/cli/commands/rvf.js +448 -0
  139. package/dist/src/cli/commands/rvf.js.map +1 -0
  140. package/dist/src/cli/commands/simulate-report.js +14 -2
  141. package/dist/src/cli/commands/simulate-report.js.map +1 -1
  142. package/dist/src/cli/lib/report-store.d.ts +2 -1
  143. package/dist/src/cli/lib/report-store.d.ts.map +1 -1
  144. package/dist/src/cli/lib/report-store.js +85 -65
  145. package/dist/src/cli/lib/report-store.js.map +1 -1
  146. package/dist/src/cli/lib/simulation-runner.d.ts +40 -3
  147. package/dist/src/cli/lib/simulation-runner.d.ts.map +1 -1
  148. package/dist/src/cli/lib/simulation-runner.js +248 -6
  149. package/dist/src/cli/lib/simulation-runner.js.map +1 -1
  150. package/dist/src/compatibility/DeprecationWarnings.d.ts +54 -0
  151. package/dist/src/compatibility/DeprecationWarnings.d.ts.map +1 -0
  152. package/dist/src/compatibility/DeprecationWarnings.js +131 -0
  153. package/dist/src/compatibility/DeprecationWarnings.js.map +1 -0
  154. package/dist/src/compatibility/MigrationUtilities.d.ts +30 -0
  155. package/dist/src/compatibility/MigrationUtilities.d.ts.map +1 -0
  156. package/dist/src/compatibility/MigrationUtilities.js +184 -0
  157. package/dist/src/compatibility/MigrationUtilities.js.map +1 -0
  158. package/dist/src/compatibility/V1toV2Adapter.d.ts +76 -0
  159. package/dist/src/compatibility/V1toV2Adapter.d.ts.map +1 -0
  160. package/dist/src/compatibility/V1toV2Adapter.js +185 -0
  161. package/dist/src/compatibility/V1toV2Adapter.js.map +1 -0
  162. package/dist/src/compatibility/VersionDetector.d.ts +32 -0
  163. package/dist/src/compatibility/VersionDetector.d.ts.map +1 -0
  164. package/dist/src/compatibility/VersionDetector.js +144 -0
  165. package/dist/src/compatibility/VersionDetector.js.map +1 -0
  166. package/dist/src/compatibility/index.d.ts +14 -0
  167. package/dist/src/compatibility/index.d.ts.map +1 -0
  168. package/dist/src/compatibility/index.js +21 -0
  169. package/dist/src/compatibility/index.js.map +1 -0
  170. package/dist/src/compatibility/types.d.ts +103 -0
  171. package/dist/src/compatibility/types.d.ts.map +1 -0
  172. package/dist/src/compatibility/types.js +5 -0
  173. package/dist/src/compatibility/types.js.map +1 -0
  174. package/dist/src/controllers/AttentionService.d.ts +99 -202
  175. package/dist/src/controllers/AttentionService.d.ts.map +1 -1
  176. package/dist/src/controllers/AttentionService.js +450 -558
  177. package/dist/src/controllers/AttentionService.js.map +1 -1
  178. package/dist/src/controllers/CausalMemoryGraph.d.ts +30 -5
  179. package/dist/src/controllers/CausalMemoryGraph.d.ts.map +1 -1
  180. package/dist/src/controllers/CausalMemoryGraph.js +92 -15
  181. package/dist/src/controllers/CausalMemoryGraph.js.map +1 -1
  182. package/dist/src/controllers/CausalRecall.d.ts +4 -0
  183. package/dist/src/controllers/CausalRecall.d.ts.map +1 -1
  184. package/dist/src/controllers/CausalRecall.js +23 -5
  185. package/dist/src/controllers/CausalRecall.js.map +1 -1
  186. package/dist/src/controllers/EmbeddingService.d.ts +39 -0
  187. package/dist/src/controllers/EmbeddingService.d.ts.map +1 -1
  188. package/dist/src/controllers/EmbeddingService.js +166 -32
  189. package/dist/src/controllers/EmbeddingService.js.map +1 -1
  190. package/dist/src/controllers/EnhancedEmbeddingService.d.ts +4 -0
  191. package/dist/src/controllers/EnhancedEmbeddingService.d.ts.map +1 -1
  192. package/dist/src/controllers/EnhancedEmbeddingService.js +21 -7
  193. package/dist/src/controllers/EnhancedEmbeddingService.js.map +1 -1
  194. package/dist/src/controllers/ExplainableRecall.d.ts +1 -1
  195. package/dist/src/controllers/ExplainableRecall.d.ts.map +1 -1
  196. package/dist/src/controllers/ExplainableRecall.js +1 -1
  197. package/dist/src/controllers/ExplainableRecall.js.map +1 -1
  198. package/dist/src/controllers/HNSWIndex.d.ts +20 -2
  199. package/dist/src/controllers/HNSWIndex.d.ts.map +1 -1
  200. package/dist/src/controllers/HNSWIndex.js +114 -39
  201. package/dist/src/controllers/HNSWIndex.js.map +1 -1
  202. package/dist/src/controllers/LearningSystem.d.ts +6 -17
  203. package/dist/src/controllers/LearningSystem.d.ts.map +1 -1
  204. package/dist/src/controllers/LearningSystem.js +66 -155
  205. package/dist/src/controllers/LearningSystem.js.map +1 -1
  206. package/dist/src/controllers/MemoryController.d.ts +174 -0
  207. package/dist/src/controllers/MemoryController.d.ts.map +1 -0
  208. package/dist/src/controllers/MemoryController.js +320 -0
  209. package/dist/src/controllers/MemoryController.js.map +1 -0
  210. package/dist/src/controllers/MetadataFilter.d.ts.map +1 -1
  211. package/dist/src/controllers/MetadataFilter.js +38 -26
  212. package/dist/src/controllers/MetadataFilter.js.map +1 -1
  213. package/dist/src/controllers/MincutService.d.ts +92 -0
  214. package/dist/src/controllers/MincutService.d.ts.map +1 -0
  215. package/dist/src/controllers/MincutService.js +336 -0
  216. package/dist/src/controllers/MincutService.js.map +1 -0
  217. package/dist/src/controllers/NightlyLearner.d.ts +5 -1
  218. package/dist/src/controllers/NightlyLearner.d.ts.map +1 -1
  219. package/dist/src/controllers/NightlyLearner.js +45 -31
  220. package/dist/src/controllers/NightlyLearner.js.map +1 -1
  221. package/dist/src/controllers/QUICClient.d.ts +45 -0
  222. package/dist/src/controllers/QUICClient.d.ts.map +1 -1
  223. package/dist/src/controllers/QUICClient.js +211 -21
  224. package/dist/src/controllers/QUICClient.js.map +1 -1
  225. package/dist/src/controllers/QUICServer.d.ts.map +1 -1
  226. package/dist/src/controllers/QUICServer.js +36 -27
  227. package/dist/src/controllers/QUICServer.js.map +1 -1
  228. package/dist/src/controllers/ReasoningBank.d.ts +44 -5
  229. package/dist/src/controllers/ReasoningBank.d.ts.map +1 -1
  230. package/dist/src/controllers/ReasoningBank.js +187 -99
  231. package/dist/src/controllers/ReasoningBank.js.map +1 -1
  232. package/dist/src/controllers/ReflexionMemory.d.ts +129 -6
  233. package/dist/src/controllers/ReflexionMemory.d.ts.map +1 -1
  234. package/dist/src/controllers/ReflexionMemory.js +687 -220
  235. package/dist/src/controllers/ReflexionMemory.js.map +1 -1
  236. package/dist/src/controllers/SkillLibrary.d.ts +41 -3
  237. package/dist/src/controllers/SkillLibrary.d.ts.map +1 -1
  238. package/dist/src/controllers/SkillLibrary.js +291 -116
  239. package/dist/src/controllers/SkillLibrary.js.map +1 -1
  240. package/dist/src/controllers/SparsificationService.d.ts +151 -0
  241. package/dist/src/controllers/SparsificationService.d.ts.map +1 -0
  242. package/dist/src/controllers/SparsificationService.js +375 -0
  243. package/dist/src/controllers/SparsificationService.js.map +1 -0
  244. package/dist/src/controllers/SyncCoordinator.d.ts.map +1 -1
  245. package/dist/src/controllers/SyncCoordinator.js +126 -12
  246. package/dist/src/controllers/SyncCoordinator.js.map +1 -1
  247. package/dist/src/controllers/WASMVectorSearch.d.ts +12 -30
  248. package/dist/src/controllers/WASMVectorSearch.d.ts.map +1 -1
  249. package/dist/src/controllers/WASMVectorSearch.js +209 -119
  250. package/dist/src/controllers/WASMVectorSearch.js.map +1 -1
  251. package/dist/src/controllers/attention/AttentionCache.d.ts +38 -0
  252. package/dist/src/controllers/attention/AttentionCache.d.ts.map +1 -0
  253. package/dist/src/controllers/attention/AttentionCache.js +80 -0
  254. package/dist/src/controllers/attention/AttentionCache.js.map +1 -0
  255. package/dist/src/controllers/attention/AttentionConfig.d.ts +127 -0
  256. package/dist/src/controllers/attention/AttentionConfig.d.ts.map +1 -0
  257. package/dist/src/controllers/attention/AttentionConfig.js +124 -0
  258. package/dist/src/controllers/attention/AttentionConfig.js.map +1 -0
  259. package/dist/src/controllers/attention/AttentionCore.d.ts +89 -0
  260. package/dist/src/controllers/attention/AttentionCore.d.ts.map +1 -0
  261. package/dist/src/controllers/attention/AttentionCore.js +289 -0
  262. package/dist/src/controllers/attention/AttentionCore.js.map +1 -0
  263. package/dist/src/controllers/attention/AttentionHelpers.d.ts +55 -0
  264. package/dist/src/controllers/attention/AttentionHelpers.d.ts.map +1 -0
  265. package/dist/src/controllers/attention/AttentionHelpers.js +148 -0
  266. package/dist/src/controllers/attention/AttentionHelpers.js.map +1 -0
  267. package/dist/src/controllers/attention/AttentionMetrics.d.ts +55 -0
  268. package/dist/src/controllers/attention/AttentionMetrics.d.ts.map +1 -0
  269. package/dist/src/controllers/attention/AttentionMetrics.js +72 -0
  270. package/dist/src/controllers/attention/AttentionMetrics.js.map +1 -0
  271. package/dist/src/controllers/attention/AttentionWASM.d.ts +98 -0
  272. package/dist/src/controllers/attention/AttentionWASM.d.ts.map +1 -0
  273. package/dist/src/controllers/attention/AttentionWASM.js +147 -0
  274. package/dist/src/controllers/attention/AttentionWASM.js.map +1 -0
  275. package/dist/src/controllers/attention/CrossAttentionController.d.ts +141 -0
  276. package/dist/src/controllers/attention/CrossAttentionController.d.ts.map +1 -0
  277. package/dist/src/controllers/attention/CrossAttentionController.js +325 -0
  278. package/dist/src/controllers/attention/CrossAttentionController.js.map +1 -0
  279. package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts +137 -0
  280. package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts.map +1 -0
  281. package/dist/src/controllers/attention/MultiHeadAttentionController.js +336 -0
  282. package/dist/src/controllers/attention/MultiHeadAttentionController.js.map +1 -0
  283. package/dist/src/controllers/attention/SelfAttentionController.d.ts +117 -0
  284. package/dist/src/controllers/attention/SelfAttentionController.d.ts.map +1 -0
  285. package/dist/src/controllers/attention/SelfAttentionController.js +205 -0
  286. package/dist/src/controllers/attention/SelfAttentionController.js.map +1 -0
  287. package/dist/src/controllers/attention/index.d.ts +24 -0
  288. package/dist/src/controllers/attention/index.d.ts.map +1 -0
  289. package/dist/src/controllers/attention/index.js +20 -0
  290. package/dist/src/controllers/attention/index.js.map +1 -0
  291. package/dist/src/controllers/index.d.ts +15 -28
  292. package/dist/src/controllers/index.d.ts.map +1 -1
  293. package/dist/src/controllers/index.js +11 -19
  294. package/dist/src/controllers/index.js.map +1 -1
  295. package/dist/src/controllers/prerequisites.d.ts +76 -0
  296. package/dist/src/controllers/prerequisites.d.ts.map +1 -0
  297. package/dist/src/controllers/prerequisites.js +235 -0
  298. package/dist/src/controllers/prerequisites.js.map +1 -0
  299. package/dist/src/core/AgentDB.d.ts +33 -19
  300. package/dist/src/core/AgentDB.d.ts.map +1 -1
  301. package/dist/src/core/AgentDB.js +87 -127
  302. package/dist/src/core/AgentDB.js.map +1 -1
  303. package/dist/src/core/QueryCache.d.ts +138 -0
  304. package/dist/src/core/QueryCache.d.ts.map +1 -0
  305. package/dist/src/core/QueryCache.js +309 -0
  306. package/dist/src/core/QueryCache.js.map +1 -0
  307. package/dist/src/db-fallback.d.ts +52 -4
  308. package/dist/src/db-fallback.d.ts.map +1 -1
  309. package/dist/src/db-fallback.js +521 -71
  310. package/dist/src/db-fallback.js.map +1 -1
  311. package/dist/src/db-unified.d.ts.map +1 -1
  312. package/dist/src/db-unified.js +32 -30
  313. package/dist/src/db-unified.js.map +1 -1
  314. package/dist/src/embedding/EmbeddingSpaceIdentity.d.ts +58 -0
  315. package/dist/src/embedding/EmbeddingSpaceIdentity.d.ts.map +1 -0
  316. package/dist/src/embedding/EmbeddingSpaceIdentity.js +137 -0
  317. package/dist/src/embedding/EmbeddingSpaceIdentity.js.map +1 -0
  318. package/dist/src/embedding/index.d.ts +3 -0
  319. package/dist/src/embedding/index.d.ts.map +1 -0
  320. package/dist/src/embedding/index.js +2 -0
  321. package/dist/src/embedding/index.js.map +1 -0
  322. package/dist/src/examples/quic-sync-example.js +2 -2
  323. package/dist/src/examples/quic-sync-example.js.map +1 -1
  324. package/dist/src/governance/MetaHarnessGateway.d.ts +55 -0
  325. package/dist/src/governance/MetaHarnessGateway.d.ts.map +1 -0
  326. package/dist/src/governance/MetaHarnessGateway.js +65 -0
  327. package/dist/src/governance/MetaHarnessGateway.js.map +1 -0
  328. package/dist/src/governance/RvfExperimentBranch.d.ts +65 -0
  329. package/dist/src/governance/RvfExperimentBranch.d.ts.map +1 -0
  330. package/dist/src/governance/RvfExperimentBranch.js +115 -0
  331. package/dist/src/governance/RvfExperimentBranch.js.map +1 -0
  332. package/dist/src/index.d.ts +20 -16
  333. package/dist/src/index.d.ts.map +1 -1
  334. package/dist/src/index.js +44 -12
  335. package/dist/src/index.js.map +1 -1
  336. package/dist/src/mcp/agentdb-mcp-server.js +318 -16
  337. package/dist/src/mcp/agentdb-mcp-server.js.map +1 -1
  338. package/dist/src/mcp/reset-database.d.ts +15 -0
  339. package/dist/src/mcp/reset-database.d.ts.map +1 -0
  340. package/dist/src/mcp/reset-database.js +45 -0
  341. package/dist/src/mcp/reset-database.js.map +1 -0
  342. package/dist/src/model/ModelCacheLoader.d.ts +31 -0
  343. package/dist/src/model/ModelCacheLoader.d.ts.map +1 -0
  344. package/dist/src/model/ModelCacheLoader.js +209 -0
  345. package/dist/src/model/ModelCacheLoader.js.map +1 -0
  346. package/dist/src/observability/index.d.ts +8 -0
  347. package/dist/src/observability/index.d.ts.map +1 -0
  348. package/dist/src/observability/index.js +8 -0
  349. package/dist/src/observability/index.js.map +1 -0
  350. package/dist/src/observability/integration.d.ts +32 -0
  351. package/dist/src/observability/integration.d.ts.map +1 -0
  352. package/dist/src/observability/integration.js +159 -0
  353. package/dist/src/observability/integration.js.map +1 -0
  354. package/dist/src/observability/telemetry.d.ts +137 -0
  355. package/dist/src/observability/telemetry.d.ts.map +1 -0
  356. package/dist/src/observability/telemetry.js +424 -0
  357. package/dist/src/observability/telemetry.js.map +1 -0
  358. package/dist/src/optimizations/BatchOperations.d.ts +47 -0
  359. package/dist/src/optimizations/BatchOperations.d.ts.map +1 -1
  360. package/dist/src/optimizations/BatchOperations.js +189 -35
  361. package/dist/src/optimizations/BatchOperations.js.map +1 -1
  362. package/dist/src/optimizations/Quantization.d.ts +330 -0
  363. package/dist/src/optimizations/Quantization.d.ts.map +1 -0
  364. package/dist/src/optimizations/Quantization.js +793 -0
  365. package/dist/src/optimizations/Quantization.js.map +1 -0
  366. package/dist/src/optimizations/index.d.ts +1 -3
  367. package/dist/src/optimizations/index.d.ts.map +1 -1
  368. package/dist/src/optimizations/index.js +0 -1
  369. package/dist/src/optimizations/index.js.map +1 -1
  370. package/dist/src/quantization/index.d.ts +7 -0
  371. package/dist/src/quantization/index.d.ts.map +1 -0
  372. package/dist/src/quantization/index.js +15 -0
  373. package/dist/src/quantization/index.js.map +1 -0
  374. package/dist/src/quantization/vector-quantization.d.ts +388 -0
  375. package/dist/src/quantization/vector-quantization.d.ts.map +1 -0
  376. package/dist/src/quantization/vector-quantization.js +1132 -0
  377. package/dist/src/quantization/vector-quantization.js.map +1 -0
  378. package/dist/src/schemas/inline.d.ts +3 -0
  379. package/dist/src/schemas/inline.d.ts.map +1 -0
  380. package/dist/src/schemas/inline.js +10 -0
  381. package/dist/src/schemas/inline.js.map +1 -0
  382. package/dist/src/search/HybridSearch.d.ts +311 -0
  383. package/dist/src/search/HybridSearch.d.ts.map +1 -0
  384. package/dist/src/search/HybridSearch.js +713 -0
  385. package/dist/src/search/HybridSearch.js.map +1 -0
  386. package/dist/src/search/index.d.ts +12 -0
  387. package/dist/src/search/index.d.ts.map +1 -0
  388. package/dist/src/search/index.js +16 -0
  389. package/dist/src/search/index.js.map +1 -0
  390. package/dist/src/security/input-validation.d.ts +30 -0
  391. package/dist/src/security/input-validation.d.ts.map +1 -1
  392. package/dist/src/security/input-validation.js +77 -3
  393. package/dist/src/security/input-validation.js.map +1 -1
  394. package/dist/src/security/limits.d.ts.map +1 -1
  395. package/dist/src/security/limits.js +12 -3
  396. package/dist/src/security/limits.js.map +1 -1
  397. package/dist/src/security/mcp-policy.d.ts +17 -0
  398. package/dist/src/security/mcp-policy.d.ts.map +1 -0
  399. package/dist/src/security/mcp-policy.js +94 -0
  400. package/dist/src/security/mcp-policy.js.map +1 -0
  401. package/dist/src/security/path-security.d.ts.map +1 -1
  402. package/dist/src/security/path-security.js +3 -1
  403. package/dist/src/security/path-security.js.map +1 -1
  404. package/dist/src/security/validation.js +3 -3
  405. package/dist/src/security/validation.js.map +1 -1
  406. package/dist/src/services/AttentionService.d.ts +303 -0
  407. package/dist/src/services/AttentionService.d.ts.map +1 -0
  408. package/dist/src/services/AttentionService.js +1165 -0
  409. package/dist/src/services/AttentionService.js.map +1 -0
  410. package/dist/src/services/LLMRouter.d.ts +70 -8
  411. package/dist/src/services/LLMRouter.d.ts.map +1 -1
  412. package/dist/src/services/LLMRouter.js +279 -28
  413. package/dist/src/services/LLMRouter.js.map +1 -1
  414. package/dist/src/services/audit-logger.service.d.ts +168 -0
  415. package/dist/src/services/audit-logger.service.d.ts.map +1 -0
  416. package/dist/src/services/audit-logger.service.js +331 -0
  417. package/dist/src/services/audit-logger.service.js.map +1 -0
  418. package/dist/src/services/enhanced-embeddings.d.ts +271 -0
  419. package/dist/src/services/enhanced-embeddings.d.ts.map +1 -0
  420. package/dist/src/services/enhanced-embeddings.js +1036 -0
  421. package/dist/src/services/enhanced-embeddings.js.map +1 -0
  422. package/dist/src/services/federated-learning.d.ts +172 -0
  423. package/dist/src/services/federated-learning.d.ts.map +1 -0
  424. package/dist/src/services/federated-learning.js +344 -0
  425. package/dist/src/services/federated-learning.js.map +1 -0
  426. package/dist/src/simd/index.d.ts +9 -0
  427. package/dist/src/simd/index.d.ts.map +1 -0
  428. package/dist/src/simd/index.js +27 -0
  429. package/dist/src/simd/index.js.map +1 -0
  430. package/dist/src/simd/simd-vector-ops.d.ts +343 -0
  431. package/dist/src/simd/simd-vector-ops.d.ts.map +1 -0
  432. package/dist/src/simd/simd-vector-ops.js +1012 -0
  433. package/dist/src/simd/simd-vector-ops.js.map +1 -0
  434. package/dist/src/types/database.types.d.ts +275 -0
  435. package/dist/src/types/database.types.d.ts.map +1 -0
  436. package/dist/src/types/database.types.js +55 -0
  437. package/dist/src/types/database.types.js.map +1 -0
  438. package/dist/src/types/graph.d.ts +29 -0
  439. package/dist/src/types/graph.d.ts.map +1 -0
  440. package/dist/src/types/graph.js +8 -0
  441. package/dist/src/types/graph.js.map +1 -0
  442. package/dist/src/utils/chalk-fallback.d.ts +3 -0
  443. package/dist/src/utils/chalk-fallback.d.ts.map +1 -0
  444. package/dist/src/utils/chalk-fallback.js +20 -0
  445. package/dist/src/utils/chalk-fallback.js.map +1 -0
  446. package/dist/src/utils/similarity.d.ts +11 -0
  447. package/dist/src/utils/similarity.d.ts.map +1 -0
  448. package/dist/src/utils/similarity.js +25 -0
  449. package/dist/src/utils/similarity.js.map +1 -0
  450. package/dist/src/utils/top-k.d.ts +44 -0
  451. package/dist/src/utils/top-k.d.ts.map +1 -0
  452. package/dist/src/utils/top-k.js +111 -0
  453. package/dist/src/utils/top-k.js.map +1 -0
  454. package/dist/src/wasm-loader.d.ts +66 -0
  455. package/dist/src/wasm-loader.d.ts.map +1 -0
  456. package/dist/src/wasm-loader.js +76 -0
  457. package/dist/src/wasm-loader.js.map +1 -0
  458. package/dist/src/wrappers/agentdb-fast.d.ts +140 -0
  459. package/dist/src/wrappers/agentdb-fast.d.ts.map +1 -0
  460. package/dist/src/wrappers/agentdb-fast.js +309 -0
  461. package/dist/src/wrappers/agentdb-fast.js.map +1 -0
  462. package/dist/src/wrappers/attention-fallbacks.d.ts +343 -0
  463. package/dist/src/wrappers/attention-fallbacks.d.ts.map +1 -0
  464. package/dist/src/wrappers/attention-fallbacks.js +1484 -0
  465. package/dist/src/wrappers/attention-fallbacks.js.map +1 -0
  466. package/dist/src/wrappers/attention-native.d.ts +111 -0
  467. package/dist/src/wrappers/attention-native.d.ts.map +1 -0
  468. package/dist/src/wrappers/attention-native.js +273 -0
  469. package/dist/src/wrappers/attention-native.js.map +1 -0
  470. package/dist/src/wrappers/embedding-service.d.ts +117 -0
  471. package/dist/src/wrappers/embedding-service.d.ts.map +1 -0
  472. package/dist/src/wrappers/embedding-service.js +370 -0
  473. package/dist/src/wrappers/embedding-service.js.map +1 -0
  474. package/dist/src/wrappers/gnn-wrapper.d.ts +71 -0
  475. package/dist/src/wrappers/gnn-wrapper.d.ts.map +1 -0
  476. package/dist/src/wrappers/gnn-wrapper.js +236 -0
  477. package/dist/src/wrappers/gnn-wrapper.js.map +1 -0
  478. package/dist/src/wrappers/index.d.ts +48 -0
  479. package/dist/src/wrappers/index.d.ts.map +1 -0
  480. package/dist/src/wrappers/index.js +83 -0
  481. package/dist/src/wrappers/index.js.map +1 -0
  482. package/package.json +130 -80
  483. package/scripts/postinstall.cjs +13 -144
  484. package/dist/agentdb.browser.js +0 -1685
  485. package/dist/agentdb.browser.js.map +0 -7
  486. package/dist/agentdb.browser.min.js +0 -3
  487. package/dist/agentdb.browser.min.js.map +0 -7
  488. package/dist/agentdb.wasm-loader.js +0 -207
  489. package/dist/backends/VectorBackend.d.ts +0 -120
  490. package/dist/backends/VectorBackend.js +0 -14
  491. package/dist/backends/VectorBackend.js.map +0 -1
  492. package/dist/optimizations/RVFOptimizer.d.ts +0 -225
  493. package/dist/optimizations/RVFOptimizer.js +0 -541
  494. package/dist/optimizations/RVFOptimizer.js.map +0 -1
  495. package/dist/simulation/cli.d.ts +0 -9
  496. package/dist/simulation/cli.d.ts.map +0 -1
  497. package/dist/simulation/cli.js +0 -68
  498. package/dist/simulation/cli.js.map +0 -1
  499. package/dist/simulation/runner.d.ts +0 -21
  500. package/dist/simulation/runner.d.ts.map +0 -1
  501. package/dist/simulation/runner.js +0 -241
  502. package/dist/simulation/runner.js.map +0 -1
  503. package/dist/simulation/scenarios/aidefence-integration.d.ts +0 -24
  504. package/dist/simulation/scenarios/aidefence-integration.d.ts.map +0 -1
  505. package/dist/simulation/scenarios/aidefence-integration.js +0 -124
  506. package/dist/simulation/scenarios/aidefence-integration.js.map +0 -1
  507. package/dist/simulation/scenarios/bmssp-integration.d.ts +0 -23
  508. package/dist/simulation/scenarios/bmssp-integration.d.ts.map +0 -1
  509. package/dist/simulation/scenarios/bmssp-integration.js +0 -104
  510. package/dist/simulation/scenarios/bmssp-integration.js.map +0 -1
  511. package/dist/simulation/scenarios/causal-reasoning.d.ts +0 -16
  512. package/dist/simulation/scenarios/causal-reasoning.d.ts.map +0 -1
  513. package/dist/simulation/scenarios/causal-reasoning.js +0 -108
  514. package/dist/simulation/scenarios/causal-reasoning.js.map +0 -1
  515. package/dist/simulation/scenarios/consciousness-explorer.d.ts +0 -25
  516. package/dist/simulation/scenarios/consciousness-explorer.d.ts.map +0 -1
  517. package/dist/simulation/scenarios/consciousness-explorer.js +0 -108
  518. package/dist/simulation/scenarios/consciousness-explorer.js.map +0 -1
  519. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.d.ts +0 -135
  520. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.d.ts.map +0 -1
  521. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.js +0 -158
  522. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.js.map +0 -1
  523. package/dist/simulation/scenarios/domain-examples/index.d.ts +0 -14
  524. package/dist/simulation/scenarios/domain-examples/index.d.ts.map +0 -1
  525. package/dist/simulation/scenarios/domain-examples/index.js +0 -14
  526. package/dist/simulation/scenarios/domain-examples/index.js.map +0 -1
  527. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.d.ts +0 -178
  528. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.d.ts.map +0 -1
  529. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.js +0 -218
  530. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.js.map +0 -1
  531. package/dist/simulation/scenarios/domain-examples/medical-imaging.d.ts +0 -122
  532. package/dist/simulation/scenarios/domain-examples/medical-imaging.d.ts.map +0 -1
  533. package/dist/simulation/scenarios/domain-examples/medical-imaging.js +0 -129
  534. package/dist/simulation/scenarios/domain-examples/medical-imaging.js.map +0 -1
  535. package/dist/simulation/scenarios/domain-examples/robotics-navigation.d.ts +0 -166
  536. package/dist/simulation/scenarios/domain-examples/robotics-navigation.d.ts.map +0 -1
  537. package/dist/simulation/scenarios/domain-examples/robotics-navigation.js +0 -161
  538. package/dist/simulation/scenarios/domain-examples/robotics-navigation.js.map +0 -1
  539. package/dist/simulation/scenarios/domain-examples/scientific-research.d.ts +0 -151
  540. package/dist/simulation/scenarios/domain-examples/scientific-research.d.ts.map +0 -1
  541. package/dist/simulation/scenarios/domain-examples/scientific-research.js +0 -187
  542. package/dist/simulation/scenarios/domain-examples/scientific-research.js.map +0 -1
  543. package/dist/simulation/scenarios/domain-examples/trading-systems.d.ts +0 -102
  544. package/dist/simulation/scenarios/domain-examples/trading-systems.d.ts.map +0 -1
  545. package/dist/simulation/scenarios/domain-examples/trading-systems.js +0 -100
  546. package/dist/simulation/scenarios/domain-examples/trading-systems.js.map +0 -1
  547. package/dist/simulation/scenarios/goalie-integration.d.ts +0 -24
  548. package/dist/simulation/scenarios/goalie-integration.d.ts.map +0 -1
  549. package/dist/simulation/scenarios/goalie-integration.js +0 -121
  550. package/dist/simulation/scenarios/goalie-integration.js.map +0 -1
  551. package/dist/simulation/scenarios/graph-traversal.d.ts +0 -17
  552. package/dist/simulation/scenarios/graph-traversal.d.ts.map +0 -1
  553. package/dist/simulation/scenarios/graph-traversal.js +0 -101
  554. package/dist/simulation/scenarios/graph-traversal.js.map +0 -1
  555. package/dist/simulation/scenarios/latent-space/attention-analysis.d.ts +0 -45
  556. package/dist/simulation/scenarios/latent-space/attention-analysis.d.ts.map +0 -1
  557. package/dist/simulation/scenarios/latent-space/attention-analysis.js +0 -435
  558. package/dist/simulation/scenarios/latent-space/attention-analysis.js.map +0 -1
  559. package/dist/simulation/scenarios/latent-space/clustering-analysis.d.ts +0 -55
  560. package/dist/simulation/scenarios/latent-space/clustering-analysis.d.ts.map +0 -1
  561. package/dist/simulation/scenarios/latent-space/clustering-analysis.js +0 -606
  562. package/dist/simulation/scenarios/latent-space/clustering-analysis.js.map +0 -1
  563. package/dist/simulation/scenarios/latent-space/hnsw-exploration.d.ts +0 -74
  564. package/dist/simulation/scenarios/latent-space/hnsw-exploration.d.ts.map +0 -1
  565. package/dist/simulation/scenarios/latent-space/hnsw-exploration.js +0 -391
  566. package/dist/simulation/scenarios/latent-space/hnsw-exploration.js.map +0 -1
  567. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.d.ts +0 -51
  568. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.d.ts.map +0 -1
  569. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.js +0 -536
  570. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.js.map +0 -1
  571. package/dist/simulation/scenarios/latent-space/index.d.ts +0 -35
  572. package/dist/simulation/scenarios/latent-space/index.d.ts.map +0 -1
  573. package/dist/simulation/scenarios/latent-space/index.js +0 -35
  574. package/dist/simulation/scenarios/latent-space/index.js.map +0 -1
  575. package/dist/simulation/scenarios/latent-space/neural-augmentation.d.ts +0 -52
  576. package/dist/simulation/scenarios/latent-space/neural-augmentation.d.ts.map +0 -1
  577. package/dist/simulation/scenarios/latent-space/neural-augmentation.js +0 -472
  578. package/dist/simulation/scenarios/latent-space/neural-augmentation.js.map +0 -1
  579. package/dist/simulation/scenarios/latent-space/quantum-hybrid.d.ts +0 -53
  580. package/dist/simulation/scenarios/latent-space/quantum-hybrid.d.ts.map +0 -1
  581. package/dist/simulation/scenarios/latent-space/quantum-hybrid.js +0 -391
  582. package/dist/simulation/scenarios/latent-space/quantum-hybrid.js.map +0 -1
  583. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.d.ts +0 -52
  584. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.d.ts.map +0 -1
  585. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.js +0 -514
  586. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.js.map +0 -1
  587. package/dist/simulation/scenarios/latent-space/traversal-optimization.d.ts +0 -53
  588. package/dist/simulation/scenarios/latent-space/traversal-optimization.d.ts.map +0 -1
  589. package/dist/simulation/scenarios/latent-space/traversal-optimization.js +0 -595
  590. package/dist/simulation/scenarios/latent-space/traversal-optimization.js.map +0 -1
  591. package/dist/simulation/scenarios/lean-agentic-swarm.d.ts +0 -18
  592. package/dist/simulation/scenarios/lean-agentic-swarm.d.ts.map +0 -1
  593. package/dist/simulation/scenarios/lean-agentic-swarm.js +0 -132
  594. package/dist/simulation/scenarios/lean-agentic-swarm.js.map +0 -1
  595. package/dist/simulation/scenarios/multi-agent-swarm.d.ts +0 -17
  596. package/dist/simulation/scenarios/multi-agent-swarm.d.ts.map +0 -1
  597. package/dist/simulation/scenarios/multi-agent-swarm.js +0 -111
  598. package/dist/simulation/scenarios/multi-agent-swarm.js.map +0 -1
  599. package/dist/simulation/scenarios/psycho-symbolic-reasoner.d.ts +0 -23
  600. package/dist/simulation/scenarios/psycho-symbolic-reasoner.d.ts.map +0 -1
  601. package/dist/simulation/scenarios/psycho-symbolic-reasoner.js +0 -98
  602. package/dist/simulation/scenarios/psycho-symbolic-reasoner.js.map +0 -1
  603. package/dist/simulation/scenarios/reflexion-learning.d.ts +0 -16
  604. package/dist/simulation/scenarios/reflexion-learning.d.ts.map +0 -1
  605. package/dist/simulation/scenarios/reflexion-learning.js +0 -98
  606. package/dist/simulation/scenarios/reflexion-learning.js.map +0 -1
  607. package/dist/simulation/scenarios/research-swarm.d.ts +0 -24
  608. package/dist/simulation/scenarios/research-swarm.d.ts.map +0 -1
  609. package/dist/simulation/scenarios/research-swarm.js +0 -146
  610. package/dist/simulation/scenarios/research-swarm.js.map +0 -1
  611. package/dist/simulation/scenarios/skill-evolution.d.ts +0 -16
  612. package/dist/simulation/scenarios/skill-evolution.d.ts.map +0 -1
  613. package/dist/simulation/scenarios/skill-evolution.js +0 -109
  614. package/dist/simulation/scenarios/skill-evolution.js.map +0 -1
  615. package/dist/simulation/scenarios/stock-market-emergence.d.ts +0 -33
  616. package/dist/simulation/scenarios/stock-market-emergence.d.ts.map +0 -1
  617. package/dist/simulation/scenarios/stock-market-emergence.js +0 -246
  618. package/dist/simulation/scenarios/stock-market-emergence.js.map +0 -1
  619. package/dist/simulation/scenarios/strange-loops.d.ts +0 -18
  620. package/dist/simulation/scenarios/strange-loops.d.ts.map +0 -1
  621. package/dist/simulation/scenarios/strange-loops.js +0 -133
  622. package/dist/simulation/scenarios/strange-loops.js.map +0 -1
  623. package/dist/simulation/scenarios/sublinear-solver.d.ts +0 -22
  624. package/dist/simulation/scenarios/sublinear-solver.d.ts.map +0 -1
  625. package/dist/simulation/scenarios/sublinear-solver.js +0 -82
  626. package/dist/simulation/scenarios/sublinear-solver.js.map +0 -1
  627. package/dist/simulation/scenarios/temporal-lead-solver.d.ts +0 -23
  628. package/dist/simulation/scenarios/temporal-lead-solver.d.ts.map +0 -1
  629. package/dist/simulation/scenarios/temporal-lead-solver.js +0 -90
  630. package/dist/simulation/scenarios/temporal-lead-solver.js.map +0 -1
  631. package/dist/simulation/scenarios/voting-system-consensus.d.ts +0 -27
  632. package/dist/simulation/scenarios/voting-system-consensus.d.ts.map +0 -1
  633. package/dist/simulation/scenarios/voting-system-consensus.js +0 -175
  634. package/dist/simulation/scenarios/voting-system-consensus.js.map +0 -1
  635. package/dist/simulation/types.d.ts +0 -162
  636. package/dist/simulation/types.d.ts.map +0 -1
  637. package/dist/simulation/types.js +0 -5
  638. package/dist/simulation/types.js.map +0 -1
  639. package/dist/simulation/utils/PerformanceOptimizer.d.ts +0 -115
  640. package/dist/simulation/utils/PerformanceOptimizer.d.ts.map +0 -1
  641. package/dist/simulation/utils/PerformanceOptimizer.js +0 -223
  642. package/dist/simulation/utils/PerformanceOptimizer.js.map +0 -1
  643. package/dist/src/backends/index.cjs +0 -6
  644. package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts +0 -93
  645. package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts.map +0 -1
  646. package/dist/src/backends/ruvector/GuardedVectorBackend.js +0 -182
  647. package/dist/src/backends/ruvector/GuardedVectorBackend.js.map +0 -1
  648. package/dist/src/consensus/RaftConsensus.d.ts +0 -220
  649. package/dist/src/consensus/RaftConsensus.d.ts.map +0 -1
  650. package/dist/src/consensus/RaftConsensus.js +0 -762
  651. package/dist/src/consensus/RaftConsensus.js.map +0 -1
  652. package/dist/src/controllers/HierarchicalMemory.d.ts +0 -197
  653. package/dist/src/controllers/HierarchicalMemory.d.ts.map +0 -1
  654. package/dist/src/controllers/HierarchicalMemory.js +0 -519
  655. package/dist/src/controllers/HierarchicalMemory.js.map +0 -1
  656. package/dist/src/controllers/MemoryConsolidation.d.ts +0 -142
  657. package/dist/src/controllers/MemoryConsolidation.d.ts.map +0 -1
  658. package/dist/src/controllers/MemoryConsolidation.js +0 -479
  659. package/dist/src/controllers/MemoryConsolidation.js.map +0 -1
  660. package/dist/src/controllers/QUICConnection.d.ts +0 -122
  661. package/dist/src/controllers/QUICConnection.d.ts.map +0 -1
  662. package/dist/src/controllers/QUICConnection.js +0 -329
  663. package/dist/src/controllers/QUICConnection.js.map +0 -1
  664. package/dist/src/controllers/QUICConnectionPool.d.ts +0 -83
  665. package/dist/src/controllers/QUICConnectionPool.d.ts.map +0 -1
  666. package/dist/src/controllers/QUICConnectionPool.js +0 -256
  667. package/dist/src/controllers/QUICConnectionPool.js.map +0 -1
  668. package/dist/src/controllers/QUICStreamManager.d.ts +0 -114
  669. package/dist/src/controllers/QUICStreamManager.d.ts.map +0 -1
  670. package/dist/src/controllers/QUICStreamManager.js +0 -267
  671. package/dist/src/controllers/QUICStreamManager.js.map +0 -1
  672. package/dist/src/controllers/StreamingEmbeddingService.d.ts +0 -82
  673. package/dist/src/controllers/StreamingEmbeddingService.d.ts.map +0 -1
  674. package/dist/src/controllers/StreamingEmbeddingService.js +0 -243
  675. package/dist/src/controllers/StreamingEmbeddingService.js.map +0 -1
  676. package/dist/src/controllers/index.cjs +0 -6
  677. package/dist/src/coordination/MultiDatabaseCoordinator.d.ts +0 -348
  678. package/dist/src/coordination/MultiDatabaseCoordinator.d.ts.map +0 -1
  679. package/dist/src/coordination/MultiDatabaseCoordinator.js +0 -803
  680. package/dist/src/coordination/MultiDatabaseCoordinator.js.map +0 -1
  681. package/dist/src/coordination/index.d.ts +0 -10
  682. package/dist/src/coordination/index.d.ts.map +0 -1
  683. package/dist/src/coordination/index.js +0 -10
  684. package/dist/src/coordination/index.js.map +0 -1
  685. package/dist/src/index.cjs +0 -6
  686. package/dist/src/optimizations/RVFOptimizer.d.ts +0 -226
  687. package/dist/src/optimizations/RVFOptimizer.d.ts.map +0 -1
  688. package/dist/src/optimizations/RVFOptimizer.js +0 -541
  689. package/dist/src/optimizations/RVFOptimizer.js.map +0 -1
  690. package/dist/src/security/AttestationLog.d.ts +0 -70
  691. package/dist/src/security/AttestationLog.d.ts.map +0 -1
  692. package/dist/src/security/AttestationLog.js +0 -174
  693. package/dist/src/security/AttestationLog.js.map +0 -1
  694. package/dist/src/security/MutationGuard.d.ts +0 -83
  695. package/dist/src/security/MutationGuard.d.ts.map +0 -1
  696. package/dist/src/security/MutationGuard.js +0 -364
  697. package/dist/src/security/MutationGuard.js.map +0 -1
  698. package/dist/src/security/index.cjs +0 -6
  699. package/dist/src/security/index.d.ts +0 -15
  700. package/dist/src/security/index.d.ts.map +0 -1
  701. package/dist/src/security/index.js +0 -18
  702. package/dist/src/security/index.js.map +0 -1
  703. package/dist/src/services/GNNService.d.ts +0 -172
  704. package/dist/src/services/GNNService.d.ts.map +0 -1
  705. package/dist/src/services/GNNService.js +0 -612
  706. package/dist/src/services/GNNService.js.map +0 -1
  707. package/dist/src/services/GraphTransformerService.d.ts +0 -80
  708. package/dist/src/services/GraphTransformerService.d.ts.map +0 -1
  709. package/dist/src/services/GraphTransformerService.js +0 -369
  710. package/dist/src/services/GraphTransformerService.js.map +0 -1
  711. package/dist/src/services/SemanticRouter.d.ts +0 -83
  712. package/dist/src/services/SemanticRouter.d.ts.map +0 -1
  713. package/dist/src/services/SemanticRouter.js +0 -160
  714. package/dist/src/services/SemanticRouter.js.map +0 -1
  715. package/dist/src/services/SonaTrajectoryService.d.ts +0 -224
  716. package/dist/src/services/SonaTrajectoryService.d.ts.map +0 -1
  717. package/dist/src/services/SonaTrajectoryService.js +0 -539
  718. package/dist/src/services/SonaTrajectoryService.js.map +0 -1
  719. package/dist/src/utils/LegacyAttentionAdapter.d.ts +0 -93
  720. package/dist/src/utils/LegacyAttentionAdapter.d.ts.map +0 -1
  721. package/dist/src/utils/LegacyAttentionAdapter.js +0 -241
  722. package/dist/src/utils/LegacyAttentionAdapter.js.map +0 -1
  723. package/dist/src/utils/vector-math.d.ts +0 -29
  724. package/dist/src/utils/vector-math.d.ts.map +0 -1
  725. package/dist/src/utils/vector-math.js +0 -66
  726. 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