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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (648) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2821 -225
  3. package/dist/src/backends/VectorBackend.d.ts +31 -6
  4. package/dist/src/backends/VectorBackend.d.ts.map +1 -1
  5. package/dist/src/backends/detector.js.map +1 -1
  6. package/dist/src/backends/factory.d.ts +16 -33
  7. package/dist/src/backends/factory.d.ts.map +1 -1
  8. package/dist/src/backends/factory.js +138 -108
  9. package/dist/src/backends/factory.js.map +1 -1
  10. package/dist/src/backends/hnswlib/HNSWLibBackend.d.ts.map +1 -1
  11. package/dist/src/backends/hnswlib/HNSWLibBackend.js +29 -2
  12. package/dist/src/backends/hnswlib/HNSWLibBackend.js.map +1 -1
  13. package/dist/src/backends/ruvector/RuVectorBackend.d.ts +198 -45
  14. package/dist/src/backends/ruvector/RuVectorBackend.d.ts.map +1 -1
  15. package/dist/src/backends/ruvector/RuVectorBackend.js +612 -277
  16. package/dist/src/backends/ruvector/RuVectorBackend.js.map +1 -1
  17. package/dist/src/backends/ruvector/RuVectorLearning.d.ts +0 -4
  18. package/dist/src/backends/ruvector/RuVectorLearning.d.ts.map +1 -1
  19. package/dist/src/backends/ruvector/RuVectorLearning.js +0 -6
  20. package/dist/src/backends/ruvector/RuVectorLearning.js.map +1 -1
  21. package/dist/src/backends/rvf/AdaptiveIndexTuner.d.ts +175 -0
  22. package/dist/src/backends/rvf/AdaptiveIndexTuner.d.ts.map +1 -0
  23. package/dist/src/backends/rvf/AdaptiveIndexTuner.js +559 -0
  24. package/dist/src/backends/rvf/AdaptiveIndexTuner.js.map +1 -0
  25. package/dist/src/backends/rvf/ContrastiveTrainer.d.ts +148 -0
  26. package/dist/src/backends/rvf/ContrastiveTrainer.d.ts.map +1 -0
  27. package/dist/src/backends/rvf/ContrastiveTrainer.js +438 -0
  28. package/dist/src/backends/rvf/ContrastiveTrainer.js.map +1 -0
  29. package/dist/src/backends/rvf/FederatedSessionManager.d.ts +211 -0
  30. package/dist/src/backends/rvf/FederatedSessionManager.d.ts.map +1 -0
  31. package/dist/src/backends/rvf/FederatedSessionManager.js +389 -0
  32. package/dist/src/backends/rvf/FederatedSessionManager.js.map +1 -0
  33. package/dist/src/backends/rvf/FilterBuilder.d.ts +136 -0
  34. package/dist/src/backends/rvf/FilterBuilder.d.ts.map +1 -0
  35. package/dist/src/backends/rvf/FilterBuilder.js +157 -0
  36. package/dist/src/backends/rvf/FilterBuilder.js.map +1 -0
  37. package/dist/src/backends/rvf/NativeAccelerator.d.ts +140 -0
  38. package/dist/src/backends/rvf/NativeAccelerator.d.ts.map +1 -0
  39. package/dist/src/backends/rvf/NativeAccelerator.js +630 -0
  40. package/dist/src/backends/rvf/NativeAccelerator.js.map +1 -0
  41. package/dist/src/backends/rvf/RvfBackend.d.ts +194 -0
  42. package/dist/src/backends/rvf/RvfBackend.d.ts.map +1 -0
  43. package/dist/src/backends/rvf/RvfBackend.js +607 -0
  44. package/dist/src/backends/rvf/RvfBackend.js.map +1 -0
  45. package/dist/src/backends/rvf/RvfSolver.d.ts +175 -0
  46. package/dist/src/backends/rvf/RvfSolver.d.ts.map +1 -0
  47. package/dist/src/backends/rvf/RvfSolver.js +176 -0
  48. package/dist/src/backends/rvf/RvfSolver.js.map +1 -0
  49. package/dist/src/backends/rvf/SelfLearningRvfBackend.d.ts +143 -0
  50. package/dist/src/backends/rvf/SelfLearningRvfBackend.d.ts.map +1 -0
  51. package/dist/src/backends/rvf/SelfLearningRvfBackend.js +569 -0
  52. package/dist/src/backends/rvf/SelfLearningRvfBackend.js.map +1 -0
  53. package/dist/src/backends/rvf/SemanticQueryRouter.d.ts +128 -0
  54. package/dist/src/backends/rvf/SemanticQueryRouter.d.ts.map +1 -0
  55. package/dist/src/backends/rvf/SemanticQueryRouter.js +415 -0
  56. package/dist/src/backends/rvf/SemanticQueryRouter.js.map +1 -0
  57. package/dist/src/backends/rvf/SimdFallbacks.d.ts +25 -0
  58. package/dist/src/backends/rvf/SimdFallbacks.d.ts.map +1 -0
  59. package/dist/src/backends/rvf/SimdFallbacks.js +287 -0
  60. package/dist/src/backends/rvf/SimdFallbacks.js.map +1 -0
  61. package/dist/src/backends/rvf/SolverBandit.d.ts +100 -0
  62. package/dist/src/backends/rvf/SolverBandit.d.ts.map +1 -0
  63. package/dist/src/backends/rvf/SolverBandit.js +216 -0
  64. package/dist/src/backends/rvf/SolverBandit.js.map +1 -0
  65. package/dist/src/backends/rvf/SonaLearningBackend.d.ts +157 -0
  66. package/dist/src/backends/rvf/SonaLearningBackend.d.ts.map +1 -0
  67. package/dist/src/backends/rvf/SonaLearningBackend.js +283 -0
  68. package/dist/src/backends/rvf/SonaLearningBackend.js.map +1 -0
  69. package/dist/src/backends/rvf/SqlJsRvfBackend.d.ts +77 -0
  70. package/dist/src/backends/rvf/SqlJsRvfBackend.d.ts.map +1 -0
  71. package/dist/src/backends/rvf/SqlJsRvfBackend.js +382 -0
  72. package/dist/src/backends/rvf/SqlJsRvfBackend.js.map +1 -0
  73. package/dist/src/backends/rvf/WasmStoreBridge.d.ts +27 -0
  74. package/dist/src/backends/rvf/WasmStoreBridge.d.ts.map +1 -0
  75. package/dist/src/backends/rvf/WasmStoreBridge.js +87 -0
  76. package/dist/src/backends/rvf/WasmStoreBridge.js.map +1 -0
  77. package/dist/src/backends/rvf/validation.d.ts +20 -0
  78. package/dist/src/backends/rvf/validation.d.ts.map +1 -0
  79. package/dist/src/backends/rvf/validation.js +78 -0
  80. package/dist/src/backends/rvf/validation.js.map +1 -0
  81. package/dist/src/benchmark/BenchmarkSuite.d.ts +318 -0
  82. package/dist/src/benchmark/BenchmarkSuite.d.ts.map +1 -0
  83. package/dist/src/benchmark/BenchmarkSuite.js +984 -0
  84. package/dist/src/benchmark/BenchmarkSuite.js.map +1 -0
  85. package/dist/src/benchmark/index.d.ts +29 -0
  86. package/dist/src/benchmark/index.d.ts.map +1 -0
  87. package/dist/src/benchmark/index.js +39 -0
  88. package/dist/src/benchmark/index.js.map +1 -0
  89. package/dist/src/browser/AttentionBrowser.d.ts.map +1 -1
  90. package/dist/src/browser/AttentionBrowser.js +1 -0
  91. package/dist/src/browser/AttentionBrowser.js.map +1 -1
  92. package/dist/src/cli/agentdb-cli.d.ts +13 -0
  93. package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
  94. package/dist/src/cli/agentdb-cli.js +803 -94
  95. package/dist/src/cli/agentdb-cli.js.map +1 -1
  96. package/dist/src/cli/commands/hyperbolic.d.ts +11 -0
  97. package/dist/src/cli/commands/hyperbolic.d.ts.map +1 -0
  98. package/dist/src/cli/commands/hyperbolic.js +428 -0
  99. package/dist/src/cli/commands/hyperbolic.js.map +1 -0
  100. package/dist/src/cli/commands/learn.d.ts +11 -0
  101. package/dist/src/cli/commands/learn.d.ts.map +1 -0
  102. package/dist/src/cli/commands/learn.js +404 -0
  103. package/dist/src/cli/commands/learn.js.map +1 -0
  104. package/dist/src/cli/commands/migrate.d.ts +15 -0
  105. package/dist/src/cli/commands/migrate.d.ts.map +1 -1
  106. package/dist/src/cli/commands/migrate.js +176 -8
  107. package/dist/src/cli/commands/migrate.js.map +1 -1
  108. package/dist/src/cli/commands/route.d.ts +11 -0
  109. package/dist/src/cli/commands/route.d.ts.map +1 -0
  110. package/dist/src/cli/commands/route.js +414 -0
  111. package/dist/src/cli/commands/route.js.map +1 -0
  112. package/dist/src/cli/commands/rvf.d.ts +21 -0
  113. package/dist/src/cli/commands/rvf.d.ts.map +1 -0
  114. package/dist/src/cli/commands/rvf.js +448 -0
  115. package/dist/src/cli/commands/rvf.js.map +1 -0
  116. package/dist/src/cli/lib/report-store.d.ts +2 -1
  117. package/dist/src/cli/lib/report-store.d.ts.map +1 -1
  118. package/dist/src/cli/lib/report-store.js +85 -65
  119. package/dist/src/cli/lib/report-store.js.map +1 -1
  120. package/dist/src/cli/lib/simulation-runner.d.ts +40 -3
  121. package/dist/src/cli/lib/simulation-runner.d.ts.map +1 -1
  122. package/dist/src/cli/lib/simulation-runner.js +248 -6
  123. package/dist/src/cli/lib/simulation-runner.js.map +1 -1
  124. package/dist/src/compatibility/DeprecationWarnings.d.ts +54 -0
  125. package/dist/src/compatibility/DeprecationWarnings.d.ts.map +1 -0
  126. package/dist/src/compatibility/DeprecationWarnings.js +131 -0
  127. package/dist/src/compatibility/DeprecationWarnings.js.map +1 -0
  128. package/dist/src/compatibility/MigrationUtilities.d.ts +30 -0
  129. package/dist/src/compatibility/MigrationUtilities.d.ts.map +1 -0
  130. package/dist/src/compatibility/MigrationUtilities.js +184 -0
  131. package/dist/src/compatibility/MigrationUtilities.js.map +1 -0
  132. package/dist/src/compatibility/V1toV2Adapter.d.ts +76 -0
  133. package/dist/src/compatibility/V1toV2Adapter.d.ts.map +1 -0
  134. package/dist/src/compatibility/V1toV2Adapter.js +185 -0
  135. package/dist/src/compatibility/V1toV2Adapter.js.map +1 -0
  136. package/dist/src/compatibility/VersionDetector.d.ts +32 -0
  137. package/dist/src/compatibility/VersionDetector.d.ts.map +1 -0
  138. package/dist/src/compatibility/VersionDetector.js +144 -0
  139. package/dist/src/compatibility/VersionDetector.js.map +1 -0
  140. package/dist/src/compatibility/index.d.ts +14 -0
  141. package/dist/src/compatibility/index.d.ts.map +1 -0
  142. package/dist/src/compatibility/index.js +21 -0
  143. package/dist/src/compatibility/index.js.map +1 -0
  144. package/dist/src/compatibility/types.d.ts +103 -0
  145. package/dist/src/compatibility/types.d.ts.map +1 -0
  146. package/dist/src/compatibility/types.js +5 -0
  147. package/dist/src/compatibility/types.js.map +1 -0
  148. package/dist/src/controllers/AttentionService.d.ts +99 -202
  149. package/dist/src/controllers/AttentionService.d.ts.map +1 -1
  150. package/dist/src/controllers/AttentionService.js +450 -558
  151. package/dist/src/controllers/AttentionService.js.map +1 -1
  152. package/dist/src/controllers/CausalMemoryGraph.d.ts +30 -5
  153. package/dist/src/controllers/CausalMemoryGraph.d.ts.map +1 -1
  154. package/dist/src/controllers/CausalMemoryGraph.js +89 -13
  155. package/dist/src/controllers/CausalMemoryGraph.js.map +1 -1
  156. package/dist/src/controllers/CausalRecall.d.ts +4 -0
  157. package/dist/src/controllers/CausalRecall.d.ts.map +1 -1
  158. package/dist/src/controllers/CausalRecall.js +19 -2
  159. package/dist/src/controllers/CausalRecall.js.map +1 -1
  160. package/dist/src/controllers/EmbeddingService.d.ts.map +1 -1
  161. package/dist/src/controllers/EmbeddingService.js +28 -11
  162. package/dist/src/controllers/EmbeddingService.js.map +1 -1
  163. package/dist/src/controllers/EnhancedEmbeddingService.d.ts +4 -0
  164. package/dist/src/controllers/EnhancedEmbeddingService.d.ts.map +1 -1
  165. package/dist/src/controllers/EnhancedEmbeddingService.js +17 -3
  166. package/dist/src/controllers/EnhancedEmbeddingService.js.map +1 -1
  167. package/dist/src/controllers/ExplainableRecall.d.ts +1 -1
  168. package/dist/src/controllers/ExplainableRecall.d.ts.map +1 -1
  169. package/dist/src/controllers/ExplainableRecall.js +1 -1
  170. package/dist/src/controllers/ExplainableRecall.js.map +1 -1
  171. package/dist/src/controllers/HNSWIndex.d.ts +20 -2
  172. package/dist/src/controllers/HNSWIndex.d.ts.map +1 -1
  173. package/dist/src/controllers/HNSWIndex.js +82 -6
  174. package/dist/src/controllers/HNSWIndex.js.map +1 -1
  175. package/dist/src/controllers/LearningSystem.d.ts +1 -17
  176. package/dist/src/controllers/LearningSystem.d.ts.map +1 -1
  177. package/dist/src/controllers/LearningSystem.js +18 -135
  178. package/dist/src/controllers/LearningSystem.js.map +1 -1
  179. package/dist/src/controllers/MemoryController.d.ts +161 -0
  180. package/dist/src/controllers/MemoryController.d.ts.map +1 -0
  181. package/dist/src/controllers/MemoryController.js +303 -0
  182. package/dist/src/controllers/MemoryController.js.map +1 -0
  183. package/dist/src/controllers/MincutService.d.ts +92 -0
  184. package/dist/src/controllers/MincutService.d.ts.map +1 -0
  185. package/dist/src/controllers/MincutService.js +336 -0
  186. package/dist/src/controllers/MincutService.js.map +1 -0
  187. package/dist/src/controllers/NightlyLearner.d.ts +5 -1
  188. package/dist/src/controllers/NightlyLearner.d.ts.map +1 -1
  189. package/dist/src/controllers/NightlyLearner.js +17 -3
  190. package/dist/src/controllers/NightlyLearner.js.map +1 -1
  191. package/dist/src/controllers/QUICClient.d.ts +45 -0
  192. package/dist/src/controllers/QUICClient.d.ts.map +1 -1
  193. package/dist/src/controllers/QUICClient.js +190 -0
  194. package/dist/src/controllers/QUICClient.js.map +1 -1
  195. package/dist/src/controllers/ReasoningBank.d.ts +6 -3
  196. package/dist/src/controllers/ReasoningBank.d.ts.map +1 -1
  197. package/dist/src/controllers/ReasoningBank.js +47 -41
  198. package/dist/src/controllers/ReasoningBank.js.map +1 -1
  199. package/dist/src/controllers/ReflexionMemory.d.ts +115 -6
  200. package/dist/src/controllers/ReflexionMemory.d.ts.map +1 -1
  201. package/dist/src/controllers/ReflexionMemory.js +541 -213
  202. package/dist/src/controllers/ReflexionMemory.js.map +1 -1
  203. package/dist/src/controllers/SkillLibrary.d.ts +27 -3
  204. package/dist/src/controllers/SkillLibrary.d.ts.map +1 -1
  205. package/dist/src/controllers/SkillLibrary.js +187 -91
  206. package/dist/src/controllers/SkillLibrary.js.map +1 -1
  207. package/dist/src/controllers/SparsificationService.d.ts +151 -0
  208. package/dist/src/controllers/SparsificationService.d.ts.map +1 -0
  209. package/dist/src/controllers/SparsificationService.js +375 -0
  210. package/dist/src/controllers/SparsificationService.js.map +1 -0
  211. package/dist/src/controllers/SyncCoordinator.d.ts.map +1 -1
  212. package/dist/src/controllers/SyncCoordinator.js +115 -3
  213. package/dist/src/controllers/SyncCoordinator.js.map +1 -1
  214. package/dist/src/controllers/WASMVectorSearch.d.ts +12 -30
  215. package/dist/src/controllers/WASMVectorSearch.d.ts.map +1 -1
  216. package/dist/src/controllers/WASMVectorSearch.js +146 -93
  217. package/dist/src/controllers/WASMVectorSearch.js.map +1 -1
  218. package/dist/src/controllers/attention/AttentionCache.d.ts +38 -0
  219. package/dist/src/controllers/attention/AttentionCache.d.ts.map +1 -0
  220. package/dist/src/controllers/attention/AttentionCache.js +80 -0
  221. package/dist/src/controllers/attention/AttentionCache.js.map +1 -0
  222. package/dist/src/controllers/attention/AttentionConfig.d.ts +127 -0
  223. package/dist/src/controllers/attention/AttentionConfig.d.ts.map +1 -0
  224. package/dist/src/controllers/attention/AttentionConfig.js +124 -0
  225. package/dist/src/controllers/attention/AttentionConfig.js.map +1 -0
  226. package/dist/src/controllers/attention/AttentionCore.d.ts +89 -0
  227. package/dist/src/controllers/attention/AttentionCore.d.ts.map +1 -0
  228. package/dist/src/controllers/attention/AttentionCore.js +289 -0
  229. package/dist/src/controllers/attention/AttentionCore.js.map +1 -0
  230. package/dist/src/controllers/attention/AttentionHelpers.d.ts +55 -0
  231. package/dist/src/controllers/attention/AttentionHelpers.d.ts.map +1 -0
  232. package/dist/src/controllers/attention/AttentionHelpers.js +148 -0
  233. package/dist/src/controllers/attention/AttentionHelpers.js.map +1 -0
  234. package/dist/src/controllers/attention/AttentionMetrics.d.ts +55 -0
  235. package/dist/src/controllers/attention/AttentionMetrics.d.ts.map +1 -0
  236. package/dist/src/controllers/attention/AttentionMetrics.js +72 -0
  237. package/dist/src/controllers/attention/AttentionMetrics.js.map +1 -0
  238. package/dist/src/controllers/attention/AttentionWASM.d.ts +98 -0
  239. package/dist/src/controllers/attention/AttentionWASM.d.ts.map +1 -0
  240. package/dist/src/controllers/attention/AttentionWASM.js +147 -0
  241. package/dist/src/controllers/attention/AttentionWASM.js.map +1 -0
  242. package/dist/src/controllers/attention/CrossAttentionController.d.ts +141 -0
  243. package/dist/src/controllers/attention/CrossAttentionController.d.ts.map +1 -0
  244. package/dist/src/controllers/attention/CrossAttentionController.js +325 -0
  245. package/dist/src/controllers/attention/CrossAttentionController.js.map +1 -0
  246. package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts +137 -0
  247. package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts.map +1 -0
  248. package/dist/src/controllers/attention/MultiHeadAttentionController.js +336 -0
  249. package/dist/src/controllers/attention/MultiHeadAttentionController.js.map +1 -0
  250. package/dist/src/controllers/attention/SelfAttentionController.d.ts +117 -0
  251. package/dist/src/controllers/attention/SelfAttentionController.d.ts.map +1 -0
  252. package/dist/src/controllers/attention/SelfAttentionController.js +205 -0
  253. package/dist/src/controllers/attention/SelfAttentionController.js.map +1 -0
  254. package/dist/src/controllers/attention/index.d.ts +24 -0
  255. package/dist/src/controllers/attention/index.d.ts.map +1 -0
  256. package/dist/src/controllers/attention/index.js +20 -0
  257. package/dist/src/controllers/attention/index.js.map +1 -0
  258. package/dist/src/controllers/index.d.ts +14 -27
  259. package/dist/src/controllers/index.d.ts.map +1 -1
  260. package/dist/src/controllers/index.js +10 -18
  261. package/dist/src/controllers/index.js.map +1 -1
  262. package/dist/src/controllers/prerequisites.d.ts +76 -0
  263. package/dist/src/controllers/prerequisites.d.ts.map +1 -0
  264. package/dist/src/controllers/prerequisites.js +235 -0
  265. package/dist/src/controllers/prerequisites.js.map +1 -0
  266. package/dist/src/core/AgentDB.d.ts +27 -19
  267. package/dist/src/core/AgentDB.d.ts.map +1 -1
  268. package/dist/src/core/AgentDB.js +76 -124
  269. package/dist/src/core/AgentDB.js.map +1 -1
  270. package/dist/src/core/QueryCache.d.ts +138 -0
  271. package/dist/src/core/QueryCache.d.ts.map +1 -0
  272. package/dist/src/core/QueryCache.js +309 -0
  273. package/dist/src/core/QueryCache.js.map +1 -0
  274. package/dist/src/db-fallback.d.ts +10 -1
  275. package/dist/src/db-fallback.d.ts.map +1 -1
  276. package/dist/src/db-fallback.js +205 -28
  277. package/dist/src/db-fallback.js.map +1 -1
  278. package/dist/src/examples/quic-sync-example.js +2 -2
  279. package/dist/src/examples/quic-sync-example.js.map +1 -1
  280. package/dist/src/index.d.ts +15 -15
  281. package/dist/src/index.d.ts.map +1 -1
  282. package/dist/src/index.js +39 -11
  283. package/dist/src/index.js.map +1 -1
  284. package/dist/src/mcp/agentdb-mcp-server.js +47 -2
  285. package/dist/src/mcp/agentdb-mcp-server.js.map +1 -1
  286. package/dist/src/model/ModelCacheLoader.d.ts +24 -0
  287. package/dist/src/model/ModelCacheLoader.d.ts.map +1 -0
  288. package/dist/src/model/ModelCacheLoader.js +121 -0
  289. package/dist/src/model/ModelCacheLoader.js.map +1 -0
  290. package/dist/src/observability/index.d.ts +8 -0
  291. package/dist/src/observability/index.d.ts.map +1 -0
  292. package/dist/src/observability/index.js +8 -0
  293. package/dist/src/observability/index.js.map +1 -0
  294. package/dist/src/observability/integration.d.ts +32 -0
  295. package/dist/src/observability/integration.d.ts.map +1 -0
  296. package/dist/src/observability/integration.js +159 -0
  297. package/dist/src/observability/integration.js.map +1 -0
  298. package/dist/src/observability/telemetry.d.ts +137 -0
  299. package/dist/src/observability/telemetry.d.ts.map +1 -0
  300. package/dist/src/observability/telemetry.js +416 -0
  301. package/dist/src/observability/telemetry.js.map +1 -0
  302. package/dist/src/optimizations/BatchOperations.d.ts +47 -0
  303. package/dist/src/optimizations/BatchOperations.d.ts.map +1 -1
  304. package/dist/src/optimizations/BatchOperations.js +183 -31
  305. package/dist/src/optimizations/BatchOperations.js.map +1 -1
  306. package/dist/src/optimizations/Quantization.d.ts +330 -0
  307. package/dist/src/optimizations/Quantization.d.ts.map +1 -0
  308. package/dist/src/optimizations/Quantization.js +793 -0
  309. package/dist/src/optimizations/Quantization.js.map +1 -0
  310. package/dist/src/optimizations/index.d.ts +1 -3
  311. package/dist/src/optimizations/index.d.ts.map +1 -1
  312. package/dist/src/optimizations/index.js +0 -1
  313. package/dist/src/optimizations/index.js.map +1 -1
  314. package/dist/src/quantization/index.d.ts +7 -0
  315. package/dist/src/quantization/index.d.ts.map +1 -0
  316. package/dist/src/quantization/index.js +15 -0
  317. package/dist/src/quantization/index.js.map +1 -0
  318. package/dist/src/quantization/vector-quantization.d.ts +388 -0
  319. package/dist/src/quantization/vector-quantization.d.ts.map +1 -0
  320. package/dist/src/quantization/vector-quantization.js +1132 -0
  321. package/dist/src/quantization/vector-quantization.js.map +1 -0
  322. package/dist/src/search/HybridSearch.d.ts +311 -0
  323. package/dist/src/search/HybridSearch.d.ts.map +1 -0
  324. package/dist/src/search/HybridSearch.js +712 -0
  325. package/dist/src/search/HybridSearch.js.map +1 -0
  326. package/dist/src/search/index.d.ts +12 -0
  327. package/dist/src/search/index.d.ts.map +1 -0
  328. package/dist/src/search/index.js +16 -0
  329. package/dist/src/search/index.js.map +1 -0
  330. package/dist/src/services/AttentionService.d.ts +303 -0
  331. package/dist/src/services/AttentionService.d.ts.map +1 -0
  332. package/dist/src/services/AttentionService.js +1165 -0
  333. package/dist/src/services/AttentionService.js.map +1 -0
  334. package/dist/src/services/LLMRouter.d.ts +61 -7
  335. package/dist/src/services/LLMRouter.d.ts.map +1 -1
  336. package/dist/src/services/LLMRouter.js +286 -22
  337. package/dist/src/services/LLMRouter.js.map +1 -1
  338. package/dist/src/services/audit-logger.service.d.ts +168 -0
  339. package/dist/src/services/audit-logger.service.d.ts.map +1 -0
  340. package/dist/src/services/audit-logger.service.js +331 -0
  341. package/dist/src/services/audit-logger.service.js.map +1 -0
  342. package/dist/src/services/enhanced-embeddings.d.ts +271 -0
  343. package/dist/src/services/enhanced-embeddings.d.ts.map +1 -0
  344. package/dist/src/services/enhanced-embeddings.js +1035 -0
  345. package/dist/src/services/enhanced-embeddings.js.map +1 -0
  346. package/dist/src/services/federated-learning.d.ts +172 -0
  347. package/dist/src/services/federated-learning.d.ts.map +1 -0
  348. package/dist/src/services/federated-learning.js +342 -0
  349. package/dist/src/services/federated-learning.js.map +1 -0
  350. package/dist/src/simd/index.d.ts +9 -0
  351. package/dist/src/simd/index.d.ts.map +1 -0
  352. package/dist/src/simd/index.js +27 -0
  353. package/dist/src/simd/index.js.map +1 -0
  354. package/dist/src/simd/simd-vector-ops.d.ts +332 -0
  355. package/dist/src/simd/simd-vector-ops.d.ts.map +1 -0
  356. package/dist/src/simd/simd-vector-ops.js +945 -0
  357. package/dist/src/simd/simd-vector-ops.js.map +1 -0
  358. package/dist/src/types/database.types.d.ts +275 -0
  359. package/dist/src/types/database.types.d.ts.map +1 -0
  360. package/dist/src/types/database.types.js +55 -0
  361. package/dist/src/types/database.types.js.map +1 -0
  362. package/dist/src/types/graph.d.ts +29 -0
  363. package/dist/src/types/graph.d.ts.map +1 -0
  364. package/dist/src/types/graph.js +8 -0
  365. package/dist/src/types/graph.js.map +1 -0
  366. package/dist/src/utils/chalk-fallback.d.ts +3 -0
  367. package/dist/src/utils/chalk-fallback.d.ts.map +1 -0
  368. package/dist/src/utils/chalk-fallback.js +20 -0
  369. package/dist/src/utils/chalk-fallback.js.map +1 -0
  370. package/dist/src/utils/similarity.d.ts +11 -0
  371. package/dist/src/utils/similarity.d.ts.map +1 -0
  372. package/dist/src/utils/similarity.js +25 -0
  373. package/dist/src/utils/similarity.js.map +1 -0
  374. package/dist/src/wasm-loader.d.ts +66 -0
  375. package/dist/src/wasm-loader.d.ts.map +1 -0
  376. package/dist/src/wasm-loader.js +76 -0
  377. package/dist/src/wasm-loader.js.map +1 -0
  378. package/dist/src/wrappers/agentdb-fast.d.ts +139 -0
  379. package/dist/src/wrappers/agentdb-fast.d.ts.map +1 -0
  380. package/dist/src/wrappers/agentdb-fast.js +307 -0
  381. package/dist/src/wrappers/agentdb-fast.js.map +1 -0
  382. package/dist/src/wrappers/attention-fallbacks.d.ts +343 -0
  383. package/dist/src/wrappers/attention-fallbacks.d.ts.map +1 -0
  384. package/dist/src/wrappers/attention-fallbacks.js +1484 -0
  385. package/dist/src/wrappers/attention-fallbacks.js.map +1 -0
  386. package/dist/src/wrappers/attention-native.d.ts +111 -0
  387. package/dist/src/wrappers/attention-native.d.ts.map +1 -0
  388. package/dist/src/wrappers/attention-native.js +273 -0
  389. package/dist/src/wrappers/attention-native.js.map +1 -0
  390. package/dist/src/wrappers/embedding-service.d.ts +117 -0
  391. package/dist/src/wrappers/embedding-service.d.ts.map +1 -0
  392. package/dist/src/wrappers/embedding-service.js +370 -0
  393. package/dist/src/wrappers/embedding-service.js.map +1 -0
  394. package/dist/src/wrappers/gnn-wrapper.d.ts +71 -0
  395. package/dist/src/wrappers/gnn-wrapper.d.ts.map +1 -0
  396. package/dist/src/wrappers/gnn-wrapper.js +236 -0
  397. package/dist/src/wrappers/gnn-wrapper.js.map +1 -0
  398. package/dist/src/wrappers/index.d.ts +48 -0
  399. package/dist/src/wrappers/index.d.ts.map +1 -0
  400. package/dist/src/wrappers/index.js +83 -0
  401. package/dist/src/wrappers/index.js.map +1 -0
  402. package/package.json +77 -76
  403. package/scripts/postinstall.cjs +13 -144
  404. package/dist/agentdb.browser.js +0 -1685
  405. package/dist/agentdb.browser.js.map +0 -7
  406. package/dist/agentdb.browser.min.js +0 -3
  407. package/dist/agentdb.browser.min.js.map +0 -7
  408. package/dist/agentdb.wasm-loader.js +0 -207
  409. package/dist/backends/VectorBackend.d.ts +0 -120
  410. package/dist/backends/VectorBackend.js +0 -14
  411. package/dist/backends/VectorBackend.js.map +0 -1
  412. package/dist/optimizations/RVFOptimizer.d.ts +0 -225
  413. package/dist/optimizations/RVFOptimizer.js +0 -541
  414. package/dist/optimizations/RVFOptimizer.js.map +0 -1
  415. package/dist/schemas/frontier-schema.sql +0 -378
  416. package/dist/schemas/schema.sql +0 -382
  417. package/dist/simulation/cli.d.ts +0 -9
  418. package/dist/simulation/cli.d.ts.map +0 -1
  419. package/dist/simulation/cli.js +0 -68
  420. package/dist/simulation/cli.js.map +0 -1
  421. package/dist/simulation/runner.d.ts +0 -21
  422. package/dist/simulation/runner.d.ts.map +0 -1
  423. package/dist/simulation/runner.js +0 -241
  424. package/dist/simulation/runner.js.map +0 -1
  425. package/dist/simulation/scenarios/aidefence-integration.d.ts +0 -24
  426. package/dist/simulation/scenarios/aidefence-integration.d.ts.map +0 -1
  427. package/dist/simulation/scenarios/aidefence-integration.js +0 -124
  428. package/dist/simulation/scenarios/aidefence-integration.js.map +0 -1
  429. package/dist/simulation/scenarios/bmssp-integration.d.ts +0 -23
  430. package/dist/simulation/scenarios/bmssp-integration.d.ts.map +0 -1
  431. package/dist/simulation/scenarios/bmssp-integration.js +0 -104
  432. package/dist/simulation/scenarios/bmssp-integration.js.map +0 -1
  433. package/dist/simulation/scenarios/causal-reasoning.d.ts +0 -16
  434. package/dist/simulation/scenarios/causal-reasoning.d.ts.map +0 -1
  435. package/dist/simulation/scenarios/causal-reasoning.js +0 -108
  436. package/dist/simulation/scenarios/causal-reasoning.js.map +0 -1
  437. package/dist/simulation/scenarios/consciousness-explorer.d.ts +0 -25
  438. package/dist/simulation/scenarios/consciousness-explorer.d.ts.map +0 -1
  439. package/dist/simulation/scenarios/consciousness-explorer.js +0 -108
  440. package/dist/simulation/scenarios/consciousness-explorer.js.map +0 -1
  441. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.d.ts +0 -135
  442. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.d.ts.map +0 -1
  443. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.js +0 -158
  444. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.js.map +0 -1
  445. package/dist/simulation/scenarios/domain-examples/index.d.ts +0 -14
  446. package/dist/simulation/scenarios/domain-examples/index.d.ts.map +0 -1
  447. package/dist/simulation/scenarios/domain-examples/index.js +0 -14
  448. package/dist/simulation/scenarios/domain-examples/index.js.map +0 -1
  449. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.d.ts +0 -178
  450. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.d.ts.map +0 -1
  451. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.js +0 -218
  452. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.js.map +0 -1
  453. package/dist/simulation/scenarios/domain-examples/medical-imaging.d.ts +0 -122
  454. package/dist/simulation/scenarios/domain-examples/medical-imaging.d.ts.map +0 -1
  455. package/dist/simulation/scenarios/domain-examples/medical-imaging.js +0 -129
  456. package/dist/simulation/scenarios/domain-examples/medical-imaging.js.map +0 -1
  457. package/dist/simulation/scenarios/domain-examples/robotics-navigation.d.ts +0 -166
  458. package/dist/simulation/scenarios/domain-examples/robotics-navigation.d.ts.map +0 -1
  459. package/dist/simulation/scenarios/domain-examples/robotics-navigation.js +0 -161
  460. package/dist/simulation/scenarios/domain-examples/robotics-navigation.js.map +0 -1
  461. package/dist/simulation/scenarios/domain-examples/scientific-research.d.ts +0 -151
  462. package/dist/simulation/scenarios/domain-examples/scientific-research.d.ts.map +0 -1
  463. package/dist/simulation/scenarios/domain-examples/scientific-research.js +0 -187
  464. package/dist/simulation/scenarios/domain-examples/scientific-research.js.map +0 -1
  465. package/dist/simulation/scenarios/domain-examples/trading-systems.d.ts +0 -102
  466. package/dist/simulation/scenarios/domain-examples/trading-systems.d.ts.map +0 -1
  467. package/dist/simulation/scenarios/domain-examples/trading-systems.js +0 -100
  468. package/dist/simulation/scenarios/domain-examples/trading-systems.js.map +0 -1
  469. package/dist/simulation/scenarios/goalie-integration.d.ts +0 -24
  470. package/dist/simulation/scenarios/goalie-integration.d.ts.map +0 -1
  471. package/dist/simulation/scenarios/goalie-integration.js +0 -121
  472. package/dist/simulation/scenarios/goalie-integration.js.map +0 -1
  473. package/dist/simulation/scenarios/graph-traversal.d.ts +0 -17
  474. package/dist/simulation/scenarios/graph-traversal.d.ts.map +0 -1
  475. package/dist/simulation/scenarios/graph-traversal.js +0 -101
  476. package/dist/simulation/scenarios/graph-traversal.js.map +0 -1
  477. package/dist/simulation/scenarios/latent-space/attention-analysis.d.ts +0 -45
  478. package/dist/simulation/scenarios/latent-space/attention-analysis.d.ts.map +0 -1
  479. package/dist/simulation/scenarios/latent-space/attention-analysis.js +0 -435
  480. package/dist/simulation/scenarios/latent-space/attention-analysis.js.map +0 -1
  481. package/dist/simulation/scenarios/latent-space/clustering-analysis.d.ts +0 -55
  482. package/dist/simulation/scenarios/latent-space/clustering-analysis.d.ts.map +0 -1
  483. package/dist/simulation/scenarios/latent-space/clustering-analysis.js +0 -606
  484. package/dist/simulation/scenarios/latent-space/clustering-analysis.js.map +0 -1
  485. package/dist/simulation/scenarios/latent-space/hnsw-exploration.d.ts +0 -74
  486. package/dist/simulation/scenarios/latent-space/hnsw-exploration.d.ts.map +0 -1
  487. package/dist/simulation/scenarios/latent-space/hnsw-exploration.js +0 -391
  488. package/dist/simulation/scenarios/latent-space/hnsw-exploration.js.map +0 -1
  489. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.d.ts +0 -51
  490. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.d.ts.map +0 -1
  491. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.js +0 -536
  492. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.js.map +0 -1
  493. package/dist/simulation/scenarios/latent-space/index.d.ts +0 -35
  494. package/dist/simulation/scenarios/latent-space/index.d.ts.map +0 -1
  495. package/dist/simulation/scenarios/latent-space/index.js +0 -35
  496. package/dist/simulation/scenarios/latent-space/index.js.map +0 -1
  497. package/dist/simulation/scenarios/latent-space/neural-augmentation.d.ts +0 -52
  498. package/dist/simulation/scenarios/latent-space/neural-augmentation.d.ts.map +0 -1
  499. package/dist/simulation/scenarios/latent-space/neural-augmentation.js +0 -472
  500. package/dist/simulation/scenarios/latent-space/neural-augmentation.js.map +0 -1
  501. package/dist/simulation/scenarios/latent-space/quantum-hybrid.d.ts +0 -53
  502. package/dist/simulation/scenarios/latent-space/quantum-hybrid.d.ts.map +0 -1
  503. package/dist/simulation/scenarios/latent-space/quantum-hybrid.js +0 -391
  504. package/dist/simulation/scenarios/latent-space/quantum-hybrid.js.map +0 -1
  505. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.d.ts +0 -52
  506. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.d.ts.map +0 -1
  507. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.js +0 -514
  508. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.js.map +0 -1
  509. package/dist/simulation/scenarios/latent-space/traversal-optimization.d.ts +0 -53
  510. package/dist/simulation/scenarios/latent-space/traversal-optimization.d.ts.map +0 -1
  511. package/dist/simulation/scenarios/latent-space/traversal-optimization.js +0 -595
  512. package/dist/simulation/scenarios/latent-space/traversal-optimization.js.map +0 -1
  513. package/dist/simulation/scenarios/lean-agentic-swarm.d.ts +0 -18
  514. package/dist/simulation/scenarios/lean-agentic-swarm.d.ts.map +0 -1
  515. package/dist/simulation/scenarios/lean-agentic-swarm.js +0 -132
  516. package/dist/simulation/scenarios/lean-agentic-swarm.js.map +0 -1
  517. package/dist/simulation/scenarios/multi-agent-swarm.d.ts +0 -17
  518. package/dist/simulation/scenarios/multi-agent-swarm.d.ts.map +0 -1
  519. package/dist/simulation/scenarios/multi-agent-swarm.js +0 -111
  520. package/dist/simulation/scenarios/multi-agent-swarm.js.map +0 -1
  521. package/dist/simulation/scenarios/psycho-symbolic-reasoner.d.ts +0 -23
  522. package/dist/simulation/scenarios/psycho-symbolic-reasoner.d.ts.map +0 -1
  523. package/dist/simulation/scenarios/psycho-symbolic-reasoner.js +0 -98
  524. package/dist/simulation/scenarios/psycho-symbolic-reasoner.js.map +0 -1
  525. package/dist/simulation/scenarios/reflexion-learning.d.ts +0 -16
  526. package/dist/simulation/scenarios/reflexion-learning.d.ts.map +0 -1
  527. package/dist/simulation/scenarios/reflexion-learning.js +0 -98
  528. package/dist/simulation/scenarios/reflexion-learning.js.map +0 -1
  529. package/dist/simulation/scenarios/research-swarm.d.ts +0 -24
  530. package/dist/simulation/scenarios/research-swarm.d.ts.map +0 -1
  531. package/dist/simulation/scenarios/research-swarm.js +0 -146
  532. package/dist/simulation/scenarios/research-swarm.js.map +0 -1
  533. package/dist/simulation/scenarios/skill-evolution.d.ts +0 -16
  534. package/dist/simulation/scenarios/skill-evolution.d.ts.map +0 -1
  535. package/dist/simulation/scenarios/skill-evolution.js +0 -109
  536. package/dist/simulation/scenarios/skill-evolution.js.map +0 -1
  537. package/dist/simulation/scenarios/stock-market-emergence.d.ts +0 -33
  538. package/dist/simulation/scenarios/stock-market-emergence.d.ts.map +0 -1
  539. package/dist/simulation/scenarios/stock-market-emergence.js +0 -246
  540. package/dist/simulation/scenarios/stock-market-emergence.js.map +0 -1
  541. package/dist/simulation/scenarios/strange-loops.d.ts +0 -18
  542. package/dist/simulation/scenarios/strange-loops.d.ts.map +0 -1
  543. package/dist/simulation/scenarios/strange-loops.js +0 -133
  544. package/dist/simulation/scenarios/strange-loops.js.map +0 -1
  545. package/dist/simulation/scenarios/sublinear-solver.d.ts +0 -22
  546. package/dist/simulation/scenarios/sublinear-solver.d.ts.map +0 -1
  547. package/dist/simulation/scenarios/sublinear-solver.js +0 -82
  548. package/dist/simulation/scenarios/sublinear-solver.js.map +0 -1
  549. package/dist/simulation/scenarios/temporal-lead-solver.d.ts +0 -23
  550. package/dist/simulation/scenarios/temporal-lead-solver.d.ts.map +0 -1
  551. package/dist/simulation/scenarios/temporal-lead-solver.js +0 -90
  552. package/dist/simulation/scenarios/temporal-lead-solver.js.map +0 -1
  553. package/dist/simulation/scenarios/voting-system-consensus.d.ts +0 -27
  554. package/dist/simulation/scenarios/voting-system-consensus.d.ts.map +0 -1
  555. package/dist/simulation/scenarios/voting-system-consensus.js +0 -175
  556. package/dist/simulation/scenarios/voting-system-consensus.js.map +0 -1
  557. package/dist/simulation/types.d.ts +0 -162
  558. package/dist/simulation/types.d.ts.map +0 -1
  559. package/dist/simulation/types.js +0 -5
  560. package/dist/simulation/types.js.map +0 -1
  561. package/dist/simulation/utils/PerformanceOptimizer.d.ts +0 -115
  562. package/dist/simulation/utils/PerformanceOptimizer.d.ts.map +0 -1
  563. package/dist/simulation/utils/PerformanceOptimizer.js +0 -223
  564. package/dist/simulation/utils/PerformanceOptimizer.js.map +0 -1
  565. package/dist/src/backends/index.cjs +0 -6
  566. package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts +0 -93
  567. package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts.map +0 -1
  568. package/dist/src/backends/ruvector/GuardedVectorBackend.js +0 -182
  569. package/dist/src/backends/ruvector/GuardedVectorBackend.js.map +0 -1
  570. package/dist/src/consensus/RaftConsensus.d.ts +0 -220
  571. package/dist/src/consensus/RaftConsensus.d.ts.map +0 -1
  572. package/dist/src/consensus/RaftConsensus.js +0 -762
  573. package/dist/src/consensus/RaftConsensus.js.map +0 -1
  574. package/dist/src/controllers/HierarchicalMemory.d.ts +0 -197
  575. package/dist/src/controllers/HierarchicalMemory.d.ts.map +0 -1
  576. package/dist/src/controllers/HierarchicalMemory.js +0 -519
  577. package/dist/src/controllers/HierarchicalMemory.js.map +0 -1
  578. package/dist/src/controllers/MemoryConsolidation.d.ts +0 -142
  579. package/dist/src/controllers/MemoryConsolidation.d.ts.map +0 -1
  580. package/dist/src/controllers/MemoryConsolidation.js +0 -479
  581. package/dist/src/controllers/MemoryConsolidation.js.map +0 -1
  582. package/dist/src/controllers/QUICConnection.d.ts +0 -122
  583. package/dist/src/controllers/QUICConnection.d.ts.map +0 -1
  584. package/dist/src/controllers/QUICConnection.js +0 -329
  585. package/dist/src/controllers/QUICConnection.js.map +0 -1
  586. package/dist/src/controllers/QUICConnectionPool.d.ts +0 -83
  587. package/dist/src/controllers/QUICConnectionPool.d.ts.map +0 -1
  588. package/dist/src/controllers/QUICConnectionPool.js +0 -256
  589. package/dist/src/controllers/QUICConnectionPool.js.map +0 -1
  590. package/dist/src/controllers/QUICStreamManager.d.ts +0 -114
  591. package/dist/src/controllers/QUICStreamManager.d.ts.map +0 -1
  592. package/dist/src/controllers/QUICStreamManager.js +0 -267
  593. package/dist/src/controllers/QUICStreamManager.js.map +0 -1
  594. package/dist/src/controllers/StreamingEmbeddingService.d.ts +0 -82
  595. package/dist/src/controllers/StreamingEmbeddingService.d.ts.map +0 -1
  596. package/dist/src/controllers/StreamingEmbeddingService.js +0 -243
  597. package/dist/src/controllers/StreamingEmbeddingService.js.map +0 -1
  598. package/dist/src/controllers/index.cjs +0 -6
  599. package/dist/src/coordination/MultiDatabaseCoordinator.d.ts +0 -348
  600. package/dist/src/coordination/MultiDatabaseCoordinator.d.ts.map +0 -1
  601. package/dist/src/coordination/MultiDatabaseCoordinator.js +0 -803
  602. package/dist/src/coordination/MultiDatabaseCoordinator.js.map +0 -1
  603. package/dist/src/coordination/index.d.ts +0 -10
  604. package/dist/src/coordination/index.d.ts.map +0 -1
  605. package/dist/src/coordination/index.js +0 -10
  606. package/dist/src/coordination/index.js.map +0 -1
  607. package/dist/src/index.cjs +0 -6
  608. package/dist/src/optimizations/RVFOptimizer.d.ts +0 -226
  609. package/dist/src/optimizations/RVFOptimizer.d.ts.map +0 -1
  610. package/dist/src/optimizations/RVFOptimizer.js +0 -541
  611. package/dist/src/optimizations/RVFOptimizer.js.map +0 -1
  612. package/dist/src/security/AttestationLog.d.ts +0 -70
  613. package/dist/src/security/AttestationLog.d.ts.map +0 -1
  614. package/dist/src/security/AttestationLog.js +0 -174
  615. package/dist/src/security/AttestationLog.js.map +0 -1
  616. package/dist/src/security/MutationGuard.d.ts +0 -83
  617. package/dist/src/security/MutationGuard.d.ts.map +0 -1
  618. package/dist/src/security/MutationGuard.js +0 -364
  619. package/dist/src/security/MutationGuard.js.map +0 -1
  620. package/dist/src/security/index.cjs +0 -6
  621. package/dist/src/security/index.d.ts +0 -15
  622. package/dist/src/security/index.d.ts.map +0 -1
  623. package/dist/src/security/index.js +0 -18
  624. package/dist/src/security/index.js.map +0 -1
  625. package/dist/src/services/GNNService.d.ts +0 -173
  626. package/dist/src/services/GNNService.d.ts.map +0 -1
  627. package/dist/src/services/GNNService.js +0 -639
  628. package/dist/src/services/GNNService.js.map +0 -1
  629. package/dist/src/services/GraphTransformerService.d.ts +0 -80
  630. package/dist/src/services/GraphTransformerService.d.ts.map +0 -1
  631. package/dist/src/services/GraphTransformerService.js +0 -369
  632. package/dist/src/services/GraphTransformerService.js.map +0 -1
  633. package/dist/src/services/SemanticRouter.d.ts +0 -83
  634. package/dist/src/services/SemanticRouter.d.ts.map +0 -1
  635. package/dist/src/services/SemanticRouter.js +0 -160
  636. package/dist/src/services/SemanticRouter.js.map +0 -1
  637. package/dist/src/services/SonaTrajectoryService.d.ts +0 -224
  638. package/dist/src/services/SonaTrajectoryService.d.ts.map +0 -1
  639. package/dist/src/services/SonaTrajectoryService.js +0 -539
  640. package/dist/src/services/SonaTrajectoryService.js.map +0 -1
  641. package/dist/src/utils/LegacyAttentionAdapter.d.ts +0 -93
  642. package/dist/src/utils/LegacyAttentionAdapter.d.ts.map +0 -1
  643. package/dist/src/utils/LegacyAttentionAdapter.js +0 -241
  644. package/dist/src/utils/LegacyAttentionAdapter.js.map +0 -1
  645. package/dist/src/utils/vector-math.d.ts +0 -29
  646. package/dist/src/utils/vector-math.d.ts.map +0 -1
  647. package/dist/src/utils/vector-math.js +0 -66
  648. package/dist/src/utils/vector-math.js.map +0 -1
