@loop_ouroboros/mcp-hub-lite 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/dist/client/assets/{HomeView-Cr1jX73N.js → HomeView-Bu2joUvW.js} +1 -1
  3. package/dist/client/assets/ResourceDetailView-BvrhDCD1.js +1 -0
  4. package/dist/client/assets/ResourceDetailView-DUJZbegl.css +1 -0
  5. package/dist/client/assets/ResourcesView-Cc8RHtia.css +1 -0
  6. package/dist/client/assets/ResourcesView-LjqioF_s.js +1 -0
  7. package/dist/client/assets/ServerDashboard-BfLeFDGw.css +1 -0
  8. package/dist/client/assets/ServerDashboard-FhHJFvUi.js +1 -0
  9. package/dist/client/assets/ServerDetail-BKV-M4qT.js +2 -0
  10. package/dist/client/assets/ServerDetail-CtnNKJGx.css +1 -0
  11. package/dist/client/assets/{ServerListView-Bws09jNR.css → ServerListView-B-bPljsO.css} +1 -1
  12. package/dist/client/assets/ServerListView-BXgtDyt3.js +36 -0
  13. package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-D-ooYNdN.js +1 -0
  14. package/dist/client/assets/SettingsView-CMFG91Z4.js +1 -0
  15. package/dist/client/assets/SettingsView-GkBOKL0V.css +1 -0
  16. package/dist/client/assets/ToolCallDialog-Bf4Xe4gH.js +1 -0
  17. package/dist/client/assets/ToolsView-DFpha1z0.js +1 -0
  18. package/dist/client/assets/_baseClone-Bp9Rjwd7.js +1 -0
  19. package/dist/client/assets/el-form-item-B4LbJ6OO.css +1 -0
  20. package/dist/client/assets/el-form-item-DdSUWYsl.js +12 -0
  21. package/dist/client/assets/el-input-99gMrutP.js +1 -0
  22. package/dist/client/assets/el-input-BH4BZKnG.css +1 -0
  23. package/dist/client/assets/{el-loading-Csv24uBk.js → el-loading-CIQ5pD5u.js} +1 -1
  24. package/dist/client/assets/el-overlay-BVM6msGX.js +1 -0
  25. package/dist/client/assets/{el-select-C0U_l4IZ.css → el-overlay-CBvdpA69.css} +1 -1
  26. package/dist/client/assets/{ResourceDetailView-BdOaL_-o.css → el-radio-group-B0bauIRR.css} +1 -1
  27. package/dist/client/assets/el-radio-group-DhXWy7ry.js +1 -0
  28. package/dist/client/assets/el-skeleton-item-BLY1jEuR.css +1 -0
  29. package/dist/client/assets/el-skeleton-item-DJz-Us12.js +1 -0
  30. package/dist/client/assets/el-switch-BBrS-_6y.css +1 -0
  31. package/dist/client/assets/el-switch-Bu8AQ5uM.js +1 -0
  32. package/dist/client/assets/el-tab-pane-BnGMaV56.js +1 -0
  33. package/dist/client/assets/el-table-column-BMWOaLS_.js +1 -0
  34. package/dist/client/assets/el-table-column-BdvRS9Y2.css +1 -0
  35. package/dist/client/assets/index-C2V-ZGji.js +1 -0
  36. package/dist/client/assets/{index-BsDWtoIl.css → index-DpH6ZSbs.css} +1 -1
  37. package/dist/client/assets/index-vhkqgpmN.js +2 -0
  38. package/dist/client/assets/omit-CqPQN3XP.js +1 -0
  39. package/dist/client/assets/{raf-DDfJOMYh.js → raf-C2wXzaVU.js} +1 -1
  40. package/dist/client/assets/{vue-vendor-6ny5zj9i.js → vue-vendor-BLHLXXJK.js} +1 -1
  41. package/dist/client/index.html +3 -3
  42. package/dist/server/shared/models/resource.model.d.ts +2 -1
  43. package/dist/server/shared/models/resource.model.d.ts.map +1 -1
  44. package/dist/server/shared/models/server.model.d.ts +363 -5
  45. package/dist/server/shared/models/server.model.d.ts.map +1 -1
  46. package/dist/server/shared/models/server.model.js +220 -1
  47. package/dist/server/shared/models/session.model.d.ts +2 -56
  48. package/dist/server/shared/models/session.model.d.ts.map +1 -1
  49. package/dist/server/shared/models/session.model.js +2 -55
  50. package/dist/server/shared/models/tool.model.d.ts +4 -2
  51. package/dist/server/shared/models/tool.model.d.ts.map +1 -1
  52. package/dist/server/shared/types/client.types.d.ts +4 -32
  53. package/dist/server/shared/types/client.types.d.ts.map +1 -1
  54. package/dist/server/shared/types/client.types.js +3 -2
  55. package/dist/server/shared/types/index.d.ts +3 -3
  56. package/dist/server/shared/types/index.d.ts.map +1 -1
  57. package/dist/server/shared/types/index.js +3 -3
  58. package/dist/server/shared/types/session-context.types.d.ts +35 -0
  59. package/dist/server/shared/types/session-context.types.d.ts.map +1 -0
  60. package/dist/server/shared/types/session-context.types.js +5 -0
  61. package/dist/server/shared/types/websocket.types.d.ts +17 -10
  62. package/dist/server/shared/types/websocket.types.d.ts.map +1 -1
  63. package/dist/server/src/api/mcp/debug-response-wrapper.d.ts.map +1 -1
  64. package/dist/server/src/api/mcp/debug-response-wrapper.js +26 -1
  65. package/dist/server/src/api/mcp/gateway.d.ts +1 -3
  66. package/dist/server/src/api/mcp/gateway.d.ts.map +1 -1
  67. package/dist/server/src/api/mcp/gateway.js +34 -61
  68. package/dist/server/src/api/mcp/session-context-extractor.d.ts +5 -5
  69. package/dist/server/src/api/mcp/session-context-extractor.d.ts.map +1 -1
  70. package/dist/server/src/api/mcp/session-context-extractor.js +15 -39
  71. package/dist/server/src/api/web/clients.js +2 -2
  72. package/dist/server/src/api/web/hub-tools.d.ts +2 -2
  73. package/dist/server/src/api/web/hub-tools.d.ts.map +1 -1
  74. package/dist/server/src/api/web/hub-tools.js +3 -54
  75. package/dist/server/src/api/web/mcp-status.d.ts +1 -1
  76. package/dist/server/src/api/web/mcp-status.d.ts.map +1 -1
  77. package/dist/server/src/api/web/mcp-status.js +71 -30
  78. package/dist/server/src/api/web/resources.d.ts.map +1 -1
  79. package/dist/server/src/api/web/resources.js +28 -22
  80. package/dist/server/src/api/web/search.d.ts +2 -16
  81. package/dist/server/src/api/web/search.d.ts.map +1 -1
  82. package/dist/server/src/api/web/search.js +24 -45
  83. package/dist/server/src/api/web/servers.d.ts +3 -3
  84. package/dist/server/src/api/web/servers.d.ts.map +1 -1
  85. package/dist/server/src/api/web/servers.js +70 -25
  86. package/dist/server/src/api/web/sessions.js +1 -1
  87. package/dist/server/src/api/ws/ws-handler.d.ts.map +1 -1
  88. package/dist/server/src/api/ws/ws-handler.js +4 -2
  89. package/dist/server/src/app.d.ts.map +1 -1
  90. package/dist/server/src/app.js +0 -4
  91. package/dist/server/src/cli/commands/list.js +2 -2
  92. package/dist/server/src/cli/commands/status.d.ts.map +1 -1
  93. package/dist/server/src/cli/commands/status.js +41 -30
  94. package/dist/server/src/cli/index.d.ts.map +1 -1
  95. package/dist/server/src/cli/index.js +2 -1
  96. package/dist/server/src/cli/server.d.ts +11 -2
  97. package/dist/server/src/cli/server.d.ts.map +1 -1
  98. package/dist/server/src/config/config-change-logger.d.ts +22 -0
  99. package/dist/server/src/config/config-change-logger.d.ts.map +1 -1
  100. package/dist/server/src/config/config-change-logger.js +135 -11
  101. package/dist/server/src/config/config-loader.d.ts +6 -5
  102. package/dist/server/src/config/config-loader.d.ts.map +1 -1
  103. package/dist/server/src/config/config-loader.js +54 -16
  104. package/dist/server/src/config/config-manager.d.ts +51 -43
  105. package/dist/server/src/config/config-manager.d.ts.map +1 -1
  106. package/dist/server/src/config/config-manager.js +84 -66
  107. package/dist/server/src/config/config-migrator.d.ts +82 -0
  108. package/dist/server/src/config/config-migrator.d.ts.map +1 -0
  109. package/dist/server/src/config/config-migrator.js +348 -0
  110. package/dist/server/src/config/config-saver.d.ts +2 -0
  111. package/dist/server/src/config/config-saver.d.ts.map +1 -1
  112. package/dist/server/src/config/config-saver.js +8 -2
  113. package/dist/server/src/config/config.schema.d.ts +10 -102
  114. package/dist/server/src/config/config.schema.d.ts.map +1 -1
  115. package/dist/server/src/config/config.schema.js +15 -98
  116. package/dist/server/src/config/path-validator.d.ts +27 -0
  117. package/dist/server/src/config/path-validator.d.ts.map +1 -0
  118. package/dist/server/src/config/path-validator.js +53 -0
  119. package/dist/server/src/config/server-config-manager.d.ts +37 -31
  120. package/dist/server/src/config/server-config-manager.d.ts.map +1 -1
  121. package/dist/server/src/config/server-config-manager.js +222 -66
  122. package/dist/server/src/config/type-converter.d.ts.map +1 -1
  123. package/dist/server/src/config/type-converter.js +3 -2
  124. package/dist/server/src/index.js +1 -1
  125. package/dist/server/src/models/event.model.d.ts +17 -10
  126. package/dist/server/src/models/event.model.d.ts.map +1 -1
  127. package/dist/server/src/models/server.model.d.ts +17 -3
  128. package/dist/server/src/models/server.model.d.ts.map +1 -1
  129. package/dist/server/src/models/server.model.js +2 -1
  130. package/dist/server/src/models/system-tools.constants.d.ts +10 -27
  131. package/dist/server/src/models/system-tools.constants.d.ts.map +1 -1
  132. package/dist/server/src/models/system-tools.constants.js +4 -8
  133. package/dist/server/src/pid/manager.d.ts.map +1 -1
  134. package/dist/server/src/pid/manager.js +2 -1
  135. package/dist/server/src/server/dev-server.js +34 -20
  136. package/dist/server/src/server/runner.d.ts.map +1 -1
  137. package/dist/server/src/server/runner.js +41 -26
  138. package/dist/server/src/services/client-tracker.service.d.ts +3 -128
  139. package/dist/server/src/services/client-tracker.service.d.ts.map +1 -1
  140. package/dist/server/src/services/client-tracker.service.js +4 -200
  141. package/dist/server/src/services/connection/connection-manager.d.ts +85 -103
  142. package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -1
  143. package/dist/server/src/services/connection/connection-manager.js +286 -241
  144. package/dist/server/src/services/connection/tool-cache.d.ts +27 -25
  145. package/dist/server/src/services/connection/tool-cache.d.ts.map +1 -1
  146. package/dist/server/src/services/connection/tool-cache.js +50 -55
  147. package/dist/server/src/services/gateway/gateway.service.d.ts +2 -0
  148. package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -1
  149. package/dist/server/src/services/gateway/gateway.service.js +15 -19
  150. package/dist/server/src/services/gateway/global-transport.d.ts +10 -0
  151. package/dist/server/src/services/gateway/global-transport.d.ts.map +1 -0
  152. package/dist/server/src/services/gateway/global-transport.js +42 -0
  153. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts.map +1 -1
  154. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.js +67 -65
  155. package/dist/server/src/services/gateway/request-handlers/index.d.ts +1 -1
  156. package/dist/server/src/services/gateway/request-handlers/index.d.ts.map +1 -1
  157. package/dist/server/src/services/gateway/request-handlers/index.js +1 -1
  158. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts +1 -4
  159. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -1
  160. package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +16 -55
  161. package/dist/server/src/services/gateway/request-handlers/initialize.constants.d.ts +35 -0
  162. package/dist/server/src/services/gateway/request-handlers/initialize.constants.d.ts.map +1 -0
  163. package/dist/server/src/services/gateway/request-handlers/initialize.constants.js +44 -0
  164. package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts.map +1 -1
  165. package/dist/server/src/services/gateway/request-handlers/resources-handler.js +5 -4
  166. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts.map +1 -1
  167. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.js +32 -77
  168. package/dist/server/src/services/gateway/request-handlers/tools-handler.d.ts.map +1 -1
  169. package/dist/server/src/services/gateway/request-handlers/tools-handler.js +4 -3
  170. package/dist/server/src/services/gateway/tool-list-generator.d.ts.map +1 -1
  171. package/dist/server/src/services/gateway/tool-list-generator.js +37 -16
  172. package/dist/server/src/services/gateway/types.d.ts +2 -1
  173. package/dist/server/src/services/gateway/types.d.ts.map +1 -1
  174. package/dist/server/src/services/hub-manager.service.d.ts +32 -238
  175. package/dist/server/src/services/hub-manager.service.d.ts.map +1 -1
  176. package/dist/server/src/services/hub-manager.service.js +89 -267
  177. package/dist/server/src/services/hub-tools/index.d.ts +1 -3
  178. package/dist/server/src/services/hub-tools/index.d.ts.map +1 -1
  179. package/dist/server/src/services/hub-tools/index.js +1 -2
  180. package/dist/server/src/services/hub-tools/instance-matcher.d.ts +62 -0
  181. package/dist/server/src/services/hub-tools/instance-matcher.d.ts.map +1 -0
  182. package/dist/server/src/services/hub-tools/instance-matcher.js +132 -0
  183. package/dist/server/src/services/hub-tools/instance-selector.d.ts +29 -0
  184. package/dist/server/src/services/hub-tools/instance-selector.d.ts.map +1 -0
  185. package/dist/server/src/services/hub-tools/instance-selector.js +103 -0
  186. package/dist/server/src/services/hub-tools/resource-generator.d.ts +25 -5
  187. package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -1
  188. package/dist/server/src/services/hub-tools/resource-generator.js +259 -64
  189. package/dist/server/src/services/hub-tools/server-selector.d.ts +26 -13
  190. package/dist/server/src/services/hub-tools/server-selector.d.ts.map +1 -1
  191. package/dist/server/src/services/hub-tools/server-selector.js +44 -37
  192. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts +1 -4
  193. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts.map +1 -1
  194. package/dist/server/src/services/hub-tools/system-tool-definitions.js +17 -80
  195. package/dist/server/src/services/hub-tools/tool-search.d.ts +7 -7
  196. package/dist/server/src/services/hub-tools/tool-search.d.ts.map +1 -1
  197. package/dist/server/src/services/hub-tools/tool-search.js +10 -4
  198. package/dist/server/src/services/hub-tools/types.d.ts +2 -2
  199. package/dist/server/src/services/hub-tools/types.d.ts.map +1 -1
  200. package/dist/server/src/services/hub-tools.service.d.ts +43 -72
  201. package/dist/server/src/services/hub-tools.service.d.ts.map +1 -1
  202. package/dist/server/src/services/hub-tools.service.js +185 -110
  203. package/dist/server/src/services/search/search-cache.d.ts +0 -19
  204. package/dist/server/src/services/search/search-cache.d.ts.map +1 -1
  205. package/dist/server/src/services/search/search-cache.js +0 -24
  206. package/dist/server/src/services/search/search-core.service.d.ts +5 -5
  207. package/dist/server/src/services/search/search-core.service.js +11 -11
  208. package/dist/server/src/services/session/session-manager.d.ts +12 -256
  209. package/dist/server/src/services/session/session-manager.d.ts.map +1 -1
  210. package/dist/server/src/services/session/session-manager.js +23 -583
  211. package/dist/server/src/services/session-tracker.service.d.ts +124 -0
  212. package/dist/server/src/services/session-tracker.service.d.ts.map +1 -0
  213. package/dist/server/src/services/session-tracker.service.js +176 -0
  214. package/dist/server/src/services/system-tool-handler.d.ts.map +1 -1
  215. package/dist/server/src/services/system-tool-handler.js +7 -17
  216. package/dist/server/src/utils/composite-key.d.ts +29 -0
  217. package/dist/server/src/utils/composite-key.d.ts.map +1 -0
  218. package/dist/server/src/utils/composite-key.js +39 -0
  219. package/dist/server/src/utils/error-handler.d.ts.map +1 -1
  220. package/dist/server/src/utils/error-handler.js +3 -2
  221. package/dist/server/src/utils/index.d.ts +2 -0
  222. package/dist/server/src/utils/index.d.ts.map +1 -1
  223. package/dist/server/src/utils/index.js +2 -0
  224. package/dist/server/src/utils/instance-id.d.ts +22 -0
  225. package/dist/server/src/utils/instance-id.d.ts.map +1 -0
  226. package/dist/server/src/utils/instance-id.js +59 -0
  227. package/dist/server/src/utils/json-utils.d.ts +4 -4
  228. package/dist/server/src/utils/json-utils.d.ts.map +1 -1
  229. package/dist/server/src/utils/json-utils.js +10 -4
  230. package/dist/server/src/utils/logger/dev-logger.d.ts +2 -1
  231. package/dist/server/src/utils/logger/dev-logger.d.ts.map +1 -1
  232. package/dist/server/src/utils/logger/log-colors.d.ts +1 -0
  233. package/dist/server/src/utils/logger/log-colors.d.ts.map +1 -1
  234. package/dist/server/src/utils/logger/log-colors.js +2 -1
  235. package/dist/server/src/utils/logger/log-context.d.ts +1 -0
  236. package/dist/server/src/utils/logger/log-context.d.ts.map +1 -1
  237. package/dist/server/src/utils/logger/log-formatter.d.ts +28 -0
  238. package/dist/server/src/utils/logger/log-formatter.d.ts.map +1 -1
  239. package/dist/server/src/utils/logger/log-formatter.js +287 -5
  240. package/dist/server/src/utils/logger/log-modules.d.ts +15 -12
  241. package/dist/server/src/utils/logger/log-modules.d.ts.map +1 -1
  242. package/dist/server/src/utils/logger/log-modules.js +8 -8
  243. package/dist/server/src/utils/logger/log-output.d.ts +2 -2
  244. package/dist/server/src/utils/logger/log-output.d.ts.map +1 -1
  245. package/dist/server/src/utils/logger/log-output.js +27 -6
  246. package/dist/server/src/utils/logger/logger.d.ts +13 -0
  247. package/dist/server/src/utils/logger/logger.d.ts.map +1 -1
  248. package/dist/server/src/utils/logger/logger.js +42 -7
  249. package/dist/server/src/utils/parameter-validator.d.ts +10 -0
  250. package/dist/server/src/utils/parameter-validator.d.ts.map +1 -0
  251. package/dist/server/src/utils/parameter-validator.js +53 -0
  252. package/dist/server/src/utils/process-tree.d.ts +49 -0
  253. package/dist/server/src/utils/process-tree.d.ts.map +1 -0
  254. package/dist/server/src/utils/process-tree.js +285 -0
  255. package/dist/server/src/utils/request-context.d.ts +12 -30
  256. package/dist/server/src/utils/request-context.d.ts.map +1 -1
  257. package/dist/server/src/utils/request-context.js +10 -30
  258. package/dist/server/src/utils/sort-utils.d.ts +40 -0
  259. package/dist/server/src/utils/sort-utils.d.ts.map +1 -0
  260. package/dist/server/src/utils/sort-utils.js +131 -0
  261. package/dist/server/src/utils/tool-args-parser.d.ts +0 -4
  262. package/dist/server/src/utils/tool-args-parser.d.ts.map +1 -1
  263. package/dist/server/src/utils/tool-args-parser.js +0 -7
  264. package/dist/server/src/utils/transports/sse-transport.d.ts +16 -1
  265. package/dist/server/src/utils/transports/sse-transport.d.ts.map +1 -1
  266. package/dist/server/src/utils/transports/sse-transport.js +55 -9
  267. package/dist/server/src/utils/transports/stdio-transport.d.ts +24 -53
  268. package/dist/server/src/utils/transports/stdio-transport.d.ts.map +1 -1
  269. package/dist/server/src/utils/transports/stdio-transport.js +66 -247
  270. package/dist/server/src/utils/transports/streamable-http-transport.d.ts +24 -1
  271. package/dist/server/src/utils/transports/streamable-http-transport.d.ts.map +1 -1
  272. package/dist/server/src/utils/transports/streamable-http-transport.js +68 -8
  273. package/dist/server/src/utils/transports/transport-factory.d.ts +9 -4
  274. package/dist/server/src/utils/transports/transport-factory.d.ts.map +1 -1
  275. package/dist/server/src/utils/transports/transport-factory.js +33 -13
  276. package/dist/server/src/utils/transports/transport.interface.d.ts +6 -0
  277. package/dist/server/src/utils/transports/transport.interface.d.ts.map +1 -1
  278. package/dist/server/src/utils/version.d.ts +11 -0
  279. package/dist/server/src/utils/version.d.ts.map +1 -0
  280. package/dist/server/src/utils/version.js +57 -0
  281. package/dist/server/tests/contract/mcp-protocol/initialize.test.js +24 -24
  282. package/dist/server/tests/contract/mcp-protocol/tools-call.test.js +49 -45
  283. package/dist/server/tests/contract/mcp-protocol/tools-list.test.js +35 -36
  284. package/dist/server/tests/evaluation/evaluation.test.js +10 -9
  285. package/dist/server/tests/integration/api/gateway.test.js +24 -39
  286. package/dist/server/tests/integration/gateway/fault-tolerance.test.js +65 -25
  287. package/dist/server/tests/integration/gateway/mcp-connection.test.js +53 -61
  288. package/dist/server/tests/server.test.js +27 -16
  289. package/dist/server/tests/temp/temp-run-docling.d.ts +2 -0
  290. package/dist/server/tests/temp/temp-run-docling.d.ts.map +1 -0
  291. package/dist/server/tests/temp/temp-run-docling.js +53 -0
  292. package/dist/server/tests/temp/test-stack.d.ts +6 -0
  293. package/dist/server/tests/temp/test-stack.d.ts.map +1 -0
  294. package/dist/server/tests/temp/test-stack.js +40 -0
  295. package/dist/server/tests/types/test-helpers.d.ts +1 -2
  296. package/dist/server/tests/types/test-helpers.d.ts.map +1 -1
  297. package/dist/server/tests/unit/config/config-loader-automatic-migration.test.d.ts +2 -0
  298. package/dist/server/tests/unit/config/config-loader-automatic-migration.test.d.ts.map +1 -0
  299. package/dist/server/tests/unit/config/config-loader-automatic-migration.test.js +199 -0
  300. package/dist/server/tests/unit/config/config-migrator.test.d.ts +2 -0
  301. package/dist/server/tests/unit/config/config-migrator.test.d.ts.map +1 -0
  302. package/dist/server/tests/unit/config/config-migrator.test.js +316 -0
  303. package/dist/server/tests/unit/config/config-saver.test.d.ts +2 -0
  304. package/dist/server/tests/unit/config/config-saver.test.d.ts.map +1 -0
  305. package/dist/server/tests/unit/config/config-saver.test.js +200 -0
  306. package/dist/server/tests/unit/config/config.schema.test.d.ts +2 -0
  307. package/dist/server/tests/unit/config/config.schema.test.d.ts.map +1 -0
  308. package/dist/server/tests/unit/config/config.schema.test.js +347 -0
  309. package/dist/server/tests/unit/server/runner.test.js +86 -62
  310. package/dist/server/tests/unit/services/connection/connection-manager.test.d.ts +2 -0
  311. package/dist/server/tests/unit/services/connection/connection-manager.test.d.ts.map +1 -0
  312. package/dist/server/tests/unit/services/connection/connection-manager.test.js +112 -0
  313. package/dist/server/tests/unit/services/hub-manager-service.test.js +112 -46
  314. package/dist/server/tests/unit/services/hub-manager.test.js +25 -15
  315. package/dist/server/tests/unit/services/hub-tools/instance-selector.test.d.ts +2 -0
  316. package/dist/server/tests/unit/services/hub-tools/instance-selector.test.d.ts.map +1 -0
  317. package/dist/server/tests/unit/services/hub-tools/instance-selector.test.js +195 -0
  318. package/dist/server/tests/unit/services/hub-tools/server-selector.test.d.ts +2 -0
  319. package/dist/server/tests/unit/services/hub-tools/server-selector.test.d.ts.map +1 -0
  320. package/dist/server/tests/unit/services/hub-tools/server-selector.test.js +190 -0
  321. package/dist/server/tests/unit/services/hub-tools.service.test.js +560 -334
  322. package/dist/server/tests/unit/services/instance-matcher.test.d.ts +2 -0
  323. package/dist/server/tests/unit/services/instance-matcher.test.d.ts.map +1 -0
  324. package/dist/server/tests/unit/services/instance-matcher.test.js +256 -0
  325. package/dist/server/tests/unit/services/session-manager.test.js +26 -436
  326. package/dist/server/tests/unit/utils/config.test.js +88 -186
  327. package/dist/server/tests/unit/utils/json-utils.test.js +107 -13
  328. package/dist/server/tests/unit/utils/logger-formatter.test.d.ts +2 -0
  329. package/dist/server/tests/unit/utils/logger-formatter.test.d.ts.map +1 -0
  330. package/dist/server/tests/unit/utils/logger-formatter.test.js +66 -0
  331. package/dist/server/tests/unit/utils/logger.test.js +101 -0
  332. package/dist/server/tests/unit/utils/parameter-validator.test.d.ts +2 -0
  333. package/dist/server/tests/unit/utils/parameter-validator.test.d.ts.map +1 -0
  334. package/dist/server/tests/unit/utils/parameter-validator.test.js +63 -0
  335. package/dist/server/tests/unit/utils/process-tree.test.d.ts +2 -0
  336. package/dist/server/tests/unit/utils/process-tree.test.d.ts.map +1 -0
  337. package/dist/server/tests/unit/utils/process-tree.test.js +129 -0
  338. package/dist/server/tests/unit/utils/request-context.test.js +9 -28
  339. package/dist/server/tests/unit/utils/sort-utils.test.d.ts +2 -0
  340. package/dist/server/tests/unit/utils/sort-utils.test.d.ts.map +1 -0
  341. package/dist/server/tests/unit/utils/sort-utils.test.js +220 -0
  342. package/dist/server/tests/unit/utils/transport-factory.test.d.ts +2 -0
  343. package/dist/server/tests/unit/utils/transport-factory.test.d.ts.map +1 -0
  344. package/dist/server/tests/unit/utils/transport-factory.test.js +55 -0
  345. package/package.json +1 -1
  346. package/dist/client/assets/ResourceDetailView-BQ49hk0c.js +0 -1
  347. package/dist/client/assets/ResourcesView-BYZfWtia.js +0 -1
  348. package/dist/client/assets/ResourcesView-CjMklkyv.css +0 -1
  349. package/dist/client/assets/ServerDashboard-7_8Og9JJ.css +0 -1
  350. package/dist/client/assets/ServerDashboard-DHcxwKeh.js +0 -2
  351. package/dist/client/assets/ServerListView-DralUL71.js +0 -30
  352. package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-BHiTFM7-.js +0 -1
  353. package/dist/client/assets/SessionsView-BCGRTqem.js +0 -1
  354. package/dist/client/assets/SettingsView-BLfxa6PZ.js +0 -1
  355. package/dist/client/assets/ToolCallDialog-DQ0OQ1mD.js +0 -1
  356. package/dist/client/assets/ToolsView-BLB6x3tC.js +0 -1
  357. package/dist/client/assets/_baseClone-Bo5mBgsT.js +0 -1
  358. package/dist/client/assets/el-form-item-BVMLpmVC.css +0 -1
  359. package/dist/client/assets/el-form-item-BmeJKVSi.js +0 -12
  360. package/dist/client/assets/el-input-CeZiq23m.js +0 -1
  361. package/dist/client/assets/el-input-CmuHb8HS.css +0 -1
  362. package/dist/client/assets/el-overlay-B2ZKM6Up.css +0 -1
  363. package/dist/client/assets/el-overlay-iw_hrrlC.js +0 -1
  364. package/dist/client/assets/el-select-B73uRP_Y.js +0 -1
  365. package/dist/client/assets/el-tab-pane-BgOTBn4X.js +0 -1
  366. package/dist/client/assets/el-table-column-Ld4GSD3x.js +0 -1
  367. package/dist/client/assets/el-table-column-T_mV9jNw.css +0 -1
  368. package/dist/client/assets/el-tag-DYmSo8Bx.js +0 -1
  369. package/dist/client/assets/el-tag-DjxZVOpb.css +0 -1
  370. package/dist/client/assets/index-COYaYRbH.js +0 -1
  371. package/dist/client/assets/index-Cfcvxyee.js +0 -2
  372. package/dist/client/assets/index-PhuI36Zi.js +0 -1
  373. package/dist/client/assets/omit-7EL6VJO4.js +0 -1
  374. package/dist/client/assets/vnode-upjuIlvm.js +0 -1
