codereview-aia 0.2.1 → 0.2.2

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 (435) hide show
  1. package/dist/index.js +0 -7
  2. package/dist/index.js.map +1 -1
  3. package/dist/runtime/api/batcher.d.ts +20 -0
  4. package/dist/runtime/api/batcher.js +52 -0
  5. package/dist/runtime/api/batcher.js.map +1 -0
  6. package/dist/runtime/api/edgeClient.d.ts +102 -0
  7. package/dist/runtime/api/edgeClient.js +162 -0
  8. package/dist/runtime/api/edgeClient.js.map +1 -0
  9. package/dist/runtime/api/index.d.ts +2 -0
  10. package/dist/runtime/api/index.js +9 -0
  11. package/dist/runtime/api/index.js.map +1 -0
  12. package/dist/runtime/cliEntry.js +24 -76
  13. package/dist/runtime/cliEntry.js.map +1 -1
  14. package/dist/runtime/errors.d.ts +13 -3
  15. package/dist/runtime/errors.js +31 -8
  16. package/dist/runtime/errors.js.map +1 -1
  17. package/dist/runtime/llm/index.d.ts +1 -0
  18. package/dist/runtime/llm/index.js +6 -0
  19. package/dist/runtime/llm/index.js.map +1 -0
  20. package/dist/runtime/llm/openRouterClient.d.ts +13 -0
  21. package/dist/runtime/llm/openRouterClient.js +187 -0
  22. package/dist/runtime/llm/openRouterClient.js.map +1 -0
  23. package/dist/runtime/phpFileResolver.d.ts +14 -0
  24. package/dist/runtime/phpFileResolver.js +231 -0
  25. package/dist/runtime/phpFileResolver.js.map +1 -0
  26. package/dist/runtime/phpcsParser.d.ts +10 -0
  27. package/dist/runtime/phpcsParser.js +35 -0
  28. package/dist/runtime/phpcsParser.js.map +1 -0
  29. package/dist/runtime/phpcsRunner.d.ts +32 -0
  30. package/dist/runtime/phpcsRunner.js +62 -0
  31. package/dist/runtime/phpcsRunner.js.map +1 -0
  32. package/dist/runtime/reportWriter.d.ts +17 -0
  33. package/dist/runtime/reportWriter.js +80 -0
  34. package/dist/runtime/reportWriter.js.map +1 -0
  35. package/dist/runtime/reviewPipeline.d.ts +14 -36
  36. package/dist/runtime/reviewPipeline.js +146 -199
  37. package/dist/runtime/reviewPipeline.js.map +1 -1
  38. package/dist/runtime/ui/RuntimeApp.js +23 -154
  39. package/dist/runtime/ui/RuntimeApp.js.map +1 -1
  40. package/dist/runtime/ui/screens/AuthScreen.d.ts +2 -3
  41. package/dist/runtime/ui/screens/AuthScreen.js +7 -53
  42. package/dist/runtime/ui/screens/AuthScreen.js.map +1 -1
  43. package/dist/runtime/ui/screens/ModeSelection.d.ts +1 -2
  44. package/dist/runtime/ui/screens/ModeSelection.js +14 -139
  45. package/dist/runtime/ui/screens/ModeSelection.js.map +1 -1
  46. package/dist/runtime/ui/screens/ProgressScreen.d.ts +5 -13
  47. package/dist/runtime/ui/screens/ProgressScreen.js +24 -61
  48. package/dist/runtime/ui/screens/ProgressScreen.js.map +1 -1
  49. package/dist/runtime/ui/screens/ResultsScreen.js +7 -17
  50. package/dist/runtime/ui/screens/ResultsScreen.js.map +1 -1
  51. package/package.json +3 -43
  52. package/dist/analysis/FindingsExtractor.d.ts +0 -105
  53. package/dist/analysis/FindingsExtractor.js +0 -363
  54. package/dist/analysis/FindingsExtractor.js.map +0 -1
  55. package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.d.ts +0 -111
  56. package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.js +0 -215
  57. package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.js.map +0 -1
  58. package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.d.ts +0 -142
  59. package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.js +0 -503
  60. package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.js.map +0 -1
  61. package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.d.ts +0 -88
  62. package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.js +0 -343
  63. package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.js.map +0 -1
  64. package/dist/analysis/ai-detection/core/AIDetectionEngine.d.ts +0 -104
  65. package/dist/analysis/ai-detection/core/AIDetectionEngine.js +0 -369
  66. package/dist/analysis/ai-detection/core/AIDetectionEngine.js.map +0 -1
  67. package/dist/analysis/ai-detection/types/DetectionTypes.d.ts +0 -364
  68. package/dist/analysis/ai-detection/types/DetectionTypes.js +0 -32
  69. package/dist/analysis/ai-detection/types/DetectionTypes.js.map +0 -1
  70. package/dist/analysis/ai-detection/utils/SubmissionConverter.d.ts +0 -97
  71. package/dist/analysis/ai-detection/utils/SubmissionConverter.js +0 -339
  72. package/dist/analysis/ai-detection/utils/SubmissionConverter.js.map +0 -1
  73. package/dist/analysis/context/ReviewContext.d.ts +0 -184
  74. package/dist/analysis/context/ReviewContext.js +0 -294
  75. package/dist/analysis/context/ReviewContext.js.map +0 -1
  76. package/dist/analysis/context/index.d.ts +0 -6
  77. package/dist/analysis/context/index.js +0 -23
  78. package/dist/analysis/context/index.js.map +0 -1
  79. package/dist/analysis/index.d.ts +0 -7
  80. package/dist/analysis/index.js +0 -24
  81. package/dist/analysis/index.js.map +0 -1
  82. package/dist/analysis/static/wpPhpcsRunner.d.ts +0 -11
  83. package/dist/analysis/static/wpPhpcsRunner.js +0 -219
  84. package/dist/analysis/static/wpPhpcsRunner.js.map +0 -1
  85. package/dist/analysis/tokens/TokenAnalysisFormatter.d.ts +0 -27
  86. package/dist/analysis/tokens/TokenAnalysisFormatter.js +0 -143
  87. package/dist/analysis/tokens/TokenAnalysisFormatter.js.map +0 -1
  88. package/dist/analysis/tokens/TokenAnalyzer.d.ts +0 -155
  89. package/dist/analysis/tokens/TokenAnalyzer.js +0 -502
  90. package/dist/analysis/tokens/TokenAnalyzer.js.map +0 -1
  91. package/dist/analysis/tokens/index.d.ts +0 -7
  92. package/dist/analysis/tokens/index.js +0 -24
  93. package/dist/analysis/tokens/index.js.map +0 -1
  94. package/dist/clients/base/abstractClient.d.ts +0 -99
  95. package/dist/clients/base/abstractClient.js +0 -98
  96. package/dist/clients/base/abstractClient.js.map +0 -1
  97. package/dist/clients/base/httpClient.d.ts +0 -24
  98. package/dist/clients/base/httpClient.js +0 -147
  99. package/dist/clients/base/httpClient.js.map +0 -1
  100. package/dist/clients/base/index.d.ts +0 -11
  101. package/dist/clients/base/index.js +0 -28
  102. package/dist/clients/base/index.js.map +0 -1
  103. package/dist/clients/base/modelDetection.d.ts +0 -41
  104. package/dist/clients/base/modelDetection.js +0 -88
  105. package/dist/clients/base/modelDetection.js.map +0 -1
  106. package/dist/clients/base/responseProcessor.d.ts +0 -45
  107. package/dist/clients/base/responseProcessor.js +0 -495
  108. package/dist/clients/base/responseProcessor.js.map +0 -1
  109. package/dist/clients/factory/clientFactory.d.ts +0 -23
  110. package/dist/clients/factory/clientFactory.js +0 -50
  111. package/dist/clients/factory/clientFactory.js.map +0 -1
  112. package/dist/clients/factory/index.d.ts +0 -7
  113. package/dist/clients/factory/index.js +0 -24
  114. package/dist/clients/factory/index.js.map +0 -1
  115. package/dist/clients/implementations/index.d.ts +0 -7
  116. package/dist/clients/implementations/index.js +0 -24
  117. package/dist/clients/implementations/index.js.map +0 -1
  118. package/dist/clients/implementations/openRouterClient.d.ts +0 -69
  119. package/dist/clients/implementations/openRouterClient.js +0 -294
  120. package/dist/clients/implementations/openRouterClient.js.map +0 -1
  121. package/dist/clients/openRouterClient.d.ts +0 -42
  122. package/dist/clients/openRouterClient.js +0 -580
  123. package/dist/clients/openRouterClient.js.map +0 -1
  124. package/dist/clients/openRouterClientWrapper.d.ts +0 -22
  125. package/dist/clients/openRouterClientWrapper.js +0 -64
  126. package/dist/clients/openRouterClientWrapper.js.map +0 -1
  127. package/dist/clients/utils/directoryStructure.d.ts +0 -14
  128. package/dist/clients/utils/directoryStructure.js +0 -48
  129. package/dist/clients/utils/directoryStructure.js.map +0 -1
  130. package/dist/clients/utils/index.d.ts +0 -10
  131. package/dist/clients/utils/index.js +0 -31
  132. package/dist/clients/utils/index.js.map +0 -1
  133. package/dist/clients/utils/languageDetection.d.ts +0 -13
  134. package/dist/clients/utils/languageDetection.js +0 -46
  135. package/dist/clients/utils/languageDetection.js.map +0 -1
  136. package/dist/clients/utils/promptFormatter.d.ts +0 -37
  137. package/dist/clients/utils/promptFormatter.js +0 -186
  138. package/dist/clients/utils/promptFormatter.js.map +0 -1
  139. package/dist/clients/utils/promptLoader.d.ts +0 -27
  140. package/dist/clients/utils/promptLoader.js +0 -49
  141. package/dist/clients/utils/promptLoader.js.map +0 -1
  142. package/dist/clients/utils/tokenCounter.d.ts +0 -81
  143. package/dist/clients/utils/tokenCounter.js +0 -184
  144. package/dist/clients/utils/tokenCounter.js.map +0 -1
  145. package/dist/core/ApiClientSelector.d.ts +0 -8
  146. package/dist/core/ApiClientSelector.js +0 -29
  147. package/dist/core/ApiClientSelector.js.map +0 -1
  148. package/dist/core/ConfigurationService.d.ts +0 -307
  149. package/dist/core/ConfigurationService.js +0 -516
  150. package/dist/core/ConfigurationService.js.map +0 -1
  151. package/dist/core/ConsolidationService.d.ts +0 -99
  152. package/dist/core/ConsolidationService.js +0 -341
  153. package/dist/core/ConsolidationService.js.map +0 -1
  154. package/dist/core/InteractiveDisplayManager.d.ts +0 -22
  155. package/dist/core/InteractiveDisplayManager.js +0 -70
  156. package/dist/core/InteractiveDisplayManager.js.map +0 -1
  157. package/dist/core/OutputManager.d.ts +0 -26
  158. package/dist/core/OutputManager.js +0 -217
  159. package/dist/core/OutputManager.js.map +0 -1
  160. package/dist/core/ReviewGenerator.d.ts +0 -13
  161. package/dist/core/ReviewGenerator.js +0 -102
  162. package/dist/core/ReviewGenerator.js.map +0 -1
  163. package/dist/core/fileDiscovery.d.ts +0 -35
  164. package/dist/core/fileDiscovery.js +0 -202
  165. package/dist/core/fileDiscovery.js.map +0 -1
  166. package/dist/core/handlers/EstimationHandler.d.ts +0 -18
  167. package/dist/core/handlers/EstimationHandler.js +0 -110
  168. package/dist/core/handlers/EstimationHandler.js.map +0 -1
  169. package/dist/core/handlers/FileProcessingHandler.d.ts +0 -31
  170. package/dist/core/handlers/FileProcessingHandler.js +0 -164
  171. package/dist/core/handlers/FileProcessingHandler.js.map +0 -1
  172. package/dist/core/handlers/OutputHandler.d.ts +0 -27
  173. package/dist/core/handlers/OutputHandler.js +0 -127
  174. package/dist/core/handlers/OutputHandler.js.map +0 -1
  175. package/dist/core/handlers/ReviewExecutor.d.ts +0 -32
  176. package/dist/core/handlers/ReviewExecutor.js +0 -111
  177. package/dist/core/handlers/ReviewExecutor.js.map +0 -1
  178. package/dist/core/reviewOrchestrator.d.ts +0 -24
  179. package/dist/core/reviewOrchestrator.js +0 -354
  180. package/dist/core/reviewOrchestrator.js.map +0 -1
  181. package/dist/core/utils/ModelInfoUtils.d.ts +0 -16
  182. package/dist/core/utils/ModelInfoUtils.js +0 -54
  183. package/dist/core/utils/ModelInfoUtils.js.map +0 -1
  184. package/dist/formatters/outputFormatter.d.ts +0 -31
  185. package/dist/formatters/outputFormatter.js +0 -65
  186. package/dist/formatters/outputFormatter.js.map +0 -1
  187. package/dist/formatters/utils/IssueFormatters.d.ts +0 -20
  188. package/dist/formatters/utils/IssueFormatters.js +0 -67
  189. package/dist/formatters/utils/IssueFormatters.js.map +0 -1
  190. package/dist/formatters/utils/JsonFormatter.d.ts +0 -13
  191. package/dist/formatters/utils/JsonFormatter.js +0 -57
  192. package/dist/formatters/utils/JsonFormatter.js.map +0 -1
  193. package/dist/formatters/utils/MarkdownFormatters.d.ts +0 -51
  194. package/dist/formatters/utils/MarkdownFormatters.js +0 -456
  195. package/dist/formatters/utils/MarkdownFormatters.js.map +0 -1
  196. package/dist/formatters/utils/MetadataFormatter.d.ts +0 -65
  197. package/dist/formatters/utils/MetadataFormatter.js +0 -219
  198. package/dist/formatters/utils/MetadataFormatter.js.map +0 -1
  199. package/dist/formatters/utils/ModelInfoExtractor.d.ts +0 -33
  200. package/dist/formatters/utils/ModelInfoExtractor.js +0 -111
  201. package/dist/formatters/utils/ModelInfoExtractor.js.map +0 -1
  202. package/dist/plugins/PluginInterface.d.ts +0 -44
  203. package/dist/plugins/PluginInterface.js +0 -9
  204. package/dist/plugins/PluginInterface.js.map +0 -1
  205. package/dist/plugins/PluginManager.d.ts +0 -51
  206. package/dist/plugins/PluginManager.js +0 -151
  207. package/dist/plugins/PluginManager.js.map +0 -1
  208. package/dist/prompts/PromptManager.d.ts +0 -30
  209. package/dist/prompts/PromptManager.js +0 -62
  210. package/dist/prompts/PromptManager.js.map +0 -1
  211. package/dist/prompts/cache/PromptCache.d.ts +0 -32
  212. package/dist/prompts/cache/PromptCache.js +0 -48
  213. package/dist/prompts/cache/PromptCache.js.map +0 -1
  214. package/dist/runtime/auth/service.d.ts +0 -2
  215. package/dist/runtime/auth/service.js +0 -41
  216. package/dist/runtime/auth/service.js.map +0 -1
  217. package/dist/runtime/auth/session.d.ts +0 -5
  218. package/dist/runtime/auth/session.js +0 -87
  219. package/dist/runtime/auth/session.js.map +0 -1
  220. package/dist/runtime/auth/types.d.ts +0 -9
  221. package/dist/runtime/auth/types.js +0 -3
  222. package/dist/runtime/auth/types.js.map +0 -1
  223. package/dist/runtime/fileCollector.d.ts +0 -14
  224. package/dist/runtime/fileCollector.js +0 -383
  225. package/dist/runtime/fileCollector.js.map +0 -1
  226. package/dist/runtime/manifest.d.ts +0 -1
  227. package/dist/runtime/manifest.js +0 -65
  228. package/dist/runtime/manifest.js.map +0 -1
  229. package/dist/runtime/openrouterProxy.d.ts +0 -4
  230. package/dist/runtime/openrouterProxy.js +0 -43
  231. package/dist/runtime/openrouterProxy.js.map +0 -1
  232. package/dist/runtime/preprod/batchStreamer.d.ts +0 -54
  233. package/dist/runtime/preprod/batchStreamer.js +0 -159
  234. package/dist/runtime/preprod/batchStreamer.js.map +0 -1
  235. package/dist/runtime/preprod/crEdgeServiceClient.d.ts +0 -30
  236. package/dist/runtime/preprod/crEdgeServiceClient.js +0 -133
  237. package/dist/runtime/preprod/crEdgeServiceClient.js.map +0 -1
  238. package/dist/runtime/preprod/progressTracker.d.ts +0 -21
  239. package/dist/runtime/preprod/progressTracker.js +0 -80
  240. package/dist/runtime/preprod/progressTracker.js.map +0 -1
  241. package/dist/runtime/preprod/webCheck.d.ts +0 -1
  242. package/dist/runtime/preprod/webCheck.js +0 -102
  243. package/dist/runtime/preprod/webCheck.js.map +0 -1
  244. package/dist/runtime/proxyConfig.d.ts +0 -6
  245. package/dist/runtime/proxyConfig.js +0 -86
  246. package/dist/runtime/proxyConfig.js.map +0 -1
  247. package/dist/runtime/proxyEnvironment.d.ts +0 -3
  248. package/dist/runtime/proxyEnvironment.js +0 -63
  249. package/dist/runtime/proxyEnvironment.js.map +0 -1
  250. package/dist/runtime/reportMerge.d.ts +0 -30
  251. package/dist/runtime/reportMerge.js +0 -70
  252. package/dist/runtime/reportMerge.js.map +0 -1
  253. package/dist/runtime/reporting/markdownReportBuilder.d.ts +0 -17
  254. package/dist/runtime/reporting/markdownReportBuilder.js +0 -154
  255. package/dist/runtime/reporting/markdownReportBuilder.js.map +0 -1
  256. package/dist/runtime/reporting/reportDataCollector.d.ts +0 -31
  257. package/dist/runtime/reporting/reportDataCollector.js +0 -170
  258. package/dist/runtime/reporting/reportDataCollector.js.map +0 -1
  259. package/dist/runtime/reporting/summaryGenerator.d.ts +0 -10
  260. package/dist/runtime/reporting/summaryGenerator.js +0 -67
  261. package/dist/runtime/reporting/summaryGenerator.js.map +0 -1
  262. package/dist/runtime/runAiCodeReview.d.ts +0 -36
  263. package/dist/runtime/runAiCodeReview.js +0 -409
  264. package/dist/runtime/runAiCodeReview.js.map +0 -1
  265. package/dist/runtime/runtimeConfig.d.ts +0 -4
  266. package/dist/runtime/runtimeConfig.js +0 -7
  267. package/dist/runtime/runtimeConfig.js.map +0 -1
  268. package/dist/strategies/ArchitecturalReviewStrategy.d.ts +0 -29
  269. package/dist/strategies/ArchitecturalReviewStrategy.js +0 -42
  270. package/dist/strategies/ArchitecturalReviewStrategy.js.map +0 -1
  271. package/dist/strategies/CodingTestReviewStrategy.d.ts +0 -194
  272. package/dist/strategies/CodingTestReviewStrategy.js +0 -681
  273. package/dist/strategies/CodingTestReviewStrategy.js.map +0 -1
  274. package/dist/strategies/ConsolidatedReviewStrategy.d.ts +0 -25
  275. package/dist/strategies/ConsolidatedReviewStrategy.js +0 -45
  276. package/dist/strategies/ConsolidatedReviewStrategy.js.map +0 -1
  277. package/dist/strategies/ExtractPatternsReviewStrategy.d.ts +0 -30
  278. package/dist/strategies/ExtractPatternsReviewStrategy.js +0 -51
  279. package/dist/strategies/ExtractPatternsReviewStrategy.js.map +0 -1
  280. package/dist/strategies/MultiPassReviewStrategy.d.ts +0 -86
  281. package/dist/strategies/MultiPassReviewStrategy.js +0 -590
  282. package/dist/strategies/MultiPassReviewStrategy.js.map +0 -1
  283. package/dist/strategies/ReviewStrategy.d.ts +0 -45
  284. package/dist/strategies/ReviewStrategy.js +0 -24
  285. package/dist/strategies/ReviewStrategy.js.map +0 -1
  286. package/dist/strategies/StrategyFactory.d.ts +0 -19
  287. package/dist/strategies/StrategyFactory.js +0 -72
  288. package/dist/strategies/StrategyFactory.js.map +0 -1
  289. package/dist/strategies/index.d.ts +0 -13
  290. package/dist/strategies/index.js +0 -30
  291. package/dist/strategies/index.js.map +0 -1
  292. package/dist/tokenizers/baseTokenizer.d.ts +0 -25
  293. package/dist/tokenizers/baseTokenizer.js +0 -48
  294. package/dist/tokenizers/baseTokenizer.js.map +0 -1
  295. package/dist/tokenizers/gptTokenizer.d.ts +0 -7
  296. package/dist/tokenizers/gptTokenizer.js +0 -28
  297. package/dist/tokenizers/gptTokenizer.js.map +0 -1
  298. package/dist/tokenizers/index.d.ts +0 -7
  299. package/dist/tokenizers/index.js +0 -24
  300. package/dist/tokenizers/index.js.map +0 -1
  301. package/dist/types/apiResponses.d.ts +0 -39
  302. package/dist/types/apiResponses.js +0 -9
  303. package/dist/types/apiResponses.js.map +0 -1
  304. package/dist/types/cli.d.ts +0 -22
  305. package/dist/types/cli.js +0 -3
  306. package/dist/types/cli.js.map +0 -1
  307. package/dist/types/common.d.ts +0 -22
  308. package/dist/types/common.js +0 -14
  309. package/dist/types/common.js.map +0 -1
  310. package/dist/types/configuration.d.ts +0 -682
  311. package/dist/types/configuration.js +0 -65
  312. package/dist/types/configuration.js.map +0 -1
  313. package/dist/types/review.d.ts +0 -318
  314. package/dist/types/review.js +0 -8
  315. package/dist/types/review.js.map +0 -1
  316. package/dist/types/reviewSchema.d.ts +0 -543
  317. package/dist/types/reviewSchema.js +0 -121
  318. package/dist/types/reviewSchema.js.map +0 -1
  319. package/dist/types/structuredReview.d.ts +0 -119
  320. package/dist/types/structuredReview.js +0 -6
  321. package/dist/types/structuredReview.js.map +0 -1
  322. package/dist/types/tokenAnalysis.d.ts +0 -44
  323. package/dist/types/tokenAnalysis.js +0 -4
  324. package/dist/types/tokenAnalysis.js.map +0 -1
  325. package/dist/utils/FileReader.d.ts +0 -33
  326. package/dist/utils/FileReader.js +0 -88
  327. package/dist/utils/FileReader.js.map +0 -1
  328. package/dist/utils/FileWriter.d.ts +0 -26
  329. package/dist/utils/FileWriter.js +0 -76
  330. package/dist/utils/FileWriter.js.map +0 -1
  331. package/dist/utils/PathGenerator.d.ts +0 -30
  332. package/dist/utils/PathGenerator.js +0 -82
  333. package/dist/utils/PathGenerator.js.map +0 -1
  334. package/dist/utils/api/apiUtils.d.ts +0 -3
  335. package/dist/utils/api/apiUtils.js +0 -20
  336. package/dist/utils/api/apiUtils.js.map +0 -1
  337. package/dist/utils/api/index.d.ts +0 -1
  338. package/dist/utils/api/index.js +0 -18
  339. package/dist/utils/api/index.js.map +0 -1
  340. package/dist/utils/apiErrorHandler.d.ts +0 -130
  341. package/dist/utils/apiErrorHandler.js +0 -256
  342. package/dist/utils/apiErrorHandler.js.map +0 -1
  343. package/dist/utils/ciDataCollector.d.ts +0 -51
  344. package/dist/utils/ciDataCollector.js +0 -197
  345. package/dist/utils/ciDataCollector.js.map +0 -1
  346. package/dist/utils/codingTestConfigLoader.d.ts +0 -66
  347. package/dist/utils/codingTestConfigLoader.js +0 -420
  348. package/dist/utils/codingTestConfigLoader.js.map +0 -1
  349. package/dist/utils/dependencies/aiDependencyAnalyzer.d.ts +0 -30
  350. package/dist/utils/dependencies/aiDependencyAnalyzer.js +0 -343
  351. package/dist/utils/dependencies/aiDependencyAnalyzer.js.map +0 -1
  352. package/dist/utils/detection/frameworkDetector.d.ts +0 -43
  353. package/dist/utils/detection/frameworkDetector.js +0 -850
  354. package/dist/utils/detection/frameworkDetector.js.map +0 -1
  355. package/dist/utils/detection/index.d.ts +0 -9
  356. package/dist/utils/detection/index.js +0 -28
  357. package/dist/utils/detection/index.js.map +0 -1
  358. package/dist/utils/detection/projectTypeDetector.d.ts +0 -27
  359. package/dist/utils/detection/projectTypeDetector.js +0 -469
  360. package/dist/utils/detection/projectTypeDetector.js.map +0 -1
  361. package/dist/utils/diagramGenerator.d.ts +0 -49
  362. package/dist/utils/diagramGenerator.js +0 -218
  363. package/dist/utils/diagramGenerator.js.map +0 -1
  364. package/dist/utils/errorLogger.d.ts +0 -24
  365. package/dist/utils/errorLogger.js +0 -59
  366. package/dist/utils/errorLogger.js.map +0 -1
  367. package/dist/utils/estimationUtils.d.ts +0 -139
  368. package/dist/utils/estimationUtils.js +0 -329
  369. package/dist/utils/estimationUtils.js.map +0 -1
  370. package/dist/utils/fileFilters.d.ts +0 -72
  371. package/dist/utils/fileFilters.js +0 -350
  372. package/dist/utils/fileFilters.js.map +0 -1
  373. package/dist/utils/fileSystem.d.ts +0 -22
  374. package/dist/utils/fileSystem.js +0 -45
  375. package/dist/utils/fileSystem.js.map +0 -1
  376. package/dist/utils/index.d.ts +0 -22
  377. package/dist/utils/index.js +0 -52
  378. package/dist/utils/index.js.map +0 -1
  379. package/dist/utils/pathValidator.d.ts +0 -40
  380. package/dist/utils/pathValidator.js +0 -98
  381. package/dist/utils/pathValidator.js.map +0 -1
  382. package/dist/utils/priorityFilter.d.ts +0 -34
  383. package/dist/utils/priorityFilter.js +0 -54
  384. package/dist/utils/priorityFilter.js.map +0 -1
  385. package/dist/utils/projectDocs.d.ts +0 -47
  386. package/dist/utils/projectDocs.js +0 -158
  387. package/dist/utils/projectDocs.js.map +0 -1
  388. package/dist/utils/promptPaths.d.ts +0 -6
  389. package/dist/utils/promptPaths.js +0 -33
  390. package/dist/utils/promptPaths.js.map +0 -1
  391. package/dist/utils/promptTemplateManager.d.ts +0 -34
  392. package/dist/utils/promptTemplateManager.js +0 -141
  393. package/dist/utils/promptTemplateManager.js.map +0 -1
  394. package/dist/utils/review/consolidateReview.d.ts +0 -15
  395. package/dist/utils/review/consolidateReview.js +0 -481
  396. package/dist/utils/review/consolidateReview.js.map +0 -1
  397. package/dist/utils/review/fixDisplay.d.ts +0 -20
  398. package/dist/utils/review/fixDisplay.js +0 -84
  399. package/dist/utils/review/fixDisplay.js.map +0 -1
  400. package/dist/utils/review/fixImplementation.d.ts +0 -28
  401. package/dist/utils/review/fixImplementation.js +0 -60
  402. package/dist/utils/review/fixImplementation.js.map +0 -1
  403. package/dist/utils/review/index.d.ts +0 -13
  404. package/dist/utils/review/index.js +0 -50
  405. package/dist/utils/review/index.js.map +0 -1
  406. package/dist/utils/review/interactiveProcessing.d.ts +0 -25
  407. package/dist/utils/review/interactiveProcessing.js +0 -251
  408. package/dist/utils/review/interactiveProcessing.js.map +0 -1
  409. package/dist/utils/review/progressTracker.d.ts +0 -106
  410. package/dist/utils/review/progressTracker.js +0 -227
  411. package/dist/utils/review/progressTracker.js.map +0 -1
  412. package/dist/utils/review/reviewExtraction.d.ts +0 -31
  413. package/dist/utils/review/reviewExtraction.js +0 -324
  414. package/dist/utils/review/reviewExtraction.js.map +0 -1
  415. package/dist/utils/review/types.d.ts +0 -45
  416. package/dist/utils/review/types.js +0 -18
  417. package/dist/utils/review/types.js.map +0 -1
  418. package/dist/utils/reviewActionHandler.d.ts +0 -16
  419. package/dist/utils/reviewActionHandler.js +0 -34
  420. package/dist/utils/reviewActionHandler.js.map +0 -1
  421. package/dist/utils/reviewParser.d.ts +0 -34
  422. package/dist/utils/reviewParser.js +0 -218
  423. package/dist/utils/reviewParser.js.map +0 -1
  424. package/dist/utils/sanitizer.d.ts +0 -82
  425. package/dist/utils/sanitizer.js +0 -239
  426. package/dist/utils/sanitizer.js.map +0 -1
  427. package/dist/utils/smartFileSelector.d.ts +0 -50
  428. package/dist/utils/smartFileSelector.js +0 -261
  429. package/dist/utils/smartFileSelector.js.map +0 -1
  430. package/dist/utils/templateLoader.d.ts +0 -44
  431. package/dist/utils/templateLoader.js +0 -431
  432. package/dist/utils/templateLoader.js.map +0 -1
  433. package/dist/utils/treeGenerator.d.ts +0 -12
  434. package/dist/utils/treeGenerator.js +0 -133
  435. package/dist/utils/treeGenerator.js.map +0 -1
