agentic-qe 2.3.2 → 2.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +140 -0
- package/README.md +1 -1
- package/dist/agents/BaseAgent.d.ts +10 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +113 -0
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.js +53 -27
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.d.ts +5 -0
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +20 -5
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/QualityGateAgent.js +44 -6
- package/dist/agents/QualityGateAgent.js.map +1 -1
- package/dist/cli/commands/dream/index.d.ts +50 -0
- package/dist/cli/commands/dream/index.d.ts.map +1 -0
- package/dist/cli/commands/dream/index.js +282 -0
- package/dist/cli/commands/dream/index.js.map +1 -0
- package/dist/cli/commands/learn/index.d.ts +31 -5
- package/dist/cli/commands/learn/index.d.ts.map +1 -1
- package/dist/cli/commands/learn/index.js +183 -50
- package/dist/cli/commands/learn/index.js.map +1 -1
- package/dist/cli/commands/transfer/index.d.ts +55 -0
- package/dist/cli/commands/transfer/index.d.ts.map +1 -0
- package/dist/cli/commands/transfer/index.js +317 -0
- package/dist/cli/commands/transfer/index.js.map +1 -0
- package/dist/cli/index.js +156 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/database-init.js +5 -0
- package/dist/cli/init/database-init.js.map +1 -1
- package/dist/cli/init/index.d.ts.map +1 -1
- package/dist/cli/init/index.js +12 -4
- package/dist/cli/init/index.js.map +1 -1
- package/dist/cli/init/learning-init.d.ts +39 -0
- package/dist/cli/init/learning-init.d.ts.map +1 -0
- package/dist/cli/init/learning-init.js +239 -0
- package/dist/cli/init/learning-init.js.map +1 -0
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/learning/PerformanceTracker.d.ts +9 -0
- package/dist/learning/PerformanceTracker.d.ts.map +1 -1
- package/dist/learning/PerformanceTracker.js +26 -2
- package/dist/learning/PerformanceTracker.js.map +1 -1
- package/dist/learning/baselines/BaselineCollector.d.ts +178 -0
- package/dist/learning/baselines/BaselineCollector.d.ts.map +1 -0
- package/dist/learning/baselines/BaselineCollector.js +398 -0
- package/dist/learning/baselines/BaselineCollector.js.map +1 -0
- package/dist/learning/baselines/StandardTaskSuite.d.ts +88 -0
- package/dist/learning/baselines/StandardTaskSuite.d.ts.map +1 -0
- package/dist/learning/baselines/StandardTaskSuite.js +801 -0
- package/dist/learning/baselines/StandardTaskSuite.js.map +1 -0
- package/dist/learning/baselines/index.d.ts +10 -0
- package/dist/learning/baselines/index.d.ts.map +1 -0
- package/dist/learning/baselines/index.js +15 -0
- package/dist/learning/baselines/index.js.map +1 -0
- package/dist/learning/capture/ExecutionRecorder.d.ts +97 -0
- package/dist/learning/capture/ExecutionRecorder.d.ts.map +1 -0
- package/dist/learning/capture/ExecutionRecorder.js +195 -0
- package/dist/learning/capture/ExecutionRecorder.js.map +1 -0
- package/dist/learning/capture/ExperienceCapture.d.ts +177 -0
- package/dist/learning/capture/ExperienceCapture.d.ts.map +1 -0
- package/dist/learning/capture/ExperienceCapture.js +432 -0
- package/dist/learning/capture/ExperienceCapture.js.map +1 -0
- package/dist/learning/capture/index.d.ts +12 -0
- package/dist/learning/capture/index.d.ts.map +1 -0
- package/dist/learning/capture/index.js +17 -0
- package/dist/learning/capture/index.js.map +1 -0
- package/dist/learning/dashboard/MetricsDashboard.d.ts +63 -0
- package/dist/learning/dashboard/MetricsDashboard.d.ts.map +1 -0
- package/dist/learning/dashboard/MetricsDashboard.js +230 -0
- package/dist/learning/dashboard/MetricsDashboard.js.map +1 -0
- package/dist/learning/dashboard/index.d.ts +7 -0
- package/dist/learning/dashboard/index.d.ts.map +1 -0
- package/dist/learning/dashboard/index.js +23 -0
- package/dist/learning/dashboard/index.js.map +1 -0
- package/dist/learning/dream/ConceptGraph.d.ts +160 -0
- package/dist/learning/dream/ConceptGraph.d.ts.map +1 -0
- package/dist/learning/dream/ConceptGraph.js +445 -0
- package/dist/learning/dream/ConceptGraph.js.map +1 -0
- package/dist/learning/dream/DreamEngine.d.ts +150 -0
- package/dist/learning/dream/DreamEngine.d.ts.map +1 -0
- package/dist/learning/dream/DreamEngine.js +551 -0
- package/dist/learning/dream/DreamEngine.js.map +1 -0
- package/dist/learning/dream/InsightGenerator.d.ts +152 -0
- package/dist/learning/dream/InsightGenerator.d.ts.map +1 -0
- package/dist/learning/dream/InsightGenerator.js +463 -0
- package/dist/learning/dream/InsightGenerator.js.map +1 -0
- package/dist/learning/dream/SpreadingActivation.d.ts +138 -0
- package/dist/learning/dream/SpreadingActivation.d.ts.map +1 -0
- package/dist/learning/dream/SpreadingActivation.js +320 -0
- package/dist/learning/dream/SpreadingActivation.js.map +1 -0
- package/dist/learning/dream/index.d.ts +14 -0
- package/dist/learning/dream/index.d.ts.map +1 -0
- package/dist/learning/dream/index.js +22 -0
- package/dist/learning/dream/index.js.map +1 -0
- package/dist/learning/metrics/AlertManager.d.ts +107 -0
- package/dist/learning/metrics/AlertManager.d.ts.map +1 -0
- package/dist/learning/metrics/AlertManager.js +246 -0
- package/dist/learning/metrics/AlertManager.js.map +1 -0
- package/dist/learning/metrics/LearningMetrics.d.ts +184 -0
- package/dist/learning/metrics/LearningMetrics.d.ts.map +1 -0
- package/dist/learning/metrics/LearningMetrics.js +754 -0
- package/dist/learning/metrics/LearningMetrics.js.map +1 -0
- package/dist/learning/metrics/MetricsCollector.d.ts +108 -0
- package/dist/learning/metrics/MetricsCollector.d.ts.map +1 -0
- package/dist/learning/metrics/MetricsCollector.js +240 -0
- package/dist/learning/metrics/MetricsCollector.js.map +1 -0
- package/dist/learning/metrics/MetricsStore.d.ts +149 -0
- package/dist/learning/metrics/MetricsStore.d.ts.map +1 -0
- package/dist/learning/metrics/MetricsStore.js +502 -0
- package/dist/learning/metrics/MetricsStore.js.map +1 -0
- package/dist/learning/metrics/TrendAnalyzer.d.ts +85 -0
- package/dist/learning/metrics/TrendAnalyzer.d.ts.map +1 -0
- package/dist/learning/metrics/TrendAnalyzer.js +210 -0
- package/dist/learning/metrics/TrendAnalyzer.js.map +1 -0
- package/dist/learning/metrics/index.d.ts +13 -0
- package/dist/learning/metrics/index.d.ts.map +1 -0
- package/dist/learning/metrics/index.js +39 -0
- package/dist/learning/metrics/index.js.map +1 -0
- package/dist/learning/scheduler/IdleDetector.d.ts +126 -0
- package/dist/learning/scheduler/IdleDetector.d.ts.map +1 -0
- package/dist/learning/scheduler/IdleDetector.js +281 -0
- package/dist/learning/scheduler/IdleDetector.js.map +1 -0
- package/dist/learning/scheduler/SleepCycle.d.ts +150 -0
- package/dist/learning/scheduler/SleepCycle.d.ts.map +1 -0
- package/dist/learning/scheduler/SleepCycle.js +506 -0
- package/dist/learning/scheduler/SleepCycle.js.map +1 -0
- package/dist/learning/scheduler/SleepScheduler.d.ts +131 -0
- package/dist/learning/scheduler/SleepScheduler.d.ts.map +1 -0
- package/dist/learning/scheduler/SleepScheduler.js +299 -0
- package/dist/learning/scheduler/SleepScheduler.js.map +1 -0
- package/dist/learning/scheduler/TimeBasedTrigger.d.ts +108 -0
- package/dist/learning/scheduler/TimeBasedTrigger.d.ts.map +1 -0
- package/dist/learning/scheduler/TimeBasedTrigger.js +222 -0
- package/dist/learning/scheduler/TimeBasedTrigger.js.map +1 -0
- package/dist/learning/scheduler/index.d.ts +16 -0
- package/dist/learning/scheduler/index.d.ts.map +1 -0
- package/dist/learning/scheduler/index.js +23 -0
- package/dist/learning/scheduler/index.js.map +1 -0
- package/dist/learning/synthesis/PatternSynthesis.d.ts +162 -0
- package/dist/learning/synthesis/PatternSynthesis.d.ts.map +1 -0
- package/dist/learning/synthesis/PatternSynthesis.js +479 -0
- package/dist/learning/synthesis/PatternSynthesis.js.map +1 -0
- package/dist/learning/synthesis/index.d.ts +10 -0
- package/dist/learning/synthesis/index.d.ts.map +1 -0
- package/dist/learning/synthesis/index.js +14 -0
- package/dist/learning/synthesis/index.js.map +1 -0
- package/dist/learning/transfer/CompatibilityScorer.d.ts +115 -0
- package/dist/learning/transfer/CompatibilityScorer.d.ts.map +1 -0
- package/dist/learning/transfer/CompatibilityScorer.js +319 -0
- package/dist/learning/transfer/CompatibilityScorer.js.map +1 -0
- package/dist/learning/transfer/TransferProtocol.d.ts +172 -0
- package/dist/learning/transfer/TransferProtocol.d.ts.map +1 -0
- package/dist/learning/transfer/TransferProtocol.js +611 -0
- package/dist/learning/transfer/TransferProtocol.js.map +1 -0
- package/dist/learning/transfer/TransferPrototype.d.ts +93 -0
- package/dist/learning/transfer/TransferPrototype.d.ts.map +1 -0
- package/dist/learning/transfer/TransferPrototype.js +433 -0
- package/dist/learning/transfer/TransferPrototype.js.map +1 -0
- package/dist/learning/transfer/TransferValidator.d.ts +140 -0
- package/dist/learning/transfer/TransferValidator.d.ts.map +1 -0
- package/dist/learning/transfer/TransferValidator.js +413 -0
- package/dist/learning/transfer/TransferValidator.js.map +1 -0
- package/dist/learning/transfer/index.d.ts +14 -0
- package/dist/learning/transfer/index.d.ts.map +1 -0
- package/dist/learning/transfer/index.js +22 -0
- package/dist/learning/transfer/index.js.map +1 -0
- package/dist/mcp/handlers/test/test-generate-enhanced.d.ts +26 -2
- package/dist/mcp/handlers/test/test-generate-enhanced.d.ts.map +1 -1
- package/dist/mcp/handlers/test/test-generate-enhanced.js +159 -27
- package/dist/mcp/handlers/test/test-generate-enhanced.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +2 -1
- package/dist/mcp/server.js.map +1 -1
- package/package.json +7 -2
- package/scripts/README.md +352 -0
- package/scripts/hooks/capture-task-learning.js +191 -0
- package/scripts/hooks/emit-task-complete.sh +35 -0
- package/scripts/hooks/emit-task-spawn.sh +27 -0
- package/.claude/agents/failing-agent.json +0 -9
- package/.claude/agents/test-agent.json +0 -9
- package/dist/App.d.ts +0 -5
- package/dist/App.d.ts.map +0 -1
- package/dist/App.js +0 -15
- package/dist/App.js.map +0 -1
- package/dist/cli/init/utils.d.ts +0 -183
- package/dist/cli/init/utils.d.ts.map +0 -1
- package/dist/cli/init/utils.js +0 -354
- package/dist/cli/init/utils.js.map +0 -1
- package/dist/components/Dashboard/Dashboard.d.ts +0 -4
- package/dist/components/Dashboard/Dashboard.d.ts.map +0 -1
- package/dist/components/Dashboard/Dashboard.js +0 -148
- package/dist/components/Dashboard/Dashboard.js.map +0 -1
- package/dist/components/Dashboard/DashboardHeader.d.ts +0 -4
- package/dist/components/Dashboard/DashboardHeader.d.ts.map +0 -1
- package/dist/components/Dashboard/DashboardHeader.js +0 -138
- package/dist/components/Dashboard/DashboardHeader.js.map +0 -1
- package/dist/contexts/DashboardContext.d.ts +0 -41
- package/dist/contexts/DashboardContext.d.ts.map +0 -1
- package/dist/contexts/DashboardContext.js +0 -187
- package/dist/contexts/DashboardContext.js.map +0 -1
- package/dist/core/transport/QUICTransport.d.ts +0 -320
- package/dist/core/transport/QUICTransport.d.ts.map +0 -1
- package/dist/core/transport/QUICTransport.js +0 -711
- package/dist/core/transport/QUICTransport.js.map +0 -1
- package/dist/learning/LearningPersistenceAdapter.d.ts +0 -84
- package/dist/learning/LearningPersistenceAdapter.d.ts.map +0 -1
- package/dist/learning/LearningPersistenceAdapter.js +0 -202
- package/dist/learning/LearningPersistenceAdapter.js.map +0 -1
- package/dist/learning/algorithms/QLearning.d.ts +0 -68
- package/dist/learning/algorithms/QLearning.d.ts.map +0 -1
- package/dist/learning/algorithms/QLearning.js +0 -116
- package/dist/learning/algorithms/QLearning.js.map +0 -1
- package/dist/mcp/handlers/advanced/requirements-generate-bdd.d.ts +0 -7
- package/dist/mcp/handlers/advanced/requirements-generate-bdd.d.ts.map +0 -1
- package/dist/mcp/handlers/advanced/requirements-generate-bdd.js +0 -267
- package/dist/mcp/handlers/advanced/requirements-generate-bdd.js.map +0 -1
- package/dist/mcp/handlers/advanced/requirements-validate.d.ts +0 -7
- package/dist/mcp/handlers/advanced/requirements-validate.d.ts.map +0 -1
- package/dist/mcp/handlers/advanced/requirements-validate.js +0 -175
- package/dist/mcp/handlers/advanced/requirements-validate.js.map +0 -1
- package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.d.ts +0 -15
- package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.d.ts.map +0 -1
- package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.js +0 -43
- package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.js.map +0 -1
- package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts +0 -58
- package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts.map +0 -1
- package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js +0 -188
- package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js.map +0 -1
- package/dist/mcp/handlers/optimize-tests.d.ts +0 -219
- package/dist/mcp/handlers/optimize-tests.d.ts.map +0 -1
- package/dist/mcp/handlers/optimize-tests.js +0 -533
- package/dist/mcp/handlers/optimize-tests.js.map +0 -1
- package/dist/mcp/handlers/predict-defects.d.ts +0 -194
- package/dist/mcp/handlers/predict-defects.d.ts.map +0 -1
- package/dist/mcp/handlers/predict-defects.js +0 -722
- package/dist/mcp/handlers/predict-defects.js.map +0 -1
- package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts +0 -199
- package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts.map +0 -1
- package/dist/mcp/handlers/prediction/regression-risk-analyze.js +0 -471
- package/dist/mcp/handlers/prediction/regression-risk-analyze.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-decision-make.d.ts +0 -104
- package/dist/mcp/handlers/quality/quality-decision-make.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-decision-make.js +0 -408
- package/dist/mcp/handlers/quality/quality-decision-make.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-gate-execute.d.ts +0 -160
- package/dist/mcp/handlers/quality/quality-gate-execute.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-gate-execute.js +0 -412
- package/dist/mcp/handlers/quality/quality-gate-execute.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-policy-check.d.ts +0 -163
- package/dist/mcp/handlers/quality/quality-policy-check.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-policy-check.js +0 -455
- package/dist/mcp/handlers/quality/quality-policy-check.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-risk-assess.d.ts +0 -123
- package/dist/mcp/handlers/quality/quality-risk-assess.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-risk-assess.js +0 -522
- package/dist/mcp/handlers/quality/quality-risk-assess.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-validate-metrics.d.ts +0 -117
- package/dist/mcp/handlers/quality/quality-validate-metrics.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-validate-metrics.js +0 -288
- package/dist/mcp/handlers/quality/quality-validate-metrics.js.map +0 -1
- package/dist/mcp/handlers/quality-analyze.d.ts +0 -279
- package/dist/mcp/handlers/quality-analyze.d.ts.map +0 -1
- package/dist/mcp/handlers/quality-analyze.js +0 -720
- package/dist/mcp/handlers/quality-analyze.js.map +0 -1
- package/dist/mcp/handlers/security/check-authz.d.ts +0 -152
- package/dist/mcp/handlers/security/check-authz.d.ts.map +0 -1
- package/dist/mcp/handlers/security/check-authz.js +0 -434
- package/dist/mcp/handlers/security/check-authz.js.map +0 -1
- package/dist/mcp/handlers/security/scan-dependencies.d.ts +0 -148
- package/dist/mcp/handlers/security/scan-dependencies.d.ts.map +0 -1
- package/dist/mcp/handlers/security/scan-dependencies.js +0 -354
- package/dist/mcp/handlers/security/scan-dependencies.js.map +0 -1
- package/dist/mcp/handlers/security/validate-auth.d.ts +0 -128
- package/dist/mcp/handlers/security/validate-auth.d.ts.map +0 -1
- package/dist/mcp/handlers/security/validate-auth.js +0 -294
- package/dist/mcp/handlers/security/validate-auth.js.map +0 -1
- package/dist/mcp/handlers/test-generate.d.ts +0 -107
- package/dist/mcp/handlers/test-generate.d.ts.map +0 -1
- package/dist/mcp/handlers/test-generate.js +0 -454
- package/dist/mcp/handlers/test-generate.js.map +0 -1
|
@@ -1,522 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Quality Risk Assessment Handler
|
|
4
|
-
*
|
|
5
|
-
* AI-powered risk assessment for quality gates.
|
|
6
|
-
* Uses psycho-symbolic reasoning for complex risk scenarios.
|
|
7
|
-
*
|
|
8
|
-
* @version 1.0.0
|
|
9
|
-
* @author Agentic QE Team - Agent 2
|
|
10
|
-
*/
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.QualityRiskAssessHandler = void 0;
|
|
13
|
-
const base_handler_js_1 = require("../base-handler.js");
|
|
14
|
-
class QualityRiskAssessHandler extends base_handler_js_1.BaseHandler {
|
|
15
|
-
constructor(hookExecutor) {
|
|
16
|
-
super();
|
|
17
|
-
this.riskWeights = {
|
|
18
|
-
technical: 0.25,
|
|
19
|
-
process: 0.15,
|
|
20
|
-
deployment: 0.20,
|
|
21
|
-
security: 0.25,
|
|
22
|
-
performance: 0.15
|
|
23
|
-
};
|
|
24
|
-
this.hookExecutor = hookExecutor;
|
|
25
|
-
}
|
|
26
|
-
async handle(args) {
|
|
27
|
-
return this.safeHandle(async () => {
|
|
28
|
-
const requestId = this.generateRequestId();
|
|
29
|
-
const startTime = Date.now();
|
|
30
|
-
this.log('info', 'Starting risk assessment', { requestId, projectId: args.context.projectId });
|
|
31
|
-
// Validate required parameters
|
|
32
|
-
this.validateRequired(args, ['context', 'metrics']);
|
|
33
|
-
// Execute pre-task hook
|
|
34
|
-
await this.hookExecutor.executePreTask({
|
|
35
|
-
description: `Risk assessment for ${args.context.projectId} (${args.context.environment})`,
|
|
36
|
-
agentType: 'risk-analyzer',
|
|
37
|
-
sessionId: requestId
|
|
38
|
-
});
|
|
39
|
-
// Perform comprehensive risk assessment
|
|
40
|
-
const { result: assessment, executionTime } = await this.measureExecutionTime(async () => {
|
|
41
|
-
// Identify risk factors
|
|
42
|
-
const riskFactors = await this.identifyRiskFactors(args);
|
|
43
|
-
// Calculate risk matrix
|
|
44
|
-
const riskMatrix = this.calculateRiskMatrix(riskFactors);
|
|
45
|
-
// Calculate overall risk score
|
|
46
|
-
const riskScore = this.calculateOverallRiskScore(riskMatrix);
|
|
47
|
-
// Determine overall risk level
|
|
48
|
-
const overallRisk = this.determineRiskLevel(riskScore);
|
|
49
|
-
// Calculate confidence based on data completeness
|
|
50
|
-
const confidence = this.calculateConfidence(args);
|
|
51
|
-
// Generate recommendations
|
|
52
|
-
const recommendations = this.generateRecommendations(riskFactors, overallRisk);
|
|
53
|
-
// AI insights if enabled
|
|
54
|
-
let aiInsights;
|
|
55
|
-
if (args.aiReasoning && overallRisk !== 'low') {
|
|
56
|
-
aiInsights = await this.generateAIInsights(args, riskFactors, riskScore);
|
|
57
|
-
}
|
|
58
|
-
const result = {
|
|
59
|
-
assessmentId: requestId,
|
|
60
|
-
overallRisk,
|
|
61
|
-
riskScore,
|
|
62
|
-
confidence,
|
|
63
|
-
riskFactors,
|
|
64
|
-
riskMatrix,
|
|
65
|
-
recommendations,
|
|
66
|
-
aiInsights,
|
|
67
|
-
metadata: {
|
|
68
|
-
assessedAt: new Date().toISOString(),
|
|
69
|
-
executionTime: Date.now() - startTime,
|
|
70
|
-
model: 'risk-assessment-v1'
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
return result;
|
|
74
|
-
});
|
|
75
|
-
this.log('info', `Risk assessment completed in ${executionTime.toFixed(2)}ms`, {
|
|
76
|
-
assessmentId: assessment.assessmentId,
|
|
77
|
-
overallRisk: assessment.overallRisk,
|
|
78
|
-
riskScore: assessment.riskScore
|
|
79
|
-
});
|
|
80
|
-
// Store result in memory
|
|
81
|
-
await this.hookExecutor.executePostEdit({
|
|
82
|
-
file: `risk-assessment-${requestId}`,
|
|
83
|
-
memoryKey: `aqe/swarm/quality-mcp-tools/risk-assessments/${requestId}`
|
|
84
|
-
});
|
|
85
|
-
// Execute post-task hook
|
|
86
|
-
await this.hookExecutor.executePostTask({
|
|
87
|
-
taskId: requestId,
|
|
88
|
-
agentType: 'risk-analyzer',
|
|
89
|
-
sessionId: requestId,
|
|
90
|
-
results: {
|
|
91
|
-
assessmentId: assessment.assessmentId,
|
|
92
|
-
overallRisk: assessment.overallRisk,
|
|
93
|
-
riskScore: assessment.riskScore,
|
|
94
|
-
factorsCount: assessment.riskFactors.length
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
return this.createSuccessResponse(assessment, requestId);
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
async identifyRiskFactors(args) {
|
|
101
|
-
const factors = [];
|
|
102
|
-
// Technical risks
|
|
103
|
-
factors.push(...this.assessTechnicalRisks(args));
|
|
104
|
-
// Process risks
|
|
105
|
-
factors.push(...this.assessProcessRisks(args));
|
|
106
|
-
// Deployment risks
|
|
107
|
-
factors.push(...this.assessDeploymentRisks(args));
|
|
108
|
-
// Security risks
|
|
109
|
-
factors.push(...this.assessSecurityRisks(args));
|
|
110
|
-
// Performance risks
|
|
111
|
-
factors.push(...this.assessPerformanceRisks(args));
|
|
112
|
-
return factors.filter(f => f.probability > 0);
|
|
113
|
-
}
|
|
114
|
-
assessTechnicalRisks(args) {
|
|
115
|
-
const factors = [];
|
|
116
|
-
// Coverage risk
|
|
117
|
-
if (args.metrics.coverage.line < 80) {
|
|
118
|
-
const severity = args.metrics.coverage.line < 60 ? 'high' : 'medium';
|
|
119
|
-
factors.push({
|
|
120
|
-
id: 'tech-coverage',
|
|
121
|
-
type: 'technical',
|
|
122
|
-
severity,
|
|
123
|
-
probability: 0.7,
|
|
124
|
-
impact: 'Insufficient test coverage increases defect probability',
|
|
125
|
-
indicators: [`Line coverage: ${args.metrics.coverage.line.toFixed(1)}%`],
|
|
126
|
-
mitigation: [
|
|
127
|
-
'Add unit tests for uncovered code paths',
|
|
128
|
-
'Prioritize coverage for critical components',
|
|
129
|
-
'Set coverage gates before deployment'
|
|
130
|
-
],
|
|
131
|
-
confidence: 0.9
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
// Test reliability risk
|
|
135
|
-
if (args.metrics.testResults.flakyTests > 0) {
|
|
136
|
-
factors.push({
|
|
137
|
-
id: 'tech-flaky-tests',
|
|
138
|
-
type: 'technical',
|
|
139
|
-
severity: 'medium',
|
|
140
|
-
probability: 0.5,
|
|
141
|
-
impact: 'Flaky tests reduce confidence in test suite',
|
|
142
|
-
indicators: [`${args.metrics.testResults.flakyTests} flaky tests detected`],
|
|
143
|
-
mitigation: [
|
|
144
|
-
'Investigate and fix flaky test patterns',
|
|
145
|
-
'Implement test retry logic',
|
|
146
|
-
'Add test stability monitoring'
|
|
147
|
-
],
|
|
148
|
-
confidence: 0.85
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
// Complexity risk
|
|
152
|
-
if (args.metrics.quality.complexity > 15) {
|
|
153
|
-
factors.push({
|
|
154
|
-
id: 'tech-complexity',
|
|
155
|
-
type: 'technical',
|
|
156
|
-
severity: 'medium',
|
|
157
|
-
probability: 0.6,
|
|
158
|
-
impact: 'High complexity increases maintenance burden and defect rate',
|
|
159
|
-
indicators: [`Cyclomatic complexity: ${args.metrics.quality.complexity}`],
|
|
160
|
-
mitigation: [
|
|
161
|
-
'Refactor complex functions',
|
|
162
|
-
'Extract methods to reduce complexity',
|
|
163
|
-
'Apply SOLID principles'
|
|
164
|
-
],
|
|
165
|
-
confidence: 0.88
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
// Technical debt risk
|
|
169
|
-
if (args.metrics.quality.technicalDebt > 50) {
|
|
170
|
-
factors.push({
|
|
171
|
-
id: 'tech-debt',
|
|
172
|
-
type: 'technical',
|
|
173
|
-
severity: 'high',
|
|
174
|
-
probability: 0.65,
|
|
175
|
-
impact: 'Accumulated technical debt slows development and increases risk',
|
|
176
|
-
indicators: [`Technical debt: ${args.metrics.quality.technicalDebt} hours`],
|
|
177
|
-
mitigation: [
|
|
178
|
-
'Allocate time for debt reduction',
|
|
179
|
-
'Prioritize high-impact refactoring',
|
|
180
|
-
'Implement code quality gates'
|
|
181
|
-
],
|
|
182
|
-
confidence: 0.75
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
return factors;
|
|
186
|
-
}
|
|
187
|
-
assessProcessRisks(args) {
|
|
188
|
-
const factors = [];
|
|
189
|
-
// Change set risk
|
|
190
|
-
if (args.context.changeSet) {
|
|
191
|
-
const { filesModified, linesChanged, complexity } = args.context.changeSet;
|
|
192
|
-
if (filesModified > 50 || linesChanged > 1000) {
|
|
193
|
-
factors.push({
|
|
194
|
-
id: 'process-large-changeset',
|
|
195
|
-
type: 'process',
|
|
196
|
-
severity: 'medium',
|
|
197
|
-
probability: 0.5,
|
|
198
|
-
impact: 'Large changesets increase risk of defects and regression',
|
|
199
|
-
indicators: [
|
|
200
|
-
`Files modified: ${filesModified}`,
|
|
201
|
-
`Lines changed: ${linesChanged}`
|
|
202
|
-
],
|
|
203
|
-
mitigation: [
|
|
204
|
-
'Break into smaller deployments',
|
|
205
|
-
'Increase review rigor',
|
|
206
|
-
'Add monitoring for changed components'
|
|
207
|
-
],
|
|
208
|
-
confidence: 0.82
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
if (complexity > 20) {
|
|
212
|
-
factors.push({
|
|
213
|
-
id: 'process-high-complexity-changes',
|
|
214
|
-
type: 'process',
|
|
215
|
-
severity: 'high',
|
|
216
|
-
probability: 0.6,
|
|
217
|
-
impact: 'Complex changes require additional validation',
|
|
218
|
-
indicators: [`Change complexity: ${complexity}`],
|
|
219
|
-
mitigation: [
|
|
220
|
-
'Conduct peer review',
|
|
221
|
-
'Add integration tests',
|
|
222
|
-
'Perform manual QA testing'
|
|
223
|
-
],
|
|
224
|
-
confidence: 0.78
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
// Historical risk
|
|
229
|
-
if (args.historicalData) {
|
|
230
|
-
if (args.historicalData.rollbackRate > 0.1) {
|
|
231
|
-
factors.push({
|
|
232
|
-
id: 'process-high-rollback-rate',
|
|
233
|
-
type: 'process',
|
|
234
|
-
severity: 'high',
|
|
235
|
-
probability: 0.7,
|
|
236
|
-
impact: 'Historical rollback rate indicates process issues',
|
|
237
|
-
indicators: [`Rollback rate: ${(args.historicalData.rollbackRate * 100).toFixed(1)}%`],
|
|
238
|
-
mitigation: [
|
|
239
|
-
'Review deployment process',
|
|
240
|
-
'Enhance testing strategy',
|
|
241
|
-
'Implement staged rollouts'
|
|
242
|
-
],
|
|
243
|
-
confidence: 0.85
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
return factors;
|
|
248
|
-
}
|
|
249
|
-
assessDeploymentRisks(args) {
|
|
250
|
-
const factors = [];
|
|
251
|
-
// Production deployment risk
|
|
252
|
-
if (args.context.environment === 'production') {
|
|
253
|
-
const baseProbability = 0.3;
|
|
254
|
-
let severity = 'medium';
|
|
255
|
-
if (args.context.criticality === 'critical') {
|
|
256
|
-
severity = 'critical';
|
|
257
|
-
}
|
|
258
|
-
else if (args.context.criticality === 'high') {
|
|
259
|
-
severity = 'high';
|
|
260
|
-
}
|
|
261
|
-
factors.push({
|
|
262
|
-
id: 'deploy-production',
|
|
263
|
-
type: 'deployment',
|
|
264
|
-
severity,
|
|
265
|
-
probability: baseProbability,
|
|
266
|
-
impact: 'Production deployment carries inherent risk',
|
|
267
|
-
indicators: [
|
|
268
|
-
`Environment: ${args.context.environment}`,
|
|
269
|
-
`Criticality: ${args.context.criticality || 'medium'}`
|
|
270
|
-
],
|
|
271
|
-
mitigation: [
|
|
272
|
-
'Implement canary deployment',
|
|
273
|
-
'Prepare rollback plan',
|
|
274
|
-
'Enable feature flags',
|
|
275
|
-
'Monitor key metrics closely'
|
|
276
|
-
],
|
|
277
|
-
confidence: 0.95
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
// Test failure risk
|
|
281
|
-
const failureRate = args.metrics.testResults.failed / args.metrics.testResults.total;
|
|
282
|
-
if (failureRate > 0.05) {
|
|
283
|
-
factors.push({
|
|
284
|
-
id: 'deploy-test-failures',
|
|
285
|
-
type: 'deployment',
|
|
286
|
-
severity: 'high',
|
|
287
|
-
probability: 0.8,
|
|
288
|
-
impact: 'Test failures indicate potential defects in deployment',
|
|
289
|
-
indicators: [
|
|
290
|
-
`${args.metrics.testResults.failed} tests failing`,
|
|
291
|
-
`Failure rate: ${(failureRate * 100).toFixed(1)}%`
|
|
292
|
-
],
|
|
293
|
-
mitigation: [
|
|
294
|
-
'Fix failing tests before deployment',
|
|
295
|
-
'Investigate root causes',
|
|
296
|
-
'Block deployment until resolved'
|
|
297
|
-
],
|
|
298
|
-
confidence: 0.92
|
|
299
|
-
});
|
|
300
|
-
}
|
|
301
|
-
return factors;
|
|
302
|
-
}
|
|
303
|
-
assessSecurityRisks(args) {
|
|
304
|
-
const factors = [];
|
|
305
|
-
// Critical vulnerabilities
|
|
306
|
-
if (args.metrics.security.critical > 0) {
|
|
307
|
-
factors.push({
|
|
308
|
-
id: 'security-critical-vulns',
|
|
309
|
-
type: 'security',
|
|
310
|
-
severity: 'critical',
|
|
311
|
-
probability: 0.9,
|
|
312
|
-
impact: 'Critical security vulnerabilities pose severe risk',
|
|
313
|
-
indicators: [`${args.metrics.security.critical} critical vulnerabilities`],
|
|
314
|
-
mitigation: [
|
|
315
|
-
'Address critical vulnerabilities immediately',
|
|
316
|
-
'Block deployment until resolved',
|
|
317
|
-
'Conduct security review',
|
|
318
|
-
'Update dependencies'
|
|
319
|
-
],
|
|
320
|
-
confidence: 0.98
|
|
321
|
-
});
|
|
322
|
-
}
|
|
323
|
-
// High vulnerabilities
|
|
324
|
-
if (args.metrics.security.high > 2) {
|
|
325
|
-
factors.push({
|
|
326
|
-
id: 'security-high-vulns',
|
|
327
|
-
type: 'security',
|
|
328
|
-
severity: 'high',
|
|
329
|
-
probability: 0.7,
|
|
330
|
-
impact: 'Multiple high-severity vulnerabilities increase attack surface',
|
|
331
|
-
indicators: [`${args.metrics.security.high} high-severity vulnerabilities`],
|
|
332
|
-
mitigation: [
|
|
333
|
-
'Prioritize high-severity vulnerability fixes',
|
|
334
|
-
'Review security practices',
|
|
335
|
-
'Update vulnerable dependencies'
|
|
336
|
-
],
|
|
337
|
-
confidence: 0.90
|
|
338
|
-
});
|
|
339
|
-
}
|
|
340
|
-
return factors;
|
|
341
|
-
}
|
|
342
|
-
assessPerformanceRisks(args) {
|
|
343
|
-
const factors = [];
|
|
344
|
-
// Performance regression risk
|
|
345
|
-
if (args.metrics.performance.regressions > 0) {
|
|
346
|
-
factors.push({
|
|
347
|
-
id: 'perf-regressions',
|
|
348
|
-
type: 'performance',
|
|
349
|
-
severity: 'medium',
|
|
350
|
-
probability: 0.6,
|
|
351
|
-
impact: 'Performance regressions affect user experience',
|
|
352
|
-
indicators: [`${args.metrics.performance.regressions} performance regressions detected`],
|
|
353
|
-
mitigation: [
|
|
354
|
-
'Profile and optimize affected code paths',
|
|
355
|
-
'Add performance monitoring',
|
|
356
|
-
'Set performance budgets'
|
|
357
|
-
],
|
|
358
|
-
confidence: 0.85
|
|
359
|
-
});
|
|
360
|
-
}
|
|
361
|
-
// High error rate risk
|
|
362
|
-
if (args.metrics.performance.errorRate > 0.05) {
|
|
363
|
-
factors.push({
|
|
364
|
-
id: 'perf-error-rate',
|
|
365
|
-
type: 'performance',
|
|
366
|
-
severity: 'high',
|
|
367
|
-
probability: 0.75,
|
|
368
|
-
impact: 'High error rate indicates stability issues',
|
|
369
|
-
indicators: [`Error rate: ${(args.metrics.performance.errorRate * 100).toFixed(2)}%`],
|
|
370
|
-
mitigation: [
|
|
371
|
-
'Investigate error patterns',
|
|
372
|
-
'Add error handling',
|
|
373
|
-
'Implement circuit breakers',
|
|
374
|
-
'Enhance monitoring'
|
|
375
|
-
],
|
|
376
|
-
confidence: 0.88
|
|
377
|
-
});
|
|
378
|
-
}
|
|
379
|
-
return factors;
|
|
380
|
-
}
|
|
381
|
-
calculateRiskMatrix(factors) {
|
|
382
|
-
const matrix = {
|
|
383
|
-
technical: 0,
|
|
384
|
-
process: 0,
|
|
385
|
-
deployment: 0,
|
|
386
|
-
security: 0,
|
|
387
|
-
performance: 0
|
|
388
|
-
};
|
|
389
|
-
for (const factor of factors) {
|
|
390
|
-
const riskValue = this.calculateFactorRiskValue(factor);
|
|
391
|
-
matrix[factor.type] += riskValue;
|
|
392
|
-
}
|
|
393
|
-
// Normalize to 0-100 scale
|
|
394
|
-
Object.keys(matrix).forEach(key => {
|
|
395
|
-
matrix[key] = Math.min(100, matrix[key]);
|
|
396
|
-
});
|
|
397
|
-
return matrix;
|
|
398
|
-
}
|
|
399
|
-
calculateFactorRiskValue(factor) {
|
|
400
|
-
const severityWeights = { critical: 40, high: 25, medium: 15, low: 5 };
|
|
401
|
-
const severityWeight = severityWeights[factor.severity];
|
|
402
|
-
return severityWeight * factor.probability * factor.confidence;
|
|
403
|
-
}
|
|
404
|
-
calculateOverallRiskScore(matrix) {
|
|
405
|
-
return Math.round(matrix.technical * this.riskWeights.technical +
|
|
406
|
-
matrix.process * this.riskWeights.process +
|
|
407
|
-
matrix.deployment * this.riskWeights.deployment +
|
|
408
|
-
matrix.security * this.riskWeights.security +
|
|
409
|
-
matrix.performance * this.riskWeights.performance);
|
|
410
|
-
}
|
|
411
|
-
determineRiskLevel(score) {
|
|
412
|
-
if (score >= 75)
|
|
413
|
-
return 'critical';
|
|
414
|
-
if (score >= 50)
|
|
415
|
-
return 'high';
|
|
416
|
-
if (score >= 25)
|
|
417
|
-
return 'medium';
|
|
418
|
-
return 'low';
|
|
419
|
-
}
|
|
420
|
-
calculateConfidence(args) {
|
|
421
|
-
let confidence = 1.0;
|
|
422
|
-
// Reduce confidence if data is incomplete
|
|
423
|
-
if (!args.historicalData)
|
|
424
|
-
confidence -= 0.1;
|
|
425
|
-
if (!args.context.changeSet)
|
|
426
|
-
confidence -= 0.1;
|
|
427
|
-
if (!args.metrics.coverage.delta)
|
|
428
|
-
confidence -= 0.05;
|
|
429
|
-
return Math.max(0.5, confidence);
|
|
430
|
-
}
|
|
431
|
-
generateRecommendations(factors, overallRisk) {
|
|
432
|
-
const recommendations = [];
|
|
433
|
-
// Critical and high-severity factors get immediate priority
|
|
434
|
-
const criticalFactors = factors.filter(f => f.severity === 'critical');
|
|
435
|
-
const highFactors = factors.filter(f => f.severity === 'high');
|
|
436
|
-
for (const factor of criticalFactors) {
|
|
437
|
-
for (const mitigation of factor.mitigation.slice(0, 2)) {
|
|
438
|
-
recommendations.push({
|
|
439
|
-
priority: 'immediate',
|
|
440
|
-
action: mitigation,
|
|
441
|
-
rationale: `Address critical risk: ${factor.impact}`
|
|
442
|
-
});
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
for (const factor of highFactors) {
|
|
446
|
-
for (const mitigation of factor.mitigation.slice(0, 1)) {
|
|
447
|
-
recommendations.push({
|
|
448
|
-
priority: 'high',
|
|
449
|
-
action: mitigation,
|
|
450
|
-
rationale: `Mitigate high-severity risk: ${factor.impact}`
|
|
451
|
-
});
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
// Overall risk-based recommendations
|
|
455
|
-
if (overallRisk === 'critical') {
|
|
456
|
-
recommendations.push({
|
|
457
|
-
priority: 'immediate',
|
|
458
|
-
action: 'Block deployment until critical risks are mitigated',
|
|
459
|
-
rationale: 'Overall risk level is critical'
|
|
460
|
-
});
|
|
461
|
-
}
|
|
462
|
-
else if (overallRisk === 'high') {
|
|
463
|
-
recommendations.push({
|
|
464
|
-
priority: 'high',
|
|
465
|
-
action: 'Implement staged rollout with close monitoring',
|
|
466
|
-
rationale: 'Overall risk level is high'
|
|
467
|
-
});
|
|
468
|
-
}
|
|
469
|
-
return recommendations;
|
|
470
|
-
}
|
|
471
|
-
async generateAIInsights(args, factors, riskScore) {
|
|
472
|
-
// Simulate AI-powered psycho-symbolic reasoning
|
|
473
|
-
const reasoning = this.simulateAIReasoning(args, factors, riskScore);
|
|
474
|
-
const predictions = this.generatePredictions(args, factors);
|
|
475
|
-
const alternativeScenarios = this.generateAlternativeScenarios(args, factors);
|
|
476
|
-
return {
|
|
477
|
-
reasoning,
|
|
478
|
-
predictions,
|
|
479
|
-
alternativeScenarios
|
|
480
|
-
};
|
|
481
|
-
}
|
|
482
|
-
simulateAIReasoning(args, factors, riskScore) {
|
|
483
|
-
const criticalFactors = factors.filter(f => f.severity === 'critical');
|
|
484
|
-
const securityFactors = factors.filter(f => f.type === 'security');
|
|
485
|
-
let reasoning = `Risk assessment analysis for ${args.context.projectId}: `;
|
|
486
|
-
if (criticalFactors.length > 0) {
|
|
487
|
-
reasoning += `Identified ${criticalFactors.length} critical risk factor(s) requiring immediate attention. `;
|
|
488
|
-
}
|
|
489
|
-
if (securityFactors.length > 0) {
|
|
490
|
-
reasoning += `Security concerns present with ${securityFactors.length} identified risk(s). `;
|
|
491
|
-
}
|
|
492
|
-
if (args.context.environment === 'production' && riskScore > 50) {
|
|
493
|
-
reasoning += `Production deployment with elevated risk score (${riskScore}) suggests additional validation is warranted. `;
|
|
494
|
-
}
|
|
495
|
-
reasoning += `Overall confidence in assessment: ${(args.historicalData ? 0.9 : 0.7).toFixed(2)}`;
|
|
496
|
-
return reasoning;
|
|
497
|
-
}
|
|
498
|
-
generatePredictions(args, factors) {
|
|
499
|
-
const predictions = [];
|
|
500
|
-
const criticalCount = factors.filter(f => f.severity === 'critical').length;
|
|
501
|
-
if (criticalCount > 0) {
|
|
502
|
-
predictions.push(`${criticalCount} critical issue(s) likely to cause deployment failure if unaddressed`);
|
|
503
|
-
}
|
|
504
|
-
const failureRate = args.metrics.testResults.failed / args.metrics.testResults.total;
|
|
505
|
-
if (failureRate > 0.1) {
|
|
506
|
-
predictions.push(`High test failure rate (${(failureRate * 100).toFixed(1)}%) predicts elevated defect probability`);
|
|
507
|
-
}
|
|
508
|
-
if (args.metrics.security.critical > 0) {
|
|
509
|
-
predictions.push('Security vulnerabilities present exploitation risk in production environment');
|
|
510
|
-
}
|
|
511
|
-
return predictions;
|
|
512
|
-
}
|
|
513
|
-
generateAlternativeScenarios(args, factors) {
|
|
514
|
-
return [
|
|
515
|
-
'Scenario A: Address critical factors first, deploy with monitoring - 70% success probability',
|
|
516
|
-
'Scenario B: Full mitigation of all identified risks before deployment - 95% success probability',
|
|
517
|
-
'Scenario C: Deploy to staging first for validation - 85% success probability with delayed timeline'
|
|
518
|
-
];
|
|
519
|
-
}
|
|
520
|
-
}
|
|
521
|
-
exports.QualityRiskAssessHandler = QualityRiskAssessHandler;
|
|
522
|
-
//# sourceMappingURL=quality-risk-assess.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"quality-risk-assess.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/quality/quality-risk-assess.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Quality Validate Metrics Handler
|
|
3
|
-
*
|
|
4
|
-
* Validates quality metrics against configurable thresholds.
|
|
5
|
-
* Provides detailed pass/fail analysis with recommendations.
|
|
6
|
-
*
|
|
7
|
-
* @version 1.0.0
|
|
8
|
-
* @author Agentic QE Team - Agent 2
|
|
9
|
-
*/
|
|
10
|
-
import { BaseHandler, HandlerResponse } from '../base-handler.js';
|
|
11
|
-
import { HookExecutor } from '../../services/HookExecutor.js';
|
|
12
|
-
export interface QualityMetricsThresholds {
|
|
13
|
-
coverage?: {
|
|
14
|
-
line?: number;
|
|
15
|
-
branch?: number;
|
|
16
|
-
function?: number;
|
|
17
|
-
statement?: number;
|
|
18
|
-
};
|
|
19
|
-
testResults?: {
|
|
20
|
-
minSuccessRate?: number;
|
|
21
|
-
maxFailureRate?: number;
|
|
22
|
-
maxSkippedRate?: number;
|
|
23
|
-
};
|
|
24
|
-
security?: {
|
|
25
|
-
maxCritical?: number;
|
|
26
|
-
maxHigh?: number;
|
|
27
|
-
maxMedium?: number;
|
|
28
|
-
maxTotal?: number;
|
|
29
|
-
};
|
|
30
|
-
performance?: {
|
|
31
|
-
maxResponseTime?: number;
|
|
32
|
-
minThroughput?: number;
|
|
33
|
-
maxErrorRate?: number;
|
|
34
|
-
};
|
|
35
|
-
codeQuality?: {
|
|
36
|
-
maxComplexity?: number;
|
|
37
|
-
minMaintainability?: number;
|
|
38
|
-
maxDuplication?: number;
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
export interface MetricValidation {
|
|
42
|
-
name: string;
|
|
43
|
-
category: string;
|
|
44
|
-
value: number;
|
|
45
|
-
threshold: number;
|
|
46
|
-
passed: boolean;
|
|
47
|
-
deviation: number;
|
|
48
|
-
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
49
|
-
message: string;
|
|
50
|
-
}
|
|
51
|
-
export interface QualityValidateMetricsArgs {
|
|
52
|
-
metrics: {
|
|
53
|
-
coverage: {
|
|
54
|
-
line: number;
|
|
55
|
-
branch: number;
|
|
56
|
-
function: number;
|
|
57
|
-
statement: number;
|
|
58
|
-
};
|
|
59
|
-
testResults: {
|
|
60
|
-
total: number;
|
|
61
|
-
passed: number;
|
|
62
|
-
failed: number;
|
|
63
|
-
skipped: number;
|
|
64
|
-
};
|
|
65
|
-
security: {
|
|
66
|
-
critical: number;
|
|
67
|
-
high: number;
|
|
68
|
-
medium: number;
|
|
69
|
-
low: number;
|
|
70
|
-
};
|
|
71
|
-
performance: {
|
|
72
|
-
averageResponseTime: number;
|
|
73
|
-
throughput: number;
|
|
74
|
-
errorRate: number;
|
|
75
|
-
};
|
|
76
|
-
codeQuality: {
|
|
77
|
-
complexity: number;
|
|
78
|
-
maintainability: number;
|
|
79
|
-
duplication: number;
|
|
80
|
-
};
|
|
81
|
-
};
|
|
82
|
-
thresholds?: QualityMetricsThresholds;
|
|
83
|
-
strictMode?: boolean;
|
|
84
|
-
}
|
|
85
|
-
export interface QualityValidateMetricsResult {
|
|
86
|
-
validationId: string;
|
|
87
|
-
passed: boolean;
|
|
88
|
-
overallScore: number;
|
|
89
|
-
validations: MetricValidation[];
|
|
90
|
-
summary: {
|
|
91
|
-
total: number;
|
|
92
|
-
passed: number;
|
|
93
|
-
failed: number;
|
|
94
|
-
critical: number;
|
|
95
|
-
warnings: number;
|
|
96
|
-
};
|
|
97
|
-
recommendations: string[];
|
|
98
|
-
timestamp: string;
|
|
99
|
-
}
|
|
100
|
-
export declare class QualityValidateMetricsHandler extends BaseHandler {
|
|
101
|
-
private hookExecutor;
|
|
102
|
-
private defaultThresholds;
|
|
103
|
-
constructor(hookExecutor: HookExecutor);
|
|
104
|
-
handle(args: QualityValidateMetricsArgs): Promise<HandlerResponse>;
|
|
105
|
-
private createDefaultThresholds;
|
|
106
|
-
private validateCoverage;
|
|
107
|
-
private validateTestResults;
|
|
108
|
-
private validateSecurity;
|
|
109
|
-
private validatePerformance;
|
|
110
|
-
private validateCodeQuality;
|
|
111
|
-
private createValidation;
|
|
112
|
-
private determineSeverity;
|
|
113
|
-
private calculateSummary;
|
|
114
|
-
private calculateOverallScore;
|
|
115
|
-
private generateRecommendations;
|
|
116
|
-
}
|
|
117
|
-
//# sourceMappingURL=quality-validate-metrics.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"quality-validate-metrics.d.ts","sourceRoot":"","sources":["../../../../src/mcp/handlers/quality/quality-validate-metrics.ts"],"names":[],"mappings":"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"}
|