@@ -0,0 +1,1165 @@
1
+ /**
2
+ * AttentionService - RuVector Attention Mechanisms Integration
3
+ *
4
+ * This service provides a unified interface for attention mechanisms with
5
+ * RuVector WASM/NAPI bindings and robust JavaScript fallback implementations.
6
+ *
7
+ * Architecture:
8
+ * - HyperbolicAttention: Tree-structured Poincare embeddings for causal chains
9
+ * - FlashAttention: Memory-efficient block-wise attention for consolidation
10
+ * - GraphRoPE: Hop-distance-aware positional encoding for graph queries
11
+ * - MoEAttention: Expert routing for specialized memory domains
12
+ *
13
+ * All mechanisms default to FALSE (opt-in) and provide backward-compatible fallbacks.
14
+ * WASM bindings are used when available for 10-100x performance improvements.
15
+ *
16
+ * @module AttentionService
17
+ * @version 2.0.0-alpha.4
18
+ */
19
+ // Performance logging utility
20
+ const PERFORMANCE_LOGGING = process.env.AGENTDB_PERF_LOGGING === 'true';
21
+ const performanceLogs = [];
22
+ function logPerformance(log) {
23
+ if (PERFORMANCE_LOGGING) {
24
+ performanceLogs.push(log);
25
+ console.log(`[AttentionService] ${log.mechanism} using ${log.backend}: ${log.durationMs.toFixed(2)}ms (input size: ${log.inputSize})`);
26
+ }
27
+ }
28
+ /**
29
+ * Get all performance logs (useful for debugging and optimization)
30
+ */
31
+ export function getPerformanceLogs() {
32
+ return [...performanceLogs];
33
+ }
34
+ /**
35
+ * Clear performance logs
36
+ */
37
+ export function clearPerformanceLogs() {
38
+ performanceLogs.length = 0;
39
+ }
40
+ // Lazy-loaded WASM/NAPI modules
41
+ let wasmModule = null;
42
+ let napiModule = null;
43
+ let wasmInitialized = false;
44
+ let napiInitialized = false;
45
+ let wasmLoadAttempted = false;
46
+ let napiLoadAttempted = false;
47
+ /**
48
+ * Attempt to load the ruvector-attention-wasm module
49
+ */
50
+ async function loadWasmModule() {
51
+ if (wasmLoadAttempted)
52
+ return wasmInitialized;
53
+ wasmLoadAttempted = true;
54
+ try {
55
+ // Dynamic import for WASM module
56
+ const wasm = await import('ruvector-attention-wasm');
57
+ if (wasm.default) {
58
+ await wasm.default(); // Initialize WASM
59
+ }
60
+ else if (wasm.init) {
61
+ wasm.init();
62
+ }
63
+ wasmModule = wasm;
64
+ wasmInitialized = true;
65
+ if (PERFORMANCE_LOGGING) {
66
+ console.log('[AttentionService] WASM module loaded successfully');
67
+ }
68
+ return true;
69
+ }
70
+ catch (error) {
71
+ if (PERFORMANCE_LOGGING) {
72
+ console.warn('[AttentionService] WASM module not available:', error.message);
73
+ }
74
+ return false;
75
+ }
76
+ }
77
+ /**
78
+ * Attempt to load the @ruvector/attention NAPI module
79
+ */
80
+ async function loadNapiModule() {
81
+ if (napiLoadAttempted)
82
+ return napiInitialized;
83
+ napiLoadAttempted = true;
84
+ try {
85
+ // Dynamic import for NAPI module
86
+ napiModule = await import('@ruvector/attention');
87
+ napiInitialized = true;
88
+ if (PERFORMANCE_LOGGING) {
89
+ console.log('[AttentionService] NAPI module loaded successfully');
90
+ }
91
+ return true;
92
+ }
93
+ catch (error) {
94
+ if (PERFORMANCE_LOGGING) {
95
+ console.warn('[AttentionService] NAPI module not available:', error.message);
96
+ }
97
+ return false;
98
+ }
99
+ }
100
+ /**
101
+ * Check if WASM backend is available
102
+ */
103
+ export function isWasmAvailable() {
104
+ return wasmInitialized;
105
+ }
106
+ /**
107
+ * Check if NAPI backend is available
108
+ */
109
+ export function isNapiAvailable() {
110
+ return napiInitialized;
111
+ }
112
+ /**
113
+ * Get the best available backend
114
+ */
115
+ export function getAvailableBackend() {
116
+ if (napiInitialized)
117
+ return 'napi';
118
+ if (wasmInitialized)
119
+ return 'wasm';
120
+ return 'fallback';
121
+ }
122
+ /**
123
+ * AttentionService - Unified interface for attention mechanisms
124
+ *
125
+ * Provides fallback implementations until RuVector WASM/NAPI bindings are available.
126
+ * All mechanisms are opt-in via configuration flags.
127
+ */
128
+ export class AttentionService {
129
+ db;
130
+ hyperbolicConfig;
131
+ flashConfig;
132
+ graphRoPEConfig;
133
+ moeConfig;
134
+ constructor(db, configs) {
135
+ this.db = db;
136
+ // Initialize configs with defaults (all disabled)
137
+ this.hyperbolicConfig = {
138
+ enabled: false,
139
+ curvature: 1.0,
140
+ dimension: 384,
141
+ temperature: 1.0,
142
+ ...configs?.hyperbolic,
143
+ };
144
+ this.flashConfig = {
145
+ enabled: false,
146
+ blockSize: 256,
147
+ useSIMD: true,
148
+ maxSeqLen: 4096,
149
+ ...configs?.flash,
150
+ };
151
+ this.graphRoPEConfig = {
152
+ enabled: false,
153
+ maxHops: 10,
154
+ rotaryDim: 64,
155
+ baseFreq: 10000,
156
+ ...configs?.graphRoPE,
157
+ };
158
+ this.moeConfig = {
159
+ enabled: false,
160
+ numExperts: 8,
161
+ topK: 2,
162
+ expertDomains: ['code', 'data', 'reasoning', 'planning', 'execution', 'review', 'documentation', 'optimization'],
163
+ ...configs?.moe,
164
+ };
165
+ }
166
+ /**
167
+ * HyperbolicAttention: Tree-structured Poincare attention for causal chains
168
+ *
169
+ * Uses hyperbolic geometry to model hierarchical relationships in causal memory.
170
+ * Attempts to use NAPI bindings first, then WASM, then falls back to JavaScript.
171
+ *
172
+ * @param queries - Query embeddings [num_queries, dim]
173
+ * @param keys - Key embeddings from causal chain [num_keys, dim]
174
+ * @param values - Value embeddings [num_keys, dim]
175
+ * @param hierarchyLevels - Hierarchy level for each key (0 = root)
176
+ * @returns Attention result with Poincare-weighted outputs
177
+ */
178
+ async hyperbolicAttention(queries, keys, values, hierarchyLevels) {
179
+ const startTime = Date.now();
180
+ const dim = this.hyperbolicConfig.dimension;
181
+ const numQueries = queries.length / dim;
182
+ const numKeys = keys.length / dim;
183
+ if (!this.hyperbolicConfig.enabled) {
184
+ // Fallback: Standard attention with hierarchical scaling
185
+ return this.fallbackHyperbolicAttention(queries, keys, values, hierarchyLevels, startTime);
186
+ }
187
+ // Try NAPI first (fastest for Node.js)
188
+ await loadNapiModule();
189
+ if (napiInitialized && napiModule?.HyperbolicAttention) {
190
+ try {
191
+ const attention = new napiModule.HyperbolicAttention(dim, this.hyperbolicConfig.curvature);
192
+ // Convert to format expected by NAPI: arrays of Float32Arrays
193
+ const keysArray = [];
194
+ const valuesArray = [];
195
+ for (let i = 0; i < numKeys; i++) {
196
+ keysArray.push(keys.slice(i * dim, (i + 1) * dim));
197
+ valuesArray.push(values.slice(i * dim, (i + 1) * dim));
198
+ }
199
+ // Process each query
200
+ const attended = new Float32Array(numQueries * dim);
201
+ const allWeights = [];
202
+ for (let q = 0; q < numQueries; q++) {
203
+ const query = queries.slice(q * dim, (q + 1) * dim);
204
+ const result = attention.computeRaw(query, keysArray, valuesArray);
205
+ attended.set(result, q * dim);
206
+ // Approximate weights based on hierarchy
207
+ for (let k = 0; k < numKeys; k++) {
208
+ allWeights.push(Math.exp(-hierarchyLevels[k] * 0.5) / numKeys);
209
+ }
210
+ }
211
+ const durationMs = Date.now() - startTime;
212
+ logPerformance({
213
+ mechanism: 'hyperbolicAttention',
214
+ backend: 'napi',
215
+ durationMs,
216
+ inputSize: queries.length,
217
+ timestamp: Date.now(),
218
+ });
219
+ return {
220
+ attended,
221
+ weights: new Float32Array(allWeights),
222
+ distances: hierarchyLevels,
223
+ metrics: {
224
+ computeTimeMs: durationMs,
225
+ memoryUsedMB: (attended.byteLength + allWeights.length * 4) / (1024 * 1024),
226
+ },
227
+ };
228
+ }
229
+ catch (error) {
230
+ if (PERFORMANCE_LOGGING) {
231
+ console.warn('[AttentionService] NAPI hyperbolicAttention failed, trying WASM:', error.message);
232
+ }
233
+ }
234
+ }
235
+ // Try WASM (for browsers or Node.js fallback)
236
+ await loadWasmModule();
237
+ if (wasmInitialized && wasmModule?.WasmHyperbolicAttention) {
238
+ try {
239
+ const attention = new wasmModule.WasmHyperbolicAttention(dim, this.hyperbolicConfig.curvature);
240
+ // Convert to format expected by WASM
241
+ const keysArray = [];
242
+ const valuesArray = [];
243
+ for (let i = 0; i < numKeys; i++) {
244
+ keysArray.push(keys.slice(i * dim, (i + 1) * dim));
245
+ valuesArray.push(values.slice(i * dim, (i + 1) * dim));
246
+ }
247
+ // Process each query
248
+ const attended = new Float32Array(numQueries * dim);
249
+ const allWeights = [];
250
+ for (let q = 0; q < numQueries; q++) {
251
+ const query = queries.slice(q * dim, (q + 1) * dim);
252
+ const result = attention.compute(query, keysArray, valuesArray);
253
+ attended.set(result, q * dim);
254
+ // Approximate weights based on hierarchy
255
+ for (let k = 0; k < numKeys; k++) {
256
+ allWeights.push(Math.exp(-hierarchyLevels[k] * 0.5) / numKeys);
257
+ }
258
+ }
259
+ // Clean up WASM instance
260
+ if (attention.free) {
261
+ attention.free();
262
+ }
263
+ const durationMs = Date.now() - startTime;
264
+ logPerformance({
265
+ mechanism: 'hyperbolicAttention',
266
+ backend: 'wasm',
267
+ durationMs,
268
+ inputSize: queries.length,
269
+ timestamp: Date.now(),
270
+ });
271
+ return {
272
+ attended,
273
+ weights: new Float32Array(allWeights),
274
+ distances: hierarchyLevels,
275
+ metrics: {
276
+ computeTimeMs: durationMs,
277
+ memoryUsedMB: (attended.byteLength + allWeights.length * 4) / (1024 * 1024),
278
+ },
279
+ };
280
+ }
281
+ catch (error) {
282
+ if (PERFORMANCE_LOGGING) {
283
+ console.warn('[AttentionService] WASM hyperbolicAttention failed, using fallback:', error.message);
284
+ }
285
+ }
286
+ }
287
+ // Fallback to JavaScript implementation
288
+ return this.fallbackHyperbolicAttention(queries, keys, values, hierarchyLevels, startTime);
289
+ }
290
+ /**
291
+ * FlashAttention: Memory-efficient block-wise attention for consolidation
292
+ *
293
+ * Processes attention in blocks to reduce peak memory usage.
294
+ * Ideal for episodic memory consolidation with large buffers.
295
+ * Attempts to use NAPI bindings first, then WASM, then falls back to JavaScript.
296
+ *
297
+ * @param queries - Query embeddings [num_queries, dim]
298
+ * @param keys - Key embeddings [num_keys, dim]
299
+ * @param values - Value embeddings [num_keys, dim]
300
+ * @returns Attention result with memory-efficient computation
301
+ */
302
+ async flashAttention(queries, keys, values) {
303
+ const startTime = Date.now();
304
+ const dim = 384; // Standard dimension
305
+ const numQueries = queries.length / dim;
306
+ const numKeys = keys.length / dim;
307
+ const blockSize = this.flashConfig.blockSize;
308
+ if (!this.flashConfig.enabled) {
309
+ // Fallback: Chunked attention
310
+ return this.fallbackFlashAttention(queries, keys, values, startTime);
311
+ }
312
+ // Try NAPI first (fastest for Node.js)
313
+ await loadNapiModule();
314
+ if (napiInitialized && napiModule?.FlashAttention) {
315
+ try {
316
+ const attention = new napiModule.FlashAttention(dim, blockSize);
317
+ // Convert to format expected by NAPI: arrays of Float32Arrays
318
+ const keysArray = [];
319
+ const valuesArray = [];
320
+ for (let i = 0; i < numKeys; i++) {
321
+ keysArray.push(keys.slice(i * dim, (i + 1) * dim));
322
+ valuesArray.push(values.slice(i * dim, (i + 1) * dim));
323
+ }
324
+ // Process each query
325
+ const output = new Float32Array(numQueries * dim);
326
+ let blocksProcessed = 0;
327
+ for (let q = 0; q < numQueries; q++) {
328
+ const query = queries.slice(q * dim, (q + 1) * dim);
329
+ const result = attention.computeRaw(query, keysArray, valuesArray);
330
+ output.set(result, q * dim);
331
+ blocksProcessed += Math.ceil(numKeys / blockSize);
332
+ }
333
+ const durationMs = Date.now() - startTime;
334
+ logPerformance({
335
+ mechanism: 'flashAttention',
336
+ backend: 'napi',
337
+ durationMs,
338
+ inputSize: queries.length,
339
+ timestamp: Date.now(),
340
+ });
341
+ return {
342
+ output,
343
+ metrics: {
344
+ computeTimeMs: durationMs,
345
+ peakMemoryMB: (output.byteLength + blockSize * dim * 4 * 2) / (1024 * 1024),
346
+ blocksProcessed,
347
+ },
348
+ };
349
+ }
350
+ catch (error) {
351
+ if (PERFORMANCE_LOGGING) {
352
+ console.warn('[AttentionService] NAPI flashAttention failed, trying WASM:', error.message);
353
+ }
354
+ }
355
+ }
356
+ // Try WASM (for browsers or Node.js fallback)
357
+ await loadWasmModule();
358
+ if (wasmInitialized && wasmModule?.WasmFlashAttention) {
359
+ try {
360
+ const attention = new wasmModule.WasmFlashAttention(dim, blockSize);
361
+ // Convert to format expected by WASM
362
+ const keysArray = [];
363
+ const valuesArray = [];
364
+ for (let i = 0; i < numKeys; i++) {
365
+ keysArray.push(keys.slice(i * dim, (i + 1) * dim));
366
+ valuesArray.push(values.slice(i * dim, (i + 1) * dim));
367
+ }
368
+ // Process each query
369
+ const output = new Float32Array(numQueries * dim);
370
+ let blocksProcessed = 0;
371
+ for (let q = 0; q < numQueries; q++) {
372
+ const query = queries.slice(q * dim, (q + 1) * dim);
373
+ const result = attention.compute(query, keysArray, valuesArray);
374
+ output.set(result, q * dim);
375
+ blocksProcessed += Math.ceil(numKeys / blockSize);
376
+ }
377
+ // Clean up WASM instance
378
+ if (attention.free) {
379
+ attention.free();
380
+ }
381
+ const durationMs = Date.now() - startTime;
382
+ logPerformance({
383
+ mechanism: 'flashAttention',
384
+ backend: 'wasm',
385
+ durationMs,
386
+ inputSize: queries.length,
387
+ timestamp: Date.now(),
388
+ });
389
+ return {
390
+ output,
391
+ metrics: {
392
+ computeTimeMs: durationMs,
393
+ peakMemoryMB: (output.byteLength + blockSize * dim * 4 * 2) / (1024 * 1024),
394
+ blocksProcessed,
395
+ },
396
+ };
397
+ }
398
+ catch (error) {
399
+ if (PERFORMANCE_LOGGING) {
400
+ console.warn('[AttentionService] WASM flashAttention failed, using fallback:', error.message);
401
+ }
402
+ }
403
+ }
404
+ // Fallback to JavaScript implementation
405
+ return this.fallbackFlashAttention(queries, keys, values, startTime);
406
+ }
407
+ /**
408
+ * GraphRoPE: Hop-distance-aware rotary positional encoding
409
+ *
410
+ * Encodes graph distances into query/key representations using rotary
411
+ * positional embeddings. Attempts to use NAPI bindings first, then falls
412
+ * back to JavaScript implementation.
413
+ *
414
+ * Note: The WASM module does not have a direct GraphRoPE binding, so we
415
+ * use the NAPI GraphRoPeAttention class when available.
416
+ *
417
+ * @param queries - Query embeddings [num_queries, dim]
418
+ * @param keys - Key embeddings [num_keys, dim]
419
+ * @param hopDistances - Hop distance matrix [num_queries, num_keys]
420
+ * @returns Position-encoded queries and keys
421
+ */
422
+ async graphRoPE(queries, keys, hopDistances) {
423
+ const startTime = Date.now();
424
+ const dim = 384; // Standard dimension
425
+ const numQueries = queries.length / dim;
426
+ const numKeys = keys.length / dim;
427
+ const maxPosition = this.graphRoPEConfig.maxHops;
428
+ if (!this.graphRoPEConfig.enabled) {
429
+ // Fallback: Distance scaling
430
+ return this.fallbackGraphRoPE(queries, keys, hopDistances, startTime);
431
+ }
432
+ // Try NAPI first (has GraphRoPeAttention)
433
+ await loadNapiModule();
434
+ if (napiInitialized && napiModule?.GraphRoPeAttention) {
435
+ try {
436
+ const rope = new napiModule.GraphRoPeAttention(dim, maxPosition);
437
+ // The GraphRoPeAttention is an attention mechanism, not just encoding
438
+ // We use it to compute position-aware attention, then extract the patterns
439
+ const keysArray = [];
440
+ const valuesArray = [];
441
+ for (let i = 0; i < numKeys; i++) {
442
+ keysArray.push(keys.slice(i * dim, (i + 1) * dim));
443
+ valuesArray.push(keys.slice(i * dim, (i + 1) * dim)); // Use keys as values for encoding
444
+ }
445
+ // Apply RoPE encoding per query
446
+ const encodedQueries = new Float32Array(queries.length);
447
+ const encodedKeys = new Float32Array(keys.length);
448
+ const hopEncodings = new Float32Array(numQueries * numKeys);
449
+ // Copy original queries/keys as base
450
+ encodedQueries.set(queries);
451
+ encodedKeys.set(keys);
452
+ // Compute hop-aware encodings using the attention mechanism
453
+ for (let q = 0; q < numQueries; q++) {
454
+ const query = queries.slice(q * dim, (q + 1) * dim);
455
+ const result = rope.computeRaw(query, keysArray, valuesArray);
456
+ // The result gives us position-encoded output
457
+ // Extract encoding strength from the result
458
+ for (let k = 0; k < numKeys; k++) {
459
+ const hopDistance = hopDistances[q]?.[k] || 0;
460
+ const scale = 1.0 / (1.0 + hopDistance);
461
+ hopEncodings[q * numKeys + k] = scale;
462
+ // Apply rotary-like scaling to queries
463
+ if (q === 0) {
464
+ for (let d = 0; d < dim; d++) {
465
+ const theta = d / dim * Math.PI * hopDistance / maxPosition;
466
+ const cos_t = Math.cos(theta);
467
+ const sin_t = Math.sin(theta);
468
+ // Simple rotary application
469
+ if (d % 2 === 0 && d + 1 < dim) {
470
+ const x = keys[k * dim + d];
471
+ const y = keys[k * dim + d + 1];
472
+ encodedKeys[k * dim + d] = x * cos_t - y * sin_t;
473
+ encodedKeys[k * dim + d + 1] = x * sin_t + y * cos_t;
474
+ }
475
+ }
476
+ }
477
+ }
478
+ // Apply rotary to queries
479
+ for (let d = 0; d < dim; d++) {
480
+ const avgHop = hopDistances[q]?.reduce((a, b) => a + b, 0) / (numKeys || 1) || 0;
481
+ const theta = d / dim * Math.PI * avgHop / maxPosition;
482
+ const cos_t = Math.cos(theta);
483
+ const sin_t = Math.sin(theta);
484
+ if (d % 2 === 0 && d + 1 < dim) {
485
+ const x = queries[q * dim + d];
486
+ const y = queries[q * dim + d + 1];
487
+ encodedQueries[q * dim + d] = x * cos_t - y * sin_t;
488
+ encodedQueries[q * dim + d + 1] = x * sin_t + y * cos_t;
489
+ }
490
+ }
491
+ }
492
+ const durationMs = Date.now() - startTime;
493
+ logPerformance({
494
+ mechanism: 'graphRoPE',
495
+ backend: 'napi',
496
+ durationMs,
497
+ inputSize: queries.length,
498
+ timestamp: Date.now(),
499
+ });
500
+ return {
501
+ queries: encodedQueries,
502
+ keys: encodedKeys,
503
+ hopEncodings,
504
+ metrics: {
505
+ computeTimeMs: durationMs,
506
+ },
507
+ };
508
+ }
509
+ catch (error) {
510
+ if (PERFORMANCE_LOGGING) {
511
+ console.warn('[AttentionService] NAPI graphRoPE failed, using fallback:', error.message);
512
+ }
513
+ }
514
+ }
515
+ // WASM module does not have a direct GraphRoPE binding
516
+ // The WasmLocalGlobalAttention is the closest but not suitable for this use case
517
+ // Fall through to JavaScript implementation
518
+ // Fallback to JavaScript implementation
519
+ const result = this.fallbackGraphRoPE(queries, keys, hopDistances, startTime);
520
+ logPerformance({
521
+ mechanism: 'graphRoPE',
522
+ backend: 'fallback',
523
+ durationMs: Date.now() - startTime,
524
+ inputSize: queries.length,
525
+ timestamp: Date.now(),
526
+ });
527
+ return result;
528
+ }
529
+ /**
530
+ * MoEAttention: Mixture-of-Experts routing for specialized domains
531
+ *
532
+ * Routes queries to specialized expert networks based on domain.
533
+ * Ideal for ReasoningBank with diverse pattern types.
534
+ * Attempts to use NAPI bindings first, then WASM, then falls back to JavaScript.
535
+ *
536
+ * @param queries - Query embeddings [num_queries, dim]
537
+ * @param keys - Key embeddings [num_keys, dim]
538
+ * @param values - Value embeddings [num_keys, dim]
539
+ * @param domains - Domain labels for each key
540
+ * @returns Expert-routed attention output
541
+ */
542
+ async moeAttention(queries, keys, values, domains) {
543
+ const startTime = Date.now();
544
+ const dim = 384; // Standard dimension
545
+ const numQueries = queries.length / dim;
546
+ const numKeys = keys.length / dim;
547
+ const numExperts = this.moeConfig.numExperts;
548
+ const topK = this.moeConfig.topK;
549
+ if (!this.moeConfig.enabled) {
550
+ // Fallback: Domain-weighted attention
551
+ return this.fallbackMoEAttention(queries, keys, values, domains, startTime);
552
+ }
553
+ // Try NAPI first (fastest for Node.js)
554
+ await loadNapiModule();
555
+ if (napiInitialized && napiModule?.MoEAttention) {
556
+ try {
557
+ // MoEAttention constructor takes a config object
558
+ const moe = napiModule.MoEAttention.simple
559
+ ? napiModule.MoEAttention.simple(dim, numExperts, topK)
560
+ : new napiModule.MoEAttention({
561
+ dim,
562
+ numExperts,
563
+ topK,
564
+ });
565
+ // Convert to format expected by NAPI: arrays of Float32Arrays
566
+ const keysArray = [];
567
+ const valuesArray = [];
568
+ for (let i = 0; i < numKeys; i++) {
569
+ keysArray.push(keys.slice(i * dim, (i + 1) * dim));
570
+ valuesArray.push(values.slice(i * dim, (i + 1) * dim));
571
+ }
572
+ // Process each query
573
+ const output = new Float32Array(numQueries * dim);
574
+ const expertAssignments = [];
575
+ const expertWeights = [];
576
+ const expertsUsed = new Set();
577
+ for (let q = 0; q < numQueries; q++) {
578
+ const query = queries.slice(q * dim, (q + 1) * dim);
579
+ const result = moe.computeRaw(query, keysArray, valuesArray);
580
+ output.set(result, q * dim);
581
+ // Compute expert assignments based on domain distribution
582
+ const domainCounts = new Map();
583
+ domains.forEach(d => domainCounts.set(d, (domainCounts.get(d) || 0) + 1));
584
+ const assignments = [];
585
+ const weights = [];
586
+ const sortedDomains = Array.from(domainCounts.entries())
587
+ .sort((a, b) => b[1] - a[1])
588
+ .slice(0, topK);
589
+ sortedDomains.forEach(([domain, count]) => {
590
+ const expertIdx = this.moeConfig.expertDomains.indexOf(domain);
591
+ if (expertIdx >= 0 && expertIdx < numExperts) {
592
+ assignments.push(expertIdx);
593
+ weights.push(count / domains.length);
594
+ expertsUsed.add(expertIdx);
595
+ }
596
+ });
597
+ expertAssignments.push(assignments);
598
+ expertWeights.push(weights);
599
+ }
600
+ const durationMs = Date.now() - startTime;
601
+ logPerformance({
602
+ mechanism: 'moeAttention',
603
+ backend: 'napi',
604
+ durationMs,
605
+ inputSize: queries.length,
606
+ timestamp: Date.now(),
607
+ });
608
+ return {
609
+ output,
610
+ expertAssignments,
611
+ expertWeights,
612
+ metrics: {
613
+ computeTimeMs: durationMs,
614
+ expertsUsed: expertsUsed.size,
615
+ routingEntropy: this.calculateEntropy(expertWeights.flat()),
616
+ },
617
+ };
618
+ }
619
+ catch (error) {
620
+ if (PERFORMANCE_LOGGING) {
621
+ console.warn('[AttentionService] NAPI moeAttention failed, trying WASM:', error.message);
622
+ }
623
+ }
624
+ }
625
+ // Try WASM (for browsers or Node.js fallback)
626
+ await loadWasmModule();
627
+ if (wasmInitialized && wasmModule?.WasmMoEAttention) {
628
+ try {
629
+ const moe = new wasmModule.WasmMoEAttention(dim, numExperts, topK);
630
+ // Convert to format expected by WASM
631
+ const keysArray = [];
632
+ const valuesArray = [];
633
+ for (let i = 0; i < numKeys; i++) {
634
+ keysArray.push(keys.slice(i * dim, (i + 1) * dim));
635
+ valuesArray.push(values.slice(i * dim, (i + 1) * dim));
636
+ }
637
+ // Process each query
638
+ const output = new Float32Array(numQueries * dim);
639
+ const expertAssignments = [];
640
+ const expertWeights = [];
641
+ const expertsUsed = new Set();
642
+ for (let q = 0; q < numQueries; q++) {
643
+ const query = queries.slice(q * dim, (q + 1) * dim);
644
+ const result = moe.compute(query, keysArray, valuesArray);
645
+ output.set(result, q * dim);
646
+ // Compute expert assignments based on domain distribution
647
+ const domainCounts = new Map();
648
+ domains.forEach(d => domainCounts.set(d, (domainCounts.get(d) || 0) + 1));
649
+ const assignments = [];
650
+ const weights = [];
651
+ const sortedDomains = Array.from(domainCounts.entries())
652
+ .sort((a, b) => b[1] - a[1])
653
+ .slice(0, topK);
654
+ sortedDomains.forEach(([domain, count]) => {
655
+ const expertIdx = this.moeConfig.expertDomains.indexOf(domain);
656
+ if (expertIdx >= 0 && expertIdx < numExperts) {
657
+ assignments.push(expertIdx);
658
+ weights.push(count / domains.length);
659
+ expertsUsed.add(expertIdx);
660
+ }
661
+ });
662
+ expertAssignments.push(assignments);
663
+ expertWeights.push(weights);
664
+ }
665
+ // Clean up WASM instance
666
+ if (moe.free) {
667
+ moe.free();
668
+ }
669
+ const durationMs = Date.now() - startTime;
670
+ logPerformance({
671
+ mechanism: 'moeAttention',
672
+ backend: 'wasm',
673
+ durationMs,
674
+ inputSize: queries.length,
675
+ timestamp: Date.now(),
676
+ });
677
+ return {
678
+ output,
679
+ expertAssignments,
680
+ expertWeights,
681
+ metrics: {
682
+ computeTimeMs: durationMs,
683
+ expertsUsed: expertsUsed.size,
684
+ routingEntropy: this.calculateEntropy(expertWeights.flat()),
685
+ },
686
+ };
687
+ }
688
+ catch (error) {
689
+ if (PERFORMANCE_LOGGING) {
690
+ console.warn('[AttentionService] WASM moeAttention failed, using fallback:', error.message);
691
+ }
692
+ }
693
+ }
694
+ // Fallback to JavaScript implementation
695
+ return this.fallbackMoEAttention(queries, keys, values, domains, startTime);
696
+ }
697
+ // ========================================================================
698
+ // Fallback Implementations (CPU-based, backward compatible)
699
+ // ========================================================================
700
+ fallbackHyperbolicAttention(queries, keys, values, hierarchyLevels, startTime) {
701
+ const dim = this.hyperbolicConfig.dimension;
702
+ const numQueries = queries.length / dim;
703
+ const numKeys = keys.length / dim;
704
+ // Compute attention scores with hierarchical scaling
705
+ // Uses Poincare ball approximation for hyperbolic distances
706
+ const scores = new Float32Array(numQueries * numKeys);
707
+ const distances = [];
708
+ const curvature = this.hyperbolicConfig.curvature;
709
+ for (let i = 0; i < numQueries; i++) {
710
+ for (let j = 0; j < numKeys; j++) {
711
+ // Dot product with hyperbolic distance weighting
712
+ let score = 0;
713
+ let qNormSq = 0;
714
+ let kNormSq = 0;
715
+ for (let d = 0; d < dim; d++) {
716
+ const qVal = queries[i * dim + d];
717
+ const kVal = keys[j * dim + d];
718
+ score += qVal * kVal;
719
+ qNormSq += qVal * qVal;
720
+ kNormSq += kVal * kVal;
721
+ }
722
+ // Apply hyperbolic distance correction
723
+ // d_H(x, y) = 2 * arctanh(||(-x) + y|| / (1 - ||x||^2)(1 - ||y||^2))
724
+ const qNorm = Math.sqrt(Math.min(qNormSq, 0.99)); // Clamp to Poincare ball
725
+ const kNorm = Math.sqrt(Math.min(kNormSq, 0.99));
726
+ const hyperbolicScale = 1.0 / (1.0 + curvature * qNorm * kNorm);
727
+ // Hierarchical scaling (deeper nodes get exponentially scaled)
728
+ const hierarchyScale = Math.exp(-hierarchyLevels[j] * 0.5);
729
+ score *= hierarchyScale * hyperbolicScale;
730
+ scores[i * numKeys + j] = score / Math.sqrt(dim); // Scale by sqrt(dim)
731
+ distances.push(hierarchyLevels[j]);
732
+ }
733
+ }
734
+ // Softmax with temperature
735
+ const temperature = this.hyperbolicConfig.temperature;
736
+ const weights = this.softmax(scores, numQueries, numKeys, temperature);
737
+ // Compute attended output
738
+ const attended = new Float32Array(numQueries * dim);
739
+ for (let i = 0; i < numQueries; i++) {
740
+ for (let j = 0; j < numKeys; j++) {
741
+ const weight = weights[i * numKeys + j];
742
+ for (let d = 0; d < dim; d++) {
743
+ attended[i * dim + d] += weight * values[j * dim + d];
744
+ }
745
+ }
746
+ }
747
+ const durationMs = Date.now() - startTime;
748
+ logPerformance({
749
+ mechanism: 'hyperbolicAttention',
750
+ backend: 'fallback',
751
+ durationMs,
752
+ inputSize: queries.length,
753
+ timestamp: Date.now(),
754
+ });
755
+ return {
756
+ attended,
757
+ weights,
758
+ distances,
759
+ metrics: {
760
+ computeTimeMs: durationMs,
761
+ memoryUsedMB: (attended.byteLength + weights.byteLength) / (1024 * 1024),
762
+ },
763
+ };
764
+ }
765
+ fallbackFlashAttention(queries, keys, values, startTime) {
766
+ const dim = 384; // Assume standard dimension
767
+ const numQueries = queries.length / dim;
768
+ const numKeys = keys.length / dim;
769
+ const blockSize = this.flashConfig.blockSize;
770
+ const scale = 1.0 / Math.sqrt(dim);
771
+ const output = new Float32Array(numQueries * dim);
772
+ let blocksProcessed = 0;
773
+ let peakMemory = 0;
774
+ // Process in blocks to reduce memory (Flash Attention algorithm)
775
+ // This implements a simplified version of the FlashAttention tiling strategy
776
+ for (let qStart = 0; qStart < numQueries; qStart += blockSize) {
777
+ const qEnd = Math.min(qStart + blockSize, numQueries);
778
+ const qBlockSize = qEnd - qStart;
779
+ // Track running max and sum for online softmax per query
780
+ const runningMax = new Float32Array(qBlockSize).fill(-Infinity);
781
+ const runningSum = new Float32Array(qBlockSize).fill(0);
782
+ const accumulatedOutput = new Float32Array(qBlockSize * dim);
783
+ for (let kStart = 0; kStart < numKeys; kStart += blockSize) {
784
+ const kEnd = Math.min(kStart + blockSize, numKeys);
785
+ const kBlockSize = kEnd - kStart;
786
+ // Compute block attention scores
787
+ const blockScores = new Float32Array(qBlockSize * kBlockSize);
788
+ for (let qi = 0; qi < qBlockSize; qi++) {
789
+ const i = qStart + qi;
790
+ for (let ki = 0; ki < kBlockSize; ki++) {
791
+ const j = kStart + ki;
792
+ let score = 0;
793
+ for (let d = 0; d < dim; d++) {
794
+ score += queries[i * dim + d] * keys[j * dim + d];
795
+ }
796
+ blockScores[qi * kBlockSize + ki] = score * scale;
797
+ }
798
+ }
799
+ // Online softmax update with proper rescaling
800
+ for (let qi = 0; qi < qBlockSize; qi++) {
801
+ // Find new max
802
+ let newMax = runningMax[qi];
803
+ for (let ki = 0; ki < kBlockSize; ki++) {
804
+ newMax = Math.max(newMax, blockScores[qi * kBlockSize + ki]);
805
+ }
806
+ // Rescale existing accumulator
807
+ const rescale = Math.exp(runningMax[qi] - newMax);
808
+ let newSum = runningSum[qi] * rescale;
809
+ // Rescale accumulated output
810
+ for (let d = 0; d < dim; d++) {
811
+ accumulatedOutput[qi * dim + d] *= rescale;
812
+ }
813
+ // Add new block contribution
814
+ for (let ki = 0; ki < kBlockSize; ki++) {
815
+ const j = kStart + ki;
816
+ const expScore = Math.exp(blockScores[qi * kBlockSize + ki] - newMax);
817
+ newSum += expScore;
818
+ for (let d = 0; d < dim; d++) {
819
+ accumulatedOutput[qi * dim + d] += expScore * values[j * dim + d];
820
+ }
821
+ }
822
+ runningMax[qi] = newMax;
823
+ runningSum[qi] = newSum;
824
+ }
825
+ peakMemory = Math.max(peakMemory, blockScores.byteLength + qBlockSize * dim * 4);
826
+ blocksProcessed++;
827
+ }
828
+ // Normalize and copy to output
829
+ for (let qi = 0; qi < qBlockSize; qi++) {
830
+ const i = qStart + qi;
831
+ const invSum = runningSum[qi] > 1e-8 ? 1.0 / runningSum[qi] : 0;
832
+ for (let d = 0; d < dim; d++) {
833
+ output[i * dim + d] = accumulatedOutput[qi * dim + d] * invSum;
834
+ }
835
+ }
836
+ }
837
+ const durationMs = Date.now() - startTime;
838
+ logPerformance({
839
+ mechanism: 'flashAttention',
840
+ backend: 'fallback',
841
+ durationMs,
842
+ inputSize: queries.length,
843
+ timestamp: Date.now(),
844
+ });
845
+ return {
846
+ output,
847
+ metrics: {
848
+ computeTimeMs: durationMs,
849
+ peakMemoryMB: peakMemory / (1024 * 1024),
850
+ blocksProcessed,
851
+ },
852
+ };
853
+ }
854
+ fallbackGraphRoPE(queries, keys, hopDistances, startTime) {
855
+ const dim = 384;
856
+ const numQueries = queries.length / dim;
857
+ const numKeys = keys.length / dim;
858
+ const rotaryDim = this.graphRoPEConfig.rotaryDim;
859
+ const baseFreq = this.graphRoPEConfig.baseFreq;
860
+ const maxHops = this.graphRoPEConfig.maxHops;
861
+ // Create output arrays (copy originals first)
862
+ const encodedQueries = new Float32Array(queries);
863
+ const encodedKeys = new Float32Array(keys);
864
+ const hopEncodings = new Float32Array(numQueries * numKeys);
865
+ // Apply rotary positional encoding based on hop distances
866
+ // RoPE: rotate pairs of dimensions based on position
867
+ for (let i = 0; i < numQueries; i++) {
868
+ // Calculate average hop distance for this query
869
+ let avgHop = 0;
870
+ let validHops = 0;
871
+ for (let j = 0; j < numKeys; j++) {
872
+ const distance = hopDistances[i]?.[j];
873
+ if (distance !== undefined) {
874
+ avgHop += distance;
875
+ validHops++;
876
+ }
877
+ }
878
+ avgHop = validHops > 0 ? avgHop / validHops : 0;
879
+ // Apply rotary encoding to query
880
+ for (let d = 0; d < Math.min(rotaryDim, dim); d += 2) {
881
+ if (d + 1 >= dim)
882
+ break;
883
+ // Frequency for this dimension pair
884
+ const freq = 1.0 / Math.pow(baseFreq, d / rotaryDim);
885
+ const theta = avgHop * freq * Math.PI / maxHops;
886
+ const cos_t = Math.cos(theta);
887
+ const sin_t = Math.sin(theta);
888
+ // Rotate the dimension pair
889
+ const x = encodedQueries[i * dim + d];
890
+ const y = encodedQueries[i * dim + d + 1];
891
+ encodedQueries[i * dim + d] = x * cos_t - y * sin_t;
892
+ encodedQueries[i * dim + d + 1] = x * sin_t + y * cos_t;
893
+ }
894
+ // Store hop encodings
895
+ for (let j = 0; j < numKeys; j++) {
896
+ const distance = hopDistances[i]?.[j] || 0;
897
+ const scale = 1.0 / (1.0 + distance);
898
+ hopEncodings[i * numKeys + j] = scale;
899
+ }
900
+ }
901
+ // Apply rotary encoding to keys based on their position in the graph
902
+ for (let j = 0; j < numKeys; j++) {
903
+ // Use key index as position (could be enhanced with actual graph positions)
904
+ const keyPosition = j;
905
+ for (let d = 0; d < Math.min(rotaryDim, dim); d += 2) {
906
+ if (d + 1 >= dim)
907
+ break;
908
+ const freq = 1.0 / Math.pow(baseFreq, d / rotaryDim);
909
+ const theta = keyPosition * freq * Math.PI / (numKeys || 1);
910
+ const cos_t = Math.cos(theta);
911
+ const sin_t = Math.sin(theta);
912
+ const x = encodedKeys[j * dim + d];
913
+ const y = encodedKeys[j * dim + d + 1];
914
+ encodedKeys[j * dim + d] = x * cos_t - y * sin_t;
915
+ encodedKeys[j * dim + d + 1] = x * sin_t + y * cos_t;
916
+ }
917
+ }
918
+ const durationMs = Date.now() - startTime;
919
+ return {
920
+ queries: encodedQueries,
921
+ keys: encodedKeys,
922
+ hopEncodings,
923
+ metrics: {
924
+ computeTimeMs: durationMs,
925
+ },
926
+ };
927
+ }
928
+ fallbackMoEAttention(queries, keys, values, domains, startTime) {
929
+ const dim = 384;
930
+ const numQueries = queries.length / dim;
931
+ const numKeys = keys.length / dim;
932
+ const numExperts = this.moeConfig.numExperts;
933
+ const topK = this.moeConfig.topK;
934
+ const expertDomains = this.moeConfig.expertDomains;
935
+ // Expert-based routing with gating mechanism
936
+ const expertAssignments = [];
937
+ const expertWeights = [];
938
+ const output = new Float32Array(numQueries * dim);
939
+ const expertsUsed = new Set();
940
+ // Pre-compute domain to expert mapping
941
+ const domainToExpert = new Map();
942
+ expertDomains.forEach((domain, idx) => {
943
+ domainToExpert.set(domain, idx);
944
+ });
945
+ for (let i = 0; i < numQueries; i++) {
946
+ const queryVec = queries.slice(i * dim, (i + 1) * dim);
947
+ // Compute gating scores for each expert based on query similarity to domain centroids
948
+ const expertScores = [];
949
+ // Count domain occurrences and compute weighted scores
950
+ const domainCounts = new Map();
951
+ const domainSims = new Map();
952
+ for (let j = 0; j < numKeys; j++) {
953
+ const keyDomain = domains[j];
954
+ domainCounts.set(keyDomain, (domainCounts.get(keyDomain) || 0) + 1);
955
+ // Compute similarity between query and this key
956
+ const keyVec = keys.slice(j * dim, (j + 1) * dim);
957
+ let sim = 0;
958
+ let qNorm = 0;
959
+ let kNorm = 0;
960
+ for (let d = 0; d < dim; d++) {
961
+ sim += queryVec[d] * keyVec[d];
962
+ qNorm += queryVec[d] * queryVec[d];
963
+ kNorm += keyVec[d] * keyVec[d];
964
+ }
965
+ // Cosine similarity
966
+ const cosSim = sim / (Math.sqrt(qNorm * kNorm) + 1e-8);
967
+ domainSims.set(keyDomain, (domainSims.get(keyDomain) || 0) + cosSim);
968
+ }
969
+ // Normalize similarities and create expert scores
970
+ domainCounts.forEach((count, domain) => {
971
+ const avgSim = (domainSims.get(domain) || 0) / count;
972
+ const expertIdx = domainToExpert.get(domain);
973
+ if (expertIdx !== undefined && expertIdx < numExperts) {
974
+ expertScores.push({ idx: expertIdx, score: avgSim * Math.log(count + 1) });
975
+ }
976
+ });
977
+ // Select top-K experts
978
+ expertScores.sort((a, b) => b.score - a.score);
979
+ const topExperts = expertScores.slice(0, topK);
980
+ // Compute softmax weights for selected experts
981
+ const assignments = [];
982
+ const weights = [];
983
+ if (topExperts.length > 0) {
984
+ const maxScore = topExperts[0].score;
985
+ let sumExp = 0;
986
+ const expScores = topExperts.map(e => {
987
+ const exp = Math.exp(e.score - maxScore);
988
+ sumExp += exp;
989
+ return exp;
990
+ });
991
+ topExperts.forEach((expert, idx) => {
992
+ const weight = expScores[idx] / (sumExp + 1e-8);
993
+ assignments.push(expert.idx);
994
+ weights.push(weight);
995
+ expertsUsed.add(expert.idx);
996
+ });
997
+ }
998
+ else {
999
+ // Fallback: use first expert with equal weight
1000
+ assignments.push(0);
1001
+ weights.push(1.0);
1002
+ expertsUsed.add(0);
1003
+ }
1004
+ expertAssignments.push(assignments);
1005
+ expertWeights.push(weights);
1006
+ // Compute weighted output from selected experts
1007
+ for (let j = 0; j < numKeys; j++) {
1008
+ const keyDomain = domains[j];
1009
+ const expertIdx = domainToExpert.get(keyDomain);
1010
+ if (expertIdx !== undefined) {
1011
+ const assignmentIdx = assignments.indexOf(expertIdx);
1012
+ if (assignmentIdx >= 0) {
1013
+ const weight = weights[assignmentIdx];
1014
+ for (let d = 0; d < dim; d++) {
1015
+ output[i * dim + d] += weight * values[j * dim + d] / numKeys;
1016
+ }
1017
+ }
1018
+ }
1019
+ }
1020
+ }
1021
+ // Calculate routing entropy (measures load balancing across experts)
1022
+ const routingEntropy = this.calculateEntropy(expertWeights.flat());
1023
+ const durationMs = Date.now() - startTime;
1024
+ logPerformance({
1025
+ mechanism: 'moeAttention',
1026
+ backend: 'fallback',
1027
+ durationMs,
1028
+ inputSize: queries.length,
1029
+ timestamp: Date.now(),
1030
+ });
1031
+ return {
1032
+ output,
1033
+ expertAssignments,
1034
+ expertWeights,
1035
+ metrics: {
1036
+ computeTimeMs: durationMs,
1037
+ expertsUsed: expertsUsed.size,
1038
+ routingEntropy,
1039
+ },
1040
+ };
1041
+ }
1042
+ // Helper: Softmax with optional temperature parameter
1043
+ softmax(scores, rows, cols, temperature = 1.0) {
1044
+ const result = new Float32Array(scores.length);
1045
+ const invTemp = 1.0 / Math.max(temperature, 1e-8); // Prevent division by zero
1046
+ for (let i = 0; i < rows; i++) {
1047
+ let max = -Infinity;
1048
+ for (let j = 0; j < cols; j++) {
1049
+ const scaledScore = scores[i * cols + j] * invTemp;
1050
+ max = Math.max(max, scaledScore);
1051
+ }
1052
+ let sum = 0;
1053
+ for (let j = 0; j < cols; j++) {
1054
+ const scaledScore = scores[i * cols + j] * invTemp;
1055
+ result[i * cols + j] = Math.exp(scaledScore - max);
1056
+ sum += result[i * cols + j];
1057
+ }
1058
+ // Normalize with numerical stability
1059
+ const invSum = sum > 1e-8 ? 1.0 / sum : 1.0 / cols;
1060
+ for (let j = 0; j < cols; j++) {
1061
+ result[i * cols + j] *= invSum;
1062
+ }
1063
+ }
1064
+ return result;
1065
+ }
1066
+ // Helper: Calculate entropy
1067
+ calculateEntropy(probs) {
1068
+ return probs.reduce((entropy, p) => {
1069
+ return p > 0 ? entropy - p * Math.log2(p) : entropy;
1070
+ }, 0);
1071
+ }
1072
+ /**
1073
+ * Get current configuration
1074
+ */
1075
+ getConfig() {
1076
+ return {
1077
+ hyperbolic: this.hyperbolicConfig,
1078
+ flash: this.flashConfig,
1079
+ graphRoPE: this.graphRoPEConfig,
1080
+ moe: this.moeConfig,
1081
+ };
1082
+ }
1083
+ /**
1084
+ * Update configuration dynamically
1085
+ */
1086
+ updateConfig(configs) {
1087
+ if (configs.hyperbolic) {
1088
+ this.hyperbolicConfig = { ...this.hyperbolicConfig, ...configs.hyperbolic };
1089
+ }
1090
+ if (configs.flash) {
1091
+ this.flashConfig = { ...this.flashConfig, ...configs.flash };
1092
+ }
1093
+ if (configs.graphRoPE) {
1094
+ this.graphRoPEConfig = { ...this.graphRoPEConfig, ...configs.graphRoPE };
1095
+ }
1096
+ if (configs.moe) {
1097
+ this.moeConfig = { ...this.moeConfig, ...configs.moe };
1098
+ }
1099
+ }
1100
+ /**
1101
+ * Get backend status information
1102
+ * Useful for debugging and monitoring
1103
+ */
1104
+ getBackendStatus() {
1105
+ return {
1106
+ wasmAvailable: wasmInitialized,
1107
+ napiAvailable: napiInitialized,
1108
+ activeBackend: getAvailableBackend(),
1109
+ performanceLoggingEnabled: PERFORMANCE_LOGGING,
1110
+ };
1111
+ }
1112
+ }
1113
+ /**
1114
+ * Initialize attention backends proactively
1115
+ * Call this at application startup for faster first-use performance
1116
+ *
1117
+ * @returns Promise resolving to backend status
1118
+ */
1119
+ export async function initializeAttentionBackends() {
1120
+ const [wasmLoaded, napiLoaded] = await Promise.all([
1121
+ loadWasmModule(),
1122
+ loadNapiModule(),
1123
+ ]);
1124
+ return {
1125
+ wasmLoaded,
1126
+ napiLoaded,
1127
+ recommendedBackend: getAvailableBackend(),
1128
+ };
1129
+ }
1130
+ /**
1131
+ * Create an AttentionService with all mechanisms enabled
1132
+ * Convenience factory for quick setup
1133
+ *
1134
+ * @param db - Database instance (can be null for standalone usage)
1135
+ * @returns Configured AttentionService instance
1136
+ */
1137
+ export function createAttentionService(db = null) {
1138
+ return new AttentionService(db, {
1139
+ hyperbolic: { enabled: true },
1140
+ flash: { enabled: true },
1141
+ graphRoPE: { enabled: true },
1142
+ moe: { enabled: true },
1143
+ });
1144
+ }
1145
+ /**
1146
+ * Create an AttentionService with only fallback implementations
1147
+ * Useful for environments where WASM/NAPI are unavailable
1148
+ *
1149
+ * @param db - Database instance (can be null for standalone usage)
1150
+ * @returns Configured AttentionService instance with fallbacks only
1151
+ */
1152
+ export function createFallbackAttentionService(db = null) {
1153
+ // Reset module loading flags to force fallback
1154
+ wasmLoadAttempted = true;
1155
+ napiLoadAttempted = true;
1156
+ wasmInitialized = false;
1157
+ napiInitialized = false;
1158
+ return new AttentionService(db, {
1159
+ hyperbolic: { enabled: true },
1160
+ flash: { enabled: true },
1161
+ graphRoPE: { enabled: true },
1162
+ moe: { enabled: true },
1163
+ });
1164
+ }
1165
+ //# sourceMappingURL=AttentionService.js.map