code-auditor-mcp 4.1.0 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1086) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +374 -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 +424 -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 +328 -0
  67. package/dist/analyzers/receiverRoot.d.ts.map +1 -0
  68. package/dist/analyzers/receiverRoot.js +990 -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 +231 -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 +1 -12
  95. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
  96. package/dist/analyzers/universal/UniversalDRYAnalyzer.js +24 -101
  97. package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
  98. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +287 -49
  99. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
  100. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +2130 -512
  101. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
  102. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
  103. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +2 -18
  104. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
  105. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts +0 -33
  106. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
  107. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +20 -143
  108. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
  109. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +4 -3
  110. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
  111. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +36 -13
  112. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
  113. package/dist/analyzers/universal/UniversalSecretsAnalyzer.d.ts.map +1 -1
  114. package/dist/analyzers/universal/UniversalSecretsAnalyzer.js +6 -0
  115. package/dist/analyzers/universal/UniversalSecretsAnalyzer.js.map +1 -1
  116. package/dist/analyzers/universal/UniversalSecurityAnalyzer.d.ts +15 -0
  117. package/dist/analyzers/universal/UniversalSecurityAnalyzer.d.ts.map +1 -1
  118. package/dist/analyzers/universal/UniversalSecurityAnalyzer.js +25 -0
  119. package/dist/analyzers/universal/UniversalSecurityAnalyzer.js.map +1 -1
  120. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts +21 -32
  121. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
  122. package/dist/analyzers/universal/UniversalStylesAnalyzer.js +166 -196
  123. package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
  124. package/dist/analyzers/universal/functionConcerns.d.ts +3 -0
  125. package/dist/analyzers/universal/functionConcerns.d.ts.map +1 -1
  126. package/dist/analyzers/universal/functionConcerns.js +4 -1
  127. package/dist/analyzers/universal/functionConcerns.js.map +1 -1
  128. package/dist/analyzers/universal/schema/codeAnalysis.d.ts +310 -69
  129. package/dist/analyzers/universal/schema/codeAnalysis.d.ts.map +1 -1
  130. package/dist/analyzers/universal/schema/codeAnalysis.js +709 -383
  131. package/dist/analyzers/universal/schema/codeAnalysis.js.map +1 -1
  132. package/dist/analyzers/universal/schema/config.d.ts +3 -14
  133. package/dist/analyzers/universal/schema/config.d.ts.map +1 -1
  134. package/dist/analyzers/universal/schema/config.js +3 -16
  135. package/dist/analyzers/universal/schema/config.js.map +1 -1
  136. package/dist/analyzers/universal/schema/discovery.d.ts +22 -1
  137. package/dist/analyzers/universal/schema/discovery.d.ts.map +1 -1
  138. package/dist/analyzers/universal/schema/discovery.js +36 -20
  139. package/dist/analyzers/universal/schema/discovery.js.map +1 -1
  140. package/dist/analyzers/universal/schema/jsonSchema.d.ts.map +1 -1
  141. package/dist/analyzers/universal/schema/jsonSchema.js +13 -3
  142. package/dist/analyzers/universal/schema/jsonSchema.js.map +1 -1
  143. package/dist/analyzers/universal/schema/migrations.d.ts +187 -27
  144. package/dist/analyzers/universal/schema/migrations.d.ts.map +1 -1
  145. package/dist/analyzers/universal/schema/migrations.js +443 -186
  146. package/dist/analyzers/universal/schema/migrations.js.map +1 -1
  147. package/dist/analyzers/universal/schema/types.d.ts +17 -3
  148. package/dist/analyzers/universal/schema/types.d.ts.map +1 -1
  149. package/dist/analyzers/universal/schema/violations.js +1 -1
  150. package/dist/analyzers/universal/schema/violations.js.map +1 -1
  151. package/dist/analyzers/universal/styleScale.d.ts +52 -0
  152. package/dist/analyzers/universal/styleScale.d.ts.map +1 -0
  153. package/dist/analyzers/universal/styleScale.js +95 -0
  154. package/dist/analyzers/universal/styleScale.js.map +1 -0
  155. package/dist/applyDataDirEnv.js +1 -1
  156. package/dist/applyDataDirEnv.js.map +1 -1
  157. package/dist/auditRouter.d.ts +26 -30
  158. package/dist/auditRouter.d.ts.map +1 -1
  159. package/dist/auditRouter.js +373 -143
  160. package/dist/auditRouter.js.map +1 -1
  161. package/dist/auditRunner.d.ts +64 -1
  162. package/dist/auditRunner.d.ts.map +1 -1
  163. package/dist/auditRunner.js +1537 -1051
  164. package/dist/auditRunner.js.map +1 -1
  165. package/dist/baseline.d.ts +30 -3
  166. package/dist/baseline.d.ts.map +1 -1
  167. package/dist/baseline.js +70 -9
  168. package/dist/baseline.js.map +1 -1
  169. package/dist/cli.js +997 -812
  170. package/dist/cli.js.map +1 -1
  171. package/dist/codeIndex/analyzerConfig.d.ts +60 -0
  172. package/dist/codeIndex/analyzerConfig.d.ts.map +1 -0
  173. package/dist/codeIndex/analyzerConfig.js +98 -0
  174. package/dist/codeIndex/analyzerConfig.js.map +1 -0
  175. package/dist/codeIndex/auditResults.d.ts +39 -0
  176. package/dist/codeIndex/auditResults.d.ts.map +1 -0
  177. package/dist/codeIndex/auditResults.js +99 -0
  178. package/dist/codeIndex/auditResults.js.map +1 -0
  179. package/dist/codeIndex/codeMap.d.ts +59 -0
  180. package/dist/codeIndex/codeMap.d.ts.map +1 -0
  181. package/dist/codeIndex/codeMap.js +72 -0
  182. package/dist/codeIndex/codeMap.js.map +1 -0
  183. package/dist/codeIndex/conventions.d.ts +33 -0
  184. package/dist/codeIndex/conventions.d.ts.map +1 -0
  185. package/dist/codeIndex/conventions.js +84 -0
  186. package/dist/codeIndex/conventions.js.map +1 -0
  187. package/dist/codeIndex/coverage.d.ts +78 -0
  188. package/dist/codeIndex/coverage.d.ts.map +1 -0
  189. package/dist/codeIndex/coverage.js +164 -0
  190. package/dist/codeIndex/coverage.js.map +1 -0
  191. package/dist/codeIndex/dependencyGraph.d.ts +97 -0
  192. package/dist/codeIndex/dependencyGraph.d.ts.map +1 -0
  193. package/dist/codeIndex/dependencyGraph.js +241 -0
  194. package/dist/codeIndex/dependencyGraph.js.map +1 -0
  195. package/dist/codeIndex/functionIndex.d.ts +111 -0
  196. package/dist/codeIndex/functionIndex.d.ts.map +1 -0
  197. package/dist/codeIndex/functionIndex.js +306 -0
  198. package/dist/codeIndex/functionIndex.js.map +1 -0
  199. package/dist/codeIndex/inferredReceivers.d.ts +32 -0
  200. package/dist/codeIndex/inferredReceivers.d.ts.map +1 -0
  201. package/dist/codeIndex/inferredReceivers.js +41 -0
  202. package/dist/codeIndex/inferredReceivers.js.map +1 -0
  203. package/dist/codeIndex/meta.d.ts +30 -0
  204. package/dist/codeIndex/meta.d.ts.map +1 -0
  205. package/dist/codeIndex/meta.js +37 -0
  206. package/dist/codeIndex/meta.js.map +1 -0
  207. package/dist/codeIndex/migrations.d.ts +96 -0
  208. package/dist/codeIndex/migrations.d.ts.map +1 -0
  209. package/dist/codeIndex/migrations.js +1302 -0
  210. package/dist/codeIndex/migrations.js.map +1 -0
  211. package/dist/codeIndex/projectTasks.d.ts +54 -0
  212. package/dist/codeIndex/projectTasks.d.ts.map +1 -0
  213. package/dist/codeIndex/projectTasks.js +81 -0
  214. package/dist/codeIndex/projectTasks.js.map +1 -0
  215. package/dist/codeIndex/provenance.d.ts +47 -0
  216. package/dist/codeIndex/provenance.d.ts.map +1 -0
  217. package/dist/codeIndex/provenance.js +48 -0
  218. package/dist/codeIndex/provenance.js.map +1 -0
  219. package/dist/codeIndex/rawSql.d.ts +54 -0
  220. package/dist/codeIndex/rawSql.d.ts.map +1 -0
  221. package/dist/codeIndex/rawSql.js +71 -0
  222. package/dist/codeIndex/rawSql.js.map +1 -0
  223. package/dist/codeIndex/schema.d.ts +99 -0
  224. package/dist/codeIndex/schema.d.ts.map +1 -0
  225. package/dist/codeIndex/schema.js +174 -0
  226. package/dist/codeIndex/schema.js.map +1 -0
  227. package/dist/codeIndex/search.d.ts +40 -0
  228. package/dist/codeIndex/search.d.ts.map +1 -0
  229. package/dist/codeIndex/search.js +316 -0
  230. package/dist/codeIndex/search.js.map +1 -0
  231. package/dist/codeIndex/shared.d.ts +27 -0
  232. package/dist/codeIndex/shared.d.ts.map +1 -0
  233. package/dist/codeIndex/shared.js +46 -0
  234. package/dist/codeIndex/shared.js.map +1 -0
  235. package/dist/codeIndex/sqliteCollection.d.ts +81 -0
  236. package/dist/codeIndex/sqliteCollection.d.ts.map +1 -0
  237. package/dist/codeIndex/sqliteCollection.js +250 -0
  238. package/dist/codeIndex/sqliteCollection.js.map +1 -0
  239. package/dist/codeIndex/whitelist.d.ts +59 -0
  240. package/dist/codeIndex/whitelist.d.ts.map +1 -0
  241. package/dist/codeIndex/whitelist.js +188 -0
  242. package/dist/codeIndex/whitelist.js.map +1 -0
  243. package/dist/codeIndexDB.d.ts +130 -277
  244. package/dist/codeIndexDB.d.ts.map +1 -1
  245. package/dist/codeIndexDB.js +364 -2748
  246. package/dist/codeIndexDB.js.map +1 -1
  247. package/dist/codeIndexService.d.ts +87 -12
  248. package/dist/codeIndexService.d.ts.map +1 -1
  249. package/dist/codeIndexService.js +110 -34
  250. package/dist/codeIndexService.js.map +1 -1
  251. package/dist/componentScanner.d.ts +35 -0
  252. package/dist/componentScanner.d.ts.map +1 -1
  253. package/dist/componentScanner.js +114 -80
  254. package/dist/componentScanner.js.map +1 -1
  255. package/dist/config/configGeneratePath.d.ts +4 -0
  256. package/dist/config/configGeneratePath.d.ts.map +1 -1
  257. package/dist/config/configGeneratePath.js +4 -0
  258. package/dist/config/configGeneratePath.js.map +1 -1
  259. package/dist/config/configLoader.d.ts +16 -1
  260. package/dist/config/configLoader.d.ts.map +1 -1
  261. package/dist/config/configLoader.js +26 -23
  262. package/dist/config/configLoader.js.map +1 -1
  263. package/dist/config/defaults.d.ts +11 -7
  264. package/dist/config/defaults.d.ts.map +1 -1
  265. package/dist/config/defaults.js +21 -20
  266. package/dist/config/defaults.js.map +1 -1
  267. package/dist/config/effectiveConfig.d.ts +17 -2
  268. package/dist/config/effectiveConfig.d.ts.map +1 -1
  269. package/dist/config/effectiveConfig.js +32 -25
  270. package/dist/config/effectiveConfig.js.map +1 -1
  271. package/dist/config/lintConfigReader.d.ts +6 -0
  272. package/dist/config/lintConfigReader.d.ts.map +1 -1
  273. package/dist/config/lintConfigReader.js +6 -0
  274. package/dist/config/lintConfigReader.js.map +1 -1
  275. package/dist/config/staticObjectExtract.d.ts +4 -0
  276. package/dist/config/staticObjectExtract.d.ts.map +1 -1
  277. package/dist/config/staticObjectExtract.js +7 -3
  278. package/dist/config/staticObjectExtract.js.map +1 -1
  279. package/dist/config/thresholdRationales.d.ts +2 -0
  280. package/dist/config/thresholdRationales.d.ts.map +1 -1
  281. package/dist/config/thresholdRationales.js +5 -2
  282. package/dist/config/thresholdRationales.js.map +1 -1
  283. package/dist/constants.d.ts +1 -1
  284. package/dist/constants.d.ts.map +1 -1
  285. package/dist/constants.js +10 -5
  286. package/dist/constants.js.map +1 -1
  287. package/dist/conventions/conventionMiner.d.ts +105 -2
  288. package/dist/conventions/conventionMiner.d.ts.map +1 -1
  289. package/dist/conventions/conventionMiner.js +334 -259
  290. package/dist/conventions/conventionMiner.js.map +1 -1
  291. package/dist/coverage/coverageService.js +4 -4
  292. package/dist/coverage/coverageService.js.map +1 -1
  293. package/dist/daemon/args.d.ts +3 -0
  294. package/dist/daemon/args.d.ts.map +1 -1
  295. package/dist/daemon/args.js +3 -0
  296. package/dist/daemon/args.js.map +1 -1
  297. package/dist/daemon/core.d.ts +33 -27
  298. package/dist/daemon/core.d.ts.map +1 -1
  299. package/dist/daemon/core.js +198 -162
  300. package/dist/daemon/core.js.map +1 -1
  301. package/dist/daemon/lspServer.d.ts +8 -0
  302. package/dist/daemon/lspServer.d.ts.map +1 -1
  303. package/dist/daemon/lspServer.js +8 -0
  304. package/dist/daemon/lspServer.js.map +1 -1
  305. package/dist/daemon/main.d.ts +2 -0
  306. package/dist/daemon/main.d.ts.map +1 -1
  307. package/dist/daemon/main.js +2 -0
  308. package/dist/daemon/main.js.map +1 -1
  309. package/dist/daemon/resolve.d.ts +22 -7
  310. package/dist/daemon/resolve.d.ts.map +1 -1
  311. package/dist/daemon/resolve.js +29 -8
  312. package/dist/daemon/resolve.js.map +1 -1
  313. package/dist/daemon/socketClient.d.ts +10 -1
  314. package/dist/daemon/socketClient.d.ts.map +1 -1
  315. package/dist/daemon/socketClient.js +10 -1
  316. package/dist/daemon/socketClient.js.map +1 -1
  317. package/dist/daemon/socketServer.d.ts +13 -0
  318. package/dist/daemon/socketServer.d.ts.map +1 -1
  319. package/dist/daemon/socketServer.js +13 -0
  320. package/dist/daemon/socketServer.js.map +1 -1
  321. package/dist/dataPaths.d.ts +27 -8
  322. package/dist/dataPaths.d.ts.map +1 -1
  323. package/dist/dataPaths.js +28 -44
  324. package/dist/dataPaths.js.map +1 -1
  325. package/dist/dismissals.d.ts +22 -1
  326. package/dist/dismissals.d.ts.map +1 -1
  327. package/dist/dismissals.js +22 -1
  328. package/dist/dismissals.js.map +1 -1
  329. package/dist/enforcement/gate.d.ts +1 -0
  330. package/dist/enforcement/gate.d.ts.map +1 -1
  331. package/dist/enforcement/gate.js +1 -0
  332. package/dist/enforcement/gate.js.map +1 -1
  333. package/dist/fingerprint.d.ts +6 -0
  334. package/dist/fingerprint.d.ts.map +1 -1
  335. package/dist/fingerprint.js +46 -1
  336. package/dist/fingerprint.js.map +1 -1
  337. package/dist/functionScanner.d.ts +30 -1
  338. package/dist/functionScanner.d.ts.map +1 -1
  339. package/dist/functionScanner.js +258 -256
  340. package/dist/functionScanner.js.map +1 -1
  341. package/dist/generators/AWSQConfigGenerator.d.ts +23 -0
  342. package/dist/generators/AWSQConfigGenerator.d.ts.map +1 -1
  343. package/dist/generators/AWSQConfigGenerator.js +23 -0
  344. package/dist/generators/AWSQConfigGenerator.js.map +1 -1
  345. package/dist/generators/BaseConfigGenerator.d.ts +7 -0
  346. package/dist/generators/BaseConfigGenerator.d.ts.map +1 -1
  347. package/dist/generators/BaseConfigGenerator.js +7 -0
  348. package/dist/generators/BaseConfigGenerator.js.map +1 -1
  349. package/dist/generators/ClaudeConfigGenerator.d.ts +23 -0
  350. package/dist/generators/ClaudeConfigGenerator.d.ts.map +1 -1
  351. package/dist/generators/ClaudeConfigGenerator.js +23 -0
  352. package/dist/generators/ClaudeConfigGenerator.js.map +1 -1
  353. package/dist/generators/ClineConfigGenerator.d.ts +23 -0
  354. package/dist/generators/ClineConfigGenerator.d.ts.map +1 -1
  355. package/dist/generators/ClineConfigGenerator.js +23 -0
  356. package/dist/generators/ClineConfigGenerator.js.map +1 -1
  357. package/dist/generators/CodeiumConfigGenerator.d.ts +23 -0
  358. package/dist/generators/CodeiumConfigGenerator.d.ts.map +1 -1
  359. package/dist/generators/CodeiumConfigGenerator.js +23 -0
  360. package/dist/generators/CodeiumConfigGenerator.js.map +1 -1
  361. package/dist/generators/CodexConfigGenerator.d.ts +23 -0
  362. package/dist/generators/CodexConfigGenerator.d.ts.map +1 -1
  363. package/dist/generators/CodexConfigGenerator.js +23 -0
  364. package/dist/generators/CodexConfigGenerator.js.map +1 -1
  365. package/dist/generators/ConfigGeneratorFactory.d.ts +9 -0
  366. package/dist/generators/ConfigGeneratorFactory.d.ts.map +1 -1
  367. package/dist/generators/ConfigGeneratorFactory.js +9 -0
  368. package/dist/generators/ConfigGeneratorFactory.js.map +1 -1
  369. package/dist/generators/ContinueConfigGenerator.d.ts +23 -0
  370. package/dist/generators/ContinueConfigGenerator.d.ts.map +1 -1
  371. package/dist/generators/ContinueConfigGenerator.js +23 -0
  372. package/dist/generators/ContinueConfigGenerator.js.map +1 -1
  373. package/dist/generators/CopilotConfigGenerator.d.ts +23 -0
  374. package/dist/generators/CopilotConfigGenerator.d.ts.map +1 -1
  375. package/dist/generators/CopilotConfigGenerator.js +23 -0
  376. package/dist/generators/CopilotConfigGenerator.js.map +1 -1
  377. package/dist/generators/CursorConfigGenerator.d.ts +23 -0
  378. package/dist/generators/CursorConfigGenerator.d.ts.map +1 -1
  379. package/dist/generators/CursorConfigGenerator.js +23 -0
  380. package/dist/generators/CursorConfigGenerator.js.map +1 -1
  381. package/dist/generators/GeminiConfigGenerator.d.ts +23 -0
  382. package/dist/generators/GeminiConfigGenerator.d.ts.map +1 -1
  383. package/dist/generators/GeminiConfigGenerator.js +23 -0
  384. package/dist/generators/GeminiConfigGenerator.js.map +1 -1
  385. package/dist/generators/VSCodeConfigGenerator.d.ts +23 -0
  386. package/dist/generators/VSCodeConfigGenerator.d.ts.map +1 -1
  387. package/dist/generators/VSCodeConfigGenerator.js +23 -0
  388. package/dist/generators/VSCodeConfigGenerator.js.map +1 -1
  389. package/dist/generators/ZCodeConfigGenerator.d.ts +23 -0
  390. package/dist/generators/ZCodeConfigGenerator.d.ts.map +1 -1
  391. package/dist/generators/ZCodeConfigGenerator.js +23 -0
  392. package/dist/generators/ZCodeConfigGenerator.js.map +1 -1
  393. package/dist/graph/blastRadius.d.ts.map +1 -1
  394. package/dist/graph/blastRadius.js +12 -7
  395. package/dist/graph/blastRadius.js.map +1 -1
  396. package/dist/graph/callGraph.d.ts +31 -0
  397. package/dist/graph/callGraph.d.ts.map +1 -1
  398. package/dist/graph/callGraph.js +62 -32
  399. package/dist/graph/callGraph.js.map +1 -1
  400. package/dist/graph/importClassification.d.ts +28 -0
  401. package/dist/graph/importClassification.d.ts.map +1 -1
  402. package/dist/graph/importClassification.js +57 -0
  403. package/dist/graph/importClassification.js.map +1 -1
  404. package/dist/graph/importGraph.d.ts +38 -0
  405. package/dist/graph/importGraph.d.ts.map +1 -1
  406. package/dist/graph/importGraph.js +38 -0
  407. package/dist/graph/importGraph.js.map +1 -1
  408. package/dist/graph/outputFormatter.d.ts +12 -4
  409. package/dist/graph/outputFormatter.d.ts.map +1 -1
  410. package/dist/graph/outputFormatter.js +12 -62
  411. package/dist/graph/outputFormatter.js.map +1 -1
  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 +832 -851
  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 +468 -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 +1027 -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 +200 -0
  739. package/dist/phase/receiverConsumers.d.ts.map +1 -0
  740. package/dist/phase/receiverConsumers.js +1025 -0
  741. package/dist/phase/receiverConsumers.js.map +1 -0
  742. package/dist/phase/receiverProvenance.d.ts +97 -0
  743. package/dist/phase/receiverProvenance.d.ts.map +1 -0
  744. package/dist/phase/receiverProvenance.js +337 -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 +2191 -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 +1145 -988
  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 +106 -92
  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 +14 -8
  1078. package/plugin/.claude-plugin/manifest.json +16 -0
  1079. package/plugin/.claude-plugin/plugin.json +1 -1
  1080. package/plugin/hooks/hooks.json +6 -2
  1081. package/plugin/scripts/hook-audit.sh +41 -14
  1082. package/plugin/scripts/hook-common.sh +50 -5
  1083. package/plugin/scripts/hook-drift-check.sh +72 -0
  1084. package/plugin/scripts/hook-self-audit.sh +17 -12
  1085. package/plugin/skills/code-auditor/SKILL.md +1 -1
  1086. package/server.json +2 -2
