@samanhappy/mcphub 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.fr.md +4 -0
- package/README.md +4 -0
- package/README.zh.md +2 -0
- package/dist/cli/http.js +54 -1
- package/dist/cli/http.js.map +1 -1
- package/dist/controllers/serverController.js +17 -2
- package/dist/controllers/serverController.js.map +1 -1
- package/dist/dao/SystemConfigDaoDbImpl.js +3 -0
- package/dist/dao/SystemConfigDaoDbImpl.js.map +1 -1
- package/dist/db/entities/SystemConfig.js +4 -0
- package/dist/db/entities/SystemConfig.js.map +1 -1
- package/dist/services/cimdClientService.js +2 -1
- package/dist/services/cimdClientService.js.map +1 -1
- package/dist/services/mcpService.js +54 -15
- package/dist/services/mcpService.js.map +1 -1
- package/dist/services/sseService.js +2 -2
- package/dist/services/sseService.js.map +1 -1
- package/dist/utils/migration.js +1 -0
- package/dist/utils/migration.js.map +1 -1
- package/dist/utils/ssrf.js +47 -12
- package/dist/utils/ssrf.js.map +1 -1
- package/frontend/dist/assets/{ActivityPage-DFLMe7o2.js → ActivityPage-Bs0YrAhj.js} +2 -2
- package/frontend/dist/assets/{ActivityPage-DFLMe7o2.js.map → ActivityPage-Bs0YrAhj.js.map} +1 -1
- package/frontend/dist/assets/{CopyClientConfigDialog-DukyyXVp.js → CopyClientConfigDialog-TcVaJHaV.js} +2 -2
- package/frontend/dist/assets/{CopyClientConfigDialog-DukyyXVp.js.map → CopyClientConfigDialog-TcVaJHaV.js.map} +1 -1
- package/frontend/dist/assets/{CredentialsPage-BpBCEmEE.js → CredentialsPage-Cnd6MF-3.js} +2 -2
- package/frontend/dist/assets/{CredentialsPage-BpBCEmEE.js.map → CredentialsPage-Cnd6MF-3.js.map} +1 -1
- package/frontend/dist/assets/{Dashboard-DjZkbAPt.js → Dashboard--skdgzau.js} +2 -2
- package/frontend/dist/assets/{Dashboard-DjZkbAPt.js.map → Dashboard--skdgzau.js.map} +1 -1
- package/frontend/dist/assets/{EndpointCopy-Bv-_FPmR.js → EndpointCopy-Dr-iLvMr.js} +2 -2
- package/frontend/dist/assets/{EndpointCopy-Bv-_FPmR.js.map → EndpointCopy-Dr-iLvMr.js.map} +1 -1
- package/frontend/dist/assets/{GroupsPage-B8BWRIWv.js → GroupsPage-CSIfAW7V.js} +2 -2
- package/frontend/dist/assets/{GroupsPage-B8BWRIWv.js.map → GroupsPage-CSIfAW7V.js.map} +1 -1
- package/frontend/dist/assets/{LoginPage-OH73zcbT.js → LoginPage-DwnZEV5T.js} +2 -2
- package/frontend/dist/assets/{LoginPage-OH73zcbT.js.map → LoginPage-DwnZEV5T.js.map} +1 -1
- package/frontend/dist/assets/{LogsPage-B6P_uQvL.js → LogsPage-CTstXCQT.js} +2 -2
- package/frontend/dist/assets/{LogsPage-B6P_uQvL.js.map → LogsPage-CTstXCQT.js.map} +1 -1
- package/frontend/dist/assets/{MarketPage-CKjkgZpe.js → MarketPage-IbsIGvoI.js} +2 -2
- package/frontend/dist/assets/{MarketPage-CKjkgZpe.js.map → MarketPage-IbsIGvoI.js.map} +1 -1
- package/frontend/dist/assets/{OAuthConsentPage-DjvtbLnm.js → OAuthConsentPage-DawUB5r6.js} +2 -2
- package/frontend/dist/assets/{OAuthConsentPage-DjvtbLnm.js.map → OAuthConsentPage-DawUB5r6.js.map} +1 -1
- package/frontend/dist/assets/{PromptsPage-CCMb9OH2.js → PromptsPage-Dim3CdKg.js} +2 -2
- package/frontend/dist/assets/{PromptsPage-CCMb9OH2.js.map → PromptsPage-Dim3CdKg.js.map} +1 -1
- package/frontend/dist/assets/{ResourcesPage-BERaKn0d.js → ResourcesPage-zcP5M9pv.js} +2 -2
- package/frontend/dist/assets/{ResourcesPage-BERaKn0d.js.map → ResourcesPage-zcP5M9pv.js.map} +1 -1
- package/frontend/dist/assets/{ServersPage-BNsFiZez.js → ServersPage-CxucQkR-.js} +4 -4
- package/frontend/dist/assets/{ServersPage-BNsFiZez.js.map → ServersPage-CxucQkR-.js.map} +1 -1
- package/frontend/dist/assets/SettingsPage-CoAt9Wha.js +14 -0
- package/frontend/dist/assets/SettingsPage-CoAt9Wha.js.map +1 -0
- package/frontend/dist/assets/{StatusDot-IWYCjv_t.js → StatusDot-nh6JXzfm.js} +2 -2
- package/frontend/dist/assets/{StatusDot-IWYCjv_t.js.map → StatusDot-nh6JXzfm.js.map} +1 -1
- package/frontend/dist/assets/{ToggleGroup-B_NGGU8p.js → ToggleGroup-CeiSM3PL.js} +2 -2
- package/frontend/dist/assets/{ToggleGroup-B_NGGU8p.js.map → ToggleGroup-CeiSM3PL.js.map} +1 -1
- package/frontend/dist/assets/{UsersPage-D9QdH-ma.js → UsersPage-DLq5cgUz.js} +2 -2
- package/frontend/dist/assets/{UsersPage-D9QdH-ma.js.map → UsersPage-DLq5cgUz.js.map} +1 -1
- package/frontend/dist/assets/{clipboard-CFeeSZ4D.js → clipboard-CmkeMDp6.js} +2 -2
- package/frontend/dist/assets/{clipboard-CFeeSZ4D.js.map → clipboard-CmkeMDp6.js.map} +1 -1
- package/frontend/dist/assets/index-dacgBASO.js +3 -0
- package/frontend/dist/assets/index-dacgBASO.js.map +1 -0
- package/frontend/dist/assets/{resourceService-BoJqsssR.js → resourceService-Nk5qQbQ0.js} +2 -2
- package/frontend/dist/assets/{resourceService-BoJqsssR.js.map → resourceService-Nk5qQbQ0.js.map} +1 -1
- package/frontend/dist/assets/{useCostData-Dld-MisV.js → useCostData-BgXlKVml.js} +2 -2
- package/frontend/dist/assets/{useCostData-Dld-MisV.js.map → useCostData-BgXlKVml.js.map} +1 -1
- package/frontend/dist/assets/{variableDetection-C1abuc-p.js → variableDetection-CUnJ5xdC.js} +2 -2
- package/frontend/dist/assets/{variableDetection-C1abuc-p.js.map → variableDetection-CUnJ5xdC.js.map} +1 -1
- package/frontend/dist/index.html +1 -1
- package/package.json +1 -1
- package/frontend/dist/assets/SettingsPage-PiL7o9b9.js +0 -12
- package/frontend/dist/assets/SettingsPage-PiL7o9b9.js.map +0 -1
- package/frontend/dist/assets/index-RTKBtgGw.js +0 -3
- package/frontend/dist/assets/index-RTKBtgGw.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cimdClientService.js","sourceRoot":"","sources":["../../src/services/cimdClientService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAmB,MAAM,kBAAkB,CAAC;AAEjG,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,yBAAyB,GAAG,IAAK,CAAC;AACxC,MAAM,oBAAoB,GAAG,OAAS,CAAC;AACvC,MAAM,kBAAkB,GAAG,GAAG,GAAG,IAAI,CAAC;AAEtC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAW,EAAE;IAC1D,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACzE,CAAC,CAAC;AAqBF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;AAC5C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6C,CAAC;AAEtE,IAAI,SAAS,GAAiB,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AAE1D,iFAAiF;AACjF,IAAI,kBAA0C,CAAC;AAE/C,+EAA+E;AAC/E,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,IAAkB,EAAQ,EAAE;IACrE,SAAS,GAAG,IAAI,CAAC;AACnB,CAAC,CAAC;AAEF,gEAAgE;AAChE,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,MAAmB,EAAQ,EAAE;IACtE,kBAAkB,GAAG,MAAM,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAS,EAAE;IACjD,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,IAA2B,EAAE;IAC/D,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,kBAAkB,EAAE,CAAC,GAAG,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,EAAE,GAAG,6BAA6B,EAAE,EAAE,GAAG,YAAY,EAAE,WAAW,EAAE,CAAC;QACpF,MAAM,GAAG,GACP,OAAO,MAAM,CAAC,gBAAgB,EAAE,UAAU,KAAK,QAAQ;YACvD,MAAM,CAAC,gBAAgB,CAAC,UAAU,GAAG,CAAC;YACpC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU;YACpC,CAAC,CAAC,oBAAoB,CAAC;QAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAAE,OAAO,KAAK,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;IACjF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC;IAC9D,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAc,EAAwB,EAAE,CAC7D,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAE,KAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;AAEtG;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,WAAmB,EACnB,QAAsB,EACI,EAAE;IAC5B,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,2EAA2E;IAC3E,4EAA4E;IAC5E,IAAI,QAAQ,CAAC,SAAS,KAAK,WAAW,EAAE,CAAC;QACvC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC3D,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;QACpF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,2EAA2E;IAC3E,gEAAgE;IAChE,MAAM,UAAU,GACd,OAAO,QAAQ,CAAC,0BAA0B,KAAK,QAAQ;QACrD,CAAC,CAAC,QAAQ,CAAC,0BAA0B;QACrC,CAAC,CAAC,MAAM,CAAC;IACb,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,eAAe,GACnB,QAAQ,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAE,QAAkB,CAAC,CAAC,CAAE,KAAe,CAAC;IAClF,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAAsB,EAAE,CAC9D,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpE,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,IAAI,EACF,OAAO,QAAQ,CAAC,WAAW,KAAK,QAAQ,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YACzE,CAAC,CAAC,QAAQ,CAAC,WAAW;YACtB,CAAC,CAAC,WAAW;QACjB,YAAY;QACZ,MAAM,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC;QAC/C,QAAQ,EAAE;YACR,gBAAgB,EAAE,eAAe;YACjC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjG,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvG,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvG,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9F,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClG;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,KAAK,EAAE,WAAmB,EAAqC,EAAE;IACzF,MAAM,aAAa,CAAC,WAAW,EAAE;QAC/B,aAAa,EAAE,KAAK;QACpB,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9D,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,6BAA6B,CACnD,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,EACnC,KAAK,EACL,kBAAkB,
|
|
1
|
+
{"version":3,"file":"cimdClientService.js","sourceRoot":"","sources":["../../src/services/cimdClientService.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { getMcpRequestGroup } from '../utils/mcpRequestGroup.js';
|
|
|
4
4
|
import { LegacyMcpClient } from '../clients/legacyMcpClient.js';
|
|
5
5
|
import { LEGACY_PROTOCOL_VERSIONS } from '../utils/mcpProtocol.js';
|
|
6
6
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
7
|
+
import { createHash } from 'node:crypto';
|
|
7
8
|
import { canAccessGroupRoute } from '../utils/groupAccess.js';
|
|
8
9
|
import { canServeToolRequests } from '../utils/serverAvailability.js';
|
|
9
10
|
import { PrincipalRuntimeService } from './principalRuntimeService.js';
|
|
@@ -721,16 +722,28 @@ const removeClientState = (id) => {
|
|
|
721
722
|
for (const client of state.cookieClients)
|
|
722
723
|
client.clearSessionCookies(id);
|
|
723
724
|
};
|
|
724
|
-
const acquireClientState = (serverInfo) => {
|
|
725
|
+
const acquireClientState = (serverInfo, openAiSession) => {
|
|
725
726
|
const contextService = RequestContextService.getInstance();
|
|
726
727
|
const scope = contextService.getRequestContext()?.clientStateScope;
|
|
727
|
-
const
|
|
728
|
-
if (!scope
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
728
|
+
const explicitHandle = contextService.getHeader('x-mcphub-state-id');
|
|
729
|
+
if (!scope) {
|
|
730
|
+
throw new Error('Stateful tools on stateless MCP require authenticated bearer access and an application state handle');
|
|
731
|
+
}
|
|
732
|
+
let handle;
|
|
733
|
+
if (explicitHandle !== undefined) {
|
|
734
|
+
if (typeof explicitHandle !== 'string' ||
|
|
735
|
+
!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(explicitHandle)) {
|
|
736
|
+
throw new Error('X-MCPHub-State-Id must be a UUID v4');
|
|
737
|
+
}
|
|
738
|
+
handle = explicitHandle.toLowerCase();
|
|
739
|
+
}
|
|
740
|
+
else if (typeof openAiSession === 'string' && openAiSession.trim()) {
|
|
741
|
+
handle = `openai:${createHash('sha256').update(openAiSession).digest('hex')}`;
|
|
742
|
+
}
|
|
743
|
+
else {
|
|
744
|
+
throw new Error('Stateful tools on stateless MCP require X-MCPHub-State-Id (UUID v4) or _meta["openai/session"]');
|
|
732
745
|
}
|
|
733
|
-
const id = `client-state:${scope}:${handle
|
|
746
|
+
const id = `client-state:${scope}:${handle}`;
|
|
734
747
|
let state = clientStates.get(id);
|
|
735
748
|
if (state && state.active === 0 && Date.now() - state.lastUsed >= CLIENT_STATE_IDLE_MS) {
|
|
736
749
|
removeClientState(id);
|
|
@@ -3162,7 +3175,7 @@ const handleCallToolRequestImpl = async (request, extra) => {
|
|
|
3162
3175
|
const getToolStateId = (info, legacyId) => {
|
|
3163
3176
|
if (!requestContextService.getRequestContext()?.stateless)
|
|
3164
3177
|
return legacyId;
|
|
3165
|
-
clientStateLease ?? (clientStateLease = acquireClientState(info));
|
|
3178
|
+
clientStateLease ?? (clientStateLease = acquireClientState(info, request.params?._meta?.['openai/session']));
|
|
3166
3179
|
return clientStateLease.id;
|
|
3167
3180
|
};
|
|
3168
3181
|
const reserveHostedIfNeeded = async (serverName, toolName) => {
|
|
@@ -3867,9 +3880,19 @@ const handleReadResourceRequestImpl = async (request, extra) => {
|
|
|
3867
3880
|
? { cacheMode: 'bypass' }
|
|
3868
3881
|
: undefined;
|
|
3869
3882
|
if (server?.client) {
|
|
3870
|
-
|
|
3871
|
-
|
|
3872
|
-
|
|
3883
|
+
// A widget URI the upstream also lists in resources/list is read here, not in
|
|
3884
|
+
// the fallback loop below, so it needs the same idle guard: otherwise an
|
|
3885
|
+
// idle timer armed by an earlier read can close an on-demand upstream while
|
|
3886
|
+
// this read is still in flight.
|
|
3887
|
+
const releaseOnDemandRead = beginOnDemandToolCall(server);
|
|
3888
|
+
try {
|
|
3889
|
+
result = readOptions
|
|
3890
|
+
? await server.client.readResource({ uri }, readOptions)
|
|
3891
|
+
: await server.client.readResource({ uri });
|
|
3892
|
+
}
|
|
3893
|
+
finally {
|
|
3894
|
+
releaseOnDemandRead?.();
|
|
3895
|
+
}
|
|
3873
3896
|
if (!result || !Array.isArray(result.contents)) {
|
|
3874
3897
|
throw new Error(`Failed to read resource: ${uri}`);
|
|
3875
3898
|
}
|
|
@@ -3885,10 +3908,23 @@ const handleReadResourceRequestImpl = async (request, extra) => {
|
|
|
3885
3908
|
? [appsRouteContext.serverInfo]
|
|
3886
3909
|
: (appsRouteContext.serverInfos ?? []);
|
|
3887
3910
|
for (const candidate of candidates) {
|
|
3888
|
-
|
|
3889
|
-
|
|
3890
|
-
|
|
3911
|
+
// An on-demand candidate may be idle yet still advertise its cached widget
|
|
3912
|
+
// link, so a host can read the ui:// resource before any tool call has
|
|
3913
|
+
// woken it. Hold off its idle shutdown for every read, awake or not, so an
|
|
3914
|
+
// armed idle timer or an overlapping read cannot close the server mid-read,
|
|
3915
|
+
// then wake it the same way the call path does if it is not running.
|
|
3916
|
+
let releaseOnDemandRead;
|
|
3891
3917
|
try {
|
|
3918
|
+
if (candidate.config?.startOnDemand && candidate.enabled !== false) {
|
|
3919
|
+
releaseOnDemandRead = beginOnDemandToolCall(candidate);
|
|
3920
|
+
if (!candidate.client) {
|
|
3921
|
+
await ensureServerReady(candidate);
|
|
3922
|
+
}
|
|
3923
|
+
candidate.lastUsedAt = Date.now();
|
|
3924
|
+
}
|
|
3925
|
+
if (!candidate.client) {
|
|
3926
|
+
continue;
|
|
3927
|
+
}
|
|
3892
3928
|
const candidateResult = readOptions
|
|
3893
3929
|
? await candidate.client.readResource({ uri }, readOptions)
|
|
3894
3930
|
: await candidate.client.readResource({ uri });
|
|
@@ -3898,7 +3934,10 @@ const handleReadResourceRequestImpl = async (request, extra) => {
|
|
|
3898
3934
|
}
|
|
3899
3935
|
}
|
|
3900
3936
|
catch {
|
|
3901
|
-
// This candidate doesn't own the resource; try the next one.
|
|
3937
|
+
// This candidate doesn't own the resource (or failed to wake); try the next one.
|
|
3938
|
+
}
|
|
3939
|
+
finally {
|
|
3940
|
+
releaseOnDemandRead?.();
|
|
3902
3941
|
}
|
|
3903
3942
|
}
|
|
3904
3943
|
if (!result) {
|