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