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,76 +0,0 @@
1
- /**
2
- * @fileoverview File writing utilities.
3
- *
4
- * This module provides utilities for writing files and creating directories,
5
- * with error handling and logging.
6
- */
7
-
8
- import fs from 'node:fs/promises';
9
- import path from 'node:path';
10
- import logger from './logger';
11
- import { pathExists } from './pathValidator';
12
-
13
- /**
14
- * Create a directory if it doesn't exist
15
- * @param dirPath Path to the directory
16
- * @returns Promise resolving when the directory is created or already exists
17
- */
18
- export async function ensureDirectoryExists(dirPath: string): Promise<void> {
19
- try {
20
- if (!pathExists(dirPath)) {
21
- await fs.mkdir(dirPath, { recursive: true });
22
- logger.debug(`Created directory: ${dirPath}`);
23
- }
24
- } catch (error) {
25
- logger.error(
26
- `Error creating directory ${dirPath}: ${error instanceof Error ? error.message : String(error)}`,
27
- );
28
- throw error;
29
- }
30
- }
31
-
32
- /**
33
- * Write content to a file, creating the directory if needed
34
- * @param filePath Path to the file
35
- * @param content Content to write
36
- * @returns Promise resolving when the file is written
37
- */
38
- export async function writeFile(filePath: string, content: string): Promise<void> {
39
- try {
40
- // Ensure the directory exists
41
- const dirPath = path.dirname(filePath);
42
- await ensureDirectoryExists(dirPath);
43
-
44
- // Write the file
45
- await fs.writeFile(filePath, content);
46
- logger.debug(`Wrote file: ${filePath}`);
47
- } catch (error) {
48
- logger.error(
49
- `Error writing file ${filePath}: ${error instanceof Error ? error.message : String(error)}`,
50
- );
51
- throw error;
52
- }
53
- }
54
-
55
- /**
56
- * Append content to a file, creating the file if it doesn't exist
57
- * @param filePath Path to the file
58
- * @param content Content to append
59
- * @returns Promise resolving when the content is appended
60
- */
61
- export async function appendFile(filePath: string, content: string): Promise<void> {
62
- try {
63
- // Ensure the directory exists
64
- const dirPath = path.dirname(filePath);
65
- await ensureDirectoryExists(dirPath);
66
-
67
- // Append to the file
68
- await fs.appendFile(filePath, content);
69
- logger.debug(`Appended to file: ${filePath}`);
70
- } catch (error) {
71
- logger.error(
72
- `Error appending to file ${filePath}: ${error instanceof Error ? error.message : String(error)}`,
73
- );
74
- throw error;
75
- }
76
- }
@@ -1,97 +0,0 @@
1
- /**
2
- * @fileoverview Path generation utilities.
3
- *
4
- * This module provides utilities for generating file and directory paths,
5
- * including versioned output paths for review results.
6
- */
7
-
8
- import path from 'node:path';
9
- import { ensureDirectoryExists } from './FileWriter';
10
- import { pathExists } from './pathValidator';
11
-
12
- /**
13
- * Generate a versioned output path for a file
14
- * @param baseDir Base directory for the output
15
- * @param prefix Prefix for the filename
16
- * @param extension File extension (including the dot)
17
- * @param modelName Name of the model used for the review
18
- * @param targetName Name of the target file or directory
19
- * @returns Promise resolving to the generated path
20
- */
21
- export async function generateVersionedOutputPath(
22
- baseDir: string,
23
- prefix: string,
24
- extension: string,
25
- modelName: string,
26
- targetName: string,
27
- ): Promise<string> {
28
- // Ensure the output directory exists
29
- await ensureDirectoryExists(baseDir);
30
-
31
- // Generate a timestamp for the filename
32
- const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
33
-
34
- // Clean up the model name for use in a filename
35
- const cleanModelName = modelName.replace(/[^a-zA-Z0-9-]/g, '-');
36
-
37
- // Clean up the target name for use in a filename
38
- let cleanTargetName = targetName.replace(/[^a-zA-Z0-9-]/g, '-');
39
-
40
- // Handle special cases for target names
41
- if (targetName === '.' || cleanTargetName === '-' || cleanTargetName === '') {
42
- cleanTargetName = 'current-dir';
43
- }
44
-
45
- // Remove any sequential dashes
46
- cleanTargetName = cleanTargetName.replace(/-+/g, '-').replace(/^-|-$/g, '');
47
-
48
- // Generate the filename
49
- const filename = `${prefix}-${cleanTargetName}-${cleanModelName}-${timestamp}${extension}`;
50
-
51
- // Return the full path
52
- return path.join(baseDir, filename);
53
- }
54
-
55
- /**
56
- * Generate an output path for a file with a unique name
57
- * @param baseDir Base directory for the output
58
- * @param filename Desired filename
59
- * @returns Promise resolving to the generated path
60
- */
61
- export async function generateUniqueOutputPath(baseDir: string, filename: string): Promise<string> {
62
- // Ensure the output directory exists
63
- await ensureDirectoryExists(baseDir);
64
-
65
- // Generate the initial path
66
- let outputPath = path.join(baseDir, filename);
67
-
68
- // If the file already exists, add a number to the filename
69
- if (await pathExists(outputPath)) {
70
- const extension = path.extname(filename);
71
- const nameWithoutExtension = path.basename(filename, extension);
72
- let counter = 1;
73
-
74
- // Try different numbers until we find an available filename
75
- while (await pathExists(outputPath)) {
76
- outputPath = path.join(baseDir, `${nameWithoutExtension}-${counter}${extension}`);
77
- counter++;
78
- }
79
- }
80
-
81
- return outputPath;
82
- }
83
-
84
- /**
85
- * Generate a temporary file path
86
- * @param prefix Prefix for the filename
87
- * @param extension File extension (including the dot)
88
- * @returns Generated temporary file path
89
- */
90
- export function generateTempFilePath(prefix: string, extension: string): string {
91
- const timestamp = Date.now();
92
- const randomPart = Math.floor(Math.random() * 10000);
93
- return path.join(
94
- process.env.TEMP || process.env.TMP || '/tmp',
95
- `${prefix}-${timestamp}-${randomPart}${extension}`,
96
- );
97
- }
@@ -1,14 +0,0 @@
1
- import logger from '../logger';
2
-
3
- export function hasApiKey(provider: string): boolean {
4
- return provider.toLowerCase() === 'openrouter';
5
- }
6
-
7
- export function getApiKeyType(): 'OpenRouter' | null {
8
- logger.debug('getApiKeyType: defaulting to OpenRouter proxy');
9
- return 'OpenRouter';
10
- }
11
-
12
- export function getApiKeyTypeLowerCase(): 'openrouter' | 'none' {
13
- return 'openrouter';
14
- }
@@ -1,287 +0,0 @@
1
- /**
2
- * @fileoverview API error handling utilities.
3
- *
4
- * This module provides standardized error handling for API calls,
5
- * including custom error classes for different types of API errors,
6
- * utility functions for handling fetch responses, and logging helpers.
7
- */
8
-
9
- import logger from './logger';
10
-
11
- /**
12
- * Base class for API errors
13
- *
14
- * This class extends the standard Error class to provide additional context
15
- * for API-related errors. It includes properties for the HTTP status code
16
- * and additional error details from the API response.
17
- *
18
- * All specific API error types (like AuthenticationError, RateLimitError, etc.)
19
- * extend this base class to provide a consistent error handling interface.
20
- */
21
- export class ApiError extends Error {
22
- constructor(
23
- message: string,
24
- public statusCode?: number,
25
- public details?: unknown,
26
- ) {
27
- super(message);
28
- this.name = 'ApiError';
29
- // Ensure instanceof works correctly in ES5
30
- Object.setPrototypeOf(this, ApiError.prototype);
31
- }
32
- }
33
-
34
- /**
35
- * Error thrown when API rate limits are exceeded
36
- */
37
- export class RateLimitError extends ApiError {
38
- constructor(
39
- message: string,
40
- public retryAfter?: number,
41
- statusCode?: number,
42
- details?: unknown,
43
- ) {
44
- super(message, statusCode, details);
45
- this.name = 'RateLimitError';
46
- // Ensure instanceof works correctly in ES5
47
- Object.setPrototypeOf(this, RateLimitError.prototype);
48
- }
49
- }
50
-
51
- /**
52
- * Error thrown when authentication fails
53
- */
54
- export class AuthenticationError extends ApiError {
55
- constructor(message: string, statusCode?: number, details?: unknown) {
56
- super(message, statusCode, details);
57
- this.name = 'AuthenticationError';
58
- // Ensure instanceof works correctly in ES5
59
- Object.setPrototypeOf(this, AuthenticationError.prototype);
60
- }
61
- }
62
-
63
- /**
64
- * Error thrown when a resource is not found
65
- */
66
- export class NotFoundError extends ApiError {
67
- constructor(message: string, statusCode?: number, details?: unknown) {
68
- super(message, statusCode, details);
69
- this.name = 'NotFoundError';
70
- // Ensure instanceof works correctly in ES5
71
- Object.setPrototypeOf(this, NotFoundError.prototype);
72
- }
73
- }
74
-
75
- /**
76
- * Error thrown when the API returns an invalid response format
77
- */
78
- export class InvalidResponseError extends ApiError {
79
- constructor(message: string, statusCode?: number, details?: unknown) {
80
- super(message, statusCode, details);
81
- this.name = 'InvalidResponseError';
82
- // Ensure instanceof works correctly in ES5
83
- Object.setPrototypeOf(this, InvalidResponseError.prototype);
84
- }
85
- }
86
-
87
- /**
88
- * Error thrown when token limit is exceeded
89
- */
90
- export class TokenLimitError extends ApiError {
91
- constructor(
92
- message: string,
93
- public tokenCount?: number,
94
- public tokenLimit?: number,
95
- statusCode?: number,
96
- details?: unknown,
97
- ) {
98
- super(message, statusCode, details);
99
- this.name = 'TokenLimitError';
100
- // Ensure instanceof works correctly in ES5
101
- Object.setPrototypeOf(this, TokenLimitError.prototype);
102
- }
103
- }
104
-
105
- /**
106
- * Handle a fetch response and throw appropriate errors if needed
107
- *
108
- * This function processes a fetch response and throws appropriate error types
109
- * based on the HTTP status code and response body. It handles common API error
110
- * scenarios like authentication failures, rate limiting, and resource not found.
111
- *
112
- * The function attempts to parse the response body as JSON if possible, or falls
113
- * back to text if not. It then constructs an appropriate error object with
114
- * detailed information about what went wrong.
115
- *
116
- * @param response The fetch response object from an API call
117
- * @param apiName The name of the API being called (for logging and error messages)
118
- * @returns The original response object if the response is ok (status 200-299)
119
- * @throws AuthenticationError for 401/403 status codes (authentication/authorization issues)
120
- * @throws NotFoundError for 404 status codes (resource not found)
121
- * @throws RateLimitError for 429 status codes (rate limit exceeded)
122
- * @throws ApiError for all other error status codes
123
- * @example
124
- * try {
125
- * const response = await fetch('https://api.example.com/data');
126
- * await handleFetchResponse(response, 'ExampleAPI');
127
- * // Process successful response
128
- * } catch (error) {
129
- * // Error is already logged and has the appropriate type
130
- * if (error instanceof RateLimitError) {
131
- * // Handle rate limiting specifically
132
- * }
133
- * }
134
- */
135
- export async function handleFetchResponse(response: Response, apiName: string): Promise<Response> {
136
- if (!response.ok) {
137
- // Try to get the error body
138
- let errorBody: string | object = 'Unknown error';
139
- try {
140
- // Clone the response so we can read it multiple times if needed
141
- // const clonedResponse = response.clone();
142
-
143
- // Log all headers for debugging
144
- console.log(`[DEBUG] ${apiName} API response headers:`);
145
- response.headers.forEach((value: string, name: string) => {
146
- console.log(`[DEBUG] ${name}: ${value}`);
147
- });
148
-
149
- // Try to parse as JSON first
150
- const contentType = response.headers.get('content-type');
151
- console.log(`[DEBUG] Content-Type: ${contentType}`);
152
-
153
- if (contentType?.includes('application/json')) {
154
- errorBody = await response.json();
155
- console.log(`[DEBUG] JSON error body: ${JSON.stringify(errorBody)}`);
156
- } else {
157
- errorBody = await response.text();
158
- console.log(`[DEBUG] Text error body: ${errorBody}`);
159
- }
160
- } catch (e) {
161
- // Log body read errors
162
- console.log(
163
- `[DEBUG] Failed to read error body: ${e instanceof Error ? e.message : String(e)}`,
164
- );
165
- logger.debug(`Failed to read error body: ${e instanceof Error ? e.message : String(e)}`);
166
- }
167
-
168
- // Create appropriate error based on status code
169
- const errorMessage = `${apiName} API error! Status: ${response.status}, Response: ${
170
- typeof errorBody === 'string' ? errorBody : JSON.stringify(errorBody)
171
- }`;
172
-
173
- // Log the error
174
- logger.error(errorMessage);
175
-
176
- // Throw appropriate error based on status code
177
- if (response.status === 401 || response.status === 403) {
178
- throw new AuthenticationError(errorMessage, response.status, errorBody);
179
- }
180
- if (response.status === 404) {
181
- throw new NotFoundError(errorMessage, response.status, errorBody);
182
- }
183
- if (response.status === 429) {
184
- // Check for retry-after header
185
- const retryAfter = response.headers.get('retry-after');
186
- const retryAfterSeconds = retryAfter ? parseInt(retryAfter, 10) : undefined;
187
-
188
- throw new RateLimitError(errorMessage, retryAfterSeconds, response.status, errorBody);
189
- }
190
- throw new ApiError(errorMessage, response.status, errorBody);
191
- }
192
-
193
- return response;
194
- }
195
-
196
- /**
197
- * Safely parse JSON from a response
198
- * @param response The fetch response object
199
- * @param apiName The name of the API being called (for logging)
200
- * @returns The parsed JSON data
201
- * @throws InvalidResponseError if the response cannot be parsed as JSON
202
- */
203
- export async function safeJsonParse<T>(response: Response | any, apiName: string): Promise<T> {
204
- try {
205
- return (await response.json()) as T;
206
- } catch (error) {
207
- const errorMessage = `Failed to parse ${apiName} API response as JSON: ${
208
- error instanceof Error ? error.message : String(error)
209
- }`;
210
- logger.error(errorMessage);
211
- throw new InvalidResponseError(errorMessage);
212
- }
213
- }
214
-
215
- /**
216
- * Log an API error with appropriate context and formatting
217
- *
218
- * This function logs API errors with rich context information to help with debugging
219
- * and troubleshooting. It detects the specific type of error and formats the log
220
- * message accordingly, providing different information based on the error type.
221
- *
222
- * The function handles various error types including:
223
- * - Rate limit errors (with retry information)
224
- * - Authentication errors
225
- * - Resource not found errors
226
- * - Invalid response errors
227
- * - General API errors
228
- * - Unexpected errors
229
- *
230
- * @param error The error object that was thrown
231
- * @param context Object containing context information:
232
- * - apiName: The name of the API service (e.g., 'OpenAI', 'Anthropic')
233
- * - operation: The operation being performed (e.g., 'generating review')
234
- * - url: Optional URL for the request that failed
235
- * @example
236
- * try {
237
- * // API call that might fail
238
- * } catch (error) {
239
- * logApiError(error, {
240
- * apiName: 'OpenAI',
241
- * operation: 'generating code review',
242
- * url: 'https://api.openai.com/v1/chat/completions'
243
- * });
244
- * }
245
- */
246
- export function logApiError(
247
- error: unknown,
248
- context: { operation: string; url?: string; apiName: string },
249
- ): void {
250
- const { operation, url, apiName } = context;
251
-
252
- if (error instanceof RateLimitError) {
253
- logger.warn(
254
- `Rate limit exceeded for ${apiName} API during ${operation}${
255
- url ? ` (${url})` : ''
256
- }. Retry after: ${error.retryAfter || 'unknown'} seconds.`,
257
- );
258
- } else if (error instanceof AuthenticationError) {
259
- logger.error(
260
- `Authentication failed for ${apiName} API during ${operation}${
261
- url ? ` (${url})` : ''
262
- }. Check your API key.`,
263
- );
264
- } else if (error instanceof NotFoundError) {
265
- logger.error(
266
- `Resource not found on ${apiName} API during ${operation}${
267
- url ? ` (${url})` : ''
268
- }. Check your request parameters.`,
269
- );
270
- } else if (error instanceof InvalidResponseError) {
271
- logger.error(
272
- `Invalid response from ${apiName} API during ${operation}${
273
- url ? ` (${url})` : ''
274
- }. The API may have changed or returned an unexpected format.`,
275
- );
276
- } else if (error instanceof ApiError) {
277
- logger.error(
278
- `API error from ${apiName} during ${operation}${url ? ` (${url})` : ''}: ${error.message}`,
279
- );
280
- } else {
281
- logger.error(
282
- `Unexpected error during ${apiName} API ${operation}${
283
- url ? ` (${url})` : ''
284
- }: ${error instanceof Error ? error.message : String(error)}`,
285
- );
286
- }
287
- }