@loop_ouroboros/mcp-hub-lite 1.2.9 → 1.3.1

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 (203) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/README.md +405 -331
  3. package/dist/client/assets/{HomeView-CGezWc0j.js → HomeView-DplI3V-h.js} +1 -1
  4. package/dist/client/assets/{ResourceDetailView-CDmWGdAK.css → ResourceDetailView-BkTSg91z.css} +1 -1
  5. package/dist/client/assets/ResourceDetailView-CeHPn99Y.js +1 -0
  6. package/dist/client/assets/ResourcesView-C1ObRhYS.js +1 -0
  7. package/dist/client/assets/ResourcesView-zgV8Nq7w.css +1 -0
  8. package/dist/client/assets/{ServerDashboard-g5p4VC_-.js → ServerDashboard-D7wG4Gvt.js} +1 -1
  9. package/dist/client/assets/{ServerDetail-DCQH8HIb.css → ServerDetail-CPNAFBPM.css} +1 -1
  10. package/dist/client/assets/ServerDetail-G23phOcJ.js +2 -0
  11. package/dist/client/assets/{ServerListView-DZsy2gaQ.js → ServerListView-BFiZLtPO.js} +1 -1
  12. package/dist/client/assets/{ServerStatusTags.vue_vue_type_script_setup_true_lang-DmGg4uuV.js → ServerStatusTags.vue_vue_type_script_setup_true_lang-Deb_SbFw.js} +1 -1
  13. package/dist/client/assets/SettingsView-QBFLZ6fP.js +1 -0
  14. package/dist/client/assets/ToolCallDialog-BQ9UJZ_-.css +1 -0
  15. package/dist/client/assets/ToolCallDialog-DYS-ADCL.js +1 -0
  16. package/dist/client/assets/ToolsView-DYwgtm7W.js +1 -0
  17. package/dist/client/assets/ToolsView-cO61nMNr.css +1 -0
  18. package/dist/client/assets/_baseClone-DQno9YO3.js +1 -0
  19. package/dist/client/assets/{el-form-item-CTsVV8sm.js → el-form-item-DF0zzQdH.js} +2 -2
  20. package/dist/client/assets/el-input-C_p2Qw42.js +1 -0
  21. package/dist/client/assets/el-loading-BaenpNzU.js +1 -0
  22. package/dist/client/assets/el-overlay-MbIUXSQ7.js +1 -0
  23. package/dist/client/assets/el-radio-group-COnCjCcz.js +1 -0
  24. package/dist/client/assets/el-skeleton-item-qj0eQP4s.js +1 -0
  25. package/dist/client/assets/el-switch-BZbXqB3_.js +1 -0
  26. package/dist/client/assets/el-tab-pane-w7RltRLd.js +1 -0
  27. package/dist/client/assets/el-table-column-OD8zhFcD.js +1 -0
  28. package/dist/client/assets/index-DwhULJXZ.js +2 -0
  29. package/dist/client/assets/{index-BNmwPGMT.css → index-UtsV0Cvh.css} +1 -1
  30. package/dist/client/assets/{omit-Btci9mp3.js → omit-BAJQlviJ.js} +1 -1
  31. package/dist/client/assets/raf-B1Ry7ruA.js +1 -0
  32. package/dist/client/assets/{vue-vendor-Dwcr0jep.js → vue-vendor-ClSvefnQ.js} +1 -1
  33. package/dist/client/index.html +3 -3
  34. package/dist/server/shared/models/constants.d.ts +8 -0
  35. package/dist/server/shared/models/constants.d.ts.map +1 -0
  36. package/dist/server/shared/models/constants.js +6 -0
  37. package/dist/server/shared/models/index.d.ts +1 -0
  38. package/dist/server/shared/models/index.d.ts.map +1 -1
  39. package/dist/server/shared/models/index.js +1 -0
  40. package/dist/server/shared/models/server.model.d.ts +14 -0
  41. package/dist/server/shared/models/server.model.d.ts.map +1 -1
  42. package/dist/server/shared/models/server.model.js +27 -4
  43. package/dist/server/shared/types/index.d.ts +0 -1
  44. package/dist/server/shared/types/index.d.ts.map +1 -1
  45. package/dist/server/shared/types/index.js +0 -1
  46. package/dist/server/src/api/mcp/debug-response-wrapper.js +1 -1
  47. package/dist/server/src/api/mcp/gateway.d.ts +10 -6
  48. package/dist/server/src/api/mcp/gateway.d.ts.map +1 -1
  49. package/dist/server/src/api/mcp/gateway.js +235 -87
  50. package/dist/server/src/api/web/hub-tools.d.ts.map +1 -1
  51. package/dist/server/src/api/web/hub-tools.js +11 -0
  52. package/dist/server/src/api/web/mcp-status.js +2 -2
  53. package/dist/server/src/api/web/search.d.ts +2 -16
  54. package/dist/server/src/api/web/search.d.ts.map +1 -1
  55. package/dist/server/src/api/web/search.js +22 -30
  56. package/dist/server/src/api/web/servers.js +1 -1
  57. package/dist/server/src/api/web/sessions.d.ts +1 -27
  58. package/dist/server/src/api/web/sessions.d.ts.map +1 -1
  59. package/dist/server/src/api/web/sessions.js +8 -97
  60. package/dist/server/src/api/ws/events.js +1 -1
  61. package/dist/server/src/api/ws/ws-handler.js +1 -1
  62. package/dist/server/src/app.d.ts.map +1 -1
  63. package/dist/server/src/app.js +6 -1
  64. package/dist/server/src/cli/commands/status.js +39 -1
  65. package/dist/server/src/cli/commands/tool-use.d.ts +10 -3
  66. package/dist/server/src/cli/commands/tool-use.d.ts.map +1 -1
  67. package/dist/server/src/cli/commands/tool-use.js +69 -30
  68. package/dist/server/src/cli/commands/use-guide.d.ts +0 -8
  69. package/dist/server/src/cli/commands/use-guide.d.ts.map +1 -1
  70. package/dist/server/src/cli/commands/use-guide.js +28 -170
  71. package/dist/server/src/cli/server.d.ts +10 -0
  72. package/dist/server/src/cli/server.d.ts.map +1 -1
  73. package/dist/server/src/cli/server.js +31 -1
  74. package/dist/server/src/config/config-change-logger.js +1 -1
  75. package/dist/server/src/config/config-loader.js +1 -1
  76. package/dist/server/src/config/config-manager.js +1 -1
  77. package/dist/server/src/config/config-migrator.d.ts +4 -48
  78. package/dist/server/src/config/config-migrator.d.ts.map +1 -1
  79. package/dist/server/src/config/config-migrator.js +2 -103
  80. package/dist/server/src/config/config-saver.js +1 -1
  81. package/dist/server/src/config/server-config-manager.js +1 -1
  82. package/dist/server/src/models/system-tools.constants.d.ts +2 -1
  83. package/dist/server/src/models/system-tools.constants.d.ts.map +1 -1
  84. package/dist/server/src/models/system-tools.constants.js +2 -1
  85. package/dist/server/src/pid/manager.js +1 -1
  86. package/dist/server/src/server/dev-server.js +4 -2
  87. package/dist/server/src/server/runner.d.ts.map +1 -1
  88. package/dist/server/src/server/runner.js +4 -2
  89. package/dist/server/src/server/startup.js +2 -2
  90. package/dist/server/src/services/connection/connection-manager.d.ts +2 -0
  91. package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -1
  92. package/dist/server/src/services/connection/connection-manager.js +27 -25
  93. package/dist/server/src/services/connection/tool-cache.d.ts.map +1 -1
  94. package/dist/server/src/services/connection/tool-cache.js +10 -8
  95. package/dist/server/src/services/event-bus.service.d.ts +3 -1
  96. package/dist/server/src/services/event-bus.service.d.ts.map +1 -1
  97. package/dist/server/src/services/event-bus.service.js +1 -0
  98. package/dist/server/src/services/gateway/gateway.service.d.ts +14 -0
  99. package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -1
  100. package/dist/server/src/services/gateway/gateway.service.js +101 -7
  101. package/dist/server/src/services/gateway/global-transport.d.ts +20 -10
  102. package/dist/server/src/services/gateway/global-transport.d.ts.map +1 -1
  103. package/dist/server/src/services/gateway/global-transport.js +50 -34
  104. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts +1 -2
  105. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts.map +1 -1
  106. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.js +24 -13
  107. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -1
  108. package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +22 -6
  109. package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts.map +1 -1
  110. package/dist/server/src/services/gateway/request-handlers/resources-handler.js +12 -4
  111. package/dist/server/src/services/gateway/session-manager.d.ts +101 -0
  112. package/dist/server/src/services/gateway/session-manager.d.ts.map +1 -0
  113. package/dist/server/src/services/gateway/session-manager.js +256 -0
  114. package/dist/server/src/services/gateway/tool-list-generator.d.ts +14 -19
  115. package/dist/server/src/services/gateway/tool-list-generator.d.ts.map +1 -1
  116. package/dist/server/src/services/gateway/tool-list-generator.js +221 -80
  117. package/dist/server/src/services/hub-manager.service.d.ts.map +1 -1
  118. package/dist/server/src/services/hub-manager.service.js +15 -2
  119. package/dist/server/src/services/hub-tools/instance-selector.js +1 -1
  120. package/dist/server/src/services/hub-tools/resource-generator.d.ts +1 -22
  121. package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -1
  122. package/dist/server/src/services/hub-tools/resource-generator.js +24 -22
  123. package/dist/server/src/services/hub-tools/server-selector.js +1 -1
  124. package/dist/server/src/services/hub-tools.service.d.ts.map +1 -1
  125. package/dist/server/src/services/hub-tools.service.js +18 -13
  126. package/dist/server/src/services/log-storage.service.js +1 -1
  127. package/dist/server/src/services/system-tool-handler.js +1 -1
  128. package/dist/server/src/utils/error-handler.js +1 -1
  129. package/dist/server/src/utils/index.d.ts +1 -1
  130. package/dist/server/src/utils/index.d.ts.map +1 -1
  131. package/dist/server/src/utils/index.js +1 -1
  132. package/dist/server/src/utils/json-utils.d.ts +9 -0
  133. package/dist/server/src/utils/json-utils.d.ts.map +1 -1
  134. package/dist/server/src/utils/json-utils.js +23 -4
  135. package/dist/server/src/utils/log-rotator.d.ts +0 -15
  136. package/dist/server/src/utils/log-rotator.d.ts.map +1 -1
  137. package/dist/server/src/utils/log-rotator.js +0 -18
  138. package/dist/server/src/utils/logger/index.d.ts +1 -1
  139. package/dist/server/src/utils/logger/index.d.ts.map +1 -1
  140. package/dist/server/src/utils/logger/index.js +1 -1
  141. package/dist/server/src/utils/logger/log-context.d.ts +1 -0
  142. package/dist/server/src/utils/logger/log-context.d.ts.map +1 -1
  143. package/dist/server/src/utils/logger/log-formatter.d.ts.map +1 -1
  144. package/dist/server/src/utils/logger/log-formatter.js +25 -11
  145. package/dist/server/src/utils/logger/log-output.d.ts +17 -1
  146. package/dist/server/src/utils/logger/log-output.d.ts.map +1 -1
  147. package/dist/server/src/utils/logger/log-output.js +46 -40
  148. package/dist/server/src/utils/logger/logger.d.ts.map +1 -1
  149. package/dist/server/src/utils/logger/logger.js +18 -2
  150. package/dist/server/src/utils/port-checker.js +1 -1
  151. package/dist/server/src/utils/request-context.d.ts +8 -70
  152. package/dist/server/src/utils/request-context.d.ts.map +1 -1
  153. package/dist/server/src/utils/request-context.js +11 -70
  154. package/dist/server/src/utils/transports/stdio-transport.js +1 -1
  155. package/dist/server/src/utils/transports/streamable-http-transport.js +1 -1
  156. package/dist/server/src/utils/transports/transport-factory.d.ts.map +1 -1
  157. package/dist/server/src/utils/transports/transport-factory.js +26 -3
  158. package/dist/server/tests/contract/mcp-protocol/initialize.test.js +1 -1
  159. package/dist/server/tests/contract/mcp-protocol/tools-call.test.js +1 -1
  160. package/dist/server/tests/contract/mcp-protocol/tools-list.test.js +1 -1
  161. package/dist/server/tests/integration/gateway/fault-tolerance.test.js +1 -1
  162. package/dist/server/tests/integration/gateway/mcp-connection.test.js +1 -1
  163. package/dist/server/tests/types/logger-test-helpers.d.ts +1 -1
  164. package/dist/server/tests/types/logger-test-helpers.d.ts.map +1 -1
  165. package/dist/server/tests/unit/config/config-migrator.test.js +45 -105
  166. package/dist/server/tests/unit/config/config-saver.test.js +1 -1
  167. package/dist/server/tests/unit/config/config.schema.test.js +2 -1
  168. package/dist/server/tests/unit/server/runner.test.js +19 -13
  169. package/dist/server/tests/unit/services/gateway-logging.test.js +1 -1
  170. package/dist/server/tests/unit/services/gateway-session-mode.test.d.ts +2 -0
  171. package/dist/server/tests/unit/services/gateway-session-mode.test.d.ts.map +1 -0
  172. package/dist/server/tests/unit/services/gateway-session-mode.test.js +174 -0
  173. package/dist/server/tests/unit/services/hub-manager-service.test.js +4 -5
  174. package/dist/server/tests/unit/services/hub-tools.service.test.js +82 -6
  175. package/dist/server/tests/unit/utils/config.test.js +14 -7
  176. package/dist/server/tests/unit/utils/log-output.test.d.ts +2 -0
  177. package/dist/server/tests/unit/utils/log-output.test.d.ts.map +1 -0
  178. package/dist/server/tests/unit/utils/log-output.test.js +198 -0
  179. package/dist/server/tests/unit/utils/log-rotator.test.js +1 -15
  180. package/dist/server/tests/unit/utils/logger.test.js +1 -1
  181. package/dist/server/vitest.config.d.ts.map +1 -1
  182. package/dist/server/vitest.config.js +0 -2
  183. package/package.json +1 -3
  184. package/dist/client/assets/ResourceDetailView-Bi5UsbFq.js +0 -1
  185. package/dist/client/assets/ResourcesView-B9anSm85.js +0 -1
  186. package/dist/client/assets/ResourcesView-Cc8RHtia.css +0 -1
  187. package/dist/client/assets/ServerDetail-DMoFqWCp.js +0 -2
  188. package/dist/client/assets/SettingsView-DQSWb9xM.js +0 -1
  189. package/dist/client/assets/ToolCallDialog-BEyRp_J3.js +0 -1
  190. package/dist/client/assets/ToolCallDialog-BhdPX-Kf.css +0 -1
  191. package/dist/client/assets/ToolsView-BU7PKJwt.js +0 -1
  192. package/dist/client/assets/ToolsView-BkrQLjH9.css +0 -1
  193. package/dist/client/assets/_baseClone-DsVtZfPm.js +0 -1
  194. package/dist/client/assets/el-input-Bh1VGJTU.js +0 -1
  195. package/dist/client/assets/el-loading-huOeK9cW.js +0 -1
  196. package/dist/client/assets/el-overlay-CR_KVhLU.js +0 -1
  197. package/dist/client/assets/el-radio-group-BSbtAW4k.js +0 -1
  198. package/dist/client/assets/el-skeleton-item-BSxOLPFM.js +0 -1
  199. package/dist/client/assets/el-switch-BaQUQWTL.js +0 -1
  200. package/dist/client/assets/el-tab-pane-9JxLgdS7.js +0 -1
  201. package/dist/client/assets/el-table-column-Du1l9Ww3.js +0 -1
  202. package/dist/client/assets/index-CsZoFRv1.js +0 -2
  203. package/dist/client/assets/raf-tUu4BwZS.js +0 -1
