@samanhappy/mcphub 1.1.7 → 1.1.9

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.
Files changed (140) hide show
  1. package/dist/clients/openapi.js +2 -1
  2. package/dist/clients/openapi.js.map +1 -1
  3. package/dist/controllers/authController.js +27 -1
  4. package/dist/controllers/authController.js.map +1 -1
  5. package/dist/controllers/configController.js +4 -1
  6. package/dist/controllers/configController.js.map +1 -1
  7. package/dist/controllers/oauthServerController.js +12 -14
  8. package/dist/controllers/oauthServerController.js.map +1 -1
  9. package/dist/controllers/promptController.js +2 -2
  10. package/dist/controllers/promptController.js.map +1 -1
  11. package/dist/controllers/serverController.js +201 -12
  12. package/dist/controllers/serverController.js.map +1 -1
  13. package/dist/dao/OAuthTokenDaoDbImpl.js +2 -0
  14. package/dist/dao/OAuthTokenDaoDbImpl.js.map +1 -1
  15. package/dist/dao/ServerDao.js.map +1 -1
  16. package/dist/dao/ServerDaoDbImpl.js.map +1 -1
  17. package/dist/db/entities/OAuthToken.js +4 -0
  18. package/dist/db/entities/OAuthToken.js.map +1 -1
  19. package/dist/db/entities/Server.js.map +1 -1
  20. package/dist/middlewares/auth.js +7 -25
  21. package/dist/middlewares/auth.js.map +1 -1
  22. package/dist/middlewares/userContext.js +6 -34
  23. package/dist/middlewares/userContext.js.map +1 -1
  24. package/dist/models/OAuth.js +14 -93
  25. package/dist/models/OAuth.js.map +1 -1
  26. package/dist/routes/index.js +3 -1
  27. package/dist/routes/index.js.map +1 -1
  28. package/dist/services/betterAuthConfig.js +1 -0
  29. package/dist/services/betterAuthConfig.js.map +1 -1
  30. package/dist/services/contextCostService.js +3 -1
  31. package/dist/services/contextCostService.js.map +1 -1
  32. package/dist/services/credentialBindingService.js +8 -3
  33. package/dist/services/credentialBindingService.js.map +1 -1
  34. package/dist/services/elicitationService.js +93 -0
  35. package/dist/services/elicitationService.js.map +1 -0
  36. package/dist/services/mcpService.js +167 -95
  37. package/dist/services/mcpService.js.map +1 -1
  38. package/dist/services/oauthServerService.js +15 -1
  39. package/dist/services/oauthServerService.js.map +1 -1
  40. package/dist/services/openApiGeneratorService.js +3 -1
  41. package/dist/services/openApiGeneratorService.js.map +1 -1
  42. package/dist/services/personalOAuthService.js +70 -8
  43. package/dist/services/personalOAuthService.js.map +1 -1
  44. package/dist/services/registrationService.js +28 -0
  45. package/dist/services/registrationService.js.map +1 -0
  46. package/dist/services/serverConfigPresenter.js +6 -1
  47. package/dist/services/serverConfigPresenter.js.map +1 -1
  48. package/dist/services/smartRoutingService.js +7 -6
  49. package/dist/services/smartRoutingService.js.map +1 -1
  50. package/dist/services/sseService.js +1 -2
  51. package/dist/services/sseService.js.map +1 -1
  52. package/dist/services/templateService.js +5 -4
  53. package/dist/services/templateService.js.map +1 -1
  54. package/dist/services/userService.js +22 -4
  55. package/dist/services/userService.js.map +1 -1
  56. package/dist/utils/credentialTemplate.js +76 -6
  57. package/dist/utils/credentialTemplate.js.map +1 -1
  58. package/dist/utils/migration.js +1 -0
  59. package/dist/utils/migration.js.map +1 -1
  60. package/dist/utils/namePattern.js +28 -0
  61. package/dist/utils/namePattern.js.map +1 -0
  62. package/dist/utils/oauthBearer.js +4 -2
  63. package/dist/utils/oauthBearer.js.map +1 -1
  64. package/dist/utils/passthroughHeaders.js +17 -0
  65. package/dist/utils/passthroughHeaders.js.map +1 -0
  66. package/dist/utils/rateLimit.js +1 -1
  67. package/dist/utils/rateLimit.js.map +1 -1
  68. package/dist/utils/serverConfigPersistence.js +1 -3
  69. package/dist/utils/serverConfigPersistence.js.map +1 -1
  70. package/dist/utils/serverConfigValidation.js +2 -1
  71. package/dist/utils/serverConfigValidation.js.map +1 -1
  72. package/dist/utils/settingsSync.js +5 -1
  73. package/dist/utils/settingsSync.js.map +1 -1
  74. package/dist/utils/toolConfig.js +93 -0
  75. package/dist/utils/toolConfig.js.map +1 -0
  76. package/dist/utils/upstreamError.js +9 -2
  77. package/dist/utils/upstreamError.js.map +1 -1
  78. package/dist/utils/userSession.js +29 -0
  79. package/dist/utils/userSession.js.map +1 -0
  80. package/frontend/dist/assets/{ActivityPage-BEpHoGLB.js → ActivityPage-CFRX20v4.js} +2 -2
  81. package/frontend/dist/assets/{ActivityPage-BEpHoGLB.js.map → ActivityPage-CFRX20v4.js.map} +1 -1
  82. package/frontend/dist/assets/{CopyClientConfigDialog-B4RDMLQ7.js → CopyClientConfigDialog-CDEiSInj.js} +2 -2
  83. package/frontend/dist/assets/{CopyClientConfigDialog-B4RDMLQ7.js.map → CopyClientConfigDialog-CDEiSInj.js.map} +1 -1
  84. package/frontend/dist/assets/CredentialsPage-BCLHY_fN.js +2 -0
  85. package/frontend/dist/assets/CredentialsPage-BCLHY_fN.js.map +1 -0
  86. package/frontend/dist/assets/{Dashboard-Bp8ZGDp5.js → Dashboard-B3Y6nAFL.js} +2 -2
  87. package/frontend/dist/assets/{Dashboard-Bp8ZGDp5.js.map → Dashboard-B3Y6nAFL.js.map} +1 -1
  88. package/frontend/dist/assets/{EndpointCopy-CH7rfwDL.js → EndpointCopy-BMxT99Ne.js} +2 -2
  89. package/frontend/dist/assets/{EndpointCopy-CH7rfwDL.js.map → EndpointCopy-BMxT99Ne.js.map} +1 -1
  90. package/frontend/dist/assets/GroupsPage-5iCk1LKT.js +33 -0
  91. package/frontend/dist/assets/GroupsPage-5iCk1LKT.js.map +1 -0
  92. package/frontend/dist/assets/LoginPage-BjYzY6RH.js +2 -0
  93. package/frontend/dist/assets/LoginPage-BjYzY6RH.js.map +1 -0
  94. package/frontend/dist/assets/{LogsPage-B4RyT3TS.js → LogsPage-CGcFNKJn.js} +2 -2
  95. package/frontend/dist/assets/{LogsPage-B4RyT3TS.js.map → LogsPage-CGcFNKJn.js.map} +1 -1
  96. package/frontend/dist/assets/{MarketPage-DV7Bs6bj.js → MarketPage-B7JPqFw3.js} +2 -2
  97. package/frontend/dist/assets/{MarketPage-DV7Bs6bj.js.map → MarketPage-B7JPqFw3.js.map} +1 -1
  98. package/frontend/dist/assets/{OAuthConsentPage-DdxMIqDO.js → OAuthConsentPage-BYi_kgNj.js} +2 -2
  99. package/frontend/dist/assets/{OAuthConsentPage-DdxMIqDO.js.map → OAuthConsentPage-BYi_kgNj.js.map} +1 -1
  100. package/frontend/dist/assets/{PromptsPage-61Uj8gCp.js → PromptsPage-x6X5trLX.js} +2 -2
  101. package/frontend/dist/assets/{PromptsPage-61Uj8gCp.js.map → PromptsPage-x6X5trLX.js.map} +1 -1
  102. package/frontend/dist/assets/{ResourcesPage-BSgOwVld.js → ResourcesPage-BJZCPBs8.js} +2 -2
  103. package/frontend/dist/assets/{ResourcesPage-BSgOwVld.js.map → ResourcesPage-BJZCPBs8.js.map} +1 -1
  104. package/frontend/dist/assets/ServersPage-CsyGLden.js +39 -0
  105. package/frontend/dist/assets/ServersPage-CsyGLden.js.map +1 -0
  106. package/frontend/dist/assets/{SettingsPage-C8zYH_jq.js → SettingsPage-C53DI0Sz.js} +6 -6
  107. package/frontend/dist/assets/SettingsPage-C53DI0Sz.js.map +1 -0
  108. package/frontend/dist/assets/{StatusDot-R86yLB-f.js → StatusDot-BDJd3Iix.js} +2 -2
  109. package/frontend/dist/assets/{StatusDot-R86yLB-f.js.map → StatusDot-BDJd3Iix.js.map} +1 -1
  110. package/frontend/dist/assets/{ToggleGroup-DN1ttokb.js → ToggleGroup-BbmRhILg.js} +2 -2
  111. package/frontend/dist/assets/{ToggleGroup-DN1ttokb.js.map → ToggleGroup-BbmRhILg.js.map} +1 -1
  112. package/frontend/dist/assets/{UsersPage-BCMjm9JG.js → UsersPage-NUG6vF8C.js} +2 -2
  113. package/frontend/dist/assets/{UsersPage-BCMjm9JG.js.map → UsersPage-NUG6vF8C.js.map} +1 -1
  114. package/frontend/dist/assets/{clipboard-DjzVWhkB.js → clipboard-7BggsilD.js} +2 -2
  115. package/frontend/dist/assets/{clipboard-DjzVWhkB.js.map → clipboard-7BggsilD.js.map} +1 -1
  116. package/frontend/dist/assets/index-B_IITM9e.js +3 -0
  117. package/frontend/dist/assets/index-B_IITM9e.js.map +1 -0
  118. package/frontend/dist/assets/index-CnqLKewL.css +1 -0
  119. package/frontend/dist/assets/{resourceService-DRZl8_Vm.js → resourceService-B674Fopr.js} +2 -2
  120. package/frontend/dist/assets/{resourceService-DRZl8_Vm.js.map → resourceService-B674Fopr.js.map} +1 -1
  121. package/frontend/dist/assets/{useCostData-DVLGVcuy.js → useCostData-8Z1HjAL5.js} +2 -2
  122. package/frontend/dist/assets/{useCostData-DVLGVcuy.js.map → useCostData-8Z1HjAL5.js.map} +1 -1
  123. package/frontend/dist/assets/variableDetection-C0nP3Jj2.js +18 -0
  124. package/frontend/dist/assets/variableDetection-C0nP3Jj2.js.map +1 -0
  125. package/frontend/dist/index.html +2 -2
  126. package/package.json +2 -2
  127. package/frontend/dist/assets/CredentialsPage-46Z8Qv7O.js +0 -2
  128. package/frontend/dist/assets/CredentialsPage-46Z8Qv7O.js.map +0 -1
  129. package/frontend/dist/assets/GroupsPage-DTjOja6T.js +0 -33
  130. package/frontend/dist/assets/GroupsPage-DTjOja6T.js.map +0 -1
  131. package/frontend/dist/assets/LoginPage-o6ibb_j3.js +0 -2
  132. package/frontend/dist/assets/LoginPage-o6ibb_j3.js.map +0 -1
  133. package/frontend/dist/assets/ServersPage-DYumMhzV.js +0 -39
  134. package/frontend/dist/assets/ServersPage-DYumMhzV.js.map +0 -1
  135. package/frontend/dist/assets/SettingsPage-C8zYH_jq.js.map +0 -1
  136. package/frontend/dist/assets/index--NhF_yyy.css +0 -1
  137. package/frontend/dist/assets/index-P_O2kAcB.js +0 -3
  138. package/frontend/dist/assets/index-P_O2kAcB.js.map +0 -1
  139. package/frontend/dist/assets/variableDetection-DiE4h0o7.js +0 -16
  140. package/frontend/dist/assets/variableDetection-DiE4h0o7.js.map +0 -1
