@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
@@ -0,0 +1,82 @@
1
+ import type { ServerInstance, SystemConfig } from './config.schema.js';
2
+ import type { ServerRuntimeConfig } from '../../shared/models/server.model.js';
3
+ /**
4
+ * @deprecated Use ServerRuntimeConfig from @shared-models/server.model instead
5
+ * Resolved server configuration with template + instance merged
6
+ */
7
+ export type ResolvedServerConfig = ServerRuntimeConfig;
8
+ /**
9
+ * Configuration Migration Result
10
+ */
11
+ export interface MigrationResult {
12
+ success: boolean;
13
+ backupPath?: string;
14
+ migratedConfig?: SystemConfig;
15
+ error?: string;
16
+ warnings: string[];
17
+ }
18
+ /**
19
+ * Configuration Migrator Options
20
+ */
21
+ export interface MigrationOptions {
22
+ dryRun?: boolean;
23
+ createBackup?: boolean;
24
+ validateAfterMigration?: boolean;
25
+ }
26
+ /**
27
+ * Main migration function that migrates a configuration from v1.0 to v1.1
28
+ *
29
+ * @param configPath Path to the configuration file
30
+ * @param options Migration options
31
+ * @returns Migration result with backup path and migrated config
32
+ */
33
+ export declare function migrateConfig(configPath: string, options?: MigrationOptions): MigrationResult;
34
+ /**
35
+ * Performs a dry run of the migration without modifying files
36
+ *
37
+ * @param configPath Path to the configuration file
38
+ * @returns Migration result with what would happen
39
+ */
40
+ export declare function dryRunMigration(configPath: string): MigrationResult;
41
+ /**
42
+ * Rolls back a migration using a backup file
43
+ *
44
+ * @param configPath Path to the current configuration file
45
+ * @param backupPath Path to the backup file
46
+ * @returns Success status and any error message
47
+ */
48
+ export declare function rollbackMigration(configPath: string, backupPath: string): {
49
+ success: boolean;
50
+ error?: string;
51
+ };
52
+ /**
53
+ * Checks the migration status of a configuration file
54
+ *
55
+ * @param configPath Path to the configuration file
56
+ * @returns Status information
57
+ */
58
+ export declare function checkMigrationStatus(configPath: string): {
59
+ exists: boolean;
60
+ version: 'v1' | 'v1.1' | 'unknown';
61
+ canMigrate: boolean;
62
+ message: string;
63
+ };
64
+ /**
65
+ * Resolves a server instance configuration by merging template and instance overrides
66
+ *
67
+ * @param serverConfig The server configuration with template and instances
68
+ * @param instanceId Optional instance ID (uses first enabled instance if not provided)
69
+ * @returns The resolved server configuration
70
+ */
71
+ export declare function resolveInstanceConfig(serverConfig: SystemConfig['servers'][string], instanceId?: string): ServerRuntimeConfig | null;
72
+ /**
73
+ * Gets all enabled instances for a server
74
+ *
75
+ * @param serverConfig The server configuration
76
+ * @returns Array of enabled instances with resolved configs
77
+ */
78
+ export declare function getEnabledInstances(serverConfig: SystemConfig['servers'][string]): Array<{
79
+ instance: ServerInstance;
80
+ resolved: ServerRuntimeConfig;
81
+ }>;
82
+ //# sourceMappingURL=config-migrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-migrator.d.ts","sourceRoot":"","sources":["../../../../src/config/config-migrator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAkB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAG1E;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAyMD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,eAAe,CAwDjG;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CAMnE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAyBA;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG;IACxD,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IACnC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAsCA;AAID;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAC7C,UAAU,CAAC,EAAE,MAAM,GAClB,mBAAmB,GAAG,IAAI,CA+B5B;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAC5C,KAAK,CAAC;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,mBAAmB,CAAA;CAAE,CAAC,CAapE"}
@@ -0,0 +1,348 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { dirname, join } from 'node:path';
3
+ import { logger, LOG_MODULES } from '../utils/logger.js';
4
+ import { generateInstanceId } from '../utils/instance-id.js';
5
+ import { isLegacyV1Config, SystemConfigSchema } from './config.schema.js';
6
+ import { reassignServerInstanceIndexes } from './server-config-manager.js';
7
+ /**
8
+ * Default migration options
9
+ */
10
+ const DEFAULT_OPTIONS = {
11
+ dryRun: false,
12
+ createBackup: true,
13
+ validateAfterMigration: true
14
+ };
15
+ /**
16
+ * Generates a timestamp for backup files
17
+ */
18
+ function generateTimestamp() {
19
+ const now = new Date();
20
+ return now.toISOString().replace(/[:.]/g, '-').slice(0, 19);
21
+ }
22
+ /**
23
+ * Creates a backup of the configuration file
24
+ */
25
+ function createBackup(configPath) {
26
+ try {
27
+ if (!existsSync(configPath)) {
28
+ return null;
29
+ }
30
+ const timestamp = generateTimestamp();
31
+ const backupDir = dirname(configPath);
32
+ const backupPath = join(backupDir, `.mcp-hub.json.backup.${timestamp}`);
33
+ const content = readFileSync(configPath, 'utf8');
34
+ writeFileSync(backupPath, content, 'utf8');
35
+ return backupPath;
36
+ }
37
+ catch (error) {
38
+ logger.warn('Failed to create backup:', LOG_MODULES.CONFIG_MANAGER, error);
39
+ return null;
40
+ }
41
+ }
42
+ /**
43
+ * Converts a legacy v1.0 ServerConfig to a v1.1 ServerTemplate
44
+ */
45
+ function convertToServerTemplate(v1Config) {
46
+ return {
47
+ command: v1Config.command,
48
+ args: v1Config.args || [],
49
+ env: v1Config.env || {},
50
+ headers: v1Config.headers || {},
51
+ type: v1Config.type || 'stdio',
52
+ timeout: v1Config.timeout || 60000,
53
+ url: v1Config.url,
54
+ aggregatedTools: v1Config.allowedTools || [],
55
+ description: v1Config.description
56
+ };
57
+ }
58
+ /**
59
+ * Converts a legacy v1.0 ServerConfig to a v1.1 ServerInstance
60
+ */
61
+ function convertToServerInstance(v1Config, serverName) {
62
+ // Only keep the differences from template (args should be empty since template has full args)
63
+ const instanceConfig = {
64
+ args: [],
65
+ env: v1Config.env || {},
66
+ headers: v1Config.headers || {},
67
+ tags: v1Config.tags || {}
68
+ };
69
+ return {
70
+ id: generateInstanceId(serverName, instanceConfig),
71
+ index: 0, // Set initial index for migrated instances
72
+ enabled: v1Config.enabled !== false,
73
+ args: [], // In v1.1, instance args are just the append part
74
+ env: v1Config.env || {},
75
+ headers: v1Config.headers || {},
76
+ tags: v1Config.tags || {}
77
+ // command and description are removed from instance
78
+ };
79
+ }
80
+ /**
81
+ * Converts a legacy v1.0 SystemConfig to a v1.1 SystemConfig
82
+ */
83
+ function migrateV1ToV1_1(v1Config) {
84
+ const warnings = [];
85
+ const servers = {};
86
+ // Convert each v1 server to a v1.1 server
87
+ for (const [serverName, serverConfig] of Object.entries(v1Config.servers || {})) {
88
+ const template = convertToServerTemplate(serverConfig);
89
+ const instance = convertToServerInstance(serverConfig, serverName);
90
+ servers[serverName] = {
91
+ template,
92
+ instances: [instance],
93
+ tagDefinitions: []
94
+ };
95
+ }
96
+ // Ensure all server instances have proper indexes
97
+ for (const serverName of Object.keys(servers)) {
98
+ reassignServerInstanceIndexes(serverName, servers);
99
+ }
100
+ const v1_1Config = {
101
+ version: '1.1.0',
102
+ system: v1Config.system,
103
+ security: v1Config.security,
104
+ servers,
105
+ tagDefinitions: []
106
+ };
107
+ return { config: v1_1Config, warnings };
108
+ }
109
+ /**
110
+ * Validates a configuration against the schema
111
+ */
112
+ function validateConfig(config) {
113
+ try {
114
+ SystemConfigSchema.parse(config);
115
+ return { valid: true };
116
+ }
117
+ catch (error) {
118
+ return {
119
+ valid: false,
120
+ errors: error instanceof Error ? error.message : String(error)
121
+ };
122
+ }
123
+ }
124
+ /**
125
+ * Loads and parses a configuration file
126
+ */
127
+ function loadConfigFile(configPath) {
128
+ if (!existsSync(configPath)) {
129
+ throw new Error(`Configuration file not found: ${configPath}`);
130
+ }
131
+ const content = readFileSync(configPath, 'utf8');
132
+ try {
133
+ return JSON.parse(content);
134
+ }
135
+ catch (error) {
136
+ throw new Error(`Failed to parse configuration file: ${error instanceof Error ? error.message : String(error)}`);
137
+ }
138
+ }
139
+ /**
140
+ * Saves a configuration file
141
+ */
142
+ function saveConfigFile(configPath, config) {
143
+ const dir = dirname(configPath);
144
+ if (!existsSync(dir)) {
145
+ mkdirSync(dir, { recursive: true });
146
+ }
147
+ const content = JSON.stringify(config, null, 2);
148
+ writeFileSync(configPath, content, 'utf8');
149
+ }
150
+ /**
151
+ * Main migration function that migrates a configuration from v1.0 to v1.1
152
+ *
153
+ * @param configPath Path to the configuration file
154
+ * @param options Migration options
155
+ * @returns Migration result with backup path and migrated config
156
+ */
157
+ export function migrateConfig(configPath, options = {}) {
158
+ const opts = { ...DEFAULT_OPTIONS, ...options };
159
+ const result = {
160
+ success: false,
161
+ warnings: []
162
+ };
163
+ try {
164
+ // Load and validate source config
165
+ const sourceConfig = loadConfigFile(configPath);
166
+ // Check if already v1.1
167
+ if (!isLegacyV1Config(sourceConfig)) {
168
+ result.success = true;
169
+ result.warnings.push('Configuration is already in v1.1 format');
170
+ result.migratedConfig = sourceConfig;
171
+ return result;
172
+ }
173
+ // Create backup if requested
174
+ let backupPath = null;
175
+ if (opts.createBackup) {
176
+ backupPath = createBackup(configPath);
177
+ if (backupPath) {
178
+ result.backupPath = backupPath;
179
+ }
180
+ else {
181
+ result.warnings.push('Failed to create backup file');
182
+ }
183
+ }
184
+ // Perform migration
185
+ const v1Config = sourceConfig;
186
+ const { config: migratedConfig, warnings } = migrateV1ToV1_1(v1Config);
187
+ result.warnings.push(...warnings);
188
+ // Validate migrated config
189
+ if (opts.validateAfterMigration) {
190
+ const validation = validateConfig(migratedConfig);
191
+ if (!validation.valid) {
192
+ result.error = `Migrated configuration validation failed: ${validation.errors}`;
193
+ return result;
194
+ }
195
+ }
196
+ // Save if not dry run
197
+ if (!opts.dryRun) {
198
+ saveConfigFile(configPath, migratedConfig);
199
+ }
200
+ result.success = true;
201
+ result.migratedConfig = migratedConfig;
202
+ return result;
203
+ }
204
+ catch (error) {
205
+ result.error = error instanceof Error ? error.message : String(error);
206
+ return result;
207
+ }
208
+ }
209
+ /**
210
+ * Performs a dry run of the migration without modifying files
211
+ *
212
+ * @param configPath Path to the configuration file
213
+ * @returns Migration result with what would happen
214
+ */
215
+ export function dryRunMigration(configPath) {
216
+ return migrateConfig(configPath, {
217
+ dryRun: true,
218
+ createBackup: false,
219
+ validateAfterMigration: true
220
+ });
221
+ }
222
+ /**
223
+ * Rolls back a migration using a backup file
224
+ *
225
+ * @param configPath Path to the current configuration file
226
+ * @param backupPath Path to the backup file
227
+ * @returns Success status and any error message
228
+ */
229
+ export function rollbackMigration(configPath, backupPath) {
230
+ try {
231
+ if (!existsSync(backupPath)) {
232
+ return {
233
+ success: false,
234
+ error: `Backup file not found: ${backupPath}`
235
+ };
236
+ }
237
+ const backupContent = readFileSync(backupPath, 'utf8');
238
+ const dir = dirname(configPath);
239
+ if (!existsSync(dir)) {
240
+ mkdirSync(dir, { recursive: true });
241
+ }
242
+ writeFileSync(configPath, backupContent, 'utf8');
243
+ return { success: true };
244
+ }
245
+ catch (error) {
246
+ return {
247
+ success: false,
248
+ error: error instanceof Error ? error.message : String(error)
249
+ };
250
+ }
251
+ }
252
+ /**
253
+ * Checks the migration status of a configuration file
254
+ *
255
+ * @param configPath Path to the configuration file
256
+ * @returns Status information
257
+ */
258
+ export function checkMigrationStatus(configPath) {
259
+ if (!existsSync(configPath)) {
260
+ return {
261
+ exists: false,
262
+ version: 'unknown',
263
+ canMigrate: false,
264
+ message: 'Configuration file does not exist'
265
+ };
266
+ }
267
+ try {
268
+ const config = loadConfigFile(configPath);
269
+ if (!isLegacyV1Config(config)) {
270
+ return {
271
+ exists: true,
272
+ version: 'v1.1',
273
+ canMigrate: false,
274
+ message: 'Configuration is already in v1.1 format'
275
+ };
276
+ }
277
+ return {
278
+ exists: true,
279
+ version: 'v1',
280
+ canMigrate: true,
281
+ message: 'Configuration is in v1.0 format and can be migrated'
282
+ };
283
+ }
284
+ catch (error) {
285
+ return {
286
+ exists: true,
287
+ version: 'unknown',
288
+ canMigrate: false,
289
+ message: `Error reading configuration: ${error instanceof Error ? error.message : String(error)}`
290
+ };
291
+ }
292
+ }
293
+ // ====== v1.1 Configuration Helpers ======
294
+ /**
295
+ * Resolves a server instance configuration by merging template and instance overrides
296
+ *
297
+ * @param serverConfig The server configuration with template and instances
298
+ * @param instanceId Optional instance ID (uses first enabled instance if not provided)
299
+ * @returns The resolved server configuration
300
+ */
301
+ export function resolveInstanceConfig(serverConfig, instanceId) {
302
+ const { template, instances } = serverConfig;
303
+ // Find the target instance
304
+ let targetInstance;
305
+ if (instanceId) {
306
+ targetInstance = instances.find((inst) => inst.id === instanceId);
307
+ }
308
+ else {
309
+ // Use first enabled instance
310
+ targetInstance = instances.find((inst) => inst.enabled !== false);
311
+ }
312
+ if (!targetInstance) {
313
+ return null;
314
+ }
315
+ // Merge template with instance overrides
316
+ return {
317
+ command: template.command,
318
+ args: [...(template.args || []), ...(targetInstance.args || [])],
319
+ env: { ...template.env, ...targetInstance.env },
320
+ headers: { ...template.headers, ...targetInstance.headers },
321
+ proxy: targetInstance.proxy || template.proxy,
322
+ type: template.type,
323
+ timeout: template.timeout,
324
+ url: template.url,
325
+ aggregatedTools: template.aggregatedTools,
326
+ tags: targetInstance.tags,
327
+ enabled: targetInstance.enabled !== false,
328
+ description: template.description
329
+ };
330
+ }
331
+ /**
332
+ * Gets all enabled instances for a server
333
+ *
334
+ * @param serverConfig The server configuration
335
+ * @returns Array of enabled instances with resolved configs
336
+ */
337
+ export function getEnabledInstances(serverConfig) {
338
+ const result = [];
339
+ for (const instance of serverConfig.instances) {
340
+ if (instance.enabled !== false) {
341
+ const resolved = resolveInstanceConfig(serverConfig, instance.id);
342
+ if (resolved) {
343
+ result.push({ instance, resolved });
344
+ }
345
+ }
346
+ }
347
+ return result;
348
+ }
@@ -9,6 +9,8 @@
9
9
  * creating the directory structure if it doesn't exist. Errors during the save
