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,461 @@
1
+ "use strict";
2
+ /**
3
+ * Code Quality Metrics Calculator
4
+ * Maintainability, reliability, and security score calculation
5
+ *
6
+ * @module code-quality/calculate-quality-metrics
7
+ * @version 1.0.0
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.calculateQualityMetrics = calculateQualityMetrics;
11
+ // ============================================================================
12
+ // Helper Functions
13
+ // ============================================================================
14
+ /**
15
+ * Calculate Halstead metrics for readability
16
+ */
17
+ function calculateHalsteadReadability(code) {
18
+ // Simplified Halstead implementation
19
+ const tokens = code.match(/\b\w+\b/g) || [];
20
+ const uniqueTokens = new Set(tokens);
21
+ const uniqueOperators = code.match(/[+\-*/%=!<>&|^~?:.,;()[\]{}]/g) || [];
22
+ const uniqueOperatorsSet = new Set(uniqueOperators);
23
+ // Calculate vocabulary and length
24
+ const vocabulary = uniqueTokens.size + uniqueOperatorsSet.size;
25
+ const length = tokens.length + uniqueOperators.length;
26
+ if (vocabulary === 0)
27
+ return 50;
28
+ // Readability decreases with complexity
29
+ const complexity = (length / vocabulary) * Math.log2(vocabulary);
30
+ const readability = Math.max(0, Math.min(100, 100 - (complexity / 10)));
31
+ return readability;
32
+ }
33
+ /**
34
+ * Calculate modularity score based on function/method distribution
35
+ */
36
+ function calculateModularity(code, language) {
37
+ // Extract functions/methods
38
+ let functionPattern;
39
+ if (language === 'typescript' || language === 'javascript') {
40
+ functionPattern = /(?:function|const\s+\w+\s*=|(?:async\s+)?function|\s*\w+\s*\()/g;
41
+ }
42
+ else if (language === 'python') {
43
+ functionPattern = /^\s*(?:async\s+)?def\s+\w+\s*\(/gm;
44
+ }
45
+ else if (language === 'java') {
46
+ functionPattern = /(?:public|private|protected)?\s+(?:static\s+)?(?:\w+\s+)+\w+\s*\(/g;
47
+ }
48
+ else {
49
+ functionPattern = /function\s+\w+/g;
50
+ }
51
+ const functions = code.match(functionPattern) || [];
52
+ const loc = code.split('\n').length;
53
+ const averageLocPerFunction = functions.length > 0 ? loc / functions.length : loc;
54
+ // Ideal: 50-100 LOC per function
55
+ if (averageLocPerFunction < 50)
56
+ return 90;
57
+ if (averageLocPerFunction < 100)
58
+ return 95;
59
+ if (averageLocPerFunction < 200)
60
+ return 75;
61
+ if (averageLocPerFunction < 500)
62
+ return 50;
63
+ return 25;
64
+ }
65
+ /**
66
+ * Calculate documentation coverage
67
+ */
68
+ function calculateDocumentationCoverage(code, language) {
69
+ // Count documentation lines
70
+ let docPatterns;
71
+ if (language === 'typescript' || language === 'javascript') {
72
+ docPatterns = /\/\*\*[\s\S]*?\*\/|\/\/\s*@\w+/g;
73
+ }
74
+ else if (language === 'python') {
75
+ docPatterns = /"""[\s\S]*?"""|'''[\s\S]*?'''|#\s*@\w+/g;
76
+ }
77
+ else if (language === 'java') {
78
+ docPatterns = /\/\*\*[\s\S]*?\*\/|\/\/\s*@\w+/g;
79
+ }
80
+ else {
81
+ docPatterns = /\/\*[\s\S]*?\*\/|\/\/.*$/gm;
82
+ }
83
+ const docLines = (code.match(docPatterns) || []).length;
84
+ const totalLines = code.split('\n').length;
85
+ // Ideal: 20-30% documentation
86
+ const docPercentage = (docLines / Math.max(1, totalLines)) * 100;
87
+ if (docPercentage < 5)
88
+ return 30;
89
+ if (docPercentage < 10)
90
+ return 50;
91
+ if (docPercentage < 20)
92
+ return 70;
93
+ if (docPercentage < 40)
94
+ return 90;
95
+ return Math.min(100, docPercentage);
96
+ }
97
+ /**
98
+ * Calculate code consistency score
99
+ */
100
+ function calculateConsistency(code, language) {
101
+ let score = 100;
102
+ // Check indentation consistency
103
+ const lines = code.split('\n');
104
+ const indentPatterns = [];
105
+ for (const line of lines) {
106
+ if (line.trim()) {
107
+ const match = line.match(/^(\s*)/);
108
+ if (match) {
109
+ indentPatterns.push(match[1]);
110
+ }
111
+ }
112
+ }
113
+ // Detect mixed indentation (tabs vs spaces)
114
+ const hasTabs = indentPatterns.some(p => p.includes('\t'));
115
+ const hasSpaces = indentPatterns.some(p => p.includes(' ') && !p.includes('\t'));
116
+ if (hasTabs && hasSpaces) {
117
+ score -= 20; // Mixed indentation
118
+ }
119
+ // Check naming conventions
120
+ const camelCaseVars = (code.match(/\b[a-z][a-zA-Z0-9]*\b/g) || []).length;
121
+ const snake_case_vars = (code.match(/\b[a-z_][a-z0-9_]*\b/g) || []).length;
122
+ const PascalCaseClasses = (code.match(/\b[A-Z][a-zA-Z0-9]*\b/g) || []).length;
123
+ const namingConsistency = Math.max(camelCaseVars, snake_case_vars, PascalCaseClasses) /
124
+ (camelCaseVars + snake_case_vars + PascalCaseClasses || 1);
125
+ if (namingConsistency < 0.6) {
126
+ score -= 15; // Inconsistent naming
127
+ }
128
+ return Math.max(20, score);
129
+ }
130
+ /**
131
+ * Calculate error handling score
132
+ */
133
+ function calculateErrorHandling(code, language) {
134
+ let score = 50;
135
+ // Count try-catch blocks
136
+ const tryCatchBlocks = code.match(/try\s*{[\s\S]*?}\s*catch/g) || [];
137
+ const totalCodeBlocks = code.match(/{[\s\S]*?}/g) || [];
138
+ if (totalCodeBlocks.length > 0) {
139
+ const tryRatio = tryCatchBlocks.length / totalCodeBlocks.length;
140
+ score += tryRatio * 30; // Up to 30 points for error handling
141
+ }
142
+ // Check for error logging
143
+ const errorLogging = code.match(/(console\.error|logger\.error|log\.error|throw new Error)/g) || [];
144
+ if (errorLogging.length > 0) {
145
+ score += 15;
146
+ }
147
+ // Check for validation
148
+ const validationPatterns = code.match(/(if\s*\(|throw|assert|validate)/g) || [];
149
+ if (validationPatterns.length > 5) {
150
+ score += 5;
151
+ }
152
+ return Math.min(100, score);
153
+ }
154
+ /**
155
+ * Detect security issues
156
+ */
157
+ function detectSecurityIssues(code, language) {
158
+ let riskScore = 100; // Start with perfect score
159
+ // Check for dangerous patterns
160
+ const dangerousPatterns = [
161
+ /eval\s*\(/g, // eval() usage
162
+ /new Function\s*\(/g, // Function constructor
163
+ /innerHTML\s*=/g, // innerHTML assignment (XSS risk)
164
+ /SQL.*`.*\$\{/g, // SQL injection patterns
165
+ /password\s*[:=]\s*["'][^"']*["']/g, // Hardcoded passwords
166
+ /secret\s*[:=]\s*["'][^"']*["']/g, // Hardcoded secrets
167
+ /api[_-]?key\s*[:=]\s*["'][^"']*["']/g, // Hardcoded API keys
168
+ ];
169
+ for (const pattern of dangerousPatterns) {
170
+ const matches = code.match(pattern) || [];
171
+ riskScore -= matches.length * 10;
172
+ }
173
+ // Check for input validation
174
+ const validationPatterns = code.match(/(sanitize|validate|escape|encodeURI)/g) || [];
175
+ riskScore += validationPatterns.length * 5;
176
+ return Math.max(10, Math.min(100, riskScore));
177
+ }
178
+ /**
179
+ * Calculate test coverage impact on reliability
180
+ */
181
+ function calculateTestCoverageImpact(coverage) {
182
+ // Non-linear scale favoring higher coverage
183
+ if (coverage >= 90)
184
+ return 100;
185
+ if (coverage >= 80)
186
+ return 90;
187
+ if (coverage >= 70)
188
+ return 75;
189
+ if (coverage >= 50)
190
+ return 50;
191
+ if (coverage >= 30)
192
+ return 30;
193
+ return 10;
194
+ }
195
+ /**
196
+ * Calculate cyclomatic complexity impact
197
+ */
198
+ function calculateComplexityImpact(code) {
199
+ const decisionPoints = (code.match(/\b(if|else|for|while|case|catch)\b/g) || []).length;
200
+ const lines = code.split('\n').length;
201
+ const averageComplexity = lines > 0 ? decisionPoints / lines : 0;
202
+ // Lower complexity is better for reliability
203
+ if (averageComplexity < 0.1)
204
+ return 100;
205
+ if (averageComplexity < 0.2)
206
+ return 85;
207
+ if (averageComplexity < 0.35)
208
+ return 70;
209
+ if (averageComplexity < 0.5)
210
+ return 50;
211
+ return 25;
212
+ }
213
+ /**
214
+ * Calculate technical debt in person-hours
215
+ */
216
+ function calculateTechnicalDebt(code, maintainability, reliability, security, codeSmells) {
217
+ const loc = code.split('\n').length;
218
+ const hoursFactor = loc / 100; // Roughly 100 LOC per person-hour to refactor
219
+ // Debt categories
220
+ const breakdown = [];
221
+ // Maintainability debt
222
+ const maintDebt = (100 - maintainability) / 100 * hoursFactor * 2;
223
+ breakdown.push({
224
+ category: 'Maintainability Issues',
225
+ hours: maintDebt,
226
+ percentage: maintDebt / (maintDebt + reliability / 100 * hoursFactor + security / 100 * hoursFactor + codeSmells * 0.5) * 100
227
+ });
228
+ // Reliability debt
229
+ const reliabDebt = (100 - reliability) / 100 * hoursFactor * 1.5;
230
+ breakdown.push({
231
+ category: 'Reliability Issues',
232
+ hours: reliabDebt,
233
+ percentage: reliabDebt / (maintDebt + reliabDebt + security / 100 * hoursFactor + codeSmells * 0.5) * 100
234
+ });
235
+ // Security debt
236
+ const secDebt = (100 - security) / 100 * hoursFactor * 2.5;
237
+ breakdown.push({
238
+ category: 'Security Vulnerabilities',
239
+ hours: secDebt,
240
+ percentage: secDebt / (maintDebt + reliabDebt + secDebt + codeSmells * 0.5) * 100
241
+ });
242
+ // Code smell debt
243
+ const smellDebt = codeSmells * 0.5;
244
+ breakdown.push({
245
+ category: 'Code Smells',
246
+ hours: smellDebt,
247
+ percentage: smellDebt / (maintDebt + reliabDebt + secDebt + smellDebt) * 100
248
+ });
249
+ const totalDebt = maintDebt + reliabDebt + secDebt + smellDebt;
250
+ return {
251
+ hoursOfDebt: Math.round(totalDebt),
252
+ breakdown: breakdown.map(b => ({
253
+ ...b,
254
+ percentage: Math.round(b.percentage)
255
+ })),
256
+ trend: 'stable', // Would need historical data for actual trend
257
+ payoffHours: Math.round(totalDebt / 4), // Assuming 1 person working part-time
258
+ topPriorities: [
259
+ 'Reduce cyclomatic complexity in high-debt functions',
260
+ 'Improve test coverage for critical paths',
261
+ 'Address security vulnerabilities',
262
+ 'Refactor code with multiple smells'
263
+ ]
264
+ };
265
+ }
266
+ /**
267
+ * Determine quality rating
268
+ */
269
+ function determineRating(overallScore) {
270
+ if (overallScore >= 90)
271
+ return 'A';
272
+ if (overallScore >= 80)
273
+ return 'B';
274
+ if (overallScore >= 70)
275
+ return 'C';
276
+ if (overallScore >= 60)
277
+ return 'D';
278
+ return 'F';
279
+ }
280
+ /**
281
+ * Generate improvement priorities
282
+ */
283
+ function generatePriorities(maintainability, reliability, security) {
284
+ const priorities = [];
285
+ // Maintainability issues
286
+ if (maintainability.index < 50) {
287
+ priorities.push({
288
+ category: 'Maintainability',
289
+ issue: 'Critical: Code is difficult to understand and maintain',
290
+ impact: 'high',
291
+ effort: 'high'
292
+ });
293
+ }
294
+ else if (maintainability.index < 70) {
295
+ priorities.push({
296
+ category: 'Maintainability',
297
+ issue: 'Major: Refactoring needed for improved readability',
298
+ impact: 'medium',
299
+ effort: 'medium'
300
+ });
301
+ }
302
+ if (maintainability.documentationCoverage < 30) {
303
+ priorities.push({
304
+ category: 'Documentation',
305
+ issue: 'Add comprehensive code documentation',
306
+ impact: 'medium',
307
+ effort: 'medium'
308
+ });
309
+ }
310
+ // Reliability issues
311
+ if (reliability.index < 50) {
312
+ priorities.push({
313
+ category: 'Reliability',
314
+ issue: 'Critical: Improve test coverage and error handling',
315
+ impact: 'high',
316
+ effort: 'high'
317
+ });
318
+ }
319
+ if (reliability.testCoverage < 50) {
320
+ priorities.push({
321
+ category: 'Testing',
322
+ issue: 'Increase unit test coverage to 80%+ minimum',
323
+ impact: 'high',
324
+ effort: 'high'
325
+ });
326
+ }
327
+ if (reliability.codeSmellDensity < 70) {
328
+ priorities.push({
329
+ category: 'Code Quality',
330
+ issue: 'Address code smells and anti-patterns',
331
+ impact: 'medium',
332
+ effort: 'medium'
333
+ });
334
+ }
335
+ // Security issues
336
+ if (security.index < 60) {
337
+ priorities.push({
338
+ category: 'Security',
339
+ issue: 'Critical: Address security vulnerabilities',
340
+ impact: 'high',
341
+ effort: 'high'
342
+ });
343
+ }
344
+ if (security.inputValidation < 70) {
345
+ priorities.push({
346
+ category: 'Security',
347
+ issue: 'Improve input validation and sanitization',
348
+ impact: 'high',
349
+ effort: 'medium'
350
+ });
351
+ }
352
+ return priorities.slice(0, 5); // Return top 5 priorities
353
+ }
354
+ // ============================================================================
355
+ // Main Calculation Function
356
+ // ============================================================================
357
+ /**
358
+ * Calculate comprehensive code quality metrics
359
+ * Combines maintainability, reliability, and security into actionable scores
360
+ */
361
+ async function calculateQualityMetrics(params) {
362
+ const startTime = Date.now();
363
+ const { sourceCode, filePath, language, coveragePercentage = 60, codeSmells = 5, duplicationPercentage = 5, includeSecurityAnalysis = true, includeTechnicalDebt = true } = params;
364
+ const linesAnalyzed = sourceCode.split('\n').length;
365
+ // ========== MAINTAINABILITY SCORE ==========
366
+ const readability = calculateHalsteadReadability(sourceCode);
367
+ const modularity = calculateModularity(sourceCode, language);
368
+ const documentationCoverage = calculateDocumentationCoverage(sourceCode, language);
369
+ const consistency = calculateConsistency(sourceCode, language);
370
+ // Weighted maintainability index
371
+ const maintainabilityIndex = Math.round(readability * 0.25 +
372
+ modularity * 0.25 +
373
+ documentationCoverage * 0.25 +
374
+ consistency * 0.25);
375
+ const maintainability = {
376
+ index: maintainabilityIndex,
377
+ readability: Math.round(readability),
378
+ modularity: Math.round(modularity),
379
+ documentationCoverage: Math.round(documentationCoverage),
380
+ consistency: Math.round(consistency)
381
+ };
382
+ // ========== RELIABILITY SCORE ==========
383
+ const testCoverageImpact = calculateTestCoverageImpact(coveragePercentage);
384
+ const errorHandling = calculateErrorHandling(sourceCode, language);
385
+ const codeSmellDensity = Math.max(0, 100 - (codeSmells * 10));
386
+ const complexityImpact = calculateComplexityImpact(sourceCode);
387
+ const reliabilityIndex = Math.round(testCoverageImpact * 0.35 +
388
+ errorHandling * 0.25 +
389
+ codeSmellDensity * 0.25 +
390
+ complexityImpact * 0.15);
391
+ const reliability = {
392
+ index: reliabilityIndex,
393
+ testCoverage: testCoverageImpact,
394
+ errorHandling: Math.round(errorHandling),
395
+ codeSmellDensity: Math.round(codeSmellDensity),
396
+ complexityImpact: Math.round(complexityImpact)
397
+ };
398
+ // ========== SECURITY SCORE ==========
399
+ let securityIndex = 75;
400
+ let vulnerabilityRisk = 75;
401
+ let inputValidation = 65;
402
+ let dependencySafety = 80;
403
+ let sensitiveDataHandling = 70;
404
+ if (includeSecurityAnalysis) {
405
+ vulnerabilityRisk = detectSecurityIssues(sourceCode, language);
406
+ inputValidation = (sourceCode.match(/(sanitize|validate|escape)/g) || []).length > 2 ? 80 : 50;
407
+ sensitiveDataHandling = sourceCode.includes('password') || sourceCode.includes('secret')
408
+ ? 40
409
+ : 85;
410
+ securityIndex = Math.round(vulnerabilityRisk * 0.35 +
411
+ inputValidation * 0.25 +
412
+ dependencySafety * 0.2 +
413
+ sensitiveDataHandling * 0.2);
414
+ }
415
+ const security = {
416
+ index: securityIndex,
417
+ vulnerabilityRisk: vulnerabilityRisk,
418
+ inputValidation: inputValidation,
419
+ dependencySafety: dependencySafety,
420
+ sensitiveDataHandling: sensitiveDataHandling
421
+ };
422
+ // ========== OVERALL SCORE ==========
423
+ const overallScore = Math.round(maintainability.index * 0.33 +
424
+ reliability.index * 0.33 +
425
+ security.index * 0.34);
426
+ const rating = determineRating(overallScore);
427
+ // ========== INTERPRETATION ==========
428
+ const interpretations = {
429
+ 'A': 'Excellent code quality. Well-maintained, reliable, and secure. Ready for production.',
430
+ 'B': 'Good code quality. Some improvements recommended. Suitable for production with minor refinements.',
431
+ 'C': 'Acceptable code quality. Significant improvements needed. Consider refactoring.',
432
+ 'D': 'Poor code quality. Major refactoring required. High maintenance risk.',
433
+ 'F': 'Critical code quality issues. Immediate action required. Not recommended for production.'
434
+ };
435
+ const interpretation = interpretations[rating];
436
+ // ========== TECHNICAL DEBT ==========
437
+ let technicalDebt;
438
+ if (includeTechnicalDebt) {
439
+ technicalDebt = calculateTechnicalDebt(sourceCode, maintainability.index, reliability.index, security.index, codeSmells);
440
+ }
441
+ // ========== PRIORITIES ==========
442
+ const priorities = generatePriorities(maintainability, reliability, security);
443
+ return {
444
+ filePath,
445
+ maintainability,
446
+ reliability,
447
+ security,
448
+ overallScore,
449
+ rating,
450
+ technicalDebt,
451
+ interpretation,
452
+ priorities,
453
+ metadata: {
454
+ timestamp: new Date().toISOString(),
455
+ analysisTimeMs: Date.now() - startTime,
456
+ language,
457
+ linesAnalyzed
458
+ }
459
+ };
460
+ }
461
+ //# sourceMappingURL=calculate-quality-metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculate-quality-metrics.js","sourceRoot":"","sources":["../../../../../src/mcp/tools/qe/code-quality/calculate-quality-metrics.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAmgBH,0DA8IC;AA7hBD,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,SAAS,4BAA4B,CAAC,IAAY;IAChD,qCAAqC;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,IAAI,EAAE,CAAC;IAC1E,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;IAEpD,kCAAkC;IAClC,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;IAEtD,IAAI,UAAU,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhC,wCAAwC;IACxC,MAAM,UAAU,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAExE,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,IAAY,EAAE,QAAgB;IACzD,4BAA4B;IAC5B,IAAI,eAAuB,CAAC;IAE5B,IAAI,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC3D,eAAe,GAAG,iEAAiE,CAAC;IACtF,CAAC;SAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,eAAe,GAAG,mCAAmC,CAAC;IACxD,CAAC;SAAM,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC/B,eAAe,GAAG,oEAAoE,CAAC;IACzF,CAAC;SAAM,CAAC;QACN,eAAe,GAAG,iBAAiB,CAAC;IACtC,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACpC,MAAM,qBAAqB,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;IAElF,iCAAiC;IACjC,IAAI,qBAAqB,GAAG,EAAE;QAAE,OAAO,EAAE,CAAC;IAC1C,IAAI,qBAAqB,GAAG,GAAG;QAAE,OAAO,EAAE,CAAC;IAC3C,IAAI,qBAAqB,GAAG,GAAG;QAAE,OAAO,EAAE,CAAC;IAC3C,IAAI,qBAAqB,GAAG,GAAG;QAAE,OAAO,EAAE,CAAC;IAC3C,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAS,8BAA8B,CAAC,IAAY,EAAE,QAAgB;IACpE,4BAA4B;IAC5B,IAAI,WAAmB,CAAC;IAExB,IAAI,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC3D,WAAW,GAAG,iCAAiC,CAAC;IAClD,CAAC;SAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,WAAW,GAAG,yCAAyC,CAAC;IAC1D,CAAC;SAAM,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC/B,WAAW,GAAG,iCAAiC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,4BAA4B,CAAC;IAC7C,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAE3C,8BAA8B;IAC9B,MAAM,aAAa,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC;IAEjE,IAAI,aAAa,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,aAAa,GAAG,EAAE;QAAE,OAAO,EAAE,CAAC;IAClC,IAAI,aAAa,GAAG,EAAE;QAAE,OAAO,EAAE,CAAC;IAClC,IAAI,aAAa,GAAG,EAAE;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,IAAY,EAAE,QAAgB;IAC1D,IAAI,KAAK,GAAG,GAAG,CAAC;IAEhB,gCAAgC;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,cAAc,GAAa,EAAE,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,KAAK,EAAE,CAAC;gBACV,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAEjF,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;QACzB,KAAK,IAAI,EAAE,CAAC,CAAC,oBAAoB;IACnC,CAAC;IAED,2BAA2B;IAC3B,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAC1E,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAC3E,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAE9E,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,eAAe,EAAE,iBAAiB,CAAC;QACnF,CAAC,aAAa,GAAG,eAAe,GAAG,iBAAiB,IAAI,CAAC,CAAC,CAAC;IAE7D,IAAI,iBAAiB,GAAG,GAAG,EAAE,CAAC;QAC5B,KAAK,IAAI,EAAE,CAAC,CAAC,sBAAsB;IACrC,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,IAAY,EAAE,QAAgB;IAC5D,IAAI,KAAK,GAAG,EAAE,CAAC;IAEf,yBAAyB;IACzB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,IAAI,EAAE,CAAC;IACrE,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAExD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QAChE,KAAK,IAAI,QAAQ,GAAG,EAAE,CAAC,CAAC,qCAAqC;IAC/D,CAAC;IAED,0BAA0B;IAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,4DAA4D,CAAC,IAAI,EAAE,CAAC;IACpG,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,IAAI,EAAE,CAAC;IACd,CAAC;IAED,uBAAuB;IACvB,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,IAAI,EAAE,CAAC;IAChF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,IAAY,EAAE,QAAgB;IAC1D,IAAI,SAAS,GAAG,GAAG,CAAC,CAAC,2BAA2B;IAEhD,+BAA+B;IAC/B,MAAM,iBAAiB,GAAG;QACxB,YAAY,EAAqB,eAAe;QAChD,oBAAoB,EAAa,uBAAuB;QACxD,gBAAgB,EAAiB,kCAAkC;QACnE,eAAe,EAAiB,yBAAyB;QACzD,mCAAmC,EAAE,sBAAsB;QAC3D,iCAAiC,EAAI,oBAAoB;QACzD,sCAAsC,EAAE,qBAAqB;KAC9D,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1C,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;IACnC,CAAC;IAED,6BAA6B;IAC7B,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,uCAAuC,CAAC,IAAI,EAAE,CAAC;IACrF,SAAS,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;IAE3C,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAS,2BAA2B,CAAC,QAAgB;IACnD,4CAA4C;IAC5C,IAAI,QAAQ,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC;IAC/B,IAAI,QAAQ,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC9B,IAAI,QAAQ,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC9B,IAAI,QAAQ,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC9B,IAAI,QAAQ,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC9B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAAC,IAAY;IAC7C,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACxF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAEtC,MAAM,iBAAiB,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjE,6CAA6C;IAC7C,IAAI,iBAAiB,GAAG,GAAG;QAAE,OAAO,GAAG,CAAC;IACxC,IAAI,iBAAiB,GAAG,GAAG;QAAE,OAAO,EAAE,CAAC;IACvC,IAAI,iBAAiB,GAAG,IAAI;QAAE,OAAO,EAAE,CAAC;IACxC,IAAI,iBAAiB,GAAG,GAAG;QAAE,OAAO,EAAE,CAAC;IACvC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAC7B,IAAY,EACZ,eAAuB,EACvB,WAAmB,EACnB,QAAgB,EAChB,UAAkB;IAElB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACpC,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,8CAA8C;IAE7E,kBAAkB;IAClB,MAAM,SAAS,GAAG,EAAE,CAAC;IAErB,uBAAuB;IACvB,MAAM,SAAS,GAAG,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,GAAG,GAAG,WAAW,GAAG,CAAC,CAAC;IAClE,SAAS,CAAC,IAAI,CAAC;QACb,QAAQ,EAAE,wBAAwB;QAClC,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,SAAS,GAAG,CAAC,SAAS,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,QAAQ,GAAG,GAAG,GAAG,WAAW,GAAG,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG;KAC9H,CAAC,CAAC;IAEH,mBAAmB;IACnB,MAAM,UAAU,GAAG,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,CAAC;IACjE,SAAS,CAAC,IAAI,CAAC;QACb,QAAQ,EAAE,oBAAoB;QAC9B,KAAK,EAAE,UAAU;QACjB,UAAU,EAAE,UAAU,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,GAAG,GAAG,WAAW,GAAG,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG;KAC1G,CAAC,CAAC;IAEH,gBAAgB;IAChB,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,CAAC;IAC3D,SAAS,CAAC,IAAI,CAAC;QACb,QAAQ,EAAE,0BAA0B;QACpC,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,OAAO,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG;KAClF,CAAC,CAAC;IAEH,kBAAkB;IAClB,MAAM,SAAS,GAAG,UAAU,GAAG,GAAG,CAAC;IACnC,SAAS,CAAC,IAAI,CAAC;QACb,QAAQ,EAAE,aAAa;QACvB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,SAAS,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG,GAAG;KAC7E,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;IAE/D,OAAO;QACL,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAClC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7B,GAAG,CAAC;YACJ,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;SACrC,CAAC,CAAC;QACH,KAAK,EAAE,QAAQ,EAAE,8CAA8C;QAC/D,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,sCAAsC;QAC9E,aAAa,EAAE;YACb,qDAAqD;YACrD,0CAA0C;YAC1C,kCAAkC;YAClC,oCAAoC;SACrC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,YAAoB;IAC3C,IAAI,YAAY,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC;IACnC,IAAI,YAAY,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC;IACnC,IAAI,YAAY,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC;IACnC,IAAI,YAAY,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC;IACnC,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CACzB,eAAqC,EACrC,WAA6B,EAC7B,QAAuB;IAOvB,MAAM,UAAU,GAKX,EAAE,CAAC;IAER,yBAAyB;IACzB,IAAI,eAAe,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC;QAC/B,UAAU,CAAC,IAAI,CAAC;YACd,QAAQ,EAAE,iBAAiB;YAC3B,KAAK,EAAE,wDAAwD;YAC/D,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,eAAe,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC;QACtC,UAAU,CAAC,IAAI,CAAC;YACd,QAAQ,EAAE,iBAAiB;YAC3B,KAAK,EAAE,oDAAoD;YAC3D,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,eAAe,CAAC,qBAAqB,GAAG,EAAE,EAAE,CAAC;QAC/C,UAAU,CAAC,IAAI,CAAC;YACd,QAAQ,EAAE,eAAe;YACzB,KAAK,EAAE,sCAAsC;YAC7C,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB;IACrB,IAAI,WAAW,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC;QAC3B,UAAU,CAAC,IAAI,CAAC;YACd,QAAQ,EAAE,aAAa;YACvB,KAAK,EAAE,oDAAoD;YAC3D,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;IACL,CAAC;IAED,IAAI,WAAW,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC;QAClC,UAAU,CAAC,IAAI,CAAC;YACd,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,6CAA6C;YACpD,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;IACL,CAAC;IAED,IAAI,WAAW,CAAC,gBAAgB,GAAG,EAAE,EAAE,CAAC;QACtC,UAAU,CAAC,IAAI,CAAC;YACd,QAAQ,EAAE,cAAc;YACxB,KAAK,EAAE,uCAAuC;YAC9C,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,IAAI,QAAQ,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC;QACxB,UAAU,CAAC,IAAI,CAAC;YACd,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,4CAA4C;YACnD,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,CAAC,eAAe,GAAG,EAAE,EAAE,CAAC;QAClC,UAAU,CAAC,IAAI,CAAC;YACd,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,2CAA2C;YAClD,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,0BAA0B;AAC3D,CAAC;AAED,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E;;;GAGG;AACI,KAAK,UAAU,uBAAuB,CAC3C,MAA4B;IAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,EACJ,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,kBAAkB,GAAG,EAAE,EACvB,UAAU,GAAG,CAAC,EACd,qBAAqB,GAAG,CAAC,EACzB,uBAAuB,GAAG,IAAI,EAC9B,oBAAoB,GAAG,IAAI,EAC5B,GAAG,MAAM,CAAC;IAEX,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAEpD,8CAA8C;IAC9C,MAAM,WAAW,GAAG,4BAA4B,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC7D,MAAM,qBAAqB,GAAG,8BAA8B,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACnF,MAAM,WAAW,GAAG,oBAAoB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE/D,iCAAiC;IACjC,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CACrC,WAAW,GAAG,IAAI;QAClB,UAAU,GAAG,IAAI;QACjB,qBAAqB,GAAG,IAAI;QAC5B,WAAW,GAAG,IAAI,CACnB,CAAC;IAEF,MAAM,eAAe,GAAyB;QAC5C,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QACpC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QAClC,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;QACxD,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;KACrC,CAAC;IAEF,0CAA0C;IAC1C,MAAM,kBAAkB,GAAG,2BAA2B,CAAC,kBAAkB,CAAC,CAAC;IAC3E,MAAM,aAAa,GAAG,sBAAsB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACnE,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;IAE/D,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CACjC,kBAAkB,GAAG,IAAI;QACzB,aAAa,GAAG,IAAI;QACpB,gBAAgB,GAAG,IAAI;QACvB,gBAAgB,GAAG,IAAI,CACxB,CAAC;IAEF,MAAM,WAAW,GAAqB;QACpC,KAAK,EAAE,gBAAgB;QACvB,YAAY,EAAE,kBAAkB;QAChC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;QACxC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAC9C,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;KAC/C,CAAC;IAEF,uCAAuC;IACvC,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,iBAAiB,GAAG,EAAE,CAAC;IAC3B,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,IAAI,gBAAgB,GAAG,EAAE,CAAC;IAC1B,IAAI,qBAAqB,GAAG,EAAE,CAAC;IAE/B,IAAI,uBAAuB,EAAE,CAAC;QAC5B,iBAAiB,GAAG,oBAAoB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC/D,eAAe,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,6BAA6B,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/F,qBAAqB,GAAG,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACtF,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,CAAC;QAEP,aAAa,GAAG,IAAI,CAAC,KAAK,CACxB,iBAAiB,GAAG,IAAI;YACxB,eAAe,GAAG,IAAI;YACtB,gBAAgB,GAAG,GAAG;YACtB,qBAAqB,GAAG,GAAG,CAC5B,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAkB;QAC9B,KAAK,EAAE,aAAa;QACpB,iBAAiB,EAAE,iBAAiB;QACpC,eAAe,EAAE,eAAe;QAChC,gBAAgB,EAAE,gBAAgB;QAClC,qBAAqB,EAAE,qBAAqB;KAC7C,CAAC;IAEF,sCAAsC;IACtC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAC7B,eAAe,CAAC,KAAK,GAAG,IAAI;QAC5B,WAAW,CAAC,KAAK,GAAG,IAAI;QACxB,QAAQ,CAAC,KAAK,GAAG,IAAI,CACtB,CAAC;IAEF,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;IAE7C,uCAAuC;IACvC,MAAM,eAAe,GAAgD;QACnE,GAAG,EAAE,sFAAsF;QAC3F,GAAG,EAAE,mGAAmG;QACxG,GAAG,EAAE,iFAAiF;QACtF,GAAG,EAAE,uEAAuE;QAC5E,GAAG,EAAE,0FAA0F;KAChG,CAAC;IAEF,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAE/C,uCAAuC;IACvC,IAAI,aAAwC,CAAC;IAC7C,IAAI,oBAAoB,EAAE,CAAC;QACzB,aAAa,GAAG,sBAAsB,CACpC,UAAU,EACV,eAAe,CAAC,KAAK,EACrB,WAAW,CAAC,KAAK,EACjB,QAAQ,CAAC,KAAK,EACd,UAAU,CACX,CAAC;IACJ,CAAC;IAED,mCAAmC;IACnC,MAAM,UAAU,GAAG,kBAAkB,CAAC,eAAe,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAE9E,OAAO;QACL,QAAQ;QACR,eAAe;QACf,WAAW;QACX,QAAQ;QACR,YAAY;QACZ,MAAM;QACN,aAAa;QACb,cAAc;QACd,UAAU;QACV,QAAQ,EAAE;YACR,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YACtC,QAAQ;YACR,aAAa;SACd;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Code Quality Tools Index
3
+ * Exports complexity analysis and quality metrics calculation tools
4
+ *
5
+ * @module qe/code-quality
6
+ * @version 1.5.0
7
+ */
8
+ export { analyzeComplexity, type ComplexityAnalysisParams, type ComplexityAnalysisResult, type ComplexityMetric, type FunctionComplexity, type ComplexityHotspot } from './analyze-complexity';
9
+ export { calculateQualityMetrics, type QualityMetricsParams, type QualityMetricsResult, type MaintainabilityScore, type ReliabilityScore, type SecurityScore, type TechnicalDebt } from './calculate-quality-metrics';
10
+ import type { QEToolResponse } from '../shared/types';
11
+ export declare function createResponse<T>(data: T, startTime: number): QEToolResponse<T>;
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/tools/qe/code-quality/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EACL,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,6BAA6B,CAAA;AAGpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAIrD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAW/E"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /**
3
+ * Code Quality Tools Index
4
+ * Exports complexity analysis and quality metrics calculation tools
5
+ *
6
+ * @module qe/code-quality
7
+ * @version 1.5.0
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.calculateQualityMetrics = exports.analyzeComplexity = void 0;
11
+ exports.createResponse = createResponse;
12
+ // Re-export analysis tools
13
+ var analyze_complexity_1 = require("./analyze-complexity");
14
+ Object.defineProperty(exports, "analyzeComplexity", { enumerable: true, get: function () { return analyze_complexity_1.analyzeComplexity; } });
15
+ var calculate_quality_metrics_1 = require("./calculate-quality-metrics");
16
+ Object.defineProperty(exports, "calculateQualityMetrics", { enumerable: true, get: function () { return calculate_quality_metrics_1.calculateQualityMetrics; } });
17
+ const VERSION = '1.5.0';
18
+ function createResponse(data, startTime) {
19
+ return {
20
+ success: true,
21
+ data,
22
+ metadata: {
23
+ requestId: `code-quality-${Date.now()}`,
24
+ timestamp: new Date().toISOString(),
25
+ executionTime: Date.now() - startTime,
26
+ version: VERSION
27
+ }
28
+ };
29
+ }
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/mcp/tools/qe/code-quality/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AA2BH,wCAWC;AApCD,2BAA2B;AAC3B,2DAO6B;AAN3B,uHAAA,iBAAiB,OAAA;AAQnB,yEAQoC;AAPlC,oIAAA,uBAAuB,OAAA;AAYzB,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,SAAgB,cAAc,CAAI,IAAO,EAAE,SAAiB;IAC1D,OAAO;QACL,OAAO,EAAE,IAAI;QACb,IAAI;QACJ,QAAQ,EAAE;YACR,SAAS,EAAE,gBAAgB,IAAI,CAAC,GAAG,EAAE,EAAE;YACvC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YACrC,OAAO,EAAE,OAAO;SACjB;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Coverage Analysis with Risk Scoring
3
+ * Enhanced version with risk assessment and critical path analysis
4
+ *
5
+ * @module coverage-tools/analyze-with-risk-scoring
6
+ */
7
+ export interface CoverageWithRiskScore {
8
+ file: string;
9
+ coverage: number;
10
+ riskScore: number;
11
+ complexity: number;
12
+ changeFrequency: number;
13
+ criticalPath: boolean;
14
+ priority: 'critical' | 'high' | 'medium' | 'low';
15
+ lines: {
16
+ total: number;
17
+ covered: number;
18
+ uncovered: number;
19
+ };
20
+ branches: {
21
+ total: number;
22
+ covered: number;
23
+ uncovered: number;
24
+ };
25
+ }
26
+ export interface RiskScoringParams {
27
+ sourceFiles: string[];
28
+ coverageThreshold?: number;
29
+ includeComplexity?: boolean;
30
+ includeChangeFrequency?: boolean;
31
+ includeCriticalPath?: boolean;
32
+ historicalData?: Array<{
33
+ file: string;
34
+ changes: number;
35
+ bugs: number;
36
+ }>;
37
+ }
38
+ export interface RiskScoringResult {
39
+ overallCoverage: number;
40
+ overallRiskScore: number;
41
+ files: CoverageWithRiskScore[];
42
+ criticalFiles: CoverageWithRiskScore[];
43
+ recommendations: string[];
44
+ sublinearMetrics: {
45
+ algorithmUsed: 'johnson-lindenstrauss' | 'spectral-sparsification' | 'adaptive-sampling';
46
+ originalDimension: number;
47
+ reducedDimension: number;
48
+ distortion: number;
49
+ computationTime: number;
50
+ };
51
+ timestamp: string;
52
+ }
53
+ /**
54
+ * Analyze coverage with risk scoring
55
+ * Uses sublinear algorithms for O(log n) performance on large codebases
56
+ */
57
+ export declare function analyzeWithRiskScoring(params: RiskScoringParams): Promise<RiskScoringResult>;
58
+ //# sourceMappingURL=analyze-with-risk-scoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-with-risk-scoring.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/tools/qe/coverage/analyze-with-risk-scoring.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,KAAK,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC/B,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,EAAE;QAChB,aAAa,EAAE,uBAAuB,GAAG,yBAAyB,GAAG,mBAAmB,CAAC;QACzF,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;CACnB;AA+FD;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,iBAAiB,CAAC,CA8H5B"}