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,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
- }