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.
- package/dist/analysis/FindingsExtractor.d.ts +105 -0
- package/dist/analysis/FindingsExtractor.js +363 -0
- package/dist/analysis/FindingsExtractor.js.map +1 -0
- package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.d.ts +111 -0
- package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.js +215 -0
- package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.js.map +1 -0
- package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.d.ts +142 -0
- package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.js +503 -0
- package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.js.map +1 -0
- package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.d.ts +88 -0
- package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.js +343 -0
- package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.js.map +1 -0
- package/dist/analysis/ai-detection/core/AIDetectionEngine.d.ts +104 -0
- package/dist/analysis/ai-detection/core/AIDetectionEngine.js +369 -0
- package/dist/analysis/ai-detection/core/AIDetectionEngine.js.map +1 -0
- package/dist/analysis/ai-detection/types/DetectionTypes.d.ts +364 -0
- package/dist/analysis/ai-detection/types/DetectionTypes.js +32 -0
- package/dist/analysis/ai-detection/types/DetectionTypes.js.map +1 -0
- package/dist/analysis/ai-detection/utils/SubmissionConverter.d.ts +97 -0
- package/dist/analysis/ai-detection/utils/SubmissionConverter.js +339 -0
- package/dist/analysis/ai-detection/utils/SubmissionConverter.js.map +1 -0
- package/dist/analysis/context/ReviewContext.d.ts +184 -0
- package/dist/analysis/context/ReviewContext.js +294 -0
- package/dist/analysis/context/ReviewContext.js.map +1 -0
- package/{src/analysis/context/index.ts → dist/analysis/context/index.d.ts} +0 -1
- package/dist/analysis/context/index.js +23 -0
- package/dist/analysis/context/index.js.map +1 -0
- package/{src/analysis/index.ts → dist/analysis/index.d.ts} +0 -1
- package/dist/analysis/index.js +24 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/analysis/static/wpPhpcsRunner.d.ts +11 -0
- package/dist/analysis/static/wpPhpcsRunner.js +219 -0
- package/dist/analysis/static/wpPhpcsRunner.js.map +1 -0
- package/dist/analysis/tokens/TokenAnalysisFormatter.d.ts +27 -0
- package/{src/analysis/tokens/TokenAnalysisFormatter.ts → dist/analysis/tokens/TokenAnalysisFormatter.js} +64 -75
- package/dist/analysis/tokens/TokenAnalysisFormatter.js.map +1 -0
- package/dist/analysis/tokens/TokenAnalyzer.d.ts +155 -0
- package/dist/analysis/tokens/TokenAnalyzer.js +502 -0
- package/dist/analysis/tokens/TokenAnalyzer.js.map +1 -0
- package/{src/analysis/tokens/index.ts → dist/analysis/tokens/index.d.ts} +0 -1
- package/dist/analysis/tokens/index.js +24 -0
- package/dist/analysis/tokens/index.js.map +1 -0
- package/dist/clients/base/abstractClient.d.ts +99 -0
- package/dist/clients/base/abstractClient.js +98 -0
- package/dist/clients/base/abstractClient.js.map +1 -0
- package/dist/clients/base/httpClient.d.ts +24 -0
- package/dist/clients/base/httpClient.js +147 -0
- package/dist/clients/base/httpClient.js.map +1 -0
- package/{src/clients/base/index.ts → dist/clients/base/index.d.ts} +0 -1
- package/dist/clients/base/index.js +28 -0
- package/dist/clients/base/index.js.map +1 -0
- package/dist/clients/base/modelDetection.d.ts +41 -0
- package/dist/clients/base/modelDetection.js +88 -0
- package/dist/clients/base/modelDetection.js.map +1 -0
- package/dist/clients/base/responseProcessor.d.ts +45 -0
- package/dist/clients/base/responseProcessor.js +495 -0
- package/dist/clients/base/responseProcessor.js.map +1 -0
- package/dist/clients/factory/clientFactory.d.ts +23 -0
- package/dist/clients/factory/clientFactory.js +50 -0
- package/dist/clients/factory/clientFactory.js.map +1 -0
- package/{src/clients/factory/index.ts → dist/clients/factory/index.d.ts} +0 -1
- package/dist/clients/factory/index.js +24 -0
- package/dist/clients/factory/index.js.map +1 -0
- package/{src/clients/implementations/index.ts → dist/clients/implementations/index.d.ts} +0 -1
- package/dist/clients/implementations/index.js +24 -0
- package/dist/clients/implementations/index.js.map +1 -0
- package/dist/clients/implementations/openRouterClient.d.ts +69 -0
- package/dist/clients/implementations/openRouterClient.js +294 -0
- package/dist/clients/implementations/openRouterClient.js.map +1 -0
- package/dist/clients/openRouterClient.d.ts +42 -0
- package/dist/clients/openRouterClient.js +738 -0
- package/dist/clients/openRouterClient.js.map +1 -0
- package/{src/clients/openRouterClientWrapper.ts → dist/clients/openRouterClientWrapper.d.ts} +2 -24
- package/dist/clients/openRouterClientWrapper.js +64 -0
- package/dist/clients/openRouterClientWrapper.js.map +1 -0
- package/dist/clients/utils/directoryStructure.d.ts +14 -0
- package/dist/clients/utils/directoryStructure.js +48 -0
- package/dist/clients/utils/directoryStructure.js.map +1 -0
- package/{src/clients/utils/index.ts → dist/clients/utils/index.d.ts} +0 -1
- package/dist/clients/utils/index.js +31 -0
- package/dist/clients/utils/index.js.map +1 -0
- package/dist/clients/utils/languageDetection.d.ts +13 -0
- package/dist/clients/utils/languageDetection.js +46 -0
- package/dist/clients/utils/languageDetection.js.map +1 -0
- package/dist/clients/utils/promptFormatter.d.ts +37 -0
- package/dist/clients/utils/promptFormatter.js +150 -0
- package/dist/clients/utils/promptFormatter.js.map +1 -0
- package/{src/clients/utils/promptLoader.ts → dist/clients/utils/promptLoader.d.ts} +1 -27
- package/dist/clients/utils/promptLoader.js +49 -0
- package/dist/clients/utils/promptLoader.js.map +1 -0
- package/dist/clients/utils/tokenCounter.d.ts +81 -0
- package/dist/clients/utils/tokenCounter.js +209 -0
- package/dist/clients/utils/tokenCounter.js.map +1 -0
- package/dist/core/ApiClientSelector.d.ts +8 -0
- package/dist/core/ApiClientSelector.js +29 -0
- package/dist/core/ApiClientSelector.js.map +1 -0
- package/dist/core/ConfigurationService.d.ts +307 -0
- package/dist/core/ConfigurationService.js +516 -0
- package/dist/core/ConfigurationService.js.map +1 -0
- package/dist/core/ConsolidationService.d.ts +99 -0
- package/dist/core/ConsolidationService.js +341 -0
- package/dist/core/ConsolidationService.js.map +1 -0
- package/dist/core/InteractiveDisplayManager.d.ts +22 -0
- package/dist/core/InteractiveDisplayManager.js +70 -0
- package/dist/core/InteractiveDisplayManager.js.map +1 -0
- package/dist/core/OutputManager.d.ts +26 -0
- package/dist/core/OutputManager.js +217 -0
- package/dist/core/OutputManager.js.map +1 -0
- package/dist/core/ReviewGenerator.d.ts +13 -0
- package/dist/core/ReviewGenerator.js +102 -0
- package/dist/core/ReviewGenerator.js.map +1 -0
- package/dist/core/fileDiscovery.d.ts +35 -0
- package/dist/core/fileDiscovery.js +202 -0
- package/dist/core/fileDiscovery.js.map +1 -0
- package/dist/core/handlers/EstimationHandler.d.ts +18 -0
- package/dist/core/handlers/EstimationHandler.js +110 -0
- package/dist/core/handlers/EstimationHandler.js.map +1 -0
- package/dist/core/handlers/FileProcessingHandler.d.ts +31 -0
- package/dist/core/handlers/FileProcessingHandler.js +164 -0
- package/dist/core/handlers/FileProcessingHandler.js.map +1 -0
- package/dist/core/handlers/OutputHandler.d.ts +27 -0
- package/dist/core/handlers/OutputHandler.js +127 -0
- package/dist/core/handlers/OutputHandler.js.map +1 -0
- package/dist/core/handlers/ReviewExecutor.d.ts +32 -0
- package/dist/core/handlers/ReviewExecutor.js +111 -0
- package/dist/core/handlers/ReviewExecutor.js.map +1 -0
- package/dist/core/reviewOrchestrator.d.ts +24 -0
- package/dist/core/reviewOrchestrator.js +354 -0
- package/dist/core/reviewOrchestrator.js.map +1 -0
- package/dist/core/utils/ModelInfoUtils.d.ts +16 -0
- package/dist/core/utils/ModelInfoUtils.js +54 -0
- package/dist/core/utils/ModelInfoUtils.js.map +1 -0
- package/{src/formatters/outputFormatter.ts → dist/formatters/outputFormatter.d.ts} +2 -33
- package/dist/formatters/outputFormatter.js +65 -0
- package/dist/formatters/outputFormatter.js.map +1 -0
- package/dist/formatters/utils/IssueFormatters.d.ts +20 -0
- package/dist/formatters/utils/IssueFormatters.js +67 -0
- package/dist/formatters/utils/IssueFormatters.js.map +1 -0
- package/dist/formatters/utils/JsonFormatter.d.ts +13 -0
- package/dist/formatters/utils/JsonFormatter.js +57 -0
- package/dist/formatters/utils/JsonFormatter.js.map +1 -0
- package/dist/formatters/utils/MarkdownFormatters.d.ts +51 -0
- package/dist/formatters/utils/MarkdownFormatters.js +456 -0
- package/dist/formatters/utils/MarkdownFormatters.js.map +1 -0
- package/dist/formatters/utils/MetadataFormatter.d.ts +65 -0
- package/dist/formatters/utils/MetadataFormatter.js +219 -0
- package/dist/formatters/utils/MetadataFormatter.js.map +1 -0
- package/dist/formatters/utils/ModelInfoExtractor.d.ts +33 -0
- package/dist/formatters/utils/ModelInfoExtractor.js +111 -0
- package/dist/formatters/utils/ModelInfoExtractor.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/PluginInterface.d.ts +44 -0
- package/dist/plugins/PluginInterface.js +9 -0
- package/dist/plugins/PluginInterface.js.map +1 -0
- package/dist/plugins/PluginManager.d.ts +51 -0
- package/dist/plugins/PluginManager.js +151 -0
- package/dist/plugins/PluginManager.js.map +1 -0
- package/dist/prompts/PromptManager.d.ts +30 -0
- package/dist/prompts/PromptManager.js +62 -0
- package/dist/prompts/PromptManager.js.map +1 -0
- package/dist/prompts/cache/PromptCache.d.ts +32 -0
- package/dist/prompts/cache/PromptCache.js +48 -0
- package/dist/prompts/cache/PromptCache.js.map +1 -0
- package/dist/runtime/auth/service.d.ts +2 -0
- package/dist/runtime/auth/service.js +41 -0
- package/dist/runtime/auth/service.js.map +1 -0
- package/dist/runtime/auth/session.d.ts +5 -0
- package/dist/runtime/auth/session.js +87 -0
- package/dist/runtime/auth/session.js.map +1 -0
- package/dist/runtime/auth/types.d.ts +9 -0
- package/dist/runtime/auth/types.js +3 -0
- package/dist/runtime/auth/types.js.map +1 -0
- package/dist/runtime/cliEntry.d.ts +1 -0
- package/dist/runtime/cliEntry.js +266 -0
- package/dist/runtime/cliEntry.js.map +1 -0
- package/dist/runtime/debug/logManager.d.ts +5 -0
- package/dist/runtime/debug/logManager.js +31 -0
- package/dist/runtime/debug/logManager.js.map +1 -0
- package/dist/runtime/errors.d.ts +5 -0
- package/dist/runtime/errors.js +15 -0
- package/dist/runtime/errors.js.map +1 -0
- package/dist/runtime/fileCollector.d.ts +14 -0
- package/dist/runtime/fileCollector.js +382 -0
- package/dist/runtime/fileCollector.js.map +1 -0
- package/dist/runtime/manifest.d.ts +1 -0
- package/dist/runtime/manifest.js +65 -0
- package/dist/runtime/manifest.js.map +1 -0
- package/dist/runtime/openrouterProxy.d.ts +4 -0
- package/dist/runtime/openrouterProxy.js +43 -0
- package/dist/runtime/openrouterProxy.js.map +1 -0
- package/dist/runtime/preprod/webCheck.d.ts +1 -0
- package/dist/runtime/preprod/webCheck.js +98 -0
- package/dist/runtime/preprod/webCheck.js.map +1 -0
- package/dist/runtime/proxyConfig.d.ts +6 -0
- package/dist/runtime/proxyConfig.js +86 -0
- package/dist/runtime/proxyConfig.js.map +1 -0
- package/dist/runtime/proxyEnvironment.d.ts +3 -0
- package/dist/runtime/proxyEnvironment.js +63 -0
- package/dist/runtime/proxyEnvironment.js.map +1 -0
- package/dist/runtime/reportMerge.d.ts +30 -0
- package/dist/runtime/reportMerge.js +70 -0
- package/dist/runtime/reportMerge.js.map +1 -0
- package/dist/runtime/reporting/markdownReportBuilder.d.ts +17 -0
- package/dist/runtime/reporting/markdownReportBuilder.js +154 -0
- package/dist/runtime/reporting/markdownReportBuilder.js.map +1 -0
- package/dist/runtime/reporting/reportDataCollector.d.ts +31 -0
- package/dist/runtime/reporting/reportDataCollector.js +170 -0
- package/dist/runtime/reporting/reportDataCollector.js.map +1 -0
- package/dist/runtime/reporting/summaryGenerator.d.ts +10 -0
- package/dist/runtime/reporting/summaryGenerator.js +67 -0
- package/dist/runtime/reporting/summaryGenerator.js.map +1 -0
- package/dist/runtime/reviewPipeline.d.ts +47 -0
- package/dist/runtime/reviewPipeline.js +161 -0
- package/dist/runtime/reviewPipeline.js.map +1 -0
- package/dist/runtime/runAiCodeReview.d.ts +28 -0
- package/dist/runtime/runAiCodeReview.js +373 -0
- package/dist/runtime/runAiCodeReview.js.map +1 -0
- package/dist/runtime/runtimeConfig.d.ts +4 -0
- package/dist/runtime/runtimeConfig.js +7 -0
- package/dist/runtime/runtimeConfig.js.map +1 -0
- package/dist/runtime/ui/Layout.d.ts +11 -0
- package/dist/runtime/ui/Layout.js +47 -0
- package/dist/runtime/ui/Layout.js.map +1 -0
- package/dist/runtime/ui/RuntimeApp.d.ts +6 -0
- package/dist/runtime/ui/RuntimeApp.js +172 -0
- package/dist/runtime/ui/RuntimeApp.js.map +1 -0
- package/dist/runtime/ui/inkModules.d.ts +10 -0
- package/dist/runtime/ui/inkModules.js +63 -0
- package/dist/runtime/ui/inkModules.js.map +1 -0
- package/dist/runtime/ui/screens/AuthScreen.d.ts +6 -0
- package/dist/runtime/ui/screens/AuthScreen.js +67 -0
- package/dist/runtime/ui/screens/AuthScreen.js.map +1 -0
- package/dist/runtime/ui/screens/ModeSelection.d.ts +10 -0
- package/dist/runtime/ui/screens/ModeSelection.js +100 -0
- package/dist/runtime/ui/screens/ModeSelection.js.map +1 -0
- package/dist/runtime/ui/screens/ProgressScreen.d.ts +12 -0
- package/dist/runtime/ui/screens/ProgressScreen.js +64 -0
- package/dist/runtime/ui/screens/ProgressScreen.js.map +1 -0
- package/dist/runtime/ui/screens/ResultsScreen.d.ts +7 -0
- package/dist/runtime/ui/screens/ResultsScreen.js +29 -0
- package/dist/runtime/ui/screens/ResultsScreen.js.map +1 -0
- package/dist/strategies/ArchitecturalReviewStrategy.d.ts +29 -0
- package/dist/strategies/ArchitecturalReviewStrategy.js +42 -0
- package/dist/strategies/ArchitecturalReviewStrategy.js.map +1 -0
- package/dist/strategies/CodingTestReviewStrategy.d.ts +194 -0
- package/dist/strategies/CodingTestReviewStrategy.js +681 -0
- package/dist/strategies/CodingTestReviewStrategy.js.map +1 -0
- package/dist/strategies/ConsolidatedReviewStrategy.d.ts +25 -0
- package/dist/strategies/ConsolidatedReviewStrategy.js +45 -0
- package/dist/strategies/ConsolidatedReviewStrategy.js.map +1 -0
- package/dist/strategies/ExtractPatternsReviewStrategy.d.ts +30 -0
- package/dist/strategies/ExtractPatternsReviewStrategy.js +51 -0
- package/dist/strategies/ExtractPatternsReviewStrategy.js.map +1 -0
- package/dist/strategies/MultiPassReviewStrategy.d.ts +86 -0
- package/dist/strategies/MultiPassReviewStrategy.js +590 -0
- package/dist/strategies/MultiPassReviewStrategy.js.map +1 -0
- package/dist/strategies/ReviewStrategy.d.ts +45 -0
- package/dist/strategies/ReviewStrategy.js +24 -0
- package/dist/strategies/ReviewStrategy.js.map +1 -0
- package/dist/strategies/StrategyFactory.d.ts +19 -0
- package/dist/strategies/StrategyFactory.js +72 -0
- package/dist/strategies/StrategyFactory.js.map +1 -0
- package/{src/strategies/index.ts → dist/strategies/index.d.ts} +0 -1
- package/dist/strategies/index.js +30 -0
- package/dist/strategies/index.js.map +1 -0
- package/dist/tokenizers/baseTokenizer.d.ts +25 -0
- package/dist/tokenizers/baseTokenizer.js +48 -0
- package/dist/tokenizers/baseTokenizer.js.map +1 -0
- package/dist/tokenizers/gptTokenizer.d.ts +7 -0
- package/dist/tokenizers/gptTokenizer.js +28 -0
- package/dist/tokenizers/gptTokenizer.js.map +1 -0
- package/{src/tokenizers/index.ts → dist/tokenizers/index.d.ts} +0 -1
- package/dist/tokenizers/index.js +24 -0
- package/dist/tokenizers/index.js.map +1 -0
- package/dist/types/apiResponses.d.ts +39 -0
- package/dist/types/apiResponses.js +9 -0
- package/dist/types/apiResponses.js.map +1 -0
- package/dist/types/cli.d.ts +22 -0
- package/dist/types/cli.js +3 -0
- package/dist/types/cli.js.map +1 -0
- package/{src/types/common.ts → dist/types/common.d.ts} +2 -19
- package/dist/types/common.js +14 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/configuration.d.ts +682 -0
- package/dist/types/configuration.js +65 -0
- package/dist/types/configuration.js.map +1 -0
- package/dist/types/review.d.ts +318 -0
- package/dist/types/review.js +8 -0
- package/dist/types/review.js.map +1 -0
- package/dist/types/reviewSchema.d.ts +543 -0
- package/{src/types/reviewSchema.ts → dist/types/reviewSchema.js} +44 -104
- package/dist/types/reviewSchema.js.map +1 -0
- package/dist/types/structuredReview.d.ts +119 -0
- package/dist/types/structuredReview.js +6 -0
- package/dist/types/structuredReview.js.map +1 -0
- package/dist/types/tokenAnalysis.d.ts +44 -0
- package/dist/types/tokenAnalysis.js +4 -0
- package/dist/types/tokenAnalysis.js.map +1 -0
- package/dist/utils/FileReader.d.ts +33 -0
- package/dist/utils/FileReader.js +88 -0
- package/dist/utils/FileReader.js.map +1 -0
- package/dist/utils/FileWriter.d.ts +26 -0
- package/dist/utils/FileWriter.js +76 -0
- package/dist/utils/FileWriter.js.map +1 -0
- package/dist/utils/PathGenerator.d.ts +30 -0
- package/dist/utils/PathGenerator.js +82 -0
- package/dist/utils/PathGenerator.js.map +1 -0
- package/dist/utils/api/apiUtils.d.ts +3 -0
- package/dist/utils/api/apiUtils.js +20 -0
- package/dist/utils/api/apiUtils.js.map +1 -0
- package/dist/utils/api/index.js +18 -0
- package/dist/utils/api/index.js.map +1 -0
- package/dist/utils/apiErrorHandler.d.ts +130 -0
- package/dist/utils/apiErrorHandler.js +256 -0
- package/dist/utils/apiErrorHandler.js.map +1 -0
- package/dist/utils/ciDataCollector.d.ts +51 -0
- package/dist/utils/ciDataCollector.js +197 -0
- package/dist/utils/ciDataCollector.js.map +1 -0
- package/dist/utils/codingTestConfigLoader.d.ts +66 -0
- package/dist/utils/codingTestConfigLoader.js +420 -0
- package/dist/utils/codingTestConfigLoader.js.map +1 -0
- package/dist/utils/dependencies/aiDependencyAnalyzer.d.ts +30 -0
- package/dist/utils/dependencies/aiDependencyAnalyzer.js +343 -0
- package/dist/utils/dependencies/aiDependencyAnalyzer.js.map +1 -0
- package/dist/utils/detection/frameworkDetector.d.ts +43 -0
- package/dist/utils/detection/frameworkDetector.js +850 -0
- package/dist/utils/detection/frameworkDetector.js.map +1 -0
- package/{src/utils/detection/index.ts → dist/utils/detection/index.d.ts} +0 -1
- package/dist/utils/detection/index.js +28 -0
- package/dist/utils/detection/index.js.map +1 -0
- package/dist/utils/detection/projectTypeDetector.d.ts +27 -0
- package/dist/utils/detection/projectTypeDetector.js +469 -0
- package/dist/utils/detection/projectTypeDetector.js.map +1 -0
- package/dist/utils/diagramGenerator.d.ts +49 -0
- package/dist/utils/diagramGenerator.js +218 -0
- package/dist/utils/diagramGenerator.js.map +1 -0
- package/dist/utils/errorLogger.d.ts +24 -0
- package/dist/utils/errorLogger.js +59 -0
- package/dist/utils/errorLogger.js.map +1 -0
- package/dist/utils/estimationUtils.d.ts +139 -0
- package/dist/utils/estimationUtils.js +329 -0
- package/dist/utils/estimationUtils.js.map +1 -0
- package/dist/utils/fileFilters.d.ts +72 -0
- package/dist/utils/fileFilters.js +338 -0
- package/dist/utils/fileFilters.js.map +1 -0
- package/dist/utils/fileSystem.d.ts +22 -0
- package/dist/utils/fileSystem.js +45 -0
- package/dist/utils/fileSystem.js.map +1 -0
- package/{src/utils/index.ts → dist/utils/index.d.ts} +0 -14
- package/dist/utils/index.js +52 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +77 -0
- package/dist/utils/logger.js +271 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/pathValidator.d.ts +40 -0
- package/dist/utils/pathValidator.js +98 -0
- package/dist/utils/pathValidator.js.map +1 -0
- package/{src/utils/priorityFilter.ts → dist/utils/priorityFilter.d.ts} +1 -26
- package/dist/utils/priorityFilter.js +54 -0
- package/dist/utils/priorityFilter.js.map +1 -0
- package/dist/utils/projectDocs.d.ts +47 -0
- package/dist/utils/projectDocs.js +158 -0
- package/dist/utils/projectDocs.js.map +1 -0
- package/dist/utils/promptPaths.d.ts +6 -0
- package/dist/utils/promptPaths.js +33 -0
- package/dist/utils/promptPaths.js.map +1 -0
- package/dist/utils/promptTemplateManager.d.ts +34 -0
- package/dist/utils/promptTemplateManager.js +141 -0
- package/dist/utils/promptTemplateManager.js.map +1 -0
- package/dist/utils/review/consolidateReview.d.ts +15 -0
- package/dist/utils/review/consolidateReview.js +481 -0
- package/dist/utils/review/consolidateReview.js.map +1 -0
- package/dist/utils/review/fixDisplay.d.ts +20 -0
- package/dist/utils/review/fixDisplay.js +84 -0
- package/dist/utils/review/fixDisplay.js.map +1 -0
- package/dist/utils/review/fixImplementation.d.ts +28 -0
- package/dist/utils/review/fixImplementation.js +60 -0
- package/dist/utils/review/fixImplementation.js.map +1 -0
- package/dist/utils/review/index.d.ts +13 -0
- package/dist/utils/review/index.js +50 -0
- package/dist/utils/review/index.js.map +1 -0
- package/dist/utils/review/interactiveProcessing.d.ts +25 -0
- package/dist/utils/review/interactiveProcessing.js +251 -0
- package/dist/utils/review/interactiveProcessing.js.map +1 -0
- package/dist/utils/review/progressTracker.d.ts +106 -0
- package/dist/utils/review/progressTracker.js +227 -0
- package/dist/utils/review/progressTracker.js.map +1 -0
- package/dist/utils/review/reviewExtraction.d.ts +31 -0
- package/dist/utils/review/reviewExtraction.js +324 -0
- package/dist/utils/review/reviewExtraction.js.map +1 -0
- package/dist/utils/review/types.d.ts +45 -0
- package/dist/utils/review/types.js +18 -0
- package/dist/utils/review/types.js.map +1 -0
- package/{src/utils/reviewActionHandler.ts → dist/utils/reviewActionHandler.d.ts} +0 -2
- package/dist/utils/reviewActionHandler.js +34 -0
- package/dist/utils/reviewActionHandler.js.map +1 -0
- package/dist/utils/reviewParser.d.ts +34 -0
- package/dist/utils/reviewParser.js +218 -0
- package/dist/utils/reviewParser.js.map +1 -0
- package/dist/utils/sanitizer.d.ts +82 -0
- package/dist/utils/sanitizer.js +239 -0
- package/dist/utils/sanitizer.js.map +1 -0
- package/dist/utils/smartFileSelector.d.ts +50 -0
- package/dist/utils/smartFileSelector.js +261 -0
- package/dist/utils/smartFileSelector.js.map +1 -0
- package/dist/utils/templateLoader.d.ts +44 -0
- package/dist/utils/templateLoader.js +431 -0
- package/dist/utils/templateLoader.js.map +1 -0
- package/dist/utils/treeGenerator.d.ts +12 -0
- package/dist/utils/treeGenerator.js +133 -0
- package/dist/utils/treeGenerator.js.map +1 -0
- package/package.json +5 -2
- package/.cr-aia.yml +0 -23
- package/.crignore +0 -0
- package/docs/opt-in-full-context.md +0 -27
- package/reports/cr-cr-aia-17-11-2025-20-13.md +0 -354
- package/src/analysis/FindingsExtractor.ts +0 -431
- package/src/analysis/ai-detection/analyzers/BaseAnalyzer.ts +0 -267
- package/src/analysis/ai-detection/analyzers/DocumentationAnalyzer.ts +0 -622
- package/src/analysis/ai-detection/analyzers/GitHistoryAnalyzer.ts +0 -430
- package/src/analysis/ai-detection/core/AIDetectionEngine.ts +0 -467
- package/src/analysis/ai-detection/types/DetectionTypes.ts +0 -406
- package/src/analysis/ai-detection/utils/SubmissionConverter.ts +0 -390
- package/src/analysis/context/ReviewContext.ts +0 -378
- package/src/analysis/tokens/TokenAnalyzer.ts +0 -747
- package/src/clients/base/abstractClient.ts +0 -190
- package/src/clients/base/httpClient.ts +0 -160
- package/src/clients/base/modelDetection.ts +0 -107
- package/src/clients/base/responseProcessor.ts +0 -586
- package/src/clients/factory/clientFactory.ts +0 -55
- package/src/clients/implementations/openRouterClient.ts +0 -413
- package/src/clients/openRouterClient.ts +0 -870
- package/src/clients/utils/directoryStructure.ts +0 -52
- package/src/clients/utils/languageDetection.ts +0 -44
- package/src/clients/utils/promptFormatter.ts +0 -182
- package/src/clients/utils/tokenCounter.ts +0 -297
- package/src/core/ApiClientSelector.ts +0 -37
- package/src/core/ConfigurationService.ts +0 -591
- package/src/core/ConsolidationService.ts +0 -423
- package/src/core/InteractiveDisplayManager.ts +0 -81
- package/src/core/OutputManager.ts +0 -275
- package/src/core/ReviewGenerator.ts +0 -140
- package/src/core/fileDiscovery.ts +0 -237
- package/src/core/handlers/EstimationHandler.ts +0 -104
- package/src/core/handlers/FileProcessingHandler.ts +0 -210
- package/src/core/handlers/OutputHandler.ts +0 -125
- package/src/core/handlers/ReviewExecutor.ts +0 -104
- package/src/core/reviewOrchestrator.ts +0 -333
- package/src/core/utils/ModelInfoUtils.ts +0 -56
- package/src/formatters/utils/IssueFormatters.ts +0 -83
- package/src/formatters/utils/JsonFormatter.ts +0 -77
- package/src/formatters/utils/MarkdownFormatters.ts +0 -609
- package/src/formatters/utils/MetadataFormatter.ts +0 -269
- package/src/formatters/utils/ModelInfoExtractor.ts +0 -115
- package/src/index.ts +0 -25
- package/src/plugins/PluginInterface.ts +0 -50
- package/src/plugins/PluginManager.ts +0 -126
- package/src/prompts/PromptManager.ts +0 -69
- package/src/prompts/cache/PromptCache.ts +0 -50
- package/src/prompts/promptText/common/variables/css-frameworks.json +0 -33
- package/src/prompts/promptText/common/variables/framework-versions.json +0 -45
- package/src/prompts/promptText/frameworks/react/comprehensive.hbs +0 -19
- package/src/prompts/promptText/languages/css/comprehensive.hbs +0 -18
- package/src/prompts/promptText/languages/generic/comprehensive.hbs +0 -20
- package/src/prompts/promptText/languages/html/comprehensive.hbs +0 -18
- package/src/prompts/promptText/languages/javascript/comprehensive.hbs +0 -18
- package/src/prompts/promptText/languages/python/comprehensive.hbs +0 -18
- package/src/prompts/promptText/languages/typescript/comprehensive.hbs +0 -18
- package/src/runtime/auth/service.ts +0 -58
- package/src/runtime/auth/session.ts +0 -103
- package/src/runtime/auth/types.ts +0 -11
- package/src/runtime/cliEntry.ts +0 -214
- package/src/runtime/debug/logManager.ts +0 -37
- package/src/runtime/errors.ts +0 -13
- package/src/runtime/fileCollector.ts +0 -495
- package/src/runtime/manifest.ts +0 -64
- package/src/runtime/openrouterProxy.ts +0 -45
- package/src/runtime/preprod/webCheck.ts +0 -104
- package/src/runtime/proxyConfig.ts +0 -94
- package/src/runtime/proxyEnvironment.ts +0 -71
- package/src/runtime/reportMerge.ts +0 -102
- package/src/runtime/reporting/markdownReportBuilder.ts +0 -138
- package/src/runtime/reporting/reportDataCollector.ts +0 -234
- package/src/runtime/reporting/summaryGenerator.ts +0 -86
- package/src/runtime/reviewPipeline.ts +0 -200
- package/src/runtime/runAiCodeReview.ts +0 -308
- package/src/runtime/runtimeConfig.ts +0 -5
- package/src/runtime/ui/Layout.tsx +0 -57
- package/src/runtime/ui/RuntimeApp.tsx +0 -262
- package/src/runtime/ui/inkModules.ts +0 -73
- package/src/runtime/ui/screens/AuthScreen.tsx +0 -128
- package/src/runtime/ui/screens/ModeSelection.tsx +0 -185
- package/src/runtime/ui/screens/ProgressScreen.tsx +0 -110
- package/src/runtime/ui/screens/ResultsScreen.tsx +0 -103
- package/src/strategies/ArchitecturalReviewStrategy.ts +0 -54
- package/src/strategies/CodingTestReviewStrategy.ts +0 -920
- package/src/strategies/ConsolidatedReviewStrategy.ts +0 -59
- package/src/strategies/ExtractPatternsReviewStrategy.ts +0 -64
- package/src/strategies/MultiPassReviewStrategy.ts +0 -785
- package/src/strategies/ReviewStrategy.ts +0 -64
- package/src/strategies/StrategyFactory.ts +0 -79
- package/src/tokenizers/baseTokenizer.ts +0 -61
- package/src/tokenizers/gptTokenizer.ts +0 -27
- package/src/types/apiResponses.ts +0 -40
- package/src/types/cli.ts +0 -24
- package/src/types/configuration.ts +0 -201
- package/src/types/handlebars.d.ts +0 -5
- package/src/types/patch.d.ts +0 -25
- package/src/types/review.ts +0 -312
- package/src/types/reviewContext.d.ts +0 -65
- package/src/types/structuredReview.ts +0 -167
- package/src/types/tokenAnalysis.ts +0 -56
- package/src/utils/FileReader.ts +0 -93
- package/src/utils/FileWriter.ts +0 -76
- package/src/utils/PathGenerator.ts +0 -97
- package/src/utils/api/apiUtils.ts +0 -14
- package/src/utils/apiErrorHandler.ts +0 -287
- package/src/utils/ciDataCollector.ts +0 -252
- package/src/utils/codingTestConfigLoader.ts +0 -466
- package/src/utils/dependencies/aiDependencyAnalyzer.ts +0 -454
- package/src/utils/detection/frameworkDetector.ts +0 -879
- package/src/utils/detection/projectTypeDetector.ts +0 -518
- package/src/utils/diagramGenerator.ts +0 -206
- package/src/utils/errorLogger.ts +0 -60
- package/src/utils/estimationUtils.ts +0 -407
- package/src/utils/fileFilters.ts +0 -373
- package/src/utils/fileSystem.ts +0 -57
- package/src/utils/logger.ts +0 -290
- package/src/utils/pathValidator.ts +0 -98
- package/src/utils/projectDocs.ts +0 -189
- package/src/utils/promptPaths.ts +0 -29
- package/src/utils/promptTemplateManager.ts +0 -157
- package/src/utils/review/consolidateReview.ts +0 -553
- package/src/utils/review/fixDisplay.ts +0 -100
- package/src/utils/review/fixImplementation.ts +0 -61
- package/src/utils/review/index.ts +0 -36
- package/src/utils/review/interactiveProcessing.ts +0 -294
- package/src/utils/review/progressTracker.ts +0 -296
- package/src/utils/review/reviewExtraction.ts +0 -382
- package/src/utils/review/types.ts +0 -46
- package/src/utils/reviewParser.ts +0 -253
- package/src/utils/sanitizer.ts +0 -238
- package/src/utils/smartFileSelector.ts +0 -255
- package/src/utils/templateLoader.ts +0 -514
- package/src/utils/treeGenerator.ts +0 -153
- package/tsconfig.build.json +0 -14
- package/tsconfig.json +0 -59
- /package/{src/utils/api/index.ts → dist/utils/api/index.d.ts} +0 -0
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Token and cost estimation handler for code review
|
|
3
|
-
*
|
|
4
|
-
* This module handles token usage estimation and cost analysis for code review
|
|
5
|
-
* using the TokenAnalyzer plus legacy fallbacks.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import type { ReviewOptions } from '../../types/review';
|
|
9
|
-
import { estimateFromFilePaths } from '../../utils/estimationUtils';
|
|
10
|
-
import logger from '../../utils/logger';
|
|
11
|
-
import type { FileInfo } from '../fileDiscovery';
|
|
12
|
-
import { getProviderDisplayInfo } from '../utils/ModelInfoUtils';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Perform token usage and cost estimation for review
|
|
16
|
-
*
|
|
17
|
-
* @param fileInfos Array of file information objects
|
|
18
|
-
* @param filesToReview Array of file paths
|
|
19
|
-
* @param options Review options
|
|
20
|
-
* @param modelName Model name to use for estimation
|
|
21
|
-
* @returns Promise that resolves when estimation is complete
|
|
22
|
-
*/
|
|
23
|
-
export async function performEstimation(
|
|
24
|
-
fileInfos: FileInfo[],
|
|
25
|
-
filesToReview: string[],
|
|
26
|
-
options: ReviewOptions,
|
|
27
|
-
modelName: string,
|
|
28
|
-
): Promise<void> {
|
|
29
|
-
logger.info('Calculating token usage and cost estimates...');
|
|
30
|
-
|
|
31
|
-
try {
|
|
32
|
-
// Ensure we have at least some files to analyze
|
|
33
|
-
if (fileInfos.length === 0) {
|
|
34
|
-
throw new Error(
|
|
35
|
-
'No files could be read for review. Please check file permissions and paths.',
|
|
36
|
-
);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// Use the new TokenAnalyzer for more comprehensive analysis
|
|
40
|
-
const { TokenAnalyzer } = await import('../../analysis/tokens');
|
|
41
|
-
const { estimateMultiPassReviewCost } = await import('../../utils/estimationUtils');
|
|
42
|
-
|
|
43
|
-
const tokenAnalysisOptions = {
|
|
44
|
-
reviewType: options.type,
|
|
45
|
-
modelName: modelName,
|
|
46
|
-
contextMaintenanceFactor: options.contextMaintenanceFactor || 0.15,
|
|
47
|
-
forceSinglePass: options.forceSinglePass,
|
|
48
|
-
batchTokenLimit: options.batchTokenLimit,
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
const tokenAnalysis = TokenAnalyzer.analyzeFiles(fileInfos, tokenAnalysisOptions);
|
|
52
|
-
|
|
53
|
-
// Get cost estimate based on token analysis
|
|
54
|
-
const costEstimation = await estimateMultiPassReviewCost(fileInfos, options.type, modelName, {
|
|
55
|
-
passCount: tokenAnalysis.chunkingRecommendation.chunkingRecommended
|
|
56
|
-
? tokenAnalysis.estimatedPassesNeeded
|
|
57
|
-
: 1,
|
|
58
|
-
contextMaintenanceFactor: tokenAnalysisOptions.contextMaintenanceFactor,
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
// Get provider and model information
|
|
62
|
-
const providerInfo = getProviderDisplayInfo(modelName);
|
|
63
|
-
|
|
64
|
-
// Display a summary without file details
|
|
65
|
-
logger.info(
|
|
66
|
-
`\n=== Token Usage and Cost Estimation ===\n\nProvider: ${providerInfo.provider}\nModel: ${providerInfo.model}\nFiles: ${tokenAnalysis.fileCount} (${(tokenAnalysis.totalSizeInBytes / 1024 / 1024).toFixed(2)} MB total)\n\nToken Information:\n Input Tokens: ${costEstimation.inputTokens.toLocaleString()}\n Estimated Output Tokens: ${costEstimation.outputTokens.toLocaleString()}\n Total Tokens: ${costEstimation.totalTokens.toLocaleString()}\n Context Window Size: ${tokenAnalysis.contextWindowSize.toLocaleString()}\n Context Utilization: ${((tokenAnalysis.estimatedTotalTokens / tokenAnalysis.contextWindowSize) * 100).toFixed(2)}%\n\n${
|
|
67
|
-
tokenAnalysis.chunkingRecommendation.chunkingRecommended
|
|
68
|
-
? `Multi-Pass Analysis:\n Chunking Required: Yes\n Reason: ${tokenAnalysis.chunkingRecommendation.reason || 'Content exceeds context window'}\n Estimated Passes: ${tokenAnalysis.estimatedPassesNeeded}`
|
|
69
|
-
: `Multi-Pass Analysis:\n Chunking Required: No\n Reason: ${tokenAnalysis.chunkingRecommendation.reason || 'Content fits within context window'}`
|
|
70
|
-
}\n\nEstimated Cost: ${costEstimation.formattedCost || 'Unable to estimate cost'}\n\nNote: This is an estimate based on approximate token counts and may vary\n based on the actual content and model behavior.\n`,
|
|
71
|
-
);
|
|
72
|
-
|
|
73
|
-
// If chunking is recommended, inform the user that it will be automatic
|
|
74
|
-
if (tokenAnalysis.chunkingRecommendation.chunkingRecommended) {
|
|
75
|
-
logger.info(
|
|
76
|
-
'\nImportant: Multi-pass review will be automatically enabled when needed. No flag required.',
|
|
77
|
-
);
|
|
78
|
-
|
|
79
|
-
// If forceSinglePass is enabled, inform the user
|
|
80
|
-
if (options.forceSinglePass) {
|
|
81
|
-
logger.info(
|
|
82
|
-
'\nNote: --force-single-pass is enabled, which will override the chunking recommendation.',
|
|
83
|
-
);
|
|
84
|
-
logger.info(
|
|
85
|
-
" This may result in token limit errors if the content exceeds the model's context window.",
|
|
86
|
-
);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
} catch (_error) {
|
|
90
|
-
// Fall back to the legacy estimator if TokenAnalyzer fails
|
|
91
|
-
logger.warn('Advanced token analysis failed, falling back to basic estimation');
|
|
92
|
-
|
|
93
|
-
// Estimate token usage and cost using the legacy estimator
|
|
94
|
-
const estimation = await estimateFromFilePaths(filesToReview, options.type, modelName);
|
|
95
|
-
|
|
96
|
-
// Get provider and model information
|
|
97
|
-
const providerInfo = getProviderDisplayInfo(modelName);
|
|
98
|
-
|
|
99
|
-
// Display the estimation results without file details
|
|
100
|
-
logger.info(
|
|
101
|
-
`\n=== Token Usage and Cost Estimation ===\n\nReview Type: ${options.type}\nProvider: ${providerInfo.provider}\nModel: ${providerInfo.model}\nFiles: ${estimation.fileCount} (${(estimation.totalFileSize / 1024 / 1024).toFixed(2)} MB total)\n\nToken Usage:\n Input Tokens: ${estimation.inputTokens.toLocaleString()}\n Estimated Output Tokens: ${estimation.outputTokens.toLocaleString()}\n Total Tokens: ${estimation.totalTokens.toLocaleString()}\n\nEstimated Cost: ${estimation.formattedCost}\n\nNote: This is an estimate based on approximate token counts and may vary\n based on the actual content and model behavior.\n`,
|
|
102
|
-
);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview File processing handler for code review
|
|
3
|
-
*
|
|
4
|
-
* This module handles file discovery, content reading, and error processing
|
|
5
|
-
* for code review operations.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import type { ReviewOptions } from '../../types/review';
|
|
9
|
-
import logger from '../../utils/logger';
|
|
10
|
-
import { discoverFiles, type FileInfo, readFilesContent } from '../fileDiscovery';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Discover files for review based on target path and options
|
|
14
|
-
*
|
|
15
|
-
* @param target Path to file or directory to review
|
|
16
|
-
* @param projectPath Current working directory
|
|
17
|
-
* @param options Review options
|
|
18
|
-
* @returns Array of file paths to review
|
|
19
|
-
*/
|
|
20
|
-
export async function discoverFilesForReview(
|
|
21
|
-
target: string,
|
|
22
|
-
projectPath: string,
|
|
23
|
-
options: ReviewOptions,
|
|
24
|
-
): Promise<string[]> {
|
|
25
|
-
// Ensure target is defined with a default of "." for current directory
|
|
26
|
-
const effectiveTarget = target || '.';
|
|
27
|
-
|
|
28
|
-
if (options.targetFileList && options.targetFileList.length > 0) {
|
|
29
|
-
const uniqueFiles = Array.from(new Set(options.targetFileList));
|
|
30
|
-
logger.info(`Using provided target file list (${uniqueFiles.length} entries)`);
|
|
31
|
-
return uniqueFiles;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
try {
|
|
35
|
-
const filesToReview = await discoverFiles(effectiveTarget, projectPath, options.includeTests);
|
|
36
|
-
|
|
37
|
-
// Log the number of files discovered
|
|
38
|
-
logger.info(`Discovered ${filesToReview.length} files to review`);
|
|
39
|
-
|
|
40
|
-
if (filesToReview.length === 0) {
|
|
41
|
-
logger.warn(`No files found for review in ${effectiveTarget}`);
|
|
42
|
-
logger.info('This could be due to:');
|
|
43
|
-
logger.info('1. The path does not exist or is not accessible');
|
|
44
|
-
logger.info('2. All files are excluded by .gitignore patterns');
|
|
45
|
-
logger.info('3. There are no supported file types in the specified path');
|
|
46
|
-
|
|
47
|
-
if (!options.includeTests) {
|
|
48
|
-
logger.info('4. Test files are excluded by default. Use --include-tests to include them');
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// In debug mode, list the first few files discovered
|
|
53
|
-
if (options.debug && filesToReview.length > 0) {
|
|
54
|
-
const maxFilesToLog = 10;
|
|
55
|
-
logger.debug(`First ${Math.min(filesToReview.length, maxFilesToLog)} files to review:`);
|
|
56
|
-
for (let i = 0; i < Math.min(filesToReview.length, maxFilesToLog); i++) {
|
|
57
|
-
logger.debug(` - ${filesToReview[i]}`);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
if (filesToReview.length > maxFilesToLog) {
|
|
61
|
-
logger.debug(` ... and ${filesToReview.length - maxFilesToLog} more files`);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return filesToReview;
|
|
66
|
-
} catch (error) {
|
|
67
|
-
// Handle file discovery errors
|
|
68
|
-
logger.error(
|
|
69
|
-
`Failed to discover files for review: ${
|
|
70
|
-
error instanceof Error ? error.message : String(error)
|
|
71
|
-
}`,
|
|
72
|
-
);
|
|
73
|
-
|
|
74
|
-
if (error instanceof Error && error.stack) {
|
|
75
|
-
logger.debug(`Error stack trace: ${error.stack}`);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
throw new Error(
|
|
79
|
-
`Could not discover files to review in ${effectiveTarget}. Please verify the path exists and is accessible.`,
|
|
80
|
-
);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Read content of discovered files
|
|
86
|
-
*
|
|
87
|
-
* @param filesToReview Array of file paths to read
|
|
88
|
-
* @param projectPath Current working directory
|
|
89
|
-
* @returns Object containing file infos and any errors encountered
|
|
90
|
-
*/
|
|
91
|
-
export async function readFilesForReview(
|
|
92
|
-
filesToReview: string[],
|
|
93
|
-
projectPath: string,
|
|
94
|
-
): Promise<{ fileInfos: FileInfo[]; errors: Array<{ path: string; error: string }> }> {
|
|
95
|
-
try {
|
|
96
|
-
logger.info('Reading file contents...');
|
|
97
|
-
const result = await readFilesContent(filesToReview, projectPath);
|
|
98
|
-
|
|
99
|
-
// Log statistics about the read operation
|
|
100
|
-
logger.info(
|
|
101
|
-
`Successfully read ${result.fileInfos.length} out of ${filesToReview.length} files`,
|
|
102
|
-
);
|
|
103
|
-
|
|
104
|
-
// If we have errors reading files, report them but continue
|
|
105
|
-
if (result.errors.length > 0) {
|
|
106
|
-
logger.warn(`Failed to read ${result.errors.length} file(s):`);
|
|
107
|
-
|
|
108
|
-
// Log the first 10 errors
|
|
109
|
-
const maxErrorsToLog = 10;
|
|
110
|
-
result.errors.slice(0, maxErrorsToLog).forEach((error) => {
|
|
111
|
-
logger.warn(` ${error.path}: ${error.error}`);
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
// If there are more errors, just mention the count
|
|
115
|
-
if (result.errors.length > maxErrorsToLog) {
|
|
116
|
-
logger.warn(` ... and ${result.errors.length - maxErrorsToLog} more errors`);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// Ensure we have at least some files to review
|
|
121
|
-
if (result.fileInfos.length === 0) {
|
|
122
|
-
const errorMessage = 'No files could be read for review.';
|
|
123
|
-
logger.error(errorMessage);
|
|
124
|
-
|
|
125
|
-
// Provide more detailed guidance based on the errors
|
|
126
|
-
if (result.errors.length > 0) {
|
|
127
|
-
logger.error('Errors encountered while reading files:');
|
|
128
|
-
const commonErrorPatterns = {
|
|
129
|
-
permission: ['permission denied', 'EACCES'],
|
|
130
|
-
notFound: ['no such file', 'ENOENT'],
|
|
131
|
-
encoding: ['encoding', 'invalid byte', 'character'],
|
|
132
|
-
size: ['too large', 'exceeds', 'size limit'],
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
// Categorize errors to provide better guidance
|
|
136
|
-
const categorizedErrors = {
|
|
137
|
-
permission: 0,
|
|
138
|
-
notFound: 0,
|
|
139
|
-
encoding: 0,
|
|
140
|
-
size: 0,
|
|
141
|
-
other: 0,
|
|
142
|
-
};
|
|
143
|
-
|
|
144
|
-
result.errors.forEach((error) => {
|
|
145
|
-
const errorLowerCase = error.error.toLowerCase();
|
|
146
|
-
let categorized = false;
|
|
147
|
-
|
|
148
|
-
for (const [category, patterns] of Object.entries(commonErrorPatterns)) {
|
|
149
|
-
if (patterns.some((pattern) => errorLowerCase.includes(pattern.toLowerCase()))) {
|
|
150
|
-
categorizedErrors[category as keyof typeof categorizedErrors]++;
|
|
151
|
-
categorized = true;
|
|
152
|
-
break;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
if (!categorized) {
|
|
157
|
-
categorizedErrors.other++;
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
// Provide guidance based on error categories
|
|
162
|
-
if (categorizedErrors.permission > 0) {
|
|
163
|
-
logger.error(
|
|
164
|
-
` - ${categorizedErrors.permission} file(s) could not be read due to permission issues. Check file permissions.`,
|
|
165
|
-
);
|
|
166
|
-
}
|
|
167
|
-
if (categorizedErrors.notFound > 0) {
|
|
168
|
-
logger.error(
|
|
169
|
-
` - ${categorizedErrors.notFound} file(s) were not found. The file list may be out of date.`,
|
|
170
|
-
);
|
|
171
|
-
}
|
|
172
|
-
if (categorizedErrors.encoding > 0) {
|
|
173
|
-
logger.error(
|
|
174
|
-
` - ${categorizedErrors.encoding} file(s) had encoding issues. These might be binary files not suitable for review.`,
|
|
175
|
-
);
|
|
176
|
-
}
|
|
177
|
-
if (categorizedErrors.size > 0) {
|
|
178
|
-
logger.error(` - ${categorizedErrors.size} file(s) were too large to process.`);
|
|
179
|
-
}
|
|
180
|
-
if (categorizedErrors.other > 0) {
|
|
181
|
-
logger.error(` - ${categorizedErrors.other} file(s) failed due to other issues.`);
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
throw new Error(`${errorMessage} Please check file permissions and paths.`);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
return result;
|
|
189
|
-
} catch (error) {
|
|
190
|
-
// Handle file reading errors not caught by readFilesContent
|
|
191
|
-
if (error instanceof Error && error.message.includes('No files could be read')) {
|
|
192
|
-
// This is an error we created above, so just rethrow it
|
|
193
|
-
throw error;
|
|
194
|
-
}
|
|
195
|
-
// This is an unexpected error
|
|
196
|
-
logger.error(
|
|
197
|
-
`Unexpected error when reading file contents: ${
|
|
198
|
-
error instanceof Error ? error.message : String(error)
|
|
199
|
-
}`,
|
|
200
|
-
);
|
|
201
|
-
|
|
202
|
-
if (error instanceof Error && error.stack) {
|
|
203
|
-
logger.debug(`Error stack trace: ${error.stack}`);
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
throw new Error(
|
|
207
|
-
`Failed to read files for review: ${error instanceof Error ? error.message : String(error)}`,
|
|
208
|
-
);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Output handling for code review results
|
|
3
|
-
*
|
|
4
|
-
* This module handles saving and displaying code review results
|
|
5
|
-
* in different formats.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import * as path from 'node:path';
|
|
9
|
-
import type { ReviewOptions, ReviewResult } from '../../types/review';
|
|
10
|
-
import logger from '../../utils/logger';
|
|
11
|
-
import { displayReviewInteractively } from '../InteractiveDisplayManager';
|
|
12
|
-
import { saveReviewOutput } from '../OutputManager';
|
|
13
|
-
|
|
14
|
-
// Define TokenUsage interface for this module
|
|
15
|
-
interface TokenUsage {
|
|
16
|
-
input: number;
|
|
17
|
-
output: number;
|
|
18
|
-
total: number;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Handle review output based on options
|
|
23
|
-
*
|
|
24
|
-
* @param reviewResult Review result to handle
|
|
25
|
-
* @param options Review options
|
|
26
|
-
* @param outputBaseDir Base directory for output
|
|
27
|
-
* @returns Promise that resolves when output handling is complete
|
|
28
|
-
*/
|
|
29
|
-
export async function handleReviewOutput(
|
|
30
|
-
reviewResult: ReviewResult,
|
|
31
|
-
options: ReviewOptions,
|
|
32
|
-
outputBaseDir: string,
|
|
33
|
-
): Promise<void> {
|
|
34
|
-
// Save review output to file
|
|
35
|
-
if (options.output !== 'none') {
|
|
36
|
-
try {
|
|
37
|
-
const targetName = path.basename(options.target || '.');
|
|
38
|
-
const modelName = options.model || 'unknown-model';
|
|
39
|
-
|
|
40
|
-
const outputPath = await saveReviewOutput(
|
|
41
|
-
reviewResult,
|
|
42
|
-
options,
|
|
43
|
-
outputBaseDir,
|
|
44
|
-
modelName,
|
|
45
|
-
targetName,
|
|
46
|
-
);
|
|
47
|
-
|
|
48
|
-
logger.info(`Review saved to: ${outputPath}`);
|
|
49
|
-
|
|
50
|
-
// Display review interactively if requested
|
|
51
|
-
if (options.interactive) {
|
|
52
|
-
try {
|
|
53
|
-
await displayReviewInteractively(outputPath, process.cwd(), options);
|
|
54
|
-
} catch (error) {
|
|
55
|
-
logger.error(
|
|
56
|
-
`Failed to display review interactively: ${
|
|
57
|
-
error instanceof Error ? error.message : String(error)
|
|
58
|
-
}`,
|
|
59
|
-
);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
} catch (error) {
|
|
63
|
-
logger.error(
|
|
64
|
-
`Failed to save review output: ${error instanceof Error ? error.message : String(error)}`,
|
|
65
|
-
);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// Log completion message
|
|
70
|
-
logger.info('Review completed successfully');
|
|
71
|
-
|
|
72
|
-
// Log cost information if available
|
|
73
|
-
if (reviewResult.cost) {
|
|
74
|
-
// Use formattedCost if available, otherwise fall back to string representation
|
|
75
|
-
const costDisplay =
|
|
76
|
-
typeof reviewResult.cost === 'object' && reviewResult.cost.formattedCost
|
|
77
|
-
? reviewResult.cost.formattedCost
|
|
78
|
-
: reviewResult.cost;
|
|
79
|
-
logger.info(`Estimated cost: ${costDisplay}`);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// Log token usage if available
|
|
83
|
-
if ((reviewResult as any).tokenUsage) {
|
|
84
|
-
const { input, output, total } = (reviewResult as any).tokenUsage as TokenUsage;
|
|
85
|
-
logger.info(`Token usage: ${input} input + ${output} output = ${total} total`);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Create output directory for review
|
|
91
|
-
*
|
|
92
|
-
* @param projectPath Project path
|
|
93
|
-
* @param options Review options
|
|
94
|
-
* @returns Output base directory
|
|
95
|
-
*/
|
|
96
|
-
export function createOutputDirectory(
|
|
97
|
-
projectPath: string,
|
|
98
|
-
options: { outputDir?: string; configOutputDir?: string },
|
|
99
|
-
): string {
|
|
100
|
-
// Get the output directory from options, config, or default
|
|
101
|
-
const defaultOutputDir = 'cr-aia-docs';
|
|
102
|
-
const configOutputDir = options.configOutputDir || defaultOutputDir;
|
|
103
|
-
const outputDir = options.outputDir || configOutputDir;
|
|
104
|
-
|
|
105
|
-
// Basic security validation: prevent obvious path traversal attempts
|
|
106
|
-
if (outputDir.includes('..')) {
|
|
107
|
-
throw new Error('Output directory path cannot contain ".." for security reasons');
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// Determine if the path is absolute or relative
|
|
111
|
-
let outputBaseDir: string;
|
|
112
|
-
|
|
113
|
-
if (path.isAbsolute(outputDir)) {
|
|
114
|
-
outputBaseDir = outputDir;
|
|
115
|
-
} else {
|
|
116
|
-
outputBaseDir = path.resolve(projectPath, outputDir);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
// Log the output directory
|
|
120
|
-
if (options.outputDir) {
|
|
121
|
-
logger.info(`Using custom output directory: ${outputBaseDir}`);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
return outputBaseDir;
|
|
125
|
-
}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Review execution handler for code review
|
|
3
|
-
*
|
|
4
|
-
* This module handles the execution of code reviews using different strategies
|
|
5
|
-
* based on review type and options.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import * as path from 'node:path';
|
|
9
|
-
import type { TokenAnalysisResult } from '../../analysis/tokens';
|
|
10
|
-
import { StrategyFactory } from '../../strategies/StrategyFactory';
|
|
11
|
-
import type { ReviewOptions, ReviewResult } from '../../types/review';
|
|
12
|
-
import logger from '../../utils/logger';
|
|
13
|
-
import type { FileInfo } from '../fileDiscovery';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Execute code review using appropriate strategy
|
|
17
|
-
*
|
|
18
|
-
* @param fileInfos Array of file information objects
|
|
19
|
-
* @param options Review options
|
|
20
|
-
* @param apiClientConfig API client configuration
|
|
21
|
-
* @param projectDocs Project documentation
|
|
22
|
-
* @param semanticResult Semantic analysis result (if available)
|
|
23
|
-
* @param tokenAnalysis Token analysis result (if available)
|
|
24
|
-
* @returns Promise that resolves to review result
|
|
25
|
-
*/
|
|
26
|
-
export async function executeReview(
|
|
27
|
-
fileInfos: FileInfo[],
|
|
28
|
-
options: ReviewOptions,
|
|
29
|
-
apiClientConfig: { modelName: string; [key: string]: unknown },
|
|
30
|
-
projectDocs: unknown = null,
|
|
31
|
-
tokenAnalysis: TokenAnalysisResult | null = null,
|
|
32
|
-
): Promise<ReviewResult> {
|
|
33
|
-
// Determine if we need multi-pass review based on token analysis
|
|
34
|
-
const needsMultiPass = determineIfMultiPassNeeded(options, tokenAnalysis);
|
|
35
|
-
|
|
36
|
-
// Update options to enable multi-pass if needed
|
|
37
|
-
const effectiveOptions = { ...options };
|
|
38
|
-
if (needsMultiPass && !options.forceSinglePass) {
|
|
39
|
-
logger.info('Token analysis indicates multi-pass review is needed');
|
|
40
|
-
logger.info(
|
|
41
|
-
`Content has ${tokenAnalysis?.estimatedTotalTokens?.toLocaleString() || 'unknown'} tokens, exceeding model context window`,
|
|
42
|
-
);
|
|
43
|
-
effectiveOptions.multiPass = true;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// Create strategy based on review type and updated options
|
|
47
|
-
const strategy = StrategyFactory.createStrategy(effectiveOptions);
|
|
48
|
-
|
|
49
|
-
if (!strategy) {
|
|
50
|
-
throw new Error(`Unsupported review type: ${options.type}`);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
logger.info(`Using ${effectiveOptions.multiPass ? 'multi-pass' : options.type} review strategy`);
|
|
54
|
-
|
|
55
|
-
if (needsMultiPass && options.forceSinglePass) {
|
|
56
|
-
logger.warn('Multi-pass review recommended but single-pass forced by user');
|
|
57
|
-
logger.warn('This may result in token limit errors or incomplete reviews');
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// Get project name
|
|
61
|
-
const projectPath = process.cwd();
|
|
62
|
-
const projectName = path.basename(projectPath);
|
|
63
|
-
|
|
64
|
-
// Execute the review with effective options (may have multiPass enabled)
|
|
65
|
-
const reviewResult = await strategy.execute(
|
|
66
|
-
fileInfos,
|
|
67
|
-
projectName,
|
|
68
|
-
projectDocs as any,
|
|
69
|
-
effectiveOptions,
|
|
70
|
-
apiClientConfig as any,
|
|
71
|
-
);
|
|
72
|
-
|
|
73
|
-
return reviewResult;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Determine if multi-pass review is needed
|
|
78
|
-
*
|
|
79
|
-
* @param options Review options
|
|
80
|
-
* @param tokenAnalysis Token analysis result (if available)
|
|
81
|
-
* @returns Whether multi-pass review is needed
|
|
82
|
-
*/
|
|
83
|
-
export function determineIfMultiPassNeeded(
|
|
84
|
-
options: ReviewOptions,
|
|
85
|
-
tokenAnalysis: TokenAnalysisResult | null,
|
|
86
|
-
): boolean {
|
|
87
|
-
// If multi-pass is explicitly enabled, use it
|
|
88
|
-
if (options.multiPass) {
|
|
89
|
-
return true;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// If force single-pass is enabled, don't use multi-pass
|
|
93
|
-
if (options.forceSinglePass) {
|
|
94
|
-
return false;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// If we have token analysis, use its recommendation
|
|
98
|
-
if (tokenAnalysis?.chunkingRecommendation) {
|
|
99
|
-
return tokenAnalysis.chunkingRecommendation.chunkingRecommended;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// Default to false if we can't determine
|
|
103
|
-
return false;
|
|
104
|
-
}
|