agentic-qe 2.1.2 → 2.2.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 (190) hide show
  1. package/.claude/skills/agentic-quality-engineering/SKILL.md +4 -4
  2. package/.claude/skills/cicd-pipeline-qe-orchestrator/README.md +14 -11
  3. package/.claude/skills/skills-manifest.json +2 -2
  4. package/CHANGELOG.md +138 -0
  5. package/README.md +92 -214
  6. package/dist/agents/BaseAgent.d.ts +5 -1
  7. package/dist/agents/BaseAgent.d.ts.map +1 -1
  8. package/dist/agents/BaseAgent.js +32 -17
  9. package/dist/agents/BaseAgent.js.map +1 -1
  10. package/dist/agents/index.d.ts.map +1 -1
  11. package/dist/agents/index.js +5 -1
  12. package/dist/agents/index.js.map +1 -1
  13. package/dist/cli/commands/improve/index.d.ts +8 -1
  14. package/dist/cli/commands/improve/index.d.ts.map +1 -1
  15. package/dist/cli/commands/improve/index.js +18 -16
  16. package/dist/cli/commands/improve/index.js.map +1 -1
  17. package/dist/cli/commands/learn/index.d.ts +10 -2
  18. package/dist/cli/commands/learn/index.d.ts.map +1 -1
  19. package/dist/cli/commands/learn/index.js +99 -63
  20. package/dist/cli/commands/learn/index.js.map +1 -1
  21. package/dist/cli/commands/patterns/index.d.ts +8 -1
  22. package/dist/cli/commands/patterns/index.d.ts.map +1 -1
  23. package/dist/cli/commands/patterns/index.js +79 -45
  24. package/dist/cli/commands/patterns/index.js.map +1 -1
  25. package/dist/cli/commands/routing/index.d.ts +5 -0
  26. package/dist/cli/commands/routing/index.d.ts.map +1 -1
  27. package/dist/cli/commands/routing/index.js +11 -10
  28. package/dist/cli/commands/routing/index.js.map +1 -1
  29. package/dist/cli/init/agents.d.ts +1 -1
  30. package/dist/cli/init/agents.js +2 -2
  31. package/dist/cli/init/database-init.d.ts +7 -0
  32. package/dist/cli/init/database-init.d.ts.map +1 -1
  33. package/dist/cli/init/database-init.js +29 -48
  34. package/dist/cli/init/database-init.js.map +1 -1
  35. package/dist/core/di/AgentDependencies.d.ts +127 -0
  36. package/dist/core/di/AgentDependencies.d.ts.map +1 -0
  37. package/dist/core/di/AgentDependencies.js +251 -0
  38. package/dist/core/di/AgentDependencies.js.map +1 -0
  39. package/dist/core/di/DIContainer.d.ts +149 -0
  40. package/dist/core/di/DIContainer.d.ts.map +1 -0
  41. package/dist/core/di/DIContainer.js +333 -0
  42. package/dist/core/di/DIContainer.js.map +1 -0
  43. package/dist/core/di/index.d.ts +11 -0
  44. package/dist/core/di/index.d.ts.map +1 -0
  45. package/dist/core/di/index.js +22 -0
  46. package/dist/core/di/index.js.map +1 -0
  47. package/dist/core/index.d.ts +1 -0
  48. package/dist/core/index.d.ts.map +1 -1
  49. package/dist/core/index.js +11 -1
  50. package/dist/core/index.js.map +1 -1
  51. package/dist/core/memory/HNSWVectorMemory.d.ts +261 -0
  52. package/dist/core/memory/HNSWVectorMemory.d.ts.map +1 -0
  53. package/dist/core/memory/HNSWVectorMemory.js +647 -0
  54. package/dist/core/memory/HNSWVectorMemory.js.map +1 -0
  55. package/dist/core/memory/SwarmMemoryManager.d.ts +7 -0
  56. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  57. package/dist/core/memory/SwarmMemoryManager.js +9 -0
  58. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  59. package/dist/core/memory/index.d.ts +2 -0
  60. package/dist/core/memory/index.d.ts.map +1 -1
  61. package/dist/core/memory/index.js +11 -1
  62. package/dist/core/memory/index.js.map +1 -1
  63. package/dist/learning/ExperienceSharingProtocol.d.ts +243 -0
  64. package/dist/learning/ExperienceSharingProtocol.d.ts.map +1 -0
  65. package/dist/learning/ExperienceSharingProtocol.js +538 -0
  66. package/dist/learning/ExperienceSharingProtocol.js.map +1 -0
  67. package/dist/learning/ExplainableLearning.d.ts +191 -0
  68. package/dist/learning/ExplainableLearning.d.ts.map +1 -0
  69. package/dist/learning/ExplainableLearning.js +441 -0
  70. package/dist/learning/ExplainableLearning.js.map +1 -0
  71. package/dist/learning/GossipPatternSharingProtocol.d.ts +228 -0
  72. package/dist/learning/GossipPatternSharingProtocol.d.ts.map +1 -0
  73. package/dist/learning/GossipPatternSharingProtocol.js +590 -0
  74. package/dist/learning/GossipPatternSharingProtocol.js.map +1 -0
  75. package/dist/learning/LearningEngine.d.ts +104 -4
  76. package/dist/learning/LearningEngine.d.ts.map +1 -1
  77. package/dist/learning/LearningEngine.js +350 -16
  78. package/dist/learning/LearningEngine.js.map +1 -1
  79. package/dist/learning/PerformanceOptimizer.d.ts +268 -0
  80. package/dist/learning/PerformanceOptimizer.d.ts.map +1 -0
  81. package/dist/learning/PerformanceOptimizer.js +552 -0
  82. package/dist/learning/PerformanceOptimizer.js.map +1 -0
  83. package/dist/learning/PrivacyManager.d.ts +197 -0
  84. package/dist/learning/PrivacyManager.d.ts.map +1 -0
  85. package/dist/learning/PrivacyManager.js +551 -0
  86. package/dist/learning/PrivacyManager.js.map +1 -0
  87. package/dist/learning/QLearning.d.ts +38 -125
  88. package/dist/learning/QLearning.d.ts.map +1 -1
  89. package/dist/learning/QLearning.js +46 -267
  90. package/dist/learning/QLearning.js.map +1 -1
  91. package/dist/learning/QLearningLegacy.d.ts +154 -0
  92. package/dist/learning/QLearningLegacy.d.ts.map +1 -0
  93. package/dist/learning/QLearningLegacy.js +337 -0
  94. package/dist/learning/QLearningLegacy.js.map +1 -0
  95. package/dist/learning/TransferLearningManager.d.ts +212 -0
  96. package/dist/learning/TransferLearningManager.d.ts.map +1 -0
  97. package/dist/learning/TransferLearningManager.js +497 -0
  98. package/dist/learning/TransferLearningManager.js.map +1 -0
  99. package/dist/learning/algorithms/AbstractRLLearner.d.ts +162 -0
  100. package/dist/learning/algorithms/AbstractRLLearner.d.ts.map +1 -0
  101. package/dist/learning/algorithms/AbstractRLLearner.js +300 -0
  102. package/dist/learning/algorithms/AbstractRLLearner.js.map +1 -0
  103. package/dist/learning/algorithms/ActorCriticLearner.d.ts +201 -0
  104. package/dist/learning/algorithms/ActorCriticLearner.d.ts.map +1 -0
  105. package/dist/learning/algorithms/ActorCriticLearner.js +447 -0
  106. package/dist/learning/algorithms/ActorCriticLearner.js.map +1 -0
  107. package/dist/learning/algorithms/MAMLMetaLearner.d.ts +218 -0
  108. package/dist/learning/algorithms/MAMLMetaLearner.d.ts.map +1 -0
  109. package/dist/learning/algorithms/MAMLMetaLearner.js +532 -0
  110. package/dist/learning/algorithms/MAMLMetaLearner.js.map +1 -0
  111. package/dist/learning/algorithms/PPOLearner.d.ts +207 -0
  112. package/dist/learning/algorithms/PPOLearner.d.ts.map +1 -0
  113. package/dist/learning/algorithms/PPOLearner.js +490 -0
  114. package/dist/learning/algorithms/PPOLearner.js.map +1 -0
  115. package/dist/learning/algorithms/QLearning.d.ts +68 -0
  116. package/dist/learning/algorithms/QLearning.d.ts.map +1 -0
  117. package/dist/learning/algorithms/QLearning.js +116 -0
  118. package/dist/learning/algorithms/QLearning.js.map +1 -0
  119. package/dist/learning/algorithms/SARSALearner.d.ts +107 -0
  120. package/dist/learning/algorithms/SARSALearner.d.ts.map +1 -0
  121. package/dist/learning/algorithms/SARSALearner.js +252 -0
  122. package/dist/learning/algorithms/SARSALearner.js.map +1 -0
  123. package/dist/learning/algorithms/index.d.ts +32 -0
  124. package/dist/learning/algorithms/index.d.ts.map +1 -0
  125. package/dist/learning/algorithms/index.js +50 -0
  126. package/dist/learning/algorithms/index.js.map +1 -0
  127. package/dist/learning/index.d.ts +11 -0
  128. package/dist/learning/index.d.ts.map +1 -1
  129. package/dist/learning/index.js +31 -1
  130. package/dist/learning/index.js.map +1 -1
  131. package/dist/learning/types.d.ts +2 -0
  132. package/dist/learning/types.d.ts.map +1 -1
  133. package/dist/mcp/server-instructions.d.ts +1 -1
  134. package/dist/mcp/server-instructions.js +1 -1
  135. package/dist/memory/DistributedPatternLibrary.d.ts +159 -0
  136. package/dist/memory/DistributedPatternLibrary.d.ts.map +1 -0
  137. package/dist/memory/DistributedPatternLibrary.js +370 -0
  138. package/dist/memory/DistributedPatternLibrary.js.map +1 -0
  139. package/dist/memory/PatternQualityScorer.d.ts +169 -0
  140. package/dist/memory/PatternQualityScorer.d.ts.map +1 -0
  141. package/dist/memory/PatternQualityScorer.js +327 -0
  142. package/dist/memory/PatternQualityScorer.js.map +1 -0
  143. package/dist/memory/PatternReplicationService.d.ts +187 -0
  144. package/dist/memory/PatternReplicationService.d.ts.map +1 -0
  145. package/dist/memory/PatternReplicationService.js +392 -0
  146. package/dist/memory/PatternReplicationService.js.map +1 -0
  147. package/dist/providers/ClaudeProvider.d.ts +98 -0
  148. package/dist/providers/ClaudeProvider.d.ts.map +1 -0
  149. package/dist/providers/ClaudeProvider.js +418 -0
  150. package/dist/providers/ClaudeProvider.js.map +1 -0
  151. package/dist/providers/HybridRouter.d.ts +217 -0
  152. package/dist/providers/HybridRouter.d.ts.map +1 -0
  153. package/dist/providers/HybridRouter.js +679 -0
  154. package/dist/providers/HybridRouter.js.map +1 -0
  155. package/dist/providers/ILLMProvider.d.ts +287 -0
  156. package/dist/providers/ILLMProvider.d.ts.map +1 -0
  157. package/dist/providers/ILLMProvider.js +33 -0
  158. package/dist/providers/ILLMProvider.js.map +1 -0
  159. package/dist/providers/LLMProviderFactory.d.ts +154 -0
  160. package/dist/providers/LLMProviderFactory.d.ts.map +1 -0
  161. package/dist/providers/LLMProviderFactory.js +426 -0
  162. package/dist/providers/LLMProviderFactory.js.map +1 -0
  163. package/dist/providers/RuvllmProvider.d.ts +107 -0
  164. package/dist/providers/RuvllmProvider.d.ts.map +1 -0
  165. package/dist/providers/RuvllmProvider.js +417 -0
  166. package/dist/providers/RuvllmProvider.js.map +1 -0
  167. package/dist/providers/index.d.ts +32 -0
  168. package/dist/providers/index.d.ts.map +1 -0
  169. package/dist/providers/index.js +75 -0
  170. package/dist/providers/index.js.map +1 -0
  171. package/dist/telemetry/LearningTelemetry.d.ts +190 -0
  172. package/dist/telemetry/LearningTelemetry.d.ts.map +1 -0
  173. package/dist/telemetry/LearningTelemetry.js +403 -0
  174. package/dist/telemetry/LearningTelemetry.js.map +1 -0
  175. package/dist/telemetry/index.d.ts +1 -0
  176. package/dist/telemetry/index.d.ts.map +1 -1
  177. package/dist/telemetry/index.js +20 -2
  178. package/dist/telemetry/index.js.map +1 -1
  179. package/dist/telemetry/instrumentation/agent.d.ts +1 -1
  180. package/dist/telemetry/instrumentation/agent.js +1 -1
  181. package/dist/telemetry/instrumentation/index.d.ts +1 -1
  182. package/dist/telemetry/instrumentation/index.js +1 -1
  183. package/dist/utils/math.d.ts +11 -0
  184. package/dist/utils/math.d.ts.map +1 -0
  185. package/dist/utils/math.js +16 -0
  186. package/dist/utils/math.js.map +1 -0
  187. package/docs/reference/agents.md +1 -1
  188. package/docs/reference/skills.md +3 -3
  189. package/docs/reference/usage.md +4 -4
  190. package/package.json +1 -1
