agentic-qe 2.0.0 → 2.1.1

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 (144) hide show
  1. package/.claude/agents/qx-partner.md +17 -4
  2. package/.claude/skills/accessibility-testing/SKILL.md +144 -692
  3. package/.claude/skills/agentic-quality-engineering/SKILL.md +176 -529
  4. package/.claude/skills/api-testing-patterns/SKILL.md +180 -560
  5. package/.claude/skills/brutal-honesty-review/SKILL.md +113 -603
  6. package/.claude/skills/bug-reporting-excellence/SKILL.md +116 -517
  7. package/.claude/skills/chaos-engineering-resilience/SKILL.md +127 -72
  8. package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +209 -404
  9. package/.claude/skills/code-review-quality/SKILL.md +158 -608
  10. package/.claude/skills/compatibility-testing/SKILL.md +148 -38
  11. package/.claude/skills/compliance-testing/SKILL.md +132 -63
  12. package/.claude/skills/consultancy-practices/SKILL.md +114 -446
  13. package/.claude/skills/context-driven-testing/SKILL.md +117 -381
  14. package/.claude/skills/contract-testing/SKILL.md +176 -141
  15. package/.claude/skills/database-testing/SKILL.md +137 -130
  16. package/.claude/skills/exploratory-testing-advanced/SKILL.md +160 -629
  17. package/.claude/skills/holistic-testing-pact/SKILL.md +140 -188
  18. package/.claude/skills/localization-testing/SKILL.md +145 -33
  19. package/.claude/skills/mobile-testing/SKILL.md +132 -448
  20. package/.claude/skills/mutation-testing/SKILL.md +147 -41
  21. package/.claude/skills/performance-testing/SKILL.md +200 -546
  22. package/.claude/skills/quality-metrics/SKILL.md +164 -519
  23. package/.claude/skills/refactoring-patterns/SKILL.md +132 -699
  24. package/.claude/skills/regression-testing/SKILL.md +120 -926
  25. package/.claude/skills/risk-based-testing/SKILL.md +157 -660
  26. package/.claude/skills/security-testing/SKILL.md +199 -538
  27. package/.claude/skills/sherlock-review/SKILL.md +163 -699
  28. package/.claude/skills/shift-left-testing/SKILL.md +161 -465
  29. package/.claude/skills/shift-right-testing/SKILL.md +161 -519
  30. package/.claude/skills/six-thinking-hats/SKILL.md +175 -1110
  31. package/.claude/skills/skills-manifest.json +71 -20
  32. package/.claude/skills/tdd-london-chicago/SKILL.md +131 -448
  33. package/.claude/skills/technical-writing/SKILL.md +103 -154
  34. package/.claude/skills/test-automation-strategy/SKILL.md +166 -772
  35. package/.claude/skills/test-data-management/SKILL.md +126 -910
  36. package/.claude/skills/test-design-techniques/SKILL.md +179 -89
  37. package/.claude/skills/test-environment-management/SKILL.md +136 -91
  38. package/.claude/skills/test-reporting-analytics/SKILL.md +169 -92
  39. package/.claude/skills/testability-scoring/SKILL.md +172 -538
  40. package/.claude/skills/testability-scoring/scripts/generate-html-report.js +0 -0
  41. package/.claude/skills/visual-testing-advanced/SKILL.md +155 -78
  42. package/.claude/skills/xp-practices/SKILL.md +151 -587
  43. package/CHANGELOG.md +86 -0
  44. package/README.md +23 -16
  45. package/dist/agents/QXPartnerAgent.d.ts +47 -1
  46. package/dist/agents/QXPartnerAgent.d.ts.map +1 -1
  47. package/dist/agents/QXPartnerAgent.js +2086 -125
  48. package/dist/agents/QXPartnerAgent.js.map +1 -1
  49. package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
  50. package/dist/agents/lifecycle/AgentLifecycleManager.js +34 -31
  51. package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
  52. package/dist/cli/commands/init-claude-md-template.d.ts.map +1 -1
  53. package/dist/cli/commands/init-claude-md-template.js +14 -0
  54. package/dist/cli/commands/init-claude-md-template.js.map +1 -1
  55. package/dist/core/SwarmCoordinator.d.ts +180 -0
  56. package/dist/core/SwarmCoordinator.d.ts.map +1 -0
  57. package/dist/core/SwarmCoordinator.js +473 -0
  58. package/dist/core/SwarmCoordinator.js.map +1 -0
  59. package/dist/core/memory/ReflexionMemoryAdapter.d.ts +109 -0
  60. package/dist/core/memory/ReflexionMemoryAdapter.d.ts.map +1 -0
  61. package/dist/core/memory/ReflexionMemoryAdapter.js +306 -0
  62. package/dist/core/memory/ReflexionMemoryAdapter.js.map +1 -0
  63. package/dist/core/memory/RuVectorPatternStore.d.ts +28 -0
  64. package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -1
  65. package/dist/core/memory/RuVectorPatternStore.js +70 -0
  66. package/dist/core/memory/RuVectorPatternStore.js.map +1 -1
  67. package/dist/core/memory/SparseVectorSearch.d.ts +55 -0
  68. package/dist/core/memory/SparseVectorSearch.d.ts.map +1 -0
  69. package/dist/core/memory/SparseVectorSearch.js +130 -0
  70. package/dist/core/memory/SparseVectorSearch.js.map +1 -0
  71. package/dist/core/memory/TieredCompression.d.ts +81 -0
  72. package/dist/core/memory/TieredCompression.d.ts.map +1 -0
  73. package/dist/core/memory/TieredCompression.js +270 -0
  74. package/dist/core/memory/TieredCompression.js.map +1 -0
  75. package/dist/core/memory/index.d.ts +6 -0
  76. package/dist/core/memory/index.d.ts.map +1 -1
  77. package/dist/core/memory/index.js +29 -1
  78. package/dist/core/memory/index.js.map +1 -1
  79. package/dist/core/metrics/MetricsAggregator.d.ts +228 -0
  80. package/dist/core/metrics/MetricsAggregator.d.ts.map +1 -0
  81. package/dist/core/metrics/MetricsAggregator.js +482 -0
  82. package/dist/core/metrics/MetricsAggregator.js.map +1 -0
  83. package/dist/core/metrics/index.d.ts +5 -0
  84. package/dist/core/metrics/index.d.ts.map +1 -0
  85. package/dist/core/metrics/index.js +11 -0
  86. package/dist/core/metrics/index.js.map +1 -0
  87. package/dist/core/optimization/SwarmOptimizer.d.ts +5 -0
  88. package/dist/core/optimization/SwarmOptimizer.d.ts.map +1 -1
  89. package/dist/core/optimization/SwarmOptimizer.js +17 -0
  90. package/dist/core/optimization/SwarmOptimizer.js.map +1 -1
  91. package/dist/core/orchestration/AdaptiveScheduler.d.ts +190 -0
  92. package/dist/core/orchestration/AdaptiveScheduler.d.ts.map +1 -0
  93. package/dist/core/orchestration/AdaptiveScheduler.js +460 -0
  94. package/dist/core/orchestration/AdaptiveScheduler.js.map +1 -0
  95. package/dist/core/orchestration/WorkflowOrchestrator.d.ts +13 -0
  96. package/dist/core/orchestration/WorkflowOrchestrator.d.ts.map +1 -1
  97. package/dist/core/orchestration/WorkflowOrchestrator.js +32 -0
  98. package/dist/core/orchestration/WorkflowOrchestrator.js.map +1 -1
  99. package/dist/core/recovery/CircuitBreaker.d.ts +176 -0
  100. package/dist/core/recovery/CircuitBreaker.d.ts.map +1 -0
  101. package/dist/core/recovery/CircuitBreaker.js +382 -0
  102. package/dist/core/recovery/CircuitBreaker.js.map +1 -0
  103. package/dist/core/recovery/RecoveryOrchestrator.d.ts +186 -0
  104. package/dist/core/recovery/RecoveryOrchestrator.d.ts.map +1 -0
  105. package/dist/core/recovery/RecoveryOrchestrator.js +476 -0
  106. package/dist/core/recovery/RecoveryOrchestrator.js.map +1 -0
  107. package/dist/core/recovery/RetryStrategy.d.ts +127 -0
  108. package/dist/core/recovery/RetryStrategy.d.ts.map +1 -0
  109. package/dist/core/recovery/RetryStrategy.js +314 -0
  110. package/dist/core/recovery/RetryStrategy.js.map +1 -0
  111. package/dist/core/recovery/index.d.ts +8 -0
  112. package/dist/core/recovery/index.d.ts.map +1 -0
  113. package/dist/core/recovery/index.js +27 -0
  114. package/dist/core/recovery/index.js.map +1 -0
  115. package/dist/core/skills/DependencyResolver.d.ts +99 -0
  116. package/dist/core/skills/DependencyResolver.d.ts.map +1 -0
  117. package/dist/core/skills/DependencyResolver.js +260 -0
  118. package/dist/core/skills/DependencyResolver.js.map +1 -0
  119. package/dist/core/skills/ManifestGenerator.d.ts +114 -0
  120. package/dist/core/skills/ManifestGenerator.d.ts.map +1 -0
  121. package/dist/core/skills/ManifestGenerator.js +449 -0
  122. package/dist/core/skills/ManifestGenerator.js.map +1 -0
  123. package/dist/core/skills/index.d.ts +9 -0
  124. package/dist/core/skills/index.d.ts.map +1 -0
  125. package/dist/core/skills/index.js +24 -0
  126. package/dist/core/skills/index.js.map +1 -0
  127. package/dist/mcp/handlers/chaos/chaos-inject-failure.d.ts +5 -0
  128. package/dist/mcp/handlers/chaos/chaos-inject-failure.d.ts.map +1 -1
  129. package/dist/mcp/handlers/chaos/chaos-inject-failure.js +36 -2
  130. package/dist/mcp/handlers/chaos/chaos-inject-failure.js.map +1 -1
  131. package/dist/mcp/handlers/chaos/chaos-inject-latency.d.ts +5 -0
  132. package/dist/mcp/handlers/chaos/chaos-inject-latency.d.ts.map +1 -1
  133. package/dist/mcp/handlers/chaos/chaos-inject-latency.js +36 -2
  134. package/dist/mcp/handlers/chaos/chaos-inject-latency.js.map +1 -1
  135. package/dist/mcp/server.d.ts +9 -9
  136. package/dist/mcp/server.d.ts.map +1 -1
  137. package/dist/mcp/server.js +1 -2
  138. package/dist/mcp/server.js.map +1 -1
  139. package/dist/types/qx.d.ts +113 -7
  140. package/dist/types/qx.d.ts.map +1 -1
  141. package/dist/types/qx.js.map +1 -1
  142. package/dist/visualization/api/RestEndpoints.js +1 -1
  143. package/dist/visualization/api/RestEndpoints.js.map +1 -1
  144. package/package.json +15 -54
