@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
@@ -0,0 +1,109 @@
1
+ import { describe, it, expect, beforeEach, vi } from 'vitest';
2
+ import { mcpConnectionManager } from '../../../src/services/mcp-connection-manager.js';
3
+ import { hubManager } from '../../../src/services/hub-manager.service.js';
4
+ // Mock MCP SDK Client
5
+ const mockConnect = vi.fn();
6
+ const mockClose = vi.fn();
7
+ const mockListTools = vi.fn();
8
+ vi.mock('@modelcontextprotocol/sdk/client/index.js', () => {
9
+ return {
10
+ Client: class {
11
+ connect = mockConnect;
12
+ close = mockClose;
13
+ listTools = mockListTools;
14
+ getServerVersion = vi.fn().mockReturnValue({ name: 'Test Server', version: '1.0.0' });
15
+ }
16
+ };
17
+ });
18
+ // Mock transport factory
19
+ vi.mock('@utils/transports/transport-factory.js', () => {
20
+ return {
21
+ TransportFactory: {
22
+ createTransport: vi.fn().mockReturnValue({
23
+ onclose: null,
24
+ onstdout: null,
25
+ onstderr: null,
26
+ close: vi.fn().mockResolvedValue(undefined)
27
+ })
28
+ }
29
+ };
30
+ });
31
+ describe('Gateway Fault Tolerance', () => {
32
+ let mockServerInstance;
33
+ beforeEach(async () => {
34
+ // Clear all mocks
35
+ vi.clearAllMocks();
36
+ // Add test server
37
+ await hubManager.addServer('test-server', {
38
+ command: 'node',
39
+ args: [],
40
+ enabled: true,
41
+ type: 'stdio',
42
+ timeout: 60000,
43
+ allowedTools: []
44
+ });
45
+ // Add server instance
46
+ mockServerInstance = await hubManager.addServerInstance('test-server', {});
47
+ });
48
+ it('should handle connection failure gracefully', async () => {
49
+ mockConnect.mockRejectedValueOnce(new Error('Connection failed'));
50
+ // Directly use hubManager.getServerById to get complete server configuration
51
+ const serverInfo = hubManager.getServerById(mockServerInstance.id);
52
+ const success = await mcpConnectionManager.connect({
53
+ ...serverInfo.config,
54
+ ...serverInfo.instance
55
+ });
56
+ expect(success).toBe(false);
57
+ const status = mcpConnectionManager.getStatus(mockServerInstance.id);
58
+ expect(status?.connected).toBe(false);
59
+ expect(status?.error).toContain('Connection failed');
60
+ });
61
+ it('should handle listTools failure gracefully', async () => {
62
+ mockConnect.mockResolvedValueOnce(undefined);
63
+ mockListTools.mockRejectedValueOnce(new Error('List tools failed'));
64
+ // Directly use hubManager.getServerById to get complete server configuration
65
+ const serverInfo = hubManager.getServerById(mockServerInstance.id);
66
+ const success = await mcpConnectionManager.connect({
67
+ ...serverInfo.config,
68
+ ...serverInfo.instance
69
+ });
70
+ expect(success).toBe(false);
71
+ const status = mcpConnectionManager.getStatus(mockServerInstance.id);
72
+ expect(status?.connected).toBe(false);
73
+ expect(status?.error).toContain('List tools failed');
74
+ });
75
+ it('should not affect other servers when one fails', async () => {
76
+ // Add second server
77
+ await hubManager.addServer('working-server', {
78
+ command: 'node',
79
+ args: [],
80
+ enabled: true,
81
+ type: 'stdio',
82
+ timeout: 60000,
83
+ allowedTools: []
84
+ });
85
+ const workingInstance = await hubManager.addServerInstance('working-server', {});
86
+ // Simulate first server failure, second server success
87
+ mockConnect
88
+ .mockImplementationOnce(() => Promise.reject(new Error('First server failed')))
89
+ .mockImplementationOnce(() => Promise.resolve());
90
+ mockListTools.mockImplementationOnce(() => Promise.resolve({ tools: [] }));
91
+ // Connect first server (should fail)
92
+ const serverInfo1 = hubManager.getServerById(mockServerInstance.id);
93
+ await mcpConnectionManager.connect({
94
+ ...serverInfo1.config,
95
+ ...serverInfo1.instance
96
+ });
97
+ // Connect second server (should succeed)
98
+ const serverInfo2 = hubManager.getServerById(workingInstance.id);
99
+ const success2 = await mcpConnectionManager.connect({
100
+ ...serverInfo2.config,
101
+ ...serverInfo2.instance
102
+ });
103
+ expect(success2).toBe(true);
104
+ const status1 = mcpConnectionManager.getStatus(mockServerInstance.id);
105
+ const status2 = mcpConnectionManager.getStatus(workingInstance.id);
106
+ expect(status1?.connected).toBe(false);
107
+ expect(status2?.connected).toBe(true);
108
+ });
109
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mcp-connection.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-connection.test.d.ts","sourceRoot":"","sources":["../../../../../tests/integration/gateway/mcp-connection.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,149 @@
1
+ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
2
+ import { mcpConnectionManager } from '../../../src/services/mcp-connection-manager.js';
3
+ import { hubManager } from '../../../src/services/hub-manager.service.js';
4
+ import { simpleSearchService } from '../../../src/services/simple-search.service.js';
5
+ // Mock MCP SDK Client
6
+ const mockConnect = vi.fn();
7
+ const mockClose = vi.fn();
8
+ const mockListTools = vi.fn();
9
+ vi.mock('@modelcontextprotocol/sdk/client/index.js', () => {
10
+ return {
11
+ Client: class {
12
+ connect = mockConnect;
13
+ close = mockClose;
14
+ listTools = mockListTools;
15
+ getServerVersion = vi.fn().mockReturnValue({ name: 'Test Server', version: '1.0.0' });
16
+ }
17
+ };
18
+ });
19
+ // Mock transport factory
20
+ vi.mock('@utils/transports/transport-factory.js', () => {
21
+ return {
22
+ TransportFactory: {
23
+ createTransport: vi.fn().mockReturnValue({
24
+ onclose: null,
25
+ onstdout: null,
26
+ onstderr: null,
27
+ close: vi.fn().mockResolvedValue(undefined)
28
+ })
29
+ }
30
+ };
31
+ });
32
+ describe('MCP Connection Integration', () => {
33
+ const serverName = 'test-mcp-server';
34
+ let serverId;
35
+ beforeEach(async () => {
36
+ // Clear all mocks
37
+ vi.clearAllMocks();
38
+ // Add test server
39
+ await hubManager.addServer(serverName, {
40
+ command: 'node',
41
+ args: [],
42
+ enabled: true,
43
+ type: 'stdio',
44
+ timeout: 60000,
45
+ allowedTools: []
46
+ });
47
+ // Add server instance
48
+ const instance = await hubManager.addServerInstance(serverName, {});
49
+ serverId = instance.id;
50
+ });
51
+ afterEach(async () => {
52
+ await mcpConnectionManager.disconnect(serverId);
53
+ hubManager.removeServer(serverName);
54
+ });
55
+ it('should establish MCP connection successfully', async () => {
56
+ mockConnect.mockResolvedValueOnce(undefined);
57
+ mockListTools.mockResolvedValueOnce({ tools: [] });
58
+ const serverInfo = hubManager.getServerById(serverId);
59
+ const success = await mcpConnectionManager.connect({
60
+ ...serverInfo.config,
61
+ ...serverInfo.instance
62
+ });
63
+ expect(success).toBe(true);
64
+ const status = mcpConnectionManager.getStatus(serverId);
65
+ expect(status?.connected).toBe(true);
66
+ });
67
+ it('should handle connection errors properly', async () => {
68
+ mockConnect.mockRejectedValueOnce(new Error('Connection refused'));
69
+ const serverInfo = hubManager.getServerById(serverId);
70
+ const success = await mcpConnectionManager.connect({
71
+ ...serverInfo.config,
72
+ ...serverInfo.instance
73
+ });
74
+ expect(success).toBe(false);
75
+ const status = mcpConnectionManager.getStatus(serverId);
76
+ expect(status?.connected).toBe(false);
77
+ expect(status?.error).toContain('Connection refused');
78
+ });
79
+ it('should support concurrent connections', async () => {
80
+ // Add second server
81
+ const server2Name = 'test-mcp-server-2';
82
+ await hubManager.addServer(server2Name, {
83
+ command: 'node',
84
+ args: [],
85
+ enabled: true,
86
+ type: 'stdio',
87
+ timeout: 60000,
88
+ allowedTools: []
89
+ });
90
+ const instance2 = await hubManager.addServerInstance(server2Name, {});
91
+ mockConnect.mockResolvedValue(undefined);
92
+ mockListTools.mockResolvedValue({ tools: [] });
93
+ const serverInfo1 = hubManager.getServerById(serverId);
94
+ const serverInfo2 = hubManager.getServerById(instance2.id);
95
+ const [success1, success2] = await Promise.all([
96
+ mcpConnectionManager.connect({
97
+ ...serverInfo1.config,
98
+ ...serverInfo1.instance
99
+ }),
100
+ mcpConnectionManager.connect({
101
+ ...serverInfo2.config,
102
+ ...serverInfo2.instance
103
+ })
104
+ ]);
105
+ expect(success1).toBe(true);
106
+ expect(success2).toBe(true);
107
+ const status1 = mcpConnectionManager.getStatus(serverId);
108
+ const status2 = mcpConnectionManager.getStatus(instance2.id);
109
+ expect(status1?.connected).toBe(true);
110
+ expect(status2?.connected).toBe(true);
111
+ // Clean up
112
+ await mcpConnectionManager.disconnect(instance2.id);
113
+ await hubManager.removeServer(server2Name);
114
+ });
115
+ it('should integrate with search service', async () => {
116
+ // Set up mock tool data
117
+ mockConnect.mockResolvedValue(undefined);
118
+ mockListTools.mockResolvedValue({
119
+ tools: [
120
+ {
121
+ name: 'test-tool',
122
+ description: 'A test tool for searching',
123
+ inputSchema: { type: 'object', properties: { query: { type: 'string' } } }
124
+ }
125
+ ]
126
+ });
127
+ const searchServerName = 'search-test-server';
128
+ await hubManager.addServer(searchServerName, {
129
+ command: 'node',
130
+ args: [],
131
+ enabled: true,
132
+ type: 'stdio',
133
+ timeout: 60000,
134
+ allowedTools: []
135
+ });
136
+ const searchServerInstance = await hubManager.addServerInstance(searchServerName, {});
137
+ const serverInfo = hubManager.getServerById(searchServerInstance.id);
138
+ await mcpConnectionManager.connect({
139
+ ...serverInfo.config,
140
+ ...serverInfo.instance
141
+ });
142
+ const results = simpleSearchService.search('test');
143
+ expect(results.length).toBeGreaterThan(0);
144
+ expect(results[0].tool.name).toBe('test-tool');
145
+ // Clean up
146
+ await mcpConnectionManager.disconnect(searchServerInstance.id);
147
+ await hubManager.removeServer(searchServerName);
148
+ });
149
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=server.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.test.d.ts","sourceRoot":"","sources":["../../../tests/server.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,95 @@
1
+ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
2
+ import Fastify from 'fastify';
3
+ import { webServerRoutes } from '../src/api/web/servers.js';
4
+ import { hubManager } from '../src/services/hub-manager.service.js';
5
+ // Mock hubManager
6
+ vi.mock('@services/hub-manager.service.js', () => ({
7
+ hubManager: {
8
+ getAllServers: vi.fn(),
9
+ getServerById: vi.fn(),
10
+ getServerByName: vi.fn(),
11
+ addServer: vi.fn(),
12
+ updateServer: vi.fn(),
13
+ removeServer: vi.fn(),
14
+ addServerInstance: vi.fn().mockResolvedValue({}),
15
+ getServerInstanceByName: vi.fn()
16
+ }
17
+ }));
18
+ describe('Server API Routes', () => {
19
+ let app;
20
+ beforeEach(async () => {
21
+ app = Fastify();
22
+ app.register(webServerRoutes);
23
+ await app.ready();
24
+ vi.clearAllMocks();
25
+ });
26
+ afterEach(() => {
27
+ app.close();
28
+ });
29
+ it('GET /api/servers should return all servers', async () => {
30
+ const mockServers = [
31
+ {
32
+ name: 'test',
33
+ config: {
34
+ type: 'stdio',
35
+ command: 'test',
36
+ args: [],
37
+ enabled: true,
38
+ allowedTools: [],
39
+ timeout: 30000
40
+ }
41
+ }
42
+ ];
43
+ vi.mocked(hubManager.getAllServers).mockReturnValue(mockServers);
44
+ const response = await app.inject({
45
+ method: 'GET',
46
+ url: '/web/servers'
47
+ });
48
+ expect(response.statusCode).toBe(200);
49
+ expect(JSON.parse(response.payload)).toEqual(mockServers);
50
+ });
51
+ it('POST /api/servers should add a server', async () => {
52
+ const newServer = {
53
+ name: 'New Server',
54
+ config: {
55
+ command: 'node',
56
+ args: [],
57
+ env: {},
58
+ enabled: true,
59
+ allowedTools: []
60
+ }
61
+ };
62
+ const createdServer = {
63
+ type: 'stdio',
64
+ command: 'node',
65
+ args: [],
66
+ env: {},
67
+ enabled: true,
68
+ allowedTools: [],
69
+ timeout: 30000
70
+ };
71
+ vi.mocked(hubManager.addServer).mockReturnValue(Promise.resolve(createdServer));
72
+ const response = await app.inject({
73
+ method: 'POST',
74
+ url: '/web/servers',
75
+ payload: newServer
76
+ });
77
+ expect(response.statusCode).toBe(201);
78
+ expect(JSON.parse(response.payload)).toEqual({
79
+ name: newServer.name,
80
+ config: createdServer
81
+ });
82
+ });
83
+ it('POST /api/servers should validate input', async () => {
84
+ const invalidServer = {
85
+ name: '', // Empty name invalid
86
+ command: 'node'
87
+ };
88
+ const response = await app.inject({
89
+ method: 'POST',
90
+ url: '/web/servers',
91
+ payload: invalidServer
92
+ });
93
+ expect(response.statusCode).toBe(400);
94
+ });
95
+ });
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Global test setup file for backend tests
3
+ * Ensures test isolation by using temporary config directories
4
+ */
5
+ export declare const getTestConfigPath: () => string;
6
+ export declare const getTestConfigDir: () => string;
7
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../tests/setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyDH,eAAO,MAAM,iBAAiB,cAA2B,CAAC;AAC1D,eAAO,MAAM,gBAAgB,cAA0B,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Global test setup file for backend tests
3
+ * Ensures test isolation by using temporary config directories
4
+ */
5
+ import os from 'node:os';
6
+ import path from 'node:path';
7
+ import fs from 'node:fs';
8
+ // Global temporary directory for test config
9
+ let tempTestConfigDir;
10
+ let tempTestConfigPath;
11
+ /**
12
+ * Set up test environment before all tests
13
+ */
14
+ beforeAll(() => {
15
+ // Create a unique temp directory for this test run (matching user's required format)
16
+ const timestamp = Date.now();
17
+ tempTestConfigDir = path.join(os.tmpdir(), `mcp-hub-lite-test-${timestamp}`);
18
+ // Ensure temp directory exists
19
+ fs.mkdirSync(tempTestConfigDir, { recursive: true });
20
+ // Set the temp config path
21
+ tempTestConfigPath = path.join(tempTestConfigDir, '.mcp-hub.json');
22
+ // Force all tests to use this temp config path
23
+ // This prevents tests from modifying user's actual config file
24
+ process.env.MCP_HUB_CONFIG_PATH = tempTestConfigPath;
25
+ // Set test environment variables
26
+ process.env.NODE_ENV = 'test';
27
+ process.env.VITEST = 'true';
28
+ // Clear other env vars that might affect config
29
+ delete process.env.PORT;
30
+ delete process.env.HOST;
31
+ delete process.env.LOG_LEVEL;
32
+ delete process.env.LOG_ROTATION_ENABLED;
33
+ delete process.env.LOG_MAX_AGE;
34
+ delete process.env.LOG_MAX_SIZE;
35
+ delete process.env.LOG_COMPRESS;
36
+ });
37
+ /**
38
+ * Clean up after all tests
39
+ */
40
+ afterAll(() => {
41
+ // Clean up temp directory
42
+ if (tempTestConfigDir && fs.existsSync(tempTestConfigDir)) {
43
+ try {
44
+ fs.rmSync(tempTestConfigDir, { recursive: true, force: true });
45
+ }
46
+ catch (error) {
47
+ console.warn(`Failed to clean up test temp directory: ${error}`);
48
+ }
49
+ }
50
+ });
51
+ // Export for reference in tests if needed
52
+ export const getTestConfigPath = () => tempTestConfigPath;
53
+ export const getTestConfigDir = () => tempTestConfigDir;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Logger test helper types for accessing private methods in tests
3
+ */
4
+ import type { LogLevel } from '../../shared/types/common.types.js';
5
+ import type { LogContext } from '../../src/utils/logger.js';
6
+ import type { WriteStream } from 'node:fs';
7
+ export interface LoggerWithPrivateMethods {
8
+ shouldLog: (level: string) => boolean;
9
+ formatTimestamp: (date: Date) => string;
10
+ formatLogLevel: (level: LogLevel) => string;
11
+ formatPid: (pid: number) => string;
12
+ createColoredLogMessage: (level: LogLevel, message: string, context?: LogContext) => string;
13
+ createLogMessage: (level: LogLevel, message: string, context?: LogContext) => string;
14
+ formatError: (error: unknown) => string;
15
+ logFileStream: WriteStream | null;
16
+ }
17
+ //# sourceMappingURL=logger-test-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-test-helpers.d.ts","sourceRoot":"","sources":["../../../../tests/types/logger-test-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IACxC,cAAc,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,MAAM,CAAC;IAC5C,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,uBAAuB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC;IAC5F,gBAAgB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC;IACrF,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IACxC,aAAa,EAAE,WAAW,GAAG,IAAI,CAAC;CACnC"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Logger test helper types for accessing private methods in tests
3
+ */
4
+ export {};
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Test helper types for MCP Hub Lite integration tests
3
+ */
4
+ export interface MockServerConfig {
5
+ id: string;
6
+ name: string;
7
+ config: {
8
+ allowedTools?: string[];
9
+ };
10
+ instance: {
11
+ id: string;
12
+ timestamp: number;
13
+ hash: string;
14
+ };
15
+ }
16
+ export interface MockTool {
17
+ name: string;
18
+ description: string;
19
+ inputSchema: Record<string, unknown>;
20
+ serverId: string;
21
+ }
22
+ export interface SystemTool {
23
+ name: string;
24
+ description: string;
25
+ inputSchema: Record<string, unknown>;
26
+ }
27
+ //# sourceMappingURL=test-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../../../tests/types/test-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAGD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Test helper types for MCP Hub Lite integration tests
3
+ */
4
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=basic-cli.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic-cli.test.d.ts","sourceRoot":"","sources":["../../../../../tests/unit/cli/basic-cli.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { startCommand } from '../../../src/cli/commands/start.js';
3
+ import { stopCommand } from '../../../src/cli/commands/stop.js';
4
+ import { statusCommand } from '../../../src/cli/commands/status.js';
5
+ import { uiCommand } from '../../../src/cli/commands/ui.js';
6
+ import { listCommand } from '../../../src/cli/commands/list.js';
7
+ import { restartCommand } from '../../../src/cli/commands/restart.js';
8
+ describe('CLI Commands', () => {
9
+ it('should create start command with correct properties', () => {
10
+ expect(startCommand.name()).toBe('start');
11
+ expect(startCommand.description()).toBe('Start the MCP Hub Lite server');
12
+ });
13
+ it('should create stop command with correct properties', () => {
14
+ expect(stopCommand.name()).toBe('stop');
15
+ expect(stopCommand.description()).toBe('Stop the MCP Hub Lite server');
16
+ });
17
+ it('should create status command with correct properties', () => {
18
+ expect(statusCommand.name()).toBe('status');
19
+ expect(statusCommand.description()).toBe('Get the status of MCP Hub Lite server');
20
+ });
21
+ it('should create ui command with correct properties', () => {
22
+ expect(uiCommand.name()).toBe('ui');
23
+ expect(uiCommand.description()).toBe('Open the MCP Hub Lite web UI in browser');
24
+ });
25
+ it('should create list command with correct properties', () => {
26
+ expect(listCommand.name()).toBe('list');
27
+ expect(listCommand.description()).toBe('List all configured MCP servers');
28
+ });
29
+ it('should create restart command with correct properties', () => {
30
+ expect(restartCommand.name()).toBe('restart');
31
+ expect(restartCommand.description()).toBe('Restart the MCP Hub Lite server');
32
+ });
33
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cli.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.test.d.ts","sourceRoot":"","sources":["../../../../../tests/unit/cli/cli.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { Command } from 'commander';
3
+ describe('CLI Main Entry Point', () => {
4
+ it('should create CLI program with correct name and description', () => {
5
+ // Create a new Command instance to test configuration
6
+ const program = new Command();
7
+ program.name('mcp-hub-lite').description('Lightweight MCP Gateway for managing MCP servers');
8
+ expect(program.name()).toBe('mcp-hub-lite');
9
+ expect(program.description()).toBe('Lightweight MCP Gateway for managing MCP servers');
10
+ });
11
+ it('should have version set correctly', () => {
12
+ const program = new Command();
13
+ program.version('1.0.0');
14
+ // Use the public version() method to get the version
15
+ expect(program.version()).toBe('1.0.0');
16
+ });
17
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=commands.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.test.d.ts","sourceRoot":"","sources":["../../../../../tests/unit/cli/commands.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,75 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { startCommand } from '../../../src/cli/commands/start.js';
3
+ import { stopCommand } from '../../../src/cli/commands/stop.js';
4
+ import { statusCommand } from '../../../src/cli/commands/status.js';
5
+ import { uiCommand } from '../../../src/cli/commands/ui.js';
6
+ import { listCommand } from '../../../src/cli/commands/list.js';
7
+ import { restartCommand } from '../../../src/cli/commands/restart.js';
8
+ describe('CLI Commands Options', () => {
9
+ describe('Start Command', () => {
10
+ it('should be defined', () => {
11
+ expect(startCommand).toBeDefined();
12
+ });
13
+ it('should have port option without hardcoded default (reads from config)', () => {
14
+ const portOption = startCommand.options.find((opt) => opt.long === '--port');
15
+ expect(portOption).toBeDefined();
16
+ expect(portOption?.defaultValue).toBeUndefined();
17
+ });
18
+ it('should have host option without hardcoded default (reads from config)', () => {
19
+ const hostOption = startCommand.options.find((opt) => opt.long === '--host');
20
+ expect(hostOption).toBeDefined();
21
+ expect(hostOption?.defaultValue).toBeUndefined();
22
+ });
23
+ it('should have foreground option', () => {
24
+ const foregroundOption = startCommand.options.find((opt) => opt.long === '--foreground');
25
+ expect(foregroundOption).toBeDefined();
26
+ });
27
+ it('should have stdio option', () => {
28
+ const stdioOption = startCommand.options.find((opt) => opt.long === '--stdio');
29
+ expect(stdioOption).toBeDefined();
30
+ });
31
+ });
32
+ describe('Stop Command', () => {
33
+ it('should have pid option', () => {
34
+ const pidOption = stopCommand.options.find((opt) => opt.long === '--pid');
35
+ expect(pidOption).toBeDefined();
36
+ });
37
+ });
38
+ describe('Status Command', () => {
39
+ it('should have pid option', () => {
40
+ const pidOption = statusCommand.options.find((opt) => opt.long === '--pid');
41
+ expect(pidOption).toBeDefined();
42
+ });
43
+ });
44
+ describe('UI Command', () => {
45
+ it('should have port option without hardcoded default (reads from config)', () => {
46
+ const portOption = uiCommand.options.find((opt) => opt.long === '--port');
47
+ expect(portOption).toBeDefined();
48
+ expect(portOption?.defaultValue).toBeUndefined();
49
+ });
50
+ it('should have host option without hardcoded default (reads from config)', () => {
51
+ const hostOption = uiCommand.options.find((opt) => opt.long === '--host');
52
+ expect(hostOption).toBeDefined();
53
+ expect(hostOption?.defaultValue).toBeUndefined();
54
+ });
55
+ });
56
+ describe('List Command', () => {
57
+ it('should have format option with default value', () => {
58
+ const formatOption = listCommand.options.find((opt) => opt.long === '--format');
59
+ expect(formatOption).toBeDefined();
60
+ expect(formatOption?.defaultValue).toBe('table');
61
+ });
62
+ });
63
+ describe('Restart Command', () => {
64
+ it('should have port option with default value', () => {
65
+ const portOption = restartCommand.options.find((opt) => opt.long === '--port');
66
+ expect(portOption).toBeDefined();
67
+ expect(portOption?.defaultValue).toBe('3000');
68
+ });
69
+ it('should have host option with default value', () => {
70
+ const hostOption = restartCommand.options.find((opt) => opt.long === '--host');
71
+ expect(hostOption).toBeDefined();
72
+ expect(hostOption?.defaultValue).toBe('localhost');
73
+ });
74
+ });
75
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=server.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.test.d.ts","sourceRoot":"","sources":["../../../../../tests/unit/cli/server.test.ts"],"names":[],"mappings":""}