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,67 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Formatters for review issues in different formats.
4
+ *
5
+ * This module provides functions to format review issues in different formats,
6
+ * including structured issues and schema-based issues.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.formatSchemaIssue = formatSchemaIssue;
10
+ exports.formatIssue = formatIssue;
11
+ /**
12
+ * Format a single issue from the schema format
13
+ * @param issue Issue object from schema
14
+ * @param index Issue number
15
+ * @returns Formatted issue string
16
+ */
17
+ function formatSchemaIssue(issue, index) {
18
+ let issueMarkdown = `### ${index}. ${issue.description}\n\n`;
19
+ if (issue.filePath) {
20
+ issueMarkdown += `**File**: \`${issue.filePath}\`\n`;
21
+ }
22
+ if (issue.location) {
23
+ issueMarkdown += `**Location**: Lines ${issue.location.startLine}-${issue.location.endLine}\n\n`;
24
+ }
25
+ if (issue.currentCode) {
26
+ issueMarkdown += `**Current Code**:\n\`\`\`\n${issue.currentCode}\n\`\`\`\n\n`;
27
+ }
28
+ if (issue.suggestedCode) {
29
+ issueMarkdown += `**Suggested Fix**:\n\`\`\`\n${issue.suggestedCode}\n\`\`\`\n\n`;
30
+ }
31
+ if (issue.explanation) {
32
+ issueMarkdown += `**Explanation**: ${issue.explanation}\n\n`;
33
+ }
34
+ issueMarkdown += `---\n\n`;
35
+ return issueMarkdown;
36
+ }
37
+ /**
38
+ * Format a single issue as Markdown
39
+ * @param issue Review issue
40
+ * @returns Markdown string
41
+ */
42
+ function formatIssue(issue) {
43
+ // Guard against null or undefined issues
44
+ if (!issue) {
45
+ return '#### [Error: Issue data missing]';
46
+ }
47
+ const { title, type, filePath, lineNumbers, description, codeSnippet, suggestedFix, impact } = issue;
48
+ let issueMarkdown = `#### ${title || '[Untitled Issue]'}\n`;
49
+ if (filePath) {
50
+ issueMarkdown += `- **Location**: \`${filePath}${lineNumbers ? `:${lineNumbers}` : ''}\`\n`;
51
+ }
52
+ if (type) {
53
+ issueMarkdown += `- **Type**: ${type}\n`;
54
+ }
55
+ issueMarkdown += `- **Description**: ${description || 'No description provided'}\n`;
56
+ if (codeSnippet) {
57
+ issueMarkdown += `- **Code**:\n\`\`\`\n${codeSnippet}\n\`\`\`\n`;
58
+ }
59
+ if (suggestedFix) {
60
+ issueMarkdown += `- **Suggested Fix**:\n\`\`\`\n${suggestedFix}\n\`\`\`\n`;
61
+ }
62
+ if (impact) {
63
+ issueMarkdown += `- **Impact**: ${impact}\n`;
64
+ }
65
+ return issueMarkdown;
66
+ }
67
+ //# sourceMappingURL=IssueFormatters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IssueFormatters.js","sourceRoot":"","sources":["../../../src/formatters/utils/IssueFormatters.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAUH,8CA0BC;AAOD,kCAkCC;AAzED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,KAAU,EAAE,KAAa;IACzD,IAAI,aAAa,GAAG,OAAO,KAAK,KAAK,KAAK,CAAC,WAAW,MAAM,CAAC;IAE7D,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,aAAa,IAAI,eAAe,KAAK,CAAC,QAAQ,MAAM,CAAC;IACvD,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,aAAa,IAAI,uBAAuB,KAAK,CAAC,QAAQ,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,MAAM,CAAC;IACnG,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,aAAa,IAAI,8BAA8B,KAAK,CAAC,WAAW,cAAc,CAAC;IACjF,CAAC;IAED,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,aAAa,IAAI,+BAA+B,KAAK,CAAC,aAAa,cAAc,CAAC;IACpF,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,aAAa,IAAI,oBAAoB,KAAK,CAAC,WAAW,MAAM,CAAC;IAC/D,CAAC;IAED,aAAa,IAAI,SAAS,CAAC;IAE3B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,SAAgB,WAAW,CAAC,KAAkB;IAC5C,yCAAyC;IACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,kCAAkC,CAAC;IAC5C,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,GAC1F,KAAK,CAAC;IAER,IAAI,aAAa,GAAG,QAAQ,KAAK,IAAI,kBAAkB,IAAI,CAAC;IAE5D,IAAI,QAAQ,EAAE,CAAC;QACb,aAAa,IAAI,qBAAqB,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;IAC9F,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,aAAa,IAAI,eAAe,IAAI,IAAI,CAAC;IAC3C,CAAC;IAED,aAAa,IAAI,sBAAsB,WAAW,IAAI,yBAAyB,IAAI,CAAC;IAEpF,IAAI,WAAW,EAAE,CAAC;QAChB,aAAa,IAAI,wBAAwB,WAAW,YAAY,CAAC;IACnE,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,aAAa,IAAI,iCAAiC,YAAY,YAAY,CAAC;IAC7E,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,aAAa,IAAI,iBAAiB,MAAM,IAAI,CAAC;IAC/C,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @fileoverview Formatter for JSON output of code reviews.
3
+ *
4
+ * This module provides functions to format code review results as JSON,
5
+ * including metadata, structured data, and content.
6
+ */
7
+ import type { ReviewResult } from '../../types/review';
8
+ /**
9
+ * Format the review as JSON
10
+ * @param review Review result to format
11
+ * @returns JSON string
12
+ */
13
+ export declare function formatAsJson(review: ReviewResult): string;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Formatter for JSON output of code reviews.
4
+ *
5
+ * This module provides functions to format code review results as JSON,
6
+ * including metadata, structured data, and content.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.formatAsJson = formatAsJson;
10
+ const sanitizer_1 = require("../../utils/sanitizer");
11
+ const MetadataFormatter_1 = require("./MetadataFormatter");
12
+ const ModelInfoExtractor_1 = require("./ModelInfoExtractor");
13
+ /**
14
+ * Format the review as JSON
15
+ * @param review Review result to format
16
+ * @returns JSON string
17
+ */
18
+ function formatAsJson(review) {
19
+ // Extract model information
20
+ const { modelVendor, modelName, modelInfo } = (0, ModelInfoExtractor_1.extractModelInfo)(review.modelUsed);
21
+ // Sanitize the content to prevent XSS attacks
22
+ const sanitizedContent = (0, sanitizer_1.sanitizeContent)(review.content);
23
+ // Parse structured data if available
24
+ let parsedStructuredData = review.structuredData;
25
+ if (typeof review.structuredData === 'string') {
26
+ try {
27
+ parsedStructuredData = JSON.parse(review.structuredData);
28
+ }
29
+ catch (error) {
30
+ console.error('Error parsing structured review data:', error);
31
+ }
32
+ }
33
+ // Parse additional metadata if available
34
+ const additionalMetadata = (0, MetadataFormatter_1.parseMetadata)(review.metadata);
35
+ // Format path for display
36
+ let displayPath = review.filePath || '';
37
+ if (!displayPath || displayPath === review.reviewType || displayPath === 'consolidated') {
38
+ displayPath = `${process.cwd()} (Current Directory)`;
39
+ }
40
+ // Create enhanced metadata with detection info
41
+ const enhancedMetadata = (0, MetadataFormatter_1.createEnhancedMetadata)(modelVendor, modelName, modelInfo, review.reviewType, displayPath, review.timestamp, review.costInfo || review.cost, review.toolVersion, review.commandOptions, additionalMetadata, review.detectedLanguage, review.detectedFramework, review.frameworkVersion, review.cssFrameworks);
42
+ // Create a copy of the review with enhanced metadata
43
+ const reviewWithMeta = {
44
+ ...review,
45
+ content: sanitizedContent,
46
+ structuredData: parsedStructuredData,
47
+ meta: enhancedMetadata,
48
+ // Legacy metadata field for backward compatibility
49
+ metadata: {
50
+ model: modelInfo,
51
+ generatedAt: new Date(review.timestamp).toISOString(),
52
+ costEstimation: review.cost,
53
+ },
54
+ };
55
+ return JSON.stringify(reviewWithMeta, null, 2);
56
+ }
57
+ //# sourceMappingURL=JsonFormatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonFormatter.js","sourceRoot":"","sources":["../../../src/formatters/utils/JsonFormatter.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAYH,oCA2DC;AApED,qDAAwD;AACxD,2DAA4E;AAC5E,6DAAwD;AAExD;;;;GAIG;AACH,SAAgB,YAAY,CAAC,MAAoB;IAC/C,4BAA4B;IAC5B,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAA,qCAAgB,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEjF,8CAA8C;IAC9C,MAAM,gBAAgB,GAAG,IAAA,2BAAe,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEzD,qCAAqC;IACrC,IAAI,oBAAoB,GAAG,MAAM,CAAC,cAAc,CAAC;IACjD,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;QAC9C,IAAI,CAAC;YACH,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,MAAM,kBAAkB,GAAG,IAAA,iCAAa,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE1D,0BAA0B;IAC1B,IAAI,WAAW,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACxC,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,MAAM,CAAC,UAAU,IAAI,WAAW,KAAK,cAAc,EAAE,CAAC;QACxF,WAAW,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,sBAAsB,CAAC;IACvD,CAAC;IAED,+CAA+C;IAC/C,MAAM,gBAAgB,GAAG,IAAA,0CAAsB,EAC7C,WAAW,EACX,SAAS,EACT,SAAS,EACT,MAAM,CAAC,UAAU,EACjB,WAAW,EACX,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,EAC9B,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,cAAc,EACrB,kBAAkB,EAClB,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,aAAa,CACrB,CAAC;IAEF,qDAAqD;IACrD,MAAM,cAAc,GAAG;QACrB,GAAG,MAAM;QACT,OAAO,EAAE,gBAAgB;QACzB,cAAc,EAAE,oBAAoB;QACpC,IAAI,EAAE,gBAAgB;QACtB,mDAAmD;QACnD,QAAQ,EAAE;YACR,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;YACrD,cAAc,EAAE,MAAM,CAAC,IAAI;SAC5B;KACF,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @fileoverview Formatters for Markdown output of code reviews.
3
+ *
4
+ * This module provides functions to format code review results as Markdown,
5
+ * including different formats for structured and unstructured reviews.
6
+ */
7
+ import type { ReviewResult } from '../../types/review';
8
+ import type { StructuredReview } from '../../types/structuredReview';
9
+ /**
10
+ * Format the review as Markdown
11
+ * @param review Review result to format
12
+ * @returns Markdown string
13
+ */
14
+ export declare function formatAsMarkdown(review: ReviewResult): string;
15
+ /**
16
+ * Format a structured review as Markdown
17
+ * @param structuredReview Structured review data
18
+ * @param filePath Path to the reviewed file
19
+ * @param reviewType Type of review performed
20
+ * @param timestamp Timestamp of when the review was generated
21
+ * @param costInfo Cost information formatted as Markdown
22
+ * @param modelInfo Model information
23
+ * @param metadataSection Optional metadata section to include
24
+ * @returns Markdown string
25
+ */
26
+ export declare function formatStructuredReviewAsMarkdown(structuredReview: StructuredReview, filePath: string, reviewType: string, timestamp: string, costInfo: string, modelInfo: string, metadataSection?: string): string;
27
+ /**
28
+ * Format a simple markdown document with just the content
29
+ * Used as fallback when structured data isn't available
30
+ * @param content Content to include in the document
31
+ * @param filePath Path to the reviewed file
32
+ * @param reviewType Type of review performed
33
+ * @param timestamp Timestamp of when the review was generated
34
+ * @param costInfo Cost information formatted as Markdown
35
+ * @param modelInfo Model information
36
+ * @param metadataSection Optional metadata section to include
37
+ * @returns Markdown string
38
+ */
39
+ export declare function formatSimpleMarkdown(content: string, filePath: string, reviewType: string, timestamp: string, costInfo: string, modelInfo: string, metadataSection?: string): string;
40
+ /**
41
+ * Format a schema-based review (with 'review' property) as Markdown
42
+ * @param schemaReview Schema-based review object
43
+ * @param filePath Path to the reviewed file
44
+ * @param reviewType Type of review
45
+ * @param timestamp Timestamp of the review
46
+ * @param costInfo Cost information string
47
+ * @param modelInfo Model information string
48
+ * @param metadataSection Optional metadata section
49
+ * @returns Formatted markdown string
50
+ */
51
+ export declare function formatSchemaBasedReviewAsMarkdown(schemaReview: any, filePath: string, reviewType: string, timestamp: string, costInfo: string, modelInfo: string, metadataSection?: string): string;
@@ -0,0 +1,456 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Formatters for Markdown output of code reviews.
4
+ *
5
+ * This module provides functions to format code review results as Markdown,
6
+ * including different formats for structured and unstructured reviews.
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.formatAsMarkdown = formatAsMarkdown;
13
+ exports.formatStructuredReviewAsMarkdown = formatStructuredReviewAsMarkdown;
14
+ exports.formatSimpleMarkdown = formatSimpleMarkdown;
15
+ exports.formatSchemaBasedReviewAsMarkdown = formatSchemaBasedReviewAsMarkdown;
16
+ const logger_1 = __importDefault(require("../../utils/logger"));
17
+ const sanitizer_1 = require("../../utils/sanitizer");
18
+ const IssueFormatters_1 = require("./IssueFormatters");
19
+ const MetadataFormatter_1 = require("./MetadataFormatter");
20
+ const ModelInfoExtractor_1 = require("./ModelInfoExtractor");
21
+ /**
22
+ * Format the review as Markdown
23
+ * @param review Review result to format
24
+ * @returns Markdown string
25
+ */
26
+ function formatAsMarkdown(review) {
27
+ const { filePath, reviewType, content, timestamp, structuredData } = review;
28
+ // Use costInfo if available, fallback to cost
29
+ const cost = review.costInfo || review.cost;
30
+ // Extract model information
31
+ const { modelInfo } = (0, ModelInfoExtractor_1.extractModelInfo)(review.modelUsed);
32
+ // Format cost information if available
33
+ const costInfo = (0, MetadataFormatter_1.formatCostInfo)(cost);
34
+ // Check if the content is JSON that should be formatted as structured data
35
+ let actualStructuredData = structuredData;
36
+ // For architectural reviews with diagrams, always prefer Markdown format
37
+ const forceMarkdown = reviewType === 'architectural' && review.metadata?.diagramRequested;
38
+ if (!actualStructuredData && content && typeof content === 'string' && !forceMarkdown) {
39
+ // Improved JSON detection - check for both raw JSON and code blocks
40
+ const trimmedContent = content.trim();
41
+ // First, check if this looks like truncated/incomplete JSON
42
+ if (trimmedContent.startsWith('{') && !trimmedContent.includes('}')) {
43
+ logger_1.default.warn('Content appears to be truncated JSON - missing closing brace');
44
+ // Don't try to parse incomplete JSON, just return it as plain text with a warning
45
+ const warningMessage = '⚠️ **Warning**: The AI response appears to be incomplete or truncated. ' +
46
+ 'This may be due to token limits or API issues. Please try again or use a different model.\n\n' +
47
+ '**Partial response received:**\n\n';
48
+ return formatSimpleMarkdown(`${warningMessage}\`\`\`json\n${content}\n\`\`\``, filePath || '', reviewType, timestamp, costInfo, modelInfo);
49
+ }
50
+ // Try to extract JSON from code blocks with improved regex
51
+ // This regex matches code blocks with or without the json language specifier
52
+ const jsonBlockRegex = /```(?:json)?\s*([\s\S]*?)\s*```/g;
53
+ const jsonBlocks = [...trimmedContent.matchAll(jsonBlockRegex)];
54
+ if (jsonBlocks.length > 0) {
55
+ // Try each code block until we find valid JSON
56
+ for (const match of jsonBlocks) {
57
+ try {
58
+ const jsonContent = match[1].trim();
59
+ if (jsonContent) {
60
+ actualStructuredData = JSON.parse(jsonContent);
61
+ logger_1.default.debug('Successfully parsed JSON from code block');
62
+ break;
63
+ }
64
+ }
65
+ catch (e) {
66
+ logger_1.default.debug(`Failed to parse JSON from code block: ${e instanceof Error ? e.message : String(e)}`);
67
+ // Continue to next block
68
+ }
69
+ }
70
+ }
71
+ // If no valid JSON found in code blocks, try the entire content if it looks like JSON
72
+ if (!actualStructuredData && trimmedContent.startsWith('{') && trimmedContent.endsWith('}')) {
73
+ try {
74
+ actualStructuredData = JSON.parse(trimmedContent);
75
+ logger_1.default.debug('Successfully parsed JSON from full content');
76
+ }
77
+ catch (e) {
78
+ logger_1.default.debug(`Failed to parse content as JSON: ${e instanceof Error ? e.message : String(e)}`);
79
+ // Not valid JSON, continue with regular formatting
80
+ }
81
+ }
82
+ }
83
+ // If we have structured data, format it as Markdown
84
+ // But skip JSON parsing for architectural reviews with diagrams - keep original Markdown
85
+ if (actualStructuredData && !forceMarkdown) {
86
+ try {
87
+ let structuredReview;
88
+ if (typeof actualStructuredData === 'string') {
89
+ try {
90
+ structuredReview = JSON.parse(actualStructuredData);
91
+ logger_1.default.debug('Successfully parsed structured data string as JSON');
92
+ }
93
+ catch (parseError) {
94
+ logger_1.default.warn(`Failed to parse structured data as JSON: ${parseError instanceof Error ? parseError.message : String(parseError)}`);
95
+ // If it's not valid JSON, treat it as plain text
96
+ return formatSimpleMarkdown(content, filePath || '', reviewType, timestamp, costInfo, modelInfo);
97
+ }
98
+ }
99
+ else {
100
+ structuredReview = actualStructuredData;
101
+ }
102
+ // Check if the data has a 'review' property (our JSON structure)
103
+ if (structuredReview?.review) {
104
+ return formatSchemaBasedReviewAsMarkdown(structuredReview, filePath || '', reviewType, timestamp, costInfo, modelInfo);
105
+ }
106
+ // Validate the parsed data has expected structure
107
+ if (typeof structuredReview === 'object' && structuredReview !== null) {
108
+ return formatStructuredReviewAsMarkdown(structuredReview, filePath || '', reviewType, timestamp, costInfo, modelInfo);
109
+ }
110
+ logger_1.default.warn('Structured data is not an object:', typeof structuredReview);
111
+ // If the data doesn't have the right structure, fall back to plain text
112
+ return formatSimpleMarkdown(content, filePath || '', reviewType, timestamp, costInfo, modelInfo);
113
+ }
114
+ catch (error) {
115
+ logger_1.default.error(`Error processing structured review data: ${error instanceof Error ? error.message : String(error)}`);
116
+ // Fall back to unstructured format
117
+ return formatSimpleMarkdown(content, filePath || '', reviewType, timestamp, costInfo, modelInfo);
118
+ }
119
+ }
120
+ // Sanitize the content to prevent XSS attacks
121
+ const sanitizedContent = (0, sanitizer_1.sanitizeContent)(content);
122
+ // Use the actual file path for the review title and the reviewed field
123
+ // If filePath is the same as reviewType, is 'consolidated', or is undefined/empty, show the current directory path
124
+ let displayPath = filePath || '';
125
+ if (!displayPath || displayPath === reviewType || displayPath === 'consolidated') {
126
+ // For consolidated reviews, show the full target directory path
127
+ displayPath = `${process.cwd()} (Current Directory)`;
128
+ }
129
+ // Extract model vendor and name from modelInfo (currently unused but may be needed for future features)
130
+ // const { modelVendor, modelName } = extractModelInfoFromString(modelInfo);
131
+ // Create metadata section
132
+ const metadataSection = (0, MetadataFormatter_1.formatMetadataSection)(reviewType, timestamp, modelInfo, cost, review.toolVersion, review.commandOptions, review.detectedLanguage, review.detectedFramework, review.frameworkVersion, review.cssFrameworks);
133
+ return `# Code Review: ${displayPath}
134
+
135
+ > **Review Type**: ${reviewType}
136
+ > **Model**: ${modelInfo}
137
+ > **Generated**: ${new Date(timestamp).toLocaleString()}
138
+
139
+ ---
140
+
141
+ ${metadataSection}
142
+
143
+ ${sanitizedContent}
144
+
145
+ ---${costInfo}
146
+
147
+ *Generated by [cr-aia](https://github.com/filipkustec/cr-aia) using ${modelInfo}*`;
148
+ }
149
+ /**
150
+ * Format a structured review as Markdown
151
+ * @param structuredReview Structured review data
152
+ * @param filePath Path to the reviewed file
153
+ * @param reviewType Type of review performed
154
+ * @param timestamp Timestamp of when the review was generated
155
+ * @param costInfo Cost information formatted as Markdown
156
+ * @param modelInfo Model information
157
+ * @param metadataSection Optional metadata section to include
158
+ * @returns Markdown string
159
+ */
160
+ function formatStructuredReviewAsMarkdown(structuredReview, filePath, reviewType, timestamp, costInfo, modelInfo, metadataSection) {
161
+ // Check if the structuredReview has required properties
162
+ if (!structuredReview || typeof structuredReview !== 'object') {
163
+ console.warn('Invalid structured review data, falling back to simple format');
164
+ return formatSimpleMarkdown('No structured data available. The review may be in an unsupported format.', filePath, reviewType, timestamp, costInfo, modelInfo, metadataSection);
165
+ }
166
+ // Extract properties with fallbacks for missing properties
167
+ const summary = structuredReview.summary || 'No summary provided';
168
+ const issues = Array.isArray(structuredReview.issues) ? structuredReview.issues : [];
169
+ const recommendations = Array.isArray(structuredReview.recommendations)
170
+ ? structuredReview.recommendations
171
+ : [];
172
+ const positiveAspects = Array.isArray(structuredReview.positiveAspects)
173
+ ? structuredReview.positiveAspects
174
+ : [];
175
+ // Extract grade information if available
176
+ const grade = structuredReview.grade;
177
+ const gradeCategories = structuredReview.gradeCategories;
178
+ // Group issues by priority
179
+ const highPriorityIssues = issues.filter((issue) => issue && issue.priority === 'high');
180
+ const mediumPriorityIssues = issues.filter((issue) => issue && issue.priority === 'medium');
181
+ const lowPriorityIssues = issues.filter((issue) => issue && issue.priority === 'low');
182
+ // Format issues by priority
183
+ let issuesMarkdown = '';
184
+ if (highPriorityIssues.length > 0) {
185
+ issuesMarkdown += '### High Priority\n\n';
186
+ issuesMarkdown += highPriorityIssues.map((issue) => (0, IssueFormatters_1.formatIssue)(issue)).join('\n\n');
187
+ issuesMarkdown += '\n\n';
188
+ }
189
+ if (mediumPriorityIssues.length > 0) {
190
+ issuesMarkdown += '### Medium Priority\n\n';
191
+ issuesMarkdown += mediumPriorityIssues.map((issue) => (0, IssueFormatters_1.formatIssue)(issue)).join('\n\n');
192
+ issuesMarkdown += '\n\n';
193
+ }
194
+ if (lowPriorityIssues.length > 0) {
195
+ issuesMarkdown += '### Low Priority\n\n';
196
+ issuesMarkdown += lowPriorityIssues.map((issue) => (0, IssueFormatters_1.formatIssue)(issue)).join('\n\n');
197
+ issuesMarkdown += '\n\n';
198
+ }
199
+ // Format recommendations
200
+ let recommendationsMarkdown = '';
201
+ if (recommendations && recommendations.length > 0) {
202
+ recommendationsMarkdown = '## General Recommendations\n\n';
203
+ recommendationsMarkdown += recommendations.map((rec) => `- ${rec}`).join('\n');
204
+ recommendationsMarkdown += '\n\n';
205
+ }
206
+ // Format positive aspects
207
+ let positiveAspectsMarkdown = '';
208
+ if (positiveAspects && positiveAspects.length > 0) {
209
+ positiveAspectsMarkdown = '## Positive Aspects\n\n';
210
+ positiveAspectsMarkdown += positiveAspects.map((aspect) => `- ${aspect}`).join('\n');
211
+ positiveAspectsMarkdown += '\n\n';
212
+ }
213
+ // Use the actual file path for the review title and the reviewed field
214
+ // If filePath is the same as reviewType, is 'consolidated', or is undefined/empty, show the current directory path
215
+ let displayPath = filePath || '';
216
+ if (!displayPath || displayPath === reviewType || displayPath === 'consolidated') {
217
+ // For consolidated reviews, show the full target directory path
218
+ displayPath = `${process.cwd()} (Current Directory)`;
219
+ }
220
+ // Include metadata section if available
221
+ const metadataContent = metadataSection ? `${metadataSection}\n` : '';
222
+ // Format grade section if available
223
+ let gradeMarkdown = '';
224
+ if (grade) {
225
+ gradeMarkdown = `## Grade: ${grade}\n\n`;
226
+ // Add grade categories if available
227
+ if (gradeCategories) {
228
+ if (gradeCategories.functionality)
229
+ gradeMarkdown += `- **Functionality**: ${gradeCategories.functionality}\n`;
230
+ if (gradeCategories.codeQuality)
231
+ gradeMarkdown += `- **Code Quality**: ${gradeCategories.codeQuality}\n`;
232
+ if (gradeCategories.documentation)
233
+ gradeMarkdown += `- **Documentation**: ${gradeCategories.documentation}\n`;
234
+ if (gradeCategories.testing)
235
+ gradeMarkdown += `- **Testing**: ${gradeCategories.testing}\n`;
236
+ if (gradeCategories.maintainability)
237
+ gradeMarkdown += `- **Maintainability**: ${gradeCategories.maintainability}\n`;
238
+ if (gradeCategories.security)
239
+ gradeMarkdown += `- **Security**: ${gradeCategories.security}\n`;
240
+ if (gradeCategories.performance)
241
+ gradeMarkdown += `- **Performance**: ${gradeCategories.performance}\n`;
242
+ gradeMarkdown += '\n';
243
+ }
244
+ }
245
+ return `# Code Review: ${displayPath}
246
+
247
+ > **Review Type**: ${reviewType}
248
+ > **Model**: ${modelInfo}
249
+ > **Generated**: ${new Date(timestamp).toLocaleString()}
250
+
251
+ ---
252
+
253
+ ${metadataContent}${gradeMarkdown}## Summary
254
+
255
+ ${summary}
256
+
257
+ ## Issues
258
+
259
+ ${issuesMarkdown}
260
+ ${recommendationsMarkdown}${positiveAspectsMarkdown}---${costInfo}
261
+
262
+ *Generated by [cr-aia](https://github.com/filipkustec/cr-aia) using ${modelInfo}*`;
263
+ }
264
+ /**
265
+ * Format a simple markdown document with just the content
266
+ * Used as fallback when structured data isn't available
267
+ * @param content Content to include in the document
268
+ * @param filePath Path to the reviewed file
269
+ * @param reviewType Type of review performed
270
+ * @param timestamp Timestamp of when the review was generated
271
+ * @param costInfo Cost information formatted as Markdown
272
+ * @param modelInfo Model information
273
+ * @param metadataSection Optional metadata section to include
274
+ * @returns Markdown string
275
+ */
276
+ function formatSimpleMarkdown(content, filePath, reviewType, timestamp, costInfo, modelInfo, metadataSection) {
277
+ // Sanitize the content
278
+ const sanitizedContent = (0, sanitizer_1.sanitizeContent)(content);
279
+ // Use the actual file path for the review title and the reviewed field
280
+ let displayPath = filePath || '';
281
+ if (!displayPath || displayPath === reviewType || displayPath === 'consolidated') {
282
+ // For consolidated reviews, show the full target directory path
283
+ displayPath = `${process.cwd()} (Current Directory)`;
284
+ }
285
+ // Extract model vendor and name from modelInfo
286
+ const { modelVendor, modelName } = (0, ModelInfoExtractor_1.extractModelInfoFromString)(modelInfo);
287
+ // Parse cost information if it's available in string form
288
+ const cost = (0, MetadataFormatter_1.parseCostInfo)(costInfo);
289
+ // Include metadata section if available
290
+ const metadataContent = metadataSection ? `${metadataSection}\n` : '';
291
+ // Generate a metadata section with model information if not provided
292
+ const modelMetadata = !metadataSection
293
+ ? `## Metadata
294
+ | Property | Value |
295
+ |----------|-------|
296
+ | Review Type | ${reviewType} |
297
+ | Generated At | ${new Date(timestamp).toLocaleString(undefined, {
298
+ year: 'numeric',
299
+ month: 'long',
300
+ day: 'numeric',
301
+ hour: '2-digit',
302
+ minute: '2-digit',
303
+ second: '2-digit',
304
+ timeZoneName: 'short',
305
+ })} |
306
+ | Model Provider | ${modelVendor} |
307
+ | Model Name | ${modelName} |${cost
308
+ ? `
309
+ | Input Tokens | ${cost.inputTokens.toLocaleString()} |
310
+ | Output Tokens | ${cost.outputTokens.toLocaleString()} |
311
+ | Total Tokens | ${cost.totalTokens.toLocaleString()} |
312
+ | Estimated Cost | ${cost.formattedCost} |`
313
+ : ''}${cost?.passCount
314
+ ? `
315
+ | Multi-pass Review | ${cost.passCount} passes |`
316
+ : ''}
317
+ `
318
+ : '';
319
+ // Include this metadata section in all formats for consistency
320
+ const fullMetadataContent = metadataContent || modelMetadata;
321
+ return `# Code Review: ${displayPath}
322
+
323
+ > **Review Type**: ${reviewType}
324
+ > **Model**: ${modelInfo}
325
+ > **Generated**: ${new Date(timestamp).toLocaleString()}
326
+
327
+ ---
328
+
329
+ ${fullMetadataContent}
330
+
331
+ ${sanitizedContent}
332
+
333
+ ---${costInfo}
334
+
335
+ *Generated by [cr-aia](https://github.com/filipkustec/cr-aia) using ${modelInfo}*`;
336
+ }
337
+ /**
338
+ * Format a schema-based review (with 'review' property) as Markdown
339
+ * @param schemaReview Schema-based review object
340
+ * @param filePath Path to the reviewed file
341
+ * @param reviewType Type of review
342
+ * @param timestamp Timestamp of the review
343
+ * @param costInfo Cost information string
344
+ * @param modelInfo Model information string
345
+ * @param metadataSection Optional metadata section
346
+ * @returns Formatted markdown string
347
+ */
348
+ function formatSchemaBasedReviewAsMarkdown(schemaReview, filePath, reviewType, timestamp, costInfo, modelInfo, metadataSection) {
349
+ // Extract the review object
350
+ const review = schemaReview.review;
351
+ if (!review || typeof review !== 'object') {
352
+ return formatSimpleMarkdown(JSON.stringify(schemaReview, null, 2), filePath, reviewType, timestamp, costInfo, modelInfo, metadataSection);
353
+ }
354
+ // Extract files and issues
355
+ const files = review.files || [];
356
+ const summary = review.summary || {};
357
+ // Create issues sections by priority
358
+ const highPriorityIssues = [];
359
+ const mediumPriorityIssues = [];
360
+ const lowPriorityIssues = [];
361
+ // Collect all issues from all files
362
+ files.forEach((file) => {
363
+ const issues = file.issues || [];
364
+ issues.forEach((issue) => {
365
+ // Add file path to issue for context
366
+ const issueWithFile = { ...issue, filePath: file.filePath };
367
+ if (issue.priority === 'HIGH') {
368
+ highPriorityIssues.push(issueWithFile);
369
+ }
370
+ else if (issue.priority === 'MEDIUM') {
371
+ mediumPriorityIssues.push(issueWithFile);
372
+ }
373
+ else if (issue.priority === 'LOW') {
374
+ lowPriorityIssues.push(issueWithFile);
375
+ }
376
+ });
377
+ });
378
+ // Format the metadata section
379
+ let displayPath = filePath || '';
380
+ if (!displayPath || displayPath === reviewType || displayPath === 'consolidated') {
381
+ displayPath = `${process.cwd()} (Current Directory)`;
382
+ }
383
+ // Extract model vendor and name from modelInfo
384
+ const { modelVendor, modelName } = (0, ModelInfoExtractor_1.extractModelInfoFromString)(modelInfo);
385
+ // Build the metadata section if not provided
386
+ if (!metadataSection) {
387
+ const formattedDate = new Date(timestamp).toLocaleString(undefined, {
388
+ year: 'numeric',
389
+ month: 'long',
390
+ day: 'numeric',
391
+ hour: '2-digit',
392
+ minute: '2-digit',
393
+ second: '2-digit',
394
+ timeZoneName: 'short',
395
+ });
396
+ metadataSection = `## Metadata
397
+ | Property | Value |
398
+ |----------|-------|
399
+ | Review Type | ${reviewType} |
400
+ | Generated At | ${formattedDate} |
401
+ | Model Provider | ${modelVendor} |
402
+ | Model Name | ${modelName} |`;
403
+ }
404
+ let output = `# Code Review: ${displayPath}
405
+
406
+ > **Review Type**: ${reviewType}
407
+ > **Model**: ${modelInfo}
408
+ > **Generated**: ${new Date(timestamp).toLocaleString()}
409
+
410
+ ---
411
+
412
+ ${metadataSection}
413
+
414
+ ## Review Summary
415
+
416
+ `;
417
+ // Add summary counts
418
+ if (summary.totalIssues > 0) {
419
+ output += `Total issues found: **${summary.totalIssues}**
420
+ - High Priority: ${summary.highPriorityIssues || 0}
421
+ - Medium Priority: ${summary.mediumPriorityIssues || 0}
422
+ - Low Priority: ${summary.lowPriorityIssues || 0}
423
+
424
+ `;
425
+ }
426
+ else {
427
+ output += `No issues found. The code looks good!\n\n`;
428
+ }
429
+ // Add issues by priority
430
+ if (highPriorityIssues.length > 0) {
431
+ output += `## High Priority Issues\n\n`;
432
+ highPriorityIssues.forEach((issue, index) => {
433
+ output += (0, IssueFormatters_1.formatSchemaIssue)(issue, index + 1);
434
+ });
435
+ }
436
+ if (mediumPriorityIssues.length > 0) {
437
+ output += `## Medium Priority Issues\n\n`;
438
+ mediumPriorityIssues.forEach((issue, index) => {
439
+ output += (0, IssueFormatters_1.formatSchemaIssue)(issue, index + 1);
440
+ });
441
+ }
442
+ if (lowPriorityIssues.length > 0) {
443
+ output += `## Low Priority Issues\n\n`;
444
+ lowPriorityIssues.forEach((issue, index) => {
445
+ output += (0, IssueFormatters_1.formatSchemaIssue)(issue, index + 1);
446
+ });
447
+ }
448
+ // Add cost information at the end
449
+ if (costInfo) {
450
+ output += `\n${costInfo}\n`;
451
+ }
452
+ // Add footer with tool information
453
+ output += `\n*Generated by [cr-aia](https://github.com/filipkustec/cr-aia) using ${modelInfo}*`;
454
+ return output;
455
+ }
456
+ //# sourceMappingURL=MarkdownFormatters.js.map