@ni-c/mcp-hub 0.10.0 → 0.11.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 +388 -0
- package/README.md +77 -12
- package/dist/admin.js +1 -1
- package/dist/admin.js.map +1 -1
- package/dist/auth/api-tokens.js +27 -0
- package/dist/auth/api-tokens.js.map +1 -0
- package/dist/auth/headers.js +22 -1
- package/dist/auth/headers.js.map +1 -1
- package/dist/auth/oidc/adapter.js +135 -0
- package/dist/auth/oidc/adapter.js.map +1 -0
- package/dist/auth/oidc/interactions.js +187 -0
- package/dist/auth/oidc/interactions.js.map +1 -0
- package/dist/auth/oidc/mount.js +144 -0
- package/dist/auth/oidc/mount.js.map +1 -0
- package/dist/auth/oidc/provider.js +440 -0
- package/dist/auth/oidc/provider.js.map +1 -0
- package/dist/auth/oidc/quirks.js +234 -0
- package/dist/auth/oidc/quirks.js.map +1 -0
- package/dist/auth/oidc/verifier.js +121 -0
- package/dist/auth/oidc/verifier.js.map +1 -0
- package/dist/auth/protected-resource.js +41 -0
- package/dist/auth/protected-resource.js.map +1 -0
- package/dist/auth/rate-limit.js +115 -2
- package/dist/auth/rate-limit.js.map +1 -1
- package/dist/auth/redirect-uri.js +33 -1
- package/dist/auth/redirect-uri.js.map +1 -1
- package/dist/auth/registration.js +1 -1
- package/dist/auth/registration.js.map +1 -1
- package/dist/auth/session.js +43 -0
- package/dist/auth/session.js.map +1 -0
- package/dist/auth/store.js +160 -1
- package/dist/auth/store.js.map +1 -1
- package/dist/config.js +55 -2
- package/dist/config.js.map +1 -1
- package/dist/docker-proxy/policy.js +1 -0
- package/dist/docker-proxy/policy.js.map +1 -1
- package/dist/docker-proxy/server.js +1 -0
- package/dist/docker-proxy/server.js.map +1 -1
- package/dist/elicitation.js +0 -0
- package/dist/elicitation.js.map +1 -0
- package/dist/forward.js +0 -0
- package/dist/forward.js.map +1 -0
- package/dist/hub.js +309 -29
- package/dist/hub.js.map +1 -1
- package/dist/index.js +103 -21
- package/dist/index.js.map +1 -1
- package/dist/limits.js +13 -1
- package/dist/limits.js.map +1 -1
- package/dist/mcp-limits.js +14 -2
- package/dist/mcp-limits.js.map +1 -1
- package/dist/proxy.js +246 -40
- package/dist/proxy.js.map +1 -1
- package/dist/stdio.js +71 -6
- package/dist/stdio.js.map +1 -1
- package/dist/subscriptions.js +236 -0
- package/dist/subscriptions.js.map +1 -0
- package/dist/supervisor.js +322 -22
- package/dist/supervisor.js.map +1 -1
- package/dist/timings.js +61 -0
- package/dist/timings.js.map +1 -0
- package/dist/tool-filter.js +1 -0
- package/dist/tool-filter.js.map +1 -1
- package/dist/transports/docker.js.map +1 -1
- package/dist/transports/stream.js +33 -20
- package/dist/transports/stream.js.map +1 -1
- package/dist/upstream/auth.js +1 -1
- package/dist/upstream/auth.js.map +1 -1
- package/dist/upstream/provider.js.map +1 -1
- package/dist/upstream/routes.js +3 -2
- package/dist/upstream/routes.js.map +1 -1
- package/package.json +19 -6
- package/dist/auth/private-key-jwt.js +0 -213
- package/dist/auth/private-key-jwt.js.map +0 -1
- package/dist/auth/provider.js +0 -437
- package/dist/auth/provider.js.map +0 -1
- package/dist/auth/routes.js +0 -249
- package/dist/auth/routes.js.map +0 -1
package/dist/supervisor.js
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
|
|
1
|
+
import { StdioClientTransport, getDefaultEnvironment } from '@modelcontextprotocol/client/stdio';
|
|
2
|
+
import { Client, StreamableHTTPClientTransport, SSEClientTransport, UnauthorizedError } from '@modelcontextprotocol/client';
|
|
3
|
+
import { ListToolsResultSchema } from '@modelcontextprotocol/core';
|
|
5
4
|
import { VERSION } from './version.js';
|
|
6
5
|
import { MAX_TOOL_LIST_PAGES, MAX_TOOLS, MAX_TOOL_METADATA_BYTES, jsonSize } from './mcp-limits.js';
|
|
7
|
-
import {
|
|
6
|
+
import { BACKOFF_INITIAL_MS, BACKOFF_MAX_MS, BACKOFF_RESET_AFTER_MS, IDLE_SWEEP_INTERVAL_MS, MAX_UNUSED_RESTARTS, PING_INTERVAL_MS, PING_TIMEOUT_MS, WAKE_TIMEOUT_MS } from './timings.js';
|
|
8
7
|
import { SocketTransport } from './transports/socket.js';
|
|
9
8
|
import { DockerTransport } from './transports/docker.js';
|
|
10
9
|
import { DockerClient, parseSandboxDockerHost } from './sandbox/docker-client.js';
|
|
11
|
-
import { UnauthorizedError } from '@modelcontextprotocol/sdk/client/auth.js';
|
|
12
10
|
import { UpstreamAuth, UpstreamLoginRequiredError } from './upstream/auth.js';
|
|
13
11
|
import { credentialFingerprint } from './upstream/provider.js';
|
|
14
12
|
import { ToolCache } from './tool-cache.js';
|
|
15
13
|
import { filterTools, hasToolFilter, unmatchedPatterns } from './tool-filter.js';
|
|
14
|
+
import { subscriptionsAllowed } from './subscriptions.js';
|
|
16
15
|
/**
|
|
17
16
|
* Whether a failure is one a restart could fix.
|
|
18
17
|
*
|
|
@@ -24,6 +23,23 @@ import { filterTools, hasToolFilter, unmatchedPatterns } from './tool-filter.js'
|
|
|
24
23
|
function classifyAuthFailure(error) {
|
|
25
24
|
return error instanceof UpstreamLoginRequiredError || error instanceof UnauthorizedError ? 'unauthorized' : 'restart';
|
|
26
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Whether this connection's protocol revision still has `ping`.
|
|
28
|
+
*
|
|
29
|
+
* `2026-07-28` removed it. Asked on that era the SDK refuses rather than
|
|
30
|
+
* sending anything, so a liveness probe there is not a failed ping — it is a
|
|
31
|
+
* question that no longer exists. Everything older has it.
|
|
32
|
+
*
|
|
33
|
+
* Read from the connection rather than from the config, because the era is not
|
|
34
|
+
* a property of the server we configured: it is the outcome of the opening
|
|
35
|
+
* exchange with the server that actually answered.
|
|
36
|
+
*/
|
|
37
|
+
function eraHasPing(client) {
|
|
38
|
+
const era = client.getNegotiatedProtocolVersion?.();
|
|
39
|
+
// Undefined means the SDK has not recorded one, which is every revision that
|
|
40
|
+
// predates the negotiation API. Those all have ping.
|
|
41
|
+
return era === undefined || era < '2026-07-28';
|
|
42
|
+
}
|
|
27
43
|
/**
|
|
28
44
|
* Remote upstreams get their configured headers on EVERY request via a fetch
|
|
29
45
|
* wrapper — requestInit alone does not cover the SSE stream GET.
|
|
@@ -67,14 +83,25 @@ export function dockerClient() {
|
|
|
67
83
|
export function setDockerClient(client) {
|
|
68
84
|
sharedDockerClient = client;
|
|
69
85
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
|
|
86
|
+
/** Whether two upstream listen filters ask for the same thing. */
|
|
87
|
+
function sameFilter(a, b) {
|
|
88
|
+
if (!a)
|
|
89
|
+
return false;
|
|
90
|
+
// JSON rather than a joined string: with a plain separator, ['a b'] and
|
|
91
|
+
// ['a', 'b'] compare equal, and the hub would skip a reconcile it owed.
|
|
92
|
+
const uris = (filter) => JSON.stringify([...(filter.resourceSubscriptions ?? [])].sort());
|
|
93
|
+
return ((a.toolsListChanged ?? false) === (b.toolsListChanged ?? false) &&
|
|
94
|
+
(a.promptsListChanged ?? false) === (b.promptsListChanged ?? false) &&
|
|
95
|
+
(a.resourcesListChanged ?? false) === (b.resourcesListChanged ?? false) &&
|
|
96
|
+
uris(a) === uris(b));
|
|
97
|
+
}
|
|
98
|
+
/** Whether a filter asks for nothing at all, in which case nothing is held upstream. */
|
|
99
|
+
function emptyFilter(filter) {
|
|
100
|
+
return (!filter.toolsListChanged &&
|
|
101
|
+
!filter.promptsListChanged &&
|
|
102
|
+
!filter.resourcesListChanged &&
|
|
103
|
+
(filter.resourceSubscriptions?.length ?? 0) === 0);
|
|
104
|
+
}
|
|
78
105
|
export async function listAllTools(client) {
|
|
79
106
|
const tools = [];
|
|
80
107
|
let cursor;
|
|
@@ -84,7 +111,15 @@ export async function listAllTools(client) {
|
|
|
84
111
|
do {
|
|
85
112
|
if (++pages > MAX_TOOL_LIST_PAGES)
|
|
86
113
|
throw new Error(`tools/list exceeded ${MAX_TOOL_LIST_PAGES} pages`);
|
|
87
|
-
|
|
114
|
+
// `request` rather than `listTools`, deliberately. SDK v2's `listTools()`
|
|
115
|
+
// walks the whole pagination itself whenever no cursor is given -- which is
|
|
116
|
+
// every first call -- and hands back one merged result. That would collapse
|
|
117
|
+
// this loop into a single iteration and take all three budgets below with
|
|
118
|
+
// it, leaving only the SDK's own page cap and no limit on tool count or
|
|
119
|
+
// metadata size at all. The budgets exist because a hostile child's tool
|
|
120
|
+
// list is a way to exhaust the hub's memory, and with it every other
|
|
121
|
+
// server's availability. One page per request is what makes them apply.
|
|
122
|
+
const page = await client.request({ method: 'tools/list', params: { cursor } }, ListToolsResultSchema);
|
|
88
123
|
metadataBytes += jsonSize(page.tools);
|
|
89
124
|
if (metadataBytes > MAX_TOOL_METADATA_BYTES)
|
|
90
125
|
throw new Error(`tools/list metadata exceeded ${MAX_TOOL_METADATA_BYTES} bytes`);
|
|
@@ -122,6 +157,21 @@ export class ManagedServer {
|
|
|
122
157
|
lastError;
|
|
123
158
|
/** Last time a request was actually forwarded; the idle sweep measures from here. */
|
|
124
159
|
lastUsedAt = 0;
|
|
160
|
+
/**
|
|
161
|
+
* What the clients on this server's route are listening for. Created by the
|
|
162
|
+
* proxy, which owns the route's handler; the supervisor only publishes into
|
|
163
|
+
* it and reads its merged demand.
|
|
164
|
+
*
|
|
165
|
+
* Deliberately not consulted by the idle sweep: an open subscription is an
|
|
166
|
+
* intent, not a reason to keep a child process running. A sleeping child
|
|
167
|
+
* emits nothing, and the resync on the next wake is what makes that gap
|
|
168
|
+
* recoverable instead of silent.
|
|
169
|
+
*/
|
|
170
|
+
channel;
|
|
171
|
+
/** The lease book of this server's route, or nothing if no client ever asked. */
|
|
172
|
+
get subscriptions() {
|
|
173
|
+
return this.channel?.registry;
|
|
174
|
+
}
|
|
125
175
|
backoffMs;
|
|
126
176
|
startedAt = 0;
|
|
127
177
|
restartTimer;
|
|
@@ -137,6 +187,13 @@ export class ManagedServer {
|
|
|
137
187
|
* kill the new child.
|
|
138
188
|
*/
|
|
139
189
|
generation = 0;
|
|
190
|
+
/** The one upstream listen stream carrying this route's whole demand (modern era). */
|
|
191
|
+
upstream;
|
|
192
|
+
upstreamFilter;
|
|
193
|
+
/** URIs the child was told about one at a time (2025 era). */
|
|
194
|
+
upstreamUris = new Set();
|
|
195
|
+
reconciling = false;
|
|
196
|
+
reconcileQueued = false;
|
|
140
197
|
constructor(name, config, options = {}) {
|
|
141
198
|
this.name = name;
|
|
142
199
|
this.config = config;
|
|
@@ -273,7 +330,25 @@ export class ManagedServer {
|
|
|
273
330
|
}
|
|
274
331
|
}
|
|
275
332
|
const transport = this.buildTransport();
|
|
276
|
-
const client = new Client({ name: 'mcp-hub', version: VERSION }, {
|
|
333
|
+
const client = new Client({ name: 'mcp-hub', version: VERSION }, {
|
|
334
|
+
// Still nothing. The hub is not the one who can answer an elicitation —
|
|
335
|
+
// the person at the far end is — so declaring the capability on this
|
|
336
|
+
// shared connection would be a promise the hub cannot keep. What it
|
|
337
|
+
// declares per forwarded request is a different matter.
|
|
338
|
+
capabilities: {},
|
|
339
|
+
// 'auto' probes with server/discover and falls back to the 2025
|
|
340
|
+
// sequence when the child does not answer it, so a legacy child
|
|
341
|
+
// connects exactly as before. What it buys is the modern era where the
|
|
342
|
+
// child supports it: there, input_required comes back as a *result*
|
|
343
|
+
// the hub can forward, instead of a server→client request it would
|
|
344
|
+
// have nowhere to put.
|
|
345
|
+
versionNegotiation: { mode: 'auto' },
|
|
346
|
+
// The client would otherwise answer an input_required itself — from
|
|
347
|
+
// handlers the hub never registered, so every elicitation would be
|
|
348
|
+
// silently declined on the caller's behalf. A gateway has to hand the
|
|
349
|
+
// question on, not answer it.
|
|
350
|
+
inputRequired: { autoFulfill: false }
|
|
351
|
+
});
|
|
277
352
|
transport.onclose = () => this.onExit(this.exitReason(), generation);
|
|
278
353
|
try {
|
|
279
354
|
await client.connect(transport);
|
|
@@ -299,15 +374,162 @@ export class ManagedServer {
|
|
|
299
374
|
console.log(`[${this.name}] up (${this.serverInfo?.name ?? 'unknown'} ${this.serverInfo?.version ?? ''})`.trim());
|
|
300
375
|
this.resolveWakeWaiters();
|
|
301
376
|
if (this.capabilities?.tools) {
|
|
302
|
-
client.setNotificationHandler(
|
|
377
|
+
client.setNotificationHandler('notifications/tools/list_changed', () => {
|
|
378
|
+
void this.refreshTools();
|
|
379
|
+
this.publishUpstream({ kind: 'tools_list_changed' });
|
|
380
|
+
});
|
|
303
381
|
await this.refreshTools();
|
|
304
382
|
}
|
|
305
383
|
else {
|
|
306
384
|
this.options.persist?.(this);
|
|
307
385
|
}
|
|
386
|
+
this.watchUpstream(client);
|
|
387
|
+
// A subscription taken while this child was asleep is an intent, not a
|
|
388
|
+
// connection: nothing was held upstream, so it has to be re-established
|
|
389
|
+
// here rather than at the moment the client asked. The same is true after
|
|
390
|
+
// a crash — shutdown() throws the client away and every subscription with
|
|
391
|
+
// it. Without this a subscription is silently dead from the first nap on.
|
|
392
|
+
this.reconcileSubscriptions();
|
|
393
|
+
// And because nothing was held, the hub cannot know what changed while the
|
|
394
|
+
// child was gone. Telling the listeners to read everything again is the
|
|
395
|
+
// only honest answer.
|
|
396
|
+
this.subscriptions?.resync();
|
|
397
|
+
// The aggregate's tool list spans this child, so its listeners have the
|
|
398
|
+
// same gap: whatever changed while the child was away is invisible to them
|
|
399
|
+
// too. One re-read tells them so.
|
|
400
|
+
if (this.options.aggregateWantsTools?.() === true)
|
|
401
|
+
this.options.onUpstreamEvent?.({ kind: 'tools_list_changed' });
|
|
308
402
|
this.pingTimer = setInterval(() => void this.checkAlive(), PING_INTERVAL_MS);
|
|
309
403
|
this.pingTimer.unref();
|
|
310
404
|
}
|
|
405
|
+
/** One change event to this route's listeners and to the /hub aggregate. */
|
|
406
|
+
publishUpstream(event) {
|
|
407
|
+
this.subscriptions?.publish(event);
|
|
408
|
+
this.options.onUpstreamEvent?.(event);
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Route the child's change notifications to the clients waiting for them.
|
|
412
|
+
*
|
|
413
|
+
* The same four handlers serve both eras. On a 2025 connection the child
|
|
414
|
+
* sends these unsolicited; on 2026-07-28 they arrive on the listen stream
|
|
415
|
+
* that `reconcileSubscriptions` opens, and the SDK dispatches them to these
|
|
416
|
+
* very registrations. So the era difference is confined to *asking*, not to
|
|
417
|
+
* receiving — which is the whole reason this is one code path.
|
|
418
|
+
*
|
|
419
|
+
* Gated on the declared capability for the same reason the handlers below
|
|
420
|
+
* are only registered for what the child said it has: a handler for a
|
|
421
|
+
* notification the child cannot send is a claim nobody checked.
|
|
422
|
+
*/
|
|
423
|
+
watchUpstream(client) {
|
|
424
|
+
if (this.capabilities?.prompts) {
|
|
425
|
+
client.setNotificationHandler('notifications/prompts/list_changed', () => this.publishUpstream({ kind: 'prompts_list_changed' }));
|
|
426
|
+
}
|
|
427
|
+
if (this.capabilities?.resources) {
|
|
428
|
+
client.setNotificationHandler('notifications/resources/list_changed', () => this.publishUpstream({ kind: 'resources_list_changed' }));
|
|
429
|
+
client.setNotificationHandler('notifications/resources/updated', notification => this.publishUpstream({ kind: 'resource_updated', uri: notification.params.uri }));
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Bring what the child is told to watch in line with what the clients want.
|
|
434
|
+
*
|
|
435
|
+
* Fire-and-forget with a single-flight guard: it is called from lease
|
|
436
|
+
* acquire/release, which happen on the request path and must not wait for an
|
|
437
|
+
* upstream round trip. A change arriving mid-reconcile queues exactly one
|
|
438
|
+
* more pass, so the last caller's demand always wins without a backlog.
|
|
439
|
+
*/
|
|
440
|
+
reconcileSubscriptions() {
|
|
441
|
+
if (this.reconciling) {
|
|
442
|
+
this.reconcileQueued = true;
|
|
443
|
+
return;
|
|
444
|
+
}
|
|
445
|
+
this.reconciling = true;
|
|
446
|
+
void this.runReconcile()
|
|
447
|
+
.catch(error => console.error(`[${this.name}] could not update subscriptions: ${error.message}`))
|
|
448
|
+
.finally(() => {
|
|
449
|
+
this.reconciling = false;
|
|
450
|
+
if (!this.reconcileQueued)
|
|
451
|
+
return;
|
|
452
|
+
this.reconcileQueued = false;
|
|
453
|
+
this.reconcileSubscriptions();
|
|
454
|
+
});
|
|
455
|
+
}
|
|
456
|
+
async runReconcile() {
|
|
457
|
+
const client = this.client;
|
|
458
|
+
const registry = this.subscriptions;
|
|
459
|
+
// Asleep, down, or nobody listening: there is nothing to hold. State is not
|
|
460
|
+
// dropped — it lives in the leases, and start() replays it.
|
|
461
|
+
if (!client || this.state !== 'up')
|
|
462
|
+
return;
|
|
463
|
+
if (!subscriptionsAllowed(this.config))
|
|
464
|
+
return;
|
|
465
|
+
const demand = registry?.demand() ?? { toolsListChanged: false, promptsListChanged: false, resourcesListChanged: false, uris: [] };
|
|
466
|
+
// The union spans both books: this route's leases and the aggregate's.
|
|
467
|
+
const wantsTools = demand.toolsListChanged || this.options.aggregateWantsTools?.() === true;
|
|
468
|
+
// A child that never advertised `subscribe` cannot be asked for resource
|
|
469
|
+
// updates; asking anyway earns a -32601 per URI and nothing else.
|
|
470
|
+
const canSubscribe = this.capabilities?.resources?.subscribe === true;
|
|
471
|
+
const uris = canSubscribe ? demand.uris : [];
|
|
472
|
+
if (client.getProtocolEra() === 'modern') {
|
|
473
|
+
await this.reconcileModern(client, {
|
|
474
|
+
toolsListChanged: wantsTools && this.capabilities?.tools?.listChanged === true,
|
|
475
|
+
promptsListChanged: demand.promptsListChanged && this.capabilities?.prompts?.listChanged === true,
|
|
476
|
+
resourcesListChanged: demand.resourcesListChanged && this.capabilities?.resources?.listChanged === true,
|
|
477
|
+
resourceSubscriptions: uris
|
|
478
|
+
});
|
|
479
|
+
return;
|
|
480
|
+
}
|
|
481
|
+
await this.reconcileLegacy(client, uris);
|
|
482
|
+
}
|
|
483
|
+
/**
|
|
484
|
+
* One listen stream carries the whole route's demand.
|
|
485
|
+
*
|
|
486
|
+
* A filter cannot be widened in place, so any change to the union means
|
|
487
|
+
* closing the stream and opening a new one. That is a real gap — a
|
|
488
|
+
* notification landing between the two is lost — which is why the reopen is
|
|
489
|
+
* followed by nothing: the client that just subscribed gets its resync from
|
|
490
|
+
* the acquire path, and the ones already listening were not affected by
|
|
491
|
+
* whatever the new lease added.
|
|
492
|
+
*/
|
|
493
|
+
async reconcileModern(client, filter) {
|
|
494
|
+
if (sameFilter(this.upstreamFilter, filter))
|
|
495
|
+
return;
|
|
496
|
+
const previous = this.upstream;
|
|
497
|
+
this.upstream = undefined;
|
|
498
|
+
this.upstreamFilter = undefined;
|
|
499
|
+
if (previous)
|
|
500
|
+
await previous.close().catch(() => { });
|
|
501
|
+
if (emptyFilter(filter))
|
|
502
|
+
return;
|
|
503
|
+
const subscription = await client.listen(filter);
|
|
504
|
+
// A close() racing the await above already cleared the field; honour that
|
|
505
|
+
// rather than installing a stream nobody wants.
|
|
506
|
+
if (this.client !== client) {
|
|
507
|
+
await subscription.close().catch(() => { });
|
|
508
|
+
return;
|
|
509
|
+
}
|
|
510
|
+
this.upstream = subscription;
|
|
511
|
+
this.upstreamFilter = filter;
|
|
512
|
+
}
|
|
513
|
+
/**
|
|
514
|
+
* The 2025 era asks per URI and gets list_changed unsolicited, so only the
|
|
515
|
+
* resource set is negotiated — as a diff, because re-subscribing a URI the
|
|
516
|
+
* child already holds is a round trip that buys nothing.
|
|
517
|
+
*/
|
|
518
|
+
async reconcileLegacy(client, uris) {
|
|
519
|
+
const wanted = new Set(uris);
|
|
520
|
+
for (const uri of wanted) {
|
|
521
|
+
if (this.upstreamUris.has(uri))
|
|
522
|
+
continue;
|
|
523
|
+
await client.subscribeResource({ uri });
|
|
524
|
+
this.upstreamUris.add(uri);
|
|
525
|
+
}
|
|
526
|
+
// Snapshotted before the loop, which removes from the very set it reads.
|
|
527
|
+
const stale = [...this.upstreamUris].filter(uri => !wanted.has(uri));
|
|
528
|
+
for (const uri of stale) {
|
|
529
|
+
await client.unsubscribeResource({ uri }).catch(() => { });
|
|
530
|
+
this.upstreamUris.delete(uri);
|
|
531
|
+
}
|
|
532
|
+
}
|
|
311
533
|
/**
|
|
312
534
|
* Says what the filter did, at the one moment the operator is looking: a
|
|
313
535
|
* filter edit bounces this server, so this prints seconds later. That is why
|
|
@@ -355,6 +577,24 @@ export class ManagedServer {
|
|
|
355
577
|
const client = this.client;
|
|
356
578
|
if (this.state !== 'up' || !client)
|
|
357
579
|
return;
|
|
580
|
+
// `ping` does not exist on 2026-07-28: the revision removed it, and the SDK
|
|
581
|
+
// refuses to send one rather than inventing an RPC the far end never had.
|
|
582
|
+
// Without this check the refusal reads as a dead child and the supervisor
|
|
583
|
+
// restarts a server that is perfectly healthy — forever, with the backoff
|
|
584
|
+
// climbing. Seen in production the morning after 0.11.0 went out: two
|
|
585
|
+
// remote children that happened to speak the modern era flapped every
|
|
586
|
+
// interval while the rest of the hub was fine.
|
|
587
|
+
//
|
|
588
|
+
// Nothing replaces it. On that era liveness is the transport's business,
|
|
589
|
+
// which is where it always was for a stdio child: the process exits, the
|
|
590
|
+
// transport closes, onExit restarts it. What an HTTP child on the modern
|
|
591
|
+
// era loses is the *active* probe — a server that stops answering without
|
|
592
|
+
// closing is noticed at the next real call rather than within a minute.
|
|
593
|
+
// Sending some other request as a substitute heartbeat would be worse: it
|
|
594
|
+
// would be a call the operator never asked for, against a server that
|
|
595
|
+
// charges for it or logs it, every interval, forever.
|
|
596
|
+
if (!eraHasPing(client))
|
|
597
|
+
return;
|
|
358
598
|
try {
|
|
359
599
|
await client.ping({ timeout: PING_TIMEOUT_MS });
|
|
360
600
|
}
|
|
@@ -435,6 +675,14 @@ export class ManagedServer {
|
|
|
435
675
|
this.generation++;
|
|
436
676
|
clearTimeout(this.restartTimer);
|
|
437
677
|
clearInterval(this.pingTimer);
|
|
678
|
+
// The upstream subscription belongs to the connection that is going away.
|
|
679
|
+
// Forgetting it here is what makes the next start() reconcile from scratch
|
|
680
|
+
// instead of believing a stream it no longer holds is still open. The
|
|
681
|
+
// leases themselves are untouched — they are the clients' intent, and they
|
|
682
|
+
// outlive any one child process.
|
|
683
|
+
this.upstream = undefined;
|
|
684
|
+
this.upstreamFilter = undefined;
|
|
685
|
+
this.upstreamUris.clear();
|
|
438
686
|
this.rejectWakeWaiters(new Error(`Server "${this.name}" is shutting down`));
|
|
439
687
|
// Same local-client rule as checkAlive(). This path happens to be safe
|
|
440
688
|
// today because the member access precedes the await, but Supervisor.stop()
|
|
@@ -449,6 +697,11 @@ export class ManagedServer {
|
|
|
449
697
|
async stop() {
|
|
450
698
|
await this.shutdown();
|
|
451
699
|
this.state = 'stopped';
|
|
700
|
+
// Unlike sleep(), this server is not coming back: the route's handler holds
|
|
701
|
+
// open listen streams and would otherwise outlive everything it serves.
|
|
702
|
+
const channel = this.channel;
|
|
703
|
+
this.channel = undefined;
|
|
704
|
+
await channel?.close().catch(() => { });
|
|
452
705
|
}
|
|
453
706
|
/** Same teardown as stop(), but the server stays wakeable. */
|
|
454
707
|
async sleep() {
|
|
@@ -507,16 +760,63 @@ export class Supervisor {
|
|
|
507
760
|
get idleTimeoutMinutes() {
|
|
508
761
|
return this.options.idleTimeoutMinutes ?? 0;
|
|
509
762
|
}
|
|
763
|
+
/** The global idle timeout as one number, whichever unit the caller gave it in. */
|
|
764
|
+
get idleTimeoutMs() {
|
|
765
|
+
return this.options.idleTimeoutMs || this.idleTimeoutMinutes * 60_000;
|
|
766
|
+
}
|
|
767
|
+
/**
|
|
768
|
+
* What the clients on the /hub route are listening for.
|
|
769
|
+
*
|
|
770
|
+
* /hub exposes tools and nothing else, so the only change worth relaying is
|
|
771
|
+
* "some child's tool list moved, re-read mine". Set by the proxy, which owns
|
|
772
|
+
* that route's handler.
|
|
773
|
+
*/
|
|
774
|
+
hubSubscriptions;
|
|
775
|
+
/**
|
|
776
|
+
* Relay a child's change event to the /hub aggregate.
|
|
777
|
+
*
|
|
778
|
+
* Only the tool list crosses: /hub does not aggregate resources or prompts,
|
|
779
|
+
* so a resources/list_changed from one child describes nothing a /hub client
|
|
780
|
+
* can read. Sending it anyway would be the same kind of empty promise the
|
|
781
|
+
* capability table exists to prevent.
|
|
782
|
+
*/
|
|
783
|
+
onChildEvent(cfg, event) {
|
|
784
|
+
if (event.kind !== 'tools_list_changed')
|
|
785
|
+
return;
|
|
786
|
+
if (cfg.hub === false || !subscriptionsAllowed(cfg))
|
|
787
|
+
return;
|
|
788
|
+
this.hubSubscriptions?.publish(event);
|
|
789
|
+
}
|
|
790
|
+
/**
|
|
791
|
+
* Bring every child's upstream subscription in line.
|
|
792
|
+
*
|
|
793
|
+
* Called when the /hub aggregate's demand moves, because that one book is
|
|
794
|
+
* shared by all of them — unlike a per-server route, where only its own
|
|
795
|
+
* child is affected.
|
|
796
|
+
*/
|
|
797
|
+
reconcileAll() {
|
|
798
|
+
for (const server of this.servers.values())
|
|
799
|
+
server.reconcileSubscriptions();
|
|
800
|
+
}
|
|
801
|
+
aggregateWantsTools(cfg) {
|
|
802
|
+
if (cfg.hub === false || !subscriptionsAllowed(cfg))
|
|
803
|
+
return false;
|
|
804
|
+
return this.hubSubscriptions?.demand().toolsListChanged === true;
|
|
805
|
+
}
|
|
510
806
|
buildManaged(name, cfg) {
|
|
511
|
-
|
|
807
|
+
const onUpstreamEvent = (event) => this.onChildEvent(cfg, event);
|
|
808
|
+
const aggregateWantsTools = () => this.aggregateWantsTools(cfg);
|
|
809
|
+
if ((cfg.kind !== 'stdio' && cfg.kind !== 'docker') || cfg.keepAlive || this.idleTimeoutMs <= 0) {
|
|
512
810
|
const auth = cfg.kind === 'remote' ? this.options.upstreamAuth?.for(name, cfg) : undefined;
|
|
513
|
-
return new ManagedServer(name, cfg, auth ? { auth } : {});
|
|
811
|
+
return new ManagedServer(name, cfg, { onUpstreamEvent, aggregateWantsTools, ...(auth ? { auth } : {}) });
|
|
514
812
|
}
|
|
515
813
|
return new ManagedServer(name, cfg, {
|
|
516
814
|
onDemand: true,
|
|
517
|
-
idleMs:
|
|
815
|
+
idleMs: cfg.idleMinutes !== undefined ? cfg.idleMinutes * 60_000 : this.idleTimeoutMs,
|
|
518
816
|
wakeTimeoutMs: this.options.wakeTimeoutMs,
|
|
519
|
-
persist: server => this.persist(server)
|
|
817
|
+
persist: server => this.persist(server),
|
|
818
|
+
onUpstreamEvent,
|
|
819
|
+
aggregateWantsTools
|
|
520
820
|
});
|
|
521
821
|
}
|
|
522
822
|
persist(server) {
|
|
@@ -555,7 +855,7 @@ export class Supervisor {
|
|
|
555
855
|
this.startIdleSweep();
|
|
556
856
|
}
|
|
557
857
|
startIdleSweep() {
|
|
558
|
-
if (this.
|
|
858
|
+
if (this.idleTimeoutMs <= 0 || this.sweepTimer)
|
|
559
859
|
return;
|
|
560
860
|
this.sweepTimer = setInterval(() => this.sweepIdle(), this.options.sweepIntervalMs ?? IDLE_SWEEP_INTERVAL_MS);
|
|
561
861
|
this.sweepTimer.unref();
|
package/dist/supervisor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AACxG,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AAGvF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIjF;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,KAAK,YAAY,0BAA0B,IAAI,KAAK,YAAY,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;AACxH,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,MAA0B,EAAE,IAAmB;IAC3E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,IAAI,IAAI,EAAE,CAAC;QACT,4EAA4E;QAC5E,0EAA0E;QAC1E,0EAA0E;QAC1E,2EAA2E;QAC3E,oDAAoD;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC,SAAS,KAAK,KAAK;YAC/B,CAAC,CAAC,IAAI,kBAAkB,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YAChF,CAAC,CAAC,IAAI,6BAA6B,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,MAAM,gBAAgB,GAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrD,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC;IACF,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QAC/B,OAAO,IAAI,kBAAkB,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,IAAI,6BAA6B,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACvG,CAAC;AAED,IAAI,kBAA4C,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,kBAAkB,KAAK,IAAI,YAAY,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,eAAe,CAAC,MAAgC;IAC9D,kBAAkB,GAAG,MAAM,CAAC;AAC9B,CAAC;AAED,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC,MAAM,cAAc,GAAG,CAAC,GAAG,MAAM,CAAC;AAClC,MAAM,sBAAsB,GAAG,CAAC,GAAG,MAAM,CAAC;AAC1C,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,MAAM,eAAe,GAAG,MAAM,CAAC;AAC/B,MAAM,eAAe,GAAG,OAAO,CAAC;AAChC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,sBAAsB,GAAG,MAAM,CAAC;AA2BtC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAiC;IAClE,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,IAAI,MAA0B,CAAC;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,GAAG,CAAC;QACF,IAAI,EAAE,KAAK,GAAG,mBAAmB;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,mBAAmB,QAAQ,CAAC,CAAC;QACvG,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAChD,aAAa,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,aAAa,GAAG,uBAAuB;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,uBAAuB,QAAQ,CAAC,CAAC;QAC9H,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,SAAS,QAAQ,CAAC,CAAC;QACxF,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QACzB,IAAI,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAClG,IAAI,MAAM;YAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC,QAAQ,MAAM,EAAE;IACjB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,aAAa;IAsCb,IAAI;IACN,MAAM;IACI,OAAO;IAvC1B,KAAK,GAAgB,UAAU,CAAC;IAChC,MAAM,CAAU;IAChB,UAAU,CAAkB;IAC5B,YAAY,CAAsB;IAClC,KAAK,GAAW,EAAE,CAAC;IACnB;;;;;;;OAOG;IACH,WAAW,CAAU;IACrB,eAAe,CAAY;IAC3B,QAAQ,GAAG,CAAC,CAAC;IACb,SAAS,CAAU;IACnB,qFAAqF;IACrF,UAAU,GAAG,CAAC,CAAC;IAEP,SAAS,CAAS;IAClB,SAAS,GAAG,CAAC,CAAC;IACd,YAAY,CAAkB;IAC9B,SAAS,CAAkB;IAC3B,QAAQ,GAAG,KAAK,CAAC;IACzB,+EAA+E;IACvE,gBAAgB,GAAG,CAAC,CAAC;IACrB,WAAW,GAAiB,EAAE,CAAC;IACvC;;;;;OAKG;IACK,UAAU,GAAG,CAAC,CAAC;IAEvB,YACW,IAAY,EACd,MAAoB,EACV,OAAO,GAAyB,EAAE;oBAF1C,IAAI;sBACN,MAAM;uBACI,OAAO;QAExB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,gBAAgB,IAAI,kBAAkB,CAAC;IAClE,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC;IACxC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,6EAA6E;IAC7E,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAChE,CAAC;IAED,qEAAqE;IACrE,OAAO,CAAC,KAAqB;QAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACvC,iEAAiE;QACjE,0EAA0E;QAC1E,sEAAsE;QACtE,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;IAC1B,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QACjE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC;QACnG,2EAA2E;QAC3E,uCAAuC;QACvC,IAAI,IAAI,CAAC,KAAK,KAAK,cAAc,EAAE,CAAC;YAClC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,2BAA2B,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,eAAe,CAAC;QAChE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpD,MAAM,MAAM,GAAe;gBACzB,OAAO;gBACP,MAAM;gBACN,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE;oBACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;oBAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3D,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,0BAA0B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC5G,CAAC,EAAE,SAAS,CAAC;aACd,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,kBAAkB,CAAC;YACrE,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YACjC,uEAAuE;YACvE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;QACD,uDAAuD;QACvD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,kBAAkB;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3B,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,KAAY;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACzB,KAAK,QAAQ;gBACX,OAAO,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9D,KAAK,QAAQ;gBACX,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1C,KAAK,QAAQ;gBACX,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;YACrE,KAAK,OAAO;gBACV,OAAO,IAAI,oBAAoB,CAAC;oBAC9B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;oBAC5B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;oBACtB,GAAG,EAAE,EAAE,GAAG,qBAAqB,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;oBACvD,MAAM,EAAE,SAAS;iBAClB,CAAC,CAAC;QACP,CAAC;IACH,CAAC;IAED,kFAAkF;IAC1E,UAAU;QAChB,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACzB,KAAK,QAAQ;gBACX,OAAO,mBAAmB,CAAC;YAC7B,KAAK,QAAQ;gBACX,OAAO,eAAe,CAAC;YACzB,KAAK,QAAQ;gBACX,OAAO,kBAAkB,CAAC;YAC5B,KAAK,OAAO;gBACV,OAAO,sBAAsB,CAAC;QAClC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;QACxB,MAAM,UAAU,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC;QACrC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACtB,sEAAsE;YACtE,qEAAqE;YACrE,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU;oBAAE,OAAO;gBAC3C,IAAI,CAAC,MAAM,CAAC,2BAA4B,KAAe,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC3G,OAAO;YACT,CAAC;QACH,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;QACvF,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,UAAU,CAAC,CAAC;QACrE,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,oBAAqB,KAAe,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YACpG,OAAO;QACT,CAAC;QACD,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;YACnC,wEAAwE;YACxE,mEAAmE;YACnE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACnD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,2EAA2E;QAC3E,0DAA0D;QAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAClH,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC;YAC7B,MAAM,CAAC,sBAAsB,CAAC,iCAAiC,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YACjG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAC7E,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACK,gBAAgB,CAAC,QAAgB;QACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO;QACxC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACvD,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,kBAAkB,IAAI,CAAC,KAAK,CAAC,MAAM,OAAO,QAAQ,CAAC,MAAM,gBAAgB,CAAC,CAAC;QACpG,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,mCAAmC,OAAO,GAAG,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,yEAAyE;QACzE,wEAAwE;QACxE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAI,CAAC;YACH,2EAA2E;YAC3E,oEAAoE;YACpE,yEAAyE;YACzE,gBAAgB;YAChB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAChD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,2BAA4B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,2EAA2E;QAC3E,0EAA0E;QAC1E,0EAA0E;QAC1E,0EAA0E;QAC1E,2EAA2E;QAC3E,2EAA2E;QAC3E,8DAA8D;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAC3C,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,8BAA+B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACrF,wEAAwE;YACxE,yEAAyE;YACzE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,MAAc,EAAE,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,GAA+B,SAAS;QAC1G,0EAA0E;QAC1E,gDAAgD;QAChD,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU;YAAE,OAAO;QAC3C,4EAA4E;QAC5E,uEAAuE;QACvE,yEAAyE;QACzE,+DAA+D;QAC/D,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,KAAK,cAAc;YAAE,OAAO;QAC5H,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACvB,OAAO;QACT,CAAC;QACD,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;YAC/B,mEAAmE;YACnE,0EAA0E;YAC1E,qDAAqD;YACrD,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC;YAC5B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;YACxB,IAAI,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,2BAA2B,CAAC,CAAC,CAAC;YACnF,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,mBAAmB,MAAM,wCAAwC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACzG,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,sBAAsB,EAAE,CAAC;YAC/E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,kBAAkB,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,mBAAmB,CAAC,EAAE,CAAC;YACrG,kEAAkE;YAClE,4DAA4D;YAC5D,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,WAAW,MAAM,qCAAqC,IAAI,CAAC,gBAAgB,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAC9H,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;YACxB,IAAI,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,sBAAsB,MAAM,EAAE,CAAC,CAAC,CAAC;YACtF,OAAO;QACT,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,WAAW,MAAM,oBAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACtG,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACnB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;IAChE,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,IAAI,IAAI,CAAC,KAAK,KAAK,cAAc;YAAE,OAAO;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,kBAAkB,CAAC;QACrE,2EAA2E;QAC3E,0DAA0D;QAC1D,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,0EAA0E;QAC1E,mEAAmE;QACnE,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,IAAI,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC;QAC5E,uEAAuE;QACvE,4EAA4E;QAC5E,uEAAuE;QACvE,gEAAgE;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACzB,CAAC;IAED,8DAA8D;IAC9D,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO;QAClE,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;CACF;AAaD;;;;;;;;GAQG;AACH,MAAM,OAAO,oBAAoB;IAIZ,KAAK;IACL,WAAW;IAJb,QAAQ,GAAG,IAAI,GAAG,EAAuD,CAAC;IAE3F,YACmB,KAAgB,EAChB,WAAmB;qBADnB,KAAK;2BACL,WAAW;IAC3B,CAAC;IAEJ,GAAG,CAAC,IAAY,EAAE,MAA0B;QAC1C,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1E,MAAM,WAAW,GAAG,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,QAAQ,EAAE,WAAW,KAAK,WAAW;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,UAAU;IAMX,MAAM;IACG,OAAO;IANjB,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC5C,aAAa,GAAoB,EAAE,CAAC;IACpC,UAAU,CAAkB;IAEpC,YACU,MAAiB,EACR,OAAO,GAAsB,EAAE;sBADxC,MAAM;uBACG,OAAO;IACvB,CAAC;IAEJ,IAAY,kBAAkB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,CAAC,CAAC;IAC9C,CAAC;IAEO,YAAY,CAAC,IAAY,EAAE,GAAiB;QAClD,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,EAAE,CAAC;YACrG,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3F,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE;YAClC,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,MAAM;YAC7D,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;YACzC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;SACxC,CAAC,CAAC;IACL,CAAC;IAEO,OAAO,CAAC,MAAqB;QACnC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE;YACnC,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;YACjD,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK;QACH,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE;YAClE,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC/B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;gBACxE,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,0BAA0B,KAAK,CAAC,KAAK,CAAC,MAAM,gBAAgB,CAAC,CAAC;oBAClF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC3B,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAC5D,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,sBAAsB,CAAC,CAAC;QAC9G,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAEO,SAAS;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC;gBAAE,SAAS;YAC9E,IAAI,GAAG,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM;gBAAE,SAAS;YACtD,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,cAAc,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC5G,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACpH,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,CAAC,oDAAoD;QACnF,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC,mBAAmB,EAAE,CAAC;QACzD,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;YAC9B,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnE,6DAA6D;gBAC7D,oEAAoE;gBACpE,qEAAqE;gBACrE,qEAAqE;gBACrE,6BAA6B;gBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACnD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,UAAU;oBAAE,SAAS;YACzD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,gDAAgD,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9E,MAAM,YAAY,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAiB,EAAE,IAAgB;QACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,sBAAsB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;gBAClG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACjC,oEAAoE;YACpE,wEAAwE;YACxE,0CAA0C;YAC1C,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG;gBAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,sBAAsB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;YAC9F,uEAAuE;YACvE,oEAAoE;YACpE,6DAA6D;YAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC/B,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":"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"}
|
package/dist/timings.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How long the supervisor waits, in one place and overridable.
|
|
3
|
+
*
|
|
4
|
+
* These numbers are chosen for a hosted hub, where a minute of extra patience
|
|
5
|
+
* costs nothing and a restart storm costs everything. They are wrong for a test
|
|
6
|
+
* that has to observe the behaviour they govern: waiting out a 60-second idle
|
|
7
|
+
* sweep or a 120-second wake timeout is four minutes of sleeping per run, and a
|
|
8
|
+
* test suite that sleeps for four minutes is a test suite somebody deletes.
|
|
9
|
+
*
|
|
10
|
+
* The 5-minute backoff ceiling is worse than slow — it is unreachable. A test
|
|
11
|
+
* would have to let a server crash-loop for a quarter of an hour to see it.
|
|
12
|
+
*
|
|
13
|
+
* So the values move here and read the environment, exactly as `mcp-limits.ts`
|
|
14
|
+
* does for the call deadline and `subscriptions.ts` for the debounce window.
|
|
15
|
+
* Same contract as those two: a bad value warns and falls back rather than
|
|
16
|
+
* exiting, because this module is imported by the request path, and index.ts is
|
|
17
|
+
* the only place allowed to end the process over a bad environment.
|
|
18
|
+
*
|
|
19
|
+
* The Supervisor's own options still win where they exist — the environment
|
|
20
|
+
* sets the default, it does not override a caller who asked for something
|
|
21
|
+
* specific. In-process tests keep passing options; a hub in another process or
|
|
22
|
+
* a container has only the environment, which is the whole reason this file
|
|
23
|
+
* exists.
|
|
24
|
+
*/
|
|
25
|
+
import { nonNegativeIntegerEnv, positiveIntegerEnv } from './mcp-limits.js';
|
|
26
|
+
/** First wait after a child exits; doubles from here. */
|
|
27
|
+
export const BACKOFF_INITIAL_MS = positiveIntegerEnv('MCP_BACKOFF_INITIAL_MS', 1_000);
|
|
28
|
+
/** The ceiling the doubling stops at, so a permanently broken server retries hourly-ish rather than never. */
|
|
29
|
+
export const BACKOFF_MAX_MS = positiveIntegerEnv('MCP_BACKOFF_MAX_MS', 5 * 60_000);
|
|
30
|
+
/** How long a child must have stayed up before its next crash counts as the first one again. */
|
|
31
|
+
export const BACKOFF_RESET_AFTER_MS = positiveIntegerEnv('MCP_BACKOFF_RESET_AFTER_MS', 5 * 60_000);
|
|
32
|
+
/** How often a running child is pinged to find out it has gone quietly. */
|
|
33
|
+
export const PING_INTERVAL_MS = positiveIntegerEnv('MCP_PING_INTERVAL_MS', 60_000);
|
|
34
|
+
/** How long that ping may take before the child counts as gone. */
|
|
35
|
+
export const PING_TIMEOUT_MS = positiveIntegerEnv('MCP_PING_TIMEOUT_MS', 30_000);
|
|
36
|
+
/** How long a sleeping child gets to come back before the caller is told it did not. */
|
|
37
|
+
export const WAKE_TIMEOUT_MS = positiveIntegerEnv('MCP_WAKE_TIMEOUT_MS', 120_000);
|
|
38
|
+
/** Restarts of a server nobody asked for, before it is left asleep instead. */
|
|
39
|
+
export const MAX_UNUSED_RESTARTS = nonNegativeIntegerEnv('MCP_MAX_UNUSED_RESTARTS', 5);
|
|
40
|
+
/** How often the idle sweep looks for servers to put to sleep. */
|
|
41
|
+
export const IDLE_SWEEP_INTERVAL_MS = positiveIntegerEnv('MCP_IDLE_SWEEP_INTERVAL_MS', 60_000);
|
|
42
|
+
/**
|
|
43
|
+
* How often the config file is polled, on top of watching its directory.
|
|
44
|
+
*
|
|
45
|
+
* `fs.watch` does not fire for a single-file bind mount, which is the shape
|
|
46
|
+
* every Docker deployment of this hub had before the directory mount was
|
|
47
|
+
* documented — so the poll is the fallback that makes hot reload work at all,
|
|
48
|
+
* not an optimisation.
|
|
49
|
+
*/
|
|
50
|
+
export const CONFIG_POLL_INTERVAL_MS = positiveIntegerEnv('MCP_CONFIG_POLL_INTERVAL_MS', 3_000);
|
|
51
|
+
/**
|
|
52
|
+
* Idle timeout in milliseconds, when minutes are too coarse.
|
|
53
|
+
*
|
|
54
|
+
* `IDLE_TIMEOUT_MINUTES` stays the documented knob and the one a deployment
|
|
55
|
+
* should use; this is its finer-grained sibling, so a test can watch a server
|
|
56
|
+
* fall asleep in a second instead of in a minute. `0` means "not set" and
|
|
57
|
+
* leaves the minute value in charge — which is why it cannot also mean "never
|
|
58
|
+
* sleep": that is `IDLE_TIMEOUT_MINUTES=0`, and it already has a meaning.
|
|
59
|
+
*/
|
|
60
|
+
export const IDLE_TIMEOUT_MS = nonNegativeIntegerEnv('IDLE_TIMEOUT_MS', 0);
|
|
61
|
+
//# sourceMappingURL=timings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timings.js","sourceRoot":"","sources":["../src/timings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE5E,yDAAyD;AACzD,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;AAEtF,8GAA8G;AAC9G,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC,oBAAoB,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;AAEnF,gGAAgG;AAChG,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,4BAA4B,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;AAEnG,2EAA2E;AAC3E,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;AAEnF,mEAAmE;AACnE,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAEjF,wFAAwF;AACxF,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;AAElF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;AAEvF,kEAAkE;AAClE,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;AAE/F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAAkB,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;AAEhG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,qBAAqB,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC"}
|
package/dist/tool-filter.js
CHANGED
|
@@ -40,6 +40,7 @@ export function unmatchedPatterns(config, tools) {
|
|
|
40
40
|
return [...(config.allowTools ?? []), ...(config.denyTools ?? [])].filter(pattern => !names.some(name => matches([pattern], name)));
|
|
41
41
|
}
|
|
42
42
|
/** Control characters would let a caller forge lines in a log LOG_FILE mirrors to disk. */
|
|
43
|
+
// eslint-disable-next-line no-control-regex -- matching them is the point
|
|
43
44
|
const CONTROL_CHARACTERS = /[\u0000-\u001f\u007f]/g;
|
|
44
45
|
const MAX_LOGGED_NAME = 100;
|
|
45
46
|
/**
|