@loop_ouroboros/mcp-hub-lite 1.0.1 → 1.1.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.
Files changed (374) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/dist/client/assets/{HomeView-Cr1jX73N.js → HomeView-Bu2joUvW.js} +1 -1
  3. package/dist/client/assets/ResourceDetailView-BvrhDCD1.js +1 -0
  4. package/dist/client/assets/ResourceDetailView-DUJZbegl.css +1 -0
  5. package/dist/client/assets/ResourcesView-Cc8RHtia.css +1 -0
  6. package/dist/client/assets/ResourcesView-LjqioF_s.js +1 -0
  7. package/dist/client/assets/ServerDashboard-BfLeFDGw.css +1 -0
  8. package/dist/client/assets/ServerDashboard-FhHJFvUi.js +1 -0
  9. package/dist/client/assets/ServerDetail-BKV-M4qT.js +2 -0
  10. package/dist/client/assets/ServerDetail-CtnNKJGx.css +1 -0
  11. package/dist/client/assets/{ServerListView-Bws09jNR.css → ServerListView-B-bPljsO.css} +1 -1
  12. package/dist/client/assets/ServerListView-BXgtDyt3.js +36 -0
  13. package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-D-ooYNdN.js +1 -0
  14. package/dist/client/assets/SettingsView-CMFG91Z4.js +1 -0
  15. package/dist/client/assets/SettingsView-GkBOKL0V.css +1 -0
  16. package/dist/client/assets/ToolCallDialog-Bf4Xe4gH.js +1 -0
  17. package/dist/client/assets/ToolsView-DFpha1z0.js +1 -0
  18. package/dist/client/assets/_baseClone-Bp9Rjwd7.js +1 -0
  19. package/dist/client/assets/el-form-item-B4LbJ6OO.css +1 -0
  20. package/dist/client/assets/el-form-item-DdSUWYsl.js +12 -0
  21. package/dist/client/assets/el-input-99gMrutP.js +1 -0
  22. package/dist/client/assets/el-input-BH4BZKnG.css +1 -0
  23. package/dist/client/assets/{el-loading-Csv24uBk.js → el-loading-CIQ5pD5u.js} +1 -1
  24. package/dist/client/assets/el-overlay-BVM6msGX.js +1 -0
  25. package/dist/client/assets/{el-select-C0U_l4IZ.css → el-overlay-CBvdpA69.css} +1 -1
  26. package/dist/client/assets/{ResourceDetailView-BdOaL_-o.css → el-radio-group-B0bauIRR.css} +1 -1
  27. package/dist/client/assets/el-radio-group-DhXWy7ry.js +1 -0
  28. package/dist/client/assets/el-skeleton-item-BLY1jEuR.css +1 -0
  29. package/dist/client/assets/el-skeleton-item-DJz-Us12.js +1 -0
  30. package/dist/client/assets/el-switch-BBrS-_6y.css +1 -0
  31. package/dist/client/assets/el-switch-Bu8AQ5uM.js +1 -0
  32. package/dist/client/assets/el-tab-pane-BnGMaV56.js +1 -0
  33. package/dist/client/assets/el-table-column-BMWOaLS_.js +1 -0
  34. package/dist/client/assets/el-table-column-BdvRS9Y2.css +1 -0
  35. package/dist/client/assets/index-C2V-ZGji.js +1 -0
  36. package/dist/client/assets/{index-BsDWtoIl.css → index-DpH6ZSbs.css} +1 -1
  37. package/dist/client/assets/index-vhkqgpmN.js +2 -0
  38. package/dist/client/assets/omit-CqPQN3XP.js +1 -0
  39. package/dist/client/assets/{raf-DDfJOMYh.js → raf-C2wXzaVU.js} +1 -1
  40. package/dist/client/assets/{vue-vendor-6ny5zj9i.js → vue-vendor-BLHLXXJK.js} +1 -1
  41. package/dist/client/index.html +3 -3
  42. package/dist/server/shared/models/resource.model.d.ts +2 -1
  43. package/dist/server/shared/models/resource.model.d.ts.map +1 -1
  44. package/dist/server/shared/models/server.model.d.ts +363 -5
  45. package/dist/server/shared/models/server.model.d.ts.map +1 -1
  46. package/dist/server/shared/models/server.model.js +220 -1
  47. package/dist/server/shared/models/session.model.d.ts +2 -56
  48. package/dist/server/shared/models/session.model.d.ts.map +1 -1
  49. package/dist/server/shared/models/session.model.js +2 -55
  50. package/dist/server/shared/models/tool.model.d.ts +4 -2
  51. package/dist/server/shared/models/tool.model.d.ts.map +1 -1
  52. package/dist/server/shared/types/client.types.d.ts +4 -32
  53. package/dist/server/shared/types/client.types.d.ts.map +1 -1
  54. package/dist/server/shared/types/client.types.js +3 -2
  55. package/dist/server/shared/types/index.d.ts +3 -3
  56. package/dist/server/shared/types/index.d.ts.map +1 -1
  57. package/dist/server/shared/types/index.js +3 -3
  58. package/dist/server/shared/types/session-context.types.d.ts +35 -0
  59. package/dist/server/shared/types/session-context.types.d.ts.map +1 -0
  60. package/dist/server/shared/types/session-context.types.js +5 -0
  61. package/dist/server/shared/types/websocket.types.d.ts +17 -10
  62. package/dist/server/shared/types/websocket.types.d.ts.map +1 -1
  63. package/dist/server/src/api/mcp/debug-response-wrapper.d.ts.map +1 -1
  64. package/dist/server/src/api/mcp/debug-response-wrapper.js +26 -1
  65. package/dist/server/src/api/mcp/gateway.d.ts +1 -3
  66. package/dist/server/src/api/mcp/gateway.d.ts.map +1 -1
  67. package/dist/server/src/api/mcp/gateway.js +34 -61
  68. package/dist/server/src/api/mcp/session-context-extractor.d.ts +5 -5
  69. package/dist/server/src/api/mcp/session-context-extractor.d.ts.map +1 -1
  70. package/dist/server/src/api/mcp/session-context-extractor.js +15 -39
  71. package/dist/server/src/api/web/clients.js +2 -2
  72. package/dist/server/src/api/web/hub-tools.d.ts +2 -2
  73. package/dist/server/src/api/web/hub-tools.d.ts.map +1 -1
  74. package/dist/server/src/api/web/hub-tools.js +3 -54
  75. package/dist/server/src/api/web/mcp-status.d.ts +1 -1
  76. package/dist/server/src/api/web/mcp-status.d.ts.map +1 -1
  77. package/dist/server/src/api/web/mcp-status.js +71 -30
  78. package/dist/server/src/api/web/resources.d.ts.map +1 -1
  79. package/dist/server/src/api/web/resources.js +28 -22
  80. package/dist/server/src/api/web/search.d.ts +2 -16
  81. package/dist/server/src/api/web/search.d.ts.map +1 -1
  82. package/dist/server/src/api/web/search.js +24 -45
  83. package/dist/server/src/api/web/servers.d.ts +3 -3
  84. package/dist/server/src/api/web/servers.d.ts.map +1 -1
  85. package/dist/server/src/api/web/servers.js +70 -25
  86. package/dist/server/src/api/web/sessions.js +1 -1
  87. package/dist/server/src/api/ws/ws-handler.d.ts.map +1 -1
  88. package/dist/server/src/api/ws/ws-handler.js +4 -2
  89. package/dist/server/src/app.d.ts.map +1 -1
  90. package/dist/server/src/app.js +0 -4
  91. package/dist/server/src/cli/commands/list.js +2 -2
  92. package/dist/server/src/cli/commands/status.d.ts.map +1 -1
  93. package/dist/server/src/cli/commands/status.js +41 -30
  94. package/dist/server/src/cli/index.d.ts.map +1 -1
  95. package/dist/server/src/cli/index.js +2 -1
  96. package/dist/server/src/cli/server.d.ts +11 -2
  97. package/dist/server/src/cli/server.d.ts.map +1 -1
  98. package/dist/server/src/config/config-change-logger.d.ts +22 -0
  99. package/dist/server/src/config/config-change-logger.d.ts.map +1 -1
  100. package/dist/server/src/config/config-change-logger.js +135 -11
  101. package/dist/server/src/config/config-loader.d.ts +6 -5
  102. package/dist/server/src/config/config-loader.d.ts.map +1 -1
  103. package/dist/server/src/config/config-loader.js +54 -16
  104. package/dist/server/src/config/config-manager.d.ts +51 -43
  105. package/dist/server/src/config/config-manager.d.ts.map +1 -1
  106. package/dist/server/src/config/config-manager.js +84 -66
  107. package/dist/server/src/config/config-migrator.d.ts +82 -0
  108. package/dist/server/src/config/config-migrator.d.ts.map +1 -0
  109. package/dist/server/src/config/config-migrator.js +348 -0
  110. package/dist/server/src/config/config-saver.d.ts +2 -0
  111. package/dist/server/src/config/config-saver.d.ts.map +1 -1
  112. package/dist/server/src/config/config-saver.js +8 -2
  113. package/dist/server/src/config/config.schema.d.ts +10 -102
  114. package/dist/server/src/config/config.schema.d.ts.map +1 -1
  115. package/dist/server/src/config/config.schema.js +15 -98
  116. package/dist/server/src/config/path-validator.d.ts +27 -0
  117. package/dist/server/src/config/path-validator.d.ts.map +1 -0
  118. package/dist/server/src/config/path-validator.js +53 -0
  119. package/dist/server/src/config/server-config-manager.d.ts +37 -31
  120. package/dist/server/src/config/server-config-manager.d.ts.map +1 -1
  121. package/dist/server/src/config/server-config-manager.js +222 -66
  122. package/dist/server/src/config/type-converter.d.ts.map +1 -1
  123. package/dist/server/src/config/type-converter.js +3 -2
  124. package/dist/server/src/index.js +1 -1
  125. package/dist/server/src/models/event.model.d.ts +17 -10
  126. package/dist/server/src/models/event.model.d.ts.map +1 -1
  127. package/dist/server/src/models/server.model.d.ts +17 -3
  128. package/dist/server/src/models/server.model.d.ts.map +1 -1
  129. package/dist/server/src/models/server.model.js +2 -1
  130. package/dist/server/src/models/system-tools.constants.d.ts +10 -27
  131. package/dist/server/src/models/system-tools.constants.d.ts.map +1 -1
  132. package/dist/server/src/models/system-tools.constants.js +4 -8
  133. package/dist/server/src/pid/manager.d.ts.map +1 -1
  134. package/dist/server/src/pid/manager.js +2 -1
  135. package/dist/server/src/server/dev-server.js +34 -20
  136. package/dist/server/src/server/runner.d.ts.map +1 -1
  137. package/dist/server/src/server/runner.js +41 -26
  138. package/dist/server/src/services/client-tracker.service.d.ts +3 -128
  139. package/dist/server/src/services/client-tracker.service.d.ts.map +1 -1
  140. package/dist/server/src/services/client-tracker.service.js +4 -200
  141. package/dist/server/src/services/connection/connection-manager.d.ts +85 -103
  142. package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -1
  143. package/dist/server/src/services/connection/connection-manager.js +286 -241
  144. package/dist/server/src/services/connection/tool-cache.d.ts +27 -25
  145. package/dist/server/src/services/connection/tool-cache.d.ts.map +1 -1
  146. package/dist/server/src/services/connection/tool-cache.js +50 -55
  147. package/dist/server/src/services/gateway/gateway.service.d.ts +2 -0
  148. package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -1
  149. package/dist/server/src/services/gateway/gateway.service.js +15 -19
  150. package/dist/server/src/services/gateway/global-transport.d.ts +10 -0
  151. package/dist/server/src/services/gateway/global-transport.d.ts.map +1 -0
  152. package/dist/server/src/services/gateway/global-transport.js +42 -0
  153. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts.map +1 -1
  154. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.js +67 -65
  155. package/dist/server/src/services/gateway/request-handlers/index.d.ts +1 -1
  156. package/dist/server/src/services/gateway/request-handlers/index.d.ts.map +1 -1
  157. package/dist/server/src/services/gateway/request-handlers/index.js +1 -1
  158. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts +1 -4
  159. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -1
  160. package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +16 -55
  161. package/dist/server/src/services/gateway/request-handlers/initialize.constants.d.ts +35 -0
  162. package/dist/server/src/services/gateway/request-handlers/initialize.constants.d.ts.map +1 -0
  163. package/dist/server/src/services/gateway/request-handlers/initialize.constants.js +44 -0
  164. package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts.map +1 -1
  165. package/dist/server/src/services/gateway/request-handlers/resources-handler.js +5 -4
  166. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts.map +1 -1
  167. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.js +32 -77
  168. package/dist/server/src/services/gateway/request-handlers/tools-handler.d.ts.map +1 -1
  169. package/dist/server/src/services/gateway/request-handlers/tools-handler.js +4 -3
  170. package/dist/server/src/services/gateway/tool-list-generator.d.ts.map +1 -1
  171. package/dist/server/src/services/gateway/tool-list-generator.js +37 -16
  172. package/dist/server/src/services/gateway/types.d.ts +2 -1
  173. package/dist/server/src/services/gateway/types.d.ts.map +1 -1
  174. package/dist/server/src/services/hub-manager.service.d.ts +32 -238
  175. package/dist/server/src/services/hub-manager.service.d.ts.map +1 -1
  176. package/dist/server/src/services/hub-manager.service.js +89 -267
  177. package/dist/server/src/services/hub-tools/index.d.ts +1 -3
  178. package/dist/server/src/services/hub-tools/index.d.ts.map +1 -1
  179. package/dist/server/src/services/hub-tools/index.js +1 -2
  180. package/dist/server/src/services/hub-tools/instance-matcher.d.ts +62 -0
  181. package/dist/server/src/services/hub-tools/instance-matcher.d.ts.map +1 -0
  182. package/dist/server/src/services/hub-tools/instance-matcher.js +132 -0
  183. package/dist/server/src/services/hub-tools/instance-selector.d.ts +29 -0
  184. package/dist/server/src/services/hub-tools/instance-selector.d.ts.map +1 -0
  185. package/dist/server/src/services/hub-tools/instance-selector.js +103 -0
  186. package/dist/server/src/services/hub-tools/resource-generator.d.ts +25 -5
  187. package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -1
  188. package/dist/server/src/services/hub-tools/resource-generator.js +259 -64
  189. package/dist/server/src/services/hub-tools/server-selector.d.ts +26 -13
  190. package/dist/server/src/services/hub-tools/server-selector.d.ts.map +1 -1
  191. package/dist/server/src/services/hub-tools/server-selector.js +44 -37
  192. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts +1 -4
  193. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts.map +1 -1
  194. package/dist/server/src/services/hub-tools/system-tool-definitions.js +17 -80
  195. package/dist/server/src/services/hub-tools/tool-search.d.ts +7 -7
  196. package/dist/server/src/services/hub-tools/tool-search.d.ts.map +1 -1
  197. package/dist/server/src/services/hub-tools/tool-search.js +10 -4
  198. package/dist/server/src/services/hub-tools/types.d.ts +2 -2
  199. package/dist/server/src/services/hub-tools/types.d.ts.map +1 -1
  200. package/dist/server/src/services/hub-tools.service.d.ts +43 -72
  201. package/dist/server/src/services/hub-tools.service.d.ts.map +1 -1
  202. package/dist/server/src/services/hub-tools.service.js +185 -110
  203. package/dist/server/src/services/search/search-cache.d.ts +0 -19
  204. package/dist/server/src/services/search/search-cache.d.ts.map +1 -1
  205. package/dist/server/src/services/search/search-cache.js +0 -24
  206. package/dist/server/src/services/search/search-core.service.d.ts +5 -5
  207. package/dist/server/src/services/search/search-core.service.js +11 -11
  208. package/dist/server/src/services/session/session-manager.d.ts +12 -256
  209. package/dist/server/src/services/session/session-manager.d.ts.map +1 -1
  210. package/dist/server/src/services/session/session-manager.js +23 -583
  211. package/dist/server/src/services/session-tracker.service.d.ts +124 -0
  212. package/dist/server/src/services/session-tracker.service.d.ts.map +1 -0
  213. package/dist/server/src/services/session-tracker.service.js +176 -0
  214. package/dist/server/src/services/system-tool-handler.d.ts.map +1 -1
  215. package/dist/server/src/services/system-tool-handler.js +7 -17
  216. package/dist/server/src/utils/composite-key.d.ts +29 -0
  217. package/dist/server/src/utils/composite-key.d.ts.map +1 -0
  218. package/dist/server/src/utils/composite-key.js +39 -0
  219. package/dist/server/src/utils/error-handler.d.ts.map +1 -1
  220. package/dist/server/src/utils/error-handler.js +3 -2
  221. package/dist/server/src/utils/index.d.ts +2 -0
  222. package/dist/server/src/utils/index.d.ts.map +1 -1
  223. package/dist/server/src/utils/index.js +2 -0
  224. package/dist/server/src/utils/instance-id.d.ts +22 -0
  225. package/dist/server/src/utils/instance-id.d.ts.map +1 -0
  226. package/dist/server/src/utils/instance-id.js +59 -0
  227. package/dist/server/src/utils/json-utils.d.ts +4 -4
  228. package/dist/server/src/utils/json-utils.d.ts.map +1 -1
  229. package/dist/server/src/utils/json-utils.js +10 -4
  230. package/dist/server/src/utils/logger/dev-logger.d.ts +2 -1
  231. package/dist/server/src/utils/logger/dev-logger.d.ts.map +1 -1
  232. package/dist/server/src/utils/logger/log-colors.d.ts +1 -0
  233. package/dist/server/src/utils/logger/log-colors.d.ts.map +1 -1
  234. package/dist/server/src/utils/logger/log-colors.js +2 -1
  235. package/dist/server/src/utils/logger/log-context.d.ts +1 -0
  236. package/dist/server/src/utils/logger/log-context.d.ts.map +1 -1
  237. package/dist/server/src/utils/logger/log-formatter.d.ts +28 -0
  238. package/dist/server/src/utils/logger/log-formatter.d.ts.map +1 -1
  239. package/dist/server/src/utils/logger/log-formatter.js +287 -5
  240. package/dist/server/src/utils/logger/log-modules.d.ts +15 -12
  241. package/dist/server/src/utils/logger/log-modules.d.ts.map +1 -1
  242. package/dist/server/src/utils/logger/log-modules.js +8 -8
  243. package/dist/server/src/utils/logger/log-output.d.ts +2 -2
  244. package/dist/server/src/utils/logger/log-output.d.ts.map +1 -1
  245. package/dist/server/src/utils/logger/log-output.js +27 -6
  246. package/dist/server/src/utils/logger/logger.d.ts +13 -0
  247. package/dist/server/src/utils/logger/logger.d.ts.map +1 -1
  248. package/dist/server/src/utils/logger/logger.js +42 -7
  249. package/dist/server/src/utils/parameter-validator.d.ts +10 -0
  250. package/dist/server/src/utils/parameter-validator.d.ts.map +1 -0
  251. package/dist/server/src/utils/parameter-validator.js +53 -0
  252. package/dist/server/src/utils/process-tree.d.ts +49 -0
  253. package/dist/server/src/utils/process-tree.d.ts.map +1 -0
  254. package/dist/server/src/utils/process-tree.js +285 -0
  255. package/dist/server/src/utils/request-context.d.ts +12 -30
  256. package/dist/server/src/utils/request-context.d.ts.map +1 -1
  257. package/dist/server/src/utils/request-context.js +10 -30
  258. package/dist/server/src/utils/sort-utils.d.ts +40 -0
  259. package/dist/server/src/utils/sort-utils.d.ts.map +1 -0
  260. package/dist/server/src/utils/sort-utils.js +131 -0
  261. package/dist/server/src/utils/tool-args-parser.d.ts +0 -4
  262. package/dist/server/src/utils/tool-args-parser.d.ts.map +1 -1
  263. package/dist/server/src/utils/tool-args-parser.js +0 -7
  264. package/dist/server/src/utils/transports/sse-transport.d.ts +16 -1
  265. package/dist/server/src/utils/transports/sse-transport.d.ts.map +1 -1
  266. package/dist/server/src/utils/transports/sse-transport.js +55 -9
  267. package/dist/server/src/utils/transports/stdio-transport.d.ts +24 -53
  268. package/dist/server/src/utils/transports/stdio-transport.d.ts.map +1 -1
  269. package/dist/server/src/utils/transports/stdio-transport.js +66 -247
  270. package/dist/server/src/utils/transports/streamable-http-transport.d.ts +24 -1
  271. package/dist/server/src/utils/transports/streamable-http-transport.d.ts.map +1 -1
  272. package/dist/server/src/utils/transports/streamable-http-transport.js +68 -8
  273. package/dist/server/src/utils/transports/transport-factory.d.ts +9 -4
  274. package/dist/server/src/utils/transports/transport-factory.d.ts.map +1 -1
  275. package/dist/server/src/utils/transports/transport-factory.js +33 -13
  276. package/dist/server/src/utils/transports/transport.interface.d.ts +6 -0
  277. package/dist/server/src/utils/transports/transport.interface.d.ts.map +1 -1
  278. package/dist/server/src/utils/version.d.ts +11 -0
  279. package/dist/server/src/utils/version.d.ts.map +1 -0
  280. package/dist/server/src/utils/version.js +57 -0
  281. package/dist/server/tests/contract/mcp-protocol/initialize.test.js +24 -24
  282. package/dist/server/tests/contract/mcp-protocol/tools-call.test.js +49 -45
  283. package/dist/server/tests/contract/mcp-protocol/tools-list.test.js +35 -36
  284. package/dist/server/tests/evaluation/evaluation.test.js +10 -9
  285. package/dist/server/tests/integration/api/gateway.test.js +24 -39
  286. package/dist/server/tests/integration/gateway/fault-tolerance.test.js +65 -25
  287. package/dist/server/tests/integration/gateway/mcp-connection.test.js +53 -61
  288. package/dist/server/tests/server.test.js +27 -16
  289. package/dist/server/tests/temp/temp-run-docling.d.ts +2 -0
  290. package/dist/server/tests/temp/temp-run-docling.d.ts.map +1 -0
  291. package/dist/server/tests/temp/temp-run-docling.js +53 -0
  292. package/dist/server/tests/temp/test-stack.d.ts +6 -0
  293. package/dist/server/tests/temp/test-stack.d.ts.map +1 -0
  294. package/dist/server/tests/temp/test-stack.js +40 -0
  295. package/dist/server/tests/types/test-helpers.d.ts +1 -2
  296. package/dist/server/tests/types/test-helpers.d.ts.map +1 -1
  297. package/dist/server/tests/unit/config/config-loader-automatic-migration.test.d.ts +2 -0
  298. package/dist/server/tests/unit/config/config-loader-automatic-migration.test.d.ts.map +1 -0
  299. package/dist/server/tests/unit/config/config-loader-automatic-migration.test.js +199 -0
  300. package/dist/server/tests/unit/config/config-migrator.test.d.ts +2 -0
  301. package/dist/server/tests/unit/config/config-migrator.test.d.ts.map +1 -0
  302. package/dist/server/tests/unit/config/config-migrator.test.js +316 -0
  303. package/dist/server/tests/unit/config/config-saver.test.d.ts +2 -0
  304. package/dist/server/tests/unit/config/config-saver.test.d.ts.map +1 -0
  305. package/dist/server/tests/unit/config/config-saver.test.js +200 -0
  306. package/dist/server/tests/unit/config/config.schema.test.d.ts +2 -0
  307. package/dist/server/tests/unit/config/config.schema.test.d.ts.map +1 -0
  308. package/dist/server/tests/unit/config/config.schema.test.js +347 -0
  309. package/dist/server/tests/unit/server/runner.test.js +86 -62
  310. package/dist/server/tests/unit/services/connection/connection-manager.test.d.ts +2 -0
  311. package/dist/server/tests/unit/services/connection/connection-manager.test.d.ts.map +1 -0
  312. package/dist/server/tests/unit/services/connection/connection-manager.test.js +112 -0
  313. package/dist/server/tests/unit/services/hub-manager-service.test.js +112 -46
  314. package/dist/server/tests/unit/services/hub-manager.test.js +25 -15
  315. package/dist/server/tests/unit/services/hub-tools/instance-selector.test.d.ts +2 -0
  316. package/dist/server/tests/unit/services/hub-tools/instance-selector.test.d.ts.map +1 -0
  317. package/dist/server/tests/unit/services/hub-tools/instance-selector.test.js +195 -0
  318. package/dist/server/tests/unit/services/hub-tools/server-selector.test.d.ts +2 -0
  319. package/dist/server/tests/unit/services/hub-tools/server-selector.test.d.ts.map +1 -0
  320. package/dist/server/tests/unit/services/hub-tools/server-selector.test.js +190 -0
  321. package/dist/server/tests/unit/services/hub-tools.service.test.js +560 -334
  322. package/dist/server/tests/unit/services/instance-matcher.test.d.ts +2 -0
  323. package/dist/server/tests/unit/services/instance-matcher.test.d.ts.map +1 -0
  324. package/dist/server/tests/unit/services/instance-matcher.test.js +256 -0
  325. package/dist/server/tests/unit/services/session-manager.test.js +26 -436
  326. package/dist/server/tests/unit/utils/config.test.js +88 -186
  327. package/dist/server/tests/unit/utils/json-utils.test.js +107 -13
  328. package/dist/server/tests/unit/utils/logger-formatter.test.d.ts +2 -0
  329. package/dist/server/tests/unit/utils/logger-formatter.test.d.ts.map +1 -0
  330. package/dist/server/tests/unit/utils/logger-formatter.test.js +66 -0
  331. package/dist/server/tests/unit/utils/logger.test.js +101 -0
  332. package/dist/server/tests/unit/utils/parameter-validator.test.d.ts +2 -0
  333. package/dist/server/tests/unit/utils/parameter-validator.test.d.ts.map +1 -0
  334. package/dist/server/tests/unit/utils/parameter-validator.test.js +63 -0
  335. package/dist/server/tests/unit/utils/process-tree.test.d.ts +2 -0
  336. package/dist/server/tests/unit/utils/process-tree.test.d.ts.map +1 -0
  337. package/dist/server/tests/unit/utils/process-tree.test.js +129 -0
  338. package/dist/server/tests/unit/utils/request-context.test.js +9 -28
  339. package/dist/server/tests/unit/utils/sort-utils.test.d.ts +2 -0
  340. package/dist/server/tests/unit/utils/sort-utils.test.d.ts.map +1 -0
  341. package/dist/server/tests/unit/utils/sort-utils.test.js +220 -0
  342. package/dist/server/tests/unit/utils/transport-factory.test.d.ts +2 -0
  343. package/dist/server/tests/unit/utils/transport-factory.test.d.ts.map +1 -0
  344. package/dist/server/tests/unit/utils/transport-factory.test.js +55 -0
  345. package/package.json +1 -1
  346. package/dist/client/assets/ResourceDetailView-BQ49hk0c.js +0 -1
  347. package/dist/client/assets/ResourcesView-BYZfWtia.js +0 -1
  348. package/dist/client/assets/ResourcesView-CjMklkyv.css +0 -1
  349. package/dist/client/assets/ServerDashboard-7_8Og9JJ.css +0 -1
  350. package/dist/client/assets/ServerDashboard-DHcxwKeh.js +0 -2
  351. package/dist/client/assets/ServerListView-DralUL71.js +0 -30
  352. package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-BHiTFM7-.js +0 -1
  353. package/dist/client/assets/SessionsView-BCGRTqem.js +0 -1
  354. package/dist/client/assets/SettingsView-BLfxa6PZ.js +0 -1
  355. package/dist/client/assets/ToolCallDialog-DQ0OQ1mD.js +0 -1
  356. package/dist/client/assets/ToolsView-BLB6x3tC.js +0 -1
  357. package/dist/client/assets/_baseClone-Bo5mBgsT.js +0 -1
  358. package/dist/client/assets/el-form-item-BVMLpmVC.css +0 -1
  359. package/dist/client/assets/el-form-item-BmeJKVSi.js +0 -12
  360. package/dist/client/assets/el-input-CeZiq23m.js +0 -1
  361. package/dist/client/assets/el-input-CmuHb8HS.css +0 -1
  362. package/dist/client/assets/el-overlay-B2ZKM6Up.css +0 -1
  363. package/dist/client/assets/el-overlay-iw_hrrlC.js +0 -1
  364. package/dist/client/assets/el-select-B73uRP_Y.js +0 -1
  365. package/dist/client/assets/el-tab-pane-BgOTBn4X.js +0 -1
  366. package/dist/client/assets/el-table-column-Ld4GSD3x.js +0 -1
  367. package/dist/client/assets/el-table-column-T_mV9jNw.css +0 -1
  368. package/dist/client/assets/el-tag-DYmSo8Bx.js +0 -1
  369. package/dist/client/assets/el-tag-DjxZVOpb.css +0 -1
  370. package/dist/client/assets/index-COYaYRbH.js +0 -1
  371. package/dist/client/assets/index-Cfcvxyee.js +0 -2
  372. package/dist/client/assets/index-PhuI36Zi.js +0 -1
  373. package/dist/client/assets/omit-7EL6VJO4.js +0 -1
  374. package/dist/client/assets/vnode-upjuIlvm.js +0 -1
