codereview-aia 0.1.3 → 0.2.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 (558) hide show
  1. package/dist/analysis/FindingsExtractor.d.ts +105 -0
  2. package/dist/analysis/FindingsExtractor.js +363 -0
  3. package/dist/analysis/FindingsExtractor.js.map +1 -0
  4. package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.d.ts +111 -0
  5. package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.js +215 -0
  6. package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.js.map +1 -0
  7. package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.d.ts +142 -0
  8. package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.js +503 -0
  9. package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.js.map +1 -0
  10. package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.d.ts +88 -0
  11. package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.js +343 -0
  12. package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.js.map +1 -0
  13. package/dist/analysis/ai-detection/core/AIDetectionEngine.d.ts +104 -0
  14. package/dist/analysis/ai-detection/core/AIDetectionEngine.js +369 -0
  15. package/dist/analysis/ai-detection/core/AIDetectionEngine.js.map +1 -0
  16. package/dist/analysis/ai-detection/types/DetectionTypes.d.ts +364 -0
  17. package/dist/analysis/ai-detection/types/DetectionTypes.js +32 -0
  18. package/dist/analysis/ai-detection/types/DetectionTypes.js.map +1 -0
  19. package/dist/analysis/ai-detection/utils/SubmissionConverter.d.ts +97 -0
  20. package/dist/analysis/ai-detection/utils/SubmissionConverter.js +339 -0
  21. package/dist/analysis/ai-detection/utils/SubmissionConverter.js.map +1 -0
  22. package/dist/analysis/context/ReviewContext.d.ts +184 -0
  23. package/dist/analysis/context/ReviewContext.js +294 -0
  24. package/dist/analysis/context/ReviewContext.js.map +1 -0
  25. package/{src/analysis/context/index.ts → dist/analysis/context/index.d.ts} +0 -1
  26. package/dist/analysis/context/index.js +23 -0
  27. package/dist/analysis/context/index.js.map +1 -0
  28. package/{src/analysis/index.ts → dist/analysis/index.d.ts} +0 -1
  29. package/dist/analysis/index.js +24 -0
  30. package/dist/analysis/index.js.map +1 -0
  31. package/dist/analysis/static/wpPhpcsRunner.d.ts +11 -0
  32. package/dist/analysis/static/wpPhpcsRunner.js +219 -0
  33. package/dist/analysis/static/wpPhpcsRunner.js.map +1 -0
  34. package/dist/analysis/tokens/TokenAnalysisFormatter.d.ts +27 -0
  35. package/{src/analysis/tokens/TokenAnalysisFormatter.ts → dist/analysis/tokens/TokenAnalysisFormatter.js} +64 -75
  36. package/dist/analysis/tokens/TokenAnalysisFormatter.js.map +1 -0
  37. package/dist/analysis/tokens/TokenAnalyzer.d.ts +155 -0
  38. package/dist/analysis/tokens/TokenAnalyzer.js +502 -0
  39. package/dist/analysis/tokens/TokenAnalyzer.js.map +1 -0
  40. package/{src/analysis/tokens/index.ts → dist/analysis/tokens/index.d.ts} +0 -1
  41. package/dist/analysis/tokens/index.js +24 -0
  42. package/dist/analysis/tokens/index.js.map +1 -0
  43. package/dist/clients/base/abstractClient.d.ts +99 -0
  44. package/dist/clients/base/abstractClient.js +98 -0
  45. package/dist/clients/base/abstractClient.js.map +1 -0
  46. package/dist/clients/base/httpClient.d.ts +24 -0
  47. package/dist/clients/base/httpClient.js +147 -0
  48. package/dist/clients/base/httpClient.js.map +1 -0
  49. package/{src/clients/base/index.ts → dist/clients/base/index.d.ts} +0 -1
  50. package/dist/clients/base/index.js +28 -0
  51. package/dist/clients/base/index.js.map +1 -0
  52. package/dist/clients/base/modelDetection.d.ts +41 -0
  53. package/dist/clients/base/modelDetection.js +88 -0
  54. package/dist/clients/base/modelDetection.js.map +1 -0
  55. package/dist/clients/base/responseProcessor.d.ts +45 -0
  56. package/dist/clients/base/responseProcessor.js +495 -0
  57. package/dist/clients/base/responseProcessor.js.map +1 -0
  58. package/dist/clients/factory/clientFactory.d.ts +23 -0
  59. package/dist/clients/factory/clientFactory.js +50 -0
  60. package/dist/clients/factory/clientFactory.js.map +1 -0
  61. package/{src/clients/factory/index.ts → dist/clients/factory/index.d.ts} +0 -1
  62. package/dist/clients/factory/index.js +24 -0
  63. package/dist/clients/factory/index.js.map +1 -0
  64. package/{src/clients/implementations/index.ts → dist/clients/implementations/index.d.ts} +0 -1
  65. package/dist/clients/implementations/index.js +24 -0
  66. package/dist/clients/implementations/index.js.map +1 -0
  67. package/dist/clients/implementations/openRouterClient.d.ts +69 -0
  68. package/dist/clients/implementations/openRouterClient.js +294 -0
  69. package/dist/clients/implementations/openRouterClient.js.map +1 -0
  70. package/dist/clients/openRouterClient.d.ts +42 -0
  71. package/dist/clients/openRouterClient.js +580 -0
  72. package/dist/clients/openRouterClient.js.map +1 -0
  73. package/{src/clients/openRouterClientWrapper.ts → dist/clients/openRouterClientWrapper.d.ts} +2 -24
  74. package/dist/clients/openRouterClientWrapper.js +64 -0
  75. package/dist/clients/openRouterClientWrapper.js.map +1 -0
  76. package/dist/clients/utils/directoryStructure.d.ts +14 -0
  77. package/dist/clients/utils/directoryStructure.js +48 -0
  78. package/dist/clients/utils/directoryStructure.js.map +1 -0
  79. package/{src/clients/utils/index.ts → dist/clients/utils/index.d.ts} +0 -1
  80. package/dist/clients/utils/index.js +31 -0
  81. package/dist/clients/utils/index.js.map +1 -0
  82. package/dist/clients/utils/languageDetection.d.ts +13 -0
  83. package/dist/clients/utils/languageDetection.js +46 -0
  84. package/dist/clients/utils/languageDetection.js.map +1 -0
  85. package/dist/clients/utils/promptFormatter.d.ts +37 -0
  86. package/dist/clients/utils/promptFormatter.js +150 -0
  87. package/dist/clients/utils/promptFormatter.js.map +1 -0
  88. package/{src/clients/utils/promptLoader.ts → dist/clients/utils/promptLoader.d.ts} +1 -27
  89. package/dist/clients/utils/promptLoader.js +49 -0
  90. package/dist/clients/utils/promptLoader.js.map +1 -0
  91. package/dist/clients/utils/tokenCounter.d.ts +81 -0
  92. package/dist/clients/utils/tokenCounter.js +184 -0
  93. package/dist/clients/utils/tokenCounter.js.map +1 -0
  94. package/dist/core/ApiClientSelector.d.ts +8 -0
  95. package/dist/core/ApiClientSelector.js +29 -0
  96. package/dist/core/ApiClientSelector.js.map +1 -0
  97. package/dist/core/ConfigurationService.d.ts +307 -0
  98. package/dist/core/ConfigurationService.js +516 -0
  99. package/dist/core/ConfigurationService.js.map +1 -0
  100. package/dist/core/ConsolidationService.d.ts +99 -0
  101. package/dist/core/ConsolidationService.js +341 -0
  102. package/dist/core/ConsolidationService.js.map +1 -0
  103. package/dist/core/InteractiveDisplayManager.d.ts +22 -0
  104. package/dist/core/InteractiveDisplayManager.js +70 -0
  105. package/dist/core/InteractiveDisplayManager.js.map +1 -0
  106. package/dist/core/OutputManager.d.ts +26 -0
  107. package/dist/core/OutputManager.js +217 -0
  108. package/dist/core/OutputManager.js.map +1 -0
  109. package/dist/core/ReviewGenerator.d.ts +13 -0
  110. package/dist/core/ReviewGenerator.js +102 -0
  111. package/dist/core/ReviewGenerator.js.map +1 -0
  112. package/dist/core/fileDiscovery.d.ts +35 -0
  113. package/dist/core/fileDiscovery.js +202 -0
  114. package/dist/core/fileDiscovery.js.map +1 -0
  115. package/dist/core/handlers/EstimationHandler.d.ts +18 -0
  116. package/dist/core/handlers/EstimationHandler.js +110 -0
  117. package/dist/core/handlers/EstimationHandler.js.map +1 -0
  118. package/dist/core/handlers/FileProcessingHandler.d.ts +31 -0
  119. package/dist/core/handlers/FileProcessingHandler.js +164 -0
  120. package/dist/core/handlers/FileProcessingHandler.js.map +1 -0
  121. package/dist/core/handlers/OutputHandler.d.ts +27 -0
  122. package/dist/core/handlers/OutputHandler.js +127 -0
  123. package/dist/core/handlers/OutputHandler.js.map +1 -0
  124. package/dist/core/handlers/ReviewExecutor.d.ts +32 -0
  125. package/dist/core/handlers/ReviewExecutor.js +111 -0
  126. package/dist/core/handlers/ReviewExecutor.js.map +1 -0
  127. package/dist/core/reviewOrchestrator.d.ts +24 -0
  128. package/dist/core/reviewOrchestrator.js +354 -0
  129. package/dist/core/reviewOrchestrator.js.map +1 -0
  130. package/dist/core/utils/ModelInfoUtils.d.ts +16 -0
  131. package/dist/core/utils/ModelInfoUtils.js +54 -0
  132. package/dist/core/utils/ModelInfoUtils.js.map +1 -0
  133. package/{src/formatters/outputFormatter.ts → dist/formatters/outputFormatter.d.ts} +2 -33
  134. package/dist/formatters/outputFormatter.js +65 -0
  135. package/dist/formatters/outputFormatter.js.map +1 -0
  136. package/dist/formatters/utils/IssueFormatters.d.ts +20 -0
  137. package/dist/formatters/utils/IssueFormatters.js +67 -0
  138. package/dist/formatters/utils/IssueFormatters.js.map +1 -0
  139. package/dist/formatters/utils/JsonFormatter.d.ts +13 -0
  140. package/dist/formatters/utils/JsonFormatter.js +57 -0
  141. package/dist/formatters/utils/JsonFormatter.js.map +1 -0
  142. package/dist/formatters/utils/MarkdownFormatters.d.ts +51 -0
  143. package/dist/formatters/utils/MarkdownFormatters.js +456 -0
  144. package/dist/formatters/utils/MarkdownFormatters.js.map +1 -0
  145. package/dist/formatters/utils/MetadataFormatter.d.ts +65 -0
  146. package/dist/formatters/utils/MetadataFormatter.js +219 -0
  147. package/dist/formatters/utils/MetadataFormatter.js.map +1 -0
  148. package/dist/formatters/utils/ModelInfoExtractor.d.ts +33 -0
  149. package/dist/formatters/utils/ModelInfoExtractor.js +111 -0
  150. package/dist/formatters/utils/ModelInfoExtractor.js.map +1 -0
  151. package/dist/index.d.ts +1 -0
  152. package/dist/index.js.map +1 -0
  153. package/dist/plugins/PluginInterface.d.ts +44 -0
  154. package/dist/plugins/PluginInterface.js +9 -0
  155. package/dist/plugins/PluginInterface.js.map +1 -0
  156. package/dist/plugins/PluginManager.d.ts +51 -0
  157. package/dist/plugins/PluginManager.js +151 -0
  158. package/dist/plugins/PluginManager.js.map +1 -0
  159. package/dist/prompts/PromptManager.d.ts +30 -0
  160. package/dist/prompts/PromptManager.js +62 -0
  161. package/dist/prompts/PromptManager.js.map +1 -0
  162. package/dist/prompts/cache/PromptCache.d.ts +32 -0
  163. package/dist/prompts/cache/PromptCache.js +48 -0
  164. package/dist/prompts/cache/PromptCache.js.map +1 -0
  165. package/dist/runtime/auth/service.d.ts +2 -0
  166. package/dist/runtime/auth/service.js +41 -0
  167. package/dist/runtime/auth/service.js.map +1 -0
  168. package/dist/runtime/auth/session.d.ts +5 -0
  169. package/dist/runtime/auth/session.js +87 -0
  170. package/dist/runtime/auth/session.js.map +1 -0
  171. package/dist/runtime/auth/types.d.ts +9 -0
  172. package/dist/runtime/auth/types.js +3 -0
  173. package/dist/runtime/auth/types.js.map +1 -0
  174. package/dist/runtime/cliEntry.d.ts +1 -0
  175. package/dist/runtime/cliEntry.js +276 -0
  176. package/dist/runtime/cliEntry.js.map +1 -0
  177. package/dist/runtime/debug/logManager.d.ts +5 -0
  178. package/dist/runtime/debug/logManager.js +31 -0
  179. package/dist/runtime/debug/logManager.js.map +1 -0
  180. package/dist/runtime/errors.d.ts +5 -0
  181. package/dist/runtime/errors.js +15 -0
  182. package/dist/runtime/errors.js.map +1 -0
  183. package/dist/runtime/fileCollector.d.ts +14 -0
  184. package/dist/runtime/fileCollector.js +381 -0
  185. package/dist/runtime/fileCollector.js.map +1 -0
  186. package/dist/runtime/manifest.d.ts +1 -0
  187. package/dist/runtime/manifest.js +65 -0
  188. package/dist/runtime/manifest.js.map +1 -0
  189. package/dist/runtime/openrouterProxy.d.ts +4 -0
  190. package/dist/runtime/openrouterProxy.js +43 -0
  191. package/dist/runtime/openrouterProxy.js.map +1 -0
  192. package/dist/runtime/preprod/batchStreamer.d.ts +54 -0
  193. package/dist/runtime/preprod/batchStreamer.js +159 -0
  194. package/dist/runtime/preprod/batchStreamer.js.map +1 -0
  195. package/dist/runtime/preprod/crEdgeServiceClient.d.ts +30 -0
  196. package/dist/runtime/preprod/crEdgeServiceClient.js +133 -0
  197. package/dist/runtime/preprod/crEdgeServiceClient.js.map +1 -0
  198. package/dist/runtime/preprod/progressTracker.d.ts +21 -0
  199. package/dist/runtime/preprod/progressTracker.js +80 -0
  200. package/dist/runtime/preprod/progressTracker.js.map +1 -0
  201. package/dist/runtime/preprod/webCheck.d.ts +1 -0
  202. package/dist/runtime/preprod/webCheck.js +102 -0
  203. package/dist/runtime/preprod/webCheck.js.map +1 -0
  204. package/dist/runtime/proxyConfig.d.ts +6 -0
  205. package/dist/runtime/proxyConfig.js +86 -0
  206. package/dist/runtime/proxyConfig.js.map +1 -0
  207. package/dist/runtime/proxyEnvironment.d.ts +3 -0
  208. package/dist/runtime/proxyEnvironment.js +63 -0
  209. package/dist/runtime/proxyEnvironment.js.map +1 -0
  210. package/dist/runtime/reportMerge.d.ts +30 -0
  211. package/dist/runtime/reportMerge.js +70 -0
  212. package/dist/runtime/reportMerge.js.map +1 -0
  213. package/dist/runtime/reporting/markdownReportBuilder.d.ts +17 -0
  214. package/dist/runtime/reporting/markdownReportBuilder.js +154 -0
  215. package/dist/runtime/reporting/markdownReportBuilder.js.map +1 -0
  216. package/dist/runtime/reporting/reportDataCollector.d.ts +31 -0
  217. package/dist/runtime/reporting/reportDataCollector.js +170 -0
  218. package/dist/runtime/reporting/reportDataCollector.js.map +1 -0
  219. package/dist/runtime/reporting/summaryGenerator.d.ts +10 -0
  220. package/dist/runtime/reporting/summaryGenerator.js +67 -0
  221. package/dist/runtime/reporting/summaryGenerator.js.map +1 -0
  222. package/dist/runtime/reviewPipeline.d.ts +61 -0
  223. package/dist/runtime/reviewPipeline.js +231 -0
  224. package/dist/runtime/reviewPipeline.js.map +1 -0
  225. package/dist/runtime/runAiCodeReview.d.ts +36 -0
  226. package/dist/runtime/runAiCodeReview.js +409 -0
  227. package/dist/runtime/runAiCodeReview.js.map +1 -0
  228. package/dist/runtime/runtimeConfig.d.ts +4 -0
  229. package/dist/runtime/runtimeConfig.js +7 -0
  230. package/dist/runtime/runtimeConfig.js.map +1 -0
  231. package/dist/runtime/ui/Layout.d.ts +11 -0
  232. package/dist/runtime/ui/Layout.js +47 -0
  233. package/dist/runtime/ui/Layout.js.map +1 -0
  234. package/dist/runtime/ui/RuntimeApp.d.ts +6 -0
  235. package/dist/runtime/ui/RuntimeApp.js +275 -0
  236. package/dist/runtime/ui/RuntimeApp.js.map +1 -0
  237. package/dist/runtime/ui/inkModules.d.ts +10 -0
  238. package/dist/runtime/ui/inkModules.js +63 -0
  239. package/dist/runtime/ui/inkModules.js.map +1 -0
  240. package/dist/runtime/ui/screens/AuthScreen.d.ts +6 -0
  241. package/dist/runtime/ui/screens/AuthScreen.js +67 -0
  242. package/dist/runtime/ui/screens/AuthScreen.js.map +1 -0
  243. package/dist/runtime/ui/screens/ModeSelection.d.ts +11 -0
  244. package/dist/runtime/ui/screens/ModeSelection.js +169 -0
  245. package/dist/runtime/ui/screens/ModeSelection.js.map +1 -0
  246. package/dist/runtime/ui/screens/ProgressScreen.d.ts +21 -0
  247. package/dist/runtime/ui/screens/ProgressScreen.js +86 -0
  248. package/dist/runtime/ui/screens/ProgressScreen.js.map +1 -0
  249. package/dist/runtime/ui/screens/ResultsScreen.d.ts +7 -0
  250. package/dist/runtime/ui/screens/ResultsScreen.js +34 -0
  251. package/dist/runtime/ui/screens/ResultsScreen.js.map +1 -0
  252. package/dist/strategies/ArchitecturalReviewStrategy.d.ts +29 -0
  253. package/dist/strategies/ArchitecturalReviewStrategy.js +42 -0
  254. package/dist/strategies/ArchitecturalReviewStrategy.js.map +1 -0
  255. package/dist/strategies/CodingTestReviewStrategy.d.ts +194 -0
  256. package/dist/strategies/CodingTestReviewStrategy.js +681 -0
  257. package/dist/strategies/CodingTestReviewStrategy.js.map +1 -0
  258. package/dist/strategies/ConsolidatedReviewStrategy.d.ts +25 -0
  259. package/dist/strategies/ConsolidatedReviewStrategy.js +45 -0
  260. package/dist/strategies/ConsolidatedReviewStrategy.js.map +1 -0
  261. package/dist/strategies/ExtractPatternsReviewStrategy.d.ts +30 -0
  262. package/dist/strategies/ExtractPatternsReviewStrategy.js +51 -0
  263. package/dist/strategies/ExtractPatternsReviewStrategy.js.map +1 -0
  264. package/dist/strategies/MultiPassReviewStrategy.d.ts +86 -0
  265. package/dist/strategies/MultiPassReviewStrategy.js +590 -0
  266. package/dist/strategies/MultiPassReviewStrategy.js.map +1 -0
  267. package/dist/strategies/ReviewStrategy.d.ts +45 -0
  268. package/dist/strategies/ReviewStrategy.js +24 -0
  269. package/dist/strategies/ReviewStrategy.js.map +1 -0
  270. package/dist/strategies/StrategyFactory.d.ts +19 -0
  271. package/dist/strategies/StrategyFactory.js +72 -0
  272. package/dist/strategies/StrategyFactory.js.map +1 -0
  273. package/{src/strategies/index.ts → dist/strategies/index.d.ts} +0 -1
  274. package/dist/strategies/index.js +30 -0
  275. package/dist/strategies/index.js.map +1 -0
  276. package/dist/tokenizers/baseTokenizer.d.ts +25 -0
  277. package/dist/tokenizers/baseTokenizer.js +48 -0
  278. package/dist/tokenizers/baseTokenizer.js.map +1 -0
  279. package/dist/tokenizers/gptTokenizer.d.ts +7 -0
  280. package/dist/tokenizers/gptTokenizer.js +28 -0
  281. package/dist/tokenizers/gptTokenizer.js.map +1 -0
  282. package/{src/tokenizers/index.ts → dist/tokenizers/index.d.ts} +0 -1
  283. package/dist/tokenizers/index.js +24 -0
  284. package/dist/tokenizers/index.js.map +1 -0
  285. package/dist/types/apiResponses.d.ts +39 -0
  286. package/dist/types/apiResponses.js +9 -0
  287. package/dist/types/apiResponses.js.map +1 -0
  288. package/dist/types/cli.d.ts +22 -0
  289. package/dist/types/cli.js +3 -0
  290. package/dist/types/cli.js.map +1 -0
  291. package/{src/types/common.ts → dist/types/common.d.ts} +2 -19
  292. package/dist/types/common.js +14 -0
  293. package/dist/types/common.js.map +1 -0
  294. package/dist/types/configuration.d.ts +682 -0
  295. package/dist/types/configuration.js +65 -0
  296. package/dist/types/configuration.js.map +1 -0
  297. package/dist/types/review.d.ts +318 -0
  298. package/dist/types/review.js +8 -0
  299. package/dist/types/review.js.map +1 -0
  300. package/dist/types/reviewSchema.d.ts +543 -0
  301. package/{src/types/reviewSchema.ts → dist/types/reviewSchema.js} +44 -104
  302. package/dist/types/reviewSchema.js.map +1 -0
  303. package/dist/types/structuredReview.d.ts +119 -0
  304. package/dist/types/structuredReview.js +6 -0
  305. package/dist/types/structuredReview.js.map +1 -0
  306. package/dist/types/tokenAnalysis.d.ts +44 -0
  307. package/dist/types/tokenAnalysis.js +4 -0
  308. package/dist/types/tokenAnalysis.js.map +1 -0
  309. package/dist/utils/FileReader.d.ts +33 -0
  310. package/dist/utils/FileReader.js +88 -0
  311. package/dist/utils/FileReader.js.map +1 -0
  312. package/dist/utils/FileWriter.d.ts +26 -0
  313. package/dist/utils/FileWriter.js +76 -0
  314. package/dist/utils/FileWriter.js.map +1 -0
  315. package/dist/utils/PathGenerator.d.ts +30 -0
  316. package/dist/utils/PathGenerator.js +82 -0
  317. package/dist/utils/PathGenerator.js.map +1 -0
  318. package/dist/utils/api/apiUtils.d.ts +3 -0
  319. package/dist/utils/api/apiUtils.js +20 -0
  320. package/dist/utils/api/apiUtils.js.map +1 -0
  321. package/dist/utils/api/index.js +18 -0
  322. package/dist/utils/api/index.js.map +1 -0
  323. package/dist/utils/apiErrorHandler.d.ts +130 -0
  324. package/dist/utils/apiErrorHandler.js +256 -0
  325. package/dist/utils/apiErrorHandler.js.map +1 -0
  326. package/dist/utils/ciDataCollector.d.ts +51 -0
  327. package/dist/utils/ciDataCollector.js +197 -0
  328. package/dist/utils/ciDataCollector.js.map +1 -0
  329. package/dist/utils/codingTestConfigLoader.d.ts +66 -0
  330. package/dist/utils/codingTestConfigLoader.js +420 -0
  331. package/dist/utils/codingTestConfigLoader.js.map +1 -0
  332. package/dist/utils/dependencies/aiDependencyAnalyzer.d.ts +30 -0
  333. package/dist/utils/dependencies/aiDependencyAnalyzer.js +343 -0
  334. package/dist/utils/dependencies/aiDependencyAnalyzer.js.map +1 -0
  335. package/dist/utils/detection/frameworkDetector.d.ts +43 -0
  336. package/dist/utils/detection/frameworkDetector.js +850 -0
  337. package/dist/utils/detection/frameworkDetector.js.map +1 -0
  338. package/{src/utils/detection/index.ts → dist/utils/detection/index.d.ts} +0 -1
  339. package/dist/utils/detection/index.js +28 -0
  340. package/dist/utils/detection/index.js.map +1 -0
  341. package/dist/utils/detection/projectTypeDetector.d.ts +27 -0
  342. package/dist/utils/detection/projectTypeDetector.js +469 -0
  343. package/dist/utils/detection/projectTypeDetector.js.map +1 -0
  344. package/dist/utils/diagramGenerator.d.ts +49 -0
  345. package/dist/utils/diagramGenerator.js +218 -0
  346. package/dist/utils/diagramGenerator.js.map +1 -0
  347. package/dist/utils/errorLogger.d.ts +24 -0
  348. package/dist/utils/errorLogger.js +59 -0
  349. package/dist/utils/errorLogger.js.map +1 -0
  350. package/dist/utils/estimationUtils.d.ts +139 -0
  351. package/dist/utils/estimationUtils.js +329 -0
  352. package/dist/utils/estimationUtils.js.map +1 -0
  353. package/dist/utils/fileFilters.d.ts +72 -0
  354. package/dist/utils/fileFilters.js +338 -0
  355. package/dist/utils/fileFilters.js.map +1 -0
  356. package/dist/utils/fileSystem.d.ts +22 -0
  357. package/dist/utils/fileSystem.js +45 -0
  358. package/dist/utils/fileSystem.js.map +1 -0
  359. package/{src/utils/index.ts → dist/utils/index.d.ts} +0 -14
  360. package/dist/utils/index.js +52 -0
  361. package/dist/utils/index.js.map +1 -0
  362. package/dist/utils/logger.d.ts +77 -0
  363. package/dist/utils/logger.js +271 -0
  364. package/dist/utils/logger.js.map +1 -0
  365. package/dist/utils/pathValidator.d.ts +40 -0
  366. package/dist/utils/pathValidator.js +98 -0
  367. package/dist/utils/pathValidator.js.map +1 -0
  368. package/{src/utils/priorityFilter.ts → dist/utils/priorityFilter.d.ts} +1 -26
  369. package/dist/utils/priorityFilter.js +54 -0
  370. package/dist/utils/priorityFilter.js.map +1 -0
  371. package/dist/utils/projectDocs.d.ts +47 -0
  372. package/dist/utils/projectDocs.js +158 -0
  373. package/dist/utils/projectDocs.js.map +1 -0
  374. package/dist/utils/promptPaths.d.ts +6 -0
  375. package/dist/utils/promptPaths.js +33 -0
  376. package/dist/utils/promptPaths.js.map +1 -0
  377. package/dist/utils/promptTemplateManager.d.ts +34 -0
  378. package/dist/utils/promptTemplateManager.js +141 -0
  379. package/dist/utils/promptTemplateManager.js.map +1 -0
  380. package/dist/utils/review/consolidateReview.d.ts +15 -0
  381. package/dist/utils/review/consolidateReview.js +481 -0
  382. package/dist/utils/review/consolidateReview.js.map +1 -0
  383. package/dist/utils/review/fixDisplay.d.ts +20 -0
  384. package/dist/utils/review/fixDisplay.js +84 -0
  385. package/dist/utils/review/fixDisplay.js.map +1 -0
  386. package/dist/utils/review/fixImplementation.d.ts +28 -0
  387. package/dist/utils/review/fixImplementation.js +60 -0
  388. package/dist/utils/review/fixImplementation.js.map +1 -0
  389. package/dist/utils/review/index.d.ts +13 -0
  390. package/dist/utils/review/index.js +50 -0
  391. package/dist/utils/review/index.js.map +1 -0
  392. package/dist/utils/review/interactiveProcessing.d.ts +25 -0
  393. package/dist/utils/review/interactiveProcessing.js +251 -0
  394. package/dist/utils/review/interactiveProcessing.js.map +1 -0
  395. package/dist/utils/review/progressTracker.d.ts +106 -0
  396. package/dist/utils/review/progressTracker.js +227 -0
  397. package/dist/utils/review/progressTracker.js.map +1 -0
  398. package/dist/utils/review/reviewExtraction.d.ts +31 -0
  399. package/dist/utils/review/reviewExtraction.js +324 -0
  400. package/dist/utils/review/reviewExtraction.js.map +1 -0
  401. package/dist/utils/review/types.d.ts +45 -0
  402. package/dist/utils/review/types.js +18 -0
  403. package/dist/utils/review/types.js.map +1 -0
  404. package/{src/utils/reviewActionHandler.ts → dist/utils/reviewActionHandler.d.ts} +0 -2
  405. package/dist/utils/reviewActionHandler.js +34 -0
  406. package/dist/utils/reviewActionHandler.js.map +1 -0
  407. package/dist/utils/reviewParser.d.ts +34 -0
  408. package/dist/utils/reviewParser.js +218 -0
  409. package/dist/utils/reviewParser.js.map +1 -0
  410. package/dist/utils/sanitizer.d.ts +82 -0
  411. package/dist/utils/sanitizer.js +239 -0
  412. package/dist/utils/sanitizer.js.map +1 -0
  413. package/dist/utils/smartFileSelector.d.ts +50 -0
  414. package/dist/utils/smartFileSelector.js +261 -0
  415. package/dist/utils/smartFileSelector.js.map +1 -0
  416. package/dist/utils/templateLoader.d.ts +44 -0
  417. package/dist/utils/templateLoader.js +431 -0
  418. package/dist/utils/templateLoader.js.map +1 -0
  419. package/dist/utils/treeGenerator.d.ts +12 -0
  420. package/dist/utils/treeGenerator.js +133 -0
  421. package/dist/utils/treeGenerator.js.map +1 -0
  422. package/package.json +5 -1
  423. package/.cr-aia.yml +0 -23
  424. package/.crignore +0 -0
  425. package/docs/opt-in-full-context.md +0 -27
  426. package/reports/cr-cr-aia-17-11-2025-20-13.md +0 -354
  427. package/src/analysis/FindingsExtractor.ts +0 -431
  428. package/src/analysis/ai-detection/analyzers/BaseAnalyzer.ts +0 -267
  429. package/src/analysis/ai-detection/analyzers/DocumentationAnalyzer.ts +0 -622
  430. package/src/analysis/ai-detection/analyzers/GitHistoryAnalyzer.ts +0 -430
  431. package/src/analysis/ai-detection/core/AIDetectionEngine.ts +0 -467
  432. package/src/analysis/ai-detection/types/DetectionTypes.ts +0 -406
  433. package/src/analysis/ai-detection/utils/SubmissionConverter.ts +0 -390
  434. package/src/analysis/context/ReviewContext.ts +0 -378
  435. package/src/analysis/tokens/TokenAnalyzer.ts +0 -747
  436. package/src/clients/base/abstractClient.ts +0 -190
  437. package/src/clients/base/httpClient.ts +0 -160
  438. package/src/clients/base/modelDetection.ts +0 -107
  439. package/src/clients/base/responseProcessor.ts +0 -586
  440. package/src/clients/factory/clientFactory.ts +0 -55
  441. package/src/clients/implementations/openRouterClient.ts +0 -413
  442. package/src/clients/openRouterClient.ts +0 -870
  443. package/src/clients/utils/directoryStructure.ts +0 -52
  444. package/src/clients/utils/languageDetection.ts +0 -44
  445. package/src/clients/utils/promptFormatter.ts +0 -182
  446. package/src/clients/utils/tokenCounter.ts +0 -297
  447. package/src/core/ApiClientSelector.ts +0 -37
  448. package/src/core/ConfigurationService.ts +0 -591
  449. package/src/core/ConsolidationService.ts +0 -423
  450. package/src/core/InteractiveDisplayManager.ts +0 -81
  451. package/src/core/OutputManager.ts +0 -275
  452. package/src/core/ReviewGenerator.ts +0 -140
  453. package/src/core/fileDiscovery.ts +0 -237
  454. package/src/core/handlers/EstimationHandler.ts +0 -104
  455. package/src/core/handlers/FileProcessingHandler.ts +0 -210
  456. package/src/core/handlers/OutputHandler.ts +0 -125
  457. package/src/core/handlers/ReviewExecutor.ts +0 -104
  458. package/src/core/reviewOrchestrator.ts +0 -333
  459. package/src/core/utils/ModelInfoUtils.ts +0 -56
  460. package/src/formatters/utils/IssueFormatters.ts +0 -83
  461. package/src/formatters/utils/JsonFormatter.ts +0 -77
  462. package/src/formatters/utils/MarkdownFormatters.ts +0 -609
  463. package/src/formatters/utils/MetadataFormatter.ts +0 -269
  464. package/src/formatters/utils/ModelInfoExtractor.ts +0 -115
  465. package/src/index.ts +0 -25
  466. package/src/plugins/PluginInterface.ts +0 -50
  467. package/src/plugins/PluginManager.ts +0 -126
  468. package/src/prompts/PromptManager.ts +0 -69
  469. package/src/prompts/cache/PromptCache.ts +0 -50
  470. package/src/prompts/promptText/common/variables/css-frameworks.json +0 -33
  471. package/src/prompts/promptText/common/variables/framework-versions.json +0 -45
  472. package/src/prompts/promptText/frameworks/react/comprehensive.hbs +0 -19
  473. package/src/prompts/promptText/languages/css/comprehensive.hbs +0 -18
  474. package/src/prompts/promptText/languages/generic/comprehensive.hbs +0 -20
  475. package/src/prompts/promptText/languages/html/comprehensive.hbs +0 -18
  476. package/src/prompts/promptText/languages/javascript/comprehensive.hbs +0 -18
  477. package/src/prompts/promptText/languages/python/comprehensive.hbs +0 -18
  478. package/src/prompts/promptText/languages/typescript/comprehensive.hbs +0 -18
  479. package/src/runtime/auth/service.ts +0 -58
  480. package/src/runtime/auth/session.ts +0 -103
  481. package/src/runtime/auth/types.ts +0 -11
  482. package/src/runtime/cliEntry.ts +0 -214
  483. package/src/runtime/debug/logManager.ts +0 -37
  484. package/src/runtime/errors.ts +0 -13
  485. package/src/runtime/fileCollector.ts +0 -495
  486. package/src/runtime/manifest.ts +0 -64
  487. package/src/runtime/openrouterProxy.ts +0 -45
  488. package/src/runtime/preprod/webCheck.ts +0 -104
  489. package/src/runtime/proxyConfig.ts +0 -94
  490. package/src/runtime/proxyEnvironment.ts +0 -71
  491. package/src/runtime/reportMerge.ts +0 -102
  492. package/src/runtime/reporting/markdownReportBuilder.ts +0 -138
  493. package/src/runtime/reporting/reportDataCollector.ts +0 -234
  494. package/src/runtime/reporting/summaryGenerator.ts +0 -86
  495. package/src/runtime/reviewPipeline.ts +0 -200
  496. package/src/runtime/runAiCodeReview.ts +0 -308
  497. package/src/runtime/runtimeConfig.ts +0 -5
  498. package/src/runtime/ui/Layout.tsx +0 -57
  499. package/src/runtime/ui/RuntimeApp.tsx +0 -262
  500. package/src/runtime/ui/inkModules.ts +0 -73
  501. package/src/runtime/ui/screens/AuthScreen.tsx +0 -128
  502. package/src/runtime/ui/screens/ModeSelection.tsx +0 -185
  503. package/src/runtime/ui/screens/ProgressScreen.tsx +0 -110
  504. package/src/runtime/ui/screens/ResultsScreen.tsx +0 -103
  505. package/src/strategies/ArchitecturalReviewStrategy.ts +0 -54
  506. package/src/strategies/CodingTestReviewStrategy.ts +0 -920
  507. package/src/strategies/ConsolidatedReviewStrategy.ts +0 -59
  508. package/src/strategies/ExtractPatternsReviewStrategy.ts +0 -64
  509. package/src/strategies/MultiPassReviewStrategy.ts +0 -785
  510. package/src/strategies/ReviewStrategy.ts +0 -64
  511. package/src/strategies/StrategyFactory.ts +0 -79
  512. package/src/tokenizers/baseTokenizer.ts +0 -61
  513. package/src/tokenizers/gptTokenizer.ts +0 -27
  514. package/src/types/apiResponses.ts +0 -40
  515. package/src/types/cli.ts +0 -24
  516. package/src/types/configuration.ts +0 -201
  517. package/src/types/handlebars.d.ts +0 -5
  518. package/src/types/patch.d.ts +0 -25
  519. package/src/types/review.ts +0 -312
  520. package/src/types/reviewContext.d.ts +0 -65
  521. package/src/types/structuredReview.ts +0 -167
  522. package/src/types/tokenAnalysis.ts +0 -56
  523. package/src/utils/FileReader.ts +0 -93
  524. package/src/utils/FileWriter.ts +0 -76
  525. package/src/utils/PathGenerator.ts +0 -97
  526. package/src/utils/api/apiUtils.ts +0 -14
  527. package/src/utils/apiErrorHandler.ts +0 -287
  528. package/src/utils/ciDataCollector.ts +0 -252
  529. package/src/utils/codingTestConfigLoader.ts +0 -466
  530. package/src/utils/dependencies/aiDependencyAnalyzer.ts +0 -454
  531. package/src/utils/detection/frameworkDetector.ts +0 -879
  532. package/src/utils/detection/projectTypeDetector.ts +0 -518
  533. package/src/utils/diagramGenerator.ts +0 -206
  534. package/src/utils/errorLogger.ts +0 -60
  535. package/src/utils/estimationUtils.ts +0 -407
  536. package/src/utils/fileFilters.ts +0 -373
  537. package/src/utils/fileSystem.ts +0 -57
  538. package/src/utils/logger.ts +0 -290
  539. package/src/utils/pathValidator.ts +0 -98
  540. package/src/utils/projectDocs.ts +0 -189
  541. package/src/utils/promptPaths.ts +0 -29
  542. package/src/utils/promptTemplateManager.ts +0 -157
  543. package/src/utils/review/consolidateReview.ts +0 -553
  544. package/src/utils/review/fixDisplay.ts +0 -100
  545. package/src/utils/review/fixImplementation.ts +0 -61
  546. package/src/utils/review/index.ts +0 -36
  547. package/src/utils/review/interactiveProcessing.ts +0 -294
  548. package/src/utils/review/progressTracker.ts +0 -296
  549. package/src/utils/review/reviewExtraction.ts +0 -382
  550. package/src/utils/review/types.ts +0 -46
  551. package/src/utils/reviewParser.ts +0 -253
  552. package/src/utils/sanitizer.ts +0 -238
  553. package/src/utils/smartFileSelector.ts +0 -255
  554. package/src/utils/templateLoader.ts +0 -514
  555. package/src/utils/treeGenerator.ts +0 -153
  556. package/tsconfig.build.json +0 -14
  557. package/tsconfig.json +0 -59
  558. /package/{src/utils/api/index.ts → dist/utils/api/index.d.ts} +0 -0
