agentic-qe 1.0.4 → 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.
Files changed (197) hide show
  1. package/.claude/agents/qe-quality-analyzer.md +405 -0
  2. package/CHANGELOG.md +109 -0
  3. package/CONTRIBUTING.md +51 -0
  4. package/README.md +690 -134
  5. package/bin/aqe +90 -938
  6. package/dist/adapters/MemoryStoreAdapter.d.ts.map +1 -1
  7. package/dist/adapters/MemoryStoreAdapter.js +6 -0
  8. package/dist/adapters/MemoryStoreAdapter.js.map +1 -1
  9. package/dist/agents/CoverageAnalyzerAgent.d.ts +58 -3
  10. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  11. package/dist/agents/CoverageAnalyzerAgent.js +316 -48
  12. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  13. package/dist/agents/FlakyTestHunterAgent.d.ts +48 -4
  14. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  15. package/dist/agents/FlakyTestHunterAgent.js +217 -10
  16. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  17. package/dist/agents/LearningAgent.d.ts +75 -0
  18. package/dist/agents/LearningAgent.d.ts.map +1 -0
  19. package/dist/agents/LearningAgent.js +177 -0
  20. package/dist/agents/LearningAgent.js.map +1 -0
  21. package/dist/agents/TestGeneratorAgent.d.ts +42 -2
  22. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  23. package/dist/agents/TestGeneratorAgent.js +232 -13
  24. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  25. package/dist/cli/commands/improve/index.d.ts +70 -0
  26. package/dist/cli/commands/improve/index.d.ts.map +1 -0
  27. package/dist/cli/commands/improve/index.js +530 -0
  28. package/dist/cli/commands/improve/index.js.map +1 -0
  29. package/dist/cli/commands/init.d.ts +34 -0
  30. package/dist/cli/commands/init.d.ts.map +1 -1
  31. package/dist/cli/commands/init.js +875 -42
  32. package/dist/cli/commands/init.js.map +1 -1
  33. package/dist/cli/commands/learn/index.d.ts +68 -0
  34. package/dist/cli/commands/learn/index.d.ts.map +1 -0
  35. package/dist/cli/commands/learn/index.js +431 -0
  36. package/dist/cli/commands/learn/index.js.map +1 -0
  37. package/dist/cli/commands/patterns/index.d.ts +75 -0
  38. package/dist/cli/commands/patterns/index.d.ts.map +1 -0
  39. package/dist/cli/commands/patterns/index.js +502 -0
  40. package/dist/cli/commands/patterns/index.js.map +1 -0
  41. package/dist/cli/commands/routing/index.d.ts +95 -0
  42. package/dist/cli/commands/routing/index.d.ts.map +1 -0
  43. package/dist/cli/commands/routing/index.js +399 -0
  44. package/dist/cli/commands/routing/index.js.map +1 -0
  45. package/dist/cli/index.js +455 -8
  46. package/dist/cli/index.js.map +1 -1
  47. package/dist/core/memory/SwarmMemoryManager.d.ts +5 -0
  48. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  49. package/dist/core/memory/SwarmMemoryManager.js +7 -0
  50. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  51. package/dist/core/routing/AdaptiveModelRouter.d.ts +86 -0
  52. package/dist/core/routing/AdaptiveModelRouter.d.ts.map +1 -0
  53. package/dist/core/routing/AdaptiveModelRouter.js +264 -0
  54. package/dist/core/routing/AdaptiveModelRouter.js.map +1 -0
  55. package/dist/core/routing/ComplexityAnalyzer.d.ts +49 -0
  56. package/dist/core/routing/ComplexityAnalyzer.d.ts.map +1 -0
  57. package/dist/core/routing/ComplexityAnalyzer.js +182 -0
  58. package/dist/core/routing/ComplexityAnalyzer.js.map +1 -0
  59. package/dist/core/routing/CostTracker.d.ts +55 -0
  60. package/dist/core/routing/CostTracker.d.ts.map +1 -0
  61. package/dist/core/routing/CostTracker.js +210 -0
  62. package/dist/core/routing/CostTracker.js.map +1 -0
  63. package/dist/core/routing/FleetManagerIntegration.d.ts +68 -0
  64. package/dist/core/routing/FleetManagerIntegration.d.ts.map +1 -0
  65. package/dist/core/routing/FleetManagerIntegration.js +170 -0
  66. package/dist/core/routing/FleetManagerIntegration.js.map +1 -0
  67. package/dist/core/routing/ModelRules.d.ts +38 -0
  68. package/dist/core/routing/ModelRules.d.ts.map +1 -0
  69. package/dist/core/routing/ModelRules.js +170 -0
  70. package/dist/core/routing/ModelRules.js.map +1 -0
  71. package/dist/core/routing/QETask.d.ts +12 -0
  72. package/dist/core/routing/QETask.d.ts.map +1 -0
  73. package/dist/core/routing/QETask.js +21 -0
  74. package/dist/core/routing/QETask.js.map +1 -0
  75. package/dist/core/routing/index.d.ts +19 -0
  76. package/dist/core/routing/index.d.ts.map +1 -0
  77. package/dist/core/routing/index.js +50 -0
  78. package/dist/core/routing/index.js.map +1 -0
  79. package/dist/core/routing/types.d.ts +136 -0
  80. package/dist/core/routing/types.d.ts.map +1 -0
  81. package/dist/core/routing/types.js +28 -0
  82. package/dist/core/routing/types.js.map +1 -0
  83. package/dist/index.d.ts +10 -0
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +10 -0
  86. package/dist/index.js.map +1 -1
  87. package/dist/learning/FlakyFixRecommendations.d.ts +40 -0
  88. package/dist/learning/FlakyFixRecommendations.d.ts.map +1 -0
  89. package/dist/learning/FlakyFixRecommendations.js +247 -0
  90. package/dist/learning/FlakyFixRecommendations.js.map +1 -0
  91. package/dist/learning/FlakyPredictionModel.d.ts +57 -0
  92. package/dist/learning/FlakyPredictionModel.d.ts.map +1 -0
  93. package/dist/learning/FlakyPredictionModel.js +289 -0
  94. package/dist/learning/FlakyPredictionModel.js.map +1 -0
  95. package/dist/learning/FlakyTestDetector.d.ts +46 -0
  96. package/dist/learning/FlakyTestDetector.d.ts.map +1 -0
  97. package/dist/learning/FlakyTestDetector.js +215 -0
  98. package/dist/learning/FlakyTestDetector.js.map +1 -0
  99. package/dist/learning/ImprovementLoop.d.ts +119 -0
  100. package/dist/learning/ImprovementLoop.d.ts.map +1 -0
  101. package/dist/learning/ImprovementLoop.js +353 -0
  102. package/dist/learning/ImprovementLoop.js.map +1 -0
  103. package/dist/learning/LearningEngine.d.ts +144 -0
  104. package/dist/learning/LearningEngine.d.ts.map +1 -0
  105. package/dist/learning/LearningEngine.js +531 -0
  106. package/dist/learning/LearningEngine.js.map +1 -0
  107. package/dist/learning/PerformanceTracker.d.ts +118 -0
  108. package/dist/learning/PerformanceTracker.d.ts.map +1 -0
  109. package/dist/learning/PerformanceTracker.js +376 -0
  110. package/dist/learning/PerformanceTracker.js.map +1 -0
  111. package/dist/learning/StatisticalAnalysis.d.ts +47 -0
  112. package/dist/learning/StatisticalAnalysis.d.ts.map +1 -0
  113. package/dist/learning/StatisticalAnalysis.js +170 -0
  114. package/dist/learning/StatisticalAnalysis.js.map +1 -0
  115. package/dist/learning/SwarmIntegration.d.ts +107 -0
  116. package/dist/learning/SwarmIntegration.d.ts.map +1 -0
  117. package/dist/learning/SwarmIntegration.js +191 -0
  118. package/dist/learning/SwarmIntegration.js.map +1 -0
  119. package/dist/learning/index.d.ts +10 -0
  120. package/dist/learning/index.d.ts.map +1 -0
  121. package/dist/learning/index.js +16 -0
  122. package/dist/learning/index.js.map +1 -0
  123. package/dist/learning/types.d.ts +288 -0
  124. package/dist/learning/types.d.ts.map +1 -0
  125. package/dist/learning/types.js +9 -0
  126. package/dist/learning/types.js.map +1 -0
  127. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts +175 -0
  128. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -0
  129. package/dist/mcp/handlers/phase2/Phase2Tools.js +693 -0
  130. package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -0
  131. package/dist/mcp/server.d.ts.map +1 -1
  132. package/dist/mcp/server.js +171 -9
  133. package/dist/mcp/server.js.map +1 -1
  134. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts +112 -0
  135. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts.map +1 -0
  136. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js +341 -0
  137. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js.map +1 -0
  138. package/dist/mcp/streaming/StreamingMCPTool.d.ts +80 -0
  139. package/dist/mcp/streaming/StreamingMCPTool.d.ts.map +1 -0
  140. package/dist/mcp/streaming/StreamingMCPTool.js +276 -0
  141. package/dist/mcp/streaming/StreamingMCPTool.js.map +1 -0
  142. package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts +73 -0
  143. package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts.map +1 -0
  144. package/dist/mcp/streaming/TestExecuteStreamHandler.js +436 -0
  145. package/dist/mcp/streaming/TestExecuteStreamHandler.js.map +1 -0
  146. package/dist/mcp/streaming/index.d.ts +14 -0
  147. package/dist/mcp/streaming/index.d.ts.map +1 -0
  148. package/dist/mcp/streaming/index.js +30 -0
  149. package/dist/mcp/streaming/index.js.map +1 -0
  150. package/dist/mcp/streaming/types.d.ts +117 -0
  151. package/dist/mcp/streaming/types.d.ts.map +1 -0
  152. package/dist/mcp/streaming/types.js +88 -0
  153. package/dist/mcp/streaming/types.js.map +1 -0
  154. package/dist/mcp/tools.d.ts +18 -1
  155. package/dist/mcp/tools.d.ts.map +1 -1
  156. package/dist/mcp/tools.js +123 -1
  157. package/dist/mcp/tools.js.map +1 -1
  158. package/dist/reasoning/CodeSignatureGenerator.d.ts +98 -0
  159. package/dist/reasoning/CodeSignatureGenerator.d.ts.map +1 -0
  160. package/dist/reasoning/CodeSignatureGenerator.js +427 -0
  161. package/dist/reasoning/CodeSignatureGenerator.js.map +1 -0
  162. package/dist/reasoning/PatternClassifier.d.ts +98 -0
  163. package/dist/reasoning/PatternClassifier.d.ts.map +1 -0
  164. package/dist/reasoning/PatternClassifier.js +345 -0
  165. package/dist/reasoning/PatternClassifier.js.map +1 -0
  166. package/dist/reasoning/PatternExtractor.d.ts +131 -0
  167. package/dist/reasoning/PatternExtractor.d.ts.map +1 -0
  168. package/dist/reasoning/PatternExtractor.js +539 -0
  169. package/dist/reasoning/PatternExtractor.js.map +1 -0
  170. package/dist/reasoning/PatternMemoryIntegration.d.ts +102 -0
  171. package/dist/reasoning/PatternMemoryIntegration.d.ts.map +1 -0
  172. package/dist/reasoning/PatternMemoryIntegration.js +336 -0
  173. package/dist/reasoning/PatternMemoryIntegration.js.map +1 -0
  174. package/dist/reasoning/QEReasoningBank.d.ts +121 -0
  175. package/dist/reasoning/QEReasoningBank.d.ts.map +1 -0
  176. package/dist/reasoning/QEReasoningBank.js +235 -0
  177. package/dist/reasoning/QEReasoningBank.js.map +1 -0
  178. package/dist/reasoning/TestTemplateCreator.d.ts +95 -0
  179. package/dist/reasoning/TestTemplateCreator.d.ts.map +1 -0
  180. package/dist/reasoning/TestTemplateCreator.js +535 -0
  181. package/dist/reasoning/TestTemplateCreator.js.map +1 -0
  182. package/dist/reasoning/index.d.ts +10 -0
  183. package/dist/reasoning/index.d.ts.map +1 -0
  184. package/dist/reasoning/index.js +31 -0
  185. package/dist/reasoning/index.js.map +1 -0
  186. package/dist/reasoning/types.d.ts +717 -0
  187. package/dist/reasoning/types.d.ts.map +1 -0
  188. package/dist/reasoning/types.js +57 -0
  189. package/dist/reasoning/types.js.map +1 -0
  190. package/dist/types/index.d.ts +20 -1
  191. package/dist/types/index.d.ts.map +1 -1
  192. package/dist/types/index.js.map +1 -1
  193. package/dist/types/pattern.types.d.ts +364 -0
  194. package/dist/types/pattern.types.d.ts.map +1 -0
  195. package/dist/types/pattern.types.js +60 -0
  196. package/dist/types/pattern.types.js.map +1 -0
  197. package/package.json +25 -3
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * Multi-Model Router Types
4
+ * Core interfaces and types for the adaptive model routing system
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.TaskComplexity = exports.AIModel = void 0;
8
+ /**
9
+ * Supported AI models with their capabilities and costs
10
+ */
11
+ var AIModel;
12
+ (function (AIModel) {
13
+ AIModel["GPT_4"] = "gpt-4";
14
+ AIModel["GPT_3_5_TURBO"] = "gpt-3.5-turbo";
15
+ AIModel["CLAUDE_SONNET_4_5"] = "claude-sonnet-4.5";
16
+ AIModel["CLAUDE_HAIKU"] = "claude-haiku";
17
+ })(AIModel || (exports.AIModel = AIModel = {}));
18
+ /**
19
+ * Task complexity levels for model selection
20
+ */
21
+ var TaskComplexity;
22
+ (function (TaskComplexity) {
23
+ TaskComplexity["SIMPLE"] = "simple";
24
+ TaskComplexity["MODERATE"] = "moderate";
25
+ TaskComplexity["COMPLEX"] = "complex";
26
+ TaskComplexity["CRITICAL"] = "critical";
27
+ })(TaskComplexity || (exports.TaskComplexity = TaskComplexity = {}));
28
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/routing/types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAcH;;GAEG;AACH,IAAY,OAKX;AALD,WAAY,OAAO;IACjB,0BAAe,CAAA;IACf,0CAA+B,CAAA;IAC/B,kDAAuC,CAAA;IACvC,wCAA6B,CAAA;AAC/B,CAAC,EALW,OAAO,uBAAP,OAAO,QAKlB;AAED;;GAEG;AACH,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,uCAAqB,CAAA;IACrB,qCAAmB,CAAA;IACnB,uCAAqB,CAAA;AACvB,CAAC,EALW,cAAc,8BAAd,cAAc,QAKzB"}
package/dist/index.d.ts CHANGED
@@ -86,4 +86,14 @@ export * from './agents';
86
86
  * @module Utilities
