agentdb 3.0.0-alpha.3 → 3.0.0-alpha.4

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 (1038) hide show
  1. package/README.md +978 -2342
  2. package/dist/agentdb.browser.js +1492 -0
  3. package/dist/agentdb.browser.js.map +7 -0
  4. package/dist/agentdb.browser.min.js +3 -0
  5. package/dist/agentdb.browser.min.js.map +7 -0
  6. package/dist/agentdb.wasm-loader.js +207 -0
  7. package/dist/schemas/frontier-schema.sql +0 -7
  8. package/dist/schemas/schema.sql +0 -7
  9. package/dist/simulation/cli.d.ts +9 -0
  10. package/dist/simulation/cli.d.ts.map +1 -0
  11. package/dist/simulation/cli.js +68 -0
  12. package/dist/simulation/cli.js.map +1 -0
  13. package/dist/simulation/runner.d.ts +21 -0
  14. package/dist/simulation/runner.d.ts.map +1 -0
  15. package/dist/simulation/runner.js +241 -0
  16. package/dist/simulation/runner.js.map +1 -0
  17. package/dist/simulation/scenarios/aidefence-integration.d.ts +24 -0
  18. package/dist/simulation/scenarios/aidefence-integration.d.ts.map +1 -0
  19. package/dist/simulation/scenarios/aidefence-integration.js +124 -0
  20. package/dist/simulation/scenarios/aidefence-integration.js.map +1 -0
  21. package/dist/simulation/scenarios/bmssp-integration.d.ts +23 -0
  22. package/dist/simulation/scenarios/bmssp-integration.d.ts.map +1 -0
  23. package/dist/simulation/scenarios/bmssp-integration.js +104 -0
  24. package/dist/simulation/scenarios/bmssp-integration.js.map +1 -0
  25. package/dist/simulation/scenarios/causal-reasoning.d.ts +16 -0
  26. package/dist/simulation/scenarios/causal-reasoning.d.ts.map +1 -0
  27. package/dist/simulation/scenarios/causal-reasoning.js +108 -0
  28. package/dist/simulation/scenarios/causal-reasoning.js.map +1 -0
  29. package/dist/simulation/scenarios/consciousness-explorer.d.ts +25 -0
  30. package/dist/simulation/scenarios/consciousness-explorer.d.ts.map +1 -0
  31. package/dist/simulation/scenarios/consciousness-explorer.js +108 -0
  32. package/dist/simulation/scenarios/consciousness-explorer.js.map +1 -0
  33. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.d.ts +135 -0
  34. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.d.ts.map +1 -0
  35. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.js +158 -0
  36. package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.js.map +1 -0
  37. package/dist/simulation/scenarios/domain-examples/index.d.ts +14 -0
  38. package/dist/simulation/scenarios/domain-examples/index.d.ts.map +1 -0
  39. package/dist/simulation/scenarios/domain-examples/index.js +14 -0
  40. package/dist/simulation/scenarios/domain-examples/index.js.map +1 -0
  41. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.d.ts +178 -0
  42. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.d.ts.map +1 -0
  43. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.js +218 -0
  44. package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.js.map +1 -0
  45. package/dist/simulation/scenarios/domain-examples/medical-imaging.d.ts +122 -0
  46. package/dist/simulation/scenarios/domain-examples/medical-imaging.d.ts.map +1 -0
  47. package/dist/simulation/scenarios/domain-examples/medical-imaging.js +129 -0
  48. package/dist/simulation/scenarios/domain-examples/medical-imaging.js.map +1 -0
  49. package/dist/simulation/scenarios/domain-examples/robotics-navigation.d.ts +166 -0
  50. package/dist/simulation/scenarios/domain-examples/robotics-navigation.d.ts.map +1 -0
  51. package/dist/simulation/scenarios/domain-examples/robotics-navigation.js +161 -0
  52. package/dist/simulation/scenarios/domain-examples/robotics-navigation.js.map +1 -0
  53. package/dist/simulation/scenarios/domain-examples/scientific-research.d.ts +151 -0
  54. package/dist/simulation/scenarios/domain-examples/scientific-research.d.ts.map +1 -0
  55. package/dist/simulation/scenarios/domain-examples/scientific-research.js +187 -0
  56. package/dist/simulation/scenarios/domain-examples/scientific-research.js.map +1 -0
  57. package/dist/simulation/scenarios/domain-examples/trading-systems.d.ts +102 -0
  58. package/dist/simulation/scenarios/domain-examples/trading-systems.d.ts.map +1 -0
  59. package/dist/simulation/scenarios/domain-examples/trading-systems.js +100 -0
  60. package/dist/simulation/scenarios/domain-examples/trading-systems.js.map +1 -0
  61. package/dist/simulation/scenarios/goalie-integration.d.ts +24 -0
  62. package/dist/simulation/scenarios/goalie-integration.d.ts.map +1 -0
  63. package/dist/simulation/scenarios/goalie-integration.js +121 -0
  64. package/dist/simulation/scenarios/goalie-integration.js.map +1 -0
  65. package/dist/simulation/scenarios/graph-traversal.d.ts +17 -0
  66. package/dist/simulation/scenarios/graph-traversal.d.ts.map +1 -0
  67. package/dist/simulation/scenarios/graph-traversal.js +101 -0
  68. package/dist/simulation/scenarios/graph-traversal.js.map +1 -0
  69. package/dist/simulation/scenarios/latent-space/attention-analysis.d.ts +45 -0
  70. package/dist/simulation/scenarios/latent-space/attention-analysis.d.ts.map +1 -0
  71. package/dist/simulation/scenarios/latent-space/attention-analysis.js +435 -0
  72. package/dist/simulation/scenarios/latent-space/attention-analysis.js.map +1 -0
  73. package/dist/simulation/scenarios/latent-space/clustering-analysis.d.ts +55 -0
  74. package/dist/simulation/scenarios/latent-space/clustering-analysis.d.ts.map +1 -0
  75. package/dist/simulation/scenarios/latent-space/clustering-analysis.js +606 -0
  76. package/dist/simulation/scenarios/latent-space/clustering-analysis.js.map +1 -0
  77. package/dist/simulation/scenarios/latent-space/hnsw-exploration.d.ts +74 -0
  78. package/dist/simulation/scenarios/latent-space/hnsw-exploration.d.ts.map +1 -0
  79. package/dist/simulation/scenarios/latent-space/hnsw-exploration.js +391 -0
  80. package/dist/simulation/scenarios/latent-space/hnsw-exploration.js.map +1 -0
  81. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.d.ts +51 -0
  82. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.d.ts.map +1 -0
  83. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.js +536 -0
  84. package/dist/simulation/scenarios/latent-space/hypergraph-exploration.js.map +1 -0
  85. package/dist/simulation/scenarios/latent-space/index.d.ts +35 -0
  86. package/dist/simulation/scenarios/latent-space/index.d.ts.map +1 -0
  87. package/dist/simulation/scenarios/latent-space/index.js +35 -0
  88. package/dist/simulation/scenarios/latent-space/index.js.map +1 -0
  89. package/dist/simulation/scenarios/latent-space/neural-augmentation.d.ts +52 -0
  90. package/dist/simulation/scenarios/latent-space/neural-augmentation.d.ts.map +1 -0
  91. package/dist/simulation/scenarios/latent-space/neural-augmentation.js +472 -0
  92. package/dist/simulation/scenarios/latent-space/neural-augmentation.js.map +1 -0
  93. package/dist/simulation/scenarios/latent-space/quantum-hybrid.d.ts +53 -0
  94. package/dist/simulation/scenarios/latent-space/quantum-hybrid.d.ts.map +1 -0
  95. package/dist/simulation/scenarios/latent-space/quantum-hybrid.js +391 -0
  96. package/dist/simulation/scenarios/latent-space/quantum-hybrid.js.map +1 -0
  97. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.d.ts +52 -0
  98. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.d.ts.map +1 -0
  99. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.js +514 -0
  100. package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.js.map +1 -0
  101. package/dist/simulation/scenarios/latent-space/traversal-optimization.d.ts +53 -0
  102. package/dist/simulation/scenarios/latent-space/traversal-optimization.d.ts.map +1 -0
  103. package/dist/simulation/scenarios/latent-space/traversal-optimization.js +595 -0
  104. package/dist/simulation/scenarios/latent-space/traversal-optimization.js.map +1 -0
  105. package/dist/simulation/scenarios/lean-agentic-swarm.d.ts +18 -0
  106. package/dist/simulation/scenarios/lean-agentic-swarm.d.ts.map +1 -0
  107. package/dist/simulation/scenarios/lean-agentic-swarm.js +132 -0
  108. package/dist/simulation/scenarios/lean-agentic-swarm.js.map +1 -0
  109. package/dist/simulation/scenarios/multi-agent-swarm.d.ts +17 -0
  110. package/dist/simulation/scenarios/multi-agent-swarm.d.ts.map +1 -0
  111. package/dist/simulation/scenarios/multi-agent-swarm.js +111 -0
  112. package/dist/simulation/scenarios/multi-agent-swarm.js.map +1 -0
  113. package/dist/simulation/scenarios/psycho-symbolic-reasoner.d.ts +23 -0
  114. package/dist/simulation/scenarios/psycho-symbolic-reasoner.d.ts.map +1 -0
  115. package/dist/simulation/scenarios/psycho-symbolic-reasoner.js +98 -0
  116. package/dist/simulation/scenarios/psycho-symbolic-reasoner.js.map +1 -0
  117. package/dist/simulation/scenarios/reflexion-learning.d.ts +16 -0
  118. package/dist/simulation/scenarios/reflexion-learning.d.ts.map +1 -0
  119. package/dist/simulation/scenarios/reflexion-learning.js +98 -0
  120. package/dist/simulation/scenarios/reflexion-learning.js.map +1 -0
  121. package/dist/simulation/scenarios/research-swarm.d.ts +24 -0
  122. package/dist/simulation/scenarios/research-swarm.d.ts.map +1 -0
  123. package/dist/simulation/scenarios/research-swarm.js +146 -0
  124. package/dist/simulation/scenarios/research-swarm.js.map +1 -0
  125. package/dist/simulation/scenarios/skill-evolution.d.ts +16 -0
  126. package/dist/simulation/scenarios/skill-evolution.d.ts.map +1 -0
  127. package/dist/simulation/scenarios/skill-evolution.js +109 -0
  128. package/dist/simulation/scenarios/skill-evolution.js.map +1 -0
  129. package/dist/simulation/scenarios/stock-market-emergence.d.ts +33 -0
  130. package/dist/simulation/scenarios/stock-market-emergence.d.ts.map +1 -0
  131. package/dist/simulation/scenarios/stock-market-emergence.js +246 -0
  132. package/dist/simulation/scenarios/stock-market-emergence.js.map +1 -0
  133. package/dist/simulation/scenarios/strange-loops.d.ts +18 -0
  134. package/dist/simulation/scenarios/strange-loops.d.ts.map +1 -0
  135. package/dist/simulation/scenarios/strange-loops.js +133 -0
  136. package/dist/simulation/scenarios/strange-loops.js.map +1 -0
  137. package/dist/simulation/scenarios/sublinear-solver.d.ts +22 -0
  138. package/dist/simulation/scenarios/sublinear-solver.d.ts.map +1 -0
  139. package/dist/simulation/scenarios/sublinear-solver.js +82 -0
  140. package/dist/simulation/scenarios/sublinear-solver.js.map +1 -0
  141. package/dist/simulation/scenarios/temporal-lead-solver.d.ts +23 -0
  142. package/dist/simulation/scenarios/temporal-lead-solver.d.ts.map +1 -0
  143. package/dist/simulation/scenarios/temporal-lead-solver.js +90 -0
  144. package/dist/simulation/scenarios/temporal-lead-solver.js.map +1 -0
  145. package/dist/simulation/scenarios/voting-system-consensus.d.ts +27 -0
  146. package/dist/simulation/scenarios/voting-system-consensus.d.ts.map +1 -0
  147. package/dist/simulation/scenarios/voting-system-consensus.js +175 -0
  148. package/dist/simulation/scenarios/voting-system-consensus.js.map +1 -0
  149. package/dist/simulation/types.d.ts +162 -0
  150. package/dist/simulation/types.d.ts.map +1 -0
  151. package/dist/simulation/types.js +5 -0
  152. package/dist/simulation/types.js.map +1 -0
  153. package/dist/simulation/utils/PerformanceOptimizer.d.ts +115 -0
  154. package/dist/simulation/utils/PerformanceOptimizer.d.ts.map +1 -0
  155. package/dist/simulation/utils/PerformanceOptimizer.js +223 -0
  156. package/dist/simulation/utils/PerformanceOptimizer.js.map +1 -0
  157. package/dist/src/backends/GraphBackend.d.ts +8 -8
  158. package/dist/src/backends/GraphBackend.d.ts.map +1 -1
  159. package/dist/src/backends/GraphBackend.js +15 -16
  160. package/dist/src/backends/GraphBackend.js.map +1 -1
  161. package/dist/src/backends/LearningBackend.d.ts +2 -2
  162. package/dist/src/backends/LearningBackend.d.ts.map +1 -1
  163. package/dist/src/backends/LearningBackend.js +10 -11
  164. package/dist/src/backends/LearningBackend.js.map +1 -1
  165. package/dist/src/backends/VectorBackend.d.ts +6 -31
  166. package/dist/src/backends/VectorBackend.d.ts.map +1 -1
  167. package/dist/src/backends/detector.d.ts +3 -25
  168. package/dist/src/backends/detector.d.ts.map +1 -1
  169. package/dist/src/backends/detector.js +15 -119
  170. package/dist/src/backends/detector.js.map +1 -1
  171. package/dist/src/backends/factory.d.ts +32 -16
  172. package/dist/src/backends/factory.d.ts.map +1 -1
  173. package/dist/src/backends/factory.js +70 -133
  174. package/dist/src/backends/factory.js.map +1 -1
  175. package/dist/src/backends/graph/GraphDatabaseAdapter.d.ts +1 -1
  176. package/dist/src/backends/graph/GraphDatabaseAdapter.d.ts.map +1 -1
  177. package/dist/src/backends/graph/GraphDatabaseAdapter.js +1 -5
  178. package/dist/src/backends/graph/GraphDatabaseAdapter.js.map +1 -1
  179. package/dist/src/backends/hnswlib/HNSWLibBackend.d.ts +2 -2
  180. package/dist/src/backends/hnswlib/HNSWLibBackend.d.ts.map +1 -1
  181. package/dist/src/backends/hnswlib/HNSWLibBackend.js +13 -49
  182. package/dist/src/backends/hnswlib/HNSWLibBackend.js.map +1 -1
  183. package/dist/src/backends/index.d.ts +3 -25
  184. package/dist/src/backends/index.d.ts.map +1 -1
  185. package/dist/src/backends/index.js +1 -23
  186. package/dist/src/backends/index.js.map +1 -1
  187. package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts +93 -0
  188. package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts.map +1 -0
  189. package/dist/src/backends/ruvector/GuardedVectorBackend.js +182 -0
  190. package/dist/src/backends/ruvector/GuardedVectorBackend.js.map +1 -0
  191. package/dist/src/backends/ruvector/RuVectorBackend.d.ts +16 -187
  192. package/dist/src/backends/ruvector/RuVectorBackend.d.ts.map +1 -1
  193. package/dist/src/backends/ruvector/RuVectorBackend.js +94 -576
  194. package/dist/src/backends/ruvector/RuVectorBackend.js.map +1 -1
  195. package/dist/src/backends/ruvector/RuVectorLearning.d.ts +4 -0
  196. package/dist/src/backends/ruvector/RuVectorLearning.d.ts.map +1 -1
  197. package/dist/src/backends/ruvector/RuVectorLearning.js +11 -10
  198. package/dist/src/backends/ruvector/RuVectorLearning.js.map +1 -1
  199. package/dist/src/benchmarks/wasm-vector-benchmark.d.ts +10 -0
  200. package/dist/src/benchmarks/wasm-vector-benchmark.d.ts.map +1 -0
  201. package/dist/src/benchmarks/wasm-vector-benchmark.js +196 -0
  202. package/dist/src/benchmarks/wasm-vector-benchmark.js.map +1 -0
  203. package/dist/src/browser/AdvancedFeatures.d.ts.map +1 -1
  204. package/dist/src/browser/AdvancedFeatures.js +10 -3
  205. package/dist/src/browser/AdvancedFeatures.js.map +1 -1
  206. package/dist/src/browser/AttentionBrowser.d.ts.map +1 -1
  207. package/dist/src/browser/AttentionBrowser.js +12 -5
  208. package/dist/src/browser/AttentionBrowser.js.map +1 -1
  209. package/dist/src/browser/HNSWIndex.d.ts +1 -31
  210. package/dist/src/browser/HNSWIndex.d.ts.map +1 -1
  211. package/dist/src/browser/HNSWIndex.js +18 -136
  212. package/dist/src/browser/HNSWIndex.js.map +1 -1
  213. package/dist/src/browser/ProductQuantization.d.ts.map +1 -1
  214. package/dist/src/browser/ProductQuantization.js +1 -0
  215. package/dist/src/browser/ProductQuantization.js.map +1 -1
  216. package/dist/src/browser/index.d.ts +3 -3
  217. package/dist/src/browser/index.d.ts.map +1 -1
  218. package/dist/src/browser/index.js +1 -2
  219. package/dist/src/browser/index.js.map +1 -1
  220. package/dist/src/cli/agentdb-cli.d.ts +2 -16
  221. package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
  222. package/dist/src/cli/agentdb-cli.js +216 -853
  223. package/dist/src/cli/agentdb-cli.js.map +1 -1
  224. package/dist/src/cli/commands/attention.js +3 -3
  225. package/dist/src/cli/commands/attention.js.map +1 -1
  226. package/dist/src/cli/commands/doctor.d.ts +0 -2
  227. package/dist/src/cli/commands/doctor.d.ts.map +1 -1
  228. package/dist/src/cli/commands/doctor.js +1 -106
  229. package/dist/src/cli/commands/doctor.js.map +1 -1
  230. package/dist/src/cli/commands/init.d.ts +1 -2
  231. package/dist/src/cli/commands/init.d.ts.map +1 -1
  232. package/dist/src/cli/commands/init.js +7 -30
  233. package/dist/src/cli/commands/init.js.map +1 -1
  234. package/dist/src/cli/commands/install-embeddings.d.ts.map +1 -1
  235. package/dist/src/cli/commands/install-embeddings.js.map +1 -1
  236. package/dist/src/cli/commands/migrate.d.ts +0 -15
  237. package/dist/src/cli/commands/migrate.d.ts.map +1 -1
  238. package/dist/src/cli/commands/migrate.js +5 -174
  239. package/dist/src/cli/commands/migrate.js.map +1 -1
  240. package/dist/src/cli/commands/simulate-report.js.map +1 -1
  241. package/dist/src/cli/commands/simulate-wizard.js.map +1 -1
  242. package/dist/src/cli/commands/simulate.d.ts +7 -0
  243. package/dist/src/cli/commands/simulate.d.ts.map +1 -0
  244. package/dist/src/cli/commands/simulate.js +100 -0
  245. package/dist/src/cli/commands/simulate.js.map +1 -0
  246. package/dist/src/cli/commands/status.js +1 -5
  247. package/dist/src/cli/commands/status.js.map +1 -1
  248. package/dist/src/cli/lib/attention-config.d.ts +2 -2
  249. package/dist/src/cli/lib/attention-config.d.ts.map +1 -1
  250. package/dist/src/cli/lib/attention-config.js +1 -2
  251. package/dist/src/cli/lib/attention-config.js.map +1 -1
  252. package/dist/src/cli/lib/config-manager.d.ts +110 -0
  253. package/dist/src/cli/lib/config-manager.d.ts.map +1 -0
  254. package/dist/src/cli/lib/config-manager.js +512 -0
  255. package/dist/src/cli/lib/config-manager.js.map +1 -0
  256. package/dist/src/cli/lib/config-validator.d.ts +1 -1
  257. package/dist/src/cli/lib/config-validator.d.ts.map +1 -1
  258. package/dist/src/cli/lib/health-monitor.d.ts +149 -0
  259. package/dist/src/cli/lib/health-monitor.d.ts.map +1 -0
  260. package/dist/src/cli/lib/health-monitor.js +380 -0
  261. package/dist/src/cli/lib/health-monitor.js.map +1 -0
  262. package/dist/src/cli/lib/history-tracker.d.ts +103 -0
  263. package/dist/src/cli/lib/history-tracker.d.ts.map +1 -0
  264. package/dist/src/cli/lib/history-tracker.js +352 -0
  265. package/dist/src/cli/lib/history-tracker.js.map +1 -0
  266. package/dist/src/cli/lib/report-store.d.ts +1 -2
  267. package/dist/src/cli/lib/report-store.d.ts.map +1 -1
  268. package/dist/src/cli/lib/report-store.js +65 -87
  269. package/dist/src/cli/lib/report-store.js.map +1 -1
  270. package/dist/src/cli/lib/simulation-registry.d.ts +1 -1
  271. package/dist/src/cli/lib/simulation-registry.d.ts.map +1 -1
  272. package/dist/src/cli/lib/simulation-registry.js +0 -1
  273. package/dist/src/cli/lib/simulation-registry.js.map +1 -1
  274. package/dist/src/cli/lib/simulation-runner.d.ts +4 -41
  275. package/dist/src/cli/lib/simulation-runner.d.ts.map +1 -1
  276. package/dist/src/cli/lib/simulation-runner.js +6 -251
  277. package/dist/src/cli/lib/simulation-runner.js.map +1 -1
  278. package/dist/src/controllers/AttentionService.d.ts.map +1 -1
  279. package/dist/src/controllers/AttentionService.js +5 -3
  280. package/dist/src/controllers/AttentionService.js.map +1 -1
  281. package/dist/src/controllers/CausalMemoryGraph.d.ts +8 -33
  282. package/dist/src/controllers/CausalMemoryGraph.d.ts.map +1 -1
  283. package/dist/src/controllers/CausalMemoryGraph.js +16 -93
  284. package/dist/src/controllers/CausalMemoryGraph.js.map +1 -1
  285. package/dist/src/controllers/CausalRecall.d.ts +3 -6
  286. package/dist/src/controllers/CausalRecall.d.ts.map +1 -1
  287. package/dist/src/controllers/CausalRecall.js +8 -14
  288. package/dist/src/controllers/CausalRecall.js.map +1 -1
  289. package/dist/src/controllers/ContextSynthesizer.d.ts +1 -1
  290. package/dist/src/controllers/ContextSynthesizer.d.ts.map +1 -1
  291. package/dist/src/controllers/EmbeddingService.d.ts.map +1 -1
  292. package/dist/src/controllers/EmbeddingService.js +3 -10
  293. package/dist/src/controllers/EmbeddingService.js.map +1 -1
  294. package/dist/src/controllers/EnhancedEmbeddingService.d.ts +0 -4
  295. package/dist/src/controllers/EnhancedEmbeddingService.d.ts.map +1 -1
  296. package/dist/src/controllers/EnhancedEmbeddingService.js +3 -10
  297. package/dist/src/controllers/EnhancedEmbeddingService.js.map +1 -1
  298. package/dist/src/controllers/ExplainableRecall.d.ts +6 -5
  299. package/dist/src/controllers/ExplainableRecall.d.ts.map +1 -1
  300. package/dist/src/controllers/ExplainableRecall.js +13 -21
  301. package/dist/src/controllers/ExplainableRecall.js.map +1 -1
  302. package/dist/src/controllers/HNSWIndex.d.ts +7 -24
  303. package/dist/src/controllers/HNSWIndex.d.ts.map +1 -1
  304. package/dist/src/controllers/HNSWIndex.js +10 -89
  305. package/dist/src/controllers/HNSWIndex.js.map +1 -1
  306. package/dist/src/controllers/LearningSystem.d.ts +10 -106
  307. package/dist/src/controllers/LearningSystem.d.ts.map +1 -1
  308. package/dist/src/controllers/LearningSystem.js +14 -39
  309. package/dist/src/controllers/LearningSystem.js.map +1 -1
  310. package/dist/src/controllers/MMRDiversityRanker.d.ts +1 -1
  311. package/dist/src/controllers/MMRDiversityRanker.d.ts.map +1 -1
  312. package/dist/src/controllers/MetadataFilter.d.ts +3 -3
  313. package/dist/src/controllers/MetadataFilter.d.ts.map +1 -1
  314. package/dist/src/controllers/MetadataFilter.js +6 -9
  315. package/dist/src/controllers/MetadataFilter.js.map +1 -1
  316. package/dist/src/controllers/NightlyLearner.d.ts +4 -9
  317. package/dist/src/controllers/NightlyLearner.d.ts.map +1 -1
  318. package/dist/src/controllers/NightlyLearner.js +9 -28
  319. package/dist/src/controllers/NightlyLearner.js.map +1 -1
  320. package/dist/src/controllers/QUICClient.d.ts +2 -50
  321. package/dist/src/controllers/QUICClient.d.ts.map +1 -1
  322. package/dist/src/controllers/QUICClient.js +3 -193
  323. package/dist/src/controllers/QUICClient.js.map +1 -1
  324. package/dist/src/controllers/QUICServer.d.ts +4 -4
  325. package/dist/src/controllers/QUICServer.d.ts.map +1 -1
  326. package/dist/src/controllers/QUICServer.js +14 -22
  327. package/dist/src/controllers/QUICServer.js.map +1 -1
  328. package/dist/src/controllers/ReasoningBank.d.ts +4 -14
  329. package/dist/src/controllers/ReasoningBank.d.ts.map +1 -1
  330. package/dist/src/controllers/ReasoningBank.js +46 -59
  331. package/dist/src/controllers/ReasoningBank.js.map +1 -1
  332. package/dist/src/controllers/ReflexionMemory.d.ts +7 -80
  333. package/dist/src/controllers/ReflexionMemory.d.ts.map +1 -1
  334. package/dist/src/controllers/ReflexionMemory.js +214 -372
  335. package/dist/src/controllers/ReflexionMemory.js.map +1 -1
  336. package/dist/src/controllers/SkillLibrary.d.ts +7 -37
  337. package/dist/src/controllers/SkillLibrary.d.ts.map +1 -1
  338. package/dist/src/controllers/SkillLibrary.js +96 -212
  339. package/dist/src/controllers/SkillLibrary.js.map +1 -1
  340. package/dist/src/controllers/SyncCoordinator.d.ts +3 -2
  341. package/dist/src/controllers/SyncCoordinator.d.ts.map +1 -1
  342. package/dist/src/controllers/SyncCoordinator.js +5 -117
  343. package/dist/src/controllers/SyncCoordinator.js.map +1 -1
  344. package/dist/src/controllers/WASMVectorSearch.d.ts +9 -20
  345. package/dist/src/controllers/WASMVectorSearch.d.ts.map +1 -1
  346. package/dist/src/controllers/WASMVectorSearch.js +29 -154
  347. package/dist/src/controllers/WASMVectorSearch.js.map +1 -1
  348. package/dist/src/controllers/frontier-index.d.ts +14 -0
  349. package/dist/src/controllers/frontier-index.d.ts.map +1 -0
  350. package/dist/src/controllers/frontier-index.js +10 -0
  351. package/dist/src/controllers/frontier-index.js.map +1 -0
  352. package/dist/src/controllers/index.d.ts +17 -8
  353. package/dist/src/controllers/index.d.ts.map +1 -1
  354. package/dist/src/controllers/index.js +12 -6
  355. package/dist/src/controllers/index.js.map +1 -1
  356. package/dist/src/core/AgentDB.d.ts +25 -57
  357. package/dist/src/core/AgentDB.d.ts.map +1 -1
  358. package/dist/src/core/AgentDB.js +115 -137
  359. package/dist/src/core/AgentDB.js.map +1 -1
  360. package/dist/src/db-fallback.d.ts +1 -10
  361. package/dist/src/db-fallback.d.ts.map +1 -1
  362. package/dist/src/db-fallback.js +4 -171
  363. package/dist/src/db-fallback.js.map +1 -1
  364. package/dist/src/db-test.d.ts +13 -0
  365. package/dist/src/db-test.d.ts.map +1 -0
  366. package/dist/src/db-test.js +55 -0
  367. package/dist/src/db-test.js.map +1 -0
  368. package/dist/src/db-unified.d.ts +76 -0
  369. package/dist/src/db-unified.d.ts.map +1 -0
  370. package/dist/src/db-unified.js +279 -0
  371. package/dist/src/db-unified.js.map +1 -0
  372. package/dist/src/examples/quic-sync-example.d.ts +9 -0
  373. package/dist/src/examples/quic-sync-example.d.ts.map +1 -0
  374. package/dist/src/examples/quic-sync-example.js +169 -0
  375. package/dist/src/examples/quic-sync-example.js.map +1 -0
  376. package/dist/src/examples/wasm-vector-usage.d.ts +12 -0
  377. package/dist/src/examples/wasm-vector-usage.d.ts.map +1 -0
  378. package/dist/src/examples/wasm-vector-usage.js +190 -0
  379. package/dist/src/examples/wasm-vector-usage.js.map +1 -0
  380. package/dist/src/index.d.ts +12 -38
  381. package/dist/src/index.d.ts.map +1 -1
  382. package/dist/src/index.js +11 -46
  383. package/dist/src/index.js.map +1 -1
  384. package/dist/src/mcp/agentdb-mcp-server.js +63 -219
  385. package/dist/src/mcp/agentdb-mcp-server.js.map +1 -1
  386. package/dist/src/mcp/learning-tools-handlers.d.ts +16 -0
  387. package/dist/src/mcp/learning-tools-handlers.d.ts.map +1 -0
  388. package/dist/src/mcp/learning-tools-handlers.js +105 -0
  389. package/dist/src/mcp/learning-tools-handlers.js.map +1 -0
  390. package/dist/src/optimizations/BatchOperations.d.ts +5 -52
  391. package/dist/src/optimizations/BatchOperations.d.ts.map +1 -1
  392. package/dist/src/optimizations/BatchOperations.js +33 -186
  393. package/dist/src/optimizations/BatchOperations.js.map +1 -1
  394. package/dist/src/optimizations/QueryOptimizer.d.ts +4 -4
  395. package/dist/src/optimizations/QueryOptimizer.d.ts.map +1 -1
  396. package/dist/src/optimizations/QueryOptimizer.js +1 -3
  397. package/dist/src/optimizations/QueryOptimizer.js.map +1 -1
  398. package/dist/src/optimizations/ToolCache.d.ts +4 -4
  399. package/dist/src/optimizations/ToolCache.d.ts.map +1 -1
  400. package/dist/src/optimizations/ToolCache.js.map +1 -1
  401. package/dist/src/optimizations/index.d.ts +1 -1
  402. package/dist/src/optimizations/index.d.ts.map +1 -1
  403. package/dist/src/security/AttestationLog.d.ts +70 -0
  404. package/dist/src/security/AttestationLog.d.ts.map +1 -0
  405. package/dist/src/security/AttestationLog.js +174 -0
  406. package/dist/src/security/AttestationLog.js.map +1 -0
  407. package/dist/src/security/MutationGuard.d.ts +83 -0
  408. package/dist/src/security/MutationGuard.d.ts.map +1 -0
  409. package/dist/src/security/MutationGuard.js +379 -0
  410. package/dist/src/security/MutationGuard.js.map +1 -0
  411. package/dist/src/security/index.d.ts +15 -0
  412. package/dist/src/security/index.d.ts.map +1 -0
  413. package/dist/src/security/index.js +18 -0
  414. package/dist/src/security/index.js.map +1 -0
  415. package/dist/src/security/input-validation.d.ts +12 -12
  416. package/dist/src/security/input-validation.d.ts.map +1 -1
  417. package/dist/src/security/input-validation.js +0 -1
  418. package/dist/src/security/input-validation.js.map +1 -1
  419. package/dist/src/security/limits.d.ts +150 -0
  420. package/dist/src/security/limits.d.ts.map +1 -0
  421. package/dist/src/security/limits.js +288 -0
  422. package/dist/src/security/limits.js.map +1 -0
  423. package/dist/src/security/path-security.d.ts +100 -0
  424. package/dist/src/security/path-security.d.ts.map +1 -0
  425. package/dist/src/security/path-security.js +337 -0
  426. package/dist/src/security/path-security.js.map +1 -0
  427. package/dist/src/security/validation.d.ts +95 -0
  428. package/dist/src/security/validation.d.ts.map +1 -0
  429. package/dist/src/security/validation.js +315 -0
  430. package/dist/src/security/validation.js.map +1 -0
  431. package/dist/src/services/GraphTransformerService.d.ts +79 -0
  432. package/dist/src/services/GraphTransformerService.d.ts.map +1 -0
  433. package/dist/src/services/GraphTransformerService.js +331 -0
  434. package/dist/src/services/GraphTransformerService.js.map +1 -0
  435. package/dist/src/services/LLMRouter.d.ts +7 -61
  436. package/dist/src/services/LLMRouter.d.ts.map +1 -1
  437. package/dist/src/services/LLMRouter.js +25 -295
  438. package/dist/src/services/LLMRouter.js.map +1 -1
  439. package/dist/src/services/SemanticRouter.d.ts +78 -0
  440. package/dist/src/services/SemanticRouter.d.ts.map +1 -0
  441. package/dist/src/services/SemanticRouter.js +149 -0
  442. package/dist/src/services/SemanticRouter.js.map +1 -0
  443. package/dist/src/services/SonaTrajectoryService.d.ts +100 -0
  444. package/dist/src/services/SonaTrajectoryService.d.ts.map +1 -0
  445. package/dist/src/services/SonaTrajectoryService.js +231 -0
  446. package/dist/src/services/SonaTrajectoryService.js.map +1 -0
  447. package/dist/src/types/attention.d.ts +249 -0
  448. package/dist/src/types/attention.d.ts.map +1 -0
  449. package/dist/src/types/attention.js +43 -0
  450. package/dist/src/types/attention.js.map +1 -0
  451. package/dist/src/types/quic.d.ts +518 -0
  452. package/dist/src/types/quic.d.ts.map +1 -0
  453. package/dist/src/types/quic.js +272 -0
  454. package/dist/src/types/quic.js.map +1 -0
  455. package/dist/src/utils/LegacyAttentionAdapter.d.ts +93 -0
  456. package/dist/src/utils/LegacyAttentionAdapter.d.ts.map +1 -0
  457. package/dist/src/utils/LegacyAttentionAdapter.js +241 -0
  458. package/dist/src/utils/LegacyAttentionAdapter.js.map +1 -0
  459. package/dist/src/utils/attention-metrics.d.ts +76 -0
  460. package/dist/src/utils/attention-metrics.d.ts.map +1 -0
  461. package/dist/src/utils/attention-metrics.js +178 -0
  462. package/dist/src/utils/attention-metrics.js.map +1 -0
  463. package/dist/src/utils/vector-math.d.ts +29 -0
  464. package/dist/src/utils/vector-math.d.ts.map +1 -0
  465. package/dist/src/utils/vector-math.js +66 -0
  466. package/dist/src/utils/vector-math.js.map +1 -0
  467. package/examples/README.md +105 -0
  468. package/examples/browser/attention-demo.html +499 -0
  469. package/examples/browser/flash-consolidation.html +598 -0
  470. package/examples/browser/hyperbolic-hierarchy.html +497 -0
  471. package/examples/quickstart.js +43 -0
  472. package/package.json +53 -56
  473. package/simulation/.claude-flow/metrics/agent-metrics.json +1 -0
  474. package/simulation/.claude-flow/metrics/performance.json +87 -0
  475. package/simulation/.claude-flow/metrics/task-metrics.json +10 -0
  476. package/simulation/COMPLETION-STATUS.md +139 -0
  477. package/simulation/FINAL-RESULTS.md +414 -0
  478. package/simulation/FINAL-STATUS.md +281 -0
  479. package/simulation/INTEGRATION-COMPLETE.md +452 -0
  480. package/simulation/MIGRATION-STATUS.md +231 -0
  481. package/simulation/OPTIMIZATION-RESULTS.md +397 -0
  482. package/simulation/PHASE1-COMPLETE.md +163 -0
  483. package/simulation/README.md +848 -0
  484. package/simulation/SIMULATION-RESULTS.md +239 -0
  485. package/simulation/cli.ts +78 -0
  486. package/simulation/configs/default.json +37 -0
  487. package/simulation/data/advanced/aidefence.graph +0 -0
  488. package/simulation/data/advanced/bmssp.graph +0 -0
  489. package/simulation/data/advanced/consciousness.graph +0 -0
  490. package/simulation/data/advanced/goalie.graph +0 -0
  491. package/simulation/data/advanced/psycho-symbolic.graph +0 -0
  492. package/simulation/data/advanced/research-swarm.graph +0 -0
  493. package/simulation/data/advanced/sublinear.graph +0 -0
  494. package/simulation/data/advanced/temporal.graph +0 -0
  495. package/simulation/data/causal.graph +0 -0
  496. package/simulation/data/graph-traversal.graph +0 -0
  497. package/simulation/data/lean-agentic.graph +0 -0
  498. package/simulation/data/reflexion.graph +0 -0
  499. package/simulation/data/skills.graph +0 -0
  500. package/simulation/data/stock-market.graph +0 -0
  501. package/simulation/data/strange-loops.graph +0 -0
  502. package/simulation/data/swarm.graph +0 -0
  503. package/simulation/data/voting-consensus.graph +0 -0
  504. package/simulation/docs/CLI-INTEGRATION-PLAN.md +1038 -0
  505. package/simulation/docs/COMPREHENSIVE-LATENT-SPACE-COMPLETION.md +354 -0
  506. package/simulation/docs/DOCUMENTATION-INDEX.md +226 -0
  507. package/simulation/docs/IMPLEMENTATION-COMPLETE.md +521 -0
  508. package/simulation/docs/OPTIMIZATION-SUMMARY.md +279 -0
  509. package/simulation/docs/README.md +229 -0
  510. package/simulation/docs/SWARM-5-INTEGRATION-SUMMARY.md +528 -0
  511. package/simulation/docs/TESTING-SUMMARY.md +304 -0
  512. package/simulation/docs/architecture/EXTENSION-API.md +868 -0
  513. package/simulation/docs/architecture/INTEGRATION-ARCHITECTURE.md +1138 -0
  514. package/simulation/docs/architecture/OPTIMIZATION-STRATEGY.md +778 -0
  515. package/simulation/docs/architecture/SIMULATION-ARCHITECTURE.md +892 -0
  516. package/simulation/docs/guides/CLI-REFERENCE.md +896 -0
  517. package/simulation/docs/guides/CUSTOM-SIMULATIONS.md +931 -0
  518. package/simulation/docs/guides/DEPLOYMENT.md +832 -0
  519. package/simulation/docs/guides/IMPLEMENTATION-SUMMARY.md +544 -0
  520. package/simulation/docs/guides/MIGRATION-GUIDE.md +591 -0
  521. package/simulation/docs/guides/QUICK-START.md +361 -0
  522. package/simulation/docs/guides/README.md +736 -0
  523. package/simulation/docs/guides/TROUBLESHOOTING.md +817 -0
  524. package/simulation/docs/guides/WIZARD-GUIDE.md +869 -0
  525. package/simulation/docs/reports/latent-space/MASTER-SYNTHESIS.md +345 -0
  526. package/simulation/docs/reports/latent-space/README.md +132 -0
  527. package/simulation/docs/reports/latent-space/attention-analysis-RESULTS.md +238 -0
  528. package/simulation/docs/reports/latent-space/clustering-analysis-RESULTS.md +210 -0
  529. package/simulation/docs/reports/latent-space/hnsw-exploration-RESULTS.md +332 -0
  530. package/simulation/docs/reports/latent-space/hypergraph-exploration-RESULTS.md +37 -0
  531. package/simulation/docs/reports/latent-space/neural-augmentation-RESULTS.md +69 -0
  532. package/simulation/docs/reports/latent-space/quantum-hybrid-RESULTS.md +91 -0
  533. package/simulation/docs/reports/latent-space/self-organizing-hnsw-RESULTS.md +51 -0
  534. package/simulation/docs/reports/latent-space/traversal-optimization-RESULTS.md +238 -0
  535. package/simulation/reports/README.md +397 -0
  536. package/simulation/reports/advanced-simulations-performance.md +1241 -0
  537. package/simulation/reports/aidefence-integration-2025-11-30T01-36-53-486Z.json +30 -0
  538. package/simulation/reports/architecture-analysis.md +1396 -0
  539. package/simulation/reports/basic-scenarios-performance.md +1840 -0
  540. package/simulation/reports/bmssp-integration-2025-11-30T01-36-27-193Z.json +30 -0
  541. package/simulation/reports/bmssp-integration-2025-11-30T03-38-12-887Z.json +30 -0
  542. package/simulation/reports/causal-reasoning-2025-11-29T23-35-21-795Z.json +36 -0
  543. package/simulation/reports/causal-reasoning-2025-11-30T00-58-42-862Z.json +30 -0
  544. package/simulation/reports/causal-reasoning-2025-11-30T00-59-12-546Z.json +40 -0
  545. package/simulation/reports/consciousness-explorer-2025-11-30T01-36-51-269Z.json +31 -0
  546. package/simulation/reports/core-benchmarks.md +727 -0
  547. package/simulation/reports/goalie-integration-2025-11-30T01-36-52-377Z.json +30 -0
  548. package/simulation/reports/graph-traversal-2025-11-29T23-35-35-279Z.json +78 -0
  549. package/simulation/reports/graph-traversal-2025-11-29T23-37-36-697Z.json +30 -0
  550. package/simulation/reports/graph-traversal-2025-11-30T01-03-59-716Z.json +30 -0
  551. package/simulation/reports/graph-traversal-2025-11-30T01-05-10-984Z.json +30 -0
  552. package/simulation/reports/graph-traversal-2025-11-30T01-06-16-334Z.json +30 -0
  553. package/simulation/reports/graph-traversal-2025-11-30T01-06-53-312Z.json +30 -0
  554. package/simulation/reports/graph-traversal-2025-11-30T01-07-51-075Z.json +24 -0
  555. package/simulation/reports/graph-traversal-2025-11-30T01-08-22-179Z.json +42 -0
  556. package/simulation/reports/lean-agentic-swarm-2025-11-29T23-37-23-804Z.json +148 -0
  557. package/simulation/reports/lean-agentic-swarm-2025-11-30T01-31-24-401Z.json +31 -0
  558. package/simulation/reports/lean-agentic-swarm-2025-11-30T03-38-01-470Z.json +31 -0
  559. package/simulation/reports/multi-agent-swarm-2025-11-29T23-35-28-093Z.json +78 -0
  560. package/simulation/reports/multi-agent-swarm-2025-11-30T01-03-54-062Z.json +42 -0
  561. package/simulation/reports/multi-agent-swarm-2025-11-30T01-05-06-092Z.json +42 -0
  562. package/simulation/reports/psycho-symbolic-reasoner-2025-11-30T01-36-50-180Z.json +30 -0
  563. package/simulation/reports/quality-metrics.md +727 -0
  564. package/simulation/reports/reflexion-learning-2025-11-29T23-35-09-774Z.json +48 -0
  565. package/simulation/reports/reflexion-learning-2025-11-29T23-37-16-934Z.json +36 -0
  566. package/simulation/reports/reflexion-learning-2025-11-30T00-07-49-259Z.json +30 -0
  567. package/simulation/reports/reflexion-learning-2025-11-30T00-09-29-319Z.json +51 -0
  568. package/simulation/reports/reflexion-learning-2025-11-30T00-28-37-659Z.json +51 -0
  569. package/simulation/reports/reflexion-learning-2025-11-30T01-31-30-690Z.json +29 -0
  570. package/simulation/reports/reflexion-learning-2025-11-30T03-38-06-937Z.json +29 -0
  571. package/simulation/reports/research-foundations.md +2004 -0
  572. package/simulation/reports/research-swarm-2025-11-30T01-36-54-647Z.json +30 -0
  573. package/simulation/reports/scalability-deployment.md +2404 -0
  574. package/simulation/reports/skill-evolution-2025-11-29T23-35-15-945Z.json +36 -0
  575. package/simulation/reports/skill-evolution-2025-11-30T01-03-17-995Z.json +30 -0
  576. package/simulation/reports/skill-evolution-2025-11-30T01-03-48-441Z.json +30 -0
  577. package/simulation/reports/skill-evolution-2025-11-30T01-05-00-554Z.json +30 -0
  578. package/simulation/reports/skill-evolution-2025-11-30T01-06-11-436Z.json +30 -0
  579. package/simulation/reports/skill-evolution-2025-11-30T01-06-51-979Z.json +30 -0
  580. package/simulation/reports/skill-evolution-2025-11-30T01-07-32-695Z.json +40 -0
  581. package/simulation/reports/stock-market-emergence-2025-11-30T00-11-43-865Z.json +56 -0
  582. package/simulation/reports/stock-market-emergence-2025-11-30T00-28-57-495Z.json +56 -0
  583. package/simulation/reports/strange-loops-2025-11-29T23-37-30-621Z.json +78 -0
  584. package/simulation/reports/strange-loops-2025-11-30T00-07-55-415Z.json +30 -0
  585. package/simulation/reports/strange-loops-2025-11-30T00-09-35-133Z.json +30 -0
  586. package/simulation/reports/strange-loops-2025-11-30T00-48-50-744Z.json +24 -0
  587. package/simulation/reports/strange-loops-2025-11-30T00-54-48-044Z.json +24 -0
  588. package/simulation/reports/strange-loops-2025-11-30T00-57-27-633Z.json +24 -0
  589. package/simulation/reports/strange-loops-2025-11-30T00-57-59-135Z.json +42 -0
  590. package/simulation/reports/sublinear-solver-2025-11-30T01-36-33-134Z.json +30 -0
  591. package/simulation/reports/temporal-lead-solver-2025-11-30T01-36-38-628Z.json +30 -0
  592. package/simulation/reports/use-cases-applications.md +2212 -0
  593. package/simulation/reports/voting-system-consensus-2025-11-30T00-11-37-199Z.json +58 -0
  594. package/simulation/reports/voting-system-consensus-2025-11-30T00-28-47-735Z.json +58 -0
  595. package/simulation/runner.ts +300 -0
  596. package/simulation/scenarios/README-advanced/aidefence-integration.md +63 -0
  597. package/simulation/scenarios/README-advanced/bmssp-integration.md +58 -0
  598. package/simulation/scenarios/README-advanced/consciousness-explorer.md +53 -0
  599. package/simulation/scenarios/README-advanced/goalie-integration.md +61 -0
  600. package/simulation/scenarios/README-advanced/psycho-symbolic-reasoner.md +55 -0
  601. package/simulation/scenarios/README-advanced/research-swarm.md +63 -0
  602. package/simulation/scenarios/README-advanced/sublinear-solver.md +58 -0
  603. package/simulation/scenarios/README-advanced/temporal-lead-solver.md +55 -0
  604. package/simulation/scenarios/README-basic/causal-reasoning.md +39 -0
  605. package/simulation/scenarios/README-basic/graph-traversal.md +41 -0
  606. package/simulation/scenarios/README-basic/lean-agentic-swarm.md +122 -0
  607. package/simulation/scenarios/README-basic/multi-agent-swarm.md +34 -0
  608. package/simulation/scenarios/README-basic/reflexion-learning.md +41 -0
  609. package/simulation/scenarios/README-basic/skill-evolution.md +38 -0
  610. package/simulation/scenarios/README-basic/stock-market-emergence.md +28 -0
  611. package/simulation/scenarios/README-basic/strange-loops.md +36 -0
  612. package/simulation/scenarios/README-basic/voting-system-consensus.md +28 -0
  613. package/simulation/scenarios/README.md +438 -0
  614. package/simulation/scenarios/aidefence-integration.ts +165 -0
  615. package/simulation/scenarios/bmssp-integration.ts +137 -0
  616. package/simulation/scenarios/causal-reasoning.ts +143 -0
  617. package/simulation/scenarios/consciousness-explorer.ts +139 -0
  618. package/simulation/scenarios/domain-examples/.claude-flow/metrics/agent-metrics.json +1 -0
  619. package/simulation/scenarios/domain-examples/.claude-flow/metrics/performance.json +87 -0
  620. package/simulation/scenarios/domain-examples/.claude-flow/metrics/task-metrics.json +10 -0
  621. package/simulation/scenarios/domain-examples/README.md +525 -0
  622. package/simulation/scenarios/domain-examples/e-commerce-recommendations.ts +220 -0
  623. package/simulation/scenarios/domain-examples/index.ts +81 -0
  624. package/simulation/scenarios/domain-examples/iot-sensor-networks.ts +290 -0
  625. package/simulation/scenarios/domain-examples/medical-imaging.ts +181 -0
  626. package/simulation/scenarios/domain-examples/robotics-navigation.ts +214 -0
  627. package/simulation/scenarios/domain-examples/scientific-research.ts +250 -0
  628. package/simulation/scenarios/domain-examples/trading-systems.ts +138 -0
  629. package/simulation/scenarios/goalie-integration.ts +161 -0
  630. package/simulation/scenarios/graph-traversal.ts +129 -0
  631. package/simulation/scenarios/latent-space/OPTIMIZATION-COMPLETE.md +287 -0
  632. package/simulation/scenarios/latent-space/README-attention-analysis.md +170 -0
  633. package/simulation/scenarios/latent-space/README-clustering-analysis.md +239 -0
  634. package/simulation/scenarios/latent-space/README-hnsw-exploration.md +199 -0
  635. package/simulation/scenarios/latent-space/README-hypergraph-exploration.md +279 -0
  636. package/simulation/scenarios/latent-space/README-neural-augmentation.md +267 -0
  637. package/simulation/scenarios/latent-space/README-quantum-hybrid.md +276 -0
  638. package/simulation/scenarios/latent-space/README-self-organizing-hnsw.md +244 -0
  639. package/simulation/scenarios/latent-space/README-traversal-optimization.md +212 -0
  640. package/simulation/scenarios/latent-space/attention-analysis.ts +598 -0
  641. package/simulation/scenarios/latent-space/clustering-analysis.ts +796 -0
  642. package/simulation/scenarios/latent-space/hnsw-exploration.ts +526 -0
  643. package/simulation/scenarios/latent-space/hypergraph-exploration.ts +706 -0
  644. package/simulation/scenarios/latent-space/index.ts +47 -0
  645. package/simulation/scenarios/latent-space/neural-augmentation.ts +604 -0
  646. package/simulation/scenarios/latent-space/quantum-hybrid.ts +508 -0
  647. package/simulation/scenarios/latent-space/self-organizing-hnsw.ts +680 -0
  648. package/simulation/scenarios/latent-space/traversal-optimization.ts +782 -0
  649. package/simulation/scenarios/lean-agentic-swarm.ts +182 -0
  650. package/simulation/scenarios/multi-agent-swarm.ts +146 -0
  651. package/simulation/scenarios/psycho-symbolic-reasoner.ts +136 -0
  652. package/simulation/scenarios/reflexion-learning.ts +132 -0
  653. package/simulation/scenarios/research-swarm.ts +187 -0
  654. package/simulation/scenarios/skill-evolution.ts +135 -0
  655. package/simulation/scenarios/stock-market-emergence.ts +323 -0
  656. package/simulation/scenarios/strange-loops.ts +175 -0
  657. package/simulation/scenarios/sublinear-solver.ts +108 -0
  658. package/simulation/scenarios/temporal-lead-solver.ts +121 -0
  659. package/simulation/scenarios/voting-system-consensus.ts +251 -0
  660. package/simulation/tests/latent-space/attention-analysis.test.ts +204 -0
  661. package/simulation/tests/latent-space/clustering-analysis.test.ts +281 -0
  662. package/simulation/tests/latent-space/hnsw-exploration.test.ts +253 -0
  663. package/simulation/tests/latent-space/hypergraph-exploration.test.ts +295 -0
  664. package/simulation/tests/latent-space/neural-augmentation.test.ts +326 -0
  665. package/simulation/tests/latent-space/quantum-hybrid.test.ts +307 -0
  666. package/simulation/tests/latent-space/self-organizing-hnsw.test.ts +291 -0
  667. package/simulation/tests/latent-space/traversal-optimization.test.ts +261 -0
  668. package/simulation/types.ts +177 -0
  669. package/simulation/utils/PerformanceOptimizer.ts +269 -0
  670. package/src/backends/GraphBackend.ts +290 -0
  671. package/src/backends/LearningBackend.ts +210 -0
  672. package/src/backends/README.md +389 -0
  673. package/src/backends/VectorBackend.ts +147 -0
  674. package/src/backends/detector.ts +283 -0
  675. package/src/backends/factory.ts +279 -0
  676. package/src/backends/graph/GraphDatabaseAdapter.ts +334 -0
  677. package/src/backends/hnswlib/HNSWLibBackend.ts +419 -0
  678. package/src/backends/hnswlib/index.ts +7 -0
  679. package/src/backends/index.ts +32 -0
  680. package/src/backends/ruvector/GuardedVectorBackend.ts +219 -0
  681. package/src/backends/ruvector/RuVectorBackend.ts +343 -0
  682. package/src/backends/ruvector/RuVectorLearning.ts +254 -0
  683. package/src/backends/ruvector/index.ts +9 -0
  684. package/src/benchmarks/wasm-vector-benchmark.ts +250 -0
  685. package/src/browser/AdvancedFeatures.ts +565 -0
  686. package/src/browser/AttentionBrowser.ts +387 -0
  687. package/src/browser/HNSWIndex.ts +494 -0
  688. package/src/browser/ProductQuantization.ts +419 -0
  689. package/src/browser/index.ts +317 -0
  690. package/src/cli/agentdb-cli.ts +2712 -0
  691. package/src/cli/attention-cli-integration.ts +91 -0
  692. package/src/cli/commands/attention.ts +656 -0
  693. package/src/cli/commands/doctor.ts +322 -0
  694. package/src/cli/commands/init.ts +176 -0
  695. package/src/cli/commands/install-embeddings.ts +81 -0
  696. package/src/cli/commands/migrate.ts +545 -0
  697. package/src/cli/commands/simulate-custom.ts +232 -0
  698. package/src/cli/commands/simulate-report.ts +171 -0
  699. package/src/cli/commands/simulate-wizard.ts +379 -0
  700. package/src/cli/commands/simulate.ts +115 -0
  701. package/src/cli/commands/status.ts +156 -0
  702. package/src/cli/examples.sh +83 -0
  703. package/src/cli/lib/attention-config.ts +326 -0
  704. package/src/cli/lib/config-manager.ts +627 -0
  705. package/src/cli/lib/config-validator.ts +261 -0
  706. package/src/cli/lib/health-monitor.ts +513 -0
  707. package/src/cli/lib/help-formatter.ts +406 -0
  708. package/src/cli/lib/history-tracker.ts +503 -0
  709. package/src/cli/lib/report-generator.ts +455 -0
  710. package/src/cli/lib/report-store.ts +582 -0
  711. package/src/cli/lib/simulation-registry.ts +503 -0
  712. package/src/cli/lib/simulation-runner.ts +291 -0
  713. package/src/cli/tests/agentdb-cli.test.ts +58 -0
  714. package/src/cli/tests/attention-cli.test.ts +335 -0
  715. package/src/controllers/AttentionService.ts +770 -0
  716. package/src/controllers/CausalMemoryGraph.ts +773 -0
  717. package/src/controllers/CausalRecall.ts +484 -0
  718. package/src/controllers/ContextSynthesizer.ts +285 -0
  719. package/src/controllers/EmbeddingService.ts +161 -0
  720. package/src/controllers/EnhancedEmbeddingService.ts +143 -0
  721. package/src/controllers/ExplainableRecall.ts +746 -0
  722. package/src/controllers/HNSWIndex.ts +495 -0
  723. package/src/controllers/LearningSystem.ts +1270 -0
  724. package/src/controllers/MMRDiversityRanker.ts +187 -0
  725. package/src/controllers/MetadataFilter.ts +280 -0
  726. package/src/controllers/NightlyLearner.ts +647 -0
  727. package/src/controllers/QUICClient.ts +413 -0
  728. package/src/controllers/QUICServer.ts +498 -0
  729. package/src/controllers/ReasoningBank.ts +665 -0
  730. package/src/controllers/ReflexionMemory.ts +872 -0
  731. package/src/controllers/SkillLibrary.ts +795 -0
  732. package/src/controllers/SyncCoordinator.ts +597 -0
  733. package/src/controllers/WASMVectorSearch.ts +292 -0
  734. package/src/controllers/frontier-index.ts +35 -0
  735. package/src/controllers/index.ts +57 -0
  736. package/src/coordination/MultiDatabaseCoordinator.ts +1107 -0
  737. package/src/coordination/index.ts +24 -0
  738. package/src/core/AgentDB.ts +211 -0
  739. package/src/db-fallback.ts +296 -0
  740. package/src/db-test.ts +59 -0
  741. package/src/db-unified.ts +327 -0
  742. package/src/examples/quic-sync-example.ts +198 -0
  743. package/src/examples/wasm-vector-usage.ts +245 -0
  744. package/src/index.ts +69 -0
  745. package/src/mcp/agentdb-mcp-server.ts +2318 -0
  746. package/src/mcp/attention-mcp-integration.ts +145 -0
  747. package/src/mcp/attention-tools-handlers.ts +586 -0
  748. package/src/mcp/learning-tools-handlers.ts +106 -0
  749. package/src/optimizations/BatchOperations.ts +594 -0
  750. package/src/optimizations/QueryOptimizer.ts +297 -0
  751. package/src/optimizations/ToolCache.ts +355 -0
  752. package/src/optimizations/index.ts +11 -0
  753. package/src/schemas/frontier-schema.sql +378 -0
  754. package/src/schemas/schema.sql +382 -0
  755. package/src/security/AttestationLog.ts +252 -0
  756. package/src/security/MutationGuard.ts +420 -0
  757. package/src/security/index.ts +52 -0
  758. package/src/security/input-validation.ts +543 -0
  759. package/src/security/limits.ts +375 -0
  760. package/src/security/path-security.ts +436 -0
  761. package/src/security/validation.ts +556 -0
  762. package/src/services/GraphTransformerService.ts +389 -0
  763. package/src/services/LLMRouter.ts +380 -0
  764. package/src/services/SemanticRouter.ts +169 -0
  765. package/src/services/SonaTrajectoryService.ts +264 -0
  766. package/src/tests/attention-service.test.ts +492 -0
  767. package/src/tests/wasm-vector-search.test.ts +240 -0
  768. package/src/types/attention.ts +392 -0
  769. package/src/types/quic.ts +772 -0
  770. package/src/utils/LegacyAttentionAdapter.ts +393 -0
  771. package/src/utils/NodeIdMapper.ts +64 -0
  772. package/src/utils/attention-metrics.ts +253 -0
  773. package/src/utils/vector-math.ts +71 -0
  774. package/LICENSE +0 -21
  775. package/dist/src/backends/rvf/AdaptiveIndexTuner.d.ts +0 -175
  776. package/dist/src/backends/rvf/AdaptiveIndexTuner.d.ts.map +0 -1
  777. package/dist/src/backends/rvf/AdaptiveIndexTuner.js +0 -559
  778. package/dist/src/backends/rvf/AdaptiveIndexTuner.js.map +0 -1
  779. package/dist/src/backends/rvf/ContrastiveTrainer.d.ts +0 -148
  780. package/dist/src/backends/rvf/ContrastiveTrainer.d.ts.map +0 -1
  781. package/dist/src/backends/rvf/ContrastiveTrainer.js +0 -438
  782. package/dist/src/backends/rvf/ContrastiveTrainer.js.map +0 -1
  783. package/dist/src/backends/rvf/FederatedSessionManager.d.ts +0 -211
  784. package/dist/src/backends/rvf/FederatedSessionManager.d.ts.map +0 -1
  785. package/dist/src/backends/rvf/FederatedSessionManager.js +0 -389
  786. package/dist/src/backends/rvf/FederatedSessionManager.js.map +0 -1
  787. package/dist/src/backends/rvf/FilterBuilder.d.ts +0 -136
  788. package/dist/src/backends/rvf/FilterBuilder.d.ts.map +0 -1
  789. package/dist/src/backends/rvf/FilterBuilder.js +0 -157
  790. package/dist/src/backends/rvf/FilterBuilder.js.map +0 -1
  791. package/dist/src/backends/rvf/NativeAccelerator.d.ts +0 -140
  792. package/dist/src/backends/rvf/NativeAccelerator.d.ts.map +0 -1
  793. package/dist/src/backends/rvf/NativeAccelerator.js +0 -630
  794. package/dist/src/backends/rvf/NativeAccelerator.js.map +0 -1
  795. package/dist/src/backends/rvf/RvfBackend.d.ts +0 -194
  796. package/dist/src/backends/rvf/RvfBackend.d.ts.map +0 -1
  797. package/dist/src/backends/rvf/RvfBackend.js +0 -607
  798. package/dist/src/backends/rvf/RvfBackend.js.map +0 -1
  799. package/dist/src/backends/rvf/RvfSolver.d.ts +0 -175
  800. package/dist/src/backends/rvf/RvfSolver.d.ts.map +0 -1
  801. package/dist/src/backends/rvf/RvfSolver.js +0 -176
  802. package/dist/src/backends/rvf/RvfSolver.js.map +0 -1
  803. package/dist/src/backends/rvf/SelfLearningRvfBackend.d.ts +0 -143
  804. package/dist/src/backends/rvf/SelfLearningRvfBackend.d.ts.map +0 -1
  805. package/dist/src/backends/rvf/SelfLearningRvfBackend.js +0 -569
  806. package/dist/src/backends/rvf/SelfLearningRvfBackend.js.map +0 -1
  807. package/dist/src/backends/rvf/SemanticQueryRouter.d.ts +0 -128
  808. package/dist/src/backends/rvf/SemanticQueryRouter.d.ts.map +0 -1
  809. package/dist/src/backends/rvf/SemanticQueryRouter.js +0 -415
  810. package/dist/src/backends/rvf/SemanticQueryRouter.js.map +0 -1
  811. package/dist/src/backends/rvf/SimdFallbacks.d.ts +0 -25
  812. package/dist/src/backends/rvf/SimdFallbacks.d.ts.map +0 -1
  813. package/dist/src/backends/rvf/SimdFallbacks.js +0 -287
  814. package/dist/src/backends/rvf/SimdFallbacks.js.map +0 -1
  815. package/dist/src/backends/rvf/SolverBandit.d.ts +0 -100
  816. package/dist/src/backends/rvf/SolverBandit.d.ts.map +0 -1
  817. package/dist/src/backends/rvf/SolverBandit.js +0 -216
  818. package/dist/src/backends/rvf/SolverBandit.js.map +0 -1
  819. package/dist/src/backends/rvf/SonaLearningBackend.d.ts +0 -157
  820. package/dist/src/backends/rvf/SonaLearningBackend.d.ts.map +0 -1
  821. package/dist/src/backends/rvf/SonaLearningBackend.js +0 -283
  822. package/dist/src/backends/rvf/SonaLearningBackend.js.map +0 -1
  823. package/dist/src/backends/rvf/SqlJsRvfBackend.d.ts +0 -77
  824. package/dist/src/backends/rvf/SqlJsRvfBackend.d.ts.map +0 -1
  825. package/dist/src/backends/rvf/SqlJsRvfBackend.js +0 -382
  826. package/dist/src/backends/rvf/SqlJsRvfBackend.js.map +0 -1
  827. package/dist/src/backends/rvf/WasmStoreBridge.d.ts +0 -27
  828. package/dist/src/backends/rvf/WasmStoreBridge.d.ts.map +0 -1
  829. package/dist/src/backends/rvf/WasmStoreBridge.js +0 -87
  830. package/dist/src/backends/rvf/WasmStoreBridge.js.map +0 -1
  831. package/dist/src/backends/rvf/validation.d.ts +0 -20
  832. package/dist/src/backends/rvf/validation.d.ts.map +0 -1
  833. package/dist/src/backends/rvf/validation.js +0 -78
  834. package/dist/src/backends/rvf/validation.js.map +0 -1
  835. package/dist/src/benchmark/BenchmarkSuite.d.ts +0 -318
  836. package/dist/src/benchmark/BenchmarkSuite.d.ts.map +0 -1
  837. package/dist/src/benchmark/BenchmarkSuite.js +0 -986
  838. package/dist/src/benchmark/BenchmarkSuite.js.map +0 -1
  839. package/dist/src/benchmark/index.d.ts +0 -29
  840. package/dist/src/benchmark/index.d.ts.map +0 -1
  841. package/dist/src/benchmark/index.js +0 -39
  842. package/dist/src/benchmark/index.js.map +0 -1
  843. package/dist/src/cli/commands/hyperbolic.d.ts +0 -11
  844. package/dist/src/cli/commands/hyperbolic.d.ts.map +0 -1
  845. package/dist/src/cli/commands/hyperbolic.js +0 -428
  846. package/dist/src/cli/commands/hyperbolic.js.map +0 -1
  847. package/dist/src/cli/commands/learn.d.ts +0 -11
  848. package/dist/src/cli/commands/learn.d.ts.map +0 -1
  849. package/dist/src/cli/commands/learn.js +0 -404
  850. package/dist/src/cli/commands/learn.js.map +0 -1
  851. package/dist/src/cli/commands/route.d.ts +0 -11
  852. package/dist/src/cli/commands/route.d.ts.map +0 -1
  853. package/dist/src/cli/commands/route.js +0 -414
  854. package/dist/src/cli/commands/route.js.map +0 -1
  855. package/dist/src/cli/commands/rvf.d.ts +0 -21
  856. package/dist/src/cli/commands/rvf.d.ts.map +0 -1
  857. package/dist/src/cli/commands/rvf.js +0 -448
  858. package/dist/src/cli/commands/rvf.js.map +0 -1
  859. package/dist/src/cli/tests/agentdb-cli.test.d.ts +0 -8
  860. package/dist/src/cli/tests/agentdb-cli.test.d.ts.map +0 -1
  861. package/dist/src/cli/tests/agentdb-cli.test.js +0 -50
  862. package/dist/src/cli/tests/agentdb-cli.test.js.map +0 -1
  863. package/dist/src/cli/tests/attention-cli.test.d.ts +0 -5
  864. package/dist/src/cli/tests/attention-cli.test.d.ts.map +0 -1
  865. package/dist/src/cli/tests/attention-cli.test.js +0 -257
  866. package/dist/src/cli/tests/attention-cli.test.js.map +0 -1
  867. package/dist/src/compatibility/DeprecationWarnings.d.ts +0 -54
  868. package/dist/src/compatibility/DeprecationWarnings.d.ts.map +0 -1
  869. package/dist/src/compatibility/DeprecationWarnings.js +0 -131
  870. package/dist/src/compatibility/DeprecationWarnings.js.map +0 -1
  871. package/dist/src/compatibility/MigrationUtilities.d.ts +0 -30
  872. package/dist/src/compatibility/MigrationUtilities.d.ts.map +0 -1
  873. package/dist/src/compatibility/MigrationUtilities.js +0 -184
  874. package/dist/src/compatibility/MigrationUtilities.js.map +0 -1
  875. package/dist/src/compatibility/V1toV2Adapter.d.ts +0 -76
  876. package/dist/src/compatibility/V1toV2Adapter.d.ts.map +0 -1
  877. package/dist/src/compatibility/V1toV2Adapter.js +0 -198
  878. package/dist/src/compatibility/V1toV2Adapter.js.map +0 -1
  879. package/dist/src/compatibility/VersionDetector.d.ts +0 -32
  880. package/dist/src/compatibility/VersionDetector.d.ts.map +0 -1
  881. package/dist/src/compatibility/VersionDetector.js +0 -144
  882. package/dist/src/compatibility/VersionDetector.js.map +0 -1
  883. package/dist/src/compatibility/index.d.ts +0 -11
  884. package/dist/src/compatibility/index.d.ts.map +0 -1
  885. package/dist/src/compatibility/index.js +0 -10
  886. package/dist/src/compatibility/index.js.map +0 -1
  887. package/dist/src/compatibility/types.d.ts +0 -103
  888. package/dist/src/compatibility/types.d.ts.map +0 -1
  889. package/dist/src/compatibility/types.js +0 -5
  890. package/dist/src/compatibility/types.js.map +0 -1
  891. package/dist/src/controllers/MemoryController.d.ts +0 -161
  892. package/dist/src/controllers/MemoryController.d.ts.map +0 -1
  893. package/dist/src/controllers/MemoryController.js +0 -290
  894. package/dist/src/controllers/MemoryController.js.map +0 -1
  895. package/dist/src/controllers/attention/CrossAttentionController.d.ts +0 -141
  896. package/dist/src/controllers/attention/CrossAttentionController.d.ts.map +0 -1
  897. package/dist/src/controllers/attention/CrossAttentionController.js +0 -325
  898. package/dist/src/controllers/attention/CrossAttentionController.js.map +0 -1
  899. package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts +0 -137
  900. package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts.map +0 -1
  901. package/dist/src/controllers/attention/MultiHeadAttentionController.js +0 -339
  902. package/dist/src/controllers/attention/MultiHeadAttentionController.js.map +0 -1
  903. package/dist/src/controllers/attention/SelfAttentionController.d.ts +0 -117
  904. package/dist/src/controllers/attention/SelfAttentionController.d.ts.map +0 -1
  905. package/dist/src/controllers/attention/SelfAttentionController.js +0 -205
  906. package/dist/src/controllers/attention/SelfAttentionController.js.map +0 -1
  907. package/dist/src/controllers/attention/index.d.ts +0 -15
  908. package/dist/src/controllers/attention/index.d.ts.map +0 -1
  909. package/dist/src/controllers/attention/index.js +0 -12
  910. package/dist/src/controllers/attention/index.js.map +0 -1
  911. package/dist/src/core/QueryCache.d.ts +0 -138
  912. package/dist/src/core/QueryCache.d.ts.map +0 -1
  913. package/dist/src/core/QueryCache.js +0 -313
  914. package/dist/src/core/QueryCache.js.map +0 -1
  915. package/dist/src/observability/index.d.ts +0 -8
  916. package/dist/src/observability/index.d.ts.map +0 -1
  917. package/dist/src/observability/index.js +0 -8
  918. package/dist/src/observability/index.js.map +0 -1
  919. package/dist/src/observability/integration.d.ts +0 -32
  920. package/dist/src/observability/integration.d.ts.map +0 -1
  921. package/dist/src/observability/integration.js +0 -157
  922. package/dist/src/observability/integration.js.map +0 -1
  923. package/dist/src/observability/telemetry.d.ts +0 -137
  924. package/dist/src/observability/telemetry.d.ts.map +0 -1
  925. package/dist/src/observability/telemetry.js +0 -420
  926. package/dist/src/observability/telemetry.js.map +0 -1
  927. package/dist/src/quantization/index.d.ts +0 -7
  928. package/dist/src/quantization/index.d.ts.map +0 -1
  929. package/dist/src/quantization/index.js +0 -15
  930. package/dist/src/quantization/index.js.map +0 -1
  931. package/dist/src/quantization/vector-quantization.d.ts +0 -388
  932. package/dist/src/quantization/vector-quantization.d.ts.map +0 -1
  933. package/dist/src/quantization/vector-quantization.js +0 -1136
  934. package/dist/src/quantization/vector-quantization.js.map +0 -1
  935. package/dist/src/search/HybridSearch.d.ts +0 -311
  936. package/dist/src/search/HybridSearch.d.ts.map +0 -1
  937. package/dist/src/search/HybridSearch.js +0 -712
  938. package/dist/src/search/HybridSearch.js.map +0 -1
  939. package/dist/src/search/index.d.ts +0 -12
  940. package/dist/src/search/index.d.ts.map +0 -1
  941. package/dist/src/search/index.js +0 -16
  942. package/dist/src/search/index.js.map +0 -1
  943. package/dist/src/services/AttentionService.d.ts +0 -303
  944. package/dist/src/services/AttentionService.d.ts.map +0 -1
  945. package/dist/src/services/AttentionService.js +0 -1167
  946. package/dist/src/services/AttentionService.js.map +0 -1
  947. package/dist/src/simd/index.d.ts +0 -9
  948. package/dist/src/simd/index.d.ts.map +0 -1
  949. package/dist/src/simd/index.js +0 -27
  950. package/dist/src/simd/index.js.map +0 -1
  951. package/dist/src/simd/simd-vector-ops.d.ts +0 -332
  952. package/dist/src/simd/simd-vector-ops.d.ts.map +0 -1
  953. package/dist/src/simd/simd-vector-ops.js +0 -947
  954. package/dist/src/simd/simd-vector-ops.js.map +0 -1
  955. package/dist/src/tests/attention-service.test.d.ts +0 -7
  956. package/dist/src/tests/attention-service.test.d.ts.map +0 -1
  957. package/dist/src/tests/attention-service.test.js +0 -401
  958. package/dist/src/tests/attention-service.test.js.map +0 -1
  959. package/dist/src/tests/integration/compatibility/backwards-compat.integration.test.d.ts +0 -7
  960. package/dist/src/tests/integration/compatibility/backwards-compat.integration.test.d.ts.map +0 -1
  961. package/dist/src/tests/integration/compatibility/backwards-compat.integration.test.js +0 -283
  962. package/dist/src/tests/integration/compatibility/backwards-compat.integration.test.js.map +0 -1
  963. package/dist/src/tests/query-cache.test.d.ts +0 -7
  964. package/dist/src/tests/query-cache.test.d.ts.map +0 -1
  965. package/dist/src/tests/query-cache.test.js +0 -343
  966. package/dist/src/tests/query-cache.test.js.map +0 -1
  967. package/dist/src/tests/ruvector-integration.test.d.ts +0 -14
  968. package/dist/src/tests/ruvector-integration.test.d.ts.map +0 -1
  969. package/dist/src/tests/ruvector-integration.test.js +0 -1156
  970. package/dist/src/tests/ruvector-integration.test.js.map +0 -1
  971. package/dist/src/tests/unit/auth/crypto.utils.test.d.ts +0 -6
  972. package/dist/src/tests/unit/auth/crypto.utils.test.d.ts.map +0 -1
  973. package/dist/src/tests/unit/auth/crypto.utils.test.js +0 -310
  974. package/dist/src/tests/unit/auth/crypto.utils.test.js.map +0 -1
  975. package/dist/src/tests/unit/compatibility/deprecation-warnings.test.d.ts +0 -5
  976. package/dist/src/tests/unit/compatibility/deprecation-warnings.test.d.ts.map +0 -1
  977. package/dist/src/tests/unit/compatibility/deprecation-warnings.test.js +0 -207
  978. package/dist/src/tests/unit/compatibility/deprecation-warnings.test.js.map +0 -1
  979. package/dist/src/tests/unit/compatibility/migration-utils.test.d.ts +0 -5
  980. package/dist/src/tests/unit/compatibility/migration-utils.test.d.ts.map +0 -1
  981. package/dist/src/tests/unit/compatibility/migration-utils.test.js +0 -264
  982. package/dist/src/tests/unit/compatibility/migration-utils.test.js.map +0 -1
  983. package/dist/src/tests/unit/compatibility/v1-adapter.test.d.ts +0 -7
  984. package/dist/src/tests/unit/compatibility/v1-adapter.test.d.ts.map +0 -1
  985. package/dist/src/tests/unit/compatibility/v1-adapter.test.js +0 -228
  986. package/dist/src/tests/unit/compatibility/v1-adapter.test.js.map +0 -1
  987. package/dist/src/tests/unit/compatibility/version-detector.test.d.ts +0 -10
  988. package/dist/src/tests/unit/compatibility/version-detector.test.d.ts.map +0 -1
  989. package/dist/src/tests/unit/compatibility/version-detector.test.js +0 -162
  990. package/dist/src/tests/unit/compatibility/version-detector.test.js.map +0 -1
  991. package/dist/src/tests/vector-quantization.test.d.ts +0 -5
  992. package/dist/src/tests/vector-quantization.test.d.ts.map +0 -1
  993. package/dist/src/tests/vector-quantization.test.js +0 -338
  994. package/dist/src/tests/vector-quantization.test.js.map +0 -1
  995. package/dist/src/tests/wasm-vector-search.test.d.ts +0 -7
  996. package/dist/src/tests/wasm-vector-search.test.d.ts.map +0 -1
  997. package/dist/src/tests/wasm-vector-search.test.js +0 -193
  998. package/dist/src/tests/wasm-vector-search.test.js.map +0 -1
  999. package/dist/src/types/database.types.d.ts +0 -275
  1000. package/dist/src/types/database.types.d.ts.map +0 -1
  1001. package/dist/src/types/database.types.js +0 -57
  1002. package/dist/src/types/database.types.js.map +0 -1
  1003. package/dist/src/utils/chalk-fallback.d.ts +0 -3
  1004. package/dist/src/utils/chalk-fallback.d.ts.map +0 -1
  1005. package/dist/src/utils/chalk-fallback.js +0 -20
  1006. package/dist/src/utils/chalk-fallback.js.map +0 -1
  1007. package/dist/src/utils/crypto.utils.d.ts +0 -122
  1008. package/dist/src/utils/crypto.utils.d.ts.map +0 -1
  1009. package/dist/src/utils/crypto.utils.js +0 -296
  1010. package/dist/src/utils/crypto.utils.js.map +0 -1
  1011. package/dist/src/utils/similarity.d.ts +0 -11
  1012. package/dist/src/utils/similarity.d.ts.map +0 -1
  1013. package/dist/src/utils/similarity.js +0 -25
  1014. package/dist/src/utils/similarity.js.map +0 -1
  1015. package/dist/src/wasm-loader.d.ts +0 -67
  1016. package/dist/src/wasm-loader.d.ts.map +0 -1
  1017. package/dist/src/wasm-loader.js +0 -78
  1018. package/dist/src/wasm-loader.js.map +0 -1
  1019. package/dist/src/wrappers/agentdb-fast.d.ts +0 -139
  1020. package/dist/src/wrappers/agentdb-fast.d.ts.map +0 -1
  1021. package/dist/src/wrappers/agentdb-fast.js +0 -316
  1022. package/dist/src/wrappers/agentdb-fast.js.map +0 -1
  1023. package/dist/src/wrappers/attention-fallbacks.d.ts +0 -351
  1024. package/dist/src/wrappers/attention-fallbacks.d.ts.map +0 -1
  1025. package/dist/src/wrappers/attention-fallbacks.js +0 -1487
  1026. package/dist/src/wrappers/attention-fallbacks.js.map +0 -1
  1027. package/dist/src/wrappers/embedding-service.d.ts +0 -117
  1028. package/dist/src/wrappers/embedding-service.d.ts.map +0 -1
  1029. package/dist/src/wrappers/embedding-service.js +0 -376
  1030. package/dist/src/wrappers/embedding-service.js.map +0 -1
  1031. package/dist/src/wrappers/gnn-wrapper.d.ts +0 -71
  1032. package/dist/src/wrappers/gnn-wrapper.d.ts.map +0 -1
  1033. package/dist/src/wrappers/gnn-wrapper.js +0 -240
  1034. package/dist/src/wrappers/gnn-wrapper.js.map +0 -1
  1035. package/dist/src/wrappers/index.d.ts +0 -48
  1036. package/dist/src/wrappers/index.d.ts.map +0 -1
  1037. package/dist/src/wrappers/index.js +0 -83
  1038. package/dist/src/wrappers/index.js.map +0 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/browser/ProductQuantization.ts", "../src/browser/HNSWIndex.ts", "../src/browser/AdvancedFeatures.ts", "../src/browser/AttentionBrowser.ts", "../src/browser/index.ts"],
