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,622 +0,0 @@
1
- /**
2
- * @fileoverview Documentation analyzer for detecting AI-generated content patterns.
3
- *
4
- * This analyzer examines README files, code comments, and documentation structure
5
- * to identify characteristics commonly associated with AI-generated documentation.
6
- */
7
-
8
- import type {
9
- CodeFile,
10
- CodeSubmission,
11
- DetectedPattern,
12
- DocumentationResult,
13
- PatternDetectionResult,
14
- } from '../types/DetectionTypes';
15
- import { BaseAnalyzer } from './BaseAnalyzer';
16
-
17
- /**
18
- * Analyzer for documentation patterns that may indicate AI generation
19
- */
20
- export class DocumentationAnalyzer extends BaseAnalyzer {
21
- /**
22
- * Get analyzer name
23
- */
24
- getAnalyzerName(): string {
25
- return 'documentation';
26
- }
27
-
28
- /**
29
- * Analyze documentation for AI-generated patterns
30
- * @param submission Code submission to analyze
31
- * @returns Documentation analysis result
32
- */
33
- async analyze(submission: CodeSubmission): Promise<DocumentationResult> {
34
- this.startTimer();
35
- const patterns: DetectedPattern[] = [];
36
-
37
- try {
38
- const { documentation } = submission;
39
-
40
- // Pattern H2.1: Template README Structure
41
- if (documentation.readme) {
42
- const readmeResult = this.analyzeREADMEStructure(documentation.readme);
43
- if (readmeResult.detected) {
44
- patterns.push(
45
- this.createDetectedPattern(
46
- 'H2.1',
47
- 'Template README Structure',
48
- 'high',
49
- readmeResult.score,
50
- 'README follows AI-generated template structure with standard sections',
51
- readmeResult.evidence || {},
52
- ),
53
- );
54
- }
55
- }
56
-
57
- // Pattern H2.2: Excessive Comment Density
58
- const commentResult = this.analyzeCommentDensity(documentation.codeFiles);
59
- if (commentResult.detected) {
60
- patterns.push(
61
- this.createDetectedPattern(
62
- 'H2.2',
63
- 'Excessive Comment Density',
64
- 'high',
65
- commentResult.score,
66
- 'Unusually high and uniform comment density across files',
67
- commentResult.evidence || {},
68
- ),
69
- );
70
- }
71
-
72
- // Pattern H2.3: AI-Style Documentation
73
- if (documentation.readme) {
74
- const aiStyleResult = this.detectAIStyleDocumentation(documentation.readme);
75
- if (aiStyleResult.detected) {
76
- patterns.push(
77
- this.createDetectedPattern(
78
- 'H2.3',
79
- 'AI-Style Documentation',
80
- 'high',
81
- aiStyleResult.score,
82
- 'Documentation exhibits characteristics typical of AI-generated content',
83
- aiStyleResult.evidence || {},
84
- ),
85
- );
86
- }
87
- }
88
-
89
- // Pattern M2.4: Uniform Comment Patterns
90
- const uniformCommentResult = this.analyzeUniformCommentPatterns(documentation.codeFiles);
91
- if (uniformCommentResult.detected) {
92
- patterns.push(
93
- this.createDetectedPattern(
94
- 'M2.4',
95
- 'Uniform Comment Patterns',
96
- 'medium',
97
- uniformCommentResult.score,
98
- 'Comments follow suspiciously uniform patterns across files',
99
- uniformCommentResult.evidence || {},
100
- ),
101
- );
102
- }
103
-
104
- const avgCommentDensity = this.calculateAverageCommentDensity(documentation.codeFiles);
105
-
106
- return {
107
- analyzer: 'documentation',
108
- patterns,
109
- metadata: {
110
- filesAnalyzed: documentation.codeFiles.length,
111
- hasReadme: !!documentation.readme,
112
- avgCommentDensity,
113
- },
114
- };
115
- } catch (error) {
116
- console.error('Error in DocumentationAnalyzer:', error);
117
- return this.createEmptyResult();
118
- }
119
- }
120
-
121
- /**
122
- * Analyze README structure for template patterns
123
- * @param readme README content
124
- * @returns Pattern detection result
125
- */
126
- private analyzeREADMEStructure(readme: string): PatternDetectionResult {
127
- const standardSections = [
128
- 'installation',
129
- 'usage',
130
- 'api',
131
- 'contributing',
132
- 'license',
133
- 'features',
134
- 'requirements',
135
- 'examples',
136
- 'documentation',
137
- 'getting started',
138
- 'quick start',
139
- 'configuration',
140
- 'support',
141
- ];
142
-
143
- const sections = this.extractSections(readme);
144
- const sectionLower = sections.map((s) => s.toLowerCase());
145
-
146
- const matchedStandard = sectionLower.filter((section) =>
147
- standardSections.some((std) => section.includes(std) || std.includes(section)),
148
- );
149
-
150
- const completeness = matchedStandard.length / standardSections.length;
151
-
152
- // High completeness (>60%) suggests template usage
153
- if (completeness > 0.6 && sections.length >= 5) {
154
- const badges = this.countBadges(readme);
155
- const genericPhrases = this.countGenericPhrases(readme);
156
- const templateIndicators = this.countTemplateIndicators(readme);
157
-
158
- const score = Math.min(
159
- 0.95,
160
- 0.5 +
161
- completeness * 0.25 +
162
- Math.min(badges, 5) * 0.03 +
163
- Math.min(genericPhrases, 10) * 0.02 +
164
- templateIndicators * 0.05,
165
- );
166
-
167
- return this.createPatternResult(true, score, {
168
- completeness,
169
- matchedSections: matchedStandard,
170
- totalSections: sections.length,
171
- badgeCount: badges,
172
- genericPhraseCount: genericPhrases,
173
- templateIndicatorCount: templateIndicators,
174
- sectionOrder: this.analyzeSectionOrder(sections),
175
- standardSections,
176
- });
177
- }
178
-
179
- return this.createPatternResult(false, completeness * 0.3);
180
- }
181
-
182
- /**
183
- * Analyze comment density across code files
184
- * @param codeFiles Array of code files
185
- * @returns Pattern detection result
186
- */
187
- private analyzeCommentDensity(codeFiles: CodeFile[]): PatternDetectionResult {
188
- if (codeFiles.length === 0) {
189
- return this.createPatternResult(false, 0);
190
- }
191
-
192
- const densities = codeFiles.map((file) => this.calculateCommentDensity(file.content));
193
- const averageDensity = densities.reduce((a, b) => a + b, 0) / densities.length;
194
- const uniformity = this.calculateUniformity(densities);
195
-
196
- // High density (>40%) with high uniformity (>0.8) suggests AI generation
197
- if (averageDensity > 0.4 && uniformity > 0.8 && codeFiles.length >= 3) {
198
- const score = Math.min(0.95, 0.5 + averageDensity * 0.3 + uniformity * 0.2);
199
-
200
- return this.createPatternResult(true, score, {
201
- averageDensity,
202
- uniformity,
203
- fileCount: codeFiles.length,
204
- densityDistribution: densities,
205
- threshold: { density: 0.4, uniformity: 0.8 },
206
- filesWithHighDensity: densities.filter((d) => d > 0.5).length,
207
- });
208
- }
209
-
210
- return this.createPatternResult(false, Math.max(averageDensity - 0.2, 0) * 0.5);
211
- }
212
-
213
- /**
214
- * Detect AI-style documentation patterns
215
- * @param readme README content
216
- * @returns Pattern detection result
217
- */
218
- private detectAIStyleDocumentation(readme: string): PatternDetectionResult {
219
- const aiIndicators = {
220
- overlyFormal: this.countOverlyFormalLanguage(readme),
221
- perfectGrammar: this.checkPerfectGrammar(readme),
222
- templatePhrases: this.countTemplatePhrases(readme),
223
- comprehensiveStructure: this.checkComprehensiveStructure(readme),
224
- technicalPrecision: this.checkTechnicalPrecision(readme),
225
- lackOfPersonality: this.checkLackOfPersonality(readme),
226
- };
227
-
228
- const totalIndicators = Object.keys(aiIndicators).length;
229
- const positiveIndicators = Object.values(aiIndicators).filter(Boolean).length;
230
- const ratio = positiveIndicators / totalIndicators;
231
-
232
- // If most indicators are present, suggest AI generation
233
- if (ratio > 0.6) {
234
- const score = Math.min(0.9, 0.5 + ratio * 0.4);
235
-
236
- return this.createPatternResult(true, score, {
237
- indicators: aiIndicators,
238
- positiveIndicators,
239
- totalIndicators,
240
- ratio,
241
- readmeLength: readme.length,
242
- wordCount: readme.split(/\s+/).length,
243
- });
244
- }
245
-
246
- return this.createPatternResult(false, ratio * 0.4);
247
- }
248
-
249
- /**
250
- * Analyze uniform comment patterns across files
251
- * @param codeFiles Array of code files
252
- * @returns Pattern detection result
253
- */
254
- private analyzeUniformCommentPatterns(codeFiles: CodeFile[]): PatternDetectionResult {
255
- if (codeFiles.length < 3) {
256
- return this.createPatternResult(false, 0);
257
- }
258
-
259
- const commentPatterns = codeFiles.map((file) => this.extractCommentPatterns(file.content));
260
- const uniformityScore = this.calculateCommentPatternUniformity(commentPatterns);
261
-
262
- // High uniformity suggests AI-generated comments
263
- if (uniformityScore > 0.8) {
264
- const score = Math.min(0.85, 0.4 + uniformityScore * 0.4);
265
-
266
- return this.createPatternResult(true, score, {
267
- uniformityScore,
268
- fileCount: codeFiles.length,
269
- commonPatterns: this.findCommonCommentPatterns(commentPatterns),
270
- threshold: 0.8,
271
- });
272
- }
273
-
274
- return this.createPatternResult(false, uniformityScore * 0.3);
275
- }
276
-
277
- /**
278
- * Calculate comment density for a single file
279
- * @param content File content
280
- * @returns Comment density ratio (0.0 to 1.0)
281
- */
282
- private calculateCommentDensity(content: string): number {
283
- const lines = content.split('\n');
284
- const codeLines = lines.filter((line) => {
285
- const trimmed = line.trim();
286
- return (
287
- trimmed &&
288
- !trimmed.startsWith('//') &&
289
- !trimmed.startsWith('/*') &&
290
- !trimmed.startsWith('*') &&
291
- !trimmed.startsWith('#') && // Python/shell comments
292
- !trimmed.match(/^\s*\/\*/) && // Multi-line comment start
293
- !trimmed.match(/\*\/\s*$/)
294
- ); // Multi-line comment end
295
- });
296
-
297
- const commentLines = lines.length - codeLines.length;
298
- return lines.length > 0 ? commentLines / lines.length : 0;
299
- }
300
-
301
- /**
302
- * Calculate average comment density across files
303
- * @param codeFiles Array of code files
304
- * @returns Average comment density
305
- */
306
- private calculateAverageCommentDensity(codeFiles: CodeFile[]): number {
307
- if (codeFiles.length === 0) return 0;
308
-
309
- const densities = codeFiles.map((file) => this.calculateCommentDensity(file.content));
310
- return densities.reduce((sum, density) => sum + density, 0) / densities.length;
311
- }
312
-
313
- /**
314
- * Count template indicators in README
315
- * @param readme README content
316
- * @returns Number of template indicators
317
- */
318
- private countTemplateIndicators(readme: string): number {
319
- const templatePatterns = [
320
- /\[!\[.*?\]\(.*?\)\]\(.*?\)/g, // Nested badge syntax
321
- /## Table of Contents/gi,
322
- /\*\*Note:\*\*/gi,
323
- /Replace `.*?` with/gi,
324
- /\$\{.*?\}/g, // Template variables
325
- /\[\[.*?\]\]/g, // Wiki-style links
326
- ];
327
-
328
- let count = 0;
329
- for (const pattern of templatePatterns) {
330
- const matches = readme.match(pattern);
331
- if (matches) {
332
- count += matches.length;
333
- }
334
- }
335
-
336
- return count;
337
- }
338
-
339
- /**
340
- * Analyze section ordering for template patterns
341
- * @param sections Array of section names
342
- * @returns Section order analysis
343
- */
344
- private analyzeSectionOrder(sections: string[]): any {
345
- const standardOrder = [
346
- 'title',
347
- 'description',
348
- 'installation',
349
- 'usage',
350
- 'api',
351
- 'examples',
352
- 'contributing',
353
- 'license',
354
- ];
355
-
356
- let orderScore = 0;
357
- let lastIndex = -1;
358
-
359
- sections.forEach((section) => {
360
- const sectionLower = section.toLowerCase();
361
- const standardIndex = standardOrder.findIndex(
362
- (std) => sectionLower.includes(std) || std.includes(sectionLower),
363
- );
364
-
365
- if (standardIndex > lastIndex) {
366
- orderScore++;
367
- lastIndex = standardIndex;
368
- }
369
- });
370
-
371
- return {
372
- orderScore,
373
- maxPossibleScore: Math.min(sections.length, standardOrder.length),
374
- followsStandardOrder: orderScore / Math.min(sections.length, standardOrder.length) > 0.8,
375
- };
376
- }
377
-
378
- /**
379
- * Count overly formal language patterns
380
- * @param content Text content
381
- * @returns Count of formal language indicators
382
- */
383
- private countOverlyFormalLanguage(content: string): number {
384
- const formalPatterns = [
385
- /furthermore/gi,
386
- /moreover/gi,
387
- /in addition/gi,
388
- /consequently/gi,
389
- /subsequently/gi,
390
- /comprehensive/gi,
391
- /sophisticated/gi,
392
- /facilitate/gi,
393
- /utilize/gi,
394
- /implement.*functionality/gi,
395
- ];
396
-
397
- let count = 0;
398
- for (const pattern of formalPatterns) {
399
- const matches = content.match(pattern);
400
- if (matches) {
401
- count += matches.length;
402
- }
403
- }
404
-
405
- return count;
406
- }
407
-
408
- /**
409
- * Check for perfect grammar indicators
410
- * @param content Text content
411
- * @returns True if grammar seems too perfect
412
- */
413
- private checkPerfectGrammar(content: string): boolean {
414
- // Simple heuristics for "too perfect" grammar
415
- const sentences = content.split(/[.!?]+/).filter((s) => s.trim().length > 10);
416
- if (sentences.length < 5) return false;
417
-
418
- const indicators = {
419
- noContractions: !content.match(/\b(don't|won't|can't|it's|you're|we're)\b/i),
420
- consistentCapitalization: this.hasConsistentCapitalization(content),
421
- noTypos: !content.match(/\b(teh|recieve|seperate|definately)\b/i),
422
- perfectPunctuation: this.hasPerfectPunctuation(content),
423
- };
424
-
425
- const positiveCount = Object.values(indicators).filter(Boolean).length;
426
- return positiveCount >= 3;
427
- }
428
-
429
- /**
430
- * Count template phrases
431
- * @param content Text content
432
- * @returns Number of template phrases
433
- */
434
- private countTemplatePhrases(content: string): number {
435
- const templatePhrases = [
436
- /this project provides/gi,
437
- /easy to use/gi,
438
- /getting started is simple/gi,
439
- /follow these steps/gi,
440
- /comprehensive solution/gi,
441
- /powerful and flexible/gi,
442
- /designed to be/gi,
443
- /built with.*in mind/gi,
444
- ];
445
-
446
- let count = 0;
447
- for (const pattern of templatePhrases) {
448
- const matches = content.match(pattern);
449
- if (matches) {
450
- count += matches.length;
451
- }
452
- }
453
-
454
- return count;
455
- }
456
-
457
- /**
458
- * Check for comprehensive structure
459
- * @param content Text content
460
- * @returns True if structure is suspiciously comprehensive
461
- */
462
- private checkComprehensiveStructure(content: string): boolean {
463
- const sections = this.extractSections(content);
464
- return sections.length > 8 && content.length > 2000;
465
- }
466
-
467
- /**
468
- * Check for technical precision
469
- * @param content Text content
470
- * @returns True if technically precise in AI-like way
471
- */
472
- private checkTechnicalPrecision(content: string): boolean {
473
- const technicalIndicators = [
474
- /version \d+\.\d+\.\d+/gi,
475
- /node\.js \d+\.\d+/gi,
476
- /typescript \d+\.\d+/gi,
477
- /npm install/gi,
478
- /yarn add/gi,
479
- /pnpm install/gi,
480
- ];
481
-
482
- let count = 0;
483
- for (const pattern of technicalIndicators) {
484
- const matches = content.match(pattern);
485
- if (matches) {
486
- count += matches.length;
487
- }
488
- }
489
-
490
- return count > 5;
491
- }
492
-
493
- /**
494
- * Check for lack of personality
495
- * @param content Text content
496
- * @returns True if lacks personal touches
497
- */
498
- private checkLackOfPersonality(content: string): boolean {
499
- const personalityIndicators = [
500
- /\bi\b/gi, // First person
501
- /my/gi,
502
- /personally/gi,
503
- /in my opinion/gi,
504
- /i think/gi,
505
- /i believe/gi,
506
- /hope/gi,
507
- /feel free/gi,
508
- ];
509
-
510
- let count = 0;
511
- for (const pattern of personalityIndicators) {
512
- const matches = content.match(pattern);
513
- if (matches) {
514
- count += matches.length;
515
- }
516
- }
517
-
518
- return count < 3 && content.length > 1000;
519
- }
520
-
521
- /**
522
- * Extract comment patterns from code
523
- * @param content Code content
524
- * @returns Comment pattern analysis
525
- */
526
- private extractCommentPatterns(content: string): any {
527
- const lines = content.split('\n');
528
- const commentLines = lines.filter((line) => {
529
- const trimmed = line.trim();
530
- return trimmed.startsWith('//') || trimmed.startsWith('/*') || trimmed.startsWith('*');
531
- });
532
-
533
- return {
534
- density: commentLines.length / lines.length,
535
- avgLength:
536
- commentLines.reduce((sum, line) => sum + line.length, 0) / (commentLines.length || 1),
537
- patterns: commentLines.map((line) => line.trim().substring(0, 20)), // First 20 chars
538
- };
539
- }
540
-
541
- /**
542
- * Calculate uniformity of comment patterns across files
543
- * @param patterns Array of comment patterns
544
- * @returns Uniformity score
545
- */
546
- private calculateCommentPatternUniformity(patterns: any[]): number {
547
- if (patterns.length < 2) return 0;
548
-
549
- const densities = patterns.map((p) => p.density);
550
- const avgLengths = patterns.map((p) => p.avgLength);
551
-
552
- const densityUniformity = this.calculateUniformity(densities);
553
- const lengthUniformity = this.calculateUniformity(avgLengths);
554
-
555
- return (densityUniformity + lengthUniformity) / 2;
556
- }
557
-
558
- /**
559
- * Find common comment patterns
560
- * @param patterns Array of comment patterns
561
- * @returns Common patterns found
562
- */
563
- private findCommonCommentPatterns(patterns: any[]): string[] {
564
- const allPatterns = patterns.flatMap((p) => p.patterns);
565
- const patternCounts = new Map<string, number>();
566
-
567
- allPatterns.forEach((pattern) => {
568
- patternCounts.set(pattern, (patternCounts.get(pattern) || 0) + 1);
569
- });
570
-
571
- return Array.from(patternCounts.entries())
572
- .filter(([, count]) => count > 1)
573
- .map(([pattern]) => pattern)
574
- .slice(0, 10); // Top 10 common patterns
575
- }
576
-
577
- /**
578
- * Check for consistent capitalization
579
- * @param content Text content
580
- * @returns True if capitalization is very consistent
581
- */
582
- private hasConsistentCapitalization(content: string): boolean {
583
- const sentences = content.split(/[.!?]+/).filter((s) => s.trim().length > 5);
584
- if (sentences.length < 3) return false;
585
-
586
- const capitalizedSentences = sentences.filter((s) => {
587
- const trimmed = s.trim();
588
- return trimmed.length > 0 && trimmed[0] === trimmed[0].toUpperCase();
589
- });
590
-
591
- return capitalizedSentences.length / sentences.length > 0.95;
592
- }
593
-
594
- /**
595
- * Check for perfect punctuation
596
- * @param content Text content
597
- * @returns True if punctuation is suspiciously perfect
598
- */
599
- private hasPerfectPunctuation(content: string): boolean {
600
- // Check for consistent spacing after punctuation
601
- const punctuationSpacing = content.match(/[.!?]\s{2,}/g);
602
- const inconsistentSpacing = content.match(/[.!?][^\s]/g);
603
-
604
- return !inconsistentSpacing && (punctuationSpacing?.length || 0) > 0;
605
- }
606
-
607
- /**
608
- * Create empty result for error cases
609
- * @returns Empty documentation analysis result
610
- */
611
- private createEmptyResult(): DocumentationResult {
612
- return {
613
- analyzer: 'documentation',
614
- patterns: [],
615
- metadata: {
616
- filesAnalyzed: 0,
617
- hasReadme: false,
618
- avgCommentDensity: 0,
619
- },
620
- };
621
- }
622
- }