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
@@ -0,0 +1,502 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Token analysis service for pre-review token counting and estimation.
4
+ *
5
+ * This module provides fast, provider-agnostic token counting and analysis functionality
6
+ * to estimate token usage and costs before performing actual reviews.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TokenAnalyzer = void 0;
13
+ const tokenizers_1 = require("../../tokenizers");
14
+ const logger_1 = __importDefault(require("../../utils/logger"));
15
+ /**
16
+ * Service for analyzing token usage in files
17
+ */
18
+ class TokenAnalyzer {
19
+ static DEFAULT_PROMPT_OVERHEAD = 1500;
20
+ static DEFAULT_CONTEXT_MAINTENANCE_FACTOR = 0.08; // Reduced to 8% for better efficiency
21
+ static DEFAULT_SAFETY_MARGIN_FACTOR = 0.1; // Use 90% of context window by default
22
+ static DEFAULT_CONTEXT_WINDOW = 100000; // Default fallback
23
+ /**
24
+ * Context window mapping for supported models.
25
+ * Leave values as null if the exact window is unknown so they can be filled in later.
26
+ */
27
+ static MODEL_CONTEXT_WINDOWS = {
28
+ 'openai/gpt-5.1-codex': 400000,
29
+ 'gpt-5.1-codex': 400000,
30
+ 'anthropic/claude-haiku-4.5': 200000,
31
+ 'claude-haiku-4.5': 200000,
32
+ 'moonshotai/kimi-k2-thinking': 262144,
33
+ 'kimi-k2-thinking': 262144,
34
+ 'x-ai/grok-4-fast': 2000000,
35
+ 'grok-4-fast': 2000000,
36
+ };
37
+ /**
38
+ * Get the context window size for a model
39
+ * @param modelName Name of the model
40
+ * @returns Context window size in tokens
41
+ */
42
+ static getContextWindowSize(modelName) {
43
+ logger_1.default.debug(`getContextWindowSize: modelName=${modelName}`);
44
+ const configured = TokenAnalyzer.lookupConfiguredContextWindow(modelName);
45
+ if (typeof configured === 'number') {
46
+ logger_1.default.info(`Using configured context window for ${modelName}: ${configured.toLocaleString()} tokens`);
47
+ return configured;
48
+ }
49
+ if (configured === null) {
50
+ logger_1.default.warn(`Context window size for ${modelName} has not been set. Update TokenAnalyzer.MODEL_CONTEXT_WINDOWS to provide the exact token limit.`);
51
+ }
52
+ else {
53
+ logger_1.default.warn(`No matching context window size found for model: ${modelName}`);
54
+ }
55
+ logger_1.default.warn(`Using default context window size: ${TokenAnalyzer.DEFAULT_CONTEXT_WINDOW.toLocaleString()} tokens`);
56
+ return TokenAnalyzer.DEFAULT_CONTEXT_WINDOW;
57
+ }
58
+ static lookupConfiguredContextWindow(modelName) {
59
+ const normalized = modelName.toLowerCase();
60
+ if (normalized in TokenAnalyzer.MODEL_CONTEXT_WINDOWS) {
61
+ return TokenAnalyzer.MODEL_CONTEXT_WINDOWS[normalized];
62
+ }
63
+ if (normalized.includes(':')) {
64
+ const [, baseName] = normalized.split(':');
65
+ if (baseName && baseName in TokenAnalyzer.MODEL_CONTEXT_WINDOWS) {
66
+ return TokenAnalyzer.MODEL_CONTEXT_WINDOWS[baseName];
67
+ }
68
+ }
69
+ return undefined;
70
+ }
71
+ /**
72
+ * Analyze token usage for a set of files
73
+ * @param files Files to analyze
74
+ * @param options Analysis options
75
+ * @returns Token analysis result
76
+ */
77
+ static analyzeFiles(files, options) {
78
+ logger_1.default.info('Analyzing token usage for files...');
79
+ logger_1.default.debug(`TokenAnalyzer: modelName=${options.modelName}`);
80
+ const contextWindowSize = TokenAnalyzer.getContextWindowSize(options.modelName);
81
+ const promptOverhead = options.additionalPromptOverhead || TokenAnalyzer.DEFAULT_PROMPT_OVERHEAD;
82
+ const contextMaintenanceFactor = options.contextMaintenanceFactor || TokenAnalyzer.DEFAULT_CONTEXT_MAINTENANCE_FACTOR;
83
+ const safetyMarginFactor = options.safetyMarginFactor || TokenAnalyzer.DEFAULT_SAFETY_MARGIN_FACTOR;
84
+ // Calculate effective context window size with safety margin
85
+ const effectiveContextWindowSize = Math.floor(contextWindowSize * (1 - safetyMarginFactor));
86
+ logger_1.default.info(`Using effective context window size: ${effectiveContextWindowSize.toLocaleString()} tokens (${Math.round((1 - safetyMarginFactor) * 100)}% of ${contextWindowSize.toLocaleString()} tokens)`);
87
+ // Analyze each file
88
+ const fileAnalyses = files.map((file) => {
89
+ const content = file.content;
90
+ const tokenCount = (0, tokenizers_1.countTokens)(content, options.modelName);
91
+ const sizeInBytes = content.length;
92
+ const tokensPerByte = sizeInBytes > 0 ? tokenCount / sizeInBytes : 0;
93
+ return {
94
+ path: file.path,
95
+ relativePath: file.relativePath,
96
+ tokenCount,
97
+ sizeInBytes,
98
+ tokensPerByte,
99
+ };
100
+ });
101
+ // Calculate totals
102
+ const totalTokens = fileAnalyses.reduce((sum, file) => sum + file.tokenCount, 0);
103
+ const totalSizeInBytes = fileAnalyses.reduce((sum, file) => sum + file.sizeInBytes, 0);
104
+ const averageTokensPerByte = totalSizeInBytes > 0 ? totalTokens / totalSizeInBytes : 0;
105
+ // Estimate total tokens with overhead
106
+ const estimatedTotalTokens = totalTokens + promptOverhead;
107
+ // Determine if chunking is needed
108
+ const exceedsContextWindow = estimatedTotalTokens > effectiveContextWindowSize;
109
+ logger_1.default.info(`Token analysis summary:`);
110
+ logger_1.default.info(`- Total files: ${files.length}`);
111
+ logger_1.default.info(`- Total tokens: ${totalTokens.toLocaleString()}`);
112
+ logger_1.default.info(`- Prompt overhead: ${promptOverhead.toLocaleString()}`);
113
+ logger_1.default.info(`- Estimated total tokens: ${estimatedTotalTokens.toLocaleString()}`);
114
+ logger_1.default.info(`- Context window size: ${contextWindowSize.toLocaleString()}`);
115
+ logger_1.default.info(`- Effective context size (with safety margin): ${effectiveContextWindowSize.toLocaleString()}`);
116
+ logger_1.default.info(`- Context utilization: ${((estimatedTotalTokens / effectiveContextWindowSize) * 100).toFixed(2)}%`);
117
+ // Calculate recommended chunks if needed
118
+ const chunkingRecommendation = TokenAnalyzer.generateChunkingRecommendation(fileAnalyses, estimatedTotalTokens, effectiveContextWindowSize, contextMaintenanceFactor, options.forceSinglePass, options.batchTokenLimit);
119
+ // Log chunking decision
120
+ if (chunkingRecommendation.chunkingRecommended) {
121
+ logger_1.default.info(`Multi-pass review recommended: ${chunkingRecommendation.reason}`);
122
+ logger_1.default.info(`Estimated passes needed: ${chunkingRecommendation.recommendedChunks.length}`);
123
+ }
124
+ else {
125
+ logger_1.default.info(`Single-pass review recommended: ${chunkingRecommendation.reason}`);
126
+ }
127
+ return {
128
+ files: fileAnalyses,
129
+ totalTokens,
130
+ totalSizeInBytes,
131
+ averageTokensPerByte,
132
+ fileCount: files.length,
133
+ promptOverheadTokens: promptOverhead,
134
+ estimatedTotalTokens,
135
+ contextWindowSize,
136
+ exceedsContextWindow,
137
+ estimatedPassesNeeded: chunkingRecommendation.recommendedChunks.length,
138
+ chunkingRecommendation,
139
+ };
140
+ }
141
+ /**
142
+ * Generate a chunking recommendation for files that exceed context window
143
+ * @param fileAnalyses Array of file token analyses
144
+ * @param estimatedTotalTokens Total tokens including overhead
145
+ * @param contextWindowSize Maximum context window size
146
+ * @param contextMaintenanceFactor Context maintenance overhead factor
147
+ * @param forceSinglePass Force single pass mode regardless of token count
148
+ * @param batchTokenLimit Force maximum tokens per batch (for testing)
149
+ * @returns Chunking recommendation
150
+ */
151
+ static generateChunkingRecommendation(fileAnalyses, estimatedTotalTokens, contextWindowSize, contextMaintenanceFactor, forceSinglePass, batchTokenLimit) {
152
+ // If forceSinglePass is true, skip chunking regardless of token count
153
+ if (forceSinglePass) {
154
+ logger_1.default.debug(`Forcing single-pass review mode as requested (forceSinglePass=true)`);
155
+ return {
156
+ chunkingRecommended: false,
157
+ recommendedChunks: [
158
+ {
159
+ files: fileAnalyses.map((f) => f.path),
160
+ estimatedTokenCount: estimatedTotalTokens,
161
+ priority: 1,
162
+ },
163
+ ],
164
+ reason: 'Single-pass mode forced by configuration',
165
+ };
166
+ }
167
+ // If batchTokenLimit is provided, use it to force smaller batches
168
+ let effectiveContextLimit = contextWindowSize;
169
+ if (batchTokenLimit && batchTokenLimit > 0) {
170
+ effectiveContextLimit = Math.min(batchTokenLimit, contextWindowSize);
171
+ logger_1.default.info(`Using batch token limit: ${batchTokenLimit.toLocaleString()} tokens (forcing smaller batches for testing)`);
172
+ if (batchTokenLimit < contextWindowSize) {
173
+ logger_1.default.info(`This will force chunking even if content would fit in the model's context window`);
174
+ }
175
+ }
176
+ // If content fits within context window, no chunking needed
177
+ if (estimatedTotalTokens <= effectiveContextLimit) {
178
+ logger_1.default.debug(`Content fits within effective limit (${estimatedTotalTokens.toLocaleString()} <= ${effectiveContextLimit.toLocaleString()} tokens)`);
179
+ return {
180
+ chunkingRecommended: false,
181
+ recommendedChunks: [
182
+ {
183
+ files: fileAnalyses.map((f) => f.path),
184
+ estimatedTokenCount: estimatedTotalTokens,
185
+ priority: 1,
186
+ },
187
+ ],
188
+ reason: batchTokenLimit
189
+ ? 'Content fits within batch token limit'
190
+ : 'Content fits within model context window',
191
+ };
192
+ }
193
+ logger_1.default.debug(`Content exceeds effective limit (${estimatedTotalTokens.toLocaleString()} > ${effectiveContextLimit.toLocaleString()} tokens)`);
194
+ logger_1.default.debug(`Generating chunking recommendation with context maintenance factor: ${contextMaintenanceFactor}`);
195
+ // Calculate effective context window size accounting for context maintenance
196
+ const effectiveContextSize = Math.floor(effectiveContextLimit * (1 - contextMaintenanceFactor));
197
+ logger_1.default.debug(`Effective context size for chunking: ${effectiveContextSize.toLocaleString()} tokens (${Math.round((1 - contextMaintenanceFactor) * 100)}% of ${effectiveContextLimit.toLocaleString()} tokens)`);
198
+ // Use optimized bin-packing algorithm for better chunk distribution
199
+ const chunks = TokenAnalyzer.optimizedBinPacking(fileAnalyses, effectiveContextSize, effectiveContextLimit);
200
+ logger_1.default.info(`Created ${chunks.length} optimized chunks for multi-pass review`);
201
+ let reason = `Content exceeds effective limit (${estimatedTotalTokens.toLocaleString()} > ${effectiveContextLimit.toLocaleString()} tokens)`;
202
+ if (batchTokenLimit && batchTokenLimit < contextWindowSize) {
203
+ reason = `Batch token limit forcing smaller batches (limit: ${batchTokenLimit.toLocaleString()} tokens)`;
204
+ }
205
+ return {
206
+ chunkingRecommended: true,
207
+ recommendedChunks: chunks,
208
+ reason,
209
+ };
210
+ }
211
+ /**
212
+ * Optimized bin-packing algorithm to minimize the number of chunks
213
+ * Uses an advanced first-fit decreasing with multi-level optimization
214
+ * @param fileAnalyses Array of file token analyses
215
+ * @param maxChunkSize Maximum size for each chunk in tokens
216
+ * @param contextWindowSize Original context window for logging
217
+ * @returns Array of optimized file chunks
218
+ */
219
+ static optimizedBinPacking(fileAnalyses, maxChunkSize, _contextWindowSize) {
220
+ // Sort files by token count (largest first) for first-fit decreasing
221
+ const sortedFiles = [...fileAnalyses].sort((a, b) => b.tokenCount - a.tokenCount);
222
+ // Calculate target chunk size for optimal distribution
223
+ const totalTokens = sortedFiles.reduce((sum, f) => sum + f.tokenCount, 0);
224
+ const minChunksNeeded = Math.ceil(totalTokens / maxChunkSize);
225
+ const targetChunkSize = Math.floor(totalTokens / minChunksNeeded);
226
+ logger_1.default.debug(`Bin-packing optimization:`);
227
+ logger_1.default.debug(` - Total tokens: ${totalTokens.toLocaleString()}`);
228
+ logger_1.default.debug(` - Max chunk size: ${maxChunkSize.toLocaleString()}`);
229
+ logger_1.default.debug(` - Min chunks needed: ${minChunksNeeded}`);
230
+ logger_1.default.debug(` - Target chunk size: ${targetChunkSize.toLocaleString()}`);
231
+ // Initialize chunks array
232
+ const chunks = [];
233
+ // Track oversized files separately
234
+ const oversizedFiles = [];
235
+ const largeFiles = [];
236
+ const mediumFiles = [];
237
+ const smallFiles = [];
238
+ // Categorize files by size for better packing
239
+ for (const file of sortedFiles) {
240
+ if (file.tokenCount > maxChunkSize) {
241
+ oversizedFiles.push(file);
242
+ logger_1.default.warn(`File "${file.path}" is oversized (${file.tokenCount.toLocaleString()} > ${maxChunkSize.toLocaleString()} tokens)`);
243
+ }
244
+ else if (file.tokenCount > maxChunkSize * 0.5) {
245
+ largeFiles.push(file);
246
+ }
247
+ else if (file.tokenCount > maxChunkSize * 0.2) {
248
+ mediumFiles.push(file);
249
+ }
250
+ else {
251
+ smallFiles.push(file);
252
+ }
253
+ }
254
+ logger_1.default.debug(`File categorization:`);
255
+ logger_1.default.debug(` - Oversized: ${oversizedFiles.length}`);
256
+ logger_1.default.debug(` - Large (>50% of max): ${largeFiles.length}`);
257
+ logger_1.default.debug(` - Medium (20-50% of max): ${mediumFiles.length}`);
258
+ logger_1.default.debug(` - Small (<20% of max): ${smallFiles.length}`);
259
+ // Process oversized files first (split them if possible)
260
+ for (const file of oversizedFiles) {
261
+ // For now, put oversized files in their own chunks
262
+ // TODO: In future, we could split file content
263
+ chunks.push({
264
+ files: [file.path],
265
+ estimatedTokenCount: file.tokenCount,
266
+ priority: chunks.length + 1,
267
+ });
268
+ logger_1.default.debug(`Created dedicated chunk ${chunks.length} for oversized file "${file.path}" (${file.tokenCount.toLocaleString()} tokens)`);
269
+ }
270
+ // Process large files - try to pair them optimally
271
+ for (const file of largeFiles) {
272
+ let placed = false;
273
+ // Try to find a chunk with complementary space
274
+ for (let i = 0; i < chunks.length; i++) {
275
+ const chunk = chunks[i];
276
+ const remainingSpace = maxChunkSize - chunk.estimatedTokenCount;
277
+ // Check if this file fits well (within 80% efficiency)
278
+ if (remainingSpace >= file.tokenCount &&
279
+ chunk.estimatedTokenCount + file.tokenCount >= targetChunkSize * 0.8) {
280
+ chunk.files.push(file.path);
281
+ chunk.estimatedTokenCount += file.tokenCount;
282
+ placed = true;
283
+ logger_1.default.debug(`Added large file "${file.path}" (${file.tokenCount.toLocaleString()} tokens) to chunk ${i + 1}`);
284
+ break;
285
+ }
286
+ }
287
+ if (!placed) {
288
+ // Create a new chunk for this large file
289
+ chunks.push({
290
+ files: [file.path],
291
+ estimatedTokenCount: file.tokenCount,
292
+ priority: chunks.length + 1,
293
+ });
294
+ logger_1.default.debug(`Created new chunk ${chunks.length} for large file "${file.path}" (${file.tokenCount.toLocaleString()} tokens)`);
295
+ }
296
+ }
297
+ // Process medium files - use first-fit with efficiency threshold
298
+ for (const file of mediumFiles) {
299
+ let placed = false;
300
+ // Find first chunk where this file fits efficiently
301
+ for (let i = 0; i < chunks.length; i++) {
302
+ const chunk = chunks[i];
303
+ const remainingSpace = maxChunkSize - chunk.estimatedTokenCount;
304
+ if (remainingSpace >= file.tokenCount) {
305
+ chunk.files.push(file.path);
306
+ chunk.estimatedTokenCount += file.tokenCount;
307
+ placed = true;
308
+ logger_1.default.debug(`Added medium file "${file.path}" (${file.tokenCount.toLocaleString()} tokens) to chunk ${i + 1}`);
309
+ break;
310
+ }
311
+ }
312
+ if (!placed) {
313
+ // Create a new chunk
314
+ chunks.push({
315
+ files: [file.path],
316
+ estimatedTokenCount: file.tokenCount,
317
+ priority: chunks.length + 1,
318
+ });
319
+ logger_1.default.debug(`Created new chunk ${chunks.length} for medium file "${file.path}" (${file.tokenCount.toLocaleString()} tokens)`);
320
+ }
321
+ }
322
+ // Process small files - pack them to fill gaps
323
+ // Sort small files for better packing (largest first)
324
+ smallFiles.sort((a, b) => b.tokenCount - a.tokenCount);
325
+ for (const file of smallFiles) {
326
+ let placed = false;
327
+ // Find the fullest chunk that can still fit this file
328
+ let bestChunkIndex = -1;
329
+ let bestChunkFullness = 0;
330
+ for (let i = 0; i < chunks.length; i++) {
331
+ const chunk = chunks[i];
332
+ const remainingSpace = maxChunkSize - chunk.estimatedTokenCount;
333
+ const chunkFullness = chunk.estimatedTokenCount / maxChunkSize;
334
+ if (remainingSpace >= file.tokenCount && chunkFullness > bestChunkFullness) {
335
+ bestChunkIndex = i;
336
+ bestChunkFullness = chunkFullness;
337
+ }
338
+ }
339
+ if (bestChunkIndex !== -1) {
340
+ const chunk = chunks[bestChunkIndex];
341
+ chunk.files.push(file.path);
342
+ chunk.estimatedTokenCount += file.tokenCount;
343
+ placed = true;
344
+ logger_1.default.debug(`Added small file "${file.path}" (${file.tokenCount.toLocaleString()} tokens) to chunk ${bestChunkIndex + 1}`);
345
+ }
346
+ if (!placed) {
347
+ // Create a new chunk only if absolutely necessary
348
+ chunks.push({
349
+ files: [file.path],
350
+ estimatedTokenCount: file.tokenCount,
351
+ priority: chunks.length + 1,
352
+ });
353
+ logger_1.default.debug(`Created new chunk ${chunks.length} for small file "${file.path}" (${file.tokenCount.toLocaleString()} tokens)`);
354
+ }
355
+ }
356
+ // Perform aggressive balancing to minimize chunk count
357
+ const balancedChunks = TokenAnalyzer.aggressiveBalance(chunks, fileAnalyses, maxChunkSize);
358
+ // Log chunk statistics
359
+ const avgTokensPerChunk = Math.round(balancedChunks.reduce((sum, c) => sum + c.estimatedTokenCount, 0) / balancedChunks.length);
360
+ const maxTokensInChunk = Math.max(...balancedChunks.map((c) => c.estimatedTokenCount));
361
+ const minTokensInChunk = Math.min(...balancedChunks.map((c) => c.estimatedTokenCount));
362
+ logger_1.default.info(`Chunk statistics:`);
363
+ logger_1.default.info(` - Total chunks: ${balancedChunks.length}`);
364
+ logger_1.default.info(` - Average tokens per chunk: ${avgTokensPerChunk.toLocaleString()}`);
365
+ logger_1.default.info(` - Max tokens in a chunk: ${maxTokensInChunk.toLocaleString()}`);
366
+ logger_1.default.info(` - Min tokens in a chunk: ${minTokensInChunk.toLocaleString()}`);
367
+ logger_1.default.info(` - Chunk efficiency: ${((avgTokensPerChunk / maxChunkSize) * 100).toFixed(1)}%`);
368
+ return balancedChunks;
369
+ }
370
+ /**
371
+ * Aggressive balancing to minimize chunk count and maximize efficiency
372
+ * @param chunks Initial chunks from bin-packing
373
+ * @param fileAnalyses Original file analyses for lookup
374
+ * @param maxChunkSize Maximum size for each chunk
375
+ * @returns Balanced chunks with minimized count
376
+ */
377
+ static aggressiveBalance(chunks, fileAnalyses, maxChunkSize) {
378
+ // Create a map for quick file lookups
379
+ const fileMap = new Map();
380
+ for (const file of fileAnalyses) {
381
+ fileMap.set(file.path, file);
382
+ }
383
+ // First pass: Try to merge small chunks
384
+ const mergedChunks = [];
385
+ const sortedForMerging = [...chunks].sort((a, b) => a.estimatedTokenCount - b.estimatedTokenCount);
386
+ const usedChunks = new Set();
387
+ for (let i = 0; i < sortedForMerging.length; i++) {
388
+ if (usedChunks.has(i))
389
+ continue;
390
+ const chunk1 = sortedForMerging[i];
391
+ const mergedChunk = {
392
+ files: [...chunk1.files],
393
+ estimatedTokenCount: chunk1.estimatedTokenCount,
394
+ priority: mergedChunks.length + 1,
395
+ };
396
+ usedChunks.add(i);
397
+ // Try to merge with other small chunks
398
+ for (let j = i + 1; j < sortedForMerging.length; j++) {
399
+ if (usedChunks.has(j))
400
+ continue;
401
+ const chunk2 = sortedForMerging[j];
402
+ const combinedSize = mergedChunk.estimatedTokenCount + chunk2.estimatedTokenCount;
403
+ // Merge if combined size is still within limits
404
+ if (combinedSize <= maxChunkSize) {
405
+ mergedChunk.files.push(...chunk2.files);
406
+ mergedChunk.estimatedTokenCount = combinedSize;
407
+ usedChunks.add(j);
408
+ logger_1.default.debug(`Merged chunks: ${chunk2.files.length} files (${chunk2.estimatedTokenCount.toLocaleString()} tokens) into chunk with ${mergedChunk.files.length} files`);
409
+ }
410
+ }
411
+ mergedChunks.push(mergedChunk);
412
+ }
413
+ logger_1.default.debug(`Chunk merging reduced count from ${chunks.length} to ${mergedChunks.length}`);
414
+ // Second pass: Balance the merged chunks
415
+ const sortedChunks = [...mergedChunks].sort((a, b) => a.estimatedTokenCount - b.estimatedTokenCount);
416
+ // Try to move files to achieve better balance
417
+ let improved = true;
418
+ let iterations = 0;
419
+ const maxIterations = 20; // More iterations for aggressive optimization
420
+ while (improved && iterations < maxIterations) {
421
+ improved = false;
422
+ iterations++;
423
+ // Find the most and least full chunks
424
+ sortedChunks.sort((a, b) => a.estimatedTokenCount - b.estimatedTokenCount);
425
+ for (let i = 0; i < Math.floor(sortedChunks.length / 2); i++) {
426
+ const smallChunk = sortedChunks[i];
427
+ const largeChunk = sortedChunks[sortedChunks.length - 1 - i];
428
+ // Calculate variance threshold based on chunk count
429
+ const varianceThreshold = Math.max(500, maxChunkSize * 0.05); // 5% of max or 500 tokens
430
+ // Skip if chunks are already well balanced
431
+ if (largeChunk.estimatedTokenCount - smallChunk.estimatedTokenCount < varianceThreshold) {
432
+ continue;
433
+ }
434
+ // Try to find optimal file to move
435
+ let bestFile = null;
436
+ let bestImprovement = 0;
437
+ for (const filePath of largeChunk.files) {
438
+ const file = fileMap.get(filePath);
439
+ if (!file)
440
+ continue;
441
+ const newSmallSize = smallChunk.estimatedTokenCount + file.tokenCount;
442
+ const newLargeSize = largeChunk.estimatedTokenCount - file.tokenCount;
443
+ // Check if moving this file would improve balance
444
+ if (newSmallSize <= maxChunkSize && newLargeSize > 0) {
445
+ const currentDiff = largeChunk.estimatedTokenCount - smallChunk.estimatedTokenCount;
446
+ const newDiff = Math.abs(newLargeSize - newSmallSize);
447
+ const improvement = currentDiff - newDiff;
448
+ if (improvement > bestImprovement) {
449
+ bestFile = filePath;
450
+ bestImprovement = improvement;
451
+ }
452
+ }
453
+ }
454
+ // Move the best file if found
455
+ if (bestFile && bestImprovement > 100) {
456
+ const file = fileMap.get(bestFile);
457
+ largeChunk.files = largeChunk.files.filter((f) => f !== bestFile);
458
+ smallChunk.files.push(bestFile);
459
+ // Update token counts
460
+ largeChunk.estimatedTokenCount -= file.tokenCount;
461
+ smallChunk.estimatedTokenCount += file.tokenCount;
462
+ logger_1.default.debug(`Balanced: Moved file "${bestFile}" (${file.tokenCount.toLocaleString()} tokens) - improvement: ${bestImprovement.toLocaleString()} tokens`);
463
+ improved = true;
464
+ }
465
+ }
466
+ }
467
+ // Final pass: Remove any empty chunks
468
+ const finalChunks = sortedChunks.filter((chunk) => chunk.files.length > 0);
469
+ // Re-assign priorities based on token count (largest first for processing)
470
+ finalChunks.sort((a, b) => b.estimatedTokenCount - a.estimatedTokenCount);
471
+ finalChunks.forEach((chunk, index) => {
472
+ chunk.priority = index + 1;
473
+ });
474
+ if (iterations === maxIterations) {
475
+ logger_1.default.debug(`Aggressive balancing stopped after ${maxIterations} iterations`);
476
+ }
477
+ else {
478
+ logger_1.default.debug(`Aggressive balancing completed in ${iterations} iterations`);
479
+ }
480
+ return finalChunks;
481
+ }
482
+ /**
483
+ * Analyze a single file for token usage
484
+ * @param file File to analyze
485
+ * @param options Analysis options
486
+ * @returns Token analysis for the file
487
+ */
488
+ static analyzeFile(file, options) {
489
+ const content = file.content;
490
+ const tokenCount = (0, tokenizers_1.countTokens)(content, options.modelName);
491
+ const sizeInBytes = content.length;
492
+ return {
493
+ path: file.path,
494
+ relativePath: file.relativePath,
495
+ tokenCount,
496
+ sizeInBytes,
497
+ tokensPerByte: sizeInBytes > 0 ? tokenCount / sizeInBytes : 0,
498
+ };
499
+ }
500
+ }
501
+ exports.TokenAnalyzer = TokenAnalyzer;
502
+ //# sourceMappingURL=TokenAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenAnalyzer.js","sourceRoot":"","sources":["../../../src/analysis/tokens/TokenAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,5 @@
3
3
  *
4
4
  * This module exports all token analysis related functions and types.
5
5
  */
6
-
7
6
  export * from './TokenAnalysisFormatter';
8
7
  export * from './TokenAnalyzer';
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Token analysis module exports.
4
+ *
5
+ * This module exports all token analysis related functions and types.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ __exportStar(require("./TokenAnalysisFormatter"), exports);
23
+ __exportStar(require("./TokenAnalyzer"), exports);
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analysis/tokens/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,2DAAyC;AACzC,kDAAgC"}