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 @@
1
+ {"version":3,"file":"MAMLMetaLearner.d.ts","sourceRoot":"","sources":["../../../src/learning/algorithms/MAMLMetaLearner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,532 @@
1
+ "use strict";
2
+ /**
3
+ * MAMLMetaLearner - Model-Agnostic Meta-Learning for QE Agents
4
+ *
5
+ * Implements MAML-style meta-learning that enables agents to "learn how to learn".
6
+ * Agents can quickly adapt to new testing domains with just 5-10 examples.
7
+ *
8
+ * Key Concepts:
9
+ * - Inner Loop: Fast adaptation to new task with few gradient steps (5-10 examples)
10
+ * - Outer Loop: Learn initialization parameters that enable fast adaptation
11
+ * - Meta-Learning: After seeing few examples of new test pattern, agent performs well
12
+ *
13
+ * Algorithm:
14
+ * 1. Initialize meta-parameters θ (Q-table initialization)
15
+ * 2. For each task Ti in task distribution:
16
+ * a. Sample K examples from Ti (support set)
17
+ * b. Adapt: θ'i = θ - α∇Loss(θ, support) [inner loop]
18
+ * c. Evaluate on query set from Ti
19
+ * 3. Update meta-parameters: θ = θ - β∇Loss(θ', query) [outer loop]
20
+ * 4. Result: θ is optimized for fast adaptation to new tasks
21
+ *
22
+ * Use Cases:
23
+ * - New testing framework adoption (5-10 examples → proficient)
24
+ * - New project domain (few examples → effective testing strategy)
25
+ * - API testing → UI testing transfer learning
26
+ */
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.MAMLMetaLearner = void 0;
29
+ exports.createDefaultMAMLConfig = createDefaultMAMLConfig;
30
+ const AbstractRLLearner_1 = require("./AbstractRLLearner");
31
+ /**
32
+ * Default MAML configuration
33
+ */
34
+ const DEFAULT_MAML_CONFIG = {
35
+ // Base RL config
36
+ learningRate: 0.01, // Outer loop meta-learning rate (β)
37
+ discountFactor: 0.95,
38
+ explorationRate: 0.2, // Lower exploration for meta-learning
39
+ explorationDecay: 0.99,
40
+ minExplorationRate: 0.05,
41
+ useExperienceReplay: false, // MAML uses episodic learning
42
+ replayBufferSize: 1000,
43
+ batchSize: 10, // Task batch size
44
+ // MAML-specific
45
+ innerLearningRate: 0.1, // α - higher for fast adaptation
46
+ innerSteps: 5, // Few-shot learning (5 gradient steps)
47
+ metaLearningRate: 0.01, // β - meta-parameter update
48
+ minTaskExamples: 5, // Support set size (few-shot)
49
+ maxTaskExamples: 10,
50
+ taskBatchSize: 5, // Meta-train on 5 tasks per batch
51
+ firstOrderApproximation: true // Faster computation
52
+ };
53
+ /**
54
+ * MAMLMetaLearner - Model-Agnostic Meta-Learning for Fast Adaptation
55
+ *
56
+ * Learns an initialization of Q-values that enables rapid adaptation to new
57
+ * testing tasks with minimal examples (5-10 shots).
58
+ *
59
+ * Example:
60
+ * - Agent trained on Jest, Mocha, Jasmine unit testing
61
+ * - Sees 5-10 examples of Vitest tests
62
+ * - Immediately generates high-quality Vitest tests
63
+ *
64
+ * Meta-Learning Process:
65
+ * 1. Sample batch of tasks (different testing scenarios)
66
+ * 2. For each task:
67
+ * - Adapt Q-table with support set (inner loop)
68
+ * - Evaluate adapted Q-table on query set
69
+ * 3. Compute meta-gradient from all tasks
70
+ * 4. Update meta-parameters (Q-table initialization)
71
+ */
72
+ class MAMLMetaLearner extends AbstractRLLearner_1.AbstractRLLearner {
73
+ constructor(config = {}) {
74
+ const fullConfig = { ...DEFAULT_MAML_CONFIG, ...config };
75
+ super(fullConfig);
76
+ this.mamlConfig = fullConfig;
77
+ // Meta-parameters (learned Q-table initialization)
78
+ this.metaQTable = new Map();
79
+ // Initialize with base Q-table
80
+ this.copyQTable(this.qTable, this.metaQTable);
81
+ // Task organization
82
+ this.taskBuffer = new Map();
83
+ this.metaEpisodes = [];
84
+ this.metaStepCount = 0;
85
+ this.logger.info('MAMLMetaLearner initialized for fast adaptation', {
86
+ innerLearningRate: fullConfig.innerLearningRate,
87
+ innerSteps: fullConfig.innerSteps,
88
+ metaLearningRate: fullConfig.metaLearningRate,
89
+ supportSetSize: fullConfig.minTaskExamples
90
+ });
91
+ }
92
+ /**
93
+ * Update Q-value using base algorithm (delegates to wrapped algorithm if available)
94
+ * For MAML, this is called during inner loop adaptation
95
+ */
96
+ update(experience, nextAction) {
97
+ if (this.baseAlgorithm) {
98
+ this.baseAlgorithm.update(experience, nextAction);
99
+ }
100
+ else {
101
+ // Default: Q-Learning update
102
+ this.qLearningUpdate(experience);
103
+ }
104
+ // Buffer experience by task type for meta-learning
105
+ this.bufferExperience(experience);
106
+ this.stepCount++;
107
+ }
108
+ /**
109
+ * Q-Learning update rule (default inner loop algorithm)
110
+ */
111
+ qLearningUpdate(experience) {
112
+ const stateKey = this.encodeState(experience.state);
113
+ const actionKey = this.encodeAction(experience.action);
114
+ const nextStateKey = this.encodeState(experience.nextState);
115
+ // Get current Q-value
116
+ const currentQ = this.getQValueRaw(stateKey, actionKey);
117
+ // Get max Q-value for next state
118
+ const nextStateActions = this.qTable.get(nextStateKey);
119
+ const maxNextQ = nextStateActions && nextStateActions.size > 0
120
+ ? Math.max(...Array.from(nextStateActions.values()).map(qv => qv.value))
121
+ : 0;
122
+ // Q-learning update
123
+ const tdTarget = experience.reward + this.config.discountFactor * maxNextQ;
124
+ const tdError = tdTarget - currentQ;
125
+ const newQ = currentQ + this.config.learningRate * tdError;
126
+ this.setQValue(stateKey, actionKey, newQ);
127
+ }
128
+ /**
129
+ * Buffer experience by task type for meta-learning
130
+ */
131
+ bufferExperience(experience) {
132
+ const taskType = experience.taskType;
133
+ if (!this.taskBuffer.has(taskType)) {
134
+ this.taskBuffer.set(taskType, []);
135
+ }
136
+ const buffer = this.taskBuffer.get(taskType);
137
+ buffer.push(experience);
138
+ // Limit buffer size per task type
139
+ const maxBufferSize = this.mamlConfig.maxTaskExamples * 10;
140
+ if (buffer.length > maxBufferSize) {
141
+ buffer.shift(); // Remove oldest
142
+ }
143
+ }
144
+ /**
145
+ * Perform meta-learning update (outer loop)
146
+ * Learns Q-table initialization that enables fast adaptation
147
+ *
148
+ * This should be called periodically after collecting enough task examples
149
+ */
150
+ async performMetaUpdate() {
151
+ // Sample batch of tasks from buffer
152
+ const tasks = this.sampleMetaTasks();
153
+ if (tasks.length < this.mamlConfig.taskBatchSize) {
154
+ this.logger.debug(`Not enough tasks for meta-update (${tasks.length}/${this.mamlConfig.taskBatchSize})`);
155
+ return null;
156
+ }
157
+ // Meta-gradients accumulator
158
+ const metaGradients = new Map();
159
+ let totalPreAdaptLoss = 0;
160
+ let totalPostAdaptLoss = 0;
161
+ // For each task in the batch
162
+ for (const task of tasks) {
163
+ // 1. Clone meta-parameters for this task
164
+ const taskQTable = this.cloneQTable(this.metaQTable);
165
+ // 2. Inner loop: Adapt to task using support set
166
+ const preAdaptLoss = this.evaluateLoss(taskQTable, task.supportSet);
167
+ for (let step = 0; step < this.mamlConfig.innerSteps; step++) {
168
+ this.adaptToTask(taskQTable, task.supportSet, this.mamlConfig.innerLearningRate);
169
+ }
170
+ // 3. Evaluate adapted parameters on query set
171
+ const postAdaptLoss = this.evaluateLoss(taskQTable, task.querySet);
172
+ totalPreAdaptLoss += preAdaptLoss;
173
+ totalPostAdaptLoss += postAdaptLoss;
174
+ // 4. Compute meta-gradients
175
+ if (this.mamlConfig.firstOrderApproximation) {
176
+ // First-order MAML: ignore second derivatives
177
+ this.computeFirstOrderGradients(metaGradients, taskQTable, task.querySet);
178
+ }
179
+ else {
180
+ // Full MAML: compute through inner loop
181
+ this.computeSecondOrderGradients(metaGradients, this.metaQTable, task);
182
+ }
183
+ }
184
+ // 5. Update meta-parameters using accumulated gradients
185
+ this.updateMetaParameters(metaGradients, tasks.length);
186
+ // 6. Copy meta-parameters to main Q-table
187
+ this.copyQTable(this.metaQTable, this.qTable);
188
+ this.metaStepCount++;
189
+ // Create meta-episode record
190
+ const metaEpisode = {
191
+ episodeId: `meta-${this.metaStepCount}-${Date.now()}`,
192
+ tasks,
193
+ preAdaptationLoss: totalPreAdaptLoss / tasks.length,
194
+ postAdaptationLoss: totalPostAdaptLoss / tasks.length,
195
+ metaLoss: totalPostAdaptLoss / tasks.length,
196
+ improvement: ((totalPreAdaptLoss - totalPostAdaptLoss) / totalPreAdaptLoss) * 100,
197
+ timestamp: new Date()
198
+ };
199
+ this.metaEpisodes.push(metaEpisode);
200
+ this.logger.info('Meta-update completed', {
201
+ episode: metaEpisode.episodeId,
202
+ tasks: tasks.length,
203
+ preAdaptLoss: metaEpisode.preAdaptationLoss.toFixed(4),
204
+ postAdaptLoss: metaEpisode.postAdaptationLoss.toFixed(4),
205
+ improvement: `${metaEpisode.improvement.toFixed(2)}%`
206
+ });
207
+ return metaEpisode;
208
+ }
209
+ /**
210
+ * Sample batch of meta-tasks from task buffer
211
+ * Each task contains support set (for adaptation) and query set (for evaluation)
212
+ */
213
+ sampleMetaTasks() {
214
+ const tasks = [];
215
+ const taskTypes = Array.from(this.taskBuffer.keys());
216
+ // Sample up to taskBatchSize tasks
217
+ const numTasks = Math.min(this.mamlConfig.taskBatchSize, taskTypes.length);
218
+ for (let i = 0; i < numTasks; i++) {
219
+ const taskType = taskTypes[i % taskTypes.length];
220
+ const experiences = this.taskBuffer.get(taskType) || [];
221
+ if (experiences.length < this.mamlConfig.minTaskExamples * 2) {
222
+ continue; // Not enough examples for support + query sets
223
+ }
224
+ // Shuffle experiences
225
+ const shuffled = [...experiences].sort(() => Math.random() - 0.5);
226
+ // Split into support and query sets
227
+ const supportSize = this.mamlConfig.minTaskExamples;
228
+ const supportSet = shuffled.slice(0, supportSize);
229
+ const querySet = shuffled.slice(supportSize, supportSize * 2);
230
+ tasks.push({
231
+ id: `task-${taskType}-${Date.now()}`,
232
+ taskType,
233
+ supportSet,
234
+ querySet
235
+ });
236
+ }
237
+ return tasks;
238
+ }
239
+ /**
240
+ * Adapt Q-table to a specific task using support set (inner loop)
241
+ */
242
+ adaptToTask(qTable, supportSet, learningRate) {
243
+ for (const experience of supportSet) {
244
+ const stateKey = this.encodeState(experience.state);
245
+ const actionKey = this.encodeAction(experience.action);
246
+ const nextStateKey = this.encodeState(experience.nextState);
247
+ // Get current Q-value from task-specific table
248
+ const currentQ = this.getQValueFromTable(qTable, stateKey, actionKey);
249
+ // Get max Q-value for next state
250
+ const nextStateActions = qTable.get(nextStateKey);
251
+ const maxNextQ = nextStateActions && nextStateActions.size > 0
252
+ ? Math.max(...Array.from(nextStateActions.values()).map(qv => qv.value))
253
+ : 0;
254
+ // Q-learning update with inner learning rate
255
+ const tdTarget = experience.reward + this.config.discountFactor * maxNextQ;
256
+ const tdError = tdTarget - currentQ;
257
+ const newQ = currentQ + learningRate * tdError;
258
+ // Update task-specific Q-table
259
+ this.setQValueInTable(qTable, stateKey, actionKey, newQ);
260
+ }
261
+ }
262
+ /**
263
+ * Evaluate loss (TD error) on a set of experiences
264
+ */
265
+ evaluateLoss(qTable, experiences) {
266
+ let totalLoss = 0;
267
+ for (const experience of experiences) {
268
+ const stateKey = this.encodeState(experience.state);
269
+ const actionKey = this.encodeAction(experience.action);
270
+ const nextStateKey = this.encodeState(experience.nextState);
271
+ const currentQ = this.getQValueFromTable(qTable, stateKey, actionKey);
272
+ const nextStateActions = qTable.get(nextStateKey);
273
+ const maxNextQ = nextStateActions && nextStateActions.size > 0
274
+ ? Math.max(...Array.from(nextStateActions.values()).map(qv => qv.value))
275
+ : 0;
276
+ const tdTarget = experience.reward + this.config.discountFactor * maxNextQ;
277
+ const tdError = tdTarget - currentQ;
278
+ totalLoss += tdError * tdError; // Squared TD error
279
+ }
280
+ return experiences.length > 0 ? totalLoss / experiences.length : 0;
281
+ }
282
+ /**
283
+ * Compute first-order meta-gradients (FOMAML)
284
+ * Faster approximation that ignores second-order derivatives
285
+ */
286
+ computeFirstOrderGradients(metaGradients, adaptedQTable, querySet) {
287
+ for (const experience of querySet) {
288
+ const stateKey = this.encodeState(experience.state);
289
+ const actionKey = this.encodeAction(experience.action);
290
+ const nextStateKey = this.encodeState(experience.nextState);
291
+ const currentQ = this.getQValueFromTable(adaptedQTable, stateKey, actionKey);
292
+ const nextStateActions = adaptedQTable.get(nextStateKey);
293
+ const maxNextQ = nextStateActions && nextStateActions.size > 0
294
+ ? Math.max(...Array.from(nextStateActions.values()).map(qv => qv.value))
295
+ : 0;
296
+ const tdTarget = experience.reward + this.config.discountFactor * maxNextQ;
297
+ const tdError = tdTarget - currentQ;
298
+ // Gradient: ∂Loss/∂Q = -2 * TD-error
299
+ const gradient = -2 * tdError;
300
+ // Accumulate gradient
301
+ if (!metaGradients.has(stateKey)) {
302
+ metaGradients.set(stateKey, new Map());
303
+ }
304
+ const stateGradients = metaGradients.get(stateKey);
305
+ const currentGradient = stateGradients.get(actionKey) || 0;
306
+ stateGradients.set(actionKey, currentGradient + gradient);
307
+ }
308
+ }
309
+ /**
310
+ * Compute second-order meta-gradients (Full MAML)
311
+ * More accurate but computationally expensive
312
+ */
313
+ computeSecondOrderGradients(metaGradients, metaQTable, task) {
314
+ // For simplicity, use first-order approximation
315
+ // Full second-order computation requires computing Hessians
316
+ const adaptedQTable = this.cloneQTable(metaQTable);
317
+ for (let step = 0; step < this.mamlConfig.innerSteps; step++) {
318
+ this.adaptToTask(adaptedQTable, task.supportSet, this.mamlConfig.innerLearningRate);
319
+ }
320
+ this.computeFirstOrderGradients(metaGradients, adaptedQTable, task.querySet);
321
+ }
322
+ /**
323
+ * Update meta-parameters using accumulated gradients
324
+ */
325
+ updateMetaParameters(metaGradients, numTasks) {
326
+ for (const [stateKey, stateGradients] of metaGradients.entries()) {
327
+ for (const [actionKey, gradient] of stateGradients.entries()) {
328
+ const currentQ = this.getQValueFromTable(this.metaQTable, stateKey, actionKey);
329
+ // Average gradient over tasks
330
+ const avgGradient = gradient / numTasks;
331
+ // Meta-gradient descent
332
+ const newQ = currentQ - this.mamlConfig.metaLearningRate * avgGradient;
333
+ this.setQValueInTable(this.metaQTable, stateKey, actionKey, newQ);
334
+ }
335
+ }
336
+ }
337
+ /**
338
+ * Fast adaptation to new task (few-shot learning)
339
+ * Given 5-10 examples, quickly adapt Q-table for new testing domain
340
+ *
341
+ * @param examples Few examples of new task (5-10)
342
+ * @returns Adapted Q-table
343
+ */
344
+ async fastAdapt(examples) {
345
+ if (examples.length < this.mamlConfig.minTaskExamples) {
346
+ this.logger.warn(`Few-shot adaptation requires at least ${this.mamlConfig.minTaskExamples} examples, got ${examples.length}`);
347
+ }
348
+ // Clone meta-parameters
349
+ const adaptedQTable = this.cloneQTable(this.metaQTable);
350
+ // Perform inner loop adaptation
351
+ for (let step = 0; step < this.mamlConfig.innerSteps; step++) {
352
+ this.adaptToTask(adaptedQTable, examples, this.mamlConfig.innerLearningRate);
353
+ }
354
+ this.logger.info(`Fast adaptation completed with ${examples.length} examples in ${this.mamlConfig.innerSteps} steps`);
355
+ return adaptedQTable;
356
+ }
357
+ /**
358
+ * Get Q-value from specific Q-table (helper)
359
+ */
360
+ getQValueFromTable(qTable, stateKey, actionKey) {
361
+ const stateActions = qTable.get(stateKey);
362
+ if (!stateActions)
363
+ return 0;
364
+ const qValue = stateActions.get(actionKey);
365
+ return qValue?.value ?? 0;
366
+ }
367
+ /**
368
+ * Set Q-value in specific Q-table (helper)
369
+ */
370
+ setQValueInTable(qTable, stateKey, actionKey, value) {
371
+ if (!qTable.has(stateKey)) {
372
+ qTable.set(stateKey, new Map());
373
+ }
374
+ const stateActions = qTable.get(stateKey);
375
+ const currentQValue = stateActions.get(actionKey);
376
+ stateActions.set(actionKey, {
377
+ state: stateKey,
378
+ action: actionKey,
379
+ value,
380
+ updateCount: (currentQValue?.updateCount ?? 0) + 1,
381
+ lastUpdated: Date.now()
382
+ });
383
+ }
384
+ /**
385
+ * Get Q-value (raw, without creating entry)
386
+ */
387
+ getQValueRaw(stateKey, actionKey) {
388
+ return this.getQValueFromTable(this.qTable, stateKey, actionKey);
389
+ }
390
+ /**
391
+ * Clone Q-table
392
+ */
393
+ cloneQTable(source) {
394
+ const cloned = new Map();
395
+ for (const [stateKey, stateActions] of source.entries()) {
396
+ const clonedActions = new Map();
397
+ for (const [actionKey, qValue] of stateActions.entries()) {
398
+ clonedActions.set(actionKey, { ...qValue });
399
+ }
400
+ cloned.set(stateKey, clonedActions);
401
+ }
402
+ return cloned;
403
+ }
404
+ /**
405
+ * Copy Q-table from source to destination
406
+ */
407
+ copyQTable(source, destination) {
408
+ destination.clear();
409
+ for (const [stateKey, stateActions] of source.entries()) {
410
+ const copiedActions = new Map();
411
+ for (const [actionKey, qValue] of stateActions.entries()) {
412
+ copiedActions.set(actionKey, { ...qValue });
413
+ }
414
+ destination.set(stateKey, copiedActions);
415
+ }
416
+ }
417
+ /**
418
+ * Get meta-learning statistics
419
+ */
420
+ getMetaStatistics() {
421
+ const recentEpisodes = this.metaEpisodes.slice(-10);
422
+ return {
423
+ metaSteps: this.metaStepCount,
424
+ metaEpisodes: this.metaEpisodes.length,
425
+ avgPreAdaptLoss: recentEpisodes.length > 0
426
+ ? recentEpisodes.reduce((sum, e) => sum + e.preAdaptationLoss, 0) / recentEpisodes.length
427
+ : 0,
428
+ avgPostAdaptLoss: recentEpisodes.length > 0
429
+ ? recentEpisodes.reduce((sum, e) => sum + e.postAdaptationLoss, 0) / recentEpisodes.length
430
+ : 0,
431
+ avgImprovement: recentEpisodes.length > 0
432
+ ? recentEpisodes.reduce((sum, e) => sum + e.improvement, 0) / recentEpisodes.length
433
+ : 0,
434
+ taskTypes: this.taskBuffer.size,
435
+ bufferedExperiences: Array.from(this.taskBuffer.values()).reduce((sum, arr) => sum + arr.length, 0)
436
+ };
437
+ }
438
+ /**
439
+ * Get meta-episodes history
440
+ */
441
+ getMetaEpisodes() {
442
+ return [...this.metaEpisodes];
443
+ }
444
+ /**
445
+ * Clear task buffer
446
+ */
447
+ clearTaskBuffer() {
448
+ this.taskBuffer.clear();
449
+ }
450
+ /**
451
+ * Get default exploration rate
452
+ */
453
+ getDefaultExplorationRate() {
454
+ return this.mamlConfig.explorationRate ?? 0.2;
455
+ }
456
+ /**
457
+ * Get algorithm name
458
+ */
459
+ getAlgorithmName() {
460
+ return 'MAML';
461
+ }
462
+ /**
463
+ * Override getStatistics to include meta-learning metrics
464
+ */
465
+ getStatistics() {
466
+ return {
467
+ ...super.getStatistics(),
468
+ maml: this.getMetaStatistics()
469
+ };
470
+ }
471
+ /**
472
+ * Export meta-learner state
473
+ */
474
+ export() {
475
+ const baseExport = super.export();
476
+ // Serialize metaQTable
477
+ const serializedMetaQTable = {};
478
+ for (const [state, actions] of this.metaQTable.entries()) {
479
+ serializedMetaQTable[state] = {};
480
+ for (const [action, qValue] of actions.entries()) {
481
+ serializedMetaQTable[state][action] = qValue;
482
+ }
483
+ }
484
+ // Serialize taskBuffer
485
+ const serializedTaskBuffer = {};
486
+ for (const [taskType, experiences] of this.taskBuffer.entries()) {
487
+ serializedTaskBuffer[taskType] = experiences;
488
+ }
489
+ return {
490
+ ...baseExport,
491
+ metaQTable: serializedMetaQTable,
492
+ taskBuffer: serializedTaskBuffer,
493
+ metaEpisodes: this.metaEpisodes,
494
+ metaStepCount: this.metaStepCount
495
+ };
496
+ }
497
+ /**
498
+ * Import meta-learner state
499
+ */
500
+ import(state) {
501
+ super.import(state);
502
+ // Deserialize metaQTable
503
+ this.metaQTable.clear();
504
+ for (const [stateKey, actions] of Object.entries(state.metaQTable)) {
505
+ const actionMap = new Map();
506
+ for (const [actionKey, qValue] of Object.entries(actions)) {
507
+ actionMap.set(actionKey, qValue);
508
+ }
509
+ this.metaQTable.set(stateKey, actionMap);
510
+ }
511
+ // Deserialize taskBuffer
512
+ this.taskBuffer.clear();
513
+ for (const [taskType, experiences] of Object.entries(state.taskBuffer)) {
514
+ this.taskBuffer.set(taskType, experiences);
515
+ }
516
+ this.metaEpisodes = state.metaEpisodes;
517
+ this.metaStepCount = state.metaStepCount;
518
+ this.logger.info('Imported MAML state', {
519
+ metaSteps: this.metaStepCount,
520
+ taskTypes: this.taskBuffer.size,
521
+ metaTableSize: this.metaQTable.size
522
+ });
523
+ }
524
+ }
525
+ exports.MAMLMetaLearner = MAMLMetaLearner;
526
+ /**
527
+ * Create default MAML configuration
528
+ */
529
+ function createDefaultMAMLConfig() {
530
+ return DEFAULT_MAML_CONFIG;
531
+ }
532
+ //# sourceMappingURL=MAMLMetaLearner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MAMLMetaLearner.js","sourceRoot":"","sources":["../../../src/learning/algorithms/MAMLMetaLearner.ts"],"names":[],"mappings":"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"}