@@ -1,4 +1,4 @@
1
- import { SYSTEM_TOOL_NAMES, LIST_SERVERS_TOOL, FIND_SERVERS_TOOL, LIST_ALL_TOOLS_IN_SERVER_TOOL, FIND_TOOLS_IN_SERVER_TOOL, GET_TOOL_TOOL, CALL_TOOL_TOOL, FIND_TOOLS_TOOL } from '../../models/system-tools.constants.js';
1
+ import { SYSTEM_TOOL_NAMES, LIST_SERVERS_TOOL, LIST_TOOLS_IN_SERVER_TOOL, GET_TOOL_TOOL, CALL_TOOL_TOOL, UPDATE_SERVER_DESCRIPTION_TOOL } from '../../models/system-tools.constants.js';
2
2
  /**
3
3
  * Retrieves the complete list of system tools provided by this service.
4
4
  *
@@ -8,12 +8,9 @@ import { SYSTEM_TOOL_NAMES, LIST_SERVERS_TOOL, FIND_SERVERS_TOOL, LIST_ALL_TOOLS
8
8
  *
9
9
  * The method implements all standard system tools:
10
10
  * - list-servers: List all connected servers
11
- * - find-servers: Find servers matching a pattern
12
- * - list-all-tools-in-server: List tools from a specific server
13
- * - find-tools-in-server: Find tools in a specific server
11
+ * - list-tools-in-server: List tools from a specific server
14
12
  * - get-tool: Get complete tool schema
15
13
  * - call-tool: Call a specific tool from a specific server
16
- * - find-tools: Find tools across all servers
17
14
  *
18
15
  * @returns {Array<{ name: string; description: string; inputSchema: JsonSchema; annotations?: ToolAnnotations }>}
19
16
  * Array of system tool configurations
@@ -46,33 +43,7 @@ export function getSystemTools() {
46
43
  }
47
44
  });
48
45
  break;
49
- case FIND_SERVERS_TOOL:
50
- systemTools.push({
51
- name: toolName,
52
- description: 'Find servers matching a pattern',
53
- inputSchema: {
54
- type: 'object',
55
- properties: {
56
- pattern: { type: 'string', description: 'Regex pattern to search for' },
57
- searchIn: {
58
- type: 'string',
59
- enum: ['name', 'description', 'both'],
60
- default: 'both'
61
- },
62
- caseSensitive: { type: 'boolean', default: false }
63
- },
64
- required: ['pattern']
65
- },
66
- annotations: {
67
- title: 'Find Servers',
68
- readOnlyHint: true,
69
- destructiveHint: false,
70
- idempotentHint: true,
71
- openWorldHint: false
72
- }
73
- });
74
- break;
75
- case LIST_ALL_TOOLS_IN_SERVER_TOOL:
46
+ case LIST_TOOLS_IN_SERVER_TOOL:
76
47
  systemTools.push({
77
48
  name: toolName,
78
49
  description: 'List all tools from a specific server',
@@ -99,40 +70,6 @@ export function getSystemTools() {
99
70
  }
100
71
  });
101
72
  break;
102
- case FIND_TOOLS_IN_SERVER_TOOL:
103
- systemTools.push({
104
- name: toolName,
105
- description: 'Find tools matching a pattern in a specific server',
106
- inputSchema: {
107
- type: 'object',
108
- properties: {
109
- serverName: { type: 'string', description: 'Name of the MCP server' },
110
- pattern: { type: 'string', description: 'Regex pattern to search for' },
111
- searchIn: {
112
- type: 'string',
113
- enum: ['name', 'description', 'both'],
114
- default: 'both'
115
- },
116
- caseSensitive: { type: 'boolean', default: false },
117
- requestOptions: {
118
- type: 'object',
119
- properties: {
120
- sessionId: { type: 'string', description: 'Session ID for instance selection' },
121
- tags: { type: 'object', description: 'Tags for instance selection' }
122
- }
123
- }
124
- },
125
- required: ['serverName', 'pattern']
126
- },
127
- annotations: {
128
- title: 'Find Tools in Server',
129
- readOnlyHint: true,
130
- destructiveHint: false,
131
- idempotentHint: true,
132
- openWorldHint: false
133
- }
134
- });
135
- break;
136
73
  case GET_TOOL_TOOL:
137
74
  systemTools.push({
138
75
  name: toolName,
@@ -164,11 +101,16 @@ export function getSystemTools() {
164
101
  case CALL_TOOL_TOOL:
165
102
  systemTools.push({
166
103
  name: toolName,
167
- description: 'Call a specific tool from a specific server',
104
+ description: 'Call a specific tool from an external MCP server. ' +
105
+ 'System tools (list_servers, list_tools_in_server, get_tool, update_server_description) ' +
106
+ 'must be called directly via tools/call, not through this tool.',
168
107
  inputSchema: {
169
108
  type: 'object',
170
109
  properties: {
171
- serverName: { type: 'string', description: 'Name of the MCP server' },
110
+ serverName: {
111
+ type: 'string',
112
+ description: 'Name of the MCP server (must be an external server, not mcp-hub-lite)'
113
+ },
172
114
  toolName: { type: 'string', description: 'Name of the tool to call' },
173
115
  toolArgs: { type: 'object', description: 'Arguments to pass to the tool' },
174
116
  requestOptions: {
@@ -190,26 +132,21 @@ export function getSystemTools() {
190
132
  }
191
133
  });
192
134
  break;
193
- case FIND_TOOLS_TOOL:
135
+ case UPDATE_SERVER_DESCRIPTION_TOOL:
194
136
  systemTools.push({
195
137
  name: toolName,
196
- description: 'Find tools matching a pattern across all connected servers',
138
+ description: 'Update the description of a specific MCP server',
197
139
  inputSchema: {
198
140
  type: 'object',
199
141
  properties: {
200
- pattern: { type: 'string', description: 'Regex pattern to search for' },
201
- searchIn: {
202
- type: 'string',
203
- enum: ['name', 'description', 'both'],
204
- default: 'both'
205
- },
206
- caseSensitive: { type: 'boolean', default: false }
142
+ serverName: { type: 'string', description: 'Name of the MCP server to update' },
143
+ description: { type: 'string', description: 'New description text for the server' }
207
144
  },
208
- required: ['pattern']
145
+ required: ['serverName', 'description']
209
146
  },
210
147
  annotations: {
211
- title: 'Find Tools',
212
- readOnlyHint: true,
148
+ title: 'Update Server Description',
149
+ readOnlyHint: false,
213
150
  destructiveHint: false,
214
151
  idempotentHint: true,
215
152
  openWorldHint: false
@@ -1,4 +1,4 @@
1
- import type { Tool } from '../../../shared/models/tool.model.js';
1
+ import type { ToolSummary } from '../../../shared/models/tool.model.js';
2
2
  import type { RequestOptions } from './types.js';
3
3
  /**
4
4
  * Search options for server searches.
@@ -42,7 +42,7 @@ export declare function findServers(pattern: string, searchIn?: 'name' | 'descri
42
42
  * @param {'name' | 'description' | 'both'} [searchIn='both'] - Where to perform the search
43
43
  * @param {boolean} [caseSensitive=false] - Whether the search should be case-sensitive
44
44
  * @param {RequestOptions} [requestOptions] - Optional request options for instance selection
45
- * @returns {Promise<{ serverName: string; tools: Tool[] }>} Object containing server name and matching tools
45
+ * @returns {Promise<{ serverName: string; tools: ToolSummary[] }>} Object containing server name and matching tools
46
46
  * @throws {Error} If the specified server is not found or not connected
47
47
  *
48
48
  * @example
@@ -53,7 +53,7 @@ export declare function findServers(pattern: string, searchIn?: 'name' | 'descri
53
53
  */
