agentic-qe 2.3.2 → 2.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +140 -0
- package/README.md +1 -1
- package/dist/agents/BaseAgent.d.ts +10 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +113 -0
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.js +53 -27
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.d.ts +5 -0
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +20 -5
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/QualityGateAgent.js +44 -6
- package/dist/agents/QualityGateAgent.js.map +1 -1
- package/dist/cli/commands/dream/index.d.ts +50 -0
- package/dist/cli/commands/dream/index.d.ts.map +1 -0
- package/dist/cli/commands/dream/index.js +282 -0
- package/dist/cli/commands/dream/index.js.map +1 -0
- package/dist/cli/commands/learn/index.d.ts +31 -5
- package/dist/cli/commands/learn/index.d.ts.map +1 -1
- package/dist/cli/commands/learn/index.js +183 -50
- package/dist/cli/commands/learn/index.js.map +1 -1
- package/dist/cli/commands/transfer/index.d.ts +55 -0
- package/dist/cli/commands/transfer/index.d.ts.map +1 -0
- package/dist/cli/commands/transfer/index.js +317 -0
- package/dist/cli/commands/transfer/index.js.map +1 -0
- package/dist/cli/index.js +156 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/database-init.js +5 -0
- package/dist/cli/init/database-init.js.map +1 -1
- package/dist/cli/init/index.d.ts.map +1 -1
- package/dist/cli/init/index.js +12 -4
- package/dist/cli/init/index.js.map +1 -1
- package/dist/cli/init/learning-init.d.ts +39 -0
- package/dist/cli/init/learning-init.d.ts.map +1 -0
- package/dist/cli/init/learning-init.js +239 -0
- package/dist/cli/init/learning-init.js.map +1 -0
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/learning/PerformanceTracker.d.ts +9 -0
- package/dist/learning/PerformanceTracker.d.ts.map +1 -1
- package/dist/learning/PerformanceTracker.js +26 -2
- package/dist/learning/PerformanceTracker.js.map +1 -1
- package/dist/learning/baselines/BaselineCollector.d.ts +178 -0
- package/dist/learning/baselines/BaselineCollector.d.ts.map +1 -0
- package/dist/learning/baselines/BaselineCollector.js +398 -0
- package/dist/learning/baselines/BaselineCollector.js.map +1 -0
- package/dist/learning/baselines/StandardTaskSuite.d.ts +88 -0
- package/dist/learning/baselines/StandardTaskSuite.d.ts.map +1 -0
- package/dist/learning/baselines/StandardTaskSuite.js +801 -0
- package/dist/learning/baselines/StandardTaskSuite.js.map +1 -0
- package/dist/learning/baselines/index.d.ts +10 -0
- package/dist/learning/baselines/index.d.ts.map +1 -0
- package/dist/learning/baselines/index.js +15 -0
- package/dist/learning/baselines/index.js.map +1 -0
- package/dist/learning/capture/ExecutionRecorder.d.ts +97 -0
- package/dist/learning/capture/ExecutionRecorder.d.ts.map +1 -0
- package/dist/learning/capture/ExecutionRecorder.js +195 -0
- package/dist/learning/capture/ExecutionRecorder.js.map +1 -0
- package/dist/learning/capture/ExperienceCapture.d.ts +177 -0
- package/dist/learning/capture/ExperienceCapture.d.ts.map +1 -0
- package/dist/learning/capture/ExperienceCapture.js +432 -0
- package/dist/learning/capture/ExperienceCapture.js.map +1 -0
- package/dist/learning/capture/index.d.ts +12 -0
- package/dist/learning/capture/index.d.ts.map +1 -0
- package/dist/learning/capture/index.js +17 -0
- package/dist/learning/capture/index.js.map +1 -0
- package/dist/learning/dashboard/MetricsDashboard.d.ts +63 -0
- package/dist/learning/dashboard/MetricsDashboard.d.ts.map +1 -0
- package/dist/learning/dashboard/MetricsDashboard.js +230 -0
- package/dist/learning/dashboard/MetricsDashboard.js.map +1 -0
- package/dist/learning/dashboard/index.d.ts +7 -0
- package/dist/learning/dashboard/index.d.ts.map +1 -0
- package/dist/learning/dashboard/index.js +23 -0
- package/dist/learning/dashboard/index.js.map +1 -0
- package/dist/learning/dream/ConceptGraph.d.ts +160 -0
- package/dist/learning/dream/ConceptGraph.d.ts.map +1 -0
- package/dist/learning/dream/ConceptGraph.js +445 -0
- package/dist/learning/dream/ConceptGraph.js.map +1 -0
- package/dist/learning/dream/DreamEngine.d.ts +150 -0
- package/dist/learning/dream/DreamEngine.d.ts.map +1 -0
- package/dist/learning/dream/DreamEngine.js +551 -0
- package/dist/learning/dream/DreamEngine.js.map +1 -0
- package/dist/learning/dream/InsightGenerator.d.ts +152 -0
- package/dist/learning/dream/InsightGenerator.d.ts.map +1 -0
- package/dist/learning/dream/InsightGenerator.js +463 -0
- package/dist/learning/dream/InsightGenerator.js.map +1 -0
- package/dist/learning/dream/SpreadingActivation.d.ts +138 -0
- package/dist/learning/dream/SpreadingActivation.d.ts.map +1 -0
- package/dist/learning/dream/SpreadingActivation.js +320 -0
- package/dist/learning/dream/SpreadingActivation.js.map +1 -0
- package/dist/learning/dream/index.d.ts +14 -0
- package/dist/learning/dream/index.d.ts.map +1 -0
- package/dist/learning/dream/index.js +22 -0
- package/dist/learning/dream/index.js.map +1 -0
- package/dist/learning/metrics/AlertManager.d.ts +107 -0
- package/dist/learning/metrics/AlertManager.d.ts.map +1 -0
- package/dist/learning/metrics/AlertManager.js +246 -0
- package/dist/learning/metrics/AlertManager.js.map +1 -0
- package/dist/learning/metrics/LearningMetrics.d.ts +184 -0
- package/dist/learning/metrics/LearningMetrics.d.ts.map +1 -0
- package/dist/learning/metrics/LearningMetrics.js +754 -0
- package/dist/learning/metrics/LearningMetrics.js.map +1 -0
- package/dist/learning/metrics/MetricsCollector.d.ts +108 -0
- package/dist/learning/metrics/MetricsCollector.d.ts.map +1 -0
- package/dist/learning/metrics/MetricsCollector.js +240 -0
- package/dist/learning/metrics/MetricsCollector.js.map +1 -0
- package/dist/learning/metrics/MetricsStore.d.ts +149 -0
- package/dist/learning/metrics/MetricsStore.d.ts.map +1 -0
- package/dist/learning/metrics/MetricsStore.js +502 -0
- package/dist/learning/metrics/MetricsStore.js.map +1 -0
- package/dist/learning/metrics/TrendAnalyzer.d.ts +85 -0
- package/dist/learning/metrics/TrendAnalyzer.d.ts.map +1 -0
- package/dist/learning/metrics/TrendAnalyzer.js +210 -0
- package/dist/learning/metrics/TrendAnalyzer.js.map +1 -0
- package/dist/learning/metrics/index.d.ts +13 -0
- package/dist/learning/metrics/index.d.ts.map +1 -0
- package/dist/learning/metrics/index.js +39 -0
- package/dist/learning/metrics/index.js.map +1 -0
- package/dist/learning/scheduler/IdleDetector.d.ts +126 -0
- package/dist/learning/scheduler/IdleDetector.d.ts.map +1 -0
- package/dist/learning/scheduler/IdleDetector.js +281 -0
- package/dist/learning/scheduler/IdleDetector.js.map +1 -0
- package/dist/learning/scheduler/SleepCycle.d.ts +150 -0
- package/dist/learning/scheduler/SleepCycle.d.ts.map +1 -0
- package/dist/learning/scheduler/SleepCycle.js +506 -0
- package/dist/learning/scheduler/SleepCycle.js.map +1 -0
- package/dist/learning/scheduler/SleepScheduler.d.ts +131 -0
- package/dist/learning/scheduler/SleepScheduler.d.ts.map +1 -0
- package/dist/learning/scheduler/SleepScheduler.js +299 -0
- package/dist/learning/scheduler/SleepScheduler.js.map +1 -0
- package/dist/learning/scheduler/TimeBasedTrigger.d.ts +108 -0
- package/dist/learning/scheduler/TimeBasedTrigger.d.ts.map +1 -0
- package/dist/learning/scheduler/TimeBasedTrigger.js +222 -0
- package/dist/learning/scheduler/TimeBasedTrigger.js.map +1 -0
- package/dist/learning/scheduler/index.d.ts +16 -0
- package/dist/learning/scheduler/index.d.ts.map +1 -0
- package/dist/learning/scheduler/index.js +23 -0
- package/dist/learning/scheduler/index.js.map +1 -0
- package/dist/learning/synthesis/PatternSynthesis.d.ts +162 -0
- package/dist/learning/synthesis/PatternSynthesis.d.ts.map +1 -0
- package/dist/learning/synthesis/PatternSynthesis.js +479 -0
- package/dist/learning/synthesis/PatternSynthesis.js.map +1 -0
- package/dist/learning/synthesis/index.d.ts +10 -0
- package/dist/learning/synthesis/index.d.ts.map +1 -0
- package/dist/learning/synthesis/index.js +14 -0
- package/dist/learning/synthesis/index.js.map +1 -0
- package/dist/learning/transfer/CompatibilityScorer.d.ts +115 -0
- package/dist/learning/transfer/CompatibilityScorer.d.ts.map +1 -0
- package/dist/learning/transfer/CompatibilityScorer.js +319 -0
- package/dist/learning/transfer/CompatibilityScorer.js.map +1 -0
- package/dist/learning/transfer/TransferProtocol.d.ts +172 -0
- package/dist/learning/transfer/TransferProtocol.d.ts.map +1 -0
- package/dist/learning/transfer/TransferProtocol.js +611 -0
- package/dist/learning/transfer/TransferProtocol.js.map +1 -0
- package/dist/learning/transfer/TransferPrototype.d.ts +93 -0
- package/dist/learning/transfer/TransferPrototype.d.ts.map +1 -0
- package/dist/learning/transfer/TransferPrototype.js +433 -0
- package/dist/learning/transfer/TransferPrototype.js.map +1 -0
- package/dist/learning/transfer/TransferValidator.d.ts +140 -0
- package/dist/learning/transfer/TransferValidator.d.ts.map +1 -0
- package/dist/learning/transfer/TransferValidator.js +413 -0
- package/dist/learning/transfer/TransferValidator.js.map +1 -0
- package/dist/learning/transfer/index.d.ts +14 -0
- package/dist/learning/transfer/index.d.ts.map +1 -0
- package/dist/learning/transfer/index.js +22 -0
- package/dist/learning/transfer/index.js.map +1 -0
- package/dist/mcp/handlers/test/test-generate-enhanced.d.ts +26 -2
- package/dist/mcp/handlers/test/test-generate-enhanced.d.ts.map +1 -1
- package/dist/mcp/handlers/test/test-generate-enhanced.js +159 -27
- package/dist/mcp/handlers/test/test-generate-enhanced.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +2 -1
- package/dist/mcp/server.js.map +1 -1
- package/package.json +7 -2
- package/scripts/README.md +352 -0
- package/scripts/hooks/capture-task-learning.js +191 -0
- package/scripts/hooks/emit-task-complete.sh +35 -0
- package/scripts/hooks/emit-task-spawn.sh +27 -0
- package/.claude/agents/failing-agent.json +0 -9
- package/.claude/agents/test-agent.json +0 -9
- package/dist/App.d.ts +0 -5
- package/dist/App.d.ts.map +0 -1
- package/dist/App.js +0 -15
- package/dist/App.js.map +0 -1
- package/dist/cli/init/utils.d.ts +0 -183
- package/dist/cli/init/utils.d.ts.map +0 -1
- package/dist/cli/init/utils.js +0 -354
- package/dist/cli/init/utils.js.map +0 -1
- package/dist/components/Dashboard/Dashboard.d.ts +0 -4
- package/dist/components/Dashboard/Dashboard.d.ts.map +0 -1
- package/dist/components/Dashboard/Dashboard.js +0 -148
- package/dist/components/Dashboard/Dashboard.js.map +0 -1
- package/dist/components/Dashboard/DashboardHeader.d.ts +0 -4
- package/dist/components/Dashboard/DashboardHeader.d.ts.map +0 -1
- package/dist/components/Dashboard/DashboardHeader.js +0 -138
- package/dist/components/Dashboard/DashboardHeader.js.map +0 -1
- package/dist/contexts/DashboardContext.d.ts +0 -41
- package/dist/contexts/DashboardContext.d.ts.map +0 -1
- package/dist/contexts/DashboardContext.js +0 -187
- package/dist/contexts/DashboardContext.js.map +0 -1
- package/dist/core/transport/QUICTransport.d.ts +0 -320
- package/dist/core/transport/QUICTransport.d.ts.map +0 -1
- package/dist/core/transport/QUICTransport.js +0 -711
- package/dist/core/transport/QUICTransport.js.map +0 -1
- package/dist/learning/LearningPersistenceAdapter.d.ts +0 -84
- package/dist/learning/LearningPersistenceAdapter.d.ts.map +0 -1
- package/dist/learning/LearningPersistenceAdapter.js +0 -202
- package/dist/learning/LearningPersistenceAdapter.js.map +0 -1
- package/dist/learning/algorithms/QLearning.d.ts +0 -68
- package/dist/learning/algorithms/QLearning.d.ts.map +0 -1
- package/dist/learning/algorithms/QLearning.js +0 -116
- package/dist/learning/algorithms/QLearning.js.map +0 -1
- package/dist/mcp/handlers/advanced/requirements-generate-bdd.d.ts +0 -7
- package/dist/mcp/handlers/advanced/requirements-generate-bdd.d.ts.map +0 -1
- package/dist/mcp/handlers/advanced/requirements-generate-bdd.js +0 -267
- package/dist/mcp/handlers/advanced/requirements-generate-bdd.js.map +0 -1
- package/dist/mcp/handlers/advanced/requirements-validate.d.ts +0 -7
- package/dist/mcp/handlers/advanced/requirements-validate.d.ts.map +0 -1
- package/dist/mcp/handlers/advanced/requirements-validate.js +0 -175
- package/dist/mcp/handlers/advanced/requirements-validate.js.map +0 -1
- package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.d.ts +0 -15
- package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.d.ts.map +0 -1
- package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.js +0 -43
- package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.js.map +0 -1
- package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts +0 -58
- package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts.map +0 -1
- package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js +0 -188
- package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js.map +0 -1
- package/dist/mcp/handlers/optimize-tests.d.ts +0 -219
- package/dist/mcp/handlers/optimize-tests.d.ts.map +0 -1
- package/dist/mcp/handlers/optimize-tests.js +0 -533
- package/dist/mcp/handlers/optimize-tests.js.map +0 -1
- package/dist/mcp/handlers/predict-defects.d.ts +0 -194
- package/dist/mcp/handlers/predict-defects.d.ts.map +0 -1
- package/dist/mcp/handlers/predict-defects.js +0 -722
- package/dist/mcp/handlers/predict-defects.js.map +0 -1
- package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts +0 -199
- package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts.map +0 -1
- package/dist/mcp/handlers/prediction/regression-risk-analyze.js +0 -471
- package/dist/mcp/handlers/prediction/regression-risk-analyze.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-decision-make.d.ts +0 -104
- package/dist/mcp/handlers/quality/quality-decision-make.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-decision-make.js +0 -408
- package/dist/mcp/handlers/quality/quality-decision-make.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-gate-execute.d.ts +0 -160
- package/dist/mcp/handlers/quality/quality-gate-execute.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-gate-execute.js +0 -412
- package/dist/mcp/handlers/quality/quality-gate-execute.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-policy-check.d.ts +0 -163
- package/dist/mcp/handlers/quality/quality-policy-check.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-policy-check.js +0 -455
- package/dist/mcp/handlers/quality/quality-policy-check.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-risk-assess.d.ts +0 -123
- package/dist/mcp/handlers/quality/quality-risk-assess.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-risk-assess.js +0 -522
- package/dist/mcp/handlers/quality/quality-risk-assess.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-validate-metrics.d.ts +0 -117
- package/dist/mcp/handlers/quality/quality-validate-metrics.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-validate-metrics.js +0 -288
- package/dist/mcp/handlers/quality/quality-validate-metrics.js.map +0 -1
- package/dist/mcp/handlers/quality-analyze.d.ts +0 -279
- package/dist/mcp/handlers/quality-analyze.d.ts.map +0 -1
- package/dist/mcp/handlers/quality-analyze.js +0 -720
- package/dist/mcp/handlers/quality-analyze.js.map +0 -1
- package/dist/mcp/handlers/security/check-authz.d.ts +0 -152
- package/dist/mcp/handlers/security/check-authz.d.ts.map +0 -1
- package/dist/mcp/handlers/security/check-authz.js +0 -434
- package/dist/mcp/handlers/security/check-authz.js.map +0 -1
- package/dist/mcp/handlers/security/scan-dependencies.d.ts +0 -148
- package/dist/mcp/handlers/security/scan-dependencies.d.ts.map +0 -1
- package/dist/mcp/handlers/security/scan-dependencies.js +0 -354
- package/dist/mcp/handlers/security/scan-dependencies.js.map +0 -1
- package/dist/mcp/handlers/security/validate-auth.d.ts +0 -128
- package/dist/mcp/handlers/security/validate-auth.d.ts.map +0 -1
- package/dist/mcp/handlers/security/validate-auth.js +0 -294
- package/dist/mcp/handlers/security/validate-auth.js.map +0 -1
- package/dist/mcp/handlers/test-generate.d.ts +0 -107
- package/dist/mcp/handlers/test-generate.d.ts.map +0 -1
- package/dist/mcp/handlers/test-generate.js +0 -454
- package/dist/mcp/handlers/test-generate.js.map +0 -1
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* BDD Scenario Generation Handler with REAL Analysis
|
|
4
|
-
* Generates Given-When-Then scenarios from natural language requirements
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.requirementsGenerateBDD = requirementsGenerateBDD;
|
|
8
|
-
async function requirementsGenerateBDD(params) {
|
|
9
|
-
const { requirement, format = 'gherkin', includeEdgeCases = false, generateTestCode = false, framework = 'jest', extractTestData = false } = params;
|
|
10
|
-
const scenarios = await generateScenarios(requirement, includeEdgeCases);
|
|
11
|
-
// Ensure at least one scenario is generated
|
|
12
|
-
if (scenarios.length === 0) {
|
|
13
|
-
scenarios.push(generateMainScenario(requirement, 'System Feature'));
|
|
14
|
-
}
|
|
15
|
-
let cucumberFeature;
|
|
16
|
-
if (format === 'cucumber' || format === 'gherkin') {
|
|
17
|
-
cucumberFeature = generateCucumberFormat(scenarios, requirement);
|
|
18
|
-
}
|
|
19
|
-
let testCode;
|
|
20
|
-
if (generateTestCode) {
|
|
21
|
-
testCode = generateTestCodeForFramework(scenarios, framework);
|
|
22
|
-
}
|
|
23
|
-
let testData;
|
|
24
|
-
if (extractTestData) {
|
|
25
|
-
testData = extractTestDataFromRequirement(requirement);
|
|
26
|
-
}
|
|
27
|
-
return {
|
|
28
|
-
scenarios,
|
|
29
|
-
cucumberFeature,
|
|
30
|
-
testCode,
|
|
31
|
-
testData
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
async function generateScenarios(requirement, includeEdgeCases) {
|
|
35
|
-
const scenarios = [];
|
|
36
|
-
const lower = requirement.toLowerCase();
|
|
37
|
-
// Determine feature from requirement
|
|
38
|
-
const feature = extractFeatureName(requirement);
|
|
39
|
-
// Generate main happy path scenario
|
|
40
|
-
const mainScenario = generateMainScenario(requirement, feature);
|
|
41
|
-
scenarios.push(mainScenario);
|
|
42
|
-
// Generate error scenarios
|
|
43
|
-
if (lower.includes('authenticate') || lower.includes('login')) {
|
|
44
|
-
scenarios.push(generateErrorScenario('Invalid credentials', feature));
|
|
45
|
-
}
|
|
46
|
-
if (lower.includes('api') || lower.includes('return')) {
|
|
47
|
-
scenarios.push(generateErrorScenario('Invalid request', feature));
|
|
48
|
-
}
|
|
49
|
-
// Generate edge cases if requested
|
|
50
|
-
if (includeEdgeCases) {
|
|
51
|
-
scenarios.push(...generateEdgeCaseScenarios(requirement, feature));
|
|
52
|
-
}
|
|
53
|
-
return scenarios;
|
|
54
|
-
}
|
|
55
|
-
function extractFeatureName(requirement) {
|
|
56
|
-
const lower = requirement.toLowerCase();
|
|
57
|
-
if (lower.includes('login') || lower.includes('authenticate')) {
|
|
58
|
-
return 'User Authentication';
|
|
59
|
-
}
|
|
60
|
-
else if (lower.includes('api')) {
|
|
61
|
-
return 'API Integration';
|
|
62
|
-
}
|
|
63
|
-
else if (lower.includes('export') || lower.includes('download')) {
|
|
64
|
-
return 'Data Export';
|
|
65
|
-
}
|
|
66
|
-
else if (lower.includes('search')) {
|
|
67
|
-
return 'Search Functionality';
|
|
68
|
-
}
|
|
69
|
-
else if (lower.includes('payment') || lower.includes('checkout')) {
|
|
70
|
-
return 'Payment Processing';
|
|
71
|
-
}
|
|
72
|
-
else if (lower.includes('email') || lower.includes('validate')) {
|
|
73
|
-
return 'Input Validation';
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
return 'System Feature';
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
function generateMainScenario(requirement, feature) {
|
|
80
|
-
const lower = requirement.toLowerCase();
|
|
81
|
-
let given = [];
|
|
82
|
-
let when = [];
|
|
83
|
-
let then = [];
|
|
84
|
-
// Authentication scenarios
|
|
85
|
-
if (lower.includes('login') || lower.includes('authenticate')) {
|
|
86
|
-
given = ['I am a registered user', 'I have valid credentials'];
|
|
87
|
-
when = ['I submit my username and password', 'I click the login button'];
|
|
88
|
-
then = ['I should be authenticated', 'I should see my dashboard'];
|
|
89
|
-
}
|
|
90
|
-
// API scenarios
|
|
91
|
-
else if (lower.includes('api') || lower.includes('return')) {
|
|
92
|
-
given = ['I have a valid API token', 'The API service is running'];
|
|
93
|
-
when = ['I make a request to the endpoint'];
|
|
94
|
-
then = ['I should receive a successful response', 'The response should contain valid data'];
|
|
95
|
-
}
|
|
96
|
-
// Export scenarios
|
|
97
|
-
else if (lower.includes('export')) {
|
|
98
|
-
given = ['I have data to export'];
|
|
99
|
-
when = ['I click the export button'];
|
|
100
|
-
then = ['A file should be downloaded', 'The file should contain my data'];
|
|
101
|
-
}
|
|
102
|
-
// Generic scenario
|
|
103
|
-
else {
|
|
104
|
-
given = ['The system is initialized', 'All prerequisites are met'];
|
|
105
|
-
when = ['I perform the required action'];
|
|
106
|
-
then = ['The expected outcome should occur', 'No errors should be displayed'];
|
|
107
|
-
}
|
|
108
|
-
return {
|
|
109
|
-
title: 'Successful operation',
|
|
110
|
-
feature,
|
|
111
|
-
given,
|
|
112
|
-
when,
|
|
113
|
-
then,
|
|
114
|
-
tags: ['@happy-path', '@smoke']
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
function generateErrorScenario(errorType, feature) {
|
|
118
|
-
let given = [];
|
|
119
|
-
let when = [];
|
|
120
|
-
let then = [];
|
|
121
|
-
if (errorType === 'Invalid credentials') {
|
|
122
|
-
given = ['I am on the login page'];
|
|
123
|
-
when = ['I enter invalid username or password', 'I click the login button'];
|
|
124
|
-
then = ['I should see an error message', 'I should remain on the login page'];
|
|
125
|
-
}
|
|
126
|
-
else if (errorType === 'Invalid request') {
|
|
127
|
-
given = ['I have an API client'];
|
|
128
|
-
when = ['I send a malformed request'];
|
|
129
|
-
then = ['I should receive a 400 Bad Request response', 'The response should include error details'];
|
|
130
|
-
}
|
|
131
|
-
return {
|
|
132
|
-
title: `Error handling: ${errorType}`,
|
|
133
|
-
feature,
|
|
134
|
-
given,
|
|
135
|
-
when,
|
|
136
|
-
then,
|
|
137
|
-
tags: ['@error', '@negative']
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
function generateEdgeCaseScenarios(requirement, feature) {
|
|
141
|
-
const scenarios = [];
|
|
142
|
-
// Boundary condition
|
|
143
|
-
scenarios.push({
|
|
144
|
-
title: 'Boundary condition test',
|
|
145
|
-
feature,
|
|
146
|
-
given: ['The system has reached a boundary value'],
|
|
147
|
-
when: ['I attempt an operation at the boundary'],
|
|
148
|
-
then: ['The system should handle it gracefully'],
|
|
149
|
-
tags: ['@edge-case', '@boundary']
|
|
150
|
-
});
|
|
151
|
-
// Concurrent access
|
|
152
|
-
if (requirement.toLowerCase().includes('concurrent') || requirement.toLowerCase().includes('user')) {
|
|
153
|
-
scenarios.push({
|
|
154
|
-
title: 'Concurrent access',
|
|
155
|
-
feature,
|
|
156
|
-
given: ['Multiple users are accessing the system'],
|
|
157
|
-
when: ['They perform actions simultaneously'],
|
|
158
|
-
then: ['Each action should complete without interference', 'Data consistency should be maintained'],
|
|
159
|
-
tags: ['@edge-case', '@concurrency']
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
return scenarios;
|
|
163
|
-
}
|
|
164
|
-
function generateCucumberFormat(scenarios, requirement) {
|
|
165
|
-
let cucumber = `Feature: ${scenarios[0].feature}\n`;
|
|
166
|
-
cucumber += ` ${requirement}\n\n`;
|
|
167
|
-
for (const scenario of scenarios) {
|
|
168
|
-
cucumber += ` ${scenario.tags ? scenario.tags.join(' ') + '\n ' : ''}`;
|
|
169
|
-
cucumber += `Scenario: ${scenario.title}\n`;
|
|
170
|
-
for (const given of scenario.given) {
|
|
171
|
-
cucumber += ` Given ${given}\n`;
|
|
172
|
-
}
|
|
173
|
-
for (const when of scenario.when) {
|
|
174
|
-
cucumber += ` When ${when}\n`;
|
|
175
|
-
}
|
|
176
|
-
for (const then of scenario.then) {
|
|
177
|
-
cucumber += ` Then ${then}\n`;
|
|
178
|
-
}
|
|
179
|
-
cucumber += '\n';
|
|
180
|
-
}
|
|
181
|
-
return cucumber;
|
|
182
|
-
}
|
|
183
|
-
function generateTestCodeForFramework(scenarios, framework) {
|
|
184
|
-
if (framework === 'jest' || framework === 'mocha' || framework === 'jasmine') {
|
|
185
|
-
return generateJestCode(scenarios);
|
|
186
|
-
}
|
|
187
|
-
else if (framework === 'cucumber-js') {
|
|
188
|
-
return generateCucumberJsCode(scenarios);
|
|
189
|
-
}
|
|
190
|
-
return generateJestCode(scenarios);
|
|
191
|
-
}
|
|
192
|
-
function generateJestCode(scenarios) {
|
|
193
|
-
let code = `describe('${scenarios[0].feature}', () => {\n`;
|
|
194
|
-
for (const scenario of scenarios) {
|
|
195
|
-
code += ` it('${scenario.title}', async () => {\n`;
|
|
196
|
-
code += ` // Given\n`;
|
|
197
|
-
for (const given of scenario.given) {
|
|
198
|
-
code += ` // ${given}\n`;
|
|
199
|
-
}
|
|
200
|
-
code += `\n // When\n`;
|
|
201
|
-
for (const when of scenario.when) {
|
|
202
|
-
code += ` // ${when}\n`;
|
|
203
|
-
}
|
|
204
|
-
code += `\n // Then\n`;
|
|
205
|
-
for (const then of scenario.then) {
|
|
206
|
-
code += ` // ${then}\n`;
|
|
207
|
-
code += ` expect(result).toBeDefined();\n`;
|
|
208
|
-
}
|
|
209
|
-
code += ` });\n\n`;
|
|
210
|
-
}
|
|
211
|
-
code += `});\n`;
|
|
212
|
-
return code;
|
|
213
|
-
}
|
|
214
|
-
function generateCucumberJsCode(scenarios) {
|
|
215
|
-
let code = `const { Given, When, Then } = require('@cucumber/cucumber');\n\n`;
|
|
216
|
-
const allGivens = new Set();
|
|
217
|
-
const allWhens = new Set();
|
|
218
|
-
const allThens = new Set();
|
|
219
|
-
for (const scenario of scenarios) {
|
|
220
|
-
scenario.given.forEach(g => allGivens.add(g));
|
|
221
|
-
scenario.when.forEach(w => allWhens.add(w));
|
|
222
|
-
scenario.then.forEach(t => allThens.add(t));
|
|
223
|
-
}
|
|
224
|
-
for (const given of allGivens) {
|
|
225
|
-
code += `Given('${given}', async function() {\n // TODO: Implement\n});\n\n`;
|
|
226
|
-
}
|
|
227
|
-
for (const when of allWhens) {
|
|
228
|
-
code += `When('${when}', async function() {\n // TODO: Implement\n});\n\n`;
|
|
229
|
-
}
|
|
230
|
-
for (const then of allThens) {
|
|
231
|
-
code += `Then('${then}', async function() {\n // TODO: Implement\n});\n\n`;
|
|
232
|
-
}
|
|
233
|
-
return code;
|
|
234
|
-
}
|
|
235
|
-
function extractTestDataFromRequirement(requirement) {
|
|
236
|
-
const validExamples = [];
|
|
237
|
-
const invalidExamples = [];
|
|
238
|
-
const edgeCases = [];
|
|
239
|
-
const lower = requirement.toLowerCase();
|
|
240
|
-
// Password requirements
|
|
241
|
-
if (lower.includes('password') && lower.includes('8')) {
|
|
242
|
-
validExamples.push('Password123', 'SecureP@ss1');
|
|
243
|
-
invalidExamples.push('pass', '12345', 'password');
|
|
244
|
-
edgeCases.push('A1234567', 'Passwor1'); // Exactly 8 characters
|
|
245
|
-
}
|
|
246
|
-
// Email validation
|
|
247
|
-
if (lower.includes('email')) {
|
|
248
|
-
validExamples.push('user@example.com', 'test.user@domain.co.uk');
|
|
249
|
-
invalidExamples.push('invalid', 'user@', '@domain.com');
|
|
250
|
-
edgeCases.push('user+tag@example.com', 'user@sub.sub.example.com');
|
|
251
|
-
}
|
|
252
|
-
// Numeric ranges
|
|
253
|
-
const rangeMatch = requirement.match(/(\d+)\s*to\s*(\d+)|between\s*(\d+)\s*and\s*(\d+)/i);
|
|
254
|
-
if (rangeMatch) {
|
|
255
|
-
const min = parseInt(rangeMatch[1] || rangeMatch[3]);
|
|
256
|
-
const max = parseInt(rangeMatch[2] || rangeMatch[4]);
|
|
257
|
-
validExamples.push(min + 1, max - 1);
|
|
258
|
-
invalidExamples.push(min - 1, max + 1);
|
|
259
|
-
edgeCases.push(min, max);
|
|
260
|
-
}
|
|
261
|
-
return {
|
|
262
|
-
validExamples,
|
|
263
|
-
invalidExamples,
|
|
264
|
-
edgeCases
|
|
265
|
-
};
|
|
266
|
-
}
|
|
267
|
-
//# sourceMappingURL=requirements-generate-bdd.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requirements-generate-bdd.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/advanced/requirements-generate-bdd.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AASH,0DAwCC;AAxCM,KAAK,UAAU,uBAAuB,CAC3C,MAAqC;IAErC,MAAM,EACJ,WAAW,EACX,MAAM,GAAG,SAAS,EAClB,gBAAgB,GAAG,KAAK,EACxB,gBAAgB,GAAG,KAAK,EACxB,SAAS,GAAG,MAAM,EAClB,eAAe,GAAG,KAAK,EACxB,GAAG,MAAM,CAAC;IAEX,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAEzE,4CAA4C;IAC5C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,eAAmC,CAAC;IACxC,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAClD,eAAe,GAAG,sBAAsB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,QAA4B,CAAC;IACjC,IAAI,gBAAgB,EAAE,CAAC;QACrB,QAAQ,GAAG,4BAA4B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,QAAiC,CAAC;IACtC,IAAI,eAAe,EAAE,CAAC;QACpB,QAAQ,GAAG,8BAA8B,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC;IAED,OAAO;QACL,SAAS;QACT,eAAe;QACf,QAAQ;QACR,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,WAAmB,EAAE,gBAAyB;IAC7E,MAAM,SAAS,GAAkB,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAExC,qCAAqC;IACrC,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAEhD,oCAAoC;IACpC,MAAM,YAAY,GAAG,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAChE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE7B,2BAA2B;IAC3B,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9D,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,mCAAmC;IACnC,IAAI,gBAAgB,EAAE,CAAC;QACrB,SAAS,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAmB;IAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAExC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9D,OAAO,qBAAqB,CAAC;IAC/B,CAAC;SAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,iBAAiB,CAAC;IAC3B,CAAC;SAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAClE,OAAO,aAAa,CAAC;IACvB,CAAC;SAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,OAAO,sBAAsB,CAAC;IAChC,CAAC;SAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACnE,OAAO,oBAAoB,CAAC;IAC9B,CAAC;SAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACjE,OAAO,kBAAkB,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,OAAO,gBAAgB,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,WAAmB,EAAE,OAAe;IAChE,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IACxC,IAAI,KAAK,GAAa,EAAE,CAAC;IACzB,IAAI,IAAI,GAAa,EAAE,CAAC;IACxB,IAAI,IAAI,GAAa,EAAE,CAAC;IAExB,2BAA2B;IAC3B,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9D,KAAK,GAAG,CAAC,wBAAwB,EAAE,0BAA0B,CAAC,CAAC;QAC/D,IAAI,GAAG,CAAC,mCAAmC,EAAE,0BAA0B,CAAC,CAAC;QACzE,IAAI,GAAG,CAAC,2BAA2B,EAAE,2BAA2B,CAAC,CAAC;IACpE,CAAC;IACD,gBAAgB;SACX,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,KAAK,GAAG,CAAC,0BAA0B,EAAE,4BAA4B,CAAC,CAAC;QACnE,IAAI,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAC5C,IAAI,GAAG,CAAC,wCAAwC,EAAE,wCAAwC,CAAC,CAAC;IAC9F,CAAC;IACD,mBAAmB;SACd,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,KAAK,GAAG,CAAC,uBAAuB,CAAC,CAAC;QAClC,IAAI,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACrC,IAAI,GAAG,CAAC,6BAA6B,EAAE,iCAAiC,CAAC,CAAC;IAC5E,CAAC;IACD,mBAAmB;SACd,CAAC;QACJ,KAAK,GAAG,CAAC,2BAA2B,EAAE,2BAA2B,CAAC,CAAC;QACnE,IAAI,GAAG,CAAC,+BAA+B,CAAC,CAAC;QACzC,IAAI,GAAG,CAAC,mCAAmC,EAAE,+BAA+B,CAAC,CAAC;IAChF,CAAC;IAED,OAAO;QACL,KAAK,EAAE,sBAAsB;QAC7B,OAAO;QACP,KAAK;QACL,IAAI;QACJ,IAAI;QACJ,IAAI,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB,EAAE,OAAe;IAC/D,IAAI,KAAK,GAAa,EAAE,CAAC;IACzB,IAAI,IAAI,GAAa,EAAE,CAAC;IACxB,IAAI,IAAI,GAAa,EAAE,CAAC;IAExB,IAAI,SAAS,KAAK,qBAAqB,EAAE,CAAC;QACxC,KAAK,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACnC,IAAI,GAAG,CAAC,sCAAsC,EAAE,0BAA0B,CAAC,CAAC;QAC5E,IAAI,GAAG,CAAC,+BAA+B,EAAE,mCAAmC,CAAC,CAAC;IAChF,CAAC;SAAM,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;QAC3C,KAAK,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACjC,IAAI,GAAG,CAAC,4BAA4B,CAAC,CAAC;QACtC,IAAI,GAAG,CAAC,6CAA6C,EAAE,2CAA2C,CAAC,CAAC;IACtG,CAAC;IAED,OAAO;QACL,KAAK,EAAE,mBAAmB,SAAS,EAAE;QACrC,OAAO;QACP,KAAK;QACL,IAAI;QACJ,IAAI;QACJ,IAAI,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,WAAmB,EAAE,OAAe;IACrE,MAAM,SAAS,GAAkB,EAAE,CAAC;IAEpC,qBAAqB;IACrB,SAAS,CAAC,IAAI,CAAC;QACb,KAAK,EAAE,yBAAyB;QAChC,OAAO;QACP,KAAK,EAAE,CAAC,yCAAyC,CAAC;QAClD,IAAI,EAAE,CAAC,wCAAwC,CAAC;QAChD,IAAI,EAAE,CAAC,wCAAwC,CAAC;QAChD,IAAI,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;KAClC,CAAC,CAAC;IAEH,oBAAoB;IACpB,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACnG,SAAS,CAAC,IAAI,CAAC;YACb,KAAK,EAAE,mBAAmB;YAC1B,OAAO;YACP,KAAK,EAAE,CAAC,yCAAyC,CAAC;YAClD,IAAI,EAAE,CAAC,qCAAqC,CAAC;YAC7C,IAAI,EAAE,CAAC,kDAAkD,EAAE,uCAAuC,CAAC;YACnG,IAAI,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC;SACrC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,sBAAsB,CAAC,SAAwB,EAAE,WAAmB;IAC3E,IAAI,QAAQ,GAAG,YAAY,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC;IACpD,QAAQ,IAAI,KAAK,WAAW,MAAM,CAAC;IAEnC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,QAAQ,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACzE,QAAQ,IAAI,aAAa,QAAQ,CAAC,KAAK,IAAI,CAAC;QAE5C,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnC,QAAQ,IAAI,aAAa,KAAK,IAAI,CAAC;QACrC,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjC,QAAQ,IAAI,YAAY,IAAI,IAAI,CAAC;QACnC,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjC,QAAQ,IAAI,YAAY,IAAI,IAAI,CAAC;QACnC,CAAC;QACD,QAAQ,IAAI,IAAI,CAAC;IACnB,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,4BAA4B,CAAC,SAAwB,EAAE,SAAiB;IAC/E,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC7E,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;SAAM,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;QACvC,OAAO,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAwB;IAChD,IAAI,IAAI,GAAG,aAAa,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,cAAc,CAAC;IAE3D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,IAAI,SAAS,QAAQ,CAAC,KAAK,oBAAoB,CAAC;QACpD,IAAI,IAAI,gBAAgB,CAAC;QACzB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnC,IAAI,IAAI,UAAU,KAAK,IAAI,CAAC;QAC9B,CAAC;QACD,IAAI,IAAI,iBAAiB,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,IAAI,UAAU,IAAI,IAAI,CAAC;QAC7B,CAAC;QACD,IAAI,IAAI,iBAAiB,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,IAAI,UAAU,IAAI,IAAI,CAAC;YAC3B,IAAI,IAAI,qCAAqC,CAAC;QAChD,CAAC;QACD,IAAI,IAAI,WAAW,CAAC;IACtB,CAAC;IAED,IAAI,IAAI,OAAO,CAAC;IAChB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,sBAAsB,CAAC,SAAwB;IACtD,IAAI,IAAI,GAAG,kEAAkE,CAAC;IAE9E,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,IAAI,IAAI,UAAU,KAAK,sDAAsD,CAAC;IAChF,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,SAAS,IAAI,sDAAsD,CAAC;IAC9E,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,SAAS,IAAI,sDAAsD,CAAC;IAC9E,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,8BAA8B,CAAC,WAAmB;IACzD,MAAM,aAAa,GAAU,EAAE,CAAC;IAChC,MAAM,eAAe,GAAU,EAAE,CAAC;IAClC,MAAM,SAAS,GAAU,EAAE,CAAC;IAE5B,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAExC,wBAAwB;IACxB,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtD,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QACjD,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAClD,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,uBAAuB;IACjE,CAAC;IAED,mBAAmB;IACnB,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,aAAa,CAAC,IAAI,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,CAAC;QACjE,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QACxD,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAE,0BAA0B,CAAC,CAAC;IACrE,CAAC;IAED,iBAAiB;IACjB,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAC1F,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QACrC,eAAe,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QACvC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,aAAa;QACb,eAAe;QACf,SAAS;KACV,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Requirements Validation Handler with REAL Analysis
|
|
3
|
-
* Uses NLP patterns and heuristics to validate requirement testability
|
|
4
|
-
*/
|
|
5
|
-
import type { RequirementsValidateParams, RequirementsValidateResult } from '../../types/advanced';
|
|
6
|
-
export declare function requirementsValidate(params: RequirementsValidateParams): Promise<RequirementsValidateResult>;
|
|
7
|
-
//# sourceMappingURL=requirements-validate.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requirements-validate.d.ts","sourceRoot":"","sources":["../../../../src/mcp/handlers/advanced/requirements-validate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,0BAA0B,EAC1B,0BAA0B,EAG3B,MAAM,sBAAsB,CAAC;AAQ9B,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,0BAA0B,CAAC,CAkCrC"}
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Requirements Validation Handler with REAL Analysis
|
|
4
|
-
* Uses NLP patterns and heuristics to validate requirement testability
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.requirementsValidate = requirementsValidate;
|
|
8
|
-
// Testability keywords and patterns
|
|
9
|
-
const TESTABLE_VERBS = ['shall', 'must', 'will', 'should', 'can', 'authenticate', 'validate', 'return', 'display', 'save', 'delete', 'update'];
|
|
10
|
-
const MEASURABLE_TERMS = ['within', 'at least', 'no more than', 'maximum', 'minimum', 'exactly', 'between'];
|
|
11
|
-
const VAGUE_TERMS = ['fast', 'slow', 'good', 'bad', 'properly', 'correctly', 'appropriately', 'efficiently'];
|
|
12
|
-
const AMBIGUOUS_TERMS = ['some', 'few', 'many', 'several', 'various', 'adequate', 'reasonable'];
|
|
13
|
-
async function requirementsValidate(params) {
|
|
14
|
-
const { requirements, strictMode = false, generateTestSuggestions = false } = params;
|
|
15
|
-
if (requirements.length === 0) {
|
|
16
|
-
return {
|
|
17
|
-
totalRequirements: 0,
|
|
18
|
-
testableCount: 0,
|
|
19
|
-
validationResults: [],
|
|
20
|
-
overallScore: 0,
|
|
21
|
-
recommendations: ['No requirements provided for validation']
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
const validationResults = [];
|
|
25
|
-
let testableCount = 0;
|
|
26
|
-
for (const requirement of requirements) {
|
|
27
|
-
const result = validateRequirement(requirement, strictMode, generateTestSuggestions);
|
|
28
|
-
validationResults.push(result);
|
|
29
|
-
if (result.isTestable) {
|
|
30
|
-
testableCount++;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
const overallScore = validationResults.reduce((sum, r) => sum + r.testabilityScore, 0) / requirements.length;
|
|
34
|
-
const recommendations = generateRecommendations(validationResults, overallScore);
|
|
35
|
-
return {
|
|
36
|
-
totalRequirements: requirements.length,
|
|
37
|
-
testableCount,
|
|
38
|
-
validationResults,
|
|
39
|
-
overallScore,
|
|
40
|
-
recommendations
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
function validateRequirement(requirement, strictMode, generateSuggestions) {
|
|
44
|
-
const issues = [];
|
|
45
|
-
let testabilityScore = 1.0;
|
|
46
|
-
// Check for testable verbs
|
|
47
|
-
const hasTestableVerb = TESTABLE_VERBS.some(verb => requirement.toLowerCase().includes(verb));
|
|
48
|
-
if (!hasTestableVerb) {
|
|
49
|
-
issues.push({
|
|
50
|
-
type: 'untestable',
|
|
51
|
-
message: 'Requirement lacks clear action verb',
|
|
52
|
-
severity: 'high',
|
|
53
|
-
suggestion: 'Use verbs like "shall", "must", "will" to specify behavior'
|
|
54
|
-
});
|
|
55
|
-
testabilityScore -= 0.3;
|
|
56
|
-
}
|
|
57
|
-
// Check for vague terms (match whole words only)
|
|
58
|
-
const vagueTerm = VAGUE_TERMS.find(term => {
|
|
59
|
-
const regex = new RegExp(`\\b${term}\\b`, 'i');
|
|
60
|
-
return regex.test(requirement);
|
|
61
|
-
});
|
|
62
|
-
if (vagueTerm) {
|
|
63
|
-
issues.push({
|
|
64
|
-
type: 'vague',
|
|
65
|
-
message: `Contains vague term: "${vagueTerm}"`,
|
|
66
|
-
severity: 'high',
|
|
67
|
-
suggestion: `Replace "${vagueTerm}" with specific, measurable criteria`
|
|
68
|
-
});
|
|
69
|
-
testabilityScore -= 0.4;
|
|
70
|
-
}
|
|
71
|
-
// Check for ambiguous terms (match whole words only)
|
|
72
|
-
const ambiguousTerm = AMBIGUOUS_TERMS.find(term => {
|
|
73
|
-
const regex = new RegExp(`\\b${term}\\b`, 'i');
|
|
74
|
-
return regex.test(requirement);
|
|
75
|
-
});
|
|
76
|
-
if (ambiguousTerm) {
|
|
77
|
-
issues.push({
|
|
78
|
-
type: 'ambiguity',
|
|
79
|
-
message: `Contains ambiguous term: "${ambiguousTerm}"`,
|
|
80
|
-
severity: 'medium',
|
|
81
|
-
suggestion: `Specify exact quantities instead of "${ambiguousTerm}"`
|
|
82
|
-
});
|
|
83
|
-
testabilityScore -= 0.2;
|
|
84
|
-
}
|
|
85
|
-
// Check for measurability in performance requirements
|
|
86
|
-
const hasMeasurableMetric = MEASURABLE_TERMS.some(term => requirement.toLowerCase().includes(term));
|
|
87
|
-
const seemsLikePerformanceReq = requirement.toLowerCase().match(/time|speed|latency|throughput|concurrent/);
|
|
88
|
-
if (seemsLikePerformanceReq && !hasMeasurableMetric) {
|
|
89
|
-
issues.push({
|
|
90
|
-
type: 'missing-criteria',
|
|
91
|
-
message: 'Performance requirement lacks measurable criteria',
|
|
92
|
-
severity: 'high',
|
|
93
|
-
suggestion: 'Add specific metrics (e.g., "within 200ms", "at least 1000 requests/sec")'
|
|
94
|
-
});
|
|
95
|
-
testabilityScore -= 0.3;
|
|
96
|
-
}
|
|
97
|
-
// Check for acceptance criteria markers
|
|
98
|
-
const hasAcceptanceCriteria = requirement.includes('Given') || requirement.includes('When') || requirement.includes('Then');
|
|
99
|
-
if (strictMode && !hasAcceptanceCriteria) {
|
|
100
|
-
issues.push({
|
|
101
|
-
type: 'missing-criteria',
|
|
102
|
-
message: 'Missing explicit acceptance criteria',
|
|
103
|
-
severity: 'medium',
|
|
104
|
-
suggestion: 'Add Given-When-Then scenarios or specify exact expected outcomes'
|
|
105
|
-
});
|
|
106
|
-
testabilityScore -= 0.1;
|
|
107
|
-
}
|
|
108
|
-
// Ensure score doesn't go negative
|
|
109
|
-
testabilityScore = Math.max(0, testabilityScore);
|
|
110
|
-
const isTestable = testabilityScore >= 0.6;
|
|
111
|
-
let testSuggestions;
|
|
112
|
-
if (generateSuggestions && isTestable) {
|
|
113
|
-
testSuggestions = generateTestSuggestions(requirement);
|
|
114
|
-
}
|
|
115
|
-
return {
|
|
116
|
-
requirement,
|
|
117
|
-
isTestable,
|
|
118
|
-
testabilityScore,
|
|
119
|
-
issues,
|
|
120
|
-
testSuggestions
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
function generateTestSuggestions(requirement) {
|
|
124
|
-
const suggestions = [];
|
|
125
|
-
const lower = requirement.toLowerCase();
|
|
126
|
-
if (lower.includes('login') || lower.includes('authenticate')) {
|
|
127
|
-
suggestions.push('Test valid credentials');
|
|
128
|
-
suggestions.push('Test invalid credentials');
|
|
129
|
-
suggestions.push('Test locked account scenario');
|
|
130
|
-
}
|
|
131
|
-
if (lower.includes('api') || lower.includes('endpoint')) {
|
|
132
|
-
suggestions.push('Test successful response');
|
|
133
|
-
suggestions.push('Test error handling (4xx, 5xx)');
|
|
134
|
-
suggestions.push('Test input validation');
|
|
135
|
-
}
|
|
136
|
-
if (lower.includes('within') || lower.includes('performance')) {
|
|
137
|
-
suggestions.push('Load test with expected volume');
|
|
138
|
-
suggestions.push('Measure response time distribution');
|
|
139
|
-
suggestions.push('Test under degraded conditions');
|
|
140
|
-
}
|
|
141
|
-
if (lower.includes('validate') || lower.includes('check')) {
|
|
142
|
-
suggestions.push('Test valid input');
|
|
143
|
-
suggestions.push('Test invalid input');
|
|
144
|
-
suggestions.push('Test boundary conditions');
|
|
145
|
-
}
|
|
146
|
-
if (suggestions.length === 0) {
|
|
147
|
-
suggestions.push('Create positive test case');
|
|
148
|
-
suggestions.push('Create negative test case');
|
|
149
|
-
suggestions.push('Test edge cases');
|
|
150
|
-
}
|
|
151
|
-
return suggestions;
|
|
152
|
-
}
|
|
153
|
-
function generateRecommendations(validationResults, overallScore) {
|
|
154
|
-
const recommendations = [];
|
|
155
|
-
const highIssuesCount = validationResults.reduce((count, r) => count + r.issues.filter(i => i.severity === 'high').length, 0);
|
|
156
|
-
if (overallScore < 0.5) {
|
|
157
|
-
recommendations.push('Critical: Most requirements are not testable. Consider a requirements workshop to refine them.');
|
|
158
|
-
}
|
|
159
|
-
else if (overallScore < 0.7) {
|
|
160
|
-
recommendations.push('Moderate: Several requirements need clarification to improve testability.');
|
|
161
|
-
}
|
|
162
|
-
else if (overallScore >= 0.9) {
|
|
163
|
-
recommendations.push('Excellent: Requirements are well-defined and testable.');
|
|
164
|
-
}
|
|
165
|
-
if (highIssuesCount > 0) {
|
|
166
|
-
recommendations.push(`${highIssuesCount} high-severity issues detected. Address vague and ambiguous terms first.`);
|
|
167
|
-
}
|
|
168
|
-
const untestableCount = validationResults.filter(r => !r.isTestable).length;
|
|
169
|
-
if (untestableCount > 0) {
|
|
170
|
-
recommendations.push(`${untestableCount} requirements are untestable. Add specific, measurable criteria.`);
|
|
171
|
-
}
|
|
172
|
-
recommendations.push('Consider using BDD format (Given-When-Then) for clearer acceptance criteria.');
|
|
173
|
-
return recommendations;
|
|
174
|
-
}
|
|
175
|
-
//# sourceMappingURL=requirements-validate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requirements-validate.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/advanced/requirements-validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Performance Benchmark Run Handler
|
|
3
|
-
* Executes performance benchmarks
|
|
4
|
-
*/
|
|
5
|
-
import { BaseHandler, HandlerResponse } from '../base-handler.js';
|
|
6
|
-
export interface PerformanceBenchmarkRunParams {
|
|
7
|
-
benchmarkSuite: string;
|
|
8
|
-
iterations?: number;
|
|
9
|
-
warmupIterations?: number;
|
|
10
|
-
}
|
|
11
|
-
export declare class PerformanceBenchmarkRunHandler extends BaseHandler {
|
|
12
|
-
handle(args: PerformanceBenchmarkRunParams): Promise<HandlerResponse>;
|
|
13
|
-
private runBenchmark;
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=performance-benchmark-run-handler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"performance-benchmark-run-handler.d.ts","sourceRoot":"","sources":["../../../../src/mcp/handlers/analysis/performance-benchmark-run-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAElE,MAAM,WAAW,6BAA6B;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,8BAA+B,SAAQ,WAAW;IACvD,MAAM,CAAC,IAAI,EAAE,6BAA6B,GAAG,OAAO,CAAC,eAAe,CAAC;YAsB7D,YAAY;CAe3B"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Performance Benchmark Run Handler
|
|
4
|
-
* Executes performance benchmarks
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.PerformanceBenchmarkRunHandler = void 0;
|
|
8
|
-
const base_handler_js_1 = require("../base-handler.js");
|
|
9
|
-
class PerformanceBenchmarkRunHandler extends base_handler_js_1.BaseHandler {
|
|
10
|
-
async handle(args) {
|
|
11
|
-
return this.safeHandle(async () => {
|
|
12
|
-
const requestId = this.generateRequestId();
|
|
13
|
-
this.log('info', 'Starting performance benchmark', { requestId, args });
|
|
14
|
-
const iterations = args.iterations || 100;
|
|
15
|
-
const warmupIterations = args.warmupIterations || 10;
|
|
16
|
-
// Simulate benchmark execution
|
|
17
|
-
const result = await this.runBenchmark(args.benchmarkSuite, iterations, warmupIterations);
|
|
18
|
-
this.log('info', 'Performance benchmark completed', {
|
|
19
|
-
requestId,
|
|
20
|
-
avgTime: result.averageTime,
|
|
21
|
-
throughput: result.throughput
|
|
22
|
-
});
|
|
23
|
-
return this.createSuccessResponse(result, requestId);
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
async runBenchmark(suite, iterations, warmup) {
|
|
27
|
-
// Placeholder implementation
|
|
28
|
-
return {
|
|
29
|
-
suite,
|
|
30
|
-
iterations,
|
|
31
|
-
averageTime: 45.2,
|
|
32
|
-
medianTime: 44.1,
|
|
33
|
-
minTime: 38.5,
|
|
34
|
-
maxTime: 62.3,
|
|
35
|
-
throughput: 22.1,
|
|
36
|
-
standardDeviation: 5.3,
|
|
37
|
-
completed: iterations,
|
|
38
|
-
failed: 0
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
exports.PerformanceBenchmarkRunHandler = PerformanceBenchmarkRunHandler;
|
|
43
|
-
//# sourceMappingURL=performance-benchmark-run-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"performance-benchmark-run-handler.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/analysis/performance-benchmark-run-handler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,wDAAkE;AAQlE,MAAa,8BAA+B,SAAQ,6BAAW;IAC7D,KAAK,CAAC,MAAM,CAAC,IAAmC;QAC9C,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAE3C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,gCAAgC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAExE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC;YAC1C,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;YAErD,+BAA+B;YAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;YAE1F,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,iCAAiC,EAAE;gBAClD,SAAS;gBACT,OAAO,EAAE,MAAM,CAAC,WAAW;gBAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,UAAkB,EAAE,MAAc;QAC1E,6BAA6B;QAC7B,OAAO;YACL,KAAK;YACL,UAAU;YACV,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI;YAChB,iBAAiB,EAAE,GAAG;YACtB,SAAS,EAAE,UAAU;YACrB,MAAM,EAAE,CAAC;SACV,CAAC;IACJ,CAAC;CACF;AAtCD,wEAsCC"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Performance Benchmark Runner
|
|
3
|
-
* Executes comprehensive performance benchmarks with statistical analysis
|
|
4
|
-
*/
|
|
5
|
-
export interface PerformanceBenchmarkRunParams {
|
|
6
|
-
targets: string[];
|
|
7
|
-
iterations?: number;
|
|
8
|
-
warmupRuns?: number;
|
|
9
|
-
concurrency?: number;
|
|
10
|
-
timeout?: number;
|
|
11
|
-
metricsToCollect?: Array<'cpu' | 'memory' | 'io' | 'network' | 'latency' | 'throughput'>;
|
|
12
|
-
baselineComparison?: boolean;
|
|
13
|
-
}
|
|
14
|
-
export interface BenchmarkMetrics {
|
|
15
|
-
mean: number;
|
|
16
|
-
median: number;
|
|
17
|
-
stdDev: number;
|
|
18
|
-
min: number;
|
|
19
|
-
max: number;
|
|
20
|
-
p50: number;
|
|
21
|
-
p95: number;
|
|
22
|
-
p99: number;
|
|
23
|
-
}
|
|
24
|
-
export interface PerformanceBenchmarkRunResult {
|
|
25
|
-
benchmarks: Array<{
|
|
26
|
-
target: string;
|
|
27
|
-
metrics: {
|
|
28
|
-
latency?: BenchmarkMetrics;
|
|
29
|
-
throughput?: BenchmarkMetrics;
|
|
30
|
-
cpu?: BenchmarkMetrics;
|
|
31
|
-
memory?: BenchmarkMetrics;
|
|
32
|
-
io?: BenchmarkMetrics;
|
|
33
|
-
network?: BenchmarkMetrics;
|
|
34
|
-
};
|
|
35
|
-
status: 'pass' | 'fail' | 'warning';
|
|
36
|
-
issues?: string[];
|
|
37
|
-
}>;
|
|
38
|
-
summary: {
|
|
39
|
-
totalTests: number;
|
|
40
|
-
passed: number;
|
|
41
|
-
failed: number;
|
|
42
|
-
warnings: number;
|
|
43
|
-
totalDuration: number;
|
|
44
|
-
};
|
|
45
|
-
comparison?: {
|
|
46
|
-
target: string;
|
|
47
|
-
improvement: number;
|
|
48
|
-
regression: number;
|
|
49
|
-
neutral: number;
|
|
50
|
-
};
|
|
51
|
-
recommendations: string[];
|
|
52
|
-
timestamp: string;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Run performance benchmarks with statistical analysis
|
|
56
|
-
*/
|
|
57
|
-
export declare function performanceBenchmarkRun(params: PerformanceBenchmarkRunParams): Promise<PerformanceBenchmarkRunResult>;
|
|
58
|
-
//# sourceMappingURL=performanceBenchmarkRun.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"performanceBenchmarkRun.d.ts","sourceRoot":"","sources":["../../../../src/mcp/handlers/analysis/performanceBenchmarkRun.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC,CAAC;IACzF,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,KAAK,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE;YACP,OAAO,CAAC,EAAE,gBAAgB,CAAC;YAC3B,UAAU,CAAC,EAAE,gBAAgB,CAAC;YAC9B,GAAG,CAAC,EAAE,gBAAgB,CAAC;YACvB,MAAM,CAAC,EAAE,gBAAgB,CAAC;YAC1B,EAAE,CAAC,EAAE,gBAAgB,CAAC;YACtB,OAAO,CAAC,EAAE,gBAAgB,CAAC;SAC5B,CAAC;QACF,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QACpC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC,CAAC;IACH,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,UAAU,CAAC,EAAE;QACX,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,6BAA6B,GACpC,OAAO,CAAC,6BAA6B,CAAC,CAgDxC"}
|