@@ -1,681 +0,0 @@
1
- "use strict";
2
- /**
3
- * @fileoverview Coding test review strategy implementation.
4
- *
5
- * This module implements the coding test review strategy for evaluating candidate submissions
6
- * against assignment requirements using configurable scoring criteria and evaluation frameworks.
7
- */
8
- var __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.CodingTestReviewStrategy = void 0;
13
- const AIDetectionEngine_1 = require("../analysis/ai-detection/core/AIDetectionEngine");
14
- const SubmissionConverter_1 = require("../analysis/ai-detection/utils/SubmissionConverter");
15
- const ReviewGenerator_1 = require("../core/ReviewGenerator");
16
- const ciDataCollector_1 = require("../utils/ciDataCollector");
17
- const codingTestConfigLoader_1 = require("../utils/codingTestConfigLoader");
18
- const logger_1 = __importDefault(require("../utils/logger"));
19
- const ReviewStrategy_1 = require("./ReviewStrategy");
20
- /**
21
- * Strategy for coding test assessment and evaluation
22
- */
23
- class CodingTestReviewStrategy extends ReviewStrategy_1.BaseReviewStrategy {
24
- config;
25
- aiDetectionEngine;
26
- /**
27
- * Create a new coding test review strategy
28
- * @param config Coding test configuration or options for loading configuration
29
- */
30
- constructor(config = {}) {
31
- super('coding-test');
32
- this.config = this.initializeConfig(config);
33
- // AI detection initialization moved to execute() method after config merge
34
- }
35
- /**
36
- * Execute the coding test review strategy
37
- * @param files Files to review
38
- * @param projectName Project name
39
- * @param projectDocs Project documentation
40
- * @param options Review options
41
- * @param apiClientConfig API client configuration
42
- * @returns Promise resolving to the review result
43
- */
44
- async execute(files, projectName, projectDocs, options, apiClientConfig) {
45
- logger_1.default.info(`Executing coding test review strategy for ${projectName}...`);
46
- // Merge configuration from options
47
- const effectiveConfig = this.mergeOptionsWithConfig(options);
48
- // Initialize AI detection engine with merged configuration
49
- this.initializeAIDetectionWithConfig(effectiveConfig);
50
- // Collect CI data if applicable
51
- let ciData;
52
- if (this.shouldCollectCIData(files, options)) {
53
- logger_1.default.info('Collecting CI data for coding test evaluation...');
54
- ciData = await (0, ciDataCollector_1.collectCIData)(process.cwd());
55
- options.ciData = ciData;
56
- }
57
- // Run AI detection if enabled
58
- let aiDetectionResult = null;
59
- if (effectiveConfig.aiDetection?.enabled && this.aiDetectionEngine) {
60
- logger_1.default.info('🔍 Starting AI detection analysis...');
61
- logger_1.default.debug(`AI detection configuration: threshold=${effectiveConfig.aiDetection.threshold}, analyzers=${effectiveConfig.aiDetection.analyzers?.join(',')}`);
62
- const startTime = Date.now();
63
- try {
64
- logger_1.default.debug('Converting submission data for AI analysis...');
65
- const submission = await SubmissionConverter_1.SubmissionConverter.convert(files, projectName, projectDocs);
66
- logger_1.default.debug(`Submission conversion completed. Files: ${submission.codebase.files.length}, Commits: ${submission.repository.commits.length}`);
67
- logger_1.default.debug('Running AI detection engine analysis...');
68
- aiDetectionResult = await this.aiDetectionEngine.analyze(submission);
69
- const analysisTime = Date.now() - startTime;
70
- logger_1.default.info(`✅ AI detection completed in ${analysisTime}ms`);
71
- logger_1.default.info(`📊 Results: Confidence=${aiDetectionResult.confidenceScore.toFixed(3)}, AI Generated=${aiDetectionResult.isAIGenerated}, Patterns=${aiDetectionResult.detectedPatterns.length}`);
72
- if (aiDetectionResult.isAIGenerated) {
73
- const riskLevel = this.calculateRiskLevel(aiDetectionResult.confidenceScore);
74
- logger_1.default.warn(`🚨 AI-generated content detected! Risk Level: ${riskLevel}`);
75
- // Log detected patterns for debugging
76
- if (aiDetectionResult.detectedPatterns.length > 0) {
77
- logger_1.default.debug('Detected patterns:');
78
- aiDetectionResult.detectedPatterns.forEach((pattern) => {
79
- logger_1.default.debug(` - ${pattern.name} (${pattern.id}): confidence=${pattern.confidence}, score=${pattern.score}`);
80
- });
81
- }
82
- // Log recommendations
83
- if (aiDetectionResult.recommendations.length > 0) {
84
- logger_1.default.info('AI detection recommendations:');
85
- aiDetectionResult.recommendations.forEach((rec) => {
86
- logger_1.default.info(` ${rec}`);
87
- });
88
- }
89
- }
90
- else {
91
- logger_1.default.info('✅ No significant AI-generated patterns detected');
92
- }
93
- // Log analyzer performance
94
- if (aiDetectionResult.metadata.warnings.length > 0) {
95
- logger_1.default.warn('AI detection warnings:');
96
- aiDetectionResult.metadata.warnings.forEach((warning) => {
97
- logger_1.default.warn(` ⚠️ ${warning}`);
98
- });
99
- }
100
- }
101
- catch (error) {
102
- const analysisTime = Date.now() - startTime;
103
- logger_1.default.error(`❌ AI detection failed after ${analysisTime}ms: ${error instanceof Error ? error.message : 'Unknown error'}`);
104
- if (error instanceof Error && error.stack) {
105
- logger_1.default.debug('AI detection error stack:', error.stack);
106
- }
107
- // Log troubleshooting information
108
- logger_1.default.info('🔧 AI detection troubleshooting:');
109
- logger_1.default.info(' 1. Ensure the target directory contains a git repository with commit history');
110
- logger_1.default.info(' 2. Check that the project has documentation files (README, comments)');
111
- logger_1.default.info(' 3. Verify sufficient disk space and memory availability');
112
- logger_1.default.info(' 4. Try running with --debug flag for detailed logs');
113
- logger_1.default.info(' 5. Consider using fewer analyzers (--ai-detection-analyzers git)');
114
- }
115
- }
116
- else if (effectiveConfig.aiDetection?.enabled && !this.aiDetectionEngine) {
117
- logger_1.default.warn('⚠️ AI detection enabled but engine not initialized. Check configuration.');
118
- }
119
- else {
120
- logger_1.default.debug('AI detection disabled or not configured');
121
- }
122
- // Prepare enhanced options with coding test context and AI detection results
123
- const enhancedOptions = this.enhanceOptionsWithCodingTestContext(options, effectiveConfig, aiDetectionResult);
124
- // Generate the review using the selected API client
125
- const result = await (0, ReviewGenerator_1.generateReview)(files, projectName, this.reviewType, projectDocs, enhancedOptions, apiClientConfig);
126
- // Enhance result with coding test metadata and AI detection
127
- return this.enhanceResultWithCodingTestMetadata(result, effectiveConfig, aiDetectionResult);
128
- }
129
- /**
130
- * Initialize configuration from various sources
131
- * @param config Configuration or loading options
132
- * @returns Initialized configuration
133
- */
134
- initializeConfig(config) {
135
- // Check if it's a loading configuration
136
- if ('fromFile' in config || 'fromUrl' in config) {
137
- if (config.fromFile) {
138
- logger_1.default.info(`Loading coding test configuration from file: ${config.fromFile}`);
139
- const extendedConfig = (0, codingTestConfigLoader_1.loadCodingTestConfig)(config.fromFile);
140
- return this.normalizeConfig((0, codingTestConfigLoader_1.convertToCodingTestConfig)(extendedConfig));
141
- }
142
- if (config.fromUrl) {
143
- logger_1.default.info(`Loading coding test configuration from URL: ${config.fromUrl}`);
144
- // Note: This would need to be handled asynchronously in a real implementation
145
- // For now, we'll fall back to default configuration
146
- logger_1.default.warn('URL-based configuration loading not implemented in constructor. Using default configuration.');
147
- return this.normalizeConfig((0, codingTestConfigLoader_1.createDefaultCodingTestConfig)());
148
- }
149
- // No valid loading option provided, use default
150
- return this.normalizeConfig((0, codingTestConfigLoader_1.createDefaultCodingTestConfig)());
151
- }
152
- // It's a direct configuration object
153
- return this.normalizeConfig(config);
154
- }
155
- /**
156
- * Normalize and validate configuration
157
- * @param config Input configuration
158
- * @returns Normalized configuration
159
- */
160
- normalizeConfig(config) {
161
- const normalized = {
162
- assignment: {
163
- difficulty: 'mid',
164
- type: 'coding-challenge',
165
- timeLimit: 120,
166
- ...config.assignment,
167
- },
168
- criteria: {
169
- correctness: 30,
170
- codeQuality: 25,
171
- architecture: 20,
172
- performance: 15,
173
- testing: 10,
174
- ...config.criteria,
175
- },
176
- scoring: {
177
- system: 'numeric',
178
- maxScore: 100,
179
- passingThreshold: 70,
180
- breakdown: true,
181
- ...config.scoring,
182
- },
183
- feedback: {
184
- level: 'detailed',
185
- includeExamples: true,
186
- includeSuggestions: true,
187
- includeResources: false,
188
- ...config.feedback,
189
- },
190
- constraints: {
191
- ...config.constraints,
192
- },
193
- aiDetection: {
194
- enabled: false,
195
- threshold: 0.7,
196
- analyzers: ['git', 'documentation'],
197
- includeInReport: true,
198
- failOnDetection: false,
199
- ...config.aiDetection,
200
- },
201
- };
202
- // Validate criteria weights sum to 100
203
- this.validateCriteriaWeights(normalized.criteria);
204
- return normalized;
205
- }
206
- /**
207
- * Validate that criteria weights sum to 100
208
- * @param criteria Criteria configuration
209
- */
210
- validateCriteriaWeights(criteria) {
211
- const total = Object.values(criteria).reduce((sum, weight) => sum + weight, 0);
212
- if (Math.abs(total - 100) > 0.1) {
213
- logger_1.default.warn(`Criteria weights sum to ${total}, expected 100. Normalizing...`);
214
- // Normalize weights to sum to 100
215
- const normalizationFactor = 100 / total;
216
- Object.keys(criteria).forEach((key) => {
217
- criteria[key] = Math.round(criteria[key] * normalizationFactor);
218
- });
219
- }
220
- }
221
- /**
222
- * Merge CLI options with configuration
223
- * @param options Review options
224
- * @returns Merged configuration
225
- */
226
- mergeOptionsWithConfig(options) {
227
- const merged = { ...this.config };
228
- // Merge assignment configuration
229
- if (options.assignmentFile || options.assignmentText || options.assignmentUrl) {
230
- merged.assignment = {
231
- ...merged.assignment,
232
- };
233
- // Handle assignment text parsing
234
- if (options.assignmentText) {
235
- const parsedAssignment = (0, codingTestConfigLoader_1.parseAssignmentText)(options.assignmentText);
236
- merged.assignment = {
237
- ...merged.assignment,
238
- ...parsedAssignment,
239
- };
240
- }
241
- // Handle assignment file loading
242
- if (options.assignmentFile) {
243
- try {
244
- const fs = require('node:fs');
245
- const assignmentContent = fs.readFileSync(options.assignmentFile, 'utf8');
246
- const parsedAssignment = (0, codingTestConfigLoader_1.parseAssignmentText)(assignmentContent);
247
- merged.assignment = {
248
- ...merged.assignment,
249
- ...parsedAssignment,
250
- };
251
- }
252
- catch (error) {
253
- logger_1.default.warn(`Failed to load assignment file ${options.assignmentFile}:`, error);
254
- }
255
- }
256
- }
257
- if (options.assessmentType) {
258
- merged.assignment.type = options.assessmentType;
259
- }
260
- if (options.difficultyLevel) {
261
- merged.assignment.difficulty = options.difficultyLevel;
262
- }
263
- if (options.timeLimit) {
264
- merged.assignment.timeLimit = options.timeLimit;
265
- }
266
- // Merge criteria weights
267
- const criteriaUpdates = {};
268
- if (options.weightCorrectness !== undefined)
269
- criteriaUpdates.correctness = options.weightCorrectness;
270
- if (options.weightCodeQuality !== undefined)
271
- criteriaUpdates.codeQuality = options.weightCodeQuality;
272
- if (options.weightArchitecture !== undefined)
273
- criteriaUpdates.architecture = options.weightArchitecture;
274
- if (options.weightPerformance !== undefined)
275
- criteriaUpdates.performance = options.weightPerformance;
276
- if (options.weightTesting !== undefined)
277
- criteriaUpdates.testing = options.weightTesting;
278
- if (Object.keys(criteriaUpdates).length > 0) {
279
- merged.criteria = { ...merged.criteria, ...criteriaUpdates };
280
- this.validateCriteriaWeights(merged.criteria);
281
- }
282
- // Merge scoring configuration
283
- if (options.scoringSystem) {
284
- merged.scoring.system = options.scoringSystem;
285
- }
286
- if (options.maxScore !== undefined) {
287
- merged.scoring.maxScore = options.maxScore;
288
- }
289
- if (options.passingThreshold !== undefined) {
290
- merged.scoring.passingThreshold = options.passingThreshold;
291
- }
292
- if (options.scoreBreakdown !== undefined) {
293
- merged.scoring.breakdown = options.scoreBreakdown;
294
- }
295
- // Merge feedback configuration
296
- if (options.feedbackLevel) {
297
- merged.feedback.level = options.feedbackLevel;
298
- }
299
- if (options.includeExamples !== undefined) {
300
- merged.feedback.includeExamples = options.includeExamples;
301
- }
302
- if (options.includeSuggestions !== undefined) {
303
- merged.feedback.includeSuggestions = options.includeSuggestions;
304
- }
305
- if (options.includeResources !== undefined) {
306
- merged.feedback.includeResources = options.includeResources;
307
- }
308
- // Merge constraints
309
- if (options.allowedLibraries) {
310
- merged.constraints.allowedLibraries = options.allowedLibraries;
311
- }
312
- if (options.forbiddenPatterns) {
313
- merged.constraints.forbiddenPatterns = options.forbiddenPatterns;
314
- }
315
- if (options.language) {
316
- merged.constraints.targetLanguage = options.language;
317
- }
318
- if (options.framework) {
319
- merged.constraints.framework = options.framework;
320
- }
321
- // Merge AI detection configuration from CLI options
322
- if (options.enableAiDetection !== undefined) {
323
- merged.aiDetection.enabled = options.enableAiDetection;
324
- }
325
- if (options.aiDetectionThreshold !== undefined) {
326
- merged.aiDetection.threshold = options.aiDetectionThreshold;
327
- }
328
- if (options.aiDetectionAnalyzers) {
329
- const analyzers = options.aiDetectionAnalyzers.split(',').map((a) => a.trim());
330
- merged.aiDetection.analyzers = analyzers;
331
- }
332
- if (options.aiDetectionIncludeInReport !== undefined) {
333
- merged.aiDetection.includeInReport = options.aiDetectionIncludeInReport;
334
- }
335
- if (options.aiDetectionFailOnDetection !== undefined) {
336
- merged.aiDetection.failOnDetection = options.aiDetectionFailOnDetection;
337
- }
338
- return merged;
339
- }
340
- /**
341
- * Determine if CI data should be collected
342
- * @param files Files being reviewed
343
- * @param options Review options
344
- * @returns True if CI data should be collected
345
- */
346
- shouldCollectCIData(files, options) {
347
- return (options.language === 'typescript' ||
348
- files.some((f) => f.path.endsWith('.ts') || f.path.endsWith('.tsx')));
349
- }
350
- /**
351
- * Enhance options with coding test context
352
- * @param options Original options
353
- * @param config Effective configuration
354
- * @returns Enhanced options
355
- */
356
- enhanceOptionsWithCodingTestContext(options, config, aiDetectionResult) {
357
- const enhanced = { ...options };
358
- // Add coding test metadata to options
359
- enhanced.codingTestConfig = config;
360
- // Add prompt fragments for assignment context
361
- if (!enhanced.promptFragments) {
362
- enhanced.promptFragments = [];
363
- }
364
- // Add assignment context
365
- if (config.assignment) {
366
- enhanced.promptFragments.push({
367
- content: this.buildAssignmentContextPrompt(config.assignment),
368
- position: 'start',
369
- priority: 1,
370
- });
371
- }
372
- // Add evaluation criteria context
373
- if (config.criteria) {
374
- enhanced.promptFragments.push({
375
- content: this.buildCriteriaContextPrompt(config.criteria),
376
- position: 'start',
377
- priority: 2,
378
- });
379
- }
380
- // Add scoring context
381
- if (config.scoring) {
382
- enhanced.promptFragments.push({
383
- content: this.buildScoringContextPrompt(config.scoring),
384
- position: 'start',
385
- priority: 3,
386
- });
387
- }
388
- // Add feedback instructions
389
- if (config.feedback) {
390
- enhanced.promptFragments.push({
391
- content: this.buildFeedbackInstructionsPrompt(config.feedback),
392
- position: 'middle',
393
- priority: 1,
394
- });
395
- }
396
- // Add constraints context
397
- if (config.constraints) {
398
- enhanced.promptFragments.push({
399
- content: this.buildConstraintsContextPrompt(config.constraints),
400
- position: 'middle',
401
- priority: 2,
402
- });
403
- }
404
- // Add AI detection context if available
405
- if (aiDetectionResult && config.aiDetection?.includeInReport) {
406
- enhanced.promptFragments.push({
407
- content: this.buildAIDetectionContextPrompt(aiDetectionResult, config.aiDetection),
408
- position: 'middle',
409
- priority: 0, // High priority for AI detection results
410
- });
411
- // Add AI detection data for template rendering
412
- if (!enhanced.metadata) {
413
- enhanced.metadata = {};
414
- }
415
- enhanced.metadata.aiDetection = {
416
- isAIGenerated: aiDetectionResult.isAIGenerated,
417
- confidenceScore: aiDetectionResult.confidenceScore,
418
- patternsDetected: aiDetectionResult.detectedPatterns.length,
419
- highConfidencePatterns: aiDetectionResult.detectedPatterns.filter((p) => p.confidence === 'high').length,
420
- analysisTime: aiDetectionResult.metadata.totalAnalysisTime,
421
- analyzersUsed: aiDetectionResult.metadata.enabledAnalyzers,
422
- };
423
- }
424
- return enhanced;
425
- }
426
- /**
427
- * Build assignment context prompt
428
- * @param assignment Assignment configuration
429
- * @returns Assignment context prompt
430
- */
431
- buildAssignmentContextPrompt(assignment) {
432
- let prompt = '## Assignment Context\n\n';
433
- if (assignment.title) {
434
- prompt += `**Assignment Title:** ${assignment.title}\n\n`;
435
- }
436
- if (assignment.description) {
437
- prompt += `**Assignment Description:**\n${assignment.description}\n\n`;
438
- }
439
- if (assignment.requirements && assignment.requirements.length > 0) {
440
- prompt += `**Requirements:**\n`;
441
- assignment.requirements.forEach((req) => {
442
- prompt += `- ${req}\n`;
443
- });
444
- prompt += '\n';
445
- }
446
- prompt += `**Assessment Type:** ${assignment.type}\n`;
447
- prompt += `**Difficulty Level:** ${assignment.difficulty}\n`;
448
- if (assignment.timeLimit) {
449
- prompt += `**Time Limit:** ${assignment.timeLimit} minutes\n`;
450
- }
451
- return prompt;
452
- }
453
- /**
454
- * Build criteria context prompt
455
- * @param criteria Criteria configuration
456
- * @returns Criteria context prompt
457
- */
458
- buildCriteriaContextPrompt(criteria) {
459
- let prompt = '## Evaluation Criteria\n\n';
460
- prompt += 'Evaluate the code based on the following weighted criteria:\n\n';
461
- Object.entries(criteria).forEach(([criterion, weight]) => {
462
- prompt += `- **${this.formatCriterionName(criterion)}:** ${weight}% weight\n`;
463
- });
464
- return `${prompt}\n`;
465
- }
466
- /**
467
- * Build scoring context prompt
468
- * @param scoring Scoring configuration
469
- * @returns Scoring context prompt
470
- */
471
- buildScoringContextPrompt(scoring) {
472
- let prompt = '## Scoring System\n\n';
473
- prompt += `**System:** ${scoring.system}\n`;
474
- prompt += `**Maximum Score:** ${scoring.maxScore}\n`;
475
- prompt += `**Passing Threshold:** ${scoring.passingThreshold}\n`;
476
- if (scoring.breakdown) {
477
- prompt += '**Score Breakdown:** Required for each criterion\n';
478
- }
479
- return `${prompt}\n`;
480
- }
481
- /**
482
- * Build feedback instructions prompt
483
- * @param feedback Feedback configuration
484
- * @returns Feedback instructions prompt
485
- */
486
- buildFeedbackInstructionsPrompt(feedback) {
487
- let prompt = '## Feedback Instructions\n\n';
488
- prompt += `**Detail Level:** ${feedback.level}\n`;
489
- if (feedback.includeExamples) {
490
- prompt += '- Include specific code examples in feedback\n';
491
- }
492
- if (feedback.includeSuggestions) {
493
- prompt += '- Provide concrete improvement suggestions\n';
494
- }
495
- if (feedback.includeResources) {
496
- prompt += '- Include relevant learning resources\n';
497
- }
498
- return `${prompt}\n`;
499
- }
500
- /**
501
- * Build constraints context prompt
502
- * @param constraints Constraints configuration
503
- * @returns Constraints context prompt
504
- */
505
- buildConstraintsContextPrompt(constraints) {
506
- let prompt = '## Technical Constraints\n\n';
507
- if (constraints.allowedLibraries && constraints.allowedLibraries.length > 0) {
508
- prompt += `**Allowed Libraries:** ${constraints.allowedLibraries.join(', ')}\n`;
509
- }
510
- if (constraints.forbiddenPatterns && constraints.forbiddenPatterns.length > 0) {
511
- prompt += `**Forbidden Patterns:** ${constraints.forbiddenPatterns.join(', ')}\n`;
512
- }
513
- if (constraints.targetLanguage) {
514
- prompt += `**Target Language:** ${constraints.targetLanguage}\n`;
515
- }
516
- if (constraints.framework) {
517
- prompt += `**Framework:** ${constraints.framework}\n`;
518
- }
519
- if (constraints.nodeVersion) {
520
- prompt += `**Node.js Version:** ${constraints.nodeVersion}\n`;
521
- }
522
- if (constraints.memoryLimit) {
523
- prompt += `**Memory Limit:** ${constraints.memoryLimit} MB\n`;
524
- }
525
- if (constraints.executionTimeout) {
526
- prompt += `**Execution Timeout:** ${constraints.executionTimeout} seconds\n`;
527
- }
528
- return `${prompt}\n`;
529
- }
530
- /**
531
- * Format criterion name for display
532
- * @param criterion Criterion key
533
- * @returns Formatted criterion name
534
- */
535
- formatCriterionName(criterion) {
536
- return criterion
537
- .replace(/([A-Z])/g, ' $1')
538
- .replace(/^./, (str) => str.toUpperCase())
539
- .trim();
540
- }
541
- /**
542
- * Enhance result with coding test metadata
543
- * @param result Original result
544
- * @param config Configuration used
545
- * @returns Enhanced result
546
- */
547
- enhanceResultWithCodingTestMetadata(result, config, aiDetectionResult) {
548
- const enhanced = {
549
- ...result,
550
- metadata: {
551
- ...result.metadata,
552
- codingTestConfig: config,
553
- assessmentType: config.assignment?.type || 'coding-challenge',
554
- difficultyLevel: config.assignment?.difficulty || 'mid',
555
- criteriaWeights: config.criteria,
556
- scoringSystem: config.scoring?.system || 'numeric',
557
- maxScore: config.scoring?.maxScore || 100,
558
- passingThreshold: config.scoring?.passingThreshold || 70,
559
- },
560
- };
561
- // Add AI detection results to metadata if available
562
- if (aiDetectionResult) {
563
- enhanced.metadata.aiDetection = {
564
- isAIGenerated: aiDetectionResult.isAIGenerated,
565
- confidenceScore: aiDetectionResult.confidenceScore,
566
- patternsDetected: aiDetectionResult.detectedPatterns.length,
567
- highConfidencePatterns: aiDetectionResult.detectedPatterns.filter((p) => p.confidence === 'high').length,
568
- analysisTime: aiDetectionResult.metadata.totalAnalysisTime,
569
- analyzersUsed: aiDetectionResult.metadata.enabledAnalyzers,
570
- };
571
- }
572
- return enhanced;
573
- }
574
- /**
575
- * Initialize AI detection engine with merged configuration
576
- * @param config Effective configuration after merging options
577
- */
578
- initializeAIDetectionWithConfig(config) {
579
- if (config.aiDetection?.enabled) {
580
- const detectionConfig = {
581
- detectionThreshold: config.aiDetection.threshold || 0.7,
582
- enabledAnalyzers: config.aiDetection.analyzers || ['git', 'documentation'],
583
- enableCaching: true,
584
- includeEvidence: true,
585
- generateRecommendations: true,
586
- };
587
- this.aiDetectionEngine = new AIDetectionEngine_1.AIDetectionEngine(detectionConfig);
588
- logger_1.default.info('AI detection engine initialized with analyzers:', detectionConfig.enabledAnalyzers);
589
- }
590
- else {
591
- logger_1.default.info('AI detection disabled or not configured');
592
- }
593
- }
594
- /**
595
- * Initialize AI detection engine if enabled (legacy method - kept for compatibility)
596
- */
597
- initializeAIDetection() {
598
- if (this.config.aiDetection?.enabled) {
599
- const detectionConfig = {
600
- detectionThreshold: this.config.aiDetection.threshold || 0.7,
601
- enabledAnalyzers: this.config.aiDetection.analyzers || ['git', 'documentation'],
602
- enableCaching: true,
603
- includeEvidence: true,
604
- generateRecommendations: true,
605
- };
606
- this.aiDetectionEngine = new AIDetectionEngine_1.AIDetectionEngine(detectionConfig);
607
- logger_1.default.info('AI detection engine initialized with analyzers:', detectionConfig.enabledAnalyzers);
608
- }
609
- }
610
- /**
611
- * Build AI detection context prompt
612
- * @param aiDetectionResult AI detection analysis result
613
- * @param config AI detection configuration
614
- * @returns AI detection context prompt
615
- */
616
- buildAIDetectionContextPrompt(aiDetectionResult, config) {
617
- let prompt = '## AI-Generated Code Detection Results\n\n';
618
- if (aiDetectionResult.isAIGenerated) {
619
- prompt += `🚨 **ALERT: AI-Generated Content Detected**\n\n`;
620
- prompt += `**Confidence Score:** ${(aiDetectionResult.confidenceScore * 100).toFixed(1)}%\n`;
621
- prompt += `**Risk Level:** ${this.calculateRiskLevel(aiDetectionResult.confidenceScore)}\n\n`;
622
- }
623
- else {
624
- prompt += `✅ **Human-Authored Code Detected**\n\n`;
625
- prompt += `**Confidence Score:** ${(aiDetectionResult.confidenceScore * 100).toFixed(1)}%\n\n`;
626
- }
627
- if (aiDetectionResult.detectedPatterns.length > 0) {
628
- prompt += `**Detected Patterns (${aiDetectionResult.detectedPatterns.length}):**\n`;
629
- const highConfidencePatterns = aiDetectionResult.detectedPatterns.filter((p) => p.confidence === 'high');
630
- if (highConfidencePatterns.length > 0) {
631
- prompt += `\n*High Confidence Patterns:*\n`;
632
- highConfidencePatterns.forEach((pattern) => {
633
- prompt += `- **${pattern.name}** (${pattern.id}): ${pattern.description}\n`;
634
- });
635
- }
636
- const mediumConfidencePatterns = aiDetectionResult.detectedPatterns.filter((p) => p.confidence === 'medium');
637
- if (mediumConfidencePatterns.length > 0) {
638
- prompt += `\n*Medium Confidence Patterns:*\n`;
639
- mediumConfidencePatterns.forEach((pattern) => {
640
- prompt += `- **${pattern.name}** (${pattern.id}): ${pattern.description}\n`;
641
- });
642
- }
643
- }
644
- if (aiDetectionResult.recommendations.length > 0) {
645
- prompt += `\n**Evaluation Recommendations:**\n`;
646
- aiDetectionResult.recommendations.forEach((rec) => {
647
- prompt += `- ${rec}\n`;
648
- });
649
- }
650
- prompt += `\n**Instructions for Evaluation:**\n`;
651
- if (aiDetectionResult.isAIGenerated) {
652
- prompt += `- This submission requires additional verification due to AI detection\n`;
653
- prompt += `- Focus evaluation on candidate's understanding rather than just code functionality\n`;
654
- prompt += `- Consider the specific patterns detected when assessing authenticity\n`;
655
- if (config.failOnDetection) {
656
- prompt += `- **IMPORTANT:** Configuration indicates this submission should fail if AI-generated\n`;
657
- }
658
- }
659
- else {
660
- prompt += `- Proceed with standard evaluation criteria\n`;
661
- prompt += `- AI detection indicates likely human authorship\n`;
662
- }
663
- return `${prompt}\n`;
664
- }
665
- /**
666
- * Calculate risk level based on confidence score
667
- * @param confidenceScore Confidence score from 0.0 to 1.0
668
- * @returns Risk level
669
- */
670
- calculateRiskLevel(confidenceScore) {
671
- if (confidenceScore >= 0.9)
672
- return 'CRITICAL';
673
- if (confidenceScore >= 0.8)
674
- return 'HIGH';
675
- if (confidenceScore >= 0.6)
676
- return 'MEDIUM';
677
- return 'LOW';
678
- }
679
- }
680
- exports.CodingTestReviewStrategy = CodingTestReviewStrategy;
681
- //# sourceMappingURL=CodingTestReviewStrategy.js.map