@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
@@ -1 +1 @@
1
- import{ac as c,bx as f,bt as s,by as a,br as l,bz as g,aj as b}from"./index-CsZoFRv1.js";import{g as v,c as O,f as _,e as p}from"./_baseClone-DsVtZfPm.js";var y="[object Object]",P=Function.prototype,L=Object.prototype,u=P.toString,j=L.hasOwnProperty,m=u.call(Object);function w(e){if(!c(e)||f(e)!=y)return!1;var r=v(e);if(r===null)return!0;var t=j.call(r,"constructor")&&r.constructor;return typeof t=="function"&&t instanceof t&&u.call(t)==m}function C(e,r,t){var o=-1,n=e.length;r<0&&(r=-r>n?0:n+r),t=t>n?n:t,t<0&&(t+=n),n=r>t?0:t-r>>>0,r>>>=0;for(var i=Array(n);++o<n;)i[o]=e[o+r];return i}function h(e){var r=e==null?0:e.length;return r?e[r-1]:void 0}function A(e,r){return r.length<2?e:s(e,C(r,0,-1))}var S=Object.prototype,E=S.hasOwnProperty;function F(e,r){r=a(r,e);var t=-1,o=r.length;if(!o)return!0;for(;++t<o;){var n=l(r[t]);if(n==="__proto__"&&!E.call(e,"__proto__")||(n==="constructor"||n==="prototype")&&t<o-1)return!1}var i=A(e,r);return i==null||delete i[l(h(r))]}function G(e){return w(e)?void 0:e}var x=1,T=2,N=4,M=g(function(e,r){var t={};if(e==null)return t;var o=!1;r=b(r,function(i){return i=a(i,e),o||(o=i.length>1),i}),O(e,_(e),t),o&&(t=p(t,x|T|N,G));for(var n=r.length;n--;)F(t,r[n]);return t});export{w as i,M as o};
1
+ import{ac as c,bx as f,bt as s,by as a,br as l,bz as g,aj as b}from"./index-DkqV9kH4.js";import{g as v,c as O,f as _,e as p}from"./_baseClone-B991Lvrt.js";var y="[object Object]",P=Function.prototype,L=Object.prototype,u=P.toString,j=L.hasOwnProperty,m=u.call(Object);function w(e){if(!c(e)||f(e)!=y)return!1;var r=v(e);if(r===null)return!0;var t=j.call(r,"constructor")&&r.constructor;return typeof t=="function"&&t instanceof t&&u.call(t)==m}function C(e,r,t){var o=-1,n=e.length;r<0&&(r=-r>n?0:n+r),t=t>n?n:t,t<0&&(t+=n),n=r>t?0:t-r>>>0,r>>>=0;for(var i=Array(n);++o<n;)i[o]=e[o+r];return i}function h(e){var r=e==null?0:e.length;return r?e[r-1]:void 0}function A(e,r){return r.length<2?e:s(e,C(r,0,-1))}var S=Object.prototype,E=S.hasOwnProperty;function F(e,r){r=a(r,e);var t=-1,o=r.length;if(!o)return!0;for(;++t<o;){var n=l(r[t]);if(n==="__proto__"&&!E.call(e,"__proto__")||(n==="constructor"||n==="prototype")&&t<o-1)return!1}var i=A(e,r);return i==null||delete i[l(h(r))]}function G(e){return w(e)?void 0:e}var x=1,T=2,N=4,M=g(function(e,r){var t={};if(e==null)return t;var o=!1;r=b(r,function(i){return i=a(i,e),o||(o=i.length>1),i}),O(e,_(e),t),o&&(t=p(t,x|T|N,G));for(var n=r.length;n--;)F(t,r[n]);return t});export{w as i,M as o};
@@ -1 +1 @@
1
- import{F as o}from"./index-CsZoFRv1.js";const e=i=>o?window.requestAnimationFrame(i):setTimeout(i,16),r=i=>o?window.cancelAnimationFrame(i):clearTimeout(i);export{r as c,e as r};
1
+ import{F as o}from"./index-DkqV9kH4.js";const e=i=>o?window.requestAnimationFrame(i):setTimeout(i,16),r=i=>o?window.cancelAnimationFrame(i):clearTimeout(i);export{r as c,e as r};
@@ -5,9 +5,9 @@
5
5
  <link rel="icon" href="/favicon.ico" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>MCP Server Manager</title>
