mcp-swarm 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.prettierignore +6 -0
- package/.prettierrc +8 -0
- package/CHANGELOG.md +17 -0
- package/CHANGELOG.ru.md +17 -0
- package/dist/companion.js +42 -162
- package/dist/companion.js.map +1 -1
- package/dist/dashboard.js +143 -0
- package/dist/dashboard.js.map +1 -0
- package/dist/fsSandbox.js +81 -0
- package/dist/fsSandbox.js.map +1 -0
- package/eslint.config.js +15 -0
- package/package.json +11 -3
package/.prettierignore
ADDED
package/.prettierrc
ADDED
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
+
## [1.1.2] - 2026-02-09
|
|
13
|
+
|
|
14
|
+
### 🏗️ Code Quality & Security
|
|
15
|
+
|
|
16
|
+
#### Added
|
|
17
|
+
|
|
18
|
+
- **ESLint + Prettier** — Full linting and formatting setup with `typescript-eslint`. New npm scripts: `lint`, `lint:fix`, `format`, `format:check`.
|
|
19
|
+
- **fs-sandbox** — File system sandbox module (`src/fsSandbox.ts`) restricts agent file operations to the project boundary, preventing path-traversal attacks.
|
|
20
|
+
|
|
21
|
+
#### Changed
|
|
22
|
+
|
|
23
|
+
- **Dashboard refactoring** — Extracted 133-line inline HTML from `companion.ts` into dedicated `dashboard.ts` module. Companion is now 700 lines (was 820).
|
|
24
|
+
- **ESLint config** — Flat config (`eslint.config.js`) with TypeScript support, ignoring `dist/`, `node_modules/`, `dashboard/`, `cloudflare/`.
|
|
25
|
+
- **Prettier config** — `.prettierrc` with 120-char line width, double quotes, trailing commas, LF line endings.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
12
29
|
## [1.1.1] - 2026-02-09
|
|
13
30
|
|
|
14
31
|
### 🔭 Observability & Control
|
package/CHANGELOG.ru.md
CHANGED
|
@@ -9,6 +9,23 @@
|
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
+
## [1.1.2] - 2026-02-09
|
|
13
|
+
|
|
14
|
+
### 🏗️ Качество кода и безопасность
|
|
15
|
+
|
|
16
|
+
#### Добавлено
|
|
17
|
+
|
|
18
|
+
- **ESLint + Prettier** — Полная настройка линтинга и форматирования с `typescript-eslint`. Новые npm-скрипты: `lint`, `lint:fix`, `format`, `format:check`.
|
|
19
|
+
- **fs-sandbox** — Модуль песочницы файловой системы (`src/fsSandbox.ts`) ограничивает файловые операции агентов границами проекта, предотвращая атаки path-traversal.
|
|
20
|
+
|
|
21
|
+
#### Изменено
|
|
22
|
+
|
|
23
|
+
- **Рефакторинг Dashboard** — Извлечён 133-строчный inline HTML из `companion.ts` в отдельный модуль `dashboard.ts`. Companion теперь 700 строк (было 820).
|
|
24
|
+
- **ESLint конфиг** — Flat config (`eslint.config.js`) с поддержкой TypeScript, игнорирует `dist/`, `node_modules/`, `dashboard/`, `cloudflare/`.
|
|
25
|
+
- **Prettier конфиг** — `.prettierrc` с 120-символьной шириной строки, двойные кавычки, trailing commas, LF окончания строк.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
12
29
|
## [1.1.1] - 2026-02-09
|
|
13
30
|
|
|
14
31
|
### 🔭 Observability & Control
|
package/dist/companion.js
CHANGED
|
@@ -4,6 +4,7 @@ import path from "node:path";
|
|
|
4
4
|
import fs from "node:fs";
|
|
5
5
|
import os from "node:os";
|
|
6
6
|
import { fileLog, closeFileLog, getLogFilePath } from "./fileLogger.js";
|
|
7
|
+
import { renderDashboard } from "./dashboard.js";
|
|
7
8
|
import { gitTry } from "./workflows/git.js";
|
|
8
9
|
import { getRepoRoot } from "./workflows/repo.js";
|
|
9
10
|
import { getStopState } from "./workflows/stopFlag.js";
|
|
@@ -51,7 +52,7 @@ function getEnvConfig() {
|
|
|
51
52
|
repoPath: process.env.SWARM_REPO_PATH,
|
|
52
53
|
project: process.env.SWARM_PROJECT ?? "default",
|
|
53
54
|
hubUrl: process.env.SWARM_HUB_URL,
|
|
54
|
-
mcpServerUrl: process.env.MCP_SERVER_URL, // Auto-Bridge
|
|
55
|
+
mcpServerUrl: process.env.MCP_SERVER_URL, // Auto-Bridge Рє Remote MCP
|
|
55
56
|
pollSeconds: Number.isFinite(pollSeconds) ? pollSeconds : 10,
|
|
56
57
|
controlPort: Number.isFinite(controlPort) ? controlPort : 37373,
|
|
57
58
|
controlToken: process.env.SWARM_CONTROL_TOKEN,
|
|
@@ -85,10 +86,10 @@ function log(level, message) {
|
|
|
85
86
|
success: colors.green,
|
|
86
87
|
};
|
|
87
88
|
const prefix = {
|
|
88
|
-
info: "
|
|
89
|
-
warn: "
|
|
90
|
-
error: "
|
|
91
|
-
success: "
|
|
89
|
+
info: "в„№пёЏ",
|
|
90
|
+
warn: "вљ пёЏ",
|
|
91
|
+
error: "вќЊ",
|
|
92
|
+
success: "вњ…",
|
|
92
93
|
};
|
|
93
94
|
// eslint-disable-next-line no-console
|
|
94
95
|
console.log(`${colorMap[level]}[${timestamp}] ${prefix[level]} ${message}${colors.reset}`);
|
|
@@ -105,7 +106,7 @@ function writePidFile() {
|
|
|
105
106
|
fs.writeFileSync(PID_FILE, String(process.pid), "utf-8");
|
|
106
107
|
}
|
|
107
108
|
catch {
|
|
108
|
-
// Non-critical
|
|
109
|
+
// Non-critical — log and continue
|
|
109
110
|
}
|
|
110
111
|
}
|
|
111
112
|
function removePidFile() {
|
|
@@ -127,7 +128,7 @@ async function run() {
|
|
|
127
128
|
// ============ SMART PROJECT ID ============
|
|
128
129
|
const projectInfo = await getProjectIdSource(repoRoot);
|
|
129
130
|
const projectId = projectInfo.id;
|
|
130
|
-
log("info",
|
|
131
|
+
log("info", `рџ“Ѓ Project ID: ${colors.bright}${projectId}${colors.reset} (source: ${projectInfo.source})`);
|
|
131
132
|
// Show suggestions if git is not configured
|
|
132
133
|
if (projectInfo.suggestions && projectInfo.suggestions.length > 0) {
|
|
133
134
|
log("warn", `\n${projectInfo.suggestions.join("\n")}\n`);
|
|
@@ -139,10 +140,10 @@ async function run() {
|
|
|
139
140
|
const projectName = path.basename(repoRoot);
|
|
140
141
|
const registered = await registerProjectInTelegram(telegramUserId, projectId, projectName);
|
|
141
142
|
if (registered) {
|
|
142
|
-
log("success",
|
|
143
|
+
log("success", `рџ“± Project registered in Telegram for user ${telegramUserId}`);
|
|
143
144
|
}
|
|
144
145
|
else {
|
|
145
|
-
log("warn",
|
|
146
|
+
log("warn", `рџ“± Failed to register project in Telegram (will retry later)`);
|
|
146
147
|
}
|
|
147
148
|
}
|
|
148
149
|
// Register agent if not already registered
|
|
@@ -168,11 +169,11 @@ async function run() {
|
|
|
168
169
|
let role = electionResult.role;
|
|
169
170
|
const isOrchestrator = electionResult.isOrchestrator;
|
|
170
171
|
if (isOrchestrator) {
|
|
171
|
-
log("success",
|
|
172
|
+
log("success", `рџЋЇ ${colors.bright}ORCHESTRATOR MODE${colors.reset} - Running in INFINITE LOOP`);
|
|
172
173
|
log("info", "Orchestrator will coordinate all other agents and never stop automatically");
|
|
173
174
|
}
|
|
174
175
|
else {
|
|
175
|
-
log("info",
|
|
176
|
+
log("info", `рџ‘· ${colors.bright}EXECUTOR MODE${colors.reset} - Orchestrator: ${electionResult.orchestratorName}`);
|
|
176
177
|
log("info", "Executor will follow orchestrator's commands");
|
|
177
178
|
}
|
|
178
179
|
const hubUrl = cfg.hubUrl;
|
|
@@ -183,10 +184,10 @@ async function run() {
|
|
|
183
184
|
let stop = false;
|
|
184
185
|
let paused = false;
|
|
185
186
|
// ============ AUTO-BRIDGE ============
|
|
186
|
-
//
|
|
187
|
+
// Если задан MCP_SERVER_URL, автоматически подключаемся к Remote MCP
|
|
187
188
|
let bridgeManager = null;
|
|
188
189
|
if (cfg.mcpServerUrl) {
|
|
189
|
-
log("info",
|
|
190
|
+
log("info", `рџЊ‰ Auto-Bridge enabled: ${cfg.mcpServerUrl}`);
|
|
190
191
|
bridgeManager = new BridgeManager({
|
|
191
192
|
mcpServerUrl: cfg.mcpServerUrl,
|
|
192
193
|
projects: [repoRoot],
|
|
@@ -274,11 +275,11 @@ async function run() {
|
|
|
274
275
|
res.end(JSON.stringify({ ok: false, error: "Bridge not enabled. Set MCP_SERVER_URL env." }));
|
|
275
276
|
return;
|
|
276
277
|
}
|
|
277
|
-
log("info",
|
|
278
|
+
log("info", `рџЊ‰ Auto-adding project: ${projectPath}`);
|
|
278
279
|
bridgeManager.addProject(projectPath).then(() => {
|
|
279
|
-
log("success",
|
|
280
|
+
log("success", `рџЊ‰ Project added: ${projectPath}`);
|
|
280
281
|
}).catch(err => {
|
|
281
|
-
log("error",
|
|
282
|
+
log("error", `рџЊ‰ Failed to add project: ${err.message}`);
|
|
282
283
|
});
|
|
283
284
|
res.statusCode = 200;
|
|
284
285
|
res.setHeader("content-type", "application/json");
|
|
@@ -307,153 +308,32 @@ async function run() {
|
|
|
307
308
|
return;
|
|
308
309
|
}
|
|
309
310
|
bridgeManager.removeProject(projectPath);
|
|
310
|
-
log("info",
|
|
311
|
+
log("info", `рџЊ‰ Project removed: ${projectPath}`);
|
|
311
312
|
res.statusCode = 200;
|
|
312
313
|
res.setHeader("content-type", "application/json");
|
|
313
314
|
res.end(JSON.stringify({ ok: true, removed: projectPath }));
|
|
314
315
|
return;
|
|
315
316
|
}
|
|
316
317
|
// ============ WEB DASHBOARD ============
|
|
317
|
-
// GET /
|
|
318
|
+
// GET / — Beautiful HTML dashboard
|
|
318
319
|
if (req.method === "GET" && (req.url === "/" || req.url === "/dashboard")) {
|
|
319
320
|
res.statusCode = 200;
|
|
320
321
|
res.setHeader("content-type", "text/html; charset=utf-8");
|
|
321
322
|
const bridgeStatus = bridgeManager?.getStatus() ?? null;
|
|
322
323
|
const uptimeSeconds = Math.floor(process.uptime());
|
|
323
324
|
const uptimeStr = `${Math.floor(uptimeSeconds / 3600)}h ${Math.floor((uptimeSeconds % 3600) / 60)}m ${uptimeSeconds % 60}s`;
|
|
324
|
-
res.end(
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
h1 span { color: #58a6ff; }
|
|
337
|
-
.subtitle { color: #8b949e; margin-bottom: 2rem; font-size: 0.95rem; }
|
|
338
|
-
.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1rem; margin-bottom: 2rem; }
|
|
339
|
-
.card { background: #161b22; border: 1px solid #30363d; border-radius: 12px; padding: 1.2rem; }
|
|
340
|
-
.card h3 { color: #8b949e; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 0.5rem; }
|
|
341
|
-
.card .value { font-size: 1.3rem; font-weight: 600; }
|
|
342
|
-
.card .value.green { color: #3fb950; }
|
|
343
|
-
.card .value.blue { color: #58a6ff; }
|
|
344
|
-
.card .value.yellow { color: #d29922; }
|
|
345
|
-
.badge { display: inline-block; padding: 0.15rem 0.6rem; border-radius: 99px; font-size: 0.75rem; font-weight: 600; }
|
|
346
|
-
.badge.orch { background: #1f6feb33; color: #58a6ff; border: 1px solid #1f6feb; }
|
|
347
|
-
.badge.exec { background: #23863633; color: #3fb950; border: 1px solid #238636; }
|
|
348
|
-
.badge.running { background: #23863633; color: #3fb950; }
|
|
349
|
-
.badge.paused { background: #d2992233; color: #d29922; }
|
|
350
|
-
.badge.stopped { background: #f8514933; color: #f85149; }
|
|
351
|
-
.controls { display: flex; gap: 0.6rem; margin-bottom: 2rem; flex-wrap: wrap; }
|
|
352
|
-
.btn { padding: 0.5rem 1.2rem; border: 1px solid #30363d; border-radius: 8px; background: #161b22; color: #e6edf3; cursor: pointer; font-size: 0.85rem; font-weight: 500; transition: all 0.15s; }
|
|
353
|
-
.btn:hover { background: #1f2937; border-color: #58a6ff; }
|
|
354
|
-
.btn.danger { border-color: #f85149; color: #f85149; }
|
|
355
|
-
.btn.danger:hover { background: #f8514922; }
|
|
356
|
-
.btn.warn { border-color: #d29922; color: #d29922; }
|
|
357
|
-
.btn.warn:hover { background: #d2992222; }
|
|
358
|
-
.btn.ok { border-color: #3fb950; color: #3fb950; }
|
|
359
|
-
.btn.ok:hover { background: #3fb95022; }
|
|
360
|
-
.toast { position: fixed; bottom: 2rem; right: 2rem; background: #161b22; border: 1px solid #30363d; border-radius: 8px; padding: 0.8rem 1.2rem; color: #e6edf3; font-size: 0.85rem; opacity: 0; transition: opacity 0.3s; z-index: 99; }
|
|
361
|
-
.toast.show { opacity: 1; }
|
|
362
|
-
.endpoints { margin-top: 1rem; }
|
|
363
|
-
.endpoints h2 { font-size: 1.1rem; margin-bottom: 0.8rem; color: #c9d1d9; }
|
|
364
|
-
.ep-list { list-style: none; }
|
|
365
|
-
.ep-list li { padding: 0.4rem 0.8rem; border-bottom: 1px solid #21262d; font-family: 'Cascadia Code', 'Fira Code', monospace; font-size: 0.8rem; display: flex; gap: 0.8rem; }
|
|
366
|
-
.ep-list .method { color: #3fb950; min-width: 3.5rem; font-weight: 600; }
|
|
367
|
-
.ep-list .path { color: #58a6ff; }
|
|
368
|
-
.ep-list .desc { color: #8b949e; margin-left: auto; }
|
|
369
|
-
.log-path { margin-top: 1rem; font-size: 0.8rem; color: #484f58; }
|
|
370
|
-
.log-path code { color: #8b949e; background: #161b22; padding: 0.15rem 0.4rem; border-radius: 4px; }
|
|
371
|
-
.footer { margin-top: 2rem; color: #484f58; font-size: 0.8rem; text-align: center; }
|
|
372
|
-
.footer a { color: #58a6ff; text-decoration: none; }
|
|
373
|
-
</style>
|
|
374
|
-
</head>
|
|
375
|
-
<body>
|
|
376
|
-
<div class="container">
|
|
377
|
-
<h1>🐝 MCP <span>Swarm</span></h1>
|
|
378
|
-
<p class="subtitle">Companion Dashboard — auto-refreshes every 5s</p>
|
|
379
|
-
<div class="cards">
|
|
380
|
-
<div class="card">
|
|
381
|
-
<h3>Agent</h3>
|
|
382
|
-
<div class="value blue">${agentName}</div>
|
|
383
|
-
</div>
|
|
384
|
-
<div class="card">
|
|
385
|
-
<h3>Role</h3>
|
|
386
|
-
<div class="value"><span class="badge ${isOrchestrator ? 'orch' : 'exec'}">${role.toUpperCase()}</span></div>
|
|
387
|
-
</div>
|
|
388
|
-
<div class="card">
|
|
389
|
-
<h3>Status</h3>
|
|
390
|
-
<div class="value"><span class="badge ${stop ? 'stopped' : paused ? 'paused' : 'running'}">${stop ? '⏹ STOPPED' : paused ? '⏸ PAUSED' : '▶ RUNNING'}</span></div>
|
|
391
|
-
</div>
|
|
392
|
-
<div class="card">
|
|
393
|
-
<h3>Bridge</h3>
|
|
394
|
-
<div class="value ${bridgeManager ? 'green' : 'yellow'}">${bridgeManager ? '🌉 Connected' : '⚠ Off'}</div>
|
|
395
|
-
</div>
|
|
396
|
-
<div class="card">
|
|
397
|
-
<h3>Project</h3>
|
|
398
|
-
<div class="value" style="font-size:0.9rem;word-break:break-all;" id="project-id">${projectId}</div>
|
|
399
|
-
</div>
|
|
400
|
-
<div class="card">
|
|
401
|
-
<h3>Uptime</h3>
|
|
402
|
-
<div class="value green">${uptimeStr}</div>
|
|
403
|
-
</div>
|
|
404
|
-
<div class="card">
|
|
405
|
-
<h3>PID</h3>
|
|
406
|
-
<div class="value" style="font-size:1rem;">${process.pid}</div>
|
|
407
|
-
</div>
|
|
408
|
-
<div class="card">
|
|
409
|
-
<h3>Log File</h3>
|
|
410
|
-
<div class="value" style="font-size:0.7rem;word-break:break-all;color:#8b949e;">${getLogFilePath()}</div>
|
|
411
|
-
</div>
|
|
412
|
-
</div>
|
|
413
|
-
<div class="controls">
|
|
414
|
-
<button class="btn ${paused ? 'ok' : 'warn'}" onclick="action('${paused ? 'resume' : 'pause'}')">${paused ? '▶ Resume' : '⏸ Pause'}</button>
|
|
415
|
-
<button class="btn danger" onclick="if(confirm('Shutdown companion?')) action('stop')">⏹ Shutdown</button>
|
|
416
|
-
<button class="btn" onclick="copyId()">📋 Copy Project ID</button>
|
|
417
|
-
</div>
|
|
418
|
-
<div class="endpoints">
|
|
419
|
-
<h2>📡 API Endpoints</h2>
|
|
420
|
-
<ul class="ep-list">
|
|
421
|
-
<li><span class="method">GET</span><span class="path">/</span><span class="desc">Dashboard</span></li>
|
|
422
|
-
<li><span class="method">GET</span><span class="path">/status</span><span class="desc">JSON status</span></li>
|
|
423
|
-
<li><span class="method">GET</span><span class="path">/health</span><span class="desc">Health check</span></li>
|
|
424
|
-
<li><span class="method">GET</span><span class="path">/bridge/status</span><span class="desc">Bridge info</span></li>
|
|
425
|
-
<li><span class="method">POST</span><span class="path">/pause</span><span class="desc">Pause</span></li>
|
|
426
|
-
<li><span class="method">POST</span><span class="path">/resume</span><span class="desc">Resume</span></li>
|
|
427
|
-
<li><span class="method">POST</span><span class="path">/stop</span><span class="desc">Stop</span></li>
|
|
428
|
-
</ul>
|
|
429
|
-
</div>
|
|
430
|
-
<div class="footer">
|
|
431
|
-
MCP Swarm v1.1 • <a href="https://github.com/AbdrAbdr/MCP-Swarm" target="_blank">GitHub</a> • <a href="https://www.npmjs.com/package/mcp-swarm" target="_blank">npm</a>
|
|
432
|
-
</div>
|
|
433
|
-
</div>
|
|
434
|
-
<div class="toast" id="toast"></div>
|
|
435
|
-
<script>
|
|
436
|
-
function toast(msg) {
|
|
437
|
-
const t = document.getElementById('toast');
|
|
438
|
-
t.textContent = msg;
|
|
439
|
-
t.classList.add('show');
|
|
440
|
-
setTimeout(() => t.classList.remove('show'), 2500);
|
|
441
|
-
}
|
|
442
|
-
async function action(act) {
|
|
443
|
-
try {
|
|
444
|
-
const r = await fetch('/' + act, { method: 'POST' });
|
|
445
|
-
const j = await r.json();
|
|
446
|
-
toast(j.ok ? act + ' OK ✅' : 'Error: ' + (j.message || 'unknown'));
|
|
447
|
-
if (act !== 'stop') setTimeout(() => location.reload(), 500);
|
|
448
|
-
} catch(e) { toast('Error: ' + e.message); }
|
|
449
|
-
}
|
|
450
|
-
function copyId() {
|
|
451
|
-
const id = document.getElementById('project-id').textContent;
|
|
452
|
-
navigator.clipboard.writeText(id).then(() => toast('Copied: ' + id)).catch(() => toast('Copy failed'));
|
|
453
|
-
}
|
|
454
|
-
</script>
|
|
455
|
-
</body>
|
|
456
|
-
</html>`);
|
|
325
|
+
res.end(renderDashboard({
|
|
326
|
+
agentName,
|
|
327
|
+
role,
|
|
328
|
+
isOrchestrator: role === "orchestrator",
|
|
329
|
+
paused: !!paused,
|
|
330
|
+
stop: !!stop,
|
|
331
|
+
bridgeConnected: !!bridgeManager,
|
|
332
|
+
projectId,
|
|
333
|
+
uptimeStr,
|
|
334
|
+
pid: process.pid,
|
|
335
|
+
logFilePath: getLogFilePath(),
|
|
336
|
+
}));
|
|
457
337
|
return;
|
|
458
338
|
}
|
|
459
339
|
// GET /health
|
|
@@ -479,7 +359,7 @@ async function run() {
|
|
|
479
359
|
const cmd = chunk.trim().toLowerCase();
|
|
480
360
|
if (cmd === "stop" || cmd === "exit" || cmd === "quit") {
|
|
481
361
|
if (isOrchestrator) {
|
|
482
|
-
log("warn", "
|
|
362
|
+
log("warn", "в›” ORCHESTRATOR STOP REQUESTED BY USER");
|
|
483
363
|
log("info", "Stopping orchestrator...");
|
|
484
364
|
}
|
|
485
365
|
stop = true;
|
|
@@ -526,14 +406,14 @@ async function run() {
|
|
|
526
406
|
}
|
|
527
407
|
}
|
|
528
408
|
// ============ AUTO-DETECT PROJECTS ============
|
|
529
|
-
//
|
|
409
|
+
// Если пришёл event с новым repoPath — автоматически подключаем bridge
|
|
530
410
|
if (bridgeManager && msg?.payload?.repoPath) {
|
|
531
411
|
const eventRepoPath = msg.payload.repoPath;
|
|
532
412
|
const status = bridgeManager.getStatus();
|
|
533
413
|
if (!status[eventRepoPath]) {
|
|
534
|
-
log("info",
|
|
414
|
+
log("info", `рџ”Ќ Auto-detected new project: ${eventRepoPath}`);
|
|
535
415
|
bridgeManager.addProject(eventRepoPath).catch(err => {
|
|
536
|
-
log("error",
|
|
416
|
+
log("error", `рџЊ‰ Failed to auto-add: ${err.message}`);
|
|
537
417
|
});
|
|
538
418
|
}
|
|
539
419
|
}
|
|
@@ -554,8 +434,8 @@ async function run() {
|
|
|
554
434
|
const inboxCheckInterval = 30_000; // Check inbox every 30 seconds
|
|
555
435
|
log("info", "Entering main loop...");
|
|
556
436
|
log("info", isOrchestrator
|
|
557
|
-
? "
|
|
558
|
-
: "
|
|
437
|
+
? "рџ”„ INFINITE LOOP MODE - Type 'stop' to exit"
|
|
438
|
+
: "рџ”„ EXECUTOR MODE - Will stop when orchestrator stops or task complete");
|
|
559
439
|
// ============ MAIN LOOP ============
|
|
560
440
|
// ORCHESTRATOR runs FOREVER until user types "stop"
|
|
561
441
|
// EXECUTOR runs until stopped or task complete
|
|
@@ -599,11 +479,11 @@ async function run() {
|
|
|
599
479
|
urgentOnly: false,
|
|
600
480
|
});
|
|
601
481
|
if (inbox.unread > 0) {
|
|
602
|
-
log("info",
|
|
482
|
+
log("info", `📬 ${inbox.unread} unread message(s) in inbox`);
|
|
603
483
|
// Auto-acknowledge urgent messages for orchestrator
|
|
604
484
|
for (const msg of inbox.messages) {
|
|
605
485
|
if (msg.importance === "urgent" && !msg.acknowledged) {
|
|
606
|
-
log("warn",
|
|
486
|
+
log("warn", `рџљЁ URGENT: ${msg.subject} from ${msg.from}`);
|
|
607
487
|
if (msg.ackRequired) {
|
|
608
488
|
await acknowledgeMessage({
|
|
609
489
|
repoPath: repoRoot,
|
|
@@ -650,7 +530,7 @@ async function run() {
|
|
|
650
530
|
if (ev.type === "task_announced") {
|
|
651
531
|
// Could auto-bid here in future
|
|
652
532
|
if (!isOrchestrator) {
|
|
653
|
-
log("info",
|
|
533
|
+
log("info", `рџ“ў New task announced: ${ev.payload?.taskId}`);
|
|
654
534
|
}
|
|
655
535
|
}
|
|
656
536
|
lastEventTs = Math.max(lastEventTs, ev.ts);
|
|
@@ -669,7 +549,7 @@ async function run() {
|
|
|
669
549
|
// ============ CLEANUP ============
|
|
670
550
|
if (bridgeManager) {
|
|
671
551
|
bridgeManager.stop();
|
|
672
|
-
log("info", "
|
|
552
|
+
log("info", "рџЊ‰ Bridge stopped");
|
|
673
553
|
}
|
|
674
554
|
if (ws) {
|
|
675
555
|
try {
|
|
@@ -700,7 +580,7 @@ function checkForUpdates() {
|
|
|
700
580
|
try {
|
|
701
581
|
const json = JSON.parse(data);
|
|
702
582
|
if (json.version && json.version !== currentVersion) {
|
|
703
|
-
log("warn",
|
|
583
|
+
log("warn", `🔄 Update available: ${currentVersion} → ${json.version} — run: npm install -g mcp-swarm@latest`);
|
|
704
584
|
}
|
|
705
585
|
}
|
|
706
586
|
catch { /* ignore parse errors */ }
|
package/dist/companion.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"companion.js","sourceRoot":"","sources":["../src/companion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,GAEnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,6CAA6C;AAC7C,yEAAyE;AACzE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;AAE5D;;;GAGG;AACH,KAAK,UAAU,yBAAyB,CACtC,MAAc,EACd,SAAiB,EACjB,WAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,gBAAgB,WAAW,EAAE;YAC3D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC5B,SAAS;gBACT,IAAI,EAAE,WAAW;aAClB,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAcD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,8DAA8D;AAC9D,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAQ,CAAC;AAEhC,SAAS,YAAY;IACnB,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,OAAO,CAAC,CAAC,eAAe;IAC7E,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,MAAM,CAAC;IAC9E,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe;QACrC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,SAAS;QAC/C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;QACjC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,2BAA2B;QACrE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;QAC5D,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK;QAC/D,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAC7C,UAAU;QACV,qBAAqB;KACtB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,QAAgB;IAC5C,MAAM,MAAM,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,uCAAuC;AACvC,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF,SAAS,GAAG,CAAC,KAA4C,EAAE,OAAe;IACxE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG;QACf,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,MAAM;QACnB,KAAK,EAAE,MAAM,CAAC,GAAG;QACjB,OAAO,EAAE,MAAM,CAAC,KAAK;KACtB,CAAC;IACF,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,GAAG;KACb,CAAC;IACF,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3F,oBAAoB;IACpB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC1B,CAAC;AAED,qCAAqC;AACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AAErD,SAAS,YAAY;IACnB,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;AACH,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC;AAED,KAAK,UAAU,GAAG;IAChB,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEjD,uCAAuC;IACvC,YAAY,EAAE,CAAC;IAEf,mCAAmC;IACnC,eAAe,EAAE,CAAC;IAElB,6CAA6C;IAC7C,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,WAAW,CAAC,EAAE,CAAC;IACjC,GAAG,CAAC,MAAM,EAAE,kBAAkB,MAAM,CAAC,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,KAAK,aAAa,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAE1G,4CAA4C;IAC5C,IAAI,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,MAAM,EAAE,KAAK,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,kDAAkD;IAClD,iEAAiE;IACjE,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACpD,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,MAAM,yBAAyB,CAAC,cAAc,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC3F,IAAI,UAAU,EAAE,CAAC;YACf,GAAG,CAAC,SAAS,EAAE,8CAA8C,cAAc,EAAE,CAAC,CAAC;QACjF,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,EAAE,8DAA8D,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QACd,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9G,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QACnF,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5B,GAAG,CAAC,SAAS,EAAE,qBAAqB,UAAU,CAAC,KAAK,CAAC,SAAS,KAAK,QAAQ,GAAG,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,SAAS,GAAG,EAAE,CAAC,KAAK,EAAE,SAAS,IAAI,cAAc,CAAC;IACxD,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAE9G,GAAG,CAAC,MAAM,EAAE,iCAAiC,MAAM,CAAC,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAEzF,kDAAkD;IAClD,qEAAqE;IACrE,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC;QACjD,QAAQ,EAAE,QAAQ;QAClB,OAAO;QACP,SAAS;QACT,QAAQ;KACT,CAAC,CAAC;IAEH,IAAI,IAAI,GAAc,cAAc,CAAC,IAAI,CAAC;IAC1C,MAAM,cAAc,GAAG,cAAc,CAAC,cAAc,CAAC;IAErD,IAAI,cAAc,EAAE,CAAC;QACnB,GAAG,CAAC,SAAS,EAAE,MAAM,MAAM,CAAC,MAAM,oBAAoB,MAAM,CAAC,KAAK,6BAA6B,CAAC,CAAC;QACjG,GAAG,CAAC,MAAM,EAAE,4EAA4E,CAAC,CAAC;IAC5F,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,gBAAgB,MAAM,CAAC,KAAK,oBAAoB,cAAc,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAClH,GAAG,CAAC,MAAM,EAAE,8CAA8C,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACzD,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,KAAK,CAAC;IAC7C,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;IAEtC,IAAI,EAAE,GAAe,IAAI,CAAC;IAC1B,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,wCAAwC;IACxC,qEAAqE;IACrE,IAAI,aAAa,GAAyB,IAAI,CAAC;IAC/C,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;QACrB,GAAG,CAAC,MAAM,EAAE,2BAA2B,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;QAC3D,aAAa,GAAG,IAAI,aAAa,CAAC;YAChC,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB,CAAC,CAAC;QACH,aAAa,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAChC,GAAG,CAAC,OAAO,EAAE,wBAAwB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,UAAU,CAAC,GAAyB;QAC3C,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QAC/B,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC5C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,YAAY;YAAE,OAAO,IAAI,CAAC;QACvE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACnD,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAC5B,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YACjD,8DAA8D;YAC9D,IAAI,cAAc,EAAE,CAAC;gBACnB,GAAG,CAAC,MAAM,EAAE,mFAAmF,CAAC,CAAC;gBACjG,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gBAClD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,uDAAuD,EAAE,CAAC,CAAC,CAAC;gBACzG,OAAO;YACT,CAAC;YACD,IAAI,GAAG,IAAI,CAAC;YACZ,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YAClD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAClD,MAAM,GAAG,IAAI,CAAC;YACd,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YAClD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YACnD,MAAM,GAAG,KAAK,CAAC;YACf,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YAClD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAClD,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YAClD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;gBACrB,EAAE,EAAE,IAAI;gBACR,IAAI;gBACJ,MAAM;gBACN,SAAS;gBACT,IAAI;gBACJ,cAAc;gBACd,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,IAAI;aAC3C,CAAC,CAAC,CAAC;YACJ,OAAO;QACT,CAAC;QAED,4CAA4C;QAC5C,4CAA4C;QAC5C,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAChE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,oBAAoB,WAAW,EAAE,CAAC,CAAC;YAChE,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAEpD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gBAClD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC,CAAC,CAAC;gBAC7E,OAAO;YACT,CAAC;YAED,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gBAClD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC,CAAC,CAAC;gBAC7F,OAAO;YACT,CAAC;YAED,GAAG,CAAC,MAAM,EAAE,2BAA2B,WAAW,EAAE,CAAC,CAAC;YACtD,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC9C,GAAG,CAAC,SAAS,EAAE,qBAAqB,WAAW,EAAE,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACb,GAAG,CAAC,OAAO,EAAE,6BAA6B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YAClD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,qBAAqB;QACrB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,gBAAgB,EAAE,CAAC;YACzD,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YAClD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;gBACrB,EAAE,EAAE,IAAI;gBACR,OAAO,EAAE,CAAC,CAAC,aAAa;gBACxB,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE;aAC3C,CAAC,CAAC,CAAC;YACJ,OAAO;QACT,CAAC;QAED,+CAA+C;QAC/C,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,oBAAoB,WAAW,EAAE,CAAC,CAAC;YAChE,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAEpD,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gBAClD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC,CAAC,CAAC;gBACvF,OAAO;YACT,CAAC;YAED,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACzC,GAAG,CAAC,MAAM,EAAE,uBAAuB,WAAW,EAAE,CAAC,CAAC;YAElD,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YAClD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,0CAA0C;QAC1C,mCAAmC;QACnC,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,YAAY,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC;YAC1D,MAAM,YAAY,GAAG,aAAa,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC;YACxD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACnD,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,aAAa,GAAG,EAAE,GAAG,CAAC;YAC5H,GAAG,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCA0DoB,SAAS;;;;gDAIK,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE;;;;gDAIvD,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW;;;;4BAI/H,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO;;;;4FAIf,SAAS;;;;mCAIlE,SAAS;;;;qDAIS,OAAO,CAAC,GAAG;;;;0FAI0B,cAAc,EAAE;;;;2BAI/E,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,sBAAsB,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA0ChI,CAAC,CAAC;YACJ,OAAO;QACT,CAAC;QAED,gBAAgB;QAChB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAClD,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YAClD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;YAClF,OAAO;QACT,CAAC;QAED,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;QACrB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACpC,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,EAAE,gDAAgD,WAAW,EAAE,CAAC,CAAC;IAE3E,kDAAkD;IAClD,wDAAwD;IACxD,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACzC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACvC,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACvD,IAAI,cAAc,EAAE,CAAC;oBACnB,GAAG,CAAC,MAAM,EAAE,uCAAuC,CAAC,CAAC;oBACrD,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;gBAC1C,CAAC;gBACD,IAAI,GAAG,IAAI,CAAC;YACd,CAAC;YACD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACpB,MAAM,GAAG,IAAI,CAAC;gBACd,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;YAClC,CAAC;YACD,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACxC,MAAM,GAAG,KAAK,CAAC;gBACf,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACrB,GAAG,CAAC,MAAM,EAAE,SAAS,IAAI,aAAa,MAAM,WAAW,IAAI,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnB,GAAG,CAAC,MAAM,EAAE,6CAA6C,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,SAAS;QACtB,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,6CAA6C;QACzF,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAEzC,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE5B,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACjB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YACpF,GAAG,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAClB,EAAE,GAAG,IAAI,CAAC;YACV,GAAG,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE;YACjC,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;YACnF,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC7B,IAAI,GAAG,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;oBACzB,8CAA8C;oBAC9C,IAAI,CAAC,cAAc,EAAE,CAAC;wBACpB,IAAI,GAAG,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;gBAED,iDAAiD;gBACjD,uEAAuE;gBACvE,IAAI,aAAa,IAAI,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;oBAC5C,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,QAAkB,CAAC;oBACrD,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;oBACzC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;wBAC3B,GAAG,CAAC,MAAM,EAAE,iCAAiC,aAAa,EAAE,CAAC,CAAC;wBAC9D,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;4BAClD,GAAG,CAAC,OAAO,EAAE,0BAA0B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;wBACxD,CAAC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,EAAE,CAAC;IAElB,gEAAgE;IAChE,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,cAAc,GAAG,CAAC,CAAC;IACzB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,MAAM,kBAAkB,GAAG,MAAM,CAAC,CAAC,+BAA+B;IAElE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IACrC,GAAG,CAAC,MAAM,EAAE,cAAc;QACxB,CAAC,CAAC,6CAA6C;QAC/C,CAAC,CAAC,uEAAuE,CAAC,CAAC;IAE7E,sCAAsC;IACtC,oDAAoD;IACpD,+CAA+C;IAC/C,OAAO,IAAI,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;QAEZ,2CAA2C;QAC3C,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,cAAc,EAAE,CAAC;gBACnB,GAAG,CAAC,MAAM,EAAE,0CAA0C,CAAC,CAAC;YAC1D,CAAC;YACD,MAAM;QACR,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YACpB,SAAS;QACX,CAAC;QAED,kDAAkD;QAClD,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;QAE/B,+EAA+E;QAC/E,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/C,GAAG,CAAC,MAAM,EAAE,iDAAiD,CAAC,CAAC;YAC/D,MAAM;QACR,CAAC;QAED,sCAAsC;QACtC,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,qBAAqB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,MAAM,iBAAiB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,wCAAwC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,GAAG,GAAG,cAAc,GAAG,kBAAkB,EAAE,CAAC;YAC9C,cAAc,GAAG,GAAG,CAAC;YAErB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC;oBAClC,QAAQ,EAAE,QAAQ;oBAClB,SAAS;oBACT,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,KAAK;iBAClB,CAAC,CAAC;gBAEH,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,MAAM,6BAA6B,CAAC,CAAC;oBAE7D,oDAAoD;oBACpD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;wBACjC,IAAI,GAAG,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;4BACrD,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,CAAC,OAAO,SAAS,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;4BAC1D,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;gCACpB,MAAM,kBAAkB,CAAC;oCACvB,QAAQ,EAAE,QAAQ;oCAClB,SAAS;oCACT,SAAS,EAAE,GAAG,CAAC,EAAE;iCAClB,CAAC,CAAC;4BACL,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,sBAAsB;YACxB,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,WAAW,GAAG,EAAE,IAAI,EAAE,CAAC,UAAU,KAAK,CAAC,CAAC;QAExC,IAAI,WAAW,EAAE,CAAC;YAChB,iCAAiC;YACjC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YAClF,WAAW,GAAG,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,sBAAsB;YACtB,WAAW,EAAE,CAAC;YACd,IAAI,WAAW,IAAI,cAAc,EAAE,CAAC;gBAClC,MAAM,SAAS,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,WAAW,IAAI,WAAW,GAAG,cAAc,CAAC,EAAE,CAAC;YACrE,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,eAAe,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;gBACrF,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;oBACxB,0BAA0B;oBAC1B,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,IAAI,EAAE,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;wBAC/D,MAAM,OAAO,GAAG,EAAE,CAAC,OAAc,CAAC;wBAClC,mEAAmE;wBACnE,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,EAAE,CAAC;4BACxE,IAAI,GAAG,IAAI,CAAC;4BACZ,MAAM;wBACR,CAAC;oBACH,CAAC;oBACD,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;wBACjC,gCAAgC;wBAChC,IAAI,CAAC,cAAc,EAAE,CAAC;4BACpB,GAAG,CAAC,MAAM,EAAE,0BAA2B,EAAE,CAAC,OAAe,EAAE,MAAM,EAAE,CAAC,CAAC;wBACvE,CAAC;oBACH,CAAC;oBACD,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,IAAI,SAAS,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,gCAAgC;YAC1D,GAAG,CAAC,MAAM,EAAE,0BAA0B,SAAS,WAAW,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAED,oCAAoC;IACpC,IAAI,aAAa,EAAE,CAAC;QAClB,aAAa,CAAC,IAAI,EAAE,CAAC;QACrB,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,EAAE,EAAE,CAAC;QACP,IAAI,CAAC;YACH,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,aAAa,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IAED,GAAG,CAAC,MAAM,EAAE,+BAA+B,SAAS,KAAK,IAAI,GAAG,CAAC,CAAC;AACpE,CAAC;AAED,iDAAiD;AACjD,SAAS,eAAe;IACtB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;QAEnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,4CAA4C,EAAE,CAAC,GAAG,EAAE,EAAE;YACzE,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5D,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,cAAc,EAAE,CAAC;wBACpD,GAAG,CAAC,MAAM,EAAE,wBAAwB,cAAc,MAAM,IAAI,CAAC,OAAO,yCAAyC,CAAC,CAAC;oBACjH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAyB,CAAC,CAAC,CAAC;QACjD,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;AAC1B,CAAC;AAED,8CAA8C;AAC9C,SAAS,gBAAgB,CAAC,MAAc;IACtC,OAAO,CAAC,GAAG,CAAC,0BAA0B,MAAM,+BAA+B,CAAC,CAAC;IAC7E,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;AACzD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/D,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IAChB,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"companion.js","sourceRoot":"","sources":["../src/companion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Swarm — Dashboard HTML Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates the interactive web dashboard HTML for the companion control server.
|
|
5
|
+
* Extracted from companion.ts for better maintainability.
|
|
6
|
+
*/
|
|
7
|
+
export function renderDashboard(data) {
|
|
8
|
+
const { agentName, role, isOrchestrator, paused, stop, bridgeConnected, projectId, uptimeStr, pid, logFilePath } = data;
|
|
9
|
+
return `<!DOCTYPE html>
|
|
10
|
+
<html lang="en">
|
|
11
|
+
<head>
|
|
12
|
+
<meta charset="UTF-8">
|
|
13
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
14
|
+
<meta http-equiv="refresh" content="5">
|
|
15
|
+
<title>🐝 MCP Swarm — Dashboard</title>
|
|
16
|
+
<style>
|
|
17
|
+
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
18
|
+
body { font-family: 'Segoe UI', system-ui, sans-serif; background: #0d1117; color: #e6edf3; min-height: 100vh; padding: 2rem; }
|
|
19
|
+
.container { max-width: 960px; margin: 0 auto; }
|
|
20
|
+
h1 { font-size: 2rem; margin-bottom: 0.5rem; }
|
|
21
|
+
h1 span { color: #58a6ff; }
|
|
22
|
+
.subtitle { color: #8b949e; margin-bottom: 2rem; font-size: 0.95rem; }
|
|
23
|
+
.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 1rem; margin-bottom: 2rem; }
|
|
24
|
+
.card { background: #161b22; border: 1px solid #30363d; border-radius: 12px; padding: 1.2rem; transition: border-color 0.2s; }
|
|
25
|
+
.card:hover { border-color: #58a6ff44; }
|
|
26
|
+
.card h3 { color: #8b949e; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 0.5rem; }
|
|
27
|
+
.card .value { font-size: 1.3rem; font-weight: 600; }
|
|
28
|
+
.card .value.green { color: #3fb950; }
|
|
29
|
+
.card .value.blue { color: #58a6ff; }
|
|
30
|
+
.card .value.yellow { color: #d29922; }
|
|
31
|
+
.badge { display: inline-block; padding: 0.15rem 0.6rem; border-radius: 99px; font-size: 0.75rem; font-weight: 600; }
|
|
32
|
+
.badge.orch { background: #1f6feb33; color: #58a6ff; border: 1px solid #1f6feb; }
|
|
33
|
+
.badge.exec { background: #23863633; color: #3fb950; border: 1px solid #238636; }
|
|
34
|
+
.badge.running { background: #23863633; color: #3fb950; }
|
|
35
|
+
.badge.paused { background: #d2992233; color: #d29922; }
|
|
36
|
+
.badge.stopped { background: #f8514933; color: #f85149; }
|
|
37
|
+
.controls { display: flex; gap: 0.6rem; margin-bottom: 2rem; flex-wrap: wrap; }
|
|
38
|
+
.btn { padding: 0.5rem 1.2rem; border: 1px solid #30363d; border-radius: 8px; background: #161b22; color: #e6edf3; cursor: pointer; font-size: 0.85rem; font-weight: 500; transition: all 0.15s; }
|
|
39
|
+
.btn:hover { background: #1f2937; border-color: #58a6ff; transform: translateY(-1px); }
|
|
40
|
+
.btn:active { transform: translateY(0); }
|
|
41
|
+
.btn.danger { border-color: #f85149; color: #f85149; }
|
|
42
|
+
.btn.danger:hover { background: #f8514922; }
|
|
43
|
+
.btn.warn { border-color: #d29922; color: #d29922; }
|
|
44
|
+
.btn.warn:hover { background: #d2992222; }
|
|
45
|
+
.btn.ok { border-color: #3fb950; color: #3fb950; }
|
|
46
|
+
.btn.ok:hover { background: #3fb95022; }
|
|
47
|
+
.toast { position: fixed; bottom: 2rem; right: 2rem; background: #161b22; border: 1px solid #30363d; border-radius: 8px; padding: 0.8rem 1.2rem; color: #e6edf3; font-size: 0.85rem; opacity: 0; transition: opacity 0.3s; z-index: 99; pointer-events: none; }
|
|
48
|
+
.toast.show { opacity: 1; }
|
|
49
|
+
.endpoints { margin-top: 1rem; }
|
|
50
|
+
.endpoints h2 { font-size: 1.1rem; margin-bottom: 0.8rem; color: #c9d1d9; }
|
|
51
|
+
.ep-list { list-style: none; }
|
|
52
|
+
.ep-list li { padding: 0.4rem 0.8rem; border-bottom: 1px solid #21262d; font-family: 'Cascadia Code', 'Fira Code', monospace; font-size: 0.8rem; display: flex; gap: 0.8rem; }
|
|
53
|
+
.ep-list .method { color: #3fb950; min-width: 3.5rem; font-weight: 600; }
|
|
54
|
+
.ep-list .path { color: #58a6ff; }
|
|
55
|
+
.ep-list .desc { color: #8b949e; margin-left: auto; }
|
|
56
|
+
.footer { margin-top: 2rem; color: #484f58; font-size: 0.8rem; text-align: center; }
|
|
57
|
+
.footer a { color: #58a6ff; text-decoration: none; }
|
|
58
|
+
</style>
|
|
59
|
+
</head>
|
|
60
|
+
<body>
|
|
61
|
+
<div class="container">
|
|
62
|
+
<h1>🐝 MCP <span>Swarm</span></h1>
|
|
63
|
+
<p class="subtitle">Companion Dashboard — auto-refreshes every 5s</p>
|
|
64
|
+
<div class="cards">
|
|
65
|
+
<div class="card">
|
|
66
|
+
<h3>Agent</h3>
|
|
67
|
+
<div class="value blue">${agentName}</div>
|
|
68
|
+
</div>
|
|
69
|
+
<div class="card">
|
|
70
|
+
<h3>Role</h3>
|
|
71
|
+
<div class="value"><span class="badge ${isOrchestrator ? 'orch' : 'exec'}">${role.toUpperCase()}</span></div>
|
|
72
|
+
</div>
|
|
73
|
+
<div class="card">
|
|
74
|
+
<h3>Status</h3>
|
|
75
|
+
<div class="value"><span class="badge ${stop ? 'stopped' : paused ? 'paused' : 'running'}">${stop ? '⏹ STOPPED' : paused ? '⏸ PAUSED' : '▶ RUNNING'}</span></div>
|
|
76
|
+
</div>
|
|
77
|
+
<div class="card">
|
|
78
|
+
<h3>Bridge</h3>
|
|
79
|
+
<div class="value ${bridgeConnected ? 'green' : 'yellow'}">${bridgeConnected ? '🌉 Connected' : '⚠ Off'}</div>
|
|
80
|
+
</div>
|
|
81
|
+
<div class="card">
|
|
82
|
+
<h3>Project</h3>
|
|
83
|
+
<div class="value" style="font-size:0.9rem;word-break:break-all;" id="project-id">${projectId}</div>
|
|
84
|
+
</div>
|
|
85
|
+
<div class="card">
|
|
86
|
+
<h3>Uptime</h3>
|
|
87
|
+
<div class="value green">${uptimeStr}</div>
|
|
88
|
+
</div>
|
|
89
|
+
<div class="card">
|
|
90
|
+
<h3>PID</h3>
|
|
91
|
+
<div class="value" style="font-size:1rem;">${pid}</div>
|
|
92
|
+
</div>
|
|
93
|
+
<div class="card">
|
|
94
|
+
<h3>Log File</h3>
|
|
95
|
+
<div class="value" style="font-size:0.7rem;word-break:break-all;color:#8b949e;">${logFilePath}</div>
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
<div class="controls">
|
|
99
|
+
<button class="btn ${paused ? 'ok' : 'warn'}" onclick="action('${paused ? 'resume' : 'pause'}')">${paused ? '▶ Resume' : '⏸ Pause'}</button>
|
|
100
|
+
<button class="btn danger" onclick="if(confirm('Shutdown companion?')) action('stop')">⏹ Shutdown</button>
|
|
101
|
+
<button class="btn" onclick="copyId()">📋 Copy Project ID</button>
|
|
102
|
+
</div>
|
|
103
|
+
<div class="endpoints">
|
|
104
|
+
<h2>📡 API Endpoints</h2>
|
|
105
|
+
<ul class="ep-list">
|
|
106
|
+
<li><span class="method">GET</span><span class="path">/</span><span class="desc">Dashboard</span></li>
|
|
107
|
+
<li><span class="method">GET</span><span class="path">/status</span><span class="desc">JSON status</span></li>
|
|
108
|
+
<li><span class="method">GET</span><span class="path">/health</span><span class="desc">Health check</span></li>
|
|
109
|
+
<li><span class="method">GET</span><span class="path">/bridge/status</span><span class="desc">Bridge info</span></li>
|
|
110
|
+
<li><span class="method">POST</span><span class="path">/pause</span><span class="desc">Pause</span></li>
|
|
111
|
+
<li><span class="method">POST</span><span class="path">/resume</span><span class="desc">Resume</span></li>
|
|
112
|
+
<li><span class="method">POST</span><span class="path">/stop</span><span class="desc">Stop</span></li>
|
|
113
|
+
</ul>
|
|
114
|
+
</div>
|
|
115
|
+
<div class="footer">
|
|
116
|
+
MCP Swarm v1.1 • <a href="https://github.com/AbdrAbdr/MCP-Swarm" target="_blank">GitHub</a> • <a href="https://www.npmjs.com/package/mcp-swarm" target="_blank">npm</a>
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
119
|
+
<div class="toast" id="toast"></div>
|
|
120
|
+
<script>
|
|
121
|
+
function toast(msg) {
|
|
122
|
+
const t = document.getElementById('toast');
|
|
123
|
+
t.textContent = msg;
|
|
124
|
+
t.classList.add('show');
|
|
125
|
+
setTimeout(() => t.classList.remove('show'), 2500);
|
|
126
|
+
}
|
|
127
|
+
async function action(act) {
|
|
128
|
+
try {
|
|
129
|
+
const r = await fetch('/' + act, { method: 'POST' });
|
|
130
|
+
const j = await r.json();
|
|
131
|
+
toast(j.ok ? act + ' OK ✅' : 'Error: ' + (j.message || 'unknown'));
|
|
132
|
+
if (act !== 'stop') setTimeout(() => location.reload(), 500);
|
|
133
|
+
} catch(e) { toast('Error: ' + e.message); }
|
|
134
|
+
}
|
|
135
|
+
function copyId() {
|
|
136
|
+
const id = document.getElementById('project-id').textContent;
|
|
137
|
+
navigator.clipboard.writeText(id).then(() => toast('Copied: ' + id)).catch(() => toast('Copy failed'));
|
|
138
|
+
}
|
|
139
|
+
</script>
|
|
140
|
+
</body>
|
|
141
|
+
</html>`;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=dashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,MAAM,UAAU,eAAe,CAAC,IAAmB;IAC/C,MAAM,EACF,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAC7C,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAC1D,GAAG,IAAI,CAAC;IAET,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCA0DuB,SAAS;;;;gDAIK,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE;;;;gDAIvD,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW;;;;4BAI/H,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,KAAK,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO;;;;4FAInB,SAAS;;;;mCAIlE,SAAS;;;;qDAIS,GAAG;;;;0FAIkC,WAAW;;;;2BAI1E,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,sBAAsB,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA0ChI,CAAC;AACT,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Swarm — Filesystem Sandbox
|
|
3
|
+
*
|
|
4
|
+
* Wraps fs operations to prevent agents from accessing files
|
|
5
|
+
* outside the allowed project directory.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* const sandbox = createSandbox('/home/user/my-project');
|
|
9
|
+
* sandbox.readFile('src/index.ts'); // OK
|
|
10
|
+
* sandbox.readFile('../../etc/passwd'); // THROWS
|
|
11
|
+
*/
|
|
12
|
+
import fs from "node:fs";
|
|
13
|
+
import path from "node:path";
|
|
14
|
+
export class FsSandboxError extends Error {
|
|
15
|
+
attemptedPath;
|
|
16
|
+
resolvedPath;
|
|
17
|
+
allowedRoot;
|
|
18
|
+
constructor(attemptedPath, resolvedPath, allowedRoot) {
|
|
19
|
+
super(`🛡️ Sandbox violation: "${attemptedPath}" resolves to "${resolvedPath}" which is outside allowed root "${allowedRoot}"`);
|
|
20
|
+
this.attemptedPath = attemptedPath;
|
|
21
|
+
this.resolvedPath = resolvedPath;
|
|
22
|
+
this.allowedRoot = allowedRoot;
|
|
23
|
+
this.name = "FsSandboxError";
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Creates a filesystem sandbox restricted to the given root directory.
|
|
28
|
+
* Any attempt to access files outside this directory will throw FsSandboxError.
|
|
29
|
+
*/
|
|
30
|
+
export function createSandbox(rootDir) {
|
|
31
|
+
const normalizedRoot = path.resolve(rootDir);
|
|
32
|
+
function validatePath(filePath) {
|
|
33
|
+
const resolved = path.resolve(normalizedRoot, filePath);
|
|
34
|
+
const relative = path.relative(normalizedRoot, resolved);
|
|
35
|
+
// If relative path starts with ".." or is absolute, it's outside the sandbox
|
|
36
|
+
if (relative.startsWith("..") || path.isAbsolute(relative)) {
|
|
37
|
+
throw new FsSandboxError(filePath, resolved, normalizedRoot);
|
|
38
|
+
}
|
|
39
|
+
return resolved;
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
root: normalizedRoot,
|
|
43
|
+
resolve(filePath) {
|
|
44
|
+
return validatePath(filePath);
|
|
45
|
+
},
|
|
46
|
+
isAllowed(filePath) {
|
|
47
|
+
try {
|
|
48
|
+
validatePath(filePath);
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
readFile(filePath, encoding = "utf-8") {
|
|
56
|
+
const safePath = validatePath(filePath);
|
|
57
|
+
return fs.readFileSync(safePath, encoding);
|
|
58
|
+
},
|
|
59
|
+
writeFile(filePath, content) {
|
|
60
|
+
const safePath = validatePath(filePath);
|
|
61
|
+
const dir = path.dirname(safePath);
|
|
62
|
+
if (!fs.existsSync(dir)) {
|
|
63
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
64
|
+
}
|
|
65
|
+
fs.writeFileSync(safePath, content, "utf-8");
|
|
66
|
+
},
|
|
67
|
+
exists(filePath) {
|
|
68
|
+
const safePath = validatePath(filePath);
|
|
69
|
+
return fs.existsSync(safePath);
|
|
70
|
+
},
|
|
71
|
+
readDir(dirPath) {
|
|
72
|
+
const safePath = validatePath(dirPath);
|
|
73
|
+
return fs.readdirSync(safePath);
|
|
74
|
+
},
|
|
75
|
+
stat(filePath) {
|
|
76
|
+
const safePath = validatePath(filePath);
|
|
77
|
+
return fs.statSync(safePath);
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=fsSandbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fsSandbox.js","sourceRoot":"","sources":["../src/fsSandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,OAAO,cAAe,SAAQ,KAAK;IAEjB;IACA;IACA;IAHpB,YACoB,aAAqB,EACrB,YAAoB,EACpB,WAAmB;QAEnC,KAAK,CAAC,2BAA2B,aAAa,kBAAkB,YAAY,oCAAoC,WAAW,GAAG,CAAC,CAAC;QAJhH,kBAAa,GAAb,aAAa,CAAQ;QACrB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,gBAAW,GAAX,WAAW,CAAQ;QAGnC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IACjC,CAAC;CACJ;AA4BD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IACzC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE7C,SAAS,YAAY,CAAC,QAAgB;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAEzD,6EAA6E;QAC7E,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO;QACH,IAAI,EAAE,cAAc;QAEpB,OAAO,CAAC,QAAgB;YACpB,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QAED,SAAS,CAAC,QAAgB;YACtB,IAAI,CAAC;gBACD,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACvB,OAAO,IAAI,CAAC;YAChB,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;QAED,QAAQ,CAAC,QAAgB,EAAE,WAA2B,OAAO;YACzD,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACxC,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/C,CAAC;QAED,SAAS,CAAC,QAAgB,EAAE,OAAe;YACvC,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,CAAC;YACD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,CAAC,QAAgB;YACnB,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACxC,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,CAAC,OAAe;YACnB,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACvC,OAAO,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,QAAgB;YACjB,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACxC,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;KACJ,CAAC;AACN,CAAC"}
|
package/eslint.config.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import tseslint from "typescript-eslint";
|
|
2
|
+
|
|
3
|
+
export default tseslint.config(
|
|
4
|
+
{
|
|
5
|
+
ignores: ["dist/**", "node_modules/**", "dashboard/**", "cloudflare/**", "-p/**"],
|
|
6
|
+
},
|
|
7
|
+
...tseslint.configs.recommended,
|
|
8
|
+
{
|
|
9
|
+
rules: {
|
|
10
|
+
"@typescript-eslint/no-explicit-any": "warn",
|
|
11
|
+
"@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_" }],
|
|
12
|
+
"no-console": "off",
|
|
13
|
+
},
|
|
14
|
+
}
|
|
15
|
+
);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-swarm",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Universal AI agent coordination platform with 26 consolidated smart tools, 21 AI models (Kimi K2.5, GPT-5.3, Opus 4.6), EWC++ self-learning, semantic caching, and Q-Learning routing",
|
|
@@ -42,7 +42,11 @@
|
|
|
42
42
|
"dashboard:install": "cd dashboard && npm install",
|
|
43
43
|
"dashboard": "concurrently \"npm run dashboard:api\" \"npm run dashboard:ui\"",
|
|
44
44
|
"dashboard:build": "cd dashboard && npm run build",
|
|
45
|
-
"test": "node --enable-source-maps dist/tests/newModules.test.js"
|
|
45
|
+
"test": "node --enable-source-maps dist/tests/newModules.test.js",
|
|
46
|
+
"lint": "eslint src/",
|
|
47
|
+
"lint:fix": "eslint src/ --fix",
|
|
48
|
+
"format": "prettier --write src/",
|
|
49
|
+
"format:check": "prettier --check src/"
|
|
46
50
|
},
|
|
47
51
|
"dependencies": {
|
|
48
52
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
@@ -54,6 +58,10 @@
|
|
|
54
58
|
"@types/node": "^22.10.2",
|
|
55
59
|
"@types/ws": "^8.18.0",
|
|
56
60
|
"concurrently": "^8.2.2",
|
|
57
|
-
"
|
|
61
|
+
"eslint": "^9.39.2",
|
|
62
|
+
"eslint-config-prettier": "^10.1.8",
|
|
63
|
+
"prettier": "^3.8.1",
|
|
64
|
+
"typescript": "^5.6.3",
|
|
65
|
+
"typescript-eslint": "^8.54.0"
|
|
58
66
|
}
|
|
59
67
|
}
|