codereview-aia 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (558) hide show
  1. package/dist/analysis/FindingsExtractor.d.ts +105 -0
  2. package/dist/analysis/FindingsExtractor.js +363 -0
  3. package/dist/analysis/FindingsExtractor.js.map +1 -0
  4. package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.d.ts +111 -0
  5. package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.js +215 -0
  6. package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.js.map +1 -0
  7. package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.d.ts +142 -0
  8. package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.js +503 -0
  9. package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.js.map +1 -0
  10. package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.d.ts +88 -0
  11. package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.js +343 -0
  12. package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.js.map +1 -0
  13. package/dist/analysis/ai-detection/core/AIDetectionEngine.d.ts +104 -0
  14. package/dist/analysis/ai-detection/core/AIDetectionEngine.js +369 -0
  15. package/dist/analysis/ai-detection/core/AIDetectionEngine.js.map +1 -0
  16. package/dist/analysis/ai-detection/types/DetectionTypes.d.ts +364 -0
  17. package/dist/analysis/ai-detection/types/DetectionTypes.js +32 -0
  18. package/dist/analysis/ai-detection/types/DetectionTypes.js.map +1 -0
  19. package/dist/analysis/ai-detection/utils/SubmissionConverter.d.ts +97 -0
  20. package/dist/analysis/ai-detection/utils/SubmissionConverter.js +339 -0
  21. package/dist/analysis/ai-detection/utils/SubmissionConverter.js.map +1 -0
  22. package/dist/analysis/context/ReviewContext.d.ts +184 -0
  23. package/dist/analysis/context/ReviewContext.js +294 -0
  24. package/dist/analysis/context/ReviewContext.js.map +1 -0
  25. package/{src/analysis/context/index.ts → dist/analysis/context/index.d.ts} +0 -1
  26. package/dist/analysis/context/index.js +23 -0
  27. package/dist/analysis/context/index.js.map +1 -0
  28. package/{src/analysis/index.ts → dist/analysis/index.d.ts} +0 -1
  29. package/dist/analysis/index.js +24 -0
  30. package/dist/analysis/index.js.map +1 -0
  31. package/dist/analysis/static/wpPhpcsRunner.d.ts +11 -0
  32. package/dist/analysis/static/wpPhpcsRunner.js +219 -0
  33. package/dist/analysis/static/wpPhpcsRunner.js.map +1 -0
  34. package/dist/analysis/tokens/TokenAnalysisFormatter.d.ts +27 -0
  35. package/{src/analysis/tokens/TokenAnalysisFormatter.ts → dist/analysis/tokens/TokenAnalysisFormatter.js} +64 -75
  36. package/dist/analysis/tokens/TokenAnalysisFormatter.js.map +1 -0
  37. package/dist/analysis/tokens/TokenAnalyzer.d.ts +155 -0
  38. package/dist/analysis/tokens/TokenAnalyzer.js +502 -0
  39. package/dist/analysis/tokens/TokenAnalyzer.js.map +1 -0
  40. package/{src/analysis/tokens/index.ts → dist/analysis/tokens/index.d.ts} +0 -1
  41. package/dist/analysis/tokens/index.js +24 -0
  42. package/dist/analysis/tokens/index.js.map +1 -0
  43. package/dist/clients/base/abstractClient.d.ts +99 -0
  44. package/dist/clients/base/abstractClient.js +98 -0
  45. package/dist/clients/base/abstractClient.js.map +1 -0
  46. package/dist/clients/base/httpClient.d.ts +24 -0
  47. package/dist/clients/base/httpClient.js +147 -0
  48. package/dist/clients/base/httpClient.js.map +1 -0
  49. package/{src/clients/base/index.ts → dist/clients/base/index.d.ts} +0 -1
  50. package/dist/clients/base/index.js +28 -0
  51. package/dist/clients/base/index.js.map +1 -0
  52. package/dist/clients/base/modelDetection.d.ts +41 -0
  53. package/dist/clients/base/modelDetection.js +88 -0
  54. package/dist/clients/base/modelDetection.js.map +1 -0
  55. package/dist/clients/base/responseProcessor.d.ts +45 -0
  56. package/dist/clients/base/responseProcessor.js +495 -0
  57. package/dist/clients/base/responseProcessor.js.map +1 -0
  58. package/dist/clients/factory/clientFactory.d.ts +23 -0
  59. package/dist/clients/factory/clientFactory.js +50 -0
  60. package/dist/clients/factory/clientFactory.js.map +1 -0
  61. package/{src/clients/factory/index.ts → dist/clients/factory/index.d.ts} +0 -1
  62. package/dist/clients/factory/index.js +24 -0
  63. package/dist/clients/factory/index.js.map +1 -0
  64. package/{src/clients/implementations/index.ts → dist/clients/implementations/index.d.ts} +0 -1
  65. package/dist/clients/implementations/index.js +24 -0
  66. package/dist/clients/implementations/index.js.map +1 -0
  67. package/dist/clients/implementations/openRouterClient.d.ts +69 -0
  68. package/dist/clients/implementations/openRouterClient.js +294 -0
  69. package/dist/clients/implementations/openRouterClient.js.map +1 -0
  70. package/dist/clients/openRouterClient.d.ts +42 -0
  71. package/dist/clients/openRouterClient.js +580 -0
  72. package/dist/clients/openRouterClient.js.map +1 -0
  73. package/{src/clients/openRouterClientWrapper.ts → dist/clients/openRouterClientWrapper.d.ts} +2 -24
  74. package/dist/clients/openRouterClientWrapper.js +64 -0
  75. package/dist/clients/openRouterClientWrapper.js.map +1 -0
  76. package/dist/clients/utils/directoryStructure.d.ts +14 -0
  77. package/dist/clients/utils/directoryStructure.js +48 -0
  78. package/dist/clients/utils/directoryStructure.js.map +1 -0
  79. package/{src/clients/utils/index.ts → dist/clients/utils/index.d.ts} +0 -1
  80. package/dist/clients/utils/index.js +31 -0
  81. package/dist/clients/utils/index.js.map +1 -0
  82. package/dist/clients/utils/languageDetection.d.ts +13 -0
  83. package/dist/clients/utils/languageDetection.js +46 -0
  84. package/dist/clients/utils/languageDetection.js.map +1 -0
  85. package/dist/clients/utils/promptFormatter.d.ts +37 -0
  86. package/dist/clients/utils/promptFormatter.js +150 -0
  87. package/dist/clients/utils/promptFormatter.js.map +1 -0
  88. package/{src/clients/utils/promptLoader.ts → dist/clients/utils/promptLoader.d.ts} +1 -27
  89. package/dist/clients/utils/promptLoader.js +49 -0
  90. package/dist/clients/utils/promptLoader.js.map +1 -0
  91. package/dist/clients/utils/tokenCounter.d.ts +81 -0
  92. package/dist/clients/utils/tokenCounter.js +184 -0
  93. package/dist/clients/utils/tokenCounter.js.map +1 -0
  94. package/dist/core/ApiClientSelector.d.ts +8 -0
  95. package/dist/core/ApiClientSelector.js +29 -0
  96. package/dist/core/ApiClientSelector.js.map +1 -0
  97. package/dist/core/ConfigurationService.d.ts +307 -0
  98. package/dist/core/ConfigurationService.js +516 -0
  99. package/dist/core/ConfigurationService.js.map +1 -0
  100. package/dist/core/ConsolidationService.d.ts +99 -0
  101. package/dist/core/ConsolidationService.js +341 -0
  102. package/dist/core/ConsolidationService.js.map +1 -0
  103. package/dist/core/InteractiveDisplayManager.d.ts +22 -0
  104. package/dist/core/InteractiveDisplayManager.js +70 -0
  105. package/dist/core/InteractiveDisplayManager.js.map +1 -0
  106. package/dist/core/OutputManager.d.ts +26 -0
  107. package/dist/core/OutputManager.js +217 -0
  108. package/dist/core/OutputManager.js.map +1 -0
  109. package/dist/core/ReviewGenerator.d.ts +13 -0
  110. package/dist/core/ReviewGenerator.js +102 -0
  111. package/dist/core/ReviewGenerator.js.map +1 -0
  112. package/dist/core/fileDiscovery.d.ts +35 -0
  113. package/dist/core/fileDiscovery.js +202 -0
  114. package/dist/core/fileDiscovery.js.map +1 -0
  115. package/dist/core/handlers/EstimationHandler.d.ts +18 -0
  116. package/dist/core/handlers/EstimationHandler.js +110 -0
  117. package/dist/core/handlers/EstimationHandler.js.map +1 -0
  118. package/dist/core/handlers/FileProcessingHandler.d.ts +31 -0
  119. package/dist/core/handlers/FileProcessingHandler.js +164 -0
  120. package/dist/core/handlers/FileProcessingHandler.js.map +1 -0
  121. package/dist/core/handlers/OutputHandler.d.ts +27 -0
  122. package/dist/core/handlers/OutputHandler.js +127 -0
  123. package/dist/core/handlers/OutputHandler.js.map +1 -0
  124. package/dist/core/handlers/ReviewExecutor.d.ts +32 -0
  125. package/dist/core/handlers/ReviewExecutor.js +111 -0
  126. package/dist/core/handlers/ReviewExecutor.js.map +1 -0
  127. package/dist/core/reviewOrchestrator.d.ts +24 -0
  128. package/dist/core/reviewOrchestrator.js +354 -0
  129. package/dist/core/reviewOrchestrator.js.map +1 -0
  130. package/dist/core/utils/ModelInfoUtils.d.ts +16 -0
  131. package/dist/core/utils/ModelInfoUtils.js +54 -0
  132. package/dist/core/utils/ModelInfoUtils.js.map +1 -0
  133. package/{src/formatters/outputFormatter.ts → dist/formatters/outputFormatter.d.ts} +2 -33
  134. package/dist/formatters/outputFormatter.js +65 -0
  135. package/dist/formatters/outputFormatter.js.map +1 -0
  136. package/dist/formatters/utils/IssueFormatters.d.ts +20 -0
  137. package/dist/formatters/utils/IssueFormatters.js +67 -0
  138. package/dist/formatters/utils/IssueFormatters.js.map +1 -0
  139. package/dist/formatters/utils/JsonFormatter.d.ts +13 -0
  140. package/dist/formatters/utils/JsonFormatter.js +57 -0
  141. package/dist/formatters/utils/JsonFormatter.js.map +1 -0
  142. package/dist/formatters/utils/MarkdownFormatters.d.ts +51 -0
  143. package/dist/formatters/utils/MarkdownFormatters.js +456 -0
  144. package/dist/formatters/utils/MarkdownFormatters.js.map +1 -0
  145. package/dist/formatters/utils/MetadataFormatter.d.ts +65 -0
  146. package/dist/formatters/utils/MetadataFormatter.js +219 -0
  147. package/dist/formatters/utils/MetadataFormatter.js.map +1 -0
  148. package/dist/formatters/utils/ModelInfoExtractor.d.ts +33 -0
  149. package/dist/formatters/utils/ModelInfoExtractor.js +111 -0
  150. package/dist/formatters/utils/ModelInfoExtractor.js.map +1 -0
  151. package/dist/index.d.ts +1 -0
  152. package/dist/index.js.map +1 -0
  153. package/dist/plugins/PluginInterface.d.ts +44 -0
  154. package/dist/plugins/PluginInterface.js +9 -0
  155. package/dist/plugins/PluginInterface.js.map +1 -0
  156. package/dist/plugins/PluginManager.d.ts +51 -0
  157. package/dist/plugins/PluginManager.js +151 -0
  158. package/dist/plugins/PluginManager.js.map +1 -0
  159. package/dist/prompts/PromptManager.d.ts +30 -0
  160. package/dist/prompts/PromptManager.js +62 -0
  161. package/dist/prompts/PromptManager.js.map +1 -0
  162. package/dist/prompts/cache/PromptCache.d.ts +32 -0
  163. package/dist/prompts/cache/PromptCache.js +48 -0
  164. package/dist/prompts/cache/PromptCache.js.map +1 -0
  165. package/dist/runtime/auth/service.d.ts +2 -0
  166. package/dist/runtime/auth/service.js +41 -0
  167. package/dist/runtime/auth/service.js.map +1 -0
  168. package/dist/runtime/auth/session.d.ts +5 -0
  169. package/dist/runtime/auth/session.js +87 -0
  170. package/dist/runtime/auth/session.js.map +1 -0
  171. package/dist/runtime/auth/types.d.ts +9 -0
  172. package/dist/runtime/auth/types.js +3 -0
  173. package/dist/runtime/auth/types.js.map +1 -0
  174. package/dist/runtime/cliEntry.d.ts +1 -0
  175. package/dist/runtime/cliEntry.js +276 -0
  176. package/dist/runtime/cliEntry.js.map +1 -0
  177. package/dist/runtime/debug/logManager.d.ts +5 -0
  178. package/dist/runtime/debug/logManager.js +31 -0
  179. package/dist/runtime/debug/logManager.js.map +1 -0
  180. package/dist/runtime/errors.d.ts +5 -0
  181. package/dist/runtime/errors.js +15 -0
  182. package/dist/runtime/errors.js.map +1 -0
  183. package/dist/runtime/fileCollector.d.ts +14 -0
  184. package/dist/runtime/fileCollector.js +381 -0
  185. package/dist/runtime/fileCollector.js.map +1 -0
  186. package/dist/runtime/manifest.d.ts +1 -0
  187. package/dist/runtime/manifest.js +65 -0
  188. package/dist/runtime/manifest.js.map +1 -0
  189. package/dist/runtime/openrouterProxy.d.ts +4 -0
  190. package/dist/runtime/openrouterProxy.js +43 -0
  191. package/dist/runtime/openrouterProxy.js.map +1 -0
  192. package/dist/runtime/preprod/batchStreamer.d.ts +54 -0
  193. package/dist/runtime/preprod/batchStreamer.js +159 -0
  194. package/dist/runtime/preprod/batchStreamer.js.map +1 -0
  195. package/dist/runtime/preprod/crEdgeServiceClient.d.ts +30 -0
  196. package/dist/runtime/preprod/crEdgeServiceClient.js +133 -0
  197. package/dist/runtime/preprod/crEdgeServiceClient.js.map +1 -0
  198. package/dist/runtime/preprod/progressTracker.d.ts +21 -0
  199. package/dist/runtime/preprod/progressTracker.js +80 -0
  200. package/dist/runtime/preprod/progressTracker.js.map +1 -0
  201. package/dist/runtime/preprod/webCheck.d.ts +1 -0
  202. package/dist/runtime/preprod/webCheck.js +102 -0
  203. package/dist/runtime/preprod/webCheck.js.map +1 -0
  204. package/dist/runtime/proxyConfig.d.ts +6 -0
  205. package/dist/runtime/proxyConfig.js +86 -0
  206. package/dist/runtime/proxyConfig.js.map +1 -0
  207. package/dist/runtime/proxyEnvironment.d.ts +3 -0
  208. package/dist/runtime/proxyEnvironment.js +63 -0
  209. package/dist/runtime/proxyEnvironment.js.map +1 -0
  210. package/dist/runtime/reportMerge.d.ts +30 -0
  211. package/dist/runtime/reportMerge.js +70 -0
  212. package/dist/runtime/reportMerge.js.map +1 -0
  213. package/dist/runtime/reporting/markdownReportBuilder.d.ts +17 -0
  214. package/dist/runtime/reporting/markdownReportBuilder.js +154 -0
  215. package/dist/runtime/reporting/markdownReportBuilder.js.map +1 -0
  216. package/dist/runtime/reporting/reportDataCollector.d.ts +31 -0
  217. package/dist/runtime/reporting/reportDataCollector.js +170 -0
  218. package/dist/runtime/reporting/reportDataCollector.js.map +1 -0
  219. package/dist/runtime/reporting/summaryGenerator.d.ts +10 -0
  220. package/dist/runtime/reporting/summaryGenerator.js +67 -0
  221. package/dist/runtime/reporting/summaryGenerator.js.map +1 -0
  222. package/dist/runtime/reviewPipeline.d.ts +61 -0
  223. package/dist/runtime/reviewPipeline.js +231 -0
  224. package/dist/runtime/reviewPipeline.js.map +1 -0
  225. package/dist/runtime/runAiCodeReview.d.ts +36 -0
  226. package/dist/runtime/runAiCodeReview.js +409 -0
  227. package/dist/runtime/runAiCodeReview.js.map +1 -0
  228. package/dist/runtime/runtimeConfig.d.ts +4 -0
  229. package/dist/runtime/runtimeConfig.js +7 -0
  230. package/dist/runtime/runtimeConfig.js.map +1 -0
  231. package/dist/runtime/ui/Layout.d.ts +11 -0
  232. package/dist/runtime/ui/Layout.js +47 -0
  233. package/dist/runtime/ui/Layout.js.map +1 -0
  234. package/dist/runtime/ui/RuntimeApp.d.ts +6 -0
  235. package/dist/runtime/ui/RuntimeApp.js +275 -0
  236. package/dist/runtime/ui/RuntimeApp.js.map +1 -0
  237. package/dist/runtime/ui/inkModules.d.ts +10 -0
  238. package/dist/runtime/ui/inkModules.js +63 -0
  239. package/dist/runtime/ui/inkModules.js.map +1 -0
  240. package/dist/runtime/ui/screens/AuthScreen.d.ts +6 -0
  241. package/dist/runtime/ui/screens/AuthScreen.js +67 -0
  242. package/dist/runtime/ui/screens/AuthScreen.js.map +1 -0
  243. package/dist/runtime/ui/screens/ModeSelection.d.ts +11 -0
  244. package/dist/runtime/ui/screens/ModeSelection.js +169 -0
  245. package/dist/runtime/ui/screens/ModeSelection.js.map +1 -0
  246. package/dist/runtime/ui/screens/ProgressScreen.d.ts +21 -0
  247. package/dist/runtime/ui/screens/ProgressScreen.js +86 -0
  248. package/dist/runtime/ui/screens/ProgressScreen.js.map +1 -0
  249. package/dist/runtime/ui/screens/ResultsScreen.d.ts +7 -0
  250. package/dist/runtime/ui/screens/ResultsScreen.js +34 -0
  251. package/dist/runtime/ui/screens/ResultsScreen.js.map +1 -0
  252. package/dist/strategies/ArchitecturalReviewStrategy.d.ts +29 -0
  253. package/dist/strategies/ArchitecturalReviewStrategy.js +42 -0
  254. package/dist/strategies/ArchitecturalReviewStrategy.js.map +1 -0
  255. package/dist/strategies/CodingTestReviewStrategy.d.ts +194 -0
  256. package/dist/strategies/CodingTestReviewStrategy.js +681 -0
  257. package/dist/strategies/CodingTestReviewStrategy.js.map +1 -0
  258. package/dist/strategies/ConsolidatedReviewStrategy.d.ts +25 -0
  259. package/dist/strategies/ConsolidatedReviewStrategy.js +45 -0
  260. package/dist/strategies/ConsolidatedReviewStrategy.js.map +1 -0
  261. package/dist/strategies/ExtractPatternsReviewStrategy.d.ts +30 -0
  262. package/dist/strategies/ExtractPatternsReviewStrategy.js +51 -0
  263. package/dist/strategies/ExtractPatternsReviewStrategy.js.map +1 -0
  264. package/dist/strategies/MultiPassReviewStrategy.d.ts +86 -0
  265. package/dist/strategies/MultiPassReviewStrategy.js +590 -0
  266. package/dist/strategies/MultiPassReviewStrategy.js.map +1 -0
  267. package/dist/strategies/ReviewStrategy.d.ts +45 -0
  268. package/dist/strategies/ReviewStrategy.js +24 -0
  269. package/dist/strategies/ReviewStrategy.js.map +1 -0
  270. package/dist/strategies/StrategyFactory.d.ts +19 -0
  271. package/dist/strategies/StrategyFactory.js +72 -0
  272. package/dist/strategies/StrategyFactory.js.map +1 -0
  273. package/{src/strategies/index.ts → dist/strategies/index.d.ts} +0 -1
  274. package/dist/strategies/index.js +30 -0
  275. package/dist/strategies/index.js.map +1 -0
  276. package/dist/tokenizers/baseTokenizer.d.ts +25 -0
  277. package/dist/tokenizers/baseTokenizer.js +48 -0
  278. package/dist/tokenizers/baseTokenizer.js.map +1 -0
  279. package/dist/tokenizers/gptTokenizer.d.ts +7 -0
  280. package/dist/tokenizers/gptTokenizer.js +28 -0
  281. package/dist/tokenizers/gptTokenizer.js.map +1 -0
  282. package/{src/tokenizers/index.ts → dist/tokenizers/index.d.ts} +0 -1
  283. package/dist/tokenizers/index.js +24 -0
  284. package/dist/tokenizers/index.js.map +1 -0
  285. package/dist/types/apiResponses.d.ts +39 -0
  286. package/dist/types/apiResponses.js +9 -0
  287. package/dist/types/apiResponses.js.map +1 -0
  288. package/dist/types/cli.d.ts +22 -0
  289. package/dist/types/cli.js +3 -0
  290. package/dist/types/cli.js.map +1 -0
  291. package/{src/types/common.ts → dist/types/common.d.ts} +2 -19
  292. package/dist/types/common.js +14 -0
  293. package/dist/types/common.js.map +1 -0
  294. package/dist/types/configuration.d.ts +682 -0
  295. package/dist/types/configuration.js +65 -0
  296. package/dist/types/configuration.js.map +1 -0
  297. package/dist/types/review.d.ts +318 -0
  298. package/dist/types/review.js +8 -0
  299. package/dist/types/review.js.map +1 -0
  300. package/dist/types/reviewSchema.d.ts +543 -0
  301. package/{src/types/reviewSchema.ts → dist/types/reviewSchema.js} +44 -104
  302. package/dist/types/reviewSchema.js.map +1 -0
  303. package/dist/types/structuredReview.d.ts +119 -0
  304. package/dist/types/structuredReview.js +6 -0
  305. package/dist/types/structuredReview.js.map +1 -0
  306. package/dist/types/tokenAnalysis.d.ts +44 -0
  307. package/dist/types/tokenAnalysis.js +4 -0
  308. package/dist/types/tokenAnalysis.js.map +1 -0
  309. package/dist/utils/FileReader.d.ts +33 -0
  310. package/dist/utils/FileReader.js +88 -0
  311. package/dist/utils/FileReader.js.map +1 -0
  312. package/dist/utils/FileWriter.d.ts +26 -0
  313. package/dist/utils/FileWriter.js +76 -0
  314. package/dist/utils/FileWriter.js.map +1 -0
  315. package/dist/utils/PathGenerator.d.ts +30 -0
  316. package/dist/utils/PathGenerator.js +82 -0
  317. package/dist/utils/PathGenerator.js.map +1 -0
  318. package/dist/utils/api/apiUtils.d.ts +3 -0
  319. package/dist/utils/api/apiUtils.js +20 -0
  320. package/dist/utils/api/apiUtils.js.map +1 -0
  321. package/dist/utils/api/index.js +18 -0
  322. package/dist/utils/api/index.js.map +1 -0
  323. package/dist/utils/apiErrorHandler.d.ts +130 -0
  324. package/dist/utils/apiErrorHandler.js +256 -0
  325. package/dist/utils/apiErrorHandler.js.map +1 -0
  326. package/dist/utils/ciDataCollector.d.ts +51 -0
  327. package/dist/utils/ciDataCollector.js +197 -0
  328. package/dist/utils/ciDataCollector.js.map +1 -0
  329. package/dist/utils/codingTestConfigLoader.d.ts +66 -0
  330. package/dist/utils/codingTestConfigLoader.js +420 -0
  331. package/dist/utils/codingTestConfigLoader.js.map +1 -0
  332. package/dist/utils/dependencies/aiDependencyAnalyzer.d.ts +30 -0
  333. package/dist/utils/dependencies/aiDependencyAnalyzer.js +343 -0
  334. package/dist/utils/dependencies/aiDependencyAnalyzer.js.map +1 -0
  335. package/dist/utils/detection/frameworkDetector.d.ts +43 -0
  336. package/dist/utils/detection/frameworkDetector.js +850 -0
  337. package/dist/utils/detection/frameworkDetector.js.map +1 -0
  338. package/{src/utils/detection/index.ts → dist/utils/detection/index.d.ts} +0 -1
  339. package/dist/utils/detection/index.js +28 -0
  340. package/dist/utils/detection/index.js.map +1 -0
  341. package/dist/utils/detection/projectTypeDetector.d.ts +27 -0
  342. package/dist/utils/detection/projectTypeDetector.js +469 -0
  343. package/dist/utils/detection/projectTypeDetector.js.map +1 -0
  344. package/dist/utils/diagramGenerator.d.ts +49 -0
  345. package/dist/utils/diagramGenerator.js +218 -0
  346. package/dist/utils/diagramGenerator.js.map +1 -0
  347. package/dist/utils/errorLogger.d.ts +24 -0
  348. package/dist/utils/errorLogger.js +59 -0
  349. package/dist/utils/errorLogger.js.map +1 -0
  350. package/dist/utils/estimationUtils.d.ts +139 -0
  351. package/dist/utils/estimationUtils.js +329 -0
  352. package/dist/utils/estimationUtils.js.map +1 -0
  353. package/dist/utils/fileFilters.d.ts +72 -0
  354. package/dist/utils/fileFilters.js +338 -0
  355. package/dist/utils/fileFilters.js.map +1 -0
  356. package/dist/utils/fileSystem.d.ts +22 -0
  357. package/dist/utils/fileSystem.js +45 -0
  358. package/dist/utils/fileSystem.js.map +1 -0
  359. package/{src/utils/index.ts → dist/utils/index.d.ts} +0 -14
  360. package/dist/utils/index.js +52 -0
  361. package/dist/utils/index.js.map +1 -0
  362. package/dist/utils/logger.d.ts +77 -0
  363. package/dist/utils/logger.js +271 -0
  364. package/dist/utils/logger.js.map +1 -0
  365. package/dist/utils/pathValidator.d.ts +40 -0
  366. package/dist/utils/pathValidator.js +98 -0
  367. package/dist/utils/pathValidator.js.map +1 -0
  368. package/{src/utils/priorityFilter.ts → dist/utils/priorityFilter.d.ts} +1 -26
  369. package/dist/utils/priorityFilter.js +54 -0
  370. package/dist/utils/priorityFilter.js.map +1 -0
  371. package/dist/utils/projectDocs.d.ts +47 -0
  372. package/dist/utils/projectDocs.js +158 -0
  373. package/dist/utils/projectDocs.js.map +1 -0
  374. package/dist/utils/promptPaths.d.ts +6 -0
  375. package/dist/utils/promptPaths.js +33 -0
  376. package/dist/utils/promptPaths.js.map +1 -0
  377. package/dist/utils/promptTemplateManager.d.ts +34 -0
  378. package/dist/utils/promptTemplateManager.js +141 -0
  379. package/dist/utils/promptTemplateManager.js.map +1 -0
  380. package/dist/utils/review/consolidateReview.d.ts +15 -0
  381. package/dist/utils/review/consolidateReview.js +481 -0
  382. package/dist/utils/review/consolidateReview.js.map +1 -0
  383. package/dist/utils/review/fixDisplay.d.ts +20 -0
  384. package/dist/utils/review/fixDisplay.js +84 -0
  385. package/dist/utils/review/fixDisplay.js.map +1 -0
  386. package/dist/utils/review/fixImplementation.d.ts +28 -0
  387. package/dist/utils/review/fixImplementation.js +60 -0
  388. package/dist/utils/review/fixImplementation.js.map +1 -0
  389. package/dist/utils/review/index.d.ts +13 -0
  390. package/dist/utils/review/index.js +50 -0
  391. package/dist/utils/review/index.js.map +1 -0
  392. package/dist/utils/review/interactiveProcessing.d.ts +25 -0
  393. package/dist/utils/review/interactiveProcessing.js +251 -0
  394. package/dist/utils/review/interactiveProcessing.js.map +1 -0
  395. package/dist/utils/review/progressTracker.d.ts +106 -0
  396. package/dist/utils/review/progressTracker.js +227 -0
  397. package/dist/utils/review/progressTracker.js.map +1 -0
  398. package/dist/utils/review/reviewExtraction.d.ts +31 -0
  399. package/dist/utils/review/reviewExtraction.js +324 -0
  400. package/dist/utils/review/reviewExtraction.js.map +1 -0
  401. package/dist/utils/review/types.d.ts +45 -0
  402. package/dist/utils/review/types.js +18 -0
  403. package/dist/utils/review/types.js.map +1 -0
  404. package/{src/utils/reviewActionHandler.ts → dist/utils/reviewActionHandler.d.ts} +0 -2
  405. package/dist/utils/reviewActionHandler.js +34 -0
  406. package/dist/utils/reviewActionHandler.js.map +1 -0
  407. package/dist/utils/reviewParser.d.ts +34 -0
  408. package/dist/utils/reviewParser.js +218 -0
  409. package/dist/utils/reviewParser.js.map +1 -0
  410. package/dist/utils/sanitizer.d.ts +82 -0
  411. package/dist/utils/sanitizer.js +239 -0
  412. package/dist/utils/sanitizer.js.map +1 -0
  413. package/dist/utils/smartFileSelector.d.ts +50 -0
  414. package/dist/utils/smartFileSelector.js +261 -0
  415. package/dist/utils/smartFileSelector.js.map +1 -0
  416. package/dist/utils/templateLoader.d.ts +44 -0
  417. package/dist/utils/templateLoader.js +431 -0
  418. package/dist/utils/templateLoader.js.map +1 -0
  419. package/dist/utils/treeGenerator.d.ts +12 -0
  420. package/dist/utils/treeGenerator.js +133 -0
  421. package/dist/utils/treeGenerator.js.map +1 -0
  422. package/package.json +5 -1
  423. package/.cr-aia.yml +0 -23
  424. package/.crignore +0 -0
  425. package/docs/opt-in-full-context.md +0 -27
  426. package/reports/cr-cr-aia-17-11-2025-20-13.md +0 -354
  427. package/src/analysis/FindingsExtractor.ts +0 -431
  428. package/src/analysis/ai-detection/analyzers/BaseAnalyzer.ts +0 -267
  429. package/src/analysis/ai-detection/analyzers/DocumentationAnalyzer.ts +0 -622
  430. package/src/analysis/ai-detection/analyzers/GitHistoryAnalyzer.ts +0 -430
  431. package/src/analysis/ai-detection/core/AIDetectionEngine.ts +0 -467
  432. package/src/analysis/ai-detection/types/DetectionTypes.ts +0 -406
  433. package/src/analysis/ai-detection/utils/SubmissionConverter.ts +0 -390
  434. package/src/analysis/context/ReviewContext.ts +0 -378
  435. package/src/analysis/tokens/TokenAnalyzer.ts +0 -747
  436. package/src/clients/base/abstractClient.ts +0 -190
  437. package/src/clients/base/httpClient.ts +0 -160
  438. package/src/clients/base/modelDetection.ts +0 -107
  439. package/src/clients/base/responseProcessor.ts +0 -586
  440. package/src/clients/factory/clientFactory.ts +0 -55
  441. package/src/clients/implementations/openRouterClient.ts +0 -413
  442. package/src/clients/openRouterClient.ts +0 -870
  443. package/src/clients/utils/directoryStructure.ts +0 -52
  444. package/src/clients/utils/languageDetection.ts +0 -44
  445. package/src/clients/utils/promptFormatter.ts +0 -182
  446. package/src/clients/utils/tokenCounter.ts +0 -297
  447. package/src/core/ApiClientSelector.ts +0 -37
  448. package/src/core/ConfigurationService.ts +0 -591
  449. package/src/core/ConsolidationService.ts +0 -423
  450. package/src/core/InteractiveDisplayManager.ts +0 -81
  451. package/src/core/OutputManager.ts +0 -275
  452. package/src/core/ReviewGenerator.ts +0 -140
  453. package/src/core/fileDiscovery.ts +0 -237
  454. package/src/core/handlers/EstimationHandler.ts +0 -104
  455. package/src/core/handlers/FileProcessingHandler.ts +0 -210
  456. package/src/core/handlers/OutputHandler.ts +0 -125
  457. package/src/core/handlers/ReviewExecutor.ts +0 -104
  458. package/src/core/reviewOrchestrator.ts +0 -333
  459. package/src/core/utils/ModelInfoUtils.ts +0 -56
  460. package/src/formatters/utils/IssueFormatters.ts +0 -83
  461. package/src/formatters/utils/JsonFormatter.ts +0 -77
  462. package/src/formatters/utils/MarkdownFormatters.ts +0 -609
  463. package/src/formatters/utils/MetadataFormatter.ts +0 -269
  464. package/src/formatters/utils/ModelInfoExtractor.ts +0 -115
  465. package/src/index.ts +0 -25
  466. package/src/plugins/PluginInterface.ts +0 -50
  467. package/src/plugins/PluginManager.ts +0 -126
  468. package/src/prompts/PromptManager.ts +0 -69
  469. package/src/prompts/cache/PromptCache.ts +0 -50
  470. package/src/prompts/promptText/common/variables/css-frameworks.json +0 -33
  471. package/src/prompts/promptText/common/variables/framework-versions.json +0 -45
  472. package/src/prompts/promptText/frameworks/react/comprehensive.hbs +0 -19
  473. package/src/prompts/promptText/languages/css/comprehensive.hbs +0 -18
  474. package/src/prompts/promptText/languages/generic/comprehensive.hbs +0 -20
  475. package/src/prompts/promptText/languages/html/comprehensive.hbs +0 -18
  476. package/src/prompts/promptText/languages/javascript/comprehensive.hbs +0 -18
  477. package/src/prompts/promptText/languages/python/comprehensive.hbs +0 -18
  478. package/src/prompts/promptText/languages/typescript/comprehensive.hbs +0 -18
  479. package/src/runtime/auth/service.ts +0 -58
  480. package/src/runtime/auth/session.ts +0 -103
  481. package/src/runtime/auth/types.ts +0 -11
  482. package/src/runtime/cliEntry.ts +0 -214
  483. package/src/runtime/debug/logManager.ts +0 -37
  484. package/src/runtime/errors.ts +0 -13
  485. package/src/runtime/fileCollector.ts +0 -495
  486. package/src/runtime/manifest.ts +0 -64
  487. package/src/runtime/openrouterProxy.ts +0 -45
  488. package/src/runtime/preprod/webCheck.ts +0 -104
  489. package/src/runtime/proxyConfig.ts +0 -94
  490. package/src/runtime/proxyEnvironment.ts +0 -71
  491. package/src/runtime/reportMerge.ts +0 -102
  492. package/src/runtime/reporting/markdownReportBuilder.ts +0 -138
  493. package/src/runtime/reporting/reportDataCollector.ts +0 -234
  494. package/src/runtime/reporting/summaryGenerator.ts +0 -86
  495. package/src/runtime/reviewPipeline.ts +0 -200
  496. package/src/runtime/runAiCodeReview.ts +0 -308
  497. package/src/runtime/runtimeConfig.ts +0 -5
  498. package/src/runtime/ui/Layout.tsx +0 -57
  499. package/src/runtime/ui/RuntimeApp.tsx +0 -262
  500. package/src/runtime/ui/inkModules.ts +0 -73
  501. package/src/runtime/ui/screens/AuthScreen.tsx +0 -128
  502. package/src/runtime/ui/screens/ModeSelection.tsx +0 -185
  503. package/src/runtime/ui/screens/ProgressScreen.tsx +0 -110
  504. package/src/runtime/ui/screens/ResultsScreen.tsx +0 -103
  505. package/src/strategies/ArchitecturalReviewStrategy.ts +0 -54
  506. package/src/strategies/CodingTestReviewStrategy.ts +0 -920
  507. package/src/strategies/ConsolidatedReviewStrategy.ts +0 -59
  508. package/src/strategies/ExtractPatternsReviewStrategy.ts +0 -64
  509. package/src/strategies/MultiPassReviewStrategy.ts +0 -785
  510. package/src/strategies/ReviewStrategy.ts +0 -64
  511. package/src/strategies/StrategyFactory.ts +0 -79
  512. package/src/tokenizers/baseTokenizer.ts +0 -61
  513. package/src/tokenizers/gptTokenizer.ts +0 -27
  514. package/src/types/apiResponses.ts +0 -40
  515. package/src/types/cli.ts +0 -24
  516. package/src/types/configuration.ts +0 -201
  517. package/src/types/handlebars.d.ts +0 -5
  518. package/src/types/patch.d.ts +0 -25
  519. package/src/types/review.ts +0 -312
  520. package/src/types/reviewContext.d.ts +0 -65
  521. package/src/types/structuredReview.ts +0 -167
  522. package/src/types/tokenAnalysis.ts +0 -56
  523. package/src/utils/FileReader.ts +0 -93
  524. package/src/utils/FileWriter.ts +0 -76
  525. package/src/utils/PathGenerator.ts +0 -97
  526. package/src/utils/api/apiUtils.ts +0 -14
  527. package/src/utils/apiErrorHandler.ts +0 -287
  528. package/src/utils/ciDataCollector.ts +0 -252
  529. package/src/utils/codingTestConfigLoader.ts +0 -466
  530. package/src/utils/dependencies/aiDependencyAnalyzer.ts +0 -454
  531. package/src/utils/detection/frameworkDetector.ts +0 -879
  532. package/src/utils/detection/projectTypeDetector.ts +0 -518
  533. package/src/utils/diagramGenerator.ts +0 -206
  534. package/src/utils/errorLogger.ts +0 -60
  535. package/src/utils/estimationUtils.ts +0 -407
  536. package/src/utils/fileFilters.ts +0 -373
  537. package/src/utils/fileSystem.ts +0 -57
  538. package/src/utils/logger.ts +0 -290
  539. package/src/utils/pathValidator.ts +0 -98
  540. package/src/utils/projectDocs.ts +0 -189
  541. package/src/utils/promptPaths.ts +0 -29
  542. package/src/utils/promptTemplateManager.ts +0 -157
  543. package/src/utils/review/consolidateReview.ts +0 -553
  544. package/src/utils/review/fixDisplay.ts +0 -100
  545. package/src/utils/review/fixImplementation.ts +0 -61
  546. package/src/utils/review/index.ts +0 -36
  547. package/src/utils/review/interactiveProcessing.ts +0 -294
  548. package/src/utils/review/progressTracker.ts +0 -296
  549. package/src/utils/review/reviewExtraction.ts +0 -382
  550. package/src/utils/review/types.ts +0 -46
  551. package/src/utils/reviewParser.ts +0 -253
  552. package/src/utils/sanitizer.ts +0 -238
  553. package/src/utils/smartFileSelector.ts +0 -255
  554. package/src/utils/templateLoader.ts +0 -514
  555. package/src/utils/treeGenerator.ts +0 -153
  556. package/tsconfig.build.json +0 -14
  557. package/tsconfig.json +0 -59
  558. /package/{src/utils/api/index.ts → dist/utils/api/index.d.ts} +0 -0