54
54
  export declare function findToolsInServer(serverName: string, pattern: string, searchIn?: 'name' | 'description' | 'both', caseSensitive?: boolean, requestOptions?: RequestOptions): Promise<{
55
55
  serverName: string;
56
- tools: Tool[];
56
+ tools: ToolSummary[];
57
57
  }>;
58
58
  /**
59
59
  * Finds tools matching a pattern across all connected MCP servers.
@@ -66,8 +66,8 @@ export declare function findToolsInServer(serverName: string, pattern: string, s
66
66
  * @param {string} pattern - Regex pattern to search for in tool names and descriptions
67
67
  * @param {'name' | 'description' | 'both'} [searchIn='both'] - Where to perform the search
68
68
  * @param {boolean} [caseSensitive=false] - Whether the search should be case-sensitive
69
- * @param {() => Promise<Record<string, { tools: Tool[] }>>} listAllToolsFn - Function to list all tools
70
- * @returns {Promise<Record<string, { tools: Tool[] }>>} Object mapping server names to matching tools
69
+ * @param {() => Promise<Record<string, { tools: ToolSummary[] }>>} listAllToolsFn - Function to list all tools
70
+ * @returns {Promise<Record<string, { tools: ToolSummary[] }>>} Object mapping server names to matching tools
71
71
  *
72
72
  * @example
73
73
  * ```typescript
@@ -78,8 +78,8 @@ export declare function findToolsInServer(serverName: string, pattern: string, s
78
78
  * ```
79
79
  */
