agentdb 3.0.0-alpha.9 → 3.1.0

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