agentic-qe 1.4.4 → 1.5.1

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 (390) 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 +426 -5
  115. package/README.md +24 -19
  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/mcp/handlers/coordination/index.d.ts +14 -14
  121. package/dist/mcp/handlers/coordination/index.d.ts.map +1 -1
  122. package/dist/mcp/handlers/coordination/index.js +14 -14
  123. package/dist/mcp/handlers/coordination/index.js.map +1 -1
  124. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -1
  125. package/dist/mcp/handlers/phase2/Phase2Tools.js +39 -10
  126. package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -1
  127. package/dist/mcp/handlers/phase3/Phase3DomainTools.d.ts +63 -0
  128. package/dist/mcp/handlers/phase3/Phase3DomainTools.d.ts.map +1 -0
  129. package/dist/mcp/handlers/phase3/Phase3DomainTools.js +885 -0
  130. package/dist/mcp/handlers/phase3/Phase3DomainTools.js.map +1 -0
  131. package/dist/mcp/handlers/phase3/index.d.ts +6 -0
  132. package/dist/mcp/handlers/phase3/index.d.ts.map +1 -0
  133. package/dist/mcp/handlers/phase3/index.js +10 -0
  134. package/dist/mcp/handlers/phase3/index.js.map +1 -0
  135. package/dist/mcp/handlers/prediction/index.d.ts +10 -10
  136. package/dist/mcp/handlers/prediction/index.d.ts.map +1 -1
  137. package/dist/mcp/handlers/prediction/index.js +10 -10
  138. package/dist/mcp/handlers/prediction/index.js.map +1 -1
  139. package/dist/mcp/handlers/security/check-authz.d.ts +152 -0
  140. package/dist/mcp/handlers/security/check-authz.d.ts.map +1 -0
  141. package/dist/mcp/handlers/security/check-authz.js +434 -0
  142. package/dist/mcp/handlers/security/check-authz.js.map +1 -0
  143. package/dist/mcp/handlers/security/generate-report.d.ts +156 -0
  144. package/dist/mcp/handlers/security/generate-report.d.ts.map +1 -0
  145. package/dist/mcp/handlers/security/generate-report.js +469 -0
  146. package/dist/mcp/handlers/security/generate-report.js.map +1 -0
  147. package/dist/mcp/handlers/security/index.d.ts +80 -0
  148. package/dist/mcp/handlers/security/index.d.ts.map +1 -0
  149. package/dist/mcp/handlers/security/index.js +91 -0
  150. package/dist/mcp/handlers/security/index.js.map +1 -0
  151. package/dist/mcp/handlers/security/scan-comprehensive.d.ts +66 -0
  152. package/dist/mcp/handlers/security/scan-comprehensive.d.ts.map +1 -0
  153. package/dist/mcp/handlers/security/scan-comprehensive.js +296 -0
  154. package/dist/mcp/handlers/security/scan-comprehensive.js.map +1 -0
  155. package/dist/mcp/handlers/security/scan-dependencies.d.ts +148 -0
  156. package/dist/mcp/handlers/security/scan-dependencies.d.ts.map +1 -0
  157. package/dist/mcp/handlers/security/scan-dependencies.js +354 -0
  158. package/dist/mcp/handlers/security/scan-dependencies.js.map +1 -0
  159. package/dist/mcp/handlers/security/validate-auth.d.ts +128 -0
  160. package/dist/mcp/handlers/security/validate-auth.d.ts.map +1 -0
  161. package/dist/mcp/handlers/security/validate-auth.js +294 -0
  162. package/dist/mcp/handlers/security/validate-auth.js.map +1 -0
  163. package/dist/mcp/handlers/test/generate-integration-tests.d.ts +95 -0
  164. package/dist/mcp/handlers/test/generate-integration-tests.d.ts.map +1 -0
  165. package/dist/mcp/handlers/test/generate-integration-tests.js +286 -0
  166. package/dist/mcp/handlers/test/generate-integration-tests.js.map +1 -0
  167. package/dist/mcp/handlers/test/generate-unit-tests.d.ts +89 -0
  168. package/dist/mcp/handlers/test/generate-unit-tests.d.ts.map +1 -0
  169. package/dist/mcp/handlers/test/generate-unit-tests.js +273 -0
  170. package/dist/mcp/handlers/test/generate-unit-tests.js.map +1 -0
  171. package/dist/mcp/handlers/test/optimize-test-suite.d.ts +97 -0
  172. package/dist/mcp/handlers/test/optimize-test-suite.d.ts.map +1 -0
  173. package/dist/mcp/handlers/test/optimize-test-suite.js +282 -0
  174. package/dist/mcp/handlers/test/optimize-test-suite.js.map +1 -0
  175. package/dist/mcp/server.d.ts.map +1 -1
  176. package/dist/mcp/server.js +211 -0
  177. package/dist/mcp/server.js.map +1 -1
  178. package/dist/mcp/tools/deprecated.d.ts +1390 -0
  179. package/dist/mcp/tools/deprecated.d.ts.map +1 -0
  180. package/dist/mcp/tools/deprecated.js +859 -0
  181. package/dist/mcp/tools/deprecated.js.map +1 -0
  182. package/dist/mcp/tools/qe/api-contract/index.d.ts +138 -0
  183. package/dist/mcp/tools/qe/api-contract/index.d.ts.map +1 -0
  184. package/dist/mcp/tools/qe/api-contract/index.js +572 -0
  185. package/dist/mcp/tools/qe/api-contract/index.js.map +1 -0
  186. package/dist/mcp/tools/qe/code-quality/analyze-complexity.d.ts +110 -0
  187. package/dist/mcp/tools/qe/code-quality/analyze-complexity.d.ts.map +1 -0
  188. package/dist/mcp/tools/qe/code-quality/analyze-complexity.js +381 -0
  189. package/dist/mcp/tools/qe/code-quality/analyze-complexity.js.map +1 -0
  190. package/dist/mcp/tools/qe/code-quality/calculate-quality-metrics.d.ts +115 -0
  191. package/dist/mcp/tools/qe/code-quality/calculate-quality-metrics.d.ts.map +1 -0
  192. package/dist/mcp/tools/qe/code-quality/calculate-quality-metrics.js +461 -0
  193. package/dist/mcp/tools/qe/code-quality/calculate-quality-metrics.js.map +1 -0
  194. package/dist/mcp/tools/qe/code-quality/index.d.ts +12 -0
  195. package/dist/mcp/tools/qe/code-quality/index.d.ts.map +1 -0
  196. package/dist/mcp/tools/qe/code-quality/index.js +30 -0
  197. package/dist/mcp/tools/qe/code-quality/index.js.map +1 -0
  198. package/dist/mcp/tools/qe/coverage/analyze-with-risk-scoring.d.ts +58 -0
  199. package/dist/mcp/tools/qe/coverage/analyze-with-risk-scoring.d.ts.map +1 -0
  200. package/dist/mcp/tools/qe/coverage/analyze-with-risk-scoring.js +172 -0
  201. package/dist/mcp/tools/qe/coverage/analyze-with-risk-scoring.js.map +1 -0
  202. package/dist/mcp/tools/qe/coverage/calculate-trends.d.ts +73 -0
  203. package/dist/mcp/tools/qe/coverage/calculate-trends.d.ts.map +1 -0
  204. package/dist/mcp/tools/qe/coverage/calculate-trends.js +240 -0
  205. package/dist/mcp/tools/qe/coverage/calculate-trends.js.map +1 -0
  206. package/dist/mcp/tools/qe/coverage/detect-gaps-ml.d.ts +38 -0
  207. package/dist/mcp/tools/qe/coverage/detect-gaps-ml.d.ts.map +1 -0
  208. package/dist/mcp/tools/qe/coverage/detect-gaps-ml.js +204 -0
  209. package/dist/mcp/tools/qe/coverage/detect-gaps-ml.js.map +1 -0
  210. package/dist/mcp/tools/qe/coverage/index.d.ts +12 -0
  211. package/dist/mcp/tools/qe/coverage/index.d.ts.map +1 -0
  212. package/dist/mcp/tools/qe/coverage/index.js +23 -0
  213. package/dist/mcp/tools/qe/coverage/index.js.map +1 -0
  214. package/dist/mcp/tools/qe/coverage/recommend-tests.d.ts +46 -0
  215. package/dist/mcp/tools/qe/coverage/recommend-tests.d.ts.map +1 -0
  216. package/dist/mcp/tools/qe/coverage/recommend-tests.js +248 -0
  217. package/dist/mcp/tools/qe/coverage/recommend-tests.js.map +1 -0
  218. package/dist/mcp/tools/qe/flaky-detection/analyze-patterns.d.ts +179 -0
  219. package/dist/mcp/tools/qe/flaky-detection/analyze-patterns.d.ts.map +1 -0
  220. package/dist/mcp/tools/qe/flaky-detection/analyze-patterns.js +554 -0
  221. package/dist/mcp/tools/qe/flaky-detection/analyze-patterns.js.map +1 -0
  222. package/dist/mcp/tools/qe/flaky-detection/detect-statistical.d.ts +172 -0
  223. package/dist/mcp/tools/qe/flaky-detection/detect-statistical.d.ts.map +1 -0
  224. package/dist/mcp/tools/qe/flaky-detection/detect-statistical.js +498 -0
  225. package/dist/mcp/tools/qe/flaky-detection/detect-statistical.js.map +1 -0
  226. package/dist/mcp/tools/qe/flaky-detection/index.d.ts +35 -0
  227. package/dist/mcp/tools/qe/flaky-detection/index.d.ts.map +1 -0
  228. package/dist/mcp/tools/qe/flaky-detection/index.js +66 -0
  229. package/dist/mcp/tools/qe/flaky-detection/index.js.map +1 -0
  230. package/dist/mcp/tools/qe/flaky-detection/stabilize-auto.d.ts +159 -0
  231. package/dist/mcp/tools/qe/flaky-detection/stabilize-auto.d.ts.map +1 -0
  232. package/dist/mcp/tools/qe/flaky-detection/stabilize-auto.js +462 -0
  233. package/dist/mcp/tools/qe/flaky-detection/stabilize-auto.js.map +1 -0
  234. package/dist/mcp/tools/qe/fleet/index.d.ts +422 -0
  235. package/dist/mcp/tools/qe/fleet/index.d.ts.map +1 -0
  236. package/dist/mcp/tools/qe/fleet/index.js +652 -0
  237. package/dist/mcp/tools/qe/fleet/index.js.map +1 -0
  238. package/dist/mcp/tools/qe/performance/analyze-bottlenecks.d.ts +180 -0
  239. package/dist/mcp/tools/qe/performance/analyze-bottlenecks.d.ts.map +1 -0
  240. package/dist/mcp/tools/qe/performance/analyze-bottlenecks.js +347 -0
  241. package/dist/mcp/tools/qe/performance/analyze-bottlenecks.js.map +1 -0
  242. package/dist/mcp/tools/qe/performance/generate-report.d.ts +146 -0
  243. package/dist/mcp/tools/qe/performance/generate-report.d.ts.map +1 -0
  244. package/dist/mcp/tools/qe/performance/generate-report.js +354 -0
  245. package/dist/mcp/tools/qe/performance/generate-report.js.map +1 -0
  246. package/dist/mcp/tools/qe/performance/index.d.ts +13 -0
  247. package/dist/mcp/tools/qe/performance/index.d.ts.map +1 -0
  248. package/dist/mcp/tools/qe/performance/index.js +24 -0
  249. package/dist/mcp/tools/qe/performance/index.js.map +1 -0
  250. package/dist/mcp/tools/qe/performance/monitor-realtime.d.ts +120 -0
  251. package/dist/mcp/tools/qe/performance/monitor-realtime.d.ts.map +1 -0
  252. package/dist/mcp/tools/qe/performance/monitor-realtime.js +215 -0
  253. package/dist/mcp/tools/qe/performance/monitor-realtime.js.map +1 -0
  254. package/dist/mcp/tools/qe/performance/run-benchmark.d.ts +68 -0
  255. package/dist/mcp/tools/qe/performance/run-benchmark.d.ts.map +1 -0
  256. package/dist/mcp/tools/qe/performance/run-benchmark.js +120 -0
  257. package/dist/mcp/tools/qe/performance/run-benchmark.js.map +1 -0
  258. package/dist/mcp/tools/qe/quality-gates/assess-deployment-risk.d.ts +239 -0
  259. package/dist/mcp/tools/qe/quality-gates/assess-deployment-risk.d.ts.map +1 -0
  260. package/dist/mcp/tools/qe/quality-gates/assess-deployment-risk.js +671 -0
  261. package/dist/mcp/tools/qe/quality-gates/assess-deployment-risk.js.map +1 -0
  262. package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.d.ts +219 -0
  263. package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.d.ts.map +1 -0
  264. package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.js +732 -0
  265. package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.js.map +1 -0
  266. package/dist/mcp/tools/qe/quality-gates/generate-quality-report.d.ts +447 -0
  267. package/dist/mcp/tools/qe/quality-gates/generate-quality-report.d.ts.map +1 -0
  268. package/dist/mcp/tools/qe/quality-gates/generate-quality-report.js +551 -0
  269. package/dist/mcp/tools/qe/quality-gates/generate-quality-report.js.map +1 -0
  270. package/dist/mcp/tools/qe/quality-gates/index.d.ts +40 -0
  271. package/dist/mcp/tools/qe/quality-gates/index.d.ts.map +1 -0
  272. package/dist/mcp/tools/qe/quality-gates/index.js +56 -0
  273. package/dist/mcp/tools/qe/quality-gates/index.js.map +1 -0
  274. package/dist/mcp/tools/qe/quality-gates/validate-quality-metrics.d.ts +226 -0
  275. package/dist/mcp/tools/qe/quality-gates/validate-quality-metrics.d.ts.map +1 -0
  276. package/dist/mcp/tools/qe/quality-gates/validate-quality-metrics.js +603 -0
  277. package/dist/mcp/tools/qe/quality-gates/validate-quality-metrics.js.map +1 -0
  278. package/dist/mcp/tools/qe/regression/analyze-risk.d.ts +212 -0
  279. package/dist/mcp/tools/qe/regression/analyze-risk.d.ts.map +1 -0
  280. package/dist/mcp/tools/qe/regression/analyze-risk.js +617 -0
  281. package/dist/mcp/tools/qe/regression/analyze-risk.js.map +1 -0
  282. package/dist/mcp/tools/qe/regression/index.d.ts +36 -0
  283. package/dist/mcp/tools/qe/regression/index.d.ts.map +1 -0
  284. package/dist/mcp/tools/qe/regression/index.js +63 -0
  285. package/dist/mcp/tools/qe/regression/index.js.map +1 -0
  286. package/dist/mcp/tools/qe/regression/select-tests.d.ts +241 -0
  287. package/dist/mcp/tools/qe/regression/select-tests.d.ts.map +1 -0
  288. package/dist/mcp/tools/qe/regression/select-tests.js +601 -0
  289. package/dist/mcp/tools/qe/regression/select-tests.js.map +1 -0
  290. package/dist/mcp/tools/qe/requirements/generate-bdd-scenarios.d.ts +134 -0
  291. package/dist/mcp/tools/qe/requirements/generate-bdd-scenarios.d.ts.map +1 -0
  292. package/dist/mcp/tools/qe/requirements/generate-bdd-scenarios.js +737 -0
  293. package/dist/mcp/tools/qe/requirements/generate-bdd-scenarios.js.map +1 -0
  294. package/dist/mcp/tools/qe/requirements/index.d.ts +40 -0
  295. package/dist/mcp/tools/qe/requirements/index.d.ts.map +1 -0
  296. package/dist/mcp/tools/qe/requirements/index.js +84 -0
  297. package/dist/mcp/tools/qe/requirements/index.js.map +1 -0
  298. package/dist/mcp/tools/qe/requirements/validate-requirements.d.ts +196 -0
  299. package/dist/mcp/tools/qe/requirements/validate-requirements.d.ts.map +1 -0
  300. package/dist/mcp/tools/qe/requirements/validate-requirements.js +740 -0
  301. package/dist/mcp/tools/qe/requirements/validate-requirements.js.map +1 -0
  302. package/dist/mcp/tools/qe/security/detect-vulnerabilities.d.ts +300 -0
  303. package/dist/mcp/tools/qe/security/detect-vulnerabilities.d.ts.map +1 -0
  304. package/dist/mcp/tools/qe/security/detect-vulnerabilities.js +492 -0
  305. package/dist/mcp/tools/qe/security/detect-vulnerabilities.js.map +1 -0
  306. package/dist/mcp/tools/qe/security/index.d.ts +34 -0
  307. package/dist/mcp/tools/qe/security/index.d.ts.map +1 -0
  308. package/dist/mcp/tools/qe/security/index.js +44 -0
  309. package/dist/mcp/tools/qe/security/index.js.map +1 -0
  310. package/dist/mcp/tools/qe/security/scan-comprehensive.d.ts +240 -0
  311. package/dist/mcp/tools/qe/security/scan-comprehensive.d.ts.map +1 -0
  312. package/dist/mcp/tools/qe/security/scan-comprehensive.js +557 -0
  313. package/dist/mcp/tools/qe/security/scan-comprehensive.js.map +1 -0
  314. package/dist/mcp/tools/qe/security/validate-compliance.d.ts +299 -0
  315. package/dist/mcp/tools/qe/security/validate-compliance.d.ts.map +1 -0
  316. package/dist/mcp/tools/qe/security/validate-compliance.js +517 -0
  317. package/dist/mcp/tools/qe/security/validate-compliance.js.map +1 -0
  318. package/dist/mcp/tools/qe/shared/types.d.ts +840 -0
  319. package/dist/mcp/tools/qe/shared/types.d.ts.map +1 -0
  320. package/dist/mcp/tools/qe/shared/types.js +13 -0
  321. package/dist/mcp/tools/qe/shared/types.js.map +1 -0
  322. package/dist/mcp/tools/qe/test-data/analyze-schema.d.ts +264 -0
  323. package/dist/mcp/tools/qe/test-data/analyze-schema.d.ts.map +1 -0
  324. package/dist/mcp/tools/qe/test-data/analyze-schema.js +553 -0
  325. package/dist/mcp/tools/qe/test-data/analyze-schema.js.map +1 -0
  326. package/dist/mcp/tools/qe/test-data/generate-test-data.d.ts +167 -0
  327. package/dist/mcp/tools/qe/test-data/generate-test-data.d.ts.map +1 -0
  328. package/dist/mcp/tools/qe/test-data/generate-test-data.js +336 -0
  329. package/dist/mcp/tools/qe/test-data/generate-test-data.js.map +1 -0
  330. package/dist/mcp/tools/qe/test-data/index.d.ts +44 -0
  331. package/dist/mcp/tools/qe/test-data/index.d.ts.map +1 -0
  332. package/dist/mcp/tools/qe/test-data/index.js +90 -0
  333. package/dist/mcp/tools/qe/test-data/index.js.map +1 -0
  334. package/dist/mcp/tools/qe/test-data/mask-sensitive-data.d.ts +165 -0
  335. package/dist/mcp/tools/qe/test-data/mask-sensitive-data.d.ts.map +1 -0
  336. package/dist/mcp/tools/qe/test-data/mask-sensitive-data.js +342 -0
  337. package/dist/mcp/tools/qe/test-data/mask-sensitive-data.js.map +1 -0
  338. package/dist/mcp/tools/qe/test-generation/analyze-test-quality.d.ts +144 -0
  339. package/dist/mcp/tools/qe/test-generation/analyze-test-quality.d.ts.map +1 -0
  340. package/dist/mcp/tools/qe/test-generation/analyze-test-quality.js +432 -0
  341. package/dist/mcp/tools/qe/test-generation/analyze-test-quality.js.map +1 -0
  342. package/dist/mcp/tools/qe/test-generation/generate-integration-tests.d.ts +98 -0
  343. package/dist/mcp/tools/qe/test-generation/generate-integration-tests.d.ts.map +1 -0
  344. package/dist/mcp/tools/qe/test-generation/generate-integration-tests.js +459 -0
  345. package/dist/mcp/tools/qe/test-generation/generate-integration-tests.js.map +1 -0
  346. package/dist/mcp/tools/qe/test-generation/generate-unit-tests.d.ts +83 -0
  347. package/dist/mcp/tools/qe/test-generation/generate-unit-tests.d.ts.map +1 -0
  348. package/dist/mcp/tools/qe/test-generation/generate-unit-tests.js +483 -0
  349. package/dist/mcp/tools/qe/test-generation/generate-unit-tests.js.map +1 -0
  350. package/dist/mcp/tools/qe/test-generation/index.d.ts +56 -0
  351. package/dist/mcp/tools/qe/test-generation/index.d.ts.map +1 -0
  352. package/dist/mcp/tools/qe/test-generation/index.js +97 -0
  353. package/dist/mcp/tools/qe/test-generation/index.js.map +1 -0
  354. package/dist/mcp/tools/qe/test-generation/optimize-test-suite.d.ts +124 -0
  355. package/dist/mcp/tools/qe/test-generation/optimize-test-suite.d.ts.map +1 -0
  356. package/dist/mcp/tools/qe/test-generation/optimize-test-suite.js +362 -0
  357. package/dist/mcp/tools/qe/test-generation/optimize-test-suite.js.map +1 -0
  358. package/dist/mcp/tools/qe/visual/compare-screenshots.d.ts +119 -0
  359. package/dist/mcp/tools/qe/visual/compare-screenshots.d.ts.map +1 -0
  360. package/dist/mcp/tools/qe/visual/compare-screenshots.js +280 -0
  361. package/dist/mcp/tools/qe/visual/compare-screenshots.js.map +1 -0
  362. package/dist/mcp/tools/qe/visual/detect-regression.d.ts +138 -0
  363. package/dist/mcp/tools/qe/visual/detect-regression.d.ts.map +1 -0
  364. package/dist/mcp/tools/qe/visual/detect-regression.js +271 -0
  365. package/dist/mcp/tools/qe/visual/detect-regression.js.map +1 -0
  366. package/dist/mcp/tools/qe/visual/index.d.ts +16 -0
  367. package/dist/mcp/tools/qe/visual/index.d.ts.map +1 -0
  368. package/dist/mcp/tools/qe/visual/index.js +22 -0
  369. package/dist/mcp/tools/qe/visual/index.js.map +1 -0
  370. package/dist/mcp/tools/qe/visual/validate-accessibility.d.ts +276 -0
  371. package/dist/mcp/tools/qe/visual/validate-accessibility.d.ts.map +1 -0
  372. package/dist/mcp/tools/qe/visual/validate-accessibility.js +413 -0
  373. package/dist/mcp/tools/qe/visual/validate-accessibility.js.map +1 -0
  374. package/dist/mcp/tools.d.ts +44 -0
  375. package/dist/mcp/tools.d.ts.map +1 -1
  376. package/dist/mcp/tools.js +1980 -1
  377. package/dist/mcp/tools.js.map +1 -1
  378. package/package.json +2 -2
  379. package/dist/learning/__mocks__/LearningEngine.d.ts +0 -39
  380. package/dist/learning/__mocks__/LearningEngine.d.ts.map +0 -1
  381. package/dist/learning/__mocks__/LearningEngine.js +0 -116
  382. package/dist/learning/__mocks__/LearningEngine.js.map +0 -1
  383. package/dist/utils/__mocks__/Database.d.ts +0 -85
  384. package/dist/utils/__mocks__/Database.d.ts.map +0 -1
  385. package/dist/utils/__mocks__/Database.js +0 -125
  386. package/dist/utils/__mocks__/Database.js.map +0 -1
  387. package/dist/utils/__mocks__/Logger.d.ts +0 -26
  388. package/dist/utils/__mocks__/Logger.d.ts.map +0 -1
  389. package/dist/utils/__mocks__/Logger.js +0 -44
  390. package/dist/utils/__mocks__/Logger.js.map +0 -1
