codereview-aia 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (558) hide show
  1. package/dist/analysis/FindingsExtractor.d.ts +105 -0
  2. package/dist/analysis/FindingsExtractor.js +363 -0
  3. package/dist/analysis/FindingsExtractor.js.map +1 -0
  4. package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.d.ts +111 -0
  5. package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.js +215 -0
  6. package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.js.map +1 -0
  7. package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.d.ts +142 -0
  8. package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.js +503 -0
  9. package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.js.map +1 -0
  10. package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.d.ts +88 -0
  11. package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.js +343 -0
  12. package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.js.map +1 -0
  13. package/dist/analysis/ai-detection/core/AIDetectionEngine.d.ts +104 -0
  14. package/dist/analysis/ai-detection/core/AIDetectionEngine.js +369 -0
  15. package/dist/analysis/ai-detection/core/AIDetectionEngine.js.map +1 -0
  16. package/dist/analysis/ai-detection/types/DetectionTypes.d.ts +364 -0
  17. package/dist/analysis/ai-detection/types/DetectionTypes.js +32 -0
  18. package/dist/analysis/ai-detection/types/DetectionTypes.js.map +1 -0
  19. package/dist/analysis/ai-detection/utils/SubmissionConverter.d.ts +97 -0
  20. package/dist/analysis/ai-detection/utils/SubmissionConverter.js +339 -0
  21. package/dist/analysis/ai-detection/utils/SubmissionConverter.js.map +1 -0
  22. package/dist/analysis/context/ReviewContext.d.ts +184 -0
  23. package/dist/analysis/context/ReviewContext.js +294 -0
  24. package/dist/analysis/context/ReviewContext.js.map +1 -0
  25. package/{src/analysis/context/index.ts → dist/analysis/context/index.d.ts} +0 -1
  26. package/dist/analysis/context/index.js +23 -0
  27. package/dist/analysis/context/index.js.map +1 -0
  28. package/{src/analysis/index.ts → dist/analysis/index.d.ts} +0 -1
  29. package/dist/analysis/index.js +24 -0
  30. package/dist/analysis/index.js.map +1 -0
  31. package/dist/analysis/static/wpPhpcsRunner.d.ts +11 -0
  32. package/dist/analysis/static/wpPhpcsRunner.js +219 -0
  33. package/dist/analysis/static/wpPhpcsRunner.js.map +1 -0
  34. package/dist/analysis/tokens/TokenAnalysisFormatter.d.ts +27 -0
  35. package/{src/analysis/tokens/TokenAnalysisFormatter.ts → dist/analysis/tokens/TokenAnalysisFormatter.js} +64 -75
  36. package/dist/analysis/tokens/TokenAnalysisFormatter.js.map +1 -0
  37. package/dist/analysis/tokens/TokenAnalyzer.d.ts +155 -0
  38. package/dist/analysis/tokens/TokenAnalyzer.js +502 -0
  39. package/dist/analysis/tokens/TokenAnalyzer.js.map +1 -0
  40. package/{src/analysis/tokens/index.ts → dist/analysis/tokens/index.d.ts} +0 -1
  41. package/dist/analysis/tokens/index.js +24 -0
  42. package/dist/analysis/tokens/index.js.map +1 -0
  43. package/dist/clients/base/abstractClient.d.ts +99 -0
  44. package/dist/clients/base/abstractClient.js +98 -0
  45. package/dist/clients/base/abstractClient.js.map +1 -0
  46. package/dist/clients/base/httpClient.d.ts +24 -0
  47. package/dist/clients/base/httpClient.js +147 -0
  48. package/dist/clients/base/httpClient.js.map +1 -0
  49. package/{src/clients/base/index.ts → dist/clients/base/index.d.ts} +0 -1
  50. package/dist/clients/base/index.js +28 -0
  51. package/dist/clients/base/index.js.map +1 -0
  52. package/dist/clients/base/modelDetection.d.ts +41 -0
  53. package/dist/clients/base/modelDetection.js +88 -0
  54. package/dist/clients/base/modelDetection.js.map +1 -0
  55. package/dist/clients/base/responseProcessor.d.ts +45 -0
  56. package/dist/clients/base/responseProcessor.js +495 -0
  57. package/dist/clients/base/responseProcessor.js.map +1 -0
  58. package/dist/clients/factory/clientFactory.d.ts +23 -0
  59. package/dist/clients/factory/clientFactory.js +50 -0
  60. package/dist/clients/factory/clientFactory.js.map +1 -0
  61. package/{src/clients/factory/index.ts → dist/clients/factory/index.d.ts} +0 -1
  62. package/dist/clients/factory/index.js +24 -0
  63. package/dist/clients/factory/index.js.map +1 -0
  64. package/{src/clients/implementations/index.ts → dist/clients/implementations/index.d.ts} +0 -1
  65. package/dist/clients/implementations/index.js +24 -0
  66. package/dist/clients/implementations/index.js.map +1 -0
  67. package/dist/clients/implementations/openRouterClient.d.ts +69 -0
  68. package/dist/clients/implementations/openRouterClient.js +294 -0
  69. package/dist/clients/implementations/openRouterClient.js.map +1 -0
  70. package/dist/clients/openRouterClient.d.ts +42 -0
  71. package/dist/clients/openRouterClient.js +580 -0
  72. package/dist/clients/openRouterClient.js.map +1 -0
  73. package/{src/clients/openRouterClientWrapper.ts → dist/clients/openRouterClientWrapper.d.ts} +2 -24
  74. package/dist/clients/openRouterClientWrapper.js +64 -0
  75. package/dist/clients/openRouterClientWrapper.js.map +1 -0
  76. package/dist/clients/utils/directoryStructure.d.ts +14 -0
  77. package/dist/clients/utils/directoryStructure.js +48 -0
  78. package/dist/clients/utils/directoryStructure.js.map +1 -0
  79. package/{src/clients/utils/index.ts → dist/clients/utils/index.d.ts} +0 -1
  80. package/dist/clients/utils/index.js +31 -0
  81. package/dist/clients/utils/index.js.map +1 -0
  82. package/dist/clients/utils/languageDetection.d.ts +13 -0
  83. package/dist/clients/utils/languageDetection.js +46 -0
  84. package/dist/clients/utils/languageDetection.js.map +1 -0
  85. package/dist/clients/utils/promptFormatter.d.ts +37 -0
  86. package/dist/clients/utils/promptFormatter.js +150 -0
  87. package/dist/clients/utils/promptFormatter.js.map +1 -0
  88. package/{src/clients/utils/promptLoader.ts → dist/clients/utils/promptLoader.d.ts} +1 -27
  89. package/dist/clients/utils/promptLoader.js +49 -0
  90. package/dist/clients/utils/promptLoader.js.map +1 -0
  91. package/dist/clients/utils/tokenCounter.d.ts +81 -0
  92. package/dist/clients/utils/tokenCounter.js +184 -0
  93. package/dist/clients/utils/tokenCounter.js.map +1 -0
  94. package/dist/core/ApiClientSelector.d.ts +8 -0
  95. package/dist/core/ApiClientSelector.js +29 -0
  96. package/dist/core/ApiClientSelector.js.map +1 -0
  97. package/dist/core/ConfigurationService.d.ts +307 -0
  98. package/dist/core/ConfigurationService.js +516 -0
  99. package/dist/core/ConfigurationService.js.map +1 -0
  100. package/dist/core/ConsolidationService.d.ts +99 -0
  101. package/dist/core/ConsolidationService.js +341 -0
  102. package/dist/core/ConsolidationService.js.map +1 -0
  103. package/dist/core/InteractiveDisplayManager.d.ts +22 -0
  104. package/dist/core/InteractiveDisplayManager.js +70 -0
  105. package/dist/core/InteractiveDisplayManager.js.map +1 -0
  106. package/dist/core/OutputManager.d.ts +26 -0
  107. package/dist/core/OutputManager.js +217 -0
  108. package/dist/core/OutputManager.js.map +1 -0
  109. package/dist/core/ReviewGenerator.d.ts +13 -0
  110. package/dist/core/ReviewGenerator.js +102 -0
  111. package/dist/core/ReviewGenerator.js.map +1 -0
  112. package/dist/core/fileDiscovery.d.ts +35 -0
  113. package/dist/core/fileDiscovery.js +202 -0
  114. package/dist/core/fileDiscovery.js.map +1 -0
  115. package/dist/core/handlers/EstimationHandler.d.ts +18 -0
  116. package/dist/core/handlers/EstimationHandler.js +110 -0
  117. package/dist/core/handlers/EstimationHandler.js.map +1 -0
  118. package/dist/core/handlers/FileProcessingHandler.d.ts +31 -0
  119. package/dist/core/handlers/FileProcessingHandler.js +164 -0
  120. package/dist/core/handlers/FileProcessingHandler.js.map +1 -0
  121. package/dist/core/handlers/OutputHandler.d.ts +27 -0
  122. package/dist/core/handlers/OutputHandler.js +127 -0
  123. package/dist/core/handlers/OutputHandler.js.map +1 -0
  124. package/dist/core/handlers/ReviewExecutor.d.ts +32 -0
  125. package/dist/core/handlers/ReviewExecutor.js +111 -0
  126. package/dist/core/handlers/ReviewExecutor.js.map +1 -0
  127. package/dist/core/reviewOrchestrator.d.ts +24 -0
  128. package/dist/core/reviewOrchestrator.js +354 -0
  129. package/dist/core/reviewOrchestrator.js.map +1 -0
  130. package/dist/core/utils/ModelInfoUtils.d.ts +16 -0
  131. package/dist/core/utils/ModelInfoUtils.js +54 -0
  132. package/dist/core/utils/ModelInfoUtils.js.map +1 -0
  133. package/{src/formatters/outputFormatter.ts → dist/formatters/outputFormatter.d.ts} +2 -33
  134. package/dist/formatters/outputFormatter.js +65 -0
  135. package/dist/formatters/outputFormatter.js.map +1 -0
  136. package/dist/formatters/utils/IssueFormatters.d.ts +20 -0
  137. package/dist/formatters/utils/IssueFormatters.js +67 -0
  138. package/dist/formatters/utils/IssueFormatters.js.map +1 -0
  139. package/dist/formatters/utils/JsonFormatter.d.ts +13 -0
  140. package/dist/formatters/utils/JsonFormatter.js +57 -0
  141. package/dist/formatters/utils/JsonFormatter.js.map +1 -0
  142. package/dist/formatters/utils/MarkdownFormatters.d.ts +51 -0
  143. package/dist/formatters/utils/MarkdownFormatters.js +456 -0
  144. package/dist/formatters/utils/MarkdownFormatters.js.map +1 -0
  145. package/dist/formatters/utils/MetadataFormatter.d.ts +65 -0
  146. package/dist/formatters/utils/MetadataFormatter.js +219 -0
  147. package/dist/formatters/utils/MetadataFormatter.js.map +1 -0
  148. package/dist/formatters/utils/ModelInfoExtractor.d.ts +33 -0
  149. package/dist/formatters/utils/ModelInfoExtractor.js +111 -0
  150. package/dist/formatters/utils/ModelInfoExtractor.js.map +1 -0
  151. package/dist/index.d.ts +1 -0
  152. package/dist/index.js.map +1 -0
  153. package/dist/plugins/PluginInterface.d.ts +44 -0
  154. package/dist/plugins/PluginInterface.js +9 -0
  155. package/dist/plugins/PluginInterface.js.map +1 -0
  156. package/dist/plugins/PluginManager.d.ts +51 -0
  157. package/dist/plugins/PluginManager.js +151 -0
  158. package/dist/plugins/PluginManager.js.map +1 -0
  159. package/dist/prompts/PromptManager.d.ts +30 -0
  160. package/dist/prompts/PromptManager.js +62 -0
  161. package/dist/prompts/PromptManager.js.map +1 -0
  162. package/dist/prompts/cache/PromptCache.d.ts +32 -0
  163. package/dist/prompts/cache/PromptCache.js +48 -0
  164. package/dist/prompts/cache/PromptCache.js.map +1 -0
  165. package/dist/runtime/auth/service.d.ts +2 -0
  166. package/dist/runtime/auth/service.js +41 -0
  167. package/dist/runtime/auth/service.js.map +1 -0
  168. package/dist/runtime/auth/session.d.ts +5 -0
  169. package/dist/runtime/auth/session.js +87 -0
  170. package/dist/runtime/auth/session.js.map +1 -0
  171. package/dist/runtime/auth/types.d.ts +9 -0
  172. package/dist/runtime/auth/types.js +3 -0
  173. package/dist/runtime/auth/types.js.map +1 -0
  174. package/dist/runtime/cliEntry.d.ts +1 -0
  175. package/dist/runtime/cliEntry.js +276 -0
  176. package/dist/runtime/cliEntry.js.map +1 -0
  177. package/dist/runtime/debug/logManager.d.ts +5 -0
  178. package/dist/runtime/debug/logManager.js +31 -0
  179. package/dist/runtime/debug/logManager.js.map +1 -0
  180. package/dist/runtime/errors.d.ts +5 -0
  181. package/dist/runtime/errors.js +15 -0
  182. package/dist/runtime/errors.js.map +1 -0
  183. package/dist/runtime/fileCollector.d.ts +14 -0
  184. package/dist/runtime/fileCollector.js +381 -0
  185. package/dist/runtime/fileCollector.js.map +1 -0
  186. package/dist/runtime/manifest.d.ts +1 -0
  187. package/dist/runtime/manifest.js +65 -0
  188. package/dist/runtime/manifest.js.map +1 -0
  189. package/dist/runtime/openrouterProxy.d.ts +4 -0
  190. package/dist/runtime/openrouterProxy.js +43 -0
  191. package/dist/runtime/openrouterProxy.js.map +1 -0
  192. package/dist/runtime/preprod/batchStreamer.d.ts +54 -0
  193. package/dist/runtime/preprod/batchStreamer.js +159 -0
  194. package/dist/runtime/preprod/batchStreamer.js.map +1 -0
  195. package/dist/runtime/preprod/crEdgeServiceClient.d.ts +30 -0
  196. package/dist/runtime/preprod/crEdgeServiceClient.js +133 -0
  197. package/dist/runtime/preprod/crEdgeServiceClient.js.map +1 -0
  198. package/dist/runtime/preprod/progressTracker.d.ts +21 -0
  199. package/dist/runtime/preprod/progressTracker.js +80 -0
  200. package/dist/runtime/preprod/progressTracker.js.map +1 -0
  201. package/dist/runtime/preprod/webCheck.d.ts +1 -0
  202. package/dist/runtime/preprod/webCheck.js +102 -0
  203. package/dist/runtime/preprod/webCheck.js.map +1 -0
  204. package/dist/runtime/proxyConfig.d.ts +6 -0
  205. package/dist/runtime/proxyConfig.js +86 -0
  206. package/dist/runtime/proxyConfig.js.map +1 -0
  207. package/dist/runtime/proxyEnvironment.d.ts +3 -0
  208. package/dist/runtime/proxyEnvironment.js +63 -0
  209. package/dist/runtime/proxyEnvironment.js.map +1 -0
  210. package/dist/runtime/reportMerge.d.ts +30 -0
  211. package/dist/runtime/reportMerge.js +70 -0
  212. package/dist/runtime/reportMerge.js.map +1 -0
  213. package/dist/runtime/reporting/markdownReportBuilder.d.ts +17 -0
  214. package/dist/runtime/reporting/markdownReportBuilder.js +154 -0
  215. package/dist/runtime/reporting/markdownReportBuilder.js.map +1 -0
  216. package/dist/runtime/reporting/reportDataCollector.d.ts +31 -0
  217. package/dist/runtime/reporting/reportDataCollector.js +170 -0
  218. package/dist/runtime/reporting/reportDataCollector.js.map +1 -0
  219. package/dist/runtime/reporting/summaryGenerator.d.ts +10 -0
  220. package/dist/runtime/reporting/summaryGenerator.js +67 -0
  221. package/dist/runtime/reporting/summaryGenerator.js.map +1 -0
  222. package/dist/runtime/reviewPipeline.d.ts +61 -0
  223. package/dist/runtime/reviewPipeline.js +231 -0
  224. package/dist/runtime/reviewPipeline.js.map +1 -0
  225. package/dist/runtime/runAiCodeReview.d.ts +36 -0
  226. package/dist/runtime/runAiCodeReview.js +409 -0
  227. package/dist/runtime/runAiCodeReview.js.map +1 -0
  228. package/dist/runtime/runtimeConfig.d.ts +4 -0
  229. package/dist/runtime/runtimeConfig.js +7 -0
  230. package/dist/runtime/runtimeConfig.js.map +1 -0
  231. package/dist/runtime/ui/Layout.d.ts +11 -0
  232. package/dist/runtime/ui/Layout.js +47 -0
  233. package/dist/runtime/ui/Layout.js.map +1 -0
  234. package/dist/runtime/ui/RuntimeApp.d.ts +6 -0
  235. package/dist/runtime/ui/RuntimeApp.js +275 -0
  236. package/dist/runtime/ui/RuntimeApp.js.map +1 -0
  237. package/dist/runtime/ui/inkModules.d.ts +10 -0
  238. package/dist/runtime/ui/inkModules.js +63 -0
  239. package/dist/runtime/ui/inkModules.js.map +1 -0
  240. package/dist/runtime/ui/screens/AuthScreen.d.ts +6 -0
  241. package/dist/runtime/ui/screens/AuthScreen.js +67 -0
  242. package/dist/runtime/ui/screens/AuthScreen.js.map +1 -0
  243. package/dist/runtime/ui/screens/ModeSelection.d.ts +11 -0
  244. package/dist/runtime/ui/screens/ModeSelection.js +169 -0
  245. package/dist/runtime/ui/screens/ModeSelection.js.map +1 -0
  246. package/dist/runtime/ui/screens/ProgressScreen.d.ts +21 -0
  247. package/dist/runtime/ui/screens/ProgressScreen.js +86 -0
  248. package/dist/runtime/ui/screens/ProgressScreen.js.map +1 -0
  249. package/dist/runtime/ui/screens/ResultsScreen.d.ts +7 -0
  250. package/dist/runtime/ui/screens/ResultsScreen.js +34 -0
  251. package/dist/runtime/ui/screens/ResultsScreen.js.map +1 -0
  252. package/dist/strategies/ArchitecturalReviewStrategy.d.ts +29 -0
  253. package/dist/strategies/ArchitecturalReviewStrategy.js +42 -0
  254. package/dist/strategies/ArchitecturalReviewStrategy.js.map +1 -0
  255. package/dist/strategies/CodingTestReviewStrategy.d.ts +194 -0
  256. package/dist/strategies/CodingTestReviewStrategy.js +681 -0
  257. package/dist/strategies/CodingTestReviewStrategy.js.map +1 -0
  258. package/dist/strategies/ConsolidatedReviewStrategy.d.ts +25 -0
  259. package/dist/strategies/ConsolidatedReviewStrategy.js +45 -0
  260. package/dist/strategies/ConsolidatedReviewStrategy.js.map +1 -0
  261. package/dist/strategies/ExtractPatternsReviewStrategy.d.ts +30 -0
  262. package/dist/strategies/ExtractPatternsReviewStrategy.js +51 -0
  263. package/dist/strategies/ExtractPatternsReviewStrategy.js.map +1 -0
  264. package/dist/strategies/MultiPassReviewStrategy.d.ts +86 -0
  265. package/dist/strategies/MultiPassReviewStrategy.js +590 -0
  266. package/dist/strategies/MultiPassReviewStrategy.js.map +1 -0
  267. package/dist/strategies/ReviewStrategy.d.ts +45 -0
  268. package/dist/strategies/ReviewStrategy.js +24 -0
  269. package/dist/strategies/ReviewStrategy.js.map +1 -0
  270. package/dist/strategies/StrategyFactory.d.ts +19 -0
  271. package/dist/strategies/StrategyFactory.js +72 -0
  272. package/dist/strategies/StrategyFactory.js.map +1 -0
  273. package/{src/strategies/index.ts → dist/strategies/index.d.ts} +0 -1
  274. package/dist/strategies/index.js +30 -0
  275. package/dist/strategies/index.js.map +1 -0
  276. package/dist/tokenizers/baseTokenizer.d.ts +25 -0
  277. package/dist/tokenizers/baseTokenizer.js +48 -0
  278. package/dist/tokenizers/baseTokenizer.js.map +1 -0
  279. package/dist/tokenizers/gptTokenizer.d.ts +7 -0
  280. package/dist/tokenizers/gptTokenizer.js +28 -0
  281. package/dist/tokenizers/gptTokenizer.js.map +1 -0
  282. package/{src/tokenizers/index.ts → dist/tokenizers/index.d.ts} +0 -1
  283. package/dist/tokenizers/index.js +24 -0
  284. package/dist/tokenizers/index.js.map +1 -0
  285. package/dist/types/apiResponses.d.ts +39 -0
  286. package/dist/types/apiResponses.js +9 -0
  287. package/dist/types/apiResponses.js.map +1 -0
  288. package/dist/types/cli.d.ts +22 -0
  289. package/dist/types/cli.js +3 -0
  290. package/dist/types/cli.js.map +1 -0
  291. package/{src/types/common.ts → dist/types/common.d.ts} +2 -19
  292. package/dist/types/common.js +14 -0
  293. package/dist/types/common.js.map +1 -0
  294. package/dist/types/configuration.d.ts +682 -0
  295. package/dist/types/configuration.js +65 -0
  296. package/dist/types/configuration.js.map +1 -0
  297. package/dist/types/review.d.ts +318 -0
  298. package/dist/types/review.js +8 -0
  299. package/dist/types/review.js.map +1 -0
  300. package/dist/types/reviewSchema.d.ts +543 -0
  301. package/{src/types/reviewSchema.ts → dist/types/reviewSchema.js} +44 -104
  302. package/dist/types/reviewSchema.js.map +1 -0
  303. package/dist/types/structuredReview.d.ts +119 -0
  304. package/dist/types/structuredReview.js +6 -0
  305. package/dist/types/structuredReview.js.map +1 -0
  306. package/dist/types/tokenAnalysis.d.ts +44 -0
  307. package/dist/types/tokenAnalysis.js +4 -0
  308. package/dist/types/tokenAnalysis.js.map +1 -0
  309. package/dist/utils/FileReader.d.ts +33 -0
  310. package/dist/utils/FileReader.js +88 -0
  311. package/dist/utils/FileReader.js.map +1 -0
  312. package/dist/utils/FileWriter.d.ts +26 -0
  313. package/dist/utils/FileWriter.js +76 -0
  314. package/dist/utils/FileWriter.js.map +1 -0
  315. package/dist/utils/PathGenerator.d.ts +30 -0
  316. package/dist/utils/PathGenerator.js +82 -0
  317. package/dist/utils/PathGenerator.js.map +1 -0
  318. package/dist/utils/api/apiUtils.d.ts +3 -0
  319. package/dist/utils/api/apiUtils.js +20 -0
  320. package/dist/utils/api/apiUtils.js.map +1 -0
  321. package/dist/utils/api/index.js +18 -0
  322. package/dist/utils/api/index.js.map +1 -0
  323. package/dist/utils/apiErrorHandler.d.ts +130 -0
  324. package/dist/utils/apiErrorHandler.js +256 -0
  325. package/dist/utils/apiErrorHandler.js.map +1 -0
  326. package/dist/utils/ciDataCollector.d.ts +51 -0
  327. package/dist/utils/ciDataCollector.js +197 -0
  328. package/dist/utils/ciDataCollector.js.map +1 -0
  329. package/dist/utils/codingTestConfigLoader.d.ts +66 -0
  330. package/dist/utils/codingTestConfigLoader.js +420 -0
  331. package/dist/utils/codingTestConfigLoader.js.map +1 -0
  332. package/dist/utils/dependencies/aiDependencyAnalyzer.d.ts +30 -0
  333. package/dist/utils/dependencies/aiDependencyAnalyzer.js +343 -0
  334. package/dist/utils/dependencies/aiDependencyAnalyzer.js.map +1 -0
  335. package/dist/utils/detection/frameworkDetector.d.ts +43 -0
  336. package/dist/utils/detection/frameworkDetector.js +850 -0
  337. package/dist/utils/detection/frameworkDetector.js.map +1 -0
  338. package/{src/utils/detection/index.ts → dist/utils/detection/index.d.ts} +0 -1
  339. package/dist/utils/detection/index.js +28 -0
  340. package/dist/utils/detection/index.js.map +1 -0
  341. package/dist/utils/detection/projectTypeDetector.d.ts +27 -0
  342. package/dist/utils/detection/projectTypeDetector.js +469 -0
  343. package/dist/utils/detection/projectTypeDetector.js.map +1 -0
  344. package/dist/utils/diagramGenerator.d.ts +49 -0
  345. package/dist/utils/diagramGenerator.js +218 -0
  346. package/dist/utils/diagramGenerator.js.map +1 -0
  347. package/dist/utils/errorLogger.d.ts +24 -0
  348. package/dist/utils/errorLogger.js +59 -0
  349. package/dist/utils/errorLogger.js.map +1 -0
  350. package/dist/utils/estimationUtils.d.ts +139 -0
  351. package/dist/utils/estimationUtils.js +329 -0
  352. package/dist/utils/estimationUtils.js.map +1 -0
  353. package/dist/utils/fileFilters.d.ts +72 -0
  354. package/dist/utils/fileFilters.js +338 -0
  355. package/dist/utils/fileFilters.js.map +1 -0
  356. package/dist/utils/fileSystem.d.ts +22 -0
  357. package/dist/utils/fileSystem.js +45 -0
  358. package/dist/utils/fileSystem.js.map +1 -0
  359. package/{src/utils/index.ts → dist/utils/index.d.ts} +0 -14
  360. package/dist/utils/index.js +52 -0
  361. package/dist/utils/index.js.map +1 -0
  362. package/dist/utils/logger.d.ts +77 -0
  363. package/dist/utils/logger.js +271 -0
  364. package/dist/utils/logger.js.map +1 -0
  365. package/dist/utils/pathValidator.d.ts +40 -0
  366. package/dist/utils/pathValidator.js +98 -0
  367. package/dist/utils/pathValidator.js.map +1 -0
  368. package/{src/utils/priorityFilter.ts → dist/utils/priorityFilter.d.ts} +1 -26
  369. package/dist/utils/priorityFilter.js +54 -0
  370. package/dist/utils/priorityFilter.js.map +1 -0
  371. package/dist/utils/projectDocs.d.ts +47 -0
  372. package/dist/utils/projectDocs.js +158 -0
  373. package/dist/utils/projectDocs.js.map +1 -0
  374. package/dist/utils/promptPaths.d.ts +6 -0
  375. package/dist/utils/promptPaths.js +33 -0
  376. package/dist/utils/promptPaths.js.map +1 -0
  377. package/dist/utils/promptTemplateManager.d.ts +34 -0
  378. package/dist/utils/promptTemplateManager.js +141 -0
  379. package/dist/utils/promptTemplateManager.js.map +1 -0
  380. package/dist/utils/review/consolidateReview.d.ts +15 -0
  381. package/dist/utils/review/consolidateReview.js +481 -0
  382. package/dist/utils/review/consolidateReview.js.map +1 -0
  383. package/dist/utils/review/fixDisplay.d.ts +20 -0
  384. package/dist/utils/review/fixDisplay.js +84 -0
  385. package/dist/utils/review/fixDisplay.js.map +1 -0
  386. package/dist/utils/review/fixImplementation.d.ts +28 -0
  387. package/dist/utils/review/fixImplementation.js +60 -0
  388. package/dist/utils/review/fixImplementation.js.map +1 -0
  389. package/dist/utils/review/index.d.ts +13 -0
  390. package/dist/utils/review/index.js +50 -0
  391. package/dist/utils/review/index.js.map +1 -0
  392. package/dist/utils/review/interactiveProcessing.d.ts +25 -0
  393. package/dist/utils/review/interactiveProcessing.js +251 -0
  394. package/dist/utils/review/interactiveProcessing.js.map +1 -0
  395. package/dist/utils/review/progressTracker.d.ts +106 -0
  396. package/dist/utils/review/progressTracker.js +227 -0
  397. package/dist/utils/review/progressTracker.js.map +1 -0
  398. package/dist/utils/review/reviewExtraction.d.ts +31 -0
  399. package/dist/utils/review/reviewExtraction.js +324 -0
  400. package/dist/utils/review/reviewExtraction.js.map +1 -0
  401. package/dist/utils/review/types.d.ts +45 -0
  402. package/dist/utils/review/types.js +18 -0
  403. package/dist/utils/review/types.js.map +1 -0
  404. package/{src/utils/reviewActionHandler.ts → dist/utils/reviewActionHandler.d.ts} +0 -2
  405. package/dist/utils/reviewActionHandler.js +34 -0
  406. package/dist/utils/reviewActionHandler.js.map +1 -0
  407. package/dist/utils/reviewParser.d.ts +34 -0
  408. package/dist/utils/reviewParser.js +218 -0
  409. package/dist/utils/reviewParser.js.map +1 -0
  410. package/dist/utils/sanitizer.d.ts +82 -0
  411. package/dist/utils/sanitizer.js +239 -0
  412. package/dist/utils/sanitizer.js.map +1 -0
  413. package/dist/utils/smartFileSelector.d.ts +50 -0
  414. package/dist/utils/smartFileSelector.js +261 -0
  415. package/dist/utils/smartFileSelector.js.map +1 -0
  416. package/dist/utils/templateLoader.d.ts +44 -0
  417. package/dist/utils/templateLoader.js +431 -0
  418. package/dist/utils/templateLoader.js.map +1 -0
  419. package/dist/utils/treeGenerator.d.ts +12 -0
  420. package/dist/utils/treeGenerator.js +133 -0
  421. package/dist/utils/treeGenerator.js.map +1 -0
  422. package/package.json +5 -1
  423. package/.cr-aia.yml +0 -23
  424. package/.crignore +0 -0
  425. package/docs/opt-in-full-context.md +0 -27
  426. package/reports/cr-cr-aia-17-11-2025-20-13.md +0 -354
  427. package/src/analysis/FindingsExtractor.ts +0 -431
  428. package/src/analysis/ai-detection/analyzers/BaseAnalyzer.ts +0 -267
  429. package/src/analysis/ai-detection/analyzers/DocumentationAnalyzer.ts +0 -622
  430. package/src/analysis/ai-detection/analyzers/GitHistoryAnalyzer.ts +0 -430
  431. package/src/analysis/ai-detection/core/AIDetectionEngine.ts +0 -467
  432. package/src/analysis/ai-detection/types/DetectionTypes.ts +0 -406
  433. package/src/analysis/ai-detection/utils/SubmissionConverter.ts +0 -390
  434. package/src/analysis/context/ReviewContext.ts +0 -378
  435. package/src/analysis/tokens/TokenAnalyzer.ts +0 -747
  436. package/src/clients/base/abstractClient.ts +0 -190
  437. package/src/clients/base/httpClient.ts +0 -160
  438. package/src/clients/base/modelDetection.ts +0 -107
  439. package/src/clients/base/responseProcessor.ts +0 -586
  440. package/src/clients/factory/clientFactory.ts +0 -55
  441. package/src/clients/implementations/openRouterClient.ts +0 -413
  442. package/src/clients/openRouterClient.ts +0 -870
  443. package/src/clients/utils/directoryStructure.ts +0 -52
  444. package/src/clients/utils/languageDetection.ts +0 -44
  445. package/src/clients/utils/promptFormatter.ts +0 -182
  446. package/src/clients/utils/tokenCounter.ts +0 -297
  447. package/src/core/ApiClientSelector.ts +0 -37
  448. package/src/core/ConfigurationService.ts +0 -591
  449. package/src/core/ConsolidationService.ts +0 -423
  450. package/src/core/InteractiveDisplayManager.ts +0 -81
  451. package/src/core/OutputManager.ts +0 -275
  452. package/src/core/ReviewGenerator.ts +0 -140
  453. package/src/core/fileDiscovery.ts +0 -237
  454. package/src/core/handlers/EstimationHandler.ts +0 -104
  455. package/src/core/handlers/FileProcessingHandler.ts +0 -210
  456. package/src/core/handlers/OutputHandler.ts +0 -125
  457. package/src/core/handlers/ReviewExecutor.ts +0 -104
  458. package/src/core/reviewOrchestrator.ts +0 -333
  459. package/src/core/utils/ModelInfoUtils.ts +0 -56
  460. package/src/formatters/utils/IssueFormatters.ts +0 -83
  461. package/src/formatters/utils/JsonFormatter.ts +0 -77
  462. package/src/formatters/utils/MarkdownFormatters.ts +0 -609
  463. package/src/formatters/utils/MetadataFormatter.ts +0 -269
  464. package/src/formatters/utils/ModelInfoExtractor.ts +0 -115
  465. package/src/index.ts +0 -25
  466. package/src/plugins/PluginInterface.ts +0 -50
  467. package/src/plugins/PluginManager.ts +0 -126
  468. package/src/prompts/PromptManager.ts +0 -69
  469. package/src/prompts/cache/PromptCache.ts +0 -50
  470. package/src/prompts/promptText/common/variables/css-frameworks.json +0 -33
  471. package/src/prompts/promptText/common/variables/framework-versions.json +0 -45
  472. package/src/prompts/promptText/frameworks/react/comprehensive.hbs +0 -19
  473. package/src/prompts/promptText/languages/css/comprehensive.hbs +0 -18
  474. package/src/prompts/promptText/languages/generic/comprehensive.hbs +0 -20
  475. package/src/prompts/promptText/languages/html/comprehensive.hbs +0 -18
  476. package/src/prompts/promptText/languages/javascript/comprehensive.hbs +0 -18
  477. package/src/prompts/promptText/languages/python/comprehensive.hbs +0 -18
  478. package/src/prompts/promptText/languages/typescript/comprehensive.hbs +0 -18
  479. package/src/runtime/auth/service.ts +0 -58
  480. package/src/runtime/auth/session.ts +0 -103
  481. package/src/runtime/auth/types.ts +0 -11
  482. package/src/runtime/cliEntry.ts +0 -214
  483. package/src/runtime/debug/logManager.ts +0 -37
  484. package/src/runtime/errors.ts +0 -13
  485. package/src/runtime/fileCollector.ts +0 -495
  486. package/src/runtime/manifest.ts +0 -64
  487. package/src/runtime/openrouterProxy.ts +0 -45
  488. package/src/runtime/preprod/webCheck.ts +0 -104
  489. package/src/runtime/proxyConfig.ts +0 -94
  490. package/src/runtime/proxyEnvironment.ts +0 -71
  491. package/src/runtime/reportMerge.ts +0 -102
  492. package/src/runtime/reporting/markdownReportBuilder.ts +0 -138
  493. package/src/runtime/reporting/reportDataCollector.ts +0 -234
  494. package/src/runtime/reporting/summaryGenerator.ts +0 -86
  495. package/src/runtime/reviewPipeline.ts +0 -200
  496. package/src/runtime/runAiCodeReview.ts +0 -308
  497. package/src/runtime/runtimeConfig.ts +0 -5
  498. package/src/runtime/ui/Layout.tsx +0 -57
  499. package/src/runtime/ui/RuntimeApp.tsx +0 -262
  500. package/src/runtime/ui/inkModules.ts +0 -73
  501. package/src/runtime/ui/screens/AuthScreen.tsx +0 -128
  502. package/src/runtime/ui/screens/ModeSelection.tsx +0 -185
  503. package/src/runtime/ui/screens/ProgressScreen.tsx +0 -110
  504. package/src/runtime/ui/screens/ResultsScreen.tsx +0 -103
  505. package/src/strategies/ArchitecturalReviewStrategy.ts +0 -54
  506. package/src/strategies/CodingTestReviewStrategy.ts +0 -920
  507. package/src/strategies/ConsolidatedReviewStrategy.ts +0 -59
  508. package/src/strategies/ExtractPatternsReviewStrategy.ts +0 -64
  509. package/src/strategies/MultiPassReviewStrategy.ts +0 -785
  510. package/src/strategies/ReviewStrategy.ts +0 -64
  511. package/src/strategies/StrategyFactory.ts +0 -79
  512. package/src/tokenizers/baseTokenizer.ts +0 -61
  513. package/src/tokenizers/gptTokenizer.ts +0 -27
  514. package/src/types/apiResponses.ts +0 -40
  515. package/src/types/cli.ts +0 -24
  516. package/src/types/configuration.ts +0 -201
  517. package/src/types/handlebars.d.ts +0 -5
  518. package/src/types/patch.d.ts +0 -25
  519. package/src/types/review.ts +0 -312
  520. package/src/types/reviewContext.d.ts +0 -65
  521. package/src/types/structuredReview.ts +0 -167
  522. package/src/types/tokenAnalysis.ts +0 -56
  523. package/src/utils/FileReader.ts +0 -93
  524. package/src/utils/FileWriter.ts +0 -76
  525. package/src/utils/PathGenerator.ts +0 -97
  526. package/src/utils/api/apiUtils.ts +0 -14
  527. package/src/utils/apiErrorHandler.ts +0 -287
  528. package/src/utils/ciDataCollector.ts +0 -252
  529. package/src/utils/codingTestConfigLoader.ts +0 -466
  530. package/src/utils/dependencies/aiDependencyAnalyzer.ts +0 -454
  531. package/src/utils/detection/frameworkDetector.ts +0 -879
  532. package/src/utils/detection/projectTypeDetector.ts +0 -518
  533. package/src/utils/diagramGenerator.ts +0 -206
  534. package/src/utils/errorLogger.ts +0 -60
  535. package/src/utils/estimationUtils.ts +0 -407
  536. package/src/utils/fileFilters.ts +0 -373
  537. package/src/utils/fileSystem.ts +0 -57
  538. package/src/utils/logger.ts +0 -290
  539. package/src/utils/pathValidator.ts +0 -98
  540. package/src/utils/projectDocs.ts +0 -189
  541. package/src/utils/promptPaths.ts +0 -29
  542. package/src/utils/promptTemplateManager.ts +0 -157
  543. package/src/utils/review/consolidateReview.ts +0 -553
  544. package/src/utils/review/fixDisplay.ts +0 -100
  545. package/src/utils/review/fixImplementation.ts +0 -61
  546. package/src/utils/review/index.ts +0 -36
  547. package/src/utils/review/interactiveProcessing.ts +0 -294
  548. package/src/utils/review/progressTracker.ts +0 -296
  549. package/src/utils/review/reviewExtraction.ts +0 -382
  550. package/src/utils/review/types.ts +0 -46
  551. package/src/utils/reviewParser.ts +0 -253
  552. package/src/utils/sanitizer.ts +0 -238
  553. package/src/utils/smartFileSelector.ts +0 -255
  554. package/src/utils/templateLoader.ts +0 -514
  555. package/src/utils/treeGenerator.ts +0 -153
  556. package/tsconfig.build.json +0 -14
  557. package/tsconfig.json +0 -59
  558. /package/{src/utils/api/index.ts → dist/utils/api/index.d.ts} +0 -0
