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,52 +0,0 @@
1
- /**
2
- * @fileoverview Utility for generating directory structure representations.
3
- *
4
- * This module provides functions for generating directory structure
5
- * representations from file paths, which is useful for providing context
6
- * in code reviews.
7
- */
8
-
9
- import type { FileInfo } from '../../types/review';
10
-
11
- /**
12
- * Generate a directory structure representation from file paths
13
- * @param files Array of file information objects
14
- * @returns String representation of directory structure
15
- */
16
- export function generateDirectoryStructure(files: FileInfo[]): string {
17
- const structure: Record<string, any> = {};
18
-
19
- // Build tree structure
20
- for (const file of files) {
21
- // Skip files without relativePath
22
- if (!file.relativePath) continue;
23
-
24
- const parts = file.relativePath.split('/');
25
- let current = structure;
26
-
27
- for (let i = 0; i < parts.length - 1; i++) {
28
- const part = parts[i];
29
- if (!current[part]) {
30
- current[part] = {};
31
- }
32
- current = current[part];
33
- }
34
-
35
- const fileName = parts[parts.length - 1];
36
- current[fileName] = null;
37
- }
38
-
39
- // Convert to string representation
40
- function stringifyStructure(obj: Record<string, any>, indent = 0): string {
41
- let result = '';
42
- for (const [key, value] of Object.entries(obj)) {
43
- result += `${' '.repeat(indent) + (value === null ? '📄 ' : '📁 ') + key}\n`;
44
- if (value !== null) {
45
- result += stringifyStructure(value, indent + 1);
46
- }
47
- }
48
- return result;
49
- }
50
-
51
- return stringifyStructure(structure);
52
- }
@@ -1,44 +0,0 @@
1
- /**
2
- * @fileoverview Utilities for detecting programming languages from file extensions.
3
- *
4
- * This module provides functions for mapping file extensions to programming languages,
5
- * which is useful for formatting code snippets and providing language-specific hints
6
- * to AI models.
7
- */
8
-
9
- /**
10
- * Get the language name from a file extension
11
- * @param extension File extension
12
- * @returns Language name
13
- */
14
- export function getLanguageFromExtension(extension: string): string {
15
- const extensionMap: Record<string, string> = {
16
- js: 'javascript',
17
- jsx: 'javascript',
18
- ts: 'typescript',
19
- tsx: 'typescript',
20
- py: 'python',
21
- rb: 'ruby',
22
- java: 'java',
23
- go: 'go',
24
- rs: 'rust',
25
- php: 'php',
26
- cs: 'csharp',
27
- cpp: 'cpp',
28
- c: 'c',
29
- h: 'c',
30
- hpp: 'cpp',
31
- swift: 'swift',
32
- kt: 'kotlin',
33
- md: 'markdown',
34
- json: 'json',
35
- yml: 'yaml',
36
- yaml: 'yaml',
37
- html: 'html',
38
- css: 'css',
39
- scss: 'scss',
40
- sql: 'sql',
41
- };
42
-
43
- return extensionMap[extension.toLowerCase()] || extension;
44
- }
@@ -1,182 +0,0 @@
1
- /**
2
- * @fileoverview Utilities for formatting prompts for AI models.
3
- *
4
- * This module provides functions for formatting prompts for different AI models,
5
- * including handling code blocks, project context, and review instructions.
6
- */
7
-
8
- import path from 'node:path';
9
- import type { FileInfo, RunContext } from '../../types/review';
10
- import { formatProjectDocs, type ProjectDocs } from '../../utils/projectDocs';
11
- import { getLanguageFromExtension } from '../utils/languageDetection';
12
- import { generateDirectoryStructure } from './directoryStructure';
13
-
14
- /**
15
- * Format a code block with the appropriate language
16
- * @param fileContent The content of the file
17
- * @param filePath The path to the file
18
- * @returns The formatted code block
19
- */
20
- export function formatCodeBlock(fileContent: string, filePath: string): string {
21
- // Get the file extension and language
22
- const fileExtension = path.extname(filePath).slice(1);
23
- const language = getLanguageFromExtension(fileExtension);
24
-
25
- // Format the code block with language
26
- return `\`\`\`${language}\n${fileContent}\n\`\`\``;
27
- }
28
-
29
- /**
30
- * Format a single file review prompt
31
- * @param promptTemplate The prompt template
32
- * @param fileContent The content of the file
33
- * @param filePath The path to the file
34
- * @param projectDocs Optional project documentation
35
- * @returns The formatted prompt
36
- */
37
- export function formatSingleFileReviewPrompt(
38
- promptTemplate: string,
39
- fileContent: string,
40
- filePath: string,
41
- projectDocs?: ProjectDocs | null,
42
- runContext?: RunContext,
43
- ): string {
44
- // Format the code block
45
- const codeBlock = formatCodeBlock(fileContent, filePath);
46
-
47
- // Format project documentation if available
48
- const projectContext = projectDocs ? formatProjectDocs(projectDocs) : '';
49
-
50
- const contextSnapshot = buildContextSnapshot(runContext, filePath);
51
- const severityContract = buildSeverityContract();
52
- const contextAppendix = buildContextDocAppendix(runContext);
53
-
54
- const sections = [
55
- promptTemplate,
56
- contextSnapshot,
57
- severityContract,
58
- contextAppendix,
59
- projectContext ? `## Project Context\n${projectContext}` : '',
60
- `## File to Review: ${filePath}`,
61
- codeBlock,
62
- 'Please review this code and provide feedback according to the instructions. DO NOT REPEAT THE INSTRUCTIONS. DO NOT ASK FOR CODE TO REVIEW. FOCUS ONLY ON PROVIDING THE CODE REVIEW CONTENT.',
63
- ].filter(Boolean);
64
-
65
- return sections.join('\n\n');
66
- }
67
-
68
- /**
69
- * Format a consolidated review prompt
70
- * @param promptTemplate The prompt template
71
- * @param projectName The name of the project
72
- * @param files Array of file information
73
- * @param projectDocs Optional project documentation
74
- * @returns The formatted prompt
75
- */
76
- export function formatConsolidatedReviewPrompt(
77
- promptTemplate: string,
78
- projectName: string,
79
- files: Array<{ relativePath?: string; content: string; sizeInBytes: number }>,
80
- projectDocs?: ProjectDocs | null,
81
- runContext?: RunContext,
82
- ): string {
83
- // Format project documentation if available
84
- const projectContext = projectDocs ? formatProjectDocs(projectDocs) : '';
85
-
86
- // Convert the file array to FileInfo format for the directory structure generator
87
- const fileInfos: FileInfo[] = files.map((file) => ({
88
- path: file.relativePath || file.sizeInBytes.toString(), // Use sizeInBytes as fallback for path
89
- relativePath: file.relativePath,
90
- content: file.content,
91
- }));
92
-
93
- // Create a project structure summary using the utility function
94
- const directoryStructure = generateDirectoryStructure(fileInfos);
95
-
96
- // Prepare file summaries
97
- const fileSummaries = files
98
- .map((file) => `- ${file.relativePath || 'unnamed file'} (${file.sizeInBytes} bytes)`)
99
- .join('\n');
100
-
101
- const contextSnapshot = buildContextSnapshot(runContext);
102
- const severityContract = buildSeverityContract();
103
- const contextAppendix = buildContextDocAppendix(runContext);
104
-
105
- const sections = [
106
- promptTemplate,
107
- contextSnapshot,
108
- severityContract,
109
- contextAppendix,
110
- projectContext ? `## Project Context\n${projectContext}` : '',
111
- `## Project: ${projectName}`,
112
- '## Directory Structure',
113
- `\`\`\`\n${directoryStructure}\n\`\`\``,
114
- '## File Summaries',
115
- fileSummaries,
116
- 'Please review this codebase and provide feedback according to the instructions. DO NOT REPEAT THE INSTRUCTIONS. DO NOT ASK FOR CODE TO REVIEW. FOCUS ONLY ON PROVIDING THE CODE REVIEW CONTENT.',
117
- ].filter(Boolean);
118
-
119
- return sections.join('\n\n');
120
- }
121
-
122
- function buildContextSnapshot(runContext?: RunContext, currentFile?: string): string {
123
- if (!runContext) {
124
- return '';
125
- }
126
-
127
- const lines: string[] = ['## Context Snapshot'];
128
- lines.push(`- Repository: ${runContext.repoName}`);
129
- if (runContext.reviewMode) {
130
- lines.push(`- Mode: ${runContext.reviewMode}`);
131
- }
132
- if (
133
- typeof runContext.groupIndex === 'number' &&
134
- typeof runContext.groupCount === 'number' &&
135
- runContext.groupCount > 0
136
- ) {
137
- const label = runContext.groupLabel ? ` (${runContext.groupLabel})` : '';
138
- lines.push(`- File group: ${runContext.groupIndex}/${runContext.groupCount}${label}`);
139
- }
140
- if (runContext.totalFiles) {
141
- lines.push(`- Files in this run: ${runContext.totalFiles}`);
142
- }
143
- if (currentFile) {
144
- lines.push(`- Currently focused file: ${currentFile}`);
145
- }
146
-
147
- if (runContext.groupFiles && runContext.groupFiles.length > 0) {
148
- lines.push('\n### Files in this group');
149
- runContext.groupFiles.forEach((file) => lines.push(`- ${file}`));
150
- }
151
-
152
- if (runContext.docFiles && runContext.docFiles.length > 0) {
153
- lines.push('\n### Nearby docs/config included for context');
154
- runContext.docFiles.forEach((file) => lines.push(`- ${file}`));
155
- }
156
-
157
- lines.push(
158
- '\nFocus on cross-file behavior in this bundle—shared state, config drift, and docs vs implementation mismatches.',
159
- );
160
-
161
- return lines.join('\n');
162
- }
163
-
164
- function buildSeverityContract(): string {
165
- return `## Severity & Reporting Guidance\n- **Critical** – production-stopping bug, security break, or guaranteed data loss. Immediate fix required.\n- **High** – severe regression, auth/z issue, or problem affecting many users.\n- **Medium** – correctness gaps, testing deficiencies, or maintainability risks that will bite soon.\n- **Low** – readability, structure, or polish issues that still deserve a fix.\n- **Missing context** – when you cannot complete an assessment, add an issue referencing the exact file that lacks detail (e.g., "missing context in src/config/app.ts").\n-\n-Always set the JSON 'priority' to one of the above values so UI totals remain accurate.`;
166
- }
167
-
168
- function buildContextDocAppendix(runContext?: RunContext): string {
169
- if (!runContext?.contextDocs || runContext.contextDocs.length === 0) {
170
- return '';
171
- }
172
-
173
- const docs = runContext.contextDocs;
174
- const lines: string[] = ['## Supporting Context'];
175
- for (const doc of docs) {
176
- lines.push(`### ${doc.path}`);
177
- lines.push('```');
178
- lines.push(doc.snippet.trim() || '(empty file)');
179
- lines.push('```');
180
- }
181
- return lines.join('\n');
182
- }
@@ -1,297 +0,0 @@
1
- /**
2
- * @fileoverview Token counting and cost estimation utilities for AI API usage.
3
- *
4
- * This module provides utilities for estimating token usage and associated costs
5
- * when using OpenRouter models. It implements accurate token counting using
6
- * model-specific tokenizers and maintains current pricing information for OpenRouter models.
7
- *
8
- * Key responsibilities:
9
- * - Counting tokens for input and output text using model-specific tokenizers
10
- * - Calculating approximate API costs based on token usage and model
11
- * - Tracking different pricing tiers for various AI models
12
- * - Providing cost information for review outputs
13
- * - Supporting cost-aware decision making for API usage
14
- *
15
- * These utilities help users understand the resource usage and costs associated
16
- * with their code reviews, enabling better planning and resource allocation.
17
- */
18
-
19
- import { countTokens } from '../../tokenizers';
20
-
21
- /**
22
- * Utility functions for estimating token counts and costs for AI API calls
23
- */
24
-
25
- /**
26
- * Count tokens in a text using the appropriate tokenizer for a model
27
- * @param text Text to count tokens for
28
- * @param modelName Name of the model (optional)
29
- * @returns Token count
30
- */
31
- export function estimateTokenCount(text: string, modelName?: string): number {
32
- return countTokens(text, modelName || 'fallback');
33
- }
34
-
35
- /**
36
- * Current pricing for OpenRouter models
37
- * Source: https://openrouter.ai/models
38
- */
39
-
40
- /**
41
- * Interface for model pricing with standard per-token costs
42
- */
43
- interface StandardPricing {
44
- inputTokenCost: number; // Cost per 1K input tokens in USD
45
- outputTokenCost: number; // Cost per 1K output tokens in USD
46
- type: 'standard';
47
- }
48
-
49
- /**
50
- * Interface for model pricing with tiered costs based on token count
51
- */
52
- interface TieredPricing {
53
- type: 'tiered';
54
- tiers: {
55
- threshold: number; // Token threshold for this tier
56
- inputTokenCost: number; // Cost per 1K input tokens in USD for this tier
57
- outputTokenCost: number; // Cost per 1K output tokens in USD for this tier
58
- }[];
59
- }
60
-
61
- /**
62
- * Union type for different pricing models
63
- */
64
- type ModelPricing = StandardPricing | TieredPricing;
65
-
66
- /**
67
- * Pricing information for OpenRouter models
68
- */
69
- const MODEL_PRICING: Record<string, ModelPricing> = {
70
- // OpenRouter models (via OpenRouter)
71
- 'anthropic/claude-3-opus': {
72
- type: 'standard',
73
- inputTokenCost: 0.015, // $15.00 per 1M tokens
74
- outputTokenCost: 0.075, // $75.00 per 1M tokens
75
- },
76
- 'anthropic/claude-3-sonnet': {
77
- type: 'standard',
78
- inputTokenCost: 0.003, // $3.00 per 1M tokens
79
- outputTokenCost: 0.015, // $15.00 per 1M tokens
80
- },
81
- 'anthropic/claude-3-haiku': {
82
- type: 'standard',
83
- inputTokenCost: 0.00025, // $0.25 per 1M tokens
84
- outputTokenCost: 0.00125, // $1.25 per 1M tokens
85
- },
86
- 'openai/gpt-4-turbo': {
87
- type: 'standard',
88
- inputTokenCost: 0.01, // $10.00 per 1M tokens
89
- outputTokenCost: 0.03, // $30.00 per 1M tokens
90
- },
91
- 'openai/gpt-4o': {
92
- type: 'standard',
93
- inputTokenCost: 0.005, // $5.00 per 1M tokens (OpenRouter pricing)
94
- outputTokenCost: 0.015, // $15.00 per 1M tokens (OpenRouter pricing)
95
- },
96
- 'openai/gpt-4o-mini': {
97
- type: 'standard',
98
- inputTokenCost: 0.00015, // $0.15 per 1M tokens (OpenRouter pricing)
99
- outputTokenCost: 0.0006, // $0.60 per 1M tokens (OpenRouter pricing)
100
- },
101
- 'openai/gpt-3.5-turbo': {
102
- type: 'standard',
103
- inputTokenCost: 0.0005, // $0.50 per 1M tokens (OpenRouter pricing)
104
- outputTokenCost: 0.0015, // $1.50 per 1M tokens (OpenRouter pricing)
105
- },
106
-
107
- 'x-ai/grok-4-fast': {
108
- type: 'standard',
109
- inputTokenCost: 0.0002, // $0.20 per 1M input tokens (approx)
110
- outputTokenCost: 0.0005, // $0.50 per 1M output tokens (approx)
111
- },
112
-
113
- // Default fallback pricing (OpenRouter average)
114
- default: {
115
- type: 'standard',
116
- inputTokenCost: 0.005, // $5.00 per 1M tokens
117
- outputTokenCost: 0.015, // $15.00 per 1M tokens
118
- },
119
- };
120
-
121
- /**
122
- * Get the pricing for a specific model
123
- * @param modelName Name of the model
124
- * @returns Pricing information for the model
125
- */
126
- function getModelPricing(modelName: string): ModelPricing {
127
- // Handle OpenRouter model names (remove the 'openrouter:' prefix)
128
- let actualModelName = modelName;
129
- if (modelName.startsWith('openrouter:')) {
130
- actualModelName = modelName.substring('openrouter:'.length);
131
- } else if (modelName.startsWith('openrouter-')) {
132
- actualModelName = modelName.substring('openrouter-'.length);
133
- }
134
-
135
- // Check if we have pricing for this model
136
- if (MODEL_PRICING[actualModelName]) {
137
- return MODEL_PRICING[actualModelName];
138
- }
139
-
140
- // Default fallback
141
- return MODEL_PRICING.default;
142
- }
143
-
144
- /**
145
- * Calculate the cost for a specific tier
146
- * @param tokens Number of tokens
147
- * @param tokenCost Cost per 1K tokens
148
- * @param tierStart Start of the tier
149
- * @param tierEnd End of the tier (or undefined for no upper limit)
150
- * @returns Cost for this tier
151
- */
152
- function calculateTierCost(
153
- tokens: number,
154
- tokenCost: number,
155
- tierStart: number,
156
- tierEnd?: number,
157
- ): number {
158
- // Calculate how many tokens fall within this tier
159
- const tierTokens = tierEnd
160
- ? Math.min(Math.max(0, tokens - tierStart), tierEnd - tierStart)
161
- : Math.max(0, tokens - tierStart);
162
-
163
- // Calculate the cost for this tier
164
- return (tierTokens / 1000) * tokenCost;
165
- }
166
-
167
- /**
168
- * Calculate the estimated cost for an AI API call
169
- * @param inputTokens Number of input tokens
170
- * @param outputTokens Number of output tokens
171
- * @param modelName Name of the model used
172
- * @returns Estimated cost in USD
173
- */
174
- export function calculateCost(
175
- inputTokens: number,
176
- outputTokens: number,
177
- modelName = 'openrouter:anthropic/claude-3-opus-20240229',
178
- ): number {
179
- const pricing = getModelPricing(modelName);
180
-
181
- let inputCost = 0;
182
- let outputCost = 0;
183
-
184
- if (pricing.type === 'standard') {
185
- // Standard pricing is simple - just multiply by the cost per token
186
- inputCost = (inputTokens / 1000) * pricing.inputTokenCost;
187
- outputCost = (outputTokens / 1000) * pricing.outputTokenCost;
188
- } else if (pricing.type === 'tiered') {
189
- // Tiered pricing requires calculating costs for each tier
190
- const tiers = pricing.tiers;
191
-
192
- // Calculate input token cost across tiers
193
- for (let i = 0; i < tiers.length; i++) {
194
- const tierStart = tiers[i].threshold;
195
- const tierEnd = i < tiers.length - 1 ? tiers[i + 1].threshold : undefined;
196
-
197
- inputCost += calculateTierCost(inputTokens, tiers[i].inputTokenCost, tierStart, tierEnd);
198
- }
199
-
200
- // Calculate output token cost across tiers
201
- for (let i = 0; i < tiers.length; i++) {
202
- const tierStart = tiers[i].threshold;
203
- const tierEnd = i < tiers.length - 1 ? tiers[i + 1].threshold : undefined;
204
-
205
- outputCost += calculateTierCost(outputTokens, tiers[i].outputTokenCost, tierStart, tierEnd);
206
- }
207
- }
208
-
209
- return inputCost + outputCost;
210
- }
211
-
212
- /**
213
- * Format a cost value as a currency string
214
- * @param cost Cost value in USD
215
- * @returns Formatted cost string
216
- */
217
- export function formatCost(cost: number): string {
218
- return `$${cost.toFixed(6)} USD`;
219
- }
220
-
221
- /**
222
- * Cost information for an API call
223
- */
224
- export interface CostInfo {
225
- inputTokens: number;
226
- outputTokens: number;
227
- totalTokens: number;
228
- estimatedCost: number;
229
- formattedCost: string;
230
- cost: number; // Alias for estimatedCost for backward compatibility
231
- passCount?: number; // Number of passes in multi-pass review
232
- perPassCosts?: PassCostInfo[]; // Cost breakdown per pass
233
- contextMaintenanceFactor?: number; // Factor for context maintenance
234
- }
235
-
236
- /**
237
- * Cost information for a single pass in a multi-pass review
238
- */
239
- export interface PassCostInfo {
240
- passNumber: number;
241
- inputTokens: number;
242
- outputTokens: number;
243
- totalTokens: number;
244
- estimatedCost: number;
245
- }
246
-
247
- /**
248
- * Calculate cost information for an API call based on text
249
- * @param inputText Input text sent to the API
250
- * @param outputText Output text received from the API
251
- * @param modelName Name of the model used
252
- * @returns Cost information
253
- */
254
- export function getCostInfoFromText(
255
- inputText: string,
256
- outputText: string,
257
- modelName = 'openrouter:anthropic/claude-3-opus-20240229',
258
- ): CostInfo {
259
- const inputTokens = estimateTokenCount(inputText, modelName);
260
- const outputTokens = estimateTokenCount(outputText, modelName);
261
- const totalTokens = inputTokens + outputTokens;
262
- const estimatedCost = calculateCost(inputTokens, outputTokens, modelName);
263
-
264
- return {
265
- inputTokens,
266
- outputTokens,
267
- totalTokens,
268
- estimatedCost,
269
- formattedCost: formatCost(estimatedCost),
270
- cost: estimatedCost, // Alias for backward compatibility
271
- };
272
- }
273
-
274
- /**
275
- * Calculate cost information for an API call based on token counts
276
- * @param inputTokens Number of input tokens
277
- * @param outputTokens Number of output tokens
278
- * @param modelName Name of the model used
279
- * @returns Cost information
280
- */
281
- export function getCostInfo(
282
- inputTokens: number,
283
- outputTokens: number,
284
- modelName = 'openrouter:anthropic/claude-3-opus-20240229',
285
- ): CostInfo {
286
- const totalTokens = inputTokens + outputTokens;
287
- const estimatedCost = calculateCost(inputTokens, outputTokens, modelName);
288
-
289
- return {
290
- inputTokens,
291
- outputTokens,
292
- totalTokens,
293
- estimatedCost,
294
- formattedCost: formatCost(estimatedCost),
295
- cost: estimatedCost, // Alias for backward compatibility
296
- };
297
- }
@@ -1,37 +0,0 @@
1
- import logger from '../utils/logger';
2
- import { getConfig } from '../core/ConfigurationService';
3
- import { initializeAnyOpenRouterModel } from '../clients/openRouterClientWrapper';
4
-
5
- export type ApiClientType = 'OpenRouter';
6
-
7
- export interface ApiClientConfig {
8
- clientType: ApiClientType;
9
- modelName: string;
10
- initialized: boolean;
11
- provider: 'openrouter';
12
- }
13
-
14
- export async function selectApiClient(cliOptions?: any): Promise<ApiClientConfig> {
15
- logger.debug('selectApiClient called');
16
-
17
- // Get model from ConfigurationService or CLI options
18
- const config = getConfig(cliOptions);
19
- const requestedModel = cliOptions?.model || config.model || '';
20
- const normalized = requestedModel.replace(/['"`]/g, '').trim();
21
- const [, modelName] = normalized.includes(':') ? normalized.split(':', 2) : ['openrouter', normalized];
22
-
23
- if (!modelName) {
24
- throw new Error('AI_CODE_REVIEW_MODEL must specify an OpenRouter-compatible model.');
25
- }
26
-
27
- await initializeAnyOpenRouterModel();
28
-
29
- logger.info(`Using OpenRouter model: ${modelName}`);
30
-
31
- return {
32
- clientType: 'OpenRouter',
33
- modelName: `openrouter:${modelName}`,
34
- initialized: true,
35
- provider: 'openrouter',
36
- };
37
- }