@agentic-qe/v3 3.0.0-alpha.5 → 3.0.0-alpha.7
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/assets/agents/v3/subagents/v3-qe-code-reviewer.md +339 -0
- package/assets/agents/v3/subagents/v3-qe-integration-reviewer.md +344 -0
- package/assets/agents/v3/subagents/v3-qe-performance-reviewer.md +351 -0
- package/assets/agents/v3/subagents/v3-qe-security-reviewer.md +374 -0
- package/assets/agents/v3/subagents/v3-qe-tdd-green.md +334 -0
- package/assets/agents/v3/subagents/v3-qe-tdd-red.md +329 -0
- package/assets/agents/v3/subagents/v3-qe-tdd-refactor.md +361 -0
- package/assets/agents/v3/v3-qe-accessibility-auditor.md +266 -0
- package/assets/agents/v3/v3-qe-bdd-generator.md +279 -0
- package/assets/agents/v3/v3-qe-chaos-engineer.md +265 -0
- package/assets/agents/v3/v3-qe-code-complexity.md +298 -0
- package/assets/agents/v3/v3-qe-code-intelligence.md +262 -0
- package/assets/agents/v3/v3-qe-contract-validator.md +267 -0
- package/assets/agents/v3/v3-qe-coverage-specialist.md +227 -0
- package/assets/agents/v3/v3-qe-defect-predictor.md +251 -0
- package/assets/agents/v3/v3-qe-dependency-mapper.md +277 -0
- package/assets/agents/v3/v3-qe-deployment-advisor.md +275 -0
- package/assets/agents/v3/v3-qe-flaky-hunter.md +248 -0
- package/assets/agents/v3/v3-qe-fleet-commander.md +293 -0
- package/assets/agents/v3/v3-qe-gap-detector.md +260 -0
- package/assets/agents/v3/v3-qe-graphql-tester.md +308 -0
- package/assets/agents/v3/v3-qe-impact-analyzer.md +299 -0
- package/assets/agents/v3/v3-qe-integration-tester.md +238 -0
- package/assets/agents/v3/v3-qe-kg-builder.md +273 -0
- package/assets/agents/v3/v3-qe-learning-coordinator.md +226 -0
- package/assets/agents/v3/v3-qe-load-tester.md +280 -0
- package/assets/agents/v3/v3-qe-metrics-optimizer.md +300 -0
- package/assets/agents/v3/v3-qe-mutation-tester.md +301 -0
- package/assets/agents/v3/v3-qe-parallel-executor.md +240 -0
- package/assets/agents/v3/v3-qe-pattern-learner.md +271 -0
- package/assets/agents/v3/v3-qe-performance-tester.md +262 -0
- package/assets/agents/v3/v3-qe-property-tester.md +247 -0
- package/assets/agents/v3/v3-qe-quality-gate.md +218 -0
- package/assets/agents/v3/v3-qe-queen-coordinator.md +214 -0
- package/assets/agents/v3/v3-qe-qx-partner.md +313 -0
- package/assets/agents/v3/v3-qe-regression-analyzer.md +322 -0
- package/assets/agents/v3/v3-qe-requirements-validator.md +360 -0
- package/assets/agents/v3/v3-qe-responsive-tester.md +311 -0
- package/assets/agents/v3/v3-qe-retry-handler.md +256 -0
- package/assets/agents/v3/v3-qe-risk-assessor.md +273 -0
- package/assets/agents/v3/v3-qe-root-cause-analyzer.md +286 -0
- package/assets/agents/v3/v3-qe-security-auditor.md +299 -0
- package/assets/agents/v3/v3-qe-security-scanner.md +235 -0
- package/assets/agents/v3/v3-qe-tdd-specialist.md +239 -0
- package/assets/agents/v3/v3-qe-test-architect.md +233 -0
- package/assets/agents/v3/v3-qe-transfer-specialist.md +295 -0
- package/assets/agents/v3/v3-qe-visual-tester.md +232 -0
- package/assets/skills/accessibility-testing/SKILL.md +216 -0
- package/assets/skills/agentdb-advanced/SKILL.md +550 -0
- package/assets/skills/agentdb-learning/SKILL.md +545 -0
- package/assets/skills/agentdb-memory-patterns/SKILL.md +339 -0
- package/assets/skills/agentdb-optimization/SKILL.md +509 -0
- package/assets/skills/agentdb-vector-search/SKILL.md +339 -0
- package/assets/skills/agentic-jujutsu/SKILL.md +645 -0
- package/assets/skills/agentic-quality-engineering/SKILL.md +335 -0
- package/assets/skills/api-testing-patterns/SKILL.md +294 -0
- package/assets/skills/aqe-v2-v3-migration/skill.md +322 -0
- package/assets/skills/brutal-honesty-review/README.md +218 -0
- package/assets/skills/brutal-honesty-review/SKILL.md +235 -0
- package/assets/skills/brutal-honesty-review/resources/assessment-rubrics.md +295 -0
- package/assets/skills/brutal-honesty-review/resources/review-template.md +102 -0
- package/assets/skills/brutal-honesty-review/scripts/assess-code.sh +179 -0
- package/assets/skills/brutal-honesty-review/scripts/assess-tests.sh +223 -0
- package/assets/skills/bug-reporting-excellence/SKILL.md +225 -0
- package/assets/skills/chaos-engineering-resilience/SKILL.md +158 -0
- package/assets/skills/cicd-pipeline-qe-orchestrator/README.md +304 -0
- package/assets/skills/cicd-pipeline-qe-orchestrator/SKILL.md +315 -0
- package/assets/skills/cicd-pipeline-qe-orchestrator/resources/workflows/microservice-pipeline.md +239 -0
- package/assets/skills/cicd-pipeline-qe-orchestrator/resources/workflows/mobile-pipeline.md +375 -0
- package/assets/skills/cicd-pipeline-qe-orchestrator/resources/workflows/monolith-pipeline.md +268 -0
- package/assets/skills/code-review-quality/SKILL.md +227 -0
- package/assets/skills/compatibility-testing/SKILL.md +205 -0
- package/assets/skills/compliance-testing/SKILL.md +225 -0
- package/assets/skills/consultancy-practices/SKILL.md +202 -0
- package/assets/skills/context-driven-testing/SKILL.md +196 -0
- package/assets/skills/contract-testing/SKILL.md +222 -0
- package/assets/skills/database-testing/SKILL.md +244 -0
- package/assets/skills/exploratory-testing-advanced/SKILL.md +201 -0
- package/assets/skills/flow-nexus-neural/SKILL.md +738 -0
- package/assets/skills/flow-nexus-platform/SKILL.md +1157 -0
- package/assets/skills/flow-nexus-swarm/SKILL.md +610 -0
- package/assets/skills/github-code-review/SKILL.md +1140 -0
- package/assets/skills/github-multi-repo/SKILL.md +874 -0
- package/assets/skills/github-project-management/SKILL.md +1277 -0
- package/assets/skills/github-release-management/SKILL.md +1081 -0
- package/assets/skills/github-workflow-automation/SKILL.md +1065 -0
- package/assets/skills/hive-mind-advanced/SKILL.md +712 -0
- package/assets/skills/holistic-testing-pact/SKILL.md +171 -0
- package/assets/skills/hooks-automation/SKILL.md +1201 -0
- package/assets/skills/localization-testing/SKILL.md +221 -0
- package/assets/skills/mobile-testing/SKILL.md +219 -0
- package/assets/skills/mutation-testing/SKILL.md +229 -0
- package/assets/skills/n8n-expression-testing/SKILL.md +434 -0
- package/assets/skills/n8n-integration-testing-patterns/SKILL.md +540 -0
- package/assets/skills/n8n-security-testing/SKILL.md +599 -0
- package/assets/skills/n8n-trigger-testing-strategies/SKILL.md +541 -0
- package/assets/skills/n8n-workflow-testing-fundamentals/SKILL.md +447 -0
- package/assets/skills/pair-programming/SKILL.md +1202 -0
- package/assets/skills/performance-analysis/SKILL.md +563 -0
- package/assets/skills/performance-testing/SKILL.md +310 -0
- package/assets/skills/quality-metrics/SKILL.md +225 -0
- package/assets/skills/reasoningbank-agentdb/SKILL.md +446 -0
- package/assets/skills/reasoningbank-intelligence/SKILL.md +201 -0
- package/assets/skills/refactoring-patterns/SKILL.md +205 -0
- package/assets/skills/regression-testing/SKILL.md +227 -0
- package/assets/skills/risk-based-testing/SKILL.md +206 -0
- package/assets/skills/security-testing/SKILL.md +306 -0
- package/assets/skills/sherlock-review/SKILL.md +250 -0
- package/assets/skills/shift-left-testing/SKILL.md +225 -0
- package/assets/skills/shift-right-testing/SKILL.md +227 -0
- package/assets/skills/six-thinking-hats/README.md +190 -0
- package/assets/skills/six-thinking-hats/SKILL.md +280 -0
- package/assets/skills/six-thinking-hats/resources/examples/api-testing-example.md +345 -0
- package/assets/skills/six-thinking-hats/resources/templates/solo-session-template.md +167 -0
- package/assets/skills/six-thinking-hats/resources/templates/team-session-template.md +336 -0
- package/assets/skills/skill-builder/SKILL.md +910 -0
- package/assets/skills/sparc-methodology/SKILL.md +1115 -0
- package/assets/skills/stream-chain/SKILL.md +563 -0
- package/assets/skills/swarm-advanced/SKILL.md +973 -0
- package/assets/skills/swarm-orchestration/SKILL.md +179 -0
- package/assets/skills/tdd-london-chicago/SKILL.md +244 -0
- package/assets/skills/technical-writing/SKILL.md +178 -0
- package/assets/skills/test-automation-strategy/SKILL.md +230 -0
- package/assets/skills/test-data-management/SKILL.md +270 -0
- package/assets/skills/test-design-techniques/SKILL.md +244 -0
- package/assets/skills/test-environment-management/SKILL.md +243 -0
- package/assets/skills/test-reporting-analytics/SKILL.md +214 -0
- package/assets/skills/testability-scoring/README.md +71 -0
- package/assets/skills/testability-scoring/SKILL.md +346 -0
- package/assets/skills/testability-scoring/resources/templates/config.template.js +84 -0
- package/assets/skills/testability-scoring/resources/templates/testability-scoring.spec.template.js +532 -0
- package/assets/skills/testability-scoring/scripts/generate-html-report.js +1007 -0
- package/assets/skills/testability-scoring/scripts/run-assessment.sh +70 -0
- package/assets/skills/v3-qe-chaos-resilience/SKILL.md +238 -0
- package/assets/skills/v3-qe-code-intelligence/SKILL.md +209 -0
- package/assets/skills/v3-qe-contract-testing/SKILL.md +218 -0
- package/assets/skills/v3-qe-coverage-analysis/SKILL.md +187 -0
- package/assets/skills/v3-qe-defect-intelligence/SKILL.md +205 -0
- package/assets/skills/v3-qe-learning-optimization/SKILL.md +238 -0
- package/assets/skills/v3-qe-quality-assessment/SKILL.md +213 -0
- package/assets/skills/v3-qe-requirements-validation/SKILL.md +248 -0
- package/assets/skills/v3-qe-test-execution/SKILL.md +182 -0
- package/assets/skills/v3-qe-test-generation/SKILL.md +141 -0
- package/assets/skills/v3-qe-visual-accessibility/SKILL.md +242 -0
- package/assets/skills/verification-quality/SKILL.md +649 -0
- package/assets/skills/visual-testing-advanced/SKILL.md +219 -0
- package/assets/skills/xp-practices/SKILL.md +229 -0
- package/dist/cli/bundle.js +8 -8
- package/dist/init/agents-installer.js +4 -4
- package/dist/init/agents-installer.js.map +1 -1
- package/dist/init/skills-installer.js +4 -4
- package/dist/init/skills-installer.js.map +1 -1
- package/package.json +8 -2
- package/docs/analysis/V3-INIT-REQUIREMENTS-ANALYSIS.md +0 -352
- package/implementation/README.md +0 -90
- package/implementation/adrs/ADR-030-coherence-gated-quality-gates.md +0 -312
- package/implementation/adrs/ADR-031-strange-loop-self-awareness.md +0 -484
- package/implementation/adrs/ADR-032-time-crystal-scheduling.md +0 -530
- package/implementation/adrs/ADR-033-early-exit-testing.md +0 -634
- package/implementation/adrs/ADR-034-neural-topology-optimizer.md +0 -589
- package/implementation/adrs/ADR-035-causal-discovery.md +0 -610
- package/implementation/adrs/ADR-036-result-persistence.md +0 -326
- package/implementation/adrs/ADR-037-v3-qe-agent-naming.md +0 -105
- package/implementation/adrs/ADR-038-v3-qe-memory-unification.md +0 -154
- package/implementation/adrs/ADR-039-v3-qe-mcp-optimization.md +0 -179
- package/implementation/adrs/ADR-040-v3-qe-agentic-flow-integration.md +0 -240
- package/implementation/adrs/ADR-041-v3-qe-cli-enhancement.md +0 -296
- package/implementation/adrs/ADR-042-v3-qe-token-tracking-integration.md +0 -517
- package/implementation/adrs/v3-adrs.md +0 -2783
- package/implementation/planning/AQE-V3-MASTER-PLAN.md +0 -815
- package/security-scan-report-2026-01-11.md +0 -410
- package/security-verification-report-2026-01-11.md +0 -278
- package/src/benchmarks/performance-benchmarks.ts +0 -646
- package/src/benchmarks/run-benchmarks.ts +0 -324
- package/src/causal-discovery/causal-graph.ts +0 -450
- package/src/causal-discovery/discovery-engine.ts +0 -438
- package/src/causal-discovery/index.ts +0 -117
- package/src/causal-discovery/types.ts +0 -456
- package/src/causal-discovery/weight-matrix.ts +0 -453
- package/src/cli/commands/qe-tools.ts +0 -634
- package/src/cli/index.ts +0 -1976
- package/src/compatibility/agent-mapper.ts +0 -291
- package/src/compatibility/cli-adapter.ts +0 -277
- package/src/compatibility/config-migrator.ts +0 -334
- package/src/compatibility/index.ts +0 -112
- package/src/compatibility/mcp-adapter.ts +0 -248
- package/src/compatibility/types.ts +0 -156
- package/src/coordination/claims/claim-repository.ts +0 -636
- package/src/coordination/claims/claim-service.ts +0 -675
- package/src/coordination/claims/handoff-manager.ts +0 -535
- package/src/coordination/claims/index.ts +0 -276
- package/src/coordination/claims/interfaces.ts +0 -687
- package/src/coordination/claims/work-stealing.ts +0 -436
- package/src/coordination/cross-domain-router.ts +0 -492
- package/src/coordination/index.ts +0 -127
- package/src/coordination/interfaces.ts +0 -691
- package/src/coordination/protocol-executor.ts +0 -760
- package/src/coordination/protocols/code-intelligence-index.ts +0 -855
- package/src/coordination/protocols/defect-investigation.ts +0 -1184
- package/src/coordination/protocols/index.ts +0 -11
- package/src/coordination/protocols/learning-consolidation.ts +0 -1181
- package/src/coordination/protocols/morning-sync.ts +0 -1055
- package/src/coordination/protocols/quality-gate.ts +0 -1566
- package/src/coordination/protocols/security-audit.ts +0 -1587
- package/src/coordination/queen-coordinator.ts +0 -1176
- package/src/coordination/result-saver.ts +0 -780
- package/src/coordination/task-executor.ts +0 -1146
- package/src/coordination/workflow-orchestrator.ts +0 -1917
- package/src/domains/chaos-resilience/coordinator.ts +0 -1032
- package/src/domains/chaos-resilience/index.ts +0 -143
- package/src/domains/chaos-resilience/interfaces.ts +0 -659
- package/src/domains/chaos-resilience/plugin.ts +0 -691
- package/src/domains/chaos-resilience/services/chaos-engineer.ts +0 -1097
- package/src/domains/chaos-resilience/services/index.ts +0 -19
- package/src/domains/chaos-resilience/services/load-tester.ts +0 -799
- package/src/domains/chaos-resilience/services/performance-profiler.ts +0 -792
- package/src/domains/code-intelligence/coordinator.ts +0 -631
- package/src/domains/code-intelligence/index.ts +0 -86
- package/src/domains/code-intelligence/interfaces.ts +0 -162
- package/src/domains/code-intelligence/plugin.ts +0 -451
- package/src/domains/code-intelligence/services/impact-analyzer.ts +0 -567
- package/src/domains/code-intelligence/services/index.ts +0 -26
- package/src/domains/code-intelligence/services/knowledge-graph.ts +0 -1067
- package/src/domains/code-intelligence/services/semantic-analyzer.ts +0 -901
- package/src/domains/contract-testing/coordinator.ts +0 -1038
- package/src/domains/contract-testing/index.ts +0 -122
- package/src/domains/contract-testing/interfaces.ts +0 -458
- package/src/domains/contract-testing/plugin.ts +0 -746
- package/src/domains/contract-testing/services/api-compatibility.ts +0 -748
- package/src/domains/contract-testing/services/contract-validator.ts +0 -1700
- package/src/domains/contract-testing/services/index.ts +0 -19
- package/src/domains/contract-testing/services/schema-validator.ts +0 -1102
- package/src/domains/coverage-analysis/coordinator.ts +0 -485
- package/src/domains/coverage-analysis/index.ts +0 -114
- package/src/domains/coverage-analysis/interfaces.ts +0 -142
- package/src/domains/coverage-analysis/plugin.ts +0 -172
- package/src/domains/coverage-analysis/services/coverage-analyzer.ts +0 -449
- package/src/domains/coverage-analysis/services/coverage-embedder.ts +0 -733
- package/src/domains/coverage-analysis/services/coverage-parser.ts +0 -753
- package/src/domains/coverage-analysis/services/gap-detector.ts +0 -592
- package/src/domains/coverage-analysis/services/hnsw-index.ts +0 -728
- package/src/domains/coverage-analysis/services/index.ts +0 -61
- package/src/domains/coverage-analysis/services/risk-scorer.ts +0 -540
- package/src/domains/coverage-analysis/services/sublinear-analyzer.ts +0 -747
- package/src/domains/defect-intelligence/coordinator.ts +0 -635
- package/src/domains/defect-intelligence/index.ts +0 -83
- package/src/domains/defect-intelligence/interfaces.ts +0 -152
- package/src/domains/defect-intelligence/plugin.ts +0 -483
- package/src/domains/defect-intelligence/services/causal-root-cause-analyzer.ts +0 -494
- package/src/domains/defect-intelligence/services/defect-predictor.ts +0 -852
- package/src/domains/defect-intelligence/services/index.ts +0 -37
- package/src/domains/defect-intelligence/services/pattern-learner.ts +0 -738
- package/src/domains/defect-intelligence/services/root-cause-analyzer.ts +0 -637
- package/src/domains/domain-interface.ts +0 -77
- package/src/domains/index.ts +0 -23
- package/src/domains/learning-optimization/coordinator.ts +0 -1215
- package/src/domains/learning-optimization/index.ts +0 -127
- package/src/domains/learning-optimization/interfaces.ts +0 -570
- package/src/domains/learning-optimization/plugin.ts +0 -851
- package/src/domains/learning-optimization/services/index.ts +0 -29
- package/src/domains/learning-optimization/services/learning-coordinator.ts +0 -972
- package/src/domains/learning-optimization/services/metrics-optimizer.ts +0 -915
- package/src/domains/learning-optimization/services/production-intel.ts +0 -971
- package/src/domains/learning-optimization/services/transfer-specialist.ts +0 -723
- package/src/domains/quality-assessment/coherence/gate-controller.ts +0 -549
- package/src/domains/quality-assessment/coherence/index.ts +0 -211
- package/src/domains/quality-assessment/coherence/lambda-calculator.ts +0 -384
- package/src/domains/quality-assessment/coherence/partition-detector.ts +0 -469
- package/src/domains/quality-assessment/coherence/types.ts +0 -384
- package/src/domains/quality-assessment/coordinator.ts +0 -605
- package/src/domains/quality-assessment/index.ts +0 -97
- package/src/domains/quality-assessment/interfaces.ts +0 -152
- package/src/domains/quality-assessment/plugin.ts +0 -496
- package/src/domains/quality-assessment/services/coherence-gate.ts +0 -358
- package/src/domains/quality-assessment/services/deployment-advisor.ts +0 -571
- package/src/domains/quality-assessment/services/index.ts +0 -34
- package/src/domains/quality-assessment/services/quality-analyzer.ts +0 -670
- package/src/domains/quality-assessment/services/quality-gate.ts +0 -384
- package/src/domains/requirements-validation/coordinator.ts +0 -812
- package/src/domains/requirements-validation/index.ts +0 -92
- package/src/domains/requirements-validation/interfaces.ts +0 -303
- package/src/domains/requirements-validation/plugin.ts +0 -576
- package/src/domains/requirements-validation/services/bdd-scenario-writer.ts +0 -676
- package/src/domains/requirements-validation/services/index.ts +0 -20
- package/src/domains/requirements-validation/services/requirements-validator.ts +0 -559
- package/src/domains/requirements-validation/services/testability-scorer.ts +0 -639
- package/src/domains/security-compliance/coordinator.ts +0 -757
- package/src/domains/security-compliance/index.ts +0 -120
- package/src/domains/security-compliance/interfaces.ts +0 -434
- package/src/domains/security-compliance/plugin.ts +0 -509
- package/src/domains/security-compliance/services/compliance-validator.ts +0 -1226
- package/src/domains/security-compliance/services/index.ts +0 -31
- package/src/domains/security-compliance/services/security-auditor.ts +0 -2227
- package/src/domains/security-compliance/services/security-scanner.ts +0 -2354
- package/src/domains/security-compliance/services/semgrep-integration.ts +0 -289
- package/src/domains/test-execution/coordinator.ts +0 -426
- package/src/domains/test-execution/index.ts +0 -76
- package/src/domains/test-execution/interfaces.ts +0 -119
- package/src/domains/test-execution/plugin.ts +0 -208
- package/src/domains/test-execution/services/flaky-detector.ts +0 -1240
- package/src/domains/test-execution/services/index.ts +0 -8
- package/src/domains/test-execution/services/retry-handler.ts +0 -820
- package/src/domains/test-execution/services/test-executor.ts +0 -885
- package/src/domains/test-generation/coordinator.ts +0 -656
- package/src/domains/test-generation/index.ts +0 -77
- package/src/domains/test-generation/interfaces.ts +0 -118
- package/src/domains/test-generation/plugin.ts +0 -397
- package/src/domains/test-generation/services/index.ts +0 -23
- package/src/domains/test-generation/services/pattern-matcher.ts +0 -1725
- package/src/domains/test-generation/services/test-generator.ts +0 -2750
- package/src/domains/visual-accessibility/coordinator.ts +0 -860
- package/src/domains/visual-accessibility/index.ts +0 -116
- package/src/domains/visual-accessibility/interfaces.ts +0 -435
- package/src/domains/visual-accessibility/plugin.ts +0 -568
- package/src/domains/visual-accessibility/services/accessibility-tester.ts +0 -982
- package/src/domains/visual-accessibility/services/axe-core-audit.ts +0 -630
- package/src/domains/visual-accessibility/services/index.ts +0 -28
- package/src/domains/visual-accessibility/services/responsive-tester.ts +0 -934
- package/src/domains/visual-accessibility/services/visual-tester.ts +0 -458
- package/src/early-exit/early-exit-controller.ts +0 -490
- package/src/early-exit/early-exit-decision.ts +0 -391
- package/src/early-exit/index.ts +0 -115
- package/src/early-exit/quality-signal.ts +0 -389
- package/src/early-exit/speculative-executor.ts +0 -505
- package/src/early-exit/types.ts +0 -407
- package/src/feedback/coverage-learner.ts +0 -456
- package/src/feedback/feedback-loop.ts +0 -426
- package/src/feedback/index.ts +0 -72
- package/src/feedback/pattern-promotion.ts +0 -373
- package/src/feedback/quality-score-calculator.ts +0 -334
- package/src/feedback/test-outcome-tracker.ts +0 -450
- package/src/feedback/types.ts +0 -497
- package/src/index.ts +0 -224
- package/src/init/agents-installer.ts +0 -536
- package/src/init/index.ts +0 -80
- package/src/init/init-wizard.ts +0 -1061
- package/src/init/project-analyzer.ts +0 -696
- package/src/init/self-configurator.ts +0 -488
- package/src/init/skills-installer.ts +0 -467
- package/src/init/types.ts +0 -432
- package/src/integrations/ruvector/ast-complexity.ts +0 -470
- package/src/integrations/ruvector/coverage-router.ts +0 -594
- package/src/integrations/ruvector/diff-risk-classifier.ts +0 -759
- package/src/integrations/ruvector/fallback.ts +0 -942
- package/src/integrations/ruvector/graph-boundaries.ts +0 -809
- package/src/integrations/ruvector/index.ts +0 -363
- package/src/integrations/ruvector/interfaces.ts +0 -609
- package/src/integrations/ruvector/q-learning-router.ts +0 -550
- package/src/kernel/agent-coordinator.ts +0 -165
- package/src/kernel/agentdb-backend.ts +0 -504
- package/src/kernel/event-bus.ts +0 -129
- package/src/kernel/hybrid-backend.ts +0 -538
- package/src/kernel/index.ts +0 -28
- package/src/kernel/interfaces.ts +0 -257
- package/src/kernel/kernel.ts +0 -285
- package/src/kernel/memory-backend.ts +0 -169
- package/src/kernel/memory-factory.ts +0 -293
- package/src/kernel/plugin-loader.ts +0 -179
- package/src/learning/index.ts +0 -219
- package/src/learning/pattern-store.ts +0 -990
- package/src/learning/qe-guidance.ts +0 -832
- package/src/learning/qe-hooks.ts +0 -644
- package/src/learning/qe-patterns.ts +0 -449
- package/src/learning/qe-reasoning-bank.ts +0 -951
- package/src/learning/real-embeddings.ts +0 -277
- package/src/learning/real-qe-reasoning-bank.ts +0 -833
- package/src/learning/sqlite-persistence.ts +0 -554
- package/src/mcp/entry.ts +0 -59
- package/src/mcp/handlers/agent-handlers.ts +0 -285
- package/src/mcp/handlers/core-handlers.ts +0 -317
- package/src/mcp/handlers/domain-handlers.ts +0 -1444
- package/src/mcp/handlers/index.ts +0 -57
- package/src/mcp/handlers/memory-handlers.ts +0 -338
- package/src/mcp/handlers/task-handlers.ts +0 -363
- package/src/mcp/index.ts +0 -30
- package/src/mcp/metrics/index.ts +0 -14
- package/src/mcp/metrics/metrics-collector.ts +0 -503
- package/src/mcp/protocol-server.ts +0 -752
- package/src/mcp/security/cve-prevention.ts +0 -742
- package/src/mcp/security/index.ts +0 -356
- package/src/mcp/security/oauth21-provider.ts +0 -821
- package/src/mcp/security/rate-limiter.ts +0 -615
- package/src/mcp/security/sampling-server.ts +0 -662
- package/src/mcp/security/schema-validator.ts +0 -855
- package/src/mcp/server.ts +0 -657
- package/src/mcp/tool-registry.ts +0 -391
- package/src/mcp/tools/base.ts +0 -399
- package/src/mcp/tools/chaos-resilience/inject.ts +0 -699
- package/src/mcp/tools/code-intelligence/analyze.ts +0 -745
- package/src/mcp/tools/contract-testing/validate.ts +0 -708
- package/src/mcp/tools/coverage-analysis/index.ts +0 -770
- package/src/mcp/tools/defect-intelligence/predict.ts +0 -466
- package/src/mcp/tools/index.ts +0 -214
- package/src/mcp/tools/learning-optimization/optimize.ts +0 -772
- package/src/mcp/tools/quality-assessment/evaluate.ts +0 -385
- package/src/mcp/tools/registry.ts +0 -248
- package/src/mcp/tools/requirements-validation/validate.ts +0 -394
- package/src/mcp/tools/security-compliance/scan.ts +0 -365
- package/src/mcp/tools/test-execution/execute.ts +0 -291
- package/src/mcp/tools/test-generation/generate.ts +0 -544
- package/src/mcp/tools/visual-accessibility/index.ts +0 -791
- package/src/mcp/transport/index.ts +0 -31
- package/src/mcp/transport/stdio.ts +0 -318
- package/src/mcp/types.ts +0 -543
- package/src/neural-optimizer/index.ts +0 -111
- package/src/neural-optimizer/replay-buffer.ts +0 -455
- package/src/neural-optimizer/swarm-topology.ts +0 -508
- package/src/neural-optimizer/topology-optimizer.ts +0 -828
- package/src/neural-optimizer/types.ts +0 -481
- package/src/neural-optimizer/value-network.ts +0 -351
- package/src/optimization/auto-tuner.ts +0 -817
- package/src/optimization/index.ts +0 -77
- package/src/optimization/metric-collectors.ts +0 -474
- package/src/optimization/qe-workers.ts +0 -704
- package/src/optimization/tuning-algorithm.ts +0 -401
- package/src/optimization/types.ts +0 -314
- package/src/routing/index.ts +0 -51
- package/src/routing/qe-agent-registry.ts +0 -963
- package/src/routing/qe-task-router.ts +0 -564
- package/src/routing/routing-feedback.ts +0 -365
- package/src/routing/types.ts +0 -406
- package/src/shared/embeddings/embedding-cache.ts +0 -157
- package/src/shared/embeddings/index.ts +0 -50
- package/src/shared/embeddings/nomic-embedder.ts +0 -404
- package/src/shared/embeddings/ollama-client.ts +0 -195
- package/src/shared/embeddings/types.ts +0 -147
- package/src/shared/entities/agent.ts +0 -141
- package/src/shared/entities/base-entity.ts +0 -79
- package/src/shared/entities/index.ts +0 -6
- package/src/shared/events/domain-events.ts +0 -259
- package/src/shared/events/index.ts +0 -5
- package/src/shared/git/git-analyzer.ts +0 -656
- package/src/shared/git/index.ts +0 -11
- package/src/shared/http/http-client.ts +0 -420
- package/src/shared/http/index.ts +0 -13
- package/src/shared/index.ts +0 -41
- package/src/shared/io/file-reader.ts +0 -525
- package/src/shared/io/index.ts +0 -25
- package/src/shared/llm/cache.ts +0 -473
- package/src/shared/llm/circuit-breaker.ts +0 -369
- package/src/shared/llm/cost-tracker.ts +0 -460
- package/src/shared/llm/index.ts +0 -140
- package/src/shared/llm/interfaces.ts +0 -629
- package/src/shared/llm/provider-manager.ts +0 -685
- package/src/shared/llm/providers/claude.ts +0 -524
- package/src/shared/llm/providers/index.ts +0 -8
- package/src/shared/llm/providers/ollama.ts +0 -575
- package/src/shared/llm/providers/openai.ts +0 -609
- package/src/shared/metrics/code-metrics.ts +0 -520
- package/src/shared/metrics/index.ts +0 -23
- package/src/shared/metrics/system-metrics.ts +0 -353
- package/src/shared/parsers/index.ts +0 -6
- package/src/shared/parsers/typescript-parser.ts +0 -841
- package/src/shared/security/compliance-patterns.ts +0 -666
- package/src/shared/security/index.ts +0 -30
- package/src/shared/security/osv-client.ts +0 -468
- package/src/shared/types/index.ts +0 -150
- package/src/shared/value-objects/index.ts +0 -273
- package/src/strange-loop/healing-controller.ts +0 -833
- package/src/strange-loop/index.ts +0 -104
- package/src/strange-loop/self-model.ts +0 -494
- package/src/strange-loop/strange-loop.ts +0 -446
- package/src/strange-loop/swarm-observer.ts +0 -448
- package/src/strange-loop/topology-analyzer.ts +0 -565
- package/src/strange-loop/types.ts +0 -640
- package/src/time-crystal/default-phases.ts +0 -520
- package/src/time-crystal/index.ts +0 -164
- package/src/time-crystal/oscillator.ts +0 -425
- package/src/time-crystal/phase-executor.ts +0 -521
- package/src/time-crystal/scheduler.ts +0 -1025
- package/src/time-crystal/test-runner.ts +0 -787
- package/src/time-crystal/types.ts +0 -421
- package/src/workers/base-worker.ts +0 -304
- package/src/workers/daemon.ts +0 -264
- package/src/workers/index.ts +0 -119
- package/src/workers/interfaces.ts +0 -393
- package/src/workers/worker-manager.ts +0 -424
- package/src/workers/workers/compliance-checker.ts +0 -445
- package/src/workers/workers/coverage-tracker.ts +0 -344
- package/src/workers/workers/defect-predictor.ts +0 -375
- package/src/workers/workers/flaky-detector.ts +0 -390
- package/src/workers/workers/index.ts +0 -17
- package/src/workers/workers/learning-consolidation.ts +0 -442
- package/src/workers/workers/performance-baseline.ts +0 -434
- package/src/workers/workers/quality-gate.ts +0 -419
- package/src/workers/workers/regression-monitor.ts +0 -357
- package/src/workers/workers/security-scan.ts +0 -349
- package/src/workers/workers/test-health.ts +0 -359
- package/tests/integration/code-intelligence/knowledge-graph-real.test.ts +0 -540
- package/tests/integration/coordination/cross-domain-router.test.ts +0 -403
- package/tests/integration/coordination/protocol-executor.test.ts +0 -454
- package/tests/integration/coordination/workflow-orchestrator.test.ts +0 -418
- package/tests/integration/feedback/feedback-loop-integration.test.ts +0 -560
- package/tests/integration/migration/v2-to-v3-migration.test.ts +0 -471
- package/tests/integration/parsers/typescript-parser.test.ts +0 -463
- package/tests/integration/security/vulnerability-detection.test.ts +0 -628
- package/tests/integration/test-execution/coordinator.test.ts +0 -410
- package/tests/integration/test-generation/coordinator.test.ts +0 -361
- package/tests/mocks/index.ts +0 -228
- package/tests/time-crystal/default-phases.test.ts +0 -476
- package/tests/time-crystal/oscillator.test.ts +0 -541
- package/tests/time-crystal/phase-executor.test.ts +0 -653
- package/tests/time-crystal/scheduler.test.ts +0 -626
- package/tests/time-crystal/test-runner.test.ts +0 -594
- package/tests/unit/causal-discovery/causal-graph.test.ts +0 -504
- package/tests/unit/causal-discovery/causal-root-cause-analyzer.test.ts +0 -347
- package/tests/unit/causal-discovery/discovery-engine.test.ts +0 -435
- package/tests/unit/causal-discovery/weight-matrix.test.ts +0 -328
- package/tests/unit/cli/cli.test.ts +0 -341
- package/tests/unit/cli/commands.test.ts +0 -414
- package/tests/unit/cli/init-command.test.ts +0 -274
- package/tests/unit/cli/migrate-command.test.ts +0 -396
- package/tests/unit/coordination/claims/claim-service.test.ts +0 -949
- package/tests/unit/coordination/claims/handoff-manager.test.ts +0 -773
- package/tests/unit/coordination/claims/work-stealing.test.ts +0 -492
- package/tests/unit/coordination/queen-coordinator.test.ts +0 -966
- package/tests/unit/coordination/result-saver.test.ts +0 -653
- package/tests/unit/coordination/task-executor.test.ts +0 -810
- package/tests/unit/domains/chaos-resilience/chaos-engineer.test.ts +0 -484
- package/tests/unit/domains/chaos-resilience/load-tester.test.ts +0 -559
- package/tests/unit/domains/chaos-resilience/performance-profiler.test.ts +0 -490
- package/tests/unit/domains/code-intelligence/impact-analyzer.test.ts +0 -560
- package/tests/unit/domains/code-intelligence/knowledge-graph.test.ts +0 -460
- package/tests/unit/domains/code-intelligence/semantic-analyzer.test.ts +0 -584
- package/tests/unit/domains/contract-testing/api-compatibility.test.ts +0 -483
- package/tests/unit/domains/contract-testing/contract-validator.test.ts +0 -370
- package/tests/unit/domains/contract-testing/schema-validator.test.ts +0 -610
- package/tests/unit/domains/coverage-analysis/coverage-embedder.test.ts +0 -298
- package/tests/unit/domains/coverage-analysis/hnsw-index.test.ts +0 -292
- package/tests/unit/domains/coverage-analysis/sublinear-analyzer.test.ts +0 -506
- package/tests/unit/domains/defect-intelligence/defect-predictor.test.ts +0 -370
- package/tests/unit/domains/defect-intelligence/pattern-learner.test.ts +0 -546
- package/tests/unit/domains/defect-intelligence/root-cause-analyzer.test.ts +0 -534
- package/tests/unit/domains/learning-optimization/learning-coordinator.test.ts +0 -541
- package/tests/unit/domains/learning-optimization/metrics-optimizer.test.ts +0 -552
- package/tests/unit/domains/learning-optimization/production-intel.test.ts +0 -589
- package/tests/unit/domains/learning-optimization/transfer-specialist.test.ts +0 -453
- package/tests/unit/domains/quality-assessment/coherence-gate.test.ts +0 -1006
- package/tests/unit/domains/quality-assessment/deployment-advisor.test.ts +0 -515
- package/tests/unit/domains/quality-assessment/quality-analyzer.test.ts +0 -401
- package/tests/unit/domains/quality-assessment/quality-gate.test.ts +0 -324
- package/tests/unit/domains/requirements-validation/bdd-scenario-writer.test.ts +0 -479
- package/tests/unit/domains/requirements-validation/requirements-validator.test.ts +0 -452
- package/tests/unit/domains/requirements-validation/testability-scorer.test.ts +0 -505
- package/tests/unit/domains/security-compliance/compliance-validator.test.ts +0 -500
- package/tests/unit/domains/security-compliance/security-auditor.test.ts +0 -498
- package/tests/unit/domains/security-compliance/security-scanner.test.ts +0 -412
- package/tests/unit/domains/visual-accessibility/accessibility-tester.test.ts +0 -432
- package/tests/unit/domains/visual-accessibility/responsive-tester.test.ts +0 -506
- package/tests/unit/domains/visual-accessibility/visual-tester.test.ts +0 -412
- package/tests/unit/early-exit/early-exit-controller.test.ts +0 -548
- package/tests/unit/early-exit/early-exit-decision.test.ts +0 -617
- package/tests/unit/early-exit/index.test.ts +0 -254
- package/tests/unit/early-exit/quality-signal.test.ts +0 -589
- package/tests/unit/early-exit/speculative-executor.test.ts +0 -453
- package/tests/unit/feedback/coverage-learner.test.ts +0 -288
- package/tests/unit/feedback/feedback-loop.test.ts +0 -458
- package/tests/unit/feedback/pattern-promotion.test.ts +0 -390
- package/tests/unit/feedback/quality-score-calculator.test.ts +0 -364
- package/tests/unit/feedback/test-outcome-tracker.test.ts +0 -243
- package/tests/unit/init/init-wizard.test.ts +0 -881
- package/tests/unit/init/project-analyzer.test.ts +0 -807
- package/tests/unit/init/self-configurator.test.ts +0 -493
- package/tests/unit/integrations/ruvector/ast-complexity.test.ts +0 -240
- package/tests/unit/integrations/ruvector/coverage-router.test.ts +0 -366
- package/tests/unit/integrations/ruvector/diff-risk-classifier.test.ts +0 -340
- package/tests/unit/integrations/ruvector/graph-boundaries.test.ts +0 -355
- package/tests/unit/integrations/ruvector/q-learning-router.test.ts +0 -314
- package/tests/unit/kernel/agent-coordinator.test.ts +0 -220
- package/tests/unit/kernel/event-bus.test.ts +0 -197
- package/tests/unit/learning/qe-reasoning-bank.test.ts +0 -666
- package/tests/unit/learning/real-qe-reasoning-bank.benchmark.test.ts +0 -415
- package/tests/unit/mcp/mcp-server.test.ts +0 -544
- package/tests/unit/mcp/metrics/metrics-collector.test.ts +0 -340
- package/tests/unit/mcp/security/cve-prevention.test.ts +0 -512
- package/tests/unit/mcp/security/oauth21-provider.test.ts +0 -624
- package/tests/unit/mcp/security/rate-limiter.test.ts +0 -410
- package/tests/unit/mcp/security/sampling-server.test.ts +0 -420
- package/tests/unit/mcp/security/schema-validator.test.ts +0 -494
- package/tests/unit/mcp/tools/base.test.ts +0 -336
- package/tests/unit/mcp/tools/domain-tools.test.ts +0 -759
- package/tests/unit/mcp/tools/registry.test.ts +0 -240
- package/tests/unit/neural-optimizer/replay-buffer.test.ts +0 -403
- package/tests/unit/neural-optimizer/swarm-topology.test.ts +0 -473
- package/tests/unit/neural-optimizer/topology-optimizer.test.ts +0 -595
- package/tests/unit/neural-optimizer/value-network.test.ts +0 -343
- package/tests/unit/optimization/auto-tuner.test.ts +0 -506
- package/tests/unit/optimization/metric-collectors.test.ts +0 -352
- package/tests/unit/optimization/qe-workers.test.ts +0 -407
- package/tests/unit/optimization/tuning-algorithm.test.ts +0 -467
- package/tests/unit/routing/qe-agent-registry.test.ts +0 -229
- package/tests/unit/routing/qe-task-router.test.ts +0 -390
- package/tests/unit/routing/routing-feedback.test.ts +0 -339
- package/tests/unit/shared/embeddings/nomic-embedder.test.ts +0 -419
- package/tests/unit/shared/http/http-client.test.ts +0 -719
- package/tests/unit/shared/io/file-reader.test.ts +0 -511
- package/tests/unit/shared/llm/cache.test.ts +0 -391
- package/tests/unit/shared/llm/circuit-breaker.test.ts +0 -293
- package/tests/unit/shared/llm/cost-tracker.test.ts +0 -431
- package/tests/unit/shared/llm/provider-manager.test.ts +0 -550
- package/tests/unit/shared/llm/providers.test.ts +0 -532
- package/tests/unit/shared/parsers/typescript-parser.test.ts +0 -693
- package/tests/unit/shared/value-objects.test.ts +0 -184
- package/tests/unit/strange-loop/strange-loop.test.ts +0 -1170
- package/tests/unit/workers/base-worker.test.ts +0 -341
- package/tests/unit/workers/daemon.test.ts +0 -291
- package/tests/unit/workers/worker-manager.test.ts +0 -284
- package/tsconfig.json +0 -32
- package/vitest.config.ts +0 -27
|
@@ -1,637 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agentic QE v3 - Root Cause Analyzer Service
|
|
3
|
-
* Analyzes defects to identify root causes and contributing factors
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { Result, ok, err } from '../../../shared/types';
|
|
7
|
-
import { MemoryBackend } from '../../../kernel/interfaces';
|
|
8
|
-
import {
|
|
9
|
-
RootCauseRequest,
|
|
10
|
-
RootCauseAnalysis,
|
|
11
|
-
ContributingFactor,
|
|
12
|
-
TimelineEvent,
|
|
13
|
-
} from '../interfaces';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Interface for the root cause analyzer service
|
|
17
|
-
*/
|
|
18
|
-
export interface IRootCauseAnalyzerService {
|
|
19
|
-
analyzeRootCause(request: RootCauseRequest): Promise<Result<RootCauseAnalysis, Error>>;
|
|
20
|
-
findRelatedDefects(defectId: string): Promise<Result<string[], Error>>;
|
|
21
|
-
generateTimeline(defectId: string): Promise<Result<TimelineEvent[], Error>>;
|
|
22
|
-
suggestRemediation(rootCause: string): Promise<string[]>;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Configuration for the root cause analyzer
|
|
27
|
-
*/
|
|
28
|
-
export interface RootCauseAnalyzerConfig {
|
|
29
|
-
maxTimelineEvents: number;
|
|
30
|
-
maxRelatedFiles: number;
|
|
31
|
-
minConfidenceThreshold: number;
|
|
32
|
-
analyzerNamespace: string;
|
|
33
|
-
enableDeepAnalysis: boolean;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const DEFAULT_CONFIG: RootCauseAnalyzerConfig = {
|
|
37
|
-
maxTimelineEvents: 20,
|
|
38
|
-
maxRelatedFiles: 10,
|
|
39
|
-
minConfidenceThreshold: 0.3,
|
|
40
|
-
analyzerNamespace: 'defect-intelligence:root-cause',
|
|
41
|
-
enableDeepAnalysis: true,
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Known root cause categories with analysis patterns
|
|
46
|
-
*/
|
|
47
|
-
const ROOT_CAUSE_CATEGORIES: Record<
|
|
48
|
-
string,
|
|
49
|
-
{
|
|
50
|
-
symptoms: string[];
|
|
51
|
-
causes: string[];
|
|
52
|
-
impact: 'high' | 'medium' | 'low';
|
|
53
|
-
remediation: string[];
|
|
54
|
-
}
|
|
55
|
-
> = {
|
|
56
|
-
'logic-error': {
|
|
57
|
-
symptoms: ['wrong result', 'incorrect output', 'unexpected behavior', 'calculation'],
|
|
58
|
-
causes: [
|
|
59
|
-
'Incorrect algorithm implementation',
|
|
60
|
-
'Missing edge case handling',
|
|
61
|
-
'Wrong operator usage',
|
|
62
|
-
'Off-by-one error',
|
|
63
|
-
],
|
|
64
|
-
impact: 'high',
|
|
65
|
-
remediation: [
|
|
66
|
-
'Review algorithm logic step by step',
|
|
67
|
-
'Add comprehensive unit tests',
|
|
68
|
-
'Use property-based testing for edge cases',
|
|
69
|
-
],
|
|
70
|
-
},
|
|
71
|
-
'null-reference': {
|
|
72
|
-
symptoms: ['null', 'undefined', 'cannot read property', 'NullPointerException'],
|
|
73
|
-
causes: [
|
|
74
|
-
'Missing null check',
|
|
75
|
-
'Uninitialized variable',
|
|
76
|
-
'Race condition in initialization',
|
|
77
|
-
'API returning null unexpectedly',
|
|
78
|
-
],
|
|
79
|
-
impact: 'high',
|
|
80
|
-
remediation: [
|
|
81
|
-
'Add defensive null checks',
|
|
82
|
-
'Use Optional/Maybe pattern',
|
|
83
|
-
'Initialize variables at declaration',
|
|
84
|
-
],
|
|
85
|
-
},
|
|
86
|
-
'concurrency': {
|
|
87
|
-
symptoms: ['race', 'deadlock', 'intermittent', 'timing', 'thread'],
|
|
88
|
-
causes: [
|
|
89
|
-
'Missing synchronization',
|
|
90
|
-
'Shared mutable state',
|
|
91
|
-
'Lock ordering issue',
|
|
92
|
-
'Async operation not awaited',
|
|
93
|
-
],
|
|
94
|
-
impact: 'high',
|
|
95
|
-
remediation: [
|
|
96
|
-
'Use immutable data structures',
|
|
97
|
-
'Implement proper locking strategy',
|
|
98
|
-
'Add synchronization primitives',
|
|
99
|
-
],
|
|
100
|
-
},
|
|
101
|
-
'resource-management': {
|
|
102
|
-
symptoms: ['memory', 'leak', 'connection', 'file handle', 'exhausted'],
|
|
103
|
-
causes: [
|
|
104
|
-
'Resource not properly released',
|
|
105
|
-
'Missing cleanup in error path',
|
|
106
|
-
'Connection pool misconfiguration',
|
|
107
|
-
'Circular reference preventing GC',
|
|
108
|
-
],
|
|
109
|
-
impact: 'medium',
|
|
110
|
-
remediation: [
|
|
111
|
-
'Use try-finally or using blocks',
|
|
112
|
-
'Implement IDisposable pattern',
|
|
113
|
-
'Configure resource pools properly',
|
|
114
|
-
],
|
|
115
|
-
},
|
|
116
|
-
'configuration': {
|
|
117
|
-
symptoms: ['config', 'environment', 'setting', 'property', 'parameter'],
|
|
118
|
-
causes: [
|
|
119
|
-
'Wrong configuration value',
|
|
120
|
-
'Missing required setting',
|
|
121
|
-
'Environment mismatch',
|
|
122
|
-
'Hardcoded values',
|
|
123
|
-
],
|
|
124
|
-
impact: 'medium',
|
|
125
|
-
remediation: [
|
|
126
|
-
'Validate configuration at startup',
|
|
127
|
-
'Use configuration schema validation',
|
|
128
|
-
'Document all required settings',
|
|
129
|
-
],
|
|
130
|
-
},
|
|
131
|
-
'integration': {
|
|
132
|
-
symptoms: ['api', 'service', 'external', 'timeout', 'connection'],
|
|
133
|
-
causes: [
|
|
134
|
-
'External service change',
|
|
135
|
-
'API contract violation',
|
|
136
|
-
'Network configuration issue',
|
|
137
|
-
'Missing retry logic',
|
|
138
|
-
],
|
|
139
|
-
impact: 'high',
|
|
140
|
-
remediation: [
|
|
141
|
-
'Implement circuit breaker pattern',
|
|
142
|
-
'Add contract tests',
|
|
143
|
-
'Use retry with exponential backoff',
|
|
144
|
-
],
|
|
145
|
-
},
|
|
146
|
-
'data-integrity': {
|
|
147
|
-
symptoms: ['corrupt', 'invalid', 'constraint', 'duplicate', 'data'],
|
|
148
|
-
causes: [
|
|
149
|
-
'Missing validation',
|
|
150
|
-
'Database constraint violated',
|
|
151
|
-
'Race condition in data update',
|
|
152
|
-
'Inconsistent state transitions',
|
|
153
|
-
],
|
|
154
|
-
impact: 'high',
|
|
155
|
-
remediation: [
|
|
156
|
-
'Add input validation at all layers',
|
|
157
|
-
'Use database transactions properly',
|
|
158
|
-
'Implement optimistic locking',
|
|
159
|
-
],
|
|
160
|
-
},
|
|
161
|
-
'security': {
|
|
162
|
-
symptoms: ['injection', 'auth', 'permission', 'access', 'security'],
|
|
163
|
-
causes: [
|
|
164
|
-
'Missing input sanitization',
|
|
165
|
-
'Broken authentication',
|
|
166
|
-
'Insufficient authorization checks',
|
|
167
|
-
'Sensitive data exposure',
|
|
168
|
-
],
|
|
169
|
-
impact: 'high',
|
|
170
|
-
remediation: [
|
|
171
|
-
'Sanitize all user inputs',
|
|
172
|
-
'Implement proper authentication',
|
|
173
|
-
'Follow principle of least privilege',
|
|
174
|
-
],
|
|
175
|
-
},
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Root Cause Analyzer Service Implementation
|
|
180
|
-
* Uses symptom analysis and heuristics to identify root causes
|
|
181
|
-
*/
|
|
182
|
-
export class RootCauseAnalyzerService implements IRootCauseAnalyzerService {
|
|
183
|
-
private readonly config: RootCauseAnalyzerConfig;
|
|
184
|
-
|
|
185
|
-
constructor(
|
|
186
|
-
private readonly memory: MemoryBackend,
|
|
187
|
-
config: Partial<RootCauseAnalyzerConfig> = {}
|
|
188
|
-
) {
|
|
189
|
-
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Analyze root cause of a defect
|
|
194
|
-
*/
|
|
195
|
-
async analyzeRootCause(
|
|
196
|
-
request: RootCauseRequest
|
|
197
|
-
): Promise<Result<RootCauseAnalysis, Error>> {
|
|
198
|
-
try {
|
|
199
|
-
const { defectId, symptoms, context = {} } = request;
|
|
200
|
-
|
|
201
|
-
if (symptoms.length === 0) {
|
|
202
|
-
return err(new Error('No symptoms provided for analysis'));
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
// Identify the root cause category
|
|
206
|
-
const categoryAnalysis = this.identifyRootCauseCategory(symptoms);
|
|
207
|
-
|
|
208
|
-
// Calculate confidence based on symptom matches
|
|
209
|
-
const confidence = this.calculateConfidence(categoryAnalysis, symptoms);
|
|
210
|
-
|
|
211
|
-
if (confidence < this.config.minConfidenceThreshold) {
|
|
212
|
-
return ok({
|
|
213
|
-
defectId,
|
|
214
|
-
rootCause: 'Unable to determine root cause with sufficient confidence',
|
|
215
|
-
confidence,
|
|
216
|
-
contributingFactors: [],
|
|
217
|
-
relatedFiles: [],
|
|
218
|
-
recommendations: ['Provide more symptoms for better analysis'],
|
|
219
|
-
timeline: [],
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
// Identify contributing factors
|
|
224
|
-
const contributingFactors = await this.identifyContributingFactors(
|
|
225
|
-
categoryAnalysis.category,
|
|
226
|
-
symptoms,
|
|
227
|
-
context
|
|
228
|
-
);
|
|
229
|
-
|
|
230
|
-
// Find related files
|
|
231
|
-
const relatedFiles = await this.findRelatedFiles(defectId, symptoms);
|
|
232
|
-
|
|
233
|
-
// Generate recommendations
|
|
234
|
-
const recommendations = this.generateRecommendations(
|
|
235
|
-
categoryAnalysis,
|
|
236
|
-
contributingFactors
|
|
237
|
-
);
|
|
238
|
-
|
|
239
|
-
// Build timeline
|
|
240
|
-
const timeline = await this.generateTimeline(defectId);
|
|
241
|
-
|
|
242
|
-
// Store analysis for future reference
|
|
243
|
-
await this.storeAnalysis({
|
|
244
|
-
defectId,
|
|
245
|
-
rootCause: categoryAnalysis.rootCause,
|
|
246
|
-
category: categoryAnalysis.category,
|
|
247
|
-
confidence,
|
|
248
|
-
symptoms,
|
|
249
|
-
timestamp: new Date(),
|
|
250
|
-
});
|
|
251
|
-
|
|
252
|
-
return ok({
|
|
253
|
-
defectId,
|
|
254
|
-
rootCause: categoryAnalysis.rootCause,
|
|
255
|
-
confidence,
|
|
256
|
-
contributingFactors,
|
|
257
|
-
relatedFiles,
|
|
258
|
-
recommendations,
|
|
259
|
-
timeline: timeline.success ? timeline.value : [],
|
|
260
|
-
});
|
|
261
|
-
} catch (error) {
|
|
262
|
-
return err(error instanceof Error ? error : new Error(String(error)));
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
/**
|
|
267
|
-
* Find defects related to a given defect
|
|
268
|
-
*/
|
|
269
|
-
async findRelatedDefects(defectId: string): Promise<Result<string[], Error>> {
|
|
270
|
-
try {
|
|
271
|
-
// Look for defects with similar root causes
|
|
272
|
-
const analysis = await this.memory.get<{ category: string }>(
|
|
273
|
-
`${this.config.analyzerNamespace}:analysis:${defectId}`
|
|
274
|
-
);
|
|
275
|
-
|
|
276
|
-
if (!analysis) {
|
|
277
|
-
return ok([]);
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
// Search for other defects in the same category
|
|
281
|
-
const keys = await this.memory.search(
|
|
282
|
-
`${this.config.analyzerNamespace}:analysis:*`,
|
|
283
|
-
50
|
|
284
|
-
);
|
|
285
|
-
|
|
286
|
-
const relatedDefects: string[] = [];
|
|
287
|
-
for (const key of keys) {
|
|
288
|
-
const otherAnalysis = await this.memory.get<{
|
|
289
|
-
defectId: string;
|
|
290
|
-
category: string;
|
|
291
|
-
}>(key);
|
|
292
|
-
|
|
293
|
-
if (
|
|
294
|
-
otherAnalysis &&
|
|
295
|
-
otherAnalysis.defectId !== defectId &&
|
|
296
|
-
otherAnalysis.category === analysis.category
|
|
297
|
-
) {
|
|
298
|
-
relatedDefects.push(otherAnalysis.defectId);
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
return ok(relatedDefects);
|
|
303
|
-
} catch (error) {
|
|
304
|
-
return err(error instanceof Error ? error : new Error(String(error)));
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
/**
|
|
309
|
-
* Generate timeline of events related to a defect
|
|
310
|
-
*/
|
|
311
|
-
async generateTimeline(defectId: string): Promise<Result<TimelineEvent[], Error>> {
|
|
312
|
-
try {
|
|
313
|
-
const timeline: TimelineEvent[] = [];
|
|
314
|
-
|
|
315
|
-
// Look for stored events
|
|
316
|
-
const eventsKey = `${this.config.analyzerNamespace}:events:${defectId}`;
|
|
317
|
-
const storedEvents = await this.memory.get<TimelineEvent[]>(eventsKey);
|
|
318
|
-
|
|
319
|
-
if (storedEvents) {
|
|
320
|
-
timeline.push(...storedEvents);
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
// Look for related changes in code intelligence
|
|
324
|
-
const changes = await this.memory.search(
|
|
325
|
-
`code-intelligence:change:*`,
|
|
326
|
-
this.config.maxTimelineEvents
|
|
327
|
-
);
|
|
328
|
-
|
|
329
|
-
for (const changeKey of changes) {
|
|
330
|
-
const change = await this.memory.get<{
|
|
331
|
-
timestamp: string;
|
|
332
|
-
description: string;
|
|
333
|
-
file: string;
|
|
334
|
-
}>(changeKey);
|
|
335
|
-
|
|
336
|
-
if (change) {
|
|
337
|
-
timeline.push({
|
|
338
|
-
timestamp: new Date(change.timestamp),
|
|
339
|
-
event: `Code change: ${change.description}`,
|
|
340
|
-
relevance: 0.5,
|
|
341
|
-
});
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
// Sort by timestamp and limit
|
|
346
|
-
const sortedTimeline = timeline
|
|
347
|
-
.sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime())
|
|
348
|
-
.slice(0, this.config.maxTimelineEvents);
|
|
349
|
-
|
|
350
|
-
return ok(sortedTimeline);
|
|
351
|
-
} catch (error) {
|
|
352
|
-
return err(error instanceof Error ? error : new Error(String(error)));
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
/**
|
|
357
|
-
* Suggest remediation steps for a root cause
|
|
358
|
-
*/
|
|
359
|
-
async suggestRemediation(rootCause: string): Promise<string[]> {
|
|
360
|
-
const remediation: string[] = [];
|
|
361
|
-
|
|
362
|
-
// Match root cause to known categories
|
|
363
|
-
for (const [category, data] of Object.entries(ROOT_CAUSE_CATEGORIES)) {
|
|
364
|
-
if (
|
|
365
|
-
rootCause.toLowerCase().includes(category) ||
|
|
366
|
-
data.causes.some((c) => rootCause.toLowerCase().includes(c.toLowerCase()))
|
|
367
|
-
) {
|
|
368
|
-
remediation.push(...data.remediation);
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
if (remediation.length === 0) {
|
|
373
|
-
remediation.push('Review the affected code thoroughly');
|
|
374
|
-
remediation.push('Add tests to prevent regression');
|
|
375
|
-
remediation.push('Document the fix for future reference');
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
return [...new Set(remediation)];
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
// ============================================================================
|
|
382
|
-
// Private Helper Methods
|
|
383
|
-
// ============================================================================
|
|
384
|
-
|
|
385
|
-
private identifyRootCauseCategory(
|
|
386
|
-
symptoms: string[]
|
|
387
|
-
): { category: string; rootCause: string; matchScore: number } {
|
|
388
|
-
let bestMatch = {
|
|
389
|
-
category: 'unknown',
|
|
390
|
-
rootCause: 'Undetermined root cause',
|
|
391
|
-
matchScore: 0,
|
|
392
|
-
};
|
|
393
|
-
|
|
394
|
-
const symptomText = symptoms.join(' ').toLowerCase();
|
|
395
|
-
|
|
396
|
-
for (const [category, data] of Object.entries(ROOT_CAUSE_CATEGORIES)) {
|
|
397
|
-
let matchScore = 0;
|
|
398
|
-
|
|
399
|
-
for (const symptom of data.symptoms) {
|
|
400
|
-
if (symptomText.includes(symptom.toLowerCase())) {
|
|
401
|
-
matchScore += 1;
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
// Normalize by number of symptoms
|
|
406
|
-
matchScore = matchScore / data.symptoms.length;
|
|
407
|
-
|
|
408
|
-
if (matchScore > bestMatch.matchScore) {
|
|
409
|
-
// Select the most likely cause from the category
|
|
410
|
-
const likelyCause = this.selectLikelyCause(data.causes, symptomText);
|
|
411
|
-
bestMatch = {
|
|
412
|
-
category,
|
|
413
|
-
rootCause: likelyCause,
|
|
414
|
-
matchScore,
|
|
415
|
-
};
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
return bestMatch;
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
private selectLikelyCause(causes: string[], symptomText: string): string {
|
|
423
|
-
// Score each cause by word overlap with symptoms
|
|
424
|
-
let bestCause = causes[0];
|
|
425
|
-
let bestScore = 0;
|
|
426
|
-
|
|
427
|
-
for (const cause of causes) {
|
|
428
|
-
const words = cause.toLowerCase().split(/\s+/);
|
|
429
|
-
let score = 0;
|
|
430
|
-
for (const word of words) {
|
|
431
|
-
if (word.length > 3 && symptomText.includes(word)) {
|
|
432
|
-
score += 1;
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
if (score > bestScore) {
|
|
436
|
-
bestScore = score;
|
|
437
|
-
bestCause = cause;
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
return bestCause;
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
private calculateConfidence(
|
|
445
|
-
categoryAnalysis: { matchScore: number },
|
|
446
|
-
symptoms: string[]
|
|
447
|
-
): number {
|
|
448
|
-
// Base confidence from match score
|
|
449
|
-
let confidence = categoryAnalysis.matchScore;
|
|
450
|
-
|
|
451
|
-
// Adjust based on number of symptoms
|
|
452
|
-
if (symptoms.length >= 3) {
|
|
453
|
-
confidence *= 1.1;
|
|
454
|
-
} else if (symptoms.length === 1) {
|
|
455
|
-
confidence *= 0.8;
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
// Cap at 1.0
|
|
459
|
-
return Math.min(1, Math.max(0, confidence));
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
private async identifyContributingFactors(
|
|
463
|
-
category: string,
|
|
464
|
-
symptoms: string[],
|
|
465
|
-
context: Record<string, unknown>
|
|
466
|
-
): Promise<ContributingFactor[]> {
|
|
467
|
-
const factors: ContributingFactor[] = [];
|
|
468
|
-
const categoryData = ROOT_CAUSE_CATEGORIES[category];
|
|
469
|
-
|
|
470
|
-
if (!categoryData) {
|
|
471
|
-
return factors;
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
// Add factors based on category
|
|
475
|
-
factors.push({
|
|
476
|
-
factor: `Category: ${category}`,
|
|
477
|
-
impact: categoryData.impact,
|
|
478
|
-
evidence: symptoms.slice(0, 3),
|
|
479
|
-
});
|
|
480
|
-
|
|
481
|
-
// Add context-based factors
|
|
482
|
-
if (context.recentChanges) {
|
|
483
|
-
factors.push({
|
|
484
|
-
factor: 'Recent code changes',
|
|
485
|
-
impact: 'high',
|
|
486
|
-
evidence: ['Code was recently modified'],
|
|
487
|
-
});
|
|
488
|
-
}
|
|
489
|
-
|
|
490
|
-
if (context.highTraffic) {
|
|
491
|
-
factors.push({
|
|
492
|
-
factor: 'High traffic conditions',
|
|
493
|
-
impact: 'medium',
|
|
494
|
-
evidence: ['Occurred during peak load'],
|
|
495
|
-
});
|
|
496
|
-
}
|
|
497
|
-
|
|
498
|
-
if (context.environment) {
|
|
499
|
-
factors.push({
|
|
500
|
-
factor: `Environment: ${context.environment}`,
|
|
501
|
-
impact: 'medium',
|
|
502
|
-
evidence: [`Observed in ${context.environment} environment`],
|
|
503
|
-
});
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
// Look for historical patterns
|
|
507
|
-
const historicalFactors = await this.getHistoricalFactors(category);
|
|
508
|
-
factors.push(...historicalFactors);
|
|
509
|
-
|
|
510
|
-
return factors;
|
|
511
|
-
}
|
|
512
|
-
|
|
513
|
-
private async getHistoricalFactors(
|
|
514
|
-
category: string
|
|
515
|
-
): Promise<ContributingFactor[]> {
|
|
516
|
-
const factors: ContributingFactor[] = [];
|
|
517
|
-
|
|
518
|
-
// Search for historical analyses in the same category
|
|
519
|
-
const historicalKey = `${this.config.analyzerNamespace}:history:${category}`;
|
|
520
|
-
const history = await this.memory.get<{
|
|
521
|
-
occurrences: number;
|
|
522
|
-
commonFactors: string[];
|
|
523
|
-
}>(historicalKey);
|
|
524
|
-
|
|
525
|
-
if (history && history.occurrences > 1) {
|
|
526
|
-
factors.push({
|
|
527
|
-
factor: 'Recurring issue pattern',
|
|
528
|
-
impact: 'high',
|
|
529
|
-
evidence: [
|
|
530
|
-
`Similar issues occurred ${history.occurrences} times`,
|
|
531
|
-
...history.commonFactors.slice(0, 2),
|
|
532
|
-
],
|
|
533
|
-
});
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
return factors;
|
|
537
|
-
}
|
|
538
|
-
|
|
539
|
-
private async findRelatedFiles(
|
|
540
|
-
_defectId: string,
|
|
541
|
-
symptoms: string[]
|
|
542
|
-
): Promise<string[]> {
|
|
543
|
-
const files: Set<string> = new Set();
|
|
544
|
-
|
|
545
|
-
// Extract file paths from symptoms
|
|
546
|
-
for (const symptom of symptoms) {
|
|
547
|
-
const filePatterns = symptom.match(/[\w\-]+\.(ts|js|tsx|jsx|py|java|go)/g);
|
|
548
|
-
if (filePatterns) {
|
|
549
|
-
filePatterns.forEach((f) => files.add(f));
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
// Look for path-like patterns
|
|
553
|
-
const pathPatterns = symptom.match(/(?:src|lib|app)\/[\w\/\-]+/g);
|
|
554
|
-
if (pathPatterns) {
|
|
555
|
-
pathPatterns.forEach((p) => files.add(p));
|
|
556
|
-
}
|
|
557
|
-
}
|
|
558
|
-
|
|
559
|
-
// Look for files from code intelligence
|
|
560
|
-
const codeIntelKeys = await this.memory.search(
|
|
561
|
-
'code-intelligence:file:*',
|
|
562
|
-
this.config.maxRelatedFiles
|
|
563
|
-
);
|
|
564
|
-
|
|
565
|
-
for (const key of codeIntelKeys.slice(0, this.config.maxRelatedFiles - files.size)) {
|
|
566
|
-
const fileInfo = await this.memory.get<{ path: string }>(key);
|
|
567
|
-
if (fileInfo) {
|
|
568
|
-
files.add(fileInfo.path);
|
|
569
|
-
}
|
|
570
|
-
}
|
|
571
|
-
|
|
572
|
-
return Array.from(files).slice(0, this.config.maxRelatedFiles);
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
private generateRecommendations(
|
|
576
|
-
categoryAnalysis: { category: string; rootCause: string },
|
|
577
|
-
contributingFactors: ContributingFactor[]
|
|
578
|
-
): string[] {
|
|
579
|
-
const recommendations: string[] = [];
|
|
580
|
-
const categoryData = ROOT_CAUSE_CATEGORIES[categoryAnalysis.category];
|
|
581
|
-
|
|
582
|
-
// Add category-specific remediation
|
|
583
|
-
if (categoryData) {
|
|
584
|
-
recommendations.push(...categoryData.remediation);
|
|
585
|
-
}
|
|
586
|
-
|
|
587
|
-
// Add factor-specific recommendations
|
|
588
|
-
for (const factor of contributingFactors) {
|
|
589
|
-
if (factor.impact === 'high') {
|
|
590
|
-
recommendations.push(`Address: ${factor.factor}`);
|
|
591
|
-
}
|
|
592
|
-
}
|
|
593
|
-
|
|
594
|
-
// Add general recommendations
|
|
595
|
-
recommendations.push('Add regression tests for this scenario');
|
|
596
|
-
recommendations.push('Document the root cause and fix');
|
|
597
|
-
|
|
598
|
-
return [...new Set(recommendations)].slice(0, 8);
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
private async storeAnalysis(analysis: {
|
|
602
|
-
defectId: string;
|
|
603
|
-
rootCause: string;
|
|
604
|
-
category: string;
|
|
605
|
-
confidence: number;
|
|
606
|
-
symptoms: string[];
|
|
607
|
-
timestamp: Date;
|
|
608
|
-
}): Promise<void> {
|
|
609
|
-
// Store the analysis
|
|
610
|
-
await this.memory.set(
|
|
611
|
-
`${this.config.analyzerNamespace}:analysis:${analysis.defectId}`,
|
|
612
|
-
analysis,
|
|
613
|
-
{ namespace: 'defect-intelligence', persist: true }
|
|
614
|
-
);
|
|
615
|
-
|
|
616
|
-
// Update historical data for the category
|
|
617
|
-
const historyKey = `${this.config.analyzerNamespace}:history:${analysis.category}`;
|
|
618
|
-
const history = (await this.memory.get<{
|
|
619
|
-
occurrences: number;
|
|
620
|
-
commonFactors: string[];
|
|
621
|
-
}>(historyKey)) || { occurrences: 0, commonFactors: [] };
|
|
622
|
-
|
|
623
|
-
history.occurrences += 1;
|
|
624
|
-
// Add new symptoms to common factors
|
|
625
|
-
for (const symptom of analysis.symptoms.slice(0, 2)) {
|
|
626
|
-
if (!history.commonFactors.includes(symptom)) {
|
|
627
|
-
history.commonFactors.push(symptom);
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
|
-
history.commonFactors = history.commonFactors.slice(0, 10);
|
|
631
|
-
|
|
632
|
-
await this.memory.set(historyKey, history, {
|
|
633
|
-
namespace: 'defect-intelligence',
|
|
634
|
-
persist: true,
|
|
635
|
-
});
|
|
636
|
-
}
|
|
637
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agentic QE v3 - Base Domain Interface
|
|
3
|
-
* Template for all domain implementations
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { DomainName, DomainEvent } from '../shared/types';
|
|
7
|
-
import { DomainPlugin, DomainHealth, EventBus, MemoryBackend } from '../kernel/interfaces';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Abstract base class for domain plugins
|
|
11
|
-
*/
|
|
12
|
-
export abstract class BaseDomainPlugin implements DomainPlugin {
|
|
13
|
-
protected _initialized = false;
|
|
14
|
-
protected _health: DomainHealth = {
|
|
15
|
-
status: 'healthy',
|
|
16
|
-
agents: { total: 0, active: 0, idle: 0, failed: 0 },
|
|
17
|
-
errors: [],
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
constructor(
|
|
21
|
-
protected readonly eventBus: EventBus,
|
|
22
|
-
protected readonly memory: MemoryBackend
|
|
23
|
-
) {}
|
|
24
|
-
|
|
25
|
-
abstract get name(): DomainName;
|
|
26
|
-
abstract get version(): string;
|
|
27
|
-
abstract get dependencies(): DomainName[];
|
|
28
|
-
|
|
29
|
-
isReady(): boolean {
|
|
30
|
-
return this._initialized;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
getHealth(): DomainHealth {
|
|
34
|
-
return { ...this._health };
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
async initialize(): Promise<void> {
|
|
38
|
-
if (this._initialized) return;
|
|
39
|
-
|
|
40
|
-
await this.onInitialize();
|
|
41
|
-
this.subscribeToEvents();
|
|
42
|
-
this._initialized = true;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
async dispose(): Promise<void> {
|
|
46
|
-
await this.onDispose();
|
|
47
|
-
this._initialized = false;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
async handleEvent(event: DomainEvent): Promise<void> {
|
|
51
|
-
await this.onEvent(event);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
abstract getAPI<T>(): T;
|
|
55
|
-
|
|
56
|
-
// Override in subclasses
|
|
57
|
-
protected async onInitialize(): Promise<void> {}
|
|
58
|
-
protected async onDispose(): Promise<void> {}
|
|
59
|
-
protected async onEvent(_event: DomainEvent): Promise<void> {}
|
|
60
|
-
protected subscribeToEvents(): void {}
|
|
61
|
-
|
|
62
|
-
// Helper methods
|
|
63
|
-
protected async publishEvent<T>(type: string, payload: T): Promise<void> {
|
|
64
|
-
const event: DomainEvent<T> = {
|
|
65
|
-
id: crypto.randomUUID(),
|
|
66
|
-
type,
|
|
67
|
-
timestamp: new Date(),
|
|
68
|
-
source: this.name,
|
|
69
|
-
payload,
|
|
70
|
-
};
|
|
71
|
-
await this.eventBus.publish(event);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
protected updateHealth(updates: Partial<DomainHealth>): void {
|
|
75
|
-
this._health = { ...this._health, ...updates };
|
|
76
|
-
}
|
|
77
|
-
}
|