80
80
  export declare function findTools(pattern: string, searchIn: "name" | "description" | "both" | undefined, caseSensitive: boolean | undefined, listAllToolsFn: () => Promise<Record<string, {
81
- tools: Tool[];
81
+ tools: ToolSummary[];
82
82
  }>>): Promise<Record<string, {
83
- tools: Tool[];
83
+ tools: ToolSummary[];
84
84
  }>>;
85
85
  //# sourceMappingURL=tool-search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-search.d.ts","sourceRoot":"","sources":["../../../../../src/services/hub-tools/tool-search.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,GAAG,aAAa,GAAG,MAAe,EAClD,aAAa,GAAE,OAAe,GAC7B,OAAO,CAAC,MAAM,EAAE,CAAC,CAYnB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,GAAG,aAAa,GAAG,MAAe,EAClD,aAAa,GAAE,OAAe,EAC9B,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC;IACT,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf,CAAC,CAqBD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,YAAS,EAClD,aAAa,EAAE,OAAO,YAAQ,EAC9B,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC,CAAC,GAC/D,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC,CAAC,CAsB5C"}
1
+ {"version":3,"file":"tool-search.d.ts","sourceRoot":"","sources":["../../../../../src/services/hub-tools/tool-search.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,GAAG,aAAa,GAAG,MAAe,EAClD,aAAa,GAAE,OAAe,GAC7B,OAAO,CAAC,MAAM,EAAE,CAAC,CAYnB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,GAAG,aAAa,GAAG,MAAe,EAClD,aAAa,GAAE,OAAe,EAC9B,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC;IACT,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB,CAAC,CA4BD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,YAAS,EAClD,aAAa,EAAE,OAAO,YAAQ,EAC9B,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC,CAAC,GACtE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC,CAAC,CAsBnD"}
@@ -47,7 +47,7 @@ export async function findServers(pattern, searchIn = 'both', caseSensitive = fa
47
47
  * @param {'name' | 'description' | 'both'} [searchIn='both'] - Where to perform the search
48
48
  * @param {boolean} [caseSensitive=false] - Whether the search should be case-sensitive
49
49
  * @param {RequestOptions} [requestOptions] - Optional request options for instance selection
50
- * @returns {Promise<{ serverName: string; tools: Tool[] }>} Object containing server name and matching tools
50
+ * @returns {Promise<{ serverName: string; tools: ToolSummary[] }>} Object containing server name and matching tools
51
51
  * @throws {Error} If the specified server is not found or not connected
52
52
  *
53
53
  * @example
@@ -68,9 +68,15 @@ export async function findToolsInServer(serverName, pattern, searchIn = 'both',
68
68
  const matchDescription = searchIn !== 'name' && tool.description && regex.test(tool.description);
69
69
  return matchName || matchDescription;
70
70
  });
71
+ // Convert to ToolSummary format
72
+ const toolSummaries = matchingTools.map((tool) => ({
73
+ name: tool.name,
74
+ description: tool.description,
75
+ serverName: serverName
76
+ }));
71
77
  return {
72
78
  serverName: serverName,
73
- tools: matchingTools
79
+ tools: toolSummaries
74
80
  };
75
81
  }
