agentdb 3.0.0-alpha.2 → 3.0.0-alpha.20
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 +208 -2593
- 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 +10 -0
- 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/graph/GraphDatabaseAdapter.d.ts +55 -1
- package/dist/src/backends/graph/GraphDatabaseAdapter.d.ts.map +1 -1
- package/dist/src/backends/graph/GraphDatabaseAdapter.js +133 -7
- 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 +12 -21
- 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/RuVectorBackend.d.ts +4 -4
- package/dist/src/backends/ruvector/RuVectorBackend.d.ts.map +1 -1
- package/dist/src/backends/ruvector/RuVectorBackend.js +2 -2
- package/dist/src/backends/ruvector/RuVectorBackend.js.map +1 -1
- package/dist/src/backends/ruvector/RuVectorLearning.d.ts.map +1 -1
- package/dist/src/backends/ruvector/RuVectorLearning.js +5 -10
- package/dist/src/backends/ruvector/RuVectorLearning.js.map +1 -1
- package/dist/src/backends/rvf/SelfLearningRvfBackend.d.ts.map +1 -1
- package/dist/src/backends/rvf/SelfLearningRvfBackend.js +45 -2
- package/dist/src/backends/rvf/SelfLearningRvfBackend.js.map +1 -1
- package/dist/src/backends/rvf/SqlJsRvfBackend.d.ts +26 -0
- package/dist/src/backends/rvf/SqlJsRvfBackend.d.ts.map +1 -1
- package/dist/src/backends/rvf/SqlJsRvfBackend.js +93 -31
- package/dist/src/backends/rvf/SqlJsRvfBackend.js.map +1 -1
- package/dist/src/benchmark/BenchmarkSuite.d.ts.map +1 -1
- package/dist/src/benchmark/BenchmarkSuite.js +0 -2
- package/dist/src/benchmark/BenchmarkSuite.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 +13 -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 -3
- package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
- package/dist/src/cli/agentdb-cli.js +142 -96
- package/dist/src/cli/agentdb-cli.js.map +1 -1
- package/dist/src/cli/commands/attention.js +15 -5
- 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 +6 -111
- package/dist/src/cli/commands/doctor.js.map +1 -1
- package/dist/src/cli/commands/hyperbolic.d.ts.map +1 -1
- package/dist/src/cli/commands/hyperbolic.js +15 -3
- package/dist/src/cli/commands/hyperbolic.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 +1 -1
- package/dist/src/cli/commands/install-embeddings.d.ts.map +1 -1
- package/dist/src/cli/commands/install-embeddings.js +17 -11
- package/dist/src/cli/commands/install-embeddings.js.map +1 -1
- package/dist/src/cli/commands/learn.d.ts.map +1 -1
- package/dist/src/cli/commands/learn.js +12 -6
- package/dist/src/cli/commands/learn.js.map +1 -1
- package/dist/src/cli/commands/migrate.d.ts.map +1 -1
- package/dist/src/cli/commands/migrate.js +31 -10
- package/dist/src/cli/commands/migrate.js.map +1 -1
- package/dist/src/cli/commands/route.d.ts.map +1 -1
- package/dist/src/cli/commands/route.js +6 -1
- package/dist/src/cli/commands/route.js.map +1 -1
- package/dist/src/cli/commands/simulate-report.js +14 -2
- 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.map +1 -1
- package/dist/src/cli/lib/report-store.js +3 -5
- 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 +1 -1
- package/dist/src/cli/lib/simulation-runner.d.ts.map +1 -1
- package/dist/src/cli/lib/simulation-runner.js +1 -4
- package/dist/src/cli/lib/simulation-runner.js.map +1 -1
- package/dist/src/compatibility/DeprecationWarnings.d.ts.map +1 -1
- package/dist/src/compatibility/V1toV2Adapter.d.ts +2 -2
- package/dist/src/compatibility/V1toV2Adapter.d.ts.map +1 -1
- package/dist/src/compatibility/V1toV2Adapter.js +1 -14
- package/dist/src/compatibility/V1toV2Adapter.js.map +1 -1
- package/dist/src/compatibility/VersionDetector.d.ts +1 -1
- package/dist/src/compatibility/VersionDetector.d.ts.map +1 -1
- package/dist/src/compatibility/VersionDetector.js +3 -3
- package/dist/src/compatibility/VersionDetector.js.map +1 -1
- package/dist/src/compatibility/index.d.ts +3 -0
- package/dist/src/compatibility/index.d.ts.map +1 -1
- package/dist/src/compatibility/index.js +11 -0
- package/dist/src/compatibility/index.js.map +1 -1
- package/dist/src/controllers/AttentionService.d.ts +98 -122
- package/dist/src/controllers/AttentionService.d.ts.map +1 -1
- package/dist/src/controllers/AttentionService.js +463 -238
- package/dist/src/controllers/AttentionService.js.map +1 -1
- package/dist/src/controllers/CausalMemoryGraph.d.ts +4 -4
- package/dist/src/controllers/CausalMemoryGraph.d.ts.map +1 -1
- package/dist/src/controllers/CausalMemoryGraph.js +7 -8
- package/dist/src/controllers/CausalMemoryGraph.js.map +1 -1
- package/dist/src/controllers/CausalRecall.d.ts +3 -2
- package/dist/src/controllers/CausalRecall.d.ts.map +1 -1
- package/dist/src/controllers/CausalRecall.js +21 -10
- 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 +29 -0
- package/dist/src/controllers/EmbeddingService.d.ts.map +1 -1
- package/dist/src/controllers/EmbeddingService.js +149 -34
- package/dist/src/controllers/EmbeddingService.js.map +1 -1
- package/dist/src/controllers/EnhancedEmbeddingService.d.ts.map +1 -1
- package/dist/src/controllers/EnhancedEmbeddingService.js +14 -7
- package/dist/src/controllers/EnhancedEmbeddingService.js.map +1 -1
- package/dist/src/controllers/ExplainableRecall.d.ts +5 -4
- package/dist/src/controllers/ExplainableRecall.d.ts.map +1 -1
- package/dist/src/controllers/ExplainableRecall.js +12 -20
- package/dist/src/controllers/ExplainableRecall.js.map +1 -1
- package/dist/src/controllers/HNSWIndex.d.ts +5 -4
- package/dist/src/controllers/HNSWIndex.d.ts.map +1 -1
- package/dist/src/controllers/HNSWIndex.js +6 -9
- package/dist/src/controllers/HNSWIndex.js.map +1 -1
- package/dist/src/controllers/LearningSystem.d.ts +10 -105
- package/dist/src/controllers/LearningSystem.d.ts.map +1 -1
- package/dist/src/controllers/LearningSystem.js +28 -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/MemoryController.d.ts +15 -2
- package/dist/src/controllers/MemoryController.d.ts.map +1 -1
- package/dist/src/controllers/MemoryController.js +33 -3
- package/dist/src/controllers/MemoryController.js.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/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 +3 -4
- package/dist/src/controllers/NightlyLearner.d.ts.map +1 -1
- package/dist/src/controllers/NightlyLearner.js +17 -22
- package/dist/src/controllers/NightlyLearner.js.map +1 -1
- package/dist/src/controllers/QUICClient.d.ts +7 -10
- package/dist/src/controllers/QUICClient.d.ts.map +1 -1
- package/dist/src/controllers/QUICClient.js +3 -3
- 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 +2 -9
- package/dist/src/controllers/ReasoningBank.d.ts.map +1 -1
- package/dist/src/controllers/ReasoningBank.js +39 -35
- package/dist/src/controllers/ReasoningBank.js.map +1 -1
- package/dist/src/controllers/ReflexionMemory.d.ts +51 -1
- package/dist/src/controllers/ReflexionMemory.d.ts.map +1 -1
- package/dist/src/controllers/ReflexionMemory.js +307 -33
- package/dist/src/controllers/ReflexionMemory.js.map +1 -1
- package/dist/src/controllers/SkillLibrary.d.ts +5 -11
- package/dist/src/controllers/SkillLibrary.d.ts.map +1 -1
- package/dist/src/controllers/SkillLibrary.js +39 -48
- 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 +3 -2
- package/dist/src/controllers/SyncCoordinator.d.ts.map +1 -1
- package/dist/src/controllers/SyncCoordinator.js +2 -2
- package/dist/src/controllers/SyncCoordinator.js.map +1 -1
- package/dist/src/controllers/WASMVectorSearch.d.ts +7 -6
- package/dist/src/controllers/WASMVectorSearch.d.ts.map +1 -1
- package/dist/src/controllers/WASMVectorSearch.js +2 -4
- 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 +1 -1
- package/dist/src/controllers/attention/CrossAttentionController.d.ts.map +1 -1
- package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts +1 -1
- package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts.map +1 -1
- package/dist/src/controllers/attention/MultiHeadAttentionController.js +5 -8
- package/dist/src/controllers/attention/MultiHeadAttentionController.js.map +1 -1
- package/dist/src/controllers/attention/SelfAttentionController.d.ts +1 -1
- package/dist/src/controllers/attention/SelfAttentionController.d.ts.map +1 -1
- package/dist/src/controllers/attention/index.d.ts +9 -0
- package/dist/src/controllers/attention/index.d.ts.map +1 -1
- package/dist/src/controllers/attention/index.js +8 -0
- package/dist/src/controllers/attention/index.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 +7 -1
- package/dist/src/controllers/index.d.ts.map +1 -1
- package/dist/src/controllers/index.js +5 -1
- 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 +11 -36
- package/dist/src/core/AgentDB.d.ts.map +1 -1
- package/dist/src/core/AgentDB.js +31 -89
- package/dist/src/core/AgentDB.js.map +1 -1
- package/dist/src/core/QueryCache.d.ts +1 -1
- package/dist/src/core/QueryCache.d.ts.map +1 -1
- package/dist/src/core/QueryCache.js +2 -6
- package/dist/src/core/QueryCache.js.map +1 -1
- package/dist/src/db-fallback.d.ts +40 -3
- package/dist/src/db-fallback.d.ts.map +1 -1
- package/dist/src/db-fallback.js +308 -84
- 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 +281 -0
- package/dist/src/db-unified.js.map +1 -0
- package/dist/src/embedding/EmbeddingSpaceIdentity.d.ts +58 -0
- package/dist/src/embedding/EmbeddingSpaceIdentity.d.ts.map +1 -0
- package/dist/src/embedding/EmbeddingSpaceIdentity.js +137 -0
- package/dist/src/embedding/EmbeddingSpaceIdentity.js.map +1 -0
- package/dist/src/embedding/index.d.ts +3 -0
- package/dist/src/embedding/index.d.ts.map +1 -0
- package/dist/src/embedding/index.js +2 -0
- package/dist/src/embedding/index.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/governance/MetaHarnessGateway.d.ts +55 -0
- package/dist/src/governance/MetaHarnessGateway.d.ts.map +1 -0
- package/dist/src/governance/MetaHarnessGateway.js +65 -0
- package/dist/src/governance/MetaHarnessGateway.js.map +1 -0
- package/dist/src/governance/RvfExperimentBranch.d.ts +65 -0
- package/dist/src/governance/RvfExperimentBranch.d.ts.map +1 -0
- package/dist/src/governance/RvfExperimentBranch.js +115 -0
- package/dist/src/governance/RvfExperimentBranch.js.map +1 -0
- package/dist/src/index.d.ts +7 -25
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +9 -10
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/agentdb-mcp-server.js +162 -159
- 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/model/ModelCacheLoader.d.ts +24 -0
- package/dist/src/model/ModelCacheLoader.d.ts.map +1 -0
- package/dist/src/model/ModelCacheLoader.js +123 -0
- package/dist/src/model/ModelCacheLoader.js.map +1 -0
- package/dist/src/observability/integration.d.ts +3 -3
- package/dist/src/observability/integration.d.ts.map +1 -1
- package/dist/src/observability/integration.js +2 -0
- package/dist/src/observability/integration.js.map +1 -1
- package/dist/src/observability/telemetry.d.ts +3 -3
- package/dist/src/observability/telemetry.d.ts.map +1 -1
- package/dist/src/observability/telemetry.js +3 -5
- package/dist/src/observability/telemetry.js.map +1 -1
- package/dist/src/optimizations/BatchOperations.d.ts +6 -6
- package/dist/src/optimizations/BatchOperations.d.ts.map +1 -1
- package/dist/src/optimizations/BatchOperations.js +6 -5
- 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/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/quantization/vector-quantization.d.ts.map +1 -1
- package/dist/src/quantization/vector-quantization.js +1 -5
- package/dist/src/quantization/vector-quantization.js.map +1 -1
- package/dist/src/schemas/inline.d.ts +3 -0
- package/dist/src/schemas/inline.d.ts.map +1 -0
- package/dist/src/schemas/inline.js +10 -0
- package/dist/src/schemas/inline.js.map +1 -0
- package/dist/src/search/HybridSearch.d.ts +6 -6
- package/dist/src/search/HybridSearch.d.ts.map +1 -1
- package/dist/src/search/HybridSearch.js.map +1 -1
- package/dist/src/security/input-validation.d.ts +34 -12
- package/dist/src/security/input-validation.d.ts.map +1 -1
- package/dist/src/security/input-validation.js +46 -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/mcp-policy.d.ts +13 -0
- package/dist/src/security/mcp-policy.d.ts.map +1 -0
- package/dist/src/security/mcp-policy.js +66 -0
- package/dist/src/security/mcp-policy.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 +339 -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/AttentionService.d.ts.map +1 -1
- package/dist/src/services/AttentionService.js +2 -4
- package/dist/src/services/AttentionService.js.map +1 -1
- package/dist/src/services/LLMRouter.d.ts +2 -2
- package/dist/src/services/LLMRouter.d.ts.map +1 -1
- package/dist/src/services/LLMRouter.js +3 -9
- 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/simd-vector-ops.d.ts.map +1 -1
- package/dist/src/simd/simd-vector-ops.js +0 -2
- package/dist/src/simd/simd-vector-ops.js.map +1 -1
- 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/database.types.d.ts +11 -11
- package/dist/src/types/database.types.d.ts.map +1 -1
- package/dist/src/types/database.types.js +2 -4
- package/dist/src/types/database.types.js.map +1 -1
- 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/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/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/wasm-loader.d.ts +0 -1
- package/dist/src/wasm-loader.d.ts.map +1 -1
- package/dist/src/wasm-loader.js +0 -2
- package/dist/src/wasm-loader.js.map +1 -1
- package/dist/src/wrappers/agentdb-fast.d.ts +5 -4
- package/dist/src/wrappers/agentdb-fast.d.ts.map +1 -1
- package/dist/src/wrappers/agentdb-fast.js +6 -13
- package/dist/src/wrappers/agentdb-fast.js.map +1 -1
- package/dist/src/wrappers/attention-fallbacks.d.ts +0 -8
- package/dist/src/wrappers/attention-fallbacks.d.ts.map +1 -1
- package/dist/src/wrappers/attention-fallbacks.js +3 -6
- package/dist/src/wrappers/attention-fallbacks.js.map +1 -1
- 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 +4 -4
- package/dist/src/wrappers/embedding-service.d.ts.map +1 -1
- package/dist/src/wrappers/embedding-service.js +2 -8
- package/dist/src/wrappers/embedding-service.js.map +1 -1
- package/dist/src/wrappers/gnn-wrapper.d.ts.map +1 -1
- package/dist/src/wrappers/gnn-wrapper.js +3 -7
- package/dist/src/wrappers/gnn-wrapper.js.map +1 -1
- package/package.json +87 -18
- package/scripts/postinstall.cjs +13 -144
- 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/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/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/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
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SparsificationService - Graph Sparsification for AgentDB
|
|
3
|
+
*
|
|
4
|
+
* Implements Personalized PageRank (PPR), random walk sampling, and spectral
|
|
5
|
+
* sparsification for reducing graph size while preserving structure.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - 10-100x speedup for large graphs
|
|
9
|
+
* - PPR-based node importance scoring
|
|
10
|
+
* - Random walk sampling
|
|
11
|
+
* - Spectral sparsification
|
|
12
|
+
* - WASM/NAPI bindings with JavaScript fallback
|
|
13
|
+
* - Zero-copy operations where supported
|
|
14
|
+
*
|
|
15
|
+
* Based on:
|
|
16
|
+
* - "Fast Personalized PageRank on MapReduce" (Bahmani et al., 2011)
|
|
17
|
+
* - "Graph Sparsification by Effective Resistances" (Spielman & Srivastava, 2011)
|
|
18
|
+
* - "Local Graph Partitioning using PageRank Vectors" (Andersen et al., 2006)
|
|
19
|
+
*
|
|
20
|
+
* @version 3.0.0-alpha.5
|
|
21
|
+
*/
|
|
22
|
+
import type { GraphEdges } from '../types/graph.js';
|
|
23
|
+
export type { GraphEdges };
|
|
24
|
+
export interface SparsificationConfig {
|
|
25
|
+
/** Sparsification method */
|
|
26
|
+
method: 'ppr' | 'random-walk' | 'spectral' | 'degree-based';
|
|
27
|
+
/** Number of top nodes to keep */
|
|
28
|
+
topK: number;
|
|
29
|
+
/** PPR teleport probability (default: 0.15) */
|
|
30
|
+
alpha?: number;
|
|
31
|
+
/** Number of random walks (default: 100) */
|
|
32
|
+
numWalks?: number;
|
|
33
|
+
/** Random walk length (default: 10) */
|
|
34
|
+
walkLength?: number;
|
|
35
|
+
/** Convergence threshold for PPR (default: 1e-6) */
|
|
36
|
+
convergenceThreshold?: number;
|
|
37
|
+
/** Maximum PPR iterations (default: 20) */
|
|
38
|
+
maxIterations?: number;
|
|
39
|
+
}
|
|
40
|
+
export interface SparsificationResult {
|
|
41
|
+
/** Top-k node indices by importance */
|
|
42
|
+
topKIndices: number[];
|
|
43
|
+
/** Importance scores for all nodes */
|
|
44
|
+
scores: Float32Array;
|
|
45
|
+
/** Ratio of edges retained (edges_kept / total_edges) */
|
|
46
|
+
sparsityRatio: number;
|
|
47
|
+
/** Method used for sparsification */
|
|
48
|
+
method: string;
|
|
49
|
+
/** Execution time in milliseconds */
|
|
50
|
+
executionTimeMs?: number;
|
|
51
|
+
/** Additional metadata */
|
|
52
|
+
metadata?: {
|
|
53
|
+
iterations?: number;
|
|
54
|
+
convergence?: number;
|
|
55
|
+
totalNodes?: number;
|
|
56
|
+
totalEdges?: number;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* SparsificationService - Reduces graph size while preserving structure
|
|
61
|
+
*/
|
|
62
|
+
export declare class SparsificationService {
|
|
63
|
+
private wasmModule;
|
|
64
|
+
private napiModule;
|
|
65
|
+
private initialized;
|
|
66
|
+
private config;
|
|
67
|
+
constructor(config: SparsificationConfig);
|
|
68
|
+
/**
|
|
69
|
+
* Initialize WASM/NAPI bindings
|
|
70
|
+
*/
|
|
71
|
+
initialize(): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Personalized PageRank sparsification
|
|
74
|
+
*
|
|
75
|
+
* Computes importance scores for nodes based on random walk with restart.
|
|
76
|
+
* Nodes with higher PPR scores are more important relative to the source.
|
|
77
|
+
*
|
|
78
|
+
* @param sourceNode - Starting node for PPR
|
|
79
|
+
* @param edges - Graph adjacency list
|
|
80
|
+
* @param topK - Number of top nodes to return
|
|
81
|
+
* @param alpha - Teleport probability (1-alpha = continue walk)
|
|
82
|
+
* @returns Sparsification result with top-k nodes
|
|
83
|
+
*/
|
|
84
|
+
pprSparsification(sourceNode: number, edges: GraphEdges, topK: number, alpha?: number): Promise<SparsificationResult>;
|
|
85
|
+
/**
|
|
86
|
+
* Random walk sampling sparsification
|
|
87
|
+
*
|
|
88
|
+
* Performs multiple random walks from source node and counts visit frequencies.
|
|
89
|
+
* More frequently visited nodes are considered more important.
|
|
90
|
+
*
|
|
91
|
+
* @param sourceNode - Starting node for walks
|
|
92
|
+
* @param edges - Graph adjacency list
|
|
93
|
+
* @param topK - Number of top nodes to return
|
|
94
|
+
* @param numWalks - Number of random walks
|
|
95
|
+
* @param walkLength - Length of each walk
|
|
96
|
+
* @returns Sparsification result with top-k nodes
|
|
97
|
+
*/
|
|
98
|
+
randomWalkSparsification(sourceNode: number, edges: GraphEdges, topK: number, numWalks?: number, walkLength?: number): Promise<SparsificationResult>;
|
|
99
|
+
/**
|
|
100
|
+
* Spectral sparsification
|
|
101
|
+
*
|
|
102
|
+
* Uses graph spectrum (eigenvalues/eigenvectors) to identify important edges.
|
|
103
|
+
* Falls back to degree-based approximation if spectral methods unavailable.
|
|
104
|
+
*
|
|
105
|
+
* @param edges - Graph adjacency list
|
|
106
|
+
* @param topK - Number of top nodes to return
|
|
107
|
+
* @returns Sparsification result with top-k nodes
|
|
108
|
+
*/
|
|
109
|
+
spectralSparsification(edges: GraphEdges, topK: number): Promise<SparsificationResult>;
|
|
110
|
+
/**
|
|
111
|
+
* Sparsify graph based on configuration
|
|
112
|
+
*
|
|
113
|
+
* @param sourceNode - Source node (required for PPR and random-walk)
|
|
114
|
+
* @param edges - Graph adjacency list
|
|
115
|
+
* @returns Sparsification result
|
|
116
|
+
*/
|
|
117
|
+
sparsify(sourceNode: number, edges: GraphEdges): Promise<SparsificationResult>;
|
|
118
|
+
/**
|
|
119
|
+
* Extract top-k indices from scores
|
|
120
|
+
*/
|
|
121
|
+
private getTopK;
|
|
122
|
+
/**
|
|
123
|
+
* PPR JavaScript fallback implementation
|
|
124
|
+
*
|
|
125
|
+
* Power iteration method for computing PageRank with restart.
|
|
126
|
+
*/
|
|
127
|
+
private pprFallback;
|
|
128
|
+
/**
|
|
129
|
+
* Degree-based sparsification fallback
|
|
130
|
+
*
|
|
131
|
+
* Simple heuristic: keep nodes with highest degree (most connections).
|
|
132
|
+
*/
|
|
133
|
+
private degreeBasedSparsification;
|
|
134
|
+
/**
|
|
135
|
+
* Count total edges in graph
|
|
136
|
+
*/
|
|
137
|
+
private countTotalEdges;
|
|
138
|
+
/**
|
|
139
|
+
* Update configuration
|
|
140
|
+
*/
|
|
141
|
+
updateConfig(newConfig: Partial<SparsificationConfig>): void;
|
|
142
|
+
/**
|
|
143
|
+
* Get current configuration
|
|
144
|
+
*/
|
|
145
|
+
getConfig(): SparsificationConfig;
|
|
146
|
+
/**
|
|
147
|
+
* Reset to default configuration
|
|
148
|
+
*/
|
|
149
|
+
resetConfig(): void;
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=SparsificationService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SparsificationService.d.ts","sourceRoot":"","sources":["../../../src/controllers/SparsificationService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,MAAM,WAAW,oBAAoB;IACnC,4BAA4B;IAC5B,MAAM,EAAE,KAAK,GAAG,aAAa,GAAG,UAAU,GAAG,cAAc,CAAC;IAC5D,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,uCAAuC;IACvC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,sCAAsC;IACtC,MAAM,EAAE,YAAY,CAAC;IACrB,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,EAAE,oBAAoB;IAWxC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCjC;;;;;;;;;;;OAWG;IACG,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAa,GACnB,OAAO,CAAC,oBAAoB,CAAC;IAqDhC;;;;;;;;;;;;OAYG;IACG,wBAAwB,CAC5B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAAY,EACtB,UAAU,GAAE,MAAW,GACtB,OAAO,CAAC,oBAAoB,CAAC;IAgDhC;;;;;;;;;OASG;IACG,sBAAsB,CAC1B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,oBAAoB,CAAC;IAkBhC;;;;;;OAMG;IACG,QAAQ,CACZ,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,oBAAoB,CAAC;IA8BhC;;OAEG;IACH,OAAO,CAAC,OAAO;IAQf;;;;OAIG;IACH,OAAO,CAAC,WAAW;IA8EnB;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IA8BjC;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI;IAI5D;;OAEG;IACH,SAAS,IAAI,oBAAoB;IAIjC;;OAEG;IACH,WAAW,IAAI,IAAI;CAWpB"}
|
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SparsificationService - Graph Sparsification for AgentDB
|
|
3
|
+
*
|
|
4
|
+
* Implements Personalized PageRank (PPR), random walk sampling, and spectral
|
|
5
|
+
* sparsification for reducing graph size while preserving structure.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - 10-100x speedup for large graphs
|
|
9
|
+
* - PPR-based node importance scoring
|
|
10
|
+
* - Random walk sampling
|
|
11
|
+
* - Spectral sparsification
|
|
12
|
+
* - WASM/NAPI bindings with JavaScript fallback
|
|
13
|
+
* - Zero-copy operations where supported
|
|
14
|
+
*
|
|
15
|
+
* Based on:
|
|
16
|
+
* - "Fast Personalized PageRank on MapReduce" (Bahmani et al., 2011)
|
|
17
|
+
* - "Graph Sparsification by Effective Resistances" (Spielman & Srivastava, 2011)
|
|
18
|
+
* - "Local Graph Partitioning using PageRank Vectors" (Andersen et al., 2006)
|
|
19
|
+
*
|
|
20
|
+
* @version 3.0.0-alpha.5
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* SparsificationService - Reduces graph size while preserving structure
|
|
24
|
+
*/
|
|
25
|
+
export class SparsificationService {
|
|
26
|
+
wasmModule;
|
|
27
|
+
napiModule;
|
|
28
|
+
initialized = false;
|
|
29
|
+
config;
|
|
30
|
+
constructor(config) {
|
|
31
|
+
this.config = {
|
|
32
|
+
alpha: 0.15,
|
|
33
|
+
numWalks: 100,
|
|
34
|
+
walkLength: 10,
|
|
35
|
+
convergenceThreshold: 1e-6,
|
|
36
|
+
maxIterations: 20,
|
|
37
|
+
...config,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Initialize WASM/NAPI bindings
|
|
42
|
+
*/
|
|
43
|
+
async initialize() {
|
|
44
|
+
if (this.initialized) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
// Try NAPI first (fastest)
|
|
49
|
+
// Use dynamic import with string to avoid TypeScript module resolution
|
|
50
|
+
const napiModuleName = '@ruvector/sparsifier';
|
|
51
|
+
const napi = await import(/* @vite-ignore */ napiModuleName).catch(() => null);
|
|
52
|
+
if (napi) {
|
|
53
|
+
this.napiModule = napi;
|
|
54
|
+
console.log('✅ SparsificationService: Loaded @ruvector/sparsifier NAPI module');
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
// Fall back to WASM
|
|
58
|
+
const wasmModuleName = 'ruvector-sparsifier-wasm';
|
|
59
|
+
const wasm = await import(/* @vite-ignore */ wasmModuleName).catch(() => null);
|
|
60
|
+
if (wasm) {
|
|
61
|
+
await wasm.default();
|
|
62
|
+
this.wasmModule = wasm;
|
|
63
|
+
console.log('✅ SparsificationService: Loaded ruvector-sparsifier-wasm module');
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
console.warn('⚠️ SparsificationService: No native bindings available, using JavaScript fallback');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
console.warn('⚠️ SparsificationService: Initialization error, using JavaScript fallback:', err);
|
|
72
|
+
}
|
|
73
|
+
this.initialized = true;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Personalized PageRank sparsification
|
|
77
|
+
*
|
|
78
|
+
* Computes importance scores for nodes based on random walk with restart.
|
|
79
|
+
* Nodes with higher PPR scores are more important relative to the source.
|
|
80
|
+
*
|
|
81
|
+
* @param sourceNode - Starting node for PPR
|
|
82
|
+
* @param edges - Graph adjacency list
|
|
83
|
+
* @param topK - Number of top nodes to return
|
|
84
|
+
* @param alpha - Teleport probability (1-alpha = continue walk)
|
|
85
|
+
* @returns Sparsification result with top-k nodes
|
|
86
|
+
*/
|
|
87
|
+
async pprSparsification(sourceNode, edges, topK, alpha = 0.15) {
|
|
88
|
+
const startTime = performance.now();
|
|
89
|
+
// Try NAPI first
|
|
90
|
+
if (this.napiModule?.pprScores) {
|
|
91
|
+
try {
|
|
92
|
+
const scores = this.napiModule.pprScores(sourceNode, edges, alpha);
|
|
93
|
+
const topKIndices = this.getTopK(scores, topK);
|
|
94
|
+
const executionTimeMs = performance.now() - startTime;
|
|
95
|
+
return {
|
|
96
|
+
topKIndices,
|
|
97
|
+
scores,
|
|
98
|
+
sparsityRatio: topK / this.countTotalEdges(edges),
|
|
99
|
+
method: 'ppr-napi',
|
|
100
|
+
executionTimeMs,
|
|
101
|
+
metadata: {
|
|
102
|
+
totalNodes: edges.length,
|
|
103
|
+
totalEdges: this.countTotalEdges(edges),
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
console.warn('NAPI PPR failed, falling back:', err);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Try WASM
|
|
112
|
+
if (this.wasmModule?.ppr_scores) {
|
|
113
|
+
try {
|
|
114
|
+
const scores = this.wasmModule.ppr_scores(sourceNode, edges, alpha);
|
|
115
|
+
const topKIndices = this.getTopK(scores, topK);
|
|
116
|
+
const executionTimeMs = performance.now() - startTime;
|
|
117
|
+
return {
|
|
118
|
+
topKIndices,
|
|
119
|
+
scores,
|
|
120
|
+
sparsityRatio: topK / this.countTotalEdges(edges),
|
|
121
|
+
method: 'ppr-wasm',
|
|
122
|
+
executionTimeMs,
|
|
123
|
+
metadata: {
|
|
124
|
+
totalNodes: edges.length,
|
|
125
|
+
totalEdges: this.countTotalEdges(edges),
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
console.warn('WASM PPR failed, falling back:', err);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// JavaScript fallback
|
|
134
|
+
return this.pprFallback(sourceNode, edges, topK, alpha);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Random walk sampling sparsification
|
|
138
|
+
*
|
|
139
|
+
* Performs multiple random walks from source node and counts visit frequencies.
|
|
140
|
+
* More frequently visited nodes are considered more important.
|
|
141
|
+
*
|
|
142
|
+
* @param sourceNode - Starting node for walks
|
|
143
|
+
* @param edges - Graph adjacency list
|
|
144
|
+
* @param topK - Number of top nodes to return
|
|
145
|
+
* @param numWalks - Number of random walks
|
|
146
|
+
* @param walkLength - Length of each walk
|
|
147
|
+
* @returns Sparsification result with top-k nodes
|
|
148
|
+
*/
|
|
149
|
+
async randomWalkSparsification(sourceNode, edges, topK, numWalks = 100, walkLength = 10) {
|
|
150
|
+
const startTime = performance.now();
|
|
151
|
+
const visitCounts = new Map();
|
|
152
|
+
for (let i = 0; i < numWalks; i++) {
|
|
153
|
+
let current = sourceNode;
|
|
154
|
+
for (let step = 0; step < walkLength; step++) {
|
|
155
|
+
visitCounts.set(current, (visitCounts.get(current) || 0) + 1);
|
|
156
|
+
const neighbors = edges[current] || [];
|
|
157
|
+
if (neighbors.length === 0)
|
|
158
|
+
break;
|
|
159
|
+
// Random walk step
|
|
160
|
+
current = neighbors[Math.floor(Math.random() * neighbors.length)];
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Get top-k most visited
|
|
164
|
+
const sorted = Array.from(visitCounts.entries())
|
|
165
|
+
.sort((a, b) => b[1] - a[1])
|
|
166
|
+
.slice(0, topK);
|
|
167
|
+
const topKIndices = sorted.map(([node]) => node);
|
|
168
|
+
const n = edges.length;
|
|
169
|
+
const scores = new Float32Array(n);
|
|
170
|
+
// Normalize by total visits (not numWalks) to keep scores <= 1.0
|
|
171
|
+
const totalVisits = Array.from(visitCounts.values()).reduce((sum, count) => sum + count, 0);
|
|
172
|
+
sorted.forEach(([node, count]) => {
|
|
173
|
+
scores[node] = count / totalVisits;
|
|
174
|
+
});
|
|
175
|
+
const executionTimeMs = performance.now() - startTime;
|
|
176
|
+
return {
|
|
177
|
+
topKIndices,
|
|
178
|
+
scores,
|
|
179
|
+
sparsityRatio: topK / this.countTotalEdges(edges),
|
|
180
|
+
method: 'random-walk',
|
|
181
|
+
executionTimeMs,
|
|
182
|
+
metadata: {
|
|
183
|
+
totalNodes: edges.length,
|
|
184
|
+
totalEdges: this.countTotalEdges(edges),
|
|
185
|
+
},
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Spectral sparsification
|
|
190
|
+
*
|
|
191
|
+
* Uses graph spectrum (eigenvalues/eigenvectors) to identify important edges.
|
|
192
|
+
* Falls back to degree-based approximation if spectral methods unavailable.
|
|
193
|
+
*
|
|
194
|
+
* @param edges - Graph adjacency list
|
|
195
|
+
* @param topK - Number of top nodes to return
|
|
196
|
+
* @returns Sparsification result with top-k nodes
|
|
197
|
+
*/
|
|
198
|
+
async spectralSparsification(edges, topK) {
|
|
199
|
+
const startTime = performance.now();
|
|
200
|
+
// Try NAPI spectral sparsification
|
|
201
|
+
if (this.napiModule?.spectralSparsify) {
|
|
202
|
+
try {
|
|
203
|
+
const result = this.napiModule.spectralSparsify(edges, topK);
|
|
204
|
+
result.executionTimeMs = performance.now() - startTime;
|
|
205
|
+
return result;
|
|
206
|
+
}
|
|
207
|
+
catch (err) {
|
|
208
|
+
console.warn('NAPI spectral sparsification failed, falling back:', err);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// Fallback: degree-based approximation
|
|
212
|
+
return this.degreeBasedSparsification(edges, topK);
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Sparsify graph based on configuration
|
|
216
|
+
*
|
|
217
|
+
* @param sourceNode - Source node (required for PPR and random-walk)
|
|
218
|
+
* @param edges - Graph adjacency list
|
|
219
|
+
* @returns Sparsification result
|
|
220
|
+
*/
|
|
221
|
+
async sparsify(sourceNode, edges) {
|
|
222
|
+
if (!this.initialized) {
|
|
223
|
+
await this.initialize();
|
|
224
|
+
}
|
|
225
|
+
switch (this.config.method) {
|
|
226
|
+
case 'ppr':
|
|
227
|
+
return this.pprSparsification(sourceNode, edges, this.config.topK, this.config.alpha);
|
|
228
|
+
case 'random-walk':
|
|
229
|
+
return this.randomWalkSparsification(sourceNode, edges, this.config.topK, this.config.numWalks, this.config.walkLength);
|
|
230
|
+
case 'spectral':
|
|
231
|
+
return this.spectralSparsification(edges, this.config.topK);
|
|
232
|
+
case 'degree-based':
|
|
233
|
+
return this.degreeBasedSparsification(edges, this.config.topK);
|
|
234
|
+
default:
|
|
235
|
+
throw new Error(`Unknown sparsification method: ${this.config.method}`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Extract top-k indices from scores
|
|
240
|
+
*/
|
|
241
|
+
getTopK(scores, k) {
|
|
242
|
+
const indexed = Array.from(scores).map((score, idx) => ({ score, idx }));
|
|
243
|
+
return indexed
|
|
244
|
+
.sort((a, b) => b.score - a.score)
|
|
245
|
+
.slice(0, k)
|
|
246
|
+
.map(({ idx }) => idx);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* PPR JavaScript fallback implementation
|
|
250
|
+
*
|
|
251
|
+
* Power iteration method for computing PageRank with restart.
|
|
252
|
+
*/
|
|
253
|
+
pprFallback(sourceNode, edges, topK, alpha) {
|
|
254
|
+
const startTime = performance.now();
|
|
255
|
+
const n = edges.length;
|
|
256
|
+
// Handle empty graph
|
|
257
|
+
if (n === 0) {
|
|
258
|
+
return {
|
|
259
|
+
topKIndices: [],
|
|
260
|
+
scores: new Float32Array(0),
|
|
261
|
+
sparsityRatio: 0,
|
|
262
|
+
method: 'ppr-fallback',
|
|
263
|
+
executionTimeMs: performance.now() - startTime,
|
|
264
|
+
metadata: {
|
|
265
|
+
totalNodes: 0,
|
|
266
|
+
totalEdges: 0,
|
|
267
|
+
},
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
const scores = new Float32Array(n);
|
|
271
|
+
scores[sourceNode] = 1.0;
|
|
272
|
+
let iterations = 0;
|
|
273
|
+
let convergence = 0;
|
|
274
|
+
// Power iteration
|
|
275
|
+
for (let iter = 0; iter < (this.config.maxIterations || 20); iter++) {
|
|
276
|
+
const newScores = new Float32Array(n);
|
|
277
|
+
let maxDelta = 0;
|
|
278
|
+
for (let i = 0; i < n; i++) {
|
|
279
|
+
// Teleport component
|
|
280
|
+
newScores[i] = alpha * (i === sourceNode ? 1.0 : 0.0);
|
|
281
|
+
// Random walk component
|
|
282
|
+
for (let j = 0; j < n; j++) {
|
|
283
|
+
const neighbors = edges[j] || [];
|
|
284
|
+
if (neighbors.includes(i) && neighbors.length > 0) {
|
|
285
|
+
newScores[i] += (1 - alpha) * scores[j] / neighbors.length;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
maxDelta = Math.max(maxDelta, Math.abs(newScores[i] - scores[i]));
|
|
289
|
+
}
|
|
290
|
+
scores.set(newScores);
|
|
291
|
+
iterations = iter + 1;
|
|
292
|
+
convergence = maxDelta;
|
|
293
|
+
// Check convergence
|
|
294
|
+
if (maxDelta < (this.config.convergenceThreshold || 1e-6)) {
|
|
295
|
+
break;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
const topKIndices = this.getTopK(scores, topK);
|
|
299
|
+
const executionTimeMs = performance.now() - startTime;
|
|
300
|
+
return {
|
|
301
|
+
topKIndices,
|
|
302
|
+
scores,
|
|
303
|
+
sparsityRatio: topK / this.countTotalEdges(edges),
|
|
304
|
+
method: 'ppr-fallback',
|
|
305
|
+
executionTimeMs,
|
|
306
|
+
metadata: {
|
|
307
|
+
iterations,
|
|
308
|
+
convergence,
|
|
309
|
+
totalNodes: n,
|
|
310
|
+
totalEdges: this.countTotalEdges(edges),
|
|
311
|
+
},
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Degree-based sparsification fallback
|
|
316
|
+
*
|
|
317
|
+
* Simple heuristic: keep nodes with highest degree (most connections).
|
|
318
|
+
*/
|
|
319
|
+
degreeBasedSparsification(edges, topK) {
|
|
320
|
+
const startTime = performance.now();
|
|
321
|
+
const n = edges.length;
|
|
322
|
+
const degrees = new Float32Array(n);
|
|
323
|
+
// Compute degrees
|
|
324
|
+
for (let i = 0; i < n; i++) {
|
|
325
|
+
const neighbors = edges[i];
|
|
326
|
+
degrees[i] = neighbors ? neighbors.length : 0;
|
|
327
|
+
}
|
|
328
|
+
const topKIndices = this.getTopK(degrees, topK);
|
|
329
|
+
const executionTimeMs = performance.now() - startTime;
|
|
330
|
+
return {
|
|
331
|
+
topKIndices,
|
|
332
|
+
scores: degrees,
|
|
333
|
+
sparsityRatio: topK / this.countTotalEdges(edges),
|
|
334
|
+
method: 'degree-based',
|
|
335
|
+
executionTimeMs,
|
|
336
|
+
metadata: {
|
|
337
|
+
totalNodes: n,
|
|
338
|
+
totalEdges: this.countTotalEdges(edges),
|
|
339
|
+
},
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Count total edges in graph
|
|
344
|
+
*/
|
|
345
|
+
countTotalEdges(edges) {
|
|
346
|
+
return edges.reduce((sum, neighbors) => sum + (neighbors?.length || 0), 0);
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Update configuration
|
|
350
|
+
*/
|
|
351
|
+
updateConfig(newConfig) {
|
|
352
|
+
this.config = { ...this.config, ...newConfig };
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Get current configuration
|
|
356
|
+
*/
|
|
357
|
+
getConfig() {
|
|
358
|
+
return { ...this.config };
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Reset to default configuration
|
|
362
|
+
*/
|
|
363
|
+
resetConfig() {
|
|
364
|
+
this.config = {
|
|
365
|
+
method: this.config.method,
|
|
366
|
+
topK: this.config.topK,
|
|
367
|
+
alpha: 0.15,
|
|
368
|
+
numWalks: 100,
|
|
369
|
+
walkLength: 10,
|
|
370
|
+
convergenceThreshold: 1e-6,
|
|
371
|
+
maxIterations: 20,
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
//# sourceMappingURL=SparsificationService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SparsificationService.js","sourceRoot":"","sources":["../../../src/controllers/SparsificationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { QUICClient } from './QUICClient.js';
|
|
17
17
|
import { QUICServer } from './QUICServer.js';
|
|
18
|
-
|
|
18
|
+
type Database = any;
|
|
19
19
|
export interface SyncCoordinatorConfig {
|
|
20
|
-
db:
|
|
20
|
+
db: Database;
|
|
21
21
|
client?: QUICClient;
|
|
22
22
|
server?: QUICServer;
|
|
23
23
|
conflictStrategy?: 'local-wins' | 'remote-wins' | 'latest-wins' | 'merge';
|
|
@@ -116,4 +116,5 @@ export declare class SyncCoordinator {
|
|
|
116
116
|
state: SyncState;
|
|
117
117
|
};
|
|
118
118
|
}
|
|
119
|
+
export {};
|
|
119
120
|
//# sourceMappingURL=SyncCoordinator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncCoordinator.d.ts","sourceRoot":"","sources":["../../../src/controllers/SyncCoordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"SyncCoordinator.d.ts","sourceRoot":"","sources":["../../../src/controllers/SyncCoordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,UAAU,EAAuC,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAe,MAAM,iBAAiB,CAAC;AAG1D,KAAK,QAAQ,GAAG,GAAG,CAAC;AAEpB,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,QAAQ,CAAC;IACb,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,gBAAgB,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,aAAa,GAAG,OAAO,CAAC;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;IAC9F,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,MAAM,CAAoE;IAClF,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,gBAAgB,CAA+B;gBAE3C,MAAM,EAAE,qBAAqB;IAoBzC;;OAEG;IACG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC;IA0G9E;;OAEG;YACW,aAAa;IAyB3B;;OAEG;YACW,WAAW;IAsIzB;;OAEG;YACW,WAAW;IAuGzB;;OAEG;YACW,gBAAgB;IA4B9B;;OAEG;YACW,YAAY;IA2E1B;;OAEG;IACH,OAAO,CAAC,aAAa;IAiCrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAyCrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB;;OAEG;IACH,YAAY,IAAI,IAAI;IAQpB;;OAEG;IACH,YAAY,IAAI,SAAS;IAIzB;;OAEG;IACH,SAAS,IAAI;QACX,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,EAAE,OAAO,CAAC;QACzB,KAAK,EAAE,SAAS,CAAC;KAClB;CAOF"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* - Comprehensive error handling
|
|
14
14
|
* - Sync state persistence
|
|
15
15
|
*/
|
|
16
|
-
import chalk from '
|
|
16
|
+
import chalk from 'chalk';
|
|
17
17
|
export class SyncCoordinator {
|
|
18
18
|
db;
|
|
19
19
|
client;
|
|
@@ -454,7 +454,7 @@ export class SyncCoordinator {
|
|
|
454
454
|
totalItemsSynced: row.total_items_synced,
|
|
455
455
|
totalBytesSynced: row.total_bytes_synced,
|
|
456
456
|
syncCount: row.sync_count,
|
|
457
|
-
lastError: row.last_error
|
|
457
|
+
lastError: row.last_error,
|
|
458
458
|
};
|
|
459
459
|
}
|
|
460
460
|
}
|