agentdb 3.0.0-alpha.10 → 3.0.0-alpha.12

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 (648) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2821 -225
  3. package/dist/src/backends/VectorBackend.d.ts +31 -6
  4. package/dist/src/backends/VectorBackend.d.ts.map +1 -1
  5. package/dist/src/backends/detector.js.map +1 -1
  6. package/dist/src/backends/factory.d.ts +16 -33
  7. package/dist/src/backends/factory.d.ts.map +1 -1
  8. package/dist/src/backends/factory.js +138 -108
  9. package/dist/src/backends/factory.js.map +1 -1
  10. package/dist/src/backends/hnswlib/HNSWLibBackend.d.ts.map +1 -1
  11. package/dist/src/backends/hnswlib/HNSWLibBackend.js +29 -2
  12. package/dist/src/backends/hnswlib/HNSWLibBackend.js.map +1 -1
  13. package/dist/src/backends/ruvector/RuVectorBackend.d.ts +198 -45
  14. package/dist/src/backends/ruvector/RuVectorBackend.d.ts.map +1 -1
  15. package/dist/src/backends/ruvector/RuVectorBackend.js +612 -277
  16. package/dist/src/backends/ruvector/RuVectorBackend.js.map +1 -1
  17. package/dist/src/backends/ruvector/RuVectorLearning.d.ts +0 -4
  18. package/dist/src/backends/ruvector/RuVectorLearning.d.ts.map +1 -1
  19. package/dist/src/backends/ruvector/RuVectorLearning.js +0 -6
  20. package/dist/src/backends/ruvector/RuVectorLearning.js.map +1 -1
  21. package/dist/src/backends/rvf/AdaptiveIndexTuner.d.ts +175 -0
  22. package/dist/src/backends/rvf/AdaptiveIndexTuner.d.ts.map +1 -0
  23. package/dist/src/backends/rvf/AdaptiveIndexTuner.js +559 -0
  24. package/dist/src/backends/rvf/AdaptiveIndexTuner.js.map +1 -0
  25. package/dist/src/backends/rvf/ContrastiveTrainer.d.ts +148 -0
  26. package/dist/src/backends/rvf/ContrastiveTrainer.d.ts.map +1 -0
  27. package/dist/src/backends/rvf/ContrastiveTrainer.js +438 -0
  28. package/dist/src/backends/rvf/ContrastiveTrainer.js.map +1 -0
  29. package/dist/src/backends/rvf/FederatedSessionManager.d.ts +211 -0
  30. package/dist/src/backends/rvf/FederatedSessionManager.d.ts.map +1 -0
  31. package/dist/src/backends/rvf/FederatedSessionManager.js +389 -0
  32. package/dist/src/backends/rvf/FederatedSessionManager.js.map +1 -0
  33. package/dist/src/backends/rvf/FilterBuilder.d.ts +136 -0
  34. package/dist/src/backends/rvf/FilterBuilder.d.ts.map +1 -0
  35. package/dist/src/backends/rvf/FilterBuilder.js +157 -0
  36. package/dist/src/backends/rvf/FilterBuilder.js.map +1 -0
  37. package/dist/src/backends/rvf/NativeAccelerator.d.ts +140 -0
  38. package/dist/src/backends/rvf/NativeAccelerator.d.ts.map +1 -0
  39. package/dist/src/backends/rvf/NativeAccelerator.js +630 -0
  40. package/dist/src/backends/rvf/NativeAccelerator.js.map +1 -0
  41. package/dist/src/backends/rvf/RvfBackend.d.ts +194 -0
  42. package/dist/src/backends/rvf/RvfBackend.d.ts.map +1 -0
  43. package/dist/src/backends/rvf/RvfBackend.js +607 -0
  44. package/dist/src/backends/rvf/RvfBackend.js.map +1 -0
  45. package/dist/src/backends/rvf/RvfSolver.d.ts +175 -0
  46. package/dist/src/backends/rvf/RvfSolver.d.ts.map +1 -0
  47. package/dist/src/backends/rvf/RvfSolver.js +176 -0
  48. package/dist/src/backends/rvf/RvfSolver.js.map +1 -0
  49. package/dist/src/backends/rvf/SelfLearningRvfBackend.d.ts +143 -0
  50. package/dist/src/backends/rvf/SelfLearningRvfBackend.d.ts.map +1 -0
  51. package/dist/src/backends/rvf/SelfLearningRvfBackend.js +569 -0
  52. package/dist/src/backends/rvf/SelfLearningRvfBackend.js.map +1 -0
  53. package/dist/src/backends/rvf/SemanticQueryRouter.d.ts +128 -0
  54. package/dist/src/backends/rvf/SemanticQueryRouter.d.ts.map +1 -0
  55. package/dist/src/backends/rvf/SemanticQueryRouter.js +415 -0
  56. package/dist/src/backends/rvf/SemanticQueryRouter.js.map +1 -0
  57. package/dist/src/backends/rvf/SimdFallbacks.d.ts +25 -0
  58. package/dist/src/backends/rvf/SimdFallbacks.d.ts.map +1 -0
  59. package/dist/src/backends/rvf/SimdFallbacks.js +287 -0
  60. package/dist/src/backends/rvf/SimdFallbacks.js.map +1 -0
  61. package/dist/src/backends/rvf/SolverBandit.d.ts +100 -0
  62. package/dist/src/backends/rvf/SolverBandit.d.ts.map +1 -0
  63. package/dist/src/backends/rvf/SolverBandit.js +216 -0
  64. package/dist/src/backends/rvf/SolverBandit.js.map +1 -0
  65. package/dist/src/backends/rvf/SonaLearningBackend.d.ts +157 -0
  66. package/dist/src/backends/rvf/SonaLearningBackend.d.ts.map +1 -0
  67. package/dist/src/backends/rvf/SonaLearningBackend.js +283 -0
  68. package/dist/src/backends/rvf/SonaLearningBackend.js.map +1 -0
  69. package/dist/src/backends/rvf/SqlJsRvfBackend.d.ts +77 -0
  70. package/dist/src/backends/rvf/SqlJsRvfBackend.d.ts.map +1 -0
  71. package/dist/src/backends/rvf/SqlJsRvfBackend.js +382 -0
  72. package/dist/src/backends/rvf/SqlJsRvfBackend.js.map +1 -0
  73. package/dist/src/backends/rvf/WasmStoreBridge.d.ts +27 -0
  74. package/dist/src/backends/rvf/WasmStoreBridge.d.ts.map +1 -0
  75. package/dist/src/backends/rvf/WasmStoreBridge.js +87 -0
  76. package/dist/src/backends/rvf/WasmStoreBridge.js.map +1 -0
  77. package/dist/src/backends/rvf/validation.d.ts +20 -0
  78. package/dist/src/backends/rvf/validation.d.ts.map +1 -0
  79. package/dist/src/backends/rvf/validation.js +78 -0
  80. package/dist/src/backends/rvf/validation.js.map +1 -0
  81. package/dist/src/benchmark/BenchmarkSuite.d.ts +318 -0
  82. package/dist/src/benchmark/BenchmarkSuite.d.ts.map +1 -0
  83. package/dist/src/benchmark/BenchmarkSuite.js +984 -0
  84. package/dist/src/benchmark/BenchmarkSuite.js.map +1 -0
  85. package/dist/src/benchmark/index.d.ts +29 -0
  86. package/dist/src/benchmark/index.d.ts.map +1 -0
  87. package/dist/src/benchmark/index.js +39 -0
  88. package/dist/src/benchmark/index.js.map +1 -0
  89. package/dist/src/browser/AttentionBrowser.d.ts.map +1 -1
  90. package/dist/src/browser/AttentionBrowser.js +1 -0
  91. package/dist/src/browser/AttentionBrowser.js.map +1 -1
  92. package/dist/src/cli/agentdb-cli.d.ts +13 -0
  93. package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
  94. package/dist/src/cli/agentdb-cli.js +803 -94
  95. package/dist/src/cli/agentdb-cli.js.map +1 -1
  96. package/dist/src/cli/commands/hyperbolic.d.ts +11 -0
  97. package/dist/src/cli/commands/hyperbolic.d.ts.map +1 -0
  98. package/dist/src/cli/commands/hyperbolic.js +428 -0
  99. package/dist/src/cli/commands/hyperbolic.js.map +1 -0
  100. package/dist/src/cli/commands/learn.d.ts +11 -0
  101. package/dist/src/cli/commands/learn.d.ts.map +1 -0
  102. package/dist/src/cli/commands/learn.js +404 -0
  103. package/dist/src/cli/commands/learn.js.map +1 -0
  104. package/dist/src/cli/commands/migrate.d.ts +15 -0
  105. package/dist/src/cli/commands/migrate.d.ts.map +1 -1
  106. package/dist/src/cli/commands/migrate.js +176 -8
  107. package/dist/src/cli/commands/migrate.js.map +1 -1
  108. package/dist/src/cli/commands/route.d.ts +11 -0
  109. package/dist/src/cli/commands/route.d.ts.map +1 -0
  110. package/dist/src/cli/commands/route.js +414 -0
  111. package/dist/src/cli/commands/route.js.map +1 -0
  112. package/dist/src/cli/commands/rvf.d.ts +21 -0
  113. package/dist/src/cli/commands/rvf.d.ts.map +1 -0
  114. package/dist/src/cli/commands/rvf.js +448 -0
  115. package/dist/src/cli/commands/rvf.js.map +1 -0
  116. package/dist/src/cli/lib/report-store.d.ts +2 -1
  117. package/dist/src/cli/lib/report-store.d.ts.map +1 -1
  118. package/dist/src/cli/lib/report-store.js +85 -65
  119. package/dist/src/cli/lib/report-store.js.map +1 -1
  120. package/dist/src/cli/lib/simulation-runner.d.ts +40 -3
  121. package/dist/src/cli/lib/simulation-runner.d.ts.map +1 -1
  122. package/dist/src/cli/lib/simulation-runner.js +248 -6
  123. package/dist/src/cli/lib/simulation-runner.js.map +1 -1
  124. package/dist/src/compatibility/DeprecationWarnings.d.ts +54 -0
  125. package/dist/src/compatibility/DeprecationWarnings.d.ts.map +1 -0
  126. package/dist/src/compatibility/DeprecationWarnings.js +131 -0
  127. package/dist/src/compatibility/DeprecationWarnings.js.map +1 -0
  128. package/dist/src/compatibility/MigrationUtilities.d.ts +30 -0
  129. package/dist/src/compatibility/MigrationUtilities.d.ts.map +1 -0
  130. package/dist/src/compatibility/MigrationUtilities.js +184 -0
  131. package/dist/src/compatibility/MigrationUtilities.js.map +1 -0
  132. package/dist/src/compatibility/V1toV2Adapter.d.ts +76 -0
  133. package/dist/src/compatibility/V1toV2Adapter.d.ts.map +1 -0
  134. package/dist/src/compatibility/V1toV2Adapter.js +185 -0
  135. package/dist/src/compatibility/V1toV2Adapter.js.map +1 -0
  136. package/dist/src/compatibility/VersionDetector.d.ts +32 -0
  137. package/dist/src/compatibility/VersionDetector.d.ts.map +1 -0
  138. package/dist/src/compatibility/VersionDetector.js +144 -0
  139. package/dist/src/compatibility/VersionDetector.js.map +1 -0
  140. package/dist/src/compatibility/index.d.ts +14 -0
  141. package/dist/src/compatibility/index.d.ts.map +1 -0
  142. package/dist/src/compatibility/index.js +21 -0
  143. package/dist/src/compatibility/index.js.map +1 -0
  144. package/dist/src/compatibility/types.d.ts +103 -0
  145. package/dist/src/compatibility/types.d.ts.map +1 -0
  146. package/dist/src/compatibility/types.js +5 -0
  147. package/dist/src/compatibility/types.js.map +1 -0
  148. package/dist/src/controllers/AttentionService.d.ts +99 -202
  149. package/dist/src/controllers/AttentionService.d.ts.map +1 -1
  150. package/dist/src/controllers/AttentionService.js +450 -558
  151. package/dist/src/controllers/AttentionService.js.map +1 -1
  152. package/dist/src/controllers/CausalMemoryGraph.d.ts +30 -5
  153. package/dist/src/controllers/CausalMemoryGraph.d.ts.map +1 -1
  154. package/dist/src/controllers/CausalMemoryGraph.js +89 -13
  155. package/dist/src/controllers/CausalMemoryGraph.js.map +1 -1
  156. package/dist/src/controllers/CausalRecall.d.ts +4 -0
  157. package/dist/src/controllers/CausalRecall.d.ts.map +1 -1
  158. package/dist/src/controllers/CausalRecall.js +19 -2
  159. package/dist/src/controllers/CausalRecall.js.map +1 -1
  160. package/dist/src/controllers/EmbeddingService.d.ts.map +1 -1
  161. package/dist/src/controllers/EmbeddingService.js +28 -11
  162. package/dist/src/controllers/EmbeddingService.js.map +1 -1
  163. package/dist/src/controllers/EnhancedEmbeddingService.d.ts +4 -0
  164. package/dist/src/controllers/EnhancedEmbeddingService.d.ts.map +1 -1
  165. package/dist/src/controllers/EnhancedEmbeddingService.js +17 -3
  166. package/dist/src/controllers/EnhancedEmbeddingService.js.map +1 -1
  167. package/dist/src/controllers/ExplainableRecall.d.ts +1 -1
  168. package/dist/src/controllers/ExplainableRecall.d.ts.map +1 -1
  169. package/dist/src/controllers/ExplainableRecall.js +1 -1
  170. package/dist/src/controllers/ExplainableRecall.js.map +1 -1
  171. package/dist/src/controllers/HNSWIndex.d.ts +20 -2
  172. package/dist/src/controllers/HNSWIndex.d.ts.map +1 -1
  173. package/dist/src/controllers/HNSWIndex.js +82 -6
  174. package/dist/src/controllers/HNSWIndex.js.map +1 -1
  175. package/dist/src/controllers/LearningSystem.d.ts +1 -17
  176. package/dist/src/controllers/LearningSystem.d.ts.map +1 -1
  177. package/dist/src/controllers/LearningSystem.js +18 -135
  178. package/dist/src/controllers/LearningSystem.js.map +1 -1
  179. package/dist/src/controllers/MemoryController.d.ts +161 -0
  180. package/dist/src/controllers/MemoryController.d.ts.map +1 -0
  181. package/dist/src/controllers/MemoryController.js +303 -0
  182. package/dist/src/controllers/MemoryController.js.map +1 -0
  183. package/dist/src/controllers/MincutService.d.ts +92 -0
  184. package/dist/src/controllers/MincutService.d.ts.map +1 -0
  185. package/dist/src/controllers/MincutService.js +336 -0
  186. package/dist/src/controllers/MincutService.js.map +1 -0
  187. package/dist/src/controllers/NightlyLearner.d.ts +5 -1
  188. package/dist/src/controllers/NightlyLearner.d.ts.map +1 -1
  189. package/dist/src/controllers/NightlyLearner.js +17 -3
  190. package/dist/src/controllers/NightlyLearner.js.map +1 -1
  191. package/dist/src/controllers/QUICClient.d.ts +45 -0
  192. package/dist/src/controllers/QUICClient.d.ts.map +1 -1
  193. package/dist/src/controllers/QUICClient.js +190 -0
  194. package/dist/src/controllers/QUICClient.js.map +1 -1
  195. package/dist/src/controllers/ReasoningBank.d.ts +6 -3
  196. package/dist/src/controllers/ReasoningBank.d.ts.map +1 -1
  197. package/dist/src/controllers/ReasoningBank.js +47 -41
  198. package/dist/src/controllers/ReasoningBank.js.map +1 -1
  199. package/dist/src/controllers/ReflexionMemory.d.ts +115 -6
  200. package/dist/src/controllers/ReflexionMemory.d.ts.map +1 -1
  201. package/dist/src/controllers/ReflexionMemory.js +541 -213
  202. package/dist/src/controllers/ReflexionMemory.js.map +1 -1
  203. package/dist/src/controllers/SkillLibrary.d.ts +27 -3
  204. package/dist/src/controllers/SkillLibrary.d.ts.map +1 -1
  205. package/dist/src/controllers/SkillLibrary.js +187 -91
  206. package/dist/src/controllers/SkillLibrary.js.map +1 -1
  207. package/dist/src/controllers/SparsificationService.d.ts +151 -0
  208. package/dist/src/controllers/SparsificationService.d.ts.map +1 -0
  209. package/dist/src/controllers/SparsificationService.js +375 -0
  210. package/dist/src/controllers/SparsificationService.js.map +1 -0
  211. package/dist/src/controllers/SyncCoordinator.d.ts.map +1 -1
  212. package/dist/src/controllers/SyncCoordinator.js +115 -3
  213. package/dist/src/controllers/SyncCoordinator.js.map +1 -1
  214. package/dist/src/controllers/WASMVectorSearch.d.ts +12 -30
  215. package/dist/src/controllers/WASMVectorSearch.d.ts.map +1 -1
  216. package/dist/src/controllers/WASMVectorSearch.js +146 -93
  217. package/dist/src/controllers/WASMVectorSearch.js.map +1 -1
  218. package/dist/src/controllers/attention/AttentionCache.d.ts +38 -0
  219. package/dist/src/controllers/attention/AttentionCache.d.ts.map +1 -0
  220. package/dist/src/controllers/attention/AttentionCache.js +80 -0
  221. package/dist/src/controllers/attention/AttentionCache.js.map +1 -0
  222. package/dist/src/controllers/attention/AttentionConfig.d.ts +127 -0
  223. package/dist/src/controllers/attention/AttentionConfig.d.ts.map +1 -0
  224. package/dist/src/controllers/attention/AttentionConfig.js +124 -0
  225. package/dist/src/controllers/attention/AttentionConfig.js.map +1 -0
  226. package/dist/src/controllers/attention/AttentionCore.d.ts +89 -0
  227. package/dist/src/controllers/attention/AttentionCore.d.ts.map +1 -0
  228. package/dist/src/controllers/attention/AttentionCore.js +289 -0
  229. package/dist/src/controllers/attention/AttentionCore.js.map +1 -0
  230. package/dist/src/controllers/attention/AttentionHelpers.d.ts +55 -0
  231. package/dist/src/controllers/attention/AttentionHelpers.d.ts.map +1 -0
  232. package/dist/src/controllers/attention/AttentionHelpers.js +148 -0
  233. package/dist/src/controllers/attention/AttentionHelpers.js.map +1 -0
  234. package/dist/src/controllers/attention/AttentionMetrics.d.ts +55 -0
  235. package/dist/src/controllers/attention/AttentionMetrics.d.ts.map +1 -0
  236. package/dist/src/controllers/attention/AttentionMetrics.js +72 -0
  237. package/dist/src/controllers/attention/AttentionMetrics.js.map +1 -0
  238. package/dist/src/controllers/attention/AttentionWASM.d.ts +98 -0
  239. package/dist/src/controllers/attention/AttentionWASM.d.ts.map +1 -0
  240. package/dist/src/controllers/attention/AttentionWASM.js +147 -0
  241. package/dist/src/controllers/attention/AttentionWASM.js.map +1 -0
  242. package/dist/src/controllers/attention/CrossAttentionController.d.ts +141 -0
  243. package/dist/src/controllers/attention/CrossAttentionController.d.ts.map +1 -0
  244. package/dist/src/controllers/attention/CrossAttentionController.js +325 -0
  245. package/dist/src/controllers/attention/CrossAttentionController.js.map +1 -0
  246. package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts +137 -0
  247. package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts.map +1 -0
  248. package/dist/src/controllers/attention/MultiHeadAttentionController.js +336 -0
  249. package/dist/src/controllers/attention/MultiHeadAttentionController.js.map +1 -0
  250. package/dist/src/controllers/attention/SelfAttentionController.d.ts +117 -0
  251. package/dist/src/controllers/attention/SelfAttentionController.d.ts.map +1 -0
  252. package/dist/src/controllers/attention/SelfAttentionController.js +205 -0
  253. package/dist/src/controllers/attention/SelfAttentionController.js.map +1 -0
  254. package/dist/src/controllers/attention/index.d.ts +24 -0
  255. package/dist/src/controllers/attention/index.d.ts.map +1 -0
  256. package/dist/src/controllers/attention/index.js +20 -0
  257. package/dist/src/controllers/attention/index.js.map +1 -0
  258. package/dist/src/controllers/index.d.ts +14 -27
  259. package/dist/src/controllers/index.d.ts.map +1 -1
  260. package/dist/src/controllers/index.js +10 -18
  261. package/dist/src/controllers/index.js.map +1 -1
  262. package/dist/src/controllers/prerequisites.d.ts +76 -0
  263. package/dist/src/controllers/prerequisites.d.ts.map +1 -0
  264. package/dist/src/controllers/prerequisites.js +235 -0
  265. package/dist/src/controllers/prerequisites.js.map +1 -0
  266. package/dist/src/core/AgentDB.d.ts +27 -19
  267. package/dist/src/core/AgentDB.d.ts.map +1 -1
  268. package/dist/src/core/AgentDB.js +76 -124
  269. package/dist/src/core/AgentDB.js.map +1 -1
  270. package/dist/src/core/QueryCache.d.ts +138 -0
  271. package/dist/src/core/QueryCache.d.ts.map +1 -0
  272. package/dist/src/core/QueryCache.js +309 -0
  273. package/dist/src/core/QueryCache.js.map +1 -0
  274. package/dist/src/db-fallback.d.ts +10 -1
  275. package/dist/src/db-fallback.d.ts.map +1 -1
  276. package/dist/src/db-fallback.js +205 -28
  277. package/dist/src/db-fallback.js.map +1 -1
  278. package/dist/src/examples/quic-sync-example.js +2 -2
  279. package/dist/src/examples/quic-sync-example.js.map +1 -1
  280. package/dist/src/index.d.ts +15 -15
  281. package/dist/src/index.d.ts.map +1 -1
  282. package/dist/src/index.js +39 -11
  283. package/dist/src/index.js.map +1 -1
  284. package/dist/src/mcp/agentdb-mcp-server.js +47 -2
  285. package/dist/src/mcp/agentdb-mcp-server.js.map +1 -1
  286. package/dist/src/model/ModelCacheLoader.d.ts +24 -0
  287. package/dist/src/model/ModelCacheLoader.d.ts.map +1 -0
  288. package/dist/src/model/ModelCacheLoader.js +121 -0
  289. package/dist/src/model/ModelCacheLoader.js.map +1 -0
  290. package/dist/src/observability/index.d.ts +8 -0
  291. package/dist/src/observability/index.d.ts.map +1 -0
  292. package/dist/src/observability/index.js +8 -0
  293. package/dist/src/observability/index.js.map +1 -0
  294. package/dist/src/observability/integration.d.ts +32 -0
  295. package/dist/src/observability/integration.d.ts.map +1 -0
  296. package/dist/src/observability/integration.js +159 -0
  297. package/dist/src/observability/integration.js.map +1 -0
  298. package/dist/src/observability/telemetry.d.ts +137 -0
  299. package/dist/src/observability/telemetry.d.ts.map +1 -0
  300. package/dist/src/observability/telemetry.js +416 -0
  301. package/dist/src/observability/telemetry.js.map +1 -0
  302. package/dist/src/optimizations/BatchOperations.d.ts +47 -0
  303. package/dist/src/optimizations/BatchOperations.d.ts.map +1 -1
  304. package/dist/src/optimizations/BatchOperations.js +183 -31
  305. package/dist/src/optimizations/BatchOperations.js.map +1 -1
  306. package/dist/src/optimizations/Quantization.d.ts +330 -0
  307. package/dist/src/optimizations/Quantization.d.ts.map +1 -0
  308. package/dist/src/optimizations/Quantization.js +793 -0
  309. package/dist/src/optimizations/Quantization.js.map +1 -0
  310. package/dist/src/optimizations/index.d.ts +1 -3
  311. package/dist/src/optimizations/index.d.ts.map +1 -1
  312. package/dist/src/optimizations/index.js +0 -1
  313. package/dist/src/optimizations/index.js.map +1 -1
  314. package/dist/src/quantization/index.d.ts +7 -0
  315. package/dist/src/quantization/index.d.ts.map +1 -0
  316. package/dist/src/quantization/index.js +15 -0
  317. package/dist/src/quantization/index.js.map +1 -0
  318. package/dist/src/quantization/vector-quantization.d.ts +388 -0
  319. package/dist/src/quantization/vector-quantization.d.ts.map +1 -0
  320. package/dist/src/quantization/vector-quantization.js +1132 -0
  321. package/dist/src/quantization/vector-quantization.js.map +1 -0
  322. package/dist/src/search/HybridSearch.d.ts +311 -0
  323. package/dist/src/search/HybridSearch.d.ts.map +1 -0
  324. package/dist/src/search/HybridSearch.js +712 -0
  325. package/dist/src/search/HybridSearch.js.map +1 -0
  326. package/dist/src/search/index.d.ts +12 -0
  327. package/dist/src/search/index.d.ts.map +1 -0
  328. package/dist/src/search/index.js +16 -0
  329. package/dist/src/search/index.js.map +1 -0
  330. package/dist/src/services/AttentionService.d.ts +303 -0
  331. package/dist/src/services/AttentionService.d.ts.map +1 -0
  332. package/dist/src/services/AttentionService.js +1165 -0
  333. package/dist/src/services/AttentionService.js.map +1 -0
  334. package/dist/src/services/LLMRouter.d.ts +61 -7
  335. package/dist/src/services/LLMRouter.d.ts.map +1 -1
  336. package/dist/src/services/LLMRouter.js +286 -22
  337. package/dist/src/services/LLMRouter.js.map +1 -1
  338. package/dist/src/services/audit-logger.service.d.ts +168 -0
  339. package/dist/src/services/audit-logger.service.d.ts.map +1 -0
  340. package/dist/src/services/audit-logger.service.js +331 -0
  341. package/dist/src/services/audit-logger.service.js.map +1 -0
  342. package/dist/src/services/enhanced-embeddings.d.ts +271 -0
  343. package/dist/src/services/enhanced-embeddings.d.ts.map +1 -0
  344. package/dist/src/services/enhanced-embeddings.js +1035 -0
  345. package/dist/src/services/enhanced-embeddings.js.map +1 -0
  346. package/dist/src/services/federated-learning.d.ts +172 -0
  347. package/dist/src/services/federated-learning.d.ts.map +1 -0
  348. package/dist/src/services/federated-learning.js +342 -0
  349. package/dist/src/services/federated-learning.js.map +1 -0
  350. package/dist/src/simd/index.d.ts +9 -0
  351. package/dist/src/simd/index.d.ts.map +1 -0
  352. package/dist/src/simd/index.js +27 -0
  353. package/dist/src/simd/index.js.map +1 -0
  354. package/dist/src/simd/simd-vector-ops.d.ts +332 -0
  355. package/dist/src/simd/simd-vector-ops.d.ts.map +1 -0
  356. package/dist/src/simd/simd-vector-ops.js +945 -0
  357. package/dist/src/simd/simd-vector-ops.js.map +1 -0
  358. package/dist/src/types/database.types.d.ts +275 -0
  359. package/dist/src/types/database.types.d.ts.map +1 -0
  360. package/dist/src/types/database.types.js +55 -0
  361. package/dist/src/types/database.types.js.map +1 -0
  362. package/dist/src/types/graph.d.ts +29 -0
  363. package/dist/src/types/graph.d.ts.map +1 -0
  364. package/dist/src/types/graph.js +8 -0
  365. package/dist/src/types/graph.js.map +1 -0
  366. package/dist/src/utils/chalk-fallback.d.ts +3 -0
  367. package/dist/src/utils/chalk-fallback.d.ts.map +1 -0
  368. package/dist/src/utils/chalk-fallback.js +20 -0
  369. package/dist/src/utils/chalk-fallback.js.map +1 -0
  370. package/dist/src/utils/similarity.d.ts +11 -0
  371. package/dist/src/utils/similarity.d.ts.map +1 -0
  372. package/dist/src/utils/similarity.js +25 -0
  373. package/dist/src/utils/similarity.js.map +1 -0
  374. package/dist/src/wasm-loader.d.ts +66 -0
  375. package/dist/src/wasm-loader.d.ts.map +1 -0
  376. package/dist/src/wasm-loader.js +76 -0
  377. package/dist/src/wasm-loader.js.map +1 -0
  378. package/dist/src/wrappers/agentdb-fast.d.ts +139 -0
  379. package/dist/src/wrappers/agentdb-fast.d.ts.map +1 -0
  380. package/dist/src/wrappers/agentdb-fast.js +307 -0
  381. package/dist/src/wrappers/agentdb-fast.js.map +1 -0
  382. package/dist/src/wrappers/attention-fallbacks.d.ts +343 -0
  383. package/dist/src/wrappers/attention-fallbacks.d.ts.map +1 -0
  384. package/dist/src/wrappers/attention-fallbacks.js +1484 -0
  385. package/dist/src/wrappers/attention-fallbacks.js.map +1 -0
  386. package/dist/src/wrappers/attention-native.d.ts +111 -0
  387. package/dist/src/wrappers/attention-native.d.ts.map +1 -0
  388. package/dist/src/wrappers/attention-native.js +273 -0
  389. package/dist/src/wrappers/attention-native.js.map +1 -0
  390. package/dist/src/wrappers/embedding-service.d.ts +117 -0
  391. package/dist/src/wrappers/embedding-service.d.ts.map +1 -0
  392. package/dist/src/wrappers/embedding-service.js +370 -0
  393. package/dist/src/wrappers/embedding-service.js.map +1 -0
  394. package/dist/src/wrappers/gnn-wrapper.d.ts +71 -0
  395. package/dist/src/wrappers/gnn-wrapper.d.ts.map +1 -0
  396. package/dist/src/wrappers/gnn-wrapper.js +236 -0
  397. package/dist/src/wrappers/gnn-wrapper.js.map +1 -0
  398. package/dist/src/wrappers/index.d.ts +48 -0
  399. package/dist/src/wrappers/index.d.ts.map +1 -0
  400. package/dist/src/wrappers/index.js +83 -0
  401. package/dist/src/wrappers/index.js.map +1 -0
  402. package/package.json +77 -76
  403. package/scripts/postinstall.cjs +13 -144
  404. package/dist/agentdb.browser.js +0 -1685
  405. package/dist/agentdb.browser.js.map +0 -7
  406. package/dist/agentdb.browser.min.js +0 -3
  407. package/dist/agentdb.browser.min.js.map +0 -7
  408. package/dist/agentdb.wasm-loader.js +0 -207
  409. package/dist/backends/VectorBackend.d.ts +0 -120
  410. package/dist/backends/VectorBackend.js +0 -14
  411. package/dist/backends/VectorBackend.js.map +0 -1
  412. package/dist/optimizations/RVFOptimizer.d.ts +0 -225
  413. package/dist/optimizations/RVFOptimizer.js +0 -541
  414. package/dist/optimizations/RVFOptimizer.js.map +0 -1
  415. package/dist/schemas/frontier-schema.sql +0 -378
  416. package/dist/schemas/schema.sql +0 -382
  417. package/dist/simulation/cli.d.ts +0 -9
  418. package/dist/simulation/cli.d.ts.map +0 -1
  419. package/dist/simulation/cli.js +0 -68
  420. package/dist/simulation/cli.js.map +0 -1
  421. package/dist/simulation/runner.d.ts +0 -21
  422. package/dist/simulation/runner.d.ts.map +0 -1
  423. package/dist/simulation/runner.js +0 -241
  424. package/dist/simulation/runner.js.map +0 -1
  425. package/dist/simulation/scenarios/aidefence-integration.d.ts +0 -24
  426. package/dist/simulation/scenarios/aidefence-integration.d.ts.map +0 -1
  427. package/dist/simulation/scenarios/aidefence-integration.js +0 -124
  428. package/dist/simulation/scenarios/aidefence-integration.js.map +0 -1
  429. package/dist/simulation/scenarios/bmssp-integration.d.ts +0 -23
  430. package/dist/simulation/scenarios/bmssp-integration.d.ts.map +0 -1
  431. package/dist/simulation/scenarios/bmssp-integration.js +0 -104
  432. package/dist/simulation/scenarios/bmssp-integration.js.map +0 -1
  433. package/dist/simulation/scenarios/causal-reasoning.d.ts +0 -16
  434. package/dist/simulation/scenarios/causal-reasoning.d.ts.map +0 -1
  435. package/dist/simulation/scenarios/causal-reasoning.js +0 -108
  436. package/dist/simulation/scenarios/causal-reasoning.js.map +0 -1
  437. package/dist/simulation/scenarios/consciousness-explorer.d.ts +0 -25
  438. package/dist/simulation/scenarios/consciousness-explorer.d.ts.map +0 -1
  439. package/dist/simulation/scenarios/consciousness-explorer.js +0 -108
  440. package/dist/simulation/scenarios/consciousness-explorer.js.map +0 -1
  441. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.d.ts +0 -135
  442. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.d.ts.map +0 -1
  443. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.js +0 -158
  444. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.js.map +0 -1
  445. package/dist/simulation/scenarios/domain-examples/index.d.ts +0 -14
  446. package/dist/simulation/scenarios/domain-examples/index.d.ts.map +0 -1
  447. package/dist/simulation/scenarios/domain-examples/index.js +0 -14
  448. package/dist/simulation/scenarios/domain-examples/index.js.map +0 -1
  449. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.d.ts +0 -178
  450. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.d.ts.map +0 -1
  451. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.js +0 -218
  452. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.js.map +0 -1
  453. package/dist/simulation/scenarios/domain-examples/medical-imaging.d.ts +0 -122
  454. package/dist/simulation/scenarios/domain-examples/medical-imaging.d.ts.map +0 -1
  455. package/dist/simulation/scenarios/domain-examples/medical-imaging.js +0 -129
  456. package/dist/simulation/scenarios/domain-examples/medical-imaging.js.map +0 -1
  457. package/dist/simulation/scenarios/domain-examples/robotics-navigation.d.ts +0 -166
  458. package/dist/simulation/scenarios/domain-examples/robotics-navigation.d.ts.map +0 -1
  459. package/dist/simulation/scenarios/domain-examples/robotics-navigation.js +0 -161
  460. package/dist/simulation/scenarios/domain-examples/robotics-navigation.js.map +0 -1
  461. package/dist/simulation/scenarios/domain-examples/scientific-research.d.ts +0 -151
  462. package/dist/simulation/scenarios/domain-examples/scientific-research.d.ts.map +0 -1
  463. package/dist/simulation/scenarios/domain-examples/scientific-research.js +0 -187
  464. package/dist/simulation/scenarios/domain-examples/scientific-research.js.map +0 -1
  465. package/dist/simulation/scenarios/domain-examples/trading-systems.d.ts +0 -102
  466. package/dist/simulation/scenarios/domain-examples/trading-systems.d.ts.map +0 -1
  467. package/dist/simulation/scenarios/domain-examples/trading-systems.js +0 -100
  468. package/dist/simulation/scenarios/domain-examples/trading-systems.js.map +0 -1
  469. package/dist/simulation/scenarios/goalie-integration.d.ts +0 -24
  470. package/dist/simulation/scenarios/goalie-integration.d.ts.map +0 -1
  471. package/dist/simulation/scenarios/goalie-integration.js +0 -121
  472. package/dist/simulation/scenarios/goalie-integration.js.map +0 -1
  473. package/dist/simulation/scenarios/graph-traversal.d.ts +0 -17
  474. package/dist/simulation/scenarios/graph-traversal.d.ts.map +0 -1
  475. package/dist/simulation/scenarios/graph-traversal.js +0 -101
  476. package/dist/simulation/scenarios/graph-traversal.js.map +0 -1
  477. package/dist/simulation/scenarios/latent-space/attention-analysis.d.ts +0 -45
  478. package/dist/simulation/scenarios/latent-space/attention-analysis.d.ts.map +0 -1
  479. package/dist/simulation/scenarios/latent-space/attention-analysis.js +0 -435
  480. package/dist/simulation/scenarios/latent-space/attention-analysis.js.map +0 -1
  481. package/dist/simulation/scenarios/latent-space/clustering-analysis.d.ts +0 -55
  482. package/dist/simulation/scenarios/latent-space/clustering-analysis.d.ts.map +0 -1
  483. package/dist/simulation/scenarios/latent-space/clustering-analysis.js +0 -606
  484. package/dist/simulation/scenarios/latent-space/clustering-analysis.js.map +0 -1
  485. package/dist/simulation/scenarios/latent-space/hnsw-exploration.d.ts +0 -74
  486. package/dist/simulation/scenarios/latent-space/hnsw-exploration.d.ts.map +0 -1
  487. package/dist/simulation/scenarios/latent-space/hnsw-exploration.js +0 -391
  488. package/dist/simulation/scenarios/latent-space/hnsw-exploration.js.map +0 -1
  489. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.d.ts +0 -51
  490. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.d.ts.map +0 -1
  491. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.js +0 -536
  492. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.js.map +0 -1
  493. package/dist/simulation/scenarios/latent-space/index.d.ts +0 -35
  494. package/dist/simulation/scenarios/latent-space/index.d.ts.map +0 -1
  495. package/dist/simulation/scenarios/latent-space/index.js +0 -35
  496. package/dist/simulation/scenarios/latent-space/index.js.map +0 -1
  497. package/dist/simulation/scenarios/latent-space/neural-augmentation.d.ts +0 -52
  498. package/dist/simulation/scenarios/latent-space/neural-augmentation.d.ts.map +0 -1
  499. package/dist/simulation/scenarios/latent-space/neural-augmentation.js +0 -472
  500. package/dist/simulation/scenarios/latent-space/neural-augmentation.js.map +0 -1
  501. package/dist/simulation/scenarios/latent-space/quantum-hybrid.d.ts +0 -53
  502. package/dist/simulation/scenarios/latent-space/quantum-hybrid.d.ts.map +0 -1
  503. package/dist/simulation/scenarios/latent-space/quantum-hybrid.js +0 -391
  504. package/dist/simulation/scenarios/latent-space/quantum-hybrid.js.map +0 -1
  505. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.d.ts +0 -52
  506. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.d.ts.map +0 -1
  507. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.js +0 -514
  508. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.js.map +0 -1
  509. package/dist/simulation/scenarios/latent-space/traversal-optimization.d.ts +0 -53
  510. package/dist/simulation/scenarios/latent-space/traversal-optimization.d.ts.map +0 -1
  511. package/dist/simulation/scenarios/latent-space/traversal-optimization.js +0 -595
  512. package/dist/simulation/scenarios/latent-space/traversal-optimization.js.map +0 -1
  513. package/dist/simulation/scenarios/lean-agentic-swarm.d.ts +0 -18
  514. package/dist/simulation/scenarios/lean-agentic-swarm.d.ts.map +0 -1
  515. package/dist/simulation/scenarios/lean-agentic-swarm.js +0 -132
  516. package/dist/simulation/scenarios/lean-agentic-swarm.js.map +0 -1
  517. package/dist/simulation/scenarios/multi-agent-swarm.d.ts +0 -17
  518. package/dist/simulation/scenarios/multi-agent-swarm.d.ts.map +0 -1
  519. package/dist/simulation/scenarios/multi-agent-swarm.js +0 -111
  520. package/dist/simulation/scenarios/multi-agent-swarm.js.map +0 -1
  521. package/dist/simulation/scenarios/psycho-symbolic-reasoner.d.ts +0 -23
  522. package/dist/simulation/scenarios/psycho-symbolic-reasoner.d.ts.map +0 -1
  523. package/dist/simulation/scenarios/psycho-symbolic-reasoner.js +0 -98
  524. package/dist/simulation/scenarios/psycho-symbolic-reasoner.js.map +0 -1
  525. package/dist/simulation/scenarios/reflexion-learning.d.ts +0 -16
  526. package/dist/simulation/scenarios/reflexion-learning.d.ts.map +0 -1
  527. package/dist/simulation/scenarios/reflexion-learning.js +0 -98
  528. package/dist/simulation/scenarios/reflexion-learning.js.map +0 -1
  529. package/dist/simulation/scenarios/research-swarm.d.ts +0 -24
  530. package/dist/simulation/scenarios/research-swarm.d.ts.map +0 -1
  531. package/dist/simulation/scenarios/research-swarm.js +0 -146
  532. package/dist/simulation/scenarios/research-swarm.js.map +0 -1
  533. package/dist/simulation/scenarios/skill-evolution.d.ts +0 -16
  534. package/dist/simulation/scenarios/skill-evolution.d.ts.map +0 -1
  535. package/dist/simulation/scenarios/skill-evolution.js +0 -109
  536. package/dist/simulation/scenarios/skill-evolution.js.map +0 -1
  537. package/dist/simulation/scenarios/stock-market-emergence.d.ts +0 -33
  538. package/dist/simulation/scenarios/stock-market-emergence.d.ts.map +0 -1
  539. package/dist/simulation/scenarios/stock-market-emergence.js +0 -246
  540. package/dist/simulation/scenarios/stock-market-emergence.js.map +0 -1
  541. package/dist/simulation/scenarios/strange-loops.d.ts +0 -18
  542. package/dist/simulation/scenarios/strange-loops.d.ts.map +0 -1
  543. package/dist/simulation/scenarios/strange-loops.js +0 -133
  544. package/dist/simulation/scenarios/strange-loops.js.map +0 -1
  545. package/dist/simulation/scenarios/sublinear-solver.d.ts +0 -22
  546. package/dist/simulation/scenarios/sublinear-solver.d.ts.map +0 -1
  547. package/dist/simulation/scenarios/sublinear-solver.js +0 -82
  548. package/dist/simulation/scenarios/sublinear-solver.js.map +0 -1
  549. package/dist/simulation/scenarios/temporal-lead-solver.d.ts +0 -23
  550. package/dist/simulation/scenarios/temporal-lead-solver.d.ts.map +0 -1
  551. package/dist/simulation/scenarios/temporal-lead-solver.js +0 -90
  552. package/dist/simulation/scenarios/temporal-lead-solver.js.map +0 -1
  553. package/dist/simulation/scenarios/voting-system-consensus.d.ts +0 -27
  554. package/dist/simulation/scenarios/voting-system-consensus.d.ts.map +0 -1
  555. package/dist/simulation/scenarios/voting-system-consensus.js +0 -175
  556. package/dist/simulation/scenarios/voting-system-consensus.js.map +0 -1
  557. package/dist/simulation/types.d.ts +0 -162
  558. package/dist/simulation/types.d.ts.map +0 -1
  559. package/dist/simulation/types.js +0 -5
  560. package/dist/simulation/types.js.map +0 -1
  561. package/dist/simulation/utils/PerformanceOptimizer.d.ts +0 -115
  562. package/dist/simulation/utils/PerformanceOptimizer.d.ts.map +0 -1
  563. package/dist/simulation/utils/PerformanceOptimizer.js +0 -223
  564. package/dist/simulation/utils/PerformanceOptimizer.js.map +0 -1
  565. package/dist/src/backends/index.cjs +0 -6
  566. package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts +0 -93
  567. package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts.map +0 -1
  568. package/dist/src/backends/ruvector/GuardedVectorBackend.js +0 -182
  569. package/dist/src/backends/ruvector/GuardedVectorBackend.js.map +0 -1
  570. package/dist/src/consensus/RaftConsensus.d.ts +0 -220
  571. package/dist/src/consensus/RaftConsensus.d.ts.map +0 -1
  572. package/dist/src/consensus/RaftConsensus.js +0 -762
  573. package/dist/src/consensus/RaftConsensus.js.map +0 -1
  574. package/dist/src/controllers/HierarchicalMemory.d.ts +0 -197
  575. package/dist/src/controllers/HierarchicalMemory.d.ts.map +0 -1
  576. package/dist/src/controllers/HierarchicalMemory.js +0 -519
  577. package/dist/src/controllers/HierarchicalMemory.js.map +0 -1
  578. package/dist/src/controllers/MemoryConsolidation.d.ts +0 -142
  579. package/dist/src/controllers/MemoryConsolidation.d.ts.map +0 -1
  580. package/dist/src/controllers/MemoryConsolidation.js +0 -479
  581. package/dist/src/controllers/MemoryConsolidation.js.map +0 -1
  582. package/dist/src/controllers/QUICConnection.d.ts +0 -122
  583. package/dist/src/controllers/QUICConnection.d.ts.map +0 -1
  584. package/dist/src/controllers/QUICConnection.js +0 -329
  585. package/dist/src/controllers/QUICConnection.js.map +0 -1
  586. package/dist/src/controllers/QUICConnectionPool.d.ts +0 -83
  587. package/dist/src/controllers/QUICConnectionPool.d.ts.map +0 -1
  588. package/dist/src/controllers/QUICConnectionPool.js +0 -256
  589. package/dist/src/controllers/QUICConnectionPool.js.map +0 -1
  590. package/dist/src/controllers/QUICStreamManager.d.ts +0 -114
  591. package/dist/src/controllers/QUICStreamManager.d.ts.map +0 -1
  592. package/dist/src/controllers/QUICStreamManager.js +0 -267
  593. package/dist/src/controllers/QUICStreamManager.js.map +0 -1
  594. package/dist/src/controllers/StreamingEmbeddingService.d.ts +0 -82
  595. package/dist/src/controllers/StreamingEmbeddingService.d.ts.map +0 -1
  596. package/dist/src/controllers/StreamingEmbeddingService.js +0 -243
  597. package/dist/src/controllers/StreamingEmbeddingService.js.map +0 -1
  598. package/dist/src/controllers/index.cjs +0 -6
  599. package/dist/src/coordination/MultiDatabaseCoordinator.d.ts +0 -348
  600. package/dist/src/coordination/MultiDatabaseCoordinator.d.ts.map +0 -1
  601. package/dist/src/coordination/MultiDatabaseCoordinator.js +0 -803
  602. package/dist/src/coordination/MultiDatabaseCoordinator.js.map +0 -1
  603. package/dist/src/coordination/index.d.ts +0 -10
  604. package/dist/src/coordination/index.d.ts.map +0 -1
  605. package/dist/src/coordination/index.js +0 -10
  606. package/dist/src/coordination/index.js.map +0 -1
  607. package/dist/src/index.cjs +0 -6
  608. package/dist/src/optimizations/RVFOptimizer.d.ts +0 -226
  609. package/dist/src/optimizations/RVFOptimizer.d.ts.map +0 -1
  610. package/dist/src/optimizations/RVFOptimizer.js +0 -541
  611. package/dist/src/optimizations/RVFOptimizer.js.map +0 -1
  612. package/dist/src/security/AttestationLog.d.ts +0 -70
  613. package/dist/src/security/AttestationLog.d.ts.map +0 -1
  614. package/dist/src/security/AttestationLog.js +0 -174
  615. package/dist/src/security/AttestationLog.js.map +0 -1
  616. package/dist/src/security/MutationGuard.d.ts +0 -83
  617. package/dist/src/security/MutationGuard.d.ts.map +0 -1
  618. package/dist/src/security/MutationGuard.js +0 -364
  619. package/dist/src/security/MutationGuard.js.map +0 -1
  620. package/dist/src/security/index.cjs +0 -6
  621. package/dist/src/security/index.d.ts +0 -15
  622. package/dist/src/security/index.d.ts.map +0 -1
  623. package/dist/src/security/index.js +0 -18
  624. package/dist/src/security/index.js.map +0 -1
  625. package/dist/src/services/GNNService.d.ts +0 -173
  626. package/dist/src/services/GNNService.d.ts.map +0 -1
  627. package/dist/src/services/GNNService.js +0 -639
  628. package/dist/src/services/GNNService.js.map +0 -1
  629. package/dist/src/services/GraphTransformerService.d.ts +0 -80
  630. package/dist/src/services/GraphTransformerService.d.ts.map +0 -1
  631. package/dist/src/services/GraphTransformerService.js +0 -369
  632. package/dist/src/services/GraphTransformerService.js.map +0 -1
  633. package/dist/src/services/SemanticRouter.d.ts +0 -83
  634. package/dist/src/services/SemanticRouter.d.ts.map +0 -1
  635. package/dist/src/services/SemanticRouter.js +0 -160
  636. package/dist/src/services/SemanticRouter.js.map +0 -1
  637. package/dist/src/services/SonaTrajectoryService.d.ts +0 -224
  638. package/dist/src/services/SonaTrajectoryService.d.ts.map +0 -1
  639. package/dist/src/services/SonaTrajectoryService.js +0 -539
  640. package/dist/src/services/SonaTrajectoryService.js.map +0 -1
  641. package/dist/src/utils/LegacyAttentionAdapter.d.ts +0 -93
  642. package/dist/src/utils/LegacyAttentionAdapter.d.ts.map +0 -1
  643. package/dist/src/utils/LegacyAttentionAdapter.js +0 -241
  644. package/dist/src/utils/LegacyAttentionAdapter.js.map +0 -1
  645. package/dist/src/utils/vector-math.d.ts +0 -29
  646. package/dist/src/utils/vector-math.d.ts.map +0 -1
  647. package/dist/src/utils/vector-math.js +0 -66
  648. package/dist/src/utils/vector-math.js.map +0 -1