@@ -0,0 +1,538 @@
1
+ "use strict";
2
+ /**
3
+ * ExperienceSharingProtocol - Inter-Agent Learning Experience Sharing
4
+ *
5
+ * Enables agents to share learning experiences using gossip protocol
6
+ * for distributed, eventually consistent knowledge transfer.
7
+ *
8
+ * Features:
9
+ * - Gossip-based experience propagation
10
+ * - Experience compression and deduplication
11
+ * - Priority-based sharing (high-value experiences first)
12
+ * - Conflict resolution for overlapping experiences
13
+ * - Bandwidth-aware transmission
14
+ *
15
+ * @module learning/ExperienceSharingProtocol
16
+ * @version 1.0.0
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.ExperienceSharingProtocol = void 0;
20
+ const events_1 = require("events");
21
+ const Logger_1 = require("../utils/Logger");
22
+ /**
23
+ * ExperienceSharingProtocol - Gossip-based experience sharing between agents
24
+ *
25
+ * This protocol enables agents to learn from each other's experiences
26
+ * through decentralized, eventually consistent knowledge transfer.
27
+ *
28
+ * Key features:
29
+ * - Gossip protocol for scalable experience propagation
30
+ * - Vector clock-based conflict resolution
31
+ * - Priority-based experience selection
32
+ * - Automatic deduplication and expiration
33
+ * - Bandwidth throttling for network efficiency
34
+ */
35
+ class ExperienceSharingProtocol extends events_1.EventEmitter {
36
+ constructor(config) {
37
+ super();
38
+ // Default configuration values
39
+ this.DEFAULT_MAX_EXPERIENCES = 10000;
40
+ this.DEFAULT_EXPERIENCE_TTL = 86400000; // 24 hours
41
+ this.DEFAULT_GOSSIP_INTERVAL = 5000; // 5 seconds
42
+ this.DEFAULT_FANOUT = 3;
43
+ this.DEFAULT_MIN_SHARE_PRIORITY = 0.3;
44
+ this.DEFAULT_MAX_BANDWIDTH = 1024 * 1024; // 1 MB/s
45
+ this.logger = Logger_1.Logger.getInstance();
46
+ this.config = {
47
+ agentId: config.agentId,
48
+ maxExperiences: config.maxExperiences ?? this.DEFAULT_MAX_EXPERIENCES,
49
+ experienceTTL: config.experienceTTL ?? this.DEFAULT_EXPERIENCE_TTL,
50
+ gossipInterval: config.gossipInterval ?? this.DEFAULT_GOSSIP_INTERVAL,
51
+ fanout: config.fanout ?? this.DEFAULT_FANOUT,
52
+ minSharePriority: config.minSharePriority ?? this.DEFAULT_MIN_SHARE_PRIORITY,
53
+ enableCompression: config.enableCompression ?? true,
54
+ maxBandwidth: config.maxBandwidth ?? this.DEFAULT_MAX_BANDWIDTH
55
+ };
56
+ this.experiences = new Map();
57
+ this.peers = new Map();
58
+ this.vectorClock = { [config.agentId]: 0 };
59
+ this.seenExperiences = new Set();
60
+ this.isRunning = false;
61
+ this.stats = {
62
+ experiencesShared: 0,
63
+ experiencesReceived: 0,
64
+ duplicatesFiltered: 0,
65
+ expiredPurged: 0,
66
+ bytesTransferred: 0,
67
+ activeConnections: 0,
68
+ lastGossipRound: 0
69
+ };
70
+ this.logger.info('ExperienceSharingProtocol initialized', { agentId: config.agentId });
71
+ }
72
+ /**
73
+ * Start the experience sharing protocol
74
+ */
75
+ async start() {
76
+ if (this.isRunning) {
77
+ this.logger.warn('Experience sharing protocol already running');
78
+ return;
79
+ }
80
+ this.isRunning = true;
81
+ // Start gossip rounds
82
+ this.gossipTimer = setInterval(async () => {
83
+ await this.performGossipRound();
84
+ }, this.config.gossipInterval);
85
+ this.logger.info('Experience sharing protocol started');
86
+ }
87
+ /**
88
+ * Stop the experience sharing protocol
89
+ */
90
+ async stop() {
91
+ this.isRunning = false;
92
+ if (this.gossipTimer) {
93
+ clearInterval(this.gossipTimer);
94
+ this.gossipTimer = undefined;
95
+ }
96
+ this.logger.info('Experience sharing protocol stopped');
97
+ }
98
+ /**
99
+ * Register a peer for experience sharing
100
+ */
101
+ async registerPeer(peerId, agentType) {
102
+ if (peerId === this.config.agentId) {
103
+ return; // Don't register self as peer
104
+ }
105
+ const peer = {
106
+ peerId,
107
+ agentType,
108
+ vectorClock: { [peerId]: 0 },
109
+ lastSeen: Date.now(),
110
+ experienceCount: 0,
111
+ isActive: true
112
+ };
113
+ this.peers.set(peerId, peer);
114
+ this.stats.activeConnections = this.getActivePeerCount();
115
+ this.emit('peer_connected', { type: 'peer_connected', peerId });
116
+ this.logger.info(`Peer registered: ${peerId} (${agentType})`);
117
+ }
118
+ /**
119
+ * Unregister a peer
120
+ */
121
+ async unregisterPeer(peerId) {
122
+ const peer = this.peers.get(peerId);
123
+ if (peer) {
124
+ peer.isActive = false;
125
+ this.peers.delete(peerId);
126
+ this.stats.activeConnections = this.getActivePeerCount();
127
+ this.emit('peer_disconnected', { type: 'peer_disconnected', peerId });
128
+ this.logger.info(`Peer unregistered: ${peerId}`);
129
+ }
130
+ }
131
+ /**
132
+ * Share an experience from this agent
133
+ */
134
+ async shareExperience(experience, priority) {
135
+ // Increment vector clock for this agent
136
+ this.vectorClock[this.config.agentId] =
137
+ (this.vectorClock[this.config.agentId] || 0) + 1;
138
+ // Calculate experience value/priority if not provided
139
+ const calculatedPriority = priority ?? this.calculateExperiencePriority(experience);
140
+ // Create shared experience
141
+ const id = this.generateExperienceId(experience);
142
+ const checksum = this.calculateChecksum(experience);
143
+ const sharedExperience = {
144
+ id,
145
+ experience,
146
+ sourceAgentId: this.config.agentId,
147
+ vectorClock: { ...this.vectorClock },
148
+ priority: calculatedPriority,
149
+ shareCount: 0,
150
+ createdAt: Date.now(),
151
+ expiresAt: Date.now() + this.config.experienceTTL,
152
+ checksum
153
+ };
154
+ // Store locally
155
+ this.experiences.set(id, sharedExperience);
156
+ this.seenExperiences.add(id);
157
+ // Enforce max experiences limit
158
+ this.enforceExperienceLimit();
159
+ this.logger.debug(`Experience shared locally: ${id}`, { priority: calculatedPriority });
160
+ return id;
161
+ }
162
+ /**
163
+ * Receive an experience from another agent
164
+ */
165
+ async receiveExperience(sharedExperience) {
166
+ // Check if already seen (deduplication)
167
+ if (this.seenExperiences.has(sharedExperience.id)) {
168
+ this.stats.duplicatesFiltered++;
169
+ return false;
170
+ }
171
+ // Verify checksum
172
+ const calculatedChecksum = this.calculateChecksum(sharedExperience.experience);
173
+ if (calculatedChecksum !== sharedExperience.checksum) {
174
+ this.logger.warn(`Checksum mismatch for experience: ${sharedExperience.id}`);
175
+ return false;
176
+ }
177
+ // Check if expired
178
+ if (Date.now() > sharedExperience.expiresAt) {
179
+ this.logger.debug(`Ignoring expired experience: ${sharedExperience.id}`);
180
+ return false;
181
+ }
182
+ // Check for conflicts with existing experience
183
+ const existing = this.experiences.get(sharedExperience.id);
184
+ if (existing) {
185
+ const resolved = this.resolveConflict(existing, sharedExperience);
186
+ if (resolved === existing) {
187
+ return false; // Keep local version
188
+ }
189
+ }
190
+ // Store experience
191
+ this.experiences.set(sharedExperience.id, sharedExperience);
192
+ this.seenExperiences.add(sharedExperience.id);
193
+ // Merge vector clocks
194
+ this.mergeVectorClocks(sharedExperience.vectorClock);
195
+ // Update stats
196
+ this.stats.experiencesReceived++;
197
+ this.stats.bytesTransferred += JSON.stringify(sharedExperience).length;
198
+ // Emit event
199
+ this.emit('experience_received', {
200
+ type: 'experience_received',
201
+ experienceId: sharedExperience.id,
202
+ sourceAgentId: sharedExperience.sourceAgentId
203
+ });
204
+ // Enforce max experiences limit
205
+ this.enforceExperienceLimit();
206
+ this.logger.debug(`Experience received: ${sharedExperience.id}`, {
207
+ from: sharedExperience.sourceAgentId
208
+ });
209
+ return true;
210
+ }
211
+ /**
212
+ * Get experiences relevant to a specific state/context
213
+ */
214
+ async getRelevantExperiences(state, limit = 10) {
215
+ const now = Date.now();
216
+ const validExperiences = [];
217
+ for (const exp of this.experiences.values()) {
218
+ // Skip expired
219
+ if (now > exp.expiresAt) {
220
+ continue;
221
+ }
222
+ // Calculate relevance to the given state
223
+ const relevance = this.calculateStateRelevance(exp.experience.state, state);
224
+ if (relevance > 0.3) {
225
+ validExperiences.push(exp);
226
+ }
227
+ }
228
+ // Sort by priority * relevance
229
+ validExperiences.sort((a, b) => {
230
+ const relevanceA = this.calculateStateRelevance(a.experience.state, state);
231
+ const relevanceB = this.calculateStateRelevance(b.experience.state, state);
232
+ return (b.priority * relevanceB) - (a.priority * relevanceA);
233
+ });
234
+ return validExperiences.slice(0, limit);
235
+ }
236
+ /**
237
+ * Get all experiences from a specific agent
238
+ */
239
+ async getAgentExperiences(agentId) {
240
+ const result = [];
241
+ for (const exp of this.experiences.values()) {
242
+ if (exp.sourceAgentId === agentId && Date.now() <= exp.expiresAt) {
243
+ result.push(exp);
244
+ }
245
+ }
246
+ return result;
247
+ }
248
+ /**
249
+ * Get sharing statistics
250
+ */
251
+ getStats() {
252
+ return { ...this.stats };
253
+ }
254
+ /**
255
+ * Get connected peers
256
+ */
257
+ getPeers() {
258
+ return Array.from(this.peers.values()).filter(p => p.isActive);
259
+ }
260
+ /**
261
+ * Get experience count
262
+ */
263
+ getExperienceCount() {
264
+ return this.experiences.size;
265
+ }
266
+ /**
267
+ * Clear all experiences
268
+ */
269
+ clear() {
270
+ this.experiences.clear();
271
+ this.seenExperiences.clear();
272
+ this.vectorClock = { [this.config.agentId]: 0 };
273
+ this.stats = {
274
+ experiencesShared: 0,
275
+ experiencesReceived: 0,
276
+ duplicatesFiltered: 0,
277
+ expiredPurged: 0,
278
+ bytesTransferred: 0,
279
+ activeConnections: this.getActivePeerCount(),
280
+ lastGossipRound: 0
281
+ };
282
+ this.logger.info('Experience sharing protocol cleared');
283
+ }
284
+ /**
285
+ * Export experiences for persistence
286
+ */
287
+ exportExperiences() {
288
+ return Array.from(this.experiences.values());
289
+ }
290
+ /**
291
+ * Import experiences from persistence
292
+ */
293
+ async importExperiences(experiences) {
294
+ let importedCount = 0;
295
+ for (const exp of experiences) {
296
+ if (await this.receiveExperience(exp)) {
297
+ importedCount++;
298
+ }
299
+ }
300
+ this.logger.info(`Imported ${importedCount} experiences`);
301
+ return importedCount;
302
+ }
303
+ /**
304
+ * Perform a gossip round
305
+ */
306
+ async performGossipRound() {
307
+ if (!this.isRunning)
308
+ return;
309
+ const activePeers = this.getPeers();
310
+ if (activePeers.length === 0)
311
+ return;
312
+ // Select random peers up to fanout
313
+ const selectedPeers = this.selectRandomPeers(activePeers, this.config.fanout);
314
+ // Get high-priority experiences to share
315
+ const experiencesToShare = this.selectExperiencesToShare();
316
+ if (experiencesToShare.length === 0)
317
+ return;
318
+ // Simulate sharing with each peer
319
+ for (const peer of selectedPeers) {
320
+ await this.gossipWithPeer(peer, experiencesToShare);
321
+ }
322
+ this.stats.lastGossipRound = Date.now();
323
+ this.stats.experiencesShared += experiencesToShare.length * selectedPeers.length;
324
+ this.logger.debug(`Gossip round completed`, {
325
+ peers: selectedPeers.length,
326
+ experiences: experiencesToShare.length
327
+ });
328
+ }
329
+ /**
330
+ * Gossip with a specific peer
331
+ */
332
+ async gossipWithPeer(peer, experiences) {
333
+ // Update peer's last seen
334
+ peer.lastSeen = Date.now();
335
+ // Emit share event
336
+ this.emit('experience_shared', {
337
+ type: 'experience_shared',
338
+ experienceId: experiences.map(e => e.id).join(','),
339
+ targetPeers: [peer.peerId]
340
+ });
341
+ // Increment share count for each experience
342
+ for (const exp of experiences) {
343
+ exp.shareCount++;
344
+ }
345
+ }
346
+ /**
347
+ * Select experiences to share based on priority and share count
348
+ */
349
+ selectExperiencesToShare() {
350
+ const now = Date.now();
351
+ const candidates = [];
352
+ for (const exp of this.experiences.values()) {
353
+ // Skip expired
354
+ if (now > exp.expiresAt)
355
+ continue;
356
+ // Skip low priority
357
+ if (exp.priority < this.config.minSharePriority)
358
+ continue;
359
+ // Prioritize less-shared experiences
360
+ candidates.push(exp);
361
+ }
362
+ // Sort by priority / (shareCount + 1) to balance priority and distribution
363
+ candidates.sort((a, b) => {
364
+ const scoreA = a.priority / (a.shareCount + 1);
365
+ const scoreB = b.priority / (b.shareCount + 1);
366
+ return scoreB - scoreA;
367
+ });
368
+ // Return top experiences within bandwidth limit
369
+ const maxExperiences = Math.min(10, candidates.length);
370
+ return candidates.slice(0, maxExperiences);
371
+ }
372
+ /**
373
+ * Select random peers for gossip
374
+ */
375
+ selectRandomPeers(peers, count) {
376
+ const shuffled = [...peers].sort(() => Math.random() - 0.5);
377
+ return shuffled.slice(0, Math.min(count, shuffled.length));
378
+ }
379
+ /**
380
+ * Calculate experience priority based on reward and novelty
381
+ */
382
+ calculateExperiencePriority(experience) {
383
+ // Factors: reward magnitude, complexity, success/failure
384
+ const rewardFactor = Math.abs(experience.reward) / 10; // Normalize reward
385
+ const complexityFactor = experience.state.taskComplexity;
386
+ const successFactor = experience.reward > 0 ? 0.3 : 0.5; // Failures are more valuable for learning
387
+ return Math.min(1, (rewardFactor + complexityFactor + successFactor) / 3);
388
+ }
389
+ /**
390
+ * Calculate relevance between two states
391
+ */
392
+ calculateStateRelevance(state1, state2) {
393
+ // Compare complexity
394
+ const complexityDiff = Math.abs(state1.taskComplexity - state2.taskComplexity);
395
+ // Compare capabilities overlap
396
+ const caps1 = new Set(state1.requiredCapabilities);
397
+ const caps2 = new Set(state2.requiredCapabilities);
398
+ const intersection = [...caps1].filter(x => caps2.has(x)).length;
399
+ const union = new Set([...caps1, ...caps2]).size;
400
+ const capsOverlap = union > 0 ? intersection / union : 1;
401
+ // Compare resources
402
+ const resourceDiff = Math.abs(state1.availableResources - state2.availableResources);
403
+ // Weighted relevance score
404
+ return ((1 - complexityDiff) * 0.3 +
405
+ capsOverlap * 0.5 +
406
+ (1 - resourceDiff) * 0.2);
407
+ }
408
+ /**
409
+ * Resolve conflict between two experiences
410
+ */
411
+ resolveConflict(local, remote) {
412
+ // Compare vector clocks
413
+ const comparison = this.compareVectorClocks(local.vectorClock, remote.vectorClock);
414
+ if (comparison === 1) {
415
+ // Local is newer
416
+ this.emit('conflict_resolved', {
417
+ type: 'conflict_resolved',
418
+ experienceId: local.id,
419
+ resolution: 'local'
420
+ });
421
+ return local;
422
+ }
423
+ else if (comparison === -1) {
424
+ // Remote is newer
425
+ this.emit('conflict_resolved', {
426
+ type: 'conflict_resolved',
427
+ experienceId: remote.id,
428
+ resolution: 'remote'
429
+ });
430
+ return remote;
431
+ }
432
+ else {
433
+ // Concurrent - use higher priority as tiebreaker
434
+ const winner = local.priority >= remote.priority ? local : remote;
435
+ this.emit('conflict_resolved', {
436
+ type: 'conflict_resolved',
437
+ experienceId: winner.id,
438
+ resolution: winner === local ? 'local' : 'remote'
439
+ });
440
+ return winner;
441
+ }
442
+ }
443
+ /**
444
+ * Compare two vector clocks
445
+ */
446
+ compareVectorClocks(v1, v2) {
447
+ const allAgents = new Set([...Object.keys(v1), ...Object.keys(v2)]);
448
+ let v1Greater = false;
449
+ let v2Greater = false;
450
+ for (const agent of allAgents) {
451
+ const t1 = v1[agent] || 0;
452
+ const t2 = v2[agent] || 0;
453
+ if (t1 > t2)
454
+ v1Greater = true;
455
+ if (t2 > t1)
456
+ v2Greater = true;
457
+ }
458
+ if (v1Greater && !v2Greater)
459
+ return 1;
460
+ if (v2Greater && !v1Greater)
461
+ return -1;
462
+ return 0; // Concurrent
463
+ }
464
+ /**
465
+ * Merge remote vector clock into local
466
+ */
467
+ mergeVectorClocks(remoteClock) {
468
+ for (const [agent, timestamp] of Object.entries(remoteClock)) {
469
+ this.vectorClock[agent] = Math.max(this.vectorClock[agent] || 0, timestamp);
470
+ }
471
+ }
472
+ /**
473
+ * Generate unique experience ID
474
+ */
475
+ generateExperienceId(experience) {
476
+ // Handle missing or invalid timestamp - use current time as fallback
477
+ const timestamp = experience.timestamp instanceof Date
478
+ ? experience.timestamp.getTime()
479
+ : (typeof experience.timestamp === 'number' ? experience.timestamp : Date.now());
480
+ const content = `${experience.taskId || 'unknown'}:${experience.agentId || 'unknown'}:${timestamp}`;
481
+ return this.hashString(content);
482
+ }
483
+ /**
484
+ * Calculate checksum for experience
485
+ */
486
+ calculateChecksum(experience) {
487
+ return this.hashString(JSON.stringify(experience));
488
+ }
489
+ /**
490
+ * Simple hash function for IDs and checksums
491
+ */
492
+ hashString(str) {
493
+ let hash = 0;
494
+ for (let i = 0; i < str.length; i++) {
495
+ const char = str.charCodeAt(i);
496
+ hash = ((hash << 5) - hash) + char;
497
+ hash = hash & hash; // Convert to 32-bit integer
498
+ }
499
+ return Math.abs(hash).toString(16).padStart(8, '0');
500
+ }
501
+ /**
502
+ * Enforce maximum experience limit
503
+ */
504
+ enforceExperienceLimit() {
505
+ if (this.experiences.size <= this.config.maxExperiences) {
506
+ return;
507
+ }
508
+ // Remove expired first
509
+ const now = Date.now();
510
+ const expiredIds = [];
511
+ for (const [id, exp] of this.experiences.entries()) {
512
+ if (now > exp.expiresAt) {
513
+ expiredIds.push(id);
514
+ }
515
+ }
516
+ for (const id of expiredIds) {
517
+ this.experiences.delete(id);
518
+ this.stats.expiredPurged++;
519
+ }
520
+ // If still over limit, remove lowest priority
521
+ if (this.experiences.size > this.config.maxExperiences) {
522
+ const sorted = Array.from(this.experiences.entries())
523
+ .sort((a, b) => a[1].priority - b[1].priority);
524
+ const toRemove = sorted.slice(0, this.experiences.size - this.config.maxExperiences);
525
+ for (const [id] of toRemove) {
526
+ this.experiences.delete(id);
527
+ }
528
+ }
529
+ }
530
+ /**
531
+ * Get count of active peers
532
+ */
533
+ getActivePeerCount() {
534
+ return Array.from(this.peers.values()).filter(p => p.isActive).length;
535
+ }
536
+ }
537
+ exports.ExperienceSharingProtocol = ExperienceSharingProtocol;
538
+ //# sourceMappingURL=ExperienceSharingProtocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExperienceSharingProtocol.js","sourceRoot":"","sources":["../../src/learning/ExperienceSharingProtocol.ts"],"names":[],"mappings":"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"}