agentdb 3.0.0-alpha.10 → 3.0.0-alpha.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +2821 -225
- package/dist/src/backends/VectorBackend.d.ts +31 -6
- package/dist/src/backends/VectorBackend.d.ts.map +1 -1
- package/dist/src/backends/detector.js.map +1 -1
- package/dist/src/backends/factory.d.ts +16 -33
- package/dist/src/backends/factory.d.ts.map +1 -1
- package/dist/src/backends/factory.js +138 -108
- package/dist/src/backends/factory.js.map +1 -1
- package/dist/src/backends/hnswlib/HNSWLibBackend.d.ts.map +1 -1
- package/dist/src/backends/hnswlib/HNSWLibBackend.js +29 -2
- package/dist/src/backends/hnswlib/HNSWLibBackend.js.map +1 -1
- package/dist/src/backends/ruvector/RuVectorBackend.d.ts +198 -45
- package/dist/src/backends/ruvector/RuVectorBackend.d.ts.map +1 -1
- package/dist/src/backends/ruvector/RuVectorBackend.js +612 -277
- package/dist/src/backends/ruvector/RuVectorBackend.js.map +1 -1
- package/dist/src/backends/ruvector/RuVectorLearning.d.ts +0 -4
- package/dist/src/backends/ruvector/RuVectorLearning.d.ts.map +1 -1
- package/dist/src/backends/ruvector/RuVectorLearning.js +0 -6
- package/dist/src/backends/ruvector/RuVectorLearning.js.map +1 -1
- package/dist/src/backends/rvf/AdaptiveIndexTuner.d.ts +175 -0
- package/dist/src/backends/rvf/AdaptiveIndexTuner.d.ts.map +1 -0
- package/dist/src/backends/rvf/AdaptiveIndexTuner.js +559 -0
- package/dist/src/backends/rvf/AdaptiveIndexTuner.js.map +1 -0
- package/dist/src/backends/rvf/ContrastiveTrainer.d.ts +148 -0
- package/dist/src/backends/rvf/ContrastiveTrainer.d.ts.map +1 -0
- package/dist/src/backends/rvf/ContrastiveTrainer.js +438 -0
- package/dist/src/backends/rvf/ContrastiveTrainer.js.map +1 -0
- package/dist/src/backends/rvf/FederatedSessionManager.d.ts +211 -0
- package/dist/src/backends/rvf/FederatedSessionManager.d.ts.map +1 -0
- package/dist/src/backends/rvf/FederatedSessionManager.js +389 -0
- package/dist/src/backends/rvf/FederatedSessionManager.js.map +1 -0
- package/dist/src/backends/rvf/FilterBuilder.d.ts +136 -0
- package/dist/src/backends/rvf/FilterBuilder.d.ts.map +1 -0
- package/dist/src/backends/rvf/FilterBuilder.js +157 -0
- package/dist/src/backends/rvf/FilterBuilder.js.map +1 -0
- package/dist/src/backends/rvf/NativeAccelerator.d.ts +140 -0
- package/dist/src/backends/rvf/NativeAccelerator.d.ts.map +1 -0
- package/dist/src/backends/rvf/NativeAccelerator.js +630 -0
- package/dist/src/backends/rvf/NativeAccelerator.js.map +1 -0
- package/dist/src/backends/rvf/RvfBackend.d.ts +194 -0
- package/dist/src/backends/rvf/RvfBackend.d.ts.map +1 -0
- package/dist/src/backends/rvf/RvfBackend.js +607 -0
- package/dist/src/backends/rvf/RvfBackend.js.map +1 -0
- package/dist/src/backends/rvf/RvfSolver.d.ts +175 -0
- package/dist/src/backends/rvf/RvfSolver.d.ts.map +1 -0
- package/dist/src/backends/rvf/RvfSolver.js +176 -0
- package/dist/src/backends/rvf/RvfSolver.js.map +1 -0
- package/dist/src/backends/rvf/SelfLearningRvfBackend.d.ts +143 -0
- package/dist/src/backends/rvf/SelfLearningRvfBackend.d.ts.map +1 -0
- package/dist/src/backends/rvf/SelfLearningRvfBackend.js +569 -0
- package/dist/src/backends/rvf/SelfLearningRvfBackend.js.map +1 -0
- package/dist/src/backends/rvf/SemanticQueryRouter.d.ts +128 -0
- package/dist/src/backends/rvf/SemanticQueryRouter.d.ts.map +1 -0
- package/dist/src/backends/rvf/SemanticQueryRouter.js +415 -0
- package/dist/src/backends/rvf/SemanticQueryRouter.js.map +1 -0
- package/dist/src/backends/rvf/SimdFallbacks.d.ts +25 -0
- package/dist/src/backends/rvf/SimdFallbacks.d.ts.map +1 -0
- package/dist/src/backends/rvf/SimdFallbacks.js +287 -0
- package/dist/src/backends/rvf/SimdFallbacks.js.map +1 -0
- package/dist/src/backends/rvf/SolverBandit.d.ts +100 -0
- package/dist/src/backends/rvf/SolverBandit.d.ts.map +1 -0
- package/dist/src/backends/rvf/SolverBandit.js +216 -0
- package/dist/src/backends/rvf/SolverBandit.js.map +1 -0
- package/dist/src/backends/rvf/SonaLearningBackend.d.ts +157 -0
- package/dist/src/backends/rvf/SonaLearningBackend.d.ts.map +1 -0
- package/dist/src/backends/rvf/SonaLearningBackend.js +283 -0
- package/dist/src/backends/rvf/SonaLearningBackend.js.map +1 -0
- package/dist/src/backends/rvf/SqlJsRvfBackend.d.ts +77 -0
- package/dist/src/backends/rvf/SqlJsRvfBackend.d.ts.map +1 -0
- package/dist/src/backends/rvf/SqlJsRvfBackend.js +382 -0
- package/dist/src/backends/rvf/SqlJsRvfBackend.js.map +1 -0
- package/dist/src/backends/rvf/WasmStoreBridge.d.ts +27 -0
- package/dist/src/backends/rvf/WasmStoreBridge.d.ts.map +1 -0
- package/dist/src/backends/rvf/WasmStoreBridge.js +87 -0
- package/dist/src/backends/rvf/WasmStoreBridge.js.map +1 -0
- package/dist/src/backends/rvf/validation.d.ts +20 -0
- package/dist/src/backends/rvf/validation.d.ts.map +1 -0
- package/dist/src/backends/rvf/validation.js +78 -0
- package/dist/src/backends/rvf/validation.js.map +1 -0
- package/dist/src/benchmark/BenchmarkSuite.d.ts +318 -0
- package/dist/src/benchmark/BenchmarkSuite.d.ts.map +1 -0
- package/dist/src/benchmark/BenchmarkSuite.js +984 -0
- package/dist/src/benchmark/BenchmarkSuite.js.map +1 -0
- package/dist/src/benchmark/index.d.ts +29 -0
- package/dist/src/benchmark/index.d.ts.map +1 -0
- package/dist/src/benchmark/index.js +39 -0
- package/dist/src/benchmark/index.js.map +1 -0
- package/dist/src/browser/AttentionBrowser.d.ts.map +1 -1
- package/dist/src/browser/AttentionBrowser.js +1 -0
- package/dist/src/browser/AttentionBrowser.js.map +1 -1
- package/dist/src/cli/agentdb-cli.d.ts +13 -0
- package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
- package/dist/src/cli/agentdb-cli.js +803 -94
- package/dist/src/cli/agentdb-cli.js.map +1 -1
- package/dist/src/cli/commands/hyperbolic.d.ts +11 -0
- package/dist/src/cli/commands/hyperbolic.d.ts.map +1 -0
- package/dist/src/cli/commands/hyperbolic.js +428 -0
- package/dist/src/cli/commands/hyperbolic.js.map +1 -0
- package/dist/src/cli/commands/learn.d.ts +11 -0
- package/dist/src/cli/commands/learn.d.ts.map +1 -0
- package/dist/src/cli/commands/learn.js +404 -0
- package/dist/src/cli/commands/learn.js.map +1 -0
- package/dist/src/cli/commands/migrate.d.ts +15 -0
- package/dist/src/cli/commands/migrate.d.ts.map +1 -1
- package/dist/src/cli/commands/migrate.js +176 -8
- package/dist/src/cli/commands/migrate.js.map +1 -1
- package/dist/src/cli/commands/route.d.ts +11 -0
- package/dist/src/cli/commands/route.d.ts.map +1 -0
- package/dist/src/cli/commands/route.js +414 -0
- package/dist/src/cli/commands/route.js.map +1 -0
- package/dist/src/cli/commands/rvf.d.ts +21 -0
- package/dist/src/cli/commands/rvf.d.ts.map +1 -0
- package/dist/src/cli/commands/rvf.js +448 -0
- package/dist/src/cli/commands/rvf.js.map +1 -0
- package/dist/src/cli/lib/report-store.d.ts +2 -1
- package/dist/src/cli/lib/report-store.d.ts.map +1 -1
- package/dist/src/cli/lib/report-store.js +85 -65
- package/dist/src/cli/lib/report-store.js.map +1 -1
- package/dist/src/cli/lib/simulation-runner.d.ts +40 -3
- package/dist/src/cli/lib/simulation-runner.d.ts.map +1 -1
- package/dist/src/cli/lib/simulation-runner.js +248 -6
- package/dist/src/cli/lib/simulation-runner.js.map +1 -1
- package/dist/src/compatibility/DeprecationWarnings.d.ts +54 -0
- package/dist/src/compatibility/DeprecationWarnings.d.ts.map +1 -0
- package/dist/src/compatibility/DeprecationWarnings.js +131 -0
- package/dist/src/compatibility/DeprecationWarnings.js.map +1 -0
- package/dist/src/compatibility/MigrationUtilities.d.ts +30 -0
- package/dist/src/compatibility/MigrationUtilities.d.ts.map +1 -0
- package/dist/src/compatibility/MigrationUtilities.js +184 -0
- package/dist/src/compatibility/MigrationUtilities.js.map +1 -0
- package/dist/src/compatibility/V1toV2Adapter.d.ts +76 -0
- package/dist/src/compatibility/V1toV2Adapter.d.ts.map +1 -0
- package/dist/src/compatibility/V1toV2Adapter.js +185 -0
- package/dist/src/compatibility/V1toV2Adapter.js.map +1 -0
- package/dist/src/compatibility/VersionDetector.d.ts +32 -0
- package/dist/src/compatibility/VersionDetector.d.ts.map +1 -0
- package/dist/src/compatibility/VersionDetector.js +144 -0
- package/dist/src/compatibility/VersionDetector.js.map +1 -0
- package/dist/src/compatibility/index.d.ts +14 -0
- package/dist/src/compatibility/index.d.ts.map +1 -0
- package/dist/src/compatibility/index.js +21 -0
- package/dist/src/compatibility/index.js.map +1 -0
- package/dist/src/compatibility/types.d.ts +103 -0
- package/dist/src/compatibility/types.d.ts.map +1 -0
- package/dist/src/compatibility/types.js +5 -0
- package/dist/src/compatibility/types.js.map +1 -0
- package/dist/src/controllers/AttentionService.d.ts +99 -202
- package/dist/src/controllers/AttentionService.d.ts.map +1 -1
- package/dist/src/controllers/AttentionService.js +450 -558
- package/dist/src/controllers/AttentionService.js.map +1 -1
- package/dist/src/controllers/CausalMemoryGraph.d.ts +30 -5
- package/dist/src/controllers/CausalMemoryGraph.d.ts.map +1 -1
- package/dist/src/controllers/CausalMemoryGraph.js +89 -13
- package/dist/src/controllers/CausalMemoryGraph.js.map +1 -1
- package/dist/src/controllers/CausalRecall.d.ts +4 -0
- package/dist/src/controllers/CausalRecall.d.ts.map +1 -1
- package/dist/src/controllers/CausalRecall.js +19 -2
- package/dist/src/controllers/CausalRecall.js.map +1 -1
- package/dist/src/controllers/EmbeddingService.d.ts.map +1 -1
- package/dist/src/controllers/EmbeddingService.js +28 -11
- package/dist/src/controllers/EmbeddingService.js.map +1 -1
- package/dist/src/controllers/EnhancedEmbeddingService.d.ts +4 -0
- package/dist/src/controllers/EnhancedEmbeddingService.d.ts.map +1 -1
- package/dist/src/controllers/EnhancedEmbeddingService.js +17 -3
- package/dist/src/controllers/EnhancedEmbeddingService.js.map +1 -1
- package/dist/src/controllers/ExplainableRecall.d.ts +1 -1
- package/dist/src/controllers/ExplainableRecall.d.ts.map +1 -1
- package/dist/src/controllers/ExplainableRecall.js +1 -1
- package/dist/src/controllers/ExplainableRecall.js.map +1 -1
- package/dist/src/controllers/HNSWIndex.d.ts +20 -2
- package/dist/src/controllers/HNSWIndex.d.ts.map +1 -1
- package/dist/src/controllers/HNSWIndex.js +82 -6
- package/dist/src/controllers/HNSWIndex.js.map +1 -1
- package/dist/src/controllers/LearningSystem.d.ts +1 -17
- package/dist/src/controllers/LearningSystem.d.ts.map +1 -1
- package/dist/src/controllers/LearningSystem.js +18 -135
- package/dist/src/controllers/LearningSystem.js.map +1 -1
- package/dist/src/controllers/MemoryController.d.ts +161 -0
- package/dist/src/controllers/MemoryController.d.ts.map +1 -0
- package/dist/src/controllers/MemoryController.js +303 -0
- package/dist/src/controllers/MemoryController.js.map +1 -0
- package/dist/src/controllers/MincutService.d.ts +92 -0
- package/dist/src/controllers/MincutService.d.ts.map +1 -0
- package/dist/src/controllers/MincutService.js +336 -0
- package/dist/src/controllers/MincutService.js.map +1 -0
- package/dist/src/controllers/NightlyLearner.d.ts +5 -1
- package/dist/src/controllers/NightlyLearner.d.ts.map +1 -1
- package/dist/src/controllers/NightlyLearner.js +17 -3
- package/dist/src/controllers/NightlyLearner.js.map +1 -1
- package/dist/src/controllers/QUICClient.d.ts +45 -0
- package/dist/src/controllers/QUICClient.d.ts.map +1 -1
- package/dist/src/controllers/QUICClient.js +190 -0
- package/dist/src/controllers/QUICClient.js.map +1 -1
- package/dist/src/controllers/ReasoningBank.d.ts +6 -3
- package/dist/src/controllers/ReasoningBank.d.ts.map +1 -1
- package/dist/src/controllers/ReasoningBank.js +47 -41
- package/dist/src/controllers/ReasoningBank.js.map +1 -1
- package/dist/src/controllers/ReflexionMemory.d.ts +115 -6
- package/dist/src/controllers/ReflexionMemory.d.ts.map +1 -1
- package/dist/src/controllers/ReflexionMemory.js +541 -213
- package/dist/src/controllers/ReflexionMemory.js.map +1 -1
- package/dist/src/controllers/SkillLibrary.d.ts +27 -3
- package/dist/src/controllers/SkillLibrary.d.ts.map +1 -1
- package/dist/src/controllers/SkillLibrary.js +187 -91
- package/dist/src/controllers/SkillLibrary.js.map +1 -1
- package/dist/src/controllers/SparsificationService.d.ts +151 -0
- package/dist/src/controllers/SparsificationService.d.ts.map +1 -0
- package/dist/src/controllers/SparsificationService.js +375 -0
- package/dist/src/controllers/SparsificationService.js.map +1 -0
- package/dist/src/controllers/SyncCoordinator.d.ts.map +1 -1
- package/dist/src/controllers/SyncCoordinator.js +115 -3
- package/dist/src/controllers/SyncCoordinator.js.map +1 -1
- package/dist/src/controllers/WASMVectorSearch.d.ts +12 -30
- package/dist/src/controllers/WASMVectorSearch.d.ts.map +1 -1
- package/dist/src/controllers/WASMVectorSearch.js +146 -93
- package/dist/src/controllers/WASMVectorSearch.js.map +1 -1
- package/dist/src/controllers/attention/AttentionCache.d.ts +38 -0
- package/dist/src/controllers/attention/AttentionCache.d.ts.map +1 -0
- package/dist/src/controllers/attention/AttentionCache.js +80 -0
- package/dist/src/controllers/attention/AttentionCache.js.map +1 -0
- package/dist/src/controllers/attention/AttentionConfig.d.ts +127 -0
- package/dist/src/controllers/attention/AttentionConfig.d.ts.map +1 -0
- package/dist/src/controllers/attention/AttentionConfig.js +124 -0
- package/dist/src/controllers/attention/AttentionConfig.js.map +1 -0
- package/dist/src/controllers/attention/AttentionCore.d.ts +89 -0
- package/dist/src/controllers/attention/AttentionCore.d.ts.map +1 -0
- package/dist/src/controllers/attention/AttentionCore.js +289 -0
- package/dist/src/controllers/attention/AttentionCore.js.map +1 -0
- package/dist/src/controllers/attention/AttentionHelpers.d.ts +55 -0
- package/dist/src/controllers/attention/AttentionHelpers.d.ts.map +1 -0
- package/dist/src/controllers/attention/AttentionHelpers.js +148 -0
- package/dist/src/controllers/attention/AttentionHelpers.js.map +1 -0
- package/dist/src/controllers/attention/AttentionMetrics.d.ts +55 -0
- package/dist/src/controllers/attention/AttentionMetrics.d.ts.map +1 -0
- package/dist/src/controllers/attention/AttentionMetrics.js +72 -0
- package/dist/src/controllers/attention/AttentionMetrics.js.map +1 -0
- package/dist/src/controllers/attention/AttentionWASM.d.ts +98 -0
- package/dist/src/controllers/attention/AttentionWASM.d.ts.map +1 -0
- package/dist/src/controllers/attention/AttentionWASM.js +147 -0
- package/dist/src/controllers/attention/AttentionWASM.js.map +1 -0
- package/dist/src/controllers/attention/CrossAttentionController.d.ts +141 -0
- package/dist/src/controllers/attention/CrossAttentionController.d.ts.map +1 -0
- package/dist/src/controllers/attention/CrossAttentionController.js +325 -0
- package/dist/src/controllers/attention/CrossAttentionController.js.map +1 -0
- package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts +137 -0
- package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts.map +1 -0
- package/dist/src/controllers/attention/MultiHeadAttentionController.js +336 -0
- package/dist/src/controllers/attention/MultiHeadAttentionController.js.map +1 -0
- package/dist/src/controllers/attention/SelfAttentionController.d.ts +117 -0
- package/dist/src/controllers/attention/SelfAttentionController.d.ts.map +1 -0
- package/dist/src/controllers/attention/SelfAttentionController.js +205 -0
- package/dist/src/controllers/attention/SelfAttentionController.js.map +1 -0
- package/dist/src/controllers/attention/index.d.ts +24 -0
- package/dist/src/controllers/attention/index.d.ts.map +1 -0
- package/dist/src/controllers/attention/index.js +20 -0
- package/dist/src/controllers/attention/index.js.map +1 -0
- package/dist/src/controllers/index.d.ts +14 -27
- package/dist/src/controllers/index.d.ts.map +1 -1
- package/dist/src/controllers/index.js +10 -18
- package/dist/src/controllers/index.js.map +1 -1
- package/dist/src/controllers/prerequisites.d.ts +76 -0
- package/dist/src/controllers/prerequisites.d.ts.map +1 -0
- package/dist/src/controllers/prerequisites.js +235 -0
- package/dist/src/controllers/prerequisites.js.map +1 -0
- package/dist/src/core/AgentDB.d.ts +27 -19
- package/dist/src/core/AgentDB.d.ts.map +1 -1
- package/dist/src/core/AgentDB.js +76 -124
- package/dist/src/core/AgentDB.js.map +1 -1
- package/dist/src/core/QueryCache.d.ts +138 -0
- package/dist/src/core/QueryCache.d.ts.map +1 -0
- package/dist/src/core/QueryCache.js +309 -0
- package/dist/src/core/QueryCache.js.map +1 -0
- package/dist/src/db-fallback.d.ts +10 -1
- package/dist/src/db-fallback.d.ts.map +1 -1
- package/dist/src/db-fallback.js +205 -28
- package/dist/src/db-fallback.js.map +1 -1
- package/dist/src/examples/quic-sync-example.js +2 -2
- package/dist/src/examples/quic-sync-example.js.map +1 -1
- package/dist/src/index.d.ts +15 -15
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +39 -11
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/agentdb-mcp-server.js +47 -2
- package/dist/src/mcp/agentdb-mcp-server.js.map +1 -1
- package/dist/src/model/ModelCacheLoader.d.ts +24 -0
- package/dist/src/model/ModelCacheLoader.d.ts.map +1 -0
- package/dist/src/model/ModelCacheLoader.js +121 -0
- package/dist/src/model/ModelCacheLoader.js.map +1 -0
- package/dist/src/observability/index.d.ts +8 -0
- package/dist/src/observability/index.d.ts.map +1 -0
- package/dist/src/observability/index.js +8 -0
- package/dist/src/observability/index.js.map +1 -0
- package/dist/src/observability/integration.d.ts +32 -0
- package/dist/src/observability/integration.d.ts.map +1 -0
- package/dist/src/observability/integration.js +159 -0
- package/dist/src/observability/integration.js.map +1 -0
- package/dist/src/observability/telemetry.d.ts +137 -0
- package/dist/src/observability/telemetry.d.ts.map +1 -0
- package/dist/src/observability/telemetry.js +416 -0
- package/dist/src/observability/telemetry.js.map +1 -0
- package/dist/src/optimizations/BatchOperations.d.ts +47 -0
- package/dist/src/optimizations/BatchOperations.d.ts.map +1 -1
- package/dist/src/optimizations/BatchOperations.js +183 -31
- package/dist/src/optimizations/BatchOperations.js.map +1 -1
- package/dist/src/optimizations/Quantization.d.ts +330 -0
- package/dist/src/optimizations/Quantization.d.ts.map +1 -0
- package/dist/src/optimizations/Quantization.js +793 -0
- package/dist/src/optimizations/Quantization.js.map +1 -0
- package/dist/src/optimizations/index.d.ts +1 -3
- package/dist/src/optimizations/index.d.ts.map +1 -1
- package/dist/src/optimizations/index.js +0 -1
- package/dist/src/optimizations/index.js.map +1 -1
- package/dist/src/quantization/index.d.ts +7 -0
- package/dist/src/quantization/index.d.ts.map +1 -0
- package/dist/src/quantization/index.js +15 -0
- package/dist/src/quantization/index.js.map +1 -0
- package/dist/src/quantization/vector-quantization.d.ts +388 -0
- package/dist/src/quantization/vector-quantization.d.ts.map +1 -0
- package/dist/src/quantization/vector-quantization.js +1132 -0
- package/dist/src/quantization/vector-quantization.js.map +1 -0
- package/dist/src/search/HybridSearch.d.ts +311 -0
- package/dist/src/search/HybridSearch.d.ts.map +1 -0
- package/dist/src/search/HybridSearch.js +712 -0
- package/dist/src/search/HybridSearch.js.map +1 -0
- package/dist/src/search/index.d.ts +12 -0
- package/dist/src/search/index.d.ts.map +1 -0
- package/dist/src/search/index.js +16 -0
- package/dist/src/search/index.js.map +1 -0
- package/dist/src/services/AttentionService.d.ts +303 -0
- package/dist/src/services/AttentionService.d.ts.map +1 -0
- package/dist/src/services/AttentionService.js +1165 -0
- package/dist/src/services/AttentionService.js.map +1 -0
- package/dist/src/services/LLMRouter.d.ts +61 -7
- package/dist/src/services/LLMRouter.d.ts.map +1 -1
- package/dist/src/services/LLMRouter.js +286 -22
- package/dist/src/services/LLMRouter.js.map +1 -1
- package/dist/src/services/audit-logger.service.d.ts +168 -0
- package/dist/src/services/audit-logger.service.d.ts.map +1 -0
- package/dist/src/services/audit-logger.service.js +331 -0
- package/dist/src/services/audit-logger.service.js.map +1 -0
- package/dist/src/services/enhanced-embeddings.d.ts +271 -0
- package/dist/src/services/enhanced-embeddings.d.ts.map +1 -0
- package/dist/src/services/enhanced-embeddings.js +1035 -0
- package/dist/src/services/enhanced-embeddings.js.map +1 -0
- package/dist/src/services/federated-learning.d.ts +172 -0
- package/dist/src/services/federated-learning.d.ts.map +1 -0
- package/dist/src/services/federated-learning.js +342 -0
- package/dist/src/services/federated-learning.js.map +1 -0
- package/dist/src/simd/index.d.ts +9 -0
- package/dist/src/simd/index.d.ts.map +1 -0
- package/dist/src/simd/index.js +27 -0
- package/dist/src/simd/index.js.map +1 -0
- package/dist/src/simd/simd-vector-ops.d.ts +332 -0
- package/dist/src/simd/simd-vector-ops.d.ts.map +1 -0
- package/dist/src/simd/simd-vector-ops.js +945 -0
- package/dist/src/simd/simd-vector-ops.js.map +1 -0
- package/dist/src/types/database.types.d.ts +275 -0
- package/dist/src/types/database.types.d.ts.map +1 -0
- package/dist/src/types/database.types.js +55 -0
- package/dist/src/types/database.types.js.map +1 -0
- package/dist/src/types/graph.d.ts +29 -0
- package/dist/src/types/graph.d.ts.map +1 -0
- package/dist/src/types/graph.js +8 -0
- package/dist/src/types/graph.js.map +1 -0
- package/dist/src/utils/chalk-fallback.d.ts +3 -0
- package/dist/src/utils/chalk-fallback.d.ts.map +1 -0
- package/dist/src/utils/chalk-fallback.js +20 -0
- package/dist/src/utils/chalk-fallback.js.map +1 -0
- package/dist/src/utils/similarity.d.ts +11 -0
- package/dist/src/utils/similarity.d.ts.map +1 -0
- package/dist/src/utils/similarity.js +25 -0
- package/dist/src/utils/similarity.js.map +1 -0
- package/dist/src/wasm-loader.d.ts +66 -0
- package/dist/src/wasm-loader.d.ts.map +1 -0
- package/dist/src/wasm-loader.js +76 -0
- package/dist/src/wasm-loader.js.map +1 -0
- package/dist/src/wrappers/agentdb-fast.d.ts +139 -0
- package/dist/src/wrappers/agentdb-fast.d.ts.map +1 -0
- package/dist/src/wrappers/agentdb-fast.js +307 -0
- package/dist/src/wrappers/agentdb-fast.js.map +1 -0
- package/dist/src/wrappers/attention-fallbacks.d.ts +343 -0
- package/dist/src/wrappers/attention-fallbacks.d.ts.map +1 -0
- package/dist/src/wrappers/attention-fallbacks.js +1484 -0
- package/dist/src/wrappers/attention-fallbacks.js.map +1 -0
- package/dist/src/wrappers/attention-native.d.ts +111 -0
- package/dist/src/wrappers/attention-native.d.ts.map +1 -0
- package/dist/src/wrappers/attention-native.js +273 -0
- package/dist/src/wrappers/attention-native.js.map +1 -0
- package/dist/src/wrappers/embedding-service.d.ts +117 -0
- package/dist/src/wrappers/embedding-service.d.ts.map +1 -0
- package/dist/src/wrappers/embedding-service.js +370 -0
- package/dist/src/wrappers/embedding-service.js.map +1 -0
- package/dist/src/wrappers/gnn-wrapper.d.ts +71 -0
- package/dist/src/wrappers/gnn-wrapper.d.ts.map +1 -0
- package/dist/src/wrappers/gnn-wrapper.js +236 -0
- package/dist/src/wrappers/gnn-wrapper.js.map +1 -0
- package/dist/src/wrappers/index.d.ts +48 -0
- package/dist/src/wrappers/index.d.ts.map +1 -0
- package/dist/src/wrappers/index.js +83 -0
- package/dist/src/wrappers/index.js.map +1 -0
- package/package.json +77 -76
- package/scripts/postinstall.cjs +13 -144
- package/dist/agentdb.browser.js +0 -1685
- package/dist/agentdb.browser.js.map +0 -7
- package/dist/agentdb.browser.min.js +0 -3
- package/dist/agentdb.browser.min.js.map +0 -7
- package/dist/agentdb.wasm-loader.js +0 -207
- package/dist/backends/VectorBackend.d.ts +0 -120
- package/dist/backends/VectorBackend.js +0 -14
- package/dist/backends/VectorBackend.js.map +0 -1
- package/dist/optimizations/RVFOptimizer.d.ts +0 -225
- package/dist/optimizations/RVFOptimizer.js +0 -541
- package/dist/optimizations/RVFOptimizer.js.map +0 -1
- package/dist/schemas/frontier-schema.sql +0 -378
- package/dist/schemas/schema.sql +0 -382
- package/dist/simulation/cli.d.ts +0 -9
- package/dist/simulation/cli.d.ts.map +0 -1
- package/dist/simulation/cli.js +0 -68
- package/dist/simulation/cli.js.map +0 -1
- package/dist/simulation/runner.d.ts +0 -21
- package/dist/simulation/runner.d.ts.map +0 -1
- package/dist/simulation/runner.js +0 -241
- package/dist/simulation/runner.js.map +0 -1
- package/dist/simulation/scenarios/aidefence-integration.d.ts +0 -24
- package/dist/simulation/scenarios/aidefence-integration.d.ts.map +0 -1
- package/dist/simulation/scenarios/aidefence-integration.js +0 -124
- package/dist/simulation/scenarios/aidefence-integration.js.map +0 -1
- package/dist/simulation/scenarios/bmssp-integration.d.ts +0 -23
- package/dist/simulation/scenarios/bmssp-integration.d.ts.map +0 -1
- package/dist/simulation/scenarios/bmssp-integration.js +0 -104
- package/dist/simulation/scenarios/bmssp-integration.js.map +0 -1
- package/dist/simulation/scenarios/causal-reasoning.d.ts +0 -16
- package/dist/simulation/scenarios/causal-reasoning.d.ts.map +0 -1
- package/dist/simulation/scenarios/causal-reasoning.js +0 -108
- package/dist/simulation/scenarios/causal-reasoning.js.map +0 -1
- package/dist/simulation/scenarios/consciousness-explorer.d.ts +0 -25
- package/dist/simulation/scenarios/consciousness-explorer.d.ts.map +0 -1
- package/dist/simulation/scenarios/consciousness-explorer.js +0 -108
- package/dist/simulation/scenarios/consciousness-explorer.js.map +0 -1
- package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.d.ts +0 -135
- package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.d.ts.map +0 -1
- package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.js +0 -158
- package/dist/simulation/scenarios/domain-examples/e-commerce-recommendations.js.map +0 -1
- package/dist/simulation/scenarios/domain-examples/index.d.ts +0 -14
- package/dist/simulation/scenarios/domain-examples/index.d.ts.map +0 -1
- package/dist/simulation/scenarios/domain-examples/index.js +0 -14
- package/dist/simulation/scenarios/domain-examples/index.js.map +0 -1
- package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.d.ts +0 -178
- package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.d.ts.map +0 -1
- package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.js +0 -218
- package/dist/simulation/scenarios/domain-examples/iot-sensor-networks.js.map +0 -1
- package/dist/simulation/scenarios/domain-examples/medical-imaging.d.ts +0 -122
- package/dist/simulation/scenarios/domain-examples/medical-imaging.d.ts.map +0 -1
- package/dist/simulation/scenarios/domain-examples/medical-imaging.js +0 -129
- package/dist/simulation/scenarios/domain-examples/medical-imaging.js.map +0 -1
- package/dist/simulation/scenarios/domain-examples/robotics-navigation.d.ts +0 -166
- package/dist/simulation/scenarios/domain-examples/robotics-navigation.d.ts.map +0 -1
- package/dist/simulation/scenarios/domain-examples/robotics-navigation.js +0 -161
- package/dist/simulation/scenarios/domain-examples/robotics-navigation.js.map +0 -1
- package/dist/simulation/scenarios/domain-examples/scientific-research.d.ts +0 -151
- package/dist/simulation/scenarios/domain-examples/scientific-research.d.ts.map +0 -1
- package/dist/simulation/scenarios/domain-examples/scientific-research.js +0 -187
- package/dist/simulation/scenarios/domain-examples/scientific-research.js.map +0 -1
- package/dist/simulation/scenarios/domain-examples/trading-systems.d.ts +0 -102
- package/dist/simulation/scenarios/domain-examples/trading-systems.d.ts.map +0 -1
- package/dist/simulation/scenarios/domain-examples/trading-systems.js +0 -100
- package/dist/simulation/scenarios/domain-examples/trading-systems.js.map +0 -1
- package/dist/simulation/scenarios/goalie-integration.d.ts +0 -24
- package/dist/simulation/scenarios/goalie-integration.d.ts.map +0 -1
- package/dist/simulation/scenarios/goalie-integration.js +0 -121
- package/dist/simulation/scenarios/goalie-integration.js.map +0 -1
- package/dist/simulation/scenarios/graph-traversal.d.ts +0 -17
- package/dist/simulation/scenarios/graph-traversal.d.ts.map +0 -1
- package/dist/simulation/scenarios/graph-traversal.js +0 -101
- package/dist/simulation/scenarios/graph-traversal.js.map +0 -1
- package/dist/simulation/scenarios/latent-space/attention-analysis.d.ts +0 -45
- package/dist/simulation/scenarios/latent-space/attention-analysis.d.ts.map +0 -1
- package/dist/simulation/scenarios/latent-space/attention-analysis.js +0 -435
- package/dist/simulation/scenarios/latent-space/attention-analysis.js.map +0 -1
- package/dist/simulation/scenarios/latent-space/clustering-analysis.d.ts +0 -55
- package/dist/simulation/scenarios/latent-space/clustering-analysis.d.ts.map +0 -1
- package/dist/simulation/scenarios/latent-space/clustering-analysis.js +0 -606
- package/dist/simulation/scenarios/latent-space/clustering-analysis.js.map +0 -1
- package/dist/simulation/scenarios/latent-space/hnsw-exploration.d.ts +0 -74
- package/dist/simulation/scenarios/latent-space/hnsw-exploration.d.ts.map +0 -1
- package/dist/simulation/scenarios/latent-space/hnsw-exploration.js +0 -391
- package/dist/simulation/scenarios/latent-space/hnsw-exploration.js.map +0 -1
- package/dist/simulation/scenarios/latent-space/hypergraph-exploration.d.ts +0 -51
- package/dist/simulation/scenarios/latent-space/hypergraph-exploration.d.ts.map +0 -1
- package/dist/simulation/scenarios/latent-space/hypergraph-exploration.js +0 -536
- package/dist/simulation/scenarios/latent-space/hypergraph-exploration.js.map +0 -1
- package/dist/simulation/scenarios/latent-space/index.d.ts +0 -35
- package/dist/simulation/scenarios/latent-space/index.d.ts.map +0 -1
- package/dist/simulation/scenarios/latent-space/index.js +0 -35
- package/dist/simulation/scenarios/latent-space/index.js.map +0 -1
- package/dist/simulation/scenarios/latent-space/neural-augmentation.d.ts +0 -52
- package/dist/simulation/scenarios/latent-space/neural-augmentation.d.ts.map +0 -1
- package/dist/simulation/scenarios/latent-space/neural-augmentation.js +0 -472
- package/dist/simulation/scenarios/latent-space/neural-augmentation.js.map +0 -1
- package/dist/simulation/scenarios/latent-space/quantum-hybrid.d.ts +0 -53
- package/dist/simulation/scenarios/latent-space/quantum-hybrid.d.ts.map +0 -1
- package/dist/simulation/scenarios/latent-space/quantum-hybrid.js +0 -391
- package/dist/simulation/scenarios/latent-space/quantum-hybrid.js.map +0 -1
- package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.d.ts +0 -52
- package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.d.ts.map +0 -1
- package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.js +0 -514
- package/dist/simulation/scenarios/latent-space/self-organizing-hnsw.js.map +0 -1
- package/dist/simulation/scenarios/latent-space/traversal-optimization.d.ts +0 -53
- package/dist/simulation/scenarios/latent-space/traversal-optimization.d.ts.map +0 -1
- package/dist/simulation/scenarios/latent-space/traversal-optimization.js +0 -595
- package/dist/simulation/scenarios/latent-space/traversal-optimization.js.map +0 -1
- package/dist/simulation/scenarios/lean-agentic-swarm.d.ts +0 -18
- package/dist/simulation/scenarios/lean-agentic-swarm.d.ts.map +0 -1
- package/dist/simulation/scenarios/lean-agentic-swarm.js +0 -132
- package/dist/simulation/scenarios/lean-agentic-swarm.js.map +0 -1
- package/dist/simulation/scenarios/multi-agent-swarm.d.ts +0 -17
- package/dist/simulation/scenarios/multi-agent-swarm.d.ts.map +0 -1
- package/dist/simulation/scenarios/multi-agent-swarm.js +0 -111
- package/dist/simulation/scenarios/multi-agent-swarm.js.map +0 -1
- package/dist/simulation/scenarios/psycho-symbolic-reasoner.d.ts +0 -23
- package/dist/simulation/scenarios/psycho-symbolic-reasoner.d.ts.map +0 -1
- package/dist/simulation/scenarios/psycho-symbolic-reasoner.js +0 -98
- package/dist/simulation/scenarios/psycho-symbolic-reasoner.js.map +0 -1
- package/dist/simulation/scenarios/reflexion-learning.d.ts +0 -16
- package/dist/simulation/scenarios/reflexion-learning.d.ts.map +0 -1
- package/dist/simulation/scenarios/reflexion-learning.js +0 -98
- package/dist/simulation/scenarios/reflexion-learning.js.map +0 -1
- package/dist/simulation/scenarios/research-swarm.d.ts +0 -24
- package/dist/simulation/scenarios/research-swarm.d.ts.map +0 -1
- package/dist/simulation/scenarios/research-swarm.js +0 -146
- package/dist/simulation/scenarios/research-swarm.js.map +0 -1
- package/dist/simulation/scenarios/skill-evolution.d.ts +0 -16
- package/dist/simulation/scenarios/skill-evolution.d.ts.map +0 -1
- package/dist/simulation/scenarios/skill-evolution.js +0 -109
- package/dist/simulation/scenarios/skill-evolution.js.map +0 -1
- package/dist/simulation/scenarios/stock-market-emergence.d.ts +0 -33
- package/dist/simulation/scenarios/stock-market-emergence.d.ts.map +0 -1
- package/dist/simulation/scenarios/stock-market-emergence.js +0 -246
- package/dist/simulation/scenarios/stock-market-emergence.js.map +0 -1
- package/dist/simulation/scenarios/strange-loops.d.ts +0 -18
- package/dist/simulation/scenarios/strange-loops.d.ts.map +0 -1
- package/dist/simulation/scenarios/strange-loops.js +0 -133
- package/dist/simulation/scenarios/strange-loops.js.map +0 -1
- package/dist/simulation/scenarios/sublinear-solver.d.ts +0 -22
- package/dist/simulation/scenarios/sublinear-solver.d.ts.map +0 -1
- package/dist/simulation/scenarios/sublinear-solver.js +0 -82
- package/dist/simulation/scenarios/sublinear-solver.js.map +0 -1
- package/dist/simulation/scenarios/temporal-lead-solver.d.ts +0 -23
- package/dist/simulation/scenarios/temporal-lead-solver.d.ts.map +0 -1
- package/dist/simulation/scenarios/temporal-lead-solver.js +0 -90
- package/dist/simulation/scenarios/temporal-lead-solver.js.map +0 -1
- package/dist/simulation/scenarios/voting-system-consensus.d.ts +0 -27
- package/dist/simulation/scenarios/voting-system-consensus.d.ts.map +0 -1
- package/dist/simulation/scenarios/voting-system-consensus.js +0 -175
- package/dist/simulation/scenarios/voting-system-consensus.js.map +0 -1
- package/dist/simulation/types.d.ts +0 -162
- package/dist/simulation/types.d.ts.map +0 -1
- package/dist/simulation/types.js +0 -5
- package/dist/simulation/types.js.map +0 -1
- package/dist/simulation/utils/PerformanceOptimizer.d.ts +0 -115
- package/dist/simulation/utils/PerformanceOptimizer.d.ts.map +0 -1
- package/dist/simulation/utils/PerformanceOptimizer.js +0 -223
- package/dist/simulation/utils/PerformanceOptimizer.js.map +0 -1
- package/dist/src/backends/index.cjs +0 -6
- package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts +0 -93
- package/dist/src/backends/ruvector/GuardedVectorBackend.d.ts.map +0 -1
- package/dist/src/backends/ruvector/GuardedVectorBackend.js +0 -182
- package/dist/src/backends/ruvector/GuardedVectorBackend.js.map +0 -1
- package/dist/src/consensus/RaftConsensus.d.ts +0 -220
- package/dist/src/consensus/RaftConsensus.d.ts.map +0 -1
- package/dist/src/consensus/RaftConsensus.js +0 -762
- package/dist/src/consensus/RaftConsensus.js.map +0 -1
- package/dist/src/controllers/HierarchicalMemory.d.ts +0 -197
- package/dist/src/controllers/HierarchicalMemory.d.ts.map +0 -1
- package/dist/src/controllers/HierarchicalMemory.js +0 -519
- package/dist/src/controllers/HierarchicalMemory.js.map +0 -1
- package/dist/src/controllers/MemoryConsolidation.d.ts +0 -142
- package/dist/src/controllers/MemoryConsolidation.d.ts.map +0 -1
- package/dist/src/controllers/MemoryConsolidation.js +0 -479
- package/dist/src/controllers/MemoryConsolidation.js.map +0 -1
- package/dist/src/controllers/QUICConnection.d.ts +0 -122
- package/dist/src/controllers/QUICConnection.d.ts.map +0 -1
- package/dist/src/controllers/QUICConnection.js +0 -329
- package/dist/src/controllers/QUICConnection.js.map +0 -1
- package/dist/src/controllers/QUICConnectionPool.d.ts +0 -83
- package/dist/src/controllers/QUICConnectionPool.d.ts.map +0 -1
- package/dist/src/controllers/QUICConnectionPool.js +0 -256
- package/dist/src/controllers/QUICConnectionPool.js.map +0 -1
- package/dist/src/controllers/QUICStreamManager.d.ts +0 -114
- package/dist/src/controllers/QUICStreamManager.d.ts.map +0 -1
- package/dist/src/controllers/QUICStreamManager.js +0 -267
- package/dist/src/controllers/QUICStreamManager.js.map +0 -1
- package/dist/src/controllers/StreamingEmbeddingService.d.ts +0 -82
- package/dist/src/controllers/StreamingEmbeddingService.d.ts.map +0 -1
- package/dist/src/controllers/StreamingEmbeddingService.js +0 -243
- package/dist/src/controllers/StreamingEmbeddingService.js.map +0 -1
- package/dist/src/controllers/index.cjs +0 -6
- package/dist/src/coordination/MultiDatabaseCoordinator.d.ts +0 -348
- package/dist/src/coordination/MultiDatabaseCoordinator.d.ts.map +0 -1
- package/dist/src/coordination/MultiDatabaseCoordinator.js +0 -803
- package/dist/src/coordination/MultiDatabaseCoordinator.js.map +0 -1
- package/dist/src/coordination/index.d.ts +0 -10
- package/dist/src/coordination/index.d.ts.map +0 -1
- package/dist/src/coordination/index.js +0 -10
- package/dist/src/coordination/index.js.map +0 -1
- package/dist/src/index.cjs +0 -6
- package/dist/src/optimizations/RVFOptimizer.d.ts +0 -226
- package/dist/src/optimizations/RVFOptimizer.d.ts.map +0 -1
- package/dist/src/optimizations/RVFOptimizer.js +0 -541
- package/dist/src/optimizations/RVFOptimizer.js.map +0 -1
- package/dist/src/security/AttestationLog.d.ts +0 -70
- package/dist/src/security/AttestationLog.d.ts.map +0 -1
- package/dist/src/security/AttestationLog.js +0 -174
- package/dist/src/security/AttestationLog.js.map +0 -1
- package/dist/src/security/MutationGuard.d.ts +0 -83
- package/dist/src/security/MutationGuard.d.ts.map +0 -1
- package/dist/src/security/MutationGuard.js +0 -364
- package/dist/src/security/MutationGuard.js.map +0 -1
- package/dist/src/security/index.cjs +0 -6
- package/dist/src/security/index.d.ts +0 -15
- package/dist/src/security/index.d.ts.map +0 -1
- package/dist/src/security/index.js +0 -18
- package/dist/src/security/index.js.map +0 -1
- package/dist/src/services/GNNService.d.ts +0 -173
- package/dist/src/services/GNNService.d.ts.map +0 -1
- package/dist/src/services/GNNService.js +0 -639
- package/dist/src/services/GNNService.js.map +0 -1
- package/dist/src/services/GraphTransformerService.d.ts +0 -80
- package/dist/src/services/GraphTransformerService.d.ts.map +0 -1
- package/dist/src/services/GraphTransformerService.js +0 -369
- package/dist/src/services/GraphTransformerService.js.map +0 -1
- package/dist/src/services/SemanticRouter.d.ts +0 -83
- package/dist/src/services/SemanticRouter.d.ts.map +0 -1
- package/dist/src/services/SemanticRouter.js +0 -160
- package/dist/src/services/SemanticRouter.js.map +0 -1
- package/dist/src/services/SonaTrajectoryService.d.ts +0 -224
- package/dist/src/services/SonaTrajectoryService.d.ts.map +0 -1
- package/dist/src/services/SonaTrajectoryService.js +0 -539
- package/dist/src/services/SonaTrajectoryService.js.map +0 -1
- package/dist/src/utils/LegacyAttentionAdapter.d.ts +0 -93
- package/dist/src/utils/LegacyAttentionAdapter.d.ts.map +0 -1
- package/dist/src/utils/LegacyAttentionAdapter.js +0 -241
- package/dist/src/utils/LegacyAttentionAdapter.js.map +0 -1
- package/dist/src/utils/vector-math.d.ts +0 -29
- package/dist/src/utils/vector-math.d.ts.map +0 -1
- package/dist/src/utils/vector-math.js +0 -66
- package/dist/src/utils/vector-math.js.map +0 -1
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MultiHeadAttentionController - Multi-Head Attention for Memory Systems
|
|
3
|
+
*
|
|
4
|
+
* Implements multi-head attention that projects queries and memory entries
|
|
5
|
+
* into multiple subspaces, computes attention in each, and aggregates the
|
|
6
|
+
* results. This allows the model to attend to different aspects of the
|
|
7
|
+
* information simultaneously.
|
|
8
|
+
*
|
|
9
|
+
* Features:
|
|
10
|
+
* - Configurable number of attention heads
|
|
11
|
+
* - Multiple aggregation strategies (average, max, concat)
|
|
12
|
+
* - Per-head dimension control
|
|
13
|
+
* - Parallel attention computation
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Multi-head attention controller for computing parallel attention patterns
|
|
17
|
+
*/
|
|
18
|
+
export class MultiHeadAttentionController {
|
|
19
|
+
vectorBackend;
|
|
20
|
+
memoryStore;
|
|
21
|
+
dimension;
|
|
22
|
+
config;
|
|
23
|
+
headProjections;
|
|
24
|
+
constructor(vectorBackend = null, config = {}) {
|
|
25
|
+
this.vectorBackend = vectorBackend;
|
|
26
|
+
this.memoryStore = new Map();
|
|
27
|
+
this.dimension = 0;
|
|
28
|
+
this.headProjections = [];
|
|
29
|
+
this.config = {
|
|
30
|
+
numHeads: 8,
|
|
31
|
+
topK: 10,
|
|
32
|
+
minScore: 0.0,
|
|
33
|
+
temperature: 1.0,
|
|
34
|
+
aggregation: 'average',
|
|
35
|
+
...config
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Initialize head projections for a given dimension
|
|
40
|
+
*/
|
|
41
|
+
initializeProjections(dimension) {
|
|
42
|
+
const numHeads = this.config.numHeads || 8;
|
|
43
|
+
const headDim = this.config.headDim || Math.floor(dimension / numHeads);
|
|
44
|
+
this.headProjections = [];
|
|
45
|
+
// Create random projection matrices for each head
|
|
46
|
+
// In practice, these would be learned parameters
|
|
47
|
+
for (let h = 0; h < numHeads; h++) {
|
|
48
|
+
const projection = new Float32Array(dimension * headDim);
|
|
49
|
+
// Xavier initialization
|
|
50
|
+
const scale = Math.sqrt(2.0 / (dimension + headDim));
|
|
51
|
+
for (let i = 0; i < projection.length; i++) {
|
|
52
|
+
projection[i] = (Math.random() * 2 - 1) * scale;
|
|
53
|
+
}
|
|
54
|
+
this.headProjections.push(projection);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Add a memory entry to the attention context
|
|
59
|
+
*/
|
|
60
|
+
addMemory(entry) {
|
|
61
|
+
if (!entry.id || !entry.embedding || entry.embedding.length === 0) {
|
|
62
|
+
throw new Error('Memory entry must have id and non-empty embedding');
|
|
63
|
+
}
|
|
64
|
+
if (this.dimension === 0) {
|
|
65
|
+
this.dimension = entry.embedding.length;
|
|
66
|
+
this.initializeProjections(this.dimension);
|
|
67
|
+
}
|
|
68
|
+
else if (entry.embedding.length !== this.dimension) {
|
|
69
|
+
throw new Error(`Embedding dimension mismatch: expected ${this.dimension}, got ${entry.embedding.length}`);
|
|
70
|
+
}
|
|
71
|
+
this.memoryStore.set(entry.id, entry);
|
|
72
|
+
if (this.vectorBackend) {
|
|
73
|
+
const embedding = new Float32Array(entry.embedding);
|
|
74
|
+
this.vectorBackend.insert(entry.id, embedding, entry.metadata);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Remove a memory entry
|
|
79
|
+
*/
|
|
80
|
+
removeMemory(id) {
|
|
81
|
+
return this.memoryStore.delete(id);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Clear all memories
|
|
85
|
+
*/
|
|
86
|
+
clearMemories() {
|
|
87
|
+
this.memoryStore.clear();
|
|
88
|
+
this.dimension = 0;
|
|
89
|
+
this.headProjections = [];
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Project a vector using a head's projection matrix
|
|
93
|
+
*/
|
|
94
|
+
projectVector(vector, headIndex) {
|
|
95
|
+
const projection = this.headProjections[headIndex];
|
|
96
|
+
if (!projection) {
|
|
97
|
+
// If no projection available, return sliced view
|
|
98
|
+
const numHeads = this.config.numHeads || 8;
|
|
99
|
+
const headDim = Math.floor(vector.length / numHeads);
|
|
100
|
+
const start = headIndex * headDim;
|
|
101
|
+
return vector.slice(start, start + headDim);
|
|
102
|
+
}
|
|
103
|
+
const headDim = this.config.headDim || Math.floor(this.dimension / (this.config.numHeads || 8));
|
|
104
|
+
const result = new Array(headDim).fill(0);
|
|
105
|
+
for (let i = 0; i < headDim; i++) {
|
|
106
|
+
for (let j = 0; j < vector.length; j++) {
|
|
107
|
+
result[i] += vector[j] * projection[j * headDim + i];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return result;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Compute multi-head attention for a query vector
|
|
114
|
+
*
|
|
115
|
+
* @param query - Query vector for attention computation
|
|
116
|
+
* @param options - Override default configuration options
|
|
117
|
+
* @returns Multi-head attention result with per-head outputs and aggregated result
|
|
118
|
+
*/
|
|
119
|
+
async computeMultiHeadAttention(query, options = {}) {
|
|
120
|
+
const startTime = performance.now();
|
|
121
|
+
// Validate input
|
|
122
|
+
if (!query || !Array.isArray(query)) {
|
|
123
|
+
throw new Error('Query must be a non-null array');
|
|
124
|
+
}
|
|
125
|
+
const config = { ...this.config, ...options };
|
|
126
|
+
const { numHeads = 8, topK = 10, minScore = 0.0, temperature = 1.0, aggregation = 'average' } = config;
|
|
127
|
+
// Handle empty memory
|
|
128
|
+
if (this.memoryStore.size === 0) {
|
|
129
|
+
const emptyHeads = Array(numHeads).fill(null).map((_, i) => ({
|
|
130
|
+
headIndex: i,
|
|
131
|
+
attended: [...query].slice(i * Math.floor(query.length / numHeads), (i + 1) * Math.floor(query.length / numHeads)),
|
|
132
|
+
topScores: []
|
|
133
|
+
}));
|
|
134
|
+
return {
|
|
135
|
+
heads: emptyHeads,
|
|
136
|
+
attended: [...query],
|
|
137
|
+
executionTimeMs: performance.now() - startTime
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
// Validate dimension
|
|
141
|
+
if (this.dimension > 0 && query.length !== this.dimension) {
|
|
142
|
+
throw new Error(`Query dimension mismatch: expected ${this.dimension}, got ${query.length}`);
|
|
143
|
+
}
|
|
144
|
+
// Initialize projections if needed
|
|
145
|
+
if (this.headProjections.length === 0) {
|
|
146
|
+
this.initializeProjections(query.length);
|
|
147
|
+
}
|
|
148
|
+
// Compute attention for each head
|
|
149
|
+
const heads = [];
|
|
150
|
+
const allScores = new Map();
|
|
151
|
+
for (let h = 0; h < numHeads; h++) {
|
|
152
|
+
const headResult = await this.computeHeadAttention(query, h, topK, minScore, temperature);
|
|
153
|
+
heads.push(headResult);
|
|
154
|
+
// Aggregate scores across heads
|
|
155
|
+
for (const score of headResult.topScores) {
|
|
156
|
+
const existing = allScores.get(score.id) || 0;
|
|
157
|
+
allScores.set(score.id, existing + score.score);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// Aggregate attended outputs from all heads
|
|
161
|
+
const attended = this.aggregateHeadOutputs(query, heads, aggregation);
|
|
162
|
+
// Sort aggregated scores
|
|
163
|
+
const aggregatedScores = Array.from(allScores.entries())
|
|
164
|
+
.map(([id, score]) => ({ id, score: score / numHeads }))
|
|
165
|
+
.sort((a, b) => b.score - a.score)
|
|
166
|
+
.slice(0, topK);
|
|
167
|
+
const executionTimeMs = performance.now() - startTime;
|
|
168
|
+
return {
|
|
169
|
+
heads,
|
|
170
|
+
attended,
|
|
171
|
+
aggregatedScores,
|
|
172
|
+
executionTimeMs
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Compute attention for a single head
|
|
177
|
+
*/
|
|
178
|
+
async computeHeadAttention(query, headIndex, topK, minScore, temperature) {
|
|
179
|
+
// Project query to head subspace
|
|
180
|
+
const projectedQuery = this.projectVector(query, headIndex);
|
|
181
|
+
const scale = 1.0 / Math.sqrt(projectedQuery.length);
|
|
182
|
+
// Compute scores for all memories
|
|
183
|
+
const scores = [];
|
|
184
|
+
for (const [id, entry] of this.memoryStore.entries()) {
|
|
185
|
+
const projectedKey = this.projectVector(entry.embedding, headIndex);
|
|
186
|
+
// Scaled dot-product attention
|
|
187
|
+
let dotProduct = 0;
|
|
188
|
+
for (let i = 0; i < projectedQuery.length; i++) {
|
|
189
|
+
dotProduct += projectedQuery[i] * projectedKey[i];
|
|
190
|
+
}
|
|
191
|
+
const scaledScore = dotProduct * scale / temperature;
|
|
192
|
+
scores.push({ id, score: scaledScore, projectedEmbedding: projectedKey });
|
|
193
|
+
}
|
|
194
|
+
// Apply softmax
|
|
195
|
+
const normalizedScores = this.applySoftmax(scores);
|
|
196
|
+
// Filter and sort
|
|
197
|
+
const filteredScores = normalizedScores
|
|
198
|
+
.filter(item => item.normalizedScore >= minScore)
|
|
199
|
+
.sort((a, b) => b.normalizedScore - a.normalizedScore)
|
|
200
|
+
.slice(0, topK);
|
|
201
|
+
// Compute attended output for this head
|
|
202
|
+
const headDim = projectedQuery.length;
|
|
203
|
+
const attended = new Array(headDim).fill(0);
|
|
204
|
+
for (const item of normalizedScores) {
|
|
205
|
+
for (let i = 0; i < headDim; i++) {
|
|
206
|
+
attended[i] += item.normalizedScore * item.projectedEmbedding[i];
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return {
|
|
210
|
+
headIndex,
|
|
211
|
+
attended,
|
|
212
|
+
topScores: filteredScores.map(item => ({
|
|
213
|
+
id: item.id,
|
|
214
|
+
score: item.normalizedScore
|
|
215
|
+
}))
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Apply softmax to scores
|
|
220
|
+
*/
|
|
221
|
+
applySoftmax(items) {
|
|
222
|
+
if (items.length === 0)
|
|
223
|
+
return [];
|
|
224
|
+
const maxScore = Math.max(...items.map(item => item.score));
|
|
225
|
+
const expScores = items.map(item => ({
|
|
226
|
+
...item,
|
|
227
|
+
expScore: Math.exp(item.score - maxScore)
|
|
228
|
+
}));
|
|
229
|
+
const sumExp = expScores.reduce((sum, item) => sum + item.expScore, 0);
|
|
230
|
+
if (sumExp === 0 || !isFinite(sumExp)) {
|
|
231
|
+
return items.map(item => ({
|
|
232
|
+
...item,
|
|
233
|
+
normalizedScore: 1 / items.length
|
|
234
|
+
}));
|
|
235
|
+
}
|
|
236
|
+
return expScores.map(item => ({
|
|
237
|
+
id: item.id,
|
|
238
|
+
normalizedScore: item.expScore / sumExp,
|
|
239
|
+
projectedEmbedding: item.projectedEmbedding
|
|
240
|
+
}));
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Aggregate outputs from all attention heads
|
|
244
|
+
*/
|
|
245
|
+
aggregateHeadOutputs(query, heads, strategy) {
|
|
246
|
+
if (heads.length === 0) {
|
|
247
|
+
return [...query];
|
|
248
|
+
}
|
|
249
|
+
const dimension = query.length;
|
|
250
|
+
const numHeads = heads.length;
|
|
251
|
+
const headDim = heads[0]?.attended.length || Math.floor(dimension / numHeads);
|
|
252
|
+
switch (strategy) {
|
|
253
|
+
case 'concat':
|
|
254
|
+
// Concatenate all head outputs (may change dimension)
|
|
255
|
+
const concatResult = [];
|
|
256
|
+
for (const head of heads) {
|
|
257
|
+
concatResult.push(...head.attended);
|
|
258
|
+
}
|
|
259
|
+
// Pad or truncate to original dimension
|
|
260
|
+
if (concatResult.length < dimension) {
|
|
261
|
+
return [...concatResult, ...new Array(dimension - concatResult.length).fill(0)];
|
|
262
|
+
}
|
|
263
|
+
return concatResult.slice(0, dimension);
|
|
264
|
+
case 'max':
|
|
265
|
+
// Take element-wise max across reconstructed head outputs
|
|
266
|
+
const maxResult = new Array(dimension).fill(-Infinity);
|
|
267
|
+
for (const head of heads) {
|
|
268
|
+
const reconstructed = this.reconstructFromHead(head.attended, head.headIndex, dimension);
|
|
269
|
+
for (let i = 0; i < dimension; i++) {
|
|
270
|
+
maxResult[i] = Math.max(maxResult[i], reconstructed[i]);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return maxResult.map(v => isFinite(v) ? v : 0);
|
|
274
|
+
case 'weighted':
|
|
275
|
+
// Weight by average attention scores
|
|
276
|
+
const weightedResult = new Array(dimension).fill(0);
|
|
277
|
+
const weights = [];
|
|
278
|
+
for (const head of heads) {
|
|
279
|
+
const avgScore = head.topScores.reduce((sum, s) => sum + s.score, 0) /
|
|
280
|
+
Math.max(1, head.topScores.length);
|
|
281
|
+
weights.push(avgScore);
|
|
282
|
+
}
|
|
283
|
+
const totalWeight = weights.reduce((sum, w) => sum + w, 0) || 1;
|
|
284
|
+
for (let h = 0; h < heads.length; h++) {
|
|
285
|
+
const reconstructed = this.reconstructFromHead(heads[h].attended, h, dimension);
|
|
286
|
+
const weight = weights[h] / totalWeight;
|
|
287
|
+
for (let i = 0; i < dimension; i++) {
|
|
288
|
+
weightedResult[i] += weight * reconstructed[i];
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
return weightedResult;
|
|
292
|
+
case 'average':
|
|
293
|
+
default:
|
|
294
|
+
// Average across reconstructed head outputs
|
|
295
|
+
const avgResult = new Array(dimension).fill(0);
|
|
296
|
+
for (const head of heads) {
|
|
297
|
+
const reconstructed = this.reconstructFromHead(head.attended, head.headIndex, dimension);
|
|
298
|
+
for (let i = 0; i < dimension; i++) {
|
|
299
|
+
avgResult[i] += reconstructed[i] / numHeads;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
return avgResult;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Reconstruct full-dimension vector from head output
|
|
307
|
+
*/
|
|
308
|
+
reconstructFromHead(headOutput, headIndex, targetDim) {
|
|
309
|
+
// Simple reconstruction by placing head output in appropriate position
|
|
310
|
+
const numHeads = this.config.numHeads || 8;
|
|
311
|
+
const headDim = Math.floor(targetDim / numHeads);
|
|
312
|
+
const result = new Array(targetDim).fill(0);
|
|
313
|
+
const start = headIndex * headDim;
|
|
314
|
+
const len = Math.min(headOutput.length, targetDim - start);
|
|
315
|
+
for (let i = 0; i < len; i++) {
|
|
316
|
+
result[start + i] = headOutput[i];
|
|
317
|
+
}
|
|
318
|
+
return result;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Get statistics about the controller
|
|
322
|
+
*/
|
|
323
|
+
getStats() {
|
|
324
|
+
const numHeads = this.config.numHeads || 8;
|
|
325
|
+
const headDim = this.config.headDim ||
|
|
326
|
+
(this.dimension > 0 ? Math.floor(this.dimension / numHeads) : 0);
|
|
327
|
+
return {
|
|
328
|
+
memoryCount: this.memoryStore.size,
|
|
329
|
+
dimension: this.dimension,
|
|
330
|
+
numHeads,
|
|
331
|
+
headDim,
|
|
332
|
+
hasVectorBackend: this.vectorBackend !== null
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
//# sourceMappingURL=MultiHeadAttentionController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiHeadAttentionController.js","sourceRoot":"","sources":["../../../../src/controllers/attention/MultiHeadAttentionController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SelfAttentionController - Self-Attention Mechanism for Memory Systems
|
|
3
|
+
*
|
|
4
|
+
* Implements self-attention over stored memory entries, allowing the system
|
|
5
|
+
* to compute attention scores that determine which memories are most relevant
|
|
6
|
+
* to a given query vector.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Scaled dot-product attention
|
|
10
|
+
* - Softmax normalization
|
|
11
|
+
* - Top-k filtering with minimum score threshold
|
|
12
|
+
* - Efficient batch processing for large memory sets
|
|
13
|
+
*/
|
|
14
|
+
import type { VectorBackend } from '../../backends/VectorBackend.js';
|
|
15
|
+
/**
|
|
16
|
+
* Configuration for self-attention computation
|
|
17
|
+
*/
|
|
18
|
+
export interface SelfAttentionConfig {
|
|
19
|
+
/** Number of top results to return */
|
|
20
|
+
topK?: number;
|
|
21
|
+
/** Minimum attention score threshold (0-1) */
|
|
22
|
+
minScore?: number;
|
|
23
|
+
/** Temperature for softmax scaling */
|
|
24
|
+
temperature?: number;
|
|
25
|
+
/** Whether to return attention weights */
|
|
26
|
+
returnWeights?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Individual attention score for a memory entry
|
|
30
|
+
*/
|
|
31
|
+
export interface AttentionScore {
|
|
32
|
+
/** Memory entry ID */
|
|
33
|
+
id: string;
|
|
34
|
+
/** Computed attention score (0-1 after softmax) */
|
|
35
|
+
score: number;
|
|
36
|
+
/** Raw similarity score before softmax */
|
|
37
|
+
rawScore?: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Result of self-attention computation
|
|
41
|
+
*/
|
|
42
|
+
export interface SelfAttentionResult {
|
|
43
|
+
/** Attention scores for each memory entry */
|
|
44
|
+
scores: AttentionScore[];
|
|
45
|
+
/** Attended output vector (weighted sum of values) */
|
|
46
|
+
attended: number[];
|
|
47
|
+
/** Execution time in milliseconds */
|
|
48
|
+
executionTimeMs: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Memory entry with embedding for attention computation
|
|
52
|
+
*/
|
|
53
|
+
export interface MemoryEntry {
|
|
54
|
+
id: string;
|
|
55
|
+
embedding: number[];
|
|
56
|
+
content?: string;
|
|
57
|
+
metadata?: Record<string, any>;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Self-attention controller for computing attention over memory entries
|
|
61
|
+
*/
|
|
62
|
+
export declare class SelfAttentionController {
|
|
63
|
+
private vectorBackend;
|
|
64
|
+
private memoryStore;
|
|
65
|
+
private dimension;
|
|
66
|
+
private config;
|
|
67
|
+
constructor(vectorBackend?: VectorBackend | null, config?: SelfAttentionConfig);
|
|
68
|
+
/**
|
|
69
|
+
* Add a memory entry to the attention context
|
|
70
|
+
*/
|
|
71
|
+
addMemory(entry: MemoryEntry): void;
|
|
72
|
+
/**
|
|
73
|
+
* Remove a memory entry from the attention context
|
|
74
|
+
*/
|
|
75
|
+
removeMemory(id: string): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Clear all memory entries
|
|
78
|
+
*/
|
|
79
|
+
clearMemories(): void;
|
|
80
|
+
/**
|
|
81
|
+
* Compute self-attention for a query vector
|
|
82
|
+
*
|
|
83
|
+
* @param query - Query vector for attention computation
|
|
84
|
+
* @param options - Override default configuration options
|
|
85
|
+
* @returns Self-attention result with scores and attended output
|
|
86
|
+
*/
|
|
87
|
+
computeAttention(query: number[], options?: SelfAttentionConfig): Promise<SelfAttentionResult>;
|
|
88
|
+
/**
|
|
89
|
+
* Compute dot product between two vectors
|
|
90
|
+
*/
|
|
91
|
+
private computeDotProduct;
|
|
92
|
+
/**
|
|
93
|
+
* Apply softmax normalization to scores
|
|
94
|
+
*/
|
|
95
|
+
private applySoftmax;
|
|
96
|
+
/**
|
|
97
|
+
* Compute attended output as weighted sum of memory embeddings
|
|
98
|
+
*/
|
|
99
|
+
private computeAttendedOutput;
|
|
100
|
+
/**
|
|
101
|
+
* Get the number of memories in the attention context
|
|
102
|
+
*/
|
|
103
|
+
get memoryCount(): number;
|
|
104
|
+
/**
|
|
105
|
+
* Get the embedding dimension
|
|
106
|
+
*/
|
|
107
|
+
get embeddingDimension(): number;
|
|
108
|
+
/**
|
|
109
|
+
* Get statistics about the attention controller
|
|
110
|
+
*/
|
|
111
|
+
getStats(): {
|
|
112
|
+
memoryCount: number;
|
|
113
|
+
dimension: number;
|
|
114
|
+
hasVectorBackend: boolean;
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=SelfAttentionController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelfAttentionController.d.ts","sourceRoot":"","sources":["../../../../src/controllers/attention/SelfAttentionController.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,sBAAsB;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,6CAA6C;IAC7C,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,sDAAsD;IACtD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,qCAAqC;IACrC,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAsB;gBAGlC,aAAa,GAAE,aAAa,GAAG,IAAW,EAC1C,MAAM,GAAE,mBAAwB;IAclC;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAsBnC;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIjC;;OAEG;IACH,aAAa,IAAI,IAAI;IAKrB;;;;;;OAMG;IACG,gBAAgB,CACpB,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,mBAAmB,CAAC;IA8D/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,OAAO,CAAC,YAAY;IAoCpB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAqB7B;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED;;OAEG;IACH,QAAQ,IAAI;QACV,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,OAAO,CAAC;KAC3B;CAOF"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SelfAttentionController - Self-Attention Mechanism for Memory Systems
|
|
3
|
+
*
|
|
4
|
+
* Implements self-attention over stored memory entries, allowing the system
|
|
5
|
+
* to compute attention scores that determine which memories are most relevant
|
|
6
|
+
* to a given query vector.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Scaled dot-product attention
|
|
10
|
+
* - Softmax normalization
|
|
11
|
+
* - Top-k filtering with minimum score threshold
|
|
12
|
+
* - Efficient batch processing for large memory sets
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Self-attention controller for computing attention over memory entries
|
|
16
|
+
*/
|
|
17
|
+
export class SelfAttentionController {
|
|
18
|
+
vectorBackend;
|
|
19
|
+
memoryStore;
|
|
20
|
+
dimension;
|
|
21
|
+
config;
|
|
22
|
+
constructor(vectorBackend = null, config = {}) {
|
|
23
|
+
this.vectorBackend = vectorBackend;
|
|
24
|
+
this.memoryStore = new Map();
|
|
25
|
+
this.dimension = 0;
|
|
26
|
+
this.config = {
|
|
27
|
+
topK: 10,
|
|
28
|
+
minScore: 0.0,
|
|
29
|
+
temperature: 1.0,
|
|
30
|
+
returnWeights: false,
|
|
31
|
+
...config
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Add a memory entry to the attention context
|
|
36
|
+
*/
|
|
37
|
+
addMemory(entry) {
|
|
38
|
+
if (!entry.id || !entry.embedding || entry.embedding.length === 0) {
|
|
39
|
+
throw new Error('Memory entry must have id and non-empty embedding');
|
|
40
|
+
}
|
|
41
|
+
if (this.dimension === 0) {
|
|
42
|
+
this.dimension = entry.embedding.length;
|
|
43
|
+
}
|
|
44
|
+
else if (entry.embedding.length !== this.dimension) {
|
|
45
|
+
throw new Error(`Embedding dimension mismatch: expected ${this.dimension}, got ${entry.embedding.length}`);
|
|
46
|
+
}
|
|
47
|
+
this.memoryStore.set(entry.id, entry);
|
|
48
|
+
// Also add to vector backend if available
|
|
49
|
+
if (this.vectorBackend) {
|
|
50
|
+
const embedding = new Float32Array(entry.embedding);
|
|
51
|
+
this.vectorBackend.insert(entry.id, embedding, entry.metadata);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Remove a memory entry from the attention context
|
|
56
|
+
*/
|
|
57
|
+
removeMemory(id) {
|
|
58
|
+
return this.memoryStore.delete(id);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Clear all memory entries
|
|
62
|
+
*/
|
|
63
|
+
clearMemories() {
|
|
64
|
+
this.memoryStore.clear();
|
|
65
|
+
this.dimension = 0;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Compute self-attention for a query vector
|
|
69
|
+
*
|
|
70
|
+
* @param query - Query vector for attention computation
|
|
71
|
+
* @param options - Override default configuration options
|
|
72
|
+
* @returns Self-attention result with scores and attended output
|
|
73
|
+
*/
|
|
74
|
+
async computeAttention(query, options = {}) {
|
|
75
|
+
const startTime = performance.now();
|
|
76
|
+
// Validate input
|
|
77
|
+
if (!query || !Array.isArray(query)) {
|
|
78
|
+
throw new Error('Query must be a non-null array');
|
|
79
|
+
}
|
|
80
|
+
const config = { ...this.config, ...options };
|
|
81
|
+
const { topK = 10, minScore = 0.0, temperature = 1.0 } = config;
|
|
82
|
+
// Handle empty memory case
|
|
83
|
+
if (this.memoryStore.size === 0) {
|
|
84
|
+
return {
|
|
85
|
+
scores: [],
|
|
86
|
+
attended: [...query],
|
|
87
|
+
executionTimeMs: performance.now() - startTime
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
// Validate query dimension
|
|
91
|
+
if (this.dimension > 0 && query.length !== this.dimension) {
|
|
92
|
+
throw new Error(`Query dimension mismatch: expected ${this.dimension}, got ${query.length}`);
|
|
93
|
+
}
|
|
94
|
+
// Compute raw attention scores using scaled dot-product
|
|
95
|
+
const rawScores = [];
|
|
96
|
+
const scale = 1.0 / Math.sqrt(query.length);
|
|
97
|
+
for (const [id, entry] of this.memoryStore.entries()) {
|
|
98
|
+
const dotProduct = this.computeDotProduct(query, entry.embedding);
|
|
99
|
+
const scaledScore = dotProduct * scale / temperature;
|
|
100
|
+
rawScores.push({ id, score: scaledScore, embedding: entry.embedding });
|
|
101
|
+
}
|
|
102
|
+
// Apply softmax normalization
|
|
103
|
+
const normalizedScores = this.applySoftmax(rawScores);
|
|
104
|
+
// Filter by minimum score and take top-k
|
|
105
|
+
const filteredScores = normalizedScores
|
|
106
|
+
.filter(item => item.score >= minScore)
|
|
107
|
+
.sort((a, b) => b.score - a.score)
|
|
108
|
+
.slice(0, topK);
|
|
109
|
+
// Compute attended output (weighted sum of values)
|
|
110
|
+
const attended = this.computeAttendedOutput(query, normalizedScores);
|
|
111
|
+
const executionTimeMs = performance.now() - startTime;
|
|
112
|
+
return {
|
|
113
|
+
scores: filteredScores.map(item => ({
|
|
114
|
+
id: item.id,
|
|
115
|
+
score: item.score,
|
|
116
|
+
rawScore: item.rawScore
|
|
117
|
+
})),
|
|
118
|
+
attended,
|
|
119
|
+
executionTimeMs
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Compute dot product between two vectors
|
|
124
|
+
*/
|
|
125
|
+
computeDotProduct(a, b) {
|
|
126
|
+
let sum = 0;
|
|
127
|
+
const len = Math.min(a.length, b.length);
|
|
128
|
+
for (let i = 0; i < len; i++) {
|
|
129
|
+
sum += a[i] * b[i];
|
|
130
|
+
}
|
|
131
|
+
return sum;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Apply softmax normalization to scores
|
|
135
|
+
*/
|
|
136
|
+
applySoftmax(items) {
|
|
137
|
+
if (items.length === 0)
|
|
138
|
+
return [];
|
|
139
|
+
// Find max for numerical stability
|
|
140
|
+
const maxScore = Math.max(...items.map(item => item.score));
|
|
141
|
+
// Compute exp(score - max) for each item
|
|
142
|
+
const expScores = items.map(item => ({
|
|
143
|
+
...item,
|
|
144
|
+
rawScore: item.score,
|
|
145
|
+
expScore: Math.exp(item.score - maxScore)
|
|
146
|
+
}));
|
|
147
|
+
// Compute sum for normalization
|
|
148
|
+
const sumExp = expScores.reduce((sum, item) => sum + item.expScore, 0);
|
|
149
|
+
// Handle edge case where sum is 0 or very small
|
|
150
|
+
if (sumExp === 0 || !isFinite(sumExp)) {
|
|
151
|
+
return items.map(item => ({
|
|
152
|
+
...item,
|
|
153
|
+
rawScore: item.score,
|
|
154
|
+
score: 1 / items.length
|
|
155
|
+
}));
|
|
156
|
+
}
|
|
157
|
+
// Normalize to get probabilities
|
|
158
|
+
return expScores.map(item => ({
|
|
159
|
+
id: item.id,
|
|
160
|
+
score: item.expScore / sumExp,
|
|
161
|
+
rawScore: item.rawScore,
|
|
162
|
+
embedding: item.embedding
|
|
163
|
+
}));
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Compute attended output as weighted sum of memory embeddings
|
|
167
|
+
*/
|
|
168
|
+
computeAttendedOutput(query, normalizedScores) {
|
|
169
|
+
if (normalizedScores.length === 0) {
|
|
170
|
+
return [...query];
|
|
171
|
+
}
|
|
172
|
+
const dimension = query.length;
|
|
173
|
+
const attended = new Array(dimension).fill(0);
|
|
174
|
+
for (const item of normalizedScores) {
|
|
175
|
+
const weight = item.score;
|
|
176
|
+
for (let i = 0; i < dimension; i++) {
|
|
177
|
+
attended[i] += weight * item.embedding[i];
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return attended;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Get the number of memories in the attention context
|
|
184
|
+
*/
|
|
185
|
+
get memoryCount() {
|
|
186
|
+
return this.memoryStore.size;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get the embedding dimension
|
|
190
|
+
*/
|
|
191
|
+
get embeddingDimension() {
|
|
192
|
+
return this.dimension;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Get statistics about the attention controller
|
|
196
|
+
*/
|
|
197
|
+
getStats() {
|
|
198
|
+
return {
|
|
199
|
+
memoryCount: this.memoryStore.size,
|
|
200
|
+
dimension: this.dimension,
|
|
201
|
+
hasVectorBackend: this.vectorBackend !== null
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=SelfAttentionController.js.map
|