@@ -0,0 +1,473 @@
1
+ "use strict";
2
+ /**
3
+ * SwarmCoordinator - Master Orchestration Layer
4
+ *
5
+ * Coordinates SwarmOptimizer, WorkflowOrchestrator, and UnifiedMemoryCoordinator
6
+ * to provide unified swarm management with feedback loops and adaptive optimization.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.SwarmCoordinator = void 0;
10
+ exports.getSwarmCoordinator = getSwarmCoordinator;
11
+ exports.resetSwarmCoordinator = resetSwarmCoordinator;
12
+ const events_1 = require("events");
13
+ const Logger_js_1 = require("../utils/Logger.js");
14
+ const SwarmOptimizer_js_1 = require("./optimization/SwarmOptimizer.js");
15
+ const WorkflowOrchestrator_js_1 = require("./orchestration/WorkflowOrchestrator.js");
16
+ const UnifiedMemoryCoordinator_js_1 = require("./memory/UnifiedMemoryCoordinator.js");
17
+ const index_js_1 = require("./recovery/index.js");
18
+ // CPU tracking state for utilization calculation
19
+ let lastCpuUsage = process.cpuUsage();
20
+ let lastCpuTime = Date.now();
21
+ /**
22
+ * Calculate current CPU usage percentage
23
+ * Uses process.cpuUsage() delta to compute actual CPU utilization
24
+ */
25
+ function calculateCpuUsage() {
26
+ const currentCpuUsage = process.cpuUsage(lastCpuUsage);
27
+ const currentTime = Date.now();
28
+ const elapsedMs = currentTime - lastCpuTime;
29
+ if (elapsedMs === 0)
30
+ return 0;
31
+ // Total CPU time used in microseconds (user + system)
32
+ const totalCpuTime = currentCpuUsage.user + currentCpuUsage.system;
33
+ // Convert to percentage: (microseconds / 1000 = ms) / elapsed ms * 100
34
+ const cpuPercent = (totalCpuTime / 1000 / elapsedMs) * 100;
35
+ // Update tracking state for next calculation
36
+ lastCpuUsage = process.cpuUsage();
37
+ lastCpuTime = currentTime;
38
+ // Clamp to 0-1 range (normalized utilization)
39
+ return Math.min(cpuPercent / 100, 1);
40
+ }
41
+ /**
42
+ * Swarm Coordinator - Master orchestration layer
43
+ */
44
+ class SwarmCoordinator extends events_1.EventEmitter {
45
+ constructor(memoryManager, eventBus, config) {
46
+ super();
47
+ // State
48
+ this.status = 'initializing';
49
+ this.currentTopology = 'hierarchical';
50
+ this.agents = new Map();
51
+ this.startTime = new Date();
52
+ this.metricsHistory = [];
53
+ // Metrics tracking
54
+ this.taskStats = {
55
+ total: 0,
56
+ completed: 0,
57
+ failed: 0,
58
+ durations: [],
59
+ };
60
+ this.logger = Logger_js_1.Logger.getInstance();
61
+ this.memoryManager = memoryManager;
62
+ this.eventBus = eventBus;
63
+ this.config = {
64
+ defaultTopology: 'hierarchical',
65
+ maxAgents: 10,
66
+ autoOptimize: true,
67
+ optimizationInterval: 60000, // 1 minute
68
+ healthMonitoring: true,
69
+ healthCheckInterval: 30000, // 30 seconds
70
+ enableFeedbackLoop: true,
71
+ feedbackInterval: 120000, // 2 minutes
72
+ autoRecovery: true,
73
+ ...config,
74
+ };
75
+ // Initialize core components
76
+ this.optimizer = new SwarmOptimizer_js_1.SwarmOptimizer(memoryManager, eventBus);
77
+ this.orchestrator = new WorkflowOrchestrator_js_1.WorkflowOrchestrator(memoryManager, eventBus, this.optimizer);
78
+ this.memoryCoordinator = new UnifiedMemoryCoordinator_js_1.UnifiedMemoryCoordinator();
79
+ this.recoveryOrchestrator = (0, index_js_1.getRecoveryOrchestrator)();
80
+ this.currentTopology = this.config.defaultTopology;
81
+ }
82
+ /**
83
+ * Initialize the coordinator and all sub-components
84
+ */
85
+ async initialize() {
86
+ this.logger.info('Initializing SwarmCoordinator');
87
+ this.status = 'initializing';
88
+ try {
89
+ // Initialize components in order
90
+ await this.optimizer.initialize();
91
+ await this.orchestrator.initialize();
92
+ await this.memoryCoordinator.initialize();
93
+ // Set up event handlers
94
+ this.setupEventHandlers();
95
+ // Start monitoring if enabled
96
+ if (this.config.autoOptimize) {
97
+ this.startOptimizationLoop();
98
+ }
99
+ if (this.config.healthMonitoring) {
100
+ this.startHealthMonitoring();
101
+ }
102
+ if (this.config.enableFeedbackLoop) {
103
+ this.startFeedbackLoop();
104
+ }
105
+ this.status = 'running';
106
+ this.startTime = new Date();
107
+ this.emit('initialized', { topology: this.currentTopology });
108
+ this.logger.info('SwarmCoordinator initialized successfully');
109
+ }
110
+ catch (error) {
111
+ this.status = 'error';
112
+ this.logger.error('Failed to initialize SwarmCoordinator:', error);
113
+ throw error;
114
+ }
115
+ }
116
+ /**
117
+ * Get current swarm status
118
+ */
119
+ getStatus() {
120
+ return this.status;
121
+ }
122
+ /**
123
+ * Get current topology
124
+ */
125
+ getTopology() {
126
+ return this.currentTopology;
127
+ }
128
+ /**
129
+ * Get current metrics
130
+ */
131
+ getMetrics() {
132
+ const avgDuration = this.taskStats.durations.length > 0
133
+ ? this.taskStats.durations.reduce((a, b) => a + b, 0) / this.taskStats.durations.length
134
+ : 0;
135
+ const uptime = Date.now() - this.startTime.getTime();
136
+ const throughput = uptime > 0
137
+ ? (this.taskStats.completed / (uptime / 1000))
138
+ : 0;
139
+ const errorRate = this.taskStats.total > 0
140
+ ? this.taskStats.failed / this.taskStats.total
141
+ : 0;
142
+ // Get queue depth from orchestrator
143
+ const queueDepth = this.orchestrator?.getQueueDepth() ?? 0;
144
+ // Calculate real CPU utilization using process.cpuUsage()
145
+ const cpuUtilization = calculateCpuUsage();
146
+ return {
147
+ activeAgents: this.agents.size,
148
+ totalTasks: this.taskStats.total,
149
+ completedTasks: this.taskStats.completed,
150
+ failedTasks: this.taskStats.failed,
151
+ averageTaskDuration: avgDuration,
152
+ throughput,
153
+ queueDepth,
154
+ memoryUsage: process.memoryUsage().heapUsed,
155
+ cpuUtilization,
156
+ errorRate,
157
+ topology: this.currentTopology,
158
+ uptime,
159
+ };
160
+ }
161
+ /**
162
+ * Register an agent with the swarm
163
+ */
164
+ async registerAgent(agent) {
165
+ if (this.agents.size >= this.config.maxAgents) {
166
+ throw new Error(`Maximum agent limit (${this.config.maxAgents}) reached`);
167
+ }
168
+ this.agents.set(agent.id, agent);
169
+ this.emit('agent:registered', { agentId: agent.id, type: agent.type });
170
+ this.logger.info(`Agent registered: ${agent.id} (${agent.type})`);
171
+ }
172
+ /**
173
+ * Unregister an agent from the swarm
174
+ */
175
+ async unregisterAgent(agentId) {
176
+ const agent = this.agents.get(agentId);
177
+ if (agent) {
178
+ this.agents.delete(agentId);
179
+ this.emit('agent:unregistered', { agentId, type: agent.type });
180
+ this.logger.info(`Agent unregistered: ${agentId}`);
181
+ }
182
+ }
183
+ /**
184
+ * Submit a task for execution
185
+ */
186
+ async submitTask(task) {
187
+ this.taskStats.total++;
188
+ try {
189
+ // Use recovery orchestrator for resilient execution
190
+ const result = await this.recoveryOrchestrator.executeWithRecovery('orchestration', `task:${task.id}`, async () => {
191
+ // Get optimal allocation from optimizer
192
+ const allocation = await this.optimizer.allocateAgents([task], Array.from(this.agents.values()));
193
+ // Execute through orchestrator
194
+ // Note: WorkflowOrchestrator handles actual execution
195
+ return task.id;
196
+ });
197
+ this.emit('task:submitted', { taskId: task.id, priority: task.priority });
198
+ return result;
199
+ }
200
+ catch (error) {
201
+ this.taskStats.failed++;
202
+ throw error;
203
+ }
204
+ }
205
+ /**
206
+ * Change swarm topology
207
+ */
208
+ async changeTopology(newTopology) {
209
+ if (newTopology === this.currentTopology) {
210
+ return;
211
+ }
212
+ this.logger.info(`Changing topology: ${this.currentTopology} -> ${newTopology}`);
213
+ const oldTopology = this.currentTopology;
214
+ this.currentTopology = newTopology;
215
+ // Notify all agents of topology change
216
+ this.emit('topology:changed', { from: oldTopology, to: newTopology });
217
+ // Store in memory for persistence
218
+ await this.memoryCoordinator.store('swarm:topology', { topology: newTopology, changedAt: new Date().toISOString() });
219
+ }
220
+ /**
221
+ * Pause the swarm
222
+ */
223
+ async pause() {
224
+ this.status = 'paused';
225
+ this.stopTimers();
226
+ this.emit('paused');
227
+ this.logger.info('Swarm paused');
228
+ }
229
+ /**
230
+ * Resume the swarm
231
+ */
232
+ async resume() {
233
+ this.status = 'running';
234
+ if (this.config.autoOptimize) {
235
+ this.startOptimizationLoop();
236
+ }
237
+ if (this.config.healthMonitoring) {
238
+ this.startHealthMonitoring();
239
+ }
240
+ if (this.config.enableFeedbackLoop) {
241
+ this.startFeedbackLoop();
242
+ }
243
+ this.emit('resumed');
244
+ this.logger.info('Swarm resumed');
245
+ }
246
+ /**
247
+ * Shutdown the coordinator
248
+ */
249
+ async shutdown() {
250
+ this.logger.info('Shutting down SwarmCoordinator');
251
+ this.status = 'stopped';
252
+ this.stopTimers();
253
+ // Persist final metrics
254
+ await this.persistMetrics();
255
+ this.emit('shutdown');
256
+ this.removeAllListeners();
257
+ this.logger.info('SwarmCoordinator shutdown complete');
258
+ }
259
+ /**
260
+ * Force optimization cycle
261
+ */
262
+ async optimize() {
263
+ this.logger.debug('Running optimization cycle');
264
+ try {
265
+ // Get current workload profile
266
+ const metrics = this.getMetrics();
267
+ const workloadProfile = this.buildWorkloadProfile(metrics);
268
+ // Get topology recommendation
269
+ const recommendation = await this.optimizer.recommendTopology(workloadProfile);
270
+ // Apply recommendation if different from current
271
+ if (recommendation && recommendation.topology !== this.currentTopology) {
272
+ if (recommendation.confidence > 0.7) {
273
+ await this.changeTopology(recommendation.topology);
274
+ }
275
+ }
276
+ this.emit('optimization:complete', { recommendation, metrics });
277
+ }
278
+ catch (error) {
279
+ this.logger.error('Optimization cycle failed:', error);
280
+ this.emit('optimization:failed', { error });
281
+ }
282
+ }
283
+ /**
284
+ * Get feedback loop data
285
+ */
286
+ async getFeedbackData() {
287
+ const metrics = this.getMetrics();
288
+ const memoryHealth = await this.memoryCoordinator.checkHealth();
289
+ // Get latest optimization recommendations from optimizer
290
+ const optimizerRecommendations = this.optimizer?.getLatestRecommendation() ?? null;
291
+ // Get orchestrator status with queue depth and execution info
292
+ const orchestratorStatus = this.orchestrator?.getStatus() ?? { status: 'unknown' };
293
+ return {
294
+ timestamp: new Date(),
295
+ metrics,
296
+ optimizerRecommendations,
297
+ orchestratorStatus,
298
+ memoryHealth: { healthy: memoryHealth },
299
+ };
300
+ }
301
+ /**
302
+ * Set up event handlers for sub-components
303
+ */
304
+ setupEventHandlers() {
305
+ // Forward events from sub-components
306
+ this.eventBus.subscribe('agent:completed', (data) => {
307
+ this.taskStats.completed++;
308
+ if (data.duration) {
309
+ this.taskStats.durations.push(data.duration);
310
+ // Keep only last 1000 durations
311
+ if (this.taskStats.durations.length > 1000) {
312
+ this.taskStats.durations = this.taskStats.durations.slice(-1000);
313
+ }
314
+ }
315
+ });
316
+ this.eventBus.subscribe('agent:failed', () => {
317
+ this.taskStats.failed++;
318
+ });
319
+ // Listen for recovery events
320
+ this.recoveryOrchestrator.on('recovery-success', (data) => {
321
+ this.logger.info(`Recovery succeeded for ${data.component}:`, data);
322
+ });
323
+ this.recoveryOrchestrator.on('recovery-failed', (data) => {
324
+ this.logger.warn(`Recovery failed for ${data.component}:`, data);
325
+ if (this.status !== 'degraded') {
326
+ this.status = 'degraded';
327
+ this.emit('status:degraded', { reason: data.error });
328
+ }
329
+ });
330
+ }
331
+ /**
332
+ * Start optimization loop
333
+ */
334
+ startOptimizationLoop() {
335
+ this.optimizationTimer = setInterval(() => {
336
+ this.optimize().catch(err => {
337
+ this.logger.error('Optimization loop error:', err);
338
+ });
339
+ }, this.config.optimizationInterval);
340
+ }
341
+ /**
342
+ * Start health monitoring
343
+ */
344
+ startHealthMonitoring() {
345
+ this.healthCheckTimer = setInterval(async () => {
346
+ try {
347
+ const memoryHealthy = await this.memoryCoordinator.checkHealth();
348
+ if (!memoryHealthy && this.config.autoRecovery) {
349
+ await this.recoveryOrchestrator.attemptRecovery('memory', new Error('Memory health check failed'));
350
+ }
351
+ this.emit('health:checked', {
352
+ memoryHealthy,
353
+ status: this.status,
354
+ });
355
+ }
356
+ catch (error) {
357
+ this.logger.error('Health check failed:', error);
358
+ }
359
+ }, this.config.healthCheckInterval);
360
+ }
361
+ /**
362
+ * Start feedback loop
363
+ */
364
+ startFeedbackLoop() {
365
+ this.feedbackTimer = setInterval(async () => {
366
+ try {
367
+ const feedbackData = await this.getFeedbackData();
368
+ // Store metrics history
369
+ this.metricsHistory.push(feedbackData.metrics);
370
+ if (this.metricsHistory.length > 100) {
371
+ this.metricsHistory = this.metricsHistory.slice(-100);
372
+ }
373
+ // Persist to memory (24 hours TTL)
374
+ await this.memoryCoordinator.store(`swarm:feedback:${Date.now()}`, feedbackData, 86400000 // 24 hours in ms
375
+ );
376
+ this.emit('feedback:collected', feedbackData);
377
+ }
378
+ catch (error) {
379
+ this.logger.error('Feedback loop error:', error);
380
+ }
381
+ }, this.config.feedbackInterval);
382
+ }
383
+ /**
384
+ * Stop all timers
385
+ */
386
+ stopTimers() {
387
+ if (this.optimizationTimer) {
388
+ clearInterval(this.optimizationTimer);
389
+ this.optimizationTimer = undefined;
390
+ }
391
+ if (this.healthCheckTimer) {
392
+ clearInterval(this.healthCheckTimer);
393
+ this.healthCheckTimer = undefined;
394
+ }
395
+ if (this.feedbackTimer) {
396
+ clearInterval(this.feedbackTimer);
397
+ this.feedbackTimer = undefined;
398
+ }
399
+ }
400
+ /**
401
+ * Build workload profile from metrics
402
+ */
403
+ buildWorkloadProfile(metrics) {
404
+ // Calculate average complexity from multiple factors:
405
+ // 1. Duration factor: normalized task duration (0-1 scale, baseline 5000ms)
406
+ const durationFactor = Math.min(metrics.averageTaskDuration / 5000, 1);
407
+ // 2. Error factor: higher error rates indicate complex/problematic tasks
408
+ const errorFactor = metrics.errorRate;
409
+ // 3. Throughput factor: low throughput relative to agents indicates coordination complexity
410
+ const expectedThroughput = metrics.activeAgents * 0.5; // 0.5 tasks/sec per agent baseline
411
+ const throughputFactor = metrics.activeAgents > 0 && expectedThroughput > 0
412
+ ? Math.max(0, 1 - (metrics.throughput / expectedThroughput))
413
+ : 0;
414
+ // 4. Memory factor: high memory usage indicates data-intensive complexity
415
+ const memoryFactor = Math.min(metrics.memoryUsage / 1073741824, 1); // 1GB baseline
416
+ // Weighted average complexity (0-1 scale)
417
+ const averageComplexity = Math.min(1, Math.max(0, durationFactor * 0.4 + // Duration is primary indicator
418
+ errorFactor * 0.2 + // Errors suggest complexity
419
+ throughputFactor * 0.2 + // Low throughput means coordination overhead
420
+ memoryFactor * 0.2 // Memory usage indicates data complexity
421
+ ));
422
+ return {
423
+ taskCount: metrics.totalTasks,
424
+ averageComplexity,
425
+ parallelizationPotential: metrics.activeAgents > 1 ? 0.8 : 0.3,
426
+ coordinationNeeds: metrics.activeAgents > 5 ? 0.8 : 0.4,
427
+ memoryIntensity: metrics.memoryUsage > 500000000 ? 0.8 : 0.4, // 500MB threshold
428
+ };
429
+ }
430
+ /**
431
+ * Persist current metrics
432
+ */
433
+ async persistMetrics() {
434
+ try {
435
+ await this.memoryCoordinator.store('swarm:metrics:final', {
436
+ metrics: this.getMetrics(),
437
+ history: this.metricsHistory.slice(-20),
438
+ shutdownTime: new Date().toISOString(),
439
+ });
440
+ }
441
+ catch (error) {
442
+ this.logger.error('Failed to persist metrics:', error);
443
+ }
444
+ }
445
+ }
446
+ exports.SwarmCoordinator = SwarmCoordinator;
447
+ /**
448
+ * Default coordinator instance
449
+ */
450
+ let defaultCoordinator = null;
451
+ /**
452
+ * Get or create default coordinator
453
+ */
454
+ async function getSwarmCoordinator(memoryManager, eventBus, config) {
455
+ if (!defaultCoordinator && memoryManager && eventBus) {
456
+ defaultCoordinator = new SwarmCoordinator(memoryManager, eventBus, config);
457
+ await defaultCoordinator.initialize();
458
+ }
459
+ if (!defaultCoordinator) {
460
+ throw new Error('SwarmCoordinator not initialized. Provide memoryManager and eventBus.');
461
+ }
462
+ return defaultCoordinator;
463
+ }
464
+ /**
465
+ * Reset default coordinator (for testing)
466
+ */
467
+ async function resetSwarmCoordinator() {
468
+ if (defaultCoordinator) {
469
+ await defaultCoordinator.shutdown();
470
+ defaultCoordinator = null;
471
+ }
472
+ }
473
+ //# sourceMappingURL=SwarmCoordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwarmCoordinator.js","sourceRoot":"","sources":["../../src/core/SwarmCoordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * ReflexionMemory Adapter for QE Fleet
3
+ * Learns from test failures to predict and prevent flakiness
4
+ */
5
+ export interface TestExecution {
6
+ testId: string;
7
+ testName: string;
8
+ signature: string;
9
+ outcome: 'pass' | 'fail' | 'flaky' | 'timeout';
10
+ duration: number;
11
+ errorMessage?: string;
12
+ errorStack?: string;
13
+ retryCount: number;
14
+ environment: Record<string, string>;
15
+ timestamp: number;
16
+ }
17
+ export interface ReflexionEpisode {
18
+ id: string;
19
+ executions: TestExecution[];
20
+ reflection: string;
21
+ lessonsLearned: string[];
22
+ flakinessIndicators: string[];
23
+ confidence: number;
24
+ createdAt: number;
25
+ }
26
+ export interface FlakinessPrediction {
27
+ testId: string;
28
+ flakinessScore: number;
29
+ confidence: number;
30
+ indicators: string[];
31
+ similarFailures: TestExecution[];
32
+ recommendations: string[];
33
+ }
34
+ export declare class ReflexionMemoryAdapter {
35
+ private episodes;
36
+ private executionHistory;
37
+ private dimension;
38
+ private episodeEmbeddings;
39
+ constructor(dimension?: number);
40
+ /**
41
+ * Record a test execution outcome
42
+ */
43
+ recordExecution(execution: TestExecution): Promise<void>;
44
+ /**
45
+ * Record a failure with context for learning
46
+ */
47
+ recordFailure(testId: string, errorContext: {
48
+ message: string;
49
+ stack?: string;
50
+ environment?: Record<string, string>;
51
+ }): Promise<void>;
52
+ /**
53
+ * Detect if execution history shows flaky pattern
54
+ */
55
+ private detectFlakyPattern;
56
+ /**
57
+ * Create a reflection episode from failure history
58
+ */
59
+ private createReflectionEpisode;
60
+ /**
61
+ * Extract flakiness indicators from failures
62
+ */
63
+ private extractIndicators;
64
+ /**
65
+ * Generate lessons from failure patterns
66
+ */
67
+ private generateLessons;
68
+ /**
69
+ * Generate reflection summary
70
+ */
71
+ private generateReflection;
72
+ /**
73
+ * Predict flakiness for a test
74
+ */
75
+ predictFlakiness(testSignature: string): Promise<FlakinessPrediction>;
76
+ /**
77
+ * Find similar reflection episodes
78
+ */
79
+ private findSimilarEpisodes;
80
+ /**
81
+ * Generate recommendations based on indicators
82
+ */
83
+ private generateRecommendations;
84
+ /**
85
+ * Calculate cosine similarity
86
+ */
87
+ private cosineSimilarity;
88
+ /**
89
+ * Get statistics
90
+ */
91
+ getStats(): {
92
+ totalEpisodes: number;
93
+ totalExecutions: number;
94
+ averageConfidence: number;
95
+ topIndicators: Array<{
96
+ indicator: string;
97
+ count: number;
98
+ }>;
99
+ };
100
+ /**
101
+ * Clear all data
102
+ */
103
+ clear(): void;
104
+ }
105
+ /**
106
+ * Create ReflexionMemory adapter instance
107
+ */
108
+ export declare function createReflexionMemoryAdapter(dimension?: number): ReflexionMemoryAdapter;
109
+ //# sourceMappingURL=ReflexionMemoryAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReflexionMemoryAdapter.d.ts","sourceRoot":"","sources":["../../../src/core/memory/ReflexionMemoryAdapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAkBD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAA4C;IAC5D,OAAO,CAAC,gBAAgB,CAA2C;IACnE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,iBAAiB,CAAoC;gBAEjD,SAAS,GAAE,MAAY;IAInC;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9D;;OAEG;IACG,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACtC,GACA,OAAO,CAAC,IAAI,CAAC;IAiBhB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkB1B;;OAEG;YACW,uBAAuB;IA4BrC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAqCvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACG,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA0C3E;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAuC/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACH,QAAQ,IAAI;QACV,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,aAAa,EAAE,KAAK,CAAC;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC5D;IA2BD;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,sBAAsB,CAEvF"}