agentic-qe 1.0.5 → 1.1.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/.claude/agents/qe-quality-analyzer.md +405 -0
- package/CHANGELOG.md +109 -0
- package/CONTRIBUTING.md +51 -0
- package/README.md +669 -162
- package/bin/aqe +90 -938
- package/dist/adapters/MemoryStoreAdapter.d.ts.map +1 -1
- package/dist/adapters/MemoryStoreAdapter.js +6 -0
- package/dist/adapters/MemoryStoreAdapter.js.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.d.ts +58 -3
- package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.js +316 -48
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.d.ts +48 -4
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +217 -10
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/LearningAgent.d.ts +75 -0
- package/dist/agents/LearningAgent.d.ts.map +1 -0
- package/dist/agents/LearningAgent.js +177 -0
- package/dist/agents/LearningAgent.js.map +1 -0
- package/dist/agents/TestGeneratorAgent.d.ts +42 -2
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +232 -13
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/cli/commands/improve/index.d.ts +70 -0
- package/dist/cli/commands/improve/index.d.ts.map +1 -0
- package/dist/cli/commands/improve/index.js +530 -0
- package/dist/cli/commands/improve/index.js.map +1 -0
- package/dist/cli/commands/init.d.ts +33 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +656 -39
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/learn/index.d.ts +68 -0
- package/dist/cli/commands/learn/index.d.ts.map +1 -0
- package/dist/cli/commands/learn/index.js +431 -0
- package/dist/cli/commands/learn/index.js.map +1 -0
- package/dist/cli/commands/patterns/index.d.ts +75 -0
- package/dist/cli/commands/patterns/index.d.ts.map +1 -0
- package/dist/cli/commands/patterns/index.js +502 -0
- package/dist/cli/commands/patterns/index.js.map +1 -0
- package/dist/cli/index.js +367 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.d.ts +5 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.js +7 -0
- package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/learning/FlakyFixRecommendations.d.ts +40 -0
- package/dist/learning/FlakyFixRecommendations.d.ts.map +1 -0
- package/dist/learning/FlakyFixRecommendations.js +247 -0
- package/dist/learning/FlakyFixRecommendations.js.map +1 -0
- package/dist/learning/FlakyPredictionModel.d.ts +57 -0
- package/dist/learning/FlakyPredictionModel.d.ts.map +1 -0
- package/dist/learning/FlakyPredictionModel.js +289 -0
- package/dist/learning/FlakyPredictionModel.js.map +1 -0
- package/dist/learning/FlakyTestDetector.d.ts +46 -0
- package/dist/learning/FlakyTestDetector.d.ts.map +1 -0
- package/dist/learning/FlakyTestDetector.js +215 -0
- package/dist/learning/FlakyTestDetector.js.map +1 -0
- package/dist/learning/ImprovementLoop.d.ts +119 -0
- package/dist/learning/ImprovementLoop.d.ts.map +1 -0
- package/dist/learning/ImprovementLoop.js +353 -0
- package/dist/learning/ImprovementLoop.js.map +1 -0
- package/dist/learning/LearningEngine.d.ts +144 -0
- package/dist/learning/LearningEngine.d.ts.map +1 -0
- package/dist/learning/LearningEngine.js +531 -0
- package/dist/learning/LearningEngine.js.map +1 -0
- package/dist/learning/PerformanceTracker.d.ts +118 -0
- package/dist/learning/PerformanceTracker.d.ts.map +1 -0
- package/dist/learning/PerformanceTracker.js +376 -0
- package/dist/learning/PerformanceTracker.js.map +1 -0
- package/dist/learning/StatisticalAnalysis.d.ts +47 -0
- package/dist/learning/StatisticalAnalysis.d.ts.map +1 -0
- package/dist/learning/StatisticalAnalysis.js +170 -0
- package/dist/learning/StatisticalAnalysis.js.map +1 -0
- package/dist/learning/SwarmIntegration.d.ts +107 -0
- package/dist/learning/SwarmIntegration.d.ts.map +1 -0
- package/dist/learning/SwarmIntegration.js +191 -0
- package/dist/learning/SwarmIntegration.js.map +1 -0
- package/dist/learning/index.d.ts +10 -0
- package/dist/learning/index.d.ts.map +1 -0
- package/dist/learning/index.js +16 -0
- package/dist/learning/index.js.map +1 -0
- package/dist/learning/types.d.ts +288 -0
- package/dist/learning/types.d.ts.map +1 -0
- package/dist/learning/types.js +9 -0
- package/dist/learning/types.js.map +1 -0
- package/dist/mcp/handlers/phase2/Phase2Tools.d.ts +175 -0
- package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -0
- package/dist/mcp/handlers/phase2/Phase2Tools.js +693 -0
- package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +94 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts +15 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +17 -1
- package/dist/mcp/tools.js.map +1 -1
- package/dist/reasoning/CodeSignatureGenerator.d.ts +98 -0
- package/dist/reasoning/CodeSignatureGenerator.d.ts.map +1 -0
- package/dist/reasoning/CodeSignatureGenerator.js +427 -0
- package/dist/reasoning/CodeSignatureGenerator.js.map +1 -0
- package/dist/reasoning/PatternClassifier.d.ts +98 -0
- package/dist/reasoning/PatternClassifier.d.ts.map +1 -0
- package/dist/reasoning/PatternClassifier.js +345 -0
- package/dist/reasoning/PatternClassifier.js.map +1 -0
- package/dist/reasoning/PatternExtractor.d.ts +131 -0
- package/dist/reasoning/PatternExtractor.d.ts.map +1 -0
- package/dist/reasoning/PatternExtractor.js +539 -0
- package/dist/reasoning/PatternExtractor.js.map +1 -0
- package/dist/reasoning/PatternMemoryIntegration.d.ts +102 -0
- package/dist/reasoning/PatternMemoryIntegration.d.ts.map +1 -0
- package/dist/reasoning/PatternMemoryIntegration.js +336 -0
- package/dist/reasoning/PatternMemoryIntegration.js.map +1 -0
- package/dist/reasoning/QEReasoningBank.d.ts +121 -0
- package/dist/reasoning/QEReasoningBank.d.ts.map +1 -0
- package/dist/reasoning/QEReasoningBank.js +235 -0
- package/dist/reasoning/QEReasoningBank.js.map +1 -0
- package/dist/reasoning/TestTemplateCreator.d.ts +95 -0
- package/dist/reasoning/TestTemplateCreator.d.ts.map +1 -0
- package/dist/reasoning/TestTemplateCreator.js +535 -0
- package/dist/reasoning/TestTemplateCreator.js.map +1 -0
- package/dist/reasoning/index.d.ts +10 -0
- package/dist/reasoning/index.d.ts.map +1 -0
- package/dist/reasoning/index.js +31 -0
- package/dist/reasoning/index.js.map +1 -0
- package/dist/reasoning/types.d.ts +717 -0
- package/dist/reasoning/types.d.ts.map +1 -0
- package/dist/reasoning/types.js +57 -0
- package/dist/reasoning/types.js.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/pattern.types.d.ts +364 -0
- package/dist/types/pattern.types.d.ts.map +1 -0
- package/dist/types/pattern.types.js +60 -0
- package/dist/types/pattern.types.js.map +1 -0
- package/package.json +25 -3
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PerformanceTracker - Phase 2 (Milestone 2.2)
|
|
4
|
+
*
|
|
5
|
+
* Tracks agent performance metrics over time and calculates improvement rates.
|
|
6
|
+
* Target: 20% performance improvement over 30 days.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.PerformanceTracker = void 0;
|
|
10
|
+
const Logger_1 = require("../utils/Logger");
|
|
11
|
+
/**
|
|
12
|
+
* PerformanceTracker - Track and analyze agent performance over time
|
|
13
|
+
*/
|
|
14
|
+
class PerformanceTracker {
|
|
15
|
+
constructor(agentId, memoryStore) {
|
|
16
|
+
// Target metrics
|
|
17
|
+
this.TARGET_IMPROVEMENT = 0.20; // 20%
|
|
18
|
+
this.TARGET_PERIOD_DAYS = 30;
|
|
19
|
+
this.logger = Logger_1.Logger.getInstance();
|
|
20
|
+
this.agentId = agentId;
|
|
21
|
+
this.memoryStore = memoryStore;
|
|
22
|
+
this.snapshots = [];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Initialize the performance tracker
|
|
26
|
+
*/
|
|
27
|
+
async initialize() {
|
|
28
|
+
this.logger.info(`Initializing PerformanceTracker for agent ${this.agentId}`);
|
|
29
|
+
// Load previous snapshots
|
|
30
|
+
await this.loadSnapshots();
|
|
31
|
+
// Set baseline if not exists
|
|
32
|
+
if (!this.baselineMetrics && this.snapshots.length > 0) {
|
|
33
|
+
this.baselineMetrics = this.snapshots[0].metrics;
|
|
34
|
+
}
|
|
35
|
+
this.logger.info('PerformanceTracker initialized successfully');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Record current performance snapshot
|
|
39
|
+
*/
|
|
40
|
+
async recordSnapshot(metrics) {
|
|
41
|
+
const now = new Date();
|
|
42
|
+
const snapshot = {
|
|
43
|
+
timestamp: now,
|
|
44
|
+
metrics: {
|
|
45
|
+
agentId: this.agentId,
|
|
46
|
+
period: {
|
|
47
|
+
start: this.getLastSnapshotTime() || now,
|
|
48
|
+
end: now
|
|
49
|
+
},
|
|
50
|
+
...metrics
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
this.snapshots.push(snapshot);
|
|
54
|
+
// Set baseline if first snapshot
|
|
55
|
+
if (!this.baselineMetrics) {
|
|
56
|
+
this.baselineMetrics = snapshot.metrics;
|
|
57
|
+
await this.storeBaseline(this.baselineMetrics);
|
|
58
|
+
}
|
|
59
|
+
// Store snapshot
|
|
60
|
+
await this.storeSnapshot(snapshot);
|
|
61
|
+
// Prune old snapshots (keep 90 days)
|
|
62
|
+
await this.pruneOldSnapshots(90);
|
|
63
|
+
this.logger.debug(`Recorded performance snapshot for agent ${this.agentId}`);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Calculate current improvement rate vs baseline
|
|
67
|
+
*/
|
|
68
|
+
async calculateImprovement() {
|
|
69
|
+
if (!this.baselineMetrics || this.snapshots.length === 0) {
|
|
70
|
+
throw new Error('No baseline or snapshots available');
|
|
71
|
+
}
|
|
72
|
+
const currentMetrics = this.getCurrentMetrics();
|
|
73
|
+
const daysElapsed = this.getDaysElapsed();
|
|
74
|
+
// Calculate composite performance score
|
|
75
|
+
const baselineScore = this.calculatePerformanceScore(this.baselineMetrics);
|
|
76
|
+
const currentScore = this.calculatePerformanceScore(currentMetrics);
|
|
77
|
+
const improvementRate = ((currentScore - baselineScore) / baselineScore) * 100;
|
|
78
|
+
const targetAchieved = improvementRate >= (this.TARGET_IMPROVEMENT * 100);
|
|
79
|
+
const improvement = {
|
|
80
|
+
agentId: this.agentId,
|
|
81
|
+
baseline: this.baselineMetrics,
|
|
82
|
+
current: currentMetrics,
|
|
83
|
+
improvementRate,
|
|
84
|
+
daysElapsed,
|
|
85
|
+
targetAchieved
|
|
86
|
+
};
|
|
87
|
+
// Store improvement data
|
|
88
|
+
await this.memoryStore.store(`phase2/learning/${this.agentId}/improvement`, improvement, { partition: 'learning' });
|
|
89
|
+
return improvement;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get improvement trend over time
|
|
93
|
+
*/
|
|
94
|
+
async getImprovementTrend(days = 30) {
|
|
95
|
+
if (!this.baselineMetrics) {
|
|
96
|
+
throw new Error('No baseline available');
|
|
97
|
+
}
|
|
98
|
+
const cutoffDate = new Date();
|
|
99
|
+
cutoffDate.setDate(cutoffDate.getDate() - days);
|
|
100
|
+
const recentSnapshots = this.snapshots.filter(s => s.timestamp >= cutoffDate);
|
|
101
|
+
const baselineScore = this.calculatePerformanceScore(this.baselineMetrics);
|
|
102
|
+
const timeline = recentSnapshots.map(snapshot => ({
|
|
103
|
+
date: snapshot.timestamp,
|
|
104
|
+
improvementRate: ((this.calculatePerformanceScore(snapshot.metrics) - baselineScore) / baselineScore) * 100
|
|
105
|
+
}));
|
|
106
|
+
const currentRate = timeline.length > 0 ? timeline[timeline.length - 1].improvementRate : 0;
|
|
107
|
+
// Project 30-day improvement based on current trend
|
|
108
|
+
const projected30Day = this.projectImprovement(timeline, 30);
|
|
109
|
+
return {
|
|
110
|
+
timeline,
|
|
111
|
+
currentRate,
|
|
112
|
+
projected30Day
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get performance metrics for a specific time period
|
|
117
|
+
*/
|
|
118
|
+
async getMetricsForPeriod(startDate, endDate) {
|
|
119
|
+
const periodSnapshots = this.snapshots.filter(s => s.timestamp >= startDate && s.timestamp <= endDate);
|
|
120
|
+
if (periodSnapshots.length === 0) {
|
|
121
|
+
throw new Error('No snapshots found for the specified period');
|
|
122
|
+
}
|
|
123
|
+
// Aggregate metrics
|
|
124
|
+
const aggregated = this.aggregateMetrics(periodSnapshots.map(s => s.metrics));
|
|
125
|
+
return {
|
|
126
|
+
agentId: this.agentId,
|
|
127
|
+
period: { start: startDate, end: endDate },
|
|
128
|
+
metrics: aggregated.metrics,
|
|
129
|
+
trends: this.calculateTrends(periodSnapshots)
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Generate performance report
|
|
134
|
+
*/
|
|
135
|
+
async generateReport() {
|
|
136
|
+
const improvement = await this.calculateImprovement();
|
|
137
|
+
const currentMetrics = this.getCurrentMetrics();
|
|
138
|
+
const summary = this.generateSummary(improvement);
|
|
139
|
+
const recommendations = this.generateRecommendations(improvement, currentMetrics);
|
|
140
|
+
return {
|
|
141
|
+
summary,
|
|
142
|
+
improvement,
|
|
143
|
+
trends: currentMetrics.trends,
|
|
144
|
+
recommendations
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Calculate composite performance score
|
|
149
|
+
*/
|
|
150
|
+
calculatePerformanceScore(metrics) {
|
|
151
|
+
const weights = {
|
|
152
|
+
successRate: 0.30,
|
|
153
|
+
userSatisfaction: 0.25,
|
|
154
|
+
executionTime: 0.20,
|
|
155
|
+
errorRate: 0.15,
|
|
156
|
+
resourceEfficiency: 0.10
|
|
157
|
+
};
|
|
158
|
+
// Normalize execution time (lower is better)
|
|
159
|
+
const normalizedTime = Math.max(0, 1 - (metrics.metrics.averageExecutionTime / 60000)); // 1 min baseline
|
|
160
|
+
// Normalize error rate (lower is better)
|
|
161
|
+
const normalizedErrorRate = Math.max(0, 1 - metrics.metrics.errorRate);
|
|
162
|
+
const score = metrics.metrics.successRate * weights.successRate +
|
|
163
|
+
metrics.metrics.userSatisfaction * weights.userSatisfaction +
|
|
164
|
+
normalizedTime * weights.executionTime +
|
|
165
|
+
normalizedErrorRate * weights.errorRate +
|
|
166
|
+
metrics.metrics.resourceEfficiency * weights.resourceEfficiency;
|
|
167
|
+
return score;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Aggregate metrics from multiple snapshots
|
|
171
|
+
*/
|
|
172
|
+
aggregateMetrics(metricsList) {
|
|
173
|
+
const count = metricsList.length;
|
|
174
|
+
const aggregated = {
|
|
175
|
+
tasksCompleted: metricsList.reduce((sum, m) => sum + m.metrics.tasksCompleted, 0),
|
|
176
|
+
successRate: metricsList.reduce((sum, m) => sum + m.metrics.successRate, 0) / count,
|
|
177
|
+
averageExecutionTime: metricsList.reduce((sum, m) => sum + m.metrics.averageExecutionTime, 0) / count,
|
|
178
|
+
errorRate: metricsList.reduce((sum, m) => sum + m.metrics.errorRate, 0) / count,
|
|
179
|
+
userSatisfaction: metricsList.reduce((sum, m) => sum + m.metrics.userSatisfaction, 0) / count,
|
|
180
|
+
resourceEfficiency: metricsList.reduce((sum, m) => sum + m.metrics.resourceEfficiency, 0) / count
|
|
181
|
+
};
|
|
182
|
+
return {
|
|
183
|
+
agentId: this.agentId,
|
|
184
|
+
period: {
|
|
185
|
+
start: metricsList[0].period.start,
|
|
186
|
+
end: metricsList[metricsList.length - 1].period.end
|
|
187
|
+
},
|
|
188
|
+
metrics: aggregated,
|
|
189
|
+
trends: []
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Calculate trends from snapshots
|
|
194
|
+
*/
|
|
195
|
+
calculateTrends(snapshots) {
|
|
196
|
+
if (snapshots.length < 2) {
|
|
197
|
+
return [];
|
|
198
|
+
}
|
|
199
|
+
const first = snapshots[0].metrics.metrics;
|
|
200
|
+
const last = snapshots[snapshots.length - 1].metrics.metrics;
|
|
201
|
+
const calculateTrend = (metric, firstValue, lastValue) => {
|
|
202
|
+
const change = lastValue - firstValue;
|
|
203
|
+
const changeRate = (change / firstValue) * 100;
|
|
204
|
+
return {
|
|
205
|
+
metric,
|
|
206
|
+
direction: (change > 0.05 ? 'up' : change < -0.05 ? 'down' : 'stable'),
|
|
207
|
+
changeRate
|
|
208
|
+
};
|
|
209
|
+
};
|
|
210
|
+
return [
|
|
211
|
+
calculateTrend('successRate', first.successRate, last.successRate),
|
|
212
|
+
calculateTrend('averageExecutionTime', first.averageExecutionTime, last.averageExecutionTime),
|
|
213
|
+
calculateTrend('errorRate', first.errorRate, last.errorRate),
|
|
214
|
+
calculateTrend('userSatisfaction', first.userSatisfaction, last.userSatisfaction),
|
|
215
|
+
calculateTrend('resourceEfficiency', first.resourceEfficiency, last.resourceEfficiency)
|
|
216
|
+
];
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Project future improvement based on current trend
|
|
220
|
+
*/
|
|
221
|
+
projectImprovement(timeline, days) {
|
|
222
|
+
if (timeline.length < 2) {
|
|
223
|
+
return 0;
|
|
224
|
+
}
|
|
225
|
+
// Calculate linear regression
|
|
226
|
+
const n = timeline.length;
|
|
227
|
+
const x = timeline.map((_, i) => i); // days index
|
|
228
|
+
const y = timeline.map(t => t.improvementRate);
|
|
229
|
+
const sumX = x.reduce((a, b) => a + b, 0);
|
|
230
|
+
const sumY = y.reduce((a, b) => a + b, 0);
|
|
231
|
+
const sumXY = x.reduce((sum, xi, i) => sum + xi * y[i], 0);
|
|
232
|
+
const sumX2 = x.reduce((sum, xi) => sum + xi * xi, 0);
|
|
233
|
+
const slope = (n * sumXY - sumX * sumY) / (n * sumX2 - sumX * sumX);
|
|
234
|
+
const intercept = (sumY - slope * sumX) / n;
|
|
235
|
+
// Project to target days
|
|
236
|
+
const projectedValue = slope * days + intercept;
|
|
237
|
+
return projectedValue;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Generate summary text
|
|
241
|
+
*/
|
|
242
|
+
generateSummary(improvement) {
|
|
243
|
+
const { improvementRate, daysElapsed, targetAchieved } = improvement;
|
|
244
|
+
let summary = `Agent ${this.agentId} performance: `;
|
|
245
|
+
if (targetAchieved) {
|
|
246
|
+
summary += `✓ Target achieved! ${improvementRate.toFixed(1)}% improvement over ${daysElapsed} days.`;
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
summary += `${improvementRate.toFixed(1)}% improvement over ${daysElapsed} days. `;
|
|
250
|
+
const remaining = (this.TARGET_IMPROVEMENT * 100) - improvementRate;
|
|
251
|
+
summary += `${remaining.toFixed(1)}% improvement needed to reach 20% target.`;
|
|
252
|
+
}
|
|
253
|
+
return summary;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Generate recommendations based on performance
|
|
257
|
+
*/
|
|
258
|
+
generateRecommendations(improvement, currentMetrics) {
|
|
259
|
+
const recommendations = [];
|
|
260
|
+
// Check success rate
|
|
261
|
+
if (currentMetrics.metrics.successRate < 0.9) {
|
|
262
|
+
recommendations.push('Focus on improving task success rate through better error handling and retry strategies');
|
|
263
|
+
}
|
|
264
|
+
// Check execution time
|
|
265
|
+
if (currentMetrics.metrics.averageExecutionTime > 30000) {
|
|
266
|
+
recommendations.push('Optimize execution time by enabling parallel processing and caching');
|
|
267
|
+
}
|
|
268
|
+
// Check error rate
|
|
269
|
+
if (currentMetrics.metrics.errorRate > 0.1) {
|
|
270
|
+
recommendations.push('Reduce error rate by implementing more robust validation and edge case handling');
|
|
271
|
+
}
|
|
272
|
+
// Check user satisfaction
|
|
273
|
+
if (currentMetrics.metrics.userSatisfaction < 0.8) {
|
|
274
|
+
recommendations.push('Improve user satisfaction by enhancing output quality and documentation');
|
|
275
|
+
}
|
|
276
|
+
// Check improvement rate
|
|
277
|
+
if (improvement.improvementRate < 10 && improvement.daysElapsed > 15) {
|
|
278
|
+
recommendations.push('Consider adjusting learning rate or exploring different strategies');
|
|
279
|
+
}
|
|
280
|
+
if (recommendations.length === 0) {
|
|
281
|
+
recommendations.push('Performance is excellent! Continue current strategies and maintain quality.');
|
|
282
|
+
}
|
|
283
|
+
return recommendations;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Get current metrics (most recent snapshot)
|
|
287
|
+
*/
|
|
288
|
+
getCurrentMetrics() {
|
|
289
|
+
if (this.snapshots.length === 0) {
|
|
290
|
+
throw new Error('No snapshots available');
|
|
291
|
+
}
|
|
292
|
+
return this.snapshots[this.snapshots.length - 1].metrics;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Get days elapsed since baseline
|
|
296
|
+
*/
|
|
297
|
+
getDaysElapsed() {
|
|
298
|
+
if (!this.baselineMetrics) {
|
|
299
|
+
return 0;
|
|
300
|
+
}
|
|
301
|
+
const now = new Date();
|
|
302
|
+
const baseline = this.baselineMetrics.period.start;
|
|
303
|
+
const diff = now.getTime() - baseline.getTime();
|
|
304
|
+
return diff / (1000 * 60 * 60 * 24); // convert to days
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Get last snapshot timestamp
|
|
308
|
+
*/
|
|
309
|
+
getLastSnapshotTime() {
|
|
310
|
+
if (this.snapshots.length === 0) {
|
|
311
|
+
return null;
|
|
312
|
+
}
|
|
313
|
+
return this.snapshots[this.snapshots.length - 1].timestamp;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Store snapshot in memory
|
|
317
|
+
*/
|
|
318
|
+
async storeSnapshot(snapshot) {
|
|
319
|
+
const key = `phase2/learning/${this.agentId}/snapshots/${snapshot.timestamp.getTime()}`;
|
|
320
|
+
await this.memoryStore.store(key, snapshot, { partition: 'learning' });
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Store baseline metrics
|
|
324
|
+
*/
|
|
325
|
+
async storeBaseline(baseline) {
|
|
326
|
+
await this.memoryStore.store(`phase2/learning/${this.agentId}/baseline`, baseline, { partition: 'learning' });
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Load snapshots from memory
|
|
330
|
+
*/
|
|
331
|
+
async loadSnapshots() {
|
|
332
|
+
try {
|
|
333
|
+
// Load baseline
|
|
334
|
+
const baseline = await this.memoryStore.retrieve(`phase2/learning/${this.agentId}/baseline`, { partition: 'learning' });
|
|
335
|
+
if (baseline) {
|
|
336
|
+
this.baselineMetrics = baseline;
|
|
337
|
+
}
|
|
338
|
+
// Load snapshots (query pattern)
|
|
339
|
+
const snapshotEntries = await this.memoryStore.query(`phase2/learning/${this.agentId}/snapshots/%`, { partition: 'learning' });
|
|
340
|
+
this.snapshots = snapshotEntries
|
|
341
|
+
.map(entry => entry.value)
|
|
342
|
+
.sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());
|
|
343
|
+
this.logger.info(`Loaded ${this.snapshots.length} performance snapshots`);
|
|
344
|
+
}
|
|
345
|
+
catch (error) {
|
|
346
|
+
this.logger.warn('No previous performance data found, starting fresh');
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Prune old snapshots
|
|
351
|
+
*/
|
|
352
|
+
async pruneOldSnapshots(keepDays) {
|
|
353
|
+
const cutoffDate = new Date();
|
|
354
|
+
cutoffDate.setDate(cutoffDate.getDate() - keepDays);
|
|
355
|
+
const before = this.snapshots.length;
|
|
356
|
+
this.snapshots = this.snapshots.filter(s => s.timestamp >= cutoffDate);
|
|
357
|
+
const after = this.snapshots.length;
|
|
358
|
+
if (before > after) {
|
|
359
|
+
this.logger.info(`Pruned ${before - after} old snapshots`);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Get total snapshots count
|
|
364
|
+
*/
|
|
365
|
+
getSnapshotCount() {
|
|
366
|
+
return this.snapshots.length;
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Get baseline metrics
|
|
370
|
+
*/
|
|
371
|
+
getBaseline() {
|
|
372
|
+
return this.baselineMetrics;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
exports.PerformanceTracker = PerformanceTracker;
|
|
376
|
+
//# sourceMappingURL=PerformanceTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PerformanceTracker.js","sourceRoot":"","sources":["../../src/learning/PerformanceTracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Statistical Analysis Tools for Flaky Test Detection
|
|
3
|
+
* Provides statistical methods for analyzing test result patterns
|
|
4
|
+
*/
|
|
5
|
+
import type { TestResult, StatisticalMetrics } from './types';
|
|
6
|
+
export declare class StatisticalAnalysis {
|
|
7
|
+
/**
|
|
8
|
+
* Calculate pass rate for a set of test results
|
|
9
|
+
*/
|
|
10
|
+
static calculatePassRate(results: TestResult[]): number;
|
|
11
|
+
/**
|
|
12
|
+
* Calculate variance in test execution times
|
|
13
|
+
*/
|
|
14
|
+
static calculateVariance(results: TestResult[]): number;
|
|
15
|
+
/**
|
|
16
|
+
* Calculate confidence interval for pass rate
|
|
17
|
+
* Returns confidence level (0-1) based on sample size and consistency
|
|
18
|
+
*/
|
|
19
|
+
static calculateConfidence(results: TestResult[]): number;
|
|
20
|
+
/**
|
|
21
|
+
* Calculate comprehensive statistical metrics
|
|
22
|
+
*/
|
|
23
|
+
static calculateMetrics(values: number[]): StatisticalMetrics;
|
|
24
|
+
/**
|
|
25
|
+
* Detect trends in test results over time
|
|
26
|
+
* Returns positive number for improving, negative for degrading
|
|
27
|
+
*/
|
|
28
|
+
static detectTrend(results: TestResult[]): number;
|
|
29
|
+
/**
|
|
30
|
+
* Calculate z-scores for all test results
|
|
31
|
+
*/
|
|
32
|
+
static calculateZScores(results: TestResult[]): number[];
|
|
33
|
+
/**
|
|
34
|
+
* Identify outliers using IQR method
|
|
35
|
+
*/
|
|
36
|
+
static identifyOutliers(values: number[]): number[];
|
|
37
|
+
/**
|
|
38
|
+
* Check if test shows flaky characteristics
|
|
39
|
+
*/
|
|
40
|
+
static isFlakyCandidate(passRate: number, variance: number): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Calculate correlation between two series
|
|
43
|
+
*/
|
|
44
|
+
static calculateCorrelation(x: number[], y: number[]): number;
|
|
45
|
+
private static calculateMean;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=StatisticalAnalysis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatisticalAnalysis.d.ts","sourceRoot":"","sources":["../../src/learning/StatisticalAnalysis.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE9D,qBAAa,mBAAmB;IAC9B;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM;IAMvD;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM;IASvD;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM;IAgBzD;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,kBAAkB;IA4C7D;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM;IAiBjD;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE;IAUxD;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAiBnD;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAUpE;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;IAuB7D,OAAO,CAAC,MAAM,CAAC,aAAa;CAI7B"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Statistical Analysis Tools for Flaky Test Detection
|
|
4
|
+
* Provides statistical methods for analyzing test result patterns
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.StatisticalAnalysis = void 0;
|
|
8
|
+
class StatisticalAnalysis {
|
|
9
|
+
/**
|
|
10
|
+
* Calculate pass rate for a set of test results
|
|
11
|
+
*/
|
|
12
|
+
static calculatePassRate(results) {
|
|
13
|
+
if (results.length === 0)
|
|
14
|
+
return 0;
|
|
15
|
+
const passed = results.filter(r => r.passed).length;
|
|
16
|
+
return passed / results.length;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Calculate variance in test execution times
|
|
20
|
+
*/
|
|
21
|
+
static calculateVariance(results) {
|
|
22
|
+
if (results.length < 2)
|
|
23
|
+
return 0;
|
|
24
|
+
const durations = results.map(r => r.duration);
|
|
25
|
+
const mean = this.calculateMean(durations);
|
|
26
|
+
const squaredDiffs = durations.map(d => Math.pow(d - mean, 2));
|
|
27
|
+
return squaredDiffs.reduce((a, b) => a + b, 0) / durations.length;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Calculate confidence interval for pass rate
|
|
31
|
+
* Returns confidence level (0-1) based on sample size and consistency
|
|
32
|
+
*/
|
|
33
|
+
static calculateConfidence(results) {
|
|
34
|
+
if (results.length === 0)
|
|
35
|
+
return 0;
|
|
36
|
+
// Confidence increases with sample size
|
|
37
|
+
const sampleSizeConfidence = Math.min(results.length / 100, 1);
|
|
38
|
+
// Confidence decreases with variance
|
|
39
|
+
const variance = this.calculateVariance(results);
|
|
40
|
+
const mean = this.calculateMean(results.map(r => r.duration));
|
|
41
|
+
const coefficientOfVariation = mean > 0 ? Math.sqrt(variance) / mean : 0;
|
|
42
|
+
const varianceConfidence = 1 - Math.min(coefficientOfVariation, 1);
|
|
43
|
+
// Combined confidence score
|
|
44
|
+
return (sampleSizeConfidence * 0.6 + varianceConfidence * 0.4);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Calculate comprehensive statistical metrics
|
|
48
|
+
*/
|
|
49
|
+
static calculateMetrics(values) {
|
|
50
|
+
if (values.length === 0) {
|
|
51
|
+
return {
|
|
52
|
+
mean: 0,
|
|
53
|
+
median: 0,
|
|
54
|
+
variance: 0,
|
|
55
|
+
stdDev: 0,
|
|
56
|
+
min: 0,
|
|
57
|
+
max: 0,
|
|
58
|
+
coefficientOfVariation: 0,
|
|
59
|
+
outliers: []
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const sorted = [...values].sort((a, b) => a - b);
|
|
63
|
+
const mean = this.calculateMean(values);
|
|
64
|
+
const variance = this.calculateVariance(values.map(v => ({ duration: v, name: '', passed: true, timestamp: 0 })));
|
|
65
|
+
const stdDev = Math.sqrt(variance);
|
|
66
|
+
const median = sorted.length % 2 === 0
|
|
67
|
+
? (sorted[sorted.length / 2 - 1] + sorted[sorted.length / 2]) / 2
|
|
68
|
+
: sorted[Math.floor(sorted.length / 2)];
|
|
69
|
+
// Calculate coefficient of variation
|
|
70
|
+
const coefficientOfVariation = mean > 0 ? stdDev / mean : 0;
|
|
71
|
+
// Identify outliers using z-score method
|
|
72
|
+
const outliers = values.filter(v => {
|
|
73
|
+
const zScore = stdDev > 0 ? Math.abs((v - mean) / stdDev) : 0;
|
|
74
|
+
return zScore > 2;
|
|
75
|
+
});
|
|
76
|
+
return {
|
|
77
|
+
mean,
|
|
78
|
+
median,
|
|
79
|
+
variance,
|
|
80
|
+
stdDev,
|
|
81
|
+
min: sorted[0],
|
|
82
|
+
max: sorted[sorted.length - 1],
|
|
83
|
+
coefficientOfVariation,
|
|
84
|
+
outliers
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Detect trends in test results over time
|
|
89
|
+
* Returns positive number for improving, negative for degrading
|
|
90
|
+
*/
|
|
91
|
+
static detectTrend(results) {
|
|
92
|
+
if (results.length < 3)
|
|
93
|
+
return 0;
|
|
94
|
+
// Sort by timestamp
|
|
95
|
+
const sorted = [...results].sort((a, b) => a.timestamp - b.timestamp);
|
|
96
|
+
// Split into two halves and compare pass rates
|
|
97
|
+
const midpoint = Math.floor(sorted.length / 2);
|
|
98
|
+
const firstHalf = sorted.slice(0, midpoint);
|
|
99
|
+
const secondHalf = sorted.slice(midpoint);
|
|
100
|
+
const firstPassRate = this.calculatePassRate(firstHalf);
|
|
101
|
+
const secondPassRate = this.calculatePassRate(secondHalf);
|
|
102
|
+
return secondPassRate - firstPassRate;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Calculate z-scores for all test results
|
|
106
|
+
*/
|
|
107
|
+
static calculateZScores(results) {
|
|
108
|
+
const durations = results.map(r => r.duration);
|
|
109
|
+
const mean = this.calculateMean(durations);
|
|
110
|
+
const stdDev = Math.sqrt(this.calculateVariance(results));
|
|
111
|
+
if (stdDev === 0)
|
|
112
|
+
return durations.map(() => 0);
|
|
113
|
+
return durations.map(d => (d - mean) / stdDev);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Identify outliers using IQR method
|
|
117
|
+
*/
|
|
118
|
+
static identifyOutliers(values) {
|
|
119
|
+
if (values.length < 4)
|
|
120
|
+
return [];
|
|
121
|
+
const sorted = [...values].sort((a, b) => a - b);
|
|
122
|
+
const q1Index = Math.floor(sorted.length * 0.25);
|
|
123
|
+
const q3Index = Math.floor(sorted.length * 0.75);
|
|
124
|
+
const q1 = sorted[q1Index];
|
|
125
|
+
const q3 = sorted[q3Index];
|
|
126
|
+
const iqr = q3 - q1;
|
|
127
|
+
const lowerBound = q1 - 1.5 * iqr;
|
|
128
|
+
const upperBound = q3 + 1.5 * iqr;
|
|
129
|
+
return values.filter(v => v < lowerBound || v > upperBound);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Check if test shows flaky characteristics
|
|
133
|
+
*/
|
|
134
|
+
static isFlakyCandidate(passRate, variance) {
|
|
135
|
+
// Flaky if pass rate between 20% and 80%
|
|
136
|
+
const hasIntermittentFailures = passRate > 0.2 && passRate < 0.8;
|
|
137
|
+
// High variance indicates inconsistent behavior
|
|
138
|
+
const hasHighVariance = variance > 1000; // Threshold for duration variance
|
|
139
|
+
return hasIntermittentFailures || (passRate < 0.95 && hasHighVariance);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Calculate correlation between two series
|
|
143
|
+
*/
|
|
144
|
+
static calculateCorrelation(x, y) {
|
|
145
|
+
if (x.length !== y.length || x.length === 0)
|
|
146
|
+
return 0;
|
|
147
|
+
const meanX = this.calculateMean(x);
|
|
148
|
+
const meanY = this.calculateMean(y);
|
|
149
|
+
let numerator = 0;
|
|
150
|
+
let denomX = 0;
|
|
151
|
+
let denomY = 0;
|
|
152
|
+
for (let i = 0; i < x.length; i++) {
|
|
153
|
+
const diffX = x[i] - meanX;
|
|
154
|
+
const diffY = y[i] - meanY;
|
|
155
|
+
numerator += diffX * diffY;
|
|
156
|
+
denomX += diffX * diffX;
|
|
157
|
+
denomY += diffY * diffY;
|
|
158
|
+
}
|
|
159
|
+
const denom = Math.sqrt(denomX * denomY);
|
|
160
|
+
return denom === 0 ? 0 : numerator / denom;
|
|
161
|
+
}
|
|
162
|
+
// Helper methods
|
|
163
|
+
static calculateMean(values) {
|
|
164
|
+
if (values.length === 0)
|
|
165
|
+
return 0;
|
|
166
|
+
return values.reduce((a, b) => a + b, 0) / values.length;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
exports.StatisticalAnalysis = StatisticalAnalysis;
|
|
170
|
+
//# sourceMappingURL=StatisticalAnalysis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatisticalAnalysis.js","sourceRoot":"","sources":["../../src/learning/StatisticalAnalysis.ts"],"names":[],"mappings":"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"}
|