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
|
@@ -19,11 +19,18 @@ import { EmbeddingService } from '../controllers/EmbeddingService.js';
|
|
|
19
19
|
import { MMRDiversityRanker } from '../controllers/MMRDiversityRanker.js';
|
|
20
20
|
import { ContextSynthesizer } from '../controllers/ContextSynthesizer.js';
|
|
21
21
|
import { MetadataFilter } from '../controllers/MetadataFilter.js';
|
|
22
|
+
import { QUICServer } from '../controllers/QUICServer.js';
|
|
23
|
+
import { QUICClient } from '../controllers/QUICClient.js';
|
|
24
|
+
import { SyncCoordinator } from '../controllers/SyncCoordinator.js';
|
|
22
25
|
import { initCommand } from './commands/init.js';
|
|
23
26
|
import { statusCommand } from './commands/status.js';
|
|
24
27
|
import { installEmbeddingsCommand } from './commands/install-embeddings.js';
|
|
25
28
|
import { migrateCommand } from './commands/migrate.js';
|
|
26
29
|
import { doctorCommand } from './commands/doctor.js';
|
|
30
|
+
import { attentionCommand } from './commands/attention.js';
|
|
31
|
+
import { learnCommand } from './commands/learn.js';
|
|
32
|
+
import { routeCommand } from './commands/route.js';
|
|
33
|
+
import { hyperbolicCommand } from './commands/hyperbolic.js';
|
|
27
34
|
import * as fs from 'fs';
|
|
28
35
|
import * as path from 'path';
|
|
29
36
|
import * as zlib from 'zlib';
|
|
@@ -48,6 +55,63 @@ const log = {
|
|
|
48
55
|
warning: (msg) => console.log(`${colors.yellow}⚠ ${msg}${colors.reset}`),
|
|
49
56
|
header: (msg) => console.log(`${colors.bright}${colors.cyan}${msg}${colors.reset}`)
|
|
50
57
|
};
|
|
58
|
+
// Spinner utility for progress indication
|
|
59
|
+
class Spinner {
|
|
60
|
+
frames = ['|', '/', '-', '\\'];
|
|
61
|
+
current = 0;
|
|
62
|
+
interval = null;
|
|
63
|
+
message = '';
|
|
64
|
+
start(message) {
|
|
65
|
+
this.message = message;
|
|
66
|
+
this.current = 0;
|
|
67
|
+
process.stdout.write(`\r${this.frames[0]} ${message}`);
|
|
68
|
+
this.interval = setInterval(() => {
|
|
69
|
+
this.current = (this.current + 1) % this.frames.length;
|
|
70
|
+
process.stdout.write(`\r${this.frames[this.current]} ${this.message}`);
|
|
71
|
+
}, 100);
|
|
72
|
+
}
|
|
73
|
+
update(message) {
|
|
74
|
+
this.message = message;
|
|
75
|
+
process.stdout.write(`\r${this.frames[this.current]} ${this.message}`);
|
|
76
|
+
}
|
|
77
|
+
succeed(message) {
|
|
78
|
+
this.stop();
|
|
79
|
+
console.log(`\r${colors.green}v${colors.reset} ${message}`);
|
|
80
|
+
}
|
|
81
|
+
fail(message) {
|
|
82
|
+
this.stop();
|
|
83
|
+
console.log(`\r${colors.red}x${colors.reset} ${message}`);
|
|
84
|
+
}
|
|
85
|
+
stop() {
|
|
86
|
+
if (this.interval) {
|
|
87
|
+
clearInterval(this.interval);
|
|
88
|
+
this.interval = null;
|
|
89
|
+
}
|
|
90
|
+
process.stdout.write('\r' + ' '.repeat(this.message.length + 10) + '\r');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Progress bar utility
|
|
94
|
+
class ProgressBar {
|
|
95
|
+
width = 40;
|
|
96
|
+
current = 0;
|
|
97
|
+
total = 100;
|
|
98
|
+
message = '';
|
|
99
|
+
update(current, total, message) {
|
|
100
|
+
this.current = current;
|
|
101
|
+
this.total = total;
|
|
102
|
+
if (message)
|
|
103
|
+
this.message = message;
|
|
104
|
+
const percent = Math.round((current / total) * 100);
|
|
105
|
+
const filled = Math.round((current / total) * this.width);
|
|
106
|
+
const empty = this.width - filled;
|
|
107
|
+
const bar = `${colors.green}${'='.repeat(filled)}${colors.reset}${'-'.repeat(empty)}`;
|
|
108
|
+
process.stdout.write(`\r[${bar}] ${percent}% ${this.message}`);
|
|
109
|
+
}
|
|
110
|
+
complete(message) {
|
|
111
|
+
const bar = `${colors.green}${'='.repeat(this.width)}${colors.reset}`;
|
|
112
|
+
console.log(`\r[${bar}] 100% ${message}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
51
115
|
class AgentDBCLI {
|
|
52
116
|
db; // Database instance from createDatabase (public for init command)
|
|
53
117
|
causalGraph;
|
|
@@ -57,6 +121,10 @@ class AgentDBCLI {
|
|
|
57
121
|
reflexion;
|
|
58
122
|
skills;
|
|
59
123
|
embedder;
|
|
124
|
+
// QUIC sync controllers
|
|
125
|
+
quicServer;
|
|
126
|
+
quicClient;
|
|
127
|
+
syncCoordinator;
|
|
60
128
|
async initialize(dbPath = './agentdb.db') {
|
|
61
129
|
// Initialize database
|
|
62
130
|
this.db = await createDatabase(dbPath);
|
|
@@ -565,128 +633,654 @@ class AgentDBCLI {
|
|
|
565
633
|
// QUIC Synchronization Commands
|
|
566
634
|
// ============================================================================
|
|
567
635
|
async quicStartServer(params) {
|
|
568
|
-
|
|
636
|
+
if (!this.db)
|
|
637
|
+
throw new Error('Not initialized');
|
|
638
|
+
log.header('\n[QUIC] Starting QUIC Sync Server');
|
|
639
|
+
const spinner = new Spinner();
|
|
569
640
|
const port = params.port || 4433;
|
|
570
641
|
const authToken = params.authToken || this.generateAuthToken();
|
|
571
|
-
log.
|
|
572
|
-
log.
|
|
642
|
+
console.log('\n' + '='.repeat(80));
|
|
643
|
+
console.log(`${colors.bright}Server Configuration${colors.reset}`);
|
|
644
|
+
console.log('='.repeat(80));
|
|
645
|
+
console.log(` Host: ${colors.cyan}0.0.0.0${colors.reset}`);
|
|
646
|
+
console.log(` Port: ${colors.cyan}${port}${colors.reset}`);
|
|
647
|
+
console.log(` Auth Token: ${colors.cyan}${authToken.substring(0, 8)}...${colors.reset}`);
|
|
648
|
+
console.log(` Max Connections: ${colors.cyan}${params.maxConnections || 100}${colors.reset}`);
|
|
573
649
|
if (params.cert && params.key) {
|
|
574
|
-
log
|
|
575
|
-
log
|
|
650
|
+
console.log(` TLS Certificate: ${colors.green}${params.cert}${colors.reset}`);
|
|
651
|
+
console.log(` TLS Key: ${colors.green}${params.key}${colors.reset}`);
|
|
576
652
|
}
|
|
577
653
|
else {
|
|
578
|
-
log
|
|
654
|
+
console.log(` TLS: ${colors.yellow}Self-signed (development mode)${colors.reset}`);
|
|
655
|
+
}
|
|
656
|
+
console.log('='.repeat(80));
|
|
657
|
+
try {
|
|
658
|
+
spinner.start('Initializing QUIC server...');
|
|
659
|
+
// Create QUIC server configuration
|
|
660
|
+
const serverConfig = {
|
|
661
|
+
host: '0.0.0.0',
|
|
662
|
+
port,
|
|
663
|
+
maxConnections: params.maxConnections || 100,
|
|
664
|
+
authToken,
|
|
665
|
+
tlsConfig: {
|
|
666
|
+
cert: params.cert,
|
|
667
|
+
key: params.key,
|
|
668
|
+
},
|
|
669
|
+
rateLimit: {
|
|
670
|
+
maxRequestsPerMinute: 60,
|
|
671
|
+
maxBytesPerMinute: 10 * 1024 * 1024, // 10MB
|
|
672
|
+
},
|
|
673
|
+
};
|
|
674
|
+
// Initialize the QUIC server with database
|
|
675
|
+
this.quicServer = new QUICServer(this.db, serverConfig);
|
|
676
|
+
spinner.update('Starting server...');
|
|
677
|
+
await this.quicServer.start();
|
|
678
|
+
spinner.succeed('QUIC server started successfully');
|
|
679
|
+
console.log('\n' + '-'.repeat(80));
|
|
680
|
+
console.log(`${colors.bright}Server Status${colors.reset}`);
|
|
681
|
+
console.log('-'.repeat(80));
|
|
682
|
+
const status = this.quicServer.getStatus();
|
|
683
|
+
console.log(` Status: ${colors.green}Running${colors.reset}`);
|
|
684
|
+
console.log(` Active Connections: ${colors.cyan}${status.activeConnections}${colors.reset}`);
|
|
685
|
+
console.log(` Rate Limit: ${colors.cyan}${status.config.rateLimit?.maxRequestsPerMinute} req/min${colors.reset}`);
|
|
686
|
+
console.log('-'.repeat(80));
|
|
687
|
+
log.info('\nServer is ready to accept connections.');
|
|
688
|
+
log.info(`Clients can connect using: agentdb sync connect <host> ${port} --auth-token ${authToken}`);
|
|
689
|
+
log.info('\nPress Ctrl+C to stop the server');
|
|
690
|
+
// Handle graceful shutdown
|
|
691
|
+
const shutdown = async () => {
|
|
692
|
+
console.log('\n');
|
|
693
|
+
log.info('Shutting down server...');
|
|
694
|
+
const shutdownSpinner = new Spinner();
|
|
695
|
+
shutdownSpinner.start('Closing connections...');
|
|
696
|
+
try {
|
|
697
|
+
if (this.quicServer) {
|
|
698
|
+
await this.quicServer.stop();
|
|
699
|
+
}
|
|
700
|
+
shutdownSpinner.succeed('Server stopped gracefully');
|
|
701
|
+
}
|
|
702
|
+
catch (error) {
|
|
703
|
+
shutdownSpinner.fail(`Error during shutdown: ${error.message}`);
|
|
704
|
+
}
|
|
705
|
+
process.exit(0);
|
|
706
|
+
};
|
|
707
|
+
process.on('SIGINT', shutdown);
|
|
708
|
+
process.on('SIGTERM', shutdown);
|
|
709
|
+
// Monitor server status periodically
|
|
710
|
+
const monitorInterval = setInterval(() => {
|
|
711
|
+
if (this.quicServer) {
|
|
712
|
+
const currentStatus = this.quicServer.getStatus();
|
|
713
|
+
if (currentStatus.activeConnections > 0) {
|
|
714
|
+
process.stdout.write(`\r${colors.cyan}[${new Date().toLocaleTimeString()}]${colors.reset} Active connections: ${currentStatus.activeConnections} | Total requests: ${currentStatus.totalRequests} `);
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
}, 5000);
|
|
718
|
+
// Keep process alive
|
|
719
|
+
await new Promise((resolve) => {
|
|
720
|
+
process.on('SIGINT', () => {
|
|
721
|
+
clearInterval(monitorInterval);
|
|
722
|
+
resolve();
|
|
723
|
+
});
|
|
724
|
+
process.on('SIGTERM', () => {
|
|
725
|
+
clearInterval(monitorInterval);
|
|
726
|
+
resolve();
|
|
727
|
+
});
|
|
728
|
+
});
|
|
729
|
+
}
|
|
730
|
+
catch (error) {
|
|
731
|
+
spinner.fail(`Failed to start server: ${error.message}`);
|
|
732
|
+
throw error;
|
|
579
733
|
}
|
|
580
|
-
// TODO: Implement QUIC server using existing QUICSync controller
|
|
581
|
-
log.info('\nServer started. Waiting for connections...');
|
|
582
|
-
log.info('Press Ctrl+C to stop');
|
|
583
|
-
// Keep process alive
|
|
584
|
-
await new Promise(() => { });
|
|
585
734
|
}
|
|
586
735
|
async quicConnect(params) {
|
|
587
|
-
log.header('\n
|
|
588
|
-
|
|
589
|
-
log
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
}
|
|
736
|
+
log.header('\n[QUIC] Connecting to QUIC Sync Server');
|
|
737
|
+
const spinner = new Spinner();
|
|
738
|
+
console.log('\n' + '='.repeat(80));
|
|
739
|
+
console.log(`${colors.bright}Connection Details${colors.reset}`);
|
|
740
|
+
console.log('='.repeat(80));
|
|
741
|
+
console.log(` Server: ${colors.cyan}${params.host}:${params.port}${colors.reset}`);
|
|
742
|
+
console.log(` Authentication: ${params.authToken ? colors.green + 'Enabled' : colors.yellow + 'Disabled'}${colors.reset}`);
|
|
743
|
+
console.log(` Timeout: ${colors.cyan}${params.timeout || 30000}ms${colors.reset}`);
|
|
593
744
|
if (params.cert) {
|
|
594
|
-
log
|
|
745
|
+
console.log(` TLS Certificate: ${colors.green}${params.cert}${colors.reset}`);
|
|
595
746
|
}
|
|
596
747
|
else {
|
|
597
|
-
log.
|
|
748
|
+
console.log(` TLS: ${colors.yellow}Insecure (no certificate provided)${colors.reset}`);
|
|
749
|
+
}
|
|
750
|
+
console.log('='.repeat(80));
|
|
751
|
+
try {
|
|
752
|
+
spinner.start('Initializing QUIC client...');
|
|
753
|
+
// Create QUIC client configuration
|
|
754
|
+
const clientConfig = {
|
|
755
|
+
serverHost: params.host,
|
|
756
|
+
serverPort: params.port,
|
|
757
|
+
authToken: params.authToken,
|
|
758
|
+
maxRetries: 3,
|
|
759
|
+
retryDelayMs: 1000,
|
|
760
|
+
timeoutMs: params.timeout || 30000,
|
|
761
|
+
poolSize: 5,
|
|
762
|
+
tlsConfig: {
|
|
763
|
+
cert: params.cert,
|
|
764
|
+
rejectUnauthorized: !!params.cert,
|
|
765
|
+
},
|
|
766
|
+
};
|
|
767
|
+
// Initialize the QUIC client
|
|
768
|
+
this.quicClient = new QUICClient(clientConfig);
|
|
769
|
+
spinner.update('Establishing connection...');
|
|
770
|
+
await this.quicClient.connect();
|
|
771
|
+
spinner.update('Testing connection (ping)...');
|
|
772
|
+
const pingResult = await this.quicClient.ping();
|
|
773
|
+
if (!pingResult.success) {
|
|
774
|
+
throw new Error(pingResult.error || 'Ping failed');
|
|
775
|
+
}
|
|
776
|
+
spinner.succeed('Connected to remote server successfully');
|
|
777
|
+
console.log('\n' + '-'.repeat(80));
|
|
778
|
+
console.log(`${colors.bright}Connection Status${colors.reset}`);
|
|
779
|
+
console.log('-'.repeat(80));
|
|
780
|
+
const status = this.quicClient.getStatus();
|
|
781
|
+
console.log(` Status: ${colors.green}Connected${colors.reset}`);
|
|
782
|
+
console.log(` Latency: ${colors.cyan}${pingResult.latencyMs}ms${colors.reset}`);
|
|
783
|
+
console.log(` Pool Size: ${colors.cyan}${status.poolSize}${colors.reset}`);
|
|
784
|
+
console.log(` Active Connections: ${colors.cyan}${status.activeConnections}${colors.reset}`);
|
|
785
|
+
console.log('-'.repeat(80));
|
|
786
|
+
// Initialize the SyncCoordinator for subsequent push/pull operations
|
|
787
|
+
if (this.db) {
|
|
788
|
+
this.syncCoordinator = new SyncCoordinator({
|
|
789
|
+
db: this.db,
|
|
790
|
+
client: this.quicClient,
|
|
791
|
+
});
|
|
792
|
+
log.info('\nSync coordinator initialized. Ready for push/pull operations.');
|
|
793
|
+
}
|
|
794
|
+
log.success('\nConnection established.');
|
|
795
|
+
log.info('Use "agentdb sync push" or "agentdb sync pull" to sync data.');
|
|
796
|
+
}
|
|
797
|
+
catch (error) {
|
|
798
|
+
spinner.fail(`Connection failed: ${error.message}`);
|
|
799
|
+
console.log('\n' + '-'.repeat(80));
|
|
800
|
+
console.log(`${colors.bright}Troubleshooting${colors.reset}`);
|
|
801
|
+
console.log('-'.repeat(80));
|
|
802
|
+
console.log(' 1. Verify the server is running and accessible');
|
|
803
|
+
console.log(' 2. Check firewall settings allow traffic on the specified port');
|
|
804
|
+
console.log(' 3. Ensure the auth token matches the server configuration');
|
|
805
|
+
console.log(' 4. For TLS connections, verify the certificate is valid');
|
|
806
|
+
console.log('-'.repeat(80));
|
|
807
|
+
throw error;
|
|
598
808
|
}
|
|
599
|
-
// TODO: Implement QUIC client connection
|
|
600
|
-
log.success('Connected to remote server');
|
|
601
|
-
log.info('Server info: AgentDB QUIC Sync v1.0');
|
|
602
809
|
}
|
|
603
810
|
async quicPush(params) {
|
|
604
811
|
if (!this.db)
|
|
605
812
|
throw new Error('Not initialized');
|
|
606
|
-
log.header('\n
|
|
607
|
-
|
|
608
|
-
|
|
813
|
+
log.header('\n[QUIC] Pushing Changes to Remote');
|
|
814
|
+
const spinner = new Spinner();
|
|
815
|
+
const progressBar = new ProgressBar();
|
|
816
|
+
// Parse server address
|
|
817
|
+
const [host, portStr] = params.server.split(':');
|
|
818
|
+
const port = parseInt(portStr) || 4433;
|
|
819
|
+
console.log('\n' + '='.repeat(80));
|
|
820
|
+
console.log(`${colors.bright}Push Configuration${colors.reset}`);
|
|
821
|
+
console.log('='.repeat(80));
|
|
822
|
+
console.log(` Server: ${colors.cyan}${host}:${port}${colors.reset}`);
|
|
823
|
+
console.log(` Mode: ${colors.cyan}${params.incremental ? 'Incremental' : 'Full Sync'}${colors.reset}`);
|
|
824
|
+
console.log(` Batch Size: ${colors.cyan}${params.batchSize || 100}${colors.reset}`);
|
|
609
825
|
if (params.filter) {
|
|
610
|
-
log
|
|
826
|
+
console.log(` Filter: ${colors.cyan}${params.filter}${colors.reset}`);
|
|
827
|
+
}
|
|
828
|
+
console.log('='.repeat(80));
|
|
829
|
+
try {
|
|
830
|
+
// Step 1: Analyze pending changes
|
|
831
|
+
spinner.start('Analyzing local changes...');
|
|
832
|
+
const pendingChanges = this.getPendingChangesDetailed(params.incremental, params.filter);
|
|
833
|
+
spinner.succeed(`Found ${pendingChanges.totalItems} items to push`);
|
|
834
|
+
console.log('\n' + '-'.repeat(80));
|
|
835
|
+
console.log(`${colors.bright}Pending Changes${colors.reset}`);
|
|
836
|
+
console.log('-'.repeat(80));
|
|
837
|
+
console.log(` Episodes: ${colors.cyan}${pendingChanges.episodes.length}${colors.reset}`);
|
|
838
|
+
console.log(` Skills: ${colors.cyan}${pendingChanges.skills.length}${colors.reset}`);
|
|
839
|
+
console.log(` Edges: ${colors.cyan}${pendingChanges.edges.length}${colors.reset}`);
|
|
840
|
+
console.log(` Total Size: ${colors.cyan}${(pendingChanges.totalSize / 1024).toFixed(2)} KB${colors.reset}`);
|
|
841
|
+
console.log('-'.repeat(80));
|
|
842
|
+
if (pendingChanges.totalItems === 0) {
|
|
843
|
+
log.info('\nNo changes to push. Database is up to date.');
|
|
844
|
+
return;
|
|
845
|
+
}
|
|
846
|
+
// Step 2: Establish connection if not already connected
|
|
847
|
+
spinner.start('Connecting to server...');
|
|
848
|
+
if (!this.quicClient) {
|
|
849
|
+
const clientConfig = {
|
|
850
|
+
serverHost: host,
|
|
851
|
+
serverPort: port,
|
|
852
|
+
authToken: params.authToken,
|
|
853
|
+
maxRetries: 3,
|
|
854
|
+
retryDelayMs: 1000,
|
|
855
|
+
timeoutMs: 30000,
|
|
856
|
+
poolSize: 5,
|
|
857
|
+
};
|
|
858
|
+
this.quicClient = new QUICClient(clientConfig);
|
|
859
|
+
await this.quicClient.connect();
|
|
860
|
+
}
|
|
861
|
+
spinner.succeed('Connected to server');
|
|
862
|
+
// Step 3: Initialize sync coordinator if not exists
|
|
863
|
+
if (!this.syncCoordinator) {
|
|
864
|
+
this.syncCoordinator = new SyncCoordinator({
|
|
865
|
+
db: this.db,
|
|
866
|
+
client: this.quicClient,
|
|
867
|
+
batchSize: params.batchSize || 100,
|
|
868
|
+
});
|
|
869
|
+
}
|
|
870
|
+
// Step 4: Push changes with progress tracking
|
|
871
|
+
console.log('\n' + '-'.repeat(80));
|
|
872
|
+
console.log(`${colors.bright}Push Progress${colors.reset}`);
|
|
873
|
+
console.log('-'.repeat(80));
|
|
874
|
+
let pushedItems = 0;
|
|
875
|
+
const startTime = Date.now();
|
|
876
|
+
// Perform sync with progress callback
|
|
877
|
+
const syncReport = await this.syncCoordinator.sync((progress) => {
|
|
878
|
+
if (progress.phase === 'pushing') {
|
|
879
|
+
pushedItems = progress.current;
|
|
880
|
+
progressBar.update(progress.current, progress.total, progress.itemType || 'items');
|
|
881
|
+
}
|
|
882
|
+
else if (progress.phase === 'completed') {
|
|
883
|
+
progressBar.complete('Push completed');
|
|
884
|
+
}
|
|
885
|
+
else if (progress.phase === 'error') {
|
|
886
|
+
console.log(`\n${colors.red}Error: ${progress.error}${colors.reset}`);
|
|
887
|
+
}
|
|
888
|
+
});
|
|
889
|
+
const duration = Date.now() - startTime;
|
|
890
|
+
console.log('\n' + '='.repeat(80));
|
|
891
|
+
console.log(`${colors.bright}Push Summary${colors.reset}`);
|
|
892
|
+
console.log('='.repeat(80));
|
|
893
|
+
console.log(` Status: ${syncReport.success ? colors.green + 'Success' : colors.red + 'Failed'}${colors.reset}`);
|
|
894
|
+
console.log(` Items Pushed: ${colors.cyan}${syncReport.itemsPushed}${colors.reset}`);
|
|
895
|
+
console.log(` Bytes Transferred: ${colors.cyan}${(syncReport.bytesTransferred / 1024).toFixed(2)} KB${colors.reset}`);
|
|
896
|
+
console.log(` Duration: ${colors.cyan}${duration}ms${colors.reset}`);
|
|
897
|
+
console.log(` Throughput: ${colors.cyan}${((syncReport.bytesTransferred / 1024) / (duration / 1000)).toFixed(2)} KB/s${colors.reset}`);
|
|
898
|
+
if (syncReport.errors.length > 0) {
|
|
899
|
+
console.log(` Errors: ${colors.red}${syncReport.errors.length}${colors.reset}`);
|
|
900
|
+
syncReport.errors.forEach((err, i) => {
|
|
901
|
+
console.log(` ${i + 1}. ${err}`);
|
|
902
|
+
});
|
|
903
|
+
}
|
|
904
|
+
console.log('='.repeat(80));
|
|
905
|
+
if (syncReport.success) {
|
|
906
|
+
log.success('\nChanges pushed successfully');
|
|
907
|
+
}
|
|
908
|
+
else {
|
|
909
|
+
log.error('\nPush completed with errors');
|
|
910
|
+
}
|
|
911
|
+
}
|
|
912
|
+
catch (error) {
|
|
913
|
+
spinner.fail(`Push failed: ${error.message}`);
|
|
914
|
+
throw error;
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
// Helper to get detailed pending changes with actual data
|
|
918
|
+
getPendingChangesDetailed(incremental, filter) {
|
|
919
|
+
if (!this.db) {
|
|
920
|
+
return { episodes: [], skills: [], edges: [], totalItems: 0, totalSize: 0 };
|
|
921
|
+
}
|
|
922
|
+
try {
|
|
923
|
+
// Get last sync time
|
|
924
|
+
let lastSyncTime = 0;
|
|
925
|
+
if (incremental) {
|
|
926
|
+
try {
|
|
927
|
+
const syncState = this.db.prepare('SELECT last_sync_at FROM sync_state WHERE id = 1').get();
|
|
928
|
+
if (syncState) {
|
|
929
|
+
lastSyncTime = syncState.last_sync_at || 0;
|
|
930
|
+
}
|
|
931
|
+
}
|
|
932
|
+
catch {
|
|
933
|
+
// Table might not exist
|
|
934
|
+
}
|
|
935
|
+
}
|
|
936
|
+
// Query episodes
|
|
937
|
+
let episodesQuery = 'SELECT * FROM episodes WHERE 1=1';
|
|
938
|
+
const episodeParams = [];
|
|
939
|
+
if (incremental && lastSyncTime > 0) {
|
|
940
|
+
episodesQuery += ' AND ts > ?';
|
|
941
|
+
episodeParams.push(lastSyncTime);
|
|
942
|
+
}
|
|
943
|
+
const episodes = this.db.prepare(episodesQuery).all(...episodeParams) || [];
|
|
944
|
+
// Query skills
|
|
945
|
+
let skillsQuery = 'SELECT * FROM skills WHERE 1=1';
|
|
946
|
+
const skillParams = [];
|
|
947
|
+
if (incremental && lastSyncTime > 0) {
|
|
948
|
+
skillsQuery += ' AND ts > ?';
|
|
949
|
+
skillParams.push(lastSyncTime);
|
|
950
|
+
}
|
|
951
|
+
let skills = [];
|
|
952
|
+
try {
|
|
953
|
+
skills = this.db.prepare(skillsQuery).all(...skillParams) || [];
|
|
954
|
+
}
|
|
955
|
+
catch {
|
|
956
|
+
// Skills table might not exist
|
|
957
|
+
}
|
|
958
|
+
// Query edges
|
|
959
|
+
let edgesQuery = 'SELECT * FROM skill_edges WHERE 1=1';
|
|
960
|
+
const edgeParams = [];
|
|
961
|
+
if (incremental && lastSyncTime > 0) {
|
|
962
|
+
edgesQuery += ' AND ts > ?';
|
|
963
|
+
edgeParams.push(lastSyncTime);
|
|
964
|
+
}
|
|
965
|
+
let edges = [];
|
|
966
|
+
try {
|
|
967
|
+
edges = this.db.prepare(edgesQuery).all(...edgeParams) || [];
|
|
968
|
+
}
|
|
969
|
+
catch {
|
|
970
|
+
// Edges table might not exist
|
|
971
|
+
}
|
|
972
|
+
// Calculate total size
|
|
973
|
+
const totalSize = JSON.stringify(episodes).length +
|
|
974
|
+
JSON.stringify(skills).length +
|
|
975
|
+
JSON.stringify(edges).length;
|
|
976
|
+
return {
|
|
977
|
+
episodes,
|
|
978
|
+
skills,
|
|
979
|
+
edges,
|
|
980
|
+
totalItems: episodes.length + skills.length + edges.length,
|
|
981
|
+
totalSize,
|
|
982
|
+
};
|
|
983
|
+
}
|
|
984
|
+
catch (error) {
|
|
985
|
+
log.warning(`Error analyzing changes: ${error.message}`);
|
|
986
|
+
return { episodes: [], skills: [], edges: [], totalItems: 0, totalSize: 0 };
|
|
611
987
|
}
|
|
612
|
-
// Get pending changes
|
|
613
|
-
const changes = this.getPendingChanges(params.incremental, params.filter);
|
|
614
|
-
console.log('\n' + '═'.repeat(80));
|
|
615
|
-
console.log(`${colors.bright}Pending Changes${colors.reset}`);
|
|
616
|
-
console.log('═'.repeat(80));
|
|
617
|
-
console.log(` Episodes: ${changes.episodes}`);
|
|
618
|
-
console.log(` Skills: ${changes.skills}`);
|
|
619
|
-
console.log(` Causal Edges: ${changes.causalEdges}`);
|
|
620
|
-
console.log(` Total Size: ${(changes.totalSize / 1024).toFixed(2)} KB`);
|
|
621
|
-
console.log('═'.repeat(80));
|
|
622
|
-
// TODO: Implement QUIC push
|
|
623
|
-
log.success('Changes pushed successfully');
|
|
624
|
-
log.info(`Transferred: ${(changes.totalSize / 1024).toFixed(2)} KB`);
|
|
625
988
|
}
|
|
626
989
|
async quicPull(params) {
|
|
627
990
|
if (!this.db)
|
|
628
991
|
throw new Error('Not initialized');
|
|
629
|
-
log.header('\n
|
|
630
|
-
|
|
631
|
-
|
|
992
|
+
log.header('\n[QUIC] Pulling Changes from Remote');
|
|
993
|
+
const spinner = new Spinner();
|
|
994
|
+
const progressBar = new ProgressBar();
|
|
995
|
+
// Parse server address
|
|
996
|
+
const [host, portStr] = params.server.split(':');
|
|
997
|
+
const port = parseInt(portStr) || 4433;
|
|
998
|
+
console.log('\n' + '='.repeat(80));
|
|
999
|
+
console.log(`${colors.bright}Pull Configuration${colors.reset}`);
|
|
1000
|
+
console.log('='.repeat(80));
|
|
1001
|
+
console.log(` Server: ${colors.cyan}${host}:${port}${colors.reset}`);
|
|
1002
|
+
console.log(` Mode: ${colors.cyan}${params.incremental ? 'Incremental' : 'Full Sync'}${colors.reset}`);
|
|
1003
|
+
console.log(` Conflict Strategy: ${colors.cyan}${params.conflictStrategy || 'latest-wins'}${colors.reset}`);
|
|
1004
|
+
console.log(` Batch Size: ${colors.cyan}${params.batchSize || 100}${colors.reset}`);
|
|
632
1005
|
if (params.filter) {
|
|
633
|
-
log
|
|
634
|
-
}
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
1006
|
+
console.log(` Filter: ${colors.cyan}${params.filter}${colors.reset}`);
|
|
1007
|
+
}
|
|
1008
|
+
console.log('='.repeat(80));
|
|
1009
|
+
try {
|
|
1010
|
+
// Step 1: Establish connection if not already connected
|
|
1011
|
+
spinner.start('Connecting to server...');
|
|
1012
|
+
if (!this.quicClient) {
|
|
1013
|
+
const clientConfig = {
|
|
1014
|
+
serverHost: host,
|
|
1015
|
+
serverPort: port,
|
|
1016
|
+
authToken: params.authToken,
|
|
1017
|
+
maxRetries: 3,
|
|
1018
|
+
retryDelayMs: 1000,
|
|
1019
|
+
timeoutMs: 30000,
|
|
1020
|
+
poolSize: 5,
|
|
1021
|
+
};
|
|
1022
|
+
this.quicClient = new QUICClient(clientConfig);
|
|
1023
|
+
await this.quicClient.connect();
|
|
1024
|
+
}
|
|
1025
|
+
spinner.succeed('Connected to server');
|
|
1026
|
+
// Step 2: Initialize sync coordinator if not exists
|
|
1027
|
+
if (!this.syncCoordinator) {
|
|
1028
|
+
this.syncCoordinator = new SyncCoordinator({
|
|
1029
|
+
db: this.db,
|
|
1030
|
+
client: this.quicClient,
|
|
1031
|
+
batchSize: params.batchSize || 100,
|
|
1032
|
+
conflictStrategy: params.conflictStrategy || 'latest-wins',
|
|
1033
|
+
});
|
|
1034
|
+
}
|
|
1035
|
+
// Step 3: Pull changes with progress tracking
|
|
1036
|
+
console.log('\n' + '-'.repeat(80));
|
|
1037
|
+
console.log(`${colors.bright}Pull Progress${colors.reset}`);
|
|
1038
|
+
console.log('-'.repeat(80));
|
|
1039
|
+
const startTime = Date.now();
|
|
1040
|
+
let currentPhase = '';
|
|
1041
|
+
let episodesReceived = 0;
|
|
1042
|
+
let skillsReceived = 0;
|
|
1043
|
+
let edgesReceived = 0;
|
|
1044
|
+
// Perform sync with progress callback
|
|
1045
|
+
const syncReport = await this.syncCoordinator.sync((progress) => {
|
|
1046
|
+
if (progress.phase === 'pulling') {
|
|
1047
|
+
currentPhase = progress.itemType || 'items';
|
|
1048
|
+
progressBar.update(progress.current, progress.total, `Pulling ${currentPhase}...`);
|
|
1049
|
+
// Track received items
|
|
1050
|
+
if (progress.itemType === 'episodes')
|
|
1051
|
+
episodesReceived = progress.current;
|
|
1052
|
+
if (progress.itemType === 'skills')
|
|
1053
|
+
skillsReceived = progress.current;
|
|
1054
|
+
if (progress.itemType === 'edges')
|
|
1055
|
+
edgesReceived = progress.current;
|
|
1056
|
+
}
|
|
1057
|
+
else if (progress.phase === 'resolving') {
|
|
1058
|
+
progressBar.update(progress.current, progress.total, 'Resolving conflicts...');
|
|
1059
|
+
}
|
|
1060
|
+
else if (progress.phase === 'applying') {
|
|
1061
|
+
progressBar.update(progress.current, progress.total, 'Applying changes...');
|
|
1062
|
+
}
|
|
1063
|
+
else if (progress.phase === 'completed') {
|
|
1064
|
+
progressBar.complete('Pull completed');
|
|
1065
|
+
}
|
|
1066
|
+
else if (progress.phase === 'error') {
|
|
1067
|
+
console.log(`\n${colors.red}Error: ${progress.error}${colors.reset}`);
|
|
1068
|
+
}
|
|
1069
|
+
});
|
|
1070
|
+
const duration = Date.now() - startTime;
|
|
1071
|
+
console.log('\n' + '='.repeat(80));
|
|
1072
|
+
console.log(`${colors.bright}Pull Summary${colors.reset}`);
|
|
1073
|
+
console.log('='.repeat(80));
|
|
1074
|
+
console.log(` Status: ${syncReport.success ? colors.green + 'Success' : colors.red + 'Failed'}${colors.reset}`);
|
|
1075
|
+
console.log(` Items Pulled: ${colors.cyan}${syncReport.itemsPulled}${colors.reset}`);
|
|
1076
|
+
console.log(` Conflicts Resolved: ${colors.cyan}${syncReport.conflictsResolved}${colors.reset}`);
|
|
1077
|
+
console.log(` Bytes Transferred: ${colors.cyan}${(syncReport.bytesTransferred / 1024).toFixed(2)} KB${colors.reset}`);
|
|
1078
|
+
console.log(` Duration: ${colors.cyan}${duration}ms${colors.reset}`);
|
|
1079
|
+
console.log(` Throughput: ${colors.cyan}${((syncReport.bytesTransferred / 1024) / (duration / 1000)).toFixed(2)} KB/s${colors.reset}`);
|
|
1080
|
+
console.log('\n' + '-'.repeat(80));
|
|
1081
|
+
console.log(`${colors.bright}Received Data${colors.reset}`);
|
|
1082
|
+
console.log('-'.repeat(80));
|
|
1083
|
+
console.log(` Episodes: ${colors.cyan}${episodesReceived}${colors.reset}`);
|
|
1084
|
+
console.log(` Skills: ${colors.cyan}${skillsReceived}${colors.reset}`);
|
|
1085
|
+
console.log(` Edges: ${colors.cyan}${edgesReceived}${colors.reset}`);
|
|
1086
|
+
console.log('-'.repeat(80));
|
|
1087
|
+
if (syncReport.errors.length > 0) {
|
|
1088
|
+
console.log(`\n${colors.bright}Errors${colors.reset}`);
|
|
1089
|
+
console.log('-'.repeat(80));
|
|
1090
|
+
syncReport.errors.forEach((err, i) => {
|
|
1091
|
+
console.log(` ${colors.red}${i + 1}. ${err}${colors.reset}`);
|
|
1092
|
+
});
|
|
1093
|
+
console.log('-'.repeat(80));
|
|
1094
|
+
}
|
|
1095
|
+
console.log('='.repeat(80));
|
|
1096
|
+
if (syncReport.success) {
|
|
1097
|
+
log.success('\nChanges pulled and merged successfully');
|
|
1098
|
+
}
|
|
1099
|
+
else {
|
|
1100
|
+
log.error('\nPull completed with errors');
|
|
1101
|
+
}
|
|
1102
|
+
// Display local database status after pull
|
|
1103
|
+
spinner.start('Verifying local database...');
|
|
1104
|
+
const localStatus = this.getLocalDatabaseStatus();
|
|
1105
|
+
spinner.succeed('Local database verified');
|
|
1106
|
+
console.log('\n' + '-'.repeat(80));
|
|
1107
|
+
console.log(`${colors.bright}Local Database Status${colors.reset}`);
|
|
1108
|
+
console.log('-'.repeat(80));
|
|
1109
|
+
console.log(` Total Episodes: ${colors.cyan}${localStatus.episodes}${colors.reset}`);
|
|
1110
|
+
console.log(` Total Skills: ${colors.cyan}${localStatus.skills}${colors.reset}`);
|
|
1111
|
+
console.log(` Total Edges: ${colors.cyan}${localStatus.edges}${colors.reset}`);
|
|
1112
|
+
console.log('-'.repeat(80));
|
|
1113
|
+
}
|
|
1114
|
+
catch (error) {
|
|
1115
|
+
spinner.fail(`Pull failed: ${error.message}`);
|
|
1116
|
+
throw error;
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
// Helper to get local database status
|
|
1120
|
+
getLocalDatabaseStatus() {
|
|
1121
|
+
if (!this.db) {
|
|
1122
|
+
return { episodes: 0, skills: 0, edges: 0 };
|
|
1123
|
+
}
|
|
1124
|
+
let episodes = 0;
|
|
1125
|
+
let skills = 0;
|
|
1126
|
+
let edges = 0;
|
|
1127
|
+
try {
|
|
1128
|
+
const episodeCount = this.db.prepare('SELECT COUNT(*) as count FROM episodes').get();
|
|
1129
|
+
episodes = episodeCount?.count || 0;
|
|
1130
|
+
}
|
|
1131
|
+
catch {
|
|
1132
|
+
// Table might not exist
|
|
1133
|
+
}
|
|
1134
|
+
try {
|
|
1135
|
+
const skillCount = this.db.prepare('SELECT COUNT(*) as count FROM skills').get();
|
|
1136
|
+
skills = skillCount?.count || 0;
|
|
1137
|
+
}
|
|
1138
|
+
catch {
|
|
1139
|
+
// Table might not exist
|
|
1140
|
+
}
|
|
1141
|
+
try {
|
|
1142
|
+
const edgeCount = this.db.prepare('SELECT COUNT(*) as count FROM skill_edges').get();
|
|
1143
|
+
edges = edgeCount?.count || 0;
|
|
1144
|
+
}
|
|
1145
|
+
catch {
|
|
1146
|
+
// Table might not exist
|
|
1147
|
+
}
|
|
1148
|
+
return { episodes, skills, edges };
|
|
652
1149
|
}
|
|
653
1150
|
async quicStatus() {
|
|
654
1151
|
if (!this.db)
|
|
655
1152
|
throw new Error('Not initialized');
|
|
656
|
-
log.header('\n
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
1153
|
+
log.header('\n[QUIC] Sync Status');
|
|
1154
|
+
const spinner = new Spinner();
|
|
1155
|
+
spinner.start('Loading sync status...');
|
|
1156
|
+
// Get sync metadata from database
|
|
1157
|
+
const syncMeta = this.getSyncMetadataFromDb();
|
|
1158
|
+
// Get pending changes
|
|
1159
|
+
const pendingChanges = this.getPendingChangesDetailed(true);
|
|
1160
|
+
spinner.succeed('Status loaded');
|
|
1161
|
+
console.log('\n' + '='.repeat(80));
|
|
1162
|
+
console.log(`${colors.bright}Sync Overview${colors.reset}`);
|
|
1163
|
+
console.log('='.repeat(80));
|
|
1164
|
+
// Last sync information
|
|
1165
|
+
if (syncMeta.lastSyncAt > 0) {
|
|
1166
|
+
const lastSync = new Date(syncMeta.lastSyncAt);
|
|
664
1167
|
console.log(` Last Sync: ${colors.cyan}${lastSync.toLocaleString()}${colors.reset}`);
|
|
665
|
-
console.log(` Time Ago: ${this.timeAgo(syncMeta.
|
|
1168
|
+
console.log(` Time Ago: ${colors.cyan}${this.timeAgo(Math.floor(syncMeta.lastSyncAt / 1000))}${colors.reset}`);
|
|
666
1169
|
}
|
|
667
1170
|
else {
|
|
668
1171
|
console.log(` Last Sync: ${colors.yellow}Never${colors.reset}`);
|
|
669
1172
|
}
|
|
670
|
-
console.log(
|
|
671
|
-
console.log(
|
|
672
|
-
console.log(
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
console.log('\n' + '
|
|
677
|
-
console.log(`${colors.bright}
|
|
678
|
-
console.log('
|
|
679
|
-
|
|
680
|
-
|
|
1173
|
+
console.log(` Total Syncs: ${colors.cyan}${syncMeta.syncCount}${colors.reset}`);
|
|
1174
|
+
console.log(` Total Items Synced: ${colors.cyan}${syncMeta.totalItemsSynced}${colors.reset}`);
|
|
1175
|
+
console.log(` Total Data Synced: ${colors.cyan}${(syncMeta.totalBytesSynced / 1024).toFixed(2)} KB${colors.reset}`);
|
|
1176
|
+
if (syncMeta.lastError) {
|
|
1177
|
+
console.log(` Last Error: ${colors.red}${syncMeta.lastError}${colors.reset}`);
|
|
1178
|
+
}
|
|
1179
|
+
console.log('\n' + '-'.repeat(80));
|
|
1180
|
+
console.log(`${colors.bright}Pending Changes (Unsynced)${colors.reset}`);
|
|
1181
|
+
console.log('-'.repeat(80));
|
|
1182
|
+
console.log(` Episodes: ${colors.cyan}${pendingChanges.episodes.length}${colors.reset}`);
|
|
1183
|
+
console.log(` Skills: ${colors.cyan}${pendingChanges.skills.length}${colors.reset}`);
|
|
1184
|
+
console.log(` Edges: ${colors.cyan}${pendingChanges.edges.length}${colors.reset}`);
|
|
1185
|
+
console.log(` Total Size: ${colors.cyan}${(pendingChanges.totalSize / 1024).toFixed(2)} KB${colors.reset}`);
|
|
1186
|
+
console.log('\n' + '-'.repeat(80));
|
|
1187
|
+
console.log(`${colors.bright}Local Database${colors.reset}`);
|
|
1188
|
+
console.log('-'.repeat(80));
|
|
1189
|
+
const localStatus = this.getLocalDatabaseStatus();
|
|
1190
|
+
console.log(` Episodes: ${colors.cyan}${localStatus.episodes}${colors.reset}`);
|
|
1191
|
+
console.log(` Skills: ${colors.cyan}${localStatus.skills}${colors.reset}`);
|
|
1192
|
+
console.log(` Edges: ${colors.cyan}${localStatus.edges}${colors.reset}`);
|
|
1193
|
+
console.log('\n' + '-'.repeat(80));
|
|
1194
|
+
console.log(`${colors.bright}Controller Status${colors.reset}`);
|
|
1195
|
+
console.log('-'.repeat(80));
|
|
1196
|
+
// Server status
|
|
1197
|
+
if (this.quicServer) {
|
|
1198
|
+
const serverStatus = this.quicServer.getStatus();
|
|
1199
|
+
console.log(` QUIC Server: ${serverStatus.isRunning ? colors.green + 'Running' : colors.yellow + 'Stopped'}${colors.reset}`);
|
|
1200
|
+
if (serverStatus.isRunning) {
|
|
1201
|
+
console.log(` Active Connections: ${colors.cyan}${serverStatus.activeConnections}${colors.reset}`);
|
|
1202
|
+
console.log(` Total Requests: ${colors.cyan}${serverStatus.totalRequests}${colors.reset}`);
|
|
1203
|
+
}
|
|
681
1204
|
}
|
|
682
1205
|
else {
|
|
683
|
-
|
|
684
|
-
console.log(` ${colors.cyan}${server.host}:${server.port}${colors.reset}`);
|
|
685
|
-
console.log(` Status: ${server.connected ? colors.green + 'Connected' : colors.red + 'Disconnected'}${colors.reset}`);
|
|
686
|
-
console.log(` Last Seen: ${new Date(server.lastSeen * 1000).toLocaleString()}`);
|
|
687
|
-
});
|
|
1206
|
+
console.log(` QUIC Server: ${colors.yellow}Not initialized${colors.reset}`);
|
|
688
1207
|
}
|
|
689
|
-
|
|
1208
|
+
// Client status
|
|
1209
|
+
if (this.quicClient) {
|
|
1210
|
+
const clientStatus = this.quicClient.getStatus();
|
|
1211
|
+
console.log(` QUIC Client: ${clientStatus.isConnected ? colors.green + 'Connected' : colors.yellow + 'Disconnected'}${colors.reset}`);
|
|
1212
|
+
if (clientStatus.isConnected) {
|
|
1213
|
+
console.log(` Server: ${colors.cyan}${clientStatus.config.serverHost}:${clientStatus.config.serverPort}${colors.reset}`);
|
|
1214
|
+
console.log(` Pool Size: ${colors.cyan}${clientStatus.poolSize}${colors.reset}`);
|
|
1215
|
+
console.log(` Total Requests: ${colors.cyan}${clientStatus.totalRequests}${colors.reset}`);
|
|
1216
|
+
}
|
|
1217
|
+
}
|
|
1218
|
+
else {
|
|
1219
|
+
console.log(` QUIC Client: ${colors.yellow}Not initialized${colors.reset}`);
|
|
1220
|
+
}
|
|
1221
|
+
// Sync coordinator status
|
|
1222
|
+
if (this.syncCoordinator) {
|
|
1223
|
+
const coordStatus = this.syncCoordinator.getStatus();
|
|
1224
|
+
console.log(` Sync Coordinator: ${colors.green}Ready${colors.reset}`);
|
|
1225
|
+
console.log(` Auto-Sync: ${coordStatus.autoSyncEnabled ? colors.green + 'Enabled' : colors.yellow + 'Disabled'}${colors.reset}`);
|
|
1226
|
+
console.log(` Currently Syncing: ${coordStatus.isSyncing ? colors.yellow + 'Yes' : colors.cyan + 'No'}${colors.reset}`);
|
|
1227
|
+
}
|
|
1228
|
+
else {
|
|
1229
|
+
console.log(` Sync Coordinator: ${colors.yellow}Not initialized${colors.reset}`);
|
|
1230
|
+
}
|
|
1231
|
+
console.log('='.repeat(80));
|
|
1232
|
+
// Recommendations
|
|
1233
|
+
if (pendingChanges.totalItems > 0) {
|
|
1234
|
+
log.info(`\nTip: You have ${pendingChanges.totalItems} unsynced items. Use "agentdb sync push" to sync them.`);
|
|
1235
|
+
}
|
|
1236
|
+
if (!this.quicClient && !this.quicServer) {
|
|
1237
|
+
log.info('\nTo start syncing:');
|
|
1238
|
+
log.info(' - Start a server: agentdb sync start-server --port 4433');
|
|
1239
|
+
log.info(' - Or connect to one: agentdb sync connect <host> <port>');
|
|
1240
|
+
}
|
|
1241
|
+
}
|
|
1242
|
+
// Get sync metadata from database
|
|
1243
|
+
getSyncMetadataFromDb() {
|
|
1244
|
+
if (!this.db) {
|
|
1245
|
+
return {
|
|
1246
|
+
lastSyncAt: 0,
|
|
1247
|
+
lastEpisodeSync: 0,
|
|
1248
|
+
lastSkillSync: 0,
|
|
1249
|
+
lastEdgeSync: 0,
|
|
1250
|
+
totalItemsSynced: 0,
|
|
1251
|
+
totalBytesSynced: 0,
|
|
1252
|
+
syncCount: 0,
|
|
1253
|
+
};
|
|
1254
|
+
}
|
|
1255
|
+
try {
|
|
1256
|
+
const row = this.db
|
|
1257
|
+
.prepare('SELECT * FROM sync_state WHERE id = 1')
|
|
1258
|
+
.get();
|
|
1259
|
+
if (row) {
|
|
1260
|
+
return {
|
|
1261
|
+
lastSyncAt: row.last_sync_at || 0,
|
|
1262
|
+
lastEpisodeSync: row.last_episode_sync || 0,
|
|
1263
|
+
lastSkillSync: row.last_skill_sync || 0,
|
|
1264
|
+
lastEdgeSync: row.last_edge_sync || 0,
|
|
1265
|
+
totalItemsSynced: row.total_items_synced || 0,
|
|
1266
|
+
totalBytesSynced: row.total_bytes_synced || 0,
|
|
1267
|
+
syncCount: row.sync_count || 0,
|
|
1268
|
+
lastError: row.last_error || undefined,
|
|
1269
|
+
};
|
|
1270
|
+
}
|
|
1271
|
+
}
|
|
1272
|
+
catch {
|
|
1273
|
+
// Table might not exist
|
|
1274
|
+
}
|
|
1275
|
+
return {
|
|
1276
|
+
lastSyncAt: 0,
|
|
1277
|
+
lastEpisodeSync: 0,
|
|
1278
|
+
lastSkillSync: 0,
|
|
1279
|
+
lastEdgeSync: 0,
|
|
1280
|
+
totalItemsSynced: 0,
|
|
1281
|
+
totalBytesSynced: 0,
|
|
1282
|
+
syncCount: 0,
|
|
1283
|
+
};
|
|
690
1284
|
}
|
|
691
1285
|
generateAuthToken() {
|
|
692
1286
|
// Generate a random 32-character token
|
|
@@ -747,6 +1341,14 @@ class AgentDBCLI {
|
|
|
747
1341
|
// ============================================================================
|
|
748
1342
|
// CLI Entry Point
|
|
749
1343
|
// ============================================================================
|
|
1344
|
+
/**
|
|
1345
|
+
* Helper function to execute Commander-based commands
|
|
1346
|
+
*/
|
|
1347
|
+
async function handleCommanderCommand(command, args) {
|
|
1348
|
+
// Parse directly using the command instance without wrapping in a parent program
|
|
1349
|
+
// This avoids issues with subcommand routing
|
|
1350
|
+
await command.parseAsync(['node', command.name(), ...args], { from: 'user' });
|
|
1351
|
+
}
|
|
750
1352
|
async function main() {
|
|
751
1353
|
const args = process.argv.slice(2);
|
|
752
1354
|
// Handle version flag
|
|
@@ -917,6 +1519,23 @@ async function main() {
|
|
|
917
1519
|
await handleStatsCommand(args.slice(1));
|
|
918
1520
|
return;
|
|
919
1521
|
}
|
|
1522
|
+
// Handle advanced neural commands (WASM-accelerated when available)
|
|
1523
|
+
if (command === 'attention') {
|
|
1524
|
+
await handleCommanderCommand(attentionCommand, args.slice(1));
|
|
1525
|
+
return;
|
|
1526
|
+
}
|
|
1527
|
+
if (command === 'learn') {
|
|
1528
|
+
await handleCommanderCommand(learnCommand, args.slice(1));
|
|
1529
|
+
return;
|
|
1530
|
+
}
|
|
1531
|
+
if (command === 'route') {
|
|
1532
|
+
await handleCommanderCommand(routeCommand, args.slice(1));
|
|
1533
|
+
return;
|
|
1534
|
+
}
|
|
1535
|
+
if (command === 'hyperbolic') {
|
|
1536
|
+
await handleCommanderCommand(hyperbolicCommand, args.slice(1));
|
|
1537
|
+
return;
|
|
1538
|
+
}
|
|
920
1539
|
// Handle simulate command - run simulation CLI
|
|
921
1540
|
if (command === 'simulate') {
|
|
922
1541
|
// Use pathToFileURL for proper ESM module resolution
|
|
@@ -1408,6 +2027,7 @@ async function handleSyncCommands(cli, subcommand, args) {
|
|
|
1408
2027
|
let cert;
|
|
1409
2028
|
let key;
|
|
1410
2029
|
let authToken;
|
|
2030
|
+
let maxConnections;
|
|
1411
2031
|
for (let i = 0; i < args.length; i++) {
|
|
1412
2032
|
if (args[i] === '--port' && i + 1 < args.length) {
|
|
1413
2033
|
port = parseInt(args[++i]);
|
|
@@ -1421,8 +2041,11 @@ async function handleSyncCommands(cli, subcommand, args) {
|
|
|
1421
2041
|
else if (args[i] === '--auth-token' && i + 1 < args.length) {
|
|
1422
2042
|
authToken = args[++i];
|
|
1423
2043
|
}
|
|
2044
|
+
else if (args[i] === '--max-connections' && i + 1 < args.length) {
|
|
2045
|
+
maxConnections = parseInt(args[++i]);
|
|
2046
|
+
}
|
|
1424
2047
|
}
|
|
1425
|
-
await cli.quicStartServer({ port, cert, key, authToken });
|
|
2048
|
+
await cli.quicStartServer({ port, cert, key, authToken, maxConnections });
|
|
1426
2049
|
}
|
|
1427
2050
|
else if (subcommand === 'connect') {
|
|
1428
2051
|
// Parse host and port
|
|
@@ -1430,11 +2053,12 @@ async function handleSyncCommands(cli, subcommand, args) {
|
|
|
1430
2053
|
const port = parseInt(args[1]);
|
|
1431
2054
|
if (!host || !port) {
|
|
1432
2055
|
log.error('Missing required arguments: host and port');
|
|
1433
|
-
log.info('Usage: agentdb sync connect <host> <port> [--auth-token <token>] [--cert <path>]');
|
|
2056
|
+
log.info('Usage: agentdb sync connect <host> <port> [--auth-token <token>] [--cert <path>] [--timeout <ms>]');
|
|
1434
2057
|
process.exit(1);
|
|
1435
2058
|
}
|
|
1436
2059
|
let authToken;
|
|
1437
2060
|
let cert;
|
|
2061
|
+
let timeout;
|
|
1438
2062
|
for (let i = 2; i < args.length; i++) {
|
|
1439
2063
|
if (args[i] === '--auth-token' && i + 1 < args.length) {
|
|
1440
2064
|
authToken = args[++i];
|
|
@@ -1442,14 +2066,19 @@ async function handleSyncCommands(cli, subcommand, args) {
|
|
|
1442
2066
|
else if (args[i] === '--cert' && i + 1 < args.length) {
|
|
1443
2067
|
cert = args[++i];
|
|
1444
2068
|
}
|
|
2069
|
+
else if (args[i] === '--timeout' && i + 1 < args.length) {
|
|
2070
|
+
timeout = parseInt(args[++i]);
|
|
2071
|
+
}
|
|
1445
2072
|
}
|
|
1446
|
-
await cli.quicConnect({ host, port, authToken, cert });
|
|
2073
|
+
await cli.quicConnect({ host, port, authToken, cert, timeout });
|
|
1447
2074
|
}
|
|
1448
2075
|
else if (subcommand === 'push') {
|
|
1449
2076
|
// Parse options
|
|
1450
2077
|
let server;
|
|
1451
2078
|
let incremental = false;
|
|
1452
2079
|
let filter;
|
|
2080
|
+
let authToken;
|
|
2081
|
+
let batchSize;
|
|
1453
2082
|
for (let i = 0; i < args.length; i++) {
|
|
1454
2083
|
if (args[i] === '--server' && i + 1 < args.length) {
|
|
1455
2084
|
server = args[++i];
|
|
@@ -1460,22 +2089,31 @@ async function handleSyncCommands(cli, subcommand, args) {
|
|
|
1460
2089
|
else if (args[i] === '--filter' && i + 1 < args.length) {
|
|
1461
2090
|
filter = args[++i];
|
|
1462
2091
|
}
|
|
2092
|
+
else if (args[i] === '--auth-token' && i + 1 < args.length) {
|
|
2093
|
+
authToken = args[++i];
|
|
2094
|
+
}
|
|
2095
|
+
else if (args[i] === '--batch-size' && i + 1 < args.length) {
|
|
2096
|
+
batchSize = parseInt(args[++i]);
|
|
2097
|
+
}
|
|
1463
2098
|
else if (!args[i].startsWith('--') && !server) {
|
|
1464
2099
|
server = args[i];
|
|
1465
2100
|
}
|
|
1466
2101
|
}
|
|
1467
2102
|
if (!server) {
|
|
1468
2103
|
log.error('Missing required --server parameter');
|
|
1469
|
-
log.info('Usage: agentdb sync push --server <host:port> [--incremental] [--filter <pattern>]');
|
|
2104
|
+
log.info('Usage: agentdb sync push --server <host:port> [--incremental] [--filter <pattern>] [--auth-token <token>] [--batch-size <n>]');
|
|
1470
2105
|
process.exit(1);
|
|
1471
2106
|
}
|
|
1472
|
-
await cli.quicPush({ server, incremental, filter });
|
|
2107
|
+
await cli.quicPush({ server, incremental, filter, authToken, batchSize });
|
|
1473
2108
|
}
|
|
1474
2109
|
else if (subcommand === 'pull') {
|
|
1475
2110
|
// Parse options
|
|
1476
2111
|
let server;
|
|
1477
2112
|
let incremental = false;
|
|
1478
2113
|
let filter;
|
|
2114
|
+
let authToken;
|
|
2115
|
+
let batchSize;
|
|
2116
|
+
let conflictStrategy;
|
|
1479
2117
|
for (let i = 0; i < args.length; i++) {
|
|
1480
2118
|
if (args[i] === '--server' && i + 1 < args.length) {
|
|
1481
2119
|
server = args[++i];
|
|
@@ -1486,16 +2124,31 @@ async function handleSyncCommands(cli, subcommand, args) {
|
|
|
1486
2124
|
else if (args[i] === '--filter' && i + 1 < args.length) {
|
|
1487
2125
|
filter = args[++i];
|
|
1488
2126
|
}
|
|
2127
|
+
else if (args[i] === '--auth-token' && i + 1 < args.length) {
|
|
2128
|
+
authToken = args[++i];
|
|
2129
|
+
}
|
|
2130
|
+
else if (args[i] === '--batch-size' && i + 1 < args.length) {
|
|
2131
|
+
batchSize = parseInt(args[++i]);
|
|
2132
|
+
}
|
|
2133
|
+
else if (args[i] === '--conflict-strategy' && i + 1 < args.length) {
|
|
2134
|
+
const strategy = args[++i];
|
|
2135
|
+
if (strategy === 'local-wins' || strategy === 'remote-wins' || strategy === 'latest-wins') {
|
|
2136
|
+
conflictStrategy = strategy;
|
|
2137
|
+
}
|
|
2138
|
+
else {
|
|
2139
|
+
log.warning(`Unknown conflict strategy: ${strategy}. Using default: latest-wins`);
|
|
2140
|
+
}
|
|
2141
|
+
}
|
|
1489
2142
|
else if (!args[i].startsWith('--') && !server) {
|
|
1490
2143
|
server = args[i];
|
|
1491
2144
|
}
|
|
1492
2145
|
}
|
|
1493
2146
|
if (!server) {
|
|
1494
2147
|
log.error('Missing required --server parameter');
|
|
1495
|
-
log.info('Usage: agentdb sync pull --server <host:port> [--incremental] [--filter <pattern>]');
|
|
2148
|
+
log.info('Usage: agentdb sync pull --server <host:port> [--incremental] [--filter <pattern>] [--auth-token <token>] [--batch-size <n>] [--conflict-strategy <local-wins|remote-wins|latest-wins>]');
|
|
1496
2149
|
process.exit(1);
|
|
1497
2150
|
}
|
|
1498
|
-
await cli.quicPull({ server, incremental, filter });
|
|
2151
|
+
await cli.quicPull({ server, incremental, filter, authToken, batchSize, conflictStrategy });
|
|
1499
2152
|
}
|
|
1500
2153
|
else if (subcommand === 'status') {
|
|
1501
2154
|
await cli.quicStatus();
|
|
@@ -1503,6 +2156,13 @@ async function handleSyncCommands(cli, subcommand, args) {
|
|
|
1503
2156
|
else {
|
|
1504
2157
|
log.error(`Unknown sync subcommand: ${subcommand}`);
|
|
1505
2158
|
log.info('Available subcommands: start-server, connect, push, pull, status');
|
|
2159
|
+
log.info('');
|
|
2160
|
+
log.info('Examples:');
|
|
2161
|
+
log.info(' agentdb sync start-server --port 4433 --auth-token secret123');
|
|
2162
|
+
log.info(' agentdb sync connect localhost 4433 --auth-token secret123');
|
|
2163
|
+
log.info(' agentdb sync push --server localhost:4433 --incremental');
|
|
2164
|
+
log.info(' agentdb sync pull --server localhost:4433 --conflict-strategy latest-wins');
|
|
2165
|
+
log.info(' agentdb sync status');
|
|
1506
2166
|
printHelp();
|
|
1507
2167
|
}
|
|
1508
2168
|
}
|
|
@@ -2243,6 +2903,55 @@ ${colors.bright}QUIC SYNC COMMANDS:${colors.reset}
|
|
|
2243
2903
|
Show synchronization status, pending changes, and connected servers
|
|
2244
2904
|
Example: agentdb sync status
|
|
2245
2905
|
|
|
2906
|
+
${colors.bright}ADVANCED NEURAL COMMANDS (WASM-ACCELERATED):${colors.reset}
|
|
2907
|
+
agentdb attention <subcommand> [options]
|
|
2908
|
+
Attention mechanism operations: flash, hyperbolic, sparse, MoE
|
|
2909
|
+
Subcommands:
|
|
2910
|
+
init --mechanism <type> Initialize attention configuration
|
|
2911
|
+
compute --query <text> Compute attention for query-key-value
|
|
2912
|
+
benchmark --all Benchmark all mechanisms
|
|
2913
|
+
optimize --mechanism <type> Optimize parameters
|
|
2914
|
+
Example: agentdb attention benchmark --all --iterations 100
|
|
2915
|
+
|
|
2916
|
+
agentdb learn --mode <type> --data <file> [options]
|
|
2917
|
+
Advanced learning: curriculum, contrastive loss, hard negative mining
|
|
2918
|
+
Modes:
|
|
2919
|
+
curriculum Progressive difficulty training with cosine/linear schedules
|
|
2920
|
+
contrastive InfoNCE and local contrastive loss training
|
|
2921
|
+
hard-negatives Hard negative mining for contrastive learning
|
|
2922
|
+
Options:
|
|
2923
|
+
--schedule <type> Difficulty schedule: linear|cosine|exponential
|
|
2924
|
+
--temperature <n> InfoNCE temperature (default: 0.07)
|
|
2925
|
+
--strategy <type> Mining strategy: hard|semi-hard|distance-based
|
|
2926
|
+
Example: agentdb learn --mode curriculum --data train.json --schedule cosine
|
|
2927
|
+
Example: agentdb learn --mode contrastive --data pairs.json --epochs 15
|
|
2928
|
+
|
|
2929
|
+
agentdb route --prompt <text> [options]
|
|
2930
|
+
LLM routing with FastGRNN model selection (haiku/sonnet/opus)
|
|
2931
|
+
Options:
|
|
2932
|
+
--prompt <text> Prompt to route
|
|
2933
|
+
--prompt-file <path> File containing prompt
|
|
2934
|
+
--context <json> Conversation context (JSON)
|
|
2935
|
+
--explain Explain routing decision
|
|
2936
|
+
Subcommands:
|
|
2937
|
+
feedback --model <type> --outcome <result> Record feedback for learning
|
|
2938
|
+
stats View routing statistics
|
|
2939
|
+
Example: agentdb route --prompt "Explain quantum computing" --explain
|
|
2940
|
+
Example: agentdb route feedback --model sonnet --outcome success
|
|
2941
|
+
|
|
2942
|
+
agentdb hyperbolic --op <type> [options]
|
|
2943
|
+
Hyperbolic space operations: Poincaré ball geometry
|
|
2944
|
+
Operations:
|
|
2945
|
+
expmap Exponential map (tangent -> manifold)
|
|
2946
|
+
logmap Logarithmic map (manifold -> tangent)
|
|
2947
|
+
mobius-add Möbius addition (hyperbolic addition)
|
|
2948
|
+
distance Poincaré distance between points
|
|
2949
|
+
project Project point to Poincaré ball
|
|
2950
|
+
centroid Compute hyperbolic centroid
|
|
2951
|
+
dual-search Hybrid Euclidean + Hyperbolic search
|
|
2952
|
+
Example: agentdb hyperbolic --op distance --point-a "[0.3,0.4]" --point-b "[0.6,0.2]"
|
|
2953
|
+
Example: agentdb hyperbolic --op dual-search --query "[0.5,0.5]" --points vectors.json
|
|
2954
|
+
|
|
2246
2955
|
${colors.bright}CAUSAL COMMANDS:${colors.reset}
|
|
2247
2956
|
agentdb causal add-edge <cause> <effect> <uplift> [confidence] [sample-size]
|
|
2248
2957
|
Add a causal edge manually
|