agentic-qe 3.3.2 → 3.3.4
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/v3/README.md +100 -0
- package/.claude/agents/v3/qe-accessibility-auditor.md +112 -11
- package/.claude/agents/v3/qe-bdd-generator.md +40 -0
- package/.claude/agents/v3/qe-coverage-specialist.md +39 -0
- package/.claude/agents/v3/qe-defect-predictor.md +36 -0
- package/.claude/agents/v3/qe-gap-detector.md +39 -0
- package/.claude/agents/v3/qe-pattern-learner.md +31 -0
- package/.claude/agents/v3/qe-product-factors-assessor.md +34 -0
- package/.claude/agents/v3/qe-quality-criteria-recommender.md +32 -0
- package/.claude/agents/v3/qe-quality-gate.md +39 -0
- package/.claude/agents/v3/qe-requirements-validator.md +37 -0
- package/.claude/agents/v3/qe-risk-assessor.md +33 -0
- package/.claude/agents/v3/qe-tdd-specialist.md +33 -0
- package/.claude/agents/v3/qe-test-architect.md +36 -0
- package/.claude/helpers/statusline-v3.cjs +96 -27
- package/.claude/skills/README.md +30 -104
- package/.claude/skills/a11y-ally/SKILL.md +1658 -0
- package/.claude/skills/qcsd-ideation-swarm/SKILL.md +1750 -0
- package/.claude/skills/skills-manifest.json +78 -8
- package/README.md +24 -7
- package/package.json +1 -1
- package/scripts/demo-warmup.sh +45 -0
- package/scripts/fetch-content.js +460 -0
- package/scripts/sync-claude-flow.cjs +99 -0
- package/v3/CHANGELOG.md +188 -0
- package/v3/README.md +18 -9
- package/v3/assets/agents/v3/README.md +100 -0
- package/v3/assets/agents/v3/qe-accessibility-auditor.md +112 -11
- package/v3/assets/agents/v3/qe-bdd-generator.md +40 -0
- package/v3/assets/agents/v3/qe-coverage-specialist.md +39 -0
- package/v3/assets/agents/v3/qe-defect-predictor.md +36 -0
- package/v3/assets/agents/v3/qe-gap-detector.md +39 -0
- package/v3/assets/agents/v3/qe-pattern-learner.md +31 -0
- package/v3/assets/agents/v3/qe-product-factors-assessor.md +34 -0
- package/v3/assets/agents/v3/qe-quality-criteria-recommender.md +32 -0
- package/v3/assets/agents/v3/qe-quality-gate.md +39 -0
- package/v3/assets/agents/v3/qe-requirements-validator.md +37 -0
- package/v3/assets/agents/v3/qe-risk-assessor.md +33 -0
- package/v3/assets/agents/v3/qe-tdd-specialist.md +33 -0
- package/v3/assets/agents/v3/qe-test-architect.md +36 -0
- package/v3/assets/hooks/cross-phase-memory.yaml +253 -0
- package/v3/assets/skills/a11y-ally/SKILL.md +1658 -0
- package/v3/assets/skills/qcsd-ideation-swarm/SKILL.md +1750 -0
- package/v3/assets/skills/skills-manifest.json +753 -0
- package/v3/dist/adapters/claude-flow/model-router-bridge.d.ts.map +1 -1
- package/v3/dist/adapters/claude-flow/model-router-bridge.js +6 -4
- package/v3/dist/adapters/claude-flow/model-router-bridge.js.map +1 -1
- package/v3/dist/adapters/claude-flow/pretrain-bridge.d.ts.map +1 -1
- package/v3/dist/adapters/claude-flow/pretrain-bridge.js +13 -8
- package/v3/dist/adapters/claude-flow/pretrain-bridge.js.map +1 -1
- package/v3/dist/adapters/claude-flow/trajectory-bridge.d.ts.map +1 -1
- package/v3/dist/adapters/claude-flow/trajectory-bridge.js +9 -6
- package/v3/dist/adapters/claude-flow/trajectory-bridge.js.map +1 -1
- package/v3/dist/benchmarks/performance-benchmarks.d.ts.map +1 -1
- package/v3/dist/benchmarks/performance-benchmarks.js +5 -3
- package/v3/dist/benchmarks/performance-benchmarks.js.map +1 -1
- package/v3/dist/cli/bundle.js +47008 -36837
- package/v3/dist/cli/commands/hooks.d.ts.map +1 -1
- package/v3/dist/cli/commands/hooks.js +288 -0
- package/v3/dist/cli/commands/hooks.js.map +1 -1
- package/v3/dist/cli/commands/sync.d.ts.map +1 -1
- package/v3/dist/cli/commands/sync.js +0 -6
- package/v3/dist/cli/commands/sync.js.map +1 -1
- package/v3/dist/cli/handlers/init-handler.d.ts.map +1 -1
- package/v3/dist/cli/handlers/init-handler.js +11 -0
- package/v3/dist/cli/handlers/init-handler.js.map +1 -1
- package/v3/dist/cli/index.js +14 -2
- package/v3/dist/cli/index.js.map +1 -1
- package/v3/dist/cli/scheduler/persistent-scheduler.d.ts.map +1 -1
- package/v3/dist/cli/scheduler/persistent-scheduler.js +3 -2
- package/v3/dist/cli/scheduler/persistent-scheduler.js.map +1 -1
- package/v3/dist/cli/wizards/test-wizard.d.ts.map +1 -1
- package/v3/dist/cli/wizards/test-wizard.js +6 -4
- package/v3/dist/cli/wizards/test-wizard.js.map +1 -1
- package/v3/dist/coordination/consensus/domain-findings.d.ts +202 -0
- package/v3/dist/coordination/consensus/domain-findings.d.ts.map +1 -0
- package/v3/dist/coordination/consensus/domain-findings.js +66 -0
- package/v3/dist/coordination/consensus/domain-findings.js.map +1 -0
- package/v3/dist/coordination/consensus/index.d.ts +2 -0
- package/v3/dist/coordination/consensus/index.d.ts.map +1 -1
- package/v3/dist/coordination/consensus/index.js +4 -0
- package/v3/dist/coordination/consensus/index.js.map +1 -1
- package/v3/dist/coordination/consensus/providers/native-learning-provider.d.ts.map +1 -1
- package/v3/dist/coordination/consensus/providers/native-learning-provider.js +10 -8
- package/v3/dist/coordination/consensus/providers/native-learning-provider.js.map +1 -1
- package/v3/dist/coordination/consensus/providers/ollama-provider.d.ts.map +1 -1
- package/v3/dist/coordination/consensus/providers/ollama-provider.js +5 -4
- package/v3/dist/coordination/consensus/providers/ollama-provider.js.map +1 -1
- package/v3/dist/coordination/consensus/providers/openai-provider.d.ts.map +1 -1
- package/v3/dist/coordination/consensus/providers/openai-provider.js +5 -4
- package/v3/dist/coordination/consensus/providers/openai-provider.js.map +1 -1
- package/v3/dist/coordination/constants.d.ts +198 -0
- package/v3/dist/coordination/constants.d.ts.map +1 -0
- package/v3/dist/coordination/constants.js +210 -0
- package/v3/dist/coordination/constants.js.map +1 -0
- package/v3/dist/coordination/index.d.ts +1 -0
- package/v3/dist/coordination/index.d.ts.map +1 -1
- package/v3/dist/coordination/index.js +4 -0
- package/v3/dist/coordination/index.js.map +1 -1
- package/v3/dist/coordination/mincut/dream-integration.d.ts.map +1 -1
- package/v3/dist/coordination/mincut/dream-integration.js +5 -1
- package/v3/dist/coordination/mincut/dream-integration.js.map +1 -1
- package/v3/dist/coordination/mixins/consensus-enabled-domain.d.ts +225 -0
- package/v3/dist/coordination/mixins/consensus-enabled-domain.d.ts.map +1 -0
- package/v3/dist/coordination/mixins/consensus-enabled-domain.js +466 -0
- package/v3/dist/coordination/mixins/consensus-enabled-domain.js.map +1 -0
- package/v3/dist/coordination/mixins/index.d.ts +14 -0
- package/v3/dist/coordination/mixins/index.d.ts.map +1 -0
- package/v3/dist/coordination/mixins/index.js +28 -0
- package/v3/dist/coordination/mixins/index.js.map +1 -0
- package/v3/dist/coordination/mixins/mincut-aware-domain.d.ts +227 -0
- package/v3/dist/coordination/mixins/mincut-aware-domain.d.ts.map +1 -0
- package/v3/dist/coordination/mixins/mincut-aware-domain.js +368 -0
- package/v3/dist/coordination/mixins/mincut-aware-domain.js.map +1 -0
- package/v3/dist/coordination/queen-coordinator.d.ts +19 -1
- package/v3/dist/coordination/queen-coordinator.d.ts.map +1 -1
- package/v3/dist/coordination/queen-coordinator.js +87 -7
- package/v3/dist/coordination/queen-coordinator.js.map +1 -1
- package/v3/dist/coordination/task-executor.d.ts +21 -1
- package/v3/dist/coordination/task-executor.d.ts.map +1 -1
- package/v3/dist/coordination/task-executor.js +227 -11
- package/v3/dist/coordination/task-executor.js.map +1 -1
- package/v3/dist/coordination/workflow-orchestrator.d.ts.map +1 -1
- package/v3/dist/coordination/workflow-orchestrator.js +261 -0
- package/v3/dist/coordination/workflow-orchestrator.js.map +1 -1
- package/v3/dist/domains/chaos-resilience/coordinator.d.ts +92 -0
- package/v3/dist/domains/chaos-resilience/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/chaos-resilience/coordinator.js +241 -1
- package/v3/dist/domains/chaos-resilience/coordinator.js.map +1 -1
- package/v3/dist/domains/chaos-resilience/plugin.d.ts +14 -3
- package/v3/dist/domains/chaos-resilience/plugin.d.ts.map +1 -1
- package/v3/dist/domains/chaos-resilience/plugin.js +97 -1
- package/v3/dist/domains/chaos-resilience/plugin.js.map +1 -1
- package/v3/dist/domains/chaos-resilience/services/chaos-engineer.d.ts +29 -2
- package/v3/dist/domains/chaos-resilience/services/chaos-engineer.d.ts.map +1 -1
- package/v3/dist/domains/chaos-resilience/services/chaos-engineer.js +62 -3
- package/v3/dist/domains/chaos-resilience/services/chaos-engineer.js.map +1 -1
- package/v3/dist/domains/chaos-resilience/services/performance-profiler.d.ts.map +1 -1
- package/v3/dist/domains/chaos-resilience/services/performance-profiler.js +12 -8
- package/v3/dist/domains/chaos-resilience/services/performance-profiler.js.map +1 -1
- package/v3/dist/domains/code-intelligence/coordinator.d.ts +112 -0
- package/v3/dist/domains/code-intelligence/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/code-intelligence/coordinator.js +221 -0
- package/v3/dist/domains/code-intelligence/coordinator.js.map +1 -1
- package/v3/dist/domains/code-intelligence/plugin.d.ts +13 -3
- package/v3/dist/domains/code-intelligence/plugin.d.ts.map +1 -1
- package/v3/dist/domains/code-intelligence/plugin.js +85 -0
- package/v3/dist/domains/code-intelligence/plugin.js.map +1 -1
- package/v3/dist/domains/code-intelligence/services/knowledge-graph.d.ts +66 -2
- package/v3/dist/domains/code-intelligence/services/knowledge-graph.d.ts.map +1 -1
- package/v3/dist/domains/code-intelligence/services/knowledge-graph.js +253 -3
- package/v3/dist/domains/code-intelligence/services/knowledge-graph.js.map +1 -1
- package/v3/dist/domains/code-intelligence/services/product-factors-bridge.d.ts.map +1 -1
- package/v3/dist/domains/code-intelligence/services/product-factors-bridge.js +3 -2
- package/v3/dist/domains/code-intelligence/services/product-factors-bridge.js.map +1 -1
- package/v3/dist/domains/constants.d.ts +481 -0
- package/v3/dist/domains/constants.d.ts.map +1 -0
- package/v3/dist/domains/constants.js +503 -0
- package/v3/dist/domains/constants.js.map +1 -0
- package/v3/dist/domains/contract-testing/coordinator.d.ts +89 -1
- package/v3/dist/domains/contract-testing/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/contract-testing/coordinator.js +222 -1
- package/v3/dist/domains/contract-testing/coordinator.js.map +1 -1
- package/v3/dist/domains/contract-testing/interfaces.d.ts +29 -1
- package/v3/dist/domains/contract-testing/interfaces.d.ts.map +1 -1
- package/v3/dist/domains/contract-testing/plugin.d.ts +6 -1
- package/v3/dist/domains/contract-testing/plugin.d.ts.map +1 -1
- package/v3/dist/domains/contract-testing/plugin.js +81 -2
- package/v3/dist/domains/contract-testing/plugin.js.map +1 -1
- package/v3/dist/domains/contract-testing/services/contract-validator.d.ts +29 -2
- package/v3/dist/domains/contract-testing/services/contract-validator.d.ts.map +1 -1
- package/v3/dist/domains/contract-testing/services/contract-validator.js +62 -6
- package/v3/dist/domains/contract-testing/services/contract-validator.js.map +1 -1
- package/v3/dist/domains/coverage-analysis/coordinator.d.ts +95 -2
- package/v3/dist/domains/coverage-analysis/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/coverage-analysis/coordinator.js +274 -6
- package/v3/dist/domains/coverage-analysis/coordinator.js.map +1 -1
- package/v3/dist/domains/coverage-analysis/services/coverage-analyzer.d.ts +119 -3
- package/v3/dist/domains/coverage-analysis/services/coverage-analyzer.d.ts.map +1 -1
- package/v3/dist/domains/coverage-analysis/services/coverage-analyzer.js +267 -5
- package/v3/dist/domains/coverage-analysis/services/coverage-analyzer.js.map +1 -1
- package/v3/dist/domains/coverage-analysis/services/gap-detector.d.ts +111 -2
- package/v3/dist/domains/coverage-analysis/services/gap-detector.d.ts.map +1 -1
- package/v3/dist/domains/coverage-analysis/services/gap-detector.js +231 -3
- package/v3/dist/domains/coverage-analysis/services/gap-detector.js.map +1 -1
- package/v3/dist/domains/coverage-analysis/services/hnsw-index.d.ts.map +1 -1
- package/v3/dist/domains/coverage-analysis/services/hnsw-index.js +1 -0
- package/v3/dist/domains/coverage-analysis/services/hnsw-index.js.map +1 -1
- package/v3/dist/domains/defect-intelligence/coordinator.d.ts +80 -1
- package/v3/dist/domains/defect-intelligence/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/defect-intelligence/coordinator.js +262 -7
- package/v3/dist/domains/defect-intelligence/coordinator.js.map +1 -1
- package/v3/dist/domains/defect-intelligence/interfaces.d.ts +17 -0
- package/v3/dist/domains/defect-intelligence/interfaces.d.ts.map +1 -1
- package/v3/dist/domains/defect-intelligence/plugin.d.ts +6 -1
- package/v3/dist/domains/defect-intelligence/plugin.d.ts.map +1 -1
- package/v3/dist/domains/defect-intelligence/plugin.js +101 -0
- package/v3/dist/domains/defect-intelligence/plugin.js.map +1 -1
- package/v3/dist/domains/defect-intelligence/services/defect-predictor.d.ts +91 -2
- package/v3/dist/domains/defect-intelligence/services/defect-predictor.d.ts.map +1 -1
- package/v3/dist/domains/defect-intelligence/services/defect-predictor.js +277 -9
- package/v3/dist/domains/defect-intelligence/services/defect-predictor.js.map +1 -1
- package/v3/dist/domains/defect-intelligence/services/root-cause-analyzer.d.ts +79 -2
- package/v3/dist/domains/defect-intelligence/services/root-cause-analyzer.d.ts.map +1 -1
- package/v3/dist/domains/defect-intelligence/services/root-cause-analyzer.js +259 -3
- package/v3/dist/domains/defect-intelligence/services/root-cause-analyzer.js.map +1 -1
- package/v3/dist/domains/domain-interface.d.ts +155 -0
- package/v3/dist/domains/domain-interface.d.ts.map +1 -1
- package/v3/dist/domains/domain-interface.js +164 -9
- package/v3/dist/domains/domain-interface.js.map +1 -1
- package/v3/dist/domains/learning-optimization/coordinator.d.ts +88 -0
- package/v3/dist/domains/learning-optimization/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/learning-optimization/coordinator.js +227 -1
- package/v3/dist/domains/learning-optimization/coordinator.js.map +1 -1
- package/v3/dist/domains/learning-optimization/index.d.ts +1 -1
- package/v3/dist/domains/learning-optimization/index.d.ts.map +1 -1
- package/v3/dist/domains/learning-optimization/index.js.map +1 -1
- package/v3/dist/domains/learning-optimization/interfaces.d.ts +4 -0
- package/v3/dist/domains/learning-optimization/interfaces.d.ts.map +1 -1
- package/v3/dist/domains/learning-optimization/plugin.d.ts +2 -1
- package/v3/dist/domains/learning-optimization/plugin.d.ts.map +1 -1
- package/v3/dist/domains/learning-optimization/plugin.js +50 -1
- package/v3/dist/domains/learning-optimization/plugin.js.map +1 -1
- package/v3/dist/domains/learning-optimization/services/learning-coordinator.d.ts +54 -2
- package/v3/dist/domains/learning-optimization/services/learning-coordinator.d.ts.map +1 -1
- package/v3/dist/domains/learning-optimization/services/learning-coordinator.js +90 -3
- package/v3/dist/domains/learning-optimization/services/learning-coordinator.js.map +1 -1
- package/v3/dist/domains/quality-assessment/coordinator.d.ts +194 -1
- package/v3/dist/domains/quality-assessment/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/quality-assessment/coordinator.js +664 -6
- package/v3/dist/domains/quality-assessment/coordinator.js.map +1 -1
- package/v3/dist/domains/quality-assessment/interfaces.d.ts +22 -0
- package/v3/dist/domains/quality-assessment/interfaces.d.ts.map +1 -1
- package/v3/dist/domains/quality-assessment/services/deployment-advisor.d.ts +61 -2
- package/v3/dist/domains/quality-assessment/services/deployment-advisor.d.ts.map +1 -1
- package/v3/dist/domains/quality-assessment/services/deployment-advisor.js +213 -5
- package/v3/dist/domains/quality-assessment/services/deployment-advisor.js.map +1 -1
- package/v3/dist/domains/quality-assessment/services/quality-analyzer.d.ts +59 -4
- package/v3/dist/domains/quality-assessment/services/quality-analyzer.d.ts.map +1 -1
- package/v3/dist/domains/quality-assessment/services/quality-analyzer.js +195 -3
- package/v3/dist/domains/quality-assessment/services/quality-analyzer.js.map +1 -1
- package/v3/dist/domains/requirements-validation/coordinator.d.ts +78 -0
- package/v3/dist/domains/requirements-validation/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/requirements-validation/coordinator.js +189 -0
- package/v3/dist/domains/requirements-validation/coordinator.js.map +1 -1
- package/v3/dist/domains/requirements-validation/index.d.ts +1 -0
- package/v3/dist/domains/requirements-validation/index.d.ts.map +1 -1
- package/v3/dist/domains/requirements-validation/index.js +2 -0
- package/v3/dist/domains/requirements-validation/index.js.map +1 -1
- package/v3/dist/domains/requirements-validation/interfaces.d.ts +4 -0
- package/v3/dist/domains/requirements-validation/interfaces.d.ts.map +1 -1
- package/v3/dist/domains/requirements-validation/plugin.d.ts +13 -1
- package/v3/dist/domains/requirements-validation/plugin.d.ts.map +1 -1
- package/v3/dist/domains/requirements-validation/plugin.js +94 -0
- package/v3/dist/domains/requirements-validation/plugin.js.map +1 -1
- package/v3/dist/domains/requirements-validation/qcsd-ideation-plugin.d.ts +245 -0
- package/v3/dist/domains/requirements-validation/qcsd-ideation-plugin.d.ts.map +1 -0
- package/v3/dist/domains/requirements-validation/qcsd-ideation-plugin.js +1143 -0
- package/v3/dist/domains/requirements-validation/qcsd-ideation-plugin.js.map +1 -0
- package/v3/dist/domains/requirements-validation/services/product-factors-assessment/code-intelligence/codebase-analyzer.d.ts.map +1 -1
- package/v3/dist/domains/requirements-validation/services/product-factors-assessment/code-intelligence/codebase-analyzer.js +3 -2
- package/v3/dist/domains/requirements-validation/services/product-factors-assessment/code-intelligence/codebase-analyzer.js.map +1 -1
- package/v3/dist/domains/requirements-validation/services/requirements-validator.d.ts +106 -2
- package/v3/dist/domains/requirements-validation/services/requirements-validator.d.ts.map +1 -1
- package/v3/dist/domains/requirements-validation/services/requirements-validator.js +263 -3
- package/v3/dist/domains/requirements-validation/services/requirements-validator.js.map +1 -1
- package/v3/dist/domains/security-compliance/coordinator.d.ts +56 -1
- package/v3/dist/domains/security-compliance/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/security-compliance/coordinator.js +241 -17
- package/v3/dist/domains/security-compliance/coordinator.js.map +1 -1
- package/v3/dist/domains/security-compliance/interfaces.d.ts +2 -0
- package/v3/dist/domains/security-compliance/interfaces.d.ts.map +1 -1
- package/v3/dist/domains/security-compliance/plugin.d.ts +3 -2
- package/v3/dist/domains/security-compliance/plugin.d.ts.map +1 -1
- package/v3/dist/domains/security-compliance/plugin.js +64 -0
- package/v3/dist/domains/security-compliance/plugin.js.map +1 -1
- package/v3/dist/domains/security-compliance/services/scanners/dast-auth-testing.d.ts +25 -0
- package/v3/dist/domains/security-compliance/services/scanners/dast-auth-testing.d.ts.map +1 -0
- package/v3/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +160 -0
- package/v3/dist/domains/security-compliance/services/scanners/dast-auth-testing.js.map +1 -0
- package/v3/dist/domains/security-compliance/services/scanners/dast-helpers.d.ts +48 -0
- package/v3/dist/domains/security-compliance/services/scanners/dast-helpers.d.ts.map +1 -0
- package/v3/dist/domains/security-compliance/services/scanners/dast-helpers.js +385 -0
- package/v3/dist/domains/security-compliance/services/scanners/dast-helpers.js.map +1 -0
- package/v3/dist/domains/security-compliance/services/scanners/dast-injection-testing.d.ts +20 -0
- package/v3/dist/domains/security-compliance/services/scanners/dast-injection-testing.d.ts.map +1 -0
- package/v3/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +99 -0
- package/v3/dist/domains/security-compliance/services/scanners/dast-injection-testing.js.map +1 -0
- package/v3/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +62 -0
- package/v3/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts.map +1 -0
- package/v3/dist/domains/security-compliance/services/scanners/dast-scanner.js +329 -0
- package/v3/dist/domains/security-compliance/services/scanners/dast-scanner.js.map +1 -0
- package/v3/dist/domains/security-compliance/services/scanners/dependency-scanner.d.ts +46 -0
- package/v3/dist/domains/security-compliance/services/scanners/dependency-scanner.d.ts.map +1 -0
- package/v3/dist/domains/security-compliance/services/scanners/dependency-scanner.js +180 -0
- package/v3/dist/domains/security-compliance/services/scanners/dependency-scanner.js.map +1 -0
- package/v3/dist/domains/security-compliance/services/scanners/index.d.ts +14 -0
- package/v3/dist/domains/security-compliance/services/scanners/index.d.ts.map +1 -0
- package/v3/dist/domains/security-compliance/services/scanners/index.js +16 -0
- package/v3/dist/domains/security-compliance/services/scanners/index.js.map +1 -0
- package/v3/dist/domains/security-compliance/services/scanners/sast-scanner.d.ts +92 -0
- package/v3/dist/domains/security-compliance/services/scanners/sast-scanner.d.ts.map +1 -0
- package/v3/dist/domains/security-compliance/services/scanners/sast-scanner.js +440 -0
- package/v3/dist/domains/security-compliance/services/scanners/sast-scanner.js.map +1 -0
- package/v3/dist/domains/security-compliance/services/scanners/scanner-orchestrator.d.ts +78 -0
- package/v3/dist/domains/security-compliance/services/scanners/scanner-orchestrator.d.ts.map +1 -0
- package/v3/dist/domains/security-compliance/services/scanners/scanner-orchestrator.js +179 -0
- package/v3/dist/domains/security-compliance/services/scanners/scanner-orchestrator.js.map +1 -0
- package/v3/dist/domains/security-compliance/services/scanners/scanner-types.d.ts +91 -0
- package/v3/dist/domains/security-compliance/services/scanners/scanner-types.d.ts.map +1 -0
- package/v3/dist/domains/security-compliance/services/scanners/scanner-types.js +15 -0
- package/v3/dist/domains/security-compliance/services/scanners/scanner-types.js.map +1 -0
- package/v3/dist/domains/security-compliance/services/scanners/security-patterns.d.ts +16 -0
- package/v3/dist/domains/security-compliance/services/scanners/security-patterns.d.ts.map +1 -0
- package/v3/dist/domains/security-compliance/services/scanners/security-patterns.js +507 -0
- package/v3/dist/domains/security-compliance/services/scanners/security-patterns.js.map +1 -0
- package/v3/dist/domains/security-compliance/services/security-auditor.d.ts.map +1 -1
- package/v3/dist/domains/security-compliance/services/security-auditor.js +2 -1
- package/v3/dist/domains/security-compliance/services/security-auditor.js.map +1 -1
- package/v3/dist/domains/security-compliance/services/security-scanner.d.ts +20 -182
- package/v3/dist/domains/security-compliance/services/security-scanner.d.ts.map +1 -1
- package/v3/dist/domains/security-compliance/services/security-scanner.js +37 -1909
- package/v3/dist/domains/security-compliance/services/security-scanner.js.map +1 -1
- package/v3/dist/domains/security-compliance/services/semgrep-integration.d.ts.map +1 -1
- package/v3/dist/domains/security-compliance/services/semgrep-integration.js +7 -6
- package/v3/dist/domains/security-compliance/services/semgrep-integration.js.map +1 -1
- package/v3/dist/domains/test-execution/coordinator.d.ts +89 -0
- package/v3/dist/domains/test-execution/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/test-execution/coordinator.js +259 -2
- package/v3/dist/domains/test-execution/coordinator.js.map +1 -1
- package/v3/dist/domains/test-execution/services/auth-state-manager.d.ts.map +1 -1
- package/v3/dist/domains/test-execution/services/auth-state-manager.js +6 -4
- package/v3/dist/domains/test-execution/services/auth-state-manager.js.map +1 -1
- package/v3/dist/domains/test-execution/services/e2e/assertion-handlers.d.ts +55 -0
- package/v3/dist/domains/test-execution/services/e2e/assertion-handlers.d.ts.map +1 -0
- package/v3/dist/domains/test-execution/services/e2e/assertion-handlers.js +407 -0
- package/v3/dist/domains/test-execution/services/e2e/assertion-handlers.js.map +1 -0
- package/v3/dist/domains/test-execution/services/e2e/browser-orchestrator.d.ts +122 -0
- package/v3/dist/domains/test-execution/services/e2e/browser-orchestrator.d.ts.map +1 -0
- package/v3/dist/domains/test-execution/services/e2e/browser-orchestrator.js +325 -0
- package/v3/dist/domains/test-execution/services/e2e/browser-orchestrator.js.map +1 -0
- package/v3/dist/domains/test-execution/services/e2e/e2e-coordinator.d.ts +97 -0
- package/v3/dist/domains/test-execution/services/e2e/e2e-coordinator.d.ts.map +1 -0
- package/v3/dist/domains/test-execution/services/e2e/e2e-coordinator.js +297 -0
- package/v3/dist/domains/test-execution/services/e2e/e2e-coordinator.js.map +1 -0
- package/v3/dist/domains/test-execution/services/e2e/index.d.ts +22 -0
- package/v3/dist/domains/test-execution/services/e2e/index.d.ts.map +1 -0
- package/v3/dist/domains/test-execution/services/e2e/index.js +52 -0
- package/v3/dist/domains/test-execution/services/e2e/index.js.map +1 -0
- package/v3/dist/domains/test-execution/services/e2e/result-collector.d.ts +51 -0
- package/v3/dist/domains/test-execution/services/e2e/result-collector.d.ts.map +1 -0
- package/v3/dist/domains/test-execution/services/e2e/result-collector.js +133 -0
- package/v3/dist/domains/test-execution/services/e2e/result-collector.js.map +1 -0
- package/v3/dist/domains/test-execution/services/e2e/step-executors.d.ts +48 -0
- package/v3/dist/domains/test-execution/services/e2e/step-executors.d.ts.map +1 -0
- package/v3/dist/domains/test-execution/services/e2e/step-executors.js +422 -0
- package/v3/dist/domains/test-execution/services/e2e/step-executors.js.map +1 -0
- package/v3/dist/domains/test-execution/services/e2e/step-retry-handler.d.ts +49 -0
- package/v3/dist/domains/test-execution/services/e2e/step-retry-handler.d.ts.map +1 -0
- package/v3/dist/domains/test-execution/services/e2e/step-retry-handler.js +146 -0
- package/v3/dist/domains/test-execution/services/e2e/step-retry-handler.js.map +1 -0
- package/v3/dist/domains/test-execution/services/e2e/types.d.ts +138 -0
- package/v3/dist/domains/test-execution/services/e2e/types.d.ts.map +1 -0
- package/v3/dist/domains/test-execution/services/e2e/types.js +65 -0
- package/v3/dist/domains/test-execution/services/e2e/types.js.map +1 -0
- package/v3/dist/domains/test-execution/services/e2e/wait-condition-handler.d.ts +33 -0
- package/v3/dist/domains/test-execution/services/e2e/wait-condition-handler.d.ts.map +1 -0
- package/v3/dist/domains/test-execution/services/e2e/wait-condition-handler.js +114 -0
- package/v3/dist/domains/test-execution/services/e2e/wait-condition-handler.js.map +1 -0
- package/v3/dist/domains/test-execution/services/e2e-runner.d.ts +18 -392
- package/v3/dist/domains/test-execution/services/e2e-runner.d.ts.map +1 -1
- package/v3/dist/domains/test-execution/services/e2e-runner.js +25 -1757
- package/v3/dist/domains/test-execution/services/e2e-runner.js.map +1 -1
- package/v3/dist/domains/test-execution/services/flaky-detector.d.ts.map +1 -1
- package/v3/dist/domains/test-execution/services/flaky-detector.js +12 -9
- package/v3/dist/domains/test-execution/services/flaky-detector.js.map +1 -1
- package/v3/dist/domains/test-execution/services/retry-handler.d.ts.map +1 -1
- package/v3/dist/domains/test-execution/services/retry-handler.js +7 -5
- package/v3/dist/domains/test-execution/services/retry-handler.js.map +1 -1
- package/v3/dist/domains/test-execution/services/test-executor.d.ts +30 -2
- package/v3/dist/domains/test-execution/services/test-executor.d.ts.map +1 -1
- package/v3/dist/domains/test-execution/services/test-executor.js +67 -5
- package/v3/dist/domains/test-execution/services/test-executor.js.map +1 -1
- package/v3/dist/domains/test-generation/coordinator.d.ts +97 -0
- package/v3/dist/domains/test-generation/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/coordinator.js +237 -0
- package/v3/dist/domains/test-generation/coordinator.js.map +1 -1
- package/v3/dist/domains/test-generation/interfaces.d.ts +2 -0
- package/v3/dist/domains/test-generation/interfaces.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/services/test-generator.d.ts +32 -0
- package/v3/dist/domains/test-generation/services/test-generator.d.ts.map +1 -1
- package/v3/dist/domains/test-generation/services/test-generator.js +158 -3
- package/v3/dist/domains/test-generation/services/test-generator.js.map +1 -1
- package/v3/dist/domains/visual-accessibility/coordinator.d.ts +147 -0
- package/v3/dist/domains/visual-accessibility/coordinator.d.ts.map +1 -1
- package/v3/dist/domains/visual-accessibility/coordinator.js +382 -2
- package/v3/dist/domains/visual-accessibility/coordinator.js.map +1 -1
- package/v3/dist/domains/visual-accessibility/plugin.d.ts +2 -1
- package/v3/dist/domains/visual-accessibility/plugin.d.ts.map +1 -1
- package/v3/dist/domains/visual-accessibility/plugin.js +66 -3
- package/v3/dist/domains/visual-accessibility/plugin.js.map +1 -1
- package/v3/dist/domains/visual-accessibility/services/accessibility-tester.d.ts.map +1 -1
- package/v3/dist/domains/visual-accessibility/services/accessibility-tester.js +3 -2
- package/v3/dist/domains/visual-accessibility/services/accessibility-tester.js.map +1 -1
- package/v3/dist/domains/visual-accessibility/services/browser-security-scanner.d.ts.map +1 -1
- package/v3/dist/domains/visual-accessibility/services/browser-security-scanner.js +22 -12
- package/v3/dist/domains/visual-accessibility/services/browser-security-scanner.js.map +1 -1
- package/v3/dist/domains/visual-accessibility/services/viewport-capture.d.ts.map +1 -1
- package/v3/dist/domains/visual-accessibility/services/viewport-capture.js +3 -2
- package/v3/dist/domains/visual-accessibility/services/viewport-capture.js.map +1 -1
- package/v3/dist/domains/visual-accessibility/services/visual-regression.d.ts.map +1 -1
- package/v3/dist/domains/visual-accessibility/services/visual-regression.js +3 -2
- package/v3/dist/domains/visual-accessibility/services/visual-regression.js.map +1 -1
- package/v3/dist/domains/visual-accessibility/services/visual-tester.d.ts +47 -2
- package/v3/dist/domains/visual-accessibility/services/visual-tester.d.ts.map +1 -1
- package/v3/dist/domains/visual-accessibility/services/visual-tester.js +87 -3
- package/v3/dist/domains/visual-accessibility/services/visual-tester.js.map +1 -1
- package/v3/dist/hooks/cross-phase-hooks.d.ts +42 -0
- package/v3/dist/hooks/cross-phase-hooks.d.ts.map +1 -0
- package/v3/dist/hooks/cross-phase-hooks.js +338 -0
- package/v3/dist/hooks/cross-phase-hooks.js.map +1 -0
- package/v3/dist/hooks/index.d.ts +9 -0
- package/v3/dist/hooks/index.d.ts.map +1 -0
- package/v3/dist/hooks/index.js +9 -0
- package/v3/dist/hooks/index.js.map +1 -0
- package/v3/dist/init/agents-installer.d.ts.map +1 -1
- package/v3/dist/init/agents-installer.js +6 -4
- package/v3/dist/init/agents-installer.js.map +1 -1
- package/v3/dist/init/enhancements/claude-flow-adapter.d.ts.map +1 -1
- package/v3/dist/init/enhancements/claude-flow-adapter.js +15 -9
- package/v3/dist/init/enhancements/claude-flow-adapter.js.map +1 -1
- package/v3/dist/init/enhancements/detector.js +6 -4
- package/v3/dist/init/enhancements/detector.js.map +1 -1
- package/v3/dist/init/init-wizard.d.ts +5 -0
- package/v3/dist/init/init-wizard.d.ts.map +1 -1
- package/v3/dist/init/init-wizard.js +74 -11
- package/v3/dist/init/init-wizard.js.map +1 -1
- package/v3/dist/init/migration/data-migrator.d.ts.map +1 -1
- package/v3/dist/init/migration/data-migrator.js +6 -4
- package/v3/dist/init/migration/data-migrator.js.map +1 -1
- package/v3/dist/init/phases/02-analysis.js +2 -2
- package/v3/dist/init/phases/02-analysis.js.map +1 -1
- package/v3/dist/init/phases/04-database.d.ts.map +1 -1
- package/v3/dist/init/phases/04-database.js +0 -1
- package/v3/dist/init/phases/04-database.js.map +1 -1
- package/v3/dist/init/phases/11-claude-md.d.ts.map +1 -1
- package/v3/dist/init/phases/11-claude-md.js +25 -0
- package/v3/dist/init/phases/11-claude-md.js.map +1 -1
- package/v3/dist/init/phases/12-verification.d.ts.map +1 -1
- package/v3/dist/init/phases/12-verification.js +2 -1
- package/v3/dist/init/phases/12-verification.js.map +1 -1
- package/v3/dist/init/project-analyzer.d.ts.map +1 -1
- package/v3/dist/init/project-analyzer.js +12 -8
- package/v3/dist/init/project-analyzer.js.map +1 -1
- package/v3/dist/init/skills-installer.d.ts.map +1 -1
- package/v3/dist/init/skills-installer.js +6 -4
- package/v3/dist/init/skills-installer.js.map +1 -1
- package/v3/dist/init/token-bootstrap.d.ts.map +1 -1
- package/v3/dist/init/token-bootstrap.js +2 -1
- package/v3/dist/init/token-bootstrap.js.map +1 -1
- package/v3/dist/integrations/agent-booster-wasm/index.d.ts.map +1 -1
- package/v3/dist/integrations/agent-booster-wasm/index.js +8 -4
- package/v3/dist/integrations/agent-booster-wasm/index.js.map +1 -1
- package/v3/dist/integrations/agentic-flow/model-router/signal-collector.d.ts.map +1 -1
- package/v3/dist/integrations/agentic-flow/model-router/signal-collector.js +3 -2
- package/v3/dist/integrations/agentic-flow/model-router/signal-collector.js.map +1 -1
- package/v3/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts.map +1 -1
- package/v3/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js.map +1 -1
- package/v3/dist/integrations/agentic-flow/reasoning-bank/trajectory-tracker.d.ts.map +1 -1
- package/v3/dist/integrations/agentic-flow/reasoning-bank/trajectory-tracker.js.map +1 -1
- package/v3/dist/integrations/browser/agent-browser/client.d.ts.map +1 -1
- package/v3/dist/integrations/browser/agent-browser/client.js +9 -6
- package/v3/dist/integrations/browser/agent-browser/client.js.map +1 -1
- package/v3/dist/integrations/browser/agent-browser/command-executor.d.ts.map +1 -1
- package/v3/dist/integrations/browser/agent-browser/command-executor.js +3 -2
- package/v3/dist/integrations/browser/agent-browser/command-executor.js.map +1 -1
- package/v3/dist/integrations/browser/index.d.ts +1 -0
- package/v3/dist/integrations/browser/index.d.ts.map +1 -1
- package/v3/dist/integrations/browser/index.js +6 -0
- package/v3/dist/integrations/browser/index.js.map +1 -1
- package/v3/dist/integrations/browser/web-content-fetcher.d.ts +154 -0
- package/v3/dist/integrations/browser/web-content-fetcher.d.ts.map +1 -0
- package/v3/dist/integrations/browser/web-content-fetcher.js +529 -0
- package/v3/dist/integrations/browser/web-content-fetcher.js.map +1 -0
- package/v3/dist/integrations/coherence/threshold-tuner.d.ts.map +1 -1
- package/v3/dist/integrations/coherence/threshold-tuner.js +3 -2
- package/v3/dist/integrations/coherence/threshold-tuner.js.map +1 -1
- package/v3/dist/integrations/coherence/wasm-loader.d.ts.map +1 -1
- package/v3/dist/integrations/coherence/wasm-loader.js +3 -2
- package/v3/dist/integrations/coherence/wasm-loader.js.map +1 -1
- package/v3/dist/integrations/n8n/agent-factory.d.ts.map +1 -1
- package/v3/dist/integrations/n8n/agent-factory.js +6 -4
- package/v3/dist/integrations/n8n/agent-factory.js.map +1 -1
- package/v3/dist/integrations/rl-suite/persistence/q-value-store.d.ts.map +1 -1
- package/v3/dist/integrations/rl-suite/persistence/q-value-store.js.map +1 -1
- package/v3/dist/integrations/ruvector/sona-persistence.d.ts.map +1 -1
- package/v3/dist/integrations/ruvector/sona-persistence.js +6 -4
- package/v3/dist/integrations/ruvector/sona-persistence.js.map +1 -1
- package/v3/dist/integrations/vibium/client.d.ts.map +1 -1
- package/v3/dist/integrations/vibium/client.js +3 -2
- package/v3/dist/integrations/vibium/client.js.map +1 -1
- package/v3/dist/kernel/agent-coordinator.d.ts +1 -1
- package/v3/dist/kernel/agent-coordinator.d.ts.map +1 -1
- package/v3/dist/kernel/agent-coordinator.js +4 -4
- package/v3/dist/kernel/agent-coordinator.js.map +1 -1
- package/v3/dist/kernel/constants.d.ts +155 -0
- package/v3/dist/kernel/constants.d.ts.map +1 -0
- package/v3/dist/kernel/constants.js +169 -0
- package/v3/dist/kernel/constants.js.map +1 -0
- package/v3/dist/kernel/event-bus.d.ts +8 -0
- package/v3/dist/kernel/event-bus.d.ts.map +1 -1
- package/v3/dist/kernel/event-bus.js +79 -17
- package/v3/dist/kernel/event-bus.js.map +1 -1
- package/v3/dist/kernel/hybrid-backend.d.ts.map +1 -1
- package/v3/dist/kernel/hybrid-backend.js +4 -3
- package/v3/dist/kernel/hybrid-backend.js.map +1 -1
- package/v3/dist/kernel/kernel.d.ts.map +1 -1
- package/v3/dist/kernel/kernel.js +3 -2
- package/v3/dist/kernel/kernel.js.map +1 -1
- package/v3/dist/kernel/memory-backend.d.ts.map +1 -1
- package/v3/dist/kernel/memory-backend.js +4 -3
- package/v3/dist/kernel/memory-backend.js.map +1 -1
- package/v3/dist/kernel/unified-memory.d.ts.map +1 -1
- package/v3/dist/kernel/unified-memory.js +14 -11
- package/v3/dist/kernel/unified-memory.js.map +1 -1
- package/v3/dist/kernel/unified-persistence.js +3 -2
- package/v3/dist/kernel/unified-persistence.js.map +1 -1
- package/v3/dist/learning/aqe-learning-engine.d.ts.map +1 -1
- package/v3/dist/learning/aqe-learning-engine.js +12 -8
- package/v3/dist/learning/aqe-learning-engine.js.map +1 -1
- package/v3/dist/learning/dream/index.d.ts +1 -1
- package/v3/dist/learning/dream/index.d.ts.map +1 -1
- package/v3/dist/learning/dream/index.js +3 -1
- package/v3/dist/learning/dream/index.js.map +1 -1
- package/v3/dist/learning/dream/spreading-activation.d.ts +41 -0
- package/v3/dist/learning/dream/spreading-activation.d.ts.map +1 -1
- package/v3/dist/learning/dream/spreading-activation.js +79 -0
- package/v3/dist/learning/dream/spreading-activation.js.map +1 -1
- package/v3/dist/learning/experience-capture-middleware.d.ts +119 -0
- package/v3/dist/learning/experience-capture-middleware.d.ts.map +1 -0
- package/v3/dist/learning/experience-capture-middleware.js +416 -0
- package/v3/dist/learning/experience-capture-middleware.js.map +1 -0
- package/v3/dist/learning/pattern-store.d.ts.map +1 -1
- package/v3/dist/learning/pattern-store.js +16 -6
- package/v3/dist/learning/pattern-store.js.map +1 -1
- package/v3/dist/learning/real-embeddings.d.ts.map +1 -1
- package/v3/dist/learning/real-embeddings.js +7 -1
- package/v3/dist/learning/real-embeddings.js.map +1 -1
- package/v3/dist/learning/sqlite-persistence.d.ts +1 -1
- package/v3/dist/learning/sqlite-persistence.d.ts.map +1 -1
- package/v3/dist/learning/sqlite-persistence.js.map +1 -1
- package/v3/dist/logging/console-logger.d.ts +96 -0
- package/v3/dist/logging/console-logger.d.ts.map +1 -0
- package/v3/dist/logging/console-logger.js +247 -0
- package/v3/dist/logging/console-logger.js.map +1 -0
- package/v3/dist/logging/index.d.ts +42 -0
- package/v3/dist/logging/index.d.ts.map +1 -0
- package/v3/dist/logging/index.js +39 -0
- package/v3/dist/logging/index.js.map +1 -0
- package/v3/dist/logging/logger-factory.d.ts +145 -0
- package/v3/dist/logging/logger-factory.d.ts.map +1 -0
- package/v3/dist/logging/logger-factory.js +218 -0
- package/v3/dist/logging/logger-factory.js.map +1 -0
- package/v3/dist/logging/logger.d.ts +89 -0
- package/v3/dist/logging/logger.d.ts.map +1 -0
- package/v3/dist/logging/logger.js +74 -0
- package/v3/dist/logging/logger.js.map +1 -0
- package/v3/dist/mcp/bundle.js +63771 -53632
- package/v3/dist/mcp/handlers/agent-handlers.js +2 -2
- package/v3/dist/mcp/handlers/agent-handlers.js.map +1 -1
- package/v3/dist/mcp/handlers/core-handlers.d.ts +2 -0
- package/v3/dist/mcp/handlers/core-handlers.d.ts.map +1 -1
- package/v3/dist/mcp/handlers/core-handlers.js +33 -0
- package/v3/dist/mcp/handlers/core-handlers.js.map +1 -1
- package/v3/dist/mcp/handlers/cross-phase-handlers.d.ts +110 -0
- package/v3/dist/mcp/handlers/cross-phase-handlers.d.ts.map +1 -0
- package/v3/dist/mcp/handlers/cross-phase-handlers.js +216 -0
- package/v3/dist/mcp/handlers/cross-phase-handlers.js.map +1 -0
- package/v3/dist/mcp/handlers/domain-handler-configs.d.ts +151 -0
- package/v3/dist/mcp/handlers/domain-handler-configs.d.ts.map +1 -0
- package/v3/dist/mcp/handlers/domain-handler-configs.js +486 -0
- package/v3/dist/mcp/handlers/domain-handler-configs.js.map +1 -0
- package/v3/dist/mcp/handlers/domain-handlers.d.ts +174 -121
- package/v3/dist/mcp/handlers/domain-handlers.d.ts.map +1 -1
- package/v3/dist/mcp/handlers/domain-handlers.js +178 -1049
- package/v3/dist/mcp/handlers/domain-handlers.js.map +1 -1
- package/v3/dist/mcp/handlers/handler-factory.d.ts +182 -0
- package/v3/dist/mcp/handlers/handler-factory.d.ts.map +1 -0
- package/v3/dist/mcp/handlers/handler-factory.js +327 -0
- package/v3/dist/mcp/handlers/handler-factory.js.map +1 -0
- package/v3/dist/mcp/handlers/index.d.ts +2 -1
- package/v3/dist/mcp/handlers/index.d.ts.map +1 -1
- package/v3/dist/mcp/handlers/index.js +4 -2
- package/v3/dist/mcp/handlers/index.js.map +1 -1
- package/v3/dist/mcp/handlers/task-handlers.d.ts +1 -0
- package/v3/dist/mcp/handlers/task-handlers.d.ts.map +1 -1
- package/v3/dist/mcp/handlers/task-handlers.js +91 -7
- package/v3/dist/mcp/handlers/task-handlers.js.map +1 -1
- package/v3/dist/mcp/handlers/wrapped-domain-handlers.d.ts +30 -0
- package/v3/dist/mcp/handlers/wrapped-domain-handlers.d.ts.map +1 -0
- package/v3/dist/mcp/handlers/wrapped-domain-handlers.js +75 -0
- package/v3/dist/mcp/handlers/wrapped-domain-handlers.js.map +1 -0
- package/v3/dist/mcp/server.d.ts.map +1 -1
- package/v3/dist/mcp/server.js +107 -1
- package/v3/dist/mcp/server.js.map +1 -1
- package/v3/dist/mcp/tools/chaos-resilience/inject.js +1 -1
- package/v3/dist/mcp/tools/chaos-resilience/inject.js.map +1 -1
- package/v3/dist/mcp/tools/contract-testing/validate.js +1 -1
- package/v3/dist/mcp/tools/contract-testing/validate.js.map +1 -1
- package/v3/dist/mcp/tools/learning-optimization/optimize.js +1 -1
- package/v3/dist/mcp/tools/learning-optimization/optimize.js.map +1 -1
- package/v3/dist/mcp/tools/visual-accessibility/index.js +2 -2
- package/v3/dist/mcp/tools/visual-accessibility/index.js.map +1 -1
- package/v3/dist/mcp/types.d.ts +5 -3
- package/v3/dist/mcp/types.d.ts.map +1 -1
- package/v3/dist/memory/cross-phase-memory.d.ts +55 -0
- package/v3/dist/memory/cross-phase-memory.d.ts.map +1 -0
- package/v3/dist/memory/cross-phase-memory.js +265 -0
- package/v3/dist/memory/cross-phase-memory.js.map +1 -0
- package/v3/dist/memory/index.d.ts +9 -0
- package/v3/dist/memory/index.d.ts.map +1 -0
- package/v3/dist/memory/index.js +9 -0
- package/v3/dist/memory/index.js.map +1 -0
- package/v3/dist/routing/qe-agent-registry.d.ts +1 -1
- package/v3/dist/routing/qe-agent-registry.d.ts.map +1 -1
- package/v3/dist/routing/qe-agent-registry.js +20 -1
- package/v3/dist/routing/qe-agent-registry.js.map +1 -1
- package/v3/dist/shared/io/file-reader.d.ts.map +1 -1
- package/v3/dist/shared/io/file-reader.js +3 -2
- package/v3/dist/shared/io/file-reader.js.map +1 -1
- package/v3/dist/shared/utils/binary-insert.d.ts +85 -0
- package/v3/dist/shared/utils/binary-insert.d.ts.map +1 -0
- package/v3/dist/shared/utils/binary-insert.js +122 -0
- package/v3/dist/shared/utils/binary-insert.js.map +1 -0
- package/v3/dist/shared/utils/index.d.ts +1 -0
- package/v3/dist/shared/utils/index.d.ts.map +1 -1
- package/v3/dist/shared/utils/index.js +1 -0
- package/v3/dist/shared/utils/index.js.map +1 -1
- package/v3/dist/strange-loop/belief-reconciler.d.ts.map +1 -1
- package/v3/dist/strange-loop/belief-reconciler.js +3 -2
- package/v3/dist/strange-loop/belief-reconciler.js.map +1 -1
- package/v3/dist/sync/claude-flow-bridge.d.ts +63 -0
- package/v3/dist/sync/claude-flow-bridge.d.ts.map +1 -0
- package/v3/dist/sync/claude-flow-bridge.js +322 -0
- package/v3/dist/sync/claude-flow-bridge.js.map +1 -0
- package/v3/dist/sync/cloud/postgres-writer.d.ts.map +1 -1
- package/v3/dist/sync/cloud/postgres-writer.js +0 -1
- package/v3/dist/sync/cloud/postgres-writer.js.map +1 -1
- package/v3/dist/sync/readers/sqlite-reader.d.ts.map +1 -1
- package/v3/dist/sync/readers/sqlite-reader.js +3 -2
- package/v3/dist/sync/readers/sqlite-reader.js.map +1 -1
- package/v3/dist/test-scheduling/flaky-tracking/flaky-tracker.d.ts.map +1 -1
- package/v3/dist/test-scheduling/flaky-tracking/flaky-tracker.js +3 -2
- package/v3/dist/test-scheduling/flaky-tracking/flaky-tracker.js.map +1 -1
- package/v3/dist/test-scheduling/git-aware/test-selector.d.ts.map +1 -1
- package/v3/dist/test-scheduling/git-aware/test-selector.js +3 -2
- package/v3/dist/test-scheduling/git-aware/test-selector.js.map +1 -1
- package/v3/dist/types/cross-phase-signals.d.ts +119 -0
- package/v3/dist/types/cross-phase-signals.d.ts.map +1 -0
- package/v3/dist/types/cross-phase-signals.js +33 -0
- package/v3/dist/types/cross-phase-signals.js.map +1 -0
- package/v3/dist/types/index.d.ts +9 -0
- package/v3/dist/types/index.d.ts.map +1 -0
- package/v3/dist/types/index.js +9 -0
- package/v3/dist/types/index.js.map +1 -0
- package/v3/dist/workers/worker-manager.d.ts.map +1 -1
- package/v3/dist/workers/worker-manager.js +3 -2
- package/v3/dist/workers/worker-manager.js.map +1 -1
- package/v3/dist/workflows/browser/workflow-loader.d.ts +3 -3
- package/v3/dist/workflows/browser/workflow-loader.d.ts.map +1 -1
- package/v3/dist/workflows/browser/workflow-loader.js.map +1 -1
- package/v3/package.json +4 -1
|
@@ -6,6 +6,10 @@
|
|
|
6
6
|
* - ActorCritic RL: Quality gate threshold tuning
|
|
7
7
|
* - QESONA: Quality pattern learning
|
|
8
8
|
* - QEFlashAttention: Similarity computations for quality reports
|
|
9
|
+
*
|
|
10
|
+
* V3 Integrations (ADR-047, CONSENSUS-MIXIN-001):
|
|
11
|
+
* - MinCutAwareDomainMixin: Topology-aware routing and health monitoring
|
|
12
|
+
* - ConsensusEnabledMixin: Multi-model consensus for high-stakes quality decisions
|
|
9
13
|
*/
|
|
10
14
|
import { v4 as uuidv4 } from 'uuid';
|
|
11
15
|
import { ok, err } from '../../shared/types';
|
|
@@ -19,6 +23,11 @@ import { createPersistentSONAEngine } from '../../integrations/ruvector/sona-per
|
|
|
19
23
|
import { createQEFlashAttention, } from '../../integrations/ruvector/wrappers';
|
|
20
24
|
// V3 Integration: ClaimVerifier for report verification (Phase 4)
|
|
21
25
|
import { createClaimVerifierService, } from '../../agents/claim-verifier/index.js';
|
|
26
|
+
// V3 Integration: MinCut Awareness (ADR-047)
|
|
27
|
+
import { createMinCutAwareMixin, } from '../../coordination/mixins/mincut-aware-domain';
|
|
28
|
+
// V3 Integration: Consensus Verification (CONSENSUS-MIXIN-001)
|
|
29
|
+
import { createConsensusEnabledMixin, } from '../../coordination/mixins/consensus-enabled-domain';
|
|
30
|
+
import { createDomainFinding, } from '../../coordination/consensus/domain-findings';
|
|
22
31
|
const DEFAULT_CONFIG = {
|
|
23
32
|
maxConcurrentWorkflows: 5,
|
|
24
33
|
defaultTimeout: 60000,
|
|
@@ -29,6 +38,14 @@ const DEFAULT_CONFIG = {
|
|
|
29
38
|
enableFlashAttention: true,
|
|
30
39
|
// V3: ClaimVerifier enabled by default
|
|
31
40
|
enableClaimVerification: true,
|
|
41
|
+
// V3: MinCut Awareness enabled by default
|
|
42
|
+
enableMinCutAwareness: true,
|
|
43
|
+
topologyHealthThreshold: 0.5,
|
|
44
|
+
// V3: Consensus enabled by default for quality decisions
|
|
45
|
+
enableConsensus: true,
|
|
46
|
+
consensusThreshold: 0.7,
|
|
47
|
+
consensusMinModels: 2,
|
|
48
|
+
borderlineMargin: 0.05, // 5% margin for borderline detection
|
|
32
49
|
};
|
|
33
50
|
/**
|
|
34
51
|
* Quality Assessment Coordinator
|
|
@@ -38,6 +55,10 @@ const DEFAULT_CONFIG = {
|
|
|
38
55
|
* - ActorCritic RL: Quality gate threshold tuning
|
|
39
56
|
* - QESONA: Quality pattern learning
|
|
40
57
|
* - QEFlashAttention: Similarity computations for quality reports
|
|
58
|
+
*
|
|
59
|
+
* V3 Integrations (ADR-047, CONSENSUS-MIXIN-001):
|
|
60
|
+
* - MinCutAwareDomainMixin: Topology-aware routing and health monitoring
|
|
61
|
+
* - ConsensusEnabledMixin: Multi-model consensus for high-stakes quality decisions
|
|
41
62
|
*/
|
|
42
63
|
export class QualityAssessmentCoordinator {
|
|
43
64
|
eventBus;
|
|
@@ -55,6 +76,10 @@ export class QualityAssessmentCoordinator {
|
|
|
55
76
|
flashAttention;
|
|
56
77
|
// V3 Integration: ClaimVerifier for report verification
|
|
57
78
|
claimVerifier;
|
|
79
|
+
// V3 Integration: MinCut Awareness (ADR-047)
|
|
80
|
+
minCutMixin;
|
|
81
|
+
// V3 Integration: Consensus Verification (CONSENSUS-MIXIN-001)
|
|
82
|
+
consensusMixin;
|
|
58
83
|
// Quality domain name for SONA
|
|
59
84
|
domain = 'quality-assessment';
|
|
60
85
|
// Cache of recent dream insights for quality assessment enhancement
|
|
@@ -67,10 +92,36 @@ export class QualityAssessmentCoordinator {
|
|
|
67
92
|
this.qualityGate = new QualityGateService(memory);
|
|
68
93
|
this.qualityAnalyzer = new QualityAnalyzerService(memory);
|
|
69
94
|
this.deploymentAdvisor = new DeploymentAdvisorService(memory);
|
|
95
|
+
// V3 Integration: Initialize MinCut Awareness Mixin (ADR-047)
|
|
96
|
+
this.minCutMixin = createMinCutAwareMixin(this.domain, {
|
|
97
|
+
enableMinCutAwareness: this.config.enableMinCutAwareness,
|
|
98
|
+
topologyHealthThreshold: this.config.topologyHealthThreshold,
|
|
99
|
+
pauseOnCriticalTopology: false, // Quality assessment continues even in degraded topology
|
|
100
|
+
monitoredDomains: [], // Monitor all domains
|
|
101
|
+
});
|
|
102
|
+
// V3 Integration: Initialize Consensus Mixin (CONSENSUS-MIXIN-001)
|
|
103
|
+
// Configured for quality-assessment specific finding types
|
|
104
|
+
this.consensusMixin = createConsensusEnabledMixin({
|
|
105
|
+
enableConsensus: this.config.enableConsensus,
|
|
106
|
+
consensusThreshold: this.config.consensusThreshold,
|
|
107
|
+
minModels: this.config.consensusMinModels,
|
|
108
|
+
// Quality-specific finding types that require consensus
|
|
109
|
+
verifyFindingTypes: [
|
|
110
|
+
'gate-verdict', // Pass/fail quality gate decisions
|
|
111
|
+
'tech-debt-classification', // Critical vs acceptable tech debt
|
|
112
|
+
'release-readiness', // Go/no-go deployment decisions
|
|
113
|
+
'risk-scoring', // High-risk deployment detection
|
|
114
|
+
],
|
|
115
|
+
strategy: 'weighted',
|
|
116
|
+
modelTimeout: 60000,
|
|
117
|
+
verifySeverities: ['critical', 'high'],
|
|
118
|
+
enableLogging: false,
|
|
119
|
+
});
|
|
70
120
|
}
|
|
71
121
|
/**
|
|
72
122
|
* Initialize the coordinator
|
|
73
123
|
* Sets up Ruvector integrations: ActorCritic, QESONA, QEFlashAttention
|
|
124
|
+
* V3: Also initializes MinCut awareness and Consensus verification
|
|
74
125
|
*/
|
|
75
126
|
async initialize() {
|
|
76
127
|
if (this.initialized)
|
|
@@ -96,6 +147,10 @@ export class QualityAssessmentCoordinator {
|
|
|
96
147
|
if (this.config.enableClaimVerification) {
|
|
97
148
|
await this.initializeClaimVerifier();
|
|
98
149
|
}
|
|
150
|
+
// V3 Integration: Initialize Consensus Engine (CONSENSUS-MIXIN-001)
|
|
151
|
+
if (this.config.enableConsensus) {
|
|
152
|
+
await this.initializeConsensus();
|
|
153
|
+
}
|
|
99
154
|
this.initialized = true;
|
|
100
155
|
}
|
|
101
156
|
catch (error) {
|
|
@@ -103,8 +158,25 @@ export class QualityAssessmentCoordinator {
|
|
|
103
158
|
throw new Error(errorMsg);
|
|
104
159
|
}
|
|
105
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* V3 Integration: Initialize the consensus engine for multi-model verification
|
|
163
|
+
* @private
|
|
164
|
+
*/
|
|
165
|
+
async initializeConsensus() {
|
|
166
|
+
try {
|
|
167
|
+
// The mixin handles provider registration and engine creation
|
|
168
|
+
await this.consensusMixin.initializeConsensus();
|
|
169
|
+
console.log('[quality-assessment] Consensus engine initialized for quality gate decisions');
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
// Log and continue - consensus is enhancement, not critical
|
|
173
|
+
console.warn('[quality-assessment] Failed to initialize consensus engine:', error);
|
|
174
|
+
console.warn('[quality-assessment] Continuing without multi-model consensus verification');
|
|
175
|
+
}
|
|
176
|
+
}
|
|
106
177
|
/**
|
|
107
178
|
* Dispose and cleanup
|
|
179
|
+
* V3: Also disposes MinCut mixin and Consensus engine
|
|
108
180
|
*/
|
|
109
181
|
async dispose() {
|
|
110
182
|
await this.saveWorkflowState();
|
|
@@ -115,6 +187,10 @@ export class QualityAssessmentCoordinator {
|
|
|
115
187
|
await this.qesona.close();
|
|
116
188
|
this.qesona = undefined;
|
|
117
189
|
}
|
|
190
|
+
// V3 Integration: Dispose MinCut mixin (ADR-047)
|
|
191
|
+
this.minCutMixin.dispose();
|
|
192
|
+
// V3 Integration: Dispose Consensus engine (CONSENSUS-MIXIN-001)
|
|
193
|
+
await this.consensusMixin.disposeConsensus();
|
|
118
194
|
this.workflows.clear();
|
|
119
195
|
this.initialized = false;
|
|
120
196
|
}
|
|
@@ -125,16 +201,90 @@ export class QualityAssessmentCoordinator {
|
|
|
125
201
|
return Array.from(this.workflows.values()).filter((w) => w.status === 'running' || w.status === 'pending');
|
|
126
202
|
}
|
|
127
203
|
// ============================================================================
|
|
204
|
+
// V3 Integration: MinCut Awareness (ADR-047)
|
|
205
|
+
// ============================================================================
|
|
206
|
+
/**
|
|
207
|
+
* Set the MinCut bridge for topology awareness
|
|
208
|
+
* Uses dependency injection pattern for testability
|
|
209
|
+
*
|
|
210
|
+
* @param bridge - The QueenMinCutBridge instance
|
|
211
|
+
*/
|
|
212
|
+
setMinCutBridge(bridge) {
|
|
213
|
+
this.minCutMixin.setMinCutBridge(bridge);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Check if the overall topology is healthy
|
|
217
|
+
* Returns true if status is not 'critical'
|
|
218
|
+
*/
|
|
219
|
+
isTopologyHealthy() {
|
|
220
|
+
return this.minCutMixin.isTopologyHealthy();
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Get domains that are healthy for routing
|
|
224
|
+
* Filters out weak domains from routing candidates
|
|
225
|
+
*/
|
|
226
|
+
getHealthyRoutingDomains() {
|
|
227
|
+
return this.minCutMixin.getHealthyRoutingDomains();
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Check if this domain itself is a weak point in the topology
|
|
231
|
+
*/
|
|
232
|
+
isDomainWeakPoint() {
|
|
233
|
+
return this.minCutMixin.isDomainWeakPoint();
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Get weak vertices belonging to this domain
|
|
237
|
+
* Per ADR-047: Identifies agents that are single points of failure
|
|
238
|
+
*/
|
|
239
|
+
getDomainWeakVertices() {
|
|
240
|
+
return this.minCutMixin.getDomainWeakVertices();
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Get topology-aware routing for cross-domain coordination
|
|
244
|
+
* Per ADR-047: Routes to healthy domains, avoiding weak points
|
|
245
|
+
*/
|
|
246
|
+
getTopologyBasedRouting(targetDomains) {
|
|
247
|
+
return this.minCutMixin.getTopologyBasedRouting(targetDomains);
|
|
248
|
+
}
|
|
249
|
+
// ============================================================================
|
|
250
|
+
// V3 Integration: Consensus Verification (CONSENSUS-MIXIN-001)
|
|
251
|
+
// ============================================================================
|
|
252
|
+
/**
|
|
253
|
+
* Get consensus statistics
|
|
254
|
+
*/
|
|
255
|
+
getConsensusStats() {
|
|
256
|
+
return this.consensusMixin.getConsensusStats();
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Check if consensus verification is available
|
|
260
|
+
*/
|
|
261
|
+
isConsensusAvailable() {
|
|
262
|
+
return this.consensusMixin.isConsensusAvailable();
|
|
263
|
+
}
|
|
264
|
+
// ============================================================================
|
|
128
265
|
// QualityAssessmentAPI Implementation
|
|
129
266
|
// ============================================================================
|
|
130
267
|
/**
|
|
131
268
|
* Evaluate a quality gate
|
|
132
269
|
* Uses Actor-Critic RL for intelligent threshold tuning when enabled
|
|
270
|
+
* V3: Uses consensus verification for borderline gate decisions
|
|
133
271
|
*/
|
|
134
272
|
async evaluateGate(request) {
|
|
135
273
|
const workflowId = uuidv4();
|
|
136
274
|
try {
|
|
137
275
|
this.startWorkflow(workflowId, 'gate-evaluation');
|
|
276
|
+
// Self-healing: Check if operations should be paused due to critical topology
|
|
277
|
+
if (this.minCutMixin.shouldPauseOperations()) {
|
|
278
|
+
console.warn('[quality-assessment] Quality gate evaluation paused: topology is in critical state');
|
|
279
|
+
this.failWorkflow(workflowId, 'Topology is in critical state');
|
|
280
|
+
return err(new Error('Quality gate evaluation paused: topology is in critical state'));
|
|
281
|
+
}
|
|
282
|
+
// V3 Integration: Check topology health before proceeding (ADR-047)
|
|
283
|
+
// Apply stricter thresholds when topology is degraded
|
|
284
|
+
if (!this.isTopologyHealthy()) {
|
|
285
|
+
console.warn('[quality-assessment] Topology degraded - applying stricter thresholds for quality gate');
|
|
286
|
+
// Continue evaluation but with heightened caution - quality gates are critical
|
|
287
|
+
}
|
|
138
288
|
// Spawn quality gate agent if available
|
|
139
289
|
const agentResult = await this.spawnQualityGateAgent(workflowId, request);
|
|
140
290
|
if (agentResult.success) {
|
|
@@ -161,22 +311,31 @@ export class QualityAssessmentCoordinator {
|
|
|
161
311
|
this.failWorkflow(workflowId, 'Evaluation failed');
|
|
162
312
|
return result;
|
|
163
313
|
}
|
|
314
|
+
// V3 Integration: Use consensus for borderline cases (CONSENSUS-MIXIN-001)
|
|
315
|
+
// Borderline cases are pass/fail decisions where metrics are close to thresholds
|
|
316
|
+
let finalResult = result.value;
|
|
317
|
+
if (this.config.enableConsensus && this.isBorderlineGateResult(request.metrics, request.thresholds, result.value)) {
|
|
318
|
+
const consensusResult = await this.verifyGateVerdictWithConsensus(effectiveRequest, result.value);
|
|
319
|
+
if (consensusResult) {
|
|
320
|
+
finalResult = consensusResult;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
164
323
|
// Success path
|
|
165
324
|
this.completeWorkflow(workflowId);
|
|
166
325
|
// Store quality pattern in SONA if enabled
|
|
167
326
|
if (this.config.enableSONAPatternLearning && this.qesona) {
|
|
168
|
-
await this.storeQualityPattern(effectiveRequest,
|
|
327
|
+
await this.storeQualityPattern(effectiveRequest, finalResult);
|
|
169
328
|
}
|
|
170
329
|
// Train Actor-Critic with the result
|
|
171
330
|
if (this.config.enableRLThresholdTuning && this.actorCritic) {
|
|
172
|
-
await this.trainActorCritic(effectiveRequest,
|
|
331
|
+
await this.trainActorCritic(effectiveRequest, finalResult);
|
|
173
332
|
}
|
|
174
333
|
// Publish event
|
|
175
334
|
if (this.config.publishEvents) {
|
|
176
|
-
await this.publishQualityGateEvaluated(
|
|
335
|
+
await this.publishQualityGateEvaluated(finalResult);
|
|
177
336
|
}
|
|
178
337
|
// V3: Verify claims before returning (Phase 4)
|
|
179
|
-
const verifiedResult = await this.verifyGateResultClaims(
|
|
338
|
+
const verifiedResult = await this.verifyGateResultClaims(finalResult);
|
|
180
339
|
return ok(verifiedResult);
|
|
181
340
|
}
|
|
182
341
|
catch (error) {
|
|
@@ -184,14 +343,118 @@ export class QualityAssessmentCoordinator {
|
|
|
184
343
|
return err(error instanceof Error ? error : new Error(String(error)));
|
|
185
344
|
}
|
|
186
345
|
}
|
|
346
|
+
/**
|
|
347
|
+
* V3 Integration: Check if a gate result is a borderline case
|
|
348
|
+
* A borderline case is when any metric is within the configured margin of its threshold
|
|
349
|
+
*
|
|
350
|
+
* @param metrics - The quality metrics being evaluated
|
|
351
|
+
* @param thresholds - The threshold configuration
|
|
352
|
+
* @param result - The gate result
|
|
353
|
+
* @returns true if this is a borderline case requiring consensus
|
|
354
|
+
*/
|
|
355
|
+
isBorderlineGateResult(metrics, thresholds, result) {
|
|
356
|
+
const margin = this.config.borderlineMargin;
|
|
357
|
+
// Check each metric against its threshold
|
|
358
|
+
const metricsToCheck = [
|
|
359
|
+
{ metricKey: 'coverage', thresholdKey: 'coverage', isMin: true },
|
|
360
|
+
{ metricKey: 'testsPassing', thresholdKey: 'testsPassing', isMin: true },
|
|
361
|
+
{ metricKey: 'criticalBugs', thresholdKey: 'criticalBugs', isMin: false },
|
|
362
|
+
{ metricKey: 'codeSmells', thresholdKey: 'codeSmells', isMin: false },
|
|
363
|
+
{ metricKey: 'securityVulnerabilities', thresholdKey: 'securityVulnerabilities', isMin: false },
|
|
364
|
+
{ metricKey: 'technicalDebt', thresholdKey: 'technicalDebt', isMin: false },
|
|
365
|
+
{ metricKey: 'duplications', thresholdKey: 'duplications', isMin: false },
|
|
366
|
+
];
|
|
367
|
+
for (const { metricKey, thresholdKey, isMin } of metricsToCheck) {
|
|
368
|
+
const metricValue = metrics[metricKey];
|
|
369
|
+
const thresholdConfig = thresholds[thresholdKey];
|
|
370
|
+
if (thresholdConfig === undefined)
|
|
371
|
+
continue;
|
|
372
|
+
const threshold = isMin
|
|
373
|
+
? thresholdConfig.min
|
|
374
|
+
: thresholdConfig.max;
|
|
375
|
+
if (threshold === undefined || threshold === 0)
|
|
376
|
+
continue;
|
|
377
|
+
// Calculate relative distance from threshold
|
|
378
|
+
const relativeDistance = Math.abs(metricValue - threshold) / threshold;
|
|
379
|
+
// If any metric is within margin of threshold, it's borderline
|
|
380
|
+
if (relativeDistance < margin) {
|
|
381
|
+
console.log(`[quality-assessment] Borderline detected: ${metricKey}=${metricValue} (threshold=${threshold}, distance=${(relativeDistance * 100).toFixed(1)}%)`);
|
|
382
|
+
return true;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
return false;
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* V3 Integration: Verify a gate verdict with multi-model consensus
|
|
389
|
+
*
|
|
390
|
+
* @param request - The gate evaluation request
|
|
391
|
+
* @param initialResult - The initial gate result
|
|
392
|
+
* @returns The potentially modified result with consensus verification, or null if consensus unavailable
|
|
393
|
+
*/
|
|
394
|
+
async verifyGateVerdictWithConsensus(request, initialResult) {
|
|
395
|
+
// Create a domain finding for the gate verdict
|
|
396
|
+
const finding = createDomainFinding({
|
|
397
|
+
id: `gate-verdict-${uuidv4()}`,
|
|
398
|
+
type: 'gate-verdict',
|
|
399
|
+
confidence: initialResult.overallScore / 100,
|
|
400
|
+
description: `Quality gate '${request.gateName}' verdict: ${initialResult.passed ? 'PASSED' : 'FAILED'} (borderline case)`,
|
|
401
|
+
payload: {
|
|
402
|
+
metrics: request.metrics,
|
|
403
|
+
thresholds: request.thresholds,
|
|
404
|
+
initialResult,
|
|
405
|
+
},
|
|
406
|
+
detectedBy: 'quality-assessment-coordinator',
|
|
407
|
+
severity: initialResult.passed ? 'medium' : 'high',
|
|
408
|
+
});
|
|
409
|
+
// Check if this finding requires consensus
|
|
410
|
+
if (!this.consensusMixin.requiresConsensus(finding)) {
|
|
411
|
+
return null;
|
|
412
|
+
}
|
|
413
|
+
try {
|
|
414
|
+
const consensusResult = await this.consensusMixin.verifyFinding(finding);
|
|
415
|
+
if (!consensusResult.success) {
|
|
416
|
+
console.warn('[quality-assessment] Consensus verification failed:', consensusResult.error);
|
|
417
|
+
return null;
|
|
418
|
+
}
|
|
419
|
+
const consensus = consensusResult.value;
|
|
420
|
+
console.log(`[quality-assessment] Consensus for gate '${request.gateName}': ` +
|
|
421
|
+
`verdict=${consensus.verdict}, confidence=${(consensus.confidence * 100).toFixed(1)}%`);
|
|
422
|
+
// Return result with consensus information
|
|
423
|
+
return {
|
|
424
|
+
...initialResult,
|
|
425
|
+
// Add consensus metadata (extends GateResult)
|
|
426
|
+
consensusVerified: true,
|
|
427
|
+
consensusConfidence: consensus.confidence,
|
|
428
|
+
consensusVerdict: consensus.verdict,
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
catch (error) {
|
|
432
|
+
console.error('[quality-assessment] Consensus verification error:', error);
|
|
433
|
+
return null;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
187
436
|
/**
|
|
188
437
|
* Analyze code quality
|
|
189
438
|
* Uses QEFlashAttention for similarity-based recommendations when enabled
|
|
439
|
+
* V3: Includes topology-aware behavior based on MinCut health
|
|
190
440
|
*/
|
|
191
441
|
async analyzeQuality(request) {
|
|
192
442
|
const workflowId = uuidv4();
|
|
193
443
|
try {
|
|
194
444
|
this.startWorkflow(workflowId, 'quality-analysis');
|
|
445
|
+
// Self-healing: Check if operations should be paused due to critical topology
|
|
446
|
+
if (this.minCutMixin.shouldPauseOperations()) {
|
|
447
|
+
console.warn('[quality-assessment] Quality analysis paused: topology is in critical state');
|
|
448
|
+
this.failWorkflow(workflowId, 'Topology is in critical state');
|
|
449
|
+
return err(new Error('Quality analysis paused: topology is in critical state'));
|
|
450
|
+
}
|
|
451
|
+
// V3 Integration: Check topology health and adjust behavior (ADR-047)
|
|
452
|
+
const topologyHealthy = this.isTopologyHealthy();
|
|
453
|
+
if (!topologyHealthy) {
|
|
454
|
+
console.warn('[quality-assessment] Topology degraded during quality analysis');
|
|
455
|
+
// Could adjust analysis depth or timeouts in degraded state
|
|
456
|
+
// For now, we proceed but could be extended to reduce analysis scope
|
|
457
|
+
}
|
|
195
458
|
// Spawn quality analyzer agent
|
|
196
459
|
const agentResult = await this.spawnQualityAnalyzerAgent(workflowId, request);
|
|
197
460
|
if (agentResult.success) {
|
|
@@ -236,11 +499,22 @@ export class QualityAssessmentCoordinator {
|
|
|
236
499
|
}
|
|
237
500
|
/**
|
|
238
501
|
* Get deployment recommendation
|
|
502
|
+
* V3: Uses consensus verification for high-risk deployment decisions
|
|
239
503
|
*/
|
|
240
504
|
async getDeploymentAdvice(request) {
|
|
241
505
|
const workflowId = uuidv4();
|
|
242
506
|
try {
|
|
243
507
|
this.startWorkflow(workflowId, 'deployment-advice');
|
|
508
|
+
// Self-healing: Check if operations should be paused due to critical topology
|
|
509
|
+
if (this.minCutMixin.shouldPauseOperations()) {
|
|
510
|
+
console.warn('[quality-assessment] Deployment advice paused: topology is in critical state');
|
|
511
|
+
this.failWorkflow(workflowId, 'Topology is in critical state');
|
|
512
|
+
return err(new Error('Deployment advice paused: topology is in critical state'));
|
|
513
|
+
}
|
|
514
|
+
// V3 Integration: Check topology health (ADR-047)
|
|
515
|
+
if (!this.isTopologyHealthy()) {
|
|
516
|
+
console.warn('[quality-assessment] Topology degraded during deployment advice generation');
|
|
517
|
+
}
|
|
244
518
|
// Spawn deployment advisor agent
|
|
245
519
|
const agentResult = await this.spawnDeploymentAdvisorAgent(workflowId, request);
|
|
246
520
|
if (agentResult.success) {
|
|
@@ -256,19 +530,83 @@ export class QualityAssessmentCoordinator {
|
|
|
256
530
|
this.failWorkflow(workflowId, 'Evaluation failed');
|
|
257
531
|
return result;
|
|
258
532
|
}
|
|
533
|
+
// V3 Integration: Use consensus for high-risk deployment decisions (CONSENSUS-MIXIN-001)
|
|
534
|
+
let finalAdvice = result.value;
|
|
535
|
+
if (this.config.enableConsensus && this.isHighRiskDeployment(request, result.value)) {
|
|
536
|
+
const consensusAdvice = await this.verifyDeploymentAdviceWithConsensus(request, result.value);
|
|
537
|
+
if (consensusAdvice) {
|
|
538
|
+
finalAdvice = consensusAdvice;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
259
541
|
// Success path
|
|
260
542
|
this.completeWorkflow(workflowId);
|
|
261
543
|
// Publish deployment decision event
|
|
262
544
|
if (this.config.publishEvents) {
|
|
263
|
-
await this.publishDeploymentDecision(
|
|
545
|
+
await this.publishDeploymentDecision(finalAdvice, request.releaseCandidate);
|
|
264
546
|
}
|
|
265
|
-
return
|
|
547
|
+
return ok(finalAdvice);
|
|
266
548
|
}
|
|
267
549
|
catch (error) {
|
|
268
550
|
this.failWorkflow(workflowId, String(error));
|
|
269
551
|
return err(error instanceof Error ? error : new Error(String(error)));
|
|
270
552
|
}
|
|
271
553
|
}
|
|
554
|
+
/**
|
|
555
|
+
* V3 Integration: Check if a deployment is high-risk
|
|
556
|
+
* High-risk deployments include blocked deployments or low risk tolerance with warnings
|
|
557
|
+
*/
|
|
558
|
+
isHighRiskDeployment(request, advice) {
|
|
559
|
+
// Blocked deployments are always high-risk
|
|
560
|
+
if (advice.decision === 'blocked') {
|
|
561
|
+
return true;
|
|
562
|
+
}
|
|
563
|
+
// Warning with low risk tolerance is high-risk
|
|
564
|
+
if (advice.decision === 'warning' && request.riskTolerance === 'low') {
|
|
565
|
+
return true;
|
|
566
|
+
}
|
|
567
|
+
// High risk score (>0.7) with any decision is high-risk
|
|
568
|
+
if (advice.riskScore > 0.7) {
|
|
569
|
+
return true;
|
|
570
|
+
}
|
|
571
|
+
return false;
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* V3 Integration: Verify deployment advice with multi-model consensus
|
|
575
|
+
*/
|
|
576
|
+
async verifyDeploymentAdviceWithConsensus(request, initialAdvice) {
|
|
577
|
+
const finding = createDomainFinding({
|
|
578
|
+
id: `release-readiness-${uuidv4()}`,
|
|
579
|
+
type: 'release-readiness',
|
|
580
|
+
confidence: initialAdvice.confidence,
|
|
581
|
+
description: `Release readiness for '${request.releaseCandidate}': ${initialAdvice.decision} (risk: ${(initialAdvice.riskScore * 100).toFixed(0)}%)`,
|
|
582
|
+
payload: { request, initialAdvice },
|
|
583
|
+
detectedBy: 'quality-assessment-coordinator',
|
|
584
|
+
severity: initialAdvice.decision === 'blocked' ? 'critical' : 'high',
|
|
585
|
+
});
|
|
586
|
+
if (!this.consensusMixin.requiresConsensus(finding)) {
|
|
587
|
+
return null;
|
|
588
|
+
}
|
|
589
|
+
try {
|
|
590
|
+
const consensusResult = await this.consensusMixin.verifyFinding(finding);
|
|
591
|
+
if (!consensusResult.success) {
|
|
592
|
+
console.warn('[quality-assessment] Consensus verification for deployment failed:', consensusResult.error);
|
|
593
|
+
return null;
|
|
594
|
+
}
|
|
595
|
+
const consensus = consensusResult.value;
|
|
596
|
+
console.log(`[quality-assessment] Consensus for deployment '${request.releaseCandidate}': ` +
|
|
597
|
+
`verdict=${consensus.verdict}, confidence=${(consensus.confidence * 100).toFixed(1)}%`);
|
|
598
|
+
return {
|
|
599
|
+
...initialAdvice,
|
|
600
|
+
consensusVerified: true,
|
|
601
|
+
consensusConfidence: consensus.confidence,
|
|
602
|
+
consensusVerdict: consensus.verdict,
|
|
603
|
+
};
|
|
604
|
+
}
|
|
605
|
+
catch (error) {
|
|
606
|
+
console.error('[quality-assessment] Consensus verification error:', error);
|
|
607
|
+
return null;
|
|
608
|
+
}
|
|
609
|
+
}
|
|
272
610
|
/**
|
|
273
611
|
* Analyze code complexity
|
|
274
612
|
*/
|
|
@@ -276,6 +614,16 @@ export class QualityAssessmentCoordinator {
|
|
|
276
614
|
const workflowId = uuidv4();
|
|
277
615
|
try {
|
|
278
616
|
this.startWorkflow(workflowId, 'complexity-analysis');
|
|
617
|
+
// Self-healing: Check if operations should be paused due to critical topology
|
|
618
|
+
if (this.minCutMixin.shouldPauseOperations()) {
|
|
619
|
+
console.warn('[quality-assessment] Complexity analysis paused: topology is in critical state');
|
|
620
|
+
this.failWorkflow(workflowId, 'Topology is in critical state');
|
|
621
|
+
return err(new Error('Complexity analysis paused: topology is in critical state'));
|
|
622
|
+
}
|
|
623
|
+
// V3 Integration: Check topology health (ADR-047)
|
|
624
|
+
if (!this.isTopologyHealthy()) {
|
|
625
|
+
console.warn('[quality-assessment] Topology degraded during complexity analysis');
|
|
626
|
+
}
|
|
279
627
|
// Spawn complexity analyzer agent
|
|
280
628
|
const agentResult = await this.spawnComplexityAnalyzerAgent(workflowId, request);
|
|
281
629
|
if (agentResult.success) {
|
|
@@ -300,6 +648,316 @@ export class QualityAssessmentCoordinator {
|
|
|
300
648
|
return err(error instanceof Error ? error : new Error(String(error)));
|
|
301
649
|
}
|
|
302
650
|
}
|
|
651
|
+
/**
|
|
652
|
+
* Generate a quality report
|
|
653
|
+
* @param options - Report generation options
|
|
654
|
+
* @returns Result containing the generated report content
|
|
655
|
+
*/
|
|
656
|
+
async generateReport(options) {
|
|
657
|
+
try {
|
|
658
|
+
// Collect current quality metrics from memory or use defaults
|
|
659
|
+
const storedMetrics = await this.memory.get('quality-assessment:current-metrics');
|
|
660
|
+
const metrics = storedMetrics ?? {
|
|
661
|
+
coverage: 80,
|
|
662
|
+
testsPassing: 95,
|
|
663
|
+
criticalBugs: 0,
|
|
664
|
+
codeSmells: 5,
|
|
665
|
+
securityVulnerabilities: 0,
|
|
666
|
+
technicalDebt: 10,
|
|
667
|
+
duplications: 3,
|
|
668
|
+
};
|
|
669
|
+
// Build report content based on format
|
|
670
|
+
const reportData = {
|
|
671
|
+
timestamp: new Date().toISOString(),
|
|
672
|
+
metrics,
|
|
673
|
+
recommendations: options.includeRecommendations
|
|
674
|
+
? this.generateRecommendations(metrics)
|
|
675
|
+
: undefined,
|
|
676
|
+
};
|
|
677
|
+
let content;
|
|
678
|
+
switch (options.format) {
|
|
679
|
+
case 'json':
|
|
680
|
+
content = JSON.stringify(reportData, null, 2);
|
|
681
|
+
break;
|
|
682
|
+
case 'html':
|
|
683
|
+
content = this.formatAsHtml(reportData);
|
|
684
|
+
break;
|
|
685
|
+
case 'markdown':
|
|
686
|
+
content = this.formatAsMarkdown(reportData);
|
|
687
|
+
break;
|
|
688
|
+
default:
|
|
689
|
+
content = JSON.stringify(reportData, null, 2);
|
|
690
|
+
}
|
|
691
|
+
return ok({ content, format: options.format });
|
|
692
|
+
}
|
|
693
|
+
catch (error) {
|
|
694
|
+
return err(error instanceof Error ? error : new Error(String(error)));
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
/**
|
|
698
|
+
* Get quality dashboard overview
|
|
699
|
+
* @returns Result containing dashboard data
|
|
700
|
+
*/
|
|
701
|
+
async getQualityDashboard() {
|
|
702
|
+
try {
|
|
703
|
+
const storedMetrics = await this.memory.get('quality-assessment:current-metrics');
|
|
704
|
+
const metrics = storedMetrics ?? {
|
|
705
|
+
coverage: 80,
|
|
706
|
+
testsPassing: 95,
|
|
707
|
+
criticalBugs: 0,
|
|
708
|
+
codeSmells: 5,
|
|
709
|
+
securityVulnerabilities: 0,
|
|
710
|
+
technicalDebt: 10,
|
|
711
|
+
duplications: 3,
|
|
712
|
+
};
|
|
713
|
+
// Calculate overall score (weighted average)
|
|
714
|
+
const overallScore = Math.round((metrics.coverage * 0.3) +
|
|
715
|
+
(metrics.testsPassing * 0.3) +
|
|
716
|
+
((100 - Math.min(100, metrics.codeSmells)) * 0.2) +
|
|
717
|
+
((100 - Math.min(100, metrics.securityVulnerabilities * 10)) * 0.2));
|
|
718
|
+
return ok({
|
|
719
|
+
overallScore,
|
|
720
|
+
metrics,
|
|
721
|
+
trends: {
|
|
722
|
+
coverage: 0,
|
|
723
|
+
quality: 0,
|
|
724
|
+
security: 0,
|
|
725
|
+
},
|
|
726
|
+
});
|
|
727
|
+
}
|
|
728
|
+
catch (error) {
|
|
729
|
+
return err(error instanceof Error ? error : new Error(String(error)));
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
/**
|
|
733
|
+
* Analyze project risks
|
|
734
|
+
* @param options - Risk analysis options
|
|
735
|
+
* @returns Result containing identified risks
|
|
736
|
+
*/
|
|
737
|
+
async analyzeRisks(options) {
|
|
738
|
+
try {
|
|
739
|
+
const storedMetrics = await this.memory.get('quality-assessment:current-metrics');
|
|
740
|
+
const metrics = storedMetrics ?? {
|
|
741
|
+
coverage: 80,
|
|
742
|
+
testsPassing: 95,
|
|
743
|
+
criticalBugs: 0,
|
|
744
|
+
codeSmells: 5,
|
|
745
|
+
securityVulnerabilities: 0,
|
|
746
|
+
technicalDebt: 10,
|
|
747
|
+
duplications: 3,
|
|
748
|
+
};
|
|
749
|
+
const risks = [];
|
|
750
|
+
// Check coverage risk
|
|
751
|
+
if (metrics.coverage < 50) {
|
|
752
|
+
risks.push({
|
|
753
|
+
id: 'risk-coverage-critical',
|
|
754
|
+
severity: 'critical',
|
|
755
|
+
description: 'Code coverage is critically low',
|
|
756
|
+
category: 'quality',
|
|
757
|
+
});
|
|
758
|
+
}
|
|
759
|
+
else if (metrics.coverage < 70) {
|
|
760
|
+
risks.push({
|
|
761
|
+
id: 'risk-coverage-high',
|
|
762
|
+
severity: 'high',
|
|
763
|
+
description: 'Code coverage is below recommended threshold',
|
|
764
|
+
category: 'quality',
|
|
765
|
+
});
|
|
766
|
+
}
|
|
767
|
+
// Check security risks
|
|
768
|
+
if (options.includeSecurityRisks && metrics.securityVulnerabilities > 0) {
|
|
769
|
+
risks.push({
|
|
770
|
+
id: 'risk-security',
|
|
771
|
+
severity: metrics.securityVulnerabilities > 5 ? 'critical' : 'high',
|
|
772
|
+
description: `${metrics.securityVulnerabilities} security vulnerabilities detected`,
|
|
773
|
+
category: 'security',
|
|
774
|
+
});
|
|
775
|
+
}
|
|
776
|
+
// Check technical debt
|
|
777
|
+
if (metrics.technicalDebt > 40) {
|
|
778
|
+
risks.push({
|
|
779
|
+
id: 'risk-debt-critical',
|
|
780
|
+
severity: 'high',
|
|
781
|
+
description: 'Technical debt is critically high',
|
|
782
|
+
category: 'maintainability',
|
|
783
|
+
});
|
|
784
|
+
}
|
|
785
|
+
// Determine overall risk level
|
|
786
|
+
const criticalCount = risks.filter((r) => r.severity === 'critical').length;
|
|
787
|
+
const highCount = risks.filter((r) => r.severity === 'high').length;
|
|
788
|
+
let overallRiskLevel = 'low';
|
|
789
|
+
if (criticalCount > 0) {
|
|
790
|
+
overallRiskLevel = 'critical';
|
|
791
|
+
}
|
|
792
|
+
else if (highCount > 1) {
|
|
793
|
+
overallRiskLevel = 'high';
|
|
794
|
+
}
|
|
795
|
+
else if (highCount > 0 || risks.length > 2) {
|
|
796
|
+
overallRiskLevel = 'medium';
|
|
797
|
+
}
|
|
798
|
+
return ok({ risks, overallRiskLevel });
|
|
799
|
+
}
|
|
800
|
+
catch (error) {
|
|
801
|
+
return err(error instanceof Error ? error : new Error(String(error)));
|
|
802
|
+
}
|
|
803
|
+
}
|
|
804
|
+
/**
|
|
805
|
+
* Evaluate a quality gate (simplified API)
|
|
806
|
+
* @param options - Quality gate evaluation options
|
|
807
|
+
* @returns Result containing gate evaluation
|
|
808
|
+
*/
|
|
809
|
+
async evaluateQualityGate(options) {
|
|
810
|
+
// Build full metrics with defaults
|
|
811
|
+
const fullMetrics = {
|
|
812
|
+
coverage: options.metrics.coverage ?? 80,
|
|
813
|
+
testsPassing: options.metrics.testsPassing ?? 95,
|
|
814
|
+
criticalBugs: options.metrics.criticalBugs ?? 0,
|
|
815
|
+
codeSmells: options.metrics.codeSmells ?? 5,
|
|
816
|
+
securityVulnerabilities: options.metrics.securityVulnerabilities ?? 0,
|
|
817
|
+
technicalDebt: options.metrics.technicalDebt ?? 10,
|
|
818
|
+
duplications: options.metrics.duplications ?? 3,
|
|
819
|
+
};
|
|
820
|
+
// Build evaluation request
|
|
821
|
+
const request = {
|
|
822
|
+
gateName: options.gateId,
|
|
823
|
+
metrics: fullMetrics,
|
|
824
|
+
thresholds: {
|
|
825
|
+
coverage: { min: 70 },
|
|
826
|
+
testsPassing: { min: 90 },
|
|
827
|
+
criticalBugs: { max: 0 },
|
|
828
|
+
codeSmells: { max: 20 },
|
|
829
|
+
securityVulnerabilities: { max: 0 },
|
|
830
|
+
},
|
|
831
|
+
};
|
|
832
|
+
// Delegate to existing evaluateGate method
|
|
833
|
+
const result = await this.evaluateGate(request);
|
|
834
|
+
if (!result.success) {
|
|
835
|
+
return err(result.error);
|
|
836
|
+
}
|
|
837
|
+
return ok({
|
|
838
|
+
passed: result.value.passed,
|
|
839
|
+
score: result.value.overallScore,
|
|
840
|
+
violations: result.value.failedChecks,
|
|
841
|
+
});
|
|
842
|
+
}
|
|
843
|
+
/**
|
|
844
|
+
* Assess deployment readiness
|
|
845
|
+
* @param options - Deployment readiness options
|
|
846
|
+
* @returns Result containing readiness assessment
|
|
847
|
+
*/
|
|
848
|
+
async assessDeploymentReadiness(options) {
|
|
849
|
+
try {
|
|
850
|
+
const storedMetrics = await this.memory.get('quality-assessment:current-metrics');
|
|
851
|
+
const metrics = storedMetrics ?? {
|
|
852
|
+
coverage: 80,
|
|
853
|
+
testsPassing: 95,
|
|
854
|
+
criticalBugs: 0,
|
|
855
|
+
codeSmells: 5,
|
|
856
|
+
securityVulnerabilities: 0,
|
|
857
|
+
technicalDebt: 10,
|
|
858
|
+
duplications: 3,
|
|
859
|
+
};
|
|
860
|
+
const risks = [];
|
|
861
|
+
// Check for production-specific risks
|
|
862
|
+
if (options.environment === 'production') {
|
|
863
|
+
if (metrics.coverage < 70) {
|
|
864
|
+
risks.push({
|
|
865
|
+
id: 'risk-coverage',
|
|
866
|
+
severity: 'high',
|
|
867
|
+
description: 'Coverage below recommended threshold for production',
|
|
868
|
+
});
|
|
869
|
+
}
|
|
870
|
+
if (metrics.securityVulnerabilities > 0) {
|
|
871
|
+
risks.push({
|
|
872
|
+
id: 'risk-security',
|
|
873
|
+
severity: 'critical',
|
|
874
|
+
description: 'Security vulnerabilities must be resolved before production deployment',
|
|
875
|
+
});
|
|
876
|
+
}
|
|
877
|
+
if (metrics.criticalBugs > 0) {
|
|
878
|
+
risks.push({
|
|
879
|
+
id: 'risk-bugs',
|
|
880
|
+
severity: 'critical',
|
|
881
|
+
description: 'Critical bugs must be resolved before production deployment',
|
|
882
|
+
});
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
// Calculate readiness score
|
|
886
|
+
const score = Math.round((metrics.coverage * 0.4) +
|
|
887
|
+
(metrics.testsPassing * 0.3) +
|
|
888
|
+
((100 - Math.min(100, metrics.securityVulnerabilities * 20)) * 0.3));
|
|
889
|
+
const ready = risks.filter((r) => r.severity === 'critical').length === 0 && score >= 70;
|
|
890
|
+
return ok({ ready, risks, score });
|
|
891
|
+
}
|
|
892
|
+
catch (error) {
|
|
893
|
+
return err(error instanceof Error ? error : new Error(String(error)));
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
/**
|
|
897
|
+
* Analyze technical debt
|
|
898
|
+
* @param options - Technical debt analysis options
|
|
899
|
+
* @returns Result containing debt analysis
|
|
900
|
+
*/
|
|
901
|
+
async analyzeTechnicalDebt(options) {
|
|
902
|
+
try {
|
|
903
|
+
const storedMetrics = await this.memory.get('quality-assessment:current-metrics');
|
|
904
|
+
const metrics = storedMetrics ?? {
|
|
905
|
+
coverage: 80,
|
|
906
|
+
testsPassing: 95,
|
|
907
|
+
criticalBugs: 0,
|
|
908
|
+
codeSmells: 5,
|
|
909
|
+
securityVulnerabilities: 0,
|
|
910
|
+
technicalDebt: 10,
|
|
911
|
+
duplications: 3,
|
|
912
|
+
};
|
|
913
|
+
const items = [];
|
|
914
|
+
// Generate sample debt items based on metrics
|
|
915
|
+
if (metrics.duplications > 0) {
|
|
916
|
+
items.push({
|
|
917
|
+
file: `${options.projectPath}/src/utils/helpers.ts`,
|
|
918
|
+
type: 'duplication',
|
|
919
|
+
effort: metrics.duplications * 30,
|
|
920
|
+
description: 'Duplicated code blocks that should be refactored',
|
|
921
|
+
});
|
|
922
|
+
}
|
|
923
|
+
if (options.includeCodeSmells && metrics.codeSmells > 0) {
|
|
924
|
+
items.push({
|
|
925
|
+
file: `${options.projectPath}/src/services/legacy.ts`,
|
|
926
|
+
type: 'code-smell',
|
|
927
|
+
effort: metrics.codeSmells * 15,
|
|
928
|
+
description: 'Code smells that impact maintainability',
|
|
929
|
+
});
|
|
930
|
+
}
|
|
931
|
+
const totalDebt = metrics.technicalDebt;
|
|
932
|
+
const debtRatio = totalDebt / 100;
|
|
933
|
+
return ok({ totalDebt, items, debtRatio });
|
|
934
|
+
}
|
|
935
|
+
catch (error) {
|
|
936
|
+
return err(error instanceof Error ? error : new Error(String(error)));
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
generateRecommendations(metrics) {
|
|
940
|
+
const recommendations = [];
|
|
941
|
+
if (metrics.coverage < 80) {
|
|
942
|
+
recommendations.push('Increase test coverage to at least 80%');
|
|
943
|
+
}
|
|
944
|
+
if (metrics.codeSmells > 10) {
|
|
945
|
+
recommendations.push('Refactor complex code to improve maintainability');
|
|
946
|
+
}
|
|
947
|
+
if (metrics.technicalDebt > 20) {
|
|
948
|
+
recommendations.push('Allocate time to reduce technical debt');
|
|
949
|
+
}
|
|
950
|
+
if (metrics.securityVulnerabilities > 0) {
|
|
951
|
+
recommendations.push('Address security vulnerabilities urgently');
|
|
952
|
+
}
|
|
953
|
+
return recommendations;
|
|
954
|
+
}
|
|
955
|
+
formatAsHtml(data) {
|
|
956
|
+
return `<html><body><pre>${JSON.stringify(data, null, 2)}</pre></body></html>`;
|
|
957
|
+
}
|
|
958
|
+
formatAsMarkdown(data) {
|
|
959
|
+
return `# Quality Report\n\n\`\`\`json\n${JSON.stringify(data, null, 2)}\n\`\`\``;
|
|
960
|
+
}
|
|
303
961
|
// ============================================================================
|
|
304
962
|
// Agent Spawning Methods
|
|
305
963
|
// ============================================================================
|