agentic-qe 1.4.3 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) hide show
  1. package/.claude/agents/qe-api-contract-validator.md +133 -27
  2. package/.claude/agents/qe-api-contract-validator.md.backup +1148 -0
  3. package/.claude/agents/qe-api-contract-validator.md.backup-20251107-134747 +1148 -0
  4. package/.claude/agents/qe-api-contract-validator.md.backup-phase2-20251107-140039 +1123 -0
  5. package/.claude/agents/qe-chaos-engineer.md +142 -23
  6. package/.claude/agents/qe-chaos-engineer.md.backup +808 -0
  7. package/.claude/agents/qe-chaos-engineer.md.backup-20251107-134747 +808 -0
  8. package/.claude/agents/qe-chaos-engineer.md.backup-phase2-20251107-140039 +787 -0
  9. package/.claude/agents/qe-code-complexity.md +111 -23
  10. package/.claude/agents/qe-code-complexity.md.backup +291 -0
  11. package/.claude/agents/qe-code-complexity.md.backup-20251107-134747 +291 -0
  12. package/.claude/agents/qe-code-complexity.md.backup-phase2-20251107-140039 +286 -0
  13. package/.claude/agents/qe-coverage-analyzer.md +306 -30
  14. package/.claude/agents/qe-coverage-analyzer.md.backup +467 -0
  15. package/.claude/agents/qe-coverage-analyzer.md.backup-20251107-134747 +467 -0
  16. package/.claude/agents/qe-coverage-analyzer.md.backup-phase2-20251107-140039 +438 -0
  17. package/.claude/agents/qe-deployment-readiness.md +84 -28
  18. package/.claude/agents/qe-deployment-readiness.md.backup +1166 -0
  19. package/.claude/agents/qe-deployment-readiness.md.backup-20251107-134747 +1166 -0
  20. package/.claude/agents/qe-deployment-readiness.md.backup-phase2-20251107-140039 +1140 -0
  21. package/.claude/agents/qe-flaky-test-hunter.md +277 -35
  22. package/.claude/agents/qe-flaky-test-hunter.md.backup +1195 -0
  23. package/.claude/agents/qe-flaky-test-hunter.md.backup-20251107-134747 +1195 -0
  24. package/.claude/agents/qe-flaky-test-hunter.md.backup-phase2-20251107-140039 +1162 -0
  25. package/.claude/agents/qe-fleet-commander.md +126 -23
  26. package/.claude/agents/qe-fleet-commander.md.backup +718 -0
  27. package/.claude/agents/qe-fleet-commander.md.backup-20251107-134747 +718 -0
  28. package/.claude/agents/qe-fleet-commander.md.backup-phase2-20251107-140039 +697 -0
  29. package/.claude/agents/qe-performance-tester.md +314 -57
  30. package/.claude/agents/qe-performance-tester.md.backup +428 -0
  31. package/.claude/agents/qe-performance-tester.md.backup-20251107-134747 +428 -0
  32. package/.claude/agents/qe-performance-tester.md.backup-phase2-20251107-140039 +372 -0
  33. package/.claude/agents/qe-production-intelligence.md +126 -27
  34. package/.claude/agents/qe-production-intelligence.md.backup +1219 -0
  35. package/.claude/agents/qe-production-intelligence.md.backup-20251107-134747 +1219 -0
  36. package/.claude/agents/qe-production-intelligence.md.backup-phase2-20251107-140039 +1194 -0
  37. package/.claude/agents/qe-quality-analyzer.md +127 -32
  38. package/.claude/agents/qe-quality-analyzer.md.backup +425 -0
  39. package/.claude/agents/qe-quality-analyzer.md.backup-20251107-134747 +425 -0
  40. package/.claude/agents/qe-quality-analyzer.md.backup-phase2-20251107-140039 +394 -0
  41. package/.claude/agents/qe-quality-gate.md +148 -33
  42. package/.claude/agents/qe-quality-gate.md.backup +446 -0
  43. package/.claude/agents/qe-quality-gate.md.backup-20251107-134747 +446 -0
  44. package/.claude/agents/qe-quality-gate.md.backup-phase2-20251107-140039 +415 -0
  45. package/.claude/agents/qe-regression-risk-analyzer.md +78 -27
  46. package/.claude/agents/qe-regression-risk-analyzer.md.backup +1009 -0
  47. package/.claude/agents/qe-regression-risk-analyzer.md.backup-20251107-134747 +1009 -0
  48. package/.claude/agents/qe-regression-risk-analyzer.md.backup-phase2-20251107-140039 +984 -0
  49. package/.claude/agents/qe-requirements-validator.md +131 -27
  50. package/.claude/agents/qe-requirements-validator.md.backup +748 -0
  51. package/.claude/agents/qe-requirements-validator.md.backup-20251107-134747 +748 -0
  52. package/.claude/agents/qe-requirements-validator.md.backup-phase2-20251107-140039 +723 -0
  53. package/.claude/agents/qe-security-scanner.md +137 -62
  54. package/.claude/agents/qe-security-scanner.md.backup +634 -0
  55. package/.claude/agents/qe-security-scanner.md.backup-20251107-134747 +634 -0
  56. package/.claude/agents/qe-security-scanner.md.backup-phase2-20251107-140039 +573 -0
  57. package/.claude/agents/qe-test-data-architect.md +129 -26
  58. package/.claude/agents/qe-test-data-architect.md.backup +1064 -0
  59. package/.claude/agents/qe-test-data-architect.md.backup-20251107-134747 +1064 -0
  60. package/.claude/agents/qe-test-data-architect.md.backup-phase2-20251107-140039 +1040 -0
  61. package/.claude/agents/qe-test-executor.md +165 -21
  62. package/.claude/agents/qe-test-executor.md.backup +389 -0
  63. package/.claude/agents/qe-test-executor.md.backup-20251107-134747 +389 -0
  64. package/.claude/agents/qe-test-executor.md.backup-phase2-20251107-140039 +369 -0
  65. package/.claude/agents/qe-test-generator.md +379 -34
  66. package/.claude/agents/qe-test-generator.md.backup +997 -0
  67. package/.claude/agents/qe-test-generator.md.backup-20251107-134747 +997 -0
  68. package/.claude/agents/qe-visual-tester.md +236 -23
  69. package/.claude/agents/qe-visual-tester.md.backup +777 -0
  70. package/.claude/agents/qe-visual-tester.md.backup-20251107-134747 +777 -0
  71. package/.claude/agents/qe-visual-tester.md.backup-phase2-20251107-140039 +756 -0
  72. package/.claude/agents/subagents/qe-code-reviewer.md +59 -0
  73. package/.claude/agents/subagents/qe-data-generator.md +60 -0
  74. package/.claude/agents/subagents/qe-integration-tester.md +77 -0
  75. package/.claude/agents/subagents/qe-performance-validator.md +55 -0
  76. package/.claude/agents/subagents/qe-security-auditor.md +51 -0
  77. package/.claude/agents/subagents/qe-test-implementer.md +371 -0
  78. package/.claude/agents/subagents/qe-test-refactorer.md +510 -0
  79. package/.claude/agents/subagents/qe-test-writer.md +603 -0
  80. package/.claude/skills/accessibility-testing/SKILL.md +764 -777
  81. package/.claude/skills/agentic-quality-engineering/SKILL.md +0 -6
  82. package/.claude/skills/api-testing-patterns/SKILL.md +0 -12
  83. package/.claude/skills/bug-reporting-excellence/SKILL.md +0 -6
  84. package/.claude/skills/chaos-engineering-resilience/SKILL.md +0 -6
  85. package/.claude/skills/code-review-quality/SKILL.md +0 -6
  86. package/.claude/skills/compatibility-testing/SKILL.md +0 -6
  87. package/.claude/skills/compliance-testing/SKILL.md +0 -6
  88. package/.claude/skills/consultancy-practices/SKILL.md +0 -6
  89. package/.claude/skills/context-driven-testing/SKILL.md +0 -6
  90. package/.claude/skills/contract-testing/SKILL.md +0 -6
  91. package/.claude/skills/database-testing/SKILL.md +0 -6
  92. package/.claude/skills/exploratory-testing-advanced/SKILL.md +0 -6
  93. package/.claude/skills/holistic-testing-pact/SKILL.md +0 -6
  94. package/.claude/skills/localization-testing/SKILL.md +0 -6
  95. package/.claude/skills/mobile-testing/SKILL.md +535 -548
  96. package/.claude/skills/mutation-testing/SKILL.md +0 -6
  97. package/.claude/skills/performance-testing/SKILL.md +0 -6
  98. package/.claude/skills/quality-metrics/SKILL.md +0 -12
  99. package/.claude/skills/refactoring-patterns/SKILL.md +0 -6
  100. package/.claude/skills/regression-testing/SKILL.md +1033 -1045
  101. package/.claude/skills/risk-based-testing/SKILL.md +0 -12
  102. package/.claude/skills/security-testing/SKILL.md +0 -6
  103. package/.claude/skills/shift-left-testing/SKILL.md +529 -535
  104. package/.claude/skills/shift-right-testing/SKILL.md +585 -591
  105. package/.claude/skills/tdd-london-chicago/SKILL.md +0 -6
  106. package/.claude/skills/technical-writing/SKILL.md +0 -6
  107. package/.claude/skills/test-automation-strategy/SKILL.md +0 -6
  108. package/.claude/skills/test-data-management/SKILL.md +1054 -1067
  109. package/.claude/skills/test-design-techniques/SKILL.md +0 -6
  110. package/.claude/skills/test-environment-management/SKILL.md +0 -6
  111. package/.claude/skills/test-reporting-analytics/SKILL.md +0 -6
  112. package/.claude/skills/visual-testing-advanced/SKILL.md +0 -6
  113. package/.claude/skills/xp-practices/SKILL.md +0 -6
  114. package/CHANGELOG.md +504 -0
  115. package/README.md +24 -16
  116. package/dist/cli/commands/init.d.ts +4 -0
  117. package/dist/cli/commands/init.d.ts.map +1 -1
  118. package/dist/cli/commands/init.js +97 -44
  119. package/dist/cli/commands/init.js.map +1 -1
  120. package/dist/core/FleetManager.d.ts.map +1 -1
  121. package/dist/core/FleetManager.js +17 -5
  122. package/dist/core/FleetManager.js.map +1 -1
  123. package/dist/core/MemoryManager.d.ts +27 -0
  124. package/dist/core/MemoryManager.d.ts.map +1 -1
  125. package/dist/core/MemoryManager.js +69 -4
  126. package/dist/core/MemoryManager.js.map +1 -1
  127. package/dist/core/PatternDatabaseAdapter.d.ts.map +1 -1
  128. package/dist/core/PatternDatabaseAdapter.js +14 -4
  129. package/dist/core/PatternDatabaseAdapter.js.map +1 -1
  130. package/dist/learning/LearningEngine.d.ts.map +1 -1
  131. package/dist/learning/LearningEngine.js +18 -4
  132. package/dist/learning/LearningEngine.js.map +1 -1
  133. package/dist/mcp/handlers/coordination/index.d.ts +14 -14
  134. package/dist/mcp/handlers/coordination/index.d.ts.map +1 -1
  135. package/dist/mcp/handlers/coordination/index.js +14 -14
  136. package/dist/mcp/handlers/coordination/index.js.map +1 -1
  137. package/dist/mcp/handlers/coordination/task-status.d.ts.map +1 -1
  138. package/dist/mcp/handlers/coordination/task-status.js +3 -5
  139. package/dist/mcp/handlers/coordination/task-status.js.map +1 -1
  140. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -1
  141. package/dist/mcp/handlers/phase2/Phase2Tools.js +39 -10
  142. package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -1
  143. package/dist/mcp/handlers/phase3/Phase3DomainTools.d.ts +63 -0
  144. package/dist/mcp/handlers/phase3/Phase3DomainTools.d.ts.map +1 -0
  145. package/dist/mcp/handlers/phase3/Phase3DomainTools.js +885 -0
  146. package/dist/mcp/handlers/phase3/Phase3DomainTools.js.map +1 -0
  147. package/dist/mcp/handlers/phase3/index.d.ts +6 -0
  148. package/dist/mcp/handlers/phase3/index.d.ts.map +1 -0
  149. package/dist/mcp/handlers/phase3/index.js +10 -0
  150. package/dist/mcp/handlers/phase3/index.js.map +1 -0
  151. package/dist/mcp/handlers/prediction/index.d.ts +10 -10
  152. package/dist/mcp/handlers/prediction/index.d.ts.map +1 -1
  153. package/dist/mcp/handlers/prediction/index.js +10 -10
  154. package/dist/mcp/handlers/prediction/index.js.map +1 -1
  155. package/dist/mcp/handlers/security/check-authz.d.ts +152 -0
  156. package/dist/mcp/handlers/security/check-authz.d.ts.map +1 -0
  157. package/dist/mcp/handlers/security/check-authz.js +434 -0
  158. package/dist/mcp/handlers/security/check-authz.js.map +1 -0
  159. package/dist/mcp/handlers/security/generate-report.d.ts +156 -0
  160. package/dist/mcp/handlers/security/generate-report.d.ts.map +1 -0
  161. package/dist/mcp/handlers/security/generate-report.js +469 -0
  162. package/dist/mcp/handlers/security/generate-report.js.map +1 -0
  163. package/dist/mcp/handlers/security/index.d.ts +80 -0
  164. package/dist/mcp/handlers/security/index.d.ts.map +1 -0
  165. package/dist/mcp/handlers/security/index.js +91 -0
  166. package/dist/mcp/handlers/security/index.js.map +1 -0
  167. package/dist/mcp/handlers/security/scan-comprehensive.d.ts +66 -0
  168. package/dist/mcp/handlers/security/scan-comprehensive.d.ts.map +1 -0
  169. package/dist/mcp/handlers/security/scan-comprehensive.js +296 -0
  170. package/dist/mcp/handlers/security/scan-comprehensive.js.map +1 -0
  171. package/dist/mcp/handlers/security/scan-dependencies.d.ts +148 -0
  172. package/dist/mcp/handlers/security/scan-dependencies.d.ts.map +1 -0
  173. package/dist/mcp/handlers/security/scan-dependencies.js +354 -0
  174. package/dist/mcp/handlers/security/scan-dependencies.js.map +1 -0
  175. package/dist/mcp/handlers/security/validate-auth.d.ts +128 -0
  176. package/dist/mcp/handlers/security/validate-auth.d.ts.map +1 -0
  177. package/dist/mcp/handlers/security/validate-auth.js +294 -0
  178. package/dist/mcp/handlers/security/validate-auth.js.map +1 -0
  179. package/dist/mcp/handlers/task-orchestrate.d.ts +21 -1
  180. package/dist/mcp/handlers/task-orchestrate.d.ts.map +1 -1
  181. package/dist/mcp/handlers/task-orchestrate.js +32 -2
  182. package/dist/mcp/handlers/task-orchestrate.js.map +1 -1
  183. package/dist/mcp/handlers/test/generate-integration-tests.d.ts +95 -0
  184. package/dist/mcp/handlers/test/generate-integration-tests.d.ts.map +1 -0
  185. package/dist/mcp/handlers/test/generate-integration-tests.js +286 -0
  186. package/dist/mcp/handlers/test/generate-integration-tests.js.map +1 -0
  187. package/dist/mcp/handlers/test/generate-unit-tests.d.ts +89 -0
  188. package/dist/mcp/handlers/test/generate-unit-tests.d.ts.map +1 -0
  189. package/dist/mcp/handlers/test/generate-unit-tests.js +273 -0
  190. package/dist/mcp/handlers/test/generate-unit-tests.js.map +1 -0
  191. package/dist/mcp/handlers/test/optimize-test-suite.d.ts +97 -0
  192. package/dist/mcp/handlers/test/optimize-test-suite.d.ts.map +1 -0
  193. package/dist/mcp/handlers/test/optimize-test-suite.js +282 -0
  194. package/dist/mcp/handlers/test/optimize-test-suite.js.map +1 -0
  195. package/dist/mcp/server.d.ts.map +1 -1
  196. package/dist/mcp/server.js +212 -1
  197. package/dist/mcp/server.js.map +1 -1
  198. package/dist/mcp/tools/deprecated.d.ts +1390 -0
  199. package/dist/mcp/tools/deprecated.d.ts.map +1 -0
  200. package/dist/mcp/tools/deprecated.js +859 -0
  201. package/dist/mcp/tools/deprecated.js.map +1 -0
  202. package/dist/mcp/tools/qe/api-contract/index.d.ts +138 -0
  203. package/dist/mcp/tools/qe/api-contract/index.d.ts.map +1 -0
  204. package/dist/mcp/tools/qe/api-contract/index.js +572 -0
  205. package/dist/mcp/tools/qe/api-contract/index.js.map +1 -0
  206. package/dist/mcp/tools/qe/code-quality/analyze-complexity.d.ts +110 -0
  207. package/dist/mcp/tools/qe/code-quality/analyze-complexity.d.ts.map +1 -0
  208. package/dist/mcp/tools/qe/code-quality/analyze-complexity.js +381 -0
  209. package/dist/mcp/tools/qe/code-quality/analyze-complexity.js.map +1 -0
  210. package/dist/mcp/tools/qe/code-quality/calculate-quality-metrics.d.ts +115 -0
  211. package/dist/mcp/tools/qe/code-quality/calculate-quality-metrics.d.ts.map +1 -0
  212. package/dist/mcp/tools/qe/code-quality/calculate-quality-metrics.js +461 -0
  213. package/dist/mcp/tools/qe/code-quality/calculate-quality-metrics.js.map +1 -0
  214. package/dist/mcp/tools/qe/code-quality/index.d.ts +12 -0
  215. package/dist/mcp/tools/qe/code-quality/index.d.ts.map +1 -0
  216. package/dist/mcp/tools/qe/code-quality/index.js +30 -0
  217. package/dist/mcp/tools/qe/code-quality/index.js.map +1 -0
  218. package/dist/mcp/tools/qe/coverage/analyze-with-risk-scoring.d.ts +58 -0
  219. package/dist/mcp/tools/qe/coverage/analyze-with-risk-scoring.d.ts.map +1 -0
  220. package/dist/mcp/tools/qe/coverage/analyze-with-risk-scoring.js +172 -0
  221. package/dist/mcp/tools/qe/coverage/analyze-with-risk-scoring.js.map +1 -0
  222. package/dist/mcp/tools/qe/coverage/calculate-trends.d.ts +73 -0
  223. package/dist/mcp/tools/qe/coverage/calculate-trends.d.ts.map +1 -0
  224. package/dist/mcp/tools/qe/coverage/calculate-trends.js +240 -0
  225. package/dist/mcp/tools/qe/coverage/calculate-trends.js.map +1 -0
  226. package/dist/mcp/tools/qe/coverage/detect-gaps-ml.d.ts +38 -0
  227. package/dist/mcp/tools/qe/coverage/detect-gaps-ml.d.ts.map +1 -0
  228. package/dist/mcp/tools/qe/coverage/detect-gaps-ml.js +204 -0
  229. package/dist/mcp/tools/qe/coverage/detect-gaps-ml.js.map +1 -0
  230. package/dist/mcp/tools/qe/coverage/index.d.ts +12 -0
  231. package/dist/mcp/tools/qe/coverage/index.d.ts.map +1 -0
  232. package/dist/mcp/tools/qe/coverage/index.js +23 -0
  233. package/dist/mcp/tools/qe/coverage/index.js.map +1 -0
  234. package/dist/mcp/tools/qe/coverage/recommend-tests.d.ts +46 -0
  235. package/dist/mcp/tools/qe/coverage/recommend-tests.d.ts.map +1 -0
  236. package/dist/mcp/tools/qe/coverage/recommend-tests.js +248 -0
  237. package/dist/mcp/tools/qe/coverage/recommend-tests.js.map +1 -0
  238. package/dist/mcp/tools/qe/flaky-detection/analyze-patterns.d.ts +179 -0
  239. package/dist/mcp/tools/qe/flaky-detection/analyze-patterns.d.ts.map +1 -0
  240. package/dist/mcp/tools/qe/flaky-detection/analyze-patterns.js +554 -0
  241. package/dist/mcp/tools/qe/flaky-detection/analyze-patterns.js.map +1 -0
  242. package/dist/mcp/tools/qe/flaky-detection/detect-statistical.d.ts +172 -0
  243. package/dist/mcp/tools/qe/flaky-detection/detect-statistical.d.ts.map +1 -0
  244. package/dist/mcp/tools/qe/flaky-detection/detect-statistical.js +498 -0
  245. package/dist/mcp/tools/qe/flaky-detection/detect-statistical.js.map +1 -0
  246. package/dist/mcp/tools/qe/flaky-detection/index.d.ts +35 -0
  247. package/dist/mcp/tools/qe/flaky-detection/index.d.ts.map +1 -0
  248. package/dist/mcp/tools/qe/flaky-detection/index.js +66 -0
  249. package/dist/mcp/tools/qe/flaky-detection/index.js.map +1 -0
  250. package/dist/mcp/tools/qe/flaky-detection/stabilize-auto.d.ts +159 -0
  251. package/dist/mcp/tools/qe/flaky-detection/stabilize-auto.d.ts.map +1 -0
  252. package/dist/mcp/tools/qe/flaky-detection/stabilize-auto.js +462 -0
  253. package/dist/mcp/tools/qe/flaky-detection/stabilize-auto.js.map +1 -0
  254. package/dist/mcp/tools/qe/fleet/index.d.ts +422 -0
  255. package/dist/mcp/tools/qe/fleet/index.d.ts.map +1 -0
  256. package/dist/mcp/tools/qe/fleet/index.js +652 -0
  257. package/dist/mcp/tools/qe/fleet/index.js.map +1 -0
  258. package/dist/mcp/tools/qe/performance/analyze-bottlenecks.d.ts +180 -0
  259. package/dist/mcp/tools/qe/performance/analyze-bottlenecks.d.ts.map +1 -0
  260. package/dist/mcp/tools/qe/performance/analyze-bottlenecks.js +347 -0
  261. package/dist/mcp/tools/qe/performance/analyze-bottlenecks.js.map +1 -0
  262. package/dist/mcp/tools/qe/performance/generate-report.d.ts +146 -0
  263. package/dist/mcp/tools/qe/performance/generate-report.d.ts.map +1 -0
  264. package/dist/mcp/tools/qe/performance/generate-report.js +354 -0
  265. package/dist/mcp/tools/qe/performance/generate-report.js.map +1 -0
  266. package/dist/mcp/tools/qe/performance/index.d.ts +13 -0
  267. package/dist/mcp/tools/qe/performance/index.d.ts.map +1 -0
  268. package/dist/mcp/tools/qe/performance/index.js +24 -0
  269. package/dist/mcp/tools/qe/performance/index.js.map +1 -0
  270. package/dist/mcp/tools/qe/performance/monitor-realtime.d.ts +120 -0
  271. package/dist/mcp/tools/qe/performance/monitor-realtime.d.ts.map +1 -0
  272. package/dist/mcp/tools/qe/performance/monitor-realtime.js +215 -0
  273. package/dist/mcp/tools/qe/performance/monitor-realtime.js.map +1 -0
  274. package/dist/mcp/tools/qe/performance/run-benchmark.d.ts +68 -0
  275. package/dist/mcp/tools/qe/performance/run-benchmark.d.ts.map +1 -0
  276. package/dist/mcp/tools/qe/performance/run-benchmark.js +120 -0
  277. package/dist/mcp/tools/qe/performance/run-benchmark.js.map +1 -0
  278. package/dist/mcp/tools/qe/quality-gates/assess-deployment-risk.d.ts +239 -0
  279. package/dist/mcp/tools/qe/quality-gates/assess-deployment-risk.d.ts.map +1 -0
  280. package/dist/mcp/tools/qe/quality-gates/assess-deployment-risk.js +671 -0
  281. package/dist/mcp/tools/qe/quality-gates/assess-deployment-risk.js.map +1 -0
  282. package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.d.ts +219 -0
  283. package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.d.ts.map +1 -0
  284. package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.js +732 -0
  285. package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.js.map +1 -0
  286. package/dist/mcp/tools/qe/quality-gates/generate-quality-report.d.ts +447 -0
  287. package/dist/mcp/tools/qe/quality-gates/generate-quality-report.d.ts.map +1 -0
  288. package/dist/mcp/tools/qe/quality-gates/generate-quality-report.js +551 -0
  289. package/dist/mcp/tools/qe/quality-gates/generate-quality-report.js.map +1 -0
  290. package/dist/mcp/tools/qe/quality-gates/index.d.ts +40 -0
  291. package/dist/mcp/tools/qe/quality-gates/index.d.ts.map +1 -0
  292. package/dist/mcp/tools/qe/quality-gates/index.js +56 -0
  293. package/dist/mcp/tools/qe/quality-gates/index.js.map +1 -0
  294. package/dist/mcp/tools/qe/quality-gates/validate-quality-metrics.d.ts +226 -0
  295. package/dist/mcp/tools/qe/quality-gates/validate-quality-metrics.d.ts.map +1 -0
  296. package/dist/mcp/tools/qe/quality-gates/validate-quality-metrics.js +603 -0
  297. package/dist/mcp/tools/qe/quality-gates/validate-quality-metrics.js.map +1 -0
  298. package/dist/mcp/tools/qe/regression/analyze-risk.d.ts +212 -0
  299. package/dist/mcp/tools/qe/regression/analyze-risk.d.ts.map +1 -0
  300. package/dist/mcp/tools/qe/regression/analyze-risk.js +617 -0
  301. package/dist/mcp/tools/qe/regression/analyze-risk.js.map +1 -0
  302. package/dist/mcp/tools/qe/regression/index.d.ts +36 -0
  303. package/dist/mcp/tools/qe/regression/index.d.ts.map +1 -0
  304. package/dist/mcp/tools/qe/regression/index.js +63 -0
  305. package/dist/mcp/tools/qe/regression/index.js.map +1 -0
  306. package/dist/mcp/tools/qe/regression/select-tests.d.ts +241 -0
  307. package/dist/mcp/tools/qe/regression/select-tests.d.ts.map +1 -0
  308. package/dist/mcp/tools/qe/regression/select-tests.js +601 -0
  309. package/dist/mcp/tools/qe/regression/select-tests.js.map +1 -0
  310. package/dist/mcp/tools/qe/requirements/generate-bdd-scenarios.d.ts +134 -0
  311. package/dist/mcp/tools/qe/requirements/generate-bdd-scenarios.d.ts.map +1 -0
  312. package/dist/mcp/tools/qe/requirements/generate-bdd-scenarios.js +737 -0
  313. package/dist/mcp/tools/qe/requirements/generate-bdd-scenarios.js.map +1 -0
  314. package/dist/mcp/tools/qe/requirements/index.d.ts +40 -0
  315. package/dist/mcp/tools/qe/requirements/index.d.ts.map +1 -0
  316. package/dist/mcp/tools/qe/requirements/index.js +84 -0
  317. package/dist/mcp/tools/qe/requirements/index.js.map +1 -0
  318. package/dist/mcp/tools/qe/requirements/validate-requirements.d.ts +196 -0
  319. package/dist/mcp/tools/qe/requirements/validate-requirements.d.ts.map +1 -0
  320. package/dist/mcp/tools/qe/requirements/validate-requirements.js +740 -0
  321. package/dist/mcp/tools/qe/requirements/validate-requirements.js.map +1 -0
  322. package/dist/mcp/tools/qe/security/detect-vulnerabilities.d.ts +300 -0
  323. package/dist/mcp/tools/qe/security/detect-vulnerabilities.d.ts.map +1 -0
  324. package/dist/mcp/tools/qe/security/detect-vulnerabilities.js +492 -0
  325. package/dist/mcp/tools/qe/security/detect-vulnerabilities.js.map +1 -0
  326. package/dist/mcp/tools/qe/security/index.d.ts +34 -0
  327. package/dist/mcp/tools/qe/security/index.d.ts.map +1 -0
  328. package/dist/mcp/tools/qe/security/index.js +44 -0
  329. package/dist/mcp/tools/qe/security/index.js.map +1 -0
  330. package/dist/mcp/tools/qe/security/scan-comprehensive.d.ts +240 -0
  331. package/dist/mcp/tools/qe/security/scan-comprehensive.d.ts.map +1 -0
  332. package/dist/mcp/tools/qe/security/scan-comprehensive.js +535 -0
  333. package/dist/mcp/tools/qe/security/scan-comprehensive.js.map +1 -0
  334. package/dist/mcp/tools/qe/security/validate-compliance.d.ts +299 -0
  335. package/dist/mcp/tools/qe/security/validate-compliance.d.ts.map +1 -0
  336. package/dist/mcp/tools/qe/security/validate-compliance.js +517 -0
  337. package/dist/mcp/tools/qe/security/validate-compliance.js.map +1 -0
  338. package/dist/mcp/tools/qe/shared/types.d.ts +840 -0
  339. package/dist/mcp/tools/qe/shared/types.d.ts.map +1 -0
  340. package/dist/mcp/tools/qe/shared/types.js +13 -0
  341. package/dist/mcp/tools/qe/shared/types.js.map +1 -0
  342. package/dist/mcp/tools/qe/test-data/analyze-schema.d.ts +264 -0
  343. package/dist/mcp/tools/qe/test-data/analyze-schema.d.ts.map +1 -0
  344. package/dist/mcp/tools/qe/test-data/analyze-schema.js +553 -0
  345. package/dist/mcp/tools/qe/test-data/analyze-schema.js.map +1 -0
  346. package/dist/mcp/tools/qe/test-data/generate-test-data.d.ts +167 -0
  347. package/dist/mcp/tools/qe/test-data/generate-test-data.d.ts.map +1 -0
  348. package/dist/mcp/tools/qe/test-data/generate-test-data.js +336 -0
  349. package/dist/mcp/tools/qe/test-data/generate-test-data.js.map +1 -0
  350. package/dist/mcp/tools/qe/test-data/index.d.ts +44 -0
  351. package/dist/mcp/tools/qe/test-data/index.d.ts.map +1 -0
  352. package/dist/mcp/tools/qe/test-data/index.js +90 -0
  353. package/dist/mcp/tools/qe/test-data/index.js.map +1 -0
  354. package/dist/mcp/tools/qe/test-data/mask-sensitive-data.d.ts +165 -0
  355. package/dist/mcp/tools/qe/test-data/mask-sensitive-data.d.ts.map +1 -0
  356. package/dist/mcp/tools/qe/test-data/mask-sensitive-data.js +342 -0
  357. package/dist/mcp/tools/qe/test-data/mask-sensitive-data.js.map +1 -0
  358. package/dist/mcp/tools/qe/test-generation/analyze-test-quality.d.ts +144 -0
  359. package/dist/mcp/tools/qe/test-generation/analyze-test-quality.d.ts.map +1 -0
  360. package/dist/mcp/tools/qe/test-generation/analyze-test-quality.js +432 -0
  361. package/dist/mcp/tools/qe/test-generation/analyze-test-quality.js.map +1 -0
  362. package/dist/mcp/tools/qe/test-generation/generate-integration-tests.d.ts +98 -0
  363. package/dist/mcp/tools/qe/test-generation/generate-integration-tests.d.ts.map +1 -0
  364. package/dist/mcp/tools/qe/test-generation/generate-integration-tests.js +459 -0
  365. package/dist/mcp/tools/qe/test-generation/generate-integration-tests.js.map +1 -0
  366. package/dist/mcp/tools/qe/test-generation/generate-unit-tests.d.ts +83 -0
  367. package/dist/mcp/tools/qe/test-generation/generate-unit-tests.d.ts.map +1 -0
  368. package/dist/mcp/tools/qe/test-generation/generate-unit-tests.js +483 -0
  369. package/dist/mcp/tools/qe/test-generation/generate-unit-tests.js.map +1 -0
  370. package/dist/mcp/tools/qe/test-generation/index.d.ts +56 -0
  371. package/dist/mcp/tools/qe/test-generation/index.d.ts.map +1 -0
  372. package/dist/mcp/tools/qe/test-generation/index.js +97 -0
  373. package/dist/mcp/tools/qe/test-generation/index.js.map +1 -0
  374. package/dist/mcp/tools/qe/test-generation/optimize-test-suite.d.ts +124 -0
  375. package/dist/mcp/tools/qe/test-generation/optimize-test-suite.d.ts.map +1 -0
  376. package/dist/mcp/tools/qe/test-generation/optimize-test-suite.js +362 -0
  377. package/dist/mcp/tools/qe/test-generation/optimize-test-suite.js.map +1 -0
  378. package/dist/mcp/tools/qe/visual/compare-screenshots.d.ts +119 -0
  379. package/dist/mcp/tools/qe/visual/compare-screenshots.d.ts.map +1 -0
  380. package/dist/mcp/tools/qe/visual/compare-screenshots.js +280 -0
  381. package/dist/mcp/tools/qe/visual/compare-screenshots.js.map +1 -0
  382. package/dist/mcp/tools/qe/visual/detect-regression.d.ts +138 -0
  383. package/dist/mcp/tools/qe/visual/detect-regression.d.ts.map +1 -0
  384. package/dist/mcp/tools/qe/visual/detect-regression.js +271 -0
  385. package/dist/mcp/tools/qe/visual/detect-regression.js.map +1 -0
  386. package/dist/mcp/tools/qe/visual/index.d.ts +16 -0
  387. package/dist/mcp/tools/qe/visual/index.d.ts.map +1 -0
  388. package/dist/mcp/tools/qe/visual/index.js +22 -0
  389. package/dist/mcp/tools/qe/visual/index.js.map +1 -0
  390. package/dist/mcp/tools/qe/visual/validate-accessibility.d.ts +276 -0
  391. package/dist/mcp/tools/qe/visual/validate-accessibility.d.ts.map +1 -0
  392. package/dist/mcp/tools/qe/visual/validate-accessibility.js +413 -0
  393. package/dist/mcp/tools/qe/visual/validate-accessibility.js.map +1 -0
  394. package/dist/mcp/tools.d.ts +44 -0
  395. package/dist/mcp/tools.d.ts.map +1 -1
  396. package/dist/mcp/tools.js +1980 -1
  397. package/dist/mcp/tools.js.map +1 -1
  398. package/package.json +2 -2
  399. package/dist/learning/__mocks__/LearningEngine.d.ts +0 -39
  400. package/dist/learning/__mocks__/LearningEngine.d.ts.map +0 -1
  401. package/dist/learning/__mocks__/LearningEngine.js +0 -116
  402. package/dist/learning/__mocks__/LearningEngine.js.map +0 -1
  403. package/dist/utils/__mocks__/Database.d.ts +0 -85
  404. package/dist/utils/__mocks__/Database.d.ts.map +0 -1
  405. package/dist/utils/__mocks__/Database.js +0 -125
  406. package/dist/utils/__mocks__/Database.js.map +0 -1
  407. package/dist/utils/__mocks__/Logger.d.ts +0 -26
  408. package/dist/utils/__mocks__/Logger.d.ts.map +0 -1
  409. package/dist/utils/__mocks__/Logger.js +0 -44
  410. package/dist/utils/__mocks__/Logger.js.map +0 -1
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Optimize Test Suite Tool
3
+ * Sublinear test suite optimization with Johnson-Lindenstrauss and redundancy detection
4
+ *
5
+ * @module tools/qe/test-generation/optimize-test-suite
6
+ * @version 1.0.0
7
+ */
8
+ import type { QEToolResponse } from '../shared/types.js';
9
+ /**
10
+ * Test suite optimization parameters
11
+ */
12
+ export interface TestSuiteOptimizationParams {
13
+ /** Tests to optimize */
14
+ tests: TestInput[];
15
+ /** Optimization algorithm */
16
+ algorithm: 'johnson-lindenstrauss' | 'temporal-advantage' | 'redundancy-detection' | 'hybrid';
17
+ /** Target reduction percentage (0-1) */
18
+ targetReduction?: number;
19
+ /** Minimum coverage to maintain (0-1) */
20
+ maintainCoverage?: number;
21
+ /** Preserve critical tests */
22
+ preserveCritical?: boolean;
23
+ /** Enable failure prediction */
24
+ predictFailures?: boolean;
25
+ /** Include optimization metrics */
26
+ includeMetrics?: boolean;
27
+ }
28
+ /**
29
+ * Input test structure
30
+ */
31
+ export interface TestInput {
32
+ /** Test ID */
33
+ id: string;
34
+ /** Test name */
35
+ name: string;
36
+ /** Test priority */
37
+ priority?: 'critical' | 'high' | 'medium' | 'low';
38
+ /** Coverage contribution */
39
+ coverage?: string[];
40
+ /** Execution time (ms) */
41
+ duration?: number;
42
+ /** Historical failure rate (0-1) */
43
+ failureRate?: number;
44
+ }
45
+ /**
46
+ * Optimized test
47
+ */
48
+ export interface OptimizedTest extends TestInput {
49
+ /** Optimization score */
50
+ score: number;
51
+ /** Failure probability */
52
+ failureProbability?: number;
53
+ /** Temporal advantage (ms) */
54
+ temporalAdvantage?: number;
55
+ /** Redundancy group */
56
+ redundancyGroup?: number;
57
+ }
58
+ /**
59
+ * Test suite optimization result
60
+ */
61
+ export interface TestSuiteOptimizationResult {
62
+ /** Optimized tests */
63
+ optimizedTests: OptimizedTest[];
64
+ /** Removed tests */
65
+ removedTests: TestInput[];
66
+ /** Optimization metrics */
67
+ metrics: {
68
+ /** Original test count */
69
+ originalCount: number;
70
+ /** Optimized test count */
71
+ optimizedCount: number;
72
+ /** Reduction percentage */
73
+ reductionPercentage: number;
74
+ /** Speedup factor */
75
+ speedupFactor: number;
76
+ /** Coverage maintained (0-1) */
77
+ coverageMaintained: number;
78
+ /** Optimization time (ms) */
79
+ optimizationTime: number;
80
+ };
81
+ /** Sublinear algorithm details */
82
+ algorithmDetails: {
83
+ /** Algorithm used */
84
+ algorithm: string;
85
+ /** Time complexity */
86
+ timeComplexity: string;
87
+ /** Space complexity */
88
+ spaceComplexity: string;
89
+ /** Dimension reduction */
90
+ dimensionReduction?: {
91
+ original: number;
92
+ reduced: number;
93
+ ratio: number;
94
+ };
95
+ };
96
+ /** Failure predictions */
97
+ predictions?: {
98
+ /** Test ID */
99
+ testId: string;
100
+ /** Failure probability */
101
+ probability: number;
102
+ /** Temporal lead (ms) */
103
+ temporalLeadMs: number;
104
+ }[];
105
+ /** Redundancy analysis */
106
+ redundancy?: {
107
+ /** Redundancy groups */
108
+ groups: number[][];
109
+ /** Redundancy rate */
110
+ redundancyRate: number;
111
+ /** Savings from deduplication */
112
+ timeSaved: number;
113
+ };
114
+ /** Recommendations */
115
+ recommendations: string[];
116
+ }
117
+ /**
118
+ * Optimize test suite with sublinear algorithms
119
+ *
120
+ * @param params - Test suite optimization parameters
121
+ * @returns Tool response with optimized tests and metrics
122
+ */
123
+ export declare function optimizeTestSuite(params: TestSuiteOptimizationParams): Promise<QEToolResponse<TestSuiteOptimizationResult>>;
124
+ //# sourceMappingURL=optimize-test-suite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimize-test-suite.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/tools/qe/test-generation/optimize-test-suite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,362 @@
1
+ "use strict";
2
+ /**
3
+ * Optimize Test Suite Tool
4
+ * Sublinear test suite optimization with Johnson-Lindenstrauss and redundancy detection
5
+ *
6
+ * @module tools/qe/test-generation/optimize-test-suite
7
+ * @version 1.0.0
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.optimizeTestSuite = optimizeTestSuite;
11
+ const SecureRandom_js_1 = require("../../../../utils/SecureRandom.js");
12
+ /**
13
+ * Apply Johnson-Lindenstrauss dimension reduction
14
+ */
15
+ function applyJohnsonLindenstrauss(tests, params) {
16
+ const originalCount = tests.length;
17
+ const targetReduction = params.targetReduction || 0.3;
18
+ const targetCount = Math.max(1, Math.ceil(originalCount * targetReduction));
19
+ // Separate critical and non-critical tests
20
+ const criticalTests = params.preserveCritical
21
+ ? tests.filter(t => t.priority === 'critical')
22
+ : [];
23
+ const nonCriticalTests = tests.filter(t => t.priority !== 'critical');
24
+ // Calculate JL reduced dimension: O(log n / ε²)
25
+ const epsilon = 0.1; // Distance preservation error
26
+ const reducedDim = Math.ceil(Math.log(nonCriticalTests.length) / (epsilon * epsilon));
27
+ // Score tests for selection
28
+ const scoredTests = nonCriticalTests.map(test => ({
29
+ ...test,
30
+ score: calculateTestScore(test)
31
+ }));
32
+ // Sort by score (descending)
33
+ scoredTests.sort((a, b) => b.score - a.score);
34
+ // Select top tests
35
+ const selectedNonCritical = scoredTests.slice(0, Math.max(0, targetCount - criticalTests.length));
36
+ const optimized = [
37
+ ...criticalTests.map(t => ({ ...t, score: 1.0 })),
38
+ ...selectedNonCritical
39
+ ];
40
+ const removed = tests.filter(t => !optimized.find(o => o.id === t.id));
41
+ return {
42
+ optimized,
43
+ removed,
44
+ dimensions: {
45
+ original: originalCount,
46
+ reduced: reducedDim
47
+ }
48
+ };
49
+ }
50
+ /**
51
+ * Apply temporal advantage prediction
52
+ */
53
+ function applyTemporalAdvantage(tests, params) {
54
+ // Predict failure probability for each test
55
+ const predictions = tests.map(test => {
56
+ const baseProbability = test.failureRate || 0.1;
57
+ const randomFactor = SecureRandom_js_1.SecureRandom.randomFloat() * 0.2;
58
+ const probability = Math.min(baseProbability + randomFactor, 1.0);
59
+ // Temporal advantage: faster tests get earlier execution
60
+ const temporalLeadMs = Math.round((1 - (test.duration || 1000) / 5000) * 1000);
61
+ return {
62
+ testId: test.id,
63
+ probability,
64
+ temporalLeadMs
65
+ };
66
+ });
67
+ // Sort tests by failure probability (descending) if prediction enabled
68
+ const optimized = params.predictFailures
69
+ ? [...tests].sort((a, b) => {
70
+ const aProb = predictions.find(p => p.testId === a.id)?.probability || 0;
71
+ const bProb = predictions.find(p => p.testId === b.id)?.probability || 0;
72
+ return bProb - aProb;
73
+ }).map(test => ({
74
+ ...test,
75
+ score: predictions.find(p => p.testId === test.id)?.probability || 0,
76
+ failureProbability: predictions.find(p => p.testId === test.id)?.probability,
77
+ temporalAdvantage: predictions.find(p => p.testId === test.id)?.temporalLeadMs
78
+ }))
79
+ : tests.map(test => ({ ...test, score: 0.5 }));
80
+ return { optimized, predictions };
81
+ }
82
+ /**
83
+ * Detect and remove redundant tests
84
+ */
85
+ function detectRedundancy(tests, params) {
86
+ const coverageMap = new Map();
87
+ const redundancyGroups = [];
88
+ // Group tests by coverage overlap
89
+ tests.forEach((test, index) => {
90
+ const coverage = test.coverage || [];
91
+ const key = JSON.stringify(coverage.sort());
92
+ if (!coverageMap.has(key)) {
93
+ coverageMap.set(key, []);
94
+ }
95
+ const group = coverageMap.get(key);
96
+ if (group.length > 0) {
97
+ // Add to redundancy group
98
+ const groupIndices = [...group.map(t => tests.indexOf(t)), index];
99
+ redundancyGroups.push(groupIndices);
100
+ }
101
+ group.push(test);
102
+ });
103
+ // Keep one test per redundancy group (the fastest one)
104
+ const keptTests = new Set();
105
+ const removedTests = [];
106
+ coverageMap.forEach(group => {
107
+ if (group.length > 1) {
108
+ // Keep the fastest test
109
+ const sorted = [...group].sort((a, b) => (a.duration || 1000) - (b.duration || 1000));
110
+ keptTests.add(sorted[0].id);
111
+ removedTests.push(...sorted.slice(1));
112
+ }
113
+ else {
114
+ keptTests.add(group[0].id);
115
+ }
116
+ });
117
+ const optimized = tests
118
+ .filter(t => keptTests.has(t.id))
119
+ .map(t => ({ ...t, score: 1.0, redundancyGroup: 0 }));
120
+ const timeSaved = removedTests.reduce((sum, t) => sum + (t.duration || 0), 0);
121
+ return {
122
+ optimized,
123
+ removed: removedTests,
124
+ groups: redundancyGroups,
125
+ timeSaved
126
+ };
127
+ }
128
+ /**
129
+ * Apply hybrid optimization (combines multiple algorithms)
130
+ */
131
+ function applyHybridOptimization(tests, params) {
132
+ // Step 1: Remove redundant tests
133
+ const { optimized: afterRedundancy, removed: redundantTests, groups, timeSaved } = detectRedundancy(tests, params);
134
+ // Step 2: Apply temporal advantage prediction
135
+ const { optimized: afterTemporal, predictions } = applyTemporalAdvantage(afterRedundancy, params);
136
+ // Step 3: Apply JL dimension reduction if still too many tests
137
+ const targetCount = Math.ceil(tests.length * (params.targetReduction || 0.3));
138
+ if (afterTemporal.length > targetCount) {
139
+ const { optimized: final, removed: jlRemoved, dimensions } = applyJohnsonLindenstrauss(afterTemporal, params);
140
+ return {
141
+ optimized: final,
142
+ removed: [...redundantTests, ...jlRemoved],
143
+ dimensions,
144
+ predictions,
145
+ redundancy: { groups, timeSaved }
146
+ };
147
+ }
148
+ return {
149
+ optimized: afterTemporal,
150
+ removed: redundantTests,
151
+ predictions,
152
+ redundancy: { groups, timeSaved }
153
+ };
154
+ }
155
+ /**
156
+ * Calculate test score for prioritization
157
+ */
158
+ function calculateTestScore(test) {
159
+ let score = 0.5; // Base score
160
+ // Priority boost
161
+ switch (test.priority) {
162
+ case 'critical':
163
+ score += 0.4;
164
+ break;
165
+ case 'high':
166
+ score += 0.3;
167
+ break;
168
+ case 'medium':
169
+ score += 0.1;
170
+ break;
171
+ default: break;
172
+ }
173
+ // Coverage contribution boost
174
+ const coverageContribution = (test.coverage?.length || 0) / 100;
175
+ score += Math.min(coverageContribution, 0.2);
176
+ // Speed penalty (slower tests get lower score)
177
+ const speedPenalty = Math.min((test.duration || 1000) / 10000, 0.1);
178
+ score -= speedPenalty;
179
+ // Failure rate boost (flaky tests should be kept to fix them)
180
+ if (test.failureRate && test.failureRate > 0.1) {
181
+ score += 0.1;
182
+ }
183
+ return Math.max(0, Math.min(score, 1.0));
184
+ }
185
+ /**
186
+ * Calculate coverage maintained
187
+ */
188
+ function calculateCoverageMaintained(originalTests, optimizedTests) {
189
+ const originalCoverage = new Set();
190
+ const optimizedCoverage = new Set();
191
+ originalTests.forEach(test => {
192
+ test.coverage?.forEach(line => originalCoverage.add(line));
193
+ });
194
+ optimizedTests.forEach(test => {
195
+ test.coverage?.forEach(line => optimizedCoverage.add(line));
196
+ });
197
+ if (originalCoverage.size === 0)
198
+ return 1.0;
199
+ return optimizedCoverage.size / originalCoverage.size;
200
+ }
201
+ /**
202
+ * Generate recommendations
203
+ */
204
+ function generateRecommendations(originalCount, optimizedCount, params, redundancyRate) {
205
+ const recommendations = [];
206
+ const reduction = ((originalCount - optimizedCount) / originalCount) * 100;
207
+ if (reduction > 50) {
208
+ recommendations.push(`High reduction achieved (${reduction.toFixed(1)}%) - validate coverage is maintained`);
209
+ }
210
+ if (redundancyRate && redundancyRate > 0.3) {
211
+ recommendations.push(`${(redundancyRate * 100).toFixed(1)}% redundant tests detected - consider test suite refactoring`);
212
+ }
213
+ if (!params.preserveCritical) {
214
+ recommendations.push('Enable critical test preservation to ensure important tests are retained');
215
+ }
216
+ if (!params.predictFailures) {
217
+ recommendations.push('Enable failure prediction to prioritize flaky tests');
218
+ }
219
+ if (params.algorithm === 'johnson-lindenstrauss' && originalCount < 50) {
220
+ recommendations.push('Consider redundancy detection for smaller test suites');
221
+ }
222
+ return recommendations;
223
+ }
224
+ /**
225
+ * Optimize test suite with sublinear algorithms
226
+ *
227
+ * @param params - Test suite optimization parameters
228
+ * @returns Tool response with optimized tests and metrics
229
+ */
230
+ async function optimizeTestSuite(params) {
231
+ const startTime = Date.now();
232
+ const requestId = `optimize-suite-${Date.now()}-${SecureRandom_js_1.SecureRandom.generateId(8)}`;
233
+ try {
234
+ let optimized;
235
+ let removed;
236
+ let dimensions;
237
+ let predictions;
238
+ let redundancy;
239
+ let algorithm;
240
+ let timeComplexity;
241
+ let spaceComplexity;
242
+ switch (params.algorithm) {
243
+ case 'johnson-lindenstrauss': {
244
+ const result = applyJohnsonLindenstrauss(params.tests, params);
245
+ optimized = result.optimized;
246
+ removed = result.removed;
247
+ dimensions = result.dimensions;
248
+ algorithm = 'Johnson-Lindenstrauss Dimension Reduction';
249
+ timeComplexity = 'O(log n / ε²)';
250
+ spaceComplexity = 'O(log n)';
251
+ break;
252
+ }
253
+ case 'temporal-advantage': {
254
+ const result = applyTemporalAdvantage(params.tests, params);
255
+ optimized = result.optimized;
256
+ removed = [];
257
+ predictions = result.predictions;
258
+ algorithm = 'Temporal Advantage Prediction';
259
+ timeComplexity = 'O(n log n)';
260
+ spaceComplexity = 'O(n)';
261
+ break;
262
+ }
263
+ case 'redundancy-detection': {
264
+ const result = detectRedundancy(params.tests, params);
265
+ optimized = result.optimized;
266
+ removed = result.removed;
267
+ redundancy = {
268
+ groups: result.groups,
269
+ timeSaved: result.timeSaved,
270
+ redundancyRate: removed.length / params.tests.length
271
+ };
272
+ algorithm = 'Redundancy Detection';
273
+ timeComplexity = 'O(n log n)';
274
+ spaceComplexity = 'O(n)';
275
+ break;
276
+ }
277
+ case 'hybrid':
278
+ default: {
279
+ const result = applyHybridOptimization(params.tests, params);
280
+ optimized = result.optimized;
281
+ removed = result.removed;
282
+ dimensions = result.dimensions;
283
+ predictions = result.predictions;
284
+ if (result.redundancy) {
285
+ redundancy = {
286
+ ...result.redundancy,
287
+ redundancyRate: removed.length / params.tests.length
288
+ };
289
+ }
290
+ algorithm = 'Hybrid (Redundancy + Temporal + JL)';
291
+ timeComplexity = 'O(n log n + log n / ε²)';
292
+ spaceComplexity = 'O(log n)';
293
+ break;
294
+ }
295
+ }
296
+ const originalCount = params.tests.length;
297
+ const optimizedCount = optimized.length;
298
+ const reductionPercentage = ((originalCount - optimizedCount) / originalCount) * 100;
299
+ const speedupFactor = originalCount / optimizedCount;
300
+ const coverageMaintained = calculateCoverageMaintained(params.tests, optimized);
301
+ const recommendations = generateRecommendations(originalCount, optimizedCount, params, redundancy?.redundancyRate);
302
+ const executionTime = Date.now() - startTime;
303
+ const metadata = {
304
+ requestId,
305
+ timestamp: new Date().toISOString(),
306
+ executionTime,
307
+ agent: 'test-suite-optimizer',
308
+ version: '1.0.0'
309
+ };
310
+ return {
311
+ success: true,
312
+ data: {
313
+ optimizedTests: optimized,
314
+ removedTests: removed,
315
+ metrics: {
316
+ originalCount,
317
+ optimizedCount,
318
+ reductionPercentage,
319
+ speedupFactor,
320
+ coverageMaintained,
321
+ optimizationTime: executionTime
322
+ },
323
+ algorithmDetails: {
324
+ algorithm,
325
+ timeComplexity,
326
+ spaceComplexity,
327
+ dimensionReduction: dimensions
328
+ ? {
329
+ original: dimensions.original,
330
+ reduced: dimensions.reduced,
331
+ ratio: dimensions.reduced / dimensions.original
332
+ }
333
+ : undefined
334
+ },
335
+ predictions: params.predictFailures ? predictions : undefined,
336
+ redundancy,
337
+ recommendations
338
+ },
339
+ metadata
340
+ };
341
+ }
342
+ catch (error) {
343
+ const qeError = {
344
+ code: 'TEST_SUITE_OPTIMIZATION_FAILED',
345
+ message: error instanceof Error ? error.message : 'Unknown error during test suite optimization',
346
+ details: { params },
347
+ stack: error instanceof Error ? error.stack : undefined
348
+ };
349
+ return {
350
+ success: false,
351
+ error: qeError,
352
+ metadata: {
353
+ requestId,
354
+ timestamp: new Date().toISOString(),
355
+ executionTime: Date.now() - startTime,
356
+ agent: 'test-suite-optimizer',
357
+ version: '1.0.0'
358
+ }
359
+ };
360
+ }
361
+ }
362
+ //# sourceMappingURL=optimize-test-suite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimize-test-suite.js","sourceRoot":"","sources":["../../../../../src/mcp/tools/qe/test-generation/optimize-test-suite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * AI-Powered Screenshot Comparison Tool
3
+ *
4
+ * Compares screenshots using AI-powered visual diff with threshold-based detection.
5
+ * Provides visual regression scoring with semantic understanding.
6
+ *
7
+ * @version 1.0.0
8
+ * @author Agentic QE Team
9
+ * @domain visual-testing
10
+ */
11
+ import { QEToolResponse } from '../shared/types.js';
12
+ /**
13
+ * Parameters for AI-powered screenshot comparison
14
+ */
15
+ export interface CompareScreenshotsParams {
16
+ /** Path to baseline screenshot */
17
+ baseline: string;
18
+ /** Path to current screenshot */
19
+ current: string;
20
+ /** Diff threshold (0-1), default 0.05 (5%) */
21
+ threshold: number;
22
+ /** Use AI-powered comparison (vs pixel-based) */
23
+ useAI: boolean;
24
+ /** Additional comparison options */
25
+ options?: {
26
+ /** Ignore antialiasing differences */
27
+ ignoreAntialiasing?: boolean;
28
+ /** Ignore color differences */
29
+ ignoreColors?: boolean;
30
+ /** Regions to ignore in comparison */
31
+ ignoreRegions?: Array<{
32
+ x: number;
33
+ y: number;
34
+ width: number;
35
+ height: number;
36
+ }>;
37
+ /** Generate visual diff image */
38
+ generateDiffImage?: boolean;
39
+ };
40
+ }
41
+ /**
42
+ * Screenshot comparison result
43
+ */
44
+ export interface ScreenshotComparison {
45
+ /** Comparison identifier */
46
+ id: string;
47
+ /** Overall match status */
48
+ status: 'identical' | 'minor-diff' | 'major-diff' | 'different';
49
+ /** Pixel difference percentage (0-1) */
50
+ pixelDiffPercentage: number;
51
+ /** Structural similarity score (0-1) */
52
+ structuralSimilarity: number;
53
+ /** AI visual regression score (0-1, higher = more different) */
54
+ visualRegressionScore: number;
55
+ /** Threshold used for comparison */
56
+ threshold: number;
57
+ /** Comparison method used */
58
+ method: 'pixel-diff' | 'structural-similarity' | 'ai-visual-diff';
59
+ /** Detected differences */
60
+ differences: VisualDifference[];
61
+ /** Performance metrics */
62
+ performance: {
63
+ /** Comparison time (ms) */
64
+ comparisonTime: number;
65
+ /** AI inference time (ms, if AI used) */
66
+ aiInferenceTime?: number;
67
+ };
68
+ /** Generated diff image path */
69
+ diffImagePath?: string;
70
+ /** Recommendations */
71
+ recommendations: string[];
72
+ }
73
+ /**
74
+ * Visual difference detected
75
+ */
76
+ export interface VisualDifference {
77
+ /** Difference type */
78
+ type: 'layout-shift' | 'color-change' | 'content-change' | 'missing-element' | 'new-element';
79
+ /** Severity of difference */
80
+ severity: 'low' | 'medium' | 'high';
81
+ /** Affected region */
82
+ region: {
83
+ x: number;
84
+ y: number;
85
+ width: number;
86
+ height: number;
87
+ };
88
+ /** Confidence score (0-1) */
89
+ confidence: number;
90
+ /** Human-readable description */
91
+ description: string;
92
+ }
93
+ /**
94
+ * Compare screenshots with AI-powered visual diff
95
+ *
96
+ * @param params - Comparison parameters
97
+ * @returns Screenshot comparison result
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * const result = await compareScreenshotsAI({
102
+ * baseline: './screenshots/baseline.png',
103
+ * current: './screenshots/current.png',
104
+ * threshold: 0.05,
105
+ * useAI: true,
106
+ * options: {
107
+ * ignoreAntialiasing: true,
108
+ * generateDiffImage: true
109
+ * }
110
+ * });
111
+ *
112
+ * if (result.success && result.data.status !== 'identical') {
113
+ * console.log(`Visual regression score: ${result.data.visualRegressionScore}`);
114
+ * console.log(`Differences found: ${result.data.differences.length}`);
115
+ * }
116
+ * ```
117
+ */
118
+ export declare function compareScreenshotsAI(params: CompareScreenshotsParams): Promise<QEToolResponse<ScreenshotComparison>>;
119
+ //# sourceMappingURL=compare-screenshots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare-screenshots.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/tools/qe/visual/compare-screenshots.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,cAAc,EAA6B,MAAM,oBAAoB,CAAC;AAG/E;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IAEjB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAEhB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAElB,iDAAiD;IACjD,KAAK,EAAE,OAAO,CAAC;IAEf,oCAAoC;IACpC,OAAO,CAAC,EAAE;QACR,sCAAsC;QACtC,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAE7B,+BAA+B;QAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;QAEvB,sCAAsC;QACtC,aAAa,CAAC,EAAE,KAAK,CAAC;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAE/E,iCAAiC;QACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,4BAA4B;IAC5B,EAAE,EAAE,MAAM,CAAC;IAEX,2BAA2B;IAC3B,MAAM,EAAE,WAAW,GAAG,YAAY,GAAG,YAAY,GAAG,WAAW,CAAC;IAEhE,wCAAwC;IACxC,mBAAmB,EAAE,MAAM,CAAC;IAE5B,wCAAwC;IACxC,oBAAoB,EAAE,MAAM,CAAC;IAE7B,gEAAgE;IAChE,qBAAqB,EAAE,MAAM,CAAC;IAE9B,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAElB,6BAA6B;IAC7B,MAAM,EAAE,YAAY,GAAG,uBAAuB,GAAG,gBAAgB,CAAC;IAElE,2BAA2B;IAC3B,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAEhC,0BAA0B;IAC1B,WAAW,EAAE;QACX,2BAA2B;QAC3B,cAAc,EAAE,MAAM,CAAC;QAEvB,yCAAyC;QACzC,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IAEF,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,sBAAsB;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sBAAsB;IACtB,IAAI,EAAE,cAAc,GAAG,cAAc,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,aAAa,CAAC;IAE7F,6BAA6B;IAC7B,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAEpC,sBAAsB;IACtB,MAAM,EAAE;QACN,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IAEnB,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC,CAoD/C"}