code-auditor-mcp 2.6.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (347) hide show
  1. package/README.md +319 -147
  2. package/dist/analyzers/analyzerUtils.d.ts +13 -11
  3. package/dist/analyzers/analyzerUtils.d.ts.map +1 -1
  4. package/dist/analyzers/analyzerUtils.js +22 -56
  5. package/dist/analyzers/analyzerUtils.js.map +1 -1
  6. package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts.map +1 -1
  7. package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.d.ts.map +1 -1
  8. package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.js.map +1 -1
  9. package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
  10. package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
  11. package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -1
  12. package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -1
  13. package/dist/analyzers/dataAccessAnalyzer.d.ts.map +1 -1
  14. package/dist/analyzers/dataAccessAnalyzer.js +50 -24
  15. package/dist/analyzers/dataAccessAnalyzer.js.map +1 -1
  16. package/dist/analyzers/documentationAnalyzer.d.ts +4 -1
  17. package/dist/analyzers/documentationAnalyzer.d.ts.map +1 -1
  18. package/dist/analyzers/documentationAnalyzer.js +210 -111
  19. package/dist/analyzers/documentationAnalyzer.js.map +1 -1
  20. package/dist/analyzers/dryAnalyzer.d.ts.map +1 -1
  21. package/dist/analyzers/dryAnalyzer.js +190 -58
  22. package/dist/analyzers/dryAnalyzer.js.map +1 -1
  23. package/dist/analyzers/invariantsAnalyzer.d.ts +20 -0
  24. package/dist/analyzers/invariantsAnalyzer.d.ts.map +1 -0
  25. package/dist/analyzers/invariantsAnalyzer.js +148 -0
  26. package/dist/analyzers/invariantsAnalyzer.js.map +1 -0
  27. package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
  28. package/dist/analyzers/reactAnalyzer.js +2 -2
  29. package/dist/analyzers/reactAnalyzer.js.map +1 -1
  30. package/dist/analyzers/schemaAnalyzer.d.ts +2 -0
  31. package/dist/analyzers/schemaAnalyzer.d.ts.map +1 -1
  32. package/dist/analyzers/schemaAnalyzer.js +306 -147
  33. package/dist/analyzers/schemaAnalyzer.js.map +1 -1
  34. package/dist/analyzers/solidAnalyzer.d.ts.map +1 -1
  35. package/dist/analyzers/solidAnalyzer.js +145 -119
  36. package/dist/analyzers/solidAnalyzer.js.map +1 -1
  37. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +3 -1
  38. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
  39. package/dist/analyzers/universal/UniversalDRYAnalyzer.js +41 -1
  40. package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
  41. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
  42. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +8 -8
  43. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
  44. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
  45. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +6 -6
  46. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
  47. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
  48. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
  49. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +1 -1
  50. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
  51. package/dist/api/index.js +1 -0
  52. package/dist/api/index.js.map +1 -1
  53. package/dist/auditRunner.d.ts.map +1 -1
  54. package/dist/auditRunner.js +367 -24
  55. package/dist/auditRunner.js.map +1 -1
  56. package/dist/cli.d.ts +1 -1
  57. package/dist/cli.d.ts.map +1 -1
  58. package/dist/cli.js +740 -18
  59. package/dist/cli.js.map +1 -1
  60. package/dist/codeIndexDB-enhanced.d.ts +35 -13
  61. package/dist/codeIndexDB-enhanced.d.ts.map +1 -1
  62. package/dist/codeIndexDB-enhanced.js +311 -214
  63. package/dist/codeIndexDB-enhanced.js.map +1 -1
  64. package/dist/codeIndexDB.d.ts +222 -0
  65. package/dist/codeIndexDB.d.ts.map +1 -0
  66. package/dist/codeIndexDB.js +2042 -0
  67. package/dist/codeIndexDB.js.map +1 -0
  68. package/dist/codeIndexService.d.ts.map +1 -1
  69. package/dist/codeIndexService.js.map +1 -1
  70. package/dist/componentScanner.d.ts +14 -8
  71. package/dist/componentScanner.d.ts.map +1 -1
  72. package/dist/componentScanner.js +136 -113
  73. package/dist/componentScanner.js.map +1 -1
  74. package/dist/config/configLoader.d.ts.map +1 -1
  75. package/dist/config/configLoader.js +10 -7
  76. package/dist/config/configLoader.js.map +1 -1
  77. package/dist/config/defaults.d.ts.map +1 -1
  78. package/dist/constants.js.map +1 -1
  79. package/dist/fingerprint.d.ts +15 -0
  80. package/dist/fingerprint.d.ts.map +1 -0
  81. package/dist/fingerprint.js +32 -0
  82. package/dist/fingerprint.js.map +1 -0
  83. package/dist/functionScanner.d.ts +5 -0
  84. package/dist/functionScanner.d.ts.map +1 -1
  85. package/dist/functionScanner.js +417 -341
  86. package/dist/functionScanner.js.map +1 -1
  87. package/dist/generators/AWSQConfigGenerator.d.ts.map +1 -1
  88. package/dist/generators/AiderConfigGenerator.d.ts.map +1 -1
  89. package/dist/generators/BaseConfigGenerator.d.ts.map +1 -1
  90. package/dist/generators/BaseConfigGenerator.js.map +1 -1
  91. package/dist/generators/ClaudeConfigGenerator.d.ts.map +1 -1
  92. package/dist/generators/ClineConfigGenerator.d.ts.map +1 -1
  93. package/dist/generators/CodeiumConfigGenerator.d.ts.map +1 -1
  94. package/dist/generators/ConfigGeneratorFactory.d.ts.map +1 -1
  95. package/dist/generators/ConfigGeneratorFactory.js.map +1 -1
  96. package/dist/generators/ContinueConfigGenerator.d.ts.map +1 -1
  97. package/dist/generators/CopilotConfigGenerator.d.ts.map +1 -1
  98. package/dist/generators/CursorConfigGenerator.d.ts.map +1 -1
  99. package/dist/generators/JetBrainsConfigGenerator.d.ts.map +1 -1
  100. package/dist/generators/VSCodeConfigGenerator.d.ts.map +1 -1
  101. package/dist/grammars/tree-sitter-go.wasm +0 -0
  102. package/dist/grammars/tree-sitter-javascript.wasm +0 -0
  103. package/dist/grammars/tree-sitter-tsx.wasm +0 -0
  104. package/dist/grammars/tree-sitter-typescript.wasm +0 -0
  105. package/dist/index.d.ts +1 -0
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +2 -1
  108. package/dist/index.js.map +1 -1
  109. package/dist/invariants/index.d.ts +9 -0
  110. package/dist/invariants/index.d.ts.map +1 -0
  111. package/dist/invariants/index.js +4 -0
  112. package/dist/invariants/index.js.map +1 -0
  113. package/dist/invariants/invariant-rules.schema.json +137 -0
  114. package/dist/invariants/ruleEngine.d.ts +32 -0
  115. package/dist/invariants/ruleEngine.d.ts.map +1 -0
  116. package/dist/invariants/ruleEngine.js +536 -0
  117. package/dist/invariants/ruleEngine.js.map +1 -0
  118. package/dist/invariants/ruleValidator.d.ts +17 -0
  119. package/dist/invariants/ruleValidator.d.ts.map +1 -0
  120. package/dist/invariants/ruleValidator.js +264 -0
  121. package/dist/invariants/ruleValidator.js.map +1 -0
  122. package/dist/invariants/types.d.ts +78 -0
  123. package/dist/invariants/types.d.ts.map +1 -0
  124. package/dist/invariants/types.js +5 -0
  125. package/dist/invariants/types.js.map +1 -0
  126. package/dist/languages/LanguageOrchestrator.d.ts.map +1 -1
  127. package/dist/languages/LanguageOrchestrator.js.map +1 -1
  128. package/dist/languages/LanguageRegistry.d.ts.map +1 -1
  129. package/dist/languages/RuntimeManager.d.ts.map +1 -1
  130. package/dist/languages/RuntimeManager.js +1 -1
  131. package/dist/languages/RuntimeManager.js.map +1 -1
  132. package/dist/languages/UniversalAnalyzer.d.ts.map +1 -1
  133. package/dist/languages/UniversalAnalyzer.js.map +1 -1
  134. package/dist/languages/adapterBridge.d.ts +102 -0
  135. package/dist/languages/adapterBridge.d.ts.map +1 -0
  136. package/dist/languages/adapterBridge.js +382 -0
  137. package/dist/languages/adapterBridge.js.map +1 -0
  138. package/dist/languages/go/GoAdapter.d.ts +37 -26
  139. package/dist/languages/go/GoAdapter.d.ts.map +1 -1
  140. package/dist/languages/go/GoAdapter.js +560 -281
  141. package/dist/languages/go/GoAdapter.js.map +1 -1
  142. package/dist/languages/index.d.ts +5 -2
  143. package/dist/languages/index.d.ts.map +1 -1
  144. package/dist/languages/index.js +11 -9
  145. package/dist/languages/index.js.map +1 -1
  146. package/dist/languages/tree-sitter/converter.d.ts +43 -0
  147. package/dist/languages/tree-sitter/converter.d.ts.map +1 -0
  148. package/dist/languages/tree-sitter/converter.js +150 -0
  149. package/dist/languages/tree-sitter/converter.js.map +1 -0
  150. package/dist/languages/tree-sitter/parser.d.ts +36 -0
  151. package/dist/languages/tree-sitter/parser.d.ts.map +1 -0
  152. package/dist/languages/tree-sitter/parser.js +114 -0
  153. package/dist/languages/tree-sitter/parser.js.map +1 -0
  154. package/dist/languages/types.d.ts +11 -0
  155. package/dist/languages/types.d.ts.map +1 -1
  156. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +92 -0
  157. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -0
  158. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +951 -0
  159. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -0
  160. package/dist/mcp-tools/projectTasks.d.ts +80 -11
  161. package/dist/mcp-tools/projectTasks.d.ts.map +1 -1
  162. package/dist/mcp-tools/projectTasks.js +279 -13
  163. package/dist/mcp-tools/projectTasks.js.map +1 -1
  164. package/dist/mcp-tools/whitelistTools.d.ts +21 -21
  165. package/dist/mcp-tools/whitelistTools.d.ts.map +1 -1
  166. package/dist/mcp-tools/workflowGuide.d.ts.map +1 -1
  167. package/dist/mcp-tools/workflowGuide.js +130 -126
  168. package/dist/mcp-tools/workflowGuide.js.map +1 -1
  169. package/dist/mcp-tools-shared.d.ts.map +1 -1
  170. package/dist/mcp-tools-shared.js.map +1 -1
  171. package/dist/mcp-ui-simple.js +1 -1
  172. package/dist/mcp-ui-simple.js.map +1 -1
  173. package/dist/mcp.d.ts +1 -1
  174. package/dist/mcp.d.ts.map +1 -1
  175. package/dist/mcp.js +1455 -1132
  176. package/dist/mcp.js.map +1 -1
  177. package/dist/mcpAuditJobs.d.ts +4 -0
  178. package/dist/mcpAuditJobs.d.ts.map +1 -1
  179. package/dist/mcpAuditJobs.js +49 -2
  180. package/dist/mcpAuditJobs.js.map +1 -1
  181. package/dist/mcpDiagnostics.d.ts.map +1 -1
  182. package/dist/mcpDiagnostics.js +8 -5
  183. package/dist/mcpDiagnostics.js.map +1 -1
  184. package/dist/mcpToolErrors.d.ts.map +1 -1
  185. package/dist/mcpToolErrors.js.map +1 -1
  186. package/dist/native/ast-grep-napi.darwin-arm64.node +0 -0
  187. package/dist/native/ast-grep-napi.darwin-x64.node +0 -0
  188. package/dist/native/ast-grep-napi.linux-arm64-gnu.node +0 -0
  189. package/dist/native/ast-grep-napi.linux-arm64-musl.node +0 -0
  190. package/dist/native/ast-grep-napi.linux-x64-gnu.node +0 -0
  191. package/dist/native/ast-grep-napi.linux-x64-musl.node +0 -0
  192. package/dist/native/ast-grep-napi.win32-x64-msvc.node +0 -0
  193. package/dist/native-bootstrap.d.ts +15 -0
  194. package/dist/native-bootstrap.d.ts.map +1 -0
  195. package/dist/native-bootstrap.js +75 -0
  196. package/dist/native-bootstrap.js.map +1 -0
  197. package/dist/reporting/csvReportGenerator.d.ts.map +1 -1
  198. package/dist/reporting/htmlReportGenerator.d.ts.map +1 -1
  199. package/dist/reporting/jsonReportGenerator.d.ts.map +1 -1
  200. package/dist/reporting/reportGenerator.d.ts.map +1 -1
  201. package/dist/reporting/reportGenerator.js +4 -0
  202. package/dist/reporting/reportGenerator.js.map +1 -1
  203. package/dist/reporting/sarifReportGenerator.d.ts +39 -0
  204. package/dist/reporting/sarifReportGenerator.d.ts.map +1 -0
  205. package/dist/reporting/sarifReportGenerator.js +229 -0
  206. package/dist/reporting/sarifReportGenerator.js.map +1 -0
  207. package/dist/search/QueryParser.d.ts +41 -0
  208. package/dist/search/QueryParser.d.ts.map +1 -1
  209. package/dist/search/QueryParser.js +200 -19
  210. package/dist/search/QueryParser.js.map +1 -1
  211. package/dist/services/CodeMapGenerator.d.ts.map +1 -1
  212. package/dist/services/CodeMapGenerator.js +4 -4
  213. package/dist/services/CodeMapGenerator.js.map +1 -1
  214. package/dist/services/ProjectTaskRepository.d.ts +34 -9
  215. package/dist/services/ProjectTaskRepository.d.ts.map +1 -1
  216. package/dist/services/ProjectTaskRepository.js +385 -10
  217. package/dist/services/ProjectTaskRepository.js.map +1 -1
  218. package/dist/services/SchemaParser.d.ts.map +1 -1
  219. package/dist/services/SchemaParser.js +5 -8
  220. package/dist/services/SchemaParser.js.map +1 -1
  221. package/dist/services/auditJobService.d.ts +1 -1
  222. package/dist/services/projectTaskHelpers.js.map +1 -1
  223. package/dist/services/whitelistService.d.ts.map +1 -1
  224. package/dist/services/whitelistService.js +1 -1
  225. package/dist/services/whitelistService.js.map +1 -1
  226. package/dist/tool-registry.d.ts +79 -0
  227. package/dist/tool-registry.d.ts.map +1 -0
  228. package/dist/tool-registry.js +139 -0
  229. package/dist/tool-registry.js.map +1 -0
  230. package/dist/types/projectTask.d.ts +31 -0
  231. package/dist/types/projectTask.d.ts.map +1 -1
  232. package/dist/types.d.ts +26 -2
  233. package/dist/types.d.ts.map +1 -1
  234. package/dist/types.js.map +1 -1
  235. package/dist/ui/InteractivePrompts.d.ts.map +1 -1
  236. package/dist/ui/InteractivePrompts.js.map +1 -1
  237. package/dist/utils/astParser.d.ts +31 -38
  238. package/dist/utils/astParser.d.ts.map +1 -1
  239. package/dist/utils/astParser.js +138 -196
  240. package/dist/utils/astParser.js.map +1 -1
  241. package/dist/utils/astUtils.d.ts +87 -58
  242. package/dist/utils/astUtils.d.ts.map +1 -1
  243. package/dist/utils/astUtils.js +852 -581
  244. package/dist/utils/astUtils.js.map +1 -1
  245. package/dist/utils/componentPatterns.js.map +1 -1
  246. package/dist/utils/componentResponsibility.d.ts +13 -9
  247. package/dist/utils/componentResponsibility.d.ts.map +1 -1
  248. package/dist/utils/componentResponsibility.js +236 -206
  249. package/dist/utils/componentResponsibility.js.map +1 -1
  250. package/dist/utils/dependencyExtractor.d.ts +11 -6
  251. package/dist/utils/dependencyExtractor.d.ts.map +1 -1
  252. package/dist/utils/dependencyExtractor.js +200 -119
  253. package/dist/utils/dependencyExtractor.js.map +1 -1
  254. package/dist/utils/fileDiscovery.d.ts +1 -1
  255. package/dist/utils/fileDiscovery.d.ts.map +1 -1
  256. package/dist/utils/fileDiscovery.js.map +1 -1
  257. package/dist/utils/jsDocParser.d.ts +27 -30
  258. package/dist/utils/jsDocParser.d.ts.map +1 -1
  259. package/dist/utils/jsDocParser.js +271 -207
  260. package/dist/utils/jsDocParser.js.map +1 -1
  261. package/dist/utils/reactDetection.d.ts +27 -12
  262. package/dist/utils/reactDetection.d.ts.map +1 -1
  263. package/dist/utils/reactDetection.js +331 -219
  264. package/dist/utils/reactDetection.js.map +1 -1
  265. package/dist/workers/auditWorker.js +17 -3
  266. package/dist/workers/auditWorker.js.map +1 -1
  267. package/package.json +54 -51
  268. package/dist/adapters/GoAdapter.d.ts +0 -53
  269. package/dist/adapters/GoAdapter.d.ts.map +0 -1
  270. package/dist/adapters/GoAdapter.js +0 -611
  271. package/dist/adapters/GoAdapter.js.map +0 -1
  272. package/dist/adapters/GoConfig.d.ts +0 -35
  273. package/dist/adapters/GoConfig.d.ts.map +0 -1
  274. package/dist/adapters/GoConfig.js +0 -155
  275. package/dist/adapters/GoConfig.js.map +0 -1
  276. package/dist/adapters/LanguageAdapter.d.ts +0 -135
  277. package/dist/adapters/LanguageAdapter.d.ts.map +0 -1
  278. package/dist/adapters/LanguageAdapter.js +0 -47
  279. package/dist/adapters/LanguageAdapter.js.map +0 -1
  280. package/dist/adapters/TypeScriptAdapter.d.ts +0 -43
  281. package/dist/adapters/TypeScriptAdapter.d.ts.map +0 -1
  282. package/dist/adapters/TypeScriptAdapter.js +0 -386
  283. package/dist/adapters/TypeScriptAdapter.js.map +0 -1
  284. package/dist/adapters/UniversalAnalyzer.d.ts +0 -42
  285. package/dist/adapters/UniversalAnalyzer.d.ts.map +0 -1
  286. package/dist/adapters/UniversalAnalyzer.js +0 -103
  287. package/dist/adapters/UniversalAnalyzer.js.map +0 -1
  288. package/dist/adapters/UniversalSOLIDAnalyzer.d.ts +0 -48
  289. package/dist/adapters/UniversalSOLIDAnalyzer.d.ts.map +0 -1
  290. package/dist/adapters/UniversalSOLIDAnalyzer.js +0 -178
  291. package/dist/adapters/UniversalSOLIDAnalyzer.js.map +0 -1
  292. package/dist/adapters/solidAnalyzerCompat.d.ts +0 -21
  293. package/dist/adapters/solidAnalyzerCompat.d.ts.map +0 -1
  294. package/dist/adapters/solidAnalyzerCompat.js +0 -78
  295. package/dist/adapters/solidAnalyzerCompat.js.map +0 -1
  296. package/dist/analyzers/dataAccessAnalyzerCompat.d.ts +0 -20
  297. package/dist/analyzers/dataAccessAnalyzerCompat.d.ts.map +0 -1
  298. package/dist/analyzers/dataAccessAnalyzerCompat.js +0 -59
  299. package/dist/analyzers/dataAccessAnalyzerCompat.js.map +0 -1
  300. package/dist/analyzers/documentationAnalyzerCompat.d.ts +0 -20
  301. package/dist/analyzers/documentationAnalyzerCompat.d.ts.map +0 -1
  302. package/dist/analyzers/documentationAnalyzerCompat.js +0 -52
  303. package/dist/analyzers/documentationAnalyzerCompat.js.map +0 -1
  304. package/dist/analyzers/dryAnalyzerCompat.d.ts +0 -20
  305. package/dist/analyzers/dryAnalyzerCompat.d.ts.map +0 -1
  306. package/dist/analyzers/dryAnalyzerCompat.js +0 -44
  307. package/dist/analyzers/dryAnalyzerCompat.js.map +0 -1
  308. package/dist/analyzers/schemaAnalyzerCompat.d.ts +0 -20
  309. package/dist/analyzers/schemaAnalyzerCompat.d.ts.map +0 -1
  310. package/dist/analyzers/schemaAnalyzerCompat.js +0 -69
  311. package/dist/analyzers/schemaAnalyzerCompat.js.map +0 -1
  312. package/dist/analyzers/solidAnalyzerCompat.d.ts +0 -20
  313. package/dist/analyzers/solidAnalyzerCompat.d.ts.map +0 -1
  314. package/dist/analyzers/solidAnalyzerCompat.js +0 -78
  315. package/dist/analyzers/solidAnalyzerCompat.js.map +0 -1
  316. package/dist/codeIndexDb.d.ts +0 -394
  317. package/dist/codeIndexDb.d.ts.map +0 -1
  318. package/dist/codeIndexDb.js +0 -2077
  319. package/dist/codeIndexDb.js.map +0 -1
  320. package/dist/languages/typescript/TypeScriptAdapter.d.ts +0 -108
  321. package/dist/languages/typescript/TypeScriptAdapter.d.ts.map +0 -1
  322. package/dist/languages/typescript/TypeScriptAdapter.js +0 -567
  323. package/dist/languages/typescript/TypeScriptAdapter.js.map +0 -1
  324. package/dist/languages/typescript/test-extraction.d.ts +0 -2
  325. package/dist/languages/typescript/test-extraction.d.ts.map +0 -1
  326. package/dist/languages/typescript/test-extraction.js +0 -36
  327. package/dist/languages/typescript/test-extraction.js.map +0 -1
  328. package/dist/mcp-hybrid.d.ts +0 -10
  329. package/dist/mcp-hybrid.d.ts.map +0 -1
  330. package/dist/mcp-hybrid.js +0 -41
  331. package/dist/mcp-hybrid.js.map +0 -1
  332. package/dist/mcp-index.d.ts +0 -13
  333. package/dist/mcp-index.d.ts.map +0 -1
  334. package/dist/mcp-index.js +0 -123
  335. package/dist/mcp-index.js.map +0 -1
  336. package/dist/mcp-standalone.d.ts +0 -3
  337. package/dist/mcp-standalone.d.ts.map +0 -1
  338. package/dist/mcp-standalone.js +0 -1201
  339. package/dist/mcp-standalone.js.map +0 -1
  340. package/dist/mcp-ui-server.d.ts +0 -27
  341. package/dist/mcp-ui-server.d.ts.map +0 -1
  342. package/dist/mcp-ui-server.js +0 -484
  343. package/dist/mcp-ui-server.js.map +0 -1
  344. package/dist/test-multi-strategy-search.d.ts +0 -3
  345. package/dist/test-multi-strategy-search.d.ts.map +0 -1
  346. package/dist/test-multi-strategy-search.js +0 -170
  347. package/dist/test-multi-strategy-search.js.map +0 -1
