agentic-qe 2.1.1 → 2.2.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 (167) hide show
  1. package/CHANGELOG.md +213 -0
  2. package/README.md +37 -11
  3. package/dist/agents/index.d.ts.map +1 -1
  4. package/dist/agents/index.js +5 -1
  5. package/dist/agents/index.js.map +1 -1
  6. package/dist/core/MemoryManager.d.ts.map +1 -1
  7. package/dist/core/MemoryManager.js +4 -0
  8. package/dist/core/MemoryManager.js.map +1 -1
  9. package/dist/core/di/AgentDependencies.d.ts +127 -0
  10. package/dist/core/di/AgentDependencies.d.ts.map +1 -0
  11. package/dist/core/di/AgentDependencies.js +251 -0
  12. package/dist/core/di/AgentDependencies.js.map +1 -0
  13. package/dist/core/di/DIContainer.d.ts +149 -0
  14. package/dist/core/di/DIContainer.d.ts.map +1 -0
  15. package/dist/core/di/DIContainer.js +333 -0
  16. package/dist/core/di/DIContainer.js.map +1 -0
  17. package/dist/core/di/index.d.ts +11 -0
  18. package/dist/core/di/index.d.ts.map +1 -0
  19. package/dist/core/di/index.js +22 -0
  20. package/dist/core/di/index.js.map +1 -0
  21. package/dist/core/index.d.ts +1 -0
  22. package/dist/core/index.d.ts.map +1 -1
  23. package/dist/core/index.js +11 -1
  24. package/dist/core/index.js.map +1 -1
  25. package/dist/core/memory/RuVectorPatternStore.d.ts +5 -1
  26. package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -1
  27. package/dist/core/memory/RuVectorPatternStore.js +43 -1
  28. package/dist/core/memory/RuVectorPatternStore.js.map +1 -1
  29. package/dist/learning/ExperienceSharingProtocol.d.ts +243 -0
  30. package/dist/learning/ExperienceSharingProtocol.d.ts.map +1 -0
  31. package/dist/learning/ExperienceSharingProtocol.js +538 -0
  32. package/dist/learning/ExperienceSharingProtocol.js.map +1 -0
  33. package/dist/learning/LearningEngine.d.ts +101 -1
  34. package/dist/learning/LearningEngine.d.ts.map +1 -1
  35. package/dist/learning/LearningEngine.js +330 -3
  36. package/dist/learning/LearningEngine.js.map +1 -1
  37. package/dist/learning/QLearning.d.ts +38 -125
  38. package/dist/learning/QLearning.d.ts.map +1 -1
  39. package/dist/learning/QLearning.js +46 -267
  40. package/dist/learning/QLearning.js.map +1 -1
  41. package/dist/learning/QLearningLegacy.d.ts +154 -0
  42. package/dist/learning/QLearningLegacy.d.ts.map +1 -0
  43. package/dist/learning/QLearningLegacy.js +337 -0
  44. package/dist/learning/QLearningLegacy.js.map +1 -0
  45. package/dist/learning/algorithms/AbstractRLLearner.d.ts +162 -0
  46. package/dist/learning/algorithms/AbstractRLLearner.d.ts.map +1 -0
  47. package/dist/learning/algorithms/AbstractRLLearner.js +300 -0
  48. package/dist/learning/algorithms/AbstractRLLearner.js.map +1 -0
  49. package/dist/learning/algorithms/ActorCriticLearner.d.ts +201 -0
  50. package/dist/learning/algorithms/ActorCriticLearner.d.ts.map +1 -0
  51. package/dist/learning/algorithms/ActorCriticLearner.js +447 -0
  52. package/dist/learning/algorithms/ActorCriticLearner.js.map +1 -0
  53. package/dist/learning/algorithms/PPOLearner.d.ts +207 -0
  54. package/dist/learning/algorithms/PPOLearner.d.ts.map +1 -0
  55. package/dist/learning/algorithms/PPOLearner.js +490 -0
  56. package/dist/learning/algorithms/PPOLearner.js.map +1 -0
  57. package/dist/learning/algorithms/QLearning.d.ts +68 -0
  58. package/dist/learning/algorithms/QLearning.d.ts.map +1 -0
  59. package/dist/learning/algorithms/QLearning.js +116 -0
  60. package/dist/learning/algorithms/QLearning.js.map +1 -0
  61. package/dist/learning/algorithms/SARSALearner.d.ts +107 -0
  62. package/dist/learning/algorithms/SARSALearner.d.ts.map +1 -0
  63. package/dist/learning/algorithms/SARSALearner.js +252 -0
  64. package/dist/learning/algorithms/SARSALearner.js.map +1 -0
  65. package/dist/learning/algorithms/index.d.ts +29 -0
  66. package/dist/learning/algorithms/index.d.ts.map +1 -0
  67. package/dist/learning/algorithms/index.js +44 -0
  68. package/dist/learning/algorithms/index.js.map +1 -0
  69. package/dist/learning/index.d.ts +3 -0
  70. package/dist/learning/index.d.ts.map +1 -1
  71. package/dist/learning/index.js +15 -1
  72. package/dist/learning/index.js.map +1 -1
  73. package/dist/learning/types.d.ts +2 -0
  74. package/dist/learning/types.d.ts.map +1 -1
  75. package/dist/mcp/handlers/advanced/index.d.ts +3 -2
  76. package/dist/mcp/handlers/advanced/index.d.ts.map +1 -1
  77. package/dist/mcp/handlers/advanced/index.js +4 -5
  78. package/dist/mcp/handlers/advanced/index.js.map +1 -1
  79. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.d.ts +1 -0
  80. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.d.ts.map +1 -1
  81. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.js +3 -0
  82. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.js.map +1 -1
  83. package/dist/mcp/handlers/analysis/coverageGapsDetect.d.ts +1 -0
  84. package/dist/mcp/handlers/analysis/coverageGapsDetect.d.ts.map +1 -1
  85. package/dist/mcp/handlers/analysis/coverageGapsDetect.js +3 -0
  86. package/dist/mcp/handlers/analysis/coverageGapsDetect.js.map +1 -1
  87. package/dist/mcp/handlers/analysis/index.d.ts +0 -2
  88. package/dist/mcp/handlers/analysis/index.d.ts.map +1 -1
  89. package/dist/mcp/handlers/analysis/index.js +2 -3
  90. package/dist/mcp/handlers/analysis/index.js.map +1 -1
  91. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.d.ts +1 -0
  92. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.d.ts.map +1 -1
  93. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.js +3 -0
  94. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.js.map +1 -1
  95. package/dist/mcp/handlers/prediction/flaky-test-detect.d.ts.map +1 -1
  96. package/dist/mcp/handlers/prediction/flaky-test-detect.js +2 -0
  97. package/dist/mcp/handlers/prediction/flaky-test-detect.js.map +1 -1
  98. package/dist/mcp/handlers/prediction/index.d.ts +0 -2
  99. package/dist/mcp/handlers/prediction/index.d.ts.map +1 -1
  100. package/dist/mcp/handlers/prediction/index.js +2 -3
  101. package/dist/mcp/handlers/prediction/index.js.map +1 -1
  102. package/dist/mcp/handlers/security/index.d.ts +0 -30
  103. package/dist/mcp/handlers/security/index.d.ts.map +1 -1
  104. package/dist/mcp/handlers/security/index.js +5 -31
  105. package/dist/mcp/handlers/security/index.js.map +1 -1
  106. package/dist/mcp/lazy-loader.d.ts +156 -0
  107. package/dist/mcp/lazy-loader.d.ts.map +1 -0
  108. package/dist/mcp/lazy-loader.js +327 -0
  109. package/dist/mcp/lazy-loader.js.map +1 -0
  110. package/dist/mcp/server-instructions.d.ts +18 -0
  111. package/dist/mcp/server-instructions.d.ts.map +1 -0
  112. package/dist/mcp/server-instructions.js +133 -0
  113. package/dist/mcp/server-instructions.js.map +1 -0
  114. package/dist/mcp/server.d.ts.map +1 -1
  115. package/dist/mcp/server.js +236 -49
  116. package/dist/mcp/server.js.map +1 -1
  117. package/dist/mcp/tool-categories.d.ts +105 -0
  118. package/dist/mcp/tool-categories.d.ts.map +1 -0
  119. package/dist/mcp/tool-categories.js +463 -0
  120. package/dist/mcp/tool-categories.js.map +1 -0
  121. package/dist/mcp/tools.d.ts +3 -19
  122. package/dist/mcp/tools.d.ts.map +1 -1
  123. package/dist/mcp/tools.js +260 -647
  124. package/dist/mcp/tools.js.map +1 -1
  125. package/dist/memory/DistributedPatternLibrary.d.ts +159 -0
  126. package/dist/memory/DistributedPatternLibrary.d.ts.map +1 -0
  127. package/dist/memory/DistributedPatternLibrary.js +370 -0
  128. package/dist/memory/DistributedPatternLibrary.js.map +1 -0
  129. package/dist/memory/PatternQualityScorer.d.ts +169 -0
  130. package/dist/memory/PatternQualityScorer.d.ts.map +1 -0
  131. package/dist/memory/PatternQualityScorer.js +327 -0
  132. package/dist/memory/PatternQualityScorer.js.map +1 -0
  133. package/dist/memory/PatternReplicationService.d.ts +187 -0
  134. package/dist/memory/PatternReplicationService.d.ts.map +1 -0
  135. package/dist/memory/PatternReplicationService.js +392 -0
  136. package/dist/memory/PatternReplicationService.js.map +1 -0
  137. package/dist/providers/ClaudeProvider.d.ts +98 -0
  138. package/dist/providers/ClaudeProvider.d.ts.map +1 -0
  139. package/dist/providers/ClaudeProvider.js +418 -0
  140. package/dist/providers/ClaudeProvider.js.map +1 -0
  141. package/dist/providers/ILLMProvider.d.ts +287 -0
  142. package/dist/providers/ILLMProvider.d.ts.map +1 -0
  143. package/dist/providers/ILLMProvider.js +33 -0
  144. package/dist/providers/ILLMProvider.js.map +1 -0
  145. package/dist/providers/LLMProviderFactory.d.ts +154 -0
  146. package/dist/providers/LLMProviderFactory.d.ts.map +1 -0
  147. package/dist/providers/LLMProviderFactory.js +426 -0
  148. package/dist/providers/LLMProviderFactory.js.map +1 -0
  149. package/dist/providers/RuvllmProvider.d.ts +107 -0
  150. package/dist/providers/RuvllmProvider.d.ts.map +1 -0
  151. package/dist/providers/RuvllmProvider.js +417 -0
  152. package/dist/providers/RuvllmProvider.js.map +1 -0
  153. package/dist/providers/index.d.ts +31 -0
  154. package/dist/providers/index.d.ts.map +1 -0
  155. package/dist/providers/index.js +69 -0
  156. package/dist/providers/index.js.map +1 -0
  157. package/dist/utils/IntervalRegistry.d.ts +110 -0
  158. package/dist/utils/IntervalRegistry.d.ts.map +1 -0
  159. package/dist/utils/IntervalRegistry.js +190 -0
  160. package/dist/utils/IntervalRegistry.js.map +1 -0
  161. package/dist/utils/index.d.ts +1 -0
  162. package/dist/utils/index.d.ts.map +1 -1
  163. package/dist/utils/index.js +5 -1
  164. package/dist/utils/index.js.map +1 -1
  165. package/docs/reference/agents.md +33 -0
  166. package/docs/reference/usage.md +60 -0
  167. package/package.json +2 -2