@@ -1,238 +0,0 @@
1
- /**
2
- * @fileoverview Content sanitization utilities for preventing XSS attacks.
3
- *
4
- * This module provides sanitization functions to clean user-generated or AI-generated
5
- * content before rendering or storing it. It uses DOMPurify to remove potentially
6
- * malicious HTML, JavaScript, and other harmful content while preserving legitimate
7
- * formatting elements. It also includes utilities for sanitizing filenames to ensure
8
- * they are safe for use in file systems.
9
- */
10
-
11
- import createDOMPurify from 'dompurify';
12
- import { JSDOM } from 'jsdom';
13
- import logger from './logger';
14
-
15
- // Create a DOM window for DOMPurify
16
- const { window } = new JSDOM('');
17
- // Cast window for DOMPurify compatibility
18
- const DOMPurify = createDOMPurify(window);
19
-
20
- /**
21
- * Sanitizes HTML content to prevent Cross-Site Scripting (XSS) attacks.
22
- *
23
- * This function uses DOMPurify to clean HTML content by:
24
- * 1. Allowing only safe HTML tags (h1-h6, p, lists, tables, etc.)
25
- * 2. Allowing only safe attributes (href, class, id, etc.)
26
- * 3. Explicitly forbidding dangerous tags (script, iframe, svg, etc.)
27
- * 4. Explicitly forbidding dangerous attributes (onerror, onclick, etc.)
28
- *
29
- * If sanitization fails for any reason, it returns an empty string for safety.
30
- *
31
- * @param {string} content - The HTML content to sanitize
32
- * @returns {string} Sanitized HTML with potentially dangerous content removed
33
- *
34
- * @example
35
- * const unsafeHtml = '<div>Safe content</div><script>alert("XSS")</script>';
36
- * const safeHtml = sanitizeHtml(unsafeHtml);
37
- * // Returns: "<div>Safe content</div>"
38
- *
39
- * @throws Catches internally and returns empty string if DOMPurify fails
40
- */
41
- export function sanitizeHtml(content: string): string {
42
- try {
43
- // Configure DOMPurify to allow certain tags and attributes
44
- const sanitized = DOMPurify.sanitize(content, {
45
- ALLOWED_TAGS: [
46
- 'h1',
47
- 'h2',
48
- 'h3',
49
- 'h4',
50
- 'h5',
51
- 'h6',
52
- 'p',
53
- 'br',
54
- 'hr',
55
- 'ul',
56
- 'ol',
57
- 'li',
58
- 'b',
59
- 'i',
60
- 'strong',
61
- 'em',
62
- 'code',
63
- 'pre',
64
- 'a',
65
- 'span',
66
- 'div',
67
- 'table',
68
- 'thead',
69
- 'tbody',
70
- 'tr',
71
- 'th',
72
- 'td',
73
- ],
74
- ALLOWED_ATTR: ['href', 'target', 'rel', 'class', 'id', 'style'],
75
- FORBID_TAGS: [
76
- 'script',
77
- 'iframe',
78
- 'object',
79
- 'embed',
80
- 'form',
81
- 'input',
82
- 'button',
83
- 'style',
84
- 'link',
85
- 'meta',
86
- 'base',
87
- 'applet',
88
- 'math',
89
- 'svg',
90
- ],
91
- FORBID_ATTR: [
92
- 'onerror',
93
- 'onload',
94
- 'onclick',
95
- 'onmouseover',
96
- 'onmouseout',
97
- 'onmousedown',
98
- 'onmouseup',
99
- 'onkeydown',
100
- 'onkeyup',
101
- 'onkeypress',
102
- 'onfocus',
103
- 'onblur',
104
- 'onchange',
105
- 'onsubmit',
106
- 'onreset',
107
- 'javascript:',
108
- 'data:',
109
- 'vbscript:',
110
- ],
111
- });
112
-
113
- return sanitized;
114
- } catch (error) {
115
- logger.error('Error sanitizing HTML content:', error);
116
- // Return a safe fallback if sanitization fails
117
- return '';
118
- }
119
- }
120
-
121
- /**
122
- * Sanitize Markdown content
123
- * @param content Markdown content to sanitize
124
- * @returns Sanitized Markdown content
125
- */
126
- export function sanitizeMarkdown(content: string): string {
127
- try {
128
- // Remove potentially harmful content
129
- const sanitized = content
130
- // Remove HTML comments
131
- .replace(/<!--[\s\S]*?-->/g, '')
132
- // Remove script tags and their content
133
- .replace(/<script[\s\S]*?<\/script>/gi, '')
134
- // Remove iframe tags and their content
135
- .replace(/<iframe[\s\S]*?<\/iframe>/gi, '')
136
- // Remove style tags and their content
137
- .replace(/<style[\s\S]*?<\/style>/gi, '')
138
- // Remove event handlers
139
- .replace(/\son\w+\s*=\s*["']?[^"']*["']?/gi, '')
140
- // Remove javascript: URLs
141
- .replace(/javascript\s*:/gi, 'removed:')
142
- // Remove data: URLs
143
- .replace(/data\s*:/gi, 'removed:')
144
- // Remove vbscript: URLs
145
- .replace(/vbscript\s*:/gi, 'removed:');
146
-
147
- return sanitized;
148
- } catch (error) {
149
- logger.error('Error sanitizing Markdown content:', error);
150
- // Return a safe fallback if sanitization fails
151
- return '';
152
- }
153
- }
154
-
155
- /**
156
- * Sanitize JSON content
157
- * @param content JSON content to sanitize
158
- * @returns Sanitized JSON content
159
- */
160
- export function sanitizeJson(content: string): string {
161
- try {
162
- // Parse and stringify to ensure valid JSON
163
- const parsed = JSON.parse(content);
164
- return JSON.stringify(parsed);
165
- } catch (error) {
166
- logger.error('Error sanitizing JSON content:', error);
167
- // Return a safe fallback if sanitization fails
168
- return '{}';
169
- }
170
- }
171
-
172
- /**
173
- * Sanitizes content based on its type to prevent security vulnerabilities.
174
- *
175
- * This function acts as a dispatcher that routes the content to the appropriate
176
- * specialized sanitization function based on the content type. It supports
177
- * HTML, Markdown, JSON, and plain text formats, each with type-specific
178
- * sanitization rules.
179
- *
180
- * @param {string} content - The content to sanitize
181
- * @param {('html'|'markdown'|'json'|'text')} [contentType='text'] - The type of content
182
- * @returns {string} Sanitized content safe for rendering or storage
183
- *
184
- * @example
185
- * // Sanitize HTML content
186
- * const safeHtml = sanitizeContent('<script>alert("XSS")</script><p>Hello</p>', 'html');
187
- * // Returns: "<p>Hello</p>"
188
- *
189
- * @example
190
- * // Sanitize Markdown content
191
- * const safeMarkdown = sanitizeContent('# Title\n<script>alert("XSS")</script>', 'markdown');
192
- * // Returns: "# Title\n"
193
- *
194
- * @example
195
- * // Sanitize JSON content
196
- * const safeJson = sanitizeContent('{"key": "value"}', 'json');
197
- * // Returns: '{"key":"value"}'
198
- */
199
- export function sanitizeContent(
200
- content: string,
201
- contentType: 'html' | 'markdown' | 'json' | 'text' = 'text',
202
- ): string {
203
- switch (contentType) {
204
- case 'html':
205
- return sanitizeHtml(content);
206
- case 'markdown':
207
- return sanitizeMarkdown(content);
208
- case 'json':
209
- return sanitizeJson(content);
210
- default:
211
- // For plain text, just remove control characters except for newlines and tabs
212
- // eslint-disable-next-line no-control-regex
213
- return content.replace(/[\x00-\x09\x0B-\x1F\x7F]/g, '');
214
- }
215
- }
216
-
217
- /**
218
- * Sanitize a filename to ensure it's safe for use in file systems
219
- *
220
- * This function removes or replaces characters that are not safe for use in filenames
221
- * across different operating systems. It handles null/undefined inputs and preserves
222
- * spaces and non-ASCII characters that are generally safe for modern file systems.
223
- *
224
- * @param filename The filename to sanitize
225
- * @returns A sanitized filename safe for use in file systems
226
- */
227
- export function sanitizeFilename(filename: string | null | undefined): string {
228
- // Handle null or undefined
229
- if (filename === null || filename === undefined) {
230
- return '';
231
- }
232
-
233
- // Replace invalid characters with underscores
234
- // This regex matches characters that are generally unsafe in filenames across platforms:
235
- // / \ : * ? " < > | and control characters
236
- // eslint-disable-next-line no-control-regex
237
- return filename.replace(/[/\\:*?"<>|\x00-\x1F\x7F]/g, '_');
238
- }
@@ -1,255 +0,0 @@
1
- /**
2
- * @fileoverview Smart file selection module based on project configuration files.
3
- *
4
- * This module provides enhanced file selection functionality by respecting
5
- * project configuration files like tsconfig.json and .eslintignore in addition
6
- * to .gitignore patterns.
7
- */
8
-
9
- import * as fs from 'node:fs';
10
- import * as path from 'node:path';
11
- import { loadGitignorePatterns, shouldExcludeFile } from './fileFilters';
12
- import logger from './logger';
13
-
14
- /**
15
- * Interface for TypeScript configuration file
16
- */
17
- interface TsConfig {
18
- include?: string[];
19
- exclude?: string[];
20
- files?: string[];
21
- compilerOptions?: Record<string, unknown>;
22
- }
23
-
24
- /**
25
- * Load ESLint ignore patterns from a project directory
26
- * @param projectDir Project directory path
27
- * @returns Array of ESLint ignore patterns
28
- */
29
- export async function loadEslintIgnorePatterns(projectDir: string): Promise<string[]> {
30
- try {
31
- const eslintIgnorePath = path.join(projectDir, '.eslintignore');
32
-
33
- // Check if .eslintignore exists
34
- try {
35
- await fs.promises.access(eslintIgnorePath);
36
- } catch (_error) {
37
- // File doesn't exist
38
- logger.debug(`No .eslintignore file found at ${eslintIgnorePath}`);
39
- return [];
40
- }
41
-
42
- // Read and parse .eslintignore
43
- const content = await fs.promises.readFile(eslintIgnorePath, 'utf-8');
44
- if (!content) {
45
- return [];
46
- }
47
- return content
48
- .split('\n')
49
- .map((line) => line.trim())
50
- .filter((line) => line && !line.startsWith('#'));
51
- } catch (error) {
52
- // Only log as error if it's not just a file not found issue
53
- if (error instanceof Error && (error as NodeJS.ErrnoException).code !== 'ENOENT') {
54
- logger.error(`Error reading .eslintignore: ${error}`);
55
- } else {
56
- const eslintIgnorePath = path.join(projectDir, '.eslintignore');
57
- logger.debug(`No .eslintignore file found at ${eslintIgnorePath}`);
58
- }
59
- return [];
60
- }
61
- }
62
-
63
- /**
64
- * Load TypeScript configuration from a project directory
65
- * @param projectDir Project directory path
66
- * @returns TypeScript configuration or null if not found
67
- */
68
- export async function loadTsConfig(projectDir: string): Promise<TsConfig | null> {
69
- try {
70
- const tsConfigPath = path.join(projectDir, 'tsconfig.json');
71
-
72
- // Check if tsconfig.json exists
73
- try {
74
- await fs.promises.access(tsConfigPath);
75
- } catch (_error) {
76
- // File doesn't exist
77
- logger.debug(`No tsconfig.json file found at ${tsConfigPath}`);
78
- return null;
79
- }
80
-
81
- // Read and parse tsconfig.json
82
- const content = await fs.promises.readFile(tsConfigPath, 'utf-8');
83
- if (!content) {
84
- return null;
85
- }
86
- try {
87
- return JSON.parse(content) as TsConfig;
88
- } catch (parseError) {
89
- logger.error(`Error parsing tsconfig.json: ${parseError}`);
90
- return null;
91
- }
92
- } catch (error) {
93
- // Only log as error if it's not just a file not found issue
94
- if (error instanceof Error && (error as NodeJS.ErrnoException).code !== 'ENOENT') {
95
- logger.error(`Error reading tsconfig.json: ${error}`);
96
- } else {
97
- const tsConfigPath = path.join(projectDir, 'tsconfig.json');
98
- logger.debug(`No tsconfig.json file found at ${tsConfigPath}`);
99
- }
100
- return null;
101
- }
102
- }
103
-
104
- /**
105
- * Convert TypeScript glob patterns to regex patterns
106
- * @param pattern TypeScript glob pattern
107
- * @returns Regular expression pattern
108
- */
109
- function convertTsGlobToRegex(pattern: string): RegExp {
110
- // Escape special regex characters first, but preserve glob patterns
111
- let regexPattern = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&').replace(/\?/g, '[^/]');
112
-
113
- // Handle ** patterns (match zero or more directories)
114
- // **/ at the beginning means match any number of directories
115
- // /** at the end means match any number of directories
116
- // /**/ in the middle means match any number of directories
117
- regexPattern = regexPattern
118
- .replace(/\*\*\//g, '(?:.*/)?') // **/ matches zero or more directories
119
- .replace(/\/\*\*/g, '(?:/.*)?') // /** matches zero or more directories
120
- .replace(/\*\*/g, '.*'); // ** by itself matches anything
121
-
122
- // Handle single * patterns (match anything except directory separators)
123
- regexPattern = regexPattern.replace(/\*/g, '[^/]*');
124
-
125
- // Create regex that matches both full paths and relative paths
126
- // The pattern should match if:
127
- // 1. The full path matches the pattern
128
- // 2. The relative path matches the pattern
129
- // 3. The pattern matches from any directory level
130
- return new RegExp(`(^|/)${regexPattern}$`, 'i');
131
- }
132
-
133
- /**
134
- * Check if a file matches TypeScript configuration
135
- * @param filePath File path
136
- * @param tsConfig TypeScript configuration
137
- * @param projectDir Project directory path
138
- * @returns True if the file should be included based on TypeScript configuration
139
- */
140
- export function matchesTsConfig(filePath: string, tsConfig: TsConfig, projectDir: string): boolean {
141
- // If tsconfig.json doesn't exist, include all files
142
- if (!tsConfig) {
143
- return true;
144
- }
145
-
146
- // Convert Windows paths to Unix-style for consistent pattern matching
147
- const normalizedPath = filePath.replace(/\\/g, '/');
148
- const relativePath = path.relative(projectDir, filePath).replace(/\\/g, '/');
149
-
150
- // If files array is provided, only include files explicitly listed
151
- if (tsConfig.files && tsConfig.files.length > 0) {
152
- return tsConfig.files.some((file) => {
153
- const normalizedFile = file.replace(/\\/g, '/');
154
- return relativePath === normalizedFile;
155
- });
156
- }
157
-
158
- // Check exclude patterns first
159
- if (tsConfig.exclude && tsConfig.exclude.length > 0) {
160
- for (const pattern of tsConfig.exclude) {
161
- const regex = convertTsGlobToRegex(pattern);
162
- if (regex.test(normalizedPath) || regex.test(relativePath)) {
163
- // File matches an exclude pattern, so exclude it
164
- logger.debug(`File ${filePath} excluded by tsconfig.json pattern: ${pattern}`);
165
- return false;
166
- }
167
- }
168
- }
169
-
170
- // Then check include patterns
171
- if (tsConfig.include && tsConfig.include.length > 0) {
172
- // Find if file matches any include pattern
173
- for (const pattern of tsConfig.include) {
174
- const regex = convertTsGlobToRegex(pattern);
175
-
176
- // Test the pattern against different path representations
177
- const testPaths = [
178
- normalizedPath,
179
- relativePath,
180
- path.basename(filePath),
181
- // Also test with leading slash removed for relative paths
182
- relativePath.startsWith('/') ? relativePath.slice(1) : relativePath,
183
- ];
184
-
185
- for (const testPath of testPaths) {
186
- if (regex.test(testPath)) {
187
- logger.debug(
188
- `File ${filePath} matched by tsconfig.json pattern: ${pattern} (tested path: ${testPath})`,
189
- );
190
- return true;
191
- }
192
- }
193
- }
194
-
195
- logger.debug(
196
- `File ${filePath} not included by any tsconfig.json include pattern (patterns: ${tsConfig.include.join(', ')})`,
197
- );
198
- return false;
199
- }
200
-
201
- // If no include patterns are provided, include all files that weren't excluded
202
- return true;
203
- }
204
-
205
- /**
206
- * Apply smart filtering to a list of file paths
207
- * @param filePaths Array of file paths
208
- * @param projectDir Project directory path
209
- * @returns Array of filtered file paths
210
- */
211
- export async function applySmartFiltering(
212
- filePaths: string[],
213
- projectDir: string,
214
- ): Promise<string[]> {
215
- // Load ignore patterns
216
- const gitignorePatterns = await loadGitignorePatterns(projectDir);
217
- const eslintIgnorePatterns = await loadEslintIgnorePatterns(projectDir);
218
- const tsConfig = await loadTsConfig(projectDir);
219
-
220
- // Log patterns loaded
221
- logger.debug(`Loaded ${gitignorePatterns.length} .gitignore patterns`);
222
- logger.debug(`Loaded ${eslintIgnorePatterns.length} .eslintignore patterns`);
223
- logger.debug(`TypeScript config loaded: ${tsConfig ? 'Yes' : 'No'}`);
224
-
225
- // Apply filtering
226
- return filePaths.filter((filePath) => {
227
- // Apply .gitignore patterns
228
- if (shouldExcludeFile(filePath, gitignorePatterns)) {
229
- logger.debug(`File excluded by .gitignore: ${filePath}`);
230
- return false;
231
- }
232
-
233
- // Apply .eslintignore patterns
234
- if (shouldExcludeFile(filePath, eslintIgnorePatterns)) {
235
- logger.debug(`File excluded by .eslintignore: ${filePath}`);
236
- return false;
237
- }
238
-
239
- // Apply TypeScript configuration
240
- if (tsConfig && !matchesTsConfig(filePath, tsConfig, projectDir)) {
241
- logger.debug(`File excluded by tsconfig.json: ${filePath}`);
242
- return false;
243
- }
244
-
245
- // Include the file if it passed all filters
246
- return true;
247
- });
248
- }
249
-
250
- export default {
251
- loadEslintIgnorePatterns,
252
- loadTsConfig,
253
- matchesTsConfig,
254
- applySmartFiltering,
255
- };