codereview-aia 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +580 -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 +184 -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 +276 -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 +381 -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/batchStreamer.d.ts +54 -0
- package/dist/runtime/preprod/batchStreamer.js +159 -0
- package/dist/runtime/preprod/batchStreamer.js.map +1 -0
- package/dist/runtime/preprod/crEdgeServiceClient.d.ts +30 -0
- package/dist/runtime/preprod/crEdgeServiceClient.js +133 -0
- package/dist/runtime/preprod/crEdgeServiceClient.js.map +1 -0
- package/dist/runtime/preprod/progressTracker.d.ts +21 -0
- package/dist/runtime/preprod/progressTracker.js +80 -0
- package/dist/runtime/preprod/progressTracker.js.map +1 -0
- package/dist/runtime/preprod/webCheck.d.ts +1 -0
- package/dist/runtime/preprod/webCheck.js +102 -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 +61 -0
- package/dist/runtime/reviewPipeline.js +231 -0
- package/dist/runtime/reviewPipeline.js.map +1 -0
- package/dist/runtime/runAiCodeReview.d.ts +36 -0
- package/dist/runtime/runAiCodeReview.js +409 -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 +275 -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 +11 -0
- package/dist/runtime/ui/screens/ModeSelection.js +169 -0
- package/dist/runtime/ui/screens/ModeSelection.js.map +1 -0
- package/dist/runtime/ui/screens/ProgressScreen.d.ts +21 -0
- package/dist/runtime/ui/screens/ProgressScreen.js +86 -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 +34 -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 -1
- 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,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Utility for generating directory structure representations.
|
|
3
|
-
*
|
|
4
|
-
* This module provides functions for generating directory structure
|
|
5
|
-
* representations from file paths, which is useful for providing context
|
|
6
|
-
* in code reviews.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import type { FileInfo } from '../../types/review';
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Generate a directory structure representation from file paths
|
|
13
|
-
* @param files Array of file information objects
|
|
14
|
-
* @returns String representation of directory structure
|
|
15
|
-
*/
|
|
16
|
-
export function generateDirectoryStructure(files: FileInfo[]): string {
|
|
17
|
-
const structure: Record<string, any> = {};
|
|
18
|
-
|
|
19
|
-
// Build tree structure
|
|
20
|
-
for (const file of files) {
|
|
21
|
-
// Skip files without relativePath
|
|
22
|
-
if (!file.relativePath) continue;
|
|
23
|
-
|
|
24
|
-
const parts = file.relativePath.split('/');
|
|
25
|
-
let current = structure;
|
|
26
|
-
|
|
27
|
-
for (let i = 0; i < parts.length - 1; i++) {
|
|
28
|
-
const part = parts[i];
|
|
29
|
-
if (!current[part]) {
|
|
30
|
-
current[part] = {};
|
|
31
|
-
}
|
|
32
|
-
current = current[part];
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const fileName = parts[parts.length - 1];
|
|
36
|
-
current[fileName] = null;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// Convert to string representation
|
|
40
|
-
function stringifyStructure(obj: Record<string, any>, indent = 0): string {
|
|
41
|
-
let result = '';
|
|
42
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
43
|
-
result += `${' '.repeat(indent) + (value === null ? '📄 ' : '📁 ') + key}\n`;
|
|
44
|
-
if (value !== null) {
|
|
45
|
-
result += stringifyStructure(value, indent + 1);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
return result;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return stringifyStructure(structure);
|
|
52
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Utilities for detecting programming languages from file extensions.
|
|
3
|
-
*
|
|
4
|
-
* This module provides functions for mapping file extensions to programming languages,
|
|
5
|
-
* which is useful for formatting code snippets and providing language-specific hints
|
|
6
|
-
* to AI models.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Get the language name from a file extension
|
|
11
|
-
* @param extension File extension
|
|
12
|
-
* @returns Language name
|
|
13
|
-
*/
|
|
14
|
-
export function getLanguageFromExtension(extension: string): string {
|
|
15
|
-
const extensionMap: Record<string, string> = {
|
|
16
|
-
js: 'javascript',
|
|
17
|
-
jsx: 'javascript',
|
|
18
|
-
ts: 'typescript',
|
|
19
|
-
tsx: 'typescript',
|
|
20
|
-
py: 'python',
|
|
21
|
-
rb: 'ruby',
|
|
22
|
-
java: 'java',
|
|
23
|
-
go: 'go',
|
|
24
|
-
rs: 'rust',
|
|
25
|
-
php: 'php',
|
|
26
|
-
cs: 'csharp',
|
|
27
|
-
cpp: 'cpp',
|
|
28
|
-
c: 'c',
|
|
29
|
-
h: 'c',
|
|
30
|
-
hpp: 'cpp',
|
|
31
|
-
swift: 'swift',
|
|
32
|
-
kt: 'kotlin',
|
|
33
|
-
md: 'markdown',
|
|
34
|
-
json: 'json',
|
|
35
|
-
yml: 'yaml',
|
|
36
|
-
yaml: 'yaml',
|
|
37
|
-
html: 'html',
|
|
38
|
-
css: 'css',
|
|
39
|
-
scss: 'scss',
|
|
40
|
-
sql: 'sql',
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
return extensionMap[extension.toLowerCase()] || extension;
|
|
44
|
-
}
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Utilities for formatting prompts for AI models.
|
|
3
|
-
*
|
|
4
|
-
* This module provides functions for formatting prompts for different AI models,
|
|
5
|
-
* including handling code blocks, project context, and review instructions.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import path from 'node:path';
|
|
9
|
-
import type { FileInfo, RunContext } from '../../types/review';
|
|
10
|
-
import { formatProjectDocs, type ProjectDocs } from '../../utils/projectDocs';
|
|
11
|
-
import { getLanguageFromExtension } from '../utils/languageDetection';
|
|
12
|
-
import { generateDirectoryStructure } from './directoryStructure';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Format a code block with the appropriate language
|
|
16
|
-
* @param fileContent The content of the file
|
|
17
|
-
* @param filePath The path to the file
|
|
18
|
-
* @returns The formatted code block
|
|
19
|
-
*/
|
|
20
|
-
export function formatCodeBlock(fileContent: string, filePath: string): string {
|
|
21
|
-
// Get the file extension and language
|
|
22
|
-
const fileExtension = path.extname(filePath).slice(1);
|
|
23
|
-
const language = getLanguageFromExtension(fileExtension);
|
|
24
|
-
|
|
25
|
-
// Format the code block with language
|
|
26
|
-
return `\`\`\`${language}\n${fileContent}\n\`\`\``;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Format a single file review prompt
|
|
31
|
-
* @param promptTemplate The prompt template
|
|
32
|
-
* @param fileContent The content of the file
|
|
33
|
-
* @param filePath The path to the file
|
|
34
|
-
* @param projectDocs Optional project documentation
|
|
35
|
-
* @returns The formatted prompt
|
|
36
|
-
*/
|
|
37
|
-
export function formatSingleFileReviewPrompt(
|
|
38
|
-
promptTemplate: string,
|
|
39
|
-
fileContent: string,
|
|
40
|
-
filePath: string,
|
|
41
|
-
projectDocs?: ProjectDocs | null,
|
|
42
|
-
runContext?: RunContext,
|
|
43
|
-
): string {
|
|
44
|
-
// Format the code block
|
|
45
|
-
const codeBlock = formatCodeBlock(fileContent, filePath);
|
|
46
|
-
|
|
47
|
-
// Format project documentation if available
|
|
48
|
-
const projectContext = projectDocs ? formatProjectDocs(projectDocs) : '';
|
|
49
|
-
|
|
50
|
-
const contextSnapshot = buildContextSnapshot(runContext, filePath);
|
|
51
|
-
const severityContract = buildSeverityContract();
|
|
52
|
-
const contextAppendix = buildContextDocAppendix(runContext);
|
|
53
|
-
|
|
54
|
-
const sections = [
|
|
55
|
-
promptTemplate,
|
|
56
|
-
contextSnapshot,
|
|
57
|
-
severityContract,
|
|
58
|
-
contextAppendix,
|
|
59
|
-
projectContext ? `## Project Context\n${projectContext}` : '',
|
|
60
|
-
`## File to Review: ${filePath}`,
|
|
61
|
-
codeBlock,
|
|
62
|
-
'Please review this code and provide feedback according to the instructions. DO NOT REPEAT THE INSTRUCTIONS. DO NOT ASK FOR CODE TO REVIEW. FOCUS ONLY ON PROVIDING THE CODE REVIEW CONTENT.',
|
|
63
|
-
].filter(Boolean);
|
|
64
|
-
|
|
65
|
-
return sections.join('\n\n');
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Format a consolidated review prompt
|
|
70
|
-
* @param promptTemplate The prompt template
|
|
71
|
-
* @param projectName The name of the project
|
|
72
|
-
* @param files Array of file information
|
|
73
|
-
* @param projectDocs Optional project documentation
|
|
74
|
-
* @returns The formatted prompt
|
|
75
|
-
*/
|
|
76
|
-
export function formatConsolidatedReviewPrompt(
|
|
77
|
-
promptTemplate: string,
|
|
78
|
-
projectName: string,
|
|
79
|
-
files: Array<{ relativePath?: string; content: string; sizeInBytes: number }>,
|
|
80
|
-
projectDocs?: ProjectDocs | null,
|
|
81
|
-
runContext?: RunContext,
|
|
82
|
-
): string {
|
|
83
|
-
// Format project documentation if available
|
|
84
|
-
const projectContext = projectDocs ? formatProjectDocs(projectDocs) : '';
|
|
85
|
-
|
|
86
|
-
// Convert the file array to FileInfo format for the directory structure generator
|
|
87
|
-
const fileInfos: FileInfo[] = files.map((file) => ({
|
|
88
|
-
path: file.relativePath || file.sizeInBytes.toString(), // Use sizeInBytes as fallback for path
|
|
89
|
-
relativePath: file.relativePath,
|
|
90
|
-
content: file.content,
|
|
91
|
-
}));
|
|
92
|
-
|
|
93
|
-
// Create a project structure summary using the utility function
|
|
94
|
-
const directoryStructure = generateDirectoryStructure(fileInfos);
|
|
95
|
-
|
|
96
|
-
// Prepare file summaries
|
|
97
|
-
const fileSummaries = files
|
|
98
|
-
.map((file) => `- ${file.relativePath || 'unnamed file'} (${file.sizeInBytes} bytes)`)
|
|
99
|
-
.join('\n');
|
|
100
|
-
|
|
101
|
-
const contextSnapshot = buildContextSnapshot(runContext);
|
|
102
|
-
const severityContract = buildSeverityContract();
|
|
103
|
-
const contextAppendix = buildContextDocAppendix(runContext);
|
|
104
|
-
|
|
105
|
-
const sections = [
|
|
106
|
-
promptTemplate,
|
|
107
|
-
contextSnapshot,
|
|
108
|
-
severityContract,
|
|
109
|
-
contextAppendix,
|
|
110
|
-
projectContext ? `## Project Context\n${projectContext}` : '',
|
|
111
|
-
`## Project: ${projectName}`,
|
|
112
|
-
'## Directory Structure',
|
|
113
|
-
`\`\`\`\n${directoryStructure}\n\`\`\``,
|
|
114
|
-
'## File Summaries',
|
|
115
|
-
fileSummaries,
|
|
116
|
-
'Please review this codebase and provide feedback according to the instructions. DO NOT REPEAT THE INSTRUCTIONS. DO NOT ASK FOR CODE TO REVIEW. FOCUS ONLY ON PROVIDING THE CODE REVIEW CONTENT.',
|
|
117
|
-
].filter(Boolean);
|
|
118
|
-
|
|
119
|
-
return sections.join('\n\n');
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
function buildContextSnapshot(runContext?: RunContext, currentFile?: string): string {
|
|
123
|
-
if (!runContext) {
|
|
124
|
-
return '';
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
const lines: string[] = ['## Context Snapshot'];
|
|
128
|
-
lines.push(`- Repository: ${runContext.repoName}`);
|
|
129
|
-
if (runContext.reviewMode) {
|
|
130
|
-
lines.push(`- Mode: ${runContext.reviewMode}`);
|
|
131
|
-
}
|
|
132
|
-
if (
|
|
133
|
-
typeof runContext.groupIndex === 'number' &&
|
|
134
|
-
typeof runContext.groupCount === 'number' &&
|
|
135
|
-
runContext.groupCount > 0
|
|
136
|
-
) {
|
|
137
|
-
const label = runContext.groupLabel ? ` (${runContext.groupLabel})` : '';
|
|
138
|
-
lines.push(`- File group: ${runContext.groupIndex}/${runContext.groupCount}${label}`);
|
|
139
|
-
}
|
|
140
|
-
if (runContext.totalFiles) {
|
|
141
|
-
lines.push(`- Files in this run: ${runContext.totalFiles}`);
|
|
142
|
-
}
|
|
143
|
-
if (currentFile) {
|
|
144
|
-
lines.push(`- Currently focused file: ${currentFile}`);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
if (runContext.groupFiles && runContext.groupFiles.length > 0) {
|
|
148
|
-
lines.push('\n### Files in this group');
|
|
149
|
-
runContext.groupFiles.forEach((file) => lines.push(`- ${file}`));
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
if (runContext.docFiles && runContext.docFiles.length > 0) {
|
|
153
|
-
lines.push('\n### Nearby docs/config included for context');
|
|
154
|
-
runContext.docFiles.forEach((file) => lines.push(`- ${file}`));
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
lines.push(
|
|
158
|
-
'\nFocus on cross-file behavior in this bundle—shared state, config drift, and docs vs implementation mismatches.',
|
|
159
|
-
);
|
|
160
|
-
|
|
161
|
-
return lines.join('\n');
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
function buildSeverityContract(): string {
|
|
165
|
-
return `## Severity & Reporting Guidance\n- **Critical** – production-stopping bug, security break, or guaranteed data loss. Immediate fix required.\n- **High** – severe regression, auth/z issue, or problem affecting many users.\n- **Medium** – correctness gaps, testing deficiencies, or maintainability risks that will bite soon.\n- **Low** – readability, structure, or polish issues that still deserve a fix.\n- **Missing context** – when you cannot complete an assessment, add an issue referencing the exact file that lacks detail (e.g., "missing context in src/config/app.ts").\n-\n-Always set the JSON 'priority' to one of the above values so UI totals remain accurate.`;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
function buildContextDocAppendix(runContext?: RunContext): string {
|
|
169
|
-
if (!runContext?.contextDocs || runContext.contextDocs.length === 0) {
|
|
170
|
-
return '';
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
const docs = runContext.contextDocs;
|
|
174
|
-
const lines: string[] = ['## Supporting Context'];
|
|
175
|
-
for (const doc of docs) {
|
|
176
|
-
lines.push(`### ${doc.path}`);
|
|
177
|
-
lines.push('```');
|
|
178
|
-
lines.push(doc.snippet.trim() || '(empty file)');
|
|
179
|
-
lines.push('```');
|
|
180
|
-
}
|
|
181
|
-
return lines.join('\n');
|
|
182
|
-
}
|
|
@@ -1,297 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Token counting and cost estimation utilities for AI API usage.
|
|
3
|
-
*
|
|
4
|
-
* This module provides utilities for estimating token usage and associated costs
|
|
5
|
-
* when using OpenRouter models. It implements accurate token counting using
|
|
6
|
-
* model-specific tokenizers and maintains current pricing information for OpenRouter models.
|
|
7
|
-
*
|
|
8
|
-
* Key responsibilities:
|
|
9
|
-
* - Counting tokens for input and output text using model-specific tokenizers
|
|
10
|
-
* - Calculating approximate API costs based on token usage and model
|
|
11
|
-
* - Tracking different pricing tiers for various AI models
|
|
12
|
-
* - Providing cost information for review outputs
|
|
13
|
-
* - Supporting cost-aware decision making for API usage
|
|
14
|
-
*
|
|
15
|
-
* These utilities help users understand the resource usage and costs associated
|
|
16
|
-
* with their code reviews, enabling better planning and resource allocation.
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
import { countTokens } from '../../tokenizers';
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Utility functions for estimating token counts and costs for AI API calls
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Count tokens in a text using the appropriate tokenizer for a model
|
|
27
|
-
* @param text Text to count tokens for
|
|
28
|
-
* @param modelName Name of the model (optional)
|
|
29
|
-
* @returns Token count
|
|
30
|
-
*/
|
|
31
|
-
export function estimateTokenCount(text: string, modelName?: string): number {
|
|
32
|
-
return countTokens(text, modelName || 'fallback');
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Current pricing for OpenRouter models
|
|
37
|
-
* Source: https://openrouter.ai/models
|
|
38
|
-
*/
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Interface for model pricing with standard per-token costs
|
|
42
|
-
*/
|
|
43
|
-
interface StandardPricing {
|
|
44
|
-
inputTokenCost: number; // Cost per 1K input tokens in USD
|
|
45
|
-
outputTokenCost: number; // Cost per 1K output tokens in USD
|
|
46
|
-
type: 'standard';
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Interface for model pricing with tiered costs based on token count
|
|
51
|
-
*/
|
|
52
|
-
interface TieredPricing {
|
|
53
|
-
type: 'tiered';
|
|
54
|
-
tiers: {
|
|
55
|
-
threshold: number; // Token threshold for this tier
|
|
56
|
-
inputTokenCost: number; // Cost per 1K input tokens in USD for this tier
|
|
57
|
-
outputTokenCost: number; // Cost per 1K output tokens in USD for this tier
|
|
58
|
-
}[];
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Union type for different pricing models
|
|
63
|
-
*/
|
|
64
|
-
type ModelPricing = StandardPricing | TieredPricing;
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Pricing information for OpenRouter models
|
|
68
|
-
*/
|
|
69
|
-
const MODEL_PRICING: Record<string, ModelPricing> = {
|
|
70
|
-
// OpenRouter models (via OpenRouter)
|
|
71
|
-
'anthropic/claude-3-opus': {
|
|
72
|
-
type: 'standard',
|
|
73
|
-
inputTokenCost: 0.015, // $15.00 per 1M tokens
|
|
74
|
-
outputTokenCost: 0.075, // $75.00 per 1M tokens
|
|
75
|
-
},
|
|
76
|
-
'anthropic/claude-3-sonnet': {
|
|
77
|
-
type: 'standard',
|
|
78
|
-
inputTokenCost: 0.003, // $3.00 per 1M tokens
|
|
79
|
-
outputTokenCost: 0.015, // $15.00 per 1M tokens
|
|
80
|
-
},
|
|
81
|
-
'anthropic/claude-3-haiku': {
|
|
82
|
-
type: 'standard',
|
|
83
|
-
inputTokenCost: 0.00025, // $0.25 per 1M tokens
|
|
84
|
-
outputTokenCost: 0.00125, // $1.25 per 1M tokens
|
|
85
|
-
},
|
|
86
|
-
'openai/gpt-4-turbo': {
|
|
87
|
-
type: 'standard',
|
|
88
|
-
inputTokenCost: 0.01, // $10.00 per 1M tokens
|
|
89
|
-
outputTokenCost: 0.03, // $30.00 per 1M tokens
|
|
90
|
-
},
|
|
91
|
-
'openai/gpt-4o': {
|
|
92
|
-
type: 'standard',
|
|
93
|
-
inputTokenCost: 0.005, // $5.00 per 1M tokens (OpenRouter pricing)
|
|
94
|
-
outputTokenCost: 0.015, // $15.00 per 1M tokens (OpenRouter pricing)
|
|
95
|
-
},
|
|
96
|
-
'openai/gpt-4o-mini': {
|
|
97
|
-
type: 'standard',
|
|
98
|
-
inputTokenCost: 0.00015, // $0.15 per 1M tokens (OpenRouter pricing)
|
|
99
|
-
outputTokenCost: 0.0006, // $0.60 per 1M tokens (OpenRouter pricing)
|
|
100
|
-
},
|
|
101
|
-
'openai/gpt-3.5-turbo': {
|
|
102
|
-
type: 'standard',
|
|
103
|
-
inputTokenCost: 0.0005, // $0.50 per 1M tokens (OpenRouter pricing)
|
|
104
|
-
outputTokenCost: 0.0015, // $1.50 per 1M tokens (OpenRouter pricing)
|
|
105
|
-
},
|
|
106
|
-
|
|
107
|
-
'x-ai/grok-4-fast': {
|
|
108
|
-
type: 'standard',
|
|
109
|
-
inputTokenCost: 0.0002, // $0.20 per 1M input tokens (approx)
|
|
110
|
-
outputTokenCost: 0.0005, // $0.50 per 1M output tokens (approx)
|
|
111
|
-
},
|
|
112
|
-
|
|
113
|
-
// Default fallback pricing (OpenRouter average)
|
|
114
|
-
default: {
|
|
115
|
-
type: 'standard',
|
|
116
|
-
inputTokenCost: 0.005, // $5.00 per 1M tokens
|
|
117
|
-
outputTokenCost: 0.015, // $15.00 per 1M tokens
|
|
118
|
-
},
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Get the pricing for a specific model
|
|
123
|
-
* @param modelName Name of the model
|
|
124
|
-
* @returns Pricing information for the model
|
|
125
|
-
*/
|
|
126
|
-
function getModelPricing(modelName: string): ModelPricing {
|
|
127
|
-
// Handle OpenRouter model names (remove the 'openrouter:' prefix)
|
|
128
|
-
let actualModelName = modelName;
|
|
129
|
-
if (modelName.startsWith('openrouter:')) {
|
|
130
|
-
actualModelName = modelName.substring('openrouter:'.length);
|
|
131
|
-
} else if (modelName.startsWith('openrouter-')) {
|
|
132
|
-
actualModelName = modelName.substring('openrouter-'.length);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
// Check if we have pricing for this model
|
|
136
|
-
if (MODEL_PRICING[actualModelName]) {
|
|
137
|
-
return MODEL_PRICING[actualModelName];
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// Default fallback
|
|
141
|
-
return MODEL_PRICING.default;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Calculate the cost for a specific tier
|
|
146
|
-
* @param tokens Number of tokens
|
|
147
|
-
* @param tokenCost Cost per 1K tokens
|
|
148
|
-
* @param tierStart Start of the tier
|
|
149
|
-
* @param tierEnd End of the tier (or undefined for no upper limit)
|
|
150
|
-
* @returns Cost for this tier
|
|
151
|
-
*/
|
|
152
|
-
function calculateTierCost(
|
|
153
|
-
tokens: number,
|
|
154
|
-
tokenCost: number,
|
|
155
|
-
tierStart: number,
|
|
156
|
-
tierEnd?: number,
|
|
157
|
-
): number {
|
|
158
|
-
// Calculate how many tokens fall within this tier
|
|
159
|
-
const tierTokens = tierEnd
|
|
160
|
-
? Math.min(Math.max(0, tokens - tierStart), tierEnd - tierStart)
|
|
161
|
-
: Math.max(0, tokens - tierStart);
|
|
162
|
-
|
|
163
|
-
// Calculate the cost for this tier
|
|
164
|
-
return (tierTokens / 1000) * tokenCost;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* Calculate the estimated cost for an AI API call
|
|
169
|
-
* @param inputTokens Number of input tokens
|
|
170
|
-
* @param outputTokens Number of output tokens
|
|
171
|
-
* @param modelName Name of the model used
|
|
172
|
-
* @returns Estimated cost in USD
|
|
173
|
-
*/
|
|
174
|
-
export function calculateCost(
|
|
175
|
-
inputTokens: number,
|
|
176
|
-
outputTokens: number,
|
|
177
|
-
modelName = 'openrouter:anthropic/claude-3-opus-20240229',
|
|
178
|
-
): number {
|
|
179
|
-
const pricing = getModelPricing(modelName);
|
|
180
|
-
|
|
181
|
-
let inputCost = 0;
|
|
182
|
-
let outputCost = 0;
|
|
183
|
-
|
|
184
|
-
if (pricing.type === 'standard') {
|
|
185
|
-
// Standard pricing is simple - just multiply by the cost per token
|
|
186
|
-
inputCost = (inputTokens / 1000) * pricing.inputTokenCost;
|
|
187
|
-
outputCost = (outputTokens / 1000) * pricing.outputTokenCost;
|
|
188
|
-
} else if (pricing.type === 'tiered') {
|
|
189
|
-
// Tiered pricing requires calculating costs for each tier
|
|
190
|
-
const tiers = pricing.tiers;
|
|
191
|
-
|
|
192
|
-
// Calculate input token cost across tiers
|
|
193
|
-
for (let i = 0; i < tiers.length; i++) {
|
|
194
|
-
const tierStart = tiers[i].threshold;
|
|
195
|
-
const tierEnd = i < tiers.length - 1 ? tiers[i + 1].threshold : undefined;
|
|
196
|
-
|
|
197
|
-
inputCost += calculateTierCost(inputTokens, tiers[i].inputTokenCost, tierStart, tierEnd);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
// Calculate output token cost across tiers
|
|
201
|
-
for (let i = 0; i < tiers.length; i++) {
|
|
202
|
-
const tierStart = tiers[i].threshold;
|
|
203
|
-
const tierEnd = i < tiers.length - 1 ? tiers[i + 1].threshold : undefined;
|
|
204
|
-
|
|
205
|
-
outputCost += calculateTierCost(outputTokens, tiers[i].outputTokenCost, tierStart, tierEnd);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
return inputCost + outputCost;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* Format a cost value as a currency string
|
|
214
|
-
* @param cost Cost value in USD
|
|
215
|
-
* @returns Formatted cost string
|
|
216
|
-
*/
|
|
217
|
-
export function formatCost(cost: number): string {
|
|
218
|
-
return `$${cost.toFixed(6)} USD`;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* Cost information for an API call
|
|
223
|
-
*/
|
|
224
|
-
export interface CostInfo {
|
|
225
|
-
inputTokens: number;
|
|
226
|
-
outputTokens: number;
|
|
227
|
-
totalTokens: number;
|
|
228
|
-
estimatedCost: number;
|
|
229
|
-
formattedCost: string;
|
|
230
|
-
cost: number; // Alias for estimatedCost for backward compatibility
|
|
231
|
-
passCount?: number; // Number of passes in multi-pass review
|
|
232
|
-
perPassCosts?: PassCostInfo[]; // Cost breakdown per pass
|
|
233
|
-
contextMaintenanceFactor?: number; // Factor for context maintenance
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
/**
|
|
237
|
-
* Cost information for a single pass in a multi-pass review
|
|
238
|
-
*/
|
|
239
|
-
export interface PassCostInfo {
|
|
240
|
-
passNumber: number;
|
|
241
|
-
inputTokens: number;
|
|
242
|
-
outputTokens: number;
|
|
243
|
-
totalTokens: number;
|
|
244
|
-
estimatedCost: number;
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* Calculate cost information for an API call based on text
|
|
249
|
-
* @param inputText Input text sent to the API
|
|
250
|
-
* @param outputText Output text received from the API
|
|
251
|
-
* @param modelName Name of the model used
|
|
252
|
-
* @returns Cost information
|
|
253
|
-
*/
|
|
254
|
-
export function getCostInfoFromText(
|
|
255
|
-
inputText: string,
|
|
256
|
-
outputText: string,
|
|
257
|
-
modelName = 'openrouter:anthropic/claude-3-opus-20240229',
|
|
258
|
-
): CostInfo {
|
|
259
|
-
const inputTokens = estimateTokenCount(inputText, modelName);
|
|
260
|
-
const outputTokens = estimateTokenCount(outputText, modelName);
|
|
261
|
-
const totalTokens = inputTokens + outputTokens;
|
|
262
|
-
const estimatedCost = calculateCost(inputTokens, outputTokens, modelName);
|
|
263
|
-
|
|
264
|
-
return {
|
|
265
|
-
inputTokens,
|
|
266
|
-
outputTokens,
|
|
267
|
-
totalTokens,
|
|
268
|
-
estimatedCost,
|
|
269
|
-
formattedCost: formatCost(estimatedCost),
|
|
270
|
-
cost: estimatedCost, // Alias for backward compatibility
|
|
271
|
-
};
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
/**
|
|
275
|
-
* Calculate cost information for an API call based on token counts
|
|
276
|
-
* @param inputTokens Number of input tokens
|
|
277
|
-
* @param outputTokens Number of output tokens
|
|
278
|
-
* @param modelName Name of the model used
|
|
279
|
-
* @returns Cost information
|
|
280
|
-
*/
|
|
281
|
-
export function getCostInfo(
|
|
282
|
-
inputTokens: number,
|
|
283
|
-
outputTokens: number,
|
|
284
|
-
modelName = 'openrouter:anthropic/claude-3-opus-20240229',
|
|
285
|
-
): CostInfo {
|
|
286
|
-
const totalTokens = inputTokens + outputTokens;
|
|
287
|
-
const estimatedCost = calculateCost(inputTokens, outputTokens, modelName);
|
|
288
|
-
|
|
289
|
-
return {
|
|
290
|
-
inputTokens,
|
|
291
|
-
outputTokens,
|
|
292
|
-
totalTokens,
|
|
293
|
-
estimatedCost,
|
|
294
|
-
formattedCost: formatCost(estimatedCost),
|
|
295
|
-
cost: estimatedCost, // Alias for backward compatibility
|
|
296
|
-
};
|
|
297
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import logger from '../utils/logger';
|
|
2
|
-
import { getConfig } from '../core/ConfigurationService';
|
|
3
|
-
import { initializeAnyOpenRouterModel } from '../clients/openRouterClientWrapper';
|
|
4
|
-
|
|
5
|
-
export type ApiClientType = 'OpenRouter';
|
|
6
|
-
|
|
7
|
-
export interface ApiClientConfig {
|
|
8
|
-
clientType: ApiClientType;
|
|
9
|
-
modelName: string;
|
|
10
|
-
initialized: boolean;
|
|
11
|
-
provider: 'openrouter';
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export async function selectApiClient(cliOptions?: any): Promise<ApiClientConfig> {
|
|
15
|
-
logger.debug('selectApiClient called');
|
|
16
|
-
|
|
17
|
-
// Get model from ConfigurationService or CLI options
|
|
18
|
-
const config = getConfig(cliOptions);
|
|
19
|
-
const requestedModel = cliOptions?.model || config.model || '';
|
|
20
|
-
const normalized = requestedModel.replace(/['"`]/g, '').trim();
|
|
21
|
-
const [, modelName] = normalized.includes(':') ? normalized.split(':', 2) : ['openrouter', normalized];
|
|
22
|
-
|
|
23
|
-
if (!modelName) {
|
|
24
|
-
throw new Error('AI_CODE_REVIEW_MODEL must specify an OpenRouter-compatible model.');
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
await initializeAnyOpenRouterModel();
|
|
28
|
-
|
|
29
|
-
logger.info(`Using OpenRouter model: ${modelName}`);
|
|
30
|
-
|
|
31
|
-
return {
|
|
32
|
-
clientType: 'OpenRouter',
|
|
33
|
-
modelName: `openrouter:${modelName}`,
|
|
34
|
-
initialized: true,
|
|
35
|
-
provider: 'openrouter',
|
|
36
|
-
};
|
|
37
|
-
}
|