@loop_ouroboros/mcp-hub-lite 1.2.1 → 1.2.3

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 (96) hide show
  1. package/CHANGELOG.md +541 -366
  2. package/README.md +4 -0
  3. package/dist/client/assets/{HomeView-BBwvy1oj.js → HomeView-V1fKvWQ8.js} +1 -1
  4. package/dist/client/assets/{ResourceDetailView-CZ2aB73w.js → ResourceDetailView-DHGHssrh.js} +1 -1
  5. package/dist/client/assets/{ResourcesView-CN1NlhWs.js → ResourcesView-B1bvkmQD.js} +1 -1
  6. package/dist/client/assets/{ServerDashboard-k652Vw4Z.js → ServerDashboard-CZCByd7y.js} +1 -1
  7. package/dist/client/assets/{ServerDetail-BLQ-a4cO.js → ServerDetail-CI5UD8gj.js} +1 -1
  8. package/dist/client/assets/{ServerListView-BHrsFD5i.js → ServerListView-D8qv-xYg.js} +1 -1
  9. package/dist/client/assets/SettingsView-C-ae0-zz.js +1 -0
  10. package/dist/client/assets/{ToolCallDialog-BfPjLxfV.js → ToolCallDialog-BudOyGvS.js} +1 -1
  11. package/dist/client/assets/{ToolsView-CyuhYAE2.js → ToolsView-CbQkgTAu.js} +1 -1
  12. package/dist/client/assets/{_baseClone-DO5qfalW.js → _baseClone-e9R6V78L.js} +1 -1
  13. package/dist/client/assets/{el-form-item-CcGsD2K_.js → el-form-item-Dyx5MiWB.js} +1 -1
  14. package/dist/client/assets/{el-input-tYgeiaCT.js → el-input-CL9HPfdW.js} +1 -1
  15. package/dist/client/assets/{el-loading-Dwl9E_Vr.js → el-loading-2TW6JdfY.js} +1 -1
  16. package/dist/client/assets/{el-overlay-kqX_BABo.js → el-overlay-B5ZGCmXY.js} +1 -1
  17. package/dist/client/assets/{el-radio-group-D8aWBVOT.js → el-radio-group-Cr2ScjjJ.js} +1 -1
  18. package/dist/client/assets/{el-skeleton-item-BRwIFspE.js → el-skeleton-item-CdAfEgVR.js} +1 -1
  19. package/dist/client/assets/{el-switch-BF8c-xeU.js → el-switch-DnN1s0Wb.js} +1 -1
  20. package/dist/client/assets/{el-tab-pane-C4Ep94cd.js → el-tab-pane-BebZh0XF.js} +1 -1
  21. package/dist/client/assets/{el-table-column-Cog6uCh-.js → el-table-column-CV2zp3yI.js} +1 -1
  22. package/dist/client/assets/{index-ByNBhPAR.js → index-Ci5n5dA9.js} +1 -1
  23. package/dist/client/assets/index-DTZ9o3XO.js +2 -0
  24. package/dist/client/assets/{omit-CUnDT6sS.js → omit-DlmW8Yd6.js} +1 -1
  25. package/dist/client/assets/{raf-CmzeRPMd.js → raf-CeCd08aN.js} +1 -1
  26. package/dist/client/index.html +1 -1
  27. package/dist/server/shared/models/server.model.d.ts +22 -0
  28. package/dist/server/shared/models/server.model.d.ts.map +1 -1
  29. package/dist/server/shared/models/server.model.js +41 -5
  30. package/dist/server/src/api/mcp/gateway.d.ts.map +1 -1
  31. package/dist/server/src/api/mcp/gateway.js +13 -5
  32. package/dist/server/src/api/web/resources.d.ts.map +1 -1
  33. package/dist/server/src/api/web/resources.js +26 -2
  34. package/dist/server/src/cli/commands/install.d.ts +25 -0
  35. package/dist/server/src/cli/commands/install.d.ts.map +1 -0
  36. package/dist/server/src/cli/commands/install.js +274 -0
  37. package/dist/server/src/cli/commands/use-guide.d.ts +11 -0
  38. package/dist/server/src/cli/commands/use-guide.d.ts.map +1 -0
  39. package/dist/server/src/cli/commands/use-guide.js +175 -0
  40. package/dist/server/src/cli/index.d.ts.map +1 -1
  41. package/dist/server/src/cli/index.js +4 -0
  42. package/dist/server/src/cli/server.d.ts +71 -0
  43. package/dist/server/src/cli/server.d.ts.map +1 -1
  44. package/dist/server/src/cli/server.js +138 -0
  45. package/dist/server/src/cli/use-guide.md +156 -0
  46. package/dist/server/src/config/config-loader.js +1 -1
  47. package/dist/server/src/config/config-migrator.d.ts.map +1 -1
  48. package/dist/server/src/config/config-migrator.js +1 -0
  49. package/dist/server/src/index.js +2 -7
  50. package/dist/server/src/server/dev-server.js +9 -48
  51. package/dist/server/src/server/runner.d.ts +12 -24
  52. package/dist/server/src/server/runner.d.ts.map +1 -1
  53. package/dist/server/src/server/runner.js +29 -109
  54. package/dist/server/src/server/startup.d.ts +43 -0
  55. package/dist/server/src/server/startup.d.ts.map +1 -0
  56. package/dist/server/src/server/startup.js +89 -0
  57. package/dist/server/src/services/connection/connection-manager.d.ts +52 -0
  58. package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -1
  59. package/dist/server/src/services/connection/connection-manager.js +283 -193
  60. package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -1
  61. package/dist/server/src/services/gateway/gateway.service.js +31 -10
  62. package/dist/server/src/services/gateway/global-transport.d.ts.map +1 -1
  63. package/dist/server/src/services/gateway/global-transport.js +11 -5
  64. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -1
  65. package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +12 -5
  66. package/dist/server/src/services/hub-manager.service.d.ts +2 -0
  67. package/dist/server/src/services/hub-manager.service.d.ts.map +1 -1
  68. package/dist/server/src/services/hub-manager.service.js +3 -16
  69. package/dist/server/src/utils/json-utils.d.ts +7 -0
  70. package/dist/server/src/utils/json-utils.d.ts.map +1 -1
  71. package/dist/server/src/utils/json-utils.js +17 -0
  72. package/dist/server/src/utils/logger/log-modules.d.ts +3 -0
  73. package/dist/server/src/utils/logger/log-modules.d.ts.map +1 -1
  74. package/dist/server/src/utils/logger/log-modules.js +2 -0
  75. package/dist/server/src/utils/port-checker.d.ts +18 -0
  76. package/dist/server/src/utils/port-checker.d.ts.map +1 -1
  77. package/dist/server/src/utils/port-checker.js +38 -0
  78. package/dist/server/src/utils/transports/stdio-transport.d.ts +12 -0
  79. package/dist/server/src/utils/transports/stdio-transport.d.ts.map +1 -1
  80. package/dist/server/src/utils/transports/stdio-transport.js +51 -2
  81. package/dist/server/src/utils/transports/transport-factory.d.ts +5 -1
  82. package/dist/server/src/utils/transports/transport-factory.d.ts.map +1 -1
  83. package/dist/server/src/utils/transports/transport-factory.js +5 -2
  84. package/dist/server/tests/integration/gateway/fault-tolerance.test.js +13 -2
  85. package/dist/server/tests/integration/gateway/mcp-connection.test.js +13 -2
  86. package/dist/server/tests/unit/config/config-migrator.test.js +4 -2
  87. package/dist/server/tests/unit/config/config.schema.test.js +2 -1
  88. package/dist/server/tests/unit/server/runner.test.js +77 -92
  89. package/dist/server/tests/unit/services/hub-manager-service.test.js +3 -2
  90. package/dist/server/tests/unit/utils/config.test.js +14 -7
  91. package/dist/server/tests/unit/utils/json-utils.test.js +28 -14
  92. package/dist/server/vite.config.d.ts.map +1 -1
  93. package/dist/server/vite.config.js +1 -0
  94. package/package.json +1 -5
  95. package/dist/client/assets/SettingsView-CUOFNXrz.js +0 -1
  96. package/dist/client/assets/index-CTB6oe-9.js +0 -2
package/README.md CHANGED
@@ -324,4 +324,8 @@ MIT
324
324
 
325
325
  Pull Requests and Issues are welcome!
326
326
 
327
+ ## Community
328
+
329
+ Thanks to the LinuxDo (linux.do) community for the discussions, sharing, and feedback.
330
+
327
331
  <!-- Badges -->
