codereview-aia 0.1.3 → 0.2.0

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 (558) 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 +580 -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 +184 -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 +276 -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 +381 -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/batchStreamer.d.ts +54 -0
  193. package/dist/runtime/preprod/batchStreamer.js +159 -0
  194. package/dist/runtime/preprod/batchStreamer.js.map +1 -0
  195. package/dist/runtime/preprod/crEdgeServiceClient.d.ts +30 -0
  196. package/dist/runtime/preprod/crEdgeServiceClient.js +133 -0
  197. package/dist/runtime/preprod/crEdgeServiceClient.js.map +1 -0
  198. package/dist/runtime/preprod/progressTracker.d.ts +21 -0
  199. package/dist/runtime/preprod/progressTracker.js +80 -0
  200. package/dist/runtime/preprod/progressTracker.js.map +1 -0
  201. package/dist/runtime/preprod/webCheck.d.ts +1 -0
  202. package/dist/runtime/preprod/webCheck.js +102 -0
  203. package/dist/runtime/preprod/webCheck.js.map +1 -0
  204. package/dist/runtime/proxyConfig.d.ts +6 -0
  205. package/dist/runtime/proxyConfig.js +86 -0
  206. package/dist/runtime/proxyConfig.js.map +1 -0
  207. package/dist/runtime/proxyEnvironment.d.ts +3 -0
  208. package/dist/runtime/proxyEnvironment.js +63 -0
  209. package/dist/runtime/proxyEnvironment.js.map +1 -0
  210. package/dist/runtime/reportMerge.d.ts +30 -0
  211. package/dist/runtime/reportMerge.js +70 -0
  212. package/dist/runtime/reportMerge.js.map +1 -0
  213. package/dist/runtime/reporting/markdownReportBuilder.d.ts +17 -0
  214. package/dist/runtime/reporting/markdownReportBuilder.js +154 -0
  215. package/dist/runtime/reporting/markdownReportBuilder.js.map +1 -0
  216. package/dist/runtime/reporting/reportDataCollector.d.ts +31 -0
  217. package/dist/runtime/reporting/reportDataCollector.js +170 -0
  218. package/dist/runtime/reporting/reportDataCollector.js.map +1 -0
  219. package/dist/runtime/reporting/summaryGenerator.d.ts +10 -0
  220. package/dist/runtime/reporting/summaryGenerator.js +67 -0
  221. package/dist/runtime/reporting/summaryGenerator.js.map +1 -0
  222. package/dist/runtime/reviewPipeline.d.ts +61 -0
  223. package/dist/runtime/reviewPipeline.js +231 -0
  224. package/dist/runtime/reviewPipeline.js.map +1 -0
  225. package/dist/runtime/runAiCodeReview.d.ts +36 -0
  226. package/dist/runtime/runAiCodeReview.js +409 -0
  227. package/dist/runtime/runAiCodeReview.js.map +1 -0
  228. package/dist/runtime/runtimeConfig.d.ts +4 -0
  229. package/dist/runtime/runtimeConfig.js +7 -0
  230. package/dist/runtime/runtimeConfig.js.map +1 -0
  231. package/dist/runtime/ui/Layout.d.ts +11 -0
  232. package/dist/runtime/ui/Layout.js +47 -0
  233. package/dist/runtime/ui/Layout.js.map +1 -0
  234. package/dist/runtime/ui/RuntimeApp.d.ts +6 -0
  235. package/dist/runtime/ui/RuntimeApp.js +275 -0
  236. package/dist/runtime/ui/RuntimeApp.js.map +1 -0
  237. package/dist/runtime/ui/inkModules.d.ts +10 -0
  238. package/dist/runtime/ui/inkModules.js +63 -0
  239. package/dist/runtime/ui/inkModules.js.map +1 -0
  240. package/dist/runtime/ui/screens/AuthScreen.d.ts +6 -0
  241. package/dist/runtime/ui/screens/AuthScreen.js +67 -0
  242. package/dist/runtime/ui/screens/AuthScreen.js.map +1 -0
  243. package/dist/runtime/ui/screens/ModeSelection.d.ts +11 -0
  244. package/dist/runtime/ui/screens/ModeSelection.js +169 -0
  245. package/dist/runtime/ui/screens/ModeSelection.js.map +1 -0
  246. package/dist/runtime/ui/screens/ProgressScreen.d.ts +21 -0
  247. package/dist/runtime/ui/screens/ProgressScreen.js +86 -0
  248. package/dist/runtime/ui/screens/ProgressScreen.js.map +1 -0
  249. package/dist/runtime/ui/screens/ResultsScreen.d.ts +7 -0
  250. package/dist/runtime/ui/screens/ResultsScreen.js +34 -0
  251. package/dist/runtime/ui/screens/ResultsScreen.js.map +1 -0
  252. package/dist/strategies/ArchitecturalReviewStrategy.d.ts +29 -0
  253. package/dist/strategies/ArchitecturalReviewStrategy.js +42 -0
  254. package/dist/strategies/ArchitecturalReviewStrategy.js.map +1 -0
  255. package/dist/strategies/CodingTestReviewStrategy.d.ts +194 -0
  256. package/dist/strategies/CodingTestReviewStrategy.js +681 -0
  257. package/dist/strategies/CodingTestReviewStrategy.js.map +1 -0
  258. package/dist/strategies/ConsolidatedReviewStrategy.d.ts +25 -0
  259. package/dist/strategies/ConsolidatedReviewStrategy.js +45 -0
  260. package/dist/strategies/ConsolidatedReviewStrategy.js.map +1 -0
  261. package/dist/strategies/ExtractPatternsReviewStrategy.d.ts +30 -0
  262. package/dist/strategies/ExtractPatternsReviewStrategy.js +51 -0
  263. package/dist/strategies/ExtractPatternsReviewStrategy.js.map +1 -0
  264. package/dist/strategies/MultiPassReviewStrategy.d.ts +86 -0
  265. package/dist/strategies/MultiPassReviewStrategy.js +590 -0
  266. package/dist/strategies/MultiPassReviewStrategy.js.map +1 -0
  267. package/dist/strategies/ReviewStrategy.d.ts +45 -0
  268. package/dist/strategies/ReviewStrategy.js +24 -0
  269. package/dist/strategies/ReviewStrategy.js.map +1 -0
  270. package/dist/strategies/StrategyFactory.d.ts +19 -0
  271. package/dist/strategies/StrategyFactory.js +72 -0
  272. package/dist/strategies/StrategyFactory.js.map +1 -0
  273. package/{src/strategies/index.ts → dist/strategies/index.d.ts} +0 -1
  274. package/dist/strategies/index.js +30 -0
  275. package/dist/strategies/index.js.map +1 -0
  276. package/dist/tokenizers/baseTokenizer.d.ts +25 -0
  277. package/dist/tokenizers/baseTokenizer.js +48 -0
  278. package/dist/tokenizers/baseTokenizer.js.map +1 -0
  279. package/dist/tokenizers/gptTokenizer.d.ts +7 -0
  280. package/dist/tokenizers/gptTokenizer.js +28 -0
  281. package/dist/tokenizers/gptTokenizer.js.map +1 -0
  282. package/{src/tokenizers/index.ts → dist/tokenizers/index.d.ts} +0 -1
  283. package/dist/tokenizers/index.js +24 -0
  284. package/dist/tokenizers/index.js.map +1 -0
  285. package/dist/types/apiResponses.d.ts +39 -0
  286. package/dist/types/apiResponses.js +9 -0
  287. package/dist/types/apiResponses.js.map +1 -0
  288. package/dist/types/cli.d.ts +22 -0
  289. package/dist/types/cli.js +3 -0
  290. package/dist/types/cli.js.map +1 -0
  291. package/{src/types/common.ts → dist/types/common.d.ts} +2 -19
  292. package/dist/types/common.js +14 -0
  293. package/dist/types/common.js.map +1 -0
  294. package/dist/types/configuration.d.ts +682 -0
  295. package/dist/types/configuration.js +65 -0
  296. package/dist/types/configuration.js.map +1 -0
  297. package/dist/types/review.d.ts +318 -0
  298. package/dist/types/review.js +8 -0
  299. package/dist/types/review.js.map +1 -0
  300. package/dist/types/reviewSchema.d.ts +543 -0
  301. package/{src/types/reviewSchema.ts → dist/types/reviewSchema.js} +44 -104
  302. package/dist/types/reviewSchema.js.map +1 -0
  303. package/dist/types/structuredReview.d.ts +119 -0
  304. package/dist/types/structuredReview.js +6 -0
  305. package/dist/types/structuredReview.js.map +1 -0
  306. package/dist/types/tokenAnalysis.d.ts +44 -0
  307. package/dist/types/tokenAnalysis.js +4 -0
  308. package/dist/types/tokenAnalysis.js.map +1 -0
  309. package/dist/utils/FileReader.d.ts +33 -0
  310. package/dist/utils/FileReader.js +88 -0
  311. package/dist/utils/FileReader.js.map +1 -0
  312. package/dist/utils/FileWriter.d.ts +26 -0
  313. package/dist/utils/FileWriter.js +76 -0
  314. package/dist/utils/FileWriter.js.map +1 -0
  315. package/dist/utils/PathGenerator.d.ts +30 -0
  316. package/dist/utils/PathGenerator.js +82 -0
  317. package/dist/utils/PathGenerator.js.map +1 -0
  318. package/dist/utils/api/apiUtils.d.ts +3 -0
  319. package/dist/utils/api/apiUtils.js +20 -0
  320. package/dist/utils/api/apiUtils.js.map +1 -0
  321. package/dist/utils/api/index.js +18 -0
  322. package/dist/utils/api/index.js.map +1 -0
  323. package/dist/utils/apiErrorHandler.d.ts +130 -0
  324. package/dist/utils/apiErrorHandler.js +256 -0
  325. package/dist/utils/apiErrorHandler.js.map +1 -0
  326. package/dist/utils/ciDataCollector.d.ts +51 -0
  327. package/dist/utils/ciDataCollector.js +197 -0
  328. package/dist/utils/ciDataCollector.js.map +1 -0
  329. package/dist/utils/codingTestConfigLoader.d.ts +66 -0
  330. package/dist/utils/codingTestConfigLoader.js +420 -0
  331. package/dist/utils/codingTestConfigLoader.js.map +1 -0
  332. package/dist/utils/dependencies/aiDependencyAnalyzer.d.ts +30 -0
  333. package/dist/utils/dependencies/aiDependencyAnalyzer.js +343 -0
  334. package/dist/utils/dependencies/aiDependencyAnalyzer.js.map +1 -0
  335. package/dist/utils/detection/frameworkDetector.d.ts +43 -0
  336. package/dist/utils/detection/frameworkDetector.js +850 -0
  337. package/dist/utils/detection/frameworkDetector.js.map +1 -0
  338. package/{src/utils/detection/index.ts → dist/utils/detection/index.d.ts} +0 -1
  339. package/dist/utils/detection/index.js +28 -0
  340. package/dist/utils/detection/index.js.map +1 -0
  341. package/dist/utils/detection/projectTypeDetector.d.ts +27 -0
  342. package/dist/utils/detection/projectTypeDetector.js +469 -0
  343. package/dist/utils/detection/projectTypeDetector.js.map +1 -0
  344. package/dist/utils/diagramGenerator.d.ts +49 -0
  345. package/dist/utils/diagramGenerator.js +218 -0
  346. package/dist/utils/diagramGenerator.js.map +1 -0
  347. package/dist/utils/errorLogger.d.ts +24 -0
  348. package/dist/utils/errorLogger.js +59 -0
  349. package/dist/utils/errorLogger.js.map +1 -0
  350. package/dist/utils/estimationUtils.d.ts +139 -0
  351. package/dist/utils/estimationUtils.js +329 -0
  352. package/dist/utils/estimationUtils.js.map +1 -0
  353. package/dist/utils/fileFilters.d.ts +72 -0
  354. package/dist/utils/fileFilters.js +338 -0
  355. package/dist/utils/fileFilters.js.map +1 -0
  356. package/dist/utils/fileSystem.d.ts +22 -0
  357. package/dist/utils/fileSystem.js +45 -0
  358. package/dist/utils/fileSystem.js.map +1 -0
  359. package/{src/utils/index.ts → dist/utils/index.d.ts} +0 -14
  360. package/dist/utils/index.js +52 -0
  361. package/dist/utils/index.js.map +1 -0
  362. package/dist/utils/logger.d.ts +77 -0
  363. package/dist/utils/logger.js +271 -0
  364. package/dist/utils/logger.js.map +1 -0
  365. package/dist/utils/pathValidator.d.ts +40 -0
  366. package/dist/utils/pathValidator.js +98 -0
  367. package/dist/utils/pathValidator.js.map +1 -0
  368. package/{src/utils/priorityFilter.ts → dist/utils/priorityFilter.d.ts} +1 -26
  369. package/dist/utils/priorityFilter.js +54 -0
  370. package/dist/utils/priorityFilter.js.map +1 -0
  371. package/dist/utils/projectDocs.d.ts +47 -0
  372. package/dist/utils/projectDocs.js +158 -0
  373. package/dist/utils/projectDocs.js.map +1 -0
  374. package/dist/utils/promptPaths.d.ts +6 -0
  375. package/dist/utils/promptPaths.js +33 -0
  376. package/dist/utils/promptPaths.js.map +1 -0
  377. package/dist/utils/promptTemplateManager.d.ts +34 -0
  378. package/dist/utils/promptTemplateManager.js +141 -0
  379. package/dist/utils/promptTemplateManager.js.map +1 -0
  380. package/dist/utils/review/consolidateReview.d.ts +15 -0
  381. package/dist/utils/review/consolidateReview.js +481 -0
  382. package/dist/utils/review/consolidateReview.js.map +1 -0
  383. package/dist/utils/review/fixDisplay.d.ts +20 -0
  384. package/dist/utils/review/fixDisplay.js +84 -0
  385. package/dist/utils/review/fixDisplay.js.map +1 -0
  386. package/dist/utils/review/fixImplementation.d.ts +28 -0
  387. package/dist/utils/review/fixImplementation.js +60 -0
  388. package/dist/utils/review/fixImplementation.js.map +1 -0
  389. package/dist/utils/review/index.d.ts +13 -0
  390. package/dist/utils/review/index.js +50 -0
  391. package/dist/utils/review/index.js.map +1 -0
  392. package/dist/utils/review/interactiveProcessing.d.ts +25 -0
  393. package/dist/utils/review/interactiveProcessing.js +251 -0
  394. package/dist/utils/review/interactiveProcessing.js.map +1 -0
  395. package/dist/utils/review/progressTracker.d.ts +106 -0
  396. package/dist/utils/review/progressTracker.js +227 -0
  397. package/dist/utils/review/progressTracker.js.map +1 -0
  398. package/dist/utils/review/reviewExtraction.d.ts +31 -0
  399. package/dist/utils/review/reviewExtraction.js +324 -0
  400. package/dist/utils/review/reviewExtraction.js.map +1 -0
  401. package/dist/utils/review/types.d.ts +45 -0
  402. package/dist/utils/review/types.js +18 -0
  403. package/dist/utils/review/types.js.map +1 -0
  404. package/{src/utils/reviewActionHandler.ts → dist/utils/reviewActionHandler.d.ts} +0 -2
  405. package/dist/utils/reviewActionHandler.js +34 -0
  406. package/dist/utils/reviewActionHandler.js.map +1 -0
  407. package/dist/utils/reviewParser.d.ts +34 -0
  408. package/dist/utils/reviewParser.js +218 -0
  409. package/dist/utils/reviewParser.js.map +1 -0
  410. package/dist/utils/sanitizer.d.ts +82 -0
  411. package/dist/utils/sanitizer.js +239 -0
  412. package/dist/utils/sanitizer.js.map +1 -0
  413. package/dist/utils/smartFileSelector.d.ts +50 -0
  414. package/dist/utils/smartFileSelector.js +261 -0
  415. package/dist/utils/smartFileSelector.js.map +1 -0
  416. package/dist/utils/templateLoader.d.ts +44 -0
  417. package/dist/utils/templateLoader.js +431 -0
  418. package/dist/utils/templateLoader.js.map +1 -0
  419. package/dist/utils/treeGenerator.d.ts +12 -0
  420. package/dist/utils/treeGenerator.js +133 -0
  421. package/dist/utils/treeGenerator.js.map +1 -0
  422. package/package.json +5 -1
  423. package/.cr-aia.yml +0 -23
  424. package/.crignore +0 -0
  425. package/docs/opt-in-full-context.md +0 -27
  426. package/reports/cr-cr-aia-17-11-2025-20-13.md +0 -354
  427. package/src/analysis/FindingsExtractor.ts +0 -431
  428. package/src/analysis/ai-detection/analyzers/BaseAnalyzer.ts +0 -267
  429. package/src/analysis/ai-detection/analyzers/DocumentationAnalyzer.ts +0 -622
  430. package/src/analysis/ai-detection/analyzers/GitHistoryAnalyzer.ts +0 -430
  431. package/src/analysis/ai-detection/core/AIDetectionEngine.ts +0 -467
  432. package/src/analysis/ai-detection/types/DetectionTypes.ts +0 -406
  433. package/src/analysis/ai-detection/utils/SubmissionConverter.ts +0 -390
  434. package/src/analysis/context/ReviewContext.ts +0 -378
  435. package/src/analysis/tokens/TokenAnalyzer.ts +0 -747
  436. package/src/clients/base/abstractClient.ts +0 -190
  437. package/src/clients/base/httpClient.ts +0 -160
  438. package/src/clients/base/modelDetection.ts +0 -107
  439. package/src/clients/base/responseProcessor.ts +0 -586
  440. package/src/clients/factory/clientFactory.ts +0 -55
  441. package/src/clients/implementations/openRouterClient.ts +0 -413
  442. package/src/clients/openRouterClient.ts +0 -870
  443. package/src/clients/utils/directoryStructure.ts +0 -52
  444. package/src/clients/utils/languageDetection.ts +0 -44
  445. package/src/clients/utils/promptFormatter.ts +0 -182
  446. package/src/clients/utils/tokenCounter.ts +0 -297
  447. package/src/core/ApiClientSelector.ts +0 -37
  448. package/src/core/ConfigurationService.ts +0 -591
  449. package/src/core/ConsolidationService.ts +0 -423
  450. package/src/core/InteractiveDisplayManager.ts +0 -81
  451. package/src/core/OutputManager.ts +0 -275
  452. package/src/core/ReviewGenerator.ts +0 -140
  453. package/src/core/fileDiscovery.ts +0 -237
  454. package/src/core/handlers/EstimationHandler.ts +0 -104
  455. package/src/core/handlers/FileProcessingHandler.ts +0 -210
  456. package/src/core/handlers/OutputHandler.ts +0 -125
  457. package/src/core/handlers/ReviewExecutor.ts +0 -104
  458. package/src/core/reviewOrchestrator.ts +0 -333
  459. package/src/core/utils/ModelInfoUtils.ts +0 -56
  460. package/src/formatters/utils/IssueFormatters.ts +0 -83
  461. package/src/formatters/utils/JsonFormatter.ts +0 -77
  462. package/src/formatters/utils/MarkdownFormatters.ts +0 -609
  463. package/src/formatters/utils/MetadataFormatter.ts +0 -269
  464. package/src/formatters/utils/ModelInfoExtractor.ts +0 -115
  465. package/src/index.ts +0 -25
  466. package/src/plugins/PluginInterface.ts +0 -50
  467. package/src/plugins/PluginManager.ts +0 -126
  468. package/src/prompts/PromptManager.ts +0 -69
  469. package/src/prompts/cache/PromptCache.ts +0 -50
  470. package/src/prompts/promptText/common/variables/css-frameworks.json +0 -33
  471. package/src/prompts/promptText/common/variables/framework-versions.json +0 -45
  472. package/src/prompts/promptText/frameworks/react/comprehensive.hbs +0 -19
  473. package/src/prompts/promptText/languages/css/comprehensive.hbs +0 -18
  474. package/src/prompts/promptText/languages/generic/comprehensive.hbs +0 -20
  475. package/src/prompts/promptText/languages/html/comprehensive.hbs +0 -18
  476. package/src/prompts/promptText/languages/javascript/comprehensive.hbs +0 -18
  477. package/src/prompts/promptText/languages/python/comprehensive.hbs +0 -18
  478. package/src/prompts/promptText/languages/typescript/comprehensive.hbs +0 -18
  479. package/src/runtime/auth/service.ts +0 -58
  480. package/src/runtime/auth/session.ts +0 -103
  481. package/src/runtime/auth/types.ts +0 -11
  482. package/src/runtime/cliEntry.ts +0 -214
  483. package/src/runtime/debug/logManager.ts +0 -37
  484. package/src/runtime/errors.ts +0 -13
  485. package/src/runtime/fileCollector.ts +0 -495
  486. package/src/runtime/manifest.ts +0 -64
  487. package/src/runtime/openrouterProxy.ts +0 -45
  488. package/src/runtime/preprod/webCheck.ts +0 -104
  489. package/src/runtime/proxyConfig.ts +0 -94
  490. package/src/runtime/proxyEnvironment.ts +0 -71
  491. package/src/runtime/reportMerge.ts +0 -102
  492. package/src/runtime/reporting/markdownReportBuilder.ts +0 -138
  493. package/src/runtime/reporting/reportDataCollector.ts +0 -234
  494. package/src/runtime/reporting/summaryGenerator.ts +0 -86
  495. package/src/runtime/reviewPipeline.ts +0 -200
  496. package/src/runtime/runAiCodeReview.ts +0 -308
  497. package/src/runtime/runtimeConfig.ts +0 -5
  498. package/src/runtime/ui/Layout.tsx +0 -57
  499. package/src/runtime/ui/RuntimeApp.tsx +0 -262
  500. package/src/runtime/ui/inkModules.ts +0 -73
  501. package/src/runtime/ui/screens/AuthScreen.tsx +0 -128
  502. package/src/runtime/ui/screens/ModeSelection.tsx +0 -185
  503. package/src/runtime/ui/screens/ProgressScreen.tsx +0 -110
  504. package/src/runtime/ui/screens/ResultsScreen.tsx +0 -103
  505. package/src/strategies/ArchitecturalReviewStrategy.ts +0 -54
  506. package/src/strategies/CodingTestReviewStrategy.ts +0 -920
  507. package/src/strategies/ConsolidatedReviewStrategy.ts +0 -59
  508. package/src/strategies/ExtractPatternsReviewStrategy.ts +0 -64
  509. package/src/strategies/MultiPassReviewStrategy.ts +0 -785
  510. package/src/strategies/ReviewStrategy.ts +0 -64
  511. package/src/strategies/StrategyFactory.ts +0 -79
  512. package/src/tokenizers/baseTokenizer.ts +0 -61
  513. package/src/tokenizers/gptTokenizer.ts +0 -27
  514. package/src/types/apiResponses.ts +0 -40
  515. package/src/types/cli.ts +0 -24
  516. package/src/types/configuration.ts +0 -201
  517. package/src/types/handlebars.d.ts +0 -5
  518. package/src/types/patch.d.ts +0 -25
  519. package/src/types/review.ts +0 -312
  520. package/src/types/reviewContext.d.ts +0 -65
  521. package/src/types/structuredReview.ts +0 -167
  522. package/src/types/tokenAnalysis.ts +0 -56
  523. package/src/utils/FileReader.ts +0 -93
  524. package/src/utils/FileWriter.ts +0 -76
  525. package/src/utils/PathGenerator.ts +0 -97
  526. package/src/utils/api/apiUtils.ts +0 -14
  527. package/src/utils/apiErrorHandler.ts +0 -287
  528. package/src/utils/ciDataCollector.ts +0 -252
  529. package/src/utils/codingTestConfigLoader.ts +0 -466
  530. package/src/utils/dependencies/aiDependencyAnalyzer.ts +0 -454
  531. package/src/utils/detection/frameworkDetector.ts +0 -879
  532. package/src/utils/detection/projectTypeDetector.ts +0 -518
  533. package/src/utils/diagramGenerator.ts +0 -206
  534. package/src/utils/errorLogger.ts +0 -60
  535. package/src/utils/estimationUtils.ts +0 -407
  536. package/src/utils/fileFilters.ts +0 -373
  537. package/src/utils/fileSystem.ts +0 -57
  538. package/src/utils/logger.ts +0 -290
  539. package/src/utils/pathValidator.ts +0 -98
  540. package/src/utils/projectDocs.ts +0 -189
  541. package/src/utils/promptPaths.ts +0 -29
  542. package/src/utils/promptTemplateManager.ts +0 -157
  543. package/src/utils/review/consolidateReview.ts +0 -553
  544. package/src/utils/review/fixDisplay.ts +0 -100
  545. package/src/utils/review/fixImplementation.ts +0 -61
  546. package/src/utils/review/index.ts +0 -36
  547. package/src/utils/review/interactiveProcessing.ts +0 -294
  548. package/src/utils/review/progressTracker.ts +0 -296
  549. package/src/utils/review/reviewExtraction.ts +0 -382
  550. package/src/utils/review/types.ts +0 -46
  551. package/src/utils/reviewParser.ts +0 -253
  552. package/src/utils/sanitizer.ts +0 -238
  553. package/src/utils/smartFileSelector.ts +0 -255
  554. package/src/utils/templateLoader.ts +0 -514
  555. package/src/utils/treeGenerator.ts +0 -153
  556. package/tsconfig.build.json +0 -14
  557. package/tsconfig.json +0 -59
  558. /package/{src/utils/api/index.ts → dist/utils/api/index.d.ts} +0 -0
