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
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Abstract base client for interacting with various AI APIs.
|
|
3
|
+
*
|
|
4
|
+
* This module defines an abstract base class that encapsulates common functionality
|
|
5
|
+
* across different AI client implementations (OpenAI, Anthropic, Google, etc.).
|
|
6
|
+
* It provides a unified interface for model detection, initialization, review generation,
|
|
7
|
+
* and other shared operations.
|
|
8
|
+
*/
|
|
9
|
+
import type { CostInfo, FileInfo, ReviewOptions, ReviewResult, ReviewType } from '../../types/review';
|
|
10
|
+
import type { ProjectDocs } from '../../utils/projectDocs';
|
|
11
|
+
/**
|
|
12
|
+
* Abstract base class for AI model clients
|
|
13
|
+
*/
|
|
14
|
+
export declare abstract class AbstractClient {
|
|
15
|
+
protected modelName: string;
|
|
16
|
+
protected isInitialized: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Check if the client is initialized
|
|
19
|
+
* @returns True if initialized, false otherwise
|
|
20
|
+
*/
|
|
21
|
+
getIsInitialized(): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Check if the provided model name is supported by this client
|
|
24
|
+
* @param modelName The full model name (potentially with provider prefix)
|
|
25
|
+
* @returns Object indicating if this is the correct client for the model, and parsed model info
|
|
26
|
+
*/
|
|
27
|
+
abstract isModelSupported(modelName: string): {
|
|
28
|
+
isCorrect: boolean;
|
|
29
|
+
adapter: string;
|
|
30
|
+
modelName: string;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Initialize the client with the appropriate configuration
|
|
34
|
+
* @returns Promise resolving to a boolean indicating success
|
|
35
|
+
*/
|
|
36
|
+
abstract initialize(): Promise<boolean>;
|
|
37
|
+
/**
|
|
38
|
+
* Generate a review for a single file
|
|
39
|
+
* @param fileContent Content of the file to review
|
|
40
|
+
* @param filePath Path to the file
|
|
41
|
+
* @param reviewType Type of review to perform
|
|
42
|
+
* @param projectDocs Optional project documentation
|
|
43
|
+
* @param options Review options
|
|
44
|
+
* @returns Promise resolving to the review result
|
|
45
|
+
*/
|
|
46
|
+
abstract generateReview(fileContent: string, filePath: string, reviewType: ReviewType, projectDocs?: ProjectDocs | null, options?: ReviewOptions): Promise<ReviewResult>;
|
|
47
|
+
/**
|
|
48
|
+
* Generate a consolidated review for multiple files
|
|
49
|
+
* @param files Array of file information objects
|
|
50
|
+
* @param projectName Name of the project
|
|
51
|
+
* @param reviewType Type of review to perform
|
|
52
|
+
* @param projectDocs Optional project documentation
|
|
53
|
+
* @param options Review options
|
|
54
|
+
* @returns Promise resolving to the review result
|
|
55
|
+
*/
|
|
56
|
+
abstract generateConsolidatedReview(files: FileInfo[], projectName: string, reviewType: ReviewType, projectDocs?: ProjectDocs | null, options?: ReviewOptions): Promise<ReviewResult>;
|
|
57
|
+
/**
|
|
58
|
+
* Generate an architectural review for a project
|
|
59
|
+
* @param files Array of file information objects
|
|
60
|
+
* @param projectName Name of the project
|
|
61
|
+
* @param projectDocs Optional project documentation
|
|
62
|
+
* @param options Review options
|
|
63
|
+
* @returns Promise resolving to the review result
|
|
64
|
+
*/
|
|
65
|
+
abstract generateArchitecturalReview(files: FileInfo[], projectName: string, projectDocs?: ProjectDocs | null, options?: ReviewOptions): Promise<ReviewResult>;
|
|
66
|
+
/**
|
|
67
|
+
* Process the response and extract structured data if possible
|
|
68
|
+
* @param content The response content to process
|
|
69
|
+
* @returns The processed structured data or null
|
|
70
|
+
*/
|
|
71
|
+
protected processResponseForStructuredData(content: string): unknown | null;
|
|
72
|
+
/**
|
|
73
|
+
* Create a standard review result object
|
|
74
|
+
* @param content The review content
|
|
75
|
+
* @param filePath The file path or identifier
|
|
76
|
+
* @param reviewType The type of review
|
|
77
|
+
* @param cost Optional cost information
|
|
78
|
+
* @returns The standardized review result object
|
|
79
|
+
*/
|
|
80
|
+
protected createReviewResult(content: string, filePath: string, reviewType: ReviewType, cost?: CostInfo): ReviewResult;
|
|
81
|
+
/**
|
|
82
|
+
* Get the full model name including provider prefix
|
|
83
|
+
* @returns The full model name
|
|
84
|
+
*/
|
|
85
|
+
protected getFullModelName(): string;
|
|
86
|
+
/**
|
|
87
|
+
* Get the provider name for this client
|
|
88
|
+
* @returns The provider name (e.g., "openai", "anthropic", "gemini")
|
|
89
|
+
*/
|
|
90
|
+
protected abstract getProviderName(): string;
|
|
91
|
+
/**
|
|
92
|
+
* Handle common error cases in API interactions
|
|
93
|
+
* @param error The error that occurred
|
|
94
|
+
* @param operation The operation that was being performed
|
|
95
|
+
* @param filePath The file path or identifier related to the error
|
|
96
|
+
* @throws The processed error
|
|
97
|
+
*/
|
|
98
|
+
protected handleApiError(error: unknown, operation: string, filePath: string): never;
|
|
99
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Abstract base client for interacting with various AI APIs.
|
|
4
|
+
*
|
|
5
|
+
* This module defines an abstract base class that encapsulates common functionality
|
|
6
|
+
* across different AI client implementations (OpenAI, Anthropic, Google, etc.).
|
|
7
|
+
* It provides a unified interface for model detection, initialization, review generation,
|
|
8
|
+
* and other shared operations.
|
|
9
|
+
*/
|
|
10
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
11
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.AbstractClient = void 0;
|
|
15
|
+
const logger_1 = __importDefault(require("../../utils/logger"));
|
|
16
|
+
/**
|
|
17
|
+
* Abstract base class for AI model clients
|
|
18
|
+
*/
|
|
19
|
+
class AbstractClient {
|
|
20
|
+
modelName = '';
|
|
21
|
+
isInitialized = false;
|
|
22
|
+
/**
|
|
23
|
+
* Check if the client is initialized
|
|
24
|
+
* @returns True if initialized, false otherwise
|
|
25
|
+
*/
|
|
26
|
+
getIsInitialized() {
|
|
27
|
+
return this.isInitialized;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Process the response and extract structured data if possible
|
|
31
|
+
* @param content The response content to process
|
|
32
|
+
* @returns The processed structured data or null
|
|
33
|
+
*/
|
|
34
|
+
processResponseForStructuredData(content) {
|
|
35
|
+
try {
|
|
36
|
+
// First, check if the response is wrapped in a code block
|
|
37
|
+
const jsonMatch = content.match(/```(?:json)?\s*([\s\S]*?)\s*```/);
|
|
38
|
+
const jsonContent = jsonMatch ? jsonMatch[1] : content;
|
|
39
|
+
// Check if the content is valid JSON
|
|
40
|
+
const structuredData = JSON.parse(jsonContent);
|
|
41
|
+
// Validate that it has the expected structure
|
|
42
|
+
if (!structuredData.summary || !Array.isArray(structuredData.issues)) {
|
|
43
|
+
logger_1.default.warn('Response is valid JSON but does not have the expected structure');
|
|
44
|
+
}
|
|
45
|
+
return structuredData;
|
|
46
|
+
}
|
|
47
|
+
catch (parseError) {
|
|
48
|
+
logger_1.default.warn(`Response is not valid JSON: ${parseError instanceof Error ? parseError.message : String(parseError)}`);
|
|
49
|
+
// Return null for non-JSON content
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Create a standard review result object
|
|
55
|
+
* @param content The review content
|
|
56
|
+
* @param filePath The file path or identifier
|
|
57
|
+
* @param reviewType The type of review
|
|
58
|
+
* @param cost Optional cost information
|
|
59
|
+
* @returns The standardized review result object
|
|
60
|
+
*/
|
|
61
|
+
createReviewResult(content, filePath, reviewType, cost) {
|
|
62
|
+
const structuredData = this.processResponseForStructuredData(content);
|
|
63
|
+
return {
|
|
64
|
+
content,
|
|
65
|
+
cost,
|
|
66
|
+
modelUsed: this.getFullModelName(),
|
|
67
|
+
filePath,
|
|
68
|
+
reviewType,
|
|
69
|
+
timestamp: new Date().toISOString(),
|
|
70
|
+
structuredData: structuredData,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get the full model name including provider prefix
|
|
75
|
+
* @returns The full model name
|
|
76
|
+
*/
|
|
77
|
+
getFullModelName() {
|
|
78
|
+
const modelParts = this.modelName.split(':');
|
|
79
|
+
if (modelParts.length === 2) {
|
|
80
|
+
return this.modelName; // Already has provider prefix
|
|
81
|
+
}
|
|
82
|
+
return `${this.getProviderName()}:${this.modelName}`;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Handle common error cases in API interactions
|
|
86
|
+
* @param error The error that occurred
|
|
87
|
+
* @param operation The operation that was being performed
|
|
88
|
+
* @param filePath The file path or identifier related to the error
|
|
89
|
+
* @throws The processed error
|
|
90
|
+
*/
|
|
91
|
+
handleApiError(error, operation, filePath) {
|
|
92
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
93
|
+
logger_1.default.error(`Error ${operation} for ${filePath}: ${errorMessage}`);
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.AbstractClient = AbstractClient;
|
|
98
|
+
//# sourceMappingURL=abstractClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstractClient.js","sourceRoot":"","sources":["../../../src/clients/base/abstractClient.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;AAUH,gEAAwC;AAGxC;;GAEG;AACH,MAAsB,cAAc;IACxB,SAAS,GAAG,EAAE,CAAC;IACf,aAAa,GAAG,KAAK,CAAC;IAEhC;;;OAGG;IACI,gBAAgB;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAoED;;;;OAIG;IACO,gCAAgC,CAAC,OAAe;QACxD,IAAI,CAAC;YACH,0DAA0D;YAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACnE,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAEvD,qCAAqC;YACrC,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAE/C,8CAA8C;YAC9C,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrE,gBAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;YACjF,CAAC;YAED,OAAO,cAAc,CAAC;QACxB,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,gBAAM,CAAC,IAAI,CACT,+BACE,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CACtE,EAAE,CACH,CAAC;YACF,mCAAmC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACO,kBAAkB,CAC1B,OAAe,EACf,QAAgB,EAChB,UAAsB,EACtB,IAAe;QAEf,MAAM,cAAc,GAAG,IAAI,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC;QAEtE,OAAO;YACL,OAAO;YACP,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAClC,QAAQ;YACR,UAAU;YACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,cAAc,EAAE,cAA8C;SAC/D,CAAC;IACJ,CAAC;IAED;;;OAGG;IACO,gBAAgB;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,8BAA8B;QACvD,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;IACvD,CAAC;IAQD;;;;;;OAMG;IACO,cAAc,CAAC,KAAc,EAAE,SAAiB,EAAE,QAAgB;QAC1E,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,gBAAM,CAAC,KAAK,CAAC,SAAS,SAAS,QAAQ,QAAQ,KAAK,YAAY,EAAE,CAAC,CAAC;QACpE,MAAM,KAAK,CAAC;IACd,CAAC;CACF;AAtKD,wCAsKC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview HTTP client utilities for API interactions.
|
|
3
|
+
*
|
|
4
|
+
* This module provides common HTTP request handling functionality with retry logic,
|
|
5
|
+
* error handling, and timeout management. It's designed to be used by the various
|
|
6
|
+
* AI API client implementations.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Fetch with automatic retry for transient errors
|
|
10
|
+
* @param url The URL to fetch from
|
|
11
|
+
* @param options Request options
|
|
12
|
+
* @param retries Number of retries to attempt
|
|
13
|
+
* @returns Promise resolving to the Response object
|
|
14
|
+
* @throws Error if all retries fail
|
|
15
|
+
*/
|
|
16
|
+
export declare function fetchWithRetry(url: string, options: RequestInit, retries?: number): Promise<Response>;
|
|
17
|
+
/**
|
|
18
|
+
* Generic retry mechanism for any asynchronous function
|
|
19
|
+
* @param fn The function to retry
|
|
20
|
+
* @param retries Maximum number of retries
|
|
21
|
+
* @returns Promise resolving to the function's result
|
|
22
|
+
* @throws Error if all retries fail
|
|
23
|
+
*/
|
|
24
|
+
export declare function withRetry<T>(fn: () => Promise<T>, retries?: number): Promise<T>;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview HTTP client utilities for API interactions.
|
|
4
|
+
*
|
|
5
|
+
* This module provides common HTTP request handling functionality with retry logic,
|
|
6
|
+
* error handling, and timeout management. It's designed to be used by the various
|
|
7
|
+
* AI API client implementations.
|
|
8
|
+
*/
|
|
9
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.fetchWithRetry = fetchWithRetry;
|
|
14
|
+
exports.withRetry = withRetry;
|
|
15
|
+
const apiErrorHandler_1 = require("../../utils/apiErrorHandler");
|
|
16
|
+
const logger_1 = __importDefault(require("../../utils/logger"));
|
|
17
|
+
/**
|
|
18
|
+
* Fetch with automatic retry for transient errors
|
|
19
|
+
* @param url The URL to fetch from
|
|
20
|
+
* @param options Request options
|
|
21
|
+
* @param retries Number of retries to attempt
|
|
22
|
+
* @returns Promise resolving to the Response object
|
|
23
|
+
* @throws Error if all retries fail
|
|
24
|
+
*/
|
|
25
|
+
async function fetchWithRetry(url, options, retries = 3) {
|
|
26
|
+
logger_1.default.debug(`[FETCH DEBUG] fetchWithRetry called with url: ${url}`);
|
|
27
|
+
for (let i = 0; i < retries; i++) {
|
|
28
|
+
try {
|
|
29
|
+
logger_1.default.debug(`Making API request to ${url} (attempt ${i + 1}/${retries})`);
|
|
30
|
+
const res = await fetch(url, options);
|
|
31
|
+
if (res.ok) {
|
|
32
|
+
// Log successful response headers for debugging (OpenRouter specific)
|
|
33
|
+
const requestId = res.headers.get('x-request-id') || res.headers.get('request-id');
|
|
34
|
+
if (requestId) {
|
|
35
|
+
logger_1.default.debug(`Successful API response - Request ID: ${requestId}`);
|
|
36
|
+
}
|
|
37
|
+
return res;
|
|
38
|
+
}
|
|
39
|
+
logger_1.default.error(`[FETCH DEBUG] Request failed with status: ${res.status}`);
|
|
40
|
+
// Handle rate limiting and server errors with exponential backoff
|
|
41
|
+
if (res.status === 429 || res.status >= 500) {
|
|
42
|
+
const retryAfter = res.headers.get('Retry-After');
|
|
43
|
+
const delayMs = retryAfter ? parseInt(retryAfter, 10) * 1000 : 1000 * 2 ** i;
|
|
44
|
+
logger_1.default.warn(`Request failed with status ${res.status}. Retrying in ${delayMs / 1000}s...`);
|
|
45
|
+
await new Promise((r) => setTimeout(r, delayMs));
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
// For other errors, try to get more detailed information
|
|
49
|
+
try {
|
|
50
|
+
const errorBody = await res.json();
|
|
51
|
+
const requestId = res.headers.get('x-request-id') || res.headers.get('request-id');
|
|
52
|
+
logger_1.default.error(`API error response: ${JSON.stringify(errorBody, null, 2)}`);
|
|
53
|
+
logger_1.default.error(`Request URL: ${url}`);
|
|
54
|
+
logger_1.default.error(`Request headers: ${JSON.stringify(options.headers, null, 2)}`);
|
|
55
|
+
// Log request body if it exists (but mask API keys)
|
|
56
|
+
let modelInfo = '';
|
|
57
|
+
if (options.body) {
|
|
58
|
+
try {
|
|
59
|
+
const body = JSON.parse(options.body);
|
|
60
|
+
if (body.messages) {
|
|
61
|
+
// Only log message structure, not content
|
|
62
|
+
logger_1.default.error(`Request had ${body.messages.length} messages`);
|
|
63
|
+
}
|
|
64
|
+
modelInfo = body.model || '';
|
|
65
|
+
logger_1.default.error(`Request model: ${body.model}`);
|
|
66
|
+
logger_1.default.error(`Request max_tokens: ${body.max_tokens}`);
|
|
67
|
+
logger_1.default.error(`Request max_completion_tokens: ${body.max_completion_tokens}`);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// If body isn't JSON, just note that
|
|
71
|
+
logger_1.default.error('Request body was not JSON');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Create detailed error message
|
|
75
|
+
const errorDetails = [
|
|
76
|
+
`API request failed`,
|
|
77
|
+
`Endpoint: ${url}`,
|
|
78
|
+
`Status: ${res.status}`,
|
|
79
|
+
`Error: ${errorBody.error?.message || JSON.stringify(errorBody)}`,
|
|
80
|
+
];
|
|
81
|
+
if (requestId) {
|
|
82
|
+
errorDetails.push(`Request ID: ${requestId}`);
|
|
83
|
+
}
|
|
84
|
+
if (modelInfo) {
|
|
85
|
+
errorDetails.push(`Model: ${modelInfo}`);
|
|
86
|
+
}
|
|
87
|
+
throw new apiErrorHandler_1.ApiError(errorDetails.join('\n '));
|
|
88
|
+
}
|
|
89
|
+
catch (parseError) {
|
|
90
|
+
// If we can't parse the error response, just use the status
|
|
91
|
+
if (parseError instanceof apiErrorHandler_1.ApiError) {
|
|
92
|
+
throw parseError;
|
|
93
|
+
}
|
|
94
|
+
logger_1.default.error(`Failed to parse error response, status: ${res.status}`);
|
|
95
|
+
throw new apiErrorHandler_1.ApiError(`API request failed\n Endpoint: ${url}\n Status: ${res.status}\n Error: Unable to parse error response`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
// For network errors or other exceptions, retry if we have retries left
|
|
101
|
+
if (i < retries - 1 && !(error instanceof apiErrorHandler_1.ApiError)) {
|
|
102
|
+
const delayMs = 1000 * 2 ** i;
|
|
103
|
+
logger_1.default.warn(`Request failed with error: ${error instanceof Error ? error.message : String(error)}. Retrying in ${delayMs / 1000}s...`);
|
|
104
|
+
await new Promise((r) => setTimeout(r, delayMs));
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
throw error;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
throw new apiErrorHandler_1.ApiError(`Failed after ${retries} retries`);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Generic retry mechanism for any asynchronous function
|
|
115
|
+
* @param fn The function to retry
|
|
116
|
+
* @param retries Maximum number of retries
|
|
117
|
+
* @returns Promise resolving to the function's result
|
|
118
|
+
* @throws Error if all retries fail
|
|
119
|
+
*/
|
|
120
|
+
async function withRetry(fn, retries = 3) {
|
|
121
|
+
for (let i = 0; i < retries; i++) {
|
|
122
|
+
try {
|
|
123
|
+
return await fn();
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
// Type guard for errors with status property
|
|
127
|
+
const err = error;
|
|
128
|
+
// Handle rate limiting and server errors
|
|
129
|
+
if ((err.status === 429 || (err.status && err.status >= 500)) && i < retries - 1) {
|
|
130
|
+
const delayMs = 1000 * 2 ** i;
|
|
131
|
+
logger_1.default.warn(`Operation failed with status ${err.status}. Retrying in ${delayMs / 1000}s...`);
|
|
132
|
+
await new Promise((r) => setTimeout(r, delayMs));
|
|
133
|
+
}
|
|
134
|
+
else if (i < retries - 1) {
|
|
135
|
+
// For other errors, retry with backoff
|
|
136
|
+
const delayMs = 1000 * 2 ** i;
|
|
137
|
+
logger_1.default.warn(`Operation failed: ${error instanceof Error ? error.message : String(error)}. Retrying in ${delayMs / 1000}s...`);
|
|
138
|
+
await new Promise((r) => setTimeout(r, delayMs));
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
throw error;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
throw new apiErrorHandler_1.ApiError(`Failed after ${retries} retries`);
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=httpClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../../../src/clients/base/httpClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Common base functionality for AI API clients.
|
|
4
|
+
*
|
|
5
|
+
* This module serves as the main entry point for the base client functionality,
|
|
6
|
+
* providing a unified interface for client implementation, HTTP requests,
|
|
7
|
+
* response processing, and model detection.
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
21
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
22
|
+
};
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
__exportStar(require("./abstractClient"), exports);
|
|
25
|
+
__exportStar(require("./httpClient"), exports);
|
|
26
|
+
__exportStar(require("./modelDetection"), exports);
|
|
27
|
+
__exportStar(require("./responseProcessor"), exports);
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/clients/base/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;AAEH,mDAAiC;AACjC,+CAA6B;AAC7B,mDAAiC;AACjC,sDAAoC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Model detection and initialization utilities for AI clients.
|
|
3
|
+
*
|
|
4
|
+
* This module provides common functionality for detecting model providers,
|
|
5
|
+
* parsing model names, validating API keys, and initializing client instances.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Result of model detection
|
|
9
|
+
*/
|
|
10
|
+
export interface ModelDetectionResult {
|
|
11
|
+
/** Whether this is the correct client for the model */
|
|
12
|
+
isCorrect: boolean;
|
|
13
|
+
/** The provider/adapter name (e.g., "openai", "anthropic", "gemini") */
|
|
14
|
+
adapter: string;
|
|
15
|
+
/** The specific model name without provider prefix */
|
|
16
|
+
modelName: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Parse a model name string into provider and model components
|
|
20
|
+
* @param modelNameString The model name string (possibly with provider prefix)
|
|
21
|
+
* @param defaultProvider The default provider to use if none is specified
|
|
22
|
+
* @returns Object with adapter and modelName properties
|
|
23
|
+
*/
|
|
24
|
+
export declare function parseModelName(modelNameString: string, defaultProvider: string): {
|
|
25
|
+
adapter: string;
|
|
26
|
+
modelName: string;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Detect if a model name is for a specific provider
|
|
30
|
+
* @param providerName The provider to check for
|
|
31
|
+
* @param modelNameString The model name to check (with or without provider prefix)
|
|
32
|
+
* @returns ModelDetectionResult with detection information
|
|
33
|
+
*/
|
|
34
|
+
export declare function detectModelProvider(providerName: string, modelNameString?: string): ModelDetectionResult;
|
|
35
|
+
/**
|
|
36
|
+
* Validate API key for a provider
|
|
37
|
+
* @param providerName The provider to validate the API key for
|
|
38
|
+
* @param apiKeyName Environment variable name for the API key (optional)
|
|
39
|
+
* @returns Whether the API key is valid
|
|
40
|
+
*/
|
|
41
|
+
export declare function validateApiKey(providerName: string, apiKeyName?: string): boolean;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Model detection and initialization utilities for AI clients.
|
|
4
|
+
*
|
|
5
|
+
* This module provides common functionality for detecting model providers,
|
|
6
|
+
* parsing model names, validating API keys, and initializing client instances.
|
|
7
|
+
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.parseModelName = parseModelName;
|
|
13
|
+
exports.detectModelProvider = detectModelProvider;
|
|
14
|
+
exports.validateApiKey = validateApiKey;
|
|
15
|
+
const ConfigurationService_1 = require("../../core/ConfigurationService");
|
|
16
|
+
const logger_1 = __importDefault(require("../../utils/logger"));
|
|
17
|
+
/**
|
|
18
|
+
* Parse a model name string into provider and model components
|
|
19
|
+
* @param modelNameString The model name string (possibly with provider prefix)
|
|
20
|
+
* @param defaultProvider The default provider to use if none is specified
|
|
21
|
+
* @returns Object with adapter and modelName properties
|
|
22
|
+
*/
|
|
23
|
+
function parseModelName(modelNameString, defaultProvider) {
|
|
24
|
+
if (!modelNameString) {
|
|
25
|
+
return { adapter: defaultProvider, modelName: '' };
|
|
26
|
+
}
|
|
27
|
+
// Parse the model name
|
|
28
|
+
return modelNameString.includes(':')
|
|
29
|
+
? {
|
|
30
|
+
adapter: modelNameString.split(':')[0],
|
|
31
|
+
modelName: modelNameString.split(':')[1],
|
|
32
|
+
}
|
|
33
|
+
: {
|
|
34
|
+
adapter: defaultProvider,
|
|
35
|
+
modelName: modelNameString,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Detect if a model name is for a specific provider
|
|
40
|
+
* @param providerName The provider to check for
|
|
41
|
+
* @param modelNameString The model name to check (with or without provider prefix)
|
|
42
|
+
* @returns ModelDetectionResult with detection information
|
|
43
|
+
*/
|
|
44
|
+
function detectModelProvider(providerName, modelNameString) {
|
|
45
|
+
// Get the model from configuration if not provided
|
|
46
|
+
const config = (0, ConfigurationService_1.getConfig)();
|
|
47
|
+
const selectedModel = modelNameString || config.model || '';
|
|
48
|
+
// Parse the model name
|
|
49
|
+
const { adapter, modelName } = parseModelName(selectedModel, providerName);
|
|
50
|
+
return {
|
|
51
|
+
isCorrect: adapter === providerName,
|
|
52
|
+
adapter,
|
|
53
|
+
modelName,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Validate API key for a provider
|
|
58
|
+
* @param providerName The provider to validate the API key for
|
|
59
|
+
* @param apiKeyName Environment variable name for the API key (optional)
|
|
60
|
+
* @returns Whether the API key is valid
|
|
61
|
+
*/
|
|
62
|
+
function validateApiKey(providerName, apiKeyName) {
|
|
63
|
+
// Only support OpenRouter
|
|
64
|
+
if (providerName.toLowerCase() !== 'openrouter') {
|
|
65
|
+
logger_1.default.error(`Provider ${providerName} is not supported. Only OpenRouter is supported.`);
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
// Try to get the API key from the config
|
|
69
|
+
const config = (0, ConfigurationService_1.getConfig)();
|
|
70
|
+
const apiKey = config.openRouterApiKey;
|
|
71
|
+
// Check if we have an API key
|
|
72
|
+
if (!apiKey) {
|
|
73
|
+
const envVarName = apiKeyName || 'AI_CODE_REVIEW_OPENROUTER_API_KEY';
|
|
74
|
+
logger_1.default.error(`No OpenRouter API key found in configuration.`);
|
|
75
|
+
logger_1.default.error('Please add the following to your .env.local file:');
|
|
76
|
+
logger_1.default.error(`- ${envVarName}=your_openrouter_api_key_here`);
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
// Log API key status
|
|
80
|
+
if (config.debug) {
|
|
81
|
+
logger_1.default.info(`Using real OpenRouter API responses.`);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
logger_1.default.info(`API key found for OpenRouter. Using real API responses.`);
|
|
85
|
+
}
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=modelDetection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelDetection.js","sourceRoot":"","sources":["../../../src/clients/base/modelDetection.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAuBH,wCAkBC;AAQD,kDAgBC;AAQD,wCA4BC;AAnGD,0EAA4D;AAC5D,gEAAwC;AAcxC;;;;;GAKG;AACH,SAAgB,cAAc,CAC5B,eAAuB,EACvB,eAAuB;IAEvB,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACrD,CAAC;IAED,uBAAuB;IACvB,OAAO,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClC,CAAC,CAAC;YACE,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACtC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACzC;QACH,CAAC,CAAC;YACE,OAAO,EAAE,eAAe;YACxB,SAAS,EAAE,eAAe;SAC3B,CAAC;AACR,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CACjC,YAAoB,EACpB,eAAwB;IAExB,mDAAmD;IACnD,MAAM,MAAM,GAAG,IAAA,gCAAS,GAAE,CAAC;IAC3B,MAAM,aAAa,GAAG,eAAe,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IAE5D,uBAAuB;IACvB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAE3E,OAAO;QACL,SAAS,EAAE,OAAO,KAAK,YAAY;QACnC,OAAO;QACP,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,YAAoB,EAAE,UAAmB;IACtE,0BAA0B;IAC1B,IAAI,YAAY,CAAC,WAAW,EAAE,KAAK,YAAY,EAAE,CAAC;QAChD,gBAAM,CAAC,KAAK,CAAC,YAAY,YAAY,kDAAkD,CAAC,CAAC;QACzF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yCAAyC;IACzC,MAAM,MAAM,GAAG,IAAA,gCAAS,GAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAEvC,8BAA8B;IAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,UAAU,GAAG,UAAU,IAAI,mCAAmC,CAAC;QACrE,gBAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC9D,gBAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAClE,gBAAM,CAAC,KAAK,CAAC,KAAK,UAAU,+BAA+B,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qBAAqB;IACrB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,gBAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,gBAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Common response processing and error handling for AI API clients.
|
|
3
|
+
*
|
|
4
|
+
* This module provides shared functionality for processing API responses,
|
|
5
|
+
* extracting structured data, handling errors, and standardizing output formats
|
|
6
|
+
* across different AI providers.
|
|
7
|
+
*/
|
|
8
|
+
import type { ReviewResult, ReviewType } from '../../types/review';
|
|
9
|
+
import type { StructuredReview } from '../../types/structuredReview';
|
|
10
|
+
import { ApiError } from '../../utils/apiErrorHandler';
|
|
11
|
+
/**
|
|
12
|
+
* Process API response content and extract structured data if possible
|
|
13
|
+
* @param content The API response content
|
|
14
|
+
* @returns Structured data object or null if not valid JSON
|
|
15
|
+
*/
|
|
16
|
+
export declare function extractStructuredData(content: string): StructuredReview | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* Create a standardized review result object
|
|
19
|
+
* @param content The review content
|
|
20
|
+
* @param prompt The original prompt (for cost calculation)
|
|
21
|
+
* @param modelName The full model name
|
|
22
|
+
* @param filePath The file path or identifier
|
|
23
|
+
* @param reviewType The review type
|
|
24
|
+
* @param options Optional review options to determine expected output format
|
|
25
|
+
* @returns Standardized review result
|
|
26
|
+
*/
|
|
27
|
+
export declare function createStandardReviewResult(content: string, prompt: string, modelName: string, filePath: string, reviewType: ReviewType, options?: {
|
|
28
|
+
interactive?: boolean;
|
|
29
|
+
output?: string;
|
|
30
|
+
}): ReviewResult;
|
|
31
|
+
/**
|
|
32
|
+
* Handle API errors with standardized logging and wrapping
|
|
33
|
+
* @param error The original error
|
|
34
|
+
* @param operation Description of the operation that failed
|
|
35
|
+
* @param modelName The model being used
|
|
36
|
+
* @param context Additional context for debugging
|
|
37
|
+
* @returns Wrapped ApiError
|
|
38
|
+
*/
|
|
39
|
+
export declare function handleApiError(error: unknown, operation: string, modelName: string, context?: {
|
|
40
|
+
endpoint?: string;
|
|
41
|
+
statusCode?: number;
|
|
42
|
+
requestId?: string;
|
|
43
|
+
filePath?: string;
|
|
44
|
+
additionalInfo?: Record<string, any>;
|
|
45
|
+
}): ApiError;
|