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,217 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Output manager module.
4
+ *
5
+ * This module is responsible for formatting and saving review outputs to files.
6
+ * It centralizes the logic for generating output paths and writing review results.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.addFileTreeToReview = addFileTreeToReview;
13
+ exports.saveReviewOutput = saveReviewOutput;
14
+ const promises_1 = __importDefault(require("node:fs/promises"));
15
+ const node_path_1 = __importDefault(require("node:path"));
16
+ const outputFormatter_1 = require("../formatters/outputFormatter");
17
+ const aiDependencyAnalyzer_1 = require("../utils/dependencies/aiDependencyAnalyzer");
18
+ const diagramGenerator_1 = require("../utils/diagramGenerator");
19
+ const errorLogger_1 = require("../utils/errorLogger");
20
+ const fileSystem_1 = require("../utils/fileSystem");
21
+ const logger_1 = __importDefault(require("../utils/logger"));
22
+ const treeGenerator_1 = require("../utils/treeGenerator");
23
+ /**
24
+ * Add file tree visualization to a review
25
+ * @param formattedOutput Formatted review output (markdown or JSON)
26
+ * @param files Files included in the review
27
+ * @param outputFormat Output format (markdown or json)
28
+ * @returns Enhanced output with file tree
29
+ */
30
+ function addFileTreeToReview(formattedOutput, files, outputFormat) {
31
+ if (!files || files.length === 0) {
32
+ logger_1.default.debug('No files provided for tree generation');
33
+ return formattedOutput;
34
+ }
35
+ logger_1.default.debug(`Adding file tree for ${files.length} files in ${outputFormat} format`);
36
+ // Extract relative paths from files
37
+ const relativePaths = files.map((file) => file.relativePath || file.path);
38
+ // Generate tree visualization
39
+ const fileTree = (0, treeGenerator_1.generateFileTree)(relativePaths);
40
+ if (outputFormat === 'json') {
41
+ // For JSON, parse and add tree visualization as property
42
+ try {
43
+ const reviewObj = JSON.parse(formattedOutput);
44
+ // Add both a flat list and a tree structure
45
+ reviewObj.analyzedFiles = relativePaths;
46
+ reviewObj.fileTree = fileTree.replace(/```/g, '').trim();
47
+ return JSON.stringify(reviewObj, null, 2);
48
+ }
49
+ catch (error) {
50
+ logger_1.default.warn(`Error enhancing JSON review with file tree: ${error}`);
51
+ return formattedOutput;
52
+ }
53
+ }
54
+ else {
55
+ // For markdown, find appropriate position to insert file tree section
56
+ const fileListSection = `\n## Files Analyzed\n\nThe following ${files.length} files were included in this review:\n\n${fileTree}\n\n`;
57
+ // Find the position to insert (before cost information section if it exists)
58
+ const costSectionMatch = formattedOutput.match(/^## Cost Information/m);
59
+ if (costSectionMatch?.index) {
60
+ // Insert before cost information
61
+ const position = costSectionMatch.index;
62
+ logger_1.default.debug('Inserting file list before Cost Information section');
63
+ return (formattedOutput.substring(0, position) +
64
+ fileListSection +
65
+ formattedOutput.substring(position));
66
+ }
67
+ // Find the position to insert before the closing markdown
68
+ const closingMatch = formattedOutput.match(/---\n\*Generated by Code Review Tool/);
69
+ if (closingMatch?.index) {
70
+ // Insert before the closing section
71
+ const position = closingMatch.index;
72
+ logger_1.default.debug('Inserting file list before closing section');
73
+ return (formattedOutput.substring(0, position) +
74
+ fileListSection +
75
+ formattedOutput.substring(position));
76
+ }
77
+ // If no suitable position found, append at the end
78
+ logger_1.default.debug('No insertion point found, appending file list to end');
79
+ return formattedOutput + fileListSection;
80
+ }
81
+ }
82
+ /**
83
+ * Format and save a review result to a file
84
+ * @param review Review result to save
85
+ * @param options Review options
86
+ * @param outputBaseDir Base directory for output
87
+ * @param modelName Name of the model used for the review
88
+ * @param targetName Name of the target file or directory
89
+ * @param files Optional array of file information to include in the review
90
+ * @returns Promise resolving to the path of the saved file
91
+ */
92
+ async function saveReviewOutput(review, options, outputBaseDir, modelName, targetName, files) {
93
+ try {
94
+ // Generate a versioned output path
95
+ const extension = options.output === 'json' ? '.json' : '.md';
96
+ // Create unique filenames for different types of output
97
+ // For formatted review output
98
+ let outputPath = await (0, fileSystem_1.generateVersionedOutputPath)(outputBaseDir, `${options.type}-review`, extension, modelName, targetName);
99
+ // For raw review data (if needed for debugging)
100
+ const rawDataPath = await (0, fileSystem_1.generateUniqueOutputPath)(outputBaseDir, `${options.type}-review-raw-data-${node_path_1.default.basename(outputPath, extension)}.json`);
101
+ // Ensure costInfo is set if only cost is available
102
+ if (review.cost && !review.costInfo) {
103
+ review.costInfo = review.cost;
104
+ }
105
+ // Format the review output
106
+ logger_1.default.debug(`Formatting review output as ${options.output}`);
107
+ let formattedOutput = (0, outputFormatter_1.formatReviewOutput)(review, options.output || 'markdown');
108
+ // Add file tree to all review types if files are provided
109
+ if (files && files.length > 0) {
110
+ logger_1.default.info(`Adding file tree visualization for ${files.length} files`);
111
+ formattedOutput = addFileTreeToReview(formattedOutput, files, options.output || 'markdown');
112
+ }
113
+ // For architectural and security reviews, dependency analysis is ON by default unless explicitly disabled
114
+ const reviewTypeNeedsDependencyAnalysis = ['architectural', 'security'].includes(options.type);
115
+ if (reviewTypeNeedsDependencyAnalysis && options.includeDependencyAnalysis !== false) {
116
+ console.log(`=========== DEPENDENCY ANALYSIS FOR ${options.type.toUpperCase()} REVIEW ===========`);
117
+ logger_1.default.info(`=========== DEPENDENCY ANALYSIS FOR ${options.type.toUpperCase()} REVIEW ===========`);
118
+ try {
119
+ // Use the AI-powered dependency analyzer (no external dependencies required)
120
+ logger_1.default.info(`Performing AI-powered dependency analysis for ${options.type} review...`);
121
+ // Use project directory path instead of current working directory to ensure correct analysis
122
+ const projectPath = files && files.length > 0 ? node_path_1.default.dirname(files[0].path) : node_path_1.default.resolve(process.cwd());
123
+ console.log(`Project path for dependency analysis: ${projectPath}`);
124
+ logger_1.default.info(`Project path for dependency analysis: ${projectPath}`);
125
+ // Run the AI-powered dependency analysis
126
+ const dependencySection = await (0, aiDependencyAnalyzer_1.createAIDependencyAnalysis)(projectPath);
127
+ // Append dependency analysis section to the review
128
+ if (options.output === 'json') {
129
+ try {
130
+ // Parse JSON, add dependency analysis section, and stringify again
131
+ const reviewObj = JSON.parse(formattedOutput);
132
+ reviewObj.dependencyAnalysis = dependencySection;
133
+ formattedOutput = JSON.stringify(reviewObj, null, 2);
134
+ logger_1.default.info('AI-powered dependency analysis added to JSON review output');
135
+ }
136
+ catch (error) {
137
+ logger_1.default.warn(`Error adding dependency analysis section to JSON review: ${error}`);
138
+ // If JSON parsing fails, append as text
139
+ formattedOutput += `\n\n${dependencySection}`;
140
+ logger_1.default.info('AI-powered dependency analysis appended as text to JSON review (JSON parsing failed)');
141
+ }
142
+ }
143
+ else {
144
+ // For markdown, append at the end
145
+ formattedOutput += `\n\n${dependencySection}`;
146
+ logger_1.default.info('AI-powered dependency analysis added to markdown review output');
147
+ }
148
+ }
149
+ catch (error) {
150
+ logger_1.default.error(`Error performing AI-powered dependency analysis for ${options.type} review: ${error instanceof Error ? error.message : String(error)}`);
151
+ logger_1.default.error(error instanceof Error && error.stack ? error.stack : 'No stack trace available');
152
+ }
153
+ }
154
+ // Check if the output file already exists (to avoid overwriting)
155
+ try {
156
+ await promises_1.default.access(outputPath);
157
+ logger_1.default.warn(`Output file already exists: ${outputPath}`);
158
+ // Generate a new unique path to avoid overwriting
159
+ const uniqueOutputPath = await (0, fileSystem_1.generateUniqueOutputPath)(outputBaseDir, `${options.type}-review-${Date.now()}${extension}`);
160
+ logger_1.default.info(`Using alternative output path to avoid overwriting: ${uniqueOutputPath}`);
161
+ // Update the output path
162
+ const originalPath = outputPath;
163
+ outputPath = uniqueOutputPath;
164
+ // Log this change for debugging
165
+ logger_1.default.debug(`Changed output path from ${originalPath} to ${outputPath} to avoid collision`);
166
+ }
167
+ catch (_error) {
168
+ // File doesn't exist, which is good
169
+ logger_1.default.debug(`Output file doesn't exist yet, proceeding with: ${outputPath}`);
170
+ }
171
+ // Write the formatted output to the file
172
+ logger_1.default.debug(`Writing formatted review output to: ${outputPath}`);
173
+ await promises_1.default.writeFile(outputPath, formattedOutput);
174
+ logger_1.default.info(`Review output saved to: ${outputPath}`);
175
+ // Process and save any Mermaid diagrams if requested
176
+ if (options.diagram && options.type === 'architectural') {
177
+ const diagramPaths = await (0, diagramGenerator_1.processDiagrams)(formattedOutput, outputPath, options);
178
+ if (diagramPaths.length > 0) {
179
+ logger_1.default.info(`Generated ${diagramPaths.length} architecture diagram file(s)`);
180
+ }
181
+ }
182
+ // Optionally save raw review data for debugging (only if debug mode is enabled)
183
+ if (options.debug) {
184
+ logger_1.default.debug(`Saving raw review data for debugging to: ${rawDataPath}`);
185
+ await promises_1.default.writeFile(rawDataPath, JSON.stringify(review, null, 2));
186
+ logger_1.default.debug(`Raw review data saved to: ${rawDataPath}`);
187
+ }
188
+ return outputPath;
189
+ }
190
+ catch (error) {
191
+ if (error instanceof Error) {
192
+ const errorLogPath = await (0, errorLogger_1.logError)(error, {
193
+ operation: 'writeFile',
194
+ outputPath: 'unknown',
195
+ reviewType: options.type,
196
+ });
197
+ logger_1.default.error(`Error saving review output:`);
198
+ logger_1.default.error(` Message: ${error.message}`);
199
+ logger_1.default.error(` Error details logged to: ${errorLogPath}`);
200
+ // Add more detailed error information
201
+ if (error.stack) {
202
+ logger_1.default.debug(`Error stack trace: ${error.stack}`);
203
+ }
204
+ if (error.name === 'EACCES') {
205
+ logger_1.default.error(` This appears to be a permission error. Please check that you have write access to the output directory.`);
206
+ }
207
+ else if (error.name === 'ENOSPC') {
208
+ logger_1.default.error(` This appears to be a disk space error. Please free up some disk space and try again.`);
209
+ }
210
+ }
211
+ else {
212
+ logger_1.default.error(`Unknown error saving review output: ${String(error)}`);
213
+ }
214
+ throw error;
215
+ }
216
+ }
217
+ //# sourceMappingURL=OutputManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutputManager.js","sourceRoot":"","sources":["../../src/core/OutputManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @fileoverview Review generator module.
3
+ *
4
+ * This module coordinates OpenRouter reviews. All other provider implementations
5
+ * have been removed so we can focus on the only runtime dependency we actually use.
6
+ */
7
+ import type { FileInfo, ReviewOptions, ReviewResult, ReviewType } from '../types/review';
8
+ import type { ProjectDocs } from '../utils/projectDocs';
9
+ import type { ApiClientConfig } from './ApiClientSelector';
10
+ /**
11
+ * Generate an OpenRouter review.
12
+ */
13
+ export declare function generateReview(fileInfos: FileInfo[], project: string, reviewType: ReviewType, projectDocs: ProjectDocs | null, options: ReviewOptions, apiClientConfig: ApiClientConfig): Promise<ReviewResult>;
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Review generator module.
4
+ *
5
+ * This module coordinates OpenRouter reviews. All other provider implementations
6
+ * have been removed so we can focus on the only runtime dependency we actually use.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.generateReview = generateReview;
13
+ const openRouterClientWrapper_1 = require("../clients/openRouterClientWrapper");
14
+ const logger_1 = __importDefault(require("../utils/logger"));
15
+ /**
16
+ * Generate an OpenRouter review.
17
+ */
18
+ async function generateReview(fileInfos, project, reviewType, projectDocs, options, apiClientConfig) {
19
+ logger_1.default.debug('generateReview called');
20
+ logger_1.default.debug(`generateReview: apiClientConfig=${JSON.stringify(apiClientConfig)}`);
21
+ if (apiClientConfig.clientType !== 'OpenRouter') {
22
+ throw new Error(`Unsupported client type: ${apiClientConfig.clientType ?? 'unknown'}`);
23
+ }
24
+ let result;
25
+ try {
26
+ await (0, openRouterClientWrapper_1.initializeAnyOpenRouterModel)();
27
+ result = await (0, openRouterClientWrapper_1.generateOpenRouterConsolidatedReview)(fileInfos, project, reviewType, projectDocs, options);
28
+ }
29
+ catch (error) {
30
+ logger_1.default.error(`Error initializing or calling OpenRouter client: ${error instanceof Error ? error.message : String(error)}`);
31
+ throw error;
32
+ }
33
+ const reviewResult = result;
34
+ // Enhanced logging for debugging empty content issues
35
+ logger_1.default.debug(`generateReview completed:`);
36
+ logger_1.default.debug(` Client type: ${apiClientConfig.clientType}`);
37
+ logger_1.default.debug(` Model: ${apiClientConfig.modelName}`);
38
+ logger_1.default.debug(` Result exists: ${!!reviewResult}`);
39
+ logger_1.default.debug(` Content exists: ${!!(reviewResult && reviewResult.content)}`);
40
+ logger_1.default.debug(` Content length: ${reviewResult && reviewResult.content ? reviewResult.content.length : 'N/A'}`);
41
+ logger_1.default.debug(` Content preview: ${reviewResult && reviewResult.content ? reviewResult.content.substring(0, 100).replace(/\n/g, ' ') + '...' : 'N/A'}`);
42
+ // Get package version from process.env or hardcoded value
43
+ const packageVersion = process.env.npm_package_version || '2.1.1';
44
+ // Create a string representation of the command-line options
45
+ const commandOptions = Object.entries(options)
46
+ .filter(([key, value]) => {
47
+ // Filter out internal options and undefined values
48
+ if (key.startsWith('_') || value === undefined)
49
+ return false;
50
+ // Filter out ciData which can be very large
51
+ if (key === 'ciData')
52
+ return false;
53
+ // Filter out empty arrays and objects
54
+ if (Array.isArray(value) && value.length === 0)
55
+ return false;
56
+ if (typeof value === 'object' && value !== null && Object.keys(value).length === 0)
57
+ return false;
58
+ return true;
59
+ })
60
+ .map(([key, value]) => {
61
+ // Format boolean options as flags without values
62
+ if (typeof value === 'boolean') {
63
+ return value ? `--${key}` : '';
64
+ }
65
+ // Format arrays and objects as JSON strings
66
+ if (typeof value === 'object' && value !== null) {
67
+ return `--${key}='${JSON.stringify(value)}'`;
68
+ }
69
+ // Format other values normally
70
+ return `--${key}=${value}`;
71
+ })
72
+ .filter(Boolean) // Remove empty strings
73
+ .join(' ');
74
+ // Add metadata to the review result
75
+ reviewResult.toolVersion = packageVersion;
76
+ reviewResult.commandOptions = commandOptions;
77
+ // Ensure costInfo is set if only cost is available
78
+ if (reviewResult.cost && !reviewResult.costInfo) {
79
+ reviewResult.costInfo = reviewResult.cost;
80
+ }
81
+ // Ensure required fields are set to avoid undefined values in output
82
+ if (!reviewResult.filePath) {
83
+ logger_1.default.warn('Review result has no filePath. Setting to default value.');
84
+ reviewResult.filePath = reviewType;
85
+ }
86
+ if (!reviewResult.modelUsed) {
87
+ logger_1.default.warn('Review result has no modelUsed. Setting to default value.');
88
+ reviewResult.modelUsed = `${apiClientConfig.clientType}:${apiClientConfig.modelName}`;
89
+ }
90
+ // Final validation before returning
91
+ if (!reviewResult.content || reviewResult.content.trim() === '') {
92
+ logger_1.default.error('CRITICAL: generateReview is about to return a result with empty content!');
93
+ logger_1.default.error(` Client: ${apiClientConfig.clientType}:${apiClientConfig.modelName}`);
94
+ logger_1.default.error(` Files: ${fileInfos.length} files`);
95
+ logger_1.default.error(` Review type: ${reviewType}`);
96
+ logger_1.default.error(` Project: ${project}`);
97
+ // This is a critical error that should be investigated
98
+ throw new Error(`generateReview produced empty content for ${apiClientConfig.clientType}:${apiClientConfig.modelName}`);
99
+ }
100
+ return reviewResult;
101
+ }
102
+ //# sourceMappingURL=ReviewGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReviewGenerator.js","sourceRoot":"","sources":["../../src/core/ReviewGenerator.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAcH,wCAwHC;AApID,gFAG4C;AAE5C,6DAAqC;AAIrC;;GAEG;AACI,KAAK,UAAU,cAAc,CAClC,SAAqB,EACrB,OAAe,EACf,UAAsB,EACtB,WAA+B,EAC/B,OAAsB,EACtB,eAAgC;IAEhC,gBAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACtC,gBAAM,CAAC,KAAK,CAAC,mCAAmC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAEnF,IAAI,eAAe,CAAC,UAAU,KAAK,YAAY,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,4BAA4B,eAAe,CAAC,UAAU,IAAI,SAAS,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,MAAoB,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,IAAA,sDAA4B,GAAE,CAAC;QACrC,MAAM,GAAG,MAAM,IAAA,8DAAoC,EACjD,SAAS,EACT,OAAO,EACP,UAAU,EACV,WAAW,EACX,OAAO,CACR,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gBAAM,CAAC,KAAK,CACV,oDACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,CACH,CAAC;QACF,MAAM,KAAK,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC;IAE5B,sDAAsD;IACtD,gBAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC1C,gBAAM,CAAC,KAAK,CAAC,kBAAkB,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7D,gBAAM,CAAC,KAAK,CAAC,YAAY,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;IACtD,gBAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;IACnD,gBAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,YAAY,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9E,gBAAM,CAAC,KAAK,CACV,qBAAqB,YAAY,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAClG,CAAC;IACF,gBAAM,CAAC,KAAK,CACV,sBAAsB,YAAY,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAC1I,CAAC;IAEF,0DAA0D;IAC1D,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC;IAElE,6DAA6D;IAC7D,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;SAC3C,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACvB,mDAAmD;QACnD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAE7D,4CAA4C;QAC5C,IAAI,GAAG,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAEnC,sCAAsC;QACtC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;YAChF,OAAO,KAAK,CAAC;QAEf,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACpB,iDAAiD;QACjD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,CAAC;QAED,4CAA4C;QAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO,KAAK,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/C,CAAC;QAED,+BAA+B;QAC/B,OAAO,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;IAC7B,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC,CAAC,uBAAuB;SACvC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,oCAAoC;IACpC,YAAY,CAAC,WAAW,GAAG,cAAc,CAAC;IAC1C,YAAY,CAAC,cAAc,GAAG,cAAc,CAAC;IAE7C,mDAAmD;IACnD,IAAI,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAChD,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC;IAC5C,CAAC;IAED,qEAAqE;IACrE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC3B,gBAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QACxE,YAAY,CAAC,QAAQ,GAAG,UAAU,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;QAC5B,gBAAM,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;QACzE,YAAY,CAAC,SAAS,GAAG,GAAG,eAAe,CAAC,UAAU,IAAI,eAAe,CAAC,SAAS,EAAE,CAAC;IACxF,CAAC;IAED,oCAAoC;IACpC,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAChE,gBAAM,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;QACzF,gBAAM,CAAC,KAAK,CAAC,aAAa,eAAe,CAAC,UAAU,IAAI,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;QACrF,gBAAM,CAAC,KAAK,CAAC,YAAY,SAAS,CAAC,MAAM,QAAQ,CAAC,CAAC;QACnD,gBAAM,CAAC,KAAK,CAAC,kBAAkB,UAAU,EAAE,CAAC,CAAC;QAC7C,gBAAM,CAAC,KAAK,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;QAEtC,uDAAuD;QACvD,MAAM,IAAI,KAAK,CACb,6CAA6C,eAAe,CAAC,UAAU,IAAI,eAAe,CAAC,SAAS,EAAE,CACvG,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @fileoverview File discovery and filtering module.
3
+ *
4
+ * This module is responsible for finding, filtering, and reading files for review.
5
+ * It handles gitignore patterns, test exclusions, and file system operations.
6
+ */
7
+ /**
8
+ * File information structure
9
+ */
10
+ export interface FileInfo {
11
+ path: string;
12
+ relativePath: string;
13
+ content: string;
14
+ }
15
+ /**
16
+ * Discover files for review based on the target path and options
17
+ * @param target The target file or directory path
18
+ * @param projectPath The project root path
19
+ * @param includeTests Whether to include test files
20
+ * @returns Array of file paths to review
21
+ */
22
+ export declare function discoverFiles(target: string, projectPath: string, includeTests?: boolean): Promise<string[]>;
23
+ /**
24
+ * Read file contents and prepare file information for review
25
+ * @param filePaths Array of file paths to read
26
+ * @param projectPath The project root path
27
+ * @returns Array of FileInfo objects with file contents
28
+ */
29
+ export declare function readFilesContent(filePaths: string[], projectPath: string): Promise<{
30
+ fileInfos: FileInfo[];
31
+ errors: Array<{
32
+ path: string;
33
+ error: string;
34
+ }>;
35
+ }>;
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview File discovery and filtering module.
4
+ *
5
+ * This module is responsible for finding, filtering, and reading files for review.
6
+ * It handles gitignore patterns, test exclusions, and file system operations.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.discoverFiles = discoverFiles;
13
+ exports.readFilesContent = readFilesContent;
14
+ const promises_1 = __importDefault(require("node:fs/promises"));
15
+ const node_path_1 = __importDefault(require("node:path"));
16
+ const fileFilters_1 = require("../utils/fileFilters");
17
+ const fileSystem_1 = require("../utils/fileSystem");
18
+ const logger_1 = __importDefault(require("../utils/logger"));
19
+ const smartFileSelector_1 = require("../utils/smartFileSelector");
20
+ /**
21
+ * Validate target parameter and provide helpful error messages for common mistakes
22
+ * @param target The target parameter to validate
23
+ * @throws Error with helpful message if the target looks like a misformatted parameter
24
+ */
25
+ function validateTargetParameter(target) {
26
+ // Check for common parameter format mistakes
27
+ if (target.includes('=')) {
28
+ const [key, ...valueParts] = target.split('=');
29
+ const value = valueParts.join('='); // Rejoin in case value contains =
30
+ const commonOptions = [
31
+ 'type',
32
+ 'output',
33
+ 'model',
34
+ 'language',
35
+ 'debug',
36
+ 'interactive',
37
+ 'estimate',
38
+ ];
39
+ // Only flag as parameter if the key part matches a known option
40
+ // This avoids false positives for file paths like "src/file=name.ts"
41
+ if (commonOptions.includes(key)) {
42
+ throw new Error(`Invalid parameter format: '${target}'
43
+
44
+ It looks like you're trying to set the '${key}' option.
45
+ Did you mean: --${key} ${value}
46
+
47
+ Example usage:
48
+ cr-aia --${key} ${value}
49
+ cr-aia src --${key} ${value}
50
+ cr-aia . --${key} ${value}
51
+
52
+ Run 'cr-aia --help' for more options.`);
53
+ }
54
+ if (!key.includes('/') && !key.includes('\\') && !key.includes('.')) {
55
+ // If the key doesn't look like a path (no slashes or dots), it's probably a parameter mistake
56
+ throw new Error(`Invalid parameter format: '${target}'
57
+
58
+ Parameters should use '--' prefix, not '=' format.
59
+ Example: --type performance
60
+
61
+ Common usage patterns:
62
+ cr-aia # Review current directory
63
+ cr-aia src # Review src directory
64
+ cr-aia src/index.ts # Review specific file
65
+ cr-aia --type security # Security review of current directory
66
+ cr-aia src --type performance # Performance review of src
67
+
68
+ Run 'cr-aia --help' for all options.`);
69
+ }
70
+ // If key looks like a path (contains / or \ or .), don't flag it as an error
71
+ }
72
+ // Check if the target looks like an option without proper prefix
73
+ const commonOptions = [
74
+ 'type',
75
+ 'output',
76
+ 'model',
77
+ 'language',
78
+ 'debug',
79
+ 'interactive',
80
+ 'estimate',
81
+ 'help',
82
+ 'version',
83
+ ];
84
+ if (commonOptions.includes(target)) {
85
+ throw new Error(`'${target}' looks like an option but is missing '--' prefix.
86
+
87
+ Did you mean: --${target}
88
+
89
+ Example usage:
90
+ cr-aia --${target}
91
+ cr-aia src --${target}
92
+
93
+ For options that require values:
94
+ cr-aia --type performance
95
+ cr-aia --output json
96
+ cr-aia --model openai:gpt-4
97
+
98
+ Run 'cr-aia --help' for more information.`);
99
+ }
100
+ // Check for other common mistakes
101
+ if (target.startsWith('-') && !target.startsWith('--')) {
102
+ throw new Error(`Invalid option format: '${target}'
103
+
104
+ Options should use double dashes (--), not single dash (-).
105
+ Did you mean: -${target}?
106
+
107
+ Example usage:
108
+ cr-aia --type security
109
+ cr-aia --debug
110
+ cr-aia --help
111
+
112
+ Run 'cr-aia --help' for all available options.`);
113
+ }
114
+ }
115
+ /**
116
+ * Discover files for review based on the target path and options
117
+ * @param target The target file or directory path
118
+ * @param projectPath The project root path
119
+ * @param includeTests Whether to include test files
120
+ * @returns Array of file paths to review
121
+ */
122
+ async function discoverFiles(target, projectPath, includeTests = false) {
123
+ try {
124
+ // First validate the target parameter for common mistakes
125
+ validateTargetParameter(target);
126
+ // Validate the target path
127
+ const resolvedTarget = node_path_1.default.resolve(projectPath, target);
128
+ // Check if the path is within the project directory
129
+ if (!(0, fileSystem_1.isPathWithinCwd)(resolvedTarget)) {
130
+ throw new Error(`Target must be within the project directory: ${projectPath}`);
131
+ }
132
+ const targetPath = resolvedTarget;
133
+ // Check if the target exists
134
+ const isFileTarget = (await (0, fileSystem_1.pathExists)(targetPath)) && !(await (0, fileSystem_1.isDirectory)(targetPath));
135
+ const isDirectoryTarget = await (0, fileSystem_1.isDirectory)(targetPath);
136
+ if (!isFileTarget && !isDirectoryTarget) {
137
+ throw new Error(`Target not found: ${target}`);
138
+ }
139
+ // Load gitignore patterns from target path, not project path
140
+ const gitignorePatterns = await (0, fileFilters_1.loadGitignorePatterns)(targetPath);
141
+ logger_1.default.debug(`Loaded ${gitignorePatterns.length} patterns from .gitignore in ${targetPath}`);
142
+ // Get files to review using the existing filter utility
143
+ let filesToReview = await (0, fileFilters_1.getFilesToReview)(targetPath, isFileTarget, includeTests, gitignorePatterns);
144
+ // Apply smart filtering (tsconfig.json and .eslintignore)
145
+ if (filesToReview.length > 0) {
146
+ logger_1.default.info('Applying smart filtering based on project configuration files...');
147
+ // Use the target directory for finding tsconfig.json, not the project root
148
+ const configDir = isFileTarget ? node_path_1.default.dirname(targetPath) : targetPath;
149
+ filesToReview = await (0, smartFileSelector_1.applySmartFiltering)(filesToReview, configDir);
150
+ }
151
+ if (filesToReview.length === 0) {
152
+ logger_1.default.info('No files found to review.');
153
+ }
154
+ else {
155
+ logger_1.default.info(`Found ${filesToReview.length} files to review.`);
156
+ }
157
+ return filesToReview;
158
+ }
159
+ catch (error) {
160
+ logger_1.default.error(`Error discovering files: ${error instanceof Error ? error.message : String(error)}`);
161
+ throw error; // Re-throw to allow the caller to handle it
162
+ }
163
+ }
164
+ /**
165
+ * Read file contents and prepare file information for review
166
+ * @param filePaths Array of file paths to read
167
+ * @param projectPath The project root path
168
+ * @returns Array of FileInfo objects with file contents
169
+ */
170
+ async function readFilesContent(filePaths, projectPath) {
171
+ const fileInfos = [];
172
+ const errors = [];
173
+ for (const filePath of filePaths) {
174
+ try {
175
+ // Check if file exists and is readable
176
+ if (!(await (0, fileSystem_1.pathExists)(filePath))) {
177
+ errors.push({ path: filePath, error: 'File does not exist' });
178
+ continue;
179
+ }
180
+ // Read file content
181
+ const fileContent = await promises_1.default.readFile(filePath, 'utf-8');
182
+ // Get relative path from project root
183
+ const relativePath = node_path_1.default.relative(projectPath, filePath);
184
+ // Add to file infos
185
+ fileInfos.push({
186
+ path: filePath,
187
+ relativePath,
188
+ content: fileContent,
189
+ });
190
+ }
191
+ catch (error) {
192
+ const errorMessage = error instanceof Error ? error.message : String(error);
193
+ logger_1.default.error(`Error reading file ${filePath}: ${errorMessage}`);
194
+ errors.push({ path: filePath, error: errorMessage });
195
+ }
196
+ }
197
+ if (errors.length > 0) {
198
+ logger_1.default.warn(`Failed to read ${errors.length} file(s)`);
199
+ }
200
+ return { fileInfos, errors };
201
+ }
202
+ //# sourceMappingURL=fileDiscovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileDiscovery.js","sourceRoot":"","sources":["../../src/core/fileDiscovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @fileoverview Token and cost estimation handler for code review
3
+ *
4
+ * This module handles token usage estimation and cost analysis for code review
5
+ * using the TokenAnalyzer plus legacy fallbacks.
6
+ */
7
+ import type { ReviewOptions } from '../../types/review';
8
+ import type { FileInfo } from '../fileDiscovery';
9
+ /**
10
+ * Perform token usage and cost estimation for review
11
+ *
12
+ * @param fileInfos Array of file information objects
13
+ * @param filesToReview Array of file paths
14
+ * @param options Review options
15
+ * @param modelName Model name to use for estimation
16
+ * @returns Promise that resolves when estimation is complete
17
+ */
18
+ export declare function performEstimation(fileInfos: FileInfo[], filesToReview: string[], options: ReviewOptions, modelName: string): Promise<void>;