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,370 @@
1
+ "use strict";
2
+ /**
3
+ * DistributedPatternLibrary - Distributed Pattern Storage with Eventual Consistency
4
+ *
5
+ * Features:
6
+ * - Vector clock-based versioning for distributed consistency
7
+ * - Eventual consistency model with conflict resolution
8
+ * - Pattern CRUD operations with distributed coordination
9
+ * - Compression for large patterns (>10KB)
10
+ * - High-performance pattern lookup (<100ms p99)
11
+ *
12
+ * @module memory/DistributedPatternLibrary
13
+ * @version 1.0.0
14
+ */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || (function () {
32
+ var ownKeys = function(o) {
33
+ ownKeys = Object.getOwnPropertyNames || function (o) {
34
+ var ar = [];
35
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
+ return ar;
37
+ };
38
+ return ownKeys(o);
39
+ };
40
+ return function (mod) {
41
+ if (mod && mod.__esModule) return mod;
42
+ var result = {};
43
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
+ __setModuleDefault(result, mod);
45
+ return result;
46
+ };
47
+ })();
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.DistributedPatternLibrary = exports.ConflictResolution = void 0;
50
+ const CompressionManager_1 = require("../core/memory/CompressionManager");
51
+ const crypto = __importStar(require("crypto"));
52
+ /**
53
+ * Conflict resolution strategy
54
+ */
55
+ var ConflictResolution;
56
+ (function (ConflictResolution) {
57
+ ConflictResolution["LAST_WRITE_WINS"] = "last_write_wins";
58
+ ConflictResolution["HIGHEST_CONFIDENCE"] = "highest_confidence";
59
+ ConflictResolution["MOST_USAGE"] = "most_usage";
60
+ ConflictResolution["VECTOR_CLOCK"] = "vector_clock";
61
+ })(ConflictResolution || (exports.ConflictResolution = ConflictResolution = {}));
62
+ /**
63
+ * DistributedPatternLibrary - Manages distributed pattern storage with eventual consistency
64
+ *
65
+ * This class provides:
66
+ * - Vector clock-based versioning for tracking distributed updates
67
+ * - Automatic conflict resolution using configurable strategies
68
+ * - Pattern compression for efficient storage and network transfer
69
+ * - Checksum validation for data integrity
70
+ * - High-performance pattern lookup with caching
71
+ */
72
+ class DistributedPatternLibrary {
73
+ constructor(config) {
74
+ this.CACHE_TTL = 5000; // 5 seconds cache TTL
75
+ this.config = config;
76
+ this.patterns = new Map();
77
+ this.vectorClock = { [config.agentId]: 0 };
78
+ this.compression = new CompressionManager_1.CompressionManager();
79
+ this.conflictsResolved = 0;
80
+ this.lastSyncTimestamp = Date.now();
81
+ this.lookupCache = new Map();
82
+ this.COMPRESSION_THRESHOLD = config.compressionThreshold || 10240; // 10KB default
83
+ }
84
+ /**
85
+ * Initialize the pattern library
86
+ */
87
+ async initialize() {
88
+ // Clear cache and reset state
89
+ this.lookupCache.clear();
90
+ this.lastSyncTimestamp = Date.now();
91
+ }
92
+ /**
93
+ * Store a pattern with vector clock versioning
94
+ */
95
+ async storePattern(pattern, sourceAgentId) {
96
+ const agentId = sourceAgentId || this.config.agentId;
97
+ // Increment vector clock for this agent
98
+ this.vectorClock[agentId] = (this.vectorClock[agentId] || 0) + 1;
99
+ // Create checksum for integrity validation
100
+ const patternJson = JSON.stringify(pattern);
101
+ const checksum = crypto.createHash('sha256').update(patternJson).digest('hex');
102
+ // Compress if needed
103
+ let compressedContent;
104
+ let isCompressed = false;
105
+ if (this.config.autoCompress && this.compression.shouldCompress(patternJson, this.COMPRESSION_THRESHOLD)) {
106
+ compressedContent = await this.compression.compress(patternJson);
107
+ isCompressed = true;
108
+ }
109
+ const versionedPattern = {
110
+ pattern,
111
+ vectorClock: { ...this.vectorClock },
112
+ checksum,
113
+ compressedContent,
114
+ isCompressed,
115
+ createdBy: agentId,
116
+ updatedAt: Date.now()
117
+ };
118
+ // Check for conflicts if pattern already exists
119
+ const existing = this.patterns.get(pattern.id);
120
+ if (existing) {
121
+ const resolved = await this.resolveConflict(existing, versionedPattern);
122
+ this.patterns.set(pattern.id, resolved);
123
+ this.conflictsResolved++;
124
+ }
125
+ else {
126
+ this.patterns.set(pattern.id, versionedPattern);
127
+ }
128
+ // Invalidate cache for this pattern
129
+ this.lookupCache.delete(pattern.id);
130
+ }
131
+ /**
132
+ * Retrieve a pattern by ID with caching
133
+ */
134
+ async getPattern(id) {
135
+ const startTime = Date.now();
136
+ // Check cache first
137
+ const cached = this.lookupCache.get(id);
138
+ if (cached && (Date.now() - cached.timestamp) < this.CACHE_TTL) {
139
+ return this.decompressPattern(cached.pattern);
140
+ }
141
+ // Fetch from storage
142
+ const versionedPattern = this.patterns.get(id);
143
+ if (!versionedPattern) {
144
+ return null;
145
+ }
146
+ // Validate checksum
147
+ const isValid = await this.validateChecksum(versionedPattern);
148
+ if (!isValid) {
149
+ throw new Error(`Checksum validation failed for pattern: ${id}`);
150
+ }
151
+ // Update cache
152
+ this.lookupCache.set(id, {
153
+ pattern: versionedPattern,
154
+ timestamp: Date.now()
155
+ });
156
+ // Cleanup old cache entries
157
+ this.cleanupCache();
158
+ const lookupTime = Date.now() - startTime;
159
+ if (lookupTime > 100) {
160
+ console.warn(`Pattern lookup exceeded 100ms threshold: ${lookupTime}ms for pattern ${id}`);
161
+ }
162
+ return this.decompressPattern(versionedPattern);
163
+ }
164
+ /**
165
+ * Update an existing pattern
166
+ */
167
+ async updatePattern(pattern) {
168
+ const existing = this.patterns.get(pattern.id);
169
+ if (!existing) {
170
+ throw new Error(`Pattern not found: ${pattern.id}`);
171
+ }
172
+ await this.storePattern(pattern);
173
+ }
174
+ /**
175
+ * Delete a pattern
176
+ */
177
+ async deletePattern(id) {
178
+ const deleted = this.patterns.delete(id);
179
+ if (deleted) {
180
+ this.lookupCache.delete(id);
181
+ }
182
+ return deleted;
183
+ }
184
+ /**
185
+ * Get all patterns matching a filter
186
+ */
187
+ async getPatterns(filter) {
188
+ const patterns = [];
189
+ for (const versionedPattern of Array.from(this.patterns.values())) {
190
+ const pattern = await this.decompressPattern(versionedPattern);
191
+ // Apply filters
192
+ if (filter) {
193
+ if (filter.type && pattern.type !== filter.type)
194
+ continue;
195
+ if (filter.domain && pattern.domain !== filter.domain)
196
+ continue;
197
+ if (filter.framework && pattern.framework !== filter.framework)
198
+ continue;
199
+ if (filter.minConfidence && (pattern.coverage || 0) < filter.minConfidence)
200
+ continue;
201
+ }
202
+ patterns.push(pattern);
203
+ }
204
+ return patterns;
205
+ }
206
+ /**
207
+ * Merge patterns from another agent with conflict resolution
208
+ */
209
+ async mergePatterns(remotePatterns) {
210
+ let mergedCount = 0;
211
+ for (const remotePattern of remotePatterns) {
212
+ const localPattern = this.patterns.get(remotePattern.pattern.id);
213
+ if (!localPattern) {
214
+ // New pattern, just add it
215
+ this.patterns.set(remotePattern.pattern.id, remotePattern);
216
+ mergedCount++;
217
+ }
218
+ else {
219
+ // Resolve conflict
220
+ const resolved = await this.resolveConflict(localPattern, remotePattern);
221
+ if (resolved !== localPattern) {
222
+ this.patterns.set(remotePattern.pattern.id, resolved);
223
+ this.conflictsResolved++;
224
+ mergedCount++;
225
+ }
226
+ }
227
+ // Merge vector clocks
228
+ this.mergeVectorClocks(remotePattern.vectorClock);
229
+ }
230
+ this.lastSyncTimestamp = Date.now();
231
+ return mergedCount;
232
+ }
233
+ /**
234
+ * Get library statistics
235
+ */
236
+ async getStats() {
237
+ let compressedCount = 0;
238
+ const compressionRatios = [];
239
+ for (const versionedPattern of Array.from(this.patterns.values())) {
240
+ if (versionedPattern.isCompressed && versionedPattern.compressedContent) {
241
+ compressedCount++;
242
+ const originalSize = JSON.stringify(versionedPattern.pattern).length;
243
+ const compressedSize = versionedPattern.compressedContent.length;
244
+ compressionRatios.push(compressedSize / originalSize);
245
+ }
246
+ }
247
+ const averageCompressionRatio = compressionRatios.length > 0
248
+ ? compressionRatios.reduce((a, b) => a + b, 0) / compressionRatios.length
249
+ : 0;
250
+ return {
251
+ totalPatterns: this.patterns.size,
252
+ compressedPatterns: compressedCount,
253
+ averageCompressionRatio,
254
+ vectorClockSize: Object.keys(this.vectorClock).length,
255
+ conflictsResolved: this.conflictsResolved,
256
+ lastSyncTimestamp: this.lastSyncTimestamp
257
+ };
258
+ }
259
+ /**
260
+ * Export all patterns for replication
261
+ */
262
+ async exportPatterns() {
263
+ return Array.from(this.patterns.values());
264
+ }
265
+ /**
266
+ * Clear all patterns
267
+ */
268
+ async clear() {
269
+ this.patterns.clear();
270
+ this.lookupCache.clear();
271
+ this.vectorClock = { [this.config.agentId]: 0 };
272
+ this.conflictsResolved = 0;
273
+ }
274
+ /**
275
+ * Resolve conflict between two versioned patterns
276
+ */
277
+ async resolveConflict(local, remote) {
278
+ const strategy = this.config.conflictResolution || ConflictResolution.VECTOR_CLOCK;
279
+ switch (strategy) {
280
+ case ConflictResolution.LAST_WRITE_WINS:
281
+ return local.updatedAt > remote.updatedAt ? local : remote;
282
+ case ConflictResolution.HIGHEST_CONFIDENCE:
283
+ const localConfidence = local.pattern.coverage || 0;
284
+ const remoteConfidence = remote.pattern.coverage || 0;
285
+ return localConfidence > remoteConfidence ? local : remote;
286
+ case ConflictResolution.MOST_USAGE:
287
+ const localUsage = local.pattern.usageCount || 0;
288
+ const remoteUsage = remote.pattern.usageCount || 0;
289
+ return localUsage > remoteUsage ? local : remote;
290
+ case ConflictResolution.VECTOR_CLOCK:
291
+ default:
292
+ // Use vector clock comparison
293
+ const comparison = this.compareVectorClocks(local.vectorClock, remote.vectorClock);
294
+ if (comparison === 1)
295
+ return local;
296
+ if (comparison === -1)
297
+ return remote;
298
+ // Concurrent updates - use highest confidence as tiebreaker
299
+ return (local.pattern.coverage || 0) > (remote.pattern.coverage || 0) ? local : remote;
300
+ }
301
+ }
302
+ /**
303
+ * Compare two vector clocks
304
+ * Returns: 1 if v1 > v2, -1 if v1 < v2, 0 if concurrent
305
+ */
306
+ compareVectorClocks(v1, v2) {
307
+ const allAgents = new Set([...Object.keys(v1), ...Object.keys(v2)]);
308
+ let v1Greater = false;
309
+ let v2Greater = false;
310
+ for (const agent of Array.from(allAgents)) {
311
+ const t1 = v1[agent] || 0;
312
+ const t2 = v2[agent] || 0;
313
+ if (t1 > t2)
314
+ v1Greater = true;
315
+ if (t2 > t1)
316
+ v2Greater = true;
317
+ }
318
+ if (v1Greater && !v2Greater)
319
+ return 1;
320
+ if (v2Greater && !v1Greater)
321
+ return -1;
322
+ return 0; // Concurrent
323
+ }
324
+ /**
325
+ * Merge remote vector clock into local
326
+ */
327
+ mergeVectorClocks(remoteClock) {
328
+ for (const [agent, timestamp] of Object.entries(remoteClock)) {
329
+ this.vectorClock[agent] = Math.max(this.vectorClock[agent] || 0, timestamp);
330
+ }
331
+ }
332
+ /**
333
+ * Validate pattern checksum
334
+ */
335
+ async validateChecksum(versionedPattern) {
336
+ const pattern = versionedPattern.isCompressed && versionedPattern.compressedContent
337
+ ? JSON.parse(await this.compression.decompress(versionedPattern.compressedContent))
338
+ : versionedPattern.pattern;
339
+ const patternJson = JSON.stringify(pattern);
340
+ const checksum = crypto.createHash('sha256').update(patternJson).digest('hex');
341
+ return checksum === versionedPattern.checksum;
342
+ }
343
+ /**
344
+ * Decompress pattern if needed
345
+ */
346
+ async decompressPattern(versionedPattern) {
347
+ if (!versionedPattern.isCompressed || !versionedPattern.compressedContent) {
348
+ return versionedPattern.pattern;
349
+ }
350
+ const decompressed = await this.compression.decompress(versionedPattern.compressedContent);
351
+ return JSON.parse(decompressed);
352
+ }
353
+ /**
354
+ * Cleanup old cache entries
355
+ */
356
+ cleanupCache() {
357
+ const now = Date.now();
358
+ const entriesToDelete = [];
359
+ for (const [id, cached] of Array.from(this.lookupCache.entries())) {
360
+ if (now - cached.timestamp > this.CACHE_TTL) {
361
+ entriesToDelete.push(id);
362
+ }
363
+ }
364
+ for (const id of entriesToDelete) {
365
+ this.lookupCache.delete(id);
366
+ }
367
+ }
368
+ }
369
+ exports.DistributedPatternLibrary = DistributedPatternLibrary;
370
+ //# sourceMappingURL=DistributedPatternLibrary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DistributedPatternLibrary.js","sourceRoot":"","sources":["../../src/memory/DistributedPatternLibrary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * PatternQualityScorer - Pattern Quality Scoring and Garbage Collection
3
+ *
4
+ * Features:
5
+ * - Score patterns based on usage success rate
6
+ * - Track comprehensive usage statistics
7
+ * - Garbage collection for low-quality patterns
8
+ * - Pattern ranking and recommendations
9
+ * - Adaptive quality thresholds
10
+ *
11
+ * @module memory/PatternQualityScorer
12
+ * @version 1.0.0
13
+ */
14
+ import { TestPattern } from '../core/memory/IPatternStore';
15
+ import { DistributedPatternLibrary } from './DistributedPatternLibrary';
16
+ /**
17
+ * Pattern usage record
18
+ */
19
+ export interface PatternUsage {
20
+ patternId: string;
21
+ timestamp: number;
22
+ success: boolean;
23
+ executionTime?: number;
24
+ context?: Record<string, any>;
25
+ }
26
+ /**
27
+ * Pattern quality metrics
28
+ */
29
+ export interface PatternQualityMetrics {
30
+ patternId: string;
31
+ qualityScore: number;
32
+ successRate: number;
33
+ totalUsage: number;
34
+ successCount: number;
35
+ failureCount: number;
36
+ averageExecutionTime: number;
37
+ lastUsedTimestamp: number;
38
+ createdTimestamp: number;
39
+ ageInDays: number;
40
+ trendScore: number;
41
+ }
42
+ /**
43
+ * Quality scorer configuration
44
+ */
45
+ export interface QualityScorerConfig {
46
+ /** Minimum success rate (0-1) */
47
+ minSuccessRate?: number;
48
+ /** Minimum usage count before scoring */
49
+ minUsageCount?: number;
50
+ /** Maximum age in days before GC consideration */
51
+ maxAgeInDays?: number;
52
+ /** Minimum quality score to keep */
53
+ minQualityScore?: number;
54
+ /** Weight for success rate in quality score */
55
+ successRateWeight?: number;
56
+ /** Weight for usage frequency in quality score */
57
+ usageWeight?: number;
58
+ /** Weight for recency in quality score */
59
+ recencyWeight?: number;
60
+ /** Enable automatic garbage collection */
61
+ enableAutoGC?: boolean;
62
+ /** GC interval in milliseconds */
63
+ gcInterval?: number;
64
+ }
65
+ /**
66
+ * Garbage collection result
67
+ */
68
+ export interface GarbageCollectionResult {
69
+ totalPatterns: number;
70
+ patternsRemoved: number;
71
+ removedPatternIds: string[];
72
+ bytesReclaimed: number;
73
+ duration: number;
74
+ timestamp: number;
75
+ }
76
+ /**
77
+ * Pattern ranking entry
78
+ */
79
+ export interface RankedPattern {
80
+ pattern: TestPattern;
81
+ metrics: PatternQualityMetrics;
82
+ rank: number;
83
+ }
84
+ /**
85
+ * PatternQualityScorer - Tracks and scores pattern quality for optimization
86
+ *
87
+ * This class provides:
88
+ * - Real-time quality scoring based on success rate and usage
89
+ * - Comprehensive usage statistics tracking
90
+ * - Automatic garbage collection of low-quality patterns
91
+ * - Pattern ranking for recommendations
92
+ * - Trend analysis for quality improvement/degradation
93
+ */
94
+ export declare class PatternQualityScorer {
95
+ private library;
96
+ private config;
97
+ private usageHistory;
98
+ private metricsCache;
99
+ private gcTimer?;
100
+ private readonly DEFAULT_MIN_SUCCESS_RATE;
101
+ private readonly DEFAULT_MIN_USAGE_COUNT;
102
+ private readonly DEFAULT_MAX_AGE_DAYS;
103
+ private readonly DEFAULT_MIN_QUALITY_SCORE;
104
+ private readonly DEFAULT_GC_INTERVAL;
105
+ constructor(library: DistributedPatternLibrary, config?: QualityScorerConfig);
106
+ /**
107
+ * Start automatic garbage collection
108
+ */
109
+ startAutoGC(): void;
110
+ /**
111
+ * Stop automatic garbage collection
112
+ */
113
+ stopAutoGC(): void;
114
+ /**
115
+ * Record pattern usage
116
+ */
117
+ recordUsage(usage: PatternUsage): Promise<void>;
118
+ /**
119
+ * Calculate quality metrics for a pattern
120
+ */
121
+ calculateMetrics(patternId: string): Promise<PatternQualityMetrics | null>;
122
+ /**
123
+ * Calculate overall quality score (0-1)
124
+ */
125
+ private calculateQualityScore;
126
+ /**
127
+ * Calculate trend score (recent performance vs historical)
128
+ */
129
+ private calculateTrend;
130
+ /**
131
+ * Get ranked patterns by quality
132
+ */
133
+ getRankedPatterns(options?: {
134
+ minQualityScore?: number;
135
+ limit?: number;
136
+ sortBy?: 'quality' | 'usage' | 'recency';
137
+ }): Promise<RankedPattern[]>;
138
+ /**
139
+ * Get patterns eligible for garbage collection
140
+ */
141
+ getGarbageCandidates(): Promise<PatternQualityMetrics[]>;
142
+ /**
143
+ * Perform garbage collection
144
+ */
145
+ garbageCollect(): Promise<GarbageCollectionResult>;
146
+ /**
147
+ * Get scorer statistics
148
+ */
149
+ getStats(): Promise<{
150
+ totalPatterns: number;
151
+ trackedPatterns: number;
152
+ averageQualityScore: number;
153
+ lowQualityPatterns: number;
154
+ garbageCandidates: number;
155
+ }>;
156
+ /**
157
+ * Clear all usage history
158
+ */
159
+ clearHistory(): void;
160
+ /**
161
+ * Export usage history for analysis
162
+ */
163
+ exportHistory(): Map<string, PatternUsage[]>;
164
+ /**
165
+ * Import usage history from external source
166
+ */
167
+ importHistory(history: Map<string, PatternUsage[]>): void;
168
+ }
169
+ //# sourceMappingURL=PatternQualityScorer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PatternQualityScorer.d.ts","sourceRoot":"","sources":["../../src/memory/PatternQualityScorer.ts"],"names":[],"mappings":"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"}