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,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Utilities for implementing code review fixes
|
|
3
|
-
*
|
|
4
|
-
* This module provides functions for applying fixes from code review suggestions
|
|
5
|
-
* to the corresponding files. Currently it only provides a placeholder for future
|
|
6
|
-
* implementation as automatic fixes are not fully supported.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import readline from 'node:readline';
|
|
10
|
-
import type { FixSuggestion } from './types';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Create a readline interface for user input
|
|
14
|
-
*/
|
|
15
|
-
export function createReadlineInterface(): readline.Interface {
|
|
16
|
-
return readline.createInterface({
|
|
17
|
-
input: process.stdin,
|
|
18
|
-
output: process.stdout,
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Prompt the user for confirmation
|
|
24
|
-
* @param message Message to display to the user
|
|
25
|
-
* @returns Promise resolving to boolean indicating user's response
|
|
26
|
-
*/
|
|
27
|
-
export async function promptForConfirmation(message: string): Promise<boolean> {
|
|
28
|
-
const rl = createReadlineInterface();
|
|
29
|
-
|
|
30
|
-
return new Promise((resolve) => {
|
|
31
|
-
rl.question(`${message} (y/n): `, (answer) => {
|
|
32
|
-
rl.close();
|
|
33
|
-
resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* This function is a placeholder for future functionality.
|
|
40
|
-
* Currently, the AI code review tool does not automatically apply fixes.
|
|
41
|
-
* It only provides suggestions that developers must review and implement manually.
|
|
42
|
-
*
|
|
43
|
-
* @param suggestion The fix suggestion to apply
|
|
44
|
-
* @returns Always returns false as automatic fixes are not supported
|
|
45
|
-
*/
|
|
46
|
-
export async function applyFixToFile(suggestion: FixSuggestion): Promise<boolean> {
|
|
47
|
-
console.log(`\n⚠️ Automatic fixes are not supported.`);
|
|
48
|
-
console.log(
|
|
49
|
-
`The AI code review tool only provides suggestions that you must implement manually.`,
|
|
50
|
-
);
|
|
51
|
-
console.log(`Review the suggested fix and apply it yourself if appropriate.`);
|
|
52
|
-
|
|
53
|
-
if (suggestion.suggestedCode) {
|
|
54
|
-
console.log(`\nSuggested code:`);
|
|
55
|
-
console.log('```');
|
|
56
|
-
console.log(suggestion.suggestedCode);
|
|
57
|
-
console.log('```');
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return false;
|
|
61
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Index file for review action modules
|
|
3
|
-
*
|
|
4
|
-
* This module re-exports all the functionality from the review action modules
|
|
5
|
-
* to provide a clean interface for the main reviewActionHandler.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
// Export consolidation utilities
|
|
9
|
-
export { consolidateReview } from './consolidateReview';
|
|
10
|
-
// Export fix display utilities
|
|
11
|
-
export {
|
|
12
|
-
displayDetailedFixSuggestion,
|
|
13
|
-
displayFixSuggestions,
|
|
14
|
-
} from './fixDisplay';
|
|
15
|
-
|
|
16
|
-
// Export fix implementation utilities
|
|
17
|
-
export {
|
|
18
|
-
applyFixToFile,
|
|
19
|
-
createReadlineInterface,
|
|
20
|
-
promptForConfirmation,
|
|
21
|
-
} from './fixImplementation';
|
|
22
|
-
// Export interactive processing utilities
|
|
23
|
-
export {
|
|
24
|
-
displayReviewResults,
|
|
25
|
-
processReviewResults,
|
|
26
|
-
} from './interactiveProcessing';
|
|
27
|
-
// Export progress tracking utilities for multi-pass reviews
|
|
28
|
-
export { MultiPassProgressTracker } from './progressTracker';
|
|
29
|
-
// Export review extraction utilities
|
|
30
|
-
export {
|
|
31
|
-
extractFixSuggestions,
|
|
32
|
-
extractSection,
|
|
33
|
-
parseSuggestions,
|
|
34
|
-
} from './reviewExtraction';
|
|
35
|
-
// Export types
|
|
36
|
-
export * from './types';
|
|
@@ -1,294 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Utilities for interactive processing of code review fixes
|
|
3
|
-
*
|
|
4
|
-
* This module provides functions for interactively processing code review
|
|
5
|
-
* fixes, either by displaying them for manual implementation or by
|
|
6
|
-
* implementing them automatically with user confirmation.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import logger from '../logger';
|
|
10
|
-
import { displayStructuredReview, parseReviewJson } from '../reviewParser';
|
|
11
|
-
import { displayDetailedFixSuggestion, displayFixSuggestions } from './fixDisplay';
|
|
12
|
-
import { applyFixToFile, promptForConfirmation } from './fixImplementation';
|
|
13
|
-
import { extractFixSuggestions } from './reviewExtraction';
|
|
14
|
-
import { FixPriority, type FixSuggestion, type FixSummary, type SuggestionSummary } from './types';
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Process review results in non-interactive mode, just displaying recommendations
|
|
18
|
-
* @param reviewContent Content of the review
|
|
19
|
-
* @param projectPath Base path of the project
|
|
20
|
-
* @param priorityFilter Optional filter to show only specific priority issues (h, m, l, or a for all)
|
|
21
|
-
* @returns Summary of suggestions found
|
|
22
|
-
*/
|
|
23
|
-
export async function displayReviewResults(
|
|
24
|
-
reviewContent: string,
|
|
25
|
-
projectPath: string,
|
|
26
|
-
priorityFilter?: 'h' | 'm' | 'l' | 'a',
|
|
27
|
-
): Promise<SuggestionSummary> {
|
|
28
|
-
// First try to parse the review content as structured JSON
|
|
29
|
-
const parsedReview = parseReviewJson(reviewContent);
|
|
30
|
-
|
|
31
|
-
if (parsedReview) {
|
|
32
|
-
// If we have a structured review, display it using the structured format
|
|
33
|
-
displayStructuredReview(parsedReview);
|
|
34
|
-
|
|
35
|
-
// Convert the structured review to FixSuggestion format for compatibility
|
|
36
|
-
const highPrioritySuggestions: FixSuggestion[] = [];
|
|
37
|
-
const mediumPrioritySuggestions: FixSuggestion[] = [];
|
|
38
|
-
const lowPrioritySuggestions: FixSuggestion[] = [];
|
|
39
|
-
|
|
40
|
-
// Process each file and issue
|
|
41
|
-
parsedReview.review.files.forEach((file) => {
|
|
42
|
-
file.issues.forEach((issue) => {
|
|
43
|
-
const suggestion: FixSuggestion = {
|
|
44
|
-
priority:
|
|
45
|
-
issue.priority === 'HIGH'
|
|
46
|
-
? FixPriority.HIGH
|
|
47
|
-
: issue.priority === 'MEDIUM'
|
|
48
|
-
? FixPriority.MEDIUM
|
|
49
|
-
: FixPriority.LOW,
|
|
50
|
-
file: file.filePath,
|
|
51
|
-
description: issue.description,
|
|
52
|
-
currentCode: issue.currentCode,
|
|
53
|
-
suggestedCode: issue.suggestedCode,
|
|
54
|
-
lineNumbers: issue.location
|
|
55
|
-
? {
|
|
56
|
-
start: issue.location.startLine,
|
|
57
|
-
end: issue.location.endLine,
|
|
58
|
-
}
|
|
59
|
-
: undefined,
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
// Add to the appropriate array based on priority
|
|
63
|
-
if (suggestion.priority === FixPriority.HIGH) {
|
|
64
|
-
highPrioritySuggestions.push(suggestion);
|
|
65
|
-
} else if (suggestion.priority === FixPriority.MEDIUM) {
|
|
66
|
-
mediumPrioritySuggestions.push(suggestion);
|
|
67
|
-
} else {
|
|
68
|
-
lowPrioritySuggestions.push(suggestion);
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
const totalSuggestions =
|
|
74
|
-
highPrioritySuggestions.length +
|
|
75
|
-
mediumPrioritySuggestions.length +
|
|
76
|
-
lowPrioritySuggestions.length;
|
|
77
|
-
|
|
78
|
-
return {
|
|
79
|
-
highPrioritySuggestions,
|
|
80
|
-
mediumPrioritySuggestions,
|
|
81
|
-
lowPrioritySuggestions,
|
|
82
|
-
totalSuggestions,
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
// Fall back to the original extraction method if parsing fails
|
|
86
|
-
logger.info('Using legacy format for review results (no structured schema detected)');
|
|
87
|
-
|
|
88
|
-
// Extract all suggestions
|
|
89
|
-
const highPrioritySuggestions = await extractFixSuggestions(
|
|
90
|
-
reviewContent,
|
|
91
|
-
projectPath,
|
|
92
|
-
FixPriority.HIGH,
|
|
93
|
-
);
|
|
94
|
-
const mediumPrioritySuggestions = await extractFixSuggestions(
|
|
95
|
-
reviewContent,
|
|
96
|
-
projectPath,
|
|
97
|
-
FixPriority.MEDIUM,
|
|
98
|
-
);
|
|
99
|
-
const lowPrioritySuggestions = await extractFixSuggestions(
|
|
100
|
-
reviewContent,
|
|
101
|
-
projectPath,
|
|
102
|
-
FixPriority.LOW,
|
|
103
|
-
);
|
|
104
|
-
|
|
105
|
-
const totalSuggestions =
|
|
106
|
-
highPrioritySuggestions.length +
|
|
107
|
-
mediumPrioritySuggestions.length +
|
|
108
|
-
lowPrioritySuggestions.length;
|
|
109
|
-
|
|
110
|
-
// Display summary of all suggestions
|
|
111
|
-
logger.info('\n=== CODE REVIEW RECOMMENDATIONS ===');
|
|
112
|
-
logger.info(`Total issues found: ${totalSuggestions}`);
|
|
113
|
-
logger.info(`🟥 High priority: ${highPrioritySuggestions.length}`);
|
|
114
|
-
logger.info(`🟧 Medium priority: ${mediumPrioritySuggestions.length}`);
|
|
115
|
-
logger.info(`🟩 Low priority: ${lowPrioritySuggestions.length}`);
|
|
116
|
-
|
|
117
|
-
// Display instructions for interactive mode
|
|
118
|
-
logger.info('\nShowing ALL issues by default. To filter by priority, use these options:');
|
|
119
|
-
logger.info(' (h) High priority issues only');
|
|
120
|
-
logger.info(' (m) Medium priority issues only');
|
|
121
|
-
logger.info(' (l) Low priority issues only');
|
|
122
|
-
logger.info(' (a) All issues (default)');
|
|
123
|
-
logger.info('\nExample: cr-aia src --interactive h');
|
|
124
|
-
|
|
125
|
-
// Display suggestions based on priority filter
|
|
126
|
-
// If no filter is provided, show all issues by default
|
|
127
|
-
if (!priorityFilter || priorityFilter.toLowerCase() === 'a') {
|
|
128
|
-
// Show all issues
|
|
129
|
-
displayFixSuggestions(highPrioritySuggestions, FixPriority.HIGH);
|
|
130
|
-
displayFixSuggestions(mediumPrioritySuggestions, FixPriority.MEDIUM);
|
|
131
|
-
displayFixSuggestions(lowPrioritySuggestions, FixPriority.LOW);
|
|
132
|
-
} else {
|
|
133
|
-
// Show issues based on the specified filter
|
|
134
|
-
switch (priorityFilter.toLowerCase()) {
|
|
135
|
-
case 'h':
|
|
136
|
-
displayFixSuggestions(highPrioritySuggestions, FixPriority.HIGH);
|
|
137
|
-
break;
|
|
138
|
-
case 'm':
|
|
139
|
-
displayFixSuggestions(mediumPrioritySuggestions, FixPriority.MEDIUM);
|
|
140
|
-
break;
|
|
141
|
-
case 'l':
|
|
142
|
-
displayFixSuggestions(lowPrioritySuggestions, FixPriority.LOW);
|
|
143
|
-
break;
|
|
144
|
-
default:
|
|
145
|
-
logger.warn('Invalid priority filter. Use h, m, l, or a.');
|
|
146
|
-
// Show all issues if the filter is invalid
|
|
147
|
-
displayFixSuggestions(highPrioritySuggestions, FixPriority.HIGH);
|
|
148
|
-
displayFixSuggestions(mediumPrioritySuggestions, FixPriority.MEDIUM);
|
|
149
|
-
displayFixSuggestions(lowPrioritySuggestions, FixPriority.LOW);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
return {
|
|
154
|
-
highPrioritySuggestions,
|
|
155
|
-
mediumPrioritySuggestions,
|
|
156
|
-
lowPrioritySuggestions,
|
|
157
|
-
totalSuggestions,
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Process review results and implement fixes
|
|
163
|
-
* @param reviewContent Content of the review
|
|
164
|
-
* @param projectPath Base path of the project
|
|
165
|
-
* @param autoImplementHighPriority Whether to automatically implement high priority fixes
|
|
166
|
-
* @param promptForMediumLow Whether to prompt for confirmation on medium and low priority fixes
|
|
167
|
-
* @returns Summary of actions taken
|
|
168
|
-
*/
|
|
169
|
-
export async function processReviewResults(
|
|
170
|
-
reviewContent: string,
|
|
171
|
-
projectPath: string,
|
|
172
|
-
autoImplementHighPriority = true,
|
|
173
|
-
promptForMediumLow = true,
|
|
174
|
-
): Promise<FixSummary> {
|
|
175
|
-
// Initialize counters
|
|
176
|
-
let highPriorityFixed = 0;
|
|
177
|
-
let mediumPriorityFixed = 0;
|
|
178
|
-
let lowPriorityFixed = 0;
|
|
179
|
-
let totalSuggestions = 0;
|
|
180
|
-
|
|
181
|
-
// Process high priority suggestions
|
|
182
|
-
console.log('\nExtracting high priority issues...');
|
|
183
|
-
const highPrioritySuggestions = await extractFixSuggestions(
|
|
184
|
-
reviewContent,
|
|
185
|
-
projectPath,
|
|
186
|
-
FixPriority.HIGH,
|
|
187
|
-
);
|
|
188
|
-
totalSuggestions += highPrioritySuggestions.length;
|
|
189
|
-
|
|
190
|
-
if (highPrioritySuggestions.length > 0) {
|
|
191
|
-
console.log(`Found ${highPrioritySuggestions.length} high priority issues.`);
|
|
192
|
-
|
|
193
|
-
if (autoImplementHighPriority) {
|
|
194
|
-
console.log('Automatically implementing high priority fixes...');
|
|
195
|
-
|
|
196
|
-
for (const suggestion of highPrioritySuggestions) {
|
|
197
|
-
console.log(`\nImplementing fix for: ${suggestion.description}`);
|
|
198
|
-
console.log(`File: ${suggestion.file}`);
|
|
199
|
-
|
|
200
|
-
const success = await applyFixToFile(suggestion);
|
|
201
|
-
if (success) {
|
|
202
|
-
console.log('✅ Fix applied successfully.');
|
|
203
|
-
highPriorityFixed++;
|
|
204
|
-
} else {
|
|
205
|
-
console.log('❌ Could not apply fix automatically.');
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
} else {
|
|
209
|
-
console.log('Skipping high priority fixes as auto-implementation is disabled.');
|
|
210
|
-
}
|
|
211
|
-
} else {
|
|
212
|
-
console.log('No high priority issues found.');
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
// Process medium priority suggestions
|
|
216
|
-
console.log('\nExtracting medium priority issues...');
|
|
217
|
-
const mediumPrioritySuggestions = await extractFixSuggestions(
|
|
218
|
-
reviewContent,
|
|
219
|
-
projectPath,
|
|
220
|
-
FixPriority.MEDIUM,
|
|
221
|
-
);
|
|
222
|
-
totalSuggestions += mediumPrioritySuggestions.length;
|
|
223
|
-
|
|
224
|
-
if (mediumPrioritySuggestions.length > 0) {
|
|
225
|
-
console.log(`Found ${mediumPrioritySuggestions.length} medium priority issues.`);
|
|
226
|
-
|
|
227
|
-
if (promptForMediumLow) {
|
|
228
|
-
for (const suggestion of mediumPrioritySuggestions) {
|
|
229
|
-
displayDetailedFixSuggestion(suggestion, 0, FixPriority.MEDIUM);
|
|
230
|
-
|
|
231
|
-
const shouldImplement = await promptForConfirmation('Implement this fix?');
|
|
232
|
-
if (shouldImplement) {
|
|
233
|
-
const success = await applyFixToFile(suggestion);
|
|
234
|
-
if (success) {
|
|
235
|
-
console.log('✅ Fix applied successfully.');
|
|
236
|
-
mediumPriorityFixed++;
|
|
237
|
-
} else {
|
|
238
|
-
console.log('❌ Could not apply fix automatically.');
|
|
239
|
-
}
|
|
240
|
-
} else {
|
|
241
|
-
console.log('Skipping this fix.');
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
} else {
|
|
245
|
-
console.log('Skipping medium priority fixes as prompting is disabled.');
|
|
246
|
-
}
|
|
247
|
-
} else {
|
|
248
|
-
console.log('No medium priority issues found.');
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
// Process low priority suggestions
|
|
252
|
-
console.log('\nExtracting low priority issues...');
|
|
253
|
-
const lowPrioritySuggestions = await extractFixSuggestions(
|
|
254
|
-
reviewContent,
|
|
255
|
-
projectPath,
|
|
256
|
-
FixPriority.LOW,
|
|
257
|
-
);
|
|
258
|
-
totalSuggestions += lowPrioritySuggestions.length;
|
|
259
|
-
|
|
260
|
-
if (lowPrioritySuggestions.length > 0) {
|
|
261
|
-
console.log(`Found ${lowPrioritySuggestions.length} low priority issues.`);
|
|
262
|
-
|
|
263
|
-
if (promptForMediumLow) {
|
|
264
|
-
for (const suggestion of lowPrioritySuggestions) {
|
|
265
|
-
displayDetailedFixSuggestion(suggestion, 0, FixPriority.LOW);
|
|
266
|
-
|
|
267
|
-
const shouldImplement = await promptForConfirmation('Implement this fix?');
|
|
268
|
-
if (shouldImplement) {
|
|
269
|
-
const success = await applyFixToFile(suggestion);
|
|
270
|
-
if (success) {
|
|
271
|
-
console.log('✅ Fix applied successfully.');
|
|
272
|
-
lowPriorityFixed++;
|
|
273
|
-
} else {
|
|
274
|
-
console.log('❌ Could not apply fix automatically.');
|
|
275
|
-
}
|
|
276
|
-
} else {
|
|
277
|
-
console.log('Skipping this fix.');
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
} else {
|
|
281
|
-
console.log('Skipping low priority fixes as prompting is disabled.');
|
|
282
|
-
}
|
|
283
|
-
} else {
|
|
284
|
-
console.log('No low priority issues found.');
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
// Return summary
|
|
288
|
-
return {
|
|
289
|
-
highPriorityFixed,
|
|
290
|
-
mediumPriorityFixed,
|
|
291
|
-
lowPriorityFixed,
|
|
292
|
-
totalSuggestions,
|
|
293
|
-
};
|
|
294
|
-
}
|
|
@@ -1,296 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Progress tracker for multi-pass reviews.
|
|
3
|
-
*
|
|
4
|
-
* This module provides utilities for tracking and displaying progress
|
|
5
|
-
* during multi-pass reviews.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import readline from 'node:readline';
|
|
9
|
-
import logger from '../logger';
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Progress state for a multi-pass review
|
|
13
|
-
*/
|
|
14
|
-
export interface MultiPassProgress {
|
|
15
|
-
/** Total number of passes */
|
|
16
|
-
totalPasses: number;
|
|
17
|
-
/** Current pass number */
|
|
18
|
-
currentPass: number;
|
|
19
|
-
/** Files being processed in the current pass */
|
|
20
|
-
currentFiles: string[];
|
|
21
|
-
/** Total number of files */
|
|
22
|
-
totalFiles: number;
|
|
23
|
-
/** Number of files processed so far */
|
|
24
|
-
processedFiles: number;
|
|
25
|
-
/** Start time of the review */
|
|
26
|
-
startTime: Date;
|
|
27
|
-
/** Estimated completion time */
|
|
28
|
-
estimatedCompletionTime?: Date;
|
|
29
|
-
/** Whether the review is complete */
|
|
30
|
-
isComplete: boolean;
|
|
31
|
-
/** Current phase of the review */
|
|
32
|
-
currentPhase:
|
|
33
|
-
| 'preparing'
|
|
34
|
-
| 'analyzing'
|
|
35
|
-
| 'reviewing'
|
|
36
|
-
| 'processing'
|
|
37
|
-
| 'consolidating'
|
|
38
|
-
| 'complete';
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Progress tracker for multi-pass reviews
|
|
43
|
-
*/
|
|
44
|
-
export class MultiPassProgressTracker {
|
|
45
|
-
private progress: MultiPassProgress;
|
|
46
|
-
private updateInterval: NodeJS.Timeout | null = null;
|
|
47
|
-
private useAnsiEscapes: boolean;
|
|
48
|
-
private completedFiles: string[] = [];
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Create a new progress tracker
|
|
52
|
-
* @param totalPasses Total number of passes
|
|
53
|
-
* @param totalFiles Total number of files
|
|
54
|
-
* @param options Options for the progress tracker
|
|
55
|
-
*/
|
|
56
|
-
constructor(
|
|
57
|
-
totalPasses = 1,
|
|
58
|
-
totalFiles = 0,
|
|
59
|
-
options: {
|
|
60
|
-
useAnsiEscapes?: boolean;
|
|
61
|
-
quiet?: boolean;
|
|
62
|
-
} = {},
|
|
63
|
-
) {
|
|
64
|
-
this.progress = {
|
|
65
|
-
totalPasses,
|
|
66
|
-
currentPass: 0,
|
|
67
|
-
currentFiles: [],
|
|
68
|
-
totalFiles,
|
|
69
|
-
processedFiles: 0,
|
|
70
|
-
startTime: new Date(),
|
|
71
|
-
isComplete: false,
|
|
72
|
-
currentPhase: 'preparing',
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
this.useAnsiEscapes = options.useAnsiEscapes !== false;
|
|
76
|
-
|
|
77
|
-
// Start the progress update interval if not in quiet mode
|
|
78
|
-
if (!options.quiet) {
|
|
79
|
-
this.startProgressUpdates();
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Initialize the progress tracker with a total file count
|
|
85
|
-
* @param totalFiles Total number of files
|
|
86
|
-
*/
|
|
87
|
-
public initialize(totalFiles: number): void {
|
|
88
|
-
this.progress.totalFiles = totalFiles;
|
|
89
|
-
logger.info(`Initialized progress tracker with ${totalFiles} total files`);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Start the progress update interval
|
|
94
|
-
*/
|
|
95
|
-
private startProgressUpdates(): void {
|
|
96
|
-
// Update the progress display every 1 second
|
|
97
|
-
this.updateInterval = setInterval(() => {
|
|
98
|
-
this.updateProgressDisplay();
|
|
99
|
-
}, 1000);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Stop the progress update interval
|
|
104
|
-
*/
|
|
105
|
-
public stopProgressUpdates(): void {
|
|
106
|
-
if (this.updateInterval) {
|
|
107
|
-
clearInterval(this.updateInterval);
|
|
108
|
-
this.updateInterval = null;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* Update the progress display
|
|
114
|
-
*/
|
|
115
|
-
private updateProgressDisplay(): void {
|
|
116
|
-
if (this.progress.isComplete) {
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
const { currentPass, totalPasses, currentPhase, startTime } = this.progress;
|
|
121
|
-
|
|
122
|
-
// Calculate elapsed time
|
|
123
|
-
const elapsed = Math.floor((Date.now() - startTime.getTime()) / 1000);
|
|
124
|
-
const elapsedMinutes = Math.floor(elapsed / 60);
|
|
125
|
-
const elapsedSeconds = elapsed % 60;
|
|
126
|
-
|
|
127
|
-
// Clear the previous line if terminal supports ANSI escapes
|
|
128
|
-
if (this.useAnsiEscapes) {
|
|
129
|
-
readline.clearLine(process.stdout, 0);
|
|
130
|
-
readline.cursorTo(process.stdout, 0);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// Create the progress message
|
|
134
|
-
let progressMessage = '';
|
|
135
|
-
|
|
136
|
-
if (currentPhase === 'preparing') {
|
|
137
|
-
progressMessage = `Preparing multi-pass review...`;
|
|
138
|
-
} else if (currentPhase === 'analyzing') {
|
|
139
|
-
progressMessage = `Analyzing files for multi-pass review...`;
|
|
140
|
-
} else if (currentPhase === 'reviewing') {
|
|
141
|
-
const passProgress = (currentPass / totalPasses) * 100;
|
|
142
|
-
progressMessage = `Pass ${currentPass}/${totalPasses} (${passProgress.toFixed(1)}%)`;
|
|
143
|
-
|
|
144
|
-
if (this.progress.currentFiles.length > 0) {
|
|
145
|
-
const fileNames = this.progress.currentFiles.map((f) => f.split('/').pop()).join(', ');
|
|
146
|
-
progressMessage += ` | Processing: ${fileNames.length > 50 ? `${fileNames.substring(0, 50)}...` : fileNames}`;
|
|
147
|
-
}
|
|
148
|
-
} else if (currentPhase === 'processing') {
|
|
149
|
-
progressMessage = `Processing results...`;
|
|
150
|
-
} else if (currentPhase === 'consolidating') {
|
|
151
|
-
progressMessage = `Consolidating multi-pass review and generating final graded report...`;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
// Add timing information
|
|
155
|
-
progressMessage += ` | Elapsed: ${elapsedMinutes}m ${elapsedSeconds}s`;
|
|
156
|
-
|
|
157
|
-
// Print the progress message without a newline if terminal supports ANSI escapes
|
|
158
|
-
if (this.useAnsiEscapes) {
|
|
159
|
-
process.stdout.write(progressMessage);
|
|
160
|
-
} else {
|
|
161
|
-
// Otherwise, just log the progress
|
|
162
|
-
logger.info(progressMessage);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* Start a new pass
|
|
168
|
-
* @param passNumber Pass number
|
|
169
|
-
* @param files Files being processed in this pass
|
|
170
|
-
*/
|
|
171
|
-
public startPass(passNumber: number, files: string[]): void {
|
|
172
|
-
this.progress.currentPass = passNumber;
|
|
173
|
-
this.progress.currentFiles = files;
|
|
174
|
-
this.progress.currentPhase = 'reviewing';
|
|
175
|
-
|
|
176
|
-
// Log the start of a new pass (with a newline to avoid overwriting the progress bar)
|
|
177
|
-
if (this.useAnsiEscapes) {
|
|
178
|
-
process.stdout.write('\n');
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
logger.info(
|
|
182
|
-
`Starting pass ${passNumber}/${this.progress.totalPasses} with ${files.length} files`,
|
|
183
|
-
);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
/**
|
|
187
|
-
* Complete a pass
|
|
188
|
-
* @param passNumber Pass number
|
|
189
|
-
*/
|
|
190
|
-
public completePass(passNumber: number): void {
|
|
191
|
-
if (passNumber !== this.progress.currentPass) {
|
|
192
|
-
logger.warn(`Completed pass ${passNumber} but current pass is ${this.progress.currentPass}`);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
this.progress.processedFiles += this.progress.currentFiles.length;
|
|
196
|
-
this.progress.currentFiles = [];
|
|
197
|
-
|
|
198
|
-
// Log the completion of a pass (with a newline to avoid overwriting the progress bar)
|
|
199
|
-
if (this.useAnsiEscapes) {
|
|
200
|
-
process.stdout.write('\n');
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
logger.info(`Completed pass ${passNumber}/${this.progress.totalPasses}`);
|
|
204
|
-
|
|
205
|
-
// If this was the last pass, mark the review as complete
|
|
206
|
-
if (passNumber === this.progress.totalPasses) {
|
|
207
|
-
this.complete();
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
/**
|
|
212
|
-
* Set the current phase
|
|
213
|
-
* @param phase Current phase
|
|
214
|
-
*/
|
|
215
|
-
public setPhase(phase: MultiPassProgress['currentPhase']): void {
|
|
216
|
-
this.progress.currentPhase = phase;
|
|
217
|
-
|
|
218
|
-
if (phase === 'complete') {
|
|
219
|
-
this.complete();
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
/**
|
|
224
|
-
* Complete the review
|
|
225
|
-
*/
|
|
226
|
-
public complete(): void {
|
|
227
|
-
this.progress.isComplete = true;
|
|
228
|
-
this.progress.currentPhase = 'complete';
|
|
229
|
-
|
|
230
|
-
// Calculate total time
|
|
231
|
-
const elapsed = Math.floor((Date.now() - this.progress.startTime.getTime()) / 1000);
|
|
232
|
-
const elapsedMinutes = Math.floor(elapsed / 60);
|
|
233
|
-
const elapsedSeconds = elapsed % 60;
|
|
234
|
-
|
|
235
|
-
// Clear the progress bar
|
|
236
|
-
if (this.useAnsiEscapes) {
|
|
237
|
-
readline.clearLine(process.stdout, 0);
|
|
238
|
-
readline.cursorTo(process.stdout, 0);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
// Log the completion message
|
|
242
|
-
logger.info(`Multi-pass review completed in ${elapsedMinutes}m ${elapsedSeconds}s`);
|
|
243
|
-
|
|
244
|
-
// Stop the progress updates
|
|
245
|
-
this.stopProgressUpdates();
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
/**
|
|
249
|
-
* Mark a file as completed
|
|
250
|
-
* @param filePath Path to the file that was completed
|
|
251
|
-
*/
|
|
252
|
-
public completeFile(filePath: string): void {
|
|
253
|
-
// Add to completed files list
|
|
254
|
-
if (!this.completedFiles.includes(filePath)) {
|
|
255
|
-
this.completedFiles.push(filePath);
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
// Remove from current files if it's there
|
|
259
|
-
const fileIndex = this.progress.currentFiles.indexOf(filePath);
|
|
260
|
-
if (fileIndex !== -1) {
|
|
261
|
-
this.progress.currentFiles.splice(fileIndex, 1);
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
// Update processed files count
|
|
265
|
-
const progressPercent = (this.completedFiles.length / this.progress.totalFiles) * 100;
|
|
266
|
-
logger.debug(`File completed: ${filePath} (${progressPercent.toFixed(1)}% complete)`);
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
/**
|
|
270
|
-
* Get the current progress
|
|
271
|
-
* @returns Current progress state
|
|
272
|
-
*/
|
|
273
|
-
public getProgress(): MultiPassProgress {
|
|
274
|
-
return { ...this.progress };
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
/**
|
|
278
|
-
* Get the full state including completed files
|
|
279
|
-
* @returns Full state object
|
|
280
|
-
*/
|
|
281
|
-
public getState(): {
|
|
282
|
-
progressData: MultiPassProgress;
|
|
283
|
-
completedFiles: string[];
|
|
284
|
-
progress: number;
|
|
285
|
-
completed: boolean;
|
|
286
|
-
currentPass: number;
|
|
287
|
-
} {
|
|
288
|
-
return {
|
|
289
|
-
progressData: this.getProgress(),
|
|
290
|
-
completedFiles: [...this.completedFiles],
|
|
291
|
-
progress: this.completedFiles.length / this.progress.totalFiles,
|
|
292
|
-
completed: this.progress.isComplete,
|
|
293
|
-
currentPass: this.progress.currentPass,
|
|
294
|
-
};
|
|
295
|
-
}
|
|
296
|
-
}
|