codereview-aia 0.1.3 → 0.1.4

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