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.
Files changed (141) 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 +669 -162
  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 +33 -0
  30. package/dist/cli/commands/init.d.ts.map +1 -1
  31. package/dist/cli/commands/init.js +656 -39
  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/index.js +367 -8
  42. package/dist/cli/index.js.map +1 -1
  43. package/dist/core/memory/SwarmMemoryManager.d.ts +5 -0
  44. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  45. package/dist/core/memory/SwarmMemoryManager.js +7 -0
  46. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  47. package/dist/index.d.ts +10 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +10 -0
  50. package/dist/index.js.map +1 -1
  51. package/dist/learning/FlakyFixRecommendations.d.ts +40 -0
  52. package/dist/learning/FlakyFixRecommendations.d.ts.map +1 -0
  53. package/dist/learning/FlakyFixRecommendations.js +247 -0
  54. package/dist/learning/FlakyFixRecommendations.js.map +1 -0
  55. package/dist/learning/FlakyPredictionModel.d.ts +57 -0
  56. package/dist/learning/FlakyPredictionModel.d.ts.map +1 -0
  57. package/dist/learning/FlakyPredictionModel.js +289 -0
  58. package/dist/learning/FlakyPredictionModel.js.map +1 -0
  59. package/dist/learning/FlakyTestDetector.d.ts +46 -0
  60. package/dist/learning/FlakyTestDetector.d.ts.map +1 -0
  61. package/dist/learning/FlakyTestDetector.js +215 -0
  62. package/dist/learning/FlakyTestDetector.js.map +1 -0
  63. package/dist/learning/ImprovementLoop.d.ts +119 -0
  64. package/dist/learning/ImprovementLoop.d.ts.map +1 -0
  65. package/dist/learning/ImprovementLoop.js +353 -0
  66. package/dist/learning/ImprovementLoop.js.map +1 -0
  67. package/dist/learning/LearningEngine.d.ts +144 -0
  68. package/dist/learning/LearningEngine.d.ts.map +1 -0
  69. package/dist/learning/LearningEngine.js +531 -0
  70. package/dist/learning/LearningEngine.js.map +1 -0
  71. package/dist/learning/PerformanceTracker.d.ts +118 -0
  72. package/dist/learning/PerformanceTracker.d.ts.map +1 -0
  73. package/dist/learning/PerformanceTracker.js +376 -0
  74. package/dist/learning/PerformanceTracker.js.map +1 -0
  75. package/dist/learning/StatisticalAnalysis.d.ts +47 -0
  76. package/dist/learning/StatisticalAnalysis.d.ts.map +1 -0
  77. package/dist/learning/StatisticalAnalysis.js +170 -0
  78. package/dist/learning/StatisticalAnalysis.js.map +1 -0
  79. package/dist/learning/SwarmIntegration.d.ts +107 -0
  80. package/dist/learning/SwarmIntegration.d.ts.map +1 -0
  81. package/dist/learning/SwarmIntegration.js +191 -0
  82. package/dist/learning/SwarmIntegration.js.map +1 -0
  83. package/dist/learning/index.d.ts +10 -0
  84. package/dist/learning/index.d.ts.map +1 -0
  85. package/dist/learning/index.js +16 -0
  86. package/dist/learning/index.js.map +1 -0
  87. package/dist/learning/types.d.ts +288 -0
  88. package/dist/learning/types.d.ts.map +1 -0
  89. package/dist/learning/types.js +9 -0
  90. package/dist/learning/types.js.map +1 -0
  91. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts +175 -0
  92. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -0
  93. package/dist/mcp/handlers/phase2/Phase2Tools.js +693 -0
  94. package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -0
  95. package/dist/mcp/server.d.ts.map +1 -1
  96. package/dist/mcp/server.js +94 -0
  97. package/dist/mcp/server.js.map +1 -1
  98. package/dist/mcp/tools.d.ts +15 -0
  99. package/dist/mcp/tools.d.ts.map +1 -1
  100. package/dist/mcp/tools.js +17 -1
  101. package/dist/mcp/tools.js.map +1 -1
  102. package/dist/reasoning/CodeSignatureGenerator.d.ts +98 -0
  103. package/dist/reasoning/CodeSignatureGenerator.d.ts.map +1 -0
  104. package/dist/reasoning/CodeSignatureGenerator.js +427 -0
  105. package/dist/reasoning/CodeSignatureGenerator.js.map +1 -0
  106. package/dist/reasoning/PatternClassifier.d.ts +98 -0
  107. package/dist/reasoning/PatternClassifier.d.ts.map +1 -0
  108. package/dist/reasoning/PatternClassifier.js +345 -0
  109. package/dist/reasoning/PatternClassifier.js.map +1 -0
  110. package/dist/reasoning/PatternExtractor.d.ts +131 -0
  111. package/dist/reasoning/PatternExtractor.d.ts.map +1 -0
  112. package/dist/reasoning/PatternExtractor.js +539 -0
  113. package/dist/reasoning/PatternExtractor.js.map +1 -0
  114. package/dist/reasoning/PatternMemoryIntegration.d.ts +102 -0
  115. package/dist/reasoning/PatternMemoryIntegration.d.ts.map +1 -0
  116. package/dist/reasoning/PatternMemoryIntegration.js +336 -0
  117. package/dist/reasoning/PatternMemoryIntegration.js.map +1 -0
  118. package/dist/reasoning/QEReasoningBank.d.ts +121 -0
  119. package/dist/reasoning/QEReasoningBank.d.ts.map +1 -0
  120. package/dist/reasoning/QEReasoningBank.js +235 -0
  121. package/dist/reasoning/QEReasoningBank.js.map +1 -0
  122. package/dist/reasoning/TestTemplateCreator.d.ts +95 -0
  123. package/dist/reasoning/TestTemplateCreator.d.ts.map +1 -0
  124. package/dist/reasoning/TestTemplateCreator.js +535 -0
  125. package/dist/reasoning/TestTemplateCreator.js.map +1 -0
  126. package/dist/reasoning/index.d.ts +10 -0
  127. package/dist/reasoning/index.d.ts.map +1 -0
  128. package/dist/reasoning/index.js +31 -0
  129. package/dist/reasoning/index.js.map +1 -0
  130. package/dist/reasoning/types.d.ts +717 -0
  131. package/dist/reasoning/types.d.ts.map +1 -0
  132. package/dist/reasoning/types.js +57 -0
  133. package/dist/reasoning/types.js.map +1 -0
  134. package/dist/types/index.d.ts +4 -0
  135. package/dist/types/index.d.ts.map +1 -1
  136. package/dist/types/index.js.map +1 -1
  137. package/dist/types/pattern.types.d.ts +364 -0
  138. package/dist/types/pattern.types.d.ts.map +1 -0
  139. package/dist/types/pattern.types.js +60 -0
  140. package/dist/types/pattern.types.js.map +1 -0
  141. package/package.json +25 -3