@@ -1,73 +1,19 @@
1
1
  import { z } from 'zod';
2
2
  /**
3
3
  * Session State Schema
4
- * Represents the persistent state of a client session
4
+ * Represents the state of a client session (in-memory only)
5
5
  */
6
6
  export declare const SessionStateSchema: z.ZodObject<{
7
7
  sessionId: z.ZodString;
8
8
  clientName: z.ZodOptional<z.ZodString>;
9
9
  clientVersion: z.ZodOptional<z.ZodString>;
10
10
  protocolVersion: z.ZodOptional<z.ZodString>;
11
- cwd: z.ZodOptional<z.ZodString>;
12
- project: z.ZodOptional<z.ZodString>;
13
11
  userAgent: z.ZodOptional<z.ZodString>;
14
12
  ip: z.ZodOptional<z.ZodString>;
13
+ capabilities: z.ZodOptional<z.ZodAny>;
15
14
  createdAt: z.ZodNumber;
16
15
  lastAccessedAt: z.ZodNumber;
17
16
  metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodAny>>;
18
17
  }, z.core.$strip>;
19
18
  export type SessionState = z.infer<typeof SessionStateSchema>;
20
- /**
21
- * Session Store Schema
22
- * Container for all persisted sessions
23
- */
24
- export declare const SessionStoreSchema: z.ZodObject<{
25
- version: z.ZodDefault<z.ZodString>;
26
- sessions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
27
- sessionId: z.ZodString;
28
- clientName: z.ZodOptional<z.ZodString>;
29
- clientVersion: z.ZodOptional<z.ZodString>;
30
- protocolVersion: z.ZodOptional<z.ZodString>;
31
- cwd: z.ZodOptional<z.ZodString>;
32
- project: z.ZodOptional<z.ZodString>;
33
- userAgent: z.ZodOptional<z.ZodString>;
34
- ip: z.ZodOptional<z.ZodString>;
35
- createdAt: z.ZodNumber;
36
- lastAccessedAt: z.ZodNumber;
37
- metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodAny>>;
38
- }, z.core.$strip>>>;
39
- }, z.core.$strip>;
40
- export type SessionStore = z.infer<typeof SessionStoreSchema>;
41
- /**
42
- * Create a new empty session store
43
- */
44
- export declare function createEmptySessionStore(): SessionStore;
45
- /**
46
- * Validates and normalizes session store data using Zod schema validation.
47
- *
48
- * This function takes raw session store data (typically parsed from JSON) and validates it
49
- * against the SessionStoreSchema. If validation succeeds, it returns the validated and
50
- * normalized data. If validation fails, it returns an empty session store with default values.
51
- *
52
- * The function uses safeParse to prevent exceptions during validation, making it safe to use
53
- * with untrusted or potentially corrupted data sources like persisted JSON files.
54
- *
55
- * @param {unknown} data - Raw session store data to validate (typically from JSON.parse)
56
- * @returns {SessionStore} Validated session store data, or an empty store if validation fails
57
- *
58
- * @example
59
- * ```typescript
60
- * // Validate data from a JSON file
61
- * // Note: In practice, sessions are stored in a directory structure:
62
- * // - sessions/index.json (contains session ID list)
63
- * // - sessions/{sessionId}.json (individual session files)
64
- * const validatedStore = validateSessionStore(rawData);
65
- *
66
- * // Use the validated store
67
- * Object.keys(validatedStore.sessions).forEach(sessionId => {
68
- * console.log(`Session: ${sessionId}`);
69
- * });
70
- * ```
71
- */
72
- export declare function validateSessionStore(data: unknown): SessionStore;
73
19
  //# sourceMappingURL=session.model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.model.d.ts","sourceRoot":"","sources":["../../../../shared/models/session.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;iBAY7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;iBAG7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,YAAY,CAKtD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,CAOhE"}