8
- <script type="module" crossorigin src="/assets/index-CsZoFRv1.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-DkqV9kH4.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/vue-vendor-Dwcr0jep.js">
10
- <link rel="stylesheet" crossorigin href="/assets/index-BNmwPGMT.css">
10
+ <link rel="stylesheet" crossorigin href="/assets/index-Bzz3tYbS.css">
11
11
  </head>
12
12
  <body>
13
13
  <div id="app"></div>
@@ -0,0 +1,3 @@
1
+ /** MCP Hub Lite gateway server name — used for system tool identification and gateway naming */
2
+ export declare const MCP_HUB_LITE_SERVER = "mcp-hub-lite";
3
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../shared/models/constants.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,eAAO,MAAM,mBAAmB,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ /** MCP Hub Lite gateway server name — used for system tool identification and gateway naming */
2
+ export const MCP_HUB_LITE_SERVER = 'mcp-hub-lite';
@@ -1,4 +1,5 @@
1
1
  export * from './server.model';
2
2
  export * from './tool.model';
3
3
  export * from './resource.model';
4
+ export * from './constants';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../shared/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../shared/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from './server.model';
2
2
  export * from './tool.model';
3
3
  export * from './resource.model';
4
+ export * from './constants';
@@ -1,4 +1,3 @@
1
- export type { SessionContext, SessionInfo, SessionRoot } from './session-context.types.js';
2
1
  export * from './common.types.js';
3
2
  export * from './websocket.types.js';
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../shared/types/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG3F,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../shared/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
@@ -1,3 +1,2 @@
1
- // Other types
2
1
  export * from './common.types.js';
3
2
  export * from './websocket.types.js';
@@ -2,7 +2,7 @@
2
2
  * Debug Response Wrapper for MCP Gateway.
3
3
  * Wraps Fastify reply to capture and log response content in development mode.
4
4
  */
5
- import { logger, LOG_MODULES, isToolsListResponse, simplifyToolsListResponse, hasImageContent, simplifyImageContent } from '../../utils/logger.js';
5
+ import { logger, LOG_MODULES, isToolsListResponse, simplifyToolsListResponse, hasImageContent, simplifyImageContent } from '../../utils/logger/index.js';
6
6
  import { stringifyForLogging, getMcpCommDebugSetting } from '../../utils/json-utils.js';
7
7
  /**
8
8
  * Wraps Fastify reply to capture and log response content in development mode.
@@ -1 +1 @@
1
- {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../../../../src/api/mcp/gateway.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAU7E;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,eAAe,iBA6H9D"}
1
+ {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../../../../src/api/mcp/gateway.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAU7E;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,eAAe,iBAwG9D"}
@@ -12,34 +12,33 @@ import { createSessionTransport } from '../../services/gateway/global-transport.
12
12
  * @param fastify - Fastify instance to register routes on
13
13
  */
