@loop_ouroboros/mcp-hub-lite 1.2.8 → 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 (165) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/dist/client/assets/{HomeView-CgEri1kD.js → HomeView-Bi2bkUKf.js} +1 -1
  3. package/dist/client/assets/{ResourceDetailView-DUJZbegl.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-B3O-crvv.js → ServerDashboard-BGyyZAti.js} +1 -1
  8. package/dist/client/assets/{ServerDetail-CXg8rI3q.css → ServerDetail-CPNAFBPM.css} +1 -1
  9. package/dist/client/assets/ServerDetail-bcQ8BVXR.js +2 -0
  10. package/dist/client/assets/{ServerListView-SlZN8ppC.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-D8fiOG0O.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-BYxCbA_9.js → _baseClone-B991Lvrt.js} +1 -1
  18. package/dist/client/assets/{el-form-item-ySymCPMr.js → el-form-item-DfWq_kSy.js} +1 -1
  19. package/dist/client/assets/{el-input-C85p6Nqj.js → el-input-5YzZrwir.js} +1 -1
  20. package/dist/client/assets/{el-loading-DIjKEx81.js → el-loading-DE3FcxNH.js} +1 -1
  21. package/dist/client/assets/{el-overlay-B_CxiSem.js → el-overlay-BTeTueuN.js} +1 -1
  22. package/dist/client/assets/{el-radio-group-BjkTCPRf.js → el-radio-group-Y1E2bxIW.js} +1 -1
  23. package/dist/client/assets/{el-skeleton-item-CupTKK6n.js → el-skeleton-item-DhgR50Jx.js} +1 -1
  24. package/dist/client/assets/{el-switch-BosIJ9jf.js → el-switch-fF--nMSD.js} +1 -1
  25. package/dist/client/assets/{el-tab-pane-BydxdJoc.js → el-tab-pane-rvS_KTwP.js} +1 -1
  26. package/dist/client/assets/{el-table-column-DV5TZOUW.js → el-table-column-B1O8mY47.js} +1 -1
  27. package/dist/client/assets/{index-xJkq2euk.css → index-Bzz3tYbS.css} +1 -1
  28. package/dist/client/assets/index-DkqV9kH4.js +2 -0
  29. package/dist/client/assets/{omit-DxDGRttI.js → omit-BIIebEYo.js} +1 -1
  30. package/dist/client/assets/{raf-Y9AoxecD.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 -1
  48. package/dist/server/src/api/web/search.d.ts.map +1 -1
  49. package/dist/server/src/api/web/search.js +23 -10
  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/event.model.d.ts +0 -98
  66. package/dist/server/src/models/event.model.d.ts.map +1 -1
  67. package/dist/server/src/models/event.model.js +0 -4
  68. package/dist/server/src/models/server.model.d.ts +0 -2
  69. package/dist/server/src/models/server.model.d.ts.map +1 -1
  70. package/dist/server/src/models/system-tools.constants.d.ts +8 -3
  71. package/dist/server/src/models/system-tools.constants.d.ts.map +1 -1
  72. package/dist/server/src/models/system-tools.constants.js +5 -2
  73. package/dist/server/src/pid/manager.js +1 -1
  74. package/dist/server/src/pid/types.d.ts +0 -5
  75. package/dist/server/src/pid/types.d.ts.map +1 -1
  76. package/dist/server/src/server/dev-server.js +2 -2
  77. package/dist/server/src/server/runner.js +2 -2
  78. package/dist/server/src/server/startup.js +2 -2
  79. package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -1
  80. package/dist/server/src/services/connection/connection-manager.js +16 -21
  81. package/dist/server/src/services/connection/tool-cache.d.ts.map +1 -1
  82. package/dist/server/src/services/connection/tool-cache.js +10 -8
  83. package/dist/server/src/services/event-bus.service.d.ts +3 -1
  84. package/dist/server/src/services/event-bus.service.d.ts.map +1 -1
  85. package/dist/server/src/services/event-bus.service.js +1 -0
  86. package/dist/server/src/services/gateway/gateway.service.d.ts +1 -0
  87. package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -1
  88. package/dist/server/src/services/gateway/gateway.service.js +29 -7
  89. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts +1 -2
  90. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts.map +1 -1
  91. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.js +24 -13
  92. package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts.map +1 -1
  93. package/dist/server/src/services/gateway/request-handlers/resources-handler.js +7 -3
  94. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts.map +1 -1
  95. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.js +28 -1
  96. package/dist/server/src/services/gateway/tool-list-generator.d.ts +14 -19
  97. package/dist/server/src/services/gateway/tool-list-generator.d.ts.map +1 -1
  98. package/dist/server/src/services/gateway/tool-list-generator.js +221 -80
  99. package/dist/server/src/services/hub-manager.service.d.ts.map +1 -1
  100. package/dist/server/src/services/hub-manager.service.js +21 -4
  101. package/dist/server/src/services/hub-tools/instance-selector.js +1 -1
  102. package/dist/server/src/services/hub-tools/resource-generator.d.ts +0 -21
  103. package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -1
  104. package/dist/server/src/services/hub-tools/resource-generator.js +15 -15
  105. package/dist/server/src/services/hub-tools/server-selector.js +1 -1
  106. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts +1 -0
  107. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts.map +1 -1
  108. package/dist/server/src/services/hub-tools/system-tool-definitions.js +25 -1
  109. package/dist/server/src/services/hub-tools.service.d.ts +21 -4
  110. package/dist/server/src/services/hub-tools.service.d.ts.map +1 -1
  111. package/dist/server/src/services/hub-tools.service.js +74 -13
  112. package/dist/server/src/services/log-storage.service.js +1 -1
  113. package/dist/server/src/services/system-tool-handler.d.ts.map +1 -1
  114. package/dist/server/src/services/system-tool-handler.js +10 -2
  115. package/dist/server/src/utils/error-handler.js +1 -1
  116. package/dist/server/src/utils/index.d.ts +1 -1
  117. package/dist/server/src/utils/index.d.ts.map +1 -1
  118. package/dist/server/src/utils/index.js +1 -1
  119. package/dist/server/src/utils/instance-id.d.ts +0 -8
  120. package/dist/server/src/utils/instance-id.d.ts.map +1 -1
  121. package/dist/server/src/utils/instance-id.js +1 -1
  122. package/dist/server/src/utils/json-utils.js +4 -4
  123. package/dist/server/src/utils/log-rotator.d.ts +0 -15
  124. package/dist/server/src/utils/log-rotator.d.ts.map +1 -1
  125. package/dist/server/src/utils/log-rotator.js +0 -18
  126. package/dist/server/src/utils/logger/index.d.ts +0 -22
  127. package/dist/server/src/utils/logger/index.d.ts.map +1 -1
  128. package/dist/server/src/utils/logger/index.js +0 -29
  129. package/dist/server/src/utils/port-checker.js +1 -1
  130. package/dist/server/src/utils/sort-utils.d.ts +0 -16
  131. package/dist/server/src/utils/sort-utils.d.ts.map +1 -1
  132. package/dist/server/src/utils/sort-utils.js +0 -42
  133. package/dist/server/src/utils/transports/stdio-transport.js +1 -1
  134. package/dist/server/src/utils/transports/streamable-http-transport.js +1 -1
  135. package/dist/server/src/utils/transports/transport-factory.d.ts.map +1 -1
  136. package/dist/server/src/utils/transports/transport-factory.js +26 -3
  137. package/dist/server/tests/contract/mcp-protocol/initialize.test.js +1 -1
  138. package/dist/server/tests/contract/mcp-protocol/tools-call.test.js +1 -1
  139. package/dist/server/tests/contract/mcp-protocol/tools-list.test.js +1 -1
  140. package/dist/server/tests/integration/gateway/fault-tolerance.test.js +1 -1
  141. package/dist/server/tests/integration/gateway/mcp-connection.test.js +1 -1
  142. package/dist/server/tests/types/logger-test-helpers.d.ts +1 -1
  143. package/dist/server/tests/types/logger-test-helpers.d.ts.map +1 -1
  144. package/dist/server/tests/unit/api/search.test.d.ts +2 -0
  145. package/dist/server/tests/unit/api/search.test.d.ts.map +1 -0
  146. package/dist/server/tests/unit/api/search.test.js +61 -0
  147. package/dist/server/tests/unit/config/config-migrator.test.js +45 -105
  148. package/dist/server/tests/unit/config/config-saver.test.js +1 -1
  149. package/dist/server/tests/unit/server/runner.test.js +5 -6
  150. package/dist/server/tests/unit/services/gateway-logging.test.js +1 -1
  151. package/dist/server/tests/unit/services/hub-manager-service.test.js +4 -5
  152. package/dist/server/tests/unit/services/hub-tools.service.test.js +80 -3
  153. package/dist/server/tests/unit/utils/log-rotator.test.js +1 -15
  154. package/dist/server/tests/unit/utils/logger.test.js +1 -23
  155. package/dist/server/tests/unit/utils/sort-utils.test.js +1 -92
  156. package/package.json +1 -3
  157. package/dist/client/assets/ResourceDetailView-B8Qo1_jK.js +0 -1
  158. package/dist/client/assets/ResourcesView-B12FzUdo.js +0 -1
  159. package/dist/client/assets/ResourcesView-Cc8RHtia.css +0 -1
  160. package/dist/client/assets/ServerDetail-Bz5_9yOY.js +0 -2
  161. package/dist/client/assets/ToolCallDialog-BhdPX-Kf.css +0 -1
  162. package/dist/client/assets/ToolCallDialog-DYEdhnCk.js +0 -1
  163. package/dist/client/assets/ToolsView-BreAl-yn.js +0 -1
  164. package/dist/client/assets/ToolsView-BxgXvPC3.css +0 -1
  165. package/dist/client/assets/index-kC4mf0Vo.js +0 -2
package/CHANGELOG.md CHANGED
@@ -2,6 +2,56 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [1.3.0] - 2026-05-28
6
+
7
+ ### Gateway
8
+
9
+ - add global tool cache with event-driven incremental updates and deduplicated aggregation
10
+ - replace custom SseTransport with SDK SSEClientTransport for bidirectional SSE communication
11
+ - handle gateway-wrapped inputSchema in tool call flow with nested template generation
12
+ - break circular dependency between gateway and hub-tools modules
13
+ - split GET and POST /mcp routes, return 405 on GET
14
+
15
+ ### Frontend
16
+
17
+ - forward instance tags from tool call dialog to backend with dedicated display row
18
+ - show wrapped gateway inputSchema in aggregated tool dialog
19
+ - correct resource detail navigation with hub URI and sandboxed iframe rendering
20
+ - remove URL suffix from SSE transport tag for consistency with streamable-http
21
+
22
+ ### CLI
23
+
24
+ - add search-tools action to tool-use command
25
+
26
+ ### Core
27
+
28
+ - restore PID badge display for stdio server instances
29
+ - include tag-match-unique servers in listServers output
30
+ - remove 12 dead files, migrate 47 imports to canonical modules, drop unused dependencies
31
+ - extract MCP_HUB_LITE_SERVER constant to shared models
32
+ - prepend newline to stringifyForLogging for consistent log formatting
33
+
34
+ ### Docs
35
+
36
+ - sync use guide with current system tools and error cases
37
+
38
+ ## [1.2.9] - 2026-05-27
39
+
40
+ ### Gateway
41
+
42
+ - add search_tools system tool for cross-server tool search
43
+ - filter /web/search results by each server's aggregatedTools configuration
44
+
45
+ ### Frontend
46
+
47
+ - fix aggregated tools page not displaying tools due to API response format mismatch
48
+ - add batch aggregate and clear buttons to server ToolsTab
49
+ - constrain boolean and number tag values with dedicated input controls
50
+
51
+ ### Core
52
+
53
+ - eliminate dead code across backend and frontend
54
+
5
55
  ## [1.2.8] - 2026-05-09
6
56
 
7
57
  ### Gateway
@@ -1 +1 @@
1
- import{u as s,E as t}from"./index-kC4mf0Vo.js";import{t as a,j as n,h as c,A as l,C as i,O as _,a2 as f,x as u}from"./vue-vendor-Dwcr0jep.js";const d={class:"flex w-full h-full"},m={class:"flex-1 h-full overflow-hidden bg-gray-50 dark:bg-[#0f172a] relative transition-colors duration-300"},x=a({__name:"HomeView",setup(p){const o=s();return n(()=>{o.fetchServers()}),c(()=>o.error,e=>{e&&t.error(e)}),(e,h)=>{const r=f("router-view");return u(),l("div",d,[i("main",m,[_(r)])])}}});export{x as default};
1
+ import{u as s,E as t}from"./index-DkqV9kH4.js";import{t as a,j as n,h as c,A as l,C as i,O as _,a2 as f,x as u}from"./vue-vendor-Dwcr0jep.js";const d={class:"flex w-full h-full"},m={class:"flex-1 h-full overflow-hidden bg-gray-50 dark:bg-[#0f172a] relative transition-colors duration-300"},x=a({__name:"HomeView",setup(p){const o=s();return n(()=>{o.fetchServers()}),c(()=>o.error,e=>{e&&t.error(e)}),(e,h)=>{const r=f("router-view");return u(),l("div",d,[i("main",m,[_(r)])])}}});export{x as default};
@@ -1 +1 @@
1
- .el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.resource-detail[data-v-a4e1dc63]{height:calc(100vh - 64px)}
1
+ .el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.resource-detail[data-v-f2e8d7ba]{height:calc(100vh - 64px)}
@@ -0,0 +1 @@
1
+ import{u as M,I as T,j as S,aM as $,b as O,Q as z,K as G,w as P}from"./index-DkqV9kH4.js";import{v as W}from"./el-loading-DE3FcxNH.js";import{E as F,b as H}from"./el-radio-group-Y1E2bxIW.js";import{t as K,aa as Q,c as d,r as x,j as J,A as r,C as t,O as l,G as u,u as s,$ as o,H as X,ac as Y,a0 as w,ab as Z,x as n}from"./vue-vendor-Dwcr0jep.js";import{_ as ee}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./event-BB_Ol6Sd.js";import"./omit-BIIebEYo.js";import"./_baseClone-B991Lvrt.js";const te={class:"resource-detail py-6 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto w-full h-full flex flex-col overflow-hidden"},oe={class:"flex items-center justify-between mb-6 shrink-0"},se={class:"flex items-center gap-4"},ae={class:"text-2xl font-bold text-gray-900 dark:text-white"},le={class:"flex-1 flex flex-col gap-6 overflow-hidden"},re={class:"bg-white dark:bg-[#1e1e1e] rounded-lg shadow p-6 shrink-0 border border-gray-200 dark:border-gray-700"},ne={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ce={class:"text-sm font-medium text-gray-500 dark:text-gray-400 mb-1"},ie={class:"font-mono text-sm break-all select-all"},de={class:"text-sm font-medium text-gray-500 dark:text-gray-400 mb-1"},ue={class:"font-mono text-sm"},fe={class:"md:col-span-2"},me={class:"text-sm font-medium text-gray-500 dark:text-gray-400 mb-1"},_e={class:"text-sm"},ve={class:"bg-white dark:bg-[#1e1e1e] rounded-lg shadow flex-1 flex flex-col overflow-hidden border border-gray-200 dark:border-gray-700"},pe={class:"px-6 py-4 border-b border-gray-200 dark:border-gray-700 flex justify-between items-center bg-gray-50 dark:bg-[#2d2d2d]"},be={class:"font-medium"},he={class:"flex gap-2"},ye={class:"flex-1 overflow-auto p-6 bg-gray-50 dark:bg-[#0f172a]"},ge={key:0,class:"h-full flex items-center justify-center text-gray-400"},xe={key:1,class:"h-full flex flex-col items-center justify-center text-red-500"},we={key:2,class:"h-full"},ke={key:0,class:"h-full"},je={key:0,class:"h-full flex items-center justify-center"},Re=["src"],Ce={key:1,class:"h-full"},Ve=["srcdoc"],Be={key:2,class:"bg-white dark:bg-[#1e1e1e] p-4 rounded shadow-sm h-full overflow-auto font-mono text-sm whitespace-pre-wrap"},Ue={key:1,class:"h-full"},Ee={class:"bg-gray-900 text-gray-100 p-4 rounded-lg h-full overflow-auto font-mono text-sm"},Ae=K({__name:"ResourceDetailView",setup(De){const m=Y(),E=Z(),A=M(),{t:c}=Q(),V=d(()=>{const e=m.params.name;return e.startsWith("hub://")&&e.replace("hub://","").split("/")[1]||e}),k=d(()=>m.query.uri),B=d(()=>{if(m.query.name)return m.query.name;const e=m.query.uri;if(e){const i=e.split("/"),a=i[i.length-1];if(a&&a.length>0)return a}return"Unknown Resource"}),_=d(()=>m.query.mimeType||"application/octet-stream"),h=x(!1),y=x(null),v=x(null),j=x("preview"),U=d(()=>_.value.startsWith("image/")),D=d(()=>_.value==="text/html;profile=mcp-app"),g=d(()=>{if(!v.value)return"";const e=v.value;return e&&typeof e=="object"&&"text"in e&&typeof e.text=="string"?e.text:e&&typeof e=="object"&&"blob"in e?"[Binary Data]":""}),N=d(()=>{if(!U.value||!v.value)return"";const e=v.value;return e&&typeof e=="object"&&"blob"in e&&typeof e.blob=="string"?`data:${_.value};base64,${e.blob}`:""});function q(){E.back()}async function I(){h.value=!0,y.value=null;try{v.value=await A.readResource(V.value,k.value)}catch(e){y.value=e.message||"Failed to load resource content"}finally{h.value=!1}}function L(){const e=document.createElement("a"),i=new Blob([g.value],{type:_.value}),a=v.value;if(a&&typeof a=="object"&&"blob"in a&&typeof a.blob=="string"){const f=atob(a.blob),b=new Array(f.length);for(let p=0;p<f.length;p++)b[p]=f.charCodeAt(p);const R=new Uint8Array(b),C=new Blob([R],{type:_.value});e.href=URL.createObjectURL(C)}else e.href=URL.createObjectURL(i);e.download=B.value,document.body.appendChild(e),e.click(),document.body.removeChild(e)}return J(()=>{k.value&&I()}),(e,i)=>{const a=S,f=O,b=H,R=F,C=W;return n(),r("div",te,[t("div",oe,[t("div",se,[l(a,{icon:s(T),plain:"",onClick:q,class:"shrink-0"},{default:u(()=>[w(o(s(c)("action.back")),1)]),_:1},8,["icon"]),t("h2",ae," Resource Details: "+o(B.value),1)])]),X((n(),r("div",le,[t("div",re,[t("div",ne,[t("div",null,[t("div",ce,o(s(c)("common.uri")),1),t("div",ie,o(k.value),1)]),t("div",null,[t("div",de,o(s(c)("common.mimeType")),1),t("div",ue,o(_.value),1)]),t("div",fe,[t("div",me,o(s(c)("resources.server")),1),t("div",_e,o(V.value),1)])])]),t("div",ve,[t("div",pe,[t("div",be,o(s(c)("resources.contentPreview")),1),t("div",he,[l(R,{modelValue:j.value,"onUpdate:modelValue":i[0]||(i[0]=p=>j.value=p),size:"small"},{default:u(()=>[l(b,{value:"preview"},{default:u(()=>[l(f,{class:"mr-1"},{default:u(()=>[l(s(z))]),_:1}),w(" "+o(s(c)("resources.preview")),1)]),_:1}),l(b,{value:"source"},{default:u(()=>[l(f,{class:"mr-1"},{default:u(()=>[l(s(G))]),_:1}),w(" "+o(s(c)("resources.source")),1)]),_:1})]),_:1},8,["modelValue"]),l(a,{size:"small",icon:s($),onClick:L},{default:u(()=>[w(o(s(c)("resources.download")),1)]),_:1},8,["icon"])])]),t("div",ye,[h.value?(n(),r("div",ge,o(s(c)("resources.loadingContent")),1)):y.value?(n(),r("div",xe,[l(f,{class:"text-4xl mb-2"},{default:u(()=>[l(s(P))]),_:1}),t("div",null,o(y.value),1)])):(n(),r("div",we,[j.value==="preview"?(n(),r("div",ke,[U.value?(n(),r("div",je,[t("img",{src:N.value,class:"max-w-full max-h-full object-contain rounded shadow-lg"},null,8,Re)])):D.value?(n(),r("div",Ce,[t("iframe",{srcdoc:g.value,sandbox:"allow-scripts allow-same-origin",class:"w-full h-full border-0 rounded"},null,8,Ve)])):(n(),r("div",Be,o(g.value),1))])):(n(),r("div",Ue,[t("pre",Ee,[t("code",null,o(g.value),1)])]))]))])])])),[[C,h.value]])])}}}),Oe=ee(Ae,[["__scopeId","data-v-f2e8d7ba"]]);export{Oe as default};
@@ -0,0 +1 @@
1
+ import{u as T,U as $,b as E,a1 as V,K as N,j as B}from"./index-DkqV9kH4.js";import{a as j,b as z}from"./el-table-column-B1O8mY47.js";import{E as L,a as S}from"./el-input-5YzZrwir.js";import{t as I,r as _,j as q,c as A,A as h,C as l,$ as r,O as a,u,G as o,y as O,a0 as b,ab as U,x as m}from"./vue-vendor-Dwcr0jep.js";import{_ as D}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./_baseClone-B991Lvrt.js";import"./omit-BIIebEYo.js";import"./event-BB_Ol6Sd.js";import"./raf-Cj-gATZv.js";const F={class:"resources-view py-6 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto w-full h-full flex flex-col overflow-hidden bg-gray-50 dark:bg-[#0f172a] transition-colors duration-300"},G={class:"mb-6 shrink-0"},K={class:"text-2xl font-semibold text-gray-900 dark:text-white mb-4"},M={class:"relative"},P={class:"flex-1 overflow-y-auto custom-scrollbar space-y-4 pr-2"},Q={key:0,class:"flex flex-col items-center justify-center py-12 text-gray-400"},H={class:"flex items-center gap-2"},J=["title"],W=["title"],X=I({__name:"ResourcesView",setup(Y){const v=U(),y=T(),c=_(""),d=_({});q(async()=>{await w()});async function w(){try{d.value=await y.fetchAllResources()}catch(e){console.error("Failed to load resources:",e)}}const p=A(()=>{const e=[];for(const[,n]of Object.entries(d.value))e.push(...n);if(!c.value)return e;const s=c.value.toLowerCase();return e.filter(n=>n.name.toLowerCase().includes(s)||n.uri.toLowerCase().includes(s))});function x(e){const s=e.replace("hub://","").split("/");return s.length>=2?s[1]??"":""}function g(e){const s=e.serverName||x(e.uri);v.push({name:"resource-detail",params:{name:s},query:{uri:e.uri,name:e.name,mimeType:e.mimeType}})}return(e,s)=>{const n=L,f=E,i=z,k=S,C=B,R=j;return m(),h("div",F,[l("div",G,[l("h2",K,r(e.$t("resources.title")),1),l("div",M,[a(n,{modelValue:c.value,"onUpdate:modelValue":s[0]||(s[0]=t=>c.value=t),placeholder:e.$t("resources.searchPlaceholder"),class:"w-full",size:"large","prefix-icon":u($),clearable:""},null,8,["modelValue","placeholder","prefix-icon"])])]),l("div",P,[p.value.length===0?(m(),h("div",Q,[a(f,{size:48,class:"mb-4 opacity-50"},{default:o(()=>[a(u(V))]),_:1}),l("p",null,r(e.$t("resources.noResources")),1)])):(m(),O(R,{key:1,data:p.value,style:{width:"100%"},class:"custom-table"},{default:o(()=>[a(i,{prop:"name",label:e.$t("common.name"),"min-width":"350"},{default:o(({row:t})=>[l("div",H,[a(f,null,{default:o(()=>[a(u(N))]),_:1}),l("span",{class:"font-medium truncate",title:t.name},r(t.name),9,J)])]),_:1},8,["label"]),a(i,{prop:"uri",label:e.$t("common.uri"),"min-width":"350"},{default:o(({row:t})=>[l("span",{class:"truncate block",title:t.uri},r(t.uri),9,W)]),_:1},8,["label"]),a(i,{prop:"mimeType",label:e.$t("common.mimeType"),width:"180"},{default:o(({row:t})=>[a(k,{size:"small",type:"success",effect:"plain"},{default:o(()=>[b(r(t.mimeType||"unknown"),1)]),_:2},1024)]),_:1},8,["label"]),a(i,{label:"",width:"100",align:"right"},{default:o(({row:t})=>[a(C,{size:"small",plain:"",onClick:Z=>g(t)},{default:o(()=>[b(r(e.$t("action.view")),1)]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]))])])}}}),ie=D(X,[["__scopeId","data-v-f45ae935"]]);export{ie as default};
@@ -0,0 +1 @@
1
+ .custom-scrollbar[data-v-f45ae935]::-webkit-scrollbar{width:6px}.custom-scrollbar[data-v-f45ae935]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar[data-v-f45ae935]::-webkit-scrollbar-thumb{background-color:#9ca3af80;border-radius:3px}.dark .custom-scrollbar[data-v-f45ae935]::-webkit-scrollbar-thumb{background-color:#4b556380}
@@ -1 +1 @@
1
- import{u as y,a as $,i as E,b as D,c as g,w as f,v as I}from"./index-kC4mf0Vo.js";import{E as N,a as A}from"./el-skeleton-item-CupTKK6n.js";import{f as V}from"./ServerStatusTags.vue_vue_type_script_setup_true_lang-DmGg4uuV.js";import{t as v,r as B,j as z,h as p,c as L,A as n,C as t,$ as s,u as d,O as l,G as h,P as T,ai as j,V as O,x as a,y as b,U as F,J as G,n as H}from"./vue-vendor-Dwcr0jep.js";import{_ as J}from"./_plugin-vue_export-helper-DlAUqK2U.js";import M from"./ServerDetail-Bz5_9yOY.js";import"./el-tab-pane-BydxdJoc.js";import"./raf-Y9AoxecD.js";import"./el-overlay-B_CxiSem.js";import"./event-BB_Ol6Sd.js";import"./el-input-C85p6Nqj.js";import"./omit-DxDGRttI.js";import"./_baseClone-BYxCbA_9.js";import"./el-switch-BosIJ9jf.js";import"./el-radio-group-BjkTCPRf.js";import"./el-table-column-DV5TZOUW.js";import"./ToolCallDialog-DYEdhnCk.js";const P={class:"dashboard py-6 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto w-full h-full flex flex-col overflow-hidden transition-colors duration-300"},U={class:"text-2xl font-semibold text-gray-900 dark:text-white mb-6 shrink-0"},W={key:0,class:"grid grid-cols-3 gap-6 mb-8 shrink-0"},q={class:"p-6 rounded-xl border border-gray-200 dark:border-gray-700 bg-white dark:bg-[#1e293b] h-32"},K={key:1,class:"grid grid-cols-3 gap-6 mb-8 shrink-0"},Q={class:"stat-card bg-white dark:bg-[#1e293b] p-6 rounded-xl border border-gray-200 dark:border-gray-700 shadow-sm transition-colors duration-300"},R={class:"text-gray-500 dark:text-gray-400 text-sm mb-2"},X={class:"text-4xl font-bold text-gray-900 dark:text-white"},Y={class:"stat-card bg-white dark:bg-[#1e293b] p-6 rounded-xl border border-gray-200 dark:border-gray-700 shadow-sm transition-colors duration-300"},Z={class:"text-gray-500 dark:text-gray-400 text-sm mb-2"},tt={class:"text-4xl font-bold text-gray-900 dark:text-white"},et={class:"stat-card bg-white dark:bg-[#1e293b] p-6 rounded-xl border border-gray-200 dark:border-gray-700 shadow-sm transition-colors duration-300"},rt={class:"text-gray-500 dark:text-gray-400 text-sm mb-2"},st={class:"text-4xl font-bold text-red-500"},at={class:"activity-section bg-white dark:bg-[#1e293b] rounded-xl border border-gray-200 dark:border-gray-700 flex flex-col flex-1 min-h-0 shadow-sm transition-colors duration-300"},ot={class:"p-4 border-b border-gray-200 dark:border-gray-700"},it={class:"text-lg font-medium text-gray-900 dark:text-white"},nt={class:"flex items-center gap-2 mb-1"},dt={class:"font-medium text-gray-700 dark:text-gray-200"},lt={class:"text-xs text-gray-400 ml-auto"},ct={class:"text-sm text-gray-600 dark:text-gray-400 font-mono pl-6 break-words"},mt={key:0,class:"flex flex-col items-center justify-center h-full text-gray-400 dark:text-gray-500"},ut=v({__name:"DashboardView",setup(k){const e=y();$();const c=B(null);z(()=>{!e.loading&&e.servers.length>0&&e.fetchAllLogs()}),p(()=>e.loading,r=>{!r&&e.servers.length>0&&e.fetchAllLogs()});const u=L(()=>{const r=[];return e.servers.forEach(o=>{o.logs.forEach((i,_)=>{r.push({serverName:o.name,serverStatus:o.status,message:i.message,time:V(i.timestamp),timestamp:i.timestamp,originalIndex:_})})}),r.sort((o,i)=>o.timestamp-i.timestamp)});p(()=>u.value.length,()=>{H(()=>{c.value&&(c.value.scrollTop=c.value.scrollHeight)})});function w(r){switch(r){case"online":return I;case"offline":return g;case"stopping":return g;case"error":return f;case"starting":return f;default:return g}}function S(r){switch(r){case"online":return"text-green-500";case"offline":return"text-gray-400";case"stopping":return"text-gray-400";case"error":return"text-yellow-500";case"starting":return"text-yellow-500";default:return"text-gray-400"}}return(r,o)=>{const i=N,_=A,x=D;return a(),n("div",P,[t("h2",U,s(r.$t("dashboard.title")),1),d(e).loading&&d(e).servers.length===0?(a(),n("div",W,[l(_,{animated:"",count:3,class:"w-full h-full"},{template:h(()=>[t("div",q,[l(i,{variant:"text",style:{width:"30%"},class:"mb-2"}),l(i,{variant:"h1",style:{width:"50%"}})])]),_:1})])):(a(),n("div",K,[t("div",Q,[t("div",R,s(r.$t("dashboard.totalServers")),1),t("div",X,s(d(e).stats.total),1)]),t("div",Y,[t("div",Z,s(r.$t("dashboard.running")),1),t("div",tt,s(d(e).stats.online),1)]),t("div",et,[t("div",rt,s(r.$t("dashboard.errors")),1),t("div",st,s(d(e).stats.errors),1)])])),t("div",at,[t("div",ot,[t("h3",it,s(r.$t("dashboard.recentActivity")),1)]),t("div",{ref_key:"activityContainer",ref:c,class:"p-4 overflow-y-auto flex-1 custom-scrollbar"},[(a(!0),n(T,null,j(u.value,(m,C)=>(a(),n("div",{key:C,class:"activity-item mb-4 pb-4 border-b border-gray-100 dark:border-gray-700/50 last:border-0"},[t("div",nt,[l(x,{size:16,class:G(S(m.serverStatus))},{default:h(()=>[(a(),b(F(w(m.serverStatus))))]),_:2},1032,["class"]),t("span",dt,s(m.serverName),1),t("span",lt,s(m.time),1)]),t("div",ct,s(m.message),1)]))),128)),u.value.length===0?(a(),n("div",mt,[l(x,{size:40,class:"mb-2 opacity-50"},{default:h(()=>[l(d(E))]),_:1}),o[0]||(o[0]=t("span",null,"No recent activity",-1))])):O("",!0)],512)])])}}}),_t=J(ut,[["__scopeId","data-v-37e9c2c3"]]),gt={class:"h-full w-full"},Vt=v({__name:"ServerDashboard",setup(k){const e=y();return(c,u)=>(a(),n("div",gt,[d(e).selectedServerId?(a(),b(M,{key:1})):(a(),b(_t,{key:0}))]))}});export{Vt as default};
1
+ import{u as y,a as $,i as E,b as D,c as g,w as f,v as I}from"./index-DkqV9kH4.js";import{E as N,a as A}from"./el-skeleton-item-DhgR50Jx.js";import{f as V}from"./ServerStatusTags.vue_vue_type_script_setup_true_lang-C8gQlxGE.js";import{t as v,r as B,j as z,h as p,c as L,A as n,C as t,$ as s,u as d,O as l,G as h,P as T,ai as j,V as O,x as a,y as b,U as F,J as G,n as H}from"./vue-vendor-Dwcr0jep.js";import{_ as J}from"./_plugin-vue_export-helper-DlAUqK2U.js";import M from"./ServerDetail-bcQ8BVXR.js";import"./el-tab-pane-rvS_KTwP.js";import"./raf-Cj-gATZv.js";import"./el-overlay-BTeTueuN.js";import"./event-BB_Ol6Sd.js";import"./el-input-5YzZrwir.js";import"./omit-BIIebEYo.js";import"./_baseClone-B991Lvrt.js";import"./el-switch-fF--nMSD.js";import"./el-radio-group-Y1E2bxIW.js";import"./el-table-column-B1O8mY47.js";import"./ToolCallDialog-DEapCO06.js";const P={class:"dashboard py-6 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto w-full h-full flex flex-col overflow-hidden transition-colors duration-300"},U={class:"text-2xl font-semibold text-gray-900 dark:text-white mb-6 shrink-0"},W={key:0,class:"grid grid-cols-3 gap-6 mb-8 shrink-0"},q={class:"p-6 rounded-xl border border-gray-200 dark:border-gray-700 bg-white dark:bg-[#1e293b] h-32"},K={key:1,class:"grid grid-cols-3 gap-6 mb-8 shrink-0"},Q={class:"stat-card bg-white dark:bg-[#1e293b] p-6 rounded-xl border border-gray-200 dark:border-gray-700 shadow-sm transition-colors duration-300"},R={class:"text-gray-500 dark:text-gray-400 text-sm mb-2"},X={class:"text-4xl font-bold text-gray-900 dark:text-white"},Y={class:"stat-card bg-white dark:bg-[#1e293b] p-6 rounded-xl border border-gray-200 dark:border-gray-700 shadow-sm transition-colors duration-300"},Z={class:"text-gray-500 dark:text-gray-400 text-sm mb-2"},tt={class:"text-4xl font-bold text-gray-900 dark:text-white"},et={class:"stat-card bg-white dark:bg-[#1e293b] p-6 rounded-xl border border-gray-200 dark:border-gray-700 shadow-sm transition-colors duration-300"},rt={class:"text-gray-500 dark:text-gray-400 text-sm mb-2"},st={class:"text-4xl font-bold text-red-500"},at={class:"activity-section bg-white dark:bg-[#1e293b] rounded-xl border border-gray-200 dark:border-gray-700 flex flex-col flex-1 min-h-0 shadow-sm transition-colors duration-300"},ot={class:"p-4 border-b border-gray-200 dark:border-gray-700"},it={class:"text-lg font-medium text-gray-900 dark:text-white"},nt={class:"flex items-center gap-2 mb-1"},dt={class:"font-medium text-gray-700 dark:text-gray-200"},lt={class:"text-xs text-gray-400 ml-auto"},ct={class:"text-sm text-gray-600 dark:text-gray-400 font-mono pl-6 break-words"},mt={key:0,class:"flex flex-col items-center justify-center h-full text-gray-400 dark:text-gray-500"},ut=v({__name:"DashboardView",setup(k){const e=y();$();const c=B(null);z(()=>{!e.loading&&e.servers.length>0&&e.fetchAllLogs()}),p(()=>e.loading,r=>{!r&&e.servers.length>0&&e.fetchAllLogs()});const u=L(()=>{const r=[];return e.servers.forEach(o=>{o.logs.forEach((i,_)=>{r.push({serverName:o.name,serverStatus:o.status,message:i.message,time:V(i.timestamp),timestamp:i.timestamp,originalIndex:_})})}),r.sort((o,i)=>o.timestamp-i.timestamp)});p(()=>u.value.length,()=>{H(()=>{c.value&&(c.value.scrollTop=c.value.scrollHeight)})});function w(r){switch(r){case"online":return I;case"offline":return g;case"stopping":return g;case"error":return f;case"starting":return f;default:return g}}function S(r){switch(r){case"online":return"text-green-500";case"offline":return"text-gray-400";case"stopping":return"text-gray-400";case"error":return"text-yellow-500";case"starting":return"text-yellow-500";default:return"text-gray-400"}}return(r,o)=>{const i=N,_=A,x=D;return a(),n("div",P,[t("h2",U,s(r.$t("dashboard.title")),1),d(e).loading&&d(e).servers.length===0?(a(),n("div",W,[l(_,{animated:"",count:3,class:"w-full h-full"},{template:h(()=>[t("div",q,[l(i,{variant:"text",style:{width:"30%"},class:"mb-2"}),l(i,{variant:"h1",style:{width:"50%"}})])]),_:1})])):(a(),n("div",K,[t("div",Q,[t("div",R,s(r.$t("dashboard.totalServers")),1),t("div",X,s(d(e).stats.total),1)]),t("div",Y,[t("div",Z,s(r.$t("dashboard.running")),1),t("div",tt,s(d(e).stats.online),1)]),t("div",et,[t("div",rt,s(r.$t("dashboard.errors")),1),t("div",st,s(d(e).stats.errors),1)])])),t("div",at,[t("div",ot,[t("h3",it,s(r.$t("dashboard.recentActivity")),1)]),t("div",{ref_key:"activityContainer",ref:c,class:"p-4 overflow-y-auto flex-1 custom-scrollbar"},[(a(!0),n(T,null,j(u.value,(m,C)=>(a(),n("div",{key:C,class:"activity-item mb-4 pb-4 border-b border-gray-100 dark:border-gray-700/50 last:border-0"},[t("div",nt,[l(x,{size:16,class:G(S(m.serverStatus))},{default:h(()=>[(a(),b(F(w(m.serverStatus))))]),_:2},1032,["class"]),t("span",dt,s(m.serverName),1),t("span",lt,s(m.time),1)]),t("div",ct,s(m.message),1)]))),128)),u.value.length===0?(a(),n("div",mt,[l(x,{size:40,class:"mb-2 opacity-50"},{default:h(()=>[l(d(E))]),_:1}),o[0]||(o[0]=t("span",null,"No recent activity",-1))])):O("",!0)],512)])])}}}),_t=J(ut,[["__scopeId","data-v-37e9c2c3"]]),gt={class:"h-full w-full"},Vt=v({__name:"ServerDashboard",setup(k){const e=y();return(c,u)=>(a(),n("div",gt,[d(e).selectedServerId?(a(),b(M,{key:1})):(a(),b(_t,{key:0}))]))}});export{Vt as default};
@@ -1 +1 @@
1
- .config-template-form[data-v-d857c695]{display:flex;height:100%;width:100%;flex-direction:column}.instance-card-list[data-v-24e76b86]{width:100%}.template-card[data-v-24e76b86]{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.template-card[data-v-24e76b86]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.template-card[data-v-24e76b86]:hover{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.template-card[data-v-24e76b86]:hover:is(.dark *){background-color:#581c871a}.instance-card[data-v-24e76b86]{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.instance-card[data-v-24e76b86]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.instance-card .flex.items-center.gap-3[data-v-24e76b86]{flex-wrap:nowrap}.instance-card .flex.items-center.gap-2[data-v-24e76b86]{min-width:0}.instance-card .font-mono.text-sm[data-v-24e76b86]{white-space:nowrap}.instance-card .font-medium[data-v-24e76b86]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.instance-card[data-v-24e76b86]:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.instance-card[data-v-24e76b86]:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.merged-config-dialog[data-v-84fcda8e] .el-dialog__body{padding:1rem 1.5rem}.preview-content[data-v-84fcda8e]{width:100%}.config-display[data-v-84fcda8e]{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.config-display[data-v-84fcda8e]:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.config-display[data-v-84fcda8e]{max-height:60vh;overflow:auto}.config-json[data-v-84fcda8e]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.config-json[data-v-84fcda8e]:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.config-json[data-v-84fcda8e]{white-space:pre-wrap;word-break:break-all;margin:0}.instance-config[data-v-64c5af9a]{display:flex;height:100%;width:100%;flex-direction:column}.config-form[data-v-64c5af9a]{width:100%;flex:1 1 0%;overflow-y:auto}.custom-tabs[data-v-3cac3428] .el-tabs__header{margin-bottom:0}.custom-tabs[data-v-3cac3428] .el-tabs__content{flex:1;overflow:hidden;padding-top:1rem}.custom-tabs-label[data-v-3cac3428]{display:inline-flex;align-items:center;gap:4px}.instance-detail-tabs[data-v-3cac3428] .el-tabs__header{margin-bottom:1rem}.instance-detail-tabs[data-v-3cac3428] .el-tabs__content{flex:1;overflow:hidden;display:flex;flex-direction:column}.instance-detail-tabs[data-v-3cac3428] .el-tab-pane{height:100%;display:flex;flex-direction:column}
1
+ .config-template-form[data-v-d857c695]{display:flex;height:100%;width:100%;flex-direction:column}.instance-card-list[data-v-24e76b86]{width:100%}.template-card[data-v-24e76b86]{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.template-card[data-v-24e76b86]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.template-card[data-v-24e76b86]:hover{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.template-card[data-v-24e76b86]:hover:is(.dark *){background-color:#581c871a}.instance-card[data-v-24e76b86]{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.instance-card[data-v-24e76b86]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.instance-card .flex.items-center.gap-3[data-v-24e76b86]{flex-wrap:nowrap}.instance-card .flex.items-center.gap-2[data-v-24e76b86]{min-width:0}.instance-card .font-mono.text-sm[data-v-24e76b86]{white-space:nowrap}.instance-card .font-medium[data-v-24e76b86]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.instance-card[data-v-24e76b86]:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.instance-card[data-v-24e76b86]:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.merged-config-dialog[data-v-84fcda8e] .el-dialog__body{padding:1rem 1.5rem}.preview-content[data-v-84fcda8e]{width:100%}.config-display[data-v-84fcda8e]{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.config-display[data-v-84fcda8e]:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.config-display[data-v-84fcda8e]{max-height:60vh;overflow:auto}.config-json[data-v-84fcda8e]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.config-json[data-v-84fcda8e]:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.config-json[data-v-84fcda8e]{white-space:pre-wrap;word-break:break-all;margin:0}.instance-config[data-v-e7b48052]{display:flex;height:100%;width:100%;flex-direction:column}.config-form[data-v-e7b48052]{width:100%;flex:1 1 0%;overflow-y:auto}.custom-tabs[data-v-fe4c54f6] .el-tabs__header{margin-bottom:0}.custom-tabs[data-v-fe4c54f6] .el-tabs__content{flex:1;overflow:hidden;padding-top:1rem}.custom-tabs-label[data-v-fe4c54f6]{display:inline-flex;align-items:center;gap:4px}.instance-detail-tabs[data-v-fe4c54f6] .el-tabs__header{margin-bottom:1rem}.instance-detail-tabs[data-v-fe4c54f6] .el-tabs__content{flex:1;overflow:hidden;display:flex;flex-direction:column}.instance-detail-tabs[data-v-fe4c54f6] .el-tab-pane{height:100%;display:flex;flex-direction:column}
@@ -0,0 +1,2 @@
1
+ import{q as We,x as ct,y as dt,_ as mt,T as vt,b as Se,z as ft,j as me,A as pt,B as Ge,C as Qe,D as Ze,F as gt,G as Xe,H as ht,I as yt,v as at,r as Oe,n as bt,k as ue,p as fe,J as _t,K as $t,E as V,L as Ct,M as wt,N as xt,O as kt,P as St,Q as Vt,u as Me,a as It,R as Tt,s as Ye,S as Dt,t as Et,o as At}from"./index-DkqV9kH4.js";import{E as Ut,a as Bt}from"./el-tab-pane-rvS_KTwP.js";import{n as be,a2 as Ce,x as u,y as H,G as v,H as Ue,O as s,C as n,J as X,I as xe,K as Ke,A as b,U as we,V as P,$ as o,aj as _e,v as Rt,L as Be,a0 as D,M as zt,t as ce,c as q,r as M,Q as Nt,ak as ze,h as le,j as jt,F as Ot,al as Mt,p as Ne,a as Pe,a7 as lt,a8 as nt,l as et,d as st,aa as ve,u as _,P as Y,ai as ae,Z as Pt,ac as Lt,ab as Le,am as Ft,k as Re}from"./vue-vendor-Dwcr0jep.js";import{E as Ve,a as Fe}from"./el-input-5YzZrwir.js";import{_ as Ht,a as ot}from"./ServerStatusTags.vue_vue_type_script_setup_true_lang-C8gQlxGE.js";import{c as Jt,u as qt,d as Wt,e as Gt,a as He,b as Je,E as qe}from"./el-overlay-BTeTueuN.js";import{i as Qt,E as rt,a as it}from"./el-switch-fF--nMSD.js";import{E as Zt,a as Xt}from"./el-radio-group-Y1E2bxIW.js";import{_ as Ie}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{E as Yt,a as Kt,b as ea}from"./el-table-column-B1O8mY47.js";import{T as ta}from"./ToolCallDialog-DEapCO06.js";import"./raf-Cj-gATZv.js";import"./event-BB_Ol6Sd.js";import"./omit-BIIebEYo.js";import"./_baseClone-B991Lvrt.js";const je="_trap-focus-children",ye=[],tt=e=>{if(ye.length===0)return;const m=ct(e),l=ye[ye.length-1][je];if(l.length>0&&m===dt.tab){if(l.length===1){e.preventDefault(),document.activeElement!==l[0]&&l[0].focus();return}const c=e.shiftKey,t=e.target===l[0],g=e.target===l[l.length-1];t&&c&&(e.preventDefault(),l[l.length-1].focus()),g&&!c&&(e.preventDefault(),l[0].focus())}},aa={beforeMount(e){e[je]=We(e),ye.push(e),ye.length<=1&&document.addEventListener("keydown",tt)},updated(e){be(()=>{e[je]=We(e)})},unmounted(){ye.shift(),ye.length===0&&document.removeEventListener("keydown",tt)}},la=ce({name:"ElMessageBox",directives:{TrapFocus:aa},components:{ElButton:me,ElFocusTrap:ft,ElInput:Ve,ElOverlay:Jt,ElIcon:Se,...vt},inheritAttrs:!1,props:{buttonSize:{type:String,validator:Qt},modal:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},closeOnHashChange:{type:Boolean,default:!0},center:Boolean,draggable:Boolean,overflow:Boolean,roundButton:Boolean,container:{type:String,default:"body"},boxType:{type:String,default:""}},emits:["vanish","action"],setup(e,{emit:m}){const{locale:l,zIndex:c,ns:t,size:g}=pt("message-box",q(()=>e.buttonSize)),{t:i}=l,{nextZIndex:I}=c,B=M(!1),y=Nt({autofocus:!0,beforeClose:null,callback:null,cancelButtonText:"",cancelButtonClass:"",confirmButtonText:"",confirmButtonClass:"",customClass:"",customStyle:{},dangerouslyUseHTMLString:!1,distinguishCancelAndClose:!1,icon:"",closeIcon:"",inputPattern:null,inputPlaceholder:"",inputType:"text",inputValue:"",inputValidator:void 0,inputErrorMessage:"",message:"",modalFade:!0,modalClass:"",showCancelButton:!1,showConfirmButton:!0,type:"",title:void 0,showInput:!1,action:"",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonLoadingIcon:ze(Ge),cancelButtonLoadingIcon:ze(Ge),confirmButtonDisabled:!1,editorErrorMessage:"",validateError:!1,zIndex:I()}),a=q(()=>{const U=y.type;return{[t.bm("icon",U)]:U&&Qe[U]}}),f=Ze(),E=Ze(),C=q(()=>{const U=y.type;return y.icon||U&&Qe[U]||""}),$=q(()=>!!y.message),h=M(),L=M(),A=M(),ne=M(),oe=M(),re=q(()=>y.confirmButtonClass);le(()=>y.inputValue,async U=>{await be(),e.boxType==="prompt"&&U&&W()},{immediate:!0}),le(()=>B.value,U=>{var J,K;U&&(e.boxType!=="prompt"&&(y.autofocus?A.value=(K=(J=oe.value)==null?void 0:J.$el)!=null?K:h.value:A.value=h.value),y.zIndex=I()),e.boxType==="prompt"&&(U?be().then(()=>{var ge;ne.value&&ne.value.$el&&(y.autofocus?A.value=(ge=te())!=null?ge:h.value:A.value=h.value)}):(y.editorErrorMessage="",y.validateError=!1))});const de=q(()=>e.draggable),j=q(()=>e.overflow),{isDragging:p}=qt(h,L,de,j);jt(async()=>{await be(),e.closeOnHashChange&&window.addEventListener("hashchange",R)}),Ot(()=>{e.closeOnHashChange&&window.removeEventListener("hashchange",R)});function R(){B.value&&(B.value=!1,be(()=>{y.action&&m("action",y.action)}))}const d=()=>{e.closeOnClickModal&&x(y.distinguishCancelAndClose?"close":"cancel")},w=Gt(d),F=U=>{if(y.inputType!=="textarea")return U.preventDefault(),x("confirm")},x=U=>{var J;e.boxType==="prompt"&&U==="confirm"&&!W()||(y.action=U,y.beforeClose?(J=y.beforeClose)==null||J.call(y,U,y,R):R())},W=()=>{if(e.boxType==="prompt"){const U=y.inputPattern;if(U&&!U.test(y.inputValue||""))return y.editorErrorMessage=y.inputErrorMessage||i("el.messagebox.error"),y.validateError=!0,!1;const J=y.inputValidator;if(Ne(J)){const K=J(y.inputValue);if(K===!1)return y.editorErrorMessage=y.inputErrorMessage||i("el.messagebox.error"),y.validateError=!0,!1;if(Pe(K))return y.editorErrorMessage=K,y.validateError=!0,!1}}return y.editorErrorMessage="",y.validateError=!1,!0},te=()=>{var U,J;const K=(U=ne.value)==null?void 0:U.$refs;return(J=K?.input)!=null?J:K?.textarea},ie=()=>{x("close")},Z=()=>{e.closeOnPressEscape&&ie()};return e.lockScroll&&Wt(B,{ns:t}),{...Mt(y),ns:t,overlayEvent:w,visible:B,hasMessage:$,typeClass:a,contentId:f,inputId:E,btnSize:g,iconComponent:C,confirmButtonClasses:re,rootRef:h,focusStartRef:A,headerRef:L,inputRef:ne,isDragging:p,confirmRef:oe,doClose:R,handleClose:ie,onCloseRequested:Z,handleWrapperClick:d,handleInputEnter:F,handleAction:x,t:i}}}),na=["aria-label","aria-describedby"],sa=["aria-label"],oa=["id"];function ra(e,m,l,c,t,g){const i=Ce("el-icon"),I=Ce("el-input"),B=Ce("el-button"),y=Ce("el-focus-trap"),a=Ce("el-overlay");return u(),H(zt,{name:"fade-in-linear",onAfterLeave:m[11]||(m[11]=f=>e.$emit("vanish")),persisted:""},{default:v(()=>[Ue(s(a,{"z-index":e.zIndex,"overlay-class":[e.ns.is("message-box"),e.modalClass],mask:e.modal},{default:v(()=>[n("div",{role:"dialog","aria-label":e.title,"aria-modal":"true","aria-describedby":e.showInput?void 0:e.contentId,class:X(`${e.ns.namespace.value}-overlay-message-box`),onClick:m[8]||(m[8]=(...f)=>e.overlayEvent.onClick&&e.overlayEvent.onClick(...f)),onMousedown:m[9]||(m[9]=(...f)=>e.overlayEvent.onMousedown&&e.overlayEvent.onMousedown(...f)),onMouseup:m[10]||(m[10]=(...f)=>e.overlayEvent.onMouseup&&e.overlayEvent.onMouseup(...f))},[s(y,{loop:"",trapped:e.visible,"focus-trap-el":e.rootRef,"focus-start-el":e.focusStartRef,onReleaseRequested:e.onCloseRequested},{default:v(()=>[n("div",{ref:"rootRef",class:X([e.ns.b(),e.customClass,e.ns.is("draggable",e.draggable),e.ns.is("dragging",e.isDragging),{[e.ns.m("center")]:e.center}]),style:Ke(e.customStyle),tabindex:"-1",onClick:m[7]||(m[7]=xe(()=>{},["stop"]))},[e.title!==null&&e.title!==void 0?(u(),b("div",{key:0,ref:"headerRef",class:X([e.ns.e("header"),{"show-close":e.showClose}])},[n("div",{class:X(e.ns.e("title"))},[e.iconComponent&&e.center?(u(),H(i,{key:0,class:X([e.ns.e("status"),e.typeClass])},{default:v(()=>[(u(),H(we(e.iconComponent)))]),_:1},8,["class"])):P("v-if",!0),n("span",null,o(e.title),1)],2),e.showClose?(u(),b("button",{key:0,type:"button",class:X(e.ns.e("headerbtn")),"aria-label":e.t("el.messagebox.close"),onClick:m[0]||(m[0]=f=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel")),onKeydown:m[1]||(m[1]=_e(xe(f=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel"),["prevent"]),["enter"]))},[s(i,{class:X(e.ns.e("close"))},{default:v(()=>[(u(),H(we(e.closeIcon||"close")))]),_:1},8,["class"])],42,sa)):P("v-if",!0)],2)):P("v-if",!0),n("div",{id:e.contentId,class:X(e.ns.e("content"))},[n("div",{class:X(e.ns.e("container"))},[e.iconComponent&&!e.center&&e.hasMessage?(u(),H(i,{key:0,class:X([e.ns.e("status"),e.typeClass])},{default:v(()=>[(u(),H(we(e.iconComponent)))]),_:1},8,["class"])):P("v-if",!0),e.hasMessage?(u(),b("div",{key:1,class:X(e.ns.e("message"))},[Rt(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(u(),H(we(e.showInput?"label":"p"),{key:1,for:e.showInput?e.inputId:void 0,innerHTML:e.message},null,8,["for","innerHTML"])):(u(),H(we(e.showInput?"label":"p"),{key:0,for:e.showInput?e.inputId:void 0,textContent:o(e.message)},null,8,["for","textContent"]))])],2)):P("v-if",!0)],2),Ue(n("div",{class:X(e.ns.e("input"))},[s(I,{id:e.inputId,ref:"inputRef",modelValue:e.inputValue,"onUpdate:modelValue":m[2]||(m[2]=f=>e.inputValue=f),type:e.inputType,placeholder:e.inputPlaceholder,"aria-invalid":e.validateError,class:X({invalid:e.validateError}),onKeydown:_e(e.handleInputEnter,["enter"])},null,8,["id","modelValue","type","placeholder","aria-invalid","class","onKeydown"]),n("div",{class:X(e.ns.e("errormsg")),style:Ke({visibility:e.editorErrorMessage?"visible":"hidden"})},o(e.editorErrorMessage),7)],2),[[Be,e.showInput]])],10,oa),n("div",{class:X(e.ns.e("btns"))},[e.showCancelButton?(u(),H(B,{key:0,loading:e.cancelButtonLoading,"loading-icon":e.cancelButtonLoadingIcon,class:X([e.cancelButtonClass]),round:e.roundButton,size:e.btnSize,onClick:m[3]||(m[3]=f=>e.handleAction("cancel")),onKeydown:m[4]||(m[4]=_e(xe(f=>e.handleAction("cancel"),["prevent"]),["enter"]))},{default:v(()=>[D(o(e.cancelButtonText||e.t("el.messagebox.cancel")),1)]),_:1},8,["loading","loading-icon","class","round","size"])):P("v-if",!0),Ue(s(B,{ref:"confirmRef",type:"primary",loading:e.confirmButtonLoading,"loading-icon":e.confirmButtonLoadingIcon,class:X([e.confirmButtonClasses]),round:e.roundButton,disabled:e.confirmButtonDisabled,size:e.btnSize,onClick:m[5]||(m[5]=f=>e.handleAction("confirm")),onKeydown:m[6]||(m[6]=_e(xe(f=>e.handleAction("confirm"),["prevent"]),["enter"]))},{default:v(()=>[D(o(e.confirmButtonText||e.t("el.messagebox.confirm")),1)]),_:1},8,["loading","loading-icon","class","round","disabled","size"]),[[Be,e.showConfirmButton]])],2)],6)]),_:3},8,["trapped","focus-trap-el","focus-start-el","onReleaseRequested"])],42,na)]),_:3},8,["z-index","overlay-class","mask"]),[[Be,e.visible]])]),_:3})}var ia=mt(la,[["render",ra],["__file","/home/runner/work/element-plus/element-plus/packages/components/message-box/src/index.vue"]]);const ke=new Map,ua=e=>{let m=document.body;return e.appendTo&&(Pe(e.appendTo)&&(m=document.querySelector(e.appendTo)),Xe(e.appendTo)&&(m=e.appendTo),Xe(m)||(m=document.body)),m},ca=(e,m,l=null)=>{const c=s(ia,e,Ne(e.message)||lt(e.message)?{default:Ne(e.message)?e.message:()=>e.message}:null);return c.appContext=l,nt(c,m),ua(e).appendChild(m.firstElementChild),c.component},da=()=>document.createElement("div"),ma=(e,m)=>{const l=da();e.onVanish=()=>{nt(null,l),ke.delete(t)},e.onAction=g=>{const i=ke.get(t);let I;e.showInput?I={value:t.inputValue,action:g}:I=g,e.callback?e.callback(I,c.proxy):g==="cancel"||g==="close"?e.distinguishCancelAndClose&&g!=="cancel"?i.reject("close"):i.reject("cancel"):i.resolve(I)};const c=ca(e,l,m),t=c.proxy;for(const g in e)et(e,g)&&!et(t.$props,g)&&(g==="closeIcon"&&st(e[g])?t[g]=ze(e[g]):t[g]=e[g]);return t.visible=!0,t};function $e(e,m=null){if(!gt)return Promise.reject();let l;return Pe(e)||lt(e)?e={message:e}:l=e.callback,new Promise((c,t)=>{const g=ma(e,m??$e._context);ke.set(g,{options:e,callback:l,resolve:c,reject:t})})}const va=["alert","confirm","prompt"],fa={alert:{closeOnPressEscape:!1,closeOnClickModal:!1},confirm:{showCancelButton:!0},prompt:{showCancelButton:!0,showInput:!0}};va.forEach(e=>{$e[e]=pa(e)});function pa(e){return(m,l,c,t)=>{let g="";return st(l)?(c=l,g=""):ht(l)?g="":g=l,$e(Object.assign({title:g,message:m,type:"",...fa[e]},c,{boxType:e}),t)}}$e.close=()=>{ke.forEach((e,m)=>{m.doClose()}),ke.clear()};$e._context=null;const he=$e;he.install=e=>{he._context=e._context,e.config.globalProperties.$msgbox=he,e.config.globalProperties.$messageBox=he,e.config.globalProperties.$alert=he.alert,e.config.globalProperties.$confirm=he.confirm,e.config.globalProperties.$prompt=he.prompt};const ut=he,ga={class:"flex items-center justify-between shrink-0"},ha={class:"flex items-center gap-4"},ya={class:"flex flex-col items-start gap-2"},ba={class:"flex items-center gap-2"},_a={class:"text-2xl font-bold text-gray-900 dark:text-white"},$a={class:"flex gap-2"},Ca=ce({__name:"ServerDetailHeader",props:{server:{}},emits:["back","delete","restart-all","start-all","stop-all"],setup(e,{emit:m}){const l=e,c=m;ve();const t=q(()=>l.server.rawV11Config?.instances?.length?l.server.rawV11Config.instances.length:l.server.instances?.length?l.server.instances.length:1),g=q(()=>t.value),i=q(()=>l.server.instances?.length?l.server.instances.filter(C=>C.status==="online").length:l.server.status==="online"?1:0),I=q(()=>l.server.instances?.length?l.server.instances.filter(C=>C.status!=="online").length:t.value>1?t.value-i.value:l.server.status!=="online"?1:0);function B(){c("back")}function y(){c("delete")}function a(){c("restart-all")}function f(){c("start-all")}function E(){c("stop-all")}return(C,$)=>{const h=me,L=Fe;return u(),b("div",ga,[n("div",ha,[s(h,{icon:_(yt),plain:"",onClick:B,class:"shrink-0"},{default:v(()=>[D(o(C.$t("action.back")),1)]),_:1},8,["icon"]),n("div",ya,[n("div",ba,[n("h2",_a,o(e.server.name),1),e.server.version?(u(),H(L,{key:0,size:"small",class:"ml-2"},{default:v(()=>[D(o(e.server.version),1)]),_:1})):P("",!0)]),s(Ht,{server:e.server},null,8,["server"])])]),n("div",$a,[I.value>0?(u(),H(h,{key:0,type:"success",icon:_(at),onClick:f},{default:v(()=>[D(o(C.$t("action.startAll"))+" ("+o(I.value)+") ",1)]),_:1},8,["icon"])):P("",!0),i.value>0?(u(),H(h,{key:1,type:"primary",icon:_(Oe),onClick:a},{default:v(()=>[D(o(C.$t("action.restartAll"))+" ("+o(g.value)+") ",1)]),_:1},8,["icon"])):P("",!0),i.value>0?(u(),H(h,{key:2,type:"warning",icon:_(bt),onClick:E},{default:v(()=>[D(o(C.$t("action.stopAll"))+" ("+o(i.value)+") ",1)]),_:1},8,["icon"])):P("",!0),s(h,{type:"danger",icon:_(ue),onClick:y},{default:v(()=>[D(o(C.$t("action.deleteServer")),1)]),_:1},8,["icon"])])])}}}),wa={class:"config-template-form h-full flex flex-col min-h-0"},xa={class:"space-y-4 flex-1 overflow-y-auto min-h-0"},ka={class:"px-4"},Sa={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Va={key:0,class:"px-4"},Ia={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Ta={key:1,class:"px-4"},Da={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Ea={key:2,class:"px-4"},Aa={class:"flex items-center justify-between mb-2"},Ua={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Ba={key:0,class:"space-y-2"},Ra={class:"px-4"},za={class:"flex items-center justify-between mb-2"},Na={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},ja={key:0,class:"space-y-2"},Oa={key:3,class:"px-4"},Ma={class:"flex items-center justify-between mb-2"},Pa={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},La={key:0,class:"space-y-2"},Fa={class:"px-4"},Ha={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Ja={class:"px-4"},qa={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Wa={key:4,class:"px-4"},Ga={class:"flex items-center justify-between mb-2"},Qa={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Za={key:0,class:"flex gap-2 items-start"},Xa={class:"px-4"},Ya={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Ka={class:"flex gap-2 pt-4 pb-4 border-t border-gray-200 dark:border-gray-700 px-4"},el=ce({__name:"ConfigTemplateForm",props:{config:{}},emits:["update:template","save","edit-json"],setup(e,{emit:m}){const l=e,c=m;ve();const t=M({...l.config,template:{...l.config.template,instanceSelectionStrategy:l.config.template.instanceSelectionStrategy||"random"}});let g=0,i=0;const I=M({}),B=M({});le(()=>l.config,p=>{t.value={...p,template:{...p.template,instanceSelectionStrategy:p.template.instanceSelectionStrategy||"random"}},a(),f()},{immediate:!0});const y=q({get:()=>t.value?.template?.timeout?t.value.template.timeout/1e3:60,set:p=>{t.value&&(t.value.template.timeout=p*1e3)}});function a(){t.value?.template?.env&&(I.value={},Object.keys(t.value.template.env).forEach(p=>{I.value[p]=`env-${g++}`}))}function f(){t.value?.template?.headers&&(B.value={},Object.keys(t.value.template.headers).forEach(p=>{B.value[p]=`header-${i++}`}))}function E(){t.value.template.args||(t.value.template.args=[]),t.value.template.args.push(""),c("update:template",{...t.value.template})}function C(p){t.value.template.args?.splice(p,1),c("update:template",{...t.value.template})}function $(){t.value.template.env||(t.value.template.env={});const p=`NEW_VAR_${Object.keys(t.value.template.env).length}`;t.value.template.env[p]="",I.value[p]=`env-${g++}`,c("update:template",{...t.value.template})}function h(p){delete t.value.template.env[p],delete I.value[p],c("update:template",{...t.value.template})}function L(p,R){if(p===R)return;const d=t.value.template.env[p]||"",w=I.value[p]||`env-${g++}`;delete t.value.template.env[p],delete I.value[p],t.value.template.env[R]=d,I.value[R]=w,c("update:template",{...t.value.template})}function A(){t.value.template.headers||(t.value.template.headers={});const p=`NEW_HEADER_${Object.keys(t.value.template.headers).length}`;t.value.template.headers[p]="",B.value[p]=`header-${i++}`,c("update:template",{...t.value.template})}function ne(p){delete t.value.template.headers[p],delete B.value[p],c("update:template",{...t.value.template})}function oe(p,R){if(p===R)return;const d=t.value.template.headers[p]||"",w=B.value[p]||`header-${i++}`;delete t.value.template.headers[p],delete B.value[p],t.value.template.headers[R]=d,B.value[R]=w,c("update:template",{...t.value.template})}function re(){t.value.template.proxy?t.value.template.proxy=void 0:t.value.template.proxy={url:""},c("update:template",{...t.value.template})}function de(){const p={command:t.value.template.command,args:t.value.template.args,env:t.value.template.env,headers:t.value.template.headers,type:t.value.template.type,timeout:t.value.template.timeout,url:t.value.template.url,aggregatedTools:t.value.template.aggregatedTools,description:t.value.template.description,proxy:t.value.template.proxy,instanceSelectionStrategy:t.value.template.instanceSelectionStrategy};c("update:template",p),c("save")}function j(){c("edit-json")}return(p,R)=>{const d=Xt,w=Zt,F=Ve,x=me,W=rt,te=Je,ie=He;return u(),b("div",wa,[n("div",xa,[n("div",ka,[n("label",Sa,o(p.$t("serverDetail.config.transport")),1),s(w,{modelValue:t.value.template.type,"onUpdate:modelValue":R[0]||(R[0]=Z=>t.value.template.type=Z),class:"flex gap-4"},{default:v(()=>[s(d,{value:"stdio"},{default:v(()=>[D(o(p.$t("serverDetail.config.transportStdio")),1)]),_:1}),s(d,{value:"sse"},{default:v(()=>[D(o(p.$t("serverDetail.config.transportSse")),1)]),_:1}),s(d,{value:"streamable-http"},{default:v(()=>[D(o(p.$t("serverDetail.config.transportHttp")),1)]),_:1})]),_:1},8,["modelValue"])]),t.value.template.type==="stdio"?(u(),b("div",Va,[n("label",Ia,o(p.$t("serverDetail.config.executable")),1),s(F,{modelValue:t.value.template.command,"onUpdate:modelValue":R[1]||(R[1]=Z=>t.value.template.command=Z)},null,8,["modelValue"])])):(u(),b("div",Ta,[n("label",Da,o(p.$t("serverDetail.config.url")),1),s(F,{modelValue:t.value.template.url,"onUpdate:modelValue":R[2]||(R[2]=Z=>t.value.template.url=Z)},null,8,["modelValue"])])),t.value.template.type==="stdio"?(u(),b("div",Ea,[n("div",Aa,[n("label",Ua,o(p.$t("serverDetail.config.args")),1),s(x,{size:"small",icon:_(fe),onClick:E},{default:v(()=>[D(o(p.$t("serverDetail.config.addArg")),1)]),_:1},8,["icon"])]),t.value.template.args&&t.value.template.args.length>0?(u(),b("div",Ba,[(u(!0),b(Y,null,ae(t.value.template.args,(Z,U)=>(u(),b("div",{key:U,class:"flex gap-2 px-4"},[s(F,{modelValue:t.value.template.args[U],"onUpdate:modelValue":J=>t.value.template.args[U]=J,class:"flex-1"},null,8,["modelValue","onUpdate:modelValue"]),s(x,{size:"small",type:"danger",icon:_(ue),onClick:J=>C(U)},null,8,["icon","onClick"])]))),128))])):P("",!0)])):P("",!0),n("div",Ra,[n("div",za,[n("label",Na,o(p.$t("serverDetail.config.env")),1),s(x,{size:"small",icon:_(fe),onClick:$},{default:v(()=>[D(o(p.$t("serverDetail.config.addEnv")),1)]),_:1},8,["icon"])]),t.value.template.env&&Object.keys(t.value.template.env).length>0?(u(),b("div",ja,[(u(!0),b(Y,null,ae(t.value.template.env,(Z,U)=>(u(),b("div",{key:I.value[U],class:"flex gap-2 items-start px-4",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(F,{"model-value":U,style:{width:"30%","min-width":"150px"},placeholder:p.$t("addServer.keyPlaceholder"),"onUpdate:modelValue":J=>L(U,J)},null,8,["model-value","placeholder","onUpdate:modelValue"]),s(F,{modelValue:t.value.template.env[U],"onUpdate:modelValue":J=>t.value.template.env[U]=J,style:{flex:"1"},placeholder:p.$t("addServer.valuePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),s(x,{size:"small",type:"danger",icon:_(ue),onClick:J=>h(U)},null,8,["icon","onClick"])]))),128))])):P("",!0)]),t.value.template.type!=="stdio"?(u(),b("div",Oa,[n("div",Ma,[n("label",Pa,o(p.$t("serverDetail.config.headers")),1),s(x,{size:"small",icon:_(fe),onClick:A},{default:v(()=>[D(o(p.$t("serverDetail.config.addHeader")),1)]),_:1},8,["icon"])]),t.value.template.headers&&Object.keys(t.value.template.headers).length>0?(u(),b("div",La,[(u(!0),b(Y,null,ae(t.value.template.headers,(Z,U)=>(u(),b("div",{key:B.value[U],class:"flex gap-2 items-start px-4",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(F,{"model-value":U,style:{width:"30%","min-width":"150px"},placeholder:p.$t("addServer.keyPlaceholder"),"onUpdate:modelValue":J=>oe(U,J)},null,8,["model-value","placeholder","onUpdate:modelValue"]),s(F,{modelValue:t.value.template.headers[U],"onUpdate:modelValue":J=>t.value.template.headers[U]=J,style:{flex:"1"},placeholder:p.$t("addServer.valuePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),s(x,{size:"small",type:"danger",icon:_(ue),onClick:J=>ne(U)},null,8,["icon","onClick"])]))),128))])):P("",!0)])):P("",!0),n("div",Fa,[n("label",Ha,o(p.$t("serverDetail.config.timeout")),1),s(W,{modelValue:y.value,"onUpdate:modelValue":R[3]||(R[3]=Z=>y.value=Z),min:1,max:3600},null,8,["modelValue"])]),n("div",Ja,[n("label",qa,o(p.$t("common.description")),1),s(F,{modelValue:t.value.template.description,"onUpdate:modelValue":R[4]||(R[4]=Z=>t.value.template.description=Z),type:"textarea",rows:3,placeholder:p.$t("serverDetail.config.descriptionPlaceholder")},null,8,["modelValue","placeholder"])]),t.value.template.type!=="stdio"?(u(),b("div",Wa,[n("div",Ga,[n("label",Qa,o(p.$t("serverDetail.config.proxy")),1),t.value.template.proxy?(u(),H(x,{key:1,size:"small",type:"danger",icon:_(ue),onClick:re},{default:v(()=>[D(o(p.$t("serverDetail.config.removeProxy")),1)]),_:1},8,["icon"])):(u(),H(x,{key:0,size:"small",icon:_(fe),onClick:re},{default:v(()=>[D(o(p.$t("serverDetail.config.addProxy")),1)]),_:1},8,["icon"]))]),t.value.template.proxy?(u(),b("div",Za,[s(F,{modelValue:t.value.template.proxy.url,"onUpdate:modelValue":R[5]||(R[5]=Z=>t.value.template.proxy.url=Z),placeholder:p.$t("serverDetail.config.proxyPlaceholder")},null,8,["modelValue","placeholder"])])):P("",!0)])):P("",!0),n("div",Xa,[n("label",Ya,o(p.$t("serverDetail.config.instanceSelectionStrategy")),1),s(ie,{modelValue:t.value.template.instanceSelectionStrategy,"onUpdate:modelValue":R[6]||(R[6]=Z=>t.value.template.instanceSelectionStrategy=Z),placeholder:p.$t("serverDetail.config.strategyRandom")+"(默认)"},{default:v(()=>[s(te,{value:"random",label:p.$t("serverDetail.config.strategyRandom")},null,8,["label"]),s(te,{value:"round-robin",label:p.$t("serverDetail.config.strategyRoundRobin")},null,8,["label"]),s(te,{value:"tag-match-unique",label:p.$t("serverDetail.config.strategyTagMatchUnique")},null,8,["label"])]),_:1},8,["modelValue","placeholder"])]),n("div",Ka,[s(x,{type:"primary",onClick:de},{default:v(()=>[D(o(p.$t("serverDetail.config.save")),1)]),_:1}),s(x,{onClick:j},{default:v(()=>[D(o(p.$t("serverDetail.config.editByJson")),1)]),_:1})])])])}}}),tl=Ie(el,[["__scopeId","data-v-d857c695"]]),al={class:"h-full flex flex-col"},ll={class:"flex items-center justify-between gap-2 mb-2 shrink-0"},nl={class:"flex items-center gap-2"},sl=ce({__name:"LogViewer",props:{logs:{},autoScroll:{type:Boolean,default:!0}},emits:["update:autoScroll","clear","copy"],setup(e,{emit:m}){const l=e,c=m;ve();const t=M(null),g=M(l.autoScroll);le(()=>l.autoScroll,a=>{g.value=a}),le(()=>l.logs.length,()=>{g.value&&be(()=>{t.value&&(t.value.scrollTop=t.value.scrollHeight)})});function i(a){const f=!!a;g.value=f,c("update:autoScroll",f)}function I(){c("clear")}function B(){c("copy")}function y(a){switch(a){case"debug":return"text-gray-400";case"info":return"text-blue-400";case"warn":return"text-yellow-400";case"error":return"text-red-400";default:return"text-gray-300"}}return(a,f)=>{const E=Yt,C=me;return u(),b("div",al,[n("div",ll,[n("div",nl,[s(E,{modelValue:g.value,"onUpdate:modelValue":[f[0]||(f[0]=$=>g.value=$),i],label:a.$t("serverDetail.logs.autoScroll"),class:"text-gray-600 dark:text-gray-400"},null,8,["modelValue","label"]),s(C,{size:"small",icon:_(ue),plain:"",onClick:I},{default:v(()=>[D(o(a.$t("serverDetail.logs.clear")),1)]),_:1},8,["icon"]),s(C,{size:"small",icon:_(_t),plain:"",onClick:B},{default:v(()=>[D(o(a.$t("common.copy")),1)]),_:1},8,["icon"])])]),n("div",{class:"bg-gray-900 dark:bg-black p-4 rounded-lg font-mono text-sm flex-1 min-h-0 overflow-y-auto text-gray-300",ref_key:"logsContainer",ref:t},[(u(!0),b(Y,null,ae(e.logs,($,h)=>(u(),b("div",{key:h,class:"mb-1 break-words"},[n("span",{class:X(y($.level))},o(_(ot)($.timestamp))+" ["+o($.level.toUpperCase())+"] "+o($.message),3)]))),128))],512)])}}}),ol={class:"h-full flex flex-col"},rl={class:"flex h-full gap-4"},il={class:"w-1/3 border-r border-gray-200 dark:border-gray-700 pr-4 overflow-y-auto"},ul={class:"flex items-center justify-between mb-3"},cl={class:"font-bold"},dl={class:"flex items-center gap-2"},ml={key:0,class:"space-y-2"},vl=["onClick"],fl={class:"min-w-0 flex-1 mr-2"},pl={class:"font-medium truncate"},gl={key:1,class:"text-gray-500 text-sm italic"},hl={class:"flex-1 min-h-0 overflow-y-auto px-4 flex flex-col"},yl={class:"flex justify-between items-center mb-4 shrink-0"},bl={class:"font-bold"},_l={key:0},$l={class:"mb-4 text-gray-600 dark:text-gray-300"},Cl={class:"font-medium mb-2"},wl={class:"bg-gray-50 dark:bg-[#0f172a] p-4 rounded-lg overflow-x-auto text-sm font-mono border border-gray-200 dark:border-gray-700"},xl={key:1,class:"flex-1 flex items-center justify-center text-gray-400"},kl=ce({__name:"ToolsTab",props:{tools:{},allowedTools:{default:null}},emits:["select-tool","update-tool-visibility","call-tool","batch-toggle-all"],setup(e,{emit:m}){const l=e,c=m;ve();const t=M(null);function g(f){t.value=f,c("select-tool",f)}function i(f){return l.allowedTools===void 0||l.allowedTools===null||l.allowedTools.length===0?!1:Array.isArray(l.allowedTools)?l.allowedTools.includes(f):!1}function I(f,E){c("update-tool-visibility",f,E)}function B(){c("batch-toggle-all",!0)}function y(){c("batch-toggle-all",!1)}function a(){t.value&&c("call-tool",t.value)}return(f,E)=>{const C=me,$=it;return u(),b("div",ol,[n("div",rl,[n("div",il,[n("div",ul,[n("h3",cl,o(f.$t("serverDetail.tools.available")),1),n("div",dl,[s(C,{size:"small",onClick:B},{default:v(()=>[D(o(f.$t("serverDetail.tools.selectAll")),1)]),_:1}),s(C,{size:"small",onClick:y},{default:v(()=>[D(o(f.$t("serverDetail.tools.deselectAll")),1)]),_:1})])]),e.tools&&e.tools.length>0?(u(),b("div",ml,[(u(!0),b(Y,null,ae(e.tools,h=>(u(),b("div",{key:h.name,class:X(["p-3 rounded-lg cursor-pointer transition-colors flex items-center justify-between group",t.value?.name===h.name?"bg-blue-50 dark:bg-blue-900/30 border border-blue-200 dark:border-blue-800":"hover:bg-gray-100 dark:hover:bg-gray-800 border border-transparent"]),onClick:L=>g(h)},[n("div",fl,[n("div",pl,o(h.name),1)]),s($,{"model-value":i(h.name),"onUpdate:modelValue":L=>I(h.name,!!L),class:"mr-4","active-text":f.$t("serverDetail.tools.aggregated")},null,8,["model-value","onUpdate:modelValue","active-text"])],10,vl))),128))])):(u(),b("div",gl,o(f.$t("serverDetail.tools.none")),1))]),n("div",hl,[n("div",yl,[n("h3",bl,o(f.$t("serverDetail.tools.details"))+": "+o(t.value?.name||""),1),t.value?(u(),H(C,{key:0,type:"primary",size:"small",onClick:a},{default:v(()=>[D(o(f.$t("serverDetail.tools.call")),1)]),_:1})):P("",!0)]),t.value?(u(),b("div",_l,[n("p",$l,o(t.value.description),1),n("h4",Cl,o(f.$t("serverDetail.tools.schema")),1),n("pre",wl,o(JSON.stringify(t.value.inputSchema,null,2)),1)])):(u(),b("div",xl,o(f.$t("serverDetail.tools.selectHint")),1))])])])}}}),Sl={class:"h-full overflow-y-auto"},Vl={class:"flex items-center gap-2"},Il={class:"font-medium"},Tl={key:0,class:"text-center py-8 text-gray-500"},Dl=ce({__name:"ResourcesTab",props:{resources:{}},emits:["view-resource"],setup(e,{emit:m}){const l=m;ve();function c(t){l("view-resource",t)}return(t,g)=>{const i=Se,I=ea,B=me,y=Kt;return u(),b("div",Sl,[s(y,{data:e.resources||[],style:{width:"100%"},class:"custom-table"},{default:v(()=>[s(I,{prop:"name",label:t.$t("common.name"),width:"200"},{default:v(({row:a})=>[n("div",Vl,[s(i,null,{default:v(()=>[s(_($t))]),_:1}),n("span",Il,o(a.name),1)])]),_:1},8,["label"]),s(I,{prop:"uri",label:t.$t("common.uri"),"min-width":"300"},null,8,["label"]),s(I,{prop:"mimeType",label:t.$t("common.mimeType"),width:"150"},null,8,["label"]),s(I,{label:"",width:"100",align:"right"},{default:v(({row:a})=>[s(B,{size:"small",plain:"",onClick:f=>c(a)},{default:v(()=>[D(o(t.$t("action.view")),1)]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]),!e.resources||e.resources.length===0?(u(),b("div",Tl,o(t.$t("serverDetail.resources.none")),1)):P("",!0)])}}}),El={class:"dialog-footer"},Al=ce({__name:"JsonConfigEditor",props:{modelValue:{type:Boolean},config:{},serverName:{}},emits:["update:modelValue","save"],setup(e,{emit:m}){const l=e,c=m,{t}=ve(),g=M(""),i=q({get:()=>l.modelValue,set:f=>c("update:modelValue",f)}),I=q(()=>t("serverDetail.editJsonTitle")||"Edit JSON Config");le(()=>l.modelValue,f=>{f&&B()});function B(){const f={env:l.config.env||{},enabled:l.config.enabled,description:l.config.description};l.config.headers&&Object.keys(l.config.headers).length>0&&(f.headers=l.config.headers),l.config.timeout&&(f.timeout=l.config.timeout),l.config.type==="stdio"?(f.command=l.config.command,f.args=l.config.args||[]):f.url=l.config.url;const E={mcpServers:{[l.serverName]:f}};g.value=JSON.stringify(E,null,2)}function y(){i.value=!1}function a(){try{const f=JSON.parse(g.value);if(!f.mcpServers)throw new Error("Missing mcpServers key");const E=Object.keys(f.mcpServers);if(E.length===0)throw new Error("No server config found");const C=E[0]||"",$=f.mcpServers[C],h={...l.config};$.command?(h.type="stdio",h.command=$.command,h.args=$.args||[],delete h.url):$.url&&(h.type=$.type==="sse"?"sse":"streamable-http",h.url=$.url,delete h.command,delete h.args),$.env&&(h.env=$.env),$.headers&&(h.headers=$.headers),$.timeout!==void 0&&(h.timeout=$.timeout),$.enabled!==void 0&&(h.enabled=$.enabled),$.description!==void 0&&(h.description=$.description),c("save",h),i.value=!1,V.success(t("action.configSaved"))}catch(f){f instanceof Error?V.error("Invalid JSON: "+f.message):V.error("Invalid JSON: "+String(f))}}return(f,E)=>{const C=Ve,$=me,h=qe;return u(),H(h,{modelValue:i.value,"onUpdate:modelValue":E[1]||(E[1]=L=>i.value=L),title:I.value,width:"600px"},{footer:v(()=>[n("span",El,[s($,{onClick:y},{default:v(()=>[D(o(f.$t("action.cancel")),1)]),_:1}),s($,{type:"primary",onClick:a},{default:v(()=>[D(o(f.$t("action.save")),1)]),_:1})])]),default:v(()=>[s(C,{modelValue:g.value,"onUpdate:modelValue":E[0]||(E[0]=L=>g.value=L),type:"textarea",rows:15,"font-family":"monospace"},null,8,["modelValue"])]),_:1},8,["modelValue","title"])}}}),Ul={class:"dialog-footer"},Bl=ce({__name:"InstanceSelectDialog",props:{modelValue:{type:Boolean},instances:{},title:{default:""}},emits:["update:modelValue","confirm"],setup(e,{emit:m}){const l=e,c=m,{t}=ve(),g=M(null),i=q({get:()=>l.modelValue,set:f=>c("update:modelValue",f)}),I=q(()=>l.title||t("serverDetail.selectInstanceTitle")||"Select Instance");function B(f){return`#${f.index??0} [${f.displayName||t("serverDetail.instances.unnamed")}]`}function y(){i.value=!1,g.value=null}function a(){g.value!==null&&(c("confirm",g.value),i.value=!1,g.value=null)}return(f,E)=>{const C=Je,$=He,h=me,L=qe;return u(),H(L,{modelValue:i.value,"onUpdate:modelValue":E[1]||(E[1]=A=>i.value=A),title:I.value,width:"500px"},{footer:v(()=>[n("span",Ul,[s(h,{onClick:y},{default:v(()=>[D(o(f.$t("action.cancel")),1)]),_:1}),s(h,{type:"primary",onClick:a,disabled:g.value===null},{default:v(()=>[D(o(f.$t("action.confirm")),1)]),_:1},8,["disabled"])])]),default:v(()=>[s($,{modelValue:g.value,"onUpdate:modelValue":E[0]||(E[0]=A=>g.value=A),placeholder:f.$t("serverDetail.selectInstancePlaceholder"),class:"w-full"},{default:v(()=>[(u(!0),b(Y,null,ae(e.instances,A=>(u(),H(C,{key:A.index??0,label:B(A),value:A.index??0},null,8,["label","value"]))),128))]),_:1},8,["modelValue","placeholder"])]),_:1},8,["modelValue","title"])}}}),Rl={class:"instance-card-list"},zl={class:"mb-4 flex justify-between items-center"},Nl={class:"text-lg font-semibold text-gray-900 dark:text-white"},jl={key:0,class:"mb-4"},Ol={class:"flex items-center justify-between"},Ml={class:"flex items-center gap-3"},Pl={class:"flex items-center gap-2"},Ll={class:"font-mono text-sm text-purple-600 dark:text-purple-400"},Fl={class:"flex flex-col gap-3 mb-4"},Hl=["onClick"],Jl={class:"flex items-center justify-between"},ql={class:"flex items-center gap-3"},Wl={class:"flex items-center gap-2"},Gl={class:"font-mono text-sm text-gray-500 dark:text-gray-400"},Ql={class:"font-medium text-gray-900 dark:text-white"},Zl={key:1,class:"px-2 py-0.5 rounded-full text-xs bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400"},Xl=ce({__name:"InstanceCardList",props:{instances:{},selectedIndex:{},serverName:{},showTemplateNode:{type:Boolean,default:!0},templateSelected:{type:Boolean,default:!1}},emits:["select","select-template","add","update-display-name","delete","reassign-indexes"],setup(e,{emit:m}){const l=e,c=m,t=M(!1),g=M(null),i=M(""),I=M(),B=q(()=>[...l.instances].sort((j,p)=>(j.index??0)-(p.index??0)));function y(j){return j.status||"offline"}function a(){return l.templateSelected?"border-purple-500 bg-purple-50 dark:bg-purple-900/20 shadow-md":"border-purple-200 dark:border-purple-800 hover:border-purple-300 dark:hover:border-purple-700 hover:shadow-sm bg-white dark:bg-gray-800"}function f(j){return l.selectedIndex===j?"border-blue-500 bg-blue-50 dark:bg-blue-900/20 shadow-md":"border-gray-200 dark:border-gray-700 hover:border-gray-300 dark:hover:border-gray-600 hover:shadow-sm"}function E(j){switch(j){case"online":return"bg-green-500";case"error":return"bg-red-500";case"starting":case"stopping":return"bg-yellow-500";default:return"bg-gray-400"}}function C(j){switch(j){case"online":return"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400";case"error":return"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400";case"starting":case"stopping":return"bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400";default:return"bg-gray-100 text-gray-600 dark:bg-gray-800 dark:text-gray-400"}}function $(){c("select-template")}function h(j){c("select",j)}function L(){c("add")}function A(j){t.value=!0,g.value=j.index??null,i.value=j.displayName||"",setTimeout(()=>{I.value?.focus()},100)}function ne(j){const p=i.value.trim();c("update-display-name",j,p),oe()}function oe(){t.value=!1,g.value=null,i.value=""}function re(j){c("delete",j)}function de(){c("reassign-indexes")}return(j,p)=>{const R=me,d=Fe,w=Ve,F=Ct;return u(),b("div",Rl,[n("div",zl,[n("h3",Nl,o(j.$t("serverDetail.instances.title")),1),s(R,{size:"small",icon:_(Oe),plain:"",onClick:de},{default:v(()=>[D(o(j.$t("serverDetail.instances.reassignIndexes")),1)]),_:1},8,["icon"])]),e.showTemplateNode?(u(),b("div",jl,[n("div",{class:X(["template-card p-4 rounded-lg border transition-all duration-200 cursor-pointer",a()]),onClick:$},[n("div",Ol,[n("div",Ml,[p[2]||(p[2]=n("div",{class:"w-3 h-3 rounded-full bg-purple-500"},null,-1)),n("div",Pl,[n("span",Ll,o(j.$t("common.template")),1),s(d,{size:"small",type:"info"},{default:v(()=>[D(o(j.$t("serverDetail.instances.templateTag")),1)]),_:1})])])])],2)])):P("",!0),n("div",Fl,[(u(!0),b(Y,null,ae(B.value,x=>(u(),b("div",{key:x.index??0,class:X(["instance-card p-4 rounded-lg border transition-all duration-200 cursor-pointer",f(x.index??0)]),onClick:W=>h(x.index??0)},[n("div",Jl,[n("div",ql,[n("div",{class:X(["w-3 h-3 rounded-full",E(y(x))])},null,2),n("div",Wl,[!t.value||g.value!==x.index?(u(),b(Y,{key:0},[n("span",Gl," #"+o(x.index??0),1),n("span",Ql," ["+o(x.displayName||j.$t("serverDetail.instances.unnamed"))+"] ",1)],64)):(u(),H(w,{key:1,modelValue:i.value,"onUpdate:modelValue":p[0]||(p[0]=W=>i.value=W),size:"small",onKeyup:[_e(W=>ne(x.index??0),["enter"]),_e(oe,["escape"])],ref_for:!0,ref_key:"displayNameInputRef",ref:I,onBlur:W=>ne(x.index??0),class:"max-w-xs"},null,8,["modelValue","onKeyup","onBlur"]))]),x.pid&&y(x)==="online"?P("",!0):(u(),b("div",{key:0,class:X(["px-2 py-0.5 rounded-full text-xs",C(y(x))])},o(j.$t(`serverDetail.status.${y(x)}`)),3)),x.transportType==="stdio"&&x.pid&&y(x)==="online"?(u(),b("div",Zl," PID: "+o(x.pid),1)):P("",!0)]),n("div",{class:"flex items-center gap-2",onClick:p[1]||(p[1]=xe(()=>{},["stop"]))},[!t.value||g.value!==x.index?(u(),b(Y,{key:0},[s(F,{content:j.$t("serverDetail.instances.editDisplayName")||"Edit display name",placement:"top"},{default:v(()=>[s(R,{icon:_(wt),circle:"",plain:"",size:"small",onClick:W=>A(x)},null,8,["icon","onClick"])]),_:2},1032,["content"]),s(R,{icon:_(ue),circle:"",plain:"",size:"small",type:"danger",onClick:W=>re(x.index??0)},null,8,["icon","onClick"])],64)):P("",!0)])])],10,Hl))),128))]),s(R,{icon:_(fe),class:"w-full",onClick:L},{default:v(()=>[D(o(j.$t("serverDetail.instances.add")),1)]),_:1},8,["icon"])])}}}),Yl=Ie(Xl,[["__scopeId","data-v-24e76b86"]]),Kl={class:"preview-content"},en={class:"action-bar flex justify-end mb-4"},tn={class:"config-display"},an={class:"config-json"},ln=ce({__name:"MergedConfigPreviewDialog",props:{modelValue:{type:Boolean},mergedConfig:{}},emits:["update:modelValue"],setup(e){const m=e,{t:l}=ve(),c=q(()=>JSON.stringify(m.mergedConfig,null,2));async function t(){try{await navigator.clipboard.writeText(c.value),V.success(l("action.copiedToClipboard"))}catch{V.error(l("action.copyFailed"))}}return(g,i)=>{const I=Se,B=me,y=qe;return u(),H(y,{"model-value":e.modelValue,"onUpdate:modelValue":i[0]||(i[0]=a=>g.$emit("update:modelValue",a)),title:g.$t("serverDetail.instanceConfig.mergedPreview"),width:"70%","destroy-on-close":"",class:"merged-config-dialog"},{default:v(()=>[n("div",Kl,[n("div",en,[s(B,{type:"primary",onClick:t},{default:v(()=>[s(I,null,{default:v(()=>[s(_(xt))]),_:1}),D(" "+o(g.$t("common.copy")),1)]),_:1})]),n("div",tn,[n("pre",an,o(c.value),1)])])]),_:1},8,["model-value","title"])}}}),nn=Ie(ln,[["__scopeId","data-v-84fcda8e"]]),sn={class:"instance-config h-full flex flex-col min-h-0"},on={class:"header-bar flex justify-between items-center mb-4 px-4 flex-shrink-0"},rn={class:"flex items-center gap-4"},un={class:"text-lg font-semibold text-gray-900 dark:text-white"},cn={class:"flex gap-2"},dn={class:"config-form space-y-4 flex-1 overflow-y-auto min-h-0 pb-4"},mn={class:"px-4"},vn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},fn={class:"flex items-center gap-2"},pn={class:"text-xs text-gray-500 dark:text-gray-400"},gn={class:"px-4"},hn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},yn={class:"flex gap-2 items-start"},bn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},_n={key:0,class:"px-4"},$n={class:"flex items-center justify-between mb-2"},Cn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},wn={key:0,class:"space-y-2 mb-3"},xn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},kn={key:1,class:"space-y-2"},Sn={class:"px-4"},Vn={class:"flex items-center justify-between mb-2"},In={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Tn={key:0,class:"space-y-2 mb-3"},Dn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},En={key:1,class:"space-y-2"},An={key:1,class:"px-4"},Un={class:"flex items-center justify-between mb-2"},Bn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Rn={key:0,class:"space-y-2 mb-3"},zn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},Nn={key:1,class:"space-y-2"},jn={class:"px-4"},On={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Mn={class:"flex gap-2 items-center"},Pn={class:"text-xs text-gray-500 dark:text-gray-400"},Ln={class:"px-4"},Fn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Hn={class:"flex gap-2 items-start"},Jn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},qn={key:2,class:"px-4"},Wn={class:"flex items-center justify-between mb-2"},Gn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Qn={key:0,class:"space-y-2 mb-3"},Zn={class:"flex gap-2 items-start"},Xn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},Yn={key:1,class:"flex gap-2 items-start"},Kn={class:"px-4"},es={class:"flex items-center justify-between mb-2"},ts={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},as={key:0,class:"text-center py-4 text-gray-500"},ls={key:1,class:"space-y-2"},ns={class:"text-xs text-gray-500 ml-2"},ss={class:"px-4"},os={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},rs={class:"flex gap-2 items-center"},is={class:"flex gap-2 pt-4 pb-4 border-t border-gray-200 dark:border-gray-700 px-4"},us=ce({__name:"InstanceConfig",props:{templateConfig:{},instanceConfig:{},serverName:{},instanceStatus:{default:"offline"},systemTagDefinitions:{}},emits:["update","start-instance","stop-instance","restart-instance","view-logs"],setup(e,{emit:m}){const l=e,c=m,{t}=ve();function g(){c("start-instance")}function i(){c("stop-instance")}function I(){c("restart-instance")}function B(){c("view-logs")}const y=M(!1),a=M({enabled:!0,...l.instanceConfig});let f=0,E=0,C=0;const $=M({}),h=M({}),L=M({}),A=M({}),ne=q(()=>l.templateConfig.args&&l.templateConfig.args.length>0),oe=q(()=>l.templateConfig.env&&Object.keys(l.templateConfig.env).length>0),re=q(()=>l.templateConfig.headers&&Object.keys(l.templateConfig.headers).length>0);le(()=>l.instanceConfig,r=>{a.value={...r},$.value={},r.env&&Object.keys(r.env).forEach(T=>{$.value[T]=`env-${f++}`}),h.value={},r.headers&&Object.keys(r.headers).forEach(T=>{h.value[T]=`header-${E++}`}),L.value={},A.value={},r.tags&&Object.keys(r.tags).forEach(T=>{L.value[T]=`tag-${C++}`,l.systemTagDefinitions.some(se=>se.key===T)?A.value[T]=T:(A.value[T]=T,console.warn(`未定义的标签键: ${T}`))})},{immediate:!0});const de=q(()=>{const r={...l.templateConfig};return a.value.args&&a.value.args.length>0&&(r.args=[...l.templateConfig.args||[],...a.value.args]),a.value.env&&Object.keys(a.value.env).length>0&&(r.env={...l.templateConfig.env||{},...a.value.env}),a.value.headers&&Object.keys(a.value.headers).length>0&&(r.headers={...l.templateConfig.headers||{},...a.value.headers}),a.value.proxy&&(r.proxy=a.value.proxy),a.value.tags&&Object.keys(a.value.tags).length>0&&(r.tags=a.value.tags),a.value.displayName&&(r.displayName=a.value.displayName),a.value.enabled!==void 0&&(r.enabled=a.value.enabled),r});function j(r){switch(r){case"stdio":return t("serverDetail.config.transportStdio");case"sse":return t("serverDetail.config.transportSse");case"streamable-http":return t("serverDetail.config.transportHttp");default:return r}}function p(){c("update",a.value)}function R(){a.value.proxy?a.value.proxy=void 0:a.value.proxy={url:""}}function d(){a.value.args||(a.value.args=[]),a.value.args.push("")}function w(r){a.value.args&&a.value.args.splice(r,1)}function F(){a.value.env||(a.value.env={});const r=`NEW_ENV_${Date.now()}`;a.value.env[r]="",$.value[r]=`env-${f++}`}function x(r){a.value.env&&(delete a.value.env[r],delete $.value[r])}function W(r,T){if(!a.value.env||!r||!T||r===T)return;const z=a.value.env[r]??"",se=$.value[r]||`env-${f++}`;delete a.value.env[r],delete $.value[r],a.value.env[T]=z,$.value[T]=se}function te(){a.value.headers||(a.value.headers={});const r=`X-New-Header-${Date.now()}`;a.value.headers[r]="",h.value[r]=`header-${E++}`}function ie(r){a.value.headers&&(delete a.value.headers[r],delete h.value[r])}function Z(r,T){if(!a.value.headers||!r||!T||r===T)return;const z=a.value.headers[r]??"",se=h.value[r]||`header-${E++}`;delete a.value.headers[r],delete h.value[r],a.value.headers[T]=z,h.value[T]=se}function U(){if(a.value.tags||(a.value.tags={}),l.systemTagDefinitions.length>0){const r=l.systemTagDefinitions[0];if(r){const T=r.key;let z=T,se=1;for(;a.value.tags&&Object.prototype.hasOwnProperty.call(a.value.tags,z);)z=`${T}-${se}`,se++;a.value.tags[z]="",L.value[z]=`tag-${C++}`,A.value[z]=T}}else{V.warning("请先在设置中定义标签");const r=`new-tag-${Date.now()}`;a.value.tags[r]="",L.value[r]=`tag-${C++}`,A.value[r]=r}}function J(r){a.value.tags&&(delete a.value.tags[r],delete L.value[r],delete A.value[r])}function K(r,T){if(!a.value.tags||!T)return;const z=a.value.tags[r]??"",se=L.value[r]||`tag-${C++}`;delete a.value.tags[r],delete L.value[r],delete A.value[r],a.value.tags[T]=z,L.value[T]=se,A.value[T]=T}function ge(r){const T=l.systemTagDefinitions.find(z=>z.key===r);return T?T.type:null}function De(r){const T=l.systemTagDefinitions.find(z=>z.key===r);return T?.type==="enum"?T.values||[]:[]}function Ee(r){return l.systemTagDefinitions.find(z=>z.key===r)?.description||"输入标签值"}function Ae(){window.location.hash="#/settings/tags"}return(r,T)=>{const z=me,se=Se,pe=Fe,ee=Ve,Te=rt,O=Je,N=He,Q=it;return u(),b("div",sn,[n("div",on,[n("div",rn,[n("h3",un,o(r.$t("serverDetail.instanceConfig.title")),1),n("div",cn,[s(z,{icon:_(Oe),plain:"",onClick:I},{default:v(()=>[D(o(r.$t("action.restart")),1)]),_:1},8,["icon"]),e.instanceStatus==="error"?(u(),H(z,{key:0,type:"danger",plain:"",icon:_(kt),onClick:B},{default:v(()=>[D(o(r.$t("action.viewLogs")),1)]),_:1},8,["icon"])):e.instanceStatus==="online"?(u(),H(z,{key:1,type:"warning",plain:"",icon:_(St),onClick:i},{default:v(()=>[D(o(r.$t("action.stop")),1)]),_:1},8,["icon"])):(u(),H(z,{key:2,type:"success",icon:_(at),onClick:g},{default:v(()=>[D(o(r.$t("action.start")),1)]),_:1},8,["icon"]))])]),s(z,{onClick:T[0]||(T[0]=G=>y.value=!0)},{default:v(()=>[s(se,null,{default:v(()=>[s(_(Vt))]),_:1}),D(" "+o(r.$t("serverDetail.instanceConfig.viewMerged")),1)]),_:1})]),n("div",dn,[n("div",mn,[n("label",vn,o(r.$t("serverDetail.config.transport")),1),n("div",fn,[s(pe,{size:"small",type:"info"},{default:v(()=>[D(o(j(e.templateConfig.type)),1)]),_:1}),n("span",pn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])]),n("div",gn,[n("label",hn,o(e.templateConfig.type==="stdio"?r.$t("serverDetail.config.executable"):r.$t("serverDetail.config.url")),1),n("div",yn,[s(ee,{"model-value":e.templateConfig.type==="stdio"?e.templateConfig.command:e.templateConfig.url,disabled:"",class:"flex-1"},null,8,["model-value"]),n("span",bn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])]),e.templateConfig.type==="stdio"?(u(),b("div",_n,[n("div",$n,[n("label",Cn,o(r.$t("serverDetail.config.args")),1),s(z,{size:"small",icon:_(fe),onClick:d},{default:v(()=>[D(o(r.$t("serverDetail.config.addArg")),1)]),_:1},8,["icon"])]),ne.value?(u(),b("div",wn,[(u(!0),b(Y,null,ae(e.templateConfig.args,(G,k)=>(u(),b("div",{key:`template-arg-${k}`,class:"flex gap-2 items-start"},[s(ee,{"model-value":G,disabled:"",class:"flex-1"},null,8,["model-value"]),n("span",xn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)]))),128))])):P("",!0),a.value.args&&a.value.args.length>0?(u(),b("div",kn,[(u(!0),b(Y,null,ae(a.value.args,(G,k)=>(u(),b("div",{key:`instance-arg-${k}`,class:"flex gap-2 items-start"},[s(ee,{modelValue:a.value.args[k],"onUpdate:modelValue":S=>a.value.args[k]=S,class:"flex-1"},null,8,["modelValue","onUpdate:modelValue"]),s(z,{size:"small",type:"danger",icon:_(ue),onClick:S=>w(k)},null,8,["icon","onClick"]),s(pe,{size:"small",type:"success"},{default:v(()=>[D(o(r.$t("common.instance")),1)]),_:1})]))),128))])):P("",!0)])):P("",!0),n("div",Sn,[n("div",Vn,[n("label",In,o(r.$t("serverDetail.config.env")),1),s(z,{size:"small",icon:_(fe),onClick:F},{default:v(()=>[D(o(r.$t("serverDetail.config.addEnv")),1)]),_:1},8,["icon"])]),oe.value?(u(),b("div",Tn,[(u(!0),b(Y,null,ae(e.templateConfig.env,(G,k)=>(u(),b("div",{key:`template-env-${k}`,class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(ee,{"model-value":k,disabled:"",style:{width:"30%","min-width":"150px"}},null,8,["model-value"]),s(ee,{"model-value":e.templateConfig.env[k],disabled:"",style:{flex:"1"}},null,8,["model-value"]),n("span",Dn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)]))),128))])):P("",!0),a.value.env&&Object.keys(a.value.env).length>0?(u(),b("div",En,[(u(!0),b(Y,null,ae(a.value.env,(G,k)=>(u(),b("div",{key:$.value[k],class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(ee,{"model-value":k,style:{width:"30%","min-width":"150px"},placeholder:r.$t("addServer.keyPlaceholder"),"onUpdate:modelValue":S=>W(k,S)},null,8,["model-value","placeholder","onUpdate:modelValue"]),s(ee,{modelValue:a.value.env[k],"onUpdate:modelValue":S=>a.value.env[k]=S,style:{flex:"1"},placeholder:r.$t("addServer.valuePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),s(z,{size:"small",type:"danger",icon:_(ue),onClick:S=>x(k)},null,8,["icon","onClick"]),s(pe,{size:"small",type:"success"},{default:v(()=>[D(o(r.$t("common.instance")),1)]),_:1})]))),128))])):P("",!0)]),e.templateConfig.type!=="stdio"?(u(),b("div",An,[n("div",Un,[n("label",Bn,o(r.$t("serverDetail.config.headers")),1),s(z,{size:"small",icon:_(fe),onClick:te},{default:v(()=>[D(o(r.$t("serverDetail.config.addHeader")),1)]),_:1},8,["icon"])]),re.value?(u(),b("div",Rn,[(u(!0),b(Y,null,ae(e.templateConfig.headers,(G,k)=>(u(),b("div",{key:`template-header-${k}`,class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(ee,{"model-value":k,disabled:"",style:{width:"30%","min-width":"150px"}},null,8,["model-value"]),s(ee,{"model-value":e.templateConfig.headers[k],disabled:"",style:{flex:"1"}},null,8,["model-value"]),n("span",zn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)]))),128))])):P("",!0),a.value.headers&&Object.keys(a.value.headers).length>0?(u(),b("div",Nn,[(u(!0),b(Y,null,ae(a.value.headers,(G,k)=>(u(),b("div",{key:h.value[k],class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(ee,{"model-value":k,style:{width:"30%","min-width":"150px"},placeholder:r.$t("addServer.keyPlaceholder"),"onUpdate:modelValue":S=>Z(k,S)},null,8,["model-value","placeholder","onUpdate:modelValue"]),s(ee,{modelValue:a.value.headers[k],"onUpdate:modelValue":S=>a.value.headers[k]=S,style:{flex:"1"},placeholder:r.$t("addServer.valuePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),s(z,{size:"small",type:"danger",icon:_(ue),onClick:S=>ie(k)},null,8,["icon","onClick"]),s(pe,{size:"small",type:"success"},{default:v(()=>[D(o(r.$t("common.instance")),1)]),_:1})]))),128))])):P("",!0)])):P("",!0),n("div",jn,[n("label",On,o(r.$t("serverDetail.config.timeout")),1),n("div",Mn,[s(Te,{"model-value":e.templateConfig.timeout?e.templateConfig.timeout/1e3:60,disabled:"",min:1,max:3600},null,8,["model-value"]),n("span",Pn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])]),n("div",Ln,[n("label",Fn,o(r.$t("common.description")),1),n("div",Hn,[s(ee,{"model-value":e.templateConfig.description,type:"textarea",rows:3,disabled:"",class:"flex-1"},null,8,["model-value"]),n("span",Jn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])]),e.templateConfig.type!=="stdio"?(u(),b("div",qn,[n("div",Wn,[n("label",Gn,o(r.$t("serverDetail.config.proxy")),1),a.value.proxy?(u(),H(z,{key:1,size:"small",type:"danger",icon:_(ue),onClick:R},{default:v(()=>[D(o(r.$t("serverDetail.config.removeProxy")),1)]),_:1},8,["icon"])):(u(),H(z,{key:0,size:"small",icon:_(fe),onClick:R},{default:v(()=>[D(o(r.$t("serverDetail.config.addProxy")),1)]),_:1},8,["icon"]))]),e.templateConfig.proxy&&!a.value.proxy?(u(),b("div",Qn,[n("div",Zn,[s(ee,{"model-value":e.templateConfig.proxy.url,disabled:""},null,8,["model-value"]),n("span",Xn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])])):P("",!0),a.value.proxy?(u(),b("div",Yn,[s(ee,{modelValue:a.value.proxy.url,"onUpdate:modelValue":T[1]||(T[1]=G=>a.value.proxy.url=G),placeholder:r.$t("serverDetail.config.proxyPlaceholder")},null,8,["modelValue","placeholder"]),s(pe,{size:"small",type:"success"},{default:v(()=>[D(o(r.$t("common.instance")),1)]),_:1})])):P("",!0)])):P("",!0),n("div",Kn,[n("div",es,[n("label",ts,o(r.$t("serverDetail.config.tags")),1),s(z,{size:"small",icon:_(fe),onClick:U},{default:v(()=>[D(o(r.$t("common.addTag")),1)]),_:1},8,["icon"])]),e.systemTagDefinitions.length===0?(u(),b("div",as,[T[5]||(T[5]=n("p",null,"暂无标签定义",-1)),s(z,{size:"small",type:"primary",onClick:Ae},{default:v(()=>[...T[4]||(T[4]=[D(" 前往标签设置 ",-1)])]),_:1})])):a.value.tags&&Object.keys(a.value.tags).length>0?(u(),b("div",ls,[(u(!0),b(Y,null,ae(a.value.tags,(G,k)=>(u(),b("div",{key:L.value[k],class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(N,{modelValue:A.value[k],"onUpdate:modelValue":S=>A.value[k]=S,style:{width:"30%","min-width":"150px"},filterable:"",placeholder:"选择标签键",onChange:S=>K(k,S)},{default:v(()=>[(u(!0),b(Y,null,ae(e.systemTagDefinitions,S=>(u(),H(O,{key:S.key,label:S.key,value:S.key},{default:v(()=>[n("span",null,o(S.key),1),n("span",ns,o(S.type),1)]),_:2},1032,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","onChange"]),A.value[k]&&ge(A.value[k])==="enum"?(u(),H(N,{key:0,modelValue:a.value.tags[k],"onUpdate:modelValue":S=>a.value.tags[k]=S,style:{flex:"1"},filterable:"",placeholder:"选择标签值"},{default:v(()=>[(u(!0),b(Y,null,ae(De(A.value[k]),S=>(u(),H(O,{key:S,label:S,value:S},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue"])):A.value[k]&&ge(A.value[k])==="boolean"?(u(),H(Q,{key:1,modelValue:a.value.tags[k],"onUpdate:modelValue":S=>a.value.tags[k]=S,"active-value":"true","inactive-value":"false"},null,8,["modelValue","onUpdate:modelValue"])):A.value[k]&&ge(A.value[k])==="number"?(u(),H(Te,{key:2,"model-value":a.value.tags[k]!==void 0&&a.value.tags[k]!==""?Number(a.value.tags[k]):void 0,"onUpdate:modelValue":S=>a.value.tags[k]=S!=null?String(S):"",style:{flex:"1"},placeholder:"输入数字值"},null,8,["model-value","onUpdate:modelValue"])):(u(),H(ee,{key:3,modelValue:a.value.tags[k],"onUpdate:modelValue":S=>a.value.tags[k]=S,style:{flex:"1"},placeholder:A.value[k]?Ee(A.value[k]):"输入标签值"},null,8,["modelValue","onUpdate:modelValue","placeholder"])),s(z,{size:"small",type:"danger",icon:_(ue),onClick:S=>J(k)},null,8,["icon","onClick"]),s(pe,{size:"small",type:"success"},{default:v(()=>[D(o(r.$t("common.instance")),1)]),_:1})]))),128))])):P("",!0)]),n("div",ss,[n("label",os,o(r.$t("serverDetail.config.autoStart")),1),n("div",rs,[s(Q,{modelValue:a.value.enabled,"onUpdate:modelValue":T[2]||(T[2]=G=>a.value.enabled=G)},null,8,["modelValue"]),s(pe,{size:"small",type:"success"},{default:v(()=>[D(o(r.$t("common.instance")),1)]),_:1})])]),n("div",is,[s(z,{type:"primary",onClick:p},{default:v(()=>[D(o(r.$t("serverDetail.config.save")),1)]),_:1})])]),s(nn,{modelValue:y.value,"onUpdate:modelValue":T[3]||(T[3]=G=>y.value=G),"merged-config":de.value},null,8,["modelValue","merged-config"])])}}}),cs=Ie(us,[["__scopeId","data-v-e7b48052"]]);function ds(e){const m=Le(),l=Lt(),c=Me(),t=M("config"),g=M(null),i=M("config");function I(){const C=l.name;return C==="server-detail-tools"?"tools":C==="server-detail-resources"?"resources":"config"}function B(C){if(!e.value?.name)return;const $=C,h=$==="tools"?"server-detail-tools":$==="resources"?"server-detail-resources":"server-detail-config";m.push({name:h,params:{name:e.value.name}})}function y(){g.value=null}function a(C){g.value=C}function f(){l.query.selection==="template"?g.value=null:l.query.instanceIndex!==void 0?g.value=parseInt(l.query.instanceIndex,10):g.value=null}function E(){l.query.instanceTab==="logs"?i.value="logs":i.value="config"}return Pt(()=>{const C=l.params.name;if(C){const $=c.servers.find(h=>h.name===C);$&&c.selectServer($.id)}t.value=I(),f(),E()}),le(()=>l.params.name,C=>{if(C){const $=c.servers.find(h=>h.name===C);$&&c.selectServer($.id)}}),le(()=>l.name,()=>{t.value=I(),f(),E()}),le(i,C=>{if(!e.value?.name)return;const $={...l.query},h={};for(const[L,A]of Object.entries($))A!=null&&(h[L]=A);C==="config"?delete h.instanceTab:h.instanceTab=C,m.replace({name:l.name,params:l.params,query:h})}),le(()=>c.servers.length,()=>{const C=l.params.name;if(C&&!c.selectedServer){const $=c.servers.find(h=>h.name===C);$&&c.selectServer($.id)}f(),E()}),le(()=>e.value?.id,(C,$)=>{C&&C!==$&&(t.value=I())},{immediate:!0}),le(g,C=>{if(!e.value?.name)return;const $={...l.query},h={};for(const[L,A]of Object.entries($))A!=null&&(h[L]=A);C===null?(h.selection="template",delete h.instanceIndex):(h.instanceIndex=String(C),delete h.selection),m.replace({name:l.name,params:l.params,query:h})}),{activeTopTab:t,selectedInstanceIndex:g,activeInstanceTab:i,getTabFromRoute:I,navigateToTab:B,handleSelectTemplate:y,handleSelectInstance:a}}function ms(e,m){const l=Me(),{t:c}=ve(),t=q(()=>(console.log("[useServerInstances] Computing allServers, store.servers:",l.servers),l.servers.filter(d=>d.name===e.value?.name))),g=q(()=>(console.log("[useServerInstances] Computing serverInstances"),e.value?.rawV11Config?.instances?e.value.rawV11Config.instances.map((d,w)=>{const x=t.value.find(Z=>Z.instances?.some(U=>U.id===d.id))?.instances?.find(Z=>Z.id===d.id);let W="offline",te;const ie=e.value?.rawV11Config?.template?.type;return x?.status?(W=x.status,te=x.pid??void 0):W="offline",{id:d.id,timestamp:d.timestamp??Date.now(),index:d.index??w,displayName:d.displayName,status:W,pid:te,transportType:ie}}):(console.log("[useServerInstances] No instances found in rawV11Config"),[]))),i=q(()=>m.value===null?null:g.value.find(d=>d.index===m.value)||null),I=q(()=>{const d=i.value;if(!d||!e.value?.rawV11Config?.instances)return{args:[],env:{},headers:{},tags:{},enabled:!0};let w;return d.index!==void 0&&(w=e.value.rawV11Config.instances.find(F=>F.index===d.index)),w||(w=e.value.rawV11Config.instances.find(F=>F.id===d.id)),w?{args:w.args??[],env:w.env??{},headers:w.headers??{},tags:w.tags??{},displayName:w.displayName,enabled:w.enabled!==void 0?w.enabled:!0}:{args:[],env:{},headers:{},tags:{},displayName:d.displayName,enabled:!0}}),B=q(()=>e.value?.rawV11Config?.template?e.value.rawV11Config.template:{type:"stdio",args:[],env:{},headers:{},timeout:6e4,aggregatedTools:[]});function y(){return m.value===null?"offline":g.value.find(w=>w.index===m.value)?.status||"offline"}function a(){return m.value===null?null:g.value.find(w=>w.index===m.value)?.id||null}async function f(d){try{console.log("[startServerInstance] Starting instance:",d),l.updateServerStatus(d,"starting"),await l.startServer(d),V.success(c("action.started"))}catch(w){console.error("[startServerInstance] Error:",w),w instanceof Error?V.error(w.message):V.error(String(w))}}async function E(){const d=a();if(!d){V.warning(c("serverDetail.noInstanceSelected"));return}await f(d)}async function C(d){try{console.log("[stopServerInstance] Stopping instance:",d),await l.stopServer(d),V.success(c("action.stopped"))}catch(w){console.error("[stopServerInstance] Error:",w),w instanceof Error?V.error(w.message):V.error(String(w))}}async function $(){const d=a();if(!d){V.warning(c("serverDetail.noInstanceSelected"));return}await C(d)}async function h(d){try{console.log("[restartServerInstance] Restarting instance:",d),l.updateServerStatus(d,"starting");const w=g.value.find(F=>F.id===d);w&&w.status==="online"&&await l.stopServer(d),await l.startServer(d),V.success(c("action.restarted"))}catch(w){console.error("[restartServerInstance] Error:",w),w instanceof Error?V.error(w.message):V.error(String(w))}}async function L(){const d=a();if(!d){V.warning(c("serverDetail.noInstanceSelected"));return}await h(d)}async function A(){if(e.value?.name)try{await l.startAllServerInstances(e.value.name),V.success(c("action.started"))}catch(d){d instanceof Error?V.error(d.message):V.error(String(d))}}async function ne(){if(e.value?.name)try{await l.stopAllServerInstances(e.value.name),V.success(c("action.stopped"))}catch(d){d instanceof Error?V.error(d.message):V.error(String(d))}}async function oe(){if(e.value?.name)try{await l.restartAllServerInstances(e.value.name),V.success(c("action.restarted"))}catch(d){d instanceof Error?V.error(d.message):V.error(String(d))}}async function re(){if(e.value?.name)try{const d=`temp-${Date.now()}`,w=e.value.rawV11Config?.instances||[],F=w.length>0?Math.max(...w.map(W=>W.index??0)):-1,x={id:d,timestamp:Date.now(),index:F+1,enabled:!0,args:[],env:{},headers:{},tags:{}};e.value.rawV11Config&&(e.value.rawV11Config.instances||(e.value.rawV11Config.instances=[]),e.value.rawV11Config.instances.push(x)),await l.addServerInstance(e.value.name),V.success(c("action.instanceAdded"))}catch(d){d instanceof Error?V.error(d.message):V.error(String(d))}}async function de(d,w){if(e.value?.name)try{const x=e.value.rawV11Config?.instances?.find(W=>W.index===d);x&&(x.displayName=w),await l.updateServerInstance(e.value.name,d,{displayName:w}),V.success(c("action.displayNameUpdated"))}catch(F){F instanceof Error?V.error(F.message):V.error(String(F))}}async function j(d){if(e.value?.name)try{await ut.confirm(c("serverDetail.deleteInstanceConfirm"),c("action.delete"),{confirmButtonText:c("action.delete"),cancelButtonText:c("action.cancel"),type:"warning"});const w=e.value.rawV11Config?.instances;if(w){const F=w.findIndex(x=>x.index===d);F!==-1&&w.splice(F,1)}m.value===d&&(m.value=null),await l.removeServerInstance(e.value.name,d),V.success(c("action.instanceDeleted"))}catch(w){w!=="cancel"&&(w instanceof Error?V.error(w.message||"Failed to delete instance"):V.error(String(w)||"Failed to delete instance"))}}async function p(){if(e.value?.name)try{await l.reassignInstanceIndexes(e.value.name),V.success(c("action.indexesReassigned"))}catch(d){d instanceof Error?V.error(d.message):V.error(String(d))}}async function R(d){if(!(!e.value?.name||m.value===null))try{const w=m.value,x=e.value.rawV11Config?.instances?.find(W=>W.index===w);x&&(d.args!==void 0&&(x.args=d.args),d.env!==void 0&&(x.env=d.env),d.headers!==void 0&&(x.headers=d.headers),d.tags!==void 0&&(x.tags=d.tags),d.proxy!==void 0&&(x.proxy=d.proxy),d.displayName!==void 0&&(x.displayName=d.displayName),d.enabled!==void 0&&(x.enabled=d.enabled)),await l.updateServerInstance(e.value.name,w,d),V.success(c("action.configSaved"))}catch(w){w instanceof Error?V.error(w.message):V.error(String(w))}}return{serverInstances:g,selectedInstance:i,selectedInstanceConfig:I,templateConfigForInstance:B,allServers:t,getSelectedInstanceStatus:y,getSelectedInstanceServerId:a,startSelectedInstance:E,stopSelectedInstance:$,restartSelectedInstance:L,startAllInstances:A,stopAllInstances:ne,restartAllInstances:oe,handleAddInstance:re,handleUpdateDisplayName:de,handleDeleteInstance:j,handleReassignIndexes:p,handleUpdateInstanceConfig:R}}function vs(e){const m=Le(),l=M(null),c=M(!1),t=M(!1),g=M(null),i=M(!1),I=M(null),B=M(null);function y(E){if(!e.value)return;let C=E.uri;if(!C.startsWith("hub://")){const $=C.replace(/^[a-zA-Z][a-zA-Z0-9+.-]*:(\/\/)?/,""),h=E.serverIndex??0;C=`hub://servers/${e.value.name}/${h}/${$}`}m.push({name:"resource-detail",params:{name:e.value.name},query:{uri:C,name:E.name,mimeType:E.mimeType}})}function a(E){g.value=E,t.value=!1,c.value=!0}function f(E){const C=I.value;C&&y(C),I.value=null,i.value=!1,B.value=null}return le(I,E=>{E!==null&&(i.value=!0)}),{showInstanceSelectForTool:t,selectedInstanceForTool:g,showCallDialog:c,pendingTool:l,showInstanceSelectForResourceDialog:i,showInstanceSelectForResource:I,selectedInstanceForResource:B,callToolWithInstance:a,viewResourceWithInstance:f}}const fs={key:0,class:"server-detail py-6 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto w-full h-full flex flex-col overflow-hidden transition-colors duration-300"},ps={class:"custom-tabs-label"},gs={class:"flex h-full gap-4 mt-4"},hs={class:"w-1/3 border-r border-gray-200 dark:border-gray-700 pr-4 overflow-y-auto"},ys={class:"flex-1 min-h-0 overflow-y-auto pl-4 pr-4"},bs={key:0,class:"h-full flex flex-col min-h-0"},_s={class:"flex-1 min-h-0 overflow-hidden"},$s={key:1,class:"h-full flex flex-col min-h-0"},Cs={class:"flex-1 min-h-0 overflow-hidden"},ws={class:"custom-tabs-label"},xs={class:"flex-1 min-h-0 overflow-hidden"},ks={class:"custom-tabs-label"},Ss={key:2,class:"flex-1 flex items-center justify-center text-gray-400"},Vs={class:"custom-tabs-label"},Is={class:"custom-tabs-label"},Ts={key:1,class:"h-full flex items-center justify-center text-gray-400"},Ds=ce({__name:"ServerDetail",setup(e){const m=Me();It();const l=Tt(),{config:c}=Ft(l),{t}=ve(),g=Le(),i=q(()=>m.selectedServer),I=q(()=>c.value?.tagDefinitions||[]),{activeTopTab:B,selectedInstanceIndex:y,activeInstanceTab:a,navigateToTab:f,handleSelectTemplate:E,handleSelectInstance:C}=ds(i),{serverInstances:$,selectedInstanceConfig:h,templateConfigForInstance:L,getSelectedInstanceStatus:A,startSelectedInstance:ne,stopSelectedInstance:oe,restartSelectedInstance:re,startAllInstances:de,stopAllInstances:j,restartAllInstances:p,handleAddInstance:R,handleUpdateDisplayName:d,handleDeleteInstance:w,handleReassignIndexes:F,handleUpdateInstanceConfig:x}=ms(i,y),{showCallDialog:W,pendingTool:te,showInstanceSelectForResourceDialog:ie,showInstanceSelectForResource:Z,viewResourceWithInstance:U}=vs(i),J=M(!0),K=M(!1),ge=M(null);le([B,()=>i.value?.name],async([O,N])=>{N&&(O==="tools"?await m.fetchTools(N):O==="resources"&&await m.fetchResources(N))},{immediate:!0}),le([a,()=>i.value?.name,y],([O,N,Q])=>{N&&O==="logs"&&m.fetchLogs(N,Q??0)});function De(){m.selectedServerId=null,g.push({name:"servers"})}const Ee=async()=>{if(i.value)try{await ut.confirm(t("serverDetail.deleteConfirm"),t("action.delete"),{confirmButtonText:t("action.delete"),cancelButtonText:t("action.cancel"),type:"warning"}),await m.deleteServer(i.value.id),V.success(t("action.serverDeleted")),m.selectedServerId=null,g.push({name:"servers"})}catch(O){O!=="cancel"&&(O instanceof Error?V.error(O.message||"Failed to delete server"):V.error(String(O)||"Failed to delete server"))}},Ae=async(O,N)=>{if(!i.value)return;let Q=i.value.config.aggregatedTools;Q==null&&(i.value.tools?Q=i.value.tools.map(G=>G.name):Q=[]),N?Q.includes(O)||(Q=[...Q,O]):Q=Q.filter(G=>G!==O),i.value.config.aggregatedTools=Q;try{await m.updateServer(i.value.id,{config:i.value.config}),V.success(t("action.configSaved"))}catch(G){G instanceof Error?V.error(G.message):V.error(String(G))}},r=async O=>{if(!i.value)return;const N=O&&i.value.tools?i.value.tools.map(Q=>Q.name):[];i.value.config.aggregatedTools=N;try{await m.updateServer(i.value.id,{config:i.value.config}),V.success(t("action.configSaved"))}catch(Q){Q instanceof Error?V.error(Q.message):V.error(String(Q))}},T=async()=>{if(i.value)try{await m.updateServer(i.value.id,{config:i.value.rawV11Config?.template}),V.success(t("action.configSaved"))}catch(O){O instanceof Error?V.error(O.message):V.error(String(O))}},z=O=>{i.value?.rawV11Config&&(i.value.rawV11Config.template=O)},se=()=>{K.value=!0},pe=async O=>{i.value&&(i.value.rawV11Config&&(i.value.rawV11Config.template={...i.value.rawV11Config.template,...O}),await m.updateServer(i.value.id,{config:i.value.rawV11Config?.template}))},ee=async()=>{i.value&&(await m.clearLogs(i.value.id),V.success(t("action.logsCleared")))},Te=()=>{if(i.value){const O=i.value.logs.map(N=>`${ot(N.timestamp)} [${N.level.toUpperCase()}] ${N.message}`).join(`
2
+ `);navigator.clipboard.writeText(O),V.success(t("action.logsCopied"))}};return(O,N)=>{const Q=Se,G=Bt,k=Ut;return i.value?(u(),b("div",fs,[s(Ca,{server:i.value,onBack:De,onDelete:Ee,onRestartAll:_(p),onStartAll:_(de),onStopAll:_(j)},null,8,["server","onRestartAll","onStartAll","onStopAll"]),s(k,{"model-value":_(B),onTabChange:N[6]||(N[6]=S=>_(f)(String(S))),class:"flex-1 flex flex-col overflow-hidden custom-tabs"},{default:v(()=>[s(G,{name:"config",class:"h-full flex flex-col"},{label:v(()=>[n("span",ps,[s(Q,null,{default:v(()=>[s(_(Ye))]),_:1}),n("span",null,o(O.$t("common.config"))+" ("+o(_($).length)+")",1)])]),default:v(()=>[n("div",gs,[n("div",hs,[s(Yl,{instances:_($),"selected-index":_(y),"server-name":i.value.name,"show-template-node":!0,"template-selected":_(y)===null,onSelect:_(C),onSelectTemplate:_(E),onAdd:_(R),onUpdateDisplayName:_(d),onDelete:_(w),onReassignIndexes:_(F)},null,8,["instances","selected-index","server-name","template-selected","onSelect","onSelectTemplate","onAdd","onUpdateDisplayName","onDelete","onReassignIndexes"])]),n("div",ys,[_(y)===null?(u(),b("div",bs,[n("div",_s,[s(tl,{config:i.value.rawV11Config||{template:{type:"stdio",args:[],env:{},headers:{},timeout:6e4,aggregatedTools:[],instanceSelectionStrategy:"random"},instances:[],tagDefinitions:[]},"onUpdate:template":z,onSave:T,onEditJson:se},null,8,["config"])])])):_(y)!==null?(u(),b("div",$s,[n("div",Cs,[s(k,{modelValue:_(a),"onUpdate:modelValue":N[2]||(N[2]=S=>Re(a)?a.value=S:null),class:"instance-detail-tabs h-full flex flex-col"},{default:v(()=>[s(G,{name:"config",class:"h-full flex flex-col min-h-0"},{label:v(()=>[n("span",ws,[s(Q,null,{default:v(()=>[s(_(Ye))]),_:1}),n("span",null,o(O.$t("common.config")),1)])]),default:v(()=>[n("div",xs,[s(cs,{"template-config":_(L),"instance-config":_(h),"server-name":i.value.name,"instance-status":_(A)(),"system-tag-definitions":I.value,onUpdate:_(x),onStartInstance:_(ne),onStopInstance:_(oe),onRestartInstance:_(re),onViewLogs:N[0]||(N[0]=S=>a.value="logs")},null,8,["template-config","instance-config","server-name","instance-status","system-tag-definitions","onUpdate","onStartInstance","onStopInstance","onRestartInstance"])])]),_:1}),s(G,{name:"logs",class:"h-full flex flex-col"},{label:v(()=>[n("span",ks,[s(Q,null,{default:v(()=>[s(_(Dt))]),_:1}),n("span",null,o(O.$t("common.logs")),1)])]),default:v(()=>[s(sl,{logs:i.value.logs,"auto-scroll":J.value,"onUpdate:autoScroll":N[1]||(N[1]=S=>J.value=S),onClear:ee,onCopy:Te},null,8,["logs","auto-scroll"])]),_:1})]),_:1},8,["modelValue"])])])):(u(),b("div",Ss,o(O.$t("serverDetail.noSelection")),1))])])]),_:1}),s(G,{name:"tools",class:"h-full flex flex-col"},{label:v(()=>[n("span",Vs,[s(Q,null,{default:v(()=>[s(_(Et))]),_:1}),n("span",null,o(O.$t("common.tools"))+" ("+o(i.value.toolsCount||0)+")",1)])]),default:v(()=>[s(kl,{tools:i.value.tools||[],"allowed-tools":i.value.config.aggregatedTools,onSelectTool:N[3]||(N[3]=S=>ge.value=S),onUpdateToolVisibility:Ae,onBatchToggleAll:r,onCallTool:N[4]||(N[4]=S=>{te.value=S,W.value=!0})},null,8,["tools","allowed-tools"])]),_:1}),s(G,{name:"resources",class:"h-full flex flex-col"},{label:v(()=>[n("span",Is,[s(Q,null,{default:v(()=>[s(_(At))]),_:1}),n("span",null,o(O.$t("common.resources"))+" ("+o(i.value.resourcesCount||0)+")",1)])]),default:v(()=>[s(Dl,{resources:i.value.resources,onViewResource:N[5]||(N[5]=S=>{Z.value=S})},null,8,["resources"])]),_:1})]),_:1},8,["model-value"]),s(Al,{modelValue:K.value,"onUpdate:modelValue":N[7]||(N[7]=S=>K.value=S),config:i.value.config,"server-name":i.value.name,onSave:pe},null,8,["modelValue","config","server-name"]),s(Bl,{modelValue:_(ie),"onUpdate:modelValue":N[8]||(N[8]=S=>Re(ie)?ie.value=S:null),instances:_($),title:O.$t("serverDetail.selectInstanceForResource"),onConfirm:_(U)},null,8,["modelValue","instances","title","onConfirm"]),_(te)?(u(),H(ta,{key:0,modelValue:_(W),"onUpdate:modelValue":N[9]||(N[9]=S=>Re(W)?W.value=S:null),"server-name":i.value.name,"tool-name":_(te).name,description:_(te).description,"input-schema":_(te).inputSchema},null,8,["modelValue","server-name","tool-name","description","input-schema"])):P("",!0)])):(u(),b("div",Ts,o(O.$t("serverDetail.noServerSelected")),1))}}}),qs=Ie(Ds,[["__scopeId","data-v-fe4c54f6"]]);export{qs as default};
@@ -1,4 +1,4 @@
1
- import{d as pe,e as ve,_ as fe,f as ge,g as ye,h as be,u as oe,j as re,k as Z,p as G,E as S,l as he,b as Se,m as $e,v as ke,r as _e,n as Ve,s as we,t as Ce,o as Ae}from"./index-kC4mf0Vo.js";import{E as xe,a as Ee}from"./el-input-C85p6Nqj.js";import{a as Ie,E as Ue}from"./el-skeleton-item-CupTKK6n.js";import{t as le,x as u,A as y,J as N,u as v,v as ee,a0 as g,$ as n,V as U,C as s,K as Pe,aa as se,c as De,r as A,h as Te,y as H,G as r,O as t,P as O,ai as q,j as ze,ab as je,I as L}from"./vue-vendor-Dwcr0jep.js";import{E as Me,a as Je,b as Be}from"./el-overlay-B_CxiSem.js";import{E as Fe,a as Oe}from"./el-form-item-ySymCPMr.js";import{E as Ne,a as He}from"./el-switch-BosIJ9jf.js";import{_ as Re}from"./ServerStatusTags.vue_vue_type_script_setup_true_lang-DmGg4uuV.js";import{_ as Le}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./event-BB_Ol6Sd.js";import"./_baseClone-BYxCbA_9.js";const qe=pe({header:{type:String,default:""},footer:{type:String,default:""},bodyStyle:{type:ve([String,Object,Array]),default:""},headerClass:String,bodyClass:String,footerClass:String,shadow:{type:String,values:["always","hover","never"],default:void 0}}),Ge=le({name:"ElCard",__name:"card",props:qe,setup(Q){const $=ge("card"),E=ye("card");return(f,_)=>{var P;return u(),y("div",{class:N([v(E).b(),v(E).is(`${f.shadow||((P=v($))==null?void 0:P.shadow)||"always"}-shadow`)])},[f.$slots.header||f.header?(u(),y("div",{key:0,class:N([v(E).e("header"),f.headerClass])},[ee(f.$slots,"header",{},()=>[g(n(f.header),1)])],2)):U("v-if",!0),s("div",{class:N([v(E).e("body"),f.bodyClass]),style:Pe(f.bodyStyle)},[ee(f.$slots,"default")],6),f.$slots.footer||f.footer?(u(),y("div",{key:1,class:N([v(E).e("footer"),f.footerClass])},[ee(f.$slots,"footer",{},()=>[g(n(f.footer),1)])],2)):U("v-if",!0)],2)}}});var Ke=fe(Ge,[["__file","/home/runner/work/element-plus/element-plus/packages/components/card/src/card.vue"]]);const Qe=be(Ke),We={class:"flex gap-4 w-full"},Xe={class:"text-xs text-gray-400"},Ye={class:"text-xs text-gray-400"},Ze={class:"text-xs text-gray-400"},el={class:"w-full flex flex-col gap-2",style:{display:"flex","flex-direction":"column",width:"100%"}},ll={class:"w-full flex flex-col gap-2",style:{display:"flex","flex-direction":"column",width:"100%"}},tl={class:"w-full flex flex-col gap-2",style:{display:"flex","flex-direction":"column",width:"100%"}},al={class:"dialog-footer flex justify-between w-full"},ol={class:"flex gap-2"},rl={key:0,class:"mb-4"},sl={class:"text-green-500 mb-2"},nl={class:"card-header"},il={class:"space-y-2"},dl={key:1,class:"mb-4"},ul={class:"text-red-500 mb-2"},cl={class:"card-header"},ml={class:"space-y-2"},pl={class:"font-bold"},vl={class:"text-sm text-gray-400"},ae=`{
1
+ import{d as pe,e as ve,_ as fe,f as ge,g as ye,h as be,u as oe,j as re,k as Z,p as G,E as S,l as he,b as Se,m as $e,v as ke,r as _e,n as Ve,s as we,t as Ce,o as Ae}from"./index-DkqV9kH4.js";import{E as xe,a as Ee}from"./el-input-5YzZrwir.js";import{a as Ie,E as Ue}from"./el-skeleton-item-DhgR50Jx.js";import{t as le,x as u,A as y,J as N,u as v,v as ee,a0 as g,$ as n,V as U,C as s,K as Pe,aa as se,c as De,r as A,h as Te,y as H,G as r,O as t,P as O,ai as q,j as ze,ab as je,I as L}from"./vue-vendor-Dwcr0jep.js";import{E as Me,a as Je,b as Be}from"./el-overlay-BTeTueuN.js";import{E as Fe,a as Oe}from"./el-form-item-DfWq_kSy.js";import{E as Ne,a as He}from"./el-switch-fF--nMSD.js";import{_ as Re}from"./ServerStatusTags.vue_vue_type_script_setup_true_lang-C8gQlxGE.js";import{_ as Le}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./event-BB_Ol6Sd.js";import"./_baseClone-B991Lvrt.js";const qe=pe({header:{type:String,default:""},footer:{type:String,default:""},bodyStyle:{type:ve([String,Object,Array]),default:""},headerClass:String,bodyClass:String,footerClass:String,shadow:{type:String,values:["always","hover","never"],default:void 0}}),Ge=le({name:"ElCard",__name:"card",props:qe,setup(Q){const $=ge("card"),E=ye("card");return(f,_)=>{var P;return u(),y("div",{class:N([v(E).b(),v(E).is(`${f.shadow||((P=v($))==null?void 0:P.shadow)||"always"}-shadow`)])},[f.$slots.header||f.header?(u(),y("div",{key:0,class:N([v(E).e("header"),f.headerClass])},[ee(f.$slots,"header",{},()=>[g(n(f.header),1)])],2)):U("v-if",!0),s("div",{class:N([v(E).e("body"),f.bodyClass]),style:Pe(f.bodyStyle)},[ee(f.$slots,"default")],6),f.$slots.footer||f.footer?(u(),y("div",{key:1,class:N([v(E).e("footer"),f.footerClass])},[ee(f.$slots,"footer",{},()=>[g(n(f.footer),1)])],2)):U("v-if",!0)],2)}}});var Ke=fe(Ge,[["__file","/home/runner/work/element-plus/element-plus/packages/components/card/src/card.vue"]]);const Qe=be(Ke),We={class:"flex gap-4 w-full"},Xe={class:"text-xs text-gray-400"},Ye={class:"text-xs text-gray-400"},Ze={class:"text-xs text-gray-400"},el={class:"w-full flex flex-col gap-2",style:{display:"flex","flex-direction":"column",width:"100%"}},ll={class:"w-full flex flex-col gap-2",style:{display:"flex","flex-direction":"column",width:"100%"}},tl={class:"w-full flex flex-col gap-2",style:{display:"flex","flex-direction":"column",width:"100%"}},al={class:"dialog-footer flex justify-between w-full"},ol={class:"flex gap-2"},rl={key:0,class:"mb-4"},sl={class:"text-green-500 mb-2"},nl={class:"card-header"},il={class:"space-y-2"},dl={key:1,class:"mb-4"},ul={class:"text-red-500 mb-2"},cl={class:"card-header"},ml={class:"space-y-2"},pl={class:"font-bold"},vl={class:"text-sm text-gray-400"},ae=`{
2
2
  "mcpServers": {
3
3
  }
4
4
  }`,fl=le({__name:"AddServerModal",props:{modelValue:{type:Boolean},initialMode:{}},emits:["update:modelValue"],setup(Q,{emit:$}){const E=Q,f=$,{t:_}=se(),P=oe(),M=De({get:()=>E.modelValue,set:l=>f("update:modelValue",l)}),V=A(!1),D=A(!1),I=A(!1);Te(M,l=>{l&&E.initialMode==="json"&&(V.value=!0)});const J=A(ae),B=A(`{
@@ -1 +1 @@
1
- import{t as b,A as o,C as d,J as u,a0 as g,$ as i,P as c,u as m,V as S,x as l}from"./vue-vendor-Dwcr0jep.js";function x(t){return t?t.split(/[/\\]/).pop()||t:"unknown"}function h(t){const e=new Date(t),a=e.getFullYear(),s=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0"),n=String(e.getHours()).padStart(2,"0"),p=String(e.getMinutes()).padStart(2,"0"),f=String(e.getSeconds()).padStart(2,"0"),y=String(e.getMilliseconds()).padStart(3,"0");return`${a}-${s}-${r} ${n}:${p}:${f}.${y}`}function _(t){const e=new Date(t),a=String(e.getHours()).padStart(2,"0"),s=String(e.getMinutes()).padStart(2,"0"),r=String(e.getSeconds()).padStart(2,"0"),n=String(e.getMilliseconds()).padStart(3,"0");return`${a}:${s}:${r}.${n}`}const k={class:"flex flex-wrap items-center gap-2 w-full"},v={class:"flex items-center gap-2 px-3 py-1 rounded-full text-sm bg-gray-50 dark:bg-gray-800 border border-gray-200 dark:border-gray-700 text-gray-700 dark:text-gray-300"},w={class:"font-medium break-all max-w-full"},C=b({__name:"ServerStatusTags",props:{server:{}},setup(t){const e=t;function a(r){switch(r){case"online":return"bg-green-50 text-green-700 border-green-200 dark:bg-green-900/20 dark:text-green-400 dark:border-green-800";case"error":return"bg-red-50 text-red-700 border-red-200 dark:bg-red-900/20 dark:text-red-400 dark:border-red-800";case"starting":case"stopping":return"bg-yellow-50 text-yellow-700 border-yellow-200 dark:bg-yellow-900/20 dark:text-yellow-400 dark:border-yellow-800";default:return"bg-gray-100 text-gray-600 border-gray-200 dark:bg-gray-800 dark:text-gray-400 dark:border-gray-700"}}function s(r){switch(r){case"online":return"bg-green-500";case"error":return"bg-red-500";case"starting":case"stopping":return"bg-yellow-500";default:return"bg-gray-400"}}return(r,n)=>(l(),o("div",k,[d("div",{class:u(["flex items-center gap-2 px-3 py-1 rounded-full text-sm transition-colors border border-transparent",a(e.server.status)])},[d("div",{class:u(["w-2 h-2 rounded-full",s(e.server.status)])},null,2),g(" "+i(r.$t(`serverDetail.status.${e.server.status}`)),1)],2),d("div",v,[d("span",w,[g(i(e.server.config.type)+" ",1),e.server.config.type==="stdio"?(l(),o(c,{key:0},[g(" - "+i(m(x)(e.server.config.command)),1)],64)):e.server.config.type==="sse"?(l(),o(c,{key:1},[g(" - "+i(e.server.config.url),1)],64)):e.server.config.type==="streamable-http"?(l(),o(c,{key:2},[],64)):S("",!0)])])]))}});export{C as _,h as a,_ as f};
1
+ import{t as b,A as o,C as d,J as u,a0 as i,$ as l,P as c,u as m,V as S,x as g}from"./vue-vendor-Dwcr0jep.js";function x(t){return t?t.split(/[/\\]/).pop()||t:"unknown"}function h(t){const e=new Date(t),a=e.getFullYear(),s=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0"),n=String(e.getHours()).padStart(2,"0"),p=String(e.getMinutes()).padStart(2,"0"),f=String(e.getSeconds()).padStart(2,"0"),y=String(e.getMilliseconds()).padStart(3,"0");return`${a}-${s}-${r} ${n}:${p}:${f}.${y}`}function _(t){const e=new Date(t),a=String(e.getHours()).padStart(2,"0"),s=String(e.getMinutes()).padStart(2,"0"),r=String(e.getSeconds()).padStart(2,"0"),n=String(e.getMilliseconds()).padStart(3,"0");return`${a}:${s}:${r}.${n}`}const k={class:"flex flex-wrap items-center gap-2 w-full"},w={class:"flex items-center gap-2 px-3 py-1 rounded-full text-sm bg-gray-50 dark:bg-gray-800 border border-gray-200 dark:border-gray-700 text-gray-700 dark:text-gray-300"},v={class:"font-medium break-all max-w-full"},C=b({__name:"ServerStatusTags",props:{server:{}},setup(t){const e=t;function a(r){switch(r){case"online":return"bg-green-50 text-green-700 border-green-200 dark:bg-green-900/20 dark:text-green-400 dark:border-green-800";case"error":return"bg-red-50 text-red-700 border-red-200 dark:bg-red-900/20 dark:text-red-400 dark:border-red-800";case"starting":case"stopping":return"bg-yellow-50 text-yellow-700 border-yellow-200 dark:bg-yellow-900/20 dark:text-yellow-400 dark:border-yellow-800";default:return"bg-gray-100 text-gray-600 border-gray-200 dark:bg-gray-800 dark:text-gray-400 dark:border-gray-700"}}function s(r){switch(r){case"online":return"bg-green-500";case"error":return"bg-red-500";case"starting":case"stopping":return"bg-yellow-500";default:return"bg-gray-400"}}return(r,n)=>(g(),o("div",k,[d("div",{class:u(["flex items-center gap-2 px-3 py-1 rounded-full text-sm transition-colors border border-transparent",a(e.server.status)])},[d("div",{class:u(["w-2 h-2 rounded-full",s(e.server.status)])},null,2),i(" "+l(r.$t(`serverDetail.status.${e.server.status}`)),1)],2),d("div",w,[d("span",v,[i(l(e.server.config.type)+" ",1),e.server.config.type==="stdio"?(g(),o(c,{key:0},[i(" - "+l(m(x)(e.server.config.command)),1)],64)):e.server.config.type==="sse"?(g(),o(c,{key:1},[],64)):e.server.config.type==="streamable-http"?(g(),o(c,{key:2},[],64)):S("",!0)])])]))}});export{C as _,h as a,_ as f};
@@ -1 +1 @@
1
- import{j as X,b as Y,p as ie,M as de,k as me,E as G,R as re,aN as ge,aO as pe,aP as ce,aQ as fe,s as ye,K as ve,aR as be,aS as _e,aT as Ve}from"./index-kC4mf0Vo.js";import{v as xe}from"./el-loading-DIjKEx81.js";import{E as he,a as $e}from"./el-tab-pane-BydxdJoc.js";import{E as ke,a as we}from"./el-switch-BosIJ9jf.js";import{a as ee,E as te}from"./el-form-item-ySymCPMr.js";import{a as Ue,E as le}from"./el-input-C85p6Nqj.js";import{E as Te,a as se,b as ae}from"./el-overlay-B_CxiSem.js";import{t as ne,aa as oe,c as S,r as v,A as x,C as n,$ as d,O as t,G as a,u,a0 as P,P as H,ai as Q,V as j,y as A,x as p,h as Ce,am as De,j as Ee,H as Re}from"./vue-vendor-Dwcr0jep.js";import"./raf-Y9AoxecD.js";import"./event-BB_Ol6Sd.js";import"./omit-DxDGRttI.js";import"./_baseClone-BYxCbA_9.js";const Me={class:"tag-manager"},Ne={class:"flex items-center justify-between mb-4"},Se={class:"text-lg font-semibold text-gray-900 dark:text-white"},Pe={key:0,class:"text-center py-8 text-gray-500 dark:text-gray-400"},je={key:1,class:"space-y-3"},Ae={class:"flex-1"},Ie={class:"flex items-center gap-2"},ze={class:"font-medium text-gray-900 dark:text-white"},Be={key:0,class:"text-sm text-gray-500 dark:text-gray-400 mt-1"},Fe={key:1,class:"mt-2"},Oe={class:"flex flex-wrap gap-1"},qe={class:"flex items-center gap-2 ml-4"},Le={class:"flex justify-end gap-2"},Ke={class:"text-gray-600 dark:text-gray-300"},Ze={class:"flex justify-end gap-2"},Ge=ne({__name:"TagManager",props:{modelValue:{}},emits:["update:modelValue"],setup(I,{emit:w}){const U=I,s=w,{t:z}=oe(),f=S({get:()=>U.modelValue||[],set:e=>s("update:modelValue",e)}),D=v(!1),E=v(!1),h=v(!1),k=v(!1),T=v(),b=v(null),g=v({key:"",description:"",type:"string",values:[]}),q={key:[{required:!0,message:"Tag key is required",trigger:"blur"},{pattern:/^[a-zA-Z][a-zA-Z0-9-]*$/,message:"Key must start with a letter and contain only letters, numbers, and hyphens",trigger:"blur"}],type:[{required:!0,message:"Tag type is required",trigger:"change"}],values:[{validator:(e,l,m)=>{g.value.type==="enum"&&(!l||l.length===0)?m(new Error("At least one value is required for enum type")):m()},trigger:"change"}]};function R(){h.value=!1,b.value=null,g.value={key:"",description:"",type:"string",values:[]},D.value=!0}function L(e){h.value=!0,b.value=e,g.value={...e},D.value=!0}function B(){D.value=!1,T.value?.resetFields(),g.value={key:"",description:"",type:"string",values:[]},h.value=!1,b.value=null}function M(){T.value?.validate(e=>{if(e){k.value=!0;try{if(h.value&&b.value){const l=f.value.findIndex(m=>m.key===b.value.key);if(l!==-1){const m=[...f.value];m[l]={...g.value},f.value=m}}else{if(f.value.some(l=>l.key===g.value.key)){G.error("Tag key already exists"),k.value=!1;return}f.value=[...f.value,{...g.value}]}G.success(z("action.saved")),B()}finally{k.value=!1}}})}function K(e){b.value=e,E.value=!0}function J(){if(b.value){k.value=!0;try{f.value=f.value.filter(e=>e.key!==b.value.key),G.success(z("action.saved")),E.value=!1,b.value=null}finally{k.value=!1}}}return(e,l)=>{const m=Y,_=X,W=Ue,y=le,c=te,r=ae,$=se,F=ee,N=Te;return p(),x("div",Me,[n("div",Ne,[n("h3",Se,d(e.$t("settings.tagDefinitions")),1),t(_,{type:"primary",onClick:R},{default:a(()=>[t(m,{class:"mr-1"},{default:a(()=>[t(u(ie))]),_:1}),P(" "+d(e.$t("common.addTag")),1)]),_:1})]),f.value.length===0?(p(),x("div",Pe,d(e.$t("settings.noTagsDefined")),1)):(p(),x("div",je,[(p(!0),x(H,null,Q(f.value,i=>(p(),x("div",{key:i.key,class:"flex items-center justify-between p-4 border rounded-lg dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800/50 transition-colors"},[n("div",Ae,[n("div",Ie,[n("span",ze,d(i.key),1),t(W,{size:"small",type:"info"},{default:a(()=>[P(d(i.type),1)]),_:2},1024)]),i.description?(p(),x("div",Be,d(i.description),1)):j("",!0),i.type==="enum"&&i.values&&i.values.length>0?(p(),x("div",Fe,[n("div",Oe,[(p(!0),x(H,null,Q(i.values,O=>(p(),A(W,{key:O,size:"small",type:"success"},{default:a(()=>[P(d(O),1)]),_:2},1024))),128))])])):j("",!0)]),n("div",qe,[t(_,{size:"small",onClick:O=>L(i)},{default:a(()=>[t(m,null,{default:a(()=>[t(u(de))]),_:1})]),_:1},8,["onClick"]),t(_,{size:"small",type:"danger",onClick:O=>K(i)},{default:a(()=>[t(m,null,{default:a(()=>[t(u(me))]),_:1})]),_:1},8,["onClick"])])]))),128))])),t(N,{modelValue:D.value,"onUpdate:modelValue":l[4]||(l[4]=i=>D.value=i),title:h.value?e.$t("common.editTag"):e.$t("common.addTag"),width:"500px",class:"custom-dialog","before-close":B},{footer:a(()=>[n("div",Le,[t(_,{onClick:B},{default:a(()=>[P(d(e.$t("action.cancel")),1)]),_:1}),t(_,{type:"primary",onClick:M,loading:k.value},{default:a(()=>[P(d(e.$t("action.save")),1)]),_:1},8,["loading"])])]),default:a(()=>[t(F,{model:g.value,rules:q,ref_key:"formRef",ref:T,"label-position":"top"},{default:a(()=>[t(c,{label:e.$t("settings.tagKey"),prop:"key"},{default:a(()=>[t(y,{modelValue:g.value.key,"onUpdate:modelValue":l[0]||(l[0]=i=>g.value.key=i),placeholder:e.$t("settings.tagKeyPlaceholder"),disabled:h.value},null,8,["modelValue","placeholder","disabled"])]),_:1},8,["label"]),t(c,{label:e.$t("settings.tagDescription"),prop:"description"},{default:a(()=>[t(y,{modelValue:g.value.description,"onUpdate:modelValue":l[1]||(l[1]=i=>g.value.description=i),type:"textarea",rows:2,placeholder:e.$t("settings.tagDescriptionPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),t(c,{label:e.$t("settings.tagType"),prop:"type"},{default:a(()=>[t($,{modelValue:g.value.type,"onUpdate:modelValue":l[2]||(l[2]=i=>g.value.type=i),class:"w-full"},{default:a(()=>[t(r,{label:"String",value:"string"}),t(r,{label:"Number",value:"number"}),t(r,{label:"Boolean",value:"boolean"}),t(r,{label:"Enum",value:"enum"})]),_:1},8,["modelValue"])]),_:1},8,["label"]),g.value.type==="enum"?(p(),A(c,{key:0,label:e.$t("settings.tagValues"),prop:"values"},{default:a(()=>[t($,{modelValue:g.value.values,"onUpdate:modelValue":l[3]||(l[3]=i=>g.value.values=i),multiple:"",filterable:"","allow-create":"","default-first-option":"","reserve-keyword":!1,placeholder:e.$t("settings.tagValuesPlaceholder"),class:"w-full"},{default:a(()=>[(p(!0),x(H,null,Q(g.value.values,i=>(p(),A(r,{key:i,label:i,value:i},null,8,["label","value"]))),128))]),_:1},8,["modelValue","placeholder"])]),_:1},8,["label"])):j("",!0)]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),t(N,{modelValue:E.value,"onUpdate:modelValue":l[6]||(l[6]=i=>E.value=i),title:e.$t("common.deleteTag"),width:"400px",class:"custom-dialog"},{footer:a(()=>[n("div",Ze,[t(_,{onClick:l[5]||(l[5]=i=>E.value=!1)},{default:a(()=>[P(d(e.$t("action.cancel")),1)]),_:1}),t(_,{type:"danger",onClick:J,loading:k.value},{default:a(()=>[P(d(e.$t("action.delete")),1)]),_:1},8,["loading"])])]),default:a(()=>[n("p",Ke,d(e.$t("settings.deleteTagConfirm")),1)]),_:1},8,["modelValue","title"])])}}}),V={seconds:1,minutes:60,hours:3600,days:86400},He=["days","hours","minutes","seconds"];function C(I){for(const w of He){const U=V[w];if(I>=U)return w}return"seconds"}function Z(I,w){Ce(I,(U,s)=>{if(s&&U!==s){const z=V[U]/V[s];w.value=Math.round(w.value/z)}})}const We={class:"h-full w-full overflow-y-auto"},Qe={class:"py-6 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto w-full"},Je={class:"mb-6 flex items-center justify-between"},Xe={class:"text-2xl font-bold text-gray-900 dark:text-white"},Ye={class:"pb-10"},et={class:"flex items-center gap-2"},tt={class:"pt-4"},lt={class:"flex flex-col gap-2"},st={class:"flex items-center my-4"},at={class:"text-sm font-medium text-gray-900 dark:text-gray-100 mr-4"},nt={class:"flex items-center gap-2"},ot={class:"flex items-center gap-2"},ut={class:"flex items-center gap-2"},it={class:"flex items-center gap-2"},dt={class:"pt-4"},mt={class:"flex items-center my-4"},rt={class:"text-sm font-medium text-gray-900 dark:text-gray-100 mr-4"},gt={class:"flex items-center gap-2"},pt={class:"pt-4"},ct={class:"text-xs text-gray-500 mt-1"},ft={class:"space-y-4"},yt={class:"flex items-center gap-4"},vt={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},bt={class:"flex items-center gap-4"},_t={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},Vt={class:"flex items-center gap-4"},xt={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},ht={class:"flex items-center gap-2"},$t={class:"flex items-center gap-4"},kt={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},wt={class:"flex items-center gap-2"},Ut={class:"flex items-center gap-2"},Tt={class:"pt-4"},Ct={class:"flex items-center gap-4"},Dt={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},Et={class:"flex items-center gap-2"},Rt={class:"flex items-center gap-4 mt-4"},Mt={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},Nt={class:"flex items-center gap-2"},St={class:"flex items-center gap-4 mt-4"},Pt={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},jt={class:"flex items-center gap-4 mt-4"},At={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},It={class:"flex items-center gap-2"},zt={class:"flex items-center gap-2"},Bt={class:"pt-4"},Yt=ne({__name:"SettingsView",setup(I){const{t:w}=oe(),U=re(),{config:s,loading:z}=De(U),f=v(!1),D=v("system"),E=S({get:()=>{const e=s.value?.system?.logging?.rotationAge||"7d",l=parseInt(e.replace(/[^\d]/g,""))||7;return Number(Math.round(l))},set:e=>{s.value?.system?.logging&&e!==void 0&&e!==null&&(s.value.system.logging.rotationAge=`${e}d`)}}),h=v(C((s.value?.security?.connectionTimeout||3e4)/1e3)),k=S({get:()=>{const l=(s.value?.security?.connectionTimeout||3e4)/1e3,m=C(l),_=l/V[m];return Number(Math.round(_))},set:e=>{s.value?.security&&e!==void 0&&e!==null&&(s.value.security.connectionTimeout=Number(e)*V[h.value]*1e3)}}),T=v(C((s.value?.security?.idleConnectionTimeout||3e5)/1e3)),b=S({get:()=>{const l=(s.value?.security?.idleConnectionTimeout||3e5)/1e3,m=C(l),_=l/V[m];return Number(Math.round(_))},set:e=>{s.value?.security&&e!==void 0&&e!==null&&(s.value.security.idleConnectionTimeout=Number(e)*V[T.value]*1e3)}}),g=v("seconds"),q=S({get:()=>{const l=(s.value?.system?.startup?.startupDelay??3e3)/1e3;return Math.round(l/V[g.value])},set:e=>{if(s.value.system&&(s.value.system.startup||(s.value.system.startup={startupDelay:3e3,readyTimeout:12e4,maxConnectRetries:3,connectRetryDelay:5e3}),e!=null)){const l=e*V[g.value]*1e3,m=Math.max(0,Math.min(6e4,l));s.value.system.startup.startupDelay=m}}}),R=v("seconds"),L=S({get:()=>{const l=(s.value?.system?.startup?.readyTimeout??12e4)/1e3;return Math.round(l/V[R.value])},set:e=>{if(s.value.system?.startup&&e!=null){const l=e*V[R.value]*1e3,m=Math.max(1e4,Math.min(3e5,l));s.value.system.startup.readyTimeout=m}}}),B=S({get:()=>s.value?.system?.startup?.maxConnectRetries??3,set:e=>{s.value.system?.startup&&(s.value.system.startup.maxConnectRetries=e)}}),M=v("seconds"),K=S({get:()=>{const l=(s.value?.system?.startup?.connectRetryDelay??5e3)/1e3;return Math.round(l/V[M.value])},set:e=>{if(s.value.system?.startup&&e!=null){const l=e*V[M.value]*1e3,m=Math.max(1e3,Math.min(3e4,l));s.value.system.startup.connectRetryDelay=m}}});Z(h,k),Z(T,b),Z(g,q),Z(R,L),Z(M,K),Ee(async()=>{s.value.host||await U.fetchConfig(),s.value?.security&&(h.value=C((s.value.security.connectionTimeout||3e4)/1e3),T.value=C((s.value.security.idleConnectionTimeout||3e5)/1e3)),s.value?.system?.startup&&(g.value=C((s.value.system.startup.startupDelay||3e3)/1e3),R.value=C((s.value.system.startup.readyTimeout||12e4)/1e3),M.value=C((s.value.system.startup.connectRetryDelay||5e3)/1e3))});async function J(){f.value=!0;try{await U.updateConfig(s.value),G.success(w("settings.saveSuccess"))}catch(e){G.error(w("settings.saveError")+": "+e.message)}finally{f.value=!1}}return(e,l)=>{const m=Y,_=X,W=le,y=te,c=ke,r=ae,$=se,F=ee,N=$e,i=we,O=he,ue=xe;return p(),x("div",We,[n("div",Qe,[n("div",Je,[n("h1",Xe,d(e.$t("settings.title")),1),t(_,{type:"primary",onClick:J,loading:f.value},{default:a(()=>[t(m,{class:"mr-1"},{default:a(()=>[t(u(ge))]),_:1}),P(" "+d(e.$t("settings.save")),1)]),_:1},8,["loading"])]),Re((p(),x("div",Ye,[t(O,{modelValue:D.value,"onUpdate:modelValue":l[25]||(l[25]=o=>D.value=o),class:"demo-tabs"},{default:a(()=>[t(N,{name:"system"},{label:a(()=>[n("span",et,[t(m,null,{default:a(()=>[t(u(ye))]),_:1}),n("span",null,d(e.$t("settings.systemTab")),1)])]),default:a(()=>[n("div",tt,[t(F,{model:u(s),"label-position":"left","label-width":"260px"},{default:a(()=>[n("div",lt,[t(y,{label:e.$t("settings.host")},{default:a(()=>[t(W,{modelValue:u(s).system.host,"onUpdate:modelValue":l[0]||(l[0]=o=>u(s).system.host=o),class:"w-[200px]"},null,8,["modelValue"])]),_:1},8,["label"]),t(y,{label:e.$t("settings.port")},{default:a(()=>[t(c,{modelValue:u(s).system.port,"onUpdate:modelValue":l[1]||(l[1]=o=>u(s).system.port=o),min:1,max:65535,class:"w-[200px]"},null,8,["modelValue"])]),_:1},8,["label"])]),n("div",st,[n("span",at,d(e.$t("settings.appearance")),1),l[26]||(l[26]=n("div",{class:"h-px bg-gray-200 dark:bg-gray-700 flex-1"},null,-1))]),t(y,{label:e.$t("settings.theme")},{default:a(()=>[t($,{modelValue:u(s).system.theme,"onUpdate:modelValue":l[2]||(l[2]=o=>u(s).system.theme=o),class:"w-[200px]"},{default:a(()=>[t(r,{label:e.$t("settings.themeLight"),value:"light"},{default:a(()=>[n("span",nt,[t(m,null,{default:a(()=>[t(u(pe))]),_:1}),n("span",null,d(e.$t("settings.themeLight")),1)])]),_:1},8,["label"]),t(r,{label:e.$t("settings.themeDark"),value:"dark"},{default:a(()=>[n("span",ot,[t(m,null,{default:a(()=>[t(u(ce))]),_:1}),n("span",null,d(e.$t("settings.themeDark")),1)])]),_:1},8,["label"]),t(r,{label:e.$t("settings.themeSystem"),value:"system"},{default:a(()=>[n("span",ut,[t(m,null,{default:a(()=>[t(u(fe))]),_:1}),n("span",null,d(e.$t("settings.themeSystem")),1)])]),_:1},8,["label"])]),_:1},8,["modelValue"])]),_:1},8,["label"]),t(y,{label:e.$t("settings.language")},{default:a(()=>[t($,{modelValue:u(s).system.language,"onUpdate:modelValue":l[3]||(l[3]=o=>u(s).system.language=o),class:"w-[200px]"},{default:a(()=>[t(r,{label:e.$t("settings.langEn"),value:"en"},null,8,["label"]),t(r,{label:e.$t("settings.langZh"),value:"zh"},null,8,["label"])]),_:1},8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["model"])])]),_:1}),t(N,{name:"logging"},{label:a(()=>[n("span",it,[t(m,null,{default:a(()=>[t(u(ve))]),_:1}),n("span",null,d(e.$t("settings.logging")),1)])]),default:a(()=>[n("div",dt,[u(s).system.logging?(p(),A(F,{key:0,model:u(s).system.logging,"label-position":"left","label-width":"260px"},{default:a(()=>[t(y,{label:e.$t("settings.logLevel")},{default:a(()=>[t($,{modelValue:u(s).system.logging.level,"onUpdate:modelValue":l[4]||(l[4]=o=>u(s).system.logging.level=o),class:"w-full md:w-64"},{default:a(()=>[t(r,{label:"DEBUG",value:"debug"}),t(r,{label:"INFO",value:"info"}),t(r,{label:"WARN",value:"warn"}),t(r,{label:"ERROR",value:"error"})]),_:1},8,["modelValue"])]),_:1},8,["label"]),t(y,{label:e.$t("settings.maxAge")},{default:a(()=>[t(c,{modelValue:E.value,"onUpdate:modelValue":l[5]||(l[5]=o=>E.value=o),min:1,class:"w-[150px]"},null,8,["modelValue"])]),_:1},8,["label"]),n("div",mt,[n("span",rt,d(e.$t("settings.debugOptions")),1),l[27]||(l[27]=n("div",{class:"h-px bg-gray-200 dark:bg-gray-700 flex-1"},null,-1))]),u(s).system.logging.level==="debug"||u(s).isDevMode?(p(),x(H,{key:0},[t(y,{label:e.$t("settings.jsonPretty")},{default:a(()=>[t(i,{modelValue:u(s).system.logging.jsonPretty,"onUpdate:modelValue":l[6]||(l[6]=o=>u(s).system.logging.jsonPretty=o)},null,8,["modelValue"])]),_:1},8,["label"]),t(y,{label:e.$t("settings.mcpCommDebug")},{default:a(()=>[t(i,{modelValue:u(s).system.logging.mcpCommDebug,"onUpdate:modelValue":l[7]||(l[7]=o=>u(s).system.logging.mcpCommDebug=o)},null,8,["modelValue"])]),_:1},8,["label"]),t(y,{label:e.$t("settings.apiDebug")},{default:a(()=>[t(i,{modelValue:u(s).system.logging.apiDebug,"onUpdate:modelValue":l[8]||(l[8]=o=>u(s).system.logging.apiDebug=o)},null,8,["modelValue"])]),_:1},8,["label"]),t(y,{label:e.$t("settings.gatewayDebug")},{default:a(()=>[t(i,{modelValue:u(s).system.logging.gatewayDebug,"onUpdate:modelValue":l[9]||(l[9]=o=>u(s).system.logging.gatewayDebug=o)},null,8,["modelValue"])]),_:1},8,["label"])],64)):j("",!0)]),_:1},8,["model"])):j("",!0)])]),_:1}),t(N,{name:"security"},{label:a(()=>[n("span",gt,[t(m,null,{default:a(()=>[t(u(be))]),_:1}),n("span",null,d(e.$t("settings.security")),1)])]),default:a(()=>[n("div",pt,[u(s).security?(p(),A(F,{key:0,model:u(s).security,"label-position":"left","label-width":"260px"},{default:a(()=>[t(y,{label:e.$t("settings.allowedNetworks")},{default:a(()=>[t($,{modelValue:u(s).security.allowedNetworks,"onUpdate:modelValue":l[10]||(l[10]=o=>u(s).security.allowedNetworks=o),multiple:"",filterable:"","allow-create":"","default-first-option":"","reserve-keyword":!1,placeholder:"Enter IP CIDR",class:"w-full"},{default:a(()=>[(p(!0),x(H,null,Q(u(s).security.allowedNetworks,o=>(p(),A(r,{key:o,label:o,value:o},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),n("div",ct,d(e.$t("settings.allowedNetworksHint")),1)]),_:1},8,["label"]),n("div",ft,[n("div",yt,[n("span",vt,d(e.$t("settings.maxConcurrentConnections")),1),t(c,{modelValue:u(s).security.maxConcurrentConnections,"onUpdate:modelValue":l[11]||(l[11]=o=>u(s).security.maxConcurrentConnections=o),min:1,max:1e3,style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"])]),n("div",bt,[n("span",_t,d(e.$t("settings.maxConnections")),1),t(c,{modelValue:u(s).security.maxConnections,"onUpdate:modelValue":l[12]||(l[12]=o=>u(s).security.maxConnections=o),min:1,max:1e3,style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"])]),n("div",Vt,[n("span",xt,d(e.$t("settings.connectionTimeout")),1),n("div",ht,[t(c,{modelValue:k.value,"onUpdate:modelValue":l[13]||(l[13]=o=>k.value=o),min:1,style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"]),t($,{modelValue:h.value,"onUpdate:modelValue":l[14]||(l[14]=o=>h.value=o),style:{width:"128px","flex-shrink":"0"}},{default:a(()=>[t(r,{label:e.$t("settings.timeUnits.seconds"),value:"seconds"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.minutes"),value:"minutes"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.hours"),value:"hours"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.days"),value:"days"},null,8,["label"])]),_:1},8,["modelValue"])])]),n("div",$t,[n("span",kt,d(e.$t("settings.idleConnectionTimeout")),1),n("div",wt,[t(c,{modelValue:b.value,"onUpdate:modelValue":l[15]||(l[15]=o=>b.value=o),min:1,style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"]),t($,{modelValue:T.value,"onUpdate:modelValue":l[16]||(l[16]=o=>T.value=o),style:{width:"128px","flex-shrink":"0"}},{default:a(()=>[t(r,{label:e.$t("settings.timeUnits.seconds"),value:"seconds"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.minutes"),value:"minutes"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.hours"),value:"hours"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.days"),value:"days"},null,8,["label"])]),_:1},8,["modelValue"])])])])]),_:1},8,["model"])):j("",!0)])]),_:1}),t(N,{name:"startup"},{label:a(()=>[n("span",Ut,[t(m,null,{default:a(()=>[t(u(_e))]),_:1}),n("span",null,d(e.$t("settings.startupTab")),1)])]),default:a(()=>[n("div",Tt,[u(s).system?(p(),A(F,{key:0,model:u(s).system,"label-position":"left","label-width":"260px"},{default:a(()=>[n("div",Ct,[n("span",Dt,d(e.$t("settings.startupDelay")),1),n("div",Et,[t(c,{modelValue:q.value,"onUpdate:modelValue":l[17]||(l[17]=o=>q.value=o),style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"]),t($,{modelValue:g.value,"onUpdate:modelValue":l[18]||(l[18]=o=>g.value=o),style:{width:"128px","flex-shrink":"0"}},{default:a(()=>[t(r,{label:e.$t("settings.timeUnits.seconds"),value:"seconds"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.minutes"),value:"minutes"},null,8,["label"])]),_:1},8,["modelValue"])])]),n("div",Rt,[n("span",Mt,d(e.$t("settings.readyTimeout")),1),n("div",Nt,[t(c,{modelValue:L.value,"onUpdate:modelValue":l[19]||(l[19]=o=>L.value=o),style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"]),t($,{modelValue:R.value,"onUpdate:modelValue":l[20]||(l[20]=o=>R.value=o),style:{width:"128px","flex-shrink":"0"}},{default:a(()=>[t(r,{label:e.$t("settings.timeUnits.seconds"),value:"seconds"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.minutes"),value:"minutes"},null,8,["label"])]),_:1},8,["modelValue"])])]),n("div",St,[n("span",Pt,d(e.$t("settings.maxConnectRetries")),1),t(c,{modelValue:B.value,"onUpdate:modelValue":l[21]||(l[21]=o=>B.value=o),min:0,max:10,style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"])]),n("div",jt,[n("span",At,d(e.$t("settings.connectRetryDelay")),1),n("div",It,[t(c,{modelValue:K.value,"onUpdate:modelValue":l[22]||(l[22]=o=>K.value=o),style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"]),t($,{modelValue:M.value,"onUpdate:modelValue":l[23]||(l[23]=o=>M.value=o),style:{width:"128px","flex-shrink":"0"}},{default:a(()=>[t(r,{label:e.$t("settings.timeUnits.seconds"),value:"seconds"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.minutes"),value:"minutes"},null,8,["label"])]),_:1},8,["modelValue"])])])]),_:1},8,["model"])):j("",!0)])]),_:1}),t(N,{name:"tags"},{label:a(()=>[n("span",zt,[t(m,null,{default:a(()=>[t(u(Ve))]),_:1}),n("span",null,d(e.$t("settings.tagsTab")),1)])]),default:a(()=>[n("div",Bt,[t(Ge,{modelValue:u(s).tagDefinitions,"onUpdate:modelValue":l[24]||(l[24]=o=>u(s).tagDefinitions=o)},null,8,["modelValue"])])]),_:1})]),_:1},8,["modelValue"])])),[[ue,u(z)]])])])}}});export{Yt as default};
1
+ import{j as X,b as Y,p as ie,M as de,k as me,E as G,R as re,aN as ge,aO as pe,aP as ce,aQ as fe,s as ye,K as ve,aR as be,aS as _e,aT as Ve}from"./index-DkqV9kH4.js";import{v as xe}from"./el-loading-DE3FcxNH.js";import{E as he,a as $e}from"./el-tab-pane-rvS_KTwP.js";import{E as ke,a as we}from"./el-switch-fF--nMSD.js";import{a as ee,E as te}from"./el-form-item-DfWq_kSy.js";import{a as Ue,E as le}from"./el-input-5YzZrwir.js";import{E as Te,a as se,b as ae}from"./el-overlay-BTeTueuN.js";import{t as ne,aa as oe,c as S,r as v,A as x,C as n,$ as d,O as t,G as a,u,a0 as P,P as H,ai as Q,V as j,y as A,x as p,h as Ce,am as De,j as Ee,H as Re}from"./vue-vendor-Dwcr0jep.js";import"./raf-Cj-gATZv.js";import"./event-BB_Ol6Sd.js";import"./omit-BIIebEYo.js";import"./_baseClone-B991Lvrt.js";const Me={class:"tag-manager"},Ne={class:"flex items-center justify-between mb-4"},Se={class:"text-lg font-semibold text-gray-900 dark:text-white"},Pe={key:0,class:"text-center py-8 text-gray-500 dark:text-gray-400"},je={key:1,class:"space-y-3"},Ae={class:"flex-1"},Ie={class:"flex items-center gap-2"},ze={class:"font-medium text-gray-900 dark:text-white"},Be={key:0,class:"text-sm text-gray-500 dark:text-gray-400 mt-1"},Fe={key:1,class:"mt-2"},Oe={class:"flex flex-wrap gap-1"},qe={class:"flex items-center gap-2 ml-4"},Le={class:"flex justify-end gap-2"},Ke={class:"text-gray-600 dark:text-gray-300"},Ze={class:"flex justify-end gap-2"},Ge=ne({__name:"TagManager",props:{modelValue:{}},emits:["update:modelValue"],setup(I,{emit:w}){const U=I,s=w,{t:z}=oe(),f=S({get:()=>U.modelValue||[],set:e=>s("update:modelValue",e)}),D=v(!1),E=v(!1),h=v(!1),k=v(!1),T=v(),b=v(null),g=v({key:"",description:"",type:"string",values:[]}),q={key:[{required:!0,message:"Tag key is required",trigger:"blur"},{pattern:/^[a-zA-Z][a-zA-Z0-9-]*$/,message:"Key must start with a letter and contain only letters, numbers, and hyphens",trigger:"blur"}],type:[{required:!0,message:"Tag type is required",trigger:"change"}],values:[{validator:(e,l,m)=>{g.value.type==="enum"&&(!l||l.length===0)?m(new Error("At least one value is required for enum type")):m()},trigger:"change"}]};function R(){h.value=!1,b.value=null,g.value={key:"",description:"",type:"string",values:[]},D.value=!0}function L(e){h.value=!0,b.value=e,g.value={...e},D.value=!0}function B(){D.value=!1,T.value?.resetFields(),g.value={key:"",description:"",type:"string",values:[]},h.value=!1,b.value=null}function M(){T.value?.validate(e=>{if(e){k.value=!0;try{if(h.value&&b.value){const l=f.value.findIndex(m=>m.key===b.value.key);if(l!==-1){const m=[...f.value];m[l]={...g.value},f.value=m}}else{if(f.value.some(l=>l.key===g.value.key)){G.error("Tag key already exists"),k.value=!1;return}f.value=[...f.value,{...g.value}]}G.success(z("action.saved")),B()}finally{k.value=!1}}})}function K(e){b.value=e,E.value=!0}function J(){if(b.value){k.value=!0;try{f.value=f.value.filter(e=>e.key!==b.value.key),G.success(z("action.saved")),E.value=!1,b.value=null}finally{k.value=!1}}}return(e,l)=>{const m=Y,_=X,W=Ue,y=le,c=te,r=ae,$=se,F=ee,N=Te;return p(),x("div",Me,[n("div",Ne,[n("h3",Se,d(e.$t("settings.tagDefinitions")),1),t(_,{type:"primary",onClick:R},{default:a(()=>[t(m,{class:"mr-1"},{default:a(()=>[t(u(ie))]),_:1}),P(" "+d(e.$t("common.addTag")),1)]),_:1})]),f.value.length===0?(p(),x("div",Pe,d(e.$t("settings.noTagsDefined")),1)):(p(),x("div",je,[(p(!0),x(H,null,Q(f.value,i=>(p(),x("div",{key:i.key,class:"flex items-center justify-between p-4 border rounded-lg dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800/50 transition-colors"},[n("div",Ae,[n("div",Ie,[n("span",ze,d(i.key),1),t(W,{size:"small",type:"info"},{default:a(()=>[P(d(i.type),1)]),_:2},1024)]),i.description?(p(),x("div",Be,d(i.description),1)):j("",!0),i.type==="enum"&&i.values&&i.values.length>0?(p(),x("div",Fe,[n("div",Oe,[(p(!0),x(H,null,Q(i.values,O=>(p(),A(W,{key:O,size:"small",type:"success"},{default:a(()=>[P(d(O),1)]),_:2},1024))),128))])])):j("",!0)]),n("div",qe,[t(_,{size:"small",onClick:O=>L(i)},{default:a(()=>[t(m,null,{default:a(()=>[t(u(de))]),_:1})]),_:1},8,["onClick"]),t(_,{size:"small",type:"danger",onClick:O=>K(i)},{default:a(()=>[t(m,null,{default:a(()=>[t(u(me))]),_:1})]),_:1},8,["onClick"])])]))),128))])),t(N,{modelValue:D.value,"onUpdate:modelValue":l[4]||(l[4]=i=>D.value=i),title:h.value?e.$t("common.editTag"):e.$t("common.addTag"),width:"500px",class:"custom-dialog","before-close":B},{footer:a(()=>[n("div",Le,[t(_,{onClick:B},{default:a(()=>[P(d(e.$t("action.cancel")),1)]),_:1}),t(_,{type:"primary",onClick:M,loading:k.value},{default:a(()=>[P(d(e.$t("action.save")),1)]),_:1},8,["loading"])])]),default:a(()=>[t(F,{model:g.value,rules:q,ref_key:"formRef",ref:T,"label-position":"top"},{default:a(()=>[t(c,{label:e.$t("settings.tagKey"),prop:"key"},{default:a(()=>[t(y,{modelValue:g.value.key,"onUpdate:modelValue":l[0]||(l[0]=i=>g.value.key=i),placeholder:e.$t("settings.tagKeyPlaceholder"),disabled:h.value},null,8,["modelValue","placeholder","disabled"])]),_:1},8,["label"]),t(c,{label:e.$t("settings.tagDescription"),prop:"description"},{default:a(()=>[t(y,{modelValue:g.value.description,"onUpdate:modelValue":l[1]||(l[1]=i=>g.value.description=i),type:"textarea",rows:2,placeholder:e.$t("settings.tagDescriptionPlaceholder")},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),t(c,{label:e.$t("settings.tagType"),prop:"type"},{default:a(()=>[t($,{modelValue:g.value.type,"onUpdate:modelValue":l[2]||(l[2]=i=>g.value.type=i),class:"w-full"},{default:a(()=>[t(r,{label:"String",value:"string"}),t(r,{label:"Number",value:"number"}),t(r,{label:"Boolean",value:"boolean"}),t(r,{label:"Enum",value:"enum"})]),_:1},8,["modelValue"])]),_:1},8,["label"]),g.value.type==="enum"?(p(),A(c,{key:0,label:e.$t("settings.tagValues"),prop:"values"},{default:a(()=>[t($,{modelValue:g.value.values,"onUpdate:modelValue":l[3]||(l[3]=i=>g.value.values=i),multiple:"",filterable:"","allow-create":"","default-first-option":"","reserve-keyword":!1,placeholder:e.$t("settings.tagValuesPlaceholder"),class:"w-full"},{default:a(()=>[(p(!0),x(H,null,Q(g.value.values,i=>(p(),A(r,{key:i,label:i,value:i},null,8,["label","value"]))),128))]),_:1},8,["modelValue","placeholder"])]),_:1},8,["label"])):j("",!0)]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),t(N,{modelValue:E.value,"onUpdate:modelValue":l[6]||(l[6]=i=>E.value=i),title:e.$t("common.deleteTag"),width:"400px",class:"custom-dialog"},{footer:a(()=>[n("div",Ze,[t(_,{onClick:l[5]||(l[5]=i=>E.value=!1)},{default:a(()=>[P(d(e.$t("action.cancel")),1)]),_:1}),t(_,{type:"danger",onClick:J,loading:k.value},{default:a(()=>[P(d(e.$t("action.delete")),1)]),_:1},8,["loading"])])]),default:a(()=>[n("p",Ke,d(e.$t("settings.deleteTagConfirm")),1)]),_:1},8,["modelValue","title"])])}}}),V={seconds:1,minutes:60,hours:3600,days:86400},He=["days","hours","minutes","seconds"];function C(I){for(const w of He){const U=V[w];if(I>=U)return w}return"seconds"}function Z(I,w){Ce(I,(U,s)=>{if(s&&U!==s){const z=V[U]/V[s];w.value=Math.round(w.value/z)}})}const We={class:"h-full w-full overflow-y-auto"},Qe={class:"py-6 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto w-full"},Je={class:"mb-6 flex items-center justify-between"},Xe={class:"text-2xl font-bold text-gray-900 dark:text-white"},Ye={class:"pb-10"},et={class:"flex items-center gap-2"},tt={class:"pt-4"},lt={class:"flex flex-col gap-2"},st={class:"flex items-center my-4"},at={class:"text-sm font-medium text-gray-900 dark:text-gray-100 mr-4"},nt={class:"flex items-center gap-2"},ot={class:"flex items-center gap-2"},ut={class:"flex items-center gap-2"},it={class:"flex items-center gap-2"},dt={class:"pt-4"},mt={class:"flex items-center my-4"},rt={class:"text-sm font-medium text-gray-900 dark:text-gray-100 mr-4"},gt={class:"flex items-center gap-2"},pt={class:"pt-4"},ct={class:"text-xs text-gray-500 mt-1"},ft={class:"space-y-4"},yt={class:"flex items-center gap-4"},vt={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},bt={class:"flex items-center gap-4"},_t={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},Vt={class:"flex items-center gap-4"},xt={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},ht={class:"flex items-center gap-2"},$t={class:"flex items-center gap-4"},kt={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},wt={class:"flex items-center gap-2"},Ut={class:"flex items-center gap-2"},Tt={class:"pt-4"},Ct={class:"flex items-center gap-4"},Dt={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},Et={class:"flex items-center gap-2"},Rt={class:"flex items-center gap-4 mt-4"},Mt={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},Nt={class:"flex items-center gap-2"},St={class:"flex items-center gap-4 mt-4"},Pt={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},jt={class:"flex items-center gap-4 mt-4"},At={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},It={class:"flex items-center gap-2"},zt={class:"flex items-center gap-2"},Bt={class:"pt-4"},Yt=ne({__name:"SettingsView",setup(I){const{t:w}=oe(),U=re(),{config:s,loading:z}=De(U),f=v(!1),D=v("system"),E=S({get:()=>{const e=s.value?.system?.logging?.rotationAge||"7d",l=parseInt(e.replace(/[^\d]/g,""))||7;return Number(Math.round(l))},set:e=>{s.value?.system?.logging&&e!==void 0&&e!==null&&(s.value.system.logging.rotationAge=`${e}d`)}}),h=v(C((s.value?.security?.connectionTimeout||3e4)/1e3)),k=S({get:()=>{const l=(s.value?.security?.connectionTimeout||3e4)/1e3,m=C(l),_=l/V[m];return Number(Math.round(_))},set:e=>{s.value?.security&&e!==void 0&&e!==null&&(s.value.security.connectionTimeout=Number(e)*V[h.value]*1e3)}}),T=v(C((s.value?.security?.idleConnectionTimeout||3e5)/1e3)),b=S({get:()=>{const l=(s.value?.security?.idleConnectionTimeout||3e5)/1e3,m=C(l),_=l/V[m];return Number(Math.round(_))},set:e=>{s.value?.security&&e!==void 0&&e!==null&&(s.value.security.idleConnectionTimeout=Number(e)*V[T.value]*1e3)}}),g=v("seconds"),q=S({get:()=>{const l=(s.value?.system?.startup?.startupDelay??3e3)/1e3;return Math.round(l/V[g.value])},set:e=>{if(s.value.system&&(s.value.system.startup||(s.value.system.startup={startupDelay:3e3,readyTimeout:12e4,maxConnectRetries:3,connectRetryDelay:5e3}),e!=null)){const l=e*V[g.value]*1e3,m=Math.max(0,Math.min(6e4,l));s.value.system.startup.startupDelay=m}}}),R=v("seconds"),L=S({get:()=>{const l=(s.value?.system?.startup?.readyTimeout??12e4)/1e3;return Math.round(l/V[R.value])},set:e=>{if(s.value.system?.startup&&e!=null){const l=e*V[R.value]*1e3,m=Math.max(1e4,Math.min(3e5,l));s.value.system.startup.readyTimeout=m}}}),B=S({get:()=>s.value?.system?.startup?.maxConnectRetries??3,set:e=>{s.value.system?.startup&&(s.value.system.startup.maxConnectRetries=e)}}),M=v("seconds"),K=S({get:()=>{const l=(s.value?.system?.startup?.connectRetryDelay??5e3)/1e3;return Math.round(l/V[M.value])},set:e=>{if(s.value.system?.startup&&e!=null){const l=e*V[M.value]*1e3,m=Math.max(1e3,Math.min(3e4,l));s.value.system.startup.connectRetryDelay=m}}});Z(h,k),Z(T,b),Z(g,q),Z(R,L),Z(M,K),Ee(async()=>{s.value.host||await U.fetchConfig(),s.value?.security&&(h.value=C((s.value.security.connectionTimeout||3e4)/1e3),T.value=C((s.value.security.idleConnectionTimeout||3e5)/1e3)),s.value?.system?.startup&&(g.value=C((s.value.system.startup.startupDelay||3e3)/1e3),R.value=C((s.value.system.startup.readyTimeout||12e4)/1e3),M.value=C((s.value.system.startup.connectRetryDelay||5e3)/1e3))});async function J(){f.value=!0;try{await U.updateConfig(s.value),G.success(w("settings.saveSuccess"))}catch(e){G.error(w("settings.saveError")+": "+e.message)}finally{f.value=!1}}return(e,l)=>{const m=Y,_=X,W=le,y=te,c=ke,r=ae,$=se,F=ee,N=$e,i=we,O=he,ue=xe;return p(),x("div",We,[n("div",Qe,[n("div",Je,[n("h1",Xe,d(e.$t("settings.title")),1),t(_,{type:"primary",onClick:J,loading:f.value},{default:a(()=>[t(m,{class:"mr-1"},{default:a(()=>[t(u(ge))]),_:1}),P(" "+d(e.$t("settings.save")),1)]),_:1},8,["loading"])]),Re((p(),x("div",Ye,[t(O,{modelValue:D.value,"onUpdate:modelValue":l[25]||(l[25]=o=>D.value=o),class:"demo-tabs"},{default:a(()=>[t(N,{name:"system"},{label:a(()=>[n("span",et,[t(m,null,{default:a(()=>[t(u(ye))]),_:1}),n("span",null,d(e.$t("settings.systemTab")),1)])]),default:a(()=>[n("div",tt,[t(F,{model:u(s),"label-position":"left","label-width":"260px"},{default:a(()=>[n("div",lt,[t(y,{label:e.$t("settings.host")},{default:a(()=>[t(W,{modelValue:u(s).system.host,"onUpdate:modelValue":l[0]||(l[0]=o=>u(s).system.host=o),class:"w-[200px]"},null,8,["modelValue"])]),_:1},8,["label"]),t(y,{label:e.$t("settings.port")},{default:a(()=>[t(c,{modelValue:u(s).system.port,"onUpdate:modelValue":l[1]||(l[1]=o=>u(s).system.port=o),min:1,max:65535,class:"w-[200px]"},null,8,["modelValue"])]),_:1},8,["label"])]),n("div",st,[n("span",at,d(e.$t("settings.appearance")),1),l[26]||(l[26]=n("div",{class:"h-px bg-gray-200 dark:bg-gray-700 flex-1"},null,-1))]),t(y,{label:e.$t("settings.theme")},{default:a(()=>[t($,{modelValue:u(s).system.theme,"onUpdate:modelValue":l[2]||(l[2]=o=>u(s).system.theme=o),class:"w-[200px]"},{default:a(()=>[t(r,{label:e.$t("settings.themeLight"),value:"light"},{default:a(()=>[n("span",nt,[t(m,null,{default:a(()=>[t(u(pe))]),_:1}),n("span",null,d(e.$t("settings.themeLight")),1)])]),_:1},8,["label"]),t(r,{label:e.$t("settings.themeDark"),value:"dark"},{default:a(()=>[n("span",ot,[t(m,null,{default:a(()=>[t(u(ce))]),_:1}),n("span",null,d(e.$t("settings.themeDark")),1)])]),_:1},8,["label"]),t(r,{label:e.$t("settings.themeSystem"),value:"system"},{default:a(()=>[n("span",ut,[t(m,null,{default:a(()=>[t(u(fe))]),_:1}),n("span",null,d(e.$t("settings.themeSystem")),1)])]),_:1},8,["label"])]),_:1},8,["modelValue"])]),_:1},8,["label"]),t(y,{label:e.$t("settings.language")},{default:a(()=>[t($,{modelValue:u(s).system.language,"onUpdate:modelValue":l[3]||(l[3]=o=>u(s).system.language=o),class:"w-[200px]"},{default:a(()=>[t(r,{label:e.$t("settings.langEn"),value:"en"},null,8,["label"]),t(r,{label:e.$t("settings.langZh"),value:"zh"},null,8,["label"])]),_:1},8,["modelValue"])]),_:1},8,["label"])]),_:1},8,["model"])])]),_:1}),t(N,{name:"logging"},{label:a(()=>[n("span",it,[t(m,null,{default:a(()=>[t(u(ve))]),_:1}),n("span",null,d(e.$t("settings.logging")),1)])]),default:a(()=>[n("div",dt,[u(s).system.logging?(p(),A(F,{key:0,model:u(s).system.logging,"label-position":"left","label-width":"260px"},{default:a(()=>[t(y,{label:e.$t("settings.logLevel")},{default:a(()=>[t($,{modelValue:u(s).system.logging.level,"onUpdate:modelValue":l[4]||(l[4]=o=>u(s).system.logging.level=o),class:"w-full md:w-64"},{default:a(()=>[t(r,{label:"DEBUG",value:"debug"}),t(r,{label:"INFO",value:"info"}),t(r,{label:"WARN",value:"warn"}),t(r,{label:"ERROR",value:"error"})]),_:1},8,["modelValue"])]),_:1},8,["label"]),t(y,{label:e.$t("settings.maxAge")},{default:a(()=>[t(c,{modelValue:E.value,"onUpdate:modelValue":l[5]||(l[5]=o=>E.value=o),min:1,class:"w-[150px]"},null,8,["modelValue"])]),_:1},8,["label"]),n("div",mt,[n("span",rt,d(e.$t("settings.debugOptions")),1),l[27]||(l[27]=n("div",{class:"h-px bg-gray-200 dark:bg-gray-700 flex-1"},null,-1))]),u(s).system.logging.level==="debug"||u(s).isDevMode?(p(),x(H,{key:0},[t(y,{label:e.$t("settings.jsonPretty")},{default:a(()=>[t(i,{modelValue:u(s).system.logging.jsonPretty,"onUpdate:modelValue":l[6]||(l[6]=o=>u(s).system.logging.jsonPretty=o)},null,8,["modelValue"])]),_:1},8,["label"]),t(y,{label:e.$t("settings.mcpCommDebug")},{default:a(()=>[t(i,{modelValue:u(s).system.logging.mcpCommDebug,"onUpdate:modelValue":l[7]||(l[7]=o=>u(s).system.logging.mcpCommDebug=o)},null,8,["modelValue"])]),_:1},8,["label"]),t(y,{label:e.$t("settings.apiDebug")},{default:a(()=>[t(i,{modelValue:u(s).system.logging.apiDebug,"onUpdate:modelValue":l[8]||(l[8]=o=>u(s).system.logging.apiDebug=o)},null,8,["modelValue"])]),_:1},8,["label"]),t(y,{label:e.$t("settings.gatewayDebug")},{default:a(()=>[t(i,{modelValue:u(s).system.logging.gatewayDebug,"onUpdate:modelValue":l[9]||(l[9]=o=>u(s).system.logging.gatewayDebug=o)},null,8,["modelValue"])]),_:1},8,["label"])],64)):j("",!0)]),_:1},8,["model"])):j("",!0)])]),_:1}),t(N,{name:"security"},{label:a(()=>[n("span",gt,[t(m,null,{default:a(()=>[t(u(be))]),_:1}),n("span",null,d(e.$t("settings.security")),1)])]),default:a(()=>[n("div",pt,[u(s).security?(p(),A(F,{key:0,model:u(s).security,"label-position":"left","label-width":"260px"},{default:a(()=>[t(y,{label:e.$t("settings.allowedNetworks")},{default:a(()=>[t($,{modelValue:u(s).security.allowedNetworks,"onUpdate:modelValue":l[10]||(l[10]=o=>u(s).security.allowedNetworks=o),multiple:"",filterable:"","allow-create":"","default-first-option":"","reserve-keyword":!1,placeholder:"Enter IP CIDR",class:"w-full"},{default:a(()=>[(p(!0),x(H,null,Q(u(s).security.allowedNetworks,o=>(p(),A(r,{key:o,label:o,value:o},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),n("div",ct,d(e.$t("settings.allowedNetworksHint")),1)]),_:1},8,["label"]),n("div",ft,[n("div",yt,[n("span",vt,d(e.$t("settings.maxConcurrentConnections")),1),t(c,{modelValue:u(s).security.maxConcurrentConnections,"onUpdate:modelValue":l[11]||(l[11]=o=>u(s).security.maxConcurrentConnections=o),min:1,max:1e3,style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"])]),n("div",bt,[n("span",_t,d(e.$t("settings.maxConnections")),1),t(c,{modelValue:u(s).security.maxConnections,"onUpdate:modelValue":l[12]||(l[12]=o=>u(s).security.maxConnections=o),min:1,max:1e3,style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"])]),n("div",Vt,[n("span",xt,d(e.$t("settings.connectionTimeout")),1),n("div",ht,[t(c,{modelValue:k.value,"onUpdate:modelValue":l[13]||(l[13]=o=>k.value=o),min:1,style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"]),t($,{modelValue:h.value,"onUpdate:modelValue":l[14]||(l[14]=o=>h.value=o),style:{width:"128px","flex-shrink":"0"}},{default:a(()=>[t(r,{label:e.$t("settings.timeUnits.seconds"),value:"seconds"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.minutes"),value:"minutes"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.hours"),value:"hours"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.days"),value:"days"},null,8,["label"])]),_:1},8,["modelValue"])])]),n("div",$t,[n("span",kt,d(e.$t("settings.idleConnectionTimeout")),1),n("div",wt,[t(c,{modelValue:b.value,"onUpdate:modelValue":l[15]||(l[15]=o=>b.value=o),min:1,style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"]),t($,{modelValue:T.value,"onUpdate:modelValue":l[16]||(l[16]=o=>T.value=o),style:{width:"128px","flex-shrink":"0"}},{default:a(()=>[t(r,{label:e.$t("settings.timeUnits.seconds"),value:"seconds"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.minutes"),value:"minutes"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.hours"),value:"hours"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.days"),value:"days"},null,8,["label"])]),_:1},8,["modelValue"])])])])]),_:1},8,["model"])):j("",!0)])]),_:1}),t(N,{name:"startup"},{label:a(()=>[n("span",Ut,[t(m,null,{default:a(()=>[t(u(_e))]),_:1}),n("span",null,d(e.$t("settings.startupTab")),1)])]),default:a(()=>[n("div",Tt,[u(s).system?(p(),A(F,{key:0,model:u(s).system,"label-position":"left","label-width":"260px"},{default:a(()=>[n("div",Ct,[n("span",Dt,d(e.$t("settings.startupDelay")),1),n("div",Et,[t(c,{modelValue:q.value,"onUpdate:modelValue":l[17]||(l[17]=o=>q.value=o),style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"]),t($,{modelValue:g.value,"onUpdate:modelValue":l[18]||(l[18]=o=>g.value=o),style:{width:"128px","flex-shrink":"0"}},{default:a(()=>[t(r,{label:e.$t("settings.timeUnits.seconds"),value:"seconds"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.minutes"),value:"minutes"},null,8,["label"])]),_:1},8,["modelValue"])])]),n("div",Rt,[n("span",Mt,d(e.$t("settings.readyTimeout")),1),n("div",Nt,[t(c,{modelValue:L.value,"onUpdate:modelValue":l[19]||(l[19]=o=>L.value=o),style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"]),t($,{modelValue:R.value,"onUpdate:modelValue":l[20]||(l[20]=o=>R.value=o),style:{width:"128px","flex-shrink":"0"}},{default:a(()=>[t(r,{label:e.$t("settings.timeUnits.seconds"),value:"seconds"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.minutes"),value:"minutes"},null,8,["label"])]),_:1},8,["modelValue"])])]),n("div",St,[n("span",Pt,d(e.$t("settings.maxConnectRetries")),1),t(c,{modelValue:B.value,"onUpdate:modelValue":l[21]||(l[21]=o=>B.value=o),min:0,max:10,style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"])]),n("div",jt,[n("span",At,d(e.$t("settings.connectRetryDelay")),1),n("div",It,[t(c,{modelValue:K.value,"onUpdate:modelValue":l[22]||(l[22]=o=>K.value=o),style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"]),t($,{modelValue:M.value,"onUpdate:modelValue":l[23]||(l[23]=o=>M.value=o),style:{width:"128px","flex-shrink":"0"}},{default:a(()=>[t(r,{label:e.$t("settings.timeUnits.seconds"),value:"seconds"},null,8,["label"]),t(r,{label:e.$t("settings.timeUnits.minutes"),value:"minutes"},null,8,["label"])]),_:1},8,["modelValue"])])])]),_:1},8,["model"])):j("",!0)])]),_:1}),t(N,{name:"tags"},{label:a(()=>[n("span",zt,[t(m,null,{default:a(()=>[t(u(Ve))]),_:1}),n("span",null,d(e.$t("settings.tagsTab")),1)])]),default:a(()=>[n("div",Bt,[t(Ge,{modelValue:u(s).tagDefinitions,"onUpdate:modelValue":l[24]||(l[24]=o=>u(s).tagDefinitions=o)},null,8,["modelValue"])])]),_:1})]),_:1},8,["modelValue"])])),[[ue,u(z)]])])])}}});export{Yt as default};
@@ -0,0 +1 @@
1
+ .custom-textarea[data-v-60262496] .el-textarea__inner{height:100%}
@@ -0,0 +1 @@
1
+ import{j as X,E as V,l as O,a0 as Y}from"./index-DkqV9kH4.js";import{E as Z,b as ee,a as te}from"./el-overlay-BTeTueuN.js";import{a as ae,E as le}from"./el-input-5YzZrwir.js";import{t as oe,aa as se,c as J,r as h,h as A,y as D,u as s,G as f,C as n,A as m,$ as o,V as k,O as w,P as z,ai as M,a0 as C,x as r}from"./vue-vendor-Dwcr0jep.js";import{_ as ne}from"./_plugin-vue_export-helper-DlAUqK2U.js";const F="mcp-hub-lite",re={class:"flex flex-col h-[60vh]"},ie={key:0,class:"mb-4 text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800/50 p-3 rounded-lg border border-gray-100 dark:border-gray-700/50 max-h-32 overflow-y-auto"},ce={key:1,class:"mb-4"},ue={class:"flex items-center"},de={class:"font-medium text-gray-700 dark:text-gray-300 mr-2 whitespace-nowrap"},me={key:0,class:"mt-1 flex items-center gap-1 flex-wrap"},pe={class:"text-xs text-gray-500"},fe={class:"flex-1 flex gap-4 min-h-0"},ge={class:"flex-1 flex flex-col min-w-0"},ve={class:"flex justify-between items-center mb-2"},ye={class:"font-medium text-gray-700 dark:text-gray-300"},he={class:"flex-1 flex flex-col min-w-0 border-l border-gray-200 dark:border-gray-700 pl-4"},_e={class:"flex justify-between items-center mb-2"},xe={class:"font-medium text-gray-700 dark:text-gray-300"},be={class:"flex-1 overflow-auto bg-gray-50 dark:bg-[#0f172a] rounded-lg border border-gray-200 dark:border-gray-700 p-4 font-mono text-sm"},ke={key:0,class:"whitespace-pre-wrap break-words text-gray-600 dark:text-gray-400"},we={key:1,class:"whitespace-pre-wrap break-words text-green-600 dark:text-green-400"},Ce={key:2,class:"whitespace-pre-wrap break-words text-red-600 dark:text-red-400"},Se={key:3,class:"whitespace-pre-wrap break-words text-gray-600 dark:text-gray-400"},Ne={class:"flex justify-between items-center"},Ve={class:"text-xs text-gray-500"},De={key:0},Ie={class:"flex gap-2"},Ee=oe({__name:"ToolCallDialog",props:{modelValue:{type:Boolean},serverName:{},toolName:{},description:{},inputSchema:{},hideInstanceSelect:{type:Boolean}},emits:["update:modelValue"],setup(g,{emit:U}){const{t:a}=se(),i=g,L=U,I=J({get:()=>i.modelValue,set:e=>L("update:modelValue",e)}),_=h("{}"),v=h(null),d=h(null),S=h(!1),y=h(!1),x=h([]),p=h(null),E=J(()=>{if(p.value)return x.value.find(e=>e.id===p.value)?.tags}),T=J(()=>i.inputSchema?JSON.stringify(i.inputSchema,null,2):"{}"),j=async()=>{if(i.serverName)try{const e=await O.get(`/web/server-instances/${i.serverName}`),t=Array.isArray(e)?e:[];x.value=t,t.length>0&&(p.value=t[0].id)}catch(e){console.error("Failed to fetch server instances:",e),x.value=[],p.value=null}};A(()=>i.serverName,()=>{j()}),A(()=>i.modelValue,e=>{if(e){const t=B(i.inputSchema);_.value=JSON.stringify(t,null,2),v.value=null,d.value=null,j()}},{immediate:!0});function B(e){if(!e||!e.properties)return{};const t={};for(const[l,b]of Object.entries(e.properties)){const c=b;c.default!==void 0?t[l]=c.default:c.type==="string"?t[l]=R(c.description)??"":c.type==="number"||c.type==="integer"?t[l]=0:c.type==="boolean"?t[l]=!1:c.type==="array"?t[l]=[]:c.type==="object"?t[l]=B(c):t[l]=null}return t}function R(e){return e?e.match(/Must be "(.+?)"/)?.[1]:void 0}function H(){try{const e=JSON.parse(_.value);_.value=JSON.stringify(e,null,2)}catch{V.warning(a("toolCallDialog.invalidJson"))}}function P(){y.value=!y.value}function q(e){const t=e.index??"?",l=e.displayName||e.id;return`#${t} [${l}]`}function G(){console.log("Selected instance:",p.value)}async function K(){try{let e;try{e=JSON.parse(_.value)}catch{V.error(a("toolCallDialog.invalidJsonArguments"));return}S.value=!0,v.value=null,d.value=null,y.value=!1;let t;if(i.serverName&&i.serverName!==F){const l=p.value?x.value.find(b=>b.id===p.value):void 0;t=await O.post(`/web/hub-tools/servers/${i.serverName}/tools/${i.toolName}/call`,{toolArgs:e,requestOptions:l?{sessionId:l.id,tags:l.tags&&Object.keys(l.tags).length>0?l.tags:void 0}:void 0})}else t=await O.post(`/web/hub-tools/system/${i.toolName}/call`,{toolArgs:e});v.value=JSON.stringify(t,null,2),V.success(a("toolCallDialog.executionSuccessful"))}catch(e){console.error("Tool execution failed:",e),e instanceof Error?d.value=e.message||String(e):d.value=String(e),e instanceof Y&&e.data?d.value=typeof e.data=="string"?e.data:JSON.stringify(e.data,null,2):typeof e=="object"&&e!==null&&"response"in e&&e.response?.data&&(d.value=JSON.stringify(e.response.data,null,2)),V.error(a("toolCallDialog.executionFailed"))}finally{S.value=!1}}return(e,t)=>{const l=ee,b=te,c=ae,N=X,Q=le,W=Z;return r(),D(W,{modelValue:I.value,"onUpdate:modelValue":t[3]||(t[3]=u=>I.value=u),title:s(a)("toolCallDialog.title",{toolName:g.toolName}),width:"800px",class:"tool-call-dialog","destroy-on-close":""},{footer:f(()=>[n("div",Ne,[n("div",Ve,[S.value?(r(),m("span",De,o(s(a)("toolCallDialog.executing")),1)):k("",!0)]),n("div",Ie,[w(N,{onClick:t[2]||(t[2]=u=>I.value=!1)},{default:f(()=>[C(o(s(a)("action.cancel")),1)]),_:1}),w(N,{type:"primary",loading:S.value,onClick:K},{default:f(()=>[C(o(s(a)("toolCallDialog.execute")),1)]),_:1},8,["loading"])])])]),default:f(()=>[n("div",re,[g.description?(r(),m("div",ie,o(g.description),1)):k("",!0),g.serverName&&g.serverName!==s(F)&&!g.hideInstanceSelect?(r(),m("div",ce,[n("div",ue,[n("span",de,o(s(a)("toolCallDialog.instance")),1),w(b,{modelValue:p.value,"onUpdate:modelValue":t[0]||(t[0]=u=>p.value=u),placeholder:s(a)("toolCallDialog.selectInstance"),size:"small",class:"flex-1",onChange:G},{default:f(()=>[(r(!0),m(z,null,M(x.value,u=>(r(),D(l,{key:u.id,label:q(u),value:u.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue","placeholder"])]),E.value&&Object.keys(E.value).length>0?(r(),m("div",me,[n("span",pe,o(s(a)("toolCallDialog.instanceTags"))+":",1),(r(!0),m(z,null,M(E.value,(u,$)=>(r(),D(c,{key:$,size:"small",type:"info"},{default:f(()=>[C(o($)+"="+o(u),1)]),_:2},1024))),128))])):k("",!0)])):k("",!0),n("div",fe,[n("div",ge,[n("div",ve,[n("span",ye,o(s(a)("toolCallDialog.arguments")),1),w(N,{link:"",type:"primary",size:"small",onClick:H},{default:f(()=>[C(o(s(a)("toolCallDialog.formatJson")),1)]),_:1})]),w(Q,{modelValue:_.value,"onUpdate:modelValue":t[1]||(t[1]=u=>_.value=u),type:"textarea",class:"flex-1 font-mono custom-textarea","input-style":{height:"100%",fontFamily:"monospace"},placeholder:'{"key": "value"}',resize:"none",maxlength:"1000000","show-word-limit":""},null,8,["modelValue"])]),n("div",he,[n("div",_e,[n("span",xe,o(y.value?s(a)("toolCallDialog.inputSchema"):v.value||d.value?s(a)("toolCallDialog.response"):s(a)("toolCallDialog.inputSchema")),1),v.value||d.value||y.value?(r(),D(N,{key:0,link:"",type:"info",size:"small",onClick:P},{default:f(()=>[C(o(y.value?s(a)("toolCallDialog.showResponse"):s(a)("toolCallDialog.showInputSchema")),1)]),_:1})):k("",!0)]),n("div",be,[y.value?(r(),m("pre",ke,o(T.value),1)):v.value?(r(),m("pre",we,o(v.value),1)):d.value?(r(),m("pre",Ce,o(d.value),1)):(r(),m("pre",Se,o(T.value),1))])])])])]),_:1},8,["modelValue","title"])}}}),$e=ne(Ee,[["__scopeId","data-v-60262496"]]);export{F as M,$e as T};
@@ -0,0 +1 @@
1
+ import{u as G,U as J,b as Q,l as U,j as W,V as X,W as j,s as K,X as Y}from"./index-DkqV9kH4.js";import{a as Z}from"./el-skeleton-item-DhgR50Jx.js";import{E as ee}from"./el-input-5YzZrwir.js";import{t as P,A as i,C as s,J as E,$ as n,V as H,x as a,aa as te,r as u,c as se,j as oe,O as l,G as y,u as p,a0 as z,H as F,L as R,P as T,ai as S,y as V}from"./vue-vendor-Dwcr0jep.js";import{M as L,T as ae}from"./ToolCallDialog-DEapCO06.js";import{_ as le}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./event-BB_Ol6Sd.js";import"./el-overlay-BTeTueuN.js";const ne={class:"min-w-0 mb-3"},re={class:"flex items-center gap-2 mb-2"},ie=["title"],ce=["title"],M=P({__name:"ToolCard",props:{title:{},description:{},tagName:{},tagClass:{}},emits:["call"],setup(c){return(h,g)=>(a(),i("div",{class:"bg-white dark:bg-[#1e293b] border border-gray-200 dark:border-gray-700 rounded-lg p-4 flex flex-col justify-between shadow-sm hover:shadow-md transition-shadow h-full cursor-pointer",onClick:g[0]||(g[0]=_=>h.$emit("call"))},[s("div",ne,[s("div",re,[c.tagName?(a(),i("span",{key:0,class:E(["shrink-0 px-2 py-0.5 rounded-full text-xs font-medium whitespace-nowrap",c.tagClass||"bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-300"])},n(c.tagName),3)):H("",!0),s("span",{class:"font-bold text-gray-900 dark:text-gray-100 font-mono text-base break-all",title:c.title},n(c.title),9,ie)]),s("p",{class:"text-sm text-gray-600 dark:text-gray-400 line-clamp-2",title:c.description},n(c.description||h.$t("tools.noDescription")),9,ce)])]))}}),de={class:"tools-view py-6 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto w-full h-full flex flex-col overflow-hidden bg-gray-50 dark:bg-[#0f172a] transition-colors duration-300"},me={class:"mb-6 shrink-0"},ue={class:"text-2xl font-semibold text-gray-900 dark:text-white mb-4"},ve={class:"relative"},pe={class:"flex-1 overflow-y-auto custom-scrollbar space-y-8 pr-2"},ge={class:"text-lg font-bold text-gray-900 dark:text-white"},he={class:"text-sm font-normal text-gray-500 ml-2"},fe={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 mb-8 transition-all duration-300"},xe={class:"flex items-center gap-2 mb-4"},ye={class:"text-lg font-bold text-gray-900 dark:text-white"},_e={class:"text-sm font-normal text-gray-500 ml-2"},be={key:0,class:"space-y-4"},ke={key:1,class:"text-center py-8 text-gray-500"},we={key:2,class:"space-y-6"},Ce=["onClick"],Ne={class:"text-xs bg-gray-100 dark:bg-gray-800 px-2 py-0.5 rounded-full"},$e={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 transition-all duration-300"},Te=P({__name:"ToolsView",setup(c){const{t:h}=te(),g=u(""),_=u(!1),I=u([]),k=G(),w=u([]),C=u(!1),v=u(null),f=u(new Set),b=u(!1);function O(e){f.value.has(e)?f.value.delete(e):f.value.add(e)}async function q(){try{const e=await U.get("/web/hub-tools/system");w.value=e.map(t=>({...t,serverName:L})).sort((t,d)=>t.name.localeCompare(d.name))}catch(e){console.error("Failed to fetch system tools:",e)}}function B(e){v.value={...e,serverName:e.serverName},C.value=!0}async function D(){_.value=!0;try{const e=await U.get(`/web/search?q=${encodeURIComponent(g.value)}`);I.value=(e.results||[]).map(t=>({tool:{name:t.name,description:t.description,serverName:t.serverName,inputSchema:t.inputSchema},score:0}))}catch(e){console.error("Failed to fetch tools:",e)}finally{_.value=!1}}function A(){D()}const N=se(()=>{const e={};return I.value.forEach(t=>{if(!t?.tool)return;const x=k.servers.find($=>$.name===t.tool.serverName)?.status==="online"?h("tools.online"):h("tools.offline"),r=t.tool.serverName?`${t.tool.serverName} (${x})`:"Unknown";e[r]||(e[r]=[]),e[r].push(t)}),Object.entries(e).map(([t,d])=>({serverName:t,tools:d.sort((x,r)=>x.tool.name.localeCompare(r.tool.name))})).sort((t,d)=>t.serverName.localeCompare(d.serverName))});return oe(()=>{q(),D(),k.servers.length===0&&k.fetchServers()}),(e,t)=>{const d=W,x=ee,r=Q,$=Z;return a(),i("div",de,[s("div",me,[s("h2",ue,n(e.$t("tools.title")),1),s("div",ve,[l(x,{modelValue:g.value,"onUpdate:modelValue":t[0]||(t[0]=o=>g.value=o),placeholder:e.$t("tools.searchPlaceholder"),class:"w-full",size:"large","prefix-icon":p(J),onInput:A},{append:y(()=>[l(d,{icon:p(X)},null,8,["icon"])]),_:1},8,["modelValue","placeholder","prefix-icon"])])]),s("div",pe,[s("section",null,[s("div",{class:"flex items-center gap-2 mb-4 cursor-pointer select-none hover:text-gray-700 dark:hover:text-gray-200 transition-colors",onClick:t[1]||(t[1]=o=>b.value=!b.value)},[l(r,{class:E(["transition-transform duration-200",{"-rotate-90":b.value}])},{default:y(()=>[l(p(j))]),_:1},8,["class"]),l(r,{class:"text-gray-900 dark:text-white",size:20},{default:y(()=>[l(p(K))]),_:1}),s("h3",ge,[z(n(e.$t("tools.systemTools"))+" ",1),s("span",he,"("+n(w.value.length)+")",1)])]),F(s("div",fe,[(a(!0),i(T,null,S(w.value,o=>(a(),V(M,{key:o.name,title:o.name,description:o.description,"tag-name":e.$t("tools.systemTag"),"tag-class":"bg-blue-100 text-blue-700 dark:bg-blue-900/50 dark:text-blue-300",onCall:m=>B(o)},null,8,["title","description","tag-name","onCall"]))),128))],512),[[R,!b.value]])]),s("section",null,[s("div",xe,[l(r,{class:"text-gray-900 dark:text-white",size:20},{default:y(()=>[l(p(Y))]),_:1}),s("h3",ye,[z(n(e.$t("tools.aggregatedTools"))+" ",1),s("span",_e,"("+n(N.value.reduce((o,m)=>o+m.tools.length,0))+")",1)])]),_.value?(a(),i("div",be,[l($,{animated:"",count:3})])):N.value.length===0?(a(),i("div",ke,n(e.$t("tools.noToolsFound")),1)):(a(),i("div",we,[(a(!0),i(T,null,S(N.value,o=>(a(),i("div",{key:o.serverName,class:"space-y-3"},[s("div",{class:"flex items-center gap-2 text-sm font-medium text-gray-500 dark:text-gray-400 px-1 cursor-pointer select-none hover:text-gray-700 dark:hover:text-gray-200 transition-colors",onClick:m=>O(o.serverName)},[l(r,{class:E(["transition-transform duration-200",{"-rotate-90":f.value.has(o.serverName)}])},{default:y(()=>[l(p(j))]),_:1},8,["class"]),s("span",null,n(o.serverName),1),s("span",Ne,n(o.tools.length),1)],8,Ce),F(s("div",$e,[(a(!0),i(T,null,S(o.tools,m=>(a(),V(M,{key:m.tool.name,title:m.tool.name,description:m.tool.description,onCall:Se=>B(m.tool)},null,8,["title","description","onCall"]))),128))],512),[[R,!f.value.has(o.serverName)]])]))),128))]))])]),v.value?(a(),V(ae,{key:0,modelValue:C.value,"onUpdate:modelValue":t[2]||(t[2]=o=>C.value=o),"server-name":v.value.serverName,"tool-name":v.value.name,description:v.value.description,"input-schema":v.value.inputSchema,"hide-instance-select":v.value.serverName!==p(L)},null,8,["modelValue","server-name","tool-name","description","input-schema","hide-instance-select"])):H("",!0)])}}}),Fe=le(Te,[["__scopeId","data-v-c6b0680d"]]);export{Fe as default};