codereview-aia 0.1.3 → 0.1.4

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 (549) 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 +738 -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 +209 -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 +266 -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 +382 -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/webCheck.d.ts +1 -0
  193. package/dist/runtime/preprod/webCheck.js +98 -0
  194. package/dist/runtime/preprod/webCheck.js.map +1 -0
  195. package/dist/runtime/proxyConfig.d.ts +6 -0
  196. package/dist/runtime/proxyConfig.js +86 -0
  197. package/dist/runtime/proxyConfig.js.map +1 -0
  198. package/dist/runtime/proxyEnvironment.d.ts +3 -0
  199. package/dist/runtime/proxyEnvironment.js +63 -0
  200. package/dist/runtime/proxyEnvironment.js.map +1 -0
  201. package/dist/runtime/reportMerge.d.ts +30 -0
  202. package/dist/runtime/reportMerge.js +70 -0
  203. package/dist/runtime/reportMerge.js.map +1 -0
  204. package/dist/runtime/reporting/markdownReportBuilder.d.ts +17 -0
  205. package/dist/runtime/reporting/markdownReportBuilder.js +154 -0
  206. package/dist/runtime/reporting/markdownReportBuilder.js.map +1 -0
  207. package/dist/runtime/reporting/reportDataCollector.d.ts +31 -0
  208. package/dist/runtime/reporting/reportDataCollector.js +170 -0
  209. package/dist/runtime/reporting/reportDataCollector.js.map +1 -0
  210. package/dist/runtime/reporting/summaryGenerator.d.ts +10 -0
  211. package/dist/runtime/reporting/summaryGenerator.js +67 -0
  212. package/dist/runtime/reporting/summaryGenerator.js.map +1 -0
  213. package/dist/runtime/reviewPipeline.d.ts +47 -0
  214. package/dist/runtime/reviewPipeline.js +161 -0
  215. package/dist/runtime/reviewPipeline.js.map +1 -0
  216. package/dist/runtime/runAiCodeReview.d.ts +28 -0
  217. package/dist/runtime/runAiCodeReview.js +373 -0
  218. package/dist/runtime/runAiCodeReview.js.map +1 -0
  219. package/dist/runtime/runtimeConfig.d.ts +4 -0
  220. package/dist/runtime/runtimeConfig.js +7 -0
  221. package/dist/runtime/runtimeConfig.js.map +1 -0
  222. package/dist/runtime/ui/Layout.d.ts +11 -0
  223. package/dist/runtime/ui/Layout.js +47 -0
  224. package/dist/runtime/ui/Layout.js.map +1 -0
  225. package/dist/runtime/ui/RuntimeApp.d.ts +6 -0
  226. package/dist/runtime/ui/RuntimeApp.js +172 -0
  227. package/dist/runtime/ui/RuntimeApp.js.map +1 -0
  228. package/dist/runtime/ui/inkModules.d.ts +10 -0
  229. package/dist/runtime/ui/inkModules.js +63 -0
  230. package/dist/runtime/ui/inkModules.js.map +1 -0
  231. package/dist/runtime/ui/screens/AuthScreen.d.ts +6 -0
  232. package/dist/runtime/ui/screens/AuthScreen.js +67 -0
  233. package/dist/runtime/ui/screens/AuthScreen.js.map +1 -0
  234. package/dist/runtime/ui/screens/ModeSelection.d.ts +10 -0
  235. package/dist/runtime/ui/screens/ModeSelection.js +100 -0
  236. package/dist/runtime/ui/screens/ModeSelection.js.map +1 -0
  237. package/dist/runtime/ui/screens/ProgressScreen.d.ts +12 -0
  238. package/dist/runtime/ui/screens/ProgressScreen.js +64 -0
  239. package/dist/runtime/ui/screens/ProgressScreen.js.map +1 -0
  240. package/dist/runtime/ui/screens/ResultsScreen.d.ts +7 -0
  241. package/dist/runtime/ui/screens/ResultsScreen.js +29 -0
  242. package/dist/runtime/ui/screens/ResultsScreen.js.map +1 -0
  243. package/dist/strategies/ArchitecturalReviewStrategy.d.ts +29 -0
  244. package/dist/strategies/ArchitecturalReviewStrategy.js +42 -0
  245. package/dist/strategies/ArchitecturalReviewStrategy.js.map +1 -0
  246. package/dist/strategies/CodingTestReviewStrategy.d.ts +194 -0
  247. package/dist/strategies/CodingTestReviewStrategy.js +681 -0
  248. package/dist/strategies/CodingTestReviewStrategy.js.map +1 -0
  249. package/dist/strategies/ConsolidatedReviewStrategy.d.ts +25 -0
  250. package/dist/strategies/ConsolidatedReviewStrategy.js +45 -0
  251. package/dist/strategies/ConsolidatedReviewStrategy.js.map +1 -0
  252. package/dist/strategies/ExtractPatternsReviewStrategy.d.ts +30 -0
  253. package/dist/strategies/ExtractPatternsReviewStrategy.js +51 -0
  254. package/dist/strategies/ExtractPatternsReviewStrategy.js.map +1 -0
  255. package/dist/strategies/MultiPassReviewStrategy.d.ts +86 -0
  256. package/dist/strategies/MultiPassReviewStrategy.js +590 -0
  257. package/dist/strategies/MultiPassReviewStrategy.js.map +1 -0
  258. package/dist/strategies/ReviewStrategy.d.ts +45 -0
  259. package/dist/strategies/ReviewStrategy.js +24 -0
  260. package/dist/strategies/ReviewStrategy.js.map +1 -0
  261. package/dist/strategies/StrategyFactory.d.ts +19 -0
  262. package/dist/strategies/StrategyFactory.js +72 -0
  263. package/dist/strategies/StrategyFactory.js.map +1 -0
  264. package/{src/strategies/index.ts → dist/strategies/index.d.ts} +0 -1
  265. package/dist/strategies/index.js +30 -0
  266. package/dist/strategies/index.js.map +1 -0
  267. package/dist/tokenizers/baseTokenizer.d.ts +25 -0
  268. package/dist/tokenizers/baseTokenizer.js +48 -0
  269. package/dist/tokenizers/baseTokenizer.js.map +1 -0
  270. package/dist/tokenizers/gptTokenizer.d.ts +7 -0
  271. package/dist/tokenizers/gptTokenizer.js +28 -0
  272. package/dist/tokenizers/gptTokenizer.js.map +1 -0
  273. package/{src/tokenizers/index.ts → dist/tokenizers/index.d.ts} +0 -1
  274. package/dist/tokenizers/index.js +24 -0
  275. package/dist/tokenizers/index.js.map +1 -0
  276. package/dist/types/apiResponses.d.ts +39 -0
  277. package/dist/types/apiResponses.js +9 -0
  278. package/dist/types/apiResponses.js.map +1 -0
  279. package/dist/types/cli.d.ts +22 -0
  280. package/dist/types/cli.js +3 -0
  281. package/dist/types/cli.js.map +1 -0
  282. package/{src/types/common.ts → dist/types/common.d.ts} +2 -19
  283. package/dist/types/common.js +14 -0
  284. package/dist/types/common.js.map +1 -0
  285. package/dist/types/configuration.d.ts +682 -0
  286. package/dist/types/configuration.js +65 -0
  287. package/dist/types/configuration.js.map +1 -0
  288. package/dist/types/review.d.ts +318 -0
  289. package/dist/types/review.js +8 -0
  290. package/dist/types/review.js.map +1 -0
  291. package/dist/types/reviewSchema.d.ts +543 -0
  292. package/{src/types/reviewSchema.ts → dist/types/reviewSchema.js} +44 -104
  293. package/dist/types/reviewSchema.js.map +1 -0
  294. package/dist/types/structuredReview.d.ts +119 -0
  295. package/dist/types/structuredReview.js +6 -0
  296. package/dist/types/structuredReview.js.map +1 -0
  297. package/dist/types/tokenAnalysis.d.ts +44 -0
  298. package/dist/types/tokenAnalysis.js +4 -0
  299. package/dist/types/tokenAnalysis.js.map +1 -0
  300. package/dist/utils/FileReader.d.ts +33 -0
  301. package/dist/utils/FileReader.js +88 -0
  302. package/dist/utils/FileReader.js.map +1 -0
  303. package/dist/utils/FileWriter.d.ts +26 -0
  304. package/dist/utils/FileWriter.js +76 -0
  305. package/dist/utils/FileWriter.js.map +1 -0
  306. package/dist/utils/PathGenerator.d.ts +30 -0
  307. package/dist/utils/PathGenerator.js +82 -0
  308. package/dist/utils/PathGenerator.js.map +1 -0
  309. package/dist/utils/api/apiUtils.d.ts +3 -0
  310. package/dist/utils/api/apiUtils.js +20 -0
  311. package/dist/utils/api/apiUtils.js.map +1 -0
  312. package/dist/utils/api/index.js +18 -0
  313. package/dist/utils/api/index.js.map +1 -0
  314. package/dist/utils/apiErrorHandler.d.ts +130 -0
  315. package/dist/utils/apiErrorHandler.js +256 -0
  316. package/dist/utils/apiErrorHandler.js.map +1 -0
  317. package/dist/utils/ciDataCollector.d.ts +51 -0
  318. package/dist/utils/ciDataCollector.js +197 -0
  319. package/dist/utils/ciDataCollector.js.map +1 -0
  320. package/dist/utils/codingTestConfigLoader.d.ts +66 -0
  321. package/dist/utils/codingTestConfigLoader.js +420 -0
  322. package/dist/utils/codingTestConfigLoader.js.map +1 -0
  323. package/dist/utils/dependencies/aiDependencyAnalyzer.d.ts +30 -0
  324. package/dist/utils/dependencies/aiDependencyAnalyzer.js +343 -0
  325. package/dist/utils/dependencies/aiDependencyAnalyzer.js.map +1 -0
  326. package/dist/utils/detection/frameworkDetector.d.ts +43 -0
  327. package/dist/utils/detection/frameworkDetector.js +850 -0
  328. package/dist/utils/detection/frameworkDetector.js.map +1 -0
  329. package/{src/utils/detection/index.ts → dist/utils/detection/index.d.ts} +0 -1
  330. package/dist/utils/detection/index.js +28 -0
  331. package/dist/utils/detection/index.js.map +1 -0
  332. package/dist/utils/detection/projectTypeDetector.d.ts +27 -0
  333. package/dist/utils/detection/projectTypeDetector.js +469 -0
  334. package/dist/utils/detection/projectTypeDetector.js.map +1 -0
  335. package/dist/utils/diagramGenerator.d.ts +49 -0
  336. package/dist/utils/diagramGenerator.js +218 -0
  337. package/dist/utils/diagramGenerator.js.map +1 -0
  338. package/dist/utils/errorLogger.d.ts +24 -0
  339. package/dist/utils/errorLogger.js +59 -0
  340. package/dist/utils/errorLogger.js.map +1 -0
  341. package/dist/utils/estimationUtils.d.ts +139 -0
  342. package/dist/utils/estimationUtils.js +329 -0
  343. package/dist/utils/estimationUtils.js.map +1 -0
  344. package/dist/utils/fileFilters.d.ts +72 -0
  345. package/dist/utils/fileFilters.js +338 -0
  346. package/dist/utils/fileFilters.js.map +1 -0
  347. package/dist/utils/fileSystem.d.ts +22 -0
  348. package/dist/utils/fileSystem.js +45 -0
  349. package/dist/utils/fileSystem.js.map +1 -0
  350. package/{src/utils/index.ts → dist/utils/index.d.ts} +0 -14
  351. package/dist/utils/index.js +52 -0
  352. package/dist/utils/index.js.map +1 -0
  353. package/dist/utils/logger.d.ts +77 -0
  354. package/dist/utils/logger.js +271 -0
  355. package/dist/utils/logger.js.map +1 -0
  356. package/dist/utils/pathValidator.d.ts +40 -0
  357. package/dist/utils/pathValidator.js +98 -0
  358. package/dist/utils/pathValidator.js.map +1 -0
  359. package/{src/utils/priorityFilter.ts → dist/utils/priorityFilter.d.ts} +1 -26
  360. package/dist/utils/priorityFilter.js +54 -0
  361. package/dist/utils/priorityFilter.js.map +1 -0
  362. package/dist/utils/projectDocs.d.ts +47 -0
  363. package/dist/utils/projectDocs.js +158 -0
  364. package/dist/utils/projectDocs.js.map +1 -0
  365. package/dist/utils/promptPaths.d.ts +6 -0
  366. package/dist/utils/promptPaths.js +33 -0
  367. package/dist/utils/promptPaths.js.map +1 -0
  368. package/dist/utils/promptTemplateManager.d.ts +34 -0
  369. package/dist/utils/promptTemplateManager.js +141 -0
  370. package/dist/utils/promptTemplateManager.js.map +1 -0
  371. package/dist/utils/review/consolidateReview.d.ts +15 -0
  372. package/dist/utils/review/consolidateReview.js +481 -0
  373. package/dist/utils/review/consolidateReview.js.map +1 -0
  374. package/dist/utils/review/fixDisplay.d.ts +20 -0
  375. package/dist/utils/review/fixDisplay.js +84 -0
  376. package/dist/utils/review/fixDisplay.js.map +1 -0
  377. package/dist/utils/review/fixImplementation.d.ts +28 -0
  378. package/dist/utils/review/fixImplementation.js +60 -0
  379. package/dist/utils/review/fixImplementation.js.map +1 -0
  380. package/dist/utils/review/index.d.ts +13 -0
  381. package/dist/utils/review/index.js +50 -0
  382. package/dist/utils/review/index.js.map +1 -0
  383. package/dist/utils/review/interactiveProcessing.d.ts +25 -0
  384. package/dist/utils/review/interactiveProcessing.js +251 -0
  385. package/dist/utils/review/interactiveProcessing.js.map +1 -0
  386. package/dist/utils/review/progressTracker.d.ts +106 -0
  387. package/dist/utils/review/progressTracker.js +227 -0
  388. package/dist/utils/review/progressTracker.js.map +1 -0
  389. package/dist/utils/review/reviewExtraction.d.ts +31 -0
  390. package/dist/utils/review/reviewExtraction.js +324 -0
  391. package/dist/utils/review/reviewExtraction.js.map +1 -0
  392. package/dist/utils/review/types.d.ts +45 -0
  393. package/dist/utils/review/types.js +18 -0
  394. package/dist/utils/review/types.js.map +1 -0
  395. package/{src/utils/reviewActionHandler.ts → dist/utils/reviewActionHandler.d.ts} +0 -2
  396. package/dist/utils/reviewActionHandler.js +34 -0
  397. package/dist/utils/reviewActionHandler.js.map +1 -0
  398. package/dist/utils/reviewParser.d.ts +34 -0
  399. package/dist/utils/reviewParser.js +218 -0
  400. package/dist/utils/reviewParser.js.map +1 -0
  401. package/dist/utils/sanitizer.d.ts +82 -0
  402. package/dist/utils/sanitizer.js +239 -0
  403. package/dist/utils/sanitizer.js.map +1 -0
  404. package/dist/utils/smartFileSelector.d.ts +50 -0
  405. package/dist/utils/smartFileSelector.js +261 -0
  406. package/dist/utils/smartFileSelector.js.map +1 -0
  407. package/dist/utils/templateLoader.d.ts +44 -0
  408. package/dist/utils/templateLoader.js +431 -0
  409. package/dist/utils/templateLoader.js.map +1 -0
  410. package/dist/utils/treeGenerator.d.ts +12 -0
  411. package/dist/utils/treeGenerator.js +133 -0
  412. package/dist/utils/treeGenerator.js.map +1 -0
  413. package/package.json +5 -2
  414. package/.cr-aia.yml +0 -23
  415. package/.crignore +0 -0
  416. package/docs/opt-in-full-context.md +0 -27
  417. package/reports/cr-cr-aia-17-11-2025-20-13.md +0 -354
  418. package/src/analysis/FindingsExtractor.ts +0 -431
  419. package/src/analysis/ai-detection/analyzers/BaseAnalyzer.ts +0 -267
  420. package/src/analysis/ai-detection/analyzers/DocumentationAnalyzer.ts +0 -622
  421. package/src/analysis/ai-detection/analyzers/GitHistoryAnalyzer.ts +0 -430
  422. package/src/analysis/ai-detection/core/AIDetectionEngine.ts +0 -467
  423. package/src/analysis/ai-detection/types/DetectionTypes.ts +0 -406
  424. package/src/analysis/ai-detection/utils/SubmissionConverter.ts +0 -390
  425. package/src/analysis/context/ReviewContext.ts +0 -378
  426. package/src/analysis/tokens/TokenAnalyzer.ts +0 -747
  427. package/src/clients/base/abstractClient.ts +0 -190
  428. package/src/clients/base/httpClient.ts +0 -160
  429. package/src/clients/base/modelDetection.ts +0 -107
  430. package/src/clients/base/responseProcessor.ts +0 -586
  431. package/src/clients/factory/clientFactory.ts +0 -55
  432. package/src/clients/implementations/openRouterClient.ts +0 -413
  433. package/src/clients/openRouterClient.ts +0 -870
  434. package/src/clients/utils/directoryStructure.ts +0 -52
  435. package/src/clients/utils/languageDetection.ts +0 -44
  436. package/src/clients/utils/promptFormatter.ts +0 -182
  437. package/src/clients/utils/tokenCounter.ts +0 -297
  438. package/src/core/ApiClientSelector.ts +0 -37
  439. package/src/core/ConfigurationService.ts +0 -591
  440. package/src/core/ConsolidationService.ts +0 -423
  441. package/src/core/InteractiveDisplayManager.ts +0 -81
  442. package/src/core/OutputManager.ts +0 -275
  443. package/src/core/ReviewGenerator.ts +0 -140
  444. package/src/core/fileDiscovery.ts +0 -237
  445. package/src/core/handlers/EstimationHandler.ts +0 -104
  446. package/src/core/handlers/FileProcessingHandler.ts +0 -210
  447. package/src/core/handlers/OutputHandler.ts +0 -125
  448. package/src/core/handlers/ReviewExecutor.ts +0 -104
  449. package/src/core/reviewOrchestrator.ts +0 -333
  450. package/src/core/utils/ModelInfoUtils.ts +0 -56
  451. package/src/formatters/utils/IssueFormatters.ts +0 -83
  452. package/src/formatters/utils/JsonFormatter.ts +0 -77
  453. package/src/formatters/utils/MarkdownFormatters.ts +0 -609
  454. package/src/formatters/utils/MetadataFormatter.ts +0 -269
  455. package/src/formatters/utils/ModelInfoExtractor.ts +0 -115
  456. package/src/index.ts +0 -25
  457. package/src/plugins/PluginInterface.ts +0 -50
  458. package/src/plugins/PluginManager.ts +0 -126
  459. package/src/prompts/PromptManager.ts +0 -69
  460. package/src/prompts/cache/PromptCache.ts +0 -50
  461. package/src/prompts/promptText/common/variables/css-frameworks.json +0 -33
  462. package/src/prompts/promptText/common/variables/framework-versions.json +0 -45
  463. package/src/prompts/promptText/frameworks/react/comprehensive.hbs +0 -19
  464. package/src/prompts/promptText/languages/css/comprehensive.hbs +0 -18
  465. package/src/prompts/promptText/languages/generic/comprehensive.hbs +0 -20
  466. package/src/prompts/promptText/languages/html/comprehensive.hbs +0 -18
  467. package/src/prompts/promptText/languages/javascript/comprehensive.hbs +0 -18
  468. package/src/prompts/promptText/languages/python/comprehensive.hbs +0 -18
  469. package/src/prompts/promptText/languages/typescript/comprehensive.hbs +0 -18
  470. package/src/runtime/auth/service.ts +0 -58
  471. package/src/runtime/auth/session.ts +0 -103
  472. package/src/runtime/auth/types.ts +0 -11
  473. package/src/runtime/cliEntry.ts +0 -214
  474. package/src/runtime/debug/logManager.ts +0 -37
  475. package/src/runtime/errors.ts +0 -13
  476. package/src/runtime/fileCollector.ts +0 -495
  477. package/src/runtime/manifest.ts +0 -64
  478. package/src/runtime/openrouterProxy.ts +0 -45
  479. package/src/runtime/preprod/webCheck.ts +0 -104
  480. package/src/runtime/proxyConfig.ts +0 -94
  481. package/src/runtime/proxyEnvironment.ts +0 -71
  482. package/src/runtime/reportMerge.ts +0 -102
  483. package/src/runtime/reporting/markdownReportBuilder.ts +0 -138
  484. package/src/runtime/reporting/reportDataCollector.ts +0 -234
  485. package/src/runtime/reporting/summaryGenerator.ts +0 -86
  486. package/src/runtime/reviewPipeline.ts +0 -200
  487. package/src/runtime/runAiCodeReview.ts +0 -308
  488. package/src/runtime/runtimeConfig.ts +0 -5
  489. package/src/runtime/ui/Layout.tsx +0 -57
  490. package/src/runtime/ui/RuntimeApp.tsx +0 -262
  491. package/src/runtime/ui/inkModules.ts +0 -73
  492. package/src/runtime/ui/screens/AuthScreen.tsx +0 -128
  493. package/src/runtime/ui/screens/ModeSelection.tsx +0 -185
  494. package/src/runtime/ui/screens/ProgressScreen.tsx +0 -110
  495. package/src/runtime/ui/screens/ResultsScreen.tsx +0 -103
  496. package/src/strategies/ArchitecturalReviewStrategy.ts +0 -54
  497. package/src/strategies/CodingTestReviewStrategy.ts +0 -920
  498. package/src/strategies/ConsolidatedReviewStrategy.ts +0 -59
  499. package/src/strategies/ExtractPatternsReviewStrategy.ts +0 -64
  500. package/src/strategies/MultiPassReviewStrategy.ts +0 -785
  501. package/src/strategies/ReviewStrategy.ts +0 -64
  502. package/src/strategies/StrategyFactory.ts +0 -79
  503. package/src/tokenizers/baseTokenizer.ts +0 -61
  504. package/src/tokenizers/gptTokenizer.ts +0 -27
  505. package/src/types/apiResponses.ts +0 -40
  506. package/src/types/cli.ts +0 -24
  507. package/src/types/configuration.ts +0 -201
  508. package/src/types/handlebars.d.ts +0 -5
  509. package/src/types/patch.d.ts +0 -25
  510. package/src/types/review.ts +0 -312
  511. package/src/types/reviewContext.d.ts +0 -65
  512. package/src/types/structuredReview.ts +0 -167
  513. package/src/types/tokenAnalysis.ts +0 -56
  514. package/src/utils/FileReader.ts +0 -93
  515. package/src/utils/FileWriter.ts +0 -76
  516. package/src/utils/PathGenerator.ts +0 -97
  517. package/src/utils/api/apiUtils.ts +0 -14
  518. package/src/utils/apiErrorHandler.ts +0 -287
  519. package/src/utils/ciDataCollector.ts +0 -252
  520. package/src/utils/codingTestConfigLoader.ts +0 -466
  521. package/src/utils/dependencies/aiDependencyAnalyzer.ts +0 -454
  522. package/src/utils/detection/frameworkDetector.ts +0 -879
  523. package/src/utils/detection/projectTypeDetector.ts +0 -518
  524. package/src/utils/diagramGenerator.ts +0 -206
  525. package/src/utils/errorLogger.ts +0 -60
  526. package/src/utils/estimationUtils.ts +0 -407
  527. package/src/utils/fileFilters.ts +0 -373
  528. package/src/utils/fileSystem.ts +0 -57
  529. package/src/utils/logger.ts +0 -290
  530. package/src/utils/pathValidator.ts +0 -98
  531. package/src/utils/projectDocs.ts +0 -189
  532. package/src/utils/promptPaths.ts +0 -29
  533. package/src/utils/promptTemplateManager.ts +0 -157
  534. package/src/utils/review/consolidateReview.ts +0 -553
  535. package/src/utils/review/fixDisplay.ts +0 -100
  536. package/src/utils/review/fixImplementation.ts +0 -61
  537. package/src/utils/review/index.ts +0 -36
  538. package/src/utils/review/interactiveProcessing.ts +0 -294
  539. package/src/utils/review/progressTracker.ts +0 -296
  540. package/src/utils/review/reviewExtraction.ts +0 -382
  541. package/src/utils/review/types.ts +0 -46
  542. package/src/utils/reviewParser.ts +0 -253
  543. package/src/utils/sanitizer.ts +0 -238
  544. package/src/utils/smartFileSelector.ts +0 -255
  545. package/src/utils/templateLoader.ts +0 -514
  546. package/src/utils/treeGenerator.ts +0 -153
  547. package/tsconfig.build.json +0 -14
  548. package/tsconfig.json +0 -59
  549. /package/{src/utils/api/index.ts → dist/utils/api/index.d.ts} +0 -0
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Type definitions for review action modules
4
+ *
5
+ * This module provides shared types used across the review action modules.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.FixPriority = void 0;
9
+ /**
10
+ * Priority levels for code review fixes
11
+ */
12
+ var FixPriority;
13
+ (function (FixPriority) {
14
+ FixPriority["HIGH"] = "high";
15
+ FixPriority["MEDIUM"] = "medium";
16
+ FixPriority["LOW"] = "low";
17
+ })(FixPriority || (exports.FixPriority = FixPriority = {}));
18
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/review/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;GAEG;AACH,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,4BAAa,CAAA;IACb,gCAAiB,CAAA;IACjB,0BAAW,CAAA;AACb,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB"}
@@ -13,6 +13,4 @@
13
13
  * - Tracking changes made to files
