agentic-qe 1.3.3 → 1.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/.claude/agents/qe-api-contract-validator.md +20 -0
  2. package/.claude/agents/qe-chaos-engineer.md +20 -0
  3. package/.claude/agents/qe-coverage-analyzer.md +21 -0
  4. package/.claude/agents/qe-deployment-readiness.md +20 -0
  5. package/.claude/agents/qe-flaky-test-hunter.md +20 -0
  6. package/.claude/agents/qe-fleet-commander.md +20 -0
  7. package/.claude/agents/qe-performance-tester.md +21 -0
  8. package/.claude/agents/qe-production-intelligence.md +20 -0
  9. package/.claude/agents/qe-quality-analyzer.md +20 -0
  10. package/.claude/agents/qe-quality-gate.md +20 -0
  11. package/.claude/agents/qe-regression-risk-analyzer.md +20 -0
  12. package/.claude/agents/qe-requirements-validator.md +20 -0
  13. package/.claude/agents/qe-security-scanner.md +21 -0
  14. package/.claude/agents/qe-test-data-architect.md +19 -0
  15. package/.claude/agents/qe-test-executor.md +20 -0
  16. package/.claude/agents/qe-test-generator.md +22 -0
  17. package/.claude/agents/qe-visual-tester.md +22 -0
  18. package/CHANGELOG.md +252 -0
  19. package/README.md +325 -1019
  20. package/README.md.backup-20251026 +1366 -0
  21. package/bin/aqe-mcp +1 -1
  22. package/dist/agents/BaseAgent.js +1 -1
  23. package/dist/agents/BaseAgent.js.map +1 -1
  24. package/dist/agents/CoverageAnalyzerAgent.js +16 -16
  25. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  26. package/dist/agents/FlakyTestHunterAgent.js +1 -1
  27. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  28. package/dist/cli/commands/init.d.ts.map +1 -1
  29. package/dist/cli/commands/init.js +71 -37
  30. package/dist/cli/commands/init.js.map +1 -1
  31. package/dist/cli/commands/routing/index.d.ts +1 -1
  32. package/dist/cli/commands/routing/index.d.ts.map +1 -1
  33. package/dist/cli/commands/routing/index.js +29 -19
  34. package/dist/cli/commands/routing/index.js.map +1 -1
  35. package/dist/core/memory/EnhancedAgentDBService.d.ts +127 -0
  36. package/dist/core/memory/EnhancedAgentDBService.d.ts.map +1 -0
  37. package/dist/core/memory/EnhancedAgentDBService.js +298 -0
  38. package/dist/core/memory/EnhancedAgentDBService.js.map +1 -0
  39. package/dist/core/neural/NeuralTrainer.js +2 -2
  40. package/dist/core/neural/NeuralTrainer.js.map +1 -1
  41. package/dist/learning/ExperienceReplayBuffer.d.ts +143 -0
  42. package/dist/learning/ExperienceReplayBuffer.d.ts.map +1 -0
  43. package/dist/learning/ExperienceReplayBuffer.js +255 -0
  44. package/dist/learning/ExperienceReplayBuffer.js.map +1 -0
  45. package/dist/learning/FixRecommendationEngine.d.ts +68 -0
  46. package/dist/learning/FixRecommendationEngine.d.ts.map +1 -0
  47. package/dist/learning/FixRecommendationEngine.js +500 -0
  48. package/dist/learning/FixRecommendationEngine.js.map +1 -0
  49. package/dist/learning/FlakyTestDetector.d.ts +19 -0
  50. package/dist/learning/FlakyTestDetector.d.ts.map +1 -1
  51. package/dist/learning/FlakyTestDetector.js +121 -2
  52. package/dist/learning/FlakyTestDetector.js.map +1 -1
  53. package/dist/learning/LearningEngine.d.ts +50 -1
  54. package/dist/learning/LearningEngine.d.ts.map +1 -1
  55. package/dist/learning/LearningEngine.js +140 -0
  56. package/dist/learning/LearningEngine.js.map +1 -1
  57. package/dist/learning/QLearning.d.ts +154 -0
  58. package/dist/learning/QLearning.d.ts.map +1 -0
  59. package/dist/learning/QLearning.js +337 -0
  60. package/dist/learning/QLearning.js.map +1 -0
  61. package/dist/learning/index.d.ts +4 -0
  62. package/dist/learning/index.d.ts.map +1 -1
  63. package/dist/learning/index.js +7 -0
  64. package/dist/learning/index.js.map +1 -1
  65. package/dist/learning/types.d.ts +11 -0
  66. package/dist/learning/types.d.ts.map +1 -1
  67. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts +11 -1
  68. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts.map +1 -1
  69. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js +12 -0
  70. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js.map +1 -1
  71. package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts +10 -1
  72. package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts.map +1 -1
  73. package/dist/mcp/streaming/TestExecuteStreamHandler.js +11 -0
  74. package/dist/mcp/streaming/TestExecuteStreamHandler.js.map +1 -1
  75. package/dist/reasoning/PatternQualityScorer.d.ts +134 -0
  76. package/dist/reasoning/PatternQualityScorer.d.ts.map +1 -0
  77. package/dist/reasoning/PatternQualityScorer.js +340 -0
  78. package/dist/reasoning/PatternQualityScorer.js.map +1 -0
  79. package/dist/reasoning/QEReasoningBank.d.ts +138 -4
  80. package/dist/reasoning/QEReasoningBank.d.ts.map +1 -1
  81. package/dist/reasoning/QEReasoningBank.js +560 -12
  82. package/dist/reasoning/QEReasoningBank.js.map +1 -1
  83. package/dist/reasoning/VectorSimilarity.d.ts +131 -0
  84. package/dist/reasoning/VectorSimilarity.d.ts.map +1 -0
  85. package/dist/reasoning/VectorSimilarity.js +250 -0
  86. package/dist/reasoning/VectorSimilarity.js.map +1 -0
  87. package/dist/reasoning/index.d.ts +8 -1
  88. package/dist/reasoning/index.d.ts.map +1 -1
  89. package/dist/reasoning/index.js +13 -2
  90. package/dist/reasoning/index.js.map +1 -1
  91. package/dist/streaming/BaseStreamHandler.d.ts +89 -0
  92. package/dist/streaming/BaseStreamHandler.d.ts.map +1 -0
  93. package/dist/streaming/BaseStreamHandler.js +168 -0
  94. package/dist/streaming/BaseStreamHandler.js.map +1 -0
  95. package/dist/streaming/TestGenerateStreamHandler.d.ts +103 -0
  96. package/dist/streaming/TestGenerateStreamHandler.d.ts.map +1 -0
  97. package/dist/streaming/TestGenerateStreamHandler.js +321 -0
  98. package/dist/streaming/TestGenerateStreamHandler.js.map +1 -0
  99. package/dist/streaming/index.d.ts +16 -0
  100. package/dist/streaming/index.d.ts.map +1 -0
  101. package/dist/streaming/index.js +39 -0
  102. package/dist/streaming/index.js.map +1 -0
  103. package/dist/utils/__mocks__/Logger.d.ts +26 -0
  104. package/dist/utils/__mocks__/Logger.d.ts.map +1 -0
  105. package/dist/utils/__mocks__/Logger.js +42 -0
  106. package/dist/utils/__mocks__/Logger.js.map +1 -0
  107. package/package.json +15 -3
  108. package/dist/agents/mixins/NeuralCapableMixin.d.ts +0 -130
  109. package/dist/agents/mixins/NeuralCapableMixin.d.ts.map +0 -1
  110. package/dist/agents/mixins/NeuralCapableMixin.js +0 -358
  111. package/dist/agents/mixins/NeuralCapableMixin.js.map +0 -1
  112. package/dist/agents/mixins/QUICCapableMixin.d.ts +0 -34
  113. package/dist/agents/mixins/QUICCapableMixin.d.ts.map +0 -1
  114. package/dist/agents/mixins/QUICCapableMixin.js +0 -346
  115. package/dist/agents/mixins/QUICCapableMixin.js.map +0 -1
  116. package/dist/core/security/CertificateValidator.d.ts +0 -130
  117. package/dist/core/security/CertificateValidator.d.ts.map +0 -1
  118. package/dist/core/security/CertificateValidator.js +0 -376
  119. package/dist/core/security/CertificateValidator.js.map +0 -1
  120. package/dist/core/transport/QUICTransport.d.ts +0 -62
  121. package/dist/core/transport/QUICTransport.d.ts.map +0 -1
  122. package/dist/core/transport/QUICTransport.js +0 -381
  123. package/dist/core/transport/QUICTransport.js.map +0 -1
  124. package/dist/core/transport/SecureQUICTransport.d.ts +0 -71
  125. package/dist/core/transport/SecureQUICTransport.d.ts.map +0 -1
  126. package/dist/core/transport/SecureQUICTransport.js +0 -253
  127. package/dist/core/transport/SecureQUICTransport.js.map +0 -1
  128. package/dist/learning/AdvancedFeatureExtractor.d.ts +0 -123
  129. package/dist/learning/AdvancedFeatureExtractor.d.ts.map +0 -1
  130. package/dist/learning/AdvancedFeatureExtractor.js +0 -423
  131. package/dist/learning/AdvancedFeatureExtractor.js.map +0 -1
  132. package/dist/learning/NeuralPatternMatcher.d.ts +0 -184
  133. package/dist/learning/NeuralPatternMatcher.d.ts.map +0 -1
  134. package/dist/learning/NeuralPatternMatcher.js +0 -702
  135. package/dist/learning/NeuralPatternMatcher.js.map +0 -1
  136. package/dist/learning/NeuralTrainer.d.ts +0 -209
  137. package/dist/learning/NeuralTrainer.d.ts.map +0 -1
  138. package/dist/learning/NeuralTrainer.js +0 -478
  139. package/dist/learning/NeuralTrainer.js.map +0 -1
  140. package/dist/transport/QUICTransport.d.ts +0 -340
  141. package/dist/transport/QUICTransport.d.ts.map +0 -1
  142. package/dist/transport/QUICTransport.js +0 -814
  143. package/dist/transport/QUICTransport.js.map +0 -1
  144. package/dist/transport/UDPTransport.d.ts +0 -348
  145. package/dist/transport/UDPTransport.d.ts.map +0 -1
  146. package/dist/transport/UDPTransport.js +0 -820
  147. package/dist/transport/UDPTransport.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExperienceReplayBuffer.d.ts","sourceRoot":"","sources":["../../src/learning/ExperienceReplayBuffer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGzC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;CACtB;AAWD;;GAEG;AACH,UAAU,qBAAqB;IAC7B,UAAU,EAAE,cAAc,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,GAAE,OAAO,CAAC,kBAAkB,CAAM;IAOpD;;;OAGG;IACH,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAgBxD;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,IAAI;IAO7C;;;OAGG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,EAAE;IAe3C;;OAEG;IACH,OAAO,CAAC,aAAa;IAgBrB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAqBzB;;;OAGG;IACH,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAalE;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAUhC;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIrC;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE;IAO1C;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE;IAO1C;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,GAAG,cAAc,EAAE;IAMrE;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,IAAI,IAAI,MAAM;IAId;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,aAAa,IAAI;QACf,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB;IAmBD;;OAEG;IACH,MAAM,IAAI;QACR,MAAM,EAAE,qBAAqB,EAAE,CAAC;QAChC,MAAM,EAAE,kBAAkB,CAAC;QAC3B,gBAAgB,EAAE,MAAM,CAAC;KAC1B;IAQD;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE;QACZ,MAAM,EAAE,qBAAqB,EAAE,CAAC;QAChC,MAAM,EAAE,kBAAkB,CAAC;QAC3B,gBAAgB,EAAE,MAAM,CAAC;KAC1B,GAAG,IAAI;IAMR;;;OAGG;IACH,KAAK,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM;IAYrC;;OAEG;IACH,cAAc,IAAI,MAAM;CAGzB"}
