@monoes/monomindcli 1.15.3 → 1.15.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/mcp-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +7 -0
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-tools/coherence/causal-infer.d.ts +15 -0
- package/dist/src/mcp-tools/coherence/causal-infer.d.ts.map +1 -0
- package/dist/src/mcp-tools/coherence/causal-infer.js +347 -0
- package/dist/src/mcp-tools/coherence/causal-infer.js.map +1 -0
- package/dist/src/mcp-tools/coherence/coherence-check.d.ts +15 -0
- package/dist/src/mcp-tools/coherence/coherence-check.d.ts.map +1 -0
- package/dist/src/mcp-tools/coherence/coherence-check.js +206 -0
- package/dist/src/mcp-tools/coherence/coherence-check.js.map +1 -0
- package/dist/src/mcp-tools/coherence/consensus-verify.d.ts +15 -0
- package/dist/src/mcp-tools/coherence/consensus-verify.d.ts.map +1 -0
- package/dist/src/mcp-tools/coherence/consensus-verify.js +303 -0
- package/dist/src/mcp-tools/coherence/consensus-verify.js.map +1 -0
- package/dist/src/mcp-tools/coherence/memory-gate.d.ts +15 -0
- package/dist/src/mcp-tools/coherence/memory-gate.d.ts.map +1 -0
- package/dist/src/mcp-tools/coherence/memory-gate.js +266 -0
- package/dist/src/mcp-tools/coherence/memory-gate.js.map +1 -0
- package/dist/src/mcp-tools/coherence/quantum-topology.d.ts +15 -0
- package/dist/src/mcp-tools/coherence/quantum-topology.d.ts.map +1 -0
- package/dist/src/mcp-tools/coherence/quantum-topology.js +406 -0
- package/dist/src/mcp-tools/coherence/quantum-topology.js.map +1 -0
- package/dist/src/mcp-tools/coherence/spectral-analyze.d.ts +15 -0
- package/dist/src/mcp-tools/coherence/spectral-analyze.d.ts.map +1 -0
- package/dist/src/mcp-tools/coherence/spectral-analyze.js +293 -0
- package/dist/src/mcp-tools/coherence/spectral-analyze.js.map +1 -0
- package/dist/src/mcp-tools/coherence/types.d.ts +277 -0
- package/dist/src/mcp-tools/coherence/types.d.ts.map +1 -0
- package/dist/src/mcp-tools/coherence/types.js +159 -0
- package/dist/src/mcp-tools/coherence/types.js.map +1 -0
- package/dist/src/mcp-tools/coherence-tools.d.ts +9 -0
- package/dist/src/mcp-tools/coherence-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/coherence-tools.js +25 -0
- package/dist/src/mcp-tools/coherence-tools.js.map +1 -0
- package/dist/src/mcp-tools/quality/chaos-resilience/chaos-inject.d.ts +163 -0
- package/dist/src/mcp-tools/quality/chaos-resilience/chaos-inject.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/chaos-resilience/chaos-inject.js +414 -0
- package/dist/src/mcp-tools/quality/chaos-resilience/chaos-inject.js.map +1 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/analyze-coverage.d.ts +128 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/analyze-coverage.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/analyze-coverage.js +375 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/analyze-coverage.js.map +1 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.d.ts +161 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.js +423 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.js.map +1 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/track-trends.d.ts +165 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/track-trends.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/track-trends.js +395 -0
- package/dist/src/mcp-tools/quality/coverage-analysis/track-trends.js.map +1 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/analyze-root-cause.d.ts +165 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/analyze-root-cause.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/analyze-root-cause.js +508 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/analyze-root-cause.js.map +1 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/find-similar-defects.d.ts +147 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/find-similar-defects.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/find-similar-defects.js +391 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/find-similar-defects.js.map +1 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/predict-defects.d.ts +147 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/predict-defects.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/predict-defects.js +422 -0
- package/dist/src/mcp-tools/quality/defect-intelligence/predict-defects.js.map +1 -0
- package/dist/src/mcp-tools/quality/quality-assessment/assess-readiness.d.ts +185 -0
- package/dist/src/mcp-tools/quality/quality-assessment/assess-readiness.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/quality-assessment/assess-readiness.js +437 -0
- package/dist/src/mcp-tools/quality/quality-assessment/assess-readiness.js.map +1 -0
- package/dist/src/mcp-tools/quality/quality-assessment/calculate-risk.d.ts +166 -0
- package/dist/src/mcp-tools/quality/quality-assessment/calculate-risk.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/quality-assessment/calculate-risk.js +410 -0
- package/dist/src/mcp-tools/quality/quality-assessment/calculate-risk.js.map +1 -0
- package/dist/src/mcp-tools/quality/quality-assessment/evaluate-quality-gate.d.ts +201 -0
- package/dist/src/mcp-tools/quality/quality-assessment/evaluate-quality-gate.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/quality-assessment/evaluate-quality-gate.js +363 -0
- package/dist/src/mcp-tools/quality/quality-assessment/evaluate-quality-gate.js.map +1 -0
- package/dist/src/mcp-tools/quality/security-compliance/audit-compliance.d.ts +166 -0
- package/dist/src/mcp-tools/quality/security-compliance/audit-compliance.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/security-compliance/audit-compliance.js +394 -0
- package/dist/src/mcp-tools/quality/security-compliance/audit-compliance.js.map +1 -0
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts +129 -0
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js +383 -0
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js.map +1 -0
- package/dist/src/mcp-tools/quality/security-compliance/security-scan.d.ts +171 -0
- package/dist/src/mcp-tools/quality/security-compliance/security-scan.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/security-compliance/security-scan.js +476 -0
- package/dist/src/mcp-tools/quality/security-compliance/security-scan.js.map +1 -0
- package/dist/src/mcp-tools/quality/test-generation/generate-tests.d.ts +147 -0
- package/dist/src/mcp-tools/quality/test-generation/generate-tests.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/test-generation/generate-tests.js +400 -0
- package/dist/src/mcp-tools/quality/test-generation/generate-tests.js.map +1 -0
- package/dist/src/mcp-tools/quality/test-generation/suggest-tests.d.ts +145 -0
- package/dist/src/mcp-tools/quality/test-generation/suggest-tests.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/test-generation/suggest-tests.js +328 -0
- package/dist/src/mcp-tools/quality/test-generation/suggest-tests.js.map +1 -0
- package/dist/src/mcp-tools/quality/test-generation/tdd-cycle.d.ts +126 -0
- package/dist/src/mcp-tools/quality/test-generation/tdd-cycle.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality/test-generation/tdd-cycle.js +348 -0
- package/dist/src/mcp-tools/quality/test-generation/tdd-cycle.js.map +1 -0
- package/dist/src/mcp-tools/quality-tools.d.ts +9 -0
- package/dist/src/mcp-tools/quality-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/quality-tools.js +308 -0
- package/dist/src/mcp-tools/quality-tools.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,437 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* assess-readiness.ts - Release readiness assessment MCP tool handler
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive release readiness assessment combining quality metrics,
|
|
5
|
+
* test results, risk factors, and stakeholder criteria.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
// Input schema for assess-readiness tool
|
|
9
|
+
export const AssessReadinessInputSchema = z.object({
|
|
10
|
+
releaseType: z
|
|
11
|
+
.enum(['major', 'minor', 'patch', 'hotfix'])
|
|
12
|
+
.default('minor')
|
|
13
|
+
.describe('Type of release'),
|
|
14
|
+
projectPath: z.string().optional().describe('Path to project'),
|
|
15
|
+
criteria: z
|
|
16
|
+
.array(z.object({
|
|
17
|
+
name: z.string().describe('Criterion name'),
|
|
18
|
+
category: z.enum(['quality', 'testing', 'security', 'performance', 'documentation', 'compliance']),
|
|
19
|
+
required: z.boolean().default(true).describe('If required, must pass for release'),
|
|
20
|
+
weight: z.number().min(0).max(1).default(1).describe('Weight in confidence calculation'),
|
|
21
|
+
}))
|
|
22
|
+
.optional()
|
|
23
|
+
.describe('Custom readiness criteria'),
|
|
24
|
+
includeChecks: z
|
|
25
|
+
.array(z.enum([
|
|
26
|
+
'quality-gates',
|
|
27
|
+
'test-results',
|
|
28
|
+
'security-scan',
|
|
29
|
+
'performance-baseline',
|
|
30
|
+
'documentation',
|
|
31
|
+
'change-log',
|
|
32
|
+
'dependencies',
|
|
33
|
+
'rollback-plan',
|
|
34
|
+
]))
|
|
35
|
+
.default(['quality-gates', 'test-results', 'security-scan'])
|
|
36
|
+
.describe('Checks to include in assessment'),
|
|
37
|
+
compareToRelease: z.string().optional().describe('Previous release version to compare'),
|
|
38
|
+
strictMode: z.boolean().default(false).describe('All criteria must pass'),
|
|
39
|
+
});
|
|
40
|
+
/**
|
|
41
|
+
* MCP Tool Handler for assess-readiness
|
|
42
|
+
*/
|
|
43
|
+
export async function handler(input, context) {
|
|
44
|
+
const startTime = Date.now();
|
|
45
|
+
try {
|
|
46
|
+
// Validate input
|
|
47
|
+
const validatedInput = AssessReadinessInputSchema.parse(input);
|
|
48
|
+
// Get memory bridge
|
|
49
|
+
const bridge = context.get('aqe.bridge');
|
|
50
|
+
// Perform all requested checks
|
|
51
|
+
const checkResults = await performChecks(validatedInput.includeChecks, validatedInput.projectPath, validatedInput.criteria);
|
|
52
|
+
// Assess risks
|
|
53
|
+
const riskAssessment = assessRisks(checkResults, validatedInput.releaseType);
|
|
54
|
+
// Identify blockers and warnings
|
|
55
|
+
const { blockers, warnings } = identifyBlockersAndWarnings(checkResults, riskAssessment);
|
|
56
|
+
// Calculate confidence score
|
|
57
|
+
const confidence = calculateConfidence(checkResults, validatedInput.strictMode);
|
|
58
|
+
// Determine verdict
|
|
59
|
+
const verdict = determineVerdict(blockers, warnings, confidence, validatedInput.strictMode);
|
|
60
|
+
// Determine sign-offs required
|
|
61
|
+
const signOffRequired = determineSignOffs(validatedInput.releaseType, riskAssessment.overallRisk);
|
|
62
|
+
// Generate release notes
|
|
63
|
+
const releaseNotes = await generateReleaseNotes(validatedInput.releaseType, validatedInput.compareToRelease, bridge);
|
|
64
|
+
// Build result
|
|
65
|
+
const result = {
|
|
66
|
+
success: true,
|
|
67
|
+
ready: verdict.decision === 'go',
|
|
68
|
+
confidence,
|
|
69
|
+
verdict,
|
|
70
|
+
checkResults,
|
|
71
|
+
riskAssessment,
|
|
72
|
+
blockers,
|
|
73
|
+
warnings,
|
|
74
|
+
signOffRequired,
|
|
75
|
+
releaseNotes,
|
|
76
|
+
metadata: {
|
|
77
|
+
assessedAt: new Date().toISOString(),
|
|
78
|
+
durationMs: Date.now() - startTime,
|
|
79
|
+
releaseType: validatedInput.releaseType,
|
|
80
|
+
checksPerformed: checkResults.length,
|
|
81
|
+
checksPassed: checkResults.filter((c) => c.status === 'passed').length,
|
|
82
|
+
comparedTo: validatedInput.compareToRelease,
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
return {
|
|
86
|
+
content: [
|
|
87
|
+
{
|
|
88
|
+
type: 'text',
|
|
89
|
+
text: JSON.stringify(result, null, 2),
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
96
|
+
return {
|
|
97
|
+
content: [
|
|
98
|
+
{
|
|
99
|
+
type: 'text',
|
|
100
|
+
text: JSON.stringify({
|
|
101
|
+
success: false,
|
|
102
|
+
ready: false,
|
|
103
|
+
error: errorMessage,
|
|
104
|
+
metadata: {
|
|
105
|
+
assessedAt: new Date().toISOString(),
|
|
106
|
+
durationMs: Date.now() - startTime,
|
|
107
|
+
},
|
|
108
|
+
}, null, 2),
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
async function performChecks(includeChecks, projectPath, customCriteria) {
|
|
115
|
+
const results = [];
|
|
116
|
+
// Quality gates check
|
|
117
|
+
if (includeChecks.includes('quality-gates')) {
|
|
118
|
+
results.push({
|
|
119
|
+
name: 'Quality Gates',
|
|
120
|
+
category: 'quality',
|
|
121
|
+
status: 'passed',
|
|
122
|
+
required: true,
|
|
123
|
+
score: 0.92,
|
|
124
|
+
details: 'All quality gates passed: coverage 82%, no critical bugs, no critical vulnerabilities',
|
|
125
|
+
evidence: [
|
|
126
|
+
{ type: 'coverage', value: '82%' },
|
|
127
|
+
{ type: 'bugs', value: '0 critical, 2 major' },
|
|
128
|
+
{ type: 'vulnerabilities', value: '0 critical, 1 high' },
|
|
129
|
+
],
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
// Test results check
|
|
133
|
+
if (includeChecks.includes('test-results')) {
|
|
134
|
+
results.push({
|
|
135
|
+
name: 'Test Results',
|
|
136
|
+
category: 'testing',
|
|
137
|
+
status: 'passed',
|
|
138
|
+
required: true,
|
|
139
|
+
score: 0.98,
|
|
140
|
+
details: '1245 tests passed, 0 failed, 3 skipped',
|
|
141
|
+
evidence: [
|
|
142
|
+
{ type: 'unit-tests', value: '1100 passed' },
|
|
143
|
+
{ type: 'integration-tests', value: '120 passed' },
|
|
144
|
+
{ type: 'e2e-tests', value: '25 passed' },
|
|
145
|
+
],
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
// Security scan check
|
|
149
|
+
if (includeChecks.includes('security-scan')) {
|
|
150
|
+
results.push({
|
|
151
|
+
name: 'Security Scan',
|
|
152
|
+
category: 'security',
|
|
153
|
+
status: 'warning',
|
|
154
|
+
required: true,
|
|
155
|
+
score: 0.85,
|
|
156
|
+
details: '1 high-severity vulnerability found, remediation in progress',
|
|
157
|
+
evidence: [
|
|
158
|
+
{ type: 'sast', value: '0 critical, 1 high, 3 medium' },
|
|
159
|
+
{ type: 'dependency-scan', value: '2 vulnerable dependencies' },
|
|
160
|
+
],
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
// Performance baseline check
|
|
164
|
+
if (includeChecks.includes('performance-baseline')) {
|
|
165
|
+
results.push({
|
|
166
|
+
name: 'Performance Baseline',
|
|
167
|
+
category: 'performance',
|
|
168
|
+
status: 'passed',
|
|
169
|
+
required: false,
|
|
170
|
+
score: 0.90,
|
|
171
|
+
details: 'Performance within acceptable thresholds',
|
|
172
|
+
evidence: [
|
|
173
|
+
{ type: 'response-time', value: 'p95 < 200ms' },
|
|
174
|
+
{ type: 'memory', value: 'Peak 512MB' },
|
|
175
|
+
{ type: 'cpu', value: 'Avg 35%' },
|
|
176
|
+
],
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
// Documentation check
|
|
180
|
+
if (includeChecks.includes('documentation')) {
|
|
181
|
+
results.push({
|
|
182
|
+
name: 'Documentation',
|
|
183
|
+
category: 'documentation',
|
|
184
|
+
status: 'passed',
|
|
185
|
+
required: false,
|
|
186
|
+
score: 0.88,
|
|
187
|
+
details: 'API docs updated, README current',
|
|
188
|
+
evidence: [
|
|
189
|
+
{ type: 'api-docs', value: 'Updated 2 days ago' },
|
|
190
|
+
{ type: 'readme', value: 'Current' },
|
|
191
|
+
],
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
// Change log check
|
|
195
|
+
if (includeChecks.includes('change-log')) {
|
|
196
|
+
results.push({
|
|
197
|
+
name: 'Change Log',
|
|
198
|
+
category: 'documentation',
|
|
199
|
+
status: 'passed',
|
|
200
|
+
required: true,
|
|
201
|
+
score: 1.0,
|
|
202
|
+
details: 'CHANGELOG.md updated with all changes',
|
|
203
|
+
evidence: [{ type: 'changelog', value: 'Updated for v2.3.0' }],
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
// Dependencies check
|
|
207
|
+
if (includeChecks.includes('dependencies')) {
|
|
208
|
+
results.push({
|
|
209
|
+
name: 'Dependencies',
|
|
210
|
+
category: 'compliance',
|
|
211
|
+
status: 'warning',
|
|
212
|
+
required: false,
|
|
213
|
+
score: 0.75,
|
|
214
|
+
details: '3 outdated dependencies, 2 with known vulnerabilities',
|
|
215
|
+
evidence: [
|
|
216
|
+
{ type: 'outdated', value: '3 packages' },
|
|
217
|
+
{ type: 'vulnerable', value: '2 packages' },
|
|
218
|
+
],
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
// Rollback plan check
|
|
222
|
+
if (includeChecks.includes('rollback-plan')) {
|
|
223
|
+
results.push({
|
|
224
|
+
name: 'Rollback Plan',
|
|
225
|
+
category: 'compliance',
|
|
226
|
+
status: 'passed',
|
|
227
|
+
required: true,
|
|
228
|
+
score: 1.0,
|
|
229
|
+
details: 'Rollback plan documented and tested',
|
|
230
|
+
evidence: [
|
|
231
|
+
{ type: 'document', value: 'rollback-plan.md' },
|
|
232
|
+
{ type: 'test-result', value: 'Rollback tested in staging' },
|
|
233
|
+
],
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
return results;
|
|
237
|
+
}
|
|
238
|
+
function assessRisks(checkResults, releaseType) {
|
|
239
|
+
const factors = [];
|
|
240
|
+
// Analyze check results for risk factors
|
|
241
|
+
for (const check of checkResults) {
|
|
242
|
+
if (check.status === 'failed') {
|
|
243
|
+
factors.push({
|
|
244
|
+
name: `${check.name} failure`,
|
|
245
|
+
severity: check.required ? 'critical' : 'high',
|
|
246
|
+
likelihood: 'certain',
|
|
247
|
+
impact: `${check.name} did not pass required criteria`,
|
|
248
|
+
mitigation: `Address ${check.name} issues before release`,
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
else if (check.status === 'warning') {
|
|
252
|
+
factors.push({
|
|
253
|
+
name: `${check.name} warning`,
|
|
254
|
+
severity: 'medium',
|
|
255
|
+
likelihood: 'possible',
|
|
256
|
+
impact: `Potential issues in ${check.name}`,
|
|
257
|
+
mitigation: `Monitor ${check.name} post-release`,
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
// Add release-type specific risks
|
|
262
|
+
if (releaseType === 'major') {
|
|
263
|
+
factors.push({
|
|
264
|
+
name: 'Major version release',
|
|
265
|
+
severity: 'high',
|
|
266
|
+
likelihood: 'possible',
|
|
267
|
+
impact: 'Breaking changes may affect users',
|
|
268
|
+
mitigation: 'Provide migration guide and extended support',
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
// Calculate overall risk
|
|
272
|
+
const severityScores = { critical: 4, high: 3, medium: 2, low: 1 };
|
|
273
|
+
const riskScore = factors.reduce((sum, f) => sum + severityScores[f.severity], 0) / factors.length || 0;
|
|
274
|
+
const overallRisk = riskScore >= 3 ? 'critical' : riskScore >= 2 ? 'high' : riskScore >= 1 ? 'medium' : 'low';
|
|
275
|
+
// Generate mitigations
|
|
276
|
+
const mitigations = factors
|
|
277
|
+
.filter((f) => f.mitigation)
|
|
278
|
+
.map((f) => ({
|
|
279
|
+
risk: f.name,
|
|
280
|
+
action: f.mitigation,
|
|
281
|
+
owner: 'TBD',
|
|
282
|
+
status: 'planned',
|
|
283
|
+
}));
|
|
284
|
+
return {
|
|
285
|
+
overallRisk,
|
|
286
|
+
riskScore: Math.round(riskScore * 100) / 100,
|
|
287
|
+
factors,
|
|
288
|
+
mitigations,
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
function identifyBlockersAndWarnings(checkResults, riskAssessment) {
|
|
292
|
+
const blockers = [];
|
|
293
|
+
const warnings = [];
|
|
294
|
+
// Check results blockers
|
|
295
|
+
for (const check of checkResults) {
|
|
296
|
+
if (check.status === 'failed' && check.required) {
|
|
297
|
+
blockers.push({
|
|
298
|
+
id: `blocker-${check.name.toLowerCase().replace(/\s+/g, '-')}`,
|
|
299
|
+
severity: 'critical',
|
|
300
|
+
description: `${check.name} check failed: ${check.details}`,
|
|
301
|
+
resolution: `Fix ${check.name} issues before release`,
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
else if (check.status === 'warning') {
|
|
305
|
+
warnings.push({
|
|
306
|
+
id: `warning-${check.name.toLowerCase().replace(/\s+/g, '-')}`,
|
|
307
|
+
severity: 'medium',
|
|
308
|
+
description: `${check.name} has warnings: ${check.details}`,
|
|
309
|
+
recommendation: `Address ${check.name} warnings if possible`,
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
// Risk-based blockers
|
|
314
|
+
for (const factor of riskAssessment.factors) {
|
|
315
|
+
if (factor.severity === 'critical') {
|
|
316
|
+
blockers.push({
|
|
317
|
+
id: `blocker-risk-${factor.name.toLowerCase().replace(/\s+/g, '-')}`,
|
|
318
|
+
severity: 'critical',
|
|
319
|
+
description: factor.name,
|
|
320
|
+
resolution: factor.mitigation || 'Address before release',
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
return { blockers, warnings };
|
|
325
|
+
}
|
|
326
|
+
function calculateConfidence(checkResults, strictMode) {
|
|
327
|
+
if (checkResults.length === 0)
|
|
328
|
+
return 0;
|
|
329
|
+
const totalWeight = checkResults.reduce((sum, c) => sum + (c.required ? 2 : 1), 0);
|
|
330
|
+
const weightedScore = checkResults.reduce((sum, c) => {
|
|
331
|
+
const weight = c.required ? 2 : 1;
|
|
332
|
+
const score = c.status === 'passed' ? c.score : c.status === 'warning' ? c.score * 0.7 : 0;
|
|
333
|
+
return sum + score * weight;
|
|
334
|
+
}, 0);
|
|
335
|
+
const confidence = (weightedScore / totalWeight) * 100;
|
|
336
|
+
// In strict mode, any failure significantly reduces confidence
|
|
337
|
+
if (strictMode) {
|
|
338
|
+
const failures = checkResults.filter((c) => c.status === 'failed');
|
|
339
|
+
if (failures.length > 0) {
|
|
340
|
+
return Math.min(confidence * 0.5, 50);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return Math.round(confidence);
|
|
344
|
+
}
|
|
345
|
+
function determineVerdict(blockers, warnings, confidence, strictMode) {
|
|
346
|
+
if (blockers.length > 0) {
|
|
347
|
+
return {
|
|
348
|
+
decision: 'no-go',
|
|
349
|
+
reason: `${blockers.length} blocking issue(s) must be resolved`,
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
if (strictMode && warnings.length > 0) {
|
|
353
|
+
return {
|
|
354
|
+
decision: 'no-go',
|
|
355
|
+
reason: `Strict mode: ${warnings.length} warning(s) must be addressed`,
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
if (confidence < 70) {
|
|
359
|
+
return {
|
|
360
|
+
decision: 'conditional',
|
|
361
|
+
reason: `Low confidence score (${confidence}%)`,
|
|
362
|
+
conditions: ['Address warnings before release', 'Ensure stakeholder sign-off'],
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
if (warnings.length > 2) {
|
|
366
|
+
return {
|
|
367
|
+
decision: 'conditional',
|
|
368
|
+
reason: `Multiple warnings (${warnings.length}) require attention`,
|
|
369
|
+
conditions: warnings.map((w) => w.recommendation),
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
return {
|
|
373
|
+
decision: 'go',
|
|
374
|
+
reason: `All criteria met with ${confidence}% confidence`,
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
function determineSignOffs(releaseType, riskLevel) {
|
|
378
|
+
const signOffs = [];
|
|
379
|
+
// Always require QA sign-off
|
|
380
|
+
signOffs.push({
|
|
381
|
+
role: 'QA Lead',
|
|
382
|
+
status: 'pending',
|
|
383
|
+
});
|
|
384
|
+
// Major releases require additional sign-offs
|
|
385
|
+
if (releaseType === 'major') {
|
|
386
|
+
signOffs.push({ role: 'Product Owner', status: 'pending' }, { role: 'Engineering Manager', status: 'pending' });
|
|
387
|
+
}
|
|
388
|
+
// High risk requires security sign-off
|
|
389
|
+
if (riskLevel === 'high' || riskLevel === 'critical') {
|
|
390
|
+
signOffs.push({ role: 'Security Team', status: 'pending' });
|
|
391
|
+
}
|
|
392
|
+
// Hotfixes need expedited sign-off
|
|
393
|
+
if (releaseType === 'hotfix') {
|
|
394
|
+
signOffs.push({ role: 'On-call Engineer', status: 'pending' });
|
|
395
|
+
}
|
|
396
|
+
return signOffs;
|
|
397
|
+
}
|
|
398
|
+
async function generateReleaseNotes(releaseType, compareToRelease, bridge) {
|
|
399
|
+
// Generate version based on release type
|
|
400
|
+
const versionMap = {
|
|
401
|
+
major: '3.0.0',
|
|
402
|
+
minor: '2.4.0',
|
|
403
|
+
patch: '2.3.1',
|
|
404
|
+
hotfix: '2.3.1-hotfix.1',
|
|
405
|
+
};
|
|
406
|
+
return {
|
|
407
|
+
version: versionMap[releaseType] || '2.4.0',
|
|
408
|
+
date: new Date().toISOString().split('T')[0],
|
|
409
|
+
highlights: [
|
|
410
|
+
'Improved performance for large datasets',
|
|
411
|
+
'Enhanced security with updated dependencies',
|
|
412
|
+
],
|
|
413
|
+
features: [
|
|
414
|
+
'Added new API endpoint for batch processing',
|
|
415
|
+
'Implemented caching layer for faster responses',
|
|
416
|
+
],
|
|
417
|
+
bugFixes: [
|
|
418
|
+
'Fixed memory leak in connection pool',
|
|
419
|
+
'Resolved race condition in async handlers',
|
|
420
|
+
],
|
|
421
|
+
breakingChanges: releaseType === 'major' ? ['API v1 deprecated, use v2'] : [],
|
|
422
|
+
knownIssues: [
|
|
423
|
+
'Edge case with empty arrays not fully handled (workaround available)',
|
|
424
|
+
],
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
// Export tool definition for MCP registration
|
|
428
|
+
export const toolDefinition = {
|
|
429
|
+
name: 'aqe/assess-readiness',
|
|
430
|
+
description: 'Comprehensive release readiness assessment with risk analysis and sign-off tracking',
|
|
431
|
+
category: 'quality-assessment',
|
|
432
|
+
version: '3.2.3',
|
|
433
|
+
inputSchema: AssessReadinessInputSchema,
|
|
434
|
+
handler,
|
|
435
|
+
};
|
|
436
|
+
export default toolDefinition;
|
|
437
|
+
//# sourceMappingURL=assess-readiness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assess-readiness.js","sourceRoot":"","sources":["../../../../../src/mcp-tools/quality/quality-assessment/assess-readiness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* calculate-risk.ts - Quality risk calculation MCP tool handler
|
|
3
|
+
*
|
|
4
|
+
* Calculates quality risk scores based on code complexity, test coverage,
|
|
5
|
+
* change frequency, defect history, and other factors.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
export declare const CalculateRiskInputSchema: z.ZodObject<{
|
|
9
|
+
targetPath: z.ZodString;
|
|
10
|
+
factors: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
11
|
+
documentation: "documentation";
|
|
12
|
+
size: "size";
|
|
13
|
+
coverage: "coverage";
|
|
14
|
+
complexity: "complexity";
|
|
15
|
+
age: "age";
|
|
16
|
+
"change-frequency": "change-frequency";
|
|
17
|
+
"defect-density": "defect-density";
|
|
18
|
+
coupling: "coupling";
|
|
19
|
+
"team-experience": "team-experience";
|
|
20
|
+
}>>>;
|
|
21
|
+
weights: z.ZodOptional<z.ZodObject<{
|
|
22
|
+
complexity: z.ZodDefault<z.ZodNumber>;
|
|
23
|
+
coverage: z.ZodDefault<z.ZodNumber>;
|
|
24
|
+
changeFrequency: z.ZodDefault<z.ZodNumber>;
|
|
25
|
+
defectDensity: z.ZodDefault<z.ZodNumber>;
|
|
26
|
+
age: z.ZodDefault<z.ZodNumber>;
|
|
27
|
+
coupling: z.ZodDefault<z.ZodNumber>;
|
|
28
|
+
size: z.ZodDefault<z.ZodNumber>;
|
|
29
|
+
teamExperience: z.ZodDefault<z.ZodNumber>;
|
|
30
|
+
documentation: z.ZodDefault<z.ZodNumber>;
|
|
31
|
+
}, z.core.$strip>>;
|
|
32
|
+
granularity: z.ZodDefault<z.ZodEnum<{
|
|
33
|
+
function: "function";
|
|
34
|
+
project: "project";
|
|
35
|
+
module: "module";
|
|
36
|
+
file: "file";
|
|
37
|
+
}>>;
|
|
38
|
+
riskThresholds: z.ZodOptional<z.ZodObject<{
|
|
39
|
+
low: z.ZodDefault<z.ZodNumber>;
|
|
40
|
+
medium: z.ZodDefault<z.ZodNumber>;
|
|
41
|
+
high: z.ZodDefault<z.ZodNumber>;
|
|
42
|
+
}, z.core.$strip>>;
|
|
43
|
+
includeRecommendations: z.ZodDefault<z.ZodBoolean>;
|
|
44
|
+
}, z.core.$strip>;
|
|
45
|
+
export type CalculateRiskInput = z.infer<typeof CalculateRiskInputSchema>;
|
|
46
|
+
export interface CalculateRiskOutput {
|
|
47
|
+
success: boolean;
|
|
48
|
+
overallRisk: RiskScore;
|
|
49
|
+
componentRisks: ComponentRisk[];
|
|
50
|
+
factorContributions: FactorContribution[];
|
|
51
|
+
hotspots: RiskHotspot[];
|
|
52
|
+
recommendations: RiskRecommendation[];
|
|
53
|
+
trendAnalysis: RiskTrend;
|
|
54
|
+
metadata: RiskMetadata;
|
|
55
|
+
}
|
|
56
|
+
export interface RiskScore {
|
|
57
|
+
score: number;
|
|
58
|
+
level: 'low' | 'medium' | 'high' | 'critical';
|
|
59
|
+
confidence: number;
|
|
60
|
+
breakdown: Record<string, number>;
|
|
61
|
+
}
|
|
62
|
+
export interface ComponentRisk {
|
|
63
|
+
path: string;
|
|
64
|
+
type: 'file' | 'module' | 'function';
|
|
65
|
+
riskScore: number;
|
|
66
|
+
riskLevel: 'low' | 'medium' | 'high' | 'critical';
|
|
67
|
+
factors: Record<string, number>;
|
|
68
|
+
topIssues: string[];
|
|
69
|
+
}
|
|
70
|
+
export interface FactorContribution {
|
|
71
|
+
factor: string;
|
|
72
|
+
weight: number;
|
|
73
|
+
rawScore: number;
|
|
74
|
+
weightedScore: number;
|
|
75
|
+
percentageContribution: number;
|
|
76
|
+
details: string;
|
|
77
|
+
}
|
|
78
|
+
export interface RiskHotspot {
|
|
79
|
+
path: string;
|
|
80
|
+
riskScore: number;
|
|
81
|
+
primaryFactor: string;
|
|
82
|
+
description: string;
|
|
83
|
+
urgency: 'immediate' | 'short-term' | 'long-term';
|
|
84
|
+
}
|
|
85
|
+
export interface RiskRecommendation {
|
|
86
|
+
priority: number;
|
|
87
|
+
factor: string;
|
|
88
|
+
action: string;
|
|
89
|
+
expectedImpact: string;
|
|
90
|
+
effort: 'low' | 'medium' | 'high';
|
|
91
|
+
affectedComponents: string[];
|
|
92
|
+
}
|
|
93
|
+
export interface RiskTrend {
|
|
94
|
+
direction: 'improving' | 'stable' | 'worsening';
|
|
95
|
+
changePercent: number;
|
|
96
|
+
historicalScores: Array<{
|
|
97
|
+
date: string;
|
|
98
|
+
score: number;
|
|
99
|
+
}>;
|
|
100
|
+
projection: number;
|
|
101
|
+
}
|
|
102
|
+
export interface RiskMetadata {
|
|
103
|
+
calculatedAt: string;
|
|
104
|
+
durationMs: number;
|
|
105
|
+
targetPath: string;
|
|
106
|
+
componentsAnalyzed: number;
|
|
107
|
+
factorsUsed: string[];
|
|
108
|
+
}
|
|
109
|
+
export interface ToolContext {
|
|
110
|
+
get<T>(key: string): T | undefined;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* MCP Tool Handler for calculate-risk
|
|
114
|
+
*/
|
|
115
|
+
export declare function handler(input: CalculateRiskInput, context: ToolContext): Promise<{
|
|
116
|
+
content: Array<{
|
|
117
|
+
type: 'text';
|
|
118
|
+
text: string;
|
|
119
|
+
}>;
|
|
120
|
+
}>;
|
|
121
|
+
export declare const toolDefinition: {
|
|
122
|
+
name: string;
|
|
123
|
+
description: string;
|
|
124
|
+
category: string;
|
|
125
|
+
version: string;
|
|
126
|
+
inputSchema: z.ZodObject<{
|
|
127
|
+
targetPath: z.ZodString;
|
|
128
|
+
factors: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
129
|
+
documentation: "documentation";
|
|
130
|
+
size: "size";
|
|
131
|
+
coverage: "coverage";
|
|
132
|
+
complexity: "complexity";
|
|
133
|
+
age: "age";
|
|
134
|
+
"change-frequency": "change-frequency";
|
|
135
|
+
"defect-density": "defect-density";
|
|
136
|
+
coupling: "coupling";
|
|
137
|
+
"team-experience": "team-experience";
|
|
138
|
+
}>>>;
|
|
139
|
+
weights: z.ZodOptional<z.ZodObject<{
|
|
140
|
+
complexity: z.ZodDefault<z.ZodNumber>;
|
|
141
|
+
coverage: z.ZodDefault<z.ZodNumber>;
|
|
142
|
+
changeFrequency: z.ZodDefault<z.ZodNumber>;
|
|
143
|
+
defectDensity: z.ZodDefault<z.ZodNumber>;
|
|
144
|
+
age: z.ZodDefault<z.ZodNumber>;
|
|
145
|
+
coupling: z.ZodDefault<z.ZodNumber>;
|
|
146
|
+
size: z.ZodDefault<z.ZodNumber>;
|
|
147
|
+
teamExperience: z.ZodDefault<z.ZodNumber>;
|
|
148
|
+
documentation: z.ZodDefault<z.ZodNumber>;
|
|
149
|
+
}, z.core.$strip>>;
|
|
150
|
+
granularity: z.ZodDefault<z.ZodEnum<{
|
|
151
|
+
function: "function";
|
|
152
|
+
project: "project";
|
|
153
|
+
module: "module";
|
|
154
|
+
file: "file";
|
|
155
|
+
}>>;
|
|
156
|
+
riskThresholds: z.ZodOptional<z.ZodObject<{
|
|
157
|
+
low: z.ZodDefault<z.ZodNumber>;
|
|
158
|
+
medium: z.ZodDefault<z.ZodNumber>;
|
|
159
|
+
high: z.ZodDefault<z.ZodNumber>;
|
|
160
|
+
}, z.core.$strip>>;
|
|
161
|
+
includeRecommendations: z.ZodDefault<z.ZodBoolean>;
|
|
162
|
+
}, z.core.$strip>;
|
|
163
|
+
handler: typeof handler;
|
|
164
|
+
};
|
|
165
|
+
export default toolDefinition;
|
|
166
|
+
//# sourceMappingURL=calculate-risk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculate-risk.d.ts","sourceRoot":"","sources":["../../../../../src/mcp-tools/quality/quality-assessment/calculate-risk.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6CnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAG1E,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,SAAS,CAAC;IACvB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,eAAe,EAAE,kBAAkB,EAAE,CAAC;IACtC,aAAa,EAAE,SAAS,CAAC;IACzB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAClD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;CACnD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAClC,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAGD,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;CACpC;AAkBD;;GAEG;AACH,wBAAsB,OAAO,CAC3B,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA6F7D;AAgVD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAO1B,CAAC;AAEF,eAAe,cAAc,CAAC"}
|