@@ -0,0 +1,327 @@
1
+ "use strict";
2
+ /**
3
+ * PatternQualityScorer - Pattern Quality Scoring and Garbage Collection
4
+ *
5
+ * Features:
6
+ * - Score patterns based on usage success rate
7
+ * - Track comprehensive usage statistics
8
+ * - Garbage collection for low-quality patterns
9
+ * - Pattern ranking and recommendations
10
+ * - Adaptive quality thresholds
11
+ *
12
+ * @module memory/PatternQualityScorer
13
+ * @version 1.0.0
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.PatternQualityScorer = void 0;
17
+ /**
18
+ * PatternQualityScorer - Tracks and scores pattern quality for optimization
19
+ *
20
+ * This class provides:
21
+ * - Real-time quality scoring based on success rate and usage
22
+ * - Comprehensive usage statistics tracking
23
+ * - Automatic garbage collection of low-quality patterns
24
+ * - Pattern ranking for recommendations
25
+ * - Trend analysis for quality improvement/degradation
26
+ */
27
+ class PatternQualityScorer {
28
+ constructor(library, config = {}) {
29
+ this.DEFAULT_MIN_SUCCESS_RATE = 0.7;
30
+ this.DEFAULT_MIN_USAGE_COUNT = 5;
31
+ this.DEFAULT_MAX_AGE_DAYS = 90;
32
+ this.DEFAULT_MIN_QUALITY_SCORE = 0.5;
33
+ this.DEFAULT_GC_INTERVAL = 3600000; // 1 hour
34
+ this.library = library;
35
+ this.config = {
36
+ minSuccessRate: config.minSuccessRate || this.DEFAULT_MIN_SUCCESS_RATE,
37
+ minUsageCount: config.minUsageCount || this.DEFAULT_MIN_USAGE_COUNT,
38
+ maxAgeInDays: config.maxAgeInDays || this.DEFAULT_MAX_AGE_DAYS,
39
+ minQualityScore: config.minQualityScore || this.DEFAULT_MIN_QUALITY_SCORE,
40
+ successRateWeight: config.successRateWeight || 0.5,
41
+ usageWeight: config.usageWeight || 0.3,
42
+ recencyWeight: config.recencyWeight || 0.2,
43
+ enableAutoGC: config.enableAutoGC !== false,
44
+ gcInterval: config.gcInterval || this.DEFAULT_GC_INTERVAL
45
+ };
46
+ this.usageHistory = new Map();
47
+ this.metricsCache = new Map();
48
+ }
49
+ /**
50
+ * Start automatic garbage collection
51
+ */
52
+ startAutoGC() {
53
+ if (!this.config.enableAutoGC) {
54
+ return;
55
+ }
56
+ this.gcTimer = setInterval(async () => {
57
+ await this.garbageCollect();
58
+ }, this.config.gcInterval);
59
+ }
60
+ /**
61
+ * Stop automatic garbage collection
62
+ */
63
+ stopAutoGC() {
64
+ if (this.gcTimer) {
65
+ clearInterval(this.gcTimer);
66
+ this.gcTimer = undefined;
67
+ }
68
+ }
69
+ /**
70
+ * Record pattern usage
71
+ */
72
+ async recordUsage(usage) {
73
+ const history = this.usageHistory.get(usage.patternId) || [];
74
+ history.push(usage);
75
+ this.usageHistory.set(usage.patternId, history);
76
+ // Invalidate metrics cache
77
+ this.metricsCache.delete(usage.patternId);
78
+ // Update pattern lastUsed and usageCount
79
+ const pattern = await this.library.getPattern(usage.patternId);
80
+ if (pattern) {
81
+ pattern.lastUsed = usage.timestamp;
82
+ pattern.usageCount = (pattern.usageCount || 0) + 1;
83
+ await this.library.updatePattern(pattern);
84
+ }
85
+ }
86
+ /**
87
+ * Calculate quality metrics for a pattern
88
+ */
89
+ async calculateMetrics(patternId) {
90
+ // Check cache first
91
+ const cached = this.metricsCache.get(patternId);
92
+ if (cached) {
93
+ return cached;
94
+ }
95
+ const pattern = await this.library.getPattern(patternId);
96
+ if (!pattern) {
97
+ return null;
98
+ }
99
+ const history = this.usageHistory.get(patternId) || [];
100
+ const now = Date.now();
101
+ // Calculate basic stats
102
+ const totalUsage = history.length;
103
+ const successCount = history.filter(u => u.success).length;
104
+ const failureCount = totalUsage - successCount;
105
+ const successRate = totalUsage > 0 ? successCount / totalUsage : 0;
106
+ // Calculate average execution time
107
+ const executionTimes = history
108
+ .filter(u => u.executionTime !== undefined)
109
+ .map(u => u.executionTime);
110
+ const averageExecutionTime = executionTimes.length > 0
111
+ ? executionTimes.reduce((a, b) => a + b, 0) / executionTimes.length
112
+ : 0;
113
+ // Calculate age
114
+ const createdTimestamp = pattern.createdAt || now;
115
+ const ageInDays = (now - createdTimestamp) / (1000 * 60 * 60 * 24);
116
+ // Calculate trend score (recent vs old performance)
117
+ const trendScore = this.calculateTrend(history);
118
+ // Calculate quality score
119
+ const qualityScore = this.calculateQualityScore({
120
+ successRate,
121
+ totalUsage,
122
+ ageInDays,
123
+ averageExecutionTime
124
+ });
125
+ const metrics = {
126
+ patternId,
127
+ qualityScore,
128
+ successRate,
129
+ totalUsage,
130
+ successCount,
131
+ failureCount,
132
+ averageExecutionTime,
133
+ lastUsedTimestamp: pattern.lastUsed || createdTimestamp,
134
+ createdTimestamp,
135
+ ageInDays,
136
+ trendScore
137
+ };
138
+ // Cache metrics
139
+ this.metricsCache.set(patternId, metrics);
140
+ return metrics;
141
+ }
142
+ /**
143
+ * Calculate overall quality score (0-1)
144
+ */
145
+ calculateQualityScore(params) {
146
+ const { successRate, totalUsage, ageInDays, averageExecutionTime } = params;
147
+ // Success rate component (0-1)
148
+ const successComponent = successRate * this.config.successRateWeight;
149
+ // Usage frequency component (0-1, normalized)
150
+ // More usage = higher score, with diminishing returns
151
+ const usageComponent = Math.min(totalUsage / 100, 1) * this.config.usageWeight;
152
+ // Recency component (0-1, inverse of age)
153
+ // Newer patterns score higher
154
+ const recencyComponent = Math.max(0, 1 - ageInDays / this.config.maxAgeInDays) * this.config.recencyWeight;
155
+ // Combine components
156
+ const rawScore = successComponent + usageComponent + recencyComponent;
157
+ // Normalize to 0-1
158
+ const totalWeight = this.config.successRateWeight + this.config.usageWeight + this.config.recencyWeight;
159
+ return Math.min(rawScore / totalWeight, 1);
160
+ }
161
+ /**
162
+ * Calculate trend score (recent performance vs historical)
163
+ */
164
+ calculateTrend(history) {
165
+ if (history.length < 10) {
166
+ return 0; // Not enough data
167
+ }
168
+ const sortedHistory = [...history].sort((a, b) => a.timestamp - b.timestamp);
169
+ const midpoint = Math.floor(sortedHistory.length / 2);
170
+ const oldHalf = sortedHistory.slice(0, midpoint);
171
+ const newHalf = sortedHistory.slice(midpoint);
172
+ const oldSuccessRate = oldHalf.filter(u => u.success).length / oldHalf.length;
173
+ const newSuccessRate = newHalf.filter(u => u.success).length / newHalf.length;
174
+ // Positive = improving, negative = degrading
175
+ return newSuccessRate - oldSuccessRate;
176
+ }
177
+ /**
178
+ * Get ranked patterns by quality
179
+ */
180
+ async getRankedPatterns(options) {
181
+ const patterns = await this.library.getPatterns();
182
+ const rankedPatterns = [];
183
+ for (const pattern of patterns) {
184
+ const metrics = await this.calculateMetrics(pattern.id);
185
+ if (!metrics)
186
+ continue;
187
+ // Apply quality filter
188
+ if (options?.minQualityScore && metrics.qualityScore < options.minQualityScore) {
189
+ continue;
190
+ }
191
+ rankedPatterns.push({
192
+ pattern,
193
+ metrics,
194
+ rank: 0 // Will be set after sorting
195
+ });
196
+ }
197
+ // Sort patterns
198
+ const sortBy = options?.sortBy || 'quality';
199
+ rankedPatterns.sort((a, b) => {
200
+ switch (sortBy) {
201
+ case 'usage':
202
+ return b.metrics.totalUsage - a.metrics.totalUsage;
203
+ case 'recency':
204
+ return b.metrics.lastUsedTimestamp - a.metrics.lastUsedTimestamp;
205
+ case 'quality':
206
+ default:
207
+ return b.metrics.qualityScore - a.metrics.qualityScore;
208
+ }
209
+ });
210
+ // Assign ranks
211
+ rankedPatterns.forEach((rp, index) => {
212
+ rp.rank = index + 1;
213
+ });
214
+ // Apply limit
215
+ if (options?.limit) {
216
+ return rankedPatterns.slice(0, options.limit);
217
+ }
218
+ return rankedPatterns;
219
+ }
220
+ /**
221
+ * Get patterns eligible for garbage collection
222
+ */
223
+ async getGarbageCandidates() {
224
+ const patterns = await this.library.getPatterns();
225
+ const candidates = [];
226
+ for (const pattern of patterns) {
227
+ const metrics = await this.calculateMetrics(pattern.id);
228
+ if (!metrics)
229
+ continue;
230
+ // Check if pattern should be garbage collected
231
+ const shouldGC = (metrics.qualityScore < this.config.minQualityScore &&
232
+ metrics.totalUsage >= this.config.minUsageCount) ||
233
+ (metrics.successRate < this.config.minSuccessRate &&
234
+ metrics.totalUsage >= this.config.minUsageCount) ||
235
+ (metrics.ageInDays > this.config.maxAgeInDays &&
236
+ metrics.totalUsage === 0);
237
+ if (shouldGC) {
238
+ candidates.push(metrics);
239
+ }
240
+ }
241
+ return candidates;
242
+ }
243
+ /**
244
+ * Perform garbage collection
245
+ */
246
+ async garbageCollect() {
247
+ const startTime = Date.now();
248
+ const stats = await this.library.getStats();
249
+ const totalPatterns = stats.totalPatterns;
250
+ const candidates = await this.getGarbageCandidates();
251
+ const removedPatternIds = [];
252
+ let bytesReclaimed = 0;
253
+ for (const metrics of candidates) {
254
+ const pattern = await this.library.getPattern(metrics.patternId);
255
+ if (!pattern)
256
+ continue;
257
+ // Estimate bytes
258
+ const patternSize = JSON.stringify(pattern).length;
259
+ // Delete pattern
260
+ const deleted = await this.library.deletePattern(metrics.patternId);
261
+ if (deleted) {
262
+ removedPatternIds.push(metrics.patternId);
263
+ bytesReclaimed += patternSize;
264
+ // Remove from caches
265
+ this.usageHistory.delete(metrics.patternId);
266
+ this.metricsCache.delete(metrics.patternId);
267
+ }
268
+ }
269
+ const duration = Date.now() - startTime;
270
+ return {
271
+ totalPatterns,
272
+ patternsRemoved: removedPatternIds.length,
273
+ removedPatternIds,
274
+ bytesReclaimed,
275
+ duration,
276
+ timestamp: Date.now()
277
+ };
278
+ }
279
+ /**
280
+ * Get scorer statistics
281
+ */
282
+ async getStats() {
283
+ const libraryStats = await this.library.getStats();
284
+ const patterns = await this.library.getPatterns();
285
+ let totalQualityScore = 0;
286
+ let lowQualityCount = 0;
287
+ for (const pattern of patterns) {
288
+ const metrics = await this.calculateMetrics(pattern.id);
289
+ if (metrics) {
290
+ totalQualityScore += metrics.qualityScore;
291
+ if (metrics.qualityScore < this.config.minQualityScore) {
292
+ lowQualityCount++;
293
+ }
294
+ }
295
+ }
296
+ const candidates = await this.getGarbageCandidates();
297
+ return {
298
+ totalPatterns: libraryStats.totalPatterns,
299
+ trackedPatterns: patterns.length,
300
+ averageQualityScore: patterns.length > 0 ? totalQualityScore / patterns.length : 0,
301
+ lowQualityPatterns: lowQualityCount,
302
+ garbageCandidates: candidates.length
303
+ };
304
+ }
305
+ /**
306
+ * Clear all usage history
307
+ */
308
+ clearHistory() {
309
+ this.usageHistory.clear();
310
+ this.metricsCache.clear();
311
+ }
312
+ /**
313
+ * Export usage history for analysis
314
+ */
315
+ exportHistory() {
316
+ return new Map(this.usageHistory);
317
+ }
318
+ /**
319
+ * Import usage history from external source
320
+ */
321
+ importHistory(history) {
322
+ this.usageHistory = new Map(history);
323
+ this.metricsCache.clear(); // Invalidate cache
324
+ }
325
+ }
326
+ exports.PatternQualityScorer = PatternQualityScorer;
327
+ //# sourceMappingURL=PatternQualityScorer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PatternQualityScorer.js","sourceRoot":"","sources":["../../src/memory/PatternQualityScorer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ /**
2
+ * PatternReplicationService - Pattern Replication with Health Monitoring
3
+ *
4
+ * Features:
5
+ * - Multi-agent pattern replication with configurable replication factor
6
+ * - Health monitoring for replication nodes
7
+ * - Conflict resolution for concurrent updates
8
+ * - Automatic failover and recovery
9
+ * - Replication consistency tracking
10
+ *
11
+ * @module memory/PatternReplicationService
12
+ * @version 1.0.0
13
+ */
14
+ import { DistributedPatternLibrary } from './DistributedPatternLibrary';
15
+ import { TestPattern } from '../core/memory/IPatternStore';
16
+ import { EventEmitter } from 'events';
17
+ /**
18
+ * Replication node status
19
+ */
20
+ export declare enum ReplicationNodeStatus {
21
+ HEALTHY = "healthy",
22
+ DEGRADED = "degraded",
23
+ FAILED = "failed",
24
+ RECOVERING = "recovering"
25
+ }
26
+ /**
27
+ * Replication node information
28
+ */
29
+ export interface ReplicationNode {
30
+ agentId: string;
31
+ library: DistributedPatternLibrary;
32
+ status: ReplicationNodeStatus;
33
+ lastHeartbeat: number;
34
+ consecutiveFailures: number;
35
+ totalPatterns: number;
36
+ lastSyncTimestamp: number;
37
+ }
38
+ /**
39
+ * Replication health metrics
40
+ */
41
+ export interface ReplicationHealth {
42
+ totalNodes: number;
43
+ healthyNodes: number;
44
+ degradedNodes: number;
45
+ failedNodes: number;
46
+ recoveringNodes: number;
47
+ averageReplicationLag: number;
48
+ consistencyPercentage: number;
49
+ lastHealthCheck: number;
50
+ }
51
+ /**
52
+ * Replication configuration
53
+ */
54
+ export interface ReplicationConfig {
55
+ /** Replication factor (number of copies) */
56
+ replicationFactor: number;
57
+ /** Heartbeat interval in milliseconds */
58
+ heartbeatInterval?: number;
59
+ /** Node failure threshold (consecutive failures) */
60
+ failureThreshold?: number;
61
+ /** Sync interval in milliseconds */
62
+ syncInterval?: number;
63
+ /** Enable automatic recovery */
64
+ autoRecover?: boolean;
65
+ /** Minimum healthy nodes required */
66
+ minHealthyNodes?: number;
67
+ }
68
+ /**
69
+ * Replication event types
70
+ */
71
+ export type ReplicationEvent = {
72
+ type: 'pattern_replicated';
73
+ patternId: string;
74
+ nodeCount: number;
75
+ } | {
76
+ type: 'node_failed';
77
+ agentId: string;
78
+ reason: string;
79
+ } | {
80
+ type: 'node_recovered';
81
+ agentId: string;
82
+ } | {
83
+ type: 'sync_completed';
84
+ duration: number;
85
+ patternsReplicated: number;
86
+ } | {
87
+ type: 'inconsistency_detected';
88
+ patternId: string;
89
+ nodeIds: string[];
90
+ };
91
+ /**
92
+ * PatternReplicationService - Manages pattern replication across multiple agents
93
+ *
94
+ * This service provides:
95
+ * - Automatic pattern replication to N nodes (configurable replication factor)
96
+ * - Health monitoring with heartbeat mechanism
97
+ * - Automatic failover and recovery
98
+ * - Consistency checking and repair
99
+ * - Event-driven notifications for replication events
100
+ */
101
+ export declare class PatternReplicationService extends EventEmitter {
102
+ private nodes;
103
+ private config;
104
+ private heartbeatTimer?;
105
+ private syncTimer?;
106
+ private isRunning;
107
+ private readonly DEFAULT_HEARTBEAT_INTERVAL;
108
+ private readonly DEFAULT_SYNC_INTERVAL;
109
+ private readonly DEFAULT_FAILURE_THRESHOLD;
110
+ constructor(config: ReplicationConfig);
111
+ /**
112
+ * Start the replication service
113
+ */
114
+ start(): Promise<void>;
115
+ /**
116
+ * Stop the replication service
117
+ */
118
+ stop(): Promise<void>;
119
+ /**
120
+ * Register a replication node
121
+ */
122
+ registerNode(agentId: string, library: DistributedPatternLibrary): Promise<void>;
123
+ /**
124
+ * Unregister a replication node
125
+ */
126
+ unregisterNode(agentId: string): Promise<boolean>;
127
+ /**
128
+ * Replicate a pattern to all healthy nodes
129
+ */
130
+ replicatePattern(pattern: TestPattern, sourceAgentId?: string): Promise<number>;
131
+ /**
132
+ * Sync patterns across all nodes
133
+ */
134
+ syncPatterns(): Promise<{
135
+ synced: number;
136
+ duration: number;
137
+ }>;
138
+ /**
139
+ * Check replication health
140
+ */
141
+ checkHealth(): Promise<ReplicationHealth>;
142
+ /**
143
+ * Get replication statistics
144
+ */
145
+ getStats(): Promise<{
146
+ replicationFactor: number;
147
+ registeredNodes: number;
148
+ health: ReplicationHealth;
149
+ }>;
150
+ /**
151
+ * Get all registered nodes
152
+ */
153
+ getNodes(): ReplicationNode[];
154
+ /**
155
+ * Get healthy nodes only
156
+ */
157
+ private getHealthyNodes;
158
+ /**
159
+ * Start heartbeat monitoring
160
+ */
161
+ private startHeartbeat;
162
+ /**
163
+ * Start periodic sync
164
+ */
165
+ private startSync;
166
+ /**
167
+ * Perform heartbeat check on all nodes
168
+ */
169
+ private performHeartbeat;
170
+ /**
171
+ * Handle node failure
172
+ */
173
+ private handleNodeFailure;
174
+ /**
175
+ * Attempt to recover a failed node
176
+ */
177
+ private attemptRecovery;
178
+ /**
179
+ * Sync a single node with the cluster
180
+ */
181
+ private syncNode;
182
+ /**
183
+ * Calculate consistency percentage across all nodes
184
+ */
185
+ private calculateConsistency;
186
+ }
187
+ //# sourceMappingURL=PatternReplicationService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PatternReplicationService.d.ts","sourceRoot":"","sources":["../../src/memory/PatternReplicationService.ts"],"names":[],"mappings":"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"}