mcp-compose 0.0.1 → 0.0.3
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/README.md +7 -5
- package/dist/bin/mcp-compose.js +19 -46
- package/dist/bin/mcp-compose.js.map +1 -1
- package/dist/src/pm2.d.ts +2 -5
- package/dist/src/pm2.d.ts.map +1 -1
- package/dist/src/pm2.js +64 -27
- package/dist/src/pm2.js.map +1 -1
- package/dist/src/sync.d.ts.map +1 -1
- package/dist/src/sync.js +7 -2
- package/dist/src/sync.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
# mcp-compose
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Run MCP servers once, share them across all Claude Code sessions.
|
|
4
|
+
|
|
5
|
+
Claude Code launches stdio MCP servers per session by default. mcp-compose converts them to persistent HTTP endpoints using [supergateway](https://github.com/supercorp-ai/supergateway) and manages them with [pm2](https://github.com/Unitech/pm2), so multiple sessions can connect to the same running servers.
|
|
6
|
+
|
|
7
|
+
Servers run directly on your system without containerization, preserving full access to local dependencies that some MCP servers require.
|
|
4
8
|
|
|
5
9
|
## Installation
|
|
6
10
|
|
|
@@ -188,13 +192,11 @@ Add `"disabled": true` to skip a server without removing its config:
|
|
|
188
192
|
## CLI Reference
|
|
189
193
|
|
|
190
194
|
```
|
|
191
|
-
mcp-compose up [servers...] Start
|
|
195
|
+
mcp-compose up [servers...] Start or update servers (only restarts changed configs)
|
|
192
196
|
mcp-compose down [servers...] Stop servers
|
|
193
197
|
mcp-compose restart [servers...] Restart servers
|
|
194
198
|
mcp-compose status Show running servers
|
|
195
199
|
mcp-compose logs [server] [-f] View logs (follow with -f)
|
|
196
|
-
mcp-compose startup Enable auto-start on boot
|
|
197
|
-
mcp-compose unstartup Disable auto-start
|
|
198
200
|
```
|
|
199
201
|
|
|
200
202
|
### Options
|
|
@@ -241,9 +243,9 @@ Each stdio server gets an internal port starting from `portBase` (default 19100)
|
|
|
241
243
|
|
|
242
244
|
## Features
|
|
243
245
|
|
|
246
|
+
- **Incremental updates**: Only restarts servers with changed configurations
|
|
244
247
|
- **Automatic port conflict detection**: Skips ports in use and allocates next available
|
|
245
248
|
- **Config validation**: Validates configuration structure with helpful error messages
|
|
246
|
-
- **Progress feedback**: Shows real-time progress during server operations
|
|
247
249
|
- **Resource limits**: Control memory usage and restart behavior per server
|
|
248
250
|
- **Process management**: Auto-restart with configurable limits via pm2
|
|
249
251
|
- **Non-destructive config sync**: Merges with existing Claude Code config
|
package/dist/bin/mcp-compose.js
CHANGED
|
@@ -1,23 +1,31 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { createRequire } from 'module';
|
|
2
3
|
import { Command } from 'commander';
|
|
3
4
|
import { loadConfig, getStdioServers, getServerNames, allocatePorts, } from '../src/config.js';
|
|
4
|
-
|
|
5
|
+
const require = createRequire(import.meta.url);
|
|
6
|
+
const { version } = require('../package.json');
|
|
7
|
+
import { startServers, stopServers, stopAllManagedServers, restartServers, getStatus, streamLogs, } from '../src/pm2.js';
|
|
5
8
|
import { syncToClaudeConfig, removeFromClaudeConfig } from '../src/sync.js';
|
|
6
9
|
function formatProgress(event) {
|
|
7
|
-
const progress = event.total ? `[${String(event.current)}/${String(event.total)}]` : '';
|
|
8
10
|
switch (event.type) {
|
|
9
11
|
case 'checking_ports':
|
|
10
12
|
return ` ⋯ Checking port availability...`;
|
|
11
13
|
case 'port_skipped':
|
|
12
14
|
return ` ⚠ Port ${String(event.originalPort)} in use, using ${String(event.port)} instead`;
|
|
13
15
|
case 'starting':
|
|
14
|
-
return `
|
|
16
|
+
return ` Starting ${event.server}...`;
|
|
15
17
|
case 'started':
|
|
16
|
-
return `
|
|
18
|
+
return ` ✓ ${event.server} Started`;
|
|
19
|
+
case 'recreating':
|
|
20
|
+
return ` Recreating ${event.server}...`;
|
|
21
|
+
case 'recreated':
|
|
22
|
+
return ` ✓ ${event.server} Recreated`;
|
|
23
|
+
case 'up_to_date':
|
|
24
|
+
return ` ${event.server} is up to date`;
|
|
17
25
|
case 'stopping':
|
|
18
|
-
return `
|
|
26
|
+
return ` Stopping ${event.server}...`;
|
|
19
27
|
case 'stopped':
|
|
20
|
-
return `
|
|
28
|
+
return ` ✓ ${event.server} Stopped`;
|
|
21
29
|
default:
|
|
22
30
|
return '';
|
|
23
31
|
}
|
|
@@ -39,7 +47,7 @@ function handleError(err) {
|
|
|
39
47
|
program
|
|
40
48
|
.name('mcp-compose')
|
|
41
49
|
.description('MCP server orchestration tool')
|
|
42
|
-
.version(
|
|
50
|
+
.version(version)
|
|
43
51
|
.option('-c, --config <path>', 'Path to config file');
|
|
44
52
|
program
|
|
45
53
|
.command('up')
|
|
@@ -57,9 +65,7 @@ program
|
|
|
57
65
|
console.log('No stdio servers match the filter. Remote servers are synced directly.');
|
|
58
66
|
}
|
|
59
67
|
if (filteredServers.length > 0) {
|
|
60
|
-
console.log(`Starting ${String(filteredServers.length)} stdio server(s)...\n`);
|
|
61
68
|
// Check port availability and allocate ports
|
|
62
|
-
console.log(' ⋯ Checking port availability...');
|
|
63
69
|
const ports = await allocatePorts(filteredServers.length, config.settings.portBase, (originalPort, assignedPort) => {
|
|
64
70
|
console.log(` ⚠ Port ${String(originalPort)} in use, using ${String(assignedPort)} instead`);
|
|
65
71
|
});
|
|
@@ -71,16 +77,11 @@ program
|
|
|
71
77
|
}
|
|
72
78
|
return { ...server, internalPort: port };
|
|
73
79
|
});
|
|
74
|
-
console.log('');
|
|
75
80
|
await startServers(serversWithPorts, processPrefix, printProgress);
|
|
76
81
|
}
|
|
77
|
-
console.log('
|
|
82
|
+
console.log('');
|
|
78
83
|
const syncResult = syncToClaudeConfig(config);
|
|
79
|
-
console.log(` ✓
|
|
80
|
-
console.log(` Servers: ${syncResult.servers.join(', ')}`);
|
|
81
|
-
console.log('\nMCP servers are running via pm2.');
|
|
82
|
-
console.log('Use "mcp-compose status" to check status.');
|
|
83
|
-
console.log('Use "mcp-compose logs" to view logs.');
|
|
84
|
+
console.log(` ✓ Synced ${syncResult.path}`);
|
|
84
85
|
}
|
|
85
86
|
catch (err) {
|
|
86
87
|
handleError(err);
|
|
@@ -168,39 +169,11 @@ program
|
|
|
168
169
|
.description('View server logs')
|
|
169
170
|
.argument('[server]', 'Server name (default: all)')
|
|
170
171
|
.option('-f, --follow', 'Follow log output')
|
|
171
|
-
.action((server,
|
|
172
|
+
.action((server, options, cmd) => {
|
|
172
173
|
try {
|
|
173
174
|
const config = loadConfig(getConfigPath(cmd));
|
|
174
175
|
const { processPrefix } = config.settings;
|
|
175
|
-
streamLogs(server, processPrefix);
|
|
176
|
-
}
|
|
177
|
-
catch (err) {
|
|
178
|
-
handleError(err);
|
|
179
|
-
}
|
|
180
|
-
});
|
|
181
|
-
program
|
|
182
|
-
.command('startup')
|
|
183
|
-
.description('Enable auto-start on system boot')
|
|
184
|
-
.action(async () => {
|
|
185
|
-
try {
|
|
186
|
-
console.log('Setting up pm2 startup...');
|
|
187
|
-
await setupStartup();
|
|
188
|
-
console.log('\nSaving current process list...');
|
|
189
|
-
await saveProcessList();
|
|
190
|
-
console.log('\n✓ Auto-start enabled. MCP servers will start on boot.');
|
|
191
|
-
}
|
|
192
|
-
catch (err) {
|
|
193
|
-
handleError(err);
|
|
194
|
-
}
|
|
195
|
-
});
|
|
196
|
-
program
|
|
197
|
-
.command('unstartup')
|
|
198
|
-
.description('Disable auto-start on system boot')
|
|
199
|
-
.action(async () => {
|
|
200
|
-
try {
|
|
201
|
-
console.log('Removing pm2 startup...');
|
|
202
|
-
await unstartup();
|
|
203
|
-
console.log('\n✓ Auto-start disabled.');
|
|
176
|
+
streamLogs(server, processPrefix, options.follow);
|
|
204
177
|
}
|
|
205
178
|
catch (err) {
|
|
206
179
|
handleError(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-compose.js","sourceRoot":"","sources":["../../bin/mcp-compose.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,UAAU,EACV,eAAe,EACf,cAAc,EACd,aAAa,GACd,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-compose.js","sourceRoot":"","sources":["../../bin/mcp-compose.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,UAAU,EACV,eAAe,EACf,cAAc,EACd,aAAa,GACd,MAAM,kBAAkB,CAAC;AAE1B,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AACtE,OAAO,EACL,YAAY,EACZ,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,SAAS,EACT,UAAU,GACX,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE5E,SAAS,cAAc,CAAC,KAAoB;IAC1C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,gBAAgB;YACnB,OAAO,mCAAmC,CAAC;QAC7C,KAAK,cAAc;YACjB,OAAO,YAAY,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,kBAAkB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;QAC9F,KAAK,UAAU;YACb,OAAO,cAAc,KAAK,CAAC,MAAM,KAAK,CAAC;QACzC,KAAK,SAAS;YACZ,OAAO,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;QACvC,KAAK,YAAY;YACf,OAAO,gBAAgB,KAAK,CAAC,MAAM,KAAK,CAAC;QAC3C,KAAK,WAAW;YACd,OAAO,OAAO,KAAK,CAAC,MAAM,YAAY,CAAC;QACzC,KAAK,YAAY;YACf,OAAO,KAAK,KAAK,CAAC,MAAM,gBAAgB,CAAC;QAC3C,KAAK,UAAU;YACb,OAAO,cAAc,KAAK,CAAC,MAAM,KAAK,CAAC;QACzC,KAAK,SAAS;YACZ,OAAO,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;QACvC;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAoB;IACzC,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,GAAG;QAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,SAAS,aAAa,CAAC,GAAY;IACjC,OAAO,GAAG,CAAC,MAAM,EAAE,IAAI,EAAuB,CAAC,MAAM,CAAC;AACxD,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAC;AAExD,OAAO;KACJ,OAAO,CAAC,IAAI,CAAC;KACb,WAAW,CAAC,mBAAmB,CAAC;KAChC,QAAQ,CAAC,cAAc,EAAE,0CAA0C,CAAC;KACpE,MAAM,CAAC,KAAK,EAAE,OAAiB,EAAE,QAAiB,EAAE,GAAY,EAAE,EAAE;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC1C,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,eAAe,GACnB,OAAO,CAAC,MAAM,GAAG,CAAC;YAChB,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACtD,CAAC,CAAC,YAAY,CAAC;QAEnB,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,OAAO,CAAC,GAAG,CACT,wEAAwE,CACzE,CAAC;QACJ,CAAC;QAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,6CAA6C;YAC7C,MAAM,KAAK,GAAG,MAAM,aAAa,CAC/B,eAAe,CAAC,MAAM,EACtB,MAAM,CAAC,QAAQ,CAAC,QAAQ,EACxB,CAAC,YAAY,EAAE,YAAY,EAAE,EAAE;gBAC7B,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,YAAY,CAAC,kBAAkB,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAChG,CAAC,CACF,CAAC;YAEF,sCAAsC;YACtC,MAAM,gBAAgB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACzD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBACtE,CAAC;gBACD,OAAO,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;YAC3C,CAAC,CAAC,CAAC;YAEH,MAAM,YAAY,CAAC,gBAAgB,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kBAAkB,CAAC;KAC/B,QAAQ,CAAC,cAAc,EAAE,yCAAyC,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,OAAiB,EAAE,QAAiB,EAAE,GAAY,EAAE,EAAE;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;QAE1C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACtE,MAAM,WAAW,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,MAAM,qBAAqB,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,MAAM,YAAY,GAAG,sBAAsB,CACzC,MAAM,EACN,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACpC,CAAC;QACF,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,gBAAgB,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,qBAAqB,CAAC;KAClC,QAAQ,CAAC,cAAc,EAAE,4CAA4C,CAAC;KACtE,MAAM,CAAC,KAAK,EAAE,OAAiB,EAAE,QAAiB,EAAE,GAAY,EAAE,EAAE;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC1C,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,WAAW,GACf,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEjE,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACrE,MAAM,cAAc,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QACjD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,YAAY,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QAEjC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CACT,gEAAgE,CACjE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAEnC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM;gBACrB,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI;gBACnD,CAAC,CAAC,GAAG,CAAC;YACR,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;YACpE,MAAM,KAAK,GAAG,SAAS,CAAC;YACxB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CACnJ,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kBAAkB,CAAC;KAC/B,QAAQ,CAAC,UAAU,EAAE,4BAA4B,CAAC;KAClD,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC;KAC3C,MAAM,CAAC,CAAC,MAA0B,EAAE,OAA6B,EAAE,GAAY,EAAE,EAAE;IAClF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC1C,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/src/pm2.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { spawn } from 'child_process';
|
|
|
2
2
|
import type { NamedStdioServer, StartResult, ServerStatus } from './types.js';
|
|
3
3
|
export type ProgressCallback = (event: ProgressEvent) => void;
|
|
4
4
|
export interface ProgressEvent {
|
|
5
|
-
type: 'starting' | 'started' | 'stopping' | 'stopped' | 'port_skipped' | 'checking_ports';
|
|
5
|
+
type: 'starting' | 'started' | 'recreating' | 'recreated' | 'up_to_date' | 'stopping' | 'stopped' | 'port_skipped' | 'checking_ports';
|
|
6
6
|
server: string;
|
|
7
7
|
port?: number;
|
|
8
8
|
originalPort?: number;
|
|
@@ -14,8 +14,5 @@ export declare function stopServers(serverNames: string[], prefix: string, onPro
|
|
|
14
14
|
export declare function stopAllManagedServers(): Promise<number>;
|
|
15
15
|
export declare function restartServers(serverNames: string[], prefix: string): Promise<void>;
|
|
16
16
|
export declare function getStatus(): Promise<ServerStatus[]>;
|
|
17
|
-
export declare function streamLogs(serverName?: string, prefix?: string): ReturnType<typeof spawn>;
|
|
18
|
-
export declare function setupStartup(): Promise<void>;
|
|
19
|
-
export declare function saveProcessList(): Promise<void>;
|
|
20
|
-
export declare function unstartup(): Promise<void>;
|
|
17
|
+
export declare function streamLogs(serverName?: string, prefix?: string, follow?: boolean): ReturnType<typeof spawn>;
|
|
21
18
|
//# sourceMappingURL=pm2.d.ts.map
|
package/dist/src/pm2.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pm2.d.ts","sourceRoot":"","sources":["../../src/pm2.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9E,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAE9D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,cAAc,GAAG,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"pm2.d.ts","sourceRoot":"","sources":["../../src/pm2.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9E,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAE9D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,cAAc,GAAG,gBAAgB,CAAC;IACtI,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA+JD,wBAAgB,YAAY,CAC1B,OAAO,EAAE,gBAAgB,EAAE,EAC3B,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,WAAW,EAAE,CAAC,CA6ExB;AAED,wBAAgB,WAAW,CACzB,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAWvD;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMnF;AAED,wBAAgB,SAAS,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAcnD;AAED,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAS3G"}
|
package/dist/src/pm2.js
CHANGED
|
@@ -86,20 +86,47 @@ async function withPm2(fn) {
|
|
|
86
86
|
pm2.disconnect();
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
function execPm2Command(args) {
|
|
90
|
-
return new Promise((resolve, reject) => {
|
|
91
|
-
const proc = spawn('npx', ['pm2', ...args], { stdio: 'inherit' });
|
|
92
|
-
proc.on('close', (code) => {
|
|
93
|
-
if (code === 0)
|
|
94
|
-
resolve();
|
|
95
|
-
else
|
|
96
|
-
reject(new Error(`pm2 ${args.join(' ')} failed with code ${String(code)}`));
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
89
|
function getProcessName(serverName, prefix) {
|
|
101
90
|
return `${prefix}${serverName}`;
|
|
102
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Get a running process by name
|
|
94
|
+
*/
|
|
95
|
+
async function getRunningProcess(processName) {
|
|
96
|
+
const list = await pm2List();
|
|
97
|
+
return list.find((p) => p.name === processName) ?? null;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Check if the process configuration matches the desired configuration
|
|
101
|
+
*/
|
|
102
|
+
function isProcessConfigMatch(process, script, args, env) {
|
|
103
|
+
const pm2Env = process.pm2_env;
|
|
104
|
+
if (!pm2Env)
|
|
105
|
+
return false;
|
|
106
|
+
// Check if process is online
|
|
107
|
+
if (pm2Env.status !== 'online')
|
|
108
|
+
return false;
|
|
109
|
+
// Check script path
|
|
110
|
+
if (pm2Env.pm_exec_path !== script)
|
|
111
|
+
return false;
|
|
112
|
+
// Check args (pm2 stores them as array)
|
|
113
|
+
const currentArgs = pm2Env.args ?? [];
|
|
114
|
+
if (currentArgs.length !== args.length)
|
|
115
|
+
return false;
|
|
116
|
+
for (let i = 0; i < args.length; i++) {
|
|
117
|
+
if (currentArgs[i] !== args[i])
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
// Check env vars (only the ones we care about, excluding MCP_COMPOSE_MARKER)
|
|
121
|
+
const currentEnv = pm2Env.env ?? {};
|
|
122
|
+
for (const [key, value] of Object.entries(env)) {
|
|
123
|
+
if (key === MCP_COMPOSE_MARKER)
|
|
124
|
+
continue;
|
|
125
|
+
if (currentEnv[key] !== value)
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
103
130
|
/**
|
|
104
131
|
* Check if a process is managed by mcp-compose by looking for the marker env var
|
|
105
132
|
*/
|
|
@@ -123,8 +150,27 @@ export function startServers(servers, prefix, onProgress) {
|
|
|
123
150
|
const { name, resourceLimits, ...server } = serverEntry;
|
|
124
151
|
const processName = getProcessName(name, prefix);
|
|
125
152
|
const cmd = buildSupergatewayCmdForServer({ ...server, resourceLimits });
|
|
153
|
+
const envWithMarker = {
|
|
154
|
+
...server.env,
|
|
155
|
+
[MCP_COMPOSE_MARKER]: name,
|
|
156
|
+
};
|
|
157
|
+
// Check if process is already running with the same configuration
|
|
158
|
+
const existingProcess = await getRunningProcess(processName);
|
|
159
|
+
if (existingProcess && isProcessConfigMatch(existingProcess, cmd.script, cmd.args, envWithMarker)) {
|
|
160
|
+
onProgress?.({
|
|
161
|
+
type: 'up_to_date',
|
|
162
|
+
server: name,
|
|
163
|
+
port: server.internalPort,
|
|
164
|
+
current,
|
|
165
|
+
total,
|
|
166
|
+
});
|
|
167
|
+
results.push({ name, processName, port: server.internalPort });
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
// Determine if this is a new start or recreate
|
|
171
|
+
const isRecreate = existingProcess !== null;
|
|
126
172
|
onProgress?.({
|
|
127
|
-
type: 'starting',
|
|
173
|
+
type: isRecreate ? 'recreating' : 'starting',
|
|
128
174
|
server: name,
|
|
129
175
|
port: server.internalPort,
|
|
130
176
|
current,
|
|
@@ -135,10 +181,7 @@ export function startServers(servers, prefix, onProgress) {
|
|
|
135
181
|
name: processName,
|
|
136
182
|
script: cmd.script,
|
|
137
183
|
args: cmd.args,
|
|
138
|
-
env:
|
|
139
|
-
...server.env,
|
|
140
|
-
[MCP_COMPOSE_MARKER]: name, // Mark as managed and store server name
|
|
141
|
-
},
|
|
184
|
+
env: envWithMarker,
|
|
142
185
|
autorestart: true,
|
|
143
186
|
max_restarts: resourceLimits.maxRestarts ?? 10,
|
|
144
187
|
restart_delay: resourceLimits.restartDelay ?? 1000,
|
|
@@ -152,7 +195,7 @@ export function startServers(servers, prefix, onProgress) {
|
|
|
152
195
|
}
|
|
153
196
|
await pm2Start(startOptions);
|
|
154
197
|
onProgress?.({
|
|
155
|
-
type: 'started',
|
|
198
|
+
type: isRecreate ? 'recreated' : 'started',
|
|
156
199
|
server: name,
|
|
157
200
|
port: server.internalPort,
|
|
158
201
|
current,
|
|
@@ -217,20 +260,14 @@ export function getStatus() {
|
|
|
217
260
|
}));
|
|
218
261
|
});
|
|
219
262
|
}
|
|
220
|
-
export function streamLogs(serverName, prefix) {
|
|
263
|
+
export function streamLogs(serverName, prefix, follow) {
|
|
221
264
|
const args = ['pm2', 'logs'];
|
|
222
265
|
if (serverName && prefix) {
|
|
223
266
|
args.push(getProcessName(serverName, prefix));
|
|
224
267
|
}
|
|
268
|
+
if (!follow) {
|
|
269
|
+
args.push('--nostream');
|
|
270
|
+
}
|
|
225
271
|
return spawn('npx', args, { stdio: 'inherit' });
|
|
226
272
|
}
|
|
227
|
-
export function setupStartup() {
|
|
228
|
-
return execPm2Command(['startup']);
|
|
229
|
-
}
|
|
230
|
-
export function saveProcessList() {
|
|
231
|
-
return execPm2Command(['save']);
|
|
232
|
-
}
|
|
233
|
-
export function unstartup() {
|
|
234
|
-
return execPm2Command(['unstartup']);
|
|
235
|
-
}
|
|
236
273
|
//# sourceMappingURL=pm2.js.map
|
package/dist/src/pm2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pm2.js","sourceRoot":"","sources":["../../src/pm2.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAclE,wEAAwE;AACxE,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"pm2.js","sourceRoot":"","sources":["../../src/pm2.ts"],"names":[],"mappings":"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"}
|
package/dist/src/sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/sync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAGhB,UAAU,EACV,YAAY,EACb,MAAM,YAAY,CAAC;AAyBpB,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/sync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAGhB,UAAU,EACV,YAAY,EACb,MAAM,YAAY,CAAC;AAyBpB,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAmCvE;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,gBAAgB,EACxB,WAAW,GAAE,MAAM,EAAE,GAAG,IAAW,GAClC,YAAY,CA0Cd"}
|
package/dist/src/sync.js
CHANGED
|
@@ -27,7 +27,10 @@ export function syncToClaudeConfig(config) {
|
|
|
27
27
|
const content = readFileSync(claudeConfigPath, 'utf-8');
|
|
28
28
|
existingConfig = JSON.parse(content);
|
|
29
29
|
}
|
|
30
|
-
catch {
|
|
30
|
+
catch (err) {
|
|
31
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
32
|
+
console.error(`Warning: Failed to parse ${claudeConfigPath}: ${message}`);
|
|
33
|
+
console.error(' Existing config will be overwritten.');
|
|
31
34
|
existingConfig = {};
|
|
32
35
|
}
|
|
33
36
|
}
|
|
@@ -55,7 +58,9 @@ export function removeFromClaudeConfig(config, serverNames = null) {
|
|
|
55
58
|
const content = readFileSync(claudeConfigPath, 'utf-8');
|
|
56
59
|
existingConfig = JSON.parse(content);
|
|
57
60
|
}
|
|
58
|
-
catch {
|
|
61
|
+
catch (err) {
|
|
62
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
63
|
+
console.error(`Warning: Failed to parse ${claudeConfigPath}: ${message}`);
|
|
59
64
|
return { path: claudeConfigPath, removed: [] };
|
|
60
65
|
}
|
|
61
66
|
if (!existingConfig.mcpServers) {
|
package/dist/src/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAS7D,SAAS,oBAAoB,CAC3B,MAAwB;IAExB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAC9B,MAAM,YAAY,GAAuC,EAAE,CAAC;IAE5D,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACxD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC,GAAG;gBACnB,IAAI,EAAE,MAAM;gBACZ,GAAG,EAAE,oBAAoB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM;aAC3D,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,GAAG;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;aAChB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAwB;IACzD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAC5B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;IAEnD,IAAI,cAAc,GAAiB,EAAE,CAAC;IACtC,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YACxD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAS7D,SAAS,oBAAoB,CAC3B,MAAwB;IAExB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAC9B,MAAM,YAAY,GAAuC,EAAE,CAAC;IAE5D,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACxD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC,GAAG;gBACnB,IAAI,EAAE,MAAM;gBACZ,GAAG,EAAE,oBAAoB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM;aAC3D,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,GAAG;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;aAChB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAwB;IACzD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAC5B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;IAEnD,IAAI,cAAc,GAAiB,EAAE,CAAC;IACtC,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YACxD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;QACvD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,4BAA4B,gBAAgB,KAAK,OAAO,EAAE,CAAC,CAAC;YAC1E,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;YACxD,cAAc,GAAG,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAEhD,MAAM,YAAY,GAAiB,EAAE,GAAG,cAAc,EAAE,CAAC;IACzD,YAAY,CAAC,UAAU,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;IACnE,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9D,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;IAC/C,CAAC;IAED,aAAa,CACX,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAC7C,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;KAChE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAAwB,EACxB,cAA+B,IAAI;IAEnC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IACxC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;IAEnD,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACjD,CAAC;IAED,IAAI,cAA4B,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACxD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;IACvD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,4BAA4B,gBAAgB,KAAK,OAAO,EAAE,CAAC,CAAC;QAC1E,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACjD,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,gEAAgE;YAChE,OAAO,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,aAAa,CACX,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAC/C,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,OAAO;KACR,CAAC;AACJ,CAAC"}
|