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,366 @@
1
+ const NOISE_WORDS = ['really', 'very', 'also', 'maybe', 'just', 'simply', 'quite'];
2
+ const MISLEADING_PREFIXES = [
3
+ 'ignore previous instructions and',
4
+ 'actually this is about',
5
+ 'unrelated but',
6
+ 'contrary to the above',
7
+ ];
8
+ // ─── Seeded RNG ──────────────────────────────────────────────────
9
+ /**
10
+ * Simple mulberry32 PRNG for deterministic perturbations.
11
+ * Returns a function that produces [0,1) floats.
12
+ */
13
+ function mulberry32(seed) {
14
+ let s = seed | 0;
15
+ return () => {
16
+ s = (s + 0x6d2b79f5) | 0;
17
+ let t = Math.imul(s ^ (s >>> 15), 1 | s);
18
+ t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;
19
+ return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
20
+ };
21
+ }
22
+ // ─── MetaAdversarialTester ───────────────────────────────────────
23
+ /**
24
+ * Red-teams the orchestration engine's own decision-making subsystems
25
+ * by perturbing inputs and checking if outputs change dramatically
26
+ * (sensitivity analysis). This is a testing/auditing tool, not a
27
+ * runtime component.
28
+ */
29
+ export class MetaAdversarialTester {
30
+ graph;
31
+ constructor(graph) {
32
+ this.graph = graph;
33
+ }
34
+ // ─── Pattern Selector Testing ─────────────────────────────────
35
+ /**
36
+ * Test if a pattern selector is fragile to input perturbation.
37
+ * Generates perturbation pairs and checks if the recommendation changes.
38
+ */
39
+ testPatternSelector(selector, numTrials = 20) {
40
+ const vulns = [];
41
+ const strategies = ['noise', 'swap', 'truncate', 'prefix'];
42
+ const baseTasks = [
43
+ 'implement user authentication with OAuth',
44
+ 'refactor database layer to use connection pooling',
45
+ 'add unit tests for the payment service',
46
+ 'review security of the API endpoints',
47
+ 'debug the memory leak in the worker process',
48
+ ];
49
+ const rng = mulberry32(42);
50
+ for (let i = 0; i < numTrials; i++) {
51
+ const baseTask = baseTasks[i % baseTasks.length];
52
+ const strategy = strategies[Math.floor(rng() * strategies.length)];
53
+ const perturbed = MetaAdversarialTester.perturbText(baseTask, strategy, rng);
54
+ const originalResult = selector.selectPattern(baseTask);
55
+ const perturbedResult = selector.selectPattern(perturbed);
56
+ const sensitivityScore = this.computePatternSensitivity(originalResult, perturbedResult);
57
+ if (originalResult.pattern !== perturbedResult.pattern) {
58
+ vulns.push({
59
+ system: 'patternSelector',
60
+ severity: sensitivityScore > 0.7 ? 'high' : sensitivityScore > 0.3 ? 'medium' : 'low',
61
+ description: `Pattern selection changed from '${originalResult.pattern}' to '${perturbedResult.pattern}' with ${strategy} perturbation`,
62
+ perturbation: `${strategy}: "${baseTask}" → "${perturbed}"`,
63
+ originalOutput: `${originalResult.pattern} (confidence: ${originalResult.confidence.toFixed(3)})`,
64
+ perturbedOutput: `${perturbedResult.pattern} (confidence: ${perturbedResult.confidence.toFixed(3)})`,
65
+ sensitivityScore,
66
+ });
67
+ }
68
+ }
69
+ return vulns;
70
+ }
71
+ // ─── Dropout Predictor Testing ────────────────────────────────
72
+ /**
73
+ * Test if a dropout predictor makes wrong decisions at boundaries.
74
+ * Varies agent type, phase kind, and file count to find flip points.
75
+ */
76
+ testDropoutPredictor(dropout, numTrials = 20) {
77
+ const vulns = [];
78
+ const agentTypes = ['researcher', 'implementer', 'reviewer', 'tester', 'debugger', 'documenter'];
79
+ const phaseKinds = ['research', 'implement', 'review', 'test'];
80
+ const patterns = ['research', 'tdd', 'red-team', 'review-cycle', 'spike'];
81
+ const rng = mulberry32(123);
82
+ for (let i = 0; i < numTrials; i++) {
83
+ const agentType = agentTypes[Math.floor(rng() * agentTypes.length)];
84
+ const phaseKind = phaseKinds[Math.floor(rng() * phaseKinds.length)];
85
+ const pattern = patterns[Math.floor(rng() * patterns.length)];
86
+ const fileCount = Math.floor(rng() * 30);
87
+ const agents = [{ id: `agent-${i}`, agentType }];
88
+ // Get baseline prediction
89
+ const baseline = dropout.predictRedundant(agents, phaseKind, fileCount, pattern);
90
+ if (baseline.length === 0)
91
+ continue;
92
+ // Perturb: swap to adjacent agent type
93
+ const adjIdx = (agentTypes.indexOf(agentType) + 1) % agentTypes.length;
94
+ const adjAgentType = agentTypes[adjIdx];
95
+ const perturbedAgents = [{ id: `agent-${i}`, agentType: adjAgentType }];
96
+ const perturbedResult = dropout.predictRedundant(perturbedAgents, phaseKind, fileCount, pattern);
97
+ if (perturbedResult.length === 0)
98
+ continue;
99
+ // Check if shouldDropOut flipped
100
+ if (baseline[0].shouldDropOut !== perturbedResult[0].shouldDropOut) {
101
+ const delta = Math.abs(baseline[0].predictedContribution - perturbedResult[0].predictedContribution);
102
+ const sensitivityScore = Math.min(1, delta / 0.5); // normalize: 0.5 delta = score 1.0
103
+ vulns.push({
104
+ system: 'dropout',
105
+ severity: sensitivityScore > 0.7 ? 'high' : sensitivityScore > 0.3 ? 'medium' : 'low',
106
+ description: `Dropout decision flipped when changing agent type from '${agentType}' to '${adjAgentType}'`,
107
+ perturbation: `agentType: ${agentType} → ${adjAgentType} (phase=${phaseKind}, files=${fileCount}, pattern=${pattern})`,
108
+ originalOutput: `shouldDropOut=${baseline[0].shouldDropOut} (contribution=${baseline[0].predictedContribution.toFixed(3)})`,
109
+ perturbedOutput: `shouldDropOut=${perturbedResult[0].shouldDropOut} (contribution=${perturbedResult[0].predictedContribution.toFixed(3)})`,
110
+ sensitivityScore,
111
+ });
112
+ }
113
+ // Perturb: vary file count by ±1
114
+ for (const delta of [-1, 1]) {
115
+ const adjFileCount = Math.max(0, fileCount + delta);
116
+ if (adjFileCount === fileCount)
117
+ continue;
118
+ const fcResult = dropout.predictRedundant(agents, phaseKind, adjFileCount, pattern);
119
+ if (fcResult.length === 0)
120
+ continue;
121
+ if (baseline[0].shouldDropOut !== fcResult[0].shouldDropOut) {
122
+ const predDelta = Math.abs(baseline[0].predictedContribution - fcResult[0].predictedContribution);
123
+ const sensitivityScore = Math.min(1, predDelta / 0.5);
124
+ vulns.push({
125
+ system: 'dropout',
126
+ severity: sensitivityScore > 0.7 ? 'high' : sensitivityScore > 0.3 ? 'medium' : 'low',
127
+ description: `Dropout decision flipped when changing fileCount by ${delta}`,
128
+ perturbation: `fileCount: ${fileCount} → ${adjFileCount} (agent=${agentType}, phase=${phaseKind}, pattern=${pattern})`,
129
+ originalOutput: `shouldDropOut=${baseline[0].shouldDropOut} (contribution=${baseline[0].predictedContribution.toFixed(3)})`,
130
+ perturbedOutput: `shouldDropOut=${fcResult[0].shouldDropOut} (contribution=${fcResult[0].predictedContribution.toFixed(3)})`,
131
+ sensitivityScore,
132
+ });
133
+ }
134
+ }
135
+ }
136
+ return vulns;
137
+ }
138
+ // ─── Causal Engine Testing ────────────────────────────────────
139
+ /**
140
+ * Test if a causal engine finds spurious correlations.
141
+ * Creates synthetic scenarios with known confounders and Simpson's paradox data.
142
+ */
143
+ testCausalEngine(causal, numTrials = 10) {
144
+ const vulns = [];
145
+ const rng = mulberry32(456);
146
+ // Trial set 1: Stability under repeated calls with same args
147
+ // The engine reads from the graph, so the same call should yield the same result.
148
+ const treatments = ['model', 'agentType'];
149
+ const valuePairs = [
150
+ ['model', 'opus', 'sonnet'],
151
+ ['agentType', 'implementer', 'reviewer'],
152
+ ];
153
+ for (let i = 0; i < Math.min(numTrials, valuePairs.length); i++) {
154
+ const [treatment, treatVal, controlVal] = valuePairs[i % valuePairs.length];
155
+ const result1 = causal.estimateCausalEffect(treatment, treatVal, controlVal);
156
+ const result2 = causal.estimateCausalEffect(treatment, treatVal, controlVal);
157
+ // Same inputs should produce same outputs (deterministic)
158
+ if (Math.abs(result1.effect - result2.effect) > 0.001) {
159
+ const sensitivityScore = Math.min(1, Math.abs(result1.effect - result2.effect));
160
+ vulns.push({
161
+ system: 'causal',
162
+ severity: 'high',
163
+ description: `Non-deterministic causal effect estimation: same inputs produced different outputs`,
164
+ perturbation: `Repeated call: estimateCausalEffect(${treatment}, ${treatVal}, ${controlVal})`,
165
+ originalOutput: `effect=${result1.effect.toFixed(3)}, confidence=${result1.confidence}`,
166
+ perturbedOutput: `effect=${result2.effect.toFixed(3)}, confidence=${result2.confidence}`,
167
+ sensitivityScore,
168
+ });
169
+ }
170
+ }
171
+ // Trial set 2: Symmetry test — swapping treatment/control should negate the effect
172
+ for (let i = 0; i < Math.min(numTrials, valuePairs.length); i++) {
173
+ const [treatment, treatVal, controlVal] = valuePairs[i % valuePairs.length];
174
+ const forward = causal.estimateCausalEffect(treatment, treatVal, controlVal);
175
+ const reverse = causal.estimateCausalEffect(treatment, controlVal, treatVal);
176
+ const expectedReverse = -forward.effect;
177
+ const asymmetry = Math.abs(reverse.effect - expectedReverse);
178
+ if (asymmetry > 0.05 && forward.sampleCount >= 3) {
179
+ const sensitivityScore = Math.min(1, asymmetry);
180
+ vulns.push({
181
+ system: 'causal',
182
+ severity: asymmetry > 0.3 ? 'high' : asymmetry > 0.1 ? 'medium' : 'low',
183
+ description: `Asymmetric causal effect: forward(${treatVal}→${controlVal})=${forward.effect.toFixed(3)} but reverse≠${expectedReverse.toFixed(3)} (got ${reverse.effect.toFixed(3)})`,
184
+ perturbation: `Swapped treatment/control: ${treatVal}↔${controlVal}`,
185
+ originalOutput: `effect=${forward.effect.toFixed(3)} (${treatment}: ${treatVal} vs ${controlVal})`,
186
+ perturbedOutput: `effect=${reverse.effect.toFixed(3)} (${treatment}: ${controlVal} vs ${treatVal})`,
187
+ sensitivityScore,
188
+ });
189
+ }
190
+ }
191
+ // Trial set 3: Boundary sensitivity — does a small sample change flip the estimate direction?
192
+ for (let i = 0; i < Math.min(numTrials - 4, valuePairs.length); i++) {
193
+ const [treatment, treatVal, controlVal] = valuePairs[i % valuePairs.length];
194
+ const result = causal.estimateCausalEffect(treatment, treatVal, controlVal);
195
+ if (result.sampleCount >= 3 && result.confidence === 'low') {
196
+ // Low confidence with enough samples suggests boundary sensitivity
197
+ const sensitivityScore = Math.min(1, Math.abs(result.effect) < 0.1 ? 0.8 : 0.4);
198
+ vulns.push({
199
+ system: 'causal',
200
+ severity: 'medium',
201
+ description: `Low confidence causal estimate with ${result.sampleCount} samples — near decision boundary`,
202
+ perturbation: `Boundary probe: ${treatment}=${treatVal} vs ${controlVal}`,
203
+ originalOutput: `effect=${result.effect.toFixed(3)}, confidence=${result.confidence}, n=${result.sampleCount}`,
204
+ perturbedOutput: `(boundary sensitivity detected)`,
205
+ sensitivityScore,
206
+ });
207
+ }
208
+ }
209
+ return vulns;
210
+ }
211
+ // ─── Full Audit ───────────────────────────────────────────────
212
+ /**
213
+ * Run a comprehensive audit across all provided subsystems.
214
+ */
215
+ runFullAudit(systems) {
216
+ const vulns = [];
217
+ const audited = [];
218
+ let totalTrials = 0;
219
+ if (systems.patternSelector) {
220
+ const v = this.testPatternSelector(systems.patternSelector);
221
+ vulns.push(...v);
222
+ audited.push('patternSelector');
223
+ totalTrials += 20; // default numTrials
224
+ }
225
+ if (systems.dropout) {
226
+ const v = this.testDropoutPredictor(systems.dropout);
227
+ vulns.push(...v);
228
+ audited.push('dropout');
229
+ totalTrials += 20;
230
+ }
231
+ if (systems.causal) {
232
+ const v = this.testCausalEngine(systems.causal);
233
+ vulns.push(...v);
234
+ audited.push('causal');
235
+ totalTrials += 10;
236
+ }
237
+ const highCount = vulns.filter((v) => v.severity === 'high').length;
238
+ const overallRisk = highCount > 2 ? 'high' : highCount > 0 ? 'medium' : 'low';
239
+ return {
240
+ vulnerabilities: vulns,
241
+ overallRisk,
242
+ recommendations: this.generateRecommendations(vulns),
243
+ systemsAudited: audited,
244
+ totalTrials,
245
+ };
246
+ }
247
+ // ─── Recommendation Generation ────────────────────────────────
248
+ generateRecommendations(vulns) {
249
+ const recommendations = [];
250
+ const bySeverity = new Map();
251
+ for (const v of vulns) {
252
+ const key = v.system;
253
+ if (!bySeverity.has(key))
254
+ bySeverity.set(key, []);
255
+ bySeverity.get(key).push(v);
256
+ }
257
+ for (const [system, sysVulns] of bySeverity) {
258
+ const highCount = sysVulns.filter((v) => v.severity === 'high').length;
259
+ const medCount = sysVulns.filter((v) => v.severity === 'medium').length;
260
+ if (highCount > 0) {
261
+ switch (system) {
262
+ case 'patternSelector':
263
+ recommendations.push(`Pattern selector has ${highCount} high-severity vulnerabilities. Consider adding input normalization (lowercasing, stopword removal) before pattern selection, or increasing training data diversity.`);
264
+ break;
265
+ case 'dropout':
266
+ recommendations.push(`Dropout predictor has ${highCount} high-severity boundary flips. Consider widening the uncertainty band or requiring human confirmation for borderline decisions.`);
267
+ break;
268
+ case 'causal':
269
+ recommendations.push(`Causal engine has ${highCount} high-severity issues. Review confounder identification and ensure symmetry in effect estimation.`);
270
+ break;
271
+ }
272
+ }
273
+ if (medCount > 0 && highCount === 0) {
274
+ recommendations.push(`${system} has ${medCount} medium-severity vulnerabilities. Monitor for regression as the model trains on more data.`);
275
+ }
276
+ }
277
+ if (vulns.length === 0) {
278
+ recommendations.push('No vulnerabilities detected. Continue monitoring with expanded trial sets.');
279
+ }
280
+ return recommendations;
281
+ }
282
+ // ─── Sensitivity Computation ──────────────────────────────────
283
+ /**
284
+ * Compute sensitivity between two pattern selection results.
285
+ * Uses 1 - cosine similarity of the confidence distributions.
286
+ */
287
+ computePatternSensitivity(original, perturbed) {
288
+ // Build confidence vectors over the union of all patterns
289
+ const allPatterns = new Set();
290
+ allPatterns.add(original.pattern);
291
+ allPatterns.add(perturbed.pattern);
292
+ for (const alt of original.alternatives ?? [])
293
+ allPatterns.add(alt.pattern);
294
+ for (const alt of perturbed.alternatives ?? [])
295
+ allPatterns.add(alt.pattern);
296
+ const patternList = [...allPatterns];
297
+ const getConfidence = (result, p) => {
298
+ if (result.pattern === p)
299
+ return result.confidence;
300
+ const alt = result.alternatives?.find((a) => a.pattern === p);
301
+ return alt?.confidence ?? 0;
302
+ };
303
+ const vecA = patternList.map((p) => getConfidence(original, p));
304
+ const vecB = patternList.map((p) => getConfidence(perturbed, p));
305
+ // Cosine similarity
306
+ let dot = 0;
307
+ let magA = 0;
308
+ let magB = 0;
309
+ for (let i = 0; i < vecA.length; i++) {
310
+ dot += vecA[i] * vecB[i];
311
+ magA += vecA[i] * vecA[i];
312
+ magB += vecB[i] * vecB[i];
313
+ }
314
+ const denom = Math.sqrt(magA) * Math.sqrt(magB);
315
+ const cosSim = denom === 0 ? 0 : dot / denom;
316
+ return Math.max(0, Math.min(1, 1 - cosSim));
317
+ }
318
+ // ─── Perturbation Utilities ───────────────────────────────────
319
+ /**
320
+ * Deterministic text perturbation given a strategy and optional RNG.
321
+ * - noise: insert random words between existing words
322
+ * - swap: swap two adjacent words
323
+ * - truncate: remove last ~20% of text
324
+ * - prefix: add misleading prefix
325
+ */
326
+ static perturbText(text, strategy, rng) {
327
+ const rand = rng ?? mulberry32(0);
328
+ const words = text.split(/\s+/).filter((w) => w.length > 0);
329
+ switch (strategy) {
330
+ case 'noise': {
331
+ if (words.length === 0)
332
+ return text;
333
+ const result = [...words];
334
+ // Insert 1-2 noise words at random positions
335
+ const insertCount = Math.max(1, Math.floor(rand() * 2) + 1);
336
+ for (let i = 0; i < insertCount; i++) {
337
+ const pos = Math.floor(rand() * (result.length + 1));
338
+ const noiseWord = NOISE_WORDS[Math.floor(rand() * NOISE_WORDS.length)];
339
+ result.splice(pos, 0, noiseWord);
340
+ }
341
+ return result.join(' ');
342
+ }
343
+ case 'swap': {
344
+ if (words.length < 2)
345
+ return text;
346
+ const result = [...words];
347
+ const pos = Math.floor(rand() * (result.length - 1));
348
+ const tmp = result[pos];
349
+ result[pos] = result[pos + 1];
350
+ result[pos + 1] = tmp;
351
+ return result.join(' ');
352
+ }
353
+ case 'truncate': {
354
+ if (words.length <= 1)
355
+ return text;
356
+ const keepCount = Math.max(1, Math.ceil(words.length * 0.8));
357
+ return words.slice(0, keepCount).join(' ');
358
+ }
359
+ case 'prefix': {
360
+ const prefix = MISLEADING_PREFIXES[Math.floor(rand() * MISLEADING_PREFIXES.length)];
361
+ return `${prefix} ${text}`;
362
+ }
363
+ }
364
+ }
365
+ }
366
+ //# sourceMappingURL=graph-meta-adversarial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-meta-adversarial.js","sourceRoot":"","sources":["../../src/runtime/graph-meta-adversarial.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ import type { ExecutionGraph } from './execution-graph.js';
2
+ export interface TfIdfModel {
3
+ vocabulary: Map<string, number>;
4
+ idf: number[];
5
+ documentCount: number;
6
+ }
7
+ export interface PatternModel {
8
+ pattern: string;
9
+ weights: number[];
10
+ bias: number;
11
+ learnRate: number;
12
+ lambda: number;
13
+ totalExamples: number;
14
+ positiveExamples: number;
15
+ }
16
+ export interface PatternRecommendation {
17
+ pattern: string;
18
+ confidence: number;
19
+ reasoning: string;
20
+ alternatives: Array<{
21
+ pattern: string;
22
+ confidence: number;
23
+ }>;
24
+ }
25
+ export interface TaskExample {
26
+ features: number[];
27
+ label: 0 | 1;
28
+ pattern: string;
29
+ }
30
+ /**
31
+ * MAML-inspired few-shot pattern selection using TF-IDF + logistic regression.
32
+ * Learns from past orchestration outcomes to recommend the best pattern for new tasks.
33
+ * Persists state to the execution knowledge graph for cross-run learning.
34
+ */
35
+ export declare class MetaPatternSelector {
36
+ private graph;
37
+ private tfidfModel;
38
+ private patternModels;
39
+ private examples;
40
+ constructor(graph: ExecutionGraph);
41
+ /**
42
+ * Tokenize text: lowercase, replace non-word chars with spaces,
43
+ * split on whitespace, filter tokens ≤ 2 chars, remove stop words.
44
+ */
45
+ static tokenize(text: string): string[];
46
+ /**
47
+ * Build TF-IDF model from a document corpus.
48
+ * IDF uses smoothed formula: log((N+1)/(df+1)) + 1
49
+ * Vocabulary capped at maxVocab terms, sorted by document frequency.
50
+ */
51
+ static buildTfIdfModel(documents: string[], maxVocab?: number): TfIdfModel;
52
+ /**
53
+ * Vectorize a single text against the TF-IDF model.
54
+ * Returns L2-normalized vector.
55
+ */
56
+ static vectorize(model: TfIdfModel, text: string): number[];
57
+ /**
58
+ * Cosine similarity between two vectors.
59
+ * Returns 0 if either vector has zero magnitude.
60
+ */
61
+ static cosineSimilarity(a: number[], b: number[]): number;
62
+ /**
63
+ * Build full feature vector: [tfidf..., log(fileCount+1), log(totalLines+1), log(numTestFiles+1), hasReviewPhase ? 1 : 0]
64
+ */
65
+ buildFeatureVector(taskDescription: string, context?: {
66
+ fileCount?: number;
67
+ totalLines?: number;
68
+ numTestFiles?: number;
69
+ hasReviewPhase?: boolean;
70
+ }): number[];
71
+ /**
72
+ * Predict success probability: σ(w·x + b)
73
+ * Sigmoid input clamped to [-500, 500] for numerical stability.
74
+ */
75
+ predict(model: PatternModel, features: number[]): number;
76
+ /**
77
+ * Update model weights with one example via online SGD.
78
+ * error = predict(features) - label
79
+ * w[i] -= lr * (error * features[i] + lambda * w[i])
80
+ * bias -= lr * error
81
+ */
82
+ updateModel(model: PatternModel, features: number[], label: 0 | 1): void;
83
+ /**
84
+ * MAML inner loop: adapt model to new task using K most similar historical examples.
85
+ * 1. Find K most similar examples by cosine similarity on feature vectors
86
+ * 2. Clone the base model (deep copy weights)
87
+ * 3. Run K gradient steps on those examples with inner LR=0.05
88
+ * 4. Return adapted model
89
+ */
90
+ adaptToNewTask(baseModel: PatternModel, newTaskFeatures: number[], K?: number): PatternModel;
91
+ /**
92
+ * Main entry point: select the best pattern for a task.
93
+ * For each known pattern, predicts success probability using adapted models.
94
+ * Returns the highest-confidence pattern with alternatives.
95
+ */
96
+ selectPattern(taskDescription: string, context?: {
97
+ fileCount?: number;
98
+ totalLines?: number;
99
+ numTestFiles?: number;
100
+ hasReviewPhase?: boolean;
101
+ }): PatternRecommendation;
102
+ /**
103
+ * Record orchestration outcome for online learning.
104
+ * Fetches task description and pattern from the graph, builds features,
105
+ * updates the pattern model, and stores the example.
106
+ */
107
+ updateFromOutcome(orchestrationId: string, success: boolean): void;
108
+ private saveToGraph;
109
+ private loadFromGraph;
110
+ private createPatternModel;
111
+ private ensureWeightSize;
112
+ private getKnownPatterns;
113
+ private getStoredTaskDescriptions;
114
+ }
115
+ //# sourceMappingURL=graph-meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-meta.d.ts","sourceRoot":"","sources":["../../src/runtime/graph-meta.ts"],"names":[],"mappings":"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"}