87
87
  */
88
88
  export * from './utils';
89
+ /**
90
+ * Phase 2: Learning System (Milestone 2.2)
91
+ * @module Learning
92
+ */
93
+ export * from './learning';
94
+ /**
95
+ * Phase 2: Reasoning Bank (Milestone 2.1)
96
+ * @module Reasoning
97
+ */
98
+ export * from './reasoning';
89
99
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AAUH;;;GAGG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AAErC;;;GAGG;AACH,cAAc,UAAU,CAAC;AAEzB;;;GAGG;AACH,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AAUH;;;GAGG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AAErC;;;GAGG;AACH,cAAc,UAAU,CAAC;AAEzB;;;GAGG;AACH,cAAc,SAAS,CAAC;AAExB;;;GAGG;AACH,cAAc,YAAY,CAAC;AAE3B;;;GAGG;AACH,cAAc,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -108,6 +108,16 @@ __exportStar(require("./agents"), exports);
108
108
  * @module Utilities
109
109
  */
110
110
  __exportStar(require("./utils"), exports);
111
+ /**
112
+ * Phase 2: Learning System (Milestone 2.2)
113
+ * @module Learning
114
+ */
115
+ __exportStar(require("./learning"), exports);
116
+ /**
117
+ * Phase 2: Reasoning Bank (Milestone 2.1)
118
+ * @module Reasoning
119
+ */
120
+ __exportStar(require("./reasoning"), exports);
111
121
  const logger = Logger_1.Logger.getInstance();
