code-auditor-mcp 3.1.0 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (360) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +665 -1
  3. package/README.md +85 -11
  4. package/dist/__test_tmp__/spec18_test.d.ts +2 -0
  5. package/dist/__test_tmp__/spec18_test.d.ts.map +1 -0
  6. package/dist/__test_tmp__/spec18_test.js +5 -0
  7. package/dist/__test_tmp__/spec18_test.js.map +1 -0
  8. package/dist/__tests__/fixtures/spec-20/scripts/tool.d.ts +6 -0
  9. package/dist/__tests__/fixtures/spec-20/scripts/tool.d.ts.map +1 -0
  10. package/dist/__tests__/fixtures/spec-20/scripts/tool.js +12 -0
  11. package/dist/__tests__/fixtures/spec-20/scripts/tool.js.map +1 -0
  12. package/dist/__tests__/fixtures/spec-20/src/demo-module.d.ts +7 -0
  13. package/dist/__tests__/fixtures/spec-20/src/demo-module.d.ts.map +1 -0
  14. package/dist/__tests__/fixtures/spec-20/src/demo-module.js +13 -0
  15. package/dist/__tests__/fixtures/spec-20/src/demo-module.js.map +1 -0
  16. package/dist/analyzers/analyzerUtils.js +2 -2
  17. package/dist/analyzers/analyzerUtils.js.map +1 -1
  18. package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts +1 -1
  19. package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts.map +1 -1
  20. package/dist/analyzers/cross-language/APIContractAnalyzer.js +2 -4
  21. package/dist/analyzers/cross-language/APIContractAnalyzer.js.map +1 -1
  22. package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.d.ts +3 -0
  23. package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.d.ts.map +1 -1
  24. package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.js +3 -5
  25. package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.js.map +1 -1
  26. package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
  27. package/dist/analyzers/cross-language/DependencyGraphBuilder.js +0 -3
  28. package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
  29. package/dist/analyzers/cross-language/SchemaValidator.d.ts +1 -1
  30. package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -1
  31. package/dist/analyzers/cross-language/SchemaValidator.js +2 -5
  32. package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -1
  33. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts +83 -0
  34. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts.map +1 -0
  35. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js +611 -0
  36. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js.map +1 -0
  37. package/dist/analyzers/documentationAnalyzer.d.ts.map +1 -1
  38. package/dist/analyzers/documentationAnalyzer.js +8 -4
  39. package/dist/analyzers/documentationAnalyzer.js.map +1 -1
  40. package/dist/analyzers/orm/adapterRegistry.d.ts +41 -0
  41. package/dist/analyzers/orm/adapterRegistry.d.ts.map +1 -0
  42. package/dist/analyzers/orm/adapterRegistry.js +73 -0
  43. package/dist/analyzers/orm/adapterRegistry.js.map +1 -0
  44. package/dist/analyzers/orm/drizzleAdapter.d.ts +42 -0
  45. package/dist/analyzers/orm/drizzleAdapter.d.ts.map +1 -0
  46. package/dist/analyzers/orm/drizzleAdapter.js +166 -0
  47. package/dist/analyzers/orm/drizzleAdapter.js.map +1 -0
  48. package/dist/analyzers/orm/index.d.ts +14 -0
  49. package/dist/analyzers/orm/index.d.ts.map +1 -0
  50. package/dist/analyzers/orm/index.js +24 -0
  51. package/dist/analyzers/orm/index.js.map +1 -0
  52. package/dist/analyzers/orm/prismaAdapter.d.ts +45 -0
  53. package/dist/analyzers/orm/prismaAdapter.d.ts.map +1 -0
  54. package/dist/analyzers/orm/prismaAdapter.js +170 -0
  55. package/dist/analyzers/orm/prismaAdapter.js.map +1 -0
  56. package/dist/analyzers/orm/types.d.ts +63 -0
  57. package/dist/analyzers/orm/types.d.ts.map +1 -0
  58. package/dist/analyzers/orm/types.js +10 -0
  59. package/dist/analyzers/orm/types.js.map +1 -0
  60. package/dist/analyzers/provenance.d.ts +133 -0
  61. package/dist/analyzers/provenance.d.ts.map +1 -0
  62. package/dist/analyzers/provenance.js +1041 -0
  63. package/dist/analyzers/provenance.js.map +1 -0
  64. package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
  65. package/dist/analyzers/reactAnalyzer.js +117 -1
  66. package/dist/analyzers/reactAnalyzer.js.map +1 -1
  67. package/dist/analyzers/ruleRegistry.d.ts +38 -0
  68. package/dist/analyzers/ruleRegistry.d.ts.map +1 -0
  69. package/dist/analyzers/ruleRegistry.js +123 -0
  70. package/dist/analyzers/ruleRegistry.js.map +1 -0
  71. package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts +58 -0
  72. package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts.map +1 -0
  73. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js +445 -0
  74. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js.map +1 -0
  75. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +52 -0
  76. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
  77. package/dist/analyzers/universal/UniversalDRYAnalyzer.js +108 -26
  78. package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
  79. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +64 -0
  80. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
  81. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +259 -103
  82. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
  83. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
  84. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +5 -15
  85. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
  86. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
  87. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +10 -10
  88. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
  89. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +25 -0
  90. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
  91. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +250 -59
  92. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
  93. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts +103 -0
  94. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -0
  95. package/dist/analyzers/universal/UniversalStylesAnalyzer.js +750 -0
  96. package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -0
  97. package/dist/auditRunner.d.ts.map +1 -1
  98. package/dist/auditRunner.js +483 -3
  99. package/dist/auditRunner.js.map +1 -1
  100. package/dist/baseline.d.ts +98 -0
  101. package/dist/baseline.d.ts.map +1 -0
  102. package/dist/baseline.js +184 -0
  103. package/dist/baseline.js.map +1 -0
  104. package/dist/churn/churnExtractor.d.ts +32 -0
  105. package/dist/churn/churnExtractor.d.ts.map +1 -0
  106. package/dist/churn/churnExtractor.js +261 -0
  107. package/dist/churn/churnExtractor.js.map +1 -0
  108. package/dist/cli.js +1215 -11
  109. package/dist/cli.js.map +1 -1
  110. package/dist/codeIndexDB-enhanced.js +1 -1
  111. package/dist/codeIndexDB-enhanced.js.map +1 -1
  112. package/dist/codeIndexDB.d.ts +101 -0
  113. package/dist/codeIndexDB.d.ts.map +1 -1
  114. package/dist/codeIndexDB.js +661 -5
  115. package/dist/codeIndexDB.js.map +1 -1
  116. package/dist/config/configLoader.d.ts.map +1 -1
  117. package/dist/config/configLoader.js +95 -1
  118. package/dist/config/configLoader.js.map +1 -1
  119. package/dist/config/defaults.d.ts +72 -1
  120. package/dist/config/defaults.d.ts.map +1 -1
  121. package/dist/config/defaults.js +146 -15
  122. package/dist/config/defaults.js.map +1 -1
  123. package/dist/config/pathProfiles.d.ts +38 -0
  124. package/dist/config/pathProfiles.d.ts.map +1 -0
  125. package/dist/config/pathProfiles.js +47 -0
  126. package/dist/config/pathProfiles.js.map +1 -0
  127. package/dist/conventions/conventionMiner.d.ts +63 -0
  128. package/dist/conventions/conventionMiner.d.ts.map +1 -0
  129. package/dist/conventions/conventionMiner.js +696 -0
  130. package/dist/conventions/conventionMiner.js.map +1 -0
  131. package/dist/coverage/coverageService.d.ts +49 -0
  132. package/dist/coverage/coverageService.d.ts.map +1 -0
  133. package/dist/coverage/coverageService.js +117 -0
  134. package/dist/coverage/coverageService.js.map +1 -0
  135. package/dist/coverage/istanbulParser.d.ts +84 -0
  136. package/dist/coverage/istanbulParser.d.ts.map +1 -0
  137. package/dist/coverage/istanbulParser.js +120 -0
  138. package/dist/coverage/istanbulParser.js.map +1 -0
  139. package/dist/coverage/lcovParser.d.ts +40 -0
  140. package/dist/coverage/lcovParser.d.ts.map +1 -0
  141. package/dist/coverage/lcovParser.js +168 -0
  142. package/dist/coverage/lcovParser.js.map +1 -0
  143. package/dist/fingerprint.d.ts +17 -0
  144. package/dist/fingerprint.d.ts.map +1 -1
  145. package/dist/fingerprint.js +42 -0
  146. package/dist/fingerprint.js.map +1 -1
  147. package/dist/grammars/tree-sitter-css.wasm +0 -0
  148. package/dist/graph/blastRadius.d.ts +27 -0
  149. package/dist/graph/blastRadius.d.ts.map +1 -0
  150. package/dist/graph/blastRadius.js +150 -0
  151. package/dist/graph/blastRadius.js.map +1 -0
  152. package/dist/graph/callGraph.d.ts +78 -0
  153. package/dist/graph/callGraph.d.ts.map +1 -0
  154. package/dist/graph/callGraph.js +484 -0
  155. package/dist/graph/callGraph.js.map +1 -0
  156. package/dist/graph/importGraph.d.ts +91 -0
  157. package/dist/graph/importGraph.d.ts.map +1 -0
  158. package/dist/graph/importGraph.js +602 -0
  159. package/dist/graph/importGraph.js.map +1 -0
  160. package/dist/graph/outputFormatter.d.ts +55 -0
  161. package/dist/graph/outputFormatter.d.ts.map +1 -0
  162. package/dist/graph/outputFormatter.js +283 -0
  163. package/dist/graph/outputFormatter.js.map +1 -0
  164. package/dist/hooks/codex.d.ts +36 -1
  165. package/dist/hooks/codex.d.ts.map +1 -1
  166. package/dist/hooks/codex.js +88 -54
  167. package/dist/hooks/codex.js.map +1 -1
  168. package/dist/hotspots/hotspotScorer.d.ts +20 -0
  169. package/dist/hotspots/hotspotScorer.d.ts.map +1 -0
  170. package/dist/hotspots/hotspotScorer.js +202 -0
  171. package/dist/hotspots/hotspotScorer.js.map +1 -0
  172. package/dist/invariants/invariant-rules.schema.json +42 -1
  173. package/dist/invariants/ruleEngine.d.ts +4 -1
  174. package/dist/invariants/ruleEngine.d.ts.map +1 -1
  175. package/dist/invariants/ruleEngine.js +141 -5
  176. package/dist/invariants/ruleEngine.js.map +1 -1
  177. package/dist/invariants/ruleValidator.d.ts.map +1 -1
  178. package/dist/invariants/ruleValidator.js +62 -1
  179. package/dist/invariants/ruleValidator.js.map +1 -1
  180. package/dist/invariants/types.d.ts +23 -2
  181. package/dist/invariants/types.d.ts.map +1 -1
  182. package/dist/languages/UniversalAnalyzer.d.ts +1 -1
  183. package/dist/languages/UniversalAnalyzer.d.ts.map +1 -1
  184. package/dist/languages/UniversalAnalyzer.js +59 -24
  185. package/dist/languages/UniversalAnalyzer.js.map +1 -1
  186. package/dist/languages/index.d.ts +1 -0
  187. package/dist/languages/index.d.ts.map +1 -1
  188. package/dist/languages/index.js +3 -0
  189. package/dist/languages/index.js.map +1 -1
  190. package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts +59 -0
  191. package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts.map +1 -0
  192. package/dist/languages/tree-sitter/TreeSitterCssAdapter.js +236 -0
  193. package/dist/languages/tree-sitter/TreeSitterCssAdapter.js.map +1 -0
  194. package/dist/languages/tree-sitter/parser.d.ts.map +1 -1
  195. package/dist/languages/tree-sitter/parser.js +2 -0
  196. package/dist/languages/tree-sitter/parser.js.map +1 -1
  197. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
  198. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +61 -10
  199. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
  200. package/dist/ledger.d.ts +128 -0
  201. package/dist/ledger.d.ts.map +1 -0
  202. package/dist/ledger.js +345 -0
  203. package/dist/ledger.js.map +1 -0
  204. package/dist/mcp-tools/projectTasks.d.ts.map +1 -1
  205. package/dist/mcp-tools/projectTasks.js +9 -14
  206. package/dist/mcp-tools/projectTasks.js.map +1 -1
  207. package/dist/mcp.js +0 -0
  208. package/dist/mcpAuditJobs.d.ts.map +1 -1
  209. package/dist/mcpAuditJobs.js +3 -0
  210. package/dist/mcpAuditJobs.js.map +1 -1
  211. package/dist/reporting/csvReportGenerator.d.ts.map +1 -1
  212. package/dist/reporting/csvReportGenerator.js +7 -1
  213. package/dist/reporting/csvReportGenerator.js.map +1 -1
  214. package/dist/reporting/htmlReportGenerator.d.ts.map +1 -1
  215. package/dist/reporting/htmlReportGenerator.js +5 -1
  216. package/dist/reporting/htmlReportGenerator.js.map +1 -1
  217. package/dist/reporting/jsonReportGenerator.d.ts.map +1 -1
  218. package/dist/reporting/jsonReportGenerator.js +10 -2
  219. package/dist/reporting/jsonReportGenerator.js.map +1 -1
  220. package/dist/reporting/sarifReportGenerator.d.ts.map +1 -1
  221. package/dist/reporting/sarifReportGenerator.js +17 -17
  222. package/dist/reporting/sarifReportGenerator.js.map +1 -1
  223. package/dist/scripts/runBench.d.ts +94 -0
  224. package/dist/scripts/runBench.d.ts.map +1 -0
  225. package/dist/scripts/runBench.js +1559 -0
  226. package/dist/scripts/runBench.js.map +1 -0
  227. package/dist/search/QueryParser.d.ts.map +1 -1
  228. package/dist/search/QueryParser.js +51 -4
  229. package/dist/search/QueryParser.js.map +1 -1
  230. package/dist/services/CodeMapGenerator.d.ts +33 -0
  231. package/dist/services/CodeMapGenerator.d.ts.map +1 -1
  232. package/dist/services/CodeMapGenerator.js +404 -0
  233. package/dist/services/CodeMapGenerator.js.map +1 -1
  234. package/dist/styles/normalizer.d.ts +37 -0
  235. package/dist/styles/normalizer.d.ts.map +1 -0
  236. package/dist/styles/normalizer.js +301 -0
  237. package/dist/styles/normalizer.js.map +1 -0
  238. package/dist/styles/styleExtractor.d.ts +38 -0
  239. package/dist/styles/styleExtractor.d.ts.map +1 -0
  240. package/dist/styles/styleExtractor.js +630 -0
  241. package/dist/styles/styleExtractor.js.map +1 -0
  242. package/dist/styles/styleIndexer.d.ts +35 -0
  243. package/dist/styles/styleIndexer.d.ts.map +1 -0
  244. package/dist/styles/styleIndexer.js +266 -0
  245. package/dist/styles/styleIndexer.js.map +1 -0
  246. package/dist/styles/tailwindConfigLoader.d.ts +38 -0
  247. package/dist/styles/tailwindConfigLoader.d.ts.map +1 -0
  248. package/dist/styles/tailwindConfigLoader.js +374 -0
  249. package/dist/styles/tailwindConfigLoader.js.map +1 -0
  250. package/dist/styles/tailwindExpander.d.ts +38 -0
  251. package/dist/styles/tailwindExpander.d.ts.map +1 -0
  252. package/dist/styles/tailwindExpander.js +637 -0
  253. package/dist/styles/tailwindExpander.js.map +1 -0
  254. package/dist/styles/types.d.ts +92 -0
  255. package/dist/styles/types.d.ts.map +1 -0
  256. package/dist/styles/types.js +10 -0
  257. package/dist/styles/types.js.map +1 -0
  258. package/dist/symbols.d.ts +21 -0
  259. package/dist/symbols.d.ts.map +1 -0
  260. package/dist/symbols.js +31 -0
  261. package/dist/symbols.js.map +1 -0
  262. package/dist/types.d.ts +326 -3
  263. package/dist/types.d.ts.map +1 -1
  264. package/dist/types.js.map +1 -1
  265. package/package.json +9 -5
  266. package/plugin/.claude-plugin/plugin.json +1 -1
  267. package/plugin/scripts/hook-audit.sh +5 -1
  268. package/plugin/skills/code-auditor/SKILL.md +51 -0
  269. package/dist/analyzers/__tests__/fixtures/spec-17/anonymous-callback-map.d.ts +0 -21
  270. package/dist/analyzers/__tests__/fixtures/spec-17/anonymous-callback-map.d.ts.map +0 -1
  271. package/dist/analyzers/__tests__/fixtures/spec-17/anonymous-callback-map.js +0 -21
  272. package/dist/analyzers/__tests__/fixtures/spec-17/anonymous-callback-map.js.map +0 -1
  273. package/dist/analyzers/__tests__/fixtures/spec-17/barrel-test-migration.d.ts +0 -13
  274. package/dist/analyzers/__tests__/fixtures/spec-17/barrel-test-migration.d.ts.map +0 -1
  275. package/dist/analyzers/__tests__/fixtures/spec-17/barrel-test-migration.js +0 -12
  276. package/dist/analyzers/__tests__/fixtures/spec-17/barrel-test-migration.js.map +0 -1
  277. package/dist/analyzers/__tests__/fixtures/spec-17/direct-access-allow-config.d.ts +0 -11
  278. package/dist/analyzers/__tests__/fixtures/spec-17/direct-access-allow-config.d.ts.map +0 -1
  279. package/dist/analyzers/__tests__/fixtures/spec-17/direct-access-allow-config.js +0 -22
  280. package/dist/analyzers/__tests__/fixtures/spec-17/direct-access-allow-config.js.map +0 -1
  281. package/dist/analyzers/__tests__/fixtures/spec-17/exported-undocumented.d.ts +0 -9
  282. package/dist/analyzers/__tests__/fixtures/spec-17/exported-undocumented.d.ts.map +0 -1
  283. package/dist/analyzers/__tests__/fixtures/spec-17/exported-undocumented.js +0 -13
  284. package/dist/analyzers/__tests__/fixtures/spec-17/exported-undocumented.js.map +0 -1
  285. package/dist/analyzers/__tests__/fixtures/spec-17/for-loop-query.d.ts +0 -13
  286. package/dist/analyzers/__tests__/fixtures/spec-17/for-loop-query.d.ts.map +0 -1
  287. package/dist/analyzers/__tests__/fixtures/spec-17/for-loop-query.js +0 -18
  288. package/dist/analyzers/__tests__/fixtures/spec-17/for-loop-query.js.map +0 -1
  289. package/dist/analyzers/__tests__/fixtures/spec-17/import-node-builtin.d.ts +0 -10
  290. package/dist/analyzers/__tests__/fixtures/spec-17/import-node-builtin.d.ts.map +0 -1
  291. package/dist/analyzers/__tests__/fixtures/spec-17/import-node-builtin.js +0 -16
  292. package/dist/analyzers/__tests__/fixtures/spec-17/import-node-builtin.js.map +0 -1
  293. package/dist/analyzers/__tests__/fixtures/spec-17/jsx-event-handler.d.ts +0 -14
  294. package/dist/analyzers/__tests__/fixtures/spec-17/jsx-event-handler.d.ts.map +0 -1
  295. package/dist/analyzers/__tests__/fixtures/spec-17/jsx-event-handler.js +0 -18
  296. package/dist/analyzers/__tests__/fixtures/spec-17/jsx-event-handler.js.map +0 -1
  297. package/dist/analyzers/__tests__/fixtures/spec-17/nested-loops-query.d.ts +0 -13
  298. package/dist/analyzers/__tests__/fixtures/spec-17/nested-loops-query.d.ts.map +0 -1
  299. package/dist/analyzers/__tests__/fixtures/spec-17/nested-loops-query.js +0 -22
  300. package/dist/analyzers/__tests__/fixtures/spec-17/nested-loops-query.js.map +0 -1
  301. package/dist/analyzers/__tests__/fixtures/spec-17/nine-line-repeated.d.ts +0 -10
  302. package/dist/analyzers/__tests__/fixtures/spec-17/nine-line-repeated.d.ts.map +0 -1
  303. package/dist/analyzers/__tests__/fixtures/spec-17/nine-line-repeated.js +0 -20
  304. package/dist/analyzers/__tests__/fixtures/spec-17/nine-line-repeated.js.map +0 -1
  305. package/dist/analyzers/__tests__/fixtures/spec-17/private-methods.d.ts +0 -18
  306. package/dist/analyzers/__tests__/fixtures/spec-17/private-methods.d.ts.map +0 -1
  307. package/dist/analyzers/__tests__/fixtures/spec-17/private-methods.js +0 -28
  308. package/dist/analyzers/__tests__/fixtures/spec-17/private-methods.js.map +0 -1
  309. package/dist/analyzers/__tests__/fixtures/spec-17/scope-all-config.d.ts +0 -11
  310. package/dist/analyzers/__tests__/fixtures/spec-17/scope-all-config.d.ts.map +0 -1
  311. package/dist/analyzers/__tests__/fixtures/spec-17/scope-all-config.js +0 -31
  312. package/dist/analyzers/__tests__/fixtures/spec-17/scope-all-config.js.map +0 -1
  313. package/dist/analyzers/__tests__/fixtures/spec-17/sql-tagged-template.d.ts +0 -11
  314. package/dist/analyzers/__tests__/fixtures/spec-17/sql-tagged-template.d.ts.map +0 -1
  315. package/dist/analyzers/__tests__/fixtures/spec-17/sql-tagged-template.js +0 -18
  316. package/dist/analyzers/__tests__/fixtures/spec-17/sql-tagged-template.js.map +0 -1
  317. package/dist/analyzers/__tests__/fixtures/spec-17/structural-similar-methods.d.ts +0 -13
  318. package/dist/analyzers/__tests__/fixtures/spec-17/structural-similar-methods.d.ts.map +0 -1
  319. package/dist/analyzers/__tests__/fixtures/spec-17/structural-similar-methods.js +0 -61
  320. package/dist/analyzers/__tests__/fixtures/spec-17/structural-similar-methods.js.map +0 -1
  321. package/dist/analyzers/__tests__/fixtures/spec-17/template-prefix-table.d.ts +0 -10
  322. package/dist/analyzers/__tests__/fixtures/spec-17/template-prefix-table.d.ts.map +0 -1
  323. package/dist/analyzers/__tests__/fixtures/spec-17/template-prefix-table.js +0 -15
  324. package/dist/analyzers/__tests__/fixtures/spec-17/template-prefix-table.js.map +0 -1
  325. package/dist/analyzers/__tests__/fixtures/spec-17/token-identical-20-lines.d.ts +0 -11
  326. package/dist/analyzers/__tests__/fixtures/spec-17/token-identical-20-lines.d.ts.map +0 -1
  327. package/dist/analyzers/__tests__/fixtures/spec-17/token-identical-20-lines.js +0 -49
  328. package/dist/analyzers/__tests__/fixtures/spec-17/token-identical-20-lines.js.map +0 -1
  329. package/dist/analyzers/__tests__/fixtures/spec-17/tsx-no-db-usage.d.ts +0 -10
  330. package/dist/analyzers/__tests__/fixtures/spec-17/tsx-no-db-usage.d.ts.map +0 -1
  331. package/dist/analyzers/__tests__/fixtures/spec-17/tsx-no-db-usage.js +0 -19
  332. package/dist/analyzers/__tests__/fixtures/spec-17/tsx-no-db-usage.js.map +0 -1
  333. package/dist/analyzers/__tests__/fixtures/spec-17/twenty-methods-vs-complex.d.ts +0 -37
  334. package/dist/analyzers/__tests__/fixtures/spec-17/twenty-methods-vs-complex.d.ts.map +0 -1
  335. package/dist/analyzers/__tests__/fixtures/spec-17/twenty-methods-vs-complex.js +0 -73
  336. package/dist/analyzers/__tests__/fixtures/spec-17/twenty-methods-vs-complex.js.map +0 -1
  337. package/dist/analyzers/__tests__/fixtures/spec-17/unique-method-74-lines.d.ts +0 -12
  338. package/dist/analyzers/__tests__/fixtures/spec-17/unique-method-74-lines.d.ts.map +0 -1
  339. package/dist/analyzers/__tests__/fixtures/spec-17/unique-method-74-lines.js +0 -82
  340. package/dist/analyzers/__tests__/fixtures/spec-17/unique-method-74-lines.js.map +0 -1
  341. package/dist/analyzers/__tests__/fixtures/spec-17/word-the-in-comment.d.ts +0 -10
  342. package/dist/analyzers/__tests__/fixtures/spec-17/word-the-in-comment.d.ts.map +0 -1
  343. package/dist/analyzers/__tests__/fixtures/spec-17/word-the-in-comment.js +0 -15
  344. package/dist/analyzers/__tests__/fixtures/spec-17/word-the-in-comment.js.map +0 -1
  345. package/dist/analyzers/dataAccessAnalyzer.d.ts +0 -46
  346. package/dist/analyzers/dataAccessAnalyzer.d.ts.map +0 -1
  347. package/dist/analyzers/dataAccessAnalyzer.js +0 -474
  348. package/dist/analyzers/dataAccessAnalyzer.js.map +0 -1
  349. package/dist/analyzers/dryAnalyzer.d.ts +0 -31
  350. package/dist/analyzers/dryAnalyzer.d.ts.map +0 -1
  351. package/dist/analyzers/dryAnalyzer.js +0 -734
  352. package/dist/analyzers/dryAnalyzer.js.map +0 -1
  353. package/dist/analyzers/schemaAnalyzer.d.ts +0 -23
  354. package/dist/analyzers/schemaAnalyzer.d.ts.map +0 -1
  355. package/dist/analyzers/schemaAnalyzer.js +0 -564
  356. package/dist/analyzers/schemaAnalyzer.js.map +0 -1
  357. package/dist/analyzers/solidAnalyzer.d.ts +0 -33
  358. package/dist/analyzers/solidAnalyzer.d.ts.map +0 -1
  359. package/dist/analyzers/solidAnalyzer.js +0 -847
  360. package/dist/analyzers/solidAnalyzer.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Default configurations for the code auditor
