@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,203 @@
1
+ import { logger } from '../utils/logger.js';
2
+ import { eventBus } from './event-bus.service.js';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { configManager } from '../config/config-manager.js';
5
+ import { formatDuration } from '../utils/format-utils.js';
6
+ /**
7
+ * Client tracking service that manages client connections and their metadata.
8
+ *
9
+ * This service maintains a registry of connected clients (typically IDEs or other
10
+ * MCP clients) and tracks their connection state, metadata, and workspace roots.
11
+ * It provides automatic cleanup of stale clients after a timeout period and
12
+ * publishes connection/disconnection events via the event bus.
13
+ *
14
+ * The service is primarily used by the MCP session manager to track which clients
15
+ * are connected and maintain their context information for proper session management.
16
+ *
17
+ * @example
18
+ * // Update client information when a new connection is established
19
+ * clientTrackerService.updateClient({
20
+ * sessionId: 'session-123',
21
+ * clientName: 'VS Code',
22
+ * clientVersion: '1.85.0',
23
+ * cwd: '/home/user/project'
24
+ * });
25
+ *
26
+ * // Get all currently connected clients
27
+ * const clients = clientTrackerService.getClients();
28
+ */
29
+ class ClientTrackerService {
30
+ clients = new Map();
31
+ // Use the same timeout as session manager (default 30 minutes)
32
+ get TIMEOUT_MS() {
33
+ return configManager.getConfig().security.sessionTimeout;
34
+ }
35
+ /**
36
+ * Creates a new client tracker service instance.
37
+ *
38
+ * Initializes the service with automatic periodic cleanup of stale clients
39
+ * every 60 seconds to prevent memory leaks from disconnected clients.
40
+ */
41
+ constructor() {
42
+ // Periodic cleanup
43
+ setInterval(() => this.cleanup(), 60000);
44
+ }
45
+ /**
46
+ * Updates or creates a client entry with the provided context information.
47
+ *
48
+ * This method is called whenever a client sends a request with context information.
49
+ * It preserves existing client metadata that isn't provided in the new context,
50
+ * ensuring that clients don't lose their previously established information.
51
+ *
52
+ * If this is a new client (not previously tracked), it publishes a 'client-connected'
53
+ * event to notify other services about the new connection.
54
+ *
55
+ * @param context - The client context containing session ID and optional metadata
56
+ * @param context.sessionId - Unique identifier for the client session
57
+ * @param context.clientName - Optional name of the client application
58
+ * @param context.clientVersion - Optional version of the client application
59
+ * @param context.protocolVersion - Optional MCP protocol version
60
+ * @param context.project - Optional project identifier
61
+ * @param context.cwd - Optional current working directory
62
+ * @param context.userAgent - Optional user agent string
63
+ * @param context.ip - Optional client IP address
64
+ *
65
+ * @example
66
+ * clientTrackerService.updateClient({
67
+ * sessionId: 'session-123',
68
+ * clientName: 'VS Code',
69
+ * clientVersion: '1.85.0',
70
+ * cwd: '/home/user/project'
71
+ * });
72
+ */
73
+ updateClient(context) {
74
+ const existing = this.clients.get(context.sessionId);
75
+ const clientInfo = {
76
+ ...context,
77
+ // Preserve existing info if not provided in new request
78
+ clientName: context.clientName || existing?.clientName,
79
+ clientVersion: context.clientVersion || existing?.clientVersion,
80
+ protocolVersion: context.protocolVersion || existing?.protocolVersion,
81
+ project: context.project || existing?.project,
82
+ cwd: context.cwd || existing?.cwd, // Preserve CWD if not provided in new request (e.g. inferred from roots)
83
+ userAgent: context.userAgent || existing?.userAgent,
84
+ ip: context.ip || existing?.ip,
85
+ lastSeen: Date.now(),
86
+ roots: existing?.roots // Preserve roots if already fetched
87
+ };
88
+ this.clients.set(context.sessionId, clientInfo);
89
+ // If it's a new client, publish connection event
90
+ if (!existing) {
91
+ eventBus.publish('client-connected', {
92
+ timestamp: Date.now(),
93
+ client: clientInfo
94
+ });
95
+ }
96
+ }
97
+ /**
98
+ * Updates the workspace roots for a specific client session.
99
+ *
100
+ * This method is typically called when a client provides its workspace root
101
+ * directories, which helps determine the client's working directory context.
102
+ * If the client doesn't have a current working directory (cwd) set, it will
103
+ * attempt to infer one from the first root URI in the list.
104
+ *
105
+ * For file:// URIs, it converts them to local file paths using Node.js's
106
+ * fileURLToPath utility. For other URI schemes, it uses the URI directly.
107
+ *
108
+ * @param sessionId - The unique session identifier for the client
109
+ * @param roots - Array of client root objects containing URI information
110
+ *
111
+ * @example
112
+ * clientTrackerService.updateClientRoots('session-123', [
113
+ * { uri: 'file:///home/user/project' },
114
+ * { uri: 'file:///home/user/other-project' }
115
+ * ]);
116
+ */
117
+ updateClientRoots(sessionId, roots) {
118
+ const client = this.clients.get(sessionId);
119
+ if (client) {
120
+ client.roots = roots;
121
+ client.lastSeen = Date.now();
122
+ // If CWD is missing, try to infer from roots
123
+ if (!client.cwd && roots.length > 0) {
124
+ // Convert file:// uri to path if possible, or just use URI
125
+ const root = roots[0];
126
+ if (root.uri.startsWith('file://')) {
127
+ try {
128
+ client.cwd = fileURLToPath(root.uri);
129
+ }
130
+ catch {
131
+ client.cwd = root.uri;
132
+ }
133
+ }
134
+ else {
135
+ client.cwd = root.uri;
136
+ }
137
+ logger.debug(`Inferred CWD for session ${sessionId} from roots: ${client.cwd}`);
138
+ }
139
+ }
140
+ }
141
+ /**
142
+ * Retrieves all currently tracked client information.
143
+ *
144
+ * Returns an array of all active client info objects, including their metadata
145
+ * and connection state. This is useful for monitoring all connected clients
146
+ * or displaying client information in administrative interfaces.
147
+ *
148
+ * @returns Array of ClientInfo objects representing all tracked clients
149
+ *
150
+ * @example
151
+ * const allClients = clientTrackerService.getClients();
152
+ * console.log(`Currently tracking ${allClients.length} clients`);
153
+ */
154
+ getClients() {
155
+ return Array.from(this.clients.values());
156
+ }
157
+ /**
158
+ * Retrieves client information for a specific session ID.
159
+ *
160
+ * Returns the complete client info object for the given session ID, or undefined
161
+ * if no client with that session ID is currently being tracked.
162
+ *
163
+ * @param sessionId - The unique session identifier to look up
164
+ * @returns ClientInfo object if found, undefined otherwise
165
+ *
166
+ * @example
167
+ * const client = clientTrackerService.getClient('session-123');
168
+ * if (client) {
169
+ * console.log(`Client ${client.clientName} is connected`);
170
+ * }
171
+ */
172
+ getClient(sessionId) {
173
+ return this.clients.get(sessionId);
174
+ }
175
+ /**
176
+ * Cleans up stale client entries that haven't been seen recently.
177
+ *
178
+ * This private method is called periodically to remove clients that haven't
179
+ * sent any requests within the timeout period (5 minutes by default). When
180
+ * a client is removed, it publishes a 'client-disconnected' event to notify
181
+ * other services about the disconnection.
182
+ *
183
+ * This prevents memory leaks from accumulating disconnected clients and ensures
184
+ * that the client registry only contains active connections.
185
+ *
186
+ * @private
187
+ */
188
+ cleanup() {
189
+ const now = Date.now();
190
+ for (const [id, info] of this.clients.entries()) {
191
+ if (now - info.lastSeen > this.TIMEOUT_MS) {
192
+ logger.debug(`Removing stale client: ${id}. Last seen ${formatDuration(now - info.lastSeen)} ago, timeout ${formatDuration(this.TIMEOUT_MS)}`);
193
+ this.clients.delete(id);
194
+ eventBus.publish('client-disconnected', {
195
+ timestamp: Date.now(),
196
+ clientId: id,
197
+ client: info
198
+ });
199
+ }
200
+ }
201
+ }
202
+ }
203
+ export const clientTrackerService = new ClientTrackerService();
@@ -0,0 +1,478 @@
1
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
+ import type { Tool } from '../../../shared/models/tool.model.js';
3
+ import type { Resource } from '../../../shared/models/resource.model.js';
4
+ import type { ServerConfig } from '../../config/config.schema.js';
5
+ import type { ServerInstanceConfig } from '../../config/config.schema.js';
6
+ import type { ServerStatus } from './types.js';
7
+ /**
8
+ * Manages MCP (Model Context Protocol) server connections and provides a unified interface
9
+ * for tool and resource operations across multiple connected servers.
10
+ *
11
+ * This service handles the complete lifecycle of MCP server connections including:
12
+ * - Establishing connections via various transport protocols (stdio, SSE, HTTP)
13
+ * - Managing client instances and transport layers
14
+ * - Caching tools and resources for performance optimization
15
+ * - Providing both server ID-based and server name-based access patterns
16
+ * - Handling connection events and error recovery
17
+ * - Supporting bidirectional communication for tool execution
18
+ *
19
+ * The manager uses ToolCache for both server ID-level and server name-level
20
+ * operations to optimize different access patterns while ensuring data consistency.
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const manager = new McpConnectionManager();
25
+ * await manager.connect(serverConfig);
26
+ * const tools = await manager.getTools(serverId);
27
+ * const result = await manager.callTool(serverId, 'tool-name', { param: 'value' });
28
+ * ```
29
+ */
30
+ export declare class McpConnectionManager {
31
+ private clients;
32
+ private transports;
33
+ private serverStatus;
34
+ private _toolCache;
35
+ private resourceCache;
36
+ constructor();
37
+ /**
38
+ * Establishes a connection to an MCP server using the specified configuration.
39
+ *
40
+ * This method handles the complete connection process including transport creation,
41
+ * client initialization, validation, and automatic tool/resource discovery.
42
+ * It supports multiple transport protocols (stdio, SSE, streamable-http, http)
43
+ * and provides comprehensive error handling with proper status tracking.
44
+ *
45
+ * For bidirectional transports (stdio, streamable-http, http), it automatically
46
+ * fetches and caches available tools and resources upon successful connection.
47
+ * SSE transports are unidirectional and skip this step for performance reasons.
48
+ *
49
+ * The method publishes SERVER_CONNECTED and SERVER_STATUS_CHANGE events upon
50
+ * successful connection, and SERVER_STATUS_CHANGE events with error details
51
+ * on failure.
52
+ *
53
+ * @param {ServerConfig & ServerInstanceConfig} server - Server configuration containing
54
+ * connection details, transport type, and instance-specific parameters
55
+ * @returns {Promise<boolean>} True if connection succeeds, false if it fails
56
+ * @throws {Error} If server ID is missing or required configuration is invalid
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * const serverConfig = {
61
+ * id: 'my-server-1',
62
+ * type: 'stdio' as const,
63
+ * command: 'npx my-mcp-server',
64
+ * name: 'My MCP Server'
65
+ * };
66
+ * const success = await manager.connect(serverConfig);
67
+ * if (success) {
68
+ * console.log('Connected successfully');
69
+ * }
70
+ * ```
71
+ */
72
+ connect(server: ServerConfig & ServerInstanceConfig): Promise<boolean>;
73
+ /**
74
+ * Disconnects from an MCP server and cleans up all associated resources.
75
+ *
76
+ * This method performs a graceful shutdown by closing the client connection,
77
+ * closing the transport layer, and removing all cached data including tools,
78
+ * resources, and status information. It also updates the server name-level
79
+ * tool cache to maintain consistency across multiple instances of the same server.
80
+ *
81
+ * The method publishes SERVER_DISCONNECTED and SERVER_STATUS_CHANGE events
82
+ * upon completion and handles any errors during the disconnection process
83
+ * without throwing exceptions.
84
+ *
85
+ * @param {string} serverId - Unique identifier of the server instance to disconnect
86
+ * @returns {Promise<void>} Resolves when disconnection is complete
87
+ *
88
+ * @example
89
+ * ```typescript
90
+ * await manager.disconnect('my-server-1');
91
+ * console.log('Server disconnected');
92
+ * ```
93
+ */
94
+ disconnect(serverId: string): Promise<void>;
95
+ /**
96
+ * Disconnects from all currently connected MCP servers concurrently.
97
+ *
98
+ * This method iterates through all active client connections and calls
99
+ * disconnect() on each one, handling errors individually to ensure
100
+ * that failure to disconnect from one server doesn't prevent disconnection
101
+ * from others. All disconnections are performed in parallel for efficiency.
102
+ *
103
+ * @returns {Promise<void>} Resolves when all disconnection attempts complete
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * await manager.disconnectAll();
108
+ * console.log('All servers disconnected');
109
+ * ```
110
+ */
111
+ disconnectAll(): Promise<void>;
112
+ /**
113
+ * Refreshes the tool cache for a specific server by fetching the latest tool list.
114
+ *
115
+ * This method queries the connected MCP server for its current set of available tools,
116
+ * updates both the server ID-level and server name-level caches, and maintains
117
+ * accurate tool counts in the server status. It handles server name resolution
118
+ * to ensure proper caching across multiple instances of the same server.
119
+ *
120
+ * @param {string} serverId - Unique identifier of the server instance to refresh
121
+ * @returns {Promise<Tool[]>} Array of updated tools with server context
122
+ * @throws {Error} If the server is not connected or tool listing fails
123
+ *
124
+ * @example
125
+ * ```typescript
126
+ * const tools = await manager.refreshTools('my-server-1');
127
+ * console.log(`Found ${tools.length} tools`);
128
+ * ```
129
+ */
130
+ refreshTools(serverId: string): Promise<Tool[]>;
131
+ /**
132
+ * Refreshes the resource cache for a specific server by fetching available resources.
133
+ *
134
+ * This method queries the connected MCP server for its current set of available resources,
135
+ * handling servers that don't support the resources functionality gracefully by returning
136
+ * an empty array. It updates the resource cache and maintains accurate resource counts
137
+ * in the server status.
138
+ *
139
+ * The method specifically handles "Method not found" errors (MCP error code -32601)
140
+ * which indicate that the server doesn't implement the resources protocol, treating
141
+ * this as a normal case rather than an error.
142
+ *
143
+ * @param {string} serverId - Unique identifier of the server instance to refresh
144
+ * @returns {Promise<Resource[]>} Array of available resources, empty if unsupported
145
+ * @throws {Error} If the server is not connected or resource listing fails unexpectedly
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * const resources = await manager.refreshResources('my-server-1');
150
+ * console.log(`Found ${resources.length} resources`);
151
+ * ```
152
+ */
153
+ refreshResources(serverId: string): Promise<Resource[]>;
154
+ /**
155
+ * Retrieves the current connection status for a specific server instance.
156
+ *
157
+ * This method provides access to the server's operational state including connection
158
+ * status, error information, tool/resource counts, and process details.
159
+ *
160
+ * @param {string} serverId - Unique identifier of the server instance
161
+ * @returns {ServerStatus | undefined} Current status object or undefined if not found
162
+ *
163
+ * @example
164
+ * ```typescript
165
+ * const status = manager.getStatus('my-server-1');
166
+ * if (status?.connected) {
167
+ * console.log('Server is connected');
168
+ * }
169
+ * ```
170
+ */
171
+ getStatus(serverId: string): ServerStatus | undefined;
172
+ /**
173
+ * Retrieves cached tools for a specific server instance.
174
+ *
175
+ * This method returns the currently cached tool list for the specified server,
176
+ * which may be empty if tools haven't been refreshed yet or if the server
177
+ * doesn't provide any tools. The method includes logging for debugging purposes.
178
+ *
179
+ * @param {string} serverId - Unique identifier of the server instance
180
+ * @returns {Tool[]} Array of cached tools, empty if none available
181
+ *
182
+ * @example
183
+ * ```typescript
184
+ * const tools = manager.getTools('my-server-1');
185
+ * console.log(`Server has ${tools.length} tools`);
186
+ * ```
187
+ */
188
+ getTools(serverId: string): Tool[];
189
+ /**
190
+ * Retrieves cached resources for a specific server instance.
191
+ *
192
+ * This method returns the currently cached resource list for the specified server,
193
+ * which may be empty if resources haven't been refreshed yet, if the server doesn't
194
+ * support resources, or if the server doesn't provide any resources. The method
195
+ * includes logging for debugging purposes.
196
+ *
197
+ * @param {string} serverId - Unique identifier of the server instance
198
+ * @returns {Resource[]} Array of cached resources, empty if none available
199
+ *
200
+ * @example
201
+ * ```typescript
202
+ * const resources = manager.getResources('my-server-1');
203
+ * console.log(`Server has ${resources.length} resources`);
204
+ * ```
205
+ */
206
+ getResources(serverId: string): Resource[];
207
+ /**
208
+ * Reads content from a specific resource URI on a connected MCP server.
209
+ *
210
+ * This method delegates the resource reading operation to the underlying MCP client,
211
+ * providing direct access to server-provided resources through their URIs.
212
+ *
213
+ * @param {string} serverId - Unique identifier of the connected server instance
214
+ * @param {string} uri - Resource URI to read (e.g., "file:///path/to/file")
215
+ * @returns {Promise<unknown>} Resource content as returned by the server
216
+ * @throws {Error} If the server is not connected or resource reading fails
217
+ *
218
+ * @example
219
+ * ```typescript
220
+ * const content = await manager.readResource('my-server-1', 'hub://config/settings.json');
221
+ * console.log('Resource content:', content);
222
+ * ```
223
+ */
224
+ readResource(serverId: string, uri: string): Promise<unknown>;
225
+ /**
226
+ * Retrieves all cached tools from all connected server instances.
227
+ *
228
+ * This method aggregates tools from all server ID-level caches into a single array,
229
+ * providing a unified view of all available tools across all connected servers.
230
+ * The returned tools include server context information for proper identification.
231
+ *
232
+ * @returns {Tool[]} Array of all cached tools from all connected servers
233
+ *
234
+ * @example
235
+ * ```typescript
236
+ * const allTools = manager.getAllTools();
237
+ * console.log(`Total tools available: ${allTools.length}`);
238
+ * ```
239
+ */
240
+ getAllTools(): Tool[];
241
+ /**
242
+ * Retrieves all tool cache entries as server ID to tools mapping.
243
+ *
244
+ * This method returns the raw tool cache structure as an array of [serverId, tools] tuples,
245
+ * providing direct access to the internal caching mechanism for debugging or advanced use cases.
246
+ *
247
+ * @returns {[string, Tool[]][]} Array of [serverId, tools] tuples representing the cache
248
+ *
249
+ * @example
250
+ * ```typescript
251
+ * const cacheEntries = manager.getToolCacheEntries();
252
+ * cacheEntries.forEach(([serverId, tools]) => {
253
+ * console.log(`Server ${serverId} has ${tools.length} tools`);
254
+ * });
255
+ * ```
256
+ */
257
+ getToolCacheEntries(): [string, Tool[]][];
258
+ /**
259
+ * Resolves a server name to its corresponding server instance ID.
260
+ *
261
+ * This method provides reverse lookup from server names (as defined in configuration)
262
+ * to the unique server instance IDs used internally for connection management.
263
+ * It's useful when you have a server name but need the instance ID for operations.
264
+ *
265
+ * @param {string} name - Server name as defined in the configuration
266
+ * @returns {string | undefined} Corresponding server instance ID or undefined if not found
267
+ *
268
+ * @example
269
+ * ```typescript
270
+ * const serverId = manager.getServerIdByName('my-mcp-server');
271
+ * if (serverId) {
272
+ * const status = manager.getStatus(serverId);
273
+ * }
274
+ * ```
275
+ */
276
+ getServerIdByName(name: string): string | undefined;
277
+ /**
278
+ * Retrieves the MCP client instance for a server by its name.
279
+ *
280
+ * This method resolves a server name to its instance ID and returns the corresponding
281
+ * MCP client instance, providing direct access to the underlying SDK client for
282
+ * advanced operations that aren't covered by the manager's high-level methods.
283
+ *
284
+ * @param {string} name - Server name as defined in the configuration
285
+ * @returns {Client | undefined} MCP client instance or undefined if not connected
286
+ *
287
+ * @example
288
+ * ```typescript
289
+ * const client = manager.getClientByName('my-mcp-server');
290
+ * if (client) {
291
+ * // Use direct client methods for advanced operations
292
+ * const result = await client.listPrompts();
293
+ * }
294
+ * ```
295
+ */
296
+ getClientByName(name: string): Client | undefined;
297
+ /**
298
+ * Calls a tool on a connected server using the server name instead of instance ID.
299
+ *
300
+ * This method provides a convenient way to execute tools when you have a server name
301
+ * rather than an instance ID. It resolves the server name to its instance ID and
302
+ * delegates to the callTool method for actual execution.
303
+ *
304
+ * The method is wrapped in OpenTelemetry tracing for observability and includes
305
+ * comprehensive error handling with proper logging.
306
+ *
307
+ * @param {string} name - Server name as defined in the configuration
308
+ * @param {string} toolName - Name of the tool to execute
309
+ * @param {Record<string, unknown>} args - Arguments to pass to the tool
310
+ * @returns {Promise<unknown>} Tool execution result as returned by the server
311
+ * @throws {Error} If server is not connected, not found, or tool execution fails
312
+ *
313
+ * @example
314
+ * ```typescript
315
+ * const result = await manager.callToolByName('my-mcp-server', 'list-files', {
316
+ * directory: '/home/user'
317
+ * });
318
+ * console.log('Tool result:', result);
319
+ * ```
320
+ */
321
+ callToolByName(name: string, toolName: string, args: Record<string, unknown>): Promise<unknown>;
322
+ /**
323
+ * Retrieves the connection status for a server using its name instead of instance ID.
324
+ *
325
+ * This method resolves a server name to its instance ID and returns the corresponding
326
+ * server status, providing a convenient way to check server health when working with
327
+ * server names rather than instance IDs.
328
+ *
329
+ * @param {string} name - Server name as defined in the configuration
330
+ * @returns {ServerStatus | undefined} Current status object or undefined if not found/connected
331
+ *
332
+ * @example
333
+ * ```typescript
334
+ * const status = manager.getStatusByName('my-mcp-server');
335
+ * if (status?.connected) {
336
+ * console.log('Server is online');
337
+ * }
338
+ * ```
339
+ */
340
+ getStatusByName(name: string): ServerStatus | undefined;
341
+ /**
342
+ * Retrieves cached tools for a server using its name instead of instance ID.
343
+ *
344
+ * This method resolves a server name to its instance ID and returns the corresponding
345
+ * cached tool list, providing a convenient way to access tools when working with
346
+ * server names rather than instance IDs.
347
+ *
348
+ * @param {string} name - Server name as defined in the configuration
349
+ * @returns {Tool[]} Array of cached tools, empty if none available or not connected
350
+ *
351
+ * @example
352
+ * ```typescript
353
+ * const tools = manager.getToolsByName('my-mcp-server');
354
+ * console.log(`Server has ${tools.length} tools`);
355
+ * ```
356
+ */
357
+ getToolsByName(name: string): Tool[];
358
+ /**
359
+ * Retrieves cached resources for a server using its name instead of instance ID.
360
+ *
361
+ * This method resolves a server name to its instance ID and returns the corresponding
362
+ * cached resource list, providing a convenient way to access resources when working with
363
+ * server names rather than instance IDs.
364
+ *
365
+ * @param {string} name - Server name as defined in the configuration
366
+ * @returns {Resource[]} Array of cached resources, empty if none available or not connected
367
+ *
368
+ * @example
369
+ * ```typescript
370
+ * const resources = manager.getResourcesByName('my-mcp-server');
371
+ * console.log(`Server has ${resources.length} resources`);
372
+ * ```
373
+ */
374
+ getResourcesByName(name: string): Resource[];
375
+ /**
376
+ * Retrieves a specific tool by name from a server's cached tools.
377
+ *
378
+ * This method searches the server name-level tool cache for a tool with the specified name,
379
+ * providing efficient lookup without needing to iterate through all tools manually.
380
+ *
381
+ * @param {string} serverName - Server name as defined in the configuration
382
+ * @param {string} toolName - Exact name of the tool to find
383
+ * @returns {Tool | undefined} Tool object if found, undefined otherwise
384
+ *
385
+ * @example
386
+ * ```typescript
387
+ * const tool = manager.getTool('my-mcp-server', 'list-files');
388
+ * if (tool) {
389
+ * console.log('Tool description:', tool.description);
390
+ * }
391
+ * ```
392
+ */
393
+ getTool(serverName: string, toolName: string): Tool | undefined;
394
+ /**
395
+ * Retrieves all cached resources grouped by server name.
396
+ *
397
+ * This method aggregates resources from all server instances and groups them by their
398
+ * corresponding server names, providing a structured view of all available resources
399
+ * across the system organized by server origin.
400
+ *
401
+ * @returns {Record<string, Resource[]>} Object mapping server names to resource arrays
402
+ *
403
+ * @example
404
+ * ```typescript
405
+ * const allResources = manager.getAllResources();
406
+ * Object.entries(allResources).forEach(([serverName, resources]) => {
407
+ * console.log(`Server ${serverName} has ${resources.length} resources`);
408
+ * });
409
+ * ```
410
+ */
411
+ getAllResources(): Record<string, Resource[]>;
412
+ /**
413
+ * Executes a tool on a connected MCP server using its instance ID.
414
+ *
415
+ * This is the primary method for executing tools on connected servers. It delegates
416
+ * the actual execution to the underlying MCP client and includes comprehensive
417
+ * error handling with proper logging. The method is wrapped in OpenTelemetry tracing
418
+ * for observability and monitoring.
419
+ *
420
+ * @param {string} serverId - Unique identifier of the connected server instance
421
+ * @param {string} toolName - Name of the tool to execute
422
+ * @param {Record<string, unknown>} args - Arguments to pass to the tool
423
+ * @returns {Promise<unknown>} Tool execution result as returned by the server
424
+ * @throws {Error} If server is not connected or tool execution fails
425
+ *
426
+ * @example
427
+ * ```typescript
428
+ * const result = await manager.callTool('my-server-1', 'list-files', {
429
+ * directory: '/home/user'
430
+ * });
431
+ * console.log('Tool result:', result);
432
+ * ```
433
+ */
434
+ callTool(serverId: string, toolName: string, args: Record<string, unknown>): Promise<unknown>;
435
+ /**
436
+ * Retrieves cached tools for a specific server name from the server name-level cache.
437
+ *
438
+ * This method provides access to the server name-level tool cache, which aggregates
439
+ * tools from all instances of the same server name. It's optimized for scenarios
440
+ * where you need to work with server names rather than individual instance IDs.
441
+ *
442
+ * @param {string} serverName - Server name as defined in the configuration
443
+ * @returns {Tool[]} Array of cached tools for the specified server name
444
+ *
445
+ * @example
446
+ * ```typescript
447
+ * const tools = manager.getToolsByServerName('my-mcp-server');
448
+ * console.log(`Server has ${tools.length} tools across all instances`);
449
+ * ```
450
+ */
451
+ getToolsByServerName(serverName: string): Tool[];
452
+ /**
453
+ * Retrieves all cached tools from all servers using the server name-level cache.
454
+ *
455
+ * This method aggregates tools from the server name-level cache, providing a unified
456
+ * view of all available tools optimized for search operations and scenarios where
457
+ * server name context is more relevant than individual instance IDs.
458
+ *
459
+ * @returns {Tool[]} Array of all cached tools from all servers
460
+ *
461
+ * @example
462
+ * ```typescript
463
+ * const allTools = manager.getAllToolsByServerName();
464
+ * console.log(`Total tools available: ${allTools.length}`);
465
+ * ```
466
+ */
467
+ getAllToolsByServerName(): Tool[];
468
+ /**
469
+ * Backward compatibility: direct access to the underlying toolCache Map.
470
+ * This is maintained for backward compatibility with code that accesses
471
+ * mcpConnectionManager.toolCache directly.
472
+ *
473
+ * @deprecated Use the dedicated methods like getTools(), setTools(), etc. instead
474
+ */
475
+ get toolCache(): Map<string, Tool[]>;
476
+ }
477
+ export declare const mcpConnectionManager: McpConnectionManager;
478
+ //# sourceMappingURL=connection-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../../../../src/services/connection/connection-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAUnE,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAKjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,aAAa,CAAsC;;IAoB3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACU,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAyPnF;;;;;;;;;;;;;;;;;;;;OAoBG;IACU,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwDxD;;;;;;;;;;;;;;;OAeG;IACU,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB3C;;;;;;;;;;;;;;;;;OAiBG;IACU,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAwC5D;;;;;;;;;;;;;;;;;;;;;OAqBG;IACU,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAoFpE;;;;;;;;;;;;;;;;OAgBG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI5D;;;;;;;;;;;;;;;OAeG;IACI,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE;IAIzC;;;;;;;;;;;;;;;;OAgBG;IACI,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE;IAUjD;;;;;;;;;;;;;;;;OAgBG;IACU,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1E;;;;;;;;;;;;;;OAcG;IACI,WAAW,IAAI,IAAI,EAAE;IAI5B;;;;;;;;;;;;;;;OAeG;IACI,mBAAmB,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;IAIhD;;;;;;;;;;;;;;;;;OAiBG;IACI,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI1D;;;;;;;;;;;;;;;;;;OAkBG;IACI,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAQxD;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACU,cAAc,CACzB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,OAAO,CAAC;IASnB;;;;;;;;;;;;;;;;;OAiBG;IACI,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAQ9D;;;;;;;;;;;;;;;OAeG;IACI,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE;IAQ3C;;;;;;;;;;;;;;;OAeG;IACI,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE;IAQnD;;;;;;;;;;;;;;;;;OAiBG;IACI,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAItE;;;;;;;;;;;;;;;;OAgBG;IACI,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;IAiBpD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACU,QAAQ,CACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,OAAO,CAAC;IAsBnB;;;;;;;;;;;;;;;OAeG;IACI,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE;IAIvD;;;;;;;;;;;;;;OAcG;IACI,uBAAuB,IAAI,IAAI,EAAE;IAIxC;;;;;;OAMG;IACH,IAAI,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAEnC;CACF;AAED,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}