@@ -0,0 +1,105 @@
1
+ /**
2
+ * @fileoverview Findings Extractor for Code Reviews
3
+ *
4
+ * This service extracts, categorizes, and analyzes findings from code review
5
+ * results. It provides utilities for grading, recommendation generation,
6
+ * and finding prioritization.
7
+ */
8
+ /**
9
+ * Categorized findings from code review
10
+ */
11
+ export interface CategorizedFindings {
12
+ high: Set<string>;
13
+ medium: Set<string>;
14
+ low: Set<string>;
15
+ }
16
+ /**
17
+ * Grade information with justification
18
+ */
19
+ export interface GradeInfo {
20
+ grade: string;
21
+ justification: string;
22
+ }
23
+ /**
24
+ * Service for extracting and analyzing findings from code reviews
25
+ */
26
+ export declare class FindingsExtractor {
27
+ /**
28
+ * Extract findings from review passes
29
+ * @param passes Array of review results with content
30
+ * @returns Categorized findings
31
+ */
32
+ extractFindingsFromPasses(passes: Array<{
33
+ content: string;
34
+ }>): CategorizedFindings;
35
+ /**
36
+ * Extract individual issue texts from content
37
+ * @param content Review content
38
+ * @returns Array of issue descriptions
39
+ */
40
+ extractIssueTexts(content: string): string[];
41
+ /**
42
+ * Check if an issue is high priority
43
+ * @param issue Issue text (lowercase)
44
+ * @returns True if high priority
45
+ */
46
+ private isHighPriority;
47
+ /**
48
+ * Check if an issue is medium priority
49
+ * @param issue Issue text (lowercase)
50
+ * @returns True if medium priority
51
+ */
52
+ private isMediumPriority;
53
+ /**
54
+ * Calculate grade based on findings for a specific category
55
+ * @param findings Categorized findings
56
+ * @param category Category name (for logging)
57
+ * @returns Grade information
58
+ */
59
+ calculateGrade(findings: CategorizedFindings, category: string): GradeInfo;
60
+ /**
61
+ * Calculate overall grade based on findings
62
+ * @param findings Categorized findings
63
+ * @returns Overall grade string
64
+ */
65
+ calculateOverallGrade(findings: CategorizedFindings): string;
66
+ /**
67
+ * Get justification for grade
68
+ * @param findings Categorized findings
69
+ * @param category Category name
70
+ * @returns Grade justification string
71
+ */
72
+ getGradeJustification(findings: CategorizedFindings, category: string): string;
73
+ /**
74
+ * Generate recommendations based on findings
75
+ * @param findings Categorized findings
76
+ * @param hasErrors Whether there are compilation errors
77
+ * @returns Array of recommendation strings
78
+ */
79
+ generateRecommendations(findings: CategorizedFindings, hasErrors: boolean): string[];
80
+ /**
81
+ * Check if findings contain security-related issues
82
+ * @param findings Categorized findings
83
+ * @returns True if security issues are present
84
+ */
85
+ private hasSecurityIssues;
86
+ /**
87
+ * Check if findings contain performance-related issues
88
+ * @param findings Categorized findings
89
+ * @returns True if performance issues are present
90
+ */
91
+ private hasPerformanceIssues;
92
+ /**
93
+ * Check if findings contain testing-related issues
94
+ * @param findings Categorized findings
95
+ * @returns True if testing issues are present
96
+ */
97
+ private hasTestingIssues;
98
+ /**
99
+ * Format findings for display in reports
100
+ * @param findings Categorized findings
101
+ * @param maxPerCategory Maximum items to show per category
102
+ * @returns Formatted findings string
103
+ */
104
+ formatFindings(findings: CategorizedFindings, maxPerCategory?: number): string;
105
+ }
@@ -0,0 +1,363 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Findings Extractor for Code Reviews
4
+ *
5
+ * This service extracts, categorizes, and analyzes findings from code review
6
+ * results. It provides utilities for grading, recommendation generation,
7
+ * and finding prioritization.
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.FindingsExtractor = void 0;
14
+ const logger_1 = __importDefault(require("../utils/logger"));
15
+ /**
16
+ * Service for extracting and analyzing findings from code reviews
17
+ */
18
+ class FindingsExtractor {
19
+ /**
20
+ * Extract findings from review passes
21
+ * @param passes Array of review results with content
22
+ * @returns Categorized findings
23
+ */
24
+ extractFindingsFromPasses(passes) {
25
+ const highPriorityFindings = new Set();
26
+ const mediumPriorityFindings = new Set();
27
+ const lowPriorityFindings = new Set();
28
+ for (const pass of passes) {
29
+ if (!pass.content)
30
+ continue;
31
+ const issueTexts = this.extractIssueTexts(pass.content);
32
+ for (const issue of issueTexts) {
33
+ const lowerIssue = issue.toLowerCase();
34
+ // Categorize by priority keywords
35
+ if (this.isHighPriority(lowerIssue)) {
36
+ highPriorityFindings.add(issue);
37
+ }
38
+ else if (this.isMediumPriority(lowerIssue)) {
39
+ mediumPriorityFindings.add(issue);
40
+ }
41
+ else {
42
+ lowPriorityFindings.add(issue);
43
+ }
44
+ }
45
+ }
46
+ logger_1.default.debug(`Extracted findings: ${highPriorityFindings.size} high, ${mediumPriorityFindings.size} medium, ${lowPriorityFindings.size} low`);
47
+ return {
48
+ high: highPriorityFindings,
49
+ medium: mediumPriorityFindings,
50
+ low: lowPriorityFindings,
51
+ };
52
+ }
53
+ /**
54
+ * Extract individual issue texts from content
55
+ * @param content Review content
56
+ * @returns Array of issue descriptions
57
+ */
58
+ extractIssueTexts(content) {
59
+ const issues = [];
60
+ // Extract bullet points and numbered items
61
+ const bulletRegex = /^[\s]*[-*•]\s+(.+)$/gm;
62
+ const numberedRegex = /^[\s]*\d+\.\s+(.+)$/gm;
63
+ const dashRegex = /^[\s]*-\s+(.+)$/gm;
64
+ let match;
65
+ // Extract bullet points
66
+ while ((match = bulletRegex.exec(content)) !== null) {
67
+ const issue = match[1].trim();
68
+ if (issue.length > 10) {
69
+ // Filter out very short items
70
+ issues.push(issue);
71
+ }
72
+ }
73
+ // Extract numbered items
74
+ while ((match = numberedRegex.exec(content)) !== null) {
75
+ const issue = match[1].trim();
76
+ if (issue.length > 10) {
77
+ issues.push(issue);
78
+ }
79
+ }
80
+ // Extract dash items (alternative format)
81
+ while ((match = dashRegex.exec(content)) !== null) {
82
+ const issue = match[1].trim();
83
+ if (issue.length > 10) {
84
+ issues.push(issue);
85
+ }
86
+ }
87
+ // Remove duplicates
88
+ return [...new Set(issues)];
89
+ }
90
+ /**
91
+ * Check if an issue is high priority
92
+ * @param issue Issue text (lowercase)
93
+ * @returns True if high priority
94
+ */
95
+ isHighPriority(issue) {
96
+ const highPriorityKeywords = [
97
+ 'security',
98
+ 'vulnerability',
99
+ 'critical',
100
+ 'error',
101
+ 'bug',
102
+ 'crash',
103
+ 'memory leak',
104
+ 'sql injection',
105
+ 'xss',
106
+ 'csrf',
107
+ 'injection',
108
+ 'authentication',
109
+ 'authorization',
110
+ 'privilege escalation',
111
+ 'data breach',
112
+ 'sensitive data',
113
+ 'password',
114
+ 'token',
115
+ 'deadlock',
116
+ 'race condition',
117
+ 'null pointer',
118
+ 'buffer overflow',
119
+ ];
120
+ return highPriorityKeywords.some((keyword) => issue.includes(keyword));
121
+ }
122
+ /**
123
+ * Check if an issue is medium priority
124
+ * @param issue Issue text (lowercase)
125
+ * @returns True if medium priority
126
+ */
127
+ isMediumPriority(issue) {
128
+ const mediumPriorityKeywords = [
129
+ 'warning',
130
+ 'deprecated',
131
+ 'inefficient',
132
+ 'refactor',
133
+ 'improve',
134
+ 'optimization',
135
+ 'maintainability',
136
+ 'readability',
137
+ 'complexity',
138
+ 'duplication',
139
+ 'coupling',
140
+ 'cohesion',
141
+ 'design pattern',
142
+ 'architecture',
143
+ 'structure',
144
+ 'organization',
145
+ 'naming',
146
+ 'documentation',
147
+ 'comment',
148
+ 'test coverage',
149
+ 'error handling',
150
+ ];
151
+ return mediumPriorityKeywords.some((keyword) => issue.includes(keyword));
152
+ }
153
+ /**
154
+ * Calculate grade based on findings for a specific category
155
+ * @param findings Categorized findings
156
+ * @param category Category name (for logging)
157
+ * @returns Grade information
158
+ */
159
+ calculateGrade(findings, category) {
160
+ const totalIssues = findings.high.size + findings.medium.size + findings.low.size;
161
+ let grade;
162
+ let justification;
163
+ if (findings.high.size > 5) {
164
+ grade = 'D';
165
+ justification = `Multiple critical issues (${findings.high.size}) require immediate attention`;
166
+ }
167
+ else if (findings.high.size > 2) {
168
+ grade = 'C';
169
+ justification = `Several critical issues (${findings.high.size}) need to be addressed`;
170
+ }
171
+ else if (findings.high.size > 0) {
172
+ grade = 'C+';
173
+ justification = `Some critical issues (${findings.high.size}) present`;
174
+ }
175
+ else if (findings.medium.size > 10) {
176
+ grade = 'C+';
177
+ justification = `Many medium-priority issues (${findings.medium.size}) affect code quality`;
178
+ }
179
+ else if (findings.medium.size > 5) {
180
+ grade = 'B';
181
+ justification = `Several medium-priority issues (${findings.medium.size}) could be improved`;
182
+ }
183
+ else if (findings.medium.size > 2) {
184
+ grade = 'B+';
185
+ justification = `Some medium-priority issues (${findings.medium.size}) noted`;
186
+ }
187
+ else if (totalIssues > 5) {
188
+ grade = 'A-';
189
+ justification = `Minor issues (${totalIssues}) but overall good quality`;
190
+ }
191
+ else if (totalIssues > 0) {
192
+ grade = 'A';
193
+ justification = `Very few issues (${totalIssues}), high quality code`;
194
+ }
195
+ else {
196
+ grade = 'A+';
197
+ justification = 'Excellent code quality with no significant issues';
198
+ }
199
+ logger_1.default.debug(`Grade for ${category}: ${grade} (${justification})`);
200
+ return { grade, justification };
201
+ }
202
+ /**
203
+ * Calculate overall grade based on findings
204
+ * @param findings Categorized findings
205
+ * @returns Overall grade string
206
+ */
207
+ calculateOverallGrade(findings) {
208
+ const gradeInfo = this.calculateGrade(findings, 'overall');
209
+ return gradeInfo.grade;
210
+ }
211
+ /**
212
+ * Get justification for grade
213
+ * @param findings Categorized findings
214
+ * @param category Category name
215
+ * @returns Grade justification string
216
+ */
217
+ getGradeJustification(findings, category) {
218
+ const gradeInfo = this.calculateGrade(findings, category);
219
+ return gradeInfo.justification;
220
+ }
221
+ /**
222
+ * Generate recommendations based on findings
223
+ * @param findings Categorized findings
224
+ * @param hasErrors Whether there are compilation errors
225
+ * @returns Array of recommendation strings
226
+ */
227
+ generateRecommendations(findings, hasErrors) {
228
+ const recommendations = [];
229
+ if (hasErrors) {
230
+ recommendations.push('Fix compilation errors before proceeding with other improvements');
231
+ }
232
+ if (findings.high.size > 0) {
233
+ recommendations.push(`Address ${findings.high.size} high-priority security and critical issues immediately`);
234
+ if (findings.high.size > 3) {
235
+ recommendations.push('Consider conducting a security audit given the number of critical issues');
236
+ }
237
+ }
238
+ if (findings.medium.size > 8) {
239
+ recommendations.push(`Review and address ${findings.medium.size} medium-priority maintainability issues`);
240
+ recommendations.push('Consider refactoring to improve code structure and maintainability');
241
+ }
242
+ else if (findings.medium.size > 3) {
243
+ recommendations.push(`Address ${findings.medium.size} medium-priority issues to improve code quality`);
244
+ }
245
+ if (findings.low.size > 15) {
246
+ recommendations.push(`Consider addressing ${findings.low.size} low-priority style and minor issues`);
247
+ recommendations.push('Implement automated linting and formatting tools');
248
+ }
249
+ else if (findings.low.size > 8) {
250
+ recommendations.push(`Review ${findings.low.size} low-priority issues when time permits`);
251
+ }
252
+ // Add positive recommendations for good code
253
+ if (findings.high.size === 0 && findings.medium.size < 3) {
254
+ recommendations.push('Code quality is good. Continue following current best practices.');
255
+ if (findings.low.size === 0) {
256
+ recommendations.push('Excellent code quality. Consider sharing best practices with the team.');
257
+ }
258
+ }
259
+ // Add specific recommendations based on issue types
260
+ if (this.hasSecurityIssues(findings)) {
261
+ recommendations.push('Implement security code review process and security testing');
262
+ }
263
+ if (this.hasPerformanceIssues(findings)) {
264
+ recommendations.push('Consider performance profiling and optimization');
265
+ }
266
+ if (this.hasTestingIssues(findings)) {
267
+ recommendations.push('Improve test coverage and add more comprehensive tests');
268
+ }
269
+ return recommendations;
270
+ }
271
+ /**
272
+ * Check if findings contain security-related issues
273
+ * @param findings Categorized findings
274
+ * @returns True if security issues are present
275
+ */
276
+ hasSecurityIssues(findings) {
277
+ const allFindings = [...findings.high, ...findings.medium, ...findings.low];
278
+ const securityKeywords = [
279
+ 'security',
280
+ 'vulnerability',
281
+ 'injection',
282
+ 'xss',
283
+ 'csrf',
284
+ 'authentication',
285
+ ];
286
+ return allFindings.some((finding) => securityKeywords.some((keyword) => finding.toLowerCase().includes(keyword)));
287
+ }
288
+ /**
289
+ * Check if findings contain performance-related issues
290
+ * @param findings Categorized findings
291
+ * @returns True if performance issues are present
292
+ */
293
+ hasPerformanceIssues(findings) {
294
+ const allFindings = [...findings.high, ...findings.medium, ...findings.low];
295
+ const performanceKeywords = [
296
+ 'performance',
297
+ 'slow',
298
+ 'inefficient',
299
+ 'optimization',
300
+ 'memory',
301
+ 'cpu',
302
+ ];
303
+ return allFindings.some((finding) => performanceKeywords.some((keyword) => finding.toLowerCase().includes(keyword)));
304
+ }
305
+ /**
306
+ * Check if findings contain testing-related issues
307
+ * @param findings Categorized findings
308
+ * @returns True if testing issues are present
309
+ */
310
+ hasTestingIssues(findings) {
311
+ const allFindings = [...findings.high, ...findings.medium, ...findings.low];
312
+ const testingKeywords = [
313
+ 'test',
314
+ 'coverage',
315
+ 'mock',
316
+ 'assertion',
317
+ 'unit test',
318
+ 'integration test',
319
+ ];
320
+ return allFindings.some((finding) => testingKeywords.some((keyword) => finding.toLowerCase().includes(keyword)));
321
+ }
322
+ /**
323
+ * Format findings for display in reports
324
+ * @param findings Categorized findings
325
+ * @param maxPerCategory Maximum items to show per category
326
+ * @returns Formatted findings string
327
+ */
328
+ formatFindings(findings, maxPerCategory = 5) {
329
+ const sections = [];
330
+ if (findings.high.size > 0) {
331
+ sections.push(`**High Priority (${findings.high.size}):**`);
332
+ sections.push(...Array.from(findings.high)
333
+ .slice(0, maxPerCategory)
334
+ .map((f) => `- ${f}`));
335
+ if (findings.high.size > maxPerCategory) {
336
+ sections.push(`- ... and ${findings.high.size - maxPerCategory} more`);
337
+ }
338
+ sections.push('');
339
+ }
340
+ if (findings.medium.size > 0) {
341
+ sections.push(`**Medium Priority (${findings.medium.size}):**`);
342
+ sections.push(...Array.from(findings.medium)
343
+ .slice(0, maxPerCategory)
344
+ .map((f) => `- ${f}`));
345
+ if (findings.medium.size > maxPerCategory) {
346
+ sections.push(`- ... and ${findings.medium.size - maxPerCategory} more`);
347
+ }
348
+ sections.push('');
349
+ }
350
+ if (findings.low.size > 0) {
351
+ sections.push(`**Low Priority (${findings.low.size}):**`);
352
+ sections.push(...Array.from(findings.low)
353
+ .slice(0, Math.min(maxPerCategory, 3))
354
+ .map((f) => `- ${f}`));
355
+ if (findings.low.size > 3) {
356
+ sections.push(`- ... and ${findings.low.size - 3} more`);
357
+ }
358
+ }
359
+ return sections.join('\n');
360
+ }
361
+ }
362
+ exports.FindingsExtractor = FindingsExtractor;
363
+ //# sourceMappingURL=FindingsExtractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FindingsExtractor.js","sourceRoot":"","sources":["../../src/analysis/FindingsExtractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * @fileoverview Base analyzer class for AI detection patterns.
3
+ *
4
+ * This module provides the abstract base class that all specific analyzers extend,
5
+ * ensuring consistent interface and common functionality across different analysis types.
6
+ */
7
+ import type { CodeSubmission, DetectedPattern, DetectionConfig, PatternDetectionResult } from '../types/DetectionTypes';
8
+ /**
9
+ * Abstract base class for all AI detection analyzers
10
+ */
11
+ export declare abstract class BaseAnalyzer {
12
+ protected config: DetectionConfig;
13
+ protected startTime: number;
14
+ /**
15
+ * Create a new base analyzer
16
+ * @param config Detection configuration
17
+ */
18
+ constructor(config: DetectionConfig);
19
+ /**
20
+ * Analyze the submission for AI-generated patterns
21
+ * @param submission Code submission to analyze
22
+ * @returns Analysis result specific to this analyzer
23
+ */
24
+ abstract analyze(submission: CodeSubmission): Promise<any>;
25
+ /**
26
+ * Get the analyzer name
27
+ * @returns Analyzer identifier
28
+ */
29
+ abstract getAnalyzerName(): string;
30
+ /**
31
+ * Check if this analyzer is enabled in configuration
32
+ * @returns True if analyzer should run
33
+ */
34
+ isEnabled(): boolean;
35
+ /**
36
+ * Start timing analysis
37
+ */
38
+ protected startTimer(): void;
39
+ /**
40
+ * Get elapsed time since timer start
41
+ * @returns Elapsed time in milliseconds
42
+ */
43
+ protected getElapsedTime(): number;
44
+ /**
45
+ * Create a detected pattern object
46
+ * @param id Pattern identifier
47
+ * @param name Human-readable name
48
+ * @param confidence Confidence level
49
+ * @param score Numerical score
50
+ * @param description Pattern description
51
+ * @param evidenceData Supporting evidence
52
+ * @returns Detected pattern object
53
+ */
54
+ protected createDetectedPattern(id: string, name: string, confidence: 'high' | 'medium' | 'low', score: number, description: string, evidenceData: Record<string, any>): DetectedPattern;
55
+ /**
56
+ * Create a pattern detection result
57
+ * @param detected Whether pattern was detected
58
+ * @param score Confidence score
59
+ * @param evidence Supporting evidence
60
+ * @returns Pattern detection result
61
+ */
62
+ protected createPatternResult(detected: boolean, score: number, evidence?: Record<string, any>): PatternDetectionResult;
63
+ /**
64
+ * Calculate uniformity of a numeric array
65
+ * Used for detecting suspiciously uniform patterns in code
66
+ * @param values Array of numeric values
67
+ * @returns Uniformity score from 0.0 to 1.0 (higher = more uniform)
68
+ */
69
+ protected calculateUniformity(values: number[]): number;
70
+ /**
71
+ * Calculate variance of a numeric array
72
+ * @param values Array of numeric values
73
+ * @param mean Pre-calculated mean (optional)
74
+ * @returns Variance value
75
+ */
76
+ protected calculateVariance(values: number[], mean?: number): number;
77
+ /**
78
+ * Extract sections from markdown or text content
79
+ * @param content Text content to analyze
80
+ * @returns Array of section headers found
81
+ */
82
+ protected extractSections(content: string): string[];
83
+ /**
84
+ * Count badges in markdown content
85
+ * @param content Markdown content
86
+ * @returns Number of badges found
87
+ */
88
+ protected countBadges(content: string): number;
89
+ /**
90
+ * Count generic phrases that suggest AI generation
91
+ * @param content Text content to analyze
92
+ * @returns Number of generic phrases found
93
+ */
94
+ protected countGenericPhrases(content: string): number;
95
+ /**
96
+ * Validate that a score is within valid range
97
+ * @param score Score to validate
98
+ * @returns Clamped score between 0.0 and 1.0
99
+ */
100
+ protected validateScore(score: number): number;
101
+ /**
102
+ * Check if analysis should timeout
103
+ * @returns True if analysis has exceeded time limit
104
+ */
105
+ protected shouldTimeout(): boolean;
106
+ /**
107
+ * Create timeout error
108
+ * @returns Error object for timeout
109
+ */
110
+ protected createTimeoutError(): Error;
111
+ }