3
3
  */
4
- import { AuditConfig } from '../types.js';
4
+ import { AuditConfig, PathProfile } from '../types.js';
5
5
  /**
6
6
  * Get default configuration
7
7
  */
@@ -36,6 +36,11 @@ export declare const DEFAULT_ANALYZER_CONFIGS: {
36
36
  checkStrings: boolean;
37
37
  ignoreComments: boolean;
38
38
  ignoreWhitespace: boolean;
39
+ divergence: {
40
+ divergenceThreshold: number;
41
+ divergenceRuns: number;
42
+ minPairSimilarity: number;
43
+ };
39
44
  };
40
45
  security: {
41
46
  authPatterns: string[];
@@ -70,6 +75,9 @@ export declare const DEFAULT_ANALYZER_CONFIGS: {
70
75
  maxJoins: number;
71
76
  warnOnSelectStar: boolean;
72
77
  };
78
+ detection: {
79
+ mode: 'hybrid';
80
+ };
73
81
  };
74
82
  documentation: {
75
83
  requireFunctionDocs: boolean;
@@ -96,8 +104,71 @@ export declare const DEFAULT_ANALYZER_CONFIGS: {
96
104
  dbCallMethods: string[];
97
105
  dbBindingNames: string[];
98
106
  fileGateGlobs: string[];
107
+ detection: {
108
+ mode: 'hybrid';
109
+ };
110
+ validatorPackageList: string[];
111
+ };
112
+ styles: {
113
+ minCorpus: number;
114
+ colorDeltaE: number;
115
+ outlierMaxShare: number;
116
+ modeMinCount: number;
117
+ scaleProperties: string[];
118
+ zIndexMaxDistinct: number;
119
+ mechanismFragmentationMinMechanisms: number;
120
+ declarationSetMinDeclarations: number;
121
+ declarationSetSimilarityThreshold: number;
122
+ };
123
+ conventions: {
124
+ minCorpus: number;
125
+ pairConfidence: number;
126
+ modeShare: number;
127
+ maxConventionsPerDomain: number;
128
+ };
129
+ crossDomain: {
130
+ schemaLifecycle: {
131
+ enableWrittenNeverRead: boolean;
132
+ enableReadNeverWritten: boolean;
133
+ enableTransactionBoundaryRisk: boolean;
134
+ txnTableMax: number;
135
+ };
136
+ validatorBypass: {
137
+ validators: never[];
138
+ modeShare: number;
139
+ minCorpus: number;
140
+ depth: number;
141
+ };
142
+ coverage: {
143
+ testGlobs: string[];
144
+ staticReachDepth: number;
145
+ topRiskDecile: number;
146
+ };
99
147
  };
100
148
  };