76
82
  /**
@@ -84,8 +90,8 @@ export async function findToolsInServer(serverName, pattern, searchIn = 'both',
84
90
  * @param {string} pattern - Regex pattern to search for in tool names and descriptions
85
91
  * @param {'name' | 'description' | 'both'} [searchIn='both'] - Where to perform the search
86
92
  * @param {boolean} [caseSensitive=false] - Whether the search should be case-sensitive
87
- * @param {() => Promise<Record<string, { tools: Tool[] }>>} listAllToolsFn - Function to list all tools
88
- * @returns {Promise<Record<string, { tools: Tool[] }>>} Object mapping server names to matching tools
93
+ * @param {() => Promise<Record<string, { tools: ToolSummary[] }>>} listAllToolsFn - Function to list all tools
94
+ * @returns {Promise<Record<string, { tools: ToolSummary[] }>>} Object mapping server names to matching tools
89
95
  *
90
96
  * @example
91
97
  * ```typescript
@@ -1,4 +1,4 @@
1
- import type { ServerConfig, ServerInstanceConfig } from '../../config/config.schema.js';
1
+ import type { ServerConfig } from '../../config/config.schema.js';
2
2
  /**
3
3
  * Configuration options for server instance selection in multi-instance scenarios.
4
4
  *
@@ -30,7 +30,7 @@ export interface RequestOptions {
30
30
  export type ServerInstanceInfo = {
31
31
  name: string;
32
32
  config: ServerConfig;
33
- instance: ServerInstanceConfig & Record<string, unknown>;
33
+ instance: Record<string, unknown>;
34
34
  };
35
35
  /**
36
36
  * Type guard return type.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/services/hub-tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEnF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAG/B;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1D,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/services/hub-tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAG/B;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CAAC"}
@@ -1,7 +1,7 @@
1
- import type { Tool } from '../../shared/models/tool.model.js';
1
+ import type { Tool, ToolSummary } from '../../shared/models/tool.model.js';
2
2
  import type { Resource } from '../../shared/models/resource.model.js';
3
- import { LIST_SERVERS_TOOL, FIND_SERVERS_TOOL, LIST_ALL_TOOLS_IN_SERVER_TOOL, FIND_TOOLS_IN_SERVER_TOOL, GET_TOOL_TOOL, CALL_TOOL_TOOL, FIND_TOOLS_TOOL } from '../models/system-tools.constants.js';
4
- import type { SystemToolName, ListServersParams, FindServersParams, ListAllToolsInServerParams, FindToolsInServerParams, GetToolParams, CallToolParams, FindToolsParams } from '../models/system-tools.constants.js';
3
+ import { LIST_SERVERS_TOOL, LIST_TOOLS_IN_SERVER_TOOL, GET_TOOL_TOOL, CALL_TOOL_TOOL, UPDATE_SERVER_DESCRIPTION_TOOL } from '../models/system-tools.constants.js';
4
+ import type { SystemToolName, ListServersParams, ListToolsInServerParams, GetToolParams, CallToolParams, UpdateServerDescriptionParams } from '../models/system-tools.constants.js';
5
5
  /**
6
6
  * Central service for managing system tools and MCP server interactions in the MCP Hub Lite gateway.
7
7
  *
@@ -13,7 +13,7 @@ import type { SystemToolName, ListServersParams, FindServersParams, ListAllTools
13
13
  * ## Core Responsibilities
14
14
  *
15
15
  * - **System Tool Management**: Exposes a standardized set of system tools for server discovery and management
16
- * - **Tool Discovery**: Enables searching and listing tools across all connected MCP servers
16
+ * - **Tool Discovery**: Enables listing tools across all connected MCP servers
17
17
  * - **Tool Execution**: Provides safe, monitored execution of tools with comprehensive event tracking
18
18
  * - **Resource Management**: Dynamically generates and serves virtual resources representing server state
19
19
  * - **Instance Selection**: Handles intelligent server instance selection for multi-instance scenarios
@@ -23,12 +23,9 @@ import type { SystemToolName, ListServersParams, FindServersParams, ListAllTools
23
23
  *
24
24
  * The service exposes the following system tools through the `getSystemTools()` method:
25
25
  * - `list-servers`: Retrieve all connected server names
26
- * - `find-servers`: Search servers by pattern matching
27
- * - `list-all-tools-in-server`: List all tools from a specific server
28
- * - `find-tools-in-server`: Search tools within a specific server
26
+ * - `list-tools-in-server`: List all tools from a specific server
29
27
  * - `get-tool`: Retrieve complete schema for a specific tool
30
28
  * - `call-tool`: Execute a tool on a specific server
31
- * - `find-tools`: Search tools across all connected servers
32
29
  *
33
30
  * ## Architecture Integration
34
31
  *
@@ -50,9 +47,6 @@ import type { SystemToolName, ListServersParams, FindServersParams, ListAllTools
50
47
  *
51
48
  * // Call a tool on a specific server
52
49
  * const result = await hubTools.callTool('file-system-server', 'list-files', { directory: '/home' });
53
- *
54
- * // Search for tools across all servers
55
- * const matchingTools = await hubTools.findTools('search');
56
50
  * ```
57
51
  */