10
10
  * operation are silently ignored to prevent crashes during normal operation.
11
11
  *
12
+ * All empty values and empty objects are preserved as-is in the output.
13
+ *
12
14
  * @param configPath - Path to save the configuration file
13
15
  * @param config - The configuration object to save
14
16
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config-saver.d.ts","sourceRoot":"","sources":["../../../../src/config/config-saver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAUpE"}
1
+ {"version":3,"file":"config-saver.d.ts","sourceRoot":"","sources":["../../../../src/config/config-saver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAYpE"}
@@ -4,6 +4,8 @@
4
4
  */
5
5
  import * as fs from 'fs';
6
6
  import path from 'path';
7
+ import { logger } from '../utils/logger.js';
8
+ import { LOG_MODULES } from '../utils/logger/log-modules.js';
7
9
  /**
8
10
  * Saves the configuration to disk at the specified path.
9
11
  *
@@ -11,18 +13,22 @@ import path from 'path';
11
13
  * creating the directory structure if it doesn't exist. Errors during the save
12
14
  * operation are silently ignored to prevent crashes during normal operation.
13
15
  *
16
+ * All empty values and empty objects are preserved as-is in the output.
17
+ *
14
18
  * @param configPath - Path to save the configuration file
15
19
  * @param config - The configuration object to save
16
20
  */
17
21
  export function saveConfig(configPath, config) {
18
22
  try {
23
+ logger.debug(`Saving configuration to: ${configPath}`, LOG_MODULES.CONFIG_SAVER);
19
24
  const dir = path.dirname(configPath);
20
25
  if (!fs.existsSync(dir)) {
21
26
  fs.mkdirSync(dir, { recursive: true });
22
27
  }
23
28
  fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
29
+ logger.debug(`Configuration saved successfully`, LOG_MODULES.CONFIG_SAVER);
24
30
  }
25
- catch {
26
- // Ignore
31
+ catch (error) {
32
+ logger.error(`Failed to save configuration:`, error, LOG_MODULES.CONFIG_SAVER);
27
33
  }
28
34
  }
@@ -1,108 +1,16 @@
1
- import { z } from 'zod';
2
- import type { LogLevel } from '../../shared/types/common.types.js';
1
+ import { TransportType, TagDefinitionSchema, ServerInstanceSchema, ServerInstanceUpdateSchema, ServerTemplateSchema, ServerConfigSchema, LoggingConfigSchema, SecurityConfigSchema, SystemConfigSchema, ServerInstanceConfigSchema, type SystemConfig, type ServerConfig, type ServerTemplate, type ServerInstance, type ServerInstanceUpdate, type TagDefinition, type ServerInstanceConfig, type ServerRuntimeConfig } from '../../shared/models/server.model.js';
3
2
  /**
4
3
  * MCP Server Configuration Schema
5
- * Simplified schema for MCP-HUB-LITE Lite version
4
+ * Simplified v1.1 only - No v1.0 compatibility
5
+ *
6
+ * Note: All core schemas are now defined in @shared-models/server.model.ts
7
+ * This file re-exports them for backward compatibility and retains
8
+ * TransportType constants and legacy helper functions.
6
9
  */
7
- export declare const ServerConfigSchema: z.ZodObject<{
8
- command: z.ZodOptional<z.ZodString>;
9
- args: z.ZodDefault<z.ZodArray<z.ZodString>>;
10
- env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
11
- enabled: z.ZodDefault<z.ZodBoolean>;
12
- tags: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
13
- type: z.ZodDefault<z.ZodEnum<{
14
- stdio: "stdio";
15
- sse: "sse";
16
- "streamable-http": "streamable-http";
17
- http: "http";
18
- }>>;
19
- timeout: z.ZodDefault<z.ZodNumber>;
20
- url: z.ZodOptional<z.ZodString>;
21
- allowedTools: z.ZodDefault<z.ZodArray<z.ZodString>>;
22
- description: z.ZodOptional<z.ZodString>;
23
- }, z.core.$strip>;
24
- export declare const ServerInstanceConfigSchema: z.ZodObject<{
25
- id: z.ZodString;
26
- timestamp: z.ZodNumber;
27
- hash: z.ZodString;
28
- pid: z.ZodOptional<z.ZodNumber>;
29
- startTime: z.ZodOptional<z.ZodNumber>;
30
- }, z.core.$strip>;
10
+ export { TransportType, TagDefinitionSchema, ServerInstanceSchema, ServerInstanceUpdateSchema, ServerTemplateSchema, ServerConfigSchema, LoggingConfigSchema, SecurityConfigSchema, SystemConfigSchema, ServerInstanceConfigSchema };
11
+ export type { SystemConfig, ServerConfig, ServerTemplate, ServerInstance, ServerInstanceUpdate, TagDefinition, ServerInstanceConfig, ServerRuntimeConfig };
31
12
  /**
32
- * Logging Configuration Schema
13
+ * Simplified type guard - only check for legacy v1.0 format for migration
33
14
  */
34
- export declare const LoggingConfigSchema: z.ZodDefault<z.ZodObject<{
35
- level: z.ZodDefault<z.ZodCustom<LogLevel, LogLevel>>;
36
- rotationAge: z.ZodDefault<z.ZodString>;
37
- jsonPretty: z.ZodDefault<z.ZodBoolean>;
38
- mcpCommDebug: z.ZodDefault<z.ZodBoolean>;
39
- sessionDebug: z.ZodDefault<z.ZodBoolean>;
40
- }, z.core.$strip>>;
41
- /**
42
- * Security Configuration Schema
43
- */
44
- export declare const SecurityConfigSchema: z.ZodDefault<z.ZodObject<{
45
- allowedNetworks: z.ZodDefault<z.ZodArray<z.ZodString>>;
46
- maxConcurrentConnections: z.ZodDefault<z.ZodNumber>;
47
- connectionTimeout: z.ZodDefault<z.ZodNumber>;
48
- idleConnectionTimeout: z.ZodDefault<z.ZodNumber>;
49
- sessionTimeout: z.ZodDefault<z.ZodNumber>;
50
- sessionFlushInterval: z.ZodDefault<z.ZodNumber>;
51
- maxConnections: z.ZodDefault<z.ZodNumber>;
52
- }, z.core.$strip>>;
53
- /**
54
- * System Configuration Schema
55
- */
56
- export declare const SystemConfigSchema: z.ZodObject<{
57
- version: z.ZodDefault<z.ZodString>;
58
- system: z.ZodDefault<z.ZodObject<{
59
- host: z.ZodDefault<z.ZodString>;
60
- port: z.ZodDefault<z.ZodNumber>;
61
- language: z.ZodDefault<z.ZodEnum<{
62
- zh: "zh";
63
- en: "en";
64
- }>>;
65
- theme: z.ZodDefault<z.ZodEnum<{
66
- light: "light";
67
- dark: "dark";
68
- system: "system";
69
- }>>;
70
- logging: z.ZodDefault<z.ZodObject<{
71
- level: z.ZodDefault<z.ZodCustom<LogLevel, LogLevel>>;
72
- rotationAge: z.ZodDefault<z.ZodString>;
73
- jsonPretty: z.ZodDefault<z.ZodBoolean>;
74
- mcpCommDebug: z.ZodDefault<z.ZodBoolean>;
75
- sessionDebug: z.ZodDefault<z.ZodBoolean>;
76
- }, z.core.$strip>>;
77
- }, z.core.$strip>>;
78
- security: z.ZodDefault<z.ZodObject<{
79
- allowedNetworks: z.ZodDefault<z.ZodArray<z.ZodString>>;
80
- maxConcurrentConnections: z.ZodDefault<z.ZodNumber>;
81
- connectionTimeout: z.ZodDefault<z.ZodNumber>;
82
- idleConnectionTimeout: z.ZodDefault<z.ZodNumber>;
83
- sessionTimeout: z.ZodDefault<z.ZodNumber>;
84
- sessionFlushInterval: z.ZodDefault<z.ZodNumber>;
85
- maxConnections: z.ZodDefault<z.ZodNumber>;
86
- }, z.core.$strip>>;
87
- servers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
88
- command: z.ZodOptional<z.ZodString>;
89
- args: z.ZodDefault<z.ZodArray<z.ZodString>>;
90
- env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
91
- enabled: z.ZodDefault<z.ZodBoolean>;
92
- tags: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
93
- type: z.ZodDefault<z.ZodEnum<{
94
- stdio: "stdio";
95
- sse: "sse";
96
- "streamable-http": "streamable-http";
97
- http: "http";
98
- }>>;
99
- timeout: z.ZodDefault<z.ZodNumber>;
100
- url: z.ZodOptional<z.ZodString>;
101
- allowedTools: z.ZodDefault<z.ZodArray<z.ZodString>>;
102
- description: z.ZodOptional<z.ZodString>;
103
- }, z.core.$strip>>>;
104
- }, z.core.$strip>;
105
- export type SystemConfig = z.infer<typeof SystemConfigSchema>;
106
- export type ServerConfig = z.infer<typeof ServerConfigSchema>;
107
- export type ServerInstanceConfig = z.infer<typeof ServerInstanceConfigSchema>;
15
+ export declare function isLegacyV1Config(config: unknown): boolean;
108
16
  //# sourceMappingURL=config.schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../../../src/config/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAE9D;;;GAGG;AAGH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;iBAW7B,CAAC;AAGH,eAAO,MAAM,0BAA0B;;;;;;iBAMrC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;kBAc5B,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;kBA0B7B,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyB7B,CAAC;AAGH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
1
+ {"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../../../src/config/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACzB,MAAM,gCAAgC,CAAC;AAExC;;;;;;;GAOG;AAGH,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC3B,CAAC;AAEF,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACpB,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAIzD"}