codereview-aia 0.2.0 → 0.2.2
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/index.js +0 -7
- package/dist/index.js.map +1 -1
- package/dist/runtime/api/batcher.d.ts +20 -0
- package/dist/runtime/api/batcher.js +52 -0
- package/dist/runtime/api/batcher.js.map +1 -0
- package/dist/runtime/api/edgeClient.d.ts +102 -0
- package/dist/runtime/api/edgeClient.js +162 -0
- package/dist/runtime/api/edgeClient.js.map +1 -0
- package/dist/runtime/api/index.d.ts +2 -0
- package/dist/runtime/api/index.js +9 -0
- package/dist/runtime/api/index.js.map +1 -0
- package/dist/runtime/cliEntry.js +24 -76
- package/dist/runtime/cliEntry.js.map +1 -1
- package/dist/runtime/errors.d.ts +13 -3
- package/dist/runtime/errors.js +31 -8
- package/dist/runtime/errors.js.map +1 -1
- package/dist/runtime/llm/index.d.ts +1 -0
- package/dist/runtime/llm/index.js +6 -0
- package/dist/runtime/llm/index.js.map +1 -0
- package/dist/runtime/llm/openRouterClient.d.ts +13 -0
- package/dist/runtime/llm/openRouterClient.js +187 -0
- package/dist/runtime/llm/openRouterClient.js.map +1 -0
- package/dist/runtime/phpFileResolver.d.ts +14 -0
- package/dist/runtime/phpFileResolver.js +231 -0
- package/dist/runtime/phpFileResolver.js.map +1 -0
- package/dist/runtime/phpcsParser.d.ts +10 -0
- package/dist/runtime/phpcsParser.js +35 -0
- package/dist/runtime/phpcsParser.js.map +1 -0
- package/dist/runtime/phpcsRunner.d.ts +32 -0
- package/dist/runtime/phpcsRunner.js +62 -0
- package/dist/runtime/phpcsRunner.js.map +1 -0
- package/dist/runtime/reportWriter.d.ts +17 -0
- package/dist/runtime/reportWriter.js +80 -0
- package/dist/runtime/reportWriter.js.map +1 -0
- package/dist/runtime/reviewPipeline.d.ts +14 -36
- package/dist/runtime/reviewPipeline.js +146 -199
- package/dist/runtime/reviewPipeline.js.map +1 -1
- package/dist/runtime/ui/RuntimeApp.js +23 -154
- package/dist/runtime/ui/RuntimeApp.js.map +1 -1
- package/dist/runtime/ui/screens/AuthScreen.d.ts +2 -3
- package/dist/runtime/ui/screens/AuthScreen.js +7 -53
- package/dist/runtime/ui/screens/AuthScreen.js.map +1 -1
- package/dist/runtime/ui/screens/ModeSelection.d.ts +1 -2
- package/dist/runtime/ui/screens/ModeSelection.js +14 -139
- package/dist/runtime/ui/screens/ModeSelection.js.map +1 -1
- package/dist/runtime/ui/screens/ProgressScreen.d.ts +5 -13
- package/dist/runtime/ui/screens/ProgressScreen.js +24 -61
- package/dist/runtime/ui/screens/ProgressScreen.js.map +1 -1
- package/dist/runtime/ui/screens/ResultsScreen.js +7 -17
- package/dist/runtime/ui/screens/ResultsScreen.js.map +1 -1
- package/package.json +4 -44
- package/dist/analysis/FindingsExtractor.d.ts +0 -105
- package/dist/analysis/FindingsExtractor.js +0 -363
- package/dist/analysis/FindingsExtractor.js.map +0 -1
- package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.d.ts +0 -111
- package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.js +0 -215
- package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.js.map +0 -1
- package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.d.ts +0 -142
- package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.js +0 -503
- package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.js.map +0 -1
- package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.d.ts +0 -88
- package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.js +0 -343
- package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.js.map +0 -1
- package/dist/analysis/ai-detection/core/AIDetectionEngine.d.ts +0 -104
- package/dist/analysis/ai-detection/core/AIDetectionEngine.js +0 -369
- package/dist/analysis/ai-detection/core/AIDetectionEngine.js.map +0 -1
- package/dist/analysis/ai-detection/types/DetectionTypes.d.ts +0 -364
- package/dist/analysis/ai-detection/types/DetectionTypes.js +0 -32
- package/dist/analysis/ai-detection/types/DetectionTypes.js.map +0 -1
- package/dist/analysis/ai-detection/utils/SubmissionConverter.d.ts +0 -97
- package/dist/analysis/ai-detection/utils/SubmissionConverter.js +0 -339
- package/dist/analysis/ai-detection/utils/SubmissionConverter.js.map +0 -1
- package/dist/analysis/context/ReviewContext.d.ts +0 -184
- package/dist/analysis/context/ReviewContext.js +0 -294
- package/dist/analysis/context/ReviewContext.js.map +0 -1
- package/dist/analysis/context/index.d.ts +0 -6
- package/dist/analysis/context/index.js +0 -23
- package/dist/analysis/context/index.js.map +0 -1
- package/dist/analysis/index.d.ts +0 -7
- package/dist/analysis/index.js +0 -24
- package/dist/analysis/index.js.map +0 -1
- package/dist/analysis/static/wpPhpcsRunner.d.ts +0 -11
- package/dist/analysis/static/wpPhpcsRunner.js +0 -219
- package/dist/analysis/static/wpPhpcsRunner.js.map +0 -1
- package/dist/analysis/tokens/TokenAnalysisFormatter.d.ts +0 -27
- package/dist/analysis/tokens/TokenAnalysisFormatter.js +0 -143
- package/dist/analysis/tokens/TokenAnalysisFormatter.js.map +0 -1
- package/dist/analysis/tokens/TokenAnalyzer.d.ts +0 -155
- package/dist/analysis/tokens/TokenAnalyzer.js +0 -502
- package/dist/analysis/tokens/TokenAnalyzer.js.map +0 -1
- package/dist/analysis/tokens/index.d.ts +0 -7
- package/dist/analysis/tokens/index.js +0 -24
- package/dist/analysis/tokens/index.js.map +0 -1
- package/dist/clients/base/abstractClient.d.ts +0 -99
- package/dist/clients/base/abstractClient.js +0 -98
- package/dist/clients/base/abstractClient.js.map +0 -1
- package/dist/clients/base/httpClient.d.ts +0 -24
- package/dist/clients/base/httpClient.js +0 -147
- package/dist/clients/base/httpClient.js.map +0 -1
- package/dist/clients/base/index.d.ts +0 -11
- package/dist/clients/base/index.js +0 -28
- package/dist/clients/base/index.js.map +0 -1
- package/dist/clients/base/modelDetection.d.ts +0 -41
- package/dist/clients/base/modelDetection.js +0 -88
- package/dist/clients/base/modelDetection.js.map +0 -1
- package/dist/clients/base/responseProcessor.d.ts +0 -45
- package/dist/clients/base/responseProcessor.js +0 -495
- package/dist/clients/base/responseProcessor.js.map +0 -1
- package/dist/clients/factory/clientFactory.d.ts +0 -23
- package/dist/clients/factory/clientFactory.js +0 -50
- package/dist/clients/factory/clientFactory.js.map +0 -1
- package/dist/clients/factory/index.d.ts +0 -7
- package/dist/clients/factory/index.js +0 -24
- package/dist/clients/factory/index.js.map +0 -1
- package/dist/clients/implementations/index.d.ts +0 -7
- package/dist/clients/implementations/index.js +0 -24
- package/dist/clients/implementations/index.js.map +0 -1
- package/dist/clients/implementations/openRouterClient.d.ts +0 -69
- package/dist/clients/implementations/openRouterClient.js +0 -294
- package/dist/clients/implementations/openRouterClient.js.map +0 -1
- package/dist/clients/openRouterClient.d.ts +0 -42
- package/dist/clients/openRouterClient.js +0 -580
- package/dist/clients/openRouterClient.js.map +0 -1
- package/dist/clients/openRouterClientWrapper.d.ts +0 -22
- package/dist/clients/openRouterClientWrapper.js +0 -64
- package/dist/clients/openRouterClientWrapper.js.map +0 -1
- package/dist/clients/utils/directoryStructure.d.ts +0 -14
- package/dist/clients/utils/directoryStructure.js +0 -48
- package/dist/clients/utils/directoryStructure.js.map +0 -1
- package/dist/clients/utils/index.d.ts +0 -10
- package/dist/clients/utils/index.js +0 -31
- package/dist/clients/utils/index.js.map +0 -1
- package/dist/clients/utils/languageDetection.d.ts +0 -13
- package/dist/clients/utils/languageDetection.js +0 -46
- package/dist/clients/utils/languageDetection.js.map +0 -1
- package/dist/clients/utils/promptFormatter.d.ts +0 -37
- package/dist/clients/utils/promptFormatter.js +0 -150
- package/dist/clients/utils/promptFormatter.js.map +0 -1
- package/dist/clients/utils/promptLoader.d.ts +0 -27
- package/dist/clients/utils/promptLoader.js +0 -49
- package/dist/clients/utils/promptLoader.js.map +0 -1
- package/dist/clients/utils/tokenCounter.d.ts +0 -81
- package/dist/clients/utils/tokenCounter.js +0 -184
- package/dist/clients/utils/tokenCounter.js.map +0 -1
- package/dist/core/ApiClientSelector.d.ts +0 -8
- package/dist/core/ApiClientSelector.js +0 -29
- package/dist/core/ApiClientSelector.js.map +0 -1
- package/dist/core/ConfigurationService.d.ts +0 -307
- package/dist/core/ConfigurationService.js +0 -516
- package/dist/core/ConfigurationService.js.map +0 -1
- package/dist/core/ConsolidationService.d.ts +0 -99
- package/dist/core/ConsolidationService.js +0 -341
- package/dist/core/ConsolidationService.js.map +0 -1
- package/dist/core/InteractiveDisplayManager.d.ts +0 -22
- package/dist/core/InteractiveDisplayManager.js +0 -70
- package/dist/core/InteractiveDisplayManager.js.map +0 -1
- package/dist/core/OutputManager.d.ts +0 -26
- package/dist/core/OutputManager.js +0 -217
- package/dist/core/OutputManager.js.map +0 -1
- package/dist/core/ReviewGenerator.d.ts +0 -13
- package/dist/core/ReviewGenerator.js +0 -102
- package/dist/core/ReviewGenerator.js.map +0 -1
- package/dist/core/fileDiscovery.d.ts +0 -35
- package/dist/core/fileDiscovery.js +0 -202
- package/dist/core/fileDiscovery.js.map +0 -1
- package/dist/core/handlers/EstimationHandler.d.ts +0 -18
- package/dist/core/handlers/EstimationHandler.js +0 -110
- package/dist/core/handlers/EstimationHandler.js.map +0 -1
- package/dist/core/handlers/FileProcessingHandler.d.ts +0 -31
- package/dist/core/handlers/FileProcessingHandler.js +0 -164
- package/dist/core/handlers/FileProcessingHandler.js.map +0 -1
- package/dist/core/handlers/OutputHandler.d.ts +0 -27
- package/dist/core/handlers/OutputHandler.js +0 -127
- package/dist/core/handlers/OutputHandler.js.map +0 -1
- package/dist/core/handlers/ReviewExecutor.d.ts +0 -32
- package/dist/core/handlers/ReviewExecutor.js +0 -111
- package/dist/core/handlers/ReviewExecutor.js.map +0 -1
- package/dist/core/reviewOrchestrator.d.ts +0 -24
- package/dist/core/reviewOrchestrator.js +0 -354
- package/dist/core/reviewOrchestrator.js.map +0 -1
- package/dist/core/utils/ModelInfoUtils.d.ts +0 -16
- package/dist/core/utils/ModelInfoUtils.js +0 -54
- package/dist/core/utils/ModelInfoUtils.js.map +0 -1
- package/dist/formatters/outputFormatter.d.ts +0 -31
- package/dist/formatters/outputFormatter.js +0 -65
- package/dist/formatters/outputFormatter.js.map +0 -1
- package/dist/formatters/utils/IssueFormatters.d.ts +0 -20
- package/dist/formatters/utils/IssueFormatters.js +0 -67
- package/dist/formatters/utils/IssueFormatters.js.map +0 -1
- package/dist/formatters/utils/JsonFormatter.d.ts +0 -13
- package/dist/formatters/utils/JsonFormatter.js +0 -57
- package/dist/formatters/utils/JsonFormatter.js.map +0 -1
- package/dist/formatters/utils/MarkdownFormatters.d.ts +0 -51
- package/dist/formatters/utils/MarkdownFormatters.js +0 -456
- package/dist/formatters/utils/MarkdownFormatters.js.map +0 -1
- package/dist/formatters/utils/MetadataFormatter.d.ts +0 -65
- package/dist/formatters/utils/MetadataFormatter.js +0 -219
- package/dist/formatters/utils/MetadataFormatter.js.map +0 -1
- package/dist/formatters/utils/ModelInfoExtractor.d.ts +0 -33
- package/dist/formatters/utils/ModelInfoExtractor.js +0 -111
- package/dist/formatters/utils/ModelInfoExtractor.js.map +0 -1
- package/dist/plugins/PluginInterface.d.ts +0 -44
- package/dist/plugins/PluginInterface.js +0 -9
- package/dist/plugins/PluginInterface.js.map +0 -1
- package/dist/plugins/PluginManager.d.ts +0 -51
- package/dist/plugins/PluginManager.js +0 -151
- package/dist/plugins/PluginManager.js.map +0 -1
- package/dist/prompts/PromptManager.d.ts +0 -30
- package/dist/prompts/PromptManager.js +0 -62
- package/dist/prompts/PromptManager.js.map +0 -1
- package/dist/prompts/cache/PromptCache.d.ts +0 -32
- package/dist/prompts/cache/PromptCache.js +0 -48
- package/dist/prompts/cache/PromptCache.js.map +0 -1
- package/dist/runtime/auth/service.d.ts +0 -2
- package/dist/runtime/auth/service.js +0 -41
- package/dist/runtime/auth/service.js.map +0 -1
- package/dist/runtime/auth/session.d.ts +0 -5
- package/dist/runtime/auth/session.js +0 -87
- package/dist/runtime/auth/session.js.map +0 -1
- package/dist/runtime/auth/types.d.ts +0 -9
- package/dist/runtime/auth/types.js +0 -3
- package/dist/runtime/auth/types.js.map +0 -1
- package/dist/runtime/fileCollector.d.ts +0 -14
- package/dist/runtime/fileCollector.js +0 -381
- package/dist/runtime/fileCollector.js.map +0 -1
- package/dist/runtime/manifest.d.ts +0 -1
- package/dist/runtime/manifest.js +0 -65
- package/dist/runtime/manifest.js.map +0 -1
- package/dist/runtime/openrouterProxy.d.ts +0 -4
- package/dist/runtime/openrouterProxy.js +0 -43
- package/dist/runtime/openrouterProxy.js.map +0 -1
- package/dist/runtime/preprod/batchStreamer.d.ts +0 -54
- package/dist/runtime/preprod/batchStreamer.js +0 -159
- package/dist/runtime/preprod/batchStreamer.js.map +0 -1
- package/dist/runtime/preprod/crEdgeServiceClient.d.ts +0 -30
- package/dist/runtime/preprod/crEdgeServiceClient.js +0 -133
- package/dist/runtime/preprod/crEdgeServiceClient.js.map +0 -1
- package/dist/runtime/preprod/progressTracker.d.ts +0 -21
- package/dist/runtime/preprod/progressTracker.js +0 -80
- package/dist/runtime/preprod/progressTracker.js.map +0 -1
- package/dist/runtime/preprod/webCheck.d.ts +0 -1
- package/dist/runtime/preprod/webCheck.js +0 -102
- package/dist/runtime/preprod/webCheck.js.map +0 -1
- package/dist/runtime/proxyConfig.d.ts +0 -6
- package/dist/runtime/proxyConfig.js +0 -86
- package/dist/runtime/proxyConfig.js.map +0 -1
- package/dist/runtime/proxyEnvironment.d.ts +0 -3
- package/dist/runtime/proxyEnvironment.js +0 -63
- package/dist/runtime/proxyEnvironment.js.map +0 -1
- package/dist/runtime/reportMerge.d.ts +0 -30
- package/dist/runtime/reportMerge.js +0 -70
- package/dist/runtime/reportMerge.js.map +0 -1
- package/dist/runtime/reporting/markdownReportBuilder.d.ts +0 -17
- package/dist/runtime/reporting/markdownReportBuilder.js +0 -154
- package/dist/runtime/reporting/markdownReportBuilder.js.map +0 -1
- package/dist/runtime/reporting/reportDataCollector.d.ts +0 -31
- package/dist/runtime/reporting/reportDataCollector.js +0 -170
- package/dist/runtime/reporting/reportDataCollector.js.map +0 -1
- package/dist/runtime/reporting/summaryGenerator.d.ts +0 -10
- package/dist/runtime/reporting/summaryGenerator.js +0 -67
- package/dist/runtime/reporting/summaryGenerator.js.map +0 -1
- package/dist/runtime/runAiCodeReview.d.ts +0 -36
- package/dist/runtime/runAiCodeReview.js +0 -409
- package/dist/runtime/runAiCodeReview.js.map +0 -1
- package/dist/runtime/runtimeConfig.d.ts +0 -4
- package/dist/runtime/runtimeConfig.js +0 -7
- package/dist/runtime/runtimeConfig.js.map +0 -1
- package/dist/strategies/ArchitecturalReviewStrategy.d.ts +0 -29
- package/dist/strategies/ArchitecturalReviewStrategy.js +0 -42
- package/dist/strategies/ArchitecturalReviewStrategy.js.map +0 -1
- package/dist/strategies/CodingTestReviewStrategy.d.ts +0 -194
- package/dist/strategies/CodingTestReviewStrategy.js +0 -681
- package/dist/strategies/CodingTestReviewStrategy.js.map +0 -1
- package/dist/strategies/ConsolidatedReviewStrategy.d.ts +0 -25
- package/dist/strategies/ConsolidatedReviewStrategy.js +0 -45
- package/dist/strategies/ConsolidatedReviewStrategy.js.map +0 -1
- package/dist/strategies/ExtractPatternsReviewStrategy.d.ts +0 -30
- package/dist/strategies/ExtractPatternsReviewStrategy.js +0 -51
- package/dist/strategies/ExtractPatternsReviewStrategy.js.map +0 -1
- package/dist/strategies/MultiPassReviewStrategy.d.ts +0 -86
- package/dist/strategies/MultiPassReviewStrategy.js +0 -590
- package/dist/strategies/MultiPassReviewStrategy.js.map +0 -1
- package/dist/strategies/ReviewStrategy.d.ts +0 -45
- package/dist/strategies/ReviewStrategy.js +0 -24
- package/dist/strategies/ReviewStrategy.js.map +0 -1
- package/dist/strategies/StrategyFactory.d.ts +0 -19
- package/dist/strategies/StrategyFactory.js +0 -72
- package/dist/strategies/StrategyFactory.js.map +0 -1
- package/dist/strategies/index.d.ts +0 -13
- package/dist/strategies/index.js +0 -30
- package/dist/strategies/index.js.map +0 -1
- package/dist/tokenizers/baseTokenizer.d.ts +0 -25
- package/dist/tokenizers/baseTokenizer.js +0 -48
- package/dist/tokenizers/baseTokenizer.js.map +0 -1
- package/dist/tokenizers/gptTokenizer.d.ts +0 -7
- package/dist/tokenizers/gptTokenizer.js +0 -28
- package/dist/tokenizers/gptTokenizer.js.map +0 -1
- package/dist/tokenizers/index.d.ts +0 -7
- package/dist/tokenizers/index.js +0 -24
- package/dist/tokenizers/index.js.map +0 -1
- package/dist/types/apiResponses.d.ts +0 -39
- package/dist/types/apiResponses.js +0 -9
- package/dist/types/apiResponses.js.map +0 -1
- package/dist/types/cli.d.ts +0 -22
- package/dist/types/cli.js +0 -3
- package/dist/types/cli.js.map +0 -1
- package/dist/types/common.d.ts +0 -22
- package/dist/types/common.js +0 -14
- package/dist/types/common.js.map +0 -1
- package/dist/types/configuration.d.ts +0 -682
- package/dist/types/configuration.js +0 -65
- package/dist/types/configuration.js.map +0 -1
- package/dist/types/review.d.ts +0 -318
- package/dist/types/review.js +0 -8
- package/dist/types/review.js.map +0 -1
- package/dist/types/reviewSchema.d.ts +0 -543
- package/dist/types/reviewSchema.js +0 -121
- package/dist/types/reviewSchema.js.map +0 -1
- package/dist/types/structuredReview.d.ts +0 -119
- package/dist/types/structuredReview.js +0 -6
- package/dist/types/structuredReview.js.map +0 -1
- package/dist/types/tokenAnalysis.d.ts +0 -44
- package/dist/types/tokenAnalysis.js +0 -4
- package/dist/types/tokenAnalysis.js.map +0 -1
- package/dist/utils/FileReader.d.ts +0 -33
- package/dist/utils/FileReader.js +0 -88
- package/dist/utils/FileReader.js.map +0 -1
- package/dist/utils/FileWriter.d.ts +0 -26
- package/dist/utils/FileWriter.js +0 -76
- package/dist/utils/FileWriter.js.map +0 -1
- package/dist/utils/PathGenerator.d.ts +0 -30
- package/dist/utils/PathGenerator.js +0 -82
- package/dist/utils/PathGenerator.js.map +0 -1
- package/dist/utils/api/apiUtils.d.ts +0 -3
- package/dist/utils/api/apiUtils.js +0 -20
- package/dist/utils/api/apiUtils.js.map +0 -1
- package/dist/utils/api/index.d.ts +0 -1
- package/dist/utils/api/index.js +0 -18
- package/dist/utils/api/index.js.map +0 -1
- package/dist/utils/apiErrorHandler.d.ts +0 -130
- package/dist/utils/apiErrorHandler.js +0 -256
- package/dist/utils/apiErrorHandler.js.map +0 -1
- package/dist/utils/ciDataCollector.d.ts +0 -51
- package/dist/utils/ciDataCollector.js +0 -197
- package/dist/utils/ciDataCollector.js.map +0 -1
- package/dist/utils/codingTestConfigLoader.d.ts +0 -66
- package/dist/utils/codingTestConfigLoader.js +0 -420
- package/dist/utils/codingTestConfigLoader.js.map +0 -1
- package/dist/utils/dependencies/aiDependencyAnalyzer.d.ts +0 -30
- package/dist/utils/dependencies/aiDependencyAnalyzer.js +0 -343
- package/dist/utils/dependencies/aiDependencyAnalyzer.js.map +0 -1
- package/dist/utils/detection/frameworkDetector.d.ts +0 -43
- package/dist/utils/detection/frameworkDetector.js +0 -850
- package/dist/utils/detection/frameworkDetector.js.map +0 -1
- package/dist/utils/detection/index.d.ts +0 -9
- package/dist/utils/detection/index.js +0 -28
- package/dist/utils/detection/index.js.map +0 -1
- package/dist/utils/detection/projectTypeDetector.d.ts +0 -27
- package/dist/utils/detection/projectTypeDetector.js +0 -469
- package/dist/utils/detection/projectTypeDetector.js.map +0 -1
- package/dist/utils/diagramGenerator.d.ts +0 -49
- package/dist/utils/diagramGenerator.js +0 -218
- package/dist/utils/diagramGenerator.js.map +0 -1
- package/dist/utils/errorLogger.d.ts +0 -24
- package/dist/utils/errorLogger.js +0 -59
- package/dist/utils/errorLogger.js.map +0 -1
- package/dist/utils/estimationUtils.d.ts +0 -139
- package/dist/utils/estimationUtils.js +0 -329
- package/dist/utils/estimationUtils.js.map +0 -1
- package/dist/utils/fileFilters.d.ts +0 -72
- package/dist/utils/fileFilters.js +0 -338
- package/dist/utils/fileFilters.js.map +0 -1
- package/dist/utils/fileSystem.d.ts +0 -22
- package/dist/utils/fileSystem.js +0 -45
- package/dist/utils/fileSystem.js.map +0 -1
- package/dist/utils/index.d.ts +0 -22
- package/dist/utils/index.js +0 -52
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/pathValidator.d.ts +0 -40
- package/dist/utils/pathValidator.js +0 -98
- package/dist/utils/pathValidator.js.map +0 -1
- package/dist/utils/priorityFilter.d.ts +0 -34
- package/dist/utils/priorityFilter.js +0 -54
- package/dist/utils/priorityFilter.js.map +0 -1
- package/dist/utils/projectDocs.d.ts +0 -47
- package/dist/utils/projectDocs.js +0 -158
- package/dist/utils/projectDocs.js.map +0 -1
- package/dist/utils/promptPaths.d.ts +0 -6
- package/dist/utils/promptPaths.js +0 -33
- package/dist/utils/promptPaths.js.map +0 -1
- package/dist/utils/promptTemplateManager.d.ts +0 -34
- package/dist/utils/promptTemplateManager.js +0 -141
- package/dist/utils/promptTemplateManager.js.map +0 -1
- package/dist/utils/review/consolidateReview.d.ts +0 -15
- package/dist/utils/review/consolidateReview.js +0 -481
- package/dist/utils/review/consolidateReview.js.map +0 -1
- package/dist/utils/review/fixDisplay.d.ts +0 -20
- package/dist/utils/review/fixDisplay.js +0 -84
- package/dist/utils/review/fixDisplay.js.map +0 -1
- package/dist/utils/review/fixImplementation.d.ts +0 -28
- package/dist/utils/review/fixImplementation.js +0 -60
- package/dist/utils/review/fixImplementation.js.map +0 -1
- package/dist/utils/review/index.d.ts +0 -13
- package/dist/utils/review/index.js +0 -50
- package/dist/utils/review/index.js.map +0 -1
- package/dist/utils/review/interactiveProcessing.d.ts +0 -25
- package/dist/utils/review/interactiveProcessing.js +0 -251
- package/dist/utils/review/interactiveProcessing.js.map +0 -1
- package/dist/utils/review/progressTracker.d.ts +0 -106
- package/dist/utils/review/progressTracker.js +0 -227
- package/dist/utils/review/progressTracker.js.map +0 -1
- package/dist/utils/review/reviewExtraction.d.ts +0 -31
- package/dist/utils/review/reviewExtraction.js +0 -324
- package/dist/utils/review/reviewExtraction.js.map +0 -1
- package/dist/utils/review/types.d.ts +0 -45
- package/dist/utils/review/types.js +0 -18
- package/dist/utils/review/types.js.map +0 -1
- package/dist/utils/reviewActionHandler.d.ts +0 -16
- package/dist/utils/reviewActionHandler.js +0 -34
- package/dist/utils/reviewActionHandler.js.map +0 -1
- package/dist/utils/reviewParser.d.ts +0 -34
- package/dist/utils/reviewParser.js +0 -218
- package/dist/utils/reviewParser.js.map +0 -1
- package/dist/utils/sanitizer.d.ts +0 -82
- package/dist/utils/sanitizer.js +0 -239
- package/dist/utils/sanitizer.js.map +0 -1
- package/dist/utils/smartFileSelector.d.ts +0 -50
- package/dist/utils/smartFileSelector.js +0 -261
- package/dist/utils/smartFileSelector.js.map +0 -1
- package/dist/utils/templateLoader.d.ts +0 -44
- package/dist/utils/templateLoader.js +0 -431
- package/dist/utils/templateLoader.js.map +0 -1
- package/dist/utils/treeGenerator.d.ts +0 -12
- package/dist/utils/treeGenerator.js +0 -133
- package/dist/utils/treeGenerator.js.map +0 -1
|
@@ -7,163 +7,38 @@ const inkModules_1 = require("../inkModules");
|
|
|
7
7
|
const Layout_1 = require("../Layout");
|
|
8
8
|
const OPTIONS = [
|
|
9
9
|
{
|
|
10
|
-
label: 'Review uncommitted
|
|
10
|
+
label: 'Review uncommitted PHP files',
|
|
11
11
|
value: 'uncommitted',
|
|
12
|
-
description: '
|
|
12
|
+
description: 'Run PHPCS + AI analysis on staged/unstaged files',
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
|
-
label: '
|
|
16
|
-
value: '
|
|
17
|
-
description: 'Full
|
|
18
|
-
requiresUrl: true,
|
|
19
|
-
details: [
|
|
20
|
-
'Creates a Supabase run for traceability',
|
|
21
|
-
'Triggers ai.enki.si webchecks & streams CR batches',
|
|
22
|
-
],
|
|
15
|
+
label: 'Prod review (all PHP files)',
|
|
16
|
+
value: 'prod',
|
|
17
|
+
description: 'Full repo analysis → uploaded to review service',
|
|
23
18
|
},
|
|
24
19
|
];
|
|
25
|
-
const DEFAULT_RECIPIENT_EMAIL = process.env.PREPROD_RECIPIENT_EMAIL || '';
|
|
26
20
|
function ModeSelection({ onSelect, debugEnabled, onToggleDebug }) {
|
|
27
21
|
const { Box, Text, useInput } = (0, inkModules_1.getInk)();
|
|
28
22
|
const SelectInput = (0, inkModules_1.getInkSelectInput)();
|
|
29
|
-
const TextInput = (0, inkModules_1.getInkTextInput)();
|
|
30
23
|
const { frameWidth } = (0, Layout_1.useLayout)();
|
|
31
|
-
const [phase, setPhase] = (0, react_1.useState)('list');
|
|
32
|
-
const [pendingMode, setPendingMode] = (0, react_1.useState)('preprod');
|
|
33
24
|
const [highlighted, setHighlighted] = (0, react_1.useState)('uncommitted');
|
|
34
|
-
const [
|
|
35
|
-
const [urlError, setUrlError] = (0, react_1.useState)(null);
|
|
36
|
-
const [pendingTargetUrl, setPendingTargetUrl] = (0, react_1.useState)('');
|
|
37
|
-
const [emailValue, setEmailValue] = (0, react_1.useState)(DEFAULT_RECIPIENT_EMAIL);
|
|
38
|
-
const [emailError, setEmailError] = (0, react_1.useState)(null);
|
|
39
|
-
const resetPreprodState = (0, react_1.useCallback)(() => {
|
|
40
|
-
setUrlValue('');
|
|
41
|
-
setUrlError(null);
|
|
42
|
-
setPendingTargetUrl('');
|
|
43
|
-
setEmailValue(DEFAULT_RECIPIENT_EMAIL);
|
|
44
|
-
setEmailError(null);
|
|
45
|
-
}, []);
|
|
25
|
+
const [includeRelated, setIncludeRelated] = (0, react_1.useState)(false);
|
|
46
26
|
const handleModeSelect = (0, react_1.useCallback)((mode) => {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
if (option.requiresUrl) {
|
|
52
|
-
setPendingMode(option.value);
|
|
53
|
-
resetPreprodState();
|
|
54
|
-
setPhase('preprodUrl');
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
onSelect(option.value);
|
|
58
|
-
}, [onSelect, resetPreprodState]);
|
|
59
|
-
const validateUrl = (0, react_1.useCallback)((rawValue) => {
|
|
60
|
-
const trimmed = rawValue.trim();
|
|
61
|
-
if (!trimmed) {
|
|
62
|
-
return 'URL is required';
|
|
63
|
-
}
|
|
64
|
-
let parsed;
|
|
65
|
-
try {
|
|
66
|
-
parsed = new URL(trimmed);
|
|
67
|
-
}
|
|
68
|
-
catch {
|
|
69
|
-
return 'Enter a valid URL starting with https://';
|
|
70
|
-
}
|
|
71
|
-
if (parsed.protocol !== 'https:') {
|
|
72
|
-
return 'Use an https:// URL for production parity';
|
|
73
|
-
}
|
|
74
|
-
const hostname = parsed.hostname.toLowerCase();
|
|
75
|
-
if (!hostname.includes('.') || hostname.endsWith('.local')) {
|
|
76
|
-
return 'Enter a public hostname (e.g. example.com)';
|
|
77
|
-
}
|
|
78
|
-
if (hostname === 'localhost' || hostname.startsWith('127.') || hostname.endsWith('.lan')) {
|
|
79
|
-
return 'Localhost targets are not supported in preprod mode';
|
|
80
|
-
}
|
|
81
|
-
return null;
|
|
82
|
-
}, []);
|
|
83
|
-
const submitUrl = (0, react_1.useCallback)(() => {
|
|
84
|
-
if (phase !== 'preprodUrl') {
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
const validationError = validateUrl(urlValue);
|
|
88
|
-
if (validationError) {
|
|
89
|
-
setUrlError(validationError);
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
const trimmed = urlValue.trim();
|
|
93
|
-
const normalized = new URL(trimmed).toString();
|
|
94
|
-
setUrlError(null);
|
|
95
|
-
setPendingTargetUrl(normalized);
|
|
96
|
-
setUrlValue(normalized);
|
|
97
|
-
setPhase('preprodEmail');
|
|
98
|
-
}, [phase, urlValue, validateUrl]);
|
|
99
|
-
const submitEmail = (0, react_1.useCallback)(() => {
|
|
100
|
-
if (phase !== 'preprodEmail') {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
if (!pendingTargetUrl) {
|
|
104
|
-
setPhase('preprodUrl');
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
const trimmed = emailValue.trim();
|
|
108
|
-
if (!trimmed) {
|
|
109
|
-
setEmailError('Recipient email is required');
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/i;
|
|
113
|
-
if (!emailPattern.test(trimmed)) {
|
|
114
|
-
setEmailError('Enter a valid email (example@company.com)');
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
setEmailError(null);
|
|
118
|
-
onSelect(pendingMode, { targetUrl: pendingTargetUrl, recipientEmail: trimmed });
|
|
119
|
-
}, [emailValue, onSelect, pendingMode, pendingTargetUrl, phase]);
|
|
27
|
+
onSelect(mode, { includeRelated: mode === 'uncommitted' ? includeRelated : false });
|
|
28
|
+
}, [includeRelated, onSelect]);
|
|
120
29
|
useInput((input, key) => {
|
|
121
30
|
const normalizedInput = input.toLowerCase();
|
|
122
31
|
if (normalizedInput === 'd' && !key.ctrl && !key.meta) {
|
|
123
32
|
onToggleDebug();
|
|
124
33
|
return;
|
|
125
34
|
}
|
|
126
|
-
if (
|
|
127
|
-
|
|
128
|
-
setPhase('list');
|
|
129
|
-
resetPreprodState();
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
if (key.return) {
|
|
133
|
-
submitUrl();
|
|
134
|
-
}
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
if (phase === 'preprodEmail') {
|
|
138
|
-
if (key.escape) {
|
|
139
|
-
setPhase('preprodUrl');
|
|
140
|
-
setEmailError(null);
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
if (key.return) {
|
|
144
|
-
submitEmail();
|
|
145
|
-
}
|
|
35
|
+
if (normalizedInput === 'r' && !key.ctrl && !key.meta) {
|
|
36
|
+
setIncludeRelated((prev) => !prev);
|
|
146
37
|
}
|
|
147
38
|
});
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
setUrlError(null);
|
|
153
|
-
}
|
|
154
|
-
}, placeholder: "https://example.com", focus: true })] }), urlError && ((0, jsx_runtime_1.jsx)(Text, { color: "red", children: urlError })), (0, jsx_runtime_1.jsxs)(Box, { justifyContent: "space-between", children: [(0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: "Press Enter to confirm URL \u00B7 Esc to go back" }), (0, jsx_runtime_1.jsxs)(Text, { dimColor: true, children: ["Debug: ", debugEnabled ? 'On' : 'Off', " (press D)"] })] })] }));
|
|
155
|
-
}
|
|
156
|
-
if (phase === 'preprodEmail') {
|
|
157
|
-
return ((0, jsx_runtime_1.jsxs)(Box, { width: frameWidth, flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, gap: 1, children: [(0, jsx_runtime_1.jsx)(Text, { color: "cyan", bold: true, children: "Pre-production review" }), (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: "Provide the email that should receive the consolidated HTML report. We will reuse it for Supabase tracking and the final SMTP send." }), (0, jsx_runtime_1.jsxs)(Box, { flexDirection: "column", gap: 1, children: [(0, jsx_runtime_1.jsxs)(Box, { flexDirection: "column", children: [(0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: "Target URL" }), (0, jsx_runtime_1.jsx)(Text, { children: pendingTargetUrl })] }), (0, jsx_runtime_1.jsxs)(Box, { flexDirection: "column", children: [(0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: "Recipient email" }), (0, jsx_runtime_1.jsx)(TextInput, { value: emailValue, onChange: (value) => {
|
|
158
|
-
setEmailValue(value);
|
|
159
|
-
if (emailError) {
|
|
160
|
-
setEmailError(null);
|
|
161
|
-
}
|
|
162
|
-
}, placeholder: "owner@example.com", focus: true })] })] }), emailError && (0, jsx_runtime_1.jsx)(Text, { color: "red", children: emailError }), (0, jsx_runtime_1.jsxs)(Box, { justifyContent: "space-between", children: [(0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: "Press Enter to start \u00B7 Esc to edit URL" }), (0, jsx_runtime_1.jsxs)(Text, { dimColor: true, children: ["Debug: ", debugEnabled ? 'On' : 'Off', " (press D)"] })] })] }));
|
|
163
|
-
}
|
|
164
|
-
return ((0, jsx_runtime_1.jsxs)(Box, { width: frameWidth, flexDirection: "column", borderStyle: "round", borderColor: "green", paddingX: 2, paddingY: 1, gap: 1, children: [(0, jsx_runtime_1.jsxs)(Box, { justifyContent: "space-between", alignItems: "center", children: [(0, jsx_runtime_1.jsx)(Text, { color: "green", bold: true, children: "Choose review mode" }), (0, jsx_runtime_1.jsxs)(Text, { dimColor: true, children: ["Debug: ", debugEnabled ? 'On' : 'Off', " (press D)"] })] }), (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: "Use arrow keys, press Enter to start." }), (0, jsx_runtime_1.jsx)(SelectInput, { items: OPTIONS.map((option) => ({
|
|
165
|
-
label: option.label,
|
|
166
|
-
value: option.value,
|
|
167
|
-
})), onHighlight: (item) => setHighlighted(item.value), onSelect: (item) => handleModeSelect(item.value) }), (0, jsx_runtime_1.jsxs)(Box, { flexDirection: "column", marginTop: 1, gap: 0, children: [(0, jsx_runtime_1.jsxs)(Text, { dimColor: true, children: ["\u00B7 ", OPTIONS.find((option) => option.value === highlighted)?.description] }), OPTIONS.find((option) => option.value === highlighted)?.details?.map((detail) => ((0, jsx_runtime_1.jsxs)(Text, { dimColor: true, children: [' ', "\u2022 ", detail] }, detail)))] })] }));
|
|
39
|
+
return ((0, jsx_runtime_1.jsxs)(Box, { width: frameWidth, flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, gap: 1, children: [(0, jsx_runtime_1.jsx)(Text, { color: "cyan", bold: true, children: "Select review mode" }), (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: "Press Enter to confirm. Press D to toggle debug logs." }), (0, jsx_runtime_1.jsx)(SelectInput, { items: OPTIONS, onSelect: (item) => handleModeSelect(item.value), onHighlight: (item) => setHighlighted(item.value), itemComponent: ({ label, isSelected, ...rest }) => {
|
|
40
|
+
const description = rest.description;
|
|
41
|
+
return ((0, jsx_runtime_1.jsxs)(Box, { flexDirection: "column", children: [(0, jsx_runtime_1.jsx)(Text, { color: isSelected ? 'green' : undefined, children: label }), description && (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: description })] }));
|
|
42
|
+
} }), highlighted === 'uncommitted' && ((0, jsx_runtime_1.jsx)(Box, { flexDirection: "column", marginTop: 1, children: (0, jsx_runtime_1.jsxs)(Text, { dimColor: true, children: ["Include related PHP files in the same directories: ", includeRelated ? 'On' : 'Off', " (press R)"] }) })), (0, jsx_runtime_1.jsx)(Box, { marginTop: 1, children: (0, jsx_runtime_1.jsxs)(Text, { dimColor: true, children: ["Debug logging: ", debugEnabled ? 'On' : 'Off'] }) })] }));
|
|
168
43
|
}
|
|
169
44
|
//# sourceMappingURL=ModeSelection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModeSelection.js","sourceRoot":"","sources":["../../../../src/runtime/ui/screens/ModeSelection.tsx"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"ModeSelection.js","sourceRoot":"","sources":["../../../../src/runtime/ui/screens/ModeSelection.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,13 @@
|
|
|
1
|
-
import type { ReviewMode, ReviewStage
|
|
1
|
+
import type { ReviewMode, ReviewStage } from '../../reviewPipeline';
|
|
2
2
|
interface ProgressScreenProps {
|
|
3
3
|
stage: ReviewStage;
|
|
4
4
|
filesFound?: number;
|
|
5
|
-
currentFile?: string;
|
|
6
|
-
currentIndex?: number;
|
|
7
5
|
totalFiles?: number;
|
|
8
|
-
filesReviewed?: number;
|
|
9
6
|
uncommittedFiles?: number;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
streamingBatchTotal?: number;
|
|
14
|
-
streamingBatchesCompleted?: number;
|
|
15
|
-
streamingBufferedFiles?: number;
|
|
16
|
-
streamingLastError?: string;
|
|
17
|
-
streamingRetryAttempt?: number;
|
|
7
|
+
relatedFiles?: number;
|
|
8
|
+
batchIndex?: number;
|
|
9
|
+
batchTotal?: number;
|
|
18
10
|
mode?: ReviewMode;
|
|
19
11
|
}
|
|
20
|
-
export declare function ProgressScreen({ stage, filesFound,
|
|
12
|
+
export declare function ProgressScreen({ stage, filesFound, totalFiles, uncommittedFiles, relatedFiles, batchIndex, batchTotal, mode, }: ProgressScreenProps): import("react/jsx-runtime").JSX.Element;
|
|
21
13
|
export {};
|
|
@@ -6,81 +6,44 @@ const react_1 = require("react");
|
|
|
6
6
|
const Layout_1 = require("../Layout");
|
|
7
7
|
const inkModules_1 = require("../inkModules");
|
|
8
8
|
const STAGE_TEXT = {
|
|
9
|
-
preparing: {
|
|
10
|
-
title: 'Preparing pipeline',
|
|
11
|
-
detail: 'Linking Supabase, webchecks, and CR streaming',
|
|
12
|
-
},
|
|
13
9
|
collecting: {
|
|
14
10
|
title: 'Collecting files',
|
|
15
|
-
detail: '
|
|
11
|
+
detail: 'Scanning for PHP files to review',
|
|
16
12
|
},
|
|
17
13
|
reviewing: {
|
|
18
|
-
title: 'Running
|
|
19
|
-
detail: '
|
|
14
|
+
title: 'Running PHPCS',
|
|
15
|
+
detail: 'Checking PHP files against PSR-12',
|
|
16
|
+
},
|
|
17
|
+
analyzing: {
|
|
18
|
+
title: 'Analyzing with AI',
|
|
19
|
+
detail: 'Generating intelligent code review report',
|
|
20
|
+
},
|
|
21
|
+
uploading: {
|
|
22
|
+
title: 'Uploading to service',
|
|
23
|
+
detail: 'Sending batches to review backend',
|
|
20
24
|
},
|
|
21
|
-
|
|
22
|
-
title: '
|
|
23
|
-
detail: '
|
|
25
|
+
done: {
|
|
26
|
+
title: 'Complete',
|
|
27
|
+
detail: 'Report ready',
|
|
24
28
|
},
|
|
25
29
|
};
|
|
26
|
-
function ProgressScreen({ stage, filesFound,
|
|
30
|
+
function ProgressScreen({ stage, filesFound, totalFiles, uncommittedFiles, relatedFiles, batchIndex, batchTotal, mode, }) {
|
|
27
31
|
const { Box, Text } = (0, inkModules_1.getInk)();
|
|
28
32
|
const Spinner = (0, inkModules_1.getInkSpinner)();
|
|
29
33
|
const { frameWidth } = (0, Layout_1.useLayout)();
|
|
30
34
|
const meta = (0, react_1.useMemo)(() => STAGE_TEXT[stage], [stage]);
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
? `Queued: ${base ?? '?'} uncommitted${context ? ` + ${context} context` : ''}`
|
|
36
|
-
: '';
|
|
37
|
-
const fileStatus = stage === 'collecting' && typeof filesFound === 'number' && filesFound >= 0
|
|
35
|
+
const breakdown = mode === 'uncommitted' && typeof uncommittedFiles === 'number'
|
|
36
|
+
? `Scope: ${uncommittedFiles} uncommitted${relatedFiles ? ` + ${relatedFiles} related` : ''}`
|
|
37
|
+
: undefined;
|
|
38
|
+
const fileStatus = stage === 'collecting' && typeof filesFound === 'number'
|
|
38
39
|
? `${filesFound} files queued`
|
|
39
40
|
: stage === 'collecting'
|
|
40
41
|
? 'Preparing file list…'
|
|
41
|
-
:
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
typeof totalFiles === 'number' &&
|
|
45
|
-
totalFiles > 0 &&
|
|
46
|
-
Boolean(currentFile);
|
|
47
|
-
const truncatedPath = (0, react_1.useMemo)(() => {
|
|
48
|
-
if (!currentFile)
|
|
49
|
-
return '';
|
|
50
|
-
const availableWidth = Math.max(10, frameWidth - 10);
|
|
51
|
-
return truncateMiddle(currentFile, availableWidth);
|
|
52
|
-
}, [currentFile, frameWidth]);
|
|
53
|
-
const batchLine = isPreprod && typeof streamingBatchesCompleted === 'number'
|
|
54
|
-
? `Batches sent: ${streamingBatchesCompleted}`
|
|
42
|
+
: undefined;
|
|
43
|
+
const batchLine = stage === 'reviewing' && typeof batchIndex === 'number' && typeof batchTotal === 'number'
|
|
44
|
+
? `Batch ${batchIndex}/${batchTotal}`
|
|
55
45
|
: undefined;
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
return undefined;
|
|
59
|
-
switch (streamingPhase) {
|
|
60
|
-
case 'creating-run':
|
|
61
|
-
return 'Preparing preprod run…';
|
|
62
|
-
case 'triggering-webcheck':
|
|
63
|
-
return 'Triggering webcheck…';
|
|
64
|
-
case 'buffering':
|
|
65
|
-
return 'Streaming: buffering batch payloads';
|
|
66
|
-
case 'sending':
|
|
67
|
-
return `Streaming: sending batch ${streamingBatchOrdinal ?? '?'} of ${streamingBatchTotal ?? '?'}`;
|
|
68
|
-
case 'error':
|
|
69
|
-
return `Streaming error${streamingRetryAttempt ? ` (retry ${streamingRetryAttempt}/3)` : ''}: ${streamingLastError ?? 'unknown issue'}`;
|
|
70
|
-
default:
|
|
71
|
-
return undefined;
|
|
72
|
-
}
|
|
73
|
-
})();
|
|
74
|
-
return ((0, jsx_runtime_1.jsxs)(Box, { width: frameWidth, flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, gap: 1, children: [(0, jsx_runtime_1.jsx)(Box, { gap: 1, children: (0, jsx_runtime_1.jsxs)(Text, { children: [(0, jsx_runtime_1.jsx)(Spinner, { type: "line" }), " ", meta.title] }) }), (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: meta.detail }), fileStatus && (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: fileStatus }), totalBreakdown && !isPreprod && (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: totalBreakdown }), showReviewingProgress && ((0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: `Reviewing (${currentIndex}/${totalFiles}): ${truncatedPath}` })), batchLine && (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: batchLine }), streamingPhaseLine && ((0, jsx_runtime_1.jsx)(Text, { color: streamingPhase === 'error' ? 'red' : undefined, dimColor: streamingPhase !== 'error', children: streamingPhaseLine }))] }));
|
|
75
|
-
}
|
|
76
|
-
function truncateMiddle(value, maxLength) {
|
|
77
|
-
if (value.length <= maxLength) {
|
|
78
|
-
return value;
|
|
79
|
-
}
|
|
80
|
-
const ellipsis = '…';
|
|
81
|
-
const keep = Math.max(1, Math.floor((maxLength - ellipsis.length) / 2));
|
|
82
|
-
const start = value.slice(0, keep);
|
|
83
|
-
const end = value.slice(value.length - keep);
|
|
84
|
-
return `${start}${ellipsis}${end}`;
|
|
46
|
+
const totalLine = stage === 'reviewing' && typeof totalFiles === 'number' ? `Total files: ${totalFiles}` : undefined;
|
|
47
|
+
return ((0, jsx_runtime_1.jsxs)(Box, { width: frameWidth, flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, gap: 1, children: [(0, jsx_runtime_1.jsx)(Box, { gap: 1, children: (0, jsx_runtime_1.jsxs)(Text, { children: [(0, jsx_runtime_1.jsx)(Spinner, { type: "line" }), " ", meta.title] }) }), (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: meta.detail }), fileStatus && (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: fileStatus }), breakdown && (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: breakdown }), totalLine && (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: totalLine }), batchLine && (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: batchLine })] }));
|
|
85
48
|
}
|
|
86
49
|
//# sourceMappingURL=ProgressScreen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressScreen.js","sourceRoot":"","sources":["../../../../src/runtime/ui/screens/ProgressScreen.tsx"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"ProgressScreen.js","sourceRoot":"","sources":["../../../../src/runtime/ui/screens/ProgressScreen.tsx"],"names":[],"mappings":";;AAuCA,wCAyDC;;AAhGD,iCAAuC;AACvC,sCAAsC;AAEtC,8CAAsD;AAatD,MAAM,UAAU,GAA2D;IACzE,UAAU,EAAE;QACV,KAAK,EAAE,kBAAkB;QACzB,MAAM,EAAE,kCAAkC;KAC3C;IACD,SAAS,EAAE;QACT,KAAK,EAAE,eAAe;QACtB,MAAM,EAAE,mCAAmC;KAC5C;IACD,SAAS,EAAE;QACT,KAAK,EAAE,mBAAmB;QAC1B,MAAM,EAAE,2CAA2C;KACpD;IACD,SAAS,EAAE;QACT,KAAK,EAAE,sBAAsB;QAC7B,MAAM,EAAE,mCAAmC;KAC5C;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,cAAc;KACvB;CACF,CAAC;AAEF,SAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,IAAI,GACgB;IACpB,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAM,GAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAA,0BAAa,GAAE,CAAC;IAChC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,kBAAS,GAAE,CAAC;IAEnC,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,MAAM,SAAS,GACb,IAAI,KAAK,aAAa,IAAI,OAAO,gBAAgB,KAAK,QAAQ;QAC5D,CAAC,CAAC,UAAU,gBAAgB,eAAe,YAAY,CAAC,CAAC,CAAC,MAAM,YAAY,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7F,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,UAAU,GACd,KAAK,KAAK,YAAY,IAAI,OAAO,UAAU,KAAK,QAAQ;QACtD,CAAC,CAAC,GAAG,UAAU,eAAe;QAC9B,CAAC,CAAC,KAAK,KAAK,YAAY;YACtB,CAAC,CAAC,sBAAsB;YACxB,CAAC,CAAC,SAAS,CAAC;IAElB,MAAM,SAAS,GACb,KAAK,KAAK,WAAW,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,OAAO,UAAU,KAAK,QAAQ;QACvF,CAAC,CAAC,SAAS,UAAU,IAAI,UAAU,EAAE;QACrC,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,SAAS,GACb,KAAK,KAAK,WAAW,IAAI,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAErG,OAAO,CACL,wBAAC,GAAG,IACF,KAAK,EAAE,UAAU,EACjB,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,CAAC,EACX,GAAG,EAAE,CAAC,aAEN,uBAAC,GAAG,IAAC,GAAG,EAAE,CAAC,YACT,wBAAC,IAAI,eACH,uBAAC,OAAO,IAAC,IAAI,EAAC,MAAM,GAAG,OAAE,IAAI,CAAC,KAAK,IAC9B,GACH,EACN,uBAAC,IAAI,IAAC,QAAQ,kBAAE,IAAI,CAAC,MAAM,GAAQ,EAClC,UAAU,IAAI,uBAAC,IAAI,IAAC,QAAQ,kBAAE,UAAU,GAAQ,EAChD,SAAS,IAAI,uBAAC,IAAI,IAAC,QAAQ,kBAAE,SAAS,GAAQ,EAC9C,SAAS,IAAI,uBAAC,IAAI,IAAC,QAAQ,kBAAE,SAAS,GAAQ,EAC9C,SAAS,IAAI,uBAAC,IAAI,IAAC,QAAQ,kBAAE,SAAS,GAAQ,IAC3C,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -8,27 +8,17 @@ const inkModules_1 = require("../inkModules");
|
|
|
8
8
|
function ResultsScreen({ result, debugLogPath }) {
|
|
9
9
|
const { Box, Text } = (0, inkModules_1.getInk)();
|
|
10
10
|
const { frameWidth } = (0, Layout_1.useLayout)();
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
{ label: 'High', value: totals.high ?? 0 },
|
|
17
|
-
{ label: 'Medium', value: totals.medium ?? 0 },
|
|
18
|
-
{ label: 'Low', value: totals.low ?? 0 },
|
|
19
|
-
];
|
|
20
|
-
}, [result.totals]);
|
|
11
|
+
const totals = (0, react_1.useMemo)(() => ({
|
|
12
|
+
errors: result.totals?.errors ?? 0,
|
|
13
|
+
warnings: result.totals?.warnings ?? 0,
|
|
14
|
+
fixable: result.totals?.fixable ?? 0,
|
|
15
|
+
}), [result.totals]);
|
|
21
16
|
const scopeLine = (0, react_1.useMemo)(() => {
|
|
22
17
|
const breakdown = result.fileBreakdown;
|
|
23
18
|
if (!breakdown)
|
|
24
19
|
return null;
|
|
25
|
-
return `Scope: ${breakdown.uncommitted} uncommitted + ${breakdown.
|
|
20
|
+
return `Scope: ${breakdown.uncommitted} uncommitted + ${breakdown.related} related files`;
|
|
26
21
|
}, [result.fileBreakdown]);
|
|
27
|
-
|
|
28
|
-
const estimatedCostLine = typeof result.estimatedCostUSD === 'number'
|
|
29
|
-
? `Estimated cost: $${result.estimatedCostUSD.toFixed(2)}`
|
|
30
|
-
: null;
|
|
31
|
-
return ((0, jsx_runtime_1.jsxs)(Box, { width: frameWidth, flexDirection: "column", borderStyle: "round", borderColor: "green", paddingX: 2, paddingY: 1, gap: 1, children: [(0, jsx_runtime_1.jsxs)(Text, { color: "green", bold: true, children: ["Review complete for ", result.repo] }), (0, jsx_runtime_1.jsxs)(Text, { dimColor: true, children: ["Duration: ", result.duration, "s \u2014 Files reviewed: ", result.filesReviewed] }), scopeLine && (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: scopeLine }), finalizedByEdgeService ? ((0, jsx_runtime_1.jsxs)(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1, paddingY: 0, children: [(0, jsx_runtime_1.jsx)(Text, { color: "cyan", bold: true, children: "Preprod run finished" }), (0, jsx_runtime_1.jsx)(Text, { children: "Edge service will finalize the merged report and email the results. Severity totals below reflect the streamed findings so far." }), estimatedCostLine && (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: estimatedCostLine })] })) : ((0, jsx_runtime_1.jsxs)(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1, paddingY: 0, children: [(0, jsx_runtime_1.jsx)(Text, { color: "cyan", bold: true, children: "LLM summary" }), (0, jsx_runtime_1.jsx)(Text, { children: summaryText }), estimatedCostLine && (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: estimatedCostLine })] })), (0, jsx_runtime_1.jsxs)(Box, { flexDirection: "column", marginTop: 1, children: [(0, jsx_runtime_1.jsx)(Text, { bold: true, children: "Severity totals" }), (0, jsx_runtime_1.jsx)(Box, { flexDirection: "row", flexWrap: "wrap", children: severityRows.map((row) => ((0, jsx_runtime_1.jsx)(Box, { width: 24, children: (0, jsx_runtime_1.jsxs)(Text, { children: [row.label, ": ", row.value] }) }, row.label))) })] }), !finalizedByEdgeService &&
|
|
32
|
-
(result.findings.length === 0 ? ((0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: "No findings reported." })) : ((0, jsx_runtime_1.jsxs)(Box, { flexDirection: "column", marginTop: 1, children: [(0, jsx_runtime_1.jsx)(Text, { bold: true, children: "Sample findings" }), result.findings.slice(0, 5).map((finding, index) => ((0, jsx_runtime_1.jsxs)(Text, { dimColor: true, children: ["\u00B7 ", finding.filePath ?? finding.file ?? 'unknown', ' ', finding.priority ? `(${finding.priority})` : ''] }, `${finding.filePath ?? finding.file ?? 'unknown'}-${index}`))), result.findings.length > 5 && ((0, jsx_runtime_1.jsxs)(Text, { dimColor: true, children: ["\u2026and ", result.findings.length - 5, " more in the saved report."] }))] }))), result.reportPath && !finalizedByEdgeService && ((0, jsx_runtime_1.jsx)(Box, { marginTop: 1, children: (0, jsx_runtime_1.jsxs)(Text, { dimColor: true, children: ["Report saved to: ", result.reportPath] }) })), debugLogPath && ((0, jsx_runtime_1.jsx)(Box, { marginTop: 1, children: (0, jsx_runtime_1.jsxs)(Text, { dimColor: true, children: ["Debug logs saved to: ", debugLogPath] }) })), (0, jsx_runtime_1.jsx)(Box, { marginTop: 1, children: (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: "Press Enter to return to mode selection." }) })] }));
|
|
22
|
+
return ((0, jsx_runtime_1.jsxs)(Box, { width: frameWidth, flexDirection: "column", borderStyle: "round", borderColor: "green", paddingX: 2, paddingY: 1, gap: 1, children: [(0, jsx_runtime_1.jsxs)(Text, { color: "green", bold: true, children: ["PHPCS complete for ", result.repo] }), (0, jsx_runtime_1.jsxs)(Text, { dimColor: true, children: ["Duration: ", result.duration, "s \u2014 Files reviewed: ", result.filesReviewed] }), scopeLine && (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: scopeLine }), (0, jsx_runtime_1.jsxs)(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1, paddingY: 0, children: [(0, jsx_runtime_1.jsx)(Text, { color: "cyan", bold: true, children: "Totals" }), (0, jsx_runtime_1.jsxs)(Text, { children: ["Errors: ", totals.errors] }), (0, jsx_runtime_1.jsxs)(Text, { children: ["Warnings: ", totals.warnings] }), (0, jsx_runtime_1.jsxs)(Text, { children: ["Fixable: ", totals.fixable] })] }), result.reportPath && ((0, jsx_runtime_1.jsxs)(Box, { marginTop: 1, flexDirection: "column", children: [(0, jsx_runtime_1.jsxs)(Text, { dimColor: true, children: ["Report saved to: ", result.reportPath] }), result.llmAnalysisUsed && ((0, jsx_runtime_1.jsx)(Text, { color: "green", children: "\u2713 AI-enhanced report generated" })), result.llmError && ((0, jsx_runtime_1.jsxs)(Text, { color: "yellow", children: ["\u26A0 AI analysis unavailable: ", result.llmError] }))] })), debugLogPath && ((0, jsx_runtime_1.jsx)(Box, { marginTop: 1, children: (0, jsx_runtime_1.jsxs)(Text, { dimColor: true, children: ["Debug logs saved to: ", debugLogPath] }) })), result.prodRunId && ((0, jsx_runtime_1.jsxs)(Box, { flexDirection: "column", marginTop: 1, children: [(0, jsx_runtime_1.jsx)(Text, { color: "cyan", bold: true, children: "Production Review" }), (0, jsx_runtime_1.jsxs)(Text, { dimColor: true, children: ["Run ID: ", result.prodRunId] }), (0, jsx_runtime_1.jsxs)(Text, { dimColor: true, children: ["Status: ", result.prodStatus] }), (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: "Full report will be delivered via email when processing completes." })] })), (0, jsx_runtime_1.jsx)(Box, { marginTop: 1, children: (0, jsx_runtime_1.jsx)(Text, { dimColor: true, children: "Press Enter to return to mode selection." }) })] }));
|
|
33
23
|
}
|
|
34
24
|
//# sourceMappingURL=ResultsScreen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResultsScreen.js","sourceRoot":"","sources":["../../../../src/runtime/ui/screens/ResultsScreen.tsx"],"names":[],"mappings":";;AAUA,
|
|
1
|
+
{"version":3,"file":"ResultsScreen.js","sourceRoot":"","sources":["../../../../src/runtime/ui/screens/ResultsScreen.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codereview-aia",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "codereview-aia CLI",
|
|
5
5
|
"author": "rrretsuf",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -27,62 +27,22 @@
|
|
|
27
27
|
"access": "public"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@langchain/core": "^0.3.44",
|
|
31
|
-
"@supabase/supabase-js": "^2.39.0",
|
|
32
|
-
"chalk": "^4.1.2",
|
|
33
|
-
"dompurify": "^3.2.5",
|
|
34
|
-
"dotenv": "^16.3.1",
|
|
35
30
|
"execa": "^8.0.1",
|
|
36
|
-
"glob": "^10.3.10",
|
|
37
|
-
"gpt-tokenizer": "^2.9.0",
|
|
38
|
-
"handlebars": "^4.7.8",
|
|
39
|
-
"i18next": "^24.2.3",
|
|
40
|
-
"i18next-fs-backend": "^2.6.0",
|
|
41
|
-
"i18next-icu": "^2.3.0",
|
|
42
31
|
"ignore": "^5.3.2",
|
|
43
32
|
"ink": "^6.4.0",
|
|
44
33
|
"ink-select-input": "^6.2.0",
|
|
45
34
|
"ink-spinner": "^5.0.0",
|
|
46
35
|
"ink-text-input": "^6.0.0",
|
|
47
|
-
"intl-messageformat": "^10.7.16",
|
|
48
|
-
"jsdom": "^26.0.0",
|
|
49
|
-
"langchain": "^0.3.21",
|
|
50
|
-
"mem0ai": "^2.1.34",
|
|
51
36
|
"picocolors": "^1.0.0",
|
|
52
|
-
"react": "^19.2.0"
|
|
53
|
-
"sqlite3": "^5.1.7",
|
|
54
|
-
"yaml": "^2.8.0",
|
|
55
|
-
"yargs": "^17.7.2",
|
|
56
|
-
"zod": "^3.24.2"
|
|
37
|
+
"react": "^19.2.0"
|
|
57
38
|
},
|
|
58
39
|
"peerDependencies": {
|
|
59
40
|
"react": "*"
|
|
60
41
|
},
|
|
61
42
|
"devDependencies": {
|
|
62
|
-
"@biomejs/biome": "^2.0.6",
|
|
63
|
-
"@types/dompurify": "^3.0.5",
|
|
64
|
-
"@types/handlebars": "^4.1.0",
|
|
65
|
-
"@types/js-yaml": "^4.0.9",
|
|
66
|
-
"@types/jsdom": "^21.1.7",
|
|
67
43
|
"@types/node": "^20.17.32",
|
|
68
44
|
"@types/react": "^19.2.3",
|
|
69
|
-
"@types/yargs": "^17.0.33",
|
|
70
|
-
"@typescript-eslint/eslint-plugin": "^6.15.0",
|
|
71
|
-
"@typescript-eslint/parser": "^6.15.0",
|
|
72
|
-
"@vitest/ui": "^3.2.1",
|
|
73
|
-
"esbuild": "^0.25.3",
|
|
74
|
-
"eslint": "^8.56.0",
|
|
75
|
-
"js-yaml": "^4.1.0",
|
|
76
45
|
"ts-node": "^10.9.2",
|
|
77
|
-
"
|
|
78
|
-
"typescript": "^5.8.3",
|
|
79
|
-
"vitest": "^3.2.1"
|
|
80
|
-
},
|
|
81
|
-
"overrides": {
|
|
82
|
-
"esbuild": "^0.25.3"
|
|
83
|
-
},
|
|
84
|
-
"resolutions": {
|
|
85
|
-
"esbuild": "^0.25.3",
|
|
86
|
-
"jsdom": "^26.0.0"
|
|
46
|
+
"typescript": "^5.8.3"
|
|
87
47
|
}
|
|
88
|
-
}
|
|
48
|
+
}
|
|
@@ -1,105 +0,0 @@
|
|
|
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
|
-
}
|