@loop_ouroboros/mcp-hub-lite 1.0.2 → 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 (333) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/client/assets/{HomeView-7rMg9C6t.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-5q1b0P3O.js → _baseClone-Bp9Rjwd7.js} +1 -1
  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-H85n3BUC.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-DPsOVNIJ.js → omit-CqPQN3XP.js} +1 -1
  39. package/dist/client/assets/{raf-DY5mgbuB.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 +362 -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 +1 -57
  48. package/dist/server/shared/models/session.model.d.ts.map +1 -1
  49. package/dist/server/shared/models/session.model.js +1 -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/session-context.types.d.ts +0 -2
  53. package/dist/server/shared/types/session-context.types.d.ts.map +1 -1
  54. package/dist/server/shared/types/websocket.types.d.ts +17 -10
  55. package/dist/server/shared/types/websocket.types.d.ts.map +1 -1
  56. package/dist/server/src/api/mcp/gateway.d.ts +1 -3
  57. package/dist/server/src/api/mcp/gateway.d.ts.map +1 -1
  58. package/dist/server/src/api/mcp/gateway.js +19 -50
  59. package/dist/server/src/api/mcp/session-context-extractor.d.ts.map +1 -1
  60. package/dist/server/src/api/mcp/session-context-extractor.js +5 -14
  61. package/dist/server/src/api/web/hub-tools.d.ts +2 -2
  62. package/dist/server/src/api/web/hub-tools.d.ts.map +1 -1
  63. package/dist/server/src/api/web/hub-tools.js +3 -54
  64. package/dist/server/src/api/web/mcp-status.d.ts +1 -1
  65. package/dist/server/src/api/web/mcp-status.d.ts.map +1 -1
  66. package/dist/server/src/api/web/mcp-status.js +71 -30
  67. package/dist/server/src/api/web/resources.d.ts.map +1 -1
  68. package/dist/server/src/api/web/resources.js +28 -22
  69. package/dist/server/src/api/web/search.d.ts +2 -16
  70. package/dist/server/src/api/web/search.d.ts.map +1 -1
  71. package/dist/server/src/api/web/search.js +24 -45
  72. package/dist/server/src/api/web/servers.d.ts +3 -3
  73. package/dist/server/src/api/web/servers.d.ts.map +1 -1
  74. package/dist/server/src/api/web/servers.js +70 -25
  75. package/dist/server/src/api/ws/ws-handler.d.ts.map +1 -1
  76. package/dist/server/src/api/ws/ws-handler.js +4 -2
  77. package/dist/server/src/app.d.ts.map +1 -1
  78. package/dist/server/src/app.js +0 -2
  79. package/dist/server/src/cli/commands/list.js +2 -2
  80. package/dist/server/src/cli/commands/status.d.ts.map +1 -1
  81. package/dist/server/src/cli/commands/status.js +41 -30
  82. package/dist/server/src/cli/index.d.ts.map +1 -1
  83. package/dist/server/src/cli/index.js +2 -1
  84. package/dist/server/src/cli/server.d.ts +11 -2
  85. package/dist/server/src/cli/server.d.ts.map +1 -1
  86. package/dist/server/src/config/config-change-logger.d.ts +22 -0
  87. package/dist/server/src/config/config-change-logger.d.ts.map +1 -1
  88. package/dist/server/src/config/config-change-logger.js +135 -11
  89. package/dist/server/src/config/config-loader.d.ts +6 -5
  90. package/dist/server/src/config/config-loader.d.ts.map +1 -1
  91. package/dist/server/src/config/config-loader.js +54 -16
  92. package/dist/server/src/config/config-manager.d.ts +51 -43
  93. package/dist/server/src/config/config-manager.d.ts.map +1 -1
  94. package/dist/server/src/config/config-manager.js +84 -66
  95. package/dist/server/src/config/config-migrator.d.ts +82 -0
  96. package/dist/server/src/config/config-migrator.d.ts.map +1 -0
  97. package/dist/server/src/config/config-migrator.js +348 -0
  98. package/dist/server/src/config/config-saver.d.ts +2 -0
  99. package/dist/server/src/config/config-saver.d.ts.map +1 -1
  100. package/dist/server/src/config/config-saver.js +8 -2
  101. package/dist/server/src/config/config.schema.d.ts +10 -104
  102. package/dist/server/src/config/config.schema.d.ts.map +1 -1
  103. package/dist/server/src/config/config.schema.js +15 -99
  104. package/dist/server/src/config/path-validator.d.ts +27 -0
  105. package/dist/server/src/config/path-validator.d.ts.map +1 -0
  106. package/dist/server/src/config/path-validator.js +53 -0
  107. package/dist/server/src/config/server-config-manager.d.ts +37 -31
  108. package/dist/server/src/config/server-config-manager.d.ts.map +1 -1
  109. package/dist/server/src/config/server-config-manager.js +222 -66
  110. package/dist/server/src/config/type-converter.d.ts.map +1 -1
  111. package/dist/server/src/config/type-converter.js +3 -2
  112. package/dist/server/src/models/event.model.d.ts +17 -10
  113. package/dist/server/src/models/event.model.d.ts.map +1 -1
  114. package/dist/server/src/models/server.model.d.ts +17 -3
  115. package/dist/server/src/models/server.model.d.ts.map +1 -1
  116. package/dist/server/src/models/server.model.js +2 -1
  117. package/dist/server/src/models/system-tools.constants.d.ts +10 -27
  118. package/dist/server/src/models/system-tools.constants.d.ts.map +1 -1
  119. package/dist/server/src/models/system-tools.constants.js +4 -8
  120. package/dist/server/src/pid/manager.d.ts.map +1 -1
  121. package/dist/server/src/pid/manager.js +2 -1
  122. package/dist/server/src/server/dev-server.js +34 -20
  123. package/dist/server/src/server/runner.d.ts.map +1 -1
  124. package/dist/server/src/server/runner.js +41 -26
  125. package/dist/server/src/services/connection/connection-manager.d.ts +85 -103
  126. package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -1
  127. package/dist/server/src/services/connection/connection-manager.js +286 -241
  128. package/dist/server/src/services/connection/tool-cache.d.ts +27 -25
  129. package/dist/server/src/services/connection/tool-cache.d.ts.map +1 -1
  130. package/dist/server/src/services/connection/tool-cache.js +50 -55
  131. package/dist/server/src/services/gateway/gateway.service.d.ts +2 -0
  132. package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -1
  133. package/dist/server/src/services/gateway/gateway.service.js +15 -19
  134. package/dist/server/src/services/gateway/global-transport.d.ts +10 -0
  135. package/dist/server/src/services/gateway/global-transport.d.ts.map +1 -0
  136. package/dist/server/src/services/gateway/global-transport.js +42 -0
  137. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts.map +1 -1
  138. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.js +67 -65
  139. package/dist/server/src/services/gateway/request-handlers/index.d.ts +1 -1
  140. package/dist/server/src/services/gateway/request-handlers/index.d.ts.map +1 -1
  141. package/dist/server/src/services/gateway/request-handlers/index.js +1 -1
  142. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts +1 -4
  143. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -1
  144. package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +10 -81
  145. package/dist/server/src/services/gateway/request-handlers/initialize.constants.d.ts +35 -0
  146. package/dist/server/src/services/gateway/request-handlers/initialize.constants.d.ts.map +1 -0
  147. package/dist/server/src/services/gateway/request-handlers/initialize.constants.js +44 -0
  148. package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts.map +1 -1
  149. package/dist/server/src/services/gateway/request-handlers/resources-handler.js +5 -4
  150. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts.map +1 -1
  151. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.js +32 -77
  152. package/dist/server/src/services/gateway/request-handlers/tools-handler.d.ts.map +1 -1
  153. package/dist/server/src/services/gateway/request-handlers/tools-handler.js +4 -3
  154. package/dist/server/src/services/gateway/tool-list-generator.d.ts.map +1 -1
  155. package/dist/server/src/services/gateway/tool-list-generator.js +37 -16
  156. package/dist/server/src/services/gateway/types.d.ts +2 -1
  157. package/dist/server/src/services/gateway/types.d.ts.map +1 -1
  158. package/dist/server/src/services/hub-manager.service.d.ts +32 -238
  159. package/dist/server/src/services/hub-manager.service.d.ts.map +1 -1
  160. package/dist/server/src/services/hub-manager.service.js +89 -267
  161. package/dist/server/src/services/hub-tools/index.d.ts +1 -3
  162. package/dist/server/src/services/hub-tools/index.d.ts.map +1 -1
  163. package/dist/server/src/services/hub-tools/index.js +1 -2
  164. package/dist/server/src/services/hub-tools/instance-matcher.d.ts +62 -0
  165. package/dist/server/src/services/hub-tools/instance-matcher.d.ts.map +1 -0
  166. package/dist/server/src/services/hub-tools/instance-matcher.js +132 -0
  167. package/dist/server/src/services/hub-tools/instance-selector.d.ts +29 -0
  168. package/dist/server/src/services/hub-tools/instance-selector.d.ts.map +1 -0
  169. package/dist/server/src/services/hub-tools/instance-selector.js +103 -0
  170. package/dist/server/src/services/hub-tools/resource-generator.d.ts +24 -1
  171. package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -1
  172. package/dist/server/src/services/hub-tools/resource-generator.js +259 -39
  173. package/dist/server/src/services/hub-tools/server-selector.d.ts +26 -13
  174. package/dist/server/src/services/hub-tools/server-selector.d.ts.map +1 -1
  175. package/dist/server/src/services/hub-tools/server-selector.js +44 -37
  176. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts +1 -4
  177. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts.map +1 -1
  178. package/dist/server/src/services/hub-tools/system-tool-definitions.js +17 -80
  179. package/dist/server/src/services/hub-tools/tool-search.d.ts +7 -7
  180. package/dist/server/src/services/hub-tools/tool-search.d.ts.map +1 -1
  181. package/dist/server/src/services/hub-tools/tool-search.js +10 -4
  182. package/dist/server/src/services/hub-tools/types.d.ts +2 -2
  183. package/dist/server/src/services/hub-tools/types.d.ts.map +1 -1
  184. package/dist/server/src/services/hub-tools.service.d.ts +43 -72
  185. package/dist/server/src/services/hub-tools.service.d.ts.map +1 -1
  186. package/dist/server/src/services/hub-tools.service.js +185 -110
  187. package/dist/server/src/services/search/search-core.service.d.ts +5 -5
  188. package/dist/server/src/services/search/search-core.service.js +11 -11
  189. package/dist/server/src/services/session/session-manager.d.ts +12 -256
  190. package/dist/server/src/services/session/session-manager.d.ts.map +1 -1
  191. package/dist/server/src/services/session/session-manager.js +23 -585
  192. package/dist/server/src/services/session-tracker.service.d.ts +2 -10
  193. package/dist/server/src/services/session-tracker.service.d.ts.map +1 -1
  194. package/dist/server/src/services/session-tracker.service.js +2 -53
  195. package/dist/server/src/services/system-tool-handler.d.ts.map +1 -1
  196. package/dist/server/src/services/system-tool-handler.js +7 -17
  197. package/dist/server/src/utils/composite-key.d.ts +29 -0
  198. package/dist/server/src/utils/composite-key.d.ts.map +1 -0
  199. package/dist/server/src/utils/composite-key.js +39 -0
  200. package/dist/server/src/utils/error-handler.d.ts.map +1 -1
  201. package/dist/server/src/utils/error-handler.js +3 -2
  202. package/dist/server/src/utils/index.d.ts +2 -0
  203. package/dist/server/src/utils/index.d.ts.map +1 -1
  204. package/dist/server/src/utils/index.js +2 -0
  205. package/dist/server/src/utils/instance-id.d.ts +22 -0
  206. package/dist/server/src/utils/instance-id.d.ts.map +1 -0
  207. package/dist/server/src/utils/instance-id.js +59 -0
  208. package/dist/server/src/utils/json-utils.d.ts +4 -4
  209. package/dist/server/src/utils/json-utils.d.ts.map +1 -1
  210. package/dist/server/src/utils/json-utils.js +4 -4
  211. package/dist/server/src/utils/logger/dev-logger.d.ts +2 -1
  212. package/dist/server/src/utils/logger/dev-logger.d.ts.map +1 -1
  213. package/dist/server/src/utils/logger/log-formatter.d.ts.map +1 -1
  214. package/dist/server/src/utils/logger/log-formatter.js +82 -5
  215. package/dist/server/src/utils/logger/log-modules.d.ts +15 -9
  216. package/dist/server/src/utils/logger/log-modules.d.ts.map +1 -1
  217. package/dist/server/src/utils/logger/log-modules.js +8 -6
  218. package/dist/server/src/utils/parameter-validator.d.ts +10 -0
  219. package/dist/server/src/utils/parameter-validator.d.ts.map +1 -0
  220. package/dist/server/src/utils/parameter-validator.js +53 -0
  221. package/dist/server/src/utils/process-tree.d.ts +49 -0
  222. package/dist/server/src/utils/process-tree.d.ts.map +1 -0
  223. package/dist/server/src/utils/process-tree.js +285 -0
  224. package/dist/server/src/utils/request-context.d.ts +0 -18
  225. package/dist/server/src/utils/request-context.d.ts.map +1 -1
  226. package/dist/server/src/utils/request-context.js +0 -20
  227. package/dist/server/src/utils/sort-utils.d.ts +40 -0
  228. package/dist/server/src/utils/sort-utils.d.ts.map +1 -0
  229. package/dist/server/src/utils/sort-utils.js +131 -0
  230. package/dist/server/src/utils/transports/sse-transport.d.ts +16 -1
  231. package/dist/server/src/utils/transports/sse-transport.d.ts.map +1 -1
  232. package/dist/server/src/utils/transports/sse-transport.js +55 -9
  233. package/dist/server/src/utils/transports/stdio-transport.d.ts +24 -53
  234. package/dist/server/src/utils/transports/stdio-transport.d.ts.map +1 -1
  235. package/dist/server/src/utils/transports/stdio-transport.js +66 -247
  236. package/dist/server/src/utils/transports/streamable-http-transport.d.ts +24 -1
  237. package/dist/server/src/utils/transports/streamable-http-transport.d.ts.map +1 -1
  238. package/dist/server/src/utils/transports/streamable-http-transport.js +68 -8
  239. package/dist/server/src/utils/transports/transport-factory.d.ts +9 -4
  240. package/dist/server/src/utils/transports/transport-factory.d.ts.map +1 -1
  241. package/dist/server/src/utils/transports/transport-factory.js +31 -11
  242. package/dist/server/src/utils/transports/transport.interface.d.ts +6 -0
  243. package/dist/server/src/utils/transports/transport.interface.d.ts.map +1 -1
  244. package/dist/server/src/utils/version.d.ts +11 -0
  245. package/dist/server/src/utils/version.d.ts.map +1 -0
  246. package/dist/server/src/utils/version.js +57 -0
  247. package/dist/server/tests/contract/mcp-protocol/initialize.test.js +24 -24
  248. package/dist/server/tests/contract/mcp-protocol/tools-call.test.js +49 -45
  249. package/dist/server/tests/contract/mcp-protocol/tools-list.test.js +35 -36
  250. package/dist/server/tests/evaluation/evaluation.test.js +10 -9
  251. package/dist/server/tests/integration/api/gateway.test.js +2 -2
  252. package/dist/server/tests/integration/gateway/fault-tolerance.test.js +65 -25
  253. package/dist/server/tests/integration/gateway/mcp-connection.test.js +53 -61
  254. package/dist/server/tests/server.test.js +27 -16
  255. package/dist/server/tests/temp/temp-run-docling.d.ts +2 -0
  256. package/dist/server/tests/temp/temp-run-docling.d.ts.map +1 -0
  257. package/dist/server/tests/temp/temp-run-docling.js +53 -0
  258. package/dist/server/tests/types/test-helpers.d.ts +1 -2
  259. package/dist/server/tests/types/test-helpers.d.ts.map +1 -1
  260. package/dist/server/tests/unit/config/config-loader-automatic-migration.test.d.ts +2 -0
  261. package/dist/server/tests/unit/config/config-loader-automatic-migration.test.d.ts.map +1 -0
  262. package/dist/server/tests/unit/config/config-loader-automatic-migration.test.js +199 -0
  263. package/dist/server/tests/unit/config/config-migrator.test.d.ts +2 -0
  264. package/dist/server/tests/unit/config/config-migrator.test.d.ts.map +1 -0
  265. package/dist/server/tests/unit/config/config-migrator.test.js +316 -0
  266. package/dist/server/tests/unit/config/config-saver.test.d.ts +2 -0
  267. package/dist/server/tests/unit/config/config-saver.test.d.ts.map +1 -0
  268. package/dist/server/tests/unit/config/config-saver.test.js +200 -0
  269. package/dist/server/tests/unit/config/config.schema.test.d.ts +2 -0
  270. package/dist/server/tests/unit/config/config.schema.test.d.ts.map +1 -0
  271. package/dist/server/tests/unit/config/config.schema.test.js +347 -0
  272. package/dist/server/tests/unit/server/runner.test.js +86 -62
  273. package/dist/server/tests/unit/services/connection/connection-manager.test.d.ts +2 -0
  274. package/dist/server/tests/unit/services/connection/connection-manager.test.d.ts.map +1 -0
  275. package/dist/server/tests/unit/services/connection/connection-manager.test.js +112 -0
  276. package/dist/server/tests/unit/services/hub-manager-service.test.js +112 -46
  277. package/dist/server/tests/unit/services/hub-manager.test.js +25 -15
  278. package/dist/server/tests/unit/services/hub-tools/instance-selector.test.d.ts +2 -0
  279. package/dist/server/tests/unit/services/hub-tools/instance-selector.test.d.ts.map +1 -0
  280. package/dist/server/tests/unit/services/hub-tools/instance-selector.test.js +195 -0
  281. package/dist/server/tests/unit/services/hub-tools/server-selector.test.d.ts +2 -0
  282. package/dist/server/tests/unit/services/hub-tools/server-selector.test.d.ts.map +1 -0
  283. package/dist/server/tests/unit/services/hub-tools/server-selector.test.js +190 -0
  284. package/dist/server/tests/unit/services/hub-tools.service.test.js +560 -320
  285. package/dist/server/tests/unit/services/instance-matcher.test.d.ts +2 -0
  286. package/dist/server/tests/unit/services/instance-matcher.test.d.ts.map +1 -0
  287. package/dist/server/tests/unit/services/instance-matcher.test.js +256 -0
  288. package/dist/server/tests/unit/services/session-manager.test.js +26 -436
  289. package/dist/server/tests/unit/utils/config.test.js +88 -186
  290. package/dist/server/tests/unit/utils/json-utils.test.js +18 -18
  291. package/dist/server/tests/unit/utils/logger-formatter.test.d.ts +2 -0
  292. package/dist/server/tests/unit/utils/logger-formatter.test.d.ts.map +1 -0
  293. package/dist/server/tests/unit/utils/logger-formatter.test.js +66 -0
  294. package/dist/server/tests/unit/utils/parameter-validator.test.d.ts +2 -0
  295. package/dist/server/tests/unit/utils/parameter-validator.test.d.ts.map +1 -0
  296. package/dist/server/tests/unit/utils/parameter-validator.test.js +63 -0
  297. package/dist/server/tests/unit/utils/process-tree.test.d.ts +2 -0
  298. package/dist/server/tests/unit/utils/process-tree.test.d.ts.map +1 -0
  299. package/dist/server/tests/unit/utils/process-tree.test.js +129 -0
  300. package/dist/server/tests/unit/utils/request-context.test.js +5 -24
  301. package/dist/server/tests/unit/utils/sort-utils.test.d.ts +2 -0
  302. package/dist/server/tests/unit/utils/sort-utils.test.d.ts.map +1 -0
  303. package/dist/server/tests/unit/utils/sort-utils.test.js +220 -0
  304. package/dist/server/tests/unit/utils/transport-factory.test.d.ts +2 -0
  305. package/dist/server/tests/unit/utils/transport-factory.test.d.ts.map +1 -0
  306. package/dist/server/tests/unit/utils/transport-factory.test.js +55 -0
  307. package/package.json +1 -1
  308. package/dist/client/assets/ResourceDetailView-Bf-1ffbk.js +0 -1
  309. package/dist/client/assets/ResourcesView-CjMklkyv.css +0 -1
  310. package/dist/client/assets/ResourcesView-g5x4xCPh.js +0 -1
  311. package/dist/client/assets/ServerDashboard-Chpne8Q0.css +0 -1
  312. package/dist/client/assets/ServerDashboard-G8Wmp4hF.js +0 -2
  313. package/dist/client/assets/ServerListView-dV2XrPjo.js +0 -32
  314. package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-BHiTFM7-.js +0 -1
  315. package/dist/client/assets/SessionsView-Ckd38lj1.js +0 -1
  316. package/dist/client/assets/SettingsView-BJUdepEQ.js +0 -1
  317. package/dist/client/assets/ToolCallDialog-C_bTCpHC.js +0 -1
  318. package/dist/client/assets/ToolsView-0c2eputu.js +0 -1
  319. package/dist/client/assets/el-form-item-BVMLpmVC.css +0 -1
  320. package/dist/client/assets/el-form-item-ClFnj49k.js +0 -12
  321. package/dist/client/assets/el-input-CDnuSKVZ.js +0 -1
  322. package/dist/client/assets/el-input-CmuHb8HS.css +0 -1
  323. package/dist/client/assets/el-overlay-B2ZKM6Up.css +0 -1
  324. package/dist/client/assets/el-overlay-CzMkXyYy.js +0 -1
  325. package/dist/client/assets/el-select-DvjGddk_.js +0 -1
  326. package/dist/client/assets/el-tab-pane-C_DQMcwe.js +0 -1
  327. package/dist/client/assets/el-table-column-CASRIbZM.js +0 -1
  328. package/dist/client/assets/el-table-column-T_mV9jNw.css +0 -1
  329. package/dist/client/assets/el-tag-DjxZVOpb.css +0 -1
  330. package/dist/client/assets/el-tag-npbwux4f.js +0 -1
  331. package/dist/client/assets/index-CCnAxNF8.js +0 -2
  332. package/dist/client/assets/index-d1DZeSfz.js +0 -1
  333. package/dist/client/assets/vnode-CHomNjgN.js +0 -1
@@ -7,6 +7,19 @@ import { mcpConnectionManager } from '../../../src/services/mcp-connection-manag
7
7
  import { gateway } from '../../../src/services/gateway.service.js';
8
8
  import { PidManager } from '../../../src/pid/manager.js';
9
9
  import { checkPort } from '../../../src/utils/port-checker.js';
10
+ // Mock resolveInstanceConfig to return a valid resolved config
11
+ vi.mock('@config/config-migrator.js', () => ({
12
+ resolveInstanceConfig: vi.fn(() => ({
13
+ command: 'test-command',
14
+ args: [],
15
+ type: 'stdio',
16
+ timeout: 30000,
17
+ aggregatedTools: [],
18
+ tags: {},
19
+ enabled: true
20
+ })),
21
+ getEnabledInstances: vi.fn()
22
+ }));
10
23
  // Mock all dependencies
11
24
  vi.mock('@src/app.js', () => ({
12
25
  buildApp: vi.fn()
@@ -15,7 +28,7 @@ vi.mock('@config/config-manager.js', () => ({
15
28
  configManager: {
16
29
  getConfig: vi.fn(),
17
30
  getServers: vi.fn(),
18
- getServerInstanceByName: vi.fn(),
31
+ getServerInstancesByName: vi.fn(),
19
32
  addServerInstance: vi.fn()
20
33
  }
21
34
  }));
@@ -72,7 +85,7 @@ describe('Server Runner', () => {
72
85
  };
73
86
  vi.mocked(buildApp).mockResolvedValue(mockApp);
74
87
  const mockConfig = {
75
- version: '1.0.0',
88
+ version: '1.1.0',
76
89
  system: {
77
90
  host: 'localhost',
78
91
  port: 3000,
@@ -83,7 +96,7 @@ describe('Server Runner', () => {
83
96
  rotationAge: '7d',
84
97
  jsonPretty: true,
85
98
  mcpCommDebug: false,
86
- sessionDebug: false
99
+ apiDebug: false
87
100
  }
88
101
  },
89
102
  security: {
@@ -91,11 +104,10 @@ describe('Server Runner', () => {
91
104
  maxConcurrentConnections: 50,
92
105
  connectionTimeout: 30000,
93
106
  idleConnectionTimeout: 300000,
94
- sessionTimeout: 30 * 60 * 1000,
95
- sessionFlushInterval: 15 * 60 * 1000,
96
107
  maxConnections: 50
97
108
  },
98
- servers: {}
109
+ servers: {},
110
+ tagDefinitions: []
99
111
  };
100
112
  vi.mocked(configManager.getConfig).mockReturnValue(mockConfig);
101
113
  vi.mocked(configManager.getServers).mockReturnValue([]);
@@ -111,7 +123,7 @@ describe('Server Runner', () => {
111
123
  it('should start server in stdio mode successfully', async () => {
112
124
  // Setup mocks
113
125
  const mockConfig = {
114
- version: '1.0.0',
126
+ version: '1.1.0',
115
127
  system: {
116
128
  host: 'localhost',
117
129
  port: 3000,
@@ -122,7 +134,7 @@ describe('Server Runner', () => {
122
134
  rotationAge: '7d',
123
135
  jsonPretty: true,
124
136
  mcpCommDebug: false,
125
- sessionDebug: false
137
+ apiDebug: false
126
138
  }
127
139
  },
128
140
  security: {
@@ -130,11 +142,10 @@ describe('Server Runner', () => {
130
142
  maxConcurrentConnections: 50,
131
143
  connectionTimeout: 30000,
132
144
  idleConnectionTimeout: 300000,
133
- sessionTimeout: 30 * 60 * 1000,
134
- sessionFlushInterval: 15 * 60 * 1000,
135
145
  maxConnections: 50
136
146
  },
137
- servers: {}
147
+ servers: {},
148
+ tagDefinitions: []
138
149
  };
139
150
  vi.mocked(configManager.getConfig).mockReturnValue(mockConfig);
140
151
  vi.mocked(configManager.getServers).mockReturnValue([]);
@@ -152,7 +163,7 @@ describe('Server Runner', () => {
152
163
  const mockApp = { listen: vi.fn(), close: vi.fn() };
153
164
  vi.mocked(buildApp).mockResolvedValue(mockApp);
154
165
  const mockConfig = {
155
- version: '1.0.0',
166
+ version: '1.1.0',
156
167
  system: {
157
168
  host: 'localhost',
158
169
  port: 3000,
@@ -163,7 +174,7 @@ describe('Server Runner', () => {
163
174
  rotationAge: '7d',
164
175
  jsonPretty: true,
165
176
  mcpCommDebug: false,
166
- sessionDebug: false
177
+ apiDebug: false
167
178
  }
168
179
  },
169
180
  security: {
@@ -171,11 +182,10 @@ describe('Server Runner', () => {
171
182
  maxConcurrentConnections: 50,
172
183
  connectionTimeout: 30000,
173
184
  idleConnectionTimeout: 300000,
174
- sessionTimeout: 30 * 60 * 1000,
175
- sessionFlushInterval: 15 * 60 * 1000,
176
185
  maxConnections: 50
177
186
  },
178
- servers: {}
187
+ servers: {},
188
+ tagDefinitions: []
179
189
  };
180
190
  vi.mocked(configManager.getConfig).mockReturnValue(mockConfig);
181
191
  vi.mocked(configManager.getServers).mockReturnValue([]);
@@ -191,7 +201,8 @@ describe('Server Runner', () => {
191
201
  // Execute and expect error
192
202
  await expect(runServer({ stdio: false, port: 3000, host: 'localhost' })).rejects.toThrow('process.exit called');
193
203
  // Verify
194
- expect(logger.error).toHaveBeenCalledWith('MCP Hub Lite is already running on port 3000 (PID: 1234)');
204
+ expect(logger.error).toHaveBeenCalledWith('MCP Hub Lite is already running on port 3000 (PID: 1234)', expect.any(Object));
205
+ expect(logger.error).toHaveBeenCalledWith("Use 'npm run stop' or 'mcp-hub-lite stop' to stop the running instance.", expect.any(Object));
195
206
  expect(exitSpy).toHaveBeenCalledWith(1);
196
207
  // Restore
197
208
  exitSpy.mockRestore();
@@ -201,7 +212,7 @@ describe('Server Runner', () => {
201
212
  const mockApp = { listen: vi.fn(), close: vi.fn() };
202
213
  vi.mocked(buildApp).mockResolvedValue(mockApp);
203
214
  const mockConfig = {
204
- version: '1.0.0',
215
+ version: '1.1.0',
205
216
  system: {
206
217
  host: 'localhost',
207
218
  port: 3000,
@@ -212,7 +223,7 @@ describe('Server Runner', () => {
212
223
  rotationAge: '7d',
213
224
  jsonPretty: true,
214
225
  mcpCommDebug: false,
215
- sessionDebug: false
226
+ apiDebug: false
216
227
  }
217
228
  },
218
229
  security: {
@@ -220,11 +231,10 @@ describe('Server Runner', () => {
220
231
  maxConcurrentConnections: 50,
221
232
  connectionTimeout: 30000,
222
233
  idleConnectionTimeout: 300000,
223
- sessionTimeout: 30 * 60 * 1000,
224
- sessionFlushInterval: 15 * 60 * 1000,
225
234
  maxConnections: 50
226
235
  },
227
- servers: {}
236
+ servers: {},
237
+ tagDefinitions: []
228
238
  };
229
239
  vi.mocked(configManager.getConfig).mockReturnValue(mockConfig);
230
240
  vi.mocked(configManager.getServers).mockReturnValue([]);
@@ -242,9 +252,10 @@ describe('Server Runner', () => {
242
252
  // Execute and expect error
243
253
  await expect(runServer({ stdio: false, port: 3000, host: 'localhost' })).rejects.toThrow('process.exit called');
244
254
  // Verify
245
- expect(logger.error).toHaveBeenCalledWith('Port 3000 is already in use by another application:');
246
- expect(logger.error).toHaveBeenCalledWith(' Process: other-app (PID: 5678)');
247
- expect(logger.error).toHaveBeenCalledWith(' Command: node other-app.js');
255
+ expect(logger.error).toHaveBeenCalledWith('Port 3000 is already in use by another application:', expect.any(Object));
256
+ expect(logger.error).toHaveBeenCalledWith(' Process: other-app (PID: 5678)', expect.any(Object));
257
+ expect(logger.error).toHaveBeenCalledWith(' Command: node other-app.js', expect.any(Object));
258
+ expect(logger.error).toHaveBeenCalledWith('Please stop the conflicting application or use a different port.', expect.any(Object));
248
259
  expect(exitSpy).toHaveBeenCalledWith(1);
249
260
  // Restore
250
261
  exitSpy.mockRestore();
@@ -257,7 +268,7 @@ describe('Server Runner', () => {
257
268
  };
258
269
  vi.mocked(buildApp).mockResolvedValue(mockApp);
259
270
  const mockConfig = {
260
- version: '1.0.0',
271
+ version: '1.1.0',
261
272
  system: {
262
273
  host: 'localhost',
263
274
  port: 3000,
@@ -268,7 +279,7 @@ describe('Server Runner', () => {
268
279
  rotationAge: '7d',
269
280
  jsonPretty: true,
270
281
  mcpCommDebug: false,
271
- sessionDebug: false
282
+ apiDebug: false
272
283
  }
273
284
  },
274
285
  security: {
@@ -276,11 +287,10 @@ describe('Server Runner', () => {
276
287
  maxConcurrentConnections: 50,
277
288
  connectionTimeout: 30000,
278
289
  idleConnectionTimeout: 300000,
279
- sessionTimeout: 30 * 60 * 1000,
280
- sessionFlushInterval: 15 * 60 * 1000,
281
290
  maxConnections: 50
282
291
  },
283
- servers: {}
292
+ servers: {},
293
+ tagDefinitions: []
284
294
  };
285
295
  vi.mocked(configManager.getConfig).mockReturnValue(mockConfig);
286
296
  vi.mocked(checkPort).mockResolvedValue({ inUse: false });
@@ -288,36 +298,53 @@ describe('Server Runner', () => {
288
298
  {
289
299
  name: 'enabled-server',
290
300
  config: {
291
- enabled: true,
292
- command: 'test-command',
293
- type: 'stdio',
294
- args: [],
295
- allowedTools: [],
296
- timeout: 30000
301
+ template: {
302
+ command: 'test-command',
303
+ type: 'stdio',
304
+ args: [],
305
+ env: {},
306
+ headers: {},
307
+ aggregatedTools: [],
308
+ timeout: 30000
309
+ },
310
+ instances: [
311
+ { id: 'instance-1', enabled: true, args: [], env: {}, headers: {}, tags: {} }
312
+ ],
313
+ tagDefinitions: []
297
314
  }
298
315
  },
299
316
  {
300
317
  name: 'disabled-server',
301
318
  config: {
302
- enabled: false,
303
- command: 'test-command',
304
- type: 'stdio',
305
- args: [],
306
- allowedTools: [],
307
- timeout: 30000
319
+ template: {
320
+ command: 'test-command',
321
+ type: 'stdio',
322
+ args: [],
323
+ env: {},
324
+ headers: {},
325
+ aggregatedTools: [],
326
+ timeout: 30000
327
+ },
328
+ instances: [
329
+ { id: 'instance-2', enabled: false, args: [], env: {}, headers: {}, tags: {} }
330
+ ],
331
+ tagDefinitions: []
308
332
  }
309
333
  }
310
334
  ];
311
335
  vi.mocked(configManager.getServers).mockReturnValue(mockServers);
312
- vi.mocked(configManager.getServerInstanceByName).mockImplementation((name) => {
336
+ vi.mocked(configManager.getServerInstancesByName).mockImplementation((name) => {
313
337
  if (name === 'enabled-server')
314
338
  return [];
315
- return [{ id: 'instance-1', timestamp: Date.now(), hash: 'test-hash' }];
339
+ return [{ id: 'instance-1', enabled: false, args: [], env: {}, headers: {}, tags: {} }];
316
340
  });
317
341
  vi.mocked(configManager.addServerInstance).mockResolvedValue({
318
342
  id: 'new-instance',
319
- timestamp: Date.now(),
320
- hash: 'test-hash'
343
+ enabled: true,
344
+ args: [],
345
+ env: {},
346
+ headers: {},
347
+ tags: {}
321
348
  });
322
349
  // Execute
323
350
  await runServer({ stdio: false, port: 3000, host: 'localhost' });
@@ -325,7 +352,7 @@ describe('Server Runner', () => {
325
352
  // Only enabled server should be connected (1 call expected)
326
353
  expect(mcpConnectionManager.connect).toHaveBeenCalledTimes(1);
327
354
  // Call for enabled server with new instance
328
- expect(mcpConnectionManager.connect).toHaveBeenCalledWith(expect.objectContaining({
355
+ expect(mcpConnectionManager.connect).toHaveBeenCalledWith('enabled-server', 0, expect.objectContaining({
329
356
  enabled: true,
330
357
  command: 'test-command',
331
358
  id: 'new-instance'
@@ -339,7 +366,7 @@ describe('Server Runner', () => {
339
366
  };
340
367
  vi.mocked(buildApp).mockResolvedValue(mockApp);
341
368
  const mockConfig = {
342
- version: '1.0.0',
369
+ version: '1.1.0',
343
370
  system: {
344
371
  host: 'localhost',
345
372
  port: 3000,
@@ -350,7 +377,7 @@ describe('Server Runner', () => {
350
377
  rotationAge: '7d',
351
378
  jsonPretty: true,
352
379
  mcpCommDebug: false,
353
- sessionDebug: false
380
+ apiDebug: false
354
381
  }
355
382
  },
356
383
  security: {
@@ -358,11 +385,10 @@ describe('Server Runner', () => {
358
385
  maxConcurrentConnections: 50,
359
386
  connectionTimeout: 30000,
360
387
  idleConnectionTimeout: 300000,
361
- sessionTimeout: 30 * 60 * 1000,
362
- sessionFlushInterval: 15 * 60 * 1000,
363
388
  maxConnections: 50
364
389
  },
365
- servers: {}
390
+ servers: {},
391
+ tagDefinitions: []
366
392
  };
367
393
  vi.mocked(configManager.getConfig).mockReturnValue(mockConfig);
368
394
  vi.mocked(configManager.getServers).mockReturnValue([]);
@@ -394,7 +420,7 @@ describe('Server Runner', () => {
394
420
  };
395
421
  vi.mocked(buildApp).mockResolvedValue(mockApp);
396
422
  const mockConfig = {
397
- version: '1.0.0',
423
+ version: '1.1.0',
398
424
  system: {
399
425
  host: 'localhost',
400
426
  port: 3000,
@@ -405,7 +431,7 @@ describe('Server Runner', () => {
405
431
  rotationAge: '7d',
406
432
  jsonPretty: true,
407
433
  mcpCommDebug: false,
408
- sessionDebug: false
434
+ apiDebug: false
409
435
  }
410
436
  },
411
437
  security: {
@@ -413,11 +439,10 @@ describe('Server Runner', () => {
413
439
  maxConcurrentConnections: 50,
414
440
  connectionTimeout: 30000,
415
441
  idleConnectionTimeout: 300000,
416
- sessionTimeout: 30 * 60 * 1000,
417
- sessionFlushInterval: 15 * 60 * 1000,
418
442
  maxConnections: 50
419
443
  },
420
- servers: {}
444
+ servers: {},
445
+ tagDefinitions: []
421
446
  };
422
447
  vi.mocked(configManager.getConfig).mockReturnValue(mockConfig);
423
448
  vi.mocked(configManager.getServers).mockReturnValue([]);
@@ -445,7 +470,7 @@ describe('Server Runner', () => {
445
470
  // Setup mocks to throw error
446
471
  vi.mocked(buildApp).mockRejectedValue(new Error('Startup failed'));
447
472
  const mockConfig = {
448
- version: '1.0.0',
473
+ version: '1.1.0',
449
474
  system: {
450
475
  host: 'localhost',
451
476
  port: 3000,
@@ -456,7 +481,7 @@ describe('Server Runner', () => {
456
481
  rotationAge: '7d',
457
482
  jsonPretty: true,
458
483
  mcpCommDebug: false,
459
- sessionDebug: false
484
+ apiDebug: false
460
485
  }
461
486
  },
462
487
  security: {
@@ -464,11 +489,10 @@ describe('Server Runner', () => {
464
489
  maxConcurrentConnections: 50,
465
490
  connectionTimeout: 30000,
466
491
  idleConnectionTimeout: 300000,
467
- sessionTimeout: 30 * 60 * 1000,
468
- sessionFlushInterval: 15 * 60 * 1000,
469
492
  maxConnections: 50
470
493
  },
471
- servers: {}
494
+ servers: {},
495
+ tagDefinitions: []
472
496
  };
473
497
  vi.mocked(configManager.getConfig).mockReturnValue(mockConfig);
474
498
  // Spy on process.exit
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=connection-manager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-manager.test.d.ts","sourceRoot":"","sources":["../../../../../../tests/unit/services/connection/connection-manager.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,112 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ import { McpConnectionManager } from '../../../../src/services/connection/connection-manager.js';
3
+ // Mock dependencies
4
+ vi.mock('@utils/logger.js', () => ({
5
+ logger: {
6
+ info: vi.fn(),
7
+ error: vi.fn(),
8
+ warn: vi.fn(),
9
+ debug: vi.fn()
10
+ },
11
+ LOG_MODULES: {
12
+ CONNECTION_MANAGER: 'connection-manager'
13
+ },
14
+ formatMcpMessageForLogging: vi.fn(),
15
+ logNotificationMessage: vi.fn()
16
+ }));
17
+ vi.mock('@utils/json-utils.js', () => ({
18
+ getMcpCommDebugSetting: vi.fn().mockReturnValue(false)
19
+ }));
20
+ vi.mock('@services/log-storage.service.js', () => ({
21
+ logStorage: {
22
+ append: vi.fn()
23
+ }
24
+ }));
25
+ vi.mock('@services/event-bus.service.js', () => ({
26
+ eventBus: {
27
+ subscribe: vi.fn(),
28
+ publish: vi.fn()
29
+ },
30
+ EventTypes: {
31
+ SERVER_DELETED: 'server-deleted',
32
+ SERVER_CONNECTED: 'server-connected',
33
+ SERVER_DISCONNECTED: 'server-disconnected',
34
+ SERVER_STATUS_CHANGE: 'server-status-change',
35
+ TOOLS_UPDATED: 'tools-updated',
36
+ RESOURCES_UPDATED: 'resources-updated'
37
+ }
38
+ }));
39
+ vi.mock('@services/hub-manager.service.js', () => ({
40
+ hubManager: {
41
+ getServerById: vi.fn(),
42
+ getServerInstancesByName: vi.fn()
43
+ }
44
+ }));
45
+ vi.mock('@utils/transports/transport-factory.js', () => ({
46
+ TransportFactory: {
47
+ createTransport: vi.fn()
48
+ }
49
+ }));
50
+ vi.mock('@modelcontextprotocol/sdk/client/index.js', () => ({
51
+ Client: vi.fn().mockImplementation(() => ({
52
+ connect: vi.fn(),
53
+ getServerVersion: vi.fn().mockReturnValue({ version: '1.0.0' }),
54
+ listTools: vi.fn().mockResolvedValue({ tools: [] }),
55
+ close: vi.fn()
56
+ }))
57
+ }));
58
+ describe('McpConnectionManager - Stdio Retry Mechanism', () => {
59
+ let manager;
60
+ beforeEach(() => {
61
+ vi.clearAllMocks();
62
+ manager = new McpConnectionManager();
63
+ });
64
+ describe('isProcessRunning helper', () => {
65
+ it('should have a private isProcessRunning method', () => {
66
+ // Verify that isProcessRunning is a method (private)
67
+ expect(typeof manager
68
+ .isProcessRunning).toBe('function');
69
+ });
70
+ });
71
+ describe('connection retry configuration', () => {
72
+ it('should define retry constants', () => {
73
+ // The constants are private to the connect method, but we can verify
74
+ // that the class structure is correct
75
+ expect(manager).toBeInstanceOf(McpConnectionManager);
76
+ });
77
+ });
78
+ describe('status management', () => {
79
+ it('should provide getStatus method', () => {
80
+ expect(typeof manager.getStatus).toBe('function');
81
+ });
82
+ it('should return undefined for non-existent server', () => {
83
+ const status = manager.getStatus('non-existent-server');
84
+ expect(status).toBeUndefined();
85
+ });
86
+ });
87
+ describe('disconnect methods', () => {
88
+ it('should provide disconnect method', () => {
89
+ expect(typeof manager.disconnect).toBe('function');
90
+ });
91
+ it('should provide disconnectAll method', () => {
92
+ expect(typeof manager.disconnectAll).toBe('function');
93
+ });
94
+ });
95
+ describe('tool and resource methods', () => {
96
+ it('should provide refreshTools method', () => {
97
+ expect(typeof manager.refreshTools).toBe('function');
98
+ });
99
+ it('should provide refreshResources method', () => {
100
+ expect(typeof manager.refreshResources).toBe('function');
101
+ });
102
+ it('should provide getTools method', () => {
103
+ expect(typeof manager.getTools).toBe('function');
104
+ });
105
+ it('should provide getResources method', () => {
106
+ expect(typeof manager.getResources).toBe('function');
107
+ });
108
+ it('should provide getAllTools method', () => {
109
+ expect(typeof manager.getAllTools).toBe('function');
110
+ });
111
+ });
112
+ });