@@ -0,0 +1,75 @@
1
+ /**
2
+ * native-bootstrap.ts
3
+ *
4
+ * Sets NAPI_RS_NATIVE_LIBRARY_PATH before any module imports @ast-grep/napi.
5
+ *
6
+ * npm cli#4828 prevents platform-specific optionalDependencies from installing
7
+ * on stock npm. Our mitigation: we ship bundled .node files for all supported
8
+ * platforms in dist/native/. This module detects the current platform and points
9
+ * the @ast-grep/napi loader at the correct bundled binary.
10
+ *
11
+ * This file MUST be the FIRST import in every entry point (cli.ts, mcp.ts).
12
+ * It imports only Node.js built-ins — nothing that could pull in @ast-grep/napi.
13
+ */
14
+ import { platform, arch } from 'node:process';
15
+ import { existsSync, readFileSync } from 'node:fs';
16
+ import { dirname, join } from 'node:path';
17
+ import { fileURLToPath } from 'node:url';
18
+ import { execSync } from 'node:child_process';
19
+ // ── Musl detection (same logic as @ast-grep/napi's isMusl) ──────────────────
20
+ function isMusl() {
21
+ if (platform !== 'linux')
22
+ return false;
23
+ // Approach 1: check /usr/bin/ldd
24
+ try {
25
+ if (readFileSync('/usr/bin/ldd', 'utf-8').includes('musl'))
26
+ return true;
27
+ }
28
+ catch { /* not found */ }
29
+ // Approach 2: spawn ldd --version
30
+ try {
31
+ const out = execSync('ldd --version', { encoding: 'utf8', timeout: 2000 });
32
+ if (out.includes('musl'))
33
+ return true;
34
+ }
35
+ catch { /* not found or timed out */ }
36
+ return false;
37
+ }
38
+ // ── Platform → binding name mapping ────────────────────────────────────────
39
+ function getBindingFileName() {
40
+ if (platform === 'darwin') {
41
+ if (arch === 'arm64')
42
+ return 'ast-grep-napi.darwin-arm64.node';
43
+ if (arch === 'x64')
44
+ return 'ast-grep-napi.darwin-x64.node';
45
+ }
46
+ if (platform === 'win32') {
47
+ if (arch === 'x64')
48
+ return 'ast-grep-napi.win32-x64-msvc.node';
49
+ }
50
+ if (platform === 'linux') {
51
+ const musl = isMusl();
52
+ if (arch === 'x64')
53
+ return musl ? 'ast-grep-napi.linux-x64-musl.node' : 'ast-grep-napi.linux-x64-gnu.node';
54
+ if (arch === 'arm64')
55
+ return musl ? 'ast-grep-napi.linux-arm64-musl.node' : 'ast-grep-napi.linux-arm64-gnu.node';
56
+ }
57
+ return null;
58
+ }
59
+ // ── Bootstrap ──────────────────────────────────────────────────────────────
60
+ function bootstrapNativeBinding() {
61
+ // User override always wins — if they set it, don't touch
62
+ if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH)
63
+ return;
64
+ const bindingName = getBindingFileName();
65
+ if (!bindingName)
66
+ return;
67
+ // Resolve relative to this module's directory (dist/)
68
+ const __dirname = dirname(fileURLToPath(import.meta.url));
69
+ const bundledPath = join(__dirname, 'native', bindingName);
70
+ if (existsSync(bundledPath)) {
71
+ process.env.NAPI_RS_NATIVE_LIBRARY_PATH = bundledPath;
72
+ }
73
+ }
74
+ bootstrapNativeBinding();
75
+ //# sourceMappingURL=native-bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-bootstrap.js","sourceRoot":"","sources":["../src/native-bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,+EAA+E;AAE/E,SAAS,MAAM;IACb,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAEvC,iCAAiC;IACjC,IAAI,CAAC;QACH,IAAI,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC;IAE3B,kCAAkC;IAClC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC,CAAC,4BAA4B,CAAC,CAAC;IAExC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAE9E,SAAS,kBAAkB;IACzB,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO,iCAAiC,CAAC;QAC/D,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO,+BAA+B,CAAC;IAC7D,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO,mCAAmC,CAAC;IACjE,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC;QACtB,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,kCAAkC,CAAC;QAC3G,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,oCAAoC,CAAC;IACnH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAE9E,SAAS,sBAAsB;IAC7B,0DAA0D;IAC1D,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B;QAAE,OAAO;IAEpD,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,IAAI,CAAC,WAAW;QAAE,OAAO;IAEzB,sDAAsD;IACtD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAE3D,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,WAAW,CAAC;IACxD,CAAC;AACH,CAAC;AAED,sBAAsB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"csvReportGenerator.d.ts","sourceRoot":"","sources":["../../src/reporting/csvReportGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC,CAAC;CACzF;AAiBD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,eAAe,GACvB,MAAM,CAoBR;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,eAAe,GACvB,MAAM,CAiCR;AAmGD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAsBlE;AAGD,eAAO,MAAM,kBAAkB;;CAE9B,CAAC"}
1
+ {"version":3,"file":"csvReportGenerator.d.ts","sourceRoot":"","sources":["../../src/reporting/csvReportGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC,CAAC;CACzF;AAiBD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,eAAe,GACvB,MAAM,CAoBR;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,eAAe,GACvB,MAAM,CAiCR;AAmGD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAsBlE;AAGD,eAAO,MAAM,kBAAkB;IAC7B,QAAQ;CACT,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"htmlReportGenerator.d.ts","sourceRoot":"","sources":["../../src/reporting/htmlReportGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAa,MAAM,aAAa,CAAC;AAErD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,gBAAgB,GACxB,MAAM,CAyBR;AA8UD,eAAO,MAAM,mBAAmB;;CAE/B,CAAC"}
1
+ {"version":3,"file":"htmlReportGenerator.d.ts","sourceRoot":"","sources":["../../src/reporting/htmlReportGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAa,MAAM,aAAa,CAAC;AAErD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,gBAAgB,GACxB,MAAM,CAyBR;AA8UD,eAAO,MAAM,mBAAmB;IAC9B,QAAQ;CACT,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"jsonReportGenerator.d.ts","sourceRoot":"","sources":["../../src/reporting/jsonReportGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,gBAAgB,GACxB,MAAM,CAYR;AA4ED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAqBrE;AAGD,eAAO,MAAM,mBAAmB;;CAE/B,CAAC"}
1
+ {"version":3,"file":"jsonReportGenerator.d.ts","sourceRoot":"","sources":["../../src/reporting/jsonReportGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,gBAAgB,GACxB,MAAM,CAYR;AA4ED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAqBrE;AAGD,eAAO,MAAM,mBAAmB;IAC9B,QAAQ;CACT,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"reportGenerator.d.ts","sourceRoot":"","sources":["../../src/reporting/reportGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKxD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAWhF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,MAAM,CAAC;qBASnF,WAAW,UAAU,MAAM,GAAG,MAAM;8BAQ3B,MAAM,aAAa,CAAC,MAAM,EAAE,WAAW,KAAK,MAAM;2BAIrD,MAAM,EAAE;EAIlC;AAGD,eAAO,MAAM,eAAe;;CAE3B,CAAC"}
1
+ {"version":3,"file":"reportGenerator.d.ts","sourceRoot":"","sources":["../../src/reporting/reportGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMxD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAahF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,MAAM,CAAC;IAUpG,QAAQ,SAAS,WAAW,UAAU,MAAM,GAAG,MAAM;IAQrD,iBAAiB,SAAS,MAAM,aAAa,CAAC,MAAM,EAAE,WAAW,KAAK,MAAM;IAI5E,mBAAmB,IAAI,MAAM,EAAE;EAIlC;AAGD,eAAO,MAAM,eAAe;IAC1B,QAAQ;CACT,CAAC"}
@@ -5,6 +5,7 @@
5
5
  import { generateHTMLReport } from './htmlReportGenerator.js';
6
6
  import { generateJSONReport } from './jsonReportGenerator.js';
7
7
  import { generateCSVReport } from './csvReportGenerator.js';
8
+ import { generateSARIFReport } from './sarifReportGenerator.js';
8
9
  /**
9
10
  * Generate a report in the specified format
10
11
  */
@@ -16,6 +17,8 @@ export function generateReport(result, format) {
16
17
  return generateJSONReport(result);
17
18
  case 'csv':
18
19
  return generateCSVReport(result);
20
+ case 'sarif':
21
+ return generateSARIFReport(result);
19
22
  default:
20
23
  throw new Error(`Unknown report format: ${format}`);
21
24
  }
@@ -28,6 +31,7 @@ export function createReportGenerator(customFormatters) {
28
31
  html: generateHTMLReport,
29
32
  json: generateJSONReport,
30
33
  csv: generateCSVReport,
34
+ sarif: generateSARIFReport,
31
35
  ...customFormatters
32
36
  };
33
37
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"reportGenerator.js","sourceRoot":"","sources":["../../src/reporting/reportGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAmB,EAAE,MAAoB;IACtE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,MAAM;YACT,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,KAAK;YACR,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACnC;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,gBAAkE;IACtG,MAAM,UAAU,GAAG;QACjB,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,kBAAkB;QACxB,GAAG,EAAE,iBAAiB;QACtB,GAAG,gBAAgB;KACpB,CAAC;IAEF,OAAO;QACL,QAAQ,CAAC,MAAmB,EAAE,MAAc;YAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QAED,iBAAiB,CAAC,MAAc,EAAE,SAA0C;YAC1E,UAAU,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;QACjC,CAAC;QAED,mBAAmB;YACjB,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,4DAA4D;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,QAAQ,EAAE,cAAc;CACzB,CAAC"}
1
+ {"version":3,"file":"reportGenerator.js","sourceRoot":"","sources":["../../src/reporting/reportGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAmB,EAAE,MAAoB;IACtE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,MAAM;YACT,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,KAAK;YACR,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,OAAO;YACV,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACrC;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,gBAAkE;IACtG,MAAM,UAAU,GAAoD;QAClE,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,kBAAkB;QACxB,GAAG,EAAE,iBAAiB;QACtB,KAAK,EAAE,mBAAmB;QAC1B,GAAG,gBAAgB;KACpB,CAAC;IAEF,OAAO;QACL,QAAQ,CAAC,MAAmB,EAAE,MAAc;YAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QAED,iBAAiB,CAAC,MAAc,EAAE,SAA0C;YAC1E,UAAU,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;QACjC,CAAC;QAED,mBAAmB;YACjB,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,4DAA4D;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,QAAQ,EAAE,cAAc;CACzB,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * SARIF 2.1.0 Report Generator
3
+ *
4
+ * Produces valid SARIF output consumable by GitHub Code Scanning
5
+ * (via github/codeql-action/upload-sarif).
6
+ *
7
+ * Spec 06 — R1: SARIF 2.1.0 emitter for code-auditor-mcp.
8
+ */
9
+ import type { AuditResult, Violation } from '../types.js';
10
+ /**
11
+ * Resolves the stable rule identifier for a violation.
12
+ * The format is `{analyzerName}/{ruleId}`.
13
+ *
14
+ * Precedence for the rule-id portion:
15
+ * 1. `violation.rule` (React, Universal Schema, Invariants)
16
+ * 2. `violation.principle` (SOLID)
17
+ * 3. `violation.details.rule` (React — nested)
18
+ * 4. `violation.type` (DRY, Data Access, Dependency Graph)
19
+ * 5. `violation.schemaType` (Schema)
20
+ * 6. `violation.violationType` (general fallback)
21
+ * 7. `'unknown'`
22
+ */
23
+ export declare function resolveRuleId(violation: Violation): string;
24
+ /**
25
+ * Builds the full SARIF rule ID: `{analyzerName}/{localRuleId}`.
26
+ */
27
+ export declare function buildFullRuleId(analyzerName: string, violation: Violation): string;
28
+ export interface SARIFReportConfig {
29
+ /** Base path for making artifact URIs relative (default: process.cwd()) */
30
+ rootDir?: string;
31
+ }
32
+ /**
33
+ * Generates a SARIF 2.1.0 log string from an AuditResult.
34
+ */
35
+ export declare function generateSARIFReport(result: AuditResult, config?: SARIFReportConfig): string;
36
+ export declare const SARIFReportGenerator: {
37
+ generate: typeof generateSARIFReport;
38
+ };
39
+ //# sourceMappingURL=sarifReportGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sarifReportGenerator.d.ts","sourceRoot":"","sources":["../../src/reporting/sarifReportGenerator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAsB1D;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CA0B1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,CAGlF;AAiCD,MAAM,WAAW,iBAAiB;IAChC,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,CA8F3F;AAkFD,eAAO,MAAM,oBAAoB;IAC/B,QAAQ;CACT,CAAC"}
@@ -0,0 +1,229 @@
1
+ /**
2
+ * SARIF 2.1.0 Report Generator
3
+ *
4
+ * Produces valid SARIF output consumable by GitHub Code Scanning
5
+ * (via github/codeql-action/upload-sarif).
6
+ *
7
+ * Spec 06 — R1: SARIF 2.1.0 emitter for code-auditor-mcp.
8
+ */
9
+ import { PACKAGE_VERSION } from '../constants.js';
10
+ import { fingerprint } from '../fingerprint.js';
11
+ // ── Constants ───────────────────────────────────────────────────────────────
12
+ const SARIF_SCHEMA = 'https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json';
13
+ const SARIF_VERSION = '2.1.0';
14
+ const TOOL_NAME = 'code-auditor-mcp';
15
+ const INFORMATION_URI = 'https://github.com/BenAHammond/code-auditor-mcp';
16
+ // ── Severity mapping (Spec 06 R1.4) ────────────────────────────────────────
17
+ const SEVERITY_TO_LEVEL = {
18
+ critical: 'error',
19
+ warning: 'warning',
20
+ suggestion: 'note',
21
+ };
22
+ // ── Rule ID resolution ──────────────────────────────────────────────────────
23
+ /**
24
+ * Resolves the stable rule identifier for a violation.
25
+ * The format is `{analyzerName}/{ruleId}`.
26
+ *
27
+ * Precedence for the rule-id portion:
28
+ * 1. `violation.rule` (React, Universal Schema, Invariants)
29
+ * 2. `violation.principle` (SOLID)
30
+ * 3. `violation.details.rule` (React — nested)
31
+ * 4. `violation.type` (DRY, Data Access, Dependency Graph)
32
+ * 5. `violation.schemaType` (Schema)
33
+ * 6. `violation.violationType` (general fallback)
34
+ * 7. `'unknown'`
35
+ */
36
+ export function resolveRuleId(violation) {
37
+ if (violation.rule && typeof violation.rule === 'string') {
38
+ return violation.rule;
39
+ }
40
+ if (violation.principle && typeof violation.principle === 'string') {
41
+ return violation.principle;
42
+ }
43
+ if (violation.details &&
44
+ typeof violation.details === 'object' &&
45
+ !Array.isArray(violation.details) &&
46
+ violation.details.rule &&
47
+ typeof violation.details.rule === 'string') {
48
+ return violation.details.rule;
49
+ }
50
+ if (violation.type && typeof violation.type === 'string') {
51
+ return violation.type;
52
+ }
53
+ if (violation.schemaType && typeof violation.schemaType === 'string') {
54
+ return violation.schemaType;
55
+ }
56
+ if (violation.violationType && typeof violation.violationType === 'string') {
57
+ return violation.violationType;
58
+ }
59
+ return 'unknown';
60
+ }
61
+ /**
62
+ * Builds the full SARIF rule ID: `{analyzerName}/{localRuleId}`.
63
+ */
64
+ export function buildFullRuleId(analyzerName, violation) {
65
+ const localId = resolveRuleId(violation);
66
+ return `${normalizeAnalyzerName(analyzerName)}/${localId}`;
67
+ }
68
+ /**
69
+ * Normalizes analyzer names to short kebab-case identifiers.
70
+ */
71
+ function normalizeAnalyzerName(name) {
72
+ const mapping = {
73
+ 'solid-analyzer': 'solid',
74
+ 'dry-analyzer': 'dry',
75
+ 'react-analyzer': 'react',
76
+ 'data-access-analyzer': 'data-access',
77
+ 'documentation-analyzer': 'documentation',
78
+ 'schema-analyzer': 'schema',
79
+ 'universal-schema-analyzer': 'universal-schema',
80
+ 'invariants-analyzer': 'invariants',
81
+ 'dependency-graph-analyzer': 'dependency-graph',
82
+ 'cross-language-solid-analyzer': 'solid',
83
+ 'solid': 'solid',
84
+ 'dry': 'dry',
85
+ 'react': 'react',
86
+ 'data-access': 'data-access',
87
+ 'documentation': 'documentation',
88
+ 'schema': 'schema',
89
+ 'universal-schema': 'universal-schema',
90
+ 'invariants': 'invariants',
91
+ 'dependency-graph': 'dependency-graph',
92
+ 'cross-language-solid': 'solid',
93
+ };
94
+ return mapping[name] ?? name.replace(/[^a-z0-9-]/g, '-').toLowerCase();
95
+ }
96
+ /**
97
+ * Generates a SARIF 2.1.0 log string from an AuditResult.
98
+ */
99
+ export function generateSARIFReport(result, config) {
100
+ const rootDir = config?.rootDir ?? process.cwd();
101
+ const driverRules = [];
102
+ const seenRuleIds = new Set();
103
+ const results = [];
104
+ // Walk all analyzer results and build rules + results
105
+ for (const [analyzerName, analyzerResult] of Object.entries(result.analyzerResults)) {
106
+ const normName = normalizeAnalyzerName(analyzerName);
107
+ for (const violation of analyzerResult.violations) {
108
+ const fullRuleId = buildFullRuleId(analyzerName, violation);
109
+ // Collect unique rules
110
+ if (!seenRuleIds.has(fullRuleId)) {
111
+ seenRuleIds.add(fullRuleId);
112
+ driverRules.push({
113
+ id: fullRuleId,
114
+ shortDescription: {
115
+ text: buildShortDescription(normName, resolveRuleId(violation)),
116
+ },
117
+ fullDescription: {
118
+ text: violation.message,
119
+ },
120
+ helpUri: buildHelpUri(fullRuleId),
121
+ });
122
+ }
123
+ // Build result
124
+ const region = {};
125
+ if (violation.line != null) {
126
+ region.startLine = violation.line;
127
+ region.endLine = violation.line;
128
+ }
129
+ if (violation.column != null) {
130
+ region.startColumn = violation.column;
131
+ }
132
+ const artifactUri = makeRelativeUri(violation.file, rootDir);
133
+ const sarifResult = {
134
+ ruleId: fullRuleId,
135
+ level: mapSeverity(violation.severity),
136
+ message: {
137
+ text: violation.message,
138
+ },
139
+ locations: [
140
+ {
141
+ physicalLocation: {
142
+ artifactLocation: {
143
+ uri: artifactUri,
144
+ },
145
+ region: Object.keys(region).length > 0 ? region : undefined,
146
+ },
147
+ },
148
+ ],
149
+ partialFingerprints: buildPartialFingerprints(analyzerName, violation),
150
+ };
151
+ // Add suggestion as a fix if present
152
+ if (violation.suggestion) {
153
+ sarifResult.fixes = [
154
+ {
155
+ description: {
156
+ text: `Suggestion: ${violation.suggestion}`,
157
+ },
158
+ },
159
+ ];
160
+ }
161
+ results.push(sarifResult);
162
+ }
163
+ }
164
+ // Build the SARIF log
165
+ const sarifLog = {
166
+ $schema: SARIF_SCHEMA,
167
+ version: SARIF_VERSION,
168
+ runs: [
169
+ {
170
+ tool: {
171
+ driver: {
172
+ name: TOOL_NAME,
173
+ version: PACKAGE_VERSION,
174
+ informationUri: INFORMATION_URI,
175
+ rules: driverRules,
176
+ },
177
+ },
178
+ results,
179
+ },
180
+ ],
181
+ };
182
+ return JSON.stringify(sarifLog, null, 2);
183
+ }
184
+ function mapSeverity(severity) {
185
+ return SEVERITY_TO_LEVEL[severity] ?? 'warning';
186
+ }
187
+ function makeRelativeUri(filePath, rootDir) {
188
+ // Normalize and make relative to root directory
189
+ const normalized = filePath.replace(/\\/g, '/');
190
+ if (rootDir && normalized.startsWith(rootDir.replace(/\\/g, '/'))) {
191
+ let relative = normalized.slice(rootDir.replace(/\\/g, '/').length);
192
+ if (relative.startsWith('/')) {
193
+ relative = relative.slice(1);
194
+ }
195
+ return relative || '.';
196
+ }
197
+ return normalized;
198
+ }
199
+ function buildShortDescription(analyzerName, ruleId) {
200
+ return `${analyzerName}: ${ruleId}`;
201
+ }
202
+ function buildHelpUri(fullRuleId) {
203
+ return `${INFORMATION_URI}#${fullRuleId.replace(/\//g, '-')}`;
204
+ }
205
+ function buildPartialFingerprints(analyzerName, violation) {
206
+ const normName = normalizeAnalyzerName(analyzerName);
207
+ const localRule = resolveRuleId(violation);
208
+ const symbol = violation.className ??
209
+ violation.functionName ??
210
+ violation.componentName ??
211
+ violation.symbol ??
212
+ violation.methodName ??
213
+ violation.name ??
214
+ 'unknown';
215
+ const fp = fingerprint({
216
+ analyzer: normName,
217
+ rule: localRule,
218
+ file: violation.file,
219
+ symbol,
220
+ });
221
+ return {
222
+ 'primary': fp,
223
+ };
224
+ }
225
+ // ── Backward-compatible object export ────────────────────────────────────────
226
+ export const SARIFReportGenerator = {
227
+ generate: generateSARIFReport,
228
+ };
229
+ //# sourceMappingURL=sarifReportGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sarifReportGenerator.js","sourceRoot":"","sources":["../../src/reporting/sarifReportGenerator.ts"],"names":[],"mappings":"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"}
@@ -59,4 +59,45 @@ export declare class QueryParser {
59
59
  expandQuery(query: string): string;
60
60
  }
61
61
  export declare const queryParser: QueryParser;
62
+ /** Compiled SQL query fragments for use with the SQLite-backed CodeIndexDB. */
63
+ export interface SqlQuery {
64
+ /** FTS5 MATCH expression, or null if no free-text terms */
65
+ ftsMatch: string | null;
66
+ /** WHERE clause fragments (ANDed together) */
67
+ whereClauses: string[];
68
+ /** JOIN clauses for call/dependency graph traversal */
69
+ joinClauses: string[];
70
+ /** Named parameters for the prepared statement */
71
+ params: Record<string, any>;
72
+ /** ORDER BY clause */
73
+ orderBy: string;
74
+ /** LIMIT value */
75
+ limit: number;
76
+ /** OFFSET value */
77
+ offset: number;
78
+ }
79
+ /**
80
+ * Compile a parsed query into SQL fragments for the SQLite-backed CodeIndexDB.
81
+ *
82
+ * The caller assembles the final SQL from the returned fragments:
83
+ * ```sql
84
+ * SELECT f.* [, bm25(functions_fts) as score]
85
+ * FROM functions f
86
+ * [JOIN functions_fts ON functions_fts.rowid = f.id] -- when ftsMatch is set
87
+ * {joinClauses...}
88
+ * WHERE 1=1
89
+ * [AND functions_fts MATCH @ftsMatch] -- when ftsMatch is set
90
+ * {whereClauses...}
91
+ * ORDER BY {orderBy}
92
+ * LIMIT {limit} OFFSET {offset}
93
+ * ```
94
+ *
95
+ * @param parsedQuery The parsed query from {@link QueryParser.parse}.
96
+ * @param options Optional overrides for limit/offset.
97
+ * @returns Compiled SQL fragments.
98
+ */
99
+ export declare function compileToSQL(parsedQuery: ParsedQuery, options?: {
100
+ defaultLimit?: number;
101
+ offset?: number;
102
+ }): SqlQuery;
62
103
  //# sourceMappingURL=QueryParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueryParser.d.ts","sourceRoot":"","sources":["../../src/search/QueryParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC;;;;;;;;;;GAUG;AACH,qBAAa,WAAW;IAEtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CA6D9B;IAGF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAmCtB;IAEX;;;;OAIG;IACI,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;IAgFxC;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IA0DtB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAuFxB;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAoJ5B;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IA8BhB;;;;OAIG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAqB1C;;;;OAIG;IACI,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAK1C;AAGD,eAAO,MAAM,WAAW,aAAoB,CAAC"}
1
+ {"version":3,"file":"QueryParser.d.ts","sourceRoot":"","sources":["../../src/search/QueryParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC;;;;;;;;;;GAUG;AACH,qBAAa,WAAW;IAEtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CA6D9B;IAGF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAoCtB;IAEX;;;;OAIG;IACI,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CA8EvC;IAED;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IA0DtB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAqFxB;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IA+K5B;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IA8BhB;;;;OAIG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAmBzC;IAED;;;;OAIG;IACI,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIxC;CACF;AAGD,eAAO,MAAM,WAAW,aAAoB,CAAC;AAI7C,+EAA+E;AAC/E,MAAM,WAAW,QAAQ;IACvB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,uDAAuD;IACvD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAOD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAC1B,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD,QAAQ,CAiKV"}