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,455 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Quality Policy Check Handler
|
|
4
|
-
*
|
|
5
|
-
* Validates compliance with quality policies and regulations.
|
|
6
|
-
* Supports custom policies, industry standards, and regulatory requirements.
|
|
7
|
-
*
|
|
8
|
-
* @version 1.0.0
|
|
9
|
-
* @author Agentic QE Team - Agent 2
|
|
10
|
-
*/
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.QualityPolicyCheckHandler = void 0;
|
|
13
|
-
const base_handler_js_1 = require("../base-handler.js");
|
|
14
|
-
class QualityPolicyCheckHandler extends base_handler_js_1.BaseHandler {
|
|
15
|
-
constructor(hookExecutor) {
|
|
16
|
-
super();
|
|
17
|
-
this.hookExecutor = hookExecutor;
|
|
18
|
-
this.builtInPolicies = this.initializeBuiltInPolicies();
|
|
19
|
-
}
|
|
20
|
-
async handle(args) {
|
|
21
|
-
return this.safeHandle(async () => {
|
|
22
|
-
const requestId = this.generateRequestId();
|
|
23
|
-
const startTime = Date.now();
|
|
24
|
-
this.log('info', 'Checking policy compliance', { requestId });
|
|
25
|
-
// Validate required parameters
|
|
26
|
-
this.validateRequired(args, ['metrics']);
|
|
27
|
-
// Get policy to check against
|
|
28
|
-
const policy = args.customPolicy ||
|
|
29
|
-
(args.policyId ? this.builtInPolicies.get(args.policyId) : undefined) ||
|
|
30
|
-
this.getDefaultPolicy();
|
|
31
|
-
if (!policy) {
|
|
32
|
-
throw new Error('No valid policy found for compliance check');
|
|
33
|
-
}
|
|
34
|
-
// Execute pre-task hook
|
|
35
|
-
await this.hookExecutor.executePreTask({
|
|
36
|
-
description: `Checking compliance with policy: ${policy.name}`,
|
|
37
|
-
agentType: 'quality-analyzer',
|
|
38
|
-
sessionId: requestId
|
|
39
|
-
});
|
|
40
|
-
// Perform policy check
|
|
41
|
-
const { result: checkResult, executionTime } = await this.measureExecutionTime(async () => {
|
|
42
|
-
// Evaluate each standard in the policy
|
|
43
|
-
const policyEvaluations = await this.evaluateStandards(policy, args.metrics);
|
|
44
|
-
// Identify violations and warnings
|
|
45
|
-
const { violations, warnings } = this.identifyIssues(policyEvaluations, policy);
|
|
46
|
-
// Apply exemptions if any
|
|
47
|
-
const exemptions = this.applyExemptions(violations);
|
|
48
|
-
// Calculate summary
|
|
49
|
-
const summary = this.calculateSummary(policyEvaluations, violations, exemptions);
|
|
50
|
-
// Determine overall compliance
|
|
51
|
-
const compliant = this.determineCompliance(violations, exemptions, policy);
|
|
52
|
-
// Calculate overall score
|
|
53
|
-
const overallScore = this.calculateOverallScore(policyEvaluations);
|
|
54
|
-
// Generate recommendations
|
|
55
|
-
const recommendations = this.generateRecommendations(violations, warnings, policy);
|
|
56
|
-
const result = {
|
|
57
|
-
checkId: requestId,
|
|
58
|
-
compliant,
|
|
59
|
-
overallScore,
|
|
60
|
-
policyEvaluations,
|
|
61
|
-
violations: violations.filter(v => !exemptions.some(e => e.requirementId === v.requirementId)),
|
|
62
|
-
warnings,
|
|
63
|
-
exemptions,
|
|
64
|
-
summary,
|
|
65
|
-
recommendations,
|
|
66
|
-
metadata: {
|
|
67
|
-
checkedAt: new Date().toISOString(),
|
|
68
|
-
executionTime: Date.now() - startTime,
|
|
69
|
-
policyVersion: policy.version
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
return result;
|
|
73
|
-
});
|
|
74
|
-
this.log('info', `Policy check completed in ${executionTime.toFixed(2)}ms`, {
|
|
75
|
-
checkId: checkResult.checkId,
|
|
76
|
-
compliant: checkResult.compliant,
|
|
77
|
-
score: checkResult.overallScore
|
|
78
|
-
});
|
|
79
|
-
// Store result in memory
|
|
80
|
-
await this.hookExecutor.executePostEdit({
|
|
81
|
-
file: `policy-check-${requestId}`,
|
|
82
|
-
memoryKey: `aqe/swarm/quality-mcp-tools/policy-checks/${requestId}`
|
|
83
|
-
});
|
|
84
|
-
// Execute post-task hook
|
|
85
|
-
await this.hookExecutor.executePostTask({
|
|
86
|
-
taskId: requestId,
|
|
87
|
-
agentType: 'quality-analyzer',
|
|
88
|
-
sessionId: requestId,
|
|
89
|
-
results: {
|
|
90
|
-
checkId: checkResult.checkId,
|
|
91
|
-
compliant: checkResult.compliant,
|
|
92
|
-
violations: checkResult.violations.length
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
return this.createSuccessResponse(checkResult, requestId);
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
initializeBuiltInPolicies() {
|
|
99
|
-
const policies = new Map();
|
|
100
|
-
// ISO 25010 Software Quality Policy
|
|
101
|
-
policies.set('iso-25010', {
|
|
102
|
-
id: 'iso-25010',
|
|
103
|
-
name: 'ISO/IEC 25010 Software Quality',
|
|
104
|
-
version: '1.0.0',
|
|
105
|
-
type: 'industry',
|
|
106
|
-
standards: [
|
|
107
|
-
{
|
|
108
|
-
id: 'functional-suitability',
|
|
109
|
-
name: 'Functional Suitability',
|
|
110
|
-
category: 'quality',
|
|
111
|
-
description: 'Degree to which a product provides functions that meet stated and implied needs',
|
|
112
|
-
requirements: [
|
|
113
|
-
{
|
|
114
|
-
id: 'fs-coverage',
|
|
115
|
-
description: 'Functional test coverage',
|
|
116
|
-
metric: 'testing.unitTestCoverage',
|
|
117
|
-
operator: 'gte',
|
|
118
|
-
threshold: 80,
|
|
119
|
-
critical: true,
|
|
120
|
-
rationale: 'Ensures adequate testing of functional requirements'
|
|
121
|
-
}
|
|
122
|
-
]
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
id: 'reliability',
|
|
126
|
-
name: 'Reliability',
|
|
127
|
-
category: 'quality',
|
|
128
|
-
description: 'Degree to which a system performs specified functions under specified conditions',
|
|
129
|
-
requirements: [
|
|
130
|
-
{
|
|
131
|
-
id: 'rel-maturity',
|
|
132
|
-
description: 'Code maintainability index',
|
|
133
|
-
metric: 'quality.maintainability',
|
|
134
|
-
operator: 'gte',
|
|
135
|
-
threshold: 70,
|
|
136
|
-
critical: false,
|
|
137
|
-
rationale: 'Indicates code maturity and stability'
|
|
138
|
-
}
|
|
139
|
-
]
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
id: 'security',
|
|
143
|
-
name: 'Security',
|
|
144
|
-
category: 'security',
|
|
145
|
-
description: 'Degree to which a product protects information and data',
|
|
146
|
-
requirements: [
|
|
147
|
-
{
|
|
148
|
-
id: 'sec-vulns',
|
|
149
|
-
description: 'No critical security vulnerabilities',
|
|
150
|
-
metric: 'security.vulnerabilities.critical',
|
|
151
|
-
operator: 'eq',
|
|
152
|
-
threshold: 0,
|
|
153
|
-
critical: true,
|
|
154
|
-
rationale: 'Critical vulnerabilities pose severe security risks'
|
|
155
|
-
}
|
|
156
|
-
]
|
|
157
|
-
}
|
|
158
|
-
],
|
|
159
|
-
enforcementLevel: 'mandatory',
|
|
160
|
-
scope: ['all'],
|
|
161
|
-
owner: 'Quality Assurance',
|
|
162
|
-
lastUpdated: new Date().toISOString()
|
|
163
|
-
});
|
|
164
|
-
// OWASP Security Policy
|
|
165
|
-
policies.set('owasp-security', {
|
|
166
|
-
id: 'owasp-security',
|
|
167
|
-
name: 'OWASP Top 10 Security Requirements',
|
|
168
|
-
version: '1.0.0',
|
|
169
|
-
type: 'industry',
|
|
170
|
-
standards: [
|
|
171
|
-
{
|
|
172
|
-
id: 'security-vulnerabilities',
|
|
173
|
-
name: 'Security Vulnerabilities',
|
|
174
|
-
category: 'security',
|
|
175
|
-
description: 'OWASP Top 10 vulnerability prevention',
|
|
176
|
-
requirements: [
|
|
177
|
-
{
|
|
178
|
-
id: 'owasp-critical',
|
|
179
|
-
description: 'Zero critical vulnerabilities',
|
|
180
|
-
metric: 'security.vulnerabilities.critical',
|
|
181
|
-
operator: 'eq',
|
|
182
|
-
threshold: 0,
|
|
183
|
-
critical: true,
|
|
184
|
-
rationale: 'OWASP critical vulnerabilities must be addressed'
|
|
185
|
-
},
|
|
186
|
-
{
|
|
187
|
-
id: 'owasp-high',
|
|
188
|
-
description: 'Maximum 2 high-severity vulnerabilities',
|
|
189
|
-
metric: 'security.vulnerabilities.high',
|
|
190
|
-
operator: 'lte',
|
|
191
|
-
threshold: 2,
|
|
192
|
-
critical: false,
|
|
193
|
-
rationale: 'Limit high-severity security issues'
|
|
194
|
-
},
|
|
195
|
-
{
|
|
196
|
-
id: 'owasp-compliance',
|
|
197
|
-
description: 'OWASP compliance score',
|
|
198
|
-
metric: 'security.complianceScore',
|
|
199
|
-
operator: 'gte',
|
|
200
|
-
threshold: 85,
|
|
201
|
-
critical: true,
|
|
202
|
-
rationale: 'Maintain high OWASP compliance score'
|
|
203
|
-
}
|
|
204
|
-
]
|
|
205
|
-
}
|
|
206
|
-
],
|
|
207
|
-
enforcementLevel: 'mandatory',
|
|
208
|
-
scope: ['all'],
|
|
209
|
-
owner: 'Security Team',
|
|
210
|
-
lastUpdated: new Date().toISOString()
|
|
211
|
-
});
|
|
212
|
-
return policies;
|
|
213
|
-
}
|
|
214
|
-
getDefaultPolicy() {
|
|
215
|
-
return {
|
|
216
|
-
id: 'default-policy',
|
|
217
|
-
name: 'Default Quality Policy',
|
|
218
|
-
version: '1.0.0',
|
|
219
|
-
type: 'organizational',
|
|
220
|
-
standards: [
|
|
221
|
-
{
|
|
222
|
-
id: 'basic-coverage',
|
|
223
|
-
name: 'Basic Test Coverage',
|
|
224
|
-
category: 'testing',
|
|
225
|
-
description: 'Minimum test coverage requirements',
|
|
226
|
-
requirements: [
|
|
227
|
-
{
|
|
228
|
-
id: 'line-coverage',
|
|
229
|
-
description: 'Line coverage minimum',
|
|
230
|
-
metric: 'coverage.line',
|
|
231
|
-
operator: 'gte',
|
|
232
|
-
threshold: 80,
|
|
233
|
-
critical: true,
|
|
234
|
-
rationale: 'Ensure adequate code coverage'
|
|
235
|
-
},
|
|
236
|
-
{
|
|
237
|
-
id: 'branch-coverage',
|
|
238
|
-
description: 'Branch coverage minimum',
|
|
239
|
-
metric: 'coverage.branch',
|
|
240
|
-
operator: 'gte',
|
|
241
|
-
threshold: 75,
|
|
242
|
-
critical: false,
|
|
243
|
-
rationale: 'Cover major code branches'
|
|
244
|
-
}
|
|
245
|
-
]
|
|
246
|
-
},
|
|
247
|
-
{
|
|
248
|
-
id: 'basic-quality',
|
|
249
|
-
name: 'Basic Code Quality',
|
|
250
|
-
category: 'quality',
|
|
251
|
-
description: 'Minimum code quality standards',
|
|
252
|
-
requirements: [
|
|
253
|
-
{
|
|
254
|
-
id: 'complexity',
|
|
255
|
-
description: 'Maximum cyclomatic complexity',
|
|
256
|
-
metric: 'quality.complexity',
|
|
257
|
-
operator: 'lte',
|
|
258
|
-
threshold: 15,
|
|
259
|
-
critical: false,
|
|
260
|
-
rationale: 'Maintain reasonable code complexity'
|
|
261
|
-
},
|
|
262
|
-
{
|
|
263
|
-
id: 'duplication',
|
|
264
|
-
description: 'Maximum code duplication',
|
|
265
|
-
metric: 'quality.duplication',
|
|
266
|
-
operator: 'lte',
|
|
267
|
-
threshold: 5,
|
|
268
|
-
critical: false,
|
|
269
|
-
rationale: 'Minimize code duplication'
|
|
270
|
-
}
|
|
271
|
-
]
|
|
272
|
-
}
|
|
273
|
-
],
|
|
274
|
-
enforcementLevel: 'recommended',
|
|
275
|
-
scope: ['all'],
|
|
276
|
-
owner: 'Engineering',
|
|
277
|
-
lastUpdated: new Date().toISOString()
|
|
278
|
-
};
|
|
279
|
-
}
|
|
280
|
-
async evaluateStandards(policy, metrics) {
|
|
281
|
-
const evaluations = [];
|
|
282
|
-
for (const standard of policy.standards) {
|
|
283
|
-
const requirementResults = [];
|
|
284
|
-
for (const requirement of standard.requirements) {
|
|
285
|
-
const result = this.evaluateRequirement(requirement, metrics);
|
|
286
|
-
requirementResults.push(result);
|
|
287
|
-
}
|
|
288
|
-
const satisfied = requirementResults.filter(r => r.satisfied).length;
|
|
289
|
-
const score = (satisfied / requirementResults.length) * 100;
|
|
290
|
-
const compliant = requirementResults.every(r => r.satisfied || !r.critical);
|
|
291
|
-
evaluations.push({
|
|
292
|
-
standardId: standard.id,
|
|
293
|
-
standardName: standard.name,
|
|
294
|
-
category: standard.category,
|
|
295
|
-
compliant,
|
|
296
|
-
score,
|
|
297
|
-
requirementResults
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
return evaluations;
|
|
301
|
-
}
|
|
302
|
-
evaluateRequirement(requirement, metrics) {
|
|
303
|
-
const actualValue = this.getMetricValue(requirement.metric, metrics);
|
|
304
|
-
const satisfied = this.checkRequirement(actualValue, requirement);
|
|
305
|
-
const deviation = this.calculateDeviation(actualValue, requirement);
|
|
306
|
-
return {
|
|
307
|
-
requirementId: requirement.id,
|
|
308
|
-
description: requirement.description,
|
|
309
|
-
satisfied,
|
|
310
|
-
actualValue,
|
|
311
|
-
expectedValue: requirement.threshold,
|
|
312
|
-
deviation,
|
|
313
|
-
critical: requirement.critical
|
|
314
|
-
};
|
|
315
|
-
}
|
|
316
|
-
getMetricValue(metricPath, metrics) {
|
|
317
|
-
const parts = metricPath.split('.');
|
|
318
|
-
let value = metrics;
|
|
319
|
-
for (const part of parts) {
|
|
320
|
-
value = value?.[part];
|
|
321
|
-
}
|
|
322
|
-
return typeof value === 'number' ? value : 0;
|
|
323
|
-
}
|
|
324
|
-
checkRequirement(value, requirement) {
|
|
325
|
-
const threshold = requirement.threshold;
|
|
326
|
-
switch (requirement.operator) {
|
|
327
|
-
case 'gte':
|
|
328
|
-
return value >= threshold;
|
|
329
|
-
case 'lte':
|
|
330
|
-
return value <= threshold;
|
|
331
|
-
case 'eq':
|
|
332
|
-
return value === threshold;
|
|
333
|
-
case 'ne':
|
|
334
|
-
return value !== threshold;
|
|
335
|
-
case 'between':
|
|
336
|
-
const [min, max] = threshold;
|
|
337
|
-
return value >= min && value <= max;
|
|
338
|
-
default:
|
|
339
|
-
return false;
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
calculateDeviation(value, requirement) {
|
|
343
|
-
if (Array.isArray(requirement.threshold)) {
|
|
344
|
-
const [min, max] = requirement.threshold;
|
|
345
|
-
if (value < min)
|
|
346
|
-
return ((min - value) / min) * 100;
|
|
347
|
-
if (value > max)
|
|
348
|
-
return ((value - max) / max) * 100;
|
|
349
|
-
return 0;
|
|
350
|
-
}
|
|
351
|
-
const threshold = requirement.threshold;
|
|
352
|
-
if (threshold === 0)
|
|
353
|
-
return 0;
|
|
354
|
-
return ((value - threshold) / threshold) * 100;
|
|
355
|
-
}
|
|
356
|
-
identifyIssues(evaluations, policy) {
|
|
357
|
-
const violations = [];
|
|
358
|
-
const warnings = [];
|
|
359
|
-
for (const evaluation of evaluations) {
|
|
360
|
-
const standard = policy.standards.find(s => s.id === evaluation.standardId);
|
|
361
|
-
if (!standard)
|
|
362
|
-
continue;
|
|
363
|
-
for (const result of evaluation.requirementResults) {
|
|
364
|
-
if (!result.satisfied) {
|
|
365
|
-
const requirement = standard.requirements.find(r => r.id === result.requirementId);
|
|
366
|
-
if (!requirement)
|
|
367
|
-
continue;
|
|
368
|
-
if (requirement.critical) {
|
|
369
|
-
violations.push({
|
|
370
|
-
violationId: `viol-${result.requirementId}`,
|
|
371
|
-
standardId: standard.id,
|
|
372
|
-
requirementId: result.requirementId,
|
|
373
|
-
severity: 'critical',
|
|
374
|
-
description: requirement.description,
|
|
375
|
-
actualValue: result.actualValue,
|
|
376
|
-
expectedValue: result.expectedValue,
|
|
377
|
-
impact: `Critical requirement not met: ${requirement.rationale}`,
|
|
378
|
-
remediation: [
|
|
379
|
-
`Adjust ${requirement.metric} to meet threshold of ${requirement.threshold}`,
|
|
380
|
-
`Review and address ${requirement.description.toLowerCase()}`
|
|
381
|
-
]
|
|
382
|
-
});
|
|
383
|
-
}
|
|
384
|
-
else {
|
|
385
|
-
warnings.push({
|
|
386
|
-
warningId: `warn-${result.requirementId}`,
|
|
387
|
-
standardId: standard.id,
|
|
388
|
-
message: `${requirement.description} below recommended threshold`,
|
|
389
|
-
recommendation: `Consider improving ${requirement.metric} to ${requirement.threshold}`
|
|
390
|
-
});
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
return { violations, warnings };
|
|
396
|
-
}
|
|
397
|
-
applyExemptions(violations) {
|
|
398
|
-
// In a real implementation, this would load exemptions from a database or configuration
|
|
399
|
-
// For now, return empty array
|
|
400
|
-
return [];
|
|
401
|
-
}
|
|
402
|
-
calculateSummary(evaluations, violations, exemptions) {
|
|
403
|
-
const totalRequirements = evaluations.reduce((sum, e) => sum + e.requirementResults.length, 0);
|
|
404
|
-
const satisfied = evaluations.reduce((sum, e) => sum + e.requirementResults.filter(r => r.satisfied).length, 0);
|
|
405
|
-
const violated = violations.length;
|
|
406
|
-
const exempted = exemptions.length;
|
|
407
|
-
const warned = totalRequirements - satisfied - violated;
|
|
408
|
-
return {
|
|
409
|
-
totalRequirements,
|
|
410
|
-
satisfied,
|
|
411
|
-
violated,
|
|
412
|
-
warned,
|
|
413
|
-
exempted
|
|
414
|
-
};
|
|
415
|
-
}
|
|
416
|
-
determineCompliance(violations, exemptions, policy) {
|
|
417
|
-
const activeViolations = violations.filter(v => !exemptions.some(e => e.requirementId === v.requirementId));
|
|
418
|
-
if (policy.enforcementLevel === 'mandatory') {
|
|
419
|
-
return activeViolations.length === 0;
|
|
420
|
-
}
|
|
421
|
-
else if (policy.enforcementLevel === 'recommended') {
|
|
422
|
-
return activeViolations.filter(v => v.severity === 'critical').length === 0;
|
|
423
|
-
}
|
|
424
|
-
return true; // Optional policies are always compliant
|
|
425
|
-
}
|
|
426
|
-
calculateOverallScore(evaluations) {
|
|
427
|
-
if (evaluations.length === 0)
|
|
428
|
-
return 0;
|
|
429
|
-
const totalScore = evaluations.reduce((sum, e) => sum + e.score, 0);
|
|
430
|
-
return Math.round((totalScore / evaluations.length) * 100) / 100;
|
|
431
|
-
}
|
|
432
|
-
generateRecommendations(violations, warnings, policy) {
|
|
433
|
-
const recommendations = [];
|
|
434
|
-
if (violations.length === 0 && warnings.length === 0) {
|
|
435
|
-
recommendations.push(`Fully compliant with ${policy.name}`);
|
|
436
|
-
recommendations.push('Continue maintaining quality standards');
|
|
437
|
-
return recommendations;
|
|
438
|
-
}
|
|
439
|
-
// Add violation-specific recommendations
|
|
440
|
-
for (const violation of violations.slice(0, 5)) {
|
|
441
|
-
recommendations.push(...violation.remediation);
|
|
442
|
-
}
|
|
443
|
-
// Add warning-based recommendations
|
|
444
|
-
for (const warning of warnings.slice(0, 3)) {
|
|
445
|
-
recommendations.push(warning.recommendation);
|
|
446
|
-
}
|
|
447
|
-
// General recommendations
|
|
448
|
-
if (violations.length > 0) {
|
|
449
|
-
recommendations.push('Review and address all policy violations before deployment');
|
|
450
|
-
}
|
|
451
|
-
return recommendations;
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
exports.QualityPolicyCheckHandler = QualityPolicyCheckHandler;
|
|
455
|
-
//# sourceMappingURL=quality-policy-check.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"quality-policy-check.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/quality/quality-policy-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Quality Risk Assessment Handler
|
|
3
|
-
*
|
|
4
|
-
* AI-powered risk assessment for quality gates.
|
|
5
|
-
* Uses psycho-symbolic reasoning for complex risk scenarios.
|
|
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 RiskFactor {
|
|
13
|
-
id: string;
|
|
14
|
-
type: 'technical' | 'process' | 'deployment' | 'security' | 'performance';
|
|
15
|
-
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
16
|
-
probability: number;
|
|
17
|
-
impact: string;
|
|
18
|
-
indicators: string[];
|
|
19
|
-
mitigation: string[];
|
|
20
|
-
confidence: number;
|
|
21
|
-
}
|
|
22
|
-
export interface QualityRiskAssessArgs {
|
|
23
|
-
context: {
|
|
24
|
-
projectId: string;
|
|
25
|
-
environment: 'development' | 'staging' | 'production';
|
|
26
|
-
deploymentTarget?: string;
|
|
27
|
-
criticality?: 'low' | 'medium' | 'high' | 'critical';
|
|
28
|
-
changeSet?: {
|
|
29
|
-
filesModified: number;
|
|
30
|
-
linesChanged: number;
|
|
31
|
-
complexity: number;
|
|
32
|
-
authors: number;
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
metrics: {
|
|
36
|
-
coverage: {
|
|
37
|
-
line: number;
|
|
38
|
-
branch: number;
|
|
39
|
-
delta?: number;
|
|
40
|
-
};
|
|
41
|
-
testResults: {
|
|
42
|
-
total: number;
|
|
43
|
-
passed: number;
|
|
44
|
-
failed: number;
|
|
45
|
-
flakyTests: number;
|
|
46
|
-
};
|
|
47
|
-
security: {
|
|
48
|
-
critical: number;
|
|
49
|
-
high: number;
|
|
50
|
-
medium: number;
|
|
51
|
-
low: number;
|
|
52
|
-
};
|
|
53
|
-
performance: {
|
|
54
|
-
averageResponseTime: number;
|
|
55
|
-
throughput: number;
|
|
56
|
-
errorRate: number;
|
|
57
|
-
regressions: number;
|
|
58
|
-
};
|
|
59
|
-
quality: {
|
|
60
|
-
complexity: number;
|
|
61
|
-
maintainability: number;
|
|
62
|
-
technicalDebt: number;
|
|
63
|
-
};
|
|
64
|
-
};
|
|
65
|
-
historicalData?: {
|
|
66
|
-
deploymentSuccessRate: number;
|
|
67
|
-
averageIncidents: number;
|
|
68
|
-
rollbackRate: number;
|
|
69
|
-
};
|
|
70
|
-
aiReasoning?: boolean;
|
|
71
|
-
}
|
|
72
|
-
export interface QualityRiskAssessResult {
|
|
73
|
-
assessmentId: string;
|
|
74
|
-
overallRisk: 'critical' | 'high' | 'medium' | 'low';
|
|
75
|
-
riskScore: number;
|
|
76
|
-
confidence: number;
|
|
77
|
-
riskFactors: RiskFactor[];
|
|
78
|
-
riskMatrix: {
|
|
79
|
-
technical: number;
|
|
80
|
-
process: number;
|
|
81
|
-
deployment: number;
|
|
82
|
-
security: number;
|
|
83
|
-
performance: number;
|
|
84
|
-
};
|
|
85
|
-
recommendations: {
|
|
86
|
-
priority: 'immediate' | 'high' | 'medium' | 'low';
|
|
87
|
-
action: string;
|
|
88
|
-
rationale: string;
|
|
89
|
-
}[];
|
|
90
|
-
aiInsights?: {
|
|
91
|
-
reasoning: string;
|
|
92
|
-
predictions: string[];
|
|
93
|
-
alternativeScenarios: string[];
|
|
94
|
-
};
|
|
95
|
-
metadata: {
|
|
96
|
-
assessedAt: string;
|
|
97
|
-
executionTime: number;
|
|
98
|
-
model: string;
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
export declare class QualityRiskAssessHandler extends BaseHandler {
|
|
102
|
-
private hookExecutor;
|
|
103
|
-
private riskWeights;
|
|
104
|
-
constructor(hookExecutor: HookExecutor);
|
|
105
|
-
handle(args: QualityRiskAssessArgs): Promise<HandlerResponse>;
|
|
106
|
-
private identifyRiskFactors;
|
|
107
|
-
private assessTechnicalRisks;
|
|
108
|
-
private assessProcessRisks;
|
|
109
|
-
private assessDeploymentRisks;
|
|
110
|
-
private assessSecurityRisks;
|
|
111
|
-
private assessPerformanceRisks;
|
|
112
|
-
private calculateRiskMatrix;
|
|
113
|
-
private calculateFactorRiskValue;
|
|
114
|
-
private calculateOverallRiskScore;
|
|
115
|
-
private determineRiskLevel;
|
|
116
|
-
private calculateConfidence;
|
|
117
|
-
private generateRecommendations;
|
|
118
|
-
private generateAIInsights;
|
|
119
|
-
private simulateAIReasoning;
|
|
120
|
-
private generatePredictions;
|
|
121
|
-
private generateAlternativeScenarios;
|
|
122
|
-
}
|
|
123
|
-
//# sourceMappingURL=quality-risk-assess.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"quality-risk-assess.d.ts","sourceRoot":"","sources":["../../../../src/mcp/handlers/quality/quality-risk-assess.ts"],"names":[],"mappings":"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"}
|