14
14
  * - Providing summary reports of actions taken
15
15
  */
16
-
17
- // Re-export all functionality from the review modules
18
16
  export * from './review';
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Utilities for parsing and acting on code review results.
4
+ *
5
+ * This module provides functions for parsing code review results and automatically
6
+ * implementing suggested fixes based on priority levels. It can extract code snippets,
7
+ * identify file locations, and apply changes to the codebase.
8
+ *
9
+ * Key responsibilities:
10
+ * - Parsing review results to extract actionable items
11
+ * - Categorizing fixes by priority (high, medium, low)
12
+ * - Implementing high priority fixes automatically
13
+ * - Prompting for confirmation on medium and low priority fixes
14
+ * - Tracking changes made to files
15
+ * - Providing summary reports of actions taken
16
+ */
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ var desc = Object.getOwnPropertyDescriptor(m, k);
20
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
+ desc = { enumerable: true, get: function() { return m[k]; } };
22
+ }
23
+ Object.defineProperty(o, k2, desc);
24
+ }) : (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ o[k2] = m[k];
27
+ }));
28
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
29
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
30
+ };
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ // Re-export all functionality from the review modules
33
+ __exportStar(require("./review"), exports);
34
+ //# sourceMappingURL=reviewActionHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewActionHandler.js","sourceRoot":"","sources":["../../src/utils/reviewActionHandler.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;AAEH,sDAAsD;AACtD,2CAAyB"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @fileoverview Utilities for parsing structured review output.
3
+ *
4
+ * This module provides functions for parsing and processing structured review output
5
+ * in interactive mode. It handles JSON parsing, validation, and extraction of review
6
+ * information from the AI's response.
7
+ */
8
+ import { type ReviewIssue, type ReviewSchema } from '../types/reviewSchema';
9
+ /**
10
+ * Parse a JSON string into a ReviewSchema object
11
+ * @param jsonString The JSON string to parse
12
+ * @returns The parsed ReviewSchema object or null if parsing fails
13
+ */
14
+ export declare function parseReviewJson(jsonString: string): ReviewSchema | null;
15
+ /**
16
+ * Extract the review content from a string that might contain JSON
17
+ * @param content The content to extract from
18
+ * @returns The extracted review content
19
+ */
20
+ export declare function extractReviewContent(content: string): string;
21
+ /**
22
+ * Format an issue for display in the console
23
+ * @param issue The issue to format
24
+ * @param filePath Path to the file containing the issue
25
+ * @param fileIndex Index of the file
26
+ * @param issueIndex Index of the issue
27
+ * @returns Formatted issue string
28
+ */
29
+ export declare function formatIssueForDisplay(issue: ReviewIssue, filePath: string, fileIndex: number, issueIndex: number): string;
30
+ /**
31
+ * Display a structured review in the console
32
+ * @param parsedReview The parsed review object
33
+ */
34
+ export declare function displayStructuredReview(parsedReview: ReviewSchema): void;
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Utilities for parsing structured review output.
4
+ *
5
+ * This module provides functions for parsing and processing structured review output
6
+ * in interactive mode. It handles JSON parsing, validation, and extraction of review
7
+ * information from the AI's response.
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.parseReviewJson = parseReviewJson;
14
+ exports.extractReviewContent = extractReviewContent;
15
+ exports.formatIssueForDisplay = formatIssueForDisplay;
16
+ exports.displayStructuredReview = displayStructuredReview;
17
+ // import { z } from 'zod'; // Not currently used
18
+ const reviewSchema_1 = require("../types/reviewSchema");
19
+ const logger_1 = __importDefault(require("./logger"));
20
+ /**
21
+ * Parse a JSON string into a ReviewSchema object
22
+ * @param jsonString The JSON string to parse
23
+ * @returns The parsed ReviewSchema object or null if parsing fails
24
+ */
25
+ function parseReviewJson(jsonString) {
26
+ try {
27
+ // Step 1: First attempt to parse as direct JSON if the string is already properly formatted
28
+ // This should be the fast path for models that correctly return structured JSON
29
+ if (jsonString.trim().startsWith('{') && jsonString.trim().endsWith('}')) {
30
+ try {
31
+ // Try to parse directly first - this is the ideal case and should work with the
32
+ // updated model instructions that request structured JSON
33
+ const directJson = JSON.parse(jsonString);
34
+ // Validate using Zod schema
35
+ const directValidation = reviewSchema_1.reviewSchema.safeParse(directJson);
36
+ if (directValidation.success) {
37
+ logger_1.default.debug('Successfully parsed direct JSON response');
38
+ return directValidation.data;
39
+ }
40
+ if (directJson.review) {
41
+ // Basic validation passed
42
+ logger_1.default.debug('Direct JSON has review property but failed schema validation, using fallback');
43
+ return directJson;
44
+ }
45
+ }
46
+ catch (_e) {
47
+ // If direct parsing fails, continue with the extraction approaches
48
+ logger_1.default.debug('Direct parsing failed, attempting extraction patterns');
49
+ }
50
+ }
51
+ // Step 2: If direct parsing fails, try various extraction patterns
52
+ // Try to extract JSON from the response with improved language marker handling
53
+ // Handle various formats:
54
+ // 1. ```json {...}```
55
+ // 2. ```typescript {...}``` or other language markers
56
+ // 3. ```{...}```
57
+ // 4. Plain JSON outside code blocks
58
+ // First try to find code blocks with JSON content
59
+ const jsonBlockMatch = jsonString.match(/```(?:json)?\s*({[\s\S]*?})\s*```/);
60
+ // If no JSON block, look for any code block (could have typescript or other language marker)
61
+ const anyCodeBlockMatch = !jsonBlockMatch
62
+ ? jsonString.match(/```(?:[\w]*)?[\s\n]*({[\s\S]*?})[\s\n]*```/)
63
+ : null;
64
+ // Check for code blocks with language markers that aren't proper JSON
65
+ const languageBlockRegex = /```(typescript|javascript|js|ts|jsx|tsx|java|python|ruby|go|rust|c|cpp|csharp|php)\s*([\s\S]*?)\s*```/;
66
+ const languageBlockMatch = !jsonBlockMatch && !anyCodeBlockMatch ? jsonString.match(languageBlockRegex) : null;
67
+ if (languageBlockMatch) {
68
+ // Don't treat language-specific code blocks as JSON - log a warning
69
+ const language = languageBlockMatch[1];
70
+ logger_1.default.warn(`Found ${language} code block but not valid JSON. Skipping JSON parsing attempt for this block.`);
71
+ // Return early with null to avoid trying to parse code as JSON
72
+ return null;
73
+ }
74
+ // If no code block match at all, try other patterns for JSON outside code blocks
75
+ // First look for review patterns - the most likely structure
76
+ const reviewJsonPattern = /({[\s\S]*?"review"[\s\S]*?})/;
77
+ const reviewJsonMatch = jsonString.match(reviewJsonPattern);
78
+ // Then fall back to any JSON-like patterns
79
+ const anyJsonPattern = /({[\s\S]*?})/;
80
+ const anyJsonMatch = !reviewJsonMatch ? jsonString.match(anyJsonPattern) : null;
81
+ // Determine which match to use
82
+ let jsonContent = jsonString; // default to full string
83
+ if (jsonBlockMatch) {
84
+ logger_1.default.debug('Found JSON code block, extracting content');
85
+ jsonContent = jsonBlockMatch[1];
86
+ }
87
+ else if (anyCodeBlockMatch) {
88
+ logger_1.default.debug('Found code block with JSON-like content, attempting to parse');
89
+ jsonContent = anyCodeBlockMatch[1];
90
+ }
91
+ else if (reviewJsonMatch) {
92
+ logger_1.default.debug('Found review JSON content outside code blocks');
93
+ jsonContent = reviewJsonMatch[1];
94
+ }
95
+ else if (anyJsonMatch) {
96
+ logger_1.default.debug('Found generic JSON-like content');
97
+ jsonContent = anyJsonMatch[1];
98
+ }
99
+ else {
100
+ logger_1.default.debug('No JSON content patterns found, attempting to parse raw content');
101
+ }
102
+ // Clean up the content - remove comments that might be in the JSON
103
+ // Remove both single-line and inline comments
104
+ jsonContent = jsonContent
105
+ .replace(/\/\/.*?(?=\n|$)/g, '') // Remove inline comments (// style)
106
+ .replace(/^\s*\/\/.*$/gm, '') // Remove single-line comments
107
+ .replace(/\/\*[\s\S]*?\*\//g, '') // Remove multi-line comments
108
+ .replace(/,\s*}/g, '}') // Fix trailing commas that might appear after removing comments
109
+ .replace(/,\s*]/g, ']'); // Fix trailing commas in arrays
110
+ // Additional cleanup for specific JSON parsing issues
111
+ jsonContent = jsonContent
112
+ .replace(/([{,])\s*"(\w+)":\s*"([^"]*)",\s*\/\/.*?(?=\n|$)/g, '$1"$2":"$3",') // Clean inline comments after values
113
+ .replace(/([{,])\s*"(\w+)":\s*(\d+),\s*\/\/.*?(?=\n|$)/g, '$1"$2":$3,'); // Clean inline comments after numeric values
114
+ // Parse the JSON
115
+ const parsedJson = JSON.parse(jsonContent);
116
+ // Validate using Zod schema
117
+ const validationResult = reviewSchema_1.reviewSchema.safeParse(parsedJson);
118
+ if (validationResult.success) {
119
+ logger_1.default.debug('Successfully validated review JSON with Zod schema');
120
+ return validationResult.data;
121
+ }
122
+ logger_1.default.warn('Failed to validate review JSON schema:', validationResult.error.errors);
123
+ // Fallback to basic validation if the schema doesn't match exactly
124
+ // This helps with backward compatibility
125
+ if (parsedJson.review) {
126
+ logger_1.default.warn('Using fallback validation for review JSON');
127
+ return parsedJson;
128
+ }
129
+ return null;
130
+ }
131
+ catch (error) {
132
+ logger_1.default.error('Error parsing review JSON:', error);
133
+ return null;
134
+ }
135
+ }
136
+ /**
137
+ * Extract the review content from a string that might contain JSON
138
+ * @param content The content to extract from
139
+ * @returns The extracted review content
140
+ */
141
+ function extractReviewContent(content) {
142
+ // Try to find JSON in the content
143
+ const parsedReview = parseReviewJson(content);
144
+ if (parsedReview) {
145
+ // If we successfully parsed the JSON, return it formatted
146
+ return JSON.stringify(parsedReview, null, 2);
147
+ }
148
+ // Otherwise, return the original content
149
+ return content;
150
+ }
151
+ /**
152
+ * Format an issue for display in the console
153
+ * @param issue The issue to format
154
+ * @param filePath Path to the file containing the issue
155
+ * @param fileIndex Index of the file
156
+ * @param issueIndex Index of the issue
157
+ * @returns Formatted issue string
158
+ */
159
+ function formatIssueForDisplay(issue, filePath, fileIndex, issueIndex) {
160
+ const priorityColors = {
161
+ [reviewSchema_1.IssuePriority.HIGH]: '\x1b[31m', // Red
162
+ [reviewSchema_1.IssuePriority.MEDIUM]: '\x1b[33m', // Yellow
163
+ [reviewSchema_1.IssuePriority.LOW]: '\x1b[32m', // Green
164
+ };
165
+ const priorityColor = priorityColors[issue.priority] || '\x1b[37m'; // Default to white
166
+ const reset = '\x1b[0m';
167
+ const bold = '\x1b[1m';
168
+ let output = `\n${bold}Issue ${fileIndex + 1}.${issueIndex + 1}: ${priorityColor}[${issue.priority}]${reset}${bold} ${issue.id}${reset}\n`;
169
+ output += `${bold}Description:${reset} ${issue.description}\n`;
170
+ output += `${bold}File:${reset} ${filePath}\n`;
171
+ output += `${bold}Location:${reset} Lines ${issue.location.startLine}-${issue.location.endLine}\n\n`;
172
+ output += `${bold}Current Code:${reset}\n`;
173
+ output += '```\n';
174
+ output += issue.currentCode;
175
+ output += '\n```\n\n';
176
+ output += `${bold}Suggested Code:${reset}\n`;
177
+ output += '```\n';
178
+ output += issue.suggestedCode;
179
+ output += '\n```\n\n';
180
+ if (issue.explanation) {
181
+ output += `${bold}Explanation:${reset}\n`;
182
+ output += issue.explanation;
183
+ output += '\n\n';
184
+ }
185
+ return output;
186
+ }
187
+ /**
188
+ * Display a structured review in the console
189
+ * @param parsedReview The parsed review object
190
+ */
191
+ function displayStructuredReview(parsedReview) {
192
+ const { review } = parsedReview;
193
+ logger_1.default.info('\n=== Structured Code Review Results ===\n');
194
+ // Display files one by one
195
+ review.files.forEach((file, fileIndex) => {
196
+ logger_1.default.info(`\n${'-'.repeat(80)}`);
197
+ logger_1.default.info(`File ${fileIndex + 1}: ${file.filePath}`);
198
+ logger_1.default.info(`${'-'.repeat(80)}`);
199
+ if (file.issues.length === 0) {
200
+ logger_1.default.info('No issues found in this file.');
201
+ return;
202
+ }
203
+ // Display issues for this file
204
+ file.issues.forEach((issue, issueIndex) => {
205
+ const formattedIssue = formatIssueForDisplay(issue, file.filePath, fileIndex, issueIndex);
206
+ logger_1.default.info(formattedIssue);
207
+ });
208
+ });
209
+ // Display summary
210
+ logger_1.default.info(`\n${'-'.repeat(80)}`);
211
+ logger_1.default.info('Summary:');
212
+ logger_1.default.info(`${'-'.repeat(80)}`);
213
+ logger_1.default.info(`High Priority Issues: ${review.summary.highPriorityIssues}`);
214
+ logger_1.default.info(`Medium Priority Issues: ${review.summary.mediumPriorityIssues}`);
215
+ logger_1.default.info(`Low Priority Issues: ${review.summary.lowPriorityIssues}`);
216
+ logger_1.default.info(`Total Issues: ${review.summary.totalIssues}`);
217
+ }
218
+ //# sourceMappingURL=reviewParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewParser.js","sourceRoot":"","sources":["../../src/utils/reviewParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
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
+ * Sanitizes HTML content to prevent Cross-Site Scripting (XSS) attacks.
12
+ *
13
+ * This function uses DOMPurify to clean HTML content by:
14
+ * 1. Allowing only safe HTML tags (h1-h6, p, lists, tables, etc.)
15
+ * 2. Allowing only safe attributes (href, class, id, etc.)
16
+ * 3. Explicitly forbidding dangerous tags (script, iframe, svg, etc.)
17
+ * 4. Explicitly forbidding dangerous attributes (onerror, onclick, etc.)
18
+ *
19
+ * If sanitization fails for any reason, it returns an empty string for safety.
20
+ *
21
+ * @param {string} content - The HTML content to sanitize
22
+ * @returns {string} Sanitized HTML with potentially dangerous content removed
23
+ *
24
+ * @example
25
+ * const unsafeHtml = '<div>Safe content</div><script>alert("XSS")</script>';
26
+ * const safeHtml = sanitizeHtml(unsafeHtml);
27
+ * // Returns: "<div>Safe content</div>"
28
+ *
29
+ * @throws Catches internally and returns empty string if DOMPurify fails
30
+ */
31
+ export declare function sanitizeHtml(content: string): string;
32
+ /**
33
+ * Sanitize Markdown content
34
+ * @param content Markdown content to sanitize
35
+ * @returns Sanitized Markdown content
36
+ */
37
+ export declare function sanitizeMarkdown(content: string): string;
38
+ /**
39
+ * Sanitize JSON content
40
+ * @param content JSON content to sanitize
41
+ * @returns Sanitized JSON content
42
+ */
43
+ export declare function sanitizeJson(content: string): string;
44
+ /**
45
+ * Sanitizes content based on its type to prevent security vulnerabilities.
46
+ *
47
+ * This function acts as a dispatcher that routes the content to the appropriate
48
+ * specialized sanitization function based on the content type. It supports
49
+ * HTML, Markdown, JSON, and plain text formats, each with type-specific
50
+ * sanitization rules.
51
+ *
52
+ * @param {string} content - The content to sanitize
53
+ * @param {('html'|'markdown'|'json'|'text')} [contentType='text'] - The type of content
54
+ * @returns {string} Sanitized content safe for rendering or storage
55
+ *
56
+ * @example
57
+ * // Sanitize HTML content
58
+ * const safeHtml = sanitizeContent('<script>alert("XSS")</script><p>Hello</p>', 'html');
59
+ * // Returns: "<p>Hello</p>"
60
+ *
61
+ * @example
62
+ * // Sanitize Markdown content
63
+ * const safeMarkdown = sanitizeContent('# Title\n<script>alert("XSS")</script>', 'markdown');
64
+ * // Returns: "# Title\n"
65
+ *
66
+ * @example
67
+ * // Sanitize JSON content
68
+ * const safeJson = sanitizeContent('{"key": "value"}', 'json');
69
+ * // Returns: '{"key":"value"}'
70
+ */
71
+ export declare function sanitizeContent(content: string, contentType?: 'html' | 'markdown' | 'json' | 'text'): string;
72
+ /**
73
+ * Sanitize a filename to ensure it's safe for use in file systems
74
+ *
75
+ * This function removes or replaces characters that are not safe for use in filenames
76
+ * across different operating systems. It handles null/undefined inputs and preserves
77
+ * spaces and non-ASCII characters that are generally safe for modern file systems.
78
+ *
79
+ * @param filename The filename to sanitize
80
+ * @returns A sanitized filename safe for use in file systems
81
+ */
82
+ export declare function sanitizeFilename(filename: string | null | undefined): string;
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Content sanitization utilities for preventing XSS attacks.
4
+ *
5
+ * This module provides sanitization functions to clean user-generated or AI-generated
6
+ * content before rendering or storing it. It uses DOMPurify to remove potentially
7
+ * malicious HTML, JavaScript, and other harmful content while preserving legitimate
8
+ * formatting elements. It also includes utilities for sanitizing filenames to ensure
9
+ * they are safe for use in file systems.
10
+ */
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.sanitizeHtml = sanitizeHtml;
16
+ exports.sanitizeMarkdown = sanitizeMarkdown;
17
+ exports.sanitizeJson = sanitizeJson;
18
+ exports.sanitizeContent = sanitizeContent;
19
+ exports.sanitizeFilename = sanitizeFilename;
20
+ const dompurify_1 = __importDefault(require("dompurify"));
21
+ const jsdom_1 = require("jsdom");
22
+ const logger_1 = __importDefault(require("./logger"));
23
+ // Create a DOM window for DOMPurify
24
+ const { window } = new jsdom_1.JSDOM('');
25
+ // Cast window for DOMPurify compatibility
26
+ const DOMPurify = (0, dompurify_1.default)(window);
27
+ /**
28
+ * Sanitizes HTML content to prevent Cross-Site Scripting (XSS) attacks.
29
+ *
30
+ * This function uses DOMPurify to clean HTML content by:
31
+ * 1. Allowing only safe HTML tags (h1-h6, p, lists, tables, etc.)
32
+ * 2. Allowing only safe attributes (href, class, id, etc.)
33
+ * 3. Explicitly forbidding dangerous tags (script, iframe, svg, etc.)
34
+ * 4. Explicitly forbidding dangerous attributes (onerror, onclick, etc.)
35
+ *
36
+ * If sanitization fails for any reason, it returns an empty string for safety.
37
+ *
38
+ * @param {string} content - The HTML content to sanitize
39
+ * @returns {string} Sanitized HTML with potentially dangerous content removed
40
+ *
41
+ * @example
42
+ * const unsafeHtml = '<div>Safe content</div><script>alert("XSS")</script>';
43
+ * const safeHtml = sanitizeHtml(unsafeHtml);
44
+ * // Returns: "<div>Safe content</div>"
45
+ *
46
+ * @throws Catches internally and returns empty string if DOMPurify fails
47
+ */
48
+ function sanitizeHtml(content) {
49
+ try {
50
+ // Configure DOMPurify to allow certain tags and attributes
51
+ const sanitized = DOMPurify.sanitize(content, {
52
+ ALLOWED_TAGS: [
53
+ 'h1',
54
+ 'h2',
55
+ 'h3',
56
+ 'h4',
57
+ 'h5',
58
+ 'h6',
59
+ 'p',
60
+ 'br',
61
+ 'hr',
62
+ 'ul',
63
+ 'ol',
64
+ 'li',
65
+ 'b',
66
+ 'i',
67
+ 'strong',
68
+ 'em',
69
+ 'code',
70
+ 'pre',
71
+ 'a',
72
+ 'span',
73
+ 'div',
74
+ 'table',
75
+ 'thead',
76
+ 'tbody',
77
+ 'tr',
78
+ 'th',
79
+ 'td',
80
+ ],
81
+ ALLOWED_ATTR: ['href', 'target', 'rel', 'class', 'id', 'style'],
82
+ FORBID_TAGS: [
83
+ 'script',
84
+ 'iframe',
85
+ 'object',
86
+ 'embed',
87
+ 'form',
88
+ 'input',
89
+ 'button',
90
+ 'style',
91
+ 'link',
92
+ 'meta',
93
+ 'base',
94
+ 'applet',
95
+ 'math',
96
+ 'svg',
97
+ ],
98
+ FORBID_ATTR: [
99
+ 'onerror',
100
+ 'onload',
101
+ 'onclick',
102
+ 'onmouseover',
103
+ 'onmouseout',
104
+ 'onmousedown',
105
+ 'onmouseup',
106
+ 'onkeydown',
107
+ 'onkeyup',
108
+ 'onkeypress',
109
+ 'onfocus',
110
+ 'onblur',
111
+ 'onchange',
112
+ 'onsubmit',
113
+ 'onreset',
114
+ 'javascript:',
115
+ 'data:',
116
+ 'vbscript:',
117
+ ],
118
+ });
119
+ return sanitized;
120
+ }
121
+ catch (error) {
122
+ logger_1.default.error('Error sanitizing HTML content:', error);
123
+ // Return a safe fallback if sanitization fails
124
+ return '';
125
+ }
126
+ }
127
+ /**
128
+ * Sanitize Markdown content
129
+ * @param content Markdown content to sanitize
130
+ * @returns Sanitized Markdown content
131
+ */
132
+ function sanitizeMarkdown(content) {
133
+ try {
134
+ // Remove potentially harmful content
135
+ const sanitized = content
136
+ // Remove HTML comments
137
+ .replace(/<!--[\s\S]*?-->/g, '')
138
+ // Remove script tags and their content
139
+ .replace(/<script[\s\S]*?<\/script>/gi, '')
140
+ // Remove iframe tags and their content
141
+ .replace(/<iframe[\s\S]*?<\/iframe>/gi, '')
142
+ // Remove style tags and their content
143
+ .replace(/<style[\s\S]*?<\/style>/gi, '')
144
+ // Remove event handlers
145
+ .replace(/\son\w+\s*=\s*["']?[^"']*["']?/gi, '')
146
+ // Remove javascript: URLs
147
+ .replace(/javascript\s*:/gi, 'removed:')
148
+ // Remove data: URLs
149
+ .replace(/data\s*:/gi, 'removed:')
150
+ // Remove vbscript: URLs
151
+ .replace(/vbscript\s*:/gi, 'removed:');
152
+ return sanitized;
153
+ }
154
+ catch (error) {
155
+ logger_1.default.error('Error sanitizing Markdown content:', error);
156
+ // Return a safe fallback if sanitization fails
157
+ return '';
158
+ }
159
+ }
160
+ /**
161
+ * Sanitize JSON content
162
+ * @param content JSON content to sanitize
163
+ * @returns Sanitized JSON content
164
+ */
165
+ function sanitizeJson(content) {
166
+ try {
167
+ // Parse and stringify to ensure valid JSON
168
+ const parsed = JSON.parse(content);
169
+ return JSON.stringify(parsed);
170
+ }
171
+ catch (error) {
172
+ logger_1.default.error('Error sanitizing JSON content:', error);
173
+ // Return a safe fallback if sanitization fails
174
+ return '{}';
175
+ }
176
+ }
177
+ /**
178
+ * Sanitizes content based on its type to prevent security vulnerabilities.
179
+ *
180
+ * This function acts as a dispatcher that routes the content to the appropriate
181
+ * specialized sanitization function based on the content type. It supports
182
+ * HTML, Markdown, JSON, and plain text formats, each with type-specific
183
+ * sanitization rules.
184
+ *
185
+ * @param {string} content - The content to sanitize
186
+ * @param {('html'|'markdown'|'json'|'text')} [contentType='text'] - The type of content
187
+ * @returns {string} Sanitized content safe for rendering or storage
188
+ *
189
+ * @example
190
+ * // Sanitize HTML content
191
+ * const safeHtml = sanitizeContent('<script>alert("XSS")</script><p>Hello</p>', 'html');
192
+ * // Returns: "<p>Hello</p>"
193
+ *
194
+ * @example
195
+ * // Sanitize Markdown content
196
+ * const safeMarkdown = sanitizeContent('# Title\n<script>alert("XSS")</script>', 'markdown');
197
+ * // Returns: "# Title\n"
198
+ *
199
+ * @example
200
+ * // Sanitize JSON content
201
+ * const safeJson = sanitizeContent('{"key": "value"}', 'json');
202
+ * // Returns: '{"key":"value"}'
203
+ */
204
+ function sanitizeContent(content, contentType = 'text') {
205
+ switch (contentType) {
206
+ case 'html':
207
+ return sanitizeHtml(content);
208
+ case 'markdown':
209
+ return sanitizeMarkdown(content);
210
+ case 'json':
211
+ return sanitizeJson(content);
212
+ default:
213
+ // For plain text, just remove control characters except for newlines and tabs
214
+ // eslint-disable-next-line no-control-regex
215
+ return content.replace(/[\x00-\x09\x0B-\x1F\x7F]/g, '');
216
+ }
217
+ }
218
+ /**
219
+ * Sanitize a filename to ensure it's safe for use in file systems
220
+ *
221
+ * This function removes or replaces characters that are not safe for use in filenames
222
+ * across different operating systems. It handles null/undefined inputs and preserves
223
+ * spaces and non-ASCII characters that are generally safe for modern file systems.
224
+ *
225
+ * @param filename The filename to sanitize
226
+ * @returns A sanitized filename safe for use in file systems
227
+ */
228
+ function sanitizeFilename(filename) {
229
+ // Handle null or undefined
230
+ if (filename === null || filename === undefined) {
231
+ return '';
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
+ }
239
+ //# sourceMappingURL=sanitizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitizer.js","sourceRoot":"","sources":["../../src/utils/sanitizer.ts"],"names":[],"mappings":"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"}