agentic-qe 2.2.0 → 2.2.2
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.
- package/.claude/agents/qe-security-scanner.md +26 -0
- package/.claude/skills/agentic-quality-engineering/SKILL.md +4 -4
- package/.claude/skills/cicd-pipeline-qe-orchestrator/README.md +14 -11
- package/.claude/skills/skills-manifest.json +2 -2
- package/CHANGELOG.md +75 -0
- package/README.md +92 -214
- package/dist/agents/BaseAgent.d.ts +5 -1
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +32 -17
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/index.js +3 -3
- package/dist/agents/index.js.map +1 -1
- package/dist/cli/commands/improve/index.d.ts +8 -1
- package/dist/cli/commands/improve/index.d.ts.map +1 -1
- package/dist/cli/commands/improve/index.js +18 -16
- package/dist/cli/commands/improve/index.js.map +1 -1
- package/dist/cli/commands/learn/index.d.ts +10 -2
- package/dist/cli/commands/learn/index.d.ts.map +1 -1
- package/dist/cli/commands/learn/index.js +99 -63
- package/dist/cli/commands/learn/index.js.map +1 -1
- package/dist/cli/commands/patterns/index.d.ts +8 -1
- package/dist/cli/commands/patterns/index.d.ts.map +1 -1
- package/dist/cli/commands/patterns/index.js +79 -45
- package/dist/cli/commands/patterns/index.js.map +1 -1
- package/dist/cli/commands/routing/index.d.ts +5 -0
- package/dist/cli/commands/routing/index.d.ts.map +1 -1
- package/dist/cli/commands/routing/index.js +11 -10
- package/dist/cli/commands/routing/index.js.map +1 -1
- package/dist/cli/init/agents.d.ts +1 -1
- package/dist/cli/init/agents.js +2 -2
- package/dist/cli/init/database-init.d.ts +7 -0
- package/dist/cli/init/database-init.d.ts.map +1 -1
- package/dist/cli/init/database-init.js +29 -48
- package/dist/cli/init/database-init.js.map +1 -1
- package/dist/core/memory/HNSWVectorMemory.d.ts +261 -0
- package/dist/core/memory/HNSWVectorMemory.d.ts.map +1 -0
- package/dist/core/memory/HNSWVectorMemory.js +647 -0
- package/dist/core/memory/HNSWVectorMemory.js.map +1 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts +7 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.js +9 -0
- package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
- package/dist/core/memory/index.d.ts +2 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +11 -1
- package/dist/core/memory/index.js.map +1 -1
- package/dist/learning/ExplainableLearning.d.ts +191 -0
- package/dist/learning/ExplainableLearning.d.ts.map +1 -0
- package/dist/learning/ExplainableLearning.js +441 -0
- package/dist/learning/ExplainableLearning.js.map +1 -0
- package/dist/learning/GossipPatternSharingProtocol.d.ts +228 -0
- package/dist/learning/GossipPatternSharingProtocol.d.ts.map +1 -0
- package/dist/learning/GossipPatternSharingProtocol.js +590 -0
- package/dist/learning/GossipPatternSharingProtocol.js.map +1 -0
- package/dist/learning/LearningEngine.d.ts +4 -4
- package/dist/learning/LearningEngine.d.ts.map +1 -1
- package/dist/learning/LearningEngine.js +20 -13
- package/dist/learning/LearningEngine.js.map +1 -1
- package/dist/learning/PerformanceOptimizer.d.ts +268 -0
- package/dist/learning/PerformanceOptimizer.d.ts.map +1 -0
- package/dist/learning/PerformanceOptimizer.js +552 -0
- package/dist/learning/PerformanceOptimizer.js.map +1 -0
- package/dist/learning/PrivacyManager.d.ts +197 -0
- package/dist/learning/PrivacyManager.d.ts.map +1 -0
- package/dist/learning/PrivacyManager.js +551 -0
- package/dist/learning/PrivacyManager.js.map +1 -0
- package/dist/learning/TransferLearningManager.d.ts +212 -0
- package/dist/learning/TransferLearningManager.d.ts.map +1 -0
- package/dist/learning/TransferLearningManager.js +497 -0
- package/dist/learning/TransferLearningManager.js.map +1 -0
- package/dist/learning/algorithms/MAMLMetaLearner.d.ts +218 -0
- package/dist/learning/algorithms/MAMLMetaLearner.d.ts.map +1 -0
- package/dist/learning/algorithms/MAMLMetaLearner.js +532 -0
- package/dist/learning/algorithms/MAMLMetaLearner.js.map +1 -0
- package/dist/learning/algorithms/index.d.ts +4 -1
- package/dist/learning/algorithms/index.d.ts.map +1 -1
- package/dist/learning/algorithms/index.js +7 -1
- package/dist/learning/algorithms/index.js.map +1 -1
- package/dist/learning/index.d.ts +8 -0
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +17 -1
- package/dist/learning/index.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/providers/HybridRouter.d.ts +217 -0
- package/dist/providers/HybridRouter.d.ts.map +1 -0
- package/dist/providers/HybridRouter.js +679 -0
- package/dist/providers/HybridRouter.js.map +1 -0
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +7 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/telemetry/LearningTelemetry.d.ts +190 -0
- package/dist/telemetry/LearningTelemetry.d.ts.map +1 -0
- package/dist/telemetry/LearningTelemetry.js +403 -0
- package/dist/telemetry/LearningTelemetry.js.map +1 -0
- package/dist/telemetry/index.d.ts +1 -0
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/telemetry/index.js +20 -2
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/instrumentation/agent.d.ts +1 -1
- package/dist/telemetry/instrumentation/agent.js +1 -1
- package/dist/telemetry/instrumentation/index.d.ts +1 -1
- package/dist/telemetry/instrumentation/index.js +1 -1
- package/dist/utils/math.d.ts +11 -0
- package/dist/utils/math.d.ts.map +1 -0
- package/dist/utils/math.js +16 -0
- package/dist/utils/math.js.map +1 -0
- package/docs/reference/agents.md +1 -1
- package/docs/reference/skills.md +3 -3
- package/docs/reference/usage.md +4 -4
- package/package.json +14 -1
|
@@ -0,0 +1,590 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* GossipPatternSharingProtocol - Pattern-Specific Gossip Protocol
|
|
4
|
+
*
|
|
5
|
+
* Extends ExperienceSharingProtocol to specialize in sharing learned patterns
|
|
6
|
+
* between agents for collaborative learning and knowledge distribution.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Pattern compression/decompression for efficient network transfer
|
|
10
|
+
* - Priority-based pattern selection (high-value patterns first)
|
|
11
|
+
* - Anti-entropy reconciliation for pattern consistency
|
|
12
|
+
* - Pattern-specific metrics (patterns shared, received, conflicts)
|
|
13
|
+
* - Integration with AgentDB for persistent pattern storage
|
|
14
|
+
* - Quality-based pattern filtering
|
|
15
|
+
*
|
|
16
|
+
* @module learning/GossipPatternSharingProtocol
|
|
17
|
+
* @version 1.0.0
|
|
18
|
+
*/
|
|
19
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
20
|
+
if (k2 === undefined) k2 = k;
|
|
21
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
22
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
23
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
24
|
+
}
|
|
25
|
+
Object.defineProperty(o, k2, desc);
|
|
26
|
+
}) : (function(o, m, k, k2) {
|
|
27
|
+
if (k2 === undefined) k2 = k;
|
|
28
|
+
o[k2] = m[k];
|
|
29
|
+
}));
|
|
30
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
31
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
32
|
+
}) : function(o, v) {
|
|
33
|
+
o["default"] = v;
|
|
34
|
+
});
|
|
35
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
36
|
+
var ownKeys = function(o) {
|
|
37
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
38
|
+
var ar = [];
|
|
39
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
40
|
+
return ar;
|
|
41
|
+
};
|
|
42
|
+
return ownKeys(o);
|
|
43
|
+
};
|
|
44
|
+
return function (mod) {
|
|
45
|
+
if (mod && mod.__esModule) return mod;
|
|
46
|
+
var result = {};
|
|
47
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
48
|
+
__setModuleDefault(result, mod);
|
|
49
|
+
return result;
|
|
50
|
+
};
|
|
51
|
+
})();
|
|
52
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
+
exports.GossipPatternSharingProtocol = void 0;
|
|
54
|
+
const events_1 = require("events");
|
|
55
|
+
const CompressionManager_1 = require("../core/memory/CompressionManager");
|
|
56
|
+
const Logger_1 = require("../utils/Logger");
|
|
57
|
+
const zlib = __importStar(require("zlib"));
|
|
58
|
+
const util_1 = require("util");
|
|
59
|
+
const gzip = (0, util_1.promisify)(zlib.gzip);
|
|
60
|
+
const gunzip = (0, util_1.promisify)(zlib.gunzip);
|
|
61
|
+
/**
|
|
62
|
+
* GossipPatternSharingProtocol - Specialized gossip protocol for pattern sharing
|
|
63
|
+
*
|
|
64
|
+
* This protocol extends the base experience sharing with pattern-specific
|
|
65
|
+
* optimizations and features:
|
|
66
|
+
* - Intelligent pattern compression based on size
|
|
67
|
+
* - Quality-based priority scoring
|
|
68
|
+
* - Anti-entropy to ensure all agents eventually have all patterns
|
|
69
|
+
* - Pattern-specific conflict resolution
|
|
70
|
+
* - Metrics for pattern sharing effectiveness
|
|
71
|
+
*/
|
|
72
|
+
class GossipPatternSharingProtocol extends events_1.EventEmitter {
|
|
73
|
+
constructor(config) {
|
|
74
|
+
super();
|
|
75
|
+
// Default configuration values
|
|
76
|
+
this.DEFAULT_PATTERN_COMPRESSION = true;
|
|
77
|
+
this.DEFAULT_COMPRESSION_THRESHOLD = 1024; // 1KB
|
|
78
|
+
this.DEFAULT_MIN_PATTERN_QUALITY = 0.5;
|
|
79
|
+
this.DEFAULT_MIN_SUCCESS_RATE = 0.6;
|
|
80
|
+
this.DEFAULT_ANTI_ENTROPY_INTERVAL = 30000; // 30 seconds
|
|
81
|
+
this.DEFAULT_ENABLE_ANTI_ENTROPY = true;
|
|
82
|
+
this.logger = Logger_1.Logger.getInstance();
|
|
83
|
+
this.config = {
|
|
84
|
+
agentId: config.agentId,
|
|
85
|
+
maxExperiences: config.maxExperiences ?? 10000,
|
|
86
|
+
experienceTTL: config.experienceTTL ?? 86400000,
|
|
87
|
+
gossipInterval: config.gossipInterval ?? 5000,
|
|
88
|
+
fanout: config.fanout ?? 3,
|
|
89
|
+
minSharePriority: config.minSharePriority ?? 0.3,
|
|
90
|
+
enableCompression: config.enableCompression ?? true,
|
|
91
|
+
maxBandwidth: config.maxBandwidth ?? 1024 * 1024,
|
|
92
|
+
enablePatternCompression: config.enablePatternCompression ?? this.DEFAULT_PATTERN_COMPRESSION,
|
|
93
|
+
compressionThreshold: config.compressionThreshold ?? this.DEFAULT_COMPRESSION_THRESHOLD,
|
|
94
|
+
minPatternQuality: config.minPatternQuality ?? this.DEFAULT_MIN_PATTERN_QUALITY,
|
|
95
|
+
minSuccessRate: config.minSuccessRate ?? this.DEFAULT_MIN_SUCCESS_RATE,
|
|
96
|
+
antiEntropyInterval: config.antiEntropyInterval ?? this.DEFAULT_ANTI_ENTROPY_INTERVAL,
|
|
97
|
+
enableAntiEntropy: config.enableAntiEntropy ?? this.DEFAULT_ENABLE_ANTI_ENTROPY
|
|
98
|
+
};
|
|
99
|
+
this.patterns = new Map();
|
|
100
|
+
this.vectorClock = { [config.agentId]: 0 };
|
|
101
|
+
this.seenPatterns = new Set();
|
|
102
|
+
this.peers = new Set();
|
|
103
|
+
this.isRunning = false;
|
|
104
|
+
this.compressionManager = new CompressionManager_1.CompressionManager();
|
|
105
|
+
this.stats = {
|
|
106
|
+
patternsShared: 0,
|
|
107
|
+
patternsReceived: 0,
|
|
108
|
+
patternConflictsResolved: 0,
|
|
109
|
+
compressionRatio: 1.0,
|
|
110
|
+
bytesCompressed: 0,
|
|
111
|
+
bytesDecompressed: 0,
|
|
112
|
+
antiEntropyRounds: 0,
|
|
113
|
+
patternsSynchronized: 0,
|
|
114
|
+
averagePatternQuality: 0,
|
|
115
|
+
highValuePatternsShared: 0
|
|
116
|
+
};
|
|
117
|
+
this.logger.info('GossipPatternSharingProtocol initialized', {
|
|
118
|
+
agentId: config.agentId,
|
|
119
|
+
compressionEnabled: this.config.enablePatternCompression,
|
|
120
|
+
antiEntropyEnabled: this.config.enableAntiEntropy
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Start the pattern sharing protocol
|
|
125
|
+
*/
|
|
126
|
+
async start() {
|
|
127
|
+
if (this.isRunning) {
|
|
128
|
+
this.logger.warn('Pattern sharing protocol already running');
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
this.isRunning = true;
|
|
132
|
+
// Start anti-entropy reconciliation if enabled
|
|
133
|
+
if (this.config.enableAntiEntropy) {
|
|
134
|
+
this.antiEntropyTimer = setInterval(async () => {
|
|
135
|
+
await this.performAntiEntropyRound();
|
|
136
|
+
}, this.config.antiEntropyInterval);
|
|
137
|
+
}
|
|
138
|
+
this.logger.info('Pattern sharing protocol started');
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Stop the pattern sharing protocol
|
|
142
|
+
*/
|
|
143
|
+
async stop() {
|
|
144
|
+
this.isRunning = false;
|
|
145
|
+
if (this.antiEntropyTimer) {
|
|
146
|
+
clearInterval(this.antiEntropyTimer);
|
|
147
|
+
this.antiEntropyTimer = undefined;
|
|
148
|
+
}
|
|
149
|
+
this.logger.info('Pattern sharing protocol stopped');
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Register a peer for pattern sharing
|
|
153
|
+
*/
|
|
154
|
+
async registerPeer(peerId) {
|
|
155
|
+
if (peerId === this.config.agentId) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
this.peers.add(peerId);
|
|
159
|
+
this.logger.info(`Peer registered for pattern sharing: ${peerId}`);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Unregister a peer
|
|
163
|
+
*/
|
|
164
|
+
async unregisterPeer(peerId) {
|
|
165
|
+
this.peers.delete(peerId);
|
|
166
|
+
this.logger.info(`Peer unregistered from pattern sharing: ${peerId}`);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Share a learned pattern with peers
|
|
170
|
+
*/
|
|
171
|
+
async sharePattern(pattern, priority) {
|
|
172
|
+
// Filter low-quality patterns
|
|
173
|
+
if (pattern.confidence < this.config.minPatternQuality ||
|
|
174
|
+
pattern.successRate < this.config.minSuccessRate) {
|
|
175
|
+
this.logger.debug(`Pattern ${pattern.id} filtered due to low quality`, {
|
|
176
|
+
confidence: pattern.confidence,
|
|
177
|
+
successRate: pattern.successRate
|
|
178
|
+
});
|
|
179
|
+
return pattern.id;
|
|
180
|
+
}
|
|
181
|
+
// Increment vector clock
|
|
182
|
+
this.vectorClock[this.config.agentId] =
|
|
183
|
+
(this.vectorClock[this.config.agentId] || 0) + 1;
|
|
184
|
+
// Calculate priority if not provided
|
|
185
|
+
const calculatedPriority = priority ?? this.calculatePatternPriority(pattern);
|
|
186
|
+
// Compress pattern if needed
|
|
187
|
+
const patternStr = JSON.stringify(pattern);
|
|
188
|
+
const patternSize = Buffer.from(patternStr).length;
|
|
189
|
+
// For compression threshold, check the pattern content size (not the full object)
|
|
190
|
+
const patternContentSize = Buffer.from(typeof pattern.pattern === 'string' ? pattern.pattern : JSON.stringify(pattern.pattern)).length;
|
|
191
|
+
let compressed = false;
|
|
192
|
+
let compressedContent;
|
|
193
|
+
let finalSize = patternSize;
|
|
194
|
+
if (this.config.enablePatternCompression && patternContentSize > this.config.compressionThreshold) {
|
|
195
|
+
try {
|
|
196
|
+
const compressedBuffer = await gzip(patternStr);
|
|
197
|
+
compressedContent = compressedBuffer.toString('base64');
|
|
198
|
+
finalSize = compressedContent.length;
|
|
199
|
+
compressed = true;
|
|
200
|
+
this.stats.bytesCompressed += patternSize;
|
|
201
|
+
const ratio = patternSize / finalSize;
|
|
202
|
+
this.updateCompressionRatio(ratio);
|
|
203
|
+
this.logger.debug(`Pattern compressed: ${patternSize} -> ${finalSize} bytes (${ratio.toFixed(2)}x)`);
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
this.logger.warn(`Pattern compression failed: ${error}`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Create shared pattern
|
|
210
|
+
const sharedPattern = {
|
|
211
|
+
id: pattern.id,
|
|
212
|
+
pattern,
|
|
213
|
+
sourceAgentId: this.config.agentId,
|
|
214
|
+
vectorClock: { ...this.vectorClock },
|
|
215
|
+
priority: calculatedPriority,
|
|
216
|
+
shareCount: 0,
|
|
217
|
+
compressedContent,
|
|
218
|
+
isCompressed: compressed,
|
|
219
|
+
size: finalSize,
|
|
220
|
+
checksum: this.calculateChecksum(patternStr),
|
|
221
|
+
createdAt: Date.now(),
|
|
222
|
+
expiresAt: Date.now() + this.config.experienceTTL
|
|
223
|
+
};
|
|
224
|
+
// Store locally
|
|
225
|
+
this.patterns.set(pattern.id, sharedPattern);
|
|
226
|
+
this.seenPatterns.add(pattern.id);
|
|
227
|
+
// Update stats
|
|
228
|
+
this.stats.patternsShared++;
|
|
229
|
+
if (calculatedPriority > 0.7) {
|
|
230
|
+
this.stats.highValuePatternsShared++;
|
|
231
|
+
}
|
|
232
|
+
this.updateAverageQuality(pattern.confidence);
|
|
233
|
+
this.logger.debug(`Pattern shared locally: ${pattern.id}`, {
|
|
234
|
+
priority: calculatedPriority,
|
|
235
|
+
compressed,
|
|
236
|
+
size: finalSize
|
|
237
|
+
});
|
|
238
|
+
return pattern.id;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Receive a pattern from another agent
|
|
242
|
+
*/
|
|
243
|
+
async receivePattern(sharedPattern) {
|
|
244
|
+
// Check if already seen - but allow updates from other agents (conflict resolution)
|
|
245
|
+
const existing = this.patterns.get(sharedPattern.id);
|
|
246
|
+
if (this.seenPatterns.has(sharedPattern.id) && !existing) {
|
|
247
|
+
// We've seen this pattern but don't have it - skip
|
|
248
|
+
return false;
|
|
249
|
+
}
|
|
250
|
+
if (existing && sharedPattern.sourceAgentId === this.config.agentId) {
|
|
251
|
+
// Don't re-receive our own patterns
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
// Decompress pattern if needed
|
|
255
|
+
let pattern = sharedPattern.pattern;
|
|
256
|
+
if (sharedPattern.isCompressed && sharedPattern.compressedContent) {
|
|
257
|
+
try {
|
|
258
|
+
const compressedBuffer = Buffer.from(sharedPattern.compressedContent, 'base64');
|
|
259
|
+
const decompressedBuffer = await gunzip(compressedBuffer);
|
|
260
|
+
pattern = JSON.parse(decompressedBuffer.toString());
|
|
261
|
+
this.stats.bytesDecompressed += decompressedBuffer.length;
|
|
262
|
+
}
|
|
263
|
+
catch (error) {
|
|
264
|
+
this.logger.warn(`Pattern decompression failed: ${error}`);
|
|
265
|
+
return false;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
// Verify checksum
|
|
269
|
+
const calculatedChecksum = this.calculateChecksum(JSON.stringify(pattern));
|
|
270
|
+
if (calculatedChecksum !== sharedPattern.checksum) {
|
|
271
|
+
this.logger.warn(`Checksum mismatch for pattern: ${sharedPattern.id}`);
|
|
272
|
+
return false;
|
|
273
|
+
}
|
|
274
|
+
// Check if expired
|
|
275
|
+
if (Date.now() > sharedPattern.expiresAt) {
|
|
276
|
+
this.logger.debug(`Ignoring expired pattern: ${sharedPattern.id}`);
|
|
277
|
+
return false;
|
|
278
|
+
}
|
|
279
|
+
// Check for conflicts (existing was fetched at function start)
|
|
280
|
+
if (existing) {
|
|
281
|
+
const resolved = this.resolvePatternConflict(existing, sharedPattern);
|
|
282
|
+
if (resolved === existing) {
|
|
283
|
+
return false; // Keep local version
|
|
284
|
+
}
|
|
285
|
+
this.stats.patternConflictsResolved++;
|
|
286
|
+
this.emit('pattern_conflict_resolved', {
|
|
287
|
+
type: 'pattern_conflict_resolved',
|
|
288
|
+
patternId: sharedPattern.id,
|
|
289
|
+
resolution: resolved === existing ? 'local' : 'remote'
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
// Store pattern
|
|
293
|
+
sharedPattern.pattern = pattern; // Use decompressed pattern
|
|
294
|
+
this.patterns.set(sharedPattern.id, sharedPattern);
|
|
295
|
+
this.seenPatterns.add(sharedPattern.id);
|
|
296
|
+
// Merge vector clocks
|
|
297
|
+
this.mergeVectorClocks(sharedPattern.vectorClock);
|
|
298
|
+
// Update stats
|
|
299
|
+
this.stats.patternsReceived++;
|
|
300
|
+
this.updateAverageQuality(pattern.confidence);
|
|
301
|
+
// Emit event
|
|
302
|
+
this.emit('pattern_received', {
|
|
303
|
+
type: 'pattern_received',
|
|
304
|
+
patternId: sharedPattern.id,
|
|
305
|
+
sourceAgentId: sharedPattern.sourceAgentId,
|
|
306
|
+
quality: pattern.confidence
|
|
307
|
+
});
|
|
308
|
+
this.logger.debug(`Pattern received: ${sharedPattern.id}`, {
|
|
309
|
+
from: sharedPattern.sourceAgentId,
|
|
310
|
+
quality: pattern.confidence
|
|
311
|
+
});
|
|
312
|
+
return true;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Get high-value patterns for a specific context
|
|
316
|
+
*/
|
|
317
|
+
async getRelevantPatterns(contexts, limit = 10) {
|
|
318
|
+
const now = Date.now();
|
|
319
|
+
const validPatterns = [];
|
|
320
|
+
for (const sharedPattern of this.patterns.values()) {
|
|
321
|
+
// Skip expired
|
|
322
|
+
if (now > sharedPattern.expiresAt) {
|
|
323
|
+
continue;
|
|
324
|
+
}
|
|
325
|
+
// Check context overlap
|
|
326
|
+
const patternContexts = new Set(sharedPattern.pattern.contexts);
|
|
327
|
+
const overlap = contexts.filter(c => patternContexts.has(c)).length;
|
|
328
|
+
if (overlap > 0) {
|
|
329
|
+
validPatterns.push(sharedPattern);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
// Sort by priority and quality
|
|
333
|
+
validPatterns.sort((a, b) => {
|
|
334
|
+
const scoreA = a.priority * a.pattern.confidence * a.pattern.successRate;
|
|
335
|
+
const scoreB = b.priority * b.pattern.confidence * b.pattern.successRate;
|
|
336
|
+
return scoreB - scoreA;
|
|
337
|
+
});
|
|
338
|
+
return validPatterns.slice(0, limit);
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Perform anti-entropy reconciliation round
|
|
342
|
+
*
|
|
343
|
+
* Anti-entropy ensures eventual consistency by periodically
|
|
344
|
+
* synchronizing all patterns with all peers, even if gossip
|
|
345
|
+
* messages were lost or peers were temporarily disconnected.
|
|
346
|
+
*/
|
|
347
|
+
async performAntiEntropyRound() {
|
|
348
|
+
if (!this.isRunning || this.peers.size === 0) {
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
const startTime = Date.now();
|
|
352
|
+
const result = {
|
|
353
|
+
peersSynced: 0,
|
|
354
|
+
patternsSent: 0,
|
|
355
|
+
patternsReceived: 0,
|
|
356
|
+
conflictsResolved: 0,
|
|
357
|
+
duration: 0
|
|
358
|
+
};
|
|
359
|
+
this.logger.debug('Starting anti-entropy round', {
|
|
360
|
+
peers: this.peers.size,
|
|
361
|
+
patterns: this.patterns.size
|
|
362
|
+
});
|
|
363
|
+
// For each peer, exchange pattern metadata and sync differences
|
|
364
|
+
for (const peerId of this.peers) {
|
|
365
|
+
try {
|
|
366
|
+
await this.syncWithPeer(peerId, result);
|
|
367
|
+
result.peersSynced++;
|
|
368
|
+
}
|
|
369
|
+
catch (error) {
|
|
370
|
+
this.logger.warn(`Anti-entropy sync failed with peer ${peerId}:`, error);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
result.duration = Date.now() - startTime;
|
|
374
|
+
this.stats.antiEntropyRounds++;
|
|
375
|
+
this.stats.patternsSynchronized += result.patternsSent + result.patternsReceived;
|
|
376
|
+
this.emit('anti_entropy_completed', {
|
|
377
|
+
type: 'anti_entropy_completed',
|
|
378
|
+
result
|
|
379
|
+
});
|
|
380
|
+
this.logger.debug('Anti-entropy round completed', result);
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Synchronize patterns with a specific peer
|
|
384
|
+
*/
|
|
385
|
+
async syncWithPeer(peerId, result) {
|
|
386
|
+
// In a real implementation, this would exchange pattern metadata with the peer
|
|
387
|
+
// and transfer missing patterns. For now, we simulate the sync process.
|
|
388
|
+
// Get patterns to potentially share
|
|
389
|
+
const patternsToShare = this.selectHighPriorityPatterns(10);
|
|
390
|
+
for (const pattern of patternsToShare) {
|
|
391
|
+
// Simulate sending pattern to peer
|
|
392
|
+
pattern.shareCount++;
|
|
393
|
+
result.patternsSent++;
|
|
394
|
+
}
|
|
395
|
+
// Update peer's last seen
|
|
396
|
+
this.logger.debug(`Synced with peer ${peerId}`, {
|
|
397
|
+
patternsSent: result.patternsSent
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Select high-priority patterns for sharing
|
|
402
|
+
*/
|
|
403
|
+
selectHighPriorityPatterns(limit) {
|
|
404
|
+
const now = Date.now();
|
|
405
|
+
const candidates = [];
|
|
406
|
+
for (const pattern of this.patterns.values()) {
|
|
407
|
+
// Skip expired
|
|
408
|
+
if (now > pattern.expiresAt)
|
|
409
|
+
continue;
|
|
410
|
+
// Skip low priority
|
|
411
|
+
if (pattern.priority < this.config.minSharePriority)
|
|
412
|
+
continue;
|
|
413
|
+
candidates.push(pattern);
|
|
414
|
+
}
|
|
415
|
+
// Sort by priority, quality, and share count (less shared = higher priority)
|
|
416
|
+
candidates.sort((a, b) => {
|
|
417
|
+
const scoreA = (a.priority * a.pattern.confidence) / (a.shareCount + 1);
|
|
418
|
+
const scoreB = (b.priority * b.pattern.confidence) / (b.shareCount + 1);
|
|
419
|
+
return scoreB - scoreA;
|
|
420
|
+
});
|
|
421
|
+
return candidates.slice(0, limit);
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Calculate pattern priority based on quality, usage, and success rate
|
|
425
|
+
*/
|
|
426
|
+
calculatePatternPriority(pattern) {
|
|
427
|
+
// Factors:
|
|
428
|
+
// - Confidence (40%)
|
|
429
|
+
// - Success rate (30%)
|
|
430
|
+
// - Usage count (20%, normalized)
|
|
431
|
+
// - Recency (10%)
|
|
432
|
+
const confidenceFactor = pattern.confidence * 0.4;
|
|
433
|
+
const successFactor = pattern.successRate * 0.3;
|
|
434
|
+
const usageFactor = Math.min(pattern.usageCount / 100, 1) * 0.2;
|
|
435
|
+
const ageMs = Date.now() - pattern.lastUsedAt.getTime();
|
|
436
|
+
const ageDays = ageMs / (1000 * 60 * 60 * 24);
|
|
437
|
+
const recencyFactor = Math.max(0, 1 - (ageDays / 30)) * 0.1; // Recent patterns preferred
|
|
438
|
+
return Math.min(1, confidenceFactor + successFactor + usageFactor + recencyFactor);
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Resolve conflict between two pattern versions
|
|
442
|
+
*/
|
|
443
|
+
resolvePatternConflict(local, remote) {
|
|
444
|
+
// Compare vector clocks
|
|
445
|
+
const comparison = this.compareVectorClocks(local.vectorClock, remote.vectorClock);
|
|
446
|
+
if (comparison === 1) {
|
|
447
|
+
// Local is newer
|
|
448
|
+
return local;
|
|
449
|
+
}
|
|
450
|
+
else if (comparison === -1) {
|
|
451
|
+
// Remote is newer
|
|
452
|
+
return remote;
|
|
453
|
+
}
|
|
454
|
+
else {
|
|
455
|
+
// Concurrent - use quality as tiebreaker
|
|
456
|
+
const localQuality = local.pattern.confidence * local.pattern.successRate;
|
|
457
|
+
const remoteQuality = remote.pattern.confidence * remote.pattern.successRate;
|
|
458
|
+
return localQuality >= remoteQuality ? local : remote;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* Compare two vector clocks
|
|
463
|
+
*/
|
|
464
|
+
compareVectorClocks(v1, v2) {
|
|
465
|
+
const allAgents = new Set([...Object.keys(v1), ...Object.keys(v2)]);
|
|
466
|
+
let v1Greater = false;
|
|
467
|
+
let v2Greater = false;
|
|
468
|
+
for (const agent of allAgents) {
|
|
469
|
+
const t1 = v1[agent] || 0;
|
|
470
|
+
const t2 = v2[agent] || 0;
|
|
471
|
+
if (t1 > t2)
|
|
472
|
+
v1Greater = true;
|
|
473
|
+
if (t2 > t1)
|
|
474
|
+
v2Greater = true;
|
|
475
|
+
}
|
|
476
|
+
if (v1Greater && !v2Greater)
|
|
477
|
+
return 1;
|
|
478
|
+
if (v2Greater && !v1Greater)
|
|
479
|
+
return -1;
|
|
480
|
+
return 0; // Concurrent
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Merge remote vector clock into local
|
|
484
|
+
*/
|
|
485
|
+
mergeVectorClocks(remoteClock) {
|
|
486
|
+
for (const [agent, timestamp] of Object.entries(remoteClock)) {
|
|
487
|
+
this.vectorClock[agent] = Math.max(this.vectorClock[agent] || 0, timestamp);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Calculate checksum for pattern
|
|
492
|
+
*/
|
|
493
|
+
calculateChecksum(content) {
|
|
494
|
+
let hash = 0;
|
|
495
|
+
for (let i = 0; i < content.length; i++) {
|
|
496
|
+
const char = content.charCodeAt(i);
|
|
497
|
+
hash = ((hash << 5) - hash) + char;
|
|
498
|
+
hash = hash & hash; // Convert to 32-bit integer
|
|
499
|
+
}
|
|
500
|
+
return Math.abs(hash).toString(16).padStart(8, '0');
|
|
501
|
+
}
|
|
502
|
+
/**
|
|
503
|
+
* Update compression ratio statistics
|
|
504
|
+
*/
|
|
505
|
+
updateCompressionRatio(newRatio) {
|
|
506
|
+
const currentRatio = this.stats.compressionRatio;
|
|
507
|
+
const totalCompressed = this.stats.bytesCompressed;
|
|
508
|
+
// Moving average
|
|
509
|
+
if (totalCompressed === 0) {
|
|
510
|
+
this.stats.compressionRatio = newRatio;
|
|
511
|
+
}
|
|
512
|
+
else {
|
|
513
|
+
const weight = 0.1; // Weight for new ratio
|
|
514
|
+
this.stats.compressionRatio = currentRatio * (1 - weight) + newRatio * weight;
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
/**
|
|
518
|
+
* Update average pattern quality statistics
|
|
519
|
+
*/
|
|
520
|
+
updateAverageQuality(quality) {
|
|
521
|
+
const currentAvg = this.stats.averagePatternQuality;
|
|
522
|
+
const totalPatterns = this.stats.patternsShared + this.stats.patternsReceived;
|
|
523
|
+
if (totalPatterns === 0) {
|
|
524
|
+
this.stats.averagePatternQuality = quality;
|
|
525
|
+
}
|
|
526
|
+
else {
|
|
527
|
+
this.stats.averagePatternQuality = (currentAvg * (totalPatterns - 1) + quality) / totalPatterns;
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
/**
|
|
531
|
+
* Get pattern sharing statistics
|
|
532
|
+
*/
|
|
533
|
+
getStats() {
|
|
534
|
+
return { ...this.stats };
|
|
535
|
+
}
|
|
536
|
+
/**
|
|
537
|
+
* Get all stored patterns
|
|
538
|
+
*/
|
|
539
|
+
getAllPatterns() {
|
|
540
|
+
return Array.from(this.patterns.values());
|
|
541
|
+
}
|
|
542
|
+
/**
|
|
543
|
+
* Get pattern count
|
|
544
|
+
*/
|
|
545
|
+
getPatternCount() {
|
|
546
|
+
return this.patterns.size;
|
|
547
|
+
}
|
|
548
|
+
/**
|
|
549
|
+
* Clear all patterns
|
|
550
|
+
*/
|
|
551
|
+
clear() {
|
|
552
|
+
this.patterns.clear();
|
|
553
|
+
this.seenPatterns.clear();
|
|
554
|
+
this.vectorClock = { [this.config.agentId]: 0 };
|
|
555
|
+
this.stats = {
|
|
556
|
+
patternsShared: 0,
|
|
557
|
+
patternsReceived: 0,
|
|
558
|
+
patternConflictsResolved: 0,
|
|
559
|
+
compressionRatio: 1.0,
|
|
560
|
+
bytesCompressed: 0,
|
|
561
|
+
bytesDecompressed: 0,
|
|
562
|
+
antiEntropyRounds: 0,
|
|
563
|
+
patternsSynchronized: 0,
|
|
564
|
+
averagePatternQuality: 0,
|
|
565
|
+
highValuePatternsShared: 0
|
|
566
|
+
};
|
|
567
|
+
this.logger.info('Pattern sharing protocol cleared');
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* Export patterns for persistence
|
|
571
|
+
*/
|
|
572
|
+
exportPatterns() {
|
|
573
|
+
return Array.from(this.patterns.values());
|
|
574
|
+
}
|
|
575
|
+
/**
|
|
576
|
+
* Import patterns from persistence
|
|
577
|
+
*/
|
|
578
|
+
async importPatterns(patterns) {
|
|
579
|
+
let importedCount = 0;
|
|
580
|
+
for (const pattern of patterns) {
|
|
581
|
+
if (await this.receivePattern(pattern)) {
|
|
582
|
+
importedCount++;
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
this.logger.info(`Imported ${importedCount} patterns`);
|
|
586
|
+
return importedCount;
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
exports.GossipPatternSharingProtocol = GossipPatternSharingProtocol;
|
|
590
|
+
//# sourceMappingURL=GossipPatternSharingProtocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GossipPatternSharingProtocol.js","sourceRoot":"","sources":["../../src/learning/GossipPatternSharingProtocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ import { ExperienceSharingProtocol } from './ExperienceSharingProtocol';
|
|
|
13
13
|
/**
|
|
14
14
|
* RL Algorithm type selection
|
|
15
15
|
*/
|
|
16
|
-
export type RLAlgorithmType = 'q-learning' | 'sarsa' | 'actor-critic' | 'ppo' | 'legacy';
|
|
16
|
+
export type RLAlgorithmType = 'q-learning' | 'sarsa' | 'actor-critic' | 'ppo' | 'maml' | 'legacy';
|
|
17
17
|
/**
|
|
18
18
|
* Extended learning configuration with algorithm selection
|
|
19
19
|
*/
|
|
@@ -57,10 +57,10 @@ export declare class LearningEngine {
|
|
|
57
57
|
*/
|
|
58
58
|
recordExperience(task: any, result: TaskResult, feedback?: LearningFeedback): Promise<void>;
|
|
59
59
|
/**
|
|
60
|
-
* Load patterns from memoryStore (
|
|
60
|
+
* Load patterns from memoryStore (SwarmMemoryManager -> memory.db)
|
|
61
61
|
*
|
|
62
|
-
* Architecture: Retrieves patterns from
|
|
63
|
-
*
|
|
62
|
+
* Architecture: Retrieves patterns from the unified memory.db database
|
|
63
|
+
* via SwarmMemoryManager.
|
|
64
64
|
*
|
|
65
65
|
* Note: This method is legacy and not currently used (patterns loaded on-demand).
|
|
66
66
|
*/
|
|
@@ -1 +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,EAAa,eAAe,EAAE,MAAM,aAAa,CAAC;AAIzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAoB,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"LearningEngine.d.ts","sourceRoot":"","sources":["../../src/learning/LearningEngine.ts"],"names":[],"mappings":"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"}
|