@@ -1,432 +1,730 @@
1
1
  /**
2
- * RuVectorBackend - High-Performance Vector Storage (v0.1.99+)
2
+ * RuVectorBackend - High-Performance Vector Storage
3
3
  *
4
- * Implements VectorBackend using ruvector with native SIMD and multi-threading.
5
- * Updated for ruvector 0.1.99+ async API with object-style insert/search.
4
+ * Implements VectorBackend using @ruvector/core with optional GNN support.
5
+ * Provides <100µs search latency with native SIMD optimizations.
6
6
  *
7
7
  * Features:
8
- * - Native SIMD acceleration (2-4x faster vector ops)
9
- * - Automatic fallback when ruvector packages not installed
8
+ * - Automatic fallback when @ruvector packages not installed
10
9
  * - Separate metadata storage for rich queries
11
- * - Score-to-similarity conversion for all metrics
10
+ * - Distance-to-similarity conversion for all metrics
12
11
  * - Batch operations for optimal throughput
13
- * - Parallel batch search via searchBatch()
14
12
  * - Persistent storage with separate metadata files
13
+ * - Parallel batch insert with configurable concurrency
14
+ * - Buffer pooling to reduce memory allocations
15
+ * - Adaptive index parameters based on dataset size
16
+ * - Memory-mapped support for large indices
17
+ * - Statistics tracking for performance monitoring
15
18
  */