@@ -9,6 +9,8 @@ import fs from 'fs/promises';
9
9
  import { readFileSync, statSync } from 'node:fs';
10
10
  import path from 'path';
11
11
  import { MAX_ORPHAN_SOURCE_BYTES } from '../../../types.js';
12
+ import { isTestOrSpecPath } from '../../../languages/testConventions.js';
13
+ import { parseSqlProgramTolerant, ddlColumnDefinitions, ddlForeignKeys as astDdlForeignKeys, ddlMigrationOps, ddlConstraintColumns, ddlTableNames, isDdlStatement, } from '../../../languages/sql/sqlAst.js';
12
14
  /**
13
15
  * Strip SQL identifier delimiters: backticks or double-quotes.
14
16
  * @param name
@@ -48,177 +50,417 @@ export function applyMigrationOps(ops, tables) {
48
50
  * operations to the given table set in migration order.
49
51
  * @param source
50
52
  * @param tables
53
+ * @param dialect The corpus's named dialect; null is honest abstention — no
54
+ * parse under a guessed {@link DEFAULT_SQL_DIALECT} (unproven, cannot-fire).
51
55
  */
52
- export function processMigrationSource(source, tables) {
53
- applyMigrationOps(parseMigrationOps(source), tables);
56
+ export function processMigrationSource(source, tables, dialect) {
57
+ applyMigrationOps(parseMigrationOps(source, dialect), tables);
54
58
  }
55
59
  /**
56
- * The DDL state-machine regex shared by the standalone analyze() path and the
57
- * pipeline's schema-sql visitor. Single ordered pass — applies CREATE/DROP/
58
- * RENAME in statement order within each migration file (fixes the rename-replay
59
- * bug where CREATE after RENAME in the same file was silently dropped).
60
+ * Replay per-file DDL declarations in migration order to compute, in one pass,
61
+ * both the net known-table set (a table dropped in a migration and not
62
+ * recreated is *not* known) and the drop provenance (dropped-table name → which
63
+ * migration dropped it and what it introduced). A table created and dropped
64
+ * within the *same* file is a self-contained scratch fixture (its DROP is
65
+ * teardown, not a migration), so it is kept known and excluded from the
66
+ * provenance. This is the shared pure function the legacy schema reducer's
67
+ * inline replay and the phase-model `resolution` / `migration-history`
68
+ * corpus processors both compute, so the two facts are identical by
69
+ * construction (parity-by-construction for `unknown-table` and
70
+ * `stale-table-reference`).
71
+ *
72
+ * @param ddlFiles Per-file declarations with parsed ops and (optionally) the
73
+ * columns the file declares for each table (order-independent — this sorts by
74
+ * the numeric prefix in the basename, then localeCompare).
75
+ * @returns The net known-table set and the drop provenance.
60
76
  */
61
- const DDL_RE = /(CREATE)\s+(?:VIRTUAL\s+)?TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?(`[^`]+`|"[^"]+"|\w+)|(DROP)\s+TABLE\s+(?:IF\s+EXISTS\s+)?(`[^`]+`|"[^"]+"|\w+)|(ALTER)\s+TABLE\s+(`[^`]+`|"[^"]+"|\w+)\s+RENAME\s+TO\s+(`[^`]+`|"[^"]+"|\w+)/gi;
77
+ export function replayDdlDeclarations(ddlFiles) {
78
+ const numericPrefix = (p) => {
79
+ const base = p.split('/').pop() ?? p;
80
+ const m = base.match(/^(\d+)/);
81
+ return m ? parseInt(m[1], 10) : 0;
82
+ };
83
+ const sorted = [...ddlFiles]
84
+ // A DROP (or CREATE) inside a test/spec file is test scaffolding, not a
85
+ // production table lifecycle event. Replaying it would let `DROP TABLE
86
+ // users` in `codeIndexDB-security.spec.ts` mark a production table dropped,
87
+ // turning every later reference into a `stale-table-reference` false
88
+ // positive. Skip test/spec files before replay so only production migrations
89
+ // move the known-table set and the drop provenance.
90
+ .filter((d) => !isTestOrSpecPath(d.filePath))
91
+ .sort((a, b) => {
92
+ const na = numericPrefix(a.filePath);
93
+ const nb = numericPrefix(b.filePath);
94
+ if (na !== nb)
95
+ return na - nb;
96
+ return a.filePath.localeCompare(b.filePath);
97
+ });
98
+ const knownTables = new Set();
99
+ // Last-CREATE source file + column list per surviving table, so `resolution`
100
+ // names the file that most recently (re)declared the table, with its columns.
101
+ const sourceFile = new Map();
102
+ const columnsByTable = new Map();
103
+ const uniqueColumnsByTable = new Map();
104
+ const primaryKeyColumnsByTable = new Map();
105
+ const notNullColumnsByTable = new Map();
106
+ const foreignKeysByTable = new Map();
107
+ const dropProvenance = new Map();
108
+ for (const ddlFile of sorted) {
109
+ const before = new Set(knownTables);
110
+ // Replay this file's CREATE/DROP/RENAME transitions, tracking last-CREATE
111
+ // source/columns alongside the net set (the same transitions
112
+ // `applyMigrationOps` performs, but with provenance bookkeeping).
113
+ for (const op of ddlFile.ops) {
114
+ const t = stripIdentifier(op.table);
115
+ if (op.op === 'CREATE') {
116
+ knownTables.add(t);
117
+ sourceFile.set(t, ddlFile.filePath);
118
+ columnsByTable.set(t, [...(ddlFile.tableColumns?.[t] ?? [])]);
119
+ uniqueColumnsByTable.set(t, [...(ddlFile.uniqueColumns?.[t] ?? [])]);
120
+ primaryKeyColumnsByTable.set(t, [...(ddlFile.primaryKeyColumns?.[t] ?? [])]);
121
+ notNullColumnsByTable.set(t, [...(ddlFile.notNullColumns?.[t] ?? [])]);
122
+ foreignKeysByTable.set(t, [...(ddlFile.foreignKeys?.[t] ?? [])]);
123
+ }
124
+ else if (op.op === 'DROP') {
125
+ knownTables.delete(t);
126
+ }
127
+ else {
128
+ const nt = stripIdentifier(op.newTable);
129
+ knownTables.delete(t);
130
+ knownTables.add(nt);
131
+ sourceFile.delete(t);
132
+ columnsByTable.delete(t);
133
+ uniqueColumnsByTable.delete(t);
134
+ primaryKeyColumnsByTable.delete(t);
135
+ notNullColumnsByTable.delete(t);
136
+ foreignKeysByTable.delete(t);
137
+ sourceFile.set(nt, ddlFile.filePath);
138
+ columnsByTable.set(nt, [...(ddlFile.tableColumns?.[nt] ?? [])]);
139
+ uniqueColumnsByTable.set(nt, [...(ddlFile.uniqueColumns?.[nt] ?? [])]);
140
+ primaryKeyColumnsByTable.set(nt, [...(ddlFile.primaryKeyColumns?.[nt] ?? [])]);
141
+ notNullColumnsByTable.set(nt, [...(ddlFile.notNullColumns?.[nt] ?? [])]);
142
+ foreignKeysByTable.set(nt, [...(ddlFile.foreignKeys?.[nt] ?? [])]);
143
+ }
144
+ }
145
+ // Genuinely-new tables introduced by this migration (excludes rename/rebuild
146
+ // churn like `ALTER … RENAME TO x_old` + re-CREATE of the same name).
147
+ const createdHere = [];
148
+ const createdTables = new Set();
149
+ const droppedTables = new Set();
150
+ for (const op of ddlFile.ops) {
151
+ const t = stripIdentifier(op.table);
152
+ if (op.op === 'CREATE') {
153
+ createdTables.add(t);
154
+ if (!before.has(t))
155
+ createdHere.push(t);
156
+ }
157
+ else if (op.op === 'DROP') {
158
+ droppedTables.add(t);
159
+ }
160
+ }
161
+ for (const op of ddlFile.ops) {
162
+ const t = stripIdentifier(op.table);
163
+ if (op.op === 'DROP') {
164
+ dropProvenance.set(t, { migrationFile: ddlFile.filePath, createdInSameMigration: createdHere });
165
+ }
166
+ else if (op.op === 'CREATE') {
167
+ dropProvenance.delete(t);
168
+ }
169
+ }
170
+ // A table created and dropped within this same file is a self-contained
171
+ // fixture — a scratch table a test or script creates, uses, then tears
172
+ // down. Its DROP is teardown, not a migration: keep it known and clear the
173
+ // drop provenance this file recorded for it.
174
+ for (const t of createdTables) {
175
+ if (droppedTables.has(t)) {
176
+ knownTables.add(t);
177
+ if (dropProvenance.get(t)?.migrationFile === ddlFile.filePath) {
178
+ dropProvenance.delete(t);
179
+ }
180
+ }
181
+ }
182
+ }
183
+ const netTables = [];
184
+ for (const name of knownTables) {
185
+ netTables.push({
186
+ name,
187
+ source: sourceFile.get(name) ?? '',
188
+ columns: columnsByTable.get(name) ?? [],
189
+ uniqueColumns: uniqueColumnsByTable.get(name) ?? [],
190
+ primaryKeyColumns: primaryKeyColumnsByTable.get(name) ?? [],
191
+ notNullColumns: notNullColumnsByTable.get(name) ?? [],
192
+ foreignKeys: foreignKeysByTable.get(name) ?? [],
193
+ });
194
+ }
195
+ return { netTables, dropProvenance };
196
+ }
62
197
  /**
63
- * Extract ordered DDL operations from migration SQL text. Emitted by the
64
- * schema-sql visitor instead of raw source so the reducer only retains the
65
- * extracted state transitions, not the full file text.
198
+ * Extract ordered DDL operations from migration SQL text — the AST replacement
199
+ * for site #7's `DDL_RE`, which had to regex the whole create/drop/alter-rename
200
+ * vocabulary as one alternation. Each statement is parsed tolerantly (a `PRAGMA`
201
+ * or `CREATE TRIGGER` beside a `CREATE TABLE` is a failure the caller accounts
202
+ * for, not a discard of the whole file) and walked by {@link ddlMigrationOps}.
203
+ * Emitted by the schema-sql visitor instead of raw source so the reducer only
204
+ * retains the extracted state transitions, not the full file text.
66
205
  * @param source
206
+ * @param dialect The corpus's named dialect; null is honest abstention — the SQL
207
+ * is NOT parsed under a guessed {@link DEFAULT_SQL_DIALECT}. An undetermined
208
+ * (or ambiguous) dialect yields `unproven`: the caller surfaces the
209
+ * `dialect undetermined` cannot-fire reason, never a sqlite-guessed op set.
67
210
  * @returns
68
211
  */
