codereview-aia 0.2.1 → 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 +3 -43
- 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 -186
- 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 -383
- 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 -350
- 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
|
@@ -1,503 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @fileoverview Documentation analyzer for detecting AI-generated content patterns.
|
|
4
|
-
*
|
|
5
|
-
* This analyzer examines README files, code comments, and documentation structure
|
|
6
|
-
* to identify characteristics commonly associated with AI-generated documentation.
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.DocumentationAnalyzer = void 0;
|
|
10
|
-
const BaseAnalyzer_1 = require("./BaseAnalyzer");
|
|
11
|
-
/**
|
|
12
|
-
* Analyzer for documentation patterns that may indicate AI generation
|
|
13
|
-
*/
|
|
14
|
-
class DocumentationAnalyzer extends BaseAnalyzer_1.BaseAnalyzer {
|
|
15
|
-
/**
|
|
16
|
-
* Get analyzer name
|
|
17
|
-
*/
|
|
18
|
-
getAnalyzerName() {
|
|
19
|
-
return 'documentation';
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Analyze documentation for AI-generated patterns
|
|
23
|
-
* @param submission Code submission to analyze
|
|
24
|
-
* @returns Documentation analysis result
|
|
25
|
-
*/
|
|
26
|
-
async analyze(submission) {
|
|
27
|
-
this.startTimer();
|
|
28
|
-
const patterns = [];
|
|
29
|
-
try {
|
|
30
|
-
const { documentation } = submission;
|
|
31
|
-
// Pattern H2.1: Template README Structure
|
|
32
|
-
if (documentation.readme) {
|
|
33
|
-
const readmeResult = this.analyzeREADMEStructure(documentation.readme);
|
|
34
|
-
if (readmeResult.detected) {
|
|
35
|
-
patterns.push(this.createDetectedPattern('H2.1', 'Template README Structure', 'high', readmeResult.score, 'README follows AI-generated template structure with standard sections', readmeResult.evidence || {}));
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
// Pattern H2.2: Excessive Comment Density
|
|
39
|
-
const commentResult = this.analyzeCommentDensity(documentation.codeFiles);
|
|
40
|
-
if (commentResult.detected) {
|
|
41
|
-
patterns.push(this.createDetectedPattern('H2.2', 'Excessive Comment Density', 'high', commentResult.score, 'Unusually high and uniform comment density across files', commentResult.evidence || {}));
|
|
42
|
-
}
|
|
43
|
-
// Pattern H2.3: AI-Style Documentation
|
|
44
|
-
if (documentation.readme) {
|
|
45
|
-
const aiStyleResult = this.detectAIStyleDocumentation(documentation.readme);
|
|
46
|
-
if (aiStyleResult.detected) {
|
|
47
|
-
patterns.push(this.createDetectedPattern('H2.3', 'AI-Style Documentation', 'high', aiStyleResult.score, 'Documentation exhibits characteristics typical of AI-generated content', aiStyleResult.evidence || {}));
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
// Pattern M2.4: Uniform Comment Patterns
|
|
51
|
-
const uniformCommentResult = this.analyzeUniformCommentPatterns(documentation.codeFiles);
|
|
52
|
-
if (uniformCommentResult.detected) {
|
|
53
|
-
patterns.push(this.createDetectedPattern('M2.4', 'Uniform Comment Patterns', 'medium', uniformCommentResult.score, 'Comments follow suspiciously uniform patterns across files', uniformCommentResult.evidence || {}));
|
|
54
|
-
}
|
|
55
|
-
const avgCommentDensity = this.calculateAverageCommentDensity(documentation.codeFiles);
|
|
56
|
-
return {
|
|
57
|
-
analyzer: 'documentation',
|
|
58
|
-
patterns,
|
|
59
|
-
metadata: {
|
|
60
|
-
filesAnalyzed: documentation.codeFiles.length,
|
|
61
|
-
hasReadme: !!documentation.readme,
|
|
62
|
-
avgCommentDensity,
|
|
63
|
-
},
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
console.error('Error in DocumentationAnalyzer:', error);
|
|
68
|
-
return this.createEmptyResult();
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Analyze README structure for template patterns
|
|
73
|
-
* @param readme README content
|
|
74
|
-
* @returns Pattern detection result
|
|
75
|
-
*/
|
|
76
|
-
analyzeREADMEStructure(readme) {
|
|
77
|
-
const standardSections = [
|
|
78
|
-
'installation',
|
|
79
|
-
'usage',
|
|
80
|
-
'api',
|
|
81
|
-
'contributing',
|
|
82
|
-
'license',
|
|
83
|
-
'features',
|
|
84
|
-
'requirements',
|
|
85
|
-
'examples',
|
|
86
|
-
'documentation',
|
|
87
|
-
'getting started',
|
|
88
|
-
'quick start',
|
|
89
|
-
'configuration',
|
|
90
|
-
'support',
|
|
91
|
-
];
|
|
92
|
-
const sections = this.extractSections(readme);
|
|
93
|
-
const sectionLower = sections.map((s) => s.toLowerCase());
|
|
94
|
-
const matchedStandard = sectionLower.filter((section) => standardSections.some((std) => section.includes(std) || std.includes(section)));
|
|
95
|
-
const completeness = matchedStandard.length / standardSections.length;
|
|
96
|
-
// High completeness (>60%) suggests template usage
|
|
97
|
-
if (completeness > 0.6 && sections.length >= 5) {
|
|
98
|
-
const badges = this.countBadges(readme);
|
|
99
|
-
const genericPhrases = this.countGenericPhrases(readme);
|
|
100
|
-
const templateIndicators = this.countTemplateIndicators(readme);
|
|
101
|
-
const score = Math.min(0.95, 0.5 +
|
|
102
|
-
completeness * 0.25 +
|
|
103
|
-
Math.min(badges, 5) * 0.03 +
|
|
104
|
-
Math.min(genericPhrases, 10) * 0.02 +
|
|
105
|
-
templateIndicators * 0.05);
|
|
106
|
-
return this.createPatternResult(true, score, {
|
|
107
|
-
completeness,
|
|
108
|
-
matchedSections: matchedStandard,
|
|
109
|
-
totalSections: sections.length,
|
|
110
|
-
badgeCount: badges,
|
|
111
|
-
genericPhraseCount: genericPhrases,
|
|
112
|
-
templateIndicatorCount: templateIndicators,
|
|
113
|
-
sectionOrder: this.analyzeSectionOrder(sections),
|
|
114
|
-
standardSections,
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
return this.createPatternResult(false, completeness * 0.3);
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Analyze comment density across code files
|
|
121
|
-
* @param codeFiles Array of code files
|
|
122
|
-
* @returns Pattern detection result
|
|
123
|
-
*/
|
|
124
|
-
analyzeCommentDensity(codeFiles) {
|
|
125
|
-
if (codeFiles.length === 0) {
|
|
126
|
-
return this.createPatternResult(false, 0);
|
|
127
|
-
}
|
|
128
|
-
const densities = codeFiles.map((file) => this.calculateCommentDensity(file.content));
|
|
129
|
-
const averageDensity = densities.reduce((a, b) => a + b, 0) / densities.length;
|
|
130
|
-
const uniformity = this.calculateUniformity(densities);
|
|
131
|
-
// High density (>40%) with high uniformity (>0.8) suggests AI generation
|
|
132
|
-
if (averageDensity > 0.4 && uniformity > 0.8 && codeFiles.length >= 3) {
|
|
133
|
-
const score = Math.min(0.95, 0.5 + averageDensity * 0.3 + uniformity * 0.2);
|
|
134
|
-
return this.createPatternResult(true, score, {
|
|
135
|
-
averageDensity,
|
|
136
|
-
uniformity,
|
|
137
|
-
fileCount: codeFiles.length,
|
|
138
|
-
densityDistribution: densities,
|
|
139
|
-
threshold: { density: 0.4, uniformity: 0.8 },
|
|
140
|
-
filesWithHighDensity: densities.filter((d) => d > 0.5).length,
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
return this.createPatternResult(false, Math.max(averageDensity - 0.2, 0) * 0.5);
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Detect AI-style documentation patterns
|
|
147
|
-
* @param readme README content
|
|
148
|
-
* @returns Pattern detection result
|
|
149
|
-
*/
|
|
150
|
-
detectAIStyleDocumentation(readme) {
|
|
151
|
-
const aiIndicators = {
|
|
152
|
-
overlyFormal: this.countOverlyFormalLanguage(readme),
|
|
153
|
-
perfectGrammar: this.checkPerfectGrammar(readme),
|
|
154
|
-
templatePhrases: this.countTemplatePhrases(readme),
|
|
155
|
-
comprehensiveStructure: this.checkComprehensiveStructure(readme),
|
|
156
|
-
technicalPrecision: this.checkTechnicalPrecision(readme),
|
|
157
|
-
lackOfPersonality: this.checkLackOfPersonality(readme),
|
|
158
|
-
};
|
|
159
|
-
const totalIndicators = Object.keys(aiIndicators).length;
|
|
160
|
-
const positiveIndicators = Object.values(aiIndicators).filter(Boolean).length;
|
|
161
|
-
const ratio = positiveIndicators / totalIndicators;
|
|
162
|
-
// If most indicators are present, suggest AI generation
|
|
163
|
-
if (ratio > 0.6) {
|
|
164
|
-
const score = Math.min(0.9, 0.5 + ratio * 0.4);
|
|
165
|
-
return this.createPatternResult(true, score, {
|
|
166
|
-
indicators: aiIndicators,
|
|
167
|
-
positiveIndicators,
|
|
168
|
-
totalIndicators,
|
|
169
|
-
ratio,
|
|
170
|
-
readmeLength: readme.length,
|
|
171
|
-
wordCount: readme.split(/\s+/).length,
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
return this.createPatternResult(false, ratio * 0.4);
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Analyze uniform comment patterns across files
|
|
178
|
-
* @param codeFiles Array of code files
|
|
179
|
-
* @returns Pattern detection result
|
|
180
|
-
*/
|
|
181
|
-
analyzeUniformCommentPatterns(codeFiles) {
|
|
182
|
-
if (codeFiles.length < 3) {
|
|
183
|
-
return this.createPatternResult(false, 0);
|
|
184
|
-
}
|
|
185
|
-
const commentPatterns = codeFiles.map((file) => this.extractCommentPatterns(file.content));
|
|
186
|
-
const uniformityScore = this.calculateCommentPatternUniformity(commentPatterns);
|
|
187
|
-
// High uniformity suggests AI-generated comments
|
|
188
|
-
if (uniformityScore > 0.8) {
|
|
189
|
-
const score = Math.min(0.85, 0.4 + uniformityScore * 0.4);
|
|
190
|
-
return this.createPatternResult(true, score, {
|
|
191
|
-
uniformityScore,
|
|
192
|
-
fileCount: codeFiles.length,
|
|
193
|
-
commonPatterns: this.findCommonCommentPatterns(commentPatterns),
|
|
194
|
-
threshold: 0.8,
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
return this.createPatternResult(false, uniformityScore * 0.3);
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Calculate comment density for a single file
|
|
201
|
-
* @param content File content
|
|
202
|
-
* @returns Comment density ratio (0.0 to 1.0)
|
|
203
|
-
*/
|
|
204
|
-
calculateCommentDensity(content) {
|
|
205
|
-
const lines = content.split('\n');
|
|
206
|
-
const codeLines = lines.filter((line) => {
|
|
207
|
-
const trimmed = line.trim();
|
|
208
|
-
return (trimmed &&
|
|
209
|
-
!trimmed.startsWith('//') &&
|
|
210
|
-
!trimmed.startsWith('/*') &&
|
|
211
|
-
!trimmed.startsWith('*') &&
|
|
212
|
-
!trimmed.startsWith('#') && // Python/shell comments
|
|
213
|
-
!trimmed.match(/^\s*\/\*/) && // Multi-line comment start
|
|
214
|
-
!trimmed.match(/\*\/\s*$/)); // Multi-line comment end
|
|
215
|
-
});
|
|
216
|
-
const commentLines = lines.length - codeLines.length;
|
|
217
|
-
return lines.length > 0 ? commentLines / lines.length : 0;
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Calculate average comment density across files
|
|
221
|
-
* @param codeFiles Array of code files
|
|
222
|
-
* @returns Average comment density
|
|
223
|
-
*/
|
|
224
|
-
calculateAverageCommentDensity(codeFiles) {
|
|
225
|
-
if (codeFiles.length === 0)
|
|
226
|
-
return 0;
|
|
227
|
-
const densities = codeFiles.map((file) => this.calculateCommentDensity(file.content));
|
|
228
|
-
return densities.reduce((sum, density) => sum + density, 0) / densities.length;
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* Count template indicators in README
|
|
232
|
-
* @param readme README content
|
|
233
|
-
* @returns Number of template indicators
|
|
234
|
-
*/
|
|
235
|
-
countTemplateIndicators(readme) {
|
|
236
|
-
const templatePatterns = [
|
|
237
|
-
/\[!\[.*?\]\(.*?\)\]\(.*?\)/g, // Nested badge syntax
|
|
238
|
-
/## Table of Contents/gi,
|
|
239
|
-
/\*\*Note:\*\*/gi,
|
|
240
|
-
/Replace `.*?` with/gi,
|
|
241
|
-
/\$\{.*?\}/g, // Template variables
|
|
242
|
-
/\[\[.*?\]\]/g, // Wiki-style links
|
|
243
|
-
];
|
|
244
|
-
let count = 0;
|
|
245
|
-
for (const pattern of templatePatterns) {
|
|
246
|
-
const matches = readme.match(pattern);
|
|
247
|
-
if (matches) {
|
|
248
|
-
count += matches.length;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
return count;
|
|
252
|
-
}
|
|
253
|
-
/**
|
|
254
|
-
* Analyze section ordering for template patterns
|
|
255
|
-
* @param sections Array of section names
|
|
256
|
-
* @returns Section order analysis
|
|
257
|
-
*/
|
|
258
|
-
analyzeSectionOrder(sections) {
|
|
259
|
-
const standardOrder = [
|
|
260
|
-
'title',
|
|
261
|
-
'description',
|
|
262
|
-
'installation',
|
|
263
|
-
'usage',
|
|
264
|
-
'api',
|
|
265
|
-
'examples',
|
|
266
|
-
'contributing',
|
|
267
|
-
'license',
|
|
268
|
-
];
|
|
269
|
-
let orderScore = 0;
|
|
270
|
-
let lastIndex = -1;
|
|
271
|
-
sections.forEach((section) => {
|
|
272
|
-
const sectionLower = section.toLowerCase();
|
|
273
|
-
const standardIndex = standardOrder.findIndex((std) => sectionLower.includes(std) || std.includes(sectionLower));
|
|
274
|
-
if (standardIndex > lastIndex) {
|
|
275
|
-
orderScore++;
|
|
276
|
-
lastIndex = standardIndex;
|
|
277
|
-
}
|
|
278
|
-
});
|
|
279
|
-
return {
|
|
280
|
-
orderScore,
|
|
281
|
-
maxPossibleScore: Math.min(sections.length, standardOrder.length),
|
|
282
|
-
followsStandardOrder: orderScore / Math.min(sections.length, standardOrder.length) > 0.8,
|
|
283
|
-
};
|
|
284
|
-
}
|
|
285
|
-
/**
|
|
286
|
-
* Count overly formal language patterns
|
|
287
|
-
* @param content Text content
|
|
288
|
-
* @returns Count of formal language indicators
|
|
289
|
-
*/
|
|
290
|
-
countOverlyFormalLanguage(content) {
|
|
291
|
-
const formalPatterns = [
|
|
292
|
-
/furthermore/gi,
|
|
293
|
-
/moreover/gi,
|
|
294
|
-
/in addition/gi,
|
|
295
|
-
/consequently/gi,
|
|
296
|
-
/subsequently/gi,
|
|
297
|
-
/comprehensive/gi,
|
|
298
|
-
/sophisticated/gi,
|
|
299
|
-
/facilitate/gi,
|
|
300
|
-
/utilize/gi,
|
|
301
|
-
/implement.*functionality/gi,
|
|
302
|
-
];
|
|
303
|
-
let count = 0;
|
|
304
|
-
for (const pattern of formalPatterns) {
|
|
305
|
-
const matches = content.match(pattern);
|
|
306
|
-
if (matches) {
|
|
307
|
-
count += matches.length;
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
return count;
|
|
311
|
-
}
|
|
312
|
-
/**
|
|
313
|
-
* Check for perfect grammar indicators
|
|
314
|
-
* @param content Text content
|
|
315
|
-
* @returns True if grammar seems too perfect
|
|
316
|
-
*/
|
|
317
|
-
checkPerfectGrammar(content) {
|
|
318
|
-
// Simple heuristics for "too perfect" grammar
|
|
319
|
-
const sentences = content.split(/[.!?]+/).filter((s) => s.trim().length > 10);
|
|
320
|
-
if (sentences.length < 5)
|
|
321
|
-
return false;
|
|
322
|
-
const indicators = {
|
|
323
|
-
noContractions: !content.match(/\b(don't|won't|can't|it's|you're|we're)\b/i),
|
|
324
|
-
consistentCapitalization: this.hasConsistentCapitalization(content),
|
|
325
|
-
noTypos: !content.match(/\b(teh|recieve|seperate|definately)\b/i),
|
|
326
|
-
perfectPunctuation: this.hasPerfectPunctuation(content),
|
|
327
|
-
};
|
|
328
|
-
const positiveCount = Object.values(indicators).filter(Boolean).length;
|
|
329
|
-
return positiveCount >= 3;
|
|
330
|
-
}
|
|
331
|
-
/**
|
|
332
|
-
* Count template phrases
|
|
333
|
-
* @param content Text content
|
|
334
|
-
* @returns Number of template phrases
|
|
335
|
-
*/
|
|
336
|
-
countTemplatePhrases(content) {
|
|
337
|
-
const templatePhrases = [
|
|
338
|
-
/this project provides/gi,
|
|
339
|
-
/easy to use/gi,
|
|
340
|
-
/getting started is simple/gi,
|
|
341
|
-
/follow these steps/gi,
|
|
342
|
-
/comprehensive solution/gi,
|
|
343
|
-
/powerful and flexible/gi,
|
|
344
|
-
/designed to be/gi,
|
|
345
|
-
/built with.*in mind/gi,
|
|
346
|
-
];
|
|
347
|
-
let count = 0;
|
|
348
|
-
for (const pattern of templatePhrases) {
|
|
349
|
-
const matches = content.match(pattern);
|
|
350
|
-
if (matches) {
|
|
351
|
-
count += matches.length;
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
return count;
|
|
355
|
-
}
|
|
356
|
-
/**
|
|
357
|
-
* Check for comprehensive structure
|
|
358
|
-
* @param content Text content
|
|
359
|
-
* @returns True if structure is suspiciously comprehensive
|
|
360
|
-
*/
|
|
361
|
-
checkComprehensiveStructure(content) {
|
|
362
|
-
const sections = this.extractSections(content);
|
|
363
|
-
return sections.length > 8 && content.length > 2000;
|
|
364
|
-
}
|
|
365
|
-
/**
|
|
366
|
-
* Check for technical precision
|
|
367
|
-
* @param content Text content
|
|
368
|
-
* @returns True if technically precise in AI-like way
|
|
369
|
-
*/
|
|
370
|
-
checkTechnicalPrecision(content) {
|
|
371
|
-
const technicalIndicators = [
|
|
372
|
-
/version \d+\.\d+\.\d+/gi,
|
|
373
|
-
/node\.js \d+\.\d+/gi,
|
|
374
|
-
/typescript \d+\.\d+/gi,
|
|
375
|
-
/npm install/gi,
|
|
376
|
-
/yarn add/gi,
|
|
377
|
-
/pnpm install/gi,
|
|
378
|
-
];
|
|
379
|
-
let count = 0;
|
|
380
|
-
for (const pattern of technicalIndicators) {
|
|
381
|
-
const matches = content.match(pattern);
|
|
382
|
-
if (matches) {
|
|
383
|
-
count += matches.length;
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
return count > 5;
|
|
387
|
-
}
|
|
388
|
-
/**
|
|
389
|
-
* Check for lack of personality
|
|
390
|
-
* @param content Text content
|
|
391
|
-
* @returns True if lacks personal touches
|
|
392
|
-
*/
|
|
393
|
-
checkLackOfPersonality(content) {
|
|
394
|
-
const personalityIndicators = [
|
|
395
|
-
/\bi\b/gi, // First person
|
|
396
|
-
/my/gi,
|
|
397
|
-
/personally/gi,
|
|
398
|
-
/in my opinion/gi,
|
|
399
|
-
/i think/gi,
|
|
400
|
-
/i believe/gi,
|
|
401
|
-
/hope/gi,
|
|
402
|
-
/feel free/gi,
|
|
403
|
-
];
|
|
404
|
-
let count = 0;
|
|
405
|
-
for (const pattern of personalityIndicators) {
|
|
406
|
-
const matches = content.match(pattern);
|
|
407
|
-
if (matches) {
|
|
408
|
-
count += matches.length;
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
return count < 3 && content.length > 1000;
|
|
412
|
-
}
|
|
413
|
-
/**
|
|
414
|
-
* Extract comment patterns from code
|
|
415
|
-
* @param content Code content
|
|
416
|
-
* @returns Comment pattern analysis
|
|
417
|
-
*/
|
|
418
|
-
extractCommentPatterns(content) {
|
|
419
|
-
const lines = content.split('\n');
|
|
420
|
-
const commentLines = lines.filter((line) => {
|
|
421
|
-
const trimmed = line.trim();
|
|
422
|
-
return trimmed.startsWith('//') || trimmed.startsWith('/*') || trimmed.startsWith('*');
|
|
423
|
-
});
|
|
424
|
-
return {
|
|
425
|
-
density: commentLines.length / lines.length,
|
|
426
|
-
avgLength: commentLines.reduce((sum, line) => sum + line.length, 0) / (commentLines.length || 1),
|
|
427
|
-
patterns: commentLines.map((line) => line.trim().substring(0, 20)), // First 20 chars
|
|
428
|
-
};
|
|
429
|
-
}
|
|
430
|
-
/**
|
|
431
|
-
* Calculate uniformity of comment patterns across files
|
|
432
|
-
* @param patterns Array of comment patterns
|
|
433
|
-
* @returns Uniformity score
|
|
434
|
-
*/
|
|
435
|
-
calculateCommentPatternUniformity(patterns) {
|
|
436
|
-
if (patterns.length < 2)
|
|
437
|
-
return 0;
|
|
438
|
-
const densities = patterns.map((p) => p.density);
|
|
439
|
-
const avgLengths = patterns.map((p) => p.avgLength);
|
|
440
|
-
const densityUniformity = this.calculateUniformity(densities);
|
|
441
|
-
const lengthUniformity = this.calculateUniformity(avgLengths);
|
|
442
|
-
return (densityUniformity + lengthUniformity) / 2;
|
|
443
|
-
}
|
|
444
|
-
/**
|
|
445
|
-
* Find common comment patterns
|
|
446
|
-
* @param patterns Array of comment patterns
|
|
447
|
-
* @returns Common patterns found
|
|
448
|
-
*/
|
|
449
|
-
findCommonCommentPatterns(patterns) {
|
|
450
|
-
const allPatterns = patterns.flatMap((p) => p.patterns);
|
|
451
|
-
const patternCounts = new Map();
|
|
452
|
-
allPatterns.forEach((pattern) => {
|
|
453
|
-
patternCounts.set(pattern, (patternCounts.get(pattern) || 0) + 1);
|
|
454
|
-
});
|
|
455
|
-
return Array.from(patternCounts.entries())
|
|
456
|
-
.filter(([, count]) => count > 1)
|
|
457
|
-
.map(([pattern]) => pattern)
|
|
458
|
-
.slice(0, 10); // Top 10 common patterns
|
|
459
|
-
}
|
|
460
|
-
/**
|
|
461
|
-
* Check for consistent capitalization
|
|
462
|
-
* @param content Text content
|
|
463
|
-
* @returns True if capitalization is very consistent
|
|
464
|
-
*/
|
|
465
|
-
hasConsistentCapitalization(content) {
|
|
466
|
-
const sentences = content.split(/[.!?]+/).filter((s) => s.trim().length > 5);
|
|
467
|
-
if (sentences.length < 3)
|
|
468
|
-
return false;
|
|
469
|
-
const capitalizedSentences = sentences.filter((s) => {
|
|
470
|
-
const trimmed = s.trim();
|
|
471
|
-
return trimmed.length > 0 && trimmed[0] === trimmed[0].toUpperCase();
|
|
472
|
-
});
|
|
473
|
-
return capitalizedSentences.length / sentences.length > 0.95;
|
|
474
|
-
}
|
|
475
|
-
/**
|
|
476
|
-
* Check for perfect punctuation
|
|
477
|
-
* @param content Text content
|
|
478
|
-
* @returns True if punctuation is suspiciously perfect
|
|
479
|
-
*/
|
|
480
|
-
hasPerfectPunctuation(content) {
|
|
481
|
-
// Check for consistent spacing after punctuation
|
|
482
|
-
const punctuationSpacing = content.match(/[.!?]\s{2,}/g);
|
|
483
|
-
const inconsistentSpacing = content.match(/[.!?][^\s]/g);
|
|
484
|
-
return !inconsistentSpacing && (punctuationSpacing?.length || 0) > 0;
|
|
485
|
-
}
|
|
486
|
-
/**
|
|
487
|
-
* Create empty result for error cases
|
|
488
|
-
* @returns Empty documentation analysis result
|
|
489
|
-
*/
|
|
490
|
-
createEmptyResult() {
|
|
491
|
-
return {
|
|
492
|
-
analyzer: 'documentation',
|
|
493
|
-
patterns: [],
|
|
494
|
-
metadata: {
|
|
495
|
-
filesAnalyzed: 0,
|
|
496
|
-
hasReadme: false,
|
|
497
|
-
avgCommentDensity: 0,
|
|
498
|
-
},
|
|
499
|
-
};
|
|
500
|
-
}
|
|
501
|
-
}
|
|
502
|
-
exports.DocumentationAnalyzer = DocumentationAnalyzer;
|
|
503
|
-
//# sourceMappingURL=DocumentationAnalyzer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentationAnalyzer.js","sourceRoot":"","sources":["../../../../src/analysis/ai-detection/analyzers/DocumentationAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Git history analyzer for detecting AI-generated code patterns.
|
|
3
|
-
*
|
|
4
|
-
* This analyzer examines git commit history, patterns, and metadata to identify
|
|
5
|
-
* characteristics commonly associated with AI-generated code submissions.
|
|
6
|
-
*/
|
|
7
|
-
import type { CodeSubmission, GitAnalysisResult } from '../types/DetectionTypes';
|
|
8
|
-
import { BaseAnalyzer } from './BaseAnalyzer';
|
|
9
|
-
/**
|
|
10
|
-
* Analyzer for git history patterns that may indicate AI generation
|
|
11
|
-
*/
|
|
12
|
-
export declare class GitHistoryAnalyzer extends BaseAnalyzer {
|
|
13
|
-
/**
|
|
14
|
-
* Get analyzer name
|
|
15
|
-
*/
|
|
16
|
-
getAnalyzerName(): string;
|
|
17
|
-
/**
|
|
18
|
-
* Analyze git history for AI-generated patterns
|
|
19
|
-
* @param submission Code submission to analyze
|
|
20
|
-
* @returns Git analysis result
|
|
21
|
-
*/
|
|
22
|
-
analyze(submission: CodeSubmission): Promise<GitAnalysisResult>;
|
|
23
|
-
/**
|
|
24
|
-
* Detect bulk file creation in initial commit
|
|
25
|
-
* @param commits Array of git commits
|
|
26
|
-
* @returns Pattern detection result
|
|
27
|
-
*/
|
|
28
|
-
private detectBulkFileCreation;
|
|
29
|
-
/**
|
|
30
|
-
* Detect AI-generated commit message patterns
|
|
31
|
-
* @param commits Array of git commits
|
|
32
|
-
* @returns Pattern detection result
|
|
33
|
-
*/
|
|
34
|
-
private detectAICommitMessages;
|
|
35
|
-
/**
|
|
36
|
-
* Detect absence of typical debugging/development commits
|
|
37
|
-
* @param commits Array of git commits
|
|
38
|
-
* @returns Pattern detection result
|
|
39
|
-
*/
|
|
40
|
-
private detectDebuggingAbsence;
|
|
41
|
-
/**
|
|
42
|
-
* Detect perfect initial commit without development artifacts
|
|
43
|
-
* @param commits Array of git commits
|
|
44
|
-
* @returns Pattern detection result
|
|
45
|
-
*/
|
|
46
|
-
private detectPerfectInitialCommit;
|
|
47
|
-
/**
|
|
48
|
-
* Check if commit has complete project structure
|
|
49
|
-
* @param files Array of file paths
|
|
50
|
-
* @returns True if has complete structure
|
|
51
|
-
*/
|
|
52
|
-
private hasCompleteProjectStructure;
|
|
53
|
-
/**
|
|
54
|
-
* Check if commit has configuration files
|
|
55
|
-
* @param files Array of file paths
|
|
56
|
-
* @returns True if has config files
|
|
57
|
-
*/
|
|
58
|
-
private hasConfigurationFiles;
|
|
59
|
-
/**
|
|
60
|
-
* Check if commit has documentation files
|
|
61
|
-
* @param files Array of file paths
|
|
62
|
-
* @returns True if has documentation
|
|
63
|
-
*/
|
|
64
|
-
private hasDocumentationFiles;
|
|
65
|
-
/**
|
|
66
|
-
* Check if commit has test files
|
|
67
|
-
* @param files Array of file paths
|
|
68
|
-
* @returns True if has tests
|
|
69
|
-
*/
|
|
70
|
-
private hasTestFiles;
|
|
71
|
-
/**
|
|
72
|
-
* Check if initial commit message is "perfect" (suggests AI)
|
|
73
|
-
* @param message Commit message
|
|
74
|
-
* @returns True if message seems AI-generated
|
|
75
|
-
*/
|
|
76
|
-
private isPerfectInitialMessage;
|
|
77
|
-
/**
|
|
78
|
-
* Categorize files by type
|
|
79
|
-
* @param files Array of file paths
|
|
80
|
-
* @returns Object with file type counts
|
|
81
|
-
*/
|
|
82
|
-
private categorizeFiles;
|
|
83
|
-
/**
|
|
84
|
-
* Create empty result for error cases
|
|
85
|
-
* @returns Empty git analysis result
|
|
86
|
-
*/
|
|
87
|
-
private createEmptyResult;
|
|
88
|
-
}
|