@loop_ouroboros/mcp-hub-lite 1.2.7 → 1.2.9

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