code-auditor-mcp 4.1.1 → 5.0.2

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 (1087) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +381 -0
  3. package/README.md +4 -4
  4. package/configs/hhra-compat.json +0 -8
  5. package/dist/__tests__/fixtures/spec-52/item-03-exec-in-loop.d.ts +1 -1
  6. package/dist/__tests__/fixtures/spec-52/item-03-exec-in-loop.d.ts.map +1 -1
  7. package/dist/__tests__/fixtures/spec-52/item-03-exec-in-loop.js +7 -1
  8. package/dist/__tests__/fixtures/spec-52/item-03-exec-in-loop.js.map +1 -1
  9. package/dist/__tests__/fixtures/spec-52/item-04-storage-sql-exec-in-loop.d.ts +2 -8
  10. package/dist/__tests__/fixtures/spec-52/item-04-storage-sql-exec-in-loop.d.ts.map +1 -1
  11. package/dist/__tests__/fixtures/spec-52/item-04-storage-sql-exec-in-loop.js +4 -4
  12. package/dist/__tests__/fixtures/spec-52/item-04-storage-sql-exec-in-loop.js.map +1 -1
  13. package/dist/__tests__/fixtures/spec-52/item-06-chained-prepare-run-in-loop.d.ts +1 -1
  14. package/dist/__tests__/fixtures/spec-52/item-06-chained-prepare-run-in-loop.d.ts.map +1 -1
  15. package/dist/__tests__/fixtures/spec-52/item-06-chained-prepare-run-in-loop.js.map +1 -1
  16. package/dist/__tests__/fixtures/spec-52/item-07-chained-prepare-bind-first-in-loop.d.ts +2 -2
  17. package/dist/__tests__/fixtures/spec-52/item-07-chained-prepare-bind-first-in-loop.d.ts.map +1 -1
  18. package/dist/__tests__/fixtures/spec-52/item-07-chained-prepare-bind-first-in-loop.js.map +1 -1
  19. package/dist/__tests__/fixtures/spec-52/item-10-promise-all-map-of-eager-all-in-loop.d.ts +1 -1
  20. package/dist/__tests__/fixtures/spec-52/item-10-promise-all-map-of-eager-all-in-loop.d.ts.map +1 -1
  21. package/dist/__tests__/fixtures/spec-52/item-10-promise-all-map-of-eager-all-in-loop.js.map +1 -1
  22. package/dist/analyzers/applicability.d.ts +42 -0
  23. package/dist/analyzers/applicability.d.ts.map +1 -1
  24. package/dist/analyzers/applicability.js +74 -0
  25. package/dist/analyzers/applicability.js.map +1 -1
  26. package/dist/analyzers/cross-language/APIContractAnalyzer.js +18 -24
  27. package/dist/analyzers/cross-language/APIContractAnalyzer.js.map +1 -1
  28. package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts +30 -23
  29. package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
  30. package/dist/analyzers/cross-language/DependencyGraphBuilder.js +113 -76
  31. package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
  32. package/dist/analyzers/cross-language/SchemaValidator.d.ts +2 -0
  33. package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -1
  34. package/dist/analyzers/cross-language/SchemaValidator.js +8 -3
  35. package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -1
  36. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts.map +1 -1
  37. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js +210 -148
  38. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js.map +1 -1
  39. package/dist/analyzers/documentationAnalyzer.d.ts.map +1 -1
  40. package/dist/analyzers/documentationAnalyzer.js +23 -28
  41. package/dist/analyzers/documentationAnalyzer.js.map +1 -1
  42. package/dist/analyzers/handleIdentification.d.ts +356 -0
  43. package/dist/analyzers/handleIdentification.d.ts.map +1 -0
  44. package/dist/analyzers/handleIdentification.js +427 -0
  45. package/dist/analyzers/handleIdentification.js.map +1 -0
  46. package/dist/analyzers/manifestStaleness.d.ts +64 -0
  47. package/dist/analyzers/manifestStaleness.d.ts.map +1 -0
  48. package/dist/analyzers/manifestStaleness.js +115 -0
  49. package/dist/analyzers/manifestStaleness.js.map +1 -0
  50. package/dist/analyzers/orgFilterTiers.d.ts +73 -1
  51. package/dist/analyzers/orgFilterTiers.d.ts.map +1 -1
  52. package/dist/analyzers/orgFilterTiers.js +166 -1
  53. package/dist/analyzers/orgFilterTiers.js.map +1 -1
  54. package/dist/analyzers/provenance.d.ts +251 -57
  55. package/dist/analyzers/provenance.d.ts.map +1 -1
  56. package/dist/analyzers/provenance.js +1109 -429
  57. package/dist/analyzers/provenance.js.map +1 -1
  58. package/dist/analyzers/reactAnalyzer.d.ts +2 -0
  59. package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
  60. package/dist/analyzers/reactAnalyzer.js +2 -0
  61. package/dist/analyzers/reactAnalyzer.js.map +1 -1
  62. package/dist/analyzers/receiverResolution.d.ts +183 -0
  63. package/dist/analyzers/receiverResolution.d.ts.map +1 -0
  64. package/dist/analyzers/receiverResolution.js +540 -0
  65. package/dist/analyzers/receiverResolution.js.map +1 -0
  66. package/dist/analyzers/receiverRoot.d.ts +348 -0
  67. package/dist/analyzers/receiverRoot.d.ts.map +1 -0
  68. package/dist/analyzers/receiverRoot.js +1032 -0
  69. package/dist/analyzers/receiverRoot.js.map +1 -0
  70. package/dist/analyzers/ruleRegistry.d.ts +12 -68
  71. package/dist/analyzers/ruleRegistry.d.ts.map +1 -1
  72. package/dist/analyzers/ruleRegistry.js +32 -342
  73. package/dist/analyzers/ruleRegistry.js.map +1 -1
  74. package/dist/analyzers/ruleTiming.d.ts +10 -0
  75. package/dist/analyzers/ruleTiming.d.ts.map +1 -1
  76. package/dist/analyzers/ruleTiming.js +20 -0
  77. package/dist/analyzers/ruleTiming.js.map +1 -1
  78. package/dist/analyzers/sqlLiteral.d.ts +76 -0
  79. package/dist/analyzers/sqlLiteral.d.ts.map +1 -0
  80. package/dist/analyzers/sqlLiteral.js +419 -0
  81. package/dist/analyzers/sqlLiteral.js.map +1 -0
  82. package/dist/analyzers/tsEcosystem.d.ts +115 -0
  83. package/dist/analyzers/tsEcosystem.d.ts.map +1 -0
  84. package/dist/analyzers/tsEcosystem.js +241 -0
  85. package/dist/analyzers/tsEcosystem.js.map +1 -0
  86. package/dist/analyzers/tsExpressionDescriptor.d.ts +156 -0
  87. package/dist/analyzers/tsExpressionDescriptor.d.ts.map +1 -0
  88. package/dist/analyzers/tsExpressionDescriptor.js +374 -0
  89. package/dist/analyzers/tsExpressionDescriptor.js.map +1 -0
  90. package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts +6 -0
  91. package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts.map +1 -1
  92. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js +107 -44
  93. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js.map +1 -1
  94. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
  95. package/dist/analyzers/universal/UniversalDRYAnalyzer.js +23 -35
  96. package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
  97. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +287 -49
  98. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
  99. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +2130 -512
  100. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
  101. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
  102. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +2 -18
  103. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
  104. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts +0 -33
  105. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
  106. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +20 -143
  107. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
  108. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +4 -3
  109. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
  110. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +36 -13
  111. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
  112. package/dist/analyzers/universal/UniversalSecretsAnalyzer.d.ts.map +1 -1
  113. package/dist/analyzers/universal/UniversalSecretsAnalyzer.js +6 -0
  114. package/dist/analyzers/universal/UniversalSecretsAnalyzer.js.map +1 -1
  115. package/dist/analyzers/universal/UniversalSecurityAnalyzer.d.ts +15 -0
  116. package/dist/analyzers/universal/UniversalSecurityAnalyzer.d.ts.map +1 -1
  117. package/dist/analyzers/universal/UniversalSecurityAnalyzer.js +25 -0
  118. package/dist/analyzers/universal/UniversalSecurityAnalyzer.js.map +1 -1
  119. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts +21 -32
  120. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
  121. package/dist/analyzers/universal/UniversalStylesAnalyzer.js +166 -196
  122. package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
  123. package/dist/analyzers/universal/functionConcerns.d.ts +3 -0
  124. package/dist/analyzers/universal/functionConcerns.d.ts.map +1 -1
  125. package/dist/analyzers/universal/functionConcerns.js +4 -1
  126. package/dist/analyzers/universal/functionConcerns.js.map +1 -1
  127. package/dist/analyzers/universal/schema/codeAnalysis.d.ts +310 -69
  128. package/dist/analyzers/universal/schema/codeAnalysis.d.ts.map +1 -1
  129. package/dist/analyzers/universal/schema/codeAnalysis.js +709 -383
  130. package/dist/analyzers/universal/schema/codeAnalysis.js.map +1 -1
  131. package/dist/analyzers/universal/schema/config.d.ts +3 -14
  132. package/dist/analyzers/universal/schema/config.d.ts.map +1 -1
  133. package/dist/analyzers/universal/schema/config.js +3 -16
  134. package/dist/analyzers/universal/schema/config.js.map +1 -1
  135. package/dist/analyzers/universal/schema/discovery.d.ts +22 -1
  136. package/dist/analyzers/universal/schema/discovery.d.ts.map +1 -1
  137. package/dist/analyzers/universal/schema/discovery.js +36 -20
  138. package/dist/analyzers/universal/schema/discovery.js.map +1 -1
  139. package/dist/analyzers/universal/schema/jsonSchema.d.ts.map +1 -1
  140. package/dist/analyzers/universal/schema/jsonSchema.js +13 -3
  141. package/dist/analyzers/universal/schema/jsonSchema.js.map +1 -1
  142. package/dist/analyzers/universal/schema/migrations.d.ts +187 -27
  143. package/dist/analyzers/universal/schema/migrations.d.ts.map +1 -1
  144. package/dist/analyzers/universal/schema/migrations.js +443 -186
  145. package/dist/analyzers/universal/schema/migrations.js.map +1 -1
  146. package/dist/analyzers/universal/schema/types.d.ts +17 -3
  147. package/dist/analyzers/universal/schema/types.d.ts.map +1 -1
  148. package/dist/analyzers/universal/schema/violations.js +1 -1
  149. package/dist/analyzers/universal/schema/violations.js.map +1 -1
  150. package/dist/analyzers/universal/styleScale.d.ts +52 -0
  151. package/dist/analyzers/universal/styleScale.d.ts.map +1 -0
  152. package/dist/analyzers/universal/styleScale.js +95 -0
  153. package/dist/analyzers/universal/styleScale.js.map +1 -0
  154. package/dist/applyDataDirEnv.js +1 -1
  155. package/dist/applyDataDirEnv.js.map +1 -1
  156. package/dist/auditRouter.d.ts +26 -30
  157. package/dist/auditRouter.d.ts.map +1 -1
  158. package/dist/auditRouter.js +373 -143
  159. package/dist/auditRouter.js.map +1 -1
  160. package/dist/auditRunner.d.ts +66 -1
  161. package/dist/auditRunner.d.ts.map +1 -1
  162. package/dist/auditRunner.js +1544 -1034
  163. package/dist/auditRunner.js.map +1 -1
  164. package/dist/baseline.d.ts +30 -3
  165. package/dist/baseline.d.ts.map +1 -1
  166. package/dist/baseline.js +70 -9
  167. package/dist/baseline.js.map +1 -1
  168. package/dist/cli.js +983 -821
  169. package/dist/cli.js.map +1 -1
  170. package/dist/codeIndex/analyzerConfig.d.ts +60 -0
  171. package/dist/codeIndex/analyzerConfig.d.ts.map +1 -0
  172. package/dist/codeIndex/analyzerConfig.js +98 -0
  173. package/dist/codeIndex/analyzerConfig.js.map +1 -0
  174. package/dist/codeIndex/auditResults.d.ts +39 -0
  175. package/dist/codeIndex/auditResults.d.ts.map +1 -0
  176. package/dist/codeIndex/auditResults.js +99 -0
  177. package/dist/codeIndex/auditResults.js.map +1 -0
  178. package/dist/codeIndex/codeMap.d.ts +59 -0
  179. package/dist/codeIndex/codeMap.d.ts.map +1 -0
  180. package/dist/codeIndex/codeMap.js +72 -0
  181. package/dist/codeIndex/codeMap.js.map +1 -0
  182. package/dist/codeIndex/conventions.d.ts +33 -0
  183. package/dist/codeIndex/conventions.d.ts.map +1 -0
  184. package/dist/codeIndex/conventions.js +84 -0
  185. package/dist/codeIndex/conventions.js.map +1 -0
  186. package/dist/codeIndex/coverage.d.ts +78 -0
  187. package/dist/codeIndex/coverage.d.ts.map +1 -0
  188. package/dist/codeIndex/coverage.js +164 -0
  189. package/dist/codeIndex/coverage.js.map +1 -0
  190. package/dist/codeIndex/dependencyGraph.d.ts +97 -0
  191. package/dist/codeIndex/dependencyGraph.d.ts.map +1 -0
  192. package/dist/codeIndex/dependencyGraph.js +241 -0
  193. package/dist/codeIndex/dependencyGraph.js.map +1 -0
  194. package/dist/codeIndex/functionIndex.d.ts +111 -0
  195. package/dist/codeIndex/functionIndex.d.ts.map +1 -0
  196. package/dist/codeIndex/functionIndex.js +306 -0
  197. package/dist/codeIndex/functionIndex.js.map +1 -0
  198. package/dist/codeIndex/inferredReceivers.d.ts +32 -0
  199. package/dist/codeIndex/inferredReceivers.d.ts.map +1 -0
  200. package/dist/codeIndex/inferredReceivers.js +41 -0
  201. package/dist/codeIndex/inferredReceivers.js.map +1 -0
  202. package/dist/codeIndex/meta.d.ts +30 -0
  203. package/dist/codeIndex/meta.d.ts.map +1 -0
  204. package/dist/codeIndex/meta.js +37 -0
  205. package/dist/codeIndex/meta.js.map +1 -0
  206. package/dist/codeIndex/migrations.d.ts +96 -0
  207. package/dist/codeIndex/migrations.d.ts.map +1 -0
  208. package/dist/codeIndex/migrations.js +1302 -0
  209. package/dist/codeIndex/migrations.js.map +1 -0
  210. package/dist/codeIndex/projectTasks.d.ts +54 -0
  211. package/dist/codeIndex/projectTasks.d.ts.map +1 -0
  212. package/dist/codeIndex/projectTasks.js +81 -0
  213. package/dist/codeIndex/projectTasks.js.map +1 -0
  214. package/dist/codeIndex/provenance.d.ts +47 -0
  215. package/dist/codeIndex/provenance.d.ts.map +1 -0
  216. package/dist/codeIndex/provenance.js +48 -0
  217. package/dist/codeIndex/provenance.js.map +1 -0
  218. package/dist/codeIndex/rawSql.d.ts +54 -0
  219. package/dist/codeIndex/rawSql.d.ts.map +1 -0
  220. package/dist/codeIndex/rawSql.js +71 -0
  221. package/dist/codeIndex/rawSql.js.map +1 -0
  222. package/dist/codeIndex/schema.d.ts +99 -0
  223. package/dist/codeIndex/schema.d.ts.map +1 -0
  224. package/dist/codeIndex/schema.js +174 -0
  225. package/dist/codeIndex/schema.js.map +1 -0
  226. package/dist/codeIndex/search.d.ts +40 -0
  227. package/dist/codeIndex/search.d.ts.map +1 -0
  228. package/dist/codeIndex/search.js +316 -0
  229. package/dist/codeIndex/search.js.map +1 -0
  230. package/dist/codeIndex/shared.d.ts +27 -0
  231. package/dist/codeIndex/shared.d.ts.map +1 -0
  232. package/dist/codeIndex/shared.js +46 -0
  233. package/dist/codeIndex/shared.js.map +1 -0
  234. package/dist/codeIndex/sqliteCollection.d.ts +81 -0
  235. package/dist/codeIndex/sqliteCollection.d.ts.map +1 -0
  236. package/dist/codeIndex/sqliteCollection.js +250 -0
  237. package/dist/codeIndex/sqliteCollection.js.map +1 -0
  238. package/dist/codeIndex/whitelist.d.ts +59 -0
  239. package/dist/codeIndex/whitelist.d.ts.map +1 -0
  240. package/dist/codeIndex/whitelist.js +188 -0
  241. package/dist/codeIndex/whitelist.js.map +1 -0
  242. package/dist/codeIndexDB.d.ts +132 -271
  243. package/dist/codeIndexDB.d.ts.map +1 -1
  244. package/dist/codeIndexDB.js +365 -2729
  245. package/dist/codeIndexDB.js.map +1 -1
  246. package/dist/codeIndexService.d.ts +87 -12
  247. package/dist/codeIndexService.d.ts.map +1 -1
  248. package/dist/codeIndexService.js +110 -34
  249. package/dist/codeIndexService.js.map +1 -1
  250. package/dist/componentScanner.d.ts +35 -0
  251. package/dist/componentScanner.d.ts.map +1 -1
  252. package/dist/componentScanner.js +114 -80
  253. package/dist/componentScanner.js.map +1 -1
  254. package/dist/config/configGeneratePath.d.ts +4 -0
  255. package/dist/config/configGeneratePath.d.ts.map +1 -1
  256. package/dist/config/configGeneratePath.js +4 -0
  257. package/dist/config/configGeneratePath.js.map +1 -1
  258. package/dist/config/configLoader.d.ts +15 -0
  259. package/dist/config/configLoader.d.ts.map +1 -1
  260. package/dist/config/configLoader.js +15 -16
  261. package/dist/config/configLoader.js.map +1 -1
  262. package/dist/config/defaults.d.ts +11 -7
  263. package/dist/config/defaults.d.ts.map +1 -1
  264. package/dist/config/defaults.js +16 -14
  265. package/dist/config/defaults.js.map +1 -1
  266. package/dist/config/effectiveConfig.d.ts +17 -2
  267. package/dist/config/effectiveConfig.d.ts.map +1 -1
  268. package/dist/config/effectiveConfig.js +32 -25
  269. package/dist/config/effectiveConfig.js.map +1 -1
  270. package/dist/config/lintConfigReader.d.ts +6 -0
  271. package/dist/config/lintConfigReader.d.ts.map +1 -1
  272. package/dist/config/lintConfigReader.js +6 -0
  273. package/dist/config/lintConfigReader.js.map +1 -1
  274. package/dist/config/staticObjectExtract.d.ts +4 -0
  275. package/dist/config/staticObjectExtract.d.ts.map +1 -1
  276. package/dist/config/staticObjectExtract.js +7 -3
  277. package/dist/config/staticObjectExtract.js.map +1 -1
  278. package/dist/config/thresholdRationales.d.ts +2 -0
  279. package/dist/config/thresholdRationales.d.ts.map +1 -1
  280. package/dist/config/thresholdRationales.js +5 -2
  281. package/dist/config/thresholdRationales.js.map +1 -1
  282. package/dist/constants.d.ts +1 -1
  283. package/dist/conventions/conventionMiner.d.ts +105 -2
  284. package/dist/conventions/conventionMiner.d.ts.map +1 -1
  285. package/dist/conventions/conventionMiner.js +334 -259
  286. package/dist/conventions/conventionMiner.js.map +1 -1
  287. package/dist/coverage/coverageService.js +4 -4
  288. package/dist/coverage/coverageService.js.map +1 -1
  289. package/dist/daemon/args.d.ts +3 -0
  290. package/dist/daemon/args.d.ts.map +1 -1
  291. package/dist/daemon/args.js +3 -0
  292. package/dist/daemon/args.js.map +1 -1
  293. package/dist/daemon/core.d.ts +33 -27
  294. package/dist/daemon/core.d.ts.map +1 -1
  295. package/dist/daemon/core.js +198 -162
  296. package/dist/daemon/core.js.map +1 -1
  297. package/dist/daemon/lspServer.d.ts +8 -0
  298. package/dist/daemon/lspServer.d.ts.map +1 -1
  299. package/dist/daemon/lspServer.js +8 -0
  300. package/dist/daemon/lspServer.js.map +1 -1
  301. package/dist/daemon/main.d.ts +2 -0
  302. package/dist/daemon/main.d.ts.map +1 -1
  303. package/dist/daemon/main.js +22 -4
  304. package/dist/daemon/main.js.map +1 -1
  305. package/dist/daemon/resolve.d.ts +18 -3
  306. package/dist/daemon/resolve.d.ts.map +1 -1
  307. package/dist/daemon/resolve.js +25 -4
  308. package/dist/daemon/resolve.js.map +1 -1
  309. package/dist/daemon/socketClient.d.ts +10 -1
  310. package/dist/daemon/socketClient.d.ts.map +1 -1
  311. package/dist/daemon/socketClient.js +10 -1
  312. package/dist/daemon/socketClient.js.map +1 -1
  313. package/dist/daemon/socketServer.d.ts +13 -0
  314. package/dist/daemon/socketServer.d.ts.map +1 -1
  315. package/dist/daemon/socketServer.js +13 -0
  316. package/dist/daemon/socketServer.js.map +1 -1
  317. package/dist/dataPaths.d.ts +17 -8
  318. package/dist/dataPaths.d.ts.map +1 -1
  319. package/dist/dataPaths.js +16 -44
  320. package/dist/dataPaths.js.map +1 -1
  321. package/dist/dismissals.d.ts +22 -1
  322. package/dist/dismissals.d.ts.map +1 -1
  323. package/dist/dismissals.js +22 -1
  324. package/dist/dismissals.js.map +1 -1
  325. package/dist/enforcement/gate.d.ts +1 -0
  326. package/dist/enforcement/gate.d.ts.map +1 -1
  327. package/dist/enforcement/gate.js +1 -0
  328. package/dist/enforcement/gate.js.map +1 -1
  329. package/dist/fingerprint.d.ts +6 -0
  330. package/dist/fingerprint.d.ts.map +1 -1
  331. package/dist/fingerprint.js +46 -1
  332. package/dist/fingerprint.js.map +1 -1
  333. package/dist/functionScanner.d.ts +30 -1
  334. package/dist/functionScanner.d.ts.map +1 -1
  335. package/dist/functionScanner.js +258 -256
  336. package/dist/functionScanner.js.map +1 -1
  337. package/dist/generators/AWSQConfigGenerator.d.ts +23 -0
  338. package/dist/generators/AWSQConfigGenerator.d.ts.map +1 -1
  339. package/dist/generators/AWSQConfigGenerator.js +23 -0
  340. package/dist/generators/AWSQConfigGenerator.js.map +1 -1
  341. package/dist/generators/BaseConfigGenerator.d.ts +7 -0
  342. package/dist/generators/BaseConfigGenerator.d.ts.map +1 -1
  343. package/dist/generators/BaseConfigGenerator.js +7 -0
  344. package/dist/generators/BaseConfigGenerator.js.map +1 -1
  345. package/dist/generators/ClaudeConfigGenerator.d.ts +23 -0
  346. package/dist/generators/ClaudeConfigGenerator.d.ts.map +1 -1
  347. package/dist/generators/ClaudeConfigGenerator.js +23 -0
  348. package/dist/generators/ClaudeConfigGenerator.js.map +1 -1
  349. package/dist/generators/ClineConfigGenerator.d.ts +23 -0
  350. package/dist/generators/ClineConfigGenerator.d.ts.map +1 -1
  351. package/dist/generators/ClineConfigGenerator.js +23 -0
  352. package/dist/generators/ClineConfigGenerator.js.map +1 -1
  353. package/dist/generators/CodeiumConfigGenerator.d.ts +23 -0
  354. package/dist/generators/CodeiumConfigGenerator.d.ts.map +1 -1
  355. package/dist/generators/CodeiumConfigGenerator.js +23 -0
  356. package/dist/generators/CodeiumConfigGenerator.js.map +1 -1
  357. package/dist/generators/CodexConfigGenerator.d.ts +23 -0
  358. package/dist/generators/CodexConfigGenerator.d.ts.map +1 -1
  359. package/dist/generators/CodexConfigGenerator.js +23 -0
  360. package/dist/generators/CodexConfigGenerator.js.map +1 -1
  361. package/dist/generators/ConfigGeneratorFactory.d.ts +9 -0
  362. package/dist/generators/ConfigGeneratorFactory.d.ts.map +1 -1
  363. package/dist/generators/ConfigGeneratorFactory.js +9 -0
  364. package/dist/generators/ConfigGeneratorFactory.js.map +1 -1
  365. package/dist/generators/ContinueConfigGenerator.d.ts +23 -0
  366. package/dist/generators/ContinueConfigGenerator.d.ts.map +1 -1
  367. package/dist/generators/ContinueConfigGenerator.js +23 -0
  368. package/dist/generators/ContinueConfigGenerator.js.map +1 -1
  369. package/dist/generators/CopilotConfigGenerator.d.ts +23 -0
  370. package/dist/generators/CopilotConfigGenerator.d.ts.map +1 -1
  371. package/dist/generators/CopilotConfigGenerator.js +23 -0
  372. package/dist/generators/CopilotConfigGenerator.js.map +1 -1
  373. package/dist/generators/CursorConfigGenerator.d.ts +23 -0
  374. package/dist/generators/CursorConfigGenerator.d.ts.map +1 -1
  375. package/dist/generators/CursorConfigGenerator.js +23 -0
  376. package/dist/generators/CursorConfigGenerator.js.map +1 -1
  377. package/dist/generators/GeminiConfigGenerator.d.ts +23 -0
  378. package/dist/generators/GeminiConfigGenerator.d.ts.map +1 -1
  379. package/dist/generators/GeminiConfigGenerator.js +23 -0
  380. package/dist/generators/GeminiConfigGenerator.js.map +1 -1
  381. package/dist/generators/VSCodeConfigGenerator.d.ts +23 -0
  382. package/dist/generators/VSCodeConfigGenerator.d.ts.map +1 -1
  383. package/dist/generators/VSCodeConfigGenerator.js +23 -0
  384. package/dist/generators/VSCodeConfigGenerator.js.map +1 -1
  385. package/dist/generators/ZCodeConfigGenerator.d.ts +23 -0
  386. package/dist/generators/ZCodeConfigGenerator.d.ts.map +1 -1
  387. package/dist/generators/ZCodeConfigGenerator.js +23 -0
  388. package/dist/generators/ZCodeConfigGenerator.js.map +1 -1
  389. package/dist/graph/blastRadius.d.ts.map +1 -1
  390. package/dist/graph/blastRadius.js +12 -7
  391. package/dist/graph/blastRadius.js.map +1 -1
  392. package/dist/graph/callGraph.d.ts +31 -0
  393. package/dist/graph/callGraph.d.ts.map +1 -1
  394. package/dist/graph/callGraph.js +62 -32
  395. package/dist/graph/callGraph.js.map +1 -1
  396. package/dist/graph/importClassification.d.ts +28 -0
  397. package/dist/graph/importClassification.d.ts.map +1 -1
  398. package/dist/graph/importClassification.js +57 -0
  399. package/dist/graph/importClassification.js.map +1 -1
  400. package/dist/graph/importGraph.d.ts +38 -0
  401. package/dist/graph/importGraph.d.ts.map +1 -1
  402. package/dist/graph/importGraph.js +38 -0
  403. package/dist/graph/importGraph.js.map +1 -1
  404. package/dist/graph/outputFormatter.d.ts +12 -4
  405. package/dist/graph/outputFormatter.d.ts.map +1 -1
  406. package/dist/graph/outputFormatter.js +12 -62
  407. package/dist/graph/outputFormatter.js.map +1 -1
  408. package/dist/graph/resolutionEnvironment.d.ts +61 -0
  409. package/dist/graph/resolutionEnvironment.d.ts.map +1 -0
  410. package/dist/graph/resolutionEnvironment.js +57 -0
  411. package/dist/graph/resolutionEnvironment.js.map +1 -0
  412. package/dist/hooks/codex.d.ts +8 -1
  413. package/dist/hooks/codex.d.ts.map +1 -1
  414. package/dist/hooks/codex.js +7 -0
  415. package/dist/hooks/codex.js.map +1 -1
  416. package/dist/hooks/core.d.ts +6 -0
  417. package/dist/hooks/core.d.ts.map +1 -1
  418. package/dist/hooks/core.js +6 -1
  419. package/dist/hooks/core.js.map +1 -1
  420. package/dist/hooks/cursor.d.ts +11 -1
  421. package/dist/hooks/cursor.d.ts.map +1 -1
  422. package/dist/hooks/cursor.js +10 -0
  423. package/dist/hooks/cursor.js.map +1 -1
  424. package/dist/index.d.ts +4 -0
  425. package/dist/index.d.ts.map +1 -1
  426. package/dist/index.js +4 -0
  427. package/dist/index.js.map +1 -1
  428. package/dist/installConfig.d.ts +23 -5
  429. package/dist/installConfig.d.ts.map +1 -1
  430. package/dist/installConfig.js +23 -5
  431. package/dist/installConfig.js.map +1 -1
  432. package/dist/installer.d.ts +6 -0
  433. package/dist/installer.d.ts.map +1 -1
  434. package/dist/installer.js +6 -0
  435. package/dist/installer.js.map +1 -1
  436. package/dist/invariants/ruleEngine.d.ts +3 -0
  437. package/dist/invariants/ruleEngine.d.ts.map +1 -1
  438. package/dist/invariants/ruleEngine.js +156 -119
  439. package/dist/invariants/ruleEngine.js.map +1 -1
  440. package/dist/invariants/ruleValidator.d.ts +3 -0
  441. package/dist/invariants/ruleValidator.d.ts.map +1 -1
  442. package/dist/invariants/ruleValidator.js +185 -178
  443. package/dist/invariants/ruleValidator.js.map +1 -1
  444. package/dist/languages/LanguageOrchestrator.d.ts +4 -1
  445. package/dist/languages/LanguageOrchestrator.d.ts.map +1 -1
  446. package/dist/languages/LanguageOrchestrator.js +8 -19
  447. package/dist/languages/LanguageOrchestrator.js.map +1 -1
  448. package/dist/languages/RuntimeManager.d.ts +8 -0
  449. package/dist/languages/RuntimeManager.d.ts.map +1 -1
  450. package/dist/languages/RuntimeManager.js +55 -5
  451. package/dist/languages/RuntimeManager.js.map +1 -1
  452. package/dist/languages/UniversalAnalyzer.js +1 -1
  453. package/dist/languages/UniversalAnalyzer.js.map +1 -1
  454. package/dist/languages/adapterBridge.d.ts +4 -0
  455. package/dist/languages/adapterBridge.d.ts.map +1 -1
  456. package/dist/languages/adapterBridge.js +37 -3
  457. package/dist/languages/adapterBridge.js.map +1 -1
  458. package/dist/languages/go/GoAdapter.d.ts.map +1 -1
  459. package/dist/languages/go/GoAdapter.js +11 -14
  460. package/dist/languages/go/GoAdapter.js.map +1 -1
  461. package/dist/languages/go/analyzer-darwin-amd64 +0 -0
  462. package/dist/languages/go/analyzer-darwin-arm64 +0 -0
  463. package/dist/languages/go/analyzer-linux-amd64 +0 -0
  464. package/dist/languages/go/analyzer-linux-arm64 +0 -0
  465. package/dist/languages/go/analyzer-src/analyzer.go +2 -0
  466. package/dist/languages/go/analyzer-src/dataaccess.go +388 -0
  467. package/dist/languages/go/analyzer-src/types.go +8 -0
  468. package/dist/languages/go/analyzer-windows-amd64.exe +0 -0
  469. package/dist/languages/go/database-packages.json +8 -0
  470. package/dist/languages/go/goResolution.d.ts +229 -0
  471. package/dist/languages/go/goResolution.d.ts.map +1 -0
  472. package/dist/languages/go/goResolution.js +799 -0
  473. package/dist/languages/go/goResolution.js.map +1 -0
  474. package/dist/languages/go/stdlib-packages.json +353 -0
  475. package/dist/languages/go/tenantInputs.d.ts +37 -0
  476. package/dist/languages/go/tenantInputs.d.ts.map +1 -0
  477. package/dist/languages/go/tenantInputs.js +121 -0
  478. package/dist/languages/go/tenantInputs.js.map +1 -0
  479. package/dist/languages/index.d.ts +1 -0
  480. package/dist/languages/index.d.ts.map +1 -1
  481. package/dist/languages/index.js +5 -0
  482. package/dist/languages/index.js.map +1 -1
  483. package/dist/languages/json/JsonAdapter.d.ts +177 -0
  484. package/dist/languages/json/JsonAdapter.d.ts.map +1 -0
  485. package/dist/languages/json/JsonAdapter.js +531 -0
  486. package/dist/languages/json/JsonAdapter.js.map +1 -0
  487. package/dist/languages/locationIndex.d.ts +41 -0
  488. package/dist/languages/locationIndex.d.ts.map +1 -0
  489. package/dist/languages/locationIndex.js +42 -0
  490. package/dist/languages/locationIndex.js.map +1 -0
  491. package/dist/languages/sql/dialectDetection.d.ts +57 -0
  492. package/dist/languages/sql/dialectDetection.d.ts.map +1 -0
  493. package/dist/languages/sql/dialectDetection.js +135 -0
  494. package/dist/languages/sql/dialectDetection.js.map +1 -0
  495. package/dist/languages/sql/sqlAst.d.ts +494 -0
  496. package/dist/languages/sql/sqlAst.d.ts.map +1 -0
  497. package/dist/languages/sql/sqlAst.js +1817 -0
  498. package/dist/languages/sql/sqlAst.js.map +1 -0
  499. package/dist/languages/testConventions.d.ts +12 -1
  500. package/dist/languages/testConventions.d.ts.map +1 -1
  501. package/dist/languages/testConventions.js +13 -1
  502. package/dist/languages/testConventions.js.map +1 -1
  503. package/dist/languages/tree-sitter/TreeSitterCssAdapter.js +1 -1
  504. package/dist/languages/tree-sitter/TreeSitterCssAdapter.js.map +1 -1
  505. package/dist/languages/tree-sitter/converter.js +2 -2
  506. package/dist/languages/tree-sitter/converter.js.map +1 -1
  507. package/dist/languages/tree-sitter/parser.d.ts +3 -4
  508. package/dist/languages/tree-sitter/parser.d.ts.map +1 -1
  509. package/dist/languages/tree-sitter/parser.js +10 -4
  510. package/dist/languages/tree-sitter/parser.js.map +1 -1
  511. package/dist/languages/tree-sitter/rawNode.d.ts +3 -0
  512. package/dist/languages/tree-sitter/rawNode.d.ts.map +1 -1
  513. package/dist/languages/tree-sitter/rawNode.js +3 -0
  514. package/dist/languages/tree-sitter/rawNode.js.map +1 -1
  515. package/dist/languages/types.d.ts +7 -0
  516. package/dist/languages/types.d.ts.map +1 -1
  517. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +36 -0
  518. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
  519. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +168 -45
  520. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
  521. package/dist/languages/typescript/database-packages.json +19 -0
  522. package/dist/ledger.d.ts +118 -2
  523. package/dist/ledger.d.ts.map +1 -1
  524. package/dist/ledger.js +167 -45
  525. package/dist/ledger.js.map +1 -1
  526. package/dist/legacyIndexNotice.d.ts +32 -0
  527. package/dist/legacyIndexNotice.d.ts.map +1 -0
  528. package/dist/legacyIndexNotice.js +89 -0
  529. package/dist/legacyIndexNotice.js.map +1 -0
  530. package/dist/mcp-tools/discoveryQueries.d.ts +55 -0
  531. package/dist/mcp-tools/discoveryQueries.d.ts.map +1 -0
  532. package/dist/mcp-tools/discoveryQueries.js +157 -0
  533. package/dist/mcp-tools/discoveryQueries.js.map +1 -0
  534. package/dist/mcp-tools/projectTasks.d.ts +9 -123
  535. package/dist/mcp-tools/projectTasks.d.ts.map +1 -1
  536. package/dist/mcp-tools/projectTasks.js +180 -170
  537. package/dist/mcp-tools/projectTasks.js.map +1 -1
  538. package/dist/mcp-tools/whitelistTools.d.ts +20 -0
  539. package/dist/mcp-tools/whitelistTools.d.ts.map +1 -1
  540. package/dist/mcp-tools/whitelistTools.js +20 -0
  541. package/dist/mcp-tools/whitelistTools.js.map +1 -1
  542. package/dist/mcp-tools/workflowGuide.d.ts +9 -0
  543. package/dist/mcp-tools/workflowGuide.d.ts.map +1 -1
  544. package/dist/mcp-tools/workflowGuide.js +13 -5
  545. package/dist/mcp-tools/workflowGuide.js.map +1 -1
  546. package/dist/mcp-tools-shared.d.ts +78 -0
  547. package/dist/mcp-tools-shared.d.ts.map +1 -1
  548. package/dist/mcp-tools-shared.js +203 -340
  549. package/dist/mcp-tools-shared.js.map +1 -1
  550. package/dist/mcp-ui-simple.d.ts +2 -0
  551. package/dist/mcp-ui-simple.d.ts.map +1 -1
  552. package/dist/mcp-ui-simple.js +12 -5
  553. package/dist/mcp-ui-simple.js.map +1 -1
  554. package/dist/mcp.d.ts +6 -0
  555. package/dist/mcp.d.ts.map +1 -1
  556. package/dist/mcp.js +827 -850
  557. package/dist/mcp.js.map +1 -1
  558. package/dist/mcpAuditJobs.d.ts +29 -33
  559. package/dist/mcpAuditJobs.d.ts.map +1 -1
  560. package/dist/mcpAuditJobs.js +102 -791
  561. package/dist/mcpAuditJobs.js.map +1 -1
  562. package/dist/mcpAutoIndex.d.ts +5 -0
  563. package/dist/mcpAutoIndex.d.ts.map +1 -1
  564. package/dist/mcpAutoIndex.js +7 -2
  565. package/dist/mcpAutoIndex.js.map +1 -1
  566. package/dist/mcpDiagnostics.d.ts +7 -0
  567. package/dist/mcpDiagnostics.d.ts.map +1 -1
  568. package/dist/mcpDiagnostics.js +34 -9
  569. package/dist/mcpDiagnostics.js.map +1 -1
  570. package/dist/mcpToolErrors.d.ts +16 -0
  571. package/dist/mcpToolErrors.d.ts.map +1 -1
  572. package/dist/mcpToolErrors.js +16 -0
  573. package/dist/mcpToolErrors.js.map +1 -1
  574. package/dist/nextFile.d.ts +6 -0
  575. package/dist/nextFile.d.ts.map +1 -1
  576. package/dist/nextFile.js +6 -0
  577. package/dist/nextFile.js.map +1 -1
  578. package/dist/nextFileIncremental.d.ts +44 -4
  579. package/dist/nextFileIncremental.d.ts.map +1 -1
  580. package/dist/nextFileIncremental.js +47 -7
  581. package/dist/nextFileIncremental.js.map +1 -1
  582. package/dist/phase/batchFunctions.d.ts +38 -0
  583. package/dist/phase/batchFunctions.d.ts.map +1 -0
  584. package/dist/phase/batchFunctions.js +64 -0
  585. package/dist/phase/batchFunctions.js.map +1 -0
  586. package/dist/phase/checks.d.ts +39 -0
  587. package/dist/phase/checks.d.ts.map +1 -0
  588. package/dist/phase/checks.js +48 -0
  589. package/dist/phase/checks.js.map +1 -0
  590. package/dist/phase/codeBlocks.d.ts +25 -0
  591. package/dist/phase/codeBlocks.d.ts.map +1 -0
  592. package/dist/phase/codeBlocks.js +268 -0
  593. package/dist/phase/codeBlocks.js.map +1 -0
  594. package/dist/phase/colorMath.d.ts +41 -0
  595. package/dist/phase/colorMath.d.ts.map +1 -0
  596. package/dist/phase/colorMath.js +109 -0
  597. package/dist/phase/colorMath.js.map +1 -0
  598. package/dist/phase/config.d.ts +29 -0
  599. package/dist/phase/config.d.ts.map +1 -0
  600. package/dist/phase/config.js +54 -0
  601. package/dist/phase/config.js.map +1 -0
  602. package/dist/phase/consumed.d.ts +47 -0
  603. package/dist/phase/consumed.d.ts.map +1 -0
  604. package/dist/phase/consumed.js +22 -0
  605. package/dist/phase/consumed.js.map +1 -0
  606. package/dist/phase/conventionMining.d.ts +59 -0
  607. package/dist/phase/conventionMining.d.ts.map +1 -0
  608. package/dist/phase/conventionMining.js +152 -0
  609. package/dist/phase/conventionMining.js.map +1 -0
  610. package/dist/phase/coverage.d.ts +65 -0
  611. package/dist/phase/coverage.d.ts.map +1 -0
  612. package/dist/phase/coverage.js +121 -0
  613. package/dist/phase/coverage.js.map +1 -0
  614. package/dist/phase/dag.d.ts +49 -0
  615. package/dist/phase/dag.d.ts.map +1 -0
  616. package/dist/phase/dag.js +120 -0
  617. package/dist/phase/dag.js.map +1 -0
  618. package/dist/phase/dataAccessCalls.d.ts +33 -0
  619. package/dist/phase/dataAccessCalls.d.ts.map +1 -0
  620. package/dist/phase/dataAccessCalls.js +42 -0
  621. package/dist/phase/dataAccessCalls.js.map +1 -0
  622. package/dist/phase/dataAccessCallsCandidates.d.ts +25 -0
  623. package/dist/phase/dataAccessCallsCandidates.d.ts.map +1 -0
  624. package/dist/phase/dataAccessCallsCandidates.js +27 -0
  625. package/dist/phase/dataAccessCallsCandidates.js.map +1 -0
  626. package/dist/phase/dynamicSql.d.ts +18 -0
  627. package/dist/phase/dynamicSql.d.ts.map +1 -0
  628. package/dist/phase/dynamicSql.js +20 -0
  629. package/dist/phase/dynamicSql.js.map +1 -0
  630. package/dist/phase/exportForm.d.ts +23 -0
  631. package/dist/phase/exportForm.d.ts.map +1 -0
  632. package/dist/phase/exportForm.js +29 -0
  633. package/dist/phase/exportForm.js.map +1 -0
  634. package/dist/phase/exportSymbols.d.ts +21 -0
  635. package/dist/phase/exportSymbols.d.ts.map +1 -0
  636. package/dist/phase/exportSymbols.js +28 -0
  637. package/dist/phase/exportSymbols.js.map +1 -0
  638. package/dist/phase/fileHeader.d.ts +15 -0
  639. package/dist/phase/fileHeader.d.ts.map +1 -0
  640. package/dist/phase/fileHeader.js +33 -0
  641. package/dist/phase/fileHeader.js.map +1 -0
  642. package/dist/phase/fileImports.d.ts +39 -0
  643. package/dist/phase/fileImports.d.ts.map +1 -0
  644. package/dist/phase/fileImports.js +138 -0
  645. package/dist/phase/fileImports.js.map +1 -0
  646. package/dist/phase/fileSymbols.d.ts +25 -0
  647. package/dist/phase/fileSymbols.d.ts.map +1 -0
  648. package/dist/phase/fileSymbols.js +302 -0
  649. package/dist/phase/fileSymbols.js.map +1 -0
  650. package/dist/phase/functionBodies.d.ts +28 -0
  651. package/dist/phase/functionBodies.d.ts.map +1 -0
  652. package/dist/phase/functionBodies.js +67 -0
  653. package/dist/phase/functionBodies.js.map +1 -0
  654. package/dist/phase/functionIndex.d.ts +28 -0
  655. package/dist/phase/functionIndex.d.ts.map +1 -0
  656. package/dist/phase/functionIndex.js +152 -0
  657. package/dist/phase/functionIndex.js.map +1 -0
  658. package/dist/phase/goFunctionAnalysis.d.ts +47 -0
  659. package/dist/phase/goFunctionAnalysis.d.ts.map +1 -0
  660. package/dist/phase/goFunctionAnalysis.js +291 -0
  661. package/dist/phase/goFunctionAnalysis.js.map +1 -0
  662. package/dist/phase/goFunctions.d.ts +38 -0
  663. package/dist/phase/goFunctions.d.ts.map +1 -0
  664. package/dist/phase/goFunctions.js +154 -0
  665. package/dist/phase/goFunctions.js.map +1 -0
  666. package/dist/phase/goImports.d.ts +29 -0
  667. package/dist/phase/goImports.d.ts.map +1 -0
  668. package/dist/phase/goImports.js +68 -0
  669. package/dist/phase/goImports.js.map +1 -0
  670. package/dist/phase/goPackageBindings.d.ts +22 -0
  671. package/dist/phase/goPackageBindings.d.ts.map +1 -0
  672. package/dist/phase/goPackageBindings.js +30 -0
  673. package/dist/phase/goPackageBindings.js.map +1 -0
  674. package/dist/phase/goSwitches.d.ts +28 -0
  675. package/dist/phase/goSwitches.d.ts.map +1 -0
  676. package/dist/phase/goSwitches.js +52 -0
  677. package/dist/phase/goSwitches.js.map +1 -0
  678. package/dist/phase/importForm.d.ts +20 -0
  679. package/dist/phase/importForm.d.ts.map +1 -0
  680. package/dist/phase/importForm.js +27 -0
  681. package/dist/phase/importForm.js.map +1 -0
  682. package/dist/phase/importSpecifiers.d.ts +20 -0
  683. package/dist/phase/importSpecifiers.d.ts.map +1 -0
  684. package/dist/phase/importSpecifiers.js +30 -0
  685. package/dist/phase/importSpecifiers.js.map +1 -0
  686. package/dist/phase/imports.d.ts +18 -0
  687. package/dist/phase/imports.d.ts.map +1 -0
  688. package/dist/phase/imports.js +25 -0
  689. package/dist/phase/imports.js.map +1 -0
  690. package/dist/phase/jsonDocument.d.ts +26 -0
  691. package/dist/phase/jsonDocument.d.ts.map +1 -0
  692. package/dist/phase/jsonDocument.js +36 -0
  693. package/dist/phase/jsonDocument.js.map +1 -0
  694. package/dist/phase/localBinding.d.ts +33 -0
  695. package/dist/phase/localBinding.d.ts.map +1 -0
  696. package/dist/phase/localBinding.js +208 -0
  697. package/dist/phase/localBinding.js.map +1 -0
  698. package/dist/phase/loopQueries.d.ts +31 -0
  699. package/dist/phase/loopQueries.d.ts.map +1 -0
  700. package/dist/phase/loopQueries.js +44 -0
  701. package/dist/phase/loopQueries.js.map +1 -0
  702. package/dist/phase/loopQueryCandidates.d.ts +26 -0
  703. package/dist/phase/loopQueryCandidates.d.ts.map +1 -0
  704. package/dist/phase/loopQueryCandidates.js +28 -0
  705. package/dist/phase/loopQueryCandidates.js.map +1 -0
  706. package/dist/phase/oracles.d.ts +216 -0
  707. package/dist/phase/oracles.d.ts.map +1 -0
  708. package/dist/phase/oracles.js +484 -0
  709. package/dist/phase/oracles.js.map +1 -0
  710. package/dist/phase/phaseModel.d.ts +190 -0
  711. package/dist/phase/phaseModel.d.ts.map +1 -0
  712. package/dist/phase/phaseModel.js +491 -0
  713. package/dist/phase/phaseModel.js.map +1 -0
  714. package/dist/phase/producers.d.ts +450 -0
  715. package/dist/phase/producers.d.ts.map +1 -0
  716. package/dist/phase/producers.js +1030 -0
  717. package/dist/phase/producers.js.map +1 -0
  718. package/dist/phase/querySiteCandidates.d.ts +27 -0
  719. package/dist/phase/querySiteCandidates.d.ts.map +1 -0
  720. package/dist/phase/querySiteCandidates.js +66 -0
  721. package/dist/phase/querySiteCandidates.js.map +1 -0
  722. package/dist/phase/querySites.d.ts +30 -0
  723. package/dist/phase/querySites.d.ts.map +1 -0
  724. package/dist/phase/querySites.js +93 -0
  725. package/dist/phase/querySites.js.map +1 -0
  726. package/dist/phase/reachability.d.ts +61 -0
  727. package/dist/phase/reachability.d.ts.map +1 -0
  728. package/dist/phase/reachability.js +104 -0
  729. package/dist/phase/reachability.js.map +1 -0
  730. package/dist/phase/reactComponents.d.ts +33 -0
  731. package/dist/phase/reactComponents.d.ts.map +1 -0
  732. package/dist/phase/reactComponents.js +47 -0
  733. package/dist/phase/reactComponents.js.map +1 -0
  734. package/dist/phase/receiverActivity.d.ts +35 -0
  735. package/dist/phase/receiverActivity.d.ts.map +1 -0
  736. package/dist/phase/receiverActivity.js +66 -0
  737. package/dist/phase/receiverActivity.js.map +1 -0
  738. package/dist/phase/receiverConsumers.d.ts +207 -0
  739. package/dist/phase/receiverConsumers.d.ts.map +1 -0
  740. package/dist/phase/receiverConsumers.js +1063 -0
  741. package/dist/phase/receiverConsumers.js.map +1 -0
  742. package/dist/phase/receiverProvenance.d.ts +120 -0
  743. package/dist/phase/receiverProvenance.d.ts.map +1 -0
  744. package/dist/phase/receiverProvenance.js +377 -0
  745. package/dist/phase/receiverProvenance.js.map +1 -0
  746. package/dist/phase/routing.d.ts +47 -0
  747. package/dist/phase/routing.d.ts.map +1 -0
  748. package/dist/phase/routing.js +62 -0
  749. package/dist/phase/routing.js.map +1 -0
  750. package/dist/phase/rules/conventions.d.ts +61 -0
  751. package/dist/phase/rules/conventions.d.ts.map +1 -0
  752. package/dist/phase/rules/conventions.js +403 -0
  753. package/dist/phase/rules/conventions.js.map +1 -0
  754. package/dist/phase/rules/crossDomain.d.ts +102 -0
  755. package/dist/phase/rules/crossDomain.d.ts.map +1 -0
  756. package/dist/phase/rules/crossDomain.js +918 -0
  757. package/dist/phase/rules/crossDomain.js.map +1 -0
  758. package/dist/phase/rules/dataAccess.d.ts +62 -0
  759. package/dist/phase/rules/dataAccess.d.ts.map +1 -0
  760. package/dist/phase/rules/dataAccess.js +480 -0
  761. package/dist/phase/rules/dataAccess.js.map +1 -0
  762. package/dist/phase/rules/dependencyGraph.d.ts +44 -0
  763. package/dist/phase/rules/dependencyGraph.d.ts.map +1 -0
  764. package/dist/phase/rules/dependencyGraph.js +260 -0
  765. package/dist/phase/rules/dependencyGraph.js.map +1 -0
  766. package/dist/phase/rules/documentation.d.ts +45 -0
  767. package/dist/phase/rules/documentation.d.ts.map +1 -0
  768. package/dist/phase/rules/documentation.js +340 -0
  769. package/dist/phase/rules/documentation.js.map +1 -0
  770. package/dist/phase/rules/dry.d.ts +109 -0
  771. package/dist/phase/rules/dry.d.ts.map +1 -0
  772. package/dist/phase/rules/dry.js +803 -0
  773. package/dist/phase/rules/dry.js.map +1 -0
  774. package/dist/phase/rules/fileDocumentation.d.ts +36 -0
  775. package/dist/phase/rules/fileDocumentation.d.ts.map +1 -0
  776. package/dist/phase/rules/fileDocumentation.js +134 -0
  777. package/dist/phase/rules/fileDocumentation.js.map +1 -0
  778. package/dist/phase/rules/functionBodies.d.ts +33 -0
  779. package/dist/phase/rules/functionBodies.d.ts.map +1 -0
  780. package/dist/phase/rules/functionBodies.js +71 -0
  781. package/dist/phase/rules/functionBodies.js.map +1 -0
  782. package/dist/phase/rules/goRules.d.ts +49 -0
  783. package/dist/phase/rules/goRules.d.ts.map +1 -0
  784. package/dist/phase/rules/goRules.js +209 -0
  785. package/dist/phase/rules/goRules.js.map +1 -0
  786. package/dist/phase/rules/querySites.d.ts +29 -0
  787. package/dist/phase/rules/querySites.d.ts.map +1 -0
  788. package/dist/phase/rules/querySites.js +94 -0
  789. package/dist/phase/rules/querySites.js.map +1 -0
  790. package/dist/phase/rules/react.d.ts +38 -0
  791. package/dist/phase/rules/react.d.ts.map +1 -0
  792. package/dist/phase/rules/react.js +202 -0
  793. package/dist/phase/rules/react.js.map +1 -0
  794. package/dist/phase/rules/registry.d.ts +170 -0
  795. package/dist/phase/rules/registry.d.ts.map +1 -0
  796. package/dist/phase/rules/registry.js +103 -0
  797. package/dist/phase/rules/registry.js.map +1 -0
  798. package/dist/phase/rules/schema.d.ts +79 -0
  799. package/dist/phase/rules/schema.d.ts.map +1 -0
  800. package/dist/phase/rules/schema.js +273 -0
  801. package/dist/phase/rules/schema.js.map +1 -0
  802. package/dist/phase/rules/schemaJson.d.ts +32 -0
  803. package/dist/phase/rules/schemaJson.d.ts.map +1 -0
  804. package/dist/phase/rules/schemaJson.js +81 -0
  805. package/dist/phase/rules/schemaJson.js.map +1 -0
  806. package/dist/phase/rules/schemaValidator.d.ts +38 -0
  807. package/dist/phase/rules/schemaValidator.d.ts.map +1 -0
  808. package/dist/phase/rules/schemaValidator.js +107 -0
  809. package/dist/phase/rules/schemaValidator.js.map +1 -0
  810. package/dist/phase/rules/secrets.d.ts +34 -0
  811. package/dist/phase/rules/secrets.d.ts.map +1 -0
  812. package/dist/phase/rules/secrets.js +208 -0
  813. package/dist/phase/rules/secrets.js.map +1 -0
  814. package/dist/phase/rules/security.d.ts +30 -0
  815. package/dist/phase/rules/security.d.ts.map +1 -0
  816. package/dist/phase/rules/security.js +85 -0
  817. package/dist/phase/rules/security.js.map +1 -0
  818. package/dist/phase/rules/securityDefects.d.ts +37 -0
  819. package/dist/phase/rules/securityDefects.d.ts.map +1 -0
  820. package/dist/phase/rules/securityDefects.js +167 -0
  821. package/dist/phase/rules/securityDefects.js.map +1 -0
  822. package/dist/phase/rules/solid.d.ts +61 -0
  823. package/dist/phase/rules/solid.d.ts.map +1 -0
  824. package/dist/phase/rules/solid.js +562 -0
  825. package/dist/phase/rules/solid.js.map +1 -0
  826. package/dist/phase/rules/styles.d.ts +77 -0
  827. package/dist/phase/rules/styles.d.ts.map +1 -0
  828. package/dist/phase/rules/styles.js +868 -0
  829. package/dist/phase/rules/styles.js.map +1 -0
  830. package/dist/phase/rules/unreferencedModule.d.ts +26 -0
  831. package/dist/phase/rules/unreferencedModule.d.ts.map +1 -0
  832. package/dist/phase/rules/unreferencedModule.js +61 -0
  833. package/dist/phase/rules/unreferencedModule.js.map +1 -0
  834. package/dist/phase/runner.d.ts +549 -0
  835. package/dist/phase/runner.d.ts.map +1 -0
  836. package/dist/phase/runner.js +1098 -0
  837. package/dist/phase/runner.js.map +1 -0
  838. package/dist/phase/schemaCode.d.ts +34 -0
  839. package/dist/phase/schemaCode.d.ts.map +1 -0
  840. package/dist/phase/schemaCode.js +53 -0
  841. package/dist/phase/schemaCode.js.map +1 -0
  842. package/dist/phase/schemaObjects.d.ts +37 -0
  843. package/dist/phase/schemaObjects.d.ts.map +1 -0
  844. package/dist/phase/schemaObjects.js +139 -0
  845. package/dist/phase/schemaObjects.js.map +1 -0
  846. package/dist/phase/schemaUsage.d.ts +30 -0
  847. package/dist/phase/schemaUsage.d.ts.map +1 -0
  848. package/dist/phase/schemaUsage.js +99 -0
  849. package/dist/phase/schemaUsage.js.map +1 -0
  850. package/dist/phase/schemaUsageCandidates.d.ts +32 -0
  851. package/dist/phase/schemaUsageCandidates.d.ts.map +1 -0
  852. package/dist/phase/schemaUsageCandidates.js +165 -0
  853. package/dist/phase/schemaUsageCandidates.js.map +1 -0
  854. package/dist/phase/schemaValidations.d.ts +34 -0
  855. package/dist/phase/schemaValidations.d.ts.map +1 -0
  856. package/dist/phase/schemaValidations.js +53 -0
  857. package/dist/phase/schemaValidations.js.map +1 -0
  858. package/dist/phase/secretCandidates.d.ts +28 -0
  859. package/dist/phase/secretCandidates.d.ts.map +1 -0
  860. package/dist/phase/secretCandidates.js +132 -0
  861. package/dist/phase/secretCandidates.js.map +1 -0
  862. package/dist/phase/securityCandidates.d.ts +29 -0
  863. package/dist/phase/securityCandidates.d.ts.map +1 -0
  864. package/dist/phase/securityCandidates.js +469 -0
  865. package/dist/phase/securityCandidates.js.map +1 -0
  866. package/dist/phase/seeded-defects.d.ts +18 -0
  867. package/dist/phase/seeded-defects.d.ts.map +1 -0
  868. package/dist/phase/seeded-defects.js +61 -0
  869. package/dist/phase/seeded-defects.js.map +1 -0
  870. package/dist/phase/stringLiterals.d.ts +24 -0
  871. package/dist/phase/stringLiterals.d.ts.map +1 -0
  872. package/dist/phase/stringLiterals.js +35 -0
  873. package/dist/phase/stringLiterals.js.map +1 -0
  874. package/dist/phase/stylesCss.d.ts +25 -0
  875. package/dist/phase/stylesCss.d.ts.map +1 -0
  876. package/dist/phase/stylesCss.js +34 -0
  877. package/dist/phase/stylesCss.js.map +1 -0
  878. package/dist/phase/stylesMarkup.d.ts +31 -0
  879. package/dist/phase/stylesMarkup.d.ts.map +1 -0
  880. package/dist/phase/stylesMarkup.js +48 -0
  881. package/dist/phase/stylesMarkup.js.map +1 -0
  882. package/dist/phase/stylesSource.d.ts +36 -0
  883. package/dist/phase/stylesSource.d.ts.map +1 -0
  884. package/dist/phase/stylesSource.js +50 -0
  885. package/dist/phase/stylesSource.js.map +1 -0
  886. package/dist/phase/typeDeclarations.d.ts +33 -0
  887. package/dist/phase/typeDeclarations.d.ts.map +1 -0
  888. package/dist/phase/typeDeclarations.js +76 -0
  889. package/dist/phase/typeDeclarations.js.map +1 -0
  890. package/dist/phase/types.d.ts +2199 -0
  891. package/dist/phase/types.d.ts.map +1 -0
  892. package/dist/phase/types.js +27 -0
  893. package/dist/phase/types.js.map +1 -0
  894. package/dist/phase/withinFileProvenance.d.ts +50 -0
  895. package/dist/phase/withinFileProvenance.d.ts.map +1 -0
  896. package/dist/phase/withinFileProvenance.js +112 -0
  897. package/dist/phase/withinFileProvenance.js.map +1 -0
  898. package/dist/pipeline.d.ts +37 -30
  899. package/dist/pipeline.d.ts.map +1 -1
  900. package/dist/pipeline.js +131 -326
  901. package/dist/pipeline.js.map +1 -1
  902. package/dist/pipelineAdapters.d.ts +104 -21
  903. package/dist/pipelineAdapters.d.ts.map +1 -1
  904. package/dist/pipelineAdapters.js +1144 -984
  905. package/dist/pipelineAdapters.js.map +1 -1
  906. package/dist/pipelineTypes.d.ts +21 -0
  907. package/dist/pipelineTypes.d.ts.map +1 -1
  908. package/dist/pipelineTypes.js +21 -10
  909. package/dist/pipelineTypes.js.map +1 -1
  910. package/dist/presets/presets.d.ts +9 -2
  911. package/dist/presets/presets.d.ts.map +1 -1
  912. package/dist/presets/presets.js +15 -26
  913. package/dist/presets/presets.js.map +1 -1
  914. package/dist/reporting/csvReportGenerator.d.ts +14 -3
  915. package/dist/reporting/csvReportGenerator.d.ts.map +1 -1
  916. package/dist/reporting/csvReportGenerator.js +14 -3
  917. package/dist/reporting/csvReportGenerator.js.map +1 -1
  918. package/dist/reporting/htmlReportGenerator.d.ts +5 -1
  919. package/dist/reporting/htmlReportGenerator.d.ts.map +1 -1
  920. package/dist/reporting/htmlReportGenerator.js +5 -1
  921. package/dist/reporting/htmlReportGenerator.js.map +1 -1
  922. package/dist/reporting/jsonReportGenerator.d.ts +9 -2
  923. package/dist/reporting/jsonReportGenerator.d.ts.map +1 -1
  924. package/dist/reporting/jsonReportGenerator.js +19 -5
  925. package/dist/reporting/jsonReportGenerator.js.map +1 -1
  926. package/dist/reporting/reportGenerator.d.ts +9 -2
  927. package/dist/reporting/reportGenerator.d.ts.map +1 -1
  928. package/dist/reporting/reportGenerator.js +9 -2
  929. package/dist/reporting/reportGenerator.js.map +1 -1
  930. package/dist/reporting/sarifReportGenerator.d.ts +14 -0
  931. package/dist/reporting/sarifReportGenerator.d.ts.map +1 -1
  932. package/dist/reporting/sarifReportGenerator.js +14 -0
  933. package/dist/reporting/sarifReportGenerator.js.map +1 -1
  934. package/dist/reporting/sizeDistribution.d.ts +19 -2
  935. package/dist/reporting/sizeDistribution.d.ts.map +1 -1
  936. package/dist/reporting/sizeDistribution.js +23 -5
  937. package/dist/reporting/sizeDistribution.js.map +1 -1
  938. package/dist/ruleAliases.d.ts +6 -8
  939. package/dist/ruleAliases.d.ts.map +1 -1
  940. package/dist/ruleAliases.js +29 -4
  941. package/dist/ruleAliases.js.map +1 -1
  942. package/dist/search/QueryParser.d.ts +1 -0
  943. package/dist/search/QueryParser.d.ts.map +1 -1
  944. package/dist/search/QueryParser.js +32 -91
  945. package/dist/search/QueryParser.js.map +1 -1
  946. package/dist/services/CodeMapGenerator.d.ts +19 -20
  947. package/dist/services/CodeMapGenerator.d.ts.map +1 -1
  948. package/dist/services/CodeMapGenerator.js +214 -194
  949. package/dist/services/CodeMapGenerator.js.map +1 -1
  950. package/dist/services/ProjectTaskRepository.d.ts +65 -3
  951. package/dist/services/ProjectTaskRepository.d.ts.map +1 -1
  952. package/dist/services/ProjectTaskRepository.js +94 -25
  953. package/dist/services/ProjectTaskRepository.js.map +1 -1
  954. package/dist/services/auditJobService.d.ts +17 -1
  955. package/dist/services/auditJobService.d.ts.map +1 -1
  956. package/dist/services/auditJobService.js +16 -0
  957. package/dist/services/auditJobService.js.map +1 -1
  958. package/dist/services/fileAccounting.d.ts +43 -5
  959. package/dist/services/fileAccounting.d.ts.map +1 -1
  960. package/dist/services/fileAccounting.js +48 -9
  961. package/dist/services/fileAccounting.js.map +1 -1
  962. package/dist/services/projectTaskHelpers.d.ts +45 -0
  963. package/dist/services/projectTaskHelpers.d.ts.map +1 -1
  964. package/dist/services/projectTaskHelpers.js +45 -0
  965. package/dist/services/projectTaskHelpers.js.map +1 -1
  966. package/dist/services/whitelistService.d.ts +40 -5
  967. package/dist/services/whitelistService.d.ts.map +1 -1
  968. package/dist/services/whitelistService.js +87 -46
  969. package/dist/services/whitelistService.js.map +1 -1
  970. package/dist/sqlite/betterSqlite3.d.ts +35 -1
  971. package/dist/sqlite/betterSqlite3.d.ts.map +1 -1
  972. package/dist/sqlite/betterSqlite3.js +35 -1
  973. package/dist/sqlite/betterSqlite3.js.map +1 -1
  974. package/dist/sqlite/driver.d.ts +23 -0
  975. package/dist/sqlite/driver.d.ts.map +1 -1
  976. package/dist/sqlite/driver.js +23 -0
  977. package/dist/sqlite/driver.js.map +1 -1
  978. package/dist/sqlite/nodeSqlite.d.ts +35 -1
  979. package/dist/sqlite/nodeSqlite.d.ts.map +1 -1
  980. package/dist/sqlite/nodeSqlite.js +35 -1
  981. package/dist/sqlite/nodeSqlite.js.map +1 -1
  982. package/dist/structuralSignature.d.ts +9 -0
  983. package/dist/structuralSignature.d.ts.map +1 -1
  984. package/dist/structuralSignature.js +9 -0
  985. package/dist/structuralSignature.js.map +1 -1
  986. package/dist/styles/cssAstExtractor.d.ts +15 -0
  987. package/dist/styles/cssAstExtractor.d.ts.map +1 -1
  988. package/dist/styles/cssAstExtractor.js +15 -0
  989. package/dist/styles/cssAstExtractor.js.map +1 -1
  990. package/dist/styles/normalizer.d.ts +6 -0
  991. package/dist/styles/normalizer.d.ts.map +1 -1
  992. package/dist/styles/normalizer.js +6 -0
  993. package/dist/styles/normalizer.js.map +1 -1
  994. package/dist/styles/styleExtractor.d.ts +29 -2
  995. package/dist/styles/styleExtractor.d.ts.map +1 -1
  996. package/dist/styles/styleExtractor.js +67 -48
  997. package/dist/styles/styleExtractor.js.map +1 -1
  998. package/dist/styles/styleIndexer.d.ts +8 -0
  999. package/dist/styles/styleIndexer.d.ts.map +1 -1
  1000. package/dist/styles/styleIndexer.js +135 -138
  1001. package/dist/styles/styleIndexer.js.map +1 -1
  1002. package/dist/styles/tailwindConfigLoader.d.ts +12 -0
  1003. package/dist/styles/tailwindConfigLoader.d.ts.map +1 -1
  1004. package/dist/styles/tailwindConfigLoader.js +12 -0
  1005. package/dist/styles/tailwindConfigLoader.js.map +1 -1
  1006. package/dist/styles/tailwindExpander.d.ts +3 -0
  1007. package/dist/styles/tailwindExpander.d.ts.map +1 -1
  1008. package/dist/styles/tailwindExpander.js +8 -4
  1009. package/dist/styles/tailwindExpander.js.map +1 -1
  1010. package/dist/styles/tailwindProbe.d.ts +9 -0
  1011. package/dist/styles/tailwindProbe.d.ts.map +1 -1
  1012. package/dist/styles/tailwindProbe.js +181 -166
  1013. package/dist/styles/tailwindProbe.js.map +1 -1
  1014. package/dist/styles/tailwindUtilityExpander.d.ts +13 -0
  1015. package/dist/styles/tailwindUtilityExpander.d.ts.map +1 -1
  1016. package/dist/styles/tailwindUtilityExpander.js +13 -0
  1017. package/dist/styles/tailwindUtilityExpander.js.map +1 -1
  1018. package/dist/symbols.d.ts +13 -11
  1019. package/dist/symbols.d.ts.map +1 -1
  1020. package/dist/symbols.js +14 -21
  1021. package/dist/symbols.js.map +1 -1
  1022. package/dist/telemetry.d.ts +31 -3
  1023. package/dist/telemetry.d.ts.map +1 -1
  1024. package/dist/telemetry.js +31 -3
  1025. package/dist/telemetry.js.map +1 -1
  1026. package/dist/tool-registry.d.ts +37 -1
  1027. package/dist/tool-registry.d.ts.map +1 -1
  1028. package/dist/tool-registry.js +37 -1
  1029. package/dist/tool-registry.js.map +1 -1
  1030. package/dist/types.d.ts +114 -71
  1031. package/dist/types.d.ts.map +1 -1
  1032. package/dist/types.js +7 -16
  1033. package/dist/types.js.map +1 -1
  1034. package/dist/ui/InteractivePrompts.d.ts +12 -0
  1035. package/dist/ui/InteractivePrompts.d.ts.map +1 -1
  1036. package/dist/ui/InteractivePrompts.js +12 -0
  1037. package/dist/ui/InteractivePrompts.js.map +1 -1
  1038. package/dist/utils/astParser.d.ts +15 -0
  1039. package/dist/utils/astParser.d.ts.map +1 -1
  1040. package/dist/utils/astParser.js +15 -0
  1041. package/dist/utils/astParser.js.map +1 -1
  1042. package/dist/utils/astUtils.d.ts +60 -0
  1043. package/dist/utils/astUtils.d.ts.map +1 -1
  1044. package/dist/utils/astUtils.js +350 -362
  1045. package/dist/utils/astUtils.js.map +1 -1
  1046. package/dist/utils/contentHash.d.ts +22 -0
  1047. package/dist/utils/contentHash.d.ts.map +1 -0
  1048. package/dist/utils/contentHash.js +26 -0
  1049. package/dist/utils/contentHash.js.map +1 -0
  1050. package/dist/utils/dependencyExtractor.d.ts +28 -0
  1051. package/dist/utils/dependencyExtractor.d.ts.map +1 -1
  1052. package/dist/utils/dependencyExtractor.js +28 -1
  1053. package/dist/utils/dependencyExtractor.js.map +1 -1
  1054. package/dist/utils/errorMessage.d.ts +10 -0
  1055. package/dist/utils/errorMessage.d.ts.map +1 -0
  1056. package/dist/utils/errorMessage.js +12 -0
  1057. package/dist/utils/errorMessage.js.map +1 -0
  1058. package/dist/utils/fileDiscovery.d.ts +61 -2
  1059. package/dist/utils/fileDiscovery.d.ts.map +1 -1
  1060. package/dist/utils/fileDiscovery.js +131 -23
  1061. package/dist/utils/fileDiscovery.js.map +1 -1
  1062. package/dist/utils/reactDetection.d.ts +34 -5
  1063. package/dist/utils/reactDetection.d.ts.map +1 -1
  1064. package/dist/utils/reactDetection.js +73 -52
  1065. package/dist/utils/reactDetection.js.map +1 -1
  1066. package/dist/version.generated.d.ts +1 -1
  1067. package/dist/version.generated.js +1 -1
  1068. package/dist/workers/auditWorker.js +7 -3
  1069. package/dist/workers/auditWorker.js.map +1 -1
  1070. package/examples/.auditrc.example.json +0 -8
  1071. package/examples/.auditrc.json +0 -11
  1072. package/examples/.code-auditor.json +0 -2
  1073. package/examples/nextjs.auditrc.json +0 -8
  1074. package/examples/node-api.auditrc.json +0 -7
  1075. package/examples/react.auditrc.json +0 -6
  1076. package/examples/tolerant-solid.auditrc.json +0 -5
  1077. package/package.json +18 -9
  1078. package/plugin/.claude-plugin/manifest.json +16 -0
  1079. package/plugin/.claude-plugin/plugin.json +1 -1
  1080. package/plugin/hooks/hooks.json +7 -3
  1081. package/plugin/scripts/hook-audit.sh +46 -16
  1082. package/plugin/scripts/hook-common.sh +81 -12
  1083. package/plugin/scripts/hook-drift-check.sh +76 -0
  1084. package/plugin/scripts/hook-self-audit.sh +22 -14
  1085. package/plugin/scripts/hook-warm.sh +5 -6
  1086. package/plugin/skills/code-auditor/SKILL.md +1 -1
  1087. package/server.json +10 -4
