codereview-aia 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analysis/FindingsExtractor.d.ts +105 -0
- package/dist/analysis/FindingsExtractor.js +363 -0
- package/dist/analysis/FindingsExtractor.js.map +1 -0
- package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.d.ts +111 -0
- package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.js +215 -0
- package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.js.map +1 -0
- package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.d.ts +142 -0
- package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.js +503 -0
- package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.js.map +1 -0
- package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.d.ts +88 -0
- package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.js +343 -0
- package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.js.map +1 -0
- package/dist/analysis/ai-detection/core/AIDetectionEngine.d.ts +104 -0
- package/dist/analysis/ai-detection/core/AIDetectionEngine.js +369 -0
- package/dist/analysis/ai-detection/core/AIDetectionEngine.js.map +1 -0
- package/dist/analysis/ai-detection/types/DetectionTypes.d.ts +364 -0
- package/dist/analysis/ai-detection/types/DetectionTypes.js +32 -0
- package/dist/analysis/ai-detection/types/DetectionTypes.js.map +1 -0
- package/dist/analysis/ai-detection/utils/SubmissionConverter.d.ts +97 -0
- package/dist/analysis/ai-detection/utils/SubmissionConverter.js +339 -0
- package/dist/analysis/ai-detection/utils/SubmissionConverter.js.map +1 -0
- package/dist/analysis/context/ReviewContext.d.ts +184 -0
- package/dist/analysis/context/ReviewContext.js +294 -0
- package/dist/analysis/context/ReviewContext.js.map +1 -0
- package/{src/analysis/context/index.ts → dist/analysis/context/index.d.ts} +0 -1
- package/dist/analysis/context/index.js +23 -0
- package/dist/analysis/context/index.js.map +1 -0
- package/{src/analysis/index.ts → dist/analysis/index.d.ts} +0 -1
- package/dist/analysis/index.js +24 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/analysis/static/wpPhpcsRunner.d.ts +11 -0
- package/dist/analysis/static/wpPhpcsRunner.js +219 -0
- package/dist/analysis/static/wpPhpcsRunner.js.map +1 -0
- package/dist/analysis/tokens/TokenAnalysisFormatter.d.ts +27 -0
- package/{src/analysis/tokens/TokenAnalysisFormatter.ts → dist/analysis/tokens/TokenAnalysisFormatter.js} +64 -75
- package/dist/analysis/tokens/TokenAnalysisFormatter.js.map +1 -0
- package/dist/analysis/tokens/TokenAnalyzer.d.ts +155 -0
- package/dist/analysis/tokens/TokenAnalyzer.js +502 -0
- package/dist/analysis/tokens/TokenAnalyzer.js.map +1 -0
- package/{src/analysis/tokens/index.ts → dist/analysis/tokens/index.d.ts} +0 -1
- package/dist/analysis/tokens/index.js +24 -0
- package/dist/analysis/tokens/index.js.map +1 -0
- package/dist/clients/base/abstractClient.d.ts +99 -0
- package/dist/clients/base/abstractClient.js +98 -0
- package/dist/clients/base/abstractClient.js.map +1 -0
- package/dist/clients/base/httpClient.d.ts +24 -0
- package/dist/clients/base/httpClient.js +147 -0
- package/dist/clients/base/httpClient.js.map +1 -0
- package/{src/clients/base/index.ts → dist/clients/base/index.d.ts} +0 -1
- package/dist/clients/base/index.js +28 -0
- package/dist/clients/base/index.js.map +1 -0
- package/dist/clients/base/modelDetection.d.ts +41 -0
- package/dist/clients/base/modelDetection.js +88 -0
- package/dist/clients/base/modelDetection.js.map +1 -0
- package/dist/clients/base/responseProcessor.d.ts +45 -0
- package/dist/clients/base/responseProcessor.js +495 -0
- package/dist/clients/base/responseProcessor.js.map +1 -0
- package/dist/clients/factory/clientFactory.d.ts +23 -0
- package/dist/clients/factory/clientFactory.js +50 -0
- package/dist/clients/factory/clientFactory.js.map +1 -0
- package/{src/clients/factory/index.ts → dist/clients/factory/index.d.ts} +0 -1
- package/dist/clients/factory/index.js +24 -0
- package/dist/clients/factory/index.js.map +1 -0
- package/{src/clients/implementations/index.ts → dist/clients/implementations/index.d.ts} +0 -1
- package/dist/clients/implementations/index.js +24 -0
- package/dist/clients/implementations/index.js.map +1 -0
- package/dist/clients/implementations/openRouterClient.d.ts +69 -0
- package/dist/clients/implementations/openRouterClient.js +294 -0
- package/dist/clients/implementations/openRouterClient.js.map +1 -0
- package/dist/clients/openRouterClient.d.ts +42 -0
- package/dist/clients/openRouterClient.js +738 -0
- package/dist/clients/openRouterClient.js.map +1 -0
- package/{src/clients/openRouterClientWrapper.ts → dist/clients/openRouterClientWrapper.d.ts} +2 -24
- package/dist/clients/openRouterClientWrapper.js +64 -0
- package/dist/clients/openRouterClientWrapper.js.map +1 -0
- package/dist/clients/utils/directoryStructure.d.ts +14 -0
- package/dist/clients/utils/directoryStructure.js +48 -0
- package/dist/clients/utils/directoryStructure.js.map +1 -0
- package/{src/clients/utils/index.ts → dist/clients/utils/index.d.ts} +0 -1
- package/dist/clients/utils/index.js +31 -0
- package/dist/clients/utils/index.js.map +1 -0
- package/dist/clients/utils/languageDetection.d.ts +13 -0
- package/dist/clients/utils/languageDetection.js +46 -0
- package/dist/clients/utils/languageDetection.js.map +1 -0
- package/dist/clients/utils/promptFormatter.d.ts +37 -0
- package/dist/clients/utils/promptFormatter.js +150 -0
- package/dist/clients/utils/promptFormatter.js.map +1 -0
- package/{src/clients/utils/promptLoader.ts → dist/clients/utils/promptLoader.d.ts} +1 -27
- package/dist/clients/utils/promptLoader.js +49 -0
- package/dist/clients/utils/promptLoader.js.map +1 -0
- package/dist/clients/utils/tokenCounter.d.ts +81 -0
- package/dist/clients/utils/tokenCounter.js +209 -0
- package/dist/clients/utils/tokenCounter.js.map +1 -0
- package/dist/core/ApiClientSelector.d.ts +8 -0
- package/dist/core/ApiClientSelector.js +29 -0
- package/dist/core/ApiClientSelector.js.map +1 -0
- package/dist/core/ConfigurationService.d.ts +307 -0
- package/dist/core/ConfigurationService.js +516 -0
- package/dist/core/ConfigurationService.js.map +1 -0
- package/dist/core/ConsolidationService.d.ts +99 -0
- package/dist/core/ConsolidationService.js +341 -0
- package/dist/core/ConsolidationService.js.map +1 -0
- package/dist/core/InteractiveDisplayManager.d.ts +22 -0
- package/dist/core/InteractiveDisplayManager.js +70 -0
- package/dist/core/InteractiveDisplayManager.js.map +1 -0
- package/dist/core/OutputManager.d.ts +26 -0
- package/dist/core/OutputManager.js +217 -0
- package/dist/core/OutputManager.js.map +1 -0
- package/dist/core/ReviewGenerator.d.ts +13 -0
- package/dist/core/ReviewGenerator.js +102 -0
- package/dist/core/ReviewGenerator.js.map +1 -0
- package/dist/core/fileDiscovery.d.ts +35 -0
- package/dist/core/fileDiscovery.js +202 -0
- package/dist/core/fileDiscovery.js.map +1 -0
- package/dist/core/handlers/EstimationHandler.d.ts +18 -0
- package/dist/core/handlers/EstimationHandler.js +110 -0
- package/dist/core/handlers/EstimationHandler.js.map +1 -0
- package/dist/core/handlers/FileProcessingHandler.d.ts +31 -0
- package/dist/core/handlers/FileProcessingHandler.js +164 -0
- package/dist/core/handlers/FileProcessingHandler.js.map +1 -0
- package/dist/core/handlers/OutputHandler.d.ts +27 -0
- package/dist/core/handlers/OutputHandler.js +127 -0
- package/dist/core/handlers/OutputHandler.js.map +1 -0
- package/dist/core/handlers/ReviewExecutor.d.ts +32 -0
- package/dist/core/handlers/ReviewExecutor.js +111 -0
- package/dist/core/handlers/ReviewExecutor.js.map +1 -0
- package/dist/core/reviewOrchestrator.d.ts +24 -0
- package/dist/core/reviewOrchestrator.js +354 -0
- package/dist/core/reviewOrchestrator.js.map +1 -0
- package/dist/core/utils/ModelInfoUtils.d.ts +16 -0
- package/dist/core/utils/ModelInfoUtils.js +54 -0
- package/dist/core/utils/ModelInfoUtils.js.map +1 -0
- package/{src/formatters/outputFormatter.ts → dist/formatters/outputFormatter.d.ts} +2 -33
- package/dist/formatters/outputFormatter.js +65 -0
- package/dist/formatters/outputFormatter.js.map +1 -0
- package/dist/formatters/utils/IssueFormatters.d.ts +20 -0
- package/dist/formatters/utils/IssueFormatters.js +67 -0
- package/dist/formatters/utils/IssueFormatters.js.map +1 -0
- package/dist/formatters/utils/JsonFormatter.d.ts +13 -0
- package/dist/formatters/utils/JsonFormatter.js +57 -0
- package/dist/formatters/utils/JsonFormatter.js.map +1 -0
- package/dist/formatters/utils/MarkdownFormatters.d.ts +51 -0
- package/dist/formatters/utils/MarkdownFormatters.js +456 -0
- package/dist/formatters/utils/MarkdownFormatters.js.map +1 -0
- package/dist/formatters/utils/MetadataFormatter.d.ts +65 -0
- package/dist/formatters/utils/MetadataFormatter.js +219 -0
- package/dist/formatters/utils/MetadataFormatter.js.map +1 -0
- package/dist/formatters/utils/ModelInfoExtractor.d.ts +33 -0
- package/dist/formatters/utils/ModelInfoExtractor.js +111 -0
- package/dist/formatters/utils/ModelInfoExtractor.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/PluginInterface.d.ts +44 -0
- package/dist/plugins/PluginInterface.js +9 -0
- package/dist/plugins/PluginInterface.js.map +1 -0
- package/dist/plugins/PluginManager.d.ts +51 -0
- package/dist/plugins/PluginManager.js +151 -0
- package/dist/plugins/PluginManager.js.map +1 -0
- package/dist/prompts/PromptManager.d.ts +30 -0
- package/dist/prompts/PromptManager.js +62 -0
- package/dist/prompts/PromptManager.js.map +1 -0
- package/dist/prompts/cache/PromptCache.d.ts +32 -0
- package/dist/prompts/cache/PromptCache.js +48 -0
- package/dist/prompts/cache/PromptCache.js.map +1 -0
- package/dist/runtime/auth/service.d.ts +2 -0
- package/dist/runtime/auth/service.js +41 -0
- package/dist/runtime/auth/service.js.map +1 -0
- package/dist/runtime/auth/session.d.ts +5 -0
- package/dist/runtime/auth/session.js +87 -0
- package/dist/runtime/auth/session.js.map +1 -0
- package/dist/runtime/auth/types.d.ts +9 -0
- package/dist/runtime/auth/types.js +3 -0
- package/dist/runtime/auth/types.js.map +1 -0
- package/dist/runtime/cliEntry.d.ts +1 -0
- package/dist/runtime/cliEntry.js +266 -0
- package/dist/runtime/cliEntry.js.map +1 -0
- package/dist/runtime/debug/logManager.d.ts +5 -0
- package/dist/runtime/debug/logManager.js +31 -0
- package/dist/runtime/debug/logManager.js.map +1 -0
- package/dist/runtime/errors.d.ts +5 -0
- package/dist/runtime/errors.js +15 -0
- package/dist/runtime/errors.js.map +1 -0
- package/dist/runtime/fileCollector.d.ts +14 -0
- package/dist/runtime/fileCollector.js +382 -0
- package/dist/runtime/fileCollector.js.map +1 -0
- package/dist/runtime/manifest.d.ts +1 -0
- package/dist/runtime/manifest.js +65 -0
- package/dist/runtime/manifest.js.map +1 -0
- package/dist/runtime/openrouterProxy.d.ts +4 -0
- package/dist/runtime/openrouterProxy.js +43 -0
- package/dist/runtime/openrouterProxy.js.map +1 -0
- package/dist/runtime/preprod/webCheck.d.ts +1 -0
- package/dist/runtime/preprod/webCheck.js +98 -0
- package/dist/runtime/preprod/webCheck.js.map +1 -0
- package/dist/runtime/proxyConfig.d.ts +6 -0
- package/dist/runtime/proxyConfig.js +86 -0
- package/dist/runtime/proxyConfig.js.map +1 -0
- package/dist/runtime/proxyEnvironment.d.ts +3 -0
- package/dist/runtime/proxyEnvironment.js +63 -0
- package/dist/runtime/proxyEnvironment.js.map +1 -0
- package/dist/runtime/reportMerge.d.ts +30 -0
- package/dist/runtime/reportMerge.js +70 -0
- package/dist/runtime/reportMerge.js.map +1 -0
- package/dist/runtime/reporting/markdownReportBuilder.d.ts +17 -0
- package/dist/runtime/reporting/markdownReportBuilder.js +154 -0
- package/dist/runtime/reporting/markdownReportBuilder.js.map +1 -0
- package/dist/runtime/reporting/reportDataCollector.d.ts +31 -0
- package/dist/runtime/reporting/reportDataCollector.js +170 -0
- package/dist/runtime/reporting/reportDataCollector.js.map +1 -0
- package/dist/runtime/reporting/summaryGenerator.d.ts +10 -0
- package/dist/runtime/reporting/summaryGenerator.js +67 -0
- package/dist/runtime/reporting/summaryGenerator.js.map +1 -0
- package/dist/runtime/reviewPipeline.d.ts +47 -0
- package/dist/runtime/reviewPipeline.js +161 -0
- package/dist/runtime/reviewPipeline.js.map +1 -0
- package/dist/runtime/runAiCodeReview.d.ts +28 -0
- package/dist/runtime/runAiCodeReview.js +373 -0
- package/dist/runtime/runAiCodeReview.js.map +1 -0
- package/dist/runtime/runtimeConfig.d.ts +4 -0
- package/dist/runtime/runtimeConfig.js +7 -0
- package/dist/runtime/runtimeConfig.js.map +1 -0
- package/dist/runtime/ui/Layout.d.ts +11 -0
- package/dist/runtime/ui/Layout.js +47 -0
- package/dist/runtime/ui/Layout.js.map +1 -0
- package/dist/runtime/ui/RuntimeApp.d.ts +6 -0
- package/dist/runtime/ui/RuntimeApp.js +172 -0
- package/dist/runtime/ui/RuntimeApp.js.map +1 -0
- package/dist/runtime/ui/inkModules.d.ts +10 -0
- package/dist/runtime/ui/inkModules.js +63 -0
- package/dist/runtime/ui/inkModules.js.map +1 -0
- package/dist/runtime/ui/screens/AuthScreen.d.ts +6 -0
- package/dist/runtime/ui/screens/AuthScreen.js +67 -0
- package/dist/runtime/ui/screens/AuthScreen.js.map +1 -0
- package/dist/runtime/ui/screens/ModeSelection.d.ts +10 -0
- package/dist/runtime/ui/screens/ModeSelection.js +100 -0
- package/dist/runtime/ui/screens/ModeSelection.js.map +1 -0
- package/dist/runtime/ui/screens/ProgressScreen.d.ts +12 -0
- package/dist/runtime/ui/screens/ProgressScreen.js +64 -0
- package/dist/runtime/ui/screens/ProgressScreen.js.map +1 -0
- package/dist/runtime/ui/screens/ResultsScreen.d.ts +7 -0
- package/dist/runtime/ui/screens/ResultsScreen.js +29 -0
- package/dist/runtime/ui/screens/ResultsScreen.js.map +1 -0
- package/dist/strategies/ArchitecturalReviewStrategy.d.ts +29 -0
- package/dist/strategies/ArchitecturalReviewStrategy.js +42 -0
- package/dist/strategies/ArchitecturalReviewStrategy.js.map +1 -0
- package/dist/strategies/CodingTestReviewStrategy.d.ts +194 -0
- package/dist/strategies/CodingTestReviewStrategy.js +681 -0
- package/dist/strategies/CodingTestReviewStrategy.js.map +1 -0
- package/dist/strategies/ConsolidatedReviewStrategy.d.ts +25 -0
- package/dist/strategies/ConsolidatedReviewStrategy.js +45 -0
- package/dist/strategies/ConsolidatedReviewStrategy.js.map +1 -0
- package/dist/strategies/ExtractPatternsReviewStrategy.d.ts +30 -0
- package/dist/strategies/ExtractPatternsReviewStrategy.js +51 -0
- package/dist/strategies/ExtractPatternsReviewStrategy.js.map +1 -0
- package/dist/strategies/MultiPassReviewStrategy.d.ts +86 -0
- package/dist/strategies/MultiPassReviewStrategy.js +590 -0
- package/dist/strategies/MultiPassReviewStrategy.js.map +1 -0
- package/dist/strategies/ReviewStrategy.d.ts +45 -0
- package/dist/strategies/ReviewStrategy.js +24 -0
- package/dist/strategies/ReviewStrategy.js.map +1 -0
- package/dist/strategies/StrategyFactory.d.ts +19 -0
- package/dist/strategies/StrategyFactory.js +72 -0
- package/dist/strategies/StrategyFactory.js.map +1 -0
- package/{src/strategies/index.ts → dist/strategies/index.d.ts} +0 -1
- package/dist/strategies/index.js +30 -0
- package/dist/strategies/index.js.map +1 -0
- package/dist/tokenizers/baseTokenizer.d.ts +25 -0
- package/dist/tokenizers/baseTokenizer.js +48 -0
- package/dist/tokenizers/baseTokenizer.js.map +1 -0
- package/dist/tokenizers/gptTokenizer.d.ts +7 -0
- package/dist/tokenizers/gptTokenizer.js +28 -0
- package/dist/tokenizers/gptTokenizer.js.map +1 -0
- package/{src/tokenizers/index.ts → dist/tokenizers/index.d.ts} +0 -1
- package/dist/tokenizers/index.js +24 -0
- package/dist/tokenizers/index.js.map +1 -0
- package/dist/types/apiResponses.d.ts +39 -0
- package/dist/types/apiResponses.js +9 -0
- package/dist/types/apiResponses.js.map +1 -0
- package/dist/types/cli.d.ts +22 -0
- package/dist/types/cli.js +3 -0
- package/dist/types/cli.js.map +1 -0
- package/{src/types/common.ts → dist/types/common.d.ts} +2 -19
- package/dist/types/common.js +14 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/configuration.d.ts +682 -0
- package/dist/types/configuration.js +65 -0
- package/dist/types/configuration.js.map +1 -0
- package/dist/types/review.d.ts +318 -0
- package/dist/types/review.js +8 -0
- package/dist/types/review.js.map +1 -0
- package/dist/types/reviewSchema.d.ts +543 -0
- package/{src/types/reviewSchema.ts → dist/types/reviewSchema.js} +44 -104
- package/dist/types/reviewSchema.js.map +1 -0
- package/dist/types/structuredReview.d.ts +119 -0
- package/dist/types/structuredReview.js +6 -0
- package/dist/types/structuredReview.js.map +1 -0
- package/dist/types/tokenAnalysis.d.ts +44 -0
- package/dist/types/tokenAnalysis.js +4 -0
- package/dist/types/tokenAnalysis.js.map +1 -0
- package/dist/utils/FileReader.d.ts +33 -0
- package/dist/utils/FileReader.js +88 -0
- package/dist/utils/FileReader.js.map +1 -0
- package/dist/utils/FileWriter.d.ts +26 -0
- package/dist/utils/FileWriter.js +76 -0
- package/dist/utils/FileWriter.js.map +1 -0
- package/dist/utils/PathGenerator.d.ts +30 -0
- package/dist/utils/PathGenerator.js +82 -0
- package/dist/utils/PathGenerator.js.map +1 -0
- package/dist/utils/api/apiUtils.d.ts +3 -0
- package/dist/utils/api/apiUtils.js +20 -0
- package/dist/utils/api/apiUtils.js.map +1 -0
- package/dist/utils/api/index.js +18 -0
- package/dist/utils/api/index.js.map +1 -0
- package/dist/utils/apiErrorHandler.d.ts +130 -0
- package/dist/utils/apiErrorHandler.js +256 -0
- package/dist/utils/apiErrorHandler.js.map +1 -0
- package/dist/utils/ciDataCollector.d.ts +51 -0
- package/dist/utils/ciDataCollector.js +197 -0
- package/dist/utils/ciDataCollector.js.map +1 -0
- package/dist/utils/codingTestConfigLoader.d.ts +66 -0
- package/dist/utils/codingTestConfigLoader.js +420 -0
- package/dist/utils/codingTestConfigLoader.js.map +1 -0
- package/dist/utils/dependencies/aiDependencyAnalyzer.d.ts +30 -0
- package/dist/utils/dependencies/aiDependencyAnalyzer.js +343 -0
- package/dist/utils/dependencies/aiDependencyAnalyzer.js.map +1 -0
- package/dist/utils/detection/frameworkDetector.d.ts +43 -0
- package/dist/utils/detection/frameworkDetector.js +850 -0
- package/dist/utils/detection/frameworkDetector.js.map +1 -0
- package/{src/utils/detection/index.ts → dist/utils/detection/index.d.ts} +0 -1
- package/dist/utils/detection/index.js +28 -0
- package/dist/utils/detection/index.js.map +1 -0
- package/dist/utils/detection/projectTypeDetector.d.ts +27 -0
- package/dist/utils/detection/projectTypeDetector.js +469 -0
- package/dist/utils/detection/projectTypeDetector.js.map +1 -0
- package/dist/utils/diagramGenerator.d.ts +49 -0
- package/dist/utils/diagramGenerator.js +218 -0
- package/dist/utils/diagramGenerator.js.map +1 -0
- package/dist/utils/errorLogger.d.ts +24 -0
- package/dist/utils/errorLogger.js +59 -0
- package/dist/utils/errorLogger.js.map +1 -0
- package/dist/utils/estimationUtils.d.ts +139 -0
- package/dist/utils/estimationUtils.js +329 -0
- package/dist/utils/estimationUtils.js.map +1 -0
- package/dist/utils/fileFilters.d.ts +72 -0
- package/dist/utils/fileFilters.js +338 -0
- package/dist/utils/fileFilters.js.map +1 -0
- package/dist/utils/fileSystem.d.ts +22 -0
- package/dist/utils/fileSystem.js +45 -0
- package/dist/utils/fileSystem.js.map +1 -0
- package/{src/utils/index.ts → dist/utils/index.d.ts} +0 -14
- package/dist/utils/index.js +52 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +77 -0
- package/dist/utils/logger.js +271 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/pathValidator.d.ts +40 -0
- package/dist/utils/pathValidator.js +98 -0
- package/dist/utils/pathValidator.js.map +1 -0
- package/{src/utils/priorityFilter.ts → dist/utils/priorityFilter.d.ts} +1 -26
- package/dist/utils/priorityFilter.js +54 -0
- package/dist/utils/priorityFilter.js.map +1 -0
- package/dist/utils/projectDocs.d.ts +47 -0
- package/dist/utils/projectDocs.js +158 -0
- package/dist/utils/projectDocs.js.map +1 -0
- package/dist/utils/promptPaths.d.ts +6 -0
- package/dist/utils/promptPaths.js +33 -0
- package/dist/utils/promptPaths.js.map +1 -0
- package/dist/utils/promptTemplateManager.d.ts +34 -0
- package/dist/utils/promptTemplateManager.js +141 -0
- package/dist/utils/promptTemplateManager.js.map +1 -0
- package/dist/utils/review/consolidateReview.d.ts +15 -0
- package/dist/utils/review/consolidateReview.js +481 -0
- package/dist/utils/review/consolidateReview.js.map +1 -0
- package/dist/utils/review/fixDisplay.d.ts +20 -0
- package/dist/utils/review/fixDisplay.js +84 -0
- package/dist/utils/review/fixDisplay.js.map +1 -0
- package/dist/utils/review/fixImplementation.d.ts +28 -0
- package/dist/utils/review/fixImplementation.js +60 -0
- package/dist/utils/review/fixImplementation.js.map +1 -0
- package/dist/utils/review/index.d.ts +13 -0
- package/dist/utils/review/index.js +50 -0
- package/dist/utils/review/index.js.map +1 -0
- package/dist/utils/review/interactiveProcessing.d.ts +25 -0
- package/dist/utils/review/interactiveProcessing.js +251 -0
- package/dist/utils/review/interactiveProcessing.js.map +1 -0
- package/dist/utils/review/progressTracker.d.ts +106 -0
- package/dist/utils/review/progressTracker.js +227 -0
- package/dist/utils/review/progressTracker.js.map +1 -0
- package/dist/utils/review/reviewExtraction.d.ts +31 -0
- package/dist/utils/review/reviewExtraction.js +324 -0
- package/dist/utils/review/reviewExtraction.js.map +1 -0
- package/dist/utils/review/types.d.ts +45 -0
- package/dist/utils/review/types.js +18 -0
- package/dist/utils/review/types.js.map +1 -0
- package/{src/utils/reviewActionHandler.ts → dist/utils/reviewActionHandler.d.ts} +0 -2
- package/dist/utils/reviewActionHandler.js +34 -0
- package/dist/utils/reviewActionHandler.js.map +1 -0
- package/dist/utils/reviewParser.d.ts +34 -0
- package/dist/utils/reviewParser.js +218 -0
- package/dist/utils/reviewParser.js.map +1 -0
- package/dist/utils/sanitizer.d.ts +82 -0
- package/dist/utils/sanitizer.js +239 -0
- package/dist/utils/sanitizer.js.map +1 -0
- package/dist/utils/smartFileSelector.d.ts +50 -0
- package/dist/utils/smartFileSelector.js +261 -0
- package/dist/utils/smartFileSelector.js.map +1 -0
- package/dist/utils/templateLoader.d.ts +44 -0
- package/dist/utils/templateLoader.js +431 -0
- package/dist/utils/templateLoader.js.map +1 -0
- package/dist/utils/treeGenerator.d.ts +12 -0
- package/dist/utils/treeGenerator.js +133 -0
- package/dist/utils/treeGenerator.js.map +1 -0
- package/package.json +5 -2
- package/.cr-aia.yml +0 -23
- package/.crignore +0 -0
- package/docs/opt-in-full-context.md +0 -27
- package/reports/cr-cr-aia-17-11-2025-20-13.md +0 -354
- package/src/analysis/FindingsExtractor.ts +0 -431
- package/src/analysis/ai-detection/analyzers/BaseAnalyzer.ts +0 -267
- package/src/analysis/ai-detection/analyzers/DocumentationAnalyzer.ts +0 -622
- package/src/analysis/ai-detection/analyzers/GitHistoryAnalyzer.ts +0 -430
- package/src/analysis/ai-detection/core/AIDetectionEngine.ts +0 -467
- package/src/analysis/ai-detection/types/DetectionTypes.ts +0 -406
- package/src/analysis/ai-detection/utils/SubmissionConverter.ts +0 -390
- package/src/analysis/context/ReviewContext.ts +0 -378
- package/src/analysis/tokens/TokenAnalyzer.ts +0 -747
- package/src/clients/base/abstractClient.ts +0 -190
- package/src/clients/base/httpClient.ts +0 -160
- package/src/clients/base/modelDetection.ts +0 -107
- package/src/clients/base/responseProcessor.ts +0 -586
- package/src/clients/factory/clientFactory.ts +0 -55
- package/src/clients/implementations/openRouterClient.ts +0 -413
- package/src/clients/openRouterClient.ts +0 -870
- package/src/clients/utils/directoryStructure.ts +0 -52
- package/src/clients/utils/languageDetection.ts +0 -44
- package/src/clients/utils/promptFormatter.ts +0 -182
- package/src/clients/utils/tokenCounter.ts +0 -297
- package/src/core/ApiClientSelector.ts +0 -37
- package/src/core/ConfigurationService.ts +0 -591
- package/src/core/ConsolidationService.ts +0 -423
- package/src/core/InteractiveDisplayManager.ts +0 -81
- package/src/core/OutputManager.ts +0 -275
- package/src/core/ReviewGenerator.ts +0 -140
- package/src/core/fileDiscovery.ts +0 -237
- package/src/core/handlers/EstimationHandler.ts +0 -104
- package/src/core/handlers/FileProcessingHandler.ts +0 -210
- package/src/core/handlers/OutputHandler.ts +0 -125
- package/src/core/handlers/ReviewExecutor.ts +0 -104
- package/src/core/reviewOrchestrator.ts +0 -333
- package/src/core/utils/ModelInfoUtils.ts +0 -56
- package/src/formatters/utils/IssueFormatters.ts +0 -83
- package/src/formatters/utils/JsonFormatter.ts +0 -77
- package/src/formatters/utils/MarkdownFormatters.ts +0 -609
- package/src/formatters/utils/MetadataFormatter.ts +0 -269
- package/src/formatters/utils/ModelInfoExtractor.ts +0 -115
- package/src/index.ts +0 -25
- package/src/plugins/PluginInterface.ts +0 -50
- package/src/plugins/PluginManager.ts +0 -126
- package/src/prompts/PromptManager.ts +0 -69
- package/src/prompts/cache/PromptCache.ts +0 -50
- package/src/prompts/promptText/common/variables/css-frameworks.json +0 -33
- package/src/prompts/promptText/common/variables/framework-versions.json +0 -45
- package/src/prompts/promptText/frameworks/react/comprehensive.hbs +0 -19
- package/src/prompts/promptText/languages/css/comprehensive.hbs +0 -18
- package/src/prompts/promptText/languages/generic/comprehensive.hbs +0 -20
- package/src/prompts/promptText/languages/html/comprehensive.hbs +0 -18
- package/src/prompts/promptText/languages/javascript/comprehensive.hbs +0 -18
- package/src/prompts/promptText/languages/python/comprehensive.hbs +0 -18
- package/src/prompts/promptText/languages/typescript/comprehensive.hbs +0 -18
- package/src/runtime/auth/service.ts +0 -58
- package/src/runtime/auth/session.ts +0 -103
- package/src/runtime/auth/types.ts +0 -11
- package/src/runtime/cliEntry.ts +0 -214
- package/src/runtime/debug/logManager.ts +0 -37
- package/src/runtime/errors.ts +0 -13
- package/src/runtime/fileCollector.ts +0 -495
- package/src/runtime/manifest.ts +0 -64
- package/src/runtime/openrouterProxy.ts +0 -45
- package/src/runtime/preprod/webCheck.ts +0 -104
- package/src/runtime/proxyConfig.ts +0 -94
- package/src/runtime/proxyEnvironment.ts +0 -71
- package/src/runtime/reportMerge.ts +0 -102
- package/src/runtime/reporting/markdownReportBuilder.ts +0 -138
- package/src/runtime/reporting/reportDataCollector.ts +0 -234
- package/src/runtime/reporting/summaryGenerator.ts +0 -86
- package/src/runtime/reviewPipeline.ts +0 -200
- package/src/runtime/runAiCodeReview.ts +0 -308
- package/src/runtime/runtimeConfig.ts +0 -5
- package/src/runtime/ui/Layout.tsx +0 -57
- package/src/runtime/ui/RuntimeApp.tsx +0 -262
- package/src/runtime/ui/inkModules.ts +0 -73
- package/src/runtime/ui/screens/AuthScreen.tsx +0 -128
- package/src/runtime/ui/screens/ModeSelection.tsx +0 -185
- package/src/runtime/ui/screens/ProgressScreen.tsx +0 -110
- package/src/runtime/ui/screens/ResultsScreen.tsx +0 -103
- package/src/strategies/ArchitecturalReviewStrategy.ts +0 -54
- package/src/strategies/CodingTestReviewStrategy.ts +0 -920
- package/src/strategies/ConsolidatedReviewStrategy.ts +0 -59
- package/src/strategies/ExtractPatternsReviewStrategy.ts +0 -64
- package/src/strategies/MultiPassReviewStrategy.ts +0 -785
- package/src/strategies/ReviewStrategy.ts +0 -64
- package/src/strategies/StrategyFactory.ts +0 -79
- package/src/tokenizers/baseTokenizer.ts +0 -61
- package/src/tokenizers/gptTokenizer.ts +0 -27
- package/src/types/apiResponses.ts +0 -40
- package/src/types/cli.ts +0 -24
- package/src/types/configuration.ts +0 -201
- package/src/types/handlebars.d.ts +0 -5
- package/src/types/patch.d.ts +0 -25
- package/src/types/review.ts +0 -312
- package/src/types/reviewContext.d.ts +0 -65
- package/src/types/structuredReview.ts +0 -167
- package/src/types/tokenAnalysis.ts +0 -56
- package/src/utils/FileReader.ts +0 -93
- package/src/utils/FileWriter.ts +0 -76
- package/src/utils/PathGenerator.ts +0 -97
- package/src/utils/api/apiUtils.ts +0 -14
- package/src/utils/apiErrorHandler.ts +0 -287
- package/src/utils/ciDataCollector.ts +0 -252
- package/src/utils/codingTestConfigLoader.ts +0 -466
- package/src/utils/dependencies/aiDependencyAnalyzer.ts +0 -454
- package/src/utils/detection/frameworkDetector.ts +0 -879
- package/src/utils/detection/projectTypeDetector.ts +0 -518
- package/src/utils/diagramGenerator.ts +0 -206
- package/src/utils/errorLogger.ts +0 -60
- package/src/utils/estimationUtils.ts +0 -407
- package/src/utils/fileFilters.ts +0 -373
- package/src/utils/fileSystem.ts +0 -57
- package/src/utils/logger.ts +0 -290
- package/src/utils/pathValidator.ts +0 -98
- package/src/utils/projectDocs.ts +0 -189
- package/src/utils/promptPaths.ts +0 -29
- package/src/utils/promptTemplateManager.ts +0 -157
- package/src/utils/review/consolidateReview.ts +0 -553
- package/src/utils/review/fixDisplay.ts +0 -100
- package/src/utils/review/fixImplementation.ts +0 -61
- package/src/utils/review/index.ts +0 -36
- package/src/utils/review/interactiveProcessing.ts +0 -294
- package/src/utils/review/progressTracker.ts +0 -296
- package/src/utils/review/reviewExtraction.ts +0 -382
- package/src/utils/review/types.ts +0 -46
- package/src/utils/reviewParser.ts +0 -253
- package/src/utils/sanitizer.ts +0 -238
- package/src/utils/smartFileSelector.ts +0 -255
- package/src/utils/templateLoader.ts +0 -514
- package/src/utils/treeGenerator.ts +0 -153
- package/tsconfig.build.json +0 -14
- package/tsconfig.json +0 -59
- /package/{src/utils/api/index.ts → dist/utils/api/index.d.ts} +0 -0
|
@@ -1,609 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Formatters for Markdown output of code reviews.
|
|
3
|
-
*
|
|
4
|
-
* This module provides functions to format code review results as Markdown,
|
|
5
|
-
* including different formats for structured and unstructured reviews.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import type { ReviewResult } from '../../types/review';
|
|
9
|
-
import type { StructuredReview } from '../../types/structuredReview';
|
|
10
|
-
import logger from '../../utils/logger';
|
|
11
|
-
import { sanitizeContent } from '../../utils/sanitizer';
|
|
12
|
-
import { formatIssue, formatSchemaIssue } from './IssueFormatters';
|
|
13
|
-
import { formatCostInfo, formatMetadataSection, parseCostInfo } from './MetadataFormatter';
|
|
14
|
-
import { extractModelInfo, extractModelInfoFromString } from './ModelInfoExtractor';
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Format the review as Markdown
|
|
18
|
-
* @param review Review result to format
|
|
19
|
-
* @returns Markdown string
|
|
20
|
-
*/
|
|
21
|
-
export function formatAsMarkdown(review: ReviewResult): string {
|
|
22
|
-
const { filePath, reviewType, content, timestamp, structuredData } = review;
|
|
23
|
-
// Use costInfo if available, fallback to cost
|
|
24
|
-
const cost = review.costInfo || review.cost;
|
|
25
|
-
|
|
26
|
-
// Extract model information
|
|
27
|
-
const { modelInfo } = extractModelInfo(review.modelUsed);
|
|
28
|
-
|
|
29
|
-
// Format cost information if available
|
|
30
|
-
const costInfo = formatCostInfo(cost);
|
|
31
|
-
|
|
32
|
-
// Check if the content is JSON that should be formatted as structured data
|
|
33
|
-
let actualStructuredData = structuredData;
|
|
34
|
-
|
|
35
|
-
// For architectural reviews with diagrams, always prefer Markdown format
|
|
36
|
-
const forceMarkdown = reviewType === 'architectural' && review.metadata?.diagramRequested;
|
|
37
|
-
|
|
38
|
-
if (!actualStructuredData && content && typeof content === 'string' && !forceMarkdown) {
|
|
39
|
-
// Improved JSON detection - check for both raw JSON and code blocks
|
|
40
|
-
const trimmedContent = content.trim();
|
|
41
|
-
|
|
42
|
-
// First, check if this looks like truncated/incomplete JSON
|
|
43
|
-
if (trimmedContent.startsWith('{') && !trimmedContent.includes('}')) {
|
|
44
|
-
logger.warn('Content appears to be truncated JSON - missing closing brace');
|
|
45
|
-
|
|
46
|
-
// Don't try to parse incomplete JSON, just return it as plain text with a warning
|
|
47
|
-
const warningMessage =
|
|
48
|
-
'⚠️ **Warning**: The AI response appears to be incomplete or truncated. ' +
|
|
49
|
-
'This may be due to token limits or API issues. Please try again or use a different model.\n\n' +
|
|
50
|
-
'**Partial response received:**\n\n';
|
|
51
|
-
return formatSimpleMarkdown(
|
|
52
|
-
`${warningMessage}\`\`\`json\n${content}\n\`\`\``,
|
|
53
|
-
filePath || '',
|
|
54
|
-
reviewType,
|
|
55
|
-
timestamp,
|
|
56
|
-
costInfo,
|
|
57
|
-
modelInfo,
|
|
58
|
-
);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Try to extract JSON from code blocks with improved regex
|
|
62
|
-
// This regex matches code blocks with or without the json language specifier
|
|
63
|
-
const jsonBlockRegex = /```(?:json)?\s*([\s\S]*?)\s*```/g;
|
|
64
|
-
const jsonBlocks = [...trimmedContent.matchAll(jsonBlockRegex)];
|
|
65
|
-
|
|
66
|
-
if (jsonBlocks.length > 0) {
|
|
67
|
-
// Try each code block until we find valid JSON
|
|
68
|
-
for (const match of jsonBlocks) {
|
|
69
|
-
try {
|
|
70
|
-
const jsonContent = match[1].trim();
|
|
71
|
-
if (jsonContent) {
|
|
72
|
-
actualStructuredData = JSON.parse(jsonContent);
|
|
73
|
-
logger.debug('Successfully parsed JSON from code block');
|
|
74
|
-
break;
|
|
75
|
-
}
|
|
76
|
-
} catch (e) {
|
|
77
|
-
logger.debug(
|
|
78
|
-
`Failed to parse JSON from code block: ${e instanceof Error ? e.message : String(e)}`,
|
|
79
|
-
);
|
|
80
|
-
// Continue to next block
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// If no valid JSON found in code blocks, try the entire content if it looks like JSON
|
|
86
|
-
if (!actualStructuredData && trimmedContent.startsWith('{') && trimmedContent.endsWith('}')) {
|
|
87
|
-
try {
|
|
88
|
-
actualStructuredData = JSON.parse(trimmedContent);
|
|
89
|
-
logger.debug('Successfully parsed JSON from full content');
|
|
90
|
-
} catch (e) {
|
|
91
|
-
logger.debug(
|
|
92
|
-
`Failed to parse content as JSON: ${e instanceof Error ? e.message : String(e)}`,
|
|
93
|
-
);
|
|
94
|
-
// Not valid JSON, continue with regular formatting
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// If we have structured data, format it as Markdown
|
|
100
|
-
// But skip JSON parsing for architectural reviews with diagrams - keep original Markdown
|
|
101
|
-
if (actualStructuredData && !forceMarkdown) {
|
|
102
|
-
try {
|
|
103
|
-
let structuredReview: any;
|
|
104
|
-
|
|
105
|
-
if (typeof actualStructuredData === 'string') {
|
|
106
|
-
try {
|
|
107
|
-
structuredReview = JSON.parse(actualStructuredData);
|
|
108
|
-
logger.debug('Successfully parsed structured data string as JSON');
|
|
109
|
-
} catch (parseError) {
|
|
110
|
-
logger.warn(
|
|
111
|
-
`Failed to parse structured data as JSON: ${parseError instanceof Error ? parseError.message : String(parseError)}`,
|
|
112
|
-
);
|
|
113
|
-
// If it's not valid JSON, treat it as plain text
|
|
114
|
-
return formatSimpleMarkdown(
|
|
115
|
-
content,
|
|
116
|
-
filePath || '',
|
|
117
|
-
reviewType,
|
|
118
|
-
timestamp,
|
|
119
|
-
costInfo,
|
|
120
|
-
modelInfo,
|
|
121
|
-
);
|
|
122
|
-
}
|
|
123
|
-
} else {
|
|
124
|
-
structuredReview = actualStructuredData;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// Check if the data has a 'review' property (our JSON structure)
|
|
128
|
-
if (structuredReview?.review) {
|
|
129
|
-
return formatSchemaBasedReviewAsMarkdown(
|
|
130
|
-
structuredReview,
|
|
131
|
-
filePath || '',
|
|
132
|
-
reviewType,
|
|
133
|
-
timestamp,
|
|
134
|
-
costInfo,
|
|
135
|
-
modelInfo,
|
|
136
|
-
);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// Validate the parsed data has expected structure
|
|
140
|
-
if (typeof structuredReview === 'object' && structuredReview !== null) {
|
|
141
|
-
return formatStructuredReviewAsMarkdown(
|
|
142
|
-
structuredReview,
|
|
143
|
-
filePath || '',
|
|
144
|
-
reviewType,
|
|
145
|
-
timestamp,
|
|
146
|
-
costInfo,
|
|
147
|
-
modelInfo,
|
|
148
|
-
);
|
|
149
|
-
}
|
|
150
|
-
logger.warn('Structured data is not an object:', typeof structuredReview);
|
|
151
|
-
// If the data doesn't have the right structure, fall back to plain text
|
|
152
|
-
return formatSimpleMarkdown(
|
|
153
|
-
content,
|
|
154
|
-
filePath || '',
|
|
155
|
-
reviewType,
|
|
156
|
-
timestamp,
|
|
157
|
-
costInfo,
|
|
158
|
-
modelInfo,
|
|
159
|
-
);
|
|
160
|
-
} catch (error) {
|
|
161
|
-
logger.error(
|
|
162
|
-
`Error processing structured review data: ${error instanceof Error ? error.message : String(error)}`,
|
|
163
|
-
);
|
|
164
|
-
// Fall back to unstructured format
|
|
165
|
-
return formatSimpleMarkdown(
|
|
166
|
-
content,
|
|
167
|
-
filePath || '',
|
|
168
|
-
reviewType,
|
|
169
|
-
timestamp,
|
|
170
|
-
costInfo,
|
|
171
|
-
modelInfo,
|
|
172
|
-
);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
// Sanitize the content to prevent XSS attacks
|
|
177
|
-
const sanitizedContent = sanitizeContent(content);
|
|
178
|
-
|
|
179
|
-
// Use the actual file path for the review title and the reviewed field
|
|
180
|
-
// If filePath is the same as reviewType, is 'consolidated', or is undefined/empty, show the current directory path
|
|
181
|
-
let displayPath = filePath || '';
|
|
182
|
-
|
|
183
|
-
if (!displayPath || displayPath === reviewType || displayPath === 'consolidated') {
|
|
184
|
-
// For consolidated reviews, show the full target directory path
|
|
185
|
-
displayPath = `${process.cwd()} (Current Directory)`;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
// Extract model vendor and name from modelInfo (currently unused but may be needed for future features)
|
|
189
|
-
// const { modelVendor, modelName } = extractModelInfoFromString(modelInfo);
|
|
190
|
-
|
|
191
|
-
// Create metadata section
|
|
192
|
-
const metadataSection = formatMetadataSection(
|
|
193
|
-
reviewType,
|
|
194
|
-
timestamp,
|
|
195
|
-
modelInfo,
|
|
196
|
-
cost,
|
|
197
|
-
review.toolVersion,
|
|
198
|
-
review.commandOptions,
|
|
199
|
-
review.detectedLanguage,
|
|
200
|
-
review.detectedFramework,
|
|
201
|
-
review.frameworkVersion,
|
|
202
|
-
review.cssFrameworks,
|
|
203
|
-
);
|
|
204
|
-
|
|
205
|
-
return `# Code Review: ${displayPath}
|
|
206
|
-
|
|
207
|
-
> **Review Type**: ${reviewType}
|
|
208
|
-
> **Model**: ${modelInfo}
|
|
209
|
-
> **Generated**: ${new Date(timestamp).toLocaleString()}
|
|
210
|
-
|
|
211
|
-
---
|
|
212
|
-
|
|
213
|
-
${metadataSection}
|
|
214
|
-
|
|
215
|
-
${sanitizedContent}
|
|
216
|
-
|
|
217
|
-
---${costInfo}
|
|
218
|
-
|
|
219
|
-
*Generated by [cr-aia](https://github.com/filipkustec/cr-aia) using ${modelInfo}*`;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
/**
|
|
223
|
-
* Format a structured review as Markdown
|
|
224
|
-
* @param structuredReview Structured review data
|
|
225
|
-
* @param filePath Path to the reviewed file
|
|
226
|
-
* @param reviewType Type of review performed
|
|
227
|
-
* @param timestamp Timestamp of when the review was generated
|
|
228
|
-
* @param costInfo Cost information formatted as Markdown
|
|
229
|
-
* @param modelInfo Model information
|
|
230
|
-
* @param metadataSection Optional metadata section to include
|
|
231
|
-
* @returns Markdown string
|
|
232
|
-
*/
|
|
233
|
-
export function formatStructuredReviewAsMarkdown(
|
|
234
|
-
structuredReview: StructuredReview,
|
|
235
|
-
filePath: string,
|
|
236
|
-
reviewType: string,
|
|
237
|
-
timestamp: string,
|
|
238
|
-
costInfo: string,
|
|
239
|
-
modelInfo: string,
|
|
240
|
-
metadataSection?: string,
|
|
241
|
-
): string {
|
|
242
|
-
// Check if the structuredReview has required properties
|
|
243
|
-
if (!structuredReview || typeof structuredReview !== 'object') {
|
|
244
|
-
console.warn('Invalid structured review data, falling back to simple format');
|
|
245
|
-
return formatSimpleMarkdown(
|
|
246
|
-
'No structured data available. The review may be in an unsupported format.',
|
|
247
|
-
filePath,
|
|
248
|
-
reviewType,
|
|
249
|
-
timestamp,
|
|
250
|
-
costInfo,
|
|
251
|
-
modelInfo,
|
|
252
|
-
metadataSection,
|
|
253
|
-
);
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
// Extract properties with fallbacks for missing properties
|
|
257
|
-
const summary = structuredReview.summary || 'No summary provided';
|
|
258
|
-
const issues = Array.isArray(structuredReview.issues) ? structuredReview.issues : [];
|
|
259
|
-
const recommendations = Array.isArray(structuredReview.recommendations)
|
|
260
|
-
? structuredReview.recommendations
|
|
261
|
-
: [];
|
|
262
|
-
const positiveAspects = Array.isArray(structuredReview.positiveAspects)
|
|
263
|
-
? structuredReview.positiveAspects
|
|
264
|
-
: [];
|
|
265
|
-
|
|
266
|
-
// Extract grade information if available
|
|
267
|
-
const grade = structuredReview.grade;
|
|
268
|
-
const gradeCategories = structuredReview.gradeCategories;
|
|
269
|
-
|
|
270
|
-
// Group issues by priority
|
|
271
|
-
const highPriorityIssues = issues.filter((issue) => issue && issue.priority === 'high');
|
|
272
|
-
const mediumPriorityIssues = issues.filter((issue) => issue && issue.priority === 'medium');
|
|
273
|
-
const lowPriorityIssues = issues.filter((issue) => issue && issue.priority === 'low');
|
|
274
|
-
|
|
275
|
-
// Format issues by priority
|
|
276
|
-
let issuesMarkdown = '';
|
|
277
|
-
|
|
278
|
-
if (highPriorityIssues.length > 0) {
|
|
279
|
-
issuesMarkdown += '### High Priority\n\n';
|
|
280
|
-
issuesMarkdown += highPriorityIssues.map((issue) => formatIssue(issue)).join('\n\n');
|
|
281
|
-
issuesMarkdown += '\n\n';
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
if (mediumPriorityIssues.length > 0) {
|
|
285
|
-
issuesMarkdown += '### Medium Priority\n\n';
|
|
286
|
-
issuesMarkdown += mediumPriorityIssues.map((issue) => formatIssue(issue)).join('\n\n');
|
|
287
|
-
issuesMarkdown += '\n\n';
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
if (lowPriorityIssues.length > 0) {
|
|
291
|
-
issuesMarkdown += '### Low Priority\n\n';
|
|
292
|
-
issuesMarkdown += lowPriorityIssues.map((issue) => formatIssue(issue)).join('\n\n');
|
|
293
|
-
issuesMarkdown += '\n\n';
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
// Format recommendations
|
|
297
|
-
let recommendationsMarkdown = '';
|
|
298
|
-
if (recommendations && recommendations.length > 0) {
|
|
299
|
-
recommendationsMarkdown = '## General Recommendations\n\n';
|
|
300
|
-
recommendationsMarkdown += recommendations.map((rec) => `- ${rec}`).join('\n');
|
|
301
|
-
recommendationsMarkdown += '\n\n';
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
// Format positive aspects
|
|
305
|
-
let positiveAspectsMarkdown = '';
|
|
306
|
-
if (positiveAspects && positiveAspects.length > 0) {
|
|
307
|
-
positiveAspectsMarkdown = '## Positive Aspects\n\n';
|
|
308
|
-
positiveAspectsMarkdown += positiveAspects.map((aspect) => `- ${aspect}`).join('\n');
|
|
309
|
-
positiveAspectsMarkdown += '\n\n';
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
// Use the actual file path for the review title and the reviewed field
|
|
313
|
-
// If filePath is the same as reviewType, is 'consolidated', or is undefined/empty, show the current directory path
|
|
314
|
-
let displayPath = filePath || '';
|
|
315
|
-
|
|
316
|
-
if (!displayPath || displayPath === reviewType || displayPath === 'consolidated') {
|
|
317
|
-
// For consolidated reviews, show the full target directory path
|
|
318
|
-
displayPath = `${process.cwd()} (Current Directory)`;
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
// Include metadata section if available
|
|
322
|
-
const metadataContent = metadataSection ? `${metadataSection}\n` : '';
|
|
323
|
-
|
|
324
|
-
// Format grade section if available
|
|
325
|
-
let gradeMarkdown = '';
|
|
326
|
-
if (grade) {
|
|
327
|
-
gradeMarkdown = `## Grade: ${grade}\n\n`;
|
|
328
|
-
|
|
329
|
-
// Add grade categories if available
|
|
330
|
-
if (gradeCategories) {
|
|
331
|
-
if (gradeCategories.functionality)
|
|
332
|
-
gradeMarkdown += `- **Functionality**: ${gradeCategories.functionality}\n`;
|
|
333
|
-
if (gradeCategories.codeQuality)
|
|
334
|
-
gradeMarkdown += `- **Code Quality**: ${gradeCategories.codeQuality}\n`;
|
|
335
|
-
if (gradeCategories.documentation)
|
|
336
|
-
gradeMarkdown += `- **Documentation**: ${gradeCategories.documentation}\n`;
|
|
337
|
-
if (gradeCategories.testing) gradeMarkdown += `- **Testing**: ${gradeCategories.testing}\n`;
|
|
338
|
-
if (gradeCategories.maintainability)
|
|
339
|
-
gradeMarkdown += `- **Maintainability**: ${gradeCategories.maintainability}\n`;
|
|
340
|
-
if (gradeCategories.security)
|
|
341
|
-
gradeMarkdown += `- **Security**: ${gradeCategories.security}\n`;
|
|
342
|
-
if (gradeCategories.performance)
|
|
343
|
-
gradeMarkdown += `- **Performance**: ${gradeCategories.performance}\n`;
|
|
344
|
-
gradeMarkdown += '\n';
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
return `# Code Review: ${displayPath}
|
|
349
|
-
|
|
350
|
-
> **Review Type**: ${reviewType}
|
|
351
|
-
> **Model**: ${modelInfo}
|
|
352
|
-
> **Generated**: ${new Date(timestamp).toLocaleString()}
|
|
353
|
-
|
|
354
|
-
---
|
|
355
|
-
|
|
356
|
-
${metadataContent}${gradeMarkdown}## Summary
|
|
357
|
-
|
|
358
|
-
${summary}
|
|
359
|
-
|
|
360
|
-
## Issues
|
|
361
|
-
|
|
362
|
-
${issuesMarkdown}
|
|
363
|
-
${recommendationsMarkdown}${positiveAspectsMarkdown}---${costInfo}
|
|
364
|
-
|
|
365
|
-
*Generated by [cr-aia](https://github.com/filipkustec/cr-aia) using ${modelInfo}*`;
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
/**
|
|
369
|
-
* Format a simple markdown document with just the content
|
|
370
|
-
* Used as fallback when structured data isn't available
|
|
371
|
-
* @param content Content to include in the document
|
|
372
|
-
* @param filePath Path to the reviewed file
|
|
373
|
-
* @param reviewType Type of review performed
|
|
374
|
-
* @param timestamp Timestamp of when the review was generated
|
|
375
|
-
* @param costInfo Cost information formatted as Markdown
|
|
376
|
-
* @param modelInfo Model information
|
|
377
|
-
* @param metadataSection Optional metadata section to include
|
|
378
|
-
* @returns Markdown string
|
|
379
|
-
*/
|
|
380
|
-
export function formatSimpleMarkdown(
|
|
381
|
-
content: string,
|
|
382
|
-
filePath: string,
|
|
383
|
-
reviewType: string,
|
|
384
|
-
timestamp: string,
|
|
385
|
-
costInfo: string,
|
|
386
|
-
modelInfo: string,
|
|
387
|
-
metadataSection?: string,
|
|
388
|
-
): string {
|
|
389
|
-
// Sanitize the content
|
|
390
|
-
const sanitizedContent = sanitizeContent(content);
|
|
391
|
-
|
|
392
|
-
// Use the actual file path for the review title and the reviewed field
|
|
393
|
-
let displayPath = filePath || '';
|
|
394
|
-
|
|
395
|
-
if (!displayPath || displayPath === reviewType || displayPath === 'consolidated') {
|
|
396
|
-
// For consolidated reviews, show the full target directory path
|
|
397
|
-
displayPath = `${process.cwd()} (Current Directory)`;
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
// Extract model vendor and name from modelInfo
|
|
401
|
-
const { modelVendor, modelName } = extractModelInfoFromString(modelInfo);
|
|
402
|
-
|
|
403
|
-
// Parse cost information if it's available in string form
|
|
404
|
-
const cost = parseCostInfo(costInfo);
|
|
405
|
-
|
|
406
|
-
// Include metadata section if available
|
|
407
|
-
const metadataContent = metadataSection ? `${metadataSection}\n` : '';
|
|
408
|
-
|
|
409
|
-
// Generate a metadata section with model information if not provided
|
|
410
|
-
const modelMetadata = !metadataSection
|
|
411
|
-
? `## Metadata
|
|
412
|
-
| Property | Value |
|
|
413
|
-
|----------|-------|
|
|
414
|
-
| Review Type | ${reviewType} |
|
|
415
|
-
| Generated At | ${new Date(timestamp).toLocaleString(undefined, {
|
|
416
|
-
year: 'numeric',
|
|
417
|
-
month: 'long',
|
|
418
|
-
day: 'numeric',
|
|
419
|
-
hour: '2-digit',
|
|
420
|
-
minute: '2-digit',
|
|
421
|
-
second: '2-digit',
|
|
422
|
-
timeZoneName: 'short',
|
|
423
|
-
})} |
|
|
424
|
-
| Model Provider | ${modelVendor} |
|
|
425
|
-
| Model Name | ${modelName} |${
|
|
426
|
-
cost
|
|
427
|
-
? `
|
|
428
|
-
| Input Tokens | ${cost.inputTokens.toLocaleString()} |
|
|
429
|
-
| Output Tokens | ${cost.outputTokens.toLocaleString()} |
|
|
430
|
-
| Total Tokens | ${cost.totalTokens.toLocaleString()} |
|
|
431
|
-
| Estimated Cost | ${cost.formattedCost} |`
|
|
432
|
-
: ''
|
|
433
|
-
}${
|
|
434
|
-
cost?.passCount
|
|
435
|
-
? `
|
|
436
|
-
| Multi-pass Review | ${cost.passCount} passes |`
|
|
437
|
-
: ''
|
|
438
|
-
}
|
|
439
|
-
`
|
|
440
|
-
: '';
|
|
441
|
-
|
|
442
|
-
// Include this metadata section in all formats for consistency
|
|
443
|
-
const fullMetadataContent = metadataContent || modelMetadata;
|
|
444
|
-
|
|
445
|
-
return `# Code Review: ${displayPath}
|
|
446
|
-
|
|
447
|
-
> **Review Type**: ${reviewType}
|
|
448
|
-
> **Model**: ${modelInfo}
|
|
449
|
-
> **Generated**: ${new Date(timestamp).toLocaleString()}
|
|
450
|
-
|
|
451
|
-
---
|
|
452
|
-
|
|
453
|
-
${fullMetadataContent}
|
|
454
|
-
|
|
455
|
-
${sanitizedContent}
|
|
456
|
-
|
|
457
|
-
---${costInfo}
|
|
458
|
-
|
|
459
|
-
*Generated by [cr-aia](https://github.com/filipkustec/cr-aia) using ${modelInfo}*`;
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
/**
|
|
463
|
-
* Format a schema-based review (with 'review' property) as Markdown
|
|
464
|
-
* @param schemaReview Schema-based review object
|
|
465
|
-
* @param filePath Path to the reviewed file
|
|
466
|
-
* @param reviewType Type of review
|
|
467
|
-
* @param timestamp Timestamp of the review
|
|
468
|
-
* @param costInfo Cost information string
|
|
469
|
-
* @param modelInfo Model information string
|
|
470
|
-
* @param metadataSection Optional metadata section
|
|
471
|
-
* @returns Formatted markdown string
|
|
472
|
-
*/
|
|
473
|
-
export function formatSchemaBasedReviewAsMarkdown(
|
|
474
|
-
schemaReview: any,
|
|
475
|
-
filePath: string,
|
|
476
|
-
reviewType: string,
|
|
477
|
-
timestamp: string,
|
|
478
|
-
costInfo: string,
|
|
479
|
-
modelInfo: string,
|
|
480
|
-
metadataSection?: string,
|
|
481
|
-
): string {
|
|
482
|
-
// Extract the review object
|
|
483
|
-
const review = schemaReview.review;
|
|
484
|
-
if (!review || typeof review !== 'object') {
|
|
485
|
-
return formatSimpleMarkdown(
|
|
486
|
-
JSON.stringify(schemaReview, null, 2),
|
|
487
|
-
filePath,
|
|
488
|
-
reviewType,
|
|
489
|
-
timestamp,
|
|
490
|
-
costInfo,
|
|
491
|
-
modelInfo,
|
|
492
|
-
metadataSection,
|
|
493
|
-
);
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
// Extract files and issues
|
|
497
|
-
const files = review.files || [];
|
|
498
|
-
const summary = review.summary || {};
|
|
499
|
-
|
|
500
|
-
// Create issues sections by priority
|
|
501
|
-
const highPriorityIssues: any[] = [];
|
|
502
|
-
const mediumPriorityIssues: any[] = [];
|
|
503
|
-
const lowPriorityIssues: any[] = [];
|
|
504
|
-
|
|
505
|
-
// Collect all issues from all files
|
|
506
|
-
files.forEach((file: any) => {
|
|
507
|
-
const issues = file.issues || [];
|
|
508
|
-
issues.forEach((issue: any) => {
|
|
509
|
-
// Add file path to issue for context
|
|
510
|
-
const issueWithFile = { ...issue, filePath: file.filePath };
|
|
511
|
-
|
|
512
|
-
if (issue.priority === 'HIGH') {
|
|
513
|
-
highPriorityIssues.push(issueWithFile);
|
|
514
|
-
} else if (issue.priority === 'MEDIUM') {
|
|
515
|
-
mediumPriorityIssues.push(issueWithFile);
|
|
516
|
-
} else if (issue.priority === 'LOW') {
|
|
517
|
-
lowPriorityIssues.push(issueWithFile);
|
|
518
|
-
}
|
|
519
|
-
});
|
|
520
|
-
});
|
|
521
|
-
|
|
522
|
-
// Format the metadata section
|
|
523
|
-
let displayPath = filePath || '';
|
|
524
|
-
if (!displayPath || displayPath === reviewType || displayPath === 'consolidated') {
|
|
525
|
-
displayPath = `${process.cwd()} (Current Directory)`;
|
|
526
|
-
}
|
|
527
|
-
|
|
528
|
-
// Extract model vendor and name from modelInfo
|
|
529
|
-
const { modelVendor, modelName } = extractModelInfoFromString(modelInfo);
|
|
530
|
-
|
|
531
|
-
// Build the metadata section if not provided
|
|
532
|
-
if (!metadataSection) {
|
|
533
|
-
const formattedDate = new Date(timestamp).toLocaleString(undefined, {
|
|
534
|
-
year: 'numeric',
|
|
535
|
-
month: 'long',
|
|
536
|
-
day: 'numeric',
|
|
537
|
-
hour: '2-digit',
|
|
538
|
-
minute: '2-digit',
|
|
539
|
-
second: '2-digit',
|
|
540
|
-
timeZoneName: 'short',
|
|
541
|
-
});
|
|
542
|
-
|
|
543
|
-
metadataSection = `## Metadata
|
|
544
|
-
| Property | Value |
|
|
545
|
-
|----------|-------|
|
|
546
|
-
| Review Type | ${reviewType} |
|
|
547
|
-
| Generated At | ${formattedDate} |
|
|
548
|
-
| Model Provider | ${modelVendor} |
|
|
549
|
-
| Model Name | ${modelName} |`;
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
let output = `# Code Review: ${displayPath}
|
|
553
|
-
|
|
554
|
-
> **Review Type**: ${reviewType}
|
|
555
|
-
> **Model**: ${modelInfo}
|
|
556
|
-
> **Generated**: ${new Date(timestamp).toLocaleString()}
|
|
557
|
-
|
|
558
|
-
---
|
|
559
|
-
|
|
560
|
-
${metadataSection}
|
|
561
|
-
|
|
562
|
-
## Review Summary
|
|
563
|
-
|
|
564
|
-
`;
|
|
565
|
-
|
|
566
|
-
// Add summary counts
|
|
567
|
-
if (summary.totalIssues > 0) {
|
|
568
|
-
output += `Total issues found: **${summary.totalIssues}**
|
|
569
|
-
- High Priority: ${summary.highPriorityIssues || 0}
|
|
570
|
-
- Medium Priority: ${summary.mediumPriorityIssues || 0}
|
|
571
|
-
- Low Priority: ${summary.lowPriorityIssues || 0}
|
|
572
|
-
|
|
573
|
-
`;
|
|
574
|
-
} else {
|
|
575
|
-
output += `No issues found. The code looks good!\n\n`;
|
|
576
|
-
}
|
|
577
|
-
|
|
578
|
-
// Add issues by priority
|
|
579
|
-
if (highPriorityIssues.length > 0) {
|
|
580
|
-
output += `## High Priority Issues\n\n`;
|
|
581
|
-
highPriorityIssues.forEach((issue, index) => {
|
|
582
|
-
output += formatSchemaIssue(issue, index + 1);
|
|
583
|
-
});
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
if (mediumPriorityIssues.length > 0) {
|
|
587
|
-
output += `## Medium Priority Issues\n\n`;
|
|
588
|
-
mediumPriorityIssues.forEach((issue, index) => {
|
|
589
|
-
output += formatSchemaIssue(issue, index + 1);
|
|
590
|
-
});
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
if (lowPriorityIssues.length > 0) {
|
|
594
|
-
output += `## Low Priority Issues\n\n`;
|
|
595
|
-
lowPriorityIssues.forEach((issue, index) => {
|
|
596
|
-
output += formatSchemaIssue(issue, index + 1);
|
|
597
|
-
});
|
|
598
|
-
}
|
|
599
|
-
|
|
600
|
-
// Add cost information at the end
|
|
601
|
-
if (costInfo) {
|
|
602
|
-
output += `\n${costInfo}\n`;
|
|
603
|
-
}
|
|
604
|
-
|
|
605
|
-
// Add footer with tool information
|
|
606
|
-
output += `\n*Generated by [cr-aia](https://github.com/filipkustec/cr-aia) using ${modelInfo}*`;
|
|
607
|
-
|
|
608
|
-
return output;
|
|
609
|
-
}
|