69
- export function parseMigrationOps(source) {
212
+ export function parseMigrationOps(source, dialect) {
213
+ // A null dialect is not a licence to guess sqlite. Parsing DDL under a dialect
214
+ // nothing in the manifest suggested is a wrong answer wearing a fact — the
215
+ // same inversion as the dialect gate, one layer over. Abstain: no AST parse and
216
+ // no FTS5 regex recovery, so an ambiguous corpus (pg+mysql) emits zero ops and
217
+ // the cannot-fire reason carries the ambiguity instead.
218
+ if (dialect === null)
219
+ return [];
220
+ const { statements } = parseSqlProgramTolerant(source, dialect);
70
221
  const ops = [];
71
- let match;
72
- DDL_RE.lastIndex = 0;
73
- while ((match = DDL_RE.exec(source)) !== null) {
74
- const op = match[1] || match[3] || match[5];
75
- if (op === 'CREATE') {
76
- ops.push({ op: 'CREATE', table: match[2] });
77
- }
78
- else if (op === 'DROP') {
79
- ops.push({ op: 'DROP', table: match[4] });
80
- }
81
- else if (op === 'ALTER') {
82
- ops.push({ op: 'RENAME', table: match[6], newTable: match[7] });
83
- }
222
+ for (const stmt of statements) {
223
+ ops.push(...ddlMigrationOps(stmt));
224
+ }
225
+ // FTS5 `CREATE VIRTUAL TABLE … USING fts5(…)` is rejected by node-sql-parser
226
+ // (it is not `CREATE TABLE`), so the tolerant parse drops it and the DDL replay
227
+ // never learns the table exists. That makes a dropped-and-recreated FTS table
228
+ // read as "dropped, never recreated" — the `stale-table-reference` false
229
+ // positive on `functions_fts` (whose v17 migration drops the FTS5 surface, then
230
+ // rebuilds it). Recover those creates here so the replay tracks the virtual
231
+ // table's lifecycle like any other table. The recovered CREATE ops are appended
232
+ // after the AST-derived ops; the replay's net result is unaffected by
233
+ // intra-file ordering because the *last* op per table decides its state — a
234
+ // virtual table's DROP is already captured, so a re-CREATE appended after it
235
+ // correctly restores it to known.
236
+ for (const op of virtualTableCreateOps(source)) {
237
+ ops.push(op);
238
+ }
239
+ return ops;
240
+ }
241
+ /** Regex-scan `source` for `CREATE VIRTUAL TABLE [IF NOT EXISTS] <name>` headers
242
+ * and emit a CREATE op per name. This is the recovery path for FTS5 virtual
243
+ * tables, which node-sql-parser cannot parse; a bare identifier (optionally
244
+ * backtick/double-quoted) is the only supported name shape, matching the
245
+ * `DDL_HEADER_RE` the ddl-declarations oracle counts. */
246
+ const VIRTUAL_TABLE_CREATE_RE = /CREATE\s+VIRTUAL\s+TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?([`"']?[A-Za-z_][A-Za-z0-9_$]*[`"']?)/gi;
247
+ function virtualTableCreateOps(source) {
248
+ const ops = [];
249
+ let m;
250
+ while ((m = VIRTUAL_TABLE_CREATE_RE.exec(source)) !== null) {
251
+ const name = stripIdentifier(m[1]);
252
+ if (name)
253
+ ops.push({ op: 'CREATE', table: name });
84
254
  }
85
255
  return ops;
86
256
  }
87
257
  // ── DDL column extraction (Spec 39 — derived applicability) ──────────────────
258
+ //
259
+ // Sites #9 and #10 are the AST replacements for the regex scanners that used to
260
+ // hand-roll paren-depth tracking and quote handling (a SQL parser written one
261
+ // bug at a time). The statement is parsed once by the grammar and the column /
262
+ // constraint / foreign-key facts are read off the definition nodes.
88
263
  /**
89
- * Split a CREATE TABLE column-definition body on top-level commas. Commas
90
- * inside nested parens (type arguments, CHECK clauses) and inside string
91
- * literals are preserved so a column definition is never split mid-expression.
92
- * @param body The text between the CREATE TABLE parens.
93
- * @returns The individual column/constraint definitions.
264
+ * The shared DDL-column extraction body behind `extractDdlTableColumns`,
265
+ * `extractDdlUniqueColumns`, `extractDdlPrimaryKeyColumns`, and
266
+ * `extractDdlNotNullColumns`. Each is the same skeleton — null-dialect → empty,
267
+ * parse the program tolerantly, walk the statements adding lowercased columns to
268
+ * a per-table set via the `columnsFor` helper, fold the map to
269
+ * `Record<table, cols>`. Only the per-statement column selection differs, so it
270
+ * is the `collect` callback here; the null-guard, parse, map lifecycle, and fold
271
+ * are shared. The column-set helper is passed in so a caller that groups by a
272
+ * table derived from the statement (a `UNIQUE (…)` / `PRIMARY KEY (…)`
273
+ * constraint, whose table is the statement's own table rather than a column's)
274
+ * can still route to the right bucket.
94
275
  */
95
- function splitColumnDefs(body) {
96
- const defs = [];
97
- let depth = 0;
98
- let current = '';
99
- let inString = null;
100
- for (let i = 0; i < body.length; i++) {
101
- const ch = body[i];
102
- if (inString) {
103
- current += ch;
104
- if (ch === inString)
105
- inString = null;
106
- continue;
276
+ function extractDdlColumns(source, dialect, collect) {
277
+ if (dialect === null)
278
+ return {}; // honest abstention — no parse under a guessed dialect
279
+ const { statements } = parseSqlProgramTolerant(source, dialect);
280
+ const tableColumns = new Map();
281
+ const columnsFor = (table) => {
282
+ let cols = tableColumns.get(table);
283
+ if (!cols) {
284
+ cols = new Set();
285
+ tableColumns.set(table, cols);
107
286
  }
108
- if (ch === '"' || ch === "'" || ch === '`') {
109
- inString = ch;
110
- current += ch;
111
- continue;
287
+ return cols;
288
+ };
289
+ for (const stmt of statements)
290
+ collect(stmt, columnsFor);
291
+ const result = {};
292
+ for (const [table, cols] of tableColumns)
293
+ result[table] = [...cols];
294
+ return result;
295
+ }
296
+ /**
297
+ * Extract per-table column names from migration SQL — CREATE TABLE column
298
+ * definitions, ALTER TABLE … ADD COLUMN, and the columns of a foreign-key
299
+ * constraint (Drizzle's `ALTER TABLE … ADD CONSTRAINT … FOREIGN KEY
300
+ * ("organization_id") …` declares the tenant column through the constraint, not
301
+ * a column definition). Returns a `Record<table, columns>` with lowercased,
302
+ * deduplicated column names, so the schema reducer can answer "does THIS table
303
+ * carry a tenant-scoping column?" — the per-query question the flat set cannot.
304
+ * @param source Migration/DDL SQL text.
305
+ * @param dialect The corpus's named dialect; null is honest abstention — no
306
+ * parse under a guessed {@link DEFAULT_SQL_DIALECT} (unproven, cannot-fire).
307
+ * @returns Per-table lowercased column-name lists.
308
+ */
309
+ export function extractDdlTableColumns(source, dialect) {
310
+ return extractDdlColumns(source, dialect, (stmt, columnsFor) => {
311
+ for (const col of ddlColumnDefinitions(stmt)) {
312
+ if (col.table)
313
+ columnsFor(col.table).add(col.column.toLowerCase());
314
+ }
315
+ // FK-constraint columns are the tenant-column pass: a table whose only
316
+ // tenant column is declared through `ADD CONSTRAINT … FOREIGN KEY` still
317
+ // surfaces its columns here (Spec 68 — declared inputs).
318
+ for (const fk of astDdlForeignKeys(stmt)) {
319
+ const cols = columnsFor(fk.table);
320
+ for (const column of fk.columns)
321
+ cols.add(column.toLowerCase());
322
+ }
323
+ });
324
+ }
325
+ /**
326
+ * Extract per-table *natural* UNIQUE column names from migration SQL — the
327
+ * bootstrap-lookup signal `missing-org-filter` reads: a query whose predicate
328
+ * carries one of these is a structurally-scoped lookup by a natural key. Covers
329
+ * the three DDL spellings of `UNIQUE`:
330
+ *
331
+ * - column-level: `slug TEXT UNIQUE`
332
+ * - table-level: `UNIQUE (slug)`, `UNIQUE (a, b)`
333
+ * - ALTER: `ALTER TABLE t ADD CONSTRAINT … UNIQUE (col)`
334
+ *
335
+ * PRIMARY KEY is deliberately *excluded*. A surrogate primary key is not a
336
+ * bootstrap lookup: `WHERE id = $1` on a tenant table returns exactly one row
337
+ * selected by a caller-supplied id — that is the IDOR surface the rule exists
338
+ * to catch, not a signal that tenant scoping is unnecessary (see
339
+ * `specs/rule-authenticity-ledger.md:46`, and the Thing 1 correction that
340
+ * narrowed this signal to natural keys).
341
+ *
342
+ * Returns lowercased SQL column names keyed by table. A column that is unique
343
+ * only through a composite constraint still appears — the predicate test is
344
+ * "does the filter name this column", not "is the column alone unique".
345
+ * @param source Migration/DDL SQL text.
346
+ * @param dialect The corpus's named dialect; null is honest abstention — no
347
+ * parse under a guessed {@link DEFAULT_SQL_DIALECT} (unproven, cannot-fire).
348
+ * @returns Per-table lowercased natural-UNIQUE column-name lists.
349
+ */
350
+ export function extractDdlUniqueColumns(source, dialect) {
351
+ return extractDdlColumns(source, dialect, (stmt, columnsFor) => {
352
+ const table = ddlTableNames(stmt)[0] ?? '';
353
+ // Column-level `col … UNIQUE`. PRIMARY KEY is excluded (surrogate PK is the
354
+ // IDOR surface, not a bootstrap-lookup signal) — `ddlColumnDefinitions`
355
+ // carries `unique` and `primaryKey` separately.
356
+ for (const col of ddlColumnDefinitions(stmt)) {
357
+ if (col.unique)
358
+ columnsFor(col.table).add(col.column.toLowerCase());
112
359
  }
113
- if (ch === '(') {
114
- depth++;
115
- current += ch;
116
- continue;
360
+ // Table-level / ALTER `UNIQUE (…)` / `CONSTRAINT x UNIQUE (…)`.
361
+ for (const name of ddlConstraintColumns(stmt, 'unique')) {
362
+ columnsFor(table).add(name.toLowerCase());
117
363
  }
118
- if (ch === ')') {
119
- depth--;
120
- current += ch;
121
- continue;
364
+ });
365
+ }
366
+ /**
367
+ * Extract per-table PRIMARY KEY columns from migration SQL — the surrogate-vs-
368
+ * natural distinction `missing-org-filter` needs to keep PK *separate* from
369
+ * UNIQUE (Spec 69 R3, criterion 8). Covers the DDL spellings of a primary key:
370
+ *
371
+ * - column-level: `id SERIAL PRIMARY KEY`, `id INTEGER PRIMARY KEY`
372
+ * - table-level: `PRIMARY KEY (id)`, `CONSTRAINT pk PRIMARY KEY (id)`
373
+ * - ALTER: `ALTER TABLE t ADD CONSTRAINT pk PRIMARY KEY (col)`
374
+ *
375
+ * Returns lowercased SQL column names keyed by table. A composite PK lists every
376
+ * member column. PRIMARY KEY and UNIQUE are *never* merged here — the caller
377
+ * records them as separate flags so the quiet set can stay natural-UNIQUE-only.
378
+ * @param source Migration/DDL SQL text.
379
+ * @param dialect The corpus's named dialect; null is honest abstention — no
380
+ * parse under a guessed {@link DEFAULT_SQL_DIALECT} (unproven, cannot-fire).
381
+ * @returns Per-table lowercased PRIMARY-KEY column-name lists.
382
+ */
383
+ export function extractDdlPrimaryKeyColumns(source, dialect) {
384
+ return extractDdlColumns(source, dialect, (stmt, columnsFor) => {
385
+ const table = ddlTableNames(stmt)[0] ?? '';
386
+ // Column-level `id … PRIMARY KEY`.
387
+ for (const col of ddlColumnDefinitions(stmt)) {
388
+ if (col.primaryKey)
389
+ columnsFor(col.table).add(col.column.toLowerCase());
122
390
  }
123
- if (ch === ',' && depth === 0) {
124
- defs.push(current);
125
- current = '';
126
- continue;
391
+ // Table-level `PRIMARY KEY (…)` / `CONSTRAINT pk PRIMARY KEY (…)`.
392
+ for (const name of ddlConstraintColumns(stmt, 'primary key')) {
393
+ columnsFor(table).add(name.toLowerCase());
127
394
  }
128
- current += ch;
129
- }
130
- if (current.trim())
131
- defs.push(current);
132
- return defs;
395
+ });
133
396
  }
134
397
  /**
135
- * Extract the leading column name from a single column definition. Table-level
136
- * constraint clauses (PRIMARY KEY, UNIQUE, FOREIGN KEY, CHECK, CONSTRAINT …)
137
- * have no leading column identifier and are skipped.
138
- * @param def A single column or constraint definition.
139
- * @returns The column name, or null when the definition is a table constraint.
398
+ * Extract per-table NOT NULL columns from migration SQL. Column-level only —
399
+ * SQL has no table-level NOT NULL constraint. Returns lowercased SQL column
400
+ * names keyed by table; the resolution fact records the flag separately so a
401
+ * rule can distinguish a required column from a nullable one.
402
+ * @param source Migration/DDL SQL text.
403
+ * @param dialect The corpus's named dialect; null is honest abstention — no
404
+ * parse under a guessed {@link DEFAULT_SQL_DIALECT} (unproven, cannot-fire).
405
+ * @returns Per-table lowercased NOT-NULL column-name lists.
140
406
  */
141
- function leadingColumnName(def) {
142
- const m = /^\s*(?:CONSTRAINT\s+(?:`[^`]+`|"[^"]+"|\w+))?\s*(`[^`]+`|"[^"]+"|\w+)/.exec(def);
143
- if (!m)
144
- return null;
145
- const name = stripIdentifier(m[1]);
146
- const upper = name.toUpperCase();
147
- if (upper === 'PRIMARY' || upper === 'UNIQUE' || upper === 'CONSTRAINT' ||
148
- upper === 'FOREIGN' || upper === 'CHECK' || upper === 'KEY' || upper === 'INDEX') {
149
- return null;
150
- }
151
- return name;
407
+ export function extractDdlNotNullColumns(source, dialect) {
408
+ return extractDdlColumns(source, dialect, (stmt, columnsFor) => {
409
+ for (const col of ddlColumnDefinitions(stmt)) {
410
+ if (col.notNull)
411
+ columnsFor(col.table).add(col.column.toLowerCase());
412
+ }
413
+ });
152
414
  }
153
415
  /**
154
- * Extract per-table column names from migration SQL — CREATE TABLE bodies (via
155
- * a depth-tracking paren scan that finds each matching close paren) and
156
- * ALTER TABLE … ADD COLUMN statements. Returns a `Record<table, columns>` with
157
- * lowercased, deduplicated column names, so the schema reducer can answer
158
- * "does THIS table carry a tenant-scoping column?" — the per-query question the
159
- * flat set cannot.
416
+ * Extract per-table foreign-key references from migration SQL. Covers the DDL
417
+ * spellings of a reference:
418
+ *
419
+ * - column-level: `org_id INTEGER REFERENCES organizations(id)`
420
+ * - table-level: `FOREIGN KEY (org_id) REFERENCES organizations(id)`
421
+ * - ALTER: `ALTER TABLE t ADD CONSTRAINT fk FOREIGN KEY (col) REFERENCES other(col)`
422
+ *
423
+ * Returns lowercased SQL names keyed by the declaring table. The reference is a
424
+ * separate fact from PK/UNIQUE/NOT NULL (Spec 69 R3 — each constraint recorded
425
+ * separately), so a rule can trace which column links to which other table.
160
426
  * @param source Migration/DDL SQL text.
161
- * @returns Per-table lowercased column-name lists.
427
+ * @param dialect The corpus's named dialect; null is honest abstention — no
428
+ * parse under a guessed {@link DEFAULT_SQL_DIALECT} (unproven, cannot-fire).
429
+ * @returns Per-table foreign-key references.
162
430
  */
163
- export function extractDdlTableColumns(source) {
164
- const tableColumns = new Map();
165
- const columnsFor = (table) => {
166
- let cols = tableColumns.get(table);
167
- if (!cols) {
168
- cols = new Set();
169
- tableColumns.set(table, cols);
431
+ export function extractDdlForeignKeys(source, dialect) {
432
+ if (dialect === null)
433
+ return {}; // honest abstention — no parse under a guessed dialect
434
+ const { statements } = parseSqlProgramTolerant(source, dialect);
435
+ const fks = new Map();
436
+ const fksFor = (table) => {
437
+ let list = fks.get(table);
438
+ if (!list) {
439
+ list = [];
440
+ fks.set(table, list);
170
441
  }
171
- return cols;
442
+ return list;
172
443
  };
173
- const createRe = /\bCREATE\s+(?:VIRTUAL\s+)?TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?(`[^`]+`|"[^"]+"|\w+)\s*\(/gi;
174
- let match;
175
- while ((match = createRe.exec(source)) !== null) {
176
- const table = stripIdentifier(match[1]);
177
- const openParen = createRe.lastIndex - 1;
178
- let depth = 0;
179
- let closeParen = -1;
180
- let inString = null;
181
- for (let i = openParen; i < source.length; i++) {
182
- const ch = source[i];
183
- if (inString) {
184
- if (ch === inString)
185
- inString = null;
186
- continue;
187
- }
188
- if (ch === '"' || ch === "'" || ch === '`') {
189
- inString = ch;
190
- continue;
191
- }
192
- if (ch === '(')
193
- depth++;
194
- else if (ch === ')') {
195
- depth--;
196
- if (depth === 0) {
197
- closeParen = i;
198
- break;
444
+ // Dedupe by (column, refTable, refColumn) — the same FK is often re-declared
445
+ // in a later migration (DROP + re-ADD), and the replay keeps the last CREATE.
446
+ const seen = new Set();
447
+ for (const stmt of statements) {
448
+ for (const fk of astDdlForeignKeys(stmt)) {
449
+ const refTable = stripIdentifier(fk.referencesTable).toLowerCase();
450
+ const refCols = fk.referencesColumns.map((c) => stripIdentifier(c).toLowerCase());
451
+ const cols = fk.columns.map((c) => stripIdentifier(c).toLowerCase());
452
+ for (let i = 0; i < cols.length; i++) {
453
+ const key = `${cols[i]}|${refTable}|${refCols[i] ?? ''}`;
454
+ if (!seen.has(key)) {
455
+ seen.add(key);
456
+ fksFor(fk.table).push({ column: cols[i], refTable, refColumn: refCols[i] ?? '' });
199
457
  }
200
458
  }
201
459
  }
202
- if (closeParen === -1) {
203
- createRe.lastIndex = openParen + 1;
204
- continue;
205
- }
206
- const cols = columnsFor(table);
207
- const body = source.slice(openParen + 1, closeParen);
208
- for (const def of splitColumnDefs(body)) {
209
- const name = leadingColumnName(def);
210
- if (name)
211
- cols.add(name.toLowerCase());
212
- }
213
- createRe.lastIndex = closeParen + 1;
214
- }
215
- const alterRe = /\bALTER\s+TABLE\s+(?:IF\s+EXISTS\s+)?(`[^`]+`|"[^"]+"|\w+)\s+ADD\s+(?:COLUMN\s+)?(?:IF\s+NOT\s+EXISTS\s+)?(`[^`]+`|"[^"]+"|\w+)/gi;
216
- while ((match = alterRe.exec(source)) !== null) {
217
- columnsFor(stripIdentifier(match[1])).add(stripIdentifier(match[2]).toLowerCase());
218
460
  }
219
461
  const result = {};
220
- for (const [table, cols] of tableColumns)
221
- result[table] = [...cols];
462
+ for (const [table, list] of fks)
463
+ result[table] = list;
222
464
  return result;
223
465
  }
224
466
  /**
@@ -229,16 +471,54 @@ export function extractDdlTableColumns(source) {
229
471
  * column?" without materializing per-table column lists. The flat union of
230
472
  * {@link extractDdlTableColumns}.
231
473
  * @param source Migration/DDL SQL text.
474
+ * @param dialect The corpus's named dialect; null is honest abstention — no
475
+ * parse under a guessed {@link DEFAULT_SQL_DIALECT} (unproven, cannot-fire).
232
476
  * @returns The set of column names declared across the source.
233
477
  */
234
- export function extractDdlColumnNames(source) {
478
+ export function extractDdlColumnNames(source, dialect) {
235
479
  const columns = new Set();
236
- for (const cols of Object.values(extractDdlTableColumns(source))) {
480
+ for (const cols of Object.values(extractDdlTableColumns(source, dialect))) {
237
481
  for (const c of cols)
238
482
  columns.add(c);
239
483
  }
240
484
  return [...columns];
241
485
  }
486
+ /**
487
+ * Extract the DDL SQL fragments embedded in host-language source — the TS/JS
488
+ * migration files whose `CREATE/DROP/ALTER TABLE` statements live inside string
489
+ * or template literals (Durable-Object-local DDL and raw `sql.exec(...)` bodies
490
+ * that migration discovery never sees). This is the literal-*extraction* half of
491
+ * that path: the raw TS/JS text carries the SQL verbatim inside the literals, so
492
+ * this names the strings to hand to the AST extractors — it is NOT itself a SQL
493
+ * parse, and it is deliberately NOT a general "find SQL anywhere" sweep. It only
494
+ * matches a literal that contains a CREATE/DROP/ALTER TABLE (or VIRTUAL TABLE)
495
+ * header, the same boundary the legacy schema-code visitor drew; every matched
496
+ * fragment is then parsed by {@link parseMigrationOps} /
497
+ * {@link extractDdlTableColumns} downstream.
498
+ *
499
+ * Returns the fragments joined as a `;`-separated program (so a template literal
500
+ * holding several statements parses as one), or `null` when the source carries no
501
+ * DDL-bearing literal.
502
+ * @param source The raw TS/JS (or other host-language) source text.
503
+ * @returns Pure SQL for the DDL extractors, or null when none is present.
504
+ */
505
+ export function extractDdlSqlFromSource(source) {
506
+ const templateRe = /`([^`]*(?:CREATE|DROP|ALTER)\s+(?:TABLE|VIRTUAL\s+TABLE)\s+[^`]+)`/gis;
507
+ const stringRe = /(["'])((?:\s*(?:CREATE|DROP|ALTER)\s+(?:TABLE|VIRTUAL\s+TABLE)\s+[^"']+))\1/gis;
508
+ const fragments = [];
509
+ let m;
510
+ while ((m = templateRe.exec(source)) !== null) {
511
+ const sql = m[1].trim();
512
+ if (sql)
513
+ fragments.push(sql);
514
+ }
515
+ while ((m = stringRe.exec(source)) !== null) {
516
+ const sql = m[2].trim();
517
+ if (sql)
518
+ fragments.push(sql);
519
+ }
520
+ return fragments.length > 0 ? fragments.join(';\n') : null;
521
+ }
242
522
  // ── One-hop barrel re-export resolution (Spec 33 item 9) ─────────────────────
243
523
  /**
244
524
  * Extract `export * from 'x'` and `export { a, b as c } from 'x'` statements
@@ -325,56 +605,26 @@ export function readModuleFromDisk(fromFile, specifier) {
325
605
  return null;
326
606
  }
327
607
  }
328
- /** Lightweight DDL presence marker — detection only, no capture groups. */
329
- const DDL_PRESENCE_RE = /(?:CREATE|DROP|ALTER)\s+(?:VIRTUAL\s+)?TABLE/i;
330
- /**
331
- * Detect whether an SQL file contains any DDL statement without materializing
332
- * the whole file. Streams in 1 MB chunks, carrying a small tail across chunk
333
- * boundaries so a marker split at "CREATE TA/BLE" is still caught. Used by the
334
- * schema-sql visitor for oversized orphans yielded with empty source by stage 1.
335
- * @param filePath
336
- * @returns
337
- */
338
- export async function sqlFileHasDdl(filePath) {
339
- const CHUNK = 1024 * 1024; // 1 MB
340
- const CARRY = 32; // "ALTER VIRTUAL TABLE IF NOT EXISTS" — enough to bridge a boundary
341
- const handle = await fs.open(filePath, 'r');
342
- try {
343
- const buffer = Buffer.alloc(CHUNK);
344
- let carry = '';
345
- let pos = 0;
346
- for (;;) {
347
- const { bytesRead } = await handle.read(buffer, 0, CHUNK, pos);
348
- if (bytesRead === 0)
349
- break;
350
- const text = carry + buffer.toString('utf8', 0, bytesRead);
351
- if (DDL_PRESENCE_RE.test(text))
352
- return true;
353
- carry = text.slice(-CARRY);
354
- pos += bytesRead;
355
- }
356
- return false;
357
- }
358
- finally {
359
- await handle.close();
360
- }
361
- }
362
608
  /**
363
609
  * Extract migration ops from an SQL file, honoring stage-1 streaming: when
364
- * `sourceCode` is empty the file was too large to materialize, so DDL presence
365
- * is detected by streaming; only a real oversized migration is read in full
366
- * (rare). Returns a `skipped` flag so the pipeline can surface the skip in
367
- * coverage without emitting a violation.
610
+ * `sourceCode` is empty the file was too large to materialize, so it is read in
611
+ * full only to answer "is this a migration or a data dump?" — the AST successor
612
+ * to site #8's streaming `CREATE|DROP|ALTER TABLE` regex. The parsed statements
613
+ * decide: a file with no table DDL is a data dump and is skipped (surfaced in
614
+ * coverage, no violation); one with table DDL has its ops/columns extracted.
615
+ * Only a real oversized migration is read in full (rare).
368
616
  * @param filePath
369
617
  * @param sourceCode
618
+ * @param dialect The corpus's named dialect; null is honest abstention — no
619
+ * parse under a guessed {@link DEFAULT_SQL_DIALECT} (unproven, cannot-fire).
370
620
  * @returns
371
621
  */
372
- export async function extractMigrationOpsFromFile(filePath, sourceCode) {
622
+ export async function extractMigrationOpsFromFile(filePath, sourceCode, dialect) {
373
623
  if (sourceCode !== '') {
374
624
  return {
375
- ops: parseMigrationOps(sourceCode),
376
- columns: extractDdlColumnNames(sourceCode),
377
- tableColumns: extractDdlTableColumns(sourceCode),
625
+ ops: parseMigrationOps(sourceCode, dialect),
626
+ columns: extractDdlColumnNames(sourceCode, dialect),
627
+ tableColumns: extractDdlTableColumns(sourceCode, dialect),
378
628
  skipped: false,
379
629
  bytes: Buffer.byteLength(sourceCode),
380
630
  };
@@ -390,14 +640,21 @@ export async function extractMigrationOpsFromFile(filePath, sourceCode) {
390
640
  // Empty or small file whose read produced an empty string — nothing to do.
391
641
  return { ops: [], columns: [], tableColumns: {}, skipped: false, bytes: size };
392
642
  }
393
- if (!(await sqlFileHasDdl(filePath))) {
643
+ const full = await fs.readFile(filePath, 'utf-8');
644
+ if (dialect === null) {
645
+ // Honest abstention — a null dialect must not guess sqlite just to answer
646
+ // "migration or data dump". Report no ops/columns and let the caller's
647
+ // dialect-undetermined cannot-fire reason carry the abstention.
648
+ return { ops: [], columns: [], tableColumns: {}, skipped: false, bytes: size };
649
+ }
650
+ const { statements } = parseSqlProgramTolerant(full, dialect);
651
+ if (!statements.some((stmt) => isDdlStatement(stmt))) {
394
652
  return { ops: [], columns: [], tableColumns: {}, skipped: true, bytes: size };
395
653
  }
396
- const full = await fs.readFile(filePath, 'utf-8');
397
654
  return {
398
- ops: parseMigrationOps(full),
399
- columns: extractDdlColumnNames(full),
400
- tableColumns: extractDdlTableColumns(full),
655
+ ops: statements.flatMap((stmt) => ddlMigrationOps(stmt)),
656
+ columns: extractDdlColumnNames(full, dialect),
657
+ tableColumns: extractDdlTableColumns(full, dialect),
401
658
  skipped: false,
402
659
  bytes: size,
403
660
  };