19
+ // ============================================================================
20
+ // Performance & Security Constants
21
+ // ============================================================================
22
+ /** @inline Maximum supported vector dimension for bounds checking */
23
+ export const MAX_VECTOR_DIMENSION = 4096;
24
+ /** @inline Maximum batch size for optimal cache utilization */
25
+ export const MAX_BATCH_SIZE = 10000;
26
+ /** @inline Default cache size for embedding storage */
27
+ export const DEFAULT_CACHE_SIZE = 10000;
28
+ /** @inline Small epsilon for numerical stability */
29
+ const EPSILON = 1e-10;
30
+ /** @inline Maximum metadata entries to prevent memory exhaustion */
31
+ const MAX_METADATA_ENTRIES = 10_000_000;
32
+ /** @inline Maximum path length for file operations */
33
+ const MAX_PATH_LENGTH = 4096;
34
+ /** Forbidden path patterns for security */
35
+ const FORBIDDEN_PATH_PATTERNS = [
36
+ /\.\./, // Path traversal
37
+ /^\/etc\//i, // System config
38
+ /^\/proc\//i, // Process info
39
+ /^\/sys\//i, // System info
40
+ /^\/dev\//i, // Devices
41
+ ];
42
+ // ============================================================================
43
+ // Security Validation Helpers
44
+ // ============================================================================
45
+ /**
46
+ * Validate a file path is safe
47
+ */
48
+ function validatePath(inputPath) {
49
+ if (!inputPath || typeof inputPath !== 'string') {
50
+ throw new Error('Path must be a non-empty string');
51
+ }
52
+ if (inputPath.length > MAX_PATH_LENGTH) {
53
+ throw new Error(`Path exceeds maximum length of ${MAX_PATH_LENGTH}`);
54
+ }
55
+ for (const pattern of FORBIDDEN_PATH_PATTERNS) {
56
+ if (pattern.test(inputPath)) {
57
+ throw new Error(`Path contains forbidden pattern`);
58
+ }
59
+ }
60
+ }
61
+ /**
62
+ * Validate vector dimension is within safe limits
63
+ */
64
+ function validateDimension(dimension) {
65
+ if (!Number.isFinite(dimension) || dimension < 1 || dimension > MAX_VECTOR_DIMENSION) {
66
+ throw new Error(`Dimension must be between 1 and ${MAX_VECTOR_DIMENSION}`);
67
+ }
68
+ }
69
+ /**
70
+ * Semaphore for controlling concurrent operations
71
+ */
72
+ class Semaphore {
73
+ permits;
74
+ waiting = [];
75
+ constructor(permits) {
76
+ this.permits = permits;
77
+ }
78
+ async acquire() {
79
+ if (this.permits > 0) {
80
+ this.permits--;
81
+ return Promise.resolve();
82
+ }
83
+ return new Promise((resolve) => {
84
+ this.waiting.push(resolve);
85
+ });
86
+ }
87
+ release() {
88
+ if (this.waiting.length > 0) {
89
+ const resolve = this.waiting.shift();
90
+ resolve();
91
+ }
92
+ else {
93
+ this.permits++;
94
+ }
95
+ }
96
+ get available() {
97
+ return this.permits;
98
+ }
99
+ }
100
+ /**
101
+ * Buffer pool for reusing Float32Array buffers
102
+ */
103
+ class BufferPool {
104
+ pools = new Map();
105
+ maxPoolSize;
106
+ constructor(maxPoolSize = 100) {
107
+ this.maxPoolSize = maxPoolSize;
108
+ }
109
+ /**
110
+ * Acquire a buffer of the specified size
111
+ */
112
+ acquire(size) {
113
+ const pool = this.pools.get(size);
114
+ if (pool && pool.length > 0) {
115
+ return pool.pop();
116
+ }
117
+ return new Float32Array(size);
118
+ }
119
+ /**
120
+ * Release a buffer back to the pool
121
+ */
122
+ release(buffer) {
123
+ const size = buffer.length;
124
+ if (!this.pools.has(size)) {
125
+ this.pools.set(size, []);
126
+ }
127
+ const pool = this.pools.get(size);
128
+ if (pool.length < this.maxPoolSize) {
129
+ // Clear buffer before returning to pool
130
+ buffer.fill(0);
131
+ pool.push(buffer);
132
+ }
133
+ }
134
+ /**
135
+ * Clear all pooled buffers
136
+ */
137
+ clear() {
138
+ this.pools.clear();
139
+ }
140
+ /**
141
+ * Get pool statistics
142
+ */
143
+ getStats() {
144
+ let totalBuffers = 0;
145
+ let totalMemory = 0;
146
+ for (const [size, pool] of this.pools) {
147
+ totalBuffers += pool.length;
148
+ totalMemory += pool.length * size * 4; // Float32 = 4 bytes
149
+ }
150
+ return { totalBuffers, totalMemory };
151
+ }
152
+ }
16
153
  export class RuVectorBackend {
17
154
  name = 'ruvector';
18
- db; // VectorDB from ruvector 0.1.99+
155
+ db; // VectorDB from @ruvector/core
19
156
  config;
20
157
  metadata = new Map();
21
158
  initialized = false;
22
- learning = null;
23
- nativeVersion = 'unknown';
24
- isNativeImpl = false;
159
+ // Concurrency control
160
+ semaphore;
161
+ bufferPool;
162
+ // Statistics tracking
163
+ stats = {
164
+ insertCount: 0,
165
+ insertTotalLatencyMs: 0,
166
+ insertMinLatencyMs: Infinity,
167
+ insertMaxLatencyMs: 0,
168
+ searchCount: 0,
169
+ searchTotalLatencyMs: 0,
170
+ searchMinLatencyMs: Infinity,
171
+ searchMaxLatencyMs: 0,
172
+ cacheHits: 0,
173
+ cacheMisses: 0,
174
+ lastMemoryUsage: 0,
175
+ indexRebuildCount: 0,
176
+ };
177
+ // Mmap support
178
+ mmapEnabled = false;
179
+ mmapBuffer = null;
25
180
  constructor(config) {
26
181
  // Handle both dimension and dimensions for backward compatibility
27
182
  const dimension = config.dimension ?? config.dimensions;
28
183
  if (!dimension) {
29
184
  throw new Error('Vector dimension is required (use dimension or dimensions)');
30
185
  }
186
+ // Validate dimension for security
187
+ validateDimension(dimension);
31
188
  // Store both forms for compatibility with different backends
32
189
  this.config = { ...config, dimension, dimensions: dimension };
190
+ // Initialize concurrency control with configurable limit (bounded for security)
191
+ const concurrency = Math.min(Math.max(1, config.parallelConcurrency ?? 4), 32);
192
+ this.semaphore = new Semaphore(concurrency);
193
+ // Initialize buffer pool with bounded size
194
+ const bufferPoolSize = Math.min(Math.max(1, config.bufferPoolSize ?? 100), 1000);
195
+ this.bufferPool = new BufferPool(bufferPoolSize);
196
+ // Mmap configuration - validate path if provided
197
+ this.mmapEnabled = config.enableMmap ?? false;
198
+ if (this.mmapEnabled && config.mmapPath) {
199
+ validatePath(config.mmapPath);
200
+ }
33
201
  }
34
202
  /**
35
- * Initialize RuVector database with SIMD and multi-threading (0.1.99+)
203
+ * Get adaptive HNSW parameters based on expected dataset size
204
+ */
205
+ getAdaptiveParams(datasetSize) {
206
+ if (datasetSize < 1000) {
207
+ // Small dataset: lower M and efConstruction for faster builds
208
+ return { M: 8, efConstruction: 100, efSearch: 50 };
209
+ }
210
+ else if (datasetSize <= 100000) {
211
+ // Medium dataset: balanced parameters
212
+ return { M: 16, efConstruction: 200, efSearch: 100 };
213
+ }
214
+ else {
215
+ // Large dataset: higher M for better recall
216
+ return { M: 32, efConstruction: 400, efSearch: 200 };
217
+ }
218
+ }
219
+ /**
220
+ * Initialize RuVector database with optional dependency handling
36
221
  */
37
222
  async initialize() {
38
223
  if (this.initialized)
39
224
  return;
40
225
  try {
41
- // Try main ruvector package first (0.1.99+ with native SIMD)
226
+ // Try main ruvector package first (includes core, gnn, graph)
42
227
  let VectorDB;
43
- let ruvectorModule;
44
228
  try {
45
- ruvectorModule = await import('ruvector');
46
- VectorDB = ruvectorModule.VectorDB || ruvectorModule.default?.VectorDB;
229
+ const ruvector = await import('ruvector');
230
+ VectorDB = ruvector.VectorDB || ruvector.default?.VectorDB;
47
231
  }
48
232
  catch {
49
233
  // Fallback to @ruvector/core for backward compatibility
50
- ruvectorModule = await import('@ruvector/core');
51
- VectorDB = ruvectorModule.VectorDB || ruvectorModule.default?.VectorDB;
234
+ const core = await import('@ruvector/core');
235
+ // ESM and CommonJS both export as VectorDB (capital 'DB')
236
+ VectorDB = core.VectorDB || core.default?.VectorDB;
52
237
  }
53
238
  if (!VectorDB) {
54
- throw new Error('Could not find VectorDB export in ruvector');
239
+ throw new Error('Could not find VectorDB export in @ruvector/core');
55
240
  }
56
241
  // Handle both 'dimension' and 'dimensions' for backward compatibility
57
242
  const dimensions = this.config.dimension ?? this.config.dimensions;
58
243
  if (!dimensions) {
59
244
  throw new Error('Vector dimension is required (use dimension or dimensions)');
60
245
  }
61
- // RuVector 0.1.99+ constructor - uses 'dimensions' (plural)
246
+ // Determine HNSW parameters (adaptive or explicit)
247
+ const maxElements = this.config.maxElements || 100000;
248
+ const useAdaptive = this.config.adaptiveParams !== false;
249
+ const adaptiveParams = useAdaptive ? this.getAdaptiveParams(maxElements) : null;
250
+ const m = this.config.M ?? adaptiveParams?.M ?? 16;
251
+ const efConstruction = this.config.efConstruction ?? adaptiveParams?.efConstruction ?? 200;
252
+ const efSearch = this.config.efSearch ?? adaptiveParams?.efSearch ?? 100;
253
+ // RuVector VectorDB constructor signature
62
254
  this.db = new VectorDB({
63
- dimensions: dimensions,
255
+ dimensions: dimensions, // Note: config object, not positional arg
64
256
  metric: this.config.metric,
65
- maxElements: this.config.maxElements || 100000,
66
- efConstruction: this.config.efConstruction || 200,
67
- m: this.config.M || 16
257
+ maxElements: maxElements,
258
+ efConstruction: efConstruction,
259
+ m: m // Note: lowercase 'm'
68
260
  });
69
- // Detect native SIMD availability
70
- if (ruvectorModule.isNative) {
71
- this.isNativeImpl = ruvectorModule.isNative();
261
+ // Set default efSearch
262
+ if (this.db.setEfSearch) {
263
+ this.db.setEfSearch(efSearch);
72
264
  }
73
- if (ruvectorModule.getVersion) {
74
- const vInfo = ruvectorModule.getVersion();
75
- this.nativeVersion = typeof vInfo === 'string' ? vInfo : vInfo?.version || 'unknown';
265
+ // Initialize memory-mapped storage if enabled and available
266
+ if (this.mmapEnabled && this.config.mmapPath) {
267
+ await this.initializeMmap();
76
268
  }
77
269
  this.initialized = true;
78
270
  }
79
271
  catch (error) {
80
272
  const errorMessage = error.message;
273
+ // Special handling for path validation errors (from ruvector package)
274
+ // When using :memory:, ruvector may reject it as a path traversal attempt
275
+ // This is expected and not critical - users should use file-based paths for ruvector persistence
81
276
  if (errorMessage.includes('Path traversal') || errorMessage.includes('Invalid path')) {
82
277
  throw new Error(`RuVector does not support :memory: database paths.\n` +
83
278
  `Use a file path instead, or RuVector will be skipped and fallback backend will be used.\n` +
84
279
  `Original error: ${errorMessage}`);
85
280
  }
86
- throw new Error(`RuVector initialization failed. Please install: npm install ruvector@latest\n` +
281
+ throw new Error(`RuVector initialization failed. Please install: npm install ruvector\n` +
87
282
  `Or legacy packages: npm install @ruvector/core\n` +
88
283
  `Error: ${errorMessage}`);
89
284
  }
90
285
  }
91
286
  /**
92
- * Insert single vector with optional metadata.
93
- * Uses ruvector 0.1.99+ object-style API: insert({ id, vector, metadata? })
287
+ * Initialize memory-mapped storage for large indices
288
+ */
289
+ async initializeMmap() {
290
+ if (!this.config.mmapPath)
291
+ return;
292
+ // Validate path for security
293
+ validatePath(this.config.mmapPath);
294
+ let fd = null;
295
+ try {
296
+ const fs = await import('fs');
297
+ const pathModule = await import('path');
298
+ // Check if mmap module is available (optional native dependency)
299
+ let mmapModule = null;
300
+ try {
301
+ // Dynamic import of optional native module - known safe module
302
+ const moduleName = 'mmap-io';
303
+ mmapModule = await import(moduleName);
304
+ }
305
+ catch {
306
+ // mmap-io not available, fall back to regular I/O
307
+ console.debug('[RuVectorBackend] mmap-io not available, using standard I/O');
308
+ return;
309
+ }
310
+ if (!mmapModule)
311
+ return;
312
+ const mmapPath = pathModule.resolve(this.config.mmapPath);
313
+ // Re-validate resolved path
314
+ validatePath(mmapPath);
315
+ const mmap = mmapModule;
316
+ // Create or open the mmap file
317
+ if (fs.existsSync(mmapPath)) {
318
+ fd = fs.openSync(mmapPath, 'r+');
319
+ const stats = fs.fstatSync(fd);
320
+ // Validate file size to prevent excessive memory mapping
321
+ const maxMmapSize = 4 * 1024 * 1024 * 1024; // 4GB max
322
+ if (stats.size > maxMmapSize) {
323
+ throw new Error(`Mmap file size ${stats.size} exceeds maximum of ${maxMmapSize}`);
324
+ }
325
+ this.mmapBuffer = mmap.map(stats.size, mmap.PROT_READ | mmap.PROT_WRITE, mmap.MAP_SHARED, fd, 0);
326
+ fs.closeSync(fd);
327
+ fd = null;
328
+ }
329
+ this.mmapEnabled = true;
330
+ }
331
+ catch (error) {
332
+ console.debug(`[RuVectorBackend] Failed to initialize mmap: ${error.message}`);
333
+ this.mmapEnabled = false;
334
+ }
335
+ finally {
336
+ // Ensure file descriptor is closed even on error
337
+ if (fd !== null) {
338
+ try {
339
+ const fs = await import('fs');
340
+ fs.closeSync(fd);
341
+ }
342
+ catch {
343
+ // Ignore close errors in cleanup
344
+ }
345
+ }
346
+ }
347
+ }
348
+ /**
349
+ * Insert single vector with optional metadata
94
350
  */
95
351
  insert(id, embedding, metadata) {
96
352
  this.ensureInitialized();
97
- // ruvector 0.1.99+ uses object-style insert with async support
98
- // The VectorBackend interface is sync, so we call without awaiting.
99
- // The underlying native impl handles this via napi-rs sync path.
100
- const entry = {
101
- id,
102
- vector: Array.from(embedding)
103
- };
353
+ // Validate id
354
+ if (!id || typeof id !== 'string') {
355
+ throw new Error('Vector ID must be a non-empty string');
356
+ }
357
+ // Validate embedding type
358
+ if (!(embedding instanceof Float32Array) && !Array.isArray(embedding)) {
359
+ throw new Error('Embedding must be a Float32Array or array');
360
+ }
361
+ // Check metadata store size limit
362
+ if (metadata && this.metadata.size >= MAX_METADATA_ENTRIES) {
363
+ throw new Error(`Metadata store has reached maximum capacity of ${MAX_METADATA_ENTRIES}`);
364
+ }
365
+ const startTime = this.config.enableStats !== false ? performance.now() : 0;
366
+ // RuVector v0.1.30+ uses object API with 'vector' field
367
+ // Native VectorDB requires Float32Array, not regular array
368
+ this.db.insert({
369
+ id: id,
370
+ vector: embedding instanceof Float32Array ? embedding : new Float32Array(embedding),
371
+ metadata: metadata
372
+ });
104
373
  if (metadata) {
105
- entry.metadata = metadata;
106
374
  this.metadata.set(id, metadata);
107
375
  }
108
- // ruvector 0.1.99+ insert returns a promise, but the native layer
109
- // executes synchronously. We fire-and-forget for interface compat.
110
- const result = this.db.insert(entry);
111
- if (result && typeof result.catch === 'function') {
112
- result.catch((err) => {
113
- console.error(`[RuVectorBackend] Insert failed for ${id}: ${err.message}`);
114
- });
376
+ // Track insert latency
377
+ if (this.config.enableStats !== false) {
378
+ const latency = performance.now() - startTime;
379
+ this.stats.insertCount++;
380
+ this.stats.insertTotalLatencyMs += latency;
381
+ this.stats.insertMinLatencyMs = Math.min(this.stats.insertMinLatencyMs, latency);
382
+ this.stats.insertMaxLatencyMs = Math.max(this.stats.insertMaxLatencyMs, latency);
115
383
  }
116
384
  }
117
385
  /**
118
- * Batch insert for optimal performance.
119
- * Uses ruvector 0.1.99+ insertBatch([{ id, vector, metadata? }])
386
+ * Batch insert for optimal performance (sequential)
120
387
  */
121
388
  insertBatch(items) {
122
389
  this.ensureInitialized();
123
- const entries = items.map(item => {
124
- const entry = {
125
- id: item.id,
126
- vector: Array.from(item.embedding)
127
- };
128
- if (item.metadata) {
129
- entry.metadata = item.metadata;
130
- this.metadata.set(item.id, item.metadata);
131
- }
132
- return entry;
133
- });
134
- const result = this.db.insertBatch(entries);
135
- if (result && typeof result.catch === 'function') {
136
- result.catch((err) => {
137
- console.error(`[RuVectorBackend] Batch insert failed: ${err.message}`);
138
- });
390
+ for (const item of items) {
391
+ this.insert(item.id, item.embedding, item.metadata);
139
392
  }
140
393
  }
141
394
  /**
142
- * Set a RuVectorLearning instance for GNN-enhanced search
395
+ * Parallel batch insert with semaphore-controlled concurrency
396
+ *
397
+ * Processes items in parallel batches for improved throughput on multi-core systems.
398
+ * Uses a semaphore to control the maximum number of concurrent insertions.
399
+ *
400
+ * @param items - Array of items to insert
401
+ * @param options - Configuration options
402
+ * @param options.batchSize - Number of items per batch (default: 100)
403
+ * @param options.concurrency - Max concurrent batches (default: config.parallelConcurrency or 4)
404
+ * @returns Promise that resolves when all items are inserted
143
405
  */
144
- setLearning(learning) {
145
- this.learning = learning;
406
+ async insertBatchParallel(items, options) {
407
+ this.ensureInitialized();
408
+ const batchSize = options?.batchSize ?? 100;
409
+ const concurrency = options?.concurrency ?? this.config.parallelConcurrency ?? 4;
410
+ // Create a semaphore with the specified concurrency
411
+ const semaphore = new Semaphore(concurrency);
412
+ // Split items into batches
413
+ const batches = [];
414
+ for (let i = 0; i < items.length; i += batchSize) {
415
+ batches.push(items.slice(i, i + batchSize));
416
+ }
417
+ // Process batches in parallel with semaphore control
418
+ const promises = batches.map(async (batch) => {
419
+ await semaphore.acquire();
420
+ try {
421
+ for (const item of batch) {
422
+ this.insert(item.id, item.embedding, item.metadata);
423
+ }
424
+ }
425
+ finally {
426
+ semaphore.release();
427
+ }
428
+ });
429
+ await Promise.all(promises);
146
430
  }
147
431
  /**
148
- * Get the current RuVectorLearning instance, if any
432
+ * Insert using buffer pooling to reduce allocations
433
+ *
434
+ * Acquires a buffer from the pool, copies the embedding data,
435
+ * performs the insert, and returns the buffer to the pool.
436
+ *
437
+ * @param id - Vector ID
438
+ * @param embedding - Vector data (can be regular array or Float32Array)
439
+ * @param metadata - Optional metadata
149
440
  */
150
- getLearning() {
151
- return this.learning;
441
+ insertWithPooledBuffer(id, embedding, metadata) {
442
+ this.ensureInitialized();
443
+ const dimension = this.config.dimension;
444
+ // Acquire buffer from pool
445
+ const buffer = this.bufferPool.acquire(dimension);
446
+ try {
447
+ // Copy data to pooled buffer
448
+ if (embedding instanceof Float32Array) {
449
+ buffer.set(embedding);
450
+ }
451
+ else {
452
+ for (let i = 0; i < dimension; i++) {
453
+ buffer[i] = embedding[i] ?? 0;
454
+ }
455
+ }
456
+ // Insert using pooled buffer
457
+ this.insert(id, buffer, metadata);
458
+ }
459
+ finally {
460
+ // Return buffer to pool
461
+ this.bufferPool.release(buffer);
462
+ }
152
463
  }
153
464
  /**
154
- * Search for k-nearest neighbors with optional filtering and GNN enhancement.
155
- * Uses ruvector 0.1.99+ search({ vector, k, efSearch?, filter? })
156
- * Results contain { id, score, vector?, metadata? }
465
+ * Search for k-nearest neighbors with optional filtering and early termination
466
+ * @inline V8 optimization hint - hot path function
157
467
  */
158
468
  search(query, k, options) {
159
469
  this.ensureInitialized();
160
- // Build search query for ruvector 0.1.99+ API
161
- const searchQuery = {
162
- vector: Array.from(query),
163
- k
164
- };
470
+ const startTime = this.config.enableStats !== false ? performance.now() : 0;
471
+ // Apply efSearch parameter if provided
165
472
  if (options?.efSearch) {
166
- searchQuery.efSearch = options.efSearch;
167
- }
168
- if (options?.filter) {
169
- searchQuery.filter = options.filter;
170
- }
171
- // ruvector 0.1.99+ search is async but native layer is sync
172
- let rawResults = [];
173
- const searchPromise = this.db.search(searchQuery);
174
- if (searchPromise && typeof searchPromise.then === 'function') {
175
- // Synchronous extraction for interface compat - the native binding
176
- // resolves immediately when using N-API sync path
177
- // For truly async scenarios, use searchBatch() instead
178
- let resolved = false;
179
- searchPromise.then((r) => {
180
- rawResults = r || [];
181
- resolved = true;
182
- });
183
- // If promise resolved synchronously (common with native bindings)
184
- if (!resolved) {
185
- // Fallback: return empty and log warning
186
- console.warn('[RuVectorBackend] Search returned async promise; use searchBatch() for async searches');
187
- return [];
188
- }
473
+ this.db.setEfSearch(options.efSearch);
189
474
  }
190
- else {
191
- rawResults = searchPromise || [];
192
- }
193
- // Convert ruvector 0.1.99+ results (score-based) to SearchResult format
194
- let results = rawResults
195
- .map((r) => ({
196
- id: r.id,
197
- distance: this.scoreToDistance(r.score),
198
- similarity: r.score,
199
- metadata: r.metadata || this.metadata.get(r.id)
200
- }))
201
- .filter((r) => {
202
- if (options?.threshold && r.similarity < options.threshold) {
203
- return false;
204
- }
205
- if (options?.filter && r.metadata) {
206
- return Object.entries(options.filter).every(([key, value]) => r.metadata[key] === value);
207
- }
208
- return true;
475
+ // RuVector v0.1.30+ supports both object API and legacy positional args
476
+ // Use object API for consistency with insert
477
+ // Native VectorDB requires Float32Array, not regular array
478
+ const results = this.db.search({
479
+ vector: query instanceof Float32Array ? query : new Float32Array(query),
480
+ k: k,
481
+ threshold: options?.threshold,
482
+ filter: options?.filter
209
483
  });
210
- // Enhance with GNN if available
211
- if (this.learning && this.learning.getState().initialized && results.length > 0) {
212
- try {
213
- const neighbors = [];
214
- const weights = [];
215
- for (const r of results) {
216
- weights.push(r.similarity);
217
- neighbors.push(query);
218
- }
219
- for (let i = 0; i < rawResults.length && i < results.length; i++) {
220
- const raw = rawResults[i];
221
- if (raw.vector) {
222
- const vec = raw.vector instanceof Float32Array
223
- ? raw.vector
224
- : new Float32Array(Object.values(raw.vector));
225
- neighbors[i] = vec;
226
- }
227
- }
228
- const enhanced = this.learning.enhance(query, neighbors, weights);
229
- if (enhanced && enhanced.length > 0) {
230
- const enhancedQuery = {
231
- vector: Array.from(enhanced),
232
- k
233
- };
234
- if (options?.efSearch)
235
- enhancedQuery.efSearch = options.efSearch;
236
- const enhancedPromise = this.db.search(enhancedQuery);
237
- let enhancedRaw = [];
238
- if (enhancedPromise && typeof enhancedPromise.then === 'function') {
239
- let resolved = false;
240
- enhancedPromise.then((r) => { enhancedRaw = r || []; resolved = true; });
241
- if (!resolved)
242
- return results;
243
- }
244
- else {
245
- enhancedRaw = enhancedPromise || [];
246
- }
247
- const enhancedResults = enhancedRaw
248
- .map((r) => ({
249
- id: r.id,
250
- distance: this.scoreToDistance(r.score),
251
- similarity: r.score,
252
- metadata: r.metadata || this.metadata.get(r.id)
253
- }))
254
- .filter((r) => {
255
- if (options?.threshold && r.similarity < options.threshold)
256
- return false;
257
- if (options?.filter && r.metadata) {
258
- return Object.entries(options.filter).every(([key, value]) => r.metadata[key] === value);
259
- }
260
- return true;
261
- });
262
- if (enhancedResults.length > 0) {
263
- results = enhancedResults;
484
+ // @inline Early termination threshold for perfect matches
485
+ const earlyTermThreshold = 0.9999;
486
+ let perfectMatches = 0;
487
+ const maxPerfectMatches = k;
488
+ // @inline Convert results and apply filtering with early termination
489
+ const filteredResults = [];
490
+ const resultsLen = results.length | 0;
491
+ for (let i = 0; i < resultsLen; i++) {
492
+ const r = results[i];
493
+ const similarity = this.distanceToSimilarity(r.distance);
494
+ // Apply similarity threshold
495
+ if (options?.threshold && similarity < options.threshold) {
496
+ continue;
497
+ }
498
+ const metadata = this.metadata.get(r.id);
499
+ // Apply metadata filters
500
+ if (options?.filter && metadata) {
501
+ const filterEntries = Object.entries(options.filter);
502
+ let matchesFilter = true;
503
+ for (let j = 0; j < filterEntries.length; j++) {
504
+ const [key, value] = filterEntries[j];
505
+ if (metadata[key] !== value) {
506
+ matchesFilter = false;
507
+ break;
264
508
  }
265
509
  }
510
+ if (!matchesFilter)
511
+ continue;
266
512
  }
267
- catch {
268
- // Fall through to raw results if GNN enhancement fails
269
- }
270
- }
271
- return results;
272
- }
273
- /**
274
- * Batch search for parallel query processing (0.1.99+).
275
- * Executes multiple searches concurrently for throughput.
276
- */
277
- async searchBatch(queries, k, options) {
278
- this.ensureInitialized();
279
- const results = await Promise.all(queries.map(async (query) => {
280
- const searchQuery = {
281
- vector: Array.from(query),
282
- k
283
- };
284
- if (options?.efSearch)
285
- searchQuery.efSearch = options.efSearch;
286
- if (options?.filter)
287
- searchQuery.filter = options.filter;
288
- const rawResults = await this.db.search(searchQuery);
289
- return (rawResults || []).map((r) => ({
513
+ filteredResults.push({
290
514
  id: r.id,
291
- distance: this.scoreToDistance(r.score),
292
- similarity: r.score,
293
- metadata: r.metadata || this.metadata.get(r.id)
294
- })).filter((r) => {
295
- if (options?.threshold && r.similarity < options.threshold)
296
- return false;
297
- if (options?.filter && r.metadata) {
298
- return Object.entries(options.filter).every(([key, value]) => r.metadata[key] === value);
299
- }
300
- return true;
515
+ distance: r.distance,
516
+ similarity,
517
+ metadata
301
518
  });
302
- }));
303
- return results;
519
+ // @inline Early termination for perfect matches
520
+ if (similarity >= earlyTermThreshold) {
521
+ perfectMatches++;
522
+ if (perfectMatches >= maxPerfectMatches) {
523
+ break;
524
+ }
525
+ }
526
+ }
527
+ // Track search latency
528
+ if (this.config.enableStats !== false) {
529
+ const latency = performance.now() - startTime;
530
+ this.stats.searchCount++;
531
+ this.stats.searchTotalLatencyMs += latency;
532
+ this.stats.searchMinLatencyMs = Math.min(this.stats.searchMinLatencyMs, latency);
533
+ this.stats.searchMaxLatencyMs = Math.max(this.stats.searchMaxLatencyMs, latency);
534
+ }
535
+ return filteredResults;
304
536
  }
305
537
  /**
306
- * Remove vector by ID.
307
- * Uses ruvector 0.1.99+ delete(id) instead of remove(id)
538
+ * Remove vector by ID
308
539
  */
309
540
  remove(id) {
310
541
  this.ensureInitialized();
311
542
  this.metadata.delete(id);
312
543
  try {
313
- const result = this.db.delete(id);
314
- // Handle async result
315
- if (result && typeof result.then === 'function') {
316
- let resolved = false;
317
- let success = false;
318
- result.then((r) => { success = r; resolved = true; });
319
- if (resolved)
320
- return success;
321
- // Fire-and-forget for async case
322
- result.catch(() => { });
323
- return true;
324
- }
325
- return result !== false;
544
+ return this.db.remove(id);
326
545
  }
327
546
  catch {
328
547
  return false;
329
548
  }
330
549
  }
331
550
  /**
332
- * Get database statistics including native SIMD status
551
+ * Get database statistics
333
552
  */
334
553
  getStats() {
335
554
  this.ensureInitialized();
336
- let count = 0;
337
- const lenResult = this.db.len();
338
- if (lenResult && typeof lenResult.then === 'function') {
339
- let resolved = false;
340
- lenResult.then((c) => { count = c; resolved = true; });
341
- if (!resolved)
342
- count = this.metadata.size; // fallback
343
- }
344
- else {
345
- count = lenResult || 0;
346
- }
555
+ const memoryUsage = this.db.memoryUsage?.() || 0;
556
+ this.stats.lastMemoryUsage = memoryUsage;
347
557
  return {
348
- count,
558
+ count: this.db.count(),
349
559
  dimension: this.config.dimension || 384,
350
560
  metric: this.config.metric,
351
561
  backend: 'ruvector',
352
- memoryUsage: 0,
353
- // Extended stats for 0.1.99+
354
- ...(this.isNativeImpl && {
355
- nativeVersion: this.nativeVersion,
356
- simdEnabled: true,
357
- implementation: 'native'
358
- })
562
+ memoryUsage: memoryUsage
359
563
  };
360
564
  }
361
565
  /**
362
- * Get extended stats including SIMD and version info
566
+ * Get extended performance statistics
567
+ *
568
+ * Returns detailed metrics including latencies, cache stats, and buffer pool info.
363
569
  */
364
570
  getExtendedStats() {
365
- const base = this.getStats();
366
571
  return {
367
- count: base.count,
368
- dimension: base.dimension,
369
- metric: base.metric,
370
- backend: base.backend,
371
- nativeVersion: this.nativeVersion,
372
- isNative: this.isNativeImpl,
373
- simdEnabled: this.isNativeImpl
572
+ basic: this.getStats(),
573
+ performance: {
574
+ ...this.stats,
575
+ insertAvgLatencyMs: this.stats.insertCount > 0
576
+ ? this.stats.insertTotalLatencyMs / this.stats.insertCount
577
+ : 0,
578
+ searchAvgLatencyMs: this.stats.searchCount > 0
579
+ ? this.stats.searchTotalLatencyMs / this.stats.searchCount
580
+ : 0,
581
+ },
582
+ bufferPool: this.bufferPool.getStats(),
583
+ config: {
584
+ parallelConcurrency: this.config.parallelConcurrency ?? 4,
585
+ adaptiveParams: this.config.adaptiveParams !== false,
586
+ mmapEnabled: this.mmapEnabled,
587
+ },
374
588
  };
375
589
  }
376
590
  /**
377
- * Save index and metadata to disk
591
+ * Reset performance statistics
378
592
  */
379
- async save(path) {
593
+ resetStats() {
594
+ this.stats = {
595
+ insertCount: 0,
596
+ insertTotalLatencyMs: 0,
597
+ insertMinLatencyMs: Infinity,
598
+ insertMaxLatencyMs: 0,
599
+ searchCount: 0,
600
+ searchTotalLatencyMs: 0,
601
+ searchMinLatencyMs: Infinity,
602
+ searchMaxLatencyMs: 0,
603
+ cacheHits: 0,
604
+ cacheMisses: 0,
605
+ lastMemoryUsage: 0,
606
+ indexRebuildCount: 0,
607
+ };
608
+ }
609
+ /**
610
+ * Update index parameters adaptively based on current dataset size
611
+ *
612
+ * This triggers an index rebuild with optimal parameters for the current size.
613
+ * Should be called after significant data changes.
614
+ */
615
+ async updateAdaptiveParams() {
380
616
  this.ensureInitialized();
381
- // Save vector index (if ruvector supports it)
382
- if (typeof this.db.save === 'function') {
383
- await this.db.save(path);
617
+ if (this.config.adaptiveParams === false) {
618
+ return;
384
619
  }
620
+ const currentCount = this.db.count();
621
+ const params = this.getAdaptiveParams(currentCount);
622
+ // Check if we need to rebuild
623
+ // This would require checking current params vs recommended
624
+ // For now, just set efSearch which doesn't require rebuild
625
+ if (this.db.setEfSearch) {
626
+ this.db.setEfSearch(params.efSearch);
627
+ }
628
+ this.stats.indexRebuildCount++;
629
+ }
630
+ /**
631
+ * Save index and metadata to disk
632
+ */
633
+ async save(savePath) {
634
+ this.ensureInitialized();
635
+ // Validate path for security
636
+ validatePath(savePath);
637
+ // Save vector index
638
+ this.db.save(savePath);
385
639
  // Save metadata separately as JSON
386
- const metadataPath = path + '.meta.json';
640
+ const metadataPath = savePath + '.meta.json';
641
+ validatePath(metadataPath);
387
642
  const fs = await import('fs/promises');
388
643
  await fs.writeFile(metadataPath, JSON.stringify(Object.fromEntries(this.metadata), null, 2));
389
644
  }
390
645
  /**
391
646
  * Load index and metadata from disk
392
647
  */
393
- async load(path) {
648
+ async load(loadPath) {
394
649
  this.ensureInitialized();
395
- // Load vector index (if ruvector supports it)
396
- if (typeof this.db.load === 'function') {
397
- await this.db.load(path);
398
- }
650
+ // Validate path for security
651
+ validatePath(loadPath);
652
+ // Load vector index
653
+ this.db.load(loadPath);
399
654
  // Load metadata
400
- const metadataPath = path + '.meta.json';
655
+ const metadataPath = loadPath + '.meta.json';
656
+ validatePath(metadataPath);
401
657
  try {
402
658
  const fs = await import('fs/promises');
403
659
  const data = await fs.readFile(metadataPath, 'utf-8');
404
- this.metadata = new Map(Object.entries(JSON.parse(data)));
660
+ // Safely parse metadata with validation
661
+ let parsed;
662
+ try {
663
+ parsed = JSON.parse(data);
664
+ }
665
+ catch {
666
+ throw new Error('Invalid JSON in metadata file');
667
+ }
668
+ // Validate parsed data is a plain object
669
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
670
+ throw new Error('Metadata must be a plain object');
671
+ }
672
+ // Check for prototype pollution attempts
673
+ const unsafeKeys = ['__proto__', 'constructor', 'prototype'];
674
+ for (const key of Object.keys(parsed)) {
675
+ if (unsafeKeys.includes(key)) {
676
+ throw new Error(`Forbidden key in metadata: ${key}`);
677
+ }
678
+ }
679
+ this.metadata = new Map(Object.entries(parsed));
680
+ // Enforce size limit
681
+ if (this.metadata.size > MAX_METADATA_ENTRIES) {
682
+ this.metadata.clear();
683
+ throw new Error(`Loaded metadata exceeds maximum of ${MAX_METADATA_ENTRIES} entries`);
684
+ }
405
685
  }
406
- catch {
407
- console.debug(`[RuVectorBackend] No metadata file found at ${metadataPath}`);
686
+ catch (error) {
687
+ if (error.code === 'ENOENT') {
688
+ // No metadata file - this is okay for backward compatibility
689
+ console.debug(`[RuVectorBackend] No metadata file found at ${metadataPath}`);
690
+ }
691
+ else {
692
+ throw error;
693
+ }
408
694
  }
409
695
  }
410
696
  /**
411
697
  * Close and cleanup resources
412
698
  */
413
699
  close() {
700
+ // RuVector cleanup if needed
414
701
  this.metadata.clear();
702
+ // Clear buffer pool
703
+ this.bufferPool.clear();
704
+ // Clean up mmap buffer
705
+ if (this.mmapBuffer) {
706
+ this.mmapBuffer = null;
707
+ }
708
+ // Reset stats
709
+ this.resetStats();
415
710
  }
416
711
  /**
417
- * Convert score to distance for backward compatibility.
418
- * ruvector 0.1.99+ returns scores (higher = more similar).
712
+ * Convert distance to similarity score based on metric
713
+ *
714
+ * Cosine: distance is already in [0, 2], where 0 = identical
715
+ * L2: exponential decay for unbounded distances
716
+ * IP: negative inner product, so negate for similarity
419
717
  */
420
- scoreToDistance(score) {
718
+ distanceToSimilarity(distance) {
421
719
  switch (this.config.metric) {
422
720
  case 'cosine':
423
- return 1 - score;
721
+ return 1 - distance; // cosine distance is 1 - similarity
424
722
  case 'l2':
425
- return score === 0 ? Infinity : -Math.log(score);
723
+ return Math.exp(-distance); // exponential decay
426
724
  case 'ip':
427
- return -score;
725
+ return -distance; // inner product: higher is better
428
726
  default:
429
- return 1 - score;
727
+ return 1 - distance;
430
728
  }
431
729
  }
432
730
  /**
@@ -437,5 +735,42 @@ export class RuVectorBackend {
437
735
  throw new Error('RuVectorBackend not initialized. Call initialize() first.');
438
736
  }
439
737
  }
738
+ /**
739
+ * Get the buffer pool instance for advanced use cases
740
+ */
741
+ getBufferPool() {
742
+ return this.bufferPool;
743
+ }
744
+ /**
745
+ * Get the current concurrency semaphore status
746
+ */
747
+ getConcurrencyStatus() {
748
+ return {
749
+ available: this.semaphore.available,
750
+ configured: this.config.parallelConcurrency ?? 4,
751
+ };
752
+ }
753
+ /**
754
+ * Check if memory-mapped storage is active
755
+ */
756
+ isMmapEnabled() {
757
+ return this.mmapEnabled && this.mmapBuffer !== null;
758
+ }
759
+ /**
760
+ * Get recommended adaptive parameters for a given dataset size
761
+ */
762
+ static getRecommendedParams(datasetSize) {
763
+ if (datasetSize < 1000) {
764
+ return { M: 8, efConstruction: 100, efSearch: 50 };
765
+ }
766
+ else if (datasetSize <= 100000) {
767
+ return { M: 16, efConstruction: 200, efSearch: 100 };
768
+ }
769
+ else {
770
+ return { M: 32, efConstruction: 400, efSearch: 200 };
771
+ }
772
+ }
440
773
  }
774
+ // Export helper classes for advanced use cases
775
+ export { Semaphore, BufferPool };
441
776
  //# sourceMappingURL=RuVectorBackend.js.map