@@ -0,0 +1,553 @@
1
+ "use strict";
2
+ /**
3
+ * Analyze Database Schema Tool
4
+ *
5
+ * Comprehensive database schema analysis with support for:
6
+ * - Multi-database introspection (PostgreSQL, MySQL, SQLite, MongoDB)
7
+ * - Constraint detection and validation
8
+ * - Relationship mapping and integrity checks
9
+ * - Data type analysis and compatibility
10
+ * - Index optimization recommendations
11
+ *
12
+ * @module test-data/analyze-schema
13
+ * @version 1.0.0
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.ConstraintType = exports.DataTypeCategory = void 0;
17
+ exports.analyzeSchema = analyzeSchema;
18
+ /**
19
+ * Data type categories
20
+ */
21
+ var DataTypeCategory;
22
+ (function (DataTypeCategory) {
23
+ DataTypeCategory["NUMERIC"] = "numeric";
24
+ DataTypeCategory["STRING"] = "string";
25
+ DataTypeCategory["TEMPORAL"] = "temporal";
26
+ DataTypeCategory["BOOLEAN"] = "boolean";
27
+ DataTypeCategory["SPATIAL"] = "spatial";
28
+ DataTypeCategory["JSON"] = "json";
29
+ DataTypeCategory["BINARY"] = "binary";
30
+ DataTypeCategory["ARRAY"] = "array";
31
+ DataTypeCategory["UNKNOWN"] = "unknown";
32
+ })(DataTypeCategory || (exports.DataTypeCategory = DataTypeCategory = {}));
33
+ /**
34
+ * Constraint type
35
+ */
36
+ var ConstraintType;
37
+ (function (ConstraintType) {
38
+ ConstraintType["PRIMARY_KEY"] = "PRIMARY_KEY";
39
+ ConstraintType["FOREIGN_KEY"] = "FOREIGN_KEY";
40
+ ConstraintType["UNIQUE"] = "UNIQUE";
41
+ ConstraintType["NOT_NULL"] = "NOT_NULL";
42
+ ConstraintType["CHECK"] = "CHECK";
43
+ ConstraintType["DEFAULT"] = "DEFAULT";
44
+ })(ConstraintType || (exports.ConstraintType = ConstraintType = {}));
45
+ /**
46
+ * Schema analyzer
47
+ */
48
+ class SchemaAnalyzer {
49
+ constructor() {
50
+ this.schema = {
51
+ name: '',
52
+ type: 'postgresql',
53
+ tables: [],
54
+ relationships: []
55
+ };
56
+ this.dataTypeMap = new Map([
57
+ ['int', DataTypeCategory.NUMERIC],
58
+ ['integer', DataTypeCategory.NUMERIC],
59
+ ['bigint', DataTypeCategory.NUMERIC],
60
+ ['smallint', DataTypeCategory.NUMERIC],
61
+ ['decimal', DataTypeCategory.NUMERIC],
62
+ ['numeric', DataTypeCategory.NUMERIC],
63
+ ['real', DataTypeCategory.NUMERIC],
64
+ ['double', DataTypeCategory.NUMERIC],
65
+ ['float', DataTypeCategory.NUMERIC],
66
+ ['varchar', DataTypeCategory.STRING],
67
+ ['char', DataTypeCategory.STRING],
68
+ ['text', DataTypeCategory.STRING],
69
+ ['string', DataTypeCategory.STRING],
70
+ ['date', DataTypeCategory.TEMPORAL],
71
+ ['time', DataTypeCategory.TEMPORAL],
72
+ ['timestamp', DataTypeCategory.TEMPORAL],
73
+ ['datetime', DataTypeCategory.TEMPORAL],
74
+ ['boolean', DataTypeCategory.BOOLEAN],
75
+ ['bool', DataTypeCategory.BOOLEAN],
76
+ ['json', DataTypeCategory.JSON],
77
+ ['jsonb', DataTypeCategory.JSON],
78
+ ['bytea', DataTypeCategory.BINARY],
79
+ ['blob', DataTypeCategory.BINARY],
80
+ ['uuid', DataTypeCategory.STRING],
81
+ ['array', DataTypeCategory.ARRAY]
82
+ ]);
83
+ }
84
+ /**
85
+ * Parse data type
86
+ */
87
+ parseDataType(dataType) {
88
+ const normalized = dataType.toLowerCase().split('(')[0].trim();
89
+ return this.dataTypeMap.get(normalized) || DataTypeCategory.UNKNOWN;
90
+ }
91
+ /**
92
+ * Analyze relationships
93
+ */
94
+ analyzeRelationships() {
95
+ const relationshipCount = this.schema.tables.reduce((sum, t) => sum + t.foreignKeys.length, 0);
96
+ // Find orphaned record risks
97
+ const orphanedRecordRisks = this.schema.tables
98
+ .filter(t => t.foreignKeys.length > 0)
99
+ .map(t => ({
100
+ table: t.name,
101
+ foreignKeyCount: t.foreignKeys.length,
102
+ risk: (t.foreignKeys.some(fk => fk.onDelete === 'SET NULL') ? 'low' : 'medium')
103
+ }));
104
+ // Find circular dependencies
105
+ const circularDependencies = this.detectCircularDependencies();
106
+ // Find cascading delete risks
107
+ const cascadingDeleteRisks = this.schema.tables
108
+ .flatMap(t => t.foreignKeys
109
+ .filter(fk => fk.onDelete === 'CASCADE')
110
+ .map(fk => ({
111
+ from: t.name,
112
+ to: fk.toTable,
113
+ depth: 1
114
+ })))
115
+ .filter(r => r.depth > 0);
116
+ return {
117
+ relationshipCount,
118
+ orphanedRecordRisks,
119
+ circularDependencies,
120
+ cascadingDeleteRisks
121
+ };
122
+ }
123
+ /**
124
+ * Detect circular dependencies
125
+ */
126
+ detectCircularDependencies() {
127
+ const circularDeps = [];
128
+ for (const table of this.schema.tables) {
129
+ for (const fk of table.foreignKeys) {
130
+ // Check if referenced table references back to this table
131
+ const referencedTable = this.schema.tables.find(t => t.name === fk.toTable);
132
+ if (referencedTable) {
133
+ for (const refFk of referencedTable.foreignKeys) {
134
+ if (refFk.toTable === table.name) {
135
+ circularDeps.push([table.name, fk.toTable]);
136
+ }
137
+ }
138
+ }
139
+ }
140
+ }
141
+ return circularDeps;
142
+ }
143
+ /**
144
+ * Analyze indexes
145
+ */
146
+ analyzeIndexes() {
147
+ const analyses = [];
148
+ for (const table of this.schema.tables) {
149
+ const unused = [];
150
+ const missing = [];
151
+ const redundant = [];
152
+ // Check for redundant indexes (subsets of other indexes)
153
+ for (let i = 0; i < table.indexes.length; i++) {
154
+ for (let j = i + 1; j < table.indexes.length; j++) {
155
+ const idx1 = table.indexes[i];
156
+ const idx2 = table.indexes[j];
157
+ const idx1Start = idx1.columns.slice(0, Math.min(idx1.columns.length, idx2.columns.length));
158
+ const idx2Start = idx2.columns.slice(0, Math.min(idx1.columns.length, idx2.columns.length));
159
+ if (JSON.stringify(idx1Start) === JSON.stringify(idx2Start)) {
160
+ redundant.push({
161
+ indexes: [idx1.name, idx2.name],
162
+ reason: 'One index is a prefix of another'
163
+ });
164
+ }
165
+ }
166
+ }
167
+ // Recommend indexes on foreign keys
168
+ for (const fk of table.foreignKeys) {
169
+ const hasIndex = table.indexes.some(idx => idx.columns.length > 0 && idx.columns[0] === fk.fromColumns[0]);
170
+ if (!hasIndex) {
171
+ missing.push({
172
+ columns: fk.fromColumns,
173
+ reason: 'Foreign key column should be indexed for join performance',
174
+ estimatedPerformanceGain: 25
175
+ });
176
+ }
177
+ }
178
+ analyses.push({
179
+ tableName: table.name,
180
+ unusedIndexes: unused,
181
+ missingIndexes: missing,
182
+ redundantIndexes: redundant
183
+ });
184
+ }
185
+ return analyses[0] || { tableName: '', unusedIndexes: [], missingIndexes: [], redundantIndexes: [] };
186
+ }
187
+ /**
188
+ * Detect data quality issues
189
+ */
190
+ detectQualityIssues() {
191
+ const issues = [];
192
+ for (const table of this.schema.tables) {
193
+ // Check for tables without primary keys
194
+ if (table.primaryKey.length === 0) {
195
+ issues.push({
196
+ table: table.name,
197
+ severity: 'warning',
198
+ type: 'missing-primary-key',
199
+ description: 'Table has no primary key',
200
+ recommendation: 'Add a primary key to enable efficient updates and deletes'
201
+ });
202
+ }
203
+ // Check for timestamp columns
204
+ const hasTimestamps = table.columns.some(c => c.dataType.toLowerCase().includes('timestamp') ||
205
+ c.dataType.toLowerCase().includes('datetime'));
206
+ if (!hasTimestamps && table.columns.length > 3) {
207
+ issues.push({
208
+ table: table.name,
209
+ severity: 'info',
210
+ type: 'missing-timestamps',
211
+ description: 'Table lacks created_at/updated_at timestamps',
212
+ recommendation: 'Add timestamp columns for audit trails'
213
+ });
214
+ }
215
+ // Check for high percentage of nullable columns
216
+ const nullableCount = table.columns.filter(c => c.nullable).length;
217
+ const nullablePercentage = (nullableCount / table.columns.length) * 100;
218
+ if (nullablePercentage > 50) {
219
+ issues.push({
220
+ table: table.name,
221
+ severity: 'warning',
222
+ type: 'high-nullability',
223
+ description: `${nullablePercentage.toFixed(0)}% of columns are nullable`,
224
+ recommendation: 'Review column nullability requirements'
225
+ });
226
+ }
227
+ // Check for text columns that might be enums
228
+ for (const col of table.columns) {
229
+ if (col.category === DataTypeCategory.STRING && col.maxLength && col.maxLength < 50) {
230
+ issues.push({
231
+ table: table.name,
232
+ column: col.name,
233
+ severity: 'info',
234
+ type: 'possible-enum',
235
+ description: `Column '${col.name}' might be better as an enum`,
236
+ recommendation: 'Consider using enum type for better storage and validation'
237
+ });
238
+ }
239
+ }
240
+ }
241
+ return issues;
242
+ }
243
+ /**
244
+ * Generate recommendations
245
+ */
246
+ generateRecommendations() {
247
+ const recommendations = [];
248
+ // Analyze all tables
249
+ for (const table of this.schema.tables) {
250
+ // Recommend normalized design for large text fields
251
+ const largeTextColumns = table.columns.filter(c => c.category === DataTypeCategory.STRING && c.maxLength && c.maxLength > 1000);
252
+ if (largeTextColumns.length > 1) {
253
+ recommendations.push({
254
+ table: table.name,
255
+ type: 'normalization',
256
+ priority: 'medium',
257
+ description: 'Multiple large text columns detected',
258
+ impact: 'Could reduce storage footprint and improve query performance',
259
+ implementation: 'Consider extracting frequently-accessed text to separate table'
260
+ });
261
+ }
262
+ // Recommend composite indexes
263
+ if (table.foreignKeys.length > 0) {
264
+ recommendations.push({
265
+ table: table.name,
266
+ type: 'indexing',
267
+ priority: 'high',
268
+ description: 'Table has foreign keys but might lack efficient indexes',
269
+ impact: 'Could significantly improve JOIN performance',
270
+ implementation: 'Create indexes on foreign key columns'
271
+ });
272
+ }
273
+ // Recommend partitioning for large tables
274
+ if (table.rowCount && table.rowCount > 1000000) {
275
+ recommendations.push({
276
+ table: table.name,
277
+ type: 'partitioning',
278
+ priority: 'medium',
279
+ description: `Large table (${table.rowCount.toLocaleString()} rows) might benefit from partitioning`,
280
+ impact: 'Could improve query performance and maintenance operations',
281
+ implementation: 'Consider range or hash partitioning by a suitable column'
282
+ });
283
+ }
284
+ }
285
+ return recommendations;
286
+ }
287
+ /**
288
+ * Calculate metrics
289
+ */
290
+ calculateMetrics() {
291
+ const metrics = {
292
+ totalTables: this.schema.tables.length,
293
+ totalColumns: 0,
294
+ totalIndexes: 0,
295
+ totalForeignKeys: 0,
296
+ totalConstraints: 0,
297
+ averageColumnsPerTable: 0,
298
+ nullableColumnsPercentage: 0,
299
+ estimatedSize: 0
300
+ };
301
+ let nullableCount = 0;
302
+ for (const table of this.schema.tables) {
303
+ metrics.totalColumns += table.columns.length;
304
+ metrics.totalIndexes += table.indexes.length;
305
+ metrics.totalForeignKeys += table.foreignKeys.length;
306
+ metrics.totalConstraints += table.checkConstraints.length;
307
+ nullableCount += table.columns.filter(c => c.nullable).length;
308
+ if (table.size) {
309
+ metrics.estimatedSize += table.size;
310
+ }
311
+ }
312
+ metrics.averageColumnsPerTable = metrics.totalTables > 0 ? metrics.totalColumns / metrics.totalTables : 0;
313
+ metrics.nullableColumnsPercentage = metrics.totalColumns > 0 ? (nullableCount / metrics.totalColumns) * 100 : 0;
314
+ return metrics;
315
+ }
316
+ /**
317
+ * Get data type distribution
318
+ */
319
+ getDataTypeDistribution() {
320
+ const distribution = {};
321
+ for (const table of this.schema.tables) {
322
+ for (const column of table.columns) {
323
+ const category = column.category;
324
+ distribution[category] = (distribution[category] || 0) + 1;
325
+ }
326
+ }
327
+ return distribution;
328
+ }
329
+ }
330
+ /**
331
+ * Analyze database schema
332
+ *
333
+ * Performs comprehensive analysis of database schema including:
334
+ * - Table and column structure
335
+ * - Constraint and index analysis
336
+ * - Relationship mapping
337
+ * - Data quality assessment
338
+ * - Performance recommendations
339
+ *
340
+ * @param params - Analysis parameters
341
+ * @returns Promise resolving to schema analysis result
342
+ *
343
+ * @example
344
+ * ```typescript
345
+ * const result = await analyzeSchema({
346
+ * databaseType: 'postgresql',
347
+ * databaseName: 'myapp',
348
+ * includeStatistics: true,
349
+ * analyzeIndexes: true,
350
+ * generateRecommendations: true
351
+ * });
352
+ *
353
+ * console.log(`Found ${result.metrics.totalTables} tables`);
354
+ * console.log(`Data quality issues: ${result.qualityIssues?.length || 0}`);
355
+ * console.log(`Recommendations: ${result.recommendations?.length || 0}`);
356
+ * ```
357
+ */
358
+ async function analyzeSchema(params) {
359
+ const startTime = Date.now();
360
+ const warnings = [];
361
+ // Initialize analyzer
362
+ const analyzer = new SchemaAnalyzer();
363
+ // Create mock schema for demonstration
364
+ const schema = {
365
+ name: params.databaseName || 'unknown',
366
+ type: params.databaseType,
367
+ tables: [
368
+ {
369
+ name: 'users',
370
+ columns: [
371
+ {
372
+ name: 'id',
373
+ dataType: 'uuid',
374
+ category: DataTypeCategory.STRING,
375
+ nullable: false,
376
+ constraints: [ConstraintType.PRIMARY_KEY]
377
+ },
378
+ {
379
+ name: 'email',
380
+ dataType: 'varchar(255)',
381
+ category: DataTypeCategory.STRING,
382
+ nullable: false,
383
+ maxLength: 255,
384
+ constraints: [ConstraintType.UNIQUE, ConstraintType.NOT_NULL]
385
+ },
386
+ {
387
+ name: 'name',
388
+ dataType: 'varchar(100)',
389
+ category: DataTypeCategory.STRING,
390
+ nullable: false,
391
+ maxLength: 100,
392
+ constraints: [ConstraintType.NOT_NULL]
393
+ },
394
+ {
395
+ name: 'age',
396
+ dataType: 'integer',
397
+ category: DataTypeCategory.NUMERIC,
398
+ nullable: true,
399
+ constraints: [ConstraintType.CHECK]
400
+ },
401
+ {
402
+ name: 'created_at',
403
+ dataType: 'timestamp',
404
+ category: DataTypeCategory.TEMPORAL,
405
+ nullable: false,
406
+ defaultValue: 'CURRENT_TIMESTAMP',
407
+ constraints: [ConstraintType.NOT_NULL, ConstraintType.DEFAULT]
408
+ }
409
+ ],
410
+ primaryKey: ['id'],
411
+ indexes: [
412
+ {
413
+ name: 'idx_users_email',
414
+ tableName: 'users',
415
+ columns: ['email'],
416
+ unique: true,
417
+ type: 'B-tree'
418
+ }
419
+ ],
420
+ foreignKeys: [],
421
+ checkConstraints: [
422
+ {
423
+ name: 'age_check',
424
+ expression: 'age >= 18 AND age <= 120'
425
+ }
426
+ ],
427
+ uniqueConstraints: [['email']],
428
+ rowCount: 5000,
429
+ size: 512000
430
+ },
431
+ {
432
+ name: 'orders',
433
+ columns: [
434
+ {
435
+ name: 'id',
436
+ dataType: 'bigserial',
437
+ category: DataTypeCategory.NUMERIC,
438
+ nullable: false,
439
+ constraints: [ConstraintType.PRIMARY_KEY]
440
+ },
441
+ {
442
+ name: 'user_id',
443
+ dataType: 'uuid',
444
+ category: DataTypeCategory.STRING,
445
+ nullable: false,
446
+ constraints: [ConstraintType.NOT_NULL, ConstraintType.FOREIGN_KEY]
447
+ },
448
+ {
449
+ name: 'total',
450
+ dataType: 'decimal(10,2)',
451
+ category: DataTypeCategory.NUMERIC,
452
+ nullable: false,
453
+ precision: 10,
454
+ scale: 2,
455
+ constraints: [ConstraintType.NOT_NULL]
456
+ },
457
+ {
458
+ name: 'status',
459
+ dataType: "varchar(20)",
460
+ category: DataTypeCategory.STRING,
461
+ nullable: false,
462
+ maxLength: 20,
463
+ constraints: [ConstraintType.NOT_NULL]
464
+ },
465
+ {
466
+ name: 'created_at',
467
+ dataType: 'timestamp',
468
+ category: DataTypeCategory.TEMPORAL,
469
+ nullable: false,
470
+ defaultValue: 'CURRENT_TIMESTAMP',
471
+ constraints: [ConstraintType.NOT_NULL, ConstraintType.DEFAULT]
472
+ }
473
+ ],
474
+ primaryKey: ['id'],
475
+ indexes: [
476
+ {
477
+ name: 'idx_orders_user_id',
478
+ tableName: 'orders',
479
+ columns: ['user_id'],
480
+ unique: false,
481
+ type: 'B-tree'
482
+ },
483
+ {
484
+ name: 'idx_orders_created',
485
+ tableName: 'orders',
486
+ columns: ['created_at'],
487
+ unique: false,
488
+ type: 'B-tree'
489
+ }
490
+ ],
491
+ foreignKeys: [
492
+ {
493
+ name: 'fk_orders_user_id',
494
+ fromTable: 'orders',
495
+ fromColumns: ['user_id'],
496
+ toTable: 'users',
497
+ toColumns: ['id'],
498
+ onDelete: 'CASCADE',
499
+ onUpdate: 'CASCADE'
500
+ }
501
+ ],
502
+ checkConstraints: [
503
+ {
504
+ name: 'total_positive',
505
+ expression: 'total >= 0'
506
+ }
507
+ ],
508
+ uniqueConstraints: [],
509
+ rowCount: 25000,
510
+ size: 2560000
511
+ }
512
+ ],
513
+ relationships: [
514
+ {
515
+ from: 'orders',
516
+ to: 'users',
517
+ type: 'one-to-many'
518
+ }
519
+ ]
520
+ };
521
+ // Calculate metrics
522
+ const metrics = analyzer.calculateMetrics();
523
+ const dataTypeDistribution = analyzer.getDataTypeDistribution();
524
+ // Optional analyses
525
+ let indexAnalysis;
526
+ let relationshipAnalysis;
527
+ let qualityIssues;
528
+ let recommendations;
529
+ if (params.analyzeIndexes) {
530
+ indexAnalysis = analyzer.analyzeIndexes();
531
+ }
532
+ if (params.generateRecommendations) {
533
+ relationshipAnalysis = analyzer.analyzeRelationships();
534
+ qualityIssues = analyzer.detectQualityIssues();
535
+ recommendations = analyzer.generateRecommendations();
536
+ }
537
+ const duration = Date.now() - startTime;
538
+ return {
539
+ databaseName: params.databaseName || 'unknown',
540
+ databaseType: params.databaseType,
541
+ schema,
542
+ metrics,
543
+ dataTypeDistribution,
544
+ indexAnalysis,
545
+ relationshipAnalysis,
546
+ qualityIssues,
547
+ recommendations,
548
+ duration,
549
+ success: true,
550
+ warnings
551
+ };
552
+ }
553
+ //# sourceMappingURL=analyze-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-schema.js","sourceRoot":"","sources":["../../../../../src/mcp/tools/qe/test-data/analyze-schema.ts"],"names":[],"mappings":"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"}