@@ -1,514 +0,0 @@
1
- /**
2
- * Template Loader Utility
3
- *
4
- * This utility loads and compiles Handlebars templates from the promptText directory.
5
- * It supports variable substitution, partials, and conditional logic.
6
- */
7
-
8
- import * as fs from 'node:fs';
9
- import * as path from 'node:path';
10
- import * as Handlebars from 'handlebars';
11
- import { configurationService } from '../core/ConfigurationService';
12
- import logger from './logger';
13
- import { resolvePromptTemplatesDir } from './promptPaths';
14
-
15
- // Get the templates directory from configuration or use a fallback
16
- const getTemplatesDir = (): string => {
17
- try {
18
- // Use the configured path from ConfigurationService
19
- const configuredPath = configurationService.getPathsConfig().promptsDir;
20
- if (configuredPath && fs.existsSync(configuredPath)) {
21
- logger.debug(`Using configured templates directory: ${configuredPath}`);
22
- return configuredPath;
23
- }
24
-
25
- // Fallback to default
26
- const defaultPath = resolvePromptTemplatesDir();
27
- logger.debug(`Using default templates directory: ${defaultPath}`);
28
- return defaultPath;
29
- } catch (error) {
30
- // If there's any error with the configuration, use default
31
- logger.warn(
32
- `Error getting templates directory from config: ${error instanceof Error ? error.message : String(error)}`,
33
- );
34
- const fallbackPath = resolvePromptTemplatesDir();
35
- logger.debug(`Using fallback templates directory: ${fallbackPath}`);
36
- return fallbackPath;
37
- }
38
- };
39
-
40
- // Interface for framework version information
41
- interface FrameworkVersion {
42
- version: string;
43
- releaseDate: string;
44
- supportedUntil: string;
45
- features: string[];
46
- [key: string]: unknown;
47
- }
48
-
49
- // Interface for framework information
50
- interface Framework {
51
- latest: FrameworkVersion;
52
- previous: FrameworkVersion;
53
- [key: string]: unknown;
54
- }
55
-
56
- // Interface for framework data
57
- interface FrameworkData {
58
- frameworks: {
59
- [key: string]: Framework;
60
- };
61
- }
62
-
63
- // Interface for CSS framework data
64
- interface CssFrameworkData {
65
- cssFrameworks: {
66
- [key: string]: {
67
- name: string;
68
- version: string;
69
- releaseDate: string;
70
- features: string[];
71
- integrations: {
72
- [key: string]: string;
73
- };
74
- };
75
- };
76
- }
77
-
78
- /**
79
- * Template cache to avoid re-reading and re-compiling templates
80
- */
81
- const templateCache: Record<string, HandlebarsTemplateDelegate> = {};
82
-
83
- /**
84
- * Register helpers and partials for Handlebars
85
- */
86
- function initializeHandlebars(): void {
87
- // Register comparison helper
88
- Handlebars.registerHelper(
89
- 'eq',
90
- function (this: unknown, arg1: unknown, arg2: unknown, options: Handlebars.HelperOptions) {
91
- return arg1 === arg2 ? options.fn(this) : options.inverse(this);
92
- },
93
- );
94
-
95
- // Register join helper for arrays
96
- Handlebars.registerHelper('join', (array: unknown, separator: string) => {
97
- if (Array.isArray(array)) {
98
- return array.join(separator);
99
- }
100
- return '';
101
- });
102
-
103
- // Register partials by scanning the common directory
104
- const partialsDir = path.join(getTemplatesDir(), 'common');
105
- registerPartials(partialsDir, '');
106
- }
107
-
108
- /**
109
- * Recursively register partials from a directory
110
- *
111
- * @param dirPath Directory path to scan for partials
112
- * @param prefix Prefix for partial names (based on directory hierarchy)
113
- */
114
- function registerPartials(dirPath: string, prefix: string): void {
115
- try {
116
- // Check if directory exists
117
- if (!fs.existsSync(dirPath)) {
118
- logger.warn(`Partials directory not found: ${dirPath}`);
119
- return;
120
- }
121
-
122
- // Read directory entries
123
- const entries = fs.readdirSync(dirPath, { withFileTypes: true });
124
-
125
- for (const entry of entries) {
126
- const fullPath = path.join(dirPath, entry.name);
127
-
128
- if (entry.isDirectory()) {
129
- // Recurse into subdirectories
130
- registerPartials(fullPath, `${prefix}${entry.name}/`);
131
- } else if (entry.name.endsWith('.hbs')) {
132
- try {
133
- // Register .hbs files as partials
134
- const partialName = `${prefix}${entry.name.replace('.hbs', '')}`;
135
- const partialContent = fs.readFileSync(fullPath, 'utf-8');
136
- Handlebars.registerPartial(`common/${partialName}`, partialContent);
137
- logger.debug(`Registered partial: common/${partialName}`);
138
- } catch (partialError) {
139
- // Handle errors for individual partial files
140
- logger.error(
141
- `Error registering partial ${fullPath}: ${
142
- partialError instanceof Error ? partialError.message : String(partialError)
143
- }`,
144
- );
145
- // Continue with other partials even if one fails
146
- }
147
- }
148
- }
149
- } catch (error) {
150
- // Handle directory reading errors
151
- logger.error(
152
- `Error scanning partials directory ${dirPath}: ${
153
- error instanceof Error ? error.message : String(error)
154
- }`,
155
- );
156
- // Return so calling code knows registration may be incomplete
157
- }
158
- }
159
-
160
- /**
161
- * Load template variables from JSON files
162
- *
163
- * @returns Combined variables object for template rendering
164
- */
165
- function loadTemplateVariables(): Record<string, unknown> {
166
- const variables: Record<string, unknown> = {};
167
-
168
- try {
169
- // Check if variables directory exists
170
- const variablesDir = path.join(getTemplatesDir(), 'common', 'variables');
171
- if (!fs.existsSync(variablesDir)) {
172
- logger.warn(`Variables directory not found: ${variablesDir}`);
173
- return variables;
174
- }
175
-
176
- // Load framework versions data
177
- const frameworksPath = path.join(variablesDir, 'framework-versions.json');
178
- if (fs.existsSync(frameworksPath)) {
179
- try {
180
- const fileContents = fs.readFileSync(frameworksPath, 'utf-8');
181
- const frameworkData = JSON.parse(fileContents) as FrameworkData;
182
- variables.frameworks = frameworkData.frameworks;
183
- logger.debug('Successfully loaded framework versions data');
184
- } catch (readError) {
185
- logger.error(
186
- `Error reading or parsing framework versions data: ${
187
- readError instanceof Error ? readError.message : String(readError)
188
- }`,
189
- );
190
- // Provide empty frameworks object instead of leaving it undefined
191
- variables.frameworks = {};
192
- }
193
- } else {
194
- logger.debug(`Framework versions file not found: ${frameworksPath}`);
195
- variables.frameworks = {};
196
- }
197
-
198
- // Load CSS frameworks data
199
- const cssFrameworksPath = path.join(variablesDir, 'css-frameworks.json');
200
- if (fs.existsSync(cssFrameworksPath)) {
201
- try {
202
- const fileContents = fs.readFileSync(cssFrameworksPath, 'utf-8');
203
- const cssFrameworkData = JSON.parse(fileContents) as CssFrameworkData;
204
- variables.cssFrameworks = cssFrameworkData.cssFrameworks;
205
- logger.debug('Successfully loaded CSS frameworks data');
206
- } catch (readError) {
207
- logger.error(
208
- `Error reading or parsing CSS frameworks data: ${
209
- readError instanceof Error ? readError.message : String(readError)
210
- }`,
211
- );
212
- // Provide empty cssFrameworks object instead of leaving it undefined
213
- variables.cssFrameworks = {};
214
- }
215
- } else {
216
- logger.debug(`CSS frameworks file not found: ${cssFrameworksPath}`);
217
- variables.cssFrameworks = {};
218
- }
219
-
220
- // Scan the variables directory for other JSON files and load them
221
- try {
222
- const entries = fs.readdirSync(variablesDir);
223
- const otherJsonFiles = entries.filter(
224
- (entry) =>
225
- entry.endsWith('.json') &&
226
- entry !== 'framework-versions.json' &&
227
- entry !== 'css-frameworks.json',
228
- );
229
-
230
- for (const jsonFile of otherJsonFiles) {
231
- try {
232
- const filePath = path.join(variablesDir, jsonFile);
233
- const fileContents = fs.readFileSync(filePath, 'utf-8');
234
- const data = JSON.parse(fileContents);
235
-
236
- // Use the filename without extension as the variable key
237
- const key = jsonFile.replace('.json', '');
238
- variables[key] = data;
239
- logger.debug(`Loaded additional variable file: ${jsonFile}`);
240
- } catch (fileError) {
241
- logger.error(
242
- `Error reading or parsing ${jsonFile}: ${
243
- fileError instanceof Error ? fileError.message : String(fileError)
244
- }`,
245
- );
246
- }
247
- }
248
- } catch (scanError) {
249
- logger.error(
250
- `Error scanning variables directory for additional JSON files: ${
251
- scanError instanceof Error ? scanError.message : String(scanError)
252
- }`,
253
- );
254
- }
255
- } catch (error) {
256
- // Catch any unexpected errors
257
- logger.error(
258
- `Unexpected error loading template variables: ${
259
- error instanceof Error ? error.message : String(error)
260
- }`,
261
- );
262
- }
263
-
264
- return variables;
265
- }
266
-
267
- /**
268
- * Load and compile a template from the given path
269
- *
270
- * @param templatePath Path to the template file (relative to TEMPLATES_DIR)
271
- * @returns Compiled Handlebars template function
272
- */
273
- function loadTemplate(templatePath: string): HandlebarsTemplateDelegate | null {
274
- // Check cache first
275
- if (templateCache[templatePath]) {
276
- return templateCache[templatePath];
277
- }
278
-
279
- const fullPath = path.join(getTemplatesDir(), templatePath);
280
-
281
- // Check if template exists
282
- if (!fs.existsSync(fullPath)) {
283
- logger.error(`Template not found: ${fullPath}`);
284
- return null;
285
- }
286
-
287
- try {
288
- // Read and compile template
289
- const templateContent = fs.readFileSync(fullPath, 'utf-8');
290
- const template = Handlebars.compile(templateContent);
291
-
292
- // Cache compiled template
293
- templateCache[templatePath] = template;
294
-
295
- return template;
296
- } catch (error) {
297
- logger.error(`Error loading template ${fullPath}: ${error}`);
298
- return null;
299
- }
300
- }
301
-
302
- /**
303
- * Render a template with provided variables
304
- *
305
- * @param templatePath Path to the template file (relative to TEMPLATES_DIR)
306
- * @param customVars Optional custom variables to merge with default variables
307
- * @returns Rendered template string or null if rendering fails
308
- */
309
- export function renderTemplate(
310
- templatePath: string,
311
- customVars: Record<string, unknown> = {},
312
- ): string | null {
313
- // Initialize Handlebars if not already initialized
314
- if (Object.keys(Handlebars.partials).length === 0) {
315
- initializeHandlebars();
316
- }
317
-
318
- // Load template
319
- const template = loadTemplate(templatePath);
320
- if (!template) {
321
- return null;
322
- }
323
-
324
- // Load variables and merge with custom vars
325
- const defaultVars = loadTemplateVariables();
326
- const variables = { ...defaultVars, ...customVars };
327
-
328
- try {
329
- // Render template with variables
330
- return template(variables);
331
- } catch (error) {
332
- logger.error(`Error rendering template ${templatePath}: ${error}`);
333
- return null;
334
- }
335
- }
336
-
337
- /**
338
- * Load a template for a specific framework or language
339
- *
340
- * @param reviewType Type of review (e.g., 'best-practices', 'security')
341
- * @param language Language (e.g., 'typescript', 'python')
342
- * @param framework Optional framework (e.g., 'react', 'angular')
343
- * @returns Rendered template string or null if not found
344
- */
345
- export function loadPromptTemplate(
346
- reviewType: string,
347
- language?: string,
348
- framework?: string,
349
- ): string | null {
350
- // Try framework-specific template first
351
- if (language && framework) {
352
- const frameworkPath = `frameworks/${framework}/${reviewType}.hbs`;
353
- const rendered = renderTemplate(frameworkPath);
354
- if (rendered) {
355
- logger.debug(`Loaded framework-specific template: ${frameworkPath}`);
356
- return rendered;
357
- }
358
- }
359
-
360
- // Try language-specific template
361
- if (language) {
362
- const languagePath = `languages/${language}/${reviewType}.hbs`;
363
- const rendered = renderTemplate(languagePath);
364
- if (rendered) {
365
- logger.debug(`Loaded language-specific template: ${languagePath}`);
366
- return rendered;
367
- }
368
- }
369
-
370
- // Fall back to generic template
371
- const genericPath = `languages/generic/${reviewType}.hbs`;
372
- const rendered = renderTemplate(genericPath);
373
- if (rendered) {
374
- logger.debug(`Loaded generic template: ${genericPath}`);
375
- return rendered;
376
- }
377
-
378
- logger.error(
379
- `No template found for reviewType=${reviewType}, language=${language ?? 'undefined'}, framework=${framework ?? 'undefined'}`,
380
- );
381
- return null;
382
- }
383
-
384
- /**
385
- * List all available templates
386
- *
387
- * @returns Map of available templates by category
388
- */
389
- export function listAvailableTemplates(): Record<string, string[]> {
390
- const result: Record<string, string[]> = {
391
- frameworks: [],
392
- languages: [],
393
- reviewTypes: [],
394
- };
395
-
396
- try {
397
- // Scan frameworks directory
398
- const frameworksDir = path.join(getTemplatesDir(), 'frameworks');
399
- if (fs.existsSync(frameworksDir)) {
400
- try {
401
- const entries = fs.readdirSync(frameworksDir, { withFileTypes: true });
402
- result.frameworks = entries
403
- .filter((entry) => entry.isDirectory())
404
- .map((entry) => entry.name);
405
- } catch (error) {
406
- logger.error(
407
- `Error reading frameworks directory ${frameworksDir}: ${
408
- error instanceof Error ? error.message : String(error)
409
- }`,
410
- );
411
- }
412
- } else {
413
- logger.debug(`Frameworks directory not found: ${frameworksDir}`);
414
- }
415
-
416
- // Scan languages directory
417
- const languagesDir = path.join(getTemplatesDir(), 'languages');
418
- if (fs.existsSync(languagesDir)) {
419
- try {
420
- const entries = fs.readdirSync(languagesDir, { withFileTypes: true });
421
- result.languages = entries
422
- .filter((entry) => entry.isDirectory())
423
- .map((entry) => entry.name);
424
- } catch (error) {
425
- logger.error(
426
- `Error reading languages directory ${languagesDir}: ${
427
- error instanceof Error ? error.message : String(error)
428
- }`,
429
- );
430
- }
431
- } else {
432
- logger.debug(`Languages directory not found: ${languagesDir}`);
433
- }
434
-
435
- // Get review types from any framework (assuming all frameworks have the same review types)
436
- // or from the generic directory if no frameworks are available
437
- if (Array.isArray(result.frameworks) && result.frameworks.length > 0) {
438
- try {
439
- const firstFramework = result.frameworks[0];
440
- if (firstFramework) {
441
- const firstFrameworkDir = path.join(frameworksDir, firstFramework);
442
- if (fs.existsSync(firstFrameworkDir)) {
443
- const entries = fs.readdirSync(firstFrameworkDir);
444
- result.reviewTypes = entries
445
- .filter((entry) => entry.endsWith('.hbs'))
446
- .map((entry) => entry.replace('.hbs', ''));
447
- }
448
- }
449
- } catch (error) {
450
- logger.error(
451
- `Error reading review types from framework directory: ${
452
- error instanceof Error ? error.message : String(error)
453
- }`,
454
- );
455
- }
456
- }
457
-
458
- // If we couldn't get review types from frameworks, try the generic directory
459
- if (!Array.isArray(result.reviewTypes) || result.reviewTypes.length === 0) {
460
- try {
461
- const genericDir = path.join(languagesDir, 'generic');
462
- if (fs.existsSync(genericDir)) {
463
- const entries = fs.readdirSync(genericDir);
464
- result.reviewTypes = entries
465
- .filter((entry) => entry.endsWith('.hbs'))
466
- .map((entry) => entry.replace('.hbs', ''));
467
- }
468
- } catch (error) {
469
- logger.error(
470
- `Error reading review types from generic directory: ${
471
- error instanceof Error ? error.message : String(error)
472
- }`,
473
- );
474
- }
475
- }
476
- } catch (error) {
477
- // Catch any other unexpected errors
478
- logger.error(
479
- `Unexpected error listing available templates: ${
480
- error instanceof Error ? error.message : String(error)
481
- }`,
482
- );
483
- }
484
-
485
- return result;
486
- }
487
-
488
- /**
489
- * Clear the template cache to force reloading of templates
490
- * This is useful when the configuration changes
491
- */
492
- export function clearTemplateCache(): void {
493
- // Reset cache and Handlebars registrations
494
- for (const key in templateCache) {
495
- delete templateCache[key];
496
- }
497
-
498
- // Clear registered partials
499
- for (const key in Handlebars.partials) {
500
- Handlebars.unregisterPartial(key);
501
- }
502
-
503
- logger.debug('Template cache cleared');
504
- }
505
-
506
- /**
507
- * Export loadPromptTemplate as default
508
- */
509
- export default {
510
- renderTemplate,
511
- loadPromptTemplate,
512
- listAvailableTemplates,
513
- clearTemplateCache,
514
- };
@@ -1,153 +0,0 @@
1
- /**
2
- * @fileoverview Utility to generate tree structure from file paths
3
- *
4
- * This module provides functions to convert a list of file paths into a
5
- * hierarchical tree structure for display in a markdown file.
6
- */
7
-
8
- // import path from 'path'; // Not used in this file
9
- import logger from './logger';
10
-
11
- /**
12
- * Node in the file tree structure
13
- */
14
- interface TreeNode {
15
- name: string;
16
- children: Map<string, TreeNode>;
17
- isFile: boolean;
18
- path?: string;
19
- }
20
-
21
- /**
22
- * Create a new tree node
23
- * @param name Name of the node
24
- * @param isFile Whether this node represents a file
25
- * @param filePath Full path of the file (for files only)
26
- * @returns A new tree node
27
- */
28
- function createNode(name: string, isFile = false, filePath?: string): TreeNode {
29
- return {
30
- name,
31
- children: new Map<string, TreeNode>(),
32
- isFile,
33
- path: filePath,
34
- };
35
- }
36
-
37
- /**
38
- * Build a tree structure from a list of file paths
39
- * @param filePaths Array of file paths (relative or absolute)
40
- * @returns Root node of the tree
41
- */
42
- function buildTree(filePaths: string[]): TreeNode {
43
- // Create the root node
44
- const root: TreeNode = createNode('root');
45
-
46
- // Add each file to the tree
47
- for (const filePath of filePaths) {
48
- // Split the path into components
49
- const parts = filePath.split(/[\\/]/);
50
-
51
- // Start at the root
52
- let currentNode = root;
53
-
54
- // Traverse the path components
55
- for (let i = 0; i < parts.length; i++) {
56
- const part = parts[i];
57
- if (!part) continue; // Skip empty parts
58
-
59
- const isFile = i === parts.length - 1;
60
-
61
- // If this node doesn't exist yet, create it
62
- if (!currentNode.children.has(part)) {
63
- currentNode.children.set(part, createNode(part, isFile, isFile ? filePath : undefined));
64
- } else if (isFile) {
65
- // If it exists but is a directory and we're adding a file with the same name
66
- const existingNode = currentNode.children.get(part)!;
67
- if (!existingNode.isFile) {
68
- // This is a special case where a directory has the same name as a file
69
- // Create a special file node with a unique name
70
- currentNode.children.set(`${part} (file)`, createNode(part, true, filePath));
71
- continue;
72
- }
73
- }
74
-
75
- // Move to the next node
76
- currentNode = currentNode.children.get(part)!;
77
- }
78
- }
79
-
80
- return root;
81
- }
82
-
83
- /**
84
- * Generate a markdown representation of the tree
85
- * @param node The current tree node
86
- * @param indent Current indentation level
87
- * @param isLast Whether this is the last child of its parent
88
- * @param prefix Prefix for the current line
89
- * @returns Markdown string representing the tree
90
- */
91
- function generateMarkdownTree(node: TreeNode, indent = '', isLast = true, prefix = ''): string {
92
- if (node.name === 'root') {
93
- // Root node is special - process its children directly
94
- let result = '';
95
- const children = Array.from(node.children.entries());
96
-
97
- for (let i = 0; i < children.length; i++) {
98
- const [, childNode] = children[i];
99
- const isLastChild = i === children.length - 1;
100
- result += generateMarkdownTree(childNode, '', isLastChild, '');
101
- }
102
-
103
- return result;
104
- }
105
-
106
- // Current node indicator
107
- const nodeIndicator = isLast ? '└── ' : '├── ';
108
-
109
- // Generate this node's line
110
- let result = `${indent}${prefix}${nodeIndicator}${node.name}\n`;
111
-
112
- // Generate child node prefix
113
- const childPrefix = isLast ? ' ' : '│ ';
114
-
115
- // Process children
116
- const children = Array.from(node.children.entries()).sort(([nameA], [nameB]) => {
117
- // Directories first, then files
118
- const nodeA = node.children.get(nameA)!;
119
- const nodeB = node.children.get(nameB)!;
120
- if (nodeA.isFile && !nodeB.isFile) return 1;
121
- if (!nodeA.isFile && nodeB.isFile) return -1;
122
- return nameA.localeCompare(nameB);
123
- });
124
-
125
- for (let i = 0; i < children.length; i++) {
126
- const [, childNode] = children[i];
127
- const isLastChild = i === children.length - 1;
128
- result += generateMarkdownTree(childNode, `${indent}${prefix}${childPrefix}`, isLastChild, '');
129
- }
130
-
131
- return result;
132
- }
133
-
134
- /**
135
- * Generate a markdown tree representation of file paths
136
- * @param filePaths Array of file paths
137
- * @returns Markdown string representing the tree structure
138
- */
139
- export function generateFileTree(filePaths: string[]): string {
140
- try {
141
- // Sort file paths to ensure consistent output
142
- const sortedPaths = [...filePaths].sort();
143
-
144
- // Build the tree structure
145
- const root = buildTree(sortedPaths);
146
-
147
- // Generate the markdown
148
- return `\`\`\`\n${generateMarkdownTree(root)}\`\`\``;
149
- } catch (error) {
150
- logger.error(`Error generating file tree: ${error}`);
151
- return filePaths.map((file) => `- \`${file}\``).join('\n');
152
- }
153
- }
@@ -1,14 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "declaration": true,
5
- "emitDeclarationOnly": true
6
- },
7
- "exclude": [
8
- "node_modules",
9
- "dist",
10
- "**/*.test.ts",
11
- "test-projects/**/*",
12
- "**/examples/**/*"
13
- ]
14
- }