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
|
@@ -26,7 +26,7 @@ export interface Episode {
|
|
|
26
26
|
latencyMs?: number;
|
|
27
27
|
tokensUsed?: number;
|
|
28
28
|
tags?: string[];
|
|
29
|
-
metadata?: Record<string,
|
|
29
|
+
metadata?: Record<string, any>;
|
|
30
30
|
}
|
|
31
31
|
export interface EpisodeWithEmbedding extends Episode {
|
|
32
32
|
embedding?: Float32Array;
|
|
@@ -52,6 +52,13 @@ export declare class ReflexionMemory {
|
|
|
52
52
|
/**
|
|
53
53
|
* Store a new episode with its critique and outcome
|
|
54
54
|
* Invalidates relevant cache entries
|
|
55
|
+
*
|
|
56
|
+
* Persistence guarantee (issue #128 fix):
|
|
57
|
+
* storeEpisode() always writes to the SQLite `episodes` and
|
|
58
|
+
* `episode_embeddings` tables when a SQL-capable connection is present,
|
|
59
|
+
* even when a graph or vector backend handles the primary index. This
|
|
60
|
+
* ensures data survives process restarts (graph/vector backends are
|
|
61
|
+
* often in-memory or rebuildable from SQL).
|
|
55
62
|
*/
|
|
56
63
|
storeEpisode(episode: Episode): Promise<number>;
|
|
57
64
|
/**
|
|
@@ -193,5 +200,48 @@ export declare class ReflexionMemory {
|
|
|
193
200
|
* Warm cache with common queries
|
|
194
201
|
*/
|
|
195
202
|
warmCache(sessionId?: string): Promise<void>;
|
|
203
|
+
/**
|
|
204
|
+
* Delete an episode by id. Closes the gap from issue #150 (downstream:
|
|
205
|
+
* ruflo#1784, RuVector#427) — once an episode is written there was no
|
|
206
|
+
* first-class way to remove it through any backend.
|
|
207
|
+
*
|
|
208
|
+
* Strategy mirrors storeEpisode: when a graph backend is present we go
|
|
209
|
+
* through it (`graphAdapter.deleteNode` / `graphBackend.deleteNode` —
|
|
210
|
+
* both Cypher-backed under the hood), and we ALWAYS also purge the SQL
|
|
211
|
+
* `episodes` and `episode_embeddings` rows so durable storage stays in
|
|
212
|
+
* sync. Vector backend entries are removed too when present.
|
|
213
|
+
*
|
|
214
|
+
* @returns True if the episode existed in any backend and was removed.
|
|
215
|
+
*/
|
|
216
|
+
deleteEpisode(id: number | string): Promise<boolean>;
|
|
217
|
+
/**
|
|
218
|
+
* Dual-write helper for issue #128.
|
|
219
|
+
*
|
|
220
|
+
* Inserts the given episode into the SQLite `episodes` and
|
|
221
|
+
* `episode_embeddings` tables when the underlying connection supports it.
|
|
222
|
+
* Used when a graph or vector backend handles the primary index but the
|
|
223
|
+
* caller still wants restart-safe persistence.
|
|
224
|
+
*
|
|
225
|
+
* Errors are swallowed and logged — the primary write to the graph/vector
|
|
226
|
+
* backend has already succeeded, and we don't want to fail the caller if
|
|
227
|
+
* SQL persistence is unavailable (e.g. read-only DB, schema not present).
|
|
228
|
+
*/
|
|
229
|
+
private dualWriteEpisodeToSQL;
|
|
230
|
+
/**
|
|
231
|
+
* Rebuild the in-memory vector index from the SQLite `episodes` /
|
|
232
|
+
* `episode_embeddings` tables, going through the proper backend channels
|
|
233
|
+
* so `retrieveRelevant()` sees the data afterwards.
|
|
234
|
+
*
|
|
235
|
+
* Fixes the user's recovery use-case from issue #129: rather than calling
|
|
236
|
+
* `vectorBackend.getInner().insert()` directly (which bypasses the
|
|
237
|
+
* GuardedBackend wrapper and confuses retrieveRelevant), call this method
|
|
238
|
+
* to re-hydrate the vector and graph indices from durable storage.
|
|
239
|
+
*
|
|
240
|
+
* Returns the number of episodes re-indexed. No-ops cleanly when the SQL
|
|
241
|
+
* tables are empty or absent.
|
|
242
|
+
*/
|
|
243
|
+
rebuildIndex(options?: {
|
|
244
|
+
fromTimestamp?: number;
|
|
245
|
+
}): Promise<number>;
|
|
196
246
|
}
|
|
197
247
|
//# sourceMappingURL=ReflexionMemory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReflexionMemory.d.ts","sourceRoot":"","sources":["../../../src/controllers/ReflexionMemory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAgB,MAAM,4BAA4B,CAAC;AAEpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,6BAA6B,CAAC;AAG3E,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ReflexionMemory.d.ts","sourceRoot":"","sources":["../../../src/controllers/ReflexionMemory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAgB,MAAM,4BAA4B,CAAC;AAEpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,6BAA6B,CAAC;AAG3E,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAY1E,MAAM,WAAW,OAAO;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,oBAAqB,SAAQ,OAAO;IACnD,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAsB;IAChC,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,YAAY,CAAC,CAAe;IACpC,OAAO,CAAC,UAAU,CAAa;gBAG7B,EAAE,EAAE,mBAAmB,EACvB,QAAQ,EAAE,gBAAgB,EAC1B,aAAa,CAAC,EAAE,aAAa,EAC7B,eAAe,CAAC,EAAE,eAAe,EACjC,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,gBAAgB;IAUhC;;;;;;;;;;OAUG;IACG,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAkJrD;;;OAGG;IACG,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IA4C9E;;OAEG;YACW,qBAAqB;IAgBnC;;OAEG;YACW,wBAAwB;IAsBtC;;OAEG;YACW,wBAAwB;IAatC;;OAEG;YACW,yBAAyB;IA0CvC;;OAEG;YACW,uBAAuB;IA6BrC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmB3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACH,OAAO,CAAC,eAAe;IA2BvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAwB9B;;OAEG;IACH,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,MAAM,GACtB;QACD,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;KAC1B;IA0ED;;OAEG;IACG,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAkChE;;OAEG;IACG,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAqClE;;OAEG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA2BlF;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,MAAM;IAmCV,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;YACW,sBAAsB;IA4EpC;;OAEG;YACW,mBAAmB;IAoDjC;;OAEG;IACG,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QACxD,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;IA4BF;;OAEG;IACG,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB5D;;OAEG;IACH,gBAAgB;IAOhB;;OAEG;IACH,aAAa;IAOb;;OAEG;IACH,aAAa;IAIb;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACG,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlD;;;;;;;;;;;;OAYG;IACG,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgF1D;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,qBAAqB;IAwC7B;;;;;;;;;;;;OAYG;IACG,YAAY,CAAC,OAAO,GAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CAwG9E"}
|
|
@@ -10,7 +10,17 @@
|
|
|
10
10
|
import { normalizeRowId } from '../types/database.types.js';
|
|
11
11
|
import { NodeIdMapper } from '../utils/NodeIdMapper.js';
|
|
12
12
|
import { QueryCache } from '../core/QueryCache.js';
|
|
13
|
-
|
|
13
|
+
/** Parse JSON from DB row values without throwing on malformed data. */
|
|
14
|
+
function safeJsonParse(value, fallback) {
|
|
15
|
+
if (!value)
|
|
16
|
+
return fallback;
|
|
17
|
+
try {
|
|
18
|
+
return JSON.parse(value);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return fallback;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
14
24
|
export class ReflexionMemory {
|
|
15
25
|
db;
|
|
16
26
|
embedder;
|
|
@@ -29,6 +39,13 @@ export class ReflexionMemory {
|
|
|
29
39
|
/**
|
|
30
40
|
* Store a new episode with its critique and outcome
|
|
31
41
|
* Invalidates relevant cache entries
|
|
42
|
+
*
|
|
43
|
+
* Persistence guarantee (issue #128 fix):
|
|
44
|
+
* storeEpisode() always writes to the SQLite `episodes` and
|
|
45
|
+
* `episode_embeddings` tables when a SQL-capable connection is present,
|
|
46
|
+
* even when a graph or vector backend handles the primary index. This
|
|
47
|
+
* ensures data survives process restarts (graph/vector backends are
|
|
48
|
+
* often in-memory or rebuildable from SQL).
|
|
32
49
|
*/
|
|
33
50
|
async storeEpisode(episode) {
|
|
34
51
|
// Invalidate episode caches on write
|
|
@@ -39,7 +56,7 @@ export class ReflexionMemory {
|
|
|
39
56
|
// GraphDatabaseAdapter has specialized storeEpisode method
|
|
40
57
|
const graphAdapter = this.graphBackend;
|
|
41
58
|
// Generate embedding for the task
|
|
42
|
-
const taskEmbedding = await this.embedder.
|
|
59
|
+
const taskEmbedding = await this.embedder.embedPassage(episode.task);
|
|
43
60
|
// Create episode node using GraphDatabaseAdapter
|
|
44
61
|
const nodeId = await graphAdapter.storeEpisode({
|
|
45
62
|
id: episode.id ? `episode-${episode.id}` : `episode-${Date.now()}-${Math.random()}`,
|
|
@@ -58,12 +75,15 @@ export class ReflexionMemory {
|
|
|
58
75
|
const numericId = parseInt(nodeId.split('-').pop() || '0', 36);
|
|
59
76
|
// Register mapping for later use by CausalMemoryGraph
|
|
60
77
|
NodeIdMapper.getInstance().register(numericId, nodeId);
|
|
78
|
+
// #128: dual-write to SQL for restart-safe persistence. Graph adapter
|
|
79
|
+
// index is typically in-memory; SQL is the durable record.
|
|
80
|
+
this.dualWriteEpisodeToSQL(episode, taskEmbedding);
|
|
61
81
|
return numericId;
|
|
62
82
|
}
|
|
63
83
|
// Use generic GraphBackend if available
|
|
64
84
|
if (this.graphBackend) {
|
|
65
85
|
// Generate embedding for the task
|
|
66
|
-
const taskEmbedding = await this.embedder.
|
|
86
|
+
const taskEmbedding = await this.embedder.embedPassage(episode.task);
|
|
67
87
|
// Create episode node ID
|
|
68
88
|
const nodeId = await this.graphBackend.createNode(['Episode'], {
|
|
69
89
|
sessionId: episode.sessionId,
|
|
@@ -90,6 +110,8 @@ export class ReflexionMemory {
|
|
|
90
110
|
const numericId = parseInt(nodeId.split('-').pop() || '0', 36);
|
|
91
111
|
// Register mapping for later use by CausalMemoryGraph
|
|
92
112
|
NodeIdMapper.getInstance().register(numericId, nodeId);
|
|
113
|
+
// #128: dual-write to SQL for restart-safe persistence.
|
|
114
|
+
this.dualWriteEpisodeToSQL(episode, taskEmbedding);
|
|
93
115
|
return numericId;
|
|
94
116
|
}
|
|
95
117
|
// Fallback to SQLite (v1 compatibility)
|
|
@@ -105,7 +127,7 @@ export class ReflexionMemory {
|
|
|
105
127
|
const episodeId = normalizeRowId(result.lastInsertRowid);
|
|
106
128
|
// Generate and store embedding
|
|
107
129
|
const text = this.buildEpisodeText(episode);
|
|
108
|
-
const embedding = await this.embedder.
|
|
130
|
+
const embedding = await this.embedder.embedPassage(text);
|
|
109
131
|
// Use vector backend if available (150x faster retrieval)
|
|
110
132
|
if (this.vectorBackend) {
|
|
111
133
|
this.vectorBackend.insert(episodeId.toString(), embedding);
|
|
@@ -169,7 +191,7 @@ export class ReflexionMemory {
|
|
|
169
191
|
*/
|
|
170
192
|
async prepareQueryEmbedding(task, currentState, k) {
|
|
171
193
|
const queryText = currentState ? `${task}\n${currentState}` : task;
|
|
172
|
-
let queryEmbedding = await this.embedder.
|
|
194
|
+
let queryEmbedding = await this.embedder.embedQuery(queryText);
|
|
173
195
|
// Enhance query with GNN if learning backend available
|
|
174
196
|
if (this.learningBackend) {
|
|
175
197
|
queryEmbedding = await this.enhanceQueryWithGNN(queryEmbedding, k);
|
|
@@ -184,9 +206,8 @@ export class ReflexionMemory {
|
|
|
184
206
|
const graphAdapter = this.graphBackend;
|
|
185
207
|
// Search using vector similarity
|
|
186
208
|
const results = await graphAdapter.searchSimilarEpisodes(queryEmbedding, k * 3);
|
|
187
|
-
// Apply filters
|
|
188
|
-
const
|
|
189
|
-
const filtered = this.applyEpisodeFilters(typedResults, {
|
|
209
|
+
// Apply filters
|
|
210
|
+
const filtered = this.applyEpisodeFilters(results, {
|
|
190
211
|
minReward,
|
|
191
212
|
onlyFailures,
|
|
192
213
|
onlySuccesses,
|
|
@@ -371,25 +392,24 @@ export class ReflexionMemory {
|
|
|
371
392
|
* Convert Cypher query result to EpisodeWithEmbedding
|
|
372
393
|
*/
|
|
373
394
|
convertCypherEpisode(node) {
|
|
374
|
-
const props = node.properties;
|
|
375
395
|
return {
|
|
376
396
|
id: parseInt(node.id.split('-').pop() || '0', 36),
|
|
377
|
-
sessionId:
|
|
378
|
-
task:
|
|
379
|
-
input:
|
|
380
|
-
output:
|
|
381
|
-
critique:
|
|
382
|
-
reward: typeof
|
|
383
|
-
? parseFloat(
|
|
384
|
-
:
|
|
385
|
-
success: typeof
|
|
386
|
-
?
|
|
387
|
-
:
|
|
388
|
-
latencyMs:
|
|
389
|
-
tokensUsed:
|
|
390
|
-
tags:
|
|
391
|
-
metadata:
|
|
392
|
-
ts: Math.floor(
|
|
397
|
+
sessionId: node.properties.sessionId,
|
|
398
|
+
task: node.properties.task,
|
|
399
|
+
input: node.properties.input,
|
|
400
|
+
output: node.properties.output,
|
|
401
|
+
critique: node.properties.critique,
|
|
402
|
+
reward: typeof node.properties.reward === 'string'
|
|
403
|
+
? parseFloat(node.properties.reward)
|
|
404
|
+
: node.properties.reward,
|
|
405
|
+
success: typeof node.properties.success === 'string'
|
|
406
|
+
? node.properties.success === 'true'
|
|
407
|
+
: node.properties.success,
|
|
408
|
+
latencyMs: node.properties.latencyMs,
|
|
409
|
+
tokensUsed: node.properties.tokensUsed,
|
|
410
|
+
tags: safeJsonParse(node.properties.tags, []),
|
|
411
|
+
metadata: safeJsonParse(node.properties.metadata, {}),
|
|
412
|
+
ts: Math.floor(node.properties.createdAt / 1000),
|
|
393
413
|
};
|
|
394
414
|
}
|
|
395
415
|
/**
|
|
@@ -408,8 +428,8 @@ export class ReflexionMemory {
|
|
|
408
428
|
success: row.success === 1,
|
|
409
429
|
latencyMs: row.latency_ms ?? undefined,
|
|
410
430
|
tokensUsed: row.tokens_used ?? undefined,
|
|
411
|
-
tags:
|
|
412
|
-
metadata:
|
|
431
|
+
tags: safeJsonParse(row.tags, undefined),
|
|
432
|
+
metadata: safeJsonParse(row.metadata, undefined),
|
|
413
433
|
embedding,
|
|
414
434
|
similarity,
|
|
415
435
|
};
|
|
@@ -450,7 +470,7 @@ export class ReflexionMemory {
|
|
|
450
470
|
WHERE task = ? ${windowFilter}
|
|
451
471
|
`);
|
|
452
472
|
const trend = trendStmt.get(task);
|
|
453
|
-
const improvementTrend = trend
|
|
473
|
+
const improvementTrend = trend.recent_reward && trend.older_reward
|
|
454
474
|
? (trend.recent_reward - trend.older_reward) / trend.older_reward
|
|
455
475
|
: 0;
|
|
456
476
|
const results = {
|
|
@@ -544,8 +564,8 @@ export class ReflexionMemory {
|
|
|
544
564
|
success: row.success === 1,
|
|
545
565
|
latencyMs: row.latency_ms ?? undefined,
|
|
546
566
|
tokensUsed: row.tokens_used ?? undefined,
|
|
547
|
-
tags:
|
|
548
|
-
metadata:
|
|
567
|
+
tags: safeJsonParse(row.tags, undefined),
|
|
568
|
+
metadata: safeJsonParse(row.metadata, undefined),
|
|
549
569
|
}));
|
|
550
570
|
}
|
|
551
571
|
/**
|
|
@@ -607,7 +627,15 @@ export class ReflexionMemory {
|
|
|
607
627
|
return new Float32Array(buffer.buffer, buffer.byteOffset, buffer.length / 4);
|
|
608
628
|
}
|
|
609
629
|
cosineSimilarity(a, b) {
|
|
610
|
-
|
|
630
|
+
let dotProduct = 0;
|
|
631
|
+
let normA = 0;
|
|
632
|
+
let normB = 0;
|
|
633
|
+
for (let i = 0; i < a.length; i++) {
|
|
634
|
+
dotProduct += a[i] * b[i];
|
|
635
|
+
normA += a[i] * a[i];
|
|
636
|
+
normB += b[i] * b[i];
|
|
637
|
+
}
|
|
638
|
+
return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
611
639
|
}
|
|
612
640
|
// ========================================================================
|
|
613
641
|
// GNN and Graph Integration Methods
|
|
@@ -799,13 +827,259 @@ export class ReflexionMemory {
|
|
|
799
827
|
* Warm cache with common queries
|
|
800
828
|
*/
|
|
801
829
|
async warmCache(sessionId) {
|
|
802
|
-
await this.queryCache.warm(async (
|
|
830
|
+
await this.queryCache.warm(async (cache) => {
|
|
803
831
|
// Warm cache with recent sessions if sessionId provided
|
|
804
832
|
if (sessionId) {
|
|
805
|
-
await this.getRecentEpisodes(sessionId, 10);
|
|
833
|
+
const recent = await this.getRecentEpisodes(sessionId, 10);
|
|
806
834
|
// Episodes are already loaded, cache will be populated on next access
|
|
807
835
|
}
|
|
808
836
|
});
|
|
809
837
|
}
|
|
838
|
+
/**
|
|
839
|
+
* Delete an episode by id. Closes the gap from issue #150 (downstream:
|
|
840
|
+
* ruflo#1784, RuVector#427) — once an episode is written there was no
|
|
841
|
+
* first-class way to remove it through any backend.
|
|
842
|
+
*
|
|
843
|
+
* Strategy mirrors storeEpisode: when a graph backend is present we go
|
|
844
|
+
* through it (`graphAdapter.deleteNode` / `graphBackend.deleteNode` —
|
|
845
|
+
* both Cypher-backed under the hood), and we ALWAYS also purge the SQL
|
|
846
|
+
* `episodes` and `episode_embeddings` rows so durable storage stays in
|
|
847
|
+
* sync. Vector backend entries are removed too when present.
|
|
848
|
+
*
|
|
849
|
+
* @returns True if the episode existed in any backend and was removed.
|
|
850
|
+
*/
|
|
851
|
+
async deleteEpisode(id) {
|
|
852
|
+
const numericId = typeof id === 'number' ? id : parseInt(String(id), 10);
|
|
853
|
+
const stringId = String(id);
|
|
854
|
+
// Invalidate caches up front — failures below shouldn't leave stale reads.
|
|
855
|
+
this.queryCache.invalidateCategory('episodes');
|
|
856
|
+
this.queryCache.invalidateCategory('task-stats');
|
|
857
|
+
let removed = false;
|
|
858
|
+
// 1. Graph adapter (AgentDB v2 fast path)
|
|
859
|
+
if (this.graphBackend && 'storeEpisode' in this.graphBackend) {
|
|
860
|
+
const adapter = this.graphBackend;
|
|
861
|
+
if (typeof adapter.deleteNode === 'function') {
|
|
862
|
+
try {
|
|
863
|
+
// Adapter accepts either the canonical "episode-<id>" key or a raw
|
|
864
|
+
// id; try the canonical form first since that's what storeEpisode
|
|
865
|
+
// emits.
|
|
866
|
+
const r = await adapter.deleteNode(`episode-${numericId}`, { cascade: true });
|
|
867
|
+
if (r?.deletedNode)
|
|
868
|
+
removed = true;
|
|
869
|
+
if (!removed) {
|
|
870
|
+
const r2 = await adapter.deleteNode(stringId, { cascade: true });
|
|
871
|
+
if (r2?.deletedNode)
|
|
872
|
+
removed = true;
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
catch (err) {
|
|
876
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
877
|
+
// eslint-disable-next-line no-console
|
|
878
|
+
console.warn(`[ReflexionMemory] deleteEpisode: graph adapter delete failed: ${msg}`);
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
// 2. Generic graph backend
|
|
883
|
+
else if (this.graphBackend && typeof this.graphBackend.deleteNode === 'function') {
|
|
884
|
+
try {
|
|
885
|
+
const r = await this.graphBackend.deleteNode(stringId);
|
|
886
|
+
if (r === true)
|
|
887
|
+
removed = true;
|
|
888
|
+
}
|
|
889
|
+
catch (err) {
|
|
890
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
891
|
+
// eslint-disable-next-line no-console
|
|
892
|
+
console.warn(`[ReflexionMemory] deleteEpisode: graph backend delete failed: ${msg}`);
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
// 3. Vector backend (HNSW/RuVector); some implementations don't expose
|
|
896
|
+
// delete — guard with a feature check.
|
|
897
|
+
if (this.vectorBackend && typeof this.vectorBackend.delete === 'function') {
|
|
898
|
+
try {
|
|
899
|
+
const r = await this.vectorBackend.delete(String(numericId));
|
|
900
|
+
if (r === true)
|
|
901
|
+
removed = true;
|
|
902
|
+
}
|
|
903
|
+
catch (err) {
|
|
904
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
905
|
+
// eslint-disable-next-line no-console
|
|
906
|
+
console.warn(`[ReflexionMemory] deleteEpisode: vector backend delete failed: ${msg}`);
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
// 4. SQL durable storage — always attempt so persistence stays clean
|
|
910
|
+
// even when the primary backend was a no-op.
|
|
911
|
+
if (this.db && typeof this.db.prepare === 'function' && Number.isFinite(numericId)) {
|
|
912
|
+
try {
|
|
913
|
+
const embStmt = this.db.prepare(`DELETE FROM episode_embeddings WHERE episode_id = ?`);
|
|
914
|
+
embStmt.run(numericId);
|
|
915
|
+
const stmt = this.db.prepare(`DELETE FROM episodes WHERE id = ?`);
|
|
916
|
+
const r = stmt.run(numericId);
|
|
917
|
+
const changes = r?.changes ?? 0;
|
|
918
|
+
if (changes > 0)
|
|
919
|
+
removed = true;
|
|
920
|
+
}
|
|
921
|
+
catch (err) {
|
|
922
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
923
|
+
if (!/no such table/i.test(msg)) {
|
|
924
|
+
// eslint-disable-next-line no-console
|
|
925
|
+
console.warn(`[ReflexionMemory] deleteEpisode: SQL delete failed: ${msg}`);
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
return removed;
|
|
930
|
+
}
|
|
931
|
+
/**
|
|
932
|
+
* Dual-write helper for issue #128.
|
|
933
|
+
*
|
|
934
|
+
* Inserts the given episode into the SQLite `episodes` and
|
|
935
|
+
* `episode_embeddings` tables when the underlying connection supports it.
|
|
936
|
+
* Used when a graph or vector backend handles the primary index but the
|
|
937
|
+
* caller still wants restart-safe persistence.
|
|
938
|
+
*
|
|
939
|
+
* Errors are swallowed and logged — the primary write to the graph/vector
|
|
940
|
+
* backend has already succeeded, and we don't want to fail the caller if
|
|
941
|
+
* SQL persistence is unavailable (e.g. read-only DB, schema not present).
|
|
942
|
+
*/
|
|
943
|
+
dualWriteEpisodeToSQL(episode, embedding) {
|
|
944
|
+
if (!this.db || typeof this.db.prepare !== 'function')
|
|
945
|
+
return;
|
|
946
|
+
try {
|
|
947
|
+
const stmt = this.db.prepare(`
|
|
948
|
+
INSERT INTO episodes (
|
|
949
|
+
session_id, task, input, output, critique, reward, success,
|
|
950
|
+
latency_ms, tokens_used, tags, metadata
|
|
951
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
952
|
+
`);
|
|
953
|
+
const tags = episode.tags ? JSON.stringify(episode.tags) : null;
|
|
954
|
+
const metadata = episode.metadata ? JSON.stringify(episode.metadata) : null;
|
|
955
|
+
const result = stmt.run(episode.sessionId, episode.task, episode.input ?? null, episode.output ?? null, episode.critique ?? null, episode.reward, episode.success ? 1 : 0, episode.latencyMs ?? null, episode.tokensUsed ?? null, tags, metadata);
|
|
956
|
+
if (embedding) {
|
|
957
|
+
const episodeId = normalizeRowId(result.lastInsertRowid);
|
|
958
|
+
this.storeEmbedding(episodeId, embedding);
|
|
959
|
+
}
|
|
960
|
+
}
|
|
961
|
+
catch (err) {
|
|
962
|
+
// The expected failure here is "no such table: episodes" on databases
|
|
963
|
+
// that intentionally don't carry the v1 schema. Don't escalate — the
|
|
964
|
+
// primary backend already has the data.
|
|
965
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
966
|
+
if (!/no such table/i.test(msg)) {
|
|
967
|
+
// eslint-disable-next-line no-console
|
|
968
|
+
console.warn('[ReflexionMemory] dualWriteEpisodeToSQL failed:', msg);
|
|
969
|
+
}
|
|
970
|
+
}
|
|
971
|
+
}
|
|
972
|
+
/**
|
|
973
|
+
* Rebuild the in-memory vector index from the SQLite `episodes` /
|
|
974
|
+
* `episode_embeddings` tables, going through the proper backend channels
|
|
975
|
+
* so `retrieveRelevant()` sees the data afterwards.
|
|
976
|
+
*
|
|
977
|
+
* Fixes the user's recovery use-case from issue #129: rather than calling
|
|
978
|
+
* `vectorBackend.getInner().insert()` directly (which bypasses the
|
|
979
|
+
* GuardedBackend wrapper and confuses retrieveRelevant), call this method
|
|
980
|
+
* to re-hydrate the vector and graph indices from durable storage.
|
|
981
|
+
*
|
|
982
|
+
* Returns the number of episodes re-indexed. No-ops cleanly when the SQL
|
|
983
|
+
* tables are empty or absent.
|
|
984
|
+
*/
|
|
985
|
+
async rebuildIndex(options = {}) {
|
|
986
|
+
if (!this.db || typeof this.db.prepare !== 'function')
|
|
987
|
+
return 0;
|
|
988
|
+
const where = options.fromTimestamp !== undefined ? 'WHERE e.ts >= ?' : '';
|
|
989
|
+
const params = options.fromTimestamp !== undefined ? [options.fromTimestamp] : [];
|
|
990
|
+
let rows = [];
|
|
991
|
+
try {
|
|
992
|
+
const stmt = this.db.prepare(`
|
|
993
|
+
SELECT
|
|
994
|
+
e.id, e.ts, e.session_id, e.task, e.input, e.output, e.critique,
|
|
995
|
+
e.reward, e.success, e.latency_ms, e.tokens_used, e.tags, e.metadata,
|
|
996
|
+
ee.embedding
|
|
997
|
+
FROM episodes e
|
|
998
|
+
LEFT JOIN episode_embeddings ee ON ee.episode_id = e.id
|
|
999
|
+
${where}
|
|
1000
|
+
ORDER BY e.id ASC
|
|
1001
|
+
`);
|
|
1002
|
+
rows = stmt.all(...params);
|
|
1003
|
+
}
|
|
1004
|
+
catch (err) {
|
|
1005
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
1006
|
+
if (/no such table/i.test(msg))
|
|
1007
|
+
return 0;
|
|
1008
|
+
throw err;
|
|
1009
|
+
}
|
|
1010
|
+
let reindexed = 0;
|
|
1011
|
+
for (const row of rows) {
|
|
1012
|
+
const episode = {
|
|
1013
|
+
id: row.id,
|
|
1014
|
+
ts: row.ts,
|
|
1015
|
+
sessionId: row.session_id,
|
|
1016
|
+
task: row.task,
|
|
1017
|
+
input: row.input ?? undefined,
|
|
1018
|
+
output: row.output ?? undefined,
|
|
1019
|
+
critique: row.critique ?? undefined,
|
|
1020
|
+
reward: row.reward,
|
|
1021
|
+
success: row.success === 1,
|
|
1022
|
+
latencyMs: row.latency_ms ?? undefined,
|
|
1023
|
+
tokensUsed: row.tokens_used ?? undefined,
|
|
1024
|
+
tags: safeJsonParse(row.tags, undefined),
|
|
1025
|
+
metadata: safeJsonParse(row.metadata, undefined),
|
|
1026
|
+
};
|
|
1027
|
+
// Prefer the stored embedding; fall back to recomputing if missing.
|
|
1028
|
+
let embedding;
|
|
1029
|
+
if (row.embedding) {
|
|
1030
|
+
const buf = row.embedding;
|
|
1031
|
+
embedding = new Float32Array(buf.buffer, buf.byteOffset, buf.length / 4);
|
|
1032
|
+
}
|
|
1033
|
+
else {
|
|
1034
|
+
embedding = await this.embedder.embedPassage(this.buildEpisodeText(episode));
|
|
1035
|
+
}
|
|
1036
|
+
// Re-insert through the proper public APIs so the GuardedBackend
|
|
1037
|
+
// wrapper, graph adapter, and HNSW all stay in sync.
|
|
1038
|
+
if (this.vectorBackend) {
|
|
1039
|
+
try {
|
|
1040
|
+
this.vectorBackend.insert(String(row.id), embedding, {
|
|
1041
|
+
type: 'episode',
|
|
1042
|
+
sessionId: episode.sessionId,
|
|
1043
|
+
reward: episode.reward,
|
|
1044
|
+
success: episode.success,
|
|
1045
|
+
});
|
|
1046
|
+
}
|
|
1047
|
+
catch (err) {
|
|
1048
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
1049
|
+
// eslint-disable-next-line no-console
|
|
1050
|
+
console.warn(`[ReflexionMemory] rebuildIndex: vector insert failed for ${row.id}: ${msg}`);
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
1053
|
+
if (this.graphBackend && 'storeEpisode' in this.graphBackend) {
|
|
1054
|
+
const adapter = this.graphBackend;
|
|
1055
|
+
try {
|
|
1056
|
+
await adapter.storeEpisode({
|
|
1057
|
+
id: `episode-${row.id}`,
|
|
1058
|
+
sessionId: episode.sessionId,
|
|
1059
|
+
task: episode.task,
|
|
1060
|
+
reward: episode.reward,
|
|
1061
|
+
success: episode.success,
|
|
1062
|
+
input: episode.input,
|
|
1063
|
+
output: episode.output,
|
|
1064
|
+
critique: episode.critique,
|
|
1065
|
+
createdAt: (episode.ts ?? Date.now() / 1000) * 1000,
|
|
1066
|
+
tokensUsed: episode.tokensUsed,
|
|
1067
|
+
latencyMs: episode.latencyMs,
|
|
1068
|
+
}, embedding);
|
|
1069
|
+
}
|
|
1070
|
+
catch (err) {
|
|
1071
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
1072
|
+
// eslint-disable-next-line no-console
|
|
1073
|
+
console.warn(`[ReflexionMemory] rebuildIndex: graph store failed for ${row.id}: ${msg}`);
|
|
1074
|
+
}
|
|
1075
|
+
}
|
|
1076
|
+
reindexed++;
|
|
1077
|
+
}
|
|
1078
|
+
// Bust any stale read caches so the next retrieveRelevant sees the
|
|
1079
|
+
// freshly-rebuilt index.
|
|
1080
|
+
this.queryCache.invalidateCategory('episodes');
|
|
1081
|
+
this.queryCache.invalidateCategory('task-stats');
|
|
1082
|
+
return reindexed;
|
|
1083
|
+
}
|
|
810
1084
|
}
|
|
811
1085
|
//# sourceMappingURL=ReflexionMemory.js.map
|