149
+ /**
150
+ * Built-in path profiles shipped with the tool.
151
+ *
152
+ * "scripts-and-tests" caps scripts, tests, and test fixtures to
153
+ * "suggestion" severity — grounded in the Spec 11 triage numbers
154
+ * showing these directories produce noise, not signal.
155
+ *
156
+ * Disable entirely via `"builtin": false` in .codeauditor.json.
157
+ * Replace a specific built-in via a user profile with the same name
158
+ * and `"builtin": false`.
159
+ */
160
+ export declare const BUILTIN_PATH_PROFILES: PathProfile[];
161
+ /**
162
+ * Merge built-in path profiles with user-configured profiles.
163
+ *
164
+ * - `builtin: false` at top level → no built-ins
165
+ * - User profile with `builtin: false` → replaces built-in of same name
166
+ * - Otherwise: built-ins come first, user profiles appended after
167
+ * (later wins on conflict)
168
+ *
169
+ * @returns The merged profile array, or undefined if no profiles active
170
+ */
171
+ export declare function mergePathProfiles(userProfiles: PathProfile[] | undefined, builtinEnabled: boolean | undefined): PathProfile[] | undefined;
101
172
  /**
102
173
  * Default code index configuration
103
174
  */
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAwB9C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA+BhF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAyBxE;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB;IAGnC,KAAK;QACH,kBAAkB;QAClB,iBAAiB;QACjB,sBAAsB;QACtB,iBAAiB;QACjB,aAAa;QAEb,mBAAmB;QAEnB,qBAAqB;QACrB,wBAAwB;;IAI1B,GAAG;QACD,gBAAgB;QAChB,mBAAmB;QACnB,eAAe;QACf,YAAY;QACZ,YAAY;QACZ,cAAc;QACd,gBAAgB;;IAGlB,QAAQ;QACN,YAAY;QACZ,aAAa;QACb,iBAAiB;QACjB,cAAc;;IAGhB,SAAS;QACP,iBAAiB;YACf,KAAK;gBACH,UAAU;gBACV,KAAK;gBACL,OAAO;;;QAGX,oBAAoB;QACpB,aAAa;QACb,UAAU;;IAGZ,UAAU;QAER,YAAY;QACZ,gBAAgB;YACd,QAAQ;YACR,KAAK;YACL,OAAO;;QAET,gBAAgB;YACd,aAAa;YACb,SAAS;;QAEX,qBAAqB;YACnB,QAAQ;YACR,gBAAgB;;;IAKpB,aAAa;QACX,mBAAmB;QACnB,gBAAgB;QAChB,gBAAgB;QAChB,iBAAiB;QACjB,oBAAoB;QACpB,cAAc;QASd,KAAK;QACL,YAAY;QACZ,WAAW;QACX,eAAe;;IAcjB,MAAM;QACJ,wBAAwB;QACxB,sBAAsB;QACtB,sBAAsB;QACtB,kBAAkB;QAClB,qBAAqB;QACrB,qBAAqB;QACrB,eAAe;QACf,WAAW;QACX,eAAe;QACf,aAAa;QACb,cAAc;QACd,aAAa;;CAEhB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB;IACpC,YAAY;IACZ,YAAY;IACZ,iBAAiB;IACjB,eAAe;CAChB,CAAC"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CA0C9C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA+BhF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAyBxE;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB;IAGnC,KAAK;QACH,kBAAkB;QAClB,iBAAiB;QACjB,sBAAsB;QACtB,iBAAiB;QACjB,aAAa;QAEb,mBAAmB;QAEnB,qBAAqB;QACrB,wBAAwB;;IAK1B,GAAG;QACD,gBAAgB;QAChB,mBAAmB;QACnB,eAAe;QACf,YAAY;QACZ,YAAY;QACZ,cAAc;QACd,gBAAgB;QAEhB,UAAU;YACR,mBAAmB;YACnB,cAAc;YACd,iBAAiB;;;IAIrB,QAAQ;QACN,YAAY;QACZ,aAAa;QACb,iBAAiB;QACjB,cAAc;;IAGhB,SAAS;QACP,iBAAiB;YACf,KAAK;gBACH,UAAU;gBACV,KAAK;gBACL,OAAO;;;QAGX,oBAAoB;QACpB,aAAa;QACb,UAAU;;IAGZ,UAAU;QAER,YAAY;QACZ,gBAAgB;YACd,QAAQ;YACR,KAAK;YACL,OAAO;;QAET,gBAAgB;YACd,aAAa;YACb,SAAS;;QAEX,qBAAqB;YACnB,QAAQ;YACR,gBAAgB;;QAGlB,SAAS;YACP,IAAI,EAAE,QAAQ;;;IAKlB,aAAa;QACX,mBAAmB;QACnB,gBAAgB;QAChB,gBAAgB;QAChB,iBAAiB;QACjB,oBAAoB;QACpB,cAAc;QASd,KAAK;QACL,YAAY;QACZ,WAAW;QACX,eAAe;;IAcjB,MAAM;QACJ,wBAAwB;QACxB,sBAAsB;QACtB,sBAAsB;QACtB,kBAAkB;QAClB,qBAAqB;QACrB,qBAAqB;QACrB,eAAe;QACf,WAAW;QACX,eAAe;QACf,aAAa;QACb,cAAc;QACd,aAAa;QAEb,SAAS;YACP,IAAI,EAAE,QAAQ;;QAGhB,oBAAoB;;IAOtB,MAAM;QACJ,SAAS;QACT,WAAW;QACX,eAAe;QACf,YAAY;QACZ,eAAe;QAKf,iBAAiB;QACjB,mCAAmC;QACnC,6BAA6B;QAC7B,iCAAiC;;IAInC,WAAW;QACT,SAAS;QACT,cAAc;QACd,SAAS;QACT,uBAAuB;;IAIzB,WAAW;QACT,eAAe;YACb,sBAAsB;YACtB,sBAAsB;YACtB,6BAA6B;YAC7B,WAAW;;QAEb,eAAe;YACb,UAAU;YACV,SAAS;YACT,SAAS;YACT,KAAK;;QAEP,QAAQ;YACN,SAAS;YACT,gBAAgB;YAChB,aAAa;;;CAGlB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,EAAE,WAAW,EAc9C,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,WAAW,EAAE,GAAG,SAAS,EACvC,cAAc,EAAE,OAAO,GAAG,SAAS,GAClC,WAAW,EAAE,GAAG,SAAS,CAqB3B;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB;IACpC,YAAY;IACZ,YAAY;IACZ,iBAAiB;IACjB,eAAe;CAChB,CAAC"}
@@ -6,7 +6,7 @@
6
6
  */