4
+ "sourcesContent": ["/**\n * Product Quantization for Browser\n *\n * Compresses high-dimensional vectors using product quantization.\n * Achieves 4-32x memory reduction with minimal accuracy loss.\n *\n * Features:\n * - PQ8: 8 subvectors, 256 centroids each (4x compression)\n * - PQ16: 16 subvectors, 256 centroids each (8x compression)\n * - Asymmetric distance computation (ADC)\n * - K-means clustering for codebook training\n *\n * Performance:\n * - Memory: Float32 (4 bytes) \u2192 uint8 (1 byte) per subvector\n * - Speed: ~1.5x slower search vs uncompressed\n * - Accuracy: 95-99% recall@10\n */\n\nexport interface PQConfig {\n dimension: number;\n numSubvectors: number; // 8, 16, 32, or 64\n numCentroids: number; // Usually 256 (uint8)\n maxIterations?: number; // K-means iterations\n convergenceThreshold?: number;\n}\n\nexport interface PQCodebook {\n subvectorDim: number;\n numSubvectors: number;\n numCentroids: number;\n centroids: Float32Array[]; // [numSubvectors][numCentroids][subvectorDim]\n}\n\nexport interface CompressedVector {\n codes: Uint8Array; // [numSubvectors] - indices into centroids\n norm: number; // Original vector norm (for normalization)\n}\n\nexport class ProductQuantization {\n private config: Required<PQConfig>;\n private codebook: PQCodebook | null = null;\n private trained = false;\n\n constructor(config: PQConfig) {\n this.config = {\n dimension: config.dimension,\n numSubvectors: config.numSubvectors,\n numCentroids: config.numCentroids,\n maxIterations: config.maxIterations || 50,\n convergenceThreshold: config.convergenceThreshold || 1e-4\n };\n\n // Validate config\n if (this.config.dimension % this.config.numSubvectors !== 0) {\n throw new Error(`Dimension ${this.config.dimension} must be divisible by numSubvectors ${this.config.numSubvectors}`);\n }\n }\n\n /**\n * Train codebook using k-means on training vectors\n */\n async train(vectors: Float32Array[]): Promise<void> {\n if (vectors.length === 0) {\n throw new Error('Training requires at least one vector');\n }\n\n const subvectorDim = this.config.dimension / this.config.numSubvectors;\n const centroids: Float32Array[] = [];\n\n console.log(`[PQ] Training ${this.config.numSubvectors} subvectors with ${this.config.numCentroids} centroids each...`);\n\n // Train each subvector independently\n for (let s = 0; s < this.config.numSubvectors; s++) {\n const startDim = s * subvectorDim;\n const endDim = startDim + subvectorDim;\n\n // Extract subvectors\n const subvectors = vectors.map(v => v.slice(startDim, endDim));\n\n // Run k-means\n const subCentroids = await this.kMeans(subvectors, this.config.numCentroids);\n centroids.push(...subCentroids);\n\n if ((s + 1) % 4 === 0 || s === this.config.numSubvectors - 1) {\n console.log(`[PQ] Trained ${s + 1}/${this.config.numSubvectors} subvectors`);\n }\n }\n\n this.codebook = {\n subvectorDim,\n numSubvectors: this.config.numSubvectors,\n numCentroids: this.config.numCentroids,\n centroids\n };\n\n this.trained = true;\n console.log('[PQ] Training complete');\n }\n\n /**\n * K-means clustering for centroids\n */\n private async kMeans(vectors: Float32Array[], k: number): Promise<Float32Array[]> {\n const dim = vectors[0].length;\n const n = vectors.length;\n\n // Initialize centroids with k-means++\n const centroids = this.kMeansPlusPlus(vectors, k);\n const assignments = new Uint32Array(n);\n let prevInertia = Infinity;\n\n for (let iter = 0; iter < this.config.maxIterations; iter++) {\n // Assign vectors to nearest centroid\n let inertia = 0;\n for (let i = 0; i < n; i++) {\n let minDist = Infinity;\n let minIdx = 0;\n\n for (let j = 0; j < k; j++) {\n const dist = this.squaredDistance(vectors[i], centroids[j]);\n if (dist < minDist) {\n minDist = dist;\n minIdx = j;\n }\n }\n\n assignments[i] = minIdx;\n inertia += minDist;\n }\n\n // Check convergence\n if (Math.abs(prevInertia - inertia) < this.config.convergenceThreshold) {\n break;\n }\n prevInertia = inertia;\n\n // Update centroids\n const counts = new Uint32Array(k);\n const sums = Array.from({ length: k }, () => new Float32Array(dim));\n\n for (let i = 0; i < n; i++) {\n const cluster = assignments[i];\n counts[cluster]++;\n for (let d = 0; d < dim; d++) {\n sums[cluster][d] += vectors[i][d];\n }\n }\n\n for (let j = 0; j < k; j++) {\n if (counts[j] > 0) {\n for (let d = 0; d < dim; d++) {\n centroids[j][d] = sums[j][d] / counts[j];\n }\n }\n }\n }\n\n return centroids;\n }\n\n /**\n * K-means++ initialization for better centroid selection\n */\n private kMeansPlusPlus(vectors: Float32Array[], k: number): Float32Array[] {\n const n = vectors.length;\n const dim = vectors[0].length;\n const centroids: Float32Array[] = [];\n\n // Choose first centroid randomly\n const firstIdx = Math.floor(Math.random() * n);\n centroids.push(new Float32Array(vectors[firstIdx]));\n\n // Choose remaining centroids\n for (let i = 1; i < k; i++) {\n const distances = new Float32Array(n);\n let sumDistances = 0;\n\n // Calculate distances to nearest centroid\n for (let j = 0; j < n; j++) {\n let minDist = Infinity;\n for (const centroid of centroids) {\n const dist = this.squaredDistance(vectors[j], centroid);\n minDist = Math.min(minDist, dist);\n }\n distances[j] = minDist;\n sumDistances += minDist;\n }\n\n // Choose next centroid with probability proportional to distance\u00B2\n let r = Math.random() * sumDistances;\n for (let j = 0; j < n; j++) {\n r -= distances[j];\n if (r <= 0) {\n centroids.push(new Float32Array(vectors[j]));\n break;\n }\n }\n }\n\n return centroids;\n }\n\n /**\n * Compress a vector using trained codebook\n */\n compress(vector: Float32Array): CompressedVector {\n if (!this.trained || !this.codebook) {\n throw new Error('Codebook must be trained before compression');\n }\n\n const codes = new Uint8Array(this.config.numSubvectors);\n const subvectorDim = this.codebook.subvectorDim;\n\n // Compute norm for later reconstruction\n let norm = 0;\n for (let i = 0; i < vector.length; i++) {\n norm += vector[i] * vector[i];\n }\n norm = Math.sqrt(norm);\n\n // Encode each subvector\n for (let s = 0; s < this.config.numSubvectors; s++) {\n const startDim = s * subvectorDim;\n const subvector = vector.slice(startDim, startDim + subvectorDim);\n\n // Find nearest centroid\n let minDist = Infinity;\n let minIdx = 0;\n\n const centroidOffset = s * this.config.numCentroids;\n for (let c = 0; c < this.config.numCentroids; c++) {\n const centroid = this.codebook.centroids[centroidOffset + c];\n const dist = this.squaredDistance(subvector, centroid);\n if (dist < minDist) {\n minDist = dist;\n minIdx = c;\n }\n }\n\n codes[s] = minIdx;\n }\n\n return { codes, norm };\n }\n\n /**\n * Decompress a vector (approximate reconstruction)\n */\n decompress(compressed: CompressedVector): Float32Array {\n if (!this.codebook) {\n throw new Error('Codebook not available');\n }\n\n const vector = new Float32Array(this.config.dimension);\n const subvectorDim = this.codebook.subvectorDim;\n\n for (let s = 0; s < this.config.numSubvectors; s++) {\n const code = compressed.codes[s];\n const centroidOffset = s * this.config.numCentroids;\n const centroid = this.codebook.centroids[centroidOffset + code];\n\n const startDim = s * subvectorDim;\n for (let d = 0; d < subvectorDim; d++) {\n vector[startDim + d] = centroid[d];\n }\n }\n\n return vector;\n }\n\n /**\n * Asymmetric Distance Computation (ADC)\n * Computes distance from query vector to compressed vector\n */\n asymmetricDistance(query: Float32Array, compressed: CompressedVector): number {\n if (!this.codebook) {\n throw new Error('Codebook not available');\n }\n\n let distance = 0;\n const subvectorDim = this.codebook.subvectorDim;\n\n for (let s = 0; s < this.config.numSubvectors; s++) {\n const code = compressed.codes[s];\n const centroidOffset = s * this.config.numCentroids;\n const centroid = this.codebook.centroids[centroidOffset + code];\n\n const startDim = s * subvectorDim;\n const querySubvector = query.slice(startDim, startDim + subvectorDim);\n\n distance += this.squaredDistance(querySubvector, centroid);\n }\n\n return Math.sqrt(distance);\n }\n\n /**\n * Batch compression for multiple vectors\n */\n batchCompress(vectors: Float32Array[]): CompressedVector[] {\n return vectors.map(v => this.compress(v));\n }\n\n /**\n * Get memory savings\n */\n getCompressionRatio(): number {\n // Original: dimension * 4 bytes (Float32)\n // Compressed: numSubvectors * 1 byte (Uint8) + 4 bytes (norm)\n const originalBytes = this.config.dimension * 4;\n const compressedBytes = this.config.numSubvectors + 4;\n return originalBytes / compressedBytes;\n }\n\n /**\n * Export codebook for persistence\n */\n exportCodebook(): string {\n if (!this.codebook) {\n throw new Error('No codebook to export');\n }\n\n return JSON.stringify({\n config: this.config,\n codebook: {\n subvectorDim: this.codebook.subvectorDim,\n numSubvectors: this.codebook.numSubvectors,\n numCentroids: this.codebook.numCentroids,\n centroids: this.codebook.centroids.map(c => Array.from(c))\n }\n });\n }\n\n /**\n * Import codebook\n */\n importCodebook(json: string): void {\n const data = JSON.parse(json);\n this.config = data.config;\n this.codebook = {\n subvectorDim: data.codebook.subvectorDim,\n numSubvectors: data.codebook.numSubvectors,\n numCentroids: data.codebook.numCentroids,\n centroids: data.codebook.centroids.map((c: number[]) => new Float32Array(c))\n };\n this.trained = true;\n }\n\n /**\n * Utility: Squared Euclidean distance\n */\n private squaredDistance(a: Float32Array, b: Float32Array): number {\n let sum = 0;\n for (let i = 0; i < a.length; i++) {\n const diff = a[i] - b[i];\n sum += diff * diff;\n }\n return sum;\n }\n\n /**\n * Get statistics\n */\n getStats(): {\n trained: boolean;\n compressionRatio: number;\n memoryPerVector: number;\n codebookSize: number;\n } {\n const compressionRatio = this.getCompressionRatio();\n const memoryPerVector = this.config.numSubvectors + 4; // codes + norm\n const codebookSize = this.codebook\n ? this.config.numSubvectors * this.config.numCentroids * (this.config.dimension / this.config.numSubvectors) * 4\n : 0;\n\n return {\n trained: this.trained,\n compressionRatio,\n memoryPerVector,\n codebookSize\n };\n }\n}\n\n/**\n * Helper function to create PQ8 (8 subvectors, 4x compression)\n */\nexport function createPQ8(dimension: number): ProductQuantization {\n return new ProductQuantization({\n dimension,\n numSubvectors: 8,\n numCentroids: 256,\n maxIterations: 50\n });\n}\n\n/**\n * Helper function to create PQ16 (16 subvectors, 8x compression)\n */\nexport function createPQ16(dimension: number): ProductQuantization {\n return new ProductQuantization({\n dimension,\n numSubvectors: 16,\n numCentroids: 256,\n maxIterations: 50\n });\n}\n\n/**\n * Helper function to create PQ32 (32 subvectors, 16x compression)\n */\nexport function createPQ32(dimension: number): ProductQuantization {\n return new ProductQuantization({\n dimension,\n numSubvectors: 32,\n numCentroids: 256,\n maxIterations: 50\n });\n}\n", "/**\n * HNSW (Hierarchical Navigable Small World) Index for Browser\n *\n * JavaScript implementation of HNSW algorithm for fast approximate nearest neighbor search.\n * Achieves O(log n) search complexity vs O(n) for linear scan.\n *\n * Features:\n * - Multi-layer graph structure\n * - Probabilistic layer assignment\n * - Greedy search algorithm\n * - Dynamic insertion\n * - Configurable M (connections per node)\n * - Configurable efConstruction and efSearch\n *\n * Performance:\n * - 10-20x faster than linear scan (vs 150x for native HNSW)\n * - Memory: ~16 bytes per edge + vector storage\n * - Suitable for datasets up to 100K vectors in browser\n */\n\nexport interface HNSWConfig {\n dimension: number;\n M: number; // Max connections per node (default: 16)\n efConstruction: number; // Size of dynamic candidate list (default: 200)\n efSearch: number; // Size of search candidate list (default: 50)\n ml: number; // Layer assignment multiplier (default: 1/ln(2))\n maxLayers: number; // Maximum number of layers (default: 16)\n distanceFunction?: 'cosine' | 'euclidean' | 'manhattan';\n}\n\nexport interface HNSWNode {\n id: number;\n vector: Float32Array;\n level: number;\n connections: Map<number, number[]>; // layer -> [neighbor ids]\n}\n\nexport interface SearchResult {\n id: number;\n distance: number;\n vector: Float32Array;\n}\n\nclass MinHeap<T> {\n private items: Array<{ item: T; priority: number }> = [];\n\n push(item: T, priority: number): void {\n this.items.push({ item, priority });\n this.bubbleUp(this.items.length - 1);\n }\n\n pop(): T | undefined {\n if (this.items.length === 0) return undefined;\n const result = this.items[0].item;\n const last = this.items.pop()!;\n if (this.items.length > 0) {\n this.items[0] = last;\n this.bubbleDown(0);\n }\n return result;\n }\n\n peek(): T | undefined {\n return this.items[0]?.item;\n }\n\n size(): number {\n return this.items.length;\n }\n\n private bubbleUp(index: number): void {\n while (index > 0) {\n const parentIndex = Math.floor((index - 1) / 2);\n if (this.items[index].priority >= this.items[parentIndex].priority) break;\n [this.items[index], this.items[parentIndex]] = [this.items[parentIndex], this.items[index]];\n index = parentIndex;\n }\n }\n\n private bubbleDown(index: number): void {\n while (true) {\n const leftChild = 2 * index + 1;\n const rightChild = 2 * index + 2;\n let smallest = index;\n\n if (leftChild < this.items.length && this.items[leftChild].priority < this.items[smallest].priority) {\n smallest = leftChild;\n }\n if (rightChild < this.items.length && this.items[rightChild].priority < this.items[smallest].priority) {\n smallest = rightChild;\n }\n if (smallest === index) break;\n\n [this.items[index], this.items[smallest]] = [this.items[smallest], this.items[index]];\n index = smallest;\n }\n }\n}\n\nexport class HNSWIndex {\n private config: Required<HNSWConfig>;\n private nodes: Map<number, HNSWNode> = new Map();\n private entryPoint: number | null = null;\n private currentId = 0;\n private ml: number;\n\n constructor(config: Partial<HNSWConfig> = {}) {\n this.config = {\n dimension: config.dimension || 384,\n M: config.M || 16,\n efConstruction: config.efConstruction || 200,\n efSearch: config.efSearch || 50,\n ml: config.ml || 1 / Math.log(2),\n maxLayers: config.maxLayers || 16,\n distanceFunction: config.distanceFunction || 'cosine'\n };\n\n this.ml = this.config.ml;\n }\n\n /**\n * Add vector to index\n */\n add(vector: Float32Array, id?: number): number {\n const nodeId = id !== undefined ? id : this.currentId++;\n const level = this.randomLevel();\n\n const node: HNSWNode = {\n id: nodeId,\n vector,\n level,\n connections: new Map()\n };\n\n // Initialize connections for each layer\n for (let l = 0; l <= level; l++) {\n node.connections.set(l, []);\n }\n\n if (this.entryPoint === null) {\n // First node\n this.entryPoint = nodeId;\n this.nodes.set(nodeId, node);\n return nodeId;\n }\n\n // Find nearest neighbors at each layer\n const ep = this.entryPoint;\n let nearest = ep;\n\n // Search from top layer to target layer + 1\n for (let lc = this.nodes.get(ep)!.level; lc > level; lc--) {\n nearest = this.searchLayer(vector, nearest, 1, lc)[0];\n }\n\n // Insert node at layers 0 to level\n for (let lc = Math.min(level, this.nodes.get(ep)!.level); lc >= 0; lc--) {\n const candidates = this.searchLayer(vector, nearest, this.config.efConstruction, lc);\n\n // Select M neighbors\n const M = lc === 0 ? this.config.M * 2 : this.config.M;\n const neighbors = this.selectNeighbors(vector, candidates, M);\n\n // Add bidirectional connections\n for (const neighbor of neighbors) {\n this.connect(nodeId, neighbor, lc);\n this.connect(neighbor, nodeId, lc);\n\n // Prune connections if necessary\n const neighborNode = this.nodes.get(neighbor)!;\n const neighborConnections = neighborNode.connections.get(lc)!;\n if (neighborConnections.length > M) {\n const newNeighbors = this.selectNeighbors(\n neighborNode.vector,\n neighborConnections,\n M\n );\n neighborNode.connections.set(lc, newNeighbors);\n }\n }\n\n nearest = candidates[0];\n }\n\n // Update entry point if necessary\n if (level > this.nodes.get(this.entryPoint)!.level) {\n this.entryPoint = nodeId;\n }\n\n this.nodes.set(nodeId, node);\n return nodeId;\n }\n\n /**\n * Search for k nearest neighbors\n */\n search(query: Float32Array, k: number, ef?: number): SearchResult[] {\n if (this.entryPoint === null) return [];\n\n ef = ef || Math.max(this.config.efSearch, k);\n\n let ep = this.entryPoint;\n let nearest = ep;\n\n // Search from top to layer 1\n for (let lc = this.nodes.get(ep)!.level; lc > 0; lc--) {\n nearest = this.searchLayer(query, nearest, 1, lc)[0];\n }\n\n // Search at layer 0\n const candidates = this.searchLayer(query, nearest, ef, 0);\n\n // Convert to SearchResult and return top k\n return candidates\n .slice(0, k)\n .map(id => ({\n id,\n distance: this.distance(query, this.nodes.get(id)!.vector),\n vector: this.nodes.get(id)!.vector\n }));\n }\n\n /**\n * Search at specific layer\n */\n private searchLayer(query: Float32Array, ep: number, ef: number, layer: number): number[] {\n const visited = new Set<number>();\n const candidates = new MinHeap<number>();\n const w = new MinHeap<number>();\n\n const dist = this.distance(query, this.nodes.get(ep)!.vector);\n candidates.push(ep, dist);\n w.push(ep, -dist); // Max heap (negate for min heap)\n visited.add(ep);\n\n while (candidates.size() > 0) {\n const c = candidates.pop()!;\n const fDist = -w.peek()!; // Furthest point distance\n\n const cDist = this.distance(query, this.nodes.get(c)!.vector);\n if (cDist > fDist) break;\n\n const neighbors = this.nodes.get(c)!.connections.get(layer) || [];\n for (const e of neighbors) {\n if (visited.has(e)) continue;\n visited.add(e);\n\n const eDist = this.distance(query, this.nodes.get(e)!.vector);\n const fDist = -w.peek()!;\n\n if (eDist < fDist || w.size() < ef) {\n candidates.push(e, eDist);\n w.push(e, -eDist);\n\n if (w.size() > ef) {\n w.pop();\n }\n }\n }\n }\n\n // Return ef nearest neighbors\n const result: number[] = [];\n while (w.size() > 0) {\n result.unshift(w.pop()!);\n }\n return result;\n }\n\n /**\n * Select best neighbors using heuristic\n */\n private selectNeighbors(base: Float32Array, candidates: number[], M: number): number[] {\n if (candidates.length <= M) return candidates;\n\n // Sort by distance\n const sorted = candidates\n .map(id => ({\n id,\n distance: this.distance(base, this.nodes.get(id)!.vector)\n }))\n .sort((a, b) => a.distance - b.distance);\n\n return sorted.slice(0, M).map(x => x.id);\n }\n\n /**\n * Connect two nodes at layer\n */\n private connect(from: number, to: number, layer: number): void {\n const node = this.nodes.get(from)!;\n const connections = node.connections.get(layer)!;\n if (!connections.includes(to)) {\n connections.push(to);\n }\n }\n\n /**\n * Random level assignment\n */\n private randomLevel(): number {\n let level = 0;\n while (Math.random() < this.ml && level < this.config.maxLayers - 1) {\n level++;\n }\n return level;\n }\n\n /**\n * Distance function\n */\n private distance(a: Float32Array, b: Float32Array): number {\n switch (this.config.distanceFunction) {\n case 'cosine':\n return 1 - this.cosineSimilarity(a, b);\n case 'euclidean':\n return this.euclideanDistance(a, b);\n case 'manhattan':\n return this.manhattanDistance(a, b);\n default:\n return 1 - this.cosineSimilarity(a, b);\n }\n }\n\n private cosineSimilarity(a: Float32Array, b: Float32Array): number {\n let dotProduct = 0;\n let normA = 0;\n let normB = 0;\n\n for (let i = 0; i < a.length; i++) {\n dotProduct += a[i] * b[i];\n normA += a[i] * a[i];\n normB += b[i] * b[i];\n }\n\n return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));\n }\n\n private euclideanDistance(a: Float32Array, b: Float32Array): number {\n let sum = 0;\n for (let i = 0; i < a.length; i++) {\n const diff = a[i] - b[i];\n sum += diff * diff;\n }\n return Math.sqrt(sum);\n }\n\n private manhattanDistance(a: Float32Array, b: Float32Array): number {\n let sum = 0;\n for (let i = 0; i < a.length; i++) {\n sum += Math.abs(a[i] - b[i]);\n }\n return sum;\n }\n\n /**\n * Get index statistics\n */\n getStats(): {\n numNodes: number;\n numLayers: number;\n avgConnections: number;\n entryPointLevel: number;\n memoryBytes: number;\n } {\n if (this.nodes.size === 0) {\n return {\n numNodes: 0,\n numLayers: 0,\n avgConnections: 0,\n entryPointLevel: 0,\n memoryBytes: 0\n };\n }\n\n const maxLevel = Math.max(...Array.from(this.nodes.values()).map(n => n.level));\n let totalConnections = 0;\n\n for (const node of this.nodes.values()) {\n for (const connections of node.connections.values()) {\n totalConnections += connections.length;\n }\n }\n\n const avgConnections = totalConnections / this.nodes.size;\n\n // Estimate memory: vector + connections + metadata\n const vectorBytes = this.config.dimension * 4; // Float32Array\n const connectionBytes = avgConnections * 4; // number array\n const metadataBytes = 100; // rough estimate for node object\n const memoryBytes = this.nodes.size * (vectorBytes + connectionBytes + metadataBytes);\n\n return {\n numNodes: this.nodes.size,\n numLayers: maxLevel + 1,\n avgConnections,\n entryPointLevel: this.entryPoint ? this.nodes.get(this.entryPoint)!.level : 0,\n memoryBytes\n };\n }\n\n /**\n * Export index for persistence\n */\n export(): string {\n const data = {\n config: this.config,\n entryPoint: this.entryPoint,\n currentId: this.currentId,\n nodes: Array.from(this.nodes.entries()).map(([id, node]) => ({\n id,\n vector: Array.from(node.vector),\n level: node.level,\n connections: Array.from(node.connections.entries())\n }))\n };\n\n return JSON.stringify(data);\n }\n\n /**\n * Import index from JSON\n */\n import(json: string): void {\n const data = JSON.parse(json);\n\n this.config = data.config;\n this.entryPoint = data.entryPoint;\n this.currentId = data.currentId;\n this.nodes.clear();\n\n for (const nodeData of data.nodes) {\n const node: HNSWNode = {\n id: nodeData.id,\n vector: new Float32Array(nodeData.vector),\n level: nodeData.level,\n connections: new Map(nodeData.connections)\n };\n this.nodes.set(nodeData.id, node);\n }\n }\n\n /**\n * Clear index\n */\n clear(): void {\n this.nodes.clear();\n this.entryPoint = null;\n this.currentId = 0;\n }\n\n /**\n * Get number of nodes\n */\n size(): number {\n return this.nodes.size;\n }\n}\n\n/**\n * Helper function to create HNSW index with default settings\n */\nexport function createHNSW(dimension: number): HNSWIndex {\n return new HNSWIndex({\n dimension,\n M: 16,\n efConstruction: 200,\n efSearch: 50\n });\n}\n\n/**\n * Helper function to create fast HNSW (lower quality, faster build)\n */\nexport function createFastHNSW(dimension: number): HNSWIndex {\n return new HNSWIndex({\n dimension,\n M: 8,\n efConstruction: 100,\n efSearch: 30\n });\n}\n\n/**\n * Helper function to create accurate HNSW (higher quality, slower build)\n */\nexport function createAccurateHNSW(dimension: number): HNSWIndex {\n return new HNSWIndex({\n dimension,\n M: 32,\n efConstruction: 400,\n efSearch: 100\n });\n}\n", "/**\n * Advanced Features for AgentDB Browser\n *\n * Includes:\n * - GNN (Graph Neural Networks) - Graph attention and message passing\n * - MMR (Maximal Marginal Relevance) - Diversity ranking\n * - SVD (Singular Value Decomposition) - Tensor compression\n * - Batch operations and utilities\n */\n\n// ============================================================================\n// GNN (Graph Neural Networks)\n// ============================================================================\n\nexport interface GNNNode {\n id: number;\n features: Float32Array;\n neighbors: number[];\n}\n\nexport interface GNNEdge {\n from: number;\n to: number;\n weight: number;\n}\n\nexport interface GNNConfig {\n hiddenDim: number;\n numHeads: number; // For multi-head attention\n dropout: number;\n learningRate: number;\n attentionType: 'gat' | 'gcn' | 'sage';\n}\n\n/**\n * Graph Neural Network with attention mechanism\n */\nexport class GraphNeuralNetwork {\n private config: GNNConfig;\n private nodes: Map<number, GNNNode> = new Map();\n private edges: GNNEdge[] = [];\n private attentionWeights: Map<string, number> = new Map();\n\n constructor(config: Partial<GNNConfig> = {}) {\n this.config = {\n hiddenDim: config.hiddenDim || 64,\n numHeads: config.numHeads || 4,\n dropout: config.dropout || 0.1,\n learningRate: config.learningRate || 0.01,\n attentionType: config.attentionType || 'gat'\n };\n }\n\n /**\n * Add node to graph\n */\n addNode(id: number, features: Float32Array): void {\n this.nodes.set(id, {\n id,\n features,\n neighbors: []\n });\n }\n\n /**\n * Add edge to graph\n */\n addEdge(from: number, to: number, weight: number = 1.0): void {\n this.edges.push({ from, to, weight });\n\n // Update neighbor lists\n const fromNode = this.nodes.get(from);\n const toNode = this.nodes.get(to);\n\n if (fromNode && !fromNode.neighbors.includes(to)) {\n fromNode.neighbors.push(to);\n }\n if (toNode && !toNode.neighbors.includes(from)) {\n toNode.neighbors.push(from);\n }\n }\n\n /**\n * Graph Attention Network (GAT) message passing\n */\n graphAttention(nodeId: number): Float32Array {\n const node = this.nodes.get(nodeId);\n if (!node) throw new Error(`Node ${nodeId} not found`);\n\n const neighbors = node.neighbors;\n if (neighbors.length === 0) {\n return node.features;\n }\n\n // Multi-head attention\n const headDim = Math.floor(this.config.hiddenDim / this.config.numHeads);\n const aggregated = new Float32Array(this.config.hiddenDim);\n\n for (let h = 0; h < this.config.numHeads; h++) {\n let attentionSum = 0;\n const headOutput = new Float32Array(headDim);\n\n // Compute attention scores for each neighbor\n for (const neighborId of neighbors) {\n const neighbor = this.nodes.get(neighborId)!;\n\n // Attention score: similarity between node and neighbor\n const score = this.computeAttentionScore(\n node.features,\n neighbor.features,\n h\n );\n\n attentionSum += score;\n\n // Aggregate neighbor features weighted by attention\n for (let i = 0; i < headDim && i < neighbor.features.length; i++) {\n headOutput[i] += score * neighbor.features[i];\n }\n }\n\n // Normalize by attention sum\n if (attentionSum > 0) {\n for (let i = 0; i < headDim; i++) {\n headOutput[i] /= attentionSum;\n }\n }\n\n // Concatenate head outputs\n const offset = h * headDim;\n for (let i = 0; i < headDim; i++) {\n aggregated[offset + i] = headOutput[i];\n }\n }\n\n // Apply non-linearity (LeakyReLU)\n for (let i = 0; i < aggregated.length; i++) {\n aggregated[i] = aggregated[i] > 0 ? aggregated[i] : 0.01 * aggregated[i];\n }\n\n return aggregated;\n }\n\n /**\n * Compute attention score between two nodes\n */\n private computeAttentionScore(\n features1: Float32Array,\n features2: Float32Array,\n head: number\n ): number {\n // Simple dot-product attention\n let score = 0;\n const len = Math.min(features1.length, features2.length);\n\n for (let i = 0; i < len; i++) {\n score += features1[i] * features2[i];\n }\n\n // Apply softmax-like normalization\n return Math.exp(score / Math.sqrt(len));\n }\n\n /**\n * Message passing for all nodes\n */\n messagePass(): Map<number, Float32Array> {\n const newFeatures = new Map<number, Float32Array>();\n\n for (const [nodeId] of this.nodes) {\n newFeatures.set(nodeId, this.graphAttention(nodeId));\n }\n\n return newFeatures;\n }\n\n /**\n * Update node features after message passing\n */\n update(newFeatures: Map<number, Float32Array>): void {\n for (const [nodeId, features] of newFeatures) {\n const node = this.nodes.get(nodeId);\n if (node) {\n node.features = features;\n }\n }\n }\n\n /**\n * Compute graph embeddings for query enhancement\n */\n computeGraphEmbedding(nodeId: number, hops: number = 2): Float32Array {\n const features = new Map<number, Float32Array>();\n features.set(nodeId, this.nodes.get(nodeId)!.features);\n\n // Multi-hop message passing\n for (let h = 0; h < hops; h++) {\n const newFeatures = this.messagePass();\n this.update(newFeatures);\n }\n\n return this.nodes.get(nodeId)!.features;\n }\n\n /**\n * Get statistics\n */\n getStats() {\n return {\n numNodes: this.nodes.size,\n numEdges: this.edges.length,\n avgDegree: this.edges.length / Math.max(this.nodes.size, 1),\n config: this.config\n };\n }\n}\n\n// ============================================================================\n// MMR (Maximal Marginal Relevance)\n// ============================================================================\n\nexport interface MMRConfig {\n lambda: number; // Trade-off between relevance and diversity (0-1)\n metric: 'cosine' | 'euclidean';\n}\n\n/**\n * Maximal Marginal Relevance for diversity ranking\n */\nexport class MaximalMarginalRelevance {\n private config: MMRConfig;\n\n constructor(config: Partial<MMRConfig> = {}) {\n this.config = {\n lambda: config.lambda || 0.7,\n metric: config.metric || 'cosine'\n };\n }\n\n /**\n * Rerank results for diversity\n * @param query Query vector\n * @param candidates Candidate vectors with scores\n * @param k Number of results to return\n * @returns Reranked indices\n */\n rerank(\n query: Float32Array,\n candidates: Array<{ id: number; vector: Float32Array; score: number }>,\n k: number\n ): number[] {\n if (candidates.length === 0) return [];\n\n const selected: number[] = [];\n const remaining = new Set(candidates.map((_, i) => i));\n\n // Select first result (highest relevance)\n let bestIdx = 0;\n let bestScore = -Infinity;\n\n for (let i = 0; i < candidates.length; i++) {\n if (candidates[i].score > bestScore) {\n bestScore = candidates[i].score;\n bestIdx = i;\n }\n }\n\n selected.push(candidates[bestIdx].id);\n remaining.delete(bestIdx);\n\n // Iteratively select remaining results\n while (selected.length < k && remaining.size > 0) {\n let bestMMR = -Infinity;\n let bestCandidate = -1;\n\n for (const idx of remaining) {\n const candidate = candidates[idx];\n\n // Relevance to query\n const relevance = this.similarity(query, candidate.vector);\n\n // Maximum similarity to already selected\n let maxSimilarity = -Infinity;\n for (const selectedId of selected) {\n const selectedCandidate = candidates.find(c => c.id === selectedId)!;\n const sim = this.similarity(candidate.vector, selectedCandidate.vector);\n maxSimilarity = Math.max(maxSimilarity, sim);\n }\n\n // MMR score\n const mmr =\n this.config.lambda * relevance -\n (1 - this.config.lambda) * maxSimilarity;\n\n if (mmr > bestMMR) {\n bestMMR = mmr;\n bestCandidate = idx;\n }\n }\n\n if (bestCandidate !== -1) {\n selected.push(candidates[bestCandidate].id);\n remaining.delete(bestCandidate);\n } else {\n break;\n }\n }\n\n return selected;\n }\n\n /**\n * Similarity computation\n */\n private similarity(a: Float32Array, b: Float32Array): number {\n if (this.config.metric === 'cosine') {\n return this.cosineSimilarity(a, b);\n } else {\n // Euclidean distance converted to similarity\n const dist = this.euclideanDistance(a, b);\n return 1 / (1 + dist);\n }\n }\n\n private cosineSimilarity(a: Float32Array, b: Float32Array): number {\n let dotProduct = 0;\n let normA = 0;\n let normB = 0;\n\n for (let i = 0; i < a.length; i++) {\n dotProduct += a[i] * b[i];\n normA += a[i] * a[i];\n normB += b[i] * b[i];\n }\n\n return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));\n }\n\n private euclideanDistance(a: Float32Array, b: Float32Array): number {\n let sum = 0;\n for (let i = 0; i < a.length; i++) {\n const diff = a[i] - b[i];\n sum += diff * diff;\n }\n return Math.sqrt(sum);\n }\n\n /**\n * Set lambda (relevance vs diversity trade-off)\n */\n setLambda(lambda: number): void {\n this.config.lambda = Math.max(0, Math.min(1, lambda));\n }\n}\n\n// ============================================================================\n// SVD (Singular Value Decomposition) for Tensor Compression\n// ============================================================================\n\n/**\n * Simple SVD implementation for dimension reduction\n */\nexport class TensorCompression {\n /**\n * Reduce dimensionality using truncated SVD\n * @param vectors Array of vectors to compress\n * @param targetDim Target dimension\n * @returns Compressed vectors\n */\n static compress(\n vectors: Float32Array[],\n targetDim: number\n ): Float32Array[] {\n if (vectors.length === 0) return [];\n\n const originalDim = vectors[0].length;\n if (targetDim >= originalDim) return vectors;\n\n // Create matrix (vectors as rows)\n const matrix = vectors.map(v => Array.from(v));\n\n // Center the data (subtract mean)\n const mean = this.computeMean(matrix);\n const centered = matrix.map(row =>\n row.map((val, i) => val - mean[i])\n );\n\n // Compute covariance matrix\n const cov = this.computeCovariance(centered);\n\n // Compute top k eigenvectors using power iteration\n const eigenvectors = this.powerIteration(cov, targetDim);\n\n // Project vectors onto eigenvectors\n const compressed = centered.map(row => {\n const projected = new Float32Array(targetDim);\n for (let i = 0; i < targetDim; i++) {\n let sum = 0;\n for (let j = 0; j < originalDim; j++) {\n sum += row[j] * eigenvectors[i][j];\n }\n projected[i] = sum;\n }\n return projected;\n });\n\n return compressed;\n }\n\n /**\n * Compute mean vector\n */\n private static computeMean(matrix: number[][]): number[] {\n const n = matrix.length;\n const dim = matrix[0].length;\n const mean = new Array(dim).fill(0);\n\n for (const row of matrix) {\n for (let i = 0; i < dim; i++) {\n mean[i] += row[i];\n }\n }\n\n return mean.map(v => v / n);\n }\n\n /**\n * Compute covariance matrix\n */\n private static computeCovariance(matrix: number[][]): number[][] {\n const n = matrix.length;\n const dim = matrix[0].length;\n const cov: number[][] = Array.from({ length: dim }, () =>\n new Array(dim).fill(0)\n );\n\n for (let i = 0; i < dim; i++) {\n for (let j = 0; j <= i; j++) {\n let sum = 0;\n for (const row of matrix) {\n sum += row[i] * row[j];\n }\n cov[i][j] = cov[j][i] = sum / n;\n }\n }\n\n return cov;\n }\n\n /**\n * Power iteration for computing top eigenvectors\n */\n private static powerIteration(\n matrix: number[][],\n k: number,\n iterations: number = 100\n ): number[][] {\n const dim = matrix.length;\n const eigenvectors: number[][] = [];\n\n for (let i = 0; i < k; i++) {\n // Random initialization\n let v = new Array(dim).fill(0).map(() => Math.random() - 0.5);\n\n // Power iteration\n for (let iter = 0; iter < iterations; iter++) {\n // Multiply by matrix\n const newV = new Array(dim).fill(0);\n for (let r = 0; r < dim; r++) {\n for (let c = 0; c < dim; c++) {\n newV[r] += matrix[r][c] * v[c];\n }\n }\n\n // Orthogonalize against previous eigenvectors\n for (const prev of eigenvectors) {\n let dot = 0;\n for (let j = 0; j < dim; j++) {\n dot += newV[j] * prev[j];\n }\n for (let j = 0; j < dim; j++) {\n newV[j] -= dot * prev[j];\n }\n }\n\n // Normalize\n let norm = 0;\n for (const val of newV) {\n norm += val * val;\n }\n norm = Math.sqrt(norm);\n\n if (norm < 1e-10) break;\n\n v = newV.map(val => val / norm);\n }\n\n eigenvectors.push(v);\n }\n\n return eigenvectors;\n }\n}\n\n// ============================================================================\n// Batch Operations\n// ============================================================================\n\n/**\n * Efficient batch processing utilities\n */\nexport class BatchProcessor {\n /**\n * Batch cosine similarity computation\n */\n static batchCosineSimilarity(\n query: Float32Array,\n vectors: Float32Array[]\n ): Float32Array {\n const similarities = new Float32Array(vectors.length);\n\n // Precompute query norm\n let queryNorm = 0;\n for (let i = 0; i < query.length; i++) {\n queryNorm += query[i] * query[i];\n }\n queryNorm = Math.sqrt(queryNorm);\n\n // Compute similarities\n for (let v = 0; v < vectors.length; v++) {\n const vector = vectors[v];\n let dotProduct = 0;\n let vectorNorm = 0;\n\n for (let i = 0; i < query.length; i++) {\n dotProduct += query[i] * vector[i];\n vectorNorm += vector[i] * vector[i];\n }\n\n vectorNorm = Math.sqrt(vectorNorm);\n similarities[v] = dotProduct / (queryNorm * vectorNorm);\n }\n\n return similarities;\n }\n\n /**\n * Batch vector normalization\n */\n static batchNormalize(vectors: Float32Array[]): Float32Array[] {\n return vectors.map(v => {\n let norm = 0;\n for (let i = 0; i < v.length; i++) {\n norm += v[i] * v[i];\n }\n norm = Math.sqrt(norm);\n\n const normalized = new Float32Array(v.length);\n for (let i = 0; i < v.length; i++) {\n normalized[i] = v[i] / norm;\n }\n return normalized;\n });\n }\n}\n", "/**\n * Browser WASM Attention Wrapper\n *\n * Provides browser-compatible attention mechanisms with:\n * - Lazy WASM loading\n * - Memory management for WASM linear memory\n * - Fallback to JavaScript when WASM unavailable\n * - Loading states and error handling\n *\n * @module browser/AttentionBrowser\n */\n\nexport interface AttentionConfig {\n dimension?: number;\n numHeads?: number;\n blockSize?: number;\n curvature?: number;\n useWASM?: boolean;\n}\n\nexport interface ConsolidationConfig {\n threshold?: number;\n maxClusters?: number;\n minClusterSize?: number;\n}\n\nexport type LoadingState = 'idle' | 'loading' | 'loaded' | 'error';\n\n/**\n * Browser-compatible attention class with WASM support\n */\nexport class AttentionBrowser {\n private wasmModule: any = null;\n private loadingState: LoadingState = 'idle';\n private loadError: Error | null = null;\n private config: AttentionConfig;\n\n constructor(config: AttentionConfig = {}) {\n this.config = {\n dimension: 384,\n numHeads: 4,\n blockSize: 64,\n curvature: -1.0,\n useWASM: true,\n ...config\n };\n }\n\n /**\n * Get current loading state\n */\n getLoadingState(): LoadingState {\n return this.loadingState;\n }\n\n /**\n * Get loading error if any\n */\n getError(): Error | null {\n return this.loadError;\n }\n\n /**\n * Initialize WASM module (lazy loaded)\n */\n async initialize(): Promise<void> {\n if (this.loadingState === 'loaded') return;\n if (this.loadingState === 'loading') {\n // Wait for existing load to complete\n while (this.loadingState === 'loading') {\n await new Promise(resolve => setTimeout(resolve, 50));\n }\n return;\n }\n\n this.loadingState = 'loading';\n\n try {\n if (!this.config.useWASM) {\n // Skip WASM loading\n this.loadingState = 'loaded';\n return;\n }\n\n // Dynamic import of WASM loader\n const wasmLoader = await import('../../dist/agentdb.wasm-loader.js' as string);\n this.wasmModule = await wasmLoader.initWASM();\n this.loadingState = 'loaded';\n } catch (error) {\n this.loadError = error instanceof Error ? error : new Error(String(error));\n this.loadingState = 'error';\n console.warn('WASM initialization failed, using fallback:', this.loadError.message);\n // Don't throw - allow fallback to work\n }\n }\n\n /**\n * Flash Attention - Optimized attention mechanism\n * O(N) memory complexity instead of O(N\u00B2)\n *\n * @param query - Query vectors\n * @param keys - Key vectors\n * @param values - Value vectors\n * @returns Attention output\n */\n async flashAttention(\n query: Float32Array,\n keys: Float32Array,\n values: Float32Array\n ): Promise<Float32Array> {\n await this.initialize();\n\n if (this.wasmModule?.flashAttention) {\n try {\n return this.wasmModule.flashAttention(query, keys, values, this.config);\n } catch (error) {\n console.warn('WASM flash attention failed, using fallback:', error);\n }\n }\n\n // Fallback to JavaScript implementation\n return this.flashAttentionFallback(query, keys, values);\n }\n\n /**\n * Hyperbolic Attention - Attention in hyperbolic space\n * Better for hierarchical relationships\n *\n * @param query - Query vector\n * @param keys - Key vectors\n * @returns Similarity scores in hyperbolic space\n */\n async hyperbolicAttention(\n query: Float32Array,\n keys: Float32Array\n ): Promise<Float32Array> {\n await this.initialize();\n\n if (this.wasmModule?.hyperbolicAttention) {\n try {\n return this.wasmModule.hyperbolicAttention(query, keys, this.config);\n } catch (error) {\n console.warn('WASM hyperbolic attention failed, using fallback:', error);\n }\n }\n\n // Fallback to JavaScript implementation\n return this.hyperbolicAttentionFallback(query, keys);\n }\n\n /**\n * Memory Consolidation - Cluster and consolidate similar memories\n *\n * @param memories - Array of memory vectors\n * @param config - Consolidation configuration\n * @returns Consolidated memory clusters\n */\n async consolidateMemories(\n memories: Float32Array[],\n config: ConsolidationConfig = {}\n ): Promise<Array<{\n memory: Float32Array;\n count: number;\n members: Float32Array[];\n }>> {\n await this.initialize();\n\n const fullConfig = {\n threshold: 0.8,\n maxClusters: 10,\n minClusterSize: 1,\n ...config\n };\n\n if (this.wasmModule?.memoryConsolidation) {\n try {\n return this.wasmModule.memoryConsolidation(memories, fullConfig);\n } catch (error) {\n console.warn('WASM memory consolidation failed, using fallback:', error);\n }\n }\n\n // Fallback to JavaScript implementation\n return this.consolidateMemoriesFallback(memories, fullConfig);\n }\n\n /**\n * Clean up WASM memory\n */\n dispose(): void {\n this.wasmModule = null;\n this.loadingState = 'idle';\n this.loadError = null;\n }\n\n // ========================================================================\n // Fallback Implementations (Pure JavaScript)\n // ========================================================================\n\n private flashAttentionFallback(\n query: Float32Array,\n keys: Float32Array,\n values: Float32Array\n ): Float32Array {\n const { dimension = 384 } = this.config;\n const seqLen = keys.length / dimension;\n const output = new Float32Array(query.length);\n\n for (let i = 0; i < query.length; i += dimension) {\n const q = query.slice(i, i + dimension);\n let sumWeights = 0;\n const weights = new Float32Array(seqLen);\n\n // Compute attention weights\n for (let j = 0; j < seqLen; j++) {\n const k = keys.slice(j * dimension, (j + 1) * dimension);\n let dot = 0;\n for (let d = 0; d < dimension; d++) {\n dot += q[d] * k[d];\n }\n weights[j] = Math.exp(dot / Math.sqrt(dimension));\n sumWeights += weights[j];\n }\n\n // Normalize and apply to values\n for (let j = 0; j < seqLen; j++) {\n weights[j] /= (sumWeights || 1);\n const v = values.slice(j * dimension, (j + 1) * dimension);\n for (let d = 0; d < dimension; d++) {\n output[i + d] += weights[j] * v[d];\n }\n }\n }\n\n return output;\n }\n\n private hyperbolicAttentionFallback(\n query: Float32Array,\n keys: Float32Array\n ): Float32Array {\n const { curvature = -1.0 } = this.config;\n const k = Math.abs(curvature);\n const similarities = new Float32Array(keys.length / query.length);\n\n // Hyperbolic distance computation (Poincar\u00E9 ball model)\n for (let i = 0; i < similarities.length; i++) {\n const offset = i * query.length;\n let dotProduct = 0;\n let normQ = 0;\n let normK = 0;\n\n for (let j = 0; j < query.length; j++) {\n dotProduct += query[j] * keys[offset + j];\n normQ += query[j] * query[j];\n normK += keys[offset + j] * keys[offset + j];\n }\n\n // Euclidean distance\n const euclidean = Math.sqrt(normQ + normK - 2 * dotProduct);\n\n // Poincar\u00E9 distance\n const poincare = Math.acosh(1 + 2 * k * euclidean * euclidean);\n\n // Convert to similarity\n similarities[i] = 1 / (1 + poincare);\n }\n\n return similarities;\n }\n\n private consolidateMemoriesFallback(\n memories: Float32Array[],\n config: ConsolidationConfig\n ): Array<{\n memory: Float32Array;\n count: number;\n members: Float32Array[];\n }> {\n const { threshold = 0.8, maxClusters = 10, minClusterSize = 1 } = config;\n const consolidated: Array<{\n memory: Float32Array;\n count: number;\n members: Float32Array[];\n }> = [];\n const used = new Set<number>();\n\n // Simple agglomerative clustering\n for (let i = 0; i < memories.length; i++) {\n if (used.has(i)) continue;\n\n const cluster: Float32Array[] = [memories[i]];\n used.add(i);\n\n for (let j = i + 1; j < memories.length; j++) {\n if (used.has(j)) continue;\n\n // Compute cosine similarity\n const similarity = this.cosineSimilarity(memories[i], memories[j]);\n\n if (similarity > threshold) {\n cluster.push(memories[j]);\n used.add(j);\n }\n }\n\n // Only include clusters that meet minimum size\n if (cluster.length >= minClusterSize) {\n // Compute cluster centroid\n const centroid = new Float32Array(memories[i].length);\n for (const mem of cluster) {\n for (let k = 0; k < centroid.length; k++) {\n centroid[k] += mem[k] / cluster.length;\n }\n }\n\n // Normalize centroid\n let norm = 0;\n for (let k = 0; k < centroid.length; k++) {\n norm += centroid[k] * centroid[k];\n }\n norm = Math.sqrt(norm);\n if (norm > 0) {\n for (let k = 0; k < centroid.length; k++) {\n centroid[k] /= norm;\n }\n }\n\n consolidated.push({\n memory: centroid,\n count: cluster.length,\n members: cluster\n });\n }\n\n if (consolidated.length >= maxClusters) break;\n }\n\n return consolidated;\n }\n\n private cosineSimilarity(a: Float32Array, b: Float32Array): number {\n let dot = 0;\n let normA = 0;\n let normB = 0;\n\n for (let i = 0; i < a.length; i++) {\n dot += a[i] * b[i];\n normA += a[i] * a[i];\n normB += b[i] * b[i];\n }\n\n const denominator = Math.sqrt(normA * normB);\n return denominator > 0 ? dot / denominator : 0;\n }\n}\n\n/**\n * Create attention instance with default config\n */\nexport function createAttention(config?: AttentionConfig): AttentionBrowser {\n return new AttentionBrowser(config);\n}\n\n/**\n * Create attention instance optimized for speed\n */\nexport function createFastAttention(): AttentionBrowser {\n return new AttentionBrowser({\n dimension: 256,\n numHeads: 2,\n blockSize: 32,\n useWASM: true\n });\n}\n\n/**\n * Create attention instance optimized for quality\n */\nexport function createAccurateAttention(): AttentionBrowser {\n return new AttentionBrowser({\n dimension: 768,\n numHeads: 8,\n blockSize: 128,\n useWASM: true\n });\n}\n", "/**\n * AgentDB Browser Advanced Features\n *\n * Unified export for all browser-compatible advanced features.\n *\n * Features:\n * - Product Quantization (PQ8/PQ16/PQ32) - 4-32x memory compression\n * - HNSW Indexing - 10-20x faster approximate search\n * - Graph Neural Networks - Graph attention and message passing\n * - MMR Diversity - Maximal marginal relevance ranking\n * - Tensor Compression - SVD dimension reduction\n * - Batch Operations - Optimized vector processing\n * - WASM Attention - High-performance attention mechanisms (lazy loaded)\n *\n * Bundle Size: ~35 KB minified (~12 KB gzipped)\n * WASM Module: ~157 KB (lazy loaded on demand)\n */\n\n// ============================================================================\n// Product Quantization\n// ============================================================================\n\nexport {\n ProductQuantization,\n createPQ8,\n createPQ16,\n createPQ32,\n type PQConfig,\n type PQCodebook,\n type CompressedVector\n} from './ProductQuantization';\n\n// ============================================================================\n// HNSW Indexing\n// ============================================================================\n\nexport {\n HNSWIndex,\n createHNSW,\n createFastHNSW,\n createAccurateHNSW,\n type HNSWConfig,\n type HNSWNode,\n type SearchResult\n} from './HNSWIndex';\n\n// ============================================================================\n// Advanced Features\n// ============================================================================\n\nexport {\n GraphNeuralNetwork,\n MaximalMarginalRelevance,\n TensorCompression,\n BatchProcessor,\n type GNNNode,\n type GNNEdge,\n type GNNConfig,\n type MMRConfig\n} from './AdvancedFeatures';\n\n// ============================================================================\n// WASM Attention (Browser-Compatible)\n// ============================================================================\n\nexport {\n AttentionBrowser,\n createAttention,\n createFastAttention,\n createAccurateAttention,\n type AttentionConfig,\n type ConsolidationConfig,\n type LoadingState\n} from './AttentionBrowser';\n\n// ============================================================================\n// Feature Detection\n// ============================================================================\n\n/**\n * Detect available browser features\n */\nexport function detectFeatures() {\n return {\n indexedDB: 'indexedDB' in globalThis,\n broadcastChannel: 'BroadcastChannel' in globalThis,\n webWorkers: typeof (globalThis as any).Worker !== 'undefined',\n wasmSIMD: detectWasmSIMD(),\n sharedArrayBuffer: typeof SharedArrayBuffer !== 'undefined'\n };\n}\n\n/**\n * Detect WASM SIMD support\n */\nasync function detectWasmSIMD(): Promise<boolean> {\n try {\n // Check if WebAssembly is available (browser context)\n if (typeof (globalThis as any).WebAssembly === 'undefined') {\n return false;\n }\n\n // WASM SIMD detection via feature test\n const simdTest = new Uint8Array([\n 0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00,\n 0x01, 0x05, 0x01, 0x60, 0x00, 0x01, 0x7b, 0x03,\n 0x02, 0x01, 0x00, 0x0a, 0x0a, 0x01, 0x08, 0x00,\n 0xfd, 0x0c, 0xfd, 0x0c, 0xfd, 0x54, 0x0b\n ]);\n\n const WA = (globalThis as any).WebAssembly;\n const module = await WA.instantiate(simdTest);\n return module instanceof WA.Instance;\n } catch {\n return false;\n }\n}\n\n// ============================================================================\n// Configuration Presets\n// ============================================================================\n\n/**\n * Recommended configuration for small datasets (<1K vectors)\n */\nexport const SMALL_DATASET_CONFIG = {\n pq: { enabled: false },\n hnsw: { enabled: false },\n gnn: { enabled: true, numHeads: 2 },\n mmr: { enabled: true, lambda: 0.7 },\n svd: { enabled: false }\n};\n\n/**\n * Recommended configuration for medium datasets (1K-10K vectors)\n */\nexport const MEDIUM_DATASET_CONFIG = {\n pq: { enabled: true, subvectors: 8 },\n hnsw: { enabled: true, M: 16 },\n gnn: { enabled: true, numHeads: 4 },\n mmr: { enabled: true, lambda: 0.7 },\n svd: { enabled: false }\n};\n\n/**\n * Recommended configuration for large datasets (10K-100K vectors)\n */\nexport const LARGE_DATASET_CONFIG = {\n pq: { enabled: true, subvectors: 16 },\n hnsw: { enabled: true, M: 32 },\n gnn: { enabled: true, numHeads: 4 },\n mmr: { enabled: true, lambda: 0.7 },\n svd: { enabled: true, targetDim: 128 }\n};\n\n/**\n * Memory-optimized configuration (minimal memory usage)\n */\nexport const MEMORY_OPTIMIZED_CONFIG = {\n pq: { enabled: true, subvectors: 32 }, // 16x compression\n hnsw: { enabled: true, M: 8 }, // Fewer connections\n gnn: { enabled: false },\n mmr: { enabled: false },\n svd: { enabled: true, targetDim: 64 } // Aggressive dimension reduction\n};\n\n/**\n * Speed-optimized configuration (fastest search)\n */\nexport const SPEED_OPTIMIZED_CONFIG = {\n pq: { enabled: false }, // No compression overhead\n hnsw: { enabled: true, M: 32, efSearch: 100 }, // Maximum HNSW quality\n gnn: { enabled: false },\n mmr: { enabled: false },\n svd: { enabled: false }\n};\n\n/**\n * Quality-optimized configuration (best result quality)\n */\nexport const QUALITY_OPTIMIZED_CONFIG = {\n pq: { enabled: false }, // No compression\n hnsw: { enabled: true, M: 48, efConstruction: 400 }, // Highest quality\n gnn: { enabled: true, numHeads: 8 }, // More attention heads\n mmr: { enabled: true, lambda: 0.8 }, // More diversity\n svd: { enabled: false } // No dimension loss\n};\n\n// ============================================================================\n// Version Information\n// ============================================================================\n\nexport const VERSION = {\n major: 2,\n minor: 0,\n patch: 0,\n prerelease: 'alpha.2',\n features: 'advanced',\n full: '2.0.0-alpha.2+advanced'\n};\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\n/**\n * Estimate memory usage for configuration\n */\nexport function estimateMemoryUsage(\n numVectors: number,\n dimension: number,\n config: any\n): {\n vectors: number;\n index: number;\n total: number;\n totalMB: number;\n} {\n let vectorBytes = numVectors * dimension * 4; // Float32Array\n\n // Apply PQ compression\n if (config.pq?.enabled) {\n const subvectors = config.pq.subvectors || 8;\n vectorBytes = numVectors * (subvectors + 4); // codes + norm\n }\n\n // Apply SVD compression\n if (config.svd?.enabled) {\n const targetDim = config.svd.targetDim || dimension / 2;\n vectorBytes = numVectors * targetDim * 4;\n }\n\n // HNSW index overhead\n let indexBytes = 0;\n if (config.hnsw?.enabled) {\n const M = config.hnsw.M || 16;\n const avgConnections = M * 1.5; // Estimate\n indexBytes = numVectors * avgConnections * 4; // Connection IDs\n }\n\n const total = vectorBytes + indexBytes;\n\n return {\n vectors: vectorBytes,\n index: indexBytes,\n total,\n totalMB: total / (1024 * 1024)\n };\n}\n\n/**\n * Recommend configuration based on dataset size\n */\nexport function recommendConfig(numVectors: number, dimension: number) {\n if (numVectors < 1000) {\n return {\n name: 'SMALL_DATASET',\n config: SMALL_DATASET_CONFIG,\n reason: 'Small dataset, linear search is fast enough'\n };\n } else if (numVectors < 10000) {\n return {\n name: 'MEDIUM_DATASET',\n config: MEDIUM_DATASET_CONFIG,\n reason: 'Medium dataset, HNSW + PQ8 recommended'\n };\n } else {\n return {\n name: 'LARGE_DATASET',\n config: LARGE_DATASET_CONFIG,\n reason: 'Large dataset, aggressive compression + HNSW recommended'\n };\n }\n}\n\n/**\n * Benchmark search performance\n */\nexport async function benchmarkSearch(\n searchFn: (query: Float32Array, k: number) => any[],\n numQueries: number = 100,\n k: number = 10,\n dimension: number = 384\n): Promise<{\n avgTimeMs: number;\n minTimeMs: number;\n maxTimeMs: number;\n p50Ms: number;\n p95Ms: number;\n p99Ms: number;\n}> {\n const times: number[] = [];\n\n for (let i = 0; i < numQueries; i++) {\n const query = new Float32Array(dimension);\n for (let d = 0; d < dimension; d++) {\n query[d] = Math.random() - 0.5;\n }\n\n const start = performance.now();\n searchFn(query, k);\n const end = performance.now();\n\n times.push(end - start);\n }\n\n times.sort((a, b) => a - b);\n\n return {\n avgTimeMs: times.reduce((a, b) => a + b, 0) / times.length,\n minTimeMs: times[0],\n maxTimeMs: times[times.length - 1],\n p50Ms: times[Math.floor(times.length * 0.5)],\n p95Ms: times[Math.floor(times.length * 0.95)],\n p99Ms: times[Math.floor(times.length * 0.99)]\n };\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["fDist"]
7
+ }
@@ -0,0 +1,3 @@
1
+ /*! AgentDB Browser Bundle v3.0.0-alpha.1 | MIT | https://agentdb.ruv.io */
2
+ var p=class{config;codebook=null;trained=!1;constructor(e){if(this.config={dimension:e.dimension,numSubvectors:e.numSubvectors,numCentroids:e.numCentroids,maxIterations:e.maxIterations||50,convergenceThreshold:e.convergenceThreshold||1e-4},this.config.dimension%this.config.numSubvectors!==0)throw new Error(`Dimension ${this.config.dimension} must be divisible by numSubvectors ${this.config.numSubvectors}`)}async train(e){if(e.length===0)throw new Error("Training requires at least one vector");let t=this.config.dimension/this.config.numSubvectors,o=[];console.log(`[PQ] Training ${this.config.numSubvectors} subvectors with ${this.config.numCentroids} centroids each...`);for(let n=0;n<this.config.numSubvectors;n++){let r=n*t,s=r+t,i=e.map(c=>c.slice(r,s)),a=await this.kMeans(i,this.config.numCentroids);o.push(...a),((n+1)%4===0||n===this.config.numSubvectors-1)&&console.log(`[PQ] Trained ${n+1}/${this.config.numSubvectors} subvectors`)}this.codebook={subvectorDim:t,numSubvectors:this.config.numSubvectors,numCentroids:this.config.numCentroids,centroids:o},this.trained=!0,console.log("[PQ] Training complete")}async kMeans(e,t){let o=e[0].length,n=e.length,r=this.kMeansPlusPlus(e,t),s=new Uint32Array(n),i=1/0;for(let a=0;a<this.config.maxIterations;a++){let c=0;for(let d=0;d<n;d++){let m=1/0,f=0;for(let b=0;b<t;b++){let g=this.squaredDistance(e[d],r[b]);g<m&&(m=g,f=b)}s[d]=f,c+=m}if(Math.abs(i-c)<this.config.convergenceThreshold)break;i=c;let u=new Uint32Array(t),l=Array.from({length:t},()=>new Float32Array(o));for(let d=0;d<n;d++){let m=s[d];u[m]++;for(let f=0;f<o;f++)l[m][f]+=e[d][f]}for(let d=0;d<t;d++)if(u[d]>0)for(let m=0;m<o;m++)r[d][m]=l[d][m]/u[d]}return r}kMeansPlusPlus(e,t){let o=e.length,n=e[0].length,r=[],s=Math.floor(Math.random()*o);r.push(new Float32Array(e[s]));for(let i=1;i<t;i++){let a=new Float32Array(o),c=0;for(let l=0;l<o;l++){let d=1/0;for(let m of r){let f=this.squaredDistance(e[l],m);d=Math.min(d,f)}a[l]=d,c+=d}let u=Math.random()*c;for(let l=0;l<o;l++)if(u-=a[l],u<=0){r.push(new Float32Array(e[l]));break}}return r}compress(e){if(!this.trained||!this.codebook)throw new Error("Codebook must be trained before compression");let t=new Uint8Array(this.config.numSubvectors),o=this.codebook.subvectorDim,n=0;for(let r=0;r<e.length;r++)n+=e[r]*e[r];n=Math.sqrt(n);for(let r=0;r<this.config.numSubvectors;r++){let s=r*o,i=e.slice(s,s+o),a=1/0,c=0,u=r*this.config.numCentroids;for(let l=0;l<this.config.numCentroids;l++){let d=this.codebook.centroids[u+l],m=this.squaredDistance(i,d);m<a&&(a=m,c=l)}t[r]=c}return{codes:t,norm:n}}decompress(e){if(!this.codebook)throw new Error("Codebook not available");let t=new Float32Array(this.config.dimension),o=this.codebook.subvectorDim;for(let n=0;n<this.config.numSubvectors;n++){let r=e.codes[n],s=n*this.config.numCentroids,i=this.codebook.centroids[s+r],a=n*o;for(let c=0;c<o;c++)t[a+c]=i[c]}return t}asymmetricDistance(e,t){if(!this.codebook)throw new Error("Codebook not available");let o=0,n=this.codebook.subvectorDim;for(let r=0;r<this.config.numSubvectors;r++){let s=t.codes[r],i=r*this.config.numCentroids,a=this.codebook.centroids[i+s],c=r*n,u=e.slice(c,c+n);o+=this.squaredDistance(u,a)}return Math.sqrt(o)}batchCompress(e){return e.map(t=>this.compress(t))}getCompressionRatio(){let e=this.config.dimension*4,t=this.config.numSubvectors+4;return e/t}exportCodebook(){if(!this.codebook)throw new Error("No codebook to export");return JSON.stringify({config:this.config,codebook:{subvectorDim:this.codebook.subvectorDim,numSubvectors:this.codebook.numSubvectors,numCentroids:this.codebook.numCentroids,centroids:this.codebook.centroids.map(e=>Array.from(e))}})}importCodebook(e){let t=JSON.parse(e);this.config=t.config,this.codebook={subvectorDim:t.codebook.subvectorDim,numSubvectors:t.codebook.numSubvectors,numCentroids:t.codebook.numCentroids,centroids:t.codebook.centroids.map(o=>new Float32Array(o))},this.trained=!0}squaredDistance(e,t){let o=0;for(let n=0;n<e.length;n++){let r=e[n]-t[n];o+=r*r}return o}getStats(){let e=this.getCompressionRatio(),t=this.config.numSubvectors+4,o=this.codebook?this.config.numSubvectors*this.config.numCentroids*(this.config.dimension/this.config.numSubvectors)*4:0;return{trained:this.trained,compressionRatio:e,memoryPerVector:t,codebookSize:o}}};function N(h){return new p({dimension:h,numSubvectors:8,numCentroids:256,maxIterations:50})}function D(h){return new p({dimension:h,numSubvectors:16,numCentroids:256,maxIterations:50})}function P(h){return new p({dimension:h,numSubvectors:32,numCentroids:256,maxIterations:50})}var v=class{items=[];push(e,t){this.items.push({item:e,priority:t}),this.bubbleUp(this.items.length-1)}pop(){if(this.items.length===0)return;let e=this.items[0].item,t=this.items.pop();return this.items.length>0&&(this.items[0]=t,this.bubbleDown(0)),e}peek(){var e;return(e=this.items[0])==null?void 0:e.item}size(){return this.items.length}bubbleUp(e){for(;e>0;){let t=Math.floor((e-1)/2);if(this.items[e].priority>=this.items[t].priority)break;[this.items[e],this.items[t]]=[this.items[t],this.items[e]],e=t}}bubbleDown(e){for(;;){let t=2*e+1,o=2*e+2,n=e;if(t<this.items.length&&this.items[t].priority<this.items[n].priority&&(n=t),o<this.items.length&&this.items[o].priority<this.items[n].priority&&(n=o),n===e)break;[this.items[e],this.items[n]]=[this.items[n],this.items[e]],e=n}}},y=class{config;nodes=new Map;entryPoint=null;currentId=0;ml;constructor(e={}){this.config={dimension:e.dimension||384,M:e.M||16,efConstruction:e.efConstruction||200,efSearch:e.efSearch||50,ml:e.ml||1/Math.log(2),maxLayers:e.maxLayers||16,distanceFunction:e.distanceFunction||"cosine"},this.ml=this.config.ml}add(e,t){let o=t!==void 0?t:this.currentId++,n=this.randomLevel(),r={id:o,vector:e,level:n,connections:new Map};for(let a=0;a<=n;a++)r.connections.set(a,[]);if(this.entryPoint===null)return this.entryPoint=o,this.nodes.set(o,r),o;let s=this.entryPoint,i=s;for(let a=this.nodes.get(s).level;a>n;a--)i=this.searchLayer(e,i,1,a)[0];for(let a=Math.min(n,this.nodes.get(s).level);a>=0;a--){let c=this.searchLayer(e,i,this.config.efConstruction,a),u=a===0?this.config.M*2:this.config.M,l=this.selectNeighbors(e,c,u);for(let d of l){this.connect(o,d,a),this.connect(d,o,a);let m=this.nodes.get(d),f=m.connections.get(a);if(f.length>u){let b=this.selectNeighbors(m.vector,f,u);m.connections.set(a,b)}}i=c[0]}return n>this.nodes.get(this.entryPoint).level&&(this.entryPoint=o),this.nodes.set(o,r),o}search(e,t,o){if(this.entryPoint===null)return[];o=o||Math.max(this.config.efSearch,t);let n=this.entryPoint,r=n;for(let i=this.nodes.get(n).level;i>0;i--)r=this.searchLayer(e,r,1,i)[0];return this.searchLayer(e,r,o,0).slice(0,t).map(i=>({id:i,distance:this.distance(e,this.nodes.get(i).vector),vector:this.nodes.get(i).vector}))}searchLayer(e,t,o,n){let r=new Set,s=new v,i=new v,a=this.distance(e,this.nodes.get(t).vector);for(s.push(t,a),i.push(t,-a),r.add(t);s.size()>0;){let u=s.pop(),l=-i.peek();if(this.distance(e,this.nodes.get(u).vector)>l)break;let m=this.nodes.get(u).connections.get(n)||[];for(let f of m){if(r.has(f))continue;r.add(f);let b=this.distance(e,this.nodes.get(f).vector),g=-i.peek();(b<g||i.size()<o)&&(s.push(f,b),i.push(f,-b),i.size()>o&&i.pop())}}let c=[];for(;i.size()>0;)c.unshift(i.pop());return c}selectNeighbors(e,t,o){return t.length<=o?t:t.map(r=>({id:r,distance:this.distance(e,this.nodes.get(r).vector)})).sort((r,s)=>r.distance-s.distance).slice(0,o).map(r=>r.id)}connect(e,t,o){let r=this.nodes.get(e).connections.get(o);r.includes(t)||r.push(t)}randomLevel(){let e=0;for(;Math.random()<this.ml&&e<this.config.maxLayers-1;)e++;return e}distance(e,t){switch(this.config.distanceFunction){case"cosine":return 1-this.cosineSimilarity(e,t);case"euclidean":return this.euclideanDistance(e,t);case"manhattan":return this.manhattanDistance(e,t);default:return 1-this.cosineSimilarity(e,t)}}cosineSimilarity(e,t){let o=0,n=0,r=0;for(let s=0;s<e.length;s++)o+=e[s]*t[s],n+=e[s]*e[s],r+=t[s]*t[s];return o/(Math.sqrt(n)*Math.sqrt(r))}euclideanDistance(e,t){let o=0;for(let n=0;n<e.length;n++){let r=e[n]-t[n];o+=r*r}return Math.sqrt(o)}manhattanDistance(e,t){let o=0;for(let n=0;n<e.length;n++)o+=Math.abs(e[n]-t[n]);return o}getStats(){if(this.nodes.size===0)return{numNodes:0,numLayers:0,avgConnections:0,entryPointLevel:0,memoryBytes:0};let e=Math.max(...Array.from(this.nodes.values()).map(a=>a.level)),t=0;for(let a of this.nodes.values())for(let c of a.connections.values())t+=c.length;let o=t/this.nodes.size,n=this.config.dimension*4,r=o*4,i=this.nodes.size*(n+r+100);return{numNodes:this.nodes.size,numLayers:e+1,avgConnections:o,entryPointLevel:this.entryPoint?this.nodes.get(this.entryPoint).level:0,memoryBytes:i}}export(){let e={config:this.config,entryPoint:this.entryPoint,currentId:this.currentId,nodes:Array.from(this.nodes.entries()).map(([t,o])=>({id:t,vector:Array.from(o.vector),level:o.level,connections:Array.from(o.connections.entries())}))};return JSON.stringify(e)}import(e){let t=JSON.parse(e);this.config=t.config,this.entryPoint=t.entryPoint,this.currentId=t.currentId,this.nodes.clear();for(let o of t.nodes){let n={id:o.id,vector:new Float32Array(o.vector),level:o.level,connections:new Map(o.connections)};this.nodes.set(o.id,n)}}clear(){this.nodes.clear(),this.entryPoint=null,this.currentId=0}size(){return this.nodes.size}};function k(h){return new y({dimension:h,M:16,efConstruction:200,efSearch:50})}function I(h){return new y({dimension:h,M:8,efConstruction:100,efSearch:30})}function T(h){return new y({dimension:h,M:32,efConstruction:400,efSearch:100})}var M=class{config;nodes=new Map;edges=[];attentionWeights=new Map;constructor(e={}){this.config={hiddenDim:e.hiddenDim||64,numHeads:e.numHeads||4,dropout:e.dropout||.1,learningRate:e.learningRate||.01,attentionType:e.attentionType||"gat"}}addNode(e,t){this.nodes.set(e,{id:e,features:t,neighbors:[]})}addEdge(e,t,o=1){this.edges.push({from:e,to:t,weight:o});let n=this.nodes.get(e),r=this.nodes.get(t);n&&!n.neighbors.includes(t)&&n.neighbors.push(t),r&&!r.neighbors.includes(e)&&r.neighbors.push(e)}graphAttention(e){let t=this.nodes.get(e);if(!t)throw new Error(`Node ${e} not found`);let o=t.neighbors;if(o.length===0)return t.features;let n=Math.floor(this.config.hiddenDim/this.config.numHeads),r=new Float32Array(this.config.hiddenDim);for(let s=0;s<this.config.numHeads;s++){let i=0,a=new Float32Array(n);for(let u of o){let l=this.nodes.get(u),d=this.computeAttentionScore(t.features,l.features,s);i+=d;for(let m=0;m<n&&m<l.features.length;m++)a[m]+=d*l.features[m]}if(i>0)for(let u=0;u<n;u++)a[u]/=i;let c=s*n;for(let u=0;u<n;u++)r[c+u]=a[u]}for(let s=0;s<r.length;s++)r[s]=r[s]>0?r[s]:.01*r[s];return r}computeAttentionScore(e,t,o){let n=0,r=Math.min(e.length,t.length);for(let s=0;s<r;s++)n+=e[s]*t[s];return Math.exp(n/Math.sqrt(r))}messagePass(){let e=new Map;for(let[t]of this.nodes)e.set(t,this.graphAttention(t));return e}update(e){for(let[t,o]of e){let n=this.nodes.get(t);n&&(n.features=o)}}computeGraphEmbedding(e,t=2){new Map().set(e,this.nodes.get(e).features);for(let n=0;n<t;n++){let r=this.messagePass();this.update(r)}return this.nodes.get(e).features}getStats(){return{numNodes:this.nodes.size,numEdges:this.edges.length,avgDegree:this.edges.length/Math.max(this.nodes.size,1),config:this.config}}},S=class{config;constructor(e={}){this.config={lambda:e.lambda||.7,metric:e.metric||"cosine"}}rerank(e,t,o){if(t.length===0)return[];let n=[],r=new Set(t.map((a,c)=>c)),s=0,i=-1/0;for(let a=0;a<t.length;a++)t[a].score>i&&(i=t[a].score,s=a);for(n.push(t[s].id),r.delete(s);n.length<o&&r.size>0;){let a=-1/0,c=-1;for(let u of r){let l=t[u],d=this.similarity(e,l.vector),m=-1/0;for(let b of n){let g=t.find(x=>x.id===b),C=this.similarity(l.vector,g.vector);m=Math.max(m,C)}let f=this.config.lambda*d-(1-this.config.lambda)*m;f>a&&(a=f,c=u)}if(c!==-1)n.push(t[c].id),r.delete(c);else break}return n}similarity(e,t){return this.config.metric==="cosine"?this.cosineSimilarity(e,t):1/(1+this.euclideanDistance(e,t))}cosineSimilarity(e,t){let o=0,n=0,r=0;for(let s=0;s<e.length;s++)o+=e[s]*t[s],n+=e[s]*e[s],r+=t[s]*t[s];return o/(Math.sqrt(n)*Math.sqrt(r))}euclideanDistance(e,t){let o=0;for(let n=0;n<e.length;n++){let r=e[n]-t[n];o+=r*r}return Math.sqrt(o)}setLambda(e){this.config.lambda=Math.max(0,Math.min(1,e))}},w=class{static compress(e,t){if(e.length===0)return[];let o=e[0].length;if(t>=o)return e;let n=e.map(u=>Array.from(u)),r=this.computeMean(n),s=n.map(u=>u.map((l,d)=>l-r[d])),i=this.computeCovariance(s),a=this.powerIteration(i,t);return s.map(u=>{let l=new Float32Array(t);for(let d=0;d<t;d++){let m=0;for(let f=0;f<o;f++)m+=u[f]*a[d][f];l[d]=m}return l})}static computeMean(e){let t=e.length,o=e[0].length,n=new Array(o).fill(0);for(let r of e)for(let s=0;s<o;s++)n[s]+=r[s];return n.map(r=>r/t)}static computeCovariance(e){let t=e.length,o=e[0].length,n=Array.from({length:o},()=>new Array(o).fill(0));for(let r=0;r<o;r++)for(let s=0;s<=r;s++){let i=0;for(let a of e)i+=a[r]*a[s];n[r][s]=n[s][r]=i/t}return n}static powerIteration(e,t,o=100){let n=e.length,r=[];for(let s=0;s<t;s++){let i=new Array(n).fill(0).map(()=>Math.random()-.5);for(let a=0;a<o;a++){let c=new Array(n).fill(0);for(let l=0;l<n;l++)for(let d=0;d<n;d++)c[l]+=e[l][d]*i[d];for(let l of r){let d=0;for(let m=0;m<n;m++)d+=c[m]*l[m];for(let m=0;m<n;m++)c[m]-=d*l[m]}let u=0;for(let l of c)u+=l*l;if(u=Math.sqrt(u),u<1e-10)break;i=c.map(l=>l/u)}r.push(i)}return r}},F=class{static batchCosineSimilarity(e,t){let o=new Float32Array(t.length),n=0;for(let r=0;r<e.length;r++)n+=e[r]*e[r];n=Math.sqrt(n);for(let r=0;r<t.length;r++){let s=t[r],i=0,a=0;for(let c=0;c<e.length;c++)i+=e[c]*s[c],a+=s[c]*s[c];a=Math.sqrt(a),o[r]=i/(n*a)}return o}static batchNormalize(e){return e.map(t=>{let o=0;for(let r=0;r<t.length;r++)o+=t[r]*t[r];o=Math.sqrt(o);let n=new Float32Array(t.length);for(let r=0;r<t.length;r++)n[r]=t[r]/o;return n})}};var A=class{wasmModule=null;loadingState="idle";loadError=null;config;constructor(e={}){this.config={dimension:384,numHeads:4,blockSize:64,curvature:-1,useWASM:!0,...e}}getLoadingState(){return this.loadingState}getError(){return this.loadError}async initialize(){if(this.loadingState!=="loaded"){if(this.loadingState==="loading"){for(;this.loadingState==="loading";)await new Promise(e=>setTimeout(e,50));return}this.loadingState="loading";try{if(!this.config.useWASM){this.loadingState="loaded";return}let e=await import("../../dist/agentdb.wasm-loader.js");this.wasmModule=await e.initWASM(),this.loadingState="loaded"}catch(e){this.loadError=e instanceof Error?e:new Error(String(e)),this.loadingState="error",console.warn("WASM initialization failed, using fallback:",this.loadError.message)}}}async flashAttention(e,t,o){var n;if(await this.initialize(),(n=this.wasmModule)!=null&&n.flashAttention)try{return this.wasmModule.flashAttention(e,t,o,this.config)}catch(r){console.warn("WASM flash attention failed, using fallback:",r)}return this.flashAttentionFallback(e,t,o)}async hyperbolicAttention(e,t){var o;if(await this.initialize(),(o=this.wasmModule)!=null&&o.hyperbolicAttention)try{return this.wasmModule.hyperbolicAttention(e,t,this.config)}catch(n){console.warn("WASM hyperbolic attention failed, using fallback:",n)}return this.hyperbolicAttentionFallback(e,t)}async consolidateMemories(e,t={}){var n;await this.initialize();let o={threshold:.8,maxClusters:10,minClusterSize:1,...t};if((n=this.wasmModule)!=null&&n.memoryConsolidation)try{return this.wasmModule.memoryConsolidation(e,o)}catch(r){console.warn("WASM memory consolidation failed, using fallback:",r)}return this.consolidateMemoriesFallback(e,o)}dispose(){this.wasmModule=null,this.loadingState="idle",this.loadError=null}flashAttentionFallback(e,t,o){let{dimension:n=384}=this.config,r=t.length/n,s=new Float32Array(e.length);for(let i=0;i<e.length;i+=n){let a=e.slice(i,i+n),c=0,u=new Float32Array(r);for(let l=0;l<r;l++){let d=t.slice(l*n,(l+1)*n),m=0;for(let f=0;f<n;f++)m+=a[f]*d[f];u[l]=Math.exp(m/Math.sqrt(n)),c+=u[l]}for(let l=0;l<r;l++){u[l]/=c||1;let d=o.slice(l*n,(l+1)*n);for(let m=0;m<n;m++)s[i+m]+=u[l]*d[m]}}return s}hyperbolicAttentionFallback(e,t){let{curvature:o=-1}=this.config,n=Math.abs(o),r=new Float32Array(t.length/e.length);for(let s=0;s<r.length;s++){let i=s*e.length,a=0,c=0,u=0;for(let m=0;m<e.length;m++)a+=e[m]*t[i+m],c+=e[m]*e[m],u+=t[i+m]*t[i+m];let l=Math.sqrt(c+u-2*a),d=Math.acosh(1+2*n*l*l);r[s]=1/(1+d)}return r}consolidateMemoriesFallback(e,t){let{threshold:o=.8,maxClusters:n=10,minClusterSize:r=1}=t,s=[],i=new Set;for(let a=0;a<e.length;a++){if(i.has(a))continue;let c=[e[a]];i.add(a);for(let u=a+1;u<e.length;u++){if(i.has(u))continue;this.cosineSimilarity(e[a],e[u])>o&&(c.push(e[u]),i.add(u))}if(c.length>=r){let u=new Float32Array(e[a].length);for(let d of c)for(let m=0;m<u.length;m++)u[m]+=d[m]/c.length;let l=0;for(let d=0;d<u.length;d++)l+=u[d]*u[d];if(l=Math.sqrt(l),l>0)for(let d=0;d<u.length;d++)u[d]/=l;s.push({memory:u,count:c.length,members:c})}if(s.length>=n)break}return s}cosineSimilarity(e,t){let o=0,n=0,r=0;for(let i=0;i<e.length;i++)o+=e[i]*t[i],n+=e[i]*e[i],r+=t[i]*t[i];let s=Math.sqrt(n*r);return s>0?o/s:0}};function E(h){return new A(h)}function W(){return new A({dimension:256,numHeads:2,blockSize:32,useWASM:!0})}function L(){return new A({dimension:768,numHeads:8,blockSize:128,useWASM:!0})}function _(){return{indexedDB:"indexedDB"in globalThis,broadcastChannel:"BroadcastChannel"in globalThis,webWorkers:typeof globalThis.Worker<"u",wasmSIMD:z(),sharedArrayBuffer:typeof SharedArrayBuffer<"u"}}async function z(){try{if(typeof globalThis.WebAssembly>"u")return!1;let h=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,253,12,253,12,253,84,11]),e=globalThis.WebAssembly;return await e.instantiate(h)instanceof e.Instance}catch{return!1}}var H={pq:{enabled:!1},hnsw:{enabled:!1},gnn:{enabled:!0,numHeads:2},mmr:{enabled:!0,lambda:.7},svd:{enabled:!1}},B={pq:{enabled:!0,subvectors:8},hnsw:{enabled:!0,M:16},gnn:{enabled:!0,numHeads:4},mmr:{enabled:!0,lambda:.7},svd:{enabled:!1}},q={pq:{enabled:!0,subvectors:16},hnsw:{enabled:!0,M:32},gnn:{enabled:!0,numHeads:4},mmr:{enabled:!0,lambda:.7},svd:{enabled:!0,targetDim:128}},j={pq:{enabled:!0,subvectors:32},hnsw:{enabled:!0,M:8},gnn:{enabled:!1},mmr:{enabled:!1},svd:{enabled:!0,targetDim:64}},U={pq:{enabled:!1},hnsw:{enabled:!0,M:32,efSearch:100},gnn:{enabled:!1},mmr:{enabled:!1},svd:{enabled:!1}},$={pq:{enabled:!1},hnsw:{enabled:!0,M:48,efConstruction:400},gnn:{enabled:!0,numHeads:8},mmr:{enabled:!0,lambda:.8},svd:{enabled:!1}},V={major:2,minor:0,patch:0,prerelease:"alpha.2",features:"advanced",full:"2.0.0-alpha.2+advanced"};function J(h,e,t){var s,i,a;let o=h*e*4;if((s=t.pq)!=null&&s.enabled){let c=t.pq.subvectors||8;o=h*(c+4)}if((i=t.svd)!=null&&i.enabled){let c=t.svd.targetDim||e/2;o=h*c*4}let n=0;if((a=t.hnsw)!=null&&a.enabled){let u=(t.hnsw.M||16)*1.5;n=h*u*4}let r=o+n;return{vectors:o,index:n,total:r,totalMB:r/(1024*1024)}}function Z(h,e){return h<1e3?{name:"SMALL_DATASET",config:H,reason:"Small dataset, linear search is fast enough"}:h<1e4?{name:"MEDIUM_DATASET",config:B,reason:"Medium dataset, HNSW + PQ8 recommended"}:{name:"LARGE_DATASET",config:q,reason:"Large dataset, aggressive compression + HNSW recommended"}}async function Y(h,e=100,t=10,o=384){let n=[];for(let r=0;r<e;r++){let s=new Float32Array(o);for(let c=0;c<o;c++)s[c]=Math.random()-.5;let i=performance.now();h(s,t);let a=performance.now();n.push(a-i)}return n.sort((r,s)=>r-s),{avgTimeMs:n.reduce((r,s)=>r+s,0)/n.length,minTimeMs:n[0],maxTimeMs:n[n.length-1],p50Ms:n[Math.floor(n.length*.5)],p95Ms:n[Math.floor(n.length*.95)],p99Ms:n[Math.floor(n.length*.99)]}}export{A as AttentionBrowser,F as BatchProcessor,M as GraphNeuralNetwork,y as HNSWIndex,q as LARGE_DATASET_CONFIG,B as MEDIUM_DATASET_CONFIG,j as MEMORY_OPTIMIZED_CONFIG,S as MaximalMarginalRelevance,p as ProductQuantization,$ as QUALITY_OPTIMIZED_CONFIG,H as SMALL_DATASET_CONFIG,U as SPEED_OPTIMIZED_CONFIG,w as TensorCompression,V as VERSION,Y as benchmarkSearch,L as createAccurateAttention,T as createAccurateHNSW,E as createAttention,W as createFastAttention,I as createFastHNSW,k as createHNSW,D as createPQ16,P as createPQ32,N as createPQ8,_ as detectFeatures,J as estimateMemoryUsage,Z as recommendConfig};
3
+ //# sourceMappingURL=agentdb.browser.min.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/browser/ProductQuantization.ts", "../src/browser/HNSWIndex.ts", "../src/browser/AdvancedFeatures.ts", "../src/browser/AttentionBrowser.ts", "../src/browser/index.ts"],
4
+ "sourcesContent": ["/**\n * Product Quantization for Browser\n *\n * Compresses high-dimensional vectors using product quantization.\n * Achieves 4-32x memory reduction with minimal accuracy loss.\n *\n * Features:\n * - PQ8: 8 subvectors, 256 centroids each (4x compression)\n * - PQ16: 16 subvectors, 256 centroids each (8x compression)\n * - Asymmetric distance computation (ADC)\n * - K-means clustering for codebook training\n *\n * Performance:\n * - Memory: Float32 (4 bytes) \u2192 uint8 (1 byte) per subvector\n * - Speed: ~1.5x slower search vs uncompressed\n * - Accuracy: 95-99% recall@10\n */\n\nexport interface PQConfig {\n dimension: number;\n numSubvectors: number; // 8, 16, 32, or 64\n numCentroids: number; // Usually 256 (uint8)\n maxIterations?: number; // K-means iterations\n convergenceThreshold?: number;\n}\n\nexport interface PQCodebook {\n subvectorDim: number;\n numSubvectors: number;\n numCentroids: number;\n centroids: Float32Array[]; // [numSubvectors][numCentroids][subvectorDim]\n}\n\nexport interface CompressedVector {\n codes: Uint8Array; // [numSubvectors] - indices into centroids\n norm: number; // Original vector norm (for normalization)\n}\n\nexport class ProductQuantization {\n private config: Required<PQConfig>;\n private codebook: PQCodebook | null = null;\n private trained = false;\n\n constructor(config: PQConfig) {\n this.config = {\n dimension: config.dimension,\n numSubvectors: config.numSubvectors,\n numCentroids: config.numCentroids,\n maxIterations: config.maxIterations || 50,\n convergenceThreshold: config.convergenceThreshold || 1e-4\n };\n\n // Validate config\n if (this.config.dimension % this.config.numSubvectors !== 0) {\n throw new Error(`Dimension ${this.config.dimension} must be divisible by numSubvectors ${this.config.numSubvectors}`);\n }\n }\n\n /**\n * Train codebook using k-means on training vectors\n */\n async train(vectors: Float32Array[]): Promise<void> {\n if (vectors.length === 0) {\n throw new Error('Training requires at least one vector');\n }\n\n const subvectorDim = this.config.dimension / this.config.numSubvectors;\n const centroids: Float32Array[] = [];\n\n console.log(`[PQ] Training ${this.config.numSubvectors} subvectors with ${this.config.numCentroids} centroids each...`);\n\n // Train each subvector independently\n for (let s = 0; s < this.config.numSubvectors; s++) {\n const startDim = s * subvectorDim;\n const endDim = startDim + subvectorDim;\n\n // Extract subvectors\n const subvectors = vectors.map(v => v.slice(startDim, endDim));\n\n // Run k-means\n const subCentroids = await this.kMeans(subvectors, this.config.numCentroids);\n centroids.push(...subCentroids);\n\n if ((s + 1) % 4 === 0 || s === this.config.numSubvectors - 1) {\n console.log(`[PQ] Trained ${s + 1}/${this.config.numSubvectors} subvectors`);\n }\n }\n\n this.codebook = {\n subvectorDim,\n numSubvectors: this.config.numSubvectors,\n numCentroids: this.config.numCentroids,\n centroids\n };\n\n this.trained = true;\n console.log('[PQ] Training complete');\n }\n\n /**\n * K-means clustering for centroids\n */\n private async kMeans(vectors: Float32Array[], k: number): Promise<Float32Array[]> {\n const dim = vectors[0].length;\n const n = vectors.length;\n\n // Initialize centroids with k-means++\n const centroids = this.kMeansPlusPlus(vectors, k);\n const assignments = new Uint32Array(n);\n let prevInertia = Infinity;\n\n for (let iter = 0; iter < this.config.maxIterations; iter++) {\n // Assign vectors to nearest centroid\n let inertia = 0;\n for (let i = 0; i < n; i++) {\n let minDist = Infinity;\n let minIdx = 0;\n\n for (let j = 0; j < k; j++) {\n const dist = this.squaredDistance(vectors[i], centroids[j]);\n if (dist < minDist) {\n minDist = dist;\n minIdx = j;\n }\n }\n\n assignments[i] = minIdx;\n inertia += minDist;\n }\n\n // Check convergence\n if (Math.abs(prevInertia - inertia) < this.config.convergenceThreshold) {\n break;\n }\n prevInertia = inertia;\n\n // Update centroids\n const counts = new Uint32Array(k);\n const sums = Array.from({ length: k }, () => new Float32Array(dim));\n\n for (let i = 0; i < n; i++) {\n const cluster = assignments[i];\n counts[cluster]++;\n for (let d = 0; d < dim; d++) {\n sums[cluster][d] += vectors[i][d];\n }\n }\n\n for (let j = 0; j < k; j++) {\n if (counts[j] > 0) {\n for (let d = 0; d < dim; d++) {\n centroids[j][d] = sums[j][d] / counts[j];\n }\n }\n }\n }\n\n return centroids;\n }\n\n /**\n * K-means++ initialization for better centroid selection\n */\n private kMeansPlusPlus(vectors: Float32Array[], k: number): Float32Array[] {\n const n = vectors.length;\n const dim = vectors[0].length;\n const centroids: Float32Array[] = [];\n\n // Choose first centroid randomly\n const firstIdx = Math.floor(Math.random() * n);\n centroids.push(new Float32Array(vectors[firstIdx]));\n\n // Choose remaining centroids\n for (let i = 1; i < k; i++) {\n const distances = new Float32Array(n);\n let sumDistances = 0;\n\n // Calculate distances to nearest centroid\n for (let j = 0; j < n; j++) {\n let minDist = Infinity;\n for (const centroid of centroids) {\n const dist = this.squaredDistance(vectors[j], centroid);\n minDist = Math.min(minDist, dist);\n }\n distances[j] = minDist;\n sumDistances += minDist;\n }\n\n // Choose next centroid with probability proportional to distance\u00B2\n let r = Math.random() * sumDistances;\n for (let j = 0; j < n; j++) {\n r -= distances[j];\n if (r <= 0) {\n centroids.push(new Float32Array(vectors[j]));\n break;\n }\n }\n }\n\n return centroids;\n }\n\n /**\n * Compress a vector using trained codebook\n */\n compress(vector: Float32Array): CompressedVector {\n if (!this.trained || !this.codebook) {\n throw new Error('Codebook must be trained before compression');\n }\n\n const codes = new Uint8Array(this.config.numSubvectors);\n const subvectorDim = this.codebook.subvectorDim;\n\n // Compute norm for later reconstruction\n let norm = 0;\n for (let i = 0; i < vector.length; i++) {\n norm += vector[i] * vector[i];\n }\n norm = Math.sqrt(norm);\n\n // Encode each subvector\n for (let s = 0; s < this.config.numSubvectors; s++) {\n const startDim = s * subvectorDim;\n const subvector = vector.slice(startDim, startDim + subvectorDim);\n\n // Find nearest centroid\n let minDist = Infinity;\n let minIdx = 0;\n\n const centroidOffset = s * this.config.numCentroids;\n for (let c = 0; c < this.config.numCentroids; c++) {\n const centroid = this.codebook.centroids[centroidOffset + c];\n const dist = this.squaredDistance(subvector, centroid);\n if (dist < minDist) {\n minDist = dist;\n minIdx = c;\n }\n }\n\n codes[s] = minIdx;\n }\n\n return { codes, norm };\n }\n\n /**\n * Decompress a vector (approximate reconstruction)\n */\n decompress(compressed: CompressedVector): Float32Array {\n if (!this.codebook) {\n throw new Error('Codebook not available');\n }\n\n const vector = new Float32Array(this.config.dimension);\n const subvectorDim = this.codebook.subvectorDim;\n\n for (let s = 0; s < this.config.numSubvectors; s++) {\n const code = compressed.codes[s];\n const centroidOffset = s * this.config.numCentroids;\n const centroid = this.codebook.centroids[centroidOffset + code];\n\n const startDim = s * subvectorDim;\n for (let d = 0; d < subvectorDim; d++) {\n vector[startDim + d] = centroid[d];\n }\n }\n\n return vector;\n }\n\n /**\n * Asymmetric Distance Computation (ADC)\n * Computes distance from query vector to compressed vector\n */\n asymmetricDistance(query: Float32Array, compressed: CompressedVector): number {\n if (!this.codebook) {\n throw new Error('Codebook not available');\n }\n\n let distance = 0;\n const subvectorDim = this.codebook.subvectorDim;\n\n for (let s = 0; s < this.config.numSubvectors; s++) {\n const code = compressed.codes[s];\n const centroidOffset = s * this.config.numCentroids;\n const centroid = this.codebook.centroids[centroidOffset + code];\n\n const startDim = s * subvectorDim;\n const querySubvector = query.slice(startDim, startDim + subvectorDim);\n\n distance += this.squaredDistance(querySubvector, centroid);\n }\n\n return Math.sqrt(distance);\n }\n\n /**\n * Batch compression for multiple vectors\n */\n batchCompress(vectors: Float32Array[]): CompressedVector[] {\n return vectors.map(v => this.compress(v));\n }\n\n /**\n * Get memory savings\n */\n getCompressionRatio(): number {\n // Original: dimension * 4 bytes (Float32)\n // Compressed: numSubvectors * 1 byte (Uint8) + 4 bytes (norm)\n const originalBytes = this.config.dimension * 4;\n const compressedBytes = this.config.numSubvectors + 4;\n return originalBytes / compressedBytes;\n }\n\n /**\n * Export codebook for persistence\n */\n exportCodebook(): string {\n if (!this.codebook) {\n throw new Error('No codebook to export');\n }\n\n return JSON.stringify({\n config: this.config,\n codebook: {\n subvectorDim: this.codebook.subvectorDim,\n numSubvectors: this.codebook.numSubvectors,\n numCentroids: this.codebook.numCentroids,\n centroids: this.codebook.centroids.map(c => Array.from(c))\n }\n });\n }\n\n /**\n * Import codebook\n */\n importCodebook(json: string): void {\n const data = JSON.parse(json);\n this.config = data.config;\n this.codebook = {\n subvectorDim: data.codebook.subvectorDim,\n numSubvectors: data.codebook.numSubvectors,\n numCentroids: data.codebook.numCentroids,\n centroids: data.codebook.centroids.map((c: number[]) => new Float32Array(c))\n };\n this.trained = true;\n }\n\n /**\n * Utility: Squared Euclidean distance\n */\n private squaredDistance(a: Float32Array, b: Float32Array): number {\n let sum = 0;\n for (let i = 0; i < a.length; i++) {\n const diff = a[i] - b[i];\n sum += diff * diff;\n }\n return sum;\n }\n\n /**\n * Get statistics\n */\n getStats(): {\n trained: boolean;\n compressionRatio: number;\n memoryPerVector: number;\n codebookSize: number;\n } {\n const compressionRatio = this.getCompressionRatio();\n const memoryPerVector = this.config.numSubvectors + 4; // codes + norm\n const codebookSize = this.codebook\n ? this.config.numSubvectors * this.config.numCentroids * (this.config.dimension / this.config.numSubvectors) * 4\n : 0;\n\n return {\n trained: this.trained,\n compressionRatio,\n memoryPerVector,\n codebookSize\n };\n }\n}\n\n/**\n * Helper function to create PQ8 (8 subvectors, 4x compression)\n */\nexport function createPQ8(dimension: number): ProductQuantization {\n return new ProductQuantization({\n dimension,\n numSubvectors: 8,\n numCentroids: 256,\n maxIterations: 50\n });\n}\n\n/**\n * Helper function to create PQ16 (16 subvectors, 8x compression)\n */\nexport function createPQ16(dimension: number): ProductQuantization {\n return new ProductQuantization({\n dimension,\n numSubvectors: 16,\n numCentroids: 256,\n maxIterations: 50\n });\n}\n\n/**\n * Helper function to create PQ32 (32 subvectors, 16x compression)\n */\nexport function createPQ32(dimension: number): ProductQuantization {\n return new ProductQuantization({\n dimension,\n numSubvectors: 32,\n numCentroids: 256,\n maxIterations: 50\n });\n}\n", "/**\n * HNSW (Hierarchical Navigable Small World) Index for Browser\n *\n * JavaScript implementation of HNSW algorithm for fast approximate nearest neighbor search.\n * Achieves O(log n) search complexity vs O(n) for linear scan.\n *\n * Features:\n * - Multi-layer graph structure\n * - Probabilistic layer assignment\n * - Greedy search algorithm\n * - Dynamic insertion\n * - Configurable M (connections per node)\n * - Configurable efConstruction and efSearch\n *\n * Performance:\n * - 10-20x faster than linear scan (vs 150x for native HNSW)\n * - Memory: ~16 bytes per edge + vector storage\n * - Suitable for datasets up to 100K vectors in browser\n */\n\nexport interface HNSWConfig {\n dimension: number;\n M: number; // Max connections per node (default: 16)\n efConstruction: number; // Size of dynamic candidate list (default: 200)\n efSearch: number; // Size of search candidate list (default: 50)\n ml: number; // Layer assignment multiplier (default: 1/ln(2))\n maxLayers: number; // Maximum number of layers (default: 16)\n distanceFunction?: 'cosine' | 'euclidean' | 'manhattan';\n}\n\nexport interface HNSWNode {\n id: number;\n vector: Float32Array;\n level: number;\n connections: Map<number, number[]>; // layer -> [neighbor ids]\n}\n\nexport interface SearchResult {\n id: number;\n distance: number;\n vector: Float32Array;\n}\n\nclass MinHeap<T> {\n private items: Array<{ item: T; priority: number }> = [];\n\n push(item: T, priority: number): void {\n this.items.push({ item, priority });\n this.bubbleUp(this.items.length - 1);\n }\n\n pop(): T | undefined {\n if (this.items.length === 0) return undefined;\n const result = this.items[0].item;\n const last = this.items.pop()!;\n if (this.items.length > 0) {\n this.items[0] = last;\n this.bubbleDown(0);\n }\n return result;\n }\n\n peek(): T | undefined {\n return this.items[0]?.item;\n }\n\n size(): number {\n return this.items.length;\n }\n\n private bubbleUp(index: number): void {\n while (index > 0) {\n const parentIndex = Math.floor((index - 1) / 2);\n if (this.items[index].priority >= this.items[parentIndex].priority) break;\n [this.items[index], this.items[parentIndex]] = [this.items[parentIndex], this.items[index]];\n index = parentIndex;\n }\n }\n\n private bubbleDown(index: number): void {\n while (true) {\n const leftChild = 2 * index + 1;\n const rightChild = 2 * index + 2;\n let smallest = index;\n\n if (leftChild < this.items.length && this.items[leftChild].priority < this.items[smallest].priority) {\n smallest = leftChild;\n }\n if (rightChild < this.items.length && this.items[rightChild].priority < this.items[smallest].priority) {\n smallest = rightChild;\n }\n if (smallest === index) break;\n\n [this.items[index], this.items[smallest]] = [this.items[smallest], this.items[index]];\n index = smallest;\n }\n }\n}\n\nexport class HNSWIndex {\n private config: Required<HNSWConfig>;\n private nodes: Map<number, HNSWNode> = new Map();\n private entryPoint: number | null = null;\n private currentId = 0;\n private ml: number;\n\n constructor(config: Partial<HNSWConfig> = {}) {\n this.config = {\n dimension: config.dimension || 384,\n M: config.M || 16,\n efConstruction: config.efConstruction || 200,\n efSearch: config.efSearch || 50,\n ml: config.ml || 1 / Math.log(2),\n maxLayers: config.maxLayers || 16,\n distanceFunction: config.distanceFunction || 'cosine'\n };\n\n this.ml = this.config.ml;\n }\n\n /**\n * Add vector to index\n */\n add(vector: Float32Array, id?: number): number {\n const nodeId = id !== undefined ? id : this.currentId++;\n const level = this.randomLevel();\n\n const node: HNSWNode = {\n id: nodeId,\n vector,\n level,\n connections: new Map()\n };\n\n // Initialize connections for each layer\n for (let l = 0; l <= level; l++) {\n node.connections.set(l, []);\n }\n\n if (this.entryPoint === null) {\n // First node\n this.entryPoint = nodeId;\n this.nodes.set(nodeId, node);\n return nodeId;\n }\n\n // Find nearest neighbors at each layer\n const ep = this.entryPoint;\n let nearest = ep;\n\n // Search from top layer to target layer + 1\n for (let lc = this.nodes.get(ep)!.level; lc > level; lc--) {\n nearest = this.searchLayer(vector, nearest, 1, lc)[0];\n }\n\n // Insert node at layers 0 to level\n for (let lc = Math.min(level, this.nodes.get(ep)!.level); lc >= 0; lc--) {\n const candidates = this.searchLayer(vector, nearest, this.config.efConstruction, lc);\n\n // Select M neighbors\n const M = lc === 0 ? this.config.M * 2 : this.config.M;\n const neighbors = this.selectNeighbors(vector, candidates, M);\n\n // Add bidirectional connections\n for (const neighbor of neighbors) {\n this.connect(nodeId, neighbor, lc);\n this.connect(neighbor, nodeId, lc);\n\n // Prune connections if necessary\n const neighborNode = this.nodes.get(neighbor)!;\n const neighborConnections = neighborNode.connections.get(lc)!;\n if (neighborConnections.length > M) {\n const newNeighbors = this.selectNeighbors(\n neighborNode.vector,\n neighborConnections,\n M\n );\n neighborNode.connections.set(lc, newNeighbors);\n }\n }\n\n nearest = candidates[0];\n }\n\n // Update entry point if necessary\n if (level > this.nodes.get(this.entryPoint)!.level) {\n this.entryPoint = nodeId;\n }\n\n this.nodes.set(nodeId, node);\n return nodeId;\n }\n\n /**\n * Search for k nearest neighbors\n */\n search(query: Float32Array, k: number, ef?: number): SearchResult[] {\n if (this.entryPoint === null) return [];\n\n ef = ef || Math.max(this.config.efSearch, k);\n\n let ep = this.entryPoint;\n let nearest = ep;\n\n // Search from top to layer 1\n for (let lc = this.nodes.get(ep)!.level; lc > 0; lc--) {\n nearest = this.searchLayer(query, nearest, 1, lc)[0];\n }\n\n // Search at layer 0\n const candidates = this.searchLayer(query, nearest, ef, 0);\n\n // Convert to SearchResult and return top k\n return candidates\n .slice(0, k)\n .map(id => ({\n id,\n distance: this.distance(query, this.nodes.get(id)!.vector),\n vector: this.nodes.get(id)!.vector\n }));\n }\n\n /**\n * Search at specific layer\n */\n private searchLayer(query: Float32Array, ep: number, ef: number, layer: number): number[] {\n const visited = new Set<number>();\n const candidates = new MinHeap<number>();\n const w = new MinHeap<number>();\n\n const dist = this.distance(query, this.nodes.get(ep)!.vector);\n candidates.push(ep, dist);\n w.push(ep, -dist); // Max heap (negate for min heap)\n visited.add(ep);\n\n while (candidates.size() > 0) {\n const c = candidates.pop()!;\n const fDist = -w.peek()!; // Furthest point distance\n\n const cDist = this.distance(query, this.nodes.get(c)!.vector);\n if (cDist > fDist) break;\n\n const neighbors = this.nodes.get(c)!.connections.get(layer) || [];\n for (const e of neighbors) {\n if (visited.has(e)) continue;\n visited.add(e);\n\n const eDist = this.distance(query, this.nodes.get(e)!.vector);\n const fDist = -w.peek()!;\n\n if (eDist < fDist || w.size() < ef) {\n candidates.push(e, eDist);\n w.push(e, -eDist);\n\n if (w.size() > ef) {\n w.pop();\n }\n }\n }\n }\n\n // Return ef nearest neighbors\n const result: number[] = [];\n while (w.size() > 0) {\n result.unshift(w.pop()!);\n }\n return result;\n }\n\n /**\n * Select best neighbors using heuristic\n */\n private selectNeighbors(base: Float32Array, candidates: number[], M: number): number[] {\n if (candidates.length <= M) return candidates;\n\n // Sort by distance\n const sorted = candidates\n .map(id => ({\n id,\n distance: this.distance(base, this.nodes.get(id)!.vector)\n }))\n .sort((a, b) => a.distance - b.distance);\n\n return sorted.slice(0, M).map(x => x.id);\n }\n\n /**\n * Connect two nodes at layer\n */\n private connect(from: number, to: number, layer: number): void {\n const node = this.nodes.get(from)!;\n const connections = node.connections.get(layer)!;\n if (!connections.includes(to)) {\n connections.push(to);\n }\n }\n\n /**\n * Random level assignment\n */\n private randomLevel(): number {\n let level = 0;\n while (Math.random() < this.ml && level < this.config.maxLayers - 1) {\n level++;\n }\n return level;\n }\n\n /**\n * Distance function\n */\n private distance(a: Float32Array, b: Float32Array): number {\n switch (this.config.distanceFunction) {\n case 'cosine':\n return 1 - this.cosineSimilarity(a, b);\n case 'euclidean':\n return this.euclideanDistance(a, b);\n case 'manhattan':\n return this.manhattanDistance(a, b);\n default:\n return 1 - this.cosineSimilarity(a, b);\n }\n }\n\n private cosineSimilarity(a: Float32Array, b: Float32Array): number {\n let dotProduct = 0;\n let normA = 0;\n let normB = 0;\n\n for (let i = 0; i < a.length; i++) {\n dotProduct += a[i] * b[i];\n normA += a[i] * a[i];\n normB += b[i] * b[i];\n }\n\n return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));\n }\n\n private euclideanDistance(a: Float32Array, b: Float32Array): number {\n let sum = 0;\n for (let i = 0; i < a.length; i++) {\n const diff = a[i] - b[i];\n sum += diff * diff;\n }\n return Math.sqrt(sum);\n }\n\n private manhattanDistance(a: Float32Array, b: Float32Array): number {\n let sum = 0;\n for (let i = 0; i < a.length; i++) {\n sum += Math.abs(a[i] - b[i]);\n }\n return sum;\n }\n\n /**\n * Get index statistics\n */\n getStats(): {\n numNodes: number;\n numLayers: number;\n avgConnections: number;\n entryPointLevel: number;\n memoryBytes: number;\n } {\n if (this.nodes.size === 0) {\n return {\n numNodes: 0,\n numLayers: 0,\n avgConnections: 0,\n entryPointLevel: 0,\n memoryBytes: 0\n };\n }\n\n const maxLevel = Math.max(...Array.from(this.nodes.values()).map(n => n.level));\n let totalConnections = 0;\n\n for (const node of this.nodes.values()) {\n for (const connections of node.connections.values()) {\n totalConnections += connections.length;\n }\n }\n\n const avgConnections = totalConnections / this.nodes.size;\n\n // Estimate memory: vector + connections + metadata\n const vectorBytes = this.config.dimension * 4; // Float32Array\n const connectionBytes = avgConnections * 4; // number array\n const metadataBytes = 100; // rough estimate for node object\n const memoryBytes = this.nodes.size * (vectorBytes + connectionBytes + metadataBytes);\n\n return {\n numNodes: this.nodes.size,\n numLayers: maxLevel + 1,\n avgConnections,\n entryPointLevel: this.entryPoint ? this.nodes.get(this.entryPoint)!.level : 0,\n memoryBytes\n };\n }\n\n /**\n * Export index for persistence\n */\n export(): string {\n const data = {\n config: this.config,\n entryPoint: this.entryPoint,\n currentId: this.currentId,\n nodes: Array.from(this.nodes.entries()).map(([id, node]) => ({\n id,\n vector: Array.from(node.vector),\n level: node.level,\n connections: Array.from(node.connections.entries())\n }))\n };\n\n return JSON.stringify(data);\n }\n\n /**\n * Import index from JSON\n */\n import(json: string): void {\n const data = JSON.parse(json);\n\n this.config = data.config;\n this.entryPoint = data.entryPoint;\n this.currentId = data.currentId;\n this.nodes.clear();\n\n for (const nodeData of data.nodes) {\n const node: HNSWNode = {\n id: nodeData.id,\n vector: new Float32Array(nodeData.vector),\n level: nodeData.level,\n connections: new Map(nodeData.connections)\n };\n this.nodes.set(nodeData.id, node);\n }\n }\n\n /**\n * Clear index\n */\n clear(): void {\n this.nodes.clear();\n this.entryPoint = null;\n this.currentId = 0;\n }\n\n /**\n * Get number of nodes\n */\n size(): number {\n return this.nodes.size;\n }\n}\n\n/**\n * Helper function to create HNSW index with default settings\n */\nexport function createHNSW(dimension: number): HNSWIndex {\n return new HNSWIndex({\n dimension,\n M: 16,\n efConstruction: 200,\n efSearch: 50\n });\n}\n\n/**\n * Helper function to create fast HNSW (lower quality, faster build)\n */\nexport function createFastHNSW(dimension: number): HNSWIndex {\n return new HNSWIndex({\n dimension,\n M: 8,\n efConstruction: 100,\n efSearch: 30\n });\n}\n\n/**\n * Helper function to create accurate HNSW (higher quality, slower build)\n */\nexport function createAccurateHNSW(dimension: number): HNSWIndex {\n return new HNSWIndex({\n dimension,\n M: 32,\n efConstruction: 400,\n efSearch: 100\n });\n}\n", "/**\n * Advanced Features for AgentDB Browser\n *\n * Includes:\n * - GNN (Graph Neural Networks) - Graph attention and message passing\n * - MMR (Maximal Marginal Relevance) - Diversity ranking\n * - SVD (Singular Value Decomposition) - Tensor compression\n * - Batch operations and utilities\n */\n\n// ============================================================================\n// GNN (Graph Neural Networks)\n// ============================================================================\n\nexport interface GNNNode {\n id: number;\n features: Float32Array;\n neighbors: number[];\n}\n\nexport interface GNNEdge {\n from: number;\n to: number;\n weight: number;\n}\n\nexport interface GNNConfig {\n hiddenDim: number;\n numHeads: number; // For multi-head attention\n dropout: number;\n learningRate: number;\n attentionType: 'gat' | 'gcn' | 'sage';\n}\n\n/**\n * Graph Neural Network with attention mechanism\n */\nexport class GraphNeuralNetwork {\n private config: GNNConfig;\n private nodes: Map<number, GNNNode> = new Map();\n private edges: GNNEdge[] = [];\n private attentionWeights: Map<string, number> = new Map();\n\n constructor(config: Partial<GNNConfig> = {}) {\n this.config = {\n hiddenDim: config.hiddenDim || 64,\n numHeads: config.numHeads || 4,\n dropout: config.dropout || 0.1,\n learningRate: config.learningRate || 0.01,\n attentionType: config.attentionType || 'gat'\n };\n }\n\n /**\n * Add node to graph\n */\n addNode(id: number, features: Float32Array): void {\n this.nodes.set(id, {\n id,\n features,\n neighbors: []\n });\n }\n\n /**\n * Add edge to graph\n */\n addEdge(from: number, to: number, weight: number = 1.0): void {\n this.edges.push({ from, to, weight });\n\n // Update neighbor lists\n const fromNode = this.nodes.get(from);\n const toNode = this.nodes.get(to);\n\n if (fromNode && !fromNode.neighbors.includes(to)) {\n fromNode.neighbors.push(to);\n }\n if (toNode && !toNode.neighbors.includes(from)) {\n toNode.neighbors.push(from);\n }\n }\n\n /**\n * Graph Attention Network (GAT) message passing\n */\n graphAttention(nodeId: number): Float32Array {\n const node = this.nodes.get(nodeId);\n if (!node) throw new Error(`Node ${nodeId} not found`);\n\n const neighbors = node.neighbors;\n if (neighbors.length === 0) {\n return node.features;\n }\n\n // Multi-head attention\n const headDim = Math.floor(this.config.hiddenDim / this.config.numHeads);\n const aggregated = new Float32Array(this.config.hiddenDim);\n\n for (let h = 0; h < this.config.numHeads; h++) {\n let attentionSum = 0;\n const headOutput = new Float32Array(headDim);\n\n // Compute attention scores for each neighbor\n for (const neighborId of neighbors) {\n const neighbor = this.nodes.get(neighborId)!;\n\n // Attention score: similarity between node and neighbor\n const score = this.computeAttentionScore(\n node.features,\n neighbor.features,\n h\n );\n\n attentionSum += score;\n\n // Aggregate neighbor features weighted by attention\n for (let i = 0; i < headDim && i < neighbor.features.length; i++) {\n headOutput[i] += score * neighbor.features[i];\n }\n }\n\n // Normalize by attention sum\n if (attentionSum > 0) {\n for (let i = 0; i < headDim; i++) {\n headOutput[i] /= attentionSum;\n }\n }\n\n // Concatenate head outputs\n const offset = h * headDim;\n for (let i = 0; i < headDim; i++) {\n aggregated[offset + i] = headOutput[i];\n }\n }\n\n // Apply non-linearity (LeakyReLU)\n for (let i = 0; i < aggregated.length; i++) {\n aggregated[i] = aggregated[i] > 0 ? aggregated[i] : 0.01 * aggregated[i];\n }\n\n return aggregated;\n }\n\n /**\n * Compute attention score between two nodes\n */\n private computeAttentionScore(\n features1: Float32Array,\n features2: Float32Array,\n head: number\n ): number {\n // Simple dot-product attention\n let score = 0;\n const len = Math.min(features1.length, features2.length);\n\n for (let i = 0; i < len; i++) {\n score += features1[i] * features2[i];\n }\n\n // Apply softmax-like normalization\n return Math.exp(score / Math.sqrt(len));\n }\n\n /**\n * Message passing for all nodes\n */\n messagePass(): Map<number, Float32Array> {\n const newFeatures = new Map<number, Float32Array>();\n\n for (const [nodeId] of this.nodes) {\n newFeatures.set(nodeId, this.graphAttention(nodeId));\n }\n\n return newFeatures;\n }\n\n /**\n * Update node features after message passing\n */\n update(newFeatures: Map<number, Float32Array>): void {\n for (const [nodeId, features] of newFeatures) {\n const node = this.nodes.get(nodeId);\n if (node) {\n node.features = features;\n }\n }\n }\n\n /**\n * Compute graph embeddings for query enhancement\n */\n computeGraphEmbedding(nodeId: number, hops: number = 2): Float32Array {\n const features = new Map<number, Float32Array>();\n features.set(nodeId, this.nodes.get(nodeId)!.features);\n\n // Multi-hop message passing\n for (let h = 0; h < hops; h++) {\n const newFeatures = this.messagePass();\n this.update(newFeatures);\n }\n\n return this.nodes.get(nodeId)!.features;\n }\n\n /**\n * Get statistics\n */\n getStats() {\n return {\n numNodes: this.nodes.size,\n numEdges: this.edges.length,\n avgDegree: this.edges.length / Math.max(this.nodes.size, 1),\n config: this.config\n };\n }\n}\n\n// ============================================================================\n// MMR (Maximal Marginal Relevance)\n// ============================================================================\n\nexport interface MMRConfig {\n lambda: number; // Trade-off between relevance and diversity (0-1)\n metric: 'cosine' | 'euclidean';\n}\n\n/**\n * Maximal Marginal Relevance for diversity ranking\n */\nexport class MaximalMarginalRelevance {\n private config: MMRConfig;\n\n constructor(config: Partial<MMRConfig> = {}) {\n this.config = {\n lambda: config.lambda || 0.7,\n metric: config.metric || 'cosine'\n };\n }\n\n /**\n * Rerank results for diversity\n * @param query Query vector\n * @param candidates Candidate vectors with scores\n * @param k Number of results to return\n * @returns Reranked indices\n */\n rerank(\n query: Float32Array,\n candidates: Array<{ id: number; vector: Float32Array; score: number }>,\n k: number\n ): number[] {\n if (candidates.length === 0) return [];\n\n const selected: number[] = [];\n const remaining = new Set(candidates.map((_, i) => i));\n\n // Select first result (highest relevance)\n let bestIdx = 0;\n let bestScore = -Infinity;\n\n for (let i = 0; i < candidates.length; i++) {\n if (candidates[i].score > bestScore) {\n bestScore = candidates[i].score;\n bestIdx = i;\n }\n }\n\n selected.push(candidates[bestIdx].id);\n remaining.delete(bestIdx);\n\n // Iteratively select remaining results\n while (selected.length < k && remaining.size > 0) {\n let bestMMR = -Infinity;\n let bestCandidate = -1;\n\n for (const idx of remaining) {\n const candidate = candidates[idx];\n\n // Relevance to query\n const relevance = this.similarity(query, candidate.vector);\n\n // Maximum similarity to already selected\n let maxSimilarity = -Infinity;\n for (const selectedId of selected) {\n const selectedCandidate = candidates.find(c => c.id === selectedId)!;\n const sim = this.similarity(candidate.vector, selectedCandidate.vector);\n maxSimilarity = Math.max(maxSimilarity, sim);\n }\n\n // MMR score\n const mmr =\n this.config.lambda * relevance -\n (1 - this.config.lambda) * maxSimilarity;\n\n if (mmr > bestMMR) {\n bestMMR = mmr;\n bestCandidate = idx;\n }\n }\n\n if (bestCandidate !== -1) {\n selected.push(candidates[bestCandidate].id);\n remaining.delete(bestCandidate);\n } else {\n break;\n }\n }\n\n return selected;\n }\n\n /**\n * Similarity computation\n */\n private similarity(a: Float32Array, b: Float32Array): number {\n if (this.config.metric === 'cosine') {\n return this.cosineSimilarity(a, b);\n } else {\n // Euclidean distance converted to similarity\n const dist = this.euclideanDistance(a, b);\n return 1 / (1 + dist);\n }\n }\n\n private cosineSimilarity(a: Float32Array, b: Float32Array): number {\n let dotProduct = 0;\n let normA = 0;\n let normB = 0;\n\n for (let i = 0; i < a.length; i++) {\n dotProduct += a[i] * b[i];\n normA += a[i] * a[i];\n normB += b[i] * b[i];\n }\n\n return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));\n }\n\n private euclideanDistance(a: Float32Array, b: Float32Array): number {\n let sum = 0;\n for (let i = 0; i < a.length; i++) {\n const diff = a[i] - b[i];\n sum += diff * diff;\n }\n return Math.sqrt(sum);\n }\n\n /**\n * Set lambda (relevance vs diversity trade-off)\n */\n setLambda(lambda: number): void {\n this.config.lambda = Math.max(0, Math.min(1, lambda));\n }\n}\n\n// ============================================================================\n// SVD (Singular Value Decomposition) for Tensor Compression\n// ============================================================================\n\n/**\n * Simple SVD implementation for dimension reduction\n */\nexport class TensorCompression {\n /**\n * Reduce dimensionality using truncated SVD\n * @param vectors Array of vectors to compress\n * @param targetDim Target dimension\n * @returns Compressed vectors\n */\n static compress(\n vectors: Float32Array[],\n targetDim: number\n ): Float32Array[] {\n if (vectors.length === 0) return [];\n\n const originalDim = vectors[0].length;\n if (targetDim >= originalDim) return vectors;\n\n // Create matrix (vectors as rows)\n const matrix = vectors.map(v => Array.from(v));\n\n // Center the data (subtract mean)\n const mean = this.computeMean(matrix);\n const centered = matrix.map(row =>\n row.map((val, i) => val - mean[i])\n );\n\n // Compute covariance matrix\n const cov = this.computeCovariance(centered);\n\n // Compute top k eigenvectors using power iteration\n const eigenvectors = this.powerIteration(cov, targetDim);\n\n // Project vectors onto eigenvectors\n const compressed = centered.map(row => {\n const projected = new Float32Array(targetDim);\n for (let i = 0; i < targetDim; i++) {\n let sum = 0;\n for (let j = 0; j < originalDim; j++) {\n sum += row[j] * eigenvectors[i][j];\n }\n projected[i] = sum;\n }\n return projected;\n });\n\n return compressed;\n }\n\n /**\n * Compute mean vector\n */\n private static computeMean(matrix: number[][]): number[] {\n const n = matrix.length;\n const dim = matrix[0].length;\n const mean = new Array(dim).fill(0);\n\n for (const row of matrix) {\n for (let i = 0; i < dim; i++) {\n mean[i] += row[i];\n }\n }\n\n return mean.map(v => v / n);\n }\n\n /**\n * Compute covariance matrix\n */\n private static computeCovariance(matrix: number[][]): number[][] {\n const n = matrix.length;\n const dim = matrix[0].length;\n const cov: number[][] = Array.from({ length: dim }, () =>\n new Array(dim).fill(0)\n );\n\n for (let i = 0; i < dim; i++) {\n for (let j = 0; j <= i; j++) {\n let sum = 0;\n for (const row of matrix) {\n sum += row[i] * row[j];\n }\n cov[i][j] = cov[j][i] = sum / n;\n }\n }\n\n return cov;\n }\n\n /**\n * Power iteration for computing top eigenvectors\n */\n private static powerIteration(\n matrix: number[][],\n k: number,\n iterations: number = 100\n ): number[][] {\n const dim = matrix.length;\n const eigenvectors: number[][] = [];\n\n for (let i = 0; i < k; i++) {\n // Random initialization\n let v = new Array(dim).fill(0).map(() => Math.random() - 0.5);\n\n // Power iteration\n for (let iter = 0; iter < iterations; iter++) {\n // Multiply by matrix\n const newV = new Array(dim).fill(0);\n for (let r = 0; r < dim; r++) {\n for (let c = 0; c < dim; c++) {\n newV[r] += matrix[r][c] * v[c];\n }\n }\n\n // Orthogonalize against previous eigenvectors\n for (const prev of eigenvectors) {\n let dot = 0;\n for (let j = 0; j < dim; j++) {\n dot += newV[j] * prev[j];\n }\n for (let j = 0; j < dim; j++) {\n newV[j] -= dot * prev[j];\n }\n }\n\n // Normalize\n let norm = 0;\n for (const val of newV) {\n norm += val * val;\n }\n norm = Math.sqrt(norm);\n\n if (norm < 1e-10) break;\n\n v = newV.map(val => val / norm);\n }\n\n eigenvectors.push(v);\n }\n\n return eigenvectors;\n }\n}\n\n// ============================================================================\n// Batch Operations\n// ============================================================================\n\n/**\n * Efficient batch processing utilities\n */\nexport class BatchProcessor {\n /**\n * Batch cosine similarity computation\n */\n static batchCosineSimilarity(\n query: Float32Array,\n vectors: Float32Array[]\n ): Float32Array {\n const similarities = new Float32Array(vectors.length);\n\n // Precompute query norm\n let queryNorm = 0;\n for (let i = 0; i < query.length; i++) {\n queryNorm += query[i] * query[i];\n }\n queryNorm = Math.sqrt(queryNorm);\n\n // Compute similarities\n for (let v = 0; v < vectors.length; v++) {\n const vector = vectors[v];\n let dotProduct = 0;\n let vectorNorm = 0;\n\n for (let i = 0; i < query.length; i++) {\n dotProduct += query[i] * vector[i];\n vectorNorm += vector[i] * vector[i];\n }\n\n vectorNorm = Math.sqrt(vectorNorm);\n similarities[v] = dotProduct / (queryNorm * vectorNorm);\n }\n\n return similarities;\n }\n\n /**\n * Batch vector normalization\n */\n static batchNormalize(vectors: Float32Array[]): Float32Array[] {\n return vectors.map(v => {\n let norm = 0;\n for (let i = 0; i < v.length; i++) {\n norm += v[i] * v[i];\n }\n norm = Math.sqrt(norm);\n\n const normalized = new Float32Array(v.length);\n for (let i = 0; i < v.length; i++) {\n normalized[i] = v[i] / norm;\n }\n return normalized;\n });\n }\n}\n", "/**\n * Browser WASM Attention Wrapper\n *\n * Provides browser-compatible attention mechanisms with:\n * - Lazy WASM loading\n * - Memory management for WASM linear memory\n * - Fallback to JavaScript when WASM unavailable\n * - Loading states and error handling\n *\n * @module browser/AttentionBrowser\n */\n\nexport interface AttentionConfig {\n dimension?: number;\n numHeads?: number;\n blockSize?: number;\n curvature?: number;\n useWASM?: boolean;\n}\n\nexport interface ConsolidationConfig {\n threshold?: number;\n maxClusters?: number;\n minClusterSize?: number;\n}\n\nexport type LoadingState = 'idle' | 'loading' | 'loaded' | 'error';\n\n/**\n * Browser-compatible attention class with WASM support\n */\nexport class AttentionBrowser {\n private wasmModule: any = null;\n private loadingState: LoadingState = 'idle';\n private loadError: Error | null = null;\n private config: AttentionConfig;\n\n constructor(config: AttentionConfig = {}) {\n this.config = {\n dimension: 384,\n numHeads: 4,\n blockSize: 64,\n curvature: -1.0,\n useWASM: true,\n ...config\n };\n }\n\n /**\n * Get current loading state\n */\n getLoadingState(): LoadingState {\n return this.loadingState;\n }\n\n /**\n * Get loading error if any\n */\n getError(): Error | null {\n return this.loadError;\n }\n\n /**\n * Initialize WASM module (lazy loaded)\n */\n async initialize(): Promise<void> {\n if (this.loadingState === 'loaded') return;\n if (this.loadingState === 'loading') {\n // Wait for existing load to complete\n while (this.loadingState === 'loading') {\n await new Promise(resolve => setTimeout(resolve, 50));\n }\n return;\n }\n\n this.loadingState = 'loading';\n\n try {\n if (!this.config.useWASM) {\n // Skip WASM loading\n this.loadingState = 'loaded';\n return;\n }\n\n // Dynamic import of WASM loader\n const wasmLoader = await import('../../dist/agentdb.wasm-loader.js' as string);\n this.wasmModule = await wasmLoader.initWASM();\n this.loadingState = 'loaded';\n } catch (error) {\n this.loadError = error instanceof Error ? error : new Error(String(error));\n this.loadingState = 'error';\n console.warn('WASM initialization failed, using fallback:', this.loadError.message);\n // Don't throw - allow fallback to work\n }\n }\n\n /**\n * Flash Attention - Optimized attention mechanism\n * O(N) memory complexity instead of O(N\u00B2)\n *\n * @param query - Query vectors\n * @param keys - Key vectors\n * @param values - Value vectors\n * @returns Attention output\n */\n async flashAttention(\n query: Float32Array,\n keys: Float32Array,\n values: Float32Array\n ): Promise<Float32Array> {\n await this.initialize();\n\n if (this.wasmModule?.flashAttention) {\n try {\n return this.wasmModule.flashAttention(query, keys, values, this.config);\n } catch (error) {\n console.warn('WASM flash attention failed, using fallback:', error);\n }\n }\n\n // Fallback to JavaScript implementation\n return this.flashAttentionFallback(query, keys, values);\n }\n\n /**\n * Hyperbolic Attention - Attention in hyperbolic space\n * Better for hierarchical relationships\n *\n * @param query - Query vector\n * @param keys - Key vectors\n * @returns Similarity scores in hyperbolic space\n */\n async hyperbolicAttention(\n query: Float32Array,\n keys: Float32Array\n ): Promise<Float32Array> {\n await this.initialize();\n\n if (this.wasmModule?.hyperbolicAttention) {\n try {\n return this.wasmModule.hyperbolicAttention(query, keys, this.config);\n } catch (error) {\n console.warn('WASM hyperbolic attention failed, using fallback:', error);\n }\n }\n\n // Fallback to JavaScript implementation\n return this.hyperbolicAttentionFallback(query, keys);\n }\n\n /**\n * Memory Consolidation - Cluster and consolidate similar memories\n *\n * @param memories - Array of memory vectors\n * @param config - Consolidation configuration\n * @returns Consolidated memory clusters\n */\n async consolidateMemories(\n memories: Float32Array[],\n config: ConsolidationConfig = {}\n ): Promise<Array<{\n memory: Float32Array;\n count: number;\n members: Float32Array[];\n }>> {\n await this.initialize();\n\n const fullConfig = {\n threshold: 0.8,\n maxClusters: 10,\n minClusterSize: 1,\n ...config\n };\n\n if (this.wasmModule?.memoryConsolidation) {\n try {\n return this.wasmModule.memoryConsolidation(memories, fullConfig);\n } catch (error) {\n console.warn('WASM memory consolidation failed, using fallback:', error);\n }\n }\n\n // Fallback to JavaScript implementation\n return this.consolidateMemoriesFallback(memories, fullConfig);\n }\n\n /**\n * Clean up WASM memory\n */\n dispose(): void {\n this.wasmModule = null;\n this.loadingState = 'idle';\n this.loadError = null;\n }\n\n // ========================================================================\n // Fallback Implementations (Pure JavaScript)\n // ========================================================================\n\n private flashAttentionFallback(\n query: Float32Array,\n keys: Float32Array,\n values: Float32Array\n ): Float32Array {\n const { dimension = 384 } = this.config;\n const seqLen = keys.length / dimension;\n const output = new Float32Array(query.length);\n\n for (let i = 0; i < query.length; i += dimension) {\n const q = query.slice(i, i + dimension);\n let sumWeights = 0;\n const weights = new Float32Array(seqLen);\n\n // Compute attention weights\n for (let j = 0; j < seqLen; j++) {\n const k = keys.slice(j * dimension, (j + 1) * dimension);\n let dot = 0;\n for (let d = 0; d < dimension; d++) {\n dot += q[d] * k[d];\n }\n weights[j] = Math.exp(dot / Math.sqrt(dimension));\n sumWeights += weights[j];\n }\n\n // Normalize and apply to values\n for (let j = 0; j < seqLen; j++) {\n weights[j] /= (sumWeights || 1);\n const v = values.slice(j * dimension, (j + 1) * dimension);\n for (let d = 0; d < dimension; d++) {\n output[i + d] += weights[j] * v[d];\n }\n }\n }\n\n return output;\n }\n\n private hyperbolicAttentionFallback(\n query: Float32Array,\n keys: Float32Array\n ): Float32Array {\n const { curvature = -1.0 } = this.config;\n const k = Math.abs(curvature);\n const similarities = new Float32Array(keys.length / query.length);\n\n // Hyperbolic distance computation (Poincar\u00E9 ball model)\n for (let i = 0; i < similarities.length; i++) {\n const offset = i * query.length;\n let dotProduct = 0;\n let normQ = 0;\n let normK = 0;\n\n for (let j = 0; j < query.length; j++) {\n dotProduct += query[j] * keys[offset + j];\n normQ += query[j] * query[j];\n normK += keys[offset + j] * keys[offset + j];\n }\n\n // Euclidean distance\n const euclidean = Math.sqrt(normQ + normK - 2 * dotProduct);\n\n // Poincar\u00E9 distance\n const poincare = Math.acosh(1 + 2 * k * euclidean * euclidean);\n\n // Convert to similarity\n similarities[i] = 1 / (1 + poincare);\n }\n\n return similarities;\n }\n\n private consolidateMemoriesFallback(\n memories: Float32Array[],\n config: ConsolidationConfig\n ): Array<{\n memory: Float32Array;\n count: number;\n members: Float32Array[];\n }> {\n const { threshold = 0.8, maxClusters = 10, minClusterSize = 1 } = config;\n const consolidated: Array<{\n memory: Float32Array;\n count: number;\n members: Float32Array[];\n }> = [];\n const used = new Set<number>();\n\n // Simple agglomerative clustering\n for (let i = 0; i < memories.length; i++) {\n if (used.has(i)) continue;\n\n const cluster: Float32Array[] = [memories[i]];\n used.add(i);\n\n for (let j = i + 1; j < memories.length; j++) {\n if (used.has(j)) continue;\n\n // Compute cosine similarity\n const similarity = this.cosineSimilarity(memories[i], memories[j]);\n\n if (similarity > threshold) {\n cluster.push(memories[j]);\n used.add(j);\n }\n }\n\n // Only include clusters that meet minimum size\n if (cluster.length >= minClusterSize) {\n // Compute cluster centroid\n const centroid = new Float32Array(memories[i].length);\n for (const mem of cluster) {\n for (let k = 0; k < centroid.length; k++) {\n centroid[k] += mem[k] / cluster.length;\n }\n }\n\n // Normalize centroid\n let norm = 0;\n for (let k = 0; k < centroid.length; k++) {\n norm += centroid[k] * centroid[k];\n }\n norm = Math.sqrt(norm);\n if (norm > 0) {\n for (let k = 0; k < centroid.length; k++) {\n centroid[k] /= norm;\n }\n }\n\n consolidated.push({\n memory: centroid,\n count: cluster.length,\n members: cluster\n });\n }\n\n if (consolidated.length >= maxClusters) break;\n }\n\n return consolidated;\n }\n\n private cosineSimilarity(a: Float32Array, b: Float32Array): number {\n let dot = 0;\n let normA = 0;\n let normB = 0;\n\n for (let i = 0; i < a.length; i++) {\n dot += a[i] * b[i];\n normA += a[i] * a[i];\n normB += b[i] * b[i];\n }\n\n const denominator = Math.sqrt(normA * normB);\n return denominator > 0 ? dot / denominator : 0;\n }\n}\n\n/**\n * Create attention instance with default config\n */\nexport function createAttention(config?: AttentionConfig): AttentionBrowser {\n return new AttentionBrowser(config);\n}\n\n/**\n * Create attention instance optimized for speed\n */\nexport function createFastAttention(): AttentionBrowser {\n return new AttentionBrowser({\n dimension: 256,\n numHeads: 2,\n blockSize: 32,\n useWASM: true\n });\n}\n\n/**\n * Create attention instance optimized for quality\n */\nexport function createAccurateAttention(): AttentionBrowser {\n return new AttentionBrowser({\n dimension: 768,\n numHeads: 8,\n blockSize: 128,\n useWASM: true\n });\n}\n", "/**\n * AgentDB Browser Advanced Features\n *\n * Unified export for all browser-compatible advanced features.\n *\n * Features:\n * - Product Quantization (PQ8/PQ16/PQ32) - 4-32x memory compression\n * - HNSW Indexing - 10-20x faster approximate search\n * - Graph Neural Networks - Graph attention and message passing\n * - MMR Diversity - Maximal marginal relevance ranking\n * - Tensor Compression - SVD dimension reduction\n * - Batch Operations - Optimized vector processing\n * - WASM Attention - High-performance attention mechanisms (lazy loaded)\n *\n * Bundle Size: ~35 KB minified (~12 KB gzipped)\n * WASM Module: ~157 KB (lazy loaded on demand)\n */\n\n// ============================================================================\n// Product Quantization\n// ============================================================================\n\nexport {\n ProductQuantization,\n createPQ8,\n createPQ16,\n createPQ32,\n type PQConfig,\n type PQCodebook,\n type CompressedVector\n} from './ProductQuantization';\n\n// ============================================================================\n// HNSW Indexing\n// ============================================================================\n\nexport {\n HNSWIndex,\n createHNSW,\n createFastHNSW,\n createAccurateHNSW,\n type HNSWConfig,\n type HNSWNode,\n type SearchResult\n} from './HNSWIndex';\n\n// ============================================================================\n// Advanced Features\n// ============================================================================\n\nexport {\n GraphNeuralNetwork,\n MaximalMarginalRelevance,\n TensorCompression,\n BatchProcessor,\n type GNNNode,\n type GNNEdge,\n type GNNConfig,\n type MMRConfig\n} from './AdvancedFeatures';\n\n// ============================================================================\n// WASM Attention (Browser-Compatible)\n// ============================================================================\n\nexport {\n AttentionBrowser,\n createAttention,\n createFastAttention,\n createAccurateAttention,\n type AttentionConfig,\n type ConsolidationConfig,\n type LoadingState\n} from './AttentionBrowser';\n\n// ============================================================================\n// Feature Detection\n// ============================================================================\n\n/**\n * Detect available browser features\n */\nexport function detectFeatures() {\n return {\n indexedDB: 'indexedDB' in globalThis,\n broadcastChannel: 'BroadcastChannel' in globalThis,\n webWorkers: typeof (globalThis as any).Worker !== 'undefined',\n wasmSIMD: detectWasmSIMD(),\n sharedArrayBuffer: typeof SharedArrayBuffer !== 'undefined'\n };\n}\n\n/**\n * Detect WASM SIMD support\n */\nasync function detectWasmSIMD(): Promise<boolean> {\n try {\n // Check if WebAssembly is available (browser context)\n if (typeof (globalThis as any).WebAssembly === 'undefined') {\n return false;\n }\n\n // WASM SIMD detection via feature test\n const simdTest = new Uint8Array([\n 0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00,\n 0x01, 0x05, 0x01, 0x60, 0x00, 0x01, 0x7b, 0x03,\n 0x02, 0x01, 0x00, 0x0a, 0x0a, 0x01, 0x08, 0x00,\n 0xfd, 0x0c, 0xfd, 0x0c, 0xfd, 0x54, 0x0b\n ]);\n\n const WA = (globalThis as any).WebAssembly;\n const module = await WA.instantiate(simdTest);\n return module instanceof WA.Instance;\n } catch {\n return false;\n }\n}\n\n// ============================================================================\n// Configuration Presets\n// ============================================================================\n\n/**\n * Recommended configuration for small datasets (<1K vectors)\n */\nexport const SMALL_DATASET_CONFIG = {\n pq: { enabled: false },\n hnsw: { enabled: false },\n gnn: { enabled: true, numHeads: 2 },\n mmr: { enabled: true, lambda: 0.7 },\n svd: { enabled: false }\n};\n\n/**\n * Recommended configuration for medium datasets (1K-10K vectors)\n */\nexport const MEDIUM_DATASET_CONFIG = {\n pq: { enabled: true, subvectors: 8 },\n hnsw: { enabled: true, M: 16 },\n gnn: { enabled: true, numHeads: 4 },\n mmr: { enabled: true, lambda: 0.7 },\n svd: { enabled: false }\n};\n\n/**\n * Recommended configuration for large datasets (10K-100K vectors)\n */\nexport const LARGE_DATASET_CONFIG = {\n pq: { enabled: true, subvectors: 16 },\n hnsw: { enabled: true, M: 32 },\n gnn: { enabled: true, numHeads: 4 },\n mmr: { enabled: true, lambda: 0.7 },\n svd: { enabled: true, targetDim: 128 }\n};\n\n/**\n * Memory-optimized configuration (minimal memory usage)\n */\nexport const MEMORY_OPTIMIZED_CONFIG = {\n pq: { enabled: true, subvectors: 32 }, // 16x compression\n hnsw: { enabled: true, M: 8 }, // Fewer connections\n gnn: { enabled: false },\n mmr: { enabled: false },\n svd: { enabled: true, targetDim: 64 } // Aggressive dimension reduction\n};\n\n/**\n * Speed-optimized configuration (fastest search)\n */\nexport const SPEED_OPTIMIZED_CONFIG = {\n pq: { enabled: false }, // No compression overhead\n hnsw: { enabled: true, M: 32, efSearch: 100 }, // Maximum HNSW quality\n gnn: { enabled: false },\n mmr: { enabled: false },\n svd: { enabled: false }\n};\n\n/**\n * Quality-optimized configuration (best result quality)\n */\nexport const QUALITY_OPTIMIZED_CONFIG = {\n pq: { enabled: false }, // No compression\n hnsw: { enabled: true, M: 48, efConstruction: 400 }, // Highest quality\n gnn: { enabled: true, numHeads: 8 }, // More attention heads\n mmr: { enabled: true, lambda: 0.8 }, // More diversity\n svd: { enabled: false } // No dimension loss\n};\n\n// ============================================================================\n// Version Information\n// ============================================================================\n\nexport const VERSION = {\n major: 2,\n minor: 0,\n patch: 0,\n prerelease: 'alpha.2',\n features: 'advanced',\n full: '2.0.0-alpha.2+advanced'\n};\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\n/**\n * Estimate memory usage for configuration\n */\nexport function estimateMemoryUsage(\n numVectors: number,\n dimension: number,\n config: any\n): {\n vectors: number;\n index: number;\n total: number;\n totalMB: number;\n} {\n let vectorBytes = numVectors * dimension * 4; // Float32Array\n\n // Apply PQ compression\n if (config.pq?.enabled) {\n const subvectors = config.pq.subvectors || 8;\n vectorBytes = numVectors * (subvectors + 4); // codes + norm\n }\n\n // Apply SVD compression\n if (config.svd?.enabled) {\n const targetDim = config.svd.targetDim || dimension / 2;\n vectorBytes = numVectors * targetDim * 4;\n }\n\n // HNSW index overhead\n let indexBytes = 0;\n if (config.hnsw?.enabled) {\n const M = config.hnsw.M || 16;\n const avgConnections = M * 1.5; // Estimate\n indexBytes = numVectors * avgConnections * 4; // Connection IDs\n }\n\n const total = vectorBytes + indexBytes;\n\n return {\n vectors: vectorBytes,\n index: indexBytes,\n total,\n totalMB: total / (1024 * 1024)\n };\n}\n\n/**\n * Recommend configuration based on dataset size\n */\nexport function recommendConfig(numVectors: number, dimension: number) {\n if (numVectors < 1000) {\n return {\n name: 'SMALL_DATASET',\n config: SMALL_DATASET_CONFIG,\n reason: 'Small dataset, linear search is fast enough'\n };\n } else if (numVectors < 10000) {\n return {\n name: 'MEDIUM_DATASET',\n config: MEDIUM_DATASET_CONFIG,\n reason: 'Medium dataset, HNSW + PQ8 recommended'\n };\n } else {\n return {\n name: 'LARGE_DATASET',\n config: LARGE_DATASET_CONFIG,\n reason: 'Large dataset, aggressive compression + HNSW recommended'\n };\n }\n}\n\n/**\n * Benchmark search performance\n */\nexport async function benchmarkSearch(\n searchFn: (query: Float32Array, k: number) => any[],\n numQueries: number = 100,\n k: number = 10,\n dimension: number = 384\n): Promise<{\n avgTimeMs: number;\n minTimeMs: number;\n maxTimeMs: number;\n p50Ms: number;\n p95Ms: number;\n p99Ms: number;\n}> {\n const times: number[] = [];\n\n for (let i = 0; i < numQueries; i++) {\n const query = new Float32Array(dimension);\n for (let d = 0; d < dimension; d++) {\n query[d] = Math.random() - 0.5;\n }\n\n const start = performance.now();\n searchFn(query, k);\n const end = performance.now();\n\n times.push(end - start);\n }\n\n times.sort((a, b) => a - b);\n\n return {\n avgTimeMs: times.reduce((a, b) => a + b, 0) / times.length,\n minTimeMs: times[0],\n maxTimeMs: times[times.length - 1],\n p50Ms: times[Math.floor(times.length * 0.5)],\n p95Ms: times[Math.floor(times.length * 0.95)],\n p99Ms: times[Math.floor(times.length * 0.99)]\n };\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["ProductQuantization", "config", "vectors", "subvectorDim", "centroids", "s", "startDim", "endDim", "subvectors", "v", "subCentroids", "k", "dim", "assignments", "prevInertia", "iter", "inertia", "i", "minDist", "minIdx", "j", "dist", "counts", "sums", "cluster", "d", "n", "firstIdx", "distances", "sumDistances", "centroid", "r", "vector", "codes", "norm", "subvector", "centroidOffset", "c", "compressed", "code", "query", "distance", "querySubvector", "originalBytes", "compressedBytes", "json", "data", "a", "b", "sum", "diff", "compressionRatio", "memoryPerVector", "codebookSize", "createPQ8", "dimension", "createPQ16", "createPQ32", "MinHeap", "item", "priority", "result", "last", "_a", "index", "parentIndex", "leftChild", "rightChild", "smallest", "HNSWIndex", "config", "vector", "id", "nodeId", "level", "node", "l", "ep", "nearest", "lc", "candidates", "M", "neighbors", "neighbor", "neighborNode", "neighborConnections", "newNeighbors", "query", "k", "ef", "layer", "visited", "w", "dist", "c", "fDist", "e", "eDist", "base", "a", "b", "x", "from", "to", "connections", "dotProduct", "normA", "normB", "i", "sum", "diff", "maxLevel", "n", "totalConnections", "avgConnections", "vectorBytes", "connectionBytes", "memoryBytes", "data", "json", "nodeData", "createHNSW", "dimension", "createFastHNSW", "createAccurateHNSW", "GraphNeuralNetwork", "config", "id", "features", "from", "to", "weight", "fromNode", "toNode", "nodeId", "node", "neighbors", "headDim", "aggregated", "h", "attentionSum", "headOutput", "neighborId", "neighbor", "score", "i", "offset", "features1", "features2", "head", "len", "newFeatures", "hops", "MaximalMarginalRelevance", "query", "candidates", "k", "selected", "remaining", "_", "bestIdx", "bestScore", "bestMMR", "bestCandidate", "idx", "candidate", "relevance", "maxSimilarity", "selectedId", "selectedCandidate", "c", "sim", "mmr", "a", "b", "dotProduct", "normA", "normB", "sum", "diff", "lambda", "TensorCompression", "vectors", "targetDim", "originalDim", "matrix", "v", "mean", "centered", "row", "val", "cov", "eigenvectors", "projected", "j", "n", "dim", "iterations", "iter", "newV", "r", "prev", "dot", "norm", "BatchProcessor", "similarities", "queryNorm", "vector", "vectorNorm", "normalized", "AttentionBrowser", "config", "resolve", "wasmLoader", "error", "query", "keys", "values", "_a", "memories", "fullConfig", "dimension", "seqLen", "output", "q", "sumWeights", "weights", "j", "k", "dot", "d", "v", "curvature", "similarities", "i", "offset", "dotProduct", "normQ", "normK", "euclidean", "poincare", "threshold", "maxClusters", "minClusterSize", "consolidated", "used", "cluster", "centroid", "mem", "norm", "a", "b", "normA", "normB", "denominator", "createAttention", "createFastAttention", "createAccurateAttention", "detectFeatures", "detectWasmSIMD", "simdTest", "WA", "SMALL_DATASET_CONFIG", "MEDIUM_DATASET_CONFIG", "LARGE_DATASET_CONFIG", "MEMORY_OPTIMIZED_CONFIG", "SPEED_OPTIMIZED_CONFIG", "QUALITY_OPTIMIZED_CONFIG", "VERSION", "estimateMemoryUsage", "numVectors", "dimension", "config", "_a", "_b", "_c", "vectorBytes", "subvectors", "targetDim", "indexBytes", "avgConnections", "total", "recommendConfig", "benchmarkSearch", "searchFn", "numQueries", "k", "times", "i", "query", "d", "start", "end", "a", "b"]
7
+ }