const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-D1_Nt40_.js","assets/index-LZWfu62c.js","assets/vendor-codemirror-C7mXSpXt.js","assets/vendor-icons-Aso0-eeY.js","assets/index-BzYDIT5o.css","assets/dashboard-7Sl2aero.js","assets/server-BUAZv7ZV.js","assets/region-BZBRxF2X.js","assets/index-Z0O8nAcG.js","assets/pipeline-Lgvc2XUS.js","assets/config-DAXaHuse.js","assets/credential-CwQY-4Ba.js","assets/automation-BrmX02Sx.js","assets/alert-C4MMKcUL.js","assets/alert-center-dJk4LGZM.js","assets/site-B-pRndoi.js","assets/trace-L8uY5gM3.js","assets/grafana-DTc3taUi.js","assets/datasource-DuIT0c1H.js","assets/metrics-Dj4l07HZ.js","assets/agent-g0Vk8FYK.js","assets/account-Dzyhyahe.js","assets/platform-g_u95ryi.js","assets/billing-9Cbmzl6K.js","assets/audit-BiL35K5G.js","assets/terminal-BchqP-zB.js","assets/approval-DmGRfKd6.js","assets/ai-BMSiZ3PN.js"])))=>i.map(i=>d[i]); import{j as e,r as o}from"./vendor-codemirror-C7mXSpXt.js";import{G as ir,a8 as $r,D as Te,a as _e,b as Ke,c as Re,d as Me,B as j,e as Qe,o as vr,m as ie,t as G,v as Or,r as Lr,K as zr,s as Je,x as Hr,P as Ur,w as Dr,W as Vr,at as hr,a9 as gr,aa as ur,ab as br,ac as Sr,ad as qe,ae as he,f as Wr}from"./index-LZWfu62c.js";import{C as Fe,a as ke}from"./card-B-RtdR4H.js";import{I as W}from"./input-BdDauX3U.js";import{C as ge}from"./checkbox-DL3onEGv.js";import{b as Oe,e as Z,T as qr,a as Gr,c as ne,d as Kr}from"./table-BPFYQwjr.js";import{S as fe,a as we,b as Ce,c as Ie,d as U}from"./select-4xU_9B3_.js";import{u as Qr,q as jr,a as Jr,b as Xr}from"./unwrap-BmWy-KM2.js";import{u as $e}from"./useMutation-Bp3lz5hm.js";import{s as ee}from"./server-BUAZv7ZV.js";import{S as Yr}from"./stat-strip-BPzU38xY.js";import{B as O}from"./badge-B0F5ZNtn.js";import{c as ye}from"./account-Dzyhyahe.js";import{i as Nr,ag as Le,M as We,y as cr,w as ue,f as Ee,R as de,S as yr,ab as ze,h as He,b5 as Xe,an as fr,ao as wr,X as be,j as Cr,am as Ir,L as Ue,ah as Ye,b6 as Zr,ap as es,aL as nr,m as rs,aM as ss,v as Ze,T as er,b7 as Ge,Q as ts,$ as os,N as as,H as cs,r as dr,aP as ns,aE as ds,P as ls}from"./vendor-icons-Aso0-eeY.js";import{x as ps,a as ms}from"./vendor-xterm-20M9KZE1.js";import{m as xs,a as is,f as vs}from"./xterm-utils-slbfdUHf.js";import{c as rr,s as hs}from"./credential-CwQY-4Ba.js";import{r as gs}from"./region-BZBRxF2X.js";import{L as V}from"./label-u-lNUbKh.js";import{T as lr}from"./textarea-BdtIagjy.js";import"./index-CYARH0Cq.js";function us(r={page:1,page_size:100}){return Qr({queryKey:jr.servers(r),queryFn:async()=>{const p=await ee.getServers(r);return{list:Xr(p),total:Jr(p)}},staleTime:3e4})}function bs(){const r=ir(),p=()=>r.invalidateQueries({queryKey:["servers"]}),c=$e({mutationFn:u=>ee.createServer(u),onSuccess:p}),t=$e({mutationFn:({id:u,data:g})=>ee.updateServer(u,g),onSuccess:p}),a=$e({mutationFn:u=>ee.deleteServer(u),onSuccess:p}),v=$e({mutationFn:u=>ee.batchDelete(u),onSuccess:p});return{createMutation:c,updateMutation:t,deleteMutation:a,batchDeleteMutation:v,invalidate:p}}function Ss({servers:r}){const p=r.filter(a=>a.status==="running").length,c=r.filter(a=>a.status==="maintenance").length,t=r.filter(a=>a.status==="stopped").length;return e.jsx(Yr,{"code-path":"src/components/server/ServerStatsStrip.tsx:14:5",items:[{label:"服务器",value:r.length,color:"blue"},{label:"运行中",value:p,color:"emerald"},{label:"维护中",value:c,color:"amber"},{label:"已停止",value:t,color:"muted"}]})}const js=[{id:"aws",name:"AWS",color:"bg-orange-500",icon:"AWS"},{id:"aliyun",name:"阿里云",color:"bg-orange-600",icon:"AL"},{id:"tencent",name:"腾讯云",color:"bg-blue-500",icon:"TX"},{id:"huawei",name:"华为云",color:"bg-red-500",icon:"HW"},{id:"azure",name:"Azure",color:"bg-blue-600",icon:"AZ"}];function Ns({open:r,onClose:p}){const[c,t]=o.useState([]),[a,v]=o.useState(1),[u,g]=o.useState(""),[x,_]=o.useState(null),[S,E]=o.useState([]),[n,y]=o.useState([]),[f,R]=o.useState(""),[w,i]=o.useState(!1),[h,C]=o.useState([]),[I,D]=o.useState([]),[L,N]=o.useState(!1),[z,m]=o.useState([]),[b,M]=o.useState(!1),[F,A]=o.useState(null),[Y,q]=o.useState("22"),[re,l]=o.useState([]),[$,Q]=o.useState(""),J=async()=>{try{const s=await ye.getAccounts();t(s?.list||[])}catch(s){console.error("加载云账号失败:",s)}};o.useEffect(()=>{r&&(J(),$r(async()=>{const{credentialApi:s}=await import("./index-D1_Nt40_.js");return{credentialApi:s}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27])).then(({credentialApi:s})=>{s.list().then(T=>l(T?.list||[])).catch(()=>l([]))}))},[r]);const B=c.filter(s=>s.provider===u&&s.status==="active"),X=o.useCallback(async s=>{try{return(await ye.getAccountRegions(s))?.list||[]}catch{return[]}},[]),K=o.useCallback(async s=>{i(!0);try{await ye.syncRegions(s);const T=await X(s);E(T)}catch(T){throw console.error("同步区域失败:",T),T}finally{i(!1)}},[X]),P=o.useCallback(async()=>{if(!x)return;const s=await X(x.id);if(E(s),s.length===0)try{await K(x.id)}catch{}},[x,X,K]),me=o.useCallback(async()=>{if(!(!x||n.length===0)){N(!0),m([]),C([]),D([]);try{const s=await ye.discoverInstances(x.id,n);C(s?.list||[]),m(s?.errors||[])}catch(s){console.error("发现主机失败:",s),m([s?.message||"发现主机失败"])}finally{N(!1)}}},[x,n]),se=async()=>{if(!(!x||I.length===0)){M(!0);try{const s=h.filter(ae=>I.includes(ae.instance_id)),T=await ye.importInstances(x.id,s,{default_port:Number(Y)||22,credential_id:$?Number($):void 0});A(T||{imported:0,skipped:0})}catch(s){console.error("导入失败:",s)}finally{M(!1)}}},H=()=>{a===2&&x&&a<4?(v(3),P()):a<4&&v(a+1)},Se=()=>{a>1&&v(a-1)},Be=()=>{n.length===S.length&&S.length>0?y([]):y(S.map(s=>s.code))},Ve=s=>{D(T=>T.includes(s)?T.filter(ae=>ae!==s):[...T,s])},Pe=()=>{I.length===h.length&&h.length>0?D([]):D(h.map(s=>s.instance_id))},je=()=>{p(),v(1),g(""),_(null),y([]),E([]),C([]),D([]),R(""),m([]),A(null),q("22"),Q("")},oe=S.filter(s=>!f||s.name?.toLowerCase().includes(f.toLowerCase())||s.code?.toLowerCase().includes(f.toLowerCase())),ve=[{id:1,title:"公有云",icon:Nr},{id:2,title:"访问凭据",icon:Le},{id:3,title:"选择区域",icon:We},{id:4,title:"导入确认",icon:cr}];return e.jsx(Te,{"code-path":"src/components/server/CloudServerImport.tsx:232:5",open:r,onOpenChange:je,children:e.jsxs(_e,{"code-path":"src/components/server/CloudServerImport.tsx:233:7",className:"max-w-3xl bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:[e.jsxs(Ke,{"code-path":"src/components/server/CloudServerImport.tsx:234:9",children:[e.jsx(Re,{"code-path":"src/components/server/CloudServerImport.tsx:235:11",className:"text-xl",children:"导入云主机"}),e.jsx(Me,{"code-path":"src/components/server/CloudServerImport.tsx:236:11",className:"sr-only",children:"从云平台批量导入主机资产"})]}),e.jsx("div",{"code-path":"src/components/server/CloudServerImport.tsx:240:9",className:"flex items-center justify-center mb-6 flex-wrap gap-1",children:ve.map((s,T)=>e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:242:13",className:"flex items-center",children:[e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:243:15",className:`flex items-center gap-2 px-3 py-2 rounded-lg text-sm ${a===s.id?"bg-blue-600 text-white":a>s.id?"bg-emerald-600/20 text-emerald-400":"bg-[var(--dg-bg-secondary)] text-[var(--dg-text-muted)]"}`,children:[e.jsx(s.icon,{"code-path":"src/components/server/CloudServerImport.tsx:250:17",className:"h-4 w-4"}),e.jsx("span",{"code-path":"src/components/server/CloudServerImport.tsx:251:17",className:"font-medium hidden sm:inline",children:s.title}),a>s.id&&e.jsx(ue,{"code-path":"src/components/server/CloudServerImport.tsx:252:33",className:"h-3 w-3 ml-1"})]}),Te.jsx(Fe,{"code-path":"src/components/server/CloudServerImport.tsx:267:17",className:`cursor-pointer transition-all ${u===s.id?"border-blue-500 ring-2 ring-blue-500/30 bg-[var(--dg-bg-secondary)]":"border-[var(--dg-border)] hover:border-blue-500 bg-[var(--dg-bg-secondary)]"}`,onClick:()=>g(s.id),children:e.jsxs(ke,{"code-path":"src/components/server/CloudServerImport.tsx:276:19",className:"p-4 flex items-center gap-3",children:[e.jsx("div",{"code-path":"src/components/server/CloudServerImport.tsx:277:21",className:`w-10 h-10 rounded-lg ${s.color} flex items-center justify-center text-white font-bold text-sm`,children:s.icon}),e.jsx("span",{"code-path":"src/components/server/CloudServerImport.tsx:280:21",className:"font-medium text-[var(--dg-text-primary)]",children:s.name})]})},s.id))})]}),a===2&&e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:290:11",className:"space-y-4",children:[e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:291:13",className:"text-[var(--dg-text-secondary)] text-sm",children:"请选择访问凭据(AccessKey)"}),B.length>0?e.jsx("div",{"code-path":"src/components/server/CloudServerImport.tsx:293:15",className:"space-y-2 max-h-[300px] overflow-y-auto",children:B.map(s=>e.jsx(Fe,{"code-path":"src/components/server/CloudServerImport.tsx:295:19",className:`cursor-pointer transition-all ${x?.id===s.id?"border-blue-500 ring-1 ring-blue-500/30 bg-[var(--dg-bg-secondary)]":"border-[var(--dg-border)] hover:border-blue-500 bg-[var(--dg-bg-secondary)]"}`,onClick:()=>_(s),children:e.jsxs(ke,{"code-path":"src/components/server/CloudServerImport.tsx:304:21",className:"p-3 flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:305:23",className:"flex items-center gap-3",children:[e.jsx(Le,{"code-path":"src/components/server/CloudServerImport.tsx:306:25",className:"h-5 w-5 text-blue-400"}),e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:307:25",children:[e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:308:27",className:"font-medium text-[var(--dg-text-primary)]",children:s.name}),e.jsxs("p",{"code-path":"src/components/server/CloudServerImport.tsx:309:27",className:"text-xs text-[var(--dg-text-muted)]",children:[(s.access_key||s.accessKey||"******").slice(0,20),"..."]})]})]}),e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:314:23",className:"text-right",children:[e.jsxs(O,{"code-path":"src/components/server/CloudServerImport.tsx:315:25",className:"bg-emerald-500/20 text-emerald-400 border-0",children:[s.region_count??s.regionCount??0," 区域"]}),e.jsxs("p",{"code-path":"src/components/server/CloudServerImport.tsx:318:25",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:[s.server_count??s.serverCount??0," 服务器"]})]})]})},s.id))}):e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:325:15",className:"text-center py-8 text-[var(--dg-text-muted)]",children:[e.jsx(Le,{"code-path":"src/components/server/CloudServerImport.tsx:326:17",className:"h-12 w-12 mx-auto mb-3 opacity-50"}),e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:327:17",children:"该云平台暂无有效的访问凭据"})]})]}),a===3&&e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:335:11",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:336:13",className:"flex items-center justify-between",children:[e.jsxs("p",{"code-path":"src/components/server/CloudServerImport.tsx:337:15",className:"text-[var(--dg-text-secondary)] text-sm",children:["请选择要同步的区域",S.length>0&&e.jsxs("span",{"code-path":"src/components/server/CloudServerImport.tsx:340:19",className:"ml-2 text-[var(--dg-text-muted)]",children:["(共 ",S.length," 个区域,已选 ",n.length," 个)"]})]}),e.jsxs(j,{"code-path":"src/components/server/CloudServerImport.tsx:343:15",variant:"outline",size:"sm",className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",onClick:()=>x&&K(x.id),disabled:w,children:[e.jsx(de,{"code-path":"src/components/server/CloudServerImport.tsx:350:17",className:`h-3 w-3 mr-1 ${w?"animate-spin":""}`}),w?"同步中...":"刷新区域"]})]}),w?e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:356:15",className:"text-center py-12",children:[e.jsx(de,{"code-path":"src/components/server/CloudServerImport.tsx:357:17",className:"h-8 w-8 mx-auto mb-3 animate-spin text-blue-400"}),e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:358:17",className:"text-[var(--dg-text-secondary)]",children:"正在从云平台同步区域列表..."})]}):S.length===0?e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:361:15",className:"text-center py-8 text-[var(--dg-text-muted)]",children:[e.jsx(We,{"code-path":"src/components/server/CloudServerImport.tsx:362:17",className:"h-10 w-10 mx-auto mb-3 opacity-50"}),e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:363:17",children:"暂无区域数据"}),e.jsxs(j,{"code-path":"src/components/server/CloudServerImport.tsx:364:17",variant:"outline",size:"sm",className:"mt-3 border-[var(--dg-border)] text-blue-400",onClick:()=>x&&K(x.id),children:[e.jsx(de,{"code-path":"src/components/server/CloudServerImport.tsx:370:19",className:"h-3 w-3 mr-1"}),"立即同步"]})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:377:17",className:"flex items-center gap-2",children:[e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:378:19",className:"relative flex-1",children:[e.jsx(yr,{"code-path":"src/components/server/CloudServerImport.tsx:379:21",className:"h-4 w-4 absolute left-3 top-1/2 -translate-y-1/2 text-[var(--dg-text-muted)]"}),e.jsx(W,{"code-path":"src/components/server/CloudServerImport.tsx:380:21",placeholder:"搜索区域名称或编码...",value:f,onChange:s=>R(s.target.value),className:"pl-9 bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]"})]}),e.jsx(j,{"code-path":"src/components/server/CloudServerImport.tsx:387:19",variant:"outline",size:"sm",onClick:Be,className:"border-[var(--dg-border)]",children:n.length===S.length&&S.length>0?"取消全选":"全选"})]}),e.jsx("div",{"code-path":"src/components/server/CloudServerImport.tsx:393:17",className:"border rounded-lg border-[var(--dg-border)] overflow-hidden max-h-[300px] overflow-y-auto",children:e.jsxs("table",{"code-path":"src/components/server/CloudServerImport.tsx:394:19",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/server/CloudServerImport.tsx:395:21",className:"bg-[var(--dg-bg-secondary)] sticky top-0",children:e.jsxs("tr",{"code-path":"src/components/server/CloudServerImport.tsx:396:23",children:[e.jsx("th",{"code-path":"src/components/server/CloudServerImport.tsx:397:25",className:"px-3 py-2 text-left text-xs font-medium text-[var(--dg-text-secondary)] w-10",children:e.jsx(ge,{"code-path":"src/components/server/CloudServerImport.tsx:398:27",checked:n.length===S.length&&S.length>0,onCheckedChange:Be})}),e.jsx("th",{"code-path":"src/components/server/CloudServerImport.tsx:403:25",className:"px-3 py-2 text-left text-xs font-medium text-[var(--dg-text-secondary)]",children:"区域编码"}),e.jsx("th",{"code-path":"src/components/server/CloudServerImport.tsx:404:25",className:"px-3 py-2 text-left text-xs font-medium text-[var(--dg-text-secondary)]",children:"区域名称"}),e.jsx("th",{"code-path":"src/components/server/CloudServerImport.tsx:405:25",className:"px-3 py-2 text-left text-xs font-medium text-[var(--dg-text-secondary)]",children:"Endpoint"})]})}),e.jsx("tbody",{"code-path":"src/components/server/CloudServerImport.tsx:408:21",className:"divide-y divide-[var(--dg-border)]",children:oe.map(s=>e.jsxs("tr",{"code-path":"src/components/server/CloudServerImport.tsx:410:25",className:`cursor-pointer hover:bg-[var(--dg-bg-hover)] ${n.includes(s.code)?"bg-blue-500/10":""}`,onClick:()=>{y(T=>T.includes(s.code)?T.filter(ae=>ae!==s.code):[...T,s.code])},children:[e.jsx("td",{"code-path":"src/components/server/CloudServerImport.tsx:421:27",className:"px-3 py-2",children:e.jsx(ge,{"code-path":"src/components/server/CloudServerImport.tsx:422:29",checked:n.includes(s.code)})}),e.jsx("td",{"code-path":"src/components/server/CloudServerImport.tsx:424:27",className:"px-3 py-2 text-sm text-blue-400 font-mono",children:s.code}),e.jsx("td",{"code-path":"src/components/server/CloudServerImport.tsx:425:27",className:"px-3 py-2 text-sm text-[var(--dg-text-primary)]",children:s.name}),e.jsx("td",{"code-path":"src/components/server/CloudServerImport.tsx:426:27",className:"px-3 py-2 text-xs text-[var(--dg-text-muted)] font-mono truncate max-w-[200px]",children:s.endpoint||"-"})]},s.id||s.code))})]})})]})]}),a===4&&e.jsx("div",{"code-path":"src/components/server/CloudServerImport.tsx:439:11",className:"space-y-4",children:F?e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:442:15",className:"text-center py-12",children:[e.jsx(cr,{"code-path":"src/components/server/CloudServerImport.tsx:443:17",className:"h-12 w-12 mx-auto mb-3 text-emerald-400"}),e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:444:17",className:"text-lg font-medium text-[var(--dg-text-primary)]",children:"导入完成"}),e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:445:17",className:"flex items-center justify-center gap-6 mt-4",children:[e.jsxs(O,{"code-path":"src/components/server/CloudServerImport.tsx:446:19",className:"bg-emerald-500/20 text-emerald-400 border-0 text-base px-4 py-1",children:["成功导入 ",F.imported," 台"]}),F.skipped>0&&e.jsxs(O,{"code-path":"src/components/server/CloudServerImport.tsx:450:21",className:"bg-amber-500/20 text-amber-400 border-0 text-base px-4 py-1",children:["跳过 ",F.skipped," 台(已存在)"]})]})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:458:17",className:"flex items-center justify-between",children:[e.jsxs("p",{"code-path":"src/components/server/CloudServerImport.tsx:459:19",className:"text-[var(--dg-text-secondary)] text-sm",children:["已选 ",n.length," 个区域",h.length>0&&e.jsxs("span",{"code-path":"src/components/server/CloudServerImport.tsx:462:23",className:"ml-2",children:["· 发现 ",h.length," 台主机"]})]}),e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:465:19",className:"flex items-center gap-2",children:[h.length>0&&e.jsxs(e.Fragment,{children:[e.jsx(j,{"code-path":"src/components/server/CloudServerImport.tsx:468:25",variant:"outline",size:"sm",onClick:Pe,className:"border-[var(--dg-border)]",children:I.length===h.length&&h.length>0?"取消全选":"全选"}),e.jsxs(O,{"code-path":"src/components/server/CloudServerImport.tsx:471:25",className:"bg-blue-500/20 text-blue-400 border-0",children:["已选 ",I.length," 台"]})]}),e.jsxs(j,{"code-path":"src/components/server/CloudServerImport.tsx:476:21",variant:"outline",size:"sm",onClick:me,disabled:L||n.length===0,className:"border-[var(--dg-border)] text-blue-400",children:[e.jsx(de,{"code-path":"src/components/server/CloudServerImport.tsx:483:23",className:`h-3 w-3 mr-1 ${L?"animate-spin":""}`}),L?"发现中...":h.length>0?"重新发现":"发现主机"]})]})]}),e.jsx("div",{"code-path":"src/components/server/CloudServerImport.tsx:490:17",className:"flex flex-wrap gap-1",children:n.map(s=>{const T=S.find(ae=>ae.code===s);return e.jsxs(O,{"code-path":"src/components/server/CloudServerImport.tsx:494:23",className:"bg-[var(--dg-bg-secondary)] text-[var(--dg-text-muted)] border border-[var(--dg-border)] text-xs",children:[e.jsx(We,{"code-path":"src/components/server/CloudServerImport.tsx:495:25",className:"h-3 w-3 mr-1"}),T?.name||s]},s)})}),z.length>0&&e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:504:19",className:"flex items-start gap-2 p-3 rounded-lg bg-amber-500/10 border border-amber-500/30 text-amber-400 text-sm",children:[e.jsx(ze,{"code-path":"src/components/server/CloudServerImport.tsx:505:21",className:"h-4 w-4 mt-0.5 flex-shrink-0"}),e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:506:21",children:[e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:507:23",className:"font-medium",children:"部分区域发现失败:"}),z.map((s,T)=>e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:509:25",className:"text-xs mt-1 opacity-80",children:s},T))]})]}),L?e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:517:19",className:"text-center py-12",children:[e.jsx(de,{"code-path":"src/components/server/CloudServerImport.tsx:518:21",className:"h-8 w-8 mx-auto mb-3 animate-spin text-blue-400"}),e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:519:21",className:"text-[var(--dg-text-secondary)]",children:"正在发现云主机,请稍候..."}),e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:520:21",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:"正在逐区域查询,可能需要数秒"})]}):h.length===0&&!L?e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:523:19",className:"text-center py-8 text-[var(--dg-text-muted)]",children:[e.jsx(He,{"code-path":"src/components/server/CloudServerImport.tsx:524:21",className:"h-10 w-10 mx-auto mb-3 opacity-50"}),e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:525:21",children:'点击"发现主机"按钮,开始扫描所选区域'})]}):e.jsx("div",{"code-path":"src/components/server/CloudServerImport.tsx:528:19",className:"border rounded-lg border-[var(--dg-border)] overflow-hidden max-h-[300px] overflow-y-auto",children:e.jsxs("table",{"code-path":"src/components/server/CloudServerImport.tsx:529:21",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/server/CloudServerImport.tsx:530:23",className:"bg-[var(--dg-bg-secondary)] sticky top-0",children:e.jsxs("tr",{"code-path":"src/components/server/CloudServerImport.tsx:531:25",children:[e.jsx("th",{"code-path":"src/components/server/CloudServerImport.tsx:532:27",className:"px-3 py-2 text-left text-xs font-medium text-[var(--dg-text-secondary)] w-10",children:e.jsx(ge,{"code-path":"src/components/server/CloudServerImport.tsx:533:29",checked:I.length===h.length&&h.length>0,onCheckedChange:Pe})}),e.jsx("th",{"code-path":"src/components/server/CloudServerImport.tsx:538:27",className:"px-3 py-2 text-left text-xs font-medium text-[var(--dg-text-secondary)]",children:"主机名"}),e.jsx("th",{"code-path":"src/components/server/CloudServerImport.tsx:539:27",className:"px-3 py-2 text-left text-xs font-medium text-[var(--dg-text-secondary)]",children:"IP地址"})]})}),e.jsx("tbody",{"code-path":"src/components/server/CloudServerImport.tsx:542:23",className:"divide-y divide-[var(--dg-border)]",children:h.map(s=>e.jsxs("tr",{"code-path":"src/components/server/CloudServerImport.tsx:544:27",className:`cursor-pointer hover:bg-[var(--dg-bg-hover)] ${I.includes(s.instance_id)?"bg-blue-500/10":""}`,onClick:()=>Ve(s.instance_id),children:[e.jsx("td",{"code-path":"src/components/server/CloudServerImport.tsx:549:29",className:"px-3 py-2",children:e.jsx(ge,{"code-path":"src/components/server/CloudServerImport.tsx:550:31",checked:I.includes(s.instance_id)})}),e.jsx("td",{"code-path":"src/components/server/CloudServerImport.tsx:552:29",className:"px-3 py-2 text-sm text-[var(--dg-text-primary)]",children:s.instance_name||s.hostname||"-"}),e.jsx("td",{"code-path":"src/components/server/CloudServerImport.tsx:553:29",className:"px-3 py-2 text-sm text-[var(--dg-text-secondary)]",children:s.private_ip||s.public_ip||"-"})]},s.instance_id))})]})}),h.length>0&&I.length>0&&e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:565:19",className:"grid grid-cols-2 gap-4 p-4 rounded-lg bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:566:21",children:[e.jsxs("label",{"code-path":"src/components/server/CloudServerImport.tsx:567:23",className:"block text-xs font-medium text-[var(--dg-text-secondary)] mb-1",children:["SSH 端口",e.jsx("span",{"code-path":"src/components/server/CloudServerImport.tsx:569:25",className:"text-[var(--dg-text-muted)] ml-1",children:"(导入时统一设置)"})]}),e.jsx(W,{"code-path":"src/components/server/CloudServerImport.tsx:571:23",type:"number",placeholder:"22",value:Y,onChange:s=>q(s.target.value),className:"w-32 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:579:21",children:[e.jsxs("label",{"code-path":"src/components/server/CloudServerImport.tsx:580:23",className:"block text-xs font-medium text-[var(--dg-text-secondary)] mb-1",children:["关联凭证",e.jsx("span",{"code-path":"src/components/server/CloudServerImport.tsx:582:25",className:"text-[var(--dg-text-muted)] ml-1",children:"(可选,用于SSH远程管理)"})]}),e.jsxs("select",{"code-path":"src/components/server/CloudServerImport.tsx:584:23",value:$,onChange:s=>Q(s.target.value),className:"w-full px-3 py-1.5 bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] rounded-md text-[var(--dg-text-primary)] text-xs",children:[e.jsx("option",{"code-path":"src/components/server/CloudServerImport.tsx:589:25",value:"",children:"不使用凭据"}),re.map(s=>e.jsxs("option",{"code-path":"src/components/server/CloudServerImport.tsx:591:27",value:String(s.id),children:[s.type==="ssh_key"?"🔑":"🔒"," ",s.name]},s.id))]})]})]})]})}),e.jsxs(Qe,{"code-path":"src/components/server/CloudServerImport.tsx:605:9",className:"flex justify-between items-center",children:[e.jsx("div",{"code-path":"src/components/server/CloudServerImport.tsx:606:11",children:a>1&&!F&&e.jsxs(j,{"code-path":"src/components/server/CloudServerImport.tsx:608:15",variant:"outline",onClick:Se,className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",children:[e.jsx(Xe,{"code-path":"src/components/server/CloudServerImport.tsx:609:17",className:"h-4 w-4 mr-1"}),"上一步"]})}),e.jsx("div",{"code-path":"src/components/server/CloudServerImport.tsx:614:11",className:"flex gap-2",children:F?e.jsx(j,{"code-path":"src/components/server/CloudServerImport.tsx:616:15",onClick:je,className:"bg-blue-600 hover:bg-blue-700",children:"完成"}):e.jsxs(e.Fragment,{children:[e.jsx(j,{"code-path":"src/components/server/CloudServerImport.tsx:621:17",variant:"outline",onClick:je,className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",children:"取消"}),a<4?e.jsxs(j,{"code-path":"src/components/server/CloudServerImport.tsx:625:19",onClick:H,disabled:a===1&&!u||a===2&&!x||a===3&&n.length===0,className:"bg-blue-600 hover:bg-blue-700",children:["下一步",e.jsx(Ee,{"code-path":"src/components/server/CloudServerImport.tsx:635:21",className:"h-4 w-4 ml-1"})]}):e.jsx(j,{"code-path":"src/components/server/CloudServerImport.tsx:638:19",onClick:se,disabled:I.length===0||b,className:"bg-emerald-600 hover:bg-emerald-700",children:b?e.jsxs(e.Fragment,{children:[e.jsx(de,{"code-path":"src/components/server/CloudServerImport.tsx:645:25",className:"h-4 w-4 mr-1 animate-spin"}),"导入中..."]}):e.jsxs(e.Fragment,{children:[e.jsx(ue,{"code-path":"src/components/server/CloudServerImport.tsx:650:25",className:"h-4 w-4 mr-1"}),"确认导入 (",I.length,")"]})})]})})]})]})})}function ys({open:r,onOpenChange:p,serverId:c,serverName:t,serverIp:a,hasAuth:v=!0}){const u=o.useRef(null),g=o.useRef(null),x=o.useRef(null),_=o.useRef(null),[S,E]=o.useState(!1),[n,y]=o.useState(!1),[f,R]=o.useState([]),[w,i]=o.useState(""),[h,C]=o.useState(!1),[I,D]=o.useState(v);o.useEffect(()=>{!r||v||rr.list().then(N=>R(N?.list||[])).catch(()=>{})},[r,v]);const L=async()=>{if(!(!w||!c))try{C(!0),await hs.assign(c,Number(w)),G.success("凭据已关联"),D(!0)}catch(N){G.error(N?.message||"关联失败")}finally{C(!1)}};return o.useEffect(()=>{r||(D(v),i(""))},[r,v]),o.useEffect(()=>{if(!r||!c||!I)return;const N=new ps.Terminal({cursorBlink:!0,fontSize:13,fontFamily:'Menlo, Monaco, "Courier New", monospace',allowProposedApi:!0,theme:{background:"#0a0e14",foreground:"#d6d6d6",cursor:"#d6d6d6",selectionBackground:"rgba(255,255,255,0.2)"}}),z=new ms.FitAddon;N.loadAddon(z),g.current=N,_.current=z;const m=location.protocol==="https:"?"wss":"ws",b=vr.getState().token||"",M=`${m}://${location.host}/ws/terminal?id=${c}&cols=80&rows=24&token=${encodeURIComponent(b)}`,F=new WebSocket(M);return x.current=F,N.onData(A=>{F.readyState===WebSocket.OPEN&&F.send(JSON.stringify({status:0,data:A}))}),F.onmessage=A=>{try{const Y=JSON.parse(A.data);Y.status===0&&typeof Y.data=="string"&&N.write(Y.data)}catch{N.write(typeof A.data=="string"?A.data:"")}},F.onopen=()=>{E(!0),xs(N,z,()=>u.current,F)},F.onclose=()=>{E(!1),N.write(`\r \x1B[31m[连接已关闭]\x1B[0m\r `)},F.onerror=()=>{N.write(`\r \x1B[31m[连接发生错误]\x1B[0m\r `)},()=>{try{F.close(),N.dispose()}catch{}g.current=null,x.current=null,E(!1)}},[r,c,I]),o.useEffect(()=>{if(!r||!I)return;let N,z=0;const m=()=>{const b=u.current,M=_.current,F=g.current,A=x.current;if(!b||!M||!F){z++<30&&requestAnimationFrame(m);return}N=is(b,M,F,A);try{vs(M,F,A)}catch{}};return m(),()=>N?.()},[r,I,n]),e.jsx(Te,{"code-path":"src/components/server/TerminalDialog.tsx:184:5",open:r,onOpenChange:p,children:e.jsxs(_e,{"code-path":"src/components/server/TerminalDialog.tsx:185:7",showCloseButton:!1,className:ie("bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] p-0 gap-0","!duration-0 !transition-none",n?"!max-w-none !w-screen !h-screen !rounded-none !translate-x-0 !translate-y-0 !left-0 !top-0":""),style:n?{maxWidth:"100vw",width:"100vw",height:"100vh"}:{maxWidth:"960px",width:"92vw"},children:[e.jsxs(Re,{"code-path":"src/components/server/TerminalDialog.tsx:197:9",className:"sr-only",children:["终端 - ",t]}),e.jsx(Me,{"code-path":"src/components/server/TerminalDialog.tsx:198:9",className:"sr-only",children:"SSH 终端连接"}),e.jsxs("div",{"code-path":"src/components/server/TerminalDialog.tsx:200:9",className:"flex items-center justify-between px-4 py-2 border-b border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/server/TerminalDialog.tsx:201:11",className:"flex items-center gap-2 text-sm",children:[e.jsx("div",{"code-path":"src/components/server/TerminalDialog.tsx:202:13",className:ie("w-2 h-2 rounded-full",S?"bg-emerald-400":"bg-red-400")}),e.jsx("span",{"code-path":"src/components/server/TerminalDialog.tsx:203:13",className:"text-[var(--dg-text-primary)] font-medium",children:t}),e.jsxs("span",{"code-path":"src/components/server/TerminalDialog.tsx:204:13",className:"text-[var(--dg-text-muted)]",children:["(",a,")"]})]}),e.jsxs("div",{"code-path":"src/components/server/TerminalDialog.tsx:206:11",className:"flex items-center gap-1",children:[e.jsx("button",{"code-path":"src/components/server/TerminalDialog.tsx:207:13",onClick:()=>y(!n),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",children:n?e.jsx(fr,{"code-path":"src/components/server/TerminalDialog.tsx:211:29",className:"h-4 w-4"}):e.jsx(wr,{"code-path":"src/components/server/TerminalDialog.tsx:211:65",className:"h-4 w-4"})}),e.jsx("button",{"code-path":"src/components/server/TerminalDialog.tsx:213:13",onClick:()=>p(!1),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",children:e.jsx(be,{"code-path":"src/components/server/TerminalDialog.tsx:217:15",className:"h-4 w-4"})})]})]}),!I&&e.jsxs("div",{"code-path":"src/components/server/TerminalDialog.tsx:223:11",className:"p-6 flex flex-col items-center justify-center gap-4",style:{height:"480px"},children:[e.jsx(Cr,{"code-path":"src/components/server/TerminalDialog.tsx:224:13",className:"h-12 w-12 text-amber-400"}),e.jsxs("div",{"code-path":"src/components/server/TerminalDialog.tsx:225:13",className:"text-center",children:[e.jsx("p",{"code-path":"src/components/server/TerminalDialog.tsx:226:15",className:"text-[var(--dg-text-primary)] font-medium mb-1",children:"服务器未配置认证凭据"}),e.jsx("p",{"code-path":"src/components/server/TerminalDialog.tsx:227:15",className:"text-sm text-[var(--dg-text-muted)]",children:"请选择一个凭据用于 SSH 连接"})]}),f.length===0?e.jsx("p",{"code-path":"src/components/server/TerminalDialog.tsx:230:15",className:"text-xs text-[var(--dg-text-muted)]",children:"暂无可用凭据,请先去「凭证配置」添加"}):e.jsxs("select",{"code-path":"src/components/server/TerminalDialog.tsx:232:15",value:w,onChange:N=>i(N.target.value),className:"w-64 px-3 py-2 bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] rounded-md text-[var(--dg-text-primary)] text-sm",children:[e.jsx("option",{"code-path":"src/components/server/TerminalDialog.tsx:237:17",value:"",children:"-- 选择凭据 --"}),f.map(N=>e.jsxs("option",{"code-path":"src/components/server/TerminalDialog.tsx:239:19",value:String(N.id),children:[N.type==="ssh_key"?"🔑":"🔒"," ",N.name]},N.id))]}),e.jsx(j,{"code-path":"src/components/server/TerminalDialog.tsx:245:13",onClick:L,disabled:!w||h,className:"bg-[var(--dg-blue)] hover:opacity-90 text-white",children:h?"关联中...":"确认连接"})]}),I&&e.jsx("div",{"code-path":"src/components/server/TerminalDialog.tsx:256:11",ref:u,className:"xterm-terminal-host",style:{height:n?"calc(100vh - 49px)":"520px"}})]})})}const fs=r=>r<1024?`${r} B`:r<1048576?`${(r/1024).toFixed(1)} KB`:`${(r/1048576).toFixed(2)} MB`;function ws({open:r,onOpenChange:p,serverId:c,serverName:t}){const[a,v]=o.useState([]),[u,g]=o.useState([]),[x,_]=o.useState("/"),[S,E]=o.useState(!1),[n,y]=o.useState(""),[f,R]=o.useState(!1),[w,i]=o.useState(!1),h=o.useRef(null),C=o.useCallback(async m=>{if(c){E(!0),y("");try{const b=await ee.listFiles(c,m),M=b?.data||b;v(M.items||[]),g(M.breadcrumbs||[]),_(M.path||m)}catch(b){y(b?.message||"加载目录失败"),v([])}finally{E(!1)}}},[c]);o.useEffect(()=>{r&&c&&(i(!1),C("/"))},[r,c,C]);const I=async m=>{if(c)try{await ee.downloadFile(c,m)}catch(b){y("下载失败: "+(b?.message||""))}},D=async m=>{const b=m.target.files?.[0];if(!(!b||!c)){R(!0);try{await ee.uploadFile(c,x,b),await C(x)}catch(M){y(M?.message||"上传失败")}finally{R(!1),h.current&&(h.current.value="")}}},L=async(m,b)=>{if(!(!c||!confirm(`确认删除 ${b?"目录":"文件"} "${m}"?`)))try{await ee.deleteFile(c,m),await C(x)}catch(M){y(M?.message||"删除失败")}},N=async()=>{const m=prompt("输入目录名:");if(!m||!c)return;const b=x==="/"?`/${m}`:`${x}/${m}`;try{await ee.mkdir(c,b),await C(x)}catch(M){y(M?.message||"创建失败")}},z=[...a].sort((m,b)=>m.is_dir!==b.is_dir?m.is_dir?-1:1:m.name.localeCompare(b.name));return e.jsx(Te,{"code-path":"src/components/server/ServerFileBrowser.tsx:145:5",open:r,onOpenChange:p,children:e.jsxs(_e,{"code-path":"src/components/server/ServerFileBrowser.tsx:146:7",showCloseButton:!1,onInteractOutside:m=>{f&&m.preventDefault()},className:ie("bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] p-0 gap-0","!duration-0 !transition-none",w?"!max-w-none !w-screen !h-screen !rounded-none":""),style:w?{maxWidth:"100vw",width:"100vw",height:"100vh"}:{maxWidth:"95vw",width:"1100px",maxHeight:"92vh"},children:[e.jsxs(Re,{"code-path":"src/components/server/ServerFileBrowser.tsx:164:9",className:"sr-only",children:["文件浏览 — ",t]}),e.jsx(Me,{"code-path":"src/components/server/ServerFileBrowser.tsx:165:9",className:"sr-only",children:"SFTP 文件管理 · 上传 · 下载 · 删除"}),e.jsxs("div",{"code-path":"src/components/server/ServerFileBrowser.tsx:168:9",className:"flex items-center justify-between px-4 py-2.5 border-b border-[var(--dg-border)] shrink-0",children:[e.jsxs("div",{"code-path":"src/components/server/ServerFileBrowser.tsx:169:11",className:"flex items-center gap-2 min-w-0",children:[e.jsx(Ir,{"code-path":"src/components/server/ServerFileBrowser.tsx:170:13",className:"h-4 w-4 text-[var(--dg-blue)] shrink-0"}),e.jsx("span",{"code-path":"src/components/server/ServerFileBrowser.tsx:171:13",className:"text-[var(--dg-text-primary)] font-medium text-sm truncate",children:t}),e.jsx("span",{"code-path":"src/components/server/ServerFileBrowser.tsx:174:13",className:"text-[var(--dg-text-muted)] text-xs",children:"· SFTP 文件管理"})]}),e.jsxs("div",{"code-path":"src/components/server/ServerFileBrowser.tsx:176:11",className:"flex items-center gap-1",children:[e.jsx("button",{"code-path":"src/components/server/ServerFileBrowser.tsx:177:13",onClick:()=>i(!w),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",title:w?"退出全屏":"全屏",children:w?e.jsx(fr,{"code-path":"src/components/server/ServerFileBrowser.tsx:182:29",className:"h-4 w-4"}):e.jsx(wr,{"code-path":"src/components/server/ServerFileBrowser.tsx:182:65",className:"h-4 w-4"})}),e.jsx("button",{"code-path":"src/components/server/ServerFileBrowser.tsx:184:13",onClick:()=>p(!1),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",children:e.jsx(be,{"code-path":"src/components/server/ServerFileBrowser.tsx:188:15",className:"h-4 w-4"})})]})]}),e.jsxs("div",{"code-path":"src/components/server/ServerFileBrowser.tsx:194:9",className:"flex items-center gap-2 px-4 py-2 border-b border-[var(--dg-border)] bg-[var(--dg-bg-primary)] shrink-0",children:[e.jsxs(j,{"code-path":"src/components/server/ServerFileBrowser.tsx:195:11",variant:"outline",size:"sm",className:"border-[var(--dg-border)] h-8",onClick:()=>C(x),children:[e.jsx(de,{"code-path":"src/components/server/ServerFileBrowser.tsx:197:13",className:"h-3.5 w-3.5 mr-1"}),"刷新"]}),e.jsxs("label",{"code-path":"src/components/server/ServerFileBrowser.tsx:199:11",children:[e.jsxs(j,{"code-path":"src/components/server/ServerFileBrowser.tsx:200:13",variant:"outline",size:"sm",className:"border-[var(--dg-border)] h-8 cursor-pointer",onClick:()=>h.current?.click(),disabled:f,children:[f?e.jsx(Ue,{"code-path":"src/components/server/ServerFileBrowser.tsx:202:28",className:"h-3.5 w-3.5 mr-1 animate-spin"}):e.jsx(Ye,{"code-path":"src/components/server/ServerFileBrowser.tsx:202:84",className:"h-3.5 w-3.5 mr-1"}),"上传"]}),e.jsx("input",{"code-path":"src/components/server/ServerFileBrowser.tsx:205:13",ref:h,type:"file",className:"hidden",onChange:D})]}),e.jsxs(j,{"code-path":"src/components/server/ServerFileBrowser.tsx:207:11",variant:"outline",size:"sm",className:"border-[var(--dg-border)] h-8",onClick:N,children:[e.jsx(Zr,{"code-path":"src/components/server/ServerFileBrowser.tsx:209:13",className:"h-3.5 w-3.5 mr-1"}),"新建目录"]}),n&&e.jsxs(O,{"code-path":"src/components/server/ServerFileBrowser.tsx:212:13",variant:"outline",className:"border-red-500/30 text-red-400 ml-auto",children:[e.jsx(be,{"code-path":"src/components/server/ServerFileBrowser.tsx:213:15",className:"h-3 w-3 mr-1 cursor-pointer",onClick:()=>y("")}),n]})]}),e.jsx("div",{"code-path":"src/components/server/ServerFileBrowser.tsx:220:9",className:"flex items-center gap-0.5 px-4 py-2 text-xs border-b border-[var(--dg-border)] bg-[var(--dg-bg-tertiary)] overflow-x-auto shrink-0",children:u.map((m,b)=>e.jsxs("span",{"code-path":"src/components/server/ServerFileBrowser.tsx:222:13",className:"flex items-center gap-0.5",children:[b===0?e.jsx("button",{"code-path":"src/components/server/ServerFileBrowser.tsx:224:17",onClick:()=>C("/"),className:"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)] p-0.5",children:e.jsx(es,{"code-path":"src/components/server/ServerFileBrowser.tsx:228:19",className:"h-3.5 w-3.5"})}):e.jsx("button",{"code-path":"src/components/server/ServerFileBrowser.tsx:231:17",onClick:()=>C(m.path),className:"text-[var(--dg-blue)] hover:underline truncate max-w-[150px]",children:m.name}),b