7
7
  export function getDefaultConfig() {
8
8
  return {
9
- includePaths: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx', '**/*.go'],
9
+ includePaths: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx', '**/*.go', '**/*.css', '**/*.scss'],
10
10
  excludePaths: [
11
11
  '**/node_modules/**',
12
12
  '**/.next/**',
@@ -16,7 +16,7 @@ export function getDefaultConfig() {
16
16
  '**/*.test.{ts,tsx,js,jsx}',
17
17
  '**/*.spec.{ts,tsx,js,jsx}'
18
18
  ],
19
- enabledAnalyzers: ['solid', 'dry', 'security', 'component', 'data-access'],
19
+ enabledAnalyzers: ['solid', 'dry', 'security', 'component', 'data-access', 'styles', 'conventions', 'cross-domain'],
20
20
  outputFormats: ['html', 'json'],
21
21
  outputDirectory: './audit-reports',
22
22
  minSeverity: 'suggestion',
@@ -26,6 +26,24 @@ export function getDefaultConfig() {
26
26
  maxCritical: 0,
27
27
  maxWarnings: 100,
28
28
  minHealthScore: 75
29
+ },
30
+ // Spec-11 R5: Mechanical recalibration — audited 2026-07-20.
31
+ // Audit report: bench/results/spec-11-recalibration-audit.md
32
+ //
33
+ // Demoted (suggestion): domain-mismatch confirmed but users with
34
+ // applicable domains (multi-tenant SaaS, known-schema projects)
35
+ // need these visible and re-enablable.
36
+ // Promoted (warning): precision ≥ 0.95, judged-true ≥ 0.90,
37
+ // one tier only per Spec 11 R5. single-responsibility promotion
38
+ // to critical is withheld — length heuristics should not block hooks.
39
+ // Restored to defaults: sql-injection-risk, loop-query, unfiltered-query,
40
+ // direct-sql, single-responsibility. These have external-corpus evidence
41
+ // of utility or insufficient evidence to recalibrate.
42
+ severityOverrides: {
43
+ 'missing-org-filter': 'suggestion',
44
+ 'unknown-table': 'suggestion',
45
+ 'solid/class-size': 'warning',
46
+ 'dependency-inversion': 'warning',
29
47
  }
30
48
  };
31
49
  }
@@ -95,25 +113,32 @@ export const DEFAULT_ANALYZER_CONFIGS = {
95
113
  // and classAggregateComplexity for true cyclomatic complexity.
96
114
  solid: {
97
115
  maxMethodsPerClass: 10,
98
- maxLinesPerMethod: 50,
99
- maxParametersPerMethod: 4,
100
- maxImportsPerFile: 20,
116
+ maxLinesPerMethod: 50, // Spec 11 R3 sweep: confirmed
117
+ maxParametersPerMethod: 4, // Spec 11 R3 sweep: confirmed
118
+ maxImportsPerFile: 5, // Spec 11 R3 sweep: 20 → 5 (precision-first)
101
119
  maxComplexity: 10, // DEPRECATED — old heuristic
102
120
  // R5.1: Per-method cyclomatic complexity threshold (true McCC)
103
- maxMethodComplexity: 50,
121
+ maxMethodComplexity: 10, // Spec 11 R3 sweep: 50 → 10 (precision-first)
104
122
  // R5.2: Class-level aggregation thresholds
105
- classMethodsThreshold: 15,
106
- classAggregateComplexity: 100,
123
+ classMethodsThreshold: 5, // Spec 11 R3 sweep: 15 → 5 (precision-first)
124
+ classAggregateComplexity: 80, // Spec 11 R3 sweep: 100 → 80 (precision-first)
107
125
  },
108
- // Spec-17 R3: minLineThreshold raised from 515
126
+ // Spec 11 R3 sweep: minLineThreshold 15 3, similarityThreshold 0.85 0.5 (precision-first)
127
+ // ⚠️ These sweep recommendations reflect a minimal corpus; R4 real-corpus triage may revert.
109
128
  dry: {
110
- minLineThreshold: 15,
111
- similarityThreshold: 0.85,
129
+ minLineThreshold: 3,
130
+ similarityThreshold: 0.5,
112
131
  excludePatterns: ['**/*.test.ts', '**/*.spec.ts'],
113
132
  checkImports: true,
114
133
  checkStrings: true,
115
134
  ignoreComments: true,
116
135
  ignoreWhitespace: true,
136
+ // Spec 13 R5 — Diverging-clone detection
137
+ divergence: {
138
+ divergenceThreshold: 0.05,
139
+ divergenceRuns: 2,
140
+ minPairSimilarity: 0.5,
141
+ },
117
142
  },
118
143
  security: {
119
144
  authPatterns: ['withAuth', 'requireAuth', 'isAuthenticated'],
@@ -130,7 +155,7 @@ export const DEFAULT_ANALYZER_CONFIGS = {
130
155
  }
131
156
  },
132
157
  checkErrorBoundaries: true,
133
- maxComplexity: 15,
158
+ maxComplexity: 5, // Spec 11 R3 sweep: 15 → 5 (precision-first)
134
159
  maxNesting: 4
135
160
  },
136
161
  dataAccess: {
@@ -148,7 +173,11 @@ export const DEFAULT_ANALYZER_CONFIGS = {
148
173
  performanceThresholds: {
149
174
  maxJoins: 5,
150
175
  warnOnSelectStar: true
151
- }
176
+ },
177
+ // Spec 21 R3: shared detection mode — provenance-primary with name-fallback
178
+ detection: {
179
+ mode: 'hybrid',
180
+ },
152
181
  },
153
182
  // Spec-17: documentation analyzer defaults
154
183
  documentation: {
@@ -156,7 +185,7 @@ export const DEFAULT_ANALYZER_CONFIGS = {
156
185
  requireClassDocs: true,
157
186
  requireParamDocs: true,
158
187
  requireReturnDocs: true,
159
- minDescriptionLength: 10,
188
+ minDescriptionLength: 2, // Spec 11 R3 sweep: 10 → 2 (precision-first)
160
189
  exemptPatterns: [
161
190
  '\\.test\\.',
162
191
  '\\.spec\\.',
@@ -188,15 +217,117 @@ export const DEFAULT_ANALYZER_CONFIGS = {
188
217
  checkNamingConventions: true,
189
218
  detectUnusedTables: false,
190
219
  validateQueryPatterns: true,
191
- maxQueriesPerFunction: 5,
220
+ maxQueriesPerFunction: 1, // Spec 11 R3 sweep: 5 → 1 (precision-first)
192
221
  requiredSchemas: [],
193
222
  sqlTagNames: ['sql', 'db'],
194
223
  dbReceiverNames: ['db', 'database', 'sql', 'stmt', 'connection', 'pool', 'client'],
195
224
  dbCallMethods: ['exec', 'prepare', 'batch', 'run', 'all', 'first', 'query', 'get', 'each'],
196
225
  dbBindingNames: ['env.DB'],
197
226
  fileGateGlobs: ['**/*.sql', '**/migrations/**'],
227
+ // Spec 21 R3: shared detection mode — provenance-primary with name-fallback
228
+ detection: {
229
+ mode: 'hybrid',
230
+ },
231
+ // Spec 21 R4: validator package list for provenanced validator detection
232
+ validatorPackageList: [
233
+ 'zod', 'joi', 'ajv', 'valibot', 'yup', 'superstruct', 'arktype',
234
+ '@sinclair/typebox', 'class-validator',
235
+ ],
236
+ },
237
+ // Spec 10 R3: style intelligence analyzer defaults
238
+ styles: {
239
+ minCorpus: 20,
240
+ colorDeltaE: 2.0,
241
+ outlierMaxShare: 0.05,
242
+ modeMinCount: 10,
243
+ scaleProperties: [
244
+ 'margin', 'margin-top', 'margin-right', 'margin-bottom', 'margin-left',
245
+ 'padding', 'padding-top', 'padding-right', 'padding-bottom', 'padding-left',
246
+ 'gap', 'row-gap', 'column-gap', 'font-size',
247
+ ],
248
+ zIndexMaxDistinct: 6,
249
+ mechanismFragmentationMinMechanisms: 3,
250
+ declarationSetMinDeclarations: 5,
251
+ declarationSetSimilarityThreshold: 0.9,
252
+ },
253
+ // Spec 12 R2: convention mining analyzer defaults
254
+ conventions: {
255
+ minCorpus: 20,
256
+ pairConfidence: 0.9,
257
+ modeShare: 0.8,
258
+ maxConventionsPerDomain: 200,
259
+ },
260
+ // Spec 15: cross-domain analysis defaults
261
+ crossDomain: {
262
+ schemaLifecycle: {
263
+ enableWrittenNeverRead: true,
264
+ enableReadNeverWritten: true,
265
+ enableTransactionBoundaryRisk: true,
266
+ txnTableMax: 4,
267
+ },
268
+ validatorBypass: {
269
+ validators: [],
270
+ modeShare: 0.8,
271
+ minCorpus: 20,
272
+ depth: 3,
273
+ },
274
+ coverage: {
275
+ testGlobs: ['**/*.test.*', '**/*.spec.*', '**/__tests__/**'],
276
+ staticReachDepth: 2,
277
+ topRiskDecile: 0.1,
278
+ },
198
279
  },
199
280
  };
281
+ /**
282
+ * Built-in path profiles shipped with the tool.
283
+ *
284
+ * "scripts-and-tests" caps scripts, tests, and test fixtures to
285
+ * "suggestion" severity — grounded in the Spec 11 triage numbers
286
+ * showing these directories produce noise, not signal.
287
+ *
288
+ * Disable entirely via `"builtin": false` in .codeauditor.json.
289
+ * Replace a specific built-in via a user profile with the same name
290
+ * and `"builtin": false`.
291
+ */
292
+ export const BUILTIN_PATH_PROFILES = [
293
+ {
294
+ name: 'scripts-and-tests',
295
+ paths: [
296
+ 'scripts/**',
297
+ 'tests/**',
298
+ 'test/**',
299
+ '__tests__/**',
300
+ 'fixtures/**',
301
+ '*.test.*',
302
+ '*.spec.*',
303
+ ],
304
+ overrides: { severityCap: 'suggestion' },
305
+ },
306
+ ];
307
+ /**
308
+ * Merge built-in path profiles with user-configured profiles.
309
+ *
310
+ * - `builtin: false` at top level → no built-ins
311
+ * - User profile with `builtin: false` → replaces built-in of same name
312
+ * - Otherwise: built-ins come first, user profiles appended after
313
+ * (later wins on conflict)
314
+ *
315
+ * @returns The merged profile array, or undefined if no profiles active
316
+ */
317
+ export function mergePathProfiles(userProfiles, builtinEnabled) {
318
+ // builtin: false disables all built-in profiles
319
+ if (builtinEnabled === false) {
320
+ return userProfiles && userProfiles.length > 0 ? userProfiles : undefined;
321
+ }
322
+ if (!userProfiles || userProfiles.length === 0) {
323
+ // No user profiles — use built-ins only
324
+ return BUILTIN_PATH_PROFILES.length > 0 ? [...BUILTIN_PATH_PROFILES] : undefined;
325
+ }
326
+ // Merge: built-ins first, user profiles appended (later wins)
327
+ const userReplaced = new Set(userProfiles.filter((p) => p.builtin === false).map((p) => p.name));
328
+ const activeBuiltins = BUILTIN_PATH_PROFILES.filter((b) => !userReplaced.has(b.name));
329
+ return [...activeBuiltins, ...userProfiles];
330
+ }
200
331
  /**
201
332
  * Default code index configuration
202
333
  */
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Path Profile resolution — per-file config overrides driven by glob patterns.
3
+ *
4
+ * Path profiles are an ordered array in .codeauditor.json. Each profile has
5
+ * `name`, `paths` (glob patterns), and `overrides`. Files matching multiple
6
+ * profiles merge in order — later wins.
7
+ *
8
+ * Built-in profiles (e.g. scripts-and-tests) ship with the tool and can be
9
+ * disabled via `builtin: false` in config.
10
+ */
11
+ export interface PathProfile {
12
+ /** Unique name for this profile. */
13
+ name: string;
14
+ /** Glob patterns matching file paths relative to project root. */
15
+ paths: string[];
16
+ /** Analyzer config overrides applied to files matching this profile. */
17
+ overrides: Record<string, unknown>;
18
+ /** Set to false to replace a built-in profile of the same name. */
19
+ builtin?: boolean;
20
+ }
21
+ export interface ResolvedProfile {
22
+ /** Merged overrides (excluding severityCap). */
23
+ overrides: Record<string, unknown>;
24
+ /** Severity cap to apply post-analysis, if any. */
25
+ severityCap?: string;
26
+ /** Names of all profiles that matched this file, in match order. */
27
+ matchedProfileNames: string[];
28
+ }
29
+ /**
30
+ * Resolve which profiles match a file and merge their overrides.
31
+ *
32
+ * @param filePath - Absolute path to the file being analyzed
33
+ * @param projectRoot - Project root directory
34
+ * @param profiles - Ordered array of path profiles (built-in + user)
35
+ * @returns Merged overrides, severity cap, and matched profile names
36
+ */
37
+ export declare function resolvePathProfile(filePath: string, projectRoot: string, profiles: PathProfile[]): ResolvedProfile;
38
+ //# sourceMappingURL=pathProfiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathProfiles.d.ts","sourceRoot":"","sources":["../../src/config/pathProfiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,MAAM,WAAW,WAAW;IAC1B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAID;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,WAAW,EAAE,GACtB,eAAe,CA4BjB"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Path Profile resolution — per-file config overrides driven by glob patterns.
3
+ *
4
+ * Path profiles are an ordered array in .codeauditor.json. Each profile has
5
+ * `name`, `paths` (glob patterns), and `overrides`. Files matching multiple
6
+ * profiles merge in order — later wins.
7
+ *
8
+ * Built-in profiles (e.g. scripts-and-tests) ship with the tool and can be
9
+ * disabled via `builtin: false` in config.
10
+ */
11
+ import picomatch from 'picomatch';
12
+ import path from 'path';
13
+ const VALID_SEVERITIES = new Set(['suggestion', 'warning', 'critical']);
14
+ /**
15
+ * Resolve which profiles match a file and merge their overrides.
16
+ *
17
+ * @param filePath - Absolute path to the file being analyzed
18
+ * @param projectRoot - Project root directory
19
+ * @param profiles - Ordered array of path profiles (built-in + user)
20
+ * @returns Merged overrides, severity cap, and matched profile names
21
+ */
22
+ export function resolvePathProfile(filePath, projectRoot, profiles) {
23
+ const overrides = {};
24
+ let severityCap;
25
+ const matchedProfileNames = [];
26
+ const relativePath = path.relative(projectRoot, filePath);
27
+ for (const profile of profiles) {
28
+ const matches = profile.paths.some((glob) => picomatch.isMatch(relativePath, glob));
29
+ if (!matches)
30
+ continue;
31
+ matchedProfileNames.push(profile.name);
32
+ for (const [key, value] of Object.entries(profile.overrides)) {
33
+ if (key === 'severityCap') {
34
+ severityCap = value;
35
+ }
36
+ else {
37
+ overrides[key] = value;
38
+ }
39
+ }
40
+ }
41
+ if (severityCap && !VALID_SEVERITIES.has(severityCap)) {
42
+ // Should never reach here if validateConfig catches it, but guard anyway
43
+ severityCap = undefined;
44
+ }
45
+ return { overrides, severityCap, matchedProfileNames };
46
+ }
47
+ //# sourceMappingURL=pathProfiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathProfiles.js","sourceRoot":"","sources":["../../src/config/pathProfiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,IAAI,MAAM,MAAM,CAAC;AAsBxB,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAExE;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAgB,EAChB,WAAmB,EACnB,QAAuB;IAEvB,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,IAAI,WAA+B,CAAC;IACpC,MAAM,mBAAmB,GAAa,EAAE,CAAC;IAEzC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAE1D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7D,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;gBAC1B,WAAW,GAAG,KAAe,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,WAAW,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QACtD,yEAAyE;QACzE,WAAW,GAAG,SAAS,CAAC;IAC1B,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC;AACzD,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Spec 12 — Convention Mining
3
+ *
4
+ * Mines five domains of unwritten codebase conventions from the SQLite function
5
+ * index. All mining runs on the existing `functions` and `function_calls` tables;
6
+ * no new parsing infrastructure required.
7
+ *
8
+ * Domains:
9
+ * 1. usage-pair — calls that always co-occur (from function_calls table)
10
+ * 2. import-form — dominant import style per (source, directory)
11
+ * 3. error-handling — dominant error-handling shape per directory
12
+ * 4. export-shape — dominant export style per directory
13
+ * 5. naming — dominant exported-symbol casing per directory
14
+ */
15
+ import Database from 'better-sqlite3';
16
+ import type { Convention, ConventionMiningConfig } from '../types.js';
17
+ /** Escape regex special characters in a string. */
18
+ export declare function escapeRegex(s: string): string;
19
+ /** Detect whether a string contains non-Latin-script characters (Spec 21 R5.4). */
20
+ export declare function hasNonLatinChars(name: string): boolean;
21
+ /** Classify a symbol name into a casing convention. Returns null for
22
+ * non-Latin, unclassifiable, or ambiguous names. */
23
+ export declare function detectCase(name: string): string | null;
24
+ /**
25
+ * Parse import statements from raw file content.
26
+ *
27
+ * Handles: import default, import named, import namespace, import side-effect,
28
+ * require default, require destructured.
29
+ * Multi-line imports supported via {}-accumulation.
30
+ */
31
+ export declare function parseFileImports(content: string): Array<{
32
+ source: string;
33
+ localNames: string[];
34
+ form: 'default' | 'named' | 'namespace' | 'side-effect' | 'require';
35
+ line: number;
36
+ }>;
37
+ /**
38
+ * Parse the export form for a specific exported function from its source file.
39
+ * Returns null if we can't determine the form.
40
+ */
41
+ export declare function detectExportForm(filePath: string, functionName: string): 'default' | 'named' | null;
42
+ /**
43
+ * Detect the error-handling shape used in a function body.
44
+ * Returns null if no error handling is present (function should not be counted
45
+ * in the corpus for mode computation).
46
+ */
47
+ export declare function detectErrorHandlingShape(body: string | undefined | null): string | null;
48
+ /**
49
+ * Compute a content hash of the miner inputs for change detection.
50
+ * Callers can store this in the meta table to skip re-mining when unchanged.
51
+ */
52
+ export declare function computeMinerInputHash(db: Database.Database, config: ConventionMiningConfig): string;
53
+ /**
54
+ * Mine all five convention domains from the SQLite index.
55
+ *
56
+ * @param db The better-sqlite3 database instance.
57
+ * @param config Threshold configuration for the miner.
58
+ * @param projectRoot Optional project root — required for import-form and
59
+ * export-shape mining to resolve file paths.
60
+ * @returns Array of mined conventions (uncapped — caller should upsert).
61
+ */
62
+ export declare function mineConventions(db: Database.Database, config: ConventionMiningConfig, projectRoot?: string): Convention[];
63
+ //# sourceMappingURL=conventionMiner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conventionMiner.d.ts","sourceRoot":"","sources":["../../src/conventions/conventionMiner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAItE,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAiBtD;AAED;qDACqD;AACrD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoBtD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,GACd,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA6HpI;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,SAAS,GAAG,OAAO,GAAG,IAAI,CA6B5B;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CASvF;AA0gBD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,sBAAsB,GAC7B,MAAM,CASR;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,sBAAsB,EAC9B,WAAW,CAAC,EAAE,MAAM,GACnB,UAAU,EAAE,CAoBd"}