swarm-engine 1.3.0 → 1.41.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 (145) 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/patterns.d.ts +7 -1
  5. package/dist/core/patterns.d.ts.map +1 -1
  6. package/dist/core/patterns.js +23 -0
  7. package/dist/core/patterns.js.map +1 -1
  8. package/dist/core/types.d.ts +39 -0
  9. package/dist/core/types.d.ts.map +1 -1
  10. package/dist/core/types.js.map +1 -1
  11. package/dist/index.d.ts +55 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +40 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/memory/index.d.ts +37 -0
  16. package/dist/memory/index.d.ts.map +1 -1
  17. package/dist/memory/index.js +91 -0
  18. package/dist/memory/index.js.map +1 -1
  19. package/dist/runtime/adaptive.d.ts +1 -0
  20. package/dist/runtime/adaptive.d.ts.map +1 -1
  21. package/dist/runtime/adaptive.js +18 -4
  22. package/dist/runtime/adaptive.js.map +1 -1
  23. package/dist/runtime/agent-runner.d.ts +18 -0
  24. package/dist/runtime/agent-runner.d.ts.map +1 -1
  25. package/dist/runtime/agent-runner.js +147 -4
  26. package/dist/runtime/agent-runner.js.map +1 -1
  27. package/dist/runtime/backends/claude-session.d.ts +49 -0
  28. package/dist/runtime/backends/claude-session.d.ts.map +1 -0
  29. package/dist/runtime/backends/claude-session.js +237 -0
  30. package/dist/runtime/backends/claude-session.js.map +1 -0
  31. package/dist/runtime/backends/claude.d.ts.map +1 -1
  32. package/dist/runtime/backends/claude.js +90 -4
  33. package/dist/runtime/backends/claude.js.map +1 -1
  34. package/dist/runtime/backends/types.d.ts +31 -1
  35. package/dist/runtime/backends/types.d.ts.map +1 -1
  36. package/dist/runtime/compaction.d.ts +7 -1
  37. package/dist/runtime/compaction.d.ts.map +1 -1
  38. package/dist/runtime/compaction.js +12 -2
  39. package/dist/runtime/compaction.js.map +1 -1
  40. package/dist/runtime/distiller.d.ts +1 -0
  41. package/dist/runtime/distiller.d.ts.map +1 -1
  42. package/dist/runtime/distiller.js +8 -2
  43. package/dist/runtime/distiller.js.map +1 -1
  44. package/dist/runtime/engine.d.ts +48 -2
  45. package/dist/runtime/engine.d.ts.map +1 -1
  46. package/dist/runtime/engine.js +600 -8
  47. package/dist/runtime/engine.js.map +1 -1
  48. package/dist/runtime/execution-graph.d.ts +86 -0
  49. package/dist/runtime/execution-graph.d.ts.map +1 -0
  50. package/dist/runtime/execution-graph.js +441 -0
  51. package/dist/runtime/execution-graph.js.map +1 -0
  52. package/dist/runtime/executor.d.ts +7 -1
  53. package/dist/runtime/executor.d.ts.map +1 -1
  54. package/dist/runtime/executor.js +20 -0
  55. package/dist/runtime/executor.js.map +1 -1
  56. package/dist/runtime/graph-adversarial.d.ts +88 -0
  57. package/dist/runtime/graph-adversarial.d.ts.map +1 -0
  58. package/dist/runtime/graph-adversarial.js +378 -0
  59. package/dist/runtime/graph-adversarial.js.map +1 -0
  60. package/dist/runtime/graph-analyzer.d.ts +106 -0
  61. package/dist/runtime/graph-analyzer.d.ts.map +1 -0
  62. package/dist/runtime/graph-analyzer.js +321 -0
  63. package/dist/runtime/graph-analyzer.js.map +1 -0
  64. package/dist/runtime/graph-causal.d.ts +91 -0
  65. package/dist/runtime/graph-causal.d.ts.map +1 -0
  66. package/dist/runtime/graph-causal.js +292 -0
  67. package/dist/runtime/graph-causal.js.map +1 -0
  68. package/dist/runtime/graph-context-router.d.ts +73 -0
  69. package/dist/runtime/graph-context-router.d.ts.map +1 -0
  70. package/dist/runtime/graph-context-router.js +162 -0
  71. package/dist/runtime/graph-context-router.js.map +1 -0
  72. package/dist/runtime/graph-discovery.d.ts +71 -0
  73. package/dist/runtime/graph-discovery.d.ts.map +1 -0
  74. package/dist/runtime/graph-discovery.js +364 -0
  75. package/dist/runtime/graph-discovery.js.map +1 -0
  76. package/dist/runtime/graph-dropout.d.ts +59 -0
  77. package/dist/runtime/graph-dropout.d.ts.map +1 -0
  78. package/dist/runtime/graph-dropout.js +204 -0
  79. package/dist/runtime/graph-dropout.js.map +1 -0
  80. package/dist/runtime/graph-embeddings.d.ts +58 -0
  81. package/dist/runtime/graph-embeddings.d.ts.map +1 -0
  82. package/dist/runtime/graph-embeddings.js +299 -0
  83. package/dist/runtime/graph-embeddings.js.map +1 -0
  84. package/dist/runtime/graph-feedback.d.ts +30 -0
  85. package/dist/runtime/graph-feedback.d.ts.map +1 -0
  86. package/dist/runtime/graph-feedback.js +80 -0
  87. package/dist/runtime/graph-feedback.js.map +1 -0
  88. package/dist/runtime/graph-gnn.d.ts +120 -0
  89. package/dist/runtime/graph-gnn.d.ts.map +1 -0
  90. package/dist/runtime/graph-gnn.js +524 -0
  91. package/dist/runtime/graph-gnn.js.map +1 -0
  92. package/dist/runtime/graph-learner.d.ts +70 -0
  93. package/dist/runtime/graph-learner.d.ts.map +1 -0
  94. package/dist/runtime/graph-learner.js +265 -0
  95. package/dist/runtime/graph-learner.js.map +1 -0
  96. package/dist/runtime/graph-meta-adversarial.d.ts +113 -0
  97. package/dist/runtime/graph-meta-adversarial.d.ts.map +1 -0
  98. package/dist/runtime/graph-meta-adversarial.js +366 -0
  99. package/dist/runtime/graph-meta-adversarial.js.map +1 -0
  100. package/dist/runtime/graph-meta.d.ts +115 -0
  101. package/dist/runtime/graph-meta.d.ts.map +1 -0
  102. package/dist/runtime/graph-meta.js +465 -0
  103. package/dist/runtime/graph-meta.js.map +1 -0
  104. package/dist/runtime/graph-self-evolve.d.ts +92 -0
  105. package/dist/runtime/graph-self-evolve.d.ts.map +1 -0
  106. package/dist/runtime/graph-self-evolve.js +422 -0
  107. package/dist/runtime/graph-self-evolve.js.map +1 -0
  108. package/dist/runtime/graph-synthesis.d.ts +47 -0
  109. package/dist/runtime/graph-synthesis.d.ts.map +1 -0
  110. package/dist/runtime/graph-synthesis.js +232 -0
  111. package/dist/runtime/graph-synthesis.js.map +1 -0
  112. package/dist/runtime/graph-trajectory.d.ts +88 -0
  113. package/dist/runtime/graph-trajectory.d.ts.map +1 -0
  114. package/dist/runtime/graph-trajectory.js +334 -0
  115. package/dist/runtime/graph-trajectory.js.map +1 -0
  116. package/dist/runtime/learning-engine.d.ts +12 -0
  117. package/dist/runtime/learning-engine.d.ts.map +1 -1
  118. package/dist/runtime/learning-engine.js +70 -0
  119. package/dist/runtime/learning-engine.js.map +1 -1
  120. package/dist/runtime/prompt-compressor.d.ts +16 -0
  121. package/dist/runtime/prompt-compressor.d.ts.map +1 -0
  122. package/dist/runtime/prompt-compressor.js +68 -0
  123. package/dist/runtime/prompt-compressor.js.map +1 -0
  124. package/dist/runtime/repo-map.d.ts +40 -0
  125. package/dist/runtime/repo-map.d.ts.map +1 -0
  126. package/dist/runtime/repo-map.js +358 -0
  127. package/dist/runtime/repo-map.js.map +1 -0
  128. package/dist/runtime/sdk-mcp-server.d.ts +44 -0
  129. package/dist/runtime/sdk-mcp-server.d.ts.map +1 -0
  130. package/dist/runtime/sdk-mcp-server.js +133 -0
  131. package/dist/runtime/sdk-mcp-server.js.map +1 -0
  132. package/dist/runtime/structured-handoff.d.ts +41 -0
  133. package/dist/runtime/structured-handoff.d.ts.map +1 -0
  134. package/dist/runtime/structured-handoff.js +279 -0
  135. package/dist/runtime/structured-handoff.js.map +1 -0
  136. package/dist/runtime/token-analytics.d.ts +38 -0
  137. package/dist/runtime/token-analytics.d.ts.map +1 -0
  138. package/dist/runtime/token-analytics.js +59 -0
  139. package/dist/runtime/token-analytics.js.map +1 -0
  140. package/dist/runtime/verifier.d.ts +10 -0
  141. package/dist/runtime/verifier.d.ts.map +1 -1
  142. package/dist/runtime/verifier.js +97 -1
  143. package/dist/runtime/verifier.js.map +1 -1
  144. package/package.json +2 -2
  145. package/skills/swarm-output-style/SKILL.md +71 -33