@@ -0,0 +1,1030 @@
1
+ /**
2
+ * Spec 68 §3.1 — one producer per (fact kind, format), enforced by a nested
3
+ * mapped type.
4
+ *
5
+ * `ProducerMap` is a mapped type over {@link FileFactKind}, and for each kind a
6
+ * second mapped type over that kind's {@link SupplyingFormats} — exhaustive by
7
+ * construction in both axes. A file fact kind with no entry (or a format named
8
+ * in `SupplyingFormats` with no producer) fails the type (residue check #1 in
9
+ * checks.ts); a second producer for one (kind, format) is a duplicate object
10
+ * key (single-producer check). There is no list to be omitted from — which is
11
+ * the defect class Spec 68 §0, row 2 exists to remove.
12
+ *
13
+ * The split is the fix for the naming rule in its second form: a fact kind is a
14
+ * *concept*, not a language. `file-symbols` is supplied by three formats that
15
+ * all run one format-agnostic extractor, so it has three (kind, format) entries
16
+ * sharing a `process`; a future `channel-operations` would have a `go`, a
17
+ * `rust` and a `typescript` entry with *different* extractors. A corpus
18
+ * processor (a derived fact, no format) lives in {@link CORPUS_PRODUCERS}, not
19
+ * here — the DAG (§5) walks that map's `needs` edges.
20
+ *
21
+ * Only kinds with a producer that returns *real* data appear. A planned kind
22
+ * without a working producer is absent from {@link FactShapes} and from these
23
+ * maps by construction; the migration map (spec68-rule-migration-map.md) holds
24
+ * the plan, the type holds only what runs.
25
+ */
26
+ import { countOracle, noOracle, countFileSymbols, countImports, countExportForm, countExportSymbols, countFunctionIndex, countStringLiterals, countCrossLanguageEntities, countCodeBlocks, countFileImports, countJsxElements, countBatchFunctions, countGoImports, countGoFunctions, countGoSwitches, countTypeDeclarations, countGoPackageBindings, countSchemaObjects, countDdlOps, countCssDeclarations, countSecretCandidates, countSecurityCandidates, countDataAccessCalls, countLoopQueries, countDynamicSql, countQuerySites, countSchemaUsage, measuredDdlOps, measuredStyleDeclarations, measuredJsxElements, measuredFileImports, measuredGoPackageBindings, measuredQuerySites, measuredSchemaUsageCandidates, } from './oracles.js';
27
+ import { extractFileSymbols } from './fileSymbols.js';
28
+ import { extractFunctionIndex } from './functionIndex.js';
29
+ import { extractQuerySiteCandidates } from './querySiteCandidates.js';
30
+ import { extractReactComponents } from './reactComponents.js';
31
+ import { extractFileHeader } from './fileHeader.js';
32
+ import { extractCodeBlocks } from './codeBlocks.js';
33
+ import { extractBatchFunctions } from './batchFunctions.js';
34
+ import { extractJsonDocument } from './jsonDocument.js';
35
+ import { buildSchemaValidations } from './schemaValidations.js';
36
+ import { extractImports } from './imports.js';
37
+ import { extractImportSpecifiers } from './importSpecifiers.js';
38
+ import { extractExportSymbols } from './exportSymbols.js';
39
+ import { extractExportForm } from './exportForm.js';
40
+ import { extractImportForm } from './importForm.js';
41
+ import { extractStringLiterals } from './stringLiterals.js';
42
+ import { extractSecretCandidates } from './secretCandidates.js';
43
+ import { extractSecurityCandidates } from './securityCandidates.js';
44
+ import { extractStylesCss } from './stylesCss.js';
45
+ import { extractStylesSource } from './stylesSource.js';
46
+ import { extractStylesMarkup } from './stylesMarkup.js';
47
+ import { extractDataAccessCallCandidates } from './dataAccessCallsCandidates.js';
48
+ import { extractLoopQueryRawCandidates } from './loopQueryCandidates.js';
49
+ import { extractDynamicSql } from './dynamicSql.js';
50
+ import { extractSchemaUsageCandidates } from './schemaUsageCandidates.js';
51
+ import { extractSchemaCode } from './schemaCode.js';
52
+ import { extractSchemaObjects } from './schemaObjects.js';
53
+ import { extractCrossLanguageEntities } from '../pipelineAdapters.js';
54
+ import { getLanguageFromPath } from '../utils/fileDiscovery.js';
55
+ import { mineConventionsFromFunctionIndex } from './conventionMining.js';
56
+ import { replayDdlDeclarations } from '../analyzers/universal/schema/migrations.js';
57
+ import { extractFileImports } from './fileImports.js';
58
+ import { extractTypeDeclarations } from './typeDeclarations.js';
59
+ import { extractGoFunctions } from './goFunctions.js';
60
+ import { extractGoSwitches } from './goSwitches.js';
61
+ import { extractGoImports } from './goImports.js';
62
+ import { extractGoPackageBindings } from './goPackageBindings.js';
63
+ import { extractWithinFileProvenance, evidenceToFact } from './withinFileProvenance.js';
64
+ import { extractReceiverActivity } from './receiverActivity.js';
65
+ import { computeReceiverProvenance } from './receiverProvenance.js';
66
+ import { classifyQuerySites, classifySchemaUsage, classifyDataAccessCalls, classifyLoopQueries } from './receiverConsumers.js';
67
+ import { extractErrorBindings, extractConcurrencyPrimitives, extractChannelOperations } from './goFunctionAnalysis.js';
68
+ import { computeReachability } from './reachability.js';
69
+ import { DEFAULT_VIRTUAL_MODULES } from '../graph/importClassification.js';
70
+ import { parseColorToRGB, rgbToLab } from './colorMath.js';
71
+ /** Build one (kind, format) file-producer entry from a shared extractor. */
72
+ function fileProducer(kind, format, process, oracle) {
73
+ return { id: `${kind}.${format}`, produces: kind, format, process, oracle };
74
+ }
75
+ // The seven per-file extractors, hoisted so each (kind, format) entry reuses the
76
+ // one format-agnostic `process` for the formats that share an adapter. Every
77
+ // AST-reading extractor narrows `ParsedFile` to `AstFile`: the ProducerMap type
78
+ // only ever registers these under adapter-backed formats (a `sql` key exists on
79
+ // `ddl-declarations` alone, and `extractSchemaCode` reads `.source`, not the
80
+ // AST), so the cast is the one boundary where a text-only file cannot reach an
81
+ // AST consumer.
82
+ const fileSymbolsProcess = (file) => extractFileSymbols(file);
83
+ const functionIndexProcess = (file) => extractFunctionIndex(file);
84
+ const querySiteCandidatesProcess = (file) => extractQuerySiteCandidates(file);
85
+ const importsProcess = (file) => extractImports(file);
86
+ const importSpecifiersProcess = (file) => extractImportSpecifiers(file);
87
+ const exportSymbolsProcess = (file) => extractExportSymbols(file);
88
+ const exportFormProcess = (file) => extractExportForm(file);
89
+ const importFormProcess = (file) => extractImportForm(file);
90
+ const stringLiteralsProcess = (file) => extractStringLiterals(file);
91
+ const secretCandidatesProcess = (file) => extractSecretCandidates(file);
92
+ const securityCandidatesProcess = (file) => extractSecurityCandidates(file);
93
+ const ddlProcess = (file) => extractSchemaCode(file);
94
+ const schemaUsageCandidatesProcess = (file) => extractSchemaUsageCandidates(file);
95
+ const schemaObjectsProcess = (file) => extractSchemaObjects(file);
96
+ const styleProcess = (file) => [extractStylesCss(file)];
97
+ const styleSourceProcess = (file) => extractStylesSource(file);
98
+ const styleMarkupProcess = (file) => extractStylesMarkup(file);
99
+ const crossLangProcess = (file) => extractCrossLanguageEntities(file.ast, file.file, file.source, getLanguageFromPath(file.file));
100
+ const dataAccessCandidatesProcess = (file) => extractDataAccessCallCandidates(file);
101
+ const loopQueryCandidatesProcess = (file) => extractLoopQueryRawCandidates(file);
102
+ const dynamicSqlProcess = (file) => extractDynamicSql(file);
103
+ const reactComponentProcess = (file) => [extractReactComponents(file)];
104
+ const fileHeaderProcess = (file) => extractFileHeader(file);
105
+ const codeBlockProcess = (file) => extractCodeBlocks(file);
106
+ const jsonDocumentProcess = (file) => extractJsonDocument(file);
107
+ const fileImportsProcess = (file) => [extractFileImports(file.ast, file.file, file.source, getLanguageFromPath(file.file))];
108
+ const typeDeclarationsProcess = (file) => extractTypeDeclarations(file);
109
+ const goFunctionsProcess = (file) => extractGoFunctions(file);
110
+ const goSwitchesProcess = (file) => extractGoSwitches(file);
111
+ const goImportsProcess = (file) => extractGoImports(file);
112
+ const goPackageBindingsProcess = (file) => extractGoPackageBindings(file);
113
+ const withinFileProvenanceProcess = (file) => extractWithinFileProvenance(file);
114
+ const receiverActivityProcess = (file) => extractReceiverActivity(file);
115
+ const errorBindingsProcess = (file) => extractErrorBindings(file);
116
+ const concurrencyPrimitivesProcess = (file) => extractConcurrencyPrimitives(file);
117
+ const channelOperationsProcess = (file) => extractChannelOperations(file);
118
+ const batchFunctionsProcess = (file) => extractBatchFunctions(file);
119
+ // ── Spec 69 R1 — the `none` residues (every one enumerated in the run, criterion 3) ──
120
+ // The R1 correction re-examined every `none` against an *upper-bound* bar, not an
121
+ // exact-count bar: an oracle that over-counts is still an oracle, because the
122
+ // residual is pinned and a movement in it is the signal (the `batch-functions`
123
+ // / `countCssDeclarations` precedent). That converted all 22 of the old
124
+ // CLASSIFICATION/GATED `none`s to coarse counted oracles — "no exact counter"
125
+ // and "the residual drowns the signal" were judgements, not measurements, and
126
+ // the aggregate gate pins `actual` exactly so any producer regression shows
127
+ // regardless of residual size. The split is now 80 counted / 15 none.
128
+ // • STYLE_SOURCE / STYLE_MARKUP — the declaration unit is the *expansion* of a
129
+ // union of source mechanisms (Tailwind utility classes, inline-style object
130
+ // pairs, CSS-in-JS templates). Tailwind-utility and shorthand expansion make
131
+ // the emitted declaration count exceed any cheap count of source syntactic
132
+ // features, so no source-feature count upper-bounds it (a class token expands
133
+ // to ≥1 declaration; `margin: 4px` to 4). Any cheap count would *under*-bound
134
+ // and never fire — a dead oracle, not a noisy one. This is a genuine `none`:
135
+ // not "no exact counter" but "no cheap *upper* bound exists".
136
+ // • SINGLE_OBJECT — the producer emits exactly one fragment per file
137
+ // (null-or-value), so there is no partial-extraction failure mode for an
138
+ // oracle to guard: a count of 1 against 1 is the empty oracle.
139
+ const STYLE_SOURCE = noOracle('declarations are the expansion of a union of source mechanisms (Tailwind utility classes, inline-style object pairs, CSS-in-JS templates); Tailwind-utility and shorthand expansion make the emitted count exceed any cheap count of source features, so every cheap count under-bounds and would never fire a shortfall');
140
+ const STYLE_MARKUP = noOracle('declarations are extracted by regex over markup source with no AST and are the expansion of class/style/block mechanisms; Tailwind-utility and shorthand expansion make the emitted count exceed any cheap count of source features, so every cheap count under-bounds and would never fire a shortfall');
141
+ const SINGLE_OBJECT = noOracle('emits exactly one fragment per file (null-or-value); there is no partial-extraction failure mode to guard, so a count of 1 against 1 is the empty oracle');
142
+ const WITHIN_FILE_PROVENANCE = noOracle('projects several distinct node families (imports, six function-node types, three class-node types, four propagation-rule node shapes) into six heterogeneous lists, and one named function node contributes to three of them at once (wrapper, returning, local-function) — so no cheap node-type count upper-bounds the total unit count without a weighted per-family multiplier, and any unweighted count either under-bounds (a dead oracle) or counts a different unit (total nodes) than the R1 "same unit" rule allows; the fact is an intermediate projection whose completeness is pinned byte-for-byte by the corpus-level parity assertion against resolveCorpusReceivers, which is the stronger guard');
143
+ export const PRODUCERS = {
144
+ 'file-symbols': {
145
+ typescript: fileProducer('file-symbols', 'typescript', fileSymbolsProcess, countOracle(countFileSymbols)),
146
+ tsx: fileProducer('file-symbols', 'tsx', fileSymbolsProcess, countOracle(countFileSymbols)),
147
+ javascript: fileProducer('file-symbols', 'javascript', fileSymbolsProcess, countOracle(countFileSymbols)),
148
+ },
149
+ 'function-index': {
150
+ typescript: fileProducer('function-index', 'typescript', functionIndexProcess, countOracle(countFunctionIndex)),
151
+ tsx: fileProducer('function-index', 'tsx', functionIndexProcess, countOracle(countFunctionIndex)),
152
+ javascript: fileProducer('function-index', 'javascript', functionIndexProcess, countOracle(countFunctionIndex)),
153
+ },
154
+ // Spec 70 Item 4 (step 3) — the un-gated per-file query-site candidates. The
155
+ // `query-sites` corpus producer re-applies the file gate once the
156
+ // `receiver-provenance` fixed point supplies the cross-file seed. Emits one
157
+ // fragment per TS-family file (null-or-value) carrying the located `sites`
158
+ // array, so the oracle counts the site units inside it: `countQuerySites` is
159
+ // the same every-member-call + every-SQL-keyword upper bound the resolved
160
+ // producer used, measured as the summed `sites.length` — not the fragment
161
+ // count (which would be a 1-against-1 empty oracle).
162
+ 'query-site-candidates': {
163
+ typescript: fileProducer('query-site-candidates', 'typescript', querySiteCandidatesProcess, countOracle(countQuerySites, measuredQuerySites)),
164
+ tsx: fileProducer('query-site-candidates', 'tsx', querySiteCandidatesProcess, countOracle(countQuerySites, measuredQuerySites)),
165
+ javascript: fileProducer('query-site-candidates', 'javascript', querySiteCandidatesProcess, countOracle(countQuerySites, measuredQuerySites)),
166
+ },
167
+ 'imports': {
168
+ typescript: fileProducer('imports', 'typescript', importsProcess, countOracle(countImports)),
169
+ tsx: fileProducer('imports', 'tsx', importsProcess, countOracle(countImports)),
170
+ javascript: fileProducer('imports', 'javascript', importsProcess, countOracle(countImports)),
171
+ go: fileProducer('imports', 'go', goImportsProcess, countOracle(countGoImports)),
172
+ },
173
+ 'import-specifiers': {
174
+ typescript: fileProducer('import-specifiers', 'typescript', importSpecifiersProcess, countOracle(countImports)),
175
+ tsx: fileProducer('import-specifiers', 'tsx', importSpecifiersProcess, countOracle(countImports)),
176
+ javascript: fileProducer('import-specifiers', 'javascript', importSpecifiersProcess, countOracle(countImports)),
177
+ },
178
+ 'export-symbols': {
179
+ typescript: fileProducer('export-symbols', 'typescript', exportSymbolsProcess, countOracle(countExportSymbols)),
180
+ tsx: fileProducer('export-symbols', 'tsx', exportSymbolsProcess, countOracle(countExportSymbols)),
181
+ javascript: fileProducer('export-symbols', 'javascript', exportSymbolsProcess, countOracle(countExportSymbols)),
182
+ },
183
+ 'export-form': {
184
+ typescript: fileProducer('export-form', 'typescript', exportFormProcess, countOracle(countExportForm)),
185
+ tsx: fileProducer('export-form', 'tsx', exportFormProcess, countOracle(countExportForm)),
186
+ javascript: fileProducer('export-form', 'javascript', exportFormProcess, countOracle(countExportForm)),
187
+ },
188
+ 'import-form': {
189
+ typescript: fileProducer('import-form', 'typescript', importFormProcess, countOracle(countImports)),
190
+ tsx: fileProducer('import-form', 'tsx', importFormProcess, countOracle(countImports)),
191
+ javascript: fileProducer('import-form', 'javascript', importFormProcess, countOracle(countImports)),
192
+ },
193
+ 'string-literals': {
194
+ typescript: fileProducer('string-literals', 'typescript', stringLiteralsProcess, countOracle(countStringLiterals)),
195
+ tsx: fileProducer('string-literals', 'tsx', stringLiteralsProcess, countOracle(countStringLiterals)),
196
+ javascript: fileProducer('string-literals', 'javascript', stringLiteralsProcess, countOracle(countStringLiterals)),
197
+ },
198
+ 'secret-candidates': {
199
+ typescript: fileProducer('secret-candidates', 'typescript', secretCandidatesProcess, countOracle(countSecretCandidates)),
200
+ tsx: fileProducer('secret-candidates', 'tsx', secretCandidatesProcess, countOracle(countSecretCandidates)),
201
+ javascript: fileProducer('secret-candidates', 'javascript', secretCandidatesProcess, countOracle(countSecretCandidates)),
202
+ },
203
+ 'security-candidates': {
204
+ typescript: fileProducer('security-candidates', 'typescript', securityCandidatesProcess, countOracle(countSecurityCandidates)),
205
+ tsx: fileProducer('security-candidates', 'tsx', securityCandidatesProcess, countOracle(countSecurityCandidates)),
206
+ javascript: fileProducer('security-candidates', 'javascript', securityCandidatesProcess, countOracle(countSecurityCandidates)),
207
+ },
208
+ // `ddl-declarations` was `schema-code`: DDL declarations parsed from code.
209
+ // `sql` is the text-only supplier — the whole file is DDL (a migration), so
210
+ // the same extractor runs over `.source` (it never reads the AST).
211
+ 'ddl-declarations': {
212
+ typescript: fileProducer('ddl-declarations', 'typescript', ddlProcess, countOracle(countDdlOps, measuredDdlOps)),
213
+ tsx: fileProducer('ddl-declarations', 'tsx', ddlProcess, countOracle(countDdlOps, measuredDdlOps)),
214
+ javascript: fileProducer('ddl-declarations', 'javascript', ddlProcess, countOracle(countDdlOps, measuredDdlOps)),
215
+ sql: fileProducer('ddl-declarations', 'sql', ddlProcess, countOracle(countDdlOps, measuredDdlOps)),
216
+ },
217
+ // Spec 70 Item 4 (step 3) — the un-gated per-file schema-usage candidates. The
218
+ // `schema-usage` corpus producer re-applies the file gate and re-admits the
219
+ // provenance-dependent references once the `receiver-provenance` fixed point
220
+ // supplies the cross-file seed. Emits one fragment per TS-family file
221
+ // (null-or-value) carrying the five candidate arrays, so the oracle counts the
222
+ // candidate units inside it: `countSchemaUsage` is the same call+string+
223
+ // template upper bound the resolved producer used, measured as the summed
224
+ // candidate lengths — not the fragment count (which would be a 1-against-1
225
+ // empty oracle).
226
+ 'schema-usage-candidates': {
227
+ typescript: fileProducer('schema-usage-candidates', 'typescript', schemaUsageCandidatesProcess, countOracle(countSchemaUsage, measuredSchemaUsageCandidates)),
228
+ tsx: fileProducer('schema-usage-candidates', 'tsx', schemaUsageCandidatesProcess, countOracle(countSchemaUsage, measuredSchemaUsageCandidates)),
229
+ javascript: fileProducer('schema-usage-candidates', 'javascript', schemaUsageCandidatesProcess, countOracle(countSchemaUsage, measuredSchemaUsageCandidates)),
230
+ },
231
+ // `schema-objects` — ORM `const <id> = pgTable('name', …)` bindings, the
232
+ // identifier → SQL-name half of the known-table catalog's alias map. Text-only
233
+ // projection (no AST), like `ddl-declarations`, so it reads `ParsedFile`.
234
+ 'schema-objects': {
235
+ typescript: fileProducer('schema-objects', 'typescript', schemaObjectsProcess, countOracle(countSchemaObjects)),
236
+ tsx: fileProducer('schema-objects', 'tsx', schemaObjectsProcess, countOracle(countSchemaObjects)),
237
+ javascript: fileProducer('schema-objects', 'javascript', schemaObjectsProcess, countOracle(countSchemaObjects)),
238
+ },
239
+ // `style-declarations` was `styles-css` (named for the declaration, not the format).
240
+ 'style-declarations': {
241
+ css: fileProducer('style-declarations', 'css', styleProcess, countOracle(countCssDeclarations, measuredStyleDeclarations)),
242
+ scss: fileProducer('style-declarations', 'scss', styleProcess, countOracle(countCssDeclarations, measuredStyleDeclarations)),
243
+ typescript: fileProducer('style-declarations', 'typescript', styleSourceProcess, STYLE_SOURCE),
244
+ tsx: fileProducer('style-declarations', 'tsx', styleSourceProcess, STYLE_SOURCE),
245
+ javascript: fileProducer('style-declarations', 'javascript', styleSourceProcess, STYLE_SOURCE),
246
+ markup: fileProducer('style-declarations', 'markup', styleMarkupProcess, STYLE_MARKUP),
247
+ },
248
+ 'cross-language-entities': {
249
+ typescript: fileProducer('cross-language-entities', 'typescript', crossLangProcess, countOracle(countCrossLanguageEntities)),
250
+ tsx: fileProducer('cross-language-entities', 'tsx', crossLangProcess, countOracle(countCrossLanguageEntities)),
251
+ javascript: fileProducer('cross-language-entities', 'javascript', crossLangProcess, countOracle(countCrossLanguageEntities)),
252
+ go: fileProducer('cross-language-entities', 'go', crossLangProcess, countOracle(countCrossLanguageEntities)),
253
+ },
254
+ // Spec 70 Item 4 (step 3) — the raw, provenance-free candidate half of the
255
+ // `data-access-calls` collapse. Extracted while the AST lives on the
256
+ // empty-provenance scan; the corpus `data-access-calls` producer re-folds the
257
+ // provenance-dependent half (handle verdict → admission + injection gate, site
258
+ // dialect → SQL parse) once the `receiver-provenance` fixed point supplies the
259
+ // seed. The oracle is the same `call_expression` + `template_string` upper bound
260
+ // the resolved-call producer used: every candidate is a call or a tagged
261
+ // template (a variable-assignment candidate is a `variable_declaration`, the same
262
+ // residual the old producer carried).
263
+ 'data-access-calls-candidates': {
264
+ typescript: fileProducer('data-access-calls-candidates', 'typescript', dataAccessCandidatesProcess, countOracle(countDataAccessCalls)),
265
+ tsx: fileProducer('data-access-calls-candidates', 'tsx', dataAccessCandidatesProcess, countOracle(countDataAccessCalls)),
266
+ javascript: fileProducer('data-access-calls-candidates', 'javascript', dataAccessCandidatesProcess, countOracle(countDataAccessCalls)),
267
+ go: fileProducer('data-access-calls-candidates', 'go', dataAccessCandidatesProcess, countOracle(countDataAccessCalls)),
268
+ },
269
+ // Spec 70 Item 4 (step 3) — the raw, provenance-free candidate half of the
270
+ // `loop-queries` collapse. No dedup and no symbol happen here (both depend on
271
+ // the re-folded handle set); the corpus `loop-queries` producer re-folds the
272
+ // strict-handle filter, dedups by loop byte-offset, and assigns the symbol.
273
+ 'loop-query-candidates': {
274
+ typescript: fileProducer('loop-query-candidates', 'typescript', loopQueryCandidatesProcess, countOracle(countLoopQueries)),
275
+ tsx: fileProducer('loop-query-candidates', 'tsx', loopQueryCandidatesProcess, countOracle(countLoopQueries)),
276
+ javascript: fileProducer('loop-query-candidates', 'javascript', loopQueryCandidatesProcess, countOracle(countLoopQueries)),
277
+ },
278
+ 'dynamic-sql': {
279
+ typescript: fileProducer('dynamic-sql', 'typescript', dynamicSqlProcess, countOracle(countDynamicSql)),
280
+ tsx: fileProducer('dynamic-sql', 'tsx', dynamicSqlProcess, countOracle(countDynamicSql)),
281
+ javascript: fileProducer('dynamic-sql', 'javascript', dynamicSqlProcess, countOracle(countDynamicSql)),
282
+ },
283
+ 'react-component': {
284
+ typescript: fileProducer('react-component', 'typescript', reactComponentProcess, countOracle(countJsxElements, measuredJsxElements)),
285
+ tsx: fileProducer('react-component', 'tsx', reactComponentProcess, countOracle(countJsxElements, measuredJsxElements)),
286
+ javascript: fileProducer('react-component', 'javascript', reactComponentProcess, countOracle(countJsxElements, measuredJsxElements)),
287
+ },
288
+ 'file-header': {
289
+ typescript: fileProducer('file-header', 'typescript', fileHeaderProcess, SINGLE_OBJECT),
290
+ tsx: fileProducer('file-header', 'tsx', fileHeaderProcess, SINGLE_OBJECT),
291
+ javascript: fileProducer('file-header', 'javascript', fileHeaderProcess, SINGLE_OBJECT),
292
+ },
293
+ 'code-block': {
294
+ typescript: fileProducer('code-block', 'typescript', codeBlockProcess, countOracle(countCodeBlocks)),
295
+ tsx: fileProducer('code-block', 'tsx', codeBlockProcess, countOracle(countCodeBlocks)),
296
+ javascript: fileProducer('code-block', 'javascript', codeBlockProcess, countOracle(countCodeBlocks)),
297
+ },
298
+ // `json-document` was the Amendment-1 "json is a format" producer: a `.json`
299
+ // file's parsed value, read for the `schema-validations` corpus reduction.
300
+ // It reads `.source` only (the JsonAdapter has no code constructs), so it
301
+ // takes `ParsedFile`, not `AstFile` — like the text-only `sql` DDL producer.
302
+ 'json-document': {
303
+ json: fileProducer('json-document', 'json', jsonDocumentProcess, SINGLE_OBJECT),
304
+ },
305
+ 'file-imports': {
306
+ typescript: fileProducer('file-imports', 'typescript', fileImportsProcess, countOracle(countFileImports, measuredFileImports)),
307
+ tsx: fileProducer('file-imports', 'tsx', fileImportsProcess, countOracle(countFileImports, measuredFileImports)),
308
+ javascript: fileProducer('file-imports', 'javascript', fileImportsProcess, countOracle(countFileImports, measuredFileImports)),
309
+ go: fileProducer('file-imports', 'go', fileImportsProcess, countOracle(countFileImports, measuredFileImports)),
310
+ },
311
+ // §9 — Go named struct/interface declarations, served only for the `go`
312
+ // format (the Go grammar is the only supplier). `struct-size` and the Go arm
313
+ // of `interface-size` read it.
314
+ 'type-declarations': {
315
+ go: fileProducer('type-declarations', 'go', typeDeclarationsProcess, countOracle(countTypeDeclarations)),
316
+ },
317
+ // §9 — Go function metrics + switch case counts, served only for the `go`
318
+ // format. `function-size` + `liskov-substitution` read `go-functions`;
319
+ // `switch-size` reads `go-switches`.
320
+ 'go-functions': {
321
+ go: fileProducer('go-functions', 'go', goFunctionsProcess, countOracle(countGoFunctions)),
322
+ },
323
+ 'go-switches': {
324
+ go: fileProducer('go-switches', 'go', goSwitchesProcess, countOracle(countGoSwitches)),
325
+ },
326
+ // §9 — the three function-level Go producers (error-binding positions,
327
+ // goroutine-synchronization signal, channel-operation counts). `error-handling`
328
+ // reads `error-bindings`; `concurrency` reads `concurrency-primitives`;
329
+ // `channel-deadlock` reads `channel-operations`.
330
+ 'error-bindings': {
331
+ go: fileProducer('error-bindings', 'go', errorBindingsProcess, countOracle(countGoFunctions)),
332
+ },
333
+ 'concurrency-primitives': {
334
+ go: fileProducer('concurrency-primitives', 'go', concurrencyPrimitivesProcess, countOracle(countGoFunctions)),
335
+ },
336
+ 'channel-operations': {
337
+ go: fileProducer('channel-operations', 'go', channelOperationsProcess, countOracle(countGoFunctions)),
338
+ },
339
+ // Spec 70 Item 4 (2a) — the per-file Go package-scope symbol table. The
340
+ // cross-file receiver-provenance fixed point groups these by directory and
341
+ // merges first-wins. The oracle is the *pre-dedup* binding-declaration count
342
+ // (top-level function/method/type/var declarations with a name) — the same
343
+ // number `buildGoFileBindings` emits before its first-wins dedup, which is a
344
+ // no-op within a single valid Go file, so it bounds the deduped
345
+ // `bindings.length` exactly.
346
+ 'go-package-bindings': {
347
+ go: fileProducer('go-package-bindings', 'go', goPackageBindingsProcess, countOracle(countGoPackageBindings, measuredGoPackageBindings)),
348
+ },
349
+ // Spec 70 Item 4 (2a) — the per-file within-file-provenance projection. The
350
+ // extract half of the TS/Go split; the corpus `receiver-provenance` fixed
351
+ // point rehydrates it with no AST. Completeness is pinned by the parity
352
+ // assertion (classify(extract) ≡ compute), not by a per-file node count, so
353
+ // the oracle is a `none` (see WITHIN_FILE_PROVENANCE).
354
+ 'within-file-provenance': {
355
+ typescript: fileProducer('within-file-provenance', 'typescript', withinFileProvenanceProcess, WITHIN_FILE_PROVENANCE),
356
+ tsx: fileProducer('within-file-provenance', 'tsx', withinFileProvenanceProcess, WITHIN_FILE_PROVENANCE),
357
+ javascript: fileProducer('within-file-provenance', 'javascript', withinFileProvenanceProcess, WITHIN_FILE_PROVENANCE),
358
+ go: fileProducer('within-file-provenance', 'go', withinFileProvenanceProcess, WITHIN_FILE_PROVENANCE),
359
+ },
360
+ // Spec 70 Item 4 (step 3) — the per-file receiver-resolution inputs (bindings +
361
+ // R3 sites + DB activity) the corpus-side `dbProvenanced` re-derivation reads.
362
+ // Emits exactly one fragment per TS-family file (null-or-value), so the oracle
363
+ // is the single-object one; completeness is pinned by the corpus parity assertion
364
+ // against `buildProvenanceContext`, not by a per-file count.
365
+ 'receiver-activity': {
366
+ typescript: fileProducer('receiver-activity', 'typescript', receiverActivityProcess, SINGLE_OBJECT),
367
+ tsx: fileProducer('receiver-activity', 'tsx', receiverActivityProcess, SINGLE_OBJECT),
368
+ javascript: fileProducer('receiver-activity', 'javascript', receiverActivityProcess, SINGLE_OBJECT),
369
+ },
370
+ // `batch-functions` — the functions whose full span contains `.batch(` (a
371
+ // Cloudflare D1 / SQLite transaction-batching commit). `multi-table-write`
372
+ // reads it to skip the transaction-boundary flag for batched commits; the
373
+ // producer re-homes the legacy `enclosingFunctionBatches` re-parse.
374
+ 'batch-functions': {
375
+ typescript: fileProducer('batch-functions', 'typescript', batchFunctionsProcess, countOracle(countBatchFunctions)),
376
+ tsx: fileProducer('batch-functions', 'tsx', batchFunctionsProcess, countOracle(countBatchFunctions)),
377
+ javascript: fileProducer('batch-functions', 'javascript', batchFunctionsProcess, countOracle(countBatchFunctions)),
378
+ },
379
+ };
380
+ // ── Corpus producers producing derived facts (no format) ─────────────────────
381
+ // `resolution` and `migration-history` reduce the `ddl-declarations` fact
382
+ // through the ONE shared `replayDdlDeclarations` — so the known-table set and
383
+ // the drop provenance can never disagree about which table a migration dropped.
384
+ // `needs` forms the DAG edges ddl-declarations → {resolution,
385
+ // migration-history}. Corpus producers are a separate map because the
386
+ // (kind, format) key cannot express a derived fact.
387
+ export const CORPUS_PRODUCERS = {
388
+ 'resolution': {
389
+ id: 'resolution',
390
+ produces: 'resolution',
391
+ needs: ['ddl-declarations', 'schema-objects', 'file-symbols'],
392
+ process(facts, ctx) {
393
+ // The known-table set is the *net* set after replaying DDL across files
394
+ // in migration order — a table dropped in a later migration is a stale
395
+ // reference, not a known table. `replayDdlDeclarations` returns that net
396
+ // set with each table's last-CREATE source file, its columns, and its four
397
+ // per-column constraint maps (UNIQUE, PRIMARY KEY, NOT NULL, foreign key)
398
+ // recorded *separately* so PK and natural UNIQUE stay distinguishable.
399
+ const { netTables } = replayDdlDeclarations(facts['ddl-declarations'].map((d) => ({
400
+ filePath: d.file,
401
+ ops: d.ops,
402
+ tableColumns: d.tableColumns,
403
+ uniqueColumns: d.uniqueColumns,
404
+ primaryKeyColumns: d.primaryKeyColumns,
405
+ notNullColumns: d.notNullColumns,
406
+ foreignKeys: d.foreignKeys,
407
+ })));
408
+ const tables = netTables.map((t) => {
409
+ const pk = new Set(t.primaryKeyColumns.map((c) => c.toLowerCase()));
410
+ const uniq = new Set(t.uniqueColumns.map((c) => c.toLowerCase()));
411
+ const nn = new Set(t.notNullColumns.map((c) => c.toLowerCase()));
412
+ const fk = new Map();
413
+ for (const ref of t.foreignKeys) {
414
+ if (!fk.has(ref.column.toLowerCase()))
415
+ fk.set(ref.column.toLowerCase(), { table: ref.refTable, column: ref.refColumn });
416
+ }
417
+ const columns = t.columns.map((c) => ({
418
+ name: c,
419
+ primaryKey: pk.has(c.toLowerCase()),
420
+ unique: uniq.has(c.toLowerCase()),
421
+ notNull: nn.has(c.toLowerCase()),
422
+ foreignKey: fk.get(c.toLowerCase()) ?? null,
423
+ }));
424
+ return { name: t.name, source: t.source, columns };
425
+ });
426
+ // §5 parity: merge the config-declared external tables the legacy schema
427
+ // reducer added to the known-table set (`knownTables` + `schemas`). Without
428
+ // them a config-only schema is a 0-table catalog and `unknown-table`'s
429
+ // fail-open guard silently never fires — exactly the sql-cte regression.
430
+ // Config-declared tables carry no column metadata, so no constraints.
431
+ for (const t of ctx?.externalTables ?? []) {
432
+ tables.push({
433
+ name: t.name,
434
+ source: t.source,
435
+ columns: t.columns.map((c) => ({ name: c, primaryKey: false, unique: false, notNull: false, foreignKey: null })),
436
+ });
437
+ }
438
+ // The ORM schema-object alias map: `.from(sampleOwnership)` names the JS
439
+ // identifier, not the SQL table. Resolve it through the pgTable/mysqlTable/
440
+ // sqliteTable bindings so a query referencing a schema object reaches the
441
+ // catalog entry (and Tier-3 tenancy) the identifier declares. The `.unique()`
442
+ // and `.primaryKey()` markers are merged into the matching table's columns
443
+ // as *separate* `unique` / `primaryKey` flags (both JS and SQL spelling), so
444
+ // the natural-UNIQUE quiet set and the PK surface never collapse into one.
445
+ const aliases = {};
446
+ for (const obj of facts['schema-objects']) {
447
+ if (!(obj.identifier in aliases))
448
+ aliases[obj.identifier] = obj.table;
449
+ const entry = tables.find((t) => t.name === obj.table);
450
+ if (!entry)
451
+ continue;
452
+ const merged = [...entry.columns];
453
+ for (const name of obj.uniqueColumns) {
454
+ const key = name.toLowerCase();
455
+ const existing = merged.find((c) => c.name.toLowerCase() === key);
456
+ if (existing)
457
+ existing.unique = true;
458
+ else
459
+ merged.push({ name, primaryKey: false, unique: true, notNull: false, foreignKey: null });
460
+ }
461
+ for (const name of obj.primaryKeyColumns) {
462
+ const key = name.toLowerCase();
463
+ const existing = merged.find((c) => c.name.toLowerCase() === key);
464
+ if (existing)
465
+ existing.primaryKey = true;
466
+ else
467
+ merged.push({ name, primaryKey: true, unique: false, notNull: false, foreignKey: null });
468
+ }
469
+ entry.columns = merged;
470
+ }
471
+ // Class/interface declarations → what they extend/implements, resolved in
472
+ // repo (Spec 69 R3 criterion 7c). `open-closed` reads these instead of
473
+ // walking the `file-symbols` classes itself.
474
+ const classes = [];
475
+ const interfaces = [];
476
+ for (const sym of facts['file-symbols']) {
477
+ if (sym.kind === 'class') {
478
+ classes.push({
479
+ name: sym.name,
480
+ file: sym.file,
481
+ extends: sym.extends ?? null,
482
+ implements: [...(sym.implements ?? [])],
483
+ });
484
+ }
485
+ else if (sym.kind === 'interface') {
486
+ interfaces.push({ name: sym.name, file: sym.file, extends: [...(sym.extends ?? [])] });
487
+ }
488
+ }
489
+ return { tables, aliases, classes, interfaces };
490
+ },
491
+ },
492
+ // `migration-history` reduces the DDL declarations into the cross-file drop
493
+ // provenance (dropped-table → dropping migration + what it created). `needs`
494
+ // forms the DAG edge ddl-declarations → migration-history, parallel to
495
+ // resolution. The provenance is the same `replayDdlDeclarations` pass the
496
+ // legacy schema reducer ran, so `stale-table-reference` parity holds by
497
+ // construction — the phase rule reads the same map the reducer did.
498
+ 'migration-history': {
499
+ id: 'migration-history',
500
+ produces: 'migration-history',
501
+ needs: ['ddl-declarations'],
502
+ process(facts) {
503
+ const { dropProvenance } = replayDdlDeclarations(facts['ddl-declarations'].map((d) => ({
504
+ filePath: d.file,
505
+ ops: d.ops,
506
+ tableColumns: d.tableColumns,
507
+ })));
508
+ const dropped = {};
509
+ for (const [table, entry] of dropProvenance) {
510
+ dropped[table] = {
511
+ migrationFile: entry.migrationFile,
512
+ createdInSameMigration: entry.createdInSameMigration,
513
+ };
514
+ }
515
+ return { dropped };
516
+ },
517
+ },
518
+ // `mined-conventions` reduces the function index into the mined-convention
519
+ // set the three function-index-servable convention rules read. `needs` forms
520
+ // the DAG edge function-index → mined-conventions.
521
+ 'mined-conventions': {
522
+ id: 'mined-conventions',
523
+ produces: 'mined-conventions',
524
+ needs: ['function-index', 'export-form', 'import-form'],
525
+ process(facts) {
526
+ return mineConventionsFromFunctionIndex(facts['function-index'], facts['export-form'], facts['import-form']);
527
+ },
528
+ },
529
+ // `schema-validations` reduces the `json-document` fact through the legacy
530
+ // `analyzeJsonSchemas` free function. `needs` forms the DAG edge
531
+ // json-document → schema-validations.
532
+ 'schema-validations': {
533
+ id: 'schema-validations',
534
+ produces: 'schema-validations',
535
+ needs: ['json-document'],
536
+ process(facts) {
537
+ return buildSchemaValidations(facts['json-document']);
538
+ },
539
+ },
540
+ // `color-values` reduces the `style-declarations` fact into the CIELAB-converted
541
+ // color set the `styles/value-drift` rule reads (Spec 69 R4). The conversion —
542
+ // raw string → sRGB → Lab — was the one computation R4 found still living in a
543
+ // rule body; it moves here so the rule's clustering and flagging read
544
+ // pre-computed Lab triples and never re-parse a color. `needs` forms the DAG
545
+ // edge style-declarations → color-values.
546
+ 'color-values': {
547
+ id: 'color-values',
548
+ produces: 'color-values',
549
+ needs: ['style-declarations'],
550
+ process(facts) {
551
+ const out = [];
552
+ for (const f of facts['style-declarations']) {
553
+ for (const d of f.declarations) {
554
+ const rgb = parseColorToRGB(d.rawValue);
555
+ if (!rgb)
556
+ continue;
557
+ out.push({
558
+ property: d.property,
559
+ filePath: d.filePath,
560
+ line: d.line,
561
+ rawValue: d.rawValue,
562
+ normalizedValue: d.normalizedValue ? JSON.stringify(d.normalizedValue) : null,
563
+ rgb,
564
+ lab: rgbToLab(rgb),
565
+ });
566
+ }
567
+ }
568
+ return out;
569
+ },
570
+ },
571
+ // `reachability` reduces the `file-imports` fact into the reverse import
572
+ // adjacency + package entry-point set (§8). It is the one corpus processor
573
+ // that reads the `CorpusContext` — the discovery list, virtual-module list,
574
+ // tsconfig aliases and package.json entry points are corpus-level inputs the
575
+ // per-file fact cannot carry. Defaults mirror the legacy reducer's fallback
576
+ // (corpus = the file-imports set, no aliases, DEFAULT_VIRTUAL_MODULES, no
577
+ // package entries) so the slice tests stay self-contained.
578
+ 'reachability': {
579
+ id: 'reachability',
580
+ produces: 'reachability',
581
+ needs: ['file-imports'],
582
+ process(facts, ctx) {
583
+ const fileImports = facts['file-imports'];
584
+ return computeReachability(fileImports, {
585
+ corpusFiles: new Set(ctx?.corpusFiles ?? fileImports.map((f) => f.file)),
586
+ virtualModules: ctx?.virtualModules ?? DEFAULT_VIRTUAL_MODULES,
587
+ tsconfigAliases: ctx?.tsconfigAliases,
588
+ packageEntryPoints: new Set(ctx?.packageEntryPoints ?? []),
589
+ projectRoot: ctx?.projectRoot ?? '',
590
+ });
591
+ },
592
+ },
593
+ // `call-graph` (§2.2) — the function catalog + call edges the cross-domain
594
+ // rules' depth-1 callee expansion reads. The functions and `callEdges` remain
595
+ // index reads (`functions` + `graph_cache`), per "reading the index is always
596
+ // fine" — re-deriving the edges here from `functionCalls` would turn on the
597
+ // depth-1 expansion during a plain audit (the sync-only `graph_cache` is empty
598
+ // there), moving `multi-table-write`. Only `usedImports` moves (Item 4 2b): it
599
+ // was the one field the index column could not supply without the sync path's
600
+ // second parse, so it now comes from the `function-index` fact, joined by the
601
+ // `(file, name, line)` identity the index conflictKey uses.
602
+ 'call-graph': {
603
+ id: 'call-graph',
604
+ produces: 'call-graph',
605
+ needs: ['function-index'],
606
+ process(facts, ctx) {
607
+ const usedImportsByFn = new Map();
608
+ for (const f of facts['function-index']) {
609
+ usedImportsByFn.set(`${f.file}::${f.name}::${f.line}`, f.usedImports);
610
+ }
611
+ const ih = ctx?.indexHandle;
612
+ if (!ih)
613
+ return { functions: [], callEdges: [] };
614
+ let funcs = [];
615
+ let edges = [];
616
+ try {
617
+ funcs = ih.query('SELECT id, name, file_path, line_number, is_exported FROM functions');
618
+ edges = ih.query("SELECT node_key, neighbor_key FROM graph_cache WHERE graph_type = 'call'");
619
+ }
620
+ catch {
621
+ // `functions`/`graph_cache` may not exist or be unpopulated — degrade.
622
+ }
623
+ const callEdges = [];
624
+ for (const e of edges) {
625
+ const fromId = parseInt(e.node_key, 10);
626
+ const toId = parseInt(e.neighbor_key, 10);
627
+ if (!isNaN(fromId) && !isNaN(toId))
628
+ callEdges.push({ fromId, toId });
629
+ }
630
+ return {
631
+ functions: funcs.map((f) => ({
632
+ id: f.id,
633
+ name: f.name,
634
+ filePath: f.file_path,
635
+ lineNumber: f.line_number ?? null,
636
+ usedImports: usedImportsByFn.get(`${f.file_path}::${f.name}::${f.line_number}`) ?? [],
637
+ isExported: f.is_exported === 1,
638
+ })),
639
+ callEdges,
640
+ };
641
+ },
642
+ },
643
+ // `hotspot` (R4 uncovered-risk) — the `hotspot_scores` rows the uncovered-risk
644
+ // ranking LEFT-JOINs on (target = file_path || ':' || name, type = 'function').
645
+ 'hotspot': {
646
+ id: 'hotspot',
647
+ produces: 'hotspot',
648
+ needs: [],
649
+ process(_facts, ctx) {
650
+ const ih = ctx?.indexHandle;
651
+ if (!ih)
652
+ return [];
653
+ let rows = [];
654
+ try {
655
+ rows = ih.query('SELECT target, type, score FROM hotspot_scores');
656
+ }
657
+ catch {
658
+ // `hotspot_scores` may not exist — degrade to an empty fact.
659
+ }
660
+ return rows.map((r) => ({ target: r.target, type: r.type, score: r.score }));
661
+ },
662
+ },
663
+ // `coverage` (R4 uncovered-risk) — the `coverage_data` identity projection plus
664
+ // the two measured-path metadata reads the legacy `detectMeasuredUncovered`
665
+ // made (source/imported_at LIMIT 1, and `last_full_sync_timestamp` for stale
666
+ // detection). Degrades to an empty fact with no handle.
667
+ 'coverage': {
668
+ id: 'coverage',
669
+ produces: 'coverage',
670
+ needs: [],
671
+ process(_facts, ctx) {
672
+ const ih = ctx?.indexHandle;
673
+ if (!ih)
674
+ return { measuredCount: 0, source: null, importedAt: null, lastFullSync: null, entries: [] };
675
+ try {
676
+ const measuredRow = ih.query("SELECT COUNT(*) AS cnt FROM coverage_data WHERE basis = 'measured'")[0];
677
+ const measuredCount = measuredRow?.cnt ?? 0;
678
+ const sourceRow = ih.query("SELECT source, imported_at FROM coverage_data WHERE basis = 'measured' LIMIT 1")[0];
679
+ const lastFullSync = ih.getMeta?.('last_full_sync_timestamp') ?? null;
680
+ const entries = ih.query('SELECT function_name, file_path, covered FROM coverage_data');
681
+ return {
682
+ measuredCount,
683
+ source: sourceRow?.source ?? null,
684
+ importedAt: sourceRow?.imported_at ?? null,
685
+ lastFullSync,
686
+ entries: entries.map((e) => ({ functionName: e.function_name, filePath: e.file_path, covered: e.covered === 1 })),
687
+ };
688
+ }
689
+ catch {
690
+ return { measuredCount: 0, source: null, importedAt: null, lastFullSync: null, entries: [] };
691
+ }
692
+ },
693
+ },
694
+ // `clone-pair-history` (R5 diverging-clone) — the `dry_pair_history` rows the
695
+ // diverging-clone rule's cross-run pass reads, grouped by fingerprint. The
696
+ // file/line anchors are the most recent row's (ORDER BY timestamp ASC, last
697
+ // wins). Degrades to an empty fact with no handle or an absent table.
698
+ 'clone-pair-history': {
699
+ id: 'clone-pair-history',
700
+ produces: 'clone-pair-history',
701
+ needs: [],
702
+ process(_facts, ctx) {
703
+ const ih = ctx?.indexHandle;
704
+ if (!ih)
705
+ return [];
706
+ let rows = [];
707
+ try {
708
+ rows = ih.query('SELECT pair_fingerprint, file1, file2, line1, line2, similarity, timestamp FROM dry_pair_history ORDER BY pair_fingerprint, timestamp ASC');
709
+ }
710
+ catch {
711
+ // `dry_pair_history` may not exist — degrade to an empty fact.
712
+ }
713
+ const byFingerprint = new Map();
714
+ for (const r of rows) {
715
+ const g = byFingerprint.get(r.pair_fingerprint) ?? { file1: r.file1, file2: r.file2, line1: r.line1, line2: r.line2, rows: [] };
716
+ // Last row in the ASC ordering wins — the most recent measurement's anchors.
717
+ g.file1 = r.file1;
718
+ g.file2 = r.file2;
719
+ g.line1 = r.line1;
720
+ g.line2 = r.line2;
721
+ g.rows.push({ similarity: r.similarity, timestamp: r.timestamp });
722
+ byFingerprint.set(r.pair_fingerprint, g);
723
+ }
724
+ return [...byFingerprint.entries()].map(([fingerprint, g]) => ({
725
+ fingerprint,
726
+ file1: g.file1,
727
+ file2: g.file2,
728
+ line1: g.line1,
729
+ line2: g.line2,
730
+ rows: g.rows,
731
+ }));
732
+ },
733
+ },
734
+ // `defined-classes` (styles/undefined-class) — re-derived from the
735
+ // `style-declarations` phase fact rather than the `style_defined_classes`
736
+ // index table (Item 4 2b: style-declarations → defined-classes). Every writer
737
+ // of `style_defined_classes` (source CSS-in-JS, compiled CSS, other extractable
738
+ // files) derives the class name by the SAME regex `/\.([a-zA-Z0-9_-]+)/g` over
739
+ // the declaration's selector `context`, so the phase fact reproduces the table
740
+ // byte-for-byte: group by class name, keep MIN(file_path). `context`/`filePath`
741
+ // are plain data already on `StylesDeclaration`.
742
+ //
743
+ // Parity notes: (1) the index producer's MIN(file_path) used SQLite BINARY
744
+ // collation (UTF-8 byte order); JS `<` is UTF-16 code-unit order — identical
745
+ // for the ASCII paths these corpora use. (2) The catalog is sorted by
746
+ // `className` so the undefined-class near-miss tie-break (`dist < bestDist`,
747
+ // styles.ts) sees the same iteration order the `GROUP BY class_name` index scan
748
+ // produced (ascending class_name). Membership lookups are order-independent.
749
+ 'defined-classes': {
750
+ id: 'defined-classes',
751
+ produces: 'defined-classes',
752
+ needs: ['style-declarations'],
753
+ process(facts) {
754
+ const byClass = new Map(); // className -> MIN(file_path)
755
+ for (const f of facts['style-declarations']) {
756
+ for (const d of f.declarations) {
757
+ const ctx = d.context;
758
+ if (!ctx)
759
+ continue;
760
+ for (const m of ctx.matchAll(/\.([a-zA-Z0-9_-]+)/g)) {
761
+ const className = m[1];
762
+ const fp = d.filePath;
763
+ const prev = byClass.get(className);
764
+ if (prev === undefined || fp < prev)
765
+ byClass.set(className, fp);
766
+ }
767
+ }
768
+ }
769
+ return [...byClass.entries()]
770
+ .map(([className, filePath]) => ({ className, filePath }))
771
+ .sort((a, b) => (a.className < b.className ? -1 : a.className > b.className ? 1 : 0));
772
+ },
773
+ },
774
+ // `unread-style-sources` (styles/undefined-class) — the content-level
775
+ // `<style lang="…">` reasons, flattened from the markup producer's
776
+ // `style-declarations` fact (`extractStylesMarkup` collects them into each
777
+ // file's `unreadSources` during its `extractDeclarations` pass). One entry per
778
+ // markup file whose embedded style block uses a dialect the regex path cannot
779
+ // read (Spec 45 R5). The rule carries the list as
780
+ // `details.incompleteDefinitions` so "undefined" reads as "not defined in any
781
+ // *read* stylesheet". The walk-level reasons (`.less`/`.styl`/`.sass`
782
+ // dialects, read failures, unknown extensions) are produced by the traverse
783
+ // phase and merged ahead of this in `buildFacts`; this producer contributes
784
+ // only the content-level half. Degrades to an empty fact when no markup file
785
+ // carries an unread embedded block.
786
+ 'unread-style-sources': {
787
+ id: 'unread-style-sources',
788
+ produces: 'unread-style-sources',
789
+ needs: ['style-declarations'],
790
+ process(facts) {
791
+ const seen = new Set();
792
+ const out = [];
793
+ for (const f of facts['style-declarations']) {
794
+ for (const s of f.unreadSources) {
795
+ if (seen.has(s.filePath))
796
+ continue;
797
+ seen.add(s.filePath);
798
+ out.push(s);
799
+ }
800
+ }
801
+ return out;
802
+ },
803
+ },
804
+ // `receiver-provenance` (Spec 70 Item 4, 2a) — the cross-file DB-receiver
805
+ // provenance fixed point, re-derived from the four additive file facts with no
806
+ // AST. This is the phase-side replacement for `resolveCorpusReceivers`'
807
+ // `fileProvenance` + `unresolvedImports` halves. `needs` forms the DAG edges
808
+ // {within-file-provenance, import-specifiers, export-symbols,
809
+ // go-package-bindings} → receiver-provenance. The core (`computeReceiverProvenance`)
810
+ // returns the legacy `FileProvenance`/`FileExports`/`UnresolvedImport` types so
811
+ // the parity assertion can diff it byte-for-byte against `resolveReceiverProvenance`;
812
+ // the fact itself projects only the two consumer-facing halves (`files` +
813
+ // `unresolvedImports`), dropping the Phase-2 `fileExports` intermediate no
814
+ // consumer reads.
815
+ 'receiver-provenance': {
816
+ id: 'receiver-provenance',
817
+ produces: 'receiver-provenance',
818
+ needs: ['within-file-provenance', 'import-specifiers', 'export-symbols', 'go-package-bindings'],
819
+ process(facts, ctx) {
820
+ const { fileProvenance, unresolvedImports } = computeReceiverProvenance(facts['within-file-provenance'], facts['import-specifiers'], facts['export-symbols'], facts['go-package-bindings'], ctx?.projectRoot, ctx?.tsconfigAliases);
821
+ return {
822
+ files: [...fileProvenance.entries()].map(([file, prov]) => ({
823
+ file,
824
+ provenance: [...prov.values()].map(evidenceToFact),
825
+ })),
826
+ unresolvedImports: unresolvedImports.map((u) => ({ importer: u.importer, source: u.source, names: u.names })),
827
+ };
828
+ },
829
+ },
830
+ // Spec 70 Item 4 (step 3) — the first of the four receiver consumers converted
831
+ // to a corpus producer. The legacy `query-sites` producer did two jobs: locate
832
+ // each DB-query site (a provenance-free text + function scan) and gate the file
833
+ // on DB context (`passesFileGate`, which needs the cross-file `dbProvenanced`
834
+ // seed). The collapse splits them: `query-site-candidates` runs the location
835
+ // job un-gated while the AST lives, and this producer re-derives each file's
836
+ // `dbProvenanced` (via `classifyBuildProvenance`) from the `within-file-provenance`
837
+ // extract + the `receiver-provenance` fixed point + the `receiver-activity`
838
+ // inputs, then re-applies the gate. `needs` forms the DAG edges
839
+ // {query-site-candidates, within-file-provenance, receiver-provenance,
840
+ // receiver-activity} → query-sites.
841
+ 'query-sites': {
842
+ id: 'query-sites',
843
+ produces: 'query-sites',
844
+ needs: ['query-site-candidates', 'within-file-provenance', 'receiver-provenance', 'receiver-activity'],
845
+ process(facts, ctx) {
846
+ return classifyQuerySites(facts['query-site-candidates'], facts['within-file-provenance'], facts['receiver-provenance'], facts['receiver-activity'], ctx?.sqlDialect ?? null);
847
+ },
848
+ },
849
+ // Spec 70 Item 4 (step 3) — the second of the four receiver consumers. The
850
+ // legacy `schema-usage` producer ran `findTableReferences` (six strategies) and
851
+ // re-homed each reference. The collapse splits it: `schema-usage-candidates`
852
+ // extracts the provenance-free references (ORM / query-builder /
853
+ // collection-adapter, already re-homed) plus raw tagged/DB-call candidates while
854
+ // the AST lives, and this producer re-derives each file's `dbProvenanced` (via
855
+ // `classifyBuildProvenance`), re-applies the gate, re-admits the two
856
+ // provenance-dependent strategies (`identifyHandle` over the re-derived
857
+ // provenance), and re-homes their references from the projected function +
858
+ // string-fragment spans. `needs` forms the DAG edges {schema-usage-candidates,
859
+ // within-file-provenance, receiver-provenance, receiver-activity} →
860
+ // schema-usage.
861
+ 'schema-usage': {
862
+ id: 'schema-usage',
863
+ produces: 'schema-usage',
864
+ needs: ['schema-usage-candidates', 'within-file-provenance', 'receiver-provenance', 'receiver-activity'],
865
+ process(facts, ctx) {
866
+ return classifySchemaUsage(facts['schema-usage-candidates'], {
867
+ withinFacts: facts['within-file-provenance'],
868
+ provenance: facts['receiver-provenance'],
869
+ activityFacts: facts['receiver-activity'],
870
+ sqlDialect: ctx?.sqlDialect ?? null,
871
+ declaredTypePackages: ctx?.declaredTypePackages,
872
+ ambientInterfaceFields: ctx?.ambientInterfaceFields,
873
+ projectRoot: ctx?.projectRoot,
874
+ tsconfig: ctx?.tsconfigAliases,
875
+ });
876
+ },
877
+ },
878
+ // Spec 70 Item 4 (step 3) — the third of the four receiver consumers. The
879
+ // legacy `data-access-calls` producer did two jobs: extract the resolved DB
880
+ // calls (an AST scan) and fold the provenance-dependent half of
881
+ // `buildDatabaseCall` (the `identifyHandle` admission verdict → the injection
882
+ // gate, and the per-site dialect → the SQL parse) over the cross-file
883
+ // `dbProvenanced` seed. The collapse splits them: `data-access-calls-candidates`
884
+ // extracts the provenance-free half while the AST lives, and this producer
885
+ // re-derives each file's `dbProvenanced` (TS via `classifyBuildProvenance`; Go
886
+ // via the fixed-point seed) and re-folds the discovery filter → line dedup →
887
+ // `buildDatabaseCall` with no AST. `needs` forms the DAG edges
888
+ // {data-access-calls-candidates, within-file-provenance, receiver-provenance,
889
+ // receiver-activity} → data-access-calls.
890
+ 'data-access-calls': {
891
+ id: 'data-access-calls',
892
+ produces: 'data-access-calls',
893
+ needs: ['data-access-calls-candidates', 'within-file-provenance', 'receiver-provenance', 'receiver-activity'],
894
+ process(facts, ctx) {
895
+ return classifyDataAccessCalls(facts['data-access-calls-candidates'], {
896
+ withinFacts: facts['within-file-provenance'],
897
+ provenance: facts['receiver-provenance'],
898
+ activityFacts: facts['receiver-activity'],
899
+ sqlDialect: ctx?.sqlDialect ?? null,
900
+ declaredTypePackages: ctx?.declaredTypePackages,
901
+ ambientInterfaceFields: ctx?.ambientInterfaceFields,
902
+ projectRoot: ctx?.projectRoot,
903
+ tsconfig: ctx?.tsconfigAliases,
904
+ verdictCache: ctx?.handleVerdictCache,
905
+ });
906
+ },
907
+ },
908
+ // Spec 70 Item 4 (step 3) — the fourth of the four receiver consumers. The
909
+ // legacy `loop-queries` producer ran `collectLoopQueryCandidates` (discovery +
910
+ // provenance-free discriminators + strict-handle filter + loop dedup + symbol)
911
+ // over the AST. The collapse splits it: `loop-query-candidates` runs the
912
+ // discovery + provenance-free discriminators while the AST lives, and this
913
+ // producer re-derives `dbProvenanced` and re-folds the strict-handle filter,
914
+ // the per-loop dedup, and the stable symbol with no AST.
915
+ 'loop-queries': {
916
+ id: 'loop-queries',
917
+ produces: 'loop-queries',
918
+ needs: ['loop-query-candidates', 'within-file-provenance', 'receiver-provenance', 'receiver-activity'],
919
+ process(facts, ctx) {
920
+ return classifyLoopQueries(facts['loop-query-candidates'], {
921
+ withinFacts: facts['within-file-provenance'],
922
+ provenance: facts['receiver-provenance'],
923
+ activityFacts: facts['receiver-activity'],
924
+ sqlDialect: ctx?.sqlDialect ?? null,
925
+ declaredTypePackages: ctx?.declaredTypePackages,
926
+ ambientInterfaceFields: ctx?.ambientInterfaceFields,
927
+ projectRoot: ctx?.projectRoot,
928
+ tsconfig: ctx?.tsconfigAliases,
929
+ verdictCache: ctx?.handleVerdictCache,
930
+ });
931
+ },
932
+ },
933
+ };
934
+ /**
935
+ * The producer that serves `kind` from `format`, or `undefined` when that
936
+ * format cannot supply the concept (which is not a defect — the caller skips
937
+ * the file and §8 reports the rule `notApplicable` for it). The dynamic format
938
+ * in a parsed file is a full {@link Format}, so the lookup is a guarded cast.
939
+ *
940
+ * @param kind - The fact kind whose producer is looked up.
941
+ * @param format - The format the parsed file declares.
942
+ * @returns The producer for `(kind, format)`, or `undefined` when unsupplied.
943
+ */
944
+ export function fileProducerFor(kind, format) {
945
+ const formats = PRODUCERS[kind];
946
+ return formats[format];
947
+ }
948
+ /**
949
+ * Spec 69 R1 (criterion 3) — every file processor with no statable oracle,
950
+ * named by its `${kind}.${format}` id with the reason. The run enumerates these
951
+ * so an unprovable fact is reported, never silently assumed complete. The list
952
+ * is static because `oracle` is a static property of the processor contract,
953
+ * not a per-run state: a processor that *could* state an oracle but does not is
954
+ * caught at compile time (the `oracle` field is required), so this is only ever
955
+ * the processors that genuinely have none.
956
+ *
957
+ * @returns The `${kind}.${format}` id and reason for every oracle-less processor.
958
+ */
959
+ export function noOracleProcessors() {
960
+ const out = [];
961
+ for (const [kind, formats] of Object.entries(PRODUCERS)) {
962
+ for (const p of Object.values(formats)) {
963
+ if (p.oracle.status === 'none')
964
+ out.push({ processor: p.id, reason: p.oracle.reason });
965
+ }
966
+ }
967
+ return out;
968
+ }
969
+ /**
970
+ * The fact-kind vocabulary as a runtime value, kept in lockstep with
971
+ * {@link FactShapes} by the `satisfies` check: a kind added to FactShapes but
972
+ * missing here — or present here but absent from FactShapes — fails to compile.
973
+ * The producer-liveness test derives its expected producer count from this
974
+ * instead of a hand-maintained literal, so the number can only change in the
975
+ * same edit that changes the vocabulary.
976
+ */
977
+ export const FACT_KINDS = {
978
+ 'file-symbols': true,
979
+ 'function-index': true,
980
+ 'query-sites': true,
981
+ 'query-site-candidates': true,
982
+ 'imports': true,
983
+ 'import-specifiers': true,
984
+ 'export-symbols': true,
985
+ 'export-form': true,
986
+ 'import-form': true,
987
+ 'string-literals': true,
988
+ 'secret-candidates': true,
989
+ 'security-candidates': true,
990
+ 'ddl-declarations': true,
991
+ 'schema-usage': true,
992
+ 'schema-usage-candidates': true,
993
+ 'schema-objects': true,
994
+ 'style-declarations': true,
995
+ 'color-values': true,
996
+ 'cross-language-entities': true,
997
+ 'data-access-calls': true,
998
+ 'data-access-calls-candidates': true,
999
+ 'loop-queries': true,
1000
+ 'loop-query-candidates': true,
1001
+ 'dynamic-sql': true,
1002
+ 'resolution': true,
1003
+ 'migration-history': true,
1004
+ 'mined-conventions': true,
1005
+ 'react-component': true,
1006
+ 'file-header': true,
1007
+ 'code-block': true,
1008
+ 'json-document': true,
1009
+ 'schema-validations': true,
1010
+ 'file-imports': true,
1011
+ 'reachability': true,
1012
+ 'type-declarations': true,
1013
+ 'go-functions': true,
1014
+ 'go-package-bindings': true,
1015
+ 'within-file-provenance': true,
1016
+ 'receiver-activity': true,
1017
+ 'receiver-provenance': true,
1018
+ 'go-switches': true,
1019
+ 'error-bindings': true,
1020
+ 'concurrency-primitives': true,
1021
+ 'channel-operations': true,
1022
+ 'call-graph': true,
1023
+ 'batch-functions': true,
1024
+ 'hotspot': true,
1025
+ 'coverage': true,
1026
+ 'clone-pair-history': true,
1027
+ 'defined-classes': true,
1028
+ 'unread-style-sources': true,
1029
+ };
1030
+ //# sourceMappingURL=producers.js.map