agentic-qe 2.2.0 → 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.
- 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 +15 -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 +1 -1
|
@@ -0,0 +1,497 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* TransferLearningManager - Issue #118 Task 2.3
|
|
4
|
+
*
|
|
5
|
+
* Enables knowledge transfer between different QE domains (e.g., unit testing → integration testing).
|
|
6
|
+
* Supports domain similarity calculation, adjustable transfer coefficients, fine-tuning, and metrics tracking.
|
|
7
|
+
*
|
|
8
|
+
* Domain Examples:
|
|
9
|
+
* - Unit testing → Integration testing
|
|
10
|
+
* - API testing → Contract testing
|
|
11
|
+
* - Performance testing → Load testing
|
|
12
|
+
* - Security scanning → Vulnerability detection
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.TransferLearningManager = void 0;
|
|
16
|
+
const Logger_1 = require("../utils/Logger");
|
|
17
|
+
const uuid_1 = require("uuid");
|
|
18
|
+
/**
|
|
19
|
+
* Default transfer configuration
|
|
20
|
+
*/
|
|
21
|
+
const DEFAULT_TRANSFER_CONFIG = {
|
|
22
|
+
enabled: true,
|
|
23
|
+
minSimilarity: 0.3,
|
|
24
|
+
defaultTransferCoefficient: 0.5,
|
|
25
|
+
adaptiveCoefficient: true,
|
|
26
|
+
maxTransferExperiences: 100,
|
|
27
|
+
fineTuningEnabled: true,
|
|
28
|
+
fineTuningIterations: 10
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Domain feature definitions
|
|
32
|
+
*/
|
|
33
|
+
const DOMAIN_FEATURES = {
|
|
34
|
+
'unit-testing': {
|
|
35
|
+
complexity: 0.3,
|
|
36
|
+
isolation: 0.9,
|
|
37
|
+
stateful: 0.1,
|
|
38
|
+
externalDependencies: 0.1,
|
|
39
|
+
executionTime: 0.1,
|
|
40
|
+
parallelizable: 0.9,
|
|
41
|
+
deterministic: 0.9
|
|
42
|
+
},
|
|
43
|
+
'integration-testing': {
|
|
44
|
+
complexity: 0.6,
|
|
45
|
+
isolation: 0.4,
|
|
46
|
+
stateful: 0.7,
|
|
47
|
+
externalDependencies: 0.6,
|
|
48
|
+
executionTime: 0.5,
|
|
49
|
+
parallelizable: 0.5,
|
|
50
|
+
deterministic: 0.7
|
|
51
|
+
},
|
|
52
|
+
'api-testing': {
|
|
53
|
+
complexity: 0.5,
|
|
54
|
+
isolation: 0.5,
|
|
55
|
+
stateful: 0.5,
|
|
56
|
+
externalDependencies: 0.7,
|
|
57
|
+
executionTime: 0.4,
|
|
58
|
+
parallelizable: 0.7,
|
|
59
|
+
deterministic: 0.8
|
|
60
|
+
},
|
|
61
|
+
'contract-testing': {
|
|
62
|
+
complexity: 0.5,
|
|
63
|
+
isolation: 0.6,
|
|
64
|
+
stateful: 0.4,
|
|
65
|
+
externalDependencies: 0.6,
|
|
66
|
+
executionTime: 0.3,
|
|
67
|
+
parallelizable: 0.8,
|
|
68
|
+
deterministic: 0.9
|
|
69
|
+
},
|
|
70
|
+
'performance-testing': {
|
|
71
|
+
complexity: 0.7,
|
|
72
|
+
isolation: 0.3,
|
|
73
|
+
stateful: 0.6,
|
|
74
|
+
externalDependencies: 0.8,
|
|
75
|
+
executionTime: 0.8,
|
|
76
|
+
parallelizable: 0.6,
|
|
77
|
+
deterministic: 0.5
|
|
78
|
+
},
|
|
79
|
+
'load-testing': {
|
|
80
|
+
complexity: 0.8,
|
|
81
|
+
isolation: 0.2,
|
|
82
|
+
stateful: 0.7,
|
|
83
|
+
externalDependencies: 0.9,
|
|
84
|
+
executionTime: 0.9,
|
|
85
|
+
parallelizable: 0.4,
|
|
86
|
+
deterministic: 0.4
|
|
87
|
+
},
|
|
88
|
+
'security-scanning': {
|
|
89
|
+
complexity: 0.6,
|
|
90
|
+
isolation: 0.5,
|
|
91
|
+
stateful: 0.4,
|
|
92
|
+
externalDependencies: 0.5,
|
|
93
|
+
executionTime: 0.6,
|
|
94
|
+
parallelizable: 0.6,
|
|
95
|
+
deterministic: 0.7
|
|
96
|
+
},
|
|
97
|
+
'vulnerability-detection': {
|
|
98
|
+
complexity: 0.7,
|
|
99
|
+
isolation: 0.4,
|
|
100
|
+
stateful: 0.5,
|
|
101
|
+
externalDependencies: 0.6,
|
|
102
|
+
executionTime: 0.7,
|
|
103
|
+
parallelizable: 0.5,
|
|
104
|
+
deterministic: 0.6
|
|
105
|
+
},
|
|
106
|
+
'e2e-testing': {
|
|
107
|
+
complexity: 0.9,
|
|
108
|
+
isolation: 0.1,
|
|
109
|
+
stateful: 0.9,
|
|
110
|
+
externalDependencies: 0.9,
|
|
111
|
+
executionTime: 0.9,
|
|
112
|
+
parallelizable: 0.2,
|
|
113
|
+
deterministic: 0.5
|
|
114
|
+
},
|
|
115
|
+
'regression-testing': {
|
|
116
|
+
complexity: 0.6,
|
|
117
|
+
isolation: 0.5,
|
|
118
|
+
stateful: 0.6,
|
|
119
|
+
externalDependencies: 0.5,
|
|
120
|
+
executionTime: 0.6,
|
|
121
|
+
parallelizable: 0.6,
|
|
122
|
+
deterministic: 0.8
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* TransferLearningManager - Manages knowledge transfer between QE domains
|
|
127
|
+
*/
|
|
128
|
+
class TransferLearningManager {
|
|
129
|
+
constructor(memoryStore, config = {}) {
|
|
130
|
+
this.logger = Logger_1.Logger.getInstance();
|
|
131
|
+
this.memoryStore = memoryStore;
|
|
132
|
+
this.config = { ...DEFAULT_TRANSFER_CONFIG, ...config };
|
|
133
|
+
this.mappings = new Map();
|
|
134
|
+
this.metrics = new Map();
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Initialize the transfer learning manager
|
|
138
|
+
*/
|
|
139
|
+
async initialize() {
|
|
140
|
+
this.logger.info('Initializing TransferLearningManager');
|
|
141
|
+
// Load existing mappings from database
|
|
142
|
+
await this.loadMappings();
|
|
143
|
+
// Load existing metrics from database
|
|
144
|
+
await this.loadMetrics();
|
|
145
|
+
this.logger.info(`TransferLearningManager initialized with ${this.mappings.size} mappings`);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Calculate similarity between two QE domains
|
|
149
|
+
* Uses cosine similarity on domain feature vectors
|
|
150
|
+
*
|
|
151
|
+
* @param sourceDomain - Source domain
|
|
152
|
+
* @param targetDomain - Target domain
|
|
153
|
+
* @returns Similarity score (0-1)
|
|
154
|
+
*/
|
|
155
|
+
calculateDomainSimilarity(sourceDomain, targetDomain) {
|
|
156
|
+
const sourceFeatures = this.getDomainFeatures(sourceDomain);
|
|
157
|
+
const targetFeatures = this.getDomainFeatures(targetDomain);
|
|
158
|
+
// Calculate cosine similarity
|
|
159
|
+
const dotProduct = this.calculateDotProduct(sourceFeatures, targetFeatures);
|
|
160
|
+
const sourceMagnitude = this.calculateMagnitude(sourceFeatures);
|
|
161
|
+
const targetMagnitude = this.calculateMagnitude(targetFeatures);
|
|
162
|
+
const similarity = dotProduct / (sourceMagnitude * targetMagnitude);
|
|
163
|
+
this.logger.debug(`Domain similarity: ${sourceDomain} → ${targetDomain} = ${similarity.toFixed(3)}`);
|
|
164
|
+
return Math.max(0, Math.min(1, similarity));
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Transfer knowledge from source domain to target domain
|
|
168
|
+
*
|
|
169
|
+
* @param sourceDomain - Source domain with existing knowledge
|
|
170
|
+
* @param targetDomain - Target domain to receive knowledge
|
|
171
|
+
* @param sourceExperiences - Experiences from source domain
|
|
172
|
+
* @param transferCoefficient - Optional override for transfer coefficient (0-1)
|
|
173
|
+
* @returns Transfer mapping with results
|
|
174
|
+
*/
|
|
175
|
+
async transferKnowledge(sourceDomain, targetDomain, sourceExperiences, transferCoefficient) {
|
|
176
|
+
if (!this.config.enabled) {
|
|
177
|
+
throw new Error('Transfer learning is disabled');
|
|
178
|
+
}
|
|
179
|
+
// Calculate domain similarity
|
|
180
|
+
const similarity = this.calculateDomainSimilarity(sourceDomain, targetDomain);
|
|
181
|
+
if (similarity < this.config.minSimilarity) {
|
|
182
|
+
throw new Error(`Domain similarity too low: ${similarity.toFixed(3)} < ${this.config.minSimilarity}`);
|
|
183
|
+
}
|
|
184
|
+
// Get or create transfer mapping
|
|
185
|
+
let mapping = this.getMapping(sourceDomain, targetDomain);
|
|
186
|
+
if (!mapping) {
|
|
187
|
+
mapping = await this.createMapping(sourceDomain, targetDomain, similarity, transferCoefficient ?? this.config.defaultTransferCoefficient);
|
|
188
|
+
}
|
|
189
|
+
// Limit experiences to transfer
|
|
190
|
+
const experiencesToTransfer = sourceExperiences.slice(0, this.config.maxTransferExperiences);
|
|
191
|
+
// Apply transfer coefficient to adjust experience rewards
|
|
192
|
+
const transferredExperiences = this.applyTransferCoefficient(experiencesToTransfer, mapping.transferCoefficient);
|
|
193
|
+
// Store transferred experiences in target domain namespace
|
|
194
|
+
await this.storeTransferredExperiences(targetDomain, transferredExperiences);
|
|
195
|
+
// Update mapping statistics
|
|
196
|
+
mapping.experiencesTransferred += transferredExperiences.length;
|
|
197
|
+
mapping.lastTransferAt = new Date();
|
|
198
|
+
await this.updateMapping(mapping);
|
|
199
|
+
// Update metrics
|
|
200
|
+
await this.updateTransferMetrics(mapping.id, true);
|
|
201
|
+
this.logger.info(`Transferred ${transferredExperiences.length} experiences from ${sourceDomain} to ${targetDomain} ` +
|
|
202
|
+
`(similarity: ${similarity.toFixed(3)}, coefficient: ${mapping.transferCoefficient.toFixed(3)})`);
|
|
203
|
+
return mapping;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Fine-tune transferred knowledge for target domain
|
|
207
|
+
* Adjusts transferred knowledge based on target domain feedback
|
|
208
|
+
*
|
|
209
|
+
* @param targetDomain - Target domain to fine-tune
|
|
210
|
+
* @param targetExperiences - New experiences from target domain
|
|
211
|
+
* @returns Fine-tuning result
|
|
212
|
+
*/
|
|
213
|
+
async fineTuneTransferredKnowledge(targetDomain, targetExperiences) {
|
|
214
|
+
if (!this.config.fineTuningEnabled) {
|
|
215
|
+
throw new Error('Fine-tuning is disabled');
|
|
216
|
+
}
|
|
217
|
+
this.logger.info(`Fine-tuning transferred knowledge for ${targetDomain}`);
|
|
218
|
+
// Calculate initial performance (baseline from transferred experiences)
|
|
219
|
+
const transferredExperiences = await this.getTransferredExperiences(targetDomain);
|
|
220
|
+
const initialPerformance = this.calculateAverageReward(transferredExperiences);
|
|
221
|
+
// Perform iterative fine-tuning
|
|
222
|
+
let currentPerformance = initialPerformance;
|
|
223
|
+
let iterationCount = 0;
|
|
224
|
+
for (let i = 0; i < this.config.fineTuningIterations; i++) {
|
|
225
|
+
// Blend transferred and target experiences
|
|
226
|
+
const blendRatio = (i + 1) / this.config.fineTuningIterations;
|
|
227
|
+
const blendedExperiences = this.blendExperiences(transferredExperiences, targetExperiences, blendRatio);
|
|
228
|
+
// Recalculate performance
|
|
229
|
+
const newPerformance = this.calculateAverageReward(blendedExperiences);
|
|
230
|
+
// Early stopping if performance converges
|
|
231
|
+
if (Math.abs(newPerformance - currentPerformance) < 0.01) {
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
currentPerformance = newPerformance;
|
|
235
|
+
iterationCount++;
|
|
236
|
+
}
|
|
237
|
+
const improvement = ((currentPerformance - initialPerformance) / Math.abs(initialPerformance)) * 100;
|
|
238
|
+
const result = {
|
|
239
|
+
domain: targetDomain,
|
|
240
|
+
initialPerformance,
|
|
241
|
+
finalPerformance: currentPerformance,
|
|
242
|
+
improvement,
|
|
243
|
+
iterations: iterationCount,
|
|
244
|
+
experiencesUsed: transferredExperiences.length + targetExperiences.length
|
|
245
|
+
};
|
|
246
|
+
this.logger.info(`Fine-tuning completed for ${targetDomain}: ` +
|
|
247
|
+
`${initialPerformance.toFixed(3)} → ${currentPerformance.toFixed(3)} ` +
|
|
248
|
+
`(+${improvement.toFixed(1)}%) in ${iterationCount} iterations`);
|
|
249
|
+
return result;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Adjust transfer coefficient based on transfer success
|
|
253
|
+
* Implements adaptive transfer learning
|
|
254
|
+
*
|
|
255
|
+
* @param mappingId - Transfer mapping ID
|
|
256
|
+
* @param success - Whether the transfer was successful
|
|
257
|
+
*/
|
|
258
|
+
async adjustTransferCoefficient(mappingId, success) {
|
|
259
|
+
if (!this.config.adaptiveCoefficient) {
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
const mapping = this.mappings.get(mappingId);
|
|
263
|
+
if (!mapping) {
|
|
264
|
+
throw new Error(`Transfer mapping not found: ${mappingId}`);
|
|
265
|
+
}
|
|
266
|
+
// Adaptive adjustment: increase on success, decrease on failure
|
|
267
|
+
const adjustmentRate = 0.05;
|
|
268
|
+
const oldCoefficient = mapping.transferCoefficient;
|
|
269
|
+
if (success) {
|
|
270
|
+
mapping.transferCoefficient = Math.min(1.0, mapping.transferCoefficient + adjustmentRate);
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
mapping.transferCoefficient = Math.max(0.1, mapping.transferCoefficient - adjustmentRate);
|
|
274
|
+
}
|
|
275
|
+
await this.updateMapping(mapping);
|
|
276
|
+
this.logger.debug(`Adjusted transfer coefficient for ${mapping.sourceDomain} → ${mapping.targetDomain}: ` +
|
|
277
|
+
`${oldCoefficient.toFixed(3)} → ${mapping.transferCoefficient.toFixed(3)}`);
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Get transfer metrics for a specific mapping
|
|
281
|
+
*
|
|
282
|
+
* @param sourceDomain - Source domain
|
|
283
|
+
* @param targetDomain - Target domain
|
|
284
|
+
* @returns Transfer metrics or undefined
|
|
285
|
+
*/
|
|
286
|
+
getTransferMetrics(sourceDomain, targetDomain) {
|
|
287
|
+
const mapping = this.getMapping(sourceDomain, targetDomain);
|
|
288
|
+
if (!mapping) {
|
|
289
|
+
return undefined;
|
|
290
|
+
}
|
|
291
|
+
return this.metrics.get(mapping.id);
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Get all transfer mappings
|
|
295
|
+
*/
|
|
296
|
+
getAllMappings() {
|
|
297
|
+
return Array.from(this.mappings.values());
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Get all transfer metrics
|
|
301
|
+
*/
|
|
302
|
+
getAllMetrics() {
|
|
303
|
+
return Array.from(this.metrics.values());
|
|
304
|
+
}
|
|
305
|
+
// ============================================================================
|
|
306
|
+
// Private Helper Methods
|
|
307
|
+
// ============================================================================
|
|
308
|
+
/**
|
|
309
|
+
* Get domain feature vector
|
|
310
|
+
*/
|
|
311
|
+
getDomainFeatures(domain) {
|
|
312
|
+
const features = DOMAIN_FEATURES[domain];
|
|
313
|
+
if (!features) {
|
|
314
|
+
throw new Error(`Unknown domain: ${domain}`);
|
|
315
|
+
}
|
|
316
|
+
return { domain, ...features };
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Calculate dot product of two feature vectors
|
|
320
|
+
*/
|
|
321
|
+
calculateDotProduct(a, b) {
|
|
322
|
+
return (a.complexity * b.complexity +
|
|
323
|
+
a.isolation * b.isolation +
|
|
324
|
+
a.stateful * b.stateful +
|
|
325
|
+
a.externalDependencies * b.externalDependencies +
|
|
326
|
+
a.executionTime * b.executionTime +
|
|
327
|
+
a.parallelizable * b.parallelizable +
|
|
328
|
+
a.deterministic * b.deterministic);
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Calculate magnitude of feature vector
|
|
332
|
+
*/
|
|
333
|
+
calculateMagnitude(features) {
|
|
334
|
+
return Math.sqrt(features.complexity ** 2 +
|
|
335
|
+
features.isolation ** 2 +
|
|
336
|
+
features.stateful ** 2 +
|
|
337
|
+
features.externalDependencies ** 2 +
|
|
338
|
+
features.executionTime ** 2 +
|
|
339
|
+
features.parallelizable ** 2 +
|
|
340
|
+
features.deterministic ** 2);
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Get existing mapping between domains
|
|
344
|
+
*/
|
|
345
|
+
getMapping(sourceDomain, targetDomain) {
|
|
346
|
+
for (const mapping of this.mappings.values()) {
|
|
347
|
+
if (mapping.sourceDomain === sourceDomain && mapping.targetDomain === targetDomain) {
|
|
348
|
+
return mapping;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
return undefined;
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Create new transfer mapping
|
|
355
|
+
*/
|
|
356
|
+
async createMapping(sourceDomain, targetDomain, similarity, transferCoefficient) {
|
|
357
|
+
const mapping = {
|
|
358
|
+
id: (0, uuid_1.v4)(),
|
|
359
|
+
sourceDomain,
|
|
360
|
+
targetDomain,
|
|
361
|
+
similarity,
|
|
362
|
+
transferCoefficient,
|
|
363
|
+
experiencesTransferred: 0,
|
|
364
|
+
successRate: 0,
|
|
365
|
+
createdAt: new Date()
|
|
366
|
+
};
|
|
367
|
+
this.mappings.set(mapping.id, mapping);
|
|
368
|
+
// Persist to database
|
|
369
|
+
await this.memoryStore.store(`transfer-learning/mappings/${mapping.id}`, mapping, { partition: 'learning' });
|
|
370
|
+
// Initialize metrics
|
|
371
|
+
const metrics = {
|
|
372
|
+
mappingId: mapping.id,
|
|
373
|
+
sourceDomain,
|
|
374
|
+
targetDomain,
|
|
375
|
+
totalTransfers: 0,
|
|
376
|
+
successfulTransfers: 0,
|
|
377
|
+
failedTransfers: 0,
|
|
378
|
+
avgPerformanceGain: 0,
|
|
379
|
+
transferEfficiency: 0,
|
|
380
|
+
lastUpdated: new Date()
|
|
381
|
+
};
|
|
382
|
+
this.metrics.set(mapping.id, metrics);
|
|
383
|
+
await this.memoryStore.store(`transfer-learning/metrics/${mapping.id}`, metrics, { partition: 'learning' });
|
|
384
|
+
return mapping;
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Update existing transfer mapping
|
|
388
|
+
*/
|
|
389
|
+
async updateMapping(mapping) {
|
|
390
|
+
this.mappings.set(mapping.id, mapping);
|
|
391
|
+
await this.memoryStore.store(`transfer-learning/mappings/${mapping.id}`, mapping, { partition: 'learning' });
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Apply transfer coefficient to experiences
|
|
395
|
+
*/
|
|
396
|
+
applyTransferCoefficient(experiences, coefficient) {
|
|
397
|
+
return experiences.map(exp => ({
|
|
398
|
+
...exp,
|
|
399
|
+
reward: exp.reward * coefficient
|
|
400
|
+
}));
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Store transferred experiences for target domain
|
|
404
|
+
*/
|
|
405
|
+
async storeTransferredExperiences(targetDomain, experiences) {
|
|
406
|
+
await this.memoryStore.store(`transfer-learning/experiences/${targetDomain}`, experiences, { partition: 'learning' });
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Get transferred experiences for target domain
|
|
410
|
+
*/
|
|
411
|
+
async getTransferredExperiences(targetDomain) {
|
|
412
|
+
const experiences = await this.memoryStore.retrieve(`transfer-learning/experiences/${targetDomain}`, { partition: 'learning' });
|
|
413
|
+
return experiences || [];
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Calculate average reward from experiences
|
|
417
|
+
*/
|
|
418
|
+
calculateAverageReward(experiences) {
|
|
419
|
+
if (experiences.length === 0) {
|
|
420
|
+
return 0;
|
|
421
|
+
}
|
|
422
|
+
const totalReward = experiences.reduce((sum, exp) => sum + exp.reward, 0);
|
|
423
|
+
return totalReward / experiences.length;
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Blend transferred and target experiences
|
|
427
|
+
* Higher blendRatio = more weight on target experiences
|
|
428
|
+
*/
|
|
429
|
+
blendExperiences(transferredExperiences, targetExperiences, blendRatio) {
|
|
430
|
+
const transferWeight = 1 - blendRatio;
|
|
431
|
+
const targetWeight = blendRatio;
|
|
432
|
+
const weightedTransferred = transferredExperiences.map(exp => ({
|
|
433
|
+
...exp,
|
|
434
|
+
reward: exp.reward * transferWeight
|
|
435
|
+
}));
|
|
436
|
+
const weightedTarget = targetExperiences.map(exp => ({
|
|
437
|
+
...exp,
|
|
438
|
+
reward: exp.reward * targetWeight
|
|
439
|
+
}));
|
|
440
|
+
return [...weightedTransferred, ...weightedTarget];
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Update transfer metrics
|
|
444
|
+
*/
|
|
445
|
+
async updateTransferMetrics(mappingId, success) {
|
|
446
|
+
const metrics = this.metrics.get(mappingId);
|
|
447
|
+
if (!metrics) {
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
450
|
+
metrics.totalTransfers++;
|
|
451
|
+
if (success) {
|
|
452
|
+
metrics.successfulTransfers++;
|
|
453
|
+
}
|
|
454
|
+
else {
|
|
455
|
+
metrics.failedTransfers++;
|
|
456
|
+
}
|
|
457
|
+
metrics.transferEfficiency = metrics.successfulTransfers / metrics.totalTransfers;
|
|
458
|
+
metrics.lastUpdated = new Date();
|
|
459
|
+
this.metrics.set(mappingId, metrics);
|
|
460
|
+
await this.memoryStore.store(`transfer-learning/metrics/${mappingId}`, metrics, { partition: 'learning' });
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Load mappings from database
|
|
464
|
+
*/
|
|
465
|
+
async loadMappings() {
|
|
466
|
+
try {
|
|
467
|
+
// Query all mappings from memory store
|
|
468
|
+
// Note: This is a simplified version - in production, you'd query by pattern
|
|
469
|
+
this.logger.debug('Loading transfer mappings from database');
|
|
470
|
+
}
|
|
471
|
+
catch (error) {
|
|
472
|
+
this.logger.warn('Failed to load transfer mappings:', error);
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Load metrics from database
|
|
477
|
+
*/
|
|
478
|
+
async loadMetrics() {
|
|
479
|
+
try {
|
|
480
|
+
// Query all metrics from memory store
|
|
481
|
+
this.logger.debug('Loading transfer metrics from database');
|
|
482
|
+
}
|
|
483
|
+
catch (error) {
|
|
484
|
+
this.logger.warn('Failed to load transfer metrics:', error);
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Cleanup resources
|
|
489
|
+
*/
|
|
490
|
+
dispose() {
|
|
491
|
+
this.mappings.clear();
|
|
492
|
+
this.metrics.clear();
|
|
493
|
+
this.logger.info('TransferLearningManager disposed');
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
exports.TransferLearningManager = TransferLearningManager;
|
|
497
|
+
//# sourceMappingURL=TransferLearningManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransferLearningManager.js","sourceRoot":"","sources":["../../src/learning/TransferLearningManager.ts"],"names":[],"mappings":"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"}
|