@@ -0,0 +1,40 @@
1
+ export interface RepoMapOptions {
2
+ maxTokens?: number;
3
+ includePatterns?: string[];
4
+ excludePatterns?: string[];
5
+ }
6
+ export interface FileSignature {
7
+ path: string;
8
+ exports: string[];
9
+ classes: string[];
10
+ functions: string[];
11
+ imports: string[];
12
+ }
13
+ export declare class RepoMapGenerator {
14
+ private static cache;
15
+ private static CACHE_TTL;
16
+ /** Generate a compressed repo map as a string (cached per rootDir for 30s) */
17
+ static generateMap(rootDir: string, options?: RepoMapOptions): string;
18
+ /** Clear the repo map cache (useful for testing) */
19
+ static clearCache(): void;
20
+ /** Extract signatures from a single file */
21
+ static extractSignatures(filePath: string, content: string): FileSignature;
22
+ /** Format signatures into a compressed string */
23
+ static formatMap(signatures: FileSignature[], maxChars: number): string;
24
+ private static scanFiles;
25
+ private static walkDir;
26
+ private static matchesExclude;
27
+ private static extractExtensions;
28
+ private static extractTypeScript;
29
+ private static extractPython;
30
+ private static extractGo;
31
+ private static extractRust;
32
+ private static extractJava;
33
+ /** Extract a balanced-brace block starting after an opening brace */
34
+ private static extractBlock;
35
+ /** Extract method signatures from a class body */
36
+ private static extractMethods;
37
+ /** Compress parameter list to just names (drop types for brevity) */
38
+ private static compressParams;
39
+ }
40
+ //# sourceMappingURL=repo-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo-map.d.ts","sourceRoot":"","sources":["../../src/runtime/repo-map.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAOD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAuE;IAC3F,OAAO,CAAC,MAAM,CAAC,SAAS,CAAU;IAElC,8EAA8E;IAC9E,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,MAAM;IA+BrE,oDAAoD;IACpD,MAAM,CAAC,UAAU,IAAI,IAAI;IAIzB,4CAA4C;IAC5C,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa;IAqB1E,iDAAiD;IACjD,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAyCvE,OAAO,CAAC,MAAM,CAAC,SAAS;IASxB,OAAO,CAAC,MAAM,CAAC,OAAO;IAwBtB,OAAO,CAAC,MAAM,CAAC,cAAc;IA2B7B,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAgBhC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA0ChC,OAAO,CAAC,MAAM,CAAC,aAAa;IA+C5B,OAAO,CAAC,MAAM,CAAC,SAAS;IA8BxB,OAAO,CAAC,MAAM,CAAC,WAAW;IAqB1B,OAAO,CAAC,MAAM,CAAC,WAAW;IA8B1B,qEAAqE;IACrE,OAAO,CAAC,MAAM,CAAC,YAAY;IAW3B,kDAAkD;IAClD,OAAO,CAAC,MAAM,CAAC,cAAc;IAe7B,qEAAqE;IACrE,OAAO,CAAC,MAAM,CAAC,cAAc;CAkB9B"}
@@ -0,0 +1,358 @@
1
+ import { readdirSync, readFileSync } from 'fs';
2
+ import { join, relative, extname } from 'path';
3
+ const DEFAULT_INCLUDE = ['**/*.ts', '**/*.js', '**/*.py', '**/*.go', '**/*.rs', '**/*.java'];
4
+ const DEFAULT_EXCLUDE = ['node_modules/**', 'dist/**', '.git/**', '**/*.test.*', '**/*.spec.*'];
5
+ const SUPPORTED_EXTENSIONS = new Set(['.ts', '.js', '.tsx', '.jsx', '.py', '.go', '.rs', '.java']);
6
+ export class RepoMapGenerator {
7
+ static cache = null;
8
+ static CACHE_TTL = 30_000; // 30 seconds
9
+ /** Generate a compressed repo map as a string (cached per rootDir for 30s) */
10
+ static generateMap(rootDir, options) {
11
+ const now = Date.now();
12
+ if (this.cache && this.cache.rootDir === rootDir && now - this.cache.timestamp < this.CACHE_TTL) {
13
+ return this.cache.result;
14
+ }
15
+ const maxTokens = options?.maxTokens ?? 2000;
16
+ const excludePatterns = options?.excludePatterns ?? DEFAULT_EXCLUDE;
17
+ const includePatterns = options?.includePatterns ?? DEFAULT_INCLUDE;
18
+ const files = RepoMapGenerator.scanFiles(rootDir, includePatterns, excludePatterns);
19
+ const signatures = [];
20
+ for (const filePath of files) {
21
+ try {
22
+ const content = readFileSync(filePath, 'utf-8');
23
+ const relPath = relative(rootDir, filePath);
24
+ const sig = RepoMapGenerator.extractSignatures(relPath, content);
25
+ if (sig.exports.length || sig.classes.length || sig.functions.length || sig.imports.length) {
26
+ signatures.push(sig);
27
+ }
28
+ }
29
+ catch {
30
+ // Skip unreadable files
31
+ }
32
+ }
33
+ const result = RepoMapGenerator.formatMap(signatures, maxTokens * 4);
34
+ this.cache = { rootDir, result, timestamp: now };
35
+ return result;
36
+ }
37
+ /** Clear the repo map cache (useful for testing) */
38
+ static clearCache() {
39
+ this.cache = null;
40
+ }
41
+ /** Extract signatures from a single file */
42
+ static extractSignatures(filePath, content) {
43
+ const ext = extname(filePath).toLowerCase();
44
+ switch (ext) {
45
+ case '.ts':
46
+ case '.tsx':
47
+ case '.js':
48
+ case '.jsx':
49
+ return RepoMapGenerator.extractTypeScript(filePath, content);
50
+ case '.py':
51
+ return RepoMapGenerator.extractPython(filePath, content);
52
+ case '.go':
53
+ return RepoMapGenerator.extractGo(filePath, content);
54
+ case '.rs':
55
+ return RepoMapGenerator.extractRust(filePath, content);
56
+ case '.java':
57
+ return RepoMapGenerator.extractJava(filePath, content);
58
+ default:
59
+ return { path: filePath, exports: [], classes: [], functions: [], imports: [] };
60
+ }
61
+ }
62
+ /** Format signatures into a compressed string */
63
+ static formatMap(signatures, maxChars) {
64
+ const sorted = [...signatures].sort((a, b) => a.path.localeCompare(b.path));
65
+ const sections = ['# Repository Map', ''];
66
+ for (const sig of sorted) {
67
+ const lines = [`## ${sig.path}`];
68
+ if (sig.imports.length) {
69
+ lines.push(`imports: ${sig.imports.join(', ')}`);
70
+ }
71
+ for (const cls of sig.classes) {
72
+ lines.push(cls);
73
+ }
74
+ for (const exp of sig.exports) {
75
+ // Don't duplicate if already shown as class or function
76
+ if (!sig.classes.some((c) => c.includes(exp)) && !sig.functions.some((f) => f.includes(exp))) {
77
+ lines.push(`export ${exp}`);
78
+ }
79
+ }
80
+ for (const fn of sig.functions) {
81
+ lines.push(fn);
82
+ }
83
+ lines.push('');
84
+ sections.push(lines.join('\n'));
85
+ }
86
+ let result = sections.join('\n');
87
+ if (result.length > maxChars) {
88
+ result = result.slice(0, maxChars - 20) + '\n\n[truncated]';
89
+ }
90
+ return result;
91
+ }
92
+ // ─── Private: File Scanning ────────────────────────────────────────
93
+ static scanFiles(rootDir, includePatterns, excludePatterns) {
94
+ const files = [];
95
+ RepoMapGenerator.walkDir(rootDir, rootDir, files, excludePatterns);
96
+ // Filter by include patterns (extension-based matching)
97
+ const includeExts = RepoMapGenerator.extractExtensions(includePatterns);
98
+ return files.filter((f) => includeExts.has(extname(f).toLowerCase()));
99
+ }
100
+ static walkDir(dir, rootDir, files, excludePatterns) {
101
+ let entries;
102
+ try {
103
+ entries = readdirSync(dir, { withFileTypes: true });
104
+ }
105
+ catch {
106
+ return;
107
+ }
108
+ for (const entry of entries) {
109
+ const fullPath = join(dir, entry.name);
110
+ const relPath = relative(rootDir, fullPath);
111
+ if (RepoMapGenerator.matchesExclude(relPath, entry.name, excludePatterns)) {
112
+ continue;
113
+ }
114
+ if (entry.isDirectory()) {
115
+ RepoMapGenerator.walkDir(fullPath, rootDir, files, excludePatterns);
116
+ }
117
+ else if (entry.isFile() && SUPPORTED_EXTENSIONS.has(extname(entry.name).toLowerCase())) {
118
+ files.push(fullPath);
119
+ }
120
+ }
121
+ }
122
+ static matchesExclude(relPath, name, patterns) {
123
+ for (const pattern of patterns) {
124
+ // node_modules/** → skip directories named node_modules
125
+ if (pattern.startsWith('node_modules') && (name === 'node_modules' || relPath.startsWith('node_modules'))) {
126
+ return true;
127
+ }
128
+ if (pattern.startsWith('dist') && (name === 'dist' || relPath.startsWith('dist'))) {
129
+ return true;
130
+ }
131
+ if (pattern.startsWith('.git') &&
132
+ !pattern.includes('ignore') &&
133
+ (name === '.git' || relPath.startsWith('.git'))) {
134
+ return true;
135
+ }
136
+ // **/*.test.* or **/*.spec.*
137
+ if (pattern.includes('*.test.*') && /\.test\./.test(name)) {
138
+ return true;
139
+ }
140
+ if (pattern.includes('*.spec.*') && /\.spec\./.test(name)) {
141
+ return true;
142
+ }
143
+ }
144
+ return false;
145
+ }
146
+ static extractExtensions(patterns) {
147
+ const exts = new Set();
148
+ for (const p of patterns) {
149
+ const match = p.match(/\*\.(\w+)$/);
150
+ if (match) {
151
+ exts.add(`.${match[1]}`);
152
+ }
153
+ }
154
+ // Also add compound extensions like .tsx, .jsx
155
+ if (exts.has('.ts'))
156
+ exts.add('.tsx');
157
+ if (exts.has('.js'))
158
+ exts.add('.jsx');
159
+ return exts;
160
+ }
161
+ // ─── Private: Language Extractors ─────────────────────────────────
162
+ static extractTypeScript(filePath, content) {
163
+ const exports = [];
164
+ const classes = [];
165
+ const functions = [];
166
+ const imports = [];
167
+ // Imports
168
+ const importRe = /import\s+.*?\s+from\s+['"]([^'"]+)['"]/g;
169
+ let m;
170
+ while ((m = importRe.exec(content)) !== null) {
171
+ imports.push(m[1]);
172
+ }
173
+ // Exported names
174
+ const exportRe = /export\s+(?:default\s+)?(?:function|class|const|let|type|interface|enum|abstract\s+class)\s+(\w+)/g;
175
+ while ((m = exportRe.exec(content)) !== null) {
176
+ exports.push(m[1]);
177
+ }
178
+ // Classes with methods
179
+ const classRe = /(?:export\s+)?(?:abstract\s+)?class\s+(\w+)(?:\s+extends\s+\w+)?(?:\s+implements\s+\w+)?\s*\{/g;
180
+ while ((m = classRe.exec(content)) !== null) {
181
+ const className = m[1];
182
+ const classStart = m.index + m[0].length;
183
+ const classBody = RepoMapGenerator.extractBlock(content, classStart);
184
+ const methods = RepoMapGenerator.extractMethods(classBody);
185
+ const methodStr = methods.length ? '\n' + methods.map((mt) => ` ${mt}`).join('\n') : '';
186
+ classes.push(`class ${className}${methodStr}`);
187
+ }
188
+ // Top-level functions (not inside classes)
189
+ const funcRe = /(?:export\s+)?(?:async\s+)?function\s+(\w+)\s*\(([^)]*)\)(?:\s*:\s*([^\n{]+))?/g;
190
+ while ((m = funcRe.exec(content)) !== null) {
191
+ const params = RepoMapGenerator.compressParams(m[2]);
192
+ const ret = m[3] ? `: ${m[3].trim()}` : '';
193
+ functions.push(`${m[1]}(${params})${ret}`);
194
+ }
195
+ return { path: filePath, exports, classes, functions, imports };
196
+ }
197
+ static extractPython(filePath, content) {
198
+ const classes = [];
199
+ const functions = [];
200
+ const imports = [];
201
+ // Imports
202
+ const fromImportRe = /from\s+(\S+)\s+import\s+.+/g;
203
+ const plainImportRe = /^import\s+(\S+)/gm;
204
+ let m;
205
+ while ((m = fromImportRe.exec(content)) !== null) {
206
+ imports.push(m[1]);
207
+ }
208
+ while ((m = plainImportRe.exec(content)) !== null) {
209
+ imports.push(m[1]);
210
+ }
211
+ // Classes
212
+ const classRe = /^class\s+(\w+)(?:\([^)]*\))?:/gm;
213
+ while ((m = classRe.exec(content)) !== null) {
214
+ const className = m[1];
215
+ // Extract methods indented under this class
216
+ const afterClass = content.slice(m.index + m[0].length);
217
+ const methodRe = /^\s{4}def\s+(\w+)\s*\(([^)]*)\)/gm;
218
+ let mm;
219
+ const methods = [];
220
+ while ((mm = methodRe.exec(afterClass)) !== null) {
221
+ // Stop if we hit a non-indented line (next class/function)
222
+ const lineStart = afterClass.lastIndexOf('\n', mm.index) + 1;
223
+ const line = afterClass.slice(lineStart, mm.index + mm[0].length);
224
+ if (!/^\s/.test(line) && methods.length > 0)
225
+ break;
226
+ const params = RepoMapGenerator.compressParams(mm[2]);
227
+ methods.push(mm[1] + `(${params})`);
228
+ }
229
+ const methodStr = methods.length ? '\n' + methods.map((mt) => ` ${mt}`).join('\n') : '';
230
+ classes.push(`class ${className}${methodStr}`);
231
+ }
232
+ // Top-level functions
233
+ const funcRe = /^def\s+(\w+)\s*\(([^)]*)\)/gm;
234
+ while ((m = funcRe.exec(content)) !== null) {
235
+ const params = RepoMapGenerator.compressParams(m[2]);
236
+ functions.push(`${m[1]}(${params})`);
237
+ }
238
+ return { path: filePath, exports: [], classes, functions, imports };
239
+ }
240
+ static extractGo(filePath, content) {
241
+ const functions = [];
242
+ const imports = [];
243
+ // Imports — single and block
244
+ const importBlockRe = /import\s*\(([\s\S]*?)\)/g;
245
+ const importSingleRe = /import\s+"([^"]+)"/g;
246
+ let m;
247
+ while ((m = importBlockRe.exec(content)) !== null) {
248
+ const block = m[1];
249
+ const lineRe = /"([^"]+)"/g;
250
+ let lm;
251
+ while ((lm = lineRe.exec(block)) !== null) {
252
+ imports.push(lm[1]);
253
+ }
254
+ }
255
+ while ((m = importSingleRe.exec(content)) !== null) {
256
+ imports.push(m[1]);
257
+ }
258
+ // Functions (including methods with receivers)
259
+ const funcRe = /func\s+(?:\([^)]+\)\s+)?(\w+)\s*\(([^)]*)\)/g;
260
+ while ((m = funcRe.exec(content)) !== null) {
261
+ const params = RepoMapGenerator.compressParams(m[2]);
262
+ functions.push(`${m[1]}(${params})`);
263
+ }
264
+ return { path: filePath, exports: [], classes: [], functions, imports };
265
+ }
266
+ static extractRust(filePath, content) {
267
+ const functions = [];
268
+ const classes = [];
269
+ // Structs
270
+ const structRe = /(?:pub\s+)?struct\s+(\w+)/g;
271
+ let m;
272
+ while ((m = structRe.exec(content)) !== null) {
273
+ classes.push(`struct ${m[1]}`);
274
+ }
275
+ // Functions
276
+ const funcRe = /(?:pub\s+)?(?:async\s+)?fn\s+(\w+)\s*(?:<[^>]+>)?\s*\(([^)]*)\)/g;
277
+ while ((m = funcRe.exec(content)) !== null) {
278
+ const params = RepoMapGenerator.compressParams(m[2]);
279
+ functions.push(`${m[1]}(${params})`);
280
+ }
281
+ return { path: filePath, exports: [], classes, functions, imports: [] };
282
+ }
283
+ static extractJava(filePath, content) {
284
+ const classes = [];
285
+ const functions = [];
286
+ const imports = [];
287
+ // Imports
288
+ const importRe = /import\s+([\w.]+);/g;
289
+ let m;
290
+ while ((m = importRe.exec(content)) !== null) {
291
+ imports.push(m[1]);
292
+ }
293
+ // Classes
294
+ const classRe = /(?:public\s+)?(?:abstract\s+)?class\s+(\w+)/g;
295
+ while ((m = classRe.exec(content)) !== null) {
296
+ classes.push(`class ${m[1]}`);
297
+ }
298
+ // Methods
299
+ const methodRe = /(?:public|private|protected)\s+(?:static\s+)?(?:\w+(?:<[^>]+>)?)\s+(\w+)\s*\(([^)]*)\)/g;
300
+ while ((m = methodRe.exec(content)) !== null) {
301
+ const params = RepoMapGenerator.compressParams(m[2]);
302
+ functions.push(`${m[1]}(${params})`);
303
+ }
304
+ return { path: filePath, exports: [], classes, functions, imports };
305
+ }
306
+ // ─── Private: Utilities ───────────────────────────────────────────
307
+ /** Extract a balanced-brace block starting after an opening brace */
308
+ static extractBlock(content, startAfterBrace) {
309
+ let depth = 1;
310
+ let i = startAfterBrace;
311
+ while (i < content.length && depth > 0) {
312
+ if (content[i] === '{')
313
+ depth++;
314
+ else if (content[i] === '}')
315
+ depth--;
316
+ i++;
317
+ }
318
+ return content.slice(startAfterBrace, i - 1);
319
+ }
320
+ /** Extract method signatures from a class body */
321
+ static extractMethods(body) {
322
+ const methods = [];
323
+ const re = /(?:async\s+)?(\w+)\s*\(([^)]*)\)(?:\s*:\s*([^\n{]+))?/g;
324
+ let m;
325
+ while ((m = re.exec(body)) !== null) {
326
+ const name = m[1];
327
+ // Skip constructor-like noise and common keywords
328
+ if (['if', 'for', 'while', 'switch', 'catch', 'return', 'new', 'super', 'this'].includes(name))
329
+ continue;
330
+ const params = RepoMapGenerator.compressParams(m[2]);
331
+ const ret = m[3] ? `: ${m[3].trim()}` : '';
332
+ methods.push(`${name}(${params})${ret}`);
333
+ }
334
+ return methods;
335
+ }
336
+ /** Compress parameter list to just names (drop types for brevity) */
337
+ static compressParams(params) {
338
+ if (!params.trim())
339
+ return '';
340
+ return params
341
+ .split(',')
342
+ .map((p) => {
343
+ const trimmed = p.trim();
344
+ // For TypeScript: name: Type → name
345
+ // For Go: name Type → name
346
+ // For Python: self, name → name
347
+ const colonIdx = trimmed.indexOf(':');
348
+ if (colonIdx !== -1)
349
+ return trimmed.slice(0, colonIdx).trim();
350
+ // For Go-style "name Type", take just the name
351
+ const parts = trimmed.split(/\s+/);
352
+ return parts[0];
353
+ })
354
+ .filter(Boolean)
355
+ .join(', ');
356
+ }
357
+ }
358
+ //# sourceMappingURL=repo-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo-map.js","sourceRoot":"","sources":["../../src/runtime/repo-map.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { McpSdkServerConfigWithInstance } from '@anthropic-ai/claude-agent-sdk';
2
+ import type { ExecutionGraph } from './execution-graph.js';
3
+ export interface SwarmMcpServerOptions {
4
+ phaseOutputs: Map<string, string[]>;
5
+ graph?: ExecutionGraph | null;
6
+ decisions?: Map<string, string>;
7
+ }
8
+ export interface FileRisk {
9
+ filePath: string;
10
+ touchCount: number;
11
+ edgeCount: number;
12
+ riskLevel: 'low' | 'medium' | 'high';
13
+ }
14
+ export interface ToolDefinition {
15
+ name: string;
16
+ description: string;
17
+ inputSchema: Record<string, unknown>;
18
+ }
19
+ export declare class SwarmMcpServer {
20
+ private options;
21
+ private decisions;
22
+ constructor(options: SwarmMcpServerOptions);
23
+ /** Tool definitions for injection into SDK options or non-SDK backends */
24
+ getServerConfig(): {
25
+ name: string;
26
+ tools: ToolDefinition[];
27
+ };
28
+ /** Handle a tool call by name */
29
+ handleToolCall(toolName: string, args: Record<string, unknown>): Promise<string>;
30
+ /** Formatted text descriptions for non-SDK backends */
31
+ getToolDescriptions(): string;
32
+ private getPhaseOutput;
33
+ private getDecision;
34
+ private storeDecision;
35
+ private queryGraph;
36
+ private getFileRisk;
37
+ }
38
+ /**
39
+ * Create an in-process MCP server for the Claude Agent SDK using
40
+ * `createSdkMcpServer` + `tool()` from the SDK. Pass the returned
41
+ * config into `options.mcpServers` when calling `query()`.
42
+ */
43
+ export declare function createSwarmMcpServerConfig(options: SwarmMcpServerOptions): McpSdkServerConfigWithInstance;
44
+ //# sourceMappingURL=sdk-mcp-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk-mcp-server.d.ts","sourceRoot":"","sources":["../../src/runtime/sdk-mcp-server.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK3D,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAoCD,qBAAa,cAAc;IAGb,OAAO,CAAC,OAAO;IAF3B,OAAO,CAAC,SAAS,CAAsB;gBAEnB,OAAO,EAAE,qBAAqB;IAIlD,0EAA0E;IAC1E,eAAe,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,cAAc,EAAE,CAAA;KAAE;IAI5D,iCAAiC;IAC3B,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBtF,uDAAuD;IACvD,mBAAmB,IAAI,MAAM;IAM7B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,WAAW;CAqBpB;AAID;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,qBAAqB,GAAG,8BAA8B,CA0CzG"}
@@ -0,0 +1,133 @@
1
+ import { z } from 'zod';
2
+ import { tool, createSdkMcpServer } from '@anthropic-ai/claude-agent-sdk';
3
+ // ─── SwarmMcpServer ────────────────────────────────────────────────
4
+ const TOOL_DEFS = [
5
+ {
6
+ name: 'swarm_get_phase_output',
7
+ description: 'Retrieve outputs from a completed orchestration phase',
8
+ inputSchema: { type: 'object', properties: { phaseName: { type: 'string' } }, required: ['phaseName'] },
9
+ },
10
+ {
11
+ name: 'swarm_get_decision',
12
+ description: 'Retrieve a stored decision by key',
13
+ inputSchema: { type: 'object', properties: { key: { type: 'string' } }, required: ['key'] },
14
+ },
15
+ {
16
+ name: 'swarm_store_decision',
17
+ description: 'Store a decision for downstream agents',
18
+ inputSchema: {
19
+ type: 'object',
20
+ properties: { key: { type: 'string' }, value: { type: 'string' } },
21
+ required: ['key', 'value'],
22
+ },
23
+ },
24
+ {
25
+ name: 'swarm_query_graph',
26
+ description: 'Query the execution graph for nodes of a given type',
27
+ inputSchema: { type: 'object', properties: { nodeType: { type: 'string' } }, required: ['nodeType'] },
28
+ },
29
+ {
30
+ name: 'swarm_get_file_risk',
31
+ description: 'Get the risk profile for a file based on execution history',
32
+ inputSchema: { type: 'object', properties: { filePath: { type: 'string' } }, required: ['filePath'] },
33
+ },
34
+ ];
35
+ export class SwarmMcpServer {
36
+ options;
37
+ decisions;
38
+ constructor(options) {
39
+ this.options = options;
40
+ this.decisions = options.decisions ?? new Map();
41
+ }
42
+ /** Tool definitions for injection into SDK options or non-SDK backends */
43
+ getServerConfig() {
44
+ return { name: 'swarm-context', tools: TOOL_DEFS };
45
+ }
46
+ /** Handle a tool call by name */
47
+ async handleToolCall(toolName, args) {
48
+ switch (toolName) {
49
+ case 'swarm_get_phase_output':
50
+ return this.getPhaseOutput(args.phaseName);
51
+ case 'swarm_get_decision':
52
+ return this.getDecision(args.key);
53
+ case 'swarm_store_decision':
54
+ return this.storeDecision(args.key, args.value);
55
+ case 'swarm_query_graph':
56
+ return this.queryGraph(args.nodeType);
57
+ case 'swarm_get_file_risk':
58
+ return this.getFileRisk(args.filePath);
59
+ default:
60
+ return JSON.stringify({ error: `Unknown tool: ${toolName}` });
61
+ }
62
+ }
63
+ /** Formatted text descriptions for non-SDK backends */
64
+ getToolDescriptions() {
65
+ return TOOL_DEFS.map((t) => `## ${t.name}\n${t.description}\nInput: ${JSON.stringify(t.inputSchema)}`).join('\n\n');
66
+ }
67
+ // ─── Tool implementations ──────────────────────────────────────
68
+ getPhaseOutput(phaseName) {
69
+ const outputs = this.options.phaseOutputs.get(phaseName);
70
+ return JSON.stringify(outputs ?? []);
71
+ }
72
+ getDecision(key) {
73
+ const value = this.decisions.get(key);
74
+ return JSON.stringify(value ?? null);
75
+ }
76
+ storeDecision(key, value) {
77
+ this.decisions.set(key, value);
78
+ return JSON.stringify({ stored: true });
79
+ }
80
+ queryGraph(nodeType) {
81
+ if (!this.options.graph)
82
+ return JSON.stringify([]);
83
+ const nodes = this.options.graph.getNodesByType(nodeType);
84
+ return JSON.stringify(nodes);
85
+ }
86
+ getFileRisk(filePath) {
87
+ if (!this.options.graph) {
88
+ return JSON.stringify({ filePath, touchCount: 0, edgeCount: 0, riskLevel: 'low' });
89
+ }
90
+ const fileId = `file:${filePath}`;
91
+ const node = this.options.graph.getNode(fileId);
92
+ if (!node) {
93
+ return JSON.stringify({ filePath, touchCount: 0, edgeCount: 0, riskLevel: 'low' });
94
+ }
95
+ const edges = this.options.graph.getEdges(fileId);
96
+ const touchCount = edges.filter((e) => e.type === 'touched_file').length;
97
+ const edgeCount = edges.length;
98
+ let riskLevel = 'low';
99
+ if (touchCount >= 5 || edgeCount >= 10)
100
+ riskLevel = 'high';
101
+ else if (touchCount >= 2 || edgeCount >= 5)
102
+ riskLevel = 'medium';
103
+ return JSON.stringify({ filePath, touchCount, edgeCount, riskLevel });
104
+ }
105
+ }
106
+ // ─── SDK MCP Server Factory ──────────────────────────────────────
107
+ /**
108
+ * Create an in-process MCP server for the Claude Agent SDK using
109
+ * `createSdkMcpServer` + `tool()` from the SDK. Pass the returned
110
+ * config into `options.mcpServers` when calling `query()`.
111
+ */
112
+ export function createSwarmMcpServerConfig(options) {
113
+ const server = new SwarmMcpServer(options);
114
+ const tools = [
115
+ tool('swarm_get_phase_output', 'Retrieve outputs from a completed orchestration phase', { phaseName: z.string() }, async (args) => ({
116
+ content: [{ type: 'text', text: await server.handleToolCall('swarm_get_phase_output', args) }],
117
+ })),
118
+ tool('swarm_get_decision', 'Retrieve a stored decision by key', { key: z.string() }, async (args) => ({
119
+ content: [{ type: 'text', text: await server.handleToolCall('swarm_get_decision', args) }],
120
+ })),
121
+ tool('swarm_store_decision', 'Store a decision for downstream agents', { key: z.string(), value: z.string() }, async (args) => ({
122
+ content: [{ type: 'text', text: await server.handleToolCall('swarm_store_decision', args) }],
123
+ })),
124
+ tool('swarm_query_graph', 'Query the execution graph for nodes of a given type', { nodeType: z.string() }, async (args) => ({
125
+ content: [{ type: 'text', text: await server.handleToolCall('swarm_query_graph', args) }],
126
+ })),
127
+ tool('swarm_get_file_risk', 'Get the risk profile for a file based on execution history', { filePath: z.string() }, async (args) => ({
128
+ content: [{ type: 'text', text: await server.handleToolCall('swarm_get_file_risk', args) }],
129
+ })),
130
+ ];
131
+ return createSdkMcpServer({ name: 'swarm-context', tools });
132
+ }
133
+ //# sourceMappingURL=sdk-mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk-mcp-server.js","sourceRoot":"","sources":["../../src/runtime/sdk-mcp-server.ts"],"names":[],"mappings":"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"}