@@ -1,175 +1,33 @@
1
1
  import { Command } from 'commander';
2
- /**
3
- * CLI use guide content
4
- */
5
- const USE_GUIDE_CONTENT = `# MCP Hub Lite CLI Use Guide
6
-
7
- ## Overview
8
-
9
- MCP Hub Lite CLI provides command-line interface for managing MCP servers. This guide covers CLI-specific usage only.
10
-
11
- ## Commands
12
-
13
- ### start
14
-
15
- Start the MCP Hub Lite server.
16
-
17
- \`\`\`bash
18
- # Start in daemon mode (default)
19
- mcp-hub-lite start
20
-
21
- # Start in foreground mode
22
- mcp-hub-lite start --foreground
23
-
24
- # Start with custom port
25
- mcp-hub-lite start --port 8080
26
- \`\`\`
27
-
28
- ### stop
29
-
30
- Stop the running MCP Hub Lite server.
31
-
32
- \`\`\`bash
33
- mcp-hub-lite stop
34
- \`\`\`
35
-
36
- ### status
37
-
38
- Display server status and connected MCP servers.
39
-
40
- \`\`\`bash
41
- mcp-hub-lite status
42
- \`\`\`
43
-
44
- ### ui
45
-
46
- Open the web UI in default browser.
47
-
48
- \`\`\`bash
49
- mcp-hub-lite ui
50
- \`\`\`
51
-
52
- ### list
53
-
54
- List all configured MCP servers.
55
-
56
- \`\`\`bash
57
- mcp-hub-lite list
58
- \`\`\`
59
-
60
- ### restart
61
-
62
- Restart the MCP Hub Lite server.
63
-
64
- \`\`\`bash
65
- mcp-hub-lite restart
66
- \`\`\`
67
-
68
- ### install
69
-
70
- Add a new MCP server to MCP Hub Lite.
71
-
72
- **Parametric Mode:**
73
-
74
- \`\`\`bash
75
- # stdio server
76
- mcp-hub-lite install github-mcp "npx github-mcp" --env API_KEY=xxx
77
-
78
- # HTTP server
79
- mcp-hub-lite install api-server https://api.example.com/mcp -t streamable-http -H "Authorization: Bearer xxx"
80
- \`\`\`
81
-
82
- **JSON Mode:**
83
-
84
- \`\`\`bash
85
- # stdio server
86
- mcp-hub-lite install --json '{"name":"github-mcp","type":"stdio","command":"npx github-mcp","env":{"API_KEY":"xxx"}}'
87
-
88
- # HTTP server
89
- mcp-hub-lite install --json '{"name":"api-server","type":"streamable-http","url":"https://api.example.com/mcp","headers":{"Authorization":"Bearer xxx"}}'
90
- \`\`\`
91
-
92
- **Options:**
93
-
94
- | Option | Description |
95
- | -------------------------- | ------------------------------------------------------------ |
96
- | \`-t, --transport <type>\` | Transport type: stdio, sse, streamable-http (default: stdio) |
97
- | \`-e, --env <env...>\` | Environment variables (KEY=VALUE) |
98
- | \`-H, --header <header...>\` | HTTP headers (Header-Key: Value) |
99
- | \`--timeout <seconds>\` | Timeout in seconds (default: 60) |
100
- | \`--strategy <strategy>\` | Instance selection: random, round-robin, tag-match-unique |
101
- | \`-a, --auto-start\` | Auto-start server (default: true) |
102
- | \`--no-auto-start\` | Disable auto-start |
103
- | \`-d, --description <desc>\` | Server description |
104
-
105
- **JSON Config Fields:**
106
-
107
- | Field | Required | Description |
108
- | --------------------------- | ----------- | ------------------------------- |
109
- | \`name\` | Yes | Server name |
110
- | \`type\` | No | Transport type (default: stdio) |
111
- | \`command\` | Yes (stdio) | Command to execute |
112
- | \`url\` | Yes (HTTP) | Server URL |
113
- | \`args\` | No | Command arguments |
114
- | \`env\` | No | Environment variables object |
115
- | \`headers\` | No | HTTP headers object |
116
- | \`timeout\` | No | Timeout in seconds |
117
- | \`enabled\` | No | Auto-start enabled |
118
- | \`description\` | No | Server description |
119
- | \`instanceSelectionStrategy\` | No | Instance selection strategy |
120
-
121
- ### tool-use
122
-
123
- Manage MCP server tools via API.
124
-
125
- \`\`\`bash
126
- # List all connected servers
127
- mcp-hub-lite tool-use list-servers
128
-
129
- # List system tools
130
- mcp-hub-lite tool-use list-tools
131
-
132
- # List tools from specific server
133
- mcp-hub-lite tool-use list-tools --server baidu-search
134
-
135
- # Get tool schema
136
- mcp-hub-lite tool-use get-tool --tool list_tools
137
-
138
- # Call a tool
139
- mcp-hub-lite tool-use call-tool --tool search --server baidu-search --args '{"query":"天气"}'
140
- \`\`\`
141
-
142
- **Options:**
143
-
144
- | Option | Description |
145
- | ----------------- | ------------------------------------------- |
146
- | \`--server <name>\` | Server name (default: mcp-hub-lite) |
147
- | \`--tool <name>\` | Tool name (required for get-tool/call-tool) |
148
- | \`--args <json>\` | Tool arguments JSON |
149
- | \`--tags <json>\` | Instance selection tags |
150
-
151
- **JSON Merge Form:**
152
-
153
- \`\`\`bash
154
- # All parameters in one JSON
155
- mcp-hub-lite tool-use call-tool --args '{"server":"baidu-search","tool":"search","query":"天气"}'
156
- \`\`\`
157
-
158
- ---
159
-
160
- _Last updated: 2026-04-20_
161
- `;
162
- /**
163
- * CLI command for displaying the use guide in Markdown format.
164
- *
165
- * This command outputs the CLI usage guide, similar to how MCP Hub Lite
166
- * provides a use-guide resource for MCP protocol usage.
167
- *
168
- * @returns {Command} The configured use-guide command instance for registration with Commander.js
169
- */
2
+ import { fileURLToPath } from 'url';
3
+ import { dirname, join } from 'path';
4
+ import fs from 'fs';
5
+ import { getConfigManager } from '../../config/config-manager.js';
6
+ const __filename = fileURLToPath(import.meta.url);
7
+ const __dirname = dirname(__filename);
8
+ const USE_GUIDE_PATH_ZH = join(__dirname, '../../services/hub-tools/use-guide-zh.md');
9
+ const USE_GUIDE_PATH_EN = join(__dirname, '../../services/hub-tools/use-guide-en.md');
10
+ function loadUseGuideContent() {
11
+ let language = 'en';
12
+ try {
13
+ const configManager = getConfigManager();
14
+ const config = configManager.getConfig();
15
+ language = config.system.language;
16
+ }
17
+ catch {
18
+ // Config not available, use default English
19
+ }
20
+ const path = language === 'zh' ? USE_GUIDE_PATH_ZH : USE_GUIDE_PATH_EN;
21
+ try {
22
+ return fs.readFileSync(path, 'utf-8');
23
+ }
24
+ catch {
25
+ return '# MCP Hub Lite Use Guide\n\nThe use guide is currently unavailable.\n';
26
+ }
27
+ }
170
28
  export const useGuideCommand = new Command('use-guide')
