@loop_ouroboros/mcp-hub-lite 1.2.9 → 1.3.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 (137) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/client/assets/{HomeView-CGezWc0j.js → HomeView-Bi2bkUKf.js} +1 -1
  3. package/dist/client/assets/{ResourceDetailView-CDmWGdAK.css → ResourceDetailView-BkTSg91z.css} +1 -1
  4. package/dist/client/assets/ResourceDetailView-DyuSovH9.js +1 -0
  5. package/dist/client/assets/ResourcesView-CU0VbNy5.js +1 -0
  6. package/dist/client/assets/ResourcesView-zgV8Nq7w.css +1 -0
  7. package/dist/client/assets/{ServerDashboard-g5p4VC_-.js → ServerDashboard-BGyyZAti.js} +1 -1
  8. package/dist/client/assets/{ServerDetail-DCQH8HIb.css → ServerDetail-CPNAFBPM.css} +1 -1
  9. package/dist/client/assets/ServerDetail-bcQ8BVXR.js +2 -0
  10. package/dist/client/assets/{ServerListView-DZsy2gaQ.js → ServerListView-yQPVJFHG.js} +1 -1
  11. package/dist/client/assets/{ServerStatusTags.vue_vue_type_script_setup_true_lang-DmGg4uuV.js → ServerStatusTags.vue_vue_type_script_setup_true_lang-C8gQlxGE.js} +1 -1
  12. package/dist/client/assets/{SettingsView-DQSWb9xM.js → SettingsView-B1DxbFP3.js} +1 -1
  13. package/dist/client/assets/ToolCallDialog-BQ9UJZ_-.css +1 -0
  14. package/dist/client/assets/ToolCallDialog-DEapCO06.js +1 -0
  15. package/dist/client/assets/ToolsView-DA0u_bCw.js +1 -0
  16. package/dist/client/assets/ToolsView-cO61nMNr.css +1 -0
  17. package/dist/client/assets/{_baseClone-DsVtZfPm.js → _baseClone-B991Lvrt.js} +1 -1
  18. package/dist/client/assets/{el-form-item-CTsVV8sm.js → el-form-item-DfWq_kSy.js} +1 -1
  19. package/dist/client/assets/{el-input-Bh1VGJTU.js → el-input-5YzZrwir.js} +1 -1
  20. package/dist/client/assets/{el-loading-huOeK9cW.js → el-loading-DE3FcxNH.js} +1 -1
  21. package/dist/client/assets/{el-overlay-CR_KVhLU.js → el-overlay-BTeTueuN.js} +1 -1
  22. package/dist/client/assets/{el-radio-group-BSbtAW4k.js → el-radio-group-Y1E2bxIW.js} +1 -1
  23. package/dist/client/assets/{el-skeleton-item-BSxOLPFM.js → el-skeleton-item-DhgR50Jx.js} +1 -1
  24. package/dist/client/assets/{el-switch-BaQUQWTL.js → el-switch-fF--nMSD.js} +1 -1
  25. package/dist/client/assets/{el-tab-pane-9JxLgdS7.js → el-tab-pane-rvS_KTwP.js} +1 -1
  26. package/dist/client/assets/{el-table-column-Du1l9Ww3.js → el-table-column-B1O8mY47.js} +1 -1
  27. package/dist/client/assets/{index-BNmwPGMT.css → index-Bzz3tYbS.css} +1 -1
  28. package/dist/client/assets/{index-CsZoFRv1.js → index-DkqV9kH4.js} +2 -2
  29. package/dist/client/assets/{omit-Btci9mp3.js → omit-BIIebEYo.js} +1 -1
  30. package/dist/client/assets/{raf-tUu4BwZS.js → raf-Cj-gATZv.js} +1 -1
  31. package/dist/client/index.html +2 -2
  32. package/dist/server/shared/models/constants.d.ts +3 -0
  33. package/dist/server/shared/models/constants.d.ts.map +1 -0
  34. package/dist/server/shared/models/constants.js +2 -0
  35. package/dist/server/shared/models/index.d.ts +1 -0
  36. package/dist/server/shared/models/index.d.ts.map +1 -1
  37. package/dist/server/shared/models/index.js +1 -0
  38. package/dist/server/shared/types/index.d.ts +0 -1
  39. package/dist/server/shared/types/index.d.ts.map +1 -1
  40. package/dist/server/shared/types/index.js +0 -1
  41. package/dist/server/src/api/mcp/debug-response-wrapper.js +1 -1
  42. package/dist/server/src/api/mcp/gateway.d.ts.map +1 -1
  43. package/dist/server/src/api/mcp/gateway.js +23 -41
  44. package/dist/server/src/api/web/hub-tools.d.ts.map +1 -1
  45. package/dist/server/src/api/web/hub-tools.js +11 -0
  46. package/dist/server/src/api/web/mcp-status.js +2 -2
  47. package/dist/server/src/api/web/search.d.ts +2 -16
  48. package/dist/server/src/api/web/search.d.ts.map +1 -1
  49. package/dist/server/src/api/web/search.js +22 -30
  50. package/dist/server/src/api/web/servers.js +1 -1
  51. package/dist/server/src/api/ws/events.js +1 -1
  52. package/dist/server/src/api/ws/ws-handler.js +1 -1
  53. package/dist/server/src/app.js +1 -1
  54. package/dist/server/src/cli/commands/tool-use.d.ts +10 -3
  55. package/dist/server/src/cli/commands/tool-use.d.ts.map +1 -1
  56. package/dist/server/src/cli/commands/tool-use.js +69 -30
  57. package/dist/server/src/config/config-change-logger.js +1 -1
  58. package/dist/server/src/config/config-loader.js +1 -1
  59. package/dist/server/src/config/config-manager.js +1 -1
  60. package/dist/server/src/config/config-migrator.d.ts +4 -48
  61. package/dist/server/src/config/config-migrator.d.ts.map +1 -1
  62. package/dist/server/src/config/config-migrator.js +2 -103
  63. package/dist/server/src/config/config-saver.js +1 -1
  64. package/dist/server/src/config/server-config-manager.js +1 -1
  65. package/dist/server/src/models/system-tools.constants.d.ts +2 -1
  66. package/dist/server/src/models/system-tools.constants.d.ts.map +1 -1
  67. package/dist/server/src/models/system-tools.constants.js +2 -1
  68. package/dist/server/src/pid/manager.js +1 -1
  69. package/dist/server/src/server/dev-server.js +2 -2
  70. package/dist/server/src/server/runner.js +2 -2
  71. package/dist/server/src/server/startup.js +2 -2
  72. package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -1
  73. package/dist/server/src/services/connection/connection-manager.js +16 -21
  74. package/dist/server/src/services/connection/tool-cache.d.ts.map +1 -1
  75. package/dist/server/src/services/connection/tool-cache.js +10 -8
  76. package/dist/server/src/services/event-bus.service.d.ts +3 -1
  77. package/dist/server/src/services/event-bus.service.d.ts.map +1 -1
  78. package/dist/server/src/services/event-bus.service.js +1 -0
  79. package/dist/server/src/services/gateway/gateway.service.d.ts +1 -0
  80. package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -1
  81. package/dist/server/src/services/gateway/gateway.service.js +29 -7
  82. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts +1 -2
  83. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts.map +1 -1
  84. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.js +24 -13
  85. package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts.map +1 -1
  86. package/dist/server/src/services/gateway/request-handlers/resources-handler.js +7 -3
  87. package/dist/server/src/services/gateway/tool-list-generator.d.ts +14 -19
  88. package/dist/server/src/services/gateway/tool-list-generator.d.ts.map +1 -1
  89. package/dist/server/src/services/gateway/tool-list-generator.js +221 -80
  90. package/dist/server/src/services/hub-manager.service.d.ts.map +1 -1
  91. package/dist/server/src/services/hub-manager.service.js +15 -2
  92. package/dist/server/src/services/hub-tools/instance-selector.js +1 -1
  93. package/dist/server/src/services/hub-tools/resource-generator.d.ts +0 -21
  94. package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -1
  95. package/dist/server/src/services/hub-tools/resource-generator.js +15 -15
  96. package/dist/server/src/services/hub-tools/server-selector.js +1 -1
  97. package/dist/server/src/services/hub-tools.service.d.ts.map +1 -1
  98. package/dist/server/src/services/hub-tools.service.js +15 -12
  99. package/dist/server/src/services/log-storage.service.js +1 -1
  100. package/dist/server/src/services/system-tool-handler.js +1 -1
  101. package/dist/server/src/utils/error-handler.js +1 -1
  102. package/dist/server/src/utils/index.d.ts +1 -1
  103. package/dist/server/src/utils/index.d.ts.map +1 -1
  104. package/dist/server/src/utils/index.js +1 -1
  105. package/dist/server/src/utils/json-utils.js +4 -4
  106. package/dist/server/src/utils/log-rotator.d.ts +0 -15
  107. package/dist/server/src/utils/log-rotator.d.ts.map +1 -1
  108. package/dist/server/src/utils/log-rotator.js +0 -18
  109. package/dist/server/src/utils/port-checker.js +1 -1
  110. package/dist/server/src/utils/transports/stdio-transport.js +1 -1
  111. package/dist/server/src/utils/transports/streamable-http-transport.js +1 -1
  112. package/dist/server/src/utils/transports/transport-factory.d.ts.map +1 -1
  113. package/dist/server/src/utils/transports/transport-factory.js +26 -3
  114. package/dist/server/tests/contract/mcp-protocol/initialize.test.js +1 -1
  115. package/dist/server/tests/contract/mcp-protocol/tools-call.test.js +1 -1
  116. package/dist/server/tests/contract/mcp-protocol/tools-list.test.js +1 -1
  117. package/dist/server/tests/integration/gateway/fault-tolerance.test.js +1 -1
  118. package/dist/server/tests/integration/gateway/mcp-connection.test.js +1 -1
  119. package/dist/server/tests/types/logger-test-helpers.d.ts +1 -1
  120. package/dist/server/tests/types/logger-test-helpers.d.ts.map +1 -1
  121. package/dist/server/tests/unit/config/config-migrator.test.js +45 -105
  122. package/dist/server/tests/unit/config/config-saver.test.js +1 -1
  123. package/dist/server/tests/unit/server/runner.test.js +5 -6
  124. package/dist/server/tests/unit/services/gateway-logging.test.js +1 -1
  125. package/dist/server/tests/unit/services/hub-manager-service.test.js +4 -5
  126. package/dist/server/tests/unit/services/hub-tools.service.test.js +78 -2
  127. package/dist/server/tests/unit/utils/log-rotator.test.js +1 -15
  128. package/dist/server/tests/unit/utils/logger.test.js +1 -1
  129. package/package.json +1 -3
  130. package/dist/client/assets/ResourceDetailView-Bi5UsbFq.js +0 -1
  131. package/dist/client/assets/ResourcesView-B9anSm85.js +0 -1
  132. package/dist/client/assets/ResourcesView-Cc8RHtia.css +0 -1
  133. package/dist/client/assets/ServerDetail-DMoFqWCp.js +0 -2
  134. package/dist/client/assets/ToolCallDialog-BEyRp_J3.js +0 -1
  135. package/dist/client/assets/ToolCallDialog-BhdPX-Kf.css +0 -1
  136. package/dist/client/assets/ToolsView-BU7PKJwt.js +0 -1
  137. package/dist/client/assets/ToolsView-BkrQLjH9.css +0 -1
