agentdb 3.0.0-alpha.8 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (718) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +248 -269
  3. package/dist/schemas/frontier-schema.sql +7 -0
  4. package/dist/schemas/schema.sql +7 -0
  5. package/dist/src/backends/VectorBackend.d.ts +48 -6
  6. package/dist/src/backends/VectorBackend.d.ts.map +1 -1
  7. package/dist/src/backends/VectorBackend.js +13 -1
  8. package/dist/src/backends/VectorBackend.js.map +1 -1
  9. package/dist/src/backends/detector.js.map +1 -1
  10. package/dist/src/backends/factory.d.ts +16 -33
  11. package/dist/src/backends/factory.d.ts.map +1 -1
  12. package/dist/src/backends/factory.js +140 -110
  13. package/dist/src/backends/factory.js.map +1 -1
  14. package/dist/src/backends/graph/GraphDatabaseAdapter.d.ts +54 -6
  15. package/dist/src/backends/graph/GraphDatabaseAdapter.d.ts.map +1 -1
  16. package/dist/src/backends/graph/GraphDatabaseAdapter.js +143 -6
  17. package/dist/src/backends/graph/GraphDatabaseAdapter.js.map +1 -1
  18. package/dist/src/backends/hnswlib/HNSWLibBackend.d.ts.map +1 -1
  19. package/dist/src/backends/hnswlib/HNSWLibBackend.js +35 -8
  20. package/dist/src/backends/hnswlib/HNSWLibBackend.js.map +1 -1
  21. package/dist/src/backends/index.d.ts +2 -1
  22. package/dist/src/backends/index.d.ts.map +1 -1
  23. package/dist/src/backends/index.js +2 -0
  24. package/dist/src/backends/index.js.map +1 -1
  25. package/dist/src/backends/ruvector/RuVectorBackend.d.ts +256 -45
  26. package/dist/src/backends/ruvector/RuVectorBackend.d.ts.map +1 -1
  27. package/dist/src/backends/ruvector/RuVectorBackend.js +764 -290
  28. package/dist/src/backends/ruvector/RuVectorBackend.js.map +1 -1
  29. package/dist/src/backends/ruvector/RuVectorLearning.d.ts +0 -4
  30. package/dist/src/backends/ruvector/RuVectorLearning.d.ts.map +1 -1
  31. package/dist/src/backends/ruvector/RuVectorLearning.js +0 -6
  32. package/dist/src/backends/ruvector/RuVectorLearning.js.map +1 -1
  33. package/dist/src/backends/rvf/AdaptiveIndexTuner.d.ts +175 -0
  34. package/dist/src/backends/rvf/AdaptiveIndexTuner.d.ts.map +1 -0
  35. package/dist/src/backends/rvf/AdaptiveIndexTuner.js +567 -0
  36. package/dist/src/backends/rvf/AdaptiveIndexTuner.js.map +1 -0
  37. package/dist/src/backends/rvf/ContrastiveTrainer.d.ts +148 -0
  38. package/dist/src/backends/rvf/ContrastiveTrainer.d.ts.map +1 -0
  39. package/dist/src/backends/rvf/ContrastiveTrainer.js +438 -0
  40. package/dist/src/backends/rvf/ContrastiveTrainer.js.map +1 -0
  41. package/dist/src/backends/rvf/FederatedSessionManager.d.ts +212 -0
  42. package/dist/src/backends/rvf/FederatedSessionManager.d.ts.map +1 -0
  43. package/dist/src/backends/rvf/FederatedSessionManager.js +397 -0
  44. package/dist/src/backends/rvf/FederatedSessionManager.js.map +1 -0
  45. package/dist/src/backends/rvf/FilterBuilder.d.ts +136 -0
  46. package/dist/src/backends/rvf/FilterBuilder.d.ts.map +1 -0
  47. package/dist/src/backends/rvf/FilterBuilder.js +157 -0
  48. package/dist/src/backends/rvf/FilterBuilder.js.map +1 -0
  49. package/dist/src/backends/rvf/NativeAccelerator.d.ts +158 -0
  50. package/dist/src/backends/rvf/NativeAccelerator.d.ts.map +1 -0
  51. package/dist/src/backends/rvf/NativeAccelerator.js +702 -0
  52. package/dist/src/backends/rvf/NativeAccelerator.js.map +1 -0
  53. package/dist/src/backends/rvf/RvfBackend.d.ts +207 -0
  54. package/dist/src/backends/rvf/RvfBackend.d.ts.map +1 -0
  55. package/dist/src/backends/rvf/RvfBackend.js +651 -0
  56. package/dist/src/backends/rvf/RvfBackend.js.map +1 -0
  57. package/dist/src/backends/rvf/RvfSolver.d.ts +175 -0
  58. package/dist/src/backends/rvf/RvfSolver.d.ts.map +1 -0
  59. package/dist/src/backends/rvf/RvfSolver.js +176 -0
  60. package/dist/src/backends/rvf/RvfSolver.js.map +1 -0
  61. package/dist/src/backends/rvf/SelfLearningRvfBackend.d.ts +143 -0
  62. package/dist/src/backends/rvf/SelfLearningRvfBackend.d.ts.map +1 -0
  63. package/dist/src/backends/rvf/SelfLearningRvfBackend.js +612 -0
  64. package/dist/src/backends/rvf/SelfLearningRvfBackend.js.map +1 -0
  65. package/dist/src/backends/rvf/SemanticQueryRouter.d.ts +128 -0
  66. package/dist/src/backends/rvf/SemanticQueryRouter.d.ts.map +1 -0
  67. package/dist/src/backends/rvf/SemanticQueryRouter.js +415 -0
  68. package/dist/src/backends/rvf/SemanticQueryRouter.js.map +1 -0
  69. package/dist/src/backends/rvf/SimdFallbacks.d.ts +25 -0
  70. package/dist/src/backends/rvf/SimdFallbacks.d.ts.map +1 -0
  71. package/dist/src/backends/rvf/SimdFallbacks.js +287 -0
  72. package/dist/src/backends/rvf/SimdFallbacks.js.map +1 -0
  73. package/dist/src/backends/rvf/SolverBandit.d.ts +100 -0
  74. package/dist/src/backends/rvf/SolverBandit.d.ts.map +1 -0
  75. package/dist/src/backends/rvf/SolverBandit.js +216 -0
  76. package/dist/src/backends/rvf/SolverBandit.js.map +1 -0
  77. package/dist/src/backends/rvf/SonaLearningBackend.d.ts +157 -0
  78. package/dist/src/backends/rvf/SonaLearningBackend.d.ts.map +1 -0
  79. package/dist/src/backends/rvf/SonaLearningBackend.js +283 -0
  80. package/dist/src/backends/rvf/SonaLearningBackend.js.map +1 -0
  81. package/dist/src/backends/rvf/SqlJsRvfBackend.d.ts +104 -0
  82. package/dist/src/backends/rvf/SqlJsRvfBackend.d.ts.map +1 -0
  83. package/dist/src/backends/rvf/SqlJsRvfBackend.js +464 -0
  84. package/dist/src/backends/rvf/SqlJsRvfBackend.js.map +1 -0
  85. package/dist/src/backends/rvf/WasmStoreBridge.d.ts +27 -0
  86. package/dist/src/backends/rvf/WasmStoreBridge.d.ts.map +1 -0
  87. package/dist/src/backends/rvf/WasmStoreBridge.js +87 -0
  88. package/dist/src/backends/rvf/WasmStoreBridge.js.map +1 -0
  89. package/dist/src/backends/rvf/validation.d.ts +20 -0
  90. package/dist/src/backends/rvf/validation.d.ts.map +1 -0
  91. package/dist/src/backends/rvf/validation.js +78 -0
  92. package/dist/src/backends/rvf/validation.js.map +1 -0
  93. package/dist/src/benchmark/BenchmarkSuite.d.ts +318 -0
  94. package/dist/src/benchmark/BenchmarkSuite.d.ts.map +1 -0
  95. package/dist/src/benchmark/BenchmarkSuite.js +984 -0
  96. package/dist/src/benchmark/BenchmarkSuite.js.map +1 -0
  97. package/dist/src/benchmark/index.d.ts +29 -0
  98. package/dist/src/benchmark/index.d.ts.map +1 -0
  99. package/dist/src/benchmark/index.js +39 -0
  100. package/dist/src/benchmark/index.js.map +1 -0
  101. package/dist/src/browser/AttentionBrowser.d.ts.map +1 -1
  102. package/dist/src/browser/AttentionBrowser.js +1 -0
  103. package/dist/src/browser/AttentionBrowser.js.map +1 -1
  104. package/dist/src/cli/agentdb-cli.d.ts +14 -0
  105. package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
  106. package/dist/src/cli/agentdb-cli.js +839 -143
  107. package/dist/src/cli/agentdb-cli.js.map +1 -1
  108. package/dist/src/cli/commands/attention.js +12 -2
  109. package/dist/src/cli/commands/attention.js.map +1 -1
  110. package/dist/src/cli/commands/doctor.js +5 -5
  111. package/dist/src/cli/commands/doctor.js.map +1 -1
  112. package/dist/src/cli/commands/hyperbolic.d.ts +11 -0
  113. package/dist/src/cli/commands/hyperbolic.d.ts.map +1 -0
  114. package/dist/src/cli/commands/hyperbolic.js +440 -0
  115. package/dist/src/cli/commands/hyperbolic.js.map +1 -0
  116. package/dist/src/cli/commands/install-embeddings.d.ts +1 -1
  117. package/dist/src/cli/commands/install-embeddings.d.ts.map +1 -1
  118. package/dist/src/cli/commands/install-embeddings.js +17 -11
  119. package/dist/src/cli/commands/install-embeddings.js.map +1 -1
  120. package/dist/src/cli/commands/learn.d.ts +11 -0
  121. package/dist/src/cli/commands/learn.d.ts.map +1 -0
  122. package/dist/src/cli/commands/learn.js +410 -0
  123. package/dist/src/cli/commands/learn.js.map +1 -0
  124. package/dist/src/cli/commands/migrate.d.ts +15 -0
  125. package/dist/src/cli/commands/migrate.d.ts.map +1 -1
  126. package/dist/src/cli/commands/migrate.js +190 -10
  127. package/dist/src/cli/commands/migrate.js.map +1 -1
  128. package/dist/src/cli/commands/route.d.ts +11 -0
  129. package/dist/src/cli/commands/route.d.ts.map +1 -0
  130. package/dist/src/cli/commands/route.js +419 -0
  131. package/dist/src/cli/commands/route.js.map +1 -0
  132. package/dist/src/cli/commands/rvf.d.ts +21 -0
  133. package/dist/src/cli/commands/rvf.d.ts.map +1 -0
  134. package/dist/src/cli/commands/rvf.js +448 -0
  135. package/dist/src/cli/commands/rvf.js.map +1 -0
  136. package/dist/src/cli/commands/simulate-report.js +14 -2
  137. package/dist/src/cli/commands/simulate-report.js.map +1 -1
  138. package/dist/src/cli/lib/report-store.d.ts +2 -1
  139. package/dist/src/cli/lib/report-store.d.ts.map +1 -1
  140. package/dist/src/cli/lib/report-store.js +85 -65
  141. package/dist/src/cli/lib/report-store.js.map +1 -1
  142. package/dist/src/cli/lib/simulation-runner.d.ts +40 -3
  143. package/dist/src/cli/lib/simulation-runner.d.ts.map +1 -1
  144. package/dist/src/cli/lib/simulation-runner.js +248 -6
  145. package/dist/src/cli/lib/simulation-runner.js.map +1 -1
  146. package/dist/src/compatibility/DeprecationWarnings.d.ts +54 -0
  147. package/dist/src/compatibility/DeprecationWarnings.d.ts.map +1 -0
  148. package/dist/src/compatibility/DeprecationWarnings.js +131 -0
  149. package/dist/src/compatibility/DeprecationWarnings.js.map +1 -0
  150. package/dist/src/compatibility/MigrationUtilities.d.ts +30 -0
  151. package/dist/src/compatibility/MigrationUtilities.d.ts.map +1 -0
  152. package/dist/src/compatibility/MigrationUtilities.js +184 -0
  153. package/dist/src/compatibility/MigrationUtilities.js.map +1 -0
  154. package/dist/src/compatibility/V1toV2Adapter.d.ts +76 -0
  155. package/dist/src/compatibility/V1toV2Adapter.d.ts.map +1 -0
  156. package/dist/src/compatibility/V1toV2Adapter.js +185 -0
  157. package/dist/src/compatibility/V1toV2Adapter.js.map +1 -0
  158. package/dist/src/compatibility/VersionDetector.d.ts +32 -0
  159. package/dist/src/compatibility/VersionDetector.d.ts.map +1 -0
  160. package/dist/src/compatibility/VersionDetector.js +144 -0
  161. package/dist/src/compatibility/VersionDetector.js.map +1 -0
  162. package/dist/src/compatibility/index.d.ts +14 -0
  163. package/dist/src/compatibility/index.d.ts.map +1 -0
  164. package/dist/src/compatibility/index.js +21 -0
  165. package/dist/src/compatibility/index.js.map +1 -0
  166. package/dist/src/compatibility/types.d.ts +103 -0
  167. package/dist/src/compatibility/types.d.ts.map +1 -0
  168. package/dist/src/compatibility/types.js +5 -0
  169. package/dist/src/compatibility/types.js.map +1 -0
  170. package/dist/src/controllers/AttentionService.d.ts +99 -202
  171. package/dist/src/controllers/AttentionService.d.ts.map +1 -1
  172. package/dist/src/controllers/AttentionService.js +450 -558
  173. package/dist/src/controllers/AttentionService.js.map +1 -1
  174. package/dist/src/controllers/CausalMemoryGraph.d.ts +30 -5
  175. package/dist/src/controllers/CausalMemoryGraph.d.ts.map +1 -1
  176. package/dist/src/controllers/CausalMemoryGraph.js +92 -15
  177. package/dist/src/controllers/CausalMemoryGraph.js.map +1 -1
  178. package/dist/src/controllers/CausalRecall.d.ts +4 -0
  179. package/dist/src/controllers/CausalRecall.d.ts.map +1 -1
  180. package/dist/src/controllers/CausalRecall.js +23 -5
  181. package/dist/src/controllers/CausalRecall.js.map +1 -1
  182. package/dist/src/controllers/EmbeddingService.d.ts +29 -0
  183. package/dist/src/controllers/EmbeddingService.d.ts.map +1 -1
  184. package/dist/src/controllers/EmbeddingService.js +154 -32
  185. package/dist/src/controllers/EmbeddingService.js.map +1 -1
  186. package/dist/src/controllers/EnhancedEmbeddingService.d.ts +4 -0
  187. package/dist/src/controllers/EnhancedEmbeddingService.d.ts.map +1 -1
  188. package/dist/src/controllers/EnhancedEmbeddingService.js +21 -7
  189. package/dist/src/controllers/EnhancedEmbeddingService.js.map +1 -1
  190. package/dist/src/controllers/ExplainableRecall.d.ts +1 -1
  191. package/dist/src/controllers/ExplainableRecall.d.ts.map +1 -1
  192. package/dist/src/controllers/ExplainableRecall.js +1 -1
  193. package/dist/src/controllers/ExplainableRecall.js.map +1 -1
  194. package/dist/src/controllers/HNSWIndex.d.ts +20 -2
  195. package/dist/src/controllers/HNSWIndex.d.ts.map +1 -1
  196. package/dist/src/controllers/HNSWIndex.js +114 -39
  197. package/dist/src/controllers/HNSWIndex.js.map +1 -1
  198. package/dist/src/controllers/LearningSystem.d.ts +6 -17
  199. package/dist/src/controllers/LearningSystem.d.ts.map +1 -1
  200. package/dist/src/controllers/LearningSystem.js +66 -155
  201. package/dist/src/controllers/LearningSystem.js.map +1 -1
  202. package/dist/src/controllers/MemoryController.d.ts +174 -0
  203. package/dist/src/controllers/MemoryController.d.ts.map +1 -0
  204. package/dist/src/controllers/MemoryController.js +320 -0
  205. package/dist/src/controllers/MemoryController.js.map +1 -0
  206. package/dist/src/controllers/MetadataFilter.d.ts.map +1 -1
  207. package/dist/src/controllers/MetadataFilter.js +38 -26
  208. package/dist/src/controllers/MetadataFilter.js.map +1 -1
  209. package/dist/src/controllers/MincutService.d.ts +92 -0
  210. package/dist/src/controllers/MincutService.d.ts.map +1 -0
  211. package/dist/src/controllers/MincutService.js +336 -0
  212. package/dist/src/controllers/MincutService.js.map +1 -0
  213. package/dist/src/controllers/NightlyLearner.d.ts +5 -1
  214. package/dist/src/controllers/NightlyLearner.d.ts.map +1 -1
  215. package/dist/src/controllers/NightlyLearner.js +45 -31
  216. package/dist/src/controllers/NightlyLearner.js.map +1 -1
  217. package/dist/src/controllers/QUICClient.d.ts +45 -0
  218. package/dist/src/controllers/QUICClient.d.ts.map +1 -1
  219. package/dist/src/controllers/QUICClient.js +211 -21
  220. package/dist/src/controllers/QUICClient.js.map +1 -1
  221. package/dist/src/controllers/QUICServer.d.ts.map +1 -1
  222. package/dist/src/controllers/QUICServer.js +36 -27
  223. package/dist/src/controllers/QUICServer.js.map +1 -1
  224. package/dist/src/controllers/ReasoningBank.d.ts +6 -3
  225. package/dist/src/controllers/ReasoningBank.d.ts.map +1 -1
  226. package/dist/src/controllers/ReasoningBank.js +77 -56
  227. package/dist/src/controllers/ReasoningBank.js.map +1 -1
  228. package/dist/src/controllers/ReflexionMemory.d.ts +129 -6
  229. package/dist/src/controllers/ReflexionMemory.d.ts.map +1 -1
  230. package/dist/src/controllers/ReflexionMemory.js +678 -220
  231. package/dist/src/controllers/ReflexionMemory.js.map +1 -1
  232. package/dist/src/controllers/SkillLibrary.d.ts +32 -3
  233. package/dist/src/controllers/SkillLibrary.d.ts.map +1 -1
  234. package/dist/src/controllers/SkillLibrary.js +239 -104
  235. package/dist/src/controllers/SkillLibrary.js.map +1 -1
  236. package/dist/src/controllers/SparsificationService.d.ts +151 -0
  237. package/dist/src/controllers/SparsificationService.d.ts.map +1 -0
  238. package/dist/src/controllers/SparsificationService.js +375 -0
  239. package/dist/src/controllers/SparsificationService.js.map +1 -0
  240. package/dist/src/controllers/SyncCoordinator.d.ts.map +1 -1
  241. package/dist/src/controllers/SyncCoordinator.js +126 -12
  242. package/dist/src/controllers/SyncCoordinator.js.map +1 -1
  243. package/dist/src/controllers/WASMVectorSearch.d.ts +12 -30
  244. package/dist/src/controllers/WASMVectorSearch.d.ts.map +1 -1
  245. package/dist/src/controllers/WASMVectorSearch.js +161 -102
  246. package/dist/src/controllers/WASMVectorSearch.js.map +1 -1
  247. package/dist/src/controllers/attention/AttentionCache.d.ts +38 -0
  248. package/dist/src/controllers/attention/AttentionCache.d.ts.map +1 -0
  249. package/dist/src/controllers/attention/AttentionCache.js +80 -0
  250. package/dist/src/controllers/attention/AttentionCache.js.map +1 -0
  251. package/dist/src/controllers/attention/AttentionConfig.d.ts +127 -0
  252. package/dist/src/controllers/attention/AttentionConfig.d.ts.map +1 -0
  253. package/dist/src/controllers/attention/AttentionConfig.js +124 -0
  254. package/dist/src/controllers/attention/AttentionConfig.js.map +1 -0
  255. package/dist/src/controllers/attention/AttentionCore.d.ts +89 -0
  256. package/dist/src/controllers/attention/AttentionCore.d.ts.map +1 -0
  257. package/dist/src/controllers/attention/AttentionCore.js +289 -0
  258. package/dist/src/controllers/attention/AttentionCore.js.map +1 -0
  259. package/dist/src/controllers/attention/AttentionHelpers.d.ts +55 -0
  260. package/dist/src/controllers/attention/AttentionHelpers.d.ts.map +1 -0
  261. package/dist/src/controllers/attention/AttentionHelpers.js +148 -0
  262. package/dist/src/controllers/attention/AttentionHelpers.js.map +1 -0
  263. package/dist/src/controllers/attention/AttentionMetrics.d.ts +55 -0
  264. package/dist/src/controllers/attention/AttentionMetrics.d.ts.map +1 -0
  265. package/dist/src/controllers/attention/AttentionMetrics.js +72 -0
  266. package/dist/src/controllers/attention/AttentionMetrics.js.map +1 -0
  267. package/dist/src/controllers/attention/AttentionWASM.d.ts +98 -0
  268. package/dist/src/controllers/attention/AttentionWASM.d.ts.map +1 -0
  269. package/dist/src/controllers/attention/AttentionWASM.js +147 -0
  270. package/dist/src/controllers/attention/AttentionWASM.js.map +1 -0
  271. package/dist/src/controllers/attention/CrossAttentionController.d.ts +141 -0
  272. package/dist/src/controllers/attention/CrossAttentionController.d.ts.map +1 -0
  273. package/dist/src/controllers/attention/CrossAttentionController.js +325 -0
  274. package/dist/src/controllers/attention/CrossAttentionController.js.map +1 -0
  275. package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts +137 -0
  276. package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts.map +1 -0
  277. package/dist/src/controllers/attention/MultiHeadAttentionController.js +336 -0
  278. package/dist/src/controllers/attention/MultiHeadAttentionController.js.map +1 -0
  279. package/dist/src/controllers/attention/SelfAttentionController.d.ts +117 -0
  280. package/dist/src/controllers/attention/SelfAttentionController.d.ts.map +1 -0
  281. package/dist/src/controllers/attention/SelfAttentionController.js +205 -0
  282. package/dist/src/controllers/attention/SelfAttentionController.js.map +1 -0
  283. package/dist/src/controllers/attention/index.d.ts +24 -0
  284. package/dist/src/controllers/attention/index.d.ts.map +1 -0
  285. package/dist/src/controllers/attention/index.js +20 -0
  286. package/dist/src/controllers/attention/index.js.map +1 -0
  287. package/dist/src/controllers/index.d.ts +15 -28
  288. package/dist/src/controllers/index.d.ts.map +1 -1
  289. package/dist/src/controllers/index.js +11 -19
  290. package/dist/src/controllers/index.js.map +1 -1
  291. package/dist/src/controllers/prerequisites.d.ts +76 -0
  292. package/dist/src/controllers/prerequisites.d.ts.map +1 -0
  293. package/dist/src/controllers/prerequisites.js +235 -0
  294. package/dist/src/controllers/prerequisites.js.map +1 -0
  295. package/dist/src/core/AgentDB.d.ts +33 -19
  296. package/dist/src/core/AgentDB.d.ts.map +1 -1
  297. package/dist/src/core/AgentDB.js +87 -127
  298. package/dist/src/core/AgentDB.js.map +1 -1
  299. package/dist/src/core/QueryCache.d.ts +138 -0
  300. package/dist/src/core/QueryCache.d.ts.map +1 -0
  301. package/dist/src/core/QueryCache.js +309 -0
  302. package/dist/src/core/QueryCache.js.map +1 -0
  303. package/dist/src/db-fallback.d.ts +52 -4
  304. package/dist/src/db-fallback.d.ts.map +1 -1
  305. package/dist/src/db-fallback.js +521 -71
  306. package/dist/src/db-fallback.js.map +1 -1
  307. package/dist/src/db-unified.d.ts.map +1 -1
  308. package/dist/src/db-unified.js +32 -30
  309. package/dist/src/db-unified.js.map +1 -1
  310. package/dist/src/embedding/EmbeddingSpaceIdentity.d.ts +58 -0
  311. package/dist/src/embedding/EmbeddingSpaceIdentity.d.ts.map +1 -0
  312. package/dist/src/embedding/EmbeddingSpaceIdentity.js +137 -0
  313. package/dist/src/embedding/EmbeddingSpaceIdentity.js.map +1 -0
  314. package/dist/src/embedding/index.d.ts +3 -0
  315. package/dist/src/embedding/index.d.ts.map +1 -0
  316. package/dist/src/embedding/index.js +2 -0
  317. package/dist/src/embedding/index.js.map +1 -0
  318. package/dist/src/examples/quic-sync-example.js +2 -2
  319. package/dist/src/examples/quic-sync-example.js.map +1 -1
  320. package/dist/src/governance/MetaHarnessGateway.d.ts +55 -0
  321. package/dist/src/governance/MetaHarnessGateway.d.ts.map +1 -0
  322. package/dist/src/governance/MetaHarnessGateway.js +65 -0
  323. package/dist/src/governance/MetaHarnessGateway.js.map +1 -0
  324. package/dist/src/governance/RvfExperimentBranch.d.ts +65 -0
  325. package/dist/src/governance/RvfExperimentBranch.d.ts.map +1 -0
  326. package/dist/src/governance/RvfExperimentBranch.js +115 -0
  327. package/dist/src/governance/RvfExperimentBranch.js.map +1 -0
  328. package/dist/src/index.d.ts +20 -16
  329. package/dist/src/index.d.ts.map +1 -1
  330. package/dist/src/index.js +44 -12
  331. package/dist/src/index.js.map +1 -1
  332. package/dist/src/mcp/agentdb-mcp-server.js +178 -15
  333. package/dist/src/mcp/agentdb-mcp-server.js.map +1 -1
  334. package/dist/src/mcp/reset-database.d.ts +15 -0
  335. package/dist/src/mcp/reset-database.d.ts.map +1 -0
  336. package/dist/src/mcp/reset-database.js +45 -0
  337. package/dist/src/mcp/reset-database.js.map +1 -0
  338. package/dist/src/model/ModelCacheLoader.d.ts +31 -0
  339. package/dist/src/model/ModelCacheLoader.d.ts.map +1 -0
  340. package/dist/src/model/ModelCacheLoader.js +209 -0
  341. package/dist/src/model/ModelCacheLoader.js.map +1 -0
  342. package/dist/src/observability/index.d.ts +8 -0
  343. package/dist/src/observability/index.d.ts.map +1 -0
  344. package/dist/src/observability/index.js +8 -0
  345. package/dist/src/observability/index.js.map +1 -0
  346. package/dist/src/observability/integration.d.ts +32 -0
  347. package/dist/src/observability/integration.d.ts.map +1 -0
  348. package/dist/src/observability/integration.js +159 -0
  349. package/dist/src/observability/integration.js.map +1 -0
  350. package/dist/src/observability/telemetry.d.ts +137 -0
  351. package/dist/src/observability/telemetry.d.ts.map +1 -0
  352. package/dist/src/observability/telemetry.js +424 -0
  353. package/dist/src/observability/telemetry.js.map +1 -0
  354. package/dist/src/optimizations/BatchOperations.d.ts +47 -0
  355. package/dist/src/optimizations/BatchOperations.d.ts.map +1 -1
  356. package/dist/src/optimizations/BatchOperations.js +189 -35
  357. package/dist/src/optimizations/BatchOperations.js.map +1 -1
  358. package/dist/src/optimizations/Quantization.d.ts +330 -0
  359. package/dist/src/optimizations/Quantization.d.ts.map +1 -0
  360. package/dist/src/optimizations/Quantization.js +793 -0
  361. package/dist/src/optimizations/Quantization.js.map +1 -0
  362. package/dist/src/optimizations/index.d.ts +1 -3
  363. package/dist/src/optimizations/index.d.ts.map +1 -1
  364. package/dist/src/optimizations/index.js +0 -1
  365. package/dist/src/optimizations/index.js.map +1 -1
  366. package/dist/src/quantization/index.d.ts +7 -0
  367. package/dist/src/quantization/index.d.ts.map +1 -0
  368. package/dist/src/quantization/index.js +15 -0
  369. package/dist/src/quantization/index.js.map +1 -0
  370. package/dist/src/quantization/vector-quantization.d.ts +388 -0
  371. package/dist/src/quantization/vector-quantization.d.ts.map +1 -0
  372. package/dist/src/quantization/vector-quantization.js +1132 -0
  373. package/dist/src/quantization/vector-quantization.js.map +1 -0
  374. package/dist/src/schemas/inline.d.ts +3 -0
  375. package/dist/src/schemas/inline.d.ts.map +1 -0
  376. package/dist/src/schemas/inline.js +10 -0
  377. package/dist/src/schemas/inline.js.map +1 -0
  378. package/dist/src/search/HybridSearch.d.ts +311 -0
  379. package/dist/src/search/HybridSearch.d.ts.map +1 -0
  380. package/dist/src/search/HybridSearch.js +713 -0
  381. package/dist/src/search/HybridSearch.js.map +1 -0
  382. package/dist/src/search/index.d.ts +12 -0
  383. package/dist/src/search/index.d.ts.map +1 -0
  384. package/dist/src/search/index.js +16 -0
  385. package/dist/src/search/index.js.map +1 -0
  386. package/dist/src/security/input-validation.d.ts +30 -0
  387. package/dist/src/security/input-validation.d.ts.map +1 -1
  388. package/dist/src/security/input-validation.js +77 -3
  389. package/dist/src/security/input-validation.js.map +1 -1
  390. package/dist/src/security/limits.d.ts.map +1 -1
  391. package/dist/src/security/limits.js +12 -3
  392. package/dist/src/security/limits.js.map +1 -1
  393. package/dist/src/security/mcp-policy.d.ts +17 -0
  394. package/dist/src/security/mcp-policy.d.ts.map +1 -0
  395. package/dist/src/security/mcp-policy.js +90 -0
  396. package/dist/src/security/mcp-policy.js.map +1 -0
  397. package/dist/src/security/path-security.d.ts.map +1 -1
  398. package/dist/src/security/path-security.js +3 -1
  399. package/dist/src/security/path-security.js.map +1 -1
  400. package/dist/src/security/validation.js +3 -3
  401. package/dist/src/security/validation.js.map +1 -1
  402. package/dist/src/services/AttentionService.d.ts +303 -0
  403. package/dist/src/services/AttentionService.d.ts.map +1 -0
  404. package/dist/src/services/AttentionService.js +1165 -0
  405. package/dist/src/services/AttentionService.js.map +1 -0
  406. package/dist/src/services/LLMRouter.d.ts +70 -8
  407. package/dist/src/services/LLMRouter.d.ts.map +1 -1
  408. package/dist/src/services/LLMRouter.js +279 -28
  409. package/dist/src/services/LLMRouter.js.map +1 -1
  410. package/dist/src/services/audit-logger.service.d.ts +168 -0
  411. package/dist/src/services/audit-logger.service.d.ts.map +1 -0
  412. package/dist/src/services/audit-logger.service.js +331 -0
  413. package/dist/src/services/audit-logger.service.js.map +1 -0
  414. package/dist/src/services/enhanced-embeddings.d.ts +271 -0
  415. package/dist/src/services/enhanced-embeddings.d.ts.map +1 -0
  416. package/dist/src/services/enhanced-embeddings.js +1036 -0
  417. package/dist/src/services/enhanced-embeddings.js.map +1 -0
  418. package/dist/src/services/federated-learning.d.ts +172 -0
  419. package/dist/src/services/federated-learning.d.ts.map +1 -0
  420. package/dist/src/services/federated-learning.js +344 -0
  421. package/dist/src/services/federated-learning.js.map +1 -0
  422. package/dist/src/simd/index.d.ts +9 -0
  423. package/dist/src/simd/index.d.ts.map +1 -0
  424. package/dist/src/simd/index.js +27 -0
  425. package/dist/src/simd/index.js.map +1 -0
  426. package/dist/src/simd/simd-vector-ops.d.ts +332 -0
  427. package/dist/src/simd/simd-vector-ops.d.ts.map +1 -0
  428. package/dist/src/simd/simd-vector-ops.js +945 -0
  429. package/dist/src/simd/simd-vector-ops.js.map +1 -0
  430. package/dist/src/types/database.types.d.ts +275 -0
  431. package/dist/src/types/database.types.d.ts.map +1 -0
  432. package/dist/src/types/database.types.js +55 -0
  433. package/dist/src/types/database.types.js.map +1 -0
  434. package/dist/src/types/graph.d.ts +29 -0
  435. package/dist/src/types/graph.d.ts.map +1 -0
  436. package/dist/src/types/graph.js +8 -0
  437. package/dist/src/types/graph.js.map +1 -0
  438. package/dist/src/utils/chalk-fallback.d.ts +3 -0
  439. package/dist/src/utils/chalk-fallback.d.ts.map +1 -0
  440. package/dist/src/utils/chalk-fallback.js +20 -0
  441. package/dist/src/utils/chalk-fallback.js.map +1 -0
  442. package/dist/src/utils/similarity.d.ts +11 -0
  443. package/dist/src/utils/similarity.d.ts.map +1 -0
  444. package/dist/src/utils/similarity.js +25 -0
  445. package/dist/src/utils/similarity.js.map +1 -0
  446. package/dist/src/wasm-loader.d.ts +66 -0
  447. package/dist/src/wasm-loader.d.ts.map +1 -0
  448. package/dist/src/wasm-loader.js +76 -0
  449. package/dist/src/wasm-loader.js.map +1 -0
  450. package/dist/src/wrappers/agentdb-fast.d.ts +140 -0
  451. package/dist/src/wrappers/agentdb-fast.d.ts.map +1 -0
  452. package/dist/src/wrappers/agentdb-fast.js +309 -0
  453. package/dist/src/wrappers/agentdb-fast.js.map +1 -0
  454. package/dist/src/wrappers/attention-fallbacks.d.ts +343 -0
  455. package/dist/src/wrappers/attention-fallbacks.d.ts.map +1 -0
  456. package/dist/src/wrappers/attention-fallbacks.js +1484 -0
  457. package/dist/src/wrappers/attention-fallbacks.js.map +1 -0
  458. package/dist/src/wrappers/attention-native.d.ts +111 -0
  459. package/dist/src/wrappers/attention-native.d.ts.map +1 -0
  460. package/dist/src/wrappers/attention-native.js +273 -0
  461. package/dist/src/wrappers/attention-native.js.map +1 -0
  462. package/dist/src/wrappers/embedding-service.d.ts +117 -0
  463. package/dist/src/wrappers/embedding-service.d.ts.map +1 -0
  464. package/dist/src/wrappers/embedding-service.js +370 -0
  465. package/dist/src/wrappers/embedding-service.js.map +1 -0
  466. package/dist/src/wrappers/gnn-wrapper.d.ts +71 -0
  467. package/dist/src/wrappers/gnn-wrapper.d.ts.map +1 -0
  468. package/dist/src/wrappers/gnn-wrapper.js +236 -0
  469. package/dist/src/wrappers/gnn-wrapper.js.map +1 -0
  470. package/dist/src/wrappers/index.d.ts +48 -0
  471. package/dist/src/wrappers/index.d.ts.map +1 -0
  472. package/dist/src/wrappers/index.js +83 -0
  473. package/dist/src/wrappers/index.js.map +1 -0
  474. package/package.json +130 -80
  475. package/scripts/postinstall.cjs +13 -144
  476. package/dist/agentdb.browser.js +0 -1685
  477. package/dist/agentdb.browser.js.map +0 -7
  478. package/dist/agentdb.browser.min.js +0 -3
  479. package/dist/agentdb.browser.min.js.map +0 -7
  480. package/dist/agentdb.wasm-loader.js +0 -207
  481. package/dist/backends/VectorBackend.d.ts +0 -120
  482. package/dist/backends/VectorBackend.js +0 -14
  483. package/dist/backends/VectorBackend.js.map +0 -1
  484. package/dist/optimizations/RVFOptimizer.d.ts +0 -225
  485. package/dist/optimizations/RVFOptimizer.js +0 -541
  486. package/dist/optimizations/RVFOptimizer.js.map +0 -1
  487. package/dist/simulation/cli.d.ts +0 -9
  488. package/dist/simulation/cli.d.ts.map +0 -1
  489. package/dist/simulation/cli.js +0 -68
  490. package/dist/simulation/cli.js.map +0 -1
  491. package/dist/simulation/runner.d.ts +0 -21
  492. package/dist/simulation/runner.d.ts.map +0 -1
  493. package/dist/simulation/runner.js +0 -241
  494. package/dist/simulation/runner.js.map +0 -1
  495. package/dist/simulation/scenarios/aidefence-integration.d.ts +0 -24
  496. package/dist/simulation/scenarios/aidefence-integration.d.ts.map +0 -1
  497. package/dist/simulation/scenarios/aidefence-integration.js +0 -124
  498. package/dist/simulation/scenarios/aidefence-integration.js.map +0 -1
  499. package/dist/simulation/scenarios/bmssp-integration.d.ts +0 -23
  500. package/dist/simulation/scenarios/bmssp-integration.d.ts.map +0 -1
  501. package/dist/simulation/scenarios/bmssp-integration.js +0 -104
  502. package/dist/simulation/scenarios/bmssp-integration.js.map +0 -1
  503. package/dist/simulation/scenarios/causal-reasoning.d.ts +0 -16
  504. package/dist/simulation/scenarios/causal-reasoning.d.ts.map +0 -1
  505. package/dist/simulation/scenarios/causal-reasoning.js +0 -108
  506. package/dist/simulation/scenarios/causal-reasoning.js.map +0 -1
  507. package/dist/simulation/scenarios/consciousness-explorer.d.ts +0 -25
  508. package/dist/simulation/scenarios/consciousness-explorer.d.ts.map +0 -1
  509. package/dist/simulation/scenarios/consciousness-explorer.js +0 -108
  510. package/dist/simulation/scenarios/consciousness-explorer.js.map +0 -1
  511. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.d.ts +0 -135
  512. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.d.ts.map +0 -1
  513. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.js +0 -158
  514. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.js.map +0 -1
  515. package/dist/simulation/scenarios/domain-examples/index.d.ts +0 -14
  516. package/dist/simulation/scenarios/domain-examples/index.d.ts.map +0 -1
  517. package/dist/simulation/scenarios/domain-examples/index.js +0 -14
  518. package/dist/simulation/scenarios/domain-examples/index.js.map +0 -1
  519. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.d.ts +0 -178
  520. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.d.ts.map +0 -1
  521. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.js +0 -218
  522. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.js.map +0 -1
  523. package/dist/simulation/scenarios/domain-examples/medical-imaging.d.ts +0 -122
  524. package/dist/simulation/scenarios/domain-examples/medical-imaging.d.ts.map +0 -1
  525. package/dist/simulation/scenarios/domain-examples/medical-imaging.js +0 -129
  526. package/dist/simulation/scenarios/domain-examples/medical-imaging.js.map +0 -1
  527. package/dist/simulation/scenarios/domain-examples/robotics-navigation.d.ts +0 -166
  528. package/dist/simulation/scenarios/domain-examples/robotics-navigation.d.ts.map +0 -1
  529. package/dist/simulation/scenarios/domain-examples/robotics-navigation.js +0 -161
  530. package/dist/simulation/scenarios/domain-examples/robotics-navigation.js.map +0 -1
  531. package/dist/simulation/scenarios/domain-examples/scientific-research.d.ts +0 -151
  532. package/dist/simulation/scenarios/domain-examples/scientific-research.d.ts.map +0 -1
  533. package/dist/simulation/scenarios/domain-examples/scientific-research.js +0 -187
  534. package/dist/simulation/scenarios/domain-examples/scientific-research.js.map +0 -1
  535. package/dist/simulation/scenarios/domain-examples/trading-systems.d.ts +0 -102
  536. package/dist/simulation/scenarios/domain-examples/trading-systems.d.ts.map +0 -1
  537. package/dist/simulation/scenarios/domain-examples/trading-systems.js +0 -100
  538. package/dist/simulation/scenarios/domain-examples/trading-systems.js.map +0 -1
  539. package/dist/simulation/scenarios/goalie-integration.d.ts +0 -24
  540. package/dist/simulation/scenarios/goalie-integration.d.ts.map +0 -1
  541. package/dist/simulation/scenarios/goalie-integration.js +0 -121
  542. package/dist/simulation/scenarios/goalie-integration.js.map +0 -1
  543. package/dist/simulation/scenarios/graph-traversal.d.ts +0 -17
  544. package/dist/simulation/scenarios/graph-traversal.d.ts.map +0 -1
  545. package/dist/simulation/scenarios/graph-traversal.js +0 -101
  546. package/dist/simulation/scenarios/graph-traversal.js.map +0 -1
  547. package/dist/simulation/scenarios/latent-space/attention-analysis.d.ts +0 -45
  548. package/dist/simulation/scenarios/latent-space/attention-analysis.d.ts.map +0 -1
  549. package/dist/simulation/scenarios/latent-space/attention-analysis.js +0 -435
  550. package/dist/simulation/scenarios/latent-space/attention-analysis.js.map +0 -1
  551. package/dist/simulation/scenarios/latent-space/clustering-analysis.d.ts +0 -55
  552. package/dist/simulation/scenarios/latent-space/clustering-analysis.d.ts.map +0 -1
  553. package/dist/simulation/scenarios/latent-space/clustering-analysis.js +0 -606
  554. package/dist/simulation/scenarios/latent-space/clustering-analysis.js.map +0 -1
  555. package/dist/simulation/scenarios/latent-space/hnsw-exploration.d.ts +0 -74
  556. package/dist/simulation/scenarios/latent-space/hnsw-exploration.d.ts.map +0 -1
  557. package/dist/simulation/scenarios/latent-space/hnsw-exploration.js +0 -391
  558. package/dist/simulation/scenarios/latent-space/hnsw-exploration.js.map +0 -1
  559. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.d.ts +0 -51
  560. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.d.ts.map +0 -1
  561. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.js +0 -536
  562. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.js.map +0 -1
  563. package/dist/simulation/scenarios/latent-space/index.d.ts +0 -35
  564. package/dist/simulation/scenarios/latent-space/index.d.ts.map +0 -1
  565. package/dist/simulation/scenarios/latent-space/index.js +0 -35
  566. package/dist/simulation/scenarios/latent-space/index.js.map +0 -1
  567. package/dist/simulation/scenarios/latent-space/neural-augmentation.d.ts +0 -52
  568. package/dist/simulation/scenarios/latent-space/neural-augmentation.d.ts.map +0 -1
  569. package/dist/simulation/scenarios/latent-space/neural-augmentation.js +0 -472
  570. package/dist/simulation/scenarios/latent-space/neural-augmentation.js.map +0 -1
  571. package/dist/simulation/scenarios/latent-space/quantum-hybrid.d.ts +0 -53
  572. package/dist/simulation/scenarios/latent-space/quantum-hybrid.d.ts.map +0 -1
  573. package/dist/simulation/scenarios/latent-space/quantum-hybrid.js +0 -391
  574. package/dist/simulation/scenarios/latent-space/quantum-hybrid.js.map +0 -1
  575. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.d.ts +0 -52
  576. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.d.ts.map +0 -1
  577. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.js +0 -514
  578. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.js.map +0 -1
  579. package/dist/simulation/scenarios/latent-space/traversal-optimization.d.ts +0 -53
  580. package/dist/simulation/scenarios/latent-space/traversal-optimization.d.ts.map +0 -1
  581. package/dist/simulation/scenarios/latent-space/traversal-optimization.js +0 -595
  582. package/dist/simulation/scenarios/latent-space/traversal-optimization.js.map +0 -1
  583. package/dist/simulation/scenarios/lean-agentic-swarm.d.ts +0 -18
  584. package/dist/simulation/scenarios/lean-agentic-swarm.d.ts.map +0 -1
  585. package/dist/simulation/scenarios/lean-agentic-swarm.js +0 -132
  586. package/dist/simulation/scenarios/lean-agentic-swarm.js.map +0 -1
  587. package/dist/simulation/scenarios/multi-agent-swarm.d.ts +0 -17
  588. package/dist/simulation/scenarios/multi-agent-swarm.d.ts.map +0 -1
  589. package/dist/simulation/scenarios/multi-agent-swarm.js +0 -111
  590. package/dist/simulation/scenarios/multi-agent-swarm.js.map +0 -1
  591. package/dist/simulation/scenarios/psycho-symbolic-reasoner.d.ts +0 -23
  592. package/dist/simulation/scenarios/psycho-symbolic-reasoner.d.ts.map +0 -1
  593. package/dist/simulation/scenarios/psycho-symbolic-reasoner.js +0 -98
  594. package/dist/simulation/scenarios/psycho-symbolic-reasoner.js.map +0 -1
  595. package/dist/simulation/scenarios/reflexion-learning.d.ts +0 -16
  596. package/dist/simulation/scenarios/reflexion-learning.d.ts.map +0 -1
  597. package/dist/simulation/scenarios/reflexion-learning.js +0 -98
  598. package/dist/simulation/scenarios/reflexion-learning.js.map +0 -1
  599. package/dist/simulation/scenarios/research-swarm.d.ts +0 -24
  600. package/dist/simulation/scenarios/research-swarm.d.ts.map +0 -1
  601. package/dist/simulation/scenarios/research-swarm.js +0 -146
  602. package/dist/simulation/scenarios/research-swarm.js.map +0 -1
  603. package/dist/simulation/scenarios/skill-evolution.d.ts +0 -16
  604. package/dist/simulation/scenarios/skill-evolution.d.ts.map +0 -1
  605. package/dist/simulation/scenarios/skill-evolution.js +0 -109
  606. package/dist/simulation/scenarios/skill-evolution.js.map +0 -1
  607. package/dist/simulation/scenarios/stock-market-emergence.d.ts +0 -33
  608. package/dist/simulation/scenarios/stock-market-emergence.d.ts.map +0 -1
  609. package/dist/simulation/scenarios/stock-market-emergence.js +0 -246
  610. package/dist/simulation/scenarios/stock-market-emergence.js.map +0 -1
  611. package/dist/simulation/scenarios/strange-loops.d.ts +0 -18
  612. package/dist/simulation/scenarios/strange-loops.d.ts.map +0 -1
  613. package/dist/simulation/scenarios/strange-loops.js +0 -133
  614. package/dist/simulation/scenarios/strange-loops.js.map +0 -1
  615. package/dist/simulation/scenarios/sublinear-solver.d.ts +0 -22
  616. package/dist/simulation/scenarios/sublinear-solver.d.ts.map +0 -1
  617. package/dist/simulation/scenarios/sublinear-solver.js +0 -82
  618. package/dist/simulation/scenarios/sublinear-solver.js.map +0 -1
  619. package/dist/simulation/scenarios/temporal-lead-solver.d.ts +0 -23
  620. package/dist/simulation/scenarios/temporal-lead-solver.d.ts.map +0 -1
  621. package/dist/simulation/scenarios/temporal-lead-solver.js +0 -90
  622. package/dist/simulation/scenarios/temporal-lead-solver.js.map +0 -1
  623. package/dist/simulation/scenarios/voting-system-consensus.d.ts +0 -27
  624. package/dist/simulation/scenarios/voting-system-consensus.d.ts.map +0 -1
  625. package/dist/simulation/scenarios/voting-system-consensus.js +0 -175
  626. package/dist/simulation/scenarios/voting-system-consensus.js.map +0 -1
  627. package/dist/simulation/types.d.ts +0 -162
  628. package/dist/simulation/types.d.ts.map +0 -1
  629. package/dist/simulation/types.js +0 -5
  630. package/dist/simulation/types.js.map +0 -1
  631. package/dist/simulation/utils/PerformanceOptimizer.d.ts +0 -115
  632. package/dist/simulation/utils/PerformanceOptimizer.d.ts.map +0 -1
  633. package/dist/simulation/utils/PerformanceOptimizer.js +0 -223
  634. package/dist/simulation/utils/PerformanceOptimizer.js.map +0 -1
  635. package/dist/src/backends/index.cjs +0 -6
  636. package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts +0 -93
  637. package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts.map +0 -1
  638. package/dist/src/backends/ruvector/GuardedVectorBackend.js +0 -182
  639. package/dist/src/backends/ruvector/GuardedVectorBackend.js.map +0 -1
  640. package/dist/src/consensus/RaftConsensus.d.ts +0 -220
  641. package/dist/src/consensus/RaftConsensus.d.ts.map +0 -1
  642. package/dist/src/consensus/RaftConsensus.js +0 -762
  643. package/dist/src/consensus/RaftConsensus.js.map +0 -1
  644. package/dist/src/controllers/HierarchicalMemory.d.ts +0 -197
  645. package/dist/src/controllers/HierarchicalMemory.d.ts.map +0 -1
  646. package/dist/src/controllers/HierarchicalMemory.js +0 -519
  647. package/dist/src/controllers/HierarchicalMemory.js.map +0 -1
  648. package/dist/src/controllers/MemoryConsolidation.d.ts +0 -142
  649. package/dist/src/controllers/MemoryConsolidation.d.ts.map +0 -1
  650. package/dist/src/controllers/MemoryConsolidation.js +0 -479
  651. package/dist/src/controllers/MemoryConsolidation.js.map +0 -1
  652. package/dist/src/controllers/QUICConnection.d.ts +0 -122
  653. package/dist/src/controllers/QUICConnection.d.ts.map +0 -1
  654. package/dist/src/controllers/QUICConnection.js +0 -329
  655. package/dist/src/controllers/QUICConnection.js.map +0 -1
  656. package/dist/src/controllers/QUICConnectionPool.d.ts +0 -83
  657. package/dist/src/controllers/QUICConnectionPool.d.ts.map +0 -1
  658. package/dist/src/controllers/QUICConnectionPool.js +0 -256
  659. package/dist/src/controllers/QUICConnectionPool.js.map +0 -1
  660. package/dist/src/controllers/QUICStreamManager.d.ts +0 -114
  661. package/dist/src/controllers/QUICStreamManager.d.ts.map +0 -1
  662. package/dist/src/controllers/QUICStreamManager.js +0 -267
  663. package/dist/src/controllers/QUICStreamManager.js.map +0 -1
  664. package/dist/src/controllers/StreamingEmbeddingService.d.ts +0 -82
  665. package/dist/src/controllers/StreamingEmbeddingService.d.ts.map +0 -1
  666. package/dist/src/controllers/StreamingEmbeddingService.js +0 -243
  667. package/dist/src/controllers/StreamingEmbeddingService.js.map +0 -1
  668. package/dist/src/controllers/index.cjs +0 -6
  669. package/dist/src/coordination/MultiDatabaseCoordinator.d.ts +0 -348
  670. package/dist/src/coordination/MultiDatabaseCoordinator.d.ts.map +0 -1
  671. package/dist/src/coordination/MultiDatabaseCoordinator.js +0 -803
  672. package/dist/src/coordination/MultiDatabaseCoordinator.js.map +0 -1
  673. package/dist/src/coordination/index.d.ts +0 -10
  674. package/dist/src/coordination/index.d.ts.map +0 -1
  675. package/dist/src/coordination/index.js +0 -10
  676. package/dist/src/coordination/index.js.map +0 -1
  677. package/dist/src/index.cjs +0 -6
  678. package/dist/src/optimizations/RVFOptimizer.d.ts +0 -226
  679. package/dist/src/optimizations/RVFOptimizer.d.ts.map +0 -1
  680. package/dist/src/optimizations/RVFOptimizer.js +0 -541
  681. package/dist/src/optimizations/RVFOptimizer.js.map +0 -1
  682. package/dist/src/security/AttestationLog.d.ts +0 -70
  683. package/dist/src/security/AttestationLog.d.ts.map +0 -1
  684. package/dist/src/security/AttestationLog.js +0 -174
  685. package/dist/src/security/AttestationLog.js.map +0 -1
  686. package/dist/src/security/MutationGuard.d.ts +0 -83
  687. package/dist/src/security/MutationGuard.d.ts.map +0 -1
  688. package/dist/src/security/MutationGuard.js +0 -364
  689. package/dist/src/security/MutationGuard.js.map +0 -1
  690. package/dist/src/security/index.cjs +0 -6
  691. package/dist/src/security/index.d.ts +0 -15
  692. package/dist/src/security/index.d.ts.map +0 -1
  693. package/dist/src/security/index.js +0 -18
  694. package/dist/src/security/index.js.map +0 -1
  695. package/dist/src/services/GNNService.d.ts +0 -172
  696. package/dist/src/services/GNNService.d.ts.map +0 -1
  697. package/dist/src/services/GNNService.js +0 -612
  698. package/dist/src/services/GNNService.js.map +0 -1
  699. package/dist/src/services/GraphTransformerService.d.ts +0 -80
  700. package/dist/src/services/GraphTransformerService.d.ts.map +0 -1
  701. package/dist/src/services/GraphTransformerService.js +0 -369
  702. package/dist/src/services/GraphTransformerService.js.map +0 -1
  703. package/dist/src/services/SemanticRouter.d.ts +0 -83
  704. package/dist/src/services/SemanticRouter.d.ts.map +0 -1
  705. package/dist/src/services/SemanticRouter.js +0 -160
  706. package/dist/src/services/SemanticRouter.js.map +0 -1
  707. package/dist/src/services/SonaTrajectoryService.d.ts +0 -224
  708. package/dist/src/services/SonaTrajectoryService.d.ts.map +0 -1
  709. package/dist/src/services/SonaTrajectoryService.js +0 -539
  710. package/dist/src/services/SonaTrajectoryService.js.map +0 -1
  711. package/dist/src/utils/LegacyAttentionAdapter.d.ts +0 -93
  712. package/dist/src/utils/LegacyAttentionAdapter.d.ts.map +0 -1
  713. package/dist/src/utils/LegacyAttentionAdapter.js +0 -241
  714. package/dist/src/utils/LegacyAttentionAdapter.js.map +0 -1
  715. package/dist/src/utils/vector-math.d.ts +0 -29
  716. package/dist/src/utils/vector-math.d.ts.map +0 -1
  717. package/dist/src/utils/vector-math.js +0 -66
  718. package/dist/src/utils/vector-math.js.map +0 -1
