agentic-qe 2.3.5 → 2.4.0
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 +47 -0
- package/README.md +1 -1
- package/dist/agents/BaseAgent.d.ts +56 -49
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +208 -604
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.d.ts +2 -2
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +8 -104
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/TestExecutorAgent.d.ts +1 -1
- package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
- package/dist/agents/TestExecutorAgent.js +4 -46
- package/dist/agents/TestExecutorAgent.js.map +1 -1
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +15 -35
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/agents/adapters/CoordinatorAdapter.d.ts +47 -0
- package/dist/agents/adapters/CoordinatorAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/CoordinatorAdapter.js +266 -0
- package/dist/agents/adapters/CoordinatorAdapter.js.map +1 -0
- package/dist/agents/adapters/LearningEngineAdapter.d.ts +45 -0
- package/dist/agents/adapters/LearningEngineAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/LearningEngineAdapter.js +279 -0
- package/dist/agents/adapters/LearningEngineAdapter.js.map +1 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.d.ts +45 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.js +128 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.js.map +1 -0
- package/dist/agents/adapters/MemoryServiceAdapter.d.ts +96 -0
- package/dist/agents/adapters/MemoryServiceAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/MemoryServiceAdapter.js +266 -0
- package/dist/agents/adapters/MemoryServiceAdapter.js.map +1 -0
- package/dist/agents/adapters/index.d.ts +14 -0
- package/dist/agents/adapters/index.d.ts.map +1 -0
- package/dist/agents/adapters/index.js +25 -0
- package/dist/agents/adapters/index.js.map +1 -0
- package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.js +12 -6
- package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
- package/dist/core/cache/BinaryCacheBuilder.d.ts +84 -0
- package/dist/core/cache/BinaryCacheBuilder.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheBuilder.js +225 -0
- package/dist/core/cache/BinaryCacheBuilder.js.map +1 -0
- package/dist/core/cache/BinaryCacheManager.d.ts +142 -0
- package/dist/core/cache/BinaryCacheManager.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheManager.js +354 -0
- package/dist/core/cache/BinaryCacheManager.js.map +1 -0
- package/dist/core/cache/BinaryCacheReader.d.ts +129 -0
- package/dist/core/cache/BinaryCacheReader.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheReader.js +243 -0
- package/dist/core/cache/BinaryCacheReader.js.map +1 -0
- package/dist/core/cache/BinaryMetadataCache.d.ts +533 -0
- package/dist/core/cache/BinaryMetadataCache.d.ts.map +1 -0
- package/dist/core/cache/BinaryMetadataCache.js +142 -0
- package/dist/core/cache/BinaryMetadataCache.js.map +1 -0
- package/dist/core/cache/CacheInvalidator.d.ts +103 -0
- package/dist/core/cache/CacheInvalidator.d.ts.map +1 -0
- package/dist/core/cache/CacheInvalidator.js +152 -0
- package/dist/core/cache/CacheInvalidator.js.map +1 -0
- package/dist/core/cache/CacheValidator.d.ts +69 -0
- package/dist/core/cache/CacheValidator.d.ts.map +1 -0
- package/dist/core/cache/CacheValidator.js +189 -0
- package/dist/core/cache/CacheValidator.js.map +1 -0
- package/dist/core/cache/MessagePackSerializer.d.ts +163 -0
- package/dist/core/cache/MessagePackSerializer.d.ts.map +1 -0
- package/dist/core/cache/MessagePackSerializer.js +274 -0
- package/dist/core/cache/MessagePackSerializer.js.map +1 -0
- package/dist/core/cache/index.d.ts +58 -0
- package/dist/core/cache/index.d.ts.map +1 -0
- package/dist/core/cache/index.js +102 -0
- package/dist/core/cache/index.js.map +1 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +18 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/core/memory/PatternStoreFactory.d.ts +28 -0
- package/dist/core/memory/PatternStoreFactory.d.ts.map +1 -1
- package/dist/core/memory/PatternStoreFactory.js +68 -3
- package/dist/core/memory/PatternStoreFactory.js.map +1 -1
- package/dist/core/platform/FileOperations.d.ts +124 -0
- package/dist/core/platform/FileOperations.d.ts.map +1 -0
- package/dist/core/platform/FileOperations.js +371 -0
- package/dist/core/platform/FileOperations.js.map +1 -0
- package/dist/core/platform/PlatformDetector.d.ts +53 -0
- package/dist/core/platform/PlatformDetector.d.ts.map +1 -0
- package/dist/core/platform/PlatformDetector.js +251 -0
- package/dist/core/platform/PlatformDetector.js.map +1 -0
- package/dist/core/platform/index.d.ts +12 -0
- package/dist/core/platform/index.d.ts.map +1 -0
- package/dist/core/platform/index.js +28 -0
- package/dist/core/platform/index.js.map +1 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.d.ts +74 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.js +200 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.js.map +1 -0
- package/dist/core/strategies/AgentCoordinationStrategy.d.ts +157 -0
- package/dist/core/strategies/AgentCoordinationStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentCoordinationStrategy.js +12 -0
- package/dist/core/strategies/AgentCoordinationStrategy.js.map +1 -0
- package/dist/core/strategies/AgentLearningStrategy.d.ts +200 -0
- package/dist/core/strategies/AgentLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentLearningStrategy.js +13 -0
- package/dist/core/strategies/AgentLearningStrategy.js.map +1 -0
- package/dist/core/strategies/AgentLifecycleStrategy.d.ts +116 -0
- package/dist/core/strategies/AgentLifecycleStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentLifecycleStrategy.js +12 -0
- package/dist/core/strategies/AgentLifecycleStrategy.js.map +1 -0
- package/dist/core/strategies/AgentMemoryStrategy.d.ts +154 -0
- package/dist/core/strategies/AgentMemoryStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentMemoryStrategy.js +13 -0
- package/dist/core/strategies/AgentMemoryStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.d.ts +105 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.js +332 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultLearningStrategy.d.ts +120 -0
- package/dist/core/strategies/DefaultLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultLearningStrategy.js +365 -0
- package/dist/core/strategies/DefaultLearningStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.d.ts +129 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.js +297 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultMemoryStrategy.d.ts +91 -0
- package/dist/core/strategies/DefaultMemoryStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultMemoryStrategy.js +257 -0
- package/dist/core/strategies/DefaultMemoryStrategy.js.map +1 -0
- package/dist/core/strategies/DistributedMemoryStrategy.d.ts +85 -0
- package/dist/core/strategies/DistributedMemoryStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DistributedMemoryStrategy.js +126 -0
- package/dist/core/strategies/DistributedMemoryStrategy.js.map +1 -0
- package/dist/core/strategies/index.d.ts +95 -0
- package/dist/core/strategies/index.d.ts.map +1 -0
- package/dist/core/strategies/index.js +65 -0
- package/dist/core/strategies/index.js.map +1 -0
- package/dist/learning/PerformanceOptimizer.js +2 -2
- package/dist/learning/PerformanceOptimizer.js.map +1 -1
- package/dist/mcp/handlers/base-handler.d.ts +28 -1
- package/dist/mcp/handlers/base-handler.d.ts.map +1 -1
- package/dist/mcp/handlers/base-handler.js +41 -0
- package/dist/mcp/handlers/base-handler.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/output/AIActionSuggester.d.ts +98 -0
- package/dist/output/AIActionSuggester.d.ts.map +1 -0
- package/dist/output/AIActionSuggester.js +499 -0
- package/dist/output/AIActionSuggester.js.map +1 -0
- package/dist/output/CLIOutputHelper.d.ts +169 -0
- package/dist/output/CLIOutputHelper.d.ts.map +1 -0
- package/dist/output/CLIOutputHelper.js +320 -0
- package/dist/output/CLIOutputHelper.js.map +1 -0
- package/dist/output/OutputFormatter.d.ts +764 -0
- package/dist/output/OutputFormatter.d.ts.map +1 -0
- package/dist/output/OutputFormatter.js +125 -0
- package/dist/output/OutputFormatter.js.map +1 -0
- package/dist/output/OutputFormatterImpl.d.ts +131 -0
- package/dist/output/OutputFormatterImpl.d.ts.map +1 -0
- package/dist/output/OutputFormatterImpl.js +556 -0
- package/dist/output/OutputFormatterImpl.js.map +1 -0
- package/dist/output/examples.d.ts +38 -0
- package/dist/output/examples.d.ts.map +1 -0
- package/dist/output/examples.js +503 -0
- package/dist/output/examples.js.map +1 -0
- package/dist/output/index.d.ts +16 -0
- package/dist/output/index.d.ts.map +1 -0
- package/dist/output/index.js +58 -0
- package/dist/output/index.js.map +1 -0
- package/package.json +4 -1
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Action Suggester
|
|
3
|
+
*
|
|
4
|
+
* Generates intelligent action suggestions based on test results, coverage gaps,
|
|
5
|
+
* flaky tests, and quality metrics. Provides specific, actionable guidance with
|
|
6
|
+
* automation support and confidence scores.
|
|
7
|
+
*
|
|
8
|
+
* @module output/AIActionSuggester
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
import { ActionSuggestion, TestResultsData, CoverageReportData, QualityMetricsData } from './OutputFormatter';
|
|
12
|
+
/**
|
|
13
|
+
* AI Action Suggester
|
|
14
|
+
* Generates actionable suggestions for various QE scenarios
|
|
15
|
+
*/
|
|
16
|
+
export declare class AIActionSuggester {
|
|
17
|
+
/**
|
|
18
|
+
* Generate action suggestions for test results
|
|
19
|
+
*/
|
|
20
|
+
generateTestResultActions(data: TestResultsData): ActionSuggestion[];
|
|
21
|
+
/**
|
|
22
|
+
* Generate action suggestions for coverage reports
|
|
23
|
+
*/
|
|
24
|
+
generateCoverageReportActions(data: CoverageReportData): ActionSuggestion[];
|
|
25
|
+
/**
|
|
26
|
+
* Generate action suggestions for quality metrics
|
|
27
|
+
*/
|
|
28
|
+
generateQualityMetricsActions(data: QualityMetricsData): ActionSuggestion[];
|
|
29
|
+
/**
|
|
30
|
+
* Create fix failures action
|
|
31
|
+
*/
|
|
32
|
+
private createFixFailuresAction;
|
|
33
|
+
/**
|
|
34
|
+
* Create stabilize flaky tests action
|
|
35
|
+
*/
|
|
36
|
+
private createStabilizeFlakyAction;
|
|
37
|
+
/**
|
|
38
|
+
* Create review skipped tests action
|
|
39
|
+
*/
|
|
40
|
+
private createReviewSkippedTestsAction;
|
|
41
|
+
/**
|
|
42
|
+
* Create increase coverage action (from test results)
|
|
43
|
+
*/
|
|
44
|
+
private createIncreaseCoverageAction;
|
|
45
|
+
/**
|
|
46
|
+
* Create success acknowledgment action
|
|
47
|
+
*/
|
|
48
|
+
private createSuccessAcknowledgmentAction;
|
|
49
|
+
/**
|
|
50
|
+
* Create critical coverage gaps action
|
|
51
|
+
*/
|
|
52
|
+
private createCriticalGapsAction;
|
|
53
|
+
/**
|
|
54
|
+
* Create high-priority gaps action
|
|
55
|
+
*/
|
|
56
|
+
private createHighPriorityGapsAction;
|
|
57
|
+
/**
|
|
58
|
+
* Create coverage trend action
|
|
59
|
+
*/
|
|
60
|
+
private createCoverageTrendAction;
|
|
61
|
+
/**
|
|
62
|
+
* Create overall coverage action
|
|
63
|
+
*/
|
|
64
|
+
private createOverallCoverageAction;
|
|
65
|
+
/**
|
|
66
|
+
* Create quality gate failures action
|
|
67
|
+
*/
|
|
68
|
+
private createQualityGateFailuresAction;
|
|
69
|
+
/**
|
|
70
|
+
* Create code smells action
|
|
71
|
+
*/
|
|
72
|
+
private createCodeSmellsAction;
|
|
73
|
+
/**
|
|
74
|
+
* Create technical debt action
|
|
75
|
+
*/
|
|
76
|
+
private createTechnicalDebtAction;
|
|
77
|
+
/**
|
|
78
|
+
* Create complexity action
|
|
79
|
+
*/
|
|
80
|
+
private createComplexityAction;
|
|
81
|
+
/**
|
|
82
|
+
* Sort actions by priority
|
|
83
|
+
*/
|
|
84
|
+
private sortActionsByPriority;
|
|
85
|
+
/**
|
|
86
|
+
* Calculate average flakiness score
|
|
87
|
+
*/
|
|
88
|
+
private calculateAverageFlakinessScore;
|
|
89
|
+
/**
|
|
90
|
+
* Round to 2 decimal places
|
|
91
|
+
*/
|
|
92
|
+
private round;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Default singleton instance
|
|
96
|
+
*/
|
|
97
|
+
export declare const actionSuggester: AIActionSuggester;
|
|
98
|
+
//# sourceMappingURL=AIActionSuggester.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIActionSuggester.d.ts","sourceRoot":"","sources":["../../src/output/AIActionSuggester.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,gBAAgB,EAIhB,eAAe,EAGf,kBAAkB,EAElB,kBAAkB,EAEnB,MAAM,mBAAmB,CAAC;AAE3B;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,yBAAyB,CAAC,IAAI,EAAE,eAAe,GAAG,gBAAgB,EAAE;IA+BpE;;OAEG;IACH,6BAA6B,CAAC,IAAI,EAAE,kBAAkB,GAAG,gBAAgB,EAAE;IA4B3E;;OAEG;IACH,6BAA6B,CAAC,IAAI,EAAE,kBAAkB,GAAG,gBAAgB,EAAE;IA8B3E;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAqC/B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAqClC;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAoBtC;;OAEG;IACH,OAAO,CAAC,4BAA4B;IA8BpC;;OAEG;IACH,OAAO,CAAC,iCAAiC;IAmBzC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAkChC;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAwBpC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA6BjC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IA6BnC;;OAEG;IACH,OAAO,CAAC,+BAA+B;IAoBvC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA8B9B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAoBjC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA2B9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAY7B;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAMtC;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,mBAA0B,CAAC"}
|
|
@@ -0,0 +1,499 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AI Action Suggester
|
|
4
|
+
*
|
|
5
|
+
* Generates intelligent action suggestions based on test results, coverage gaps,
|
|
6
|
+
* flaky tests, and quality metrics. Provides specific, actionable guidance with
|
|
7
|
+
* automation support and confidence scores.
|
|
8
|
+
*
|
|
9
|
+
* @module output/AIActionSuggester
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.actionSuggester = exports.AIActionSuggester = void 0;
|
|
14
|
+
const OutputFormatter_1 = require("./OutputFormatter");
|
|
15
|
+
/**
|
|
16
|
+
* AI Action Suggester
|
|
17
|
+
* Generates actionable suggestions for various QE scenarios
|
|
18
|
+
*/
|
|
19
|
+
class AIActionSuggester {
|
|
20
|
+
/**
|
|
21
|
+
* Generate action suggestions for test results
|
|
22
|
+
*/
|
|
23
|
+
generateTestResultActions(data) {
|
|
24
|
+
const actions = [];
|
|
25
|
+
// 1. Handle test failures
|
|
26
|
+
if (data.failures && data.failures.length > 0) {
|
|
27
|
+
actions.push(this.createFixFailuresAction(data.failures));
|
|
28
|
+
}
|
|
29
|
+
// 2. Handle flaky tests
|
|
30
|
+
if (data.flaky && data.flaky.length > 0) {
|
|
31
|
+
actions.push(this.createStabilizeFlakyAction(data.flaky));
|
|
32
|
+
}
|
|
33
|
+
// 3. Handle skipped tests
|
|
34
|
+
if (data.summary.skipped > 0) {
|
|
35
|
+
actions.push(this.createReviewSkippedTestsAction(data.summary.skipped));
|
|
36
|
+
}
|
|
37
|
+
// 4. Handle coverage gaps (if coverage data available)
|
|
38
|
+
if (data.coverage && data.coverage.overall < 80) {
|
|
39
|
+
actions.push(this.createIncreaseCoverageAction(data.coverage));
|
|
40
|
+
}
|
|
41
|
+
// 5. Success case - acknowledge good results
|
|
42
|
+
if (data.failures.length === 0 && data.summary.passRate === 100) {
|
|
43
|
+
actions.push(this.createSuccessAcknowledgmentAction(data.summary));
|
|
44
|
+
}
|
|
45
|
+
return this.sortActionsByPriority(actions);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Generate action suggestions for coverage reports
|
|
49
|
+
*/
|
|
50
|
+
generateCoverageReportActions(data) {
|
|
51
|
+
const actions = [];
|
|
52
|
+
// 1. Handle critical coverage gaps
|
|
53
|
+
const criticalGaps = data.gaps.filter(gap => gap.priority === 'critical');
|
|
54
|
+
if (criticalGaps.length > 0) {
|
|
55
|
+
actions.push(this.createCriticalGapsAction(criticalGaps));
|
|
56
|
+
}
|
|
57
|
+
// 2. Handle high-priority gaps
|
|
58
|
+
const highGaps = data.gaps.filter(gap => gap.priority === 'high');
|
|
59
|
+
if (highGaps.length > 0) {
|
|
60
|
+
actions.push(this.createHighPriorityGapsAction(highGaps));
|
|
61
|
+
}
|
|
62
|
+
// 3. Review coverage trend
|
|
63
|
+
if (data.trend) {
|
|
64
|
+
actions.push(this.createCoverageTrendAction(data.trend));
|
|
65
|
+
}
|
|
66
|
+
// 4. Handle overall low coverage
|
|
67
|
+
if (data.summary.overall < 80) {
|
|
68
|
+
actions.push(this.createOverallCoverageAction(data.summary));
|
|
69
|
+
}
|
|
70
|
+
return this.sortActionsByPriority(actions);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Generate action suggestions for quality metrics
|
|
74
|
+
*/
|
|
75
|
+
generateQualityMetricsActions(data) {
|
|
76
|
+
const actions = [];
|
|
77
|
+
// 1. Handle failed quality gates
|
|
78
|
+
const failedGates = data.qualityGates.gates.filter(gate => gate.status === 'failed');
|
|
79
|
+
if (failedGates.length > 0) {
|
|
80
|
+
actions.push(this.createQualityGateFailuresAction(failedGates));
|
|
81
|
+
}
|
|
82
|
+
// 2. Handle code smells
|
|
83
|
+
if (data.codeSmells.total > 0) {
|
|
84
|
+
actions.push(this.createCodeSmellsAction(data.codeSmells));
|
|
85
|
+
}
|
|
86
|
+
// 3. Handle technical debt
|
|
87
|
+
if (data.technicalDebt.total > 40) {
|
|
88
|
+
actions.push(this.createTechnicalDebtAction(data.technicalDebt));
|
|
89
|
+
}
|
|
90
|
+
// 4. Handle complexity issues
|
|
91
|
+
const complexityGate = data.qualityGates.gates.find(gate => gate.name === 'max_complexity');
|
|
92
|
+
if (complexityGate && complexityGate.status === 'failed') {
|
|
93
|
+
actions.push(this.createComplexityAction(complexityGate));
|
|
94
|
+
}
|
|
95
|
+
return this.sortActionsByPriority(actions);
|
|
96
|
+
}
|
|
97
|
+
// ==================== Private Action Creators ====================
|
|
98
|
+
/**
|
|
99
|
+
* Create fix failures action
|
|
100
|
+
*/
|
|
101
|
+
createFixFailuresAction(failures) {
|
|
102
|
+
const affectedTests = failures.map(f => `${f.suiteName}: ${f.testName}`);
|
|
103
|
+
const timeoutFailures = failures.filter(f => f.error.type.includes('Timeout'));
|
|
104
|
+
const hasTimeoutIssues = timeoutFailures.length > 0;
|
|
105
|
+
const steps = [
|
|
106
|
+
`Review failure logs and error details for ${failures.length} failed test${failures.length > 1 ? 's' : ''}`,
|
|
107
|
+
`Run failed tests in isolation to reproduce: npm test -- --testNamePattern='${failures[0].testName}'`
|
|
108
|
+
];
|
|
109
|
+
if (hasTimeoutIssues) {
|
|
110
|
+
steps.push('Check for timing issues and race conditions in async tests');
|
|
111
|
+
steps.push('Consider increasing timeout for network-dependent tests: jest.setTimeout(10000)');
|
|
112
|
+
}
|
|
113
|
+
steps.push('Review test setup and teardown for resource leaks or conflicts');
|
|
114
|
+
steps.push('Check for environment-specific issues (database, APIs, file system)');
|
|
115
|
+
return {
|
|
116
|
+
action: OutputFormatter_1.ActionTypes.FIX_TEST_FAILURES,
|
|
117
|
+
priority: 'critical',
|
|
118
|
+
reason: `${failures.length} test failure${failures.length > 1 ? 's' : ''} detected${hasTimeoutIssues ? ' (including timeout issues)' : ''}`,
|
|
119
|
+
affectedTests,
|
|
120
|
+
steps,
|
|
121
|
+
automation: {
|
|
122
|
+
command: 'aqe fix failures --interactive',
|
|
123
|
+
canAutoFix: false,
|
|
124
|
+
confidence: hasTimeoutIssues ? 0.55 : 0.65,
|
|
125
|
+
estimatedTime: failures.length * 5
|
|
126
|
+
},
|
|
127
|
+
relatedDocs: [
|
|
128
|
+
'https://jestjs.io/docs/troubleshooting',
|
|
129
|
+
'/workspaces/agentic-qe-cf/docs/guides/debugging-test-failures.md'
|
|
130
|
+
]
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Create stabilize flaky tests action
|
|
135
|
+
*/
|
|
136
|
+
createStabilizeFlakyAction(flaky) {
|
|
137
|
+
const affectedTests = flaky.map(f => `${f.suiteName}: ${f.testName}`);
|
|
138
|
+
const highInstability = flaky.filter(f => f.flakinessScore > 0.4);
|
|
139
|
+
const steps = [
|
|
140
|
+
`Analyze flaky test patterns for ${flaky.length} test${flaky.length > 1 ? 's' : ''}`,
|
|
141
|
+
`Review recent failure history: aqe analyze flaky --test-id=${flaky[0].testName}`
|
|
142
|
+
];
|
|
143
|
+
if (highInstability.length > 0) {
|
|
144
|
+
steps.push(`Prioritize ${highInstability.length} test${highInstability.length > 1 ? 's' : ''} with high instability score (>40%)`);
|
|
145
|
+
}
|
|
146
|
+
steps.push('Add deterministic mocking for external dependencies (network, time, random)');
|
|
147
|
+
steps.push('Ensure proper test isolation and cleanup between runs');
|
|
148
|
+
steps.push('Consider using jest-retry for legitimate retry scenarios');
|
|
149
|
+
steps.push('Add wait conditions instead of fixed delays (waitFor, waitForElement)');
|
|
150
|
+
return {
|
|
151
|
+
action: OutputFormatter_1.ActionTypes.STABILIZE_FLAKY_TESTS,
|
|
152
|
+
priority: highInstability.length > 0 ? 'high' : 'medium',
|
|
153
|
+
reason: `${flaky.length} flaky test${flaky.length > 1 ? 's' : ''} detected (avg instability: ${this.calculateAverageFlakinessScore(flaky).toFixed(2)}%)`,
|
|
154
|
+
affectedTests,
|
|
155
|
+
steps,
|
|
156
|
+
automation: {
|
|
157
|
+
command: `aqe stabilize flaky --test-id=${flaky[0].testName}`,
|
|
158
|
+
canAutoFix: true,
|
|
159
|
+
confidence: 0.78,
|
|
160
|
+
estimatedTime: flaky.length * 3
|
|
161
|
+
},
|
|
162
|
+
relatedDocs: [
|
|
163
|
+
'https://jestjs.io/docs/jest-platform#jest-retry',
|
|
164
|
+
'/workspaces/agentic-qe-cf/docs/guides/handling-flaky-tests.md'
|
|
165
|
+
]
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Create review skipped tests action
|
|
170
|
+
*/
|
|
171
|
+
createReviewSkippedTestsAction(skippedCount) {
|
|
172
|
+
return {
|
|
173
|
+
action: 'review_skipped_tests',
|
|
174
|
+
priority: 'medium',
|
|
175
|
+
reason: `${skippedCount} test${skippedCount > 1 ? 's' : ''} skipped - may hide regressions`,
|
|
176
|
+
steps: [
|
|
177
|
+
'Review skipped tests: grep -r "it.skip\\|test.skip\\|describe.skip" tests/',
|
|
178
|
+
'Determine if tests are temporarily disabled or permanently irrelevant',
|
|
179
|
+
'Re-enable or remove skipped tests to maintain test suite health',
|
|
180
|
+
'Add comments explaining why tests are skipped if temporary'
|
|
181
|
+
],
|
|
182
|
+
automation: {
|
|
183
|
+
command: 'aqe analyze skipped',
|
|
184
|
+
canAutoFix: false,
|
|
185
|
+
confidence: 0.50,
|
|
186
|
+
estimatedTime: 10
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Create increase coverage action (from test results)
|
|
192
|
+
*/
|
|
193
|
+
createIncreaseCoverageAction(coverage) {
|
|
194
|
+
const gap = 80 - coverage.overall;
|
|
195
|
+
return {
|
|
196
|
+
action: OutputFormatter_1.ActionTypes.INCREASE_COVERAGE,
|
|
197
|
+
priority: coverage.overall < 60 ? 'critical' : 'high',
|
|
198
|
+
reason: `Overall coverage is ${coverage.overall.toFixed(2)}% (target: 80%)`,
|
|
199
|
+
steps: [
|
|
200
|
+
'Identify uncovered files and critical paths',
|
|
201
|
+
'Generate tests for low-coverage areas: aqe generate tests --coverage-target=80',
|
|
202
|
+
'Focus on business-critical code paths first',
|
|
203
|
+
'Add edge case and error handling tests',
|
|
204
|
+
'Review coverage reports: aqe analyze coverage --detailed'
|
|
205
|
+
],
|
|
206
|
+
automation: {
|
|
207
|
+
command: 'aqe generate tests --coverage-target=80 --focus=uncovered',
|
|
208
|
+
canAutoFix: true,
|
|
209
|
+
confidence: 0.85,
|
|
210
|
+
estimatedTime: Math.ceil(gap * 2),
|
|
211
|
+
estimatedTests: Math.ceil(gap * 3)
|
|
212
|
+
},
|
|
213
|
+
impact: {
|
|
214
|
+
currentValue: coverage.overall,
|
|
215
|
+
targetValue: 80.0,
|
|
216
|
+
estimatedImprovement: gap,
|
|
217
|
+
businessValue: coverage.overall < 60 ? 'critical' : 'high'
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Create success acknowledgment action
|
|
223
|
+
*/
|
|
224
|
+
createSuccessAcknowledgmentAction(summary) {
|
|
225
|
+
return {
|
|
226
|
+
action: OutputFormatter_1.ActionTypes.AGENT_READY,
|
|
227
|
+
priority: 'info',
|
|
228
|
+
reason: `All ${summary.total} tests passed successfully`,
|
|
229
|
+
steps: [
|
|
230
|
+
'Maintain current testing practices',
|
|
231
|
+
'Continue test-driven development',
|
|
232
|
+
'Monitor coverage trends over time',
|
|
233
|
+
'Consider adding more edge case tests'
|
|
234
|
+
],
|
|
235
|
+
automation: {
|
|
236
|
+
command: 'aqe analyze trends --period=30days',
|
|
237
|
+
canAutoFix: false,
|
|
238
|
+
confidence: 1.0
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Create critical coverage gaps action
|
|
244
|
+
*/
|
|
245
|
+
createCriticalGapsAction(gaps) {
|
|
246
|
+
const targetFiles = gaps.map(g => g.file);
|
|
247
|
+
return {
|
|
248
|
+
action: OutputFormatter_1.ActionTypes.INCREASE_COVERAGE,
|
|
249
|
+
priority: 'critical',
|
|
250
|
+
reason: `${gaps.length} critical coverage gap${gaps.length > 1 ? 's' : ''} detected in business-critical code`,
|
|
251
|
+
targetFiles,
|
|
252
|
+
steps: [
|
|
253
|
+
'Review critical gaps in business-critical files',
|
|
254
|
+
`Focus on: ${gaps[0].file}`,
|
|
255
|
+
`Generate tests: aqe generate tests --file=${gaps[0].file} --coverage-target=80`,
|
|
256
|
+
'Prioritize error handling and edge cases',
|
|
257
|
+
'Add integration tests for critical paths'
|
|
258
|
+
],
|
|
259
|
+
automation: {
|
|
260
|
+
command: `aqe generate tests --file=${gaps[0].file} --coverage-target=80 --priority=critical`,
|
|
261
|
+
canAutoFix: true,
|
|
262
|
+
confidence: 0.92,
|
|
263
|
+
estimatedTime: gaps.length * 5,
|
|
264
|
+
estimatedTests: gaps.reduce((sum, g) => sum + g.uncoveredLines.length, 0)
|
|
265
|
+
},
|
|
266
|
+
impact: {
|
|
267
|
+
currentValue: gaps[0].coverage.lines,
|
|
268
|
+
targetValue: 80.0,
|
|
269
|
+
estimatedImprovement: 80.0 - gaps[0].coverage.lines,
|
|
270
|
+
businessValue: 'critical'
|
|
271
|
+
},
|
|
272
|
+
relatedDocs: [
|
|
273
|
+
'/workspaces/agentic-qe-cf/docs/guides/coverage-best-practices.md'
|
|
274
|
+
]
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Create high-priority gaps action
|
|
279
|
+
*/
|
|
280
|
+
createHighPriorityGapsAction(gaps) {
|
|
281
|
+
const targetFiles = gaps.map(g => g.file);
|
|
282
|
+
return {
|
|
283
|
+
action: OutputFormatter_1.ActionTypes.INCREASE_COVERAGE,
|
|
284
|
+
priority: 'high',
|
|
285
|
+
reason: `${gaps.length} high-priority coverage gap${gaps.length > 1 ? 's' : ''} detected`,
|
|
286
|
+
targetFiles,
|
|
287
|
+
steps: [
|
|
288
|
+
'Review high-priority gaps in important files',
|
|
289
|
+
'Generate tests for uncovered branches and error paths',
|
|
290
|
+
'Add tests for complex conditional logic',
|
|
291
|
+
'Focus on frequently changed code areas'
|
|
292
|
+
],
|
|
293
|
+
automation: {
|
|
294
|
+
command: `aqe generate tests --priority=high --coverage-target=80`,
|
|
295
|
+
canAutoFix: true,
|
|
296
|
+
confidence: 0.88,
|
|
297
|
+
estimatedTime: gaps.length * 4,
|
|
298
|
+
estimatedTests: gaps.reduce((sum, g) => sum + g.uncoveredLines.length, 0)
|
|
299
|
+
}
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Create coverage trend action
|
|
304
|
+
*/
|
|
305
|
+
createCoverageTrendAction(trend) {
|
|
306
|
+
const isImproving = trend.direction === 'improving';
|
|
307
|
+
const isDegrading = trend.direction === 'degrading';
|
|
308
|
+
return {
|
|
309
|
+
action: OutputFormatter_1.ActionTypes.REVIEW_COVERAGE_TREND,
|
|
310
|
+
priority: isDegrading ? 'medium' : 'low',
|
|
311
|
+
reason: `Coverage ${trend.direction} by ${Math.abs(trend.change).toFixed(2)}% (${trend.previousCoverage.toFixed(2)}% → ${trend.currentCoverage.toFixed(2)}%)`,
|
|
312
|
+
steps: isImproving
|
|
313
|
+
? [
|
|
314
|
+
'Continue current testing practices',
|
|
315
|
+
'Maintain momentum on test coverage',
|
|
316
|
+
'Set up coverage ratcheting in CI/CD',
|
|
317
|
+
'Monitor coverage on each commit'
|
|
318
|
+
]
|
|
319
|
+
: [
|
|
320
|
+
'Investigate causes of coverage degradation',
|
|
321
|
+
'Review recent code changes without tests',
|
|
322
|
+
'Add tests for new features before merging',
|
|
323
|
+
'Enable pre-commit coverage checks'
|
|
324
|
+
],
|
|
325
|
+
automation: {
|
|
326
|
+
command: 'aqe coverage trends --days=30',
|
|
327
|
+
canAutoFix: false,
|
|
328
|
+
confidence: 1.0
|
|
329
|
+
}
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Create overall coverage action
|
|
334
|
+
*/
|
|
335
|
+
createOverallCoverageAction(summary) {
|
|
336
|
+
const gap = 80 - summary.overall;
|
|
337
|
+
return {
|
|
338
|
+
action: OutputFormatter_1.ActionTypes.INCREASE_COVERAGE,
|
|
339
|
+
priority: summary.overall < 60 ? 'critical' : 'high',
|
|
340
|
+
reason: `Overall coverage is ${summary.overall.toFixed(2)}% (target: 80%)`,
|
|
341
|
+
steps: [
|
|
342
|
+
'Analyze coverage gaps: aqe analyze coverage --detailed',
|
|
343
|
+
'Generate tests for uncovered areas',
|
|
344
|
+
'Focus on high-impact, low-coverage files first',
|
|
345
|
+
'Set up coverage gates in CI/CD'
|
|
346
|
+
],
|
|
347
|
+
automation: {
|
|
348
|
+
command: 'aqe generate tests --coverage-target=80 --focus=critical',
|
|
349
|
+
canAutoFix: true,
|
|
350
|
+
confidence: 0.87,
|
|
351
|
+
estimatedTime: Math.ceil(gap * 3),
|
|
352
|
+
estimatedTests: Math.ceil(gap * 5)
|
|
353
|
+
},
|
|
354
|
+
impact: {
|
|
355
|
+
currentValue: summary.overall,
|
|
356
|
+
targetValue: 80.0,
|
|
357
|
+
estimatedImprovement: gap,
|
|
358
|
+
businessValue: summary.overall < 60 ? 'critical' : 'high'
|
|
359
|
+
}
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Create quality gate failures action
|
|
364
|
+
*/
|
|
365
|
+
createQualityGateFailuresAction(failedGates) {
|
|
366
|
+
return {
|
|
367
|
+
action: 'fix_quality_gates',
|
|
368
|
+
priority: 'high',
|
|
369
|
+
reason: `${failedGates.length} quality gate${failedGates.length > 1 ? 's' : ''} failed`,
|
|
370
|
+
steps: [
|
|
371
|
+
'Review failed quality gates and thresholds',
|
|
372
|
+
`Priority gates: ${failedGates.map(g => g.name).join(', ')}`,
|
|
373
|
+
'Address highest-impact failures first',
|
|
374
|
+
'Adjust thresholds if needed (with team approval)'
|
|
375
|
+
],
|
|
376
|
+
automation: {
|
|
377
|
+
command: 'aqe quality gates --fix',
|
|
378
|
+
canAutoFix: false,
|
|
379
|
+
confidence: 0.60,
|
|
380
|
+
estimatedTime: failedGates.length * 15
|
|
381
|
+
}
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Create code smells action
|
|
386
|
+
*/
|
|
387
|
+
createCodeSmellsAction(codeSmells) {
|
|
388
|
+
const priorityTypes = Object.entries(codeSmells.byType)
|
|
389
|
+
.sort(([, a], [, b]) => b - a)
|
|
390
|
+
.slice(0, 3)
|
|
391
|
+
.map(([type]) => type);
|
|
392
|
+
return {
|
|
393
|
+
action: OutputFormatter_1.ActionTypes.FIX_CODE_SMELLS,
|
|
394
|
+
priority: codeSmells.total > 50 ? 'high' : 'medium',
|
|
395
|
+
reason: `${codeSmells.total} code smell${codeSmells.total > 1 ? 's' : ''} detected`,
|
|
396
|
+
steps: [
|
|
397
|
+
`Focus on top issues: ${priorityTypes.join(', ')}`,
|
|
398
|
+
'Review duplicate code and extract common utilities',
|
|
399
|
+
'Refactor long methods into smaller, focused functions',
|
|
400
|
+
'Split large classes into cohesive components',
|
|
401
|
+
'Run code quality analysis: aqe analyze quality --detailed'
|
|
402
|
+
],
|
|
403
|
+
automation: {
|
|
404
|
+
command: 'aqe analyze smells --fix-duplicates --interactive',
|
|
405
|
+
canAutoFix: true,
|
|
406
|
+
confidence: 0.75,
|
|
407
|
+
estimatedTime: Math.ceil(codeSmells.total / 2)
|
|
408
|
+
},
|
|
409
|
+
relatedDocs: [
|
|
410
|
+
'https://refactoring.guru/refactoring/smells',
|
|
411
|
+
'/workspaces/agentic-qe-cf/docs/guides/code-quality-best-practices.md'
|
|
412
|
+
]
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Create technical debt action
|
|
417
|
+
*/
|
|
418
|
+
createTechnicalDebtAction(technicalDebt) {
|
|
419
|
+
return {
|
|
420
|
+
action: 'reduce_technical_debt',
|
|
421
|
+
priority: technicalDebt.total > 100 ? 'high' : 'medium',
|
|
422
|
+
reason: `${technicalDebt.total} ${technicalDebt.unit} of technical debt accumulated`,
|
|
423
|
+
steps: [
|
|
424
|
+
'Prioritize debt by business impact and effort',
|
|
425
|
+
'Allocate time in each sprint for debt reduction',
|
|
426
|
+
'Focus on high-ROI improvements first',
|
|
427
|
+
'Track debt trends over time'
|
|
428
|
+
],
|
|
429
|
+
automation: {
|
|
430
|
+
command: 'aqe analyze debt --prioritize',
|
|
431
|
+
canAutoFix: false,
|
|
432
|
+
confidence: 0.65,
|
|
433
|
+
estimatedTime: Math.ceil(technicalDebt.total / 2)
|
|
434
|
+
}
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* Create complexity action
|
|
439
|
+
*/
|
|
440
|
+
createComplexityAction(gate) {
|
|
441
|
+
return {
|
|
442
|
+
action: OutputFormatter_1.ActionTypes.REDUCE_COMPLEXITY,
|
|
443
|
+
priority: 'high',
|
|
444
|
+
reason: `Cyclomatic complexity exceeds threshold (${gate.actualValue} > ${gate.threshold})`,
|
|
445
|
+
steps: [
|
|
446
|
+
'Identify complex methods and functions',
|
|
447
|
+
'Extract nested logic into separate functions',
|
|
448
|
+
'Apply Single Responsibility Principle',
|
|
449
|
+
'Consider Strategy pattern for complex conditionals',
|
|
450
|
+
'Use early returns to reduce nesting'
|
|
451
|
+
],
|
|
452
|
+
automation: {
|
|
453
|
+
command: 'aqe analyze complexity --refactor-suggestions',
|
|
454
|
+
canAutoFix: false,
|
|
455
|
+
confidence: 0.55,
|
|
456
|
+
estimatedTime: 60
|
|
457
|
+
},
|
|
458
|
+
relatedDocs: [
|
|
459
|
+
'https://refactoring.guru/refactoring/techniques',
|
|
460
|
+
'/workspaces/agentic-qe-cf/docs/guides/reducing-complexity.md'
|
|
461
|
+
]
|
|
462
|
+
};
|
|
463
|
+
}
|
|
464
|
+
// ==================== Utility Methods ====================
|
|
465
|
+
/**
|
|
466
|
+
* Sort actions by priority
|
|
467
|
+
*/
|
|
468
|
+
sortActionsByPriority(actions) {
|
|
469
|
+
const priorityOrder = {
|
|
470
|
+
critical: 1,
|
|
471
|
+
high: 2,
|
|
472
|
+
medium: 3,
|
|
473
|
+
low: 4,
|
|
474
|
+
info: 5
|
|
475
|
+
};
|
|
476
|
+
return actions.sort((a, b) => priorityOrder[a.priority] - priorityOrder[b.priority]);
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* Calculate average flakiness score
|
|
480
|
+
*/
|
|
481
|
+
calculateAverageFlakinessScore(flaky) {
|
|
482
|
+
if (flaky.length === 0)
|
|
483
|
+
return 0;
|
|
484
|
+
const sum = flaky.reduce((acc, test) => acc + test.flakinessScore * 100, 0);
|
|
485
|
+
return sum / flaky.length;
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Round to 2 decimal places
|
|
489
|
+
*/
|
|
490
|
+
round(value) {
|
|
491
|
+
return Math.round(value * 100) / 100;
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
exports.AIActionSuggester = AIActionSuggester;
|
|
495
|
+
/**
|
|
496
|
+
* Default singleton instance
|
|
497
|
+
*/
|
|
498
|
+
exports.actionSuggester = new AIActionSuggester();
|
|
499
|
+
//# sourceMappingURL=AIActionSuggester.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIActionSuggester.js","sourceRoot":"","sources":["../../src/output/AIActionSuggester.ts"],"names":[],"mappings":"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"}
|