112
122
  /**
113
123
  * Initialize and start the AQE Fleet
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;;;;;;;;;;;;;;;;AAEH,sDAAmD;AACnD,2CAAwC;AACxC,2CAAwC;AAExC,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E;;;GAGG;AACH,sDAAoC;AACpC,+CAA6B;AAC7B,8CAA4B;AAC5B,kDAAgC;AAChC,uDAAqC;AAErC;;;GAGG;AACH,2CAAyB;AAEzB;;;GAGG;AACH,0CAAwB;AAExB,MAAM,MAAM,GAAG,eAAM,CAAC,WAAW,EAAE,CAAC;AAEpC;;GAEG;AACH,KAAK,UAAU,UAAU;IACvB,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAE/C,qBAAqB;QACrB,MAAM,MAAM,GAAG,MAAM,eAAM,CAAC,IAAI,EAAE,CAAC;QAEnC,2BAA2B;QAC3B,MAAM,YAAY,GAAG,IAAI,2BAAY,CAAC,MAAM,CAAC,CAAC;QAE9C,kBAAkB;QAClB,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;QAChC,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAE3B,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QAEvD,2BAA2B;QAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YACpD,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IAEL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,UAAU,EAAE,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;;;;;;;;;;;;;;;;AAEH,sDAAmD;AACnD,2CAAwC;AACxC,2CAAwC;AAExC,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E;;;GAGG;AACH,sDAAoC;AACpC,+CAA6B;AAC7B,8CAA4B;AAC5B,kDAAgC;AAChC,uDAAqC;AAErC;;;GAGG;AACH,2CAAyB;AAEzB;;;GAGG;AACH,0CAAwB;AAExB;;;GAGG;AACH,6CAA2B;AAE3B;;;GAGG;AACH,8CAA4B;AAE5B,MAAM,MAAM,GAAG,eAAM,CAAC,WAAW,EAAE,CAAC;AAEpC;;GAEG;AACH,KAAK,UAAU,UAAU;IACvB,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAE/C,qBAAqB;QACrB,MAAM,MAAM,GAAG,MAAM,eAAM,CAAC,IAAI,EAAE,CAAC;QAEnC,2BAA2B;QAC3B,MAAM,YAAY,GAAG,IAAI,2BAAY,CAAC,MAAM,CAAC,CAAC;QAE9C,kBAAkB;QAClB,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;QAChC,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAE3B,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QAEvD,2BAA2B;QAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YACpD,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IAEL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,UAAU,EAAE,CAAC;AACf,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Flaky Test Fix Recommendation Engine
3
+ * Analyzes flaky test patterns and generates actionable fix recommendations
4
+ */
5
+ import { TestResult, FlakyFixRecommendation } from './types';
6
+ export declare class FlakyFixRecommendations {
7
+ /**
8
+ * Generate fix recommendation based on test result patterns
9
+ */
10
+ static generateRecommendation(testName: string, results: TestResult[]): FlakyFixRecommendation;
11
+ /**
12
+ * Identify the primary failure pattern
13
+ */
14
+ private static identifyFailurePattern;
15
+ /**
16
+ * Generate timing-related recommendation
17
+ */
18
+ private static timingRecommendation;
19
+ /**
20
+ * Generate environment-related recommendation
21
+ */
22
+ private static environmentalRecommendation;
23
+ /**
24
+ * Generate resource contention recommendation
25
+ */
26
+ private static resourceRecommendation;
27
+ /**
28
+ * Generate test isolation recommendation
29
+ */
30
+ private static isolationRecommendation;
31
+ /**
32
+ * Generate generic recommendation
33
+ */
34
+ private static genericRecommendation;
35
+ /**
36
+ * Detect environment changes across test runs
37
+ */
38
+ private static detectEnvironmentChanges;
39
+ }
40
+ //# sourceMappingURL=FlakyFixRecommendations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlakyFixRecommendations.d.ts","sourceRoot":"","sources":["../../src/learning/FlakyFixRecommendations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAG7D,qBAAa,uBAAuB;IAClC;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,UAAU,EAAE,GACpB,sBAAsB;IAiBzB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA2BrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA2BnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,2BAA2B;IA6B1C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAsCrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAuCtC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAkCpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;CAkBxC"}
@@ -0,0 +1,247 @@
1
+ "use strict";
2
+ /**
3
+ * Flaky Test Fix Recommendation Engine
4
+ * Analyzes flaky test patterns and generates actionable fix recommendations
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.FlakyFixRecommendations = void 0;
8
+ const StatisticalAnalysis_1 = require("./StatisticalAnalysis");
9
+ class FlakyFixRecommendations {
10
+ /**
11
+ * Generate fix recommendation based on test result patterns
12
+ */
13
+ static generateRecommendation(testName, results) {
14
+ const pattern = this.identifyFailurePattern(results);
15
+ switch (pattern) {
16
+ case 'timing':
17
+ return this.timingRecommendation(results);
18
+ case 'environmental':
19
+ return this.environmentalRecommendation(results);
20
+ case 'resource':
21
+ return this.resourceRecommendation(results);
22
+ case 'isolation':
23
+ return this.isolationRecommendation(results);
24
+ default:
25
+ return this.genericRecommendation(results);
26
+ }
27
+ }
28
+ /**
29
+ * Identify the primary failure pattern
30
+ */
31
+ static identifyFailurePattern(results) {
32
+ // Check for timing issues (high variance in duration)
33
+ const variance = StatisticalAnalysis_1.StatisticalAnalysis.calculateVariance(results);
34
+ const metrics = StatisticalAnalysis_1.StatisticalAnalysis.calculateMetrics(results.map(r => r.duration));
35
+ if (metrics.coefficientOfVariation > 0.5) {
36
+ return 'timing';
37
+ }
38
+ // Check for environmental issues
39
+ const envChanges = this.detectEnvironmentChanges(results);
40
+ if (envChanges > 0.3) {
41
+ return 'environmental';
42
+ }
43
+ // Check for resource contention (outliers in execution time)
44
+ const hasOutliers = metrics.outliers.length > results.length * 0.1;
45
+ if (hasOutliers) {
46
+ return 'resource';
47
+ }
48
+ // Default to isolation issues
49
+ return 'isolation';
50
+ }
51
+ /**
52
+ * Generate timing-related recommendation
53
+ */
54
+ static timingRecommendation(results) {
55
+ const avgDuration = results.reduce((sum, r) => sum + r.duration, 0) / results.length;
56
+ const maxDuration = Math.max(...results.map(r => r.duration));
57
+ return {
58
+ priority: 'high',
59
+ category: 'timing',
60
+ recommendation: 'Add explicit waits or increase timeout thresholds',
61
+ codeExample: `
62
+ // Instead of fixed delays:
63
+ // await sleep(1000);
64
+
65
+ // Use explicit waits with conditions:
66
+ await waitFor(() => element.isVisible(), {
67
+ timeout: ${Math.ceil(maxDuration * 1.5)},
68
+ interval: 100
69
+ });
70
+
71
+ // Or increase test timeout:
72
+ test('flaky test', async () => {
73
+ // ...
74
+ }, ${Math.ceil(maxDuration * 2)});
75
+ `.trim(),
76
+ estimatedEffort: 'medium'
77
+ };
78
+ }
79
+ /**
80
+ * Generate environment-related recommendation
81
+ */
82
+ static environmentalRecommendation(results) {
83
+ return {
84
+ priority: 'high',
85
+ category: 'environmental',
86
+ recommendation: 'Mock external dependencies and isolate test environment',
87
+ codeExample: `
88
+ // Mock external services:
89
+ jest.mock('./externalService', () => ({
90
+ fetchData: jest.fn().mockResolvedValue({ data: 'mocked' })
91
+ }));
92
+
93
+ // Use test containers for databases:
94
+ const container = await new PostgreSqlContainer().start();
95
+ const connection = await createConnection({
96
+ host: container.getHost(),
97
+ port: container.getPort(),
98
+ // ...
99
+ });
100
+
101
+ // Clean environment before each test:
102
+ beforeEach(() => {
103
+ process.env.NODE_ENV = 'test';
104
+ jest.clearAllMocks();
105
+ });
106
+ `.trim(),
107
+ estimatedEffort: 'high'
108
+ };
109
+ }
110
+ /**
111
+ * Generate resource contention recommendation
112
+ */
113
+ static resourceRecommendation(results) {
114
+ return {
115
+ priority: 'medium',
116
+ category: 'resource',
117
+ recommendation: 'Reduce resource usage or run test in isolation',
118
+ codeExample: `
119
+ // Run resource-intensive tests serially:
120
+ // In jest.config.js:
121
+ module.exports = {
122
+ maxWorkers: 1, // For specific test files
123
+ // or use test.concurrent sparingly
124
+ };
125
+
126
+ // Add resource cleanup:
127
+ afterEach(async () => {
128
+ // Clear caches
129
+ cache.clear();
130
+
131
+ // Close connections
132
+ await db.disconnect();
133
+
134
+ // Free memory
135
+ global.gc && global.gc();
136
+ });
137
+
138
+ // Use resource pooling:
139
+ const pool = new Pool({ max: 5, min: 1 });
140
+ const resource = await pool.acquire();
141
+ try {
142
+ // use resource
143
+ } finally {
144
+ await pool.release(resource);
145
+ }
146
+ `.trim(),
147
+ estimatedEffort: 'medium'
148
+ };
149
+ }
150
+ /**
151
+ * Generate test isolation recommendation
152
+ */
153
+ static isolationRecommendation(results) {
154
+ return {
155
+ priority: 'high',
156
+ category: 'concurrency',
157
+ recommendation: 'Improve test isolation and cleanup',
158
+ codeExample: `
159
+ // Reset global state before each test:
160
+ beforeEach(() => {
161
+ // Reset singletons
162
+ ServiceLocator.reset();
163
+
164
+ // Clear module cache
165
+ jest.resetModules();
166
+
167
+ // Reset database to known state
168
+ await db.migrate.latest();
169
+ await db.seed.run();
170
+ });
171
+
172
+ // Avoid shared state:
173
+ // BAD:
174
+ const sharedData = [];
175
+ test('test 1', () => sharedData.push(1));
176
+ test('test 2', () => expect(sharedData).toHaveLength(0)); // Flaky!
177
+
178
+ // GOOD:
179
+ test('test 1', () => {
180
+ const data = [];
181
+ data.push(1);
182
+ expect(data).toHaveLength(1);
183
+ });
184
+
185
+ // Use test fixtures:
186
+ const fixture = await loadFixture('user.json');
187
+ `.trim(),
188
+ estimatedEffort: 'high'
189
+ };
190
+ }
191
+ /**
192
+ * Generate generic recommendation
193
+ */
194
+ static genericRecommendation(results) {
195
+ const passRate = StatisticalAnalysis_1.StatisticalAnalysis.calculatePassRate(results);
196
+ return {
197
+ priority: passRate < 0.5 ? 'high' : 'medium',
198
+ category: 'data',
199
+ recommendation: 'Review test for race conditions, shared state, and external dependencies',
200
+ codeExample: `
201
+ // Common flaky test fixes:
202
+
203
+ // 1. Add deterministic delays
204
+ await waitForCondition(() => element.exists(), 5000);
205
+
206
+ // 2. Mock time-dependent code
207
+ jest.useFakeTimers();
208
+ jest.setSystemTime(new Date('2024-01-01'));
209
+
210
+ // 3. Disable animations
211
+ await page.addStyleTag({ content: '* { animation: none !important; }' });
212
+
213
+ // 4. Increase retry attempts
214
+ jest.retryTimes(3);
215
+
216
+ // 5. Add debug logging
217
+ test('flaky test', async () => {
218
+ const result = await operation();
219
+ console.log('Operation result:', result); // Debug flaky failures
220
+ expect(result).toBe(expected);
221
+ });
222
+ `.trim(),
223
+ estimatedEffort: 'low'
224
+ };
225
+ }
226
+ /**
227
+ * Detect environment changes across test runs
228
+ */
229
+ static detectEnvironmentChanges(results) {
230
+ const withEnv = results.filter(r => r.environment);
231
+ if (withEnv.length < 2)
232
+ return 0;
233
+ let changes = 0;
234
+ const keys = new Set();
235
+ withEnv.forEach(r => {
236
+ Object.keys(r.environment || {}).forEach(k => keys.add(k));
237
+ });
238
+ keys.forEach(key => {
239
+ const values = new Set(withEnv.map(r => r.environment?.[key]));
240
+ if (values.size > 1)
241
+ changes++;
242
+ });
243
+ return changes / keys.size;
244
+ }
245
+ }
246
+ exports.FlakyFixRecommendations = FlakyFixRecommendations;
247
+ //# sourceMappingURL=FlakyFixRecommendations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlakyFixRecommendations.js","sourceRoot":"","sources":["../../src/learning/FlakyFixRecommendations.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,+DAA4D;AAE5D,MAAa,uBAAuB;IAClC;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAC3B,QAAgB,EAChB,OAAqB;QAErB,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAErD,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YAC5C,KAAK,eAAe;gBAClB,OAAO,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;YACnD,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAC9C,KAAK,WAAW;gBACd,OAAO,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAC/C;gBACE,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,sBAAsB,CACnC,OAAqB;QAErB,sDAAsD;QACtD,MAAM,QAAQ,GAAG,yCAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,yCAAmB,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEnF,IAAI,OAAO,CAAC,sBAAsB,GAAG,GAAG,EAAE,CAAC;YACzC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,iCAAiC;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;YACrB,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,6DAA6D;QAC7D,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC;QACnE,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,8BAA8B;QAC9B,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,oBAAoB,CAAC,OAAqB;QACvD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QACrF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE9D,OAAO;YACL,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,QAAQ;YAClB,cAAc,EAAE,mDAAmD;YACnE,WAAW,EAAE;;;;;;aAMN,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;;;;;;;KAOpC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;OACxB,CAAC,IAAI,EAAE;YACR,eAAe,EAAE,QAAiB;SACnC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,2BAA2B,CAAC,OAAqB;QAC9D,OAAO;YACL,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,eAAe;YACzB,cAAc,EAAE,yDAAyD;YACzE,WAAW,EAAE;;;;;;;;;;;;;;;;;;;OAmBZ,CAAC,IAAI,EAAE;YACR,eAAe,EAAE,MAAM;SACxB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,sBAAsB,CAAC,OAAqB;QACzD,OAAO;YACL,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,UAAU;YACpB,cAAc,EAAE,gDAAgD;YAChE,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BZ,CAAC,IAAI,EAAE;YACR,eAAe,EAAE,QAAQ;SAC1B,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,uBAAuB,CAAC,OAAqB;QAC1D,OAAO;YACL,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,aAAa;YACvB,cAAc,EAAE,oCAAoC;YACpD,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BZ,CAAC,IAAI,EAAE;YACR,eAAe,EAAE,MAAM;SACxB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,qBAAqB,CAAC,OAAqB;QACxD,MAAM,QAAQ,GAAG,yCAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAEhE,OAAO;YACL,QAAQ,EAAE,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;YAC5C,QAAQ,EAAE,MAAM;YAChB,cAAc,EAAE,0EAA0E;YAC1F,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;OAsBZ,CAAC,IAAI,EAAE;YACR,eAAe,EAAE,KAAK;SACvB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,wBAAwB,CAAC,OAAqB;QAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC;QAEjC,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAE/B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAClB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACjB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/D,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC;gBAAE,OAAO,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;IAC7B,CAAC;CACF;AAjQD,0DAiQC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * ML-Based Flaky Test Prediction Model
3
+ * Uses statistical features and pattern recognition for 90% accuracy
4
+ */
5
+ import { TestResult, FlakyPrediction, ModelMetrics } from './types';
6
+ export declare class FlakyPredictionModel {
7
+ private weights;
8
+ private bias;
9
+ private featureScalers;
10
+ private isTrained;
11
+ /**
12
+ * Extract features from test results for ML model
13
+ */
14
+ private extractFeatures;
15
+ /**
16
+ * Train the model on historical data
17
+ */
18
+ train(trainingData: Map<string, TestResult[]>, labels: Map<string, boolean>): ModelMetrics;
19
+ /**
20
+ * Predict if a test is flaky
21
+ */
22
+ predict(testName: string, results: TestResult[]): FlakyPrediction;
23
+ /**
24
+ * Batch predict for multiple tests
25
+ */
26
+ batchPredict(tests: Map<string, TestResult[]>): FlakyPrediction[];
27
+ /**
28
+ * Train logistic regression using gradient descent
29
+ */
30
+ private trainLogisticRegression;
31
+ /**
32
+ * Internal prediction (before sigmoid)
33
+ */
34
+ private predict_internal;
35
+ /**
36
+ * Sigmoid activation function
37
+ */
38
+ private sigmoid;
39
+ /**
40
+ * Calculate feature scalers for normalization
41
+ */
42
+ private calculateScalers;
43
+ /**
44
+ * Normalize features using z-score normalization
45
+ */
46
+ private normalizeFeatures;
47
+ /**
48
+ * Evaluate model performance
49
+ */
50
+ private evaluateModel;
51
+ private calculateRetryRate;
52
+ private calculateEnvironmentVariability;
53
+ private calculateTemporalClustering;
54
+ private formatFeatures;
55
+ private generateExplanation;
56
+ }
57
+ //# sourceMappingURL=FlakyPredictionModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlakyPredictionModel.d.ts","sourceRoot":"","sources":["../../src/learning/FlakyPredictionModel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAqB,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvF,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,cAAc,CAA0C;IAChE,OAAO,CAAC,SAAS,CAAkB;IAEnC;;OAEG;IACH,OAAO,CAAC,eAAe;IAwBvB;;OAEG;IACH,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY;IA+B1F;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,eAAe;IAiCjE;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,GAAG,eAAe,EAAE;IAUjE;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAqC/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,OAAO,CAAC,OAAO;IAIf;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgBxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,+BAA+B;IAgBvC,OAAO,CAAC,2BAA2B;IAsBnC,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,mBAAmB;CAiC5B"}