agentic-qe 1.0.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/analysis/code-analyzer.md +209 -0
- package/.claude/agents/analysis/code-review/analyze-code-quality.md +180 -0
- package/.claude/agents/architecture/system-design/arch-system-design.md +156 -0
- package/.claude/agents/base-template-generator.md +42 -0
- package/.claude/agents/consensus/byzantine-coordinator.md +63 -0
- package/.claude/agents/consensus/crdt-synchronizer.md +997 -0
- package/.claude/agents/consensus/gossip-coordinator.md +63 -0
- package/.claude/agents/consensus/performance-benchmarker.md +851 -0
- package/.claude/agents/consensus/quorum-manager.md +823 -0
- package/.claude/agents/consensus/raft-manager.md +63 -0
- package/.claude/agents/consensus/security-manager.md +622 -0
- package/.claude/agents/core/coder.md +266 -0
- package/.claude/agents/core/planner.md +168 -0
- package/.claude/agents/core/researcher.md +190 -0
- package/.claude/agents/core/reviewer.md +326 -0
- package/.claude/agents/core/tester.md +319 -0
- package/.claude/agents/data/ml/data-ml-model.md +193 -0
- package/.claude/agents/development/backend/dev-backend-api.md +142 -0
- package/.claude/agents/devops/ci-cd/ops-cicd-github.md +164 -0
- package/.claude/agents/documentation/api-docs/docs-api-openapi.md +174 -0
- package/.claude/agents/flow-nexus/app-store.md +88 -0
- package/.claude/agents/flow-nexus/authentication.md +69 -0
- package/.claude/agents/flow-nexus/challenges.md +81 -0
- package/.claude/agents/flow-nexus/neural-network.md +88 -0
- package/.claude/agents/flow-nexus/payments.md +83 -0
- package/.claude/agents/flow-nexus/sandbox.md +76 -0
- package/.claude/agents/flow-nexus/swarm.md +76 -0
- package/.claude/agents/flow-nexus/user-tools.md +96 -0
- package/.claude/agents/flow-nexus/workflow.md +84 -0
- package/.claude/agents/github/code-review-swarm.md +538 -0
- package/.claude/agents/github/github-modes.md +173 -0
- package/.claude/agents/github/issue-tracker.md +319 -0
- package/.claude/agents/github/multi-repo-swarm.md +553 -0
- package/.claude/agents/github/pr-manager.md +191 -0
- package/.claude/agents/github/project-board-sync.md +509 -0
- package/.claude/agents/github/release-manager.md +367 -0
- package/.claude/agents/github/release-swarm.md +583 -0
- package/.claude/agents/github/repo-architect.md +398 -0
- package/.claude/agents/github/swarm-issue.md +573 -0
- package/.claude/agents/github/swarm-pr.md +428 -0
- package/.claude/agents/github/sync-coordinator.md +452 -0
- package/.claude/agents/github/workflow-automation.md +635 -0
- package/.claude/agents/goal/code-goal-planner.md +446 -0
- package/.claude/agents/goal/goal-planner.md +168 -0
- package/.claude/agents/hive-mind/collective-intelligence-coordinator.md +130 -0
- package/.claude/agents/hive-mind/queen-coordinator.md +203 -0
- package/.claude/agents/hive-mind/scout-explorer.md +242 -0
- package/.claude/agents/hive-mind/swarm-memory-manager.md +193 -0
- package/.claude/agents/hive-mind/worker-specialist.md +217 -0
- package/.claude/agents/neural/safla-neural.md +74 -0
- package/.claude/agents/optimization/benchmark-suite.md +665 -0
- package/.claude/agents/optimization/load-balancer.md +431 -0
- package/.claude/agents/optimization/performance-monitor.md +672 -0
- package/.claude/agents/optimization/resource-allocator.md +674 -0
- package/.claude/agents/optimization/topology-optimizer.md +808 -0
- package/.claude/agents/qe-api-contract-validator.md +1088 -0
- package/.claude/agents/qe-chaos-engineer.md +736 -0
- package/.claude/agents/qe-coverage-analyzer.md +282 -0
- package/.claude/agents/qe-deployment-readiness.md +1109 -0
- package/.claude/agents/qe-flaky-test-hunter.md +1121 -0
- package/.claude/agents/qe-fleet-commander.md +641 -0
- package/.claude/agents/qe-performance-tester.md +354 -0
- package/.claude/agents/qe-production-intelligence.md +1162 -0
- package/.claude/agents/qe-quality-gate.md +294 -0
- package/.claude/agents/qe-regression-risk-analyzer.md +947 -0
- package/.claude/agents/qe-requirements-validator.md +691 -0
- package/.claude/agents/qe-security-scanner.md +430 -0
- package/.claude/agents/qe-test-data-architect.md +1007 -0
- package/.claude/agents/qe-test-executor.md +365 -0
- package/.claude/agents/qe-test-generator.md +332 -0
- package/.claude/agents/qe-visual-tester.md +754 -0
- package/.claude/agents/sparc/architecture.md +472 -0
- package/.claude/agents/sparc/pseudocode.md +318 -0
- package/.claude/agents/sparc/refinement.md +525 -0
- package/.claude/agents/sparc/specification.md +276 -0
- package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +226 -0
- package/.claude/agents/swarm/adaptive-coordinator.md +396 -0
- package/.claude/agents/swarm/hierarchical-coordinator.md +327 -0
- package/.claude/agents/swarm/mesh-coordinator.md +392 -0
- package/.claude/agents/templates/automation-smart-agent.md +205 -0
- package/.claude/agents/templates/coordinator-swarm-init.md +105 -0
- package/.claude/agents/templates/github-pr-manager.md +177 -0
- package/.claude/agents/templates/implementer-sparc-coder.md +259 -0
- package/.claude/agents/templates/memory-coordinator.md +187 -0
- package/.claude/agents/templates/migration-plan.md +746 -0
- package/.claude/agents/templates/orchestrator-task.md +139 -0
- package/.claude/agents/templates/performance-analyzer.md +199 -0
- package/.claude/agents/templates/sparc-coordinator.md +183 -0
- package/.claude/agents/testing/unit/tdd-london-swarm.md +244 -0
- package/.claude/agents/testing/validation/production-validator.md +395 -0
- package/.claude/aqe-fleet.json +47 -0
- package/.claude/commands/README.md +106 -0
- package/.claude/commands/agents/README.md +10 -0
- package/.claude/commands/agents/agent-capabilities.md +21 -0
- package/.claude/commands/agents/agent-coordination.md +28 -0
- package/.claude/commands/agents/agent-spawning.md +28 -0
- package/.claude/commands/agents/agent-types.md +26 -0
- package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +54 -0
- package/.claude/commands/analysis/README.md +9 -0
- package/.claude/commands/analysis/bottleneck-detect.md +162 -0
- package/.claude/commands/analysis/performance-bottlenecks.md +59 -0
- package/.claude/commands/analysis/performance-report.md +25 -0
- package/.claude/commands/analysis/token-efficiency.md +45 -0
- package/.claude/commands/analysis/token-usage.md +25 -0
- package/.claude/commands/aqe-analyze.md +344 -0
- package/.claude/commands/aqe-benchmark.md +466 -0
- package/.claude/commands/aqe-chaos.md +443 -0
- package/.claude/commands/aqe-execute.md +322 -0
- package/.claude/commands/aqe-fleet-status.md +431 -0
- package/.claude/commands/aqe-generate.md +301 -0
- package/.claude/commands/aqe-optimize.md +361 -0
- package/.claude/commands/aqe-report.md +411 -0
- package/.claude/commands/automation/README.md +9 -0
- package/.claude/commands/automation/auto-agent.md +122 -0
- package/.claude/commands/automation/self-healing.md +106 -0
- package/.claude/commands/automation/session-memory.md +90 -0
- package/.claude/commands/automation/smart-agents.md +73 -0
- package/.claude/commands/automation/smart-spawn.md +25 -0
- package/.claude/commands/automation/workflow-select.md +25 -0
- package/.claude/commands/coordination/README.md +9 -0
- package/.claude/commands/coordination/agent-spawn.md +25 -0
- package/.claude/commands/coordination/init.md +44 -0
- package/.claude/commands/coordination/orchestrate.md +43 -0
- package/.claude/commands/coordination/spawn.md +45 -0
- package/.claude/commands/coordination/swarm-init.md +85 -0
- package/.claude/commands/coordination/task-orchestrate.md +25 -0
- package/.claude/commands/flow-nexus/app-store.md +124 -0
- package/.claude/commands/flow-nexus/challenges.md +120 -0
- package/.claude/commands/flow-nexus/login-registration.md +65 -0
- package/.claude/commands/flow-nexus/neural-network.md +134 -0
- package/.claude/commands/flow-nexus/payments.md +116 -0
- package/.claude/commands/flow-nexus/sandbox.md +83 -0
- package/.claude/commands/flow-nexus/swarm.md +87 -0
- package/.claude/commands/flow-nexus/user-tools.md +152 -0
- package/.claude/commands/flow-nexus/workflow.md +115 -0
- package/.claude/commands/github/README.md +11 -0
- package/.claude/commands/github/code-review-swarm.md +514 -0
- package/.claude/commands/github/code-review.md +25 -0
- package/.claude/commands/github/github-modes.md +147 -0
- package/.claude/commands/github/github-swarm.md +121 -0
- package/.claude/commands/github/issue-tracker.md +292 -0
- package/.claude/commands/github/issue-triage.md +25 -0
- package/.claude/commands/github/multi-repo-swarm.md +519 -0
- package/.claude/commands/github/pr-enhance.md +26 -0
- package/.claude/commands/github/pr-manager.md +170 -0
- package/.claude/commands/github/project-board-sync.md +471 -0
- package/.claude/commands/github/release-manager.md +338 -0
- package/.claude/commands/github/release-swarm.md +544 -0
- package/.claude/commands/github/repo-analyze.md +25 -0
- package/.claude/commands/github/repo-architect.md +367 -0
- package/.claude/commands/github/swarm-issue.md +482 -0
- package/.claude/commands/github/swarm-pr.md +285 -0
- package/.claude/commands/github/sync-coordinator.md +301 -0
- package/.claude/commands/github/workflow-automation.md +442 -0
- package/.claude/commands/hive-mind/README.md +17 -0
- package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-init.md +18 -0
- package/.claude/commands/hive-mind/hive-mind-memory.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-resume.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -0
- package/.claude/commands/hive-mind/hive-mind-status.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-stop.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -0
- package/.claude/commands/hive-mind/hive-mind.md +27 -0
- package/.claude/commands/hooks/README.md +11 -0
- package/.claude/commands/hooks/overview.md +132 -0
- package/.claude/commands/hooks/post-edit.md +117 -0
- package/.claude/commands/hooks/post-task.md +112 -0
- package/.claude/commands/hooks/pre-edit.md +113 -0
- package/.claude/commands/hooks/pre-task.md +111 -0
- package/.claude/commands/hooks/session-end.md +118 -0
- package/.claude/commands/hooks/setup.md +103 -0
- package/.claude/commands/memory/README.md +9 -0
- package/.claude/commands/memory/memory-persist.md +25 -0
- package/.claude/commands/memory/memory-search.md +25 -0
- package/.claude/commands/memory/memory-usage.md +25 -0
- package/.claude/commands/memory/neural.md +47 -0
- package/.claude/commands/memory/usage.md +46 -0
- package/.claude/commands/monitoring/README.md +9 -0
- package/.claude/commands/monitoring/agent-metrics.md +25 -0
- package/.claude/commands/monitoring/agents.md +44 -0
- package/.claude/commands/monitoring/real-time-view.md +25 -0
- package/.claude/commands/monitoring/status.md +46 -0
- package/.claude/commands/monitoring/swarm-monitor.md +25 -0
- package/.claude/commands/optimization/README.md +9 -0
- package/.claude/commands/optimization/auto-topology.md +62 -0
- package/.claude/commands/optimization/cache-manage.md +25 -0
- package/.claude/commands/optimization/parallel-execute.md +25 -0
- package/.claude/commands/optimization/parallel-execution.md +50 -0
- package/.claude/commands/optimization/topology-optimize.md +25 -0
- package/.claude/commands/pair/commands.md +546 -0
- package/.claude/commands/pair/config.md +510 -0
- package/.claude/commands/pair/examples.md +512 -0
- package/.claude/commands/pair/modes.md +348 -0
- package/.claude/commands/pair/session.md +407 -0
- package/.claude/commands/pair/start.md +209 -0
- package/.claude/commands/sparc/analyzer.md +52 -0
- package/.claude/commands/sparc/architect.md +53 -0
- package/.claude/commands/sparc/batch-executor.md +54 -0
- package/.claude/commands/sparc/coder.md +54 -0
- package/.claude/commands/sparc/debugger.md +54 -0
- package/.claude/commands/sparc/designer.md +53 -0
- package/.claude/commands/sparc/documenter.md +54 -0
- package/.claude/commands/sparc/innovator.md +54 -0
- package/.claude/commands/sparc/memory-manager.md +54 -0
- package/.claude/commands/sparc/optimizer.md +54 -0
- package/.claude/commands/sparc/orchestrator.md +132 -0
- package/.claude/commands/sparc/researcher.md +54 -0
- package/.claude/commands/sparc/reviewer.md +54 -0
- package/.claude/commands/sparc/sparc-modes.md +174 -0
- package/.claude/commands/sparc/swarm-coordinator.md +54 -0
- package/.claude/commands/sparc/tdd.md +54 -0
- package/.claude/commands/sparc/tester.md +54 -0
- package/.claude/commands/sparc/workflow-manager.md +54 -0
- package/.claude/commands/stream-chain/pipeline.md +121 -0
- package/.claude/commands/stream-chain/run.md +70 -0
- package/.claude/commands/swarm/README.md +15 -0
- package/.claude/commands/swarm/analysis.md +95 -0
- package/.claude/commands/swarm/development.md +96 -0
- package/.claude/commands/swarm/examples.md +168 -0
- package/.claude/commands/swarm/maintenance.md +102 -0
- package/.claude/commands/swarm/optimization.md +117 -0
- package/.claude/commands/swarm/research.md +136 -0
- package/.claude/commands/swarm/swarm-analysis.md +8 -0
- package/.claude/commands/swarm/swarm-background.md +8 -0
- package/.claude/commands/swarm/swarm-init.md +19 -0
- package/.claude/commands/swarm/swarm-modes.md +8 -0
- package/.claude/commands/swarm/swarm-monitor.md +8 -0
- package/.claude/commands/swarm/swarm-spawn.md +19 -0
- package/.claude/commands/swarm/swarm-status.md +8 -0
- package/.claude/commands/swarm/swarm-strategies.md +8 -0
- package/.claude/commands/swarm/swarm.md +27 -0
- package/.claude/commands/swarm/testing.md +131 -0
- package/.claude/commands/training/README.md +9 -0
- package/.claude/commands/training/model-update.md +25 -0
- package/.claude/commands/training/neural-patterns.md +74 -0
- package/.claude/commands/training/neural-train.md +25 -0
- package/.claude/commands/training/pattern-learn.md +25 -0
- package/.claude/commands/training/specialization.md +63 -0
- package/.claude/commands/truth/start.md +143 -0
- package/.claude/commands/verify/check.md +50 -0
- package/.claude/commands/verify/start.md +128 -0
- package/.claude/commands/workflows/README.md +9 -0
- package/.claude/commands/workflows/development.md +78 -0
- package/.claude/commands/workflows/research.md +63 -0
- package/.claude/commands/workflows/workflow-create.md +25 -0
- package/.claude/commands/workflows/workflow-execute.md +25 -0
- package/.claude/commands/workflows/workflow-export.md +25 -0
- package/.claude/helpers/checkpoint-manager.sh +251 -0
- package/.claude/helpers/github-safe.js +106 -0
- package/.claude/helpers/github-setup.sh +28 -0
- package/.claude/helpers/quick-start.sh +19 -0
- package/.claude/helpers/setup-mcp.sh +18 -0
- package/.claude/helpers/standard-checkpoint-hooks.sh +179 -0
- package/.claude/settings.json +114 -0
- package/.claude/settings.local.json +10 -0
- package/CONTRIBUTING.md +897 -0
- package/LICENSE +21 -0
- package/README.md +632 -0
- package/bin/aqe +959 -0
- package/config/fleet.yaml +50 -0
- package/dist/agents/ApiContractValidatorAgent.d.ts +222 -0
- package/dist/agents/ApiContractValidatorAgent.d.ts.map +1 -0
- package/dist/agents/ApiContractValidatorAgent.js +787 -0
- package/dist/agents/ApiContractValidatorAgent.js.map +1 -0
- package/dist/agents/BaseAgent.d.ts +147 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -0
- package/dist/agents/BaseAgent.js +374 -0
- package/dist/agents/BaseAgent.js.map +1 -0
- package/dist/agents/CoverageAnalyzerAgent.d.ts +103 -0
- package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -0
- package/dist/agents/CoverageAnalyzerAgent.js +466 -0
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -0
- package/dist/agents/DeploymentReadinessAgent.d.ts +244 -0
- package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -0
- package/dist/agents/DeploymentReadinessAgent.js +974 -0
- package/dist/agents/DeploymentReadinessAgent.js.map +1 -0
- package/dist/agents/FlakyTestHunterAgent.d.ts +172 -0
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -0
- package/dist/agents/FlakyTestHunterAgent.js +867 -0
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -0
- package/dist/agents/FleetCommanderAgent.d.ts +154 -0
- package/dist/agents/FleetCommanderAgent.d.ts.map +1 -0
- package/dist/agents/FleetCommanderAgent.js +924 -0
- package/dist/agents/FleetCommanderAgent.js.map +1 -0
- package/dist/agents/PerformanceTesterAgent.d.ts +194 -0
- package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -0
- package/dist/agents/PerformanceTesterAgent.js +972 -0
- package/dist/agents/PerformanceTesterAgent.js.map +1 -0
- package/dist/agents/ProductionIntelligenceAgent.d.ts +224 -0
- package/dist/agents/ProductionIntelligenceAgent.d.ts.map +1 -0
- package/dist/agents/ProductionIntelligenceAgent.js +856 -0
- package/dist/agents/ProductionIntelligenceAgent.js.map +1 -0
- package/dist/agents/QualityAnalyzerAgent.d.ts +67 -0
- package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -0
- package/dist/agents/QualityAnalyzerAgent.js +453 -0
- package/dist/agents/QualityAnalyzerAgent.js.map +1 -0
- package/dist/agents/QualityGateAgent.d.ts +104 -0
- package/dist/agents/QualityGateAgent.d.ts.map +1 -0
- package/dist/agents/QualityGateAgent.js +522 -0
- package/dist/agents/QualityGateAgent.js.map +1 -0
- package/dist/agents/RegressionRiskAnalyzerAgent.d.ts +274 -0
- package/dist/agents/RegressionRiskAnalyzerAgent.d.ts.map +1 -0
- package/dist/agents/RegressionRiskAnalyzerAgent.js +1076 -0
- package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -0
- package/dist/agents/RequirementsValidatorAgent.d.ts +195 -0
- package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -0
- package/dist/agents/RequirementsValidatorAgent.js +992 -0
- package/dist/agents/RequirementsValidatorAgent.js.map +1 -0
- package/dist/agents/SecurityScannerAgent.d.ts +126 -0
- package/dist/agents/SecurityScannerAgent.d.ts.map +1 -0
- package/dist/agents/SecurityScannerAgent.js +695 -0
- package/dist/agents/SecurityScannerAgent.js.map +1 -0
- package/dist/agents/TestDataArchitectAgent.d.ts +452 -0
- package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -0
- package/dist/agents/TestDataArchitectAgent.js +1346 -0
- package/dist/agents/TestDataArchitectAgent.js.map +1 -0
- package/dist/agents/TestExecutorAgent.d.ts +101 -0
- package/dist/agents/TestExecutorAgent.d.ts.map +1 -0
- package/dist/agents/TestExecutorAgent.js +730 -0
- package/dist/agents/TestExecutorAgent.js.map +1 -0
- package/dist/agents/TestGeneratorAgent.d.ts +109 -0
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -0
- package/dist/agents/TestGeneratorAgent.js +450 -0
- package/dist/agents/TestGeneratorAgent.js.map +1 -0
- package/dist/agents/index.d.ts +51 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +738 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/cli/commands/analyze.d.ts +32 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -0
- package/dist/cli/commands/analyze.js +764 -0
- package/dist/cli/commands/analyze.js.map +1 -0
- package/dist/cli/commands/fleet.d.ts +36 -0
- package/dist/cli/commands/fleet.d.ts.map +1 -0
- package/dist/cli/commands/fleet.js +745 -0
- package/dist/cli/commands/fleet.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +24 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +424 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/init.d.ts +17 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +570 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/run.d.ts +25 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +558 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/index-spec.d.ts +3 -0
- package/dist/cli/index-spec.d.ts.map +1 -0
- package/dist/cli/index-spec.js +154 -0
- package/dist/cli/index-spec.js.map +1 -0
- package/dist/cli/index-working.d.ts +7 -0
- package/dist/cli/index-working.d.ts.map +1 -0
- package/dist/cli/index-working.js +470 -0
- package/dist/cli/index-working.js.map +1 -0
- package/dist/cli/index.d.ts +9 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +174 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/Agent.d.ts +189 -0
- package/dist/core/Agent.d.ts.map +1 -0
- package/dist/core/Agent.js +288 -0
- package/dist/core/Agent.js.map +1 -0
- package/dist/core/EventBus.d.ts +40 -0
- package/dist/core/EventBus.d.ts.map +1 -0
- package/dist/core/EventBus.js +114 -0
- package/dist/core/EventBus.js.map +1 -0
- package/dist/core/FleetManager.d.ts +219 -0
- package/dist/core/FleetManager.d.ts.map +1 -0
- package/dist/core/FleetManager.js +354 -0
- package/dist/core/FleetManager.js.map +1 -0
- package/dist/core/MemoryManager.d.ts +119 -0
- package/dist/core/MemoryManager.d.ts.map +1 -0
- package/dist/core/MemoryManager.js +460 -0
- package/dist/core/MemoryManager.js.map +1 -0
- package/dist/core/Task.d.ts +264 -0
- package/dist/core/Task.d.ts.map +1 -0
- package/dist/core/Task.js +397 -0
- package/dist/core/Task.js.map +1 -0
- package/dist/core/coverage-analyzer.d.ts +50 -0
- package/dist/core/coverage-analyzer.d.ts.map +1 -0
- package/dist/core/coverage-analyzer.js +146 -0
- package/dist/core/coverage-analyzer.js.map +1 -0
- package/dist/core/index.d.ts +14 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +20 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/quality-gate.d.ts +81 -0
- package/dist/core/quality-gate.d.ts.map +1 -0
- package/dist/core/quality-gate.js +254 -0
- package/dist/core/quality-gate.js.map +1 -0
- package/dist/coverage/coverage-collector.d.ts +62 -0
- package/dist/coverage/coverage-collector.d.ts.map +1 -0
- package/dist/coverage/coverage-collector.js +61 -0
- package/dist/coverage/coverage-collector.js.map +1 -0
- package/dist/coverage/coverage-reporter.d.ts +42 -0
- package/dist/coverage/coverage-reporter.d.ts.map +1 -0
- package/dist/coverage/coverage-reporter.js +53 -0
- package/dist/coverage/coverage-reporter.js.map +1 -0
- package/dist/index.d.ts +89 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +142 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/handlers/agent-spawn.d.ts +72 -0
- package/dist/mcp/handlers/agent-spawn.d.ts.map +1 -0
- package/dist/mcp/handlers/agent-spawn.js +255 -0
- package/dist/mcp/handlers/agent-spawn.js.map +1 -0
- package/dist/mcp/handlers/base-handler.d.ts +53 -0
- package/dist/mcp/handlers/base-handler.d.ts.map +1 -0
- package/dist/mcp/handlers/base-handler.js +77 -0
- package/dist/mcp/handlers/base-handler.js.map +1 -0
- package/dist/mcp/handlers/fleet-init.d.ts +55 -0
- package/dist/mcp/handlers/fleet-init.d.ts.map +1 -0
- package/dist/mcp/handlers/fleet-init.js +149 -0
- package/dist/mcp/handlers/fleet-init.js.map +1 -0
- package/dist/mcp/handlers/fleet-status.d.ts +103 -0
- package/dist/mcp/handlers/fleet-status.d.ts.map +1 -0
- package/dist/mcp/handlers/fleet-status.js +244 -0
- package/dist/mcp/handlers/fleet-status.js.map +1 -0
- package/dist/mcp/handlers/optimize-tests.d.ts +219 -0
- package/dist/mcp/handlers/optimize-tests.d.ts.map +1 -0
- package/dist/mcp/handlers/optimize-tests.js +532 -0
- package/dist/mcp/handlers/optimize-tests.js.map +1 -0
- package/dist/mcp/handlers/predict-defects.d.ts +194 -0
- package/dist/mcp/handlers/predict-defects.d.ts.map +1 -0
- package/dist/mcp/handlers/predict-defects.js +721 -0
- package/dist/mcp/handlers/predict-defects.js.map +1 -0
- package/dist/mcp/handlers/quality-analyze.d.ts +273 -0
- package/dist/mcp/handlers/quality-analyze.d.ts.map +1 -0
- package/dist/mcp/handlers/quality-analyze.js +702 -0
- package/dist/mcp/handlers/quality-analyze.js.map +1 -0
- package/dist/mcp/handlers/task-orchestrate.d.ts +152 -0
- package/dist/mcp/handlers/task-orchestrate.d.ts.map +1 -0
- package/dist/mcp/handlers/task-orchestrate.js +629 -0
- package/dist/mcp/handlers/task-orchestrate.js.map +1 -0
- package/dist/mcp/handlers/test-execute.d.ts +132 -0
- package/dist/mcp/handlers/test-execute.d.ts.map +1 -0
- package/dist/mcp/handlers/test-execute.js +436 -0
- package/dist/mcp/handlers/test-execute.js.map +1 -0
- package/dist/mcp/handlers/test-generate.d.ts +107 -0
- package/dist/mcp/handlers/test-generate.d.ts.map +1 -0
- package/dist/mcp/handlers/test-generate.js +437 -0
- package/dist/mcp/handlers/test-generate.js.map +1 -0
- package/dist/mcp/server.d.ts +99 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +214 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/services/AgentRegistry.d.ts +191 -0
- package/dist/mcp/services/AgentRegistry.d.ts.map +1 -0
- package/dist/mcp/services/AgentRegistry.js +403 -0
- package/dist/mcp/services/AgentRegistry.js.map +1 -0
- package/dist/mcp/services/HookExecutor.d.ts +165 -0
- package/dist/mcp/services/HookExecutor.d.ts.map +1 -0
- package/dist/mcp/services/HookExecutor.js +327 -0
- package/dist/mcp/services/HookExecutor.js.map +1 -0
- package/dist/mcp/start.d.ts +7 -0
- package/dist/mcp/start.d.ts.map +1 -0
- package/dist/mcp/start.js +35 -0
- package/dist/mcp/start.js.map +1 -0
- package/dist/mcp/tools.d.ts +81 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +471 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/optimization/sublinear-solver.d.ts +72 -0
- package/dist/optimization/sublinear-solver.d.ts.map +1 -0
- package/dist/optimization/sublinear-solver.js +263 -0
- package/dist/optimization/sublinear-solver.js.map +1 -0
- package/dist/scripts/verifyComplexity.d.ts +8 -0
- package/dist/scripts/verifyComplexity.d.ts.map +1 -0
- package/dist/scripts/verifyComplexity.js +56 -0
- package/dist/scripts/verifyComplexity.js.map +1 -0
- package/dist/types/api-contract.types.d.ts +273 -0
- package/dist/types/api-contract.types.d.ts.map +1 -0
- package/dist/types/api-contract.types.js +18 -0
- package/dist/types/api-contract.types.js.map +1 -0
- package/dist/types/errors.d.ts +104 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +226 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/events.d.ts +101 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +6 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/index.d.ts +570 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +131 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/Config.d.ts +128 -0
- package/dist/utils/Config.d.ts.map +1 -0
- package/dist/utils/Config.js +232 -0
- package/dist/utils/Config.js.map +1 -0
- package/dist/utils/Database.d.ts +112 -0
- package/dist/utils/Database.d.ts.map +1 -0
- package/dist/utils/Database.js +352 -0
- package/dist/utils/Database.js.map +1 -0
- package/dist/utils/Logger.d.ts +58 -0
- package/dist/utils/Logger.d.ts.map +1 -0
- package/dist/utils/Logger.js +125 -0
- package/dist/utils/Logger.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +14 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/sublinear/coverageOptimizer.d.ts +84 -0
- package/dist/utils/sublinear/coverageOptimizer.d.ts.map +1 -0
- package/dist/utils/sublinear/coverageOptimizer.js +415 -0
- package/dist/utils/sublinear/coverageOptimizer.js.map +1 -0
- package/dist/utils/sublinear/index.d.ts +50 -0
- package/dist/utils/sublinear/index.d.ts.map +1 -0
- package/dist/utils/sublinear/index.js +390 -0
- package/dist/utils/sublinear/index.js.map +1 -0
- package/dist/utils/sublinear/matrixSolver.d.ts +132 -0
- package/dist/utils/sublinear/matrixSolver.d.ts.map +1 -0
- package/dist/utils/sublinear/matrixSolver.js +642 -0
- package/dist/utils/sublinear/matrixSolver.js.map +1 -0
- package/dist/utils/sublinear/temporalPredictor.d.ts +195 -0
- package/dist/utils/sublinear/temporalPredictor.d.ts.map +1 -0
- package/dist/utils/sublinear/temporalPredictor.js +474 -0
- package/dist/utils/sublinear/temporalPredictor.js.map +1 -0
- package/dist/utils/sublinear/testSelector.d.ts +81 -0
- package/dist/utils/sublinear/testSelector.d.ts.map +1 -0
- package/dist/utils/sublinear/testSelector.js +303 -0
- package/dist/utils/sublinear/testSelector.js.map +1 -0
- package/package.json +131 -0
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,897 @@
|
|
|
1
|
+
# Contributing to Agentic QE
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to Agentic QE! We're excited to have you join our community of developers building the future of AI-driven quality engineering.
|
|
4
|
+
|
|
5
|
+
This document provides guidelines for contributing to the project. Following these guidelines helps maintain code quality and makes the contribution process smooth for everyone.
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
|
|
9
|
+
- [Code of Conduct](#code-of-conduct)
|
|
10
|
+
- [How Can I Contribute?](#how-can-i-contribute)
|
|
11
|
+
- [Development Setup](#development-setup)
|
|
12
|
+
- [Coding Standards](#coding-standards)
|
|
13
|
+
- [Commit Message Convention](#commit-message-convention)
|
|
14
|
+
- [Pull Request Process](#pull-request-process)
|
|
15
|
+
- [Testing Guidelines](#testing-guidelines)
|
|
16
|
+
- [Documentation](#documentation)
|
|
17
|
+
- [Community](#community)
|
|
18
|
+
|
|
19
|
+
## Code of Conduct
|
|
20
|
+
|
|
21
|
+
This project adheres to a Code of Conduct that we expect all contributors to follow. Please read [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) before contributing.
|
|
22
|
+
|
|
23
|
+
By participating, you are expected to uphold this code. Please report unacceptable behavior to the project maintainers.
|
|
24
|
+
|
|
25
|
+
## How Can I Contribute?
|
|
26
|
+
|
|
27
|
+
### Reporting Bugs
|
|
28
|
+
|
|
29
|
+
Before creating bug reports, please check existing issues to avoid duplicates. When creating a bug report, include:
|
|
30
|
+
|
|
31
|
+
- **Clear title and description** - Summarize the issue concisely
|
|
32
|
+
- **Steps to reproduce** - Detailed steps to recreate the bug
|
|
33
|
+
- **Expected vs actual behavior** - What should happen vs what happens
|
|
34
|
+
- **Environment details** - OS, Node.js version, package version
|
|
35
|
+
- **Code samples** - Minimal reproducible example if possible
|
|
36
|
+
- **Screenshots** - If applicable, add visual evidence
|
|
37
|
+
|
|
38
|
+
**Example Bug Report:**
|
|
39
|
+
|
|
40
|
+
```markdown
|
|
41
|
+
**Bug:** Test generation fails for async functions with try-catch blocks
|
|
42
|
+
|
|
43
|
+
**Environment:**
|
|
44
|
+
- OS: Ubuntu 22.04
|
|
45
|
+
- Node.js: 18.17.0
|
|
46
|
+
- Agentic QE: 1.2.3
|
|
47
|
+
|
|
48
|
+
**Steps to Reproduce:**
|
|
49
|
+
1. Run `aqe test src/async-handler.ts`
|
|
50
|
+
2. Observe error in console
|
|
51
|
+
|
|
52
|
+
**Expected:** Tests generated successfully
|
|
53
|
+
**Actual:** TypeError: Cannot read property 'body' of undefined
|
|
54
|
+
|
|
55
|
+
**Code Sample:**
|
|
56
|
+
\`\`\`typescript
|
|
57
|
+
async function fetchData() {
|
|
58
|
+
try {
|
|
59
|
+
const response = await fetch('/api/data');
|
|
60
|
+
return await response.json();
|
|
61
|
+
} catch (error) {
|
|
62
|
+
console.error(error);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
\`\`\`
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Suggesting Features
|
|
69
|
+
|
|
70
|
+
Feature suggestions are welcome! Please provide:
|
|
71
|
+
|
|
72
|
+
- **Clear use case** - Why is this feature needed?
|
|
73
|
+
- **Proposed solution** - How should it work?
|
|
74
|
+
- **Alternatives considered** - Other approaches you've thought about
|
|
75
|
+
- **Implementation ideas** - Technical approach if you have thoughts
|
|
76
|
+
|
|
77
|
+
**Example Feature Request:**
|
|
78
|
+
|
|
79
|
+
```markdown
|
|
80
|
+
**Feature:** Visual regression testing agent
|
|
81
|
+
|
|
82
|
+
**Use Case:**
|
|
83
|
+
Teams need to catch UI regressions automatically. Manual visual testing
|
|
84
|
+
is time-consuming and error-prone.
|
|
85
|
+
|
|
86
|
+
**Proposed Solution:**
|
|
87
|
+
Add `qe-visual-tester` agent that:
|
|
88
|
+
- Captures screenshots during test execution
|
|
89
|
+
- Compares against baseline images
|
|
90
|
+
- Highlights visual differences
|
|
91
|
+
- Integrates with existing test suite
|
|
92
|
+
|
|
93
|
+
**Alternatives:**
|
|
94
|
+
- Manual visual testing (current state)
|
|
95
|
+
- Separate visual testing tools (adds complexity)
|
|
96
|
+
|
|
97
|
+
**Implementation Ideas:**
|
|
98
|
+
- Use Playwright for screenshot capture
|
|
99
|
+
- Leverage pixelmatch for image comparison
|
|
100
|
+
- Store baselines in project .visual-baselines/ directory
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Code Contributions
|
|
104
|
+
|
|
105
|
+
We love code contributions! Here's how to get started:
|
|
106
|
+
|
|
107
|
+
1. **Fork the repository** on GitHub
|
|
108
|
+
2. **Clone your fork** locally
|
|
109
|
+
3. **Create a feature branch** from `main`
|
|
110
|
+
4. **Make your changes** following coding standards
|
|
111
|
+
5. **Write or update tests** for your changes
|
|
112
|
+
6. **Run the test suite** to ensure nothing breaks
|
|
113
|
+
7. **Commit your changes** using conventional commits
|
|
114
|
+
8. **Push to your fork** and submit a pull request
|
|
115
|
+
|
|
116
|
+
### Documentation Improvements
|
|
117
|
+
|
|
118
|
+
Documentation is crucial! You can contribute by:
|
|
119
|
+
|
|
120
|
+
- Fixing typos or clarifying existing docs
|
|
121
|
+
- Adding examples and use cases
|
|
122
|
+
- Writing tutorials or guides
|
|
123
|
+
- Improving API documentation
|
|
124
|
+
- Translating documentation (future)
|
|
125
|
+
|
|
126
|
+
## Development Setup
|
|
127
|
+
|
|
128
|
+
### Prerequisites
|
|
129
|
+
|
|
130
|
+
Before contributing to Agentic QE, you must have:
|
|
131
|
+
|
|
132
|
+
#### Required
|
|
133
|
+
- **Claude Code**: Install from [claude.ai/code](https://claude.ai/code) - Required for agent execution
|
|
134
|
+
- **Node.js** >= 18.0.0 (LTS recommended)
|
|
135
|
+
- **npm** >= 9.0.0 or **pnpm** >= 8.0.0
|
|
136
|
+
- **Git** >= 2.30.0
|
|
137
|
+
- **TypeScript** >= 5.0.0 (installed via npm)
|
|
138
|
+
|
|
139
|
+
#### Optional (Advanced Development)
|
|
140
|
+
- **Claude Flow**: For advanced coordination
|
|
141
|
+
```bash
|
|
142
|
+
npm install -g @claude/flow
|
|
143
|
+
# or
|
|
144
|
+
npx claude-flow@alpha setup
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Understanding the Agent Execution Model
|
|
148
|
+
|
|
149
|
+
**Important**: Agentic QE agents are NOT standalone Node.js processes. They are:
|
|
150
|
+
- **Claude Code agent definitions** (markdown files in `.claude/agents/`)
|
|
151
|
+
- **Executed via Claude Code's Task tool**: `Task("description", "prompt", "agent-type")`
|
|
152
|
+
- **Integrated via MCP** (Model Context Protocol)
|
|
153
|
+
- **Coordinated through hooks** for cross-agent communication
|
|
154
|
+
|
|
155
|
+
When developing agents, you're creating:
|
|
156
|
+
1. Agent definition files (`.claude/agents/qe-*.md`)
|
|
157
|
+
2. TypeScript implementations in `src/agents/`
|
|
158
|
+
3. MCP handlers in `src/mcp/handlers/`
|
|
159
|
+
4. Tests in `tests/agents/` and `tests/integration/`
|
|
160
|
+
|
|
161
|
+
### Installation Steps
|
|
162
|
+
|
|
163
|
+
1. **Clone the repository:**
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
git clone https://github.com/proffesor-for-testing/agentic-qe-cf.git
|
|
167
|
+
cd agentic-qe-cf/agentic-qe
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
2. **Install dependencies:**
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
npm install
|
|
174
|
+
# or
|
|
175
|
+
pnpm install
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
3. **Build the project:**
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
npm run build
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
4. **Verify installation:**
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
npm run test
|
|
188
|
+
./bin/aqe --version
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Running Tests
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
# Run all tests
|
|
195
|
+
npm run test
|
|
196
|
+
|
|
197
|
+
# Run tests in watch mode
|
|
198
|
+
npm run test:watch
|
|
199
|
+
|
|
200
|
+
# Run tests with coverage
|
|
201
|
+
npm run test:coverage
|
|
202
|
+
|
|
203
|
+
# Run specific test file
|
|
204
|
+
npm run test -- tests/agents/TestGeneratorAgent.test.ts
|
|
205
|
+
|
|
206
|
+
# Run integration tests only
|
|
207
|
+
npm run test:integration
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Development Workflow
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
# Start development mode (watch for changes)
|
|
214
|
+
npm run dev
|
|
215
|
+
|
|
216
|
+
# Run linter
|
|
217
|
+
npm run lint
|
|
218
|
+
|
|
219
|
+
# Fix linting issues automatically
|
|
220
|
+
npm run lint:fix
|
|
221
|
+
|
|
222
|
+
# Type checking
|
|
223
|
+
npm run typecheck
|
|
224
|
+
|
|
225
|
+
# Format code
|
|
226
|
+
npm run format
|
|
227
|
+
|
|
228
|
+
# Run all checks (lint + typecheck + test)
|
|
229
|
+
npm run validate
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## Coding Standards
|
|
233
|
+
|
|
234
|
+
### TypeScript Style Guide
|
|
235
|
+
|
|
236
|
+
We follow strict TypeScript conventions for type safety and code quality:
|
|
237
|
+
|
|
238
|
+
**Naming Conventions:**
|
|
239
|
+
|
|
240
|
+
```typescript
|
|
241
|
+
// Classes: PascalCase
|
|
242
|
+
class TestGeneratorAgent { }
|
|
243
|
+
|
|
244
|
+
// Interfaces: PascalCase with 'I' prefix (optional but preferred)
|
|
245
|
+
interface IAgentConfig { }
|
|
246
|
+
interface AgentConfig { } // Also acceptable
|
|
247
|
+
|
|
248
|
+
// Types: PascalCase
|
|
249
|
+
type TestFramework = 'jest' | 'mocha' | 'vitest';
|
|
250
|
+
|
|
251
|
+
// Functions and methods: camelCase
|
|
252
|
+
function generateTests() { }
|
|
253
|
+
async function analyzeCode() { }
|
|
254
|
+
|
|
255
|
+
// Variables and constants: camelCase
|
|
256
|
+
const maxRetries = 3;
|
|
257
|
+
let currentAttempt = 0;
|
|
258
|
+
|
|
259
|
+
// Constants (truly immutable): UPPER_SNAKE_CASE
|
|
260
|
+
const DEFAULT_TIMEOUT = 5000;
|
|
261
|
+
const MAX_AGENTS = 16;
|
|
262
|
+
|
|
263
|
+
// Private class members: prefix with underscore
|
|
264
|
+
class Agent {
|
|
265
|
+
private _internalState: State;
|
|
266
|
+
private _config: Config;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
// File names: kebab-case
|
|
270
|
+
// test-generator-agent.ts
|
|
271
|
+
// coverage-analyzer.ts
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
**Code Organization:**
|
|
275
|
+
|
|
276
|
+
```typescript
|
|
277
|
+
// 1. Imports (grouped and sorted)
|
|
278
|
+
import { readFile } from 'fs/promises';
|
|
279
|
+
import path from 'path';
|
|
280
|
+
|
|
281
|
+
import type { AgentConfig } from '../types';
|
|
282
|
+
import { BaseAgent } from './base-agent';
|
|
283
|
+
import { Logger } from '../utils/logger';
|
|
284
|
+
|
|
285
|
+
// 2. Type definitions and interfaces
|
|
286
|
+
interface GeneratorOptions {
|
|
287
|
+
framework: TestFramework;
|
|
288
|
+
coverage: boolean;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// 3. Constants
|
|
292
|
+
const DEFAULT_OPTIONS: GeneratorOptions = {
|
|
293
|
+
framework: 'jest',
|
|
294
|
+
coverage: true,
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
// 4. Class implementation
|
|
298
|
+
export class TestGeneratorAgent extends BaseAgent {
|
|
299
|
+
// Public properties first
|
|
300
|
+
public readonly name = 'TestGenerator';
|
|
301
|
+
|
|
302
|
+
// Private properties
|
|
303
|
+
private _options: GeneratorOptions;
|
|
304
|
+
|
|
305
|
+
// Constructor
|
|
306
|
+
constructor(options?: Partial<GeneratorOptions>) {
|
|
307
|
+
super();
|
|
308
|
+
this._options = { ...DEFAULT_OPTIONS, ...options };
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
// Public methods
|
|
312
|
+
async generate(filePath: string): Promise<string> {
|
|
313
|
+
// Implementation
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
// Private methods
|
|
317
|
+
private async _analyzeFile(path: string): Promise<Analysis> {
|
|
318
|
+
// Implementation
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
// 5. Helper functions (if any)
|
|
323
|
+
function formatTestName(name: string): string {
|
|
324
|
+
return name.replace(/([A-Z])/g, ' $1').trim();
|
|
325
|
+
}
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
**Best Practices:**
|
|
329
|
+
|
|
330
|
+
```typescript
|
|
331
|
+
// ✅ DO: Use async/await over promises
|
|
332
|
+
async function fetchData(): Promise<Data> {
|
|
333
|
+
const response = await fetch('/api/data');
|
|
334
|
+
return await response.json();
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
// ❌ DON'T: Use promise chains
|
|
338
|
+
function fetchData(): Promise<Data> {
|
|
339
|
+
return fetch('/api/data')
|
|
340
|
+
.then(response => response.json());
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
// ✅ DO: Use type guards
|
|
344
|
+
function isError(value: unknown): value is Error {
|
|
345
|
+
return value instanceof Error;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
// ✅ DO: Use optional chaining and nullish coalescing
|
|
349
|
+
const config = userConfig?.timeout ?? DEFAULT_TIMEOUT;
|
|
350
|
+
|
|
351
|
+
// ✅ DO: Prefer readonly for immutable data
|
|
352
|
+
interface Config {
|
|
353
|
+
readonly timeout: number;
|
|
354
|
+
readonly retries: number;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
// ✅ DO: Use discriminated unions for state
|
|
358
|
+
type AgentState =
|
|
359
|
+
| { status: 'idle' }
|
|
360
|
+
| { status: 'running'; progress: number }
|
|
361
|
+
| { status: 'error'; error: Error };
|
|
362
|
+
|
|
363
|
+
// ✅ DO: Document complex logic
|
|
364
|
+
/**
|
|
365
|
+
* Analyzes test coverage using sublinear algorithms.
|
|
366
|
+
*
|
|
367
|
+
* Implements O(log n) coverage analysis through:
|
|
368
|
+
* 1. Binary search over test execution traces
|
|
369
|
+
* 2. Sparse matrix representation of code paths
|
|
370
|
+
* 3. Probabilistic coverage estimation
|
|
371
|
+
*
|
|
372
|
+
* @param testResults - Array of test execution results
|
|
373
|
+
* @returns Coverage analysis with gap identification
|
|
374
|
+
*/
|
|
375
|
+
async function analyzeCoverage(testResults: TestResult[]): Promise<CoverageAnalysis> {
|
|
376
|
+
// Implementation
|
|
377
|
+
}
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
### File Size Limits
|
|
381
|
+
|
|
382
|
+
- Keep files under **500 lines** when possible
|
|
383
|
+
- Extract large functions into separate modules
|
|
384
|
+
- Use the single responsibility principle
|
|
385
|
+
|
|
386
|
+
### Testing Requirements
|
|
387
|
+
|
|
388
|
+
Every contribution must include tests:
|
|
389
|
+
|
|
390
|
+
- **Unit tests** for new functions/classes (required)
|
|
391
|
+
- **Integration tests** for new features (required)
|
|
392
|
+
- **Edge cases** and error conditions (required)
|
|
393
|
+
- Aim for **80%+ code coverage** (enforced)
|
|
394
|
+
|
|
395
|
+
```typescript
|
|
396
|
+
// Example test structure
|
|
397
|
+
describe('TestGeneratorAgent', () => {
|
|
398
|
+
let agent: TestGeneratorAgent;
|
|
399
|
+
|
|
400
|
+
beforeEach(() => {
|
|
401
|
+
agent = new TestGeneratorAgent();
|
|
402
|
+
});
|
|
403
|
+
|
|
404
|
+
afterEach(() => {
|
|
405
|
+
jest.clearAllMocks();
|
|
406
|
+
});
|
|
407
|
+
|
|
408
|
+
describe('generate', () => {
|
|
409
|
+
it('should generate tests for a simple function', async () => {
|
|
410
|
+
// Arrange
|
|
411
|
+
const filePath = '/path/to/file.ts';
|
|
412
|
+
const expectedTests = expect.stringContaining('describe');
|
|
413
|
+
|
|
414
|
+
// Act
|
|
415
|
+
const result = await agent.generate(filePath);
|
|
416
|
+
|
|
417
|
+
// Assert
|
|
418
|
+
expect(result).toBe(expectedTests);
|
|
419
|
+
});
|
|
420
|
+
|
|
421
|
+
it('should handle async functions', async () => {
|
|
422
|
+
// Test async behavior
|
|
423
|
+
});
|
|
424
|
+
|
|
425
|
+
it('should throw error for invalid file path', async () => {
|
|
426
|
+
// Test error handling
|
|
427
|
+
await expect(agent.generate('/invalid')).rejects.toThrow();
|
|
428
|
+
});
|
|
429
|
+
});
|
|
430
|
+
});
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
### Documentation Requirements
|
|
434
|
+
|
|
435
|
+
- **JSDoc comments** for all public APIs
|
|
436
|
+
- **Inline comments** for complex logic
|
|
437
|
+
- **README updates** for new features
|
|
438
|
+
- **Type definitions** with descriptions
|
|
439
|
+
|
|
440
|
+
```typescript
|
|
441
|
+
/**
|
|
442
|
+
* Base agent class providing core functionality for all AQE agents.
|
|
443
|
+
*
|
|
444
|
+
* All specialized agents (TestGenerator, CoverageAnalyzer, etc.) extend
|
|
445
|
+
* this class to inherit coordination, memory, and lifecycle management.
|
|
446
|
+
*
|
|
447
|
+
* @example
|
|
448
|
+
* ```typescript
|
|
449
|
+
* class CustomAgent extends BaseAgent {
|
|
450
|
+
* constructor() {
|
|
451
|
+
* super({ name: 'CustomAgent', version: '1.0.0' });
|
|
452
|
+
* }
|
|
453
|
+
*
|
|
454
|
+
* async execute() {
|
|
455
|
+
* await this.storeMemory('key', 'value');
|
|
456
|
+
* return { success: true };
|
|
457
|
+
* }
|
|
458
|
+
* }
|
|
459
|
+
* ```
|
|
460
|
+
*/
|
|
461
|
+
export abstract class BaseAgent {
|
|
462
|
+
/**
|
|
463
|
+
* Unique identifier for this agent instance.
|
|
464
|
+
* Generated automatically on instantiation.
|
|
465
|
+
*/
|
|
466
|
+
readonly id: string;
|
|
467
|
+
|
|
468
|
+
/**
|
|
469
|
+
* Stores data in the shared memory system for cross-agent communication.
|
|
470
|
+
*
|
|
471
|
+
* @param key - Memory key (use 'aqe/agent-name/key' convention)
|
|
472
|
+
* @param value - Data to store (must be JSON-serializable)
|
|
473
|
+
* @throws {MemoryError} If storage fails or quota exceeded
|
|
474
|
+
*/
|
|
475
|
+
protected async storeMemory(key: string, value: unknown): Promise<void> {
|
|
476
|
+
// Implementation
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
## Commit Message Convention
|
|
482
|
+
|
|
483
|
+
We use [Conventional Commits](https://www.conventionalcommits.org/) for clear, structured commit history.
|
|
484
|
+
|
|
485
|
+
### Format
|
|
486
|
+
|
|
487
|
+
```
|
|
488
|
+
<type>(<scope>): <subject>
|
|
489
|
+
|
|
490
|
+
<body>
|
|
491
|
+
|
|
492
|
+
<footer>
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
### Types
|
|
496
|
+
|
|
497
|
+
- **feat**: New feature
|
|
498
|
+
- **fix**: Bug fix
|
|
499
|
+
- **docs**: Documentation changes
|
|
500
|
+
- **style**: Code style changes (formatting, semicolons, etc.)
|
|
501
|
+
- **refactor**: Code refactoring without behavior change
|
|
502
|
+
- **perf**: Performance improvements
|
|
503
|
+
- **test**: Adding or updating tests
|
|
504
|
+
- **chore**: Maintenance tasks (dependencies, build, etc.)
|
|
505
|
+
- **ci**: CI/CD changes
|
|
506
|
+
- **revert**: Reverting previous commits
|
|
507
|
+
|
|
508
|
+
### Scopes
|
|
509
|
+
|
|
510
|
+
Use component names as scopes:
|
|
511
|
+
|
|
512
|
+
- **agent**: Agent-related changes
|
|
513
|
+
- **mcp**: MCP server/handler changes
|
|
514
|
+
- **cli**: CLI command changes
|
|
515
|
+
- **core**: Core framework changes
|
|
516
|
+
- **test**: Test infrastructure changes
|
|
517
|
+
|
|
518
|
+
### Examples
|
|
519
|
+
|
|
520
|
+
```bash
|
|
521
|
+
# Feature
|
|
522
|
+
feat(agent): add visual regression testing agent
|
|
523
|
+
|
|
524
|
+
Implements new agent for visual testing with screenshot comparison.
|
|
525
|
+
|
|
526
|
+
- Captures screenshots using Playwright
|
|
527
|
+
- Compares against baseline images
|
|
528
|
+
- Highlights visual differences
|
|
529
|
+
- Integrates with existing test suite
|
|
530
|
+
|
|
531
|
+
Closes #123
|
|
532
|
+
|
|
533
|
+
# Bug fix
|
|
534
|
+
fix(mcp): handle undefined agent configs gracefully
|
|
535
|
+
|
|
536
|
+
Fixes crash when agent config is missing optional fields.
|
|
537
|
+
|
|
538
|
+
Fixes #456
|
|
539
|
+
|
|
540
|
+
# Documentation
|
|
541
|
+
docs(readme): update installation instructions
|
|
542
|
+
|
|
543
|
+
Add prerequisite versions and troubleshooting section.
|
|
544
|
+
|
|
545
|
+
# Refactoring
|
|
546
|
+
refactor(agent): extract common test generation logic
|
|
547
|
+
|
|
548
|
+
Moves shared test generation code to base class to reduce duplication.
|
|
549
|
+
|
|
550
|
+
# Performance
|
|
551
|
+
perf(coverage): optimize O(log n) coverage analysis
|
|
552
|
+
|
|
553
|
+
Implements sparse matrix representation reducing memory usage by 40%.
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
### Rules
|
|
557
|
+
|
|
558
|
+
- Use imperative mood ("add feature" not "added feature")
|
|
559
|
+
- Keep subject line under 72 characters
|
|
560
|
+
- Capitalize first letter of subject
|
|
561
|
+
- No period at end of subject
|
|
562
|
+
- Separate subject from body with blank line
|
|
563
|
+
- Wrap body at 72 characters
|
|
564
|
+
- Use body to explain what and why, not how
|
|
565
|
+
|
|
566
|
+
## Pull Request Process
|
|
567
|
+
|
|
568
|
+
### Branch Naming
|
|
569
|
+
|
|
570
|
+
Use descriptive branch names with prefixes:
|
|
571
|
+
|
|
572
|
+
```bash
|
|
573
|
+
# Features
|
|
574
|
+
git checkout -b feat/visual-testing-agent
|
|
575
|
+
git checkout -b feat/add-playwright-integration
|
|
576
|
+
|
|
577
|
+
# Bug fixes
|
|
578
|
+
git checkout -b fix/async-test-generation
|
|
579
|
+
git checkout -b fix/memory-leak-in-analyzer
|
|
580
|
+
|
|
581
|
+
# Documentation
|
|
582
|
+
git checkout -b docs/contributing-guide
|
|
583
|
+
git checkout -b docs/api-reference-update
|
|
584
|
+
|
|
585
|
+
# Refactoring
|
|
586
|
+
git checkout -b refactor/test-generator-cleanup
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
### Before Submitting
|
|
590
|
+
|
|
591
|
+
1. **Update your branch** with latest main:
|
|
592
|
+
```bash
|
|
593
|
+
git checkout main
|
|
594
|
+
git pull origin main
|
|
595
|
+
git checkout your-branch
|
|
596
|
+
git rebase main
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
2. **Run all checks**:
|
|
600
|
+
```bash
|
|
601
|
+
npm run validate # Runs lint, typecheck, and tests
|
|
602
|
+
npm run test:coverage # Ensure 80%+ coverage
|
|
603
|
+
```
|
|
604
|
+
|
|
605
|
+
3. **Update documentation** if needed
|
|
606
|
+
|
|
607
|
+
4. **Write clear commit messages** following conventions
|
|
608
|
+
|
|
609
|
+
### Pull Request Template
|
|
610
|
+
|
|
611
|
+
When creating a PR, include:
|
|
612
|
+
|
|
613
|
+
```markdown
|
|
614
|
+
## Description
|
|
615
|
+
Brief description of changes and motivation.
|
|
616
|
+
|
|
617
|
+
## Type of Change
|
|
618
|
+
- [ ] Bug fix (non-breaking change fixing an issue)
|
|
619
|
+
- [ ] New feature (non-breaking change adding functionality)
|
|
620
|
+
- [ ] Breaking change (fix or feature causing existing functionality to change)
|
|
621
|
+
- [ ] Documentation update
|
|
622
|
+
|
|
623
|
+
## Testing
|
|
624
|
+
- [ ] Unit tests added/updated
|
|
625
|
+
- [ ] Integration tests added/updated
|
|
626
|
+
- [ ] All tests passing locally
|
|
627
|
+
- [ ] Coverage maintained at 80%+
|
|
628
|
+
|
|
629
|
+
## Checklist
|
|
630
|
+
- [ ] Code follows project style guidelines
|
|
631
|
+
- [ ] Self-review completed
|
|
632
|
+
- [ ] Comments added for complex logic
|
|
633
|
+
- [ ] Documentation updated
|
|
634
|
+
- [ ] No new warnings generated
|
|
635
|
+
- [ ] Dependent changes merged and published
|
|
636
|
+
|
|
637
|
+
## Related Issues
|
|
638
|
+
Closes #123
|
|
639
|
+
Related to #456
|
|
640
|
+
|
|
641
|
+
## Screenshots (if applicable)
|
|
642
|
+
Add screenshots for UI changes.
|
|
643
|
+
|
|
644
|
+
## Additional Context
|
|
645
|
+
Any other relevant information.
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
### Review Process
|
|
649
|
+
|
|
650
|
+
1. **Automated checks** must pass (CI/CD pipeline)
|
|
651
|
+
2. **At least one maintainer** review required
|
|
652
|
+
3. **Address feedback** promptly and professionally
|
|
653
|
+
4. **Squash commits** if requested to maintain clean history
|
|
654
|
+
5. **Update branch** if main has advanced
|
|
655
|
+
|
|
656
|
+
### Merge Criteria
|
|
657
|
+
|
|
658
|
+
PRs will be merged when:
|
|
659
|
+
|
|
660
|
+
- ✅ All CI checks pass
|
|
661
|
+
- ✅ Code review approved by maintainer(s)
|
|
662
|
+
- ✅ Test coverage maintained (80%+)
|
|
663
|
+
- ✅ Documentation updated
|
|
664
|
+
- ✅ No merge conflicts
|
|
665
|
+
- ✅ Conventional commits followed
|
|
666
|
+
|
|
667
|
+
## Testing Guidelines
|
|
668
|
+
|
|
669
|
+
### Unit Tests
|
|
670
|
+
|
|
671
|
+
Test individual functions and classes in isolation:
|
|
672
|
+
|
|
673
|
+
```typescript
|
|
674
|
+
// tests/agents/test-generator.test.ts
|
|
675
|
+
import { TestGeneratorAgent } from '../../src/agents/TestGeneratorAgent';
|
|
676
|
+
|
|
677
|
+
describe('TestGeneratorAgent', () => {
|
|
678
|
+
describe('generateTestSuite', () => {
|
|
679
|
+
it('should generate Jest test suite for simple function', async () => {
|
|
680
|
+
const agent = new TestGeneratorAgent({ framework: 'jest' });
|
|
681
|
+
const sourceCode = `
|
|
682
|
+
export function add(a: number, b: number): number {
|
|
683
|
+
return a + b;
|
|
684
|
+
}
|
|
685
|
+
`;
|
|
686
|
+
|
|
687
|
+
const result = await agent.generateTestSuite(sourceCode);
|
|
688
|
+
|
|
689
|
+
expect(result).toContain('describe');
|
|
690
|
+
expect(result).toContain('it(');
|
|
691
|
+
expect(result).toContain('expect');
|
|
692
|
+
});
|
|
693
|
+
|
|
694
|
+
it('should handle edge cases correctly', async () => {
|
|
695
|
+
// Test edge cases
|
|
696
|
+
});
|
|
697
|
+
|
|
698
|
+
it('should throw ValidationError for invalid input', async () => {
|
|
699
|
+
const agent = new TestGeneratorAgent();
|
|
700
|
+
|
|
701
|
+
await expect(agent.generateTestSuite('')).rejects.toThrow(ValidationError);
|
|
702
|
+
});
|
|
703
|
+
});
|
|
704
|
+
});
|
|
705
|
+
```
|
|
706
|
+
|
|
707
|
+
### Integration Tests
|
|
708
|
+
|
|
709
|
+
Test component interactions and end-to-end workflows:
|
|
710
|
+
|
|
711
|
+
```typescript
|
|
712
|
+
// tests/integration/test-generation-flow.test.ts
|
|
713
|
+
describe('Test Generation Flow', () => {
|
|
714
|
+
it('should generate and execute tests for real project', async () => {
|
|
715
|
+
// Arrange
|
|
716
|
+
const projectPath = '/path/to/sample-project';
|
|
717
|
+
const generator = new TestGeneratorAgent();
|
|
718
|
+
const executor = new TestExecutorAgent();
|
|
719
|
+
|
|
720
|
+
// Act - Generate tests
|
|
721
|
+
const tests = await generator.generateForProject(projectPath);
|
|
722
|
+
|
|
723
|
+
// Act - Execute tests
|
|
724
|
+
const results = await executor.execute(tests);
|
|
725
|
+
|
|
726
|
+
// Assert
|
|
727
|
+
expect(results.passed).toBeGreaterThan(0);
|
|
728
|
+
expect(results.coverage).toBeGreaterThanOrEqual(80);
|
|
729
|
+
});
|
|
730
|
+
});
|
|
731
|
+
```
|
|
732
|
+
|
|
733
|
+
### Test Organization
|
|
734
|
+
|
|
735
|
+
```
|
|
736
|
+
tests/
|
|
737
|
+
├── agents/ # Unit tests for agents
|
|
738
|
+
│ ├── TestGeneratorAgent.test.ts
|
|
739
|
+
│ ├── CoverageAnalyzerAgent.test.ts
|
|
740
|
+
│ └── ...
|
|
741
|
+
├── mcp/ # Unit tests for MCP handlers
|
|
742
|
+
│ ├── test-generate.test.ts
|
|
743
|
+
│ └── test-execute.test.ts
|
|
744
|
+
├── integration/ # Integration tests
|
|
745
|
+
│ ├── test-generation-flow.test.ts
|
|
746
|
+
│ ├── coverage-analysis-flow.test.ts
|
|
747
|
+
│ └── ...
|
|
748
|
+
└── fixtures/ # Test fixtures and mocks
|
|
749
|
+
├── sample-code.ts
|
|
750
|
+
└── mock-data.json
|
|
751
|
+
```
|
|
752
|
+
|
|
753
|
+
### Coverage Expectations
|
|
754
|
+
|
|
755
|
+
- **Overall coverage**: 80%+
|
|
756
|
+
- **Critical paths**: 95%+
|
|
757
|
+
- **New code**: 100% (or justify exceptions)
|
|
758
|
+
- **Edge cases**: Well tested
|
|
759
|
+
|
|
760
|
+
Run coverage report:
|
|
761
|
+
|
|
762
|
+
```bash
|
|
763
|
+
npm run test:coverage
|
|
764
|
+
|
|
765
|
+
# View HTML report
|
|
766
|
+
open coverage/lcov-report/index.html
|
|
767
|
+
```
|
|
768
|
+
|
|
769
|
+
### Mocking Best Practices
|
|
770
|
+
|
|
771
|
+
```typescript
|
|
772
|
+
// Use Jest mocks for external dependencies
|
|
773
|
+
jest.mock('fs/promises', () => ({
|
|
774
|
+
readFile: jest.fn(),
|
|
775
|
+
writeFile: jest.fn(),
|
|
776
|
+
}));
|
|
777
|
+
|
|
778
|
+
// Mock implementations
|
|
779
|
+
const mockReadFile = readFile as jest.MockedFunction<typeof readFile>;
|
|
780
|
+
mockReadFile.mockResolvedValue('file content');
|
|
781
|
+
|
|
782
|
+
// Verify mock calls
|
|
783
|
+
expect(mockReadFile).toHaveBeenCalledWith('/path/to/file', 'utf-8');
|
|
784
|
+
```
|
|
785
|
+
|
|
786
|
+
## Documentation
|
|
787
|
+
|
|
788
|
+
### Code Comments
|
|
789
|
+
|
|
790
|
+
```typescript
|
|
791
|
+
// ✅ Good: Explains WHY, not what
|
|
792
|
+
// Use binary search because array is pre-sorted by timestamp
|
|
793
|
+
const index = binarySearch(items, timestamp);
|
|
794
|
+
|
|
795
|
+
// ❌ Bad: Explains what code already shows
|
|
796
|
+
// Search the array for the timestamp
|
|
797
|
+
const index = binarySearch(items, timestamp);
|
|
798
|
+
|
|
799
|
+
// ✅ Good: Documents complex algorithm
|
|
800
|
+
/**
|
|
801
|
+
* Implements sublinear coverage analysis using probabilistic sampling.
|
|
802
|
+
*
|
|
803
|
+
* Algorithm complexity: O(log n)
|
|
804
|
+
* Memory usage: O(1) for sparse matrices
|
|
805
|
+
*
|
|
806
|
+
* Trade-offs:
|
|
807
|
+
* - 99.9% accuracy with 0.1% false positive rate
|
|
808
|
+
* - 40% faster than full coverage analysis
|
|
809
|
+
* - Suitable for projects with 10K+ test cases
|
|
810
|
+
*/
|
|
811
|
+
```
|
|
812
|
+
|
|
813
|
+
### API Documentation
|
|
814
|
+
|
|
815
|
+
Use JSDoc for all public APIs:
|
|
816
|
+
|
|
817
|
+
```typescript
|
|
818
|
+
/**
|
|
819
|
+
* Analyzes test coverage and identifies gaps using sublinear algorithms.
|
|
820
|
+
*
|
|
821
|
+
* @param options - Configuration options
|
|
822
|
+
* @param options.projectPath - Path to project root
|
|
823
|
+
* @param options.threshold - Minimum coverage threshold (0-100)
|
|
824
|
+
* @param options.algorithms - Sublinear algorithms to use
|
|
825
|
+
* @returns Coverage analysis with gap identification
|
|
826
|
+
* @throws {ValidationError} If project path is invalid
|
|
827
|
+
* @throws {AnalysisError} If coverage analysis fails
|
|
828
|
+
*
|
|
829
|
+
* @example
|
|
830
|
+
* ```typescript
|
|
831
|
+
* const analyzer = new CoverageAnalyzerAgent();
|
|
832
|
+
* const analysis = await analyzer.analyze({
|
|
833
|
+
* projectPath: '/path/to/project',
|
|
834
|
+
* threshold: 80,
|
|
835
|
+
* algorithms: ['binary-search', 'sparse-matrix']
|
|
836
|
+
* });
|
|
837
|
+
*
|
|
838
|
+
* console.log(`Coverage: ${analysis.percentage}%`);
|
|
839
|
+
* console.log(`Gaps: ${analysis.gaps.length}`);
|
|
840
|
+
* ```
|
|
841
|
+
*/
|
|
842
|
+
```
|
|
843
|
+
|
|
844
|
+
### README Updates
|
|
845
|
+
|
|
846
|
+
When adding features, update relevant README sections:
|
|
847
|
+
|
|
848
|
+
- Installation steps if dependencies change
|
|
849
|
+
- Usage examples for new commands
|
|
850
|
+
- Configuration options for new settings
|
|
851
|
+
- Troubleshooting for common issues
|
|
852
|
+
|
|
853
|
+
## Community
|
|
854
|
+
|
|
855
|
+
### Getting Help
|
|
856
|
+
|
|
857
|
+
- **GitHub Discussions**: Ask questions and share ideas
|
|
858
|
+
- **Discord Server**: Real-time chat with maintainers and community
|
|
859
|
+
- **Stack Overflow**: Tag questions with `agentic-qe`
|
|
860
|
+
- **GitHub Issues**: Bug reports and feature requests
|
|
861
|
+
|
|
862
|
+
### Communication Channels
|
|
863
|
+
|
|
864
|
+
- **GitHub Discussions**: https://github.com/agentic-qe/agentic-qe-cf/discussions
|
|
865
|
+
- **Discord**: [Join our server](#) (link TBD)
|
|
866
|
+
- **Twitter**: [@AgenticQE](#) (link TBD)
|
|
867
|
+
- **Blog**: [blog.agentic-qe.dev](#) (link TBD)
|
|
868
|
+
|
|
869
|
+
### Recognition
|
|
870
|
+
|
|
871
|
+
We value all contributions! Contributors are recognized in:
|
|
872
|
+
|
|
873
|
+
- **CONTRIBUTORS.md**: All contributors listed
|
|
874
|
+
- **Release notes**: Significant contributions highlighted
|
|
875
|
+
- **GitHub profile**: Contribution graph and badges
|
|
876
|
+
- **Monthly spotlight**: Featured contributors in blog posts
|
|
877
|
+
|
|
878
|
+
### Mentorship
|
|
879
|
+
|
|
880
|
+
New to open source? We're here to help!
|
|
881
|
+
|
|
882
|
+
- **Good first issues**: Tagged for beginners
|
|
883
|
+
- **Mentorship program**: Pair with experienced contributors
|
|
884
|
+
- **Documentation**: Extensive guides and examples
|
|
885
|
+
- **Code reviews**: Constructive feedback to learn and grow
|
|
886
|
+
|
|
887
|
+
## Questions?
|
|
888
|
+
|
|
889
|
+
Don't hesitate to ask! Open a discussion or reach out to maintainers. We're here to help and excited to have you contribute to Agentic QE.
|
|
890
|
+
|
|
891
|
+
Thank you for contributing! 🎉
|
|
892
|
+
|
|
893
|
+
---
|
|
894
|
+
|
|
895
|
+
**License**: By contributing, you agree that your contributions will be licensed under the project's license.
|
|
896
|
+
|
|
897
|
+
**Attribution**: This contributing guide was inspired by open-source best practices from projects like TypeScript, Jest, and Playwright.
|