agentic-qe 1.4.3 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/qe-api-contract-validator.md +133 -27
- package/.claude/agents/qe-api-contract-validator.md.backup +1148 -0
- package/.claude/agents/qe-api-contract-validator.md.backup-20251107-134747 +1148 -0
- package/.claude/agents/qe-api-contract-validator.md.backup-phase2-20251107-140039 +1123 -0
- package/.claude/agents/qe-chaos-engineer.md +142 -23
- package/.claude/agents/qe-chaos-engineer.md.backup +808 -0
- package/.claude/agents/qe-chaos-engineer.md.backup-20251107-134747 +808 -0
- package/.claude/agents/qe-chaos-engineer.md.backup-phase2-20251107-140039 +787 -0
- package/.claude/agents/qe-code-complexity.md +111 -23
- package/.claude/agents/qe-code-complexity.md.backup +291 -0
- package/.claude/agents/qe-code-complexity.md.backup-20251107-134747 +291 -0
- package/.claude/agents/qe-code-complexity.md.backup-phase2-20251107-140039 +286 -0
- package/.claude/agents/qe-coverage-analyzer.md +306 -30
- package/.claude/agents/qe-coverage-analyzer.md.backup +467 -0
- package/.claude/agents/qe-coverage-analyzer.md.backup-20251107-134747 +467 -0
- package/.claude/agents/qe-coverage-analyzer.md.backup-phase2-20251107-140039 +438 -0
- package/.claude/agents/qe-deployment-readiness.md +84 -28
- package/.claude/agents/qe-deployment-readiness.md.backup +1166 -0
- package/.claude/agents/qe-deployment-readiness.md.backup-20251107-134747 +1166 -0
- package/.claude/agents/qe-deployment-readiness.md.backup-phase2-20251107-140039 +1140 -0
- package/.claude/agents/qe-flaky-test-hunter.md +277 -35
- package/.claude/agents/qe-flaky-test-hunter.md.backup +1195 -0
- package/.claude/agents/qe-flaky-test-hunter.md.backup-20251107-134747 +1195 -0
- package/.claude/agents/qe-flaky-test-hunter.md.backup-phase2-20251107-140039 +1162 -0
- package/.claude/agents/qe-fleet-commander.md +126 -23
- package/.claude/agents/qe-fleet-commander.md.backup +718 -0
- package/.claude/agents/qe-fleet-commander.md.backup-20251107-134747 +718 -0
- package/.claude/agents/qe-fleet-commander.md.backup-phase2-20251107-140039 +697 -0
- package/.claude/agents/qe-performance-tester.md +314 -57
- package/.claude/agents/qe-performance-tester.md.backup +428 -0
- package/.claude/agents/qe-performance-tester.md.backup-20251107-134747 +428 -0
- package/.claude/agents/qe-performance-tester.md.backup-phase2-20251107-140039 +372 -0
- package/.claude/agents/qe-production-intelligence.md +126 -27
- package/.claude/agents/qe-production-intelligence.md.backup +1219 -0
- package/.claude/agents/qe-production-intelligence.md.backup-20251107-134747 +1219 -0
- package/.claude/agents/qe-production-intelligence.md.backup-phase2-20251107-140039 +1194 -0
- package/.claude/agents/qe-quality-analyzer.md +127 -32
- package/.claude/agents/qe-quality-analyzer.md.backup +425 -0
- package/.claude/agents/qe-quality-analyzer.md.backup-20251107-134747 +425 -0
- package/.claude/agents/qe-quality-analyzer.md.backup-phase2-20251107-140039 +394 -0
- package/.claude/agents/qe-quality-gate.md +148 -33
- package/.claude/agents/qe-quality-gate.md.backup +446 -0
- package/.claude/agents/qe-quality-gate.md.backup-20251107-134747 +446 -0
- package/.claude/agents/qe-quality-gate.md.backup-phase2-20251107-140039 +415 -0
- package/.claude/agents/qe-regression-risk-analyzer.md +78 -27
- package/.claude/agents/qe-regression-risk-analyzer.md.backup +1009 -0
- package/.claude/agents/qe-regression-risk-analyzer.md.backup-20251107-134747 +1009 -0
- package/.claude/agents/qe-regression-risk-analyzer.md.backup-phase2-20251107-140039 +984 -0
- package/.claude/agents/qe-requirements-validator.md +131 -27
- package/.claude/agents/qe-requirements-validator.md.backup +748 -0
- package/.claude/agents/qe-requirements-validator.md.backup-20251107-134747 +748 -0
- package/.claude/agents/qe-requirements-validator.md.backup-phase2-20251107-140039 +723 -0
- package/.claude/agents/qe-security-scanner.md +137 -62
- package/.claude/agents/qe-security-scanner.md.backup +634 -0
- package/.claude/agents/qe-security-scanner.md.backup-20251107-134747 +634 -0
- package/.claude/agents/qe-security-scanner.md.backup-phase2-20251107-140039 +573 -0
- package/.claude/agents/qe-test-data-architect.md +129 -26
- package/.claude/agents/qe-test-data-architect.md.backup +1064 -0
- package/.claude/agents/qe-test-data-architect.md.backup-20251107-134747 +1064 -0
- package/.claude/agents/qe-test-data-architect.md.backup-phase2-20251107-140039 +1040 -0
- package/.claude/agents/qe-test-executor.md +165 -21
- package/.claude/agents/qe-test-executor.md.backup +389 -0
- package/.claude/agents/qe-test-executor.md.backup-20251107-134747 +389 -0
- package/.claude/agents/qe-test-executor.md.backup-phase2-20251107-140039 +369 -0
- package/.claude/agents/qe-test-generator.md +379 -34
- package/.claude/agents/qe-test-generator.md.backup +997 -0
- package/.claude/agents/qe-test-generator.md.backup-20251107-134747 +997 -0
- package/.claude/agents/qe-visual-tester.md +236 -23
- package/.claude/agents/qe-visual-tester.md.backup +777 -0
- package/.claude/agents/qe-visual-tester.md.backup-20251107-134747 +777 -0
- package/.claude/agents/qe-visual-tester.md.backup-phase2-20251107-140039 +756 -0
- package/.claude/agents/subagents/qe-code-reviewer.md +59 -0
- package/.claude/agents/subagents/qe-data-generator.md +60 -0
- package/.claude/agents/subagents/qe-integration-tester.md +77 -0
- package/.claude/agents/subagents/qe-performance-validator.md +55 -0
- package/.claude/agents/subagents/qe-security-auditor.md +51 -0
- package/.claude/agents/subagents/qe-test-implementer.md +371 -0
- package/.claude/agents/subagents/qe-test-refactorer.md +510 -0
- package/.claude/agents/subagents/qe-test-writer.md +603 -0
- package/.claude/skills/accessibility-testing/SKILL.md +764 -777
- package/.claude/skills/agentic-quality-engineering/SKILL.md +0 -6
- package/.claude/skills/api-testing-patterns/SKILL.md +0 -12
- package/.claude/skills/bug-reporting-excellence/SKILL.md +0 -6
- package/.claude/skills/chaos-engineering-resilience/SKILL.md +0 -6
- package/.claude/skills/code-review-quality/SKILL.md +0 -6
- package/.claude/skills/compatibility-testing/SKILL.md +0 -6
- package/.claude/skills/compliance-testing/SKILL.md +0 -6
- package/.claude/skills/consultancy-practices/SKILL.md +0 -6
- package/.claude/skills/context-driven-testing/SKILL.md +0 -6
- package/.claude/skills/contract-testing/SKILL.md +0 -6
- package/.claude/skills/database-testing/SKILL.md +0 -6
- package/.claude/skills/exploratory-testing-advanced/SKILL.md +0 -6
- package/.claude/skills/holistic-testing-pact/SKILL.md +0 -6
- package/.claude/skills/localization-testing/SKILL.md +0 -6
- package/.claude/skills/mobile-testing/SKILL.md +535 -548
- package/.claude/skills/mutation-testing/SKILL.md +0 -6
- package/.claude/skills/performance-testing/SKILL.md +0 -6
- package/.claude/skills/quality-metrics/SKILL.md +0 -12
- package/.claude/skills/refactoring-patterns/SKILL.md +0 -6
- package/.claude/skills/regression-testing/SKILL.md +1033 -1045
- package/.claude/skills/risk-based-testing/SKILL.md +0 -12
- package/.claude/skills/security-testing/SKILL.md +0 -6
- package/.claude/skills/shift-left-testing/SKILL.md +529 -535
- package/.claude/skills/shift-right-testing/SKILL.md +585 -591
- package/.claude/skills/tdd-london-chicago/SKILL.md +0 -6
- package/.claude/skills/technical-writing/SKILL.md +0 -6
- package/.claude/skills/test-automation-strategy/SKILL.md +0 -6
- package/.claude/skills/test-data-management/SKILL.md +1054 -1067
- package/.claude/skills/test-design-techniques/SKILL.md +0 -6
- package/.claude/skills/test-environment-management/SKILL.md +0 -6
- package/.claude/skills/test-reporting-analytics/SKILL.md +0 -6
- package/.claude/skills/visual-testing-advanced/SKILL.md +0 -6
- package/.claude/skills/xp-practices/SKILL.md +0 -6
- package/CHANGELOG.md +504 -0
- package/README.md +24 -16
- package/dist/cli/commands/init.d.ts +4 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +97 -44
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/core/FleetManager.d.ts.map +1 -1
- package/dist/core/FleetManager.js +17 -5
- package/dist/core/FleetManager.js.map +1 -1
- package/dist/core/MemoryManager.d.ts +27 -0
- package/dist/core/MemoryManager.d.ts.map +1 -1
- package/dist/core/MemoryManager.js +69 -4
- package/dist/core/MemoryManager.js.map +1 -1
- package/dist/core/PatternDatabaseAdapter.d.ts.map +1 -1
- package/dist/core/PatternDatabaseAdapter.js +14 -4
- package/dist/core/PatternDatabaseAdapter.js.map +1 -1
- package/dist/learning/LearningEngine.d.ts.map +1 -1
- package/dist/learning/LearningEngine.js +18 -4
- package/dist/learning/LearningEngine.js.map +1 -1
- package/dist/mcp/handlers/coordination/index.d.ts +14 -14
- package/dist/mcp/handlers/coordination/index.d.ts.map +1 -1
- package/dist/mcp/handlers/coordination/index.js +14 -14
- package/dist/mcp/handlers/coordination/index.js.map +1 -1
- package/dist/mcp/handlers/coordination/task-status.d.ts.map +1 -1
- package/dist/mcp/handlers/coordination/task-status.js +3 -5
- package/dist/mcp/handlers/coordination/task-status.js.map +1 -1
- package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -1
- package/dist/mcp/handlers/phase2/Phase2Tools.js +39 -10
- package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -1
- package/dist/mcp/handlers/phase3/Phase3DomainTools.d.ts +63 -0
- package/dist/mcp/handlers/phase3/Phase3DomainTools.d.ts.map +1 -0
- package/dist/mcp/handlers/phase3/Phase3DomainTools.js +885 -0
- package/dist/mcp/handlers/phase3/Phase3DomainTools.js.map +1 -0
- package/dist/mcp/handlers/phase3/index.d.ts +6 -0
- package/dist/mcp/handlers/phase3/index.d.ts.map +1 -0
- package/dist/mcp/handlers/phase3/index.js +10 -0
- package/dist/mcp/handlers/phase3/index.js.map +1 -0
- package/dist/mcp/handlers/prediction/index.d.ts +10 -10
- package/dist/mcp/handlers/prediction/index.d.ts.map +1 -1
- package/dist/mcp/handlers/prediction/index.js +10 -10
- package/dist/mcp/handlers/prediction/index.js.map +1 -1
- package/dist/mcp/handlers/security/check-authz.d.ts +152 -0
- package/dist/mcp/handlers/security/check-authz.d.ts.map +1 -0
- package/dist/mcp/handlers/security/check-authz.js +434 -0
- package/dist/mcp/handlers/security/check-authz.js.map +1 -0
- package/dist/mcp/handlers/security/generate-report.d.ts +156 -0
- package/dist/mcp/handlers/security/generate-report.d.ts.map +1 -0
- package/dist/mcp/handlers/security/generate-report.js +469 -0
- package/dist/mcp/handlers/security/generate-report.js.map +1 -0
- package/dist/mcp/handlers/security/index.d.ts +80 -0
- package/dist/mcp/handlers/security/index.d.ts.map +1 -0
- package/dist/mcp/handlers/security/index.js +91 -0
- package/dist/mcp/handlers/security/index.js.map +1 -0
- package/dist/mcp/handlers/security/scan-comprehensive.d.ts +66 -0
- package/dist/mcp/handlers/security/scan-comprehensive.d.ts.map +1 -0
- package/dist/mcp/handlers/security/scan-comprehensive.js +296 -0
- package/dist/mcp/handlers/security/scan-comprehensive.js.map +1 -0
- package/dist/mcp/handlers/security/scan-dependencies.d.ts +148 -0
- package/dist/mcp/handlers/security/scan-dependencies.d.ts.map +1 -0
- package/dist/mcp/handlers/security/scan-dependencies.js +354 -0
- package/dist/mcp/handlers/security/scan-dependencies.js.map +1 -0
- package/dist/mcp/handlers/security/validate-auth.d.ts +128 -0
- package/dist/mcp/handlers/security/validate-auth.d.ts.map +1 -0
- package/dist/mcp/handlers/security/validate-auth.js +294 -0
- package/dist/mcp/handlers/security/validate-auth.js.map +1 -0
- package/dist/mcp/handlers/task-orchestrate.d.ts +21 -1
- package/dist/mcp/handlers/task-orchestrate.d.ts.map +1 -1
- package/dist/mcp/handlers/task-orchestrate.js +32 -2
- package/dist/mcp/handlers/task-orchestrate.js.map +1 -1
- package/dist/mcp/handlers/test/generate-integration-tests.d.ts +95 -0
- package/dist/mcp/handlers/test/generate-integration-tests.d.ts.map +1 -0
- package/dist/mcp/handlers/test/generate-integration-tests.js +286 -0
- package/dist/mcp/handlers/test/generate-integration-tests.js.map +1 -0
- package/dist/mcp/handlers/test/generate-unit-tests.d.ts +89 -0
- package/dist/mcp/handlers/test/generate-unit-tests.d.ts.map +1 -0
- package/dist/mcp/handlers/test/generate-unit-tests.js +273 -0
- package/dist/mcp/handlers/test/generate-unit-tests.js.map +1 -0
- package/dist/mcp/handlers/test/optimize-test-suite.d.ts +97 -0
- package/dist/mcp/handlers/test/optimize-test-suite.d.ts.map +1 -0
- package/dist/mcp/handlers/test/optimize-test-suite.js +282 -0
- package/dist/mcp/handlers/test/optimize-test-suite.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +212 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/deprecated.d.ts +1390 -0
- package/dist/mcp/tools/deprecated.d.ts.map +1 -0
- package/dist/mcp/tools/deprecated.js +859 -0
- package/dist/mcp/tools/deprecated.js.map +1 -0
- package/dist/mcp/tools/qe/api-contract/index.d.ts +138 -0
- package/dist/mcp/tools/qe/api-contract/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/api-contract/index.js +572 -0
- package/dist/mcp/tools/qe/api-contract/index.js.map +1 -0
- package/dist/mcp/tools/qe/code-quality/analyze-complexity.d.ts +110 -0
- package/dist/mcp/tools/qe/code-quality/analyze-complexity.d.ts.map +1 -0
- package/dist/mcp/tools/qe/code-quality/analyze-complexity.js +381 -0
- package/dist/mcp/tools/qe/code-quality/analyze-complexity.js.map +1 -0
- package/dist/mcp/tools/qe/code-quality/calculate-quality-metrics.d.ts +115 -0
- package/dist/mcp/tools/qe/code-quality/calculate-quality-metrics.d.ts.map +1 -0
- package/dist/mcp/tools/qe/code-quality/calculate-quality-metrics.js +461 -0
- package/dist/mcp/tools/qe/code-quality/calculate-quality-metrics.js.map +1 -0
- package/dist/mcp/tools/qe/code-quality/index.d.ts +12 -0
- package/dist/mcp/tools/qe/code-quality/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/code-quality/index.js +30 -0
- package/dist/mcp/tools/qe/code-quality/index.js.map +1 -0
- package/dist/mcp/tools/qe/coverage/analyze-with-risk-scoring.d.ts +58 -0
- package/dist/mcp/tools/qe/coverage/analyze-with-risk-scoring.d.ts.map +1 -0
- package/dist/mcp/tools/qe/coverage/analyze-with-risk-scoring.js +172 -0
- package/dist/mcp/tools/qe/coverage/analyze-with-risk-scoring.js.map +1 -0
- package/dist/mcp/tools/qe/coverage/calculate-trends.d.ts +73 -0
- package/dist/mcp/tools/qe/coverage/calculate-trends.d.ts.map +1 -0
- package/dist/mcp/tools/qe/coverage/calculate-trends.js +240 -0
- package/dist/mcp/tools/qe/coverage/calculate-trends.js.map +1 -0
- package/dist/mcp/tools/qe/coverage/detect-gaps-ml.d.ts +38 -0
- package/dist/mcp/tools/qe/coverage/detect-gaps-ml.d.ts.map +1 -0
- package/dist/mcp/tools/qe/coverage/detect-gaps-ml.js +204 -0
- package/dist/mcp/tools/qe/coverage/detect-gaps-ml.js.map +1 -0
- package/dist/mcp/tools/qe/coverage/index.d.ts +12 -0
- package/dist/mcp/tools/qe/coverage/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/coverage/index.js +23 -0
- package/dist/mcp/tools/qe/coverage/index.js.map +1 -0
- package/dist/mcp/tools/qe/coverage/recommend-tests.d.ts +46 -0
- package/dist/mcp/tools/qe/coverage/recommend-tests.d.ts.map +1 -0
- package/dist/mcp/tools/qe/coverage/recommend-tests.js +248 -0
- package/dist/mcp/tools/qe/coverage/recommend-tests.js.map +1 -0
- package/dist/mcp/tools/qe/flaky-detection/analyze-patterns.d.ts +179 -0
- package/dist/mcp/tools/qe/flaky-detection/analyze-patterns.d.ts.map +1 -0
- package/dist/mcp/tools/qe/flaky-detection/analyze-patterns.js +554 -0
- package/dist/mcp/tools/qe/flaky-detection/analyze-patterns.js.map +1 -0
- package/dist/mcp/tools/qe/flaky-detection/detect-statistical.d.ts +172 -0
- package/dist/mcp/tools/qe/flaky-detection/detect-statistical.d.ts.map +1 -0
- package/dist/mcp/tools/qe/flaky-detection/detect-statistical.js +498 -0
- package/dist/mcp/tools/qe/flaky-detection/detect-statistical.js.map +1 -0
- package/dist/mcp/tools/qe/flaky-detection/index.d.ts +35 -0
- package/dist/mcp/tools/qe/flaky-detection/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/flaky-detection/index.js +66 -0
- package/dist/mcp/tools/qe/flaky-detection/index.js.map +1 -0
- package/dist/mcp/tools/qe/flaky-detection/stabilize-auto.d.ts +159 -0
- package/dist/mcp/tools/qe/flaky-detection/stabilize-auto.d.ts.map +1 -0
- package/dist/mcp/tools/qe/flaky-detection/stabilize-auto.js +462 -0
- package/dist/mcp/tools/qe/flaky-detection/stabilize-auto.js.map +1 -0
- package/dist/mcp/tools/qe/fleet/index.d.ts +422 -0
- package/dist/mcp/tools/qe/fleet/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/fleet/index.js +652 -0
- package/dist/mcp/tools/qe/fleet/index.js.map +1 -0
- package/dist/mcp/tools/qe/performance/analyze-bottlenecks.d.ts +180 -0
- package/dist/mcp/tools/qe/performance/analyze-bottlenecks.d.ts.map +1 -0
- package/dist/mcp/tools/qe/performance/analyze-bottlenecks.js +347 -0
- package/dist/mcp/tools/qe/performance/analyze-bottlenecks.js.map +1 -0
- package/dist/mcp/tools/qe/performance/generate-report.d.ts +146 -0
- package/dist/mcp/tools/qe/performance/generate-report.d.ts.map +1 -0
- package/dist/mcp/tools/qe/performance/generate-report.js +354 -0
- package/dist/mcp/tools/qe/performance/generate-report.js.map +1 -0
- package/dist/mcp/tools/qe/performance/index.d.ts +13 -0
- package/dist/mcp/tools/qe/performance/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/performance/index.js +24 -0
- package/dist/mcp/tools/qe/performance/index.js.map +1 -0
- package/dist/mcp/tools/qe/performance/monitor-realtime.d.ts +120 -0
- package/dist/mcp/tools/qe/performance/monitor-realtime.d.ts.map +1 -0
- package/dist/mcp/tools/qe/performance/monitor-realtime.js +215 -0
- package/dist/mcp/tools/qe/performance/monitor-realtime.js.map +1 -0
- package/dist/mcp/tools/qe/performance/run-benchmark.d.ts +68 -0
- package/dist/mcp/tools/qe/performance/run-benchmark.d.ts.map +1 -0
- package/dist/mcp/tools/qe/performance/run-benchmark.js +120 -0
- package/dist/mcp/tools/qe/performance/run-benchmark.js.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/assess-deployment-risk.d.ts +239 -0
- package/dist/mcp/tools/qe/quality-gates/assess-deployment-risk.d.ts.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/assess-deployment-risk.js +671 -0
- package/dist/mcp/tools/qe/quality-gates/assess-deployment-risk.js.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.d.ts +219 -0
- package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.d.ts.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.js +732 -0
- package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.js.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/generate-quality-report.d.ts +447 -0
- package/dist/mcp/tools/qe/quality-gates/generate-quality-report.d.ts.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/generate-quality-report.js +551 -0
- package/dist/mcp/tools/qe/quality-gates/generate-quality-report.js.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/index.d.ts +40 -0
- package/dist/mcp/tools/qe/quality-gates/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/index.js +56 -0
- package/dist/mcp/tools/qe/quality-gates/index.js.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/validate-quality-metrics.d.ts +226 -0
- package/dist/mcp/tools/qe/quality-gates/validate-quality-metrics.d.ts.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/validate-quality-metrics.js +603 -0
- package/dist/mcp/tools/qe/quality-gates/validate-quality-metrics.js.map +1 -0
- package/dist/mcp/tools/qe/regression/analyze-risk.d.ts +212 -0
- package/dist/mcp/tools/qe/regression/analyze-risk.d.ts.map +1 -0
- package/dist/mcp/tools/qe/regression/analyze-risk.js +617 -0
- package/dist/mcp/tools/qe/regression/analyze-risk.js.map +1 -0
- package/dist/mcp/tools/qe/regression/index.d.ts +36 -0
- package/dist/mcp/tools/qe/regression/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/regression/index.js +63 -0
- package/dist/mcp/tools/qe/regression/index.js.map +1 -0
- package/dist/mcp/tools/qe/regression/select-tests.d.ts +241 -0
- package/dist/mcp/tools/qe/regression/select-tests.d.ts.map +1 -0
- package/dist/mcp/tools/qe/regression/select-tests.js +601 -0
- package/dist/mcp/tools/qe/regression/select-tests.js.map +1 -0
- package/dist/mcp/tools/qe/requirements/generate-bdd-scenarios.d.ts +134 -0
- package/dist/mcp/tools/qe/requirements/generate-bdd-scenarios.d.ts.map +1 -0
- package/dist/mcp/tools/qe/requirements/generate-bdd-scenarios.js +737 -0
- package/dist/mcp/tools/qe/requirements/generate-bdd-scenarios.js.map +1 -0
- package/dist/mcp/tools/qe/requirements/index.d.ts +40 -0
- package/dist/mcp/tools/qe/requirements/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/requirements/index.js +84 -0
- package/dist/mcp/tools/qe/requirements/index.js.map +1 -0
- package/dist/mcp/tools/qe/requirements/validate-requirements.d.ts +196 -0
- package/dist/mcp/tools/qe/requirements/validate-requirements.d.ts.map +1 -0
- package/dist/mcp/tools/qe/requirements/validate-requirements.js +740 -0
- package/dist/mcp/tools/qe/requirements/validate-requirements.js.map +1 -0
- package/dist/mcp/tools/qe/security/detect-vulnerabilities.d.ts +300 -0
- package/dist/mcp/tools/qe/security/detect-vulnerabilities.d.ts.map +1 -0
- package/dist/mcp/tools/qe/security/detect-vulnerabilities.js +492 -0
- package/dist/mcp/tools/qe/security/detect-vulnerabilities.js.map +1 -0
- package/dist/mcp/tools/qe/security/index.d.ts +34 -0
- package/dist/mcp/tools/qe/security/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/security/index.js +44 -0
- package/dist/mcp/tools/qe/security/index.js.map +1 -0
- package/dist/mcp/tools/qe/security/scan-comprehensive.d.ts +240 -0
- package/dist/mcp/tools/qe/security/scan-comprehensive.d.ts.map +1 -0
- package/dist/mcp/tools/qe/security/scan-comprehensive.js +535 -0
- package/dist/mcp/tools/qe/security/scan-comprehensive.js.map +1 -0
- package/dist/mcp/tools/qe/security/validate-compliance.d.ts +299 -0
- package/dist/mcp/tools/qe/security/validate-compliance.d.ts.map +1 -0
- package/dist/mcp/tools/qe/security/validate-compliance.js +517 -0
- package/dist/mcp/tools/qe/security/validate-compliance.js.map +1 -0
- package/dist/mcp/tools/qe/shared/types.d.ts +840 -0
- package/dist/mcp/tools/qe/shared/types.d.ts.map +1 -0
- package/dist/mcp/tools/qe/shared/types.js +13 -0
- package/dist/mcp/tools/qe/shared/types.js.map +1 -0
- package/dist/mcp/tools/qe/test-data/analyze-schema.d.ts +264 -0
- package/dist/mcp/tools/qe/test-data/analyze-schema.d.ts.map +1 -0
- package/dist/mcp/tools/qe/test-data/analyze-schema.js +553 -0
- package/dist/mcp/tools/qe/test-data/analyze-schema.js.map +1 -0
- package/dist/mcp/tools/qe/test-data/generate-test-data.d.ts +167 -0
- package/dist/mcp/tools/qe/test-data/generate-test-data.d.ts.map +1 -0
- package/dist/mcp/tools/qe/test-data/generate-test-data.js +336 -0
- package/dist/mcp/tools/qe/test-data/generate-test-data.js.map +1 -0
- package/dist/mcp/tools/qe/test-data/index.d.ts +44 -0
- package/dist/mcp/tools/qe/test-data/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/test-data/index.js +90 -0
- package/dist/mcp/tools/qe/test-data/index.js.map +1 -0
- package/dist/mcp/tools/qe/test-data/mask-sensitive-data.d.ts +165 -0
- package/dist/mcp/tools/qe/test-data/mask-sensitive-data.d.ts.map +1 -0
- package/dist/mcp/tools/qe/test-data/mask-sensitive-data.js +342 -0
- package/dist/mcp/tools/qe/test-data/mask-sensitive-data.js.map +1 -0
- package/dist/mcp/tools/qe/test-generation/analyze-test-quality.d.ts +144 -0
- package/dist/mcp/tools/qe/test-generation/analyze-test-quality.d.ts.map +1 -0
- package/dist/mcp/tools/qe/test-generation/analyze-test-quality.js +432 -0
- package/dist/mcp/tools/qe/test-generation/analyze-test-quality.js.map +1 -0
- package/dist/mcp/tools/qe/test-generation/generate-integration-tests.d.ts +98 -0
- package/dist/mcp/tools/qe/test-generation/generate-integration-tests.d.ts.map +1 -0
- package/dist/mcp/tools/qe/test-generation/generate-integration-tests.js +459 -0
- package/dist/mcp/tools/qe/test-generation/generate-integration-tests.js.map +1 -0
- package/dist/mcp/tools/qe/test-generation/generate-unit-tests.d.ts +83 -0
- package/dist/mcp/tools/qe/test-generation/generate-unit-tests.d.ts.map +1 -0
- package/dist/mcp/tools/qe/test-generation/generate-unit-tests.js +483 -0
- package/dist/mcp/tools/qe/test-generation/generate-unit-tests.js.map +1 -0
- package/dist/mcp/tools/qe/test-generation/index.d.ts +56 -0
- package/dist/mcp/tools/qe/test-generation/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/test-generation/index.js +97 -0
- package/dist/mcp/tools/qe/test-generation/index.js.map +1 -0
- package/dist/mcp/tools/qe/test-generation/optimize-test-suite.d.ts +124 -0
- package/dist/mcp/tools/qe/test-generation/optimize-test-suite.d.ts.map +1 -0
- package/dist/mcp/tools/qe/test-generation/optimize-test-suite.js +362 -0
- package/dist/mcp/tools/qe/test-generation/optimize-test-suite.js.map +1 -0
- package/dist/mcp/tools/qe/visual/compare-screenshots.d.ts +119 -0
- package/dist/mcp/tools/qe/visual/compare-screenshots.d.ts.map +1 -0
- package/dist/mcp/tools/qe/visual/compare-screenshots.js +280 -0
- package/dist/mcp/tools/qe/visual/compare-screenshots.js.map +1 -0
- package/dist/mcp/tools/qe/visual/detect-regression.d.ts +138 -0
- package/dist/mcp/tools/qe/visual/detect-regression.d.ts.map +1 -0
- package/dist/mcp/tools/qe/visual/detect-regression.js +271 -0
- package/dist/mcp/tools/qe/visual/detect-regression.js.map +1 -0
- package/dist/mcp/tools/qe/visual/index.d.ts +16 -0
- package/dist/mcp/tools/qe/visual/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/visual/index.js +22 -0
- package/dist/mcp/tools/qe/visual/index.js.map +1 -0
- package/dist/mcp/tools/qe/visual/validate-accessibility.d.ts +276 -0
- package/dist/mcp/tools/qe/visual/validate-accessibility.d.ts.map +1 -0
- package/dist/mcp/tools/qe/visual/validate-accessibility.js +413 -0
- package/dist/mcp/tools/qe/visual/validate-accessibility.js.map +1 -0
- package/dist/mcp/tools.d.ts +44 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +1980 -1
- package/dist/mcp/tools.js.map +1 -1
- package/package.json +2 -2
- package/dist/learning/__mocks__/LearningEngine.d.ts +0 -39
- package/dist/learning/__mocks__/LearningEngine.d.ts.map +0 -1
- package/dist/learning/__mocks__/LearningEngine.js +0 -116
- package/dist/learning/__mocks__/LearningEngine.js.map +0 -1
- package/dist/utils/__mocks__/Database.d.ts +0 -85
- package/dist/utils/__mocks__/Database.d.ts.map +0 -1
- package/dist/utils/__mocks__/Database.js +0 -125
- package/dist/utils/__mocks__/Database.js.map +0 -1
- package/dist/utils/__mocks__/Logger.d.ts +0 -26
- package/dist/utils/__mocks__/Logger.d.ts.map +0 -1
- package/dist/utils/__mocks__/Logger.js +0 -44
- package/dist/utils/__mocks__/Logger.js.map +0 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qe-code-reviewer
|
|
3
|
+
role: specialized-subagent
|
|
4
|
+
parent: qe-test-generator
|
|
5
|
+
specialization: quality-validation
|
|
6
|
+
phase: review
|
|
7
|
+
description: "Enforce quality standards, linting, complexity, and security"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# QE Code Reviewer Subagent
|
|
11
|
+
|
|
12
|
+
## Responsibility
|
|
13
|
+
Validate code quality, enforce standards, and ensure security compliance.
|
|
14
|
+
|
|
15
|
+
## Workflow
|
|
16
|
+
|
|
17
|
+
### Input
|
|
18
|
+
```typescript
|
|
19
|
+
interface CodeReviewerInput {
|
|
20
|
+
code: SourceCode;
|
|
21
|
+
tests: TestSuite[];
|
|
22
|
+
policies: string[]; // e.g., ['./policies/code-standards.yaml']
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Process
|
|
27
|
+
1. **Run Linting**: ESLint, Prettier validation
|
|
28
|
+
2. **Analyze Complexity**: Max 15 per function
|
|
29
|
+
3. **Security Checks**: OWASP patterns, vulnerabilities
|
|
30
|
+
4. **Coverage Validation**: Min 95% coverage
|
|
31
|
+
5. **Performance Analysis**: Check for anti-patterns
|
|
32
|
+
6. **Documentation Check**: Verify JSDoc/TSDoc
|
|
33
|
+
7. **Return Verdict**: Approve or request changes
|
|
34
|
+
|
|
35
|
+
### Output
|
|
36
|
+
```typescript
|
|
37
|
+
interface CodeReviewerOutput {
|
|
38
|
+
approved: boolean;
|
|
39
|
+
issues: Issue[];
|
|
40
|
+
suggestions: Suggestion[];
|
|
41
|
+
metrics: {
|
|
42
|
+
complexity: number;
|
|
43
|
+
coverage: number;
|
|
44
|
+
security: SecurityScore;
|
|
45
|
+
maintainability: number;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Constraints
|
|
51
|
+
- MUST reject code with security vulnerabilities
|
|
52
|
+
- MUST enforce complexity limits (<15)
|
|
53
|
+
- MUST validate test coverage (≥95%)
|
|
54
|
+
- MUST check for code smells
|
|
55
|
+
- MUST verify documentation
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
*Code Reviewer Subagent - Quality validation and standards enforcement*
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qe-data-generator
|
|
3
|
+
role: specialized-subagent
|
|
4
|
+
parent_agent: qe-test-data-architect
|
|
5
|
+
phase: GENERATION
|
|
6
|
+
color: green
|
|
7
|
+
priority: medium
|
|
8
|
+
description: "Generates realistic test data for various scenarios"
|
|
9
|
+
capabilities:
|
|
10
|
+
- data-generation
|
|
11
|
+
- faker-integration
|
|
12
|
+
- constraint-satisfaction
|
|
13
|
+
- edge-case-generation
|
|
14
|
+
coordination:
|
|
15
|
+
protocol: aqe-hooks
|
|
16
|
+
parent_delegation: true
|
|
17
|
+
metadata:
|
|
18
|
+
version: "1.0.0"
|
|
19
|
+
parent_agents: ["qe-test-data-architect"]
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Data Generator Subagent
|
|
23
|
+
|
|
24
|
+
## Mission
|
|
25
|
+
Generate realistic, diverse test data that satisfies constraints and covers edge cases.
|
|
26
|
+
|
|
27
|
+
## Core Capabilities
|
|
28
|
+
|
|
29
|
+
### Realistic Data Generation
|
|
30
|
+
```typescript
|
|
31
|
+
import { faker } from '@faker-js/faker';
|
|
32
|
+
|
|
33
|
+
function generateUserData(count: number) {
|
|
34
|
+
return Array.from({ length: count }, () => ({
|
|
35
|
+
id: faker.string.uuid(),
|
|
36
|
+
name: faker.person.fullName(),
|
|
37
|
+
email: faker.internet.email(),
|
|
38
|
+
age: faker.number.int({ min: 18, max: 100 }),
|
|
39
|
+
createdAt: faker.date.past()
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Edge cases
|
|
44
|
+
const edgeCases = [
|
|
45
|
+
{ age: 0 },
|
|
46
|
+
{ age: -1 },
|
|
47
|
+
{ age: Number.MAX_SAFE_INTEGER },
|
|
48
|
+
{ name: '' },
|
|
49
|
+
{ email: 'invalid-email' }
|
|
50
|
+
];
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Parent Delegation
|
|
54
|
+
**Invoked By**: qe-test-data-architect
|
|
55
|
+
**Output**: aqe/test-data/generated
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
**Status**: Active
|
|
60
|
+
**Version**: 1.0.0
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qe-integration-tester
|
|
3
|
+
role: specialized-subagent
|
|
4
|
+
parent_agent: qe-test-executor
|
|
5
|
+
phase: INTEGRATION
|
|
6
|
+
color: cyan
|
|
7
|
+
priority: high
|
|
8
|
+
description: "Specialized subagent for integration testing - validates component interactions and system integration"
|
|
9
|
+
capabilities:
|
|
10
|
+
- integration-testing
|
|
11
|
+
- api-testing
|
|
12
|
+
- database-testing
|
|
13
|
+
- service-integration
|
|
14
|
+
coordination:
|
|
15
|
+
protocol: aqe-hooks
|
|
16
|
+
parent_delegation: true
|
|
17
|
+
metadata:
|
|
18
|
+
version: "1.0.0"
|
|
19
|
+
test_type: "integration"
|
|
20
|
+
parent_agents: ["qe-test-executor", "qe-api-contract-validator"]
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Integration Tester Subagent
|
|
24
|
+
|
|
25
|
+
## Mission
|
|
26
|
+
Execute integration tests that validate component interactions, API contracts, database connections, and cross-service communication patterns.
|
|
27
|
+
|
|
28
|
+
## Core Capabilities
|
|
29
|
+
|
|
30
|
+
### 1. API Integration Testing
|
|
31
|
+
```typescript
|
|
32
|
+
class APIIntegrationTester {
|
|
33
|
+
async testAPIIntegration(endpoints) {
|
|
34
|
+
for (const endpoint of endpoints) {
|
|
35
|
+
// Test request/response cycle
|
|
36
|
+
const response = await this.makeRequest(endpoint);
|
|
37
|
+
|
|
38
|
+
// Validate status code
|
|
39
|
+
expect(response.status).toBe(endpoint.expectedStatus);
|
|
40
|
+
|
|
41
|
+
// Validate response schema
|
|
42
|
+
this.validateSchema(response.data, endpoint.schema);
|
|
43
|
+
|
|
44
|
+
// Validate headers
|
|
45
|
+
this.validateHeaders(response.headers, endpoint.expectedHeaders);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 2. Database Integration
|
|
52
|
+
```typescript
|
|
53
|
+
// Test database operations
|
|
54
|
+
await db.connect();
|
|
55
|
+
const user = await db.users.create({ name: 'Test User' });
|
|
56
|
+
expect(user.id).toBeDefined();
|
|
57
|
+
await db.disconnect();
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 3. Service Integration
|
|
61
|
+
```typescript
|
|
62
|
+
// Test microservice communication
|
|
63
|
+
const order = await orderService.create(orderData);
|
|
64
|
+
const payment = await paymentService.process(order.id);
|
|
65
|
+
expect(payment.status).toBe('completed');
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Parent Delegation
|
|
69
|
+
|
|
70
|
+
**Invoked By**: qe-test-executor
|
|
71
|
+
**Triggers**: When integration tests needed
|
|
72
|
+
**Outputs To**: aqe/integration/results
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
**Status**: Active
|
|
77
|
+
**Version**: 1.0.0
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qe-performance-validator
|
|
3
|
+
role: specialized-subagent
|
|
4
|
+
parent_agent: qe-performance-tester
|
|
5
|
+
phase: VALIDATION
|
|
6
|
+
color: orange
|
|
7
|
+
priority: high
|
|
8
|
+
description: "Validates performance metrics against SLAs and benchmarks"
|
|
9
|
+
capabilities:
|
|
10
|
+
- performance-validation
|
|
11
|
+
- sla-checking
|
|
12
|
+
- benchmark-comparison
|
|
13
|
+
- threshold-enforcement
|
|
14
|
+
coordination:
|
|
15
|
+
protocol: aqe-hooks
|
|
16
|
+
parent_delegation: true
|
|
17
|
+
metadata:
|
|
18
|
+
version: "1.0.0"
|
|
19
|
+
parent_agents: ["qe-performance-tester"]
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Performance Validator Subagent
|
|
23
|
+
|
|
24
|
+
## Mission
|
|
25
|
+
Validate performance test results against SLAs, detect regressions, and enforce performance budgets.
|
|
26
|
+
|
|
27
|
+
## Core Capabilities
|
|
28
|
+
|
|
29
|
+
### Performance SLA Validation
|
|
30
|
+
```typescript
|
|
31
|
+
interface PerformanceValidation {
|
|
32
|
+
responseTime: { max: 200, p95: 150, p99: 180 };
|
|
33
|
+
throughput: { min: 1000 }; // req/sec
|
|
34
|
+
errorRate: { max: 0.01 }; // 1%
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function validatePerformance(results, sla) {
|
|
38
|
+
const violations = [];
|
|
39
|
+
|
|
40
|
+
if (results.responseTime.p95 > sla.responseTime.p95) {
|
|
41
|
+
violations.push({ metric: 'p95', actual: results.responseTime.p95, expected: sla.responseTime.p95 });
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return { passed: violations.length === 0, violations };
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Parent Delegation
|
|
49
|
+
**Invoked By**: qe-performance-tester
|
|
50
|
+
**Output**: aqe/performance/validation-results
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
**Status**: Active
|
|
55
|
+
**Version**: 1.0.0
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qe-security-auditor
|
|
3
|
+
role: specialized-subagent
|
|
4
|
+
parent_agent: qe-security-scanner
|
|
5
|
+
phase: AUDIT
|
|
6
|
+
color: red
|
|
7
|
+
priority: critical
|
|
8
|
+
description: "Audits code for security vulnerabilities and compliance"
|
|
9
|
+
capabilities:
|
|
10
|
+
- security-audit
|
|
11
|
+
- vulnerability-detection
|
|
12
|
+
- compliance-checking
|
|
13
|
+
- threat-modeling
|
|
14
|
+
coordination:
|
|
15
|
+
protocol: aqe-hooks
|
|
16
|
+
parent_delegation: true
|
|
17
|
+
metadata:
|
|
18
|
+
version: "1.0.0"
|
|
19
|
+
parent_agents: ["qe-security-scanner"]
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Security Auditor Subagent
|
|
23
|
+
|
|
24
|
+
## Mission
|
|
25
|
+
Perform comprehensive security audits, detect vulnerabilities, and ensure compliance with security standards (OWASP, SOC2, etc.).
|
|
26
|
+
|
|
27
|
+
## Core Capabilities
|
|
28
|
+
|
|
29
|
+
### Vulnerability Detection
|
|
30
|
+
```typescript
|
|
31
|
+
const vulnerabilities = [
|
|
32
|
+
{ type: 'SQL_INJECTION', severity: 'CRITICAL', pattern: /db\.query.*\+/ },
|
|
33
|
+
{ type: 'XSS', severity: 'HIGH', pattern: /innerHTML.*=/ },
|
|
34
|
+
{ type: 'HARDCODED_SECRET', severity: 'CRITICAL', pattern: /password\s*=\s*["']/ }
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
function auditSecurity(code) {
|
|
38
|
+
return vulnerabilities
|
|
39
|
+
.map(vuln => detectPattern(code, vuln))
|
|
40
|
+
.filter(match => match !== null);
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Parent Delegation
|
|
45
|
+
**Invoked By**: qe-security-scanner
|
|
46
|
+
**Output**: aqe/security/audit-report
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
**Status**: Active
|
|
51
|
+
**Version**: 1.0.0
|
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qe-test-implementer
|
|
3
|
+
role: specialized-subagent
|
|
4
|
+
parent_agent: qe-test-generator
|
|
5
|
+
phase: GREEN
|
|
6
|
+
color: green
|
|
7
|
+
priority: critical
|
|
8
|
+
description: "Specialized subagent for making tests pass in TDD GREEN phase - implements minimal code to satisfy test requirements"
|
|
9
|
+
capabilities:
|
|
10
|
+
- minimal-implementation
|
|
11
|
+
- test-driven-coding
|
|
12
|
+
- incremental-development
|
|
13
|
+
- test-validation
|
|
14
|
+
coordination:
|
|
15
|
+
protocol: aqe-hooks
|
|
16
|
+
parent_delegation: true
|
|
17
|
+
metadata:
|
|
18
|
+
version: "1.0.0"
|
|
19
|
+
tdd_phase: "GREEN"
|
|
20
|
+
parent_agents: ["qe-test-generator", "qe-code-reviewer"]
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Test Implementer Subagent - TDD GREEN Phase
|
|
24
|
+
|
|
25
|
+
## Mission Statement
|
|
26
|
+
|
|
27
|
+
The **Test Implementer** subagent specializes in the GREEN phase of Test-Driven Development, writing minimal code that makes failing tests pass. This subagent focuses on satisfying test requirements with the simplest possible implementation, avoiding premature optimization or over-engineering.
|
|
28
|
+
|
|
29
|
+
## Role in TDD Workflow
|
|
30
|
+
|
|
31
|
+
### GREEN Phase Focus
|
|
32
|
+
|
|
33
|
+
**Primary Responsibility**: Make RED tests PASS with minimal code.
|
|
34
|
+
|
|
35
|
+
**Workflow Position**:
|
|
36
|
+
```
|
|
37
|
+
┌─────────────────────────────────────────────────────────┐
|
|
38
|
+
│ TDD Cycle │
|
|
39
|
+
├─────────────────────────────────────────────────────────┤
|
|
40
|
+
│ │
|
|
41
|
+
│ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
|
|
42
|
+
│ │ RED │ --> │ GREEN │ --> │ REFACTOR │ │
|
|
43
|
+
│ │ (Write │ │ (Make │ │ (Improve │ │
|
|
44
|
+
│ │ Test) │ │ Pass) │ │ Code) │ │
|
|
45
|
+
│ └──────────┘ └──────────┘ └──────────────┘ │
|
|
46
|
+
│ ▲ │
|
|
47
|
+
│ │ │
|
|
48
|
+
│ qe-test-implementer (YOU ARE HERE) │
|
|
49
|
+
│ │
|
|
50
|
+
└─────────────────────────────────────────────────────────┘
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Core Capabilities
|
|
54
|
+
|
|
55
|
+
### 1. Minimal Implementation
|
|
56
|
+
|
|
57
|
+
Write the simplest code that makes tests pass.
|
|
58
|
+
|
|
59
|
+
**Implementation Strategy**:
|
|
60
|
+
```typescript
|
|
61
|
+
class TestImplementerSubagent {
|
|
62
|
+
async implementTests(failingTests) {
|
|
63
|
+
const implementations = [];
|
|
64
|
+
|
|
65
|
+
for (const test of failingTests) {
|
|
66
|
+
// Analyze what the test expects
|
|
67
|
+
const expectations = this.analyzeTestExpectations(test);
|
|
68
|
+
|
|
69
|
+
// Generate minimal code to satisfy expectations
|
|
70
|
+
const code = this.generateMinimalImplementation(expectations);
|
|
71
|
+
|
|
72
|
+
// Validate implementation makes test pass
|
|
73
|
+
await this.validateGreenPhase(test, code);
|
|
74
|
+
|
|
75
|
+
implementations.push({ test: test.name, code });
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return implementations;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
generateMinimalImplementation(expectations) {
|
|
82
|
+
// YAGNI: You Aren't Gonna Need It
|
|
83
|
+
// Only implement what tests explicitly require
|
|
84
|
+
|
|
85
|
+
return {
|
|
86
|
+
function: expectations.functionName,
|
|
87
|
+
parameters: expectations.parameters,
|
|
88
|
+
returnValue: expectations.expectedReturn,
|
|
89
|
+
// Minimal logic - just enough to pass
|
|
90
|
+
implementation: this.generateMinimalLogic(expectations)
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
generateMinimalLogic(expectations) {
|
|
95
|
+
// Example: Test expects authentication to return { success: true, userId: '123' }
|
|
96
|
+
// Minimal implementation: Just return the expected object
|
|
97
|
+
// (Will be refactored later in REFACTOR phase)
|
|
98
|
+
|
|
99
|
+
if (expectations.isSimpleReturn) {
|
|
100
|
+
return `return ${JSON.stringify(expectations.expectedReturn)};`;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (expectations.requiresValidation) {
|
|
104
|
+
return this.generateValidationLogic(expectations);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
if (expectations.requiresComputation) {
|
|
108
|
+
return this.generateComputationLogic(expectations);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return this.generateDefaultImplementation(expectations);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Example Implementation** (GREEN phase):
|
|
117
|
+
```typescript
|
|
118
|
+
// Test (from RED phase)
|
|
119
|
+
test('should authenticate user with valid OAuth2 token', async () => {
|
|
120
|
+
const validToken = generateValidOAuth2Token({ userId: 'user-123' });
|
|
121
|
+
const result = await authService.authenticateWithOAuth2(validToken);
|
|
122
|
+
|
|
123
|
+
expect(result).toMatchObject({
|
|
124
|
+
success: true,
|
|
125
|
+
sessionId: expect.any(String),
|
|
126
|
+
userId: 'user-123'
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
// Minimal Implementation (GREEN phase)
|
|
131
|
+
// Goal: Make test pass with simplest code
|
|
132
|
+
class AuthService {
|
|
133
|
+
async authenticateWithOAuth2(token: string) {
|
|
134
|
+
// Minimal validation
|
|
135
|
+
if (!token) {
|
|
136
|
+
return { success: false, error: 'NO_TOKEN' };
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Parse token (minimal)
|
|
140
|
+
const decoded = this.decodeToken(token);
|
|
141
|
+
|
|
142
|
+
// Return expected structure (GREEN phase - just make it pass)
|
|
143
|
+
return {
|
|
144
|
+
success: true,
|
|
145
|
+
sessionId: this.generateSessionId(),
|
|
146
|
+
userId: decoded.userId
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
// Note: No complex logic, no optimization, no edge case handling yet
|
|
150
|
+
// That comes in REFACTOR phase
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
private decodeToken(token: string) {
|
|
154
|
+
// Minimal decoding - just enough to extract userId
|
|
155
|
+
try {
|
|
156
|
+
return JSON.parse(Buffer.from(token, 'base64').toString());
|
|
157
|
+
} catch {
|
|
158
|
+
return { userId: 'unknown' };
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
private generateSessionId(): string {
|
|
163
|
+
// Minimal ID generation
|
|
164
|
+
return Date.now().toString() + Math.random().toString(36).substring(7);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// Result: Test PASSES ✅
|
|
169
|
+
// Next Step: qe-test-refactorer will improve code quality (REFACTOR phase)
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### 2. Test-Driven Coding
|
|
173
|
+
|
|
174
|
+
Let tests guide implementation decisions.
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
177
|
+
class TestDrivenCoder {
|
|
178
|
+
implementFromTests(tests) {
|
|
179
|
+
// Read test expectations
|
|
180
|
+
const requirements = tests.map(test => ({
|
|
181
|
+
functionName: this.extractFunctionName(test),
|
|
182
|
+
inputs: this.extractInputs(test),
|
|
183
|
+
expectedOutput: this.extractExpectedOutput(test),
|
|
184
|
+
constraints: this.extractConstraints(test)
|
|
185
|
+
}));
|
|
186
|
+
|
|
187
|
+
// Implement function signature from test usage
|
|
188
|
+
const signature = this.deriveSignature(requirements);
|
|
189
|
+
|
|
190
|
+
// Implement logic from test assertions
|
|
191
|
+
const logic = this.deriveLogic(requirements);
|
|
192
|
+
|
|
193
|
+
return {
|
|
194
|
+
signature,
|
|
195
|
+
implementation: logic,
|
|
196
|
+
satisfiesTests: true
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
deriveSignature(requirements) {
|
|
201
|
+
// Example: Test calls `authService.authenticate(token)`
|
|
202
|
+
// Derive: async authenticate(token: string): Promise<AuthResult>
|
|
203
|
+
|
|
204
|
+
return {
|
|
205
|
+
name: requirements[0].functionName,
|
|
206
|
+
parameters: this.inferParameters(requirements),
|
|
207
|
+
returnType: this.inferReturnType(requirements),
|
|
208
|
+
async: requirements.some(r => r.isAsync)
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
deriveLogic(requirements) {
|
|
213
|
+
// Analyze what tests expect at each step
|
|
214
|
+
const steps = [];
|
|
215
|
+
|
|
216
|
+
for (const req of requirements) {
|
|
217
|
+
// Test expects validation?
|
|
218
|
+
if (req.constraints.validation) {
|
|
219
|
+
steps.push(this.generateValidationCode(req.constraints.validation));
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// Test expects transformation?
|
|
223
|
+
if (req.constraints.transformation) {
|
|
224
|
+
steps.push(this.generateTransformationCode(req.constraints.transformation));
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// Test expects specific return value?
|
|
228
|
+
steps.push(this.generateReturnCode(req.expectedOutput));
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
return steps.join('\n');
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### 3. Incremental Development
|
|
237
|
+
|
|
238
|
+
Build functionality incrementally, one passing test at a time.
|
|
239
|
+
|
|
240
|
+
```typescript
|
|
241
|
+
class IncrementalDeveloper {
|
|
242
|
+
async developIncrementally(tests) {
|
|
243
|
+
const sorted = this.sortTestsByDependency(tests);
|
|
244
|
+
const results = [];
|
|
245
|
+
|
|
246
|
+
for (const test of sorted) {
|
|
247
|
+
console.log(`Making test pass: ${test.name}`);
|
|
248
|
+
|
|
249
|
+
// Implement just enough for this test
|
|
250
|
+
const code = await this.implementMinimal(test);
|
|
251
|
+
|
|
252
|
+
// Run test to verify
|
|
253
|
+
const result = await this.runTest(test);
|
|
254
|
+
|
|
255
|
+
if (!result.passed) {
|
|
256
|
+
// Adjust implementation
|
|
257
|
+
code = await this.adjustImplementation(code, result.error);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
results.push({ test: test.name, passed: true, code });
|
|
261
|
+
|
|
262
|
+
// Run all previous tests to ensure no regression
|
|
263
|
+
await this.runAllTests(results.map(r => r.test));
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
return results;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
sortTestsByDependency(tests) {
|
|
270
|
+
// Order tests from simple to complex
|
|
271
|
+
return tests.sort((a, b) => {
|
|
272
|
+
const complexityA = this.calculateComplexity(a);
|
|
273
|
+
const complexityB = this.calculateComplexity(b);
|
|
274
|
+
return complexityA - complexityB;
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
calculateComplexity(test) {
|
|
279
|
+
return (
|
|
280
|
+
test.assertions.length +
|
|
281
|
+
test.mocks.length +
|
|
282
|
+
test.dependencies.length
|
|
283
|
+
);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
## Integration with Parent Agents
|
|
289
|
+
|
|
290
|
+
### Input from qe-test-writer
|
|
291
|
+
|
|
292
|
+
```typescript
|
|
293
|
+
// Read failing tests from memory
|
|
294
|
+
const failingTests = await this.memoryStore.retrieve('aqe/test-writer/results', {
|
|
295
|
+
partition: 'coordination'
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
// Verify tests are failing (RED phase complete)
|
|
299
|
+
if (!failingTests.allTestsFailing) {
|
|
300
|
+
throw new Error('Cannot proceed to GREEN phase - tests are not failing');
|
|
301
|
+
}
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Output to qe-test-refactorer
|
|
305
|
+
|
|
306
|
+
```typescript
|
|
307
|
+
// Store implementations for refactoring
|
|
308
|
+
await this.memoryStore.store('aqe/test-implementer/results', {
|
|
309
|
+
implementations: generatedCode,
|
|
310
|
+
testsPass: true,
|
|
311
|
+
greenPhaseComplete: true,
|
|
312
|
+
readyForRefactoring: true
|
|
313
|
+
}, { partition: 'coordination' });
|
|
314
|
+
|
|
315
|
+
// Emit completion event
|
|
316
|
+
this.eventBus.emit('test-implementer:completed', {
|
|
317
|
+
agentId: this.agentId,
|
|
318
|
+
implementationsCreated: generatedCode.length,
|
|
319
|
+
nextPhase: 'REFACTOR'
|
|
320
|
+
});
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
## Success Criteria
|
|
324
|
+
|
|
325
|
+
### GREEN Phase Validation
|
|
326
|
+
|
|
327
|
+
**Implementation MUST**:
|
|
328
|
+
- ✅ Make all tests pass
|
|
329
|
+
- ✅ Be minimal (no unnecessary code)
|
|
330
|
+
- ✅ Follow YAGNI principle
|
|
331
|
+
- ✅ Not introduce new functionality beyond test requirements
|
|
332
|
+
|
|
333
|
+
**Implementation MUST NOT**:
|
|
334
|
+
- ❌ Include premature optimization
|
|
335
|
+
- ❌ Add features not covered by tests
|
|
336
|
+
- ❌ Contain complex logic not required by tests
|
|
337
|
+
- ❌ Break existing passing tests
|
|
338
|
+
|
|
339
|
+
## Example Complete Workflow
|
|
340
|
+
|
|
341
|
+
```typescript
|
|
342
|
+
// BEFORE (RED phase): Test fails
|
|
343
|
+
test('should calculate total price with discount', () => {
|
|
344
|
+
const cart = { items: [{ price: 100 }, { price: 50 }], discount: 0.1 };
|
|
345
|
+
const total = calculateTotal(cart);
|
|
346
|
+
expect(total).toBe(135); // 150 - 15 (10% discount)
|
|
347
|
+
});
|
|
348
|
+
// ❌ FAILS: calculateTotal is not defined
|
|
349
|
+
|
|
350
|
+
// AFTER (GREEN phase): Minimal implementation
|
|
351
|
+
function calculateTotal(cart) {
|
|
352
|
+
// Step 1: Calculate subtotal (minimal)
|
|
353
|
+
const subtotal = cart.items.reduce((sum, item) => sum + item.price, 0);
|
|
354
|
+
|
|
355
|
+
// Step 2: Apply discount (minimal)
|
|
356
|
+
const discountAmount = subtotal * cart.discount;
|
|
357
|
+
|
|
358
|
+
// Step 3: Return total (minimal)
|
|
359
|
+
return subtotal - discountAmount;
|
|
360
|
+
}
|
|
361
|
+
// ✅ PASSES: Test now passes with minimal code
|
|
362
|
+
|
|
363
|
+
// Next: qe-test-refactorer will improve code quality
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
**Subagent Status**: Active
|
|
369
|
+
**Parent Agents**: qe-test-generator, qe-code-reviewer
|
|
370
|
+
**TDD Phase**: GREEN (Make Tests Pass)
|
|
371
|
+
**Version**: 1.0.0
|