staff-mcp 1.3.0 → 2.0.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.
- package/CHANGELOG.md +29 -0
- package/README.md +152 -55
- package/README_zh.md +155 -53
- package/dist/src/data/HttpDataSession.d.ts +22 -0
- package/dist/src/data/HttpDataSession.js +925 -0
- package/dist/src/data/HttpDataSession.js.map +1 -0
- package/dist/src/data/node.d.ts +4 -0
- package/dist/src/data/node.js +93 -0
- package/dist/src/data/node.js.map +1 -0
- package/dist/src/data/types.d.ts +54 -0
- package/dist/src/data/types.js +2 -0
- package/dist/src/data/types.js.map +1 -0
- package/dist/src/data-stdio-docker.d.ts +10 -0
- package/dist/src/data-stdio-docker.js +140 -0
- package/dist/src/data-stdio-docker.js.map +1 -0
- package/dist/src/docker-proxy.d.ts +6 -1
- package/dist/src/docker-proxy.js +324 -147
- package/dist/src/docker-proxy.js.map +1 -1
- package/dist/src/extensions/apps.d.ts +12 -0
- package/dist/src/extensions/apps.js +85 -0
- package/dist/src/extensions/apps.js.map +1 -0
- package/dist/src/extensions/config.d.ts +27 -0
- package/dist/src/extensions/config.js +91 -0
- package/dist/src/extensions/config.js.map +1 -0
- package/dist/src/extensions/protocol.d.ts +35 -0
- package/dist/src/extensions/protocol.js +47 -0
- package/dist/src/extensions/protocol.js.map +1 -0
- package/dist/src/extensions/runtime.d.ts +16 -0
- package/dist/src/extensions/runtime.js +266 -0
- package/dist/src/extensions/runtime.js.map +1 -0
- package/dist/src/file-manager/extension.d.ts +21 -0
- package/dist/src/file-manager/extension.js +514 -0
- package/dist/src/file-manager/extension.js.map +1 -0
- package/dist/src/file-manager/file-core.d.ts +128 -0
- package/dist/src/file-manager/file-core.js +750 -0
- package/dist/src/file-manager/file-core.js.map +1 -0
- package/dist/src/file-manager/transfers.d.ts +423 -0
- package/dist/src/file-manager/transfers.js +540 -0
- package/dist/src/file-manager/transfers.js.map +1 -0
- package/dist/src/file-manager/ui/index.html +81 -0
- package/dist/src/index.js +276 -131
- package/dist/src/index.js.map +1 -1
- package/dist/src/reverse/SseTransport.d.ts +34 -0
- package/dist/src/reverse/SseTransport.js +215 -0
- package/dist/src/reverse/SseTransport.js.map +1 -0
- package/dist/src/reverse/http.d.ts +7 -0
- package/dist/src/reverse/http.js +85 -0
- package/dist/src/reverse/http.js.map +1 -0
- package/dist/src/server.d.ts +4 -2
- package/dist/src/server.js +80 -18
- package/dist/src/server.js.map +1 -1
- package/dist/src/terminal/extension.d.ts +4 -0
- package/dist/src/terminal/extension.js +108 -0
- package/dist/src/terminal/extension.js.map +1 -0
- package/dist/src/terminal/pty.d.ts +14 -0
- package/dist/src/terminal/pty.js +121 -0
- package/dist/src/terminal/pty.js.map +1 -0
- package/dist/src/terminal/session.d.ts +136 -0
- package/dist/src/terminal/session.js +422 -0
- package/dist/src/terminal/session.js.map +1 -0
- package/dist/src/terminal/ui/index.html +183 -0
- package/dist/src/tools/file-tools.d.ts +2 -1
- package/dist/src/tools/file-tools.js +19 -7
- package/dist/src/tools/file-tools.js.map +1 -1
- package/dist/src/tools/mcp-client-tools.js +243 -103
- package/dist/src/tools/mcp-client-tools.js.map +1 -1
- package/dist/src/tools/shell-tools.js +1 -1
- package/dist/src/tools/shell-tools.js.map +1 -1
- package/dist/src/tools/skills.js +26 -1
- package/dist/src/tools/skills.js.map +1 -1
- package/dist/src/transports/http.d.ts +15 -2
- package/dist/src/transports/http.js +244 -65
- package/dist/src/transports/http.js.map +1 -1
- package/dist/src/transports/reverse.d.ts +23 -19
- package/dist/src/transports/reverse.js +130 -74
- package/dist/src/transports/reverse.js.map +1 -1
- package/dist/src/transports/stdio.d.ts +5 -2
- package/dist/src/transports/stdio.js +130 -20
- package/dist/src/transports/stdio.js.map +1 -1
- package/dist/src/utils/proxy.d.ts +2 -2
- package/dist/src/utils/proxy.js +84 -62
- package/dist/src/utils/proxy.js.map +1 -1
- package/dist/src/utils/server-activity.d.ts +6 -0
- package/dist/src/utils/server-activity.js +46 -0
- package/dist/src/utils/server-activity.js.map +1 -0
- package/dist/src/utils/server-lifecycle.d.ts +5 -0
- package/dist/src/utils/server-lifecycle.js +51 -0
- package/dist/src/utils/server-lifecycle.js.map +1 -0
- package/docs/file-manager.md +179 -0
- package/docs/terminal.md +66 -0
- package/package.json +28 -6
- package/dist/src/transports/fte-lifecycle.d.ts +0 -13
- package/dist/src/transports/fte-lifecycle.js +0 -76
- package/dist/src/transports/fte-lifecycle.js.map +0 -1
package/dist/src/utils/proxy.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Agent, Dispatcher, ProxyAgent, getGlobalDispatcher, setGlobalDispatcher } from
|
|
2
|
-
const ENV_HTTP_PROXY = [
|
|
3
|
-
const ENV_HTTPS_PROXY = [
|
|
4
|
-
const ENV_NO_PROXY = [
|
|
1
|
+
import { Agent, Dispatcher, ProxyAgent, getGlobalDispatcher, setGlobalDispatcher, } from 'undici';
|
|
2
|
+
const ENV_HTTP_PROXY = ['HTTP_PROXY', 'http_proxy'];
|
|
3
|
+
const ENV_HTTPS_PROXY = ['HTTPS_PROXY', 'https_proxy'];
|
|
4
|
+
const ENV_NO_PROXY = ['NO_PROXY', 'no_proxy'];
|
|
5
5
|
/**
|
|
6
6
|
* Whether proxy environment variables are present (NO_PROXY alone does not count).
|
|
7
7
|
*/
|
|
@@ -33,7 +33,7 @@ function matchIpv4Cidr(ip, base, bits) {
|
|
|
33
33
|
/** Parse an IPv6 literal (with "::" compression and optional embedded IPv4 tail) into a 128-bit bigint. */
|
|
34
34
|
function parseIpv6ToBigInt(ipInput) {
|
|
35
35
|
let ip = ipInput;
|
|
36
|
-
const zoneIdx = ip.indexOf(
|
|
36
|
+
const zoneIdx = ip.indexOf('%'); // strip zone id, e.g. fe80::1%eth0
|
|
37
37
|
if (zoneIdx >= 0)
|
|
38
38
|
ip = ip.slice(0, zoneIdx);
|
|
39
39
|
ip = ip.toLowerCase();
|
|
@@ -41,7 +41,7 @@ function parseIpv6ToBigInt(ipInput) {
|
|
|
41
41
|
return null;
|
|
42
42
|
const expandV4Tail = (groups) => {
|
|
43
43
|
const last = groups[groups.length - 1];
|
|
44
|
-
if (last && last.includes(
|
|
44
|
+
if (last && last.includes('.')) {
|
|
45
45
|
const v4 = parseIpv4ToInt(last);
|
|
46
46
|
if (v4 === null)
|
|
47
47
|
return null;
|
|
@@ -51,22 +51,26 @@ function parseIpv6ToBigInt(ipInput) {
|
|
|
51
51
|
return groups;
|
|
52
52
|
};
|
|
53
53
|
let groups;
|
|
54
|
-
if (ip.includes(
|
|
55
|
-
const halves = ip.split(
|
|
54
|
+
if (ip.includes('::')) {
|
|
55
|
+
const halves = ip.split('::');
|
|
56
56
|
if (halves.length !== 2)
|
|
57
57
|
return null; // at most one "::"
|
|
58
|
-
const head = halves[0] ? halves[0].split(
|
|
59
|
-
const tail = halves[1] ? halves[1].split(
|
|
58
|
+
const head = halves[0] ? halves[0].split(':') : [];
|
|
59
|
+
const tail = halves[1] ? halves[1].split(':') : [];
|
|
60
60
|
const expandedTail = expandV4Tail(tail);
|
|
61
61
|
if (expandedTail === null)
|
|
62
62
|
return null;
|
|
63
63
|
const missing = 8 - (head.length + expandedTail.length);
|
|
64
64
|
if (missing < 1)
|
|
65
65
|
return null;
|
|
66
|
-
groups = [
|
|
66
|
+
groups = [
|
|
67
|
+
...head,
|
|
68
|
+
...Array(missing).fill('0'),
|
|
69
|
+
...expandedTail,
|
|
70
|
+
];
|
|
67
71
|
}
|
|
68
72
|
else {
|
|
69
|
-
const expanded = expandV4Tail(ip.split(
|
|
73
|
+
const expanded = expandV4Tail(ip.split(':'));
|
|
70
74
|
if (expanded === null)
|
|
71
75
|
return null;
|
|
72
76
|
groups = expanded;
|
|
@@ -97,13 +101,13 @@ function parsePort(value) {
|
|
|
97
101
|
}
|
|
98
102
|
function makeEntry(hostInput, port) {
|
|
99
103
|
let host = hostInput.toLowerCase();
|
|
100
|
-
if (host.endsWith(
|
|
104
|
+
if (host.endsWith('.'))
|
|
101
105
|
host = host.slice(0, -1); // strip FQDN trailing dot
|
|
102
|
-
if (host.includes(
|
|
103
|
-
let [base, bitsStr] = host.split(
|
|
106
|
+
if (host.includes('/')) {
|
|
107
|
+
let [base, bitsStr] = host.split('/', 2);
|
|
104
108
|
// Optional port after the prefix length: "10.0.0.0/8:8080"
|
|
105
|
-
if (bitsStr.includes(
|
|
106
|
-
const [bitsPart, portPart] = bitsStr.split(
|
|
109
|
+
if (bitsStr.includes(':')) {
|
|
110
|
+
const [bitsPart, portPart] = bitsStr.split(':', 2);
|
|
107
111
|
const parsed = parsePort(portPart);
|
|
108
112
|
if (parsed !== null) {
|
|
109
113
|
bitsStr = bitsPart;
|
|
@@ -113,20 +117,20 @@ function makeEntry(hostInput, port) {
|
|
|
113
117
|
const bits = Number(bitsStr);
|
|
114
118
|
const v4 = parseIpv4ToInt(base);
|
|
115
119
|
if (v4 !== null && Number.isInteger(bits) && bits >= 0 && bits <= 32) {
|
|
116
|
-
return { kind:
|
|
120
|
+
return { kind: 'cidr4', host, port, network: v4, bits };
|
|
117
121
|
}
|
|
118
122
|
const v6 = parseIpv6ToBigInt(base);
|
|
119
123
|
if (v6 !== null && Number.isInteger(bits) && bits >= 0 && bits <= 128) {
|
|
120
|
-
return { kind:
|
|
124
|
+
return { kind: 'cidr6', host, port, network: v6, bits };
|
|
121
125
|
}
|
|
122
126
|
// Unparseable CIDR: never matches (fail closed toward proxying, like undici).
|
|
123
|
-
return { kind:
|
|
127
|
+
return { kind: 'exact', host: 'invalid', port };
|
|
124
128
|
}
|
|
125
|
-
if (host.startsWith(
|
|
126
|
-
return { kind:
|
|
127
|
-
if (host.startsWith(
|
|
128
|
-
return { kind:
|
|
129
|
-
return { kind:
|
|
129
|
+
if (host.startsWith('*.'))
|
|
130
|
+
return { kind: 'suffix', host: host.slice(2), port };
|
|
131
|
+
if (host.startsWith('.'))
|
|
132
|
+
return { kind: 'suffix', host: host.slice(1), port };
|
|
133
|
+
return { kind: 'exact', host, port };
|
|
130
134
|
}
|
|
131
135
|
/**
|
|
132
136
|
* Parse a NO_PROXY value into matchable entries.
|
|
@@ -138,21 +142,23 @@ export function parseNoProxy(value) {
|
|
|
138
142
|
if (!value)
|
|
139
143
|
return [];
|
|
140
144
|
const entries = [];
|
|
141
|
-
for (const raw of value.split(
|
|
145
|
+
for (const raw of value.split(',')) {
|
|
142
146
|
const token0 = raw.trim();
|
|
143
147
|
if (!token0)
|
|
144
148
|
continue;
|
|
145
|
-
if (token0 ===
|
|
146
|
-
entries.push({ kind:
|
|
149
|
+
if (token0 === '*') {
|
|
150
|
+
entries.push({ kind: 'wildcard', host: '*', port: null });
|
|
147
151
|
continue;
|
|
148
152
|
}
|
|
149
153
|
// Bracketed IPv6, optionally with port: "[::1]" / "[::1]:8080"
|
|
150
|
-
if (token0.startsWith(
|
|
151
|
-
const close = token0.indexOf(
|
|
154
|
+
if (token0.startsWith('[')) {
|
|
155
|
+
const close = token0.indexOf(']');
|
|
152
156
|
if (close > 0) {
|
|
153
157
|
const inner = token0.slice(1, close);
|
|
154
158
|
const rest = token0.slice(close + 1);
|
|
155
|
-
const port = rest.startsWith(
|
|
159
|
+
const port = rest.startsWith(':')
|
|
160
|
+
? parsePort(rest.slice(1))
|
|
161
|
+
: null;
|
|
156
162
|
entries.push(makeEntry(inner, port));
|
|
157
163
|
continue;
|
|
158
164
|
}
|
|
@@ -160,10 +166,10 @@ export function parseNoProxy(value) {
|
|
|
160
166
|
// "host:port" — only when there is exactly one colon (otherwise it is IPv6)
|
|
161
167
|
let host = token0;
|
|
162
168
|
let port = null;
|
|
163
|
-
if (!token0.includes(
|
|
169
|
+
if (!token0.includes('/')) {
|
|
164
170
|
const colonCount = (token0.match(/:/g) || []).length;
|
|
165
171
|
if (colonCount === 1) {
|
|
166
|
-
const [h, p] = token0.split(
|
|
172
|
+
const [h, p] = token0.split(':');
|
|
167
173
|
const parsed = parsePort(p);
|
|
168
174
|
if (parsed !== null) {
|
|
169
175
|
host = h;
|
|
@@ -176,43 +182,45 @@ export function parseNoProxy(value) {
|
|
|
176
182
|
return entries;
|
|
177
183
|
}
|
|
178
184
|
function isIpLiteral(host) {
|
|
179
|
-
return parseIpv4ToInt(host) !== null || host.includes(
|
|
185
|
+
return parseIpv4ToInt(host) !== null || host.includes(':');
|
|
180
186
|
}
|
|
181
187
|
/** Whether a target host:port matches any NO_PROXY entry (i.e. should bypass the proxy). */
|
|
182
188
|
export function matchesNoProxy(hostname, port, entries) {
|
|
183
189
|
if (!hostname)
|
|
184
190
|
return false;
|
|
185
191
|
let host = hostname.toLowerCase();
|
|
186
|
-
if (host.startsWith(
|
|
192
|
+
if (host.startsWith('[') && host.endsWith(']'))
|
|
187
193
|
host = host.slice(1, -1);
|
|
188
|
-
if (host.endsWith(
|
|
194
|
+
if (host.endsWith('.'))
|
|
189
195
|
host = host.slice(0, -1);
|
|
190
196
|
for (const entry of entries) {
|
|
191
|
-
if (entry.kind ===
|
|
197
|
+
if (entry.kind === 'wildcard')
|
|
192
198
|
return true;
|
|
193
199
|
if (entry.port !== null && entry.port !== port)
|
|
194
200
|
continue;
|
|
195
201
|
switch (entry.kind) {
|
|
196
|
-
case
|
|
202
|
+
case 'exact':
|
|
197
203
|
if (host === entry.host)
|
|
198
204
|
return true;
|
|
199
205
|
// Bare-domain entries also cover subdomains (curl/wget semantics).
|
|
200
206
|
if (!isIpLiteral(entry.host) && host.endsWith(`.${entry.host}`))
|
|
201
207
|
return true;
|
|
202
208
|
break;
|
|
203
|
-
case
|
|
209
|
+
case 'suffix':
|
|
204
210
|
if (host === entry.host || host.endsWith(`.${entry.host}`))
|
|
205
211
|
return true;
|
|
206
212
|
break;
|
|
207
|
-
case
|
|
213
|
+
case 'cidr4': {
|
|
208
214
|
const v4 = parseIpv4ToInt(host);
|
|
209
|
-
if (v4 !== null &&
|
|
215
|
+
if (v4 !== null &&
|
|
216
|
+
matchIpv4Cidr(v4, entry.network, entry.bits))
|
|
210
217
|
return true;
|
|
211
218
|
break;
|
|
212
219
|
}
|
|
213
|
-
case
|
|
220
|
+
case 'cidr6': {
|
|
214
221
|
const v6 = parseIpv6ToBigInt(host);
|
|
215
|
-
if (v6 !== null &&
|
|
222
|
+
if (v6 !== null &&
|
|
223
|
+
matchIpv6Cidr(v6, entry.network, entry.bits))
|
|
216
224
|
return true;
|
|
217
225
|
break;
|
|
218
226
|
}
|
|
@@ -227,18 +235,18 @@ export function matchesNoProxy(hostname, port, entries) {
|
|
|
227
235
|
export function selectProxyForOrigin(origin, config) {
|
|
228
236
|
let url;
|
|
229
237
|
try {
|
|
230
|
-
url = typeof origin ===
|
|
238
|
+
url = typeof origin === 'string' ? new URL(origin) : origin;
|
|
231
239
|
}
|
|
232
240
|
catch {
|
|
233
241
|
return null;
|
|
234
242
|
}
|
|
235
243
|
const protocol = url.protocol.toLowerCase();
|
|
236
|
-
if (protocol !==
|
|
244
|
+
if (protocol !== 'http:' && protocol !== 'https:')
|
|
237
245
|
return null;
|
|
238
|
-
const port = url.port ? Number(url.port) : protocol ===
|
|
246
|
+
const port = url.port ? Number(url.port) : protocol === 'https:' ? 443 : 80;
|
|
239
247
|
if (matchesNoProxy(url.hostname, port, parseNoProxy(config.noProxy)))
|
|
240
248
|
return null;
|
|
241
|
-
if (protocol ===
|
|
249
|
+
if (protocol === 'https:')
|
|
242
250
|
return config.httpsProxy ?? config.httpProxy ?? null;
|
|
243
251
|
return config.httpProxy ?? null;
|
|
244
252
|
}
|
|
@@ -265,17 +273,26 @@ export class EnvProxyDispatcher extends Dispatcher {
|
|
|
265
273
|
this.ownedAgents.push(agent);
|
|
266
274
|
return agent;
|
|
267
275
|
};
|
|
268
|
-
this.httpAgent = opts.httpProxy
|
|
269
|
-
|
|
276
|
+
this.httpAgent = opts.httpProxy
|
|
277
|
+
? mkProxy(opts.httpProxy)
|
|
278
|
+
: this.directAgent;
|
|
279
|
+
this.httpsAgent = opts.httpsProxy
|
|
280
|
+
? mkProxy(opts.httpsProxy)
|
|
281
|
+
: this.httpAgent;
|
|
270
282
|
}
|
|
271
283
|
dispatch(options, handler) {
|
|
272
284
|
let agent = this.directAgent;
|
|
273
285
|
try {
|
|
274
286
|
const url = new URL(options.origin);
|
|
275
287
|
const protocol = url.protocol.toLowerCase();
|
|
276
|
-
const port = url.port
|
|
288
|
+
const port = url.port
|
|
289
|
+
? Number(url.port)
|
|
290
|
+
: protocol === 'https:'
|
|
291
|
+
? 443
|
|
292
|
+
: 80;
|
|
277
293
|
if (!matchesNoProxy(url.hostname, port, this.noProxyEntries)) {
|
|
278
|
-
agent =
|
|
294
|
+
agent =
|
|
295
|
+
protocol === 'https:' ? this.httpsAgent : this.httpAgent;
|
|
279
296
|
}
|
|
280
297
|
}
|
|
281
298
|
catch {
|
|
@@ -308,11 +325,11 @@ export function configureGlobalProxy(explicitProxyUrl) {
|
|
|
308
325
|
if (explicitProxyUrl) {
|
|
309
326
|
try {
|
|
310
327
|
setGlobalDispatcher(new ProxyAgent(explicitProxyUrl));
|
|
311
|
-
console.error(
|
|
328
|
+
console.error('[staff-mcp] Outbound proxy: explicit proxy enabled for all traffic (NO_PROXY not applied)');
|
|
312
329
|
return true;
|
|
313
330
|
}
|
|
314
|
-
catch
|
|
315
|
-
console.error(
|
|
331
|
+
catch {
|
|
332
|
+
console.error('[staff-mcp] Outbound proxy: failed to configure explicit proxy');
|
|
316
333
|
return false;
|
|
317
334
|
}
|
|
318
335
|
}
|
|
@@ -321,8 +338,13 @@ export function configureGlobalProxy(explicitProxyUrl) {
|
|
|
321
338
|
const noProxy = process.env.NO_PROXY || process.env.no_proxy;
|
|
322
339
|
if (httpProxy || httpsProxy) {
|
|
323
340
|
setGlobalDispatcher(new EnvProxyDispatcher({ httpProxy, httpsProxy, noProxy }));
|
|
324
|
-
const proxiesFound = [
|
|
325
|
-
|
|
341
|
+
const proxiesFound = [
|
|
342
|
+
httpProxy && 'HTTP_PROXY',
|
|
343
|
+
httpsProxy && 'HTTPS_PROXY',
|
|
344
|
+
]
|
|
345
|
+
.filter(Boolean)
|
|
346
|
+
.join('/');
|
|
347
|
+
console.error(`[staff-mcp] Outbound proxy: honoring ${proxiesFound}${noProxy ? '/NO_PROXY' : ''} environment variables`);
|
|
326
348
|
return true;
|
|
327
349
|
}
|
|
328
350
|
return false;
|
|
@@ -331,21 +353,21 @@ export function maskProxyUrl(url) {
|
|
|
331
353
|
try {
|
|
332
354
|
const u = new URL(url);
|
|
333
355
|
if (u.username || u.password) {
|
|
334
|
-
u.username =
|
|
335
|
-
u.password =
|
|
356
|
+
u.username = '***';
|
|
357
|
+
u.password = '***';
|
|
336
358
|
}
|
|
337
359
|
return u.toString();
|
|
338
360
|
}
|
|
339
361
|
catch {
|
|
340
|
-
return
|
|
362
|
+
return '<invalid proxy URL>';
|
|
341
363
|
}
|
|
342
364
|
}
|
|
343
365
|
export function logGlobalDispatcherDebug() {
|
|
344
366
|
const d = getGlobalDispatcher();
|
|
345
|
-
const name = d?.constructor?.name ??
|
|
367
|
+
const name = d?.constructor?.name ?? 'unknown';
|
|
346
368
|
const proxyKeys = Object.getOwnPropertySymbols(d)
|
|
347
369
|
.map((s) => s.toString())
|
|
348
|
-
.filter((s) => s.includes(
|
|
349
|
-
console.error(`[staff-mcp][debug] global dispatcher: ${name} symbols: ${proxyKeys.join(
|
|
370
|
+
.filter((s) => s.includes('proxy') || s.includes('Proxy'));
|
|
371
|
+
console.error(`[staff-mcp][debug] global dispatcher: ${name} symbols: ${proxyKeys.join(', ') || 'none'}`);
|
|
350
372
|
}
|
|
351
373
|
//# sourceMappingURL=proxy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/utils/proxy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/utils/proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
/** Install before business handlers. SDK-owned initialize/ping handlers stay untouched. */
|
|
3
|
+
export declare function installRequestActivity(server: McpServer): void;
|
|
4
|
+
/** Predicates read their owner's existing state; they must not renew or sweep resources. */
|
|
5
|
+
export declare function registerServerActivity(server: McpServer, predicate: () => boolean): void;
|
|
6
|
+
export declare function hasServerActivity(server: McpServer): boolean;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
const activities = new WeakMap();
|
|
2
|
+
function activityFor(server) {
|
|
3
|
+
let activity = activities.get(server);
|
|
4
|
+
if (!activity) {
|
|
5
|
+
activity = { requests: 0, installed: false, predicates: new Set() };
|
|
6
|
+
activities.set(server, activity);
|
|
7
|
+
}
|
|
8
|
+
return activity;
|
|
9
|
+
}
|
|
10
|
+
/** Install before business handlers. SDK-owned initialize/ping handlers stay untouched. */
|
|
11
|
+
export function installRequestActivity(server) {
|
|
12
|
+
const activity = activityFor(server);
|
|
13
|
+
if (activity.installed)
|
|
14
|
+
return;
|
|
15
|
+
const setRequestHandler = server.server.setRequestHandler.bind(server.server);
|
|
16
|
+
server.server.setRequestHandler = (schema, handler) => {
|
|
17
|
+
setRequestHandler(schema, async (request, extra) => {
|
|
18
|
+
activity.requests++;
|
|
19
|
+
try {
|
|
20
|
+
// Cancellation/transport closure does not settle the actual handler.
|
|
21
|
+
return await handler(request, extra);
|
|
22
|
+
}
|
|
23
|
+
finally {
|
|
24
|
+
activity.requests--;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
activity.installed = true;
|
|
29
|
+
}
|
|
30
|
+
/** Predicates read their owner's existing state; they must not renew or sweep resources. */
|
|
31
|
+
export function registerServerActivity(server, predicate) {
|
|
32
|
+
activityFor(server).predicates.add(predicate);
|
|
33
|
+
}
|
|
34
|
+
export function hasServerActivity(server) {
|
|
35
|
+
const activity = activities.get(server);
|
|
36
|
+
if (!activity)
|
|
37
|
+
return false;
|
|
38
|
+
if (activity.requests > 0)
|
|
39
|
+
return true;
|
|
40
|
+
for (const predicate of activity.predicates) {
|
|
41
|
+
if (predicate())
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=server-activity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-activity.js","sourceRoot":"","sources":["../../../src/utils/server-activity.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,GAAG,IAAI,OAAO,EAAuB,CAAC;AAEtD,SAAS,WAAW,CAAC,MAAiB;IAClC,IAAI,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,QAAQ,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;QACpE,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACpD,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,QAAQ,CAAC,SAAS;QAAE,OAAO;IAC/B,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAC1D,MAAM,CAAC,MAAM,CAChB,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QAClD,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YAC/C,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACpB,IAAI,CAAC;gBACD,qEAAqE;gBACrE,OAAO,MAAM,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACzC,CAAC;oBAAS,CAAC;gBACP,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACxB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IACF,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;AAC9B,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,sBAAsB,CAClC,MAAiB,EACjB,SAAwB;IAExB,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IAC/C,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,QAAQ,CAAC,QAAQ,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC1C,IAAI,SAAS,EAAE;YAAE,OAAO,IAAI,CAAC;IACjC,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
type Cleanup = () => void | Promise<void>;
|
|
3
|
+
/** One server owns one lifetime. Cleanup must not await server.close() itself. */
|
|
4
|
+
export declare function registerServerCleanup(server: McpServer, cleanup: Cleanup): void;
|
|
5
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
const lifecycles = new WeakMap();
|
|
2
|
+
function checkResults(results) {
|
|
3
|
+
const errors = results
|
|
4
|
+
.filter((result) => result.status === 'rejected')
|
|
5
|
+
.map((result) => result.reason);
|
|
6
|
+
if (errors.length)
|
|
7
|
+
throw new AggregateError(errors, 'Server cleanup failed');
|
|
8
|
+
}
|
|
9
|
+
/** One server owns one lifetime. Cleanup must not await server.close() itself. */
|
|
10
|
+
export function registerServerCleanup(server, cleanup) {
|
|
11
|
+
let lifecycle = lifecycles.get(server);
|
|
12
|
+
if (!lifecycle) {
|
|
13
|
+
const state = { cleanups: [] };
|
|
14
|
+
lifecycle = state;
|
|
15
|
+
lifecycles.set(server, state);
|
|
16
|
+
const startCleanup = () => {
|
|
17
|
+
if (!state.cleanup) {
|
|
18
|
+
// Invoke every callback immediately, including synchronous fences,
|
|
19
|
+
// without allowing one failure to skip the remaining owners.
|
|
20
|
+
state.cleanup = Promise.allSettled(state.cleanups.map(async (run) => {
|
|
21
|
+
await run();
|
|
22
|
+
})).then(checkResults);
|
|
23
|
+
// Transport onclose cannot await; explicit close observes this same result.
|
|
24
|
+
void state.cleanup.catch(() => { });
|
|
25
|
+
}
|
|
26
|
+
return state.cleanup;
|
|
27
|
+
};
|
|
28
|
+
const previousClose = server.server.onclose;
|
|
29
|
+
server.server.onclose = () => {
|
|
30
|
+
startCleanup();
|
|
31
|
+
previousClose?.call(server.server);
|
|
32
|
+
};
|
|
33
|
+
const close = server.close.bind(server);
|
|
34
|
+
server.close = () => {
|
|
35
|
+
if (!state.closing) {
|
|
36
|
+
// Defer SDK close until the shared promise is installed. onclose
|
|
37
|
+
// only starts cleanup and never waits for this close operation.
|
|
38
|
+
const transportClose = Promise.resolve().then(close);
|
|
39
|
+
state.closing = Promise.allSettled([
|
|
40
|
+
startCleanup(),
|
|
41
|
+
transportClose,
|
|
42
|
+
]).then(checkResults);
|
|
43
|
+
}
|
|
44
|
+
return state.closing;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
if (lifecycle.cleanup)
|
|
48
|
+
throw new Error('Cannot register cleanup on a closed server');
|
|
49
|
+
lifecycle.cleanups.push(cleanup);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=server-lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-lifecycle.js","sourceRoot":"","sources":["../../../src/utils/server-lifecycle.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,GAAG,IAAI,OAAO,EAAwB,CAAC;AAEvD,SAAS,YAAY,CAAC,OAAwC;IAC1D,MAAM,MAAM,GAAG,OAAO;SACjB,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC;SAChD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,MAAM,CAAC,MAAM;QACb,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;AAClE,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,qBAAqB,CACjC,MAAiB,EACjB,OAAgB;IAEhB,IAAI,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,KAAK,GAAc,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC1C,SAAS,GAAG,KAAK,CAAC;QAClB,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9B,MAAM,YAAY,GAAG,GAAG,EAAE;YACtB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACjB,mEAAmE;gBACnE,6DAA6D;gBAC7D,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,UAAU,CAC9B,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;oBAC7B,MAAM,GAAG,EAAE,CAAC;gBAChB,CAAC,CAAC,CACL,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACrB,4EAA4E;gBAC5E,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,KAAK,CAAC,OAAO,CAAC;QACzB,CAAC,CAAC;QACF,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;YACzB,YAAY,EAAE,CAAC;YACf,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACjB,iEAAiE;gBACjE,gEAAgE;gBAChE,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrD,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;oBAC/B,YAAY,EAAE;oBACd,cAAc;iBACjB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO,KAAK,CAAC,OAAO,CAAC;QACzB,CAAC,CAAC;IACN,CAAC;IACD,IAAI,SAAS,CAAC,OAAO;QACjB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAClE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC"}
|