@samanhappy/mcphub 1.1.14 → 1.2.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/README.fr.md +2 -1
- package/README.md +2 -1
- package/README.zh.md +2 -1
- package/dist/betterAuth.js +3 -3
- package/dist/betterAuth.js.map +1 -1
- package/dist/cli/commands/keys.js +22 -3
- package/dist/cli/commands/keys.js.map +1 -1
- package/dist/clients/mcpSdkClient.js +2667 -1448
- package/dist/clients/mcpSdkClient.js.map +4 -4
- package/dist/clients/openapi.js +3 -2
- package/dist/clients/openapi.js.map +1 -1
- package/dist/controllers/bearerKeyController.js +49 -3
- package/dist/controllers/bearerKeyController.js.map +1 -1
- package/dist/controllers/credentialBindingController.js +1 -1
- package/dist/controllers/credentialBindingController.js.map +1 -1
- package/dist/controllers/groupController.js +12 -5
- package/dist/controllers/groupController.js.map +1 -1
- package/dist/controllers/healthController.js +23 -1
- package/dist/controllers/healthController.js.map +1 -1
- package/dist/controllers/metricsController.js +9 -1
- package/dist/controllers/metricsController.js.map +1 -1
- package/dist/controllers/oauthDynamicRegistrationController.js +5 -5
- package/dist/controllers/oauthDynamicRegistrationController.js.map +1 -1
- package/dist/controllers/oauthRelayController.js +65 -0
- package/dist/controllers/oauthRelayController.js.map +1 -0
- package/dist/controllers/personalOAuthController.js +10 -1
- package/dist/controllers/personalOAuthController.js.map +1 -1
- package/dist/controllers/serverController.js +23 -14
- package/dist/controllers/serverController.js.map +1 -1
- package/dist/controllers/userController.js +11 -1
- package/dist/controllers/userController.js.map +1 -1
- package/dist/dao/BearerKeyDao.js +10 -5
- package/dist/dao/BearerKeyDao.js.map +1 -1
- package/dist/dao/BearerKeyDaoDbImpl.js +16 -5
- package/dist/dao/BearerKeyDaoDbImpl.js.map +1 -1
- package/dist/dao/GroupDaoDbImpl.js +11 -0
- package/dist/dao/GroupDaoDbImpl.js.map +1 -1
- package/dist/dao/ServerDao.js +5 -1
- package/dist/dao/ServerDao.js.map +1 -1
- package/dist/dao/ServerDaoDbImpl.js +3 -0
- package/dist/dao/ServerDaoDbImpl.js.map +1 -1
- package/dist/dao/UserDaoDbImpl.js +4 -0
- package/dist/dao/UserDaoDbImpl.js.map +1 -1
- package/dist/db/connection.js +6 -2
- package/dist/db/connection.js.map +1 -1
- package/dist/db/entities/BearerKey.js +8 -0
- package/dist/db/entities/BearerKey.js.map +1 -1
- package/dist/db/entities/Group.js +4 -0
- package/dist/db/entities/Group.js.map +1 -1
- package/dist/db/entities/OAuthState.js +43 -0
- package/dist/db/entities/OAuthState.js.map +1 -0
- package/dist/db/entities/Server.js +4 -0
- package/dist/db/entities/Server.js.map +1 -1
- package/dist/db/entities/User.js +4 -0
- package/dist/db/entities/User.js.map +1 -1
- package/dist/db/entities/index.js +3 -1
- package/dist/db/entities/index.js.map +1 -1
- package/dist/db/replicaSchema.js +40 -0
- package/dist/db/replicaSchema.js.map +1 -0
- package/dist/db/repositories/ServerRepository.js +1 -0
- package/dist/db/repositories/ServerRepository.js.map +1 -1
- package/dist/db/setup.js +25 -0
- package/dist/db/setup.js.map +1 -0
- package/dist/db/transactionContext.js +21 -0
- package/dist/db/transactionContext.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/middlewares/auth.js +7 -1
- package/dist/middlewares/auth.js.map +1 -1
- package/dist/middlewares/replicaConfig.js +134 -0
- package/dist/middlewares/replicaConfig.js.map +1 -0
- package/dist/middlewares/userContext.js +1 -1
- package/dist/middlewares/userContext.js.map +1 -1
- package/dist/models/OAuth.js +57 -7
- package/dist/models/OAuth.js.map +1 -1
- package/dist/routes/index.js +16 -1
- package/dist/routes/index.js.map +1 -1
- package/dist/server.js +13 -4
- package/dist/server.js.map +1 -1
- package/dist/services/authorizationService.js.map +1 -1
- package/dist/services/capabilitySnapshotService.js +2 -1
- package/dist/services/capabilitySnapshotService.js.map +1 -1
- package/dist/services/credentialBindingService.js +13 -1
- package/dist/services/credentialBindingService.js.map +1 -1
- package/dist/services/dataService.js +4 -2
- package/dist/services/dataService.js.map +1 -1
- package/dist/services/groupService.js +15 -7
- package/dist/services/groupService.js.map +1 -1
- package/dist/services/mcpEventBus.js +6 -0
- package/dist/services/mcpEventBus.js.map +1 -0
- package/dist/services/mcpOAuthProvider.js +91 -5
- package/dist/services/mcpOAuthProvider.js.map +1 -1
- package/dist/services/mcpService.js +136 -9
- package/dist/services/mcpService.js.map +1 -1
- package/dist/services/metricsService.js +4 -0
- package/dist/services/metricsService.js.map +1 -1
- package/dist/services/oauthClientRegistration.js +21 -1
- package/dist/services/oauthClientRegistration.js.map +1 -1
- package/dist/services/oauthServerService.js +5 -6
- package/dist/services/oauthServerService.js.map +1 -1
- package/dist/services/oauthSettingsStore.js +21 -0
- package/dist/services/oauthSettingsStore.js.map +1 -1
- package/dist/services/personalOAuthService.js +42 -2
- package/dist/services/personalOAuthService.js.map +1 -1
- package/dist/services/replicaLock.js +30 -0
- package/dist/services/replicaLock.js.map +1 -0
- package/dist/services/replicaService.js +111 -0
- package/dist/services/replicaService.js.map +1 -0
- package/dist/services/requestContextService.js +15 -0
- package/dist/services/requestContextService.js.map +1 -1
- package/dist/services/serverConfigEnvironment.js +2 -1
- package/dist/services/serverConfigEnvironment.js.map +1 -1
- package/dist/services/sseService.js +61 -8
- package/dist/services/sseService.js.map +1 -1
- package/dist/services/templateService.js +11 -5
- package/dist/services/templateService.js.map +1 -1
- package/dist/services/userService.js +5 -1
- package/dist/services/userService.js.map +1 -1
- package/dist/utils/groupAccess.js +6 -4
- package/dist/utils/groupAccess.js.map +1 -1
- package/dist/utils/groupKeyScope.js +11 -5
- package/dist/utils/groupKeyScope.js.map +1 -1
- package/dist/utils/logger.js +7 -0
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/migration.js +8 -0
- package/dist/utils/migration.js.map +1 -1
- package/dist/utils/oauthBearer.js +1 -0
- package/dist/utils/oauthBearer.js.map +1 -1
- package/dist/utils/oauthServerMetadata.js +21 -0
- package/dist/utils/oauthServerMetadata.js.map +1 -1
- package/dist/utils/replicaLogContext.js +3 -0
- package/dist/utils/replicaLogContext.js.map +1 -0
- package/dist/utils/replicaMode.js +17 -0
- package/dist/utils/replicaMode.js.map +1 -0
- package/dist/utils/serverConfigPersistence.js +20 -1
- package/dist/utils/serverConfigPersistence.js.map +1 -1
- package/dist/utils/serverConfigValidation.js +1 -0
- package/dist/utils/serverConfigValidation.js.map +1 -1
- package/dist/utils/settingsSync.js +4 -0
- package/dist/utils/settingsSync.js.map +1 -1
- package/frontend/dist/assets/{ActivityPage-C8Zj4FeE.js → ActivityPage-CSXEpl6y.js} +2 -2
- package/frontend/dist/assets/{ActivityPage-C8Zj4FeE.js.map → ActivityPage-CSXEpl6y.js.map} +1 -1
- package/frontend/dist/assets/{ConfirmDialog-BYdfb115.js → ConfirmDialog-BJpzQmMw.js} +2 -2
- package/frontend/dist/assets/{ConfirmDialog-BYdfb115.js.map → ConfirmDialog-BJpzQmMw.js.map} +1 -1
- package/frontend/dist/assets/CredentialsPage-CPxOHQUZ.js +2 -0
- package/frontend/dist/assets/CredentialsPage-CPxOHQUZ.js.map +1 -0
- package/frontend/dist/assets/{Dashboard-CCiZcGi4.js → Dashboard-Da-YT_l_.js} +2 -2
- package/frontend/dist/assets/{Dashboard-CCiZcGi4.js.map → Dashboard-Da-YT_l_.js.map} +1 -1
- package/frontend/dist/assets/{DeleteDialog-BaCsEkJA.js → DeleteDialog-BoMYLx3J.js} +2 -2
- package/frontend/dist/assets/{DeleteDialog-BaCsEkJA.js.map → DeleteDialog-BoMYLx3J.js.map} +1 -1
- package/frontend/dist/assets/{EndpointCopy-CmKx4RVL.js → EndpointCopy-CZOjiFAH.js} +2 -2
- package/frontend/dist/assets/{EndpointCopy-CmKx4RVL.js.map → EndpointCopy-CZOjiFAH.js.map} +1 -1
- package/frontend/dist/assets/GroupsPage-CSA5G9_H.js +33 -0
- package/frontend/dist/assets/GroupsPage-CSA5G9_H.js.map +1 -0
- package/frontend/dist/assets/{LoginPage-Hn1uu0vB.js → LoginPage-7RswUPtG.js} +2 -2
- package/frontend/dist/assets/{LoginPage-Hn1uu0vB.js.map → LoginPage-7RswUPtG.js.map} +1 -1
- package/frontend/dist/assets/{LogsPage-JMCtTjCv.js → LogsPage-Dbef_68F.js} +2 -2
- package/frontend/dist/assets/{LogsPage-JMCtTjCv.js.map → LogsPage-Dbef_68F.js.map} +1 -1
- package/frontend/dist/assets/MarketPage-rSBdHZxo.js +2 -0
- package/frontend/dist/assets/{MarketPage-Bvi1KESo.js.map → MarketPage-rSBdHZxo.js.map} +1 -1
- package/frontend/dist/assets/{OAuthConsentPage-DofQEZAU.js → OAuthConsentPage-BH9O7bk3.js} +2 -2
- package/frontend/dist/assets/{OAuthConsentPage-DofQEZAU.js.map → OAuthConsentPage-BH9O7bk3.js.map} +1 -1
- package/frontend/dist/assets/{Pagination-D99WHhBx.js → Pagination-S-7lzy59.js} +2 -2
- package/frontend/dist/assets/{Pagination-D99WHhBx.js.map → Pagination-S-7lzy59.js.map} +1 -1
- package/frontend/dist/assets/{PromptsPage-B-8vczAR.js → PromptsPage-B558MhVU.js} +2 -2
- package/frontend/dist/assets/{PromptsPage-B-8vczAR.js.map → PromptsPage-B558MhVU.js.map} +1 -1
- package/frontend/dist/assets/{ResourcesPage-DLAIatoG.js → ResourcesPage-DQpy8B9L.js} +2 -2
- package/frontend/dist/assets/{ResourcesPage-DLAIatoG.js.map → ResourcesPage-DQpy8B9L.js.map} +1 -1
- package/frontend/dist/assets/{ServersPage-wVLsTL_f.js → ServersPage-DBcC8pG2.js} +5 -5
- package/frontend/dist/assets/ServersPage-DBcC8pG2.js.map +1 -0
- package/frontend/dist/assets/SettingsPage-BcpeHFR3.js +14 -0
- package/frontend/dist/assets/SettingsPage-BcpeHFR3.js.map +1 -0
- package/frontend/dist/assets/{StatusDot-00-sTQKv.js → StatusDot-CLxRrJ5l.js} +2 -2
- package/frontend/dist/assets/{StatusDot-00-sTQKv.js.map → StatusDot-CLxRrJ5l.js.map} +1 -1
- package/frontend/dist/assets/{ToggleGroup-CtWBng3r.js → ToggleGroup-DuWJZU41.js} +2 -2
- package/frontend/dist/assets/{ToggleGroup-CtWBng3r.js.map → ToggleGroup-DuWJZU41.js.map} +1 -1
- package/frontend/dist/assets/UserGroupSelection-CN0weGXJ.js +2 -0
- package/frontend/dist/assets/UserGroupSelection-CN0weGXJ.js.map +1 -0
- package/frontend/dist/assets/UsersPage-B158Bofs.js +2 -0
- package/frontend/dist/assets/UsersPage-B158Bofs.js.map +1 -0
- package/frontend/dist/assets/{clipboard-2RRFM-q8.js → clipboard-BLr_gbf8.js} +2 -2
- package/frontend/dist/assets/{clipboard-2RRFM-q8.js.map → clipboard-BLr_gbf8.js.map} +1 -1
- package/frontend/dist/assets/{costRevision-Ntl7VtWo.js → costRevision-Dzec2k_b.js} +2 -2
- package/frontend/dist/assets/{costRevision-Ntl7VtWo.js.map → costRevision-Dzec2k_b.js.map} +1 -1
- package/frontend/dist/assets/framework-vendor-D0S_ys6r.js +61 -0
- package/frontend/dist/assets/framework-vendor-D0S_ys6r.js.map +1 -0
- package/frontend/dist/assets/{i18n-vendor-DVmjrzgW.js → i18n-vendor-COTriSc6.js} +2 -2
- package/frontend/dist/assets/{i18n-vendor-DVmjrzgW.js.map → i18n-vendor-COTriSc6.js.map} +1 -1
- package/frontend/dist/assets/{icons-vendor-CyAS6fj0.js → icons-vendor-DZjjGrOu.js} +2 -2
- package/frontend/dist/assets/{icons-vendor-CyAS6fj0.js.map → icons-vendor-DZjjGrOu.js.map} +1 -1
- package/frontend/dist/assets/index-CGRjM_NC.js +3 -0
- package/frontend/dist/assets/{index-CkSmxNPW.js.map → index-CGRjM_NC.js.map} +1 -1
- package/frontend/dist/assets/{resourceService-BB4UM6IQ.js → resourceService-BNH7uNar.js} +2 -2
- package/frontend/dist/assets/{resourceService-BB4UM6IQ.js.map → resourceService-BNH7uNar.js.map} +1 -1
- package/frontend/dist/assets/{useCostData-C3XnQyUj.js → useCostData-B2d2eLCD.js} +2 -2
- package/frontend/dist/assets/{useCostData-C3XnQyUj.js.map → useCostData-B2d2eLCD.js.map} +1 -1
- package/frontend/dist/assets/variableDetection-DRdE941j.js +80 -0
- package/frontend/dist/assets/variableDetection-DRdE941j.js.map +1 -0
- package/frontend/dist/index.html +4 -4
- package/package.json +4 -2
- package/frontend/dist/assets/CredentialsPage-BnzqPYjg.js +0 -2
- package/frontend/dist/assets/CredentialsPage-BnzqPYjg.js.map +0 -1
- package/frontend/dist/assets/GroupsPage-DHgQeVHy.js +0 -33
- package/frontend/dist/assets/GroupsPage-DHgQeVHy.js.map +0 -1
- package/frontend/dist/assets/MarketPage-Bvi1KESo.js +0 -2
- package/frontend/dist/assets/ServersPage-wVLsTL_f.js.map +0 -1
- package/frontend/dist/assets/SettingsPage-DkfXDE5_.js +0 -14
- package/frontend/dist/assets/SettingsPage-DkfXDE5_.js.map +0 -1
- package/frontend/dist/assets/UsersPage-BtdFWcVD.js +0 -2
- package/frontend/dist/assets/UsersPage-BtdFWcVD.js.map +0 -1
- package/frontend/dist/assets/framework-vendor-CQFm9vKd.js +0 -61
- package/frontend/dist/assets/framework-vendor-CQFm9vKd.js.map +0 -1
- package/frontend/dist/assets/index-CkSmxNPW.js +0 -3
- package/frontend/dist/assets/variableDetection-BUXwrSop.js +0 -18
- package/frontend/dist/assets/variableDetection-BUXwrSop.js.map +0 -1
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { oauthServerMetadataSchema } from '../utils/oauthServerMetadata.js';
|
|
2
|
+
import { isReplicaMode } from '../utils/replicaMode.js';
|
|
3
|
+
import { withReplicaLock } from './replicaLock.js';
|
|
4
|
+
import { expandServerConfig } from './serverConfigEnvironment.js';
|
|
2
5
|
import * as sharedOAuthSettings from './oauthSettingsStore.js';
|
|
3
6
|
import { personalOAuthContexts, hasPersonalOAuth, personalAuthorizationRequired, } from './personalOAuthService.js';
|
|
4
7
|
/**
|
|
@@ -14,6 +17,7 @@ import { personalOAuthContexts, hasPersonalOAuth, personalAuthorizationRequired,
|
|
|
14
17
|
* - Authorization flow handling
|
|
15
18
|
*/
|
|
16
19
|
import { randomBytes } from 'node:crypto';
|
|
20
|
+
import { auth } from '../clients/mcpSdkClient.js';
|
|
17
21
|
import { getSystemConfigDao } from '../dao/index.js';
|
|
18
22
|
import { DEFAULT_OAUTH_REDIRECT_URI, resolvePreferredRedirectUris, } from '../utils/oauthRedirectUri.js';
|
|
19
23
|
import { resolveInstallBaseUrl } from '../utils/installBaseUrl.js';
|
|
@@ -220,7 +224,7 @@ export class MCPHubOAuthProvider {
|
|
|
220
224
|
/**
|
|
221
225
|
* Get stored OAuth tokens
|
|
222
226
|
*/
|
|
223
|
-
|
|
227
|
+
storedTokens() {
|
|
224
228
|
// Use cached config only (tokens are updated via saveTokens which updates cache)
|
|
225
229
|
const serverConfig = this.serverConfig;
|
|
226
230
|
if (!serverConfig?.oauth?.accessToken) {
|
|
@@ -230,21 +234,101 @@ export class MCPHubOAuthProvider {
|
|
|
230
234
|
access_token: serverConfig.oauth.accessToken,
|
|
231
235
|
token_type: 'Bearer',
|
|
232
236
|
refresh_token: serverConfig.oauth.refreshToken,
|
|
233
|
-
|
|
234
|
-
|
|
237
|
+
...(serverConfig.oauth.accessTokenExpiresAt !== undefined
|
|
238
|
+
? {
|
|
239
|
+
expires_in: Math.max(0, Math.floor((serverConfig.oauth.accessTokenExpiresAt - Date.now()) / 1000)),
|
|
240
|
+
}
|
|
241
|
+
: {}),
|
|
235
242
|
};
|
|
236
243
|
}
|
|
244
|
+
async tokens() {
|
|
245
|
+
if (isReplicaMode()) {
|
|
246
|
+
const latest = await this.settings.loadServerConfig(this.serverName);
|
|
247
|
+
if (!latest)
|
|
248
|
+
return undefined;
|
|
249
|
+
this.serverConfig = await expandServerConfig(latest);
|
|
250
|
+
}
|
|
251
|
+
const oauth = this.serverConfig.oauth;
|
|
252
|
+
if (!oauth?.accessToken ||
|
|
253
|
+
oauth.accessTokenExpiresAt === undefined ||
|
|
254
|
+
oauth.accessTokenExpiresAt > Date.now())
|
|
255
|
+
return this.storedTokens();
|
|
256
|
+
if (!oauth.refreshToken) {
|
|
257
|
+
throw new Error('OAuth access token expired; reconnect');
|
|
258
|
+
}
|
|
259
|
+
if (!this.renewal) {
|
|
260
|
+
const renew = async () => {
|
|
261
|
+
if (!this.serverConfig.url)
|
|
262
|
+
throw new Error('Missing OAuth resource URL');
|
|
263
|
+
// SDK issuer annotation re-saves tokens; do not turn remaining lifetime into a new expiry.
|
|
264
|
+
const provider = new Proxy(this, {
|
|
265
|
+
get: (target, property) => {
|
|
266
|
+
if (property === 'tokens')
|
|
267
|
+
return () => {
|
|
268
|
+
const stored = this.storedTokens();
|
|
269
|
+
if (!stored)
|
|
270
|
+
return undefined;
|
|
271
|
+
const { expires_in: _expiry, ...tokens } = stored;
|
|
272
|
+
return tokens;
|
|
273
|
+
};
|
|
274
|
+
const value = Reflect.get(target, property);
|
|
275
|
+
return typeof value === 'function' ? value.bind(target) : value;
|
|
276
|
+
},
|
|
277
|
+
});
|
|
278
|
+
const fetchFn = await createOAuthFetch(this.serverConfig);
|
|
279
|
+
const result = await auth(provider, {
|
|
280
|
+
serverUrl: this.serverConfig.url,
|
|
281
|
+
fetchFn: this.personal?.wrapFetch(fetchFn) ?? fetchFn,
|
|
282
|
+
});
|
|
283
|
+
if (result !== 'AUTHORIZED')
|
|
284
|
+
throw new Error('OAuth authorization required; reconnect');
|
|
285
|
+
};
|
|
286
|
+
this.renewal = withReplicaLock(JSON.stringify(['oauth', this.serverName, this.personal?.username || 'shared']), async () => {
|
|
287
|
+
if (isReplicaMode() && !this.personal) {
|
|
288
|
+
const latest = await this.settings.loadServerConfig(this.serverName);
|
|
289
|
+
if (!latest)
|
|
290
|
+
throw new Error('Server no longer exists');
|
|
291
|
+
this.serverConfig = await expandServerConfig(latest);
|
|
292
|
+
const expiry = this.serverConfig.oauth?.accessTokenExpiresAt;
|
|
293
|
+
if (expiry === undefined || expiry > Date.now())
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
await (this.personal ? this.personal.renewTokens(renew) : renew());
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
const renewal = this.renewal;
|
|
300
|
+
try {
|
|
301
|
+
await renewal;
|
|
302
|
+
if (this.personal)
|
|
303
|
+
this.serverConfig = this.personal.config;
|
|
304
|
+
return this.storedTokens();
|
|
305
|
+
}
|
|
306
|
+
finally {
|
|
307
|
+
if (this.renewal === renewal)
|
|
308
|
+
this.renewal = undefined;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
237
311
|
/**
|
|
238
312
|
* Save OAuth tokens
|
|
239
313
|
* Called by SDK after successful token exchange or refresh
|
|
240
314
|
*/
|
|
241
315
|
async saveTokens(tokens) {
|
|
316
|
+
if (tokens.expires_in !== undefined &&
|
|
317
|
+
(!Number.isFinite(tokens.expires_in) || tokens.expires_in < 0))
|
|
318
|
+
throw new Error('Invalid OAuth token expiry');
|
|
242
319
|
const currentOAuth = this.serverConfig.oauth;
|
|
243
320
|
const accessTokenChanged = currentOAuth?.accessToken !== tokens.access_token;
|
|
321
|
+
const accessTokenExpiresAt = tokens.expires_in !== undefined
|
|
322
|
+
? Date.now() + tokens.expires_in * 1000
|
|
323
|
+
: accessTokenChanged
|
|
324
|
+
? null
|
|
325
|
+
: undefined;
|
|
326
|
+
const expiryChanged = accessTokenExpiresAt !== undefined &&
|
|
327
|
+
currentOAuth?.accessTokenExpiresAt !== (accessTokenExpiresAt ?? undefined);
|
|
244
328
|
const refreshTokenProvided = tokens.refresh_token !== undefined;
|
|
245
329
|
const refreshTokenChanged = refreshTokenProvided && currentOAuth?.refreshToken !== tokens.refresh_token;
|
|
246
330
|
const hadPending = Boolean(currentOAuth?.pendingAuthorization);
|
|
247
|
-
if (!accessTokenChanged && !refreshTokenChanged && !hadPending) {
|
|
331
|
+
if (!accessTokenChanged && !refreshTokenChanged && !expiryChanged && !hadPending) {
|
|
248
332
|
return;
|
|
249
333
|
}
|
|
250
334
|
logger.log('Saving OAuth tokens', {
|
|
@@ -254,6 +338,7 @@ export class MCPHubOAuthProvider {
|
|
|
254
338
|
});
|
|
255
339
|
const updatedConfig = await this.settings.persistTokens(this.serverName, {
|
|
256
340
|
accessToken: tokens.access_token,
|
|
341
|
+
accessTokenExpiresAt,
|
|
257
342
|
refreshToken: refreshTokenProvided ? (tokens.refresh_token ?? null) : undefined,
|
|
258
343
|
clearPendingAuthorization: hadPending,
|
|
259
344
|
});
|
|
@@ -552,7 +637,7 @@ const hasAuthorizationHeader = (headers) => {
|
|
|
552
637
|
* @param serverConfig - Server configuration
|
|
553
638
|
* @returns OAuthClientProvider instance or undefined if OAuth not configured
|
|
554
639
|
*/
|
|
555
|
-
|
|
640
|
+
const createOAuthProviderUnlocked = async (serverName, serverConfig) => {
|
|
556
641
|
const oauth = serverConfig.oauth;
|
|
557
642
|
if (hasPersonalOAuth(serverConfig) && !personalOAuthContexts.has(serverConfig))
|
|
558
643
|
throw personalAuthorizationRequired(serverName);
|
|
@@ -593,4 +678,5 @@ export const createOAuthProvider = async (serverName, serverConfig) => {
|
|
|
593
678
|
logger.log('Created OAuth provider', JSON.stringify({ serverName }));
|
|
594
679
|
return provider;
|
|
595
680
|
};
|
|
681
|
+
export const createOAuthProvider = (name, definition) => withReplicaLock(JSON.stringify(['oauth', name, personalOAuthContexts.get(definition)?.username || 'shared']), () => createOAuthProviderUnlocked(name, definition));
|
|
596
682
|
//# sourceMappingURL=mcpOAuthProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpOAuthProvider.js","sourceRoot":"","sources":["../../src/services/mcpOAuthProvider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcpOAuthProvider.js","sourceRoot":"","sources":["../../src/services/mcpOAuthProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { getToolPolicy } from './toolPolicyService.js';
|
|
2
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
3
|
+
import { isReplicaMode } from '../utils/replicaMode.js';
|
|
4
|
+
import { withReplicaLock } from './replicaLock.js';
|
|
2
5
|
import { projectGroupToolName, assertValidGroupToolNames } from '../utils/groupToolNames.js';
|
|
3
6
|
import { isSafePassthroughHeader } from '../utils/passthroughHeaders.js';
|
|
4
7
|
import { observeToolCall, setMetricsServer } from './metricsService.js';
|
|
@@ -39,12 +42,13 @@ import config from '../config/index.js';
|
|
|
39
42
|
import { validateMaxBufferSize } from '../utils/stdioOptions.js';
|
|
40
43
|
import { validateServerName } from '../utils/serverNameValidation.js';
|
|
41
44
|
import { getGroup } from './sseService.js';
|
|
45
|
+
import { mcpEventBus } from './mcpEventBus.js';
|
|
42
46
|
import { getServerConfigInGroup, normalizeGroupServers } from './groupService.js';
|
|
43
47
|
import { removeServerToolEmbeddings, removeToolEmbeddings, saveToolsAsVectorEmbeddings, } from './vectorSearchService.js';
|
|
44
48
|
import { OpenAPIClient } from '../clients/openapi.js';
|
|
45
49
|
import { RequestContextService } from './requestContextService.js';
|
|
46
50
|
import { getDataService } from './services.js';
|
|
47
|
-
import { getBearerKeyDao, getServerDao, getGroupDao, getSystemConfigDao, getBuiltinPromptDao, getBuiltinResourceDao, } from '../dao/index.js';
|
|
51
|
+
import { getBearerKeyDao, getServerDao, getGroupDao, getSystemConfigDao, getBuiltinPromptDao, getBuiltinResourceDao, getCredentialBindingDao, } from '../dao/index.js';
|
|
48
52
|
import { initializeAllOAuthClients } from './oauthService.js';
|
|
49
53
|
import { createOAuthProvider } from './mcpOAuthProvider.js';
|
|
50
54
|
import { initSmartRoutingService, getSmartRoutingTools, handleSearchToolsRequest, handleDescribeToolRequest, isSmartRoutingGroup, } from './smartRoutingService.js';
|
|
@@ -430,6 +434,7 @@ export const notifyToolChanged = async (name, options) => {
|
|
|
430
434
|
broadcastToolListChanged();
|
|
431
435
|
};
|
|
432
436
|
const broadcastListChanged = (listType, sendNotification) => {
|
|
437
|
+
mcpEventBus.publish({ kind: `${listType}s_list_changed` });
|
|
433
438
|
Object.values(servers).forEach((server) => {
|
|
434
439
|
sendNotification(server)
|
|
435
440
|
.then(() => {
|
|
@@ -449,18 +454,20 @@ export const broadcastResourceListChanged = () => {
|
|
|
449
454
|
export const broadcastPromptListChanged = () => {
|
|
450
455
|
broadcastListChanged('prompt', (server) => server.sendPromptListChanged());
|
|
451
456
|
};
|
|
452
|
-
export const updateServerInfoVisibility = (serverName, visibility, sharedWithUsers) => {
|
|
457
|
+
export const updateServerInfoVisibility = (serverName, visibility, sharedWithUsers, sharedWithUserGroups) => {
|
|
453
458
|
const serverInfo = getServerByName(serverName);
|
|
454
459
|
if (!serverInfo) {
|
|
455
460
|
return;
|
|
456
461
|
}
|
|
457
462
|
serverInfo.visibility = visibility;
|
|
458
463
|
serverInfo.sharedWithUsers = sharedWithUsers;
|
|
464
|
+
serverInfo.sharedWithUserGroups = sharedWithUserGroups;
|
|
459
465
|
if (serverInfo.config) {
|
|
460
466
|
serverInfo.config = {
|
|
461
467
|
...serverInfo.config,
|
|
462
468
|
visibility,
|
|
463
469
|
sharedWithUsers,
|
|
470
|
+
sharedWithUserGroups,
|
|
464
471
|
};
|
|
465
472
|
}
|
|
466
473
|
};
|
|
@@ -730,7 +737,16 @@ const principalServerScope = new AsyncLocalStorage();
|
|
|
730
737
|
// Header-dependent discovery must never publish descriptors or embeddings globally.
|
|
731
738
|
const requestDiscoveryInfos = new WeakSet();
|
|
732
739
|
const getVisibleServerInfos = () => {
|
|
733
|
-
|
|
740
|
+
const visible = getDataService().filterData(principalServerScope.getStore() ?? serverInfos);
|
|
741
|
+
// A system key with accessType 'exclude' hides its excluded servers (and the
|
|
742
|
+
// members of excluded groups, already expanded by the auth layer) from every
|
|
743
|
+
// listing, call resolution and smart-routing surface that reads this list.
|
|
744
|
+
const excludedServers = RequestContextService.getInstance().getBearerKeyExclusions();
|
|
745
|
+
if (!excludedServers || excludedServers.length === 0) {
|
|
746
|
+
return visible;
|
|
747
|
+
}
|
|
748
|
+
const excluded = new Set(excludedServers);
|
|
749
|
+
return visible.filter((serverInfo) => !excluded.has(serverInfo.name));
|
|
734
750
|
};
|
|
735
751
|
const getVisibleServerByName = (name) => {
|
|
736
752
|
return getVisibleServerInfos().find((serverInfo) => serverInfo.name === name);
|
|
@@ -973,7 +989,7 @@ const createUpstreamMcpClient = (name, getServerInfo, serverConfig, downstream)
|
|
|
973
989
|
});
|
|
974
990
|
if (elicitation && downstream)
|
|
975
991
|
installElicitationRelay(client, downstream);
|
|
976
|
-
return client;
|
|
992
|
+
return protectReplicaOAuthClient(client, name, serverConfig);
|
|
977
993
|
};
|
|
978
994
|
// Normalize and infer server type for safe client display
|
|
979
995
|
const normalizeServerType = (type) => {
|
|
@@ -1471,6 +1487,9 @@ const refreshCapabilitiesAfterFailedCall = async (info) => {
|
|
|
1471
1487
|
};
|
|
1472
1488
|
// Helper function to handle client.callTool with reconnection logic
|
|
1473
1489
|
const callToolWithReconnect = async (serverInfo, toolParams, options, maxRetries = 1, isolated, extra) => {
|
|
1490
|
+
// A lost response does not prove a side effect failed; replica failover never replays it.
|
|
1491
|
+
if (isReplicaMode())
|
|
1492
|
+
maxRetries = 0;
|
|
1474
1493
|
// Local, reassignable refs so a reconnect can swap in the new connection for
|
|
1475
1494
|
// the next retry attempt. For isolated calls these track the per-session
|
|
1476
1495
|
// client/transport; otherwise they mirror the shared serverInfo connection.
|
|
@@ -1665,7 +1684,7 @@ const setupServerKeepAlive = (serverInfo, serverConfig) => {
|
|
|
1665
1684
|
};
|
|
1666
1685
|
// Initialize MCP server clients
|
|
1667
1686
|
export const initializeClientsFromSettings = async (isInit, serverName, options) => {
|
|
1668
|
-
const allServers = await getServerDao().findAll();
|
|
1687
|
+
const allServers = options?.declarations ?? await getServerDao().findAll();
|
|
1669
1688
|
const existingServerInfos = serverInfos;
|
|
1670
1689
|
const nextServerInfos = [];
|
|
1671
1690
|
const generation = ++initGeneration;
|
|
@@ -1692,6 +1711,13 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
|
|
|
1692
1711
|
}
|
|
1693
1712
|
// Expand environment variables in all configuration values
|
|
1694
1713
|
const expandedConf = await expandServerConfig(conf);
|
|
1714
|
+
if (options?.preserveExisting) {
|
|
1715
|
+
const existing = existingServerInfos.find((info) => info.name === name);
|
|
1716
|
+
if (existing) {
|
|
1717
|
+
nextServerInfos.push(existing);
|
|
1718
|
+
continue;
|
|
1719
|
+
}
|
|
1720
|
+
}
|
|
1695
1721
|
// Skip disabled servers
|
|
1696
1722
|
if (expandedConf.enabled === false) {
|
|
1697
1723
|
logger.log(`Skipping disabled server: ${name}`);
|
|
@@ -1699,6 +1725,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
|
|
|
1699
1725
|
name,
|
|
1700
1726
|
owner: expandedConf.owner,
|
|
1701
1727
|
visibility: expandedConf.visibility,
|
|
1728
|
+
sharedWithUserGroups: expandedConf.sharedWithUserGroups,
|
|
1702
1729
|
sharedWithUsers: expandedConf.sharedWithUsers,
|
|
1703
1730
|
status: 'disconnected',
|
|
1704
1731
|
error: null,
|
|
@@ -1716,6 +1743,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
|
|
|
1716
1743
|
name,
|
|
1717
1744
|
owner: expandedConf.owner,
|
|
1718
1745
|
visibility: expandedConf.visibility,
|
|
1746
|
+
sharedWithUserGroups: expandedConf.sharedWithUserGroups,
|
|
1719
1747
|
sharedWithUsers: expandedConf.sharedWithUsers,
|
|
1720
1748
|
enabled: true,
|
|
1721
1749
|
status: 'disconnected',
|
|
@@ -1750,6 +1778,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
|
|
|
1750
1778
|
Object.assign(onDemandInfo, {
|
|
1751
1779
|
owner: expandedConf.owner,
|
|
1752
1780
|
visibility: expandedConf.visibility,
|
|
1781
|
+
sharedWithUserGroups: expandedConf.sharedWithUserGroups,
|
|
1753
1782
|
sharedWithUsers: expandedConf.sharedWithUsers,
|
|
1754
1783
|
enabled: true,
|
|
1755
1784
|
config: expandedConf,
|
|
@@ -1787,6 +1816,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
|
|
|
1787
1816
|
Object.assign(existingServer, {
|
|
1788
1817
|
owner: expandedConf.owner,
|
|
1789
1818
|
visibility: expandedConf.visibility,
|
|
1819
|
+
sharedWithUserGroups: expandedConf.sharedWithUserGroups,
|
|
1790
1820
|
sharedWithUsers: expandedConf.sharedWithUsers,
|
|
1791
1821
|
enabled: expandedConf.enabled === undefined ? true : expandedConf.enabled,
|
|
1792
1822
|
});
|
|
@@ -1812,6 +1842,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
|
|
|
1812
1842
|
name,
|
|
1813
1843
|
owner: expandedConf.owner,
|
|
1814
1844
|
visibility: expandedConf.visibility,
|
|
1845
|
+
sharedWithUserGroups: expandedConf.sharedWithUserGroups,
|
|
1815
1846
|
sharedWithUsers: expandedConf.sharedWithUsers,
|
|
1816
1847
|
status: 'disconnected',
|
|
1817
1848
|
error: 'Missing OpenAPI specification URL or schema',
|
|
@@ -1827,6 +1858,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
|
|
|
1827
1858
|
name,
|
|
1828
1859
|
owner: expandedConf.owner,
|
|
1829
1860
|
visibility: expandedConf.visibility,
|
|
1861
|
+
sharedWithUserGroups: expandedConf.sharedWithUserGroups,
|
|
1830
1862
|
sharedWithUsers: expandedConf.sharedWithUsers,
|
|
1831
1863
|
status: 'connecting',
|
|
1832
1864
|
error: null,
|
|
@@ -1920,6 +1952,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
|
|
|
1920
1952
|
name,
|
|
1921
1953
|
owner: expandedConf.owner,
|
|
1922
1954
|
visibility: expandedConf.visibility,
|
|
1955
|
+
sharedWithUserGroups: expandedConf.sharedWithUserGroups,
|
|
1923
1956
|
sharedWithUsers: expandedConf.sharedWithUsers,
|
|
1924
1957
|
status: 'disconnected',
|
|
1925
1958
|
error: `Failed to create transport: ${formatErrorForLogging(error)}`,
|
|
@@ -1954,6 +1987,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
|
|
|
1954
1987
|
name,
|
|
1955
1988
|
owner: expandedConf.owner,
|
|
1956
1989
|
visibility: expandedConf.visibility,
|
|
1990
|
+
sharedWithUserGroups: expandedConf.sharedWithUserGroups,
|
|
1957
1991
|
sharedWithUsers: expandedConf.sharedWithUsers,
|
|
1958
1992
|
status: 'connecting',
|
|
1959
1993
|
recovery: existingServer?.recovery,
|
|
@@ -2169,6 +2203,24 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
|
|
|
2169
2203
|
}
|
|
2170
2204
|
return serverInfos;
|
|
2171
2205
|
};
|
|
2206
|
+
export const reconcileReplicaServers = async (declarations) => {
|
|
2207
|
+
const expanded = new Map();
|
|
2208
|
+
for (const declaration of declarations) {
|
|
2209
|
+
const resolved = await expandServerConfig(declaration);
|
|
2210
|
+
validateCredentialTemplate(resolved);
|
|
2211
|
+
validateMaxBufferSize(resolved.options?.maxBufferSize);
|
|
2212
|
+
expanded.set(declaration.name, resolved);
|
|
2213
|
+
}
|
|
2214
|
+
const changed = serverInfos.filter((info) => !isDeepStrictEqual(info.config, expanded.get(info.name)) ||
|
|
2215
|
+
(info.enabled !== false) !== (expanded.get(info.name)?.enabled !== false));
|
|
2216
|
+
for (const info of changed)
|
|
2217
|
+
closeServer(info.name);
|
|
2218
|
+
serverInfos = serverInfos.filter((info) => !changed.includes(info));
|
|
2219
|
+
await initializeClientsFromSettings(false, undefined, { declarations, preserveExisting: true });
|
|
2220
|
+
broadcastToolListChanged();
|
|
2221
|
+
broadcastResourceListChanged();
|
|
2222
|
+
broadcastPromptListChanged();
|
|
2223
|
+
};
|
|
2172
2224
|
// Register all MCP tools
|
|
2173
2225
|
export const registerAllTools = async (isInit, serverName, options) => {
|
|
2174
2226
|
await initializeClientsFromSettings(isInit, serverName, options);
|
|
@@ -2203,6 +2255,7 @@ export const getServersInfo = async (page, limit, user) => {
|
|
|
2203
2255
|
name: server.name,
|
|
2204
2256
|
owner: server.owner,
|
|
2205
2257
|
visibility: server.visibility,
|
|
2258
|
+
sharedWithUserGroups: server.sharedWithUserGroups,
|
|
2206
2259
|
sharedWithUsers: server.sharedWithUsers,
|
|
2207
2260
|
// Newly created servers that are enabled should appear as "connecting"
|
|
2208
2261
|
// until the MCP client initialization completes. Disabled servers remain
|
|
@@ -4321,6 +4374,7 @@ const handleReadResourceRequestImpl = async (request, extra) => {
|
|
|
4321
4374
|
};
|
|
4322
4375
|
// Preserve credential-safe errors for personal clients in every discovery scope.
|
|
4323
4376
|
const personalClientMethods = new Set([
|
|
4377
|
+
'connect',
|
|
4324
4378
|
'callTool',
|
|
4325
4379
|
'getPrompt',
|
|
4326
4380
|
'readResource',
|
|
@@ -4329,7 +4383,33 @@ const personalClientMethods = new Set([
|
|
|
4329
4383
|
'listResources',
|
|
4330
4384
|
'listResourceTemplates',
|
|
4331
4385
|
]);
|
|
4332
|
-
const
|
|
4386
|
+
const protectReplicaOAuthClient = (client, name, definition) => {
|
|
4387
|
+
if (!isReplicaMode() || !definition.url || !definition.oauth)
|
|
4388
|
+
return client;
|
|
4389
|
+
return new Proxy(client, {
|
|
4390
|
+
get(target, property) {
|
|
4391
|
+
const value = Reflect.get(target, property);
|
|
4392
|
+
if (typeof value !== 'function')
|
|
4393
|
+
return value;
|
|
4394
|
+
if (!personalClientMethods.has(String(property)))
|
|
4395
|
+
return value.bind(target);
|
|
4396
|
+
return (...args) => {
|
|
4397
|
+
const personal = personalOAuthContexts.get(definition);
|
|
4398
|
+
const scope = JSON.stringify(['oauth', name, personal?.username || 'shared']);
|
|
4399
|
+
return withReplicaLock(scope, async () => {
|
|
4400
|
+
if (personal) {
|
|
4401
|
+
await personal.assertCurrent();
|
|
4402
|
+
const binding = await getCredentialBindingDao().get(name, personal.username);
|
|
4403
|
+
if (binding?.encryptedValues !== personal.version)
|
|
4404
|
+
throw new Error('Personal authorization changed; retry with current credentials');
|
|
4405
|
+
}
|
|
4406
|
+
return value.apply(target, args);
|
|
4407
|
+
});
|
|
4408
|
+
};
|
|
4409
|
+
},
|
|
4410
|
+
});
|
|
4411
|
+
};
|
|
4412
|
+
const protectPersonalClient = (client, info, resolvedConfig) => new Proxy(protectReplicaOAuthClient(client, info.name, resolvedConfig), {
|
|
4333
4413
|
get(target, property) {
|
|
4334
4414
|
const value = Reflect.get(target, property);
|
|
4335
4415
|
if (typeof value !== 'function')
|
|
@@ -4358,6 +4438,7 @@ const createPrincipalRuntime = async (name, resolvedConfig, scope, toolsOnly = f
|
|
|
4358
4438
|
name,
|
|
4359
4439
|
owner: resolvedConfig.owner,
|
|
4360
4440
|
visibility: resolvedConfig.visibility,
|
|
4441
|
+
sharedWithUserGroups: resolvedConfig.sharedWithUserGroups,
|
|
4361
4442
|
sharedWithUsers: resolvedConfig.sharedWithUsers,
|
|
4362
4443
|
enabled: true,
|
|
4363
4444
|
config: resolvedConfig,
|
|
@@ -4400,10 +4481,10 @@ const createPrincipalRuntime = async (name, resolvedConfig, scope, toolsOnly = f
|
|
|
4400
4481
|
});
|
|
4401
4482
|
info.transport = transport;
|
|
4402
4483
|
info.client = protectPersonalClient(client, info, resolvedConfig);
|
|
4403
|
-
await client.connect(transport, resolvedConfig.options || {});
|
|
4484
|
+
await info.client.connect(transport, resolvedConfig.options || {});
|
|
4404
4485
|
const capabilities = client.getServerCapabilities();
|
|
4405
4486
|
if (capabilities?.tools) {
|
|
4406
|
-
const { tools } = await client.listTools({}, resolvedConfig.options);
|
|
4487
|
+
const { tools } = await info.client.listTools({}, resolvedConfig.options);
|
|
4407
4488
|
info.tools = preserveListFreshness(tools, tools.map((tool) => normalizeToolForCache(name, tool)));
|
|
4408
4489
|
recordCapabilitySnapshot(info, tools);
|
|
4409
4490
|
}
|
|
@@ -4713,6 +4794,7 @@ const listProjectionInputs = async (group, field) => {
|
|
|
4713
4794
|
enabled: info.enabled,
|
|
4714
4795
|
owner: info.owner,
|
|
4715
4796
|
visibility: info.visibility,
|
|
4797
|
+
sharedWithUserGroups: info.sharedWithUserGroups,
|
|
4716
4798
|
sharedWithUsers: info.sharedWithUsers,
|
|
4717
4799
|
config: info.config,
|
|
4718
4800
|
})),
|
|
@@ -4870,7 +4952,52 @@ const withToolPolicy = async (handler, request, extra, invocation) => {
|
|
|
4870
4952
|
return principalServerScope.run(eligible, () => handler(request, extra));
|
|
4871
4953
|
};
|
|
4872
4954
|
export const handleListToolsRequest = (request, extra) => withToolPolicy(listToolsWithPrincipal, request, extra, false);
|
|
4873
|
-
|
|
4955
|
+
// Polling refreshes connections; authorization always reads the current shared records.
|
|
4956
|
+
const withReplicaServerScope = async (action) => {
|
|
4957
|
+
if (!isReplicaMode())
|
|
4958
|
+
return action();
|
|
4959
|
+
const context = UserContextService.getInstance();
|
|
4960
|
+
const current = context.getCurrentUser();
|
|
4961
|
+
const externalPrincipal = current?.credentialEligible === false ||
|
|
4962
|
+
RequestContextService.getInstance().getHostedAuthContext();
|
|
4963
|
+
const user = current ? externalPrincipal ? current : await getUserDao().findByUsername(current.username) : null;
|
|
4964
|
+
if (current && !user)
|
|
4965
|
+
throw new Error('User no longer exists');
|
|
4966
|
+
const definitions = getDataService().filterData(await getServerDao().findAll(), user ?? undefined);
|
|
4967
|
+
const byName = new Map(definitions.map((server) => [server.name, server]));
|
|
4968
|
+
const visible = (principalServerScope.getStore() ?? serverInfos).flatMap((info) => {
|
|
4969
|
+
const live = byName.get(info.name);
|
|
4970
|
+
if (!live || live.enabled === false)
|
|
4971
|
+
return [];
|
|
4972
|
+
if (hasPersonalAuthentication(live) !== hasPersonalAuthentication(info.config))
|
|
4973
|
+
return [];
|
|
4974
|
+
// Project request authorization while keeping all lifecycle reads/writes on the runtime.
|
|
4975
|
+
return [
|
|
4976
|
+
new Proxy(info, {
|
|
4977
|
+
get(target, property) {
|
|
4978
|
+
switch (property) {
|
|
4979
|
+
case 'owner':
|
|
4980
|
+
case 'visibility':
|
|
4981
|
+
case 'sharedWithUsers':
|
|
4982
|
+
case 'sharedWithUserGroups':
|
|
4983
|
+
return live[property];
|
|
4984
|
+
case 'config':
|
|
4985
|
+
return {
|
|
4986
|
+
...target.config,
|
|
4987
|
+
tools: live.tools,
|
|
4988
|
+
prompts: live.prompts,
|
|
4989
|
+
resources: live.resources,
|
|
4990
|
+
};
|
|
4991
|
+
default:
|
|
4992
|
+
return Reflect.get(target, property);
|
|
4993
|
+
}
|
|
4994
|
+
},
|
|
4995
|
+
}),
|
|
4996
|
+
];
|
|
4997
|
+
});
|
|
4998
|
+
return context.runWithContext(() => principalServerScope.run(visible, action), user ?? null);
|
|
4999
|
+
};
|
|
5000
|
+
export const handleCallToolRequest = (request, extra) => observeToolCall(() => withReplicaServerScope(() => withToolPolicy(callToolWithPrincipal, request, extra, true)));
|
|
4874
5001
|
export const handleGetPromptRequest = withPrincipalServers(withModernLists(handleGetPromptRequestImpl, ['prompts']), 'prompt');
|
|
4875
5002
|
export const handleListPromptsRequest = withPrincipalServers(withModernLists(withCacheHints(handleListPromptsRequestImpl, false, 'prompts'), ['prompts']), 'list');
|
|
4876
5003
|
export const handleListResourcesRequest = withPrincipalServers(withModernLists(withCacheHints(handleListResourcesRequestImpl, false, 'resources'), [
|