@@ -0,0 +1,93 @@
1
+ const relays = new WeakMap();
2
+ export const getElicitationCapabilities = (server) => {
3
+ const capability = server?.getClientCapabilities()?.elicitation;
4
+ if (!capability)
5
+ return undefined;
6
+ // An empty legacy capability means form support, not both modes.
7
+ const modes = {
8
+ ...(capability.form || Object.keys(capability).length === 0 ? { form: {} } : {}),
9
+ ...(capability.url ? { url: {} } : {}),
10
+ };
11
+ return Object.keys(modes).length ? modes : undefined;
12
+ };
13
+ // Legacy upstream requests carry no portable parent request ID. Serialize each
14
+ // session's isolated connection instead of guessing which concurrent call owns it.
15
+ class ElicitationRelay {
16
+ constructor(client, downstream) {
17
+ this.tail = Promise.resolve();
18
+ this.lifetime = new AbortController();
19
+ const capabilities = getElicitationCapabilities(downstream);
20
+ const onclose = client.onclose;
21
+ client.onclose = () => {
22
+ this.lifetime.abort();
23
+ onclose?.();
24
+ };
25
+ client.setRequestHandler('elicitation/create', async (request, extra) => {
26
+ const active = this.active;
27
+ if (!active)
28
+ throw new Error('Elicitation requires an active tool call');
29
+ if (!capabilities?.[request.params.mode ?? 'form']) {
30
+ throw new Error('Client does not support this elicitation mode');
31
+ }
32
+ try {
33
+ return await active.context.send({ method: 'elicitation/create', params: request.params }, {
34
+ ...active.options,
35
+ signal: AbortSignal.any([
36
+ active.context.signal,
37
+ extra.mcpReq.signal,
38
+ this.lifetime.signal,
39
+ ]),
40
+ });
41
+ }
42
+ catch (error) {
43
+ this.lifetime.abort();
44
+ throw error;
45
+ }
46
+ });
47
+ client.setNotificationHandler('notifications/elicitation/complete', (notification) => downstream.notification(notification));
48
+ }
49
+ get closed() {
50
+ return this.lifetime.signal.aborted;
51
+ }
52
+ async run(context, options, call) {
53
+ const previous = this.tail;
54
+ let release;
55
+ this.tail = new Promise((resolve) => {
56
+ release = resolve;
57
+ });
58
+ let callStarted = false;
59
+ try {
60
+ await previous;
61
+ if (!context)
62
+ throw new Error('Elicitation requires a downstream request');
63
+ const signal = AbortSignal.any([context.signal, this.lifetime.signal]);
64
+ signal.throwIfAborted();
65
+ this.active = { context, options };
66
+ callStarted = true;
67
+ return await call({ ...options, signal });
68
+ }
69
+ catch (error) {
70
+ // A timed-out call can still elicit later; never hand its connection to
71
+ // the next caller. Session lookup replaces this closed client on demand.
72
+ // Cancelling a queued call has not affected the upstream connection.
73
+ if (callStarted || !context)
74
+ this.lifetime.abort();
75
+ throw error;
76
+ }
77
+ finally {
78
+ this.active = undefined;
79
+ release();
80
+ }
81
+ }
82
+ }
83
+ export const installElicitationRelay = (client, downstream) => {
84
+ relays.set(client, new ElicitationRelay(client, downstream));
85
+ };
86
+ export const isElicitationClientClosed = (client) => relays.get(client)?.closed ?? false;
87
+ export const withElicitation = (client, context, options, call) => {
88
+ const relay = relays.get(client);
89
+ if (!relay)
90
+ return call(options);
91
+ return relay.run(context, options, call);
92
+ };
93
+ //# sourceMappingURL=elicitationService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elicitationService.js","sourceRoot":"","sources":["../../src/services/elicitationService.ts"],"names":[],"mappings":"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"}