58
52
  export declare class HubToolsService {
@@ -73,26 +67,16 @@ export declare class HubToolsService {
73
67
  */
74
68
  getSystemTools(): import("./hub-tools/system-tool-definitions.js").SystemToolDefinition[];
75
69
  /**
76
- * Lists all connected MCP servers by name.
70
+ * Lists all connected MCP servers with their descriptions.
77
71
  *
78
72
  * This method retrieves all configured servers from the hub manager, filters out
79
- * invalid entries using the hasValidId type guard, and returns an array of server names.
80
- * It provides a simple way to discover available servers in the system.
81
- *
82
- * @returns {Promise<string[]>} Array of connected server names
83
- */
84
- listServers(): Promise<string[]>;
85
- /**
86
- * Finds servers matching a specified regex pattern.
87
- *
88
- * This method searches through all configured servers using the provided regex pattern,
89
- * supporting flexible search options including case sensitivity and search scope
90
- * (name, description, or both). It returns an array of matching server names.
73
+ * invalid entries using the hasValidId type guard, and returns a Record mapping
74
+ * server names to their descriptions. If a server doesn't have a description,
75
+ * a default description is provided.
91
76
  *
92
- * @param {FindServersParams} args - Search parameters
93
- * @returns {Promise<string[]>} Array of matching server names
77
+ * @returns {Promise<Record<string, string>>} Record mapping server names to descriptions
94
78
  */
95
- findServers(args: FindServersParams): Promise<string[]>;
79
+ listServers(): Promise<Record<string, string>>;
96
80
  /**
97
81
  * Lists all tools available from a specific MCP server.
98
82
  *
@@ -101,29 +85,13 @@ export declare class HubToolsService {
101
85
  * It uses the selectBestInstance function to resolve server names to instances
102
86
  * and leverages the MCP connection manager for tool retrieval.
103
87
  *
104
- * @param {ListAllToolsInServerParams} args - Server name and request options
105
- * @returns {Promise<{ serverName: string; tools: Tool[] }>} Object containing server name and tools array
106
- * @throws {Error} If the specified server is not found or not connected
107
- */
108
- listAllToolsInServer(args: ListAllToolsInServerParams): Promise<{
109
- serverName: string;
110
- tools: Tool[];
111
- }>;
112
- /**
113
- * Finds tools matching a pattern within a specific MCP server.
114
- *
115
- * This method searches through all tools available from the specified server using
116
- * the provided regex pattern, supporting flexible search options including case
117
- * sensitivity and search scope (name, description, or both). It returns matching
118
- * tools grouped by server name.
119
- *
120
- * @param {FindToolsInServerParams} args - Search parameters
121
- * @returns {Promise<{ serverName: string; tools: Tool[] }>} Object containing server name and matching tools
88
+ * @param {ListToolsInServerParams} args - Server name and request options
89
+ * @returns {Promise<{ serverName: string; tools: ToolSummary[] }>} Object containing server name and tools array
122
90
  * @throws {Error} If the specified server is not found or not connected
123
91
  */
124
- findToolsInServer(args: FindToolsInServerParams): Promise<{
92
+ listToolsInServer(args: ListToolsInServerParams): Promise<{
125
93
  serverName: string;
126
- tools: Tool[];
94
+ tools: ToolSummary[];
127
95
  }>;
128
96
  /**
129
97
  * Retrieves the complete schema for a specific tool from a specific server.
@@ -137,6 +105,22 @@ export declare class HubToolsService {
137
105
  * @throws {Error} If the specified server is not found or not connected
138
106
  */
139
107
  getTool(args: GetToolParams): Promise<Tool | undefined>;
108
+ /**
109
+ * Updates the description of a specific MCP server.
110
+ *
111
+ * This method validates the server exists, updates its description in the configuration,
112
+ * and persists the change to disk. It leverages the existing hubManager.updateServer()
113
+ * method which handles configuration persistence and event publishing.
114
+ *
115
+ * @param {UpdateServerDescriptionParams} args - Server name and new description
116
+ * @returns {Promise<{ success: boolean; serverName: string; description: string }>} Confirmation of successful update
117
+ * @throws {Error} If the server is not found or update fails
118
+ */
119
+ updateServerDescription(args: UpdateServerDescriptionParams): Promise<{
120
+ success: boolean;
121
+ serverName: string;
122
+ description: string;
123
+ }>;
140
124
  /**
141
125
  * Calls a specific system tool directly with type-safe conditional return types.
142
126
  *
@@ -149,15 +133,14 @@ export declare class HubToolsService {
149
133
  * @returns {Promise<ConditionalReturnType>} Tool execution result with accurate type safety matching actual method return types
150
134
  * @throws {Error} If the system tool is not found or execution fails
151
135
  */
152
- callSystemTool<T extends SystemToolName>(toolName: T, toolArgs: T extends typeof LIST_SERVERS_TOOL ? ListServersParams : T extends typeof FIND_SERVERS_TOOL ? FindServersParams : T extends typeof LIST_ALL_TOOLS_IN_SERVER_TOOL ? ListAllToolsInServerParams : T extends typeof FIND_TOOLS_IN_SERVER_TOOL ? FindToolsInServerParams : T extends typeof GET_TOOL_TOOL ? GetToolParams : T extends typeof CALL_TOOL_TOOL ? CallToolParams : T extends typeof FIND_TOOLS_TOOL ? FindToolsParams : never): Promise<T extends typeof LIST_SERVERS_TOOL ? string[] : T extends typeof FIND_SERVERS_TOOL ? string[] : T extends typeof LIST_ALL_TOOLS_IN_SERVER_TOOL ? {
136
+ callSystemTool<T extends SystemToolName>(toolName: T, toolArgs: T extends typeof LIST_SERVERS_TOOL ? ListServersParams : T extends typeof LIST_TOOLS_IN_SERVER_TOOL ? ListToolsInServerParams : T extends typeof GET_TOOL_TOOL ? GetToolParams : T extends typeof CALL_TOOL_TOOL ? CallToolParams : T extends typeof UPDATE_SERVER_DESCRIPTION_TOOL ? UpdateServerDescriptionParams : never): Promise<T extends typeof LIST_SERVERS_TOOL ? Record<string, string> : T extends typeof LIST_TOOLS_IN_SERVER_TOOL ? {
153
137
  serverName: string;
154
- tools: Tool[];
155
- } : T extends typeof FIND_TOOLS_IN_SERVER_TOOL ? {
138
+ tools: ToolSummary[];
139
+ } : T extends typeof GET_TOOL_TOOL ? Tool | undefined : T extends typeof CALL_TOOL_TOOL ? unknown : T extends typeof UPDATE_SERVER_DESCRIPTION_TOOL ? {
140
+ success: boolean;
156
141
  serverName: string;
157
- tools: Tool[];
158
- } : T extends typeof GET_TOOL_TOOL ? Tool | undefined : T extends typeof CALL_TOOL_TOOL ? unknown : T extends typeof FIND_TOOLS_TOOL ? Record<string, {
159
- tools: Tool[];
160
- }> : never>;
142
+ description: string;
143
+ } : never>;
161
144
  /**
162
145
  * Calls a specific tool from a specific MCP server with comprehensive event tracking.
163
146
  *
@@ -178,24 +161,10 @@ export declare class HubToolsService {
178
161
  * the system tools provided by the MCP Hub Lite server itself. It returns a structured
179
162
  * object mapping server names to their respective tool arrays.
180
163
  *
181
- * @returns {Promise<Record<string, { tools: Tool[] }>>} Object mapping server names to tool arrays
164
+ * @returns {Promise<Record<string, { tools: ToolSummary[] }>>} Object mapping server names to tool arrays
182
165
  */
183
166
  listAllTools(): Promise<Record<string, {
184
- tools: Tool[];
185
- }>>;
186
- /**
187
- * Finds tools matching a pattern across all connected MCP servers.
188
- *
189
- * This method searches through all available tools from all connected servers using the
190
- * provided regex pattern, supporting flexible search options including case sensitivity
191
- * and search scope (name, description, or both). It returns matching tools grouped by
192
- * their originating server names.
193
- *
194
- * @param {FindToolsParams} args - Search parameters
195
- * @returns {Promise<Record<string, { tools: Tool[] }>>} Object mapping server names to matching tools
196
- */
197
- findTools(args: FindToolsParams): Promise<Record<string, {
198
- tools: Tool[];
167
+ tools: ToolSummary[];
199
168
  }>>;
200
169
  /**
201
170
  * Lists all dynamically generated Hub resources based on connected MCP servers.
@@ -218,18 +187,20 @@ export declare class HubToolsService {
218
187
  * - Resources list: hub://servers/{serverName}/resources
219
188
  *
220
189
  * @param {string} uri - Resource URI to read (e.g., hub://servers/server-name)
221
- * @returns {Promise<ServerMetadata | Tool[] | Resource[]>} Resource content based on URI type
190
+ * @returns {Promise<ServerMetadata | Tool[] | Resource[] | string>} Resource content based on URI type
222
191
  * @throws {Error} If URI format is invalid, server not found, or resource type unknown
223
192
  */
224
193
  readResource(uri: string): Promise<{
225
194
  name: string;
226
195
  status: unknown;
227
196
  toolsCount: number;
197
+ tools: Record<string, string>;
228
198
  resourcesCount: number;
229
199
  tags: Record<string, string>;
230
200
  lastHeartbeat: number;
231
201
  uptime: number;
232
- } | Tool[] | Resource[]>;
202
+ description: string;
203
+ } | Tool[] | Resource[] | string>;
233
204
  }
234
205
  export declare const hubToolsService: HubToolsService;
235
206
  //# sourceMappingURL=hub-tools.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hub-tools.service.d.ts","sourceRoot":"","sources":["../../../../src/services/hub-tools.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAKjE,OAAO,EAEL,iBAAiB,EACjB,iBAAiB,EACjB,6BAA6B,EAC7B,yBAAyB,EACzB,aAAa,EACb,cAAc,EACd,eAAe,EAEhB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAEV,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,0BAA0B,EAC1B,uBAAuB,EACvB,aAAa,EACb,cAAc,EACd,eAAe,EAChB,MAAM,mCAAmC,CAAC;AAa3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACH,OAAO,CAAC,uBAAuB,CAA2B;;IAyB1D;;;;;;;;;OASG;IACH,cAAc;IAId;;;;;;;;OAQG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKtC;;;;;;;;;OASG;IACG,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAI7D;;;;;;;;;;;OAWG;IACG,oBAAoB,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC;QACpE,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,IAAI,EAAE,CAAC;KACf,CAAC;IAwCF;;;;;;;;;;;OAWG;IACG,iBAAiB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC;QAC9D,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,IAAI,EAAE,CAAC;KACf,CAAC;IAUF;;;;;;;;;;OAUG;IACG,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAW7D;;;;;;;;;;;OAWG;IACG,cAAc,CAAC,CAAC,SAAS,cAAc,EAC3C,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,CAAC,SAAS,OAAO,iBAAiB,GACxC,iBAAiB,GACjB,CAAC,SAAS,OAAO,iBAAiB,GAChC,iBAAiB,GACjB,CAAC,SAAS,OAAO,6BAA6B,GAC5C,0BAA0B,GAC1B,CAAC,SAAS,OAAO,yBAAyB,GACxC,uBAAuB,GACvB,CAAC,SAAS,OAAO,aAAa,GAC5B,aAAa,GACb,CAAC,SAAS,OAAO,cAAc,GAC7B,cAAc,GACd,CAAC,SAAS,OAAO,eAAe,GAC9B,eAAe,GACf,KAAK,GACpB,OAAO,CACR,CAAC,SAAS,OAAO,iBAAiB,GAC9B,MAAM,EAAE,GACR,CAAC,SAAS,OAAO,iBAAiB,GAChC,MAAM,EAAE,GACR,CAAC,SAAS,OAAO,6BAA6B,GAC5C;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,IAAI,EAAE,CAAA;KAAE,GACrC,CAAC,SAAS,OAAO,yBAAyB,GACxC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,IAAI,EAAE,CAAA;KAAE,GACrC,CAAC,SAAS,OAAO,aAAa,GAC5B,IAAI,GAAG,SAAS,GAChB,CAAC,SAAS,OAAO,cAAc,GAC7B,OAAO,GACP,CAAC,SAAS,OAAO,eAAe,GAC9B,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,IAAI,EAAE,CAAA;KAAE,CAAC,GACjC,KAAK,CACtB;IA2ED;;;;;;;;;;;OAWG;IACG,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAgItD;;;;;;;;OAQG;IACG,YAAY,IAAI,OAAO,CAC3B,MAAM,CACJ,MAAM,EACN;QACE,KAAK,EAAE,IAAI,EAAE,CAAC;KACf,CACF,CACF;IAiCD;;;;;;;;;;OAUG;IACG,SAAS,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAC7C,MAAM,CACJ,MAAM,EACN;QACE,KAAK,EAAE,IAAI,EAAE,CAAC;KACf,CACF,CACF;IAMD;;;;;;;;OAQG;IACG,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAU1C;;;;;;;;;;;;;OAaG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CACpC;QACE,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,OAAO,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;KAChB,GACD,IAAI,EAAE,GACN,QAAQ,EAAE,CACb;CAcF;AAED,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
1
+ {"version":3,"file":"hub-tools.service.d.ts","sourceRoot":"","sources":["../../../../src/services/hub-tools.service.ts"],"names":[],"mappings":"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"}