@vyuhlabs/dxkit 2.4.5 → 2.4.7

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 (356) hide show
  1. package/CHANGELOG.md +1022 -0
  2. package/README.md +160 -45
  3. package/dist/analysis-result.d.ts +112 -0
  4. package/dist/analysis-result.d.ts.map +1 -0
  5. package/dist/analysis-result.js +52 -0
  6. package/dist/analysis-result.js.map +1 -0
  7. package/dist/analyzers/bom/detailed.d.ts.map +1 -1
  8. package/dist/analyzers/bom/detailed.js +19 -0
  9. package/dist/analyzers/bom/detailed.js.map +1 -1
  10. package/dist/analyzers/bom/gather.d.ts +27 -26
  11. package/dist/analyzers/bom/gather.d.ts.map +1 -1
  12. package/dist/analyzers/bom/gather.js +26 -87
  13. package/dist/analyzers/bom/gather.js.map +1 -1
  14. package/dist/analyzers/bom/index.d.ts +0 -7
  15. package/dist/analyzers/bom/index.d.ts.map +1 -1
  16. package/dist/analyzers/bom/index.js +98 -48
  17. package/dist/analyzers/bom/index.js.map +1 -1
  18. package/dist/analyzers/bom/types.d.ts +11 -13
  19. package/dist/analyzers/bom/types.d.ts.map +1 -1
  20. package/dist/analyzers/cache.d.ts +95 -0
  21. package/dist/analyzers/cache.d.ts.map +1 -0
  22. package/dist/analyzers/cache.js +309 -0
  23. package/dist/analyzers/cache.js.map +1 -0
  24. package/dist/analyzers/coverage-runner.d.ts +56 -0
  25. package/dist/analyzers/coverage-runner.d.ts.map +1 -0
  26. package/dist/analyzers/coverage-runner.js +72 -0
  27. package/dist/analyzers/coverage-runner.js.map +1 -0
  28. package/dist/analyzers/dashboard/index.d.ts +24 -0
  29. package/dist/analyzers/dashboard/index.d.ts.map +1 -0
  30. package/dist/analyzers/dashboard/index.js +666 -0
  31. package/dist/analyzers/dashboard/index.js.map +1 -0
  32. package/dist/analyzers/developer/gather.d.ts.map +1 -1
  33. package/dist/analyzers/developer/gather.js +205 -37
  34. package/dist/analyzers/developer/gather.js.map +1 -1
  35. package/dist/analyzers/developer/index.d.ts +1 -1
  36. package/dist/analyzers/developer/index.d.ts.map +1 -1
  37. package/dist/analyzers/developer/index.js +19 -8
  38. package/dist/analyzers/developer/index.js.map +1 -1
  39. package/dist/analyzers/dispatcher.d.ts +37 -0
  40. package/dist/analyzers/dispatcher.d.ts.map +1 -1
  41. package/dist/analyzers/dispatcher.js +56 -9
  42. package/dist/analyzers/dispatcher.js.map +1 -1
  43. package/dist/analyzers/docs/shallow.d.ts +17 -5
  44. package/dist/analyzers/docs/shallow.d.ts.map +1 -1
  45. package/dist/analyzers/docs/shallow.js +65 -2
  46. package/dist/analyzers/docs/shallow.js.map +1 -1
  47. package/dist/analyzers/dx/shallow.d.ts +17 -5
  48. package/dist/analyzers/dx/shallow.d.ts.map +1 -1
  49. package/dist/analyzers/dx/shallow.js +66 -2
  50. package/dist/analyzers/dx/shallow.js.map +1 -1
  51. package/dist/analyzers/health/actions.d.ts +1 -1
  52. package/dist/analyzers/health/actions.d.ts.map +1 -1
  53. package/dist/analyzers/health/actions.js +27 -9
  54. package/dist/analyzers/health/actions.js.map +1 -1
  55. package/dist/analyzers/health/detailed.d.ts +2 -1
  56. package/dist/analyzers/health/detailed.d.ts.map +1 -1
  57. package/dist/analyzers/health/detailed.js +11 -7
  58. package/dist/analyzers/health/detailed.js.map +1 -1
  59. package/dist/analyzers/health.d.ts +27 -0
  60. package/dist/analyzers/health.d.ts.map +1 -1
  61. package/dist/analyzers/health.js +271 -33
  62. package/dist/analyzers/health.js.map +1 -1
  63. package/dist/analyzers/licenses/gather.d.ts +35 -8
  64. package/dist/analyzers/licenses/gather.d.ts.map +1 -1
  65. package/dist/analyzers/licenses/gather.js +70 -13
  66. package/dist/analyzers/licenses/gather.js.map +1 -1
  67. package/dist/analyzers/licenses/index.d.ts +1 -1
  68. package/dist/analyzers/licenses/index.d.ts.map +1 -1
  69. package/dist/analyzers/licenses/index.js +52 -11
  70. package/dist/analyzers/licenses/index.js.map +1 -1
  71. package/dist/analyzers/licenses/types.d.ts +15 -0
  72. package/dist/analyzers/licenses/types.d.ts.map +1 -1
  73. package/dist/analyzers/maintainability/shallow.d.ts +17 -5
  74. package/dist/analyzers/maintainability/shallow.d.ts.map +1 -1
  75. package/dist/analyzers/maintainability/shallow.js +80 -2
  76. package/dist/analyzers/maintainability/shallow.js.map +1 -1
  77. package/dist/analyzers/quality/detailed.d.ts.map +1 -1
  78. package/dist/analyzers/quality/detailed.js +4 -6
  79. package/dist/analyzers/quality/detailed.js.map +1 -1
  80. package/dist/analyzers/quality/gather.d.ts +1 -14
  81. package/dist/analyzers/quality/gather.d.ts.map +1 -1
  82. package/dist/analyzers/quality/gather.js +48 -137
  83. package/dist/analyzers/quality/gather.js.map +1 -1
  84. package/dist/analyzers/quality/index.d.ts +9 -2
  85. package/dist/analyzers/quality/index.d.ts.map +1 -1
  86. package/dist/analyzers/quality/index.js +189 -117
  87. package/dist/analyzers/quality/index.js.map +1 -1
  88. package/dist/analyzers/quality/shallow.d.ts +50 -5
  89. package/dist/analyzers/quality/shallow.d.ts.map +1 -1
  90. package/dist/analyzers/quality/shallow.js +155 -2
  91. package/dist/analyzers/quality/shallow.js.map +1 -1
  92. package/dist/analyzers/quality/types.d.ts +14 -0
  93. package/dist/analyzers/quality/types.d.ts.map +1 -1
  94. package/dist/analyzers/security/actions.d.ts +11 -4
  95. package/dist/analyzers/security/actions.d.ts.map +1 -1
  96. package/dist/analyzers/security/actions.js +87 -37
  97. package/dist/analyzers/security/actions.js.map +1 -1
  98. package/dist/analyzers/security/aggregator.d.ts +236 -0
  99. package/dist/analyzers/security/aggregator.d.ts.map +1 -0
  100. package/dist/analyzers/security/aggregator.js +347 -0
  101. package/dist/analyzers/security/aggregator.js.map +1 -0
  102. package/dist/analyzers/security/detailed.d.ts +2 -2
  103. package/dist/analyzers/security/detailed.d.ts.map +1 -1
  104. package/dist/analyzers/security/detailed.js +10 -9
  105. package/dist/analyzers/security/detailed.js.map +1 -1
  106. package/dist/analyzers/security/gather.d.ts +103 -1
  107. package/dist/analyzers/security/gather.d.ts.map +1 -1
  108. package/dist/analyzers/security/gather.js +281 -9
  109. package/dist/analyzers/security/gather.js.map +1 -1
  110. package/dist/analyzers/security/index.d.ts +15 -0
  111. package/dist/analyzers/security/index.d.ts.map +1 -1
  112. package/dist/analyzers/security/index.js +463 -50
  113. package/dist/analyzers/security/index.js.map +1 -1
  114. package/dist/analyzers/security/shallow.d.ts +50 -6
  115. package/dist/analyzers/security/shallow.d.ts.map +1 -1
  116. package/dist/analyzers/security/shallow.js +154 -2
  117. package/dist/analyzers/security/shallow.js.map +1 -1
  118. package/dist/analyzers/security/types.d.ts +51 -0
  119. package/dist/analyzers/security/types.d.ts.map +1 -1
  120. package/dist/analyzers/tests/detailed.d.ts.map +1 -1
  121. package/dist/analyzers/tests/detailed.js +2 -3
  122. package/dist/analyzers/tests/detailed.js.map +1 -1
  123. package/dist/analyzers/tests/gather.d.ts +2 -1
  124. package/dist/analyzers/tests/gather.d.ts.map +1 -1
  125. package/dist/analyzers/tests/gather.js +98 -69
  126. package/dist/analyzers/tests/gather.js.map +1 -1
  127. package/dist/analyzers/tests/index.d.ts +11 -2
  128. package/dist/analyzers/tests/index.d.ts.map +1 -1
  129. package/dist/analyzers/tests/index.js +85 -18
  130. package/dist/analyzers/tests/index.js.map +1 -1
  131. package/dist/analyzers/tests/shallow.d.ts +19 -5
  132. package/dist/analyzers/tests/shallow.d.ts.map +1 -1
  133. package/dist/analyzers/tests/shallow.js +89 -2
  134. package/dist/analyzers/tests/shallow.js.map +1 -1
  135. package/dist/analyzers/tests/types.d.ts +41 -1
  136. package/dist/analyzers/tests/types.d.ts.map +1 -1
  137. package/dist/analyzers/tools/autogen-header.d.ts +8 -0
  138. package/dist/analyzers/tools/autogen-header.d.ts.map +1 -0
  139. package/dist/analyzers/tools/autogen-header.js +107 -0
  140. package/dist/analyzers/tools/autogen-header.js.map +1 -0
  141. package/dist/analyzers/tools/cloc.d.ts.map +1 -1
  142. package/dist/analyzers/tools/cloc.js +36 -5
  143. package/dist/analyzers/tools/cloc.js.map +1 -1
  144. package/dist/analyzers/tools/coverage.d.ts +1 -1
  145. package/dist/analyzers/tools/coverage.d.ts.map +1 -1
  146. package/dist/analyzers/tools/coverage.js.map +1 -1
  147. package/dist/analyzers/tools/debug-statements.d.ts +17 -0
  148. package/dist/analyzers/tools/debug-statements.d.ts.map +1 -0
  149. package/dist/analyzers/tools/debug-statements.js +58 -0
  150. package/dist/analyzers/tools/debug-statements.js.map +1 -0
  151. package/dist/analyzers/tools/default-exclusions.gitignore +28 -0
  152. package/dist/analyzers/tools/exclusions.d.ts +33 -6
  153. package/dist/analyzers/tools/exclusions.d.ts.map +1 -1
  154. package/dist/analyzers/tools/exclusions.js +95 -26
  155. package/dist/analyzers/tools/exclusions.js.map +1 -1
  156. package/dist/analyzers/tools/generic.d.ts +17 -2
  157. package/dist/analyzers/tools/generic.d.ts.map +1 -1
  158. package/dist/analyzers/tools/generic.js +206 -109
  159. package/dist/analyzers/tools/generic.js.map +1 -1
  160. package/dist/analyzers/tools/gitleaks.d.ts.map +1 -1
  161. package/dist/analyzers/tools/gitleaks.js +48 -1
  162. package/dist/analyzers/tools/gitleaks.js.map +1 -1
  163. package/dist/analyzers/tools/graphify.d.ts +30 -2
  164. package/dist/analyzers/tools/graphify.d.ts.map +1 -1
  165. package/dist/analyzers/tools/graphify.js +131 -15
  166. package/dist/analyzers/tools/graphify.js.map +1 -1
  167. package/dist/analyzers/tools/jscpd.d.ts +12 -2
  168. package/dist/analyzers/tools/jscpd.d.ts.map +1 -1
  169. package/dist/analyzers/tools/jscpd.js +129 -6
  170. package/dist/analyzers/tools/jscpd.js.map +1 -1
  171. package/dist/analyzers/tools/minified-detection.d.ts +9 -0
  172. package/dist/analyzers/tools/minified-detection.d.ts.map +1 -0
  173. package/dist/analyzers/tools/minified-detection.js +147 -0
  174. package/dist/analyzers/tools/minified-detection.js.map +1 -0
  175. package/dist/analyzers/tools/nuget-package-reference.d.ts +131 -0
  176. package/dist/analyzers/tools/nuget-package-reference.d.ts.map +1 -0
  177. package/dist/analyzers/tools/nuget-package-reference.js +175 -0
  178. package/dist/analyzers/tools/nuget-package-reference.js.map +1 -0
  179. package/dist/analyzers/tools/osv-scanner-deps.d.ts +48 -0
  180. package/dist/analyzers/tools/osv-scanner-deps.d.ts.map +1 -0
  181. package/dist/analyzers/tools/{osv-scanner-maven.js → osv-scanner-deps.js} +78 -46
  182. package/dist/analyzers/tools/osv-scanner-deps.js.map +1 -0
  183. package/dist/analyzers/tools/osv.d.ts +36 -0
  184. package/dist/analyzers/tools/osv.d.ts.map +1 -1
  185. package/dist/analyzers/tools/osv.js +26 -0
  186. package/dist/analyzers/tools/osv.js.map +1 -1
  187. package/dist/analyzers/tools/parallel.d.ts +1 -1
  188. package/dist/analyzers/tools/parallel.d.ts.map +1 -1
  189. package/dist/analyzers/tools/parallel.js +2 -2
  190. package/dist/analyzers/tools/parallel.js.map +1 -1
  191. package/dist/analyzers/tools/risk-score.d.ts +7 -0
  192. package/dist/analyzers/tools/risk-score.d.ts.map +1 -1
  193. package/dist/analyzers/tools/risk-score.js +9 -2
  194. package/dist/analyzers/tools/risk-score.js.map +1 -1
  195. package/dist/analyzers/tools/run-tests-helper.d.ts +43 -0
  196. package/dist/analyzers/tools/run-tests-helper.d.ts.map +1 -0
  197. package/dist/analyzers/tools/run-tests-helper.js +156 -0
  198. package/dist/analyzers/tools/run-tests-helper.js.map +1 -0
  199. package/dist/analyzers/tools/runner.d.ts.map +1 -1
  200. package/dist/analyzers/tools/runner.js +75 -12
  201. package/dist/analyzers/tools/runner.js.map +1 -1
  202. package/dist/analyzers/tools/semgrep.d.ts +39 -2
  203. package/dist/analyzers/tools/semgrep.d.ts.map +1 -1
  204. package/dist/analyzers/tools/semgrep.js +131 -9
  205. package/dist/analyzers/tools/semgrep.js.map +1 -1
  206. package/dist/analyzers/tools/timing.d.ts +17 -3
  207. package/dist/analyzers/tools/timing.d.ts.map +1 -1
  208. package/dist/analyzers/tools/timing.js +36 -14
  209. package/dist/analyzers/tools/timing.js.map +1 -1
  210. package/dist/analyzers/tools/tool-registry.d.ts +10 -0
  211. package/dist/analyzers/tools/tool-registry.d.ts.map +1 -1
  212. package/dist/analyzers/tools/tool-registry.js +120 -1
  213. package/dist/analyzers/tools/tool-registry.js.map +1 -1
  214. package/dist/analyzers/tools/tools-unavailable-prose.d.ts +18 -0
  215. package/dist/analyzers/tools/tools-unavailable-prose.d.ts.map +1 -0
  216. package/dist/analyzers/tools/tools-unavailable-prose.js +69 -0
  217. package/dist/analyzers/tools/tools-unavailable-prose.js.map +1 -0
  218. package/dist/analyzers/tools/upgrade-plan-resolver.d.ts.map +1 -1
  219. package/dist/analyzers/tools/upgrade-plan-resolver.js +7 -0
  220. package/dist/analyzers/tools/upgrade-plan-resolver.js.map +1 -1
  221. package/dist/analyzers/tools/vendored-advisor.d.ts +43 -0
  222. package/dist/analyzers/tools/vendored-advisor.d.ts.map +1 -0
  223. package/dist/analyzers/tools/vendored-advisor.js +107 -0
  224. package/dist/analyzers/tools/vendored-advisor.js.map +1 -0
  225. package/dist/analyzers/tools/walk-paths.d.ts +78 -0
  226. package/dist/analyzers/tools/walk-paths.d.ts.map +1 -0
  227. package/dist/analyzers/tools/walk-paths.js +150 -0
  228. package/dist/analyzers/tools/walk-paths.js.map +1 -0
  229. package/dist/analyzers/tools/walk-source-files.d.ts +70 -0
  230. package/dist/analyzers/tools/walk-source-files.d.ts.map +1 -0
  231. package/dist/analyzers/tools/walk-source-files.js +369 -0
  232. package/dist/analyzers/tools/walk-source-files.js.map +1 -0
  233. package/dist/analyzers/types.d.ts +204 -4
  234. package/dist/analyzers/types.d.ts.map +1 -1
  235. package/dist/analyzers/xlsx/bom.d.ts.map +1 -1
  236. package/dist/analyzers/xlsx/bom.js +8 -1
  237. package/dist/analyzers/xlsx/bom.js.map +1 -1
  238. package/dist/cli.d.ts.map +1 -1
  239. package/dist/cli.js +557 -189
  240. package/dist/cli.js.map +1 -1
  241. package/dist/constants.d.ts +1 -0
  242. package/dist/constants.d.ts.map +1 -1
  243. package/dist/detect.d.ts.map +1 -1
  244. package/dist/detect.js +24 -7
  245. package/dist/detect.js.map +1 -1
  246. package/dist/doctor.d.ts.map +1 -1
  247. package/dist/doctor.js +103 -53
  248. package/dist/doctor.js.map +1 -1
  249. package/dist/languages/capabilities/provider.d.ts +130 -1
  250. package/dist/languages/capabilities/provider.d.ts.map +1 -1
  251. package/dist/languages/capabilities/types.d.ts +68 -7
  252. package/dist/languages/capabilities/types.d.ts.map +1 -1
  253. package/dist/languages/csharp.d.ts +15 -1
  254. package/dist/languages/csharp.d.ts.map +1 -1
  255. package/dist/languages/csharp.js +624 -146
  256. package/dist/languages/csharp.js.map +1 -1
  257. package/dist/languages/go.d.ts.map +1 -1
  258. package/dist/languages/go.js +89 -11
  259. package/dist/languages/go.js.map +1 -1
  260. package/dist/languages/index.d.ts +131 -2
  261. package/dist/languages/index.d.ts.map +1 -1
  262. package/dist/languages/index.js +208 -0
  263. package/dist/languages/index.js.map +1 -1
  264. package/dist/languages/java.d.ts.map +1 -1
  265. package/dist/languages/java.js +121 -32
  266. package/dist/languages/java.js.map +1 -1
  267. package/dist/languages/kotlin.d.ts.map +1 -1
  268. package/dist/languages/kotlin.js +140 -32
  269. package/dist/languages/kotlin.js.map +1 -1
  270. package/dist/languages/python.d.ts.map +1 -1
  271. package/dist/languages/python.js +149 -44
  272. package/dist/languages/python.js.map +1 -1
  273. package/dist/languages/ruby.d.ts +115 -0
  274. package/dist/languages/ruby.d.ts.map +1 -0
  275. package/dist/languages/ruby.js +665 -0
  276. package/dist/languages/ruby.js.map +1 -0
  277. package/dist/languages/rust.d.ts.map +1 -1
  278. package/dist/languages/rust.js +103 -16
  279. package/dist/languages/rust.js.map +1 -1
  280. package/dist/languages/types.d.ts +228 -5
  281. package/dist/languages/types.d.ts.map +1 -1
  282. package/dist/languages/typescript.d.ts.map +1 -1
  283. package/dist/languages/typescript.js +201 -14
  284. package/dist/languages/typescript.js.map +1 -1
  285. package/dist/scoring/dimensions/documentation.d.ts +53 -0
  286. package/dist/scoring/dimensions/documentation.d.ts.map +1 -0
  287. package/dist/scoring/dimensions/documentation.js +106 -0
  288. package/dist/scoring/dimensions/documentation.js.map +1 -0
  289. package/dist/scoring/dimensions/dx.d.ts +53 -0
  290. package/dist/scoring/dimensions/dx.d.ts.map +1 -0
  291. package/dist/scoring/dimensions/dx.js +105 -0
  292. package/dist/scoring/dimensions/dx.js.map +1 -0
  293. package/dist/scoring/dimensions/maintainability.d.ts +53 -0
  294. package/dist/scoring/dimensions/maintainability.d.ts.map +1 -0
  295. package/dist/scoring/dimensions/maintainability.js +101 -0
  296. package/dist/scoring/dimensions/maintainability.js.map +1 -0
  297. package/dist/scoring/dimensions/quality.d.ts +108 -0
  298. package/dist/scoring/dimensions/quality.d.ts.map +1 -0
  299. package/dist/scoring/dimensions/quality.js +174 -0
  300. package/dist/scoring/dimensions/quality.js.map +1 -0
  301. package/dist/scoring/dimensions/security.d.ts +84 -0
  302. package/dist/scoring/dimensions/security.d.ts.map +1 -0
  303. package/dist/scoring/dimensions/security.js +135 -0
  304. package/dist/scoring/dimensions/security.js.map +1 -0
  305. package/dist/scoring/dimensions/testing.d.ts +56 -0
  306. package/dist/scoring/dimensions/testing.d.ts.map +1 -0
  307. package/dist/scoring/dimensions/testing.js +98 -0
  308. package/dist/scoring/dimensions/testing.js.map +1 -0
  309. package/dist/scoring/evaluator.d.ts +27 -0
  310. package/dist/scoring/evaluator.d.ts.map +1 -0
  311. package/dist/scoring/evaluator.js +124 -0
  312. package/dist/scoring/evaluator.js.map +1 -0
  313. package/dist/scoring/format.d.ts +34 -0
  314. package/dist/scoring/format.d.ts.map +1 -0
  315. package/dist/scoring/format.js +63 -0
  316. package/dist/scoring/format.js.map +1 -0
  317. package/dist/scoring/index.d.ts +37 -0
  318. package/dist/scoring/index.d.ts.map +1 -0
  319. package/dist/scoring/index.js +57 -0
  320. package/dist/scoring/index.js.map +1 -0
  321. package/dist/scoring/overall.d.ts +54 -0
  322. package/dist/scoring/overall.d.ts.map +1 -0
  323. package/dist/scoring/overall.js +76 -0
  324. package/dist/scoring/overall.js.map +1 -0
  325. package/dist/scoring/result.d.ts +111 -0
  326. package/dist/scoring/result.d.ts.map +1 -0
  327. package/dist/scoring/result.js +14 -0
  328. package/dist/scoring/result.js.map +1 -0
  329. package/dist/scoring/spec.d.ts +76 -0
  330. package/dist/scoring/spec.d.ts.map +1 -0
  331. package/dist/scoring/spec.js +22 -0
  332. package/dist/scoring/spec.js.map +1 -0
  333. package/dist/scoring/thresholds.d.ts +56 -0
  334. package/dist/scoring/thresholds.d.ts.map +1 -0
  335. package/dist/scoring/thresholds.js +75 -0
  336. package/dist/scoring/thresholds.js.map +1 -0
  337. package/dist/tools-cli.d.ts.map +1 -1
  338. package/dist/tools-cli.js +21 -2
  339. package/dist/tools-cli.js.map +1 -1
  340. package/dist/types.d.ts +17 -1
  341. package/dist/types.d.ts.map +1 -1
  342. package/package.json +1 -1
  343. package/templates/.claude/commands/dashboard.md +17 -9
  344. package/templates/.claude/rules/ruby.md +11 -0
  345. package/templates/configs/ruby/README.md +6 -0
  346. package/dist/analyzers/scoring.d.ts +0 -49
  347. package/dist/analyzers/scoring.d.ts.map +0 -1
  348. package/dist/analyzers/scoring.js +0 -422
  349. package/dist/analyzers/scoring.js.map +0 -1
  350. package/dist/analyzers/security/scoring.d.ts +0 -29
  351. package/dist/analyzers/security/scoring.d.ts.map +0 -1
  352. package/dist/analyzers/security/scoring.js +0 -40
  353. package/dist/analyzers/security/scoring.js.map +0 -1
  354. package/dist/analyzers/tools/osv-scanner-maven.d.ts +0 -42
  355. package/dist/analyzers/tools/osv-scanner-maven.d.ts.map +0 -1
  356. package/dist/analyzers/tools/osv-scanner-maven.js.map +0 -1
