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,265 @@
1
+ // ─── Standalone Utilities ─────────────────────────────────────────
2
+ /**
3
+ * Extract file-like references from a text string.
4
+ * Matches patterns like "src/runtime/foo.ts", "test/bar.spec.js", "file.ext".
5
+ */
6
+ export function extractFileReferences(text) {
7
+ const patterns = [
8
+ /[\w\-./]+\.\w{1,4}/g, // file.ext or path/to/file.ext
9
+ /src\/[\w\-./]+/g, // src/path/to/thing
10
+ /tests?\/[\w\-./]+/g, // test/path or tests/path
11
+ ];
12
+ const refs = new Set();
13
+ for (const pattern of patterns) {
14
+ const matches = text.match(pattern);
15
+ if (matches) {
16
+ for (const m of matches)
17
+ refs.add(m);
18
+ }
19
+ }
20
+ return [...refs];
21
+ }
22
+ // ─── GraphLearner ─────────────────────────────────────────────────
23
+ /**
24
+ * Cross-run learning from the execution graph.
25
+ * Queries accumulated graph data across all past orchestrations to
26
+ * surface pattern success rates, file co-modifications, and agent
27
+ * performance by file context.
28
+ */
29
+ export class GraphLearner {
30
+ graph;
31
+ constructor(graph) {
32
+ this.graph = graph;
33
+ }
34
+ /**
35
+ * Get success/failure stats for a pattern across all recorded runs.
36
+ * Pass a pattern name to filter, or omit for all patterns.
37
+ */
38
+ getPatternStats(patternName) {
39
+ if (!this.graph)
40
+ return [];
41
+ const patternNodes = this.graph.getNodesByType('pattern');
42
+ const results = [];
43
+ for (const pNode of patternNodes) {
44
+ if (patternName && pNode.label !== patternName)
45
+ continue;
46
+ // used_pattern edges go orchestration → pattern, so look for incoming edges
47
+ const incomingEdges = this.graph.getEdges(pNode.id, 'incoming').filter((e) => e.type === 'used_pattern');
48
+ const orchNodes = incomingEdges
49
+ .map((e) => this.graph.getNode(e.source))
50
+ .filter((n) => n !== null);
51
+ if (orchNodes.length === 0 && !patternName)
52
+ continue;
53
+ const successes = orchNodes.filter((o) => o.properties.status === 'completed');
54
+ const failures = orchNodes.filter((o) => o.properties.status === 'failed');
55
+ const durations = orchNodes.map((o) => o.properties.durationMs || 0).filter((d) => d > 0);
56
+ const costs = orchNodes
57
+ .map((o) => {
58
+ const usage = o.properties.usage;
59
+ return usage?.costUsd || 0;
60
+ })
61
+ .filter((c) => c > 0);
62
+ results.push({
63
+ pattern: pNode.label,
64
+ totalRuns: orchNodes.length,
65
+ successCount: successes.length,
66
+ failCount: failures.length,
67
+ successRate: orchNodes.length > 0 ? successes.length / orchNodes.length : 0,
68
+ avgDurationMs: durations.length > 0 ? durations.reduce((a, b) => a + b, 0) / durations.length : 0,
69
+ avgCostUsd: costs.length > 0 ? costs.reduce((a, b) => a + b, 0) / costs.length : 0,
70
+ });
71
+ }
72
+ return results;
73
+ }
74
+ /**
75
+ * Find files that are frequently modified together across orchestrations.
76
+ * Returns pairs sorted by co-modification count (descending).
77
+ */
78
+ getFileCoModifications(minCount = 2) {
79
+ if (!this.graph)
80
+ return [];
81
+ const fileNodes = this.graph.getNodesByType('file');
82
+ // Map each file to the set of orchestrations that touched it.
83
+ // Path: file ←touched_file← agent ←spawned← phase ←contains← orchestration
84
+ const fileToOrchs = new Map();
85
+ for (const file of fileNodes) {
86
+ const orchs = new Set();
87
+ // agents that touched this file
88
+ const touchEdges = this.graph.getEdges(file.id, 'incoming').filter((e) => e.type === 'touched_file');
89
+ for (const te of touchEdges) {
90
+ // phase that spawned this agent
91
+ const spawnEdges = this.graph.getEdges(te.source, 'incoming').filter((e) => e.type === 'spawned');
92
+ for (const se of spawnEdges) {
93
+ // orchestration that contains this phase
94
+ const containEdges = this.graph.getEdges(se.source, 'incoming').filter((e) => e.type === 'contains');
95
+ for (const ce of containEdges) {
96
+ orchs.add(ce.source);
97
+ }
98
+ }
99
+ }
100
+ if (orchs.size > 0) {
101
+ fileToOrchs.set(file.id, orchs);
102
+ }
103
+ }
104
+ // Find co-occurring file pairs
105
+ const pairs = [];
106
+ const fileIds = [...fileToOrchs.keys()];
107
+ for (let i = 0; i < fileIds.length; i++) {
108
+ const orchsA = fileToOrchs.get(fileIds[i]);
109
+ for (let j = i + 1; j < fileIds.length; j++) {
110
+ const orchsB = fileToOrchs.get(fileIds[j]);
111
+ let overlap = 0;
112
+ for (const o of orchsA) {
113
+ if (orchsB.has(o))
114
+ overlap++;
115
+ }
116
+ if (overlap >= minCount) {
117
+ pairs.push({
118
+ file1: this.graph.getNode(fileIds[i])?.label || fileIds[i],
119
+ file2: this.graph.getNode(fileIds[j])?.label || fileIds[j],
120
+ coModCount: overlap,
121
+ confidence: overlap >= 5 ? 'EXTRACTED' : overlap >= 3 ? 'INFERRED' : 'AMBIGUOUS',
122
+ });
123
+ }
124
+ }
125
+ }
126
+ return pairs.sort((a, b) => b.coModCount - a.coModCount);
127
+ }
128
+ /**
129
+ * Get agent performance stats segmented by file directory.
130
+ * Only returns buckets with sampleSize >= 2 to avoid noise.
131
+ */
132
+ getAgentFilePerformance(agentType) {
133
+ if (!this.graph)
134
+ return [];
135
+ const agentNodes = this.graph
136
+ .getNodesByType('agent')
137
+ .filter((n) => !agentType || n.properties.agentType === agentType || n.label === agentType);
138
+ // Group by agentType + directory
139
+ const buckets = new Map();
140
+ for (const agent of agentNodes) {
141
+ const aType = agent.properties.agentType || agent.label;
142
+ const success = agent.properties.status === 'idle';
143
+ const files = this.graph.getEdges(agent.id, 'outgoing').filter((e) => e.type === 'touched_file');
144
+ for (const fileEdge of files) {
145
+ const fileNode = this.graph.getNode(fileEdge.target);
146
+ const dir = (fileNode?.label || '').split('/').slice(0, -1).join('/') || 'root';
147
+ const key = `${aType}::${dir}`;
148
+ const bucket = buckets.get(key) || { success: 0, total: 0 };
149
+ bucket.total++;
150
+ if (success)
151
+ bucket.success++;
152
+ buckets.set(key, bucket);
153
+ }
154
+ }
155
+ return [...buckets.entries()]
156
+ .map(([key, { success, total }]) => {
157
+ const [at, fp] = key.split('::');
158
+ return {
159
+ agentType: at,
160
+ filePattern: fp,
161
+ successRate: total > 0 ? success / total : 0,
162
+ sampleSize: total,
163
+ };
164
+ })
165
+ .filter((r) => r.sampleSize >= 2)
166
+ .sort((a, b) => b.sampleSize - a.sampleSize);
167
+ }
168
+ /**
169
+ * Record cross-run edges after an orchestration completes.
170
+ * Links files that were co-modified in this orchestration to files
171
+ * co-modified in other orchestrations via INFERRED co_modified edges.
172
+ */
173
+ recordCrossRunEdges(orchestrationId) {
174
+ if (!this.graph)
175
+ return;
176
+ const orchNode = this.graph.getNode(orchestrationId);
177
+ if (!orchNode)
178
+ return;
179
+ // Collect all file node IDs touched in this orchestration (3-hop BFS covers orch→phase→agent→file)
180
+ const subgraph = this.graph.bfs(orchestrationId, 3);
181
+ const fileNodes = subgraph.nodes.filter((n) => n.type === 'file');
182
+ if (fileNodes.length < 2)
183
+ return;
184
+ // Add co_modified edges between all file pairs in this orchestration
185
+ for (let i = 0; i < fileNodes.length; i++) {
186
+ for (let j = i + 1; j < fileNodes.length; j++) {
187
+ this.graph.addEdge({
188
+ source: fileNodes[i].id,
189
+ target: fileNodes[j].id,
190
+ type: 'co_modified',
191
+ confidence: 'INFERRED',
192
+ properties: { orchestrationId },
193
+ });
194
+ }
195
+ }
196
+ }
197
+ /**
198
+ * Given a list of files from an agent's task, find co-modified files
199
+ * and format as prompt hint text. Caps at top 5 suggestions.
200
+ * Skips AMBIGUOUS confidence entries (too noisy).
201
+ */
202
+ getCoModHints(files, minCount) {
203
+ if (!this.graph || files.length === 0)
204
+ return '';
205
+ const coMods = this.getFileCoModifications(minCount ?? 2);
206
+ if (coMods.length === 0)
207
+ return '';
208
+ const fileSet = new Set(files);
209
+ const extracted = [];
210
+ const inferred = [];
211
+ for (const coMod of coMods) {
212
+ if (coMod.confidence === 'AMBIGUOUS')
213
+ continue;
214
+ let matchedFile = null;
215
+ let otherFile = null;
216
+ if (fileSet.has(coMod.file1) || files.some((f) => coMod.file1.includes(f) || f.includes(coMod.file1))) {
217
+ matchedFile = coMod.file1;
218
+ otherFile = coMod.file2;
219
+ }
220
+ else if (fileSet.has(coMod.file2) || files.some((f) => coMod.file2.includes(f) || f.includes(coMod.file2))) {
221
+ matchedFile = coMod.file2;
222
+ otherFile = coMod.file1;
223
+ }
224
+ if (!matchedFile || !otherFile)
225
+ continue;
226
+ // Don't suggest files already in the working set
227
+ if (fileSet.has(otherFile) || files.some((f) => otherFile.includes(f) || f.includes(otherFile)))
228
+ continue;
229
+ if (coMod.confidence === 'EXTRACTED') {
230
+ if (!extracted.includes(otherFile))
231
+ extracted.push(otherFile);
232
+ }
233
+ else if (coMod.confidence === 'INFERRED') {
234
+ if (!inferred.includes(otherFile))
235
+ inferred.push(otherFile);
236
+ }
237
+ }
238
+ const parts = [];
239
+ if (extracted.length > 0) {
240
+ const capped = extracted.slice(0, 5);
241
+ parts.push(`\n\nNote: These files are typically modified together with the files you're working on: ${capped.join(', ')}`);
242
+ }
243
+ if (inferred.length > 0) {
244
+ const remaining = 5 - (extracted.length > 5 ? 5 : extracted.length);
245
+ if (remaining > 0) {
246
+ const capped = inferred.slice(0, remaining);
247
+ parts.push(`\n\nConsider also reviewing: ${capped.join(', ')}`);
248
+ }
249
+ }
250
+ return parts.join('');
251
+ }
252
+ /**
253
+ * Format pattern stats as context for agent prompts.
254
+ */
255
+ formatPatternContext(stats) {
256
+ if (stats.length === 0)
257
+ return '';
258
+ const lines = stats.map((s) => `Pattern "${s.pattern}": ${s.totalRuns} runs, ` +
259
+ `${Math.round(s.successRate * 100)}% success rate` +
260
+ (s.avgDurationMs > 0 ? `, avg ${Math.round(s.avgDurationMs / 1000)}s` : '') +
261
+ (s.avgCostUsd > 0 ? `, avg $${s.avgCostUsd.toFixed(2)}` : ''));
262
+ return `[Graph Learning — Pattern History]\n${lines.join('\n')}`;
263
+ }
264
+ }
265
+ //# sourceMappingURL=graph-learner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-learner.js","sourceRoot":"","sources":["../../src/runtime/graph-learner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ import type { ExecutionGraph } from './execution-graph.js';
2
+ export interface Vulnerability {
3
+ system: 'patternSelector' | 'dropout' | 'causal' | 'heuristic';
4
+ severity: 'low' | 'medium' | 'high';
5
+ description: string;
6
+ perturbation: string;
7
+ originalOutput: string;
8
+ perturbedOutput: string;
9
+ sensitivityScore: number;
10
+ }
11
+ export interface SelfAuditReport {
12
+ vulnerabilities: Vulnerability[];
13
+ overallRisk: 'low' | 'medium' | 'high';
14
+ recommendations: string[];
15
+ systemsAudited: string[];
16
+ totalTrials: number;
17
+ }
18
+ type PerturbStrategy = 'noise' | 'swap' | 'truncate' | 'prefix';
19
+ /**
20
+ * Red-teams the orchestration engine's own decision-making subsystems
21
+ * by perturbing inputs and checking if outputs change dramatically
22
+ * (sensitivity analysis). This is a testing/auditing tool, not a
23
+ * runtime component.
24
+ */
25
+ export declare class MetaAdversarialTester {
26
+ private graph;
27
+ constructor(graph: ExecutionGraph);
28
+ /**
29
+ * Test if a pattern selector is fragile to input perturbation.
30
+ * Generates perturbation pairs and checks if the recommendation changes.
31
+ */
32
+ testPatternSelector(selector: {
33
+ selectPattern: (task: string, ctx?: any) => {
34
+ pattern: string;
35
+ confidence: number;
36
+ alternatives?: Array<{
37
+ pattern: string;
38
+ confidence: number;
39
+ }>;
40
+ };
41
+ }, numTrials?: number): Vulnerability[];
42
+ /**
43
+ * Test if a dropout predictor makes wrong decisions at boundaries.
44
+ * Varies agent type, phase kind, and file count to find flip points.
45
+ */
46
+ testDropoutPredictor(dropout: {
47
+ predictRedundant: (agents: Array<{
48
+ id: string;
49
+ agentType: string;
50
+ }>, phaseKind: string, fileCount: number, pattern: string, threshold?: number) => Array<{
51
+ shouldDropOut: boolean;
52
+ predictedContribution: number;
53
+ }>;
54
+ }, numTrials?: number): Vulnerability[];
55
+ /**
56
+ * Test if a causal engine finds spurious correlations.
57
+ * Creates synthetic scenarios with known confounders and Simpson's paradox data.
58
+ */
59
+ testCausalEngine(causal: {
60
+ estimateCausalEffect: (treatment: string, treatmentValue: string, controlValue: string) => {
61
+ effect: number;
62
+ confidence: string;
63
+ sampleCount: number;
64
+ };
65
+ }, numTrials?: number): Vulnerability[];
66
+ /**
67
+ * Run a comprehensive audit across all provided subsystems.
68
+ */
69
+ runFullAudit(systems: {
70
+ patternSelector?: {
71
+ selectPattern: (task: string, ctx?: any) => {
72
+ pattern: string;
73
+ confidence: number;
74
+ alternatives?: Array<{
75
+ pattern: string;
76
+ confidence: number;
77
+ }>;
78
+ };
79
+ };
80
+ dropout?: {
81
+ predictRedundant: (agents: Array<{
82
+ id: string;
83
+ agentType: string;
84
+ }>, phaseKind: string, fileCount: number, pattern: string, threshold?: number) => Array<{
85
+ shouldDropOut: boolean;
86
+ predictedContribution: number;
87
+ }>;
88
+ };
89
+ causal?: {
90
+ estimateCausalEffect: (treatment: string, treatmentValue: string, controlValue: string) => {
91
+ effect: number;
92
+ confidence: string;
93
+ sampleCount: number;
94
+ };
95
+ };
96
+ }): SelfAuditReport;
97
+ private generateRecommendations;
98
+ /**
99
+ * Compute sensitivity between two pattern selection results.
100
+ * Uses 1 - cosine similarity of the confidence distributions.
101
+ */
102
+ private computePatternSensitivity;
103
+ /**
104
+ * Deterministic text perturbation given a strategy and optional RNG.
105
+ * - noise: insert random words between existing words
106
+ * - swap: swap two adjacent words
107
+ * - truncate: remove last ~20% of text
108
+ * - prefix: add misleading prefix
109
+ */
110
+ static perturbText(text: string, strategy: PerturbStrategy, rng?: () => number): string;
111
+ }
112
+ export {};
113
+ //# sourceMappingURL=graph-meta-adversarial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-meta-adversarial.d.ts","sourceRoot":"","sources":["../../src/runtime/graph-meta-adversarial.ts"],"names":[],"mappings":"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"}