@@ -1 +1 @@
1
- import{u as t}from"./index-CTB6oe-9.js";import{E as s}from"./index-ByNBhPAR.js";import{t as a,j as n,h as c,A as i,C as l,O as f,a1 as m,x as _}from"./vue-vendor-CbgVSHIh.js";import"./typescript-Bp3YSIOJ.js";const u={class:"flex w-full h-full"},d={class:"flex-1 h-full overflow-hidden bg-gray-50 dark:bg-[#0f172a] relative transition-colors duration-300"},k=a({__name:"HomeView",setup(p){const o=t();return n(()=>{o.fetchServers()}),c(()=>o.error,e=>{e&&s.error(e)}),(e,h)=>{const r=m("router-view");return _(),i("div",u,[l("main",d,[f(r)])])}}});export{k as default};
1
+ import{u as t}from"./index-DTZ9o3XO.js";import{E as s}from"./index-Ci5n5dA9.js";import{t as a,j as n,h as c,A as i,C as l,O as f,a1 as m,x as _}from"./vue-vendor-CbgVSHIh.js";import"./typescript-Bp3YSIOJ.js";const u={class:"flex w-full h-full"},d={class:"flex-1 h-full overflow-hidden bg-gray-50 dark:bg-[#0f172a] relative transition-colors duration-300"},k=a({__name:"HomeView",setup(p){const o=t();return n(()=>{o.fetchServers()}),c(()=>o.error,e=>{e&&s.error(e)}),(e,h)=>{const r=m("router-view");return _(),i("div",u,[l("main",d,[f(r)])])}}});export{k as default};
@@ -1 +1 @@
1
- import{u as T,H as I,h as O,aK as S,E as $,O as M,J as z,w as G}from"./index-CTB6oe-9.js";import{v as H}from"./el-loading-Dwl9E_Vr.js";import{E as P,b as W}from"./el-radio-group-D8aWBVOT.js";import{t as F,a6 as J,c as f,r as g,j as K,A as n,C as t,O as l,G as d,u as s,$ as o,H as Q,a8 as X,a9 as x,a7 as Y,x as c}from"./vue-vendor-CbgVSHIh.js";import{_ as Z}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./event-BB_Ol6Sd.js";import"./omit-CUnDT6sS.js";import"./_baseClone-DO5qfalW.js";const ee={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"},te={class:"flex items-center justify-between mb-6 shrink-0"},oe={class:"flex items-center gap-4"},se={class:"text-2xl font-bold text-gray-900 dark:text-white"},ae={class:"flex-1 flex flex-col gap-6 overflow-hidden"},le={class:"bg-white dark:bg-[#1e1e1e] rounded-lg shadow p-6 shrink-0 border border-gray-200 dark:border-gray-700"},re={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ne={class:"text-sm font-medium text-gray-500 dark:text-gray-400 mb-1"},ce={class:"font-mono text-sm break-all select-all"},ie={class:"text-sm font-medium text-gray-500 dark:text-gray-400 mb-1"},de={class:"font-mono text-sm"},ue={class:"md:col-span-2"},fe={class:"text-sm font-medium text-gray-500 dark:text-gray-400 mb-1"},me={class:"text-sm"},_e={class:"bg-white dark:bg-[#1e1e1e] rounded-lg shadow flex-1 flex flex-col overflow-hidden border border-gray-200 dark:border-gray-700"},ve={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]"},pe={class:"font-medium"},he={class:"flex gap-2"},be={class:"flex-1 overflow-auto p-6 bg-gray-50 dark:bg-[#0f172a]"},ye={key:0,class:"h-full flex items-center justify-center text-gray-400"},ge={key:1,class:"h-full flex flex-col items-center justify-center text-red-500"},xe={key:2,class:"h-full"},we={key:0,class:"h-full"},ke={key:0,class:"h-full flex items-center justify-center"},Re=["src"],je={key:1,class:"bg-white dark:bg-[#1e1e1e] p-4 rounded shadow-sm h-full overflow-auto font-mono text-sm whitespace-pre-wrap"},Ce={key:1,class:"h-full"},Ve={class:"bg-gray-900 text-gray-100 p-4 rounded-lg h-full overflow-auto font-mono text-sm"},Be=F({__name:"ResourceDetailView",setup(Ee){const m=X(),U=Y(),D=T(),{t:r}=J(),V=f(()=>{const e=m.params.name;return e.startsWith("hub://")&&e.replace("hub://","").split("/")[1]||e}),w=f(()=>m.query.uri),B=f(()=>{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"}),p=f(()=>m.query.mimeType||"application/octet-stream"),b=g(!1),y=g(null),_=g(null),k=g("preview"),E=f(()=>p.value.startsWith("image/")),R=f(()=>{if(!_.value)return"";const e=_.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=f(()=>{if(!E.value||!_.value)return"";const e=_.value;return e&&typeof e=="object"&&"blob"in e&&typeof e.blob=="string"?`data:${p.value};base64,${e.blob}`:""});function q(){U.back()}async function A(){b.value=!0,y.value=null;try{_.value=await D.readResource(V.value,w.value)}catch(e){y.value=e.message||"Failed to load resource content"}finally{b.value=!1}}function L(){const e=document.createElement("a"),i=new Blob([R.value],{type:p.value}),a=_.value;if(a&&typeof a=="object"&&"blob"in a&&typeof a.blob=="string"){const u=atob(a.blob),h=new Array(u.length);for(let v=0;v<u.length;v++)h[v]=u.charCodeAt(v);const j=new Uint8Array(h),C=new Blob([j],{type:p.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 K(()=>{w.value&&A()}),(e,i)=>{const a=O,u=$,h=W,j=P,C=H;return c(),n("div",ee,[t("div",te,[t("div",oe,[l(a,{icon:s(I),plain:"",onClick:q,class:"shrink-0"},{default:d(()=>[x(o(s(r)("action.back")),1)]),_:1},8,["icon"]),t("h2",se," Resource Details: "+o(B.value),1)])]),Q((c(),n("div",ae,[t("div",le,[t("div",re,[t("div",null,[t("div",ne,o(s(r)("common.uri")),1),t("div",ce,o(w.value),1)]),t("div",null,[t("div",ie,o(s(r)("common.mimeType")),1),t("div",de,o(p.value),1)]),t("div",ue,[t("div",fe,o(s(r)("resources.server")),1),t("div",me,o(V.value),1)])])]),t("div",_e,[t("div",ve,[t("div",pe,o(s(r)("resources.contentPreview")),1),t("div",he,[l(j,{modelValue:k.value,"onUpdate:modelValue":i[0]||(i[0]=v=>k.value=v),size:"small"},{default:d(()=>[l(h,{value:"preview"},{default:d(()=>[l(u,{class:"mr-1"},{default:d(()=>[l(s(M))]),_:1}),x(" "+o(s(r)("resources.preview")),1)]),_:1}),l(h,{value:"source"},{default:d(()=>[l(u,{class:"mr-1"},{default:d(()=>[l(s(z))]),_:1}),x(" "+o(s(r)("resources.source")),1)]),_:1})]),_:1},8,["modelValue"]),l(a,{size:"small",icon:s(S),onClick:L},{default:d(()=>[x(o(s(r)("resources.download")),1)]),_:1},8,["icon"])])]),t("div",be,[b.value?(c(),n("div",ye,o(s(r)("resources.loadingContent")),1)):y.value?(c(),n("div",ge,[l(u,{class:"text-4xl mb-2"},{default:d(()=>[l(s(G))]),_:1}),t("div",null,o(y.value),1)])):(c(),n("div",xe,[k.value==="preview"?(c(),n("div",we,[E.value?(c(),n("div",ke,[t("img",{src:N.value,class:"max-w-full max-h-full object-contain rounded shadow-lg"},null,8,Re)])):(c(),n("div",je,o(R.value),1))])):(c(),n("div",Ce,[t("pre",Ve,[t("code",null,o(R.value),1)])]))]))])])])),[[C,b.value]])])}}}),Oe=Z(Be,[["__scopeId","data-v-a4e1dc63"]]);export{Oe as default};
1
+ import{u as T,H as I,h as O,aK as S,E as $,O as M,J as z,w as G}from"./index-DTZ9o3XO.js";import{v as H}from"./el-loading-2TW6JdfY.js";import{E as P,b as W}from"./el-radio-group-Cr2ScjjJ.js";import{t as F,a6 as J,c as f,r as g,j as K,A as n,C as t,O as l,G as d,u as s,$ as o,H as Q,a8 as X,a9 as x,a7 as Y,x as c}from"./vue-vendor-CbgVSHIh.js";import{_ as Z}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./event-BB_Ol6Sd.js";import"./omit-DlmW8Yd6.js";import"./_baseClone-e9R6V78L.js";const ee={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"},te={class:"flex items-center justify-between mb-6 shrink-0"},oe={class:"flex items-center gap-4"},se={class:"text-2xl font-bold text-gray-900 dark:text-white"},ae={class:"flex-1 flex flex-col gap-6 overflow-hidden"},le={class:"bg-white dark:bg-[#1e1e1e] rounded-lg shadow p-6 shrink-0 border border-gray-200 dark:border-gray-700"},re={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ne={class:"text-sm font-medium text-gray-500 dark:text-gray-400 mb-1"},ce={class:"font-mono text-sm break-all select-all"},ie={class:"text-sm font-medium text-gray-500 dark:text-gray-400 mb-1"},de={class:"font-mono text-sm"},ue={class:"md:col-span-2"},fe={class:"text-sm font-medium text-gray-500 dark:text-gray-400 mb-1"},me={class:"text-sm"},_e={class:"bg-white dark:bg-[#1e1e1e] rounded-lg shadow flex-1 flex flex-col overflow-hidden border border-gray-200 dark:border-gray-700"},ve={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]"},pe={class:"font-medium"},he={class:"flex gap-2"},be={class:"flex-1 overflow-auto p-6 bg-gray-50 dark:bg-[#0f172a]"},ye={key:0,class:"h-full flex items-center justify-center text-gray-400"},ge={key:1,class:"h-full flex flex-col items-center justify-center text-red-500"},xe={key:2,class:"h-full"},we={key:0,class:"h-full"},ke={key:0,class:"h-full flex items-center justify-center"},Re=["src"],je={key:1,class:"bg-white dark:bg-[#1e1e1e] p-4 rounded shadow-sm h-full overflow-auto font-mono text-sm whitespace-pre-wrap"},Ce={key:1,class:"h-full"},Ve={class:"bg-gray-900 text-gray-100 p-4 rounded-lg h-full overflow-auto font-mono text-sm"},Be=F({__name:"ResourceDetailView",setup(Ee){const m=X(),U=Y(),D=T(),{t:r}=J(),V=f(()=>{const e=m.params.name;return e.startsWith("hub://")&&e.replace("hub://","").split("/")[1]||e}),w=f(()=>m.query.uri),B=f(()=>{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"}),p=f(()=>m.query.mimeType||"application/octet-stream"),b=g(!1),y=g(null),_=g(null),k=g("preview"),E=f(()=>p.value.startsWith("image/")),R=f(()=>{if(!_.value)return"";const e=_.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=f(()=>{if(!E.value||!_.value)return"";const e=_.value;return e&&typeof e=="object"&&"blob"in e&&typeof e.blob=="string"?`data:${p.value};base64,${e.blob}`:""});function q(){U.back()}async function A(){b.value=!0,y.value=null;try{_.value=await D.readResource(V.value,w.value)}catch(e){y.value=e.message||"Failed to load resource content"}finally{b.value=!1}}function L(){const e=document.createElement("a"),i=new Blob([R.value],{type:p.value}),a=_.value;if(a&&typeof a=="object"&&"blob"in a&&typeof a.blob=="string"){const u=atob(a.blob),h=new Array(u.length);for(let v=0;v<u.length;v++)h[v]=u.charCodeAt(v);const j=new Uint8Array(h),C=new Blob([j],{type:p.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 K(()=>{w.value&&A()}),(e,i)=>{const a=O,u=$,h=W,j=P,C=H;return c(),n("div",ee,[t("div",te,[t("div",oe,[l(a,{icon:s(I),plain:"",onClick:q,class:"shrink-0"},{default:d(()=>[x(o(s(r)("action.back")),1)]),_:1},8,["icon"]),t("h2",se," Resource Details: "+o(B.value),1)])]),Q((c(),n("div",ae,[t("div",le,[t("div",re,[t("div",null,[t("div",ne,o(s(r)("common.uri")),1),t("div",ce,o(w.value),1)]),t("div",null,[t("div",ie,o(s(r)("common.mimeType")),1),t("div",de,o(p.value),1)]),t("div",ue,[t("div",fe,o(s(r)("resources.server")),1),t("div",me,o(V.value),1)])])]),t("div",_e,[t("div",ve,[t("div",pe,o(s(r)("resources.contentPreview")),1),t("div",he,[l(j,{modelValue:k.value,"onUpdate:modelValue":i[0]||(i[0]=v=>k.value=v),size:"small"},{default:d(()=>[l(h,{value:"preview"},{default:d(()=>[l(u,{class:"mr-1"},{default:d(()=>[l(s(M))]),_:1}),x(" "+o(s(r)("resources.preview")),1)]),_:1}),l(h,{value:"source"},{default:d(()=>[l(u,{class:"mr-1"},{default:d(()=>[l(s(z))]),_:1}),x(" "+o(s(r)("resources.source")),1)]),_:1})]),_:1},8,["modelValue"]),l(a,{size:"small",icon:s(S),onClick:L},{default:d(()=>[x(o(s(r)("resources.download")),1)]),_:1},8,["icon"])])]),t("div",be,[b.value?(c(),n("div",ye,o(s(r)("resources.loadingContent")),1)):y.value?(c(),n("div",ge,[l(u,{class:"text-4xl mb-2"},{default:d(()=>[l(s(G))]),_:1}),t("div",null,o(y.value),1)])):(c(),n("div",xe,[k.value==="preview"?(c(),n("div",we,[E.value?(c(),n("div",ke,[t("img",{src:N.value,class:"max-w-full max-h-full object-contain rounded shadow-lg"},null,8,Re)])):(c(),n("div",je,o(R.value),1))])):(c(),n("div",Ce,[t("pre",Ve,[t("code",null,o(R.value),1)])]))]))])])])),[[C,b.value]])])}}}),Oe=Z(Be,[["__scopeId","data-v-a4e1dc63"]]);export{Oe as default};
@@ -1 +1 @@
1
- import{u as $,R as C,E,$ as T,J as V,h as B}from"./index-CTB6oe-9.js";import{a as z,b as L}from"./el-table-column-Cog6uCh-.js";import{E as j,a as I}from"./el-input-tYgeiaCT.js";import{t as N,r as f,j as S,c as q,A as h,C as a,$ as n,O as o,u,G as s,y as A,a9 as y,a7 as O,x as m}from"./vue-vendor-CbgVSHIh.js";import{_ as D}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./_baseClone-DO5qfalW.js";import"./omit-CUnDT6sS.js";import"./event-BB_Ol6Sd.js";import"./raf-CmzeRPMd.js";import"./typescript-Bp3YSIOJ.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"},J={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"},U={class:"flex items-center gap-2"},H=["title"],K=["title"],W=N({__name:"ResourcesView",setup(X){const b=O(),v=$(),c=f(""),d=f({});S(async()=>{await w()});async function w(){try{d.value=await v.fetchAllResources()}catch(e){console.error("Failed to load resources:",e)}}const p=q(()=>{const e=[];for(const[,l]of Object.entries(d.value))e.push(...l);if(!c.value)return e;const r=c.value.toLowerCase();return e.filter(l=>l.name.toLowerCase().includes(r)||l.uri.toLowerCase().includes(r))});function x(e){b.push({name:"resource-detail",params:{name:e.uri},query:{uri:e.uri,name:e.name,mimeType:e.mimeType}})}return(e,r)=>{const l=j,_=E,i=L,g=I,k=B,R=z;return m(),h("div",F,[a("div",G,[a("h2",J,n(e.$t("resources.title")),1),a("div",M,[o(l,{modelValue:c.value,"onUpdate:modelValue":r[0]||(r[0]=t=>c.value=t),placeholder:e.$t("resources.searchPlaceholder"),class:"w-full",size:"large","prefix-icon":u(C),clearable:""},null,8,["modelValue","placeholder","prefix-icon"])])]),a("div",P,[p.value.length===0?(m(),h("div",Q,[o(_,{size:48,class:"mb-4 opacity-50"},{default:s(()=>[o(u(T))]),_:1}),a("p",null,n(e.$t("resources.noResources")),1)])):(m(),A(R,{key:1,data:p.value,style:{width:"100%"},class:"custom-table"},{default:s(()=>[o(i,{prop:"name",label:e.$t("common.name"),"min-width":"350"},{default:s(({row:t})=>[a("div",U,[o(_,null,{default:s(()=>[o(u(V))]),_:1}),a("span",{class:"font-medium truncate",title:t.name},n(t.name),9,H)])]),_:1},8,["label"]),o(i,{prop:"uri",label:e.$t("common.uri"),"min-width":"350"},{default:s(({row:t})=>[a("span",{class:"truncate block",title:t.uri},n(t.uri),9,K)]),_:1},8,["label"]),o(i,{prop:"mimeType",label:e.$t("common.mimeType"),width:"180"},{default:s(({row:t})=>[o(g,{size:"small",type:"success",effect:"plain"},{default:s(()=>[y(n(t.mimeType||"unknown"),1)]),_:2},1024)]),_:1},8,["label"]),o(i,{label:"",width:"100",align:"right"},{default:s(({row:t})=>[o(k,{size:"small",plain:"",onClick:Y=>x(t)},{default:s(()=>[y(n(e.$t("action.view")),1)]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]))])])}}}),ie=D(W,[["__scopeId","data-v-8388c5cb"]]);export{ie as default};
1
+ import{u as $,R as C,E,$ as T,J as V,h as B}from"./index-DTZ9o3XO.js";import{a as z,b as L}from"./el-table-column-CV2zp3yI.js";import{E as j,a as I}from"./el-input-CL9HPfdW.js";import{t as N,r as f,j as S,c as q,A as h,C as a,$ as n,O as o,u,G as s,y as A,a9 as y,a7 as O,x as m}from"./vue-vendor-CbgVSHIh.js";import{_ as D}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./_baseClone-e9R6V78L.js";import"./omit-DlmW8Yd6.js";import"./event-BB_Ol6Sd.js";import"./raf-CeCd08aN.js";import"./typescript-Bp3YSIOJ.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"},J={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"},U={class:"flex items-center gap-2"},H=["title"],K=["title"],W=N({__name:"ResourcesView",setup(X){const b=O(),v=$(),c=f(""),d=f({});S(async()=>{await w()});async function w(){try{d.value=await v.fetchAllResources()}catch(e){console.error("Failed to load resources:",e)}}const p=q(()=>{const e=[];for(const[,l]of Object.entries(d.value))e.push(...l);if(!c.value)return e;const r=c.value.toLowerCase();return e.filter(l=>l.name.toLowerCase().includes(r)||l.uri.toLowerCase().includes(r))});function x(e){b.push({name:"resource-detail",params:{name:e.uri},query:{uri:e.uri,name:e.name,mimeType:e.mimeType}})}return(e,r)=>{const l=j,_=E,i=L,g=I,k=B,R=z;return m(),h("div",F,[a("div",G,[a("h2",J,n(e.$t("resources.title")),1),a("div",M,[o(l,{modelValue:c.value,"onUpdate:modelValue":r[0]||(r[0]=t=>c.value=t),placeholder:e.$t("resources.searchPlaceholder"),class:"w-full",size:"large","prefix-icon":u(C),clearable:""},null,8,["modelValue","placeholder","prefix-icon"])])]),a("div",P,[p.value.length===0?(m(),h("div",Q,[o(_,{size:48,class:"mb-4 opacity-50"},{default:s(()=>[o(u(T))]),_:1}),a("p",null,n(e.$t("resources.noResources")),1)])):(m(),A(R,{key:1,data:p.value,style:{width:"100%"},class:"custom-table"},{default:s(()=>[o(i,{prop:"name",label:e.$t("common.name"),"min-width":"350"},{default:s(({row:t})=>[a("div",U,[o(_,null,{default:s(()=>[o(u(V))]),_:1}),a("span",{class:"font-medium truncate",title:t.name},n(t.name),9,H)])]),_:1},8,["label"]),o(i,{prop:"uri",label:e.$t("common.uri"),"min-width":"350"},{default:s(({row:t})=>[a("span",{class:"truncate block",title:t.uri},n(t.uri),9,K)]),_:1},8,["label"]),o(i,{prop:"mimeType",label:e.$t("common.mimeType"),width:"180"},{default:s(({row:t})=>[o(g,{size:"small",type:"success",effect:"plain"},{default:s(()=>[y(n(t.mimeType||"unknown"),1)]),_:2},1024)]),_:1},8,["label"]),o(i,{label:"",width:"100",align:"right"},{default:s(({row:t})=>[o(k,{size:"small",plain:"",onClick:Y=>x(t)},{default:s(()=>[y(n(e.$t("action.view")),1)]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]))])])}}}),ie=D(W,[["__scopeId","data-v-8388c5cb"]]);export{ie as default};
@@ -1 +1 @@
1
- import{u as y,a as E,i as $,E as D,c as g,w as x,v as I}from"./index-CTB6oe-9.js";import{E as N,a as A}from"./el-skeleton-item-BRwIFspE.js";import{f as V}from"./ServerStatusTags.vue_vue_type_script_setup_true_lang-BHhwEuGe.js";import{t as v,r as B,j as z,h as b,c as L,A as n,C as t,$ as s,u as d,O as l,G as h,P as T,af as j,V as O,x as a,y as p,U as F,J as G,n as H}from"./vue-vendor-CbgVSHIh.js";import{_ as J}from"./_plugin-vue_export-helper-DlAUqK2U.js";import M from"./ServerDetail-BLQ-a4cO.js";import"./el-tab-pane-C4Ep94cd.js";import"./raf-CmzeRPMd.js";import"./typescript-Bp3YSIOJ.js";import"./el-overlay-kqX_BABo.js";import"./event-BB_Ol6Sd.js";import"./el-input-tYgeiaCT.js";import"./omit-CUnDT6sS.js";import"./_baseClone-DO5qfalW.js";import"./el-switch-BF8c-xeU.js";import"./el-radio-group-D8aWBVOT.js";import"./el-table-column-Cog6uCh-.js";import"./index-ByNBhPAR.js";import"./ToolCallDialog-BfPjLxfV.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();E();const c=B(null);z(()=>{!e.loading&&e.servers.length>0&&e.fetchAllLogs()}),b(()=>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)});b(()=>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 x;case"starting":return x;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,f=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(f,{size:16,class:G(S(m.serverStatus))},{default:h(()=>[(a(),p(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(f,{size:40,class:"mb-2 opacity-50"},{default:h(()=>[l(d($))]),_: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"},zt=v({__name:"ServerDashboard",setup(k){const e=y();return(c,u)=>(a(),n("div",gt,[d(e).selectedServerId?(a(),p(M,{key:1})):(a(),p(_t,{key:0}))]))}});export{zt as default};
1
+ import{u as y,a as E,i as $,E as D,c as g,w as x,v as I}from"./index-DTZ9o3XO.js";import{E as N,a as A}from"./el-skeleton-item-CdAfEgVR.js";import{f as V}from"./ServerStatusTags.vue_vue_type_script_setup_true_lang-BHhwEuGe.js";import{t as v,r as B,j as z,h as b,c as L,A as n,C as t,$ as s,u as d,O as l,G as h,P as T,af as j,V as O,x as a,y as p,U as F,J as G,n as H}from"./vue-vendor-CbgVSHIh.js";import{_ as J}from"./_plugin-vue_export-helper-DlAUqK2U.js";import M from"./ServerDetail-CI5UD8gj.js";import"./el-tab-pane-BebZh0XF.js";import"./raf-CeCd08aN.js";import"./typescript-Bp3YSIOJ.js";import"./el-overlay-B5ZGCmXY.js";import"./event-BB_Ol6Sd.js";import"./el-input-CL9HPfdW.js";import"./omit-DlmW8Yd6.js";import"./_baseClone-e9R6V78L.js";import"./el-switch-DnN1s0Wb.js";import"./el-radio-group-Cr2ScjjJ.js";import"./el-table-column-CV2zp3yI.js";import"./index-Ci5n5dA9.js";import"./ToolCallDialog-BudOyGvS.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();E();const c=B(null);z(()=>{!e.loading&&e.servers.length>0&&e.fetchAllLogs()}),b(()=>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)});b(()=>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 x;case"starting":return x;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,f=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(f,{size:16,class:G(S(m.serverStatus))},{default:h(()=>[(a(),p(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(f,{size:40,class:"mb-2 opacity-50"},{default:h(()=>[l(d($))]),_: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"},zt=v({__name:"ServerDashboard",setup(k){const e=y();return(c,u)=>(a(),n("div",gt,[d(e).selectedServerId?(a(),p(M,{key:1})):(a(),p(_t,{key:0}))]))}});export{zt as default};
@@ -1,2 +1,2 @@
1
- import{o as Qe,q as ft,x as vt,_ as pt,T as gt,E as Se,y as yt,h as de,z as ht,A as Xe,B as Ze,C as Ye,D as bt,F as Ke,G as _t,H as $t,v as st,r as Me,m as Ct,j as ie,p as fe,I as wt,J as kt,K as xt,L as St,M as Vt,N as It,O as Tt,u as Pe,a as Dt,P as Et,s as et,Q as Bt,t as Ut,n as At}from"./index-CTB6oe-9.js";import{E as Rt,a as zt}from"./el-tab-pane-C4Ep94cd.js";import{n as he,a1 as Ce,x as i,y as H,G as f,H as Re,O as s,C as n,J as G,I as ke,K as tt,A as h,U as we,V as M,$ as o,ag as be,v as Nt,L as ze,a9 as D,M as jt,t as ue,c as J,r as O,Q as Ot,ah as Ne,h as te,j as Mt,F as Pt,ai as Ft,p as je,a as Fe,aj as ot,ak as rt,l as at,d as it,a6 as me,u as g,P as X,af as Y,Z as Lt,a8 as Ht,a7 as Le,al as Jt,k as Be}from"./vue-vendor-CbgVSHIh.js";import{E as Ve,a as He}from"./el-input-tYgeiaCT.js";import{_ as qt,a as ut}from"./ServerStatusTags.vue_vue_type_script_setup_true_lang-BHhwEuGe.js";import{c as Wt,u as Gt,d as Qt,e as Xt,a as Je,b as qe,E as We}from"./el-overlay-kqX_BABo.js";import{i as Zt,E as ct,a as dt}from"./el-switch-BF8c-xeU.js";import{E as Yt,a as Kt}from"./el-radio-group-D8aWBVOT.js";import{_ as Ie}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{E as ea,a as ta,b as aa}from"./el-table-column-Cog6uCh-.js";import{E as V}from"./index-ByNBhPAR.js";import{T as la}from"./ToolCallDialog-BfPjLxfV.js";import"./raf-CmzeRPMd.js";import"./typescript-Bp3YSIOJ.js";import"./event-BB_Ol6Sd.js";import"./omit-CUnDT6sS.js";import"./_baseClone-DO5qfalW.js";const Oe="_trap-focus-children",ge=[],lt=e=>{if(ge.length===0)return;const m=ft(e),l=ge[ge.length-1][Oe];if(l.length>0&&m===vt.tab){if(l.length===1){e.preventDefault(),document.activeElement!==l[0]&&l[0].focus();return}const d=e.shiftKey,a=e.target===l[0],p=e.target===l[l.length-1];a&&d&&(e.preventDefault(),l[l.length-1].focus()),p&&!d&&(e.preventDefault(),l[0].focus())}},na={beforeMount(e){e[Oe]=Qe(e),ge.push(e),ge.length<=1&&document.addEventListener("keydown",lt)},updated(e){he(()=>{e[Oe]=Qe(e)})},unmounted(){ge.shift(),ge.length===0&&document.removeEventListener("keydown",lt)}},sa=ue({name:"ElMessageBox",directives:{TrapFocus:na},components:{ElButton:de,ElFocusTrap:yt,ElInput:Ve,ElOverlay:Wt,ElIcon:Se,...gt},inheritAttrs:!1,props:{buttonSize:{type:String,validator:Zt},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:d,ns:a,size:p}=ht("message-box",J(()=>e.buttonSize)),{t:u}=l,{nextZIndex:x}=d,U=O(!1),t=Ot({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:Ne(Xe),cancelButtonLoadingIcon:Ne(Xe),confirmButtonDisabled:!1,editorErrorMessage:"",validateError:!1,zIndex:x()}),T=J(()=>{const I=t.type;return{[a.bm("icon",I)]:I&&Ze[I]}}),y=Ye(),E=Ye(),_=J(()=>{const I=t.type;return t.icon||I&&Ze[I]||""}),$=J(()=>!!t.message),C=O(),z=O(),F=O(),K=O(),le=O(),se=J(()=>t.confirmButtonClass);te(()=>t.inputValue,async I=>{await he(),e.boxType==="prompt"&&I&&q()},{immediate:!0}),te(()=>U.value,I=>{var W,ee;I&&(e.boxType!=="prompt"&&(t.autofocus?F.value=(ee=(W=le.value)==null?void 0:W.$el)!=null?ee:C.value:F.value=C.value),t.zIndex=x()),e.boxType==="prompt"&&(I?he().then(()=>{var ye;K.value&&K.value.$el&&(t.autofocus?F.value=(ye=oe())!=null?ye:C.value:F.value=C.value)}):(t.editorErrorMessage="",t.validateError=!1))});const ce=J(()=>e.draggable),N=J(()=>e.overflow),{isDragging:v}=Gt(C,z,ce,N);Mt(async()=>{await he(),e.closeOnHashChange&&window.addEventListener("hashchange",R)}),Pt(()=>{e.closeOnHashChange&&window.removeEventListener("hashchange",R)});function R(){U.value&&(U.value=!1,he(()=>{t.action&&m("action",t.action)}))}const c=()=>{e.closeOnClickModal&&k(t.distinguishCancelAndClose?"close":"cancel")},w=Xt(c),P=I=>{if(t.inputType!=="textarea")return I.preventDefault(),k("confirm")},k=I=>{var W;e.boxType==="prompt"&&I==="confirm"&&!q()||(t.action=I,t.beforeClose?(W=t.beforeClose)==null||W.call(t,I,t,R):R())},q=()=>{if(e.boxType==="prompt"){const I=t.inputPattern;if(I&&!I.test(t.inputValue||""))return t.editorErrorMessage=t.inputErrorMessage||u("el.messagebox.error"),t.validateError=!0,!1;const W=t.inputValidator;if(je(W)){const ee=W(t.inputValue);if(ee===!1)return t.editorErrorMessage=t.inputErrorMessage||u("el.messagebox.error"),t.validateError=!0,!1;if(Fe(ee))return t.editorErrorMessage=ee,t.validateError=!0,!1}}return t.editorErrorMessage="",t.validateError=!1,!0},oe=()=>{var I,W;const ee=(I=K.value)==null?void 0:I.$refs;return(W=ee?.input)!=null?W:ee?.textarea},re=()=>{k("close")},L=()=>{e.closeOnPressEscape&&re()};return e.lockScroll&&Qt(U,{ns:a}),{...Ft(t),ns:a,overlayEvent:w,visible:U,hasMessage:$,typeClass:T,contentId:y,inputId:E,btnSize:p,iconComponent:_,confirmButtonClasses:se,rootRef:C,focusStartRef:F,headerRef:z,inputRef:K,isDragging:v,confirmRef:le,doClose:R,handleClose:re,onCloseRequested:L,handleWrapperClick:c,handleInputEnter:P,handleAction:k,t:u}}}),oa=["aria-label","aria-describedby"],ra=["aria-label"],ia=["id"];function ua(e,m,l,d,a,p){const u=Ce("el-icon"),x=Ce("el-input"),U=Ce("el-button"),t=Ce("el-focus-trap"),T=Ce("el-overlay");return i(),H(jt,{name:"fade-in-linear",onAfterLeave:m[11]||(m[11]=y=>e.$emit("vanish")),persisted:""},{default:f(()=>[Re(s(T,{"z-index":e.zIndex,"overlay-class":[e.ns.is("message-box"),e.modalClass],mask:e.modal},{default:f(()=>[n("div",{role:"dialog","aria-label":e.title,"aria-modal":"true","aria-describedby":e.showInput?void 0:e.contentId,class:G(`${e.ns.namespace.value}-overlay-message-box`),onClick:m[8]||(m[8]=(...y)=>e.overlayEvent.onClick&&e.overlayEvent.onClick(...y)),onMousedown:m[9]||(m[9]=(...y)=>e.overlayEvent.onMousedown&&e.overlayEvent.onMousedown(...y)),onMouseup:m[10]||(m[10]=(...y)=>e.overlayEvent.onMouseup&&e.overlayEvent.onMouseup(...y))},[s(t,{loop:"",trapped:e.visible,"focus-trap-el":e.rootRef,"focus-start-el":e.focusStartRef,onReleaseRequested:e.onCloseRequested},{default:f(()=>[n("div",{ref:"rootRef",class:G([e.ns.b(),e.customClass,e.ns.is("draggable",e.draggable),e.ns.is("dragging",e.isDragging),{[e.ns.m("center")]:e.center}]),style:tt(e.customStyle),tabindex:"-1",onClick:m[7]||(m[7]=ke(()=>{},["stop"]))},[e.title!==null&&e.title!==void 0?(i(),h("div",{key:0,ref:"headerRef",class:G([e.ns.e("header"),{"show-close":e.showClose}])},[n("div",{class:G(e.ns.e("title"))},[e.iconComponent&&e.center?(i(),H(u,{key:0,class:G([e.ns.e("status"),e.typeClass])},{default:f(()=>[(i(),H(we(e.iconComponent)))]),_:1},8,["class"])):M("v-if",!0),n("span",null,o(e.title),1)],2),e.showClose?(i(),h("button",{key:0,type:"button",class:G(e.ns.e("headerbtn")),"aria-label":e.t("el.messagebox.close"),onClick:m[0]||(m[0]=y=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel")),onKeydown:m[1]||(m[1]=be(ke(y=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel"),["prevent"]),["enter"]))},[s(u,{class:G(e.ns.e("close"))},{default:f(()=>[(i(),H(we(e.closeIcon||"close")))]),_:1},8,["class"])],42,ra)):M("v-if",!0)],2)):M("v-if",!0),n("div",{id:e.contentId,class:G(e.ns.e("content"))},[n("div",{class:G(e.ns.e("container"))},[e.iconComponent&&!e.center&&e.hasMessage?(i(),H(u,{key:0,class:G([e.ns.e("status"),e.typeClass])},{default:f(()=>[(i(),H(we(e.iconComponent)))]),_:1},8,["class"])):M("v-if",!0),e.hasMessage?(i(),h("div",{key:1,class:G(e.ns.e("message"))},[Nt(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(i(),H(we(e.showInput?"label":"p"),{key:1,for:e.showInput?e.inputId:void 0,innerHTML:e.message},null,8,["for","innerHTML"])):(i(),H(we(e.showInput?"label":"p"),{key:0,for:e.showInput?e.inputId:void 0,textContent:o(e.message)},null,8,["for","textContent"]))])],2)):M("v-if",!0)],2),Re(n("div",{class:G(e.ns.e("input"))},[s(x,{id:e.inputId,ref:"inputRef",modelValue:e.inputValue,"onUpdate:modelValue":m[2]||(m[2]=y=>e.inputValue=y),type:e.inputType,placeholder:e.inputPlaceholder,"aria-invalid":e.validateError,class:G({invalid:e.validateError}),onKeydown:be(e.handleInputEnter,["enter"])},null,8,["id","modelValue","type","placeholder","aria-invalid","class","onKeydown"]),n("div",{class:G(e.ns.e("errormsg")),style:tt({visibility:e.editorErrorMessage?"visible":"hidden"})},o(e.editorErrorMessage),7)],2),[[ze,e.showInput]])],10,ia),n("div",{class:G(e.ns.e("btns"))},[e.showCancelButton?(i(),H(U,{key:0,loading:e.cancelButtonLoading,"loading-icon":e.cancelButtonLoadingIcon,class:G([e.cancelButtonClass]),round:e.roundButton,size:e.btnSize,onClick:m[3]||(m[3]=y=>e.handleAction("cancel")),onKeydown:m[4]||(m[4]=be(ke(y=>e.handleAction("cancel"),["prevent"]),["enter"]))},{default:f(()=>[D(o(e.cancelButtonText||e.t("el.messagebox.cancel")),1)]),_:1},8,["loading","loading-icon","class","round","size"])):M("v-if",!0),Re(s(U,{ref:"confirmRef",type:"primary",loading:e.confirmButtonLoading,"loading-icon":e.confirmButtonLoadingIcon,class:G([e.confirmButtonClasses]),round:e.roundButton,disabled:e.confirmButtonDisabled,size:e.btnSize,onClick:m[5]||(m[5]=y=>e.handleAction("confirm")),onKeydown:m[6]||(m[6]=be(ke(y=>e.handleAction("confirm"),["prevent"]),["enter"]))},{default:f(()=>[D(o(e.confirmButtonText||e.t("el.messagebox.confirm")),1)]),_:1},8,["loading","loading-icon","class","round","disabled","size"]),[[ze,e.showConfirmButton]])],2)],6)]),_:3},8,["trapped","focus-trap-el","focus-start-el","onReleaseRequested"])],42,oa)]),_:3},8,["z-index","overlay-class","mask"]),[[ze,e.visible]])]),_:3})}var ca=pt(sa,[["render",ua],["__file","/home/runner/work/element-plus/element-plus/packages/components/message-box/src/index.vue"]]);const xe=new Map,da=e=>{let m=document.body;return e.appendTo&&(Fe(e.appendTo)&&(m=document.querySelector(e.appendTo)),Ke(e.appendTo)&&(m=e.appendTo),Ke(m)||(m=document.body)),m},ma=(e,m,l=null)=>{const d=s(ca,e,je(e.message)||ot(e.message)?{default:je(e.message)?e.message:()=>e.message}:null);return d.appContext=l,rt(d,m),da(e).appendChild(m.firstElementChild),d.component},fa=()=>document.createElement("div"),va=(e,m)=>{const l=fa();e.onVanish=()=>{rt(null,l),xe.delete(a)},e.onAction=p=>{const u=xe.get(a);let x;e.showInput?x={value:a.inputValue,action:p}:x=p,e.callback?e.callback(x,d.proxy):p==="cancel"||p==="close"?e.distinguishCancelAndClose&&p!=="cancel"?u.reject("close"):u.reject("cancel"):u.resolve(x)};const d=ma(e,l,m),a=d.proxy;for(const p in e)at(e,p)&&!at(a.$props,p)&&(p==="closeIcon"&&it(e[p])?a[p]=Ne(e[p]):a[p]=e[p]);return a.visible=!0,a};function _e(e,m=null){if(!bt)return Promise.reject();let l;return Fe(e)||ot(e)?e={message:e}:l=e.callback,new Promise((d,a)=>{const p=va(e,m??_e._context);xe.set(p,{options:e,callback:l,resolve:d,reject:a})})}const pa=["alert","confirm","prompt"],ga={alert:{closeOnPressEscape:!1,closeOnClickModal:!1},confirm:{showCancelButton:!0},prompt:{showCancelButton:!0,showInput:!0}};pa.forEach(e=>{_e[e]=ya(e)});function ya(e){return(m,l,d,a)=>{let p="";return it(l)?(d=l,p=""):_t(l)?p="":p=l,_e(Object.assign({title:p,message:m,type:"",...ga[e]},d,{boxType:e}),a)}}_e.close=()=>{xe.forEach((e,m)=>{m.doClose()}),xe.clear()};_e._context=null;const pe=_e;pe.install=e=>{pe._context=e._context,e.config.globalProperties.$msgbox=pe,e.config.globalProperties.$messageBox=pe,e.config.globalProperties.$alert=pe.alert,e.config.globalProperties.$confirm=pe.confirm,e.config.globalProperties.$prompt=pe.prompt};const mt=pe,ha={class:"flex items-center justify-between shrink-0"},ba={class:"flex items-center gap-4"},_a={class:"flex flex-col items-start gap-2"},$a={class:"flex items-center gap-2"},Ca={class:"text-2xl font-bold text-gray-900 dark:text-white"},wa={class:"flex gap-2"},ka=ue({__name:"ServerDetailHeader",props:{server:{}},emits:["back","delete","restart-all","start-all","stop-all"],setup(e,{emit:m}){const l=e,d=m;me();const a=J(()=>l.server.rawV11Config?.instances?.length?l.server.rawV11Config.instances.length:l.server.instances?.length?l.server.instances.length:1),p=J(()=>a.value),u=J(()=>l.server.instances?.length?l.server.instances.filter(_=>_.status==="online").length:l.server.status==="online"?1:0),x=J(()=>l.server.instances?.length?l.server.instances.filter(_=>_.status!=="online").length:a.value>1?a.value-u.value:l.server.status!=="online"?1:0);function U(){d("back")}function t(){d("delete")}function T(){d("restart-all")}function y(){d("start-all")}function E(){d("stop-all")}return(_,$)=>{const C=de,z=He;return i(),h("div",ha,[n("div",ba,[s(C,{icon:g($t),plain:"",onClick:U,class:"shrink-0"},{default:f(()=>[D(o(_.$t("action.back")),1)]),_:1},8,["icon"]),n("div",_a,[n("div",$a,[n("h2",Ca,o(e.server.name),1),e.server.version?(i(),H(z,{key:0,size:"small",class:"ml-2"},{default:f(()=>[D(o(e.server.version),1)]),_:1})):M("",!0)]),s(qt,{server:e.server},null,8,["server"])])]),n("div",wa,[x.value>0?(i(),H(C,{key:0,type:"success",icon:g(st),onClick:y},{default:f(()=>[D(o(_.$t("action.startAll"))+" ("+o(x.value)+") ",1)]),_:1},8,["icon"])):M("",!0),u.value>0?(i(),H(C,{key:1,type:"primary",icon:g(Me),onClick:T},{default:f(()=>[D(o(_.$t("action.restartAll"))+" ("+o(p.value)+") ",1)]),_:1},8,["icon"])):M("",!0),u.value>0?(i(),H(C,{key:2,type:"warning",icon:g(Ct),onClick:E},{default:f(()=>[D(o(_.$t("action.stopAll"))+" ("+o(u.value)+") ",1)]),_:1},8,["icon"])):M("",!0),s(C,{type:"danger",icon:g(ie),onClick:t},{default:f(()=>[D(o(_.$t("action.deleteServer")),1)]),_:1},8,["icon"])])])}}}),xa={class:"config-template-form h-full flex flex-col min-h-0"},Sa={class:"space-y-4 flex-1 overflow-y-auto min-h-0"},Va={class:"px-4"},Ia={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Ta={key:0,class:"px-4"},Da={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Ea={key:1,class:"px-4"},Ba={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Ua={key:2,class:"px-4"},Aa={class:"flex items-center justify-between mb-2"},Ra={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},za={key:0,class:"space-y-2"},Na={class:"px-4"},ja={class:"flex items-center justify-between mb-2"},Oa={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Ma={key:0,class:"space-y-2"},Pa={key:3,class:"px-4"},Fa={class:"flex items-center justify-between mb-2"},La={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Ha={key:0,class:"space-y-2"},Ja={class:"px-4"},qa={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Wa={class:"px-4"},Ga={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Qa={key:4,class:"px-4"},Xa={class:"flex items-center justify-between mb-2"},Za={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Ya={key:0,class:"flex gap-2 items-start"},Ka={class:"px-4"},el={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},tl={class:"flex gap-2 pt-4 pb-4 border-t border-gray-200 dark:border-gray-700 px-4"},al=ue({__name:"ConfigTemplateForm",props:{config:{}},emits:["update:template","save","edit-json"],setup(e,{emit:m}){const l=e,d=m;me();const a=O({...l.config,template:{...l.config.template,instanceSelectionStrategy:l.config.template.instanceSelectionStrategy||"random"}});let p=0,u=0;const x=O({}),U=O({});te(()=>l.config,v=>{a.value={...v,template:{...v.template,instanceSelectionStrategy:v.template.instanceSelectionStrategy||"random"}},T(),y()},{immediate:!0});const t=J({get:()=>a.value?.template?.timeout?a.value.template.timeout/1e3:60,set:v=>{a.value&&(a.value.template.timeout=v*1e3)}});function T(){a.value?.template?.env&&(x.value={},Object.keys(a.value.template.env).forEach(v=>{x.value[v]=`env-${p++}`}))}function y(){a.value?.template?.headers&&(U.value={},Object.keys(a.value.template.headers).forEach(v=>{U.value[v]=`header-${u++}`}))}function E(){a.value.template.args||(a.value.template.args=[]),a.value.template.args.push(""),d("update:template",{...a.value.template})}function _(v){a.value.template.args?.splice(v,1),d("update:template",{...a.value.template})}function $(){a.value.template.env||(a.value.template.env={});const v=`NEW_VAR_${Object.keys(a.value.template.env).length}`;a.value.template.env[v]="",x.value[v]=`env-${p++}`,d("update:template",{...a.value.template})}function C(v){delete a.value.template.env[v],delete x.value[v],d("update:template",{...a.value.template})}function z(v,R){if(v===R)return;const c=a.value.template.env[v]||"",w=x.value[v]||`env-${p++}`;delete a.value.template.env[v],delete x.value[v],a.value.template.env[R]=c,x.value[R]=w,d("update:template",{...a.value.template})}function F(){a.value.template.headers||(a.value.template.headers={});const v=`NEW_HEADER_${Object.keys(a.value.template.headers).length}`;a.value.template.headers[v]="",U.value[v]=`header-${u++}`,d("update:template",{...a.value.template})}function K(v){delete a.value.template.headers[v],delete U.value[v],d("update:template",{...a.value.template})}function le(v,R){if(v===R)return;const c=a.value.template.headers[v]||"",w=U.value[v]||`header-${u++}`;delete a.value.template.headers[v],delete U.value[v],a.value.template.headers[R]=c,U.value[R]=w,d("update:template",{...a.value.template})}function se(){a.value.template.proxy?a.value.template.proxy=void 0:a.value.template.proxy={url:""},d("update:template",{...a.value.template})}function ce(){const v={command:a.value.template.command,args:a.value.template.args,env:a.value.template.env,headers:a.value.template.headers,type:a.value.template.type,timeout:a.value.template.timeout,url:a.value.template.url,aggregatedTools:a.value.template.aggregatedTools,description:a.value.template.description,proxy:a.value.template.proxy,instanceSelectionStrategy:a.value.template.instanceSelectionStrategy};d("update:template",v),d("save")}function N(){d("edit-json")}return(v,R)=>{const c=Kt,w=Yt,P=Ve,k=de,q=ct,oe=qe,re=Je;return i(),h("div",xa,[n("div",Sa,[n("div",Va,[n("label",Ia,o(v.$t("serverDetail.config.transport")),1),s(w,{modelValue:a.value.template.type,"onUpdate:modelValue":R[0]||(R[0]=L=>a.value.template.type=L),class:"flex gap-4"},{default:f(()=>[s(c,{value:"stdio"},{default:f(()=>[D(o(v.$t("serverDetail.config.transportStdio")),1)]),_:1}),s(c,{value:"sse"},{default:f(()=>[D(o(v.$t("serverDetail.config.transportSse")),1)]),_:1}),s(c,{value:"streamable-http"},{default:f(()=>[D(o(v.$t("serverDetail.config.transportHttp")),1)]),_:1})]),_:1},8,["modelValue"])]),a.value.template.type==="stdio"?(i(),h("div",Ta,[n("label",Da,o(v.$t("serverDetail.config.executable")),1),s(P,{modelValue:a.value.template.command,"onUpdate:modelValue":R[1]||(R[1]=L=>a.value.template.command=L)},null,8,["modelValue"])])):(i(),h("div",Ea,[n("label",Ba,o(v.$t("serverDetail.config.url")),1),s(P,{modelValue:a.value.template.url,"onUpdate:modelValue":R[2]||(R[2]=L=>a.value.template.url=L)},null,8,["modelValue"])])),a.value.template.type==="stdio"?(i(),h("div",Ua,[n("div",Aa,[n("label",Ra,o(v.$t("serverDetail.config.args")),1),s(k,{size:"small",icon:g(fe),onClick:E},{default:f(()=>[D(o(v.$t("serverDetail.config.addArg")),1)]),_:1},8,["icon"])]),a.value.template.args&&a.value.template.args.length>0?(i(),h("div",za,[(i(!0),h(X,null,Y(a.value.template.args,(L,I)=>(i(),h("div",{key:I,class:"flex gap-2 px-4"},[s(P,{modelValue:a.value.template.args[I],"onUpdate:modelValue":W=>a.value.template.args[I]=W,class:"flex-1"},null,8,["modelValue","onUpdate:modelValue"]),s(k,{size:"small",type:"danger",icon:g(ie),onClick:W=>_(I)},null,8,["icon","onClick"])]))),128))])):M("",!0)])):M("",!0),n("div",Na,[n("div",ja,[n("label",Oa,o(v.$t("serverDetail.config.env")),1),s(k,{size:"small",icon:g(fe),onClick:$},{default:f(()=>[D(o(v.$t("serverDetail.config.addEnv")),1)]),_:1},8,["icon"])]),a.value.template.env&&Object.keys(a.value.template.env).length>0?(i(),h("div",Ma,[(i(!0),h(X,null,Y(a.value.template.env,(L,I)=>(i(),h("div",{key:x.value[I],class:"flex gap-2 items-start px-4",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(P,{"model-value":I,style:{width:"30%","min-width":"150px"},placeholder:v.$t("addServer.keyPlaceholder"),"onUpdate:modelValue":W=>z(I,W)},null,8,["model-value","placeholder","onUpdate:modelValue"]),s(P,{modelValue:a.value.template.env[I],"onUpdate:modelValue":W=>a.value.template.env[I]=W,style:{flex:"1"},placeholder:v.$t("addServer.valuePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),s(k,{size:"small",type:"danger",icon:g(ie),onClick:W=>C(I)},null,8,["icon","onClick"])]))),128))])):M("",!0)]),a.value.template.type!=="stdio"?(i(),h("div",Pa,[n("div",Fa,[n("label",La,o(v.$t("serverDetail.config.headers")),1),s(k,{size:"small",icon:g(fe),onClick:F},{default:f(()=>[D(o(v.$t("serverDetail.config.addHeader")),1)]),_:1},8,["icon"])]),a.value.template.headers&&Object.keys(a.value.template.headers).length>0?(i(),h("div",Ha,[(i(!0),h(X,null,Y(a.value.template.headers,(L,I)=>(i(),h("div",{key:U.value[I],class:"flex gap-2 items-start px-4",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(P,{"model-value":I,style:{width:"30%","min-width":"150px"},placeholder:v.$t("addServer.keyPlaceholder"),"onUpdate:modelValue":W=>le(I,W)},null,8,["model-value","placeholder","onUpdate:modelValue"]),s(P,{modelValue:a.value.template.headers[I],"onUpdate:modelValue":W=>a.value.template.headers[I]=W,style:{flex:"1"},placeholder:v.$t("addServer.valuePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),s(k,{size:"small",type:"danger",icon:g(ie),onClick:W=>K(I)},null,8,["icon","onClick"])]))),128))])):M("",!0)])):M("",!0),n("div",Ja,[n("label",qa,o(v.$t("serverDetail.config.timeout")),1),s(q,{modelValue:t.value,"onUpdate:modelValue":R[3]||(R[3]=L=>t.value=L),min:1,max:3600},null,8,["modelValue"])]),n("div",Wa,[n("label",Ga,o(v.$t("common.description")),1),s(P,{modelValue:a.value.template.description,"onUpdate:modelValue":R[4]||(R[4]=L=>a.value.template.description=L),type:"textarea",rows:3,placeholder:v.$t("serverDetail.config.descriptionPlaceholder")},null,8,["modelValue","placeholder"])]),a.value.template.type!=="stdio"?(i(),h("div",Qa,[n("div",Xa,[n("label",Za,o(v.$t("serverDetail.config.proxy")),1),a.value.template.proxy?(i(),H(k,{key:1,size:"small",type:"danger",icon:g(ie),onClick:se},{default:f(()=>[D(o(v.$t("serverDetail.config.removeProxy")),1)]),_:1},8,["icon"])):(i(),H(k,{key:0,size:"small",icon:g(fe),onClick:se},{default:f(()=>[D(o(v.$t("serverDetail.config.addProxy")),1)]),_:1},8,["icon"]))]),a.value.template.proxy?(i(),h("div",Ya,[s(P,{modelValue:a.value.template.proxy.url,"onUpdate:modelValue":R[5]||(R[5]=L=>a.value.template.proxy.url=L),placeholder:v.$t("serverDetail.config.proxyPlaceholder")},null,8,["modelValue","placeholder"])])):M("",!0)])):M("",!0),n("div",Ka,[n("label",el,o(v.$t("serverDetail.config.instanceSelectionStrategy")),1),s(re,{modelValue:a.value.template.instanceSelectionStrategy,"onUpdate:modelValue":R[6]||(R[6]=L=>a.value.template.instanceSelectionStrategy=L),placeholder:v.$t("serverDetail.config.strategyRandom")+"(默认)"},{default:f(()=>[s(oe,{value:"random",label:v.$t("serverDetail.config.strategyRandom")},null,8,["label"]),s(oe,{value:"round-robin",label:v.$t("serverDetail.config.strategyRoundRobin")},null,8,["label"]),s(oe,{value:"tag-match-unique",label:v.$t("serverDetail.config.strategyTagMatchUnique")},null,8,["label"])]),_:1},8,["modelValue","placeholder"])]),n("div",tl,[s(k,{type:"primary",onClick:ce},{default:f(()=>[D(o(v.$t("serverDetail.config.save")),1)]),_:1}),s(k,{onClick:N},{default:f(()=>[D(o(v.$t("serverDetail.config.editByJson")),1)]),_:1})])])])}}}),ll=Ie(al,[["__scopeId","data-v-d857c695"]]),nl={class:"h-full flex flex-col"},sl={class:"flex items-center justify-between gap-2 mb-2 shrink-0"},ol={class:"flex items-center gap-2"},rl=ue({__name:"LogViewer",props:{logs:{},autoScroll:{type:Boolean,default:!0}},emits:["update:autoScroll","clear","copy"],setup(e,{emit:m}){const l=e,d=m;me();const a=O(null),p=O(l.autoScroll);te(()=>l.autoScroll,T=>{p.value=T}),te(()=>l.logs.length,()=>{p.value&&he(()=>{a.value&&(a.value.scrollTop=a.value.scrollHeight)})});function u(T){const y=!!T;p.value=y,d("update:autoScroll",y)}function x(){d("clear")}function U(){d("copy")}function t(T){switch(T){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(T,y)=>{const E=ea,_=de;return i(),h("div",nl,[n("div",sl,[n("div",ol,[s(E,{modelValue:p.value,"onUpdate:modelValue":[y[0]||(y[0]=$=>p.value=$),u],label:T.$t("serverDetail.logs.autoScroll"),class:"text-gray-600 dark:text-gray-400"},null,8,["modelValue","label"]),s(_,{size:"small",icon:g(ie),plain:"",onClick:x},{default:f(()=>[D(o(T.$t("serverDetail.logs.clear")),1)]),_:1},8,["icon"]),s(_,{size:"small",icon:g(wt),plain:"",onClick:U},{default:f(()=>[D(o(T.$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:a},[(i(!0),h(X,null,Y(e.logs,($,C)=>(i(),h("div",{key:C,class:"mb-1 break-words"},[n("span",{class:G(t($.level))},o(g(ut)($.timestamp))+" ["+o($.level.toUpperCase())+"] "+o($.message),3)]))),128))],512)])}}}),il={class:"h-full flex flex-col"},ul={class:"flex h-full gap-4"},cl={class:"w-1/3 border-r border-gray-200 dark:border-gray-700 pr-4 overflow-y-auto"},dl={class:"font-bold mb-4"},ml={key:0,class:"space-y-2"},fl=["onClick"],vl={class:"min-w-0 flex-1 mr-2"},pl={class:"font-medium truncate"},gl={key:1,class:"text-gray-500 text-sm italic"},yl={class:"flex-1 min-h-0 overflow-y-auto px-4 flex flex-col"},hl={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"},kl={key:1,class:"flex-1 flex items-center justify-center text-gray-400"},xl=ue({__name:"ToolsTab",props:{tools:{},allowedTools:{default:null}},emits:["select-tool","update-tool-visibility","call-tool"],setup(e,{emit:m}){const l=e,d=m;me();const a=O(null);function p(t){a.value=t,d("select-tool",t)}function u(t){return l.allowedTools===void 0||l.allowedTools===null||l.allowedTools.length===0?!1:Array.isArray(l.allowedTools)?l.allowedTools.includes(t):!1}function x(t,T){d("update-tool-visibility",t,T)}function U(){a.value&&d("call-tool",a.value)}return(t,T)=>{const y=dt,E=de;return i(),h("div",il,[n("div",ul,[n("div",cl,[n("h3",dl,o(t.$t("serverDetail.tools.available")),1),e.tools&&e.tools.length>0?(i(),h("div",ml,[(i(!0),h(X,null,Y(e.tools,_=>(i(),h("div",{key:_.name,class:G(["p-3 rounded-lg cursor-pointer transition-colors flex items-center justify-between group",a.value?.name===_.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:$=>p(_)},[n("div",vl,[n("div",pl,o(_.name),1)]),s(y,{"model-value":u(_.name),"onUpdate:modelValue":$=>x(_.name,!!$),class:"mr-4","active-text":t.$t("serverDetail.tools.aggregated")},null,8,["model-value","onUpdate:modelValue","active-text"])],10,fl))),128))])):(i(),h("div",gl,o(t.$t("serverDetail.tools.none")),1))]),n("div",yl,[n("div",hl,[n("h3",bl,o(t.$t("serverDetail.tools.details"))+": "+o(a.value?.name||""),1),a.value?(i(),H(E,{key:0,type:"primary",size:"small",onClick:U},{default:f(()=>[D(o(t.$t("serverDetail.tools.call")),1)]),_:1})):M("",!0)]),a.value?(i(),h("div",_l,[n("p",$l,o(a.value.description),1),n("h4",Cl,o(t.$t("serverDetail.tools.schema")),1),n("pre",wl,o(JSON.stringify(a.value.inputSchema,null,2)),1)])):(i(),h("div",kl,o(t.$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=ue({__name:"ResourcesTab",props:{resources:{}},emits:["view-resource"],setup(e,{emit:m}){const l=m;me();function d(a){l("view-resource",a)}return(a,p)=>{const u=Se,x=aa,U=de,t=ta;return i(),h("div",Sl,[s(t,{data:e.resources||[],style:{width:"100%"},class:"custom-table"},{default:f(()=>[s(x,{prop:"name",label:a.$t("common.name"),width:"200"},{default:f(({row:T})=>[n("div",Vl,[s(u,null,{default:f(()=>[s(g(kt))]),_:1}),n("span",Il,o(T.name),1)])]),_:1},8,["label"]),s(x,{prop:"uri",label:a.$t("common.uri"),"min-width":"300"},null,8,["label"]),s(x,{prop:"mimeType",label:a.$t("common.mimeType"),width:"150"},null,8,["label"]),s(x,{label:"",width:"100",align:"right"},{default:f(({row:T})=>[s(U,{size:"small",plain:"",onClick:y=>d(T)},{default:f(()=>[D(o(a.$t("action.view")),1)]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]),!e.resources||e.resources.length===0?(i(),h("div",Tl,o(a.$t("serverDetail.resources.none")),1)):M("",!0)])}}}),El={class:"dialog-footer"},Bl=ue({__name:"JsonConfigEditor",props:{modelValue:{type:Boolean},config:{},serverName:{}},emits:["update:modelValue","save"],setup(e,{emit:m}){const l=e,d=m,{t:a}=me(),p=O(""),u=J({get:()=>l.modelValue,set:y=>d("update:modelValue",y)}),x=J(()=>a("serverDetail.editJsonTitle")||"Edit JSON Config");te(()=>l.modelValue,y=>{y&&U()});function U(){const y={env:l.config.env||{},enabled:l.config.enabled,description:l.config.description};l.config.headers&&Object.keys(l.config.headers).length>0&&(y.headers=l.config.headers),l.config.timeout&&(y.timeout=l.config.timeout),l.config.type==="stdio"?(y.command=l.config.command,y.args=l.config.args||[]):y.url=l.config.url;const E={mcpServers:{[l.serverName]:y}};p.value=JSON.stringify(E,null,2)}function t(){u.value=!1}function T(){try{const y=JSON.parse(p.value);if(!y.mcpServers)throw new Error("Missing mcpServers key");const E=Object.keys(y.mcpServers);if(E.length===0)throw new Error("No server config found");const _=E[0]||"",$=y.mcpServers[_],C={...l.config};$.command?(C.type="stdio",C.command=$.command,C.args=$.args||[],delete C.url):$.url&&(C.type=$.type==="sse"?"sse":"streamable-http",C.url=$.url,delete C.command,delete C.args),$.env&&(C.env=$.env),$.headers&&(C.headers=$.headers),$.timeout!==void 0&&(C.timeout=$.timeout),$.enabled!==void 0&&(C.enabled=$.enabled),$.description!==void 0&&(C.description=$.description),d("save",C),u.value=!1,V.success(a("action.configSaved"))}catch(y){y instanceof Error?V.error("Invalid JSON: "+y.message):V.error("Invalid JSON: "+String(y))}}return(y,E)=>{const _=Ve,$=de,C=We;return i(),H(C,{modelValue:u.value,"onUpdate:modelValue":E[1]||(E[1]=z=>u.value=z),title:x.value,width:"600px"},{footer:f(()=>[n("span",El,[s($,{onClick:t},{default:f(()=>[D(o(y.$t("action.cancel")),1)]),_:1}),s($,{type:"primary",onClick:T},{default:f(()=>[D(o(y.$t("action.save")),1)]),_:1})])]),default:f(()=>[s(_,{modelValue:p.value,"onUpdate:modelValue":E[0]||(E[0]=z=>p.value=z),type:"textarea",rows:15,"font-family":"monospace"},null,8,["modelValue"])]),_:1},8,["modelValue","title"])}}}),Ul={class:"dialog-footer"},nt=ue({__name:"InstanceSelectDialog",props:{modelValue:{type:Boolean},instances:{},title:{default:""}},emits:["update:modelValue","confirm"],setup(e,{emit:m}){const l=e,d=m,{t:a}=me(),p=O(null),u=J({get:()=>l.modelValue,set:y=>d("update:modelValue",y)}),x=J(()=>l.title||a("serverDetail.selectInstanceTitle")||"Select Instance");function U(y){return`#${y.index??0} [${y.displayName||a("serverDetail.instances.unnamed")}]`}function t(){u.value=!1,p.value=null}function T(){p.value!==null&&(d("confirm",p.value),u.value=!1,p.value=null)}return(y,E)=>{const _=qe,$=Je,C=de,z=We;return i(),H(z,{modelValue:u.value,"onUpdate:modelValue":E[1]||(E[1]=F=>u.value=F),title:x.value,width:"500px"},{footer:f(()=>[n("span",Ul,[s(C,{onClick:t},{default:f(()=>[D(o(y.$t("action.cancel")),1)]),_:1}),s(C,{type:"primary",onClick:T,disabled:p.value===null},{default:f(()=>[D(o(y.$t("action.confirm")),1)]),_:1},8,["disabled"])])]),default:f(()=>[s($,{modelValue:p.value,"onUpdate:modelValue":E[0]||(E[0]=F=>p.value=F),placeholder:y.$t("serverDetail.selectInstancePlaceholder"),class:"w-full"},{default:f(()=>[(i(!0),h(X,null,Y(e.instances,F=>(i(),H(_,{key:F.index??0,label:U(F),value:F.index??0},null,8,["label","value"]))),128))]),_:1},8,["modelValue","placeholder"])]),_:1},8,["modelValue","title"])}}}),Al={class:"instance-card-list"},Rl={class:"mb-4 flex justify-between items-center"},zl={class:"text-lg font-semibold text-gray-900 dark:text-white"},Nl={key:0,class:"mb-4"},jl={class:"flex items-center justify-between"},Ol={class:"flex items-center gap-3"},Ml={class:"flex items-center gap-2"},Pl={class:"font-mono text-sm text-purple-600 dark:text-purple-400"},Fl={class:"flex flex-col gap-3 mb-4"},Ll=["onClick"],Hl={class:"flex items-center justify-between"},Jl={class:"flex items-center gap-3"},ql={class:"flex items-center gap-2"},Wl={class:"font-mono text-sm text-gray-500 dark:text-gray-400"},Gl={class:"font-medium text-gray-900 dark:text-white"},Ql={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=ue({__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,d=m,a=O(!1),p=O(null),u=O(""),x=O(),U=J(()=>[...l.instances].sort((N,v)=>(N.index??0)-(v.index??0)));function t(N){return N.status||"offline"}function T(){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 y(N){return l.selectedIndex===N?"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(N){switch(N){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 _(N){switch(N){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 $(){d("select-template")}function C(N){d("select",N)}function z(){d("add")}function F(N){a.value=!0,p.value=N.index??null,u.value=N.displayName||"",setTimeout(()=>{x.value?.focus()},100)}function K(N){const v=u.value.trim();d("update-display-name",N,v),le()}function le(){a.value=!1,p.value=null,u.value=""}function se(N){d("delete",N)}function ce(){d("reassign-indexes")}return(N,v)=>{const R=de,c=He,w=Ve,P=xt;return i(),h("div",Al,[n("div",Rl,[n("h3",zl,o(N.$t("serverDetail.instances.title")),1),s(R,{size:"small",icon:g(Me),plain:"",onClick:ce},{default:f(()=>[D(o(N.$t("serverDetail.instances.reassignIndexes")),1)]),_:1},8,["icon"])]),e.showTemplateNode?(i(),h("div",Nl,[n("div",{class:G(["template-card p-4 rounded-lg border transition-all duration-200 cursor-pointer",T()]),onClick:$},[n("div",jl,[n("div",Ol,[v[2]||(v[2]=n("div",{class:"w-3 h-3 rounded-full bg-purple-500"},null,-1)),n("div",Ml,[n("span",Pl,o(N.$t("common.template")),1),s(c,{size:"small",type:"info"},{default:f(()=>[D(o(N.$t("serverDetail.instances.templateTag")),1)]),_:1})])])])],2)])):M("",!0),n("div",Fl,[(i(!0),h(X,null,Y(U.value,k=>(i(),h("div",{key:k.index??0,class:G(["instance-card p-4 rounded-lg border transition-all duration-200 cursor-pointer",y(k.index??0)]),onClick:q=>C(k.index??0)},[n("div",Hl,[n("div",Jl,[n("div",{class:G(["w-3 h-3 rounded-full",E(t(k))])},null,2),n("div",ql,[!a.value||p.value!==k.index?(i(),h(X,{key:0},[n("span",Wl," #"+o(k.index??0),1),n("span",Gl," ["+o(k.displayName||N.$t("serverDetail.instances.unnamed"))+"] ",1)],64)):(i(),H(w,{key:1,modelValue:u.value,"onUpdate:modelValue":v[0]||(v[0]=q=>u.value=q),size:"small",onKeyup:[be(q=>K(k.index??0),["enter"]),be(le,["escape"])],ref_for:!0,ref_key:"displayNameInputRef",ref:x,onBlur:q=>K(k.index??0),class:"max-w-xs"},null,8,["modelValue","onKeyup","onBlur"]))]),k.pid&&t(k)==="online"?M("",!0):(i(),h("div",{key:0,class:G(["px-2 py-0.5 rounded-full text-xs",_(t(k))])},o(N.$t(`serverDetail.status.${t(k)}`)),3)),k.transportType==="stdio"&&k.pid&&t(k)==="online"?(i(),h("div",Ql," PID: "+o(k.pid),1)):M("",!0)]),n("div",{class:"flex items-center gap-2",onClick:v[1]||(v[1]=ke(()=>{},["stop"]))},[!a.value||p.value!==k.index?(i(),h(X,{key:0},[s(P,{content:N.$t("serverDetail.instances.editDisplayName")||"Edit display name",placement:"top"},{default:f(()=>[s(R,{icon:g(St),circle:"",plain:"",size:"small",onClick:q=>F(k)},null,8,["icon","onClick"])]),_:2},1032,["content"]),s(R,{icon:g(ie),circle:"",plain:"",size:"small",type:"danger",onClick:q=>se(k.index??0)},null,8,["icon","onClick"])],64)):M("",!0)])])],10,Ll))),128))]),s(R,{icon:g(fe),class:"w-full",onClick:z},{default:f(()=>[D(o(N.$t("serverDetail.instances.add")),1)]),_:1},8,["icon"])])}}}),Zl=Ie(Xl,[["__scopeId","data-v-24e76b86"]]),Yl={class:"preview-content"},Kl={class:"action-bar flex justify-end mb-4"},en={class:"config-display"},tn={class:"config-json"},an=ue({__name:"MergedConfigPreviewDialog",props:{modelValue:{type:Boolean},mergedConfig:{}},emits:["update:modelValue"],setup(e){const m=e,{t:l}=me(),d=J(()=>JSON.stringify(m.mergedConfig,null,2));async function a(){try{await navigator.clipboard.writeText(d.value),V.success(l("action.copiedToClipboard"))}catch{V.error(l("action.copyFailed"))}}return(p,u)=>{const x=Se,U=de,t=We;return i(),H(t,{"model-value":e.modelValue,"onUpdate:modelValue":u[0]||(u[0]=T=>p.$emit("update:modelValue",T)),title:p.$t("serverDetail.instanceConfig.mergedPreview"),width:"70%","destroy-on-close":"",class:"merged-config-dialog"},{default:f(()=>[n("div",Yl,[n("div",Kl,[s(U,{type:"primary",onClick:a},{default:f(()=>[s(x,null,{default:f(()=>[s(g(Vt))]),_:1}),D(" "+o(p.$t("common.copy")),1)]),_:1})]),n("div",en,[n("pre",tn,o(d.value),1)])])]),_:1},8,["model-value","title"])}}}),ln=Ie(an,[["__scopeId","data-v-84fcda8e"]]),nn={class:"instance-config h-full flex flex-col min-h-0"},sn={class:"header-bar flex justify-between items-center mb-4 px-4 flex-shrink-0"},on={class:"flex items-center gap-4"},rn={class:"text-lg font-semibold text-gray-900 dark:text-white"},un={class:"flex gap-2"},cn={class:"config-form space-y-4 flex-1 overflow-y-auto min-h-0 pb-4"},dn={class:"px-4"},mn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},fn={class:"flex items-center gap-2"},vn={class:"text-xs text-gray-500 dark:text-gray-400"},pn={class:"px-4"},gn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},yn={class:"flex gap-2 items-start"},hn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},bn={key:0,class:"px-4"},_n={class:"flex items-center justify-between mb-2"},$n={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Cn={key:0,class:"space-y-2 mb-3"},wn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},kn={key:1,class:"space-y-2"},xn={class:"px-4"},Sn={class:"flex items-center justify-between mb-2"},Vn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},In={key:0,class:"space-y-2 mb-3"},Tn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},Dn={key:1,class:"space-y-2"},En={key:1,class:"px-4"},Bn={class:"flex items-center justify-between mb-2"},Un={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},An={key:0,class:"space-y-2 mb-3"},Rn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},zn={key:1,class:"space-y-2"},Nn={class:"px-4"},jn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},On={class:"flex gap-2 items-center"},Mn={class:"text-xs text-gray-500 dark:text-gray-400"},Pn={class:"px-4"},Fn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Ln={class:"flex gap-2 items-start"},Hn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},Jn={key:2,class:"px-4"},qn={class:"flex items-center justify-between mb-2"},Wn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Gn={key:0,class:"space-y-2 mb-3"},Qn={class:"flex gap-2 items-start"},Xn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},Zn={key:1,class:"flex gap-2 items-start"},Yn={class:"px-4"},Kn={class:"flex items-center justify-between mb-2"},es={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},ts={key:0,class:"text-center py-4 text-gray-500"},as={key:1,class:"space-y-2"},ls={class:"text-xs text-gray-500 ml-2"},ns={class:"px-4"},ss={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},os={class:"flex gap-2 items-center"},rs={class:"flex gap-2 pt-4 pb-4 border-t border-gray-200 dark:border-gray-700 px-4"},is=ue({__name:"InstanceConfig",props:{templateConfig:{},instanceConfig:{},serverName:{},instanceStatus:{default:"offline"},systemTagDefinitions:{}},emits:["update","start-instance","stop-instance","restart-instance"],setup(e,{emit:m}){const l=e,d=m,{t:a}=me();function p(){d("start-instance")}function u(){d("stop-instance")}function x(){d("restart-instance")}const U=O(!1),t=O({enabled:!0,...l.instanceConfig});let T=0,y=0,E=0;const _=O({}),$=O({}),C=O({}),z=O({}),F=J(()=>l.templateConfig.args&&l.templateConfig.args.length>0),K=J(()=>l.templateConfig.env&&Object.keys(l.templateConfig.env).length>0),le=J(()=>l.templateConfig.headers&&Object.keys(l.templateConfig.headers).length>0);te(()=>l.instanceConfig,r=>{t.value={...r},_.value={},r.env&&Object.keys(r.env).forEach(S=>{_.value[S]=`env-${T++}`}),$.value={},r.headers&&Object.keys(r.headers).forEach(S=>{$.value[S]=`header-${y++}`}),C.value={},z.value={},r.tags&&Object.keys(r.tags).forEach(S=>{C.value[S]=`tag-${E++}`,l.systemTagDefinitions.some(ae=>ae.key===S)?z.value[S]=S:(z.value[S]=S,console.warn(`未定义的标签键: ${S}`))})},{immediate:!0});const se=J(()=>{const r={...l.templateConfig};return t.value.args&&t.value.args.length>0&&(r.args=[...l.templateConfig.args||[],...t.value.args]),t.value.env&&Object.keys(t.value.env).length>0&&(r.env={...l.templateConfig.env||{},...t.value.env}),t.value.headers&&Object.keys(t.value.headers).length>0&&(r.headers={...l.templateConfig.headers||{},...t.value.headers}),t.value.proxy&&(r.proxy=t.value.proxy),t.value.tags&&Object.keys(t.value.tags).length>0&&(r.tags=t.value.tags),t.value.displayName&&(r.displayName=t.value.displayName),t.value.enabled!==void 0&&(r.enabled=t.value.enabled),r});function ce(r){switch(r){case"stdio":return a("serverDetail.config.transportStdio");case"sse":return a("serverDetail.config.transportSse");case"streamable-http":return a("serverDetail.config.transportHttp");default:return r}}function N(){d("update",t.value)}function v(){t.value.proxy?t.value.proxy=void 0:t.value.proxy={url:""}}function R(){t.value.args||(t.value.args=[]),t.value.args.push("")}function c(r){t.value.args&&t.value.args.splice(r,1)}function w(){t.value.env||(t.value.env={});const r=`NEW_ENV_${Date.now()}`;t.value.env[r]="",_.value[r]=`env-${T++}`}function P(r){t.value.env&&(delete t.value.env[r],delete _.value[r])}function k(r,S){if(!t.value.env||!r||!S||r===S)return;const j=t.value.env[r]??"",ae=_.value[r]||`env-${T++}`;delete t.value.env[r],delete _.value[r],t.value.env[S]=j,_.value[S]=ae}function q(){t.value.headers||(t.value.headers={});const r=`X-New-Header-${Date.now()}`;t.value.headers[r]="",$.value[r]=`header-${y++}`}function oe(r){t.value.headers&&(delete t.value.headers[r],delete $.value[r])}function re(r,S){if(!t.value.headers||!r||!S||r===S)return;const j=t.value.headers[r]??"",ae=$.value[r]||`header-${y++}`;delete t.value.headers[r],delete $.value[r],t.value.headers[S]=j,$.value[S]=ae}function L(){if(t.value.tags||(t.value.tags={}),l.systemTagDefinitions.length>0){const r=l.systemTagDefinitions[0];if(r){const S=r.key;let j=S,ae=1;for(;t.value.tags&&Object.prototype.hasOwnProperty.call(t.value.tags,j);)j=`${S}-${ae}`,ae++;t.value.tags[j]="",C.value[j]=`tag-${E++}`,z.value[j]=S}}else{V.warning("请先在设置中定义标签");const r=`new-tag-${Date.now()}`;t.value.tags[r]="",C.value[r]=`tag-${E++}`,z.value[r]=r}}function I(r){t.value.tags&&(delete t.value.tags[r],delete C.value[r],delete z.value[r])}function W(r,S){if(!t.value.tags||!S)return;const j=t.value.tags[r]??"",ae=C.value[r]||`tag-${E++}`;delete t.value.tags[r],delete C.value[r],delete z.value[r],t.value.tags[S]=j,C.value[S]=ae,z.value[S]=S}function ee(r){const S=l.systemTagDefinitions.find(j=>j.key===r);return S?S.type:null}function ye(r){const S=l.systemTagDefinitions.find(j=>j.key===r);return S?.type==="enum"?S.values||[]:[]}function Te(r){return l.systemTagDefinitions.find(j=>j.key===r)?.description||"输入标签值"}function $e(){window.location.hash="#/settings/tags"}return(r,S)=>{const j=de,ae=Se,ve=He,Z=Ve,Ue=ct,De=qe,Ee=Je,Ae=dt;return i(),h("div",nn,[n("div",sn,[n("div",on,[n("h3",rn,o(r.$t("serverDetail.instanceConfig.title")),1),n("div",un,[s(j,{icon:g(Me),plain:"",onClick:x},{default:f(()=>[D(o(r.$t("action.restart")),1)]),_:1},8,["icon"]),e.instanceStatus==="online"?(i(),H(j,{key:0,type:"warning",plain:"",icon:g(It),onClick:u},{default:f(()=>[D(o(r.$t("action.stop")),1)]),_:1},8,["icon"])):(i(),H(j,{key:1,type:"success",icon:g(st),onClick:p},{default:f(()=>[D(o(r.$t("action.start")),1)]),_:1},8,["icon"]))])]),s(j,{onClick:S[0]||(S[0]=A=>U.value=!0)},{default:f(()=>[s(ae,null,{default:f(()=>[s(g(Tt))]),_:1}),D(" "+o(r.$t("serverDetail.instanceConfig.viewMerged")),1)]),_:1})]),n("div",cn,[n("div",dn,[n("label",mn,o(r.$t("serverDetail.config.transport")),1),n("div",fn,[s(ve,{size:"small",type:"info"},{default:f(()=>[D(o(ce(e.templateConfig.type)),1)]),_:1}),n("span",vn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])]),n("div",pn,[n("label",gn,o(e.templateConfig.type==="stdio"?r.$t("serverDetail.config.executable"):r.$t("serverDetail.config.url")),1),n("div",yn,[s(Z,{"model-value":e.templateConfig.type==="stdio"?e.templateConfig.command:e.templateConfig.url,disabled:"",class:"flex-1"},null,8,["model-value"]),n("span",hn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])]),e.templateConfig.type==="stdio"?(i(),h("div",bn,[n("div",_n,[n("label",$n,o(r.$t("serverDetail.config.args")),1),s(j,{size:"small",icon:g(fe),onClick:R},{default:f(()=>[D(o(r.$t("serverDetail.config.addArg")),1)]),_:1},8,["icon"])]),F.value?(i(),h("div",Cn,[(i(!0),h(X,null,Y(e.templateConfig.args,(A,b)=>(i(),h("div",{key:`template-arg-${b}`,class:"flex gap-2 items-start"},[s(Z,{"model-value":A,disabled:"",class:"flex-1"},null,8,["model-value"]),n("span",wn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)]))),128))])):M("",!0),t.value.args&&t.value.args.length>0?(i(),h("div",kn,[(i(!0),h(X,null,Y(t.value.args,(A,b)=>(i(),h("div",{key:`instance-arg-${b}`,class:"flex gap-2 items-start"},[s(Z,{modelValue:t.value.args[b],"onUpdate:modelValue":B=>t.value.args[b]=B,class:"flex-1"},null,8,["modelValue","onUpdate:modelValue"]),s(j,{size:"small",type:"danger",icon:g(ie),onClick:B=>c(b)},null,8,["icon","onClick"]),s(ve,{size:"small",type:"success"},{default:f(()=>[D(o(r.$t("common.instance")),1)]),_:1})]))),128))])):M("",!0)])):M("",!0),n("div",xn,[n("div",Sn,[n("label",Vn,o(r.$t("serverDetail.config.env")),1),s(j,{size:"small",icon:g(fe),onClick:w},{default:f(()=>[D(o(r.$t("serverDetail.config.addEnv")),1)]),_:1},8,["icon"])]),K.value?(i(),h("div",In,[(i(!0),h(X,null,Y(e.templateConfig.env,(A,b)=>(i(),h("div",{key:`template-env-${b}`,class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(Z,{"model-value":b,disabled:"",style:{width:"30%","min-width":"150px"}},null,8,["model-value"]),s(Z,{"model-value":e.templateConfig.env[b],disabled:"",style:{flex:"1"}},null,8,["model-value"]),n("span",Tn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)]))),128))])):M("",!0),t.value.env&&Object.keys(t.value.env).length>0?(i(),h("div",Dn,[(i(!0),h(X,null,Y(t.value.env,(A,b)=>(i(),h("div",{key:_.value[b],class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(Z,{"model-value":b,style:{width:"30%","min-width":"150px"},placeholder:r.$t("addServer.keyPlaceholder"),"onUpdate:modelValue":B=>k(b,B)},null,8,["model-value","placeholder","onUpdate:modelValue"]),s(Z,{modelValue:t.value.env[b],"onUpdate:modelValue":B=>t.value.env[b]=B,style:{flex:"1"},placeholder:r.$t("addServer.valuePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),s(j,{size:"small",type:"danger",icon:g(ie),onClick:B=>P(b)},null,8,["icon","onClick"]),s(ve,{size:"small",type:"success"},{default:f(()=>[D(o(r.$t("common.instance")),1)]),_:1})]))),128))])):M("",!0)]),e.templateConfig.type!=="stdio"?(i(),h("div",En,[n("div",Bn,[n("label",Un,o(r.$t("serverDetail.config.headers")),1),s(j,{size:"small",icon:g(fe),onClick:q},{default:f(()=>[D(o(r.$t("serverDetail.config.addHeader")),1)]),_:1},8,["icon"])]),le.value?(i(),h("div",An,[(i(!0),h(X,null,Y(e.templateConfig.headers,(A,b)=>(i(),h("div",{key:`template-header-${b}`,class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(Z,{"model-value":b,disabled:"",style:{width:"30%","min-width":"150px"}},null,8,["model-value"]),s(Z,{"model-value":e.templateConfig.headers[b],disabled:"",style:{flex:"1"}},null,8,["model-value"]),n("span",Rn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)]))),128))])):M("",!0),t.value.headers&&Object.keys(t.value.headers).length>0?(i(),h("div",zn,[(i(!0),h(X,null,Y(t.value.headers,(A,b)=>(i(),h("div",{key:$.value[b],class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(Z,{"model-value":b,style:{width:"30%","min-width":"150px"},placeholder:r.$t("addServer.keyPlaceholder"),"onUpdate:modelValue":B=>re(b,B)},null,8,["model-value","placeholder","onUpdate:modelValue"]),s(Z,{modelValue:t.value.headers[b],"onUpdate:modelValue":B=>t.value.headers[b]=B,style:{flex:"1"},placeholder:r.$t("addServer.valuePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),s(j,{size:"small",type:"danger",icon:g(ie),onClick:B=>oe(b)},null,8,["icon","onClick"]),s(ve,{size:"small",type:"success"},{default:f(()=>[D(o(r.$t("common.instance")),1)]),_:1})]))),128))])):M("",!0)])):M("",!0),n("div",Nn,[n("label",jn,o(r.$t("serverDetail.config.timeout")),1),n("div",On,[s(Ue,{"model-value":e.templateConfig.timeout?e.templateConfig.timeout/1e3:60,disabled:"",min:1,max:3600},null,8,["model-value"]),n("span",Mn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])]),n("div",Pn,[n("label",Fn,o(r.$t("common.description")),1),n("div",Ln,[s(Z,{"model-value":e.templateConfig.description,type:"textarea",rows:3,disabled:"",class:"flex-1"},null,8,["model-value"]),n("span",Hn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])]),e.templateConfig.type!=="stdio"?(i(),h("div",Jn,[n("div",qn,[n("label",Wn,o(r.$t("serverDetail.config.proxy")),1),t.value.proxy?(i(),H(j,{key:1,size:"small",type:"danger",icon:g(ie),onClick:v},{default:f(()=>[D(o(r.$t("serverDetail.config.removeProxy")),1)]),_:1},8,["icon"])):(i(),H(j,{key:0,size:"small",icon:g(fe),onClick:v},{default:f(()=>[D(o(r.$t("serverDetail.config.addProxy")),1)]),_:1},8,["icon"]))]),e.templateConfig.proxy&&!t.value.proxy?(i(),h("div",Gn,[n("div",Qn,[s(Z,{"model-value":e.templateConfig.proxy.url,disabled:""},null,8,["model-value"]),n("span",Xn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])])):M("",!0),t.value.proxy?(i(),h("div",Zn,[s(Z,{modelValue:t.value.proxy.url,"onUpdate:modelValue":S[1]||(S[1]=A=>t.value.proxy.url=A),placeholder:r.$t("serverDetail.config.proxyPlaceholder")},null,8,["modelValue","placeholder"]),s(ve,{size:"small",type:"success"},{default:f(()=>[D(o(r.$t("common.instance")),1)]),_:1})])):M("",!0)])):M("",!0),n("div",Yn,[n("div",Kn,[n("label",es,o(r.$t("serverDetail.config.tags")),1),s(j,{size:"small",icon:g(fe),onClick:L},{default:f(()=>[D(o(r.$t("common.addTag")),1)]),_:1},8,["icon"])]),e.systemTagDefinitions.length===0?(i(),h("div",ts,[S[5]||(S[5]=n("p",null,"暂无标签定义",-1)),s(j,{size:"small",type:"primary",onClick:$e},{default:f(()=>[...S[4]||(S[4]=[D(" 前往标签设置 ",-1)])]),_:1})])):t.value.tags&&Object.keys(t.value.tags).length>0?(i(),h("div",as,[(i(!0),h(X,null,Y(t.value.tags,(A,b)=>(i(),h("div",{key:C.value[b],class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(Ee,{modelValue:z.value[b],"onUpdate:modelValue":B=>z.value[b]=B,style:{width:"30%","min-width":"150px"},filterable:"",placeholder:"选择标签键",onChange:B=>W(b,B)},{default:f(()=>[(i(!0),h(X,null,Y(e.systemTagDefinitions,B=>(i(),H(De,{key:B.key,label:B.key,value:B.key},{default:f(()=>[n("span",null,o(B.key),1),n("span",ls,o(B.type),1)]),_:2},1032,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","onChange"]),z.value[b]&&ee(z.value[b])==="enum"?(i(),H(Ee,{key:0,modelValue:t.value.tags[b],"onUpdate:modelValue":B=>t.value.tags[b]=B,style:{flex:"1"},filterable:"",placeholder:"选择标签值"},{default:f(()=>[(i(!0),h(X,null,Y(ye(z.value[b]),B=>(i(),H(De,{key:B,label:B,value:B},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue"])):(i(),H(Z,{key:1,modelValue:t.value.tags[b],"onUpdate:modelValue":B=>t.value.tags[b]=B,style:{flex:"1"},placeholder:z.value[b]?Te(z.value[b]):"输入标签值"},null,8,["modelValue","onUpdate:modelValue","placeholder"])),s(j,{size:"small",type:"danger",icon:g(ie),onClick:B=>I(b)},null,8,["icon","onClick"]),s(ve,{size:"small",type:"success"},{default:f(()=>[D(o(r.$t("common.instance")),1)]),_:1})]))),128))])):M("",!0)]),n("div",ns,[n("label",ss,o(r.$t("serverDetail.config.autoStart")),1),n("div",os,[s(Ae,{modelValue:t.value.enabled,"onUpdate:modelValue":S[2]||(S[2]=A=>t.value.enabled=A)},null,8,["modelValue"]),s(ve,{size:"small",type:"success"},{default:f(()=>[D(o(r.$t("common.instance")),1)]),_:1})])]),n("div",rs,[s(j,{type:"primary",onClick:N},{default:f(()=>[D(o(r.$t("serverDetail.config.save")),1)]),_:1})])]),s(ln,{modelValue:U.value,"onUpdate:modelValue":S[3]||(S[3]=A=>U.value=A),"merged-config":se.value},null,8,["modelValue","merged-config"])])}}}),us=Ie(is,[["__scopeId","data-v-d6fd920f"]]);function cs(e){const m=Le(),l=Ht(),d=Pe(),a=O("config"),p=O(null),u=O("config");function x(){const _=l.name;return _==="server-detail-tools"?"tools":_==="server-detail-resources"?"resources":"config"}function U(_){if(!e.value?.name)return;const $=_,C=$==="tools"?"server-detail-tools":$==="resources"?"server-detail-resources":"server-detail-config";m.push({name:C,params:{name:e.value.name}})}function t(){p.value=null}function T(_){p.value=_}function y(){l.query.selection==="template"?p.value=null:l.query.instanceIndex!==void 0?p.value=parseInt(l.query.instanceIndex,10):p.value=null}function E(){l.query.instanceTab==="logs"?u.value="logs":u.value="config"}return Lt(()=>{const _=l.params.name;if(_){const $=d.servers.find(C=>C.name===_);$&&d.selectServer($.id)}a.value=x(),y(),E()}),te(()=>l.params.name,_=>{if(_){const $=d.servers.find(C=>C.name===_);$&&d.selectServer($.id)}}),te(()=>l.name,()=>{a.value=x(),y(),E()}),te(u,_=>{if(!e.value?.name)return;const $={...l.query},C={};for(const[z,F]of Object.entries($))F!=null&&(C[z]=F);_==="config"?delete C.instanceTab:C.instanceTab=_,m.replace({name:l.name,params:l.params,query:C})}),te(()=>d.servers.length,()=>{const _=l.params.name;if(_&&!d.selectedServer){const $=d.servers.find(C=>C.name===_);$&&d.selectServer($.id)}y(),E()}),te(()=>e.value?.id,(_,$)=>{_&&_!==$&&(a.value=x())},{immediate:!0}),te(p,_=>{if(!e.value?.name)return;const $={...l.query},C={};for(const[z,F]of Object.entries($))F!=null&&(C[z]=F);_===null?(C.selection="template",delete C.instanceIndex):(C.instanceIndex=String(_),delete C.selection),m.replace({name:l.name,params:l.params,query:C})}),{activeTopTab:a,selectedInstanceIndex:p,activeInstanceTab:u,getTabFromRoute:x,navigateToTab:U,handleSelectTemplate:t,handleSelectInstance:T}}function ds(e,m){const l=Pe(),{t:d}=me(),a=J(()=>(console.log("[useServerInstances] Computing allServers, store.servers:",l.servers),l.servers.filter(c=>c.name===e.value?.name))),p=J(()=>(console.log("[useServerInstances] Computing serverInstances"),e.value?.rawV11Config?.instances?e.value.rawV11Config.instances.map((c,w)=>{const k=a.value.find(L=>L.instances?.some(I=>I.id===c.id))?.instances?.find(L=>L.id===c.id);let q="offline",oe;const re=e.value?.rawV11Config?.template?.type;return k?.status?(q=k.status,oe=k.pid??void 0):q="offline",{id:c.id,timestamp:c.timestamp??Date.now(),index:c.index??w,displayName:c.displayName,status:q,pid:oe,transportType:re}}):(console.log("[useServerInstances] No instances found in rawV11Config"),[]))),u=J(()=>m.value===null?null:p.value.find(c=>c.index===m.value)||null),x=J(()=>{const c=u.value;if(!c||!e.value?.rawV11Config?.instances)return{args:[],env:{},headers:{},tags:{},enabled:!0};let w;return c.index!==void 0&&(w=e.value.rawV11Config.instances.find(P=>P.index===c.index)),w||(w=e.value.rawV11Config.instances.find(P=>P.id===c.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:c.displayName,enabled:!0}}),U=J(()=>e.value?.rawV11Config?.template?e.value.rawV11Config.template:{type:"stdio",args:[],env:{},headers:{},timeout:6e4,aggregatedTools:[]});function t(){return m.value===null?"offline":p.value.find(w=>w.index===m.value)?.status||"offline"}function T(){return m.value===null?null:p.value.find(w=>w.index===m.value)?.id||null}async function y(c){try{console.log("[startServerInstance] Starting instance:",c),l.updateServerStatus(c,"starting"),await l.startServer(c),V.success(d("action.started"))}catch(w){console.error("[startServerInstance] Error:",w),w instanceof Error?V.error(w.message):V.error(String(w))}}async function E(){const c=T();if(!c){V.warning(d("serverDetail.noInstanceSelected"));return}await y(c)}async function _(c){try{console.log("[stopServerInstance] Stopping instance:",c),await l.stopServer(c),V.success(d("action.stopped"))}catch(w){console.error("[stopServerInstance] Error:",w),w instanceof Error?V.error(w.message):V.error(String(w))}}async function $(){const c=T();if(!c){V.warning(d("serverDetail.noInstanceSelected"));return}await _(c)}async function C(c){try{console.log("[restartServerInstance] Restarting instance:",c),l.updateServerStatus(c,"starting");const w=p.value.find(P=>P.id===c);w&&w.status==="online"&&await l.stopServer(c),await l.startServer(c),V.success(d("action.restarted"))}catch(w){console.error("[restartServerInstance] Error:",w),w instanceof Error?V.error(w.message):V.error(String(w))}}async function z(){const c=T();if(!c){V.warning(d("serverDetail.noInstanceSelected"));return}await C(c)}async function F(){if(e.value?.name)try{await l.startAllServerInstances(e.value.name),V.success(d("action.started"))}catch(c){c instanceof Error?V.error(c.message):V.error(String(c))}}async function K(){if(e.value?.name)try{await l.stopAllServerInstances(e.value.name),V.success(d("action.stopped"))}catch(c){c instanceof Error?V.error(c.message):V.error(String(c))}}async function le(){if(e.value?.name)try{await l.restartAllServerInstances(e.value.name),V.success(d("action.restarted"))}catch(c){c instanceof Error?V.error(c.message):V.error(String(c))}}async function se(){if(e.value?.name)try{const c=`temp-${Date.now()}`,w=e.value.rawV11Config?.instances||[],P=w.length>0?Math.max(...w.map(q=>q.index??0)):-1,k={id:c,timestamp:Date.now(),index:P+1,enabled:!0,args:[],env:{},headers:{},tags:{}};e.value.rawV11Config&&(e.value.rawV11Config.instances||(e.value.rawV11Config.instances=[]),e.value.rawV11Config.instances.push(k)),await l.addServerInstance(e.value.name),V.success(d("action.instanceAdded"))}catch(c){c instanceof Error?V.error(c.message):V.error(String(c))}}async function ce(c,w){if(e.value?.name)try{const k=e.value.rawV11Config?.instances?.find(q=>q.index===c);k&&(k.displayName=w),await l.updateServerInstance(e.value.name,c,{displayName:w}),V.success(d("action.displayNameUpdated"))}catch(P){P instanceof Error?V.error(P.message):V.error(String(P))}}async function N(c){if(e.value?.name)try{await mt.confirm(d("serverDetail.deleteInstanceConfirm"),d("action.delete"),{confirmButtonText:d("action.delete"),cancelButtonText:d("action.cancel"),type:"warning"});const w=e.value.rawV11Config?.instances;if(w){const P=w.findIndex(k=>k.index===c);P!==-1&&w.splice(P,1)}m.value===c&&(m.value=null),await l.removeServerInstance(e.value.name,c),V.success(d("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 v(){if(e.value?.name)try{await l.reassignInstanceIndexes(e.value.name),V.success(d("action.indexesReassigned"))}catch(c){c instanceof Error?V.error(c.message):V.error(String(c))}}async function R(c){if(!(!e.value?.name||m.value===null))try{const w=m.value,k=e.value.rawV11Config?.instances?.find(q=>q.index===w);k&&(c.args!==void 0&&(k.args=c.args),c.env!==void 0&&(k.env=c.env),c.headers!==void 0&&(k.headers=c.headers),c.tags!==void 0&&(k.tags=c.tags),c.proxy!==void 0&&(k.proxy=c.proxy),c.displayName!==void 0&&(k.displayName=c.displayName),c.enabled!==void 0&&(k.enabled=c.enabled)),await l.updateServerInstance(e.value.name,w,c),V.success(d("action.configSaved"))}catch(w){w instanceof Error?V.error(w.message):V.error(String(w))}}return{serverInstances:p,selectedInstance:u,selectedInstanceConfig:x,templateConfigForInstance:U,allServers:a,getSelectedInstanceStatus:t,getSelectedInstanceServerId:T,startSelectedInstance:E,stopSelectedInstance:$,restartSelectedInstance:z,startAllInstances:F,stopAllInstances:K,restartAllInstances:le,handleAddInstance:se,handleUpdateDisplayName:ce,handleDeleteInstance:N,handleReassignIndexes:v,handleUpdateInstanceConfig:R}}function ms(e){const m=Le(),l=O(null),d=O(!1),a=O(!1),p=O(null),u=O(!1),x=O(null),U=O(null);function t(E){e.value&&m.push({name:"resource-detail",params:{name:e.value.name},query:{uri:E.uri,name:E.name,mimeType:E.mimeType}})}function T(E){p.value=E,a.value=!1,d.value=!0}function y(E){const _=x.value;_&&t(_),x.value=null,u.value=!1,U.value=null}return te(x,E=>{E!==null&&(u.value=!0,x.value=null)}),{showInstanceSelectForTool:a,selectedInstanceForTool:p,showCallDialog:d,pendingTool:l,showInstanceSelectForResourceDialog:u,showInstanceSelectForResource:x,selectedInstanceForResource:U,callToolWithInstance:T,viewResourceWithInstance:y}}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"},vs={class:"custom-tabs-label"},ps={class:"flex h-full gap-4 mt-4"},gs={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"},hs={key:0,class:"h-full flex flex-col min-h-0"},bs={class:"flex-1 min-h-0 overflow-hidden"},_s={key:1,class:"h-full flex flex-col min-h-0"},$s={class:"flex-1 min-h-0 overflow-hidden"},Cs={class:"custom-tabs-label"},ws={class:"flex-1 min-h-0 overflow-hidden"},ks={class:"custom-tabs-label"},xs={key:2,class:"flex-1 flex items-center justify-center text-gray-400"},Ss={class:"custom-tabs-label"},Vs={class:"custom-tabs-label"},Is={key:1,class:"h-full flex items-center justify-center text-gray-400"},Ts=ue({__name:"ServerDetail",setup(e){const m=Pe();Dt();const l=Et(),{config:d}=Jt(l),{t:a}=me(),p=Le(),u=J(()=>m.selectedServer),x=J(()=>d.value?.tagDefinitions||[]),{activeTopTab:U,selectedInstanceIndex:t,activeInstanceTab:T,navigateToTab:y,handleSelectTemplate:E,handleSelectInstance:_}=cs(u),{serverInstances:$,selectedInstanceConfig:C,templateConfigForInstance:z,getSelectedInstanceStatus:F,startSelectedInstance:K,stopSelectedInstance:le,restartSelectedInstance:se,startAllInstances:ce,stopAllInstances:N,restartAllInstances:v,handleAddInstance:R,handleUpdateDisplayName:c,handleDeleteInstance:w,handleReassignIndexes:P,handleUpdateInstanceConfig:k}=ds(u,t),{showInstanceSelectForTool:q,selectedInstanceForTool:oe,showCallDialog:re,pendingTool:L,showInstanceSelectForResourceDialog:I,showInstanceSelectForResource:W,callToolWithInstance:ee,viewResourceWithInstance:ye}=ms(u),Te=O(!0),$e=O(!1),r=O(null);te([U,()=>u.value?.name],async([A,b])=>{b&&(A==="tools"?await m.fetchTools(b):A==="resources"&&await m.fetchResources(b))},{immediate:!0});function S(){m.selectedServerId=null,p.push({name:"servers"})}const j=async()=>{if(u.value)try{await mt.confirm(a("serverDetail.deleteConfirm"),a("action.delete"),{confirmButtonText:a("action.delete"),cancelButtonText:a("action.cancel"),type:"warning"}),await m.deleteServer(u.value.id),V.success(a("action.serverDeleted")),m.selectedServerId=null,p.push({name:"servers"})}catch(A){A!=="cancel"&&(A instanceof Error?V.error(A.message||"Failed to delete server"):V.error(String(A)||"Failed to delete server"))}},ae=async(A,b)=>{if(!u.value)return;let B=u.value.config.aggregatedTools;B==null&&(u.value.tools?B=u.value.tools.map(ne=>ne.name):B=[]),b?B.includes(A)||(B=[...B,A]):B=B.filter(ne=>ne!==A),u.value.config.aggregatedTools=B;try{await m.updateServer(u.value.id,{config:u.value.config}),V.success(a("action.configSaved"))}catch(ne){ne instanceof Error?V.error(ne.message):V.error(String(ne))}},ve=async()=>{if(u.value)try{await m.updateServer(u.value.id,{config:u.value.rawV11Config?.template}),V.success(a("action.configSaved"))}catch(A){A instanceof Error?V.error(A.message):V.error(String(A))}},Z=A=>{u.value?.rawV11Config&&(u.value.rawV11Config.template=A)},Ue=()=>{$e.value=!0},De=async A=>{u.value&&(u.value.rawV11Config&&(u.value.rawV11Config.template={...u.value.rawV11Config.template,...A}),await m.updateServer(u.value.id,{config:u.value.rawV11Config?.template}))},Ee=async()=>{u.value&&(await m.clearLogs(u.value.id),V.success(a("action.logsCleared")))},Ae=()=>{if(u.value){const A=u.value.logs.map(b=>`${ut(b.timestamp)} [${b.level.toUpperCase()}] ${b.message}`).join(`
1
+ import{o as Qe,q as ft,x as vt,_ as pt,T as gt,E as Se,y as yt,h as de,z as ht,A as Xe,B as Ze,C as Ye,D as bt,F as Ke,G as _t,H as $t,v as st,r as Me,m as Ct,j as ie,p as fe,I as wt,J as kt,K as xt,L as St,M as Vt,N as It,O as Tt,u as Pe,a as Dt,P as Et,s as et,Q as Bt,t as Ut,n as At}from"./index-DTZ9o3XO.js";import{E as Rt,a as zt}from"./el-tab-pane-BebZh0XF.js";import{n as he,a1 as Ce,x as i,y as H,G as f,H as Re,O as s,C as n,J as G,I as ke,K as tt,A as h,U as we,V as M,$ as o,ag as be,v as Nt,L as ze,a9 as D,M as jt,t as ue,c as J,r as O,Q as Ot,ah as Ne,h as te,j as Mt,F as Pt,ai as Ft,p as je,a as Fe,aj as ot,ak as rt,l as at,d as it,a6 as me,u as g,P as X,af as Y,Z as Lt,a8 as Ht,a7 as Le,al as Jt,k as Be}from"./vue-vendor-CbgVSHIh.js";import{E as Ve,a as He}from"./el-input-CL9HPfdW.js";import{_ as qt,a as ut}from"./ServerStatusTags.vue_vue_type_script_setup_true_lang-BHhwEuGe.js";import{c as Wt,u as Gt,d as Qt,e as Xt,a as Je,b as qe,E as We}from"./el-overlay-B5ZGCmXY.js";import{i as Zt,E as ct,a as dt}from"./el-switch-DnN1s0Wb.js";import{E as Yt,a as Kt}from"./el-radio-group-Cr2ScjjJ.js";import{_ as Ie}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{E as ea,a as ta,b as aa}from"./el-table-column-CV2zp3yI.js";import{E as V}from"./index-Ci5n5dA9.js";import{T as la}from"./ToolCallDialog-BudOyGvS.js";import"./raf-CeCd08aN.js";import"./typescript-Bp3YSIOJ.js";import"./event-BB_Ol6Sd.js";import"./omit-DlmW8Yd6.js";import"./_baseClone-e9R6V78L.js";const Oe="_trap-focus-children",ge=[],lt=e=>{if(ge.length===0)return;const m=ft(e),l=ge[ge.length-1][Oe];if(l.length>0&&m===vt.tab){if(l.length===1){e.preventDefault(),document.activeElement!==l[0]&&l[0].focus();return}const d=e.shiftKey,a=e.target===l[0],p=e.target===l[l.length-1];a&&d&&(e.preventDefault(),l[l.length-1].focus()),p&&!d&&(e.preventDefault(),l[0].focus())}},na={beforeMount(e){e[Oe]=Qe(e),ge.push(e),ge.length<=1&&document.addEventListener("keydown",lt)},updated(e){he(()=>{e[Oe]=Qe(e)})},unmounted(){ge.shift(),ge.length===0&&document.removeEventListener("keydown",lt)}},sa=ue({name:"ElMessageBox",directives:{TrapFocus:na},components:{ElButton:de,ElFocusTrap:yt,ElInput:Ve,ElOverlay:Wt,ElIcon:Se,...gt},inheritAttrs:!1,props:{buttonSize:{type:String,validator:Zt},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:d,ns:a,size:p}=ht("message-box",J(()=>e.buttonSize)),{t:u}=l,{nextZIndex:x}=d,U=O(!1),t=Ot({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:Ne(Xe),cancelButtonLoadingIcon:Ne(Xe),confirmButtonDisabled:!1,editorErrorMessage:"",validateError:!1,zIndex:x()}),T=J(()=>{const I=t.type;return{[a.bm("icon",I)]:I&&Ze[I]}}),y=Ye(),E=Ye(),_=J(()=>{const I=t.type;return t.icon||I&&Ze[I]||""}),$=J(()=>!!t.message),C=O(),z=O(),F=O(),K=O(),le=O(),se=J(()=>t.confirmButtonClass);te(()=>t.inputValue,async I=>{await he(),e.boxType==="prompt"&&I&&q()},{immediate:!0}),te(()=>U.value,I=>{var W,ee;I&&(e.boxType!=="prompt"&&(t.autofocus?F.value=(ee=(W=le.value)==null?void 0:W.$el)!=null?ee:C.value:F.value=C.value),t.zIndex=x()),e.boxType==="prompt"&&(I?he().then(()=>{var ye;K.value&&K.value.$el&&(t.autofocus?F.value=(ye=oe())!=null?ye:C.value:F.value=C.value)}):(t.editorErrorMessage="",t.validateError=!1))});const ce=J(()=>e.draggable),N=J(()=>e.overflow),{isDragging:v}=Gt(C,z,ce,N);Mt(async()=>{await he(),e.closeOnHashChange&&window.addEventListener("hashchange",R)}),Pt(()=>{e.closeOnHashChange&&window.removeEventListener("hashchange",R)});function R(){U.value&&(U.value=!1,he(()=>{t.action&&m("action",t.action)}))}const c=()=>{e.closeOnClickModal&&k(t.distinguishCancelAndClose?"close":"cancel")},w=Xt(c),P=I=>{if(t.inputType!=="textarea")return I.preventDefault(),k("confirm")},k=I=>{var W;e.boxType==="prompt"&&I==="confirm"&&!q()||(t.action=I,t.beforeClose?(W=t.beforeClose)==null||W.call(t,I,t,R):R())},q=()=>{if(e.boxType==="prompt"){const I=t.inputPattern;if(I&&!I.test(t.inputValue||""))return t.editorErrorMessage=t.inputErrorMessage||u("el.messagebox.error"),t.validateError=!0,!1;const W=t.inputValidator;if(je(W)){const ee=W(t.inputValue);if(ee===!1)return t.editorErrorMessage=t.inputErrorMessage||u("el.messagebox.error"),t.validateError=!0,!1;if(Fe(ee))return t.editorErrorMessage=ee,t.validateError=!0,!1}}return t.editorErrorMessage="",t.validateError=!1,!0},oe=()=>{var I,W;const ee=(I=K.value)==null?void 0:I.$refs;return(W=ee?.input)!=null?W:ee?.textarea},re=()=>{k("close")},L=()=>{e.closeOnPressEscape&&re()};return e.lockScroll&&Qt(U,{ns:a}),{...Ft(t),ns:a,overlayEvent:w,visible:U,hasMessage:$,typeClass:T,contentId:y,inputId:E,btnSize:p,iconComponent:_,confirmButtonClasses:se,rootRef:C,focusStartRef:F,headerRef:z,inputRef:K,isDragging:v,confirmRef:le,doClose:R,handleClose:re,onCloseRequested:L,handleWrapperClick:c,handleInputEnter:P,handleAction:k,t:u}}}),oa=["aria-label","aria-describedby"],ra=["aria-label"],ia=["id"];function ua(e,m,l,d,a,p){const u=Ce("el-icon"),x=Ce("el-input"),U=Ce("el-button"),t=Ce("el-focus-trap"),T=Ce("el-overlay");return i(),H(jt,{name:"fade-in-linear",onAfterLeave:m[11]||(m[11]=y=>e.$emit("vanish")),persisted:""},{default:f(()=>[Re(s(T,{"z-index":e.zIndex,"overlay-class":[e.ns.is("message-box"),e.modalClass],mask:e.modal},{default:f(()=>[n("div",{role:"dialog","aria-label":e.title,"aria-modal":"true","aria-describedby":e.showInput?void 0:e.contentId,class:G(`${e.ns.namespace.value}-overlay-message-box`),onClick:m[8]||(m[8]=(...y)=>e.overlayEvent.onClick&&e.overlayEvent.onClick(...y)),onMousedown:m[9]||(m[9]=(...y)=>e.overlayEvent.onMousedown&&e.overlayEvent.onMousedown(...y)),onMouseup:m[10]||(m[10]=(...y)=>e.overlayEvent.onMouseup&&e.overlayEvent.onMouseup(...y))},[s(t,{loop:"",trapped:e.visible,"focus-trap-el":e.rootRef,"focus-start-el":e.focusStartRef,onReleaseRequested:e.onCloseRequested},{default:f(()=>[n("div",{ref:"rootRef",class:G([e.ns.b(),e.customClass,e.ns.is("draggable",e.draggable),e.ns.is("dragging",e.isDragging),{[e.ns.m("center")]:e.center}]),style:tt(e.customStyle),tabindex:"-1",onClick:m[7]||(m[7]=ke(()=>{},["stop"]))},[e.title!==null&&e.title!==void 0?(i(),h("div",{key:0,ref:"headerRef",class:G([e.ns.e("header"),{"show-close":e.showClose}])},[n("div",{class:G(e.ns.e("title"))},[e.iconComponent&&e.center?(i(),H(u,{key:0,class:G([e.ns.e("status"),e.typeClass])},{default:f(()=>[(i(),H(we(e.iconComponent)))]),_:1},8,["class"])):M("v-if",!0),n("span",null,o(e.title),1)],2),e.showClose?(i(),h("button",{key:0,type:"button",class:G(e.ns.e("headerbtn")),"aria-label":e.t("el.messagebox.close"),onClick:m[0]||(m[0]=y=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel")),onKeydown:m[1]||(m[1]=be(ke(y=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel"),["prevent"]),["enter"]))},[s(u,{class:G(e.ns.e("close"))},{default:f(()=>[(i(),H(we(e.closeIcon||"close")))]),_:1},8,["class"])],42,ra)):M("v-if",!0)],2)):M("v-if",!0),n("div",{id:e.contentId,class:G(e.ns.e("content"))},[n("div",{class:G(e.ns.e("container"))},[e.iconComponent&&!e.center&&e.hasMessage?(i(),H(u,{key:0,class:G([e.ns.e("status"),e.typeClass])},{default:f(()=>[(i(),H(we(e.iconComponent)))]),_:1},8,["class"])):M("v-if",!0),e.hasMessage?(i(),h("div",{key:1,class:G(e.ns.e("message"))},[Nt(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(i(),H(we(e.showInput?"label":"p"),{key:1,for:e.showInput?e.inputId:void 0,innerHTML:e.message},null,8,["for","innerHTML"])):(i(),H(we(e.showInput?"label":"p"),{key:0,for:e.showInput?e.inputId:void 0,textContent:o(e.message)},null,8,["for","textContent"]))])],2)):M("v-if",!0)],2),Re(n("div",{class:G(e.ns.e("input"))},[s(x,{id:e.inputId,ref:"inputRef",modelValue:e.inputValue,"onUpdate:modelValue":m[2]||(m[2]=y=>e.inputValue=y),type:e.inputType,placeholder:e.inputPlaceholder,"aria-invalid":e.validateError,class:G({invalid:e.validateError}),onKeydown:be(e.handleInputEnter,["enter"])},null,8,["id","modelValue","type","placeholder","aria-invalid","class","onKeydown"]),n("div",{class:G(e.ns.e("errormsg")),style:tt({visibility:e.editorErrorMessage?"visible":"hidden"})},o(e.editorErrorMessage),7)],2),[[ze,e.showInput]])],10,ia),n("div",{class:G(e.ns.e("btns"))},[e.showCancelButton?(i(),H(U,{key:0,loading:e.cancelButtonLoading,"loading-icon":e.cancelButtonLoadingIcon,class:G([e.cancelButtonClass]),round:e.roundButton,size:e.btnSize,onClick:m[3]||(m[3]=y=>e.handleAction("cancel")),onKeydown:m[4]||(m[4]=be(ke(y=>e.handleAction("cancel"),["prevent"]),["enter"]))},{default:f(()=>[D(o(e.cancelButtonText||e.t("el.messagebox.cancel")),1)]),_:1},8,["loading","loading-icon","class","round","size"])):M("v-if",!0),Re(s(U,{ref:"confirmRef",type:"primary",loading:e.confirmButtonLoading,"loading-icon":e.confirmButtonLoadingIcon,class:G([e.confirmButtonClasses]),round:e.roundButton,disabled:e.confirmButtonDisabled,size:e.btnSize,onClick:m[5]||(m[5]=y=>e.handleAction("confirm")),onKeydown:m[6]||(m[6]=be(ke(y=>e.handleAction("confirm"),["prevent"]),["enter"]))},{default:f(()=>[D(o(e.confirmButtonText||e.t("el.messagebox.confirm")),1)]),_:1},8,["loading","loading-icon","class","round","disabled","size"]),[[ze,e.showConfirmButton]])],2)],6)]),_:3},8,["trapped","focus-trap-el","focus-start-el","onReleaseRequested"])],42,oa)]),_:3},8,["z-index","overlay-class","mask"]),[[ze,e.visible]])]),_:3})}var ca=pt(sa,[["render",ua],["__file","/home/runner/work/element-plus/element-plus/packages/components/message-box/src/index.vue"]]);const xe=new Map,da=e=>{let m=document.body;return e.appendTo&&(Fe(e.appendTo)&&(m=document.querySelector(e.appendTo)),Ke(e.appendTo)&&(m=e.appendTo),Ke(m)||(m=document.body)),m},ma=(e,m,l=null)=>{const d=s(ca,e,je(e.message)||ot(e.message)?{default:je(e.message)?e.message:()=>e.message}:null);return d.appContext=l,rt(d,m),da(e).appendChild(m.firstElementChild),d.component},fa=()=>document.createElement("div"),va=(e,m)=>{const l=fa();e.onVanish=()=>{rt(null,l),xe.delete(a)},e.onAction=p=>{const u=xe.get(a);let x;e.showInput?x={value:a.inputValue,action:p}:x=p,e.callback?e.callback(x,d.proxy):p==="cancel"||p==="close"?e.distinguishCancelAndClose&&p!=="cancel"?u.reject("close"):u.reject("cancel"):u.resolve(x)};const d=ma(e,l,m),a=d.proxy;for(const p in e)at(e,p)&&!at(a.$props,p)&&(p==="closeIcon"&&it(e[p])?a[p]=Ne(e[p]):a[p]=e[p]);return a.visible=!0,a};function _e(e,m=null){if(!bt)return Promise.reject();let l;return Fe(e)||ot(e)?e={message:e}:l=e.callback,new Promise((d,a)=>{const p=va(e,m??_e._context);xe.set(p,{options:e,callback:l,resolve:d,reject:a})})}const pa=["alert","confirm","prompt"],ga={alert:{closeOnPressEscape:!1,closeOnClickModal:!1},confirm:{showCancelButton:!0},prompt:{showCancelButton:!0,showInput:!0}};pa.forEach(e=>{_e[e]=ya(e)});function ya(e){return(m,l,d,a)=>{let p="";return it(l)?(d=l,p=""):_t(l)?p="":p=l,_e(Object.assign({title:p,message:m,type:"",...ga[e]},d,{boxType:e}),a)}}_e.close=()=>{xe.forEach((e,m)=>{m.doClose()}),xe.clear()};_e._context=null;const pe=_e;pe.install=e=>{pe._context=e._context,e.config.globalProperties.$msgbox=pe,e.config.globalProperties.$messageBox=pe,e.config.globalProperties.$alert=pe.alert,e.config.globalProperties.$confirm=pe.confirm,e.config.globalProperties.$prompt=pe.prompt};const mt=pe,ha={class:"flex items-center justify-between shrink-0"},ba={class:"flex items-center gap-4"},_a={class:"flex flex-col items-start gap-2"},$a={class:"flex items-center gap-2"},Ca={class:"text-2xl font-bold text-gray-900 dark:text-white"},wa={class:"flex gap-2"},ka=ue({__name:"ServerDetailHeader",props:{server:{}},emits:["back","delete","restart-all","start-all","stop-all"],setup(e,{emit:m}){const l=e,d=m;me();const a=J(()=>l.server.rawV11Config?.instances?.length?l.server.rawV11Config.instances.length:l.server.instances?.length?l.server.instances.length:1),p=J(()=>a.value),u=J(()=>l.server.instances?.length?l.server.instances.filter(_=>_.status==="online").length:l.server.status==="online"?1:0),x=J(()=>l.server.instances?.length?l.server.instances.filter(_=>_.status!=="online").length:a.value>1?a.value-u.value:l.server.status!=="online"?1:0);function U(){d("back")}function t(){d("delete")}function T(){d("restart-all")}function y(){d("start-all")}function E(){d("stop-all")}return(_,$)=>{const C=de,z=He;return i(),h("div",ha,[n("div",ba,[s(C,{icon:g($t),plain:"",onClick:U,class:"shrink-0"},{default:f(()=>[D(o(_.$t("action.back")),1)]),_:1},8,["icon"]),n("div",_a,[n("div",$a,[n("h2",Ca,o(e.server.name),1),e.server.version?(i(),H(z,{key:0,size:"small",class:"ml-2"},{default:f(()=>[D(o(e.server.version),1)]),_:1})):M("",!0)]),s(qt,{server:e.server},null,8,["server"])])]),n("div",wa,[x.value>0?(i(),H(C,{key:0,type:"success",icon:g(st),onClick:y},{default:f(()=>[D(o(_.$t("action.startAll"))+" ("+o(x.value)+") ",1)]),_:1},8,["icon"])):M("",!0),u.value>0?(i(),H(C,{key:1,type:"primary",icon:g(Me),onClick:T},{default:f(()=>[D(o(_.$t("action.restartAll"))+" ("+o(p.value)+") ",1)]),_:1},8,["icon"])):M("",!0),u.value>0?(i(),H(C,{key:2,type:"warning",icon:g(Ct),onClick:E},{default:f(()=>[D(o(_.$t("action.stopAll"))+" ("+o(u.value)+") ",1)]),_:1},8,["icon"])):M("",!0),s(C,{type:"danger",icon:g(ie),onClick:t},{default:f(()=>[D(o(_.$t("action.deleteServer")),1)]),_:1},8,["icon"])])])}}}),xa={class:"config-template-form h-full flex flex-col min-h-0"},Sa={class:"space-y-4 flex-1 overflow-y-auto min-h-0"},Va={class:"px-4"},Ia={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Ta={key:0,class:"px-4"},Da={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Ea={key:1,class:"px-4"},Ba={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Ua={key:2,class:"px-4"},Aa={class:"flex items-center justify-between mb-2"},Ra={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},za={key:0,class:"space-y-2"},Na={class:"px-4"},ja={class:"flex items-center justify-between mb-2"},Oa={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Ma={key:0,class:"space-y-2"},Pa={key:3,class:"px-4"},Fa={class:"flex items-center justify-between mb-2"},La={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Ha={key:0,class:"space-y-2"},Ja={class:"px-4"},qa={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Wa={class:"px-4"},Ga={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Qa={key:4,class:"px-4"},Xa={class:"flex items-center justify-between mb-2"},Za={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Ya={key:0,class:"flex gap-2 items-start"},Ka={class:"px-4"},el={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},tl={class:"flex gap-2 pt-4 pb-4 border-t border-gray-200 dark:border-gray-700 px-4"},al=ue({__name:"ConfigTemplateForm",props:{config:{}},emits:["update:template","save","edit-json"],setup(e,{emit:m}){const l=e,d=m;me();const a=O({...l.config,template:{...l.config.template,instanceSelectionStrategy:l.config.template.instanceSelectionStrategy||"random"}});let p=0,u=0;const x=O({}),U=O({});te(()=>l.config,v=>{a.value={...v,template:{...v.template,instanceSelectionStrategy:v.template.instanceSelectionStrategy||"random"}},T(),y()},{immediate:!0});const t=J({get:()=>a.value?.template?.timeout?a.value.template.timeout/1e3:60,set:v=>{a.value&&(a.value.template.timeout=v*1e3)}});function T(){a.value?.template?.env&&(x.value={},Object.keys(a.value.template.env).forEach(v=>{x.value[v]=`env-${p++}`}))}function y(){a.value?.template?.headers&&(U.value={},Object.keys(a.value.template.headers).forEach(v=>{U.value[v]=`header-${u++}`}))}function E(){a.value.template.args||(a.value.template.args=[]),a.value.template.args.push(""),d("update:template",{...a.value.template})}function _(v){a.value.template.args?.splice(v,1),d("update:template",{...a.value.template})}function $(){a.value.template.env||(a.value.template.env={});const v=`NEW_VAR_${Object.keys(a.value.template.env).length}`;a.value.template.env[v]="",x.value[v]=`env-${p++}`,d("update:template",{...a.value.template})}function C(v){delete a.value.template.env[v],delete x.value[v],d("update:template",{...a.value.template})}function z(v,R){if(v===R)return;const c=a.value.template.env[v]||"",w=x.value[v]||`env-${p++}`;delete a.value.template.env[v],delete x.value[v],a.value.template.env[R]=c,x.value[R]=w,d("update:template",{...a.value.template})}function F(){a.value.template.headers||(a.value.template.headers={});const v=`NEW_HEADER_${Object.keys(a.value.template.headers).length}`;a.value.template.headers[v]="",U.value[v]=`header-${u++}`,d("update:template",{...a.value.template})}function K(v){delete a.value.template.headers[v],delete U.value[v],d("update:template",{...a.value.template})}function le(v,R){if(v===R)return;const c=a.value.template.headers[v]||"",w=U.value[v]||`header-${u++}`;delete a.value.template.headers[v],delete U.value[v],a.value.template.headers[R]=c,U.value[R]=w,d("update:template",{...a.value.template})}function se(){a.value.template.proxy?a.value.template.proxy=void 0:a.value.template.proxy={url:""},d("update:template",{...a.value.template})}function ce(){const v={command:a.value.template.command,args:a.value.template.args,env:a.value.template.env,headers:a.value.template.headers,type:a.value.template.type,timeout:a.value.template.timeout,url:a.value.template.url,aggregatedTools:a.value.template.aggregatedTools,description:a.value.template.description,proxy:a.value.template.proxy,instanceSelectionStrategy:a.value.template.instanceSelectionStrategy};d("update:template",v),d("save")}function N(){d("edit-json")}return(v,R)=>{const c=Kt,w=Yt,P=Ve,k=de,q=ct,oe=qe,re=Je;return i(),h("div",xa,[n("div",Sa,[n("div",Va,[n("label",Ia,o(v.$t("serverDetail.config.transport")),1),s(w,{modelValue:a.value.template.type,"onUpdate:modelValue":R[0]||(R[0]=L=>a.value.template.type=L),class:"flex gap-4"},{default:f(()=>[s(c,{value:"stdio"},{default:f(()=>[D(o(v.$t("serverDetail.config.transportStdio")),1)]),_:1}),s(c,{value:"sse"},{default:f(()=>[D(o(v.$t("serverDetail.config.transportSse")),1)]),_:1}),s(c,{value:"streamable-http"},{default:f(()=>[D(o(v.$t("serverDetail.config.transportHttp")),1)]),_:1})]),_:1},8,["modelValue"])]),a.value.template.type==="stdio"?(i(),h("div",Ta,[n("label",Da,o(v.$t("serverDetail.config.executable")),1),s(P,{modelValue:a.value.template.command,"onUpdate:modelValue":R[1]||(R[1]=L=>a.value.template.command=L)},null,8,["modelValue"])])):(i(),h("div",Ea,[n("label",Ba,o(v.$t("serverDetail.config.url")),1),s(P,{modelValue:a.value.template.url,"onUpdate:modelValue":R[2]||(R[2]=L=>a.value.template.url=L)},null,8,["modelValue"])])),a.value.template.type==="stdio"?(i(),h("div",Ua,[n("div",Aa,[n("label",Ra,o(v.$t("serverDetail.config.args")),1),s(k,{size:"small",icon:g(fe),onClick:E},{default:f(()=>[D(o(v.$t("serverDetail.config.addArg")),1)]),_:1},8,["icon"])]),a.value.template.args&&a.value.template.args.length>0?(i(),h("div",za,[(i(!0),h(X,null,Y(a.value.template.args,(L,I)=>(i(),h("div",{key:I,class:"flex gap-2 px-4"},[s(P,{modelValue:a.value.template.args[I],"onUpdate:modelValue":W=>a.value.template.args[I]=W,class:"flex-1"},null,8,["modelValue","onUpdate:modelValue"]),s(k,{size:"small",type:"danger",icon:g(ie),onClick:W=>_(I)},null,8,["icon","onClick"])]))),128))])):M("",!0)])):M("",!0),n("div",Na,[n("div",ja,[n("label",Oa,o(v.$t("serverDetail.config.env")),1),s(k,{size:"small",icon:g(fe),onClick:$},{default:f(()=>[D(o(v.$t("serverDetail.config.addEnv")),1)]),_:1},8,["icon"])]),a.value.template.env&&Object.keys(a.value.template.env).length>0?(i(),h("div",Ma,[(i(!0),h(X,null,Y(a.value.template.env,(L,I)=>(i(),h("div",{key:x.value[I],class:"flex gap-2 items-start px-4",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(P,{"model-value":I,style:{width:"30%","min-width":"150px"},placeholder:v.$t("addServer.keyPlaceholder"),"onUpdate:modelValue":W=>z(I,W)},null,8,["model-value","placeholder","onUpdate:modelValue"]),s(P,{modelValue:a.value.template.env[I],"onUpdate:modelValue":W=>a.value.template.env[I]=W,style:{flex:"1"},placeholder:v.$t("addServer.valuePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),s(k,{size:"small",type:"danger",icon:g(ie),onClick:W=>C(I)},null,8,["icon","onClick"])]))),128))])):M("",!0)]),a.value.template.type!=="stdio"?(i(),h("div",Pa,[n("div",Fa,[n("label",La,o(v.$t("serverDetail.config.headers")),1),s(k,{size:"small",icon:g(fe),onClick:F},{default:f(()=>[D(o(v.$t("serverDetail.config.addHeader")),1)]),_:1},8,["icon"])]),a.value.template.headers&&Object.keys(a.value.template.headers).length>0?(i(),h("div",Ha,[(i(!0),h(X,null,Y(a.value.template.headers,(L,I)=>(i(),h("div",{key:U.value[I],class:"flex gap-2 items-start px-4",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(P,{"model-value":I,style:{width:"30%","min-width":"150px"},placeholder:v.$t("addServer.keyPlaceholder"),"onUpdate:modelValue":W=>le(I,W)},null,8,["model-value","placeholder","onUpdate:modelValue"]),s(P,{modelValue:a.value.template.headers[I],"onUpdate:modelValue":W=>a.value.template.headers[I]=W,style:{flex:"1"},placeholder:v.$t("addServer.valuePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),s(k,{size:"small",type:"danger",icon:g(ie),onClick:W=>K(I)},null,8,["icon","onClick"])]))),128))])):M("",!0)])):M("",!0),n("div",Ja,[n("label",qa,o(v.$t("serverDetail.config.timeout")),1),s(q,{modelValue:t.value,"onUpdate:modelValue":R[3]||(R[3]=L=>t.value=L),min:1,max:3600},null,8,["modelValue"])]),n("div",Wa,[n("label",Ga,o(v.$t("common.description")),1),s(P,{modelValue:a.value.template.description,"onUpdate:modelValue":R[4]||(R[4]=L=>a.value.template.description=L),type:"textarea",rows:3,placeholder:v.$t("serverDetail.config.descriptionPlaceholder")},null,8,["modelValue","placeholder"])]),a.value.template.type!=="stdio"?(i(),h("div",Qa,[n("div",Xa,[n("label",Za,o(v.$t("serverDetail.config.proxy")),1),a.value.template.proxy?(i(),H(k,{key:1,size:"small",type:"danger",icon:g(ie),onClick:se},{default:f(()=>[D(o(v.$t("serverDetail.config.removeProxy")),1)]),_:1},8,["icon"])):(i(),H(k,{key:0,size:"small",icon:g(fe),onClick:se},{default:f(()=>[D(o(v.$t("serverDetail.config.addProxy")),1)]),_:1},8,["icon"]))]),a.value.template.proxy?(i(),h("div",Ya,[s(P,{modelValue:a.value.template.proxy.url,"onUpdate:modelValue":R[5]||(R[5]=L=>a.value.template.proxy.url=L),placeholder:v.$t("serverDetail.config.proxyPlaceholder")},null,8,["modelValue","placeholder"])])):M("",!0)])):M("",!0),n("div",Ka,[n("label",el,o(v.$t("serverDetail.config.instanceSelectionStrategy")),1),s(re,{modelValue:a.value.template.instanceSelectionStrategy,"onUpdate:modelValue":R[6]||(R[6]=L=>a.value.template.instanceSelectionStrategy=L),placeholder:v.$t("serverDetail.config.strategyRandom")+"(默认)"},{default:f(()=>[s(oe,{value:"random",label:v.$t("serverDetail.config.strategyRandom")},null,8,["label"]),s(oe,{value:"round-robin",label:v.$t("serverDetail.config.strategyRoundRobin")},null,8,["label"]),s(oe,{value:"tag-match-unique",label:v.$t("serverDetail.config.strategyTagMatchUnique")},null,8,["label"])]),_:1},8,["modelValue","placeholder"])]),n("div",tl,[s(k,{type:"primary",onClick:ce},{default:f(()=>[D(o(v.$t("serverDetail.config.save")),1)]),_:1}),s(k,{onClick:N},{default:f(()=>[D(o(v.$t("serverDetail.config.editByJson")),1)]),_:1})])])])}}}),ll=Ie(al,[["__scopeId","data-v-d857c695"]]),nl={class:"h-full flex flex-col"},sl={class:"flex items-center justify-between gap-2 mb-2 shrink-0"},ol={class:"flex items-center gap-2"},rl=ue({__name:"LogViewer",props:{logs:{},autoScroll:{type:Boolean,default:!0}},emits:["update:autoScroll","clear","copy"],setup(e,{emit:m}){const l=e,d=m;me();const a=O(null),p=O(l.autoScroll);te(()=>l.autoScroll,T=>{p.value=T}),te(()=>l.logs.length,()=>{p.value&&he(()=>{a.value&&(a.value.scrollTop=a.value.scrollHeight)})});function u(T){const y=!!T;p.value=y,d("update:autoScroll",y)}function x(){d("clear")}function U(){d("copy")}function t(T){switch(T){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(T,y)=>{const E=ea,_=de;return i(),h("div",nl,[n("div",sl,[n("div",ol,[s(E,{modelValue:p.value,"onUpdate:modelValue":[y[0]||(y[0]=$=>p.value=$),u],label:T.$t("serverDetail.logs.autoScroll"),class:"text-gray-600 dark:text-gray-400"},null,8,["modelValue","label"]),s(_,{size:"small",icon:g(ie),plain:"",onClick:x},{default:f(()=>[D(o(T.$t("serverDetail.logs.clear")),1)]),_:1},8,["icon"]),s(_,{size:"small",icon:g(wt),plain:"",onClick:U},{default:f(()=>[D(o(T.$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:a},[(i(!0),h(X,null,Y(e.logs,($,C)=>(i(),h("div",{key:C,class:"mb-1 break-words"},[n("span",{class:G(t($.level))},o(g(ut)($.timestamp))+" ["+o($.level.toUpperCase())+"] "+o($.message),3)]))),128))],512)])}}}),il={class:"h-full flex flex-col"},ul={class:"flex h-full gap-4"},cl={class:"w-1/3 border-r border-gray-200 dark:border-gray-700 pr-4 overflow-y-auto"},dl={class:"font-bold mb-4"},ml={key:0,class:"space-y-2"},fl=["onClick"],vl={class:"min-w-0 flex-1 mr-2"},pl={class:"font-medium truncate"},gl={key:1,class:"text-gray-500 text-sm italic"},yl={class:"flex-1 min-h-0 overflow-y-auto px-4 flex flex-col"},hl={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"},kl={key:1,class:"flex-1 flex items-center justify-center text-gray-400"},xl=ue({__name:"ToolsTab",props:{tools:{},allowedTools:{default:null}},emits:["select-tool","update-tool-visibility","call-tool"],setup(e,{emit:m}){const l=e,d=m;me();const a=O(null);function p(t){a.value=t,d("select-tool",t)}function u(t){return l.allowedTools===void 0||l.allowedTools===null||l.allowedTools.length===0?!1:Array.isArray(l.allowedTools)?l.allowedTools.includes(t):!1}function x(t,T){d("update-tool-visibility",t,T)}function U(){a.value&&d("call-tool",a.value)}return(t,T)=>{const y=dt,E=de;return i(),h("div",il,[n("div",ul,[n("div",cl,[n("h3",dl,o(t.$t("serverDetail.tools.available")),1),e.tools&&e.tools.length>0?(i(),h("div",ml,[(i(!0),h(X,null,Y(e.tools,_=>(i(),h("div",{key:_.name,class:G(["p-3 rounded-lg cursor-pointer transition-colors flex items-center justify-between group",a.value?.name===_.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:$=>p(_)},[n("div",vl,[n("div",pl,o(_.name),1)]),s(y,{"model-value":u(_.name),"onUpdate:modelValue":$=>x(_.name,!!$),class:"mr-4","active-text":t.$t("serverDetail.tools.aggregated")},null,8,["model-value","onUpdate:modelValue","active-text"])],10,fl))),128))])):(i(),h("div",gl,o(t.$t("serverDetail.tools.none")),1))]),n("div",yl,[n("div",hl,[n("h3",bl,o(t.$t("serverDetail.tools.details"))+": "+o(a.value?.name||""),1),a.value?(i(),H(E,{key:0,type:"primary",size:"small",onClick:U},{default:f(()=>[D(o(t.$t("serverDetail.tools.call")),1)]),_:1})):M("",!0)]),a.value?(i(),h("div",_l,[n("p",$l,o(a.value.description),1),n("h4",Cl,o(t.$t("serverDetail.tools.schema")),1),n("pre",wl,o(JSON.stringify(a.value.inputSchema,null,2)),1)])):(i(),h("div",kl,o(t.$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=ue({__name:"ResourcesTab",props:{resources:{}},emits:["view-resource"],setup(e,{emit:m}){const l=m;me();function d(a){l("view-resource",a)}return(a,p)=>{const u=Se,x=aa,U=de,t=ta;return i(),h("div",Sl,[s(t,{data:e.resources||[],style:{width:"100%"},class:"custom-table"},{default:f(()=>[s(x,{prop:"name",label:a.$t("common.name"),width:"200"},{default:f(({row:T})=>[n("div",Vl,[s(u,null,{default:f(()=>[s(g(kt))]),_:1}),n("span",Il,o(T.name),1)])]),_:1},8,["label"]),s(x,{prop:"uri",label:a.$t("common.uri"),"min-width":"300"},null,8,["label"]),s(x,{prop:"mimeType",label:a.$t("common.mimeType"),width:"150"},null,8,["label"]),s(x,{label:"",width:"100",align:"right"},{default:f(({row:T})=>[s(U,{size:"small",plain:"",onClick:y=>d(T)},{default:f(()=>[D(o(a.$t("action.view")),1)]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]),!e.resources||e.resources.length===0?(i(),h("div",Tl,o(a.$t("serverDetail.resources.none")),1)):M("",!0)])}}}),El={class:"dialog-footer"},Bl=ue({__name:"JsonConfigEditor",props:{modelValue:{type:Boolean},config:{},serverName:{}},emits:["update:modelValue","save"],setup(e,{emit:m}){const l=e,d=m,{t:a}=me(),p=O(""),u=J({get:()=>l.modelValue,set:y=>d("update:modelValue",y)}),x=J(()=>a("serverDetail.editJsonTitle")||"Edit JSON Config");te(()=>l.modelValue,y=>{y&&U()});function U(){const y={env:l.config.env||{},enabled:l.config.enabled,description:l.config.description};l.config.headers&&Object.keys(l.config.headers).length>0&&(y.headers=l.config.headers),l.config.timeout&&(y.timeout=l.config.timeout),l.config.type==="stdio"?(y.command=l.config.command,y.args=l.config.args||[]):y.url=l.config.url;const E={mcpServers:{[l.serverName]:y}};p.value=JSON.stringify(E,null,2)}function t(){u.value=!1}function T(){try{const y=JSON.parse(p.value);if(!y.mcpServers)throw new Error("Missing mcpServers key");const E=Object.keys(y.mcpServers);if(E.length===0)throw new Error("No server config found");const _=E[0]||"",$=y.mcpServers[_],C={...l.config};$.command?(C.type="stdio",C.command=$.command,C.args=$.args||[],delete C.url):$.url&&(C.type=$.type==="sse"?"sse":"streamable-http",C.url=$.url,delete C.command,delete C.args),$.env&&(C.env=$.env),$.headers&&(C.headers=$.headers),$.timeout!==void 0&&(C.timeout=$.timeout),$.enabled!==void 0&&(C.enabled=$.enabled),$.description!==void 0&&(C.description=$.description),d("save",C),u.value=!1,V.success(a("action.configSaved"))}catch(y){y instanceof Error?V.error("Invalid JSON: "+y.message):V.error("Invalid JSON: "+String(y))}}return(y,E)=>{const _=Ve,$=de,C=We;return i(),H(C,{modelValue:u.value,"onUpdate:modelValue":E[1]||(E[1]=z=>u.value=z),title:x.value,width:"600px"},{footer:f(()=>[n("span",El,[s($,{onClick:t},{default:f(()=>[D(o(y.$t("action.cancel")),1)]),_:1}),s($,{type:"primary",onClick:T},{default:f(()=>[D(o(y.$t("action.save")),1)]),_:1})])]),default:f(()=>[s(_,{modelValue:p.value,"onUpdate:modelValue":E[0]||(E[0]=z=>p.value=z),type:"textarea",rows:15,"font-family":"monospace"},null,8,["modelValue"])]),_:1},8,["modelValue","title"])}}}),Ul={class:"dialog-footer"},nt=ue({__name:"InstanceSelectDialog",props:{modelValue:{type:Boolean},instances:{},title:{default:""}},emits:["update:modelValue","confirm"],setup(e,{emit:m}){const l=e,d=m,{t:a}=me(),p=O(null),u=J({get:()=>l.modelValue,set:y=>d("update:modelValue",y)}),x=J(()=>l.title||a("serverDetail.selectInstanceTitle")||"Select Instance");function U(y){return`#${y.index??0} [${y.displayName||a("serverDetail.instances.unnamed")}]`}function t(){u.value=!1,p.value=null}function T(){p.value!==null&&(d("confirm",p.value),u.value=!1,p.value=null)}return(y,E)=>{const _=qe,$=Je,C=de,z=We;return i(),H(z,{modelValue:u.value,"onUpdate:modelValue":E[1]||(E[1]=F=>u.value=F),title:x.value,width:"500px"},{footer:f(()=>[n("span",Ul,[s(C,{onClick:t},{default:f(()=>[D(o(y.$t("action.cancel")),1)]),_:1}),s(C,{type:"primary",onClick:T,disabled:p.value===null},{default:f(()=>[D(o(y.$t("action.confirm")),1)]),_:1},8,["disabled"])])]),default:f(()=>[s($,{modelValue:p.value,"onUpdate:modelValue":E[0]||(E[0]=F=>p.value=F),placeholder:y.$t("serverDetail.selectInstancePlaceholder"),class:"w-full"},{default:f(()=>[(i(!0),h(X,null,Y(e.instances,F=>(i(),H(_,{key:F.index??0,label:U(F),value:F.index??0},null,8,["label","value"]))),128))]),_:1},8,["modelValue","placeholder"])]),_:1},8,["modelValue","title"])}}}),Al={class:"instance-card-list"},Rl={class:"mb-4 flex justify-between items-center"},zl={class:"text-lg font-semibold text-gray-900 dark:text-white"},Nl={key:0,class:"mb-4"},jl={class:"flex items-center justify-between"},Ol={class:"flex items-center gap-3"},Ml={class:"flex items-center gap-2"},Pl={class:"font-mono text-sm text-purple-600 dark:text-purple-400"},Fl={class:"flex flex-col gap-3 mb-4"},Ll=["onClick"],Hl={class:"flex items-center justify-between"},Jl={class:"flex items-center gap-3"},ql={class:"flex items-center gap-2"},Wl={class:"font-mono text-sm text-gray-500 dark:text-gray-400"},Gl={class:"font-medium text-gray-900 dark:text-white"},Ql={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=ue({__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,d=m,a=O(!1),p=O(null),u=O(""),x=O(),U=J(()=>[...l.instances].sort((N,v)=>(N.index??0)-(v.index??0)));function t(N){return N.status||"offline"}function T(){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 y(N){return l.selectedIndex===N?"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(N){switch(N){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 _(N){switch(N){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 $(){d("select-template")}function C(N){d("select",N)}function z(){d("add")}function F(N){a.value=!0,p.value=N.index??null,u.value=N.displayName||"",setTimeout(()=>{x.value?.focus()},100)}function K(N){const v=u.value.trim();d("update-display-name",N,v),le()}function le(){a.value=!1,p.value=null,u.value=""}function se(N){d("delete",N)}function ce(){d("reassign-indexes")}return(N,v)=>{const R=de,c=He,w=Ve,P=xt;return i(),h("div",Al,[n("div",Rl,[n("h3",zl,o(N.$t("serverDetail.instances.title")),1),s(R,{size:"small",icon:g(Me),plain:"",onClick:ce},{default:f(()=>[D(o(N.$t("serverDetail.instances.reassignIndexes")),1)]),_:1},8,["icon"])]),e.showTemplateNode?(i(),h("div",Nl,[n("div",{class:G(["template-card p-4 rounded-lg border transition-all duration-200 cursor-pointer",T()]),onClick:$},[n("div",jl,[n("div",Ol,[v[2]||(v[2]=n("div",{class:"w-3 h-3 rounded-full bg-purple-500"},null,-1)),n("div",Ml,[n("span",Pl,o(N.$t("common.template")),1),s(c,{size:"small",type:"info"},{default:f(()=>[D(o(N.$t("serverDetail.instances.templateTag")),1)]),_:1})])])])],2)])):M("",!0),n("div",Fl,[(i(!0),h(X,null,Y(U.value,k=>(i(),h("div",{key:k.index??0,class:G(["instance-card p-4 rounded-lg border transition-all duration-200 cursor-pointer",y(k.index??0)]),onClick:q=>C(k.index??0)},[n("div",Hl,[n("div",Jl,[n("div",{class:G(["w-3 h-3 rounded-full",E(t(k))])},null,2),n("div",ql,[!a.value||p.value!==k.index?(i(),h(X,{key:0},[n("span",Wl," #"+o(k.index??0),1),n("span",Gl," ["+o(k.displayName||N.$t("serverDetail.instances.unnamed"))+"] ",1)],64)):(i(),H(w,{key:1,modelValue:u.value,"onUpdate:modelValue":v[0]||(v[0]=q=>u.value=q),size:"small",onKeyup:[be(q=>K(k.index??0),["enter"]),be(le,["escape"])],ref_for:!0,ref_key:"displayNameInputRef",ref:x,onBlur:q=>K(k.index??0),class:"max-w-xs"},null,8,["modelValue","onKeyup","onBlur"]))]),k.pid&&t(k)==="online"?M("",!0):(i(),h("div",{key:0,class:G(["px-2 py-0.5 rounded-full text-xs",_(t(k))])},o(N.$t(`serverDetail.status.${t(k)}`)),3)),k.transportType==="stdio"&&k.pid&&t(k)==="online"?(i(),h("div",Ql," PID: "+o(k.pid),1)):M("",!0)]),n("div",{class:"flex items-center gap-2",onClick:v[1]||(v[1]=ke(()=>{},["stop"]))},[!a.value||p.value!==k.index?(i(),h(X,{key:0},[s(P,{content:N.$t("serverDetail.instances.editDisplayName")||"Edit display name",placement:"top"},{default:f(()=>[s(R,{icon:g(St),circle:"",plain:"",size:"small",onClick:q=>F(k)},null,8,["icon","onClick"])]),_:2},1032,["content"]),s(R,{icon:g(ie),circle:"",plain:"",size:"small",type:"danger",onClick:q=>se(k.index??0)},null,8,["icon","onClick"])],64)):M("",!0)])])],10,Ll))),128))]),s(R,{icon:g(fe),class:"w-full",onClick:z},{default:f(()=>[D(o(N.$t("serverDetail.instances.add")),1)]),_:1},8,["icon"])])}}}),Zl=Ie(Xl,[["__scopeId","data-v-24e76b86"]]),Yl={class:"preview-content"},Kl={class:"action-bar flex justify-end mb-4"},en={class:"config-display"},tn={class:"config-json"},an=ue({__name:"MergedConfigPreviewDialog",props:{modelValue:{type:Boolean},mergedConfig:{}},emits:["update:modelValue"],setup(e){const m=e,{t:l}=me(),d=J(()=>JSON.stringify(m.mergedConfig,null,2));async function a(){try{await navigator.clipboard.writeText(d.value),V.success(l("action.copiedToClipboard"))}catch{V.error(l("action.copyFailed"))}}return(p,u)=>{const x=Se,U=de,t=We;return i(),H(t,{"model-value":e.modelValue,"onUpdate:modelValue":u[0]||(u[0]=T=>p.$emit("update:modelValue",T)),title:p.$t("serverDetail.instanceConfig.mergedPreview"),width:"70%","destroy-on-close":"",class:"merged-config-dialog"},{default:f(()=>[n("div",Yl,[n("div",Kl,[s(U,{type:"primary",onClick:a},{default:f(()=>[s(x,null,{default:f(()=>[s(g(Vt))]),_:1}),D(" "+o(p.$t("common.copy")),1)]),_:1})]),n("div",en,[n("pre",tn,o(d.value),1)])])]),_:1},8,["model-value","title"])}}}),ln=Ie(an,[["__scopeId","data-v-84fcda8e"]]),nn={class:"instance-config h-full flex flex-col min-h-0"},sn={class:"header-bar flex justify-between items-center mb-4 px-4 flex-shrink-0"},on={class:"flex items-center gap-4"},rn={class:"text-lg font-semibold text-gray-900 dark:text-white"},un={class:"flex gap-2"},cn={class:"config-form space-y-4 flex-1 overflow-y-auto min-h-0 pb-4"},dn={class:"px-4"},mn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},fn={class:"flex items-center gap-2"},vn={class:"text-xs text-gray-500 dark:text-gray-400"},pn={class:"px-4"},gn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},yn={class:"flex gap-2 items-start"},hn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},bn={key:0,class:"px-4"},_n={class:"flex items-center justify-between mb-2"},$n={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Cn={key:0,class:"space-y-2 mb-3"},wn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},kn={key:1,class:"space-y-2"},xn={class:"px-4"},Sn={class:"flex items-center justify-between mb-2"},Vn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},In={key:0,class:"space-y-2 mb-3"},Tn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},Dn={key:1,class:"space-y-2"},En={key:1,class:"px-4"},Bn={class:"flex items-center justify-between mb-2"},Un={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},An={key:0,class:"space-y-2 mb-3"},Rn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},zn={key:1,class:"space-y-2"},Nn={class:"px-4"},jn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},On={class:"flex gap-2 items-center"},Mn={class:"text-xs text-gray-500 dark:text-gray-400"},Pn={class:"px-4"},Fn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},Ln={class:"flex gap-2 items-start"},Hn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},Jn={key:2,class:"px-4"},qn={class:"flex items-center justify-between mb-2"},Wn={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},Gn={key:0,class:"space-y-2 mb-3"},Qn={class:"flex gap-2 items-start"},Xn={class:"text-xs text-gray-500 dark:text-gray-400 pt-2 whitespace-nowrap"},Zn={key:1,class:"flex gap-2 items-start"},Yn={class:"px-4"},Kn={class:"flex items-center justify-between mb-2"},es={class:"block text-sm font-bold text-gray-700 dark:text-gray-300"},ts={key:0,class:"text-center py-4 text-gray-500"},as={key:1,class:"space-y-2"},ls={class:"text-xs text-gray-500 ml-2"},ns={class:"px-4"},ss={class:"block text-sm font-bold text-gray-700 dark:text-gray-300 mb-2"},os={class:"flex gap-2 items-center"},rs={class:"flex gap-2 pt-4 pb-4 border-t border-gray-200 dark:border-gray-700 px-4"},is=ue({__name:"InstanceConfig",props:{templateConfig:{},instanceConfig:{},serverName:{},instanceStatus:{default:"offline"},systemTagDefinitions:{}},emits:["update","start-instance","stop-instance","restart-instance"],setup(e,{emit:m}){const l=e,d=m,{t:a}=me();function p(){d("start-instance")}function u(){d("stop-instance")}function x(){d("restart-instance")}const U=O(!1),t=O({enabled:!0,...l.instanceConfig});let T=0,y=0,E=0;const _=O({}),$=O({}),C=O({}),z=O({}),F=J(()=>l.templateConfig.args&&l.templateConfig.args.length>0),K=J(()=>l.templateConfig.env&&Object.keys(l.templateConfig.env).length>0),le=J(()=>l.templateConfig.headers&&Object.keys(l.templateConfig.headers).length>0);te(()=>l.instanceConfig,r=>{t.value={...r},_.value={},r.env&&Object.keys(r.env).forEach(S=>{_.value[S]=`env-${T++}`}),$.value={},r.headers&&Object.keys(r.headers).forEach(S=>{$.value[S]=`header-${y++}`}),C.value={},z.value={},r.tags&&Object.keys(r.tags).forEach(S=>{C.value[S]=`tag-${E++}`,l.systemTagDefinitions.some(ae=>ae.key===S)?z.value[S]=S:(z.value[S]=S,console.warn(`未定义的标签键: ${S}`))})},{immediate:!0});const se=J(()=>{const r={...l.templateConfig};return t.value.args&&t.value.args.length>0&&(r.args=[...l.templateConfig.args||[],...t.value.args]),t.value.env&&Object.keys(t.value.env).length>0&&(r.env={...l.templateConfig.env||{},...t.value.env}),t.value.headers&&Object.keys(t.value.headers).length>0&&(r.headers={...l.templateConfig.headers||{},...t.value.headers}),t.value.proxy&&(r.proxy=t.value.proxy),t.value.tags&&Object.keys(t.value.tags).length>0&&(r.tags=t.value.tags),t.value.displayName&&(r.displayName=t.value.displayName),t.value.enabled!==void 0&&(r.enabled=t.value.enabled),r});function ce(r){switch(r){case"stdio":return a("serverDetail.config.transportStdio");case"sse":return a("serverDetail.config.transportSse");case"streamable-http":return a("serverDetail.config.transportHttp");default:return r}}function N(){d("update",t.value)}function v(){t.value.proxy?t.value.proxy=void 0:t.value.proxy={url:""}}function R(){t.value.args||(t.value.args=[]),t.value.args.push("")}function c(r){t.value.args&&t.value.args.splice(r,1)}function w(){t.value.env||(t.value.env={});const r=`NEW_ENV_${Date.now()}`;t.value.env[r]="",_.value[r]=`env-${T++}`}function P(r){t.value.env&&(delete t.value.env[r],delete _.value[r])}function k(r,S){if(!t.value.env||!r||!S||r===S)return;const j=t.value.env[r]??"",ae=_.value[r]||`env-${T++}`;delete t.value.env[r],delete _.value[r],t.value.env[S]=j,_.value[S]=ae}function q(){t.value.headers||(t.value.headers={});const r=`X-New-Header-${Date.now()}`;t.value.headers[r]="",$.value[r]=`header-${y++}`}function oe(r){t.value.headers&&(delete t.value.headers[r],delete $.value[r])}function re(r,S){if(!t.value.headers||!r||!S||r===S)return;const j=t.value.headers[r]??"",ae=$.value[r]||`header-${y++}`;delete t.value.headers[r],delete $.value[r],t.value.headers[S]=j,$.value[S]=ae}function L(){if(t.value.tags||(t.value.tags={}),l.systemTagDefinitions.length>0){const r=l.systemTagDefinitions[0];if(r){const S=r.key;let j=S,ae=1;for(;t.value.tags&&Object.prototype.hasOwnProperty.call(t.value.tags,j);)j=`${S}-${ae}`,ae++;t.value.tags[j]="",C.value[j]=`tag-${E++}`,z.value[j]=S}}else{V.warning("请先在设置中定义标签");const r=`new-tag-${Date.now()}`;t.value.tags[r]="",C.value[r]=`tag-${E++}`,z.value[r]=r}}function I(r){t.value.tags&&(delete t.value.tags[r],delete C.value[r],delete z.value[r])}function W(r,S){if(!t.value.tags||!S)return;const j=t.value.tags[r]??"",ae=C.value[r]||`tag-${E++}`;delete t.value.tags[r],delete C.value[r],delete z.value[r],t.value.tags[S]=j,C.value[S]=ae,z.value[S]=S}function ee(r){const S=l.systemTagDefinitions.find(j=>j.key===r);return S?S.type:null}function ye(r){const S=l.systemTagDefinitions.find(j=>j.key===r);return S?.type==="enum"?S.values||[]:[]}function Te(r){return l.systemTagDefinitions.find(j=>j.key===r)?.description||"输入标签值"}function $e(){window.location.hash="#/settings/tags"}return(r,S)=>{const j=de,ae=Se,ve=He,Z=Ve,Ue=ct,De=qe,Ee=Je,Ae=dt;return i(),h("div",nn,[n("div",sn,[n("div",on,[n("h3",rn,o(r.$t("serverDetail.instanceConfig.title")),1),n("div",un,[s(j,{icon:g(Me),plain:"",onClick:x},{default:f(()=>[D(o(r.$t("action.restart")),1)]),_:1},8,["icon"]),e.instanceStatus==="online"?(i(),H(j,{key:0,type:"warning",plain:"",icon:g(It),onClick:u},{default:f(()=>[D(o(r.$t("action.stop")),1)]),_:1},8,["icon"])):(i(),H(j,{key:1,type:"success",icon:g(st),onClick:p},{default:f(()=>[D(o(r.$t("action.start")),1)]),_:1},8,["icon"]))])]),s(j,{onClick:S[0]||(S[0]=A=>U.value=!0)},{default:f(()=>[s(ae,null,{default:f(()=>[s(g(Tt))]),_:1}),D(" "+o(r.$t("serverDetail.instanceConfig.viewMerged")),1)]),_:1})]),n("div",cn,[n("div",dn,[n("label",mn,o(r.$t("serverDetail.config.transport")),1),n("div",fn,[s(ve,{size:"small",type:"info"},{default:f(()=>[D(o(ce(e.templateConfig.type)),1)]),_:1}),n("span",vn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])]),n("div",pn,[n("label",gn,o(e.templateConfig.type==="stdio"?r.$t("serverDetail.config.executable"):r.$t("serverDetail.config.url")),1),n("div",yn,[s(Z,{"model-value":e.templateConfig.type==="stdio"?e.templateConfig.command:e.templateConfig.url,disabled:"",class:"flex-1"},null,8,["model-value"]),n("span",hn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])]),e.templateConfig.type==="stdio"?(i(),h("div",bn,[n("div",_n,[n("label",$n,o(r.$t("serverDetail.config.args")),1),s(j,{size:"small",icon:g(fe),onClick:R},{default:f(()=>[D(o(r.$t("serverDetail.config.addArg")),1)]),_:1},8,["icon"])]),F.value?(i(),h("div",Cn,[(i(!0),h(X,null,Y(e.templateConfig.args,(A,b)=>(i(),h("div",{key:`template-arg-${b}`,class:"flex gap-2 items-start"},[s(Z,{"model-value":A,disabled:"",class:"flex-1"},null,8,["model-value"]),n("span",wn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)]))),128))])):M("",!0),t.value.args&&t.value.args.length>0?(i(),h("div",kn,[(i(!0),h(X,null,Y(t.value.args,(A,b)=>(i(),h("div",{key:`instance-arg-${b}`,class:"flex gap-2 items-start"},[s(Z,{modelValue:t.value.args[b],"onUpdate:modelValue":B=>t.value.args[b]=B,class:"flex-1"},null,8,["modelValue","onUpdate:modelValue"]),s(j,{size:"small",type:"danger",icon:g(ie),onClick:B=>c(b)},null,8,["icon","onClick"]),s(ve,{size:"small",type:"success"},{default:f(()=>[D(o(r.$t("common.instance")),1)]),_:1})]))),128))])):M("",!0)])):M("",!0),n("div",xn,[n("div",Sn,[n("label",Vn,o(r.$t("serverDetail.config.env")),1),s(j,{size:"small",icon:g(fe),onClick:w},{default:f(()=>[D(o(r.$t("serverDetail.config.addEnv")),1)]),_:1},8,["icon"])]),K.value?(i(),h("div",In,[(i(!0),h(X,null,Y(e.templateConfig.env,(A,b)=>(i(),h("div",{key:`template-env-${b}`,class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(Z,{"model-value":b,disabled:"",style:{width:"30%","min-width":"150px"}},null,8,["model-value"]),s(Z,{"model-value":e.templateConfig.env[b],disabled:"",style:{flex:"1"}},null,8,["model-value"]),n("span",Tn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)]))),128))])):M("",!0),t.value.env&&Object.keys(t.value.env).length>0?(i(),h("div",Dn,[(i(!0),h(X,null,Y(t.value.env,(A,b)=>(i(),h("div",{key:_.value[b],class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(Z,{"model-value":b,style:{width:"30%","min-width":"150px"},placeholder:r.$t("addServer.keyPlaceholder"),"onUpdate:modelValue":B=>k(b,B)},null,8,["model-value","placeholder","onUpdate:modelValue"]),s(Z,{modelValue:t.value.env[b],"onUpdate:modelValue":B=>t.value.env[b]=B,style:{flex:"1"},placeholder:r.$t("addServer.valuePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),s(j,{size:"small",type:"danger",icon:g(ie),onClick:B=>P(b)},null,8,["icon","onClick"]),s(ve,{size:"small",type:"success"},{default:f(()=>[D(o(r.$t("common.instance")),1)]),_:1})]))),128))])):M("",!0)]),e.templateConfig.type!=="stdio"?(i(),h("div",En,[n("div",Bn,[n("label",Un,o(r.$t("serverDetail.config.headers")),1),s(j,{size:"small",icon:g(fe),onClick:q},{default:f(()=>[D(o(r.$t("serverDetail.config.addHeader")),1)]),_:1},8,["icon"])]),le.value?(i(),h("div",An,[(i(!0),h(X,null,Y(e.templateConfig.headers,(A,b)=>(i(),h("div",{key:`template-header-${b}`,class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(Z,{"model-value":b,disabled:"",style:{width:"30%","min-width":"150px"}},null,8,["model-value"]),s(Z,{"model-value":e.templateConfig.headers[b],disabled:"",style:{flex:"1"}},null,8,["model-value"]),n("span",Rn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)]))),128))])):M("",!0),t.value.headers&&Object.keys(t.value.headers).length>0?(i(),h("div",zn,[(i(!0),h(X,null,Y(t.value.headers,(A,b)=>(i(),h("div",{key:$.value[b],class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(Z,{"model-value":b,style:{width:"30%","min-width":"150px"},placeholder:r.$t("addServer.keyPlaceholder"),"onUpdate:modelValue":B=>re(b,B)},null,8,["model-value","placeholder","onUpdate:modelValue"]),s(Z,{modelValue:t.value.headers[b],"onUpdate:modelValue":B=>t.value.headers[b]=B,style:{flex:"1"},placeholder:r.$t("addServer.valuePlaceholder")},null,8,["modelValue","onUpdate:modelValue","placeholder"]),s(j,{size:"small",type:"danger",icon:g(ie),onClick:B=>oe(b)},null,8,["icon","onClick"]),s(ve,{size:"small",type:"success"},{default:f(()=>[D(o(r.$t("common.instance")),1)]),_:1})]))),128))])):M("",!0)])):M("",!0),n("div",Nn,[n("label",jn,o(r.$t("serverDetail.config.timeout")),1),n("div",On,[s(Ue,{"model-value":e.templateConfig.timeout?e.templateConfig.timeout/1e3:60,disabled:"",min:1,max:3600},null,8,["model-value"]),n("span",Mn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])]),n("div",Pn,[n("label",Fn,o(r.$t("common.description")),1),n("div",Ln,[s(Z,{"model-value":e.templateConfig.description,type:"textarea",rows:3,disabled:"",class:"flex-1"},null,8,["model-value"]),n("span",Hn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])]),e.templateConfig.type!=="stdio"?(i(),h("div",Jn,[n("div",qn,[n("label",Wn,o(r.$t("serverDetail.config.proxy")),1),t.value.proxy?(i(),H(j,{key:1,size:"small",type:"danger",icon:g(ie),onClick:v},{default:f(()=>[D(o(r.$t("serverDetail.config.removeProxy")),1)]),_:1},8,["icon"])):(i(),H(j,{key:0,size:"small",icon:g(fe),onClick:v},{default:f(()=>[D(o(r.$t("serverDetail.config.addProxy")),1)]),_:1},8,["icon"]))]),e.templateConfig.proxy&&!t.value.proxy?(i(),h("div",Gn,[n("div",Qn,[s(Z,{"model-value":e.templateConfig.proxy.url,disabled:""},null,8,["model-value"]),n("span",Xn,o(r.$t("serverDetail.instanceConfig.fromTemplate")),1)])])):M("",!0),t.value.proxy?(i(),h("div",Zn,[s(Z,{modelValue:t.value.proxy.url,"onUpdate:modelValue":S[1]||(S[1]=A=>t.value.proxy.url=A),placeholder:r.$t("serverDetail.config.proxyPlaceholder")},null,8,["modelValue","placeholder"]),s(ve,{size:"small",type:"success"},{default:f(()=>[D(o(r.$t("common.instance")),1)]),_:1})])):M("",!0)])):M("",!0),n("div",Yn,[n("div",Kn,[n("label",es,o(r.$t("serverDetail.config.tags")),1),s(j,{size:"small",icon:g(fe),onClick:L},{default:f(()=>[D(o(r.$t("common.addTag")),1)]),_:1},8,["icon"])]),e.systemTagDefinitions.length===0?(i(),h("div",ts,[S[5]||(S[5]=n("p",null,"暂无标签定义",-1)),s(j,{size:"small",type:"primary",onClick:$e},{default:f(()=>[...S[4]||(S[4]=[D(" 前往标签设置 ",-1)])]),_:1})])):t.value.tags&&Object.keys(t.value.tags).length>0?(i(),h("div",as,[(i(!0),h(X,null,Y(t.value.tags,(A,b)=>(i(),h("div",{key:C.value[b],class:"flex gap-2 items-start",style:{display:"flex",gap:"0.5rem",width:"100%"}},[s(Ee,{modelValue:z.value[b],"onUpdate:modelValue":B=>z.value[b]=B,style:{width:"30%","min-width":"150px"},filterable:"",placeholder:"选择标签键",onChange:B=>W(b,B)},{default:f(()=>[(i(!0),h(X,null,Y(e.systemTagDefinitions,B=>(i(),H(De,{key:B.key,label:B.key,value:B.key},{default:f(()=>[n("span",null,o(B.key),1),n("span",ls,o(B.type),1)]),_:2},1032,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","onChange"]),z.value[b]&&ee(z.value[b])==="enum"?(i(),H(Ee,{key:0,modelValue:t.value.tags[b],"onUpdate:modelValue":B=>t.value.tags[b]=B,style:{flex:"1"},filterable:"",placeholder:"选择标签值"},{default:f(()=>[(i(!0),h(X,null,Y(ye(z.value[b]),B=>(i(),H(De,{key:B,label:B,value:B},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue"])):(i(),H(Z,{key:1,modelValue:t.value.tags[b],"onUpdate:modelValue":B=>t.value.tags[b]=B,style:{flex:"1"},placeholder:z.value[b]?Te(z.value[b]):"输入标签值"},null,8,["modelValue","onUpdate:modelValue","placeholder"])),s(j,{size:"small",type:"danger",icon:g(ie),onClick:B=>I(b)},null,8,["icon","onClick"]),s(ve,{size:"small",type:"success"},{default:f(()=>[D(o(r.$t("common.instance")),1)]),_:1})]))),128))])):M("",!0)]),n("div",ns,[n("label",ss,o(r.$t("serverDetail.config.autoStart")),1),n("div",os,[s(Ae,{modelValue:t.value.enabled,"onUpdate:modelValue":S[2]||(S[2]=A=>t.value.enabled=A)},null,8,["modelValue"]),s(ve,{size:"small",type:"success"},{default:f(()=>[D(o(r.$t("common.instance")),1)]),_:1})])]),n("div",rs,[s(j,{type:"primary",onClick:N},{default:f(()=>[D(o(r.$t("serverDetail.config.save")),1)]),_:1})])]),s(ln,{modelValue:U.value,"onUpdate:modelValue":S[3]||(S[3]=A=>U.value=A),"merged-config":se.value},null,8,["modelValue","merged-config"])])}}}),us=Ie(is,[["__scopeId","data-v-d6fd920f"]]);function cs(e){const m=Le(),l=Ht(),d=Pe(),a=O("config"),p=O(null),u=O("config");function x(){const _=l.name;return _==="server-detail-tools"?"tools":_==="server-detail-resources"?"resources":"config"}function U(_){if(!e.value?.name)return;const $=_,C=$==="tools"?"server-detail-tools":$==="resources"?"server-detail-resources":"server-detail-config";m.push({name:C,params:{name:e.value.name}})}function t(){p.value=null}function T(_){p.value=_}function y(){l.query.selection==="template"?p.value=null:l.query.instanceIndex!==void 0?p.value=parseInt(l.query.instanceIndex,10):p.value=null}function E(){l.query.instanceTab==="logs"?u.value="logs":u.value="config"}return Lt(()=>{const _=l.params.name;if(_){const $=d.servers.find(C=>C.name===_);$&&d.selectServer($.id)}a.value=x(),y(),E()}),te(()=>l.params.name,_=>{if(_){const $=d.servers.find(C=>C.name===_);$&&d.selectServer($.id)}}),te(()=>l.name,()=>{a.value=x(),y(),E()}),te(u,_=>{if(!e.value?.name)return;const $={...l.query},C={};for(const[z,F]of Object.entries($))F!=null&&(C[z]=F);_==="config"?delete C.instanceTab:C.instanceTab=_,m.replace({name:l.name,params:l.params,query:C})}),te(()=>d.servers.length,()=>{const _=l.params.name;if(_&&!d.selectedServer){const $=d.servers.find(C=>C.name===_);$&&d.selectServer($.id)}y(),E()}),te(()=>e.value?.id,(_,$)=>{_&&_!==$&&(a.value=x())},{immediate:!0}),te(p,_=>{if(!e.value?.name)return;const $={...l.query},C={};for(const[z,F]of Object.entries($))F!=null&&(C[z]=F);_===null?(C.selection="template",delete C.instanceIndex):(C.instanceIndex=String(_),delete C.selection),m.replace({name:l.name,params:l.params,query:C})}),{activeTopTab:a,selectedInstanceIndex:p,activeInstanceTab:u,getTabFromRoute:x,navigateToTab:U,handleSelectTemplate:t,handleSelectInstance:T}}function ds(e,m){const l=Pe(),{t:d}=me(),a=J(()=>(console.log("[useServerInstances] Computing allServers, store.servers:",l.servers),l.servers.filter(c=>c.name===e.value?.name))),p=J(()=>(console.log("[useServerInstances] Computing serverInstances"),e.value?.rawV11Config?.instances?e.value.rawV11Config.instances.map((c,w)=>{const k=a.value.find(L=>L.instances?.some(I=>I.id===c.id))?.instances?.find(L=>L.id===c.id);let q="offline",oe;const re=e.value?.rawV11Config?.template?.type;return k?.status?(q=k.status,oe=k.pid??void 0):q="offline",{id:c.id,timestamp:c.timestamp??Date.now(),index:c.index??w,displayName:c.displayName,status:q,pid:oe,transportType:re}}):(console.log("[useServerInstances] No instances found in rawV11Config"),[]))),u=J(()=>m.value===null?null:p.value.find(c=>c.index===m.value)||null),x=J(()=>{const c=u.value;if(!c||!e.value?.rawV11Config?.instances)return{args:[],env:{},headers:{},tags:{},enabled:!0};let w;return c.index!==void 0&&(w=e.value.rawV11Config.instances.find(P=>P.index===c.index)),w||(w=e.value.rawV11Config.instances.find(P=>P.id===c.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:c.displayName,enabled:!0}}),U=J(()=>e.value?.rawV11Config?.template?e.value.rawV11Config.template:{type:"stdio",args:[],env:{},headers:{},timeout:6e4,aggregatedTools:[]});function t(){return m.value===null?"offline":p.value.find(w=>w.index===m.value)?.status||"offline"}function T(){return m.value===null?null:p.value.find(w=>w.index===m.value)?.id||null}async function y(c){try{console.log("[startServerInstance] Starting instance:",c),l.updateServerStatus(c,"starting"),await l.startServer(c),V.success(d("action.started"))}catch(w){console.error("[startServerInstance] Error:",w),w instanceof Error?V.error(w.message):V.error(String(w))}}async function E(){const c=T();if(!c){V.warning(d("serverDetail.noInstanceSelected"));return}await y(c)}async function _(c){try{console.log("[stopServerInstance] Stopping instance:",c),await l.stopServer(c),V.success(d("action.stopped"))}catch(w){console.error("[stopServerInstance] Error:",w),w instanceof Error?V.error(w.message):V.error(String(w))}}async function $(){const c=T();if(!c){V.warning(d("serverDetail.noInstanceSelected"));return}await _(c)}async function C(c){try{console.log("[restartServerInstance] Restarting instance:",c),l.updateServerStatus(c,"starting");const w=p.value.find(P=>P.id===c);w&&w.status==="online"&&await l.stopServer(c),await l.startServer(c),V.success(d("action.restarted"))}catch(w){console.error("[restartServerInstance] Error:",w),w instanceof Error?V.error(w.message):V.error(String(w))}}async function z(){const c=T();if(!c){V.warning(d("serverDetail.noInstanceSelected"));return}await C(c)}async function F(){if(e.value?.name)try{await l.startAllServerInstances(e.value.name),V.success(d("action.started"))}catch(c){c instanceof Error?V.error(c.message):V.error(String(c))}}async function K(){if(e.value?.name)try{await l.stopAllServerInstances(e.value.name),V.success(d("action.stopped"))}catch(c){c instanceof Error?V.error(c.message):V.error(String(c))}}async function le(){if(e.value?.name)try{await l.restartAllServerInstances(e.value.name),V.success(d("action.restarted"))}catch(c){c instanceof Error?V.error(c.message):V.error(String(c))}}async function se(){if(e.value?.name)try{const c=`temp-${Date.now()}`,w=e.value.rawV11Config?.instances||[],P=w.length>0?Math.max(...w.map(q=>q.index??0)):-1,k={id:c,timestamp:Date.now(),index:P+1,enabled:!0,args:[],env:{},headers:{},tags:{}};e.value.rawV11Config&&(e.value.rawV11Config.instances||(e.value.rawV11Config.instances=[]),e.value.rawV11Config.instances.push(k)),await l.addServerInstance(e.value.name),V.success(d("action.instanceAdded"))}catch(c){c instanceof Error?V.error(c.message):V.error(String(c))}}async function ce(c,w){if(e.value?.name)try{const k=e.value.rawV11Config?.instances?.find(q=>q.index===c);k&&(k.displayName=w),await l.updateServerInstance(e.value.name,c,{displayName:w}),V.success(d("action.displayNameUpdated"))}catch(P){P instanceof Error?V.error(P.message):V.error(String(P))}}async function N(c){if(e.value?.name)try{await mt.confirm(d("serverDetail.deleteInstanceConfirm"),d("action.delete"),{confirmButtonText:d("action.delete"),cancelButtonText:d("action.cancel"),type:"warning"});const w=e.value.rawV11Config?.instances;if(w){const P=w.findIndex(k=>k.index===c);P!==-1&&w.splice(P,1)}m.value===c&&(m.value=null),await l.removeServerInstance(e.value.name,c),V.success(d("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 v(){if(e.value?.name)try{await l.reassignInstanceIndexes(e.value.name),V.success(d("action.indexesReassigned"))}catch(c){c instanceof Error?V.error(c.message):V.error(String(c))}}async function R(c){if(!(!e.value?.name||m.value===null))try{const w=m.value,k=e.value.rawV11Config?.instances?.find(q=>q.index===w);k&&(c.args!==void 0&&(k.args=c.args),c.env!==void 0&&(k.env=c.env),c.headers!==void 0&&(k.headers=c.headers),c.tags!==void 0&&(k.tags=c.tags),c.proxy!==void 0&&(k.proxy=c.proxy),c.displayName!==void 0&&(k.displayName=c.displayName),c.enabled!==void 0&&(k.enabled=c.enabled)),await l.updateServerInstance(e.value.name,w,c),V.success(d("action.configSaved"))}catch(w){w instanceof Error?V.error(w.message):V.error(String(w))}}return{serverInstances:p,selectedInstance:u,selectedInstanceConfig:x,templateConfigForInstance:U,allServers:a,getSelectedInstanceStatus:t,getSelectedInstanceServerId:T,startSelectedInstance:E,stopSelectedInstance:$,restartSelectedInstance:z,startAllInstances:F,stopAllInstances:K,restartAllInstances:le,handleAddInstance:se,handleUpdateDisplayName:ce,handleDeleteInstance:N,handleReassignIndexes:v,handleUpdateInstanceConfig:R}}function ms(e){const m=Le(),l=O(null),d=O(!1),a=O(!1),p=O(null),u=O(!1),x=O(null),U=O(null);function t(E){e.value&&m.push({name:"resource-detail",params:{name:e.value.name},query:{uri:E.uri,name:E.name,mimeType:E.mimeType}})}function T(E){p.value=E,a.value=!1,d.value=!0}function y(E){const _=x.value;_&&t(_),x.value=null,u.value=!1,U.value=null}return te(x,E=>{E!==null&&(u.value=!0,x.value=null)}),{showInstanceSelectForTool:a,selectedInstanceForTool:p,showCallDialog:d,pendingTool:l,showInstanceSelectForResourceDialog:u,showInstanceSelectForResource:x,selectedInstanceForResource:U,callToolWithInstance:T,viewResourceWithInstance:y}}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"},vs={class:"custom-tabs-label"},ps={class:"flex h-full gap-4 mt-4"},gs={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"},hs={key:0,class:"h-full flex flex-col min-h-0"},bs={class:"flex-1 min-h-0 overflow-hidden"},_s={key:1,class:"h-full flex flex-col min-h-0"},$s={class:"flex-1 min-h-0 overflow-hidden"},Cs={class:"custom-tabs-label"},ws={class:"flex-1 min-h-0 overflow-hidden"},ks={class:"custom-tabs-label"},xs={key:2,class:"flex-1 flex items-center justify-center text-gray-400"},Ss={class:"custom-tabs-label"},Vs={class:"custom-tabs-label"},Is={key:1,class:"h-full flex items-center justify-center text-gray-400"},Ts=ue({__name:"ServerDetail",setup(e){const m=Pe();Dt();const l=Et(),{config:d}=Jt(l),{t:a}=me(),p=Le(),u=J(()=>m.selectedServer),x=J(()=>d.value?.tagDefinitions||[]),{activeTopTab:U,selectedInstanceIndex:t,activeInstanceTab:T,navigateToTab:y,handleSelectTemplate:E,handleSelectInstance:_}=cs(u),{serverInstances:$,selectedInstanceConfig:C,templateConfigForInstance:z,getSelectedInstanceStatus:F,startSelectedInstance:K,stopSelectedInstance:le,restartSelectedInstance:se,startAllInstances:ce,stopAllInstances:N,restartAllInstances:v,handleAddInstance:R,handleUpdateDisplayName:c,handleDeleteInstance:w,handleReassignIndexes:P,handleUpdateInstanceConfig:k}=ds(u,t),{showInstanceSelectForTool:q,selectedInstanceForTool:oe,showCallDialog:re,pendingTool:L,showInstanceSelectForResourceDialog:I,showInstanceSelectForResource:W,callToolWithInstance:ee,viewResourceWithInstance:ye}=ms(u),Te=O(!0),$e=O(!1),r=O(null);te([U,()=>u.value?.name],async([A,b])=>{b&&(A==="tools"?await m.fetchTools(b):A==="resources"&&await m.fetchResources(b))},{immediate:!0});function S(){m.selectedServerId=null,p.push({name:"servers"})}const j=async()=>{if(u.value)try{await mt.confirm(a("serverDetail.deleteConfirm"),a("action.delete"),{confirmButtonText:a("action.delete"),cancelButtonText:a("action.cancel"),type:"warning"}),await m.deleteServer(u.value.id),V.success(a("action.serverDeleted")),m.selectedServerId=null,p.push({name:"servers"})}catch(A){A!=="cancel"&&(A instanceof Error?V.error(A.message||"Failed to delete server"):V.error(String(A)||"Failed to delete server"))}},ae=async(A,b)=>{if(!u.value)return;let B=u.value.config.aggregatedTools;B==null&&(u.value.tools?B=u.value.tools.map(ne=>ne.name):B=[]),b?B.includes(A)||(B=[...B,A]):B=B.filter(ne=>ne!==A),u.value.config.aggregatedTools=B;try{await m.updateServer(u.value.id,{config:u.value.config}),V.success(a("action.configSaved"))}catch(ne){ne instanceof Error?V.error(ne.message):V.error(String(ne))}},ve=async()=>{if(u.value)try{await m.updateServer(u.value.id,{config:u.value.rawV11Config?.template}),V.success(a("action.configSaved"))}catch(A){A instanceof Error?V.error(A.message):V.error(String(A))}},Z=A=>{u.value?.rawV11Config&&(u.value.rawV11Config.template=A)},Ue=()=>{$e.value=!0},De=async A=>{u.value&&(u.value.rawV11Config&&(u.value.rawV11Config.template={...u.value.rawV11Config.template,...A}),await m.updateServer(u.value.id,{config:u.value.rawV11Config?.template}))},Ee=async()=>{u.value&&(await m.clearLogs(u.value.id),V.success(a("action.logsCleared")))},Ae=()=>{if(u.value){const A=u.value.logs.map(b=>`${ut(b.timestamp)} [${b.level.toUpperCase()}] ${b.message}`).join(`
2
2
  `);navigator.clipboard.writeText(A),V.success(a("action.logsCopied"))}};return(A,b)=>{const B=Se,ne=zt,Ge=Rt;return u.value?(i(),h("div",fs,[s(ka,{server:u.value,onBack:S,onDelete:j,onRestartAll:g(v),onStartAll:g(ce),onStopAll:g(N)},null,8,["server","onRestartAll","onStartAll","onStopAll"]),s(Ge,{"model-value":g(U),onTabChange:b[5]||(b[5]=Q=>g(y)(String(Q))),class:"flex-1 flex flex-col overflow-hidden custom-tabs"},{default:f(()=>[s(ne,{name:"config",class:"h-full flex flex-col"},{label:f(()=>[n("span",vs,[s(B,null,{default:f(()=>[s(g(et))]),_:1}),n("span",null,o(A.$t("common.config"))+" ("+o(g($).length)+")",1)])]),default:f(()=>[n("div",ps,[n("div",gs,[s(Zl,{instances:g($),"selected-index":g(t),"server-name":u.value.name,"show-template-node":!0,"template-selected":g(t)===null,onSelect:g(_),onSelectTemplate:g(E),onAdd:g(R),onUpdateDisplayName:g(c),onDelete:g(w),onReassignIndexes:g(P)},null,8,["instances","selected-index","server-name","template-selected","onSelect","onSelectTemplate","onAdd","onUpdateDisplayName","onDelete","onReassignIndexes"])]),n("div",ys,[g(t)===null?(i(),h("div",hs,[n("div",bs,[s(ll,{config:u.value.rawV11Config||{template:{type:"stdio",args:[],env:{},headers:{},timeout:6e4,aggregatedTools:[],instanceSelectionStrategy:"random"},instances:[],tagDefinitions:[]},"onUpdate:template":Z,onSave:ve,onEditJson:Ue},null,8,["config"])])])):g(t)!==null?(i(),h("div",_s,[n("div",$s,[s(Ge,{modelValue:g(T),"onUpdate:modelValue":b[1]||(b[1]=Q=>Be(T)?T.value=Q:null),class:"instance-detail-tabs h-full flex flex-col"},{default:f(()=>[s(ne,{name:"config",class:"h-full flex flex-col min-h-0"},{label:f(()=>[n("span",Cs,[s(B,null,{default:f(()=>[s(g(et))]),_:1}),n("span",null,o(A.$t("common.config")),1)])]),default:f(()=>[n("div",ws,[s(us,{"template-config":g(z),"instance-config":g(C),"server-name":u.value.name,"instance-status":g(F)(),"system-tag-definitions":x.value,onUpdate:g(k),onStartInstance:g(K),onStopInstance:g(le),onRestartInstance:g(se)},null,8,["template-config","instance-config","server-name","instance-status","system-tag-definitions","onUpdate","onStartInstance","onStopInstance","onRestartInstance"])])]),_:1}),s(ne,{name:"logs",class:"h-full flex flex-col"},{label:f(()=>[n("span",ks,[s(B,null,{default:f(()=>[s(g(Bt))]),_:1}),n("span",null,o(A.$t("common.logs")),1)])]),default:f(()=>[s(rl,{logs:u.value.logs,"auto-scroll":Te.value,"onUpdate:autoScroll":b[0]||(b[0]=Q=>Te.value=Q),onClear:Ee,onCopy:Ae},null,8,["logs","auto-scroll"])]),_:1})]),_:1},8,["modelValue"])])])):(i(),h("div",xs,o(A.$t("serverDetail.noSelection")),1))])])]),_:1}),s(ne,{name:"tools",class:"h-full flex flex-col"},{label:f(()=>[n("span",Ss,[s(B,null,{default:f(()=>[s(g(Ut))]),_:1}),n("span",null,o(A.$t("common.tools"))+" ("+o(u.value.toolsCount||0)+")",1)])]),default:f(()=>[s(xl,{tools:u.value.tools||[],"allowed-tools":u.value.config.aggregatedTools,onSelectTool:b[2]||(b[2]=Q=>r.value=Q),onUpdateToolVisibility:ae,onCallTool:b[3]||(b[3]=Q=>{q.value=!0,L.value=Q})},null,8,["tools","allowed-tools"])]),_:1}),s(ne,{name:"resources",class:"h-full flex flex-col"},{label:f(()=>[n("span",Vs,[s(B,null,{default:f(()=>[s(g(At))]),_:1}),n("span",null,o(A.$t("common.resources"))+" ("+o(u.value.resourcesCount||0)+")",1)])]),default:f(()=>[s(Dl,{resources:u.value.resources,onViewResource:b[4]||(b[4]=Q=>{W.value=Q})},null,8,["resources"])]),_:1})]),_:1},8,["model-value"]),s(Bl,{modelValue:$e.value,"onUpdate:modelValue":b[6]||(b[6]=Q=>$e.value=Q),config:u.value.config,"server-name":u.value.name,onSave:De},null,8,["modelValue","config","server-name"]),s(nt,{modelValue:g(q),"onUpdate:modelValue":b[7]||(b[7]=Q=>Be(q)?q.value=Q:null),instances:g($),title:A.$t("serverDetail.selectInstanceForTool"),onConfirm:g(ee)},null,8,["modelValue","instances","title","onConfirm"]),s(nt,{modelValue:g(I),"onUpdate:modelValue":b[8]||(b[8]=Q=>Be(I)?I.value=Q:null),instances:g($),title:A.$t("serverDetail.selectInstanceForResource"),onConfirm:g(ye)},null,8,["modelValue","instances","title","onConfirm"]),g(L)&&g(oe)!==null?(i(),H(la,{key:0,modelValue:g(re),"onUpdate:modelValue":b[9]||(b[9]=Q=>Be(re)?re.value=Q:null),"server-name":u.value.name,"tool-name":g(L).name,description:g(L).description,"input-schema":g(L).inputSchema},null,8,["modelValue","server-name","tool-name","description","input-schema"])):M("",!0)])):(i(),h("div",Is,o(A.$t("serverDetail.noServerSelected")),1))}}}),Ws=Ie(Ts,[["__scopeId","data-v-7d20adaa"]]);export{Ws as default};
@@ -1,4 +1,4 @@
1
- import{b as pe,d as ve,_ as fe,e as ge,f as ye,g as be,u as oe,h as re,j as Z,p as q,k as he,E as Se,l as $e,v as ke,r as _e,m as Ve,s as we,t as Ce,n as Ae}from"./index-CTB6oe-9.js";import{E as xe,a as Ee}from"./el-input-tYgeiaCT.js";import{a as Ie,E as Ue}from"./el-skeleton-item-BRwIFspE.js";import{t as le,x as d,A as y,J as O,u as p,v as ee,a9 as g,$ as n,V as I,C as s,K as De,a6 as se,c as Pe,r as C,h as Te,y as N,G as r,O as t,P as F,af as L,j as ze,a7 as je,I as R}from"./vue-vendor-CbgVSHIh.js";import{E as Me,a as Je,b as Be}from"./el-overlay-kqX_BABo.js";import{E as Fe,a as Oe}from"./el-form-item-CcGsD2K_.js";import{E as Ne,a as He}from"./el-switch-BF8c-xeU.js";import{E as h}from"./index-ByNBhPAR.js";import{_ as Re}from"./ServerStatusTags.vue_vue_type_script_setup_true_lang-BHhwEuGe.js";import{_ as Le}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./typescript-Bp3YSIOJ.js";import"./event-BB_Ol6Sd.js";import"./_baseClone-DO5qfalW.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 S=ge("card"),x=ye("card");return(v,k)=>{var U;return d(),y("div",{class:O([p(x).b(),p(x).is(`${v.shadow||((U=p(S))==null?void 0:U.shadow)||"always"}-shadow`)])},[v.$slots.header||v.header?(d(),y("div",{key:0,class:O([p(x).e("header"),v.headerClass])},[ee(v.$slots,"header",{},()=>[g(n(v.header),1)])],2)):I("v-if",!0),s("div",{class:O([p(x).e("body"),v.bodyClass]),style:De(v.bodyStyle)},[ee(v.$slots,"default")],6),v.$slots.footer||v.footer?(d(),y("div",{key:1,class:O([p(x).e("footer"),v.footerClass])},[ee(v.$slots,"footer",{},()=>[g(n(v.footer),1)])],2)):I("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{b as pe,d as ve,_ as fe,e as ge,f as ye,g as be,u as oe,h as re,j as Z,p as q,k as he,E as Se,l as $e,v as ke,r as _e,m as Ve,s as we,t as Ce,n as Ae}from"./index-DTZ9o3XO.js";import{E as xe,a as Ee}from"./el-input-CL9HPfdW.js";import{a as Ie,E as Ue}from"./el-skeleton-item-CdAfEgVR.js";import{t as le,x as d,A as y,J as O,u as p,v as ee,a9 as g,$ as n,V as I,C as s,K as De,a6 as se,c as Pe,r as C,h as Te,y as N,G as r,O as t,P as F,af as L,j as ze,a7 as je,I as R}from"./vue-vendor-CbgVSHIh.js";import{E as Me,a as Je,b as Be}from"./el-overlay-B5ZGCmXY.js";import{E as Fe,a as Oe}from"./el-form-item-Dyx5MiWB.js";import{E as Ne,a as He}from"./el-switch-DnN1s0Wb.js";import{E as h}from"./index-Ci5n5dA9.js";import{_ as Re}from"./ServerStatusTags.vue_vue_type_script_setup_true_lang-BHhwEuGe.js";import{_ as Le}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./typescript-Bp3YSIOJ.js";import"./event-BB_Ol6Sd.js";import"./_baseClone-e9R6V78L.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 S=ge("card"),x=ye("card");return(v,k)=>{var U;return d(),y("div",{class:O([p(x).b(),p(x).is(`${v.shadow||((U=p(S))==null?void 0:U.shadow)||"always"}-shadow`)])},[v.$slots.header||v.header?(d(),y("div",{key:0,class:O([p(x).e("header"),v.headerClass])},[ee(v.$slots,"header",{},()=>[g(n(v.header),1)])],2)):I("v-if",!0),s("div",{class:O([p(x).e("body"),v.bodyClass]),style:De(v.bodyStyle)},[ee(v.$slots,"default")],6),v.$slots.footer||v.footer?(d(),y("div",{key:1,class:O([p(x).e("footer"),v.footerClass])},[ee(v.$slots,"footer",{},()=>[g(n(v.footer),1)])],2)):I("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:S}){const x=Q,v=S,{t:k}=se(),U=oe(),j=Pe({get:()=>x.modelValue,set:l=>v("update:modelValue",l)}),_=C(!1),D=C(!1),E=C(!1);Te(j,l=>{l&&x.initialMode==="json"&&(_.value=!0)});const M=C(ae),J=C(`{
@@ -0,0 +1 @@
1
+ import{h as X,E as Y,p as ie,L as de,j as me,P as re,aL as ge,aM as pe,aN as ce,aO as fe,s as ye,J as ve,aP as be,aQ as _e,aR as Ve}from"./index-DTZ9o3XO.js";import{v as he}from"./el-loading-2TW6JdfY.js";import{E as xe,a as $e}from"./el-tab-pane-BebZh0XF.js";import{E as ke,a as we}from"./el-switch-DnN1s0Wb.js";import{a as ee,E as te}from"./el-form-item-Dyx5MiWB.js";import{a as Ue,E as le}from"./el-input-CL9HPfdW.js";import{E as Te,a as se,b as ae}from"./el-overlay-B5ZGCmXY.js";import{t as ne,a6 as oe,c as P,r as v,A as h,C as n,$ as d,O as t,G as a,u,a9 as S,P as G,af as J,V as j,y as A,x as p,h as Ce,al as De,j as Ee,H as Me}from"./vue-vendor-CbgVSHIh.js";import{E as H}from"./index-Ci5n5dA9.js";import"./raf-CeCd08aN.js";import"./typescript-Bp3YSIOJ.js";import"./event-BB_Ol6Sd.js";import"./omit-DlmW8Yd6.js";import"./_baseClone-e9R6V78L.js";const Re={class:"tag-manager"},Ne={class:"flex items-center justify-between mb-4"},Pe={class:"text-lg font-semibold text-gray-900 dark:text-white"},Se={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"},Le={class:"flex flex-wrap gap-1"},Oe={class:"flex items-center gap-2 ml-4"},qe={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=P({get:()=>U.modelValue||[],set:e=>s("update:modelValue",e)}),D=v(!1),E=v(!1),x=v(!1),k=v(!1),T=v(),b=v(null),g=v({key:"",description:"",type:"string",values:[]}),O={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 M(){x.value=!1,b.value=null,g.value={key:"",description:"",type:"string",values:[]},D.value=!0}function q(e){x.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:[]},x.value=!1,b.value=null}function R(){T.value?.validate(e=>{if(e){k.value=!0;try{if(x.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)){H.error("Tag key already exists"),k.value=!1;return}f.value=[...f.value,{...g.value}]}H.success(z("action.saved")),B()}finally{k.value=!1}}})}function K(e){b.value=e,E.value=!0}function Q(){if(b.value){k.value=!0;try{f.value=f.value.filter(e=>e.key!==b.value.key),H.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(),h("div",Re,[n("div",Ne,[n("h3",Pe,d(e.$t("settings.tagDefinitions")),1),t(_,{type:"primary",onClick:M},{default:a(()=>[t(m,{class:"mr-1"},{default:a(()=>[t(u(ie))]),_:1}),S(" "+d(e.$t("common.addTag")),1)]),_:1})]),f.value.length===0?(p(),h("div",Se,d(e.$t("settings.noTagsDefined")),1)):(p(),h("div",je,[(p(!0),h(G,null,J(f.value,i=>(p(),h("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(()=>[S(d(i.type),1)]),_:2},1024)]),i.description?(p(),h("div",Be,d(i.description),1)):j("",!0),i.type==="enum"&&i.values&&i.values.length>0?(p(),h("div",Fe,[n("div",Le,[(p(!0),h(G,null,J(i.values,L=>(p(),A(W,{key:L,size:"small",type:"success"},{default:a(()=>[S(d(L),1)]),_:2},1024))),128))])])):j("",!0)]),n("div",Oe,[t(_,{size:"small",onClick:L=>q(i)},{default:a(()=>[t(m,null,{default:a(()=>[t(u(de))]),_:1})]),_:1},8,["onClick"]),t(_,{size:"small",type:"danger",onClick:L=>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:x.value?e.$t("common.editTag"):e.$t("common.addTag"),width:"500px",class:"custom-dialog","before-close":B},{footer:a(()=>[n("div",qe,[t(_,{onClick:B},{default:a(()=>[S(d(e.$t("action.cancel")),1)]),_:1}),t(_,{type:"primary",onClick:R,loading:k.value},{default:a(()=>[S(d(e.$t("action.save")),1)]),_:1},8,["loading"])])]),default:a(()=>[t(F,{model:g.value,rules:O,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:x.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),h(G,null,J(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(()=>[S(d(e.$t("action.cancel")),1)]),_:1}),t(_,{type:"danger",onClick:Q,loading:k.value},{default:a(()=>[S(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"},Je={class:"py-6 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto w-full"},Qe={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"},ht={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},xt={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"},Mt={class:"flex items-center gap-4 mt-4"},Rt={class:"w-[260px] text-sm font-medium text-gray-700 dark:text-gray-300"},Nt={class:"flex items-center gap-2"},Pt={class:"flex items-center gap-4 mt-4"},St={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"},tl=ne({__name:"SettingsView",setup(I){const{t:w}=oe(),U=re(),{config:s,loading:z}=De(U),f=v(!1),D=v("system"),E=P({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`)}}),x=v(C((s.value?.security?.connectionTimeout||3e4)/1e3)),k=P({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[x.value]*1e3)}}),T=v(C((s.value?.security?.idleConnectionTimeout||3e5)/1e3)),b=P({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"),O=P({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}}}),M=v("seconds"),q=P({get:()=>{const l=(s.value?.system?.startup?.readyTimeout??12e4)/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(1e4,Math.min(3e5,l));s.value.system.startup.readyTimeout=m}}}),B=P({get:()=>s.value?.system?.startup?.maxConnectRetries??3,set:e=>{s.value.system?.startup&&(s.value.system.startup.maxConnectRetries=e)}}),R=v("seconds"),K=P({get:()=>{const l=(s.value?.system?.startup?.connectRetryDelay??5e3)/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(1e3,Math.min(3e4,l));s.value.system.startup.connectRetryDelay=m}}});Z(x,k),Z(T,b),Z(g,O),Z(M,q),Z(R,K),Ee(async()=>{s.value.host||await U.fetchConfig(),s.value?.security&&(x.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),M.value=C((s.value.system.startup.readyTimeout||12e4)/1e3),R.value=C((s.value.system.startup.connectRetryDelay||5e3)/1e3))});async function Q(){f.value=!0;try{await U.updateConfig(s.value),H.success(w("settings.saveSuccess"))}catch(e){H.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,L=xe,ue=he;return p(),h("div",We,[n("div",Je,[n("div",Qe,[n("h1",Xe,d(e.$t("settings.title")),1),t(_,{type:"primary",onClick:Q,loading:f.value},{default:a(()=>[t(m,{class:"mr-1"},{default:a(()=>[t(u(ge))]),_:1}),S(" "+d(e.$t("settings.save")),1)]),_:1},8,["loading"])]),Me((p(),h("div",Ye,[t(L,{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(),h(G,{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),h(G,null,J(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",ht,d(e.$t("settings.connectionTimeout")),1),n("div",xt,[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:x.value,"onUpdate:modelValue":l[14]||(l[14]=o=>x.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:O.value,"onUpdate:modelValue":l[17]||(l[17]=o=>O.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",Mt,[n("span",Rt,d(e.$t("settings.readyTimeout")),1),n("div",Nt,[t(c,{modelValue:q.value,"onUpdate:modelValue":l[19]||(l[19]=o=>q.value=o),style:{width:"128px","flex-shrink":"0"}},null,8,["modelValue"]),t($,{modelValue:M.value,"onUpdate:modelValue":l[20]||(l[20]=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"])])]),n("div",Pt,[n("span",St,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:R.value,"onUpdate:modelValue":l[23]||(l[23]=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"])])])]),_: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{tl as default};