@@ -33,75 +33,67 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.computeSlopScore = computeSlopScore;
36
+ exports.qualityMetricsToScoreInput = qualityMetricsToScoreInput;
37
37
  exports.analyzeQuality = analyzeQuality;
38
38
  exports.formatQualityReport = formatQualityReport;
39
39
  /**
40
40
  * Quality analyzer — public API.
41
41
  */
42
42
  const path = __importStar(require("path"));
43
- const detect_1 = require("../../detect");
44
- const runner_1 = require("../tools/runner");
43
+ const cache_1 = require("../cache");
44
+ const health_1 = require("../health");
45
45
  const timing_1 = require("../tools/timing");
46
46
  const gather_1 = require("./gather");
47
- /** Compute slop score (0-100, higher = cleaner). */
48
- function computeSlopScore(m) {
49
- let score = 100;
50
- // Duplication
51
- if (m.duplication) {
52
- if (m.duplication.percentage > 15)
53
- score -= 20;
54
- else if (m.duplication.percentage > 5)
55
- score -= 10;
56
- }
57
- // Comment ratio (from cloc)
58
- if (m.commentRatio !== null) {
59
- if (m.commentRatio > 0.5)
60
- score -= 15;
61
- else if (m.commentRatio > 0.4)
62
- score -= 10;
63
- }
64
- // TODO/FIXME/HACK density
65
- const hygieneTotal = m.todoCount + m.fixmeCount + m.hackCount;
66
- if (hygieneTotal > 50)
67
- score -= 10;
68
- else if (hygieneTotal > 20)
69
- score -= 5;
70
- // God files (function density)
71
- if (m.maxFunctionsInFile !== null && m.maxFunctionsInFile > 50)
72
- score -= 10;
73
- // Dead code
74
- if (m.deadImportCount !== null && m.deadImportCount > 20)
75
- score -= 10;
76
- if (m.orphanModuleCount !== null && m.orphanModuleCount > 30)
77
- score -= 5;
78
- // Console.log density
79
- if (m.consoleLogCount > 500)
80
- score -= 15;
81
- else if (m.consoleLogCount > 100)
82
- score -= 10;
83
- else if (m.consoleLogCount > 20)
84
- score -= 5;
85
- // Lint errors
86
- if (m.lintErrors > 50)
87
- score -= 10;
88
- else if (m.lintErrors > 10)
89
- score -= 5;
90
- // Stale files committed to git
91
- if (m.staleFiles.length > 3)
92
- score -= 5;
93
- else if (m.staleFiles.length > 0)
94
- score -= 2;
95
- // Mixed JS/TS in source directories
96
- if (m.mixedLanguages)
97
- score -= 5;
98
- return Math.max(0, Math.min(100, score));
47
+ const scoring_1 = require("../../scoring");
48
+ const tools_unavailable_prose_1 = require("../tools/tools-unavailable-prose");
49
+ /**
50
+ * Adapter from the standalone Quality report's `QualityMetrics` into
51
+ * the canonical `QualityScoreInput` partition. `m.sourceFiles` carries
52
+ * the canonical repo source-file count from the cached health metrics
53
+ * — the same denominator the health-side Code Quality dimension uses
54
+ * so both surfaces' density penalties land on identical values.
55
+ */
56
+ function qualityMetricsToScoreInput(m) {
57
+ return {
58
+ sourceFiles: m.sourceFiles,
59
+ lintErrors: m.lintErrors,
60
+ lintAvailable: m.lintTool !== null,
61
+ consoleLogCount: m.consoleLogCount,
62
+ todoCount: m.todoCount,
63
+ fixmeCount: m.fixmeCount,
64
+ hackCount: m.hackCount,
65
+ staleFiles: m.staleFiles.length,
66
+ mixedLanguages: m.mixedLanguages,
67
+ filesOver500Lines: m.filesOver500Lines,
68
+ largestFileLines: m.largestFileLines,
69
+ anyTypeCount: m.anyTypeCount,
70
+ typeErrors: m.typeErrors,
71
+ duplicationPercentage: m.duplication?.percentage ?? null,
72
+ duplicationAvailable: m.duplication !== null,
73
+ maxFunctionsInFile: m.maxFunctionsInFile,
74
+ deadImportCount: m.deadImportCount,
75
+ orphanModuleCount: m.orphanModuleCount,
76
+ structuralAvailable: m.maxFunctionsInFile !== null,
77
+ commentRatio: m.commentRatio,
78
+ };
99
79
  }
100
80
  async function analyzeQuality(repoPath, options = {}) {
101
81
  const verbose = !!options.verbose;
102
- const stack = (0, detect_1.detect)(repoPath);
103
82
  const toolsUsed = ['grep', 'find'];
104
83
  const toolsUnavailable = [];
84
+ // Single canonical analysis envelope shared with `health` and the
85
+ // other migrated consumers. Pulling provenance + sourceFiles count
86
+ // from the cache means the density denominator the standalone Quality
87
+ // score uses is the SAME denominator the health-side Code Quality
88
+ // dimension uses — so the two surfaces converge on the same number.
89
+ // Closes the dual-Quality-formula drift class structurally.
90
+ const cacheResult = await (0, cache_1.readOrBuildAnalysisResult)({
91
+ cwd: repoPath,
92
+ build: (cwd) => (0, health_1.gatherAnalysisResultBody)(cwd, { verbose }),
93
+ });
94
+ const { stack } = cacheResult;
95
+ const cm = cacheResult.metrics;
96
+ const sourceFiles = cm.sourceFiles;
105
97
  // 1. Duplication (jscpd) — dispatcher-driven via DUPLICATION capability.
106
98
  const dup = await (0, timing_1.timedAsync)('jscpd', verbose, () => (0, gather_1.gatherDuplication)(repoPath));
107
99
  if (dup.toolUsed)
@@ -114,26 +106,63 @@ async function analyzeQuality(repoPath, options = {}) {
114
106
  toolsUsed.push(structure.toolUsed);
115
107
  else
116
108
  toolsUnavailable.push('graphify');
117
- // 3. Comment ratio (cloc)
118
- const comments = (0, timing_1.timed)('cloc', verbose, () => (0, gather_1.gatherCommentRatio)(repoPath));
119
- if (comments.toolUsed)
120
- toolsUsed.push(comments.toolUsed);
121
- else
122
- toolsUnavailable.push('cloc');
123
- // 4. Hygiene markers (grep)
124
- const hygiene = (0, timing_1.timed)('hygiene (grep)', verbose, () => (0, gather_1.gatherHygieneMarkers)(repoPath));
125
- // 4b. Top hygiene offenders only when --detailed (extra grep pass)
109
+ // Hygiene markers + comment ratio + counts come from the cached
110
+ // HealthMetrics the cache builder runs those gathers once per
111
+ // (cwd, SHA) so the values match the health-side Code Quality
112
+ // dimension exactly. The local gather is still called here, but
113
+ // ONLY for the staleFiles file list (rendered into the standalone
114
+ // Quality markdown). The score uses the cached count; the
115
+ // markdown uses this list. They come from the same git ls-files
116
+ // probe so they're consistent by construction.
117
+ const hygiene = (0, timing_1.timed)('hygiene (grep, list-only)', verbose, () => (0, gather_1.gatherHygieneMarkers)(repoPath));
118
+ // Top hygiene offenders — only when --detailed (extra grep pass).
119
+ // Lives standalone-side because the offender lists aren't part of
120
+ // the cached envelope yet; cheap grep on hit, only run on demand.
126
121
  const topOffenders = options.detailed
127
122
  ? (0, timing_1.timed)('hygiene top offenders', verbose, () => (0, gather_1.gatherHygieneTopOffenders)(repoPath))
128
123
  : { topConsoleFiles: undefined, topTodoFiles: undefined };
129
- // 5. Lint (eslint/ruff)
130
- const lint = await (0, timing_1.timedAsync)('lint', verbose, () => (0, gather_1.gatherLintMetrics)(repoPath));
131
- if (lint.tool)
132
- toolsUsed.push(lint.tool);
124
+ // Lint (eslint/ruff). Reads counts + the augmented "(not run: <packs>)"
125
+ // tool label off the canonical cached envelope. The cache builder
126
+ // already calls gatherWithProvenance for LINT and bakes the
127
+ // skipped-pack provenance into envelope.tool, so the standalone
128
+ // Quality report renders the SAME label health does — closes the
129
+ // cross-process drift class for lint.
130
+ //
131
+ // When the cache has NO lint envelope but the active language packs
132
+ // declare a lint capability (i.e. eslint/ruff was expected to run
133
+ // but every provider returned null), surface an explicit notice.
134
+ // Otherwise the renderer's "0 errors, 0 warnings" reads as "clean"
135
+ // when reality is "lint didn't run." Same honesty pattern the
136
+ // licenses degraded-banner uses.
137
+ const lintCounts = cacheResult.capabilities.lint?.counts;
138
+ const lintErrors = (lintCounts?.critical ?? 0) + (lintCounts?.high ?? 0);
139
+ const lintWarnings = (lintCounts?.medium ?? 0) + (lintCounts?.low ?? 0);
140
+ const lintFromCache = cacheResult.capabilities.lint?.tool ?? null;
141
+ const lintAvail = cacheResult.capabilities.lintAvailability;
142
+ // When the cache says lint was attempted but every provider
143
+ // returned null, surface the honesty notice in lintTool so the
144
+ // renderer's "0 errors, 0 warnings" cell reads with explanation
145
+ // instead of looking like a clean result. The actually-ran tool
146
+ // name (or null) flows into toolsUsed separately so the footer
147
+ // stays accurate.
148
+ const lintTool = lintFromCache ??
149
+ (lintAvail && !lintAvail.available ? `not run — ${lintAvail.unavailableReason}` : null);
150
+ if (lintFromCache)
151
+ toolsUsed.push(lintFromCache);
152
+ if (cm.commentRatio !== null)
153
+ toolsUsed.push('cloc');
133
154
  const metrics = {
134
- lintErrors: lint.errors,
135
- lintWarnings: lint.warnings,
136
- lintTool: lint.tool,
155
+ sourceFiles,
156
+ // File-size + type signals from the cached health metrics so the
157
+ // standalone slop score sees the same penalties the health-side
158
+ // dimension sees.
159
+ filesOver500Lines: cm.filesOver500Lines,
160
+ largestFileLines: cm.largestFileLines,
161
+ anyTypeCount: cm.anyTypeCount,
162
+ typeErrors: cm.typeErrors,
163
+ lintErrors,
164
+ lintWarnings,
165
+ lintTool,
137
166
  duplication: dup.stats,
138
167
  maxFunctionsInFile: structure.maxFunctionsInFile,
139
168
  maxFunctionsFilePath: structure.maxFunctionsFilePath,
@@ -142,27 +171,37 @@ async function analyzeQuality(repoPath, options = {}) {
142
171
  functionCount: structure.functionCount,
143
172
  deadImportCount: structure.deadImportCount,
144
173
  orphanModuleCount: structure.orphanModuleCount,
145
- todoCount: hygiene.todoCount,
146
- fixmeCount: hygiene.fixmeCount,
147
- hackCount: hygiene.hackCount,
148
- consoleLogCount: hygiene.consoleLogCount,
149
- commentRatio: comments.ratio,
174
+ // Hygiene + mixed + comment ratio + console-density signals
175
+ // sourced from the canonical health metrics so both surfaces
176
+ // score from identical inputs. staleFiles list comes from the
177
+ // local gather (markdown render needs the file names); its
178
+ // length matches cm.staleFiles by construction since both
179
+ // gathers run the same git ls-files probe.
180
+ todoCount: cm.todoCount,
181
+ fixmeCount: cm.fixmeCount,
182
+ hackCount: cm.hackCount,
150
183
  staleFiles: hygiene.staleFiles,
151
- mixedLanguages: hygiene.mixedLanguages,
184
+ mixedLanguages: cm.mixedLanguages,
185
+ consoleLogCount: cm.consoleLogCount,
186
+ commentRatio: cm.commentRatio,
152
187
  slopScore: 0, // computed below
153
188
  topConsoleFiles: topOffenders.topConsoleFiles,
154
189
  topTodoFiles: topOffenders.topTodoFiles,
155
190
  };
156
- metrics.slopScore = computeSlopScore(metrics);
191
+ metrics.slopScore = (0, scoring_1.evaluateSpec)(scoring_1.QUALITY_SCORING_SPEC, qualityMetricsToScoreInput(metrics)).score;
192
+ const activeLanguages = Object.entries(stack.languages)
193
+ .filter(([, active]) => active)
194
+ .map(([id]) => id);
157
195
  return {
158
- repo: stack.projectName || path.basename(repoPath),
159
- analyzedAt: new Date().toISOString(),
160
- commitSha: (0, runner_1.run)('git rev-parse --short HEAD 2>/dev/null', repoPath),
161
- branch: (0, runner_1.run)('git rev-parse --abbrev-ref HEAD 2>/dev/null', repoPath),
196
+ repo: stack.projectName || path.basename(cacheResult.cwd),
197
+ analyzedAt: cacheResult.builtAt,
198
+ commitSha: cacheResult.commitSha,
199
+ branch: cacheResult.branch,
162
200
  metrics,
163
201
  slopScore: metrics.slopScore,
164
202
  toolsUsed,
165
203
  toolsUnavailable,
204
+ activeLanguages,
166
205
  };
167
206
  }
168
207
  function formatQualityReport(report, elapsed) {
@@ -183,24 +222,39 @@ function formatQualityReport(report, elapsed) {
183
222
  L.push('| Metric | Value |');
184
223
  L.push('|--------|-------|');
185
224
  L.push(`| Slop Score | **${report.slopScore}/100** |`);
186
- if (m.duplication) {
187
- L.push(`| Duplication | ${m.duplication.percentage}% (${m.duplication.cloneCount} clones, ${m.duplication.duplicatedLines} lines) |`);
188
- }
189
- if (m.commentRatio !== null) {
190
- L.push(`| Comment Ratio | ${(m.commentRatio * 100).toFixed(1)}% |`);
225
+ // Always render every row — silent omission on tool-unavailable reads
226
+ // as "this signal is fine" when reality is "we couldn't measure it."
227
+ // The unavailable-row text names the underlying tool so the customer
228
+ // knows exactly what to install to populate the metric.
229
+ L.push(`| Duplication | ${m.duplication
230
+ ? `${m.duplication.percentage}% (${m.duplication.cloneCount} clones, ${m.duplication.duplicatedLines} lines)`
231
+ : 'unavailable — install `jscpd`'} |`);
232
+ L.push(`| Comment Ratio | ${m.commentRatio !== null
233
+ ? `${(m.commentRatio * 100).toFixed(1)}%`
234
+ : 'unavailable — install `cloc`'} |`);
235
+ // Split the lint label into "Lint Errors" (counts + tool that ran) and
236
+ // "Lint Coverage" (which packs WERE attempted but didn't produce
237
+ // findings). Pre-split, multi-pack repos where one provider returned
238
+ // null silently rendered the parenthetical "(ruff (not run: typescript))"
239
+ // — accurate but easy for customers to miss. Promoting the not-run
240
+ // packs to their own visible row makes the coverage gap legible.
241
+ const notRunMatch = m.lintTool ? /\(not run: ([^)]+)\)/.exec(m.lintTool) : null;
242
+ const lintToolLabel = m.lintTool
243
+ ? notRunMatch
244
+ ? m.lintTool.replace(/\s*\(not run: [^)]+\)/, '').trim()
245
+ : m.lintTool
246
+ : null;
247
+ L.push(`| Lint Errors | ${m.lintErrors} errors, ${m.lintWarnings} warnings${lintToolLabel ? ' (' + lintToolLabel + ')' : ''} |`);
248
+ if (notRunMatch) {
249
+ L.push(`| ⚠ Lint coverage gap | not run on: ${notRunMatch[1]} — configure the linter (e.g. add \`eslint.config.js\`) to enable |`);
191
250
  }
192
- L.push(`| Lint Errors | ${m.lintErrors} errors, ${m.lintWarnings} warnings${m.lintTool ? ' (' + m.lintTool + ')' : ''} |`);
193
251
  L.push(`| TODO/FIXME/HACK | ${m.todoCount} / ${m.fixmeCount} / ${m.hackCount} |`);
194
252
  L.push(`| Console Statements | ${m.consoleLogCount} |`);
195
- if (m.functionCount !== null) {
196
- L.push(`| Functions | ${m.functionCount} total, max ${m.maxFunctionsInFile} in one file |`);
197
- }
198
- if (m.deadImportCount !== null) {
199
- L.push(`| Dead Imports | ${m.deadImportCount} |`);
200
- }
201
- if (m.orphanModuleCount !== null) {
202
- L.push(`| Orphan Modules | ${m.orphanModuleCount} |`);
203
- }
253
+ L.push(`| Functions | ${m.functionCount !== null
254
+ ? `${m.functionCount} total, max ${m.maxFunctionsInFile} in one file`
255
+ : 'unavailable — install `graphify`'} |`);
256
+ L.push(`| Dead Imports | ${m.deadImportCount !== null ? m.deadImportCount : 'unavailable — install `graphify`'} |`);
257
+ L.push(`| Orphan Modules | ${m.orphanModuleCount !== null ? m.orphanModuleCount : 'unavailable — install `graphify`'} |`);
204
258
  if (m.avgCohesion !== null) {
205
259
  L.push(`| Avg Cohesion | ${m.avgCohesion.toFixed(2)} |`);
206
260
  }
@@ -213,10 +267,13 @@ function formatQualityReport(report, elapsed) {
213
267
  L.push('');
214
268
  L.push('---');
215
269
  L.push('');
216
- // Duplication details
270
+ // Duplication details — always render the section so the customer
271
+ // sees an explicit "unavailable" message rather than a missing H2
272
+ // (which reads as "no duplication" when the real state is "we
273
+ // couldn't measure").
274
+ L.push('## Duplication');
275
+ L.push('');
217
276
  if (m.duplication) {
218
- L.push('## Duplication');
219
- L.push('');
220
277
  L.push(`**${m.duplication.percentage}%** of code is duplicated across ${m.duplication.cloneCount} clones (${m.duplication.duplicatedLines} lines out of ${m.duplication.totalLines}).`);
221
278
  L.push('');
222
279
  if (m.duplication.percentage > 15) {
@@ -228,14 +285,19 @@ function formatQualityReport(report, elapsed) {
228
285
  else {
229
286
  L.push('> Duplication is within acceptable range.');
230
287
  }
231
- L.push('');
232
- L.push('---');
233
- L.push('');
234
288
  }
235
- // Structural complexity
289
+ else {
290
+ L.push('> ⚠ **Duplication unavailable.** The duplicate-code detector (`jscpd`) did not run on this repository — its output is needed to populate this section. Install jscpd (`npm i -g jscpd`) and re-run to enable.');
291
+ }
292
+ L.push('');
293
+ L.push('---');
294
+ L.push('');
295
+ // Structural complexity — same always-render discipline as Duplication.
296
+ // Graphify produces functionCount / densest file / cohesion / orphan
297
+ // modules / dead imports; its absence is signaled by null fields.
298
+ L.push('## Structural Complexity');
299
+ L.push('');
236
300
  if (m.functionCount !== null) {
237
- L.push('## Structural Complexity');
238
- L.push('');
239
301
  L.push(`- **${m.functionCount}** functions across ${m.communityCount ?? '?'} architectural communities`);
240
302
  L.push(`- **Densest file:** ${m.maxFunctionsFilePath ?? 'unknown'} (${m.maxFunctionsInFile} functions)`);
241
303
  L.push(`- **Avg cohesion:** ${m.avgCohesion?.toFixed(2) ?? 'unknown'}`);
@@ -243,12 +305,24 @@ function formatQualityReport(report, elapsed) {
243
305
  L.push(`- **Dead imports:** ${m.deadImportCount}`);
244
306
  }
245
307
  if (m.orphanModuleCount !== null && m.orphanModuleCount > 0) {
246
- L.push(`- **Orphan modules:** ${m.orphanModuleCount} (no inbound imports)`);
308
+ // C# uses namespace-based name resolution; graphify follows
309
+ // file-based imports only, so every .cs file reads as orphaned
310
+ // to it (the using-directive graph isn't traversed). Label the
311
+ // count as informational on csharp-active repos so the reader
312
+ // doesn't take 58K orphan modules as an actionable defect.
313
+ const csharpActive = report.activeLanguages?.includes('csharp');
314
+ const qualifier = csharpActive
315
+ ? " (informational — graphify can't follow C# `using` directives across assemblies)"
316
+ : ' (no inbound imports)';
317
+ L.push(`- **Orphan modules:** ${m.orphanModuleCount}${qualifier}`);
247
318
  }
248
- L.push('');
249
- L.push('---');
250
- L.push('');
251
319
  }
320
+ else {
321
+ L.push('> ⚠ **Structural complexity unavailable.** The AST-graph builder (`graphify`) did not run on this repository — its output drives function counts, densest-file detection, architectural cohesion, dead imports, and orphan modules. Install graphify (`pip install graphifyy`) and re-run to enable.');
322
+ }
323
+ L.push('');
324
+ L.push('---');
325
+ L.push('');
252
326
  // Hygiene
253
327
  L.push('## Code Hygiene');
254
328
  L.push('');
@@ -256,9 +330,9 @@ function formatQualityReport(report, elapsed) {
256
330
  L.push(`- **FIXME:** ${m.fixmeCount}`);
257
331
  L.push(`- **HACK:** ${m.hackCount}`);
258
332
  L.push(`- **Console statements:** ${m.consoleLogCount}`);
259
- if (m.commentRatio !== null) {
260
- L.push(`- **Comment ratio:** ${(m.commentRatio * 100).toFixed(1)}%`);
261
- }
333
+ L.push(`- **Comment ratio:** ${m.commentRatio !== null
334
+ ? `${(m.commentRatio * 100).toFixed(1)}%`
335
+ : 'unavailable (`cloc` did not run)'}`);
262
336
  if (m.staleFiles.length > 0) {
263
337
  L.push(`- **Stale files in git:** ${m.staleFiles.map((f) => '`' + f + '`').join(', ')}`);
264
338
  }
@@ -270,9 +344,7 @@ function formatQualityReport(report, elapsed) {
270
344
  L.push('');
271
345
  // Footer
272
346
  L.push(`**Tools used:** ${report.toolsUsed.join(', ')}`);
273
- if (report.toolsUnavailable.length > 0) {
274
- L.push(`**Tools unavailable:** ${report.toolsUnavailable.join(', ')}`);
275
- }
347
+ L.push(...(0, tools_unavailable_prose_1.renderToolsUnavailableLines)(report.toolsUnavailable));
276
348
  L.push(`**Analysis time:** ${elapsed}s`);
277
349
  L.push('');
278
350
  L.push('*Generated by [VyuhLabs DXKit](https://www.npmjs.com/package/@vyuhlabs/dxkit)*');
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analyzers/quality/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analyzers/quality/index.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,55 @@
1
1
  /**
2
- * Code Quality dimension — shallow score for health aggregation.
2
+ * Code Quality dimension — health-side adapter over the canonical
3
+ * quality scorer.
3
4
  *
4
- * Phase 3: delegates to scoring.ts (identical behavior).
5
- * Phase 6: will be replaced with dedicated quality analyzer logic.
5
+ * Translates `ScoreInput { metrics, capabilities }` into the
6
+ * `QualityScoreInput` partition consumed by `scoreQualityFromInput`,
7
+ * then wraps the resulting score in a full `DimensionScore` (status +
8
+ * details + metrics envelope) for the health audit rollup.
9
+ *
10
+ * D123 closure: this file used to delegate to a separate
11
+ * `scoreQuality` in `analyzers/scoring.ts` while the standalone
12
+ * quality report computed `computeSlopScore` from a different signal
13
+ * set. Same repo could surface as health.CodeQuality 22/100 and
14
+ * quality-review.SlopScore 45/100 — customer-visible contradiction.
15
+ * The canonical formula now lives in `quality/scoring.ts`; both
16
+ * surfaces compute the same number from the same partitioned inputs.
17
+ */
18
+ import { type QualityScoreInput } from '../../scoring';
19
+ import { DimensionScore, ScoreInput } from '../types';
20
+ /**
21
+ * Build the canonical `QualityScoreInput` from the health-side
22
+ * `ScoreInput`. Each field maps to its data source:
23
+ *
24
+ * - Lint counts ← `capabilities.lint.counts`
25
+ * (critical + high → errors). Availability is "did any pack
26
+ * produce a `LintResult`" — i.e. `c.lint !== undefined`.
27
+ * - Hygiene markers + stale files + mixed-language flag +
28
+ * comment ratio ← `metrics.*`. Plumbed into HealthMetrics by
29
+ * the cache builder so both consumer paths land on the same
30
+ * values (the standalone Quality report reads them off the
31
+ * same cached envelope).
32
+ * - File-size + filesystem-walked + density-source metrics
33
+ * ← `metrics.*`.
34
+ * - Duplication, structural ← `capabilities.{duplication,
35
+ * structural}`. Availability is "did the capability dispatch
36
+ * return an envelope" — same shape as lint.
37
+ */
38
+ export declare function toQualityScoreInput(input: ScoreInput): QualityScoreInput;
39
+ /**
40
+ * Score-only adapter for action ranking. The health remediation
41
+ * planner builds `RemediationAction<ScoreInput>` patches and calls
42
+ * `rank()` with a per-dimension scorer that maps `ScoreInput` to
43
+ * `{ score }`. Mirrors the `scoreSecurityFromScoreInput` shim so
44
+ * `health/actions.ts` stays symmetric across dimensions.
45
+ */
46
+ export declare function scoreQualityFromScoreInput(input: ScoreInput): {
47
+ score: number;
48
+ };
49
+ /**
50
+ * Health audit's Code Quality dimension entry point. Produces the
51
+ * `DimensionScore` consumed by `health.ts:analyzeHealthInternal` for
52
+ * the dimension rollup, the dashboard summary, and the agent report.
6
53
  */
7
- import { DimensionScore } from '../types';
8
- import { ScoreInput } from '../scoring';
9
54
  export declare function scoreQualityDimension(input: ScoreInput): DimensionScore;
10
55
  //# sourceMappingURL=shallow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shallow.d.ts","sourceRoot":"","sources":["../../../src/analyzers/quality/shallow.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAEtD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAEvE"}
1
+ {"version":3,"file":"shallow.d.ts","sourceRoot":"","sources":["../../../src/analyzers/quality/shallow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAEL,KAAK,iBAAiB,EAGvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,iBAAiB,CAmCxE;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAE/E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAgFvE"}