1
+ {"version":3,"file":"session.model.d.ts","sourceRoot":"","sources":["../../../../shared/models/session.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;iBAW7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -1,70 +1,17 @@
1
1
  import { z } from 'zod';
2
2
  /**
3
3
  * Session State Schema
4
- * Represents the persistent state of a client session
4
+ * Represents the state of a client session (in-memory only)
5
5
  */
6
6
  export const SessionStateSchema = z.object({
7
7
  sessionId: z.string(),
8
8
  clientName: z.string().optional(),
9
9
  clientVersion: z.string().optional(),
10
10
  protocolVersion: z.string().optional(),
11
- cwd: z.string().optional(),
12
- project: z.string().optional(),
13
11
  userAgent: z.string().optional(),
14
12
  ip: z.string().optional(),
13
+ capabilities: z.any().optional(),
15
14
  createdAt: z.number(),
16
15
  lastAccessedAt: z.number(),
17
16
  metadata: z.record(z.string(), z.any()).default({})
18
17
  });
19
- /**
20
- * Session Store Schema
21
- * Container for all persisted sessions
22
- */
23
- export const SessionStoreSchema = z.object({
24
- version: z.string().default('1.0.0'),
25
- sessions: z.record(z.string(), SessionStateSchema).default({})
26
- });
27
- /**
28
- * Create a new empty session store
29
- */
30
- export function createEmptySessionStore() {
31
- return {
32
- version: '1.0.0',
33
- sessions: {}
34
- };
35
- }
36
- /**
37
- * Validates and normalizes session store data using Zod schema validation.
38
- *
39
- * This function takes raw session store data (typically parsed from JSON) and validates it
40
- * against the SessionStoreSchema. If validation succeeds, it returns the validated and
41
- * normalized data. If validation fails, it returns an empty session store with default values.
42
- *
43
- * The function uses safeParse to prevent exceptions during validation, making it safe to use
44
- * with untrusted or potentially corrupted data sources like persisted JSON files.
45
- *
46
- * @param {unknown} data - Raw session store data to validate (typically from JSON.parse)
47
- * @returns {SessionStore} Validated session store data, or an empty store if validation fails
48
- *
49
- * @example
50
- * ```typescript
51
- * // Validate data from a JSON file
52
- * // Note: In practice, sessions are stored in a directory structure:
53
- * // - sessions/index.json (contains session ID list)
54
- * // - sessions/{sessionId}.json (individual session files)
55
- * const validatedStore = validateSessionStore(rawData);
56
- *
57
- * // Use the validated store
58
- * Object.keys(validatedStore.sessions).forEach(sessionId => {
59
- * console.log(`Session: ${sessionId}`);
60
- * });
61
- * ```
62
- */
63
- export function validateSessionStore(data) {
64
- const result = SessionStoreSchema.safeParse(data);
65
- if (result.success) {
66
- return result.data;
67
- }
68
- // Return empty store if validation fails
69
- return createEmptySessionStore();
70
- }
@@ -12,11 +12,13 @@ export interface ToolAnnotations {
12
12
  idempotentHint?: boolean;
13
13
  openWorldHint?: boolean;
14
14
  }
15
- export interface Tool {
15
+ export interface ToolSummary {
16
16
  name: string;
17
17
  description?: string;
18
- inputSchema?: JsonSchema;
19
18
  serverName: string;
19
+ }
20
+ export interface Tool extends ToolSummary {
21
+ inputSchema?: JsonSchema;
20
22
  annotations?: ToolAnnotations;
21
23
  }
22
24
  //# sourceMappingURL=tool.model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool.model.d.ts","sourceRoot":"","sources":["../../../../shared/models/tool.model.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAGD,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAGD,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B"}
1
+ {"version":3,"file":"tool.model.d.ts","sourceRoot":"","sources":["../../../../shared/models/tool.model.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAGD,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAGD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B"}
@@ -1,35 +1,7 @@
1
1
  /**
2
- * Client Types
3
- * Shared client session types between frontend and backend
2
+ * @deprecated This file is deprecated. Please import from './session-context.types.js' instead.
3
+ *
4
+ * Client Types (Deprecated - maintained for backward compatibility)
4
5
  */
5
- /**
6
- * Workspace root information
7
- */
8
- export interface ClientRoot {
9
- uri: string;
10
- name?: string;
11
- }
12
- /**
13
- * Basic request context - for AsyncLocalStorage
14
- * Contains the minimal set of fields required for requests
15
- */
16
- export interface ClientContext {
17
- sessionId: string;
18
- clientName?: string;
19
- clientVersion?: string;
20
- protocolVersion?: string;
21
- cwd?: string;
22
- project?: string;
23
- ip?: string;
24
- userAgent?: string;
25
- timestamp: number;
26
- }
27
- /**
28
- * Complete client information - for tracking and display
29
- * Extends ClientContext with runtime state
30
- */
31
- export interface ClientInfo extends ClientContext {
32
- lastSeen: number;
33
- roots?: ClientRoot[];
34
- }
6
+ export type { SessionRoot as ClientRoot, SessionContext as ClientContext, SessionInfo as ClientInfo } from './session-context.types.js';
35
7
  //# sourceMappingURL=client.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.types.d.ts","sourceRoot":"","sources":["../../../../shared/types/client.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAW,SAAQ,aAAa;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;CACtB"}
1
+ {"version":3,"file":"client.types.d.ts","sourceRoot":"","sources":["../../../../shared/types/client.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,WAAW,IAAI,UAAU,EACzB,cAAc,IAAI,aAAa,EAC/B,WAAW,IAAI,UAAU,EAC1B,MAAM,4BAA4B,CAAC"}
@@ -1,5 +1,6 @@
1
1
  /**
2
- * Client Types
3
- * Shared client session types between frontend and backend
2
+ * @deprecated This file is deprecated. Please import from './session-context.types.js' instead.
3
+ *
4
+ * Client Types (Deprecated - maintained for backward compatibility)
4
5
  */
5
6
  export {};
@@ -1,4 +1,4 @@
1
- export * from './client.types';
2
- export * from './common.types';
3
- export * from './websocket.types';
1
+ export type { SessionContext, SessionInfo, SessionRoot } from './session-context.types.js';
2
+ export * from './common.types.js';
3
+ export * from './websocket.types.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../shared/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../shared/types/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG3F,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
@@ -1,3 +1,3 @@
1
- export * from './client.types';
2
- export * from './common.types';
3
- export * from './websocket.types';
1
+ // Other types
2
+ export * from './common.types.js';
3
+ export * from './websocket.types.js';
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Session Context Types
3
+ * Shared session context types between frontend and backend
4
+ */
5
+ import type { ClientCapabilities } from '@modelcontextprotocol/sdk/types.js';
6
+ /**
7
+ * Workspace root information
8
+ */
9
+ export interface SessionRoot {
10
+ uri: string;
11
+ name?: string;
12
+ }
13
+ /**
14
+ * Basic request context - for AsyncLocalStorage
15
+ * Contains the minimal set of fields required for requests
16
+ */
17
+ export interface SessionContext {
18
+ sessionId: string;
19
+ clientName?: string;
20
+ clientVersion?: string;
21
+ protocolVersion?: string;
22
+ ip?: string;
23
+ userAgent?: string;
24
+ capabilities?: ClientCapabilities;
25
+ timestamp: number;
26
+ }
27
+ /**
28
+ * Complete session information - for tracking and display
29
+ * Extends SessionContext with runtime state
30
+ */
31
+ export interface SessionInfo extends SessionContext {
32
+ lastSeen: number;
33
+ roots?: SessionRoot[];
34
+ }
35
+ //# sourceMappingURL=session-context.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-context.types.d.ts","sourceRoot":"","sources":["../../../../shared/types/session-context.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;CACvB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Session Context Types
3
+ * Shared session context types between frontend and backend
4
+ */
5
+ export {};
@@ -39,7 +39,8 @@ export interface PingMessage {
39
39
  }
40
40
  export interface FetchLogsMessage {
41
41
  type: 'fetch-logs';
42
- serverId: string;
42
+ serverName: string;
43
+ serverIndex: number;
43
44
  limit?: number;
44
45
  since?: number;
45
46
  }
@@ -47,7 +48,8 @@ export type ClientMessage = SubscribeMessage | UnsubscribeMessage | PingMessage
47
48
  export interface ServerStatusEvent {
48
49
  type: 'server-status';
49
50
  data: {
50
- serverId: string;
51
+ serverName: string;
52
+ serverIndex: number;
51
53
  status: 'online' | 'offline' | 'error';
52
54
  error?: string;
53
55
  timestamp: number;
@@ -56,7 +58,8 @@ export interface ServerStatusEvent {
56
58
  export interface LogEvent {
57
59
  type: 'log';
58
60
  data: {
59
- serverId: string;
61
+ serverName: string;
62
+ serverIndex: number;
60
63
  logs: Array<{
61
64
  level: LogLevel;
62
65
  message: string;
@@ -67,14 +70,16 @@ export interface LogEvent {
67
70
  export interface ToolsEvent {
68
71
  type: 'tools';
69
72
  data: {
70
- serverId: string;
73
+ serverName: string;
74
+ serverIndex: number;
71
75
  tools: Tool[];
72
76
  };
73
77
  }
74
78
  export interface ResourcesEvent {
75
79
  type: 'resources';
76
80
  data: {
77
- serverId: string;
81
+ serverName: string;
82
+ serverIndex: number;
78
83
  resources: Resource[];
79
84
  };
80
85
  }
@@ -93,7 +98,8 @@ export interface ServerDeletedEvent {
93
98
  export interface ServerConnectedEvent {
94
99
  type: 'server-connected';
95
100
  data: {
96
- serverId: string;
101
+ serverName: string;
102
+ serverIndex: number;
97
103
  status: 'online';
98
104
  timestamp: number;
99
105
  };
@@ -101,7 +107,8 @@ export interface ServerConnectedEvent {
101
107
  export interface ServerDisconnectedEvent {
102
108
  type: 'server-disconnected';
103
109
  data: {
104
- serverId: string;
110
+ serverName: string;
111
+ serverIndex: number;
105
112
  status: 'offline';
106
113
  timestamp: number;
107
114
  };
@@ -114,8 +121,8 @@ export interface ToolCallStartedEvent {
114
121
  type: 'tool-call-started';
115
122
  data: {
116
123
  requestId: string;
117
- serverId: string;
118
124
  serverName: string;
125
+ serverIndex: number;
119
126
  toolName: string;
120
127
  timestamp: number;
121
128
  args: Record<string, unknown>;
@@ -125,8 +132,8 @@ export interface ToolCallCompletedEvent {
125
132
  type: 'tool-call-completed';
126
133
  data: {
127
134
  requestId: string;
128
- serverId: string;
129
135
  serverName: string;
136
+ serverIndex: number;
130
137
  toolName: string;
131
138
  timestamp: number;
132
139
  result: unknown;
@@ -136,8 +143,8 @@ export interface ToolCallErrorEvent {
136
143
  type: 'tool-call-error';
137
144
  data: {
138
145
  requestId: string;
139
- serverId: string;
140
146
  serverName: string;
147
+ serverIndex: number;
141
148
  toolName: string;
142
149
  timestamp: number;
143
150
  error: string;
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.types.d.ts","sourceRoot":"","sources":["../../../../shared/types/websocket.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocket.types.d.ts","sourceRoot":"","sources":["../../../../shared/types/websocket.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"debug-response-wrapper.d.ts","sourceRoot":"","sources":["../../../../../src/api/mcp/debug-response-wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAW5C;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAmR9E"}
1
+ {"version":3,"file":"debug-response-wrapper.d.ts","sourceRoot":"","sources":["../../../../../src/api/mcp/debug-response-wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAW5C;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAyS9E"}
@@ -78,7 +78,32 @@ export function wrapReplyForDebug(reply, sessionId) {
78
78
  let logResponse = primaryBuffer;
79
79
  try {
80
80
  if (isToolsListResponse(logResponse)) {
81
- logResponse = simplifyToolsListResponse(logResponse);
81
+ const simplified = simplifyToolsListResponse(logResponse);
82
+ if (simplified !== null) {
83
+ logResponse = simplified;
84
+ }
85
+ else {
86
+ // Could not simplify, format as pretty JSON
87
+ try {
88
+ // Handle SSE format
89
+ if (logResponse.includes('event: message') && logResponse.includes('data:')) {
90
+ const dataMatch = logResponse.match(/data: ([^\n]+)/);
91
+ if (dataMatch) {
92
+ const jsonData = dataMatch[1].trim();
93
+ const parsed = JSON.parse(jsonData);
94
+ const formattedData = stringifyForLogging(parsed);
95
+ logResponse = `event: message\ndata: ${formattedData}`;
96
+ }
97
+ }
98
+ else {
99
+ const parsed = JSON.parse(logResponse);
100
+ logResponse = stringifyForLogging(parsed);
101
+ }
102
+ }
103
+ catch {
104
+ // If parsing fails, use original
105
+ }
106
+ }
82
107
  }
83
108
  else if (hasImageContent(logResponse)) {
84
109
  // Simplify image content first
@@ -1,8 +1,6 @@
1
1
  /**
2
- * MCP Gateway endpoint using Streamable HTTP Transport
2
+ * MCP Gateway endpoint using Streamable HTTP Transport (stateless mode)
3
3
  * Handles all MCP protocol requests at /mcp endpoint
4
- *
5
- * This is a thin wrapper around modular utilities for better maintainability.
6
4
  */
7
5
  import type { FastifyInstance } from 'fastify';
8
6
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../../../../src/api/mcp/gateway.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAU7E;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,eAAe,iBAmI9D"}
1
+ {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../../../../src/api/mcp/gateway.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAM7E;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,eAAe,iBA0F9D"}
@@ -1,17 +1,11 @@
1
1
  /**
2
- * MCP Gateway endpoint using Streamable HTTP Transport
2
+ * MCP Gateway endpoint using Streamable HTTP Transport (stateless mode)
3
3
  * Handles all MCP protocol requests at /mcp endpoint
4
- *
5
- * This is a thin wrapper around modular utilities for better maintainability.
6
4
  */
7
- import { logger, LOG_MODULES } from '../../utils/logger.js';
8
- import { stringifyForLogging } from '../../utils/json-utils.js';
9
- import { requestContext } from '../../utils/request-context.js';
10
- import { clientTrackerService } from '../../services/client-tracker.service.js';
11
- import { mcpSessionManager } from '../../services/mcp-session-manager.js';
12
- import { cleanupStaleSseStreams } from './sse-stream-manager.js';
13
- import { extractSessionContext } from './session-context-extractor.js';
5
+ import { logger, LOG_MODULES } from '../../utils/logger/index.js';
6
+ import { stringifyForLogging, getMcpCommDebugSetting } from '../../utils/json-utils.js';
14
7
  import { wrapReplyForDebug } from './debug-response-wrapper.js';
8
+ import { globalTransport } from '../../services/gateway/global-transport.js';
15
9
  /**
16
10
  * MCP Gateway routes registration.
17
11
  *
@@ -19,70 +13,49 @@ import { wrapReplyForDebug } from './debug-response-wrapper.js';
19
13
  */
20
14
  export async function mcpGatewayRoutes(fastify) {
21
15
  const handleMcpRequest = async (request, reply) => {
22
- // First, log that we received the request (before extracting session context)
23
- let initialLogMsg = `MCP Gateway ${request.method} ${request.url}`;
24
- // Combine headers and body into one log block
25
- initialLogMsg += `\n Request headers: ${stringifyForLogging(request.headers)}`;
26
- if (request.body) {
27
- try {
28
- const preview = stringifyForLogging(request.body);
29
- initialLogMsg += `\n Body: ${preview}`;
30
- }
31
- catch {
32
- initialLogMsg += `\n Body: [Unserializable]`;
16
+ // First, log that we received the request
17
+ if (getMcpCommDebugSetting()) {
18
+ let initialLogMsg = `MCP Gateway ${request.method} ${request.url}`;
19
+ // Combine headers and body into one log block
20
+ initialLogMsg += `\n Request headers: ${stringifyForLogging(request.headers)}`;
21
+ if (request.body) {
22
+ try {
23
+ const preview = stringifyForLogging(request.body);
24
+ initialLogMsg += `\n Body: ${preview}`;
25
+ }
26
+ catch {
27
+ initialLogMsg += `\n Body: [Unserializable]`;
28
+ }
33
29
  }
30
+ logger.debug(initialLogMsg, LOG_MODULES.COMMUNICATION);
34
31
  }
35
- logger.debug(initialLogMsg, LOG_MODULES.GATEWAY);
36
- const { sessionId, clientContext } = extractSessionContext(request);
37
- logger.info(`MCP Gateway ${request.method} ${request.url} [Session: ${sessionId}]`, LOG_MODULES.GATEWAY);
38
- // Update client tracking information
39
- clientTrackerService.updateClient(clientContext);
40
- // Log the session context after extraction
41
- let sessionLogMsg = `MCP Gateway Session Context [Session: ${sessionId}]`;
42
- if (clientContext.cwd)
43
- sessionLogMsg += ` [CWD: ${clientContext.cwd}]`;
44
- if (clientContext.clientName)
45
- sessionLogMsg += ` [Client: ${clientContext.clientName}]`;
46
- logger.debug(sessionLogMsg, LOG_MODULES.GATEWAY);
47
- reply.header('Content-Type', 'application/json');
48
- if (!request.headers['accept']) {
49
- request.headers['accept'] = 'application/json, text/event-stream';
32
+ // Reject GET requests without Accept: text/event-stream (health-check hook compatibility)
33
+ const accept = request.raw.headers['accept'] || '';
34
+ if (request.method === 'GET' && !accept.includes('text/event-stream')) {
35
+ reply.raw.writeHead(400, { 'Content-Type': 'application/json' });
36
+ reply.raw.end(JSON.stringify({
37
+ jsonrpc: '2.0',
38
+ error: { code: -32000, message: 'Bad Request: Accept: text/event-stream required' },
39
+ id: null
40
+ }));
41
+ return;
50
42
  }
51
- wrapReplyForDebug(reply, sessionId);
43
+ reply.header('Content-Type', 'application/json');
44
+ wrapReplyForDebug(reply, '');
52
45
  reply.hijack();
53
- const startTime = Date.now();
54
46
  try {
55
- // Determine if initialize request is needed
56
- // Only explicit initialize requests require SDK initialization handling
57
- // For all other requests (tools/list, etc.), skip initialization checks
58
- const isInitializeRequest = request.body?.method === 'initialize';
59
- const hasRestoredState = !!mcpSessionManager.getSessionState(sessionId);
60
- const requireInitialize = isInitializeRequest;
61
- logger.debug(`Request for session: ${sessionId}, method: ${request.body?.method || 'GET'}, isInitialize: ${isInitializeRequest}, hasRestoredState: ${hasRestoredState}, requireInitialize: ${requireInitialize}`, LOG_MODULES.GATEWAY);
62
- const session = await mcpSessionManager.getSession(sessionId, requireInitialize);
63
- // Proactive cleanup: For GET requests (SSE connections), clean up stale streams first
64
- // This prevents "Only one SSE stream is allowed per session" errors
65
- if (request.method === 'GET') {
66
- logger.debug(`Proactive SSE stream cleanup for session ${sessionId} before handling request`, LOG_MODULES.GATEWAY);
67
- cleanupStaleSseStreams(session.transport, sessionId);
68
- }
69
- await requestContext.run(clientContext, async () => {
70
- await session.transport.handleRequest(request.raw, reply.raw, request.body);
71
- });
72
- const duration = Date.now() - startTime;
73
- logger.info(`MCP Gateway response for ${sessionId}: handled in ${duration}ms`, LOG_MODULES.GATEWAY);
47
+ await globalTransport.handleRequest(request.raw, reply.raw, request.body);
74
48
  }
75
49
  catch (error) {
76
50
  const errorMessage = error instanceof Error ? error.message : String(error);
77
- logger.error(`Error handling MCP request for session ${sessionId}: ${errorMessage}`, error, LOG_MODULES.GATEWAY);
51
+ logger.error(`Error handling MCP request: ${errorMessage}`, error, LOG_MODULES.GATEWAY);
78
52
  if (!reply.raw.headersSent) {
79
53
  reply.raw.writeHead(500, { 'Content-Type': 'application/json' });
80
54
  reply.raw.end(JSON.stringify({
81
55
  jsonrpc: '2.0',
82
56
  error: {
83
57
  code: -32000,
84
- message: 'Internal Server Error',
85
- data: { sessionId }
58
+ message: 'Internal Server Error'
86
59
  },
87
60
  id: null
88
61
  }));
@@ -101,7 +74,7 @@ export async function mcpGatewayRoutes(fastify) {
101
74
  },
102
75
  handler: handleMcpRequest
103
76
  });
104
- // Handle any subpaths if client appends them (e.g. session-specific URLs)
77
+ // Handle any subpaths if client appends them
105
78
  fastify.all('/mcp/*', {
106
79
  bodyLimit: 10 * 1024 * 1024, // 10MB limit
107
80
  preHandler: (request, _reply, done) => {
@@ -3,7 +3,7 @@
3
3
  * Extracts and resolves session context from incoming requests.
4
4
  */
5
5
  import type { FastifyRequest } from 'fastify';
6
- import type { ClientContext } from '../../../shared/types/client.types.js';
6
+ import type { SessionContext } from '../../../shared/types/session-context.types.js';
7
7
  export interface RequestBody {
8
8
  method?: string;
9
9
  params?: {
@@ -30,18 +30,18 @@ export interface RequestBody {
30
30
  * project information, IP address, and user agent for comprehensive session tracking.
31
31
  *
32
32
  * @param {FastifyRequest<{ Body: RequestBody | null }>} request - Incoming Fastify request object
33
- * @returns {{ sessionId: string; clientContext: ClientContext }} Object containing resolved session ID and enriched client context
33
+ * @returns {{ sessionId: string; sessionContext: SessionContext }} Object containing resolved session ID and enriched session context
34
34
  *
35
35
  * @example
36
36
  * ```typescript
37
- * const { sessionId, clientContext } = extractSessionContext(request);
38
- * console.log(`Session: ${sessionId}, Client: ${clientContext.clientName}`);
37
+ * const { sessionId, sessionContext } = extractSessionContext(request);
38
+ * console.log(`Session: ${sessionId}, Client: ${sessionContext.clientName}`);
39
39
  * ```
40
40
  */
41
41
  export declare function extractSessionContext(request: FastifyRequest<{
42
42
  Body: RequestBody | null;
43
43
  }>): {
44
44
  sessionId: string;
45
- clientContext: ClientContext;
45
+ sessionContext: SessionContext;
46
46
  };
47
47
  //# sourceMappingURL=session-context-extractor.d.ts.map