@loop_ouroboros/mcp-hub-lite 1.0.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 (499) hide show
  1. package/CHANGELOG.md +228 -0
  2. package/LICENSE +21 -0
  3. package/README.md +354 -0
  4. package/dist/client/assets/HomeView-f901HeKw.js +1 -0
  5. package/dist/client/assets/ResourceDetailView-BdOaL_-o.css +1 -0
  6. package/dist/client/assets/ResourceDetailView-Bz66ZjfY.js +1 -0
  7. package/dist/client/assets/ResourcesView-CjMklkyv.css +1 -0
  8. package/dist/client/assets/ResourcesView-lI_fItfA.js +1 -0
  9. package/dist/client/assets/ServerDashboard-7_8Og9JJ.css +1 -0
  10. package/dist/client/assets/ServerDashboard-Bgx8WVkx.js +2 -0
  11. package/dist/client/assets/ServerListView-Bws09jNR.css +1 -0
  12. package/dist/client/assets/ServerListView-CP6Ffkfx.js +30 -0
  13. package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-BHiTFM7-.js +1 -0
  14. package/dist/client/assets/SessionsView-D68qKR4D.js +1 -0
  15. package/dist/client/assets/SettingsView-BPYfO9BE.js +1 -0
  16. package/dist/client/assets/ToolCallDialog-Br8FNebN.js +1 -0
  17. package/dist/client/assets/ToolCallDialog-C7eh7jHE.css +1 -0
  18. package/dist/client/assets/ToolsView-B6hUiR43.js +1 -0
  19. package/dist/client/assets/ToolsView-BLnU8cV6.css +1 -0
  20. package/dist/client/assets/_baseClone-DCmK847M.js +1 -0
  21. package/dist/client/assets/_plugin-vue_export-helper-DlAUqK2U.js +1 -0
  22. package/dist/client/assets/el-form-item-BVMLpmVC.css +1 -0
  23. package/dist/client/assets/el-form-item-DM0q2hmO.js +12 -0
  24. package/dist/client/assets/el-input-BtI9NECe.js +1 -0
  25. package/dist/client/assets/el-input-CmuHb8HS.css +1 -0
  26. package/dist/client/assets/el-loading-CChNmKeI.js +1 -0
  27. package/dist/client/assets/el-loading-bpKhqqQq.css +1 -0
  28. package/dist/client/assets/el-overlay-B2ZKM6Up.css +1 -0
  29. package/dist/client/assets/el-overlay-lZZbPmsX.js +1 -0
  30. package/dist/client/assets/el-select-BXztu2b5.js +1 -0
  31. package/dist/client/assets/el-select-C0U_l4IZ.css +1 -0
  32. package/dist/client/assets/el-tab-pane-CnNoQHsR.css +1 -0
  33. package/dist/client/assets/el-tab-pane-Dy9ruaEX.js +1 -0
  34. package/dist/client/assets/el-table-column-98UyVgBH.js +1 -0
  35. package/dist/client/assets/el-table-column-T_mV9jNw.css +1 -0
  36. package/dist/client/assets/el-tag-B5lLT51E.js +1 -0
  37. package/dist/client/assets/el-tag-DjxZVOpb.css +1 -0
  38. package/dist/client/assets/event-BB_Ol6Sd.js +1 -0
  39. package/dist/client/assets/index-BgKcmWJr.js +1 -0
  40. package/dist/client/assets/index-BsDWtoIl.css +1 -0
  41. package/dist/client/assets/index-BzQXG7no.js +1 -0
  42. package/dist/client/assets/index-CSTs2jYk.js +2 -0
  43. package/dist/client/assets/omit-Bx5HJNV_.js +1 -0
  44. package/dist/client/assets/raf-B9VDMtMF.js +1 -0
  45. package/dist/client/assets/typescript-Bp3YSIOJ.js +1 -0
  46. package/dist/client/assets/vnode-B8aJx8u4.js +1 -0
  47. package/dist/client/assets/vue-vendor-6ny5zj9i.js +3 -0
  48. package/dist/client/index.html +15 -0
  49. package/dist/server/shared/index.d.ts +3 -0
  50. package/dist/server/shared/index.d.ts.map +1 -0
  51. package/dist/server/shared/index.js +2 -0
  52. package/dist/server/shared/models/index.d.ts +4 -0
  53. package/dist/server/shared/models/index.d.ts.map +1 -0
  54. package/dist/server/shared/models/index.js +3 -0
  55. package/dist/server/shared/models/resource.model.d.ts +8 -0
  56. package/dist/server/shared/models/resource.model.d.ts.map +1 -0
  57. package/dist/server/shared/models/resource.model.js +1 -0
  58. package/dist/server/shared/models/server.model.d.ts +57 -0
  59. package/dist/server/shared/models/server.model.d.ts.map +1 -0
  60. package/dist/server/shared/models/server.model.js +1 -0
  61. package/dist/server/shared/models/session.model.d.ts +73 -0
  62. package/dist/server/shared/models/session.model.d.ts.map +1 -0
  63. package/dist/server/shared/models/session.model.js +70 -0
  64. package/dist/server/shared/models/tool.model.d.ts +22 -0
  65. package/dist/server/shared/models/tool.model.d.ts.map +1 -0
  66. package/dist/server/shared/models/tool.model.js +1 -0
  67. package/dist/server/shared/types/client.types.d.ts +35 -0
  68. package/dist/server/shared/types/client.types.d.ts.map +1 -0
  69. package/dist/server/shared/types/client.types.js +5 -0
  70. package/dist/server/shared/types/common.types.d.ts +5 -0
  71. package/dist/server/shared/types/common.types.d.ts.map +1 -0
  72. package/dist/server/shared/types/common.types.js +2 -0
  73. package/dist/server/shared/types/index.d.ts +4 -0
  74. package/dist/server/shared/types/index.d.ts.map +1 -0
  75. package/dist/server/shared/types/index.js +3 -0
  76. package/dist/server/shared/types/session.types.d.ts +15 -0
  77. package/dist/server/shared/types/session.types.d.ts.map +1 -0
  78. package/dist/server/shared/types/session.types.js +5 -0
  79. package/dist/server/shared/types/websocket.types.d.ts +177 -0
  80. package/dist/server/shared/types/websocket.types.d.ts.map +1 -0
  81. package/dist/server/shared/types/websocket.types.js +25 -0
  82. package/dist/server/src/api/mcp/debug-response-wrapper.d.ts +13 -0
  83. package/dist/server/src/api/mcp/debug-response-wrapper.d.ts.map +1 -0
  84. package/dist/server/src/api/mcp/debug-response-wrapper.js +271 -0
  85. package/dist/server/src/api/mcp/gateway.d.ts +14 -0
  86. package/dist/server/src/api/mcp/gateway.d.ts.map +1 -0
  87. package/dist/server/src/api/mcp/gateway.js +116 -0
  88. package/dist/server/src/api/mcp/session-context-extractor.d.ts +47 -0
  89. package/dist/server/src/api/mcp/session-context-extractor.d.ts.map +1 -0
  90. package/dist/server/src/api/mcp/session-context-extractor.js +127 -0
  91. package/dist/server/src/api/mcp/sse-stream-manager.d.ts +13 -0
  92. package/dist/server/src/api/mcp/sse-stream-manager.d.ts.map +1 -0
  93. package/dist/server/src/api/mcp/sse-stream-manager.js +40 -0
  94. package/dist/server/src/api/web/clients.d.ts +30 -0
  95. package/dist/server/src/api/web/clients.d.ts.map +1 -0
  96. package/dist/server/src/api/web/clients.js +41 -0
  97. package/dist/server/src/api/web/config.d.ts +21 -0
  98. package/dist/server/src/api/web/config.d.ts.map +1 -0
  99. package/dist/server/src/api/web/config.js +119 -0
  100. package/dist/server/src/api/web/health.d.ts +21 -0
  101. package/dist/server/src/api/web/health.d.ts.map +1 -0
  102. package/dist/server/src/api/web/health.js +24 -0
  103. package/dist/server/src/api/web/hub-tools.d.ts +30 -0
  104. package/dist/server/src/api/web/hub-tools.d.ts.map +1 -0
  105. package/dist/server/src/api/web/hub-tools.js +202 -0
  106. package/dist/server/src/api/web/logs.d.ts +30 -0
  107. package/dist/server/src/api/web/logs.d.ts.map +1 -0
  108. package/dist/server/src/api/web/logs.js +141 -0
  109. package/dist/server/src/api/web/mcp-status.d.ts +29 -0
  110. package/dist/server/src/api/web/mcp-status.d.ts.map +1 -0
  111. package/dist/server/src/api/web/mcp-status.js +126 -0
  112. package/dist/server/src/api/web/resources.d.ts +28 -0
  113. package/dist/server/src/api/web/resources.d.ts.map +1 -0
  114. package/dist/server/src/api/web/resources.js +93 -0
  115. package/dist/server/src/api/web/search.d.ts +26 -0
  116. package/dist/server/src/api/web/search.d.ts.map +1 -0
  117. package/dist/server/src/api/web/search.js +62 -0
  118. package/dist/server/src/api/web/servers.d.ts +33 -0
  119. package/dist/server/src/api/web/servers.d.ts.map +1 -0
  120. package/dist/server/src/api/web/servers.js +235 -0
  121. package/dist/server/src/api/web/sessions.d.ts +29 -0
  122. package/dist/server/src/api/web/sessions.d.ts.map +1 -0
  123. package/dist/server/src/api/web/sessions.js +104 -0
  124. package/dist/server/src/api/ws/events.d.ts +29 -0
  125. package/dist/server/src/api/ws/events.d.ts.map +1 -0
  126. package/dist/server/src/api/ws/events.js +44 -0
  127. package/dist/server/src/api/ws/ws-handler.d.ts +83 -0
  128. package/dist/server/src/api/ws/ws-handler.d.ts.map +1 -0
  129. package/dist/server/src/api/ws/ws-handler.js +217 -0
  130. package/dist/server/src/app.d.ts +24 -0
  131. package/dist/server/src/app.d.ts.map +1 -0
  132. package/dist/server/src/app.js +108 -0
  133. package/dist/server/src/cli/commands/list.d.ts +71 -0
  134. package/dist/server/src/cli/commands/list.d.ts.map +1 -0
  135. package/dist/server/src/cli/commands/list.js +97 -0
  136. package/dist/server/src/cli/commands/restart.d.ts +42 -0
  137. package/dist/server/src/cli/commands/restart.d.ts.map +1 -0
  138. package/dist/server/src/cli/commands/restart.js +61 -0
  139. package/dist/server/src/cli/commands/start.d.ts +43 -0
  140. package/dist/server/src/cli/commands/start.d.ts.map +1 -0
  141. package/dist/server/src/cli/commands/start.js +160 -0
  142. package/dist/server/src/cli/commands/status.d.ts +39 -0
  143. package/dist/server/src/cli/commands/status.d.ts.map +1 -0
  144. package/dist/server/src/cli/commands/status.js +164 -0
  145. package/dist/server/src/cli/commands/stop.d.ts +34 -0
  146. package/dist/server/src/cli/commands/stop.d.ts.map +1 -0
  147. package/dist/server/src/cli/commands/stop.js +47 -0
  148. package/dist/server/src/cli/commands/ui.d.ts +44 -0
  149. package/dist/server/src/cli/commands/ui.d.ts.map +1 -0
  150. package/dist/server/src/cli/commands/ui.js +95 -0
  151. package/dist/server/src/cli/index.d.ts +62 -0
  152. package/dist/server/src/cli/index.d.ts.map +1 -0
  153. package/dist/server/src/cli/index.js +88 -0
  154. package/dist/server/src/cli/parse-args.d.ts +108 -0
  155. package/dist/server/src/cli/parse-args.d.ts.map +1 -0
  156. package/dist/server/src/cli/parse-args.js +131 -0
  157. package/dist/server/src/cli/server.d.ts +171 -0
  158. package/dist/server/src/cli/server.d.ts.map +1 -0
  159. package/dist/server/src/cli/server.js +246 -0
  160. package/dist/server/src/config/config-change-logger.d.ts +16 -0
  161. package/dist/server/src/config/config-change-logger.d.ts.map +1 -0
  162. package/dist/server/src/config/config-change-logger.js +43 -0
  163. package/dist/server/src/config/config-loader.d.ts +22 -0
  164. package/dist/server/src/config/config-loader.d.ts.map +1 -0
  165. package/dist/server/src/config/config-loader.js +66 -0
  166. package/dist/server/src/config/config-manager.d.ts +158 -0
  167. package/dist/server/src/config/config-manager.d.ts.map +1 -0
  168. package/dist/server/src/config/config-manager.js +246 -0
  169. package/dist/server/src/config/config-saver.d.ts +16 -0
  170. package/dist/server/src/config/config-saver.d.ts.map +1 -0
  171. package/dist/server/src/config/config-saver.js +28 -0
  172. package/dist/server/src/config/config.schema.d.ts +108 -0
  173. package/dist/server/src/config/config.schema.d.ts.map +1 -0
  174. package/dist/server/src/config/config.schema.js +103 -0
  175. package/dist/server/src/config/server-config-manager.d.ts +74 -0
  176. package/dist/server/src/config/server-config-manager.d.ts.map +1 -0
  177. package/dist/server/src/config/server-config-manager.js +157 -0
  178. package/dist/server/src/config/type-converter.d.ts +13 -0
  179. package/dist/server/src/config/type-converter.d.ts.map +1 -0
  180. package/dist/server/src/config/type-converter.js +37 -0
  181. package/dist/server/src/index.d.ts +3 -0
  182. package/dist/server/src/index.d.ts.map +1 -0
  183. package/dist/server/src/index.js +352 -0
  184. package/dist/server/src/models/event.model.d.ts +106 -0
  185. package/dist/server/src/models/event.model.d.ts.map +1 -0
  186. package/dist/server/src/models/event.model.js +5 -0
  187. package/dist/server/src/models/server.model.d.ts +19 -0
  188. package/dist/server/src/models/server.model.d.ts.map +1 -0
  189. package/dist/server/src/models/server.model.js +1 -0
  190. package/dist/server/src/models/system-tools.constants.d.ts +73 -0
  191. package/dist/server/src/models/system-tools.constants.d.ts.map +1 -0
  192. package/dist/server/src/models/system-tools.constants.js +31 -0
  193. package/dist/server/src/models/types.d.ts +84 -0
  194. package/dist/server/src/models/types.d.ts.map +1 -0
  195. package/dist/server/src/models/types.js +67 -0
  196. package/dist/server/src/pid/file.d.ts +26 -0
  197. package/dist/server/src/pid/file.d.ts.map +1 -0
  198. package/dist/server/src/pid/file.js +68 -0
  199. package/dist/server/src/pid/manager.d.ts +98 -0
  200. package/dist/server/src/pid/manager.d.ts.map +1 -0
  201. package/dist/server/src/pid/manager.js +158 -0
  202. package/dist/server/src/pid/types.d.ts +13 -0
  203. package/dist/server/src/pid/types.d.ts.map +1 -0
  204. package/dist/server/src/pid/types.js +4 -0
  205. package/dist/server/src/server/dev-server.d.ts +2 -0
  206. package/dist/server/src/server/dev-server.d.ts.map +1 -0
  207. package/dist/server/src/server/dev-server.js +171 -0
  208. package/dist/server/src/server/runner.d.ts +57 -0
  209. package/dist/server/src/server/runner.d.ts.map +1 -0
  210. package/dist/server/src/server/runner.js +163 -0
  211. package/dist/server/src/services/client-tracker.service.d.ts +132 -0
  212. package/dist/server/src/services/client-tracker.service.d.ts.map +1 -0
  213. package/dist/server/src/services/client-tracker.service.js +203 -0
  214. package/dist/server/src/services/connection/connection-manager.d.ts +478 -0
  215. package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -0
  216. package/dist/server/src/services/connection/connection-manager.js +929 -0
  217. package/dist/server/src/services/connection/index.d.ts +6 -0
  218. package/dist/server/src/services/connection/index.d.ts.map +1 -0
  219. package/dist/server/src/services/connection/index.js +4 -0
  220. package/dist/server/src/services/connection/tool-cache.d.ts +122 -0
  221. package/dist/server/src/services/connection/tool-cache.d.ts.map +1 -0
  222. package/dist/server/src/services/connection/tool-cache.js +202 -0
  223. package/dist/server/src/services/connection/types.d.ts +30 -0
  224. package/dist/server/src/services/connection/types.d.ts.map +1 -0
  225. package/dist/server/src/services/connection/types.js +1 -0
  226. package/dist/server/src/services/event-bus.service.d.ts +169 -0
  227. package/dist/server/src/services/event-bus.service.d.ts.map +1 -0
  228. package/dist/server/src/services/event-bus.service.js +200 -0
  229. package/dist/server/src/services/gateway/gateway.service.d.ts +61 -0
  230. package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -0
  231. package/dist/server/src/services/gateway/gateway.service.js +107 -0
  232. package/dist/server/src/services/gateway/index.d.ts +8 -0
  233. package/dist/server/src/services/gateway/index.d.ts.map +1 -0
  234. package/dist/server/src/services/gateway/index.js +6 -0
  235. package/dist/server/src/services/gateway/log-formatter.d.ts +26 -0
  236. package/dist/server/src/services/gateway/log-formatter.d.ts.map +1 -0
  237. package/dist/server/src/services/gateway/log-formatter.js +66 -0
  238. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts +13 -0
  239. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts.map +1 -0
  240. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.js +131 -0
  241. package/dist/server/src/services/gateway/request-handlers/index.d.ts +9 -0
  242. package/dist/server/src/services/gateway/request-handlers/index.d.ts.map +1 -0
  243. package/dist/server/src/services/gateway/request-handlers/index.js +8 -0
  244. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts +11 -0
  245. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -0
  246. package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +85 -0
  247. package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts +11 -0
  248. package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts.map +1 -0
  249. package/dist/server/src/services/gateway/request-handlers/resources-handler.js +56 -0
  250. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts +11 -0
  251. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts.map +1 -0
  252. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.js +228 -0
  253. package/dist/server/src/services/gateway/request-handlers/tools-handler.d.ts +11 -0
  254. package/dist/server/src/services/gateway/request-handlers/tools-handler.d.ts.map +1 -0
  255. package/dist/server/src/services/gateway/request-handlers/tools-handler.js +79 -0
  256. package/dist/server/src/services/gateway/tool-list-generator.d.ts +23 -0
  257. package/dist/server/src/services/gateway/tool-list-generator.d.ts.map +1 -0
  258. package/dist/server/src/services/gateway/tool-list-generator.js +115 -0
  259. package/dist/server/src/services/gateway/types.d.ts +27 -0
  260. package/dist/server/src/services/gateway/types.d.ts.map +1 -0
  261. package/dist/server/src/services/gateway/types.js +4 -0
  262. package/dist/server/src/services/gateway.service.d.ts +7 -0
  263. package/dist/server/src/services/gateway.service.d.ts.map +1 -0
  264. package/dist/server/src/services/gateway.service.js +6 -0
  265. package/dist/server/src/services/hub-manager.service.d.ts +299 -0
  266. package/dist/server/src/services/hub-manager.service.d.ts.map +1 -0
  267. package/dist/server/src/services/hub-manager.service.js +413 -0
  268. package/dist/server/src/services/hub-tools/index.d.ts +10 -0
  269. package/dist/server/src/services/hub-tools/index.d.ts.map +1 -0
  270. package/dist/server/src/services/hub-tools/index.js +6 -0
  271. package/dist/server/src/services/hub-tools/resource-generator.d.ts +63 -0
  272. package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -0
  273. package/dist/server/src/services/hub-tools/resource-generator.js +141 -0
  274. package/dist/server/src/services/hub-tools/server-selector.d.ts +63 -0
  275. package/dist/server/src/services/hub-tools/server-selector.d.ts.map +1 -0
  276. package/dist/server/src/services/hub-tools/server-selector.js +108 -0
  277. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts +47 -0
  278. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts.map +1 -0
  279. package/dist/server/src/services/hub-tools/system-tool-definitions.js +225 -0
  280. package/dist/server/src/services/hub-tools/tool-search.d.ts +85 -0
  281. package/dist/server/src/services/hub-tools/tool-search.d.ts.map +1 -0
  282. package/dist/server/src/services/hub-tools/tool-search.js +115 -0
  283. package/dist/server/src/services/hub-tools/types.d.ts +42 -0
  284. package/dist/server/src/services/hub-tools/types.d.ts.map +1 -0
  285. package/dist/server/src/services/hub-tools/types.js +1 -0
  286. package/dist/server/src/services/hub-tools.service.d.ts +235 -0
  287. package/dist/server/src/services/hub-tools.service.d.ts.map +1 -0
  288. package/dist/server/src/services/hub-tools.service.js +457 -0
  289. package/dist/server/src/services/log-storage.service.d.ts +177 -0
  290. package/dist/server/src/services/log-storage.service.d.ts.map +1 -0
  291. package/dist/server/src/services/log-storage.service.js +243 -0
  292. package/dist/server/src/services/mcp-connection-manager.d.ts +7 -0
  293. package/dist/server/src/services/mcp-connection-manager.d.ts.map +1 -0
  294. package/dist/server/src/services/mcp-connection-manager.js +6 -0
  295. package/dist/server/src/services/mcp-session-manager.d.ts +6 -0
  296. package/dist/server/src/services/mcp-session-manager.d.ts.map +1 -0
  297. package/dist/server/src/services/mcp-session-manager.js +4 -0
  298. package/dist/server/src/services/search/index.d.ts +5 -0
  299. package/dist/server/src/services/search/index.d.ts.map +1 -0
  300. package/dist/server/src/services/search/index.js +5 -0
  301. package/dist/server/src/services/search/search-cache.d.ts +132 -0
  302. package/dist/server/src/services/search/search-cache.d.ts.map +1 -0
  303. package/dist/server/src/services/search/search-cache.js +151 -0
  304. package/dist/server/src/services/search/search-core.service.d.ts +108 -0
  305. package/dist/server/src/services/search/search-core.service.d.ts.map +1 -0
  306. package/dist/server/src/services/search/search-core.service.js +187 -0
  307. package/dist/server/src/services/search/search-scorer.d.ts +54 -0
  308. package/dist/server/src/services/search/search-scorer.d.ts.map +1 -0
  309. package/dist/server/src/services/search/search-scorer.js +83 -0
  310. package/dist/server/src/services/search/types.d.ts +20 -0
  311. package/dist/server/src/services/search/types.d.ts.map +1 -0
  312. package/dist/server/src/services/search/types.js +1 -0
  313. package/dist/server/src/services/session/index.d.ts +6 -0
  314. package/dist/server/src/services/session/index.d.ts.map +1 -0
  315. package/dist/server/src/services/session/index.js +4 -0
  316. package/dist/server/src/services/session/session-manager.d.ts +352 -0
  317. package/dist/server/src/services/session/session-manager.d.ts.map +1 -0
  318. package/dist/server/src/services/session/session-manager.js +835 -0
  319. package/dist/server/src/services/session/types.d.ts +32 -0
  320. package/dist/server/src/services/session/types.d.ts.map +1 -0
  321. package/dist/server/src/services/session/types.js +1 -0
  322. package/dist/server/src/services/simple-search.service.d.ts +67 -0
  323. package/dist/server/src/services/simple-search.service.d.ts.map +1 -0
  324. package/dist/server/src/services/simple-search.service.js +82 -0
  325. package/dist/server/src/services/system-tool-handler.d.ts +10 -0
  326. package/dist/server/src/services/system-tool-handler.d.ts.map +1 -0
  327. package/dist/server/src/services/system-tool-handler.js +77 -0
  328. package/dist/server/src/utils/error-handler.d.ts +18 -0
  329. package/dist/server/src/utils/error-handler.d.ts.map +1 -0
  330. package/dist/server/src/utils/error-handler.js +59 -0
  331. package/dist/server/src/utils/format-utils.d.ts +23 -0
  332. package/dist/server/src/utils/format-utils.d.ts.map +1 -0
  333. package/dist/server/src/utils/format-utils.js +58 -0
  334. package/dist/server/src/utils/index.d.ts +2 -0
  335. package/dist/server/src/utils/index.d.ts.map +1 -0
  336. package/dist/server/src/utils/index.js +1 -0
  337. package/dist/server/src/utils/json-utils.d.ts +82 -0
  338. package/dist/server/src/utils/json-utils.d.ts.map +1 -0
  339. package/dist/server/src/utils/json-utils.js +204 -0
  340. package/dist/server/src/utils/log-rotator.d.ts +223 -0
  341. package/dist/server/src/utils/log-rotator.d.ts.map +1 -0
  342. package/dist/server/src/utils/log-rotator.js +306 -0
  343. package/dist/server/src/utils/logger/dev-logger.d.ts +39 -0
  344. package/dist/server/src/utils/logger/dev-logger.d.ts.map +1 -0
  345. package/dist/server/src/utils/logger/dev-logger.js +63 -0
  346. package/dist/server/src/utils/logger/index.d.ts +36 -0
  347. package/dist/server/src/utils/logger/index.d.ts.map +1 -0
  348. package/dist/server/src/utils/logger/index.js +46 -0
  349. package/dist/server/src/utils/logger/log-colors.d.ts +27 -0
  350. package/dist/server/src/utils/logger/log-colors.d.ts.map +1 -0
  351. package/dist/server/src/utils/logger/log-colors.js +41 -0
  352. package/dist/server/src/utils/logger/log-context.d.ts +13 -0
  353. package/dist/server/src/utils/logger/log-context.d.ts.map +1 -0
  354. package/dist/server/src/utils/logger/log-context.js +5 -0
  355. package/dist/server/src/utils/logger/log-formatter.d.ts +47 -0
  356. package/dist/server/src/utils/logger/log-formatter.d.ts.map +1 -0
  357. package/dist/server/src/utils/logger/log-formatter.js +150 -0
  358. package/dist/server/src/utils/logger/log-modules.d.ts +141 -0
  359. package/dist/server/src/utils/logger/log-modules.d.ts.map +1 -0
  360. package/dist/server/src/utils/logger/log-modules.js +81 -0
  361. package/dist/server/src/utils/logger/log-output.d.ts +68 -0
  362. package/dist/server/src/utils/logger/log-output.d.ts.map +1 -0
  363. package/dist/server/src/utils/logger/log-output.js +320 -0
  364. package/dist/server/src/utils/logger/logger.d.ts +190 -0
  365. package/dist/server/src/utils/logger/logger.d.ts.map +1 -0
  366. package/dist/server/src/utils/logger/logger.js +350 -0
  367. package/dist/server/src/utils/logger.d.ts +12 -0
  368. package/dist/server/src/utils/logger.d.ts.map +1 -0
  369. package/dist/server/src/utils/logger.js +12 -0
  370. package/dist/server/src/utils/mcp-error-handler.d.ts +162 -0
  371. package/dist/server/src/utils/mcp-error-handler.d.ts.map +1 -0
  372. package/dist/server/src/utils/mcp-error-handler.js +270 -0
  373. package/dist/server/src/utils/port-checker.d.ts +16 -0
  374. package/dist/server/src/utils/port-checker.d.ts.map +1 -0
  375. package/dist/server/src/utils/port-checker.js +242 -0
  376. package/dist/server/src/utils/request-context.d.ts +71 -0
  377. package/dist/server/src/utils/request-context.d.ts.map +1 -0
  378. package/dist/server/src/utils/request-context.js +73 -0
  379. package/dist/server/src/utils/tool-args-parser.d.ts +17 -0
  380. package/dist/server/src/utils/tool-args-parser.d.ts.map +1 -0
  381. package/dist/server/src/utils/tool-args-parser.js +34 -0
  382. package/dist/server/src/utils/transports/sse-transport.d.ts +104 -0
  383. package/dist/server/src/utils/transports/sse-transport.d.ts.map +1 -0
  384. package/dist/server/src/utils/transports/sse-transport.js +189 -0
  385. package/dist/server/src/utils/transports/stdio-transport.d.ts +122 -0
  386. package/dist/server/src/utils/transports/stdio-transport.d.ts.map +1 -0
  387. package/dist/server/src/utils/transports/stdio-transport.js +324 -0
  388. package/dist/server/src/utils/transports/streamable-http-transport.d.ts +146 -0
  389. package/dist/server/src/utils/transports/streamable-http-transport.d.ts.map +1 -0
  390. package/dist/server/src/utils/transports/streamable-http-transport.js +212 -0
  391. package/dist/server/src/utils/transports/transport-factory.d.ts +26 -0
  392. package/dist/server/src/utils/transports/transport-factory.d.ts.map +1 -0
  393. package/dist/server/src/utils/transports/transport-factory.js +104 -0
  394. package/dist/server/src/utils/transports/transport.interface.d.ts +35 -0
  395. package/dist/server/src/utils/transports/transport.interface.d.ts.map +1 -0
  396. package/dist/server/src/utils/transports/transport.interface.js +1 -0
  397. package/dist/server/tests/contract/mcp-protocol/initialize.test.d.ts +2 -0
  398. package/dist/server/tests/contract/mcp-protocol/initialize.test.d.ts.map +1 -0
  399. package/dist/server/tests/contract/mcp-protocol/initialize.test.js +103 -0
  400. package/dist/server/tests/contract/mcp-protocol/tools-call.test.d.ts +2 -0
  401. package/dist/server/tests/contract/mcp-protocol/tools-call.test.d.ts.map +1 -0
  402. package/dist/server/tests/contract/mcp-protocol/tools-call.test.js +181 -0
  403. package/dist/server/tests/contract/mcp-protocol/tools-list.test.d.ts +2 -0
  404. package/dist/server/tests/contract/mcp-protocol/tools-list.test.d.ts.map +1 -0
  405. package/dist/server/tests/contract/mcp-protocol/tools-list.test.js +155 -0
  406. package/dist/server/tests/evaluation/evaluation.test.d.ts +2 -0
  407. package/dist/server/tests/evaluation/evaluation.test.d.ts.map +1 -0
  408. package/dist/server/tests/evaluation/evaluation.test.js +102 -0
  409. package/dist/server/tests/helpers/sdk-test-helpers.d.ts +32 -0
  410. package/dist/server/tests/helpers/sdk-test-helpers.d.ts.map +1 -0
  411. package/dist/server/tests/helpers/sdk-test-helpers.js +82 -0
  412. package/dist/server/tests/integration/api/gateway.test.d.ts +2 -0
  413. package/dist/server/tests/integration/api/gateway.test.d.ts.map +1 -0
  414. package/dist/server/tests/integration/api/gateway.test.js +366 -0
  415. package/dist/server/tests/integration/gateway/fault-tolerance.test.d.ts +2 -0
  416. package/dist/server/tests/integration/gateway/fault-tolerance.test.d.ts.map +1 -0
  417. package/dist/server/tests/integration/gateway/fault-tolerance.test.js +109 -0
  418. package/dist/server/tests/integration/gateway/mcp-connection.test.d.ts +2 -0
  419. package/dist/server/tests/integration/gateway/mcp-connection.test.d.ts.map +1 -0
  420. package/dist/server/tests/integration/gateway/mcp-connection.test.js +149 -0
  421. package/dist/server/tests/server.test.d.ts +2 -0
  422. package/dist/server/tests/server.test.d.ts.map +1 -0
  423. package/dist/server/tests/server.test.js +95 -0
  424. package/dist/server/tests/setup.d.ts +7 -0
  425. package/dist/server/tests/setup.d.ts.map +1 -0
  426. package/dist/server/tests/setup.js +53 -0
  427. package/dist/server/tests/types/logger-test-helpers.d.ts +17 -0
  428. package/dist/server/tests/types/logger-test-helpers.d.ts.map +1 -0
  429. package/dist/server/tests/types/logger-test-helpers.js +4 -0
  430. package/dist/server/tests/types/test-helpers.d.ts +27 -0
  431. package/dist/server/tests/types/test-helpers.d.ts.map +1 -0
  432. package/dist/server/tests/types/test-helpers.js +4 -0
  433. package/dist/server/tests/unit/cli/basic-cli.test.d.ts +2 -0
  434. package/dist/server/tests/unit/cli/basic-cli.test.d.ts.map +1 -0
  435. package/dist/server/tests/unit/cli/basic-cli.test.js +33 -0
  436. package/dist/server/tests/unit/cli/cli.test.d.ts +2 -0
  437. package/dist/server/tests/unit/cli/cli.test.d.ts.map +1 -0
  438. package/dist/server/tests/unit/cli/cli.test.js +17 -0
  439. package/dist/server/tests/unit/cli/commands.test.d.ts +2 -0
  440. package/dist/server/tests/unit/cli/commands.test.d.ts.map +1 -0
  441. package/dist/server/tests/unit/cli/commands.test.js +75 -0
  442. package/dist/server/tests/unit/cli/server.test.d.ts +2 -0
  443. package/dist/server/tests/unit/cli/server.test.d.ts.map +1 -0
  444. package/dist/server/tests/unit/cli/server.test.js +68 -0
  445. package/dist/server/tests/unit/server/runner.test.d.ts +2 -0
  446. package/dist/server/tests/unit/server/runner.test.d.ts.map +1 -0
  447. package/dist/server/tests/unit/server/runner.test.js +488 -0
  448. package/dist/server/tests/unit/server/setup.d.ts +2 -0
  449. package/dist/server/tests/unit/server/setup.d.ts.map +1 -0
  450. package/dist/server/tests/unit/server/setup.js +21 -0
  451. package/dist/server/tests/unit/services/gateway-logging.test.d.ts +2 -0
  452. package/dist/server/tests/unit/services/gateway-logging.test.d.ts.map +1 -0
  453. package/dist/server/tests/unit/services/gateway-logging.test.js +47 -0
  454. package/dist/server/tests/unit/services/hub-manager-service.test.d.ts +2 -0
  455. package/dist/server/tests/unit/services/hub-manager-service.test.d.ts.map +1 -0
  456. package/dist/server/tests/unit/services/hub-manager-service.test.js +140 -0
  457. package/dist/server/tests/unit/services/hub-manager.test.d.ts +2 -0
  458. package/dist/server/tests/unit/services/hub-manager.test.d.ts.map +1 -0
  459. package/dist/server/tests/unit/services/hub-manager.test.js +98 -0
  460. package/dist/server/tests/unit/services/hub-tools.service.test.d.ts +2 -0
  461. package/dist/server/tests/unit/services/hub-tools.service.test.d.ts.map +1 -0
  462. package/dist/server/tests/unit/services/hub-tools.service.test.js +674 -0
  463. package/dist/server/tests/unit/services/search/search-cache.test.d.ts +2 -0
  464. package/dist/server/tests/unit/services/search/search-cache.test.d.ts.map +1 -0
  465. package/dist/server/tests/unit/services/search/search-cache.test.js +58 -0
  466. package/dist/server/tests/unit/services/search/search-core.service.test.d.ts +2 -0
  467. package/dist/server/tests/unit/services/search/search-core.service.test.d.ts.map +1 -0
  468. package/dist/server/tests/unit/services/search/search-core.service.test.js +84 -0
  469. package/dist/server/tests/unit/services/search/search-scorer.test.d.ts +2 -0
  470. package/dist/server/tests/unit/services/search/search-scorer.test.d.ts.map +1 -0
  471. package/dist/server/tests/unit/services/search/search-scorer.test.js +97 -0
  472. package/dist/server/tests/unit/services/session-manager.test.d.ts +2 -0
  473. package/dist/server/tests/unit/services/session-manager.test.d.ts.map +1 -0
  474. package/dist/server/tests/unit/services/session-manager.test.js +481 -0
  475. package/dist/server/tests/unit/utils/config.test.d.ts +2 -0
  476. package/dist/server/tests/unit/utils/config.test.d.ts.map +1 -0
  477. package/dist/server/tests/unit/utils/config.test.js +634 -0
  478. package/dist/server/tests/unit/utils/json-utils.test.d.ts +2 -0
  479. package/dist/server/tests/unit/utils/json-utils.test.d.ts.map +1 -0
  480. package/dist/server/tests/unit/utils/json-utils.test.js +296 -0
  481. package/dist/server/tests/unit/utils/log-rotator.test.d.ts +2 -0
  482. package/dist/server/tests/unit/utils/log-rotator.test.d.ts.map +1 -0
  483. package/dist/server/tests/unit/utils/log-rotator.test.js +296 -0
  484. package/dist/server/tests/unit/utils/logger.test.d.ts +2 -0
  485. package/dist/server/tests/unit/utils/logger.test.d.ts.map +1 -0
  486. package/dist/server/tests/unit/utils/logger.test.js +462 -0
  487. package/dist/server/tests/unit/utils/mcp-error-handler.test.d.ts +2 -0
  488. package/dist/server/tests/unit/utils/mcp-error-handler.test.d.ts.map +1 -0
  489. package/dist/server/tests/unit/utils/mcp-error-handler.test.js +163 -0
  490. package/dist/server/tests/unit/utils/request-context.test.d.ts +2 -0
  491. package/dist/server/tests/unit/utils/request-context.test.d.ts.map +1 -0
  492. package/dist/server/tests/unit/utils/request-context.test.js +82 -0
  493. package/dist/server/vite.config.d.ts +3 -0
  494. package/dist/server/vite.config.d.ts.map +1 -0
  495. package/dist/server/vite.config.js +160 -0
  496. package/dist/server/vitest.config.d.ts +3 -0
  497. package/dist/server/vitest.config.d.ts.map +1 -0
  498. package/dist/server/vitest.config.js +53 -0
  499. package/package.json +113 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,228 @@
