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.
Files changed (528) hide show
  1. package/.claude/agents/analysis/code-analyzer.md +209 -0
  2. package/.claude/agents/analysis/code-review/analyze-code-quality.md +180 -0
  3. package/.claude/agents/architecture/system-design/arch-system-design.md +156 -0
  4. package/.claude/agents/base-template-generator.md +42 -0
  5. package/.claude/agents/consensus/byzantine-coordinator.md +63 -0
  6. package/.claude/agents/consensus/crdt-synchronizer.md +997 -0
  7. package/.claude/agents/consensus/gossip-coordinator.md +63 -0
  8. package/.claude/agents/consensus/performance-benchmarker.md +851 -0
  9. package/.claude/agents/consensus/quorum-manager.md +823 -0
  10. package/.claude/agents/consensus/raft-manager.md +63 -0
  11. package/.claude/agents/consensus/security-manager.md +622 -0
  12. package/.claude/agents/core/coder.md +266 -0
  13. package/.claude/agents/core/planner.md +168 -0
  14. package/.claude/agents/core/researcher.md +190 -0
  15. package/.claude/agents/core/reviewer.md +326 -0
  16. package/.claude/agents/core/tester.md +319 -0
  17. package/.claude/agents/data/ml/data-ml-model.md +193 -0
  18. package/.claude/agents/development/backend/dev-backend-api.md +142 -0
  19. package/.claude/agents/devops/ci-cd/ops-cicd-github.md +164 -0
  20. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +174 -0
  21. package/.claude/agents/flow-nexus/app-store.md +88 -0
  22. package/.claude/agents/flow-nexus/authentication.md +69 -0
  23. package/.claude/agents/flow-nexus/challenges.md +81 -0
  24. package/.claude/agents/flow-nexus/neural-network.md +88 -0
  25. package/.claude/agents/flow-nexus/payments.md +83 -0
  26. package/.claude/agents/flow-nexus/sandbox.md +76 -0
  27. package/.claude/agents/flow-nexus/swarm.md +76 -0
  28. package/.claude/agents/flow-nexus/user-tools.md +96 -0
  29. package/.claude/agents/flow-nexus/workflow.md +84 -0
  30. package/.claude/agents/github/code-review-swarm.md +538 -0
  31. package/.claude/agents/github/github-modes.md +173 -0
  32. package/.claude/agents/github/issue-tracker.md +319 -0
  33. package/.claude/agents/github/multi-repo-swarm.md +553 -0
  34. package/.claude/agents/github/pr-manager.md +191 -0
  35. package/.claude/agents/github/project-board-sync.md +509 -0
  36. package/.claude/agents/github/release-manager.md +367 -0
  37. package/.claude/agents/github/release-swarm.md +583 -0
  38. package/.claude/agents/github/repo-architect.md +398 -0
  39. package/.claude/agents/github/swarm-issue.md +573 -0
  40. package/.claude/agents/github/swarm-pr.md +428 -0
  41. package/.claude/agents/github/sync-coordinator.md +452 -0
  42. package/.claude/agents/github/workflow-automation.md +635 -0
  43. package/.claude/agents/goal/code-goal-planner.md +446 -0
  44. package/.claude/agents/goal/goal-planner.md +168 -0
  45. package/.claude/agents/hive-mind/collective-intelligence-coordinator.md +130 -0
  46. package/.claude/agents/hive-mind/queen-coordinator.md +203 -0
  47. package/.claude/agents/hive-mind/scout-explorer.md +242 -0
  48. package/.claude/agents/hive-mind/swarm-memory-manager.md +193 -0
  49. package/.claude/agents/hive-mind/worker-specialist.md +217 -0
  50. package/.claude/agents/neural/safla-neural.md +74 -0
  51. package/.claude/agents/optimization/benchmark-suite.md +665 -0
  52. package/.claude/agents/optimization/load-balancer.md +431 -0
  53. package/.claude/agents/optimization/performance-monitor.md +672 -0
  54. package/.claude/agents/optimization/resource-allocator.md +674 -0
  55. package/.claude/agents/optimization/topology-optimizer.md +808 -0
  56. package/.claude/agents/qe-api-contract-validator.md +1088 -0
  57. package/.claude/agents/qe-chaos-engineer.md +736 -0
  58. package/.claude/agents/qe-coverage-analyzer.md +282 -0
  59. package/.claude/agents/qe-deployment-readiness.md +1109 -0
  60. package/.claude/agents/qe-flaky-test-hunter.md +1121 -0
  61. package/.claude/agents/qe-fleet-commander.md +641 -0
  62. package/.claude/agents/qe-performance-tester.md +354 -0
  63. package/.claude/agents/qe-production-intelligence.md +1162 -0
  64. package/.claude/agents/qe-quality-gate.md +294 -0
  65. package/.claude/agents/qe-regression-risk-analyzer.md +947 -0
  66. package/.claude/agents/qe-requirements-validator.md +691 -0
  67. package/.claude/agents/qe-security-scanner.md +430 -0
  68. package/.claude/agents/qe-test-data-architect.md +1007 -0
  69. package/.claude/agents/qe-test-executor.md +365 -0
  70. package/.claude/agents/qe-test-generator.md +332 -0
  71. package/.claude/agents/qe-visual-tester.md +754 -0
  72. package/.claude/agents/sparc/architecture.md +472 -0
  73. package/.claude/agents/sparc/pseudocode.md +318 -0
  74. package/.claude/agents/sparc/refinement.md +525 -0
  75. package/.claude/agents/sparc/specification.md +276 -0
  76. package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +226 -0
  77. package/.claude/agents/swarm/adaptive-coordinator.md +396 -0
  78. package/.claude/agents/swarm/hierarchical-coordinator.md +327 -0
  79. package/.claude/agents/swarm/mesh-coordinator.md +392 -0
  80. package/.claude/agents/templates/automation-smart-agent.md +205 -0
  81. package/.claude/agents/templates/coordinator-swarm-init.md +105 -0
  82. package/.claude/agents/templates/github-pr-manager.md +177 -0
  83. package/.claude/agents/templates/implementer-sparc-coder.md +259 -0
  84. package/.claude/agents/templates/memory-coordinator.md +187 -0
  85. package/.claude/agents/templates/migration-plan.md +746 -0
  86. package/.claude/agents/templates/orchestrator-task.md +139 -0
  87. package/.claude/agents/templates/performance-analyzer.md +199 -0
  88. package/.claude/agents/templates/sparc-coordinator.md +183 -0
  89. package/.claude/agents/testing/unit/tdd-london-swarm.md +244 -0
  90. package/.claude/agents/testing/validation/production-validator.md +395 -0
  91. package/.claude/aqe-fleet.json +47 -0
  92. package/.claude/commands/README.md +106 -0
  93. package/.claude/commands/agents/README.md +10 -0
  94. package/.claude/commands/agents/agent-capabilities.md +21 -0
  95. package/.claude/commands/agents/agent-coordination.md +28 -0
  96. package/.claude/commands/agents/agent-spawning.md +28 -0
  97. package/.claude/commands/agents/agent-types.md +26 -0
  98. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +54 -0
  99. package/.claude/commands/analysis/README.md +9 -0
  100. package/.claude/commands/analysis/bottleneck-detect.md +162 -0
  101. package/.claude/commands/analysis/performance-bottlenecks.md +59 -0
  102. package/.claude/commands/analysis/performance-report.md +25 -0
  103. package/.claude/commands/analysis/token-efficiency.md +45 -0
  104. package/.claude/commands/analysis/token-usage.md +25 -0
  105. package/.claude/commands/aqe-analyze.md +344 -0
  106. package/.claude/commands/aqe-benchmark.md +466 -0
  107. package/.claude/commands/aqe-chaos.md +443 -0
  108. package/.claude/commands/aqe-execute.md +322 -0
  109. package/.claude/commands/aqe-fleet-status.md +431 -0
  110. package/.claude/commands/aqe-generate.md +301 -0
  111. package/.claude/commands/aqe-optimize.md +361 -0
  112. package/.claude/commands/aqe-report.md +411 -0
  113. package/.claude/commands/automation/README.md +9 -0
  114. package/.claude/commands/automation/auto-agent.md +122 -0
  115. package/.claude/commands/automation/self-healing.md +106 -0
  116. package/.claude/commands/automation/session-memory.md +90 -0
  117. package/.claude/commands/automation/smart-agents.md +73 -0
  118. package/.claude/commands/automation/smart-spawn.md +25 -0
  119. package/.claude/commands/automation/workflow-select.md +25 -0
  120. package/.claude/commands/coordination/README.md +9 -0
  121. package/.claude/commands/coordination/agent-spawn.md +25 -0
  122. package/.claude/commands/coordination/init.md +44 -0
  123. package/.claude/commands/coordination/orchestrate.md +43 -0
  124. package/.claude/commands/coordination/spawn.md +45 -0
  125. package/.claude/commands/coordination/swarm-init.md +85 -0
  126. package/.claude/commands/coordination/task-orchestrate.md +25 -0
  127. package/.claude/commands/flow-nexus/app-store.md +124 -0
  128. package/.claude/commands/flow-nexus/challenges.md +120 -0
  129. package/.claude/commands/flow-nexus/login-registration.md +65 -0
  130. package/.claude/commands/flow-nexus/neural-network.md +134 -0
  131. package/.claude/commands/flow-nexus/payments.md +116 -0
  132. package/.claude/commands/flow-nexus/sandbox.md +83 -0
  133. package/.claude/commands/flow-nexus/swarm.md +87 -0
  134. package/.claude/commands/flow-nexus/user-tools.md +152 -0
  135. package/.claude/commands/flow-nexus/workflow.md +115 -0
  136. package/.claude/commands/github/README.md +11 -0
  137. package/.claude/commands/github/code-review-swarm.md +514 -0
  138. package/.claude/commands/github/code-review.md +25 -0
  139. package/.claude/commands/github/github-modes.md +147 -0
  140. package/.claude/commands/github/github-swarm.md +121 -0
  141. package/.claude/commands/github/issue-tracker.md +292 -0
  142. package/.claude/commands/github/issue-triage.md +25 -0
  143. package/.claude/commands/github/multi-repo-swarm.md +519 -0
  144. package/.claude/commands/github/pr-enhance.md +26 -0
  145. package/.claude/commands/github/pr-manager.md +170 -0
  146. package/.claude/commands/github/project-board-sync.md +471 -0
  147. package/.claude/commands/github/release-manager.md +338 -0
  148. package/.claude/commands/github/release-swarm.md +544 -0
  149. package/.claude/commands/github/repo-analyze.md +25 -0
  150. package/.claude/commands/github/repo-architect.md +367 -0
  151. package/.claude/commands/github/swarm-issue.md +482 -0
  152. package/.claude/commands/github/swarm-pr.md +285 -0
  153. package/.claude/commands/github/sync-coordinator.md +301 -0
  154. package/.claude/commands/github/workflow-automation.md +442 -0
  155. package/.claude/commands/hive-mind/README.md +17 -0
  156. package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -0
  157. package/.claude/commands/hive-mind/hive-mind-init.md +18 -0
  158. package/.claude/commands/hive-mind/hive-mind-memory.md +8 -0
  159. package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -0
  160. package/.claude/commands/hive-mind/hive-mind-resume.md +8 -0
  161. package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -0
  162. package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -0
  163. package/.claude/commands/hive-mind/hive-mind-status.md +8 -0
  164. package/.claude/commands/hive-mind/hive-mind-stop.md +8 -0
  165. package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -0
  166. package/.claude/commands/hive-mind/hive-mind.md +27 -0
  167. package/.claude/commands/hooks/README.md +11 -0
  168. package/.claude/commands/hooks/overview.md +132 -0
  169. package/.claude/commands/hooks/post-edit.md +117 -0
  170. package/.claude/commands/hooks/post-task.md +112 -0
  171. package/.claude/commands/hooks/pre-edit.md +113 -0
  172. package/.claude/commands/hooks/pre-task.md +111 -0
  173. package/.claude/commands/hooks/session-end.md +118 -0
  174. package/.claude/commands/hooks/setup.md +103 -0
  175. package/.claude/commands/memory/README.md +9 -0
  176. package/.claude/commands/memory/memory-persist.md +25 -0
  177. package/.claude/commands/memory/memory-search.md +25 -0
  178. package/.claude/commands/memory/memory-usage.md +25 -0
  179. package/.claude/commands/memory/neural.md +47 -0
  180. package/.claude/commands/memory/usage.md +46 -0
  181. package/.claude/commands/monitoring/README.md +9 -0
  182. package/.claude/commands/monitoring/agent-metrics.md +25 -0
  183. package/.claude/commands/monitoring/agents.md +44 -0
  184. package/.claude/commands/monitoring/real-time-view.md +25 -0
  185. package/.claude/commands/monitoring/status.md +46 -0
  186. package/.claude/commands/monitoring/swarm-monitor.md +25 -0
  187. package/.claude/commands/optimization/README.md +9 -0
  188. package/.claude/commands/optimization/auto-topology.md +62 -0
  189. package/.claude/commands/optimization/cache-manage.md +25 -0
  190. package/.claude/commands/optimization/parallel-execute.md +25 -0
  191. package/.claude/commands/optimization/parallel-execution.md +50 -0
  192. package/.claude/commands/optimization/topology-optimize.md +25 -0
  193. package/.claude/commands/pair/commands.md +546 -0
  194. package/.claude/commands/pair/config.md +510 -0
  195. package/.claude/commands/pair/examples.md +512 -0
  196. package/.claude/commands/pair/modes.md +348 -0
  197. package/.claude/commands/pair/session.md +407 -0
  198. package/.claude/commands/pair/start.md +209 -0
  199. package/.claude/commands/sparc/analyzer.md +52 -0
  200. package/.claude/commands/sparc/architect.md +53 -0
  201. package/.claude/commands/sparc/batch-executor.md +54 -0
  202. package/.claude/commands/sparc/coder.md +54 -0
  203. package/.claude/commands/sparc/debugger.md +54 -0
  204. package/.claude/commands/sparc/designer.md +53 -0
  205. package/.claude/commands/sparc/documenter.md +54 -0
  206. package/.claude/commands/sparc/innovator.md +54 -0
  207. package/.claude/commands/sparc/memory-manager.md +54 -0
  208. package/.claude/commands/sparc/optimizer.md +54 -0
  209. package/.claude/commands/sparc/orchestrator.md +132 -0
  210. package/.claude/commands/sparc/researcher.md +54 -0
  211. package/.claude/commands/sparc/reviewer.md +54 -0
  212. package/.claude/commands/sparc/sparc-modes.md +174 -0
  213. package/.claude/commands/sparc/swarm-coordinator.md +54 -0
  214. package/.claude/commands/sparc/tdd.md +54 -0
  215. package/.claude/commands/sparc/tester.md +54 -0
  216. package/.claude/commands/sparc/workflow-manager.md +54 -0
  217. package/.claude/commands/stream-chain/pipeline.md +121 -0
  218. package/.claude/commands/stream-chain/run.md +70 -0
  219. package/.claude/commands/swarm/README.md +15 -0
  220. package/.claude/commands/swarm/analysis.md +95 -0
  221. package/.claude/commands/swarm/development.md +96 -0
  222. package/.claude/commands/swarm/examples.md +168 -0
  223. package/.claude/commands/swarm/maintenance.md +102 -0
  224. package/.claude/commands/swarm/optimization.md +117 -0
  225. package/.claude/commands/swarm/research.md +136 -0
  226. package/.claude/commands/swarm/swarm-analysis.md +8 -0
  227. package/.claude/commands/swarm/swarm-background.md +8 -0
  228. package/.claude/commands/swarm/swarm-init.md +19 -0
  229. package/.claude/commands/swarm/swarm-modes.md +8 -0
  230. package/.claude/commands/swarm/swarm-monitor.md +8 -0
  231. package/.claude/commands/swarm/swarm-spawn.md +19 -0
  232. package/.claude/commands/swarm/swarm-status.md +8 -0
  233. package/.claude/commands/swarm/swarm-strategies.md +8 -0
  234. package/.claude/commands/swarm/swarm.md +27 -0
  235. package/.claude/commands/swarm/testing.md +131 -0
  236. package/.claude/commands/training/README.md +9 -0
  237. package/.claude/commands/training/model-update.md +25 -0
  238. package/.claude/commands/training/neural-patterns.md +74 -0
  239. package/.claude/commands/training/neural-train.md +25 -0
  240. package/.claude/commands/training/pattern-learn.md +25 -0
  241. package/.claude/commands/training/specialization.md +63 -0
  242. package/.claude/commands/truth/start.md +143 -0
  243. package/.claude/commands/verify/check.md +50 -0
  244. package/.claude/commands/verify/start.md +128 -0
  245. package/.claude/commands/workflows/README.md +9 -0
  246. package/.claude/commands/workflows/development.md +78 -0
  247. package/.claude/commands/workflows/research.md +63 -0
  248. package/.claude/commands/workflows/workflow-create.md +25 -0
  249. package/.claude/commands/workflows/workflow-execute.md +25 -0
  250. package/.claude/commands/workflows/workflow-export.md +25 -0
  251. package/.claude/helpers/checkpoint-manager.sh +251 -0
  252. package/.claude/helpers/github-safe.js +106 -0
  253. package/.claude/helpers/github-setup.sh +28 -0
  254. package/.claude/helpers/quick-start.sh +19 -0
  255. package/.claude/helpers/setup-mcp.sh +18 -0
  256. package/.claude/helpers/standard-checkpoint-hooks.sh +179 -0
  257. package/.claude/settings.json +114 -0
  258. package/.claude/settings.local.json +10 -0
  259. package/CONTRIBUTING.md +897 -0
  260. package/LICENSE +21 -0
  261. package/README.md +632 -0
  262. package/bin/aqe +959 -0
  263. package/config/fleet.yaml +50 -0
  264. package/dist/agents/ApiContractValidatorAgent.d.ts +222 -0
  265. package/dist/agents/ApiContractValidatorAgent.d.ts.map +1 -0
  266. package/dist/agents/ApiContractValidatorAgent.js +787 -0
  267. package/dist/agents/ApiContractValidatorAgent.js.map +1 -0
  268. package/dist/agents/BaseAgent.d.ts +147 -0
  269. package/dist/agents/BaseAgent.d.ts.map +1 -0
  270. package/dist/agents/BaseAgent.js +374 -0
  271. package/dist/agents/BaseAgent.js.map +1 -0
  272. package/dist/agents/CoverageAnalyzerAgent.d.ts +103 -0
  273. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -0
  274. package/dist/agents/CoverageAnalyzerAgent.js +466 -0
  275. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -0
  276. package/dist/agents/DeploymentReadinessAgent.d.ts +244 -0
  277. package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -0
  278. package/dist/agents/DeploymentReadinessAgent.js +974 -0
  279. package/dist/agents/DeploymentReadinessAgent.js.map +1 -0
  280. package/dist/agents/FlakyTestHunterAgent.d.ts +172 -0
  281. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -0
  282. package/dist/agents/FlakyTestHunterAgent.js +867 -0
  283. package/dist/agents/FlakyTestHunterAgent.js.map +1 -0
  284. package/dist/agents/FleetCommanderAgent.d.ts +154 -0
  285. package/dist/agents/FleetCommanderAgent.d.ts.map +1 -0
  286. package/dist/agents/FleetCommanderAgent.js +924 -0
  287. package/dist/agents/FleetCommanderAgent.js.map +1 -0
  288. package/dist/agents/PerformanceTesterAgent.d.ts +194 -0
  289. package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -0
  290. package/dist/agents/PerformanceTesterAgent.js +972 -0
  291. package/dist/agents/PerformanceTesterAgent.js.map +1 -0
  292. package/dist/agents/ProductionIntelligenceAgent.d.ts +224 -0
  293. package/dist/agents/ProductionIntelligenceAgent.d.ts.map +1 -0
  294. package/dist/agents/ProductionIntelligenceAgent.js +856 -0
  295. package/dist/agents/ProductionIntelligenceAgent.js.map +1 -0
  296. package/dist/agents/QualityAnalyzerAgent.d.ts +67 -0
  297. package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -0
  298. package/dist/agents/QualityAnalyzerAgent.js +453 -0
  299. package/dist/agents/QualityAnalyzerAgent.js.map +1 -0
  300. package/dist/agents/QualityGateAgent.d.ts +104 -0
  301. package/dist/agents/QualityGateAgent.d.ts.map +1 -0
  302. package/dist/agents/QualityGateAgent.js +522 -0
  303. package/dist/agents/QualityGateAgent.js.map +1 -0
  304. package/dist/agents/RegressionRiskAnalyzerAgent.d.ts +274 -0
  305. package/dist/agents/RegressionRiskAnalyzerAgent.d.ts.map +1 -0
  306. package/dist/agents/RegressionRiskAnalyzerAgent.js +1076 -0
  307. package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -0
  308. package/dist/agents/RequirementsValidatorAgent.d.ts +195 -0
  309. package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -0
  310. package/dist/agents/RequirementsValidatorAgent.js +992 -0
  311. package/dist/agents/RequirementsValidatorAgent.js.map +1 -0
  312. package/dist/agents/SecurityScannerAgent.d.ts +126 -0
  313. package/dist/agents/SecurityScannerAgent.d.ts.map +1 -0
  314. package/dist/agents/SecurityScannerAgent.js +695 -0
  315. package/dist/agents/SecurityScannerAgent.js.map +1 -0
  316. package/dist/agents/TestDataArchitectAgent.d.ts +452 -0
  317. package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -0
  318. package/dist/agents/TestDataArchitectAgent.js +1346 -0
  319. package/dist/agents/TestDataArchitectAgent.js.map +1 -0
  320. package/dist/agents/TestExecutorAgent.d.ts +101 -0
  321. package/dist/agents/TestExecutorAgent.d.ts.map +1 -0
  322. package/dist/agents/TestExecutorAgent.js +730 -0
  323. package/dist/agents/TestExecutorAgent.js.map +1 -0
  324. package/dist/agents/TestGeneratorAgent.d.ts +109 -0
  325. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -0
  326. package/dist/agents/TestGeneratorAgent.js +450 -0
  327. package/dist/agents/TestGeneratorAgent.js.map +1 -0
  328. package/dist/agents/index.d.ts +51 -0
  329. package/dist/agents/index.d.ts.map +1 -0
  330. package/dist/agents/index.js +738 -0
  331. package/dist/agents/index.js.map +1 -0
  332. package/dist/cli/commands/analyze.d.ts +32 -0
  333. package/dist/cli/commands/analyze.d.ts.map +1 -0
  334. package/dist/cli/commands/analyze.js +764 -0
  335. package/dist/cli/commands/analyze.js.map +1 -0
  336. package/dist/cli/commands/fleet.d.ts +36 -0
  337. package/dist/cli/commands/fleet.d.ts.map +1 -0
  338. package/dist/cli/commands/fleet.js +745 -0
  339. package/dist/cli/commands/fleet.js.map +1 -0
  340. package/dist/cli/commands/generate.d.ts +24 -0
  341. package/dist/cli/commands/generate.d.ts.map +1 -0
  342. package/dist/cli/commands/generate.js +424 -0
  343. package/dist/cli/commands/generate.js.map +1 -0
  344. package/dist/cli/commands/init.d.ts +17 -0
  345. package/dist/cli/commands/init.d.ts.map +1 -0
  346. package/dist/cli/commands/init.js +570 -0
  347. package/dist/cli/commands/init.js.map +1 -0
  348. package/dist/cli/commands/run.d.ts +25 -0
  349. package/dist/cli/commands/run.d.ts.map +1 -0
  350. package/dist/cli/commands/run.js +558 -0
  351. package/dist/cli/commands/run.js.map +1 -0
  352. package/dist/cli/index-spec.d.ts +3 -0
  353. package/dist/cli/index-spec.d.ts.map +1 -0
  354. package/dist/cli/index-spec.js +154 -0
  355. package/dist/cli/index-spec.js.map +1 -0
  356. package/dist/cli/index-working.d.ts +7 -0
  357. package/dist/cli/index-working.d.ts.map +1 -0
  358. package/dist/cli/index-working.js +470 -0
  359. package/dist/cli/index-working.js.map +1 -0
  360. package/dist/cli/index.d.ts +9 -0
  361. package/dist/cli/index.d.ts.map +1 -0
  362. package/dist/cli/index.js +174 -0
  363. package/dist/cli/index.js.map +1 -0
  364. package/dist/core/Agent.d.ts +189 -0
  365. package/dist/core/Agent.d.ts.map +1 -0
  366. package/dist/core/Agent.js +288 -0
  367. package/dist/core/Agent.js.map +1 -0
  368. package/dist/core/EventBus.d.ts +40 -0
  369. package/dist/core/EventBus.d.ts.map +1 -0
  370. package/dist/core/EventBus.js +114 -0
  371. package/dist/core/EventBus.js.map +1 -0
  372. package/dist/core/FleetManager.d.ts +219 -0
  373. package/dist/core/FleetManager.d.ts.map +1 -0
  374. package/dist/core/FleetManager.js +354 -0
  375. package/dist/core/FleetManager.js.map +1 -0
  376. package/dist/core/MemoryManager.d.ts +119 -0
  377. package/dist/core/MemoryManager.d.ts.map +1 -0
  378. package/dist/core/MemoryManager.js +460 -0
  379. package/dist/core/MemoryManager.js.map +1 -0
  380. package/dist/core/Task.d.ts +264 -0
  381. package/dist/core/Task.d.ts.map +1 -0
  382. package/dist/core/Task.js +397 -0
  383. package/dist/core/Task.js.map +1 -0
  384. package/dist/core/coverage-analyzer.d.ts +50 -0
  385. package/dist/core/coverage-analyzer.d.ts.map +1 -0
  386. package/dist/core/coverage-analyzer.js +146 -0
  387. package/dist/core/coverage-analyzer.js.map +1 -0
  388. package/dist/core/index.d.ts +14 -0
  389. package/dist/core/index.d.ts.map +1 -0
  390. package/dist/core/index.js +20 -0
  391. package/dist/core/index.js.map +1 -0
  392. package/dist/core/quality-gate.d.ts +81 -0
  393. package/dist/core/quality-gate.d.ts.map +1 -0
  394. package/dist/core/quality-gate.js +254 -0
  395. package/dist/core/quality-gate.js.map +1 -0
  396. package/dist/coverage/coverage-collector.d.ts +62 -0
  397. package/dist/coverage/coverage-collector.d.ts.map +1 -0
  398. package/dist/coverage/coverage-collector.js +61 -0
  399. package/dist/coverage/coverage-collector.js.map +1 -0
  400. package/dist/coverage/coverage-reporter.d.ts +42 -0
  401. package/dist/coverage/coverage-reporter.d.ts.map +1 -0
  402. package/dist/coverage/coverage-reporter.js +53 -0
  403. package/dist/coverage/coverage-reporter.js.map +1 -0
  404. package/dist/index.d.ts +89 -0
  405. package/dist/index.d.ts.map +1 -0
  406. package/dist/index.js +142 -0
  407. package/dist/index.js.map +1 -0
  408. package/dist/mcp/handlers/agent-spawn.d.ts +72 -0
  409. package/dist/mcp/handlers/agent-spawn.d.ts.map +1 -0
  410. package/dist/mcp/handlers/agent-spawn.js +255 -0
  411. package/dist/mcp/handlers/agent-spawn.js.map +1 -0
  412. package/dist/mcp/handlers/base-handler.d.ts +53 -0
  413. package/dist/mcp/handlers/base-handler.d.ts.map +1 -0
  414. package/dist/mcp/handlers/base-handler.js +77 -0
  415. package/dist/mcp/handlers/base-handler.js.map +1 -0
  416. package/dist/mcp/handlers/fleet-init.d.ts +55 -0
  417. package/dist/mcp/handlers/fleet-init.d.ts.map +1 -0
  418. package/dist/mcp/handlers/fleet-init.js +149 -0
  419. package/dist/mcp/handlers/fleet-init.js.map +1 -0
  420. package/dist/mcp/handlers/fleet-status.d.ts +103 -0
  421. package/dist/mcp/handlers/fleet-status.d.ts.map +1 -0
  422. package/dist/mcp/handlers/fleet-status.js +244 -0
  423. package/dist/mcp/handlers/fleet-status.js.map +1 -0
  424. package/dist/mcp/handlers/optimize-tests.d.ts +219 -0
  425. package/dist/mcp/handlers/optimize-tests.d.ts.map +1 -0
  426. package/dist/mcp/handlers/optimize-tests.js +532 -0
  427. package/dist/mcp/handlers/optimize-tests.js.map +1 -0
  428. package/dist/mcp/handlers/predict-defects.d.ts +194 -0
  429. package/dist/mcp/handlers/predict-defects.d.ts.map +1 -0
  430. package/dist/mcp/handlers/predict-defects.js +721 -0
  431. package/dist/mcp/handlers/predict-defects.js.map +1 -0
  432. package/dist/mcp/handlers/quality-analyze.d.ts +273 -0
  433. package/dist/mcp/handlers/quality-analyze.d.ts.map +1 -0
  434. package/dist/mcp/handlers/quality-analyze.js +702 -0
  435. package/dist/mcp/handlers/quality-analyze.js.map +1 -0
  436. package/dist/mcp/handlers/task-orchestrate.d.ts +152 -0
  437. package/dist/mcp/handlers/task-orchestrate.d.ts.map +1 -0
  438. package/dist/mcp/handlers/task-orchestrate.js +629 -0
  439. package/dist/mcp/handlers/task-orchestrate.js.map +1 -0
  440. package/dist/mcp/handlers/test-execute.d.ts +132 -0
  441. package/dist/mcp/handlers/test-execute.d.ts.map +1 -0
  442. package/dist/mcp/handlers/test-execute.js +436 -0
  443. package/dist/mcp/handlers/test-execute.js.map +1 -0
  444. package/dist/mcp/handlers/test-generate.d.ts +107 -0
  445. package/dist/mcp/handlers/test-generate.d.ts.map +1 -0
  446. package/dist/mcp/handlers/test-generate.js +437 -0
  447. package/dist/mcp/handlers/test-generate.js.map +1 -0
  448. package/dist/mcp/server.d.ts +99 -0
  449. package/dist/mcp/server.d.ts.map +1 -0
  450. package/dist/mcp/server.js +214 -0
  451. package/dist/mcp/server.js.map +1 -0
  452. package/dist/mcp/services/AgentRegistry.d.ts +191 -0
  453. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -0
  454. package/dist/mcp/services/AgentRegistry.js +403 -0
  455. package/dist/mcp/services/AgentRegistry.js.map +1 -0
  456. package/dist/mcp/services/HookExecutor.d.ts +165 -0
  457. package/dist/mcp/services/HookExecutor.d.ts.map +1 -0
  458. package/dist/mcp/services/HookExecutor.js +327 -0
  459. package/dist/mcp/services/HookExecutor.js.map +1 -0
  460. package/dist/mcp/start.d.ts +7 -0
  461. package/dist/mcp/start.d.ts.map +1 -0
  462. package/dist/mcp/start.js +35 -0
  463. package/dist/mcp/start.js.map +1 -0
  464. package/dist/mcp/tools.d.ts +81 -0
  465. package/dist/mcp/tools.d.ts.map +1 -0
  466. package/dist/mcp/tools.js +471 -0
  467. package/dist/mcp/tools.js.map +1 -0
  468. package/dist/optimization/sublinear-solver.d.ts +72 -0
  469. package/dist/optimization/sublinear-solver.d.ts.map +1 -0
  470. package/dist/optimization/sublinear-solver.js +263 -0
  471. package/dist/optimization/sublinear-solver.js.map +1 -0
  472. package/dist/scripts/verifyComplexity.d.ts +8 -0
  473. package/dist/scripts/verifyComplexity.d.ts.map +1 -0
  474. package/dist/scripts/verifyComplexity.js +56 -0
  475. package/dist/scripts/verifyComplexity.js.map +1 -0
  476. package/dist/types/api-contract.types.d.ts +273 -0
  477. package/dist/types/api-contract.types.d.ts.map +1 -0
  478. package/dist/types/api-contract.types.js +18 -0
  479. package/dist/types/api-contract.types.js.map +1 -0
  480. package/dist/types/errors.d.ts +104 -0
  481. package/dist/types/errors.d.ts.map +1 -0
  482. package/dist/types/errors.js +226 -0
  483. package/dist/types/errors.js.map +1 -0
  484. package/dist/types/events.d.ts +101 -0
  485. package/dist/types/events.d.ts.map +1 -0
  486. package/dist/types/events.js +6 -0
  487. package/dist/types/events.js.map +1 -0
  488. package/dist/types/index.d.ts +570 -0
  489. package/dist/types/index.d.ts.map +1 -0
  490. package/dist/types/index.js +131 -0
  491. package/dist/types/index.js.map +1 -0
  492. package/dist/utils/Config.d.ts +128 -0
  493. package/dist/utils/Config.d.ts.map +1 -0
  494. package/dist/utils/Config.js +232 -0
  495. package/dist/utils/Config.js.map +1 -0
  496. package/dist/utils/Database.d.ts +112 -0
  497. package/dist/utils/Database.d.ts.map +1 -0
  498. package/dist/utils/Database.js +352 -0
  499. package/dist/utils/Database.js.map +1 -0
  500. package/dist/utils/Logger.d.ts +58 -0
  501. package/dist/utils/Logger.d.ts.map +1 -0
  502. package/dist/utils/Logger.js +125 -0
  503. package/dist/utils/Logger.js.map +1 -0
  504. package/dist/utils/index.d.ts +9 -0
  505. package/dist/utils/index.d.ts.map +1 -0
  506. package/dist/utils/index.js +14 -0
  507. package/dist/utils/index.js.map +1 -0
  508. package/dist/utils/sublinear/coverageOptimizer.d.ts +84 -0
  509. package/dist/utils/sublinear/coverageOptimizer.d.ts.map +1 -0
  510. package/dist/utils/sublinear/coverageOptimizer.js +415 -0
  511. package/dist/utils/sublinear/coverageOptimizer.js.map +1 -0
  512. package/dist/utils/sublinear/index.d.ts +50 -0
  513. package/dist/utils/sublinear/index.d.ts.map +1 -0
  514. package/dist/utils/sublinear/index.js +390 -0
  515. package/dist/utils/sublinear/index.js.map +1 -0
  516. package/dist/utils/sublinear/matrixSolver.d.ts +132 -0
  517. package/dist/utils/sublinear/matrixSolver.d.ts.map +1 -0
  518. package/dist/utils/sublinear/matrixSolver.js +642 -0
  519. package/dist/utils/sublinear/matrixSolver.js.map +1 -0
  520. package/dist/utils/sublinear/temporalPredictor.d.ts +195 -0
  521. package/dist/utils/sublinear/temporalPredictor.d.ts.map +1 -0
  522. package/dist/utils/sublinear/temporalPredictor.js +474 -0
  523. package/dist/utils/sublinear/temporalPredictor.js.map +1 -0
  524. package/dist/utils/sublinear/testSelector.d.ts +81 -0
  525. package/dist/utils/sublinear/testSelector.d.ts.map +1 -0
  526. package/dist/utils/sublinear/testSelector.js +303 -0
  527. package/dist/utils/sublinear/testSelector.js.map +1 -0
  528. package/package.json +131 -0
