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
@@ -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
- }