agentic-qe 2.3.1 → 2.3.3
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 +53 -0
- package/README.md +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/index.js +0 -0
- package/dist/cli/init/database-init.js +5 -0
- package/dist/cli/init/database-init.js.map +1 -1
- 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/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/package.json +4 -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,408 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Quality Decision Make Handler
|
|
4
|
-
*
|
|
5
|
-
* Makes intelligent go/no-go deployment decisions based on quality metrics,
|
|
6
|
-
* risk assessment, and policy compliance.
|
|
7
|
-
*
|
|
8
|
-
* @version 1.0.0
|
|
9
|
-
* @author Agentic QE Team - Agent 2
|
|
10
|
-
*/
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.QualityDecisionMakeHandler = void 0;
|
|
13
|
-
const base_handler_js_1 = require("../base-handler.js");
|
|
14
|
-
class QualityDecisionMakeHandler extends base_handler_js_1.BaseHandler {
|
|
15
|
-
constructor(hookExecutor) {
|
|
16
|
-
super();
|
|
17
|
-
this.decisionWeights = {
|
|
18
|
-
qualityGate: 0.35,
|
|
19
|
-
riskLevel: 0.30,
|
|
20
|
-
policyCompliance: 0.25,
|
|
21
|
-
historicalPerformance: 0.10
|
|
22
|
-
};
|
|
23
|
-
this.hookExecutor = hookExecutor;
|
|
24
|
-
}
|
|
25
|
-
async handle(args) {
|
|
26
|
-
return this.safeHandle(async () => {
|
|
27
|
-
const requestId = this.generateRequestId();
|
|
28
|
-
const startTime = Date.now();
|
|
29
|
-
this.log('info', 'Making deployment decision', {
|
|
30
|
-
requestId,
|
|
31
|
-
projectId: args.context.projectId,
|
|
32
|
-
environment: args.context.environment
|
|
33
|
-
});
|
|
34
|
-
// Validate required parameters
|
|
35
|
-
this.validateRequired(args, ['context', 'inputs']);
|
|
36
|
-
// Execute pre-task hook
|
|
37
|
-
await this.hookExecutor.executePreTask({
|
|
38
|
-
description: `Making deployment decision for ${args.context.projectId}`,
|
|
39
|
-
agentType: 'quality-gate',
|
|
40
|
-
sessionId: requestId
|
|
41
|
-
});
|
|
42
|
-
// Make deployment decision
|
|
43
|
-
const { result: decision, executionTime } = await this.measureExecutionTime(async () => {
|
|
44
|
-
// Evaluate decision factors
|
|
45
|
-
const factors = await this.evaluateDecisionFactors(args);
|
|
46
|
-
// Calculate composite decision score
|
|
47
|
-
const compositeScore = this.calculateCompositeScore(factors);
|
|
48
|
-
// Apply decision logic
|
|
49
|
-
const preliminaryDecision = await this.applyDecisionLogic(factors, compositeScore, args);
|
|
50
|
-
// Check for overrides
|
|
51
|
-
const finalDecision = this.applyOverrides(preliminaryDecision, args.overrides);
|
|
52
|
-
// Determine if approval is required
|
|
53
|
-
const approvalRequired = this.requiresApproval(finalDecision, factors, args);
|
|
54
|
-
// Generate conditions for conditional go
|
|
55
|
-
const conditions = finalDecision === 'CONDITIONAL_GO'
|
|
56
|
-
? await this.generateConditions(factors, args)
|
|
57
|
-
: undefined;
|
|
58
|
-
// Generate reasoning
|
|
59
|
-
const reasoning = this.generateReasoning(finalDecision, factors, args);
|
|
60
|
-
// Generate recommendations
|
|
61
|
-
const recommendations = this.generateRecommendations(finalDecision, factors, args);
|
|
62
|
-
// Calculate confidence
|
|
63
|
-
const confidence = this.calculateDecisionConfidence(factors, args);
|
|
64
|
-
const result = {
|
|
65
|
-
decisionId: requestId,
|
|
66
|
-
decision: finalDecision,
|
|
67
|
-
confidence,
|
|
68
|
-
reasoning,
|
|
69
|
-
factors,
|
|
70
|
-
conditions,
|
|
71
|
-
recommendations,
|
|
72
|
-
approvalRequired,
|
|
73
|
-
metadata: {
|
|
74
|
-
decidedAt: new Date().toISOString(),
|
|
75
|
-
executionTime: Date.now() - startTime,
|
|
76
|
-
decisionModel: 'intelligent-decision-v1',
|
|
77
|
-
confidence
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
return result;
|
|
81
|
-
});
|
|
82
|
-
this.log('info', `Decision made in ${executionTime.toFixed(2)}ms`, {
|
|
83
|
-
decisionId: decision.decisionId,
|
|
84
|
-
decision: decision.decision,
|
|
85
|
-
confidence: decision.confidence
|
|
86
|
-
});
|
|
87
|
-
// Store decision in memory
|
|
88
|
-
await this.hookExecutor.executePostEdit({
|
|
89
|
-
file: `decision-${requestId}`,
|
|
90
|
-
memoryKey: `aqe/swarm/quality-mcp-tools/decisions/${requestId}`
|
|
91
|
-
});
|
|
92
|
-
// Execute post-task hook
|
|
93
|
-
await this.hookExecutor.executePostTask({
|
|
94
|
-
taskId: requestId,
|
|
95
|
-
agentType: 'quality-gate',
|
|
96
|
-
sessionId: requestId,
|
|
97
|
-
results: {
|
|
98
|
-
decisionId: decision.decisionId,
|
|
99
|
-
decision: decision.decision,
|
|
100
|
-
confidence: decision.confidence,
|
|
101
|
-
approvalRequired: decision.approvalRequired
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
return this.createSuccessResponse(decision, requestId);
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
async evaluateDecisionFactors(args) {
|
|
108
|
-
const factors = [];
|
|
109
|
-
// Quality gate factor
|
|
110
|
-
factors.push({
|
|
111
|
-
name: 'Quality Gate',
|
|
112
|
-
category: 'quality',
|
|
113
|
-
weight: this.decisionWeights.qualityGate,
|
|
114
|
-
value: args.inputs.qualityGateResult.score,
|
|
115
|
-
threshold: args.inputs.qualityGateResult.threshold,
|
|
116
|
-
passed: args.inputs.qualityGateResult.decision === 'PASS',
|
|
117
|
-
impact: args.inputs.qualityGateResult.decision === 'FAIL' ? 'blocking' : 'informational',
|
|
118
|
-
description: `Quality gate ${args.inputs.qualityGateResult.decision.toLowerCase()} with score ${args.inputs.qualityGateResult.score.toFixed(1)}`
|
|
119
|
-
});
|
|
120
|
-
// Risk assessment factor
|
|
121
|
-
const riskScore = 100 - args.inputs.riskAssessment.riskScore; // Invert for scoring
|
|
122
|
-
const riskPassed = ['low', 'medium'].includes(args.inputs.riskAssessment.overallRisk);
|
|
123
|
-
factors.push({
|
|
124
|
-
name: 'Risk Assessment',
|
|
125
|
-
category: 'risk',
|
|
126
|
-
weight: this.decisionWeights.riskLevel,
|
|
127
|
-
value: riskScore,
|
|
128
|
-
threshold: 50,
|
|
129
|
-
passed: riskPassed,
|
|
130
|
-
impact: args.inputs.riskAssessment.overallRisk === 'critical' ? 'blocking' : 'warning',
|
|
131
|
-
description: `Risk level: ${args.inputs.riskAssessment.overallRisk} (score: ${args.inputs.riskAssessment.riskScore})`
|
|
132
|
-
});
|
|
133
|
-
// Policy compliance factor
|
|
134
|
-
factors.push({
|
|
135
|
-
name: 'Policy Compliance',
|
|
136
|
-
category: 'compliance',
|
|
137
|
-
weight: this.decisionWeights.policyCompliance,
|
|
138
|
-
value: args.inputs.policyCompliance.compliant ? 100 : 0,
|
|
139
|
-
threshold: 100,
|
|
140
|
-
passed: args.inputs.policyCompliance.compliant,
|
|
141
|
-
impact: args.inputs.policyCompliance.criticalViolations > 0 ? 'blocking' : 'warning',
|
|
142
|
-
description: `${args.inputs.policyCompliance.compliant ? 'Compliant' : 'Non-compliant'} with ${args.inputs.policyCompliance.violations} violation(s)`
|
|
143
|
-
});
|
|
144
|
-
// Historical performance factor (if available)
|
|
145
|
-
if (args.inputs.historicalPerformance) {
|
|
146
|
-
const historicalScore = args.inputs.historicalPerformance.recentDeploymentSuccessRate * 100;
|
|
147
|
-
factors.push({
|
|
148
|
-
name: 'Historical Performance',
|
|
149
|
-
category: 'historical',
|
|
150
|
-
weight: this.decisionWeights.historicalPerformance,
|
|
151
|
-
value: historicalScore,
|
|
152
|
-
threshold: 85,
|
|
153
|
-
passed: historicalScore >= 85,
|
|
154
|
-
impact: 'informational',
|
|
155
|
-
description: `Recent deployment success rate: ${historicalScore.toFixed(1)}%`
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
// Environment-specific factors
|
|
159
|
-
if (args.context.environment === 'production') {
|
|
160
|
-
factors.push({
|
|
161
|
-
name: 'Production Readiness',
|
|
162
|
-
category: 'process',
|
|
163
|
-
weight: 0.15,
|
|
164
|
-
value: this.assessProductionReadiness(args),
|
|
165
|
-
threshold: 90,
|
|
166
|
-
passed: this.assessProductionReadiness(args) >= 90,
|
|
167
|
-
impact: 'blocking',
|
|
168
|
-
description: 'Production deployment requires higher quality standards'
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
// Urgency factor
|
|
172
|
-
if (args.context.urgency === 'critical' && args.context.deploymentType === 'hotfix') {
|
|
173
|
-
factors.push({
|
|
174
|
-
name: 'Critical Hotfix',
|
|
175
|
-
category: 'process',
|
|
176
|
-
weight: 0.10,
|
|
177
|
-
value: 80, // Slightly lower threshold for critical hotfixes
|
|
178
|
-
threshold: 70,
|
|
179
|
-
passed: true,
|
|
180
|
-
impact: 'informational',
|
|
181
|
-
description: 'Critical hotfix deployment with adjusted criteria'
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
return factors;
|
|
185
|
-
}
|
|
186
|
-
calculateCompositeScore(factors) {
|
|
187
|
-
let totalScore = 0;
|
|
188
|
-
let totalWeight = 0;
|
|
189
|
-
for (const factor of factors) {
|
|
190
|
-
totalScore += factor.value * factor.weight;
|
|
191
|
-
totalWeight += factor.weight;
|
|
192
|
-
}
|
|
193
|
-
return totalWeight > 0 ? totalScore / totalWeight : 0;
|
|
194
|
-
}
|
|
195
|
-
async applyDecisionLogic(factors, compositeScore, args) {
|
|
196
|
-
// Check for blocking factors
|
|
197
|
-
const blockingFactors = factors.filter(f => f.impact === 'blocking' && !f.passed);
|
|
198
|
-
if (blockingFactors.length > 0) {
|
|
199
|
-
return 'NO_GO';
|
|
200
|
-
}
|
|
201
|
-
// Check decision criteria if provided
|
|
202
|
-
const criteria = args.decisionCriteria;
|
|
203
|
-
if (criteria) {
|
|
204
|
-
if (criteria.minQualityScore && args.inputs.qualityGateResult.score < criteria.minQualityScore) {
|
|
205
|
-
return 'NO_GO';
|
|
206
|
-
}
|
|
207
|
-
if (criteria.requireCompliance && !args.inputs.policyCompliance.compliant) {
|
|
208
|
-
return 'NO_GO';
|
|
209
|
-
}
|
|
210
|
-
if (criteria.maxRiskLevel) {
|
|
211
|
-
const riskLevels = ['low', 'medium', 'high', 'critical'];
|
|
212
|
-
const currentLevel = riskLevels.indexOf(args.inputs.riskAssessment.overallRisk);
|
|
213
|
-
const maxLevel = riskLevels.indexOf(criteria.maxRiskLevel);
|
|
214
|
-
if (currentLevel > maxLevel) {
|
|
215
|
-
return 'NO_GO';
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
// Check for escalation conditions
|
|
220
|
-
if (args.inputs.qualityGateResult.decision === 'ESCALATE') {
|
|
221
|
-
return 'ESCALATE';
|
|
222
|
-
}
|
|
223
|
-
// Check for warning factors
|
|
224
|
-
const warningFactors = factors.filter(f => f.impact === 'warning' && !f.passed);
|
|
225
|
-
if (warningFactors.length > 0) {
|
|
226
|
-
// If composite score is still acceptable, allow conditional go
|
|
227
|
-
if (compositeScore >= 75) {
|
|
228
|
-
return 'CONDITIONAL_GO';
|
|
229
|
-
}
|
|
230
|
-
else {
|
|
231
|
-
return 'NO_GO';
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
// All checks passed
|
|
235
|
-
if (compositeScore >= 85) {
|
|
236
|
-
return 'GO';
|
|
237
|
-
}
|
|
238
|
-
else if (compositeScore >= 75) {
|
|
239
|
-
return 'CONDITIONAL_GO';
|
|
240
|
-
}
|
|
241
|
-
else {
|
|
242
|
-
return 'NO_GO';
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
applyOverrides(decision, overrides) {
|
|
246
|
-
if (!overrides || !overrides.allowPolicyOverride) {
|
|
247
|
-
return decision;
|
|
248
|
-
}
|
|
249
|
-
// Only allow override for CONDITIONAL_GO or NO_GO with proper authorization
|
|
250
|
-
if (decision === 'NO_GO' && overrides.approvedBy) {
|
|
251
|
-
this.log('warn', 'Policy override applied', {
|
|
252
|
-
reason: overrides.overrideReason,
|
|
253
|
-
approvedBy: overrides.approvedBy
|
|
254
|
-
});
|
|
255
|
-
return 'CONDITIONAL_GO';
|
|
256
|
-
}
|
|
257
|
-
return decision;
|
|
258
|
-
}
|
|
259
|
-
requiresApproval(decision, factors, args) {
|
|
260
|
-
// Always require approval for escalations
|
|
261
|
-
if (decision === 'ESCALATE') {
|
|
262
|
-
return true;
|
|
263
|
-
}
|
|
264
|
-
// Require approval for conditional go in production
|
|
265
|
-
if (decision === 'CONDITIONAL_GO' && args.context.environment === 'production') {
|
|
266
|
-
return true;
|
|
267
|
-
}
|
|
268
|
-
// Require approval if there are critical violations
|
|
269
|
-
if (args.inputs.policyCompliance.criticalViolations > 0) {
|
|
270
|
-
return true;
|
|
271
|
-
}
|
|
272
|
-
// Require approval for high risk deployments
|
|
273
|
-
if (args.inputs.riskAssessment.overallRisk === 'high') {
|
|
274
|
-
return true;
|
|
275
|
-
}
|
|
276
|
-
return false;
|
|
277
|
-
}
|
|
278
|
-
async generateConditions(factors, args) {
|
|
279
|
-
const conditions = [];
|
|
280
|
-
// Add conditions for failed warning factors
|
|
281
|
-
const warningFactors = factors.filter(f => f.impact === 'warning' && !f.passed);
|
|
282
|
-
for (const factor of warningFactors) {
|
|
283
|
-
conditions.push({
|
|
284
|
-
id: `cond-${factor.name.toLowerCase().replace(/\s+/g, '-')}`,
|
|
285
|
-
condition: `Monitor ${factor.name.toLowerCase()} closely during deployment`,
|
|
286
|
-
required: true,
|
|
287
|
-
verifiable: true,
|
|
288
|
-
verificationMethod: 'Real-time monitoring and alerting'
|
|
289
|
-
});
|
|
290
|
-
}
|
|
291
|
-
// Add environment-specific conditions
|
|
292
|
-
if (args.context.environment === 'production') {
|
|
293
|
-
conditions.push({
|
|
294
|
-
id: 'cond-rollback-plan',
|
|
295
|
-
condition: 'Rollback plan must be prepared and tested',
|
|
296
|
-
required: true,
|
|
297
|
-
verifiable: true,
|
|
298
|
-
verificationMethod: 'Document rollback procedure'
|
|
299
|
-
});
|
|
300
|
-
conditions.push({
|
|
301
|
-
id: 'cond-monitoring',
|
|
302
|
-
condition: 'Enhanced monitoring must be active during deployment',
|
|
303
|
-
required: true,
|
|
304
|
-
verifiable: true,
|
|
305
|
-
verificationMethod: 'Confirm monitoring dashboards are operational'
|
|
306
|
-
});
|
|
307
|
-
}
|
|
308
|
-
// Add risk-specific conditions
|
|
309
|
-
if (args.inputs.riskAssessment.overallRisk === 'medium' || args.inputs.riskAssessment.overallRisk === 'high') {
|
|
310
|
-
conditions.push({
|
|
311
|
-
id: 'cond-staged-rollout',
|
|
312
|
-
condition: 'Deploy using staged rollout (canary or blue-green)',
|
|
313
|
-
required: true,
|
|
314
|
-
verifiable: true,
|
|
315
|
-
verificationMethod: 'Verify deployment strategy configuration'
|
|
316
|
-
});
|
|
317
|
-
}
|
|
318
|
-
return conditions;
|
|
319
|
-
}
|
|
320
|
-
generateReasoning(decision, factors, args) {
|
|
321
|
-
const passedFactors = factors.filter(f => f.passed);
|
|
322
|
-
const failedFactors = factors.filter(f => !f.passed);
|
|
323
|
-
let reasoning = `Deployment decision: ${decision}. `;
|
|
324
|
-
reasoning += `${passedFactors.length} of ${factors.length} factors passed. `;
|
|
325
|
-
if (decision === 'GO') {
|
|
326
|
-
reasoning += 'All quality criteria met with acceptable risk levels. Deployment approved without conditions.';
|
|
327
|
-
}
|
|
328
|
-
else if (decision === 'CONDITIONAL_GO') {
|
|
329
|
-
reasoning += `Some concerns identified (${failedFactors.map(f => f.name).join(', ')}), but overall quality acceptable. `;
|
|
330
|
-
reasoning += 'Deployment approved with monitoring conditions.';
|
|
331
|
-
}
|
|
332
|
-
else if (decision === 'NO_GO') {
|
|
333
|
-
const blockingFactors = failedFactors.filter(f => f.impact === 'blocking');
|
|
334
|
-
reasoning += `Blocking issues prevent deployment: ${blockingFactors.map(f => f.name).join(', ')}. `;
|
|
335
|
-
reasoning += 'Address these issues before retrying deployment.';
|
|
336
|
-
}
|
|
337
|
-
else if (decision === 'ESCALATE') {
|
|
338
|
-
reasoning += 'Complex quality state requires human judgment. Manual review and approval required.';
|
|
339
|
-
}
|
|
340
|
-
return reasoning;
|
|
341
|
-
}
|
|
342
|
-
generateRecommendations(decision, factors, args) {
|
|
343
|
-
const recommendations = [];
|
|
344
|
-
if (decision === 'GO') {
|
|
345
|
-
recommendations.push('Proceed with deployment');
|
|
346
|
-
recommendations.push('Monitor key metrics during rollout');
|
|
347
|
-
}
|
|
348
|
-
else if (decision === 'CONDITIONAL_GO') {
|
|
349
|
-
recommendations.push('Proceed with caution and enhanced monitoring');
|
|
350
|
-
recommendations.push('Prepare rollback plan');
|
|
351
|
-
recommendations.push('Consider staged rollout approach');
|
|
352
|
-
}
|
|
353
|
-
else if (decision === 'NO_GO') {
|
|
354
|
-
const failedFactors = factors.filter(f => !f.passed);
|
|
355
|
-
for (const factor of failedFactors) {
|
|
356
|
-
recommendations.push(`Address ${factor.name.toLowerCase()}: ${factor.description}`);
|
|
357
|
-
}
|
|
358
|
-
recommendations.push('Rerun quality gates after fixes');
|
|
359
|
-
}
|
|
360
|
-
else if (decision === 'ESCALATE') {
|
|
361
|
-
recommendations.push('Request manual review from deployment authority');
|
|
362
|
-
recommendations.push('Provide additional context about the deployment');
|
|
363
|
-
recommendations.push('Consider splitting deployment into smaller changes');
|
|
364
|
-
}
|
|
365
|
-
return recommendations;
|
|
366
|
-
}
|
|
367
|
-
calculateDecisionConfidence(factors, args) {
|
|
368
|
-
let confidence = 1.0;
|
|
369
|
-
// Reduce confidence if factors are close to thresholds
|
|
370
|
-
for (const factor of factors) {
|
|
371
|
-
const distance = Math.abs(factor.value - factor.threshold) / factor.threshold;
|
|
372
|
-
if (distance < 0.1) {
|
|
373
|
-
confidence -= 0.05; // Close to threshold reduces confidence
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
// Reduce confidence if no historical data
|
|
377
|
-
if (!args.inputs.historicalPerformance) {
|
|
378
|
-
confidence -= 0.1;
|
|
379
|
-
}
|
|
380
|
-
// Reduce confidence for hotfixes
|
|
381
|
-
if (args.context.deploymentType === 'hotfix') {
|
|
382
|
-
confidence -= 0.05;
|
|
383
|
-
}
|
|
384
|
-
return Math.max(0.5, Math.min(1.0, confidence));
|
|
385
|
-
}
|
|
386
|
-
assessProductionReadiness(args) {
|
|
387
|
-
let readiness = 100;
|
|
388
|
-
// Deduct points for various issues
|
|
389
|
-
if (args.inputs.qualityGateResult.decision === 'FAIL') {
|
|
390
|
-
readiness -= 30;
|
|
391
|
-
}
|
|
392
|
-
else if (args.inputs.qualityGateResult.decision === 'ESCALATE') {
|
|
393
|
-
readiness -= 15;
|
|
394
|
-
}
|
|
395
|
-
if (!args.inputs.policyCompliance.compliant) {
|
|
396
|
-
readiness -= 20;
|
|
397
|
-
}
|
|
398
|
-
if (args.inputs.riskAssessment.overallRisk === 'high') {
|
|
399
|
-
readiness -= 15;
|
|
400
|
-
}
|
|
401
|
-
else if (args.inputs.riskAssessment.overallRisk === 'critical') {
|
|
402
|
-
readiness -= 40;
|
|
403
|
-
}
|
|
404
|
-
return Math.max(0, readiness);
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
exports.QualityDecisionMakeHandler = QualityDecisionMakeHandler;
|
|
408
|
-
//# sourceMappingURL=quality-decision-make.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"quality-decision-make.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/quality/quality-decision-make.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Quality Gate Execute Handler
|
|
3
|
-
*
|
|
4
|
-
* Executes quality gates with policy enforcement and decision making.
|
|
5
|
-
* Integrates with QualityGateAgent for intelligent evaluation.
|
|
6
|
-
*
|
|
7
|
-
* @version 1.0.0
|
|
8
|
-
* @author Agentic QE Team - Agent 2
|
|
9
|
-
*/
|
|
10
|
-
import { BaseHandler, HandlerResponse } from '../base-handler.js';
|
|
11
|
-
import { AgentRegistry } from '../../services/AgentRegistry.js';
|
|
12
|
-
import { HookExecutor } from '../../services/HookExecutor.js';
|
|
13
|
-
export interface QualityGatePolicy {
|
|
14
|
-
name: string;
|
|
15
|
-
version: string;
|
|
16
|
-
thresholds: {
|
|
17
|
-
coverage: number;
|
|
18
|
-
testSuccess: number;
|
|
19
|
-
securityVulns: number;
|
|
20
|
-
performanceRegression: number;
|
|
21
|
-
codeQuality: number;
|
|
22
|
-
};
|
|
23
|
-
rules: PolicyRule[];
|
|
24
|
-
enforcement: 'strict' | 'advisory' | 'blocking';
|
|
25
|
-
exceptions?: PolicyException[];
|
|
26
|
-
}
|
|
27
|
-
export interface PolicyRule {
|
|
28
|
-
id: string;
|
|
29
|
-
name: string;
|
|
30
|
-
condition: string;
|
|
31
|
-
action: 'block' | 'warn' | 'notify';
|
|
32
|
-
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
33
|
-
description: string;
|
|
34
|
-
}
|
|
35
|
-
export interface PolicyException {
|
|
36
|
-
ruleId: string;
|
|
37
|
-
reason: string;
|
|
38
|
-
approvedBy: string;
|
|
39
|
-
expiresAt?: string;
|
|
40
|
-
}
|
|
41
|
-
export interface QualityGateExecuteArgs {
|
|
42
|
-
projectId: string;
|
|
43
|
-
buildId: string;
|
|
44
|
-
environment: 'development' | 'staging' | 'production';
|
|
45
|
-
policy?: QualityGatePolicy;
|
|
46
|
-
metrics: {
|
|
47
|
-
coverage: {
|
|
48
|
-
line: number;
|
|
49
|
-
branch: number;
|
|
50
|
-
function: number;
|
|
51
|
-
statement: number;
|
|
52
|
-
};
|
|
53
|
-
testResults: {
|
|
54
|
-
total: number;
|
|
55
|
-
passed: number;
|
|
56
|
-
failed: number;
|
|
57
|
-
skipped: number;
|
|
58
|
-
};
|
|
59
|
-
security: {
|
|
60
|
-
vulnerabilities: number;
|
|
61
|
-
critical: number;
|
|
62
|
-
high: number;
|
|
63
|
-
medium: number;
|
|
64
|
-
low: number;
|
|
65
|
-
};
|
|
66
|
-
performance: {
|
|
67
|
-
averageResponseTime: number;
|
|
68
|
-
throughput: number;
|
|
69
|
-
errorRate: number;
|
|
70
|
-
};
|
|
71
|
-
codeQuality: {
|
|
72
|
-
complexity: number;
|
|
73
|
-
maintainability: number;
|
|
74
|
-
duplication: number;
|
|
75
|
-
};
|
|
76
|
-
};
|
|
77
|
-
context?: {
|
|
78
|
-
deploymentTarget?: string;
|
|
79
|
-
criticality?: 'low' | 'medium' | 'high' | 'critical';
|
|
80
|
-
changes?: Array<{
|
|
81
|
-
file: string;
|
|
82
|
-
type: 'added' | 'modified' | 'deleted';
|
|
83
|
-
complexity: number;
|
|
84
|
-
}>;
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
export interface QualityGateExecuteResult {
|
|
88
|
-
executionId: string;
|
|
89
|
-
decision: 'PASS' | 'FAIL' | 'ESCALATE';
|
|
90
|
-
score: number;
|
|
91
|
-
threshold: number;
|
|
92
|
-
policyCompliance: {
|
|
93
|
-
compliant: boolean;
|
|
94
|
-
violations: PolicyViolation[];
|
|
95
|
-
warnings: PolicyWarning[];
|
|
96
|
-
};
|
|
97
|
-
evaluations: {
|
|
98
|
-
coverage: EvaluationResult;
|
|
99
|
-
testSuccess: EvaluationResult;
|
|
100
|
-
security: EvaluationResult;
|
|
101
|
-
performance: EvaluationResult;
|
|
102
|
-
codeQuality: EvaluationResult;
|
|
103
|
-
};
|
|
104
|
-
riskAssessment: {
|
|
105
|
-
level: 'low' | 'medium' | 'high' | 'critical';
|
|
106
|
-
factors: string[];
|
|
107
|
-
mitigation: string[];
|
|
108
|
-
};
|
|
109
|
-
recommendations: string[];
|
|
110
|
-
metadata: {
|
|
111
|
-
executedAt: string;
|
|
112
|
-
executionTime: number;
|
|
113
|
-
policyVersion: string;
|
|
114
|
-
agentId: string;
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
export interface PolicyViolation {
|
|
118
|
-
ruleId: string;
|
|
119
|
-
ruleName: string;
|
|
120
|
-
severity: string;
|
|
121
|
-
message: string;
|
|
122
|
-
actualValue: number;
|
|
123
|
-
expectedValue: number;
|
|
124
|
-
}
|
|
125
|
-
export interface PolicyWarning {
|
|
126
|
-
ruleId: string;
|
|
127
|
-
message: string;
|
|
128
|
-
recommendation: string;
|
|
129
|
-
}
|
|
130
|
-
export interface EvaluationResult {
|
|
131
|
-
passed: boolean;
|
|
132
|
-
value: number;
|
|
133
|
-
threshold: number;
|
|
134
|
-
score: number;
|
|
135
|
-
status: 'excellent' | 'good' | 'fair' | 'poor' | 'critical';
|
|
136
|
-
}
|
|
137
|
-
export declare class QualityGateExecuteHandler extends BaseHandler {
|
|
138
|
-
private registry;
|
|
139
|
-
private hookExecutor;
|
|
140
|
-
private defaultPolicy;
|
|
141
|
-
constructor(registry: AgentRegistry, hookExecutor: HookExecutor);
|
|
142
|
-
handle(args: QualityGateExecuteArgs): Promise<HandlerResponse>;
|
|
143
|
-
private createDefaultPolicy;
|
|
144
|
-
private validatePolicyCompliance;
|
|
145
|
-
private evaluateRule;
|
|
146
|
-
private performEvaluations;
|
|
147
|
-
private evaluateCoverage;
|
|
148
|
-
private evaluateTestSuccess;
|
|
149
|
-
private evaluateSecurity;
|
|
150
|
-
private evaluatePerformance;
|
|
151
|
-
private evaluateCodeQuality;
|
|
152
|
-
private determineStatus;
|
|
153
|
-
private assessRisk;
|
|
154
|
-
private generateMitigationStrategies;
|
|
155
|
-
private makeDecision;
|
|
156
|
-
private generateRecommendations;
|
|
157
|
-
private calculateCompositeScore;
|
|
158
|
-
private determineThreshold;
|
|
159
|
-
}
|
|
160
|
-
//# sourceMappingURL=quality-gate-execute.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"quality-gate-execute.d.ts","sourceRoot":"","sources":["../../../../src/mcp/handlers/quality/quality-gate-execute.ts"],"names":[],"mappings":"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"}
|