agentic-qe 2.5.9 → 2.6.0
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/.claude/agents/qe-code-intelligence.md +359 -0
- package/CHANGELOG.md +136 -0
- package/README.md +4 -3
- package/dist/agents/BaseAgent.d.ts +167 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +414 -0
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/CodeIntelligenceAgent.d.ts +133 -0
- package/dist/agents/CodeIntelligenceAgent.d.ts.map +1 -0
- package/dist/agents/CodeIntelligenceAgent.js +473 -0
- package/dist/agents/CodeIntelligenceAgent.js.map +1 -0
- package/dist/agents/FlakyTestHunterAgent.d.ts +15 -0
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +93 -0
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/SecurityScannerAgent.d.ts +19 -0
- package/dist/agents/SecurityScannerAgent.d.ts.map +1 -1
- package/dist/agents/SecurityScannerAgent.js +137 -0
- package/dist/agents/SecurityScannerAgent.js.map +1 -1
- package/dist/agents/context/ContextCache.d.ts +105 -0
- package/dist/agents/context/ContextCache.d.ts.map +1 -0
- package/dist/agents/context/ContextCache.js +235 -0
- package/dist/agents/context/ContextCache.js.map +1 -0
- package/dist/agents/context/ContextFormatter.d.ts +92 -0
- package/dist/agents/context/ContextFormatter.d.ts.map +1 -0
- package/dist/agents/context/ContextFormatter.js +338 -0
- package/dist/agents/context/ContextFormatter.js.map +1 -0
- package/dist/agents/context/GraphExpander.d.ts +87 -0
- package/dist/agents/context/GraphExpander.d.ts.map +1 -0
- package/dist/agents/context/GraphExpander.js +215 -0
- package/dist/agents/context/GraphExpander.js.map +1 -0
- package/dist/agents/context/KnowledgeGraphContextBuilder.d.ts +160 -0
- package/dist/agents/context/KnowledgeGraphContextBuilder.d.ts.map +1 -0
- package/dist/agents/context/KnowledgeGraphContextBuilder.js +300 -0
- package/dist/agents/context/KnowledgeGraphContextBuilder.js.map +1 -0
- package/dist/agents/context/index.d.ts +15 -0
- package/dist/agents/context/index.d.ts.map +1 -0
- package/dist/agents/context/index.js +18 -0
- package/dist/agents/context/index.js.map +1 -0
- package/dist/agents/index.d.ts +1 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +67 -3
- package/dist/agents/index.js.map +1 -1
- package/dist/cli/commands/knowledge-graph.d.ts +112 -0
- package/dist/cli/commands/knowledge-graph.d.ts.map +1 -0
- package/dist/cli/commands/knowledge-graph.js +466 -0
- package/dist/cli/commands/knowledge-graph.js.map +1 -0
- package/dist/cli/commands/ruvector/index.d.ts +13 -0
- package/dist/cli/commands/ruvector/index.d.ts.map +1 -0
- package/dist/cli/commands/ruvector/index.js +308 -0
- package/dist/cli/commands/ruvector/index.js.map +1 -0
- package/dist/cli/formatters/KGOutputFormatter.d.ts +50 -0
- package/dist/cli/formatters/KGOutputFormatter.d.ts.map +1 -0
- package/dist/cli/formatters/KGOutputFormatter.js +237 -0
- package/dist/cli/formatters/KGOutputFormatter.js.map +1 -0
- package/dist/cli/index-working.js +138 -0
- package/dist/cli/index-working.js.map +1 -1
- package/dist/cli/index.js +5 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/claude-config.d.ts +13 -1
- package/dist/cli/init/claude-config.d.ts.map +1 -1
- package/dist/cli/init/claude-config.js +70 -8
- package/dist/cli/init/claude-config.js.map +1 -1
- package/dist/cli/init/code-intelligence-init.d.ts +52 -0
- package/dist/cli/init/code-intelligence-init.d.ts.map +1 -0
- package/dist/cli/init/code-intelligence-init.js +250 -0
- package/dist/cli/init/code-intelligence-init.js.map +1 -0
- package/dist/cli/init/index.d.ts +2 -2
- package/dist/cli/init/index.d.ts.map +1 -1
- package/dist/cli/init/index.js +21 -1
- package/dist/cli/init/index.js.map +1 -1
- package/dist/code-intelligence/chunking/ASTChunker.d.ts +64 -0
- package/dist/code-intelligence/chunking/ASTChunker.d.ts.map +1 -0
- package/dist/code-intelligence/chunking/ASTChunker.js +344 -0
- package/dist/code-intelligence/chunking/ASTChunker.js.map +1 -0
- package/dist/code-intelligence/chunking/ChunkSplitter.d.ts +48 -0
- package/dist/code-intelligence/chunking/ChunkSplitter.d.ts.map +1 -0
- package/dist/code-intelligence/chunking/ChunkSplitter.js +278 -0
- package/dist/code-intelligence/chunking/ChunkSplitter.js.map +1 -0
- package/dist/code-intelligence/chunking/index.d.ts +8 -0
- package/dist/code-intelligence/chunking/index.d.ts.map +1 -0
- package/dist/code-intelligence/chunking/index.js +13 -0
- package/dist/code-intelligence/chunking/index.js.map +1 -0
- package/dist/code-intelligence/chunking/types.d.ts +52 -0
- package/dist/code-intelligence/chunking/types.d.ts.map +1 -0
- package/dist/code-intelligence/chunking/types.js +6 -0
- package/dist/code-intelligence/chunking/types.js.map +1 -0
- package/dist/code-intelligence/config/database-schema.d.ts +245 -0
- package/dist/code-intelligence/config/database-schema.d.ts.map +1 -0
- package/dist/code-intelligence/config/database-schema.js +110 -0
- package/dist/code-intelligence/config/database-schema.js.map +1 -0
- package/dist/code-intelligence/config/environment.d.ts +53 -0
- package/dist/code-intelligence/config/environment.d.ts.map +1 -0
- package/dist/code-intelligence/config/environment.js +86 -0
- package/dist/code-intelligence/config/environment.js.map +1 -0
- package/dist/code-intelligence/config/index.d.ts +10 -0
- package/dist/code-intelligence/config/index.d.ts.map +1 -0
- package/dist/code-intelligence/config/index.js +36 -0
- package/dist/code-intelligence/config/index.js.map +1 -0
- package/dist/code-intelligence/embeddings/EmbeddingCache.d.ts +81 -0
- package/dist/code-intelligence/embeddings/EmbeddingCache.d.ts.map +1 -0
- package/dist/code-intelligence/embeddings/EmbeddingCache.js +168 -0
- package/dist/code-intelligence/embeddings/EmbeddingCache.js.map +1 -0
- package/dist/code-intelligence/embeddings/NomicEmbedder.d.ts +82 -0
- package/dist/code-intelligence/embeddings/NomicEmbedder.d.ts.map +1 -0
- package/dist/code-intelligence/embeddings/NomicEmbedder.js +233 -0
- package/dist/code-intelligence/embeddings/NomicEmbedder.js.map +1 -0
- package/dist/code-intelligence/embeddings/OllamaClient.d.ts +42 -0
- package/dist/code-intelligence/embeddings/OllamaClient.d.ts.map +1 -0
- package/dist/code-intelligence/embeddings/OllamaClient.js +142 -0
- package/dist/code-intelligence/embeddings/OllamaClient.js.map +1 -0
- package/dist/code-intelligence/embeddings/index.d.ts +33 -0
- package/dist/code-intelligence/embeddings/index.d.ts.map +1 -0
- package/dist/code-intelligence/embeddings/index.js +39 -0
- package/dist/code-intelligence/embeddings/index.js.map +1 -0
- package/dist/code-intelligence/embeddings/types.d.ts +84 -0
- package/dist/code-intelligence/embeddings/types.d.ts.map +1 -0
- package/dist/code-intelligence/embeddings/types.js +19 -0
- package/dist/code-intelligence/embeddings/types.js.map +1 -0
- package/dist/code-intelligence/graph/GraphBuilder.d.ts +126 -0
- package/dist/code-intelligence/graph/GraphBuilder.d.ts.map +1 -0
- package/dist/code-intelligence/graph/GraphBuilder.js +416 -0
- package/dist/code-intelligence/graph/GraphBuilder.js.map +1 -0
- package/dist/code-intelligence/graph/ImportParser.d.ts +72 -0
- package/dist/code-intelligence/graph/ImportParser.d.ts.map +1 -0
- package/dist/code-intelligence/graph/ImportParser.js +422 -0
- package/dist/code-intelligence/graph/ImportParser.js.map +1 -0
- package/dist/code-intelligence/graph/RelationshipExtractor.d.ts +74 -0
- package/dist/code-intelligence/graph/RelationshipExtractor.d.ts.map +1 -0
- package/dist/code-intelligence/graph/RelationshipExtractor.js +310 -0
- package/dist/code-intelligence/graph/RelationshipExtractor.js.map +1 -0
- package/dist/code-intelligence/graph/TestMapper.d.ts +99 -0
- package/dist/code-intelligence/graph/TestMapper.d.ts.map +1 -0
- package/dist/code-intelligence/graph/TestMapper.js +335 -0
- package/dist/code-intelligence/graph/TestMapper.js.map +1 -0
- package/dist/code-intelligence/graph/index.d.ts +14 -0
- package/dist/code-intelligence/graph/index.d.ts.map +1 -0
- package/dist/code-intelligence/graph/index.js +19 -0
- package/dist/code-intelligence/graph/index.js.map +1 -0
- package/dist/code-intelligence/graph/types.d.ts +141 -0
- package/dist/code-intelligence/graph/types.d.ts.map +1 -0
- package/dist/code-intelligence/graph/types.js +18 -0
- package/dist/code-intelligence/graph/types.js.map +1 -0
- package/dist/code-intelligence/indexing/FileWatcher.d.ts +90 -0
- package/dist/code-intelligence/indexing/FileWatcher.d.ts.map +1 -0
- package/dist/code-intelligence/indexing/FileWatcher.js +304 -0
- package/dist/code-intelligence/indexing/FileWatcher.js.map +1 -0
- package/dist/code-intelligence/indexing/GitChangeDetector.d.ts +76 -0
- package/dist/code-intelligence/indexing/GitChangeDetector.d.ts.map +1 -0
- package/dist/code-intelligence/indexing/GitChangeDetector.js +347 -0
- package/dist/code-intelligence/indexing/GitChangeDetector.js.map +1 -0
- package/dist/code-intelligence/indexing/IncrementalIndexer.d.ts +108 -0
- package/dist/code-intelligence/indexing/IncrementalIndexer.d.ts.map +1 -0
- package/dist/code-intelligence/indexing/IncrementalIndexer.js +269 -0
- package/dist/code-intelligence/indexing/IncrementalIndexer.js.map +1 -0
- package/dist/code-intelligence/indexing/index.d.ts +11 -0
- package/dist/code-intelligence/indexing/index.d.ts.map +1 -0
- package/dist/code-intelligence/indexing/index.js +18 -0
- package/dist/code-intelligence/indexing/index.js.map +1 -0
- package/dist/code-intelligence/indexing/types.d.ts +133 -0
- package/dist/code-intelligence/indexing/types.d.ts.map +1 -0
- package/dist/code-intelligence/indexing/types.js +27 -0
- package/dist/code-intelligence/indexing/types.js.map +1 -0
- package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.d.ts +150 -0
- package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.d.ts.map +1 -0
- package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.js +806 -0
- package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.js.map +1 -0
- package/dist/code-intelligence/orchestrator/index.d.ts +8 -0
- package/dist/code-intelligence/orchestrator/index.d.ts.map +1 -0
- package/dist/code-intelligence/orchestrator/index.js +24 -0
- package/dist/code-intelligence/orchestrator/index.js.map +1 -0
- package/dist/code-intelligence/orchestrator/types.d.ts +164 -0
- package/dist/code-intelligence/orchestrator/types.d.ts.map +1 -0
- package/dist/code-intelligence/orchestrator/types.js +18 -0
- package/dist/code-intelligence/orchestrator/types.js.map +1 -0
- package/dist/code-intelligence/parser/LanguageRegistry.d.ts +13 -0
- package/dist/code-intelligence/parser/LanguageRegistry.d.ts.map +1 -0
- package/dist/code-intelligence/parser/LanguageRegistry.js +150 -0
- package/dist/code-intelligence/parser/LanguageRegistry.js.map +1 -0
- package/dist/code-intelligence/parser/TreeSitterParser.d.ts +98 -0
- package/dist/code-intelligence/parser/TreeSitterParser.d.ts.map +1 -0
- package/dist/code-intelligence/parser/TreeSitterParser.js +530 -0
- package/dist/code-intelligence/parser/TreeSitterParser.js.map +1 -0
- package/dist/code-intelligence/parser/extractors/BaseExtractor.d.ts +36 -0
- package/dist/code-intelligence/parser/extractors/BaseExtractor.d.ts.map +1 -0
- package/dist/code-intelligence/parser/extractors/BaseExtractor.js +31 -0
- package/dist/code-intelligence/parser/extractors/BaseExtractor.js.map +1 -0
- package/dist/code-intelligence/parser/extractors/GoExtractor.d.ts +21 -0
- package/dist/code-intelligence/parser/extractors/GoExtractor.d.ts.map +1 -0
- package/dist/code-intelligence/parser/extractors/GoExtractor.js +249 -0
- package/dist/code-intelligence/parser/extractors/GoExtractor.js.map +1 -0
- package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.d.ts +21 -0
- package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.d.ts.map +1 -0
- package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.js +217 -0
- package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.js.map +1 -0
- package/dist/code-intelligence/parser/extractors/PythonExtractor.d.ts +20 -0
- package/dist/code-intelligence/parser/extractors/PythonExtractor.d.ts.map +1 -0
- package/dist/code-intelligence/parser/extractors/PythonExtractor.js +237 -0
- package/dist/code-intelligence/parser/extractors/PythonExtractor.js.map +1 -0
- package/dist/code-intelligence/parser/extractors/RustExtractor.d.ts +21 -0
- package/dist/code-intelligence/parser/extractors/RustExtractor.d.ts.map +1 -0
- package/dist/code-intelligence/parser/extractors/RustExtractor.js +234 -0
- package/dist/code-intelligence/parser/extractors/RustExtractor.js.map +1 -0
- package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.d.ts +23 -0
- package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.d.ts.map +1 -0
- package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.js +247 -0
- package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.js.map +1 -0
- package/dist/code-intelligence/parser/extractors/index.d.ts +7 -0
- package/dist/code-intelligence/parser/extractors/index.d.ts.map +1 -0
- package/dist/code-intelligence/parser/extractors/index.js +16 -0
- package/dist/code-intelligence/parser/extractors/index.js.map +1 -0
- package/dist/code-intelligence/parser/index.d.ts +8 -0
- package/dist/code-intelligence/parser/index.d.ts.map +1 -0
- package/dist/code-intelligence/parser/index.js +12 -0
- package/dist/code-intelligence/parser/index.js.map +1 -0
- package/dist/code-intelligence/parser/types.d.ts +60 -0
- package/dist/code-intelligence/parser/types.d.ts.map +1 -0
- package/dist/code-intelligence/parser/types.js +6 -0
- package/dist/code-intelligence/parser/types.js.map +1 -0
- package/dist/code-intelligence/rag/ContextBuilder.d.ts +82 -0
- package/dist/code-intelligence/rag/ContextBuilder.d.ts.map +1 -0
- package/dist/code-intelligence/rag/ContextBuilder.js +242 -0
- package/dist/code-intelligence/rag/ContextBuilder.js.map +1 -0
- package/dist/code-intelligence/rag/GraphExpander.d.ts +95 -0
- package/dist/code-intelligence/rag/GraphExpander.d.ts.map +1 -0
- package/dist/code-intelligence/rag/GraphExpander.js +250 -0
- package/dist/code-intelligence/rag/GraphExpander.js.map +1 -0
- package/dist/code-intelligence/rag/index.d.ts +9 -0
- package/dist/code-intelligence/rag/index.d.ts.map +1 -0
- package/dist/code-intelligence/rag/index.js +25 -0
- package/dist/code-intelligence/rag/index.js.map +1 -0
- package/dist/code-intelligence/rag/types.d.ts +121 -0
- package/dist/code-intelligence/rag/types.d.ts.map +1 -0
- package/dist/code-intelligence/rag/types.js +50 -0
- package/dist/code-intelligence/rag/types.js.map +1 -0
- package/dist/code-intelligence/retrieval/SemanticRetriever.d.ts +62 -0
- package/dist/code-intelligence/retrieval/SemanticRetriever.d.ts.map +1 -0
- package/dist/code-intelligence/retrieval/SemanticRetriever.js +174 -0
- package/dist/code-intelligence/retrieval/SemanticRetriever.js.map +1 -0
- package/dist/code-intelligence/retrieval/index.d.ts +9 -0
- package/dist/code-intelligence/retrieval/index.d.ts.map +1 -0
- package/dist/code-intelligence/retrieval/index.js +16 -0
- package/dist/code-intelligence/retrieval/index.js.map +1 -0
- package/dist/code-intelligence/retrieval/types.d.ts +118 -0
- package/dist/code-intelligence/retrieval/types.d.ts.map +1 -0
- package/dist/code-intelligence/retrieval/types.js +46 -0
- package/dist/code-intelligence/retrieval/types.js.map +1 -0
- package/dist/code-intelligence/router/CodeIntelligenceHybridRouter.d.ts +167 -0
- package/dist/code-intelligence/router/CodeIntelligenceHybridRouter.d.ts.map +1 -0
- package/dist/code-intelligence/router/CodeIntelligenceHybridRouter.js +365 -0
- package/dist/code-intelligence/router/CodeIntelligenceHybridRouter.js.map +1 -0
- package/dist/code-intelligence/router/index.d.ts +7 -0
- package/dist/code-intelligence/router/index.d.ts.map +1 -0
- package/dist/code-intelligence/router/index.js +14 -0
- package/dist/code-intelligence/router/index.js.map +1 -0
- package/dist/code-intelligence/search/BM25Search.d.ts +74 -0
- package/dist/code-intelligence/search/BM25Search.d.ts.map +1 -0
- package/dist/code-intelligence/search/BM25Search.js +233 -0
- package/dist/code-intelligence/search/BM25Search.js.map +1 -0
- package/dist/code-intelligence/search/HybridSearchEngine.d.ts +94 -0
- package/dist/code-intelligence/search/HybridSearchEngine.d.ts.map +1 -0
- package/dist/code-intelligence/search/HybridSearchEngine.js +168 -0
- package/dist/code-intelligence/search/HybridSearchEngine.js.map +1 -0
- package/dist/code-intelligence/search/RRFFusion.d.ts +46 -0
- package/dist/code-intelligence/search/RRFFusion.d.ts.map +1 -0
- package/dist/code-intelligence/search/RRFFusion.js +223 -0
- package/dist/code-intelligence/search/RRFFusion.js.map +1 -0
- package/dist/code-intelligence/search/VectorSearch.d.ts +157 -0
- package/dist/code-intelligence/search/VectorSearch.d.ts.map +1 -0
- package/dist/code-intelligence/search/VectorSearch.js +301 -0
- package/dist/code-intelligence/search/VectorSearch.js.map +1 -0
- package/dist/code-intelligence/search/index.d.ts +14 -0
- package/dist/code-intelligence/search/index.d.ts.map +1 -0
- package/dist/code-intelligence/search/index.js +23 -0
- package/dist/code-intelligence/search/index.js.map +1 -0
- package/dist/code-intelligence/search/types.d.ts +201 -0
- package/dist/code-intelligence/search/types.d.ts.map +1 -0
- package/dist/code-intelligence/search/types.js +35 -0
- package/dist/code-intelligence/search/types.js.map +1 -0
- package/dist/code-intelligence/service/CodeIntelligenceService.d.ts +171 -0
- package/dist/code-intelligence/service/CodeIntelligenceService.d.ts.map +1 -0
- package/dist/code-intelligence/service/CodeIntelligenceService.js +325 -0
- package/dist/code-intelligence/service/CodeIntelligenceService.js.map +1 -0
- package/dist/code-intelligence/service/index.d.ts +7 -0
- package/dist/code-intelligence/service/index.d.ts.map +1 -0
- package/dist/code-intelligence/service/index.js +14 -0
- package/dist/code-intelligence/service/index.js.map +1 -0
- package/dist/code-intelligence/storage/CodeChunkStore.d.ts +213 -0
- package/dist/code-intelligence/storage/CodeChunkStore.d.ts.map +1 -0
- package/dist/code-intelligence/storage/CodeChunkStore.js +542 -0
- package/dist/code-intelligence/storage/CodeChunkStore.js.map +1 -0
- package/dist/code-intelligence/storage/index.d.ts +7 -0
- package/dist/code-intelligence/storage/index.d.ts.map +1 -0
- package/dist/code-intelligence/storage/index.js +13 -0
- package/dist/code-intelligence/storage/index.js.map +1 -0
- package/dist/code-intelligence/visualization/ClassDiagramBuilder.d.ts +51 -0
- package/dist/code-intelligence/visualization/ClassDiagramBuilder.d.ts.map +1 -0
- package/dist/code-intelligence/visualization/ClassDiagramBuilder.js +180 -0
- package/dist/code-intelligence/visualization/ClassDiagramBuilder.js.map +1 -0
- package/dist/code-intelligence/visualization/DependencyGraphBuilder.d.ts +66 -0
- package/dist/code-intelligence/visualization/DependencyGraphBuilder.d.ts.map +1 -0
- package/dist/code-intelligence/visualization/DependencyGraphBuilder.js +203 -0
- package/dist/code-intelligence/visualization/DependencyGraphBuilder.js.map +1 -0
- package/dist/code-intelligence/visualization/MermaidGenerator.d.ts +76 -0
- package/dist/code-intelligence/visualization/MermaidGenerator.d.ts.map +1 -0
- package/dist/code-intelligence/visualization/MermaidGenerator.js +368 -0
- package/dist/code-intelligence/visualization/MermaidGenerator.js.map +1 -0
- package/dist/code-intelligence/visualization/index.d.ts +9 -0
- package/dist/code-intelligence/visualization/index.d.ts.map +1 -0
- package/dist/code-intelligence/visualization/index.js +15 -0
- package/dist/code-intelligence/visualization/index.js.map +1 -0
- package/dist/core/FleetManager.d.ts +27 -0
- package/dist/core/FleetManager.d.ts.map +1 -1
- package/dist/core/FleetManager.js +84 -0
- package/dist/core/FleetManager.js.map +1 -1
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/memory/RuVectorPatternStore.d.ts +258 -0
- package/dist/memory/RuVectorPatternStore.d.ts.map +1 -0
- package/dist/memory/RuVectorPatternStore.js +525 -0
- package/dist/memory/RuVectorPatternStore.js.map +1 -0
- package/dist/providers/RuVectorPostgresAdapter.d.ts +134 -0
- package/dist/providers/RuVectorPostgresAdapter.d.ts.map +1 -0
- package/dist/providers/RuVectorPostgresAdapter.js +504 -0
- package/dist/providers/RuVectorPostgresAdapter.js.map +1 -0
- package/dist/providers/index.d.ts +2 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +7 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/docs/reference/agents.md +44 -1
- package/package.json +15 -2
|
@@ -0,0 +1,525 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* RuVector Pattern Store - Migration layer for AgentDB to HNSW transition
|
|
4
|
+
*
|
|
5
|
+
* Phase 0 M0.5.5: Dual-write migration strategy with validation
|
|
6
|
+
*
|
|
7
|
+
* Migration phases:
|
|
8
|
+
* 1. DUAL_WRITE: Write to both HNSW (new) and legacy storage
|
|
9
|
+
* 2. DUAL_READ: Read from HNSW but compare with legacy for validation
|
|
10
|
+
* 3. HNSW_ONLY: Read from HNSW only (legacy deprecated)
|
|
11
|
+
*
|
|
12
|
+
* Performance targets:
|
|
13
|
+
* - HNSW search: <1ms p95 (100x+ faster than legacy)
|
|
14
|
+
* - Zero data loss during migration
|
|
15
|
+
* - Reversible at any phase
|
|
16
|
+
*
|
|
17
|
+
* @deprecated AgentDB storage (v2.2.0) - migrate to HNSW
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.MigrationPresets = exports.RuVectorPatternStore = exports.MigrationPhase = void 0;
|
|
21
|
+
exports.createMigrationPatternStore = createMigrationPatternStore;
|
|
22
|
+
const HNSWPatternStore_1 = require("./HNSWPatternStore");
|
|
23
|
+
const SwarmMemoryManager_1 = require("../core/memory/SwarmMemoryManager");
|
|
24
|
+
/**
|
|
25
|
+
* Migration phase configuration
|
|
26
|
+
*/
|
|
27
|
+
var MigrationPhase;
|
|
28
|
+
(function (MigrationPhase) {
|
|
29
|
+
/** Write to both stores, read from legacy */
|
|
30
|
+
MigrationPhase["DUAL_WRITE"] = "dual_write";
|
|
31
|
+
/** Write to both stores, read from HNSW with comparison */
|
|
32
|
+
MigrationPhase["DUAL_READ"] = "dual_read";
|
|
33
|
+
/** Write to HNSW only, read from HNSW only */
|
|
34
|
+
MigrationPhase["HNSW_ONLY"] = "hnsw_only";
|
|
35
|
+
})(MigrationPhase || (exports.MigrationPhase = MigrationPhase = {}));
|
|
36
|
+
/**
|
|
37
|
+
* Pattern store with dual-write migration support
|
|
38
|
+
*
|
|
39
|
+
* Enables gradual migration from legacy SwarmMemoryManager to HNSW-based storage
|
|
40
|
+
* with validation, comparison logging, and rollback capabilities.
|
|
41
|
+
*
|
|
42
|
+
* Usage:
|
|
43
|
+
* ```typescript
|
|
44
|
+
* // Phase 1: Start dual-write
|
|
45
|
+
* const store = new RuVectorPatternStore({
|
|
46
|
+
* migrationPhase: MigrationPhase.DUAL_WRITE,
|
|
47
|
+
* storagePath: './data/hnsw',
|
|
48
|
+
* legacyDbPath: './data/legacy.db'
|
|
49
|
+
* });
|
|
50
|
+
*
|
|
51
|
+
* // Phase 2: Enable dual-read for validation
|
|
52
|
+
* store.setMigrationPhase(MigrationPhase.DUAL_READ);
|
|
53
|
+
* // Monitor metrics: store.getMigrationMetrics()
|
|
54
|
+
*
|
|
55
|
+
* // Phase 3: Switch to HNSW only after validation
|
|
56
|
+
* store.setMigrationPhase(MigrationPhase.HNSW_ONLY);
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
class RuVectorPatternStore {
|
|
60
|
+
constructor(config = {}) {
|
|
61
|
+
// Metrics tracking
|
|
62
|
+
this.comparisons = [];
|
|
63
|
+
this.metrics = {
|
|
64
|
+
errors: 0,
|
|
65
|
+
totalWrites: 0,
|
|
66
|
+
totalReads: 0,
|
|
67
|
+
};
|
|
68
|
+
const { migrationPhase = MigrationPhase.DUAL_WRITE, legacyDbPath, enableComparisonLogging = true, maxComparisons = 100, ...hnswConfig } = config;
|
|
69
|
+
this.migrationPhase = migrationPhase;
|
|
70
|
+
this.enableComparisonLogging = enableComparisonLogging;
|
|
71
|
+
this.maxComparisons = maxComparisons;
|
|
72
|
+
// Initialize HNSW store (always present)
|
|
73
|
+
this.hnswStore = new HNSWPatternStore_1.HNSWPatternStore(hnswConfig);
|
|
74
|
+
// Initialize legacy store if needed
|
|
75
|
+
if (this.isDualMode() && legacyDbPath) {
|
|
76
|
+
this.legacyStore = new SwarmMemoryManager_1.SwarmMemoryManager(legacyDbPath);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
this.legacyStore = null;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Check if we're in dual-write or dual-read mode
|
|
84
|
+
*/
|
|
85
|
+
isDualMode() {
|
|
86
|
+
return (this.migrationPhase === MigrationPhase.DUAL_WRITE ||
|
|
87
|
+
this.migrationPhase === MigrationPhase.DUAL_READ);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Store a pattern with dual-write support
|
|
91
|
+
*
|
|
92
|
+
* Behavior by phase:
|
|
93
|
+
* - DUAL_WRITE/DUAL_READ: Write to both HNSW and legacy
|
|
94
|
+
* - HNSW_ONLY: Write to HNSW only
|
|
95
|
+
*
|
|
96
|
+
* @param pattern Pattern to store
|
|
97
|
+
*/
|
|
98
|
+
async store(pattern) {
|
|
99
|
+
this.metrics.totalWrites++;
|
|
100
|
+
try {
|
|
101
|
+
// Always write to HNSW (new storage)
|
|
102
|
+
await this.hnswStore.store(pattern);
|
|
103
|
+
// Dual-write to legacy during migration
|
|
104
|
+
if (this.isDualMode() && this.legacyStore) {
|
|
105
|
+
await this.storeLegacy(pattern);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
this.metrics.errors++;
|
|
110
|
+
throw new Error(`Failed to store pattern ${pattern.id}: ${error}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Store pattern in legacy SwarmMemoryManager
|
|
115
|
+
*/
|
|
116
|
+
async storeLegacy(pattern) {
|
|
117
|
+
if (!this.legacyStore)
|
|
118
|
+
return;
|
|
119
|
+
const key = `pattern:${pattern.id}`;
|
|
120
|
+
const value = {
|
|
121
|
+
embedding: pattern.embedding,
|
|
122
|
+
content: pattern.content,
|
|
123
|
+
type: pattern.type,
|
|
124
|
+
quality: pattern.quality,
|
|
125
|
+
metadata: pattern.metadata,
|
|
126
|
+
createdAt: pattern.createdAt.toISOString(),
|
|
127
|
+
};
|
|
128
|
+
const options = {
|
|
129
|
+
partition: `patterns:${pattern.type}`,
|
|
130
|
+
metadata: {
|
|
131
|
+
quality: pattern.quality,
|
|
132
|
+
dimension: pattern.embedding.length,
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
await this.legacyStore.store(key, value, options);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Search for similar patterns with migration support
|
|
139
|
+
*
|
|
140
|
+
* Behavior by phase:
|
|
141
|
+
* - DUAL_WRITE: Read from legacy (safe fallback)
|
|
142
|
+
* - DUAL_READ: Read from HNSW + compare with legacy
|
|
143
|
+
* - HNSW_ONLY: Read from HNSW only
|
|
144
|
+
*
|
|
145
|
+
* @param embedding Query embedding vector
|
|
146
|
+
* @param k Number of nearest neighbors
|
|
147
|
+
* @returns Top-k most similar patterns
|
|
148
|
+
*/
|
|
149
|
+
async search(embedding, k) {
|
|
150
|
+
this.metrics.totalReads++;
|
|
151
|
+
try {
|
|
152
|
+
switch (this.migrationPhase) {
|
|
153
|
+
case MigrationPhase.DUAL_WRITE:
|
|
154
|
+
// Phase 1: Still using legacy for reads (safe)
|
|
155
|
+
return await this.searchLegacy(embedding, k);
|
|
156
|
+
case MigrationPhase.DUAL_READ:
|
|
157
|
+
// Phase 2: Use HNSW but validate against legacy
|
|
158
|
+
return await this.searchWithComparison(embedding, k);
|
|
159
|
+
case MigrationPhase.HNSW_ONLY:
|
|
160
|
+
// Phase 3: HNSW only (legacy deprecated)
|
|
161
|
+
return await this.hnswStore.search(embedding, k);
|
|
162
|
+
default:
|
|
163
|
+
throw new Error(`Unknown migration phase: ${this.migrationPhase}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
this.metrics.errors++;
|
|
168
|
+
throw new Error(`Search failed: ${error}`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Search from legacy store (brute-force O(n) comparison)
|
|
173
|
+
*
|
|
174
|
+
* This is the deprecated path - used only during early migration
|
|
175
|
+
*/
|
|
176
|
+
async searchLegacy(embedding, k) {
|
|
177
|
+
if (!this.legacyStore) {
|
|
178
|
+
// Fallback to HNSW if legacy not available
|
|
179
|
+
return await this.hnswStore.search(embedding, k);
|
|
180
|
+
}
|
|
181
|
+
// Note: SwarmMemoryManager doesn't have vector search
|
|
182
|
+
// This is a placeholder showing the interface mismatch
|
|
183
|
+
// In reality, legacy storage would need custom vector search implementation
|
|
184
|
+
console.warn('Legacy vector search not implemented - falling back to HNSW');
|
|
185
|
+
return await this.hnswStore.search(embedding, k);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Search with dual-read comparison for validation
|
|
189
|
+
*
|
|
190
|
+
* Reads from HNSW (new) and compares with legacy to validate migration
|
|
191
|
+
*/
|
|
192
|
+
async searchWithComparison(embedding, k) {
|
|
193
|
+
// Search HNSW (should be <1ms)
|
|
194
|
+
const hnswStart = Date.now();
|
|
195
|
+
const hnswResults = await this.hnswStore.search(embedding, k);
|
|
196
|
+
const hnswLatencyMs = Date.now() - hnswStart;
|
|
197
|
+
// Search legacy for comparison (expected to be 100x+ slower)
|
|
198
|
+
let legacyResults = [];
|
|
199
|
+
let legacyLatencyMs = 0;
|
|
200
|
+
if (this.legacyStore && this.enableComparisonLogging) {
|
|
201
|
+
const legacyStart = Date.now();
|
|
202
|
+
legacyResults = await this.searchLegacy(embedding, k);
|
|
203
|
+
legacyLatencyMs = Date.now() - legacyStart;
|
|
204
|
+
// Log comparison
|
|
205
|
+
this.logComparison(embedding, k, hnswResults, legacyResults, hnswLatencyMs, legacyLatencyMs);
|
|
206
|
+
}
|
|
207
|
+
// Return HNSW results (validated source)
|
|
208
|
+
return hnswResults;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Log comparison between HNSW and legacy search results
|
|
212
|
+
*/
|
|
213
|
+
logComparison(queryEmbedding, k, hnswResults, legacyResults, hnswLatencyMs, legacyLatencyMs) {
|
|
214
|
+
const hnswIds = new Set(hnswResults.map(p => p.id));
|
|
215
|
+
const legacyIds = new Set(legacyResults.map(p => p.id));
|
|
216
|
+
// Calculate overlap
|
|
217
|
+
const commonIds = new Set([...hnswIds].filter(id => legacyIds.has(id)));
|
|
218
|
+
const overlap = legacyIds.size > 0 ? (commonIds.size / legacyIds.size) * 100 : 0;
|
|
219
|
+
// Calculate speedup
|
|
220
|
+
const speedupFactor = legacyLatencyMs > 0 ? legacyLatencyMs / hnswLatencyMs : 0;
|
|
221
|
+
// Find differences
|
|
222
|
+
const hnswOnly = [...hnswIds].filter(id => !legacyIds.has(id));
|
|
223
|
+
const legacyOnly = [...legacyIds].filter(id => !hnswIds.has(id));
|
|
224
|
+
const comparison = {
|
|
225
|
+
timestamp: new Date(),
|
|
226
|
+
queryEmbedding,
|
|
227
|
+
k,
|
|
228
|
+
hnswResults: Array.from(hnswIds),
|
|
229
|
+
legacyResults: Array.from(legacyIds),
|
|
230
|
+
hnswLatencyMs,
|
|
231
|
+
legacyLatencyMs,
|
|
232
|
+
speedupFactor,
|
|
233
|
+
overlap,
|
|
234
|
+
hnswOnly,
|
|
235
|
+
legacyOnly,
|
|
236
|
+
};
|
|
237
|
+
// Store comparison (keep last N)
|
|
238
|
+
this.comparisons.push(comparison);
|
|
239
|
+
if (this.comparisons.length > this.maxComparisons) {
|
|
240
|
+
this.comparisons.shift();
|
|
241
|
+
}
|
|
242
|
+
// Log if significant divergence
|
|
243
|
+
if (overlap < 90 && legacyIds.size > 0) {
|
|
244
|
+
console.warn(`[RuVectorPatternStore] Low overlap (${overlap.toFixed(1)}%) between HNSW and legacy. ` +
|
|
245
|
+
`HNSW-only: ${hnswOnly.length}, Legacy-only: ${legacyOnly.length}`);
|
|
246
|
+
}
|
|
247
|
+
// Log performance gain
|
|
248
|
+
if (speedupFactor > 1) {
|
|
249
|
+
console.log(`[RuVectorPatternStore] HNSW ${speedupFactor.toFixed(1)}x faster ` +
|
|
250
|
+
`(${hnswLatencyMs.toFixed(2)}ms vs ${legacyLatencyMs.toFixed(2)}ms)`);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Delete a pattern from both stores during dual-write
|
|
255
|
+
*/
|
|
256
|
+
async delete(id) {
|
|
257
|
+
try {
|
|
258
|
+
// Always delete from HNSW
|
|
259
|
+
await this.hnswStore.delete(id);
|
|
260
|
+
// Delete from legacy during migration
|
|
261
|
+
if (this.isDualMode() && this.legacyStore) {
|
|
262
|
+
const key = `pattern:${id}`;
|
|
263
|
+
await this.legacyStore.delete(key);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
catch (error) {
|
|
267
|
+
this.metrics.errors++;
|
|
268
|
+
throw new Error(`Failed to delete pattern ${id}: ${error}`);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Get total pattern count
|
|
273
|
+
*/
|
|
274
|
+
async count() {
|
|
275
|
+
// Always use HNSW count (source of truth)
|
|
276
|
+
return await this.hnswStore.count();
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Clear all patterns from both stores
|
|
280
|
+
*/
|
|
281
|
+
async clear() {
|
|
282
|
+
try {
|
|
283
|
+
await this.hnswStore.clear();
|
|
284
|
+
if (this.isDualMode() && this.legacyStore) {
|
|
285
|
+
// Clear legacy patterns (would need custom implementation)
|
|
286
|
+
console.warn('Legacy pattern clearing not implemented');
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
catch (error) {
|
|
290
|
+
this.metrics.errors++;
|
|
291
|
+
throw new Error(`Failed to clear patterns: ${error}`);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Get migration metrics for monitoring
|
|
296
|
+
*
|
|
297
|
+
* @returns Current migration status and performance comparison
|
|
298
|
+
*/
|
|
299
|
+
async getMigrationMetrics() {
|
|
300
|
+
const hnswPatterns = await this.hnswStore.count();
|
|
301
|
+
const legacyPatterns = this.legacyStore ? 0 : 0; // Would need actual count
|
|
302
|
+
// Calculate average speedup and overlap from comparisons
|
|
303
|
+
const avgSpeedupFactor = this.comparisons.length > 0
|
|
304
|
+
? this.comparisons.reduce((sum, c) => sum + c.speedupFactor, 0) / this.comparisons.length
|
|
305
|
+
: 0;
|
|
306
|
+
const avgOverlap = this.comparisons.length > 0
|
|
307
|
+
? this.comparisons.reduce((sum, c) => sum + c.overlap, 0) / this.comparisons.length
|
|
308
|
+
: 0;
|
|
309
|
+
return {
|
|
310
|
+
phase: this.migrationPhase,
|
|
311
|
+
totalPatterns: hnswPatterns,
|
|
312
|
+
hnswPatterns,
|
|
313
|
+
legacyPatterns,
|
|
314
|
+
syncedPatterns: Math.min(hnswPatterns, legacyPatterns),
|
|
315
|
+
divergedPatterns: Math.abs(hnswPatterns - legacyPatterns),
|
|
316
|
+
comparisons: this.comparisons.length,
|
|
317
|
+
avgSpeedupFactor,
|
|
318
|
+
avgOverlap,
|
|
319
|
+
errors: this.metrics.errors,
|
|
320
|
+
lastComparison: this.comparisons[this.comparisons.length - 1],
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Set migration phase (with validation)
|
|
325
|
+
*
|
|
326
|
+
* Safe transitions:
|
|
327
|
+
* - DUAL_WRITE -> DUAL_READ (start validation)
|
|
328
|
+
* - DUAL_READ -> HNSW_ONLY (complete migration)
|
|
329
|
+
* - DUAL_READ -> DUAL_WRITE (rollback if issues found)
|
|
330
|
+
* - HNSW_ONLY -> DUAL_READ (rollback migration)
|
|
331
|
+
*
|
|
332
|
+
* @param phase New migration phase
|
|
333
|
+
*/
|
|
334
|
+
setMigrationPhase(phase) {
|
|
335
|
+
const validTransitions = {
|
|
336
|
+
[MigrationPhase.DUAL_WRITE]: [MigrationPhase.DUAL_READ],
|
|
337
|
+
[MigrationPhase.DUAL_READ]: [MigrationPhase.DUAL_WRITE, MigrationPhase.HNSW_ONLY],
|
|
338
|
+
[MigrationPhase.HNSW_ONLY]: [MigrationPhase.DUAL_READ],
|
|
339
|
+
};
|
|
340
|
+
const allowed = validTransitions[this.migrationPhase];
|
|
341
|
+
if (!allowed.includes(phase)) {
|
|
342
|
+
throw new Error(`Invalid migration transition: ${this.migrationPhase} -> ${phase}. ` +
|
|
343
|
+
`Allowed: ${allowed.join(', ')}`);
|
|
344
|
+
}
|
|
345
|
+
console.log(`[RuVectorPatternStore] Migration phase: ${this.migrationPhase} -> ${phase}`);
|
|
346
|
+
this.migrationPhase = phase;
|
|
347
|
+
// Initialize/cleanup legacy store as needed
|
|
348
|
+
if (!this.isDualMode() && this.legacyStore) {
|
|
349
|
+
console.log('[RuVectorPatternStore] Cleaning up legacy store connection');
|
|
350
|
+
this.legacyStore = null;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Get current migration phase
|
|
355
|
+
*/
|
|
356
|
+
getMigrationPhase() {
|
|
357
|
+
return this.migrationPhase;
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Get recent comparisons for analysis
|
|
361
|
+
*/
|
|
362
|
+
getRecentComparisons(limit = 10) {
|
|
363
|
+
return this.comparisons.slice(-limit);
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Export comparison data for external analysis
|
|
367
|
+
*/
|
|
368
|
+
exportComparisonData() {
|
|
369
|
+
return [...this.comparisons];
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Batch store patterns (delegates to HNSW)
|
|
373
|
+
*/
|
|
374
|
+
async storeBatch(patterns) {
|
|
375
|
+
this.metrics.totalWrites += patterns.length;
|
|
376
|
+
try {
|
|
377
|
+
// Batch write to HNSW
|
|
378
|
+
await this.hnswStore.storeBatch(patterns);
|
|
379
|
+
// Individual writes to legacy (no batch support)
|
|
380
|
+
if (this.isDualMode() && this.legacyStore) {
|
|
381
|
+
for (const pattern of patterns) {
|
|
382
|
+
await this.storeLegacy(pattern);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
catch (error) {
|
|
387
|
+
this.metrics.errors++;
|
|
388
|
+
throw new Error(`Failed to store batch: ${error}`);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Get underlying HNSW store (for advanced operations)
|
|
393
|
+
*/
|
|
394
|
+
getHNSWStore() {
|
|
395
|
+
return this.hnswStore;
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Get statistics from HNSW store
|
|
399
|
+
*/
|
|
400
|
+
async getStats() {
|
|
401
|
+
const hnswStats = await this.hnswStore.getStats();
|
|
402
|
+
return {
|
|
403
|
+
...hnswStats,
|
|
404
|
+
migrationPhase: this.migrationPhase,
|
|
405
|
+
};
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Save both HNSW and legacy stores to disk
|
|
409
|
+
*/
|
|
410
|
+
async save() {
|
|
411
|
+
try {
|
|
412
|
+
// Save HNSW metadata
|
|
413
|
+
await this.hnswStore.saveMetadata();
|
|
414
|
+
// Legacy save would happen automatically via SwarmMemoryManager
|
|
415
|
+
console.log('[RuVectorPatternStore] Pattern stores saved');
|
|
416
|
+
}
|
|
417
|
+
catch (error) {
|
|
418
|
+
this.metrics.errors++;
|
|
419
|
+
throw new Error(`Failed to save stores: ${error}`);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Load both HNSW and legacy stores from disk
|
|
424
|
+
*/
|
|
425
|
+
async load() {
|
|
426
|
+
try {
|
|
427
|
+
// Load HNSW metadata
|
|
428
|
+
await this.hnswStore.loadMetadata();
|
|
429
|
+
// Legacy load would happen automatically via SwarmMemoryManager
|
|
430
|
+
console.log('[RuVectorPatternStore] Pattern stores loaded');
|
|
431
|
+
}
|
|
432
|
+
catch (error) {
|
|
433
|
+
this.metrics.errors++;
|
|
434
|
+
throw new Error(`Failed to load stores: ${error}`);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* Verify data integrity between stores
|
|
439
|
+
*
|
|
440
|
+
* Runs a comprehensive check to ensure HNSW and legacy stores are in sync
|
|
441
|
+
* Useful before switching from DUAL_READ to HNSW_ONLY
|
|
442
|
+
*/
|
|
443
|
+
async verifyIntegrity() {
|
|
444
|
+
const hnswCount = await this.hnswStore.count();
|
|
445
|
+
const legacyCount = this.legacyStore ? 0 : 0; // Would need actual implementation
|
|
446
|
+
const recommendations = [];
|
|
447
|
+
let inSync = true;
|
|
448
|
+
// Check counts
|
|
449
|
+
if (Math.abs(hnswCount - legacyCount) > hnswCount * 0.01) {
|
|
450
|
+
// >1% difference
|
|
451
|
+
inSync = false;
|
|
452
|
+
recommendations.push(`Pattern count mismatch: HNSW=${hnswCount}, Legacy=${legacyCount}. ` +
|
|
453
|
+
`Recommend staying in DUAL_WRITE mode.`);
|
|
454
|
+
}
|
|
455
|
+
// Check recent comparison overlap
|
|
456
|
+
if (this.comparisons.length > 0) {
|
|
457
|
+
const recentOverlap = this.comparisons.slice(-10).reduce((sum, c) => sum + c.overlap, 0) / 10;
|
|
458
|
+
if (recentOverlap < 95) {
|
|
459
|
+
inSync = false;
|
|
460
|
+
recommendations.push(`Low search result overlap (${recentOverlap.toFixed(1)}%). ` +
|
|
461
|
+
`Investigate divergence before switching to HNSW_ONLY.`);
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
// Check performance gain
|
|
465
|
+
const metrics = await this.getMigrationMetrics();
|
|
466
|
+
if (metrics.avgSpeedupFactor > 100) {
|
|
467
|
+
recommendations.push(`HNSW is ${metrics.avgSpeedupFactor.toFixed(0)}x faster. ` +
|
|
468
|
+
`Migration will significantly improve performance.`);
|
|
469
|
+
}
|
|
470
|
+
if (inSync && metrics.comparisons > 10 && metrics.avgOverlap > 95) {
|
|
471
|
+
recommendations.push('Data verified. Safe to switch to HNSW_ONLY mode.');
|
|
472
|
+
}
|
|
473
|
+
return {
|
|
474
|
+
inSync,
|
|
475
|
+
hnswCount,
|
|
476
|
+
legacyCount,
|
|
477
|
+
sampleChecks: this.comparisons.length,
|
|
478
|
+
sampleMatches: Math.round((metrics.avgOverlap / 100) * this.comparisons.length),
|
|
479
|
+
recommendations,
|
|
480
|
+
};
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
exports.RuVectorPatternStore = RuVectorPatternStore;
|
|
484
|
+
/**
|
|
485
|
+
* Factory function to create pattern store with migration support
|
|
486
|
+
*/
|
|
487
|
+
function createMigrationPatternStore(config) {
|
|
488
|
+
return new RuVectorPatternStore(config);
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Migration presets for common scenarios
|
|
492
|
+
*/
|
|
493
|
+
exports.MigrationPresets = {
|
|
494
|
+
/**
|
|
495
|
+
* Start fresh migration (Phase 1)
|
|
496
|
+
*/
|
|
497
|
+
startMigration: (storagePath, legacyDbPath) => new RuVectorPatternStore({
|
|
498
|
+
migrationPhase: MigrationPhase.DUAL_WRITE,
|
|
499
|
+
storagePath,
|
|
500
|
+
legacyDbPath,
|
|
501
|
+
enableComparisonLogging: true,
|
|
502
|
+
dimension: 768,
|
|
503
|
+
}),
|
|
504
|
+
/**
|
|
505
|
+
* Enable validation (Phase 2)
|
|
506
|
+
*/
|
|
507
|
+
enableValidation: (storagePath, legacyDbPath) => new RuVectorPatternStore({
|
|
508
|
+
migrationPhase: MigrationPhase.DUAL_READ,
|
|
509
|
+
storagePath,
|
|
510
|
+
legacyDbPath,
|
|
511
|
+
enableComparisonLogging: true,
|
|
512
|
+
maxComparisons: 1000, // Store more comparisons for analysis
|
|
513
|
+
dimension: 768,
|
|
514
|
+
}),
|
|
515
|
+
/**
|
|
516
|
+
* Complete migration (Phase 3)
|
|
517
|
+
*/
|
|
518
|
+
completeMigration: (storagePath) => new RuVectorPatternStore({
|
|
519
|
+
migrationPhase: MigrationPhase.HNSW_ONLY,
|
|
520
|
+
storagePath,
|
|
521
|
+
enableComparisonLogging: false, // No legacy to compare
|
|
522
|
+
dimension: 768,
|
|
523
|
+
}),
|
|
524
|
+
};
|
|
525
|
+
//# sourceMappingURL=RuVectorPatternStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuVectorPatternStore.js","sourceRoot":"","sources":["../../src/memory/RuVectorPatternStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RuVectorPostgresAdapter - PostgreSQL adapter for RuVector Docker integration
|
|
3
|
+
*
|
|
4
|
+
* Provides direct PostgreSQL connectivity to the RuVector Docker container
|
|
5
|
+
* for GNN-enhanced vector search with LoRA learning capabilities.
|
|
6
|
+
*
|
|
7
|
+
* This adapter unlocks the full self-learning features:
|
|
8
|
+
* - GNN (Graph Neural Network) reranking
|
|
9
|
+
* - LoRA (Low-Rank Adaptation) parameter updates
|
|
10
|
+
* - EWC++ (Elastic Weight Consolidation) for catastrophic forgetting prevention
|
|
11
|
+
*
|
|
12
|
+
* @module providers/RuVectorPostgresAdapter
|
|
13
|
+
*/
|
|
14
|
+
import { RuVectorConfig, SearchResult, Pattern, QueryResult, LearningMetrics, HealthCheckResponse } from './RuVectorClient';
|
|
15
|
+
/**
|
|
16
|
+
* PostgreSQL-specific configuration for RuVector
|
|
17
|
+
*/
|
|
18
|
+
export interface RuVectorPostgresConfig extends Omit<RuVectorConfig, 'baseUrl'> {
|
|
19
|
+
/** PostgreSQL connection string or config */
|
|
20
|
+
connectionString?: string;
|
|
21
|
+
/** PostgreSQL host (default: localhost) */
|
|
22
|
+
host?: string;
|
|
23
|
+
/** PostgreSQL port (default: 5432) */
|
|
24
|
+
port?: number;
|
|
25
|
+
/** PostgreSQL database name (default: ruvector_db) */
|
|
26
|
+
database?: string;
|
|
27
|
+
/** PostgreSQL user (default: ruvector) */
|
|
28
|
+
user?: string;
|
|
29
|
+
/** PostgreSQL password (default: ruvector) */
|
|
30
|
+
password?: string;
|
|
31
|
+
/** Table name for patterns (default: qe_patterns) */
|
|
32
|
+
tableName?: string;
|
|
33
|
+
/** Embedding dimension (default: 768) */
|
|
34
|
+
embeddingDimension?: number;
|
|
35
|
+
/** Connection pool size (default: 10) */
|
|
36
|
+
poolSize?: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* RuVector PostgreSQL Adapter
|
|
40
|
+
*
|
|
41
|
+
* Provides direct PostgreSQL integration with RuVector Docker container
|
|
42
|
+
* for full self-learning capabilities.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const adapter = new RuVectorPostgresAdapter({
|
|
47
|
+
* host: 'localhost',
|
|
48
|
+
* port: 5432,
|
|
49
|
+
* database: 'ruvector_db',
|
|
50
|
+
* user: 'ruvector',
|
|
51
|
+
* password: 'ruvector',
|
|
52
|
+
* learningEnabled: true,
|
|
53
|
+
* cacheThreshold: 0.8,
|
|
54
|
+
* loraRank: 8,
|
|
55
|
+
* ewcEnabled: true
|
|
56
|
+
* });
|
|
57
|
+
*
|
|
58
|
+
* await adapter.initialize();
|
|
59
|
+
* const result = await adapter.search(embedding, 5);
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare class RuVectorPostgresAdapter {
|
|
63
|
+
private pool;
|
|
64
|
+
private readonly config;
|
|
65
|
+
private readonly tableName;
|
|
66
|
+
private initialized;
|
|
67
|
+
private queryCount;
|
|
68
|
+
private cacheHits;
|
|
69
|
+
private totalLatency;
|
|
70
|
+
constructor(config: RuVectorPostgresConfig);
|
|
71
|
+
/**
|
|
72
|
+
* Initialize the adapter and create required tables
|
|
73
|
+
*/
|
|
74
|
+
initialize(): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Search for similar patterns using RuVector's cosine distance
|
|
77
|
+
*/
|
|
78
|
+
search(embedding: number[], k?: number, options?: {
|
|
79
|
+
useGNN?: boolean;
|
|
80
|
+
minConfidence?: number;
|
|
81
|
+
}): Promise<SearchResult[]>;
|
|
82
|
+
/**
|
|
83
|
+
* Store a pattern with automatic LoRA learning
|
|
84
|
+
*/
|
|
85
|
+
store(pattern: Pattern, options?: {
|
|
86
|
+
id?: string;
|
|
87
|
+
triggerLearning?: boolean;
|
|
88
|
+
}): Promise<string>;
|
|
89
|
+
/**
|
|
90
|
+
* Query with automatic learning and LLM fallback
|
|
91
|
+
*/
|
|
92
|
+
queryWithLearning(query: string, embedding: number[], llmFallback: () => Promise<string>): Promise<QueryResult>;
|
|
93
|
+
/**
|
|
94
|
+
* Get learning metrics from PostgreSQL
|
|
95
|
+
*/
|
|
96
|
+
getMetrics(): Promise<LearningMetrics>;
|
|
97
|
+
/**
|
|
98
|
+
* Force learning consolidation
|
|
99
|
+
*/
|
|
100
|
+
forceLearn(): Promise<{
|
|
101
|
+
success: boolean;
|
|
102
|
+
updatedParameters: number;
|
|
103
|
+
duration: number;
|
|
104
|
+
}>;
|
|
105
|
+
/**
|
|
106
|
+
* Health check
|
|
107
|
+
*/
|
|
108
|
+
healthCheck(): Promise<HealthCheckResponse>;
|
|
109
|
+
/**
|
|
110
|
+
* Close the connection pool
|
|
111
|
+
*/
|
|
112
|
+
close(): Promise<void>;
|
|
113
|
+
/**
|
|
114
|
+
* Reset metrics
|
|
115
|
+
*/
|
|
116
|
+
resetMetrics(): void;
|
|
117
|
+
private ensureInitialized;
|
|
118
|
+
private validateEmbedding;
|
|
119
|
+
private parseEmbedding;
|
|
120
|
+
private parseSize;
|
|
121
|
+
private generateId;
|
|
122
|
+
private handleError;
|
|
123
|
+
private log;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Factory function to create a PostgreSQL adapter
|
|
127
|
+
*/
|
|
128
|
+
export declare function createRuVectorPostgresAdapter(config: RuVectorPostgresConfig): RuVectorPostgresAdapter;
|
|
129
|
+
/**
|
|
130
|
+
* Create adapter with Docker defaults
|
|
131
|
+
*/
|
|
132
|
+
export declare function createDockerRuVectorAdapter(options?: Partial<RuVectorPostgresConfig>): RuVectorPostgresAdapter;
|
|
133
|
+
export declare const RUVECTOR_POSTGRES_ADAPTER_VERSION = "1.0.0";
|
|
134
|
+
//# sourceMappingURL=RuVectorPostgresAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuVectorPostgresAdapter.d.ts","sourceRoot":"","sources":["../../src/providers/RuVectorPostgresAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EACL,cAAc,EACd,YAAY,EACZ,OAAO,EACP,WAAW,EACX,eAAe,EACf,mBAAmB,EAEpB,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC;IAC7E,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAAK;gBAEb,MAAM,EAAE,sBAAsB;IA6C1C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiDjC;;OAEG;IACG,MAAM,CACV,SAAS,EAAE,MAAM,EAAE,EACnB,CAAC,GAAE,MAAW,EACd,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,GACA,OAAO,CAAC,YAAY,EAAE,CAAC;IA0D1B;;OAEG;IACG,KAAK,CACT,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;QACR,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,GACA,OAAO,CAAC,MAAM,CAAC;IA8ClB;;OAEG;IACG,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GACjC,OAAO,CAAC,WAAW,CAAC;IAiFvB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC;IAqC5C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC;QAC1B,OAAO,EAAE,OAAO,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IA2BF;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAqCjD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;OAEG;IACH,YAAY,IAAI,IAAI;YASN,iBAAiB;IAM/B,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,GAAG;CAMZ;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,sBAAsB,GAC7B,uBAAuB,CAEzB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GACxC,uBAAuB,CAazB;AAED,eAAO,MAAM,iCAAiC,UAAU,CAAC"}
|