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,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TransferLearningManager - Issue #118 Task 2.3
|
|
3
|
+
*
|
|
4
|
+
* Enables knowledge transfer between different QE domains (e.g., unit testing → integration testing).
|
|
5
|
+
* Supports domain similarity calculation, adjustable transfer coefficients, fine-tuning, and metrics tracking.
|
|
6
|
+
*
|
|
7
|
+
* Domain Examples:
|
|
8
|
+
* - Unit testing → Integration testing
|
|
9
|
+
* - API testing → Contract testing
|
|
10
|
+
* - Performance testing → Load testing
|
|
11
|
+
* - Security scanning → Vulnerability detection
|
|
12
|
+
*/
|
|
13
|
+
import { SwarmMemoryManager } from '../core/memory/SwarmMemoryManager';
|
|
14
|
+
import { TaskExperience } from './types';
|
|
15
|
+
/**
|
|
16
|
+
* QE Domain definitions
|
|
17
|
+
*/
|
|
18
|
+
export type QEDomain = 'unit-testing' | 'integration-testing' | 'api-testing' | 'contract-testing' | 'performance-testing' | 'load-testing' | 'security-scanning' | 'vulnerability-detection' | 'e2e-testing' | 'regression-testing';
|
|
19
|
+
/**
|
|
20
|
+
* Domain feature vector for similarity calculation
|
|
21
|
+
*/
|
|
22
|
+
export interface DomainFeatures {
|
|
23
|
+
domain: QEDomain;
|
|
24
|
+
complexity: number;
|
|
25
|
+
isolation: number;
|
|
26
|
+
stateful: number;
|
|
27
|
+
externalDependencies: number;
|
|
28
|
+
executionTime: number;
|
|
29
|
+
parallelizable: number;
|
|
30
|
+
deterministic: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Transfer mapping between source and target domains
|
|
34
|
+
*/
|
|
35
|
+
export interface TransferMapping {
|
|
36
|
+
id: string;
|
|
37
|
+
sourceDomain: QEDomain;
|
|
38
|
+
targetDomain: QEDomain;
|
|
39
|
+
similarity: number;
|
|
40
|
+
transferCoefficient: number;
|
|
41
|
+
experiencesTransferred: number;
|
|
42
|
+
successRate: number;
|
|
43
|
+
createdAt: Date;
|
|
44
|
+
lastTransferAt?: Date;
|
|
45
|
+
metadata?: Record<string, any>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Transfer learning configuration
|
|
49
|
+
*/
|
|
50
|
+
export interface TransferConfig {
|
|
51
|
+
enabled: boolean;
|
|
52
|
+
minSimilarity: number;
|
|
53
|
+
defaultTransferCoefficient: number;
|
|
54
|
+
adaptiveCoefficient: boolean;
|
|
55
|
+
maxTransferExperiences: number;
|
|
56
|
+
fineTuningEnabled: boolean;
|
|
57
|
+
fineTuningIterations: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Transfer metrics for tracking performance
|
|
61
|
+
*/
|
|
62
|
+
export interface TransferMetrics {
|
|
63
|
+
mappingId: string;
|
|
64
|
+
sourceDomain: QEDomain;
|
|
65
|
+
targetDomain: QEDomain;
|
|
66
|
+
totalTransfers: number;
|
|
67
|
+
successfulTransfers: number;
|
|
68
|
+
failedTransfers: number;
|
|
69
|
+
avgPerformanceGain: number;
|
|
70
|
+
transferEfficiency: number;
|
|
71
|
+
lastUpdated: Date;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Fine-tuning result
|
|
75
|
+
*/
|
|
76
|
+
export interface FineTuningResult {
|
|
77
|
+
domain: QEDomain;
|
|
78
|
+
initialPerformance: number;
|
|
79
|
+
finalPerformance: number;
|
|
80
|
+
improvement: number;
|
|
81
|
+
iterations: number;
|
|
82
|
+
experiencesUsed: number;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* TransferLearningManager - Manages knowledge transfer between QE domains
|
|
86
|
+
*/
|
|
87
|
+
export declare class TransferLearningManager {
|
|
88
|
+
private readonly logger;
|
|
89
|
+
private readonly memoryStore;
|
|
90
|
+
private config;
|
|
91
|
+
private mappings;
|
|
92
|
+
private metrics;
|
|
93
|
+
constructor(memoryStore: SwarmMemoryManager, config?: Partial<TransferConfig>);
|
|
94
|
+
/**
|
|
95
|
+
* Initialize the transfer learning manager
|
|
96
|
+
*/
|
|
97
|
+
initialize(): Promise<void>;
|
|
98
|
+
/**
|
|
99
|
+
* Calculate similarity between two QE domains
|
|
100
|
+
* Uses cosine similarity on domain feature vectors
|
|
101
|
+
*
|
|
102
|
+
* @param sourceDomain - Source domain
|
|
103
|
+
* @param targetDomain - Target domain
|
|
104
|
+
* @returns Similarity score (0-1)
|
|
105
|
+
*/
|
|
106
|
+
calculateDomainSimilarity(sourceDomain: QEDomain, targetDomain: QEDomain): number;
|
|
107
|
+
/**
|
|
108
|
+
* Transfer knowledge from source domain to target domain
|
|
109
|
+
*
|
|
110
|
+
* @param sourceDomain - Source domain with existing knowledge
|
|
111
|
+
* @param targetDomain - Target domain to receive knowledge
|
|
112
|
+
* @param sourceExperiences - Experiences from source domain
|
|
113
|
+
* @param transferCoefficient - Optional override for transfer coefficient (0-1)
|
|
114
|
+
* @returns Transfer mapping with results
|
|
115
|
+
*/
|
|
116
|
+
transferKnowledge(sourceDomain: QEDomain, targetDomain: QEDomain, sourceExperiences: TaskExperience[], transferCoefficient?: number): Promise<TransferMapping>;
|
|
117
|
+
/**
|
|
118
|
+
* Fine-tune transferred knowledge for target domain
|
|
119
|
+
* Adjusts transferred knowledge based on target domain feedback
|
|
120
|
+
*
|
|
121
|
+
* @param targetDomain - Target domain to fine-tune
|
|
122
|
+
* @param targetExperiences - New experiences from target domain
|
|
123
|
+
* @returns Fine-tuning result
|
|
124
|
+
*/
|
|
125
|
+
fineTuneTransferredKnowledge(targetDomain: QEDomain, targetExperiences: TaskExperience[]): Promise<FineTuningResult>;
|
|
126
|
+
/**
|
|
127
|
+
* Adjust transfer coefficient based on transfer success
|
|
128
|
+
* Implements adaptive transfer learning
|
|
129
|
+
*
|
|
130
|
+
* @param mappingId - Transfer mapping ID
|
|
131
|
+
* @param success - Whether the transfer was successful
|
|
132
|
+
*/
|
|
133
|
+
adjustTransferCoefficient(mappingId: string, success: boolean): Promise<void>;
|
|
134
|
+
/**
|
|
135
|
+
* Get transfer metrics for a specific mapping
|
|
136
|
+
*
|
|
137
|
+
* @param sourceDomain - Source domain
|
|
138
|
+
* @param targetDomain - Target domain
|
|
139
|
+
* @returns Transfer metrics or undefined
|
|
140
|
+
*/
|
|
141
|
+
getTransferMetrics(sourceDomain: QEDomain, targetDomain: QEDomain): TransferMetrics | undefined;
|
|
142
|
+
/**
|
|
143
|
+
* Get all transfer mappings
|
|
144
|
+
*/
|
|
145
|
+
getAllMappings(): TransferMapping[];
|
|
146
|
+
/**
|
|
147
|
+
* Get all transfer metrics
|
|
148
|
+
*/
|
|
149
|
+
getAllMetrics(): TransferMetrics[];
|
|
150
|
+
/**
|
|
151
|
+
* Get domain feature vector
|
|
152
|
+
*/
|
|
153
|
+
private getDomainFeatures;
|
|
154
|
+
/**
|
|
155
|
+
* Calculate dot product of two feature vectors
|
|
156
|
+
*/
|
|
157
|
+
private calculateDotProduct;
|
|
158
|
+
/**
|
|
159
|
+
* Calculate magnitude of feature vector
|
|
160
|
+
*/
|
|
161
|
+
private calculateMagnitude;
|
|
162
|
+
/**
|
|
163
|
+
* Get existing mapping between domains
|
|
164
|
+
*/
|
|
165
|
+
private getMapping;
|
|
166
|
+
/**
|
|
167
|
+
* Create new transfer mapping
|
|
168
|
+
*/
|
|
169
|
+
private createMapping;
|
|
170
|
+
/**
|
|
171
|
+
* Update existing transfer mapping
|
|
172
|
+
*/
|
|
173
|
+
private updateMapping;
|
|
174
|
+
/**
|
|
175
|
+
* Apply transfer coefficient to experiences
|
|
176
|
+
*/
|
|
177
|
+
private applyTransferCoefficient;
|
|
178
|
+
/**
|
|
179
|
+
* Store transferred experiences for target domain
|
|
180
|
+
*/
|
|
181
|
+
private storeTransferredExperiences;
|
|
182
|
+
/**
|
|
183
|
+
* Get transferred experiences for target domain
|
|
184
|
+
*/
|
|
185
|
+
private getTransferredExperiences;
|
|
186
|
+
/**
|
|
187
|
+
* Calculate average reward from experiences
|
|
188
|
+
*/
|
|
189
|
+
private calculateAverageReward;
|
|
190
|
+
/**
|
|
191
|
+
* Blend transferred and target experiences
|
|
192
|
+
* Higher blendRatio = more weight on target experiences
|
|
193
|
+
*/
|
|
194
|
+
private blendExperiences;
|
|
195
|
+
/**
|
|
196
|
+
* Update transfer metrics
|
|
197
|
+
*/
|
|
198
|
+
private updateTransferMetrics;
|
|
199
|
+
/**
|
|
200
|
+
* Load mappings from database
|
|
201
|
+
*/
|
|
202
|
+
private loadMappings;
|
|
203
|
+
/**
|
|
204
|
+
* Load metrics from database
|
|
205
|
+
*/
|
|
206
|
+
private loadMetrics;
|
|
207
|
+
/**
|
|
208
|
+
* Cleanup resources
|
|
209
|
+
*/
|
|
210
|
+
dispose(): void;
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=TransferLearningManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransferLearningManager.d.ts","sourceRoot":"","sources":["../../src/learning/TransferLearningManager.ts"],"names":[],"mappings":"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"}
|