@@ -0,0 +1,1036 @@
1
+ /**
2
+ * Enhanced Embedding Service with RuVector Integration
3
+ *
4
+ * A comprehensive embedding service supporting:
5
+ * - Multiple providers (@huggingface/transformers, OpenAI, Cohere, custom)
6
+ * - LRU cache with O(1) operations using doubly-linked list
7
+ * - Batch processing with semaphore-controlled parallelism
8
+ * - Text pre-processing pipeline (normalization, chunking, deduplication)
9
+ * - Direct RuVector storage and hybrid search
10
+ * - Lazy model loading with runtime switching
11
+ */
12
+ import { searchVectors } from '../backends/VectorBackend.js';
13
+ // ============================================================================
14
+ // Performance & Security Constants
15
+ // ============================================================================
16
+ /** @inline Maximum allowed vector dimension for bounds checking */
17
+ export const MAX_VECTOR_DIMENSION = 4096;
18
+ /** @inline Maximum allowed cache size to prevent memory exhaustion */
19
+ export const MAX_CACHE_SIZE = 100_000;
20
+ /** @inline Default cache size for embedding storage */
21
+ export const DEFAULT_CACHE_SIZE = 10000;
22
+ /** @inline Maximum text length to prevent DoS via large inputs */
23
+ const MAX_TEXT_LENGTH = 100_000;
24
+ /** @inline Maximum batch size to prevent memory exhaustion */
25
+ export const MAX_BATCH_SIZE = 10000;
26
+ /** @inline API request timeout in milliseconds */
27
+ const API_TIMEOUT_MS = 30_000;
28
+ /** @inline Maximum concurrent API requests */
29
+ const MAX_CONCURRENT_REQUESTS = 10;
30
+ /** @inline Small epsilon for numerical stability */
31
+ const EPSILON = 1e-10;
32
+ /** Allowed API hosts for external calls */
33
+ const ALLOWED_API_HOSTS = [
34
+ 'api.openai.com',
35
+ 'api.cohere.ai',
36
+ ];
37
+ // ============================================================================
38
+ // Security Helpers
39
+ // ============================================================================
40
+ /**
41
+ * Mask sensitive data in error messages
42
+ */
43
+ function maskApiKey(key) {
44
+ if (!key)
45
+ return '[not set]';
46
+ if (key.length <= 8)
47
+ return '***';
48
+ return `${key.slice(0, 4)}...${key.slice(-4)}`;
49
+ }
50
+ /**
51
+ * Validate URL is allowed for external API calls
52
+ */
53
+ function validateApiUrl(url) {
54
+ try {
55
+ const parsed = new URL(url);
56
+ if (!ALLOWED_API_HOSTS.includes(parsed.host)) {
57
+ throw new Error(`API host not allowed: ${parsed.host}`);
58
+ }
59
+ if (parsed.protocol !== 'https:') {
60
+ throw new Error('Only HTTPS connections are allowed');
61
+ }
62
+ }
63
+ catch (e) {
64
+ if (e instanceof Error && e.message.includes('not allowed')) {
65
+ throw e;
66
+ }
67
+ throw new Error('Invalid API URL');
68
+ }
69
+ }
70
+ /**
71
+ * Create a fetch request with timeout
72
+ */
73
+ async function fetchWithTimeout(url, options, timeoutMs = API_TIMEOUT_MS) {
74
+ const controller = new AbortController();
75
+ const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
76
+ try {
77
+ const response = await fetch(url, {
78
+ ...options,
79
+ signal: controller.signal,
80
+ });
81
+ return response;
82
+ }
83
+ finally {
84
+ clearTimeout(timeoutId);
85
+ }
86
+ }
87
+ /**
88
+ * LRU Cache with O(1) get/put operations using doubly-linked list + hash map
89
+ */
90
+ class LRUCache {
91
+ capacity;
92
+ map = new Map();
93
+ head = null;
94
+ tail = null;
95
+ // Statistics
96
+ _hits = 0;
97
+ _misses = 0;
98
+ trackStats;
99
+ constructor(capacity, trackStats = true) {
100
+ // Enforce maximum cache size for security
101
+ this.capacity = Math.min(Math.max(1, capacity), MAX_CACHE_SIZE);
102
+ this.trackStats = trackStats;
103
+ }
104
+ /**
105
+ * Get value from cache - O(1)
106
+ */
107
+ get(key) {
108
+ const node = this.map.get(key);
109
+ if (!node) {
110
+ if (this.trackStats)
111
+ this._misses++;
112
+ return undefined;
113
+ }
114
+ if (this.trackStats)
115
+ this._hits++;
116
+ // Move to front (most recently used)
117
+ this.moveToFront(node);
118
+ return node.value;
119
+ }
120
+ /**
121
+ * Put value in cache - O(1)
122
+ */
123
+ put(key, value) {
124
+ const existingNode = this.map.get(key);
125
+ if (existingNode) {
126
+ // Update existing node and move to front
127
+ existingNode.value = value;
128
+ this.moveToFront(existingNode);
129
+ return;
130
+ }
131
+ // Create new node
132
+ const newNode = {
133
+ key,
134
+ value,
135
+ prev: null,
136
+ next: this.head,
137
+ };
138
+ // Add to front
139
+ if (this.head) {
140
+ this.head.prev = newNode;
141
+ }
142
+ this.head = newNode;
143
+ if (!this.tail) {
144
+ this.tail = newNode;
145
+ }
146
+ this.map.set(key, newNode);
147
+ // Evict if over capacity
148
+ if (this.map.size > this.capacity) {
149
+ this.evictLRU();
150
+ }
151
+ }
152
+ /**
153
+ * Check if key exists - O(1)
154
+ */
155
+ has(key) {
156
+ return this.map.has(key);
157
+ }
158
+ /**
159
+ * Delete key from cache - O(1)
160
+ */
161
+ delete(key) {
162
+ const node = this.map.get(key);
163
+ if (!node)
164
+ return false;
165
+ this.removeNode(node);
166
+ this.map.delete(key);
167
+ return true;
168
+ }
169
+ /**
170
+ * Clear all entries
171
+ */
172
+ clear() {
173
+ this.map.clear();
174
+ this.head = null;
175
+ this.tail = null;
176
+ this._hits = 0;
177
+ this._misses = 0;
178
+ }
179
+ /**
180
+ * Get current size
181
+ */
182
+ get size() {
183
+ return this.map.size;
184
+ }
185
+ /**
186
+ * Get cache statistics
187
+ */
188
+ get stats() {
189
+ const total = this._hits + this._misses;
190
+ return {
191
+ hits: this._hits,
192
+ misses: this._misses,
193
+ hitRate: total > 0 ? this._hits / total : 0,
194
+ size: this.map.size,
195
+ maxSize: this.capacity,
196
+ };
197
+ }
198
+ /**
199
+ * Move node to front of list (most recently used)
200
+ */
201
+ moveToFront(node) {
202
+ if (node === this.head)
203
+ return;
204
+ // Remove from current position
205
+ this.removeNode(node);
206
+ // Add to front
207
+ node.prev = null;
208
+ node.next = this.head;
209
+ if (this.head) {
210
+ this.head.prev = node;
211
+ }
212
+ this.head = node;
213
+ if (!this.tail) {
214
+ this.tail = node;
215
+ }
216
+ }
217
+ /**
218
+ * Remove node from list
219
+ */
220
+ removeNode(node) {
221
+ if (node.prev) {
222
+ node.prev.next = node.next;
223
+ }
224
+ else {
225
+ this.head = node.next;
226
+ }
227
+ if (node.next) {
228
+ node.next.prev = node.prev;
229
+ }
230
+ else {
231
+ this.tail = node.prev;
232
+ }
233
+ }
234
+ /**
235
+ * Evict least recently used entry
236
+ */
237
+ evictLRU() {
238
+ if (!this.tail)
239
+ return;
240
+ const lruKey = this.tail.key;
241
+ this.removeNode(this.tail);
242
+ this.map.delete(lruKey);
243
+ }
244
+ }
245
+ // ============================================================================
246
+ // Semaphore for Concurrency Control
247
+ // ============================================================================
248
+ /**
249
+ * Simple semaphore for controlling concurrent operations
250
+ */
251
+ class Semaphore {
252
+ permits;
253
+ waiting = [];
254
+ maxWaiting;
255
+ constructor(permits, maxWaiting = 1000) {
256
+ // Enforce maximum concurrent requests for security
257
+ this.permits = Math.min(Math.max(1, permits), MAX_CONCURRENT_REQUESTS);
258
+ this.maxWaiting = maxWaiting;
259
+ }
260
+ async acquire() {
261
+ if (this.permits > 0) {
262
+ this.permits--;
263
+ return;
264
+ }
265
+ // Prevent unbounded queue growth (deadlock protection)
266
+ if (this.waiting.length >= this.maxWaiting) {
267
+ throw new Error('Too many pending requests - semaphore queue full');
268
+ }
269
+ return new Promise((resolve) => {
270
+ this.waiting.push(resolve);
271
+ });
272
+ }
273
+ release() {
274
+ const next = this.waiting.shift();
275
+ if (next) {
276
+ next();
277
+ }
278
+ else {
279
+ this.permits++;
280
+ }
281
+ }
282
+ async withLock(fn) {
283
+ await this.acquire();
284
+ try {
285
+ return await fn();
286
+ }
287
+ finally {
288
+ this.release();
289
+ }
290
+ }
291
+ }
292
+ // ============================================================================
293
+ // Model Dimension Mapping
294
+ // ============================================================================
295
+ const MODEL_DIMENSIONS = {
296
+ 'all-MiniLM-L6-v2': 384,
297
+ 'Xenova/all-MiniLM-L6-v2': 384,
298
+ 'all-mpnet-base-v2': 768,
299
+ 'Xenova/all-mpnet-base-v2': 768,
300
+ 'bge-small-en-v1.5': 384,
301
+ 'BAAI/bge-small-en-v1.5': 384,
302
+ 'text-embedding-ada-002': 1536, // OpenAI
303
+ 'text-embedding-3-small': 1536, // OpenAI
304
+ 'text-embedding-3-large': 3072, // OpenAI
305
+ 'embed-english-v3.0': 1024, // Cohere
306
+ 'embed-multilingual-v3.0': 1024, // Cohere
307
+ };
308
+ /**
309
+ * Get model dimension from model name
310
+ */
311
+ function getModelDimension(model) {
312
+ return MODEL_DIMENSIONS[model] || MODEL_DIMENSIONS[`Xenova/${model}`] || 384;
313
+ }
314
+ // ============================================================================
315
+ // Enhanced Embedding Service Implementation
316
+ // ============================================================================
317
+ /**
318
+ * Enhanced Embedding Service with RuVector Integration
319
+ */
320
+ export class EnhancedEmbeddingService {
321
+ config;
322
+ cache;
323
+ semaphore;
324
+ pipeline = null;
325
+ modelLoaded = false;
326
+ // Statistics
327
+ totalEmbeddings = 0;
328
+ totalBatches = 0;
329
+ totalBatchItems = 0;
330
+ constructor(config = {}) {
331
+ // Set defaults
332
+ this.config = {
333
+ provider: config.provider ?? 'transformers',
334
+ model: config.model ?? 'all-MiniLM-L6-v2',
335
+ dimension: config.dimension ?? getModelDimension(config.model ?? 'all-MiniLM-L6-v2'),
336
+ apiKey: config.apiKey ?? '',
337
+ customEmbedder: config.customEmbedder,
338
+ cache: {
339
+ maxSize: config.cache?.maxSize ?? 10000,
340
+ trackStats: config.cache?.trackStats ?? true,
341
+ },
342
+ batch: {
343
+ batchSize: config.batch?.batchSize ?? 32,
344
+ maxConcurrency: config.batch?.maxConcurrency ?? 4,
345
+ enableProgress: config.batch?.enableProgress ?? true,
346
+ },
347
+ preprocessing: {
348
+ normalize: config.preprocessing?.normalize ?? true,
349
+ maxLength: config.preprocessing?.maxLength ?? 2000,
350
+ chunkOverlap: config.preprocessing?.chunkOverlap ?? 50,
351
+ deduplicate: config.preprocessing?.deduplicate ?? true,
352
+ },
353
+ vectorBackend: config.vectorBackend,
354
+ };
355
+ // Initialize cache
356
+ this.cache = new LRUCache(this.config.cache.maxSize, this.config.cache.trackStats);
357
+ // Initialize semaphore for concurrency control
358
+ this.semaphore = new Semaphore(this.config.batch.maxConcurrency);
359
+ }
360
+ // ==========================================================================
361
+ // Core Embedding Methods
362
+ // ==========================================================================
363
+ /**
364
+ * Generate embedding for a single text
365
+ */
366
+ async embed(text) {
367
+ // Pre-process text
368
+ const processedText = this.preprocessText(text);
369
+ // Check cache
370
+ const cacheKey = this.getCacheKey(processedText);
371
+ const cached = this.cache.get(cacheKey);
372
+ if (cached) {
373
+ return cached;
374
+ }
375
+ // Generate embedding
376
+ const embedding = await this.generateEmbedding(processedText);
377
+ // Cache result
378
+ this.cache.put(cacheKey, embedding);
379
+ this.totalEmbeddings++;
380
+ return embedding;
381
+ }
382
+ /**
383
+ * Generate embeddings for multiple texts with batch processing
384
+ */
385
+ async embedBatch(texts, onProgress) {
386
+ if (texts.length === 0)
387
+ return [];
388
+ // Enforce maximum batch size
389
+ if (texts.length > MAX_BATCH_SIZE) {
390
+ throw new Error(`Batch size ${texts.length} exceeds maximum of ${MAX_BATCH_SIZE}`);
391
+ }
392
+ // Pre-process all texts
393
+ const processedTexts = texts.map((t) => this.preprocessText(t));
394
+ // Check cache and separate cached/uncached
395
+ const results = new Array(texts.length);
396
+ const uncachedIndices = [];
397
+ const uncachedTexts = [];
398
+ for (let i = 0; i < processedTexts.length; i++) {
399
+ const cacheKey = this.getCacheKey(processedTexts[i]);
400
+ const cached = this.cache.get(cacheKey);
401
+ if (cached) {
402
+ results[i] = cached;
403
+ }
404
+ else {
405
+ uncachedIndices.push(i);
406
+ uncachedTexts.push(processedTexts[i]);
407
+ }
408
+ }
409
+ // If all cached, return immediately
410
+ if (uncachedTexts.length === 0) {
411
+ if (onProgress) {
412
+ onProgress({ current: texts.length, total: texts.length, percentage: 100 });
413
+ }
414
+ return results;
415
+ }
416
+ // Deduplicate uncached texts if enabled
417
+ let textsToEmbed = uncachedTexts;
418
+ let indexMapping = null;
419
+ if (this.config.preprocessing.deduplicate) {
420
+ const { unique, mapping } = this.deduplicateTexts(uncachedTexts);
421
+ textsToEmbed = unique;
422
+ indexMapping = mapping;
423
+ }
424
+ // Split into batches
425
+ const batchSize = this.config.batch.batchSize;
426
+ const batches = [];
427
+ for (let i = 0; i < textsToEmbed.length; i += batchSize) {
428
+ batches.push(textsToEmbed.slice(i, i + batchSize));
429
+ }
430
+ // Process batches with semaphore-controlled concurrency
431
+ let processed = texts.length - uncachedTexts.length; // Start with cached count
432
+ const batchResults = [];
433
+ await Promise.all(batches.map((batch, batchIndex) => this.semaphore.withLock(async () => {
434
+ const embeddings = await this.processBatch(batch);
435
+ batchResults[batchIndex] = embeddings;
436
+ processed += batch.length;
437
+ this.totalBatches++;
438
+ this.totalBatchItems += batch.length;
439
+ if (onProgress) {
440
+ onProgress({
441
+ current: processed,
442
+ total: texts.length,
443
+ percentage: Math.round((processed / texts.length) * 100),
444
+ });
445
+ }
446
+ })));
447
+ // Flatten batch results
448
+ const allNewEmbeddings = batchResults.flat();
449
+ // Map embeddings back to original indices
450
+ if (indexMapping) {
451
+ // With deduplication
452
+ let embeddingIndex = 0;
453
+ for (const uniqueText of textsToEmbed) {
454
+ const embedding = allNewEmbeddings[embeddingIndex++];
455
+ const originalIndices = indexMapping.get(uniqueText) || [];
456
+ // Cache the embedding
457
+ const cacheKey = this.getCacheKey(uniqueText);
458
+ this.cache.put(cacheKey, embedding);
459
+ // Assign to all original positions
460
+ for (const origIdx of originalIndices) {
461
+ results[uncachedIndices[origIdx]] = embedding;
462
+ }
463
+ }
464
+ }
465
+ else {
466
+ // Without deduplication
467
+ for (let i = 0; i < allNewEmbeddings.length; i++) {
468
+ const embedding = allNewEmbeddings[i];
469
+ const originalIndex = uncachedIndices[i];
470
+ // Cache the embedding
471
+ const cacheKey = this.getCacheKey(uncachedTexts[i]);
472
+ this.cache.put(cacheKey, embedding);
473
+ results[originalIndex] = embedding;
474
+ }
475
+ }
476
+ this.totalEmbeddings += uncachedTexts.length;
477
+ return results;
478
+ }
479
+ // ==========================================================================
480
+ // Search Methods (RuVector Integration)
481
+ // ==========================================================================
482
+ /**
483
+ * Search for similar texts using RuVector backend
484
+ */
485
+ async search(query, k = 10) {
486
+ if (!this.config.vectorBackend) {
487
+ throw new Error('Vector backend not configured. Pass vectorBackend in config.');
488
+ }
489
+ // Generate query embedding
490
+ const queryEmbedding = await this.embed(query);
491
+ // Search using RuVector
492
+ const results = await searchVectors(this.config.vectorBackend, queryEmbedding, k);
493
+ // Convert to SearchResult format
494
+ return results.map((r) => ({
495
+ id: r.id,
496
+ text: r.metadata?.text,
497
+ similarity: r.similarity,
498
+ distance: r.distance,
499
+ metadata: r.metadata,
500
+ }));
501
+ }
502
+ /**
503
+ * Store text with embedding in RuVector
504
+ */
505
+ async store(id, text, metadata) {
506
+ if (!this.config.vectorBackend) {
507
+ throw new Error('Vector backend not configured. Pass vectorBackend in config.');
508
+ }
509
+ const embedding = await this.embed(text);
510
+ this.config.vectorBackend.insert(id, embedding, {
511
+ ...metadata,
512
+ text, // Store original text in metadata
513
+ });
514
+ }
515
+ /**
516
+ * Store multiple texts with embeddings in RuVector (batch operation)
517
+ */
518
+ async storeBatch(items, onProgress) {
519
+ if (!this.config.vectorBackend) {
520
+ throw new Error('Vector backend not configured. Pass vectorBackend in config.');
521
+ }
522
+ // Extract texts for batch embedding
523
+ const texts = items.map((item) => item.text);
524
+ const embeddings = await this.embedBatch(texts, onProgress);
525
+ // Insert into vector backend
526
+ const insertItems = items.map((item, i) => ({
527
+ id: item.id,
528
+ embedding: embeddings[i],
529
+ metadata: {
530
+ ...item.metadata,
531
+ text: item.text,
532
+ },
533
+ }));
534
+ this.config.vectorBackend.insertBatch(insertItems);
535
+ }
536
+ /**
537
+ * Hybrid search combining embedding similarity with metadata filters
538
+ */
539
+ async hybridSearch(query, k = 10, filter) {
540
+ if (!this.config.vectorBackend) {
541
+ throw new Error('Vector backend not configured. Pass vectorBackend in config.');
542
+ }
543
+ const queryEmbedding = await this.embed(query);
544
+ const results = await searchVectors(this.config.vectorBackend, queryEmbedding, k, {
545
+ filter: filter,
546
+ });
547
+ return results.map((r) => ({
548
+ id: r.id,
549
+ text: r.metadata?.text,
550
+ similarity: r.similarity,
551
+ distance: r.distance,
552
+ metadata: r.metadata,
553
+ }));
554
+ }
555
+ // ==========================================================================
556
+ // Model Management
557
+ // ==========================================================================
558
+ /**
559
+ * Lazy load the embedding model
560
+ */
561
+ async loadModel() {
562
+ if (this.modelLoaded && this.pipeline)
563
+ return;
564
+ if (this.config.provider === 'transformers') {
565
+ await this.loadTransformersModel();
566
+ }
567
+ // OpenAI and Cohere don't need preloading
568
+ this.modelLoaded = true;
569
+ }
570
+ /**
571
+ * Switch to a different model at runtime
572
+ */
573
+ async switchModel(model, provider) {
574
+ // Update config
575
+ this.config.model = model;
576
+ if (provider) {
577
+ this.config.provider = provider;
578
+ }
579
+ this.config.dimension = getModelDimension(model);
580
+ // Reset model state
581
+ this.pipeline = null;
582
+ this.modelLoaded = false;
583
+ // Clear cache (embeddings are model-specific)
584
+ this.cache.clear();
585
+ // Load new model if transformers
586
+ if (this.config.provider === 'transformers') {
587
+ await this.loadTransformersModel();
588
+ }
589
+ this.modelLoaded = true;
590
+ }
591
+ // ==========================================================================
592
+ // Statistics
593
+ // ==========================================================================
594
+ /**
595
+ * Get service statistics
596
+ */
597
+ getStats() {
598
+ const cacheStats = this.cache.stats;
599
+ return {
600
+ totalEmbeddings: this.totalEmbeddings,
601
+ cache: cacheStats,
602
+ batch: {
603
+ totalBatches: this.totalBatches,
604
+ averageBatchSize: this.totalBatches > 0
605
+ ? Math.round(this.totalBatchItems / this.totalBatches)
606
+ : 0,
607
+ },
608
+ model: {
609
+ name: this.config.model,
610
+ dimension: this.config.dimension,
611
+ provider: this.config.provider,
612
+ loaded: this.modelLoaded,
613
+ },
614
+ vectorBackend: this.config.vectorBackend
615
+ ? {
616
+ count: this.config.vectorBackend.getStats().count,
617
+ backend: this.config.vectorBackend.getStats().backend,
618
+ }
619
+ : undefined,
620
+ };
621
+ }
622
+ /**
623
+ * Clear the embedding cache
624
+ */
625
+ clearCache() {
626
+ this.cache.clear();
627
+ }
628
+ /**
629
+ * Get current model dimension
630
+ */
631
+ getDimension() {
632
+ return this.config.dimension;
633
+ }
634
+ // ==========================================================================
635
+ // Private Methods
636
+ // ==========================================================================
637
+ /**
638
+ * Pre-process text according to config
639
+ */
640
+ preprocessText(text) {
641
+ if (!text)
642
+ return '';
643
+ // Early length check to prevent DoS
644
+ if (text.length > MAX_TEXT_LENGTH) {
645
+ text = text.slice(0, MAX_TEXT_LENGTH);
646
+ }
647
+ let processed = text;
648
+ if (this.config.preprocessing.normalize) {
649
+ // Normalize whitespace
650
+ processed = processed.replace(/\s+/g, ' ').trim();
651
+ // Normalize unicode
652
+ processed = processed.normalize('NFKC');
653
+ // Remove control characters
654
+ processed = processed.replace(/[\x00-\x1F\x7F]/g, '');
655
+ }
656
+ // Truncate if too long
657
+ if (processed.length > this.config.preprocessing.maxLength) {
658
+ processed = processed.slice(0, this.config.preprocessing.maxLength);
659
+ }
660
+ return processed;
661
+ }
662
+ /**
663
+ * Chunk long text into smaller pieces with overlap
664
+ */
665
+ chunkText(text) {
666
+ const maxLength = this.config.preprocessing.maxLength;
667
+ const overlap = this.config.preprocessing.chunkOverlap;
668
+ if (text.length <= maxLength) {
669
+ return [text];
670
+ }
671
+ const chunks = [];
672
+ let start = 0;
673
+ while (start < text.length) {
674
+ const end = Math.min(start + maxLength, text.length);
675
+ chunks.push(text.slice(start, end));
676
+ if (end >= text.length)
677
+ break;
678
+ start = end - overlap;
679
+ }
680
+ return chunks;
681
+ }
682
+ /**
683
+ * Generate cache key for text
684
+ */
685
+ getCacheKey(text) {
686
+ return `${this.config.provider}:${this.config.model}:${text}`;
687
+ }
688
+ /**
689
+ * Deduplicate texts and create mapping
690
+ */
691
+ deduplicateTexts(texts) {
692
+ const mapping = new Map();
693
+ const unique = [];
694
+ for (let i = 0; i < texts.length; i++) {
695
+ const text = texts[i];
696
+ const existing = mapping.get(text);
697
+ if (existing) {
698
+ existing.push(i);
699
+ }
700
+ else {
701
+ mapping.set(text, [i]);
702
+ unique.push(text);
703
+ }
704
+ }
705
+ return { unique, mapping };
706
+ }
707
+ /**
708
+ * Generate embedding using configured provider
709
+ */
710
+ async generateEmbedding(text) {
711
+ switch (this.config.provider) {
712
+ case 'transformers':
713
+ return this.embedWithTransformers(text);
714
+ case 'openai':
715
+ return this.embedWithOpenAI(text);
716
+ case 'cohere':
717
+ return this.embedWithCohere(text);
718
+ case 'custom':
719
+ return this.embedWithCustom(text);
720
+ default:
721
+ throw new Error(`Unknown provider: ${this.config.provider}`);
722
+ }
723
+ }
724
+ /**
725
+ * Process a batch of texts
726
+ */
727
+ async processBatch(texts) {
728
+ switch (this.config.provider) {
729
+ case 'transformers':
730
+ return this.batchEmbedWithTransformers(texts);
731
+ case 'openai':
732
+ return this.batchEmbedWithOpenAI(texts);
733
+ case 'cohere':
734
+ return this.batchEmbedWithCohere(texts);
735
+ case 'custom':
736
+ return Promise.all(texts.map((t) => this.embedWithCustom(t)));
737
+ default:
738
+ throw new Error(`Unknown provider: ${this.config.provider}`);
739
+ }
740
+ }
741
+ /**
742
+ * Load transformers.js model
743
+ */
744
+ async loadTransformersModel() {
745
+ try {
746
+ const transformers = await import('@huggingface/transformers');
747
+ // Set HF token if available
748
+ const hfToken = process.env.HUGGINGFACE_API_KEY || process.env.HF_TOKEN;
749
+ if (hfToken && transformers.env) {
750
+ transformers.env.HF_TOKEN = hfToken;
751
+ }
752
+ // Determine model path
753
+ const modelPath = this.config.model.includes('/')
754
+ ? this.config.model
755
+ : `Xenova/${this.config.model}`;
756
+ this.pipeline = await transformers.pipeline('feature-extraction', modelPath);
757
+ }
758
+ catch (error) {
759
+ console.warn(`Failed to load transformers model: ${error.message}`);
760
+ console.warn('Falling back to mock embeddings');
761
+ this.pipeline = null;
762
+ }
763
+ }
764
+ /**
765
+ * Embed with @huggingface/transformers (single)
766
+ */
767
+ async embedWithTransformers(text) {
768
+ if (!this.pipeline) {
769
+ await this.loadTransformersModel();
770
+ }
771
+ if (this.pipeline) {
772
+ const output = await this.pipeline(text, {
773
+ pooling: 'mean',
774
+ normalize: true,
775
+ });
776
+ return new Float32Array(output.data);
777
+ }
778
+ // Fallback to mock
779
+ return this.mockEmbedding(text);
780
+ }
781
+ /**
782
+ * Batch embed with transformers
783
+ */
784
+ async batchEmbedWithTransformers(texts) {
785
+ if (!this.pipeline) {
786
+ await this.loadTransformersModel();
787
+ }
788
+ if (this.pipeline) {
789
+ // Process one at a time for transformers.js (batch not well supported)
790
+ return Promise.all(texts.map(async (text) => {
791
+ const output = await this.pipeline(text, {
792
+ pooling: 'mean',
793
+ normalize: true,
794
+ });
795
+ return new Float32Array(output.data);
796
+ }));
797
+ }
798
+ return texts.map((t) => this.mockEmbedding(t));
799
+ }
800
+ /**
801
+ * Embed with OpenAI API
802
+ */
803
+ async embedWithOpenAI(text) {
804
+ if (!this.config.apiKey) {
805
+ throw new Error('OpenAI API key required');
806
+ }
807
+ const apiUrl = 'https://api.openai.com/v1/embeddings';
808
+ validateApiUrl(apiUrl);
809
+ try {
810
+ const response = await fetchWithTimeout(apiUrl, {
811
+ method: 'POST',
812
+ headers: {
813
+ Authorization: `Bearer ${this.config.apiKey}`,
814
+ 'Content-Type': 'application/json',
815
+ },
816
+ body: JSON.stringify({
817
+ model: this.config.model || 'text-embedding-ada-002',
818
+ input: text,
819
+ }),
820
+ });
821
+ if (!response.ok) {
822
+ // Don't expose API key in error message
823
+ throw new Error(`OpenAI API error: ${response.status} ${response.statusText}`);
824
+ }
825
+ const data = (await response.json());
826
+ // Validate response structure
827
+ if (!data?.data?.[0]?.embedding || !Array.isArray(data.data[0].embedding)) {
828
+ throw new Error('Invalid response format from OpenAI API');
829
+ }
830
+ return new Float32Array(data.data[0].embedding);
831
+ }
832
+ catch (error) {
833
+ if (error instanceof Error) {
834
+ // Sanitize error message to not expose API key
835
+ if (error.name === 'AbortError') {
836
+ throw new Error('OpenAI API request timed out');
837
+ }
838
+ // Re-throw without exposing internal details
839
+ throw new Error(`OpenAI embedding failed: ${error.message}`);
840
+ }
841
+ throw error;
842
+ }
843
+ }
844
+ /**
845
+ * Batch embed with OpenAI API
846
+ */
847
+ async batchEmbedWithOpenAI(texts) {
848
+ if (!this.config.apiKey) {
849
+ throw new Error('OpenAI API key required');
850
+ }
851
+ const apiUrl = 'https://api.openai.com/v1/embeddings';
852
+ validateApiUrl(apiUrl);
853
+ try {
854
+ const response = await fetchWithTimeout(apiUrl, {
855
+ method: 'POST',
856
+ headers: {
857
+ Authorization: `Bearer ${this.config.apiKey}`,
858
+ 'Content-Type': 'application/json',
859
+ },
860
+ body: JSON.stringify({
861
+ model: this.config.model || 'text-embedding-ada-002',
862
+ input: texts,
863
+ }),
864
+ });
865
+ if (!response.ok) {
866
+ throw new Error(`OpenAI API error: ${response.status} ${response.statusText}`);
867
+ }
868
+ const data = (await response.json());
869
+ // Validate response structure
870
+ if (!data?.data || !Array.isArray(data.data)) {
871
+ throw new Error('Invalid response format from OpenAI API');
872
+ }
873
+ // Sort by index to maintain order
874
+ const sorted = data.data.sort((a, b) => a.index - b.index);
875
+ return sorted.map((item) => {
876
+ if (!item?.embedding || !Array.isArray(item.embedding)) {
877
+ throw new Error('Invalid embedding format in OpenAI response');
878
+ }
879
+ return new Float32Array(item.embedding);
880
+ });
881
+ }
882
+ catch (error) {
883
+ if (error instanceof Error) {
884
+ if (error.name === 'AbortError') {
885
+ throw new Error('OpenAI API request timed out');
886
+ }
887
+ throw new Error(`OpenAI batch embedding failed: ${error.message}`);
888
+ }
889
+ throw error;
890
+ }
891
+ }
892
+ /**
893
+ * Embed with Cohere API
894
+ */
895
+ async embedWithCohere(text) {
896
+ if (!this.config.apiKey) {
897
+ throw new Error('Cohere API key required');
898
+ }
899
+ const apiUrl = 'https://api.cohere.ai/v1/embed';
900
+ validateApiUrl(apiUrl);
901
+ try {
902
+ const response = await fetchWithTimeout(apiUrl, {
903
+ method: 'POST',
904
+ headers: {
905
+ Authorization: `Bearer ${this.config.apiKey}`,
906
+ 'Content-Type': 'application/json',
907
+ },
908
+ body: JSON.stringify({
909
+ model: this.config.model || 'embed-english-v3.0',
910
+ texts: [text],
911
+ input_type: 'search_document',
912
+ }),
913
+ });
914
+ if (!response.ok) {
915
+ throw new Error(`Cohere API error: ${response.status} ${response.statusText}`);
916
+ }
917
+ const data = (await response.json());
918
+ // Validate response structure
919
+ if (!data?.embeddings?.[0] || !Array.isArray(data.embeddings[0])) {
920
+ throw new Error('Invalid response format from Cohere API');
921
+ }
922
+ return new Float32Array(data.embeddings[0]);
923
+ }
924
+ catch (error) {
925
+ if (error instanceof Error) {
926
+ if (error.name === 'AbortError') {
927
+ throw new Error('Cohere API request timed out');
928
+ }
929
+ throw new Error(`Cohere embedding failed: ${error.message}`);
930
+ }
931
+ throw error;
932
+ }
933
+ }
934
+ /**
935
+ * Batch embed with Cohere API
936
+ */
937
+ async batchEmbedWithCohere(texts) {
938
+ if (!this.config.apiKey) {
939
+ throw new Error('Cohere API key required');
940
+ }
941
+ const apiUrl = 'https://api.cohere.ai/v1/embed';
942
+ validateApiUrl(apiUrl);
943
+ try {
944
+ const response = await fetchWithTimeout(apiUrl, {
945
+ method: 'POST',
946
+ headers: {
947
+ Authorization: `Bearer ${this.config.apiKey}`,
948
+ 'Content-Type': 'application/json',
949
+ },
950
+ body: JSON.stringify({
951
+ model: this.config.model || 'embed-english-v3.0',
952
+ texts,
953
+ input_type: 'search_document',
954
+ }),
955
+ });
956
+ if (!response.ok) {
957
+ throw new Error(`Cohere API error: ${response.status} ${response.statusText}`);
958
+ }
959
+ const data = (await response.json());
960
+ // Validate response structure
961
+ if (!data?.embeddings || !Array.isArray(data.embeddings)) {
962
+ throw new Error('Invalid response format from Cohere API');
963
+ }
964
+ return data.embeddings.map((emb) => {
965
+ if (!Array.isArray(emb)) {
966
+ throw new Error('Invalid embedding format in Cohere response');
967
+ }
968
+ return new Float32Array(emb);
969
+ });
970
+ }
971
+ catch (error) {
972
+ if (error instanceof Error) {
973
+ if (error.name === 'AbortError') {
974
+ throw new Error('Cohere API request timed out');
975
+ }
976
+ throw new Error(`Cohere batch embedding failed: ${error.message}`);
977
+ }
978
+ throw error;
979
+ }
980
+ }
981
+ /**
982
+ * Embed with custom function
983
+ */
984
+ async embedWithCustom(text) {
985
+ if (!this.config.customEmbedder) {
986
+ throw new Error('Custom embedder function required');
987
+ }
988
+ return this.config.customEmbedder(text);
989
+ }
990
+ /**
991
+ * Generate mock embedding for testing/fallback
992
+ */
993
+ mockEmbedding(text) {
994
+ const embedding = new Float32Array(this.config.dimension);
995
+ if (!text || text.length === 0) {
996
+ return embedding;
997
+ }
998
+ // Deterministic hash-based generation
999
+ let hash = 0;
1000
+ for (let i = 0; i < text.length; i++) {
1001
+ hash = (hash << 5) - hash + text.charCodeAt(i);
1002
+ hash = hash & hash;
1003
+ }
1004
+ // Fill with pseudo-random values
1005
+ for (let i = 0; i < this.config.dimension; i++) {
1006
+ const seed = hash + i * 31;
1007
+ embedding[i] = Math.sin(seed) * Math.cos(seed * 0.5);
1008
+ }
1009
+ // Normalize
1010
+ let norm = 0;
1011
+ for (let i = 0; i < embedding.length; i++) {
1012
+ norm += embedding[i] * embedding[i];
1013
+ }
1014
+ norm = Math.sqrt(norm);
1015
+ if (norm > 0) {
1016
+ for (let i = 0; i < embedding.length; i++) {
1017
+ embedding[i] /= norm;
1018
+ }
1019
+ }
1020
+ return embedding;
1021
+ }
1022
+ }
1023
+ // ============================================================================
1024
+ // Factory Function
1025
+ // ============================================================================
1026
+ /**
1027
+ * Create an enhanced embedding service with default configuration
1028
+ */
1029
+ export function createEmbeddingService(config) {
1030
+ return new EnhancedEmbeddingService(config);
1031
+ }
1032
+ // ============================================================================
1033
+ // Default Export
1034
+ // ============================================================================
1035
+ export default EnhancedEmbeddingService;
1036
+ //# sourceMappingURL=enhanced-embeddings.js.map