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,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Findings Extractor for Code Reviews
|
|
3
|
+
*
|
|
4
|
+
* This service extracts, categorizes, and analyzes findings from code review
|
|
5
|
+
* results. It provides utilities for grading, recommendation generation,
|
|
6
|
+
* and finding prioritization.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Categorized findings from code review
|
|
10
|
+
*/
|
|
11
|
+
export interface CategorizedFindings {
|
|
12
|
+
high: Set<string>;
|
|
13
|
+
medium: Set<string>;
|
|
14
|
+
low: Set<string>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Grade information with justification
|
|
18
|
+
*/
|
|
19
|
+
export interface GradeInfo {
|
|
20
|
+
grade: string;
|
|
21
|
+
justification: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Service for extracting and analyzing findings from code reviews
|
|
25
|
+
*/
|
|
26
|
+
export declare class FindingsExtractor {
|
|
27
|
+
/**
|
|
28
|
+
* Extract findings from review passes
|
|
29
|
+
* @param passes Array of review results with content
|
|
30
|
+
* @returns Categorized findings
|
|
31
|
+
*/
|
|
32
|
+
extractFindingsFromPasses(passes: Array<{
|
|
33
|
+
content: string;
|
|
34
|
+
}>): CategorizedFindings;
|
|
35
|
+
/**
|
|
36
|
+
* Extract individual issue texts from content
|
|
37
|
+
* @param content Review content
|
|
38
|
+
* @returns Array of issue descriptions
|
|
39
|
+
*/
|
|
40
|
+
extractIssueTexts(content: string): string[];
|
|
41
|
+
/**
|
|
42
|
+
* Check if an issue is high priority
|
|
43
|
+
* @param issue Issue text (lowercase)
|
|
44
|
+
* @returns True if high priority
|
|
45
|
+
*/
|
|
46
|
+
private isHighPriority;
|
|
47
|
+
/**
|
|
48
|
+
* Check if an issue is medium priority
|
|
49
|
+
* @param issue Issue text (lowercase)
|
|
50
|
+
* @returns True if medium priority
|
|
51
|
+
*/
|
|
52
|
+
private isMediumPriority;
|
|
53
|
+
/**
|
|
54
|
+
* Calculate grade based on findings for a specific category
|
|
55
|
+
* @param findings Categorized findings
|
|
56
|
+
* @param category Category name (for logging)
|
|
57
|
+
* @returns Grade information
|
|
58
|
+
*/
|
|
59
|
+
calculateGrade(findings: CategorizedFindings, category: string): GradeInfo;
|
|
60
|
+
/**
|
|
61
|
+
* Calculate overall grade based on findings
|
|
62
|
+
* @param findings Categorized findings
|
|
63
|
+
* @returns Overall grade string
|
|
64
|
+
*/
|
|
65
|
+
calculateOverallGrade(findings: CategorizedFindings): string;
|
|
66
|
+
/**
|
|
67
|
+
* Get justification for grade
|
|
68
|
+
* @param findings Categorized findings
|
|
69
|
+
* @param category Category name
|
|
70
|
+
* @returns Grade justification string
|
|
71
|
+
*/
|
|
72
|
+
getGradeJustification(findings: CategorizedFindings, category: string): string;
|
|
73
|
+
/**
|
|
74
|
+
* Generate recommendations based on findings
|
|
75
|
+
* @param findings Categorized findings
|
|
76
|
+
* @param hasErrors Whether there are compilation errors
|
|
77
|
+
* @returns Array of recommendation strings
|
|
78
|
+
*/
|
|
79
|
+
generateRecommendations(findings: CategorizedFindings, hasErrors: boolean): string[];
|
|
80
|
+
/**
|
|
81
|
+
* Check if findings contain security-related issues
|
|
82
|
+
* @param findings Categorized findings
|
|
83
|
+
* @returns True if security issues are present
|
|
84
|
+
*/
|
|
85
|
+
private hasSecurityIssues;
|
|
86
|
+
/**
|
|
87
|
+
* Check if findings contain performance-related issues
|
|
88
|
+
* @param findings Categorized findings
|
|
89
|
+
* @returns True if performance issues are present
|
|
90
|
+
*/
|
|
91
|
+
private hasPerformanceIssues;
|
|
92
|
+
/**
|
|
93
|
+
* Check if findings contain testing-related issues
|
|
94
|
+
* @param findings Categorized findings
|
|
95
|
+
* @returns True if testing issues are present
|
|
96
|
+
*/
|
|
97
|
+
private hasTestingIssues;
|
|
98
|
+
/**
|
|
99
|
+
* Format findings for display in reports
|
|
100
|
+
* @param findings Categorized findings
|
|
101
|
+
* @param maxPerCategory Maximum items to show per category
|
|
102
|
+
* @returns Formatted findings string
|
|
103
|
+
*/
|
|
104
|
+
formatFindings(findings: CategorizedFindings, maxPerCategory?: number): string;
|
|
105
|
+
}
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Findings Extractor for Code Reviews
|
|
4
|
+
*
|
|
5
|
+
* This service extracts, categorizes, and analyzes findings from code review
|
|
6
|
+
* results. It provides utilities for grading, recommendation generation,
|
|
7
|
+
* and finding prioritization.
|
|
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.FindingsExtractor = void 0;
|
|
14
|
+
const logger_1 = __importDefault(require("../utils/logger"));
|
|
15
|
+
/**
|
|
16
|
+
* Service for extracting and analyzing findings from code reviews
|
|
17
|
+
*/
|
|
18
|
+
class FindingsExtractor {
|
|
19
|
+
/**
|
|
20
|
+
* Extract findings from review passes
|
|
21
|
+
* @param passes Array of review results with content
|
|
22
|
+
* @returns Categorized findings
|
|
23
|
+
*/
|
|
24
|
+
extractFindingsFromPasses(passes) {
|
|
25
|
+
const highPriorityFindings = new Set();
|
|
26
|
+
const mediumPriorityFindings = new Set();
|
|
27
|
+
const lowPriorityFindings = new Set();
|
|
28
|
+
for (const pass of passes) {
|
|
29
|
+
if (!pass.content)
|
|
30
|
+
continue;
|
|
31
|
+
const issueTexts = this.extractIssueTexts(pass.content);
|
|
32
|
+
for (const issue of issueTexts) {
|
|
33
|
+
const lowerIssue = issue.toLowerCase();
|
|
34
|
+
// Categorize by priority keywords
|
|
35
|
+
if (this.isHighPriority(lowerIssue)) {
|
|
36
|
+
highPriorityFindings.add(issue);
|
|
37
|
+
}
|
|
38
|
+
else if (this.isMediumPriority(lowerIssue)) {
|
|
39
|
+
mediumPriorityFindings.add(issue);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
lowPriorityFindings.add(issue);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
logger_1.default.debug(`Extracted findings: ${highPriorityFindings.size} high, ${mediumPriorityFindings.size} medium, ${lowPriorityFindings.size} low`);
|
|
47
|
+
return {
|
|
48
|
+
high: highPriorityFindings,
|
|
49
|
+
medium: mediumPriorityFindings,
|
|
50
|
+
low: lowPriorityFindings,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Extract individual issue texts from content
|
|
55
|
+
* @param content Review content
|
|
56
|
+
* @returns Array of issue descriptions
|
|
57
|
+
*/
|
|
58
|
+
extractIssueTexts(content) {
|
|
59
|
+
const issues = [];
|
|
60
|
+
// Extract bullet points and numbered items
|
|
61
|
+
const bulletRegex = /^[\s]*[-*•]\s+(.+)$/gm;
|
|
62
|
+
const numberedRegex = /^[\s]*\d+\.\s+(.+)$/gm;
|
|
63
|
+
const dashRegex = /^[\s]*-\s+(.+)$/gm;
|
|
64
|
+
let match;
|
|
65
|
+
// Extract bullet points
|
|
66
|
+
while ((match = bulletRegex.exec(content)) !== null) {
|
|
67
|
+
const issue = match[1].trim();
|
|
68
|
+
if (issue.length > 10) {
|
|
69
|
+
// Filter out very short items
|
|
70
|
+
issues.push(issue);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Extract numbered items
|
|
74
|
+
while ((match = numberedRegex.exec(content)) !== null) {
|
|
75
|
+
const issue = match[1].trim();
|
|
76
|
+
if (issue.length > 10) {
|
|
77
|
+
issues.push(issue);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Extract dash items (alternative format)
|
|
81
|
+
while ((match = dashRegex.exec(content)) !== null) {
|
|
82
|
+
const issue = match[1].trim();
|
|
83
|
+
if (issue.length > 10) {
|
|
84
|
+
issues.push(issue);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Remove duplicates
|
|
88
|
+
return [...new Set(issues)];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Check if an issue is high priority
|
|
92
|
+
* @param issue Issue text (lowercase)
|
|
93
|
+
* @returns True if high priority
|
|
94
|
+
*/
|
|
95
|
+
isHighPriority(issue) {
|
|
96
|
+
const highPriorityKeywords = [
|
|
97
|
+
'security',
|
|
98
|
+
'vulnerability',
|
|
99
|
+
'critical',
|
|
100
|
+
'error',
|
|
101
|
+
'bug',
|
|
102
|
+
'crash',
|
|
103
|
+
'memory leak',
|
|
104
|
+
'sql injection',
|
|
105
|
+
'xss',
|
|
106
|
+
'csrf',
|
|
107
|
+
'injection',
|
|
108
|
+
'authentication',
|
|
109
|
+
'authorization',
|
|
110
|
+
'privilege escalation',
|
|
111
|
+
'data breach',
|
|
112
|
+
'sensitive data',
|
|
113
|
+
'password',
|
|
114
|
+
'token',
|
|
115
|
+
'deadlock',
|
|
116
|
+
'race condition',
|
|
117
|
+
'null pointer',
|
|
118
|
+
'buffer overflow',
|
|
119
|
+
];
|
|
120
|
+
return highPriorityKeywords.some((keyword) => issue.includes(keyword));
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Check if an issue is medium priority
|
|
124
|
+
* @param issue Issue text (lowercase)
|
|
125
|
+
* @returns True if medium priority
|
|
126
|
+
*/
|
|
127
|
+
isMediumPriority(issue) {
|
|
128
|
+
const mediumPriorityKeywords = [
|
|
129
|
+
'warning',
|
|
130
|
+
'deprecated',
|
|
131
|
+
'inefficient',
|
|
132
|
+
'refactor',
|
|
133
|
+
'improve',
|
|
134
|
+
'optimization',
|
|
135
|
+
'maintainability',
|
|
136
|
+
'readability',
|
|
137
|
+
'complexity',
|
|
138
|
+
'duplication',
|
|
139
|
+
'coupling',
|
|
140
|
+
'cohesion',
|
|
141
|
+
'design pattern',
|
|
142
|
+
'architecture',
|
|
143
|
+
'structure',
|
|
144
|
+
'organization',
|
|
145
|
+
'naming',
|
|
146
|
+
'documentation',
|
|
147
|
+
'comment',
|
|
148
|
+
'test coverage',
|
|
149
|
+
'error handling',
|
|
150
|
+
];
|
|
151
|
+
return mediumPriorityKeywords.some((keyword) => issue.includes(keyword));
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Calculate grade based on findings for a specific category
|
|
155
|
+
* @param findings Categorized findings
|
|
156
|
+
* @param category Category name (for logging)
|
|
157
|
+
* @returns Grade information
|
|
158
|
+
*/
|
|
159
|
+
calculateGrade(findings, category) {
|
|
160
|
+
const totalIssues = findings.high.size + findings.medium.size + findings.low.size;
|
|
161
|
+
let grade;
|
|
162
|
+
let justification;
|
|
163
|
+
if (findings.high.size > 5) {
|
|
164
|
+
grade = 'D';
|
|
165
|
+
justification = `Multiple critical issues (${findings.high.size}) require immediate attention`;
|
|
166
|
+
}
|
|
167
|
+
else if (findings.high.size > 2) {
|
|
168
|
+
grade = 'C';
|
|
169
|
+
justification = `Several critical issues (${findings.high.size}) need to be addressed`;
|
|
170
|
+
}
|
|
171
|
+
else if (findings.high.size > 0) {
|
|
172
|
+
grade = 'C+';
|
|
173
|
+
justification = `Some critical issues (${findings.high.size}) present`;
|
|
174
|
+
}
|
|
175
|
+
else if (findings.medium.size > 10) {
|
|
176
|
+
grade = 'C+';
|
|
177
|
+
justification = `Many medium-priority issues (${findings.medium.size}) affect code quality`;
|
|
178
|
+
}
|
|
179
|
+
else if (findings.medium.size > 5) {
|
|
180
|
+
grade = 'B';
|
|
181
|
+
justification = `Several medium-priority issues (${findings.medium.size}) could be improved`;
|
|
182
|
+
}
|
|
183
|
+
else if (findings.medium.size > 2) {
|
|
184
|
+
grade = 'B+';
|
|
185
|
+
justification = `Some medium-priority issues (${findings.medium.size}) noted`;
|
|
186
|
+
}
|
|
187
|
+
else if (totalIssues > 5) {
|
|
188
|
+
grade = 'A-';
|
|
189
|
+
justification = `Minor issues (${totalIssues}) but overall good quality`;
|
|
190
|
+
}
|
|
191
|
+
else if (totalIssues > 0) {
|
|
192
|
+
grade = 'A';
|
|
193
|
+
justification = `Very few issues (${totalIssues}), high quality code`;
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
grade = 'A+';
|
|
197
|
+
justification = 'Excellent code quality with no significant issues';
|
|
198
|
+
}
|
|
199
|
+
logger_1.default.debug(`Grade for ${category}: ${grade} (${justification})`);
|
|
200
|
+
return { grade, justification };
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Calculate overall grade based on findings
|
|
204
|
+
* @param findings Categorized findings
|
|
205
|
+
* @returns Overall grade string
|
|
206
|
+
*/
|
|
207
|
+
calculateOverallGrade(findings) {
|
|
208
|
+
const gradeInfo = this.calculateGrade(findings, 'overall');
|
|
209
|
+
return gradeInfo.grade;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Get justification for grade
|
|
213
|
+
* @param findings Categorized findings
|
|
214
|
+
* @param category Category name
|
|
215
|
+
* @returns Grade justification string
|
|
216
|
+
*/
|
|
217
|
+
getGradeJustification(findings, category) {
|
|
218
|
+
const gradeInfo = this.calculateGrade(findings, category);
|
|
219
|
+
return gradeInfo.justification;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Generate recommendations based on findings
|
|
223
|
+
* @param findings Categorized findings
|
|
224
|
+
* @param hasErrors Whether there are compilation errors
|
|
225
|
+
* @returns Array of recommendation strings
|
|
226
|
+
*/
|
|
227
|
+
generateRecommendations(findings, hasErrors) {
|
|
228
|
+
const recommendations = [];
|
|
229
|
+
if (hasErrors) {
|
|
230
|
+
recommendations.push('Fix compilation errors before proceeding with other improvements');
|
|
231
|
+
}
|
|
232
|
+
if (findings.high.size > 0) {
|
|
233
|
+
recommendations.push(`Address ${findings.high.size} high-priority security and critical issues immediately`);
|
|
234
|
+
if (findings.high.size > 3) {
|
|
235
|
+
recommendations.push('Consider conducting a security audit given the number of critical issues');
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
if (findings.medium.size > 8) {
|
|
239
|
+
recommendations.push(`Review and address ${findings.medium.size} medium-priority maintainability issues`);
|
|
240
|
+
recommendations.push('Consider refactoring to improve code structure and maintainability');
|
|
241
|
+
}
|
|
242
|
+
else if (findings.medium.size > 3) {
|
|
243
|
+
recommendations.push(`Address ${findings.medium.size} medium-priority issues to improve code quality`);
|
|
244
|
+
}
|
|
245
|
+
if (findings.low.size > 15) {
|
|
246
|
+
recommendations.push(`Consider addressing ${findings.low.size} low-priority style and minor issues`);
|
|
247
|
+
recommendations.push('Implement automated linting and formatting tools');
|
|
248
|
+
}
|
|
249
|
+
else if (findings.low.size > 8) {
|
|
250
|
+
recommendations.push(`Review ${findings.low.size} low-priority issues when time permits`);
|
|
251
|
+
}
|
|
252
|
+
// Add positive recommendations for good code
|
|
253
|
+
if (findings.high.size === 0 && findings.medium.size < 3) {
|
|
254
|
+
recommendations.push('Code quality is good. Continue following current best practices.');
|
|
255
|
+
if (findings.low.size === 0) {
|
|
256
|
+
recommendations.push('Excellent code quality. Consider sharing best practices with the team.');
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
// Add specific recommendations based on issue types
|
|
260
|
+
if (this.hasSecurityIssues(findings)) {
|
|
261
|
+
recommendations.push('Implement security code review process and security testing');
|
|
262
|
+
}
|
|
263
|
+
if (this.hasPerformanceIssues(findings)) {
|
|
264
|
+
recommendations.push('Consider performance profiling and optimization');
|
|
265
|
+
}
|
|
266
|
+
if (this.hasTestingIssues(findings)) {
|
|
267
|
+
recommendations.push('Improve test coverage and add more comprehensive tests');
|
|
268
|
+
}
|
|
269
|
+
return recommendations;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Check if findings contain security-related issues
|
|
273
|
+
* @param findings Categorized findings
|
|
274
|
+
* @returns True if security issues are present
|
|
275
|
+
*/
|
|
276
|
+
hasSecurityIssues(findings) {
|
|
277
|
+
const allFindings = [...findings.high, ...findings.medium, ...findings.low];
|
|
278
|
+
const securityKeywords = [
|
|
279
|
+
'security',
|
|
280
|
+
'vulnerability',
|
|
281
|
+
'injection',
|
|
282
|
+
'xss',
|
|
283
|
+
'csrf',
|
|
284
|
+
'authentication',
|
|
285
|
+
];
|
|
286
|
+
return allFindings.some((finding) => securityKeywords.some((keyword) => finding.toLowerCase().includes(keyword)));
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Check if findings contain performance-related issues
|
|
290
|
+
* @param findings Categorized findings
|
|
291
|
+
* @returns True if performance issues are present
|
|
292
|
+
*/
|
|
293
|
+
hasPerformanceIssues(findings) {
|
|
294
|
+
const allFindings = [...findings.high, ...findings.medium, ...findings.low];
|
|
295
|
+
const performanceKeywords = [
|
|
296
|
+
'performance',
|
|
297
|
+
'slow',
|
|
298
|
+
'inefficient',
|
|
299
|
+
'optimization',
|
|
300
|
+
'memory',
|
|
301
|
+
'cpu',
|
|
302
|
+
];
|
|
303
|
+
return allFindings.some((finding) => performanceKeywords.some((keyword) => finding.toLowerCase().includes(keyword)));
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Check if findings contain testing-related issues
|
|
307
|
+
* @param findings Categorized findings
|
|
308
|
+
* @returns True if testing issues are present
|
|
309
|
+
*/
|
|
310
|
+
hasTestingIssues(findings) {
|
|
311
|
+
const allFindings = [...findings.high, ...findings.medium, ...findings.low];
|
|
312
|
+
const testingKeywords = [
|
|
313
|
+
'test',
|
|
314
|
+
'coverage',
|
|
315
|
+
'mock',
|
|
316
|
+
'assertion',
|
|
317
|
+
'unit test',
|
|
318
|
+
'integration test',
|
|
319
|
+
];
|
|
320
|
+
return allFindings.some((finding) => testingKeywords.some((keyword) => finding.toLowerCase().includes(keyword)));
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Format findings for display in reports
|
|
324
|
+
* @param findings Categorized findings
|
|
325
|
+
* @param maxPerCategory Maximum items to show per category
|
|
326
|
+
* @returns Formatted findings string
|
|
327
|
+
*/
|
|
328
|
+
formatFindings(findings, maxPerCategory = 5) {
|
|
329
|
+
const sections = [];
|
|
330
|
+
if (findings.high.size > 0) {
|
|
331
|
+
sections.push(`**High Priority (${findings.high.size}):**`);
|
|
332
|
+
sections.push(...Array.from(findings.high)
|
|
333
|
+
.slice(0, maxPerCategory)
|
|
334
|
+
.map((f) => `- ${f}`));
|
|
335
|
+
if (findings.high.size > maxPerCategory) {
|
|
336
|
+
sections.push(`- ... and ${findings.high.size - maxPerCategory} more`);
|
|
337
|
+
}
|
|
338
|
+
sections.push('');
|
|
339
|
+
}
|
|
340
|
+
if (findings.medium.size > 0) {
|
|
341
|
+
sections.push(`**Medium Priority (${findings.medium.size}):**`);
|
|
342
|
+
sections.push(...Array.from(findings.medium)
|
|
343
|
+
.slice(0, maxPerCategory)
|
|
344
|
+
.map((f) => `- ${f}`));
|
|
345
|
+
if (findings.medium.size > maxPerCategory) {
|
|
346
|
+
sections.push(`- ... and ${findings.medium.size - maxPerCategory} more`);
|
|
347
|
+
}
|
|
348
|
+
sections.push('');
|
|
349
|
+
}
|
|
350
|
+
if (findings.low.size > 0) {
|
|
351
|
+
sections.push(`**Low Priority (${findings.low.size}):**`);
|
|
352
|
+
sections.push(...Array.from(findings.low)
|
|
353
|
+
.slice(0, Math.min(maxPerCategory, 3))
|
|
354
|
+
.map((f) => `- ${f}`));
|
|
355
|
+
if (findings.low.size > 3) {
|
|
356
|
+
sections.push(`- ... and ${findings.low.size - 3} more`);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
return sections.join('\n');
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
exports.FindingsExtractor = FindingsExtractor;
|
|
363
|
+
//# sourceMappingURL=FindingsExtractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FindingsExtractor.js","sourceRoot":"","sources":["../../src/analysis/FindingsExtractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Base analyzer class for AI detection patterns.
|
|
3
|
+
*
|
|
4
|
+
* This module provides the abstract base class that all specific analyzers extend,
|
|
5
|
+
* ensuring consistent interface and common functionality across different analysis types.
|
|
6
|
+
*/
|
|
7
|
+
import type { CodeSubmission, DetectedPattern, DetectionConfig, PatternDetectionResult } from '../types/DetectionTypes';
|
|
8
|
+
/**
|
|
9
|
+
* Abstract base class for all AI detection analyzers
|
|
10
|
+
*/
|
|
11
|
+
export declare abstract class BaseAnalyzer {
|
|
12
|
+
protected config: DetectionConfig;
|
|
13
|
+
protected startTime: number;
|
|
14
|
+
/**
|
|
15
|
+
* Create a new base analyzer
|
|
16
|
+
* @param config Detection configuration
|
|
17
|
+
*/
|
|
18
|
+
constructor(config: DetectionConfig);
|
|
19
|
+
/**
|
|
20
|
+
* Analyze the submission for AI-generated patterns
|
|
21
|
+
* @param submission Code submission to analyze
|
|
22
|
+
* @returns Analysis result specific to this analyzer
|
|
23
|
+
*/
|
|
24
|
+
abstract analyze(submission: CodeSubmission): Promise<any>;
|
|
25
|
+
/**
|
|
26
|
+
* Get the analyzer name
|
|
27
|
+
* @returns Analyzer identifier
|
|
28
|
+
*/
|
|
29
|
+
abstract getAnalyzerName(): string;
|
|
30
|
+
/**
|
|
31
|
+
* Check if this analyzer is enabled in configuration
|
|
32
|
+
* @returns True if analyzer should run
|
|
33
|
+
*/
|
|
34
|
+
isEnabled(): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Start timing analysis
|
|
37
|
+
*/
|
|
38
|
+
protected startTimer(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Get elapsed time since timer start
|
|
41
|
+
* @returns Elapsed time in milliseconds
|
|
42
|
+
*/
|
|
43
|
+
protected getElapsedTime(): number;
|
|
44
|
+
/**
|
|
45
|
+
* Create a detected pattern object
|
|
46
|
+
* @param id Pattern identifier
|
|
47
|
+
* @param name Human-readable name
|
|
48
|
+
* @param confidence Confidence level
|
|
49
|
+
* @param score Numerical score
|
|
50
|
+
* @param description Pattern description
|
|
51
|
+
* @param evidenceData Supporting evidence
|
|
52
|
+
* @returns Detected pattern object
|
|
53
|
+
*/
|
|
54
|
+
protected createDetectedPattern(id: string, name: string, confidence: 'high' | 'medium' | 'low', score: number, description: string, evidenceData: Record<string, any>): DetectedPattern;
|
|
55
|
+
/**
|
|
56
|
+
* Create a pattern detection result
|
|
57
|
+
* @param detected Whether pattern was detected
|
|
58
|
+
* @param score Confidence score
|
|
59
|
+
* @param evidence Supporting evidence
|
|
60
|
+
* @returns Pattern detection result
|
|
61
|
+
*/
|
|
62
|
+
protected createPatternResult(detected: boolean, score: number, evidence?: Record<string, any>): PatternDetectionResult;
|
|
63
|
+
/**
|
|
64
|
+
* Calculate uniformity of a numeric array
|
|
65
|
+
* Used for detecting suspiciously uniform patterns in code
|
|
66
|
+
* @param values Array of numeric values
|
|
67
|
+
* @returns Uniformity score from 0.0 to 1.0 (higher = more uniform)
|
|
68
|
+
*/
|
|
69
|
+
protected calculateUniformity(values: number[]): number;
|
|
70
|
+
/**
|
|
71
|
+
* Calculate variance of a numeric array
|
|
72
|
+
* @param values Array of numeric values
|
|
73
|
+
* @param mean Pre-calculated mean (optional)
|
|
74
|
+
* @returns Variance value
|
|
75
|
+
*/
|
|
76
|
+
protected calculateVariance(values: number[], mean?: number): number;
|
|
77
|
+
/**
|
|
78
|
+
* Extract sections from markdown or text content
|
|
79
|
+
* @param content Text content to analyze
|
|
80
|
+
* @returns Array of section headers found
|
|
81
|
+
*/
|
|
82
|
+
protected extractSections(content: string): string[];
|
|
83
|
+
/**
|
|
84
|
+
* Count badges in markdown content
|
|
85
|
+
* @param content Markdown content
|
|
86
|
+
* @returns Number of badges found
|
|
87
|
+
*/
|
|
88
|
+
protected countBadges(content: string): number;
|
|
89
|
+
/**
|
|
90
|
+
* Count generic phrases that suggest AI generation
|
|
91
|
+
* @param content Text content to analyze
|
|
92
|
+
* @returns Number of generic phrases found
|
|
93
|
+
*/
|
|
94
|
+
protected countGenericPhrases(content: string): number;
|
|
95
|
+
/**
|
|
96
|
+
* Validate that a score is within valid range
|
|
97
|
+
* @param score Score to validate
|
|
98
|
+
* @returns Clamped score between 0.0 and 1.0
|
|
99
|
+
*/
|
|
100
|
+
protected validateScore(score: number): number;
|
|
101
|
+
/**
|
|
102
|
+
* Check if analysis should timeout
|
|
103
|
+
* @returns True if analysis has exceeded time limit
|
|
104
|
+
*/
|
|
105
|
+
protected shouldTimeout(): boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Create timeout error
|
|
108
|
+
* @returns Error object for timeout
|
|
109
|
+
*/
|
|
110
|
+
protected createTimeoutError(): Error;
|
|
111
|
+
}
|