agentic-qe 1.3.3 → 1.3.5
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-api-contract-validator.md +20 -0
- package/.claude/agents/qe-chaos-engineer.md +20 -0
- package/.claude/agents/qe-coverage-analyzer.md +21 -0
- package/.claude/agents/qe-deployment-readiness.md +20 -0
- package/.claude/agents/qe-flaky-test-hunter.md +20 -0
- package/.claude/agents/qe-fleet-commander.md +20 -0
- package/.claude/agents/qe-performance-tester.md +21 -0
- package/.claude/agents/qe-production-intelligence.md +20 -0
- package/.claude/agents/qe-quality-analyzer.md +20 -0
- package/.claude/agents/qe-quality-gate.md +20 -0
- package/.claude/agents/qe-regression-risk-analyzer.md +20 -0
- package/.claude/agents/qe-requirements-validator.md +20 -0
- package/.claude/agents/qe-security-scanner.md +21 -0
- package/.claude/agents/qe-test-data-architect.md +19 -0
- package/.claude/agents/qe-test-executor.md +20 -0
- package/.claude/agents/qe-test-generator.md +22 -0
- package/.claude/agents/qe-visual-tester.md +22 -0
- package/CHANGELOG.md +252 -0
- package/README.md +325 -1019
- package/README.md.backup-20251026 +1366 -0
- package/bin/aqe-mcp +1 -1
- package/dist/agents/BaseAgent.js +1 -1
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.js +16 -16
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +1 -1
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +71 -37
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/routing/index.d.ts +1 -1
- package/dist/cli/commands/routing/index.d.ts.map +1 -1
- package/dist/cli/commands/routing/index.js +29 -19
- package/dist/cli/commands/routing/index.js.map +1 -1
- package/dist/core/memory/EnhancedAgentDBService.d.ts +127 -0
- package/dist/core/memory/EnhancedAgentDBService.d.ts.map +1 -0
- package/dist/core/memory/EnhancedAgentDBService.js +298 -0
- package/dist/core/memory/EnhancedAgentDBService.js.map +1 -0
- package/dist/core/neural/NeuralTrainer.js +2 -2
- package/dist/core/neural/NeuralTrainer.js.map +1 -1
- package/dist/learning/ExperienceReplayBuffer.d.ts +143 -0
- package/dist/learning/ExperienceReplayBuffer.d.ts.map +1 -0
- package/dist/learning/ExperienceReplayBuffer.js +255 -0
- package/dist/learning/ExperienceReplayBuffer.js.map +1 -0
- package/dist/learning/FixRecommendationEngine.d.ts +68 -0
- package/dist/learning/FixRecommendationEngine.d.ts.map +1 -0
- package/dist/learning/FixRecommendationEngine.js +500 -0
- package/dist/learning/FixRecommendationEngine.js.map +1 -0
- package/dist/learning/FlakyTestDetector.d.ts +19 -0
- package/dist/learning/FlakyTestDetector.d.ts.map +1 -1
- package/dist/learning/FlakyTestDetector.js +121 -2
- package/dist/learning/FlakyTestDetector.js.map +1 -1
- package/dist/learning/LearningEngine.d.ts +50 -1
- package/dist/learning/LearningEngine.d.ts.map +1 -1
- package/dist/learning/LearningEngine.js +140 -0
- package/dist/learning/LearningEngine.js.map +1 -1
- package/dist/learning/QLearning.d.ts +154 -0
- package/dist/learning/QLearning.d.ts.map +1 -0
- package/dist/learning/QLearning.js +337 -0
- package/dist/learning/QLearning.js.map +1 -0
- package/dist/learning/index.d.ts +4 -0
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +7 -0
- package/dist/learning/index.js.map +1 -1
- package/dist/learning/types.d.ts +11 -0
- package/dist/learning/types.d.ts.map +1 -1
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts +11 -1
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts.map +1 -1
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js +12 -0
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js.map +1 -1
- package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts +10 -1
- package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts.map +1 -1
- package/dist/mcp/streaming/TestExecuteStreamHandler.js +11 -0
- package/dist/mcp/streaming/TestExecuteStreamHandler.js.map +1 -1
- package/dist/reasoning/PatternQualityScorer.d.ts +134 -0
- package/dist/reasoning/PatternQualityScorer.d.ts.map +1 -0
- package/dist/reasoning/PatternQualityScorer.js +340 -0
- package/dist/reasoning/PatternQualityScorer.js.map +1 -0
- package/dist/reasoning/QEReasoningBank.d.ts +138 -4
- package/dist/reasoning/QEReasoningBank.d.ts.map +1 -1
- package/dist/reasoning/QEReasoningBank.js +560 -12
- package/dist/reasoning/QEReasoningBank.js.map +1 -1
- package/dist/reasoning/VectorSimilarity.d.ts +131 -0
- package/dist/reasoning/VectorSimilarity.d.ts.map +1 -0
- package/dist/reasoning/VectorSimilarity.js +250 -0
- package/dist/reasoning/VectorSimilarity.js.map +1 -0
- package/dist/reasoning/index.d.ts +8 -1
- package/dist/reasoning/index.d.ts.map +1 -1
- package/dist/reasoning/index.js +13 -2
- package/dist/reasoning/index.js.map +1 -1
- package/dist/streaming/BaseStreamHandler.d.ts +89 -0
- package/dist/streaming/BaseStreamHandler.d.ts.map +1 -0
- package/dist/streaming/BaseStreamHandler.js +168 -0
- package/dist/streaming/BaseStreamHandler.js.map +1 -0
- package/dist/streaming/TestGenerateStreamHandler.d.ts +103 -0
- package/dist/streaming/TestGenerateStreamHandler.d.ts.map +1 -0
- package/dist/streaming/TestGenerateStreamHandler.js +321 -0
- package/dist/streaming/TestGenerateStreamHandler.js.map +1 -0
- package/dist/streaming/index.d.ts +16 -0
- package/dist/streaming/index.d.ts.map +1 -0
- package/dist/streaming/index.js +39 -0
- package/dist/streaming/index.js.map +1 -0
- package/dist/utils/__mocks__/Logger.d.ts +26 -0
- package/dist/utils/__mocks__/Logger.d.ts.map +1 -0
- package/dist/utils/__mocks__/Logger.js +42 -0
- package/dist/utils/__mocks__/Logger.js.map +1 -0
- package/package.json +15 -3
- package/dist/agents/mixins/NeuralCapableMixin.d.ts +0 -130
- package/dist/agents/mixins/NeuralCapableMixin.d.ts.map +0 -1
- package/dist/agents/mixins/NeuralCapableMixin.js +0 -358
- package/dist/agents/mixins/NeuralCapableMixin.js.map +0 -1
- package/dist/agents/mixins/QUICCapableMixin.d.ts +0 -34
- package/dist/agents/mixins/QUICCapableMixin.d.ts.map +0 -1
- package/dist/agents/mixins/QUICCapableMixin.js +0 -346
- package/dist/agents/mixins/QUICCapableMixin.js.map +0 -1
- package/dist/core/security/CertificateValidator.d.ts +0 -130
- package/dist/core/security/CertificateValidator.d.ts.map +0 -1
- package/dist/core/security/CertificateValidator.js +0 -376
- package/dist/core/security/CertificateValidator.js.map +0 -1
- package/dist/core/transport/QUICTransport.d.ts +0 -62
- package/dist/core/transport/QUICTransport.d.ts.map +0 -1
- package/dist/core/transport/QUICTransport.js +0 -381
- package/dist/core/transport/QUICTransport.js.map +0 -1
- package/dist/core/transport/SecureQUICTransport.d.ts +0 -71
- package/dist/core/transport/SecureQUICTransport.d.ts.map +0 -1
- package/dist/core/transport/SecureQUICTransport.js +0 -253
- package/dist/core/transport/SecureQUICTransport.js.map +0 -1
- package/dist/learning/AdvancedFeatureExtractor.d.ts +0 -123
- package/dist/learning/AdvancedFeatureExtractor.d.ts.map +0 -1
- package/dist/learning/AdvancedFeatureExtractor.js +0 -423
- package/dist/learning/AdvancedFeatureExtractor.js.map +0 -1
- package/dist/learning/NeuralPatternMatcher.d.ts +0 -184
- package/dist/learning/NeuralPatternMatcher.d.ts.map +0 -1
- package/dist/learning/NeuralPatternMatcher.js +0 -702
- package/dist/learning/NeuralPatternMatcher.js.map +0 -1
- package/dist/learning/NeuralTrainer.d.ts +0 -209
- package/dist/learning/NeuralTrainer.d.ts.map +0 -1
- package/dist/learning/NeuralTrainer.js +0 -478
- package/dist/learning/NeuralTrainer.js.map +0 -1
- package/dist/transport/QUICTransport.d.ts +0 -340
- package/dist/transport/QUICTransport.d.ts.map +0 -1
- package/dist/transport/QUICTransport.js +0 -814
- package/dist/transport/QUICTransport.js.map +0 -1
- package/dist/transport/UDPTransport.d.ts +0 -348
- package/dist/transport/UDPTransport.d.ts.map +0 -1
- package/dist/transport/UDPTransport.js +0 -820
- package/dist/transport/UDPTransport.js.map +0 -1
|
@@ -1,478 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Neural Trainer - Training Orchestration for Neural Pattern Matcher
|
|
4
|
-
*
|
|
5
|
-
* Provides:
|
|
6
|
-
* - Training orchestration and scheduling
|
|
7
|
-
* - Data preprocessing and augmentation
|
|
8
|
-
* - Model evaluation and validation
|
|
9
|
-
* - Hyperparameter tuning
|
|
10
|
-
* - Training progress tracking
|
|
11
|
-
* - Incremental learning management
|
|
12
|
-
*
|
|
13
|
-
* @module NeuralTrainer
|
|
14
|
-
*/
|
|
15
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
16
|
-
if (k2 === undefined) k2 = k;
|
|
17
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
18
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
19
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
20
|
-
}
|
|
21
|
-
Object.defineProperty(o, k2, desc);
|
|
22
|
-
}) : (function(o, m, k, k2) {
|
|
23
|
-
if (k2 === undefined) k2 = k;
|
|
24
|
-
o[k2] = m[k];
|
|
25
|
-
}));
|
|
26
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
27
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
28
|
-
}) : function(o, v) {
|
|
29
|
-
o["default"] = v;
|
|
30
|
-
});
|
|
31
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
32
|
-
var ownKeys = function(o) {
|
|
33
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
34
|
-
var ar = [];
|
|
35
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
36
|
-
return ar;
|
|
37
|
-
};
|
|
38
|
-
return ownKeys(o);
|
|
39
|
-
};
|
|
40
|
-
return function (mod) {
|
|
41
|
-
if (mod && mod.__esModule) return mod;
|
|
42
|
-
var result = {};
|
|
43
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
44
|
-
__setModuleDefault(result, mod);
|
|
45
|
-
return result;
|
|
46
|
-
};
|
|
47
|
-
})();
|
|
48
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
-
exports.NeuralTrainer = void 0;
|
|
50
|
-
const events_1 = require("events");
|
|
51
|
-
const fs_1 = require("fs");
|
|
52
|
-
const path = __importStar(require("path"));
|
|
53
|
-
const NeuralPatternMatcher_1 = require("./NeuralPatternMatcher");
|
|
54
|
-
/**
|
|
55
|
-
* Neural Trainer
|
|
56
|
-
*
|
|
57
|
-
* Orchestrates training, evaluation, and optimization of neural pattern matcher
|
|
58
|
-
*/
|
|
59
|
-
class NeuralTrainer extends events_1.EventEmitter {
|
|
60
|
-
constructor(config, memoryManager, reasoningBank) {
|
|
61
|
-
super();
|
|
62
|
-
this.trainingHistory = [];
|
|
63
|
-
this.bestMetrics = null;
|
|
64
|
-
this.currentEpoch = 0;
|
|
65
|
-
this.config = config;
|
|
66
|
-
this.memoryManager = memoryManager;
|
|
67
|
-
this.reasoningBank = reasoningBank;
|
|
68
|
-
// Initialize pattern matcher
|
|
69
|
-
this.patternMatcher = new NeuralPatternMatcher_1.NeuralPatternMatcher(config.backend, config.architecture, memoryManager, reasoningBank, config.modelPath);
|
|
70
|
-
// Forward events from pattern matcher
|
|
71
|
-
this.patternMatcher.on('training:progress', (data) => {
|
|
72
|
-
this.emit('training:progress', data);
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Preprocess training data
|
|
77
|
-
*/
|
|
78
|
-
async preprocessData(data, options = {
|
|
79
|
-
normalize: true,
|
|
80
|
-
handleMissing: true,
|
|
81
|
-
removeOutliers: false,
|
|
82
|
-
balanceClasses: true
|
|
83
|
-
}) {
|
|
84
|
-
this.emit('preprocessing:started', { dataSize: data.length, options });
|
|
85
|
-
let processed = [...data];
|
|
86
|
-
// Handle missing values
|
|
87
|
-
if (options.handleMissing) {
|
|
88
|
-
processed = this.handleMissingValues(processed);
|
|
89
|
-
}
|
|
90
|
-
// Remove outliers
|
|
91
|
-
if (options.removeOutliers) {
|
|
92
|
-
processed = this.removeOutliers(processed);
|
|
93
|
-
}
|
|
94
|
-
// Normalize features
|
|
95
|
-
if (options.normalize) {
|
|
96
|
-
processed = this.normalizeFeatures(processed);
|
|
97
|
-
}
|
|
98
|
-
// Balance classes
|
|
99
|
-
if (options.balanceClasses) {
|
|
100
|
-
processed = this.balanceClasses(processed);
|
|
101
|
-
}
|
|
102
|
-
this.emit('preprocessing:completed', {
|
|
103
|
-
originalSize: data.length,
|
|
104
|
-
processedSize: processed.length
|
|
105
|
-
});
|
|
106
|
-
return processed;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Handle missing values in training data
|
|
110
|
-
*/
|
|
111
|
-
handleMissingValues(data) {
|
|
112
|
-
return data.filter(point => {
|
|
113
|
-
// Check for NaN or undefined in features
|
|
114
|
-
return point.features.every(f => !isNaN(f) && f !== undefined);
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Remove outliers using IQR method
|
|
119
|
-
*/
|
|
120
|
-
removeOutliers(data) {
|
|
121
|
-
if (data.length === 0)
|
|
122
|
-
return data;
|
|
123
|
-
const featureCount = data[0].features.length;
|
|
124
|
-
const outlierIndices = new Set();
|
|
125
|
-
// Check each feature dimension
|
|
126
|
-
for (let i = 0; i < featureCount; i++) {
|
|
127
|
-
const values = data.map(d => d.features[i]).sort((a, b) => a - b);
|
|
128
|
-
const q1Index = Math.floor(values.length * 0.25);
|
|
129
|
-
const q3Index = Math.floor(values.length * 0.75);
|
|
130
|
-
const q1 = values[q1Index];
|
|
131
|
-
const q3 = values[q3Index];
|
|
132
|
-
const iqr = q3 - q1;
|
|
133
|
-
const lowerBound = q1 - 1.5 * iqr;
|
|
134
|
-
const upperBound = q3 + 1.5 * iqr;
|
|
135
|
-
// Mark outliers
|
|
136
|
-
data.forEach((point, idx) => {
|
|
137
|
-
if (point.features[i] < lowerBound || point.features[i] > upperBound) {
|
|
138
|
-
outlierIndices.add(idx);
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
// Remove outliers
|
|
143
|
-
return data.filter((_, idx) => !outlierIndices.has(idx));
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Normalize features using min-max scaling
|
|
147
|
-
*/
|
|
148
|
-
normalizeFeatures(data) {
|
|
149
|
-
if (data.length === 0)
|
|
150
|
-
return data;
|
|
151
|
-
const featureCount = data[0].features.length;
|
|
152
|
-
const mins = new Array(featureCount).fill(Infinity);
|
|
153
|
-
const maxs = new Array(featureCount).fill(-Infinity);
|
|
154
|
-
// Find min and max for each feature
|
|
155
|
-
for (const point of data) {
|
|
156
|
-
for (let i = 0; i < featureCount; i++) {
|
|
157
|
-
mins[i] = Math.min(mins[i], point.features[i]);
|
|
158
|
-
maxs[i] = Math.max(maxs[i], point.features[i]);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
// Normalize
|
|
162
|
-
return data.map(point => ({
|
|
163
|
-
...point,
|
|
164
|
-
features: point.features.map((f, i) => {
|
|
165
|
-
const range = maxs[i] - mins[i];
|
|
166
|
-
return range === 0 ? 0 : (f - mins[i]) / range;
|
|
167
|
-
})
|
|
168
|
-
}));
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Balance classes using oversampling
|
|
172
|
-
*/
|
|
173
|
-
balanceClasses(data) {
|
|
174
|
-
// Count classes
|
|
175
|
-
const classCounts = new Map();
|
|
176
|
-
for (const point of data) {
|
|
177
|
-
const classLabel = point.labels.indexOf(Math.max(...point.labels)).toString();
|
|
178
|
-
if (!classCounts.has(classLabel)) {
|
|
179
|
-
classCounts.set(classLabel, []);
|
|
180
|
-
}
|
|
181
|
-
classCounts.get(classLabel).push(point);
|
|
182
|
-
}
|
|
183
|
-
// Find max class size
|
|
184
|
-
const maxCount = Math.max(...Array.from(classCounts.values()).map(v => v.length));
|
|
185
|
-
// Oversample minority classes
|
|
186
|
-
const balanced = [];
|
|
187
|
-
for (const [label, points] of classCounts) {
|
|
188
|
-
balanced.push(...points);
|
|
189
|
-
// Add duplicates to reach max count
|
|
190
|
-
const needed = maxCount - points.length;
|
|
191
|
-
for (let i = 0; i < needed; i++) {
|
|
192
|
-
const randomPoint = points[Math.floor(Math.random() * points.length)];
|
|
193
|
-
balanced.push({ ...randomPoint });
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
return balanced;
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Augment training data
|
|
200
|
-
*/
|
|
201
|
-
async augmentData(data, augmentationFactor = 2) {
|
|
202
|
-
this.emit('augmentation:started', {
|
|
203
|
-
dataSize: data.length,
|
|
204
|
-
factor: augmentationFactor
|
|
205
|
-
});
|
|
206
|
-
const augmented = [...data];
|
|
207
|
-
for (let i = 0; i < augmentationFactor - 1; i++) {
|
|
208
|
-
for (const point of data) {
|
|
209
|
-
// Add noise to features
|
|
210
|
-
const noisyFeatures = point.features.map(f => {
|
|
211
|
-
const noise = (Math.random() - 0.5) * 0.1; // 10% noise
|
|
212
|
-
return f + noise;
|
|
213
|
-
});
|
|
214
|
-
augmented.push({
|
|
215
|
-
...point,
|
|
216
|
-
features: noisyFeatures,
|
|
217
|
-
metadata: {
|
|
218
|
-
...point.metadata,
|
|
219
|
-
augmented: true
|
|
220
|
-
}
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
this.emit('augmentation:completed', {
|
|
225
|
-
originalSize: data.length,
|
|
226
|
-
augmentedSize: augmented.length
|
|
227
|
-
});
|
|
228
|
-
return augmented;
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* Train model with progress tracking
|
|
232
|
-
*/
|
|
233
|
-
async train() {
|
|
234
|
-
const startTime = Date.now();
|
|
235
|
-
this.emit('training:started', { config: this.config });
|
|
236
|
-
try {
|
|
237
|
-
// Load and preprocess data
|
|
238
|
-
const rawData = await this.patternMatcher.loadTrainingData();
|
|
239
|
-
if (rawData.length === 0) {
|
|
240
|
-
throw new Error('No training data available');
|
|
241
|
-
}
|
|
242
|
-
let processedData = await this.preprocessData(rawData);
|
|
243
|
-
// Augment data if enabled
|
|
244
|
-
if (this.config.dataAugmentation) {
|
|
245
|
-
processedData = await this.augmentData(processedData);
|
|
246
|
-
}
|
|
247
|
-
// Train model
|
|
248
|
-
let metrics;
|
|
249
|
-
if (this.config.crossValidationFolds && this.config.crossValidationFolds > 1) {
|
|
250
|
-
metrics = await this.crossValidationTrain(processedData);
|
|
251
|
-
}
|
|
252
|
-
else {
|
|
253
|
-
metrics = await this.patternMatcher.train(processedData, this.config.validationSplit);
|
|
254
|
-
}
|
|
255
|
-
const totalTime = Date.now() - startTime;
|
|
256
|
-
const result = {
|
|
257
|
-
metrics,
|
|
258
|
-
config: this.config,
|
|
259
|
-
bestEpoch: this.currentEpoch,
|
|
260
|
-
totalTime,
|
|
261
|
-
earlyStopped: false,
|
|
262
|
-
modelVersion: this.patternMatcher.getModelInfo().version
|
|
263
|
-
};
|
|
264
|
-
this.emit('training:completed', result);
|
|
265
|
-
return result;
|
|
266
|
-
}
|
|
267
|
-
catch (error) {
|
|
268
|
-
this.emit('training:error', { error });
|
|
269
|
-
throw error;
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
/**
|
|
273
|
-
* Cross-validation training
|
|
274
|
-
*/
|
|
275
|
-
async crossValidationTrain(data) {
|
|
276
|
-
const folds = this.config.crossValidationFolds || 5;
|
|
277
|
-
this.emit('crossvalidation:started', { folds });
|
|
278
|
-
const foldSize = Math.floor(data.length / folds);
|
|
279
|
-
const allMetrics = [];
|
|
280
|
-
for (let fold = 0; fold < folds; fold++) {
|
|
281
|
-
this.emit('crossvalidation:fold:started', { fold: fold + 1, totalFolds: folds });
|
|
282
|
-
// Split data into train and validation
|
|
283
|
-
const validationStart = fold * foldSize;
|
|
284
|
-
const validationEnd = validationStart + foldSize;
|
|
285
|
-
const validationData = data.slice(validationStart, validationEnd);
|
|
286
|
-
const trainData = [
|
|
287
|
-
...data.slice(0, validationStart),
|
|
288
|
-
...data.slice(validationEnd)
|
|
289
|
-
];
|
|
290
|
-
// Train on this fold
|
|
291
|
-
const metrics = await this.patternMatcher.train(trainData, 0);
|
|
292
|
-
// Evaluate on validation set
|
|
293
|
-
const foldMetrics = await this.patternMatcher.evaluate(validationData);
|
|
294
|
-
allMetrics.push(foldMetrics);
|
|
295
|
-
this.emit('crossvalidation:fold:completed', {
|
|
296
|
-
fold: fold + 1,
|
|
297
|
-
metrics: foldMetrics
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
// Average metrics across folds
|
|
301
|
-
const avgMetrics = {
|
|
302
|
-
accuracy: allMetrics.reduce((sum, m) => sum + m.accuracy, 0) / folds,
|
|
303
|
-
precision: allMetrics.reduce((sum, m) => sum + m.precision, 0) / folds,
|
|
304
|
-
recall: allMetrics.reduce((sum, m) => sum + m.recall, 0) / folds,
|
|
305
|
-
f1Score: allMetrics.reduce((sum, m) => sum + m.f1Score, 0) / folds,
|
|
306
|
-
trainingLoss: allMetrics.reduce((sum, m) => sum + m.trainingLoss, 0) / folds,
|
|
307
|
-
validationLoss: allMetrics.reduce((sum, m) => sum + m.validationLoss, 0) / folds,
|
|
308
|
-
trainingTime: allMetrics.reduce((sum, m) => sum + m.trainingTime, 0),
|
|
309
|
-
confusionMatrix: allMetrics[0].confusionMatrix // Use last fold
|
|
310
|
-
};
|
|
311
|
-
this.emit('crossvalidation:completed', { avgMetrics, folds });
|
|
312
|
-
return avgMetrics;
|
|
313
|
-
}
|
|
314
|
-
/**
|
|
315
|
-
* Hyperparameter tuning using grid search
|
|
316
|
-
*/
|
|
317
|
-
async tuneHyperparameters(config) {
|
|
318
|
-
const startTime = Date.now();
|
|
319
|
-
this.emit('tuning:started', { config });
|
|
320
|
-
const trials = [];
|
|
321
|
-
let bestMetrics = null;
|
|
322
|
-
let bestConfig = null;
|
|
323
|
-
// Load and preprocess data once
|
|
324
|
-
const rawData = await this.patternMatcher.loadTrainingData();
|
|
325
|
-
const processedData = await this.preprocessData(rawData);
|
|
326
|
-
let trialCount = 0;
|
|
327
|
-
// Grid search
|
|
328
|
-
for (const learningRate of config.learningRates) {
|
|
329
|
-
for (const batchSize of config.batchSizes) {
|
|
330
|
-
for (const hiddenLayers of config.hiddenLayerConfigs) {
|
|
331
|
-
for (const dropout of config.dropoutRates) {
|
|
332
|
-
if (trialCount >= config.maxTrials)
|
|
333
|
-
break;
|
|
334
|
-
const architecture = {
|
|
335
|
-
...this.config.architecture,
|
|
336
|
-
learningRate,
|
|
337
|
-
batchSize,
|
|
338
|
-
hiddenLayers,
|
|
339
|
-
dropout
|
|
340
|
-
};
|
|
341
|
-
this.emit('tuning:trial:started', {
|
|
342
|
-
trial: trialCount + 1,
|
|
343
|
-
totalTrials: config.maxTrials,
|
|
344
|
-
architecture
|
|
345
|
-
});
|
|
346
|
-
// Create new matcher with this config
|
|
347
|
-
const matcher = new NeuralPatternMatcher_1.NeuralPatternMatcher(this.config.backend, architecture, this.memoryManager, this.reasoningBank);
|
|
348
|
-
// Train
|
|
349
|
-
const metrics = await matcher.train(processedData, this.config.validationSplit);
|
|
350
|
-
trials.push({ config: architecture, metrics });
|
|
351
|
-
// Update best
|
|
352
|
-
if (!bestMetrics || metrics.accuracy > bestMetrics.accuracy) {
|
|
353
|
-
bestMetrics = metrics;
|
|
354
|
-
bestConfig = architecture;
|
|
355
|
-
}
|
|
356
|
-
this.emit('tuning:trial:completed', {
|
|
357
|
-
trial: trialCount + 1,
|
|
358
|
-
metrics,
|
|
359
|
-
isBest: metrics === bestMetrics
|
|
360
|
-
});
|
|
361
|
-
trialCount++;
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
if (!bestConfig || !bestMetrics) {
|
|
367
|
-
throw new Error('No valid trials completed');
|
|
368
|
-
}
|
|
369
|
-
const totalTime = Date.now() - startTime;
|
|
370
|
-
const result = {
|
|
371
|
-
bestConfig,
|
|
372
|
-
bestMetrics,
|
|
373
|
-
trials,
|
|
374
|
-
totalTime
|
|
375
|
-
};
|
|
376
|
-
this.emit('tuning:completed', result);
|
|
377
|
-
return result;
|
|
378
|
-
}
|
|
379
|
-
/**
|
|
380
|
-
* Evaluate model on test data
|
|
381
|
-
*/
|
|
382
|
-
async evaluate(testData) {
|
|
383
|
-
this.emit('evaluation:started');
|
|
384
|
-
try {
|
|
385
|
-
let data = testData;
|
|
386
|
-
if (!data) {
|
|
387
|
-
// Load fresh test data
|
|
388
|
-
const allData = await this.patternMatcher.loadTrainingData();
|
|
389
|
-
const splitIndex = Math.floor(allData.length * 0.8);
|
|
390
|
-
data = allData.slice(splitIndex); // Use last 20% as test
|
|
391
|
-
}
|
|
392
|
-
data = await this.preprocessData(data);
|
|
393
|
-
const metrics = await this.patternMatcher.evaluate(data);
|
|
394
|
-
this.emit('evaluation:completed', { metrics });
|
|
395
|
-
return metrics;
|
|
396
|
-
}
|
|
397
|
-
catch (error) {
|
|
398
|
-
this.emit('evaluation:error', { error });
|
|
399
|
-
throw error;
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
/**
|
|
403
|
-
* Incremental training with new data
|
|
404
|
-
*/
|
|
405
|
-
async incrementalTrain(newData) {
|
|
406
|
-
const startTime = Date.now();
|
|
407
|
-
this.emit('incremental:training:started', { dataSize: newData.length });
|
|
408
|
-
try {
|
|
409
|
-
// Preprocess new data
|
|
410
|
-
const processedData = await this.preprocessData(newData);
|
|
411
|
-
// Incremental train
|
|
412
|
-
const metrics = await this.patternMatcher.incrementalTrain(processedData);
|
|
413
|
-
const totalTime = Date.now() - startTime;
|
|
414
|
-
const result = {
|
|
415
|
-
metrics,
|
|
416
|
-
config: this.config,
|
|
417
|
-
bestEpoch: this.currentEpoch,
|
|
418
|
-
totalTime,
|
|
419
|
-
earlyStopped: false,
|
|
420
|
-
modelVersion: this.patternMatcher.getModelInfo().version
|
|
421
|
-
};
|
|
422
|
-
this.emit('incremental:training:completed', result);
|
|
423
|
-
return result;
|
|
424
|
-
}
|
|
425
|
-
catch (error) {
|
|
426
|
-
this.emit('incremental:training:error', { error });
|
|
427
|
-
throw error;
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
/**
|
|
431
|
-
* Save trained model
|
|
432
|
-
*/
|
|
433
|
-
async saveModel() {
|
|
434
|
-
await this.patternMatcher.saveModel();
|
|
435
|
-
}
|
|
436
|
-
/**
|
|
437
|
-
* Load trained model
|
|
438
|
-
*/
|
|
439
|
-
async loadModel(version) {
|
|
440
|
-
await this.patternMatcher.loadModel(version);
|
|
441
|
-
}
|
|
442
|
-
/**
|
|
443
|
-
* Get training history
|
|
444
|
-
*/
|
|
445
|
-
getTrainingHistory() {
|
|
446
|
-
return [...this.trainingHistory];
|
|
447
|
-
}
|
|
448
|
-
/**
|
|
449
|
-
* Get pattern matcher instance
|
|
450
|
-
*/
|
|
451
|
-
getPatternMatcher() {
|
|
452
|
-
return this.patternMatcher;
|
|
453
|
-
}
|
|
454
|
-
/**
|
|
455
|
-
* Predict using trained model
|
|
456
|
-
*/
|
|
457
|
-
async predict(codePattern) {
|
|
458
|
-
return await this.patternMatcher.predict(codePattern);
|
|
459
|
-
}
|
|
460
|
-
/**
|
|
461
|
-
* Export training report
|
|
462
|
-
*/
|
|
463
|
-
async exportReport(outputPath) {
|
|
464
|
-
this.emit('report:exporting', { path: outputPath });
|
|
465
|
-
const report = {
|
|
466
|
-
config: this.config,
|
|
467
|
-
modelInfo: this.patternMatcher.getModelInfo(),
|
|
468
|
-
trainingHistory: this.trainingHistory,
|
|
469
|
-
bestMetrics: this.bestMetrics,
|
|
470
|
-
timestamp: new Date().toISOString()
|
|
471
|
-
};
|
|
472
|
-
await fs_1.promises.mkdir(path.dirname(outputPath), { recursive: true });
|
|
473
|
-
await fs_1.promises.writeFile(outputPath, JSON.stringify(report, null, 2));
|
|
474
|
-
this.emit('report:exported', { path: outputPath });
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
exports.NeuralTrainer = NeuralTrainer;
|
|
478
|
-
//# sourceMappingURL=NeuralTrainer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NeuralTrainer.js","sourceRoot":"","sources":["../../src/learning/NeuralTrainer.ts"],"names":[],"mappings":"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"}
|