@samanhappy/mcphub 1.0.37 → 1.0.38
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/dist/constants/oauthServerDefaults.js +1 -0
- package/dist/constants/oauthServerDefaults.js.map +1 -1
- package/dist/controllers/oauthDynamicRegistrationController.js +6 -32
- package/dist/controllers/oauthDynamicRegistrationController.js.map +1 -1
- package/dist/controllers/serverController.js +28 -3
- package/dist/controllers/serverController.js.map +1 -1
- package/dist/dao/OAuthClientDaoDbImpl.js +3 -0
- package/dist/dao/OAuthClientDaoDbImpl.js.map +1 -1
- package/dist/db/entities/OAuthClient.js +4 -0
- package/dist/db/entities/OAuthClient.js.map +1 -1
- package/dist/models/OAuth.js +98 -1
- package/dist/models/OAuth.js.map +1 -1
- package/dist/services/mcpService.js +128 -5
- package/dist/services/mcpService.js.map +1 -1
- package/dist/utils/cacheUtils.js +133 -5
- package/dist/utils/cacheUtils.js.map +1 -1
- package/dist/utils/migration.js +1 -0
- package/dist/utils/migration.js.map +1 -1
- package/dist/utils/smartRouting.js +1 -1
- package/dist/utils/smartRouting.js.map +1 -1
- package/frontend/dist/assets/{ActivityPage-Bx5-Jrxq.js → ActivityPage-BZNq-eGE.js} +2 -2
- package/frontend/dist/assets/{ActivityPage-Bx5-Jrxq.js.map → ActivityPage-BZNq-eGE.js.map} +1 -1
- package/frontend/dist/assets/{CredentialsPage-BGbk_kBx.js → CredentialsPage-7kyDJLsX.js} +2 -2
- package/frontend/dist/assets/{CredentialsPage-BGbk_kBx.js.map → CredentialsPage-7kyDJLsX.js.map} +1 -1
- package/frontend/dist/assets/{Dashboard-gHeXLPEn.js → Dashboard-CElNx820.js} +2 -2
- package/frontend/dist/assets/{Dashboard-gHeXLPEn.js.map → Dashboard-CElNx820.js.map} +1 -1
- package/frontend/dist/assets/{EndpointCopy-BRwX7Dpv.js → EndpointCopy-8jW5Xtka.js} +2 -2
- package/frontend/dist/assets/{EndpointCopy-BRwX7Dpv.js.map → EndpointCopy-8jW5Xtka.js.map} +1 -1
- package/frontend/dist/assets/GroupsPage-dUkvX_iB.js +33 -0
- package/frontend/dist/assets/GroupsPage-dUkvX_iB.js.map +1 -0
- package/frontend/dist/assets/{LoginPage-C7-m2jmB.js → LoginPage-D23s7oM0.js} +2 -2
- package/frontend/dist/assets/{LoginPage-C7-m2jmB.js.map → LoginPage-D23s7oM0.js.map} +1 -1
- package/frontend/dist/assets/{LogsPage-B00XTokA.js → LogsPage-BuQMkmV-.js} +2 -2
- package/frontend/dist/assets/{LogsPage-B00XTokA.js.map → LogsPage-BuQMkmV-.js.map} +1 -1
- package/frontend/dist/assets/{MarketPage-CVJMdSDD.js → MarketPage-g9vEYzIq.js} +2 -2
- package/frontend/dist/assets/{MarketPage-CVJMdSDD.js.map → MarketPage-g9vEYzIq.js.map} +1 -1
- package/frontend/dist/assets/{OAuthConsentPage-znW3HtpR.js → OAuthConsentPage-BiX1lpJR.js} +2 -2
- package/frontend/dist/assets/{OAuthConsentPage-znW3HtpR.js.map → OAuthConsentPage-BiX1lpJR.js.map} +1 -1
- package/frontend/dist/assets/{PromptsPage-DGcNS3fO.js → PromptsPage-g8SRFY6s.js} +2 -2
- package/frontend/dist/assets/{PromptsPage-DGcNS3fO.js.map → PromptsPage-g8SRFY6s.js.map} +1 -1
- package/frontend/dist/assets/{ResourcesPage-CfyZoadu.js → ResourcesPage-Ddhxi9Sf.js} +2 -2
- package/frontend/dist/assets/{ResourcesPage-CfyZoadu.js.map → ResourcesPage-Ddhxi9Sf.js.map} +1 -1
- package/frontend/dist/assets/{ServersPage-BlC0RdIu.js → ServersPage-DAmKvrPV.js} +8 -8
- package/frontend/dist/assets/ServersPage-DAmKvrPV.js.map +1 -0
- package/frontend/dist/assets/SettingsPage-DZXjQZXS.js +12 -0
- package/frontend/dist/assets/SettingsPage-DZXjQZXS.js.map +1 -0
- package/frontend/dist/assets/{StatusDot-DYO56shE.js → StatusDot-CdzMqjTi.js} +2 -2
- package/frontend/dist/assets/{StatusDot-DYO56shE.js.map → StatusDot-CdzMqjTi.js.map} +1 -1
- package/frontend/dist/assets/{ToggleGroup-r8yGt_Fq.js → ToggleGroup-CJd8X_31.js} +2 -2
- package/frontend/dist/assets/{ToggleGroup-r8yGt_Fq.js.map → ToggleGroup-CJd8X_31.js.map} +1 -1
- package/frontend/dist/assets/{UsersPage-B3muXE90.js → UsersPage-CkP_x9Rt.js} +2 -2
- package/frontend/dist/assets/{UsersPage-B3muXE90.js.map → UsersPage-CkP_x9Rt.js.map} +1 -1
- package/frontend/dist/assets/index-Bu4XuAH4.js +3 -0
- package/frontend/dist/assets/index-Bu4XuAH4.js.map +1 -0
- package/frontend/dist/assets/{resourceService-CSXOSi7M.js → resourceService-w-cZ31FD.js} +2 -2
- package/frontend/dist/assets/{resourceService-CSXOSi7M.js.map → resourceService-w-cZ31FD.js.map} +1 -1
- package/frontend/dist/assets/{useCostData-BOxUFQAH.js → useCostData-C72NC0PQ.js} +2 -2
- package/frontend/dist/assets/{useCostData-BOxUFQAH.js.map → useCostData-C72NC0PQ.js.map} +1 -1
- package/frontend/dist/assets/useSettingsData-JTEMu74D.js +2 -0
- package/frontend/dist/assets/{useSettingsData-DmpLlRI6.js.map → useSettingsData-JTEMu74D.js.map} +1 -1
- package/frontend/dist/assets/{variableDetection-cmwwuSWB.js → variableDetection-DfhNyFy-.js} +2 -2
- package/frontend/dist/assets/{variableDetection-cmwwuSWB.js.map → variableDetection-DfhNyFy-.js.map} +1 -1
- package/frontend/dist/index.html +1 -1
- package/mcp_settings.json +2 -1
- package/package.json +1 -1
- package/frontend/dist/assets/GroupsPage-grCAx55k.js +0 -33
- package/frontend/dist/assets/GroupsPage-grCAx55k.js.map +0 -1
- package/frontend/dist/assets/ServersPage-BlC0RdIu.js.map +0 -1
- package/frontend/dist/assets/SettingsPage-CiVNDyr_.js +0 -12
- package/frontend/dist/assets/SettingsPage-CiVNDyr_.js.map +0 -1
- package/frontend/dist/assets/index-B-aT0HW5.js +0 -3
- package/frontend/dist/assets/index-B-aT0HW5.js.map +0 -1
- package/frontend/dist/assets/useSettingsData-DmpLlRI6.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuthClient.js","sourceRoot":"","sources":["../../../src/db/entities/OAuthClient.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACL,MAAM,EACN,MAAM,EACN,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AAEI,IAAM,WAAW,GAAjB,MAAM,WAAW;
|
|
1
|
+
{"version":3,"file":"OAuthClient.js","sourceRoot":"","sources":["../../../src/db/entities/OAuthClient.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACL,MAAM,EACN,MAAM,EACN,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AAEI,IAAM,WAAW,GAAjB,MAAM,WAAW;CA+CvB,CAAA;AA7CC;IADC,sBAAsB,CAAC,MAAM,CAAC;;uCACpB;AAGX;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;6CACzD;AAGjB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDAC1D;AAGtB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;yCAC5B;AAGb;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;;iDAChC;AAGvB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;;2CACf;AAGjB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CAC9B;AAGlB;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0CAC1C;AAGf;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDAC3C;AAG1B;IADC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAY9C;AAGF;IADC,gBAAgB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;8BACjD,IAAI;8CAAC;AAGhB;IADC,gBAAgB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;8BACjD,IAAI;8CAAC;AA9CL,WAAW;IADvB,MAAM,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;GACrB,WAAW,CA+CvB;;AAED,eAAe,WAAW,CAAC"}
|
package/dist/models/OAuth.js
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import crypto from 'crypto';
|
|
2
|
-
import { getOAuthClientDao, getOAuthTokenDao } from '../dao/index.js';
|
|
2
|
+
import { getOAuthClientDao, getOAuthTokenDao, getSystemConfigDao } from '../dao/index.js';
|
|
3
3
|
import { logger } from '../utils/logger.js';
|
|
4
4
|
// In-memory storage for authorization codes (short-lived, no persistence needed)
|
|
5
5
|
const authorizationCodes = new Map();
|
|
6
6
|
// In-memory cache for tokens (also persisted via DAO)
|
|
7
7
|
const tokensCache = new Map();
|
|
8
|
+
// In-memory registration access tokens (RFC 7591 §3.2). Expiry is enforced
|
|
9
|
+
// lazily on verification; cleanupExpired() sweeps entries that are never used
|
|
10
|
+
// again so expired tokens do not accumulate for the lifetime of the process.
|
|
11
|
+
const registrationTokens = new Map();
|
|
12
|
+
const REGISTRATION_TOKEN_TTL_MS = 30 * 24 * 60 * 60 * 1000; // 30 days
|
|
13
|
+
// Default idle TTL for dynamically-registered clients (see oauthServerDefaults).
|
|
14
|
+
const DEFAULT_DYNAMIC_CLIENT_TTL_SECONDS = 30 * 24 * 60 * 60; // 30 days
|
|
8
15
|
// Flag to track if we've initialized from DAO
|
|
9
16
|
let initialized = false;
|
|
10
17
|
/**
|
|
@@ -71,6 +78,43 @@ export const deleteOAuthClient = async (clientId) => {
|
|
|
71
78
|
const clientDao = getOAuthClientDao();
|
|
72
79
|
return clientDao.delete(clientId);
|
|
73
80
|
};
|
|
81
|
+
/**
|
|
82
|
+
* Generate a registration access token for a dynamically-registered client
|
|
83
|
+
* (RFC 7591 §3.2). The token is stored in memory and expires after `ttlMs`.
|
|
84
|
+
*/
|
|
85
|
+
export const createRegistrationToken = (clientId, ttlMs = REGISTRATION_TOKEN_TTL_MS) => {
|
|
86
|
+
const token = crypto.randomBytes(32).toString('hex');
|
|
87
|
+
registrationTokens.set(token, {
|
|
88
|
+
clientId,
|
|
89
|
+
expiresAt: new Date(Date.now() + ttlMs),
|
|
90
|
+
});
|
|
91
|
+
return token;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Verify a registration access token. Returns the client ID it was issued to,
|
|
95
|
+
* or null if the token is unknown or expired (expired tokens are removed).
|
|
96
|
+
*/
|
|
97
|
+
export const verifyRegistrationToken = (token) => {
|
|
98
|
+
const data = registrationTokens.get(token);
|
|
99
|
+
if (!data) {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
if (new Date() > data.expiresAt) {
|
|
103
|
+
registrationTokens.delete(token);
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
return data.clientId;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Delete a registration access token (e.g. when the client registration is deleted)
|
|
110
|
+
*/
|
|
111
|
+
export const deleteRegistrationToken = (token) => {
|
|
112
|
+
registrationTokens.delete(token);
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Number of registration access tokens currently held in memory (for diagnostics/tests)
|
|
116
|
+
*/
|
|
117
|
+
export const countRegistrationTokens = () => registrationTokens.size;
|
|
74
118
|
/**
|
|
75
119
|
* Generate a secure random token
|
|
76
120
|
*/
|
|
@@ -238,6 +282,59 @@ export const cleanupExpired = async () => {
|
|
|
238
282
|
catch (error) {
|
|
239
283
|
logger.error('Failed to cleanup persisted OAuth tokens:', error);
|
|
240
284
|
}
|
|
285
|
+
// Sweep expired registration access tokens that were never verified again
|
|
286
|
+
for (const [token, data] of registrationTokens.entries()) {
|
|
287
|
+
if (data.expiresAt < now) {
|
|
288
|
+
registrationTokens.delete(token);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
await cleanupIdleDynamicClients(now);
|
|
292
|
+
};
|
|
293
|
+
/**
|
|
294
|
+
* Reap dynamically-registered OAuth clients that are idle: older than the
|
|
295
|
+
* configured `oauthServer.dynamicRegistration.clientTtl` with no live token and
|
|
296
|
+
* no in-progress authorization flow. Reclaimed clients must register again.
|
|
297
|
+
* Legacy records without `clientIdIssuedAt` are never treated as expired.
|
|
298
|
+
* A `clientTtl` of 0 disables cleanup entirely.
|
|
299
|
+
*/
|
|
300
|
+
const cleanupIdleDynamicClients = async (now) => {
|
|
301
|
+
try {
|
|
302
|
+
// Client IDs that are still in use: they have a live token or an unexpired
|
|
303
|
+
// authorization code (an in-progress authorization flow).
|
|
304
|
+
const liveClientIds = new Set();
|
|
305
|
+
for (const [, authCode] of authorizationCodes.entries()) {
|
|
306
|
+
liveClientIds.add(authCode.clientId);
|
|
307
|
+
}
|
|
308
|
+
for (const [, token] of tokensCache.entries()) {
|
|
309
|
+
liveClientIds.add(token.clientId);
|
|
310
|
+
}
|
|
311
|
+
const persistedTokens = await getOAuthTokenDao().findAll();
|
|
312
|
+
for (const token of persistedTokens) {
|
|
313
|
+
liveClientIds.add(token.clientId);
|
|
314
|
+
}
|
|
315
|
+
// Read the configured idle-client TTL. 0 disables cleanup entirely.
|
|
316
|
+
const systemConfig = await getSystemConfigDao().get();
|
|
317
|
+
const clientTtl = systemConfig?.oauthServer?.dynamicRegistration?.clientTtl;
|
|
318
|
+
if (clientTtl !== undefined && clientTtl <= 0) {
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
const ttlSeconds = clientTtl ?? DEFAULT_DYNAMIC_CLIENT_TTL_SECONDS;
|
|
322
|
+
const clientDao = getOAuthClientDao();
|
|
323
|
+
const dynamicClients = await clientDao.findByOwner('dynamic-registration');
|
|
324
|
+
const cutoff = Math.floor(now.getTime() / 1000) - ttlSeconds;
|
|
325
|
+
const stale = dynamicClients.filter((client) => typeof client.clientIdIssuedAt === 'number' &&
|
|
326
|
+
client.clientIdIssuedAt < cutoff &&
|
|
327
|
+
!liveClientIds.has(client.clientId));
|
|
328
|
+
for (const client of stale) {
|
|
329
|
+
await clientDao.delete(client.clientId);
|
|
330
|
+
}
|
|
331
|
+
if (stale.length > 0) {
|
|
332
|
+
logger.log(`Reaped ${stale.length} idle dynamically-registered OAuth client(s)`);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
catch (error) {
|
|
336
|
+
logger.error('Failed to cleanup idle dynamically-registered OAuth clients:', error);
|
|
337
|
+
}
|
|
241
338
|
};
|
|
242
339
|
// Run cleanup every 5 minutes in production
|
|
243
340
|
let cleanupIntervalId = null;
|
package/dist/models/OAuth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuth.js","sourceRoot":"","sources":["../../src/models/OAuth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OAuth.js","sourceRoot":"","sources":["../../src/models/OAuth.ts"],"names":[],"mappings":"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"}
|
|
@@ -525,6 +525,82 @@ const normalizeResourceForCache = (resource) => {
|
|
|
525
525
|
};
|
|
526
526
|
// Store all server information
|
|
527
527
|
let serverInfos = [];
|
|
528
|
+
/**
|
|
529
|
+
* How many upstream connections an initialization pass may open at once.
|
|
530
|
+
* Unset, empty or `0` keeps the previous behaviour of connecting every enabled
|
|
531
|
+
* server in parallel. Read per pass so a restart is enough to change it.
|
|
532
|
+
*/
|
|
533
|
+
const resolveStartupConcurrency = () => {
|
|
534
|
+
const raw = process.env.STARTUP_CONNECT_CONCURRENCY?.trim();
|
|
535
|
+
if (!raw) {
|
|
536
|
+
return 0;
|
|
537
|
+
}
|
|
538
|
+
const parsed = Number(raw);
|
|
539
|
+
if (!Number.isInteger(parsed) || parsed < 0) {
|
|
540
|
+
logger.warn(`Ignoring invalid STARTUP_CONNECT_CONCURRENCY="${raw}"; expected a non-negative integer. Connecting without a limit.`);
|
|
541
|
+
return 0;
|
|
542
|
+
}
|
|
543
|
+
return parsed;
|
|
544
|
+
};
|
|
545
|
+
/**
|
|
546
|
+
* Rejection reason for a queued connection that was dropped before it started,
|
|
547
|
+
* because the server it belonged to was disabled, removed or superseded while
|
|
548
|
+
* it waited for a slot. Not a connection failure: nothing was spawned and there
|
|
549
|
+
* is nothing wrong with the server, so callers report it as a cancellation
|
|
550
|
+
* rather than marking the server as failed.
|
|
551
|
+
*/
|
|
552
|
+
class QueuedConnectCancelledError extends Error {
|
|
553
|
+
constructor() {
|
|
554
|
+
super('Queued connection was cancelled before it started');
|
|
555
|
+
this.name = 'QueuedConnectCancelledError';
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
/**
|
|
559
|
+
* Defers the *invocation* of a connect rather than wrapping its promise, so a
|
|
560
|
+
* server waiting for a slot has not started its request yet and its timeout
|
|
561
|
+
* budget is not spent queueing. A limit of 0 runs everything immediately.
|
|
562
|
+
*
|
|
563
|
+
* Because work waits here, what the operator wants can change while it waits -
|
|
564
|
+
* a queued server may be disabled, removed or replaced by a later pass. The
|
|
565
|
+
* `isStillWanted` guard is therefore evaluated when the slot is granted, not
|
|
566
|
+
* when the work is queued; a queued entry that is no longer wanted is cancelled
|
|
567
|
+
* and its slot handed straight to the next in line.
|
|
568
|
+
*/
|
|
569
|
+
const createConnectGate = (limit) => {
|
|
570
|
+
if (limit <= 0) {
|
|
571
|
+
// Nothing queues, so nothing can go stale while it waits.
|
|
572
|
+
return { run: (start) => start() };
|
|
573
|
+
}
|
|
574
|
+
let active = 0;
|
|
575
|
+
const waiting = [];
|
|
576
|
+
const startNextWaiting = () => {
|
|
577
|
+
waiting.shift()?.();
|
|
578
|
+
};
|
|
579
|
+
const release = () => {
|
|
580
|
+
active -= 1;
|
|
581
|
+
startNextWaiting();
|
|
582
|
+
};
|
|
583
|
+
return {
|
|
584
|
+
run: (start, isStillWanted) => new Promise((resolve, reject) => {
|
|
585
|
+
const begin = () => {
|
|
586
|
+
if (isStillWanted && !isStillWanted()) {
|
|
587
|
+
// The slot was never taken, so pass it on rather than release it.
|
|
588
|
+
reject(new QueuedConnectCancelledError());
|
|
589
|
+
startNextWaiting();
|
|
590
|
+
return;
|
|
591
|
+
}
|
|
592
|
+
active += 1;
|
|
593
|
+
start().then(resolve, reject).finally(release);
|
|
594
|
+
};
|
|
595
|
+
if (active < limit) {
|
|
596
|
+
begin();
|
|
597
|
+
}
|
|
598
|
+
else {
|
|
599
|
+
waiting.push(begin);
|
|
600
|
+
}
|
|
601
|
+
}),
|
|
602
|
+
};
|
|
603
|
+
};
|
|
528
604
|
// Bumped by every initializeClientsFromSettings pass. Connections are started
|
|
529
605
|
// fire-and-forget and settle long after the pass that started them returned, so
|
|
530
606
|
// a callback needs to know whether a later pass has run before it writes its
|
|
@@ -1206,6 +1282,15 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
|
|
|
1206
1282
|
const existingServerInfos = serverInfos;
|
|
1207
1283
|
const nextServerInfos = [];
|
|
1208
1284
|
const generation = ++initGeneration;
|
|
1285
|
+
const concurrency = resolveStartupConcurrency();
|
|
1286
|
+
const connectGate = createConnectGate(concurrency);
|
|
1287
|
+
// Set once this pass swaps its entries into `serverInfos`. Until then a
|
|
1288
|
+
// queued server cannot have been retired by anyone, because the entry that
|
|
1289
|
+
// `closeServer`/`toggleServerStatus` would act on is not published yet.
|
|
1290
|
+
let entriesPublished = false;
|
|
1291
|
+
if (isInit && concurrency > 0) {
|
|
1292
|
+
logger.log(`Connecting upstream servers with a concurrency limit of ${concurrency}`);
|
|
1293
|
+
}
|
|
1209
1294
|
try {
|
|
1210
1295
|
for (const conf of allServers) {
|
|
1211
1296
|
const { name } = conf;
|
|
@@ -1500,7 +1585,33 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
|
|
|
1500
1585
|
const current = serverInfos.find((si) => si.name === name);
|
|
1501
1586
|
return current && current.client === client ? current : undefined;
|
|
1502
1587
|
};
|
|
1503
|
-
|
|
1588
|
+
// A queued connection has not spawned anything yet, so cancelling it is
|
|
1589
|
+
// free - and necessary: `closeServerRuntime` clears the client/transport
|
|
1590
|
+
// references that would later own the child process, so connecting after
|
|
1591
|
+
// a disable strands a process nothing can clean up.
|
|
1592
|
+
const connectStillWanted = () => {
|
|
1593
|
+
// Until this pass publishes its entries, nothing else can have retired
|
|
1594
|
+
// this server: the entry a disable would act on does not exist yet.
|
|
1595
|
+
if (!entriesPublished)
|
|
1596
|
+
return true;
|
|
1597
|
+
const current = serverInfos.find((si) => si.name === name);
|
|
1598
|
+
// Gone from the configuration while it waited.
|
|
1599
|
+
if (!current)
|
|
1600
|
+
return false;
|
|
1601
|
+
// Client identity, not the generation, decides whether anyone is still
|
|
1602
|
+
// waiting on this connect - the same rule liveServerInfo() applies to
|
|
1603
|
+
// the result. A later pass that *preserved* this server spreads our
|
|
1604
|
+
// client into its entry and relies on this very connect to complete it
|
|
1605
|
+
// (a scoped reload preserves every other server whatever its status,
|
|
1606
|
+
// see #921), so cancelling on generation alone would strand it on
|
|
1607
|
+
// 'connecting' for good - the failure #1150 was about. A later pass
|
|
1608
|
+
// that rebuilt the server carries a client of its own, and disabling
|
|
1609
|
+
// closes the runtime before replacing the entry, so in both of those
|
|
1610
|
+
// cases the published entry no longer carries our client.
|
|
1611
|
+
return current.client === client && current.enabled !== false;
|
|
1612
|
+
};
|
|
1613
|
+
connectGate
|
|
1614
|
+
.run(() => connectClientWithDiagnostics(client, transport, initRequestOptions || requestOptions), connectStillWanted)
|
|
1504
1615
|
.then(() => {
|
|
1505
1616
|
const info = liveServerInfo();
|
|
1506
1617
|
if (!info) {
|
|
@@ -1593,6 +1704,11 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
|
|
|
1593
1704
|
}
|
|
1594
1705
|
})
|
|
1595
1706
|
.catch(async (error) => {
|
|
1707
|
+
if (error instanceof QueuedConnectCancelledError) {
|
|
1708
|
+
logger.log(`Cancelled queued connection for server: ${name} (disabled, removed or superseded while queued)`);
|
|
1709
|
+
closeServerRuntime(serverInfo);
|
|
1710
|
+
return;
|
|
1711
|
+
}
|
|
1596
1712
|
const info = liveServerInfo();
|
|
1597
1713
|
if (!info) {
|
|
1598
1714
|
logger.log(`Discarding superseded connection failure for server: ${name}`);
|
|
@@ -1632,10 +1748,11 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
|
|
|
1632
1748
|
throw error;
|
|
1633
1749
|
}
|
|
1634
1750
|
serverInfos = nextServerInfos;
|
|
1751
|
+
entriesPublished = true;
|
|
1635
1752
|
// Populate the tool cache for on-demand stdio servers so their tools are
|
|
1636
1753
|
// visible to agents, then put them back to sleep. Running here (rather than
|
|
1637
1754
|
// only at startup) also covers servers added/enabled/reloaded after startup.
|
|
1638
|
-
const primePromise = primeOnDemandServers();
|
|
1755
|
+
const primePromise = primeOnDemandServers(connectGate);
|
|
1639
1756
|
// At full startup (no serverName) keep prime fire-and-forget so a slow or
|
|
1640
1757
|
// broken on-demand server does not block init. For a targeted reload/edit
|
|
1641
1758
|
// (serverName set), await it so the caller - and the dashboard refresh that
|
|
@@ -1877,7 +1994,9 @@ export const reinstallServer = async (serverName) => {
|
|
|
1877
1994
|
try {
|
|
1878
1995
|
// For npx, clear cache directory synchronously before reconnect.
|
|
1879
1996
|
// For uvx, this is a no-op — refresh is handled via --refresh flag injection.
|
|
1880
|
-
|
|
1997
|
+
// Pass the server's own arguments so the npx clear can be scoped to this
|
|
1998
|
+
// server's package instead of discarding every npx server's install.
|
|
1999
|
+
await clearRunnerCache(command, serverConfig.args || []);
|
|
1881
2000
|
// Close and reconnect (will pick up pendingReinstalls flag for uvx)
|
|
1882
2001
|
await reconnectServer(serverName);
|
|
1883
2002
|
logger.log(`Successfully initiated reinstall for server: ${serverName}`);
|
|
@@ -2261,7 +2380,7 @@ const isStdioServer = (conf) => !!conf && (conf.type === 'stdio' || (!conf.type
|
|
|
2261
2380
|
* does not block init. Each server is isolated so one failure does not affect
|
|
2262
2381
|
* the others. See #1029 / #1032.
|
|
2263
2382
|
*/
|
|
2264
|
-
const primeOnDemandServers = () => {
|
|
2383
|
+
const primeOnDemandServers = (gate) => {
|
|
2265
2384
|
const targets = serverInfos.filter((si) => si.config?.startOnDemand === true &&
|
|
2266
2385
|
!hasCredentialTemplate(si.config) &&
|
|
2267
2386
|
isStdioServer(si.config) &&
|
|
@@ -2270,9 +2389,13 @@ const primeOnDemandServers = () => {
|
|
|
2270
2389
|
if (targets.length === 0)
|
|
2271
2390
|
return Promise.resolve();
|
|
2272
2391
|
logger.log(`Priming ${targets.length} on-demand server(s) for tool discovery…`);
|
|
2392
|
+
// Priming happens right after init, so it competes for the same machine.
|
|
2393
|
+
// Share the pass's concurrency limit rather than waking every sleeping server
|
|
2394
|
+
// at once and undoing the pacing above.
|
|
2395
|
+
const run = gate ? gate.run : (start) => start();
|
|
2273
2396
|
return Promise.allSettled(targets.map(async (si) => {
|
|
2274
2397
|
try {
|
|
2275
|
-
await ensureServerReady(si);
|
|
2398
|
+
await run(() => ensureServerReady(si));
|
|
2276
2399
|
// Sleep the child unless a tool call is using it; keep the cached tool list.
|
|
2277
2400
|
shutdownOnDemandServer(si);
|
|
2278
2401
|
logger.log('On-demand server tool cache primed');
|