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,591 +0,0 @@
1
- /**
2
- * @fileoverview Unified Configuration Service
3
- *
4
- * This service consolidates all configuration management into a single, cohesive module.
5
- * It replaces the fragmented configuration files (config.ts, configFileManager.ts,
6
- * configManager.ts, unifiedConfig.ts, codingTestConfigLoader.ts, envLoader.ts) with
7
- * a single source of truth for configuration.
8
- *
9
- * Key features:
10
- * - Single source of truth for all configuration
11
- * - Clear precedence order: CLI > Environment > Config File > Defaults
12
- * - Type-safe configuration with Zod validation
13
- * - Support for YAML and JSON config files
14
- * - Environment variable loading with .env.local support
15
- * - Comprehensive error handling and validation
16
- */
17
-
18
- import fs from 'node:fs';
19
- import path from 'node:path';
20
- // Use dynamic import for js-yaml to avoid type issues
21
- // import * as yaml from 'js-yaml';
22
- import * as dotenv from 'dotenv';
23
- import { z } from 'zod';
24
- import type { CliOptions } from '../types/cli';
25
- import logger from '../utils/logger';
26
- import { resolvePromptTemplatesDir } from '../utils/promptPaths';
27
-
28
- /**
29
- * Safely converts optional string inputs (like env vars) to numbers.
30
- * Returns undefined when the input is absent or not a valid finite number.
31
- */
32
- const toOptionalNumber = (value?: string): number | undefined => {
33
- if (value === undefined || value === null || value === '') {
34
- return undefined;
35
- }
36
-
37
- const parsed = Number(value);
38
- return Number.isFinite(parsed) ? parsed : undefined;
39
- };
40
-
41
- // Configuration schema with validation
42
- const ConfigSchema = z.object({
43
- // API Keys (OpenRouter only)
44
- openRouterApiKey: z.string().optional(),
45
-
46
- // Model configuration
47
- model: z.string().default('openrouter:anthropic/claude-3-opus-20240229'),
48
- writerModel: z.string().optional(),
49
-
50
- // Output configuration
51
- outputDir: z.string().default('cr-aia-docs'),
52
- outputFormat: z.enum(['markdown', 'json']).default('markdown'),
53
-
54
- // Behavior configuration
55
- debug: z.boolean().default(false),
56
- logLevel: z.enum(['debug', 'info', 'warn', 'error', 'none']).default('info'),
57
- interactive: z.boolean().default(false),
58
-
59
- // Review features
60
- includeTests: z.boolean().default(false),
61
- includeProjectDocs: z.boolean().default(true),
62
- includeDependencyAnalysis: z.boolean().default(true),
63
-
64
- // Multi-pass configuration
65
- multiPass: z.boolean().default(false),
66
- forceSinglePass: z.boolean().default(false),
67
- contextMaintenanceFactor: z.number().min(0).max(1).default(0.15),
68
-
69
- // Advanced features
70
- testApi: z.boolean().default(false),
71
- estimate: z.boolean().default(false),
72
- noConfirm: z.boolean().default(false),
73
-
74
- // Paths
75
- contextPaths: z.array(z.string()).optional(),
76
- configPath: z.string().optional(),
77
-
78
- // Coding test specific
79
- assignmentFile: z.string().optional(),
80
- assignmentUrl: z.string().optional(),
81
- assignmentText: z.string().optional(),
82
- evaluationTemplate: z.string().optional(),
83
- templateUrl: z.string().optional(),
84
- rubricFile: z.string().optional(),
85
- assessmentType: z
86
- .enum(['coding-challenge', 'take-home', 'live-coding', 'code-review'])
87
- .default('coding-challenge'),
88
- difficultyLevel: z.enum(['junior', 'mid', 'senior', 'lead', 'architect']).default('mid'),
89
-
90
- // Evaluation weights
91
- weightCorrectness: z.number().min(0).max(100).default(30),
92
- weightCodeQuality: z.number().min(0).max(100).default(25),
93
- weightArchitecture: z.number().min(0).max(100).default(20),
94
- weightPerformance: z.number().min(0).max(100).default(15),
95
- weightTesting: z.number().min(0).max(100).default(10),
96
-
97
- // Evaluation options
98
- evaluateDocumentation: z.boolean().default(false),
99
- evaluateGitHistory: z.boolean().default(false),
100
- evaluateEdgeCases: z.boolean().default(false),
101
- evaluateErrorHandling: z.boolean().default(false),
102
-
103
- // Scoring system
104
- scoringSystem: z.enum(['numeric', 'letter', 'pass-fail', 'custom']).default('numeric'),
105
- maxScore: z.number().default(100),
106
- passingThreshold: z.number().default(70),
107
- scoreBreakdown: z.boolean().default(true),
108
-
109
- // Feedback configuration
110
- feedbackLevel: z.enum(['basic', 'detailed', 'comprehensive']).default('detailed'),
111
- includeExamples: z.boolean().default(true),
112
- includeSuggestions: z.boolean().default(true),
113
- includeResources: z.boolean().default(false),
114
-
115
- // AI detection
116
- enableAiDetection: z.boolean().default(false),
117
- aiDetectionThreshold: z.number().min(0).max(1).default(0.7),
118
- aiDetectionAnalyzers: z.string().default('git,documentation'),
119
- aiDetectionIncludeInReport: z.boolean().default(true),
120
- aiDetectionFailOnDetection: z.boolean().default(false),
121
-
122
- // Constraints
123
- allowedLibraries: z.array(z.string()).optional(),
124
- forbiddenPatterns: z.array(z.string()).optional(),
125
- nodeVersion: z.string().optional(),
126
- typescriptVersion: z.string().optional(),
127
- memoryLimit: z.number().optional(),
128
- executionTimeout: z.number().optional(),
129
- timeLimit: z.number().optional(),
130
-
131
- // Diagram generation
132
- diagram: z.boolean().default(false),
133
-
134
- // Batch processing
135
- batchTokenLimit: z.number().optional(),
136
- });
137
-
138
- export type Config = z.infer<typeof ConfigSchema>;
139
-
140
- // Configuration file interface (supports both YAML and JSON)
141
- interface ConfigFile {
142
- api?: {
143
- openrouter_api_key?: string;
144
- model?: string;
145
- writer_model?: string;
146
- test_api?: boolean;
147
- };
148
- model?: {
149
- default?: string;
150
- writer?: string;
151
- };
152
- output?: {
153
- directory?: string;
154
- dir?: string;
155
- format?: 'markdown' | 'json';
156
- };
157
- behavior?: {
158
- debug?: boolean;
159
- log_level?: string;
160
- interactive?: boolean;
161
- };
162
- features?: {
163
- include_tests?: boolean;
164
- include_project_docs?: boolean;
165
- include_dependency_analysis?: boolean;
166
- enable_semantic_chunking?: boolean;
167
- multi_pass?: boolean;
168
- force_single_pass?: boolean;
169
- };
170
- review?: {
171
- type?: string;
172
- interactive?: boolean;
173
- include_tests?: boolean;
174
- include_project_docs?: boolean;
175
- include_dependency_analysis?: boolean;
176
- consolidated?: boolean;
177
- trace_code?: boolean;
178
- use_ts_prune?: boolean;
179
- use_eslint?: boolean;
180
- auto_fix?: boolean;
181
- prompt_all?: boolean;
182
- confirm?: boolean;
183
- };
184
- system?: {
185
- debug?: boolean;
186
- log_level?: string;
187
- };
188
- prompts?: {
189
- prompt_file?: string;
190
- prompt_fragment?: string;
191
- prompt_fragment_position?: 'start' | 'middle' | 'end';
192
- prompt_strategy?: string;
193
- use_cache?: boolean;
194
- };
195
- }
196
-
197
- /**
198
- * Unified Configuration Service
199
- *
200
- * This class provides a single source of truth for all configuration management.
201
- * It handles loading from CLI arguments, environment variables, and config files
202
- * with a clear precedence order.
203
- */
204
- export class ConfigurationService {
205
- private static instance: ConfigurationService | null = null;
206
- private config: Config | null = null;
207
-
208
- private constructor() {}
209
-
210
- /**
211
- * Get the singleton instance of the configuration service
212
- */
213
- public static getInstance(): ConfigurationService {
214
- if (!ConfigurationService.instance) {
215
- ConfigurationService.instance = new ConfigurationService();
216
- }
217
- return ConfigurationService.instance;
218
- }
219
-
220
- /**
221
- * Get the current configuration
222
- * @param cliOptions Optional CLI options to override configuration
223
- * @returns The validated configuration object
224
- */
225
- public getConfig(cliOptions?: CliOptions): Config {
226
- if (!this.config || cliOptions) {
227
- this.config = this.buildConfiguration(cliOptions);
228
- }
229
- return this.config;
230
- }
231
-
232
- /**
233
- * Reset the configuration (useful for testing)
234
- */
235
- public resetConfig(): void {
236
- this.config = null;
237
- }
238
-
239
- /**
240
- * Check if any API key is available
241
- */
242
- public hasAnyApiKey(config?: Config): boolean {
243
- const cfg = config || this.getConfig();
244
- return !!cfg.openRouterApiKey;
245
- }
246
-
247
- /**
248
- * Get paths configuration
249
- */
250
- public getPathsConfig(): {
251
- outputDir: string;
252
- promptsDir: string;
253
- templatesDir: string;
254
- contextPaths?: string[];
255
- } {
256
- const config = this.getConfig();
257
- const promptsDir = resolvePromptTemplatesDir();
258
- return {
259
- outputDir: config.outputDir || 'cr-aia-docs',
260
- promptsDir,
261
- templatesDir: promptsDir,
262
- contextPaths: config.contextPaths,
263
- };
264
- }
265
-
266
- /**
267
- * Get application config (for backward compatibility)
268
- */
269
- public getApplicationConfig(): {
270
- selectedModel: { value: string; source: string };
271
- openRouterApiKey?: { value: string; source: string };
272
- debug: { value: boolean; source: string };
273
- logLevel: { value: string; source: string };
274
- outputDir: { value: string; source: string };
275
- } {
276
- const config = this.getConfig();
277
- return {
278
- selectedModel: {
279
- value: config.model,
280
- source: 'configuration_service',
281
- },
282
- openRouterApiKey: config.openRouterApiKey
283
- ? {
284
- value: config.openRouterApiKey,
285
- source: 'environment',
286
- }
287
- : undefined,
288
- debug: {
289
- value: config.debug,
290
- source: 'configuration_service',
291
- },
292
- logLevel: {
293
- value: config.logLevel,
294
- source: 'configuration_service',
295
- },
296
- outputDir: {
297
- value: config.outputDir,
298
- source: 'configuration_service',
299
- },
300
- };
301
- }
302
-
303
- /**
304
- * Build the configuration from all sources with proper precedence
305
- */
306
- private buildConfiguration(cliOptions?: CliOptions): Config {
307
- // 1. Load environment variables from .env.local
308
- this.loadEnvironmentVariables();
309
-
310
- // 2. Load configuration file
311
- const configFile = this.loadConfigFile(cliOptions?.config);
312
-
313
- // 3. Build configuration with precedence: CLI > Environment > Config File > Defaults
314
- const rawConfig = this.mergeConfigurationSources(cliOptions, configFile);
315
-
316
- // 4. Validate and return the configuration
317
- try {
318
- return ConfigSchema.parse(rawConfig);
319
- } catch (error) {
320
- logger.error('Configuration validation failed:', error);
321
- throw new Error(`Invalid configuration: ${error}`);
322
- }
323
- }
324
-
325
- /**
326
- * Load environment variables from .env.local file
327
- */
328
- private loadEnvironmentVariables(): void {
329
- const envLocalPath = path.join(process.cwd(), '.env.local');
330
-
331
- if (fs.existsSync(envLocalPath)) {
332
- try {
333
- dotenv.config({ path: envLocalPath, override: true });
334
- logger.debug(`Loaded environment variables from ${envLocalPath}`);
335
- } catch (error) {
336
- logger.warn(`Failed to load environment variables from ${envLocalPath}:`, error);
337
- }
338
- }
339
- }
340
-
341
- /**
342
- * Load configuration file (YAML or JSON)
343
- */
344
- private loadConfigFile(configPath?: string): ConfigFile | null {
345
- const defaultConfigFiles = [
346
- '.cr-aia.yml',
347
- ];
348
-
349
- const filesToTry = configPath ? [configPath] : defaultConfigFiles;
350
-
351
- for (const filePath of filesToTry) {
352
- const fullPath = path.resolve(filePath);
353
-
354
- if (fs.existsSync(fullPath)) {
355
- try {
356
- const content = fs.readFileSync(fullPath, 'utf8');
357
- const extension = path.extname(fullPath).toLowerCase();
358
-
359
- let config: ConfigFile;
360
- if (extension === '.json') {
361
- config = JSON.parse(content);
362
- } else if (extension === '.yaml' || extension === '.yml') {
363
- // Use dynamic import for js-yaml
364
- const yaml = require('js-yaml');
365
- config = yaml.load(content) as ConfigFile;
366
- } else {
367
- logger.warn(`Unsupported config file format: ${extension}`);
368
- continue;
369
- }
370
-
371
- logger.debug(`Loaded configuration from ${fullPath}`);
372
- return config;
373
- } catch (error) {
374
- logger.error(`Failed to load config file ${fullPath}:`, error);
375
- if (configPath) {
376
- throw error; // If explicitly specified, throw the error
377
- }
378
- }
379
- }
380
- }
381
-
382
- return null;
383
- }
384
-
385
- /**
386
- * Merge configuration from all sources with proper precedence
387
- */
388
- private mergeConfigurationSources(
389
- cliOptions?: CliOptions,
390
- configFile?: ConfigFile | null,
391
- ): Partial<Config> {
392
- return {
393
- // API Keys (OpenRouter only, environment only, not exposed via CLI for security)
394
- openRouterApiKey: this.getApiKey('openrouter'),
395
-
396
- // Model configuration
397
- model:
398
- cliOptions?.model ||
399
- process.env.AI_CODE_REVIEW_MODEL ||
400
- configFile?.model?.default ||
401
- configFile?.api?.model ||
402
- 'openrouter:anthropic/claude-3-opus-20240229',
403
-
404
- writerModel:
405
- cliOptions?.writerModel ||
406
- process.env.AI_CODE_REVIEW_WRITER_MODEL ||
407
- configFile?.model?.writer ||
408
- configFile?.api?.writer_model,
409
-
410
- // Output configuration
411
- outputDir:
412
- cliOptions?.outputDir ||
413
- process.env.AI_CODE_REVIEW_OUTPUT_DIR ||
414
- configFile?.output?.directory ||
415
- configFile?.output?.dir ||
416
- 'cr-aia-docs',
417
-
418
- outputFormat:
419
- (cliOptions?.output as 'markdown' | 'json') ||
420
- (process.env.AI_CODE_REVIEW_OUTPUT_FORMAT as 'markdown' | 'json') ||
421
- configFile?.output?.format ||
422
- 'markdown',
423
-
424
- // Behavior configuration
425
- debug:
426
- cliOptions?.debug ??
427
- (process.env.AI_CODE_REVIEW_DEBUG === 'true' ? true : undefined) ??
428
- configFile?.behavior?.debug ??
429
- configFile?.system?.debug ??
430
- false,
431
-
432
- logLevel:
433
- (cliOptions?.logLevel as any) ||
434
- (process.env.AI_CODE_REVIEW_LOG_LEVEL as any) ||
435
- configFile?.behavior?.log_level ||
436
- configFile?.system?.log_level ||
437
- 'info',
438
-
439
- interactive:
440
- cliOptions?.interactive ??
441
- (process.env.AI_CODE_REVIEW_INTERACTIVE === 'true' ? true : undefined) ??
442
- configFile?.behavior?.interactive ??
443
- configFile?.review?.interactive ??
444
- false,
445
-
446
- // Review features
447
- includeTests:
448
- cliOptions?.includeTests ??
449
- (process.env.AI_CODE_REVIEW_INCLUDE_TESTS === 'true' ? true : undefined) ??
450
- configFile?.features?.include_tests ??
451
- configFile?.review?.include_tests ??
452
- false,
453
-
454
- includeProjectDocs:
455
- cliOptions?.includeProjectDocs ??
456
- (process.env.AI_CODE_REVIEW_INCLUDE_PROJECT_DOCS === 'true' ? true : undefined) ??
457
- configFile?.features?.include_project_docs ??
458
- configFile?.review?.include_project_docs ??
459
- true,
460
-
461
- includeDependencyAnalysis:
462
- cliOptions?.includeDependencyAnalysis ??
463
- (process.env.AI_CODE_REVIEW_INCLUDE_DEPENDENCY_ANALYSIS === 'true' ? true : undefined) ??
464
- configFile?.features?.include_dependency_analysis ??
465
- configFile?.review?.include_dependency_analysis ??
466
- true,
467
-
468
- // Multi-pass configuration
469
- multiPass:
470
- cliOptions?.multiPass ??
471
- (process.env.AI_CODE_REVIEW_MULTI_PASS === 'true' ? true : undefined) ??
472
- configFile?.features?.multi_pass ??
473
- false,
474
-
475
- forceSinglePass:
476
- cliOptions?.forceSinglePass ??
477
- (process.env.AI_CODE_REVIEW_FORCE_SINGLE_PASS === 'true' ? true : undefined) ??
478
- configFile?.features?.force_single_pass ??
479
- false,
480
-
481
- contextMaintenanceFactor:
482
- cliOptions?.contextMaintenanceFactor ??
483
- toOptionalNumber(process.env.AI_CODE_REVIEW_CONTEXT_MAINTENANCE_FACTOR) ??
484
- 0.15,
485
-
486
- // Advanced features
487
- testApi:
488
- cliOptions?.testApi ??
489
- (process.env.AI_CODE_REVIEW_TEST_API === 'true' ? true : undefined) ??
490
- configFile?.api?.test_api ??
491
- false,
492
-
493
- estimate:
494
- cliOptions?.estimate ??
495
- (process.env.AI_CODE_REVIEW_ESTIMATE === 'true' ? true : undefined) ??
496
- false,
497
-
498
- noConfirm:
499
- cliOptions?.noConfirm ??
500
- (process.env.AI_CODE_REVIEW_NO_CONFIRM === 'true' ? true : undefined) ??
501
- !(configFile?.review?.confirm ?? true),
502
-
503
- // Paths
504
- contextPaths: undefined, // contextPaths is not available in CliOptions
505
- configPath: cliOptions?.config,
506
-
507
- // Coding test specific (from CLI options)
508
- assignmentFile: cliOptions?.assignmentFile,
509
- assignmentUrl: cliOptions?.assignmentUrl,
510
- assignmentText: cliOptions?.assignmentText,
511
- evaluationTemplate: cliOptions?.evaluationTemplate,
512
- templateUrl: cliOptions?.templateUrl,
513
- rubricFile: cliOptions?.rubricFile,
514
- assessmentType: cliOptions?.assessmentType || 'coding-challenge',
515
- difficultyLevel: cliOptions?.difficultyLevel || 'mid',
516
-
517
- // Evaluation weights
518
- weightCorrectness: cliOptions?.weightCorrectness ?? 30,
519
- weightCodeQuality: cliOptions?.weightCodeQuality ?? 25,
520
- weightArchitecture: cliOptions?.weightArchitecture ?? 20,
521
- weightPerformance: cliOptions?.weightPerformance ?? 15,
522
- weightTesting: cliOptions?.weightTesting ?? 10,
523
-
524
- // Evaluation options
525
- evaluateDocumentation: cliOptions?.evaluateDocumentation ?? false,
526
- evaluateGitHistory: cliOptions?.evaluateGitHistory ?? false,
527
- evaluateEdgeCases: cliOptions?.evaluateEdgeCases ?? false,
528
- evaluateErrorHandling: cliOptions?.evaluateErrorHandling ?? false,
529
-
530
- // Scoring system
531
- scoringSystem: cliOptions?.scoringSystem || 'numeric',
532
- maxScore: cliOptions?.maxScore ?? 100,
533
- passingThreshold: cliOptions?.passingThreshold ?? 70,
534
- scoreBreakdown: cliOptions?.scoreBreakdown ?? true,
535
-
536
- // Feedback configuration
537
- feedbackLevel: cliOptions?.feedbackLevel || 'detailed',
538
- includeExamples: cliOptions?.includeExamples ?? true,
539
- includeSuggestions: cliOptions?.includeSuggestions ?? true,
540
- includeResources: cliOptions?.includeResources ?? false,
541
-
542
- // AI detection
543
- enableAiDetection: cliOptions?.enableAiDetection ?? false,
544
- aiDetectionThreshold: cliOptions?.aiDetectionThreshold ?? 0.7,
545
- aiDetectionAnalyzers: cliOptions?.aiDetectionAnalyzers || 'git,documentation',
546
- aiDetectionIncludeInReport: cliOptions?.aiDetectionIncludeInReport ?? true,
547
- aiDetectionFailOnDetection: cliOptions?.aiDetectionFailOnDetection ?? false,
548
-
549
- // Constraints
550
- allowedLibraries: cliOptions?.allowedLibraries,
551
- forbiddenPatterns: cliOptions?.forbiddenPatterns,
552
- nodeVersion: cliOptions?.nodeVersion,
553
- typescriptVersion: cliOptions?.typescriptVersion,
554
- memoryLimit: cliOptions?.memoryLimit,
555
- executionTimeout: cliOptions?.executionTimeout,
556
- timeLimit: cliOptions?.timeLimit,
557
-
558
- // Diagram generation
559
- diagram: cliOptions?.diagram ?? false,
560
-
561
- // Batch processing
562
- batchTokenLimit: cliOptions?.batchTokenLimit,
563
- };
564
- }
565
-
566
- /**
567
- * Get API key from environment variables (OpenRouter only)
568
- */
569
- private getApiKey(provider: 'openrouter'): string | undefined {
570
- if (provider === 'openrouter') {
571
- return process.env.AI_CODE_REVIEW_OPENROUTER_API_KEY || process.env.OPENROUTER_API_KEY;
572
- }
573
- return undefined;
574
- }
575
- }
576
-
577
- // Export singleton instance for easy access
578
- export const configurationService = ConfigurationService.getInstance();
579
-
580
- // Export convenience functions for backward compatibility
581
- export function getConfig(cliOptions?: CliOptions): Config {
582
- return configurationService.getConfig(cliOptions);
583
- }
584
-
585
- export function resetConfig(): void {
586
- configurationService.resetConfig();
587
- }
588
-
589
- export function hasAnyApiKey(config?: Config): boolean {
590
- return configurationService.hasAnyApiKey(config);
591
- }