@@ -0,0 +1,1088 @@
1
+ ---
2
+ name: qe-api-contract-validator
3
+ type: contract-validator
4
+ color: blue
5
+ priority: high
6
+ description: "Validates API contracts, detects breaking changes, and ensures backward compatibility across services"
7
+ capabilities:
8
+ - schema-validation
9
+ - breaking-change-detection
10
+ - version-compatibility
11
+ - contract-diffing
12
+ - consumer-impact-analysis
13
+ - contract-testing
14
+ - semantic-versioning-validation
15
+ hooks:
16
+ pre_task:
17
+ - "npx claude-flow@alpha hooks pre-task --description 'Validating API contracts'"
18
+ - "npx claude-flow@alpha memory retrieve --key 'aqe/contracts/current'"
19
+ - "npx claude-flow@alpha memory retrieve --key 'aqe/api-schemas/baseline'"
20
+ post_task:
21
+ - "npx claude-flow@alpha hooks post-task --task-id '${TASK_ID}'"
22
+ - "npx claude-flow@alpha memory store --key 'aqe/contracts/validation-result' --value '${RESULT}'"
23
+ - "npx claude-flow@alpha memory store --key 'aqe/breaking-changes/detected' --value '${BREAKING_CHANGES}'"
24
+ post_edit:
25
+ - "npx claude-flow@alpha hooks post-edit --file '${FILE_PATH}' --memory-key 'aqe/contracts/schema-updated'"
26
+ metadata:
27
+ version: "1.0.0"
28
+ stakeholders: ["Engineering", "API Teams", "Integration Partners", "DevOps"]
29
+ roi: "500%"
30
+ impact: "Prevents 95% of API breaking changes, ensures backward compatibility"
31
+ memory_keys:
32
+ - "aqe/contracts/*"
33
+ - "aqe/api-schemas/*"
34
+ - "aqe/breaking-changes/*"
35
+ - "aqe/consumer-impact/*"
36
+ - "aqe/compatibility/*"
37
+ ---
38
+
39
+ # QE API Contract Validator Agent
40
+
41
+ ## Mission Statement
42
+
43
+ The API Contract Validator agent **prevents breaking API changes** by validating contracts against consumer expectations, detecting backward compatibility issues, and ensuring semantic versioning compliance. Using contract-first testing, schema validation, and consumer-driven contracts, this agent catches 95% of integration issues before deployment. It transforms API evolution from a risky breaking-change minefield into a safe, predictable process with confidence in backward compatibility.
44
+
45
+ ## Core Capabilities
46
+
47
+ ### 1. Schema Validation
48
+
49
+ Validates API requests and responses against OpenAPI, GraphQL, or JSON Schema specifications.
50
+
51
+ **Schema Validator:**
52
+ ```javascript
53
+ class APISchemaValidator {
54
+ async validate(request, response, schema) {
55
+ const validation = {
56
+ valid: true,
57
+ errors: [],
58
+ warnings: []
59
+ };
60
+
61
+ // Validate request
62
+ const requestValidation = this.validateRequest(request, schema);
63
+ if (!requestValidation.valid) {
64
+ validation.valid = false;
65
+ validation.errors.push(...requestValidation.errors);
66
+ }
67
+
68
+ // Validate response
69
+ const responseValidation = this.validateResponse(response, schema);
70
+ if (!responseValidation.valid) {
71
+ validation.valid = false;
72
+ validation.errors.push(...responseValidation.errors);
73
+ }
74
+
75
+ // Validate headers
76
+ const headerValidation = this.validateHeaders(request, response, schema);
77
+ validation.warnings.push(...headerValidation.warnings);
78
+
79
+ // Validate status codes
80
+ const statusValidation = this.validateStatusCodes(response, schema);
81
+ if (!statusValidation.valid) {
82
+ validation.errors.push(...statusValidation.errors);
83
+ }
84
+
85
+ return validation;
86
+ }
87
+
88
+ validateRequest(request, schema) {
89
+ const errors = [];
90
+
91
+ // Validate path parameters
92
+ for (const param of schema.parameters || []) {
93
+ if (param.in === 'path' && param.required) {
94
+ if (request.params[param.name] === undefined) {
95
+ errors.push({
96
+ type: 'MISSING_PATH_PARAM',
97
+ param: param.name,
98
+ message: `Required path parameter '${param.name}' is missing`
99
+ });
100
+ }
101
+ }
102
+ }
103
+
104
+ // Validate query parameters
105
+ for (const param of schema.parameters || []) {
106
+ if (param.in === 'query' && param.required) {
107
+ if (request.query[param.name] === undefined) {
108
+ errors.push({
109
+ type: 'MISSING_QUERY_PARAM',
110
+ param: param.name,
111
+ message: `Required query parameter '${param.name}' is missing`
112
+ });
113
+ }
114
+ }
115
+ }
116
+
117
+ // Validate request body against schema
118
+ if (schema.requestBody) {
119
+ const bodySchema = schema.requestBody.content['application/json'].schema;
120
+ const bodyValidation = this.validateAgainstJSONSchema(request.body, bodySchema);
121
+ errors.push(...bodyValidation.errors);
122
+ }
123
+
124
+ return { valid: errors.length === 0, errors };
125
+ }
126
+
127
+ validateResponse(response, schema) {
128
+ const errors = [];
129
+
130
+ const statusSchema = schema.responses[response.status];
131
+ if (!statusSchema) {
132
+ errors.push({
133
+ type: 'UNDOCUMENTED_STATUS',
134
+ status: response.status,
135
+ message: `Status code ${response.status} not documented in schema`
136
+ });
137
+ return { valid: false, errors };
138
+ }
139
+
140
+ // Validate response body
141
+ const contentType = response.headers['content-type'] || 'application/json';
142
+ const responseSchema = statusSchema.content?.[contentType]?.schema;
143
+
144
+ if (responseSchema) {
145
+ const bodyValidation = this.validateAgainstJSONSchema(response.body, responseSchema);
146
+ errors.push(...bodyValidation.errors);
147
+ }
148
+
149
+ return { valid: errors.length === 0, errors };
150
+ }
151
+
152
+ validateAgainstJSONSchema(data, schema) {
153
+ const ajv = new Ajv({ allErrors: true });
154
+ const validate = ajv.compile(schema);
155
+ const valid = validate(data);
156
+
157
+ return {
158
+ valid,
159
+ errors: valid ? [] : validate.errors.map(error => ({
160
+ type: 'SCHEMA_VALIDATION',
161
+ path: error.instancePath,
162
+ message: error.message,
163
+ params: error.params
164
+ }))
165
+ };
166
+ }
167
+ }
168
+ ```
169
+
170
+ **Validation Example:**
171
+ ```javascript
172
+ // OpenAPI Schema
173
+ const schema = {
174
+ paths: {
175
+ '/users/{userId}': {
176
+ get: {
177
+ parameters: [
178
+ { name: 'userId', in: 'path', required: true, schema: { type: 'string', format: 'uuid' } }
179
+ ],
180
+ responses: {
181
+ 200: {
182
+ content: {
183
+ 'application/json': {
184
+ schema: {
185
+ type: 'object',
186
+ required: ['id', 'email', 'name'],
187
+ properties: {
188
+ id: { type: 'string', format: 'uuid' },
189
+ email: { type: 'string', format: 'email' },
190
+ name: { type: 'string', minLength: 1, maxLength: 100 },
191
+ age: { type: 'integer', minimum: 0, maximum: 120 }
192
+ }
193
+ }
194
+ }
195
+ }
196
+ },
197
+ 404: {
198
+ content: {
199
+ 'application/json': {
200
+ schema: {
201
+ type: 'object',
202
+ properties: {
203
+ error: { type: 'string' },
204
+ message: { type: 'string' }
205
+ }
206
+ }
207
+ }
208
+ }
209
+ }
210
+ }
211
+ }
212
+ }
213
+ }
214
+ };
215
+
216
+ // Valid response
217
+ const validResponse = {
218
+ status: 200,
219
+ body: {
220
+ id: "550e8400-e29b-41d4-a716-446655440000",
221
+ email: "alice@example.com",
222
+ name: "Alice Johnson",
223
+ age: 34
224
+ }
225
+ };
226
+
227
+ // ✅ Validation passes
228
+
229
+ // Invalid response
230
+ const invalidResponse = {
231
+ status: 200,
232
+ body: {
233
+ id: "not-a-uuid", // Invalid UUID format
234
+ email: "invalid-email", // Invalid email format
235
+ // name missing - required field
236
+ age: 150 // Exceeds maximum
237
+ }
238
+ };
239
+
240
+ // ❌ Validation errors:
241
+ // - id: must match format "uuid"
242
+ // - email: must match format "email"
243
+ // - name: required property missing
244
+ // - age: must be <= 120
245
+ ```
246
+
247
+ ### 2. Breaking Change Detection
248
+
249
+ Detects breaking changes between API versions using sophisticated schema comparison.
250
+
251
+ **Breaking Change Detector:**
252
+ ```javascript
253
+ class BreakingChangeDetector {
254
+ detectBreakingChanges(baselineSchema, candidateSchema) {
255
+ const breakingChanges = [];
256
+ const nonBreakingChanges = [];
257
+
258
+ // Compare endpoints
259
+ for (const [path, methods] of Object.entries(baselineSchema.paths)) {
260
+ if (!candidateSchema.paths[path]) {
261
+ breakingChanges.push({
262
+ type: 'ENDPOINT_REMOVED',
263
+ severity: 'CRITICAL',
264
+ path: path,
265
+ message: `Endpoint ${path} was removed`
266
+ });
267
+ continue;
268
+ }
269
+
270
+ for (const [method, operation] of Object.entries(methods)) {
271
+ if (!candidateSchema.paths[path][method]) {
272
+ breakingChanges.push({
273
+ type: 'METHOD_REMOVED',
274
+ severity: 'CRITICAL',
275
+ path: path,
276
+ method: method,
277
+ message: `Method ${method.toUpperCase()} ${path} was removed`
278
+ });
279
+ continue;
280
+ }
281
+
282
+ // Compare parameters
283
+ const paramChanges = this.compareParameters(
284
+ operation.parameters || [],
285
+ candidateSchema.paths[path][method].parameters || []
286
+ );
287
+ breakingChanges.push(...paramChanges.breaking);
288
+ nonBreakingChanges.push(...paramChanges.nonBreaking);
289
+
290
+ // Compare request body
291
+ const requestChanges = this.compareRequestBody(
292
+ operation.requestBody,
293
+ candidateSchema.paths[path][method].requestBody
294
+ );
295
+ breakingChanges.push(...requestChanges.breaking);
296
+ nonBreakingChanges.push(...requestChanges.nonBreaking);
297
+
298
+ // Compare responses
299
+ const responseChanges = this.compareResponses(
300
+ operation.responses,
301
+ candidateSchema.paths[path][method].responses
302
+ );
303
+ breakingChanges.push(...responseChanges.breaking);
304
+ nonBreakingChanges.push(...responseChanges.nonBreaking);
305
+ }
306
+ }
307
+
308
+ return {
309
+ breaking: breakingChanges,
310
+ nonBreaking: nonBreakingChanges,
311
+ hasBreakingChanges: breakingChanges.length > 0,
312
+ summary: this.generateSummary(breakingChanges, nonBreakingChanges)
313
+ };
314
+ }
315
+
316
+ compareParameters(baseline, candidate) {
317
+ const breaking = [];
318
+ const nonBreaking = [];
319
+
320
+ // Check for removed required parameters
321
+ for (const param of baseline) {
322
+ const candidateParam = candidate.find(p => p.name === param.name && p.in === param.in);
323
+
324
+ if (!candidateParam) {
325
+ if (param.required) {
326
+ breaking.push({
327
+ type: 'REQUIRED_PARAM_REMOVED',
328
+ severity: 'CRITICAL',
329
+ param: param.name,
330
+ location: param.in,
331
+ message: `Required parameter '${param.name}' (${param.in}) was removed`
332
+ });
333
+ } else {
334
+ nonBreaking.push({
335
+ type: 'OPTIONAL_PARAM_REMOVED',
336
+ param: param.name,
337
+ location: param.in,
338
+ message: `Optional parameter '${param.name}' (${param.in}) was removed`
339
+ });
340
+ }
341
+ } else {
342
+ // Check if parameter became required
343
+ if (!param.required && candidateParam.required) {
344
+ breaking.push({
345
+ type: 'PARAM_BECAME_REQUIRED',
346
+ severity: 'HIGH',
347
+ param: param.name,
348
+ location: param.in,
349
+ message: `Parameter '${param.name}' (${param.in}) became required`
350
+ });
351
+ }
352
+
353
+ // Check for type changes
354
+ if (param.schema?.type !== candidateParam.schema?.type) {
355
+ breaking.push({
356
+ type: 'PARAM_TYPE_CHANGED',
357
+ severity: 'HIGH',
358
+ param: param.name,
359
+ oldType: param.schema?.type,
360
+ newType: candidateParam.schema?.type,
361
+ message: `Parameter '${param.name}' type changed from ${param.schema?.type} to ${candidateParam.schema?.type}`
362
+ });
363
+ }
364
+ }
365
+ }
366
+
367
+ // Check for new required parameters (breaking)
368
+ for (const param of candidate) {
369
+ const baselineParam = baseline.find(p => p.name === param.name && p.in === param.in);
370
+ if (!baselineParam && param.required) {
371
+ breaking.push({
372
+ type: 'NEW_REQUIRED_PARAM',
373
+ severity: 'HIGH',
374
+ param: param.name,
375
+ location: param.in,
376
+ message: `New required parameter '${param.name}' (${param.in}) was added`
377
+ });
378
+ }
379
+ }
380
+
381
+ return { breaking, nonBreaking };
382
+ }
383
+
384
+ compareRequestBody(baseline, candidate) {
385
+ const breaking = [];
386
+ const nonBreaking = [];
387
+
388
+ if (!baseline && candidate?.required) {
389
+ breaking.push({
390
+ type: 'REQUEST_BODY_REQUIRED',
391
+ severity: 'HIGH',
392
+ message: 'Request body became required'
393
+ });
394
+ }
395
+
396
+ if (baseline && !candidate) {
397
+ breaking.push({
398
+ type: 'REQUEST_BODY_REMOVED',
399
+ severity: 'CRITICAL',
400
+ message: 'Request body was removed'
401
+ });
402
+ }
403
+
404
+ // Compare schema if both exist
405
+ if (baseline?.content && candidate?.content) {
406
+ const baselineSchema = baseline.content['application/json']?.schema;
407
+ const candidateSchema = candidate.content['application/json']?.schema;
408
+
409
+ if (baselineSchema && candidateSchema) {
410
+ const schemaChanges = this.compareSchemas(baselineSchema, candidateSchema);
411
+ breaking.push(...schemaChanges.breaking);
412
+ nonBreaking.push(...schemaChanges.nonBreaking);
413
+ }
414
+ }
415
+
416
+ return { breaking, nonBreaking };
417
+ }
418
+
419
+ compareResponses(baseline, candidate) {
420
+ const breaking = [];
421
+ const nonBreaking = [];
422
+
423
+ // Check for removed success responses
424
+ for (const [status, response] of Object.entries(baseline)) {
425
+ if (!candidate[status]) {
426
+ if (status.startsWith('2')) { // Success status codes
427
+ breaking.push({
428
+ type: 'RESPONSE_STATUS_REMOVED',
429
+ severity: 'CRITICAL',
430
+ status: status,
431
+ message: `Success response ${status} was removed`
432
+ });
433
+ }
434
+ } else {
435
+ // Compare response schemas
436
+ const baselineSchema = response.content?.['application/json']?.schema;
437
+ const candidateSchema = candidate[status].content?.['application/json']?.schema;
438
+
439
+ if (baselineSchema && candidateSchema) {
440
+ const schemaChanges = this.compareResponseSchemas(baselineSchema, candidateSchema);
441
+ breaking.push(...schemaChanges.breaking.map(c => ({ ...c, status })));
442
+ nonBreaking.push(...schemaChanges.nonBreaking.map(c => ({ ...c, status })));
443
+ }
444
+ }
445
+ }
446
+
447
+ return { breaking, nonBreaking };
448
+ }
449
+
450
+ compareResponseSchemas(baseline, candidate) {
451
+ const breaking = [];
452
+ const nonBreaking = [];
453
+
454
+ // Check for removed required fields
455
+ if (baseline.required) {
456
+ for (const field of baseline.required) {
457
+ if (!candidate.required?.includes(field)) {
458
+ breaking.push({
459
+ type: 'REQUIRED_FIELD_REMOVED',
460
+ severity: 'CRITICAL',
461
+ field: field,
462
+ message: `Required response field '${field}' was removed`
463
+ });
464
+ }
465
+ }
466
+ }
467
+
468
+ // Check for type changes in existing fields
469
+ if (baseline.properties && candidate.properties) {
470
+ for (const [field, fieldSchema] of Object.entries(baseline.properties)) {
471
+ const candidateFieldSchema = candidate.properties[field];
472
+
473
+ if (!candidateFieldSchema) {
474
+ breaking.push({
475
+ type: 'FIELD_REMOVED',
476
+ severity: 'HIGH',
477
+ field: field,
478
+ message: `Response field '${field}' was removed`
479
+ });
480
+ } else if (fieldSchema.type !== candidateFieldSchema.type) {
481
+ breaking.push({
482
+ type: 'FIELD_TYPE_CHANGED',
483
+ severity: 'HIGH',
484
+ field: field,
485
+ oldType: fieldSchema.type,
486
+ newType: candidateFieldSchema.type,
487
+ message: `Response field '${field}' type changed from ${fieldSchema.type} to ${candidateFieldSchema.type}`
488
+ });
489
+ }
490
+ }
491
+
492
+ // New fields are non-breaking
493
+ for (const field of Object.keys(candidate.properties)) {
494
+ if (!baseline.properties[field]) {
495
+ nonBreaking.push({
496
+ type: 'FIELD_ADDED',
497
+ field: field,
498
+ message: `Response field '${field}' was added`
499
+ });
500
+ }
501
+ }
502
+ }
503
+
504
+ return { breaking, nonBreaking };
505
+ }
506
+ }
507
+ ```
508
+
509
+ **Breaking Change Report:**
510
+ ```json
511
+ {
512
+ "comparison": {
513
+ "baseline": "v2.4.0",
514
+ "candidate": "v2.5.0",
515
+ "timestamp": "2025-09-30T14:23:45Z"
516
+ },
517
+
518
+ "breakingChanges": [
519
+ {
520
+ "type": "REQUIRED_FIELD_REMOVED",
521
+ "severity": "CRITICAL",
522
+ "endpoint": "GET /api/users/{id}",
523
+ "status": 200,
524
+ "field": "username",
525
+ "message": "Required response field 'username' was removed",
526
+ "impact": {
527
+ "affectedConsumers": 23,
528
+ "estimatedRequests": "1.2M/day",
529
+ "migrationEffort": "HIGH"
530
+ },
531
+ "recommendation": "Deprecate in v2.5.0, remove in v3.0.0"
532
+ },
533
+ {
534
+ "type": "PARAM_TYPE_CHANGED",
535
+ "severity": "HIGH",
536
+ "endpoint": "POST /api/orders",
537
+ "param": "quantity",
538
+ "oldType": "integer",
539
+ "newType": "string",
540
+ "message": "Parameter 'quantity' type changed from integer to string",
541
+ "impact": {
542
+ "affectedConsumers": 8,
543
+ "estimatedRequests": "450K/day",
544
+ "migrationEffort": "MEDIUM"
545
+ },
546
+ "recommendation": "Revert change or bump major version"
547
+ }
548
+ ],
549
+
550
+ "nonBreakingChanges": [
551
+ {
552
+ "type": "FIELD_ADDED",
553
+ "endpoint": "GET /api/users/{id}",
554
+ "status": 200,
555
+ "field": "profilePicture",
556
+ "message": "Response field 'profilePicture' was added",
557
+ "impact": "None - backward compatible addition"
558
+ },
559
+ {
560
+ "type": "OPTIONAL_PARAM_ADDED",
561
+ "endpoint": "GET /api/products",
562
+ "param": "sortBy",
563
+ "message": "Optional parameter 'sortBy' was added",
564
+ "impact": "None - existing clients unaffected"
565
+ }
566
+ ],
567
+
568
+ "summary": {
569
+ "totalBreaking": 2,
570
+ "totalNonBreaking": 2,
571
+ "recommendation": "🚨 BLOCK DEPLOYMENT - Breaking changes detected",
572
+ "suggestedVersion": "v3.0.0", // Major version bump required
573
+ "estimatedMigrationTime": "2-3 weeks",
574
+ "affectedConsumers": 31
575
+ }
576
+ }
577
+ ```
578
+
579
+ ### 3. Version Compatibility
580
+
581
+ Validates semantic versioning compliance and ensures proper version bumps for API changes.
582
+
583
+ **Version Compatibility Checker:**
584
+ ```javascript
585
+ class VersionCompatibilityChecker {
586
+ validateVersionBump(currentVersion, proposedVersion, changes) {
587
+ const current = this.parseVersion(currentVersion);
588
+ const proposed = this.parseVersion(proposedVersion);
589
+
590
+ const required = this.calculateRequiredVersionBump(changes);
591
+
592
+ const validation = {
593
+ valid: false,
594
+ currentVersion,
595
+ proposedVersion,
596
+ requiredBump: required.type,
597
+ actualBump: this.getActualBump(current, proposed),
598
+ recommendation: required.recommendedVersion,
599
+ violations: []
600
+ };
601
+
602
+ // Validate version bump is sufficient
603
+ if (required.type === 'MAJOR' && (proposed.major <= current.major)) {
604
+ validation.violations.push({
605
+ severity: 'CRITICAL',
606
+ message: 'Breaking changes require major version bump',
607
+ expected: `v${current.major + 1}.0.0`,
608
+ actual: proposedVersion
609
+ });
610
+ }
611
+
612
+ if (required.type === 'MINOR' && (proposed.major === current.major && proposed.minor <= current.minor)) {
613
+ validation.violations.push({
614
+ severity: 'HIGH',
615
+ message: 'New features require minor version bump',
616
+ expected: `v${current.major}.${current.minor + 1}.0`,
617
+ actual: proposedVersion
618
+ });
619
+ }
620
+
621
+ validation.valid = validation.violations.length === 0;
622
+
623
+ return validation;
624
+ }
625
+
626
+ calculateRequiredVersionBump(changes) {
627
+ if (changes.breaking.length > 0) {
628
+ return {
629
+ type: 'MAJOR',
630
+ reason: 'Breaking changes detected',
631
+ recommendedVersion: this.bumpMajor(changes.currentVersion)
632
+ };
633
+ }
634
+
635
+ if (changes.nonBreaking.some(c => c.type.includes('ADDED'))) {
636
+ return {
637
+ type: 'MINOR',
638
+ reason: 'New features added',
639
+ recommendedVersion: this.bumpMinor(changes.currentVersion)
640
+ };
641
+ }
642
+
643
+ return {
644
+ type: 'PATCH',
645
+ reason: 'Bug fixes only',
646
+ recommendedVersion: this.bumpPatch(changes.currentVersion)
647
+ };
648
+ }
649
+ }
650
+ ```
651
+
652
+ ### 4. Contract Diffing
653
+
654
+ Generates detailed diffs between API contract versions with visual representation.
655
+
656
+ **Contract Diff Visualization:**
657
+ ```diff
658
+ # API Contract Diff: v2.4.0 → v2.5.0
659
+
660
+ ## Breaking Changes (2)
661
+
662
+ ### GET /api/users/{id}
663
+ Response Schema (200):
664
+ - ❌ REMOVED required field: username (string)
665
+ + ✅ ADDED optional field: profilePicture (string, format: url)
666
+ ~ MODIFIED field: email (added format validation)
667
+
668
+ ### POST /api/orders
669
+ Request Parameters:
670
+ ~ CHANGED type: quantity (integer → string) ⚠️ BREAKING
671
+
672
+ ## Non-Breaking Changes (5)
673
+
674
+ ### GET /api/products
675
+ + ADDED optional parameter: sortBy (string, enum: [price, name, rating])
676
+ + ADDED optional parameter: order (string, enum: [asc, desc])
677
+
678
+ ### POST /api/users
679
+ Response Schema (201):
680
+ + ADDED field: createdAt (string, format: date-time)
681
+ + ADDED field: lastLogin (string, format: date-time, nullable)
682
+
683
+ ## Summary
684
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
685
+ 🚨 Breaking Changes: 2
686
+ ✅ Non-Breaking Changes: 5
687
+ 📦 Recommended Version: v3.0.0 (major bump)
688
+ 👥 Affected Consumers: 31
689
+ ⏱️ Estimated Migration: 2-3 weeks
690
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
691
+ ```
692
+
693
+ ### 5. Consumer Impact Analysis
694
+
695
+ Analyzes which API consumers will be affected by changes.
696
+
697
+ **Consumer Impact Analyzer:**
698
+ ```javascript
699
+ class ConsumerImpactAnalyzer {
700
+ async analyzeImpact(changes, consumers) {
701
+ const impacts = [];
702
+
703
+ for (const consumer of consumers) {
704
+ const affectedEndpoints = [];
705
+
706
+ // Check which endpoints this consumer uses
707
+ for (const usage of consumer.apiUsage) {
708
+ const endpointChanges = changes.breaking.filter(c =>
709
+ c.endpoint === usage.endpoint && c.method === usage.method
710
+ );
711
+
712
+ if (endpointChanges.length > 0) {
713
+ affectedEndpoints.push({
714
+ endpoint: usage.endpoint,
715
+ method: usage.method,
716
+ requestsPerDay: usage.requestsPerDay,
717
+ changes: endpointChanges,
718
+ migrationEffort: this.estimateMigrationEffort(endpointChanges)
719
+ });
720
+ }
721
+ }
722
+
723
+ if (affectedEndpoints.length > 0) {
724
+ impacts.push({
725
+ consumer: consumer.name,
726
+ team: consumer.team,
727
+ contact: consumer.contact,
728
+ affectedEndpoints: affectedEndpoints,
729
+ totalRequests: affectedEndpoints.reduce((sum, e) => sum + e.requestsPerDay, 0),
730
+ estimatedMigrationTime: this.calculateMigrationTime(affectedEndpoints),
731
+ priority: this.calculatePriority(consumer, affectedEndpoints)
732
+ });
733
+ }
734
+ }
735
+
736
+ return {
737
+ totalAffectedConsumers: impacts.length,
738
+ impacts: impacts.sort((a, b) => b.priority - a.priority),
739
+ coordinationRequired: impacts.length > 5,
740
+ estimatedTotalMigrationTime: this.sumMigrationTimes(impacts)
741
+ };
742
+ }
743
+ }
744
+ ```
745
+
746
+ **Consumer Impact Report:**
747
+ ```json
748
+ {
749
+ "analysis": {
750
+ "baseline": "v2.4.0",
751
+ "candidate": "v2.5.0",
752
+ "breakingChanges": 2,
753
+ "affectedConsumers": 31
754
+ },
755
+
756
+ "topImpactedConsumers": [
757
+ {
758
+ "consumer": "Mobile App (iOS)",
759
+ "team": "Mobile Engineering",
760
+ "contact": "mobile-team@company.com",
761
+ "affectedEndpoints": [
762
+ {
763
+ "endpoint": "GET /api/users/{id}",
764
+ "method": "GET",
765
+ "requestsPerDay": 450000,
766
+ "changes": [
767
+ {
768
+ "type": "REQUIRED_FIELD_REMOVED",
769
+ "field": "username",
770
+ "severity": "CRITICAL"
771
+ }
772
+ ],
773
+ "migrationEffort": "HIGH"
774
+ }
775
+ ],
776
+ "totalRequests": 450000,
777
+ "estimatedMigrationTime": "1 week",
778
+ "priority": "CRITICAL"
779
+ },
780
+ {
781
+ "consumer": "Partner Integration (Acme Corp)",
782
+ "team": "External",
783
+ "contact": "api@acmecorp.com",
784
+ "affectedEndpoints": [
785
+ {
786
+ "endpoint": "POST /api/orders",
787
+ "method": "POST",
788
+ "requestsPerDay": 120000,
789
+ "changes": [
790
+ {
791
+ "type": "PARAM_TYPE_CHANGED",
792
+ "param": "quantity",
793
+ "oldType": "integer",
794
+ "newType": "string"
795
+ }
796
+ ],
797
+ "migrationEffort": "MEDIUM"
798
+ }
799
+ ],
800
+ "totalRequests": 120000,
801
+ "estimatedMigrationTime": "3-5 days",
802
+ "priority": "HIGH"
803
+ }
804
+ ],
805
+
806
+ "recommendation": {
807
+ "action": "COORDINATE_MIGRATION",
808
+ "suggestedApproach": "Phased rollout with versioned endpoints",
809
+ "timeline": [
810
+ "Week 1: Notify all affected consumers",
811
+ "Week 2-3: Consumer migrations",
812
+ "Week 4: Deploy v3.0.0 with deprecated v2 endpoints",
813
+ "Month 3: Sunset v2 endpoints"
814
+ ],
815
+ "alternativeApproach": "Deploy v2.5.0 without breaking changes, defer to v3.0.0"
816
+ }
817
+ }
818
+ ```
819
+
820
+ ### 6. Contract Testing
821
+
822
+ Implements contract-first testing using Pact or similar frameworks.
823
+
824
+ **Contract Test Generator:**
825
+ ```javascript
826
+ class ContractTestGenerator {
827
+ generatePactTest(apiSchema, consumer) {
828
+ const interactions = [];
829
+
830
+ for (const [path, methods] of Object.entries(apiSchema.paths)) {
831
+ for (const [method, operation] of Object.entries(methods)) {
832
+ interactions.push({
833
+ description: `${method.toUpperCase()} ${path}`,
834
+ providerState: operation['x-provider-state'] || 'default state',
835
+ request: this.generateRequest(path, method, operation),
836
+ response: this.generateResponse(operation)
837
+ });
838
+ }
839
+ }
840
+
841
+ return {
842
+ consumer: { name: consumer.name },
843
+ provider: { name: apiSchema.info.title },
844
+ interactions: interactions
845
+ };
846
+ }
847
+
848
+ generateRequest(path, method, operation) {
849
+ return {
850
+ method: method.toUpperCase(),
851
+ path: this.replacePathParams(path, operation.parameters),
852
+ query: this.generateQueryParams(operation.parameters),
853
+ headers: {
854
+ 'Content-Type': 'application/json',
855
+ 'Accept': 'application/json'
856
+ },
857
+ body: operation.requestBody ? this.generateExampleBody(operation.requestBody) : undefined
858
+ };
859
+ }
860
+
861
+ generateResponse(operation) {
862
+ const successResponse = operation.responses['200'] || operation.responses['201'];
863
+
864
+ return {
865
+ status: parseInt(Object.keys(operation.responses)[0]),
866
+ headers: {
867
+ 'Content-Type': 'application/json'
868
+ },
869
+ body: this.generateExampleBody(successResponse)
870
+ };
871
+ }
872
+ }
873
+ ```
874
+
875
+ ### 7. Semantic Versioning Validation
876
+
877
+ Enforces semantic versioning rules across all API changes.
878
+
879
+ **Semver Validator:**
880
+ ```javascript
881
+ class SemanticVersioningValidator {
882
+ validate(changes, versionBump) {
883
+ const rules = [
884
+ {
885
+ condition: (c) => c.breaking.length > 0,
886
+ requiredBump: 'major',
887
+ message: 'Breaking changes require major version bump'
888
+ },
889
+ {
890
+ condition: (c) => c.nonBreaking.some(nc => nc.type.includes('ADDED')),
891
+ requiredBump: 'minor',
892
+ message: 'New features require minor version bump'
893
+ },
894
+ {
895
+ condition: (c) => c.breaking.length === 0 && !c.nonBreaking.some(nc => nc.type.includes('ADDED')),
896
+ requiredBump: 'patch',
897
+ message: 'Bug fixes only require patch version bump'
898
+ }
899
+ ];
900
+
901
+ for (const rule of rules) {
902
+ if (rule.condition(changes)) {
903
+ if (versionBump !== rule.requiredBump) {
904
+ return {
905
+ valid: false,
906
+ violation: rule.message,
907
+ required: rule.requiredBump,
908
+ actual: versionBump
909
+ };
910
+ }
911
+ return { valid: true, bump: rule.requiredBump };
912
+ }
913
+ }
914
+
915
+ return { valid: true, bump: 'patch' };
916
+ }
917
+ }
918
+ ```
919
+
920
+ ## Integration Points
921
+
922
+ ### Upstream Dependencies
923
+ - **OpenAPI/Swagger**: API schema specifications
924
+ - **GraphQL**: GraphQL schemas
925
+ - **Git**: Schema version history
926
+ - **API Gateways**: Consumer tracking
927
+
928
+ ### Downstream Consumers
929
+ - **qe-deployment-readiness**: Blocks deployment on breaking changes
930
+ - **qe-test-generator**: Generates contract tests
931
+ - **CI/CD Pipelines**: Enforces contract validation
932
+ - **API Documentation**: Updates docs with changes
933
+
934
+ ### Coordination Agents
935
+ - **qe-fleet-commander**: Orchestrates contract validation
936
+ - **qe-requirements-validator**: Validates API requirements
937
+
938
+ ## Memory Keys
939
+
940
+ ### Input Keys
941
+ - `aqe/api-schemas/baseline` - Baseline API schemas
942
+ - `aqe/api-schemas/candidate` - New API schemas
943
+ - `aqe/contracts/current` - Current contract specifications
944
+ - `aqe/consumers/registry` - API consumer registry
945
+
946
+ ### Output Keys
947
+ - `aqe/contracts/validation-result` - Contract validation results
948
+ - `aqe/breaking-changes/detected` - Detected breaking changes
949
+ - `aqe/consumer-impact/analysis` - Consumer impact analysis
950
+ - `aqe/compatibility/report` - Compatibility assessment
951
+
952
+ ### Coordination Keys
953
+ - `aqe/contracts/status` - Validation status
954
+ - `aqe/contracts/alerts` - Critical contract violations
955
+
956
+ ## Use Cases
957
+
958
+ ### Use Case 1: Pre-Deployment Contract Validation
959
+
960
+ **Scenario**: Validate API changes before deploying to production.
961
+
962
+ **Workflow:**
963
+ ```bash
964
+ # Compare schemas
965
+ aqe contract compare --baseline v2.4.0 --candidate v2.5.0
966
+
967
+ # Detect breaking changes
968
+ aqe contract breaking-changes --output breaking-changes.json
969
+
970
+ # Analyze consumer impact
971
+ aqe contract consumer-impact --consumers consumer-registry.json
972
+
973
+ # Generate migration guide
974
+ aqe contract migration-guide --output migration-guide.md
975
+
976
+ # Validate version bump
977
+ aqe contract validate-version --current 2.4.0 --proposed 2.5.0
978
+ ```
979
+
980
+ ### Use Case 2: Contract-First Development
981
+
982
+ **Scenario**: Generate contract tests from OpenAPI spec.
983
+
984
+ **Workflow:**
985
+ ```bash
986
+ # Generate Pact contract tests
987
+ aqe contract generate-pact --spec openapi.yaml --consumer mobile-app
988
+
989
+ # Run contract tests
990
+ aqe contract test --provider user-service --consumer mobile-app
991
+
992
+ # Publish contract
993
+ aqe contract publish --broker https://pact-broker.company.com
994
+ ```
995
+
996
+ ### Use Case 3: Consumer Notification
997
+
998
+ **Scenario**: Notify affected consumers of API changes.
999
+
1000
+ **Workflow:**
1001
+ ```bash
1002
+ # Analyze impact
1003
+ aqe contract consumer-impact --baseline v2.4.0 --candidate v2.5.0
1004
+
1005
+ # Generate notification emails
1006
+ aqe contract notify-consumers --template email-template.html
1007
+
1008
+ # Track migration progress
1009
+ aqe contract migration-status --version v3.0.0
1010
+ ```
1011
+
1012
+ ## Success Metrics
1013
+
1014
+ ### Prevention Metrics
1015
+ - **Breaking Changes Prevented**: 95%
1016
+ - **Consumer Incidents**: 90% reduction
1017
+ - **Integration Failures**: 85% reduction
1018
+
1019
+ ### Quality Metrics
1020
+ - **Contract Compliance**: 100%
1021
+ - **Semantic Versioning Compliance**: 100%
1022
+ - **Consumer Satisfaction**: 4.8/5
1023
+
1024
+ ## Commands
1025
+
1026
+ ### Basic Commands
1027
+
1028
+ ```bash
1029
+ # Compare API schemas
1030
+ aqe contract compare --baseline <version> --candidate <version>
1031
+
1032
+ # Detect breaking changes
1033
+ aqe contract breaking-changes --spec <openapi-file>
1034
+
1035
+ # Validate contract
1036
+ aqe contract validate --spec <openapi-file>
1037
+
1038
+ # Generate diff report
1039
+ aqe contract diff --baseline <v1> --candidate <v2> --output diff.html
1040
+
1041
+ # Check semantic versioning
1042
+ aqe contract semver-check --current <version> --proposed <version>
1043
+ ```
1044
+
1045
+ ### Advanced Commands
1046
+
1047
+ ```bash
1048
+ # Consumer impact analysis
1049
+ aqe contract consumer-impact --consumers <registry> --changes <changes-file>
1050
+
1051
+ # Generate Pact tests
1052
+ aqe contract generate-pact --spec <openapi> --consumer <name>
1053
+
1054
+ # Run contract tests
1055
+ aqe contract test --provider <service> --consumer <app>
1056
+
1057
+ # Migration guide generation
1058
+ aqe contract migration-guide --baseline <v1> --candidate <v2>
1059
+
1060
+ # Notify consumers
1061
+ aqe contract notify-consumers --changes <changes-file> --template <email-template>
1062
+ ```
1063
+
1064
+ ### Specialized Commands
1065
+
1066
+ ```bash
1067
+ # GraphQL schema validation
1068
+ aqe contract validate-graphql --schema schema.graphql
1069
+
1070
+ # API versioning strategy
1071
+ aqe contract versioning-strategy --analyze-history --days 180
1072
+
1073
+ # Consumer compatibility matrix
1074
+ aqe contract compatibility-matrix --output matrix.html
1075
+
1076
+ # Deprecation timeline
1077
+ aqe contract deprecation-timeline --version <v2> --sunset-date <date>
1078
+
1079
+ # Contract evolution report
1080
+ aqe contract evolution --from <v1> --to <v2> --format pdf
1081
+ ```
1082
+
1083
+ ---
1084
+
1085
+ **Agent Status**: Production Ready
1086
+ **Last Updated**: 2025-09-30
1087
+ **Version**: 1.0.0
1088
+ **Maintainer**: AQE Fleet Team