agentic-qe 1.9.3 → 1.9.4
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/CHANGELOG.md +54 -0
- package/README.md +30 -5
- package/config/.env.otel.example +25 -0
- package/config/OTEL-QUICK-REFERENCE.md +137 -0
- package/config/README-OTEL.md +222 -0
- package/config/alerting-rules.yml +518 -0
- package/config/docker-compose.otel.yml +187 -0
- package/config/grafana/dashboards/agentic-qe-overview.json +286 -0
- package/config/grafana/provisioning/dashboards/dashboards.yml +19 -0
- package/config/grafana/provisioning/datasources/datasources.yml +53 -0
- package/config/otel-collector-config.yaml.example +145 -0
- package/config/prometheus.yml.example +106 -0
- package/dist/alerting/AlertManager.d.ts +120 -0
- package/dist/alerting/AlertManager.d.ts.map +1 -0
- package/dist/alerting/AlertManager.js +345 -0
- package/dist/alerting/AlertManager.js.map +1 -0
- package/dist/alerting/FeedbackRouter.d.ts +98 -0
- package/dist/alerting/FeedbackRouter.d.ts.map +1 -0
- package/dist/alerting/FeedbackRouter.js +331 -0
- package/dist/alerting/FeedbackRouter.js.map +1 -0
- package/dist/alerting/StrategyApplicator.d.ts +120 -0
- package/dist/alerting/StrategyApplicator.d.ts.map +1 -0
- package/dist/alerting/StrategyApplicator.js +299 -0
- package/dist/alerting/StrategyApplicator.js.map +1 -0
- package/dist/alerting/index.d.ts +68 -0
- package/dist/alerting/index.d.ts.map +1 -0
- package/dist/alerting/index.js +112 -0
- package/dist/alerting/index.js.map +1 -0
- package/dist/alerting/types.d.ts +118 -0
- package/dist/alerting/types.d.ts.map +1 -0
- package/dist/alerting/types.js +11 -0
- package/dist/alerting/types.js.map +1 -0
- package/dist/cli/init/claude-config.d.ts.map +1 -1
- package/dist/cli/init/claude-config.js +12 -7
- package/dist/cli/init/claude-config.js.map +1 -1
- package/dist/core/memory/IPatternStore.d.ts +209 -0
- package/dist/core/memory/IPatternStore.d.ts.map +1 -0
- package/dist/core/memory/IPatternStore.js +15 -0
- package/dist/core/memory/IPatternStore.js.map +1 -0
- package/dist/core/memory/MigrationTools.d.ts +192 -0
- package/dist/core/memory/MigrationTools.d.ts.map +1 -0
- package/dist/core/memory/MigrationTools.js +615 -0
- package/dist/core/memory/MigrationTools.js.map +1 -0
- package/dist/core/memory/NeuralEnhancement.d.ts +154 -0
- package/dist/core/memory/NeuralEnhancement.d.ts.map +1 -0
- package/dist/core/memory/NeuralEnhancement.js +598 -0
- package/dist/core/memory/NeuralEnhancement.js.map +1 -0
- package/dist/core/memory/PatternStoreFactory.d.ts +143 -0
- package/dist/core/memory/PatternStoreFactory.d.ts.map +1 -0
- package/dist/core/memory/PatternStoreFactory.js +370 -0
- package/dist/core/memory/PatternStoreFactory.js.map +1 -0
- package/dist/core/memory/RealAgentDBAdapter.d.ts +1 -0
- package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -1
- package/dist/core/memory/RealAgentDBAdapter.js +28 -20
- package/dist/core/memory/RealAgentDBAdapter.js.map +1 -1
- package/dist/core/memory/RuVectorPatternStore.d.ts +198 -0
- package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -0
- package/dist/core/memory/RuVectorPatternStore.js +605 -0
- package/dist/core/memory/RuVectorPatternStore.js.map +1 -0
- package/dist/core/memory/SelfHealingMonitor.d.ts +186 -0
- package/dist/core/memory/SelfHealingMonitor.d.ts.map +1 -0
- package/dist/core/memory/SelfHealingMonitor.js +451 -0
- package/dist/core/memory/SelfHealingMonitor.js.map +1 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts +62 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.js +97 -0
- package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
- package/dist/core/memory/index.d.ts +11 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +36 -1
- package/dist/core/memory/index.js.map +1 -1
- package/dist/reasoning/RuVectorReasoningAdapter.d.ts +232 -0
- package/dist/reasoning/RuVectorReasoningAdapter.d.ts.map +1 -0
- package/dist/reasoning/RuVectorReasoningAdapter.js +585 -0
- package/dist/reasoning/RuVectorReasoningAdapter.js.map +1 -0
- package/dist/reasoning/index.d.ts +2 -0
- package/dist/reasoning/index.d.ts.map +1 -1
- package/dist/reasoning/index.js +6 -1
- package/dist/reasoning/index.js.map +1 -1
- package/dist/reporting/ResultAggregator.d.ts +107 -0
- package/dist/reporting/ResultAggregator.d.ts.map +1 -0
- package/dist/reporting/ResultAggregator.js +435 -0
- package/dist/reporting/ResultAggregator.js.map +1 -0
- package/dist/reporting/index.d.ts +48 -0
- package/dist/reporting/index.d.ts.map +1 -0
- package/dist/reporting/index.js +154 -0
- package/dist/reporting/index.js.map +1 -0
- package/dist/reporting/reporters/ControlLoopReporter.d.ts +128 -0
- package/dist/reporting/reporters/ControlLoopReporter.d.ts.map +1 -0
- package/dist/reporting/reporters/ControlLoopReporter.js +417 -0
- package/dist/reporting/reporters/ControlLoopReporter.js.map +1 -0
- package/dist/reporting/reporters/HumanReadableReporter.d.ts +140 -0
- package/dist/reporting/reporters/HumanReadableReporter.d.ts.map +1 -0
- package/dist/reporting/reporters/HumanReadableReporter.js +524 -0
- package/dist/reporting/reporters/HumanReadableReporter.js.map +1 -0
- package/dist/reporting/reporters/JSONReporter.d.ts +193 -0
- package/dist/reporting/reporters/JSONReporter.d.ts.map +1 -0
- package/dist/reporting/reporters/JSONReporter.js +324 -0
- package/dist/reporting/reporters/JSONReporter.js.map +1 -0
- package/dist/reporting/reporters/index.d.ts +14 -0
- package/dist/reporting/reporters/index.d.ts.map +1 -0
- package/dist/reporting/reporters/index.js +19 -0
- package/dist/reporting/reporters/index.js.map +1 -0
- package/dist/reporting/types.d.ts +427 -0
- package/dist/reporting/types.d.ts.map +1 -0
- package/dist/reporting/types.js +12 -0
- package/dist/reporting/types.js.map +1 -0
- package/package.json +9 -1
|
@@ -0,0 +1,598 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* NeuralEnhancement - Neural Enhancement Layer for RuVector
|
|
4
|
+
*
|
|
5
|
+
* Implements AgentDB v2 neural capabilities:
|
|
6
|
+
* - Multi-head attention mechanism (8 heads) for query enhancement
|
|
7
|
+
* - Graph Neural Network layer for pattern relationship modeling
|
|
8
|
+
* - RL-based navigation for optimal traversal paths
|
|
9
|
+
* - Self-organizing capabilities for index maintenance
|
|
10
|
+
*
|
|
11
|
+
* @module core/memory/NeuralEnhancement
|
|
12
|
+
* @version 2.0.0
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.NeuralPatternStore = exports.NeuralEnhancementLayer = void 0;
|
|
16
|
+
/**
|
|
17
|
+
* Multi-head attention layer
|
|
18
|
+
*/
|
|
19
|
+
class MultiHeadAttention {
|
|
20
|
+
constructor(heads, dim) {
|
|
21
|
+
this.heads = heads;
|
|
22
|
+
this.dim = dim;
|
|
23
|
+
this.headDim = Math.floor(dim / heads);
|
|
24
|
+
// Initialize weight matrices
|
|
25
|
+
this.wq = this.initWeights(heads, dim, this.headDim);
|
|
26
|
+
this.wk = this.initWeights(heads, dim, this.headDim);
|
|
27
|
+
this.wv = this.initWeights(heads, dim, this.headDim);
|
|
28
|
+
this.wo = this.initMatrix(dim, dim);
|
|
29
|
+
}
|
|
30
|
+
initWeights(heads, dim, headDim) {
|
|
31
|
+
const weights = [];
|
|
32
|
+
for (let h = 0; h < heads; h++) {
|
|
33
|
+
weights[h] = this.initMatrix(dim, headDim);
|
|
34
|
+
}
|
|
35
|
+
return weights;
|
|
36
|
+
}
|
|
37
|
+
initMatrix(rows, cols) {
|
|
38
|
+
const matrix = [];
|
|
39
|
+
const scale = Math.sqrt(2.0 / (rows + cols)); // Xavier initialization
|
|
40
|
+
for (let i = 0; i < rows; i++) {
|
|
41
|
+
matrix[i] = [];
|
|
42
|
+
for (let j = 0; j < cols; j++) {
|
|
43
|
+
matrix[i][j] = (Math.random() - 0.5) * 2 * scale;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return matrix;
|
|
47
|
+
}
|
|
48
|
+
matmul(a, w) {
|
|
49
|
+
const result = [];
|
|
50
|
+
for (let j = 0; j < w[0].length; j++) {
|
|
51
|
+
let sum = 0;
|
|
52
|
+
for (let i = 0; i < a.length; i++) {
|
|
53
|
+
sum += a[i] * w[i][j];
|
|
54
|
+
}
|
|
55
|
+
result[j] = sum;
|
|
56
|
+
}
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
dotProduct(a, b) {
|
|
60
|
+
let sum = 0;
|
|
61
|
+
for (let i = 0; i < a.length; i++) {
|
|
62
|
+
sum += a[i] * b[i];
|
|
63
|
+
}
|
|
64
|
+
return sum;
|
|
65
|
+
}
|
|
66
|
+
softmax(values) {
|
|
67
|
+
const max = Math.max(...values);
|
|
68
|
+
const exps = values.map(v => Math.exp(v - max));
|
|
69
|
+
const sum = exps.reduce((a, b) => a + b, 0);
|
|
70
|
+
return exps.map(e => e / sum);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Apply multi-head attention to query embedding
|
|
74
|
+
*/
|
|
75
|
+
async forward(query, context) {
|
|
76
|
+
const headOutputs = [];
|
|
77
|
+
const allWeights = [];
|
|
78
|
+
// Process each attention head
|
|
79
|
+
for (let h = 0; h < this.heads; h++) {
|
|
80
|
+
// Project query, keys, values
|
|
81
|
+
const q = this.matmul(query, this.wq[h]);
|
|
82
|
+
const keys = context.map(c => this.matmul(c, this.wk[h]));
|
|
83
|
+
const values = context.map(c => this.matmul(c, this.wv[h]));
|
|
84
|
+
// Compute attention scores
|
|
85
|
+
const scale = 1.0 / Math.sqrt(this.headDim);
|
|
86
|
+
const scores = keys.map(k => this.dotProduct(q, k) * scale);
|
|
87
|
+
// Apply softmax to get attention weights
|
|
88
|
+
const weights = this.softmax(scores);
|
|
89
|
+
allWeights.push(weights);
|
|
90
|
+
// Weighted sum of values
|
|
91
|
+
const output = new Array(this.headDim).fill(0);
|
|
92
|
+
for (let i = 0; i < values.length; i++) {
|
|
93
|
+
for (let j = 0; j < this.headDim; j++) {
|
|
94
|
+
output[j] += weights[i] * values[i][j];
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
headOutputs.push(output);
|
|
98
|
+
}
|
|
99
|
+
// Concatenate head outputs
|
|
100
|
+
const concatenated = headOutputs.flat();
|
|
101
|
+
// Project back to original dimension
|
|
102
|
+
const finalOutput = this.matmul(concatenated, this.wo);
|
|
103
|
+
return {
|
|
104
|
+
output: finalOutput,
|
|
105
|
+
weights: allWeights,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Graph Neural Network layer
|
|
111
|
+
*/
|
|
112
|
+
class GraphNeuralNetwork {
|
|
113
|
+
constructor() {
|
|
114
|
+
this.nodes = new Map();
|
|
115
|
+
this.adjacency = new Map();
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Add a pattern to the graph
|
|
119
|
+
*/
|
|
120
|
+
addNode(pattern) {
|
|
121
|
+
const features = this.extractFeatures(pattern);
|
|
122
|
+
this.nodes.set(pattern.id, {
|
|
123
|
+
id: pattern.id,
|
|
124
|
+
embedding: pattern.embedding,
|
|
125
|
+
features,
|
|
126
|
+
neighbors: new Map(),
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Build edges based on similarity
|
|
131
|
+
*/
|
|
132
|
+
buildEdges(patterns, threshold = 0.7) {
|
|
133
|
+
this.adjacency.clear();
|
|
134
|
+
for (let i = 0; i < patterns.length; i++) {
|
|
135
|
+
for (let j = i + 1; j < patterns.length; j++) {
|
|
136
|
+
const sim = this.cosineSimilarity(patterns[i].embedding, patterns[j].embedding);
|
|
137
|
+
if (sim > threshold) {
|
|
138
|
+
// Add bidirectional edge
|
|
139
|
+
this.addEdge(patterns[i].id, patterns[j].id, sim);
|
|
140
|
+
this.addEdge(patterns[j].id, patterns[i].id, sim);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// Update node neighbors
|
|
145
|
+
for (const [nodeId, edges] of this.adjacency.entries()) {
|
|
146
|
+
const node = this.nodes.get(nodeId);
|
|
147
|
+
if (node) {
|
|
148
|
+
node.neighbors = edges;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
addEdge(from, to, weight) {
|
|
153
|
+
if (!this.adjacency.has(from)) {
|
|
154
|
+
this.adjacency.set(from, new Map());
|
|
155
|
+
}
|
|
156
|
+
this.adjacency.get(from).set(to, weight);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Extract node features from pattern
|
|
160
|
+
*/
|
|
161
|
+
extractFeatures(pattern) {
|
|
162
|
+
return [
|
|
163
|
+
pattern.coverage || 0,
|
|
164
|
+
pattern.flakinessScore || 0,
|
|
165
|
+
pattern.usageCount || 0,
|
|
166
|
+
pattern.verdict === 'success' ? 1 : pattern.verdict === 'failure' ? -1 : 0,
|
|
167
|
+
];
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Aggregate neighbor information using message passing
|
|
171
|
+
*/
|
|
172
|
+
async aggregateNeighbors(nodeId) {
|
|
173
|
+
const node = this.nodes.get(nodeId);
|
|
174
|
+
if (!node || node.neighbors.size === 0) {
|
|
175
|
+
return node ? node.embedding : [];
|
|
176
|
+
}
|
|
177
|
+
// Message passing: aggregate neighbor embeddings weighted by edge weights
|
|
178
|
+
const aggregated = new Array(node.embedding.length).fill(0);
|
|
179
|
+
let totalWeight = 0;
|
|
180
|
+
for (const [neighborId, weight] of node.neighbors.entries()) {
|
|
181
|
+
const neighbor = this.nodes.get(neighborId);
|
|
182
|
+
if (neighbor) {
|
|
183
|
+
for (let i = 0; i < aggregated.length; i++) {
|
|
184
|
+
aggregated[i] += weight * neighbor.embedding[i];
|
|
185
|
+
}
|
|
186
|
+
totalWeight += weight;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// Normalize
|
|
190
|
+
if (totalWeight > 0) {
|
|
191
|
+
for (let i = 0; i < aggregated.length; i++) {
|
|
192
|
+
aggregated[i] /= totalWeight;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return aggregated;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Get neighbor IDs for a node
|
|
199
|
+
*/
|
|
200
|
+
getNeighbors(nodeId) {
|
|
201
|
+
const neighbors = this.adjacency.get(nodeId);
|
|
202
|
+
return neighbors ? Array.from(neighbors.keys()) : [];
|
|
203
|
+
}
|
|
204
|
+
cosineSimilarity(a, b) {
|
|
205
|
+
let dotProduct = 0;
|
|
206
|
+
let normA = 0;
|
|
207
|
+
let normB = 0;
|
|
208
|
+
for (let i = 0; i < a.length; i++) {
|
|
209
|
+
dotProduct += a[i] * b[i];
|
|
210
|
+
normA += a[i] * a[i];
|
|
211
|
+
normB += b[i] * b[i];
|
|
212
|
+
}
|
|
213
|
+
return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Q-Learning agent for optimal path navigation
|
|
218
|
+
*/
|
|
219
|
+
class QLearningNavigator {
|
|
220
|
+
constructor(learningRate = 0.001, gamma = 0.95, epsilon = 0.1) {
|
|
221
|
+
this.qTable = new Map();
|
|
222
|
+
this.learningRate = learningRate;
|
|
223
|
+
this.gamma = gamma;
|
|
224
|
+
this.epsilon = epsilon;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Get Q-value for state-action pair
|
|
228
|
+
*/
|
|
229
|
+
getQValue(state, action) {
|
|
230
|
+
const key = `${state}:${action}`;
|
|
231
|
+
const entry = this.qTable.get(key);
|
|
232
|
+
return entry ? entry.qValue : 0;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Update Q-value for state-action pair
|
|
236
|
+
*/
|
|
237
|
+
updateQValue(state, action, reward, nextState, possibleActions) {
|
|
238
|
+
const key = `${state}:${action}`;
|
|
239
|
+
const currentQ = this.getQValue(state, action);
|
|
240
|
+
// Get max Q-value for next state
|
|
241
|
+
const maxNextQ = possibleActions.length > 0
|
|
242
|
+
? Math.max(...possibleActions.map(a => this.getQValue(nextState, a)))
|
|
243
|
+
: 0;
|
|
244
|
+
// Q-learning update
|
|
245
|
+
const newQ = currentQ + this.learningRate * (reward + this.gamma * maxNextQ - currentQ);
|
|
246
|
+
const entry = this.qTable.get(key) || {
|
|
247
|
+
state,
|
|
248
|
+
action,
|
|
249
|
+
qValue: 0,
|
|
250
|
+
visitCount: 0,
|
|
251
|
+
};
|
|
252
|
+
entry.qValue = newQ;
|
|
253
|
+
entry.visitCount++;
|
|
254
|
+
this.qTable.set(key, entry);
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Select next action using epsilon-greedy
|
|
258
|
+
*/
|
|
259
|
+
selectAction(state, possibleActions) {
|
|
260
|
+
if (possibleActions.length === 0) {
|
|
261
|
+
throw new Error('No possible actions available');
|
|
262
|
+
}
|
|
263
|
+
// Epsilon-greedy exploration
|
|
264
|
+
if (Math.random() < this.epsilon) {
|
|
265
|
+
// Explore: random action
|
|
266
|
+
return possibleActions[Math.floor(Math.random() * possibleActions.length)];
|
|
267
|
+
}
|
|
268
|
+
// Exploit: best action
|
|
269
|
+
let bestAction = possibleActions[0];
|
|
270
|
+
let bestQ = this.getQValue(state, bestAction);
|
|
271
|
+
for (let i = 1; i < possibleActions.length; i++) {
|
|
272
|
+
const action = possibleActions[i];
|
|
273
|
+
const q = this.getQValue(state, action);
|
|
274
|
+
if (q > bestQ) {
|
|
275
|
+
bestQ = q;
|
|
276
|
+
bestAction = action;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return bestAction;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Train on trajectory
|
|
283
|
+
*/
|
|
284
|
+
trainOnPath(path, reward, gnn) {
|
|
285
|
+
// Distribute reward along path
|
|
286
|
+
const rewardPerStep = reward / path.length;
|
|
287
|
+
for (let i = 0; i < path.length - 1; i++) {
|
|
288
|
+
const state = path[i];
|
|
289
|
+
const action = path[i + 1];
|
|
290
|
+
const nextState = path[i + 1];
|
|
291
|
+
const possibleActions = gnn.getNeighbors(state);
|
|
292
|
+
this.updateQValue(state, action, rewardPerStep, nextState, possibleActions);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Find optimal path from start to targets
|
|
297
|
+
*/
|
|
298
|
+
findOptimalPath(start, targets, gnn, maxSteps = 20) {
|
|
299
|
+
const path = [start];
|
|
300
|
+
const visited = new Set([start]);
|
|
301
|
+
let current = start;
|
|
302
|
+
for (let step = 0; step < maxSteps; step++) {
|
|
303
|
+
if (targets.has(current)) {
|
|
304
|
+
break; // Reached target
|
|
305
|
+
}
|
|
306
|
+
const neighbors = gnn.getNeighbors(current);
|
|
307
|
+
const unvisited = neighbors.filter(n => !visited.has(n));
|
|
308
|
+
if (unvisited.length === 0) {
|
|
309
|
+
break; // No more moves
|
|
310
|
+
}
|
|
311
|
+
const next = this.selectAction(current, unvisited);
|
|
312
|
+
path.push(next);
|
|
313
|
+
visited.add(next);
|
|
314
|
+
current = next;
|
|
315
|
+
}
|
|
316
|
+
return path;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Neural Enhancement Layer
|
|
321
|
+
*
|
|
322
|
+
* Provides neural capabilities for RuVector pattern store:
|
|
323
|
+
* - Multi-head attention for query enhancement
|
|
324
|
+
* - Graph Neural Network for pattern relationships
|
|
325
|
+
* - Q-Learning for optimal search paths
|
|
326
|
+
*/
|
|
327
|
+
class NeuralEnhancementLayer {
|
|
328
|
+
constructor(config) {
|
|
329
|
+
this.contextPatterns = [];
|
|
330
|
+
this.config = {
|
|
331
|
+
attentionHeads: config?.attentionHeads || 8,
|
|
332
|
+
embeddingDim: config?.embeddingDim || 384,
|
|
333
|
+
enableGNN: config?.enableGNN !== false,
|
|
334
|
+
enableRLNavigation: config?.enableRLNavigation !== false,
|
|
335
|
+
learningRate: config?.learningRate || 0.001,
|
|
336
|
+
gamma: config?.gamma || 0.95,
|
|
337
|
+
epsilon: config?.epsilon || 0.1,
|
|
338
|
+
};
|
|
339
|
+
this.attention = new MultiHeadAttention(this.config.attentionHeads, this.config.embeddingDim);
|
|
340
|
+
this.gnn = new GraphNeuralNetwork();
|
|
341
|
+
this.navigator = new QLearningNavigator(this.config.learningRate, this.config.gamma, this.config.epsilon);
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Apply attention to query embedding
|
|
345
|
+
*/
|
|
346
|
+
async enhanceQuery(embedding, contextPatterns) {
|
|
347
|
+
const context = contextPatterns || this.contextPatterns;
|
|
348
|
+
if (context.length === 0) {
|
|
349
|
+
// No context, return original embedding
|
|
350
|
+
return {
|
|
351
|
+
enhancedEmbedding: embedding,
|
|
352
|
+
attentionWeights: [],
|
|
353
|
+
confidence: 1.0,
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
const contextEmbeddings = context.map(p => p.embedding);
|
|
357
|
+
const { output, weights } = await this.attention.forward(embedding, contextEmbeddings);
|
|
358
|
+
// Calculate confidence as max attention weight
|
|
359
|
+
const maxWeights = weights.map(w => Math.max(...w));
|
|
360
|
+
const confidence = maxWeights.reduce((a, b) => a + b, 0) / maxWeights.length;
|
|
361
|
+
return {
|
|
362
|
+
enhancedEmbedding: output,
|
|
363
|
+
attentionWeights: weights,
|
|
364
|
+
confidence,
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Build pattern relationship graph
|
|
369
|
+
*/
|
|
370
|
+
async buildPatternGraph(patterns) {
|
|
371
|
+
this.contextPatterns = patterns;
|
|
372
|
+
if (!this.config.enableGNN) {
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
// Add all patterns as nodes
|
|
376
|
+
for (const pattern of patterns) {
|
|
377
|
+
this.gnn.addNode(pattern);
|
|
378
|
+
}
|
|
379
|
+
// Build edges based on similarity
|
|
380
|
+
this.gnn.buildEdges(patterns, 0.7);
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Find optimal traversal path using RL
|
|
384
|
+
*/
|
|
385
|
+
async findOptimalPath(start, targets, k) {
|
|
386
|
+
if (!this.config.enableRLNavigation || this.contextPatterns.length === 0) {
|
|
387
|
+
// Fallback to simple similarity search
|
|
388
|
+
return this.fallbackSearch(start, targets, k);
|
|
389
|
+
}
|
|
390
|
+
// Find nearest pattern as starting point
|
|
391
|
+
const startPattern = this.findNearest(start, this.contextPatterns);
|
|
392
|
+
if (!startPattern) {
|
|
393
|
+
return [];
|
|
394
|
+
}
|
|
395
|
+
// Use RL to find path to targets
|
|
396
|
+
const targetIds = new Set(targets.map(t => t.id));
|
|
397
|
+
const path = this.navigator.findOptimalPath(startPattern.id, targetIds, this.gnn);
|
|
398
|
+
// Convert path to results
|
|
399
|
+
const results = [];
|
|
400
|
+
for (const id of path) {
|
|
401
|
+
const pattern = this.contextPatterns.find(p => p.id === id);
|
|
402
|
+
if (pattern) {
|
|
403
|
+
const score = this.cosineSimilarity(start, pattern.embedding);
|
|
404
|
+
results.push({ pattern, score });
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
return results.slice(0, k);
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Train on feedback (success/failure)
|
|
411
|
+
*/
|
|
412
|
+
async train(feedback) {
|
|
413
|
+
const startTime = Date.now();
|
|
414
|
+
let totalReward = 0;
|
|
415
|
+
let totalLoss = 0;
|
|
416
|
+
for (const fb of feedback) {
|
|
417
|
+
totalReward += fb.reward;
|
|
418
|
+
if (fb.path && fb.path.length > 1) {
|
|
419
|
+
// Train RL navigator
|
|
420
|
+
this.navigator.trainOnPath(fb.path, fb.reward, this.gnn);
|
|
421
|
+
// Calculate loss (for metrics)
|
|
422
|
+
const expectedReward = fb.reward;
|
|
423
|
+
const predictedReward = fb.reward > 0.5 ? 1.0 : 0.0;
|
|
424
|
+
totalLoss += Math.abs(expectedReward - predictedReward);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
const duration = Date.now() - startTime;
|
|
428
|
+
return {
|
|
429
|
+
samplesProcessed: feedback.length,
|
|
430
|
+
averageReward: totalReward / feedback.length,
|
|
431
|
+
loss: totalLoss / feedback.length,
|
|
432
|
+
duration,
|
|
433
|
+
};
|
|
434
|
+
}
|
|
435
|
+
findNearest(query, patterns) {
|
|
436
|
+
if (patterns.length === 0)
|
|
437
|
+
return null;
|
|
438
|
+
let best = patterns[0];
|
|
439
|
+
let bestScore = this.cosineSimilarity(query, best.embedding);
|
|
440
|
+
for (let i = 1; i < patterns.length; i++) {
|
|
441
|
+
const score = this.cosineSimilarity(query, patterns[i].embedding);
|
|
442
|
+
if (score > bestScore) {
|
|
443
|
+
bestScore = score;
|
|
444
|
+
best = patterns[i];
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
return best;
|
|
448
|
+
}
|
|
449
|
+
fallbackSearch(query, targets, k) {
|
|
450
|
+
const results = targets.map(pattern => ({
|
|
451
|
+
pattern,
|
|
452
|
+
score: this.cosineSimilarity(query, pattern.embedding),
|
|
453
|
+
}));
|
|
454
|
+
results.sort((a, b) => b.score - a.score);
|
|
455
|
+
return results.slice(0, k);
|
|
456
|
+
}
|
|
457
|
+
cosineSimilarity(a, b) {
|
|
458
|
+
let dotProduct = 0;
|
|
459
|
+
let normA = 0;
|
|
460
|
+
let normB = 0;
|
|
461
|
+
for (let i = 0; i < a.length; i++) {
|
|
462
|
+
dotProduct += a[i] * b[i];
|
|
463
|
+
normA += a[i] * a[i];
|
|
464
|
+
normB += b[i] * b[i];
|
|
465
|
+
}
|
|
466
|
+
return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
exports.NeuralEnhancementLayer = NeuralEnhancementLayer;
|
|
470
|
+
/**
|
|
471
|
+
* Neural Pattern Store - Enhanced pattern store with neural capabilities
|
|
472
|
+
*
|
|
473
|
+
* Wraps an existing IPatternStore with neural enhancements:
|
|
474
|
+
* - Attention-based query enhancement
|
|
475
|
+
* - GNN-based pattern relationships
|
|
476
|
+
* - RL-based optimal search paths
|
|
477
|
+
*/
|
|
478
|
+
class NeuralPatternStore {
|
|
479
|
+
constructor(baseStore, neural) {
|
|
480
|
+
this.patterns = [];
|
|
481
|
+
this.baseStore = baseStore;
|
|
482
|
+
this.neural = neural;
|
|
483
|
+
}
|
|
484
|
+
async initialize() {
|
|
485
|
+
await this.baseStore.initialize();
|
|
486
|
+
await this.rebuildNeuralGraph();
|
|
487
|
+
}
|
|
488
|
+
async storePattern(pattern) {
|
|
489
|
+
await this.baseStore.storePattern(pattern);
|
|
490
|
+
this.patterns.push(pattern);
|
|
491
|
+
await this.rebuildNeuralGraph();
|
|
492
|
+
}
|
|
493
|
+
async storeBatch(patterns) {
|
|
494
|
+
await this.baseStore.storeBatch(patterns);
|
|
495
|
+
this.patterns.push(...patterns);
|
|
496
|
+
await this.rebuildNeuralGraph();
|
|
497
|
+
}
|
|
498
|
+
/**
|
|
499
|
+
* Enhanced search with neural capabilities
|
|
500
|
+
*/
|
|
501
|
+
async searchSimilar(queryEmbedding, options) {
|
|
502
|
+
const useAttention = options?.useAttention !== false;
|
|
503
|
+
const useGNN = options?.useGNN !== false;
|
|
504
|
+
const k = options?.k || 5;
|
|
505
|
+
// Get base results from underlying store
|
|
506
|
+
const baseResults = await this.baseStore.searchSimilar(queryEmbedding, options);
|
|
507
|
+
if (!useAttention && !useGNN) {
|
|
508
|
+
return baseResults;
|
|
509
|
+
}
|
|
510
|
+
// Apply attention enhancement
|
|
511
|
+
let enhancedQuery = queryEmbedding;
|
|
512
|
+
if (useAttention && this.patterns.length > 0) {
|
|
513
|
+
const attention = await this.neural.enhanceQuery(queryEmbedding);
|
|
514
|
+
enhancedQuery = attention.enhancedEmbedding;
|
|
515
|
+
}
|
|
516
|
+
// Use RL-based navigation if enabled
|
|
517
|
+
if (useGNN && this.patterns.length > 0) {
|
|
518
|
+
const targetPatterns = baseResults.map(r => r.pattern);
|
|
519
|
+
return await this.neural.findOptimalPath(enhancedQuery, targetPatterns, k);
|
|
520
|
+
}
|
|
521
|
+
// Re-score with enhanced query
|
|
522
|
+
const reranked = baseResults.map(result => ({
|
|
523
|
+
pattern: result.pattern,
|
|
524
|
+
score: this.cosineSimilarity(enhancedQuery, result.pattern.embedding),
|
|
525
|
+
}));
|
|
526
|
+
reranked.sort((a, b) => b.score - a.score);
|
|
527
|
+
return reranked.slice(0, k);
|
|
528
|
+
}
|
|
529
|
+
async getPattern(id) {
|
|
530
|
+
return this.baseStore.getPattern(id);
|
|
531
|
+
}
|
|
532
|
+
async deletePattern(id) {
|
|
533
|
+
const result = await this.baseStore.deletePattern(id);
|
|
534
|
+
if (result) {
|
|
535
|
+
this.patterns = this.patterns.filter(p => p.id !== id);
|
|
536
|
+
await this.rebuildNeuralGraph();
|
|
537
|
+
}
|
|
538
|
+
return result;
|
|
539
|
+
}
|
|
540
|
+
async recordUsage(id) {
|
|
541
|
+
return this.baseStore.recordUsage(id);
|
|
542
|
+
}
|
|
543
|
+
async buildIndex() {
|
|
544
|
+
await this.baseStore.buildIndex();
|
|
545
|
+
await this.rebuildNeuralGraph();
|
|
546
|
+
}
|
|
547
|
+
async optimize() {
|
|
548
|
+
return this.baseStore.optimize();
|
|
549
|
+
}
|
|
550
|
+
async getStats() {
|
|
551
|
+
const baseStats = await this.baseStore.getStats();
|
|
552
|
+
return {
|
|
553
|
+
...baseStats,
|
|
554
|
+
neuralEnhanced: true,
|
|
555
|
+
patternsInGraph: this.patterns.length,
|
|
556
|
+
};
|
|
557
|
+
}
|
|
558
|
+
async clear() {
|
|
559
|
+
await this.baseStore.clear();
|
|
560
|
+
this.patterns = [];
|
|
561
|
+
}
|
|
562
|
+
async shutdown() {
|
|
563
|
+
return this.baseStore.shutdown();
|
|
564
|
+
}
|
|
565
|
+
getImplementationInfo() {
|
|
566
|
+
return {
|
|
567
|
+
...this.baseStore.getImplementationInfo(),
|
|
568
|
+
neuralLayer: {
|
|
569
|
+
enabled: true,
|
|
570
|
+
features: ['multi-head-attention', 'gnn', 'rl-navigation'],
|
|
571
|
+
},
|
|
572
|
+
};
|
|
573
|
+
}
|
|
574
|
+
/**
|
|
575
|
+
* Train neural layer on feedback
|
|
576
|
+
*/
|
|
577
|
+
async trainNeural(feedback) {
|
|
578
|
+
return this.neural.train(feedback);
|
|
579
|
+
}
|
|
580
|
+
async rebuildNeuralGraph() {
|
|
581
|
+
if (this.patterns.length > 0) {
|
|
582
|
+
await this.neural.buildPatternGraph(this.patterns);
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
cosineSimilarity(a, b) {
|
|
586
|
+
let dotProduct = 0;
|
|
587
|
+
let normA = 0;
|
|
588
|
+
let normB = 0;
|
|
589
|
+
for (let i = 0; i < a.length; i++) {
|
|
590
|
+
dotProduct += a[i] * b[i];
|
|
591
|
+
normA += a[i] * a[i];
|
|
592
|
+
normB += b[i] * b[i];
|
|
593
|
+
}
|
|
594
|
+
return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
exports.NeuralPatternStore = NeuralPatternStore;
|
|
598
|
+
//# sourceMappingURL=NeuralEnhancement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NeuralEnhancement.js","sourceRoot":"","sources":["../../../src/core/memory/NeuralEnhancement.ts"],"names":[],"mappings":"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"}
|