1
+ # Changelog
2
+
3
+ ## 2026-03-04
4
+
5
+ - **CLI Fix**: Ensure CLI commands exit properly after execution
6
+ - **CLI/Logger Fix**: Fix server startup and log ANSI color issues
7
+ - **CLI Enhancement**: Enhance status command with formatted output
8
+ - **UI Enhancement**: Improve settings page UI and dev mode handling
9
+ - **Logging Refactor**: Improve MCP gateway logging
10
+ - **Logging Refactor**: Unify dev mode detection, remove devLogFile config
11
+ - **Logging Enhancement**: Enhance stdio transport with log store integration
12
+
13
+ ## 2026-03-03
14
+
15
+ - **Test Update**: Update tests for new log config system
16
+ - **Logging Fix**: Use getMcpCommDebugSetting() in connection-manager
17
+ - **Logging Refactor**: Unify logging configuration system
18
+ - **Config Enhancement**: Extend config schema with new log options
19
+ - **UI Enhancement**: Add new logging config options in settings
20
+ - **Logging Refactor**: Extract and unify MCP notification message handling
21
+ - **Logging Fix**: Improve stderr log level detection logic
22
+ - **Logging Refactor**: Use MCP_COMM_DEBUG environment variable for communication logs
23
+ - **Gateway Refactor**: Remove SSE connection timestamp tracking
24
+ - **Session Enhancement**: Count expired sessions and use configured flush interval
25
+ - **Logging Enhancement**: Filter binary image data in MCP response logs
26
+ - **UI Styling**: Remove trailing semicolon in SettingsView style
27
+ - **Refactor**: Improve type handling and SSE logging
28
+ - **Documentation**: Update project documentation
29
+ - **UI Refactor**: Implement Element Plus auto-import
30
+ - **UI Fix**: Fix el-input-number width issue in SettingsView
31
+
32
+ ## 2026-03-02
33
+
34
+ - **Session Enhancement**: Skip expired sessions during recovery
35
+ - **Telemetry Removal**: Remove OpenTelemetry and telemetry features
36
+ - **Styling**: Format codebase with prettier
37
+ - **SSE Enhancement**: Add connection timeout config and reconnection detection
38
+ - **Logging Enhancement**: Enhance JSON pretty-printing with newline handling
39
+ - **Logging Styling**: Unify LOG_MODULES format as PascalCase
40
+ - **Session Refactor**: Simplify session matching logic
41
+
42
+ ## 2026-03-01
43
+
44
+ - **Logging Refactor**: Change log file naming to timestamp-based format
45
+ - **Refactor**: Add LOG_MODULES context and update hub-manager service tests
46
+ - **Session Enhancement**: Enhance sessionId extraction with header support and improved fallback logic
47
+ - **Session Refactor**: Extract session manager to modular structure
48
+ - **Connection Refactor**: Extract connection manager to modular structure
49
+
50
+ ## 2026-02-28
51
+
52
+ - **Documentation**: Update CLAUDE.md with project initialization summary
53
+ - **Logging Refactor**: Rename subModule to module, add LOG_MODULES constants
54
+ - **Hub-Tools Refactor**: Extract hub-tools.service.ts to modular structure
55
+ - **Gateway Refactor**: Extract gateway.service.ts to modular structure
56
+ - **API/MCP Refactor**: Extract gateway module to separate files
57
+ - **Config Refactor**: Split config-manager to modular structure
58
+ - **Logging Refactor**: Add missing subModule context to log statements
59
+ - **Logging Refactor**: Split monolithic logger to modular structure
60
+ - **Gateway Fix**: Add missing uri field in ReadMcpResourceTool response
61
+
62
+ ## 2026-02-27
63
+
64
+ - **Gateway Refactor**: Enhance SSE stream management and response logging
65
+ - **Refactor**: Remove duplicate debug logging in gateway
66
+ - **Refactor**: Resolve config-logger circular dependency with config getter pattern
67
+ - **Logging Fix**: Use stringifyForLogging for gateway header, improve rawHeaders readability
68
+
69
+ ## 2026-02-26
70
+
71
+ - **Refactor**: Fix ESM imports and optimize CLI startup performance
72
+ - **Frontend Enhancement**: Add type safety for JsonSchema in frontend ToolsView
73
+ - **Documentation**: Update docs for config path and logging
74
+ - **Enhancement**: Enhance dev server startup logging
75
+ - **Refactor**: Optimize logging verbosity
76
+ - **Enhancement**: Add rawHeaders operation for session header propagation
77
+ - **Enhancement**: Enhance session persistence and cleanup logic
78
+ - **Enhancement**: Introduce unified system tools processor and prefix tool name support
79
+ - **Enhancement**: Enhance session management with consistency check and request header handling
80
+ - **Refactor**: Optimize logger options extraction
81
+ - **Enhancement**: Improve tool call dialog and system tools display
82
+
83
+ ## 2026-02-25
84
+
85
+ - **Enhancement**: Enhance documentation and system configuration
86
+ - **MCP Connection Manager Refactor**: Optimize getTools/getResources logging with cache hit indicator and resource cache improvements
87
+ - **Refactor**: Extract common stderr handling logic to reduce code duplication
88
+ - **Enhancement**: Add server description field and resource detail improvements
89
+
90
+ ## 2026-02-15
91
+
92
+ - **Session Persistence Feature**: Implement session state persistence to disk with dirty tracking and batch flushing
93
+ - **Graceful Shutdown Handling**: Add graceful shutdown handler for session state flushing
94
+ - **Session Management API**: Add session management API endpoints (list, get, delete)
95
+ - **Session Recovery Logic**: Enhance session recovery logic with clientName matching
96
+ - **Settings Page Enhancement**: Add time unit selector (seconds/minutes/hours/days)
97
+ - **Logging System Improvements**: Support subModule context and tools/list response simplification
98
+ - **Log Directory Optimization**: Move log directory to ~/.mcp-hub-lite/logs
99
+ - **Full Check Command**: Add `npm run full:check` command for simplified complete project checking
100
+ - **Unit Test Coverage**: Add comprehensive unit tests for session manager
101
+
102
+ ## 2026-02-14
103
+
104
+ - **Session Persistence Implementation**: Implement session persistence and configuration management
105
+ - **CLI Unit Tests**: Add comprehensive unit tests for CLI commands
106
+ - **Session Timeout Configuration**: Add configurable session timeout for MCP gateway
107
+ - **Type Safety Improvements**: Comprehensive eslint no-explicit-any fixes and type safety enhancements
108
+
109
+ ## 2026-02-13
110
+
111
+ - **CLI Command Tests**: Add comprehensive unit tests for CLI commands
112
+ - **Session Timeout Configuration**: Add configurable session timeout for MCP gateway
113
+ - **Type Safety Fixes**: Comprehensive eslint no-explicit-any fixes and type safety improvements
114
+
115
+ ## 2026-02-11
116
+
117
+ - **Frontend i18n Support**: Update server status tags and tool call dialog components with i18n support
118
+ - **ESLint Configuration Fix**: Fix lint:log command and ESLint configuration
119
+ - **Frontend Resource View**: Improve resource view with table layout
120
+ - **Type System Refactor**: Establish shared type system for frontend-backend integration
121
+ - **WebSocket Types**: Establish client and WebSocket type system
122
+ - **Config Manager Optimization**: Prevent test pollution with lazy initialization for ConfigManager
123
+ - **System Tools Optimization**: Enhance system tools type safety and naming
124
+ - **MCP Resource Support**: Add MCP resource support with UI and API endpoints
125
+ - **Client Tracking Enhancement**: Enhance client tracking and connection management
126
+ - **Tool Call Dialog**: Improve tool call dialog with i18n and response display
127
+ - **Search Functionality Optimization**: Implement comprehensive search functionality across MCP servers
128
+
129
+ ## 2026-02-10
130
+
131
+ - **Fix config.test.ts Intermittent Test Failure**: Resolve "should save config to file" intermittent test failure
132
+ - **Root Cause Analysis**: ConfigManager singleton pattern caused test state pollution and temporary file path conflicts
133
+ - **Fix Solution**:
134
+ - Modify getConfigManager() to create new instances in test environment for isolation
135
+ - Generate unique temporary file paths for each test with timestamp and random suffix
136
+ - Enhance file cleanup logic with retry mechanism to handle Windows file system permissions
137
+ - **Validation Results**: 100 sequential tests, 50 parallel tests (2 concurrency), 200 parallel tests (5 concurrency) all passed
138
+ - **Documentation**: Add A3 problem analysis report and detailed technical fix report
139
+
140
+ ## 2026-01-31
141
+
142
+ - **Frontend UI Enhancement**: Enhance server card and interaction
143
+ - **Configuration Backup Optimization**: Optimize backup system with caching and compilation phase handling
144
+ - **Tool Call Dialog**: Enhance tool call dialog with i18n and response display
145
+ - **System Tools Simplification**: Simplify system tools API and improve type safety
146
+ - **MCP Connection Optimization**: Optimize connection management logic
147
+ - **Path Alias System**: Enhance path alias system with module-specific aliases
148
+ - **Server Status Tags**: Add server status tags component with i18n support
149
+ - **Search Functionality Optimization**: Implement comprehensive search functionality across MCP servers
150
+
151
+ ## 2026-01-30
152
+
153
+ - **Config Manager Optimization**: Optimize backup logic and implement lazy initialization
154
+ - **Test Coverage Optimization**: Add temporary directory to test coverage paths
155
+ - **Logging System Refactor**: Extract common log method to eliminate code duplication
156
+ - **Test Fix**: Fix missing logger.setLevel method and system.logging property mock configuration in runner.test.ts
157
+ - **PID Formatting Optimization**: Increase PID formatting width to 8 characters
158
+ - **TypeScript Fix**: Resolve TypeScript type errors in unit tests
159
+ - **Server Optimization**: Optimize batch import with single save and concurrent startup
160
+ - **Configuration Optimization**: Skip backup creation for default configuration
161
+
162
+ ## 2026-01-27
163
+
164
+ - **Server Fix**: Fix auto-start not working and sidebar display issues
165
+ - **Temporary File Cleanup**: Remove temporary files
166
+ - **Frontend Layout Refactor**: Update App.vue with new layout structure
167
+ - **Dependency Update**: Update package dependencies and Vite configuration
168
+ - **Test Updates**: Update tests for new features and services
169
+ - **Server Runtime Optimization**: Optimize server runtime and CLI commands
170
+ - **Service Enhancement**: Add Hub Manager and Search Core services
171
+ - **API Enhancement**: Enhance MCP gateway and web API endpoints
172
+ - **Frontend Features**: Add tool calls store and WebSocket utilities
173
+ - **Multi-language Support**: Add multi-language support and update UI components
174
+
175
+ ## 2026-01-26
176
+
177
+ - **WebSocket Functionality**: Implement real-time log streaming via WebSocket
178
+ - **Client Management**: Add client management functionality
179
+ - **Branch Merge**: Merge branch 'feat/client-management' into 003-DEV
180
+
181
+ ## 2026-01-21
182
+
183
+ - **Logging Optimization**: Optimize logging for tools/list responses
184
+ - **Client Management**: Add client management functionality
185
+
186
+ ## 2026-02-01
187
+
188
+ - **Project Summary Update**: Execute "root-level concise + module-level detailed" hybrid strategy update
189
+ - **File Statistics**: Identify complete project structure and modules
190
+ - **Module Coverage**: All major modules have been identified and CLAUDE.md documents created/updated
191
+ - **Coverage Rate**: 100% module coverage, complete file scanning finished
192
+ - **Enhance Module Structure Diagram**: Update Mermaid structure diagram, ensure all module links are correct
193
+ - **Update Module Index**: Include all submodules
194
+
195
+ ### 2026-01-29
196
+
197
+ - **Project Index Update**: Execute complete scan, update project documentation index
198
+ - **File Statistics**: Identify 94 source code files (47 backend + 27 frontend + 20 tests)
199
+ - **Module Coverage**: All 16 modules have been identified and CLAUDE.md documents created
200
+ - **Coverage Rate**: 100% module coverage, 100% file scanning completed
201
+ - **Enhance Module Structure Diagram**: Add missing module links (including CONTRACT module)
202
+ - **Update Module Index**: Include all submodules
203
+
204
+ ### 2026-01-28
205
+
206
+ - Update summary
207
+ - Improve module structure diagram, add missing module links (including CONTRACT module)
208
+ - Create detailed CLAUDE.md documents for src/server and src/pid modules
209
+ - Create detailed CLAUDE.md documents for frontend/router and frontend/i18n modules
210
+ - Create detailed CLAUDE.md documents for tests/contract module
211
+ - Update module index, include all submodules
212
+ - **Add Frontend Test Coverage**: Add unit tests for Dashboard component, ToolCard component, and Server Store
213
+ - **Update Test Configuration**: Configure Vue Test Utils and JSDOM environment for frontend component testing
214
+ - **Update Project Documentation**: Reflect improvements in frontend test status
215
+ - **Add Server Runtime Tests**: Add complete unit test coverage for src/server/runner.ts
216
+ - **Update Test Documentation**: Add server module test documentation in tests/unit/CLAUDE.md
217
+
218
+ ### 2026-01-20
219
+
220
+ - Optimize HubTools call logic, replace serverName parameter with serverId in all methods, directly use server unique identifier for operations, avoiding the overhead of finding servers by name
221
+ - Add HubToolsService documentation
222
+ - Update project architecture documentation
223
+
224
+ ### 2026-01-19
225
+
226
+ - Initialize project AI context documentation
227
+ - Generate module structure diagram and index
228
+ - Integrate architecture specifications and development processes
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 MCP Hub Lite
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,354 @@
1
+ # MCP-HUB-LITE
2
+
3
+ [![License][license-src]][license-href]
4
+ [![Node.js][node-src]][node-href]
5
+ [![TypeScript][typescript-src]][typescript-href]
6
+ [![Vitest][vitest-src]][vitest-href]
7
+ [![Fastify][fastify-src]][fastify-href]
8
+ [![Vue.js][vue-src]][vue-href]
9
+ [![Claude Code][claude-code-src]][claude-code-href]
10
+
11
+ ---
12
+
13
+ [中文文档](./README_zh.md)
14
+
15
+ A lightweight MCP management platform designed for independent developers, providing MCP server gateway, grouping, fuzzy search, and MCP HttpStream protocol interface.
16
+
17
+ ## Overview
18
+
19
+ MCP-HUB-LITE is an MCP server gateway designed specifically for independent developers. It acts as a proxy between your frontend and multiple backend MCP servers, providing a unified access interface with support for the MCP JSON-RPC 2.0 protocol.
20
+
21
+ ### Dashboard
22
+
23
+ ![Dashboard](./docs/screenshot/en/dashboard.png)
24
+
25
+ ### Core Features
26
+
27
+ - **MCP Gateway Service**: Unified proxy interface for multiple backend MCP servers
28
+ - **Server Management**: Manage multiple MCP servers through a web interface
29
+ - **Tool Search**: Fuzzy search and tool discovery across all servers
30
+ - **Process Management**: Launch and manage MCP server processes via npx/uvx
31
+ - **Session Management**: Session state management with persistence and recovery
32
+ - **Tag System**: Organize multiple MCP servers by environment, category, function, etc.
33
+ - **Fault Tolerance**: System continues to operate when individual servers fail
34
+ - **Bilingual Interface**: Support for Chinese/English interface switching
35
+ - **Configuration Management**: Support for hot-reloading and maintenance of `.mcp-hub.json`
36
+
37
+ ## Tech Stack
38
+
39
+ - **TypeScript 5.x** + Node.js 22.x
40
+ - **Fastify**: High-performance HTTP server
41
+ - **MCP SDK**: Official MCP protocol support (@modelcontextprotocol/sdk)
42
+ - **Vitest**: Unit testing framework
43
+ - **Zod**: Data validation
44
+ - **Vue 3**: Frontend UI framework
45
+ - **Pinia**: Frontend state management
46
+ - **Element Plus**: UI component library
47
+
48
+ ## Quick Start
49
+
50
+ ### System Requirements
51
+
52
+ - Node.js 22.x or higher
53
+ - npm or yarn
54
+ - Windows, macOS, or Linux
55
+
56
+ ### Installation
57
+
58
+ ```bash
59
+ # Install dependencies
60
+ npm install
61
+
62
+ # Run in development mode (frontend and backend hot reload)
63
+ npm run dev
64
+
65
+ # Build production version
66
+ npm run build
67
+
68
+ # Full check (build + tests + code check)
69
+ npm run full:check
70
+
71
+ # Run production version
72
+ npm start
73
+
74
+ # Check status
75
+ npm run status
76
+
77
+ # Open UI interface
78
+ npm run ui
79
+ ```
80
+
81
+ The server will start at http://localhost:7788.
82
+
83
+ ## Server Management
84
+
85
+ ![Servers](./docs/screenshot/en/servers.png)
86
+
87
+ Manage all your MCP servers in one place. Add, edit, delete, connect, and disconnect servers through the intuitive web interface.
88
+
89
+ ## Gateway & Tools
90
+
91
+ ![Gateway Tools](./docs/screenshot/en/gateway-tools.png)
92
+
93
+ ![Aggregated Tools](./docs/screenshot/en/aggregated-tool.png)
94
+
95
+ Discover and call tools from all connected MCP servers through the unified gateway interface. The aggregated tools view provides a single place to search and use all available tools.
96
+
97
+ ## Resources
98
+
99
+ ![Resources](./docs/screenshot/en/resources.png)
100
+
101
+ Browse and manage MCP resources from all connected servers.
102
+
103
+ ## Sessions
104
+
105
+ ![Sessions](./docs/screenshot/en/sessions.png)
106
+
107
+ Session management with persistence support. Sessions are automatically saved to disk and can be restored after service restart.
108
+
109
+ ## Settings
110
+
111
+ ![Settings](./docs/screenshot/en/settings.png)
112
+
113
+ Configure language, logging, and other settings through the settings page.
114
+
115
+ ### Testing
116
+
117
+ ```bash
118
+ # Run all tests
119
+ npm test
120
+
121
+ # Unit tests
122
+ npm run test:unit
123
+
124
+ # Integration tests
125
+ npm run test:integration
126
+
127
+ # Contract tests
128
+ npm run test:contract
129
+ ```
130
+
131
+ ## CLI Commands
132
+
133
+ MCP-HUB-LITE provides a command-line interface for managing the service.
134
+
135
+ ```bash
136
+ # Start the service
137
+ npm start
138
+ # or
139
+ node dist/index.js start
140
+
141
+ # Check status
142
+ node dist/index.js status
143
+
144
+ # List all servers
145
+ node dist/index.js list
146
+
147
+ # Open web interface
148
+ node dist/index.js ui
149
+
150
+ # Help
151
+ node dist/index.js --help
152
+ ```
153
+
154
+ ## Configuration
155
+
156
+ MCP-HUB-LITE uses a `.mcp-hub.json` file for configuration. Configuration lookup priority:
157
+
158
+ 1. Environment variable `MCP_HUB_CONFIG_PATH`
159
+ 2. `~/.mcp-hub-lite/config/.mcp-hub.json` (hidden folder in user home directory)
160
+
161
+ ### Configuration Example
162
+
163
+ ```json
164
+ {
165
+ "version": "1.0.0",
166
+ "servers": [
167
+ {
168
+ "id": "server-1",
169
+ "name": "My MCP Server",
170
+ "description": "Example server",
171
+ "endpoint": "http://localhost:8080",
172
+ "transport": "http-stream",
173
+ "tags": {
174
+ "env": "development",
175
+ "category": "api-server",
176
+ "function": "http-api",
177
+ "priority": "medium"
178
+ },
179
+ "managedProcess": {
180
+ "command": "npx my-mcp-server",
181
+ "managedMode": "npx",
182
+ "processType": "http-stream"
183
+ }
184
+ }
185
+ ],
186
+ "settings": {
187
+ "language": {
188
+ "current": "en-US",
189
+ "autoDetect": true,
190
+ "fallback": "en-US"
191
+ },
192
+ "logging": {
193
+ "level": "info"
194
+ }
195
+ },
196
+ "gateway": {
197
+ "proxyTimeout": 30000,
198
+ "rateLimit": {
199
+ "enabled": true,
200
+ "maxRequests": 100,
201
+ "windowMs": 60000
202
+ }
203
+ }
204
+ }
205
+ ```
206
+
207
+ ## Usage Guide
208
+
209
+ ### Adding MCP Servers
210
+
211
+ Through the web interface:
212
+
213
+ 1. Open http://localhost:7788
214
+ 2. Navigate to the "Servers" page
215
+ 3. Click "Add Server"
216
+ 4. Fill in server details and save
217
+
218
+ ### MCP Protocol Usage
219
+
220
+ MCP-HUB-LITE exposes the MCP protocol interface on the same port:
221
+
222
+ #### List All Tools
223
+
224
+ ```json
225
+ {
226
+ "jsonrpc": "2.0",
227
+ "method": "tools/list",
228
+ "params": {}
229
+ }
230
+ ```
231
+
232
+ #### Call a Tool
233
+
234
+ ```json
235
+ {
236
+ "jsonrpc": "2.0",
237
+ "method": "tool/call",
238
+ "params": {
239
+ "toolId": "server1:example-tool",
240
+ "arguments": {}
241
+ }
242
+ }
243
+ ```
244
+
245
+ #### Get Server Status
246
+
247
+ ```json
248
+ {
249
+ "jsonrpc": "2.0",
250
+ "method": "server/status",
251
+ "params": {
252
+ "serverId": "server-1"
253
+ }
254
+ }
255
+ ```
256
+
257
+ ## Process Management
258
+
259
+ MCP-HUB-LITE supports launching and managing MCP servers using your local environment:
260
+
261
+ ### Supported Launch Methods
262
+
263
+ - **Node.js (npx)**: `npx package-name`
264
+ - **Python (uvx)**: `uvx package-name`
265
+ - **Direct Command**: Custom startup command
266
+
267
+ ### Process Management Features
268
+
269
+ - Start/stop/restart MCP servers
270
+ - Monitor CPU and memory usage
271
+ - Crash detection and automatic restart
272
+ - PID tracking and health checks
273
+
274
+ ## Development Guide
275
+
276
+ ### Project Structure
277
+
278
+ ```
279
+ src/
280
+ ├── api/ # API implementations
281
+ │ ├── mcp-protocol/ # MCP protocol handlers
282
+ │ └── web-api/ # Web API routes
283
+ ├── models/ # Data models
284
+ ├── services/ # Core business logic
285
+ ├── utils/ # Utility functions
286
+ ├── config/ # Configuration
287
+ ├── cli/ # CLI commands
288
+ ├── pid/ # Process ID management
289
+ └── server/ # Server runtime
290
+
291
+ frontend/
292
+ ├── src/
293
+ │ ├── components/ # Reusable UI components
294
+ │ ├── views/ # Page view components
295
+ │ ├── stores/ # Pinia state management
296
+ │ ├── router/ # Vue Router configuration
297
+ │ └── i18n/ # Internationalization
298
+
299
+ shared/
300
+ ├── models/ # Shared models
301
+ └── types/ # Shared types
302
+
303
+ tests/
304
+ ├── unit/ # Unit tests
305
+ ├── integration/ # Integration tests
306
+ └── contract/ # Contract tests
307
+ ```
308
+
309
+ ### Adding New Features
310
+
311
+ 1. Create models (models/)
312
+ 2. Implement services (services/)
313
+ 3. Add API routes (api/)
314
+ 4. Write tests (tests/)
315
+ 5. Update configuration files
316
+
317
+ ## Constraints and Limits
318
+
319
+ - Maximum servers: 50
320
+ - Maximum memory usage: 4GB
321
+ - CPU usage threshold: 80%
322
+ - Search response time: <500ms (90%)
323
+ - Gateway latency: <100ms
324
+
325
+ ## Detailed Technical Documentation
326
+
327
+ Complete project architecture, constraints, and design decisions can be found in:
328
+
329
+ - [CLAUDE.md](./CLAUDE.md) - Project AI context and module documentation
330
+
331
+ ## License
332
+
333
+ MIT
334
+
335
+ ## Contributing
336
+
337
+ Pull Requests and Issues are welcome!
338
+
339
+ <!-- Badges -->
340
+
341
+ [license-src]: https://img.shields.io/badge/license-MIT-080f12?style=flat&colorA=080f12&colorB=1fa669
342
+ [license-href]: ./LICENSE
343
+ [node-src]: https://img.shields.io/badge/Node.js-22.x-080f12?style=flat&logo=nodedotjs&logoColor=white&colorA=080f12&colorB=339933
344
+ [node-href]: https://nodejs.org/
345
+ [typescript-src]: https://img.shields.io/badge/TypeScript-5.x-080f12?style=flat&logo=typescript&logoColor=white&colorA=080f12&colorB=3178C6
346
+ [typescript-href]: https://www.typescriptlang.org/
347
+ [vitest-src]: https://img.shields.io/badge/Vitest-Testing-080f12?style=flat&logo=vitest&logoColor=white&colorA=080f12&colorB=6E9F18
348
+ [vitest-href]: https://vitest.dev/
349
+ [fastify-src]: https://img.shields.io/badge/Fastify-Web-080f12?style=flat&logo=fastify&logoColor=white&colorA=080f12&colorB=000000
350
+ [fastify-href]: https://fastify.io/
351
+ [vue-src]: https://img.shields.io/badge/Vue.js-3-080f12?style=flat&logo=vuedotjs&logoColor=white&colorA=080f12&colorB=4FC08D
352
+ [vue-href]: https://vuejs.org/
353
+ [claude-code-src]: https://img.shields.io/badge/Claude-Code-1fa669?style=flat&colorA=080f12&colorB=1fa669
354
+ [claude-code-href]: https://claude.ai/code
@@ -0,0 +1 @@
1
+ import{u as t}from"./index-CSTs2jYk.js";import{E as s}from"./index-BzQXG7no.js";import{t as a,f as n,w as c,A as i,C as l,O as f,a1 as m,y as _}from"./vue-vendor-6ny5zj9i.js";import"./typescript-Bp3YSIOJ.js";const u={class:"flex w-full h-full"},d={class:"flex-1 h-full overflow-hidden bg-gray-50 dark:bg-[#0f172a] relative transition-colors duration-300"},k=a({__name:"HomeView",setup(p){const o=t();return n(()=>{o.fetchServers()}),c(()=>o.error,e=>{e&&s.error(e)}),(e,h)=>{const r=m("router-view");return _(),i("div",u,[l("main",d,[f(r)])])}}});export{k as default};
@@ -0,0 +1 @@
1
+ .el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:30px;outline:none;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;transition:all .3s;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{inset:0;margin:0;opacity:0;outline:none;position:absolute;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.resource-detail[data-v-41a7b24b]{height:calc(100vh - 64px)}
@@ -0,0 +1 @@
1
+ import{F as j,az as ee,ac as W,$ as Q,aE as X,aG as pe,aA as ve,a9 as fe,_ as T,I as q,ay as be,G as Y,f as _e,aC as ye,aH as ge,aF as he,aD as xe,ad as oe,J as ke,u as we,p as Re,c as Ve,aT as Ce,a as Be,aU as Ee,C as Se,w as Ie}from"./index-CSTs2jYk.js";import{v as $e}from"./el-loading-CChNmKeI.js";import{a as Z,r as $,i as Ne,c as m,t as z,A as x,y,C as t,H as M,ap as te,u as e,I as U,J as E,k as ae,v as O,a9 as P,$ as d,n as se,K as Ge,f as le,q as Pe,Q as De,ah as Ue,w as je,P as ze,ak as Ae,x as Fe,B as Le,V as Te,a6 as qe,a8 as Me,O as V,G as S,U as Oe,a7 as Ke}from"./vue-vendor-6ny5zj9i.js";import{C as K,U as H}from"./event-BB_Ol6Sd.js";import{o as He}from"./omit-Bx5HJNV_.js";import{_ as Je}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./_baseClone-DCmK847M.js";const re=j({modelValue:{type:[String,Number,Boolean],default:void 0},size:ee,disabled:{type:Boolean,default:void 0},label:{type:[String,Number,Boolean],default:void 0},value:{type:[String,Number,Boolean],default:void 0},name:{type:String,default:void 0}}),We=j({...re,border:Boolean}),ne={[H]:n=>Z(n)||W(n)||Q(n),[K]:n=>Z(n)||W(n)||Q(n)},ie=Symbol("radioGroupKey"),de=(n,_)=>{const r=$(),p=Ne(ie,void 0),o=m(()=>!!p),w=m(()=>X(n.value)?n.label:n.value),g=m({get(){return o.value?p.modelValue:n.modelValue},set(f){o.value?p.changeEvent(f):_&&_(H,f),r.value.checked=n.modelValue===w.value}}),u=pe(m(()=>p?.size)),s=ve(m(()=>p?.disabled)),b=$(!1),v=m(()=>s.value||o.value&&g.value!==w.value?-1:0);return fe({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-radio",ref:"https://element-plus.org/en-US/component/radio.html"},m(()=>o.value&&X(n.value))),{radioRef:r,isGroup:o,radioGroup:p,focus:b,size:u,disabled:s,tabIndex:v,modelValue:g,actualValue:w}},Qe=["value","name","disabled","checked"],Xe=z({name:"ElRadio",__name:"radio",props:We,emits:ne,setup(n,{emit:_}){const r=n,p=_,o=q("radio"),{radioRef:w,radioGroup:g,focus:u,size:s,disabled:b,modelValue:v,actualValue:f}=de(r,p);function i(){se(()=>p(K,v.value))}return(k,c)=>{var l;return y(),x("label",{class:E([e(o).b(),e(o).is("disabled",e(b)),e(o).is("focus",e(u)),e(o).is("bordered",k.border),e(o).is("checked",e(v)===e(f)),e(o).m(e(s))])},[t("span",{class:E([e(o).e("input"),e(o).is("disabled",e(b)),e(o).is("checked",e(v)===e(f))])},[M(t("input",{ref_key:"radioRef",ref:w,"onUpdate:modelValue":c[0]||(c[0]=h=>ae(v)?v.value=h:null),class:E(e(o).e("original")),value:e(f),name:k.name||((l=e(g))==null?void 0:l.name),disabled:e(b),checked:e(v)===e(f),type:"radio",onFocus:c[1]||(c[1]=h=>u.value=!0),onBlur:c[2]||(c[2]=h=>u.value=!1),onChange:i,onClick:c[3]||(c[3]=U(()=>{},["stop"]))},null,42,Qe),[[te,e(v)]]),t("span",{class:E(e(o).e("inner"))},null,2)],2),t("span",{class:E(e(o).e("label")),onKeydown:c[4]||(c[4]=U(()=>{},["stop"]))},[O(k.$slots,"default",{},()=>[P(d(k.label),1)])],34)],2)}}});var ue=T(Xe,[["__file","/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio.vue"]]);const Ye=j({...re}),Ze=["value","name","disabled"],eo=z({name:"ElRadioButton",__name:"radio-button",props:Ye,setup(n){const _=n,r=q("radio"),{radioRef:p,focus:o,size:w,disabled:g,modelValue:u,radioGroup:s,actualValue:b}=de(_),v=m(()=>({backgroundColor:s?.fill||"",borderColor:s?.fill||"",boxShadow:s?.fill?`-1px 0 0 0 ${s.fill}`:"",color:s?.textColor||""}));return(f,i)=>{var k;return y(),x("label",{class:E([e(r).b("button"),e(r).is("active",e(u)===e(b)),e(r).is("disabled",e(g)),e(r).is("focus",e(o)),e(r).bm("button",e(w))])},[M(t("input",{ref_key:"radioRef",ref:p,"onUpdate:modelValue":i[0]||(i[0]=c=>ae(u)?u.value=c:null),class:E(e(r).be("button","original-radio")),value:e(b),type:"radio",name:f.name||((k=e(s))==null?void 0:k.name),disabled:e(g),onFocus:i[1]||(i[1]=c=>o.value=!0),onBlur:i[2]||(i[2]=c=>o.value=!1),onClick:i[3]||(i[3]=U(()=>{},["stop"]))},null,42,Ze),[[te,e(u)]]),t("span",{class:E(e(r).be("button","inner")),style:Ge(e(u)===e(b)?v.value:{}),onKeydown:i[4]||(i[4]=U(()=>{},["stop"]))},[O(f.$slots,"default",{},()=>[P(d(f.label),1)])],38)],2)}}});var J=T(eo,[["__file","/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio-button.vue"]]);const oo=j({id:{type:String,default:void 0},size:ee,disabled:{type:Boolean,default:void 0},modelValue:{type:[String,Number,Boolean],default:void 0},fill:{type:String,default:""},textColor:{type:String,default:""},name:{type:String,default:void 0},validateEvent:{type:Boolean,default:!0},options:{type:Y(Array)},props:{type:Y(Object),default:()=>ce},type:{type:String,values:["radio","button"],default:"radio"},...be(["ariaLabel"])}),to=ne,ce={label:"label",value:"value",disabled:"disabled"},ao=["id","aria-label","aria-labelledby"],so=z({name:"ElRadioGroup",__name:"radio-group",props:oo,emits:to,setup(n,{emit:_}){const r=n,p=_,o=q("radio"),w=_e(),g=$(),{formItem:u}=ye(),{inputId:s,isLabeledByFormItem:b}=ge(r,{formItemContext:u}),v=l=>{p(H,l),se(()=>p(K,l))};le(()=>{const l=g.value.querySelectorAll("[type=radio]"),h=l[0];!Array.from(l).some(C=>C.checked)&&h&&(h.tabIndex=0)});const f=m(()=>r.name||w.value),i=m(()=>({...ce,...r.props})),k=l=>{const{label:h,value:C,disabled:N}=i.value,A={label:l[h],value:l[C],disabled:l[N]};return{...He(l,[h,C,N]),...A}},c=m(()=>r.type==="button"?J:ue);return Pe(ie,De({...Ue(r),changeEvent:v,name:f})),je(()=>r.modelValue,(l,h)=>{r.validateEvent&&!he(l,h)&&u?.validate("change").catch(C=>xe())}),(l,h)=>(y(),x("div",{id:e(s),ref_key:"radioGroupRef",ref:g,class:E(e(o).b("group")),role:"radiogroup","aria-label":e(b)?void 0:l.ariaLabel||"radio-group","aria-labelledby":e(b)?e(u).labelId:void 0},[O(l.$slots,"default",{},()=>[(y(!0),x(ze,null,Ae(l.options,(C,N)=>(y(),Fe(Te(c.value),Le({key:N},{ref_for:!0},k(C)),null,16))),128))])],10,ao))}});var me=T(so,[["__file","/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio-group.vue"]]);ke(ue,{RadioButton:J,RadioGroup:me});const lo=oe(me),ro=oe(J),no={class:"resource-detail py-6 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto w-full h-full flex flex-col overflow-hidden"},io={class:"flex items-center justify-between mb-6 shrink-0"},uo={class:"flex items-center gap-4"},co={class:"text-2xl font-bold text-gray-900 dark:text-white"},mo={class:"flex-1 flex flex-col gap-6 overflow-hidden"},po={class:"bg-white dark:bg-[#1e1e1e] rounded-lg shadow p-6 shrink-0 border border-gray-200 dark:border-gray-700"},vo={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},fo={class:"text-sm font-medium text-gray-500 dark:text-gray-400 mb-1"},bo={class:"font-mono text-sm break-all select-all"},_o={class:"text-sm font-medium text-gray-500 dark:text-gray-400 mb-1"},yo={class:"font-mono text-sm"},go={class:"md:col-span-2"},ho={class:"text-sm font-medium text-gray-500 dark:text-gray-400 mb-1"},xo={class:"text-sm"},ko={class:"md:col-span-2"},wo={class:"text-sm font-medium text-gray-500 dark:text-gray-400 mb-1"},Ro={class:"text-sm"},Vo={class:"bg-white dark:bg-[#1e1e1e] rounded-lg shadow flex-1 flex flex-col overflow-hidden border border-gray-200 dark:border-gray-700"},Co={class:"px-6 py-4 border-b border-gray-200 dark:border-gray-700 flex justify-between items-center bg-gray-50 dark:bg-[#2d2d2d]"},Bo={class:"font-medium"},Eo={class:"flex gap-2"},So={class:"flex-1 overflow-auto p-6 bg-gray-50 dark:bg-[#0f172a]"},Io={key:0,class:"mb-4 p-4 bg-blue-50 dark:bg-blue-900 rounded-lg border border-blue-200 dark:border-blue-800"},$o={class:"text-sm text-blue-700 dark:text-blue-300"},No={key:1,class:"h-full flex items-center justify-center text-gray-400"},Go={key:2,class:"h-full flex flex-col items-center justify-center text-red-500"},Po={key:3,class:"h-full"},Do={key:0,class:"h-full"},Uo={key:0,class:"h-full flex items-center justify-center"},jo=["src"],zo={key:1,class:"bg-white dark:bg-[#1e1e1e] p-4 rounded shadow-sm h-full overflow-auto font-mono text-sm whitespace-pre-wrap"},Ao={key:1,class:"h-full"},Fo={class:"bg-gray-900 text-gray-100 p-4 rounded-lg h-full overflow-auto font-mono text-sm"},Lo=z({__name:"ResourceDetailView",setup(n){const _=Me(),r=Ke(),p=we(),{t:o}=qe(),w=m(()=>_.params.name),g=m(()=>_.query.uri),u=m(()=>{if(_.query.name)return _.query.name;const a=_.query.uri;if(a){const B=a.split("/"),R=B[B.length-1];if(R&&R.length>0)return R}return"Unknown Resource"}),s=m(()=>_.query.mimeType||"application/octet-stream"),b=m(()=>_.query.description||o("resources.noDescription")),v=$(!1),f=$(null),i=$(null),k=$("preview"),c=m(()=>s.value.startsWith("image/")),l=m(()=>{if(!i.value)return"";const a=i.value;return a&&typeof a=="object"&&"text"in a&&typeof a.text=="string"?a.text:a&&typeof a=="object"&&"blob"in a?"[Binary Data]":""}),h=m(()=>{if(!c.value||!i.value)return"";const a=i.value;return a&&typeof a=="object"&&"blob"in a&&typeof a.blob=="string"?`data:${s.value};base64,${a.blob}`:""});function C(){r.back()}async function N(){v.value=!0,f.value=null;try{i.value=await p.readResource(w.value,g.value)}catch(a){f.value=a.message||"Failed to load resource content"}finally{v.value=!1}}function A(){const a=document.createElement("a"),B=new Blob([l.value],{type:s.value}),R=i.value;if(R&&typeof R=="object"&&"blob"in R&&typeof R.blob=="string"){const I=atob(R.blob),D=new Array(I.length);for(let G=0;G<I.length;G++)D[G]=I.charCodeAt(G);const F=new Uint8Array(D),L=new Blob([F],{type:s.value});a.href=URL.createObjectURL(L)}else a.href=URL.createObjectURL(B);a.download=u.value,document.body.appendChild(a),a.click(),document.body.removeChild(a)}return le(()=>{g.value&&N()}),(a,B)=>{const R=Ve,I=Be,D=ro,F=lo,L=$e;return y(),x("div",no,[t("div",io,[t("div",uo,[V(R,{icon:e(Re),plain:"",onClick:C,class:"shrink-0"},{default:S(()=>[P(d(e(o)("action.back")),1)]),_:1},8,["icon"]),t("h2",co," Resource Details: "+d(u.value),1)])]),M((y(),x("div",mo,[t("div",po,[t("div",vo,[t("div",null,[t("div",fo,d(e(o)("resources.uri")),1),t("div",bo,d(g.value),1)]),t("div",null,[t("div",_o,d(e(o)("resources.mimeType")),1),t("div",yo,d(s.value),1)]),t("div",go,[t("div",ho,d(e(o)("resources.description")),1),t("div",xo,d(b.value),1)]),t("div",ko,[t("div",wo,d(e(o)("resources.server")),1),t("div",Ro,d(w.value),1)])])]),t("div",Vo,[t("div",Co,[t("div",Bo,d(e(o)("resources.contentPreview")),1),t("div",Eo,[V(F,{modelValue:k.value,"onUpdate:modelValue":B[0]||(B[0]=G=>k.value=G),size:"small"},{default:S(()=>[V(D,{value:"preview"},{default:S(()=>[V(I,{class:"mr-1"},{default:S(()=>[V(e(Ee))]),_:1}),P(" "+d(e(o)("resources.preview")),1)]),_:1}),V(D,{value:"source"},{default:S(()=>[V(I,{class:"mr-1"},{default:S(()=>[V(e(Se))]),_:1}),P(" "+d(e(o)("resources.source")),1)]),_:1})]),_:1},8,["modelValue"]),V(R,{size:"small",icon:e(Ce),onClick:A},{default:S(()=>[P(d(e(o)("resources.download")),1)]),_:1},8,["icon"])])]),t("div",So,[b.value&&b.value!=="No description available"?(y(),x("div",Io,[B[1]||(B[1]=t("div",{class:"text-sm font-medium text-blue-900 dark:text-blue-100 mb-1"},"Description",-1)),t("div",$o,d(b.value),1)])):Oe("",!0),v.value?(y(),x("div",No,d(e(o)("resources.loadingContent")),1)):f.value?(y(),x("div",Go,[V(I,{class:"text-4xl mb-2"},{default:S(()=>[V(e(Ie))]),_:1}),t("div",null,d(f.value),1)])):(y(),x("div",Po,[k.value==="preview"?(y(),x("div",Do,[c.value?(y(),x("div",Uo,[t("img",{src:h.value,class:"max-w-full max-h-full object-contain rounded shadow-lg"},null,8,jo)])):(y(),x("div",zo,d(l.value),1))])):(y(),x("div",Ao,[t("pre",Fo,[t("code",null,d(l.value),1)])]))]))])])])),[[L,v.value]])])}}}),Wo=Je(Lo,[["__scopeId","data-v-41a7b24b"]]);export{Wo as default};
@@ -0,0 +1 @@
1
+ .custom-scrollbar[data-v-b769732e]::-webkit-scrollbar{width:6px}.custom-scrollbar[data-v-b769732e]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar[data-v-b769732e]::-webkit-scrollbar-thumb{background-color:#9ca3af80;border-radius:3px}.dark .custom-scrollbar[data-v-b769732e]::-webkit-scrollbar-thumb{background-color:#4b556380}.animate-fade-in[data-v-b769732e]{animation:fadeIn-b769732e .3s ease-out}@keyframes fadeIn-b769732e{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}