@@ -2,7 +2,7 @@ import { fileURLToPath } from 'url';
2
2
  import { dirname, join } from 'path';
3
3
  import fs from 'fs';
4
4
  import { hubManager } from '../hub-manager.service.js';
5
- import { mcpConnectionManager } from '../mcp-connection-manager.js';
5
+ import { mcpConnectionManager } from '../connection/index.js';
6
6
  import { hasValidId, selectBestInstance, getServerDescription } from './server-selector.js';
7
7
  /**
8
8
  * Maps Hub URI to original MCP URI for resource forwarding.
@@ -14,7 +14,7 @@ const hubToMcpUriMap = new Map();
14
14
  * Clears the Hub to MCP URI mapping.
15
15
  * Should be called before regenerating resources.
16
16
  */
17
- export function clearHubToMcpUriMap() {
17
+ function clearHubToMcpUriMap() {
18
18
  hubToMcpUriMap.clear();
19
19
  }
20
20
  /**
@@ -116,34 +116,34 @@ function loadUseGuideContent() {
116
116
  }
117
117
  catch {
118
118
  // Fallback in case the file can't be read
119
- return `# MCP Hub Lite Use Guide
120
-
121
- ## Overview
122
-
123
- MCP Hub Lite is a lightweight MCP (Model Context Protocol) gateway that acts as a unified interface between AI assistants and multiple backend MCP servers.
124
-
125
- ## Note
126
-
127
- The complete use guide is currently unavailable. Please check the MCP Hub Lite documentation at https://github.com/your-org/mcp-hub-lite for more information.
119
+ return `# MCP Hub Lite Use Guide
120
+
121
+ ## Overview
122
+
123
+ MCP Hub Lite is a lightweight MCP (Model Context Protocol) gateway that acts as a unified interface between AI assistants and multiple backend MCP servers.
124
+
125
+ ## Note
126
+
127
+ The complete use guide is currently unavailable. Please check the MCP Hub Lite documentation at https://github.com/your-org/mcp-hub-lite for more information.
128
128
  `;
129
129
  }
130
130
  }
131
131
  /**
132
132
  * URI for the use guide resource.
133
133
  */
134
- export const USE_GUIDE_URI = 'hub://use-guide';
134
+ const USE_GUIDE_URI = 'hub://use-guide';
135
135
  /**
136
136
  * Name of the use guide resource.
137
137
  */
138
- export const USE_GUIDE_NAME = 'MCP Hub Lite Use Guide';
138
+ const USE_GUIDE_NAME = 'MCP Hub Lite Use Guide';
139
139
  /**
140
140
  * Description of the use guide resource.
141
141
  */
142
- export const USE_GUIDE_DESCRIPTION = 'Comprehensive guide to using MCP Hub Lite gateway and its features';
142
+ const USE_GUIDE_DESCRIPTION = 'Comprehensive guide to using MCP Hub Lite gateway and its features';
143
143
  /**
144
144
  * MIME type for the use guide resource.
145
145
  */
146
- export const USE_GUIDE_MIME_TYPE = 'text/markdown';
146
+ const USE_GUIDE_MIME_TYPE = 'text/markdown';
147
147
  /**
148
148
  * Generates dynamic Hub resources based on currently connected MCP servers.
149
149
  *
@@ -1,6 +1,6 @@
1
1
  import { hubManager } from '../hub-manager.service.js';
2
2
  import { InstanceSelector, TagMatchUniqueError } from './instance-selector.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
  /**
6
6
  * Gets the description for a server, using the server name as default if none is provided.
@@ -1 +1 @@
1
- {"version":3,"file":"hub-tools.service.d.ts","sourceRoot":"","sources":["../../../../src/services/hub-tools.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hub-tools.service.d.ts","sourceRoot":"","sources":["../../../../src/services/hub-tools.service.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { hubManager } from './hub-manager.service.js';
2
- import { mcpConnectionManager } from './mcp-connection-manager.js';
2
+ import { mcpConnectionManager } from './connection/index.js';
3
3
  import { eventBus, EventTypes } from './event-bus.service.js';
4
- import { gateway } from './gateway.service.js';
5
- import { logger, LOG_MODULES } from '../utils/logger.js';
4
+ import { generateGatewayToolsList } from './gateway/tool-list-generator.js';
5
+ import { logger, LOG_MODULES } from '../utils/logger/index.js';
6
6
  import { stringifyForLogging } from '../utils/json-utils.js';
7
7
  import { normalizeToolName } from '../utils/name-converter.js';
8
8
  import { McpError } from '@modelcontextprotocol/sdk/types.js';
@@ -96,12 +96,6 @@ export class HubToolsService {
96
96
  if (indexes.length === 0) {
97
97
  continue;
98
98
  }
99
- // Use non-strict mode for management operations to avoid tag-match-unique errors
100
- const serverInfo = selectBestInstance(server.name, undefined, false);
101
- if (!serverInfo) {
102
- // Skip servers that can't be selected (e.g., tag-match-unique without tags)
103
- continue;
104
- }
105
99
  const description = getServerDescription(server.config, server.name);
106
100
  result[server.name] = description;
107
101
  }
@@ -127,7 +121,7 @@ export class HubToolsService {
127
121
  if (typeof args.serverName === 'string' && args.serverName === MCP_HUB_LITE_SERVER) {
128
122
  // Generate tool list using the same logic as tools/list
129
123
  const toolMap = new Map();
130
- const gatewayTools = gateway.generateGatewayToolsList(toolMap);
124
+ const gatewayTools = generateGatewayToolsList(toolMap);
131
125
  // Convert to ToolSummary format (without inputSchema)
132
126
  const toolSummaries = gatewayTools.map((tool) => ({
133
127
  name: tool.name,
@@ -344,8 +338,17 @@ export class HubToolsService {
344
338
  async callTool(args) {
345
339
  let { serverName, toolName } = args;
346
340
  // Support both toolArgs and arguments for backward compatibility
347
- const toolArgs = (args.toolArgs || args.arguments || {});
348
- const { requestOptions } = args;
341
+ let toolArgs = (args.toolArgs || args.arguments || {});
342
+ let { requestOptions } = args;
343
+ // Unwrap gateway-wrapped arguments: if toolArgs itself contains a nested
344
+ // toolArgs property (the wrapped schema), extract the real tool arguments.
345
+ if (toolArgs && typeof toolArgs.toolArgs === 'object' && toolArgs.toolArgs !== null) {
346
+ const wrapped = toolArgs;
347
+ toolArgs = wrapped.toolArgs;
348
+ if (wrapped.requestOptions && !requestOptions) {
349
+ requestOptions = wrapped.requestOptions;
350
+ }
351
+ }
349
352
  // Parse prefixed tool names (like mcp__mcp-hub-lite__xxx) if applicable
350
353
  const parsedTool = ToolArgsParser.parsePrefixedToolName(toolName);
351
354
  if (parsedTool) {
@@ -1,4 +1,4 @@
1
- import { logger, LOG_MODULES } from '../utils/logger.js';
1
+ import { logger, LOG_MODULES } from '../utils/logger/index.js';
2
2
  import { eventBus, EventTypes } from './event-bus.service.js';
3
3
  /**
4
4
  * Service for managing and storing log entries for MCP servers.
@@ -1,6 +1,6 @@
1
1
  import { hubToolsService } from './hub-tools.service.js';
2
2
  import { McpError } from '@modelcontextprotocol/sdk/types.js';
3
- import { logger, LOG_MODULES } from '../utils/logger.js';
3
+ import { logger, LOG_MODULES } from '../utils/logger/index.js';
4
4
  import { LIST_SERVERS_TOOL, LIST_TOOLS_TOOL, GET_TOOL_TOOL, CALL_TOOL_TOOL, UPDATE_SERVER_DESCRIPTION_TOOL, LIST_TAGS_TOOL, SEARCH_TOOLS_TOOL } from '../models/system-tools.constants.js';
5
5
  import { stringifyForLogging } from '../utils/json-utils.js';
6
6
  /**
@@ -1,5 +1,5 @@
1
1
  import { McpError } from '@modelcontextprotocol/sdk/types.js';
2
- import { logger } from './logger.js';
2
+ import { logger } from './logger/index.js';
3
3
  import { LOG_MODULES } from './logger/log-modules.js';
4
4
  /**
5
5
  * Unified error handler
@@ -1,4 +1,4 @@
1
- export { logger, LOG_MODULES } from './logger.js';
1
+ export { logger, LOG_MODULES } from './logger/index.js';
2
2
  export * from './sort-utils.js';
3
3
  export * from './version.js';
4
4
  export { normalizeToolName } from './name-converter.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClD,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxD,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,4 +1,4 @@
1
- export { logger, LOG_MODULES } from './logger.js';
1
+ export { logger, LOG_MODULES } from './logger/index.js';
2
2
  export * from './sort-utils.js';
3
3
  export * from './version.js';
4
4
  export { normalizeToolName } from './name-converter.js';
@@ -207,9 +207,9 @@ export function stringifyForLogging(obj) {
207
207
  const jsonPretty = getJsonPrettySetting();
208
208
  if (jsonPretty) {
209
209
  const jsonStr = JSON.stringify(obj, null, 2);
210
- return processPrettyJsonForLogging(jsonStr);
210
+ return '\n' + processPrettyJsonForLogging(jsonStr);
211
211
  }
212
- return JSON.stringify(obj);
212
+ return '\n' + JSON.stringify(obj);
213
213
  }
214
214
  /**
215
215
  * Stringify object for logging with replacer and dynamic pretty formatting based on LOG_JSON_PRETTY environment variable
@@ -221,7 +221,7 @@ export function stringifyForLoggingWithReplacer(obj, replacer) {
221
221
  const jsonPretty = getJsonPrettySetting();
222
222
  if (jsonPretty) {
223
223
  const jsonStr = JSON.stringify(obj, replacer, 2);
224
- return processPrettyJsonForLogging(jsonStr);
224
+ return '\n' + processPrettyJsonForLogging(jsonStr);
225
225
  }
226
- return JSON.stringify(obj, replacer);
226
+ return '\n' + JSON.stringify(obj, replacer);
227
227
  }
@@ -128,21 +128,6 @@ export declare class LogRotator {
128
128
  * ```
129
129
  */
130
130
  getLatestLogFilePath(): string | null;
131
- /**
132
- * Gets the current log file path (backward compatibility).
133
- *
134
- * This method is maintained for backward compatibility. It first tries to get
135
- * the latest existing log file. If none exists, it creates a new one.
136
- *
137
- * @returns {string} The absolute file path for the current log file.
138
- * @deprecated Use createNewLogFilePath() or getLatestLogFilePath() instead
139
- * @example
140
- * ```typescript
141
- * const rotator = new LogRotator('/var/log/mcp-hub', 'mcp-hub');
142
- * const logPath = rotator.getCurrentLogFilePath();
143
- * ```
144
- */
145
- getCurrentLogFilePath(): string;
146
131
  /**
147
132
  * Performs log rotation by cleaning up old log files beyond the retention period.
148
133
  *
@@ -1 +1 @@
1
- {"version":3,"file":"log-rotator.d.ts","sourceRoot":"","sources":["../../../../src/utils/log-rotator.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,KAAK,YAAY,GAAG,MAAM;IAAE,MAAM,EAAE;QAAE,OAAO,EAAE;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,YAAY,CAAsB;IAE1C;;;;;;;OAOG;gBAED,MAAM,EAAE,MAAM,EACd,WAAW,GAAE,MAAkB,EAC/B,YAAY,CAAC,EAAE,aAAa,EAC5B,YAAY,CAAC,EAAE,YAAY;IAa7B;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,gBAAgB;IAwBxB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAWvB;;;;;;;;;;;;;;;;;OAiBG;IACI,oBAAoB,IAAI,MAAM;IAKrC;;;;;;;;;;;;;;OAcG;IACI,oBAAoB,IAAI,MAAM,GAAG,IAAI;IAK5C;;;;;;;;;;;;;OAaG;IACI,qBAAqB,IAAI,MAAM;IAKtC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACI,UAAU,IAAI,IAAI;IAwBzB;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACI,WAAW,IAAI,MAAM,EAAE;IAqB9B;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,uBAAuB;CA8BhC"}
1
+ {"version":3,"file":"log-rotator.d.ts","sourceRoot":"","sources":["../../../../src/utils/log-rotator.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,KAAK,YAAY,GAAG,MAAM;IAAE,MAAM,EAAE;QAAE,OAAO,EAAE;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,YAAY,CAAsB;IAE1C;;;;;;;OAOG;gBAED,MAAM,EAAE,MAAM,EACd,WAAW,GAAE,MAAkB,EAC/B,YAAY,CAAC,EAAE,aAAa,EAC5B,YAAY,CAAC,EAAE,YAAY;IAa7B;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,gBAAgB;IAwBxB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAWvB;;;;;;;;;;;;;;;;;OAiBG;IACI,oBAAoB,IAAI,MAAM;IAKrC;;;;;;;;;;;;;;OAcG;IACI,oBAAoB,IAAI,MAAM,GAAG,IAAI;IAK5C;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACI,UAAU,IAAI,IAAI;IAwBzB;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACI,WAAW,IAAI,MAAM,EAAE;IAqB9B;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,uBAAuB;CA8BhC"}
@@ -159,24 +159,6 @@ export class LogRotator {
159
159
  const logFiles = this.getLogFiles();
160
160
  return logFiles.length > 0 ? logFiles[0] : null;
161
161
  }
162
- /**
163
- * Gets the current log file path (backward compatibility).
164
- *
165
- * This method is maintained for backward compatibility. It first tries to get
166
- * the latest existing log file. If none exists, it creates a new one.
167
- *
168
- * @returns {string} The absolute file path for the current log file.
169
- * @deprecated Use createNewLogFilePath() or getLatestLogFilePath() instead
170
- * @example
171
- * ```typescript
172
- * const rotator = new LogRotator('/var/log/mcp-hub', 'mcp-hub');
173
- * const logPath = rotator.getCurrentLogFilePath();
174
- * ```
175
- */
176
- getCurrentLogFilePath() {
177
- const latest = this.getLatestLogFilePath();
178
- return latest ?? this.createNewLogFilePath();
179
- }
180
162
  /**
181
163
  * Performs log rotation by cleaning up old log files beyond the retention period.
182
164
  *
@@ -5,7 +5,7 @@
5
5
  import { exec } from 'child_process';
6
6
  import { promisify } from 'util';
7
7
  import { PidManager } from '../pid/manager.js';
8
- import { logger, LOG_MODULES } from './logger.js';
8
+ import { logger, LOG_MODULES } from './logger/index.js';
9
9
  const execAsync = promisify(exec);
10
10
  /**
11
11
  * Check if port is in use
@@ -1,5 +1,5 @@
1
1
  import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
2
- import { logger, LOG_MODULES } from '../logger.js';
2
+ import { logger, LOG_MODULES } from '../logger/index.js';
3
3
  import { PassThrough } from 'stream';
4
4
  /**
5
5
  * A transport implementation for communicating with MCP (Model Context Protocol) servers
@@ -1,4 +1,4 @@
1
- import { logger, LOG_MODULES } from '../logger.js';
1
+ import { logger, LOG_MODULES } from '../logger/index.js';
2
2
  import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
3
3
  import { URL } from 'url';
4
4
  import { ProxyAgent, fetch as undiciFetch } from 'undici';
@@ -1 +1 @@
1
- {"version":3,"file":"transport-factory.d.ts","sourceRoot":"","sources":["../../../../../src/utils/transports/transport-factory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAKtE;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;;;;;;OAOG;IACH,MAAM,CAAC,eAAe,CACpB,MAAM,EAAE,mBAAmB,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAC9C,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,sBAAsB,CAAC;KACvC,GACA,OAAO,+CAA+C,EAAE,SAAS;IA4EpE;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAW7B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAW9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;CA8CxC"}
1
+ {"version":3,"file":"transport-factory.d.ts","sourceRoot":"","sources":["../../../../../src/utils/transports/transport-factory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAMtE;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;;;;;;OAOG;IACH,MAAM,CAAC,eAAe,CACpB,MAAM,EAAE,mBAAmB,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAC9C,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,sBAAsB,CAAC;KACvC,GACA,OAAO,+CAA+C,EAAE,SAAS;IA8FpE;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAW7B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAW9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;CA8CxC"}
@@ -1,8 +1,9 @@
1
1
  import { StdioTransport } from './stdio-transport.js';
2
- import { SseTransport } from './sse-transport.js';
2
+ import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
3
3
  import { StreamableHttpTransport } from './streamable-http-transport.js';
4
4
  import { logStorage } from '../../services/log-storage.service.js';
5
5
  import { McpOAuthClientProvider } from '../../services/mcp-oauth/index.js';
6
+ import { ProxyAgent, fetch as undiciFetch } from 'undici';
6
7
  import { createHash } from 'node:crypto';
7
8
  import path from 'node:path';
8
9
  import os from 'node:os';
@@ -39,11 +40,33 @@ export class TransportFactory {
39
40
  readyPatterns: options?.readyPatterns,
40
41
  readyTimeout: options?.readyTimeout ?? 120000
41
42
  });
42
- case 'sse':
43
+ case 'sse': {
43
44
  if (!config.url) {
44
45
  throw new Error('SSE transport requires a URL');
45
46
  }
46
- return new SseTransport(config.url, config.headers, config.reconnectInterval, config.maxReconnectAttempts, config.proxy, server.name, compositeKey);
47
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
48
+ const sseOpts = {};
49
+ // Headers shared between SSE GET (eventSourceInit) and POST (requestInit)
50
+ if (config.headers && Object.keys(config.headers).length > 0) {
51
+ sseOpts.requestInit = { headers: config.headers };
52
+ sseOpts.eventSourceInit = { headers: config.headers };
53
+ }
54
+ // OAuth provider
55
+ if (options?.authProvider) {
56
+ sseOpts.authProvider = options.authProvider;
57
+ }
58
+ // Proxy support via custom fetch
59
+ if (config.proxy?.url) {
60
+ const agent = new ProxyAgent(config.proxy.url);
61
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
62
+ sseOpts.fetch = (input, init) => {
63
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
64
+ const fetchOptions = { ...init, dispatcher: agent };
65
+ return undiciFetch(input, fetchOptions);
66
+ };
67
+ }
68
+ return new SSEClientTransport(new URL(config.url), sseOpts);
69
+ }
47
70
  case 'streamable-http':
48
71
  case 'http': {
49
72
  // Compatibility with http type, treat as streamable-http
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
2
- import { mcpConnectionManager } from '../../../src/services/mcp-connection-manager.js';
2
+ import { mcpConnectionManager } from '../../../src/services/connection/index.js';
3
3
  import { hubManager } from '../../../src/services/hub-manager.service.js';
4
4
  import { resolveInstanceConfig } from '../../../src/config/config-migrator.js';
5
5
  // Mock MCP SDK
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
2
- import { mcpConnectionManager } from '../../../src/services/mcp-connection-manager.js';
2
+ import { mcpConnectionManager } from '../../../src/services/connection/index.js';
3
3
  import { hubManager } from '../../../src/services/hub-manager.service.js';
4
4
  import { resolveInstanceConfig } from '../../../src/config/config-migrator.js';
5
5
  // Mock MCP SDK
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
2
- import { mcpConnectionManager } from '../../../src/services/mcp-connection-manager.js';
2
+ import { mcpConnectionManager } from '../../../src/services/connection/index.js';
3
3
  import { hubManager } from '../../../src/services/hub-manager.service.js';
4
4
  import { resolveInstanceConfig } from '../../../src/config/config-migrator.js';
5
5
  // Mock MCP SDK
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, beforeEach, vi } from 'vitest';
2
- import { mcpConnectionManager } from '../../../src/services/mcp-connection-manager.js';
2
+ import { mcpConnectionManager } from '../../../src/services/connection/index.js';
3
3
  import { hubManager } from '../../../src/services/hub-manager.service.js';
4
4
  import { configManager } from '../../../src/config/config-manager.js';
5
5
  import { resolveInstanceConfig } from '../../../src/config/config-migrator.js';
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
2
- import { mcpConnectionManager } from '../../../src/services/mcp-connection-manager.js';
2
+ import { mcpConnectionManager } from '../../../src/services/connection/index.js';
3
3
  import { hubManager } from '../../../src/services/hub-manager.service.js';
4
4
  import { configManager } from '../../../src/config/config-manager.js';
5
5
  import { resolveInstanceConfig } from '../../../src/config/config-migrator.js';
@@ -2,7 +2,7 @@
2
2
  * Logger test helper types for accessing private methods in tests
3
3
  */
4
4
  import type { LogLevel } from '../../shared/types/common.types.js';
5
- import type { LogContext } from '../../src/utils/logger.js';
5
+ import type { LogContext } from '../../src/utils/logger/index.js';
6
6
  import type { WriteStream } from 'node:fs';
7
7
  export interface LoggerWithPrivateMethods {
8
8
  shouldLog: (level: string) => boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"logger-test-helpers.d.ts","sourceRoot":"","sources":["../../../../tests/types/logger-test-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IACxC,cAAc,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,MAAM,CAAC;IAC5C,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,uBAAuB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC;IAC5F,gBAAgB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC;IACrF,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IACxC,aAAa,EAAE,WAAW,GAAG,IAAI,CAAC;CACnC"}
1
+ {"version":3,"file":"logger-test-helpers.d.ts","sourceRoot":"","sources":["../../../../tests/types/logger-test-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IACxC,cAAc,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,MAAM,CAAC;IAC5C,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,uBAAuB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC;IAC5F,gBAAgB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC;IACrF,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IACxC,aAAa,EAAE,WAAW,GAAG,IAAI,CAAC;CACnC"}