swarm-engine 1.3.0 → 1.38.0

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 (91) hide show
  1. package/README.md +45 -7
  2. package/dist/cli/commands/memory.js +117 -0
  3. package/dist/cli/commands/memory.js.map +1 -1
  4. package/dist/core/types.d.ts +30 -0
  5. package/dist/core/types.d.ts.map +1 -1
  6. package/dist/index.d.ts +46 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +32 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/memory/index.d.ts +37 -0
  11. package/dist/memory/index.d.ts.map +1 -1
  12. package/dist/memory/index.js +97 -0
  13. package/dist/memory/index.js.map +1 -1
  14. package/dist/runtime/agent-runner.d.ts +10 -0
  15. package/dist/runtime/agent-runner.d.ts.map +1 -1
  16. package/dist/runtime/agent-runner.js +71 -3
  17. package/dist/runtime/agent-runner.js.map +1 -1
  18. package/dist/runtime/engine.d.ts +18 -0
  19. package/dist/runtime/engine.d.ts.map +1 -1
  20. package/dist/runtime/engine.js +306 -2
  21. package/dist/runtime/engine.js.map +1 -1
  22. package/dist/runtime/execution-graph.d.ts +86 -0
  23. package/dist/runtime/execution-graph.d.ts.map +1 -0
  24. package/dist/runtime/execution-graph.js +441 -0
  25. package/dist/runtime/execution-graph.js.map +1 -0
  26. package/dist/runtime/graph-adversarial.d.ts +88 -0
  27. package/dist/runtime/graph-adversarial.d.ts.map +1 -0
  28. package/dist/runtime/graph-adversarial.js +378 -0
  29. package/dist/runtime/graph-adversarial.js.map +1 -0
  30. package/dist/runtime/graph-analyzer.d.ts +106 -0
  31. package/dist/runtime/graph-analyzer.d.ts.map +1 -0
  32. package/dist/runtime/graph-analyzer.js +321 -0
  33. package/dist/runtime/graph-analyzer.js.map +1 -0
  34. package/dist/runtime/graph-causal.d.ts +91 -0
  35. package/dist/runtime/graph-causal.d.ts.map +1 -0
  36. package/dist/runtime/graph-causal.js +292 -0
  37. package/dist/runtime/graph-causal.js.map +1 -0
  38. package/dist/runtime/graph-context-router.d.ts +73 -0
  39. package/dist/runtime/graph-context-router.d.ts.map +1 -0
  40. package/dist/runtime/graph-context-router.js +162 -0
  41. package/dist/runtime/graph-context-router.js.map +1 -0
  42. package/dist/runtime/graph-discovery.d.ts +71 -0
  43. package/dist/runtime/graph-discovery.d.ts.map +1 -0
  44. package/dist/runtime/graph-discovery.js +367 -0
  45. package/dist/runtime/graph-discovery.js.map +1 -0
  46. package/dist/runtime/graph-dropout.d.ts +59 -0
  47. package/dist/runtime/graph-dropout.d.ts.map +1 -0
  48. package/dist/runtime/graph-dropout.js +196 -0
  49. package/dist/runtime/graph-dropout.js.map +1 -0
  50. package/dist/runtime/graph-embeddings.d.ts +58 -0
  51. package/dist/runtime/graph-embeddings.d.ts.map +1 -0
  52. package/dist/runtime/graph-embeddings.js +301 -0
  53. package/dist/runtime/graph-embeddings.js.map +1 -0
  54. package/dist/runtime/graph-feedback.d.ts +30 -0
  55. package/dist/runtime/graph-feedback.d.ts.map +1 -0
  56. package/dist/runtime/graph-feedback.js +82 -0
  57. package/dist/runtime/graph-feedback.js.map +1 -0
  58. package/dist/runtime/graph-gnn.d.ts +120 -0
  59. package/dist/runtime/graph-gnn.d.ts.map +1 -0
  60. package/dist/runtime/graph-gnn.js +524 -0
  61. package/dist/runtime/graph-gnn.js.map +1 -0
  62. package/dist/runtime/graph-learner.d.ts +70 -0
  63. package/dist/runtime/graph-learner.d.ts.map +1 -0
  64. package/dist/runtime/graph-learner.js +265 -0
  65. package/dist/runtime/graph-learner.js.map +1 -0
  66. package/dist/runtime/graph-meta-adversarial.d.ts +113 -0
  67. package/dist/runtime/graph-meta-adversarial.d.ts.map +1 -0
  68. package/dist/runtime/graph-meta-adversarial.js +366 -0
  69. package/dist/runtime/graph-meta-adversarial.js.map +1 -0
  70. package/dist/runtime/graph-meta.d.ts +115 -0
  71. package/dist/runtime/graph-meta.d.ts.map +1 -0
  72. package/dist/runtime/graph-meta.js +437 -0
  73. package/dist/runtime/graph-meta.js.map +1 -0
  74. package/dist/runtime/graph-self-evolve.d.ts +92 -0
  75. package/dist/runtime/graph-self-evolve.d.ts.map +1 -0
  76. package/dist/runtime/graph-self-evolve.js +422 -0
  77. package/dist/runtime/graph-self-evolve.js.map +1 -0
  78. package/dist/runtime/graph-synthesis.d.ts +47 -0
  79. package/dist/runtime/graph-synthesis.d.ts.map +1 -0
  80. package/dist/runtime/graph-synthesis.js +232 -0
  81. package/dist/runtime/graph-synthesis.js.map +1 -0
  82. package/dist/runtime/graph-trajectory.d.ts +88 -0
  83. package/dist/runtime/graph-trajectory.d.ts.map +1 -0
  84. package/dist/runtime/graph-trajectory.js +339 -0
  85. package/dist/runtime/graph-trajectory.js.map +1 -0
  86. package/dist/runtime/learning-engine.d.ts +12 -0
  87. package/dist/runtime/learning-engine.d.ts.map +1 -1
  88. package/dist/runtime/learning-engine.js +64 -0
  89. package/dist/runtime/learning-engine.js.map +1 -1
  90. package/package.json +2 -2
  91. package/skills/swarm-output-style/SKILL.md +71 -33