@@ -0,0 +1,99 @@
1
+ /**
2
+ * @fileoverview Abstract base client for interacting with various AI APIs.
3
+ *
4
+ * This module defines an abstract base class that encapsulates common functionality
5
+ * across different AI client implementations (OpenAI, Anthropic, Google, etc.).
6
+ * It provides a unified interface for model detection, initialization, review generation,
7
+ * and other shared operations.
8
+ */
9
+ import type { CostInfo, FileInfo, ReviewOptions, ReviewResult, ReviewType } from '../../types/review';
10
+ import type { ProjectDocs } from '../../utils/projectDocs';
11
+ /**
12
+ * Abstract base class for AI model clients
13
+ */
14
+ export declare abstract class AbstractClient {
15
+ protected modelName: string;
16
+ protected isInitialized: boolean;
17
+ /**
18
+ * Check if the client is initialized
19
+ * @returns True if initialized, false otherwise
20
+ */
21
+ getIsInitialized(): boolean;
22
+ /**
23
+ * Check if the provided model name is supported by this client
24
+ * @param modelName The full model name (potentially with provider prefix)
25
+ * @returns Object indicating if this is the correct client for the model, and parsed model info
26
+ */
27
+ abstract isModelSupported(modelName: string): {
28
+ isCorrect: boolean;
29
+ adapter: string;
30
+ modelName: string;
31
+ };
32
+ /**
33
+ * Initialize the client with the appropriate configuration
34
+ * @returns Promise resolving to a boolean indicating success
35
+ */
36
+ abstract initialize(): Promise<boolean>;
37
+ /**
38
+ * Generate a review for a single file
39
+ * @param fileContent Content of the file to review
40
+ * @param filePath Path to the file
41
+ * @param reviewType Type of review to perform
42
+ * @param projectDocs Optional project documentation
43
+ * @param options Review options
44
+ * @returns Promise resolving to the review result
45
+ */
46
+ abstract generateReview(fileContent: string, filePath: string, reviewType: ReviewType, projectDocs?: ProjectDocs | null, options?: ReviewOptions): Promise<ReviewResult>;
47
+ /**
48
+ * Generate a consolidated review for multiple files
49
+ * @param files Array of file information objects
50
+ * @param projectName Name of the project
51
+ * @param reviewType Type of review to perform
52
+ * @param projectDocs Optional project documentation
53
+ * @param options Review options
54
+ * @returns Promise resolving to the review result
55
+ */
56
+ abstract generateConsolidatedReview(files: FileInfo[], projectName: string, reviewType: ReviewType, projectDocs?: ProjectDocs | null, options?: ReviewOptions): Promise<ReviewResult>;
57
+ /**
58
+ * Generate an architectural review for a project
59
+ * @param files Array of file information objects
60
+ * @param projectName Name of the project
61
+ * @param projectDocs Optional project documentation
62
+ * @param options Review options
63
+ * @returns Promise resolving to the review result
64
+ */
65
+ abstract generateArchitecturalReview(files: FileInfo[], projectName: string, projectDocs?: ProjectDocs | null, options?: ReviewOptions): Promise<ReviewResult>;
66
+ /**
67
+ * Process the response and extract structured data if possible
68
+ * @param content The response content to process
69
+ * @returns The processed structured data or null
70
+ */
71
+ protected processResponseForStructuredData(content: string): unknown | null;
72
+ /**
73
+ * Create a standard review result object
74
+ * @param content The review content
75
+ * @param filePath The file path or identifier
76
+ * @param reviewType The type of review
77
+ * @param cost Optional cost information
78
+ * @returns The standardized review result object
79
+ */
80
+ protected createReviewResult(content: string, filePath: string, reviewType: ReviewType, cost?: CostInfo): ReviewResult;
81
+ /**
82
+ * Get the full model name including provider prefix
83
+ * @returns The full model name
84
+ */
85
+ protected getFullModelName(): string;
86
+ /**
87
+ * Get the provider name for this client
88
+ * @returns The provider name (e.g., "openai", "anthropic", "gemini")
89
+ */
90
+ protected abstract getProviderName(): string;
91
+ /**
92
+ * Handle common error cases in API interactions
93
+ * @param error The error that occurred
94
+ * @param operation The operation that was being performed
95
+ * @param filePath The file path or identifier related to the error
96
+ * @throws The processed error
97
+ */
98
+ protected handleApiError(error: unknown, operation: string, filePath: string): never;
99
+ }
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Abstract base client for interacting with various AI APIs.
4
+ *
5
+ * This module defines an abstract base class that encapsulates common functionality
6
+ * across different AI client implementations (OpenAI, Anthropic, Google, etc.).
7
+ * It provides a unified interface for model detection, initialization, review generation,
8
+ * and other shared operations.
9
+ */
10
+ var __importDefault = (this && this.__importDefault) || function (mod) {
11
+ return (mod && mod.__esModule) ? mod : { "default": mod };
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.AbstractClient = void 0;
15
+ const logger_1 = __importDefault(require("../../utils/logger"));
16
+ /**
17
+ * Abstract base class for AI model clients
18
+ */
19
+ class AbstractClient {
20
+ modelName = '';
21
+ isInitialized = false;
22
+ /**
23
+ * Check if the client is initialized
24
+ * @returns True if initialized, false otherwise
25
+ */
26
+ getIsInitialized() {
27
+ return this.isInitialized;
28
+ }
29
+ /**
30
+ * Process the response and extract structured data if possible
31
+ * @param content The response content to process
32
+ * @returns The processed structured data or null
33
+ */
34
+ processResponseForStructuredData(content) {
35
+ try {
36
+ // First, check if the response is wrapped in a code block
37
+ const jsonMatch = content.match(/```(?:json)?\s*([\s\S]*?)\s*```/);
38
+ const jsonContent = jsonMatch ? jsonMatch[1] : content;
39
+ // Check if the content is valid JSON
40
+ const structuredData = JSON.parse(jsonContent);
41
+ // Validate that it has the expected structure
42
+ if (!structuredData.summary || !Array.isArray(structuredData.issues)) {
43
+ logger_1.default.warn('Response is valid JSON but does not have the expected structure');
44
+ }
45
+ return structuredData;
46
+ }
47
+ catch (parseError) {
48
+ logger_1.default.warn(`Response is not valid JSON: ${parseError instanceof Error ? parseError.message : String(parseError)}`);
49
+ // Return null for non-JSON content
50
+ return null;
51
+ }
52
+ }
53
+ /**
54
+ * Create a standard review result object
55
+ * @param content The review content
56
+ * @param filePath The file path or identifier
57
+ * @param reviewType The type of review
58
+ * @param cost Optional cost information
59
+ * @returns The standardized review result object
60
+ */
61
+ createReviewResult(content, filePath, reviewType, cost) {
62
+ const structuredData = this.processResponseForStructuredData(content);
63
+ return {
64
+ content,
65
+ cost,
66
+ modelUsed: this.getFullModelName(),
67
+ filePath,
68
+ reviewType,
69
+ timestamp: new Date().toISOString(),
70
+ structuredData: structuredData,
71
+ };
72
+ }
73
+ /**
74
+ * Get the full model name including provider prefix
75
+ * @returns The full model name
76
+ */
77
+ getFullModelName() {
78
+ const modelParts = this.modelName.split(':');
79
+ if (modelParts.length === 2) {
80
+ return this.modelName; // Already has provider prefix
81
+ }
82
+ return `${this.getProviderName()}:${this.modelName}`;
83
+ }
84
+ /**
85
+ * Handle common error cases in API interactions
86
+ * @param error The error that occurred
87
+ * @param operation The operation that was being performed
88
+ * @param filePath The file path or identifier related to the error
89
+ * @throws The processed error
90
+ */
91
+ handleApiError(error, operation, filePath) {
92
+ const errorMessage = error instanceof Error ? error.message : String(error);
93
+ logger_1.default.error(`Error ${operation} for ${filePath}: ${errorMessage}`);
94
+ throw error;
95
+ }
96
+ }
97
+ exports.AbstractClient = AbstractClient;
98
+ //# sourceMappingURL=abstractClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstractClient.js","sourceRoot":"","sources":["../../../src/clients/base/abstractClient.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;AAUH,gEAAwC;AAGxC;;GAEG;AACH,MAAsB,cAAc;IACxB,SAAS,GAAG,EAAE,CAAC;IACf,aAAa,GAAG,KAAK,CAAC;IAEhC;;;OAGG;IACI,gBAAgB;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAoED;;;;OAIG;IACO,gCAAgC,CAAC,OAAe;QACxD,IAAI,CAAC;YACH,0DAA0D;YAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACnE,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAEvD,qCAAqC;YACrC,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAE/C,8CAA8C;YAC9C,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrE,gBAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;YACjF,CAAC;YAED,OAAO,cAAc,CAAC;QACxB,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,gBAAM,CAAC,IAAI,CACT,+BACE,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CACtE,EAAE,CACH,CAAC;YACF,mCAAmC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACO,kBAAkB,CAC1B,OAAe,EACf,QAAgB,EAChB,UAAsB,EACtB,IAAe;QAEf,MAAM,cAAc,GAAG,IAAI,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC;QAEtE,OAAO;YACL,OAAO;YACP,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAClC,QAAQ;YACR,UAAU;YACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,cAAc,EAAE,cAA8C;SAC/D,CAAC;IACJ,CAAC;IAED;;;OAGG;IACO,gBAAgB;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,8BAA8B;QACvD,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;IACvD,CAAC;IAQD;;;;;;OAMG;IACO,cAAc,CAAC,KAAc,EAAE,SAAiB,EAAE,QAAgB;QAC1E,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,gBAAM,CAAC,KAAK,CAAC,SAAS,SAAS,QAAQ,QAAQ,KAAK,YAAY,EAAE,CAAC,CAAC;QACpE,MAAM,KAAK,CAAC;IACd,CAAC;CACF;AAtKD,wCAsKC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @fileoverview HTTP client utilities for API interactions.
3
+ *
4
+ * This module provides common HTTP request handling functionality with retry logic,
5
+ * error handling, and timeout management. It's designed to be used by the various
6
+ * AI API client implementations.
7
+ */
8
+ /**
9
+ * Fetch with automatic retry for transient errors
10
+ * @param url The URL to fetch from
11
+ * @param options Request options
12
+ * @param retries Number of retries to attempt
13
+ * @returns Promise resolving to the Response object
14
+ * @throws Error if all retries fail
15
+ */
16
+ export declare function fetchWithRetry(url: string, options: RequestInit, retries?: number): Promise<Response>;
17
+ /**
18
+ * Generic retry mechanism for any asynchronous function
19
+ * @param fn The function to retry
20
+ * @param retries Maximum number of retries
21
+ * @returns Promise resolving to the function's result
22
+ * @throws Error if all retries fail
23
+ */
24
+ export declare function withRetry<T>(fn: () => Promise<T>, retries?: number): Promise<T>;
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview HTTP client utilities for API interactions.
4
+ *
5
+ * This module provides common HTTP request handling functionality with retry logic,
6
+ * error handling, and timeout management. It's designed to be used by the various
7
+ * AI API client implementations.
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.fetchWithRetry = fetchWithRetry;
14
+ exports.withRetry = withRetry;
15
+ const apiErrorHandler_1 = require("../../utils/apiErrorHandler");
16
+ const logger_1 = __importDefault(require("../../utils/logger"));
17
+ /**
18
+ * Fetch with automatic retry for transient errors
19
+ * @param url The URL to fetch from
20
+ * @param options Request options
21
+ * @param retries Number of retries to attempt
22
+ * @returns Promise resolving to the Response object
23
+ * @throws Error if all retries fail
24
+ */
25
+ async function fetchWithRetry(url, options, retries = 3) {
26
+ logger_1.default.debug(`[FETCH DEBUG] fetchWithRetry called with url: ${url}`);
27
+ for (let i = 0; i < retries; i++) {
28
+ try {
29
+ logger_1.default.debug(`Making API request to ${url} (attempt ${i + 1}/${retries})`);
30
+ const res = await fetch(url, options);
31
+ if (res.ok) {
32
+ // Log successful response headers for debugging (OpenRouter specific)
33
+ const requestId = res.headers.get('x-request-id') || res.headers.get('request-id');
34
+ if (requestId) {
35
+ logger_1.default.debug(`Successful API response - Request ID: ${requestId}`);
36
+ }
37
+ return res;
38
+ }
39
+ logger_1.default.error(`[FETCH DEBUG] Request failed with status: ${res.status}`);
40
+ // Handle rate limiting and server errors with exponential backoff
41
+ if (res.status === 429 || res.status >= 500) {
42
+ const retryAfter = res.headers.get('Retry-After');
43
+ const delayMs = retryAfter ? parseInt(retryAfter, 10) * 1000 : 1000 * 2 ** i;
44
+ logger_1.default.warn(`Request failed with status ${res.status}. Retrying in ${delayMs / 1000}s...`);
45
+ await new Promise((r) => setTimeout(r, delayMs));
46
+ }
47
+ else {
48
+ // For other errors, try to get more detailed information
49
+ try {
50
+ const errorBody = await res.json();
51
+ const requestId = res.headers.get('x-request-id') || res.headers.get('request-id');
52
+ logger_1.default.error(`API error response: ${JSON.stringify(errorBody, null, 2)}`);
53
+ logger_1.default.error(`Request URL: ${url}`);
54
+ logger_1.default.error(`Request headers: ${JSON.stringify(options.headers, null, 2)}`);
55
+ // Log request body if it exists (but mask API keys)
56
+ let modelInfo = '';
57
+ if (options.body) {
58
+ try {
59
+ const body = JSON.parse(options.body);
60
+ if (body.messages) {
61
+ // Only log message structure, not content
62
+ logger_1.default.error(`Request had ${body.messages.length} messages`);
63
+ }
64
+ modelInfo = body.model || '';
65
+ logger_1.default.error(`Request model: ${body.model}`);
66
+ logger_1.default.error(`Request max_tokens: ${body.max_tokens}`);
67
+ logger_1.default.error(`Request max_completion_tokens: ${body.max_completion_tokens}`);
68
+ }
69
+ catch {
70
+ // If body isn't JSON, just note that
71
+ logger_1.default.error('Request body was not JSON');
72
+ }
73
+ }
74
+ // Create detailed error message
75
+ const errorDetails = [
76
+ `API request failed`,
77
+ `Endpoint: ${url}`,
78
+ `Status: ${res.status}`,
79
+ `Error: ${errorBody.error?.message || JSON.stringify(errorBody)}`,
80
+ ];
81
+ if (requestId) {
82
+ errorDetails.push(`Request ID: ${requestId}`);
83
+ }
84
+ if (modelInfo) {
85
+ errorDetails.push(`Model: ${modelInfo}`);
86
+ }
87
+ throw new apiErrorHandler_1.ApiError(errorDetails.join('\n '));
88
+ }
89
+ catch (parseError) {
90
+ // If we can't parse the error response, just use the status
91
+ if (parseError instanceof apiErrorHandler_1.ApiError) {
92
+ throw parseError;
93
+ }
94
+ logger_1.default.error(`Failed to parse error response, status: ${res.status}`);
95
+ throw new apiErrorHandler_1.ApiError(`API request failed\n Endpoint: ${url}\n Status: ${res.status}\n Error: Unable to parse error response`);
96
+ }
97
+ }
98
+ }
99
+ catch (error) {
100
+ // For network errors or other exceptions, retry if we have retries left
101
+ if (i < retries - 1 && !(error instanceof apiErrorHandler_1.ApiError)) {
102
+ const delayMs = 1000 * 2 ** i;
103
+ logger_1.default.warn(`Request failed with error: ${error instanceof Error ? error.message : String(error)}. Retrying in ${delayMs / 1000}s...`);
104
+ await new Promise((r) => setTimeout(r, delayMs));
105
+ }
106
+ else {
107
+ throw error;
108
+ }
109
+ }
110
+ }
111
+ throw new apiErrorHandler_1.ApiError(`Failed after ${retries} retries`);
112
+ }
113
+ /**
114
+ * Generic retry mechanism for any asynchronous function
115
+ * @param fn The function to retry
116
+ * @param retries Maximum number of retries
117
+ * @returns Promise resolving to the function's result
118
+ * @throws Error if all retries fail
119
+ */
120
+ async function withRetry(fn, retries = 3) {
121
+ for (let i = 0; i < retries; i++) {
122
+ try {
123
+ return await fn();
124
+ }
125
+ catch (error) {
126
+ // Type guard for errors with status property
127
+ const err = error;
128
+ // Handle rate limiting and server errors
129
+ if ((err.status === 429 || (err.status && err.status >= 500)) && i < retries - 1) {
130
+ const delayMs = 1000 * 2 ** i;
131
+ logger_1.default.warn(`Operation failed with status ${err.status}. Retrying in ${delayMs / 1000}s...`);
132
+ await new Promise((r) => setTimeout(r, delayMs));
133
+ }
134
+ else if (i < retries - 1) {
135
+ // For other errors, retry with backoff
136
+ const delayMs = 1000 * 2 ** i;
137
+ logger_1.default.warn(`Operation failed: ${error instanceof Error ? error.message : String(error)}. Retrying in ${delayMs / 1000}s...`);
138
+ await new Promise((r) => setTimeout(r, delayMs));
139
+ }
140
+ else {
141
+ throw error;
142
+ }
143
+ }
144
+ }
145
+ throw new apiErrorHandler_1.ApiError(`Failed after ${retries} retries`);
146
+ }
147
+ //# sourceMappingURL=httpClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../../../src/clients/base/httpClient.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,6 @@
5
5
  * providing a unified interface for client implementation, HTTP requests,
6
6
  * response processing, and model detection.
7
7
  */
8
-
9
8
  export * from './abstractClient';
10
9
  export * from './httpClient';
11
10
  export * from './modelDetection';
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Common base functionality for AI API clients.
4
+ *
5
+ * This module serves as the main entry point for the base client functionality,
6
+ * providing a unified interface for client implementation, HTTP requests,
7
+ * response processing, and model detection.
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
21
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ __exportStar(require("./abstractClient"), exports);
25
+ __exportStar(require("./httpClient"), exports);
26
+ __exportStar(require("./modelDetection"), exports);
27
+ __exportStar(require("./responseProcessor"), exports);
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/clients/base/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;AAEH,mDAAiC;AACjC,+CAA6B;AAC7B,mDAAiC;AACjC,sDAAoC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @fileoverview Model detection and initialization utilities for AI clients.
3
+ *
4
+ * This module provides common functionality for detecting model providers,
5
+ * parsing model names, validating API keys, and initializing client instances.
6
+ */
7
+ /**
8
+ * Result of model detection
9
+ */
10
+ export interface ModelDetectionResult {
11
+ /** Whether this is the correct client for the model */
12
+ isCorrect: boolean;
13
+ /** The provider/adapter name (e.g., "openai", "anthropic", "gemini") */
14
+ adapter: string;
15
+ /** The specific model name without provider prefix */
16
+ modelName: string;
17
+ }
18
+ /**
19
+ * Parse a model name string into provider and model components
20
+ * @param modelNameString The model name string (possibly with provider prefix)
21
+ * @param defaultProvider The default provider to use if none is specified
22
+ * @returns Object with adapter and modelName properties
23
+ */
24
+ export declare function parseModelName(modelNameString: string, defaultProvider: string): {
25
+ adapter: string;
26
+ modelName: string;
27
+ };
28
+ /**
29
+ * Detect if a model name is for a specific provider
30
+ * @param providerName The provider to check for
31
+ * @param modelNameString The model name to check (with or without provider prefix)
32
+ * @returns ModelDetectionResult with detection information
33
+ */
34
+ export declare function detectModelProvider(providerName: string, modelNameString?: string): ModelDetectionResult;
35
+ /**
36
+ * Validate API key for a provider
37
+ * @param providerName The provider to validate the API key for
38
+ * @param apiKeyName Environment variable name for the API key (optional)
39
+ * @returns Whether the API key is valid
40
+ */
41
+ export declare function validateApiKey(providerName: string, apiKeyName?: string): boolean;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Model detection and initialization utilities for AI clients.
4
+ *
5
+ * This module provides common functionality for detecting model providers,
6
+ * parsing model names, validating API keys, and initializing client instances.
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.parseModelName = parseModelName;
13
+ exports.detectModelProvider = detectModelProvider;
14
+ exports.validateApiKey = validateApiKey;
15
+ const ConfigurationService_1 = require("../../core/ConfigurationService");
16
+ const logger_1 = __importDefault(require("../../utils/logger"));
17
+ /**
18
+ * Parse a model name string into provider and model components
19
+ * @param modelNameString The model name string (possibly with provider prefix)
20
+ * @param defaultProvider The default provider to use if none is specified
21
+ * @returns Object with adapter and modelName properties
22
+ */
23
+ function parseModelName(modelNameString, defaultProvider) {
24
+ if (!modelNameString) {
25
+ return { adapter: defaultProvider, modelName: '' };
26
+ }
27
+ // Parse the model name
28
+ return modelNameString.includes(':')
29
+ ? {
30
+ adapter: modelNameString.split(':')[0],
31
+ modelName: modelNameString.split(':')[1],
32
+ }
33
+ : {
34
+ adapter: defaultProvider,
35
+ modelName: modelNameString,
36
+ };
37
+ }
38
+ /**
39
+ * Detect if a model name is for a specific provider
40
+ * @param providerName The provider to check for
41
+ * @param modelNameString The model name to check (with or without provider prefix)
42
+ * @returns ModelDetectionResult with detection information
43
+ */
44
+ function detectModelProvider(providerName, modelNameString) {
45
+ // Get the model from configuration if not provided
46
+ const config = (0, ConfigurationService_1.getConfig)();
47
+ const selectedModel = modelNameString || config.model || '';
48
+ // Parse the model name
49
+ const { adapter, modelName } = parseModelName(selectedModel, providerName);
50
+ return {
51
+ isCorrect: adapter === providerName,
52
+ adapter,
53
+ modelName,
54
+ };
55
+ }
56
+ /**
57
+ * Validate API key for a provider
58
+ * @param providerName The provider to validate the API key for
59
+ * @param apiKeyName Environment variable name for the API key (optional)
60
+ * @returns Whether the API key is valid
61
+ */
62
+ function validateApiKey(providerName, apiKeyName) {
63
+ // Only support OpenRouter
64
+ if (providerName.toLowerCase() !== 'openrouter') {
65
+ logger_1.default.error(`Provider ${providerName} is not supported. Only OpenRouter is supported.`);
66
+ return false;
67
+ }
68
+ // Try to get the API key from the config
69
+ const config = (0, ConfigurationService_1.getConfig)();
70
+ const apiKey = config.openRouterApiKey;
71
+ // Check if we have an API key
72
+ if (!apiKey) {
73
+ const envVarName = apiKeyName || 'AI_CODE_REVIEW_OPENROUTER_API_KEY';
74
+ logger_1.default.error(`No OpenRouter API key found in configuration.`);
75
+ logger_1.default.error('Please add the following to your .env.local file:');
76
+ logger_1.default.error(`- ${envVarName}=your_openrouter_api_key_here`);
77
+ return false;
78
+ }
79
+ // Log API key status
80
+ if (config.debug) {
81
+ logger_1.default.info(`Using real OpenRouter API responses.`);
82
+ }
83
+ else {
84
+ logger_1.default.info(`API key found for OpenRouter. Using real API responses.`);
85
+ }
86
+ return true;
87
+ }
88
+ //# sourceMappingURL=modelDetection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelDetection.js","sourceRoot":"","sources":["../../../src/clients/base/modelDetection.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAuBH,wCAkBC;AAQD,kDAgBC;AAQD,wCA4BC;AAnGD,0EAA4D;AAC5D,gEAAwC;AAcxC;;;;;GAKG;AACH,SAAgB,cAAc,CAC5B,eAAuB,EACvB,eAAuB;IAEvB,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACrD,CAAC;IAED,uBAAuB;IACvB,OAAO,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClC,CAAC,CAAC;YACE,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACtC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACzC;QACH,CAAC,CAAC;YACE,OAAO,EAAE,eAAe;YACxB,SAAS,EAAE,eAAe;SAC3B,CAAC;AACR,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CACjC,YAAoB,EACpB,eAAwB;IAExB,mDAAmD;IACnD,MAAM,MAAM,GAAG,IAAA,gCAAS,GAAE,CAAC;IAC3B,MAAM,aAAa,GAAG,eAAe,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IAE5D,uBAAuB;IACvB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAE3E,OAAO;QACL,SAAS,EAAE,OAAO,KAAK,YAAY;QACnC,OAAO;QACP,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,YAAoB,EAAE,UAAmB;IACtE,0BAA0B;IAC1B,IAAI,YAAY,CAAC,WAAW,EAAE,KAAK,YAAY,EAAE,CAAC;QAChD,gBAAM,CAAC,KAAK,CAAC,YAAY,YAAY,kDAAkD,CAAC,CAAC;QACzF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yCAAyC;IACzC,MAAM,MAAM,GAAG,IAAA,gCAAS,GAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAEvC,8BAA8B;IAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,UAAU,GAAG,UAAU,IAAI,mCAAmC,CAAC;QACrE,gBAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC9D,gBAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAClE,gBAAM,CAAC,KAAK,CAAC,KAAK,UAAU,+BAA+B,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qBAAqB;IACrB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,gBAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,gBAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @fileoverview Common response processing and error handling for AI API clients.
3
+ *
4
+ * This module provides shared functionality for processing API responses,
5
+ * extracting structured data, handling errors, and standardizing output formats
6
+ * across different AI providers.
7
+ */
8
+ import type { ReviewResult, ReviewType } from '../../types/review';
9
+ import type { StructuredReview } from '../../types/structuredReview';
10
+ import { ApiError } from '../../utils/apiErrorHandler';
11
+ /**
12
+ * Process API response content and extract structured data if possible
13
+ * @param content The API response content
14
+ * @returns Structured data object or null if not valid JSON
15
+ */
16
+ export declare function extractStructuredData(content: string): StructuredReview | undefined;
17
+ /**
18
+ * Create a standardized review result object
19
+ * @param content The review content
20
+ * @param prompt The original prompt (for cost calculation)
21
+ * @param modelName The full model name
22
+ * @param filePath The file path or identifier
23
+ * @param reviewType The review type
24
+ * @param options Optional review options to determine expected output format
25
+ * @returns Standardized review result
26
+ */
27
+ export declare function createStandardReviewResult(content: string, prompt: string, modelName: string, filePath: string, reviewType: ReviewType, options?: {
28
+ interactive?: boolean;
29
+ output?: string;
30
+ }): ReviewResult;
31
+ /**
32
+ * Handle API errors with standardized logging and wrapping
33
+ * @param error The original error
34
+ * @param operation Description of the operation that failed
35
+ * @param modelName The model being used
36
+ * @param context Additional context for debugging
37
+ * @returns Wrapped ApiError
38
+ */
39
+ export declare function handleApiError(error: unknown, operation: string, modelName: string, context?: {
40
+ endpoint?: string;
41
+ statusCode?: number;
42
+ requestId?: string;
43
+ filePath?: string;
44
+ additionalInfo?: Record<string, any>;
45
+ }): ApiError;