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
@@ -1,308 +0,0 @@
1
- import { existsSync, mkdirSync, readdirSync, readFileSync, statSync } from 'node:fs';
2
- import path from 'node:path';
3
- import { join, relative, resolve } from 'node:path';
4
- import { execa } from 'execa';
5
- import type { OutputFormat } from '../types/common';
6
- import type { ReviewOptions, ReviewType, RunContext } from '../types/review';
7
- import { orchestrateReview } from '../core/reviewOrchestrator';
8
- import { RUNTIME_CONFIG } from './runtimeConfig';
9
-
10
- interface FileProgressPayload {
11
- file: string;
12
- index: number;
13
- total: number;
14
- }
15
-
16
- interface ReviewGroup {
17
- label: string;
18
- files: string[];
19
- absoluteFiles: string[];
20
- targetPath: string;
21
- }
22
-
23
- const MAX_FILES_PER_GROUP = 5;
24
- const MAX_CONTEXT_DOCS_PER_GROUP = 5;
25
- const MAX_CONTEXT_DOC_CHARS = 2000;
26
-
27
- interface ContextDocEntry {
28
- path: string;
29
- relativePath: string;
30
- snippet: string;
31
- }
32
-
33
- export interface AiReviewOptions {
34
- provider: 'openrouter';
35
- type: string;
36
- outDir: string;
37
- format: 'json' | 'md';
38
- model?: string;
39
- configPath?: string;
40
- debug?: boolean;
41
- onFileProgress?: (payload: FileProgressPayload) => void;
42
- runContext?: RunContext;
43
- }
44
-
45
- export async function runAiCodeReview(
46
- targetFiles: string[],
47
- contextFiles: string[],
48
- opts: AiReviewOptions,
49
- ): Promise<any[]> {
50
- if (targetFiles.length === 0) return [];
51
-
52
- const workspaceRoot = process.cwd();
53
- let repoRoot: string;
54
- try {
55
- const { stdout } = await execa('git', ['rev-parse', '--show-toplevel']);
56
- repoRoot = stdout.trim();
57
- } catch {
58
- repoRoot = process.cwd();
59
- }
60
-
61
- const absOutDir = resolve(workspaceRoot, opts.outDir);
62
-
63
- if (!existsSync(absOutDir)) {
64
- mkdirSync(absOutDir, { recursive: true });
65
- }
66
-
67
- const outputFileMeta = new Map<string, { mtimeMs: number; size: number }>();
68
- if (existsSync(absOutDir)) {
69
- for (const file of readdirSync(absOutDir)) {
70
- if (!file.endsWith('.json')) continue;
71
- try {
72
- const stats = statSync(join(absOutDir, file));
73
- outputFileMeta.set(file, { mtimeMs: stats.mtimeMs, size: stats.size });
74
- } catch {
75
- // ignore stale files
76
- }
77
- }
78
- }
79
-
80
- function getAllFilesInDir(dirPath: string, repo: string): string[] {
81
- const entries = readdirSync(dirPath, { withFileTypes: true });
82
- const nested: string[] = [];
83
- for (const entry of entries) {
84
- const fullPath = join(dirPath, entry.name);
85
- const relPath = relative(repo, fullPath);
86
- if (relPath.includes('.git/') || relPath.includes('node_modules/')) {
87
- continue;
88
- }
89
-
90
- if (entry.isDirectory()) {
91
- const subFiles = getAllFilesInDir(fullPath, repo);
92
- nested.push(...subFiles);
93
- } else if (entry.isFile()) {
94
- nested.push(fullPath);
95
- }
96
- }
97
- return nested;
98
- }
99
-
100
- const expandedFiles: string[] = [];
101
- for (const file of targetFiles) {
102
- const absPath = resolve(file);
103
- try {
104
- const stats = statSync(absPath);
105
- if (stats.isDirectory()) {
106
- const dirFiles = getAllFilesInDir(absPath, repoRoot);
107
- expandedFiles.push(...dirFiles);
108
- } else if (stats.isFile()) {
109
- expandedFiles.push(absPath);
110
- }
111
- } catch {
112
- continue;
113
- }
114
- }
115
-
116
- const uniqueExpandedFiles = Array.from(new Set(expandedFiles));
117
- const relativeFilesSet = new Set<string>();
118
- for (const absPath of uniqueExpandedFiles) {
119
- try {
120
- const stats = statSync(absPath);
121
- if (!stats.isFile()) continue;
122
- const repoRelative = relative(repoRoot, absPath);
123
- if (!repoRelative || repoRelative.startsWith('..')) continue;
124
-
125
- const workspaceRelative = relative(workspaceRoot, absPath).replace(/\\/g, '/');
126
- if (!workspaceRelative || workspaceRelative.startsWith('..')) continue;
127
-
128
- relativeFilesSet.add(workspaceRelative);
129
- } catch {
130
- continue;
131
- }
132
- }
133
-
134
- const outputs: any[] = [];
135
-
136
- const collectOutputs = () => {
137
- if (!existsSync(absOutDir)) {
138
- return;
139
- }
140
- const jsonFiles = readdirSync(absOutDir).filter((f) => f.endsWith('.json'));
141
- for (const file of jsonFiles) {
142
- const filePath = join(absOutDir, file);
143
- try {
144
- const stats = statSync(filePath);
145
- const previous = outputFileMeta.get(file);
146
- if (previous && stats.mtimeMs <= previous.mtimeMs && stats.size === previous.size) {
147
- continue;
148
- }
149
- const content = JSON.parse(readFileSync(filePath, 'utf-8'));
150
- outputs.push(content);
151
- outputFileMeta.set(file, { mtimeMs: stats.mtimeMs, size: stats.size });
152
- } catch {
153
- continue;
154
- }
155
- }
156
- };
157
-
158
- if (relativeFilesSet.size === 0) {
159
- throw new Error('No files to review after filtering');
160
- }
161
-
162
- const targets = Array.from(relativeFilesSet);
163
- const mappedFormat: OutputFormat = opts.format === 'md' ? 'markdown' : 'json';
164
-
165
- const baseOptions: (ReviewOptions & { config?: string }) = {
166
- type: opts.type as ReviewType,
167
- output: mappedFormat,
168
- outputDir: absOutDir,
169
- model: opts.model || RUNTIME_CONFIG.DEFAULT_MODEL,
170
- debug: opts.debug ?? false,
171
- };
172
-
173
- if (opts.configPath) {
174
- baseOptions.config = opts.configPath;
175
- }
176
-
177
- const groups = createReviewGroups(targets, workspaceRoot);
178
- const contextDocEntries = prepareContextDocs(contextFiles, workspaceRoot);
179
- const totalFiles = targets.length;
180
- let processedCount = 0;
181
-
182
- const groupCount = groups.length;
183
- for (let groupIdx = 0; groupIdx < groups.length; groupIdx += 1) {
184
- const group = groups[groupIdx];
185
- const progressIndex = Math.min(processedCount + 1, totalFiles);
186
- const displayName = formatGroupDisplay(group.files);
187
- opts.onFileProgress?.({ file: displayName, index: progressIndex, total: totalFiles });
188
-
189
- const selectedContextDocs = selectContextDocs(group.files, contextDocEntries);
190
- const inheritedContext = opts.runContext;
191
- const runContext = inheritedContext
192
- ? {
193
- ...inheritedContext,
194
- groupIndex: groupIdx + 1,
195
- groupCount,
196
- groupLabel: group.label,
197
- groupFiles: group.files,
198
- docFiles: selectedContextDocs.map((doc) => doc.relativePath),
199
- contextDocs: selectedContextDocs.map((doc) => ({
200
- path: doc.relativePath,
201
- snippet: doc.snippet,
202
- })),
203
- }
204
- : undefined;
205
-
206
- await orchestrateReview(group.targetPath, {
207
- ...baseOptions,
208
- targetFileList: group.absoluteFiles,
209
- runContext,
210
- });
211
- processedCount += group.files.length;
212
- collectOutputs();
213
- }
214
-
215
- return outputs;
216
- }
217
-
218
- function createReviewGroups(targets: string[], workspaceRoot: string): ReviewGroup[] {
219
- const directoryMap = new Map<string, string[]>();
220
- for (const target of targets) {
221
- const dir = path.posix.dirname(target) || '.';
222
- if (!directoryMap.has(dir)) {
223
- directoryMap.set(dir, []);
224
- }
225
- directoryMap.get(dir)!.push(target);
226
- }
227
-
228
- const groups: ReviewGroup[] = [];
229
- for (const [dir, files] of directoryMap) {
230
- for (let i = 0; i < files.length; i += MAX_FILES_PER_GROUP) {
231
- const chunk = files.slice(i, i + MAX_FILES_PER_GROUP);
232
- const absoluteFiles = chunk.map((file) => resolve(workspaceRoot, file));
233
- const targetPath = dir === '.' ? chunk[0] ?? '.' : dir;
234
- groups.push({
235
- label: dir,
236
- files: chunk,
237
- absoluteFiles,
238
- targetPath,
239
- });
240
- }
241
- }
242
-
243
- return groups;
244
- }
245
-
246
- function formatGroupDisplay(files: string[]): string {
247
- if (files.length === 0) {
248
- return 'pending files';
249
- }
250
-
251
- if (files.length === 1) {
252
- return files[0];
253
- }
254
-
255
- return `${files[0]} (+${files.length - 1} more)`;
256
- }
257
-
258
- function prepareContextDocs(contextFiles: string[], workspaceRoot: string): ContextDocEntry[] {
259
- const docs: ContextDocEntry[] = [];
260
- const seen = new Set<string>();
261
-
262
- for (const file of contextFiles) {
263
- const absPath = resolve(file);
264
- if (seen.has(absPath)) continue;
265
- seen.add(absPath);
266
-
267
- try {
268
- const stats = statSync(absPath);
269
- if (!stats.isFile()) continue;
270
- const buffer = readFileSync(absPath);
271
- if (buffer.length === 0 || buffer.includes(0)) continue;
272
- const snippet = buffer.toString('utf-8').slice(0, MAX_CONTEXT_DOC_CHARS);
273
- const relativePath = relative(workspaceRoot, absPath).replace(/\\/g, '/');
274
- if (!relativePath || relativePath.startsWith('..')) continue;
275
- docs.push({ path: absPath, relativePath, snippet });
276
- } catch {
277
- continue;
278
- }
279
- }
280
-
281
- return docs;
282
- }
283
-
284
- function selectContextDocs(
285
- groupFiles: string[],
286
- docs: ContextDocEntry[],
287
- limit = MAX_CONTEXT_DOCS_PER_GROUP,
288
- ): ContextDocEntry[] {
289
- if (docs.length === 0 || limit <= 0) {
290
- return [];
291
- }
292
-
293
- const groupDirs = new Set(groupFiles.map((file) => path.posix.dirname(file)));
294
- const prioritized: ContextDocEntry[] = [];
295
- const remaining: ContextDocEntry[] = [];
296
-
297
- for (const doc of docs) {
298
- const docDir = path.posix.dirname(doc.relativePath);
299
- if (groupDirs.has(docDir)) {
300
- prioritized.push(doc);
301
- } else {
302
- remaining.push(doc);
303
- }
304
- }
305
-
306
- const ordered = [...prioritized, ...remaining];
307
- return ordered.slice(0, limit);
308
- }
@@ -1,5 +0,0 @@
1
- export const RUNTIME_CONFIG = {
2
- DEFAULT_MODEL: 'openrouter:x-ai/grok-4-fast',
3
- } as const;
4
-
5
- export type RuntimeConfig = typeof RUNTIME_CONFIG;
@@ -1,57 +0,0 @@
1
- import React, { createContext, useContext, useEffect, useMemo, useState } from 'react';
2
- import { getInk } from './inkModules';
3
-
4
- interface LayoutValue {
5
- columns: number;
6
- rows: number;
7
- frameWidth: number;
8
- }
9
-
10
- const DEFAULT_COLUMNS = 80;
11
- const DEFAULT_ROWS = 24;
12
-
13
- const LayoutContext = createContext<LayoutValue>({
14
- columns: DEFAULT_COLUMNS,
15
- rows: DEFAULT_ROWS,
16
- frameWidth: DEFAULT_COLUMNS - 4,
17
- });
18
-
19
- export function LayoutProvider({ children }: { children: React.ReactNode }) {
20
- const { useStdout } = getInk();
21
- const { stdout } = useStdout();
22
- const [dimensions, setDimensions] = useState<LayoutValue>(() => ({
23
- columns: stdout?.columns ?? DEFAULT_COLUMNS,
24
- rows: stdout?.rows ?? DEFAULT_ROWS,
25
- frameWidth: Math.max(60, Math.min((stdout?.columns ?? DEFAULT_COLUMNS) - 4, 110)),
26
- }));
27
-
28
- useEffect(() => {
29
- if (!stdout) {
30
- return;
31
- }
32
-
33
- const handleResize = () => {
34
- const cols = stdout.columns ?? DEFAULT_COLUMNS;
35
- const rows = stdout.rows ?? DEFAULT_ROWS;
36
- setDimensions({
37
- columns: cols,
38
- rows,
39
- frameWidth: Math.max(60, Math.min(cols - 4, 110)),
40
- });
41
- };
42
-
43
- stdout.on('resize', handleResize);
44
- return () => {
45
- stdout.off('resize', handleResize);
46
- };
47
- }, [stdout]);
48
-
49
- const value = useMemo<LayoutValue>(() => dimensions, [dimensions]);
50
-
51
- return <LayoutContext.Provider value={value}>{children}</LayoutContext.Provider>;
52
- }
53
-
54
- export function useLayout(): LayoutValue {
55
- return useContext(LayoutContext);
56
- }
57
-
@@ -1,262 +0,0 @@
1
- import React, { useCallback, useEffect, useMemo, useState } from 'react';
2
- import { LayoutProvider, useLayout } from './Layout';
3
- import { AuthScreen } from './screens/AuthScreen';
4
- import { ModeSelection } from './screens/ModeSelection';
5
- import { ProgressScreen } from './screens/ProgressScreen';
6
- import { ResultsScreen } from './screens/ResultsScreen';
7
- import { getInk, getInkSpinner } from './inkModules';
8
- import type { ReviewMode, ReviewResult, ReviewStage, StageUpdate } from '../reviewPipeline';
9
- import { executeReview } from '../reviewPipeline';
10
- import { loadSession, getSessionToken } from '../auth/session';
11
- import type { SessionUser } from '../auth/types';
12
- import { RUNTIME_CONFIG } from '../runtimeConfig';
13
- import { MissingCrIgnoreError } from '../errors';
14
- import { triggerManualWebCheck } from '../preprod/webCheck';
15
- import { startDebugLogSession, type DebugLogSession } from '../debug/logManager';
16
- import logger from '../../utils/logger';
17
-
18
- type ScreenState = 'auth' | 'mode' | 'progress' | 'results';
19
-
20
- interface RuntimeAppProps {
21
- debug?: boolean;
22
- }
23
-
24
- interface ProgressState {
25
- stage: ReviewStage;
26
- filesFound?: number;
27
- currentFile?: string;
28
- currentIndex?: number;
29
- totalFiles?: number;
30
- uncommittedFiles?: number;
31
- contextFiles?: number;
32
- }
33
-
34
- const defaultProgress: ProgressState = { stage: 'collecting' };
35
- const GENERIC_ERROR_MESSAGE =
36
- 'Something went wrong. Press D to enable debug mode and rerun to capture logs.';
37
- const PREPROD_ERROR_MESSAGE =
38
- 'Could not start the website check. Double-check the URL or try again later.';
39
-
40
- function transformStageUpdate(stage: ReviewStage, info?: StageUpdate): ProgressState {
41
- return {
42
- stage,
43
- filesFound: info?.filesFound,
44
- currentFile: info?.currentFile,
45
- currentIndex:
46
- typeof info?.fileIndex === 'number' && info.fileIndex > 0 ? info.fileIndex : undefined,
47
- totalFiles: info?.totalFiles,
48
- uncommittedFiles: info?.uncommittedFiles,
49
- contextFiles: info?.contextFiles,
50
- };
51
- }
52
-
53
- function AppBody({ debug = false }: RuntimeAppProps) {
54
- const { Box, Text, useApp, useInput } = getInk();
55
- const { exit } = useApp();
56
- const layout = useLayout();
57
- const [screen, setScreen] = useState<ScreenState>('auth');
58
- const [user, setUser] = useState<SessionUser | null>(null);
59
- const [progress, setProgress] = useState<ProgressState>(defaultProgress);
60
- const [results, setResults] = useState<ReviewResult | null>(null);
61
- const [debugEnabled, setDebugEnabled] = useState(false);
62
- const [lastDebugLogPath, setLastDebugLogPath] = useState<string | null>(null);
63
- type ErrorInfo = { type: 'generic' | 'crignore'; message: string; hint?: string };
64
- const [error, setError] = useState<ErrorInfo | null>(null);
65
- const combinedDebugFlag = useMemo(() => debug || debugEnabled, [debug, debugEnabled]);
66
-
67
- useEffect(() => {
68
- const sessionUser = loadSession();
69
- const token = getSessionToken();
70
- if (token) {
71
- process.env.CR_AIA_PROXY_SESSION_TOKEN = token;
72
- }
73
- if (sessionUser) {
74
- setUser(sessionUser);
75
- setScreen('mode');
76
- }
77
- }, []);
78
-
79
- useInput(
80
- useCallback(
81
- (input, key) => {
82
- if (key.ctrl && input === 'c') {
83
- exit();
84
- }
85
-
86
- if (screen === 'results' && key.return) {
87
- setScreen('mode');
88
- }
89
- },
90
- [exit, screen],
91
- ),
92
- );
93
-
94
- const handleAuth = useCallback((nextUser: SessionUser) => {
95
- setUser(nextUser);
96
- setScreen('mode');
97
- }, []);
98
-
99
- const handleToggleDebug = useCallback(() => {
100
- setDebugEnabled((prev) => {
101
- if (prev) {
102
- setLastDebugLogPath(null);
103
- }
104
- return !prev;
105
- });
106
- }, []);
107
-
108
- const handleRunReview = useCallback(async (mode: ReviewMode, extras?: { targetUrl?: string }) => {
109
- const trimmedUrl = extras?.targetUrl?.trim();
110
-
111
- if (mode === 'preprod' && !trimmedUrl) {
112
- setError({ type: 'generic', message: 'Pre-production mode requires a website URL.' });
113
- return;
114
- }
115
-
116
- setScreen('progress');
117
- setResults(null);
118
- setError(null);
119
- setProgress(mode === 'preprod' ? { stage: 'preparing' } : { ...defaultProgress });
120
- setLastDebugLogPath(null);
121
-
122
- let debugSession: DebugLogSession | null = null;
123
- const finalizeDebugLogging = () => {
124
- if (debugSession) {
125
- debugSession.stop();
126
- setLastDebugLogPath(debugSession.filePath);
127
- } else {
128
- setLastDebugLogPath(null);
129
- }
130
- };
131
-
132
- if (debugEnabled) {
133
- try {
134
- debugSession = startDebugLogSession(process.cwd());
135
- } catch (logInitError) {
136
- const message =
137
- logInitError instanceof Error
138
- ? logInitError.message
139
- : 'Unable to initialize debug logging.';
140
- setError({ type: 'generic', message: `Debug logging disabled: ${message}` });
141
- }
142
- }
143
-
144
- if (mode === 'preprod' && trimmedUrl) {
145
- try {
146
- logger.info('Triggering manual website check', { url: trimmedUrl });
147
- await triggerManualWebCheck(trimmedUrl);
148
- } catch (webError) {
149
- logger.error('Pre-production web check failed', webError);
150
- setError({ type: 'generic', message: PREPROD_ERROR_MESSAGE });
151
- setScreen('mode');
152
- finalizeDebugLogging();
153
- return;
154
- }
155
- }
156
-
157
- try {
158
- logger.info('Starting code review run', { mode, workspace: process.cwd(), preprodTarget: trimmedUrl });
159
- setProgress({ ...defaultProgress });
160
- const reviewResult = await executeReview({
161
- model: process.env.AI_CODE_REVIEW_MODEL || RUNTIME_CONFIG.DEFAULT_MODEL,
162
- outDir: './reports',
163
- debug: combinedDebugFlag,
164
- mode,
165
- preprodTargetUrl: trimmedUrl,
166
- onStage: (stage, info) =>
167
- setProgress(transformStageUpdate(stage, info)),
168
- });
169
-
170
- logger.info('Code review run complete', {
171
- mode,
172
- durationSeconds: reviewResult.duration,
173
- filesReviewed: reviewResult.filesReviewed,
174
- });
175
- setResults(reviewResult);
176
- setScreen('results');
177
- } catch (reviewError) {
178
- logger.error('Code review run failed', reviewError);
179
- if (reviewError instanceof MissingCrIgnoreError) {
180
- setError({
181
- type: 'crignore',
182
- message: 'cr-aia needs a .crignore file in this repo.',
183
- hint: `Create ${reviewError.crIgnorePath} (can be empty, gitignore syntax) and rerun.`,
184
- });
185
- } else {
186
- setError({ type: 'generic', message: GENERIC_ERROR_MESSAGE });
187
- }
188
- setScreen('mode');
189
- } finally {
190
- finalizeDebugLogging();
191
- }
192
- }, [combinedDebugFlag, debugEnabled]);
193
-
194
- return (
195
- <Box width={layout.frameWidth} flexDirection="column" gap={1}>
196
- {screen === 'auth' && <AuthScreen onAuth={handleAuth} />}
197
- {screen === 'mode' && user && (
198
- <ModeSelection
199
- onSelect={(mode, payload) => handleRunReview(mode, payload)}
200
- debugEnabled={debugEnabled}
201
- onToggleDebug={handleToggleDebug}
202
- />
203
- )}
204
- {screen === 'progress' && (
205
- <ProgressScreen
206
- stage={progress.stage}
207
- filesFound={progress.filesFound}
208
- currentFile={progress.currentFile}
209
- currentIndex={progress.currentIndex}
210
- totalFiles={progress.totalFiles}
211
- uncommittedFiles={progress.uncommittedFiles}
212
- contextFiles={progress.contextFiles}
213
- />
214
- )}
215
- {screen === 'results' && results && (
216
- <ResultsScreen result={results} debugLogPath={lastDebugLogPath} />
217
- )}
218
- {error && (
219
- <Box
220
- borderStyle="round"
221
- borderColor={error.type === 'crignore' ? 'yellow' : 'red'}
222
- paddingX={1}
223
- paddingY={1}
224
- >
225
- <Text color={error.type === 'crignore' ? 'yellow' : 'red'}>
226
- {error.message}
227
- {error.hint ? `\n${error.hint}` : ''}
228
- </Text>
229
- </Box>
230
- )}
231
- {lastDebugLogPath && screen !== 'results' && (
232
- <Box>
233
- <Text dimColor>Debug logs saved to: {lastDebugLogPath}</Text>
234
- </Box>
235
- )}
236
- <Box justifyContent="space-between">
237
- <Text dimColor>{user ? `Logged in as ${user.username}` : 'Authenticate to start reviewing'}</Text>
238
- <Text dimColor>Ctrl+C to exit</Text>
239
- </Box>
240
- </Box>
241
- );
242
- }
243
-
244
- export function RuntimeApp(props: RuntimeAppProps) {
245
- return (
246
- <LayoutProvider>
247
- <AppBody {...props} />
248
- </LayoutProvider>
249
- );
250
- }
251
-
252
- export function LoadingScreen() {
253
- const { Box, Text } = getInk();
254
- const Spinner = getInkSpinner();
255
- return (
256
- <Box flexDirection="column" paddingX={1} paddingY={1}>
257
- <Text>
258
- <Spinner type="dots" /> Preparing runtime environment...
259
- </Text>
260
- </Box>
261
- );
262
- }
@@ -1,73 +0,0 @@
1
- type InkModule = typeof import('ink');
2
- type SpinnerModule = typeof import('ink-spinner');
3
- type TextInputModule = typeof import('ink-text-input');
4
- type SelectInputModule = typeof import('ink-select-input');
5
-
6
- const dynamicImporter = new Function('specifier', 'return import(specifier);') as (
7
- specifier: string,
8
- ) => Promise<unknown>;
9
-
10
- let inkModule: InkModule | null = null;
11
- let spinnerModule: SpinnerModule['default'] | null = null;
12
- let textInputModule: TextInputModule['default'] | null = null;
13
- let selectInputModule: SelectInputModule['default'] | null = null;
14
-
15
- async function loadInk(): Promise<void> {
16
- if (!inkModule) {
17
- inkModule = (await dynamicImporter('ink')) as InkModule;
18
- }
19
- }
20
-
21
- async function loadSpinner(): Promise<void> {
22
- if (!spinnerModule) {
23
- const mod = (await dynamicImporter('ink-spinner')) as SpinnerModule;
24
- spinnerModule = mod.default;
25
- }
26
- }
27
-
28
- async function loadTextInput(): Promise<void> {
29
- if (!textInputModule) {
30
- const mod = (await dynamicImporter('ink-text-input')) as TextInputModule;
31
- textInputModule = mod.default;
32
- }
33
- }
34
-
35
- async function loadSelectInput(): Promise<void> {
36
- if (!selectInputModule) {
37
- const mod = (await dynamicImporter('ink-select-input')) as SelectInputModule;
38
- selectInputModule = mod.default;
39
- }
40
- }
41
-
42
- export async function preloadInkModules(): Promise<void> {
43
- await Promise.all([loadInk(), loadSpinner(), loadTextInput(), loadSelectInput()]);
44
- }
45
-
46
- export function getInk(): InkModule {
47
- if (!inkModule) {
48
- throw new Error('Ink module not loaded. Call preloadInkModules() before rendering UI.');
49
- }
50
- return inkModule;
51
- }
52
-
53
- export function getInkSpinner(): SpinnerModule['default'] {
54
- if (!spinnerModule) {
55
- throw new Error('Ink spinner module not loaded. Call preloadInkModules() before rendering UI.');
56
- }
57
- return spinnerModule;
58
- }
59
-
60
- export function getInkTextInput(): TextInputModule['default'] {
61
- if (!textInputModule) {
62
- throw new Error('Ink TextInput module not loaded. Call preloadInkModules() before rendering UI.');
63
- }
64
- return textInputModule;
65
- }
66
-
67
- export function getInkSelectInput(): SelectInputModule['default'] {
68
- if (!selectInputModule) {
69
- throw new Error('Ink SelectInput module not loaded. Call preloadInkModules() before rendering UI.');
70
- }
71
- return selectInputModule;
72
- }
73
-