@@ -0,0 +1,524 @@
1
+ // ─── Matrix ─────────────────────────────────────────────────────────
2
+ /**
3
+ * Pure TypeScript 2D matrix operations for the GNN predictor.
4
+ * No external dependencies — uses Box-Muller for random normal init.
5
+ */
6
+ export class Matrix {
7
+ rows;
8
+ cols;
9
+ data;
10
+ constructor(rows, cols, data) {
11
+ this.rows = rows;
12
+ this.cols = cols;
13
+ this.data = data;
14
+ }
15
+ static zeros(r, c) {
16
+ return new Matrix(r, c, Array.from({ length: r }, () => new Array(c).fill(0)));
17
+ }
18
+ static fromArray(data) {
19
+ const r = data.length;
20
+ const c = r > 0 ? data[0].length : 0;
21
+ return new Matrix(r, c, data.map((row) => [...row]));
22
+ }
23
+ /** Xavier normal via Box-Muller transform. */
24
+ static random(r, c, scale) {
25
+ const data = [];
26
+ for (let i = 0; i < r; i++) {
27
+ const row = [];
28
+ for (let j = 0; j < c; j++) {
29
+ const u1 = Math.random();
30
+ const u2 = Math.random();
31
+ const z = Math.sqrt(-2 * Math.log(Math.max(u1, 1e-10))) * Math.cos(2 * Math.PI * u2);
32
+ row.push(z * scale);
33
+ }
34
+ data.push(row);
35
+ }
36
+ return new Matrix(r, c, data);
37
+ }
38
+ /** (r×k) @ (k×c) → (r×c) */
39
+ multiply(other) {
40
+ if (this.cols !== other.rows) {
41
+ throw new Error(`Matrix multiply: (${this.rows},${this.cols}) × (${other.rows},${other.cols})`);
42
+ }
43
+ const result = Matrix.zeros(this.rows, other.cols);
44
+ for (let i = 0; i < this.rows; i++) {
45
+ for (let k = 0; k < this.cols; k++) {
46
+ const a = this.data[i][k];
47
+ for (let j = 0; j < other.cols; j++) {
48
+ result.data[i][j] += a * other.data[k][j];
49
+ }
50
+ }
51
+ }
52
+ return result;
53
+ }
54
+ /** Element-wise add with (1,c) → (r,c) broadcast support. */
55
+ add(other) {
56
+ if (other.rows === 1 && other.cols === this.cols && this.rows !== 1) {
57
+ const result = Matrix.zeros(this.rows, this.cols);
58
+ for (let i = 0; i < this.rows; i++) {
59
+ for (let j = 0; j < this.cols; j++) {
60
+ result.data[i][j] = this.data[i][j] + other.data[0][j];
61
+ }
62
+ }
63
+ return result;
64
+ }
65
+ if (this.rows !== other.rows || this.cols !== other.cols) {
66
+ throw new Error(`Matrix add: (${this.rows},${this.cols}) + (${other.rows},${other.cols})`);
67
+ }
68
+ const result = Matrix.zeros(this.rows, this.cols);
69
+ for (let i = 0; i < this.rows; i++) {
70
+ for (let j = 0; j < this.cols; j++) {
71
+ result.data[i][j] = this.data[i][j] + other.data[i][j];
72
+ }
73
+ }
74
+ return result;
75
+ }
76
+ subtract(other) {
77
+ if (other.rows === 1 && other.cols === this.cols && this.rows !== 1) {
78
+ const result = Matrix.zeros(this.rows, this.cols);
79
+ for (let i = 0; i < this.rows; i++) {
80
+ for (let j = 0; j < this.cols; j++) {
81
+ result.data[i][j] = this.data[i][j] - other.data[0][j];
82
+ }
83
+ }
84
+ return result;
85
+ }
86
+ if (this.rows !== other.rows || this.cols !== other.cols) {
87
+ throw new Error(`Matrix subtract: (${this.rows},${this.cols}) - (${other.rows},${other.cols})`);
88
+ }
89
+ const result = Matrix.zeros(this.rows, this.cols);
90
+ for (let i = 0; i < this.rows; i++) {
91
+ for (let j = 0; j < this.cols; j++) {
92
+ result.data[i][j] = this.data[i][j] - other.data[i][j];
93
+ }
94
+ }
95
+ return result;
96
+ }
97
+ /** Scalar multiply. */
98
+ scale(s) {
99
+ const result = Matrix.zeros(this.rows, this.cols);
100
+ for (let i = 0; i < this.rows; i++) {
101
+ for (let j = 0; j < this.cols; j++) {
102
+ result.data[i][j] = this.data[i][j] * s;
103
+ }
104
+ }
105
+ return result;
106
+ }
107
+ /** Element-wise multiply. */
108
+ hadamard(other) {
109
+ if (this.rows !== other.rows || this.cols !== other.cols) {
110
+ throw new Error(`Hadamard: (${this.rows},${this.cols}) ⊙ (${other.rows},${other.cols})`);
111
+ }
112
+ const result = Matrix.zeros(this.rows, this.cols);
113
+ for (let i = 0; i < this.rows; i++) {
114
+ for (let j = 0; j < this.cols; j++) {
115
+ result.data[i][j] = this.data[i][j] * other.data[i][j];
116
+ }
117
+ }
118
+ return result;
119
+ }
120
+ transpose() {
121
+ const result = Matrix.zeros(this.cols, this.rows);
122
+ for (let i = 0; i < this.rows; i++) {
123
+ for (let j = 0; j < this.cols; j++) {
124
+ result.data[j][i] = this.data[i][j];
125
+ }
126
+ }
127
+ return result;
128
+ }
129
+ /** max(0, x) */
130
+ relu() {
131
+ const result = Matrix.zeros(this.rows, this.cols);
132
+ for (let i = 0; i < this.rows; i++) {
133
+ for (let j = 0; j < this.cols; j++) {
134
+ result.data[i][j] = Math.max(0, this.data[i][j]);
135
+ }
136
+ }
137
+ return result;
138
+ }
139
+ /** 1/(1+exp(-clamp(x))) with clamp [-500, 500] */
140
+ sigmoid() {
141
+ const result = Matrix.zeros(this.rows, this.cols);
142
+ for (let i = 0; i < this.rows; i++) {
143
+ for (let j = 0; j < this.cols; j++) {
144
+ const x = Math.max(-500, Math.min(500, this.data[i][j]));
145
+ result.data[i][j] = 1 / (1 + Math.exp(-x));
146
+ }
147
+ }
148
+ return result;
149
+ }
150
+ /** 1 if x>0, else 0 */
151
+ reluGrad() {
152
+ const result = Matrix.zeros(this.rows, this.cols);
153
+ for (let i = 0; i < this.rows; i++) {
154
+ for (let j = 0; j < this.cols; j++) {
155
+ result.data[i][j] = this.data[i][j] > 0 ? 1 : 0;
156
+ }
157
+ }
158
+ return result;
159
+ }
160
+ /** (r,c) → (1,c) mean across rows */
161
+ meanRows() {
162
+ if (this.rows === 0)
163
+ return Matrix.zeros(1, this.cols);
164
+ const result = Matrix.zeros(1, this.cols);
165
+ for (let j = 0; j < this.cols; j++) {
166
+ let sum = 0;
167
+ for (let i = 0; i < this.rows; i++)
168
+ sum += this.data[i][j];
169
+ result.data[0][j] = sum / this.rows;
170
+ }
171
+ return result;
172
+ }
173
+ /** (r,c) → (1,c) sum across rows */
174
+ sumRows() {
175
+ const result = Matrix.zeros(1, this.cols);
176
+ for (let j = 0; j < this.cols; j++) {
177
+ let sum = 0;
178
+ for (let i = 0; i < this.rows; i++)
179
+ sum += this.data[i][j];
180
+ result.data[0][j] = sum;
181
+ }
182
+ return result;
183
+ }
184
+ getRow(i) {
185
+ return [...this.data[i]];
186
+ }
187
+ setRow(i, v) {
188
+ this.data[i] = [...v];
189
+ }
190
+ addToRow(i, v) {
191
+ for (let j = 0; j < v.length; j++) {
192
+ this.data[i][j] += v[j];
193
+ }
194
+ }
195
+ toJSON() {
196
+ return this.data.map((row) => [...row]);
197
+ }
198
+ static fromJSON(d) {
199
+ return Matrix.fromArray(d);
200
+ }
201
+ }
202
+ // ─── Node type → feature index ──────────────────────────────────────
203
+ const NODE_TYPE_INDEX = {
204
+ orchestration: 0,
205
+ phase: 1,
206
+ agent: 2,
207
+ file: 3,
208
+ pattern: 4,
209
+ error: 5,
210
+ heuristic: 6,
211
+ };
212
+ // ─── FailurePropagationPredictor ────────────────────────────────────
213
+ /**
214
+ * 3-layer message-passing GNN for predicting orchestration pass/fail
215
+ * from graph topology. Uses the ExecutionGraph for feature extraction
216
+ * and adjacency construction.
217
+ */
218
+ export class FailurePropagationPredictor {
219
+ graph;
220
+ constructor(graph) {
221
+ this.graph = graph;
222
+ }
223
+ /**
224
+ * Extract node features from an orchestration subgraph.
225
+ * Features: 7 one-hot type + 1 success rate = 8 dimensions.
226
+ */
227
+ extractFeatures(orchestrationId) {
228
+ const { nodes } = this.graph.bfs(orchestrationId, 10);
229
+ if (nodes.length === 0) {
230
+ return { features: Matrix.zeros(0, 8), nodeIds: [], adjacency: new Map() };
231
+ }
232
+ const nodeIds = nodes.map((n) => n.id);
233
+ const nodeIndex = new Map(nodeIds.map((id, i) => [id, i]));
234
+ const data = [];
235
+ for (const node of nodes) {
236
+ const row = new Array(8).fill(0);
237
+ const typeIdx = NODE_TYPE_INDEX[node.type] ?? 0;
238
+ row[typeIdx] = 1;
239
+ // Historical success rate from status
240
+ let successRate = 0.5;
241
+ const status = node.properties?.status;
242
+ if (status === 'completed' || status === 'idle')
243
+ successRate = 1.0;
244
+ else if (status === 'failed' || status === 'error' || status === 'timeout')
245
+ successRate = 0.0;
246
+ row[7] = successRate;
247
+ data.push(row);
248
+ }
249
+ // Build adjacency from outgoing edges
250
+ const adjacency = new Map();
251
+ for (let i = 0; i < nodeIds.length; i++) {
252
+ const edges = this.graph.getEdges(nodeIds[i], 'outgoing');
253
+ const neighbors = [];
254
+ for (const edge of edges) {
255
+ const targetIdx = nodeIndex.get(edge.target);
256
+ if (targetIdx !== undefined)
257
+ neighbors.push(targetIdx);
258
+ }
259
+ adjacency.set(i, neighbors);
260
+ }
261
+ return { features: Matrix.fromArray(data), nodeIds, adjacency };
262
+ }
263
+ /** Initialize weights with Xavier normal scaling. */
264
+ initWeights(F = 8, H = 16) {
265
+ const W = [];
266
+ const Bself = [];
267
+ const bias = [];
268
+ for (let k = 0; k < 3; k++) {
269
+ const fanIn = k === 0 ? F : H;
270
+ const fanOut = H;
271
+ const scale = Math.sqrt(2 / (fanIn + fanOut));
272
+ W.push(Matrix.random(fanIn, fanOut, scale));
273
+ Bself.push(Matrix.random(fanIn, fanOut, scale));
274
+ bias.push(Matrix.zeros(1, fanOut));
275
+ }
276
+ const woutScale = Math.sqrt(2 / (H + 1));
277
+ return { W, Bself, bias, Wout: Matrix.random(H, 1, woutScale), bout: 0 };
278
+ }
279
+ /**
280
+ * Forward pass: 3-layer message passing → global mean pool → sigmoid.
281
+ *
282
+ * Per layer: agg_v = mean(H[u] for u in neighbors(v)) [self if isolated]
283
+ * pre_v = agg_v @ W[k] + H[v] @ Bself[k] + bias[k]
284
+ * H_v = ReLU(pre_v)
285
+ * Output: pooled = mean(H_final), logit = pooled @ Wout + bout, pred = sigmoid(logit)
286
+ */
287
+ forward(features, adjacency, weights) {
288
+ const N = features.rows;
289
+ if (N === 0) {
290
+ const clamped = Math.max(-500, Math.min(500, weights.bout));
291
+ return {
292
+ prediction: 1 / (1 + Math.exp(-clamped)),
293
+ layerOutputs: [],
294
+ aggregated: [],
295
+ preActivation: [],
296
+ pooled: Matrix.zeros(1, weights.Wout.rows),
297
+ };
298
+ }
299
+ let H = features;
300
+ const layerOutputs = [];
301
+ const aggregatedList = [];
302
+ const preActivationList = [];
303
+ for (let k = 0; k < 3; k++) {
304
+ // Message passing: aggregate neighbor features
305
+ const aggData = [];
306
+ for (let v = 0; v < N; v++) {
307
+ const neighbors = adjacency.get(v) || [];
308
+ if (neighbors.length === 0) {
309
+ aggData.push(H.getRow(v)); // self if isolated
310
+ }
311
+ else {
312
+ const row = new Array(H.cols).fill(0);
313
+ for (const u of neighbors) {
314
+ const uRow = H.getRow(u);
315
+ for (let j = 0; j < H.cols; j++)
316
+ row[j] += uRow[j];
317
+ }
318
+ for (let j = 0; j < H.cols; j++)
319
+ row[j] /= neighbors.length;
320
+ aggData.push(row);
321
+ }
322
+ }
323
+ const agg = Matrix.fromArray(aggData);
324
+ aggregatedList.push(agg);
325
+ // pre = agg @ W[k] + H @ Bself[k] + bias[k]
326
+ const pre = agg.multiply(weights.W[k]).add(H.multiply(weights.Bself[k])).add(weights.bias[k]);
327
+ preActivationList.push(pre);
328
+ H = pre.relu();
329
+ layerOutputs.push(H);
330
+ }
331
+ // Global mean pooling → (1, H)
332
+ const pooled = H.meanRows();
333
+ // Output logit → sigmoid
334
+ const logitMat = pooled.multiply(weights.Wout); // (1,1)
335
+ const logit = logitMat.data[0][0] + weights.bout;
336
+ const clamped = Math.max(-500, Math.min(500, logit));
337
+ const prediction = 1 / (1 + Math.exp(-clamped));
338
+ return { prediction, layerOutputs, aggregated: aggregatedList, preActivation: preActivationList, pooled };
339
+ }
340
+ /**
341
+ * Train on one example via backprop through all 3 message-passing layers.
342
+ * Updates weights in-place. Returns binary cross-entropy loss.
343
+ */
344
+ trainStep(features, adjacency, label, weights, lr = 0.01) {
345
+ const N = features.rows;
346
+ if (N === 0)
347
+ return 0;
348
+ const { prediction, layerOutputs, aggregated, preActivation, pooled } = this.forward(features, adjacency, weights);
349
+ // Binary cross-entropy loss
350
+ const eps = 1e-7;
351
+ const pc = Math.max(eps, Math.min(1 - eps, prediction));
352
+ const loss = -(label * Math.log(pc) + (1 - label) * Math.log(1 - pc));
353
+ // ── Backward pass ──
354
+ // dL/dlogit for BCE + sigmoid = prediction - label
355
+ const dLogit = prediction - label;
356
+ // Output layer: logit = pooled @ Wout + bout
357
+ const dWout = pooled.transpose().scale(dLogit); // (H, 1)
358
+ const dBout = dLogit;
359
+ const dPooled = weights.Wout.transpose().scale(dLogit); // (1, H)
360
+ // Mean pooling: pooled = meanRows(H_final) → distribute equally
361
+ let dH = Matrix.fromArray(Array.from({ length: N }, () => dPooled.data[0].map((v) => v / N)));
362
+ // Backprop through layers in reverse
363
+ const dW = new Array(3);
364
+ const dBself = new Array(3);
365
+ const dBias = new Array(3);
366
+ for (let k = 2; k >= 0; k--) {
367
+ // H_{k+1} = ReLU(pre_k) → dPre = dH ⊙ reluGrad(pre_k)
368
+ const dPre = dH.hadamard(preActivation[k].reluGrad());
369
+ const Hprev = k === 0 ? features : layerOutputs[k - 1];
370
+ // Parameter gradients
371
+ dW[k] = aggregated[k].transpose().multiply(dPre); // (H_in, H_out)
372
+ dBself[k] = Hprev.transpose().multiply(dPre); // (H_in, H_out)
373
+ dBias[k] = dPre.sumRows(); // (1, H_out)
374
+ // Gradients w.r.t. inputs
375
+ const dAgg = dPre.multiply(weights.W[k].transpose()); // (N, H_in)
376
+ const dHprevSelf = dPre.multiply(weights.Bself[k].transpose()); // (N, H_in)
377
+ // Backprop through neighbor aggregation
378
+ const dHprevAgg = Matrix.zeros(N, Hprev.cols);
379
+ for (let v = 0; v < N; v++) {
380
+ const neighbors = adjacency.get(v) || [];
381
+ if (neighbors.length === 0) {
382
+ // Self was used as aggregation → gradient flows to self
383
+ dHprevAgg.addToRow(v, dAgg.getRow(v));
384
+ }
385
+ else {
386
+ const dAggRow = dAgg.getRow(v);
387
+ for (const u of neighbors) {
388
+ const scaled = dAggRow.map((val) => val / neighbors.length);
389
+ dHprevAgg.addToRow(u, scaled);
390
+ }
391
+ }
392
+ }
393
+ dH = dHprevSelf.add(dHprevAgg);
394
+ }
395
+ // Update weights in-place
396
+ for (let k = 0; k < 3; k++) {
397
+ weights.W[k] = weights.W[k].subtract(dW[k].scale(lr));
398
+ weights.Bself[k] = weights.Bself[k].subtract(dBself[k].scale(lr));
399
+ weights.bias[k] = weights.bias[k].subtract(dBias[k].scale(lr));
400
+ }
401
+ weights.Wout = weights.Wout.subtract(dWout.scale(lr));
402
+ weights.bout -= lr * dBout;
403
+ return loss;
404
+ }
405
+ /** Train on all historical orchestrations. Label: 1=completed, 0=failed. */
406
+ train(weights, epochs = 50, lr = 0.01) {
407
+ const orchestrations = this.graph.getNodesByType('orchestration');
408
+ const examples = [];
409
+ for (const orch of orchestrations) {
410
+ const status = orch.properties?.status;
411
+ if (!status)
412
+ continue;
413
+ const label = status === 'completed' ? 1 : 0;
414
+ const { features, adjacency } = this.extractFeatures(orch.id);
415
+ if (features.rows === 0)
416
+ continue;
417
+ examples.push({ features, adjacency, label });
418
+ }
419
+ if (examples.length === 0)
420
+ return { finalLoss: 0, epochs: 0 };
421
+ let finalLoss = 0;
422
+ for (let epoch = 0; epoch < epochs; epoch++) {
423
+ let totalLoss = 0;
424
+ for (const ex of examples) {
425
+ totalLoss += this.trainStep(ex.features, ex.adjacency, ex.label, weights, lr);
426
+ }
427
+ finalLoss = totalLoss / examples.length;
428
+ }
429
+ return { finalLoss, epochs };
430
+ }
431
+ /**
432
+ * Predict failure risk per node. Per-node risk is derived from
433
+ * the node's final hidden representation projected through Wout:
434
+ * risk = 1 - sigmoid(H_v @ Wout + bout).
435
+ */
436
+ predict(orchestrationId, weights) {
437
+ const { features, nodeIds, adjacency } = this.extractFeatures(orchestrationId);
438
+ if (features.rows === 0)
439
+ return [];
440
+ const { layerOutputs } = this.forward(features, adjacency, weights);
441
+ const finalH = layerOutputs[layerOutputs.length - 1];
442
+ const risks = [];
443
+ for (let i = 0; i < nodeIds.length; i++) {
444
+ const nodeRow = finalH.getRow(i);
445
+ let logit = weights.bout;
446
+ for (let j = 0; j < nodeRow.length; j++)
447
+ logit += nodeRow[j] * weights.Wout.data[j][0];
448
+ const clamped = Math.max(-500, Math.min(500, logit));
449
+ // risk = 1 - P(success) = P(failure)
450
+ const riskScore = 1 - 1 / (1 + Math.exp(-clamped));
451
+ const outEdges = adjacency.get(i) || [];
452
+ const affectedDownstream = outEdges.map((idx) => nodeIds[idx]);
453
+ const node = this.graph.getNode(nodeIds[i]);
454
+ risks.push({
455
+ nodeId: nodeIds[i],
456
+ nodeType: node?.type ?? 'unknown',
457
+ riskScore,
458
+ affectedDownstream,
459
+ });
460
+ }
461
+ return risks.sort((a, b) => b.riskScore - a.riskScore);
462
+ }
463
+ /**
464
+ * Find optimal circuit breaker placement by simulating node removal.
465
+ * For each node, zero its features and re-run forward. Nodes whose
466
+ * removal most increases the success prediction are candidates.
467
+ */
468
+ findCircuitBreakers(orchestrationId, weights) {
469
+ const { features, nodeIds, adjacency } = this.extractFeatures(orchestrationId);
470
+ if (features.rows === 0)
471
+ return [];
472
+ const baseline = this.forward(features, adjacency, weights);
473
+ const baselinePred = baseline.prediction;
474
+ const breakers = [];
475
+ for (let i = 0; i < nodeIds.length; i++) {
476
+ // Zero out node i's features to simulate removal
477
+ const modified = Matrix.fromArray(features.toJSON());
478
+ modified.setRow(i, new Array(features.cols).fill(0));
479
+ const result = this.forward(modified, adjacency, weights);
480
+ // Positive riskReduction = removing this node improves success prediction
481
+ const riskReduction = result.prediction - baselinePred;
482
+ if (riskReduction > 0.01) {
483
+ const node = this.graph.getNode(nodeIds[i]);
484
+ breakers.push({
485
+ afterNodeId: nodeIds[i],
486
+ riskReduction,
487
+ reason: `Removing ${node?.type ?? 'node'} "${node?.label ?? nodeIds[i]}" reduces failure risk by ${(riskReduction * 100).toFixed(1)}%`,
488
+ });
489
+ }
490
+ }
491
+ return breakers.sort((a, b) => b.riskReduction - a.riskReduction);
492
+ }
493
+ /**
494
+ * Compute the GNN pooled embedding for an orchestration.
495
+ * Returns the 16-dim mean-pooled hidden state, or null if no nodes found.
496
+ * Used by OrchestrationEmbedder for similarity search.
497
+ */
498
+ embed(orchestrationId, weights) {
499
+ const { features, nodeIds, adjacency } = this.extractFeatures(orchestrationId);
500
+ if (nodeIds.length === 0)
501
+ return null;
502
+ const { pooled } = this.forward(features, adjacency, weights);
503
+ return pooled.data[0];
504
+ }
505
+ static weightsToJSON(w) {
506
+ return {
507
+ W: w.W.map((m) => m.toJSON()),
508
+ Bself: w.Bself.map((m) => m.toJSON()),
509
+ bias: w.bias.map((m) => m.toJSON()),
510
+ Wout: w.Wout.toJSON(),
511
+ bout: w.bout,
512
+ };
513
+ }
514
+ static weightsFromJSON(d) {
515
+ return {
516
+ W: d.W.map((m) => Matrix.fromJSON(m)),
517
+ Bself: d.Bself.map((m) => Matrix.fromJSON(m)),
518
+ bias: d.bias.map((m) => Matrix.fromJSON(m)),
519
+ Wout: Matrix.fromJSON(d.Wout),
520
+ bout: d.bout,
521
+ };
522
+ }
523
+ }
524
+ //# sourceMappingURL=graph-gnn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-gnn.js","sourceRoot":"","sources":["../../src/runtime/graph-gnn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import type { ExecutionGraph } from './execution-graph.js';
2
+ import type { ConfidenceTier } from '../core/types.js';
3
+ export interface PatternStats {
4
+ pattern: string;
5
+ totalRuns: number;
6
+ successCount: number;
7
+ failCount: number;
8
+ successRate: number;
9
+ avgDurationMs: number;
10
+ avgCostUsd: number;
11
+ }
12
+ export interface FileCoModification {
13
+ file1: string;
14
+ file2: string;
15
+ coModCount: number;
16
+ confidence: ConfidenceTier;
17
+ }
18
+ export interface AgentFilePerformance {
19
+ agentType: string;
20
+ filePattern: string;
21
+ successRate: number;
22
+ sampleSize: number;
23
+ }
24
+ /**
25
+ * Extract file-like references from a text string.
26
+ * Matches patterns like "src/runtime/foo.ts", "test/bar.spec.js", "file.ext".
27
+ */
28
+ export declare function extractFileReferences(text: string): string[];
29
+ /**
30
+ * Cross-run learning from the execution graph.
31
+ * Queries accumulated graph data across all past orchestrations to
32
+ * surface pattern success rates, file co-modifications, and agent
33
+ * performance by file context.
34
+ */
35
+ export declare class GraphLearner {
36
+ private graph;
37
+ constructor(graph: ExecutionGraph | null);
38
+ /**
39
+ * Get success/failure stats for a pattern across all recorded runs.
40
+ * Pass a pattern name to filter, or omit for all patterns.
41
+ */
42
+ getPatternStats(patternName?: string): PatternStats[];
43
+ /**
44
+ * Find files that are frequently modified together across orchestrations.
45
+ * Returns pairs sorted by co-modification count (descending).
46
+ */
47
+ getFileCoModifications(minCount?: number): FileCoModification[];
48
+ /**
49
+ * Get agent performance stats segmented by file directory.
50
+ * Only returns buckets with sampleSize >= 2 to avoid noise.
51
+ */
52
+ getAgentFilePerformance(agentType?: string): AgentFilePerformance[];
53
+ /**
54
+ * Record cross-run edges after an orchestration completes.
55
+ * Links files that were co-modified in this orchestration to files
56
+ * co-modified in other orchestrations via INFERRED co_modified edges.
57
+ */
58
+ recordCrossRunEdges(orchestrationId: string): void;
59
+ /**
60
+ * Given a list of files from an agent's task, find co-modified files
61
+ * and format as prompt hint text. Caps at top 5 suggestions.
62
+ * Skips AMBIGUOUS confidence entries (too noisy).
63
+ */
64
+ getCoModHints(files: string[], minCount?: number): string;
65
+ /**
66
+ * Format pattern stats as context for agent prompts.
67
+ */
68
+ formatPatternContext(stats: PatternStats[]): string;
69
+ }
70
+ //# sourceMappingURL=graph-learner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-learner.d.ts","sourceRoot":"","sources":["../../src/runtime/graph-learner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAa,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIlE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAc5D;AAID;;;;;GAKG;AACH,qBAAa,YAAY;IACX,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,cAAc,GAAG,IAAI;IAEhD;;;OAGG;IACH,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;IA0CrD;;;OAGG;IACH,sBAAsB,CAAC,QAAQ,SAAI,GAAG,kBAAkB,EAAE;IA2D1D;;;OAGG;IACH,uBAAuB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,oBAAoB,EAAE;IAyCnE;;;;OAIG;IACH,mBAAmB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI;IAyBlD;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAuDzD;;OAEG;IACH,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM;CAapD"}