14
14
  export async function mcpGatewayRoutes(fastify) {
15
- const handleMcpRequest = async (request, reply) => {
16
- // First, log that we received the request
15
+ // GET /mcp not used, this is a Streamable HTTP server
16
+ fastify.get('/mcp', (_request, reply) => {
17
+ reply.code(405).send({
18
+ jsonrpc: '2.0',
19
+ error: {
20
+ code: -32000,
21
+ message: 'GET /mcp is not supported. This is a Streamable HTTP MCP server — send POST /mcp with JSON-RPC requests directly.'
22
+ },
23
+ id: null
24
+ });
25
+ });
26
+ // POST /mcp — JSON-RPC request handling
27
+ const handlePostRequest = async (request, reply) => {
17
28
  if (getMcpCommDebugSetting()) {
18
29
  let initialLogMsg = `MCP Gateway ${request.method} ${request.url}`;
19
- // Combine headers and body into one log block
20
- initialLogMsg += `\n Request headers: ${stringifyForLogging(request.headers)}`;
30
+ initialLogMsg += `\nRequest headers: ${stringifyForLogging(request.headers)}`;
21
31
  if (request.body) {
22
32
  try {
23
33
  const preview = stringifyForLogging(request.body);
24
- initialLogMsg += `\n Body: ${preview}`;
34
+ initialLogMsg += `\nBody: ${preview}`;
25
35
  }
26
36
  catch {
27
- initialLogMsg += `\n Body: [Unserializable]`;
37
+ initialLogMsg += `\nBody: [Unserializable]`;
28
38
  }
29
39
  }
30
40
  logger.debug(initialLogMsg, LOG_MODULES.COMMUNICATION);
31
41
  }
32
- // Reject GET requests without Accept: text/event-stream (health-check hook compatibility)
33
- const accept = request.raw.headers['accept'] || '';
34
- if (request.method === 'GET' && !accept.includes('text/event-stream')) {
35
- reply.raw.writeHead(400, { 'Content-Type': 'application/json' });
36
- reply.raw.end(JSON.stringify({
37
- jsonrpc: '2.0',
38
- error: { code: -32000, message: 'Bad Request: Accept: text/event-stream required' },
39
- id: null
40
- }));
41
- return;
42
- }
43
42
  reply.header('Content-Type', 'application/json');
44
43
  wrapReplyForDebug(reply, '');
45
44
  reply.hijack();
@@ -58,8 +57,6 @@ export async function mcpGatewayRoutes(fastify) {
58
57
  }
59
58
  }
60
59
  finally {
61
- // Resources will be automatically cleaned up by garbage collection
62
- // since transport and server are local to this request scope
63
60
  if (getGatewayDebugSetting()) {
64
61
  logger.debug(`Session transport request completed, resources will be GC'd`, LOG_MODULES.GATEWAY);
65
62
  }
@@ -70,7 +67,7 @@ export async function mcpGatewayRoutes(fastify) {
70
67
  const errorStack = error instanceof Error ? error.stack : 'No stack available';
71
68
  logger.error(`Error handling MCP request: ${errorMessage}`, LOG_MODULES.GATEWAY);
72
69
  logger.error(`Full error stack: ${errorStack}`, LOG_MODULES.GATEWAY);
73
- logger.error(`Request body that caused error: ${JSON.stringify(request.body)}`, LOG_MODULES.GATEWAY);
70
+ logger.error(`Request body that caused error: ${stringifyForLogging(request.body)}`, LOG_MODULES.GATEWAY);
74
71
  if (!reply.raw.headersSent) {
75
72
  reply.raw.writeHead(500, { 'Content-Type': 'application/json' });
76
73
  reply.raw.end(JSON.stringify({
@@ -84,28 +81,13 @@ export async function mcpGatewayRoutes(fastify) {
84
81
  }
85
82
  }
86
83
  };
87
- // Handle root /mcp endpoint (GET for SSE, POST for messages)
88
- fastify.all('/mcp', {
84
+ fastify.post('/mcp', {
89
85
  bodyLimit: 10 * 1024 * 1024, // 10MB limit
90
- preHandler: (request, _reply, done) => {
91
- // Ensure we don't parse the body for SSE (GET) requests
92
- if (request.method === 'GET') {
93
- request.body = null;
94
- }
95
- done();
96
- },
97
- handler: handleMcpRequest
86
+ handler: handlePostRequest
98
87
  });
99
- // Handle any subpaths if client appends them
100
- fastify.all('/mcp/*', {
101
- bodyLimit: 10 * 1024 * 1024, // 10MB limit
102
- preHandler: (request, _reply, done) => {
103
- // Ensure we don't parse the body for SSE (GET) requests
104
- if (request.method === 'GET') {
105
- request.body = null;
106
- }
107
- done();
108
- },
109
- handler: handleMcpRequest
88
+ // Subpath fallback
89
+ fastify.post('/mcp/*', {
90
+ bodyLimit: 10 * 1024 * 1024,
91
+ handler: handlePostRequest
110
92
  });
111
93
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hub-tools.d.ts","sourceRoot":"","sources":["../../../../../src/api/web/hub-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAqB1C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,iBAuK/D"}
1
+ {"version":3,"file":"hub-tools.d.ts","sourceRoot":"","sources":["../../../../../src/api/web/hub-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAqB1C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,iBAmL/D"}
@@ -166,4 +166,15 @@ export async function webHubToolsRoutes(fastify) {
166
166
  const allTools = await hubToolsService.listAllTools();
167
167
  return allTools;
168
168
  });
169
+ // GET /web/hub-tools/search - Search tools across all connected servers
170
+ fastify.get('/web/hub-tools/search', async (request, reply) => {
171
+ const { q } = request.query;
172
+ if (!q || typeof q !== 'string' || q.trim().length === 0) {
173
+ return reply.code(400).send({
174
+ error: 'Bad Request',
175
+ message: 'Query parameter "q" is required'
176
+ });
177
+ }
178
+ return hubToolsService.searchTools(q.trim());
179
+ });
169
180
  }
@@ -1,6 +1,6 @@
1
1
  import { hubManager } from '../../services/hub-manager.service.js';
2
- import { mcpConnectionManager } from '../../services/mcp-connection-manager.js';
3
- import { logger } from '../../utils/logger.js';
2
+ import { mcpConnectionManager } from '../../services/connection/index.js';
3
+ import { logger } from '../../utils/logger/index.js';
4
4
  import { LOG_MODULES } from '../../utils/logger/log-modules.js';
5
5
  import { resolveInstanceConfig } from '../../config/config-migrator.js';
6
6
  /**
@@ -1,23 +1,9 @@
1
1
  import { FastifyInstance } from 'fastify';
2
- import type { ServerConfig } from '../../config/config-manager.js';
3
- /**
4
- * Filters tools by aggregatedTools configuration.
5
- * Only includes tools from servers that have aggregatedTools configured
6
- * AND the tool is in that list.
7
- */
8
- export declare function filterByAggregatedTools(tools: Array<{
9
- name: string;
10
- description?: string;
11
- serverName: string;
12
- }>, getServerConfig: (name: string) => ServerConfig | undefined): Array<{
13
- name: string;
14
- description?: string;
15
- serverName: string;
16
- }>;
17
2
  /**
18
3
  * Tool Search API Routes
19
4
  *
20
- * Provides simple string-based search for discovering tools across all connected MCP servers.
5
+ * Returns aggregated tools from the gateway cache with wrapped inputSchema
6
+ * (including serverName, toolName, toolArgs, and requestOptions fields).
21
7
  * Uses straightforward string matching on tool name and description.
22
8
  *
23
9
  * @param fastify - The Fastify instance to register routes on
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../../src/api/web/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,EACxE,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,GAC1D,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAQnE;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,iBA6C7D"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../../src/api/web/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG1C;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,iBAoD7D"}
@@ -1,25 +1,9 @@
1
- import { mcpConnectionManager } from '../../services/mcp-connection-manager.js';
2
- import { hubManager } from '../../services/hub-manager.service.js';
3
- /**
4
- * Filters tools by aggregatedTools configuration.
5
- * Only includes tools from servers that have aggregatedTools configured
6
- * AND the tool is in that list.
7
- */
8
- export function filterByAggregatedTools(tools, getServerConfig) {
9
- return tools.filter((tool) => {
10
- const serverConfig = getServerConfig(tool.serverName);
11
- if (!serverConfig)
12
- return false;
13
- const aggregatedTools = serverConfig.template?.aggregatedTools;
14
- if (!aggregatedTools || aggregatedTools.length === 0)
15
- return false;
16
- return aggregatedTools.includes(tool.name);
17
- });
18
- }
1
+ import { MCP_HUB_LITE_SERVER } from '../../../shared/models/constants.js';
19
2
  /**
20
3
  * Tool Search API Routes
21
4
  *
22
- * Provides simple string-based search for discovering tools across all connected MCP servers.
5
+ * Returns aggregated tools from the gateway cache with wrapped inputSchema
6
+ * (including serverName, toolName, toolArgs, and requestOptions fields).
23
7
  * Uses straightforward string matching on tool name and description.
24
8
  *
25
9
  * @param fastify - The Fastify instance to register routes on
@@ -29,28 +13,36 @@ export async function webSearchRoutes(fastify) {
29
13
  // GET /web/search - Search for tools with simple string matching
30
14
  fastify.get('/web/search', async (request) => {
31
15
  const { q, limit = 50 } = request.query;
32
- const allTools = mcpConnectionManager.getAllTools();
16
+ // Dynamic import to avoid circular dependency at module init time
17
+ const { getExternalGatewayTools } = await import('../../services/gateway/tool-list-generator.js');
18
+ const gatewayTools = getExternalGatewayTools();
33
19
  const query = q?.toLowerCase() || '';
34
20
  // Filter by search query
35
- const queryMatched = allTools.filter((tool) => {
21
+ const queryMatched = gatewayTools.filter((tool) => {
36
22
  if (!query)
37
23
  return true;
24
+ // Match against tool name (gateway-resolved name)
38
25
  const nameMatch = tool.name.toLowerCase().includes(query);
26
+ // Match against description (contains "[From serverName] original description")
39
27
  const descMatch = tool.description?.toLowerCase().includes(query);
40
28
  return nameMatch || descMatch;
41
29
  });
42
- // Filter by aggregatedTools only include tools from servers that have
43
- // aggregatedTools configured AND the tool is in that list
44
- const filtered = filterByAggregatedTools(queryMatched, (name) => hubManager.getServerByName(name));
45
- const results = filtered.slice(0, limit);
46
- return {
47
- results: results.map((tool) => ({
30
+ const mappedResults = queryMatched.map((tool) => {
31
+ // Extract serverName from description format "[From serverName] ..."
32
+ const descMatch = tool.description?.match(/^\[From\s+(.+?)\]/);
33
+ const serverName = descMatch ? descMatch[1] : MCP_HUB_LITE_SERVER;
34
+ return {
48
35
  name: tool.name,
49
36
  description: tool.description,
50
- serverName: tool.serverName
51
- })),
37
+ serverName,
38
+ inputSchema: tool.inputSchema
39
+ };
40
+ });
41
+ const results = mappedResults.slice(0, limit);
42
+ return {
43
+ results,
52
44
  pagination: {
53
- total: filtered.length,
45
+ total: mappedResults.length,
54
46
  limit,
55
47
  returned: results.length
56
48
  },
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { hubManager } from '../../services/hub-manager.service.js';
3
3
  import { ServerTemplateSchema, ServerInstanceUpdateSchema } from '../../config/config.schema.js';
4
- import { logger } from '../../utils/logger.js';
4
+ import { logger } from '../../utils/logger/index.js';
5
5
  import { LOG_MODULES } from '../../utils/logger/log-modules.js';
6
6
  import { stringifyForLogging, getApiDebugSetting } from '../../utils/json-utils.js';
7
7
  /**
@@ -27,7 +27,7 @@
27
27
  import fastifyWebSocket from '@fastify/websocket';
28
28
  import { WebSocketHandler } from './ws-handler.js';
29
29
  import { eventBus } from '../../services/event-bus.service.js';
30
- import { logger, LOG_MODULES } from '../../utils/logger.js';
30
+ import { logger, LOG_MODULES } from '../../utils/logger/index.js';
31
31
  export async function webSocketRoutes(fastify) {
32
32
  // Register WebSocket plugin
33
33
  await fastify.register(fastifyWebSocket);
@@ -26,7 +26,7 @@
26
26
  import { WebSocket } from 'ws';
27
27
  import { EventTypes } from '../../services/event-bus.service.js';
28
28
  import { logStorage } from '../../services/log-storage.service.js';
29
- import { logger, LOG_MODULES } from '../../utils/logger.js';
29
+ import { logger, LOG_MODULES } from '../../utils/logger/index.js';
30
30
  import { WEB_SOCKET_EVENT_TYPES } from '../../../shared/types/websocket.types.js';
31
31
  // Event type mapping
32
32
  const eventTypeMap = {
@@ -5,7 +5,7 @@ import { fileURLToPath } from 'url';
5
5
  import { configManager } from './config/config-manager.js';
6
6
  import { setJsonPrettyConfigGetter } from './utils/json-utils.js';
7
7
  import { isIpAllowed } from './utils/network-security.js';
8
- import { logger, LOG_MODULES } from './utils/logger.js';
8
+ import { logger, LOG_MODULES } from './utils/logger/index.js';
9
9
  // MCP Protocol Routes
10
10
  import { mcpGatewayRoutes } from './api/mcp/gateway.js';
11
11
  // Web API Routes
@@ -3,18 +3,18 @@ import { Command } from 'commander';
3
3
  * CLI command for dynamic MCP server tool operations via API.
4
4
  *
5
5
  * This command provides a simplified CLI interface for interacting with MCP server tools,
6
- * supporting five actions: list-servers, list-tools, list-tags, get-tool, and call-tool. It wraps
6
+ * supporting six actions: list-servers, list-tools, list-tags, get-tool, call-tool, and search-tools. It wraps
7
7
  * the HTTP API endpoints and requires the MCP Hub Lite server to be running.
8
8
  *
9
9
  * ## Command Format
10
10
  *
11
11
  * ```
12
- * mcp-hub-lite tool-use <action> [--server <serverName>] [--tool <toolName>] [--args <json>] [--tags <json>]
12
+ * mcp-hub-lite tool-use <action> [query] [--server <serverName>] [--tool <toolName>] [--args <json>] [--tags <json>]
13
13
  * ```
14
14
  *
15
15
  * Or via npm:
16
16
  * ```
17
- * npm run tool-use -- <action> [--server <serverName>] [--tool <toolName>] [--args <json>] [--tags <json>]
17
+ * npm run tool-use -- <action> [query] [--server <serverName>] [--tool <toolName>] [--args <json>] [--tags <json>]
18
18
  * ```
19
19
  *
20
20
  * ## Supported Actions
@@ -24,6 +24,7 @@ import { Command } from 'commander';
24
24
  * - `list-tags` - List all instance tags for a specific MCP server
25
25
  * - `get-tool` - Get complete schema for a specific tool (requires --tool)
26
26
  * - `call-tool` - Call a tool on the specified server (requires --tool)
27
+ * - `search-tools` - Search tools across all connected servers by name or description (requires query)
27
28
  *
28
29
  * ## Options
29
30
  *
@@ -70,6 +71,9 @@ import { Command } from 'commander';
70
71
  *
71
72
  * # Multi-instance server with tags
72
73
  * mcp-hub-lite tool-use call-tool --tool search --server baidu-search --args '{"query":"test"}' --tags '{"env":"prod"}'
74
+ *
75
+ * # Search tools across all connected servers
76
+ * mcp-hub-lite tool-use search-tools "weather"
73
77
  * ```
74
78
  *
75
79
  * ### JSON 合并形式 (JSON Merge):
@@ -83,6 +87,9 @@ import { Command } from 'commander';
83
87
  *
84
88
  * # Equivalent to
85
89
  * mcp-hub-lite tool-use call-tool --server baidu-search --tool search --args '{"query":"天气"}'
90
+ *
91
+ * # Search tools (JSON merge form)
92
+ * mcp-hub-lite tool-use search-tools --args '{"query":"weather"}'
86
93
  * ```
87
94
  *
88
95
  * ## Error Handling
@@ -1 +1 @@
1
- {"version":3,"file":"tool-use.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/tool-use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+FG;AACH,eAAO,MAAM,cAAc,SAkNvB,CAAC"}
1
+ {"version":3,"file":"tool-use.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/tool-use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsGG;AACH,eAAO,MAAM,cAAc,SA2PvB,CAAC"}
@@ -4,18 +4,18 @@ import { getServerStatus } from '../server.js';
4
4
  * CLI command for dynamic MCP server tool operations via API.
5
5
  *
6
6
  * This command provides a simplified CLI interface for interacting with MCP server tools,
7
- * supporting five actions: list-servers, list-tools, list-tags, get-tool, and call-tool. It wraps
7
+ * supporting six actions: list-servers, list-tools, list-tags, get-tool, call-tool, and search-tools. It wraps
8
8
  * the HTTP API endpoints and requires the MCP Hub Lite server to be running.
9
9
  *
10
10
  * ## Command Format
11
11
  *
12
12
  * ```
13
- * mcp-hub-lite tool-use <action> [--server <serverName>] [--tool <toolName>] [--args <json>] [--tags <json>]
13
+ * mcp-hub-lite tool-use <action> [query] [--server <serverName>] [--tool <toolName>] [--args <json>] [--tags <json>]
14
14
  * ```
15
15
  *
16
16
  * Or via npm:
17
17
  * ```
18
- * npm run tool-use -- <action> [--server <serverName>] [--tool <toolName>] [--args <json>] [--tags <json>]
18
+ * npm run tool-use -- <action> [query] [--server <serverName>] [--tool <toolName>] [--args <json>] [--tags <json>]
19
19
  * ```
20
20
  *
21
21
  * ## Supported Actions
@@ -25,6 +25,7 @@ import { getServerStatus } from '../server.js';
25
25
  * - `list-tags` - List all instance tags for a specific MCP server
26
26
  * - `get-tool` - Get complete schema for a specific tool (requires --tool)
27
27
  * - `call-tool` - Call a tool on the specified server (requires --tool)
28
+ * - `search-tools` - Search tools across all connected servers by name or description (requires query)
28
29
  *
29
30
  * ## Options
30
31
  *
@@ -71,6 +72,9 @@ import { getServerStatus } from '../server.js';
71
72
  *
72
73
  * # Multi-instance server with tags
73
74
  * mcp-hub-lite tool-use call-tool --tool search --server baidu-search --args '{"query":"test"}' --tags '{"env":"prod"}'
75
+ *
76
+ * # Search tools across all connected servers
77
+ * mcp-hub-lite tool-use search-tools "weather"
74
78
  * ```
75
79
  *
76
80
  * ### JSON 合并形式 (JSON Merge):
@@ -84,6 +88,9 @@ import { getServerStatus } from '../server.js';
84
88
  *
85
89
  * # Equivalent to
86
90
  * mcp-hub-lite tool-use call-tool --server baidu-search --tool search --args '{"query":"天气"}'
91
+ *
92
+ * # Search tools (JSON merge form)
93
+ * mcp-hub-lite tool-use search-tools --args '{"query":"weather"}'
87
94
  * ```
88
95
  *
89
96
  * ## Error Handling
@@ -97,37 +104,44 @@ import { getServerStatus } from '../server.js';
97
104
  * @returns {Command} The configured mcp-tool-use command instance for registration with Commander.js
98
105
  */
99
106
  export const toolUseCommand = new Command('tool-use')
100
- .description('Manage MCP server tools via API (list-servers, list-tools, list-tags, get-tool, call-tool)')
101
- .argument('<action>', 'Action: list-servers, list-tools, list-tags, get-tool, call-tool')
107
+ .description('Manage MCP server tools via API (list-servers, list-tools, list-tags, get-tool, call-tool, search-tools)')
108
+ .argument('<action>', 'Action: list-servers, list-tools, list-tags, get-tool, call-tool, search-tools')
109
+ .argument('[query]', 'Search query (required for search-tools action)')
102
110
  .option('--server <serverName>', 'Server name to target (omit or empty for system tools)')
103
111
  .option('--tool <toolName>', 'Tool name (required for get-tool and call-tool actions)')
104
112
  .option('--args <json>', 'JSON string of tool arguments, or combined JSON with server/tool/args fields')
105
113
  .option('--tags <json>', 'JSON object of instance selection tags (call-tool only, for multi-instance servers)')
106
- .addHelpText('after', `
107
-
108
- Examples:
109
- # List all connected servers
110
- mcp-hub-lite tool-use list-servers
111
-
112
- # List mcp-hub-lite system tools (default)
113
- mcp-hub-lite tool-use list-tools
114
-
115
- # List third-party server tools
116
- mcp-hub-lite tool-use list-tools --server baidu-search
117
-
118
- # List instance tags for a server
119
- mcp-hub-lite tool-use list-tags --server chrome-devtools
120
-
121
- # Get system tool schema
122
- mcp-hub-lite tool-use get-tool --tool list_tools
123
-
124
- # Call third-party server tool
125
- mcp-hub-lite tool-use call-tool --tool search --server baidu-search --args '{"query":"天气"}'
126
-
127
- # JSON merge form (all params in one JSON)
128
- mcp-hub-lite tool-use call-tool --args '{"server":"baidu-search","tool":"search","query":"天气"}'
114
+ .addHelpText('after', `
115
+
116
+ Examples:
117
+ # List all connected servers
118
+ mcp-hub-lite tool-use list-servers
119
+
120
+ # List mcp-hub-lite system tools (default)
121
+ mcp-hub-lite tool-use list-tools
122
+
123
+ # List third-party server tools
124
+ mcp-hub-lite tool-use list-tools --server baidu-search
125
+
126
+ # List instance tags for a server
127
+ mcp-hub-lite tool-use list-tags --server chrome-devtools
128
+
129
+ # Get system tool schema
130
+ mcp-hub-lite tool-use get-tool --tool list_tools
131
+
132
+ # Call third-party server tool
133
+ mcp-hub-lite tool-use call-tool --tool search --server baidu-search --args '{"query":"天气"}'
134
+
135
+ # Search tools across all connected servers
136
+ mcp-hub-lite tool-use search-tools "weather"
137
+
138
+ # Search tools (JSON merge form)
139
+ mcp-hub-lite tool-use search-tools --args '{"query":"weather"}'
140
+
141
+ # JSON merge form (all params in one JSON)
142
+ mcp-hub-lite tool-use call-tool --args '{"server":"baidu-search","tool":"search","query":"天气"}'
129
143
  `)
130
- .action(async (action, options) => {
144
+ .action(async (action, query, options) => {
131
145
  try {
132
146
  // Check if server is running and get connection info
133
147
  const status = await getServerStatus();
@@ -231,6 +245,31 @@ Examples:
231
245
  console.log(JSON.stringify(result, null, 2));
232
246
  break;
233
247
  }
248
+ case 'search-tools': {
249
+ let searchQuery = query;
250
+ if (!searchQuery && options.args) {
251
+ try {
252
+ const parsed = JSON.parse(options.args);
253
+ searchQuery = parsed.query || parsed.q || '';
254
+ }
255
+ catch {
256
+ // ignore parse errors, fall through to validation
257
+ }
258
+ }
259
+ if (!searchQuery || typeof searchQuery !== 'string' || searchQuery.trim().length === 0) {
260
+ console.error('Error: query is required for search-tools action');
261
+ console.error('Usage: mcp-hub-lite tool-use search-tools <query>');
262
+ process.exit(1);
263
+ }
264
+ const response = await fetch(`${baseUrl}/web/hub-tools/search?q=${encodeURIComponent(searchQuery.trim())}`, { headers: { Accept: 'application/json' } });
265
+ if (!response.ok) {
266
+ const error = await response.json().catch(() => ({ message: response.statusText }));
267
+ throw new Error(error.message || `API error: ${response.status}`);
268
+ }
269
+ const result = await response.json();
270
+ console.log(JSON.stringify(result, null, 2));
271
+ break;
272
+ }
234
273
  case 'call-tool': {
235
274
  if (!effectiveTool) {
236
275
  console.error('Error: toolName is required for call-tool action');
@@ -265,7 +304,7 @@ Examples:
265
304
  }
266
305
  default: {
267
306
  console.error(`Unknown action: ${action}`);
268
- console.error('Valid actions: list-servers, list-tools, list-tags, get-tool, call-tool');
307
+ console.error('Valid actions: list-servers, list-tools, list-tags, get-tool, call-tool, search-tools');
269
308
  process.exit(1);
270
309
  }
271
310
  }
@@ -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';