171
- .description('Output CLI usage guide in Markdown format')
29
+ .description('Output usage guide in Markdown format')
172
30
  .action(() => {
173
- process.stdout.write(USE_GUIDE_CONTENT);
31
+ process.stdout.write(loadUseGuideContent());
174
32
  process.exit(0);
175
33
  });
@@ -17,6 +17,15 @@ interface McpServerStatus {
17
17
  resourcesCount: number;
18
18
  error?: string;
19
19
  }
20
+ export interface SessionInfo {
21
+ sessionId: string;
22
+ clientName?: string;
23
+ clientVersion?: string;
24
+ protocolVersion?: string;
25
+ createdAt: string;
26
+ lastAccessedAt: string;
27
+ activeSseCount: number;
28
+ }
20
29
  export interface EnhancedServerStatus {
21
30
  running: boolean;
22
31
  pid?: string;
@@ -25,6 +34,7 @@ export interface EnhancedServerStatus {
25
34
  message?: string;
26
35
  pidFilePath: string;
27
36
  mcpServers?: McpServerStatus[];
37
+ sessions?: SessionInfo[];
28
38
  }
29
39
  /**
30
40
  * Starts the MCP Hub Lite server with the specified configuration options.
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/cli/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAMvE;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,iBAO5C;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA0CjF;AAoED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,WAAW;;;;;;;;;;;;;;;;;;;KAUhC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,GAAG,KAAK,GAAG,iBAAiB,CAAC;IAC/C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,yBAAyB,EAAE,QAAQ,GAAG,aAAa,GAAG,kBAAkB,CAAC;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CA0Df;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBvE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkB1E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/cli/server.ts"],"names":[],"mappings":"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"}
@@ -123,13 +123,15 @@ export async function getServerStatus(pid) {
123
123
  process.kill(parseInt(actualPid), 0); // Signal 0 just checks if process exists
124
124
  // Try to fetch runtime status via HTTP API
125
125
  const mcpServers = await fetchRuntimeStatus(host, port);
126
+ const sessions = await fetchSessionStatus(host, port);
126
127
  return {
127
128
  running: true,
128
129
  pid: actualPid,
129
130
  host,
130
131
  port,
131
132
  pidFilePath,
132
- mcpServers
133
+ mcpServers,
134
+ sessions
133
135
  };
134
136
  }
135
137
  catch {
@@ -187,6 +189,34 @@ async function fetchRuntimeStatus(host, port) {
187
189
  return undefined;
188
190
  }
189
191
  }
192
+ /**
193
+ * Fetches active session information from the running server via HTTP API.
194
+ *
195
+ * @param host - The host address to connect to
196
+ * @param port - The port number to connect to
197
+ * @returns Promise with array of session info, or undefined if API call fails
198
+ */
199
+ async function fetchSessionStatus(host, port) {
200
+ try {
201
+ const controller = new AbortController();
202
+ const timeoutId = setTimeout(() => controller.abort(), 500);
203
+ const response = await fetch(`http://${host}:${port}/web/sessions`, {
204
+ signal: controller.signal,
205
+ headers: {
206
+ Accept: 'application/json'
207
+ }
208
+ });
209
+ clearTimeout(timeoutId);
210
+ if (!response.ok) {
211
+ return undefined;
212
+ }
213
+ const data = (await response.json());
214
+ return data.sessions;
215
+ }
216
+ catch {
217
+ return undefined;
218
+ }
219
+ }
190
220
  /**
191
221
  * Restarts the MCP Hub Lite server with the same configuration options.
192
222
  *
@@ -2,7 +2,7 @@
2
2
  * Configuration change logging utilities.
3
3
  * Handles comparison and logging of configuration changes.
4
4
  */
5
- import { logger, LOG_MODULES } from '../utils/logger.js';
5
+ import { logger, LOG_MODULES } from '../utils/logger/index.js';
6
6
  /**
7
7
  * Sensitive KEY patterns (case-insensitive).
8
8
  * Fields whose key contains any of these patterns will have their values masked.
@@ -4,7 +4,7 @@
4
4
  * Supports automatic migration from v1.0 to v1.1.
5
5
  */
6
6
  import * as fs from 'fs';
7
- import { logger, LOG_MODULES } from '../utils/logger.js';
7
+ import { logger, LOG_MODULES } from '../utils/logger/index.js';
8
8
  import { SystemConfigSchema, isLegacyV1Config } from './config.schema.js';
9
9
  import { migrateConfig } from './config-migrator.js';
10
10
  import { convertHttpToStreamableHttp } from './type-converter.js';
@@ -29,7 +29,7 @@
29
29
  */
30
30
  import path from 'path';
31
31
  import os from 'os';
32
- import { logger, LOG_MODULES } from '../utils/logger.js';
32
+ import { logger, LOG_MODULES } from '../utils/logger/index.js';
33
33
  import { SystemConfigSchema, ServerInstanceSchema, ServerConfigSchema } from './config.schema.js';
34
34
  import { loadConfig } from './config-loader.js';
35
35
  import { saveConfig } from './config-saver.js';
@@ -1,14 +1,9 @@
1
- import type { ServerInstance, SystemConfig } from './config.schema.js';
1
+ import type { SystemConfig } from './config.schema.js';
2
2
  import type { ServerRuntimeConfig } from '../../shared/models/server.model.js';
3
- /**
4
- * @deprecated Use ServerRuntimeConfig from @shared-models/server.model instead
5
- * Resolved server configuration with template + instance merged
6
- */
7
- export type ResolvedServerConfig = ServerRuntimeConfig;
8
3
  /**
9
4
  * Configuration Migration Result
10
5
  */
11
- export interface MigrationResult {
6
+ interface MigrationResult {
12
7
  success: boolean;
13
8
  backupPath?: string;
14
9
  migratedConfig?: SystemConfig;
@@ -18,7 +13,7 @@ export interface MigrationResult {
18
13
  /**
19
14
  * Configuration Migrator Options
20
15
  */
21
- export interface MigrationOptions {
16
+ interface MigrationOptions {
22
17
  dryRun?: boolean;
23
18
  createBackup?: boolean;
24
19
  validateAfterMigration?: boolean;
@@ -31,36 +26,6 @@ export interface MigrationOptions {
31
26
  * @returns Migration result with backup path and migrated config
32
27
  */
33
28
  export declare function migrateConfig(configPath: string, options?: MigrationOptions): MigrationResult;
34
- /**
35
- * Performs a dry run of the migration without modifying files
36
- *
37
- * @param configPath Path to the configuration file
38
- * @returns Migration result with what would happen
39
- */
40
- export declare function dryRunMigration(configPath: string): MigrationResult;
41
- /**
42
- * Rolls back a migration using a backup file
43
- *
44
- * @param configPath Path to the current configuration file
45
- * @param backupPath Path to the backup file
46
- * @returns Success status and any error message
47
- */
48
- export declare function rollbackMigration(configPath: string, backupPath: string): {
49
- success: boolean;
50
- error?: string;
51
- };
52
- /**
53
- * Checks the migration status of a configuration file
54
- *
55
- * @param configPath Path to the configuration file
56
- * @returns Status information
57
- */
58
- export declare function checkMigrationStatus(configPath: string): {
59
- exists: boolean;
60
- version: 'v1' | 'v1.1' | 'unknown';
61
- canMigrate: boolean;
62
- message: string;
63
- };
64
29
  /**
65
30
  * Resolves a server instance configuration by merging template and instance overrides
66
31
  *
@@ -69,14 +34,5 @@ export declare function checkMigrationStatus(configPath: string): {
69
34
  * @returns The resolved server configuration
70
35
  */
71
36
  export declare function resolveInstanceConfig(serverConfig: SystemConfig['servers'][string], instanceId?: string): ServerRuntimeConfig | null;
72
- /**
73
- * Gets all enabled instances for a server
74
- *
75
- * @param serverConfig The server configuration
76
- * @returns Array of enabled instances with resolved configs
77
- */
78
- export declare function getEnabledInstances(serverConfig: SystemConfig['servers'][string]): Array<{
79
- instance: ServerInstance;
80
- resolved: ServerRuntimeConfig;
81
- }>;
37
+ export {};
82
38
  //# sourceMappingURL=config-migrator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-migrator.d.ts","sourceRoot":"","sources":["../../../../src/config/config-migrator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAkB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAG1E;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AA0MD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,eAAe,CAwDjG;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CAMnE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAyBA;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG;IACxD,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IACnC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAsCA;AAID;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAC7C,UAAU,CAAC,EAAE,MAAM,GAClB,mBAAmB,GAAG,IAAI,CA+B5B;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAC5C,KAAK,CAAC;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,mBAAmB,CAAA;CAAE,CAAC,CAapE"}
1
+ {"version":3,"file":"config-migrator.d.ts","sourceRoot":"","sources":["../../../../src/config/config-migrator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAkC,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAG1E;;GAEG;AACH,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,UAAU,gBAAgB;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AA0MD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,eAAe,CAwDjG;AAID;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAC7C,UAAU,CAAC,EAAE,MAAM,GAClB,mBAAmB,GAAG,IAAI,CA+B5B"}
@@ -1,6 +1,6 @@
1
1
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
2
  import { dirname, join } from 'node:path';
3
- import { logger, LOG_MODULES } from '../utils/logger.js';
3
+ import { logger, LOG_MODULES } from '../utils/logger/index.js';
4
4
  import { generateInstanceId } from '../utils/instance-id.js';
5
5
  import { isLegacyV1Config, SystemConfigSchema } from './config.schema.js';
6
6
  import { reassignServerInstanceIndexes } from './server-config-manager.js';
@@ -207,90 +207,6 @@ export function migrateConfig(configPath, options = {}) {
207
207
  return result;
208
208
  }
209
209
  }
210
- /**
211
- * Performs a dry run of the migration without modifying files
212
- *
213
- * @param configPath Path to the configuration file
214
- * @returns Migration result with what would happen
215
- */
216
- export function dryRunMigration(configPath) {
217
- return migrateConfig(configPath, {
218
- dryRun: true,
219
- createBackup: false,
220
- validateAfterMigration: true
221
- });
222
- }
223
- /**
224
- * Rolls back a migration using a backup file
225
- *
226
- * @param configPath Path to the current configuration file
227
- * @param backupPath Path to the backup file
228
- * @returns Success status and any error message
229
- */
230
- export function rollbackMigration(configPath, backupPath) {
231
- try {
232
- if (!existsSync(backupPath)) {
233
- return {
234
- success: false,
235
- error: `Backup file not found: ${backupPath}`
236
- };
237
- }
238
- const backupContent = readFileSync(backupPath, 'utf8');
239
- const dir = dirname(configPath);
240
- if (!existsSync(dir)) {
241
- mkdirSync(dir, { recursive: true });
242
- }
243
- writeFileSync(configPath, backupContent, 'utf8');
244
- return { success: true };
245
- }
246
- catch (error) {
247
- return {
248
- success: false,
249
- error: error instanceof Error ? error.message : String(error)
250
- };
251
- }
252
- }
253
- /**
254
- * Checks the migration status of a configuration file
255
- *
256
- * @param configPath Path to the configuration file
257
- * @returns Status information
258
- */
259
- export function checkMigrationStatus(configPath) {
260
- if (!existsSync(configPath)) {
261
- return {
262
- exists: false,
263
- version: 'unknown',
264
- canMigrate: false,
265
- message: 'Configuration file does not exist'
266
- };
267
- }
268
- try {
269
- const config = loadConfigFile(configPath);
270
- if (!isLegacyV1Config(config)) {
271
- return {
272
- exists: true,
273
- version: 'v1.1',
274
- canMigrate: false,
275
- message: 'Configuration is already in v1.1 format'
276
- };
277
- }
278
- return {
279
- exists: true,
280
- version: 'v1',
281
- canMigrate: true,
282
- message: 'Configuration is in v1.0 format and can be migrated'
283
- };
284
- }
285
- catch (error) {
286
- return {
287
- exists: true,
288
- version: 'unknown',
289
- canMigrate: false,
290
- message: `Error reading configuration: ${error instanceof Error ? error.message : String(error)}`
291
- };
292
- }
293
- }
294
210
  // ====== v1.1 Configuration Helpers ======
295
211
  /**
296
212
  * Resolves a server instance configuration by merging template and instance overrides
@@ -329,21 +245,4 @@ export function resolveInstanceConfig(serverConfig, instanceId) {
329
245
  description: template.description
330
246
  };
331
247
  }
332
- /**
333
- * Gets all enabled instances for a server
334
- *
335
- * @param serverConfig The server configuration
336
- * @returns Array of enabled instances with resolved configs
337
- */
338
- export function getEnabledInstances(serverConfig) {
339
- const result = [];
340
- for (const instance of serverConfig.instances) {
341
- if (instance.enabled !== false) {
342
- const resolved = resolveInstanceConfig(serverConfig, instance.id);
343
- if (resolved) {
344
- result.push({ instance, resolved });
345
- }
346
- }
347
- }
348
- return result;
349
- }
248
+ // ====== Config Conversion Helpers ======
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import * as fs from 'fs';
6
6
  import path from 'path';
7
- import { logger } from '../utils/logger.js';
7
+ import { logger } from '../utils/logger/index.js';
8
8
  import { LOG_MODULES } from '../utils/logger/log-modules.js';
9
9
  /**
10
10
  * Saves the configuration to disk at the specified path.
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { ServerTemplateSchema, ServerInstanceSchema, ServerConfigSchema } from './config.schema.js';
6
6
  import { convertHttpToStreamableHttp } from './type-converter.js';
7
- import { logger, LOG_MODULES } from '../utils/logger.js';
7
+ import { logger, LOG_MODULES } from '../utils/logger/index.js';
8
8
  import { getObjectChanges, logObjectChangesWithTitle } from './config-change-logger.js';
9
9
  import { sortServerConfigEnvHeaders } from '../utils/sort-utils.js';
10
10
  import { generateInstanceId } from '../utils/instance-id.js';
@@ -59,6 +59,7 @@ export type SystemToolName = (typeof SYSTEM_TOOL_NAMES)[number];
59
59
  /**
60
60
  * MCP Hub Lite server name - represents both the system tools server and the gateway server
61
61
  * This single name is used for both system tool identification and gateway server naming
62
+ * Re-exported from shared for consistent usage across backend and frontend
62
63
  */
63
- export declare const MCP_HUB_LITE_SERVER = "mcp-hub-lite";
64
+ export { MCP_HUB_LITE_SERVER } from '../../shared/models/constants.js';
64
65
  //# sourceMappingURL=system-tools.constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"system-tools.constants.d.ts","sourceRoot":"","sources":["../../../../src/models/system-tools.constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEtD,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;CACf;AAGD,MAAM,MAAM,cAAc,GACtB,iBAAiB,GACjB,uBAAuB,GACvB,aAAa,GACb,cAAc,GACd,6BAA6B,GAC7B,cAAc,GACd,iBAAiB,CAAC;AAGtB,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,aAAa,aAAa,CAAC;AACxC,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AAC1E,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,4HAQpB,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAGhE;;;GAGG;AACH,eAAO,MAAM,mBAAmB,iBAAiB,CAAC"}
1
+ {"version":3,"file":"system-tools.constants.d.ts","sourceRoot":"","sources":["../../../../src/models/system-tools.constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEtD,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;CACf;AAGD,MAAM,MAAM,cAAc,GACtB,iBAAiB,GACjB,uBAAuB,GACvB,aAAa,GACb,cAAc,GACd,6BAA6B,GAC7B,cAAc,GACd,iBAAiB,CAAC;AAGtB,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,aAAa,aAAa,CAAC;AACxC,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AAC1E,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,4HAQpB,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAGhE;;;;GAIG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -27,5 +27,6 @@ export const SYSTEM_TOOL_NAMES = [
27
27
  /**
28
28
  * MCP Hub Lite server name - represents both the system tools server and the gateway server
29
29
  * This single name is used for both system tool identification and gateway server naming
30
+ * Re-exported from shared for consistent usage across backend and frontend
30
31
  */
31
- export const MCP_HUB_LITE_SERVER = 'mcp-hub-lite';
32
+ export { MCP_HUB_LITE_SERVER } from '../../shared/models/constants.js';
@@ -23,7 +23,7 @@
23
23
  * // Clean up PID file on shutdown
24
24
  * PidManager.removePid();
25
25
  */
26
- import { logger } from '../utils/logger.js';
26
+ import { logger } from '../utils/logger/index.js';
27
27
  import { LOG_MODULES } from '../utils/logger/log-modules.js';
28
28
  import { writePidFile, readPidFile, removePidFile, pidFileExists } from './file.js';
29
29
  export class PidManager {
@@ -1,7 +1,8 @@
1
1
  import { buildApp } from '../app.js';
2
2
  import { configManager } from '../config/config-manager.js';
3
- import { logger, LOG_MODULES } from '../utils/logger.js';
4
- import { mcpConnectionManager } from '../services/mcp-connection-manager.js';
3
+ import { logger, LOG_MODULES } from '../utils/logger/index.js';
4
+ import { mcpConnectionManager } from '../services/connection/index.js';
5
+ import { sessionManager } from '../services/gateway/session-manager.js';
5
6
  import { PidManager } from '../pid/manager.js';
6
7
  import { collectConnectTasks, executeConnectTasks, ensureServerInstances } from './startup.js';
7
8
  // Set log level to debug for development server
@@ -130,6 +131,7 @@ async function startDevServer() {
130
131
  const shutdown = async (signal) => {
131
132
  logger.info(`Received ${signal}, shutting down gracefully...`, LOG_MODULES.DEV_SERVER);
132
133
  try {
134
+ sessionManager.shutdownAll();
133
135
  await mcpConnectionManager.disconnectAll();
134
136
  if (app) {
135
137
  await app.close();
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../src/server/runner.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,iBAuD7E"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../src/server/runner.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,iBAwD7E"}
@@ -1,9 +1,10 @@
1
1
  import { buildApp } from '../app.js';
2
2
  import { configManager } from '../config/config-manager.js';
3
- import { logger } from '../utils/logger.js';
3
+ import { logger } from '../utils/logger/index.js';
4
4
  import { LOG_MODULES } from '../utils/logger/log-modules.js';
5
5
  import { setJsonPrettyConfigGetter } from '../utils/json-utils.js';
6
- import { mcpConnectionManager } from '../services/mcp-connection-manager.js';
6
+ import { mcpConnectionManager } from '../services/connection/index.js';
7
+ import { sessionManager } from '../services/gateway/session-manager.js';
7
8
  import { PidManager } from '../pid/manager.js';
8
9
  import { checkPortWithExit } from '../utils/port-checker.js';
9
10
  import { collectConnectTasks, executeConnectTasks, ensureServerInstances } from './startup.js';
@@ -62,6 +63,7 @@ export async function runServer(options = {}) {
62
63
  const shutdown = async (signal) => {
63
64
  logger.info(`Received ${signal}, shutting down...`, LOG_MODULES.SERVER);
64
65
  try {
66
+ sessionManager.shutdownAll();
65
67
  await mcpConnectionManager.disconnectAll();
66
68
  if (app) {
67
69
  await app.close();
@@ -6,8 +6,8 @@
6
6
  */
7
7
  import { configManager } from '../config/config-manager.js';
8
8
  import { resolveInstanceConfig } from '../config/config-migrator.js';
9
- import { mcpConnectionManager } from '../services/mcp-connection-manager.js';
10
- import { logger } from '../utils/logger.js';
9
+ import { mcpConnectionManager } from '../services/connection/index.js';
10
+ import { logger } from '../utils/logger/index.js';
11
11
  /**
12
12
  * Ensures all configured servers have at least one instance.
13
13
  * Creates a default instance for any server that doesn't have one yet.
@@ -115,6 +115,8 @@ export declare class McpConnectionManager {
115
115
  private publishConnectionEvents;
116
116
  /**
117
117
  * Refreshes server tools and resources (only for bidirectional transports).
118
+ *
119
+ * @param skipResources - Skip resources/list request when server doesn't support resources capability
118
120
  */
119
121
  private refreshServerResources;
120
122
  /**