@@ -0,0 +1,119 @@
1
+ /**
2
+ * ImprovementLoop - Phase 2 (Milestone 2.2)
3
+ *
4
+ * Implements continuous improvement loop with pattern recognition,
5
+ * strategy optimization, and A/B testing framework.
6
+ */
7
+ import { SwarmMemoryManager } from '../core/memory/SwarmMemoryManager';
8
+ import { LearningEngine } from './LearningEngine';
9
+ import { PerformanceTracker } from './PerformanceTracker';
10
+ import { ABTest } from './types';
11
+ /**
12
+ * Improvement strategy
13
+ */
14
+ interface ImprovementStrategy {
15
+ id: string;
16
+ name: string;
17
+ description: string;
18
+ config: any;
19
+ successRate?: number;
20
+ avgImprovement?: number;
21
+ usageCount: number;
22
+ createdAt: Date;
23
+ }
24
+ /**
25
+ * ImprovementLoop - Continuous learning and optimization
26
+ */
27
+ export declare class ImprovementLoop {
28
+ private readonly logger;
29
+ private readonly memoryStore;
30
+ private readonly learningEngine;
31
+ private readonly performanceTracker;
32
+ private readonly agentId;
33
+ private strategies;
34
+ private activeTests;
35
+ private loopInterval?;
36
+ private isRunning;
37
+ constructor(agentId: string, memoryStore: SwarmMemoryManager, learningEngine: LearningEngine, performanceTracker: PerformanceTracker);
38
+ /**
39
+ * Initialize the improvement loop
40
+ */
41
+ initialize(): Promise<void>;
42
+ /**
43
+ * Start the continuous improvement loop
44
+ */
45
+ start(intervalMs?: number): Promise<void>;
46
+ /**
47
+ * Stop the improvement loop
48
+ */
49
+ stop(): Promise<void>;
50
+ /**
51
+ * Run a single improvement cycle
52
+ */
53
+ runImprovementCycle(): Promise<void>;
54
+ /**
55
+ * Create A/B test for strategy comparison
56
+ */
57
+ createABTest(name: string, strategies: {
58
+ name: string;
59
+ config: any;
60
+ }[], sampleSize?: number): Promise<string>;
61
+ /**
62
+ * Record A/B test result
63
+ */
64
+ recordTestResult(testId: string, strategyName: string, success: boolean, executionTime: number): Promise<void>;
65
+ /**
66
+ * Complete A/B test and determine winner
67
+ */
68
+ private completeABTest;
69
+ /**
70
+ * Analyze failure patterns and suggest mitigations
71
+ */
72
+ private analyzeFailurePatterns;
73
+ /**
74
+ * Suggest mitigation for failure pattern
75
+ */
76
+ private suggestMitigation;
77
+ /**
78
+ * Discover optimization opportunities
79
+ */
80
+ private discoverOptimizations;
81
+ /**
82
+ * Update active A/B tests
83
+ */
84
+ private updateActiveTests;
85
+ /**
86
+ * Apply best strategies based on learning
87
+ */
88
+ private applyBestStrategies;
89
+ /**
90
+ * Apply a strategy
91
+ */
92
+ private applyStrategy;
93
+ /**
94
+ * Register default improvement strategies
95
+ */
96
+ private registerDefaultStrategies;
97
+ /**
98
+ * Load strategies from memory
99
+ */
100
+ private loadStrategies;
101
+ /**
102
+ * Store cycle results
103
+ */
104
+ private storeCycleResults;
105
+ /**
106
+ * Get active A/B tests
107
+ */
108
+ getActiveTests(): ABTest[];
109
+ /**
110
+ * Get all strategies
111
+ */
112
+ getStrategies(): ImprovementStrategy[];
113
+ /**
114
+ * Check if loop is running
115
+ */
116
+ isActive(): boolean;
117
+ }
118
+ export {};
119
+ //# sourceMappingURL=ImprovementLoop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImprovementLoop.d.ts","sourceRoot":"","sources":["../../src/learning/ImprovementLoop.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAA0C,MAAM,SAAS,CAAC;AAEzE;;GAEG;AACH,UAAU,mBAAmB;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,GAAG,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,SAAS,CAAkB;gBAGjC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,kBAAkB,EAC/B,cAAc,EAAE,cAAc,EAC9B,kBAAkB,EAAE,kBAAkB;IAWxC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC;;OAEG;IACG,KAAK,CAAC,UAAU,GAAE,MAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqC1C;;OAEG;IACG,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAA;KAAE,EAAE,EAC3C,UAAU,GAAE,MAAY,GACvB,OAAO,CAAC,MAAM,CAAC;IA6BlB;;OAEG;IACG,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IA8BhB;;OAEG;YACW,cAAc;IAqC5B;;OAEG;YACW,sBAAsB;IAqBpC;;OAEG;YACW,iBAAiB;IAiB/B;;OAEG;YACW,qBAAqB;IAsBnC;;OAEG;YACW,iBAAiB;IAU/B;;OAEG;YACW,mBAAmB;IAWjC;;OAEG;YACW,aAAa;IAoB3B;;OAEG;YACW,yBAAyB;IAwCvC;;OAEG;YACW,cAAc;IAkB5B;;OAEG;YACW,iBAAiB;IAQ/B;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;OAEG;IACH,aAAa,IAAI,mBAAmB,EAAE;IAItC;;OAEG;IACH,QAAQ,IAAI,OAAO;CAGpB"}
@@ -0,0 +1,353 @@
1
+ "use strict";
2
+ /**
3
+ * ImprovementLoop - Phase 2 (Milestone 2.2)
4
+ *
5
+ * Implements continuous improvement loop with pattern recognition,
6
+ * strategy optimization, and A/B testing framework.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ImprovementLoop = void 0;
10
+ const uuid_1 = require("uuid");
11
+ const Logger_1 = require("../utils/Logger");
12
+ /**
13
+ * ImprovementLoop - Continuous learning and optimization
14
+ */
15
+ class ImprovementLoop {
16
+ constructor(agentId, memoryStore, learningEngine, performanceTracker) {
17
+ this.isRunning = false;
18
+ this.logger = Logger_1.Logger.getInstance();
19
+ this.agentId = agentId;
20
+ this.memoryStore = memoryStore;
21
+ this.learningEngine = learningEngine;
22
+ this.performanceTracker = performanceTracker;
23
+ this.strategies = new Map();
24
+ this.activeTests = new Map();
25
+ }
26
+ /**
27
+ * Initialize the improvement loop
28
+ */
29
+ async initialize() {
30
+ this.logger.info(`Initializing ImprovementLoop for agent ${this.agentId}`);
31
+ // Load existing strategies
32
+ await this.loadStrategies();
33
+ // Register default strategies
34
+ await this.registerDefaultStrategies();
35
+ this.logger.info('ImprovementLoop initialized successfully');
36
+ }
37
+ /**
38
+ * Start the continuous improvement loop
39
+ */
40
+ async start(intervalMs = 3600000) {
41
+ if (this.isRunning) {
42
+ this.logger.warn('ImprovementLoop already running');
43
+ return;
44
+ }
45
+ this.isRunning = true;
46
+ this.logger.info(`Starting ImprovementLoop with ${intervalMs}ms interval`);
47
+ // Run immediately
48
+ await this.runImprovementCycle();
49
+ // Schedule periodic runs
50
+ this.loopInterval = setInterval(async () => {
51
+ await this.runImprovementCycle();
52
+ }, intervalMs);
53
+ }
54
+ /**
55
+ * Stop the improvement loop
56
+ */
57
+ async stop() {
58
+ if (!this.isRunning) {
59
+ return;
60
+ }
61
+ this.isRunning = false;
62
+ if (this.loopInterval) {
63
+ clearInterval(this.loopInterval);
64
+ this.loopInterval = undefined;
65
+ }
66
+ this.logger.info('ImprovementLoop stopped');
67
+ }
68
+ /**
69
+ * Run a single improvement cycle
70
+ */
71
+ async runImprovementCycle() {
72
+ this.logger.info('Running improvement cycle...');
73
+ try {
74
+ // 1. Analyze current performance
75
+ const improvement = await this.performanceTracker.calculateImprovement();
76
+ this.logger.debug(`Current improvement: ${improvement.improvementRate.toFixed(2)}%`);
77
+ // 2. Identify failure patterns
78
+ const failurePatterns = this.learningEngine.getFailurePatterns();
79
+ await this.analyzeFailurePatterns(failurePatterns);
80
+ // 3. Discover optimization opportunities
81
+ const opportunities = await this.discoverOptimizations();
82
+ this.logger.debug(`Found ${opportunities.length} optimization opportunities`);
83
+ // 4. Run active A/B tests
84
+ await this.updateActiveTests();
85
+ // 5. Apply best strategies
86
+ await this.applyBestStrategies();
87
+ // 6. Store cycle results
88
+ await this.storeCycleResults({
89
+ timestamp: new Date(),
90
+ improvement,
91
+ failurePatterns: failurePatterns.length,
92
+ opportunities: opportunities.length,
93
+ activeTests: this.activeTests.size
94
+ });
95
+ this.logger.info('Improvement cycle completed successfully');
96
+ }
97
+ catch (error) {
98
+ this.logger.error('Error in improvement cycle:', error);
99
+ }
100
+ }
101
+ /**
102
+ * Create A/B test for strategy comparison
103
+ */
104
+ async createABTest(name, strategies, sampleSize = 100) {
105
+ const test = {
106
+ id: (0, uuid_1.v4)(),
107
+ name,
108
+ strategies,
109
+ sampleSize,
110
+ results: strategies.map(s => ({
111
+ strategy: s.name,
112
+ successRate: 0,
113
+ averageTime: 0,
114
+ sampleCount: 0
115
+ })),
116
+ status: 'running',
117
+ startedAt: new Date()
118
+ };
119
+ this.activeTests.set(test.id, test);
120
+ await this.memoryStore.store(`phase2/learning/${this.agentId}/abtests/${test.id}`, test, { partition: 'learning' });
121
+ this.logger.info(`Created A/B test: ${name} (${test.id})`);
122
+ return test.id;
123
+ }
124
+ /**
125
+ * Record A/B test result
126
+ */
127
+ async recordTestResult(testId, strategyName, success, executionTime) {
128
+ const test = this.activeTests.get(testId);
129
+ if (!test) {
130
+ throw new Error(`A/B test not found: ${testId}`);
131
+ }
132
+ const result = test.results.find(r => r.strategy === strategyName);
133
+ if (!result) {
134
+ throw new Error(`Strategy not found in test: ${strategyName}`);
135
+ }
136
+ // Update result statistics
137
+ result.sampleCount++;
138
+ result.successRate = ((result.successRate * (result.sampleCount - 1)) + (success ? 1 : 0)) / result.sampleCount;
139
+ result.averageTime = ((result.averageTime * (result.sampleCount - 1)) + executionTime) / result.sampleCount;
140
+ // Check if test is complete
141
+ const totalSamples = test.results.reduce((sum, r) => sum + r.sampleCount, 0);
142
+ if (totalSamples >= test.sampleSize) {
143
+ await this.completeABTest(testId);
144
+ }
145
+ else {
146
+ // Update test in memory
147
+ await this.memoryStore.store(`phase2/learning/${this.agentId}/abtests/${testId}`, test, { partition: 'learning' });
148
+ }
149
+ }
150
+ /**
151
+ * Complete A/B test and determine winner
152
+ */
153
+ async completeABTest(testId) {
154
+ const test = this.activeTests.get(testId);
155
+ if (!test) {
156
+ return;
157
+ }
158
+ // Find best performing strategy
159
+ let bestResult = test.results[0];
160
+ for (const result of test.results) {
161
+ const bestScore = bestResult.successRate * 0.7 + (1 - bestResult.averageTime / 60000) * 0.3;
162
+ const currentScore = result.successRate * 0.7 + (1 - result.averageTime / 60000) * 0.3;
163
+ if (currentScore > bestScore) {
164
+ bestResult = result;
165
+ }
166
+ }
167
+ test.winner = bestResult.strategy;
168
+ test.status = 'completed';
169
+ test.completedAt = new Date();
170
+ // Store completed test
171
+ await this.memoryStore.store(`phase2/learning/${this.agentId}/abtests/${testId}`, test, { partition: 'learning' });
172
+ // Remove from active tests
173
+ this.activeTests.delete(testId);
174
+ this.logger.info(`A/B test completed: ${test.name}, winner: ${test.winner}`);
175
+ // Apply winning strategy
176
+ await this.applyStrategy(test.winner);
177
+ }
178
+ /**
179
+ * Analyze failure patterns and suggest mitigations
180
+ */
181
+ async analyzeFailurePatterns(patterns) {
182
+ const highFrequencyPatterns = patterns.filter(p => p.frequency > 5 && p.confidence > 0.7);
183
+ for (const pattern of highFrequencyPatterns) {
184
+ // Suggest mitigation if not already present
185
+ if (!pattern.mitigation) {
186
+ const mitigation = await this.suggestMitigation(pattern);
187
+ pattern.mitigation = mitigation;
188
+ this.logger.info(`Suggested mitigation for pattern ${pattern.pattern}: ${mitigation}`);
189
+ // Store updated pattern
190
+ await this.memoryStore.store(`phase2/learning/${this.agentId}/failure-patterns/${pattern.id}`, pattern, { partition: 'learning' });
191
+ }
192
+ }
193
+ }
194
+ /**
195
+ * Suggest mitigation for failure pattern
196
+ */
197
+ async suggestMitigation(pattern) {
198
+ // Simple rule-based mitigation suggestions
199
+ const patternType = pattern.pattern.split(':')[0];
200
+ const mitigations = {
201
+ 'timeout': 'Increase timeout threshold or implement progress checkpointing',
202
+ 'memory': 'Implement memory pooling and garbage collection optimization',
203
+ 'validation': 'Add input validation and sanitization before processing',
204
+ 'network': 'Implement retry logic with exponential backoff',
205
+ 'parsing': 'Add robust error handling for malformed input',
206
+ 'permission': 'Implement proper permission checking before operations',
207
+ 'default': 'Add comprehensive error handling and fallback mechanisms'
208
+ };
209
+ return mitigations[patternType] || mitigations['default'];
210
+ }
211
+ /**
212
+ * Discover optimization opportunities
213
+ */
214
+ async discoverOptimizations() {
215
+ const opportunities = [];
216
+ // Get learned patterns
217
+ const patterns = this.learningEngine.getPatterns();
218
+ // Find underutilized high-confidence patterns
219
+ for (const pattern of patterns) {
220
+ if (pattern.confidence > 0.8 && pattern.usageCount < 10) {
221
+ opportunities.push({
222
+ strategy: pattern.pattern,
223
+ confidence: pattern.confidence,
224
+ expectedImprovement: pattern.successRate * 20, // estimate 20% of success rate
225
+ reasoning: `High-confidence pattern (${pattern.confidence.toFixed(2)}) with low usage`,
226
+ alternatives: []
227
+ });
228
+ }
229
+ }
230
+ return opportunities;
231
+ }
232
+ /**
233
+ * Update active A/B tests
234
+ */
235
+ async updateActiveTests() {
236
+ for (const [testId, test] of this.activeTests.entries()) {
237
+ const totalSamples = test.results.reduce((sum, r) => sum + r.sampleCount, 0);
238
+ if (totalSamples >= test.sampleSize) {
239
+ await this.completeABTest(testId);
240
+ }
241
+ }
242
+ }
243
+ /**
244
+ * Apply best strategies based on learning
245
+ */
246
+ async applyBestStrategies() {
247
+ const patterns = this.learningEngine.getPatterns()
248
+ .filter(p => p.confidence > 0.9 && p.successRate > 0.8)
249
+ .slice(0, 3);
250
+ for (const pattern of patterns) {
251
+ const strategyName = pattern.pattern.split(':')[1] || 'default';
252
+ await this.applyStrategy(strategyName);
253
+ }
254
+ }
255
+ /**
256
+ * Apply a strategy
257
+ */
258
+ async applyStrategy(strategyName) {
259
+ const strategy = this.strategies.get(strategyName);
260
+ if (!strategy) {
261
+ this.logger.warn(`Strategy not found: ${strategyName}`);
262
+ return;
263
+ }
264
+ strategy.usageCount++;
265
+ // Store strategy application
266
+ await this.memoryStore.storeEvent({
267
+ type: 'strategy:applied',
268
+ payload: { strategy: strategyName, config: strategy.config },
269
+ source: this.agentId,
270
+ timestamp: Date.now()
271
+ });
272
+ this.logger.info(`Applied strategy: ${strategyName}`);
273
+ }
274
+ /**
275
+ * Register default improvement strategies
276
+ */
277
+ async registerDefaultStrategies() {
278
+ const defaultStrategies = [
279
+ {
280
+ id: (0, uuid_1.v4)(),
281
+ name: 'parallel-execution',
282
+ description: 'Execute tasks in parallel when possible',
283
+ config: { parallelization: 0.8 },
284
+ usageCount: 0,
285
+ createdAt: new Date()
286
+ },
287
+ {
288
+ id: (0, uuid_1.v4)(),
289
+ name: 'adaptive-retry',
290
+ description: 'Use adaptive retry policy with exponential backoff',
291
+ config: { retryPolicy: 'exponential', maxRetries: 3 },
292
+ usageCount: 0,
293
+ createdAt: new Date()
294
+ },
295
+ {
296
+ id: (0, uuid_1.v4)(),
297
+ name: 'resource-optimization',
298
+ description: 'Optimize resource allocation based on task complexity',
299
+ config: { adaptive: true },
300
+ usageCount: 0,
301
+ createdAt: new Date()
302
+ }
303
+ ];
304
+ for (const strategy of defaultStrategies) {
305
+ this.strategies.set(strategy.name, strategy);
306
+ await this.memoryStore.store(`phase2/learning/${this.agentId}/strategies/${strategy.name}`, strategy, { partition: 'learning' });
307
+ }
308
+ this.logger.info(`Registered ${defaultStrategies.length} default strategies`);
309
+ }
310
+ /**
311
+ * Load strategies from memory
312
+ */
313
+ async loadStrategies() {
314
+ try {
315
+ const entries = await this.memoryStore.query(`phase2/learning/${this.agentId}/strategies/%`, { partition: 'learning' });
316
+ for (const entry of entries) {
317
+ const strategy = entry.value;
318
+ this.strategies.set(strategy.name, strategy);
319
+ }
320
+ this.logger.info(`Loaded ${this.strategies.size} strategies`);
321
+ }
322
+ catch (error) {
323
+ this.logger.warn('No previous strategies found');
324
+ }
325
+ }
326
+ /**
327
+ * Store cycle results
328
+ */
329
+ async storeCycleResults(results) {
330
+ await this.memoryStore.store(`phase2/learning/${this.agentId}/cycles/${results.timestamp.getTime()}`, results, { partition: 'learning', ttl: 2592000 } // 30 days
331
+ );
332
+ }
333
+ /**
334
+ * Get active A/B tests
335
+ */
336
+ getActiveTests() {
337
+ return Array.from(this.activeTests.values());
338
+ }
339
+ /**
340
+ * Get all strategies
341
+ */
342
+ getStrategies() {
343
+ return Array.from(this.strategies.values());
344
+ }
345
+ /**
346
+ * Check if loop is running
347
+ */
348
+ isActive() {
349
+ return this.isRunning;
350
+ }
351
+ }
352
+ exports.ImprovementLoop = ImprovementLoop;
353
+ //# sourceMappingURL=ImprovementLoop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImprovementLoop.js","sourceRoot":"","sources":["../../src/learning/ImprovementLoop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * LearningEngine - Phase 2 (Milestone 2.2)
3
+ *
4
+ * Implements reinforcement learning for agent performance improvement.
5
+ * Uses Q-learning algorithm to optimize task execution strategies.
6
+ */
7
+ import { SwarmMemoryManager } from '../core/memory/SwarmMemoryManager';
8
+ import { LearningConfig, TaskState, LearningFeedback, LearningOutcome, LearnedPattern, FailurePattern, StrategyRecommendation } from './types';
9
+ /**
10
+ * LearningEngine - Reinforcement learning for agents
11
+ */
12
+ export declare class LearningEngine {
13
+ private readonly logger;
14
+ private readonly memoryStore;
15
+ private readonly agentId;
16
+ private config;
17
+ private qTable;
18
+ private experiences;
19
+ private patterns;
20
+ private failurePatterns;
21
+ private taskCount;
22
+ constructor(agentId: string, memoryStore: SwarmMemoryManager, config?: Partial<LearningConfig>);
23
+ /**
24
+ * Initialize the learning engine
25
+ */
26
+ initialize(): Promise<void>;
27
+ /**
28
+ * Learn from a task execution
29
+ */
30
+ learnFromExecution(task: any, result: any, feedback?: LearningFeedback): Promise<LearningOutcome>;
31
+ /**
32
+ * Recommend best strategy for a given state
33
+ */
34
+ recommendStrategy(state: TaskState): Promise<StrategyRecommendation>;
35
+ /**
36
+ * Get learned patterns
37
+ */
38
+ getPatterns(): LearnedPattern[];
39
+ /**
40
+ * Get failure patterns
41
+ */
42
+ getFailurePatterns(): FailurePattern[];
43
+ /**
44
+ * Extract features from state for learning
45
+ */
46
+ private extractFeatures;
47
+ /**
48
+ * Encode state to string key for Q-table
49
+ */
50
+ private encodeState;
51
+ /**
52
+ * Encode action to string key
53
+ */
54
+ private encodeAction;
55
+ /**
56
+ * Extract experience from task execution
57
+ */
58
+ private extractExperience;
59
+ /**
60
+ * Calculate reward from execution result and feedback
61
+ */
62
+ private calculateReward;
63
+ /**
64
+ * Update Q-table with new experience (Q-learning algorithm)
65
+ */
66
+ private updateQTable;
67
+ /**
68
+ * Perform batch update on experiences
69
+ */
70
+ private performBatchUpdate;
71
+ /**
72
+ * Update learned patterns
73
+ */
74
+ private updatePatterns;
75
+ /**
76
+ * Detect failure patterns
77
+ */
78
+ private detectFailurePattern;
79
+ /**
80
+ * Calculate improvement over time
81
+ */
82
+ private calculateImprovement;
83
+ /**
84
+ * Create learning outcome
85
+ */
86
+ private createOutcome;
87
+ /**
88
+ * Estimate task complexity
89
+ */
90
+ private estimateComplexity;
91
+ /**
92
+ * Convert Q-value to confidence score
93
+ */
94
+ private valueToConfidence;
95
+ /**
96
+ * Decay exploration rate
97
+ */
98
+ private decayExploration;
99
+ /**
100
+ * Save learning state to memory
101
+ */
102
+ private saveState;
103
+ /**
104
+ * Load learning state from memory
105
+ */
106
+ private loadState;
107
+ /**
108
+ * Serialize Q-table for storage
109
+ */
110
+ private serializeQTable;
111
+ /**
112
+ * Deserialize Q-table from storage
113
+ */
114
+ private deserializeQTable;
115
+ /**
116
+ * Calculate state size in bytes
117
+ */
118
+ private calculateStateSize;
119
+ /**
120
+ * Get current performance metrics
121
+ */
122
+ private getCurrentPerformance;
123
+ /**
124
+ * Emit learning event
125
+ */
126
+ private emitLearningEvent;
127
+ /**
128
+ * Get current exploration rate
129
+ */
130
+ getExplorationRate(): number;
131
+ /**
132
+ * Get total experiences
133
+ */
134
+ getTotalExperiences(): number;
135
+ /**
136
+ * Enable/disable learning
137
+ */
138
+ setEnabled(enabled: boolean): void;
139
+ /**
140
+ * Check if learning is enabled
141
+ */
142
+ isEnabled(): boolean;
143
+ }
144
+ //# sourceMappingURL=LearningEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LearningEngine.d.ts","sourceRoot":"","sources":["../../src/learning/LearningEngine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EACL,cAAc,EAEd,SAAS,EAET,gBAAgB,EAChB,eAAe,EACf,cAAc,EAEd,cAAc,EACd,sBAAsB,EAEvB,MAAM,SAAS,CAAC;AAiBjB;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,SAAS,CAAS;gBAGxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,kBAAkB,EAC/B,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAatC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBjC;;OAEG;IACG,kBAAkB,CACtB,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,GAAG,EACX,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC,eAAe,CAAC;IAqD3B;;OAEG;IACG,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAoD1E;;OAEG;IACH,WAAW,IAAI,cAAc,EAAE;IAK/B;;OAEG;IACH,kBAAkB,IAAI,cAAc,EAAE;IAKtC;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyCzB;;OAEG;IACH,OAAO,CAAC,eAAe;IA+BvB;;OAEG;YACW,YAAY;IA4B1B;;OAEG;YACW,kBAAkB;IAgBhC;;OAEG;YACW,cAAc;IAoC5B;;OAEG;YACW,oBAAoB;IAoBlC;;OAEG;YACW,oBAAoB;IAwBlC;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;YACW,SAAS;IA6BvB;;OAEG;YACW,SAAS;IAmBvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;YACW,qBAAqB;IAiBnC;;OAEG;YACW,iBAAiB;IAiB/B;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAI5B;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB"}