agentic-qe 1.0.5 → 1.2.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-coverage-analyzer.md +8 -0
- package/.claude/agents/qe-flaky-test-hunter.md +9 -1
- package/.claude/agents/qe-quality-analyzer.md +405 -0
- package/.claude/agents/qe-test-generator.md +7 -0
- package/.claude/agents/reasoning/agent.md +816 -0
- package/.claude/agents/reasoning/goal-planner.md +73 -0
- package/.claude/settings.json +21 -20
- package/.claude/skills/README.md +124 -0
- package/.claude/skills/agentdb-advanced/SKILL.md +550 -0
- package/.claude/skills/agentdb-learning/SKILL.md +545 -0
- package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -0
- package/.claude/skills/agentdb-optimization/SKILL.md +509 -0
- package/.claude/skills/agentdb-vector-search/SKILL.md +339 -0
- package/.claude/skills/agentic-quality-engineering/SKILL.md +604 -0
- package/.claude/skills/api-testing-patterns/SKILL.md +686 -0
- package/.claude/skills/bug-reporting-excellence/SKILL.md +632 -0
- package/.claude/skills/code-review-quality/SKILL.md +683 -0
- package/.claude/skills/consultancy-practices/SKILL.md +540 -0
- package/.claude/skills/context-driven-testing/SKILL.md +466 -0
- package/.claude/skills/exploratory-testing-advanced/SKILL.md +676 -0
- package/.claude/skills/flow-nexus-neural/SKILL.md +738 -0
- package/.claude/skills/flow-nexus-platform/SKILL.md +1157 -0
- package/.claude/skills/flow-nexus-swarm/SKILL.md +610 -0
- package/.claude/skills/github-code-review/SKILL.md +1140 -0
- package/.claude/skills/github-multi-repo/SKILL.md +874 -0
- package/.claude/skills/github-project-management/SKILL.md +1277 -0
- package/.claude/skills/github-release-management/SKILL.md +1081 -0
- package/.claude/skills/github-workflow-automation/SKILL.md +1065 -0
- package/.claude/skills/hive-mind-advanced/SKILL.md +712 -0
- package/.claude/skills/holistic-testing-pact/SKILL.md +225 -0
- package/.claude/skills/hooks-automation/SKILL.md +1201 -0
- package/.claude/skills/pair-programming/SKILL.md +1202 -0
- package/.claude/skills/performance-analysis/SKILL.md +563 -0
- package/.claude/skills/performance-testing/SKILL.md +662 -0
- package/.claude/skills/quality-metrics/SKILL.md +592 -0
- package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -0
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -0
- package/.claude/skills/refactoring-patterns/SKILL.md +778 -0
- package/.claude/skills/risk-based-testing/SKILL.md +721 -0
- package/.claude/skills/security-testing/SKILL.md +651 -0
- package/.claude/skills/skill-builder/SKILL.md +910 -0
- package/.claude/skills/sparc-methodology/SKILL.md +1115 -0
- package/.claude/skills/stream-chain/SKILL.md +563 -0
- package/.claude/skills/swarm-advanced/SKILL.md +973 -0
- package/.claude/skills/swarm-orchestration/SKILL.md +179 -0
- package/.claude/skills/tdd-london-chicago/SKILL.md +567 -0
- package/.claude/skills/technical-writing/SKILL.md +235 -0
- package/.claude/skills/test-automation-strategy/SKILL.md +842 -0
- package/.claude/skills/verification-quality/SKILL.md +649 -0
- package/.claude/skills/xp-practices/SKILL.md +671 -0
- package/.claude/statusline-command.sh +176 -0
- package/CHANGELOG.md +645 -1
- package/CONTRIBUTING.md +51 -0
- package/README.md +758 -162
- package/bin/aqe +90 -938
- package/config/improvement-loop.config.ts +323 -0
- package/config/neural-agent.config.ts +197 -0
- package/dist/adapters/MemoryStoreAdapter.d.ts +16 -16
- package/dist/adapters/MemoryStoreAdapter.d.ts.map +1 -1
- package/dist/adapters/MemoryStoreAdapter.js +22 -16
- package/dist/adapters/MemoryStoreAdapter.js.map +1 -1
- package/dist/agents/BaseAgent.d.ts +69 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +382 -1
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.d.ts +69 -3
- package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.js +418 -51
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
- package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -1
- package/dist/agents/DeploymentReadinessAgent.js +13 -13
- package/dist/agents/DeploymentReadinessAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.d.ts +76 -4
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +375 -13
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
- package/dist/agents/FleetCommanderAgent.js +2 -2
- package/dist/agents/FleetCommanderAgent.js.map +1 -1
- package/dist/agents/LearningAgent.d.ts +84 -0
- package/dist/agents/LearningAgent.d.ts.map +1 -0
- package/dist/agents/LearningAgent.js +197 -0
- package/dist/agents/LearningAgent.js.map +1 -0
- package/dist/agents/NeuralAgentExtension.d.ts +117 -0
- package/dist/agents/NeuralAgentExtension.d.ts.map +1 -0
- package/dist/agents/NeuralAgentExtension.js +288 -0
- package/dist/agents/NeuralAgentExtension.js.map +1 -0
- package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -1
- package/dist/agents/PerformanceTesterAgent.js +4 -3
- package/dist/agents/PerformanceTesterAgent.js.map +1 -1
- package/dist/agents/ProductionIntelligenceAgent.js +7 -7
- package/dist/agents/ProductionIntelligenceAgent.js.map +1 -1
- package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/QualityAnalyzerAgent.js +2 -2
- package/dist/agents/QualityAnalyzerAgent.js.map +1 -1
- package/dist/agents/QualityGateAgent.js +5 -5
- package/dist/agents/QualityGateAgent.js.map +1 -1
- package/dist/agents/RegressionRiskAnalyzerAgent.js +7 -7
- package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -1
- package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -1
- package/dist/agents/RequirementsValidatorAgent.js +1 -1
- package/dist/agents/RequirementsValidatorAgent.js.map +1 -1
- package/dist/agents/SecurityScannerAgent.js +6 -6
- package/dist/agents/SecurityScannerAgent.js.map +1 -1
- package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
- package/dist/agents/TestExecutorAgent.js +1 -3
- package/dist/agents/TestExecutorAgent.js.map +1 -1
- package/dist/agents/TestGeneratorAgent.d.ts +53 -2
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +372 -31
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/agents/mixins/NeuralCapableMixin.d.ts +130 -0
- package/dist/agents/mixins/NeuralCapableMixin.d.ts.map +1 -0
- package/dist/agents/mixins/NeuralCapableMixin.js +358 -0
- package/dist/agents/mixins/NeuralCapableMixin.js.map +1 -0
- package/dist/agents/mixins/QUICCapableMixin.d.ts +34 -0
- package/dist/agents/mixins/QUICCapableMixin.d.ts.map +1 -0
- package/dist/agents/mixins/QUICCapableMixin.js +346 -0
- package/dist/agents/mixins/QUICCapableMixin.js.map +1 -0
- package/dist/cli/commands/agent/index.d.ts +5 -0
- package/dist/cli/commands/agent/index.d.ts.map +1 -1
- package/dist/cli/commands/agent/index.js +11 -6
- package/dist/cli/commands/agent/index.js.map +1 -1
- package/dist/cli/commands/agent/kill.d.ts +13 -0
- package/dist/cli/commands/agent/kill.d.ts.map +1 -0
- package/dist/cli/commands/agent/kill.js +65 -0
- package/dist/cli/commands/agent/kill.js.map +1 -0
- package/dist/cli/commands/agent/list.d.ts +19 -0
- package/dist/cli/commands/agent/list.d.ts.map +1 -0
- package/dist/cli/commands/agent/list.js +92 -0
- package/dist/cli/commands/agent/list.js.map +1 -0
- package/dist/cli/commands/agent/logs.d.ts +14 -0
- package/dist/cli/commands/agent/logs.d.ts.map +1 -0
- package/dist/cli/commands/agent/logs.js +77 -0
- package/dist/cli/commands/agent/logs.js.map +1 -0
- package/dist/cli/commands/agent/metrics.d.ts +21 -0
- package/dist/cli/commands/agent/metrics.d.ts.map +1 -0
- package/dist/cli/commands/agent/metrics.js +87 -0
- package/dist/cli/commands/agent/metrics.js.map +1 -0
- package/dist/cli/commands/agent/spawn.d.ts +28 -0
- package/dist/cli/commands/agent/spawn.d.ts.map +1 -0
- package/dist/cli/commands/agent/spawn.js +83 -0
- package/dist/cli/commands/agent/spawn.js.map +1 -0
- package/dist/cli/commands/improve/index.d.ts +70 -0
- package/dist/cli/commands/improve/index.d.ts.map +1 -0
- package/dist/cli/commands/improve/index.js +530 -0
- package/dist/cli/commands/improve/index.js.map +1 -0
- package/dist/cli/commands/init.d.ts +57 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +1127 -42
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/learn/index.d.ts +68 -0
- package/dist/cli/commands/learn/index.d.ts.map +1 -0
- package/dist/cli/commands/learn/index.js +431 -0
- package/dist/cli/commands/learn/index.js.map +1 -0
- package/dist/cli/commands/patterns/index.d.ts +75 -0
- package/dist/cli/commands/patterns/index.d.ts.map +1 -0
- package/dist/cli/commands/patterns/index.js +502 -0
- package/dist/cli/commands/patterns/index.js.map +1 -0
- package/dist/cli/commands/skills/index.d.ts +51 -0
- package/dist/cli/commands/skills/index.d.ts.map +1 -0
- package/dist/cli/commands/skills/index.js +364 -0
- package/dist/cli/commands/skills/index.js.map +1 -0
- package/dist/cli/index.js +458 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/core/EventBus.d.ts +38 -0
- package/dist/core/EventBus.d.ts.map +1 -1
- package/dist/core/EventBus.js +176 -31
- package/dist/core/EventBus.js.map +1 -1
- package/dist/core/FleetManager.d.ts +35 -1
- package/dist/core/FleetManager.d.ts.map +1 -1
- package/dist/core/FleetManager.js +121 -45
- package/dist/core/FleetManager.js.map +1 -1
- package/dist/core/MemoryManager.d.ts +19 -1
- package/dist/core/MemoryManager.d.ts.map +1 -1
- package/dist/core/MemoryManager.js +25 -1
- package/dist/core/MemoryManager.js.map +1 -1
- package/dist/core/embeddings/EmbeddingCache.d.ts +134 -0
- package/dist/core/embeddings/EmbeddingCache.d.ts.map +1 -0
- package/dist/core/embeddings/EmbeddingCache.js +239 -0
- package/dist/core/embeddings/EmbeddingCache.js.map +1 -0
- package/dist/core/embeddings/EmbeddingGenerator.d.ts +224 -0
- package/dist/core/embeddings/EmbeddingGenerator.d.ts.map +1 -0
- package/dist/core/embeddings/EmbeddingGenerator.js +459 -0
- package/dist/core/embeddings/EmbeddingGenerator.js.map +1 -0
- package/dist/core/embeddings/index.d.ts +15 -0
- package/dist/core/embeddings/index.d.ts.map +1 -0
- package/dist/core/embeddings/index.js +22 -0
- package/dist/core/embeddings/index.js.map +1 -0
- package/dist/core/memory/AgentDBIntegration.d.ts +35 -0
- package/dist/core/memory/AgentDBIntegration.d.ts.map +1 -0
- package/dist/core/memory/AgentDBIntegration.js +75 -0
- package/dist/core/memory/AgentDBIntegration.js.map +1 -0
- package/dist/core/memory/AgentDBManager.d.ts +200 -0
- package/dist/core/memory/AgentDBManager.d.ts.map +1 -0
- package/dist/core/memory/AgentDBManager.js +263 -0
- package/dist/core/memory/AgentDBManager.js.map +1 -0
- package/dist/core/memory/AgentDBService.d.ts +160 -0
- package/dist/core/memory/AgentDBService.d.ts.map +1 -0
- package/dist/core/memory/AgentDBService.js +450 -0
- package/dist/core/memory/AgentDBService.js.map +1 -0
- package/dist/core/memory/RealAgentDBAdapter.d.ts +51 -0
- package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -0
- package/dist/core/memory/RealAgentDBAdapter.js +230 -0
- package/dist/core/memory/RealAgentDBAdapter.js.map +1 -0
- package/dist/core/memory/ReasoningBankAdapter.d.ts +58 -0
- package/dist/core/memory/ReasoningBankAdapter.d.ts.map +1 -0
- package/dist/core/memory/ReasoningBankAdapter.js +80 -0
- package/dist/core/memory/ReasoningBankAdapter.js.map +1 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts +79 -2
- package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.js +243 -52
- package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
- package/dist/core/memory/index.d.ts +4 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +9 -1
- package/dist/core/memory/index.js.map +1 -1
- package/dist/core/neural/NeuralTrainer.d.ts +137 -0
- package/dist/core/neural/NeuralTrainer.d.ts.map +1 -0
- package/dist/core/neural/NeuralTrainer.js +543 -0
- package/dist/core/neural/NeuralTrainer.js.map +1 -0
- package/dist/core/neural/index.d.ts +8 -0
- package/dist/core/neural/index.d.ts.map +1 -0
- package/dist/core/neural/index.js +24 -0
- package/dist/core/neural/index.js.map +1 -0
- package/dist/core/neural/types.d.ts +216 -0
- package/dist/core/neural/types.d.ts.map +1 -0
- package/dist/core/neural/types.js +8 -0
- package/dist/core/neural/types.js.map +1 -0
- package/dist/core/security/CertificateValidator.d.ts +130 -0
- package/dist/core/security/CertificateValidator.d.ts.map +1 -0
- package/dist/core/security/CertificateValidator.js +376 -0
- package/dist/core/security/CertificateValidator.js.map +1 -0
- package/dist/core/transport/QUICTransport.d.ts +62 -0
- package/dist/core/transport/QUICTransport.d.ts.map +1 -0
- package/dist/core/transport/QUICTransport.js +381 -0
- package/dist/core/transport/QUICTransport.js.map +1 -0
- package/dist/core/transport/SecureQUICTransport.d.ts +71 -0
- package/dist/core/transport/SecureQUICTransport.d.ts.map +1 -0
- package/dist/core/transport/SecureQUICTransport.js +253 -0
- package/dist/core/transport/SecureQUICTransport.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/learning/AdvancedFeatureExtractor.d.ts +123 -0
- package/dist/learning/AdvancedFeatureExtractor.d.ts.map +1 -0
- package/dist/learning/AdvancedFeatureExtractor.js +423 -0
- package/dist/learning/AdvancedFeatureExtractor.js.map +1 -0
- package/dist/learning/FlakyFixRecommendations.d.ts +40 -0
- package/dist/learning/FlakyFixRecommendations.d.ts.map +1 -0
- package/dist/learning/FlakyFixRecommendations.js +247 -0
- package/dist/learning/FlakyFixRecommendations.js.map +1 -0
- package/dist/learning/FlakyPredictionModel.d.ts +67 -0
- package/dist/learning/FlakyPredictionModel.d.ts.map +1 -0
- package/dist/learning/FlakyPredictionModel.js +336 -0
- package/dist/learning/FlakyPredictionModel.js.map +1 -0
- package/dist/learning/FlakyTestDetector.d.ts +55 -0
- package/dist/learning/FlakyTestDetector.d.ts.map +1 -0
- package/dist/learning/FlakyTestDetector.js +237 -0
- package/dist/learning/FlakyTestDetector.js.map +1 -0
- package/dist/learning/ImprovementLoop.d.ts +133 -0
- package/dist/learning/ImprovementLoop.d.ts.map +1 -0
- package/dist/learning/ImprovementLoop.js +412 -0
- package/dist/learning/ImprovementLoop.js.map +1 -0
- package/dist/learning/ImprovementWorker.d.ts +83 -0
- package/dist/learning/ImprovementWorker.d.ts.map +1 -0
- package/dist/learning/ImprovementWorker.js +164 -0
- package/dist/learning/ImprovementWorker.js.map +1 -0
- package/dist/learning/LearningEngine.d.ts +144 -0
- package/dist/learning/LearningEngine.d.ts.map +1 -0
- package/dist/learning/LearningEngine.js +531 -0
- package/dist/learning/LearningEngine.js.map +1 -0
- package/dist/learning/NeuralPatternMatcher.d.ts +184 -0
- package/dist/learning/NeuralPatternMatcher.d.ts.map +1 -0
- package/dist/learning/NeuralPatternMatcher.js +702 -0
- package/dist/learning/NeuralPatternMatcher.js.map +1 -0
- package/dist/learning/NeuralTrainer.d.ts +209 -0
- package/dist/learning/NeuralTrainer.d.ts.map +1 -0
- package/dist/learning/NeuralTrainer.js +478 -0
- package/dist/learning/NeuralTrainer.js.map +1 -0
- package/dist/learning/PerformanceTracker.d.ts +118 -0
- package/dist/learning/PerformanceTracker.d.ts.map +1 -0
- package/dist/learning/PerformanceTracker.js +376 -0
- package/dist/learning/PerformanceTracker.js.map +1 -0
- package/dist/learning/StatisticalAnalysis.d.ts +47 -0
- package/dist/learning/StatisticalAnalysis.d.ts.map +1 -0
- package/dist/learning/StatisticalAnalysis.js +170 -0
- package/dist/learning/StatisticalAnalysis.js.map +1 -0
- package/dist/learning/SwarmIntegration.d.ts +107 -0
- package/dist/learning/SwarmIntegration.d.ts.map +1 -0
- package/dist/learning/SwarmIntegration.js +191 -0
- package/dist/learning/SwarmIntegration.js.map +1 -0
- package/dist/learning/index.d.ts +16 -0
- package/dist/learning/index.d.ts.map +1 -0
- package/dist/learning/index.js +32 -0
- package/dist/learning/index.js.map +1 -0
- package/dist/learning/types.d.ts +289 -0
- package/dist/learning/types.d.ts.map +1 -0
- package/dist/learning/types.js +25 -0
- package/dist/learning/types.js.map +1 -0
- package/dist/mcp/MCPToolRegistry.d.ts +34 -0
- package/dist/mcp/MCPToolRegistry.d.ts.map +1 -0
- package/dist/mcp/MCPToolRegistry.js +48 -0
- package/dist/mcp/MCPToolRegistry.js.map +1 -0
- package/dist/mcp/handlers/phase2/Phase2Tools.d.ts +175 -0
- package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -0
- package/dist/mcp/handlers/phase2/Phase2Tools.js +693 -0
- package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -0
- package/dist/mcp/server.d.ts +4 -4
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +94 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
- package/dist/mcp/services/AgentRegistry.js +7 -1
- package/dist/mcp/services/AgentRegistry.js.map +1 -1
- package/dist/mcp/tools.d.ts +15 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +17 -1
- package/dist/mcp/tools.js.map +1 -1
- package/dist/reasoning/CodeSignatureGenerator.d.ts +98 -0
- package/dist/reasoning/CodeSignatureGenerator.d.ts.map +1 -0
- package/dist/reasoning/CodeSignatureGenerator.js +427 -0
- package/dist/reasoning/CodeSignatureGenerator.js.map +1 -0
- package/dist/reasoning/PatternClassifier.d.ts +98 -0
- package/dist/reasoning/PatternClassifier.d.ts.map +1 -0
- package/dist/reasoning/PatternClassifier.js +345 -0
- package/dist/reasoning/PatternClassifier.js.map +1 -0
- package/dist/reasoning/PatternExtractor.d.ts +131 -0
- package/dist/reasoning/PatternExtractor.d.ts.map +1 -0
- package/dist/reasoning/PatternExtractor.js +539 -0
- package/dist/reasoning/PatternExtractor.js.map +1 -0
- package/dist/reasoning/PatternMemoryIntegration.d.ts +102 -0
- package/dist/reasoning/PatternMemoryIntegration.d.ts.map +1 -0
- package/dist/reasoning/PatternMemoryIntegration.js +336 -0
- package/dist/reasoning/PatternMemoryIntegration.js.map +1 -0
- package/dist/reasoning/QEReasoningBank.d.ts +121 -0
- package/dist/reasoning/QEReasoningBank.d.ts.map +1 -0
- package/dist/reasoning/QEReasoningBank.js +235 -0
- package/dist/reasoning/QEReasoningBank.js.map +1 -0
- package/dist/reasoning/TestTemplateCreator.d.ts +95 -0
- package/dist/reasoning/TestTemplateCreator.d.ts.map +1 -0
- package/dist/reasoning/TestTemplateCreator.js +535 -0
- package/dist/reasoning/TestTemplateCreator.js.map +1 -0
- package/dist/reasoning/index.d.ts +10 -0
- package/dist/reasoning/index.d.ts.map +1 -0
- package/dist/reasoning/index.js +31 -0
- package/dist/reasoning/index.js.map +1 -0
- package/dist/reasoning/types.d.ts +717 -0
- package/dist/reasoning/types.d.ts.map +1 -0
- package/dist/reasoning/types.js +57 -0
- package/dist/reasoning/types.js.map +1 -0
- package/dist/transport/QUICTransport.d.ts +340 -0
- package/dist/transport/QUICTransport.d.ts.map +1 -0
- package/dist/transport/QUICTransport.js +814 -0
- package/dist/transport/QUICTransport.js.map +1 -0
- package/dist/transport/UDPTransport.d.ts +348 -0
- package/dist/transport/UDPTransport.d.ts.map +1 -0
- package/dist/transport/UDPTransport.js +820 -0
- package/dist/transport/UDPTransport.js.map +1 -0
- package/dist/types/errors.d.ts +1 -1
- package/dist/types/index.d.ts +41 -0
- 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/dist/types/pattern.types.d.ts +364 -0
- package/dist/types/pattern.types.d.ts.map +1 -0
- package/dist/types/pattern.types.js +60 -0
- package/dist/types/pattern.types.js.map +1 -0
- package/dist/types/quic.d.ts +339 -0
- package/dist/types/quic.d.ts.map +1 -0
- package/dist/types/quic.js +48 -0
- package/dist/types/quic.js.map +1 -0
- package/dist/utils/Config.js +1 -1
- package/dist/utils/Config.js.map +1 -1
- package/dist/utils/Database.d.ts +14 -0
- package/dist/utils/Database.d.ts.map +1 -1
- package/dist/utils/Database.js +51 -4
- package/dist/utils/Database.js.map +1 -1
- package/dist/utils/Logger.d.ts.map +1 -1
- package/dist/utils/Logger.js +111 -26
- package/dist/utils/Logger.js.map +1 -1
- package/package.json +54 -9
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ImprovementLoop - Phase 2 (Milestone 2.2)
|
|
4
|
+
*
|
|
5
|
+
* Implements continuous improvement loop with pattern recognition,
|
|
6
|
+
* strategy optimization, and A/B testing framework.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ImprovementLoop = void 0;
|
|
10
|
+
const uuid_1 = require("uuid");
|
|
11
|
+
const Logger_1 = require("../utils/Logger");
|
|
12
|
+
/**
|
|
13
|
+
* ImprovementLoop - Continuous learning and optimization
|
|
14
|
+
*/
|
|
15
|
+
class ImprovementLoop {
|
|
16
|
+
constructor(agentId, memoryStore, learningEngine, performanceTracker) {
|
|
17
|
+
this.isRunning = false;
|
|
18
|
+
this.logger = Logger_1.Logger.getInstance();
|
|
19
|
+
this.agentId = agentId;
|
|
20
|
+
this.memoryStore = memoryStore;
|
|
21
|
+
this.learningEngine = learningEngine;
|
|
22
|
+
this.performanceTracker = performanceTracker;
|
|
23
|
+
this.strategies = new Map();
|
|
24
|
+
this.activeTests = new Map();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Initialize the improvement loop
|
|
28
|
+
*/
|
|
29
|
+
async initialize() {
|
|
30
|
+
this.logger.info(`Initializing ImprovementLoop for agent ${this.agentId}`);
|
|
31
|
+
// Load existing strategies
|
|
32
|
+
await this.loadStrategies();
|
|
33
|
+
// Register default strategies
|
|
34
|
+
await this.registerDefaultStrategies();
|
|
35
|
+
this.logger.info('ImprovementLoop initialized successfully');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Start the continuous improvement loop
|
|
39
|
+
*/
|
|
40
|
+
async start(intervalMs = 3600000) {
|
|
41
|
+
if (this.isRunning) {
|
|
42
|
+
this.logger.warn('ImprovementLoop already running');
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
this.isRunning = true;
|
|
46
|
+
this.logger.info(`Starting ImprovementLoop with ${intervalMs}ms interval`);
|
|
47
|
+
// Run immediately
|
|
48
|
+
await this.runImprovementCycle();
|
|
49
|
+
// Schedule periodic runs
|
|
50
|
+
this.loopInterval = setInterval(async () => {
|
|
51
|
+
await this.runImprovementCycle();
|
|
52
|
+
}, intervalMs);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Stop the improvement loop
|
|
56
|
+
*/
|
|
57
|
+
async stop() {
|
|
58
|
+
if (!this.isRunning) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
this.isRunning = false;
|
|
62
|
+
if (this.loopInterval) {
|
|
63
|
+
clearInterval(this.loopInterval);
|
|
64
|
+
this.loopInterval = undefined;
|
|
65
|
+
}
|
|
66
|
+
this.logger.info('ImprovementLoop stopped');
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Run a single improvement cycle
|
|
70
|
+
*/
|
|
71
|
+
async runImprovementCycle() {
|
|
72
|
+
this.logger.info('Running improvement cycle...');
|
|
73
|
+
try {
|
|
74
|
+
// 1. Analyze current performance
|
|
75
|
+
const improvement = await this.performanceTracker.calculateImprovement();
|
|
76
|
+
this.logger.debug(`Current improvement: ${improvement.improvementRate.toFixed(2)}%`);
|
|
77
|
+
// 2. Identify failure patterns
|
|
78
|
+
const failurePatterns = this.learningEngine.getFailurePatterns();
|
|
79
|
+
const failurePatternsAnalyzed = await this.analyzeFailurePatterns(failurePatterns);
|
|
80
|
+
this.logger.debug(`Analyzed ${failurePatternsAnalyzed} failure patterns`);
|
|
81
|
+
// 3. Discover optimization opportunities
|
|
82
|
+
const opportunities = await this.discoverOptimizations();
|
|
83
|
+
this.logger.debug(`Found ${opportunities.length} optimization opportunities`);
|
|
84
|
+
// 4. Run active A/B tests
|
|
85
|
+
await this.updateActiveTests();
|
|
86
|
+
// 5. Apply best strategies (with opt-in check)
|
|
87
|
+
const strategiesApplied = await this.applyBestStrategies();
|
|
88
|
+
this.logger.debug(`Applied ${strategiesApplied} strategies`);
|
|
89
|
+
// 6. Store cycle results
|
|
90
|
+
const cycleResults = {
|
|
91
|
+
timestamp: new Date(),
|
|
92
|
+
improvement,
|
|
93
|
+
failurePatterns: failurePatterns.length,
|
|
94
|
+
failurePatternsAnalyzed,
|
|
95
|
+
opportunities: opportunities.length,
|
|
96
|
+
activeTests: this.activeTests.size,
|
|
97
|
+
strategiesApplied
|
|
98
|
+
};
|
|
99
|
+
await this.storeCycleResults(cycleResults);
|
|
100
|
+
this.logger.info('Improvement cycle completed successfully');
|
|
101
|
+
return {
|
|
102
|
+
improvement,
|
|
103
|
+
failurePatternsAnalyzed,
|
|
104
|
+
opportunitiesFound: opportunities.length,
|
|
105
|
+
activeTests: this.activeTests.size,
|
|
106
|
+
strategiesApplied
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
this.logger.error('Error in improvement cycle:', error);
|
|
111
|
+
throw error;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Create A/B test for strategy comparison
|
|
116
|
+
*/
|
|
117
|
+
async createABTest(name, strategies, sampleSize = 100) {
|
|
118
|
+
const test = {
|
|
119
|
+
id: (0, uuid_1.v4)(),
|
|
120
|
+
name,
|
|
121
|
+
strategies,
|
|
122
|
+
sampleSize,
|
|
123
|
+
results: strategies.map(s => ({
|
|
124
|
+
strategy: s.name,
|
|
125
|
+
successRate: 0,
|
|
126
|
+
averageTime: 0,
|
|
127
|
+
sampleCount: 0
|
|
128
|
+
})),
|
|
129
|
+
status: 'running',
|
|
130
|
+
startedAt: new Date()
|
|
131
|
+
};
|
|
132
|
+
this.activeTests.set(test.id, test);
|
|
133
|
+
await this.memoryStore.store(`phase2/learning/${this.agentId}/abtests/${test.id}`, test, { partition: 'learning' });
|
|
134
|
+
this.logger.info(`Created A/B test: ${name} (${test.id})`);
|
|
135
|
+
return test.id;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Record A/B test result
|
|
139
|
+
*/
|
|
140
|
+
async recordTestResult(testId, strategyName, success, executionTime) {
|
|
141
|
+
const test = this.activeTests.get(testId);
|
|
142
|
+
if (!test) {
|
|
143
|
+
throw new Error(`A/B test not found: ${testId}`);
|
|
144
|
+
}
|
|
145
|
+
const result = test.results.find(r => r.strategy === strategyName);
|
|
146
|
+
if (!result) {
|
|
147
|
+
throw new Error(`Strategy not found in test: ${strategyName}`);
|
|
148
|
+
}
|
|
149
|
+
// Update result statistics
|
|
150
|
+
result.sampleCount++;
|
|
151
|
+
result.successRate = ((result.successRate * (result.sampleCount - 1)) + (success ? 1 : 0)) / result.sampleCount;
|
|
152
|
+
result.averageTime = ((result.averageTime * (result.sampleCount - 1)) + executionTime) / result.sampleCount;
|
|
153
|
+
// Check if test is complete
|
|
154
|
+
const totalSamples = test.results.reduce((sum, r) => sum + r.sampleCount, 0);
|
|
155
|
+
if (totalSamples >= test.sampleSize) {
|
|
156
|
+
await this.completeABTest(testId);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
// Update test in memory
|
|
160
|
+
await this.memoryStore.store(`phase2/learning/${this.agentId}/abtests/${testId}`, test, { partition: 'learning' });
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Complete A/B test and determine winner
|
|
165
|
+
*/
|
|
166
|
+
async completeABTest(testId) {
|
|
167
|
+
const test = this.activeTests.get(testId);
|
|
168
|
+
if (!test) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
// Find best performing strategy
|
|
172
|
+
let bestResult = test.results[0];
|
|
173
|
+
for (const result of test.results) {
|
|
174
|
+
const bestScore = bestResult.successRate * 0.7 + (1 - bestResult.averageTime / 60000) * 0.3;
|
|
175
|
+
const currentScore = result.successRate * 0.7 + (1 - result.averageTime / 60000) * 0.3;
|
|
176
|
+
if (currentScore > bestScore) {
|
|
177
|
+
bestResult = result;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
test.winner = bestResult.strategy;
|
|
181
|
+
test.status = 'completed';
|
|
182
|
+
test.completedAt = new Date();
|
|
183
|
+
// Store completed test
|
|
184
|
+
await this.memoryStore.store(`phase2/learning/${this.agentId}/abtests/${testId}`, test, { partition: 'learning' });
|
|
185
|
+
// Remove from active tests
|
|
186
|
+
this.activeTests.delete(testId);
|
|
187
|
+
this.logger.info(`A/B test completed: ${test.name}, winner: ${test.winner}`);
|
|
188
|
+
// Apply winning strategy
|
|
189
|
+
await this.applyStrategy(test.winner);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Analyze failure patterns and suggest mitigations
|
|
193
|
+
*/
|
|
194
|
+
async analyzeFailurePatterns(patterns) {
|
|
195
|
+
const highFrequencyPatterns = patterns.filter(p => p.frequency > 5 && p.confidence > 0.7);
|
|
196
|
+
let analyzedCount = 0;
|
|
197
|
+
for (const pattern of highFrequencyPatterns) {
|
|
198
|
+
// Suggest mitigation if not already present
|
|
199
|
+
if (!pattern.mitigation) {
|
|
200
|
+
const mitigation = await this.suggestMitigation(pattern);
|
|
201
|
+
pattern.mitigation = mitigation;
|
|
202
|
+
analyzedCount++;
|
|
203
|
+
this.logger.info(`Suggested mitigation for pattern ${pattern.pattern}: ${mitigation}`);
|
|
204
|
+
// Store updated pattern
|
|
205
|
+
await this.memoryStore.store(`phase2/learning/${this.agentId}/failure-patterns/${pattern.id}`, pattern, { partition: 'learning' });
|
|
206
|
+
// Emit event for monitoring
|
|
207
|
+
await this.memoryStore.storeEvent({
|
|
208
|
+
type: 'failure_pattern:analyzed',
|
|
209
|
+
payload: { pattern: pattern.pattern, mitigation, confidence: pattern.confidence },
|
|
210
|
+
source: this.agentId,
|
|
211
|
+
timestamp: Date.now()
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return analyzedCount;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Suggest mitigation for failure pattern
|
|
219
|
+
*/
|
|
220
|
+
async suggestMitigation(pattern) {
|
|
221
|
+
// Simple rule-based mitigation suggestions
|
|
222
|
+
const patternType = pattern.pattern.split(':')[0];
|
|
223
|
+
const mitigations = {
|
|
224
|
+
'timeout': 'Increase timeout threshold or implement progress checkpointing',
|
|
225
|
+
'memory': 'Implement memory pooling and garbage collection optimization',
|
|
226
|
+
'validation': 'Add input validation and sanitization before processing',
|
|
227
|
+
'network': 'Implement retry logic with exponential backoff',
|
|
228
|
+
'parsing': 'Add robust error handling for malformed input',
|
|
229
|
+
'permission': 'Implement proper permission checking before operations',
|
|
230
|
+
'default': 'Add comprehensive error handling and fallback mechanisms'
|
|
231
|
+
};
|
|
232
|
+
return mitigations[patternType] || mitigations['default'];
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Discover optimization opportunities
|
|
236
|
+
*/
|
|
237
|
+
async discoverOptimizations() {
|
|
238
|
+
const opportunities = [];
|
|
239
|
+
// Get learned patterns
|
|
240
|
+
const patterns = this.learningEngine.getPatterns();
|
|
241
|
+
// Find underutilized high-confidence patterns
|
|
242
|
+
for (const pattern of patterns) {
|
|
243
|
+
if (pattern.confidence > 0.8 && pattern.usageCount < 10) {
|
|
244
|
+
opportunities.push({
|
|
245
|
+
strategy: pattern.pattern,
|
|
246
|
+
confidence: pattern.confidence,
|
|
247
|
+
expectedImprovement: pattern.successRate * 20, // estimate 20% of success rate
|
|
248
|
+
reasoning: `High-confidence pattern (${pattern.confidence.toFixed(2)}) with low usage`,
|
|
249
|
+
alternatives: []
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return opportunities;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Update active A/B tests
|
|
257
|
+
*/
|
|
258
|
+
async updateActiveTests() {
|
|
259
|
+
for (const [testId, test] of this.activeTests.entries()) {
|
|
260
|
+
const totalSamples = test.results.reduce((sum, r) => sum + r.sampleCount, 0);
|
|
261
|
+
if (totalSamples >= test.sampleSize) {
|
|
262
|
+
await this.completeABTest(testId);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Apply best strategies based on learning (opt-in with high confidence threshold)
|
|
268
|
+
*/
|
|
269
|
+
async applyBestStrategies() {
|
|
270
|
+
// Check if auto-apply is enabled (opt-in feature)
|
|
271
|
+
const autoApplyEnabled = await this.isAutoApplyEnabled();
|
|
272
|
+
if (!autoApplyEnabled) {
|
|
273
|
+
this.logger.debug('Auto-apply disabled, skipping strategy application');
|
|
274
|
+
return 0;
|
|
275
|
+
}
|
|
276
|
+
// Only apply strategies with very high confidence (>0.9) and success rate (>0.8)
|
|
277
|
+
const patterns = this.learningEngine.getPatterns()
|
|
278
|
+
.filter(p => p.confidence > 0.9 && p.successRate > 0.8)
|
|
279
|
+
.slice(0, 3);
|
|
280
|
+
let appliedCount = 0;
|
|
281
|
+
for (const pattern of patterns) {
|
|
282
|
+
const strategyName = pattern.pattern.split(':')[1] || 'default';
|
|
283
|
+
try {
|
|
284
|
+
await this.applyStrategy(strategyName);
|
|
285
|
+
appliedCount++;
|
|
286
|
+
this.logger.info(`Auto-applied strategy: ${strategyName} (confidence: ${pattern.confidence.toFixed(2)}, success: ${pattern.successRate.toFixed(2)})`);
|
|
287
|
+
}
|
|
288
|
+
catch (error) {
|
|
289
|
+
this.logger.error(`Failed to apply strategy ${strategyName}:`, error);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return appliedCount;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Check if auto-apply is enabled (opt-in configuration)
|
|
296
|
+
*/
|
|
297
|
+
async isAutoApplyEnabled() {
|
|
298
|
+
try {
|
|
299
|
+
const config = await this.memoryStore.retrieve(`phase2/learning/${this.agentId}/auto-apply-config`, { partition: 'learning' });
|
|
300
|
+
return config?.enabled === true;
|
|
301
|
+
}
|
|
302
|
+
catch {
|
|
303
|
+
// Default to disabled for safety
|
|
304
|
+
return false;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Enable or disable auto-apply for best strategies
|
|
309
|
+
*/
|
|
310
|
+
async setAutoApply(enabled) {
|
|
311
|
+
await this.memoryStore.store(`phase2/learning/${this.agentId}/auto-apply-config`, { enabled, updatedAt: new Date() }, { partition: 'learning' });
|
|
312
|
+
this.logger.info(`Auto-apply ${enabled ? 'enabled' : 'disabled'}`);
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Apply a strategy
|
|
316
|
+
*/
|
|
317
|
+
async applyStrategy(strategyName) {
|
|
318
|
+
const strategy = this.strategies.get(strategyName);
|
|
319
|
+
if (!strategy) {
|
|
320
|
+
this.logger.warn(`Strategy not found: ${strategyName}`);
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
strategy.usageCount++;
|
|
324
|
+
// Store strategy application
|
|
325
|
+
await this.memoryStore.storeEvent({
|
|
326
|
+
type: 'strategy:applied',
|
|
327
|
+
payload: { strategy: strategyName, config: strategy.config },
|
|
328
|
+
source: this.agentId,
|
|
329
|
+
timestamp: Date.now()
|
|
330
|
+
});
|
|
331
|
+
this.logger.info(`Applied strategy: ${strategyName}`);
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Register default improvement strategies
|
|
335
|
+
*/
|
|
336
|
+
async registerDefaultStrategies() {
|
|
337
|
+
const defaultStrategies = [
|
|
338
|
+
{
|
|
339
|
+
id: (0, uuid_1.v4)(),
|
|
340
|
+
name: 'parallel-execution',
|
|
341
|
+
description: 'Execute tasks in parallel when possible',
|
|
342
|
+
config: { parallelization: 0.8 },
|
|
343
|
+
usageCount: 0,
|
|
344
|
+
createdAt: new Date()
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
id: (0, uuid_1.v4)(),
|
|
348
|
+
name: 'adaptive-retry',
|
|
349
|
+
description: 'Use adaptive retry policy with exponential backoff',
|
|
350
|
+
config: { retryPolicy: 'exponential', maxRetries: 3 },
|
|
351
|
+
usageCount: 0,
|
|
352
|
+
createdAt: new Date()
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
id: (0, uuid_1.v4)(),
|
|
356
|
+
name: 'resource-optimization',
|
|
357
|
+
description: 'Optimize resource allocation based on task complexity',
|
|
358
|
+
config: { adaptive: true },
|
|
359
|
+
usageCount: 0,
|
|
360
|
+
createdAt: new Date()
|
|
361
|
+
}
|
|
362
|
+
];
|
|
363
|
+
for (const strategy of defaultStrategies) {
|
|
364
|
+
this.strategies.set(strategy.name, strategy);
|
|
365
|
+
await this.memoryStore.store(`phase2/learning/${this.agentId}/strategies/${strategy.name}`, strategy, { partition: 'learning' });
|
|
366
|
+
}
|
|
367
|
+
this.logger.info(`Registered ${defaultStrategies.length} default strategies`);
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Load strategies from memory
|
|
371
|
+
*/
|
|
372
|
+
async loadStrategies() {
|
|
373
|
+
try {
|
|
374
|
+
const entries = await this.memoryStore.query(`phase2/learning/${this.agentId}/strategies/%`, { partition: 'learning' });
|
|
375
|
+
for (const entry of entries) {
|
|
376
|
+
const strategy = entry.value;
|
|
377
|
+
this.strategies.set(strategy.name, strategy);
|
|
378
|
+
}
|
|
379
|
+
this.logger.info(`Loaded ${this.strategies.size} strategies`);
|
|
380
|
+
}
|
|
381
|
+
catch (error) {
|
|
382
|
+
this.logger.warn('No previous strategies found');
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Store cycle results
|
|
387
|
+
*/
|
|
388
|
+
async storeCycleResults(results) {
|
|
389
|
+
await this.memoryStore.store(`phase2/learning/${this.agentId}/cycles/${results.timestamp.getTime()}`, results, { partition: 'learning', ttl: 2592000 } // 30 days
|
|
390
|
+
);
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Get active A/B tests
|
|
394
|
+
*/
|
|
395
|
+
getActiveTests() {
|
|
396
|
+
return Array.from(this.activeTests.values());
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Get all strategies
|
|
400
|
+
*/
|
|
401
|
+
getStrategies() {
|
|
402
|
+
return Array.from(this.strategies.values());
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Check if loop is running
|
|
406
|
+
*/
|
|
407
|
+
isActive() {
|
|
408
|
+
return this.isRunning;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
exports.ImprovementLoop = ImprovementLoop;
|
|
412
|
+
//# sourceMappingURL=ImprovementLoop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImprovementLoop.js","sourceRoot":"","sources":["../../src/learning/ImprovementLoop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ImprovementWorker - Phase 2 (Milestone 2.2)
|
|
3
|
+
*
|
|
4
|
+
* Background worker for running continuous improvement cycles
|
|
5
|
+
* at scheduled intervals with monitoring and error recovery.
|
|
6
|
+
*/
|
|
7
|
+
import { ImprovementLoop } from './ImprovementLoop';
|
|
8
|
+
/**
|
|
9
|
+
* Worker configuration
|
|
10
|
+
*/
|
|
11
|
+
export interface WorkerConfig {
|
|
12
|
+
intervalMs: number;
|
|
13
|
+
maxRetries: number;
|
|
14
|
+
retryDelayMs: number;
|
|
15
|
+
enabled: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Worker status
|
|
19
|
+
*/
|
|
20
|
+
export interface WorkerStatus {
|
|
21
|
+
isRunning: boolean;
|
|
22
|
+
lastCycleAt?: Date;
|
|
23
|
+
nextCycleAt?: Date;
|
|
24
|
+
cyclesCompleted: number;
|
|
25
|
+
cyclesFailed: number;
|
|
26
|
+
currentCycle?: {
|
|
27
|
+
startedAt: Date;
|
|
28
|
+
status: 'running' | 'failed' | 'completed';
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* ImprovementWorker - Manages background improvement cycles
|
|
33
|
+
*/
|
|
34
|
+
export declare class ImprovementWorker {
|
|
35
|
+
private readonly logger;
|
|
36
|
+
private readonly improvementLoop;
|
|
37
|
+
private config;
|
|
38
|
+
private status;
|
|
39
|
+
private intervalHandle?;
|
|
40
|
+
constructor(improvementLoop: ImprovementLoop, config?: Partial<WorkerConfig>);
|
|
41
|
+
/**
|
|
42
|
+
* Start the background worker
|
|
43
|
+
*/
|
|
44
|
+
start(): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Stop the background worker
|
|
47
|
+
*/
|
|
48
|
+
stop(): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Run a single cycle with retry logic
|
|
51
|
+
*/
|
|
52
|
+
private runCycleWithRetry;
|
|
53
|
+
/**
|
|
54
|
+
* Get current worker status
|
|
55
|
+
*/
|
|
56
|
+
getStatus(): WorkerStatus;
|
|
57
|
+
/**
|
|
58
|
+
* Update worker configuration
|
|
59
|
+
*/
|
|
60
|
+
updateConfig(config: Partial<WorkerConfig>): void;
|
|
61
|
+
/**
|
|
62
|
+
* Force run a cycle immediately (manual trigger)
|
|
63
|
+
*/
|
|
64
|
+
runNow(): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Update next cycle time
|
|
67
|
+
*/
|
|
68
|
+
private updateNextCycleTime;
|
|
69
|
+
/**
|
|
70
|
+
* Delay helper
|
|
71
|
+
*/
|
|
72
|
+
private delay;
|
|
73
|
+
/**
|
|
74
|
+
* Get statistics
|
|
75
|
+
*/
|
|
76
|
+
getStatistics(): {
|
|
77
|
+
cyclesCompleted: number;
|
|
78
|
+
cyclesFailed: number;
|
|
79
|
+
successRate: number;
|
|
80
|
+
uptime?: number;
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=ImprovementWorker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImprovementWorker.d.ts","sourceRoot":"","sources":["../../src/learning/ImprovementWorker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE;QACb,SAAS,EAAE,IAAI,CAAC;QAChB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;KAC5C,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,cAAc,CAAC,CAAiB;gBAGtC,eAAe,EAAE,eAAe,EAChC,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM;IAiBpC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B;;OAEG;YACW,iBAAiB;IAyC/B;;OAEG;IACH,SAAS,IAAI,YAAY;IAIzB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAUjD;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,aAAa,IAAI;QACf,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;CAaF"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ImprovementWorker - Phase 2 (Milestone 2.2)
|
|
4
|
+
*
|
|
5
|
+
* Background worker for running continuous improvement cycles
|
|
6
|
+
* at scheduled intervals with monitoring and error recovery.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ImprovementWorker = void 0;
|
|
10
|
+
const Logger_1 = require("../utils/Logger");
|
|
11
|
+
/**
|
|
12
|
+
* ImprovementWorker - Manages background improvement cycles
|
|
13
|
+
*/
|
|
14
|
+
class ImprovementWorker {
|
|
15
|
+
constructor(improvementLoop, config = {}) {
|
|
16
|
+
this.logger = Logger_1.Logger.getInstance();
|
|
17
|
+
this.improvementLoop = improvementLoop;
|
|
18
|
+
this.config = {
|
|
19
|
+
intervalMs: config.intervalMs || 3600000, // 1 hour
|
|
20
|
+
maxRetries: config.maxRetries || 3,
|
|
21
|
+
retryDelayMs: config.retryDelayMs || 60000, // 1 minute
|
|
22
|
+
enabled: config.enabled ?? true
|
|
23
|
+
};
|
|
24
|
+
this.status = {
|
|
25
|
+
isRunning: false,
|
|
26
|
+
cyclesCompleted: 0,
|
|
27
|
+
cyclesFailed: 0
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Start the background worker
|
|
32
|
+
*/
|
|
33
|
+
async start() {
|
|
34
|
+
if (this.status.isRunning) {
|
|
35
|
+
this.logger.warn('ImprovementWorker already running');
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (!this.config.enabled) {
|
|
39
|
+
this.logger.info('ImprovementWorker is disabled');
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
this.status.isRunning = true;
|
|
43
|
+
this.logger.info(`Starting ImprovementWorker with ${this.config.intervalMs}ms interval`);
|
|
44
|
+
// Run first cycle immediately
|
|
45
|
+
await this.runCycleWithRetry();
|
|
46
|
+
// Schedule periodic cycles
|
|
47
|
+
this.intervalHandle = setInterval(async () => {
|
|
48
|
+
await this.runCycleWithRetry();
|
|
49
|
+
}, this.config.intervalMs);
|
|
50
|
+
this.updateNextCycleTime();
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Stop the background worker
|
|
54
|
+
*/
|
|
55
|
+
async stop() {
|
|
56
|
+
if (!this.status.isRunning) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
this.status.isRunning = false;
|
|
60
|
+
if (this.intervalHandle) {
|
|
61
|
+
clearInterval(this.intervalHandle);
|
|
62
|
+
this.intervalHandle = undefined;
|
|
63
|
+
}
|
|
64
|
+
this.logger.info('ImprovementWorker stopped');
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Run a single cycle with retry logic
|
|
68
|
+
*/
|
|
69
|
+
async runCycleWithRetry() {
|
|
70
|
+
let retries = 0;
|
|
71
|
+
let success = false;
|
|
72
|
+
this.status.currentCycle = {
|
|
73
|
+
startedAt: new Date(),
|
|
74
|
+
status: 'running'
|
|
75
|
+
};
|
|
76
|
+
while (retries < this.config.maxRetries && !success) {
|
|
77
|
+
try {
|
|
78
|
+
const result = await this.improvementLoop.runImprovementCycle();
|
|
79
|
+
this.status.cyclesCompleted++;
|
|
80
|
+
this.status.lastCycleAt = new Date();
|
|
81
|
+
this.status.currentCycle.status = 'completed';
|
|
82
|
+
success = true;
|
|
83
|
+
this.logger.info('Improvement cycle completed', {
|
|
84
|
+
cyclesCompleted: this.status.cyclesCompleted,
|
|
85
|
+
result
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
retries++;
|
|
90
|
+
this.logger.error(`Improvement cycle failed (attempt ${retries}/${this.config.maxRetries}):`, error);
|
|
91
|
+
if (retries < this.config.maxRetries) {
|
|
92
|
+
// Wait before retrying
|
|
93
|
+
await this.delay(this.config.retryDelayMs);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
// All retries exhausted
|
|
97
|
+
this.status.cyclesFailed++;
|
|
98
|
+
this.status.currentCycle.status = 'failed';
|
|
99
|
+
this.logger.error('Improvement cycle failed after all retries');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
this.updateNextCycleTime();
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get current worker status
|
|
107
|
+
*/
|
|
108
|
+
getStatus() {
|
|
109
|
+
return { ...this.status };
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Update worker configuration
|
|
113
|
+
*/
|
|
114
|
+
updateConfig(config) {
|
|
115
|
+
this.config = { ...this.config, ...config };
|
|
116
|
+
this.logger.info('Worker configuration updated', this.config);
|
|
117
|
+
// Restart if running and interval changed
|
|
118
|
+
if (this.status.isRunning && config.intervalMs) {
|
|
119
|
+
this.stop().then(() => this.start());
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Force run a cycle immediately (manual trigger)
|
|
124
|
+
*/
|
|
125
|
+
async runNow() {
|
|
126
|
+
this.logger.info('Manually triggering improvement cycle');
|
|
127
|
+
await this.runCycleWithRetry();
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Update next cycle time
|
|
131
|
+
*/
|
|
132
|
+
updateNextCycleTime() {
|
|
133
|
+
if (this.status.isRunning) {
|
|
134
|
+
const nextCycle = new Date(Date.now() + this.config.intervalMs);
|
|
135
|
+
this.status.nextCycleAt = nextCycle;
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
this.status.nextCycleAt = undefined;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Delay helper
|
|
143
|
+
*/
|
|
144
|
+
delay(ms) {
|
|
145
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Get statistics
|
|
149
|
+
*/
|
|
150
|
+
getStatistics() {
|
|
151
|
+
const total = this.status.cyclesCompleted + this.status.cyclesFailed;
|
|
152
|
+
const successRate = total > 0 ? this.status.cyclesCompleted / total : 0;
|
|
153
|
+
return {
|
|
154
|
+
cyclesCompleted: this.status.cyclesCompleted,
|
|
155
|
+
cyclesFailed: this.status.cyclesFailed,
|
|
156
|
+
successRate,
|
|
157
|
+
uptime: this.status.lastCycleAt
|
|
158
|
+
? Date.now() - this.status.lastCycleAt.getTime()
|
|
159
|
+
: undefined
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
exports.ImprovementWorker = ImprovementWorker;
|
|
164
|
+
//# sourceMappingURL=ImprovementWorker.js.map
|