@@ -0,0 +1,255 @@
1
+ "use strict";
2
+ /**
3
+ * ExperienceReplayBuffer - Phase 2 (Milestone 2.2)
4
+ *
5
+ * Implements experience replay buffer for reinforcement learning.
6
+ * Stores transitions and enables batch sampling for training.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ExperienceReplayBuffer = void 0;
10
+ const Logger_1 = require("../utils/Logger");
11
+ /**
12
+ * Default replay buffer configuration
13
+ */
14
+ const DEFAULT_CONFIG = {
15
+ maxSize: 10000,
16
+ minSize: 100,
17
+ prioritized: false
18
+ };
19
+ /**
20
+ * ExperienceReplayBuffer - FIFO buffer with optional prioritization
21
+ *
22
+ * Implements experience replay for more stable and efficient learning.
23
+ * Supports both uniform random sampling and prioritized experience replay.
24
+ */
25
+ class ExperienceReplayBuffer {
26
+ constructor(config = {}) {
27
+ this.logger = Logger_1.Logger.getInstance();
28
+ this.config = { ...DEFAULT_CONFIG, ...config };
29
+ this.buffer = [];
30
+ this.totalExperiences = 0;
31
+ }
32
+ /**
33
+ * Add a new experience to the buffer
34
+ * Uses FIFO eviction when buffer is full
35
+ */
36
+ add(experience, priority) {
37
+ const prioritizedExp = {
38
+ experience,
39
+ priority: priority ?? this.calculateDefaultPriority(experience),
40
+ timestamp: Date.now()
41
+ };
42
+ // FIFO eviction: remove oldest when full
43
+ if (this.buffer.length >= this.config.maxSize) {
44
+ this.buffer.shift(); // Remove oldest (first element)
45
+ }
46
+ this.buffer.push(prioritizedExp);
47
+ this.totalExperiences++;
48
+ }
49
+ /**
50
+ * Add multiple experiences in batch
51
+ */
52
+ addBatch(experiences) {
53
+ for (const experience of experiences) {
54
+ this.add(experience);
55
+ }
56
+ this.logger.debug(`Added batch of ${experiences.length} experiences`);
57
+ }
58
+ /**
59
+ * Sample a random batch of experiences
60
+ * Uses uniform random sampling or prioritized sampling based on config
61
+ */
62
+ sample(batchSize) {
63
+ if (!this.canSample(batchSize)) {
64
+ throw new Error(`Cannot sample: buffer has ${this.buffer.length} experiences, ` +
65
+ `need at least ${Math.max(batchSize, this.config.minSize)}`);
66
+ }
67
+ if (this.config.prioritized) {
68
+ return this.prioritizedSample(batchSize);
69
+ }
70
+ else {
71
+ return this.uniformSample(batchSize);
72
+ }
73
+ }
74
+ /**
75
+ * Uniform random sampling (default)
76
+ */
77
+ uniformSample(batchSize) {
78
+ const sampled = [];
79
+ const indices = new Set();
80
+ // Sample without replacement
81
+ while (indices.size < batchSize) {
82
+ const randomIndex = Math.floor(Math.random() * this.buffer.length);
83
+ if (!indices.has(randomIndex)) {
84
+ indices.add(randomIndex);
85
+ sampled.push(this.buffer[randomIndex].experience);
86
+ }
87
+ }
88
+ return sampled;
89
+ }
90
+ /**
91
+ * Prioritized experience replay sampling
92
+ * Samples based on priority with probability proportional to priority
93
+ */
94
+ prioritizedSample(batchSize) {
95
+ const sampled = [];
96
+ const totalPriority = this.buffer.reduce((sum, exp) => sum + exp.priority, 0);
97
+ // Sample with replacement based on priorities
98
+ for (let i = 0; i < batchSize; i++) {
99
+ let random = Math.random() * totalPriority;
100
+ let cumulativePriority = 0;
101
+ for (const exp of this.buffer) {
102
+ cumulativePriority += exp.priority;
103
+ if (random <= cumulativePriority) {
104
+ sampled.push(exp.experience);
105
+ break;
106
+ }
107
+ }
108
+ }
109
+ return sampled;
110
+ }
111
+ /**
112
+ * Update priority for a specific experience
113
+ * Used in prioritized experience replay to adjust importance weights
114
+ */
115
+ updatePriority(experienceId, newPriority) {
116
+ const index = this.buffer.findIndex(exp => exp.experience.taskId === experienceId);
117
+ if (index === -1) {
118
+ return false;
119
+ }
120
+ this.buffer[index].priority = newPriority;
121
+ return true;
122
+ }
123
+ /**
124
+ * Calculate default priority based on TD-error magnitude
125
+ * Higher absolute rewards get higher priority
126
+ */
127
+ calculateDefaultPriority(experience) {
128
+ // Priority based on absolute reward (experiences with higher impact are prioritized)
129
+ const basePriority = Math.abs(experience.reward) + 0.01; // Add small constant to avoid zero priority
130
+ // Recent experiences get slight boost
131
+ const recencyBoost = 1.0;
132
+ return basePriority * recencyBoost;
133
+ }
134
+ /**
135
+ * Check if buffer has enough experiences to sample
136
+ */
137
+ canSample(batchSize) {
138
+ return this.buffer.length >= Math.max(batchSize, this.config.minSize);
139
+ }
140
+ /**
141
+ * Get recent experiences (for temporal coherence)
142
+ */
143
+ getRecent(count) {
144
+ const actualCount = Math.min(count, this.buffer.length);
145
+ return this.buffer
146
+ .slice(-actualCount)
147
+ .map(exp => exp.experience);
148
+ }
149
+ /**
150
+ * Get oldest experiences
151
+ */
152
+ getOldest(count) {
153
+ const actualCount = Math.min(count, this.buffer.length);
154
+ return this.buffer
155
+ .slice(0, actualCount)
156
+ .map(exp => exp.experience);
157
+ }
158
+ /**
159
+ * Get all experiences matching a filter
160
+ */
161
+ filter(predicate) {
162
+ return this.buffer
163
+ .filter(exp => predicate(exp.experience))
164
+ .map(exp => exp.experience);
165
+ }
166
+ /**
167
+ * Clear the buffer
168
+ */
169
+ clear() {
170
+ this.buffer = [];
171
+ this.logger.info('Experience replay buffer cleared');
172
+ }
173
+ /**
174
+ * Get current buffer size
175
+ */
176
+ size() {
177
+ return this.buffer.length;
178
+ }
179
+ /**
180
+ * Check if buffer is empty
181
+ */
182
+ isEmpty() {
183
+ return this.buffer.length === 0;
184
+ }
185
+ /**
186
+ * Check if buffer is full
187
+ */
188
+ isFull() {
189
+ return this.buffer.length >= this.config.maxSize;
190
+ }
191
+ /**
192
+ * Get total number of experiences ever added (including evicted)
193
+ */
194
+ getTotalExperiences() {
195
+ return this.totalExperiences;
196
+ }
197
+ /**
198
+ * Get buffer statistics
199
+ */
200
+ getStatistics() {
201
+ const avgPriority = this.buffer.length > 0
202
+ ? this.buffer.reduce((sum, exp) => sum + exp.priority, 0) / this.buffer.length
203
+ : 0;
204
+ const avgReward = this.buffer.length > 0
205
+ ? this.buffer.reduce((sum, exp) => sum + exp.experience.reward, 0) / this.buffer.length
206
+ : 0;
207
+ return {
208
+ size: this.buffer.length,
209
+ maxSize: this.config.maxSize,
210
+ utilization: this.buffer.length / this.config.maxSize,
211
+ totalAdded: this.totalExperiences,
212
+ avgPriority,
213
+ avgReward
214
+ };
215
+ }
216
+ /**
217
+ * Export buffer state for persistence
218
+ */
219
+ export() {
220
+ return {
221
+ buffer: [...this.buffer],
222
+ config: { ...this.config },
223
+ totalExperiences: this.totalExperiences
224
+ };
225
+ }
226
+ /**
227
+ * Import buffer state from persistence
228
+ */
229
+ import(state) {
230
+ this.buffer = [...state.buffer];
231
+ this.totalExperiences = state.totalExperiences;
232
+ this.logger.info(`Imported replay buffer with ${this.buffer.length} experiences`);
233
+ }
234
+ /**
235
+ * Prune old experiences beyond retention limit
236
+ * Keeps most recent experiences
237
+ */
238
+ prune(retentionCount) {
239
+ if (this.buffer.length <= retentionCount) {
240
+ return 0;
241
+ }
242
+ const removeCount = this.buffer.length - retentionCount;
243
+ this.buffer = this.buffer.slice(-retentionCount);
244
+ this.logger.info(`Pruned ${removeCount} old experiences from buffer`);
245
+ return removeCount;
246
+ }
247
+ /**
248
+ * Get memory usage estimate in bytes
249
+ */
250
+ getMemoryUsage() {
251
+ return JSON.stringify(this.buffer).length;
252
+ }
253
+ }
254
+ exports.ExperienceReplayBuffer = ExperienceReplayBuffer;
255
+ //# sourceMappingURL=ExperienceReplayBuffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExperienceReplayBuffer.js","sourceRoot":"","sources":["../../src/learning/ExperienceReplayBuffer.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAGH,4CAAyC;AAWzC;;GAEG;AACH,MAAM,cAAc,GAAuB;IACzC,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,GAAG;IACZ,WAAW,EAAE,KAAK;CACnB,CAAC;AAWF;;;;;GAKG;AACH,MAAa,sBAAsB;IAMjC,YAAY,SAAsC,EAAE;QAClD,IAAI,CAAC,MAAM,GAAG,eAAM,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,UAA0B,EAAE,QAAiB;QAC/C,MAAM,cAAc,GAA0B;YAC5C,UAAU;YACV,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC;YAC/D,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,yCAAyC;QACzC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,gCAAgC;QACvD,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjC,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,WAA6B;QACpC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,WAAW,CAAC,MAAM,cAAc,CAAC,CAAC;IACxE,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,SAAiB;QACtB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,6BAA6B,IAAI,CAAC,MAAM,CAAC,MAAM,gBAAgB;gBAC/D,iBAAiB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAC5D,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,SAAiB;QACrC,MAAM,OAAO,GAAqB,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAElC,6BAA6B;QAC7B,OAAO,OAAO,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACnE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACK,iBAAiB,CAAC,SAAiB;QACzC,MAAM,OAAO,GAAqB,EAAE,CAAC;QACrC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE9E,8CAA8C;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,aAAa,CAAC;YAC3C,IAAI,kBAAkB,GAAG,CAAC,CAAC;YAE3B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC9B,kBAAkB,IAAI,GAAG,CAAC,QAAQ,CAAC;gBACnC,IAAI,MAAM,IAAI,kBAAkB,EAAE,CAAC;oBACjC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBAC7B,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,YAAoB,EAAE,WAAmB;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CACjC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,YAAY,CAC9C,CAAC;QAEF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,WAAW,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACK,wBAAwB,CAAC,UAA0B;QACzD,qFAAqF;QACrF,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,4CAA4C;QAErG,sCAAsC;QACtC,MAAM,YAAY,GAAG,GAAG,CAAC;QAEzB,OAAO,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,SAAiB;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAa;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,MAAM;aACf,KAAK,CAAC,CAAC,WAAW,CAAC;aACnB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAa;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,MAAM;aACf,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC;aACrB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAA2C;QAChD,OAAO,IAAI,CAAC,MAAM;aACf,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;aACxC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,aAAa;QAQX,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YACxC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;YAC9E,CAAC,CAAC,CAAC,CAAC;QAEN,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YACtC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;YACvF,CAAC,CAAC,CAAC,CAAC;QAEN,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YACxB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;YACrD,UAAU,EAAE,IAAI,CAAC,gBAAgB;YACjC,WAAW;YACX,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM;QAKJ,OAAO;YACL,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;YACxB,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;YAC1B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;SACxC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAIN;QACC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,IAAI,CAAC,MAAM,CAAC,MAAM,cAAc,CAAC,CAAC;IACpF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAsB;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;YACzC,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC;QAEjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,WAAW,8BAA8B,CAAC,CAAC;QACtE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IAC5C,CAAC;CACF;AAhSD,wDAgSC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * FixRecommendationEngine - Automated fix recommendations for flaky tests
3
+ *
4
+ * Generates actionable fix recommendations with code examples based on root cause analysis
5
+ *
6
+ * @module learning/FixRecommendationEngine
7
+ * @version 1.0.0
8
+ */
9
+ import { FlakyFixRecommendation } from './types';
10
+ /**
11
+ * Root cause categories for flaky tests
12
+ */
13
+ export type RootCause = 'timing' | 'race_condition' | 'dependency' | 'isolation' | 'environment';
14
+ /**
15
+ * Root cause analysis result
16
+ */
17
+ export interface RootCauseAnalysis {
18
+ cause: RootCause;
19
+ mlConfidence: number;
20
+ evidence: string[];
21
+ patterns: string[];
22
+ }
23
+ /**
24
+ * FixRecommendationEngine for generating automated fix recommendations
25
+ */
26
+ export declare class FixRecommendationEngine {
27
+ /**
28
+ * Generate fix recommendations based on root cause
29
+ *
30
+ * @param rootCause - Root cause analysis result
31
+ * @returns Array of fix recommendations with code examples
32
+ */
33
+ generateRecommendations(rootCause: RootCauseAnalysis): FlakyFixRecommendation[];
34
+ /**
35
+ * Timing-related fixes
36
+ */
37
+ private timingFixes;
38
+ /**
39
+ * Race condition fixes
40
+ */
41
+ private raceFixes;
42
+ /**
43
+ * Dependency-related fixes
44
+ */
45
+ private dependencyFixes;
46
+ /**
47
+ * Isolation-related fixes
48
+ */
49
+ private isolationFixes;
50
+ /**
51
+ * Environment-related fixes
52
+ */
53
+ private environmentFixes;
54
+ /**
55
+ * Generic fixes for unknown root causes
56
+ */
57
+ private genericFixes;
58
+ /**
59
+ * Get priority order for recommendations
60
+ */
61
+ getPriorityOrder(recommendations: FlakyFixRecommendation[]): FlakyFixRecommendation[];
62
+ /**
63
+ * Filter recommendations by effort
64
+ */
65
+ filterByEffort(recommendations: FlakyFixRecommendation[], maxEffort: 'low' | 'medium' | 'high'): FlakyFixRecommendation[];
66
+ }
67
+ export default FixRecommendationEngine;
68
+ //# sourceMappingURL=FixRecommendationEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FixRecommendationEngine.d.ts","sourceRoot":"","sources":["../../src/learning/FixRecommendationEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,gBAAgB,GAAG,YAAY,GAAG,WAAW,GAAG,aAAa,CAAC;AAEjG;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,SAAS,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,uBAAuB;IAClC;;;;;OAKG;IACH,uBAAuB,CAAC,SAAS,EAAE,iBAAiB,GAAG,sBAAsB,EAAE;IAiB/E;;OAEG;IACH,OAAO,CAAC,WAAW;IAoFnB;;OAEG;IACH,OAAO,CAAC,SAAS;IAiFjB;;OAEG;IACH,OAAO,CAAC,eAAe;IA4EvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAoFtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+ExB;;OAEG;IACH,OAAO,CAAC,YAAY;IAiCpB;;OAEG;IACH,gBAAgB,CAAC,eAAe,EAAE,sBAAsB,EAAE,GAAG,sBAAsB,EAAE;IAarF;;OAEG;IACH,cAAc,CACZ,eAAe,EAAE,sBAAsB,EAAE,EACzC,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GACnC,sBAAsB,EAAE;CAW5B;AAED,eAAe,uBAAuB,CAAC"}