@vantaloom/runtime-win32-x64 0.5.1 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/VERSION +1 -1
- package/bin/vantaloom-agent.exe +0 -0
- package/bin/vantaloom-api.exe +0 -0
- package/bin/vantaloom-mesh.exe +0 -0
- package/bin/vantaloom-tray.exe +0 -0
- package/bin/vantaloomctl.exe +0 -0
- package/cli/package.json +1 -1
- package/manifest.json +2 -2
- package/package.json +1 -1
- package/web/404.html +1 -1
- package/web/__next.__PAGE__.txt +2 -2
- package/web/__next._full.txt +2 -2
- package/web/__next._head.txt +1 -1
- package/web/__next._index.txt +1 -1
- package/web/__next._tree.txt +1 -1
- package/web/_next/static/chunks/{80b4a364458ec11d.js → bbe145d7501ef997.js} +1 -1
- package/web/_not-found/__next._full.txt +1 -1
- package/web/_not-found/__next._head.txt +1 -1
- package/web/_not-found/__next._index.txt +1 -1
- package/web/_not-found/__next._not-found/__PAGE__.txt +1 -1
- package/web/_not-found/__next._not-found.txt +1 -1
- package/web/_not-found/__next._tree.txt +1 -1
- package/web/_not-found.html +1 -1
- package/web/_not-found.txt +1 -1
- package/web/index.html +1 -1
- package/web/index.txt +2 -2
- /package/web/_next/static/{1nS86NCCueT0DPdtcRvFo → zCiuUgoktsx7kVflSdni3}/_buildManifest.js +0 -0
- /package/web/_next/static/{1nS86NCCueT0DPdtcRvFo → zCiuUgoktsx7kVflSdni3}/_clientMiddlewareManifest.json +0 -0
- /package/web/_next/static/{1nS86NCCueT0DPdtcRvFo → zCiuUgoktsx7kVflSdni3}/_ssgManifest.js +0 -0
|
@@ -49,4 +49,4 @@ ${e.detail}`:e.title,isStreaming:e.isStreaming})})}):("read"===e.kind||"search"=
|
|
|
49
49
|
border-radius: 9999px;
|
|
50
50
|
background-clip: content-box;
|
|
51
51
|
}
|
|
52
|
-
</style>`,/<\/head>/i.test(t)?t.replace(/<\/head>/i,`${n}</head>`):`${n}${t}`},[r,t]);return(0,ev.jsx)("iframe",{title:e,sandbox:"allow-scripts",srcDoc:i,className:tK("size-full border-0 bg-background",n)})}function QW({file:e,value:t,labels:n}){let r=ey.useMemo(()=>{let n=e.bytes??(t?new TextEncoder().encode(t):[]),r=Math.min(n.length,4096),i=[];for(let e=0;e<r;e+=16){let t=Array.from({length:Math.min(16,r-e)},(t,r)=>n[e+r]??0);i.push({offset:e.toString(16).padStart(8,"0"),hex:t.map(e=>e.toString(16).padStart(2,"0")).join(" "),ascii:t.map(e=>e>=32&&e<=126?String.fromCharCode(e):".").join("")})}return i},[e.bytes,t]);return 0===r.length?(0,ev.jsx)("div",{className:"ui-text-body grid size-full place-items-center p-6 text-center text-muted-foreground",children:n.noContent}):(0,ev.jsx)("div",{className:"size-full overflow-auto bg-background p-3 ui-text-code",children:(0,ev.jsx)("div",{className:"grid min-w-max grid-cols-[5.5rem_30rem_1fr] gap-x-4",children:r.map(e=>(0,ev.jsxs)(ey.Fragment,{children:[(0,ev.jsx)("span",{className:"text-muted-foreground",children:e.offset}),(0,ev.jsx)("span",{className:"font-mono text-foreground",children:e.hex}),(0,ev.jsx)("span",{className:"font-mono text-muted-foreground",children:e.ascii})]},e.offset))})})}function QU({file:e,labels:t,onApprove:n}){return(0,ev.jsx)("div",{className:"grid size-full place-items-center bg-muted/20 p-6",children:(0,ev.jsxs)("div",{className:"grid max-w-md justify-items-center gap-3 text-center",children:[(0,ev.jsx)("div",{className:"grid size-10 place-items-center rounded-full border bg-background text-muted-foreground",children:(0,ev.jsx)(QE,{className:"size-4"})}),(0,ev.jsxs)("div",{className:"grid gap-1",children:[(0,ev.jsx)("h3",{className:"ui-text-body font-medium text-foreground",children:t.binaryTitle}),(0,ev.jsx)("p",{className:"ui-text-body text-muted-foreground",children:t.binaryDescription})]}),(0,ev.jsxs)("div",{className:"flex items-center gap-2",children:[QR(e.size)&&(0,ev.jsx)(cC,{variant:"outline",children:QR(e.size)}),(0,ev.jsx)(tY,{type:"button",size:"sm",variant:"outline",onClick:n,children:t.renderAnyway})]})]})})}function Qq({labels:e}){return(0,ev.jsx)("div",{className:"ui-text-body grid size-full place-items-center p-6 text-center text-muted-foreground",children:e.unsupportedPreview})}function QK({file:e,value:t,labels:n,renderPreview:r,className:i}){let a=QD(e),o=e.src?e.src:t&&"svg"===QD(e)?`data:image/svg+xml;charset=utf-8,${encodeURIComponent(t)}`:void 0,l=r?.(e,t);return void 0!==l?(0,ev.jsx)("div",{"data-slot":"file-tab-custom-preview",className:tK("size-full",i),children:l}):"html"===a||"richtext"===a?(0,ev.jsx)(QH,{title:e.name,value:e.previewContent??t,className:i}):"markdown"===a?(0,ev.jsx)("div",{"data-slot":"file-tab-markdown-preview",className:tK("size-full overflow-auto bg-background",i),children:(0,ev.jsx)(QV,{value:t})}):"svg"===a&&o?(0,ev.jsx)("div",{"data-slot":"file-tab-svg-preview",className:tK("grid size-full place-items-center overflow-auto bg-muted/20 p-6",i),children:(0,ev.jsx)("img",{src:o,alt:e.name,className:"max-h-full max-w-full rounded-lg border bg-background p-4"})}):"image"===a&&o?(0,ev.jsx)("div",{"data-slot":"file-tab-image-preview",className:tK("grid size-full place-items-center overflow-auto bg-muted/20 p-6",i),children:(0,ev.jsx)("img",{src:o,alt:e.name,className:"max-h-full max-w-full rounded-md"})}):"video"===a&&o?(0,ev.jsx)("div",{"data-slot":"file-tab-video-preview",className:tK("grid size-full place-items-center bg-muted/20 p-6",i),children:(0,ev.jsx)("video",{src:o,controls:!0,preload:"none",className:"max-h-full max-w-full rounded-md border bg-background"})}):(0,ev.jsx)(Qq,{labels:n})}function QG({open:e,labels:t,currentView:n,currentMode:r,saving:i,modified:a,canSwitchView:o,canSwitchMode:l,canSave:s,canOpenHistory:c,onOpenChange:d,onToggleView:u,onToggleMode:f,onSave:h,onHistory:p}){let m=[o?{key:"view",label:"code"===n?t.preview:t.code,onClick:u,icon:"code"===n?(0,ev.jsx)(Yx,{className:"size-4"}):(0,ev.jsx)(xy,{className:"size-4"})}:void 0,l?{key:"mode",label:"review"===r?t.edit:t.review,onClick:f,icon:"review"===r?(0,ev.jsx)(QO,{className:"size-4"}):(0,ev.jsx)(eC,{className:"size-4"})}:void 0,s?{key:"save",label:i?t.saving:t.save,onClick:h,disabled:i||!a,icon:(0,ev.jsx)(QA,{className:"size-4"})}:void 0,c?{key:"history",label:t.history,onClick:p,icon:(0,ev.jsx)(Wo,{className:"size-4"})}:void 0].filter(e=>void 0!==e);return 0===m.length?null:(0,ev.jsx)("div",{"data-slot":"file-tab-floating-actions",className:"absolute right-3 bottom-3 z-20",children:(0,ev.jsxs)("div",{className:"relative size-8",children:[m.map((t,n)=>(0,ev.jsx)(tY,{type:"button",variant:"outline",size:"icon-sm","aria-label":t.label,disabled:t.disabled,onClick:()=>{t.disabled||t.onClick()},className:tK("absolute inset-0 rounded-full bg-background/95 shadow-md backdrop-blur transition-[opacity,transform] duration-150 ease-out",e?"pointer-events-auto opacity-100":"pointer-events-none translate-y-1 opacity-0",t.disabled&&"opacity-45"),style:{transform:e?`translateY(-${(n+1)*42}px)`:void 0},children:t.icon},t.key)),(0,ev.jsx)(tY,{type:"button",variant:"outline",size:"icon-sm","aria-label":t.actions,"aria-expanded":e,onClick:()=>d(!e),className:"absolute inset-0 rounded-full bg-background/95 shadow-md backdrop-blur",children:(0,ev.jsx)(sZ,{className:tK("size-4 transition-transform",e&&"rotate-90")})})]})})}function QY({file:e,value:t,defaultValue:n,onValueChange:r,mode:i,defaultMode:a="review",onModeChange:o,view:l,defaultView:s="code",onViewChange:c,modified:d=!1,onSave:u,onSaveError:f,largeBinaryThreshold:h=2097152,showHeader:p=!0,wrapLines:m=!1,renderPreview:g,onHistory:v,labels:x,className:y,editorClassName:b,previewClassName:w,headerClassName:j,...k}){var S;let N,C,M=ey.useMemo(()=>({...QI,...x}),[x]),[E,O]=ey.useState(n??e.content??""),[P,z]=ey.useState(a),[A,I]=ey.useState(s),[_,D]=ey.useState(!1),[T,R]=ey.useState(!1),[L,$]=ey.useState(!1),F=ey.useRef(null),B=t??E,V=i??P,H=(S=l??A,(N=QL(e)).includes(S)?S:N[0]),W=QD(e),U=QL(e).length>1,q=!e.readOnly&&["text","code","html","markdown","richtext","svg"].includes(QD(e)),K=!!u&&q&&"code"===H&&(d||L),G="review"===V||!0===e.readOnly,Y="binary"===(C=QD(e))||"image"!==C&&"video"!==C&&!!(e.size&&e.size>h&&!e.content),X=(e.path??e.name).split(/[\\/]+/).filter(Boolean),Z=QR(e.size??B.length);async function J(){if(u&&!L){$(!0);try{await u(B),R(!1)}catch(e){f?.(e)}finally{$(!1)}}}return ey.useEffect(()=>{void 0===t&&O(n??e.content??""),D(!1),R(!1)},[n,e,t]),ey.useEffect(()=>{if(T)return window.addEventListener("pointerdown",e),()=>window.removeEventListener("pointerdown",e);function e(e){let t=e.target;t instanceof Node&&F.current?.contains(t)||R(!1)}},[T]),(0,ev.jsxs)("div",{ref:F,"data-slot":"file-tab-viewer","data-mode":V,"data-view":H,className:tK("vtl-surface-panel relative grid min-h-0 overflow-hidden rounded-[var(--surface-panel-radius)] border",p?"grid-rows-[auto_minmax(0,1fr)]":"grid-rows-[minmax(0,1fr)]",y),...k,children:[p&&(0,ev.jsxs)("div",{"data-slot":"file-tab-viewer-header",className:tK("flex min-w-0 items-center gap-2 border-b bg-muted/35 px-3 py-2",j),children:[(0,ev.jsx)("span",{className:"grid size-5 shrink-0 place-items-center rounded-md border bg-background text-muted-foreground",children:"image"===W?(0,ev.jsx)(QP,{className:"size-3.5"}):"video"===W?(0,ev.jsx)(Qz,{className:"size-3.5"}):"binary"===W?(0,ev.jsx)(QE,{className:"size-3.5"}):(0,ev.jsx)(xS,{className:"size-3.5"})}),(0,ev.jsx)("div",{className:"flex min-w-0 flex-1 items-center gap-1.5 ui-text-kbd",children:X.map((e,t)=>(0,ev.jsxs)(ey.Fragment,{children:[t>0&&(0,ev.jsx)("span",{className:"text-muted-foreground",children:M.pathSeparator}),(0,ev.jsx)("span",{className:tK("truncate",t===X.length-1?"font-medium text-foreground":"text-muted-foreground"),children:e})]},`${e}-${t}`))}),(0,ev.jsxs)("div",{className:"hidden shrink-0 items-center gap-1.5 sm:flex",children:[Z&&(0,ev.jsx)(cC,{variant:"outline",children:Z}),q&&"code"===H&&(G?(0,ev.jsxs)(cC,{variant:"secondary",children:[(0,ev.jsx)(sG,{className:"size-3"}),M.review]}):(0,ev.jsxs)(cC,{variant:"outline",children:[(0,ev.jsx)(QO,{className:"size-3"}),M.edit]}))]})]}),(0,ev.jsx)("div",{"data-slot":"file-tab-viewer-body",className:"min-h-0 overflow-hidden",children:Y&&!_?(0,ev.jsx)(QU,{file:e,labels:M,onApprove:()=>D(!0)}):"preview"===H?(0,ev.jsx)(QK,{file:e,value:B,labels:M,renderPreview:g,className:w}):"hex"===H?(0,ev.jsx)(QW,{file:e,value:B,labels:M}):(0,ev.jsx)(QB,{file:e,value:B,readOnly:G,onValueChange:function(e){void 0===t&&O(e),r?.(e)},wrapLines:m,className:b})}),(0,ev.jsx)(QG,{open:T,labels:M,currentView:H,currentMode:V,saving:L,modified:d,canSwitchView:U,canSwitchMode:q&&"code"===H,canSave:K,canOpenHistory:!!(v&&e.path),onOpenChange:R,onToggleView:function(){var e;e="code"===H?"preview":"code",void 0===l&&I(e),c?.(e)},onToggleMode:function(){var e;e="review"===V?"edit":"review",void 0===i&&z(e),o?.(e)},onSave:J,onHistory:()=>{R(!1),v?.(e)}})]})}function QX(e,t){return e[Math.max(0,t-1)]?.id??e[0]?.id}function QZ(e){return"string"==typeof e||"number"==typeof e?String(e):void 0}function QJ(e,t,n){let r=[...e],i=r[t],a=r[n];return i&&a&&(r[t]=a,r[n]=i),r}function QQ({tabs:e,defaultTabs:t=[],activeTabId:n,defaultActiveTabId:r,onActiveTabChange:i,onTabsChange:a,onCreateTab:o,onCloseTab:l,onTabReorder:s,onTabDetach:c,onExternalTabDrop:d,createActions:u=[],tabActions:f=[],reorderable:h=!0,detachable:p=!1,externalDropTypes:m=[],createLabel:g="New tab",moreLabel:v="More tab actions",closeLabel:x="Close tab",scrollLeftLabel:y="Scroll tabs left",scrollRightLabel:b="Scroll tabs right",tabListLabel:w="Open tabs",emptyContent:j,renderContent:k,showContent:S=!0,className:N,tabListClassName:C,contentClassName:M}){let[E,O]=ey.useState(t),P=ey.useRef(null),z=ey.useRef(null),[A,I]=ey.useState(),[_,D]=ey.useState(void 0),T=ey.useRef(void 0),[R,L]=ey.useState(void 0),[$,F]=ey.useState(!1),B=ey.useRef(void 0),V=ey.useRef(void 0),H=ey.useRef(!1),[W,U]=ey.useState(!1),[q,K]=ey.useState(!1),[G,Y]=ey.useState(),X=e??E,Z=X.find(e=>!e.disabled),[J,Q]=ey.useState(r??Z?.id),ee=n??J,et=X.find(e=>e.id===ee&&!e.disabled)??Z;ey.useEffect(()=>{!et&&Z&&void 0===n&&Q(Z.id)},[et,n,Z]);let en=ey.useCallback(t=>{void 0===e&&O(t),a?.(t)},[a,e]),er=ey.useCallback(e=>{T.current=e,D(e)},[]),ei=ey.useCallback(()=>{let e=z.current,t=new Map;if(!e)return t;for(let n of e.querySelectorAll("[data-tab-id]")){let e=n.getBoundingClientRect(),r=n.dataset.tabId;r&&t.set(r,{left:e.left,top:e.top})}return t},[]),ea=ey.useCallback((e,t=!0)=>{t&&(V.current=ei()),B.current=e,L(e)},[ei]),eo=ey.useCallback(()=>{let e=z.current;if(!e){U(!1),K(!1);return}let t=e.scrollWidth-e.clientWidth;U(e.scrollLeft>1),K(e.scrollLeft<t-1)},[]);function el(e){let t=z.current;if(!t)return;let n=Math.max(.7*t.clientWidth,160);t.scrollLeft+="left"===e?-n:n,window.requestAnimationFrame(eo)}ey.useEffect(()=>{F(!0)},[]),ey.useEffect(()=>{eo();let e=z.current;if(!e)return;let t=new ResizeObserver(eo);return t.observe(e),window.addEventListener("resize",eo),()=>{t.disconnect(),window.removeEventListener("resize",eo)}},[X.length,eo]),ey.useLayoutEffect(()=>{let e=V.current,t=z.current;if(e&&t)for(let n of(V.current=void 0,t.querySelectorAll("[data-tab-id]"))){let t=n.dataset.tabId;if(!t)continue;let r=e.get(t);if(!r)continue;let i=n.getBoundingClientRect(),a=r.left-i.left,o=r.top-i.top;1>Math.abs(a)&&1>Math.abs(o)||n.animate([{transform:`translate(${a}px, ${o}px)`},{transform:"translate(0, 0)"}],{duration:150,easing:"cubic-bezier(0.2, 0, 0, 1)"})}},[R]);let es=ey.useCallback(e=>{let t=z.current;if(t)return Array.from(t.querySelectorAll("[data-tab-id]")).find(t=>t.dataset.tabId===e)},[]),ec=ey.useCallback((e,t)=>{let n=B.current??X,r=n.findIndex(t=>t.id===e.tabId);if(-1===r)return;let i=t-e.offsetX,a=i+e.width,o=t>=e.currentX,l=n[r+1],s=n[r-1];if(o&&l&&!l.disabled){let e=es(l.id),t=e?.getBoundingClientRect();t&&a>=t.left+.7*t.width&&ea(QJ(n,r,r+1));return}if(!o&&s&&!s.disabled){let e=es(s.id),t=e?.getBoundingClientRect();t&&i<=t.right-.7*t.width&&ea(QJ(n,r,r-1))}},[es,X,ea]);function ed(e){if(!d||0===m.length)return!1;let t=Array.from(e.dataTransfer.types);return m.some(e=>t.includes(e))}function eu(e){let t=z.current;if(!t)return{index:X.length,left:0};let n=t.getBoundingClientRect(),r=Array.from(t.querySelectorAll("[data-tab-id]"));if(0===r.length)return{index:0,left:t.scrollLeft+8};for(let[i,a]of r.entries()){let r=a.getBoundingClientRect();if(e.clientX<r.left+r.width/2)return{index:i,left:r.left-n.left+t.scrollLeft}}let i=r[r.length-1].getBoundingClientRect();return{index:r.length,left:i.right-n.left+t.scrollLeft}}ey.useEffect(()=>{if(_)return window.addEventListener("pointermove",e),window.addEventListener("pointerup",t,{once:!0}),()=>{window.removeEventListener("pointermove",e),window.removeEventListener("pointerup",t)};function e(e){let t=T.current;if(!t)return;let n=e.clientX-t.startX,r=e.clientY-t.startY,i=t.dragging||Math.abs(n)>4||Math.abs(r)>4;i&&(e.preventDefault(),ec(t,e.clientX)),er({...t,currentX:e.clientX,currentY:e.clientY,dragging:i})}function t(e){let t=T.current;if(t?.dragging){e.preventDefault(),H.current=!0;let r=X.find(e=>e.id===t.tabId),a=P.current?.getBoundingClientRect(),o=!!a&&(e.clientX<a.left||e.clientX>a.right||e.clientY<a.top||e.clientY>a.bottom);if(p&&c&&r&&o&&function(e,t){if(e.pinned)return!1;let r=X.findIndex(t=>t.id===e.id);if(c?.(e,{tabs:X,clientX:t.clientX,clientY:t.clientY,nativeEvent:t})===!1)return!1;let a=X.filter(t=>t.id!==e.id);if(en(a),e.id===ee){let e=QX(a,r);void 0===n&&Q(e),e&&i?.(e)}return!0}(r,e)){I(void 0),er(void 0),ea(void 0,!1);return}let l=B.current;l&&!(l.length===X.length&&l.every((e,t)=>e.id===X[t]?.id))&&(en(l),s?.(l))}I(void 0),er(void 0),ea(void 0,!1)}});let ef=et&&(k?.(et)??et.content??(0,ev.jsx)("div",{className:"grid min-h-44 place-items-center bg-muted/30 p-6 text-center text-muted-foreground",children:et.title})),eh=_?.dragging&&R?R:X,ep=_?.dragging?X.find(e=>e.id===_.tabId):void 0,em=_?.dragging&&ep&&$?(0,ob.createPortal)((0,ev.jsxs)("div",{"data-slot":"multi-tab-drag-preview","aria-hidden":"true",className:"pointer-events-none fixed z-[100] flex h-9 min-w-0 items-center gap-1 rounded-t-lg border border-border bg-background px-2.5 text-foreground shadow-lg",style:{left:_.currentX-_.offsetX,top:_.top,width:_.width},children:[ep.icon&&(0,ev.jsx)("span",{className:"grid size-4 shrink-0 place-items-center text-muted-foreground [&_svg]:size-3.5",children:ep.icon}),(0,ev.jsx)("span",{className:"truncate ui-text-control font-medium",children:ep.title}),ep.modified&&(0,ev.jsx)("span",{"aria-hidden":"true",className:"size-1.5 shrink-0 rounded-full bg-foreground/70"})]}),document.body):null;return(0,ev.jsxs)("div",{ref:P,"data-slot":"multi-tab-system",className:tK("vtl-surface-panel grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-[var(--surface-panel-radius)] border",N),children:[(0,ev.jsxs)("div",{className:"relative flex min-w-0 shrink-0 items-end gap-1 border-b bg-muted/35 px-1.5 pt-1.5",children:[W&&(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm","aria-label":y,onClick:()=>el("left"),className:"mb-1 shrink-0",children:(0,ev.jsx)(cw,{})}),(0,ev.jsxs)("div",{ref:z,role:"tablist","aria-label":w,"data-slot":"multi-tab-list",className:tK("relative flex min-w-0 flex-1 items-end overflow-x-auto [scrollbar-width:none] data-[overflow=both]:[mask-image:linear-gradient(90deg,transparent,black_24px,black_calc(100%-24px),transparent)] data-[overflow=left]:[mask-image:linear-gradient(90deg,transparent,black_24px)] data-[overflow=right]:[mask-image:linear-gradient(90deg,black_calc(100%-24px),transparent)] [&::-webkit-scrollbar]:hidden",C),"data-overflow":W&&q?"both":W?"left":q?"right":void 0,onScroll:eo,onDragOver:function(e){ed(e)&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="move",Y(eu(e)))},onDragLeave:function(e){if(!ed(e))return;let t=e.relatedTarget;t instanceof Node&&e.currentTarget.contains(t)||Y(void 0)},onDrop:function(e){if(!ed(e))return;e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="move";let t=eu(e);Y(void 0),d?.({tabs:X,insertIndex:t.index,nativeEvent:e})},children:[eh.map((e,t)=>{let r=e.id===et?.id,a=eh[t+1],o=_?.dragging&&A===e.id,s=!r&&!o&&void 0!==a&&a.id!==et?.id&&a.id!==A;return(0,ev.jsxs)(ey.Fragment,{children:[(0,ev.jsxs)("div",{onPointerDown:t=>(function(e,t){if(!h||e.disabled||0!==t.button)return;let n=t.currentTarget.getBoundingClientRect();I(e.id),ea(X,!1),er({tabId:e.id,startX:t.clientX,startY:t.clientY,offsetX:t.clientX-n.left,top:n.top,width:n.width,currentX:t.clientX,currentY:t.clientY,dragging:!1})})(e,t),"data-slot":"multi-tab","data-tab-id":e.id,"data-state":r?"active":"inactive","data-dragging":A===e.id?"true":void 0,"data-modified":e.modified?"true":void 0,className:tK("group/tab relative flex h-9 min-w-0 max-w-52 shrink-0 items-center gap-1 rounded-t-lg border border-b-0 px-2.5 transition-[border-color,background-color,color,box-shadow,outline-color] duration-150 ease-out",h&&!e.disabled&&"cursor-grab active:cursor-grabbing",r?"border-border bg-background text-foreground shadow-[0_-1px_0_var(--background)_inset]":"border-transparent bg-transparent text-muted-foreground hover:bg-background/70 hover:text-foreground",o&&"border-dashed border-border bg-muted/45 text-transparent shadow-none outline outline-1 outline-ring/30 [&_*]:opacity-0",e.disabled&&"pointer-events-none opacity-50"),children:[(0,ev.jsx)("button",{type:"button",role:"tab","aria-label":QZ(e.title),"aria-selected":r,disabled:e.disabled,onClick:t=>{var r;let a;if(H.current){H.current=!1,t.preventDefault();return}r=e.id,(a=X.find(e=>e.id===r))&&!a.disabled&&(void 0===n&&Q(r),i?.(r))},className:"absolute inset-0 rounded-t-lg outline-none focus-visible:ring-2 focus-visible:ring-ring/50"}),(0,ev.jsxs)("div",{"aria-hidden":"true",className:"pointer-events-none relative z-10 flex min-w-0 flex-1 items-center gap-1.5",children:[e.icon&&(0,ev.jsx)("span",{className:"grid size-4 shrink-0 place-items-center text-muted-foreground [&_svg]:size-3.5",children:e.icon}),(0,ev.jsx)("span",{className:"truncate ui-text-control font-medium",children:e.title}),e.meta&&(0,ev.jsx)("span",{className:"shrink-0 ui-text-kbd text-muted-foreground",children:e.meta}),e.modified&&(0,ev.jsx)("span",{"aria-hidden":"true",className:"size-1.5 shrink-0 rounded-full bg-foreground/70"})]}),!e.pinned&&(0,ev.jsx)("button",{type:"button",draggable:!1,onPointerDown:e=>e.stopPropagation(),"aria-label":e.closeLabel??(QZ(e.title)?`${x}: ${QZ(e.title)}`:x),onClick:()=>(function(e){if(e.pinned)return;let t=X.findIndex(t=>t.id===e.id),r=X.filter(t=>t.id!==e.id);if(en(r),l?.(e),e.id===ee){let e=QX(r,t);void 0===n&&Q(e),e&&i?.(e)}})(e),className:tK("relative z-20 grid size-5 shrink-0 place-items-center rounded-md text-muted-foreground opacity-0 transition-all hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring/50 focus-visible:outline-none group-hover/tab:opacity-100",r&&"opacity-100"),children:(0,ev.jsx)(ms,{className:"size-3.5"})})]}),s&&(0,ev.jsx)("span",{"aria-hidden":"true",className:"mb-2 h-4 w-px shrink-0 bg-border/80"})]},e.id)}),G?(0,ev.jsxs)("span",{"data-slot":"multi-tab-external-insert","aria-hidden":"true",className:"pointer-events-none absolute top-2 bottom-1 z-30 flex w-0 -translate-x-1/2 items-center justify-center",style:{left:G.left},children:[(0,ev.jsx)("span",{className:"h-full w-px rounded-full bg-foreground/80"}),(0,ev.jsx)("span",{className:"absolute top-0 size-1.5 rounded-full bg-foreground"})]}):null]}),(0,ev.jsxs)("div",{className:"mb-1 flex shrink-0 items-center gap-1",children:[q&&(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm","aria-label":b,onClick:()=>el("right"),children:(0,ev.jsx)(xx,{})}),u.length>0?(0,ev.jsxs)(bx,{children:[(0,ev.jsx)(bb,{asChild:!0,children:(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm","aria-label":g,children:(0,ev.jsx)(sQ,{})})}),(0,ev.jsx)(bP,{align:"end",className:"w-52",children:u.map((e,t)=>(0,ev.jsxs)(ey.Fragment,{children:[e.separatorBefore&&(0,ev.jsx)(b_,{}),(0,ev.jsxs)(bz,{disabled:e.disabled,onSelect:e.onSelect,children:[e.icon,e.label,e.shortcut&&(0,ev.jsx)(bD,{children:e.shortcut})]})]},t))})]}):(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm","aria-label":g,onClick:function(){let e=o?.();e&&(en([...X,e]),e.disabled||(void 0===n&&Q(e.id),i?.(e.id)))},children:(0,ev.jsx)(sQ,{})}),f.length>0&&(0,ev.jsxs)(bx,{children:[(0,ev.jsx)(bb,{asChild:!0,children:(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm","aria-label":v,children:(0,ev.jsx)(sZ,{})})}),(0,ev.jsx)(bP,{align:"end",className:"w-52",children:f.map((e,t)=>(0,ev.jsxs)(ey.Fragment,{children:[e.separatorBefore&&(0,ev.jsx)(b_,{}),(0,ev.jsxs)(bz,{disabled:e.disabled,onSelect:e.onSelect,children:[e.icon,e.label,e.shortcut&&(0,ev.jsx)(bD,{children:e.shortcut})]})]},t))})]})]})]}),em,S&&(0,ev.jsx)("div",{"data-slot":"multi-tab-content",className:tK("min-h-0 overflow-hidden",M),children:ef??j??(0,ev.jsx)("div",{"aria-hidden":"true",className:"min-h-44 rounded-lg border border-dashed bg-muted/30"})})]})}let Q0=[{policyNumber:3,name:"Allow HTTP Traffic",sourceZone:"Trust",sourceIPs:["192.168.1.0/24","10.0.0.0/8"],destinationZone:"Trust",destinationIPs:["192.168.2.0/24"],tags:["Web Access","Internal"],action:"allow",description:"Permits HTTP traffic from internal network"},{policyNumber:5,name:"Block Suspicious IPs",sourceZone:"Untrust",sourceIPs:["203.0.113.0/24","198.51.100.0/24"],destinationZone:"Trust",destinationIPs:["Any"],tags:["Blocking","Security"],action:"deny",description:"Blocks known malicious IP ranges"},{policyNumber:9,name:"SSH Access Control",sourceZone:"Trust",sourceIPs:["172.16.0.0/12"],destinationZone:"Trust",destinationIPs:["10.50.0.0/16"],tags:["Admin Access","VPN"],action:"allow",description:"Restricted SSH access for admin network"},{policyNumber:12,name:"Database Port Protection",sourceZone:"Untrust",sourceIPs:["0.0.0.0/0"],destinationZone:"Trust",destinationIPs:["10.100.0.0/24"],tags:["Blocking","Database"],action:"deny",description:"Blocks external access to database ports"},{policyNumber:15,name:"API Gateway Access",sourceZone:"Trust",sourceIPs:["192.168.100.0/24","192.168.101.0/24"],destinationZone:"Trust",destinationIPs:["10.200.0.5"],tags:["API","VDI Env"],action:"allow",description:"Allows traffic to API gateway from specific subnets"},{policyNumber:18,name:"Drop Legacy SMB",sourceZone:"Trust",sourceIPs:["Any"],destinationZone:"Trust",destinationIPs:["10.20.0.0/16"],tags:["Legacy","Internal"],action:"drop",description:"Drops SMBv1 probes across workstation networks"},{policyNumber:22,name:"Agent Runtime Mesh",sourceZone:"Trust",sourceIPs:["10.10.4.0/24"],destinationZone:"Trust",destinationIPs:["10.10.8.0/24","10.10.12.0/24"],tags:["Agent","Runtime"],action:"allow",description:"Allows managed agent runtime channels between worker pools"},{policyNumber:27,name:"Block Public Admin Ports",sourceZone:"Untrust",sourceIPs:["0.0.0.0/0"],destinationZone:"Trust",destinationIPs:["Any"],tags:["Blocking","Admin Access"],action:"deny",description:"Denies public access to SSH, RDP, and database admin ports"},{policyNumber:31,name:"Build Cache Access",sourceZone:"Trust",sourceIPs:["10.30.0.0/16"],destinationZone:"Trust",destinationIPs:["10.60.12.20"],tags:["Build","Internal"],action:"allow",description:"Allows build workers to reach shared cache storage"},{policyNumber:36,name:"Relay Egress",sourceZone:"Trust",sourceIPs:["10.40.0.0/16"],destinationZone:"Untrust",destinationIPs:["198.18.0.0/15"],tags:["Relay","Agent"],action:"allow",description:"Permits relay service egress to managed edge addresses"},{policyNumber:41,name:"Quarantine Subnet",sourceZone:"Quarantine",sourceIPs:["10.250.0.0/24"],destinationZone:"Trust",destinationIPs:["Any"],tags:["Security","Blocking"],action:"deny",description:"Blocks quarantined hosts from internal services"},{policyNumber:48,name:"Observability Intake",sourceZone:"Trust",sourceIPs:["10.0.0.0/8"],destinationZone:"Trust",destinationIPs:["10.80.4.10"],tags:["Telemetry","Internal"],action:"allow",description:"Allows metrics and logs to the observability intake"}],Q1=Array.from(new Set(Q0.flatMap(e=>e.tags))).sort(),Q2=[["10.10.4.0/24","Agent workers","Trust","18"],["10.20.0.0/16","Workstations","Trust","41"],["10.250.0.0/24","Quarantine","Quarantine","03"],["198.18.0.0/15","Relay edge","Untrust","12"]],Q5=[["Database Port Protection","2026-06-12","Security"],["Relay Egress","2026-06-28","Network"],["Build Cache Access","2026-07-04","Build"],["Observability Intake","2026-07-18","Ops"]],Q4=[{time:"09:00",p2p:42,direct:12,relay:96},{time:"10:00",p2p:39,direct:12,relay:88},{time:"11:00",p2p:44,direct:14,relay:91},{time:"12:00",p2p:38,direct:12,relay:84},{time:"13:00",p2p:36,direct:11,relay:86},{time:"14:00",p2p:41,direct:13,relay:93}],Q3=[["14:42","Allay 将 Linux-runner-02 加入 Compute 机器组","done"],["14:37","Ops 对 runner 服务发起重启确认","current"],["14:25","UI Polish Agent 访问 D:\\Projects\\Vantaloom-ui","done"],["14:18","Viewer 请求远程 shell 被拒绝","blocked"],["14:07","Observer-01 P2P 心跳恢复","done"],["13:54","Buildbot 读取发布产物目录","done"]],Q6={p2p:{label:"P2P",color:"var(--chart-1)"},direct:{label:"Direct",color:"var(--chart-3)"},relay:{label:"Relay",color:"var(--chart-5)"},cpu:{label:"CPU",color:"var(--chart-1)"},memory:{label:"Memory",color:"var(--chart-3)"}};function Q8({className:e,...t}){return(0,ev.jsx)("nav",{role:"navigation","aria-label":"pagination","data-slot":"pagination",className:tK("mx-auto flex w-full justify-center",e),...t})}function Q7({className:e,...t}){return(0,ev.jsx)("ul",{"data-slot":"pagination-content",className:tK("flex flex-row items-center gap-1",e),...t})}function Q9({...e}){return(0,ev.jsx)("li",{"data-slot":"pagination-item",...e})}function eee({className:e,isActive:t,size:n="icon",...r}){return(0,ev.jsx)("a",{"aria-current":t?"page":void 0,"data-slot":"pagination-link","data-active":t,className:tK(tG({variant:t?"outline":"ghost",size:n}),e),...r})}function eet({className:e,previousLabel:t="Previous",...n}){return(0,ev.jsxs)(eee,{"aria-label":t,size:"default",className:tK("gap-1 px-2.5 sm:pl-2",e),...n,children:[(0,ev.jsx)(cw,{}),(0,ev.jsx)("span",{className:"hidden sm:block",children:t})]})}function een({className:e,nextLabel:t="Next",...n}){return(0,ev.jsxs)(eee,{"aria-label":t,size:"default",className:tK("gap-1 px-2.5 sm:pr-2",e),...n,children:[(0,ev.jsx)("span",{className:"hidden sm:block",children:t}),(0,ev.jsx)(xx,{})]})}function eer({className:e,moreLabel:t="More pages",...n}){return(0,ev.jsxs)("span",{"aria-hidden":!0,"data-slot":"pagination-ellipsis",className:tK("flex size-8 items-center justify-center",e),...n,children:[(0,ev.jsx)(sZ,{className:"size-4"}),(0,ev.jsx)("span",{className:"sr-only",children:t})]})}function eei({title:e}){return(0,ev.jsx)("h2",{className:"h-7 text-sm font-semibold tracking-normal",children:e})}function eea(){let[e,t]=ey.useState(""),[n,r]=ey.useState("all"),[i,a]=ey.useState({allow:!1,drop:!1,deny:!1}),[o,l]=ey.useState(1),s=ey.useMemo(()=>["allow","drop","deny"].filter(e=>i[e]),[i]),c=ey.useMemo(()=>[{id:"policyNumber",header:"策略 #",accessorKey:"policyNumber",align:"right",width:84},{id:"name",header:"名称",accessorKey:"name",width:180,className:"font-medium"},{id:"sourceZone",header:"源区域",accessorKey:"sourceZone",width:112,cell:({row:e})=>(0,ev.jsx)(ees,{zone:e.sourceZone})},{id:"sourceIPs",header:"源 IP",accessorKey:"sourceIPs",width:250,cell:({row:e})=>(0,ev.jsx)(eel,{items:e.sourceIPs,variant:"outline"}),copyValue:({row:e})=>e.sourceIPs.join(", ")},{id:"destinationZone",header:"目标区域",accessorKey:"destinationZone",width:112,cell:({row:e})=>(0,ev.jsx)(ees,{zone:e.destinationZone})},{id:"destinationIPs",header:"目标 IP",accessorKey:"destinationIPs",width:250,cell:({row:e})=>(0,ev.jsx)(eel,{items:e.destinationIPs,variant:"outline"}),copyValue:({row:e})=>e.destinationIPs.join(", ")},{id:"tags",header:"标签",accessorKey:"tags",width:220,cell:({row:e})=>(0,ev.jsx)(eel,{items:e.tags,variant:"secondary"}),copyValue:({row:e})=>e.tags.join(", ")},{id:"action",header:"动作",accessorKey:"action",width:96,cell:({row:e})=>(0,ev.jsx)(eec,{action:e.action})}],[]),d=ey.useMemo(()=>{let t=e.trim().toLowerCase();return Q0.filter(e=>{let r=0===t.length||e.name.toLowerCase().includes(t)||e.description.toLowerCase().includes(t)||e.sourceIPs.some(e=>e.toLowerCase().includes(t))||e.destinationIPs.some(e=>e.toLowerCase().includes(t)),a="all"===n||e.tags.includes(n),o=!(i.allow||i.drop||i.deny)||i.allow&&"allow"===e.action||i.drop&&"drop"===e.action||i.deny&&"deny"===e.action;return r&&a&&o})},[i,e,n]),u=Math.max(1,Math.ceil(d.length/8)),f=Math.min(o,u),h=d.slice((f-1)*8,8*f);return ey.useEffect(()=>{l(1)},[i,e,n]),(0,ev.jsxs)("div",{className:"flex h-full min-h-0 flex-col p-3",children:[(0,ev.jsxs)("div",{className:"mb-3 flex shrink-0 items-center justify-between gap-3",children:[(0,ev.jsx)(eei,{title:"防火墙策略"}),(0,ev.jsxs)(tY,{size:"sm",children:[(0,ev.jsx)(sQ,{className:"size-4"}),"新增策略"]})]}),(0,ev.jsxs)("div",{className:"mb-3 grid shrink-0 grid-cols-1 items-end gap-3 sm:grid-cols-[minmax(12rem,1fr)_10rem_auto]",children:[(0,ev.jsxs)("label",{className:"grid gap-1",children:[(0,ev.jsx)("span",{className:"ui-text-kbd text-muted-foreground",children:"搜索"}),(0,ev.jsxs)("span",{className:"relative",children:[(0,ev.jsx)(cS,{className:"pointer-events-none absolute top-1/2 left-2.5 size-4 -translate-y-1/2 text-muted-foreground"}),(0,ev.jsx)(tX,{value:e,onChange:e=>t(e.target.value),placeholder:"搜索策略...",className:"pl-8"})]})]}),(0,ev.jsxs)("label",{className:"grid gap-1",children:[(0,ev.jsx)("span",{className:"ui-text-kbd text-muted-foreground",children:"标签"}),(0,ev.jsxs)(vA,{value:n,onValueChange:r,children:[(0,ev.jsx)(xd,{className:"w-full",children:(0,ev.jsx)(vT,{placeholder:"全部标签"})}),(0,ev.jsxs)(xh,{children:[(0,ev.jsx)(xp,{value:"all",children:"全部标签"}),Q1.map(e=>(0,ev.jsx)(xp,{value:e,children:e},e))]})]})]}),(0,ev.jsxs)("div",{className:"grid gap-1",children:[(0,ev.jsx)("span",{className:"ui-text-kbd text-muted-foreground",children:"动作"}),(0,ev.jsxs)(b3,{type:"multiple",variant:"outline",value:s,onValueChange:function(e){e.includes("clear")?(t(""),r("all"),a({allow:!1,drop:!1,deny:!1}),l(1)):a({allow:e.includes("allow"),drop:e.includes("drop"),deny:e.includes("deny")})},children:[(0,ev.jsx)(b6,{value:"allow",children:"允许"}),(0,ev.jsx)(b6,{value:"drop",children:"丢弃"}),(0,ev.jsx)(b6,{value:"deny",children:"拒绝"}),(0,ev.jsx)(b6,{value:"clear",children:"全部"})]})]})]}),(0,ev.jsx)(XH,{rows:h,columns:c,rowId:"policyNumber",showHeader:!1,showToolbar:!1,rowHeight:40,className:"min-h-0 flex-1 rounded-lg shadow-none",labels:{noRows:"没有匹配的策略。",selectAllRows:"选择当前页策略",selectRow:e=>`选择第 ${e+1} 条策略`,resizeColumn:"调整列宽",sortAsc:"升序",sortDesc:"降序",sortClear:"取消排序",copyCell:"复制单元格",copied:"已复制"}}),(0,ev.jsx)(eeo,{page:f,totalPages:u,onPageChange:function(e){l(Math.min(u,Math.max(1,e)))}})]})}function eeo({page:e,totalPages:t,onPageChange:n}){let r=ey.useMemo(()=>t<=3?Array.from({length:t},(e,t)=>t+1):e<=2?[1,2,3]:e>=t-1?[t-2,t-1,t]:[e-1,e,e+1],[e,t]),i=r[0]??1,a=r[r.length-1]??t;function o(e,t){e.preventDefault(),n(t)}return(0,ev.jsx)(Q8,{className:"mt-3 shrink-0",children:(0,ev.jsxs)(Q7,{className:"gap-1 sm:gap-2",children:[(0,ev.jsx)(Q9,{children:(0,ev.jsx)(eet,{href:"#",previousLabel:"上一页","aria-disabled":1===e,className:tK(1===e&&"pointer-events-none opacity-40"),onClick:t=>o(t,e-1)})}),i>1?(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(Q9,{children:(0,ev.jsx)(eee,{href:"#",size:"icon",onClick:e=>o(e,1),children:"1"})}),i>2?(0,ev.jsx)(Q9,{children:(0,ev.jsx)(eer,{moreLabel:"更多页"})}):null]}):null,r.map(t=>(0,ev.jsx)(Q9,{children:(0,ev.jsx)(eee,{href:"#",size:"icon",isActive:e===t,onClick:e=>o(e,t),children:t})},t)),a<t?(0,ev.jsxs)(ev.Fragment,{children:[a<t-1?(0,ev.jsx)(Q9,{children:(0,ev.jsx)(eer,{moreLabel:"更多页"})}):null,(0,ev.jsx)(Q9,{children:(0,ev.jsx)(eee,{href:"#",size:"icon",onClick:e=>o(e,t),children:t})})]}):null,(0,ev.jsx)(Q9,{children:(0,ev.jsx)(een,{href:"#",nextLabel:"下一页","aria-disabled":e===t,className:tK(e===t&&"pointer-events-none opacity-40"),onClick:t=>o(t,e+1)})})]})})}function eel({items:e,variant:t}){return(0,ev.jsx)("div",{className:"flex min-w-48 flex-wrap gap-1",children:e.map(e=>(0,ev.jsx)(cC,{variant:t,children:e},e))})}function ees({zone:e}){return(0,ev.jsx)(cC,{variant:"Trust"===e?"secondary":"outline",children:e})}function eec({action:e}){return(0,ev.jsx)(cC,{variant:"allow"===e?"default":"destructive",children:{allow:"允许",drop:"丢弃",deny:"拒绝"}[e]})}function eed({className:e,...t}){return(0,ev.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,ev.jsx)("table",{"data-slot":"table",className:tK("w-full caption-bottom text-sm",e),...t})})}function eeu({className:e,...t}){return(0,ev.jsx)("thead",{"data-slot":"table-header",className:tK("[&_tr]:border-b",e),...t})}function eef({className:e,...t}){return(0,ev.jsx)("tbody",{"data-slot":"table-body",className:tK("[&_tr:last-child]:border-0",e),...t})}function eeh({className:e,...t}){return(0,ev.jsx)("tr",{"data-slot":"table-row",className:tK("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted",e),...t})}function eep({className:e,...t}){return(0,ev.jsx)("th",{"data-slot":"table-head",className:tK("h-9 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-0.5",e),...t})}function eem({className:e,...t}){return(0,ev.jsx)("td",{"data-slot":"table-cell",className:tK("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-0.5",e),...t})}function eeg({title:e}){return(0,ev.jsx)("h2",{className:"h-7 text-sm font-semibold tracking-normal",children:e})}function eev({title:e,headers:t,rows:n}){return(0,ev.jsxs)("div",{className:"flex h-full min-h-0 flex-col p-3",children:[(0,ev.jsx)(eeg,{title:e}),(0,ev.jsx)("div",{className:"mt-3 min-h-0 flex-1 overflow-auto",children:(0,ev.jsxs)(eed,{children:[(0,ev.jsx)(eeu,{children:(0,ev.jsx)(eeh,{children:t.map(e=>(0,ev.jsx)(eep,{children:e},e))})}),(0,ev.jsx)(eef,{children:n.map(e=>(0,ev.jsx)(eeh,{children:e.map((e,t)=>(0,ev.jsx)(eem,{className:0===t?"font-medium":"text-muted-foreground",children:e},`${e}-${t}`))},e.join("-")))})]})})]})}function eex(){return(0,ev.jsxs)("div",{className:"grid h-full min-h-0 content-start gap-3 p-3",children:[(0,ev.jsx)(eeg,{title:"策略申请"}),(0,ev.jsxs)("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2",children:[(0,ev.jsx)(tX,{placeholder:"策略名称"}),(0,ev.jsx)(tX,{placeholder:"负责人"}),(0,ev.jsx)(tX,{placeholder:"源 CIDR"}),(0,ev.jsx)(tX,{placeholder:"目标 CIDR"})]}),(0,ev.jsx)("textarea",{placeholder:"用途",className:"min-h-32 resize-none rounded-lg border border-input bg-transparent px-2.5 py-2 text-sm outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50"}),(0,ev.jsx)("div",{children:(0,ev.jsxs)(tY,{size:"sm",children:[(0,ev.jsx)(sQ,{className:"size-4"}),"提交申请"]})})]})}function eey(){return(0,ev.jsxs)(q0,{defaultValue:"policies",className:"vtl-firewall-workspace flex h-full min-h-0 flex-col",children:[(0,ev.jsx)("div",{className:"shrink-0 overflow-x-auto px-3 pt-3 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:(0,ev.jsxs)(q9,{className:"h-8 w-max min-w-full",children:[(0,ev.jsx)(Ke,{value:"policies",children:"防火墙策略"}),(0,ev.jsx)(Ke,{value:"ip-addresses",children:"IP 地址"}),(0,ev.jsx)(Ke,{value:"renewals",children:"续期"}),(0,ev.jsx)(Ke,{value:"policy-request",children:"策略申请"}),(0,ev.jsx)(Ke,{value:"user-settings",children:"用户设置"})]})}),(0,ev.jsx)(Kt,{value:"policies",className:"mt-3 min-h-0 flex-1 border-t",children:(0,ev.jsx)(eea,{})}),(0,ev.jsx)(Kt,{value:"ip-addresses",className:"mt-3 min-h-0 flex-1 border-t",children:(0,ev.jsx)(eev,{title:"IP 地址",headers:["地址","名称","区域","策略"],rows:Q2})}),(0,ev.jsx)(Kt,{value:"renewals",className:"mt-3 min-h-0 flex-1 border-t",children:(0,ev.jsx)(eev,{title:"续期",headers:["策略","续期时间","负责人"],rows:Q5})}),(0,ev.jsx)(Kt,{value:"policy-request",className:"mt-3 min-h-0 flex-1 border-t",children:(0,ev.jsx)(eex,{})}),(0,ev.jsx)(Kt,{value:"user-settings",className:"mt-3 min-h-0 flex-1 border-t",children:(0,ev.jsx)(eev,{title:"用户设置",headers:["设置","值"],rows:[["默认区域","Trust"],["审核提醒","14 天"],["申请审批","安全负责人"],["策略导出","已开启"]]})})]})}function eeb(e){return e.map(e=>{var t;return{id:e.id,name:e.name,path:e.path,kind:"folder"===(t=e.kind)?"folder":"image"===t?"image":"archive"===t?"archive":"text"===t?"text":"code"===t?"code":"executable"===t?"config":"unknown",hasChildren:"folder"===e.kind,readonly:e.readonly,disabled:e.disabled}})}async function eew(e,t){let n=t.machineId||"local";return eeb((await ww(n,e.path)).items)}function eej({className:e,onOpenFile:t}){let[n,r]=ey.useState([]),[i,a]=ey.useState(!1),[o,l]=ey.useState(0),s=ey.useCallback(async()=>{a(!0);try{let e=await wb();r(e.roots.map(e=>({id:e.id,machineId:e.machineId,name:e.name,path:e.path,platform:e.platform,children:eeb(e.children)}))),l(e=>e+1)}catch{r([]),l(e=>e+1)}finally{a(!1)}},[]);return ey.useEffect(()=>{s()},[s]),ey.useEffect(()=>{function e(){s()}return window.addEventListener("vantaloom:file-system-changed",e),()=>window.removeEventListener("vantaloom:file-system-changed",e)},[s]),(0,ev.jsx)(G9,{className:e,compact:!0,openFilesOnSingleClick:!1,allowCreateFile:!1,allowCreateFolder:!1,allowRename:!1,allowDelete:!1,allowDragAndDrop:!1,allowBoxSelect:!1,defaultRoots:n,defaultExpandedIds:n.map(e=>e.id),loadingIds:i?n.map(e=>e.id):[],labels:{title:"Explorer",refresh:"刷新",collapseAll:"折叠",empty:"没有文件",noResults:"没有匹配文件",loading:"读取中..."},onLoadChildren:eew,onOpenNode:(e,n)=>{"folder"!==e.kind&&t?.({machineId:n.machineId||"local",path:e.path})},onRefresh:()=>{s()}},o)}function eek({open:e,onOpenChange:t,onSelectFile:n}){return(0,ev.jsx)(px,{open:e,onOpenChange:t,children:(0,ev.jsxs)(md,{className:"h-[min(42rem,calc(100svh-2rem))] max-w-2xl gap-0 overflow-hidden p-0",children:[(0,ev.jsx)(mf,{className:"sr-only",children:"选择文件"}),(0,ev.jsx)(mh,{className:"sr-only",children:"选择本机可访问文件。"}),(0,ev.jsx)(eej,{className:"size-full max-w-none rounded-none border-0",onOpenFile:e=>{n(e),t(!1)}})]})})}let eeS=eS("shield-off",[["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71",key:"1jlk70"}],["path",{d:"M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264",key:"18rp1v"}]]);function eeN({open:e,placement:t="viewport",movePermissionGranted:n,onOpenChange:r,onAdd:i,onMovePermissionGrantedChange:a}){let o=[{key:"move-permission",label:n?"取消放行权限":"放行权限",icon:n?(0,ev.jsx)(Ku,{className:"size-4"}):(0,ev.jsx)(eeS,{className:"size-4"}),pressed:n,onClick:()=>a(!n)},{key:"add",label:"新建文件窗口",icon:(0,ev.jsx)(sQ,{className:"size-4"}),pressed:void 0,onClick:i}];return(0,ev.jsx)("div",{className:tK("right-5 z-50","viewport"===t?"fixed bottom-5 max-md:bottom-20":"absolute bottom-5"),children:(0,ev.jsxs)("div",{className:"relative size-8",children:[o.map((t,n)=>(0,ev.jsx)(tY,{type:"button",variant:"outline",size:"icon-sm","aria-label":t.label,"aria-pressed":t.pressed,title:t.label,onClick:t.onClick,className:tK("absolute inset-0 rounded-full bg-background/95 shadow-md backdrop-blur transition-[opacity,transform] duration-150 ease-out",e?"pointer-events-auto opacity-100":"pointer-events-none translate-y-1 opacity-0",t.pressed&&"border-foreground bg-foreground text-background hover:bg-foreground/90 hover:text-background"),style:{transform:e?`translateY(-${(n+1)*42}px)`:void 0},children:t.icon},t.key)),(0,ev.jsx)(tY,{type:"button",variant:"outline",size:"icon-sm","aria-label":"文件窗口操作","aria-expanded":e,onClick:()=>r(!e),className:"absolute inset-0 rounded-full bg-background/95 shadow-md backdrop-blur",children:(0,ev.jsx)(sZ,{className:tK("size-4 transition-transform",e&&"rotate-90")})})]})})}let eeC=[];function eeM(e,t){return`${e} / ${t.replace(/\\/g," / ").replace(/\//g," / ")}`}function eeE(e,t){for(let n of e){if(n.id===t)return n;let e=n.children?eeE(n.children,t):void 0;if(e)return e}}function eeO(e,t){return e.replace(/\\/g,"/").toLowerCase()===t.replace(/\\/g,"/").toLowerCase()}function eeP(e,t){let n=e.replace(/\\/g,"/").replace(/\/+/g,"/");return"windows"===t?n.toLowerCase():n}function eez(e){return e.map(e=>({...e,children:e.children?eez(e.children):void 0}))}let eeA=eS("move-right",[["path",{d:"M18 8L22 12L18 16",key:"1r0oui"}],["path",{d:"M2 12H22",key:"1m8cig"}]]),eeI=eS("octagon-alert",[["path",{d:"M12 16h.01",key:"1drbdi"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M15.312 2a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z",key:"1fd625"}]]),ee_=eS("clipboard",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}]]),eeD={title:"Clipboard",empty:"No clips",dragHandle:"Drag clip"};function eeT({items:e,expanded:t,defaultExpanded:n=!1,expansionDirection:r="down-left",title:i,labels:a,maxCollapsedItems:o=10,maxExpandedHeight:l=360,acceptExternalDrops:s=!1,removeOnExternalDrop:c=!1,className:d,onExpandedChange:u,onItemDragStart:f,onItemDragEnd:h,onItemDuplicate:p,onItemsRemove:m,onItemsReorder:g,onExternalDrop:v,onMouseEnter:x,onMouseLeave:y,...b}){let w={...eeD,...a},[j,k]=ey.useState(n),[S,N]=ey.useState(),[C,M]=ey.useState(),[E,O]=ey.useState(n),[P,z]=ey.useState(),[A,I]=ey.useState({canScrollDown:!1,canScrollUp:!1}),[_,D]=ey.useState(!1),[T,R]=ey.useState(!1),L=ey.useRef(0),$=ey.useRef(void 0),F=ey.useRef(!1),B=ey.useRef(null),V=ey.useRef(null),H=void 0!==t,W=(H?t:j)||void 0!==S,U=Math.min(o,10),q=W?e:e.slice(0,U),K=E?C:void 0,G=44*q.length+18,Y=Math.min(G,l),X=W&&G>Y,Z=0===e.length?"h-24":W?`${Y}px`:"h-28",J=W&&X?14:0;ey.useEffect(()=>{if(!W){O(!1),I({canScrollDown:!1,canScrollUp:!1});return}O(!1),window.requestAnimationFrame(()=>{V.current&&(V.current.scrollTop=0)}),I({canScrollUp:!1,canScrollDown:G>Y});let e=window.setTimeout(()=>{O(!0)},260);return()=>window.clearTimeout(e)},[G,Y,W]),ey.useEffect(()=>()=>{void 0!==$.current&&window.clearTimeout($.current)},[]);let Q=ey.useCallback(e=>{H||k(e),u?.(e)},[H,u]);function ee(e,t=0){let n=e.currentTarget.getBoundingClientRect();return e.clientX>=n.left-t&&e.clientX<=n.right+t&&e.clientY>=n.top-t&&e.clientY<=n.bottom+t}function et(e){if(!W||!V.current)return 0;let t=Array.from(V.current.querySelectorAll('[data-slot="clipboard-stack-card"]'));if(0===t.length)return 0;for(let[n,r]of t.entries()){let t=r.getBoundingClientRect();if(e.clientY<t.top+t.height/2)return n}return t.length}function en(e){return void 0!==S||Array.from(e.dataTransfer.types).includes("application/vnd.vantaloom.clip-id")}return ey.useEffect(()=>{if(0===e.length||W)return;let t=window.requestAnimationFrame(()=>{B.current?.matches(":hover")&&(void 0!==$.current&&(window.clearTimeout($.current),$.current=void 0),D(!1),Q(!0))});return()=>window.cancelAnimationFrame(t)},[e.length,Q,W]),ey.useEffect(()=>{if(!W||!X||!K||!V.current)return;let e=q.findIndex(e=>e.id===K);if(e<0)return;let t=V.current,n=44*e-8,r=44*e+(q[e]?.expandedHeight??220)+12,i=t.scrollTop,a=i+t.clientHeight;n<i?t.scrollTo({top:Math.max(0,n),behavior:"smooth"}):r>a&&t.scrollTo({top:r-t.clientHeight,behavior:"smooth"})},[K,X,q,W]),(0,ev.jsxs)("div",{ref:B,"data-slot":"clipboard-stack","data-expanded":W,"data-closing":_,"data-external-dragging":T,"data-expansion-direction":r,className:tK("group/clipboard relative w-80 max-w-full overflow-visible py-2",d),onMouseEnter:function(e){x?.(e),ee(e)&&(void 0!==$.current&&(window.clearTimeout($.current),$.current=void 0),D(!1),Q(!0))},onMouseMove:function(e){if(!W){ee(e,12)&&(void 0!==$.current&&(window.clearTimeout($.current),$.current=void 0),D(!1),Q(!0));return}!W||S||ee(e,12)||(M(void 0),z(void 0),Q(!1),D(!0),void 0!==$.current&&window.clearTimeout($.current),$.current=window.setTimeout(()=>{D(!1),$.current=void 0},320))},onMouseLeave:function(e){y?.(e),S||(M(void 0),z(void 0),D(!0),Q(!1),void 0!==$.current&&window.clearTimeout($.current),$.current=window.setTimeout(()=>{D(!1),$.current=void 0},320))},onDragEnter:function(e){!s||en(e)||(L.current+=1,R(!0),D(!1))},onDragLeave:function(e){!s||en(e)||(L.current=Math.max(0,L.current-1),0===L.current&&(R(!1),z(void 0)))},onDragOver:function(e){!s||en(e)||(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="copy",R(!0),W?z(et(e)):z(0))},onDrop:function(t){if(!s||en(t))return;t.preventDefault(),t.stopPropagation();let n=P??et(t);L.current=0,R(!1),z(void 0),v?.({insertIndex:n,items:e,nativeEvent:t})},...b,children:[(0,ev.jsxs)("div",{"data-slot":"clipboard-stack-header",className:tK("mb-2 flex h-8 items-center gap-2 px-1 text-sm font-medium text-foreground transition-[opacity,transform] duration-200","down-left"===r&&"justify-end",W?"opacity-100":"translate-y-1 opacity-0"),children:[(0,ev.jsx)("span",{className:"inline-flex size-6 items-center justify-center rounded-lg border bg-background text-muted-foreground",children:(0,ev.jsx)(ee_,{className:"size-3.5"})}),(0,ev.jsx)("span",{children:i??w.title}),(0,ev.jsx)("span",{className:"ml-auto tabular-nums text-muted-foreground",children:e.length})]}),(0,ev.jsxs)("div",{"data-slot":"clipboard-stack-list",className:tK("relative transition-[height] duration-300 ease-[cubic-bezier(.2,.8,.2,1)]"),style:{height:Z},children:[e.length>0&&"down-left"===r?(0,ev.jsx)("span",{"data-slot":"clipboard-stack-pivot","aria-hidden":"true",className:tK("pointer-events-none absolute top-3 right-[34px] z-50 size-2.5 rounded-full bg-foreground shadow-sm transition-[opacity,transform] duration-200 dark:bg-background",W?"scale-75 opacity-0":"opacity-100")}):null,s&&T?(0,ev.jsxs)("span",{"data-slot":"clipboard-stack-external-ghost","aria-hidden":"true",className:tK("pointer-events-none absolute right-0 z-[70] h-14 w-[88%] rounded-xl border bg-background shadow-md shadow-black/10","clipboard-stack-external-ghost"),children:[(0,ev.jsx)("span",{className:"absolute top-3 right-[34px] size-2 rounded-full bg-foreground dark:bg-background"}),(0,ev.jsx)("span",{className:"absolute top-4 left-3 h-2 w-24 rounded-full bg-foreground/18"}),(0,ev.jsx)("span",{className:"absolute top-8 left-3 h-1.5 w-14 rounded-full bg-foreground/10"})]}):null,0===e.length?(0,ev.jsx)("div",{className:"flex h-24 items-center justify-center rounded-xl border border-dashed bg-muted/35 text-sm text-muted-foreground",children:w.empty}):(0,ev.jsxs)("div",{"data-slot":"clipboard-stack-scroll-frame",className:"relative h-full",children:[(0,ev.jsx)("div",{"data-slot":"clipboard-stack-scroll",ref:V,className:tK("relative h-full overflow-x-visible",W&&X?"clipboard-stack-scrollbar-hidden overflow-y-auto pt-2 pr-1 pb-3":"overflow-visible"),onScroll:e=>{let t=e.currentTarget;I({canScrollUp:t.scrollTop>1,canScrollDown:t.scrollTop+t.clientHeight<t.scrollHeight-1})},onDragOver:function(e){W&&S&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="move")},onDrop:function(t){if(!W||!S||void 0===P)return;t.preventDefault(),t.stopPropagation(),F.current=!0;let n=e.findIndex(e=>e.id===S),r=e[n];if(n<0||!r)return;let i=e.filter(e=>e.id!==S),a=Math.max(0,Math.min(P>n?P-1:P,i.length));i.splice(a,0,r),z(void 0),M(void 0),a!==n&&g?.(i,{item:r,fromIndex:n,toIndex:a,items:i})},children:(0,ev.jsxs)("div",{"data-slot":"clipboard-stack-scroll-content",className:"relative",style:{width:W&&X?`calc(100% - ${J}px)`:void 0,marginLeft:W&&X?`${J}px`:void 0,height:W&&X?G+28:W?G:"100%"},children:[void 0!==P?(0,ev.jsxs)("span",{"data-slot":"clipboard-stack-insert-line","aria-hidden":"true",className:"pointer-events-none absolute right-0 left-0 z-[80] flex items-center",style:{top:44*P-2},children:[(0,ev.jsx)("span",{className:"h-px flex-1 bg-foreground/70"}),(0,ev.jsx)("span",{className:"mx-1 size-1.5 rounded-full bg-foreground"}),(0,ev.jsx)("span",{className:"h-px flex-1 bg-foreground/70"})]}):null,q.map((t,n)=>(0,ev.jsx)(eeR,{item:t,index:n,count:q.length,expanded:W,active:W&&t.id===K,top:W?44*n:void 0,expansionDirection:r,labels:w,onHover:()=>M(t.id),onDuplicate:()=>{let n=e.findIndex(e=>e.id===t.id);n<0||p?.(e,{item:t,index:n,items:e})},onDragOver:e=>{if(W&&S&&S!==t.id){let t=e.currentTarget.getBoundingClientRect();z(e.clientY<t.top+t.height/2?n:n+1)}},onDragStart:e=>{N(e.item.id),M(void 0),F.current=!1,f?.(e)},onDragEnd:t=>{let n=t.nativeEvent.dataTransfer.dropEffect,r=t.item.id,i=e.findIndex(e=>e.id===r),a=c&&!F.current&&"none"!==n&&i>=0;if(N(void 0),z(void 0),M(void 0),F.current?F.current=!1:Q(!1),a){let n=e.filter(e=>e.id!==r);m?.(n,{item:t.item,index:i,items:n})}h?.(t)}},t.id))]})}),X&&A.canScrollUp?(0,ev.jsx)("span",{"data-slot":"clipboard-stack-scroll-mask-top","aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 top-0 z-[90] h-8 bg-gradient-to-b from-background to-transparent"}):null,X&&A.canScrollDown?(0,ev.jsx)("span",{"data-slot":"clipboard-stack-scroll-mask-bottom","aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 bottom-0 z-[90] h-8 bg-gradient-to-t from-background to-transparent"}):null]})]})]})}function eeR({item:e,index:t,count:n,expanded:r,active:i,top:a,expansionDirection:o,labels:l,onHover:s,onDuplicate:c,onDragOver:d,onDragStart:u,onDragEnd:f}){let h=Math.min(t,9),p="down-left"===o?-(4.5*h):[-4,2,-1,4][h]??0,m=r?i?n+20:n-t:n+t;return(0,ev.jsx)("article",{"data-slot":"clipboard-stack-card",draggable:!e.disabled,"aria-disabled":e.disabled,className:tK("absolute right-0 min-h-16 w-full cursor-grab select-none rounded-xl border bg-background p-2.5 text-foreground shadow-sm shadow-black/5 outline-none transition-[top,transform,opacity,box-shadow,border-color] duration-300 ease-[cubic-bezier(.2,.8,.2,1)] active:cursor-grabbing","hover:border-foreground/35 hover:shadow-md hover:shadow-black/10 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/40",r&&"min-h-0 overflow-hidden py-2 transition-[top,transform,max-height,opacity,box-shadow,border-color] duration-300",r&&!i&&"max-h-11",e.disabled&&"cursor-not-allowed opacity-50"),style:{top:r?a??44*t:"down-left"===o?0:9*h,zIndex:m,maxHeight:r&&i?e.expandedHeight??220:void 0,transformOrigin:"down-left"===o?"calc(100% - 34px) 14px":"100% 0",transform:r?i?"translate3d(-10px, -6px, 0) rotate(0deg)":"translate3d(0, 0, 0) rotate(0deg)":`translate3d(${"down-left"===o?0:4*h}px, 0, 0) rotate(${p}deg)`},tabIndex:e.disabled?-1:0,onMouseDown:function(t){1!==t.button||e.disabled||t.preventDefault()},onMouseEnter:s,onFocus:s,onAuxClick:function(t){1!==t.button||e.disabled||(t.preventDefault(),c?.())},onDragOver:d,onDragStart:function(t){for(let[n,r]of(t.dataTransfer.effectAllowed="copyMove",t.dataTransfer.setData("text/plain",e.title),t.dataTransfer.setData("application/vnd.vantaloom.clip-id",e.id),Object.entries(e.dragData??{})))t.dataTransfer.setData(n,r);u?.({item:e,nativeEvent:t})},onDragEnd:function(t){f?.({item:e,nativeEvent:t})},children:(0,ev.jsxs)("div",{className:"flex min-w-0 items-start gap-2",children:[(0,ev.jsx)("div",{"data-slot":"clipboard-stack-card-media",className:"flex size-8 shrink-0 items-center justify-center rounded-lg border bg-muted text-muted-foreground",children:e.icon??(0,ev.jsx)(ee_,{className:"size-4"})}),(0,ev.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,ev.jsxs)("div",{className:"flex min-w-0 items-center gap-2",children:[(0,ev.jsx)("p",{className:"truncate text-sm font-medium",children:e.title}),e.meta?(0,ev.jsx)("span",{className:"ml-auto shrink-0 text-xs tabular-nums text-muted-foreground",children:e.meta}):null]}),e.description?(0,ev.jsx)("p",{className:tK("mt-0.5 text-xs leading-5 text-muted-foreground transition-[max-height,opacity,transform] duration-200",i?"max-h-40 translate-y-0 opacity-100":"max-h-0 -translate-y-1 overflow-hidden opacity-0"),children:e.description}):null,e.content?(0,ev.jsx)("div",{className:tK("mt-2 text-xs text-muted-foreground transition-[max-height,opacity,transform] duration-200",i?"max-h-80 translate-y-0 opacity-100":"max-h-0 -translate-y-1 overflow-hidden opacity-0"),children:e.content}):null]}),(0,ev.jsx)("span",{"aria-label":l.dragHandle,className:"mt-1 inline-flex size-6 shrink-0 items-center justify-center rounded-md text-muted-foreground",children:(0,ev.jsx)(UN,{className:"size-3.5"})})]})})}function eeL({transfers:e}){let t=e.slice(0,10);if(0===t.length)return null;let n=t.map(e=>{var t,n,r;let i,a,o;return{id:e.id,title:(i="copy"===(t=e).mode?"复制":"移动",a=t.sources.length,o=t.sources[0],`${i} ${a>1?`${a} 项`:eeF(o?.path??"")}`),description:(n=e).message?n.message:`${n.sources[0]?.machineId??"local"} -> ${n.target.machineId}`,meta:function(e){switch(e.status){case"completed":return"完成";case"failed":return"失败";case"queued":return"排队";default:return`${Math.round(e.progress?.percent??0)}%`}}(e),icon:"completed"===(r=e).status?(0,ev.jsx)(ez,{className:"size-4"}):"failed"===r.status?(0,ev.jsx)(eeI,{className:"size-4"}):"running"===r.status?(0,ev.jsx)(eO,{className:"size-4 animate-spin"}):"copy"===r.mode?(0,ev.jsx)(sU,{className:"size-4"}):(0,ev.jsx)(eeA,{className:"size-4"}),expandedHeight:132,content:(0,ev.jsx)(ee$,{transfer:e})}});return(0,ev.jsx)("div",{className:"pointer-events-auto fixed top-4 right-4 z-50 w-80 max-w-[calc(100vw-2rem)] max-md:left-4 max-md:right-auto max-md:w-auto max-md:max-w-[16rem]",children:(0,ev.jsx)(eeT,{items:n,title:"传输",labels:{empty:"暂无传输",dragHandle:"传输任务"},expansionDirection:"down-left",maxExpandedHeight:420})})}function ee$({transfer:e}){let t=Math.max(0,Math.min(100,e.progress?.percent??0));return(0,ev.jsxs)("div",{className:"grid gap-2",children:[(0,ev.jsx)("div",{className:"h-1.5 overflow-hidden rounded-full bg-border",children:(0,ev.jsx)("div",{className:"h-full rounded-full bg-foreground transition-[width] duration-300",style:{width:`${t}%`}})}),(0,ev.jsxs)("div",{className:"grid gap-1 tabular-nums",children:[(0,ev.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-2",children:[(0,ev.jsx)("span",{className:"truncate",children:eeF(e.target.path)}),(0,ev.jsxs)("span",{children:[Math.round(t),"%"]})]}),(0,ev.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-2 text-muted-foreground",children:[(0,ev.jsxs)("span",{className:"truncate",children:[eeB(e.progress.bytesDone)," /"," ",eeB(e.progress.bytesTotal)]}),(0,ev.jsxs)("span",{children:[e.progress.entriesDone,"/",e.progress.entriesTotal]})]}),e.progress.currentPath?(0,ev.jsx)("div",{className:"truncate text-muted-foreground",children:eeF(e.progress.currentPath)}):null]})]})}function eeF(e){return e.split(/[\\/]+/).filter(Boolean).at(-1)??e}function eeB(e){if(!e)return"0 B";let t=["B","KB","MB","GB","TB"],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r+=1;return`${n>=10||0===r?Math.round(n):n.toFixed(1)} ${t[r]}`}let eeV=eS("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);function eeH({windowLayout:e,roots:t,active:n,zIndex:r,boardSize:i,onActivate:a,onClose:o,onMinimize:l,onWindowChange:s,onNavigate:c,onRootsChange:d,onCreateFolder:u,onRenameItem:f,onDeleteItems:h,onMoveItems:p}){return(0,ev.jsxs)("section",{className:tK("absolute overflow-hidden rounded-xl border bg-card shadow-lg transition-[box-shadow,border-color] duration-150","vtl-file-manager-window",n&&"border-foreground shadow-xl"),style:{left:e.x,top:e.y,width:e.w,height:e.h,zIndex:r},onPointerDown:a,children:[(0,ev.jsxs)("div",{className:"grid h-9 cursor-grab grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 border-b bg-muted/35 px-2 active:cursor-grabbing",onPointerDown:function(t){t.preventDefault(),t.currentTarget.setPointerCapture(t.pointerId),a();let n=t.clientX,r=t.clientY;function i(t){let i=Math.max(0,e.x+t.clientX-n),a=Math.max(0,e.y+t.clientY-r);s({...e,x:i,y:a})}window.addEventListener("pointermove",i),window.addEventListener("pointerup",function e(){window.removeEventListener("pointermove",i),window.removeEventListener("pointerup",e)})},children:[(0,ev.jsxs)("div",{className:"flex items-center gap-1",children:[(0,ev.jsx)(tY,{type:"button",size:"icon-sm",variant:"ghost","aria-label":"关闭窗口",onPointerDown:e=>e.stopPropagation(),onClick:o,children:(0,ev.jsx)(ms,{})}),(0,ev.jsx)(tY,{type:"button",size:"icon-sm",variant:"ghost","aria-label":"缩小到剪切板",onPointerDown:e=>e.stopPropagation(),onClick:l,children:(0,ev.jsx)(eeV,{})})]}),(0,ev.jsx)("div",{className:"truncate text-center ui-text-control",children:e.title}),(0,ev.jsx)("div",{className:"w-14"})]}),(0,ev.jsx)(wc,{roots:t,variant:"full",currentRootId:e.rootId,currentPath:e.path,draggableItems:!0,onNavigate:c,onRootsChange:e=>d(e),onCreateFolder:u,onRenameItem:f,onDeleteItems:h,onItemDrop:({sourceRootId:e,sourceItemIds:t,targetRoot:n,target:r})=>p({sourceRootId:e,sourceItemIds:t,targetRoot:n,target:r}),labels:{title:"文件管理",search:"搜索文件",newFolder:"新建",upload:"上传",refresh:"刷新",sort:"排序",view:"视图"},className:"vtl-file-window-explorer min-h-0 rounded-none border-0 shadow-none",contentClassName:"min-h-0",style:{height:"calc(100% - 2.25rem)",minHeight:0}}),(0,ev.jsx)("button",{type:"button","aria-label":"调整窗口大小",className:"absolute right-0 bottom-0 size-5 cursor-nwse-resize rounded-tl-md border-t border-l bg-background/80",onPointerDown:function(t){t.preventDefault(),t.stopPropagation(),t.currentTarget.setPointerCapture(t.pointerId),a();let n=t.clientX,r=t.clientY;function o(t){let a=Math.max(420,Math.min(Math.max(420,i.width-e.x),e.w+t.clientX-n)),o=Math.max(320,e.h+t.clientY-r);s({...e,w:a,h:o})}window.addEventListener("pointermove",o),window.addEventListener("pointerup",function e(){window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",e)})}})]})}function eeW({clipboardItems:e=[],onClipboardItemsChange:t}){var n;return n=(0,ev.jsx)(eeU,{clipboardItems:e,onClipboardItemsChange:t,className:"min-h-[calc(100svh-5rem)] p-4 lg:p-6",minBoardHeight:820,actionsPlacement:"viewport"}),(0,ev.jsx)(ha,{children:n})}function eeU({clipboardItems:e=[],onClipboardItemsChange:t,className:n,minBoardHeight:r=520,actionsPlacement:i="container"}){let[a,o]=hl(),[l,s]=ey.useState([]),[c,d]=ey.useState(eeC),[u,f]=ey.useState(eeC[0]?.id),[h,p]=ey.useState([]),[m,g]=ey.useState(!1),[v,x]=ey.useState(!1),[y,b]=ey.useState(),w=ey.useRef(eeC.length),j=ey.useRef(!1),k=ey.useRef(new Set),S=ey.useCallback(async(e,t,n)=>{let r=await ww(e,n);s(n=>{var i;return i={...r,root:{...r.root,id:t,machineId:e}},n.map(e=>e.id!==i.root.id?e:eeO(e.path,i.path)?{...e,children:eez(i.items)}:{...e,children:function(e,t,n,r,i){let a=function(e,t,n){let r=eeP(e,n),i=eeP(t,n);if(r===i)return[];let a=r.endsWith("/")?r:`${r}/`;return i.startsWith(a)?i.slice(a.length).split("/").filter(Boolean):[]}(t,n,r);if(0===a.length)return eez(i);let o="windows"===r?"\\":"/";return function e(t,n,r){let l=a[r];if(!l)return eez(i);let s=n===o?`${o}${l}`:`${n.replace(/[\\/]+$/,"")}${o}${l}`,c=t.findIndex(e=>eeO(e.path,s)),d=t[c],u={...d??{id:`synthetic-${s}`,name:l,kind:"folder",path:s,children:[]},kind:"folder",children:e(d?.children??[],s,r+1)};if(c<0)return[...t,u];let f=[...t];return f[c]=u,f}(e,t,0)}(e.children,e.path,i.path,e.platform,i.items)})})},[]),N=ey.useCallback(async()=>{let e=eeG((await wE()).transfers);return p(e),e},[]),C=ey.useCallback(e=>{p(t=>eeG([e,...t.filter(t=>t.id!==e.id)]))},[]),M=ey.useCallback(e=>{wM({mode:"move",sources:e.sources.map(e=>({machineId:e.machineId,path:e.path})),target:{machineId:e.target.machineId,path:e.target.path}}).then(C).catch(()=>{})},[C]),E=ey.useCallback(()=>{for(let e of c)S(e.machineId,e.rootId,e.path)},[S,c]);function O(e,t){d(n=>n.map(n=>n.id===e?t(n):n))}function P(e){let t=l[0];if(!t&&!e?.rootId)return;w.current+=1;let n=`files-window-${w.current}`,r=a.current?.getBoundingClientRect(),i=r?.width??o.width,s=r?.height??o.height,c=e?.w??680,u=e?.h??460,h=Math.max(0,(i-c)/2),p=Math.max(0,(s-u)/2),m={id:n,title:e?.title??eeM(t?.name??"local",t?.path??""),machineId:e?.machineId??t?.machineId??"local",rootId:e?.rootId??t?.id??"local",path:e?.path??t?.path??"",x:e?.x??h+12*w.current,y:e?.y??p+12*w.current,w:c,h:u};d(e=>[...e,m]),f(n),S(m.machineId,m.rootId,m.path)}ey.useEffect(()=>{let e=!0;return(async function(){let t=await wb();if(e&&(s(t.roots),!j.current&&t.roots[0])){j.current=!0;let e=function(e,t=0){return{id:`files-${e.id.replace(/[^a-z0-9_-]/gi,"-")}-${t}`,title:eeM(e.name,e.path),machineId:e.machineId,rootId:e.id,path:e.path,x:28+24*t,y:28+24*t,w:720,h:480}}(t.roots[0]);d([e]),f(e.id),S(e.machineId,e.rootId,e.path)}})().catch(()=>{}),N().catch(()=>{}),()=>{e=!1}},[S,N]),ey.useEffect(()=>{if(!h.some(e=>"pending"===e.status||"running"===e.status||"queued"===e.status))return;let e=window.setInterval(async()=>{let e=(await N().catch(()=>h)).filter(e=>"completed"===e.status&&!k.current.has(e.id));if(e.length>0){for(let t of e)k.current.add(t.id);E()}},1e3);return()=>window.clearInterval(e)},[E,N,h]);let z=cy(),A=c.find(e=>e.id===u);function I(e){return{onNavigate:({rootId:t,path:n})=>{let r=l.find(e=>e.id===t),i=r?.machineId??e.machineId;O(e.id,e=>({...e,machineId:i,rootId:t,path:n,title:eeM(r?.name??i,n)})),S(i,t,n)},onRootsChange:s,onCreateFolder:(t,n)=>{wS({machineId:e.machineId,path:t.path,name:n}).then(()=>S(e.machineId,e.rootId,e.path)).catch(()=>{})},onRenameItem:(t,n)=>{wN({machineId:e.machineId,path:t.path,name:n}).then(()=>S(e.machineId,e.rootId,e.path)).catch(()=>{})},onDeleteItems:t=>{wC({machineId:e.machineId,paths:t.map(e=>e.path)}).then(()=>S(e.machineId,e.rootId,e.path)).catch(()=>{})},onMoveItems:({sourceRootId:e,sourceItemIds:t,targetRoot:n,target:r})=>{let i=l.find(t=>t.id===e);if(!i)return;let a=t.flatMap(e=>{let t=eeE(i.children,e);return t?[{machineId:i.machineId,path:t.path,name:t.name}]:[]});if(0===a.length)return;let o={sources:a,target:{machineId:n.machineId,path:r.path,name:r.name}};v?M(o):b(o)}}}return z?(0,ev.jsxs)("div",{className:tK("flex h-full min-h-0 w-full flex-col",n),children:[c.length>1?(0,ev.jsx)("div",{className:"flex shrink-0 items-center gap-1 overflow-x-auto border-b px-2 py-1.5 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:c.map(e=>(0,ev.jsx)("button",{type:"button",className:tK("shrink-0 rounded-md px-2.5 py-1 text-xs transition-colors",e.id===u?"bg-foreground text-background":"text-muted-foreground hover:bg-muted"),onClick:()=>f(e.id),children:e.title},e.id))}):null,(0,ev.jsx)("div",{className:"min-h-0 flex-1",children:A?(0,ev.jsx)(eeq,{windowLayout:A,roots:l,...I(A)}):(0,ev.jsx)("div",{className:"grid h-full place-items-center text-sm text-muted-foreground",children:"暂无打开的文件窗口"})}),(0,ev.jsx)(eeL,{transfers:h}),(0,ev.jsx)(eeN,{open:m,placement:i,movePermissionGranted:v,onOpenChange:g,onMovePermissionGrantedChange:x,onAdd:()=>{g(!1),P()}}),(0,ev.jsx)(eeK,{move:y,onCancel:()=>b(void 0),onConfirm:e=>{b(void 0),M(e)}})]}):(0,ev.jsxs)("div",{ref:a,className:tK("relative h-full min-h-0 w-full overflow-hidden rounded-[inherit]",n),onDragOver:e=>{Array.from(e.dataTransfer.types).includes("application/vnd.vantaloom.file-window")&&(e.preventDefault(),e.dataTransfer.dropEffect="move")},onDrop:function(e){let t=e.dataTransfer.getData("application/vnd.vantaloom.file-window");if(t)try{let n=JSON.parse(t),r=a.current?.getBoundingClientRect();e.preventDefault(),e.stopPropagation(),P({...n,x:r?e.clientX-r.left-160:n.x,y:r?e.clientY-r.top-24:n.y})}catch{return}},children:[(0,ev.jsx)("div",{className:"relative h-full min-h-0",style:{minHeight:Math.max(r,o.height-48)},children:c.map((n,r)=>(0,ev.jsx)(eeH,{windowLayout:n,roots:l,active:u===n.id,zIndex:20+r+20*(u===n.id),boardSize:o,onActivate:()=>f(n.id),onClose:()=>d(e=>e.filter(e=>e.id!==n.id)),onMinimize:()=>{t?.([{id:`clip-${n.id}`,title:n.title,description:"文件管理窗口",meta:`${Math.round(n.w)}x${Math.round(n.h)}`,payloads:{"application/vnd.vantaloom.file-window":{...n}},dragData:{"application/vnd.vantaloom.clip-kind":"file-window","application/vnd.vantaloom.file-window":JSON.stringify(n)}},...e.filter(e=>e.id!==`clip-${n.id}`)]),d(e=>e.filter(e=>e.id!==n.id))},onWindowChange:e=>O(n.id,()=>e),...I(n),onNavigate:({rootId:e,path:t})=>{let r=l.find(t=>t.id===e),i=r?.machineId??n.machineId;O(n.id,n=>({...n,machineId:i,rootId:e,path:t,title:eeM(r?.name??i,t)})),S(i,e,t)},onRootsChange:s,onCreateFolder:(e,t)=>{wS({machineId:n.machineId,path:e.path,name:t}).then(()=>S(n.machineId,n.rootId,n.path)).catch(()=>{})},onRenameItem:(e,t)=>{wN({machineId:n.machineId,path:e.path,name:t}).then(()=>S(n.machineId,n.rootId,n.path)).catch(()=>{})},onDeleteItems:e=>{wC({machineId:n.machineId,paths:e.map(e=>e.path)}).then(()=>S(n.machineId,n.rootId,n.path)).catch(()=>{})},onMoveItems:({sourceRootId:e,sourceItemIds:t,targetRoot:n,target:r})=>{let i=l.find(t=>t.id===e);if(!i)return;let a=t.flatMap(e=>{let t=eeE(i.children,e);return t?[{machineId:i.machineId,path:t.path,name:t.name}]:[]});if(0===a.length)return;let o={sources:a,target:{machineId:n.machineId,path:r.path,name:r.name}};v?M(o):b(o)}},n.id))}),(0,ev.jsx)(eeL,{transfers:h}),(0,ev.jsx)(eeN,{open:m,placement:i,movePermissionGranted:v,onOpenChange:g,onMovePermissionGrantedChange:x,onAdd:()=>{g(!1),P()}}),(0,ev.jsx)(eeK,{move:y,onCancel:()=>b(void 0),onConfirm:e=>{b(void 0),M(e)}})]})}function eeq({windowLayout:e,roots:t,onNavigate:n,onRootsChange:r,onCreateFolder:i,onRenameItem:a,onDeleteItems:o,onMoveItems:l}){return(0,ev.jsx)(wc,{roots:t,variant:"full",currentRootId:e.rootId,currentPath:e.path,onNavigate:n,onRootsChange:e=>r(e),onCreateFolder:i,onRenameItem:a,onDeleteItems:o,onItemDrop:({sourceRootId:e,sourceItemIds:t,targetRoot:n,target:r})=>l({sourceRootId:e,sourceItemIds:t,targetRoot:n,target:r}),labels:{title:"文件管理",search:"搜索文件",newFolder:"新建",upload:"上传",refresh:"刷新",sort:"排序",view:"视图"},className:"h-full min-h-0 rounded-none border-0 shadow-none",contentClassName:"min-h-0"})}function eeK({move:e,onCancel:t,onConfirm:n}){var r;let i=e?.sources??[],a=Math.max(0,i.length-4);return(0,ev.jsx)(gl,{open:void 0!==e,onOpenChange:e=>{e||t()},children:(0,ev.jsxs)(gN,{children:[(0,ev.jsxs)(gC,{children:[(0,ev.jsx)(gE,{children:"确认移动"}),(0,ev.jsx)(gO,{children:e?`将 ${1===(r=i).length?r[0]?eeY(r[0]):"0 项":`${r.length} 项`} 移动到 ${eeY(e.target)}`:""})]}),e?(0,ev.jsxs)("div",{className:"grid gap-2 rounded-lg border bg-muted/20 p-3 ui-text-body",children:[(0,ev.jsxs)("div",{className:"grid gap-1",children:[(0,ev.jsx)("span",{className:"text-muted-foreground ui-text-kbd",children:"移动内容"}),(0,ev.jsxs)("div",{className:"grid gap-1",children:[i.slice(0,4).map(e=>(0,ev.jsx)("span",{className:"truncate",children:eeY(e)},`${e.machineId}:${e.path}`)),a>0?(0,ev.jsxs)("span",{className:"text-muted-foreground",children:["另有 ",a," 项"]}):null]})]}),(0,ev.jsxs)("div",{className:"grid gap-1",children:[(0,ev.jsx)("span",{className:"text-muted-foreground ui-text-kbd",children:"目标位置"}),(0,ev.jsx)("span",{className:"truncate",children:eeY(e.target)})]})]}):null,(0,ev.jsxs)(gM,{children:[(0,ev.jsx)(gz,{children:"取消"}),(0,ev.jsx)(gP,{onClick:()=>{e&&n(e)},children:"确认移动"})]})]})})}function eeG(e){return e.slice(0,10)}function eeY(e){let t=e.path.replace(/\\/g,"/");return`${e.machineId} / ${e.name||t}`}function eeX({className:e}){return(0,ev.jsx)(eeU,{className:tK("h-full min-h-0 w-full rounded-[inherit] border-0 shadow-none",e),minBoardHeight:360,actionsPlacement:"container"})}var eeZ=["type"],eeJ=["dangerouslySetInnerHTML","ticks","scale"],eeQ=["id","scale"];function ee0(){return(ee0=Object.assign.bind()).apply(null,arguments)}function ee1(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ee2(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ee1(Object(n),!0).forEach(function(t){var r,i,a;r=e,i=t,a=n[t],(i=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(i))in r?Object.defineProperty(r,i,{value:a,enumerable:!0,configurable:!0,writable:!0}):r[i]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ee1(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function ee5(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n={};for(var r in e)if(({}).hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],-1===t.indexOf(n)&&({}).propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function ee4(e){var t=jU(),n=(0,ey.useRef)(null),r=N8(),{type:i}=e,a=ee5(e,eeZ),o=C2(r,"yAxis",i),l=(0,ey.useMemo)(()=>{if(null!=o)return ee2(ee2({},a),{},{type:o})},[o,a]);return(0,ey.useLayoutEffect)(()=>{null!=l&&(null===n.current?t(DL(l)):n.current!==l&&t(D$({prev:n.current,next:l})),n.current=l)},[l,t]),(0,ey.useLayoutEffect)(()=>()=>{n.current&&(t(DF(n.current)),n.current=null)},[t]),null}function ee3(e){var{yAxisId:t,className:n,width:r,label:i}=e,a=(0,ey.useRef)(null),o=(0,ey.useRef)(null),l=jY(NI),s=ND(),c=jU(),d="yAxis",u=jY(e=>_r(e,t)),f=jY(e=>_n(e,t)),h=jY(e=>_s(e,d,t,s)),p=jY(e=>AL(e,t));if((0,ey.useLayoutEffect)(()=>{if(!("auto"!==r||!u||Es(i)||(0,ey.isValidElement)(i))&&null!=p){var e=a.current;if(e){var n=e.getCalculatedWidth();Math.round(u.width)!==Math.round(n)&&c(DW({id:t,width:n}))}}},[h,u,c,i,t,r,p]),null==u||null==f||null==p)return null;var{dangerouslySetInnerHTML:m,ticks:g,scale:v}=e,x=ee5(e,eeJ),{id:y,scale:b}=p,w=ee5(p,eeQ);return ey.createElement($U,ee0({},x,w,{ref:a,labelRef:o,x:f.x,y:f.y,tickTextProps:"auto"===r?{width:void 0}:{width:r},width:u.width,height:u.height,className:eH("recharts-".concat(d," ").concat(d),n),viewBox:l,ticks:h,axisType:d,axisId:t}))}var ee6={allowDataOverflow:AR.allowDataOverflow,allowDecimals:AR.allowDecimals,allowDuplicatedCategory:AR.allowDuplicatedCategory,angle:AR.angle,axisLine:$$.axisLine,hide:!1,includeHidden:AR.includeHidden,interval:AR.interval,label:!1,minTickGap:AR.minTickGap,mirror:AR.mirror,orientation:AR.orientation,padding:AR.padding,reversed:AR.reversed,scale:AR.scale,tick:AR.tick,tickCount:AR.tickCount,tickLine:$$.tickLine,tickSize:$$.tickSize,type:AR.type,niceTicks:AR.niceTicks,width:AR.width,yAxisId:0},ee8=ey.memo(e=>{var t=CA(e,ee6);return ey.createElement(ey.Fragment,null,ey.createElement(ee4,{interval:t.interval,id:t.yAxisId,scale:t.scale,type:t.type,domain:t.domain,allowDataOverflow:t.allowDataOverflow,dataKey:t.dataKey,allowDuplicatedCategory:t.allowDuplicatedCategory,allowDecimals:t.allowDecimals,tickCount:t.tickCount,padding:t.padding,includeHidden:t.includeHidden,reversed:t.reversed,ticks:t.ticks,width:t.width,orientation:t.orientation,mirror:t.mirror,hide:t.hide,unit:t.unit,name:t.name,angle:t.angle,minTickGap:t.minTickGap,tick:t.tick,tickFormatter:t.tickFormatter,niceTicks:t.niceTicks}),ey.createElement(ee3,t))},Fi);function ee7({machines:e,defaultMachineId:t,className:n,...r}){let[i,a]=ey.useState(t??e[0]?.id),o=e.find(e=>e.id===i)??e[0],[l,s]=ey.useState({});if(!o)return null;let c=l[o.id]??o.selectedMetricId??o.metrics[0]?.id,d=o.metrics.find(e=>e.id===c)??o.metrics[0];return(0,ev.jsxs)("div",{className:tK("vtl-surface-card flex h-full min-h-0 flex-col rounded-[var(--surface-card-radius)] border","vtl-performance-monitor",n),...r,children:[(0,ev.jsx)(q0,{value:o.id,onValueChange:a,className:"shrink-0 px-3 pt-3",children:(0,ev.jsx)(q9,{className:"h-8",children:e.map(e=>(0,ev.jsx)(Ke,{value:e.id,children:e.name},e.id))})}),(0,ev.jsxs)("div",{className:"mt-3 grid min-h-0 flex-1 grid-cols-[14rem_minmax(0,1fr)] border-t",children:[(0,ev.jsx)("div",{className:"min-h-0 overflow-auto border-r p-2",children:o.metrics.map(e=>(0,ev.jsxs)("button",{type:"button",onClick:()=>s(t=>({...t,[o.id]:e.id})),className:tK("grid w-full grid-cols-[3.75rem_minmax(0,1fr)] gap-3 px-2 py-2 text-left transition-colors",e.id===c&&"bg-muted"),children:[(0,ev.jsx)(eti,{data:e.data,color:e.color}),(0,ev.jsxs)("span",{className:"min-w-0",children:[(0,ev.jsx)("span",{className:"block truncate text-base leading-tight",children:e.label}),(0,ev.jsx)("span",{className:"block truncate text-xs text-muted-foreground",children:e.value}),e.detail?(0,ev.jsx)("span",{className:"block truncate text-xs text-muted-foreground",children:e.detail}):null]})]},e.id))}),(0,ev.jsxs)("div",{className:"min-h-0 overflow-auto p-5",children:[(0,ev.jsxs)("div",{className:"grid grid-cols-[minmax(0,1fr)_auto] items-start gap-5",children:[(0,ev.jsxs)("div",{children:[(0,ev.jsx)("h2",{className:"text-4xl leading-none font-semibold tracking-normal",children:d?.title}),d?.subtitle?(0,ev.jsx)("p",{className:"mt-1 text-base text-muted-foreground",children:d.subtitle}):null]}),(0,ev.jsx)("div",{className:"text-right text-sm text-muted-foreground",children:d?.detail})]}),d?(0,ev.jsx)(ee9,{metric:d}):null]})]})]})}function ee9({metric:e}){return"cpu"===e.kind?(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(ete,{panel:{id:"cpu",title:"% 利用率",value:"100%",data:e.data,span:"full"},size:"large"}),(0,ev.jsx)(ett,{}),(0,ev.jsx)(etr,{details:e.details,columns:4})]}):"memory"===e.kind?(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(ete,{panel:{id:"memory",title:"内存使用量",value:e.detail,data:e.data,span:"full"},size:"large"}),(0,ev.jsx)(ett,{}),(0,ev.jsx)(etn,{segments:e.composition}),(0,ev.jsx)(etr,{details:e.details,columns:3})]}):"disk"===e.kind?(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(ete,{panel:{id:"disk-active",title:"活动时间",value:"100%",data:e.data,span:"full"},size:"large"}),(0,ev.jsx)(ett,{}),(0,ev.jsx)(ete,{panel:{id:"disk-rate",title:"磁盘传输速率",value:"500 KB/秒",data:e.panels?.[0]?.data??e.data,span:"full"},size:"short"}),(0,ev.jsx)(ett,{}),(0,ev.jsx)(etr,{details:e.details,columns:4})]}):"network"===e.kind?(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(ete,{panel:{id:"network",title:"吞吐量",value:"100 Kbps",data:e.data,span:"full",color:"danger"},size:"tall"}),(0,ev.jsx)(ett,{}),(0,ev.jsx)(etr,{details:e.details,columns:2})]}):(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)("div",{className:"mt-5 grid grid-cols-2 gap-3",children:(e.panels??[]).map(e=>(0,ev.jsx)(ete,{panel:e},e.id))}),(0,ev.jsx)(etr,{details:e.details,columns:3})]})}function ete({panel:e,size:t="normal"}){let n={short:"h-[4rem]",normal:"full"===e.span?"h-20":"h-24",large:"h-[17.5rem]",tall:"h-[21.5rem]"}[t];return(0,ev.jsxs)("div",{className:tK("mt-5","full"===e.span&&"col-span-2"),children:[(0,ev.jsxs)("div",{className:"mb-1 flex items-center justify-between text-sm",children:[(0,ev.jsx)("span",{className:"text-muted-foreground",children:e.title}),e.value?(0,ev.jsx)("span",{className:"text-muted-foreground tabular-nums",children:e.value}):null]}),(0,ev.jsx)(eta,{data:e.data,color:e.color,className:tK("w-full",n)})]})}function ett(){return(0,ev.jsxs)("div",{className:"mt-1 flex justify-between text-xs text-muted-foreground",children:[(0,ev.jsx)("span",{children:"60 秒"}),(0,ev.jsx)("span",{children:"0"})]})}function etn({segments:e}){let t=e&&e.length>0?e:[{label:"used",value:64},{label:"available",value:36}];return(0,ev.jsxs)("div",{className:"mt-5",children:[(0,ev.jsx)("div",{className:"mb-1 text-sm text-muted-foreground",children:"内存组合"}),(0,ev.jsx)("div",{className:"flex h-[3.25rem] w-full overflow-hidden border border-primary/75 bg-background",children:t.map((e,n)=>(0,ev.jsx)("div",{className:tK("h-full border-r border-primary/75 last:border-r-0",0===n?"bg-primary/20":n===t.length-1?"bg-background":"bg-primary/8"),style:{width:`${Math.max(0,e.value)}%`}},`${e.label}-${n}`))})]})}function etr({details:e,columns:t}){return e?.length?(0,ev.jsx)("div",{className:tK("mt-5 grid gap-x-10 gap-y-4",2===t&&"grid-cols-2",3===t&&"grid-cols-3",4===t&&"grid-cols-4"),children:e.map(([e,t])=>(0,ev.jsxs)("div",{className:"min-w-0",children:[(0,ev.jsx)("div",{className:"text-xs text-muted-foreground",children:e}),(0,ev.jsx)("div",{className:"truncate text-2xl leading-tight tabular-nums",children:t})]},e))}):null}function eti({data:e,color:t}){return(0,ev.jsx)(eta,{data:e,color:t,className:"h-10 w-full",strokeWidth:1.4,compact:!0})}function eta({data:e,color:t="default",className:n,strokeWidth:r=1.6,compact:i=!1}){let a=ey.useMemo(()=>(e.length>1?e:[0,0]).map((e,t)=>({index:t,value:Math.max(0,Math.min(100,e))})),[e]),o=ey.useMemo(()=>({value:{label:"Value",color:"danger"===t?"var(--destructive)":"var(--foreground)"}}),[t]);return(0,ev.jsx)(BW,{config:o,className:tK("aspect-auto border bg-background text-muted-foreground",n),initialDimension:{width:i?96:640,height:i?40:220},children:(0,ev.jsxs)($M,{data:a,margin:{top:i?2:6,right:0,bottom:0,left:0},children:[i?null:(0,ev.jsx)($9,{strokeDasharray:"0",stroke:"var(--border)",strokeOpacity:.7}),(0,ev.jsx)(Fm,{dataKey:"index",hide:!0,domain:["dataMin","dataMax"]}),(0,ev.jsx)(ee8,{hide:!0,domain:[0,100]}),i?null:(0,ev.jsx)(Bq,{cursor:!1,content:(0,ev.jsx)(BK,{hideLabel:!0,indicator:"line"})}),(0,ev.jsx)(Rz,{dataKey:"value",type:"monotone",fill:"var(--color-value)",fillOpacity:"danger"===t?.16:.12,stroke:"var(--color-value)",strokeWidth:r,isAnimationActive:!1,dot:!1,activeDot:!1})]})})}ee8.displayName="YAxis";let eto=eS("badge-alert",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]),etl=eS("circle-pause",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"10",x2:"10",y1:"15",y2:"9",key:"c1nkhi"}],["line",{x1:"14",x2:"14",y1:"15",y2:"9",key:"h65svq"}]]),ets={name:"名称",cpu:"CPU",memoryMb:"内存",diskMbps:"磁盘",networkMbps:"网络"};function etc({machines:e,defaultMachineId:t,className:n,...r}){let[i,a]=ey.useState(t??e[0]?.id),[o,l]=ey.useState("cpu"),[s,c]=ey.useState("desc"),[d,u]=ey.useState({}),f=e.find(e=>e.id===i)??e[0],h=ey.useMemo(()=>{if(!f)return[];let e=[...function(e){let t=new Map,n=new Map;for(let t of e)void 0!==t.pid&&n.set(t.pid,t);for(let i of e){var r;let e=function e(t,n,r=new Set){void 0!==t.pid&&r.add(t.pid);let i=void 0!==t.parentPid?n.get(t.parentPid):void 0;return!i||void 0===i.pid||r.has(i.pid)||["bash","containerd","dockerd","explorer","init","kernel_task","launchd","services","sh","smss","svchost","system","systemd","wininit","winlogon","zsh"].includes(etm(i))?t:e(i,n,r)}(i,n),a=etm(e),o=t.get(a)??{kind:"group",id:a,name:(r=e,r.appName?.trim()||r.name.trim().replace(/\.(exe|com)$/i,"")||r.id),children:[],status:[],cpu:0,memoryMb:0,diskMbps:0,networkMbps:0};o.children.push(i),o.cpu+=i.cpu,o.memoryMb+=i.memoryMb,o.diskMbps+=i.diskMbps,o.networkMbps+=i.networkMbps,o.status=function(e,t){let n=new Set(e??[]);for(let e of t??[])n.add(e);return Array.from(n)}(o.status,i.status),t.set(a,o)}return Array.from(t.values()).map(e=>({...e,cpu:etv(Math.min(100,e.cpu)),memoryMb:etv(e.memoryMb),diskMbps:etv(e.diskMbps),networkMbps:etv(e.networkMbps)}))}(f.processes)].sort((e,t)=>etg(e,t,o,s)),t=[];for(let n of e){if(n.children.length<=1){let e=n.children[0];e&&t.push(etp(e,0));continue}if(t.push(n),d[n.id])for(let e of[...n.children].sort((e,t)=>etg(e,t,o,s)))t.push(etp(e,1))}return t},[f,d,s,o]),p=ey.useMemo(()=>h.map(e=>({memoryMb:e.memoryMb,diskMbps:e.diskMbps,networkMbps:e.networkMbps})),[h]);function m(e){e===o?c(e=>"asc"===e?"desc":"asc"):(l(e),c("name"===e?"asc":"desc"))}return f?(0,ev.jsxs)("div",{className:tK("vtl-surface-card flex h-full min-h-0 flex-col rounded-[var(--surface-card-radius)] border","vtl-process-monitor",n),...r,children:[(0,ev.jsx)(q0,{value:f.id,onValueChange:a,className:"shrink-0 px-3 pt-3",children:(0,ev.jsx)(q9,{className:"h-8",children:e.map(e=>(0,ev.jsx)(Ke,{value:e.id,children:e.name},e.id))})}),(0,ev.jsxs)("div",{className:"mt-3 grid h-14 shrink-0 grid-cols-[minmax(12rem,1fr)_6.25rem_repeat(4,minmax(5rem,7rem))] border-y text-sm",children:[(0,ev.jsxs)("button",{type:"button",onClick:()=>m("name"),className:"flex items-end px-3 pb-2 text-left text-muted-foreground",children:["名称",(0,ev.jsx)(etd,{active:"name"===o,direction:s})]}),(0,ev.jsx)("div",{className:"flex items-end px-3 pb-2 text-muted-foreground",children:"状态"}),["cpu","memoryMb","diskMbps","networkMbps"].map(e=>{var t,n;return(0,ev.jsxs)("button",{type:"button",onClick:()=>m(e),className:"grid content-end border-l px-3 pb-2 text-right",children:[(0,ev.jsx)("span",{className:"text-lg leading-none text-foreground",children:(t=f.totals,"cpu"===(n=e)?`${Math.round(t.cpu)}%`:"memoryMb"===n?`${Math.round(t.memory)}%`:"diskMbps"===n?`${Math.round(t.disk)}%`:"networkMbps"===n?`${Math.round(t.network)}%`:"")}),(0,ev.jsxs)("span",{className:"mt-1 text-xs text-muted-foreground",children:[ets[e],(0,ev.jsx)(etd,{active:o===e,direction:s,className:"ml-1 inline-flex"})]})]},e)})]}),(0,ev.jsx)("div",{className:"vtl-scrollbar-hidden min-h-0 flex-1 overflow-auto",children:h.map(e=>{var t;return(0,ev.jsxs)("div",{className:tK("grid min-h-9 grid-cols-[minmax(12rem,1fr)_6.25rem_repeat(4,minmax(5rem,7rem))] items-center text-sm","group"===e.kind&&"bg-muted/35"),children:[(0,ev.jsx)(etu,{row:e,expanded:"group"===e.kind&&!!d[e.id],onToggle:()=>{"group"===e.kind&&u(t=>({...t,[e.id]:!t[e.id]}))}}),(0,ev.jsx)(etf,{platform:f.platform,status:e.status}),(0,ev.jsx)(eth,{value:e.cpu,max:100,label:`${e.cpu.toFixed(1)}%`}),(0,ev.jsx)(eth,{value:e.memoryMb,max:etx(p,"memoryMb"),label:(t=e.memoryMb)>=1024?`${ety(t/1024)} GB`:`${ety(t)} MB`}),(0,ev.jsx)(eth,{value:e.diskMbps,max:Math.max(1,etx(p,"diskMbps")),label:`${ety(e.diskMbps)} MB/秒`}),(0,ev.jsx)(eth,{value:e.networkMbps,max:Math.max(1,etx(p,"networkMbps")),label:`${ety(e.networkMbps)} Mbps`})]},`${e.kind}-${e.id}`)})})]}):null}function etd({active:e,direction:t,className:n}){return e?(0,ev.jsx)("asc"===t?Ks:Xw,{className:tK("ml-1 size-3",n)}):null}function etu({row:e,expanded:t,onToggle:n}){if("group"===e.kind){let r=t?cb:xx;return(0,ev.jsxs)("button",{type:"button","aria-expanded":t,onClick:n,className:"flex h-full min-w-0 items-center gap-2 px-3 text-left outline-none transition-colors hover:bg-muted/55 focus-visible:ring-[3px] focus-visible:ring-ring/20",children:[(0,ev.jsx)(r,{className:"size-4 shrink-0 text-muted-foreground"}),(0,ev.jsx)("span",{className:"size-2 rounded-sm bg-foreground/65"}),(0,ev.jsxs)("span",{className:"min-w-0 truncate font-medium",children:[e.name," (",e.children.length,")"]})]})}return(0,ev.jsxs)("div",{className:"flex min-w-0 items-center gap-2 px-3",style:{paddingLeft:e.depth>0?34:void 0},children:[e.depth>0?(0,ev.jsx)("span",{className:"size-1.5 rounded-full bg-muted-foreground/70"}):(0,ev.jsx)("span",{className:"size-1.5 rounded-full bg-foreground/65"}),(0,ev.jsx)("span",{className:tK("truncate",0===e.depth&&"font-medium"),children:e.name}),e.process.pid?(0,ev.jsx)("span",{className:"shrink-0 ui-text-kbd text-muted-foreground",children:e.process.pid}):null]})}function etf({platform:e,status:t}){return t?.length?(0,ev.jsxs)("div",{className:"flex items-center gap-1.5 px-3 text-muted-foreground",children:[t.includes("suspended")?(0,ev.jsx)(etl,{"aria-label":"linux"===e?"挂起进程":"挂起",className:"size-4"}):null,t.includes("auto-restart")?(0,ev.jsx)(s0,{"aria-label":"linux"===e?"自动重启进程":"自动重启",className:"size-4"}):null,t.includes("running")?(0,ev.jsx)(eto,{"aria-label":"运行",className:"size-4 text-primary"}):null]}):(0,ev.jsx)("div",{className:"px-3"})}function eth({value:e,max:t,label:n}){let r=Math.min(1,Math.max(0,e/Math.max(1,t))),i=r>.78,a=i?`color-mix(in oklch, var(--destructive) ${Math.round(18+42*r)}%, var(--background))`:`color-mix(in oklch, var(--foreground) ${Math.round(5+20*r)}%, var(--background))`;return(0,ev.jsx)("div",{className:"vtl-process-heat-cell h-full border-l px-3 text-right tabular-nums","data-hot":i?"":void 0,style:{background:a},children:(0,ev.jsx)("span",{className:tK("leading-9",i&&"text-destructive"),children:n})})}function etp(e,t){return{kind:"process",id:e.id,process:e,depth:t,name:e.appName&&0===t?e.appName:e.name,status:e.status,cpu:e.cpu,memoryMb:e.memoryMb,diskMbps:e.diskMbps,networkMbps:e.networkMbps}}function etm(e){return e.appId?.trim().toLowerCase()||e.appName?.trim().toLowerCase()||e.name.trim().toLowerCase().replace(/\.(exe|com)$/i,"")||e.id}function etg(e,t,n,r){let i="asc"===r?1:-1;return"name"===n?e.name.localeCompare(t.name)*i:(e[n]-t[n])*i}function etv(e){return Math.round(10*e)/10}function etx(e,t){return e.reduce((e,n)=>Math.max(e,n[t]),0)}function ety(e){return new Intl.NumberFormat("zh-CN",{maximumFractionDigits:+(e<10)}).format(e)}function etb({className:e}){let t=etj("/api/local/machines/processes"),n=etk("/machines/processes"),r=ey.useMemo(()=>[...t,...n],[t,n]);return(0,ev.jsx)(etc,{machines:r,className:tK("h-full min-h-0 w-full",e)})}function etw({className:e}){let t=etj("/api/local/machines/performance"),n=etk("/machines/performance"),r=ey.useMemo(()=>[...t,...n],[t,n]);return(0,ev.jsx)(ee7,{machines:r,className:tK("h-full min-h-0 w-full",e)})}function etj(e){let[t,n]=ey.useState([]);return ey.useEffect(()=>{let t=!0,r=!1;async function i(){if(!r){r=!0;try{let r=await fetch(tJ(e),{cache:"no-store"});if(!r.ok)return;let i=await r.json();t&&n(i.machines)}catch{t&&n([])}finally{r=!1}}}i();let a=window.setInterval(i,2e3);return()=>{t=!1,window.clearInterval(a)}},[e]),t}function etk(e){let{machines:t}=WW(),[n,r]=ey.useState([]),i=ey.useMemo(()=>t.filter(e=>!e.isLocal&&"online"===e.status).map(e=>e.id),[t]);return ey.useEffect(()=>{if(0===i.length)return void r([]);let t=!0,n=!1;async function a(){if(!n){n=!0;try{let n=await Promise.all(i.map(async t=>{try{return(await wy(t,e)).machines??[]}catch{return[]}}));t&&r(n.flat())}finally{n=!1}}}a();let o=window.setInterval(a,5e3);return()=>{t=!1,window.clearInterval(o)}},[i,e]),n}let etS=eS("circle-play",[["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z",key:"kmsa83"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]),etN=eS("radio",[["path",{d:"M16.247 7.761a6 6 0 0 1 0 8.478",key:"1fwjs5"}],["path",{d:"M19.075 4.933a10 10 0 0 1 0 14.134",key:"ehdyv1"}],["path",{d:"M4.925 19.067a10 10 0 0 1 0-14.134",key:"1q22gi"}],["path",{d:"M7.753 16.239a6 6 0 0 1 0-8.478",key:"r2q7qm"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]),etC={loading:"Starting terminal...",newTerminal:"New terminal",closeTerminal:e=>`Close ${e}`,terminalList:"Terminal sessions",status:{idle:"Idle",running:"Running",success:"Succeeded",error:"Failed"}},etM=[{id:"powershell",title:"PowerShell",shell:"PowerShell",cwd:"D:\\Projects\\Vantaloom-ui",status:"idle",initialOutput:"PowerShell 7.6.1\r\nPS D:\\Projects\\Vantaloom-ui> "}];function etE(e,t,n){return e.getPropertyValue(t).trim()||n}function etO(e,t=!1){let n=getComputedStyle(e),r=etE(n,"--foreground","#18181b"),i=etE(n,"--terminal-background",etE(n,"--background","#ffffff")),a="transparent"===i?etE(n,"--background","#ffffff"):i,o=etE(n,"--muted-foreground","#71717a"),l=etE(n,"--border","#e4e4e7"),s=etE(n,"--selection","#18181b");return{background:i,foreground:r,cursor:t?"transparent":r,cursorAccent:t?"transparent":a,selectionBackground:`color-mix(in oklch, ${s} 18%, transparent)`,selectionForeground:etE(n,"--selection-foreground","#ffffff"),scrollbarSliderBackground:`color-mix(in oklch, ${l} 78%, transparent)`,scrollbarSliderHoverBackground:l,black:r,red:etE(n,"--terminal-red","#bf616a"),green:etE(n,"--terminal-green","#5e8c61"),yellow:etE(n,"--terminal-yellow","#b06f3c"),blue:etE(n,"--terminal-blue","#5e81ac"),magenta:etE(n,"--terminal-magenta","#b48ead"),cyan:etE(n,"--terminal-cyan","#4c8da8"),white:i,brightBlack:o,brightRed:etE(n,"--terminal-bright-red","#d06f79"),brightGreen:etE(n,"--terminal-bright-green","#6b9a70"),brightYellow:etE(n,"--terminal-bright-yellow","#c2824b"),brightBlue:etE(n,"--terminal-bright-blue","#6f91ba"),brightMagenta:etE(n,"--terminal-bright-magenta","#c19ac0"),brightCyan:etE(n,"--terminal-bright-cyan","#5aa0b8"),brightWhite:r}}function etP(e){return void 0===e?[]:Array.isArray(e)?e:[e]}function etz({initialOutput:t,data:n,dataKey:r,options:i,readOnly:a=!1,autoFocus:o=!1,localEcho:l=!1,onData:s,onResize:c,onReady:d,labels:u,className:f,terminalClassName:h,...p}){let m=ey.useMemo(()=>({loading:etC.loading,...u}),[u]),g=ey.useRef(null),v=ey.useRef(null),x=ey.useRef(void 0),y=ey.useRef(s),b=ey.useRef(c),w=ey.useRef(d),j=ey.useRef(i),k=ey.useRef(a),S=ey.useRef(l),N=ey.useRef(!1),C=ey.useRef(void 0),M=ey.useRef(!1),[E,O]=ey.useState(!1);return ey.useEffect(()=>{y.current=s,b.current=c,w.current=d,j.current=i,k.current=a,S.current=l},[l,s,d,c,i,a]),ey.useEffect(()=>{let n,r=!1,i=[];!async function(){var a;let l,s,c,d,u;if(!g.current||M.current)return;M.current=!0;let[{Terminal:f},{FitAddon:h},{SearchAddon:p},{WebLinksAddon:m}]=await Promise.all([e.A(93626),e.A(16118),e.A(24306),e.A(46866)]);if(r||!g.current)return;let C=new f({convertEol:!1,cursorBlink:!0,cursorStyle:"block",drawBoldTextInBrightColors:!1,fontFamily:(l=getComputedStyle(a=g.current),u=(c=etE(l,"--font-family-mono",s='"Cascadia Mono", "Cascadia Code", Consolas, "SFMono-Regular", "Liberation Mono", monospace'),d=getComputedStyle(a),c.replace(/var\((--[a-zA-Z0-9-_]+)(?:,[^)]+)?\)/g,(e,t)=>d.getPropertyValue(t).trim()||"")).trim(),`"Cascadia Mono", "Cascadia Code", Consolas, ${u||s}`),fontSize:13,letterSpacing:0,lineHeight:1.25,macOptionIsMeta:!0,minimumContrastRatio:4.5,scrollback:5e3,theme:etO(g.current),...j.current,allowTransparency:!0}),E=new h,P=new p,z=new m;function A(){try{E.fit(),b.current?.({cols:C.cols,rows:C.rows})}catch{}}for(let e of(C.loadAddon(E),C.loadAddon(P),C.loadAddon(z),C.open(g.current),v.current=C,x.current=E,O(!0),requestAnimationFrame(A),(n=new ResizeObserver(A)).observe(g.current),i.push(C.onData(e=>{k.current||(S.current&&("\r"===e?C.write("\r\n"):""===e?C.write("\b \b"):C.write(e)),y.current?.(e))})),etP(t)))C.write(e);w.current?.({terminal:C,fitAddon:E,searchAddon:P,webLinksAddon:z,fit:A,focus:()=>C.focus(),clear:()=>C.clear(),setCursorSuppressed:function(e){let t=g.current;t&&(N.current=e,t.toggleAttribute("data-vtl-terminal-cursor-suppressed",e),C.options.theme=etO(t,e))},write:(e,t)=>C.write(e,t),writeln:e=>C.writeln(e)}),o&&C.focus()}();let a=new MutationObserver(()=>{let e=v.current,t=g.current;e&&t&&(e.options.theme=etO(t,N.current))});return a.observe(document.documentElement,{attributeFilter:["class","style"],attributes:!0}),()=>{for(let e of(r=!0,a.disconnect(),n?.disconnect(),i))e.dispose();v.current?.dispose(),v.current=null,x.current=void 0,N.current=!1,M.current=!1,O(!1)}},[o,t]),ey.useEffect(()=>{let e=v.current;if(e&&C.current!==r)for(let t of(C.current=r,etP(n)))e.write(t)},[n,r]),(0,ev.jsxs)("div",{"data-slot":"terminal-tab-surface",className:tK("relative size-full min-h-0 overflow-hidden bg-background text-foreground",f),...p,children:[(0,ev.jsx)("div",{ref:g,className:tK("vtl-terminal-xterm size-full overflow-hidden p-1.5 font-mono","[&_.xterm]:h-full [&_.xterm]:p-0 [&_.xterm-viewport]:!bg-transparent","[&_.xterm-screen]:!bg-transparent [&_.xterm-helper-textarea]:!outline-none","[&[data-vtl-terminal-cursor-suppressed]_.xterm-cursor]:!opacity-0","[&_.xterm-viewport::-webkit-scrollbar]:w-2.5 [&_.xterm-viewport::-webkit-scrollbar-track]:bg-transparent","[&_.xterm-viewport::-webkit-scrollbar-thumb]:rounded-full [&_.xterm-viewport::-webkit-scrollbar-thumb]:border-[3px]","[&_.xterm-viewport::-webkit-scrollbar-thumb]:border-transparent [&_.xterm-viewport::-webkit-scrollbar-thumb]:bg-border [&_.xterm-viewport::-webkit-scrollbar-thumb]:bg-clip-content",h)}),!E&&(0,ev.jsx)("div",{className:"pointer-events-none absolute inset-0 grid place-items-center text-muted-foreground ui-text-code",children:m.loading})]})}function etA({status:e="idle"}){return"running"===e?(0,ev.jsx)(etS,{className:"size-3.5 text-foreground"}):"success"===e?(0,ev.jsx)(ez,{className:"size-3.5 text-foreground"}):"error"===e?(0,ev.jsx)(eP,{className:"size-3.5 text-destructive"}):(0,ev.jsx)(bs,{className:"size-3.5 text-muted-foreground"})}function etI({session:e}){return e.aiControlled?(0,ev.jsx)(etN,{className:"size-3.5 text-destructive"}):(0,ev.jsx)(etA,{status:e.status})}function et_({sessions:e,defaultSessions:t=etM,activeSessionId:n,defaultActiveSessionId:r,onActiveSessionChange:i,onSessionsChange:a,onCreateSession:o,onCloseSession:l,onSessionData:s,onSessionResize:c,onSessionReady:d,showTabs:u=!0,allowCreateSession:f=!0,readOnly:h=!1,localEcho:p=!1,terminalOptions:m,labels:g,className:v,tabListClassName:x,terminalClassName:y,...b}){let w=ey.useMemo(()=>({...etC,...g,status:{...etC.status,...g?.status}}),[g]),[j,k]=ey.useState(t),S=e??j,N=S[0],[C,M]=ey.useState(r??N?.id),E=n??(S.some(e=>e.id===C)?C:N?.id),O=S.find(e=>e.id===E)??N;function P(t){void 0===e&&k(t),a?.(t)}function z(e){e.disabled||(void 0===n&&M(e.id),i?.(e.id,e))}return(0,ev.jsxs)("div",{"data-slot":"terminal-tab-group",className:tK("vtl-surface-panel grid min-h-0 overflow-hidden rounded-[var(--surface-panel-radius)] border",u?"grid-rows-[auto_minmax(0,1fr)]":"grid-rows-[minmax(0,1fr)]",v),...b,children:[u&&(0,ev.jsxs)("div",{"data-slot":"terminal-tab-list",role:"tablist","aria-label":w.terminalList,className:tK("flex min-w-0 items-center gap-1 border-b bg-muted/35 px-2 py-1.5",x),children:[(0,ev.jsx)(m1,{className:"ml-1 size-4 shrink-0 text-muted-foreground"}),(0,ev.jsx)("div",{className:"flex min-w-0 flex-1 items-center gap-1 overflow-x-auto",children:S.map(e=>{let t=e.id===O?.id;return(0,ev.jsxs)("div",{className:tK("group flex h-7 min-w-0 shrink-0 items-center rounded-md border border-transparent ui-text-control","transition-colors hover:bg-background/80",t?"bg-background text-foreground shadow-xs":"text-muted-foreground",e.disabled&&"pointer-events-none opacity-50"),children:[(0,ev.jsxs)("button",{type:"button",role:"tab","aria-selected":t,"aria-controls":`terminal-panel-${e.id}`,disabled:e.disabled,onClick:()=>z(e),className:"flex h-full min-w-0 items-center gap-1.5 rounded-md px-2 text-left outline-none focus-visible:ring-[3px] focus-visible:ring-ring/20",children:[(0,ev.jsx)(etI,{session:e}),(0,ev.jsx)("span",{className:"max-w-36 truncate",children:e.title}),e.shell&&(0,ev.jsx)("span",{className:"hidden text-muted-foreground ui-text-kbd sm:inline",children:e.shell})]}),e.closable&&(0,ev.jsx)("button",{type:"button","aria-label":w.closeTerminal(e.title),onClick:t=>{t.stopPropagation();l?.(e.id,e);let n=S.filter(t=>t.id!==e.id);if(P(n),e.id===E){let e=n.at(-1);e&&z(e)}},className:"mr-1 grid size-4 place-items-center rounded-sm text-muted-foreground opacity-0 outline-none transition-opacity hover:bg-muted hover:text-foreground focus-visible:opacity-100 focus-visible:ring-[3px] focus-visible:ring-ring/20 group-hover:opacity-100",children:(0,ev.jsx)(ms,{className:"size-3"})})]},e.id)})}),f&&(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-xs","aria-label":w.newTerminal,onClick:function(){let e=o?.()??{id:`terminal-${Date.now()}`,title:`Terminal ${S.length+1}`,status:"idle",initialOutput:"",closable:!0};P([...S,e]),z(e)},className:"size-7 shrink-0",children:(0,ev.jsx)(sQ,{className:"size-3.5"})})]}),(0,ev.jsx)("div",{"data-slot":"terminal-tab-panels",className:"relative min-h-0 overflow-hidden",children:S.map(e=>{let t=e.id===O?.id;return(0,ev.jsx)(etD,{session:e,selected:t,terminalOptions:m,readOnly:h,localEcho:p,onSessionData:s,onSessionResize:c,onSessionReady:d,labels:w,terminalClassName:y},e.id)})})]})}function etD({session:e,selected:t,terminalOptions:n,readOnly:r,localEcho:i,onSessionData:a,onSessionResize:o,onSessionReady:l,labels:s,terminalClassName:c}){let d=ey.useRef(null),u=ey.useRef(t);return ey.useEffect(()=>{if(t&&!u.current&&d.current){let e=d.current;requestAnimationFrame(()=>{e&&(e.fit(),e.terminal.refresh(0,e.terminal.rows-1),e.terminal.focus())})}u.current=t},[t]),(0,ev.jsx)("div",{id:`terminal-panel-${e.id}`,role:"tabpanel","aria-hidden":!t,"data-active":t,className:"absolute inset-0 min-h-0",style:{display:t?"block":"none"},children:(0,ev.jsx)(etz,{initialOutput:e.initialOutput,options:{...n,...e.options},readOnly:r||e.disabled,localEcho:i,autoFocus:t,onData:t=>a?.(e.id,t),onResize:t=>o?.(e.id,t),onReady:t=>{d.current=t,l?.(e.id,t)},labels:s,terminalClassName:c})})}function etT({className:e,scopeId:t,state:n,onStateChange:r}){let[i,a]=ey.useState([]),[o,l]=ey.useState([]),[s,c]=ey.useState(),[d,u]=ey.useState("local"),[f,h]=ey.useState(),[p,m]=ey.useState(!1),[g,v]=ey.useState(!1),x=ey.useRef(new Map),y=ey.useRef(new Map),b=ey.useRef(new Map),w=ey.useRef(new Map),j=ey.useRef(new Map),k=ey.useRef(new Map),S=ey.useRef(new Map),N=ey.useRef(new Map),C=ey.useRef(!1),M=ey.useRef(n?.autoStart===!1),E=ey.useRef(n),O=ey.useRef(r),P=Array.isArray(n?.sessionIds)?n.sessionIds.join("\0"):"__all__",z=t?.trim()||void 0,A=z??"__unscoped__";ey.useEffect(()=>{E.current=n},[n]),ey.useEffect(()=>{O.current=r},[r]);let I=i.find(e=>e.id===d)??i[0],_=I?.shells.find(e=>e.id===f)??I?.shells[0],D=ey.useMemo(()=>o.map(e=>e.id),[o]),T=ey.useMemo(()=>o.filter(e=>e.aiControlled).map(e=>e.id),[o]),R=D.join("\0"),L=T.join("\0"),$=ey.useCallback((e,t)=>{let n=y.current.get(e);if(t){let t=j.current.get(e);void 0!==t&&(window.clearTimeout(t),j.current.delete(e))}n?.setCursorSuppressed(t)},[]),F=ey.useCallback(e=>{let t=j.current.get(e);void 0!==t&&window.clearTimeout(t);let n=window.setTimeout(()=>{j.current.delete(e),$(e,!1)},90);j.current.set(e,n)},[$]),B=ey.useCallback(e=>{let t=w.current.get(e),n=y.current.get(e);if(!t||!n||t.writing)return;if(!t.buffer){w.current.delete(e),F(e);return}void 0!==t.drainTimer&&(window.clearTimeout(t.drainTimer),t.drainTimer=void 0);let r=t.buffer.slice(0,65536);t.buffer=t.buffer.slice(r.length),t.writing=!0,$(e,!0);try{n.write(r,()=>{(t.writing=!1,y.current.has(e))?t.buffer?t.drainTimer=window.setTimeout(()=>B(e),0):(w.current.delete(e),F(e)):w.current.delete(e)})}catch{t.writing=!1,w.current.delete(e),F(e)}},[F,$]),V=ey.useCallback((e,t)=>{if(!t)return;if(!y.current.get(e))return void b.current.set(e,`${b.current.get(e)??""}${t}`);let n=w.current.get(e);(n||(n={buffer:"",writing:!1},w.current.set(e,n)),n.buffer+=t,$(e,!0),n.buffer.length>=65536)?B(e):n.writing||void 0!==n.drainTimer||(n.drainTimer=window.setTimeout(()=>B(e),8))},[B,$]),H=ey.useCallback((e,t)=>{(k.current.set(e,t.sequence),"output"===t.type&&t.data)?V(e,t.data):"status"===t.type&&t.status&&l(n=>n.map(n=>n.id===e?{...n,status:t.status??n.status,updatedAt:t.createdAt}:n))},[V]),W=ey.useCallback(e=>{if(x.current.has(e))return;let t=new EventSource(function(e,t=0){let n=new URLSearchParams;t>0&&n.set("after",String(t));let r=n.toString();return tJ(`/api/local/terminals/sessions/${encodeURIComponent(e)}/events${r?`?${r}`:""}`)}(e,k.current.get(e)??0));t.onmessage=t=>{try{H(e,JSON.parse(t.data))}catch{return}},x.current.set(e,t)},[H]),U=ey.useCallback(async()=>{if(I&&!p){M.current=!1,m(!0);try{let e=await Ub({machineId:I.id,scopeId:z,shell:_?.id,cwd:I.defaultCwd,cols:100,rows:30});l(t=>t.some(t=>t.id===e.id)?t:[...t,e]),c(e.id),W(e.id)}catch{return}finally{m(!1)}}},[p,W,I,_,z]);function q(e){let t=S.current.get(e);return t||(t={buffer:"",inFlight:!1},S.current.set(e,t)),t}return ey.useEffect(()=>{let e=!0;return v(!1),async function(){try{let t=E.current,n=t?.sessionIds,r=Array.isArray(n)?new Set(n):void 0,[i,o]=await Promise.all([Ux(),Uy(z)]);if(!e)return;let s=r?o.sessions.filter(e=>r.has(e.id)):o.sessions;C.current=!1,M.current=t?.autoStart===!1,a(i.machines),l(s),c(e=>{let n=t?.activeSessionId??e;return n&&s.some(e=>e.id===n)?n:s[0]?.id});let d=i.machines[0];if(d){let e=i.machines.find(e=>e.id===t?.selectedMachineId)??d;u(e.id),h(n=>t?.selectedShellId&&e.shells.some(e=>e.id===t.selectedShellId)?t.selectedShellId:n&&e.shells.some(e=>e.id===n)?n:e.shells[0]?.id)}}finally{e&&v(!0)}}(),()=>{e=!1}},[P,z,A]),ey.useEffect(()=>{g&&O.current?.({sessionIds:D,activeSessionId:s,selectedMachineId:d,selectedShellId:f,autoStart:!M.current,aiControlledSessionIds:T})},[s,T,L,g,d,f,D,R]),ey.useEffect(()=>{let e=new Set(D);for(let e of o)W(e.id);for(let[t,n]of x.current)e.has(t)||(n.close(),x.current.delete(t))},[W,D,o]),ey.useEffect(()=>{!g||C.current||M.current||o.length>0||0===i.length||(C.current=!0,U())},[U,g,i.length,o.length]),ey.useEffect(()=>()=>{for(let e of x.current.values())e.close();for(let e of S.current.values())void 0!==e.timer&&window.clearTimeout(e.timer);for(let e of w.current.values())void 0!==e.drainTimer&&window.clearTimeout(e.drainTimer);for(let[e,t]of j.current)window.clearTimeout(t),$(e,!1);S.current.clear(),w.current.clear(),j.current.clear()},[$]),(0,ev.jsxs)("div",{className:tK("grid h-full min-h-0 w-full grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-[inherit] border bg-card",e),children:[(0,ev.jsxs)("div",{className:"flex min-w-0 items-center gap-1.5 border-b bg-muted/35 px-2 py-1.5",children:[(0,ev.jsxs)(vA,{value:I?.id,onValueChange:e=>{u(e);let t=i.find(t=>t.id===e);h(t?.shells[0]?.id)},children:[(0,ev.jsxs)(xd,{size:"sm",className:"max-w-44",children:[(0,ev.jsx)(xA,{className:"size-3.5"}),(0,ev.jsx)(vT,{placeholder:"机器"})]}),(0,ev.jsx)(xh,{align:"start",children:i.map(e=>(0,ev.jsx)(xp,{value:e.id,children:e.name},e.id))})]}),(0,ev.jsxs)(vA,{value:_?.id,onValueChange:h,children:[(0,ev.jsx)(xd,{size:"sm",className:"max-w-44",children:(0,ev.jsx)(vT,{placeholder:"Shell"})}),(0,ev.jsx)(xh,{align:"start",children:I?.shells.map(e=>(0,ev.jsx)(xp,{value:e.id,children:e.name},e.id))})]}),(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm","aria-label":"新建终端",disabled:!I||p,onClick:()=>void U(),className:"ml-auto",children:(0,ev.jsx)(sQ,{className:"size-4"})})]}),(0,ev.jsx)(et_,{sessions:o.map(etR),activeSessionId:s,allowCreateSession:!1,localEcho:!1,labels:{loading:"启动终端...",terminalList:"终端会话",closeTerminal:e=>`关闭 ${e}`},onActiveSessionChange:e=>c(e),onCloseSession:e=>{let t,n,r;return x.current.get(e)?.close(),x.current.delete(e),y.current.delete(e),b.current.delete(e),t=w.current.get(e),t?.drainTimer!==void 0&&window.clearTimeout(t.drainTimer),w.current.delete(e),k.current.delete(e),void 0!==(n=j.current.get(e))&&(window.clearTimeout(n),j.current.delete(e)),r=S.current.get(e),void(r?.timer!==void 0&&window.clearTimeout(r.timer),S.current.delete(e),N.current.delete(e),l(t=>{let n=t.filter(t=>t.id!==e);return 0===n.length&&(M.current=!0),c(t=>t&&t!==e&&n.some(e=>e.id===t)?t:n[0]?.id),n}),Uw(e).catch(()=>{}))},onSessionData:function(e,t){let n=q(e);n.buffer+=t,function e(t){let n=q(t);n.inFlight||void 0!==n.timer||(n.timer=window.setTimeout(()=>{n.timer=void 0,function(t){let n=S.current.get(t);if(!n||n.inFlight)return;let r=n.buffer;if(n.buffer="",!r){void 0===n.timer&&S.current.delete(t);return}n.inFlight=!0,Uj(t,r).catch(()=>{}).finally(()=>{let n=S.current.get(t);n&&(n.inFlight=!1,n.buffer?e(t):void 0===n.timer&&S.current.delete(t))})}(t)},6))}(e)},onSessionResize:function(e,t){let n=`${t.cols}x${t.rows}`;N.current.get(e)!==n&&(N.current.set(e,n),Uk(e,t).then(e=>{l(t=>t.map(t=>t.id===e.id?{...t,...e}:t))}).catch(()=>{}))},onSessionReady:function(e,t){y.current.set(e,t);let n=b.current.get(e);n&&(b.current.delete(e),V(e,n))},className:"min-h-0 rounded-none border-0"})]})}function etR(e){return{id:e.id,title:e.title,shell:e.machineName,cwd:e.cwd,status:function(e){switch(e){case"running":return"running";case"exited":case"closed":return"success";case"failed":return"error";default:return"idle"}}(e.status),closable:!0,initialOutput:"",aiControlled:e.aiControlled,controller:e.controller}}function etL(e,t={}){let n="h-full min-h-0 w-full overflow-hidden rounded-[inherit]";switch(e.kind){case"file-tab-viewer":{let r=Un("file-tab-viewer"),i=e.file;if(!i&&t.onRequestFileTab)return(0,ev.jsx)(Yp,{className:n,onChooseFile:t.onRequestFileTab});return(0,ev.jsx)(QY,{className:`${n} border-0`,file:i??r.file,value:e.defaultValue??r.defaultValue??"",defaultValue:e.defaultValue??r.defaultValue,view:e.defaultView,mode:e.defaultMode,modified:e.modified,onValueChange:n=>t.onTabChange?.({...e,defaultValue:n,modified:!0}),onViewChange:n=>t.onTabChange?.({...e,defaultView:n}),onModeChange:n=>t.onTabChange?.({...e,defaultMode:n}),onSave:t.onSaveFileTab?n=>t.onSaveFileTab?.(e,n):void 0,onHistory:()=>t.onOpenFileHistory?.(e),labels:{review:"审阅",edit:"编辑",view:"视图",code:"代码",preview:"预览",hex:"十六进制",actions:"文件菜单",save:"保存",saving:"保存中",history:"历史版本"}})}case"browser-tab-viewer":return(0,ev.jsx)(YE,{className:`${n} border-0`,defaultUrl:e.defaultUrl??Un("browser-tab-viewer").defaultUrl});case"diff-tab-viewer":{let t=Un("diff-tab-viewer");return(0,ev.jsx)(X1,{className:`${n} border-0`,file:e.file??t.file,diff:e.diff??t.diff??""})}case"data-table-tab-viewer":{let r=Un("data-table-tab-viewer"),i=e.file;if(!i&&t.onRequestFileTab)return(0,ev.jsx)(Yp,{className:n,onChooseFile:t.onRequestFileTab});return(0,ev.jsx)(XH,{className:`${n} border-0`,file:{name:i?.name??r.file?.name??"data",path:i?.path??r.file?.path,type:et$(e)},source:void 0!==e.defaultValue?{type:et$(e),content:e.defaultValue}:void 0,data:e.tableData??r.tableData??[]})}case"terminal-tab-group":return(0,ev.jsx)(etT,{className:`${n} border-0`,scopeId:t.terminalScopeId,state:e.terminal??t.terminalState,onStateChange:t.onTerminalStateChange})}}function et$(e){return`${e.file?.mimeType??""} ${e.file?.path??e.file?.name??""}`.toLowerCase().includes("json")?"json":"csv"}function etF(e,t={}){let n="h-full min-h-0 w-full overflow-hidden rounded-[inherit]";switch(e){case"multi-tab-system":{let e=t.nodeId,r=void 0!==t.tabs?t.tabs:[];return(0,ev.jsx)(QQ,{className:n,contentClassName:"min-h-0",tabs:r.map(n=>({id:n.id,title:n.title,meta:n.meta,modified:n.modified,icon:Ut(n.kind),content:etL(n,{terminalScopeId:e?`${t.terminalScopeId??`canvas:node:${e}`}:tab:${n.id}`:t.terminalScopeId,terminalState:n.terminal,onTerminalStateChange:r=>e?t.onTabChange?.(e,{...n,terminal:r}):void 0,onRequestFileTab:()=>t.onRequestFileTab?.({nodeId:e,insertIndex:r.length}),onTabChange:n=>{e&&t.onTabChange?.(e,n)},onSaveFileTab:(n,r)=>e?t.onSaveFileTab?.(e,n,r):void 0,onOpenFileHistory:n=>e?t.onOpenFileHistory?.(e,n):void 0})})),activeTabId:t.activeTabId,detachable:!0,externalDropTypes:[fc],createLabel:"打开文件",emptyContent:(0,ev.jsx)(Yp,{onChooseFile:()=>t.onRequestFileTab?.({nodeId:e,insertIndex:r.length})}),onCreateTab:()=>{t.onRequestFileTab?.({nodeId:e,insertIndex:r.length})},onActiveTabChange:n=>{e&&t.onActiveTabChange?.(e,n)},onTabsChange:n=>{if(!e)return;let i=n.map(e=>r.find(t=>t.id===e.id)).filter(e=>!!e);t.onTabsChange?.(e,i)},onTabDetach:(n,i)=>{if(!e)return!1;let a=r.find(e=>e.id===n.id);return!!a&&t.onTabDetach?.(e,a,{clientX:i.clientX,clientY:i.clientY})},onExternalTabDrop:({insertIndex:n,nativeEvent:r})=>{e&&t.onExternalTabDrop?.(e,n,r)}})}case"file-tree-panel":if(t.workspaceFolders)return(0,ev.jsx)(Yf,{folders:t.workspaceFolders,className:`${n} max-w-none`,onOpenFile:t.onOpenWorkspaceFile});return(0,ev.jsx)(eej,{className:`${n} max-w-none`,onOpenFile:t.onOpenWorkspaceFile});case"process-management":return(0,ev.jsx)(etb,{className:`${n} rounded-[inherit] border-0`});case"machine-performance":return(0,ev.jsx)(etw,{className:`${n} rounded-[inherit] border-0`});case"firewall-policy-workspace":return(0,ev.jsx)("div",{className:`${n} bg-card`,children:(0,ev.jsx)(eey,{})});case"machine-file-management":return(0,ev.jsx)(eeX,{className:`${n} bg-card`});case"agent-conversation-panel":return(0,ev.jsx)(GY,{className:`${n} vtl-canvas-agent-conversation-node`,composerClassName:"max-w-[42rem]"});case"file-tab-viewer":case"browser-tab-viewer":case"diff-tab-viewer":case"data-table-tab-viewer":case"terminal-tab-group":return etL(t.tab??Un(e,`${e}-tab`),{terminalState:t.terminalState,terminalScopeId:t.terminalScopeId,onTerminalStateChange:t.onTerminalStateChange,onRequestFileTab:()=>t.onRequestFileTab?.({nodeId:t.nodeId}),onTabChange:e=>{t.nodeId&&t.onTabChange?.(t.nodeId,e)},onSaveFileTab:(e,n)=>t.nodeId?t.onSaveFileTab?.(t.nodeId,e,n):void 0,onOpenFileHistory:e=>t.nodeId?t.onOpenFileHistory?.(t.nodeId,e):void 0})}}function etB({kind:e,...t}){return etF(e,t)}let etV="application/vnd.vantaloom.agent-pane-shredder",etH="application/vnd.vantaloom.agent-pane-cutter",etW=[{id:"quad",label:"四分",slots:4,icon:(0,ev.jsx)(xz,{})},{id:"vertical-split",label:"上下二分",slots:2,icon:(0,ev.jsx)(Yx,{})},{id:"horizontal-split",label:"左右二分",slots:2,icon:(0,ev.jsx)(Ym,{})},{id:"left-two-right-one",label:"左二右一",slots:3,icon:(0,ev.jsx)(nu,{})},{id:"left-one-right-two",label:"左一右二",slots:3,icon:(0,ev.jsx)(WY,{})},{id:"top-two-bottom-one",label:"上二下一",slots:3,icon:(0,ev.jsx)(Yx,{})},{id:"top-one-bottom-two",label:"上一下二",slots:3,icon:(0,ev.jsx)(Yv,{})},{id:"single",label:"整窗口",slots:1,icon:(0,ev.jsx)(Yg,{})}];function etU(e,t,n=[50,50]){let r=e?.[t],i=r?.[0],a=r?.[1];return["number"==typeof i&&i>0?i:n[0],"number"==typeof a&&a>0?a:n[1]]}function etq(e,t){return{[e[0]]:t[0],[e[1]]:t[1]}}function etK(e,t){return[e[t[0]]??50,e[t[1]]??50]}function etG({mode:e,sizes:t,onSizeGroupChange:n,children:r}){if("single"===e)return(0,ev.jsx)("div",{className:"size-full min-h-0",children:r[0]});if("horizontal-split"===e){let e=etU(t,"outer"),i=["pane-0","pane-1"];return(0,ev.jsxs)(qN,{direction:"horizontal",defaultLayout:etq(i,e),onLayoutChanged:e=>n?.("outer",etK(e,i)),children:[(0,ev.jsx)(qC,{id:i[0],defaultSize:e[0],minSize:24,children:r[0]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:i[1],defaultSize:e[1],minSize:24,children:r[1]})]})}if("vertical-split"===e){let e=etU(t,"outer"),i=["pane-0","pane-1"];return(0,ev.jsxs)(qN,{direction:"vertical",defaultLayout:etq(i,e),onLayoutChanged:e=>n?.("outer",etK(e,i)),children:[(0,ev.jsx)(qC,{id:i[0],defaultSize:e[0],minSize:24,children:r[0]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:i[1],defaultSize:e[1],minSize:24,children:r[1]})]})}if("left-two-right-one"===e){let e=etU(t,"outer",[58,42]),i=etU(t,"left"),a=["left","right"],o=["pane-0","pane-1"];return(0,ev.jsxs)(qN,{direction:"horizontal",defaultLayout:etq(a,e),onLayoutChanged:e=>n?.("outer",etK(e,a)),children:[(0,ev.jsx)(qC,{id:a[0],defaultSize:e[0],minSize:24,children:(0,ev.jsxs)(qN,{direction:"vertical",defaultLayout:etq(o,i),onLayoutChanged:e=>n?.("left",etK(e,o)),children:[(0,ev.jsx)(qC,{id:o[0],defaultSize:i[0],minSize:20,children:r[0]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:o[1],defaultSize:i[1],minSize:20,children:r[1]})]})}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:a[1],defaultSize:e[1],minSize:24,children:r[2]})]})}if("left-one-right-two"===e){let e=etU(t,"outer",[42,58]),i=etU(t,"right"),a=["left","right"],o=["pane-1","pane-2"];return(0,ev.jsxs)(qN,{direction:"horizontal",defaultLayout:etq(a,e),onLayoutChanged:e=>n?.("outer",etK(e,a)),children:[(0,ev.jsx)(qC,{id:a[0],defaultSize:e[0],minSize:24,children:r[0]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:a[1],defaultSize:e[1],minSize:24,children:(0,ev.jsxs)(qN,{direction:"vertical",defaultLayout:etq(o,i),onLayoutChanged:e=>n?.("right",etK(e,o)),children:[(0,ev.jsx)(qC,{id:o[0],defaultSize:i[0],minSize:20,children:r[1]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:o[1],defaultSize:i[1],minSize:20,children:r[2]})]})})]})}if("top-two-bottom-one"===e){let e=etU(t,"outer",[58,42]),i=etU(t,"top"),a=["top","bottom"],o=["pane-0","pane-1"];return(0,ev.jsxs)(qN,{direction:"vertical",defaultLayout:etq(a,e),onLayoutChanged:e=>n?.("outer",etK(e,a)),children:[(0,ev.jsx)(qC,{id:a[0],defaultSize:e[0],minSize:24,children:(0,ev.jsxs)(qN,{direction:"horizontal",defaultLayout:etq(o,i),onLayoutChanged:e=>n?.("top",etK(e,o)),children:[(0,ev.jsx)(qC,{id:o[0],defaultSize:i[0],minSize:24,children:r[0]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:o[1],defaultSize:i[1],minSize:24,children:r[1]})]})}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:a[1],defaultSize:e[1],minSize:24,children:r[2]})]})}if("top-one-bottom-two"===e){let e=etU(t,"outer",[42,58]),i=etU(t,"bottom"),a=["top","bottom"],o=["pane-1","pane-2"];return(0,ev.jsxs)(qN,{direction:"vertical",defaultLayout:etq(a,e),onLayoutChanged:e=>n?.("outer",etK(e,a)),children:[(0,ev.jsx)(qC,{id:a[0],defaultSize:e[0],minSize:24,children:r[0]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:a[1],defaultSize:e[1],minSize:24,children:(0,ev.jsxs)(qN,{direction:"horizontal",defaultLayout:etq(o,i),onLayoutChanged:e=>n?.("bottom",etK(e,o)),children:[(0,ev.jsx)(qC,{id:o[0],defaultSize:i[0],minSize:24,children:r[1]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:o[1],defaultSize:i[1],minSize:24,children:r[2]})]})})]})}let i=etU(t,"outer"),a=etU(t,"left"),o=etU(t,"right"),l=["left","right"],s=["pane-0","pane-2"],c=["pane-1","pane-3"];return(0,ev.jsxs)(qN,{direction:"horizontal",defaultLayout:etq(l,i),onLayoutChanged:e=>n?.("outer",etK(e,l)),children:[(0,ev.jsx)(qC,{id:l[0],defaultSize:i[0],minSize:24,children:(0,ev.jsxs)(qN,{direction:"vertical",defaultLayout:etq(s,a),onLayoutChanged:e=>n?.("left",etK(e,s)),children:[(0,ev.jsx)(qC,{id:s[0],defaultSize:a[0],minSize:20,children:r[0]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:s[1],defaultSize:a[1],minSize:20,children:r[2]})]})}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:l[1],defaultSize:i[1],minSize:24,children:(0,ev.jsxs)(qN,{direction:"vertical",defaultLayout:etq(c,o),onLayoutChanged:e=>n?.("right",etK(e,c)),children:[(0,ev.jsx)(qC,{id:c[0],defaultSize:o[0],minSize:20,children:r[1]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:c[1],defaultSize:o[1],minSize:20,children:r[3]})]})})]})}function etY({conversationId:e,index:t,content:n,clipboardItems:r,clipboardDraggingId:i,onAdd:a,onPanelDrop:o,onContentChange:l,onClear:s,onCut:c,workspaceFolders:d,onRequestFileTab:u,onOpenWorkspaceFile:f,onSaveFileTab:h,onOpenFileHistory:p}){let[m,g]=ey.useState();return(0,ev.jsx)("div",{"data-agent-pane":t,className:tK("relative size-full min-h-0 min-w-0 overflow-hidden",n?.kind!=="subagent-conversation-panel"&&"bg-background","vtl-agent-workspace-pane",n?.kind==="subagent-conversation-panel"&&"vtl-agent-workspace-conversation-pane bg-transparent","panel"===m&&"ring-2 ring-foreground/60 ring-inset","shredder"===m&&"ring-2 ring-destructive/70 ring-inset","cutter"===m&&"ring-2 ring-amber-500/70 ring-inset"),onDragOver:e=>{let t=Array.from(e.dataTransfer.types);if(t.includes(etH)){e.preventDefault(),e.dataTransfer.dropEffect="move",g("cutter");return}if(t.includes(etV)){e.preventDefault(),e.dataTransfer.dropEffect="move",g("shredder");return}t.includes(Ko)&&(e.preventDefault(),e.dataTransfer.dropEffect="move",g("panel"))},onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||g(void 0)},onDrop:e=>{if(Array.from(e.dataTransfer.types).includes(etH)){e.preventDefault(),e.stopPropagation(),g(void 0),c(t);return}if(Array.from(e.dataTransfer.types).includes(etV)){e.preventDefault(),e.stopPropagation(),g(void 0),s(t);return}let n=function(e){let t=e.dataTransfer.getData("application/vnd.vantaloom.clip-id"),n=r.find(e=>e.id===t),i=n?n.payloads?.[Ko]:void 0;if(n&&i)return{item:n,content:i.content};let a=e.dataTransfer.getData(Ko);if(a)try{let e=JSON.parse(a);return n&&e.content?{item:n,content:e.content}:void 0}catch{return}}(e);n&&(e.preventDefault(),e.stopPropagation(),g(void 0),o(t,n.item,n.content))},children:n?(0,ev.jsx)("div",{className:tK("size-full min-h-0 min-w-0 overflow-hidden rounded-none","vtl-agent-pane-content","subagent-conversation-panel"===n.kind&&"vtl-agent-pane-conversation-content",i&&"pointer-events-none"),children:Ka(n)?etF(n.kind,{tab:n.tab,terminalScopeId:e?`agent:${e}:pane:${n.id}`:void 0,terminalState:n.terminal,onTerminalStateChange:e=>{var r;r=n.terminal,((r?.activeSessionId??"")!==(e.activeSessionId??"")||(r?.selectedMachineId??"")!==(e.selectedMachineId??"")||(r?.selectedShellId??"")!==(e.selectedShellId??"")||(r?.autoStart??!0)!==(e.autoStart??!0)||(r?.sessionIds??[]).join("\0")!==e.sessionIds.join("\0")||(r?.aiControlledSessionIds??[]).join("\0")!==(e.aiControlledSessionIds??[]).join("\0"))&&l(t,{...n,terminal:e})},workspaceFolders:d,nodeId:n.id,tabs:n.tabs,activeTabId:n.activeTabId,onRequestFileTab:({insertIndex:e})=>u?.(t,e),onOpenWorkspaceFile:f,onTabsChange:(e,r)=>{l(t,{...n,tabs:r,activeTabId:r.some(e=>e.id===n.activeTabId)?n.activeTabId:r[0]?.id})},onTabChange:(e,r)=>{"multi-tab-system"===n.kind?l(t,{...n,tabs:(n.tabs??[]).map(e=>e.id===r.id?r:e),activeTabId:r.id}):l(t,{...n,title:r.title,tab:r})},onSaveFileTab:(e,n,r)=>h?.(t,n,r),onOpenFileHistory:(e,n)=>p?.(t,n),onActiveTabChange:(e,r)=>{l(t,{...n,activeTabId:r})}}):(0,ev.jsx)(GY,{className:"size-full min-h-0",composerClassName:"max-w-[42.5rem]",initialEvents:n.events},n.id)},n.id):(0,ev.jsx)("div",{className:"vtl-agent-pane-empty grid size-full place-items-center p-4",children:(0,ev.jsxs)(tY,{type:"button",variant:"outline",size:"sm",className:"rounded-full bg-background/90",onClick:a,children:[(0,ev.jsx)(sQ,{className:"size-4"}),"添加"]})})})}function etX({open:e,onOpenChange:t,onAdd:n}){return(0,ev.jsx)(mm,{open:e,onOpenChange:t,title:"添加工作区组件",description:"选择一个组件填入当前窗口。",className:"top-1/2 max-w-xl -translate-y-1/2",children:(0,ev.jsxs)(mp,{loop:!0,children:[(0,ev.jsx)(mg,{placeholder:"搜索组件..."}),(0,ev.jsxs)(mv,{children:[(0,ev.jsx)(mx,{children:"没有匹配组件。"}),(0,ev.jsx)(my,{heading:"可放入窗口",children:Kr.map(e=>(0,ev.jsxs)(mb,{value:`${e.title} ${e.description} ${e.keywords}`,onSelect:()=>n(e.id),children:[(0,ev.jsx)("span",{className:"grid size-8 shrink-0 place-items-center rounded-lg border bg-background text-muted-foreground",children:e.icon}),(0,ev.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,ev.jsx)("span",{className:"block truncate text-sm font-medium",children:e.title}),(0,ev.jsx)("span",{className:"block truncate text-xs text-muted-foreground",children:e.description})]}),(0,ev.jsx)(mw,{children:"添加"})]},e.id))})]})]})})}let etZ=[],etJ="vantaloom:file-system-changed";function etQ(e){var t;let n=(t=e?.layoutMode,etW.some(e=>e.id===t)?t:"quad"),r="right"===e?.agentPosition?"right":"left",i=function(e){if(!e||"object"!=typeof e||Array.isArray(e))return{};let t=e.shell&&"object"==typeof e.shell&&!Array.isArray(e.shell)?e.shell:void 0,n={};for(let e of["agent","panes"]){let r=t?.[e];"number"==typeof r&&Number.isFinite(r)&&r>0&&(n[e]=r)}return{...Object.keys(n).length?{shell:n}:{},outer:et0(e.outer),left:et0(e.left),right:et0(e.right),top:et0(e.top),bottom:et0(e.bottom)}}(e?.sizes),a=Array.from({length:Math.max(4,etW.find(e=>e.id===n)?.slots??4)},()=>void 0);for(let[t,n]of(e?.panes??[]).entries()){let e=Number.isInteger(n.slot)?n.slot:t;e<0||e>=a.length||(a[e]=function(e,t){var n,r;let i=e.paneId||`${e.kind}-${t+1}`,a=!(n=e.props)||"object"!=typeof n||Array.isArray(n)?{}:n;if("subagent-conversation-panel"===e.kind)return{id:i,kind:"subagent-conversation-panel",title:et2(a.title)??"Subagent",subagentId:et2(a.subagentId)??i,events:Array.isArray(a.events)?a.events:[]};if(!Ki(e.kind))return;let o=a.tab&&"object"==typeof a.tab?a.tab:void 0,l=Array.isArray(a.tabs)?a.tabs.filter(e=>Ue(e?.kind)):void 0,s=Ki(e.kind);return{id:i,kind:e.kind,title:et2(a.title)??o?.title??s?.title??"组件",tab:o,tabs:l,activeTabId:et2(a.activeTabId),terminal:"terminal-tab-group"===e.kind?!(r=a.terminal)||"object"!=typeof r||Array.isArray(r)?{sessionIds:[]}:{sessionIds:Array.isArray(r.sessionIds)?r.sessionIds.filter(e=>"string"==typeof e):[],activeSessionId:et2(r.activeSessionId),selectedMachineId:et2(r.selectedMachineId),selectedShellId:et2(r.selectedShellId),autoStart:"boolean"==typeof r.autoStart?r.autoStart:void 0,aiControlledSessionIds:Array.isArray(r.aiControlledSessionIds)?r.aiControlledSessionIds.filter(e=>"string"==typeof e):void 0}:void 0}}(n,t))}return{layoutMode:n,agentPosition:r,layoutSizes:i,panes:a}}function et0(e){if(!Array.isArray(e))return;let t=e.filter(e=>"number"==typeof e&&Number.isFinite(e)&&e>0);return t.length?t:void 0}function et1(e){return e.filter(e=>"number"==typeof e&&Number.isFinite(e)&&e>0)}function et2(e){return"string"==typeof e&&e.trim()?e:void 0}function et5(e){let t=e?.id.match(/-(\d+)$/);return t?Number(t[1]):0}function et4(e){return e.reduce((e,t)=>Math.max(e,et5(t)),0)}function et3({conversation:e,clipboardItems:t,clipboardDraggingId:n,onClipboardItemsChange:r,onClipboardDraggingChange:i,onOverlayOpenChange:a}){let o=cy(),l=etQ(e?.panes),[s,c]=ey.useState(l.layoutMode),[d,u]=ey.useState(l.agentPosition),[f,h]=ey.useState(l.layoutSizes),[p,m]=ey.useState(()=>l.panes),[g,v]=ey.useState(()=>e?.events??[]),[x,y]=ey.useState(""),[b,w]=ey.useState(e?.conversation.status==="working"),[j,k]=ey.useState(e?.conversation.status??"idle"),[S,N]=ey.useState(e?.conversation.settings?.permissionMode??"acceptEdits"),[C,M]=ey.useState([]),[E,O]=ey.useState(e?.conversation.tokens??0),[P,z]=ey.useState(e?.conversation.runUsage),[A,I]=ey.useState(!1),_=ey.useRef(j),[D,T]=ey.useState(),[R,L]=ey.useState(),[$,F]=ey.useState(),B=ey.useRef(et4(l.panes)),V=ey.useRef(0),H=ey.useRef(""),W=etW.find(e=>e.id===s)?.slots??4,U=e?.conversation.settings.folders??etZ,{models:q}=va(),K=ey.useMemo(()=>{let t=e?.conversation.settings.mainModels??[];return t.length?q.filter(e=>t.includes(e.value)).map(e=>({id:e.value,label:e.label})):[]},[q,e?.conversation.settings.mainModels]),G=b||"working"===j,Y=ey.useCallback(async t=>{if(!e||A)return;let n=e.conversation.id,r=e.conversation.ownerMachineId;if(G)return void await WR(n,"precise"===t?"请在完成当前小任务后进行精确压缩(去除冗余文件读取和旧工具输出)。":"请在完成当前小任务后进行极致压缩(AI摘要),以便继续工作。",r);I(!0);try{await WL(n,t,void 0,r);let e=await WN(n,r);if(e){let t=W$(e);v(t.events),O(t.conversation.tokens??0),z(t.conversation.runUsage)}}catch{}finally{I(!1)}},[e,A,G]),X=ey.useMemo(()=>{if(!e)return;let t=q.find(e=>e.value===x),n=t?.contextLength||200,r=P?.inputTokens??0,i=P?.outputTokens??0;return{used:E+r+i,total:1e3*n,toolCalls:r,userMessages:i,other:E>0?E:void 0,onCompressPrecise:()=>Y("precise"),onCompressExtreme:()=>Y("extreme"),compressing:A}},[e,q,x,E,P,Y,A]),Z=ey.useCallback(async e=>{if("file-tab-viewer"!==e.kind||e.modified||e.file?.readOnly)return e;try{var t,n;let r=await Us(e);return(t=e,n=r,t.defaultValue!==n.defaultValue||t.title!==n.title||t.file?.size!==n.file?.size||t.file?.mimeType!==n.file?.mimeType||t.file?.previewContent!==n.file?.previewContent||t.file?.src!==n.file?.src||t.file?.truncated!==n.file?.truncated)?r:e}catch{return e}},[]),J=ey.useCallback(async e=>{if(!e||!Ka(e))return e;if("multi-tab-system"===e.kind){var t,n;let r=e.tabs??[],i=await Promise.all(r.map(Z));return(t=r,n=i,t.length!==n.length||t.some((e,t)=>e!==n[t]))?{...e,tabs:i}:e}if("file-tab-viewer"===e.kind&&e.tab){let t=await Z(e.tab);return t!==e.tab?{...e,title:t.title,tab:t}:e}return e},[Z]),Q=ey.useCallback(async()=>{var e,t;let n=await Promise.all(p.map(async e=>J(e)));e=p,t=n,(e.length!==t.length||e.some((e,n)=>e!==t[n]))&&m(n)},[p,J]);function ee(e){if(!e.length)return;let t=e.map(Kl);r(e=>[...t,...e.filter(e=>!t.some(t=>t.id===e.id))])}function et(e,t,n){if(!e||!Ka(e))return e;if("multi-tab-system"===e.kind){var r;let i,a;return{...e,tabs:(r=e.tabs??[],i=r.filter(e=>e.id!==t.id),a=void 0===n?i.length:Math.min(Math.max(n,0),i.length),i.splice(a,0,t),i),activeTabId:t.id}}return"file-tab-viewer"===e.kind?{...e,title:t.title,tab:t}:e}function en(e,t){return e&&Ka(e)?"multi-tab-system"===e.kind?{...e,tabs:(e.tabs??[]).map(e=>e.id===t.id?t:e),activeTabId:t.id}:"file-tab-viewer"===e.kind?{...e,title:t.title,tab:t}:e:e}async function er(e,t,n){try{let r=await Uo(e);m(e=>e.map((e,i)=>i===t?et(e,r,n):e))}catch{qB.error("文件预览打开失败")}}function ei(e){let t=p.slice(0,W).findIndex(e=>e?.kind==="multi-tab-system");t<0?qB.warning("请先放入一个多标签页组件"):er(e,t)}function ea(e){let t=e.path?.trim()||e.name.trim();("diff"===e.kind||"diff"===e.meta)&&e.diff?function(e){let t=p.slice(0,W).findIndex(e=>e?.kind==="multi-tab-system");if(t<0)return qB.warning("请先放入一个多标签页组件");let n=e.path?.trim()||e.name.trim(),r={id:function(e,t){let n=0x811c9dc5;for(let e=0;e<t.length;e+=1)n^=t.charCodeAt(e),n=Math.imul(n,0x1000193);return`${e}-${(n>>>0).toString(36)}`}("diff",`${e.mutationId??""}|${e.machineId??"local"}|${n}|${e.diff??""}`),kind:"diff-tab-viewer",title:`Diff ${e.name}`,file:{name:e.name,path:n,machineId:e.machineId??"local",kind:"code"},diff:e.diff};m(e=>e.map((e,n)=>n===t?et(e,r):e))}(e):!t||e.meta?.toLowerCase().startsWith("depth")||ei({machineId:e.machineId??"local",path:t})}async function eo(e,t,n){let r=t.file?.path,i=t.file?.machineId??"local";if(!r)throw qB.error("文件路径不可用"),Error("file path is unavailable");try{let a=await wk({machineId:i,path:r,content:n}),o={...await Ul(a,{id:t.id,title:t.title,defaultView:t.defaultView,defaultMode:t.defaultMode}),modified:!1};m(t=>t.map((t,n)=>n===e?en(t,o):t)),window.dispatchEvent(new CustomEvent(etJ)),qB.success("文件已保存")}catch(e){throw qB.error("文件保存失败"),e}}async function el(t){let n=e?.conversation.id,r=$?.tab.file?.path,i=$?.tab.file?.machineId??"local";if($&&n&&r)try{let a=await W_(n,{machineId:i,path:r,mutationId:t.mutationId,state:t.state},e?.conversation.ownerMachineId),o=await Ul(a,{id:$.tab.id,title:`${a.name} @ ${et8(t.mutationId)} ${"before"===t.state?"before":"after"}`,readOnly:!0,defaultView:$.tab.defaultView,defaultMode:"review"});m(e=>e.map((e,t)=>t===$.paneIndex?en(e,o):e)),F(void 0)}catch{qB.error("历史版本打开失败")}}function es(e,t,n){let a=p[e];B.current=Math.max(B.current,et5(n)),m(t=>t.map((t,r)=>r===e?n:t)),r(e=>{let n=e.filter(e=>e.id!==t.id);if(!a)return n;let r=Kl(a);return[r,...n.filter(e=>e.id!==r.id)]}),i?.(void 0)}function ec(e,t){m(n=>n.map((n,r)=>r===e?t:n))}function ed(e){var t;let n=p.slice(0,W),r=n.findIndex(e=>!e),i=n.findIndex(e=>e?.kind==="subagent-conversation-panel"),a=r>=0?r:i;if(a<0)return void qB.warning("请释放一个窗口再选中浏览");V.current+=1;let o={id:t=`subagent-${e.id}-${V.current}`,kind:"subagent-conversation-panel",title:e.title,subagentId:e.id,events:e.events?.length?e.events:[{id:`${t}-status`,kind:"done",title:e.detail??e.status??e.activity??e.title}]};m(e=>e.map((e,t)=>t===a?o:e))}function eu(e){var t=p[e];if(t&&Ka(t)&&"terminal-tab-group"===t.kind)for(let e of t.terminal?.sessionIds??[])Uw(e).catch(()=>{});m(t=>t.map((t,n)=>n===e?void 0:t))}function ef(e){let t=p[e];t&&ee([t]),m(t=>t.map((t,n)=>n===e?void 0:t))}async function eh(t,n="chat"){let r=e?.conversation.id,i=x||K[0]?.id;if(r){if(!i)return void qB.error("请先在代理模型配置里选择模型");w(!0),k("working");try{let a=await Wz(r,{message:t,modelRef:i,mode:n},e?.conversation.ownerMachineId);v(a.events),k(a.conversation.status)}catch(e){w(!1),k("idle"),qB.error(e instanceof Error?e.message:"对话请求失败")}}}async function ep(t){let n=e?.conversation.id,r=("string"==typeof t.modelRef?t.modelRef.trim():"")||x||K[0]?.id,i="agent"===t.mode?"agent":"chat";if(n){if(!r)return void qB.error("请先在代理模型配置里选择模型");w(!0),k("working"),v(e=>e.map(e=>e.id===t.id?{...e,status:"retried"}:e));try{let a=await WA(n,{modelRef:r,mode:i,retryEventId:t.id},e?.conversation.ownerMachineId);v(a.events),k(a.conversation.status)}catch(e){v(e=>e.map(e=>e.id===t.id?t:e)),w(!1),k("idle"),qB.error(e instanceof Error?e.message:"对话重试失败")}}}async function em(t){let n=e?.conversation.id;if(n)try{let r=e?.conversation.settings??{};await WE(n,{settings:{...r,...t}},e?.conversation.ownerMachineId)}catch(e){qB.error(e instanceof Error?e.message:"设置更新失败")}}async function eg(t,n){let r=e?.conversation.id;if(r)try{await WD(r,t,n,void 0,e?.conversation.ownerMachineId)}catch(e){qB.error(e instanceof Error?e.message:"审批操作失败")}}async function ex(){let t=e?.conversation.id;if(t){try{await WT(t,e?.conversation.ownerMachineId)}catch{}w(!1),k("idle")}}function eb(){eh("继续","agent")}async function ew(t){let n=e?.conversation.id;if(!n)return;let r=C.find(e=>e.id===t);if(!r)return;let i="string"==typeof r.content?r.content:String(r.content??"");if(i.trim()){M(e=>e.filter(e=>e.id!==t));try{await WR(n,i.trim(),e?.conversation.ownerMachineId)}catch{}}}ey.useEffect(()=>{a?.(void 0!==D||void 0!==R||void 0!==$)},[R,$,a,D]),ey.useEffect(()=>{v(e?.events??[])},[e?.conversation.id,e?.events]),ey.useEffect(()=>{w(e?.conversation.status==="working"),k(e?.conversation.status??"idle")},[e?.conversation.id,e?.conversation.status]),ey.useEffect(()=>{O(e?.conversation.tokens??0),z(e?.conversation.runUsage)},[e?.conversation.id,e?.conversation.tokens,e?.conversation.runUsage]),ey.useEffect(()=>{N(e?.conversation.settings?.permissionMode??"acceptEdits")},[e?.conversation.id,e?.conversation.settings?.permissionMode]),ey.useEffect(()=>{let e=K[0]?.id??"";y(t=>K.some(e=>e.id===t)?t:e)},[K]),ey.useEffect(()=>{let t=etQ(e?.panes);c(t.layoutMode),u(t.agentPosition),h(t.layoutSizes),m(t.panes),B.current=et4(t.panes)},[e?.conversation.id,e?.panes]),ey.useEffect(()=>{let t,n=e?.conversation.id,r=e?.conversation.ownerMachineId;if(!n||!G)return;let i=!1,a=e=>{v(e.events),k(e.conversation.status),O(e.conversation.tokens??0),z(e.conversation.runUsage);let t=etQ(e.panes);c(t.layoutMode),u(t.agentPosition),h(t.layoutSizes),m(t.panes)},o=e=>{void 0===t&&(t=window.setInterval(async()=>{try{let e=await WN(n,r);if(i)return;a(e),"working"!==e.conversation.status&&(w(!1),void 0!==t&&(window.clearInterval(t),t=void 0))}catch{return}},e))};if(r&&"local"!==r)return o(600),()=>{i=!0,void 0!==t&&window.clearInterval(t)};let l=new EventSource(tJ(`/api/local/agent/conversations/${encodeURIComponent(n)}/events/stream`));return l.addEventListener("detail",e=>{try{let t=W$(JSON.parse(e.data));a(t),"working"!==t.conversation.status&&(w(!1),l.close())}catch{return}}),l.onerror=()=>{l.close(),o(350)},()=>{i=!0,l.close(),void 0!==t&&window.clearInterval(t)}},[e?.conversation.id,e?.conversation.ownerMachineId,G]),ey.useEffect(()=>{if(!e?.conversation.id)return;let t=window.setInterval(()=>{Q()},3e3);return()=>window.clearInterval(t)},[e?.conversation.id,Q]),ey.useEffect(()=>{let e=g.filter(e=>"change"===e.kind).map(e=>`${e.id}:${e.status??""}:${e.isStreaming?"1":"0"}`).join("|");e&&e!==H.current&&(H.current=e,window.dispatchEvent(new CustomEvent(etJ)),Q())},[g,Q]),ey.useEffect(()=>{let t=e?.conversation.id;if(!t)return;let n=window.setTimeout(()=>{let n;WP(t,(n=[],p.forEach((e,t)=>{if(e){if(Ka(e))return void n.push({paneId:e.id,slot:t,kind:e.kind,machineId:e.terminal?.selectedMachineId,resourceId:e.terminal?.activeSessionId,props:{title:e.title,tab:e.tab,tabs:e.tabs,activeTabId:e.activeTabId,terminal:e.terminal}});n.push({paneId:e.id,slot:t,kind:e.kind,props:{title:e.title,subagentId:e.subagentId,events:e.events}})}}),{layoutMode:s,agentPosition:d,sizes:f,panes:n}),e?.conversation.ownerMachineId)},300);return()=>window.clearTimeout(n)},[d,e?.conversation.id,s,f,p]),ey.useEffect(()=>{let e=_.current;if(_.current=j,"working"===e&&"idle"===j&&C.length>0){let e=C[0];if(e){M(C.slice(1));let t="string"==typeof e.content?e.content:String(e.content??"");t.trim()&&eh(t.trim(),"agent")}}},[j]);let ej=Array.from({length:W},(r,i)=>(0,ev.jsx)(etY,{conversationId:e?.conversation.id,index:i,content:p[i],clipboardItems:t,clipboardDraggingId:n,onAdd:()=>T(i),onPanelDrop:es,onContentChange:ec,onClear:eu,onCut:ef,workspaceFolders:U,onRequestFileTab:(e,t)=>L({paneIndex:e,insertIndex:t}),onOpenWorkspaceFile:ei,onSaveFileTab:eo,onOpenFileHistory:(e,t)=>F({paneIndex:e,tab:t})},i)),ek=p.slice(0,W).some(e=>e?.kind==="subagent-conversation-panel"),eS=f.shell?.agent??42,eN=f.shell?.panes??58,eC=(0,ev.jsx)(qC,{id:"agent",defaultSize:eS,minSize:28,children:(0,ev.jsx)(GY,{events:e?g:void 0,models:e?K:void 0,modelId:x,permissionModeId:S,onPermissionModeChange:t=>{N(t),e?.conversation.id&&em({permissionMode:t})},running:G,disabled:!!e&&0===K.length,onModelChange:y,onSubmit:e?e=>{eh(e.value,"agent")}:void 0,onStop:ex,onOpenFile:ea,onOpenSubagent:ed,onRetry:ep,onApprovalDecision:eg,onContinue:eb,queuedMessages:C,onQueuedMessagesChange:M,onNudge:ew,contextUsage:X})},"agent-conversation"),eM=(0,ev.jsx)(qC,{id:"panes",defaultSize:eN,minSize:32,children:(0,ev.jsxs)("section",{className:"vtl-agent-workspace-panel flex size-full min-h-0 min-w-0 flex-col bg-transparent","data-has-conversation-pane":ek?"true":void 0,children:[(0,ev.jsx)("div",{className:"flex h-11 shrink-0 items-center border-b px-3",children:(0,ev.jsxs)("div",{className:"flex min-w-0 items-center gap-2",children:[(0,ev.jsx)(q0,{value:s,onValueChange:e=>{let t,n;return t=etW.find(t=>t.id===e)?.slots??4,void((n=p.slice(t).filter(e=>!!e)).length&&ee(n),m(Array.from({length:Math.max(4,t)},(e,n)=>n<t?p[n]:void 0)),c(e))},children:(0,ev.jsx)(q9,{children:etW.map(e=>(0,ev.jsx)(Ke,{value:e.id,"aria-label":e.label,title:e.label,className:"h-7 w-10 px-0 [&_svg]:size-4",children:e.icon},e.id))})}),(0,ev.jsxs)(b3,{type:"single",value:d,variant:"outline",size:"sm","aria-label":"Agent 面板位置",onValueChange:e=>{("left"===e||"right"===e)&&u(e)},children:[(0,ev.jsx)(b6,{value:"left","aria-label":"Agent 在左",title:"Agent 在左",className:"h-7 w-9 px-0 [&_svg]:size-4",children:(0,ev.jsx)(nu,{})}),(0,ev.jsx)(b6,{value:"right","aria-label":"Agent 在右",title:"Agent 在右",className:"h-7 w-9 px-0 [&_svg]:size-4",children:(0,ev.jsx)(WY,{})})]}),(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm",draggable:!0,"aria-label":"剪切窗口内容",title:"拖拽到窗口以剪切到剪切板",className:"h-7 w-10 cursor-grab rounded-md text-muted-foreground active:cursor-grabbing [&_svg]:size-4",onDragStart:e=>{e.dataTransfer.effectAllowed="move",e.dataTransfer.setData(etH,"cut")},children:(0,ev.jsx)(s1,{})}),(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm",draggable:!0,"aria-label":"粉碎窗口内容",title:"拖拽到窗口以清空",className:"h-7 w-10 cursor-grab rounded-md text-muted-foreground active:cursor-grabbing [&_svg]:size-4",onDragStart:e=>{e.dataTransfer.effectAllowed="move",e.dataTransfer.setData(etV,"clear")},children:(0,ev.jsx)(WX,{})})]})}),(0,ev.jsx)("div",{className:"min-h-0 flex-1",children:(0,ev.jsx)(etG,{mode:s,sizes:f,onSizeGroupChange:function(e,t){let n=et1(t);h(t=>{var r;return(r=t[e],(r?.length??0)===(n?.length??0)&&(r??[]).every((e,t)=>.01>Math.abs(e-(n?.[t]??0))))?t:{...t,[e]:n}})},children:ej},`${e?.conversation.id??"empty"}-${s}`)})]})},"agent-panes"),eE=(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(etX,{open:void 0!==D,onOpenChange:e=>{e||T(void 0)},onAdd:function(e){var t;let n,r;if(void 0===D)return;B.current+=1;let i=(t=`${e}-${B.current}`,n=Ki(e),r="file-tab-viewer"===e?{id:t,kind:e,title:"选择文件"}:Ue(e)?Un(e,t):void 0,{id:t,kind:e,title:r?.title??n?.title??"组件",tab:r,tabs:"multi-tab-system"===e?[]:void 0,terminal:"terminal-tab-group"===e?{sessionIds:[],autoStart:!0}:void 0}),a=p[D];a&&ee([a]),m(e=>e.map((e,t)=>t===D?i:e)),T(void 0)}}),(0,ev.jsx)(Yh,{open:void 0!==R,folders:U,onOpenChange:e=>{e||L(void 0)},onSelectFile:e=>{R&&er(e,R.paneIndex,R.insertIndex),L(void 0)}}),(0,ev.jsx)(et6,{open:void 0!==$,conversationId:e?.conversation.id,ownerMachineId:e?.conversation.ownerMachineId,tab:$?.tab,onOpenChange:e=>{e||F(void 0)},onSelectVersion:e=>{el(e)}})]});return o?(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(Kn,{conversationPanel:(0,ev.jsx)(GY,{events:e?g:void 0,models:e?K:void 0,modelId:x,permissionModeId:S,onPermissionModeChange:t=>{N(t),e?.conversation.id&&em({permissionMode:t})},running:G,disabled:!!e&&0===K.length,onModelChange:y,onSubmit:e?e=>{eh(e.value,"agent")}:void 0,onStop:ex,onOpenFile:ea,onOpenSubagent:ed,onRetry:ep,onApprovalDecision:eg,onContinue:eb,queuedMessages:C,onQueuedMessagesChange:M,onNudge:ew,contextUsage:X}),paneElements:ej,panes:p,activeSlotCount:W,onOpenPalette:T}),eE,(0,ev.jsx)(qK,{position:"top-center"})]}):(0,ev.jsxs)("div",{className:"vtl-app-background vtl-agent-conversation-workspace h-full min-h-0 pl-[5.25rem]",children:[(0,ev.jsxs)(qN,{direction:"horizontal",defaultLayout:{agent:eS,panes:eN},onLayoutChanged:e=>{let t=e.agent??eS,n=e.panes??eN;!function(e){let t=et1(e),n=t[0],r=t[1];if(void 0===n||void 0===r)return;let i="left"===d?{agent:n,panes:r}:{agent:r,panes:n};h(e=>{let t=e.shell?.agent,n=e.shell?.panes;return .01>Math.abs((t??0)-i.agent)&&.01>Math.abs((n??0)-i.panes)?e:{...e,shell:{...e.shell,...i}}})}("left"===d?[t,n]:[n,t])},children:["left"===d?eC:eM,(0,ev.jsx)(qM,{withHandle:!0}),"left"===d?eM:eC]},`${e?.conversation.id??"empty"}-${d}`),eE,(0,ev.jsx)(qK,{position:"top-right"})]})}function et6({open:e,conversationId:t,ownerMachineId:n,tab:r,onOpenChange:i,onSelectVersion:a}){let[o,l]=ey.useState([]),[s,c]=ey.useState(!1),d=r?.file?.path,u=r?.file?.machineId??"local";return ey.useEffect(()=>{if(!e||!t||!d)return void l([]);let r=!1;return c(!0),WI(t,{machineId:u,path:d},n).then(e=>{r||l(e.versions)}).catch(()=>{r||l([])}).finally(()=>{r||c(!1)}),()=>{r=!0}},[t,n,u,e,d]),(0,ev.jsx)(px,{open:e,onOpenChange:i,children:(0,ev.jsxs)(md,{className:"max-w-xl gap-0 overflow-hidden p-0",children:[(0,ev.jsx)(mf,{className:"sr-only",children:"历史版本"}),(0,ev.jsx)(mh,{className:"sr-only",children:"浏览当前文件在此 Agent 会话中的修改历史。"}),(0,ev.jsxs)("div",{className:"border-b px-4 py-3",children:[(0,ev.jsx)("div",{className:"truncate text-sm font-medium",children:r?.file?.name??r?.title??"文件"}),d?(0,ev.jsxs)("div",{className:"mt-0.5 truncate ui-text-kbd text-muted-foreground",children:[u,":",d]}):null]}),(0,ev.jsx)("div",{className:"max-h-[28rem] overflow-auto p-2",children:s?(0,ev.jsx)("div",{className:"px-3 py-8 text-center text-xs text-muted-foreground",children:"正在读取历史版本"}):0===o.length?(0,ev.jsx)("div",{className:"px-3 py-8 text-center text-xs text-muted-foreground",children:"还没有记录到这个文件的修改历史"}):(0,ev.jsx)("div",{className:"grid gap-1",children:o.map(e=>{var t;let n;return(0,ev.jsxs)("button",{type:"button",className:"grid grid-cols-[minmax(0,1fr)_auto] items-center gap-3 rounded-md px-3 py-2 text-left transition-colors hover:bg-muted/70",onClick:()=>a(e),children:[(0,ev.jsxs)("span",{className:"min-w-0",children:[(0,ev.jsxs)("span",{className:"block truncate text-sm font-medium",children:[et8(e.mutationId)," ·"," ","before"===e.state?"修改前":"修改后"]}),(0,ev.jsx)("span",{className:"mt-0.5 block truncate ui-text-kbd text-muted-foreground",children:Number.isFinite(n=Date.parse(t=e.createdAt))?new Intl.DateTimeFormat("zh-CN",{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(n):t})]}),(0,ev.jsxs)("span",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[(0,ev.jsxs)("b",{className:"font-medium text-emerald-600",children:["+",e.additions??0]}),(0,ev.jsxs)("b",{className:"font-medium text-rose-600",children:["-",e.deletions??0]})]})]},e.id)})})})]})})}function et8(e){return e.replace(/^mut-/,"").slice(0,16)}let et7=eS("layout-template",[["rect",{width:"18",height:"7",x:"3",y:"3",rx:"1",key:"f1a2em"}],["rect",{width:"9",height:"7",x:"3",y:"14",rx:"1",key:"jqznyg"}],["rect",{width:"5",height:"7",x:"16",y:"14",rx:"1",key:"q5h2i8"}]]),et9=eS("lock-keyhole",[["circle",{cx:"12",cy:"16",r:"1",key:"1au0dj"}],["rect",{x:"3",y:"10",width:"18",height:"12",rx:"2",key:"6s8ecr"}],["path",{d:"M7 10V7a5 5 0 0 1 10 0v3",key:"1pqi11"}]]),ene=eS("share-2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]),ent=eS("sliders-horizontal",[["path",{d:"M10 5H3",key:"1qgfaw"}],["path",{d:"M12 19H3",key:"yhmn1j"}],["path",{d:"M14 3v4",key:"1sua03"}],["path",{d:"M16 17v4",key:"1q0r14"}],["path",{d:"M21 12h-9",key:"1o4lsq"}],["path",{d:"M21 19h-5",key:"1rlt1p"}],["path",{d:"M21 5h-7",key:"1oszz2"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M8 12H3",key:"a7s4jb"}]]);function enn({clipboardItems:e=[],onClipboardItemsChange:t,onOverlayOpenChange:n}){let[r,i]=ey.useState(),a=ey.useMemo(()=>Wg({onSelect:i}),[]);return(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(mD,{boardId:"canvas-library",definitions:a,initialLayouts:Wv,clipboardItems:e,actionLabel:"画布库页面卡片操作",paletteGroupTitle:"画布库页面卡片",onClipboardItemsChange:t,onOverlayOpenChange:n}),(0,ev.jsx)(eni,{canvas:r,onOpenChange:e=>{e||i(void 0)}})]})}function enr({icon:e,value:t}){return(0,ev.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:[(0,ev.jsx)("span",{className:"[&_svg]:size-3.5",children:e}),(0,ev.jsx)("span",{className:"tabular-nums",children:t})]})}function eni({canvas:e,onOpenChange:t}){return e?(0,ev.jsx)(gt,{open:!!e,onOpenChange:t,title:e.title,eyebrow:"画布管理",description:e.purpose,panels:[{id:"overview",label:"首页",icon:(0,ev.jsx)(mQ,{}),content:(0,ev.jsx)(ena,{canvas:e})},{id:"templates",label:"节点模板",icon:(0,ev.jsx)(et7,{}),badge:e.settings.nodeTemplates.length,content:(0,ev.jsx)(enl,{title:"可用节点模板",items:e.settings.nodeTemplates})},{id:"layout",label:"默认布局",icon:(0,ev.jsx)(ent,{}),content:(0,ev.jsx)(enl,{title:"默认布局参数",items:e.settings.defaultLayout})},{id:"folders",label:"工作区绑定",icon:(0,ev.jsx)(mX,{}),content:(0,ev.jsx)(enl,{title:"绑定的工作区文件夹",items:e.settings.folders})},{id:"sharing",label:"共享权限",icon:(0,ev.jsx)(ene,{}),content:(0,ev.jsx)(enl,{title:"共享与权限",items:e.settings.sharing})},{id:"autosave",label:"自动保存",icon:(0,ev.jsx)(QA,{}),content:(0,ev.jsx)(enl,{title:"自动保存策略",items:e.settings.autosave})},{id:"snapshots",label:"快照和版本",icon:(0,ev.jsx)(Wo,{}),content:(0,ev.jsx)(enl,{title:"快照和版本策略",items:e.settings.snapshots})},{id:"hosts",label:"可访问主机",icon:(0,ev.jsx)(mZ,{}),content:(0,ev.jsx)(enl,{title:"可访问主机",items:e.settings.hosts})},{id:"plugins",label:"插件",icon:(0,ev.jsx)(m0,{}),content:(0,ev.jsx)(enl,{title:"画布插件",items:e.settings.plugins,empty:"未加载插件"})}]}):null}function ena({canvas:e}){return(0,ev.jsxs)("div",{className:"grid gap-5",children:[(0,ev.jsxs)("button",{type:"button",className:"group relative grid min-h-72 rounded-[2rem] border bg-card p-7 text-left transition-colors hover:bg-muted/35",children:[(0,ev.jsxs)("div",{className:"grid gap-5",children:[(0,ev.jsxs)("div",{className:"max-w-2xl",children:[(0,ev.jsx)("h3",{className:"text-3xl font-semibold tracking-normal",children:e.title}),(0,ev.jsx)("p",{className:"mt-4 text-sm leading-6 text-muted-foreground",children:e.purpose})]}),(0,ev.jsxs)("div",{className:"grid max-w-56 gap-2",children:[(0,ev.jsx)(eno,{label:"Nodes",value:`${e.nodes}`}),(0,ev.jsx)(eno,{label:"Agent",value:`${e.agents}`}),(0,ev.jsx)(eno,{label:"Snapshots",value:`${e.snapshots}`})]})]}),(0,ev.jsx)("span",{className:"absolute right-7 bottom-7 text-sm font-medium text-foreground transition-opacity group-hover:opacity-70",children:"进入"})]}),(0,ev.jsxs)("div",{className:"grid gap-2",children:[(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsx)("span",{className:"text-sm font-medium",children:"Roadmap"}),(0,ev.jsx)(enr,{icon:(0,ev.jsx)(BX,{}),value:e.runtime})]}),(0,ev.jsx)(mG,{items:e.roadmap.map(e=>({id:e.title,title:e.title,status:"running"===e.state?"current":"done"===e.state?"done":"queued"})),viewportClassName:"max-h-64"})]})]})}function eno({label:e,value:t}){return(0,ev.jsxs)("span",{className:"grid min-w-0 gap-0.5 py-0.5",children:[(0,ev.jsx)("span",{className:"truncate ui-text-kbd text-muted-foreground",children:e}),(0,ev.jsx)("span",{className:"min-w-0 truncate text-sm font-semibold tracking-normal",children:t})]})}function enl({title:e,items:t,empty:n="暂无内容"}){return(0,ev.jsxs)("div",{className:"grid gap-3",children:[(0,ev.jsx)("h3",{className:"text-base font-semibold tracking-normal",children:e}),(0,ev.jsx)("div",{className:"overflow-hidden rounded-xl border bg-card",children:t.length>0?t.map((e,t)=>(0,ev.jsxs)("div",{className:tK("flex min-h-10 items-center gap-2 px-3 text-sm",t>0&&"border-t"),children:[(0,ev.jsx)(et9,{className:"size-4 text-muted-foreground"}),(0,ev.jsx)("span",{className:"min-w-0 truncate",children:e})]},e)):(0,ev.jsx)("div",{className:"px-3 py-6 text-sm text-muted-foreground",children:n})})]})}function ens({open:e,onOpenChange:t,onAdd:n}){return(0,ev.jsx)(mm,{open:e,onOpenChange:t,title:"添加节点",description:"搜索并选择要放入画布的可用节点。",className:"top-1/2 max-w-xl -translate-y-1/2",children:(0,ev.jsxs)(mp,{loop:!0,children:[(0,ev.jsx)(mg,{placeholder:"搜索节点..."}),(0,ev.jsxs)(mv,{children:[(0,ev.jsx)(mx,{children:"没有匹配节点。"}),(0,ev.jsx)(my,{heading:"可用节点",children:W8.map(e=>(0,ev.jsxs)(mb,{value:`${e.title} ${e.description} ${e.keywords}`,onSelect:()=>n(e),children:[(0,ev.jsx)("span",{className:"flex size-8 shrink-0 items-center justify-center rounded-lg border bg-background text-muted-foreground",children:e.icon}),(0,ev.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,ev.jsx)("span",{className:"block truncate text-sm font-medium",children:e.title}),(0,ev.jsx)("span",{className:"block truncate text-xs text-muted-foreground",children:e.description})]}),(0,ev.jsxs)(mw,{children:[e.size.width,"x",e.size.height]})]},e.id))})]})]})})}function enc({nodes:e,edges:t,selectedNodeId:n,clipboardItems:r,onNodesChange:i,onEdgesChange:a,onNodesSet:o,onEdgesSet:l,onSelectedNodeChange:s,onClipboardItemsChange:c}){let d=ey.useRef(null),{addPaletteOpen:u,addTemplateNode:f,handleAddPaletteOpenChange:h,handleCanvasAction:p,handleCanvasDragOver:m,handleCanvasDrop:g,handleNodeCanvasConnect:v,handleNodeCanvasEdgeAction:x,handleNodeCanvasNodeAction:y,filePickerDialog:b,renderedCanvasNodes:w}=function({workspaceRef:e,nodes:t,clipboardItems:n,onNodesSet:r,onEdgesSet:i,onSelectedNodeChange:a,onClipboardItemsChange:o}){let l=ey.useRef(0),s=ey.useRef(0),[c,d]=ey.useState(!1),[u,f]=ey.useState(),[h,p]=ey.useState(),m=ey.useCallback((t,n)=>{let r,i,a,o,l,s,c,d;return r=e.current,i=r?.querySelector(".react-flow__viewport"),a=r?.getBoundingClientRect(),l="none"!==(o=i?getComputedStyle(i).transform:"none")?new DOMMatrixReadOnly(o):void 0,s=l?.a&&Number.isFinite(l.a)?l.a:1,c=l?.e??0,d=l?.f??0,{x:(t-(a?.left??0)-c)/s,y:(n-(a?.top??0)-d)/s}},[e]),g=ey.useCallback((e,t)=>{r(n=>n.map(n=>{let r,i;return n.id===e?(i="string"==typeof(r=n.data??{}).activeTabId&&t.some(e=>e.id===r.activeTabId)?r.activeTabId:t[0]?.id,{...n,data:{...r,tabs:t,activeTabId:i}}):n}))},[r]),v=ey.useCallback((e,t)=>{r(n=>n.map(n=>n.id===e?{...n,data:{...n.data??{},activeTabId:t}}:n))},[r]),x=ey.useCallback((e,t)=>{r(n=>n.map(n=>n.id===e?function(e,t){let n=e.data??{};if("multi-tab-system"===n.kind){let r=Array.isArray(n.tabs)?n.tabs:[];return{...e,data:{...n,tabs:r.map(e=>e.id===t.id?t:e),activeTabId:t.id}}}return Ue(n.kind)?{...e,data:{...n,tab:t}}:e}(n,t):n))},[r]),y=ey.useCallback((e,t)=>{r(n=>n.map(n=>n.id===e?{...n,data:{...n.data??{},terminal:t}}:n))},[r]),b=ey.useCallback((e,t)=>{var n;let i=(n=e.kind,W8.find(e=>e.id===n)?.size??W2({width:480,height:320}));s.current+=1;let o=`${e.kind}-detached-${s.current}`;r(n=>[...n,function({tab:e,nodeId:t,center:n,size:r}){return{id:t,type:"blank",position:W3(n,r),data:{contentScale:2,kind:e.kind,tab:{...e,id:`${t}-tab`}},width:r.width,height:r.height,style:W5(r)}}({tab:e,nodeId:o,center:t,size:i})]),a(o)},[r,a]),w=ey.useCallback(async(e,n)=>{try{let i,a=n?.nodeId?t.find(e=>e.id===n.nodeId):void 0,o=a?(a.data??{}).kind:void 0,l="data-table-tab-viewer"===o?await Uc(e):await Uo(e),s=void 0!==a&&(i=a.data??{},"multi-tab-system"===i.kind||"file-tab-viewer"===i.kind||"data-table-tab-viewer"===i.kind);n?.nodeId&&s&&r(e=>e.map(e=>e.id===n.nodeId?function(e,t,n){let r=e.data??{};if("multi-tab-system"===r.kind){let i,a,o=Array.isArray(r.tabs)?r.tabs:[];return{...e,data:{...r,tabs:(i=o.filter(e=>e.id!==t.id),a=void 0===n?i.length:Math.min(Math.max(n,0),i.length),i.splice(a,0,t),i),activeTabId:t.id}}}return"file-tab-viewer"===r.kind||"data-table-tab-viewer"===r.kind&&"data-table-tab-viewer"===t.kind?{...e,data:{...r,tab:t}}:e}(e,l,n.insertIndex):e)),n?.nodeId&&s||b(l,u??{x:496,y:336})}catch{qB.error("文件预览打开失败")}},[b,t,r,u]),j=ey.useCallback(e=>{let n=t.find(e=>"multi-tab-system"===(e.data??{}).kind);w(e,n?{nodeId:n.id}:void 0)},[t,w]),k=ey.useCallback(async(e,t,n)=>{let r=t.file?.path,i=t.file?.machineId??"local";if(!r)throw qB.error("文件路径不可用"),Error("file path is unavailable");try{let a=await wk({machineId:i,path:r,content:n}),o={...t,title:a.name,modified:!1,defaultValue:"utf-8"===a.encoding?a.content:n,file:{...t.file,name:a.name,path:a.path,machineId:a.machine.id,mimeType:a.mimeType,kind:t.file?.kind,size:a.size,truncated:a.truncated}};x(e,o),qB.success("文件已保存")}catch(e){throw qB.error("文件保存失败"),e}},[x]),S=ey.useCallback((e,t,n)=>{b(t,m(n.clientX,n.clientY))},[b,m]),N=ey.useCallback(e=>{let t=e.dataTransfer.getData("application/vnd.vantaloom.clip-id"),r=n.find(e=>e.id===t),i=r?r.payloads?.[fc]:void 0;if(i)return i;let a=e.dataTransfer.getData(fc);if(a)try{return JSON.parse(a)}catch{return}},[n]),C=ey.useCallback((e,t,n)=>{r(r=>r.map(r=>r.id!==e?r:function(e,t,n){let r=e.data??{},i=Array.isArray(r.tabs)?r.tabs:[],a=new Set(i.map(e=>e.id)),o=n.tab.id,l=2;for(;a.has(o);)o=`${n.tab.id}-${l}`,l+=1;let s=[...i];return s.splice(Math.max(0,Math.min(t,s.length)),0,{...n.tab,id:o}),{...e,data:{...r,tabs:s,activeTabId:o}}}(r,t,n)))},[r]),M=ey.useCallback((e,t,n)=>{let r=N(n);r&&C(e,t,r)},[N,C]),E=ey.useCallback(e=>(function(e,t){for(let n of[...e].reverse()){if("multi-tab-system"!==(n.data??{}).kind)continue;let e=function(e){let t="number"==typeof e.width?e.width:"number"==typeof e.style?.width?e.style.width:"string"==typeof e.style?.width?Number.parseFloat(e.style.width):192,n="number"==typeof e.height?e.height:"number"==typeof e.style?.height?e.style.height:"string"==typeof e.style?.height?Number.parseFloat(e.style.height):112;return{width:Number.isFinite(t)?t:192,height:Number.isFinite(n)?n:112}}(n),r=t.x>=n.position.x&&t.x<=n.position.x+e.width,i=t.y>=n.position.y&&t.y<=n.position.y+e.height;if(r&&i)return n}})(t,e),[t]),O=ey.useCallback((t,n,r)=>(function(e,t,n,r){let i=Array.from(e.current?.querySelectorAll(".react-flow__node")??[]).find(e=>e.getAttribute("data-id")===t),a=i?.querySelector('[data-slot="multi-tab-list"]');if(!a)return r;let o=Array.from(a.querySelectorAll("[data-tab-id]"));for(let[e,t]of o.entries()){let r=t.getBoundingClientRect();if(n<r.left+r.width/2)return e}return o.length})(e,t,n,r),[e]),P=function({nodes:e,onTabsChange:t,onActiveTabChange:n,onRequestFileTab:r,onOpenWorkspaceFile:i,onTabChange:a,onSaveFileTab:o,onTerminalStateChange:l,onTabDetach:s,onExternalTabDrop:c}){return ey.useMemo(()=>e.map(e=>{let d=e.data??{},u=(e.data??{}).kind;return u?{...e,data:{...d,content:(0,ev.jsx)(etB,{kind:u,nodeId:e.id,tab:d.tab,tabs:d.tabs,activeTabId:d.activeTabId,terminalScopeId:`canvas:node:${e.id}`,terminalState:d.terminal,onTerminalStateChange:t=>l(e.id,t),onRequestFileTab:r,onOpenWorkspaceFile:i,onTabsChange:t,onTabChange:a,onSaveFileTab:o,onActiveTabChange:n,onTabDetach:s,onExternalTabDrop:c})}}:e}),[e,n,c,i,r,o,a,s,l,t])}({nodes:t,onTabsChange:g,onActiveTabChange:v,onRequestFileTab:p,onOpenWorkspaceFile:j,onTabChange:x,onSaveFileTab:k,onTerminalStateChange:y,onTabDetach:S,onExternalTabDrop:M}),z=ey.useCallback(e=>{s.current+=1;let n=`${e.id}-${t.length+s.current}`;r(t=>[...t,function({template:e,nodeId:t,center:n}){let r={contentScale:2,kind:e.id};return"multi-tab-system"===e.id?r.tabs=[]:Ue(e.id)&&(r.tab=Un(e.id,`${t}-tab`)),{id:t,type:"blank",position:W3(n,e.size),data:r,width:e.size.width,height:e.size.height,style:W5(e.size)}}({template:e,nodeId:n,center:u??{x:496,y:336}})]),a(void 0),d(!1),f(void 0)},[t.length,r,a,u]),A=ey.useCallback(e=>{let t=e.dataTransfer.getData("application/vnd.vantaloom.clip-id");if(!t)return;let i=n.find(e=>e.id===t),o=m(e.clientX,e.clientY),s=N(e),c=s?E(o):void 0;if(s&&c){e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="move";let t=c.data??{},n=Array.isArray(t.tabs)?t.tabs:[],r=O(c.id,e.clientX,n.length);C(c.id,r,s),a(void 0);return}let d=i?i.payloads?.[fs]:void 0;if(!i||!d)return;e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="move",l.current+=1;let u=`${d.node.id}-drop-${l.current}`;r(e=>[...e,function({source:e,nodeId:t,center:n}){let r={width:e.width??192,height:e.height??112};return{...e,id:t,position:W3(n,r),style:e.style??W5(r),selected:!1,data:{...e.data??{},resizing:!1}}}({source:d.node,nodeId:u,center:o})]),a(u)},[n,E,N,m,O,C,r,a]),I=ey.useCallback(e=>{Array.from(e.dataTransfer.types).some(e=>[fs,fc].includes(e))&&(e.preventDefault(),e.dataTransfer.dropEffect="move")},[]),_=ey.useCallback((e,{flowPosition:t})=>{"add"===e&&(f(t),d(!0))},[]),D=ey.useCallback(e=>{i(t=>{if(t.find(t=>t.source===e.source&&t.target===e.target))return t;let n=t.find(t=>t.source===e.target&&t.target===e.source);return n?t.map(e=>e.id===n.id?{...e,data:{...e.data??{},bidirectional:!0}}:e):[...t,{id:`edge-${e.source}-${e.target}-${t.length+1}`,type:"connection",source:e.source,target:e.target,sourceHandle:e.sourceHandle,targetHandle:e.targetHandle,data:{anchors:[]}}]})},[i]),T=ey.useCallback((e,t,n)=>{"cut-edge"===e?i(e=>e.filter(e=>e.id!==t)):i(r=>r.map(r=>{if(r.id!==t)return r;let i=[...r.data?.anchors??[]];return"add-anchor"===e&&n.anchor&&i.splice(n.anchorIndex??i.length,0,n.anchor),"move-anchor"===e&&n.anchor&&void 0!==n.anchorIndex&&(i[n.anchorIndex]=n.anchor),"delete-anchor"===e&&void 0!==n.anchorIndex&&i.splice(n.anchorIndex,1),{...r,data:{...r.data??{},anchors:i}}}))},[i]),R=ey.useCallback((e,n,{snappedPosition:l})=>{if("copy"===e)return void r(e=>{let t=e.find(e=>e.id===n);if(!t)return e;let r=`${t.id}-copy-${e.length+1}`;return a(r),[...e,{...t,id:r,position:l,selected:!1,data:{...t.data??{},resizing:!1}}]});if("cut"===e){let e,l,s,c,d,u,f=t.find(e=>e.id===n);if(!f)return;let h=(e={...f.data??{}},delete e.content,delete e.mode,delete e.onConnectPointerDown,delete e.onSelectNode,delete e.resizing,c=(s=function(e){let t=e.data??{},n=t.tab;if(n?.id&&Ue(n.kind))return n;let r=t.kind;if(Ue(r))return Un(r,e.id)}(l={...f,selected:!1,data:{...e,resizing:!1}}))?{tab:s,sourceNodeId:f.id}:void 0,d={[fs]:{node:l}},u={"application/vnd.vantaloom.clip-kind":s?"canvas-tab":"canvas-node",[fs]:f.id},c&&(d[fc]=c,u[fc]=JSON.stringify(c)),{id:`clip-${f.id}`,title:s?.title??"画布节点",description:s?"来自画布的独立标签页。":"来自节点画布的空白节点。",meta:`${Math.round(f.width??192)}x${Math.round(f.height??112)}`,icon:s?Ut(s.kind):(0,ev.jsx)(WJ,{className:"size-4"}),dragData:u,payloads:d});o(e=>[h,...e.filter(e=>e.id!==h.id)]),r(e=>e.filter(e=>e.id!==n)),i(e=>e.filter(e=>e.source!==n&&e.target!==n)),a(void 0)}},[t,o,i,r,a]);return{addPaletteOpen:c,addTemplateNode:z,filePickerDialog:(0,ev.jsx)(eek,{open:void 0!==h,onOpenChange:e=>{e||p(void 0)},onSelectFile:e=>{p(void 0),w(e,h)}}),handleAddPaletteOpenChange:function(e){d(e),e||f(void 0)},handleCanvasAction:_,handleCanvasDragOver:I,handleCanvasDrop:A,handleNodeCanvasConnect:D,handleNodeCanvasEdgeAction:T,handleNodeCanvasNodeAction:R,renderedCanvasNodes:P}}({workspaceRef:d,nodes:e,clipboardItems:r,onNodesChange:i,onEdgesChange:a,onNodesSet:o,onEdgesSet:l,onSelectedNodeChange:s,onClipboardItemsChange:c});return(0,ev.jsxs)("div",{ref:d,className:"vtl-app-background vtl-canvas-workspace relative h-full w-full overflow-hidden",onDragOver:m,onDrop:g,children:[(0,ev.jsx)(cx,{"aria-label":"新建画布",className:"h-full min-h-0 rounded-none border-0",viewportClassName:"h-full",nodes:w,edges:t,nodeTypes:W0,edgeTypes:W1,onNodesChange:i,onEdgesChange:a,selectedNodeId:n,onSelectedNodeChange:s,defaultViewport:{x:0,y:0,zoom:.5},labels:{actions:"画布操作",add:"添加节点",select:"普通鼠标",connect:"连接工具",cut:"剪刀工具",drag:"拖拽工具",modeTools:"模式工具",resetZoom:"重置缩放",viewportTools:"视口工具",lockViewport:"锁定视口",visualSnap:"视觉吸附",nodeSnap:"节点吸附",snapTools:"吸附工具",nodeActions:"节点操作",resizeNode:"调整大小",copyNode:"复制节点",cutNode:"剪切节点"},onCanvasAction:p,onNodeCanvasConnect:v,onNodeCanvasEdgeAction:x,onNodeCanvasNodeAction:y}),(0,ev.jsx)(ens,{open:u,onOpenChange:h,onAdd:f}),b,(0,ev.jsx)(qK,{position:"top-right"})]})}function end({open:e,definitions:t,onOpenChange:n,onAdd:r}){return(0,ev.jsx)(mm,{open:e,onOpenChange:n,title:"添加卡片",description:"搜索并选择要添加到运维面板的卡片。",className:"top-1/2 max-w-xl -translate-y-1/2",children:(0,ev.jsxs)(mp,{loop:!0,children:[(0,ev.jsx)(mg,{placeholder:"搜索可添加卡片..."}),(0,ev.jsxs)(mv,{className:"max-h-[420px]",children:[(0,ev.jsx)(mx,{children:"没有找到可添加的卡片。"}),(0,ev.jsx)(my,{heading:"运维面板卡片",children:t.map(e=>(0,ev.jsxs)(mb,{value:`${e.title} ${e.description}`,keywords:[e.id,e.defaultConfig.dataSource],onSelect:()=>r(e.id),className:"min-h-14 items-start py-2",children:[(0,ev.jsx)("span",{className:"mt-0.5 grid size-8 shrink-0 place-items-center rounded-md border bg-background text-muted-foreground",children:e.icon}),(0,ev.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,ev.jsx)("span",{className:"block truncate font-medium",children:e.title}),(0,ev.jsx)("span",{className:"mt-0.5 block truncate ui-text-kbd text-muted-foreground",children:e.description})]}),(0,ev.jsxs)(mw,{children:[e.defaultSize.w,"x",e.defaultSize.h]})]},e.id))})]})]})})}function enu({open:e,dragMode:t,onOpenChange:n,onAdd:r,onDragModeChange:i}){let a=[{key:"add",label:"添加组件",icon:(0,ev.jsx)(sQ,{className:"size-4"}),onClick:r,pressed:!1},{key:"drag",label:"拖拽排版",icon:(0,ev.jsx)(sK,{className:"size-4"}),onClick:()=>i(!t),pressed:t}];return(0,ev.jsx)("div",{className:"fixed right-5 bottom-5 z-30",children:(0,ev.jsxs)("div",{className:"relative size-8",children:[a.map((t,n)=>(0,ev.jsx)(tY,{type:"button",variant:"outline",size:"icon-sm","aria-label":t.label,"aria-pressed":t.pressed,onClick:t.onClick,className:tK("absolute inset-0 rounded-full bg-background/95 shadow-md backdrop-blur transition-[opacity,transform] duration-150 ease-out",t.pressed&&"border-foreground bg-foreground text-background shadow-lg ring-1 ring-background/50 hover:bg-foreground hover:text-background dark:bg-primary dark:text-primary-foreground dark:hover:bg-primary",e?"pointer-events-auto opacity-100":"pointer-events-none translate-y-1 opacity-0"),style:{transform:e?`translateY(-${(n+1)*42}px)`:void 0},children:t.icon},t.key)),(0,ev.jsx)(tY,{type:"button",variant:"outline",size:"icon-sm","aria-label":"仪表盘操作","aria-expanded":e,onClick:()=>n(!e),className:"absolute inset-0 rounded-full bg-background/95 shadow-md backdrop-blur",children:(0,ev.jsx)(sZ,{className:tK("size-4 transition-transform",e&&"rotate-90")})})]})})}function enf({layout:e,layouts:t,cellSize:n,cellHeight:r,dragMode:i,selected:a,resizing:o,onSelect:l,onMove:s,onCut:c,onCopy:d,onSettingsOpen:u,onResizeStart:f,onResizeEnd:h,children:p}){let[m,g]=ey.useState(!1),v=r??n,x=e.x*(n+12),y=e.y*(v+12),b=e.w*n+(e.w-1)*12,w=e.h*v+(e.h-1)*12;return(0,ev.jsxs)("div",{"data-dashboard-widget":e.id,className:tK("absolute rounded-lg p-1 transition-[left,top,width,height,box-shadow] duration-200 ease-out",i&&"cursor-grab active:cursor-grabbing",m&&"duration-150",a&&!o&&"z-20 shadow-sm",o&&"z-30 transition-none"),style:{left:x,top:y,width:b,height:w},onPointerDown:function(r){if(!i||o)return;let a=r.target;if(a instanceof HTMLElement&&a.closest("[data-dashboard-action]"))return;r.preventDefault(),r.currentTarget.setPointerCapture(r.pointerId),l();let c=r.clientX,d=r.clientY;function u(r){let i=fM({...e,x:e.x+Math.round((r.clientX-c)/(n+12)),y:e.y+Math.round((r.clientY-d)/(n+12))});fC(i,t,e.id)||s(i)}g(!0),window.addEventListener("pointermove",u),window.addEventListener("pointerup",function e(){window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",e),g(!1)})},onClick:()=>{i&&l()},children:[(0,ev.jsx)("div",{className:tK("size-full",i&&"pointer-events-none"),children:p}),a&&i&&!o?(0,ev.jsx)("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-1 rounded-lg border-2 border-foreground"}):null,a&&i&&!o?(0,ev.jsx)(enh,{onSettingsOpen:u,onCut:c,onCopy:d,onResizeStart:f}):null,o?(0,ev.jsx)(enp,{layout:e,layouts:t,cellSize:n,onResize:s,onResizeEnd:h}):null]})}function enh({onSettingsOpen:e,onCut:t,onCopy:n,onResizeStart:r}){return(0,ev.jsx)(s5,{"data-dashboard-action":!0,placement:"inline",size:"sm","aria-label":"组件操作",className:"!absolute top-full left-1/2 z-40 mt-2 -translate-x-1/2 rounded-lg bg-popover/95 p-1 shadow-md",onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,ev.jsxs)(s4,{children:[(0,ev.jsx)(s3,{type:"button","aria-label":"调整大小",onClick:r,children:(0,ev.jsx)(sX,{className:"size-4"})}),(0,ev.jsx)(s3,{type:"button","aria-label":"卡片设置",onPointerDown:t=>{t.preventDefault(),t.stopPropagation(),e()},onClick:e=>e.stopPropagation(),children:(0,ev.jsx)(mS,{className:"size-4"})}),(0,ev.jsx)(s3,{type:"button","aria-label":"复制",onClick:n,children:(0,ev.jsx)(sU,{className:"size-4"})}),(0,ev.jsx)(s3,{type:"button","aria-label":"剪切",onPointerDown:e=>{e.preventDefault(),e.stopPropagation(),t()},onClick:e=>e.stopPropagation(),children:(0,ev.jsx)(s1,{className:"size-4"})})]})})}function enp({layout:e,layouts:t,cellSize:n,onResize:r,onResizeEnd:i}){return(0,ev.jsx)("div",{"data-dashboard-action":!0,className:"pointer-events-none absolute inset-1 z-40 border-2 border-foreground",children:[{id:"top-left",className:"top-0 left-0 -translate-x-1/2 -translate-y-1/2 cursor-nwse-resize"},{id:"top",className:"top-0 left-1/2 -translate-x-1/2 -translate-y-1/2 cursor-ns-resize"},{id:"top-right",className:"top-0 right-0 translate-x-1/2 -translate-y-1/2 cursor-nesw-resize"},{id:"right",className:"top-1/2 right-0 translate-x-1/2 -translate-y-1/2 cursor-ew-resize"},{id:"bottom-right",className:"right-0 bottom-0 translate-x-1/2 translate-y-1/2 cursor-nwse-resize"},{id:"bottom",className:"bottom-0 left-1/2 -translate-x-1/2 translate-y-1/2 cursor-ns-resize"},{id:"bottom-left",className:"bottom-0 left-0 -translate-x-1/2 translate-y-1/2 cursor-nesw-resize"},{id:"left",className:"top-1/2 left-0 -translate-x-1/2 -translate-y-1/2 cursor-ew-resize"}].map(a=>(0,ev.jsx)("button",{type:"button","aria-label":`调整 ${a.id}`,className:tK("pointer-events-auto absolute size-2.5 border border-foreground bg-background shadow-sm",a.className),onPointerDown:o=>(function(a,o){a.preventDefault(),a.stopPropagation(),a.currentTarget.setPointerCapture(a.pointerId);let l=a.clientX,s=a.clientY;function c(i){let a=Math.round((i.clientX-l)/(n+12)),c=Math.round((i.clientY-s)/(n+12)),d={...e};o.includes("right")&&(d.w=e.w+a),o.includes("bottom")&&(d.h=e.h+c),o.includes("left")&&(d.x=e.x+a,d.w=e.w-a),o.includes("top")&&(d.y=e.y+c,d.h=e.h-c),fC(d=fM(d),t,e.id)||r(d)}window.addEventListener("pointermove",c),window.addEventListener("pointerup",function e(){window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",e),i()})})(o,a.id)},a.id))})}function enm({open:e,layout:t,definition:n,config:r,cellSize:i,onOpenChange:a,onConfigChange:o}){let l=t&&i>0?t.w*i+(t.w-1)*12:320,s=t&&i>0?t.h*i+(t.h-1)*12:180;return(0,ev.jsx)(px,{open:e,onOpenChange:a,children:(0,ev.jsx)(mO,{side:"right",className:"w-screen gap-0 border-0 bg-transparent p-0 shadow-none sm:max-w-none",children:t&&n&&r?(0,ev.jsxs)("div",{className:"grid h-full min-w-0 grid-cols-1 lg:grid-cols-[minmax(0,1fr)_24rem]",children:[(0,ev.jsx)(eng,{width:l,height:s,className:"hidden lg:grid",children:n.render(r)}),(0,ev.jsxs)("div",{className:"animate-in slide-in-from-right-4 flex h-full w-full flex-col border-y-0 border-r-0 bg-background text-foreground shadow-lg duration-300",children:[(0,ev.jsxs)(mP,{className:"border-b",children:[(0,ev.jsx)(mz,{children:"卡片设置"}),(0,ev.jsxs)(mA,{children:[n.title," · ",t.w,"x",t.h]})]}),(0,ev.jsxs)("div",{className:"grid flex-1 content-start gap-4 overflow-y-auto p-4",children:[(0,ev.jsxs)("label",{className:"grid gap-1.5",children:[(0,ev.jsx)("span",{className:"ui-text-control font-medium",children:"显示标题"}),(0,ev.jsx)(tX,{value:r.title,onChange:e=>o({title:e.currentTarget.value})})]}),(0,ev.jsxs)("label",{className:"grid gap-1.5",children:[(0,ev.jsx)("span",{className:"ui-text-control font-medium",children:"数据来源"}),(0,ev.jsx)(tX,{value:r.dataSource,onChange:e=>o({dataSource:e.currentTarget.value})})]}),(0,ev.jsxs)("label",{className:"grid gap-1.5",children:[(0,ev.jsx)("span",{className:"ui-text-control font-medium",children:"刷新间隔"}),(0,ev.jsx)(tX,{value:r.refreshRate,onChange:e=>o({refreshRate:e.currentTarget.value})})]}),(0,ev.jsxs)("label",{className:"grid gap-1.5",children:[(0,ev.jsx)("span",{className:"ui-text-control font-medium",children:"备注"}),(0,ev.jsx)("textarea",{value:r.note,rows:4,className:"min-h-24 resize-none rounded-lg border border-input bg-transparent px-2.5 py-2 ui-text-control transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50",onChange:e=>o({note:e.currentTarget.value})})]}),(0,ev.jsxs)("div",{className:"rounded-lg border bg-muted/20 p-3",children:[(0,ev.jsx)("div",{className:"ui-text-control font-medium",children:"当前绑定"}),(0,ev.jsxs)("div",{className:"mt-2 grid gap-1 ui-text-kbd text-muted-foreground",children:[(0,ev.jsxs)("span",{children:["类型:",n.id]}),(0,ev.jsxs)("span",{children:["来源:",r.dataSource]}),(0,ev.jsxs)("span",{children:["刷新:",r.refreshRate]})]})]})]})]})]}):null})})}function eng({width:e,height:t,className:n,children:r}){let[i,a]=hl(),o=a.width>0&&a.height>0?Math.min(1,(a.width-32)/e,(a.height-32)/t):1;return(0,ev.jsx)("div",{ref:i,className:tK("min-h-0 min-w-0 place-items-center overflow-hidden p-4",n),children:(0,ev.jsx)("div",{className:"animate-in fade-in-0 zoom-in-95 origin-center rounded-lg duration-300",style:{width:e,height:t,transform:`scale(${Math.max(.1,o)})`},children:r})})}function env(){return ey.useMemo(()=>[{id:"active-runs",title:ff.activeRuns,description:"当前正在执行的 Agent 运行数量。",icon:(0,ev.jsx)(Wc,{className:"size-4"}),defaultSize:{w:3,h:1},defaultConfig:{title:ff.activeRuns,dataSource:"本机运行队列",refreshRate:"5s",note:"统计所有未完成的运行。"},render:e=>(0,ev.jsx)(B8,{label:e.title,value:"18",jellyImage:fe,jellyImagePosition:"center"})},{id:"queue",title:ff.queue,description:"排队等待调度的任务数量。",icon:(0,ev.jsx)(WZ,{className:"size-4"}),defaultSize:{w:3,h:1},defaultConfig:{title:ff.queue,dataSource:"调度器",refreshRate:"5s",note:"用于观察调度压力。"},render:e=>(0,ev.jsx)(B8,{label:e.title,value:"7",jellyImage:ft,jellyImagePosition:"center"})},{id:"cost",title:ff.cost,description:"今日模型、工具和机器资源消耗。",icon:(0,ev.jsx)(B1,{className:"size-4"}),defaultSize:{w:3,h:1},defaultConfig:{title:ff.cost,dataSource:"用量聚合",refreshRate:"1m",note:"后续可接入工作组账单。"},render:e=>(0,ev.jsx)(B8,{label:e.title,value:"$42.8",jellyImage:fn,jellyImagePosition:"center"})},{id:"machines-summary",title:ff.machineStatus,description:"工作组内可用机器概况。",icon:(0,ev.jsx)(eA,{className:"size-4"}),defaultSize:{w:3,h:1},defaultConfig:{title:ff.machineStatus,dataSource:"工作组机器",refreshRate:"15s",note:"包含本机、直连机器和 P2P 节点。"},render:e=>(0,ev.jsx)(B8,{label:e.title,value:"2 / 3",jellyImage:fr,jellyImagePosition:"center"})},{id:"resource-trend",title:ff.resourceTrend,description:"CPU 与内存趋势图。",icon:(0,ev.jsx)(B7,{className:"size-4"}),defaultSize:{w:8,h:4},defaultConfig:{title:ff.resourceTrend,dataSource:"机器遥测",refreshRate:"10s",note:"默认显示最近 6 个采样点。"},render:e=>(0,ev.jsx)(B9,{title:e.title})},{id:"run-mix",title:ff.runMix,description:"不同类型 Agent 运行的占比。",icon:(0,ev.jsx)(mY,{className:"size-4"}),defaultSize:{w:4,h:4},defaultConfig:{title:ff.runMix,dataSource:"运行记录",refreshRate:"30s",note:"用于快速观察任务类型构成。"},render:e=>(0,ev.jsx)(Ho,{title:e.title})},{id:"machine-status",title:ff.machineStatus,description:"各机器 CPU、内存、GPU 与磁盘状态。",icon:(0,ev.jsx)(B4,{className:"size-4"}),defaultSize:{w:8,h:5},defaultConfig:{title:ff.machineStatus,dataSource:"工作组机器",refreshRate:"10s",note:"用于运维总览的核心资源面板。"},render:e=>(0,ev.jsx)(B3,{title:e.title})},{id:"schedule",title:ff.schedule,description:"维护窗口、提醒和自动化计划。",icon:(0,ev.jsx)(Hs,{className:"size-4"}),defaultSize:{w:4,h:5},defaultConfig:{title:ff.schedule,dataSource:"本机日程",refreshRate:"5m",note:"之后可接工作组日程。"},render:e=>(0,ev.jsx)(Hd,{title:e.title})}],[])}function enx({clipboardItems:e,onClipboardItemsChange:t,onOverlayOpenChange:n}){let[r,i]=ey.useState(!1),[a,o]=ey.useState(!1),[l,s]=ey.useState(!1),[c,d]=ey.useState(fS),[u,f]=ey.useState({}),[h,p]=ey.useState(),[m,g]=ey.useState(),[v,x]=ey.useState(),y=ey.useRef(0),b=ey.useRef(0),[w,j]=hl(),k=j.width>0?fb(j.width):12,S=fk(c,k),N=j.width>0?(j.width-12*(k-1))/k:96,C=fw(N,k),M=Math.max(9,fN(S)+2),E=M*C+(M-1)*12,O=env(),P=ey.useMemo(()=>new Map(O.map(e=>[e.id,e])),[O]);function z(e){let t=P.get(e.kind);return u[e.id]??(t?fO(t):void 0)}function A(e){d(t=>{let n=fM(e);return fC(n,t,n.id)?t:t.map(e=>e.id===n.id?n:e)})}ey.useEffect(()=>{n(a||!!v)},[a,n,v]),ey.useEffect(()=>()=>n(!1),[n]),ey.useEffect(()=>{l||(p(void 0),g(void 0))},[l]),ey.useEffect(()=>{if(m)return window.addEventListener("pointerdown",e),()=>window.removeEventListener("pointerdown",e);function e(e){let t=e.target;t instanceof HTMLElement&&t.closest("[data-dashboard-action]")||(p(m),g(void 0))}},[m]);let I=v?c.find(e=>e.id===v):void 0,_=I?P.get(I.kind):void 0,D=I?z(I):void 0;return(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)("div",{ref:w,"data-dashboard-board":!0,className:tK("relative mx-auto max-w-7xl p-4 lg:p-6",l&&"select-none"),style:{minHeight:E+48},onDragOver:e=>{Array.from(e.dataTransfer.types).includes("application/vnd.vantaloom.dashboard-widget-kind")&&(e.preventDefault(),e.dataTransfer.dropEffect="move")},onDrop:function(t){let n=t.dataTransfer.getData("application/vnd.vantaloom.clip-id"),r=t.dataTransfer.getData("application/vnd.vantaloom.dashboard-widget-kind");if(!n||!r)return;let i=e.find(e=>e.id===n);if(!i)return;t.preventDefault(),t.stopPropagation(),t.dataTransfer.dropEffect="move";let a=w.current,o=a?.getBoundingClientRect();!function(e,t){let n=fP(e);if(!n)return;b.current+=1;let r=`${n.kind}-clip-${b.current}`,i=fM({id:r,kind:n.kind,x:t?.x??0,y:t?.y??fN(c),w:n.w,h:n.h}),a=t&&!fC(i,c)?i:fE(c,r,n.kind,n.w,n.h);d(e=>[...e,a]),f(e=>({...e,[r]:{...n.config}})),p(r),g(void 0)}(i,{x:o&&N>0?Math.round((t.clientX-o.left-24)/(N+12)):0,y:o&&N>0?Math.round((t.clientY-o.top-24)/(N+12)):fN(c)})},onPointerDown:e=>{e.target===e.currentTarget&&(p(void 0),l||g(void 0))},children:(0,ev.jsx)("div",{className:"relative",style:{height:E},children:S.map(e=>{let n=O.find(t=>t.id===e.kind);if(!n)return null;let r=z(e);if(!r)return null;let i=k<12;return(0,ev.jsx)(enf,{layout:e,layouts:S,cellSize:N,cellHeight:C,dragMode:!i&&l,selected:h===e.id,resizing:!i&&m===e.id,onSelect:()=>{l&&!i&&p(e.id)},onMove:i?()=>{}:A,onCut:()=>(function(e){let n=c.find(t=>t.id===e),r=n?P.get(n.kind):void 0,i=n?z(n):void 0;if(!n||!r||!i)return;let a=function({layout:e,definition:t,config:n}){let r={kind:e.kind,w:e.w,h:e.h,config:{...n}};return{id:`clip-${e.id}`,title:n.title||t.title,description:t.description,meta:`${e.w}x${e.h}`,icon:t.icon,dragData:{"application/vnd.vantaloom.clip-kind":"dashboard-widget","application/vnd.vantaloom.dashboard-widget-kind":e.kind,"application/vnd.vantaloom.dashboard-widget-width":String(e.w),"application/vnd.vantaloom.dashboard-widget-height":String(e.h),"application/vnd.vantaloom.dashboard-widget-config":JSON.stringify(n)},payloads:{[fd]:r}}}({layout:n,definition:r,config:i});t(e=>[a,...e.filter(e=>e.id!==a.id)]),d(t=>t.filter(t=>t.id!==e)),f(t=>{let n={...t};return delete n[e],n}),p(void 0),g(void 0),x(t=>t===e?void 0:t)})(e.id),onCopy:()=>(function(e){let t=c.find(t=>t.id===e);if(!t)return;y.current+=1;let n=`${e}-copy-${y.current}`,r=fE(c,n,t.kind,t.w,t.h);d(e=>[...e,r]),f(r=>({...r,[n]:r[e]??fO(P.get(t.kind))})),p(n)})(e.id),onSettingsOpen:()=>x(e.id),onResizeStart:i?()=>{}:()=>{p(void 0),g(e.id)},onResizeEnd:i?()=>{}:()=>{p(e.id),g(void 0)},children:n.render(r)},e.id)})})}),(0,ev.jsx)(enu,{open:r,dragMode:l,onOpenChange:i,onAdd:()=>{i(!1),o(!0)},onDragModeChange:s}),(0,ev.jsx)(end,{open:a,definitions:O,onOpenChange:o,onAdd:function(e){let t=P.get(e);if(!t)return;b.current+=1;let n=`${e}-added-${b.current}`,r=fE(c,n,e,t.defaultSize.w,t.defaultSize.h);d(e=>[...e,r]),f(e=>({...e,[n]:fO(t)})),p(n),g(void 0),o(!1)}}),(0,ev.jsx)(enm,{open:!!(I&&_&&D),layout:I,definition:_,config:D,cellSize:N,onOpenChange:e=>{e||x(void 0)},onConfigChange:e=>{var t;let n,r;I&&(t=I.id,r=(n=c.find(e=>e.id===t))?P.get(n.kind):void 0,n&&r&&f(n=>({...n,[t]:{...n[t]??fO(r),...e}})))}})]})}let eny={delete:"Delete",empty:"Drop here",title:"Trash"};function enb({active:e=!1,items:t=[],labels:n,className:r,onDrop:i,onDelete:a,onItemRestore:o,...l}){let s={...eny,...n},[c,d]=ey.useState(!1),u=ey.useRef(0),f=e||c||t.length>0;return ey.useEffect(()=>{e||(u.current=0,d(!1))},[e]),(0,ev.jsx)("div",{"data-slot":"trash-drop-zone","data-visible":f,"data-drag-inside":c,className:tK("fixed top-4 left-1/2 z-50 -translate-x-1/2 transition-[opacity,transform] duration-300 ease-[cubic-bezier(.2,.8,.2,1)]",f?"pointer-events-auto translate-y-0 opacity-100":"pointer-events-none -translate-y-5 opacity-0",r),onDragEnter:function(e){e.preventDefault(),u.current+=1,d(!0)},onDragLeave:function(){u.current=Math.max(0,u.current-1),0===u.current&&d(!1)},onDragOver:function(e){e.preventDefault(),e.dataTransfer.dropEffect="move",d(!0)},onDrop:function(e){e.preventDefault(),e.stopPropagation(),u.current=0,d(!1);let t=e.dataTransfer.getData("application/vnd.vantaloom.clip-id")||e.dataTransfer.getData("text/plain"),n=e.dataTransfer.getData("text/plain")||t||"Dropped item",r=e.dataTransfer.getData("application/vnd.vantaloom.clip-kind");t&&i?.({id:t,title:n,meta:r,nativeEvent:e})},...l,children:(0,ev.jsx)("div",{className:tK("min-w-12 overflow-hidden rounded-xl border-2 border-background bg-destructive text-destructive-foreground shadow-lg shadow-black/15 transition-[width,min-height,background-color,border-color,padding,box-shadow] duration-300","dark:border-destructive dark:bg-background dark:text-destructive",c||t.length>0?"w-64 border-dashed bg-destructive/12 p-2 text-destructive dark:bg-destructive/8":"flex size-12 items-center justify-center p-0"),children:c||t.length>0?(0,ev.jsxs)("div",{className:"grid gap-2",children:[(0,ev.jsxs)("div",{className:"flex min-h-14 items-center justify-center gap-2 rounded-lg border border-dashed border-destructive/55 bg-destructive/8 px-3 text-sm font-medium text-destructive",children:[(0,ev.jsx)(gn,{className:"size-4"}),(0,ev.jsx)("span",{children:s.empty})]}),t.length>0?(0,ev.jsx)("div",{className:"grid max-h-36 gap-1 overflow-y-auto pr-1",children:t.map(e=>(0,ev.jsxs)("div",{className:"flex h-8 items-center gap-2 rounded-md border border-destructive/25 bg-background/80 px-2 text-foreground",children:[(0,ev.jsx)("button",{type:"button","aria-label":`Restore ${e.title}`,className:"flex size-5 shrink-0 items-center justify-center rounded-sm text-muted-foreground transition-colors hover:bg-destructive/10 hover:text-destructive",onClick:()=>o?.(e),children:(0,ev.jsx)(ms,{className:"size-3.5"})}),(0,ev.jsx)("span",{className:"min-w-0 flex-1 truncate text-xs font-medium",children:e.title}),e.meta?(0,ev.jsx)("span",{className:"shrink-0 text-xs text-muted-foreground",children:e.meta}):null]},e.id))}):null,t.length>0?(0,ev.jsx)("button",{type:"button",className:"h-8 rounded-md bg-destructive px-3 text-xs font-medium text-destructive-foreground transition-colors hover:bg-destructive/90 dark:border dark:border-destructive dark:bg-background dark:text-destructive dark:hover:bg-destructive/10",onClick:()=>a?.(t),children:s.delete}):null]}):(0,ev.jsx)(gn,{className:"size-5"})})})}function enw({hidden:e,items:t,trashItems:n,trashClipboardItems:r,draggingId:i,onDraggingChange:a,onItemsChange:o,onTrashItemsChange:l,onTrashClipboardItemsChange:s}){let c=ey.useRef(0),[d,u]=ey.useState(!1);return(ey.useEffect(()=>{u(!0)},[]),d)?(0,ob.createPortal)((0,ev.jsxs)("div",{className:tK("pointer-events-none fixed inset-0 z-40 overflow-visible transition-opacity duration-200",e&&"opacity-0"),children:[(0,ev.jsx)(enb,{active:!e&&void 0!==i,items:e?[]:n,className:tK(e&&"pointer-events-none"),labels:{delete:"删除",empty:"拖入暂存"},onDrop:({id:e,title:n,meta:r})=>{let i=t.find(t=>t.id===e);i&&(s(t=>({...t,[e]:i})),l(t=>t.some(t=>t.id===e)?t:[...t,{id:e,title:n,meta:r,icon:i.icon}]))},onDelete:e=>{let t=new Set(e.map(e=>e.id));l(e=>e.filter(e=>!t.has(e.id))),s(e=>{let n={...e};for(let e of t)delete n[e];return n})},onItemRestore:e=>{let n=r[e.id];n&&o([n,...t.filter(e=>e.id!==n.id)]),l(t=>t.filter(t=>t.id!==e.id)),s(t=>{let n={...t};return delete n[e.id],n})}}),t.length>0?(0,ev.jsx)("div",{className:tK("pointer-events-auto absolute top-4 right-4 w-80 max-w-[calc(100vw-2rem)] transition-[opacity,transform] duration-200",e&&"pointer-events-none -translate-y-2 opacity-0"),children:(0,ev.jsx)(eeT,{items:t,title:"剪切板",labels:{empty:"剪切板为空",dragHandle:"拖拽卡片"},expansionDirection:"down-left",removeOnExternalDrop:!0,maxExpandedHeight:420,onItemDuplicate:(e,{item:n,index:r})=>{let i,a,l,s,d;return c.current+=1,i=fP(n),a=n.payloads?{...n.payloads}:void 0,l=n.payloads?.[fu],i&&a&&(a[fd]={...i,config:{...i.config}}),l&&a&&(a[fu]={...l,config:l.config?{...l.config}:l.config}),s={...n,id:`${n.id}-copy-${c.current}`,title:`${n.title} copy`,payloads:a,dragData:{...n.dragData,...i?{"application/vnd.vantaloom.dashboard-widget-config":JSON.stringify(i.config)}:{}}},void((d=[...t]).splice(r+1,0,s),o(d))},onItemsRemove:e=>o(e),onItemsReorder:e=>o(e),onItemDragStart:({item:e})=>a(e.id),onItemDragEnd:()=>a(void 0)})}):null]}),document.body):null}let enj=ey.createContext({cellWidth:96,cellHeight:96,isCompact:!1}),enk=ey.createContext({});function enS(e,t){let n=e[t];if(!n)throw Error(`Missing static grid layout: ${t}`);return n}function enN({layouts:e,minRows:t=9,className:n,children:r,...i}){let[a,o]=hl(),l=o.width>0?fb(o.width):12,s=l<12,c=ey.useMemo(()=>fk(e,l),[e,l]),d=ey.useMemo(()=>Object.fromEntries(c.map(e=>[e.id,e])),[c]),u=o.width>0?(o.width-12*(l-1))/l:96,f=fw(u,l),h=ey.useMemo(()=>({cellWidth:u,cellHeight:f,isCompact:s}),[u,f,s]);if(s)return(0,ev.jsx)("div",{ref:a,className:tK("mx-auto max-w-7xl",n),...i,children:(0,ev.jsx)(enj.Provider,{value:h,children:(0,ev.jsx)(enk.Provider,{value:d,children:r})})});let p=Math.max(t,c.reduce((e,t)=>Math.max(e,t.y+t.h),0)+2),m=p*f+(p-1)*12;return(0,ev.jsx)("div",{ref:a,className:tK("relative mx-auto max-w-7xl p-4 lg:p-6",n),style:{minHeight:m+48},...i,children:(0,ev.jsx)("div",{className:"relative",style:{height:m},children:(0,ev.jsx)(enj.Provider,{value:h,children:(0,ev.jsx)(enk.Provider,{value:d,children:r})})})})}function enC({layout:e,className:t,style:n,...r}){let{cellWidth:i,cellHeight:a,isCompact:o}=ey.useContext(enj),l=ey.useContext(enk)[e.id]??e;return o?(0,ev.jsx)("div",{className:tK("relative min-w-0",t),style:{minHeight:"calc(100svh - 7rem)",...n},...r}):(0,ev.jsx)("div",{className:tK("absolute min-w-0",t),style:{left:l.x*(i+12),top:l.y*(a+12),width:l.w*i+(l.w-1)*12,height:l.h*a+(l.h-1)*12,...n},...r})}let enM=[{id:"firewall",x:0,y:0,w:12,h:8}],enE=ho(enM);function enO(){var e;return e=(0,ev.jsx)(enN,{layouts:enM,children:(0,ev.jsx)(enC,{layout:enS(enE,"firewall"),className:"vtl-firewall-card overflow-hidden md:rounded-xl md:border md:bg-card",children:(0,ev.jsx)(eey,{})})}),(0,ev.jsx)(ha,{children:e})}let enP=eS("chart-area",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M7 11.207a.5.5 0 0 1 .146-.353l2-2a.5.5 0 0 1 .708 0l3.292 3.292a.5.5 0 0 0 .708 0l4.292-4.292a.5.5 0 0 1 .854.353V16a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1z",key:"q0gr47"}]]),enz=eS("layout-dashboard",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]),enA=eS("list-checks",[["path",{d:"M13 5h8",key:"a7qcls"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}]]),enI=eS("route",[["circle",{cx:"6",cy:"19",r:"3",key:"1kj8tv"}],["path",{d:"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15",key:"1d8sl"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]]),en_=eS("shield-alert",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]),enD=[{id:"run-ui-polish",title:"组件库视觉回归检查",machine:"Studio-PC",agent:"UI Polish",state:"running",started:"14:08",runtime:"22m",progress:68,load:54},{id:"run-runner-build",title:"Linux runner 镜像构建",machine:"Linux-runner-02",agent:"Build Agent",state:"running",started:"14:15",runtime:"15m",progress:41,load:86},{id:"run-access-audit",title:"工作组权限审阅",machine:"Studio-PC",agent:"Access Agent",state:"blocked",started:"14:21",runtime:"9m",progress:37,load:18},{id:"run-docs",title:"发布说明摘要",machine:"MacBook-build",agent:"Docs Agent",state:"queued",started:"等待",runtime:"0m",progress:0,load:0},{id:"run-cache-clean",title:"缓存清理策略验证",machine:"Linux-runner-02",agent:"Ops Sentinel",state:"failed",started:"13:54",runtime:"6m",progress:28,load:12}],enT=[{id:"worker-studio",machine:"Studio-PC",role:"local coordinator",active:3,capacity:6,cpu:42,memory:68},{id:"worker-runner",machine:"Linux-runner-02",role:"gpu worker",active:4,capacity:5,cpu:76,memory:81},{id:"worker-mac",machine:"MacBook-build",role:"build host",active:0,capacity:3,cpu:8,memory:24}],enR=[{id:"confirm-shell",title:"Studio-PC 请求执行发布前文件写入",meta:"UI Polish · apply_patch",tone:"normal"},{id:"confirm-service",title:"Linux-runner-02 请求重启 runner 服务",meta:"Ops Sentinel · Restart-Service",tone:"warning"},{id:"confirm-token",title:"工作组 token 加入新机器",meta:"Access Agent · admin required",tone:"normal"}],enL=[["14:29","Studio-PC","pnpm --filter vantaloom-app lint","完成"],["14:27","Linux-runner-02","docker build agent-runtime","运行中"],["14:22","Studio-PC","apply_patch agent settings","完成"],["14:17","MacBook-build","pnpm typecheck","排队"],["14:03","Linux-runner-02","cache prune dry-run","失败"]],en$={cpu:{label:"CPU",color:"var(--chart-1)"},memory:{label:"Memory",color:"var(--chart-3)"},network:{label:"Network",color:"var(--chart-5)"}};function enF(e,t,n=42,r){return(0,ev.jsx)("section",{className:tK("size-full rounded-xl border bg-card p-5",r&&"vtl-jelly-image-card",r&&fi(r)&&"vtl-jelly-image-card-shadowless"),style:r?fa({image:r,opacity:.74,blur:"8px"}):void 0,children:(0,ev.jsx)(m$,{label:e,value:t,minSize:n})})}function enB(e,t,n=""){return{title:e,dataSource:t,refreshRate:"10s",note:n}}let enV={metrics:{online:2,health:88.4,latency:"38ms",events:17},machines:[{id:"studio",name:"Studio-PC",os:"Windows",status:"online",link:"direct",heartbeat:"3s",cpu:42,memory:68,disk:71,network:24},{id:"runner",name:"Linux-runner-02",os:"Linux",status:"online",link:"p2p",heartbeat:"5s",cpu:76,memory:81,disk:62,network:43},{id:"mac",name:"MacBook-build",os:"macOS",status:"sleeping",link:"direct",heartbeat:"2m",cpu:8,memory:24,disk:48,network:6}],trend:[{time:"09:00",cpu:36,memory:54,network:24},{time:"10:00",cpu:48,memory:61,network:29},{time:"11:00",cpu:44,memory:58,network:34},{time:"12:00",cpu:63,memory:72,network:41},{time:"13:00",cpu:58,memory:69,network:37},{time:"14:00",cpu:71,memory:76,network:46}],networkLinks:[["Studio-PC","Linux-runner-02","P2P","38ms","0.3%"],["Studio-PC","MacBook-build","Direct","12ms","0.0%"],["Linux-runner-02","MacBook-build","Relay fallback","84ms","1.1%"]],events:[["14:31","Linux-runner-02 心跳延迟升高"],["14:28","Studio-PC 完成 2 个工具调用"],["14:19","MacBook-build 进入睡眠状态"],["14:12","工作组权限策略同步完成"],["14:04","P2P 链路切换到备用路径"]],serviceHealth:[{id:"local-service",name:"Local service",state:"正常",samples:[96,98,97,95,96,94,97,98,96,95,97,96]},{id:"agent-runtime",name:"Agent runtime",state:"正常",samples:[91,93,94,90,88,92,94,93,91,89,92,94]},{id:"p2p-mesh",name:"P2P mesh",state:"波动",samples:[78,82,76,73,68,71,74,79,83,80,77,72]},{id:"plugin-bridge",name:"Plugin bridge",state:"告警",samples:[88,86,84,82,79,74,63,54,48,52,67,76]}]},enH=[{id:"metric-runs",title:"运行中",description:"当前正在执行的运行数量。",icon:(0,ev.jsx)(Wc,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("运行中","运行队列"),render:e=>enF(e.title,"07",44,fe)},{id:"metric-queued",title:"排队",description:"等待调度的任务数量。",icon:(0,ev.jsx)(WZ,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("排队","调度器"),render:e=>enF(e.title,"04",44,ft)},{id:"metric-blocked",title:"待确认",description:"等待人工确认的任务数量。",icon:(0,ev.jsx)(en_,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("待确认","确认队列"),render:e=>enF(e.title,"03",44,fn)},{id:"metric-workers",title:"Worker",description:"当前可调度 worker 数量。",icon:(0,ev.jsx)(B4,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("Worker","Agent worker"),render:e=>enF(e.title,"14",44,fr)},{id:"queue",title:"任务队列",description:"运行队列 Roadmap。",icon:(0,ev.jsx)(enA,{className:"size-4"}),defaultSize:{w:7,h:5},defaultConfig:enB("任务队列","运行队列"),render:e=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden",children:[(0,ev.jsx)(fl,{title:e.title}),(0,ev.jsx)(H2,{items:enD})]})},{id:"workers",title:"Agent worker",description:"各 worker 的负载和容量。",icon:(0,ev.jsx)(B4,{className:"size-4"}),defaultSize:{w:5,h:5},defaultConfig:enB("Agent worker","Worker 状态"),render:e=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",children:[(0,ev.jsx)(fl,{title:e.title}),(0,ev.jsx)(H4,{workers:enT})]})},{id:"log",title:"最近执行",description:"最近执行记录 Roadmap。",icon:(0,ev.jsx)(vc,{className:"size-4"}),defaultSize:{w:7,h:4},defaultConfig:enB("最近执行","执行日志"),render:e=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden",children:[(0,ev.jsx)(fl,{title:e.title}),(0,ev.jsx)(H1,{items:enL})]})},{id:"confirmations",title:"待确认",description:"等待人工确认的事项。",icon:(0,ev.jsx)(Hl,{className:"size-4"}),defaultSize:{w:5,h:4},defaultConfig:enB("待确认","确认队列"),render:e=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",children:[(0,ev.jsx)(fl,{title:e.title}),(0,ev.jsx)(H0,{items:enR})]})}],enW=[{id:"metric-runs",kind:"metric-runs",x:0,y:0,w:3,h:2},{id:"metric-queued",kind:"metric-queued",x:3,y:0,w:3,h:2},{id:"metric-blocked",kind:"metric-blocked",x:6,y:0,w:3,h:2},{id:"metric-workers",kind:"metric-workers",x:9,y:0,w:3,h:2},{id:"queue",kind:"queue",x:0,y:2,w:7,h:5},{id:"workers",kind:"workers",x:7,y:2,w:5,h:5},{id:"log",kind:"log",x:0,y:7,w:7,h:4},{id:"confirmations",kind:"confirmations",x:7,y:7,w:5,h:4}];function enU(e=enV){return[{id:"metric-online",title:"在线机器",description:"当前在线机器数量。",icon:(0,ev.jsx)(eA,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("在线机器","机器心跳"),render:t=>enF(t.title,String(e.metrics.online),44,fe)},{id:"metric-health",title:"健康度",description:"工作组整体健康度。",icon:(0,ev.jsx)(ez,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("健康度","服务遥测"),render:t=>enF(t.title,`${e.metrics.health}%`,44,ft)},{id:"metric-latency",title:"平均延迟",description:"机器连接平均延迟。",icon:(0,ev.jsx)(B5,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("平均延迟","网络遥测"),render:t=>enF(t.title,e.metrics.latency,44,fn)},{id:"metric-events",title:"事件",description:"最近事件数量。",icon:(0,ev.jsx)(Hl,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("事件","事件流"),render:t=>enF(t.title,String(e.metrics.events),44,fr)},{id:"machines",title:"机器健康矩阵",description:"各机器资源和心跳状态。",icon:(0,ev.jsx)(eA,{className:"size-4"}),defaultSize:{w:7,h:5},defaultConfig:enB("机器健康矩阵","机器遥测"),render:t=>(0,ev.jsxs)("section",{className:"vtl-jelly-image-card flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",style:fa({image:"/themes/jelly/card1.png",opacity:.88,blur:"10px"}),children:[(0,ev.jsx)(fl,{title:t.title}),(0,ev.jsx)(H7,{machines:e.machines})]})},{id:"trend",title:"资源趋势",description:"CPU、内存和网络趋势。",icon:(0,ev.jsx)(enP,{className:"size-4"}),defaultSize:{w:5,h:5},defaultConfig:enB("资源趋势","机器遥测"),render:t=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",children:[(0,ev.jsx)(fl,{title:t.title}),(0,ev.jsx)(Wr,{config:en$,data:e.trend})]})},{id:"network",title:"网络连接",description:"机器之间连接状态。",icon:(0,ev.jsx)(mZ,{className:"size-4"}),defaultSize:{w:6,h:4},defaultConfig:enB("网络连接","网络遥测"),render:t=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden",children:[(0,ev.jsx)(fl,{title:t.title}),(0,ev.jsx)(Wn,{links:e.networkLinks})]})},{id:"events",title:"事件流",description:"最近遥测事件。",icon:(0,ev.jsx)(Hl,{className:"size-4"}),defaultSize:{w:6,h:4},defaultConfig:enB("事件流","事件流"),render:t=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden",children:[(0,ev.jsx)(fl,{title:t.title}),(0,ev.jsx)(H8,{events:e.events})]})},{id:"services",title:"服务健康",description:"服务 30 分钟粒度健康条。",icon:(0,ev.jsx)(B4,{className:"size-4"}),defaultSize:{w:12,h:3},defaultConfig:enB("服务健康","服务遥测"),render:t=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",children:[(0,ev.jsx)(fl,{title:t.title}),(0,ev.jsx)(Wi,{services:e.serviceHealth})]})}]}let enq=enU(),enK=[{id:"metric-online",kind:"metric-online",x:0,y:0,w:3,h:2},{id:"metric-health",kind:"metric-health",x:3,y:0,w:3,h:2},{id:"metric-latency",kind:"metric-latency",x:6,y:0,w:3,h:2},{id:"metric-events",kind:"metric-events",x:9,y:0,w:3,h:2},{id:"machines",kind:"machines",x:0,y:2,w:7,h:5},{id:"trend",kind:"trend",x:7,y:2,w:5,h:5},{id:"network",kind:"network",x:0,y:7,w:6,h:4},{id:"events",kind:"events",x:6,y:7,w:6,h:4},{id:"services",kind:"services",x:0,y:11,w:12,h:3}],enG={totals:{machines:4,online:2,runtime:3,tokens:7},machines:[{id:"studio",name:"Studio-PC",role:"本机",group:"Core",os:"Windows 11",runtime:"0.16.4",state:"online",tags:["admin","shell","files","scheduler"],agent:"6/8",cpu:42,memory:68,version:"Agent runtime 0.16.4",admin:"Allay"},{id:"runner",name:"Linux-runner-02",role:"GPU worker",group:"Compute",os:"Ubuntu 24.04",runtime:"0.16.3",state:"online",tags:["gpu","agent","files"],agent:"4/6",cpu:76,memory:81,version:"Agent runtime 0.16.3",admin:"Ops"},{id:"mac",name:"MacBook-build",role:"构建机",group:"Build",os:"macOS 15.4",runtime:"0.15.9",state:"sleeping",tags:["build","readonly"],agent:"0/3",cpu:8,memory:24,version:"Agent runtime 0.15.9",admin:"Allay"},{id:"observer",name:"Observer-01",role:"只读观测节点",group:"Edge",os:"Debian 13",runtime:"0.16.2",state:"warning",tags:["readonly","audit"],agent:"1/2",cpu:18,memory:36,version:"Agent runtime 0.16.2",admin:"Security"}],topology:{nodes:[{id:"studio",label:"Studio-PC",meta:"本机",x:50,y:18},{id:"runner",label:"Linux-runner-02",meta:"GPU worker",x:22,y:60},{id:"mac",label:"MacBook-build",meta:"构建机",x:76,y:58,state:"warning"},{id:"observer",label:"Observer-01",meta:"只读观测",x:50,y:82,state:"warning"}],links:[{id:"sr",from:"studio",to:"runner",kind:"p2p",label:"P2P",meta:"38ms / 0.3%"},{id:"sm",from:"studio",to:"mac",kind:"direct",label:"Direct",meta:"12ms / 0%"},{id:"ro",from:"runner",to:"observer",kind:"relay",label:"Relay",meta:"84ms / 1.1%"},{id:"mo",from:"mac",to:"observer",kind:"down",label:"Down",meta:"lost"}]},pathTotals:{direct:1,p2p:1,relay:1,broken:1},latency:Q4,candidates:[["Studio-PC","Linux-runner-02","P2P","symmetric NAT","38ms","0.3%"],["Studio-PC","MacBook-build","Direct","open port 4178","12ms","0.0%"],["Linux-runner-02","Observer-01","Relay","udp blocked","84ms","1.1%"],["MacBook-build","Observer-01","Interrupted","sleep","-","-"]]};function enY(e=enG){return[{id:"total",title:"机器",description:"工作组机器总数。",icon:(0,ev.jsx)(eA,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("机器","机器组"),render:t=>enF(t.title,String(e.totals.machines),42,fe)},{id:"online",title:"在线",description:"当前在线机器。",icon:(0,ev.jsx)(ez,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("在线","机器心跳"),render:t=>enF(t.title,String(e.totals.online),42,ft)},{id:"runtime",title:"Runtime",description:"可用 runtime 数量。",icon:(0,ev.jsx)(B4,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("Runtime","Agent runtime"),render:t=>enF(t.title,String(e.totals.runtime),42,fn)},{id:"tokens",title:"Token",description:"已注册 token 数。",icon:(0,ev.jsx)(en_,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("Token","机器注册"),render:t=>enF(t.title,String(e.totals.tokens),42,fr)},{id:"machines",title:"机器组",description:"机器角色、版本和标签。",icon:(0,ev.jsx)(eA,{className:"size-4"}),defaultSize:{w:12,h:4},defaultConfig:enB("机器组","机器组"),render:t=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",children:[(0,ev.jsx)(fl,{title:t.title}),(0,ev.jsx)(Hf,{machines:e.machines})]})},{id:"topology",title:"拓扑图",description:"工作组连接拓扑。",icon:(0,ev.jsx)(enI,{className:"size-4"}),defaultSize:{w:12,h:6},defaultConfig:enB("拓扑图","网络拓扑"),render:()=>(0,ev.jsx)("section",{className:"size-full rounded-xl border bg-card p-3",children:(0,ev.jsx)(HJ,{nodes:e.topology.nodes,links:e.topology.links})})},{id:"direct",title:"直连",description:"直连路径数量。",icon:(0,ev.jsx)(mZ,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("直连","网络拓扑"),render:t=>enF(t.title,String(e.pathTotals.direct),42,fe)},{id:"p2p",title:"P2P",description:"P2P 路径数量。",icon:(0,ev.jsx)(B5,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("P2P","网络拓扑"),render:t=>enF(t.title,String(e.pathTotals.p2p),42,ft)},{id:"relay",title:"Relay",description:"Relay 路径数量。",icon:(0,ev.jsx)(enI,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("Relay","网络拓扑"),render:t=>enF(t.title,String(e.pathTotals.relay),42,fn)},{id:"broken",title:"中断",description:"中断路径数量。",icon:(0,ev.jsx)(en_,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("中断","网络拓扑"),render:t=>enF(t.title,String(e.pathTotals.broken),42,fr)},{id:"trend",title:"延迟",description:"不同路径延迟趋势。",icon:(0,ev.jsx)(enP,{className:"size-4"}),defaultSize:{w:6,h:4},defaultConfig:enB("延迟","网络遥测"),render:t=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",children:[(0,ev.jsx)(fl,{title:t.title}),(0,ev.jsx)(HU,{config:Q6,data:e.latency})]})},{id:"paths",title:"候选路径",description:"可用连接路径候选。",icon:(0,ev.jsx)(enI,{className:"size-4"}),defaultSize:{w:6,h:4},defaultConfig:enB("候选路径","网络候选路径"),render:t=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",children:[(0,ev.jsx)(fl,{title:t.title}),(0,ev.jsx)(Hq,{candidates:e.candidates})]})}]}let enX=enY(),enZ=[{id:"total",kind:"total",x:0,y:0,w:3,h:2},{id:"online",kind:"online",x:3,y:0,w:3,h:2},{id:"runtime",kind:"runtime",x:6,y:0,w:3,h:2},{id:"tokens",kind:"tokens",x:9,y:0,w:3,h:2},{id:"machines",kind:"machines",x:0,y:2,w:12,h:4},{id:"topology",kind:"topology",x:0,y:6,w:12,h:6},{id:"direct",kind:"direct",x:0,y:12,w:3,h:2},{id:"p2p",kind:"p2p",x:3,y:12,w:3,h:2},{id:"relay",kind:"relay",x:6,y:12,w:3,h:2},{id:"broken",kind:"broken",x:9,y:12,w:3,h:2},{id:"trend",kind:"trend",x:0,y:14,w:6,h:4},{id:"paths",kind:"paths",x:6,y:14,w:6,h:4}],enJ=[{id:"events",title:"日志与审计",description:"审计事件时间线。",icon:(0,ev.jsx)(enA,{className:"size-4"}),defaultSize:{w:8,h:7},defaultConfig:enB("日志与审计","审计事件"),render:e=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden",children:[(0,ev.jsx)(fl,{title:e.title}),(0,ev.jsx)(wq,{events:Q3})]})},{id:"filters",title:"筛选",description:"审计记录筛选维度。",icon:(0,ev.jsx)(enz,{className:"size-4"}),defaultSize:{w:4,h:3},defaultConfig:enB("筛选","审计筛选"),render:e=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",children:[(0,ev.jsx)(fl,{title:e.title}),(0,ev.jsx)(wU,{rows:[["机器","4"],["用户","4"],["Agent","6"],["时间","24h"]]})]})},{id:"risk",title:"拒绝事件",description:"权限拒绝和危险操作数量。",icon:(0,ev.jsx)(en_,{className:"size-4"}),defaultSize:{w:4,h:4},defaultConfig:enB("拒绝事件","审计事件"),render:e=>enF(e.title,"05",42,"/themes/jelly/bg5.png")},{id:"trend",title:"事件趋势",description:"审计事件趋势图。",icon:(0,ev.jsx)(enP,{className:"size-4"}),defaultSize:{w:12,h:4},defaultConfig:enB("事件趋势","审计事件"),render:e=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",children:[(0,ev.jsx)(fl,{title:e.title}),(0,ev.jsx)(BY,{config:Q6,data:Q4})]})}],enQ=[{id:"events",kind:"events",x:0,y:0,w:8,h:7},{id:"filters",kind:"filters",x:8,y:0,w:4,h:3},{id:"risk",kind:"risk",x:8,y:3,w:4,h:4},{id:"trend",kind:"trend",x:0,y:7,w:12,h:4}],en0={totals:{machines:0,online:0,runtime:0,tokens:0},machines:[],topology:{nodes:[],links:[]},pathTotals:{direct:0,p2p:0,relay:0,broken:0},latency:[],candidates:[]},en1={metrics:{online:0,health:0,latency:"local",events:0},machines:[],trend:[],networkLinks:[],events:[],serviceHealth:[]};function en2(e,t){let[n,r]=ey.useState(t);return ey.useEffect(()=>{let n=!0,i=!1;async function a(){if(!i){i=!0;try{let t=await fetch(tJ(e),{cache:"no-store"});if(!t.ok)return;let i=await t.json();n&&r(i)}catch{n&&r(t)}finally{i=!1}}}a();let o=window.setInterval(a,2e3);return()=>{n=!1,window.clearInterval(o)}},[t,e]),n}function en5(e){return(0,ev.jsx)(ha,{children:e})}function en4({clipboardItems:e=[],onClipboardItemsChange:t,onOverlayOpenChange:n}){let r=en2("/api/local/machines/fleet",en0),{machines:i,loading:a}=WW(),o=ey.useMemo(()=>enY(r),[r]),l=ey.useMemo(()=>i.filter(e=>!e.isLocal),[i]);return(0,ev.jsxs)("div",{className:"grid gap-6",children:[(0,ev.jsx)(mD,{boardId:"machine-group",definitions:o,initialLayouts:enZ,clipboardItems:e,actionLabel:"机器组页面卡片操作",paletteGroupTitle:"机器组页面卡片",onClipboardItemsChange:t,onOverlayOpenChange:n}),(l.length>0||a)&&(0,ev.jsx)(ert,{machines:l,loading:a})]})}let en3=[{id:"processes",x:0,y:0,w:12,h:8}],en6=ho(en3);function en8(){return en5((0,ev.jsx)(enN,{layouts:en3,children:(0,ev.jsx)(enC,{layout:enS(en6,"processes"),className:"overflow-hidden",children:(0,ev.jsx)(etb,{})})}))}let en7=[{id:"performance",x:0,y:0,w:12,h:8}],en9=ho(en7);function ere(){return en5((0,ev.jsx)(enN,{layouts:en7,children:(0,ev.jsx)(enC,{layout:enS(en9,"performance"),className:"overflow-hidden",children:(0,ev.jsx)(etw,{})})}))}function ert({machines:e,loading:t}){let n={direct:"直连",p2p:"P2P",relay:"中继",none:"无连接",local:"本地"};return t?(0,ev.jsxs)("section",{className:"rounded-xl border bg-card p-5",children:[(0,ev.jsx)("h3",{className:"mb-3 text-base font-semibold tracking-normal",children:"工作组远程机器"}),(0,ev.jsx)("div",{className:"py-6 text-center text-sm text-muted-foreground",children:"正在加载远程机器..."})]}):(0,ev.jsxs)("section",{className:"rounded-xl border bg-card p-5",children:[(0,ev.jsx)("h3",{className:"mb-3 text-base font-semibold tracking-normal",children:"工作组远程机器"}),0===e.length?(0,ev.jsx)("div",{className:"rounded-lg border border-dashed px-3 py-6 text-center text-sm text-muted-foreground",children:"当前工作组没有远程机器在线。"}):(0,ev.jsx)("div",{className:"grid min-h-0 content-start overflow-hidden",children:e.map((e,t)=>(0,ev.jsxs)("div",{className:`grid min-h-14 grid-cols-[minmax(0,1.2fr)_8rem_8rem_8rem] items-center gap-4 px-2 py-1.5${t>0?" border-t":""}`,children:[(0,ev.jsxs)("div",{className:"min-w-0",children:[(0,ev.jsxs)("div",{className:"flex items-center gap-2",children:[(0,ev.jsx)("span",{className:`size-2 rounded-full ${"online"===e.status?"bg-primary":"bg-destructive"}`}),(0,ev.jsx)("span",{className:"truncate text-sm font-medium",children:e.name})]}),(0,ev.jsxs)("div",{className:"mt-1 truncate text-[11px] text-muted-foreground",children:[e.platform," / ",e.arch]})]}),(0,ev.jsxs)("div",{className:"grid gap-0.5",children:[(0,ev.jsx)("span",{className:"text-[11px] text-muted-foreground",children:"状态"}),(0,ev.jsx)("span",{className:"truncate text-sm",children:"online"===e.status?"在线":"离线"})]}),(0,ev.jsxs)("div",{className:"grid gap-0.5",children:[(0,ev.jsx)("span",{className:"text-[11px] text-muted-foreground",children:"连接方式"}),(0,ev.jsx)("span",{className:"truncate text-sm",children:n[e.connectivity]??e.connectivity})]}),(0,ev.jsxs)("div",{className:"grid gap-0.5",children:[(0,ev.jsx)("span",{className:"text-[11px] text-muted-foreground",children:"工作组"}),(0,ev.jsx)("span",{className:"truncate text-sm",children:e.workgroupName??"-"})]})]},e.id))})]})}function ern({clipboardItems:e=[],onClipboardItemsChange:t,onOverlayOpenChange:n}){return(0,ev.jsx)(mD,{boardId:"audit-logs",definitions:enJ,initialLayouts:enQ,clipboardItems:e,actionLabel:"日志审计页面卡片操作",paletteGroupTitle:"日志审计页面卡片",onClipboardItemsChange:t,onOverlayOpenChange:n})}function err(e){return"string"==typeof e||"number"==typeof e?String(e):""}function eri({navItems:e,activeNavId:t,onNavSelect:n}){return(0,ev.jsx)("nav",{className:"fixed inset-x-0 bottom-0 z-50 flex h-14 items-stretch border-t border-border bg-sidebar pb-[env(safe-area-inset-bottom)]",children:e.map(e=>{let r=e.id===t;return(0,ev.jsxs)("button",{type:"button",disabled:e.disabled,"aria-label":err(e.label),"aria-current":r?"page":void 0,className:tK("relative flex flex-1 flex-col items-center justify-center gap-0.5 text-sidebar-foreground/55 transition-colors",r&&"text-sidebar-foreground",e.disabled&&"pointer-events-none opacity-40"),onClick:()=>n(e.id),children:[(0,ev.jsx)("span",{className:"flex size-6 items-center justify-center [&_svg]:size-5",children:e.icon}),(0,ev.jsx)("span",{className:"text-[0.625rem] leading-tight",children:err(e.label)}),e.badge&&(0,ev.jsx)("span",{className:"absolute top-1.5 right-[calc(50%-0.125rem)] ml-2 size-1.5 rounded-full bg-foreground"})]},e.id)})})}let era=ey.default.createContext({drawerRef:{current:null},overlayRef:{current:null},onPress:()=>{},onRelease:()=>{},onDrag:()=>{},onNestedDrag:()=>{},onNestedOpenChange:()=>{},onNestedRelease:()=>{},openProp:void 0,dismissible:!1,isOpen:!1,isDragging:!1,keyboardIsOpen:{current:!1},snapPointsOffset:null,snapPoints:null,handleOnly:!1,modal:!1,shouldFade:!1,activeSnapPoint:null,onOpenChange:()=>{},setActiveSnapPoint:()=>{},closeDrawer:()=>{},direction:"bottom",shouldAnimate:{current:!0},shouldScaleBackground:!1,setBackgroundColorOnScale:!0,noBodyStyles:!1,container:null,autoFocus:!1}),ero=()=>{let e=ey.default.useContext(era);if(!e)throw Error("useDrawerContext must be used within a Drawer.Root");return e};function erl(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function ers(){return erc(/^iPhone/)||erc(/^iPad/)||erc(/^Mac/)&&navigator.maxTouchPoints>1}function erc(e){return"u">typeof window&&null!=window.navigator?e.test(window.navigator.platform):void 0}!function(e){if(!e||"u"<typeof document)return;let t=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",t.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}("[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform,100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform,100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not(\n[data-state=closed]\n){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,var(--initial-transform,100%),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform,100%),0)}}@keyframes slideFromTop{from{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}}@keyframes slideFromLeft{from{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}}@keyframes slideFromRight{from{transform:translate3d(var(--initial-transform,100%),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform,100%),0,0)}}");let erd="u">typeof window?ey.useLayoutEffect:ey.useEffect;function eru(...e){return(...t)=>{for(let n of e)"function"==typeof n&&n(...t)}}let erf="u">typeof document&&window.visualViewport;function erh(e){let t=window.getComputedStyle(e);return/(auto|scroll)/.test(t.overflow+t.overflowX+t.overflowY)}function erp(e){for(erh(e)&&(e=e.parentElement);e&&!erh(e);)e=e.parentElement;return e||document.scrollingElement||document.documentElement}let erm=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]),erg=0;function erv(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}function erx(e){let t=document.scrollingElement||document.documentElement;for(;e&&e!==t;){let t=erp(e);if(t!==document.documentElement&&t!==document.body&&t!==e){let n=t.getBoundingClientRect().top,r=e.getBoundingClientRect().top;e.getBoundingClientRect().bottom>t.getBoundingClientRect().bottom+24&&(t.scrollTop+=r-n)}e=t.parentElement}}function ery(e){return e instanceof HTMLInputElement&&!erm.has(e.type)||e instanceof HTMLTextAreaElement||e instanceof HTMLElement&&e.isContentEditable}function erb(...e){return ey.useCallback(function(...e){return t=>e.forEach(e=>{"function"==typeof e?e(t):null!=e&&(e.current=t)})}(...e),e)}let erw=new WeakMap;function erj(e,t,n=!1){if(!e||!(e instanceof HTMLElement))return;let r={};Object.entries(t).forEach(([t,n])=>{t.startsWith("--")?e.style.setProperty(t,n):(r[t]=e.style[t],e.style[t]=n)}),n||erw.set(e,r)}let erk=e=>{switch(e){case"top":case"bottom":return!0;case"left":case"right":return!1;default:return e}};function erS(e,t){if(!e)return null;let n=window.getComputedStyle(e),r=n.transform||n.webkitTransform||n.mozTransform,i=r.match(/^matrix3d\((.+)\)$/);return i?parseFloat(i[1].split(", ")[erk(t)?13:12]):(i=r.match(/^matrix\((.+)\)$/))?parseFloat(i[1].split(", ")[erk(t)?5:4]):null}function erN(e,t){if(!e)return()=>{};let n=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=n}}let erC=[.32,.72,0,1],erM="vaul-dragging";function erE(e){let t=ey.default.useRef(e);return ey.default.useEffect(()=>{t.current=e}),ey.default.useMemo(()=>(...e)=>null==t.current?void 0:t.current.call(t,...e),[])}function erO({prop:e,defaultProp:t,onChange:n=()=>{}}){let[r,i]=function({defaultProp:e,onChange:t}){let n=ey.default.useState(e),[r]=n,i=ey.default.useRef(r),a=erE(t);return ey.default.useEffect(()=>{i.current!==r&&(a(r),i.current=r)},[r,i,a]),n}({defaultProp:t,onChange:n}),a=void 0!==e,o=a?e:r,l=erE(n);return[o,ey.default.useCallback(t=>{if(a){let n="function"==typeof t?t(e):t;n!==e&&l(n)}else i(t)},[a,e,i,l])]}let erP=()=>()=>{},erz=null,erA=ey.default.forwardRef(function({...e},t){let{overlayRef:n,snapPoints:r,onRelease:i,shouldFade:a,isOpen:o,modal:l,shouldAnimate:s}=ero(),c=erb(t,n),d=r&&r.length>0;if(!l)return null;let u=ey.default.useCallback(e=>i(e),[i]);return ey.default.createElement(pC,{onMouseUp:u,ref:c,"data-vaul-overlay":"","data-vaul-snap-points":o&&d?"true":"false","data-vaul-snap-points-overlay":o&&a?"true":"false","data-vaul-animate":(null==s?void 0:s.current)?"true":"false",...e})});erA.displayName="Drawer.Overlay";let erI=ey.default.forwardRef(function({onPointerDownOutside:e,style:t,onOpenAutoFocus:n,...r},i){let{drawerRef:a,onPress:o,onRelease:l,onDrag:s,keyboardIsOpen:c,snapPointsOffset:d,activeSnapPointIndex:u,modal:f,isOpen:h,direction:p,snapPoints:m,container:g,handleOnly:v,shouldAnimate:x,autoFocus:y}=ero(),[b,w]=ey.default.useState(!1),j=erb(i,a),k=ey.default.useRef(null),S=ey.default.useRef(null),N=ey.default.useRef(!1),C=m&&m.length>0;function M(e){k.current=null,N.current=!1,l(e)}return!function(){let{direction:e,isOpen:t,shouldScaleBackground:n,setBackgroundColorOnScale:r,noBodyStyles:i}=ero(),a=ey.default.useRef(null),o=(0,ey.useMemo)(()=>document.body.style.backgroundColor,[]);function l(){return(window.innerWidth-26)/window.innerWidth}ey.default.useEffect(()=>{if(t&&n){a.current&&clearTimeout(a.current);let t=document.querySelector("[data-vaul-drawer-wrapper]")||document.querySelector("[vaul-drawer-wrapper]");if(!t)return;!function(...e){}(r&&!i?erN(document.body,{background:"black"}):erP,erN(t,{transformOrigin:erk(e)?"top":"left",transitionProperty:"transform, border-radius",transitionDuration:"0.5s",transitionTimingFunction:`cubic-bezier(${erC.join(",")})`}));let n=erN(t,{borderRadius:"8px",overflow:"hidden",...erk(e)?{transform:`scale(${l()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`}:{transform:`scale(${l()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`}});return()=>{n(),a.current=window.setTimeout(()=>{o?document.body.style.background=o:document.body.style.removeProperty("background")},500)}}},[t,n,o])}(),ey.default.useEffect(()=>{C&&window.requestAnimationFrame(()=>{w(!0)})},[]),ey.default.createElement(pP,{"data-vaul-drawer-direction":p,"data-vaul-drawer":"","data-vaul-delayed-snap-points":b?"true":"false","data-vaul-snap-points":h&&C?"true":"false","data-vaul-custom-container":g?"true":"false","data-vaul-animate":(null==x?void 0:x.current)?"true":"false",...r,ref:j,style:d&&d.length>0?{"--snap-point-height":`${d[null!=u?u:0]}px`,...t}:t,onPointerDown:e=>{v||(null==r.onPointerDown||r.onPointerDown.call(r,e),k.current={x:e.pageX,y:e.pageY},o(e))},onOpenAutoFocus:e=>{null==n||n(e),y||e.preventDefault()},onPointerDownOutside:t=>{(null==e||e(t),!f||t.defaultPrevented)?t.preventDefault():c.current&&(c.current=!1)},onFocusOutside:e=>{if(!f)return void e.preventDefault()},onPointerMove:e=>{if(S.current=e,v||(null==r.onPointerMove||r.onPointerMove.call(r,e),!k.current))return;let t=e.pageY-k.current.y,n=e.pageX-k.current.x,i="touch"===e.pointerType?10:2;((e,t,n=0)=>{if(N.current)return!0;let r=Math.abs(e.y),i=Math.abs(e.x),a=i>r,o=["bottom","right"].includes(t)?1:-1;if("left"===t||"right"===t){if(!(e.x*o<0)&&i>=0&&i<=n)return a}else if(!(e.y*o<0)&&r>=0&&r<=n)return!a;return N.current=!0,!0})({x:n,y:t},p,i)?s(e):(Math.abs(n)>i||Math.abs(t)>i)&&(k.current=null)},onPointerUp:e=>{null==r.onPointerUp||r.onPointerUp.call(r,e),k.current=null,N.current=!1,l(e)},onPointerOut:e=>{null==r.onPointerOut||r.onPointerOut.call(r,e),M(S.current)},onContextMenu:e=>{null==r.onContextMenu||r.onContextMenu.call(r,e),S.current&&M(S.current)}})});erI.displayName="Drawer.Content",ey.default.forwardRef(function({preventCycle:e=!1,children:t,...n},r){let{closeDrawer:i,isDragging:a,snapPoints:o,activeSnapPoint:l,setActiveSnapPoint:s,dismissible:c,handleOnly:d,isOpen:u,onPress:f,onDrag:h}=ero(),p=ey.default.useRef(null),m=ey.default.useRef(!1);function g(){p.current&&window.clearTimeout(p.current),m.current=!1}return ey.default.createElement("div",{onClick:function(){m.current?g():window.setTimeout(()=>{!function(){if(a||e||m.current)return g();if(g(),!o||0===o.length){c||i();return}if(l===o[o.length-1]&&c)return i();let t=o.findIndex(e=>e===l);-1===t||s(o[t+1])}()},120)},onPointerCancel:g,onPointerDown:e=>{d&&f(e),p.current=window.setTimeout(()=>{m.current=!0},250)},onPointerMove:e=>{d&&h(e)},ref:r,"data-vaul-drawer-visible":u?"true":"false","data-vaul-handle":"","aria-hidden":"true",...n},ey.default.createElement("span",{"data-vaul-handle-hitarea":"","aria-hidden":"true"},t))}).displayName="Drawer.Handle";let er_=function({open:e,onOpenChange:t,children:n,onDrag:r,onRelease:i,snapPoints:o,shouldScaleBackground:l=!1,setBackgroundColorOnScale:s=!0,closeThreshold:c=.25,scrollLockTimeout:d=100,dismissible:u=!0,handleOnly:f=!1,fadeFromIndex:h=o&&o.length-1,activeSnapPoint:p,setActiveSnapPoint:m,fixed:g,modal:v=!0,onClose:x,nested:y,noBodyStyles:b=!1,direction:w="bottom",defaultOpen:j=!1,disablePreventScroll:k=!0,snapToSequentialPoint:S=!1,preventScrollRestoration:N=!1,repositionInputs:C=!0,onAnimationEnd:M,container:E,autoFocus:O=!1}){var P,z;let[A=!1,I]=erO({defaultProp:j,prop:e,onChange:e=>{null==t||t(e),e||y||ed(),setTimeout(()=>{null==M||M(e)},500),e&&!v&&"u">typeof window&&window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"}),e||(document.body.style.pointerEvents="auto")}}),[_,D]=ey.default.useState(!1),[T,R]=ey.default.useState(!1),[L,$]=ey.default.useState(!1),F=ey.default.useRef(null),B=ey.default.useRef(null),V=ey.default.useRef(null),H=ey.default.useRef(null),W=ey.default.useRef(null),U=ey.default.useRef(!1),q=ey.default.useRef(null),K=ey.default.useRef(0),G=ey.default.useRef(!1),Y=ey.default.useRef(!j),X=ey.default.useRef(0),Z=ey.default.useRef(null),J=ey.default.useRef((null==(P=Z.current)?void 0:P.getBoundingClientRect().height)||0),Q=ey.default.useRef((null==(z=Z.current)?void 0:z.getBoundingClientRect().width)||0),ee=ey.default.useRef(0),et=ey.default.useCallback(e=>{o&&e===eo.length-1&&(B.current=new Date)},[]),{activeSnapPoint:en,activeSnapPointIndex:er,setActiveSnapPoint:ei,onRelease:ea,snapPointsOffset:eo,onDrag:el,shouldFade:es,getPercentageDragged:ec}=function({activeSnapPointProp:e,setActiveSnapPointProp:t,snapPoints:n,drawerRef:r,overlayRef:i,fadeFromIndex:a,onSnapPointChange:o,direction:l="bottom",container:s,snapToSequentialPoint:c}){let[d,u]=erO({prop:e,defaultProp:null==n?void 0:n[0],onChange:t}),[f,h]=ey.default.useState("u">typeof window?{innerWidth:window.innerWidth,innerHeight:window.innerHeight}:void 0);ey.default.useEffect(()=>{function e(){h({innerWidth:window.innerWidth,innerHeight:window.innerHeight})}return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let p=ey.default.useMemo(()=>d===(null==n?void 0:n[n.length-1])||null,[n,d]),m=ey.default.useMemo(()=>{var e;return null!=(e=null==n?void 0:n.findIndex(e=>e===d))?e:null},[n,d]),g=n&&n.length>0&&(a||0===a)&&!Number.isNaN(a)&&n[a]===d||!n,v=ey.default.useMemo(()=>{var e;let t=s?{width:s.getBoundingClientRect().width,height:s.getBoundingClientRect().height}:"u">typeof window?{width:window.innerWidth,height:window.innerHeight}:{width:0,height:0};return null!=(e=null==n?void 0:n.map(e=>{let n="string"==typeof e,r=0;if(n&&(r=parseInt(e,10)),erk(l)){let i=n?r:f?e*t.height:0;return f?"bottom"===l?t.height-i:-t.height+i:i}let i=n?r:f?e*t.width:0;return f?"right"===l?t.width-i:-t.width+i:i}))?e:[]},[n,f,s]),x=ey.default.useMemo(()=>null!==m?null==v?void 0:v[m]:null,[v,m]),y=ey.default.useCallback(e=>{var t;let s=null!=(t=null==v?void 0:v.findIndex(t=>t===e))?t:null;o(s),erj(r.current,{transition:`transform 0.5s cubic-bezier(${erC.join(",")})`,transform:erk(l)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`}),v&&s!==v.length-1&&void 0!==a&&s!==a&&s<a?erj(i.current,{transition:`opacity 0.5s cubic-bezier(${erC.join(",")})`,opacity:"0"}):erj(i.current,{transition:`opacity 0.5s cubic-bezier(${erC.join(",")})`,opacity:"1"}),u(null==n?void 0:n[Math.max(s,0)])},[r.current,n,v,a,i,u]);return ey.default.useEffect(()=>{if(d||e){var t;let r=null!=(t=null==n?void 0:n.findIndex(t=>t===e||t===d))?t:-1;v&&-1!==r&&"number"==typeof v[r]&&y(v[r])}},[d,e,n,v,y]),{isLastSnapPoint:p,activeSnapPoint:d,shouldFade:g,getPercentageDragged:function(e,t){if(!n||"number"!=typeof m||!v||void 0===a)return null;let r=m===a-1;if(m>=a&&t)return 0;if(r&&!t)return 1;if(!g&&!r)return null;let i=r?m+1:m-1,o=e/Math.abs(r?v[i]-v[i-1]:v[i+1]-v[i]);return r?1-o:o},setActiveSnapPoint:u,activeSnapPointIndex:m,onRelease:function({draggedDistance:e,closeDrawer:t,velocity:r,dismissible:o}){if(void 0===a)return;let s="bottom"===l||"right"===l?(null!=x?x:0)-e:(null!=x?x:0)+e,d=m===a-1,u=0===m,f=e>0;if(d&&erj(i.current,{transition:`opacity 0.5s cubic-bezier(${erC.join(",")})`}),!c&&r>2&&!f)return void(o?t():y(v[0]));if(!c&&r>2&&f&&v&&n)return void y(v[n.length-1]);let h=null==v?void 0:v.reduce((e,t)=>"number"!=typeof e||"number"!=typeof t?e:Math.abs(t-s)<Math.abs(e-s)?t:e),g=erk(l)?window.innerHeight:window.innerWidth;if(r>.4&&Math.abs(e)<.4*g){let e=f?1:-1;return e>0&&p&&n?void y(v[n.length-1]):void(u&&e<0&&o&&t(),null===m||y(v[m+e]))}y(h)},onDrag:function({draggedDistance:e}){if(null===x)return;let t="bottom"===l||"right"===l?x-e:x+e;("bottom"===l||"right"===l)&&t<v[v.length-1]||("top"===l||"left"===l)&&t>v[v.length-1]||erj(r.current,{transform:erk(l)?`translate3d(0, ${t}px, 0)`:`translate3d(${t}px, 0, 0)`})},snapPointsOffset:v}}({snapPoints:o,activeSnapPointProp:p,setActiveSnapPointProp:m,drawerRef:Z,fadeFromIndex:h,overlayRef:F,onSnapPointChange:et,direction:w,container:E,snapToSequentialPoint:S});!function(e={}){let{isDisabled:t}=e;erd(()=>{if(!t){var e,n,r;let t,i,o,l,s,c,d;return 1==++erg&&ers()&&(o=0,l=window.pageXOffset,s=window.pageYOffset,c=eru((e=document.documentElement,n="paddingRight",r=`${window.innerWidth-document.documentElement.clientWidth}px`,t=e.style[n],e.style[n]=r,()=>{e.style[n]=t})),window.scrollTo(0,0),d=eru(erv(document,"touchstart",e=>{((i=erp(e.target))!==document.documentElement||i!==document.body)&&(o=e.changedTouches[0].pageY)},{passive:!1,capture:!0}),erv(document,"touchmove",e=>{if(!i||i===document.documentElement||i===document.body)return void e.preventDefault();let t=e.changedTouches[0].pageY,n=i.scrollTop,r=i.scrollHeight-i.clientHeight;0!==r&&((n<=0&&t>o||n>=r&&t<o)&&e.preventDefault(),o=t)},{passive:!1,capture:!0}),erv(document,"touchend",e=>{let t=e.target;ery(t)&&t!==document.activeElement&&(e.preventDefault(),t.style.transform="translateY(-2000px)",t.focus(),requestAnimationFrame(()=>{t.style.transform=""}))},{passive:!1,capture:!0}),erv(document,"focus",e=>{let t=e.target;ery(t)&&(t.style.transform="translateY(-2000px)",requestAnimationFrame(()=>{t.style.transform="",erf&&(erf.height<window.innerHeight?requestAnimationFrame(()=>{erx(t)}):erf.addEventListener("resize",()=>erx(t),{once:!0}))}))},!0),erv(window,"scroll",()=>{window.scrollTo(0,0)})),a=()=>{c(),d(),window.scrollTo(l,s)}),()=>{0==--erg&&(null==a||a())}}},[t])}({isDisabled:!A||T||!v||L||!_||!C||!k});let{restorePositionSetting:ed}=function({isOpen:e,modal:t,nested:n,hasBeenOpened:r,preventScrollRestoration:i,noBodyStyles:a}){let[o,l]=ey.default.useState(()=>"u">typeof window?window.location.href:""),s=ey.default.useRef(0),c=ey.default.useCallback(()=>{if(erl()&&null===erz&&e&&!a){erz={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left,height:document.body.style.height,right:"unset"};let{scrollX:e,innerHeight:t}=window;document.body.style.setProperty("position","fixed","important"),Object.assign(document.body.style,{top:`${-s.current}px`,left:`${-e}px`,right:"0px",height:"auto"}),window.setTimeout(()=>window.requestAnimationFrame(()=>{let e=t-window.innerHeight;e&&s.current>=t&&(document.body.style.top=`${-(s.current+e)}px`)}),300)}},[e]),d=ey.default.useCallback(()=>{if(erl()&&null!==erz&&!a){let e=-parseInt(document.body.style.top,10),t=-parseInt(document.body.style.left,10);Object.assign(document.body.style,erz),window.requestAnimationFrame(()=>{i&&o!==window.location.href?l(window.location.href):window.scrollTo(t,e)}),erz=null}},[o]);return ey.default.useEffect(()=>{function e(){s.current=window.scrollY}return e(),window.addEventListener("scroll",e),()=>{window.removeEventListener("scroll",e)}},[]),ey.default.useEffect(()=>{if(t)return()=>{"u"<typeof document||document.querySelector("[data-vaul-drawer]")||d()}},[t,d]),ey.default.useEffect(()=>{!n&&r&&(e?(window.matchMedia("(display-mode: standalone)").matches||c(),t||window.setTimeout(()=>{d()},500)):d())},[e,r,o,t,n,c,d]),{restorePositionSetting:d}}({isOpen:A,modal:v,nested:null!=y&&y,hasBeenOpened:_,preventScrollRestoration:N,noBodyStyles:b});function eu(){return(window.innerWidth-26)/window.innerWidth}function ef(e,t){var n;let r=e,i=null==(n=window.getSelection())?void 0:n.toString(),a=Z.current?erS(Z.current,w):null,o=new Date;if("SELECT"===r.tagName||r.hasAttribute("data-vaul-no-drag")||r.closest("[data-vaul-no-drag]"))return!1;if("right"===w||"left"===w)return!0;if(B.current&&o.getTime()-B.current.getTime()<500)return!1;if(null!==a&&("bottom"===w?a>0:a<0))return!0;if(i&&i.length>0)return!1;if(W.current&&o.getTime()-W.current.getTime()<d&&0===a||t)return W.current=o,!1;for(;r;){if(r.scrollHeight>r.clientHeight){if(0!==r.scrollTop)return W.current=new Date,!1;if("dialog"===r.getAttribute("role"))break}r=r.parentNode}return!0}function eh(e){T&&Z.current&&(Z.current.classList.remove(erM),U.current=!1,R(!1),H.current=new Date),null==x||x(),e||I(!1),setTimeout(()=>{o&&ei(o[0])},500)}function ep(){if(!Z.current)return;let e=document.querySelector("[data-vaul-drawer-wrapper]"),t=erS(Z.current,w);erj(Z.current,{transform:"translate3d(0, 0, 0)",transition:`transform 0.5s cubic-bezier(${erC.join(",")})`}),erj(F.current,{transition:`opacity 0.5s cubic-bezier(${erC.join(",")})`,opacity:"1"}),l&&t&&t>0&&A&&erj(e,{borderRadius:"8px",overflow:"hidden",...erk(w)?{transform:`scale(${eu()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,transformOrigin:"top"}:{transform:`scale(${eu()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,transformOrigin:"left"},transitionProperty:"transform, border-radius",transitionDuration:"0.5s",transitionTimingFunction:`cubic-bezier(${erC.join(",")})`},!0)}return ey.default.useEffect(()=>{window.requestAnimationFrame(()=>{Y.current=!0})},[]),ey.default.useEffect(()=>{var e;function t(){if(Z.current&&C&&(ery(document.activeElement)||G.current)){var e;let t=(null==(e=window.visualViewport)?void 0:e.height)||0,n=window.innerHeight,r=n-t,i=Z.current.getBoundingClientRect().height||0;ee.current||(ee.current=i);let a=Z.current.getBoundingClientRect().top;if(Math.abs(X.current-r)>60&&(G.current=!G.current),o&&o.length>0&&eo&&er&&(r+=eo[er]||0),X.current=r,i>t||G.current){let e=Z.current.getBoundingClientRect().height,o=e;e>t&&(o=t-(i>.8*n?a:26)),g?Z.current.style.height=`${e-Math.max(r,0)}px`:Z.current.style.height=`${Math.max(o,t-a)}px`}else{let e;e=navigator.userAgent,"u">typeof window&&(/Firefox/.test(e)&&/Mobile/.test(e)||/FxiOS/.test(e))||(Z.current.style.height=`${ee.current}px`)}o&&o.length>0&&!G.current?Z.current.style.bottom="0px":Z.current.style.bottom=`${Math.max(r,0)}px`}}return null==(e=window.visualViewport)||e.addEventListener("resize",t),()=>{var e;return null==(e=window.visualViewport)?void 0:e.removeEventListener("resize",t)}},[er,o,eo]),ey.default.useEffect(()=>(A&&(erj(document.documentElement,{scrollBehavior:"auto"}),B.current=new Date),()=>{!function(e,t){if(!e||!(e instanceof HTMLElement))return;let n=erw.get(e);n&&(e.style[t]=n[t])}(document.documentElement,"scrollBehavior")}),[A]),ey.default.useEffect(()=>{v||window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"})},[v]),ey.default.createElement(px,{defaultOpen:j,onOpenChange:e=>{(u||e)&&(e?D(!0):eh(!0),I(e))},open:A},ey.default.createElement(era.Provider,{value:{activeSnapPoint:en,snapPoints:o,setActiveSnapPoint:ei,drawerRef:Z,overlayRef:F,onOpenChange:t,onPress:function(e){var t,n;!u&&!o||(!Z.current||Z.current.contains(e.target))&&(J.current=(null==(t=Z.current)?void 0:t.getBoundingClientRect().height)||0,Q.current=(null==(n=Z.current)?void 0:n.getBoundingClientRect().width)||0,R(!0),V.current=new Date,ers()&&window.addEventListener("touchend",()=>U.current=!1,{once:!0}),e.target.setPointerCapture(e.pointerId),K.current=erk(w)?e.pageY:e.pageX)},onRelease:function(e){var t,n;if(!T||!Z.current)return;Z.current.classList.remove(erM),U.current=!1,R(!1),H.current=new Date;let r=erS(Z.current,w);if(!e||!ef(e.target,!1)||!r||Number.isNaN(r)||null===V.current)return;let a=H.current.getTime()-V.current.getTime(),l=K.current-(erk(w)?e.pageY:e.pageX),s=Math.abs(l)/a;if(s>.05&&($(!0),setTimeout(()=>{$(!1)},200)),o){ea({draggedDistance:l*("bottom"===w||"right"===w?1:-1),closeDrawer:eh,velocity:s,dismissible:u}),null==i||i(e,!0);return}if("bottom"===w||"right"===w?l>0:l<0){ep(),null==i||i(e,!0);return}if(s>.4){eh(),null==i||i(e,!1);return}let d=Math.min(null!=(t=Z.current.getBoundingClientRect().height)?t:0,window.innerHeight),f=Math.min(null!=(n=Z.current.getBoundingClientRect().width)?n:0,window.innerWidth);if(Math.abs(r)>=("left"===w||"right"===w?f:d)*c){eh(),null==i||i(e,!1);return}null==i||i(e,!0),ep()},onDrag:function(e){if(Z.current&&T){let t="bottom"===w||"right"===w?1:-1,n=(K.current-(erk(w)?e.pageY:e.pageX))*t,i=n>0,a=o&&!u&&!i;if(a&&0===er)return;let s=Math.abs(n),c=document.querySelector("[data-vaul-drawer-wrapper]"),d=s/("bottom"===w||"top"===w?J.current:Q.current),f=ec(s,i);if(null!==f&&(d=f),a&&d>=1||!U.current&&!ef(e.target,i))return;if(Z.current.classList.add(erM),U.current=!0,erj(Z.current,{transition:"none"}),erj(F.current,{transition:"none"}),o&&el({draggedDistance:n}),i&&!o){let e=Math.min(-(8*(Math.log(n+1)-2)*1),0)*t;erj(Z.current,{transform:erk(w)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`});return}let p=1-d;if((es||h&&er===h-1)&&(null==r||r(e,d),erj(F.current,{opacity:`${p}`,transition:"none"},!0)),c&&F.current&&l){let e=Math.min(eu()+d*(1-eu()),1),t=8-8*d,n=Math.max(0,14-14*d);erj(c,{borderRadius:`${t}px`,transform:erk(w)?`scale(${e}) translate3d(0, ${n}px, 0)`:`scale(${e}) translate3d(${n}px, 0, 0)`,transition:"none"},!0)}if(!o){let e=s*t;erj(Z.current,{transform:erk(w)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`})}}},dismissible:u,shouldAnimate:Y,handleOnly:f,isOpen:A,isDragging:T,shouldFade:es,closeDrawer:eh,onNestedDrag:function(e,t){if(t<0)return;let n=(window.innerWidth-16)/window.innerWidth,r=n+t*(1-n),i=-16+16*t;erj(Z.current,{transform:erk(w)?`scale(${r}) translate3d(0, ${i}px, 0)`:`scale(${r}) translate3d(${i}px, 0, 0)`,transition:"none"})},onNestedOpenChange:function(e){let t=e?(window.innerWidth-16)/window.innerWidth:1,n=e?-16:0;q.current&&window.clearTimeout(q.current),erj(Z.current,{transition:`transform 0.5s cubic-bezier(${erC.join(",")})`,transform:erk(w)?`scale(${t}) translate3d(0, ${n}px, 0)`:`scale(${t}) translate3d(${n}px, 0, 0)`}),!e&&Z.current&&(q.current=setTimeout(()=>{let e=erS(Z.current,w);erj(Z.current,{transition:"none",transform:erk(w)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`})},500))},onNestedRelease:function(e,t){let n=erk(w)?window.innerHeight:window.innerWidth,r=t?(n-16)/n:1,i=t?-16:0;t&&erj(Z.current,{transition:`transform 0.5s cubic-bezier(${erC.join(",")})`,transform:erk(w)?`scale(${r}) translate3d(0, ${i}px, 0)`:`scale(${r}) translate3d(${i}px, 0, 0)`})},keyboardIsOpen:G,modal:v,snapPointsOffset:eo,activeSnapPointIndex:er,direction:w,shouldScaleBackground:l,setBackgroundColorOnScale:s,noBodyStyles:b,container:E,autoFocus:O}},n))},erD=function(e){let t=ero(),{container:n=t.container,...r}=e;return ey.default.createElement(pS,{container:n,...r})};function erT({className:e,...t}){return(0,ev.jsx)(erA,{"data-slot":"drawer-overlay",className:tK("vtl-overlay fixed inset-0 z-50 animate-in fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0",e),...t})}function erR({className:e,children:t,...n}){return(0,ev.jsxs)(erD,{"data-slot":"drawer-portal",children:[(0,ev.jsx)(erT,{}),(0,ev.jsxs)(erI,{"data-slot":"drawer-content",className:tK("vtl-surface-modal group/drawer-content fixed z-50 flex h-auto flex-col border outline-none","data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-t-0","data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-b-0","data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-r-0 data-[vaul-drawer-direction=right]:sm:max-w-sm","data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-l-0 data-[vaul-drawer-direction=left]:sm:max-w-sm",e),...n,children:[(0,ev.jsx)("div",{className:"mx-auto mt-3 hidden h-1.5 w-16 shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block"}),t]})]})}function erL({className:e,...t}){return(0,ev.jsx)(pD,{"data-slot":"drawer-title",className:tK("text-base leading-none font-semibold text-foreground",e),...t})}function er$(e){return"string"==typeof e||"number"==typeof e?String(e):""}function erF({open:e,onOpenChange:t,content:n,expandedItemIds:r,onToggleItem:i,selectedItemId:a,onSelectItem:o,searchValue:l,onSearchChange:s,footer:c}){let d=l.trim().toLowerCase(),u=ey.useMemo(()=>d&&n?n.sections.map(e=>{let t=e.items.map(e=>(function e(t,n){if([er$(t.label),...(t.children??[]).map(e=>er$(e.label))].join(" ").toLowerCase().includes(n))return t;let r=t.children?.map(t=>e(t,n)).filter(e=>!!e);if(r?.length)return{...t,children:r}})(e,d)).filter(e=>!!e);return{...e,items:t}}).filter(e=>e.items.length>0):n?.sections??[],[n,d]);return(0,ev.jsx)(er_,{open:e,onOpenChange:t,direction:"left",children:(0,ev.jsxs)(erR,{className:"w-[85vw] max-w-xs",children:[(0,ev.jsx)(erL,{className:"sr-only",children:n?.title??"导航"}),(0,ev.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,ev.jsxs)("div",{className:"shrink-0 border-b px-4 pt-4 pb-3",children:[(0,ev.jsx)("div",{className:"text-base font-semibold",children:n?.title}),n?.description&&(0,ev.jsx)("div",{className:"mt-0.5 text-xs text-muted-foreground",children:n.description})]}),(0,ev.jsx)("div",{className:"shrink-0 px-3 pt-3 pb-1",children:(0,ev.jsxs)("div",{className:"flex h-10 items-center rounded-lg border bg-sidebar px-2.5",children:[(0,ev.jsx)(cS,{className:"mr-2 size-4 text-muted-foreground"}),(0,ev.jsx)("input",{value:l,placeholder:"搜索...",onChange:e=>s(e.target.value),className:"h-8 w-full border-none bg-transparent p-0 text-sm outline-none placeholder:text-muted-foreground/45"})]})}),(0,ev.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-2 py-2",children:u.map(e=>(0,ev.jsx)(erB,{section:e,selectedItemId:a,expandedItemIds:r,onToggleItem:i,onSelectItem:o},e.id))}),c&&(0,ev.jsx)("div",{className:"shrink-0 border-t px-4 py-3",children:c})]})]})})}function erB({section:e,selectedItemId:t,expandedItemIds:n,onToggleItem:r,onSelectItem:i}){return(0,ev.jsxs)("section",{className:"mb-2",children:[e.title&&(0,ev.jsx)("div",{className:"flex h-8 items-center px-3 text-xs font-normal text-muted-foreground/70",children:e.title}),(0,ev.jsx)("div",{className:"flex flex-col gap-0.5",children:e.items.map(e=>(0,ev.jsx)(erV,{item:e,selectedItemId:t,expandedItemIds:n,onToggleItem:r,onSelectItem:i},e.id))})]})}function erV({item:e,selectedItemId:t,expandedItemIds:n,onToggleItem:r,onSelectItem:i,depth:a=0}){let o=!!e.children?.length,l=n.includes(e.id),s=t===e.id;return(0,ev.jsxs)("div",{children:[(0,ev.jsxs)(tY,{type:"button",variant:"ghost",disabled:e.disabled,"aria-expanded":o?l:void 0,"aria-pressed":o?void 0:s,onClick:()=>{o?r(e.id):i(e)},className:tK("h-11 w-full justify-start gap-3 rounded-lg px-3 py-2 text-left font-normal text-foreground/72 hover:bg-muted hover:text-foreground",s&&"bg-muted text-foreground",a>0&&"h-10 pl-11 text-foreground/62"),children:[e.icon&&(0,ev.jsx)("span",{className:"flex size-5 shrink-0 items-center justify-center [&_svg]:size-4",children:e.icon}),(0,ev.jsx)("span",{className:"min-w-0 flex-1 truncate",children:e.label}),e.badge&&(0,ev.jsx)(cC,{variant:"outline",className:"h-5 shrink-0 px-1.5 text-[0.6875rem] text-muted-foreground",children:e.badge}),o&&(0,ev.jsx)(cb,{className:tK("size-3.5 shrink-0 text-muted-foreground/50 transition-transform duration-300",l&&"rotate-180")})]}),o&&(0,ev.jsx)(cG,{open:l,children:(0,ev.jsx)(cZ,{children:(0,ev.jsx)("div",{className:"mt-0.5 flex flex-col gap-0.5",children:e.children?.map(e=>(0,ev.jsx)(erV,{item:e,selectedItemId:t,expandedItemIds:n,onToggleItem:r,onSelectItem:i,depth:a+1},e.id))})})})]})}function erH({navItems:e,contents:t,defaultActiveNavId:n,defaultSelectedItemId:r,defaultExpandedItemIds:i=[],onItemSelect:a,footer:o}){let l=e.find(e=>!e.disabled)??e[0],[s,c]=ey.useState(n??l?.id??""),[d,u]=ey.useState(!1),[f,h]=ey.useState(i),[p,m]=ey.useState(r),[g,v]=ey.useState(""),x=t.find(e=>e.id===s)??t[0];return(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(eri,{navItems:e,activeNavId:s,onNavSelect:function(e){e===s?u(e=>!e):(c(e),v(""),u(!0))}}),(0,ev.jsx)(erF,{open:d,onOpenChange:u,content:x,expandedItemIds:f,onToggleItem:function(e){h(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},selectedItemId:p,onSelectItem:function(e){e.disabled||(m(e.id),u(!1),a?.({navId:s,itemId:e.id,item:e}))},searchValue:g,onSearchChange:v,footer:o})]})}let erW=eS("folder-tree",[["path",{d:"M20 10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2.5a1 1 0 0 1-.8-.4l-.9-1.2A1 1 0 0 0 15 3h-2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z",key:"hod4my"}],["path",{d:"M20 21a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1h-2.9a1 1 0 0 1-.88-.55l-.42-.85a1 1 0 0 0-.92-.6H13a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z",key:"w4yl2u"}],["path",{d:"M3 5a2 2 0 0 0 2 2h3",key:"f2jnh7"}],["path",{d:"M3 3v13a2 2 0 0 0 2 2h3",key:"k8epm1"}]]),erU=eS("message-square-text",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}],["path",{d:"M7 11h10",key:"1twpyw"}],["path",{d:"M7 15h6",key:"d9of3u"}],["path",{d:"M7 7h8",key:"af5zfr"}]]),erq=eS("scroll-text",[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]]),erK=eS("square-terminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]),erG=[{id:"dashboard",label:fh.dashboard,icon:(0,ev.jsx)(enz,{})},{id:"canvas",label:fh.canvas,icon:(0,ev.jsx)(WJ,{}),badge:"4"},{id:"machines",label:fh.machines,icon:(0,ev.jsx)(eA,{})},{id:"schedules",label:fh.schedules,icon:(0,ev.jsx)(Hs,{})},{id:"settings",label:fh.settings,icon:(0,ev.jsx)(mS,{})}],erY=[{id:"dashboard",title:fh.dashboard,description:ff.subtitle,sections:[{id:"main",items:[{id:"overview",label:fh.overview,icon:(0,ev.jsx)(xI,{})},{id:"runs",label:fh.runs,icon:(0,ev.jsx)(Wc,{}),badge:"12"},{id:"telemetry",label:fh.telemetry,icon:(0,ev.jsx)(WZ,{})}]}]},{id:"canvas",title:fh.canvas,description:"节点画布、Agent 对话和运行工作区。",sections:[{id:"canvases",title:fh.canvas,items:[{id:"open-recent-canvas",label:fh.canvasRecent,icon:(0,ev.jsx)(WJ,{})},{id:"new-canvas",label:fh.canvasNew,icon:(0,ev.jsx)(sQ,{})},{id:"all-canvases",label:fh.canvasAll,icon:(0,ev.jsx)(B1,{})}]},{id:"conversations",title:"Agent 对话",items:[{id:"open-recent-conversation",label:fh.conversationRecent,icon:(0,ev.jsx)(erU,{})},{id:"new-agent-conversation",label:fh.conversationNew,icon:(0,ev.jsx)(mY,{})},{id:"all-conversations",label:fh.conversationAll,icon:(0,ev.jsx)(Wc,{})}]}]},{id:"machines",title:fh.machines,description:"机器、网络、权限和审计。",sections:[{id:"machines",items:[{id:"machine-group",label:fh.fleet,icon:(0,ev.jsx)(B4,{})},{id:"process-management",label:"进程管理",icon:(0,ev.jsx)(erK,{})},{id:"machine-performance",label:"性能",icon:(0,ev.jsx)(WZ,{})},{id:"machine-firewall",label:"防火墙",icon:(0,ev.jsx)(Ku,{})},{id:"audit-logs",label:"日志与审计",icon:(0,ev.jsx)(erq,{})},{id:"machine-files",label:"文件管理",icon:(0,ev.jsx)(erW,{})}]}]},{id:"schedules",title:fh.schedules,description:"自动化、维护窗口和提醒。",sections:[{id:"plans",items:[{id:"calendar",label:fh.calendar,icon:(0,ev.jsx)(Hs,{})},{id:"alerts",label:"提醒",icon:(0,ev.jsx)(Hl,{})}]}]},{id:"settings",title:fh.settings,description:"系统、工作组和用量配置。",sections:[{id:"settings",items:[{id:"preferences",label:"偏好设置",icon:(0,ev.jsx)(mS,{})},{id:"card-management",label:"卡片管理",icon:(0,ev.jsx)(enz,{})},{id:"billing",label:fh.billing,icon:(0,ev.jsx)(B1,{})}]},{id:"hub",title:"Hub",items:[{id:"account",label:"Hub 账户",icon:(0,ev.jsx)(eE,{})}]}]}],erX=eS("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]),erZ=eS("unplug",[["path",{d:"m19 5 3-3",key:"yk6iyv"}],["path",{d:"m2 22 3-3",key:"19mgm9"}],["path",{d:"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z",key:"goz73y"}],["path",{d:"M7.5 13.5 10 11",key:"7xgeeb"}],["path",{d:"M10.5 16.5 13 14",key:"10btkg"}],["path",{d:"m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z",key:"1snsnr"}]]),erJ=eS("mail",[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]]),erQ=eS("calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]),er0=eS("wifi",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]]),er1=eS("wifi-off",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);function er2({className:e,size:t="default",...n}){return(0,ev.jsx)("div",{"data-slot":"card","data-size":t,className:tK("vtl-surface-card group/card flex flex-col gap-4 overflow-hidden rounded-[var(--surface-card-radius)] py-4 text-sm has-data-[slot=card-footer]:pb-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0",e),...n})}function er5({className:e,...t}){return(0,ev.jsx)("div",{"data-slot":"card-header",className:tK("group/card-header grid auto-rows-min items-start gap-1 rounded-t-[var(--surface-card-radius)] px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]",e),...t})}function er4({className:e,...t}){return(0,ev.jsx)("div",{"data-slot":"card-title",className:tK("text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",e),...t})}function er3({className:e,...t}){return(0,ev.jsx)("div",{"data-slot":"card-description",className:tK("text-muted-foreground text-sm",e),...t})}function er6({className:e,...t}){return(0,ev.jsx)("div",{"data-slot":"card-content",className:tK("px-4 group-data-[size=sm]/card:px-3",e),...t})}function er8(){let{user:e,machine:t,logout:n,unbind:r,refreshUser:i}=nd(),[a,o]=ey.useState(!1),[l,s]=ey.useState(!1),[c,d]=ey.useState(t);async function u(){o(!0);try{await nr("online");let e=t6();d(e),await i()}catch{}finally{o(!1)}}async function f(){s(!0);try{await r()}catch{s(!1)}}async function h(){await n()}return(ey.useEffect(()=>{d(t)},[t]),e)?(0,ev.jsx)("div",{className:"vtl-app-background min-h-full pb-14 md:pb-0 md:pl-[5.25rem] text-foreground",children:(0,ev.jsxs)("div",{className:"mx-auto w-full max-w-2xl space-y-5 p-6",children:[(0,ev.jsxs)("div",{className:"flex items-center gap-3",children:[(0,ev.jsx)("div",{className:"flex size-10 items-center justify-center rounded-xl bg-primary/10",children:(0,ev.jsx)(eE,{className:"size-5 text-primary"})}),(0,ev.jsxs)("div",{children:[(0,ev.jsx)("h1",{className:"text-lg font-semibold tracking-tight",children:"Vantaloom Hub 账户"}),(0,ev.jsx)("p",{className:"text-sm text-muted-foreground",children:"管理你的 Hub 连接和设备绑定"})]})]}),(0,ev.jsxs)(er2,{children:[(0,ev.jsxs)(er5,{children:[(0,ev.jsxs)(er4,{className:"flex items-center gap-2",children:[(0,ev.jsx)(Gp,{className:"size-4"}),"账户信息"]}),(0,ev.jsx)(er3,{children:"你的 Vantaloom Hub 账户详情"})]}),(0,ev.jsx)(er6,{children:(0,ev.jsxs)("div",{className:"grid gap-4",children:[(0,ev.jsxs)("div",{className:"flex items-center gap-3",children:[(0,ev.jsx)("div",{className:"flex size-12 items-center justify-center rounded-full bg-primary/10",children:(0,ev.jsx)("span",{className:"text-lg font-semibold text-primary",children:e.name.charAt(0).toUpperCase()})}),(0,ev.jsxs)("div",{className:"min-w-0",children:[(0,ev.jsx)("p",{className:"font-medium",children:e.name}),(0,ev.jsxs)("div",{className:"flex items-center gap-1.5 text-sm text-muted-foreground",children:[(0,ev.jsx)(erJ,{className:"size-3.5"}),(0,ev.jsx)("span",{children:e.email})]})]}),(0,ev.jsxs)(cC,{variant:"outline",className:"ml-auto shrink-0",children:[(0,ev.jsx)(Ku,{className:"mr-1 size-3"}),"已验证"]})]}),(0,ev.jsx)(Hc,{}),(0,ev.jsxs)("div",{className:"grid gap-3 text-sm",children:[(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsx)("span",{className:"text-muted-foreground",children:"用户 ID"}),(0,ev.jsxs)("code",{className:"rounded bg-muted px-2 py-0.5 font-mono text-xs",children:[e.id.slice(0,8),"..."]})]}),(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsx)("span",{className:"text-muted-foreground",children:"注册时间"}),(0,ev.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,ev.jsx)(erQ,{className:"size-3.5"}),new Date(e.createdAt).toLocaleDateString("zh-CN")]})]})]})]})})]}),(0,ev.jsxs)(er2,{children:[(0,ev.jsxs)(er5,{children:[(0,ev.jsxs)(er4,{className:"flex items-center gap-2",children:[(0,ev.jsx)(eA,{className:"size-4"}),"设备绑定"]}),(0,ev.jsx)(er3,{children:"此设备已自动注册到你的 Hub 账户"})]}),(0,ev.jsx)(er6,{children:c?(0,ev.jsxs)("div",{className:"grid gap-4",children:[(0,ev.jsxs)("div",{className:"flex items-center justify-between rounded-lg border bg-muted/30 px-4 py-3",children:[(0,ev.jsxs)("div",{className:"flex items-center gap-3",children:[(0,ev.jsx)("div",{className:"flex size-9 items-center justify-center rounded-lg bg-background",children:(0,ev.jsx)(B0,{className:"size-4 text-muted-foreground"})}),(0,ev.jsxs)("div",{children:[(0,ev.jsx)("p",{className:"text-sm font-medium",children:c.name}),(0,ev.jsxs)("p",{className:"text-xs text-muted-foreground",children:[c.platform," / ",c.arch]})]})]}),(0,ev.jsx)("div",{className:"flex items-center gap-2",children:(0,ev.jsxs)(cC,{variant:"online"===c.status?"default":"secondary",className:"gap-1",children:["online"===c.status?(0,ev.jsx)(er0,{className:"size-3"}):(0,ev.jsx)(er1,{className:"size-3"}),"online"===c.status?"在线":"离线"]})})]}),(0,ev.jsxs)("div",{className:"grid gap-3 text-sm",children:[(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsx)("span",{className:"text-muted-foreground",children:"设备 ID"}),(0,ev.jsxs)("code",{className:"rounded bg-muted px-2 py-0.5 font-mono text-xs",children:[c.id.slice(0,8),"..."]})]}),(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsx)("span",{className:"text-muted-foreground",children:"连接方式"}),(0,ev.jsx)("span",{children:c.connectivity||"直连"})]}),(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsx)("span",{className:"text-muted-foreground",children:"本机 IP"}),(0,ev.jsx)("code",{className:"rounded bg-muted px-2 py-0.5 font-mono text-xs",children:c.localIp})]}),(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsx)("span",{className:"text-muted-foreground",children:"最后心跳"}),(0,ev.jsx)("span",{children:new Date(c.lastHeartbeat).toLocaleString("zh-CN")})]}),(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsx)("span",{className:"text-muted-foreground",children:"注册时间"}),(0,ev.jsx)("span",{children:new Date(c.createdAt).toLocaleString("zh-CN")})]})]}),(0,ev.jsxs)(tY,{variant:"outline",size:"sm",className:"w-full",onClick:u,disabled:a,children:[a?(0,ev.jsx)(eO,{className:"animate-spin"}):(0,ev.jsx)(xT,{}),a?"刷新中...":"刷新状态"]})]}):(0,ev.jsxs)("div",{className:"flex flex-col items-center gap-3 py-6 text-center",children:[(0,ev.jsx)(er1,{className:"size-8 text-muted-foreground/40"}),(0,ev.jsxs)("div",{children:[(0,ev.jsx)("p",{className:"text-sm font-medium",children:"设备未绑定"}),(0,ev.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"设备注册异常,请尝试重新登录"})]})]})})]}),(0,ev.jsxs)(er2,{children:[(0,ev.jsxs)(er5,{children:[(0,ev.jsxs)(er4,{className:"flex items-center gap-2 text-destructive",children:[(0,ev.jsx)(qO,{className:"size-4"}),"危险操作"]}),(0,ev.jsx)(er3,{children:"以下操作不可逆,请谨慎执行"})]}),(0,ev.jsx)(er6,{children:(0,ev.jsxs)("div",{className:"grid gap-3",children:[(0,ev.jsxs)("div",{className:"flex items-center justify-between rounded-lg border border-destructive/20 p-4",children:[(0,ev.jsxs)("div",{className:"min-w-0 pr-4",children:[(0,ev.jsx)("p",{className:"text-sm font-medium",children:"解除设备绑定"}),(0,ev.jsx)("p",{className:"mt-0.5 text-xs text-muted-foreground",children:"将此设备从你的 Hub 账户中移除,并退出登录。设备数据不会受到影响。"})]}),(0,ev.jsxs)(gl,{children:[(0,ev.jsx)(gs,{asChild:!0,children:(0,ev.jsxs)(tY,{variant:"destructive",size:"sm",className:"shrink-0",children:[(0,ev.jsx)(erZ,{}),"解除绑定"]})}),(0,ev.jsxs)(gN,{children:[(0,ev.jsxs)(gC,{children:[(0,ev.jsx)(gE,{children:"确认解除设备绑定?"}),(0,ev.jsx)(gO,{children:"此操作将从你的 Hub 账户中移除当前设备,并退出登录。你可以随时重新登录并绑定设备。"})]}),(0,ev.jsxs)(gM,{children:[(0,ev.jsx)(gz,{children:"取消"}),(0,ev.jsx)(gP,{onClick:f,disabled:l,className:"bg-destructive text-white hover:bg-destructive/90",children:l?(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(eO,{className:"animate-spin"}),"处理中..."]}):"确认解除"})]})]})]})]}),(0,ev.jsxs)("div",{className:"flex items-center justify-between rounded-lg border p-4",children:[(0,ev.jsxs)("div",{className:"min-w-0 pr-4",children:[(0,ev.jsx)("p",{className:"text-sm font-medium",children:"退出登录"}),(0,ev.jsx)("p",{className:"mt-0.5 text-xs text-muted-foreground",children:"退出当前 Hub 账户但保留设备在云端的注册。下次登录时无需重新绑定。"})]}),(0,ev.jsxs)(tY,{variant:"outline",size:"sm",className:"shrink-0",onClick:h,children:[(0,ev.jsx)(erX,{}),"退出登录"]})]})]})})]})]})}):null}let er7=eS("files",[["path",{d:"M15 2h-4a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8",key:"14sh0y"}],["path",{d:"M16.706 2.706A2.4 2.4 0 0 0 15 2v5a1 1 0 0 0 1 1h5a2.4 2.4 0 0 0-.706-1.706z",key:"1970lx"}],["path",{d:"M5 7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 1.732-1",key:"l4dndm"}]]);function er9({className:e,divided:t=!0,children:n,...r}){let i=ey.Children.toArray(n).filter(Boolean);return(0,ev.jsx)("div",{"data-slot":"settings-card",className:tK("vtl-surface-card overflow-hidden rounded-[var(--surface-card-radius)] border",e),...r,children:t?i.map((e,t)=>(0,ev.jsxs)(ey.Fragment,{children:[e,t<i.length-1&&(0,ev.jsx)(Hc,{})]},t)):n})}let eie=[{id:"cards",x:0,y:0,w:12,h:9}],eit=ho(eie),ein=[{id:"machine-workspaces",title:"机器页面",cards:[{id:"process-management",title:"进程管理",description:"机器进程、服务和 Agent worker 进程视图。",icon:(0,ev.jsx)(erK,{className:"size-4"}),defaultSize:{w:12,h:8},dataSource:"机器进程"},{id:"machine-performance",title:"性能",description:"CPU、内存、磁盘、网络和 GPU 性能视图。",icon:(0,ev.jsx)(enP,{className:"size-4"}),defaultSize:{w:12,h:8},dataSource:"机器遥测"},{id:"firewall",title:"防火墙",description:"防火墙策略、IP 地址、续期和申请视图。",icon:(0,ev.jsx)(Ku,{className:"size-4"}),defaultSize:{w:12,h:8},dataSource:"防火墙策略"},{id:"file-manager-window",title:"文件管理窗口",description:"可拖拽、缩放和多窗口并存的文件管理组件。",icon:(0,ev.jsx)(er7,{className:"size-4"}),defaultSize:{w:6,h:5},dataSource:"工作区文件"}]}];function eir(e){return{id:e.id,title:e.title,description:e.description,icon:e.icon,defaultSize:e.defaultSize,dataSource:e.defaultConfig.dataSource}}function eii(e){return{id:e.id,title:e.title,description:e.description,icon:e.icon,defaultSize:e.defaultSize,dataSource:e.defaultConfig.dataSource}}function eia(){let e=cy(),t=env(),[n,r]=ey.useState(),i=ey.useCallback(()=>{},[]),a=ey.useCallback(()=>{},[]),o=ey.useMemo(()=>Wg({onSelect:i}),[i]),l=ey.useMemo(()=>Wx({onSelect:a}),[a]),s=ey.useMemo(()=>[{id:"dashboard",title:"运维总览",cards:t.map(eii)},{id:"runs",title:"运行",cards:enH.map(eir)},{id:"telemetry",title:"遥测",cards:enq.map(eir)},{id:"all-canvases",title:"浏览所有画布",cards:o.map(eir)},{id:"all-conversations",title:"浏览所有对话",cards:l.map(eir)},{id:"machine-group",title:"机器组",cards:enX.map(eir)},{id:"audit-logs",title:"日志与审计",cards:enJ.map(eir)},...ein],[l,o,t]);return(0,ev.jsx)(ha,{children:(0,ev.jsx)("div",{className:"vtl-card-management-page",children:(0,ev.jsx)(enN,{layouts:eie,children:(0,ev.jsx)(enC,{layout:enS(eit,"cards"),children:e?n?(0,ev.jsx)(eil,{groupTitle:n.groupTitle,card:n.card,onBack:()=>r(void 0)}):(0,ev.jsx)(eio,{groups:s,onSelect:(e,t)=>r({groupTitle:e,card:t})}):(0,ev.jsx)(er9,{className:"h-full",divided:!1,children:n?(0,ev.jsx)(eil,{groupTitle:n.groupTitle,card:n.card,onBack:()=>r(void 0)}):(0,ev.jsx)(eio,{groups:s,onSelect:(e,t)=>r({groupTitle:e,card:t})})})})})})})}function eio({groups:e,onSelect:t}){return(0,ev.jsxs)("div",{className:"vtl-card-management-list flex h-full min-h-0 flex-col",children:[(0,ev.jsxs)("div",{className:"flex shrink-0 items-center justify-between gap-4 px-5 py-4",children:[(0,ev.jsxs)("div",{className:"min-w-0",children:[(0,ev.jsx)("h2",{className:"text-base font-semibold",children:"卡片管理"}),(0,ev.jsx)("p",{className:"mt-0.5 text-sm text-muted-foreground",children:"当前可用卡片按页面分组。"})]}),(0,ev.jsxs)("div",{className:"flex shrink-0 items-center gap-2 text-sm text-muted-foreground",children:[(0,ev.jsx)(enz,{className:"size-4"}),(0,ev.jsx)("span",{children:e.reduce((e,t)=>e+t.cards.length,0)})]})]}),(0,ev.jsx)(hr,{className:"min-h-0 flex-1",children:(0,ev.jsx)("div",{className:"space-y-6 px-5 pb-5",children:e.map(e=>(0,ev.jsxs)("section",{className:"space-y-2",children:[(0,ev.jsxs)("div",{className:"flex items-center gap-2",children:[(0,ev.jsx)("h3",{className:"text-sm font-medium",children:e.title}),(0,ev.jsx)("span",{className:"text-xs text-muted-foreground",children:e.cards.length})]}),(0,ev.jsx)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2 xl:grid-cols-3",children:e.cards.map(n=>(0,ev.jsxs)("button",{type:"button",className:tK("group/card flex min-h-20 items-start gap-3 rounded-[var(--surface-card-radius)] border bg-card px-3 py-3 text-left transition-colors","vtl-managed-card-item","hover:border-foreground/35 hover:bg-muted/35 focus-visible:border-ring focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-ring/25"),onClick:()=>t(e.title,n),children:[(0,ev.jsx)("span",{className:"mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-[var(--surface-control-radius)] bg-muted text-muted-foreground transition-colors group-hover/card:text-foreground",children:n.icon}),(0,ev.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,ev.jsxs)("span",{className:"flex items-start justify-between gap-3",children:[(0,ev.jsx)("span",{className:"truncate text-sm font-medium",children:n.title}),(0,ev.jsxs)("span",{className:"shrink-0 text-xs tabular-nums text-muted-foreground",children:[n.defaultSize.w,"x",n.defaultSize.h]})]}),(0,ev.jsx)("span",{className:"mt-1 line-clamp-2 block text-xs leading-5 text-muted-foreground",children:n.description})]})]},`${e.id}-${n.id}`))})]},e.id))})})]})}function eil({groupTitle:e,card:t,onBack:n}){return(0,ev.jsxs)("div",{className:"flex h-full min-h-0 flex-col",children:[(0,ev.jsxs)("div",{className:"flex shrink-0 items-center gap-3 px-5 py-4",children:[(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm","aria-label":"返回卡片管理",onClick:n,children:(0,ev.jsx)(Yy,{className:"size-4"})}),(0,ev.jsxs)("div",{className:"min-w-0",children:[(0,ev.jsx)("div",{className:"text-xs text-muted-foreground",children:e}),(0,ev.jsx)("h2",{className:"truncate text-base font-semibold",children:t.title})]})]}),(0,ev.jsx)("div",{className:"grid min-h-0 flex-1 place-items-center px-5 pb-5",children:(0,ev.jsx)("div",{className:"w-full max-w-md rounded-[var(--surface-card-radius)] border bg-card p-5",children:(0,ev.jsxs)("div",{className:"flex items-start gap-3",children:[(0,ev.jsx)("span",{className:"flex size-9 shrink-0 items-center justify-center rounded-[var(--surface-control-radius)] bg-muted text-muted-foreground",children:t.icon}),(0,ev.jsxs)("div",{className:"min-w-0 space-y-3",children:[(0,ev.jsxs)("div",{children:[(0,ev.jsx)("div",{className:"text-sm font-medium",children:"编辑页面预留"}),(0,ev.jsx)("div",{className:"mt-1 text-sm leading-6 text-muted-foreground",children:"后续会在这里接入卡片配置、数据源、默认尺寸和可编辑字段。"})]}),(0,ev.jsxs)("div",{className:"grid grid-cols-2 gap-2 text-xs text-muted-foreground",children:[(0,ev.jsxs)("div",{children:[(0,ev.jsx)("div",{children:"默认尺寸"}),(0,ev.jsxs)("div",{className:"mt-1 font-medium text-foreground",children:[t.defaultSize.w,"x",t.defaultSize.h]})]}),(0,ev.jsxs)("div",{children:[(0,ev.jsx)("div",{children:"数据源"}),(0,ev.jsx)("div",{className:"mt-1 truncate font-medium text-foreground",children:t.dataSource})]})]})]})]})})})]})}let eis=eU("group/item flex w-full flex-wrap items-center rounded-lg border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted",{variants:{variant:{default:"border-transparent",outline:"border-border",muted:"border-transparent bg-muted/50"},size:{default:"gap-2.5 px-3 py-2.5",sm:"gap-2.5 px-3 py-2.5",xs:"gap-2 px-2.5 py-2"}},defaultVariants:{variant:"default",size:"default"}});function eic({className:e,variant:t="default",size:n="default",asChild:r=!1,...i}){return(0,ev.jsx)(r?eF:"div",{"data-slot":"item","data-variant":t,"data-size":n,className:tK(eis({variant:t,size:n,className:e})),...i})}let eid=eU("flex shrink-0 items-center justify-center gap-2 [&_svg]:pointer-events-none",{variants:{variant:{default:"bg-transparent",icon:"[&_svg:not([class*='size-'])]:size-4",marker:"size-8 rounded-md border bg-background ui-text-kbd font-medium text-muted-foreground [&_svg:not([class*='size-'])]:size-4",image:"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover"},align:{auto:"group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start",start:"translate-y-0.5 self-start",center:"self-center"}},defaultVariants:{variant:"default",align:"auto"}});function eiu({className:e,variant:t="default",align:n="auto",...r}){return(0,ev.jsx)("div",{"data-slot":"item-media","data-variant":t,"data-align":n,className:tK(eid({variant:t,align:n,className:e})),...r})}function eif({className:e,align:t,...n}){return(0,ev.jsx)("div",{"data-slot":"item-content","data-align":t,className:tK("flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none","start"===t&&"self-start","center"===t&&"self-center",e),...n})}function eih({className:e,...t}){return(0,ev.jsx)("div",{"data-slot":"item-title",className:tK("line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4",e),...t})}function eip({className:e,...t}){return(0,ev.jsx)("p",{"data-slot":"item-description",className:tK("line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",e),...t})}function eim({className:e,...t}){return(0,ev.jsx)("div",{"data-slot":"item-actions",className:tK("flex items-center gap-2",e),...t})}let eig={back:"Back",search:"Search settings...",welcomeTitle:"Settings",welcomeDescription:"Search or choose a setting to continue.",recommendations:"Recommended",noResults:"No settings found."};function eiv(e){return"string"==typeof e||"number"==typeof e?String(e):""}function eix({sections:e,recommendations:t,sectionId:n,defaultSectionId:r,childId:i,defaultChildId:a,onSelectionChange:o,labels:l,welcomeContent:s,className:c,sidebarClassName:d,contentClassName:u}){let f={...eig,...l},[h,p]=ey.useState(r),[m,g]=ey.useState(a),v=n??h,x=i??m,y=e.find(e=>e.id===v),b=y?.children?.find(e=>e.id===x),w=!!y,j=ey.useMemo(()=>e.flatMap(e=>[{value:e.id,label:e.title,description:e.description,icon:e.icon,searchValue:[eiv(e.title),eiv(e.description),...e.keywords??[]].join(" "),keywords:e.keywords},...(e.children??[]).map(t=>({value:`${e.id}/${t.id}`,label:t.title,description:e.title,icon:t.icon??e.icon,disabled:t.disabled,searchValue:[eiv(t.title),eiv(t.description),eiv(e.title),...t.keywords??[]].join(" "),keywords:[eiv(e.title),...t.keywords??[]]}))]),[e]),k=t??e.flatMap(e=>(e.children??[]).slice(0,2).map(t=>({id:`${e.id}-${t.id}`,title:t.title,description:e.title,icon:t.icon,sectionId:e.id,childId:t.id})));function S(e,t){void 0===n&&p(e),void 0===i&&g(t),o?.({sectionId:e,childId:t})}let N=b?.content??y?.content??s??(0,ev.jsxs)("div",{className:"mx-auto flex min-h-[22rem] w-full max-w-2xl flex-col justify-center gap-5 py-12",children:[(0,ev.jsxs)("div",{className:"space-y-2",children:[(0,ev.jsx)("h3",{className:"text-xl font-semibold tracking-normal",children:f.welcomeTitle}),(0,ev.jsx)("p",{className:"max-w-xl text-sm text-muted-foreground",children:f.welcomeDescription})]}),(0,ev.jsx)(eib,{labels:f,options:j,onSelect:(e,t)=>S(e,t)}),k.length>0&&(0,ev.jsxs)("section",{className:"space-y-2",children:[(0,ev.jsx)("div",{className:"ui-text-kbd font-medium text-muted-foreground",children:f.recommendations}),(0,ev.jsx)("div",{className:"grid gap-2 sm:grid-cols-2",children:k.map(e=>(0,ev.jsx)(eic,{asChild:!0,variant:"outline",size:"xs",className:"min-h-14 flex-nowrap bg-card text-left hover:bg-muted/60",children:(0,ev.jsxs)("button",{type:"button",onClick:()=>S(e.sectionId,e.childId),children:[e.icon&&(0,ev.jsx)(eiu,{variant:"marker",align:"center",children:e.icon}),(0,ev.jsxs)(eif,{className:"min-w-0 gap-0.5",children:[(0,ev.jsx)(eih,{className:"max-w-full truncate",children:e.title}),e.description&&(0,ev.jsx)(eip,{className:"line-clamp-1",children:e.description})]}),(0,ev.jsx)(eim,{className:"ml-auto",children:(0,ev.jsx)(xx,{className:"size-4 shrink-0 text-muted-foreground opacity-0 transition-opacity group-hover/item:opacity-100"})})]})},e.id))})]})]});return(0,ev.jsxs)("div",{"data-slot":"settings-menu-panel",className:tK("vtl-surface-panel grid min-h-[34rem] overflow-hidden rounded-[var(--surface-panel-radius)] border md:grid-cols-[15rem_minmax(0,1fr)]",c),children:[(0,ev.jsx)("aside",{"data-slot":"settings-menu-sidebar",className:tK("min-h-0 border-b bg-muted/20 md:border-r md:border-b-0",d),children:(0,ev.jsx)(hr,{className:"h-full",children:(0,ev.jsx)("div",{className:"space-y-1 p-2",children:w?(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsxs)(tY,{type:"button",variant:"ghost",className:"mb-1 h-auto min-h-9 w-full justify-start px-2.5 py-1.5 text-left",onClick:()=>S(void 0,void 0),children:[(0,ev.jsx)("span",{className:"flex size-5 shrink-0 items-center justify-center [&_svg]:size-4",children:(0,ev.jsx)(Yy,{})}),(0,ev.jsx)("span",{className:"min-w-0 truncate",children:f.back})]}),(y?.children??[]).map(e=>(0,ev.jsx)(eiy,{title:e.title,icon:e.icon,badge:e.badge,active:e.id===x,disabled:e.disabled,onClick:()=>S(y?.id,e.id)},e.id))]}):e.map(e=>(0,ev.jsx)(eiy,{title:e.title,icon:e.icon,badge:e.badge,disabled:e.disabled,onClick:()=>S(e.id,void 0)},e.id))})})}),(0,ev.jsxs)("main",{"data-slot":"settings-menu-content",className:tK("min-w-0 bg-[var(--surface-panel)] p-4 md:p-5",u),children:[y?(0,ev.jsx)("div",{className:"mb-4 flex min-h-8 items-center justify-between gap-4",children:(0,ev.jsxs)("div",{className:"min-w-0",children:[(0,ev.jsx)("h2",{className:"truncate text-lg font-semibold tracking-normal",children:b?.title??y.title}),(b?.description??y.description)&&(0,ev.jsx)("p",{className:"truncate text-sm text-muted-foreground",children:b?.description??y.description})]})}):null,N]})]})}function eiy({title:e,icon:t,badge:n,active:r,disabled:i,onClick:a}){return(0,ev.jsxs)(tY,{type:"button",variant:"ghost",disabled:i,onClick:a,className:tK("h-auto min-h-9 w-full justify-start px-2.5 py-1.5 text-left font-medium",r?"bg-muted text-foreground":"text-muted-foreground hover:bg-muted/70 hover:text-foreground"),children:[t&&(0,ev.jsx)("span",{className:"flex size-5 shrink-0 items-center justify-center [&_svg]:size-4",children:t}),(0,ev.jsx)("span",{className:"min-w-0 flex-1 truncate font-medium",children:e}),n&&(0,ev.jsx)(cC,{variant:"outline",className:"h-5 shrink-0 px-1.5 ui-text-kbd",children:n}),(0,ev.jsx)(xx,{className:"size-3.5 shrink-0 text-muted-foreground/60"})]})}function eib({labels:e,options:t,onSelect:n}){return(0,ev.jsx)(g5,{options:t,placeholder:e.search,emptyText:e.noResults,className:"w-full",contentClassName:"rounded-lg",onValueChange:e=>{let[t,r]=e.split("/");t&&n(t,r)},renderOption:e=>(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)("span",{className:"flex size-5 shrink-0 items-center justify-center text-muted-foreground [&_svg]:size-4",children:e.icon??(0,ev.jsx)(cS,{})}),(0,ev.jsxs)("span",{className:"grid min-w-0 flex-1 gap-0.5",children:[(0,ev.jsx)("span",{className:"truncate",children:e.label}),e.description&&(0,ev.jsx)("span",{className:"truncate text-sm text-muted-foreground",children:e.description})]})]})})}let eiw=eU("vtl-surface-card relative w-full rounded-[var(--surface-card-radius)] border px-4 py-3 text-sm [&>svg]:absolute [&>svg]:top-3.5 [&>svg]:left-4 [&>svg~*]:pl-7",{variants:{variant:{default:"border-border",muted:"border-border bg-muted/40",destructive:"border-destructive/35 bg-destructive/10 text-destructive [&>svg]:text-destructive"}},defaultVariants:{variant:"default"}});function eij({className:e,variant:t,...n}){return(0,ev.jsx)("div",{role:"alert","data-slot":"alert",className:tK(eiw({variant:t}),e),...n})}function eik({className:e,...t}){return(0,ev.jsx)("div",{"data-slot":"alert-title",className:tK("mb-1 leading-none font-medium",e),...t})}function eiS({className:e,...t}){return(0,ev.jsx)("div",{"data-slot":"alert-description",className:tK("text-muted-foreground [&_p]:leading-relaxed",e),...t})}var eiN=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{let n=e$(`Primitive.${t}`),r=ey.forwardRef((e,r)=>{let{asChild:i,...a}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,ev.jsx)(i?n:t,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),eiC=ey.forwardRef((e,t)=>(0,ev.jsx)(eiN.label,{...e,ref:t,onMouseDown:t=>{t.target.closest("button, input, select, textarea")||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));function eiM({className:e,...t}){return(0,ev.jsx)(eiC,{"data-slot":"label",className:tK("flex w-fit items-center gap-2 text-sm font-medium leading-snug peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]/field:opacity-50",e),...t})}eiC.displayName="Label";var eiE=["PageUp","PageDown"],eiO=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],eiP={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},eiz="Slider",[eiA,eiI,ei_]=vp(eiz),[eiD,eiT]=cE(eiz,[ei_]),[eiR,eiL]=eiD(eiz),ei$=ey.forwardRef((e,t)=>{let{name:n,min:r=0,max:i=100,step:a=1,orientation:o="horizontal",disabled:l=!1,minStepsBetweenThumbs:s=0,defaultValue:c=[r],value:d,onValueChange:u=()=>{},onValueCommit:f=()=>{},inverted:h=!1,form:p,...m}=e,g=ey.useRef(new Set),v=ey.useRef(0),x="horizontal"===o,[y=[],b]=cz({prop:d,defaultProp:c,onChange:e=>{let t=[...g.current];t[v.current]?.focus(),u(e)}}),w=ey.useRef(y);function j(e,t,{commit:n}={commit:!1}){let o,l=(String(a).split(".")[1]||"").length,c=fI(Math.round((Math.round((e-r)/a)*a+r)*(o=Math.pow(10,l)))/o,[r,i]);b((e=[])=>{let r=function(e=[],t,n){let r=[...e];return r[n]=t,r.sort((e,t)=>e-t)}(e,c,t);if(!function(e,t){if(t>0)return Math.min(...e.slice(0,-1).map((t,n)=>e[n+1]-t))>=t;return!0}(r,s*a))return e;{v.current=r.indexOf(c);let t=String(r)!==String(e);return t&&n&&f(r),t?r:e}})}return(0,ev.jsx)(eiR,{scope:e.__scopeSlider,name:n,disabled:l,min:r,max:i,valueIndexToChangeRef:v,thumbs:g.current,values:y,orientation:o,form:p,children:(0,ev.jsx)(eiA.Provider,{scope:e.__scopeSlider,children:(0,ev.jsx)(eiA.Slot,{scope:e.__scopeSlider,children:(0,ev.jsx)(x?eiV:eiH,{"aria-disabled":l,"data-disabled":l?"":void 0,...m,ref:t,onPointerDown:cM(m.onPointerDown,()=>{l||(w.current=y)}),min:r,max:i,inverted:h,onSlideStart:l?void 0:function(e){let t=function(e,t){if(1===e.length)return 0;let n=e.map(e=>Math.abs(e-t)),r=Math.min(...n);return n.indexOf(r)}(y,e);j(e,t)},onSlideMove:l?void 0:function(e){j(e,v.current)},onSlideEnd:l?void 0:function(){let e=w.current[v.current];y[v.current]!==e&&f(y)},onHomeKeyDown:()=>!l&&j(r,0,{commit:!0}),onEndKeyDown:()=>!l&&j(i,y.length-1,{commit:!0}),onStepKeyDown:({event:e,direction:t})=>{if(!l){let n=eiE.includes(e.key)||e.shiftKey&&eiO.includes(e.key),r=v.current;j(y[r]+a*(n?10:1)*t,r,{commit:!0})}}})})})})});ei$.displayName=eiz;var[eiF,eiB]=eiD(eiz,{startEdge:"left",endEdge:"right",size:"width",direction:1}),eiV=ey.forwardRef((e,t)=>{let{min:n,max:r,dir:i,inverted:a,onSlideStart:o,onSlideMove:l,onSlideEnd:s,onStepKeyDown:c,...d}=e,[u,f]=ey.useState(null),h=eD(t,e=>f(e)),p=ey.useRef(void 0),m=fA(i),g="ltr"===m,v=g&&!a||!g&&a;function x(e){let t=p.current||u.getBoundingClientRect(),i=ei0([0,t.width],v?[n,r]:[r,n]);return p.current=t,i(e-t.left)}return(0,ev.jsx)(eiF,{scope:e.__scopeSlider,startEdge:v?"left":"right",endEdge:v?"right":"left",direction:v?1:-1,size:"width",children:(0,ev.jsx)(eiW,{dir:m,"data-orientation":"horizontal",...d,ref:h,style:{...d.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:e=>{let t=x(e.clientX);o?.(t)},onSlideMove:e=>{let t=x(e.clientX);l?.(t)},onSlideEnd:()=>{p.current=void 0,s?.()},onStepKeyDown:e=>{let t=eiP[v?"from-left":"from-right"].includes(e.key);c?.({event:e,direction:t?-1:1})}})})}),eiH=ey.forwardRef((e,t)=>{let{min:n,max:r,inverted:i,onSlideStart:a,onSlideMove:o,onSlideEnd:l,onStepKeyDown:s,...c}=e,d=ey.useRef(null),u=eD(t,d),f=ey.useRef(void 0),h=!i;function p(e){let t=f.current||d.current.getBoundingClientRect(),i=ei0([0,t.height],h?[r,n]:[n,r]);return f.current=t,i(e-t.top)}return(0,ev.jsx)(eiF,{scope:e.__scopeSlider,startEdge:h?"bottom":"top",endEdge:h?"top":"bottom",size:"height",direction:h?1:-1,children:(0,ev.jsx)(eiW,{"data-orientation":"vertical",...c,ref:u,style:{...c.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:e=>{let t=p(e.clientY);a?.(t)},onSlideMove:e=>{let t=p(e.clientY);o?.(t)},onSlideEnd:()=>{f.current=void 0,l?.()},onStepKeyDown:e=>{let t=eiP[h?"from-bottom":"from-top"].includes(e.key);s?.({event:e,direction:t?-1:1})}})})}),eiW=ey.forwardRef((e,t)=>{let{__scopeSlider:n,onSlideStart:r,onSlideMove:i,onSlideEnd:a,onHomeKeyDown:o,onEndKeyDown:l,onStepKeyDown:s,...c}=e,d=eiL(eiz,n);return(0,ev.jsx)(cT.span,{...c,ref:t,onKeyDown:cM(e.onKeyDown,e=>{"Home"===e.key?(o(e),e.preventDefault()):"End"===e.key?(l(e),e.preventDefault()):eiE.concat(eiO).includes(e.key)&&(s(e),e.preventDefault())}),onPointerDown:cM(e.onPointerDown,e=>{let t=e.target;t.setPointerCapture(e.pointerId),e.preventDefault(),d.thumbs.has(t)?t.focus():r(e)}),onPointerMove:cM(e.onPointerMove,e=>{e.target.hasPointerCapture(e.pointerId)&&i(e)}),onPointerUp:cM(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&(t.releasePointerCapture(e.pointerId),a(e))})})}),eiU="SliderTrack",eiq=ey.forwardRef((e,t)=>{let{__scopeSlider:n,...r}=e,i=eiL(eiU,n);return(0,ev.jsx)(cT.span,{"data-disabled":i.disabled?"":void 0,"data-orientation":i.orientation,...r,ref:t})});eiq.displayName=eiU;var eiK="SliderRange",eiG=ey.forwardRef((e,t)=>{let{__scopeSlider:n,...r}=e,i=eiL(eiK,n),a=eiB(eiK,n),o=eD(t,ey.useRef(null)),l=i.values.length,s=i.values.map(e=>eiQ(e,i.min,i.max)),c=l>1?Math.min(...s):0,d=100-Math.max(...s);return(0,ev.jsx)(cT.span,{"data-orientation":i.orientation,"data-disabled":i.disabled?"":void 0,...r,ref:o,style:{...e.style,[a.startEdge]:c+"%",[a.endEdge]:d+"%"}})});eiG.displayName=eiK;var eiY="SliderThumb",eiX=ey.forwardRef((e,t)=>{let n=eiI(e.__scopeSlider),[r,i]=ey.useState(null),a=eD(t,e=>i(e)),o=ey.useMemo(()=>r?n().findIndex(e=>e.ref.current===r):-1,[n,r]);return(0,ev.jsx)(eiZ,{...e,ref:a,index:o})}),eiZ=ey.forwardRef((e,t)=>{var n,r,i,a,o;let l,s,{__scopeSlider:c,index:d,name:u,...f}=e,h=eiL(eiY,c),p=eiB(eiY,c),[m,g]=ey.useState(null),v=eD(t,e=>g(e)),x=!m||h.form||!!m.closest("form"),y=ui(m),b=h.values[d],w=void 0===b?0:eiQ(b,h.min,h.max),j=(n=d,(r=h.values.length)>2?`Value ${n+1} of ${r}`:2===r?["Minimum","Maximum"][n]:void 0),k=y?.[p.size],S=k?(i=k,a=w,o=p.direction,s=ei0([0,50],[0,l=i/2]),(l-s(a)*o)*o):0;return ey.useEffect(()=>{if(m)return h.thumbs.add(m),()=>{h.thumbs.delete(m)}},[m,h.thumbs]),(0,ev.jsxs)("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[p.startEdge]:`calc(${w}% + ${S}px)`},children:[(0,ev.jsx)(eiA.ItemSlot,{scope:e.__scopeSlider,children:(0,ev.jsx)(cT.span,{role:"slider","aria-label":e["aria-label"]||j,"aria-valuemin":h.min,"aria-valuenow":b,"aria-valuemax":h.max,"aria-orientation":h.orientation,"data-orientation":h.orientation,"data-disabled":h.disabled?"":void 0,tabIndex:h.disabled?void 0:0,...f,ref:v,style:void 0===b?{display:"none"}:e.style,onFocus:cM(e.onFocus,()=>{h.valueIndexToChangeRef.current=d})})}),x&&(0,ev.jsx)(eiJ,{name:u??(h.name?h.name+(h.values.length>1?"[]":""):void 0),form:h.form,value:b},d)]})});eiX.displayName=eiY;var eiJ=ey.forwardRef(({__scopeSlider:e,value:t,...n},r)=>{let i=ey.useRef(null),a=eD(i,r),o=vx(t);return ey.useEffect(()=>{let e=i.current;if(!e)return;let n=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set;if(o!==t&&n){let r=new Event("input",{bubbles:!0});n.call(e,t),e.dispatchEvent(r)}},[o,t]),(0,ev.jsx)(cT.input,{style:{display:"none"},...n,ref:a,defaultValue:t})});function eiQ(e,t,n){return fI(100/(n-t)*(e-t),[0,100])}function ei0(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function ei1(e){return Array.isArray(e)?e:"number"==typeof e?[e]:void 0}function ei2({className:e,defaultValue:t,value:n,min:r=0,max:i=100,...a}){let o=ey.useMemo(()=>ei1(n)??ei1(t)??[r,i],[t,i,r,n]);return(0,ev.jsxs)(ei$,{"data-slot":"slider",defaultValue:ei1(t),value:ei1(n),min:r,max:i,className:tK("relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-40 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",e),...a,children:[(0,ev.jsx)(eiq,{"data-slot":"slider-track",className:"relative grow overflow-hidden rounded-full bg-muted data-[orientation=horizontal]:h-1 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1",children:(0,ev.jsx)(eiG,{"data-slot":"slider-range",className:"absolute bg-primary data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full"})}),o.map((e,t)=>(0,ev.jsx)(eiX,{"data-slot":"slider-thumb",className:"relative block size-3 shrink-0 rounded-full border border-ring bg-white shadow-sm transition-[color,box-shadow] select-none after:absolute after:-inset-2 hover:ring-3 hover:ring-ring/50 focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-hidden active:ring-3 active:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 dark:bg-primary-foreground"},t))]})}async function ei5(){return ei3("/api/local/agent-config")}async function ei4(e){return ei3("/api/local/agent-config",{method:"PUT",body:JSON.stringify(e)})}async function ei3(e,t){let n=await fetch(tJ(e),{cache:"no-store",...t,headers:{...t?.body?{"Content-Type":"application/json"}:{},...t?.headers}}),r=await n.json().catch(()=>({}));if(!n.ok)throw Error("string"==typeof r?.error?r.error:"agent config api failed");return r}function ei6(e){return{compression:{...e.compression},summary:{...e.summary},approval:{...e.approval}}}function ei8(){let[e,t]=ey.useState(null),[n,r]=ey.useState([]),[i,a]=ey.useState(!0),[o,l]=ey.useState(!1),[s,c]=ey.useState(""),[d,u]=ey.useState(!1);function f(e,n){t(t=>t?{...t,[e]:{...t[e],...n}}:t),u(!0)}async function h(){if(e&&!o){l(!0),c("");try{let n=await ei4({compression:e.compression,summary:e.summary,approval:e.approval});t(ei6(n)),u(!1)}catch(e){c(e instanceof Error?e.message:"Save failed")}finally{l(!1)}}}return(ey.useEffect(()=>{!async function(){try{let[e,n]=await Promise.all([ei5(),ve()]);t(ei6(e)),r(n.models)}catch(e){c(e instanceof Error?e.message:"Failed to load config")}finally{a(!1)}}()},[]),i)?(0,ev.jsx)("div",{className:"rounded-lg border border-dashed px-3 py-6 text-sm text-muted-foreground",children:"正在读取代理配置"}):e?(0,ev.jsxs)("div",{className:"grid gap-6",children:[(0,ev.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,ev.jsx)("div",{className:"min-w-0",children:(0,ev.jsx)("h3",{className:"text-base font-semibold tracking-normal",children:"代理配置"})}),d&&(0,ev.jsxs)(tY,{type:"button",size:"sm",onClick:()=>void h(),disabled:o,children:[(0,ev.jsx)(QA,{className:"size-4"}),o?"保存中":"保存"]})]}),s?(0,ev.jsxs)(eij,{variant:"destructive",children:[(0,ev.jsx)(eP,{}),(0,ev.jsx)(eik,{children:"错误"}),(0,ev.jsx)(eiS,{children:s})]}):null,(0,ev.jsxs)("section",{className:"grid gap-3 rounded-lg border bg-card p-4",children:[(0,ev.jsx)("h4",{className:"text-sm font-semibold",children:"压缩上下文"}),(0,ev.jsx)("p",{className:"text-xs text-muted-foreground",children:"当对话 token 达到模型上下文窗口的指定百分比时自动压缩。"}),(0,ev.jsxs)("div",{className:"grid gap-2",children:[(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsx)(eiM,{className:"text-sm",children:"自动压缩阈值"}),(0,ev.jsxs)("span",{className:"text-sm tabular-nums text-muted-foreground",children:[e.compression.autoThresholdPercent,"%"]})]}),(0,ev.jsx)(ei2,{value:[e.compression.autoThresholdPercent],onValueChange:([e])=>f("compression",{autoThresholdPercent:e}),min:0,max:100,step:5}),(0,ev.jsx)("p",{className:"text-xs text-muted-foreground",children:"0% 表示禁用自动压缩。建议设为 70%-85%。"})]}),(0,ev.jsx)(Hc,{}),(0,ev.jsxs)("div",{className:"grid gap-2",children:[(0,ev.jsx)(eiM,{className:"text-sm",children:"压缩模型"}),(0,ev.jsx)(ei7,{models:n,value:e.compression.modelRef,onValueChange:e=>f("compression",{modelRef:e}),placeholder:"使用主模型"}),(0,ev.jsx)("p",{className:"text-xs text-muted-foreground",children:"用于执行上下文压缩的模型。留空则使用当前对话主模型。"})]})]}),(0,ev.jsxs)("section",{className:"grid gap-3 rounded-lg border bg-card p-4",children:[(0,ev.jsx)("h4",{className:"text-sm font-semibold",children:"对话摘要"}),(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsxs)("div",{className:"min-w-0 space-y-0.5",children:[(0,ev.jsx)(eiM,{className:"text-sm",children:"对话标题摘要"}),(0,ev.jsx)("p",{className:"text-xs text-muted-foreground",children:"每轮对话结束后自动更新对话标题。"})]}),(0,ev.jsx)(g8,{checked:e.summary.enableTitleSummary,onCheckedChange:e=>f("summary",{enableTitleSummary:e})})]}),(0,ev.jsx)(Hc,{}),(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsxs)("div",{className:"min-w-0 space-y-0.5",children:[(0,ev.jsx)(eiM,{className:"text-sm text-muted-foreground",children:"轮次标题摘要"}),(0,ev.jsx)("p",{className:"text-xs text-muted-foreground",children:"为每轮 agent 操作生成摘要标题。(即将推出)"})]}),(0,ev.jsx)(g8,{checked:!1,disabled:!0})]}),(0,ev.jsx)(Hc,{}),(0,ev.jsxs)("div",{className:"grid gap-2",children:[(0,ev.jsx)(eiM,{className:"text-sm",children:"摘要模型"}),(0,ev.jsx)(ei7,{models:n,value:e.summary.modelRef,onValueChange:e=>f("summary",{modelRef:e}),placeholder:"使用主模型"}),(0,ev.jsx)("p",{className:"text-xs text-muted-foreground",children:"用于生成对话摘要的模型。留空则使用当前对话主模型。"})]})]}),(0,ev.jsxs)("section",{className:"grid gap-3 rounded-lg border bg-card p-4",children:[(0,ev.jsx)("h4",{className:"text-sm font-semibold",children:"命令审批"}),(0,ev.jsx)("p",{className:"text-xs text-muted-foreground",children:"在 Auto 权限模式下,使用 AI 模型审批 Agent 发起的命令是否可以自动执行。"}),(0,ev.jsxs)("div",{className:"grid gap-2",children:[(0,ev.jsx)(eiM,{className:"text-sm",children:"审批模型"}),(0,ev.jsx)(ei7,{models:n,value:e.approval.modelRef,onValueChange:e=>f("approval",{modelRef:e}),placeholder:"未配置(全部放行)"}),(0,ev.jsx)("p",{className:"text-xs text-muted-foreground",children:"留空表示 Auto 模式下不进行 AI 审批,所有非危险命令自动放行。"})]}),(0,ev.jsx)(Hc,{}),(0,ev.jsxs)("div",{className:"grid gap-2",children:[(0,ev.jsx)(eiM,{className:"text-sm",children:"审批提示词"}),(0,ev.jsx)(g7,{value:e.approval.prompt,onChange:e=>f("approval",{prompt:e.currentTarget.value}),placeholder:"可选:给审批模型的额外指导,例如允许哪些操作、拒绝哪些操作",rows:4,className:"resize-none text-sm"}),(0,ev.jsx)("p",{className:"text-xs text-muted-foreground",children:"与系统提示词一起发送给审批模型,帮助它判断命令是否安全。"})]})]})]}):(0,ev.jsxs)(eij,{variant:"destructive",children:[(0,ev.jsx)(eP,{}),(0,ev.jsx)(eik,{children:"读取失败"}),(0,ev.jsx)(eiS,{children:s||"无法加载代理配置"})]})}function ei7({models:e,value:t,onValueChange:n,placeholder:r}){return(0,ev.jsxs)(vA,{value:t||"__none__",onValueChange:e=>n("__none__"===e?"":e),children:[(0,ev.jsx)(xd,{className:"w-full",children:(0,ev.jsx)(vT,{placeholder:r})}),(0,ev.jsxs)(xh,{children:[(0,ev.jsx)(xp,{value:"__none__",children:r}),e.map(e=>(0,ev.jsx)(xp,{value:e.id,children:e.label},e.id))]})]})}eiJ.displayName="RadioBubbleInput";let ei9=[{value:"openai-v1",label:"OpenAI v1"},{value:"anthropic",label:"Anthropic"},{value:"openai-responses",label:"OpenAI Responses"}];function eae(e){return{id:e.id,providerName:e.providerName,protocol:e.protocol,endpointUrl:e.endpointUrl,apiKey:"",models:e.models,selectedModelIds:e.selectedModelIds,loadingModels:!1,saving:!1,error:e.lastError??"",savedKeyAvailable:!0,editing:!1}}function eat(){let[e,t]=ey.useState([]),[n,r]=ey.useState(!0),[i,a]=ey.useState(""),o=ey.useCallback(async()=>{a("");try{let e=await ve();t(e.routes.map(eae))}catch(e){a(e instanceof Error?e.message:"模型路由读取失败")}finally{r(!1)}},[]);function l(e,n){t(t=>t.map((t,r)=>r===e?n(t):t))}async function s(t){let n=e[t];if(n&&!n.saving){l(t,e=>({...e,saving:!0,error:""}));try{let e=await vn({id:n.id,providerName:n.providerName,protocol:n.protocol,endpointUrl:n.endpointUrl,apiKey:n.apiKey,models:n.models,selectedModelIds:n.selectedModelIds});l(t,()=>eae(e))}catch(e){l(t,t=>({...t,saving:!1,error:e instanceof Error?e.message:"保存失败"}))}}}async function c(n){let r=e[n];if(r&&!r.saving){if(!r.id)return void t(e=>e.filter((e,t)=>t!==n));l(n,e=>({...e,saving:!0,error:""}));try{await vr(r.id),t(e=>e.filter((e,t)=>t!==n))}catch(e){l(n,t=>({...t,saving:!1,error:e instanceof Error?e.message:"删除失败"}))}}}return ey.useEffect(()=>{o()},[o]),(0,ev.jsxs)("div",{className:"grid gap-4",children:[(0,ev.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,ev.jsx)("div",{className:"min-w-0",children:(0,ev.jsx)("h3",{className:"text-base font-semibold tracking-normal",children:"模型路由"})}),(0,ev.jsxs)(tY,{type:"button",size:"sm",onClick:function(){t(e=>[{providerName:"",protocol:"openai-v1",endpointUrl:"",apiKey:"",models:[],selectedModelIds:[],loadingModels:!1,saving:!1,error:"",editing:!0},...e])},children:[(0,ev.jsx)(sQ,{className:"size-4"}),"添加模型路由"]})]}),i?(0,ev.jsxs)(eij,{variant:"destructive",children:[(0,ev.jsx)(eP,{}),(0,ev.jsx)(eik,{children:"读取失败"}),(0,ev.jsx)(eiS,{children:i})]}):null,n?(0,ev.jsx)("div",{className:"rounded-lg border border-dashed px-3 py-6 text-sm text-muted-foreground",children:"正在读取模型路由"}):0===e.length?(0,ev.jsx)("div",{className:"rounded-lg border border-dashed px-3 py-6 text-sm text-muted-foreground",children:"还没有模型路由。"}):(0,ev.jsx)("div",{className:"grid gap-3",children:e.map((e,t)=>(0,ev.jsx)(ean,{draft:e,onDraftChange:e=>l(t,()=>e),onSave:()=>{s(t)},onDelete:()=>{c(t)}},e.id??`draft-${t}`))})]})}function ean({draft:e,onDraftChange:t,onSave:n,onDelete:r}){let i=ey.useRef(e),a=ey.useRef(t),o=[e.providerName,e.protocol,e.endpointUrl,e.apiKey||(e.savedKeyAvailable?"saved":"")].join("\n"),l=e.providerName.trim()&&e.endpointUrl.trim()&&e.apiKey.trim(),s=e.providerName.trim()&&e.endpointUrl.trim()&&(e.apiKey.trim()||e.savedKeyAvailable)&&e.selectedModelIds.length>0&&!e.saving;function c(n){t({...e,...n})}if(ey.useEffect(()=>{i.current=e,a.current=t},[e,t]),ey.useEffect(()=>{if(!l)return;let e=window.setTimeout(async()=>{let e=i.current;a.current({...e,loadingModels:!0,error:""});try{let t=await vt({providerName:e.providerName,protocol:e.protocol,endpointUrl:e.endpointUrl,apiKey:e.apiKey}),n=e.selectedModelIds.filter(e=>t.models.some(t=>t.id===e));a.current({...e,models:t.models,selectedModelIds:n,loadingModels:!1,error:""})}catch(t){a.current({...e,loadingModels:!1,error:t instanceof Error?t.message:"模型拉取失败"})}},650);return()=>window.clearTimeout(e)},[l,o]),!e.editing){let t=e.selectedModelIds.map(t=>e.models.find(e=>e.id===t)?.displayName||t).filter(Boolean),n=ei9.find(t=>t.value===e.protocol)?.label??e.protocol;return(0,ev.jsxs)("section",{className:"grid min-h-16 grid-cols-[minmax(0,1fr)_auto] items-center gap-3 rounded-lg border bg-card px-3 py-2.5",children:[(0,ev.jsxs)("div",{className:"min-w-0",children:[(0,ev.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1",children:[(0,ev.jsx)("span",{className:"truncate text-sm font-medium",children:e.providerName}),(0,ev.jsx)("span",{className:"ui-text-kbd text-muted-foreground",children:n})]}),(0,ev.jsx)("div",{className:"mt-1 truncate text-xs text-muted-foreground",children:t.length>0?t.join(", "):"未选择模型"})]}),(0,ev.jsxs)(tY,{type:"button",variant:"outline",size:"sm",onClick:()=>c({editing:!0}),children:[(0,ev.jsx)(mJ,{className:"size-4"}),"编辑"]})]})}return(0,ev.jsxs)("section",{className:"grid gap-3 rounded-lg border bg-card p-3",children:[(0,ev.jsxs)("div",{className:"grid gap-2 md:grid-cols-[minmax(0,1fr)_11rem]",children:[(0,ev.jsx)(tX,{value:e.providerName,placeholder:"提供商名称",onChange:e=>c({providerName:e.currentTarget.value})}),(0,ev.jsxs)(vA,{value:e.protocol,onValueChange:e=>c({protocol:e}),children:[(0,ev.jsx)(xd,{className:"w-full",children:(0,ev.jsx)(vT,{})}),(0,ev.jsx)(xh,{children:ei9.map(e=>(0,ev.jsx)(xp,{value:e.value,children:e.label},e.value))})]})]}),(0,ev.jsxs)("div",{className:"grid gap-2 md:grid-cols-[minmax(0,1fr)_minmax(0,18rem)]",children:[(0,ev.jsx)(tX,{value:e.endpointUrl,placeholder:"API 端点 URL,例如 https://api.openai.com/v1",onChange:e=>c({endpointUrl:e.currentTarget.value})}),(0,ev.jsx)(tX,{value:e.apiKey,type:"password",placeholder:e.savedKeyAvailable?"已保存,留空沿用":"API Key",onChange:e=>c({apiKey:e.currentTarget.value})})]}),(0,ev.jsx)(Hc,{}),(0,ev.jsxs)("div",{className:"grid gap-2",children:[(0,ev.jsxs)("div",{className:"flex min-h-6 items-center justify-between gap-2",children:[(0,ev.jsxs)("div",{className:"flex min-w-0 items-center gap-2 text-sm font-medium",children:[(0,ev.jsx)(mF,{className:"size-4 text-muted-foreground"}),"可用模型"]}),e.loadingModels?(0,ev.jsx)("span",{className:"text-xs text-muted-foreground",children:"拉取中"}):null]}),e.models.length>0?(0,ev.jsx)("div",{className:"grid max-h-64 gap-1 overflow-auto pr-1 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:e.models.map(t=>{let n=e.selectedModelIds.includes(t.id);return(0,ev.jsxs)("div",{className:tK("grid min-h-8 grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 rounded-md px-2 text-sm hover:bg-muted/60",n&&"bg-muted/70"),children:[(0,ev.jsxs)("label",{className:"flex cursor-pointer items-center gap-2",children:[(0,ev.jsx)(XL,{checked:n,onCheckedChange:n=>{var r;return r=t.id,void c({selectedModelIds:!0===n?[...e.selectedModelIds,r]:e.selectedModelIds.filter(e=>e!==r)})}}),(0,ev.jsx)("span",{className:"truncate",children:t.displayName||t.id})]}),(0,ev.jsxs)("div",{className:"flex items-center gap-1",children:[(0,ev.jsx)(tX,{type:"number",className:"h-6 w-16 px-1.5 text-center text-xs tabular-nums",value:t.contextLength||200,min:1,max:1e4,onChange:n=>{var r,i;return r=t.id,i=Number.parseInt(n.currentTarget.value,10)||0,void c({models:e.models.map(e=>e.id===r?{...e,contextLength:i>0?i:void 0}:e)})}}),(0,ev.jsx)("span",{className:"text-xs text-muted-foreground",children:"k"})]})]},t.id)})}):(0,ev.jsx)("div",{className:"rounded-md border border-dashed px-3 py-4 text-sm text-muted-foreground",children:"填写端点和密钥后会自动拉取模型。"})]}),e.error?(0,ev.jsxs)(eij,{variant:"destructive",children:[(0,ev.jsx)(eP,{}),(0,ev.jsx)(eik,{children:"模型路由错误"}),(0,ev.jsx)(eiS,{className:"break-words",children:e.error})]}):null,(0,ev.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,ev.jsxs)(tY,{type:"button",variant:"destructive",onClick:r,disabled:e.saving,children:[(0,ev.jsx)(gn,{className:"size-4"}),"删除"]}),(0,ev.jsx)(tY,{type:"button",onClick:n,disabled:!s,children:e.saving?"保存中":"保存"})]})]})}let ear=[{id:"settings",x:0,y:0,w:12,h:8}],eai=ho(ear);function eaa(){return(0,ev.jsx)(ha,{children:(0,ev.jsx)(enN,{layouts:ear,children:(0,ev.jsx)(enC,{layout:enS(eai,"settings"),children:(0,ev.jsx)(eix,{className:"h-full min-h-0 max-md:min-h-0 max-md:rounded-none max-md:border-0",contentClassName:"min-h-0 overflow-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",sections:[{id:"preferences",title:"偏好设置",icon:(0,ev.jsx)(mF,{}),children:[{id:"model-routes",title:"模型路由",icon:(0,ev.jsx)(mF,{}),content:(0,ev.jsx)(eat,{})},{id:"agent-config",title:"代理配置",icon:(0,ev.jsx)(mY,{}),content:(0,ev.jsx)(ei8,{})}]}],defaultSectionId:"preferences",defaultChildId:"model-routes",labels:{back:"返回",search:"搜索设置",welcomeTitle:"偏好设置",welcomeDescription:"",recommendations:"常用",noResults:"没有设置项"}})})})})}let eao=eS("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]),eal=eS("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);var eas=e.i(91e3);let eac=["light","dark","jelly"],ead={light:{label:"Light",icon:eal,className:"text-sidebar-foreground/60"},dark:{label:"Dark",icon:eao,className:"text-sidebar-foreground/60"},jelly:{label:"Jelly",icon:function(e){return(0,ev.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[(0,ev.jsx)("path",{d:"M6.5 11.5C6.5 8 8.7 5.5 12 5.5s5.5 2.5 5.5 6v.6c0 .8-.6 1.4-1.4 1.4H7.9c-.8 0-1.4-.6-1.4-1.4v-.6Z"}),(0,ev.jsx)("path",{d:"M7.8 13.5c.4 1 1.1 1.5 2 1.5s1.6-.5 2-1.5c.4 1 1.1 1.5 2 1.5s1.6-.5 2-1.5"}),(0,ev.jsx)("path",{d:"M9 15.5c0 1.4-1.2 1.4-1.2 2.8 0 .7.3 1.2.8 1.7"}),(0,ev.jsx)("path",{d:"M12 15.5c0 1.6-1.4 1.6-1.4 3.2 0 .7.3 1.2.8 1.8"}),(0,ev.jsx)("path",{d:"M15 15.5c0 1.4 1.2 1.4 1.2 2.8 0 .7-.3 1.2-.8 1.7"})]})},className:"text-primary"}};function eau(){let{resolvedTheme:e,setTheme:t}=(0,qP.useTheme)(),[n,r]=ey.useState(eas.defaultAppearanceTheme);ey.useEffect(()=>{let e=window.localStorage.getItem(eas.appearanceThemeStorageKey)??eas.defaultAppearanceTheme;r(e),(0,eas.applyAppearanceTheme)({theme:e})},[]);let i=n===eas.jellyAppearanceTheme?"jelly":"dark"===e?"dark":"light",a=eac.indexOf(i),o=eac[(a+1)%eac.length]??"light",{icon:l,label:s,className:c}=ead[i];function d(e){r(e),window.localStorage.setItem(eas.appearanceThemeStorageKey,e),(0,eas.applyAppearanceTheme)({theme:e})}return(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm",className:tK("size-10 hover:bg-muted hover:text-sidebar-foreground",c),"aria-label":`${ff.theme}: ${s}`,title:`${ff.theme}: ${s}`,onClick:function(){if("jelly"===o){t("dark"),d(eas.jellyAppearanceTheme);return}d(eas.defaultAppearanceTheme),t(o)},children:(0,ev.jsx)(l,{})})}function eaf({clipboardItems:e=[],onClipboardItemsChange:t,onOverlayOpenChange:n}){return(0,ev.jsx)(mD,{boardId:"runtime-operations",definitions:enH,initialLayouts:enW,clipboardItems:e,actionLabel:"运行页面卡片操作",paletteGroupTitle:"运行页面卡片",onClipboardItemsChange:t,onOverlayOpenChange:n})}function eah({clipboardItems:e=[],onClipboardItemsChange:t,onOverlayOpenChange:n}){let r=en2("/api/local/machines/telemetry",en1),i=ey.useMemo(()=>enU(r),[r]);return(0,ev.jsx)(mD,{boardId:"telemetry",definitions:i,initialLayouts:enK,clipboardItems:e,actionLabel:"遥测页面卡片操作",paletteGroupTitle:"遥测页面卡片",onClipboardItemsChange:t,onOverlayOpenChange:n})}function eap(){let e=cy(),[t,n]=ey.useState("dashboard"),[r,i]=ey.useState(!1),[a,o]=ey.useState(!1),[l,s]=ey.useState(!1),[c,d]=ey.useState(),[u,f]=ey.useState(!1),[h,p]=ey.useState([]),[m,g]=ey.useState([]),[v,x]=ey.useState({}),[y,b]=ey.useState(),[w,j]=ey.useState(W6),[k,S]=ey.useState([]),[N,C]=ey.useState(),M=ey.useCallback(e=>{j(t=>o0(e,t))},[]),E=ey.useCallback(e=>{S(t=>o0(e,t))},[]),O=ey.useCallback(async(e,t)=>{d(await WC(e,t)),n("new-agent-conversation")},[]),P=ey.useCallback(async()=>{let e=await WS();e?(d(await WC(e.conversation.id)),n("new-agent-conversation")):s(!0)},[]),z=ey.useCallback(({item:e})=>{"new-canvas"===e.id?n("new-canvas"):"all-canvases"===e.id?n("all-canvases"):"new-agent-conversation"===e.id?s(!0):"open-recent-conversation"===e.id?P():"all-conversations"===e.id?n("all-conversations"):"overview"===e.id?n("dashboard"):"runs"===e.id?n("runs"):"telemetry"===e.id?n("telemetry"):("machine-group"===e.id||"process-management"===e.id||"machine-performance"===e.id||"machine-firewall"===e.id||"audit-logs"===e.id||"machine-files"===e.id||"preferences"===e.id||"card-management"===e.id||"account"===e.id)&&n(e.id)},[P]),A=ey.useCallback(()=>{n("account")},[]);return(0,ev.jsxs)("main",{className:"vtl-app-background relative h-svh overflow-hidden text-foreground",children:[e?(0,ev.jsx)(erH,{navItems:erG,contents:erY,defaultActiveNavId:"dashboard",defaultSelectedItemId:"overview",defaultExpandedItemIds:["runs"],onItemSelect:z,footer:(0,ev.jsx)(eau,{})}):(0,ev.jsx)("div",{className:"pointer-events-none fixed inset-y-0 left-0 z-40 p-3",children:(0,ev.jsx)(u2,{navItems:erG,contents:erY,defaultActiveNavId:"dashboard",defaultSelectedItemId:"overview",defaultExpandedItemIds:["runs"],logo:(0,ev.jsx)(nu,{}),account:(0,ev.jsx)(nf,{}),onAccountClick:A,labels:{collapse:"收起菜单",expand:"展开菜单",search:fh.search,account:"账户",hideSidebar:"收起侧边栏",showSidebar:"展开侧边栏"},className:"h-[calc(100svh-1.5rem)] drop-shadow-lg",footer:(0,ev.jsx)(eau,{}),onItemSelect:z})}),(0,ev.jsxs)("section",{className:tK("h-full min-w-0","dashboard"===t||"account"===t?tK("overflow-auto",!e&&"pl-[8.5rem]"):"overflow-hidden",e&&"pb-14"),children:["runs"===t?(0,ev.jsx)(eaf,{clipboardItems:h,onClipboardItemsChange:p,onOverlayOpenChange:f}):"telemetry"===t?(0,ev.jsx)(eah,{clipboardItems:h,onClipboardItemsChange:p,onOverlayOpenChange:f}):"machine-group"===t?(0,ev.jsx)(en4,{clipboardItems:h,onClipboardItemsChange:p,onOverlayOpenChange:f}):"process-management"===t?(0,ev.jsx)(en8,{}):"machine-performance"===t?(0,ev.jsx)(ere,{}):"machine-firewall"===t?(0,ev.jsx)(enO,{}):"audit-logs"===t?(0,ev.jsx)(ern,{clipboardItems:h,onClipboardItemsChange:p,onOverlayOpenChange:f}):"machine-files"===t?(0,ev.jsx)(eeW,{clipboardItems:h,onClipboardItemsChange:p}):"preferences"===t?(0,ev.jsx)(eaa,{}):"card-management"===t?(0,ev.jsx)(eia,{}):"account"===t?(0,ev.jsx)(er8,{}):"new-canvas"===t?(0,ev.jsx)(enc,{nodes:w,edges:k,selectedNodeId:N,clipboardItems:h,onNodesChange:M,onEdgesChange:E,onNodesSet:j,onEdgesSet:S,onSelectedNodeChange:C,onClipboardItemsChange:p}):"all-canvases"===t?(0,ev.jsx)(enn,{clipboardItems:h,onClipboardItemsChange:p,onOverlayOpenChange:f}):"new-agent-conversation"===t?(0,ev.jsx)(et3,{conversation:c,clipboardItems:h,clipboardDraggingId:y,onClipboardItemsChange:p,onClipboardDraggingChange:b,onOverlayOpenChange:o}):"all-conversations"===t?(0,ev.jsx)(WV,{clipboardItems:h,onClipboardItemsChange:p,onOpenConversation:(e,t)=>{O(e,t)},onOverlayOpenChange:f}):(0,ev.jsx)(enx,{clipboardItems:h,onClipboardItemsChange:p,onOverlayOpenChange:i}),(0,ev.jsx)(enw,{hidden:"dashboard"===t?r||l:"new-agent-conversation"===t?a||l:u,items:h,trashItems:m,draggingId:y,onDraggingChange:b,onItemsChange:p,onTrashItemsChange:g,onTrashClipboardItemsChange:x,trashClipboardItems:v})]}),(0,ev.jsx)(WK,{open:l,onOpenChange:s,onCreated:e=>{d(e),n("new-agent-conversation")}})]})}function eam(){let{ready:e,user:t,logout:n}=nd();return e?t?(0,ev.jsx)(eap,{}):(0,ev.jsx)(nl,{onComplete:()=>{window.location.reload()}}):(0,ev.jsx)("main",{className:"grid min-h-svh place-items-center bg-background",children:(0,ev.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[(0,ev.jsx)("div",{className:"size-8 animate-spin rounded-full border-2 border-muted-foreground/20 border-t-primary"}),(0,ev.jsx)("span",{className:"text-sm text-muted-foreground",children:"连接中..."})]})})}function eag(){return(0,ev.jsx)(nc,{children:(0,ev.jsx)(eam,{})})}e.s(["default",()=>eag],66204)}]);
|
|
52
|
+
</style>`,/<\/head>/i.test(t)?t.replace(/<\/head>/i,`${n}</head>`):`${n}${t}`},[r,t]);return(0,ev.jsx)("iframe",{title:e,sandbox:"allow-scripts",srcDoc:i,className:tK("size-full border-0 bg-background",n)})}function QW({file:e,value:t,labels:n}){let r=ey.useMemo(()=>{let n=e.bytes??(t?new TextEncoder().encode(t):[]),r=Math.min(n.length,4096),i=[];for(let e=0;e<r;e+=16){let t=Array.from({length:Math.min(16,r-e)},(t,r)=>n[e+r]??0);i.push({offset:e.toString(16).padStart(8,"0"),hex:t.map(e=>e.toString(16).padStart(2,"0")).join(" "),ascii:t.map(e=>e>=32&&e<=126?String.fromCharCode(e):".").join("")})}return i},[e.bytes,t]);return 0===r.length?(0,ev.jsx)("div",{className:"ui-text-body grid size-full place-items-center p-6 text-center text-muted-foreground",children:n.noContent}):(0,ev.jsx)("div",{className:"size-full overflow-auto bg-background p-3 ui-text-code",children:(0,ev.jsx)("div",{className:"grid min-w-max grid-cols-[5.5rem_30rem_1fr] gap-x-4",children:r.map(e=>(0,ev.jsxs)(ey.Fragment,{children:[(0,ev.jsx)("span",{className:"text-muted-foreground",children:e.offset}),(0,ev.jsx)("span",{className:"font-mono text-foreground",children:e.hex}),(0,ev.jsx)("span",{className:"font-mono text-muted-foreground",children:e.ascii})]},e.offset))})})}function QU({file:e,labels:t,onApprove:n}){return(0,ev.jsx)("div",{className:"grid size-full place-items-center bg-muted/20 p-6",children:(0,ev.jsxs)("div",{className:"grid max-w-md justify-items-center gap-3 text-center",children:[(0,ev.jsx)("div",{className:"grid size-10 place-items-center rounded-full border bg-background text-muted-foreground",children:(0,ev.jsx)(QE,{className:"size-4"})}),(0,ev.jsxs)("div",{className:"grid gap-1",children:[(0,ev.jsx)("h3",{className:"ui-text-body font-medium text-foreground",children:t.binaryTitle}),(0,ev.jsx)("p",{className:"ui-text-body text-muted-foreground",children:t.binaryDescription})]}),(0,ev.jsxs)("div",{className:"flex items-center gap-2",children:[QR(e.size)&&(0,ev.jsx)(cC,{variant:"outline",children:QR(e.size)}),(0,ev.jsx)(tY,{type:"button",size:"sm",variant:"outline",onClick:n,children:t.renderAnyway})]})]})})}function Qq({labels:e}){return(0,ev.jsx)("div",{className:"ui-text-body grid size-full place-items-center p-6 text-center text-muted-foreground",children:e.unsupportedPreview})}function QK({file:e,value:t,labels:n,renderPreview:r,className:i}){let a=QD(e),o=e.src?e.src:t&&"svg"===QD(e)?`data:image/svg+xml;charset=utf-8,${encodeURIComponent(t)}`:void 0,l=r?.(e,t);return void 0!==l?(0,ev.jsx)("div",{"data-slot":"file-tab-custom-preview",className:tK("size-full",i),children:l}):"html"===a||"richtext"===a?(0,ev.jsx)(QH,{title:e.name,value:e.previewContent??t,className:i}):"markdown"===a?(0,ev.jsx)("div",{"data-slot":"file-tab-markdown-preview",className:tK("size-full overflow-auto bg-background",i),children:(0,ev.jsx)(QV,{value:t})}):"svg"===a&&o?(0,ev.jsx)("div",{"data-slot":"file-tab-svg-preview",className:tK("grid size-full place-items-center overflow-auto bg-muted/20 p-6",i),children:(0,ev.jsx)("img",{src:o,alt:e.name,className:"max-h-full max-w-full rounded-lg border bg-background p-4"})}):"image"===a&&o?(0,ev.jsx)("div",{"data-slot":"file-tab-image-preview",className:tK("grid size-full place-items-center overflow-auto bg-muted/20 p-6",i),children:(0,ev.jsx)("img",{src:o,alt:e.name,className:"max-h-full max-w-full rounded-md"})}):"video"===a&&o?(0,ev.jsx)("div",{"data-slot":"file-tab-video-preview",className:tK("grid size-full place-items-center bg-muted/20 p-6",i),children:(0,ev.jsx)("video",{src:o,controls:!0,preload:"none",className:"max-h-full max-w-full rounded-md border bg-background"})}):(0,ev.jsx)(Qq,{labels:n})}function QG({open:e,labels:t,currentView:n,currentMode:r,saving:i,modified:a,canSwitchView:o,canSwitchMode:l,canSave:s,canOpenHistory:c,onOpenChange:d,onToggleView:u,onToggleMode:f,onSave:h,onHistory:p}){let m=[o?{key:"view",label:"code"===n?t.preview:t.code,onClick:u,icon:"code"===n?(0,ev.jsx)(Yx,{className:"size-4"}):(0,ev.jsx)(xy,{className:"size-4"})}:void 0,l?{key:"mode",label:"review"===r?t.edit:t.review,onClick:f,icon:"review"===r?(0,ev.jsx)(QO,{className:"size-4"}):(0,ev.jsx)(eC,{className:"size-4"})}:void 0,s?{key:"save",label:i?t.saving:t.save,onClick:h,disabled:i||!a,icon:(0,ev.jsx)(QA,{className:"size-4"})}:void 0,c?{key:"history",label:t.history,onClick:p,icon:(0,ev.jsx)(Wo,{className:"size-4"})}:void 0].filter(e=>void 0!==e);return 0===m.length?null:(0,ev.jsx)("div",{"data-slot":"file-tab-floating-actions",className:"absolute right-3 bottom-3 z-20",children:(0,ev.jsxs)("div",{className:"relative size-8",children:[m.map((t,n)=>(0,ev.jsx)(tY,{type:"button",variant:"outline",size:"icon-sm","aria-label":t.label,disabled:t.disabled,onClick:()=>{t.disabled||t.onClick()},className:tK("absolute inset-0 rounded-full bg-background/95 shadow-md backdrop-blur transition-[opacity,transform] duration-150 ease-out",e?"pointer-events-auto opacity-100":"pointer-events-none translate-y-1 opacity-0",t.disabled&&"opacity-45"),style:{transform:e?`translateY(-${(n+1)*42}px)`:void 0},children:t.icon},t.key)),(0,ev.jsx)(tY,{type:"button",variant:"outline",size:"icon-sm","aria-label":t.actions,"aria-expanded":e,onClick:()=>d(!e),className:"absolute inset-0 rounded-full bg-background/95 shadow-md backdrop-blur",children:(0,ev.jsx)(sZ,{className:tK("size-4 transition-transform",e&&"rotate-90")})})]})})}function QY({file:e,value:t,defaultValue:n,onValueChange:r,mode:i,defaultMode:a="review",onModeChange:o,view:l,defaultView:s="code",onViewChange:c,modified:d=!1,onSave:u,onSaveError:f,largeBinaryThreshold:h=2097152,showHeader:p=!0,wrapLines:m=!1,renderPreview:g,onHistory:v,labels:x,className:y,editorClassName:b,previewClassName:w,headerClassName:j,...k}){var S;let N,C,M=ey.useMemo(()=>({...QI,...x}),[x]),[E,O]=ey.useState(n??e.content??""),[P,z]=ey.useState(a),[A,I]=ey.useState(s),[_,D]=ey.useState(!1),[T,R]=ey.useState(!1),[L,$]=ey.useState(!1),F=ey.useRef(null),B=t??E,V=i??P,H=(S=l??A,(N=QL(e)).includes(S)?S:N[0]),W=QD(e),U=QL(e).length>1,q=!e.readOnly&&["text","code","html","markdown","richtext","svg"].includes(QD(e)),K=!!u&&q&&"code"===H&&(d||L),G="review"===V||!0===e.readOnly,Y="binary"===(C=QD(e))||"image"!==C&&"video"!==C&&!!(e.size&&e.size>h&&!e.content),X=(e.path??e.name).split(/[\\/]+/).filter(Boolean),Z=QR(e.size??B.length);async function J(){if(u&&!L){$(!0);try{await u(B),R(!1)}catch(e){f?.(e)}finally{$(!1)}}}return ey.useEffect(()=>{void 0===t&&O(n??e.content??""),D(!1),R(!1)},[n,e,t]),ey.useEffect(()=>{if(T)return window.addEventListener("pointerdown",e),()=>window.removeEventListener("pointerdown",e);function e(e){let t=e.target;t instanceof Node&&F.current?.contains(t)||R(!1)}},[T]),(0,ev.jsxs)("div",{ref:F,"data-slot":"file-tab-viewer","data-mode":V,"data-view":H,className:tK("vtl-surface-panel relative grid min-h-0 overflow-hidden rounded-[var(--surface-panel-radius)] border",p?"grid-rows-[auto_minmax(0,1fr)]":"grid-rows-[minmax(0,1fr)]",y),...k,children:[p&&(0,ev.jsxs)("div",{"data-slot":"file-tab-viewer-header",className:tK("flex min-w-0 items-center gap-2 border-b bg-muted/35 px-3 py-2",j),children:[(0,ev.jsx)("span",{className:"grid size-5 shrink-0 place-items-center rounded-md border bg-background text-muted-foreground",children:"image"===W?(0,ev.jsx)(QP,{className:"size-3.5"}):"video"===W?(0,ev.jsx)(Qz,{className:"size-3.5"}):"binary"===W?(0,ev.jsx)(QE,{className:"size-3.5"}):(0,ev.jsx)(xS,{className:"size-3.5"})}),(0,ev.jsx)("div",{className:"flex min-w-0 flex-1 items-center gap-1.5 ui-text-kbd",children:X.map((e,t)=>(0,ev.jsxs)(ey.Fragment,{children:[t>0&&(0,ev.jsx)("span",{className:"text-muted-foreground",children:M.pathSeparator}),(0,ev.jsx)("span",{className:tK("truncate",t===X.length-1?"font-medium text-foreground":"text-muted-foreground"),children:e})]},`${e}-${t}`))}),(0,ev.jsxs)("div",{className:"hidden shrink-0 items-center gap-1.5 sm:flex",children:[Z&&(0,ev.jsx)(cC,{variant:"outline",children:Z}),q&&"code"===H&&(G?(0,ev.jsxs)(cC,{variant:"secondary",children:[(0,ev.jsx)(sG,{className:"size-3"}),M.review]}):(0,ev.jsxs)(cC,{variant:"outline",children:[(0,ev.jsx)(QO,{className:"size-3"}),M.edit]}))]})]}),(0,ev.jsx)("div",{"data-slot":"file-tab-viewer-body",className:"min-h-0 overflow-hidden",children:Y&&!_?(0,ev.jsx)(QU,{file:e,labels:M,onApprove:()=>D(!0)}):"preview"===H?(0,ev.jsx)(QK,{file:e,value:B,labels:M,renderPreview:g,className:w}):"hex"===H?(0,ev.jsx)(QW,{file:e,value:B,labels:M}):(0,ev.jsx)(QB,{file:e,value:B,readOnly:G,onValueChange:function(e){void 0===t&&O(e),r?.(e)},wrapLines:m,className:b})}),(0,ev.jsx)(QG,{open:T,labels:M,currentView:H,currentMode:V,saving:L,modified:d,canSwitchView:U,canSwitchMode:q&&"code"===H,canSave:K,canOpenHistory:!!(v&&e.path),onOpenChange:R,onToggleView:function(){var e;e="code"===H?"preview":"code",void 0===l&&I(e),c?.(e)},onToggleMode:function(){var e;e="review"===V?"edit":"review",void 0===i&&z(e),o?.(e)},onSave:J,onHistory:()=>{R(!1),v?.(e)}})]})}function QX(e,t){return e[Math.max(0,t-1)]?.id??e[0]?.id}function QZ(e){return"string"==typeof e||"number"==typeof e?String(e):void 0}function QJ(e,t,n){let r=[...e],i=r[t],a=r[n];return i&&a&&(r[t]=a,r[n]=i),r}function QQ({tabs:e,defaultTabs:t=[],activeTabId:n,defaultActiveTabId:r,onActiveTabChange:i,onTabsChange:a,onCreateTab:o,onCloseTab:l,onTabReorder:s,onTabDetach:c,onExternalTabDrop:d,createActions:u=[],tabActions:f=[],reorderable:h=!0,detachable:p=!1,externalDropTypes:m=[],createLabel:g="New tab",moreLabel:v="More tab actions",closeLabel:x="Close tab",scrollLeftLabel:y="Scroll tabs left",scrollRightLabel:b="Scroll tabs right",tabListLabel:w="Open tabs",emptyContent:j,renderContent:k,showContent:S=!0,className:N,tabListClassName:C,contentClassName:M}){let[E,O]=ey.useState(t),P=ey.useRef(null),z=ey.useRef(null),[A,I]=ey.useState(),[_,D]=ey.useState(void 0),T=ey.useRef(void 0),[R,L]=ey.useState(void 0),[$,F]=ey.useState(!1),B=ey.useRef(void 0),V=ey.useRef(void 0),H=ey.useRef(!1),[W,U]=ey.useState(!1),[q,K]=ey.useState(!1),[G,Y]=ey.useState(),X=e??E,Z=X.find(e=>!e.disabled),[J,Q]=ey.useState(r??Z?.id),ee=n??J,et=X.find(e=>e.id===ee&&!e.disabled)??Z;ey.useEffect(()=>{!et&&Z&&void 0===n&&Q(Z.id)},[et,n,Z]);let en=ey.useCallback(t=>{void 0===e&&O(t),a?.(t)},[a,e]),er=ey.useCallback(e=>{T.current=e,D(e)},[]),ei=ey.useCallback(()=>{let e=z.current,t=new Map;if(!e)return t;for(let n of e.querySelectorAll("[data-tab-id]")){let e=n.getBoundingClientRect(),r=n.dataset.tabId;r&&t.set(r,{left:e.left,top:e.top})}return t},[]),ea=ey.useCallback((e,t=!0)=>{t&&(V.current=ei()),B.current=e,L(e)},[ei]),eo=ey.useCallback(()=>{let e=z.current;if(!e){U(!1),K(!1);return}let t=e.scrollWidth-e.clientWidth;U(e.scrollLeft>1),K(e.scrollLeft<t-1)},[]);function el(e){let t=z.current;if(!t)return;let n=Math.max(.7*t.clientWidth,160);t.scrollLeft+="left"===e?-n:n,window.requestAnimationFrame(eo)}ey.useEffect(()=>{F(!0)},[]),ey.useEffect(()=>{eo();let e=z.current;if(!e)return;let t=new ResizeObserver(eo);return t.observe(e),window.addEventListener("resize",eo),()=>{t.disconnect(),window.removeEventListener("resize",eo)}},[X.length,eo]),ey.useLayoutEffect(()=>{let e=V.current,t=z.current;if(e&&t)for(let n of(V.current=void 0,t.querySelectorAll("[data-tab-id]"))){let t=n.dataset.tabId;if(!t)continue;let r=e.get(t);if(!r)continue;let i=n.getBoundingClientRect(),a=r.left-i.left,o=r.top-i.top;1>Math.abs(a)&&1>Math.abs(o)||n.animate([{transform:`translate(${a}px, ${o}px)`},{transform:"translate(0, 0)"}],{duration:150,easing:"cubic-bezier(0.2, 0, 0, 1)"})}},[R]);let es=ey.useCallback(e=>{let t=z.current;if(t)return Array.from(t.querySelectorAll("[data-tab-id]")).find(t=>t.dataset.tabId===e)},[]),ec=ey.useCallback((e,t)=>{let n=B.current??X,r=n.findIndex(t=>t.id===e.tabId);if(-1===r)return;let i=t-e.offsetX,a=i+e.width,o=t>=e.currentX,l=n[r+1],s=n[r-1];if(o&&l&&!l.disabled){let e=es(l.id),t=e?.getBoundingClientRect();t&&a>=t.left+.7*t.width&&ea(QJ(n,r,r+1));return}if(!o&&s&&!s.disabled){let e=es(s.id),t=e?.getBoundingClientRect();t&&i<=t.right-.7*t.width&&ea(QJ(n,r,r-1))}},[es,X,ea]);function ed(e){if(!d||0===m.length)return!1;let t=Array.from(e.dataTransfer.types);return m.some(e=>t.includes(e))}function eu(e){let t=z.current;if(!t)return{index:X.length,left:0};let n=t.getBoundingClientRect(),r=Array.from(t.querySelectorAll("[data-tab-id]"));if(0===r.length)return{index:0,left:t.scrollLeft+8};for(let[i,a]of r.entries()){let r=a.getBoundingClientRect();if(e.clientX<r.left+r.width/2)return{index:i,left:r.left-n.left+t.scrollLeft}}let i=r[r.length-1].getBoundingClientRect();return{index:r.length,left:i.right-n.left+t.scrollLeft}}ey.useEffect(()=>{if(_)return window.addEventListener("pointermove",e),window.addEventListener("pointerup",t,{once:!0}),()=>{window.removeEventListener("pointermove",e),window.removeEventListener("pointerup",t)};function e(e){let t=T.current;if(!t)return;let n=e.clientX-t.startX,r=e.clientY-t.startY,i=t.dragging||Math.abs(n)>4||Math.abs(r)>4;i&&(e.preventDefault(),ec(t,e.clientX)),er({...t,currentX:e.clientX,currentY:e.clientY,dragging:i})}function t(e){let t=T.current;if(t?.dragging){e.preventDefault(),H.current=!0;let r=X.find(e=>e.id===t.tabId),a=P.current?.getBoundingClientRect(),o=!!a&&(e.clientX<a.left||e.clientX>a.right||e.clientY<a.top||e.clientY>a.bottom);if(p&&c&&r&&o&&function(e,t){if(e.pinned)return!1;let r=X.findIndex(t=>t.id===e.id);if(c?.(e,{tabs:X,clientX:t.clientX,clientY:t.clientY,nativeEvent:t})===!1)return!1;let a=X.filter(t=>t.id!==e.id);if(en(a),e.id===ee){let e=QX(a,r);void 0===n&&Q(e),e&&i?.(e)}return!0}(r,e)){I(void 0),er(void 0),ea(void 0,!1);return}let l=B.current;l&&!(l.length===X.length&&l.every((e,t)=>e.id===X[t]?.id))&&(en(l),s?.(l))}I(void 0),er(void 0),ea(void 0,!1)}});let ef=et&&(k?.(et)??et.content??(0,ev.jsx)("div",{className:"grid min-h-44 place-items-center bg-muted/30 p-6 text-center text-muted-foreground",children:et.title})),eh=_?.dragging&&R?R:X,ep=_?.dragging?X.find(e=>e.id===_.tabId):void 0,em=_?.dragging&&ep&&$?(0,ob.createPortal)((0,ev.jsxs)("div",{"data-slot":"multi-tab-drag-preview","aria-hidden":"true",className:"pointer-events-none fixed z-[100] flex h-9 min-w-0 items-center gap-1 rounded-t-lg border border-border bg-background px-2.5 text-foreground shadow-lg",style:{left:_.currentX-_.offsetX,top:_.top,width:_.width},children:[ep.icon&&(0,ev.jsx)("span",{className:"grid size-4 shrink-0 place-items-center text-muted-foreground [&_svg]:size-3.5",children:ep.icon}),(0,ev.jsx)("span",{className:"truncate ui-text-control font-medium",children:ep.title}),ep.modified&&(0,ev.jsx)("span",{"aria-hidden":"true",className:"size-1.5 shrink-0 rounded-full bg-foreground/70"})]}),document.body):null;return(0,ev.jsxs)("div",{ref:P,"data-slot":"multi-tab-system",className:tK("vtl-surface-panel grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-[var(--surface-panel-radius)] border",N),children:[(0,ev.jsxs)("div",{className:"relative flex min-w-0 shrink-0 items-end gap-1 border-b bg-muted/35 px-1.5 pt-1.5",children:[W&&(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm","aria-label":y,onClick:()=>el("left"),className:"mb-1 shrink-0",children:(0,ev.jsx)(cw,{})}),(0,ev.jsxs)("div",{ref:z,role:"tablist","aria-label":w,"data-slot":"multi-tab-list",className:tK("relative flex min-w-0 flex-1 items-end overflow-x-auto [scrollbar-width:none] data-[overflow=both]:[mask-image:linear-gradient(90deg,transparent,black_24px,black_calc(100%-24px),transparent)] data-[overflow=left]:[mask-image:linear-gradient(90deg,transparent,black_24px)] data-[overflow=right]:[mask-image:linear-gradient(90deg,black_calc(100%-24px),transparent)] [&::-webkit-scrollbar]:hidden",C),"data-overflow":W&&q?"both":W?"left":q?"right":void 0,onScroll:eo,onDragOver:function(e){ed(e)&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="move",Y(eu(e)))},onDragLeave:function(e){if(!ed(e))return;let t=e.relatedTarget;t instanceof Node&&e.currentTarget.contains(t)||Y(void 0)},onDrop:function(e){if(!ed(e))return;e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="move";let t=eu(e);Y(void 0),d?.({tabs:X,insertIndex:t.index,nativeEvent:e})},children:[eh.map((e,t)=>{let r=e.id===et?.id,a=eh[t+1],o=_?.dragging&&A===e.id,s=!r&&!o&&void 0!==a&&a.id!==et?.id&&a.id!==A;return(0,ev.jsxs)(ey.Fragment,{children:[(0,ev.jsxs)("div",{onPointerDown:t=>(function(e,t){if(!h||e.disabled||0!==t.button)return;let n=t.currentTarget.getBoundingClientRect();I(e.id),ea(X,!1),er({tabId:e.id,startX:t.clientX,startY:t.clientY,offsetX:t.clientX-n.left,top:n.top,width:n.width,currentX:t.clientX,currentY:t.clientY,dragging:!1})})(e,t),"data-slot":"multi-tab","data-tab-id":e.id,"data-state":r?"active":"inactive","data-dragging":A===e.id?"true":void 0,"data-modified":e.modified?"true":void 0,className:tK("group/tab relative flex h-9 min-w-0 max-w-52 shrink-0 items-center gap-1 rounded-t-lg border border-b-0 px-2.5 transition-[border-color,background-color,color,box-shadow,outline-color] duration-150 ease-out",h&&!e.disabled&&"cursor-grab active:cursor-grabbing",r?"border-border bg-background text-foreground shadow-[0_-1px_0_var(--background)_inset]":"border-transparent bg-transparent text-muted-foreground hover:bg-background/70 hover:text-foreground",o&&"border-dashed border-border bg-muted/45 text-transparent shadow-none outline outline-1 outline-ring/30 [&_*]:opacity-0",e.disabled&&"pointer-events-none opacity-50"),children:[(0,ev.jsx)("button",{type:"button",role:"tab","aria-label":QZ(e.title),"aria-selected":r,disabled:e.disabled,onClick:t=>{var r;let a;if(H.current){H.current=!1,t.preventDefault();return}r=e.id,(a=X.find(e=>e.id===r))&&!a.disabled&&(void 0===n&&Q(r),i?.(r))},className:"absolute inset-0 rounded-t-lg outline-none focus-visible:ring-2 focus-visible:ring-ring/50"}),(0,ev.jsxs)("div",{"aria-hidden":"true",className:"pointer-events-none relative z-10 flex min-w-0 flex-1 items-center gap-1.5",children:[e.icon&&(0,ev.jsx)("span",{className:"grid size-4 shrink-0 place-items-center text-muted-foreground [&_svg]:size-3.5",children:e.icon}),(0,ev.jsx)("span",{className:"truncate ui-text-control font-medium",children:e.title}),e.meta&&(0,ev.jsx)("span",{className:"shrink-0 ui-text-kbd text-muted-foreground",children:e.meta}),e.modified&&(0,ev.jsx)("span",{"aria-hidden":"true",className:"size-1.5 shrink-0 rounded-full bg-foreground/70"})]}),!e.pinned&&(0,ev.jsx)("button",{type:"button",draggable:!1,onPointerDown:e=>e.stopPropagation(),"aria-label":e.closeLabel??(QZ(e.title)?`${x}: ${QZ(e.title)}`:x),onClick:()=>(function(e){if(e.pinned)return;let t=X.findIndex(t=>t.id===e.id),r=X.filter(t=>t.id!==e.id);if(en(r),l?.(e),e.id===ee){let e=QX(r,t);void 0===n&&Q(e),e&&i?.(e)}})(e),className:tK("relative z-20 grid size-5 shrink-0 place-items-center rounded-md text-muted-foreground opacity-0 transition-all hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring/50 focus-visible:outline-none group-hover/tab:opacity-100",r&&"opacity-100"),children:(0,ev.jsx)(ms,{className:"size-3.5"})})]}),s&&(0,ev.jsx)("span",{"aria-hidden":"true",className:"mb-2 h-4 w-px shrink-0 bg-border/80"})]},e.id)}),G?(0,ev.jsxs)("span",{"data-slot":"multi-tab-external-insert","aria-hidden":"true",className:"pointer-events-none absolute top-2 bottom-1 z-30 flex w-0 -translate-x-1/2 items-center justify-center",style:{left:G.left},children:[(0,ev.jsx)("span",{className:"h-full w-px rounded-full bg-foreground/80"}),(0,ev.jsx)("span",{className:"absolute top-0 size-1.5 rounded-full bg-foreground"})]}):null]}),(0,ev.jsxs)("div",{className:"mb-1 flex shrink-0 items-center gap-1",children:[q&&(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm","aria-label":b,onClick:()=>el("right"),children:(0,ev.jsx)(xx,{})}),u.length>0?(0,ev.jsxs)(bx,{children:[(0,ev.jsx)(bb,{asChild:!0,children:(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm","aria-label":g,children:(0,ev.jsx)(sQ,{})})}),(0,ev.jsx)(bP,{align:"end",className:"w-52",children:u.map((e,t)=>(0,ev.jsxs)(ey.Fragment,{children:[e.separatorBefore&&(0,ev.jsx)(b_,{}),(0,ev.jsxs)(bz,{disabled:e.disabled,onSelect:e.onSelect,children:[e.icon,e.label,e.shortcut&&(0,ev.jsx)(bD,{children:e.shortcut})]})]},t))})]}):(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm","aria-label":g,onClick:function(){let e=o?.();e&&(en([...X,e]),e.disabled||(void 0===n&&Q(e.id),i?.(e.id)))},children:(0,ev.jsx)(sQ,{})}),f.length>0&&(0,ev.jsxs)(bx,{children:[(0,ev.jsx)(bb,{asChild:!0,children:(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm","aria-label":v,children:(0,ev.jsx)(sZ,{})})}),(0,ev.jsx)(bP,{align:"end",className:"w-52",children:f.map((e,t)=>(0,ev.jsxs)(ey.Fragment,{children:[e.separatorBefore&&(0,ev.jsx)(b_,{}),(0,ev.jsxs)(bz,{disabled:e.disabled,onSelect:e.onSelect,children:[e.icon,e.label,e.shortcut&&(0,ev.jsx)(bD,{children:e.shortcut})]})]},t))})]})]})]}),em,S&&(0,ev.jsx)("div",{"data-slot":"multi-tab-content",className:tK("min-h-0 overflow-hidden",M),children:ef??j??(0,ev.jsx)("div",{"aria-hidden":"true",className:"min-h-44 rounded-lg border border-dashed bg-muted/30"})})]})}let Q0=[{policyNumber:3,name:"Allow HTTP Traffic",sourceZone:"Trust",sourceIPs:["192.168.1.0/24","10.0.0.0/8"],destinationZone:"Trust",destinationIPs:["192.168.2.0/24"],tags:["Web Access","Internal"],action:"allow",description:"Permits HTTP traffic from internal network"},{policyNumber:5,name:"Block Suspicious IPs",sourceZone:"Untrust",sourceIPs:["203.0.113.0/24","198.51.100.0/24"],destinationZone:"Trust",destinationIPs:["Any"],tags:["Blocking","Security"],action:"deny",description:"Blocks known malicious IP ranges"},{policyNumber:9,name:"SSH Access Control",sourceZone:"Trust",sourceIPs:["172.16.0.0/12"],destinationZone:"Trust",destinationIPs:["10.50.0.0/16"],tags:["Admin Access","VPN"],action:"allow",description:"Restricted SSH access for admin network"},{policyNumber:12,name:"Database Port Protection",sourceZone:"Untrust",sourceIPs:["0.0.0.0/0"],destinationZone:"Trust",destinationIPs:["10.100.0.0/24"],tags:["Blocking","Database"],action:"deny",description:"Blocks external access to database ports"},{policyNumber:15,name:"API Gateway Access",sourceZone:"Trust",sourceIPs:["192.168.100.0/24","192.168.101.0/24"],destinationZone:"Trust",destinationIPs:["10.200.0.5"],tags:["API","VDI Env"],action:"allow",description:"Allows traffic to API gateway from specific subnets"},{policyNumber:18,name:"Drop Legacy SMB",sourceZone:"Trust",sourceIPs:["Any"],destinationZone:"Trust",destinationIPs:["10.20.0.0/16"],tags:["Legacy","Internal"],action:"drop",description:"Drops SMBv1 probes across workstation networks"},{policyNumber:22,name:"Agent Runtime Mesh",sourceZone:"Trust",sourceIPs:["10.10.4.0/24"],destinationZone:"Trust",destinationIPs:["10.10.8.0/24","10.10.12.0/24"],tags:["Agent","Runtime"],action:"allow",description:"Allows managed agent runtime channels between worker pools"},{policyNumber:27,name:"Block Public Admin Ports",sourceZone:"Untrust",sourceIPs:["0.0.0.0/0"],destinationZone:"Trust",destinationIPs:["Any"],tags:["Blocking","Admin Access"],action:"deny",description:"Denies public access to SSH, RDP, and database admin ports"},{policyNumber:31,name:"Build Cache Access",sourceZone:"Trust",sourceIPs:["10.30.0.0/16"],destinationZone:"Trust",destinationIPs:["10.60.12.20"],tags:["Build","Internal"],action:"allow",description:"Allows build workers to reach shared cache storage"},{policyNumber:36,name:"Relay Egress",sourceZone:"Trust",sourceIPs:["10.40.0.0/16"],destinationZone:"Untrust",destinationIPs:["198.18.0.0/15"],tags:["Relay","Agent"],action:"allow",description:"Permits relay service egress to managed edge addresses"},{policyNumber:41,name:"Quarantine Subnet",sourceZone:"Quarantine",sourceIPs:["10.250.0.0/24"],destinationZone:"Trust",destinationIPs:["Any"],tags:["Security","Blocking"],action:"deny",description:"Blocks quarantined hosts from internal services"},{policyNumber:48,name:"Observability Intake",sourceZone:"Trust",sourceIPs:["10.0.0.0/8"],destinationZone:"Trust",destinationIPs:["10.80.4.10"],tags:["Telemetry","Internal"],action:"allow",description:"Allows metrics and logs to the observability intake"}],Q1=Array.from(new Set(Q0.flatMap(e=>e.tags))).sort(),Q2=[["10.10.4.0/24","Agent workers","Trust","18"],["10.20.0.0/16","Workstations","Trust","41"],["10.250.0.0/24","Quarantine","Quarantine","03"],["198.18.0.0/15","Relay edge","Untrust","12"]],Q5=[["Database Port Protection","2026-06-12","Security"],["Relay Egress","2026-06-28","Network"],["Build Cache Access","2026-07-04","Build"],["Observability Intake","2026-07-18","Ops"]],Q4=[{time:"09:00",p2p:42,direct:12,relay:96},{time:"10:00",p2p:39,direct:12,relay:88},{time:"11:00",p2p:44,direct:14,relay:91},{time:"12:00",p2p:38,direct:12,relay:84},{time:"13:00",p2p:36,direct:11,relay:86},{time:"14:00",p2p:41,direct:13,relay:93}],Q3=[["14:42","Allay 将 Linux-runner-02 加入 Compute 机器组","done"],["14:37","Ops 对 runner 服务发起重启确认","current"],["14:25","UI Polish Agent 访问 D:\\Projects\\Vantaloom-ui","done"],["14:18","Viewer 请求远程 shell 被拒绝","blocked"],["14:07","Observer-01 P2P 心跳恢复","done"],["13:54","Buildbot 读取发布产物目录","done"]],Q6={p2p:{label:"P2P",color:"var(--chart-1)"},direct:{label:"Direct",color:"var(--chart-3)"},relay:{label:"Relay",color:"var(--chart-5)"},cpu:{label:"CPU",color:"var(--chart-1)"},memory:{label:"Memory",color:"var(--chart-3)"}};function Q8({className:e,...t}){return(0,ev.jsx)("nav",{role:"navigation","aria-label":"pagination","data-slot":"pagination",className:tK("mx-auto flex w-full justify-center",e),...t})}function Q7({className:e,...t}){return(0,ev.jsx)("ul",{"data-slot":"pagination-content",className:tK("flex flex-row items-center gap-1",e),...t})}function Q9({...e}){return(0,ev.jsx)("li",{"data-slot":"pagination-item",...e})}function eee({className:e,isActive:t,size:n="icon",...r}){return(0,ev.jsx)("a",{"aria-current":t?"page":void 0,"data-slot":"pagination-link","data-active":t,className:tK(tG({variant:t?"outline":"ghost",size:n}),e),...r})}function eet({className:e,previousLabel:t="Previous",...n}){return(0,ev.jsxs)(eee,{"aria-label":t,size:"default",className:tK("gap-1 px-2.5 sm:pl-2",e),...n,children:[(0,ev.jsx)(cw,{}),(0,ev.jsx)("span",{className:"hidden sm:block",children:t})]})}function een({className:e,nextLabel:t="Next",...n}){return(0,ev.jsxs)(eee,{"aria-label":t,size:"default",className:tK("gap-1 px-2.5 sm:pr-2",e),...n,children:[(0,ev.jsx)("span",{className:"hidden sm:block",children:t}),(0,ev.jsx)(xx,{})]})}function eer({className:e,moreLabel:t="More pages",...n}){return(0,ev.jsxs)("span",{"aria-hidden":!0,"data-slot":"pagination-ellipsis",className:tK("flex size-8 items-center justify-center",e),...n,children:[(0,ev.jsx)(sZ,{className:"size-4"}),(0,ev.jsx)("span",{className:"sr-only",children:t})]})}function eei({title:e}){return(0,ev.jsx)("h2",{className:"h-7 text-sm font-semibold tracking-normal",children:e})}function eea(){let[e,t]=ey.useState(""),[n,r]=ey.useState("all"),[i,a]=ey.useState({allow:!1,drop:!1,deny:!1}),[o,l]=ey.useState(1),s=ey.useMemo(()=>["allow","drop","deny"].filter(e=>i[e]),[i]),c=ey.useMemo(()=>[{id:"policyNumber",header:"策略 #",accessorKey:"policyNumber",align:"right",width:84},{id:"name",header:"名称",accessorKey:"name",width:180,className:"font-medium"},{id:"sourceZone",header:"源区域",accessorKey:"sourceZone",width:112,cell:({row:e})=>(0,ev.jsx)(ees,{zone:e.sourceZone})},{id:"sourceIPs",header:"源 IP",accessorKey:"sourceIPs",width:250,cell:({row:e})=>(0,ev.jsx)(eel,{items:e.sourceIPs,variant:"outline"}),copyValue:({row:e})=>e.sourceIPs.join(", ")},{id:"destinationZone",header:"目标区域",accessorKey:"destinationZone",width:112,cell:({row:e})=>(0,ev.jsx)(ees,{zone:e.destinationZone})},{id:"destinationIPs",header:"目标 IP",accessorKey:"destinationIPs",width:250,cell:({row:e})=>(0,ev.jsx)(eel,{items:e.destinationIPs,variant:"outline"}),copyValue:({row:e})=>e.destinationIPs.join(", ")},{id:"tags",header:"标签",accessorKey:"tags",width:220,cell:({row:e})=>(0,ev.jsx)(eel,{items:e.tags,variant:"secondary"}),copyValue:({row:e})=>e.tags.join(", ")},{id:"action",header:"动作",accessorKey:"action",width:96,cell:({row:e})=>(0,ev.jsx)(eec,{action:e.action})}],[]),d=ey.useMemo(()=>{let t=e.trim().toLowerCase();return Q0.filter(e=>{let r=0===t.length||e.name.toLowerCase().includes(t)||e.description.toLowerCase().includes(t)||e.sourceIPs.some(e=>e.toLowerCase().includes(t))||e.destinationIPs.some(e=>e.toLowerCase().includes(t)),a="all"===n||e.tags.includes(n),o=!(i.allow||i.drop||i.deny)||i.allow&&"allow"===e.action||i.drop&&"drop"===e.action||i.deny&&"deny"===e.action;return r&&a&&o})},[i,e,n]),u=Math.max(1,Math.ceil(d.length/8)),f=Math.min(o,u),h=d.slice((f-1)*8,8*f);return ey.useEffect(()=>{l(1)},[i,e,n]),(0,ev.jsxs)("div",{className:"flex h-full min-h-0 flex-col p-3",children:[(0,ev.jsxs)("div",{className:"mb-3 flex shrink-0 items-center justify-between gap-3",children:[(0,ev.jsx)(eei,{title:"防火墙策略"}),(0,ev.jsxs)(tY,{size:"sm",children:[(0,ev.jsx)(sQ,{className:"size-4"}),"新增策略"]})]}),(0,ev.jsxs)("div",{className:"mb-3 grid shrink-0 grid-cols-1 items-end gap-3 sm:grid-cols-[minmax(12rem,1fr)_10rem_auto]",children:[(0,ev.jsxs)("label",{className:"grid gap-1",children:[(0,ev.jsx)("span",{className:"ui-text-kbd text-muted-foreground",children:"搜索"}),(0,ev.jsxs)("span",{className:"relative",children:[(0,ev.jsx)(cS,{className:"pointer-events-none absolute top-1/2 left-2.5 size-4 -translate-y-1/2 text-muted-foreground"}),(0,ev.jsx)(tX,{value:e,onChange:e=>t(e.target.value),placeholder:"搜索策略...",className:"pl-8"})]})]}),(0,ev.jsxs)("label",{className:"grid gap-1",children:[(0,ev.jsx)("span",{className:"ui-text-kbd text-muted-foreground",children:"标签"}),(0,ev.jsxs)(vA,{value:n,onValueChange:r,children:[(0,ev.jsx)(xd,{className:"w-full",children:(0,ev.jsx)(vT,{placeholder:"全部标签"})}),(0,ev.jsxs)(xh,{children:[(0,ev.jsx)(xp,{value:"all",children:"全部标签"}),Q1.map(e=>(0,ev.jsx)(xp,{value:e,children:e},e))]})]})]}),(0,ev.jsxs)("div",{className:"grid gap-1",children:[(0,ev.jsx)("span",{className:"ui-text-kbd text-muted-foreground",children:"动作"}),(0,ev.jsxs)(b3,{type:"multiple",variant:"outline",value:s,onValueChange:function(e){e.includes("clear")?(t(""),r("all"),a({allow:!1,drop:!1,deny:!1}),l(1)):a({allow:e.includes("allow"),drop:e.includes("drop"),deny:e.includes("deny")})},children:[(0,ev.jsx)(b6,{value:"allow",children:"允许"}),(0,ev.jsx)(b6,{value:"drop",children:"丢弃"}),(0,ev.jsx)(b6,{value:"deny",children:"拒绝"}),(0,ev.jsx)(b6,{value:"clear",children:"全部"})]})]})]}),(0,ev.jsx)(XH,{rows:h,columns:c,rowId:"policyNumber",showHeader:!1,showToolbar:!1,rowHeight:40,className:"min-h-0 flex-1 rounded-lg shadow-none",labels:{noRows:"没有匹配的策略。",selectAllRows:"选择当前页策略",selectRow:e=>`选择第 ${e+1} 条策略`,resizeColumn:"调整列宽",sortAsc:"升序",sortDesc:"降序",sortClear:"取消排序",copyCell:"复制单元格",copied:"已复制"}}),(0,ev.jsx)(eeo,{page:f,totalPages:u,onPageChange:function(e){l(Math.min(u,Math.max(1,e)))}})]})}function eeo({page:e,totalPages:t,onPageChange:n}){let r=ey.useMemo(()=>t<=3?Array.from({length:t},(e,t)=>t+1):e<=2?[1,2,3]:e>=t-1?[t-2,t-1,t]:[e-1,e,e+1],[e,t]),i=r[0]??1,a=r[r.length-1]??t;function o(e,t){e.preventDefault(),n(t)}return(0,ev.jsx)(Q8,{className:"mt-3 shrink-0",children:(0,ev.jsxs)(Q7,{className:"gap-1 sm:gap-2",children:[(0,ev.jsx)(Q9,{children:(0,ev.jsx)(eet,{href:"#",previousLabel:"上一页","aria-disabled":1===e,className:tK(1===e&&"pointer-events-none opacity-40"),onClick:t=>o(t,e-1)})}),i>1?(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(Q9,{children:(0,ev.jsx)(eee,{href:"#",size:"icon",onClick:e=>o(e,1),children:"1"})}),i>2?(0,ev.jsx)(Q9,{children:(0,ev.jsx)(eer,{moreLabel:"更多页"})}):null]}):null,r.map(t=>(0,ev.jsx)(Q9,{children:(0,ev.jsx)(eee,{href:"#",size:"icon",isActive:e===t,onClick:e=>o(e,t),children:t})},t)),a<t?(0,ev.jsxs)(ev.Fragment,{children:[a<t-1?(0,ev.jsx)(Q9,{children:(0,ev.jsx)(eer,{moreLabel:"更多页"})}):null,(0,ev.jsx)(Q9,{children:(0,ev.jsx)(eee,{href:"#",size:"icon",onClick:e=>o(e,t),children:t})})]}):null,(0,ev.jsx)(Q9,{children:(0,ev.jsx)(een,{href:"#",nextLabel:"下一页","aria-disabled":e===t,className:tK(e===t&&"pointer-events-none opacity-40"),onClick:t=>o(t,e+1)})})]})})}function eel({items:e,variant:t}){return(0,ev.jsx)("div",{className:"flex min-w-48 flex-wrap gap-1",children:e.map(e=>(0,ev.jsx)(cC,{variant:t,children:e},e))})}function ees({zone:e}){return(0,ev.jsx)(cC,{variant:"Trust"===e?"secondary":"outline",children:e})}function eec({action:e}){return(0,ev.jsx)(cC,{variant:"allow"===e?"default":"destructive",children:{allow:"允许",drop:"丢弃",deny:"拒绝"}[e]})}function eed({className:e,...t}){return(0,ev.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,ev.jsx)("table",{"data-slot":"table",className:tK("w-full caption-bottom text-sm",e),...t})})}function eeu({className:e,...t}){return(0,ev.jsx)("thead",{"data-slot":"table-header",className:tK("[&_tr]:border-b",e),...t})}function eef({className:e,...t}){return(0,ev.jsx)("tbody",{"data-slot":"table-body",className:tK("[&_tr:last-child]:border-0",e),...t})}function eeh({className:e,...t}){return(0,ev.jsx)("tr",{"data-slot":"table-row",className:tK("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted",e),...t})}function eep({className:e,...t}){return(0,ev.jsx)("th",{"data-slot":"table-head",className:tK("h-9 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-0.5",e),...t})}function eem({className:e,...t}){return(0,ev.jsx)("td",{"data-slot":"table-cell",className:tK("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-0.5",e),...t})}function eeg({title:e}){return(0,ev.jsx)("h2",{className:"h-7 text-sm font-semibold tracking-normal",children:e})}function eev({title:e,headers:t,rows:n}){return(0,ev.jsxs)("div",{className:"flex h-full min-h-0 flex-col p-3",children:[(0,ev.jsx)(eeg,{title:e}),(0,ev.jsx)("div",{className:"mt-3 min-h-0 flex-1 overflow-auto",children:(0,ev.jsxs)(eed,{children:[(0,ev.jsx)(eeu,{children:(0,ev.jsx)(eeh,{children:t.map(e=>(0,ev.jsx)(eep,{children:e},e))})}),(0,ev.jsx)(eef,{children:n.map(e=>(0,ev.jsx)(eeh,{children:e.map((e,t)=>(0,ev.jsx)(eem,{className:0===t?"font-medium":"text-muted-foreground",children:e},`${e}-${t}`))},e.join("-")))})]})})]})}function eex(){return(0,ev.jsxs)("div",{className:"grid h-full min-h-0 content-start gap-3 p-3",children:[(0,ev.jsx)(eeg,{title:"策略申请"}),(0,ev.jsxs)("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2",children:[(0,ev.jsx)(tX,{placeholder:"策略名称"}),(0,ev.jsx)(tX,{placeholder:"负责人"}),(0,ev.jsx)(tX,{placeholder:"源 CIDR"}),(0,ev.jsx)(tX,{placeholder:"目标 CIDR"})]}),(0,ev.jsx)("textarea",{placeholder:"用途",className:"min-h-32 resize-none rounded-lg border border-input bg-transparent px-2.5 py-2 text-sm outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50"}),(0,ev.jsx)("div",{children:(0,ev.jsxs)(tY,{size:"sm",children:[(0,ev.jsx)(sQ,{className:"size-4"}),"提交申请"]})})]})}function eey(){return(0,ev.jsxs)(q0,{defaultValue:"policies",className:"vtl-firewall-workspace flex h-full min-h-0 flex-col",children:[(0,ev.jsx)("div",{className:"shrink-0 overflow-x-auto px-3 pt-3 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:(0,ev.jsxs)(q9,{className:"h-8 w-max min-w-full",children:[(0,ev.jsx)(Ke,{value:"policies",children:"防火墙策略"}),(0,ev.jsx)(Ke,{value:"ip-addresses",children:"IP 地址"}),(0,ev.jsx)(Ke,{value:"renewals",children:"续期"}),(0,ev.jsx)(Ke,{value:"policy-request",children:"策略申请"}),(0,ev.jsx)(Ke,{value:"user-settings",children:"用户设置"})]})}),(0,ev.jsx)(Kt,{value:"policies",className:"mt-3 min-h-0 flex-1 border-t",children:(0,ev.jsx)(eea,{})}),(0,ev.jsx)(Kt,{value:"ip-addresses",className:"mt-3 min-h-0 flex-1 border-t",children:(0,ev.jsx)(eev,{title:"IP 地址",headers:["地址","名称","区域","策略"],rows:Q2})}),(0,ev.jsx)(Kt,{value:"renewals",className:"mt-3 min-h-0 flex-1 border-t",children:(0,ev.jsx)(eev,{title:"续期",headers:["策略","续期时间","负责人"],rows:Q5})}),(0,ev.jsx)(Kt,{value:"policy-request",className:"mt-3 min-h-0 flex-1 border-t",children:(0,ev.jsx)(eex,{})}),(0,ev.jsx)(Kt,{value:"user-settings",className:"mt-3 min-h-0 flex-1 border-t",children:(0,ev.jsx)(eev,{title:"用户设置",headers:["设置","值"],rows:[["默认区域","Trust"],["审核提醒","14 天"],["申请审批","安全负责人"],["策略导出","已开启"]]})})]})}function eeb(e){return e.map(e=>{var t;return{id:e.id,name:e.name,path:e.path,kind:"folder"===(t=e.kind)?"folder":"image"===t?"image":"archive"===t?"archive":"text"===t?"text":"code"===t?"code":"executable"===t?"config":"unknown",hasChildren:"folder"===e.kind,readonly:e.readonly,disabled:e.disabled}})}async function eew(e,t){let n=t.machineId||"local";return eeb((await ww(n,e.path)).items)}function eej({className:e,onOpenFile:t}){let[n,r]=ey.useState([]),[i,a]=ey.useState(!1),[o,l]=ey.useState(0),s=ey.useCallback(async()=>{a(!0);try{let e=await wb();r(e.roots.map(e=>({id:e.id,machineId:e.machineId,name:e.name,path:e.path,platform:e.platform,children:eeb(e.children)}))),l(e=>e+1)}catch{r([]),l(e=>e+1)}finally{a(!1)}},[]);return ey.useEffect(()=>{s()},[s]),ey.useEffect(()=>{function e(){s()}return window.addEventListener("vantaloom:file-system-changed",e),()=>window.removeEventListener("vantaloom:file-system-changed",e)},[s]),(0,ev.jsx)(G9,{className:e,compact:!0,openFilesOnSingleClick:!1,allowCreateFile:!1,allowCreateFolder:!1,allowRename:!1,allowDelete:!1,allowDragAndDrop:!1,allowBoxSelect:!1,defaultRoots:n,defaultExpandedIds:n.map(e=>e.id),loadingIds:i?n.map(e=>e.id):[],labels:{title:"Explorer",refresh:"刷新",collapseAll:"折叠",empty:"没有文件",noResults:"没有匹配文件",loading:"读取中..."},onLoadChildren:eew,onOpenNode:(e,n)=>{"folder"!==e.kind&&t?.({machineId:n.machineId||"local",path:e.path})},onRefresh:()=>{s()}},o)}function eek({open:e,onOpenChange:t,onSelectFile:n}){return(0,ev.jsx)(px,{open:e,onOpenChange:t,children:(0,ev.jsxs)(md,{className:"h-[min(42rem,calc(100svh-2rem))] max-w-2xl gap-0 overflow-hidden p-0",children:[(0,ev.jsx)(mf,{className:"sr-only",children:"选择文件"}),(0,ev.jsx)(mh,{className:"sr-only",children:"选择本机可访问文件。"}),(0,ev.jsx)(eej,{className:"size-full max-w-none rounded-none border-0",onOpenFile:e=>{n(e),t(!1)}})]})})}let eeS=eS("shield-off",[["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71",key:"1jlk70"}],["path",{d:"M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264",key:"18rp1v"}]]);function eeN({open:e,placement:t="viewport",movePermissionGranted:n,onOpenChange:r,onAdd:i,onMovePermissionGrantedChange:a}){let o=[{key:"move-permission",label:n?"取消放行权限":"放行权限",icon:n?(0,ev.jsx)(Ku,{className:"size-4"}):(0,ev.jsx)(eeS,{className:"size-4"}),pressed:n,onClick:()=>a(!n)},{key:"add",label:"新建文件窗口",icon:(0,ev.jsx)(sQ,{className:"size-4"}),pressed:void 0,onClick:i}];return(0,ev.jsx)("div",{className:tK("right-5 z-50","viewport"===t?"fixed bottom-5 max-md:bottom-20":"absolute bottom-5"),children:(0,ev.jsxs)("div",{className:"relative size-8",children:[o.map((t,n)=>(0,ev.jsx)(tY,{type:"button",variant:"outline",size:"icon-sm","aria-label":t.label,"aria-pressed":t.pressed,title:t.label,onClick:t.onClick,className:tK("absolute inset-0 rounded-full bg-background/95 shadow-md backdrop-blur transition-[opacity,transform] duration-150 ease-out",e?"pointer-events-auto opacity-100":"pointer-events-none translate-y-1 opacity-0",t.pressed&&"border-foreground bg-foreground text-background hover:bg-foreground/90 hover:text-background"),style:{transform:e?`translateY(-${(n+1)*42}px)`:void 0},children:t.icon},t.key)),(0,ev.jsx)(tY,{type:"button",variant:"outline",size:"icon-sm","aria-label":"文件窗口操作","aria-expanded":e,onClick:()=>r(!e),className:"absolute inset-0 rounded-full bg-background/95 shadow-md backdrop-blur",children:(0,ev.jsx)(sZ,{className:tK("size-4 transition-transform",e&&"rotate-90")})})]})})}let eeC=[];function eeM(e,t){return`${e} / ${t.replace(/\\/g," / ").replace(/\//g," / ")}`}function eeE(e,t){for(let n of e){if(n.id===t)return n;let e=n.children?eeE(n.children,t):void 0;if(e)return e}}function eeO(e,t){return e.replace(/\\/g,"/").toLowerCase()===t.replace(/\\/g,"/").toLowerCase()}function eeP(e,t){let n=e.replace(/\\/g,"/").replace(/\/+/g,"/");return"windows"===t?n.toLowerCase():n}function eez(e){return e.map(e=>({...e,children:e.children?eez(e.children):void 0}))}let eeA=eS("move-right",[["path",{d:"M18 8L22 12L18 16",key:"1r0oui"}],["path",{d:"M2 12H22",key:"1m8cig"}]]),eeI=eS("octagon-alert",[["path",{d:"M12 16h.01",key:"1drbdi"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M15.312 2a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z",key:"1fd625"}]]),ee_=eS("clipboard",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}]]),eeD={title:"Clipboard",empty:"No clips",dragHandle:"Drag clip"};function eeT({items:e,expanded:t,defaultExpanded:n=!1,expansionDirection:r="down-left",title:i,labels:a,maxCollapsedItems:o=10,maxExpandedHeight:l=360,acceptExternalDrops:s=!1,removeOnExternalDrop:c=!1,className:d,onExpandedChange:u,onItemDragStart:f,onItemDragEnd:h,onItemDuplicate:p,onItemsRemove:m,onItemsReorder:g,onExternalDrop:v,onMouseEnter:x,onMouseLeave:y,...b}){let w={...eeD,...a},[j,k]=ey.useState(n),[S,N]=ey.useState(),[C,M]=ey.useState(),[E,O]=ey.useState(n),[P,z]=ey.useState(),[A,I]=ey.useState({canScrollDown:!1,canScrollUp:!1}),[_,D]=ey.useState(!1),[T,R]=ey.useState(!1),L=ey.useRef(0),$=ey.useRef(void 0),F=ey.useRef(!1),B=ey.useRef(null),V=ey.useRef(null),H=void 0!==t,W=(H?t:j)||void 0!==S,U=Math.min(o,10),q=W?e:e.slice(0,U),K=E?C:void 0,G=44*q.length+18,Y=Math.min(G,l),X=W&&G>Y,Z=0===e.length?"h-24":W?`${Y}px`:"h-28",J=W&&X?14:0;ey.useEffect(()=>{if(!W){O(!1),I({canScrollDown:!1,canScrollUp:!1});return}O(!1),window.requestAnimationFrame(()=>{V.current&&(V.current.scrollTop=0)}),I({canScrollUp:!1,canScrollDown:G>Y});let e=window.setTimeout(()=>{O(!0)},260);return()=>window.clearTimeout(e)},[G,Y,W]),ey.useEffect(()=>()=>{void 0!==$.current&&window.clearTimeout($.current)},[]);let Q=ey.useCallback(e=>{H||k(e),u?.(e)},[H,u]);function ee(e,t=0){let n=e.currentTarget.getBoundingClientRect();return e.clientX>=n.left-t&&e.clientX<=n.right+t&&e.clientY>=n.top-t&&e.clientY<=n.bottom+t}function et(e){if(!W||!V.current)return 0;let t=Array.from(V.current.querySelectorAll('[data-slot="clipboard-stack-card"]'));if(0===t.length)return 0;for(let[n,r]of t.entries()){let t=r.getBoundingClientRect();if(e.clientY<t.top+t.height/2)return n}return t.length}function en(e){return void 0!==S||Array.from(e.dataTransfer.types).includes("application/vnd.vantaloom.clip-id")}return ey.useEffect(()=>{if(0===e.length||W)return;let t=window.requestAnimationFrame(()=>{B.current?.matches(":hover")&&(void 0!==$.current&&(window.clearTimeout($.current),$.current=void 0),D(!1),Q(!0))});return()=>window.cancelAnimationFrame(t)},[e.length,Q,W]),ey.useEffect(()=>{if(!W||!X||!K||!V.current)return;let e=q.findIndex(e=>e.id===K);if(e<0)return;let t=V.current,n=44*e-8,r=44*e+(q[e]?.expandedHeight??220)+12,i=t.scrollTop,a=i+t.clientHeight;n<i?t.scrollTo({top:Math.max(0,n),behavior:"smooth"}):r>a&&t.scrollTo({top:r-t.clientHeight,behavior:"smooth"})},[K,X,q,W]),(0,ev.jsxs)("div",{ref:B,"data-slot":"clipboard-stack","data-expanded":W,"data-closing":_,"data-external-dragging":T,"data-expansion-direction":r,className:tK("group/clipboard relative w-80 max-w-full overflow-visible py-2",d),onMouseEnter:function(e){x?.(e),ee(e)&&(void 0!==$.current&&(window.clearTimeout($.current),$.current=void 0),D(!1),Q(!0))},onMouseMove:function(e){if(!W){ee(e,12)&&(void 0!==$.current&&(window.clearTimeout($.current),$.current=void 0),D(!1),Q(!0));return}!W||S||ee(e,12)||(M(void 0),z(void 0),Q(!1),D(!0),void 0!==$.current&&window.clearTimeout($.current),$.current=window.setTimeout(()=>{D(!1),$.current=void 0},320))},onMouseLeave:function(e){y?.(e),S||(M(void 0),z(void 0),D(!0),Q(!1),void 0!==$.current&&window.clearTimeout($.current),$.current=window.setTimeout(()=>{D(!1),$.current=void 0},320))},onDragEnter:function(e){!s||en(e)||(L.current+=1,R(!0),D(!1))},onDragLeave:function(e){!s||en(e)||(L.current=Math.max(0,L.current-1),0===L.current&&(R(!1),z(void 0)))},onDragOver:function(e){!s||en(e)||(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="copy",R(!0),W?z(et(e)):z(0))},onDrop:function(t){if(!s||en(t))return;t.preventDefault(),t.stopPropagation();let n=P??et(t);L.current=0,R(!1),z(void 0),v?.({insertIndex:n,items:e,nativeEvent:t})},...b,children:[(0,ev.jsxs)("div",{"data-slot":"clipboard-stack-header",className:tK("mb-2 flex h-8 items-center gap-2 px-1 text-sm font-medium text-foreground transition-[opacity,transform] duration-200","down-left"===r&&"justify-end",W?"opacity-100":"translate-y-1 opacity-0"),children:[(0,ev.jsx)("span",{className:"inline-flex size-6 items-center justify-center rounded-lg border bg-background text-muted-foreground",children:(0,ev.jsx)(ee_,{className:"size-3.5"})}),(0,ev.jsx)("span",{children:i??w.title}),(0,ev.jsx)("span",{className:"ml-auto tabular-nums text-muted-foreground",children:e.length})]}),(0,ev.jsxs)("div",{"data-slot":"clipboard-stack-list",className:tK("relative transition-[height] duration-300 ease-[cubic-bezier(.2,.8,.2,1)]"),style:{height:Z},children:[e.length>0&&"down-left"===r?(0,ev.jsx)("span",{"data-slot":"clipboard-stack-pivot","aria-hidden":"true",className:tK("pointer-events-none absolute top-3 right-[34px] z-50 size-2.5 rounded-full bg-foreground shadow-sm transition-[opacity,transform] duration-200 dark:bg-background",W?"scale-75 opacity-0":"opacity-100")}):null,s&&T?(0,ev.jsxs)("span",{"data-slot":"clipboard-stack-external-ghost","aria-hidden":"true",className:tK("pointer-events-none absolute right-0 z-[70] h-14 w-[88%] rounded-xl border bg-background shadow-md shadow-black/10","clipboard-stack-external-ghost"),children:[(0,ev.jsx)("span",{className:"absolute top-3 right-[34px] size-2 rounded-full bg-foreground dark:bg-background"}),(0,ev.jsx)("span",{className:"absolute top-4 left-3 h-2 w-24 rounded-full bg-foreground/18"}),(0,ev.jsx)("span",{className:"absolute top-8 left-3 h-1.5 w-14 rounded-full bg-foreground/10"})]}):null,0===e.length?(0,ev.jsx)("div",{className:"flex h-24 items-center justify-center rounded-xl border border-dashed bg-muted/35 text-sm text-muted-foreground",children:w.empty}):(0,ev.jsxs)("div",{"data-slot":"clipboard-stack-scroll-frame",className:"relative h-full",children:[(0,ev.jsx)("div",{"data-slot":"clipboard-stack-scroll",ref:V,className:tK("relative h-full overflow-x-visible",W&&X?"clipboard-stack-scrollbar-hidden overflow-y-auto pt-2 pr-1 pb-3":"overflow-visible"),onScroll:e=>{let t=e.currentTarget;I({canScrollUp:t.scrollTop>1,canScrollDown:t.scrollTop+t.clientHeight<t.scrollHeight-1})},onDragOver:function(e){W&&S&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="move")},onDrop:function(t){if(!W||!S||void 0===P)return;t.preventDefault(),t.stopPropagation(),F.current=!0;let n=e.findIndex(e=>e.id===S),r=e[n];if(n<0||!r)return;let i=e.filter(e=>e.id!==S),a=Math.max(0,Math.min(P>n?P-1:P,i.length));i.splice(a,0,r),z(void 0),M(void 0),a!==n&&g?.(i,{item:r,fromIndex:n,toIndex:a,items:i})},children:(0,ev.jsxs)("div",{"data-slot":"clipboard-stack-scroll-content",className:"relative",style:{width:W&&X?`calc(100% - ${J}px)`:void 0,marginLeft:W&&X?`${J}px`:void 0,height:W&&X?G+28:W?G:"100%"},children:[void 0!==P?(0,ev.jsxs)("span",{"data-slot":"clipboard-stack-insert-line","aria-hidden":"true",className:"pointer-events-none absolute right-0 left-0 z-[80] flex items-center",style:{top:44*P-2},children:[(0,ev.jsx)("span",{className:"h-px flex-1 bg-foreground/70"}),(0,ev.jsx)("span",{className:"mx-1 size-1.5 rounded-full bg-foreground"}),(0,ev.jsx)("span",{className:"h-px flex-1 bg-foreground/70"})]}):null,q.map((t,n)=>(0,ev.jsx)(eeR,{item:t,index:n,count:q.length,expanded:W,active:W&&t.id===K,top:W?44*n:void 0,expansionDirection:r,labels:w,onHover:()=>M(t.id),onDuplicate:()=>{let n=e.findIndex(e=>e.id===t.id);n<0||p?.(e,{item:t,index:n,items:e})},onDragOver:e=>{if(W&&S&&S!==t.id){let t=e.currentTarget.getBoundingClientRect();z(e.clientY<t.top+t.height/2?n:n+1)}},onDragStart:e=>{N(e.item.id),M(void 0),F.current=!1,f?.(e)},onDragEnd:t=>{let n=t.nativeEvent.dataTransfer.dropEffect,r=t.item.id,i=e.findIndex(e=>e.id===r),a=c&&!F.current&&"none"!==n&&i>=0;if(N(void 0),z(void 0),M(void 0),F.current?F.current=!1:Q(!1),a){let n=e.filter(e=>e.id!==r);m?.(n,{item:t.item,index:i,items:n})}h?.(t)}},t.id))]})}),X&&A.canScrollUp?(0,ev.jsx)("span",{"data-slot":"clipboard-stack-scroll-mask-top","aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 top-0 z-[90] h-8 bg-gradient-to-b from-background to-transparent"}):null,X&&A.canScrollDown?(0,ev.jsx)("span",{"data-slot":"clipboard-stack-scroll-mask-bottom","aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 bottom-0 z-[90] h-8 bg-gradient-to-t from-background to-transparent"}):null]})]})]})}function eeR({item:e,index:t,count:n,expanded:r,active:i,top:a,expansionDirection:o,labels:l,onHover:s,onDuplicate:c,onDragOver:d,onDragStart:u,onDragEnd:f}){let h=Math.min(t,9),p="down-left"===o?-(4.5*h):[-4,2,-1,4][h]??0,m=r?i?n+20:n-t:n+t;return(0,ev.jsx)("article",{"data-slot":"clipboard-stack-card",draggable:!e.disabled,"aria-disabled":e.disabled,className:tK("absolute right-0 min-h-16 w-full cursor-grab select-none rounded-xl border bg-background p-2.5 text-foreground shadow-sm shadow-black/5 outline-none transition-[top,transform,opacity,box-shadow,border-color] duration-300 ease-[cubic-bezier(.2,.8,.2,1)] active:cursor-grabbing","hover:border-foreground/35 hover:shadow-md hover:shadow-black/10 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/40",r&&"min-h-0 overflow-hidden py-2 transition-[top,transform,max-height,opacity,box-shadow,border-color] duration-300",r&&!i&&"max-h-11",e.disabled&&"cursor-not-allowed opacity-50"),style:{top:r?a??44*t:"down-left"===o?0:9*h,zIndex:m,maxHeight:r&&i?e.expandedHeight??220:void 0,transformOrigin:"down-left"===o?"calc(100% - 34px) 14px":"100% 0",transform:r?i?"translate3d(-10px, -6px, 0) rotate(0deg)":"translate3d(0, 0, 0) rotate(0deg)":`translate3d(${"down-left"===o?0:4*h}px, 0, 0) rotate(${p}deg)`},tabIndex:e.disabled?-1:0,onMouseDown:function(t){1!==t.button||e.disabled||t.preventDefault()},onMouseEnter:s,onFocus:s,onAuxClick:function(t){1!==t.button||e.disabled||(t.preventDefault(),c?.())},onDragOver:d,onDragStart:function(t){for(let[n,r]of(t.dataTransfer.effectAllowed="copyMove",t.dataTransfer.setData("text/plain",e.title),t.dataTransfer.setData("application/vnd.vantaloom.clip-id",e.id),Object.entries(e.dragData??{})))t.dataTransfer.setData(n,r);u?.({item:e,nativeEvent:t})},onDragEnd:function(t){f?.({item:e,nativeEvent:t})},children:(0,ev.jsxs)("div",{className:"flex min-w-0 items-start gap-2",children:[(0,ev.jsx)("div",{"data-slot":"clipboard-stack-card-media",className:"flex size-8 shrink-0 items-center justify-center rounded-lg border bg-muted text-muted-foreground",children:e.icon??(0,ev.jsx)(ee_,{className:"size-4"})}),(0,ev.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,ev.jsxs)("div",{className:"flex min-w-0 items-center gap-2",children:[(0,ev.jsx)("p",{className:"truncate text-sm font-medium",children:e.title}),e.meta?(0,ev.jsx)("span",{className:"ml-auto shrink-0 text-xs tabular-nums text-muted-foreground",children:e.meta}):null]}),e.description?(0,ev.jsx)("p",{className:tK("mt-0.5 text-xs leading-5 text-muted-foreground transition-[max-height,opacity,transform] duration-200",i?"max-h-40 translate-y-0 opacity-100":"max-h-0 -translate-y-1 overflow-hidden opacity-0"),children:e.description}):null,e.content?(0,ev.jsx)("div",{className:tK("mt-2 text-xs text-muted-foreground transition-[max-height,opacity,transform] duration-200",i?"max-h-80 translate-y-0 opacity-100":"max-h-0 -translate-y-1 overflow-hidden opacity-0"),children:e.content}):null]}),(0,ev.jsx)("span",{"aria-label":l.dragHandle,className:"mt-1 inline-flex size-6 shrink-0 items-center justify-center rounded-md text-muted-foreground",children:(0,ev.jsx)(UN,{className:"size-3.5"})})]})})}function eeL({transfers:e}){let t=e.slice(0,10);if(0===t.length)return null;let n=t.map(e=>{var t,n,r;let i,a,o;return{id:e.id,title:(i="copy"===(t=e).mode?"复制":"移动",a=t.sources.length,o=t.sources[0],`${i} ${a>1?`${a} 项`:eeF(o?.path??"")}`),description:(n=e).message?n.message:`${n.sources[0]?.machineId??"local"} -> ${n.target.machineId}`,meta:function(e){switch(e.status){case"completed":return"完成";case"failed":return"失败";case"queued":return"排队";default:return`${Math.round(e.progress?.percent??0)}%`}}(e),icon:"completed"===(r=e).status?(0,ev.jsx)(ez,{className:"size-4"}):"failed"===r.status?(0,ev.jsx)(eeI,{className:"size-4"}):"running"===r.status?(0,ev.jsx)(eO,{className:"size-4 animate-spin"}):"copy"===r.mode?(0,ev.jsx)(sU,{className:"size-4"}):(0,ev.jsx)(eeA,{className:"size-4"}),expandedHeight:132,content:(0,ev.jsx)(ee$,{transfer:e})}});return(0,ev.jsx)("div",{className:"pointer-events-auto fixed top-4 right-4 z-50 w-80 max-w-[calc(100vw-2rem)] max-md:left-4 max-md:right-auto max-md:w-auto max-md:max-w-[16rem]",children:(0,ev.jsx)(eeT,{items:n,title:"传输",labels:{empty:"暂无传输",dragHandle:"传输任务"},expansionDirection:"down-left",maxExpandedHeight:420})})}function ee$({transfer:e}){let t=Math.max(0,Math.min(100,e.progress?.percent??0));return(0,ev.jsxs)("div",{className:"grid gap-2",children:[(0,ev.jsx)("div",{className:"h-1.5 overflow-hidden rounded-full bg-border",children:(0,ev.jsx)("div",{className:"h-full rounded-full bg-foreground transition-[width] duration-300",style:{width:`${t}%`}})}),(0,ev.jsxs)("div",{className:"grid gap-1 tabular-nums",children:[(0,ev.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-2",children:[(0,ev.jsx)("span",{className:"truncate",children:eeF(e.target.path)}),(0,ev.jsxs)("span",{children:[Math.round(t),"%"]})]}),(0,ev.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-2 text-muted-foreground",children:[(0,ev.jsxs)("span",{className:"truncate",children:[eeB(e.progress.bytesDone)," /"," ",eeB(e.progress.bytesTotal)]}),(0,ev.jsxs)("span",{children:[e.progress.entriesDone,"/",e.progress.entriesTotal]})]}),e.progress.currentPath?(0,ev.jsx)("div",{className:"truncate text-muted-foreground",children:eeF(e.progress.currentPath)}):null]})]})}function eeF(e){return e.split(/[\\/]+/).filter(Boolean).at(-1)??e}function eeB(e){if(!e)return"0 B";let t=["B","KB","MB","GB","TB"],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r+=1;return`${n>=10||0===r?Math.round(n):n.toFixed(1)} ${t[r]}`}let eeV=eS("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);function eeH({windowLayout:e,roots:t,active:n,zIndex:r,boardSize:i,onActivate:a,onClose:o,onMinimize:l,onWindowChange:s,onNavigate:c,onRootsChange:d,onCreateFolder:u,onRenameItem:f,onDeleteItems:h,onMoveItems:p}){return(0,ev.jsxs)("section",{className:tK("absolute overflow-hidden rounded-xl border bg-card shadow-lg transition-[box-shadow,border-color] duration-150","vtl-file-manager-window",n&&"border-foreground shadow-xl"),style:{left:e.x,top:e.y,width:e.w,height:e.h,zIndex:r},onPointerDown:a,children:[(0,ev.jsxs)("div",{className:"grid h-9 cursor-grab grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 border-b bg-muted/35 px-2 active:cursor-grabbing",onPointerDown:function(t){t.preventDefault(),t.currentTarget.setPointerCapture(t.pointerId),a();let n=t.clientX,r=t.clientY;function i(t){let i=Math.max(0,e.x+t.clientX-n),a=Math.max(0,e.y+t.clientY-r);s({...e,x:i,y:a})}window.addEventListener("pointermove",i),window.addEventListener("pointerup",function e(){window.removeEventListener("pointermove",i),window.removeEventListener("pointerup",e)})},children:[(0,ev.jsxs)("div",{className:"flex items-center gap-1",children:[(0,ev.jsx)(tY,{type:"button",size:"icon-sm",variant:"ghost","aria-label":"关闭窗口",onPointerDown:e=>e.stopPropagation(),onClick:o,children:(0,ev.jsx)(ms,{})}),(0,ev.jsx)(tY,{type:"button",size:"icon-sm",variant:"ghost","aria-label":"缩小到剪切板",onPointerDown:e=>e.stopPropagation(),onClick:l,children:(0,ev.jsx)(eeV,{})})]}),(0,ev.jsx)("div",{className:"truncate text-center ui-text-control",children:e.title}),(0,ev.jsx)("div",{className:"w-14"})]}),(0,ev.jsx)(wc,{roots:t,variant:"full",currentRootId:e.rootId,currentPath:e.path,draggableItems:!0,onNavigate:c,onRootsChange:e=>d(e),onCreateFolder:u,onRenameItem:f,onDeleteItems:h,onItemDrop:({sourceRootId:e,sourceItemIds:t,targetRoot:n,target:r})=>p({sourceRootId:e,sourceItemIds:t,targetRoot:n,target:r}),labels:{title:"文件管理",search:"搜索文件",newFolder:"新建",upload:"上传",refresh:"刷新",sort:"排序",view:"视图"},className:"vtl-file-window-explorer min-h-0 rounded-none border-0 shadow-none",contentClassName:"min-h-0",style:{height:"calc(100% - 2.25rem)",minHeight:0}}),(0,ev.jsx)("button",{type:"button","aria-label":"调整窗口大小",className:"absolute right-0 bottom-0 size-5 cursor-nwse-resize rounded-tl-md border-t border-l bg-background/80",onPointerDown:function(t){t.preventDefault(),t.stopPropagation(),t.currentTarget.setPointerCapture(t.pointerId),a();let n=t.clientX,r=t.clientY;function o(t){let a=Math.max(420,Math.min(Math.max(420,i.width-e.x),e.w+t.clientX-n)),o=Math.max(320,e.h+t.clientY-r);s({...e,w:a,h:o})}window.addEventListener("pointermove",o),window.addEventListener("pointerup",function e(){window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",e)})}})]})}function eeW({clipboardItems:e=[],onClipboardItemsChange:t}){var n;return n=(0,ev.jsx)(eeU,{clipboardItems:e,onClipboardItemsChange:t,className:"min-h-[calc(100svh-5rem)] p-4 lg:p-6",minBoardHeight:820,actionsPlacement:"viewport"}),(0,ev.jsx)(ha,{children:n})}function eeU({clipboardItems:e=[],onClipboardItemsChange:t,className:n,minBoardHeight:r=520,actionsPlacement:i="container"}){let[a,o]=hl(),[l,s]=ey.useState([]),[c,d]=ey.useState(eeC),[u,f]=ey.useState(eeC[0]?.id),[h,p]=ey.useState([]),[m,g]=ey.useState(!1),[v,x]=ey.useState(!1),[y,b]=ey.useState(),w=ey.useRef(eeC.length),j=ey.useRef(!1),k=ey.useRef(new Set),S=ey.useCallback(async(e,t,n)=>{let r=await ww(e,n);s(n=>{var i;return i={...r,root:{...r.root,id:t,machineId:e}},n.map(e=>e.id!==i.root.id?e:eeO(e.path,i.path)?{...e,children:eez(i.items)}:{...e,children:function(e,t,n,r,i){let a=function(e,t,n){let r=eeP(e,n),i=eeP(t,n);if(r===i)return[];let a=r.endsWith("/")?r:`${r}/`;return i.startsWith(a)?i.slice(a.length).split("/").filter(Boolean):[]}(t,n,r);if(0===a.length)return eez(i);let o="windows"===r?"\\":"/";return function e(t,n,r){let l=a[r];if(!l)return eez(i);let s=n===o?`${o}${l}`:`${n.replace(/[\\/]+$/,"")}${o}${l}`,c=t.findIndex(e=>eeO(e.path,s)),d=t[c],u={...d??{id:`synthetic-${s}`,name:l,kind:"folder",path:s,children:[]},kind:"folder",children:e(d?.children??[],s,r+1)};if(c<0)return[...t,u];let f=[...t];return f[c]=u,f}(e,t,0)}(e.children,e.path,i.path,e.platform,i.items)})})},[]),N=ey.useCallback(async()=>{let e=eeG((await wE()).transfers);return p(e),e},[]),C=ey.useCallback(e=>{p(t=>eeG([e,...t.filter(t=>t.id!==e.id)]))},[]),M=ey.useCallback(e=>{wM({mode:"move",sources:e.sources.map(e=>({machineId:e.machineId,path:e.path})),target:{machineId:e.target.machineId,path:e.target.path}}).then(C).catch(()=>{})},[C]),E=ey.useCallback(()=>{for(let e of c)S(e.machineId,e.rootId,e.path)},[S,c]);function O(e,t){d(n=>n.map(n=>n.id===e?t(n):n))}function P(e){let t=l[0];if(!t&&!e?.rootId)return;w.current+=1;let n=`files-window-${w.current}`,r=a.current?.getBoundingClientRect(),i=r?.width??o.width,s=r?.height??o.height,c=e?.w??680,u=e?.h??460,h=Math.max(0,(i-c)/2),p=Math.max(0,(s-u)/2),m={id:n,title:e?.title??eeM(t?.name??"local",t?.path??""),machineId:e?.machineId??t?.machineId??"local",rootId:e?.rootId??t?.id??"local",path:e?.path??t?.path??"",x:e?.x??h+12*w.current,y:e?.y??p+12*w.current,w:c,h:u};d(e=>[...e,m]),f(n),S(m.machineId,m.rootId,m.path)}ey.useEffect(()=>{let e=!0;return(async function(){let t=await wb();if(e&&(s(t.roots),!j.current&&t.roots[0])){j.current=!0;let e=function(e,t=0){return{id:`files-${e.id.replace(/[^a-z0-9_-]/gi,"-")}-${t}`,title:eeM(e.name,e.path),machineId:e.machineId,rootId:e.id,path:e.path,x:28+24*t,y:28+24*t,w:720,h:480}}(t.roots[0]);d([e]),f(e.id),S(e.machineId,e.rootId,e.path)}})().catch(()=>{}),N().catch(()=>{}),()=>{e=!1}},[S,N]),ey.useEffect(()=>{if(!h.some(e=>"pending"===e.status||"running"===e.status||"queued"===e.status))return;let e=window.setInterval(async()=>{let e=(await N().catch(()=>h)).filter(e=>"completed"===e.status&&!k.current.has(e.id));if(e.length>0){for(let t of e)k.current.add(t.id);E()}},1e3);return()=>window.clearInterval(e)},[E,N,h]);let z=cy(),A=c.find(e=>e.id===u);function I(e){return{onNavigate:({rootId:t,path:n})=>{let r=l.find(e=>e.id===t),i=r?.machineId??e.machineId;O(e.id,e=>({...e,machineId:i,rootId:t,path:n,title:eeM(r?.name??i,n)})),S(i,t,n)},onRootsChange:s,onCreateFolder:(t,n)=>{wS({machineId:e.machineId,path:t.path,name:n}).then(()=>S(e.machineId,e.rootId,e.path)).catch(()=>{})},onRenameItem:(t,n)=>{wN({machineId:e.machineId,path:t.path,name:n}).then(()=>S(e.machineId,e.rootId,e.path)).catch(()=>{})},onDeleteItems:t=>{wC({machineId:e.machineId,paths:t.map(e=>e.path)}).then(()=>S(e.machineId,e.rootId,e.path)).catch(()=>{})},onMoveItems:({sourceRootId:e,sourceItemIds:t,targetRoot:n,target:r})=>{let i=l.find(t=>t.id===e);if(!i)return;let a=t.flatMap(e=>{let t=eeE(i.children,e);return t?[{machineId:i.machineId,path:t.path,name:t.name}]:[]});if(0===a.length)return;let o={sources:a,target:{machineId:n.machineId,path:r.path,name:r.name}};v?M(o):b(o)}}}return z?(0,ev.jsxs)("div",{className:tK("flex h-full min-h-0 w-full flex-col",n),children:[c.length>1?(0,ev.jsx)("div",{className:"flex shrink-0 items-center gap-1 overflow-x-auto border-b px-2 py-1.5 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:c.map(e=>(0,ev.jsx)("button",{type:"button",className:tK("shrink-0 rounded-md px-2.5 py-1 text-xs transition-colors",e.id===u?"bg-foreground text-background":"text-muted-foreground hover:bg-muted"),onClick:()=>f(e.id),children:e.title},e.id))}):null,(0,ev.jsx)("div",{className:"min-h-0 flex-1",children:A?(0,ev.jsx)(eeq,{windowLayout:A,roots:l,...I(A)}):(0,ev.jsx)("div",{className:"grid h-full place-items-center text-sm text-muted-foreground",children:"暂无打开的文件窗口"})}),(0,ev.jsx)(eeL,{transfers:h}),(0,ev.jsx)(eeN,{open:m,placement:i,movePermissionGranted:v,onOpenChange:g,onMovePermissionGrantedChange:x,onAdd:()=>{g(!1),P()}}),(0,ev.jsx)(eeK,{move:y,onCancel:()=>b(void 0),onConfirm:e=>{b(void 0),M(e)}})]}):(0,ev.jsxs)("div",{ref:a,className:tK("relative h-full min-h-0 w-full overflow-hidden rounded-[inherit]",n),onDragOver:e=>{Array.from(e.dataTransfer.types).includes("application/vnd.vantaloom.file-window")&&(e.preventDefault(),e.dataTransfer.dropEffect="move")},onDrop:function(e){let t=e.dataTransfer.getData("application/vnd.vantaloom.file-window");if(t)try{let n=JSON.parse(t),r=a.current?.getBoundingClientRect();e.preventDefault(),e.stopPropagation(),P({...n,x:r?e.clientX-r.left-160:n.x,y:r?e.clientY-r.top-24:n.y})}catch{return}},children:[(0,ev.jsx)("div",{className:"relative h-full min-h-0",style:{minHeight:Math.max(r,o.height-48)},children:c.map((n,r)=>(0,ev.jsx)(eeH,{windowLayout:n,roots:l,active:u===n.id,zIndex:20+r+20*(u===n.id),boardSize:o,onActivate:()=>f(n.id),onClose:()=>d(e=>e.filter(e=>e.id!==n.id)),onMinimize:()=>{t?.([{id:`clip-${n.id}`,title:n.title,description:"文件管理窗口",meta:`${Math.round(n.w)}x${Math.round(n.h)}`,payloads:{"application/vnd.vantaloom.file-window":{...n}},dragData:{"application/vnd.vantaloom.clip-kind":"file-window","application/vnd.vantaloom.file-window":JSON.stringify(n)}},...e.filter(e=>e.id!==`clip-${n.id}`)]),d(e=>e.filter(e=>e.id!==n.id))},onWindowChange:e=>O(n.id,()=>e),...I(n),onNavigate:({rootId:e,path:t})=>{let r=l.find(t=>t.id===e),i=r?.machineId??n.machineId;O(n.id,n=>({...n,machineId:i,rootId:e,path:t,title:eeM(r?.name??i,t)})),S(i,e,t)},onRootsChange:s,onCreateFolder:(e,t)=>{wS({machineId:n.machineId,path:e.path,name:t}).then(()=>S(n.machineId,n.rootId,n.path)).catch(()=>{})},onRenameItem:(e,t)=>{wN({machineId:n.machineId,path:e.path,name:t}).then(()=>S(n.machineId,n.rootId,n.path)).catch(()=>{})},onDeleteItems:e=>{wC({machineId:n.machineId,paths:e.map(e=>e.path)}).then(()=>S(n.machineId,n.rootId,n.path)).catch(()=>{})},onMoveItems:({sourceRootId:e,sourceItemIds:t,targetRoot:n,target:r})=>{let i=l.find(t=>t.id===e);if(!i)return;let a=t.flatMap(e=>{let t=eeE(i.children,e);return t?[{machineId:i.machineId,path:t.path,name:t.name}]:[]});if(0===a.length)return;let o={sources:a,target:{machineId:n.machineId,path:r.path,name:r.name}};v?M(o):b(o)}},n.id))}),(0,ev.jsx)(eeL,{transfers:h}),(0,ev.jsx)(eeN,{open:m,placement:i,movePermissionGranted:v,onOpenChange:g,onMovePermissionGrantedChange:x,onAdd:()=>{g(!1),P()}}),(0,ev.jsx)(eeK,{move:y,onCancel:()=>b(void 0),onConfirm:e=>{b(void 0),M(e)}})]})}function eeq({windowLayout:e,roots:t,onNavigate:n,onRootsChange:r,onCreateFolder:i,onRenameItem:a,onDeleteItems:o,onMoveItems:l}){return(0,ev.jsx)(wc,{roots:t,variant:"full",currentRootId:e.rootId,currentPath:e.path,onNavigate:n,onRootsChange:e=>r(e),onCreateFolder:i,onRenameItem:a,onDeleteItems:o,onItemDrop:({sourceRootId:e,sourceItemIds:t,targetRoot:n,target:r})=>l({sourceRootId:e,sourceItemIds:t,targetRoot:n,target:r}),labels:{title:"文件管理",search:"搜索文件",newFolder:"新建",upload:"上传",refresh:"刷新",sort:"排序",view:"视图"},className:"h-full min-h-0 rounded-none border-0 shadow-none",contentClassName:"min-h-0"})}function eeK({move:e,onCancel:t,onConfirm:n}){var r;let i=e?.sources??[],a=Math.max(0,i.length-4);return(0,ev.jsx)(gl,{open:void 0!==e,onOpenChange:e=>{e||t()},children:(0,ev.jsxs)(gN,{children:[(0,ev.jsxs)(gC,{children:[(0,ev.jsx)(gE,{children:"确认移动"}),(0,ev.jsx)(gO,{children:e?`将 ${1===(r=i).length?r[0]?eeY(r[0]):"0 项":`${r.length} 项`} 移动到 ${eeY(e.target)}`:""})]}),e?(0,ev.jsxs)("div",{className:"grid gap-2 rounded-lg border bg-muted/20 p-3 ui-text-body",children:[(0,ev.jsxs)("div",{className:"grid gap-1",children:[(0,ev.jsx)("span",{className:"text-muted-foreground ui-text-kbd",children:"移动内容"}),(0,ev.jsxs)("div",{className:"grid gap-1",children:[i.slice(0,4).map(e=>(0,ev.jsx)("span",{className:"truncate",children:eeY(e)},`${e.machineId}:${e.path}`)),a>0?(0,ev.jsxs)("span",{className:"text-muted-foreground",children:["另有 ",a," 项"]}):null]})]}),(0,ev.jsxs)("div",{className:"grid gap-1",children:[(0,ev.jsx)("span",{className:"text-muted-foreground ui-text-kbd",children:"目标位置"}),(0,ev.jsx)("span",{className:"truncate",children:eeY(e.target)})]})]}):null,(0,ev.jsxs)(gM,{children:[(0,ev.jsx)(gz,{children:"取消"}),(0,ev.jsx)(gP,{onClick:()=>{e&&n(e)},children:"确认移动"})]})]})})}function eeG(e){return e.slice(0,10)}function eeY(e){let t=e.path.replace(/\\/g,"/");return`${e.machineId} / ${e.name||t}`}function eeX({className:e}){return(0,ev.jsx)(eeU,{className:tK("h-full min-h-0 w-full rounded-[inherit] border-0 shadow-none",e),minBoardHeight:360,actionsPlacement:"container"})}var eeZ=["type"],eeJ=["dangerouslySetInnerHTML","ticks","scale"],eeQ=["id","scale"];function ee0(){return(ee0=Object.assign.bind()).apply(null,arguments)}function ee1(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ee2(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ee1(Object(n),!0).forEach(function(t){var r,i,a;r=e,i=t,a=n[t],(i=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(i))in r?Object.defineProperty(r,i,{value:a,enumerable:!0,configurable:!0,writable:!0}):r[i]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ee1(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function ee5(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n={};for(var r in e)if(({}).hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],-1===t.indexOf(n)&&({}).propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function ee4(e){var t=jU(),n=(0,ey.useRef)(null),r=N8(),{type:i}=e,a=ee5(e,eeZ),o=C2(r,"yAxis",i),l=(0,ey.useMemo)(()=>{if(null!=o)return ee2(ee2({},a),{},{type:o})},[o,a]);return(0,ey.useLayoutEffect)(()=>{null!=l&&(null===n.current?t(DL(l)):n.current!==l&&t(D$({prev:n.current,next:l})),n.current=l)},[l,t]),(0,ey.useLayoutEffect)(()=>()=>{n.current&&(t(DF(n.current)),n.current=null)},[t]),null}function ee3(e){var{yAxisId:t,className:n,width:r,label:i}=e,a=(0,ey.useRef)(null),o=(0,ey.useRef)(null),l=jY(NI),s=ND(),c=jU(),d="yAxis",u=jY(e=>_r(e,t)),f=jY(e=>_n(e,t)),h=jY(e=>_s(e,d,t,s)),p=jY(e=>AL(e,t));if((0,ey.useLayoutEffect)(()=>{if(!("auto"!==r||!u||Es(i)||(0,ey.isValidElement)(i))&&null!=p){var e=a.current;if(e){var n=e.getCalculatedWidth();Math.round(u.width)!==Math.round(n)&&c(DW({id:t,width:n}))}}},[h,u,c,i,t,r,p]),null==u||null==f||null==p)return null;var{dangerouslySetInnerHTML:m,ticks:g,scale:v}=e,x=ee5(e,eeJ),{id:y,scale:b}=p,w=ee5(p,eeQ);return ey.createElement($U,ee0({},x,w,{ref:a,labelRef:o,x:f.x,y:f.y,tickTextProps:"auto"===r?{width:void 0}:{width:r},width:u.width,height:u.height,className:eH("recharts-".concat(d," ").concat(d),n),viewBox:l,ticks:h,axisType:d,axisId:t}))}var ee6={allowDataOverflow:AR.allowDataOverflow,allowDecimals:AR.allowDecimals,allowDuplicatedCategory:AR.allowDuplicatedCategory,angle:AR.angle,axisLine:$$.axisLine,hide:!1,includeHidden:AR.includeHidden,interval:AR.interval,label:!1,minTickGap:AR.minTickGap,mirror:AR.mirror,orientation:AR.orientation,padding:AR.padding,reversed:AR.reversed,scale:AR.scale,tick:AR.tick,tickCount:AR.tickCount,tickLine:$$.tickLine,tickSize:$$.tickSize,type:AR.type,niceTicks:AR.niceTicks,width:AR.width,yAxisId:0},ee8=ey.memo(e=>{var t=CA(e,ee6);return ey.createElement(ey.Fragment,null,ey.createElement(ee4,{interval:t.interval,id:t.yAxisId,scale:t.scale,type:t.type,domain:t.domain,allowDataOverflow:t.allowDataOverflow,dataKey:t.dataKey,allowDuplicatedCategory:t.allowDuplicatedCategory,allowDecimals:t.allowDecimals,tickCount:t.tickCount,padding:t.padding,includeHidden:t.includeHidden,reversed:t.reversed,ticks:t.ticks,width:t.width,orientation:t.orientation,mirror:t.mirror,hide:t.hide,unit:t.unit,name:t.name,angle:t.angle,minTickGap:t.minTickGap,tick:t.tick,tickFormatter:t.tickFormatter,niceTicks:t.niceTicks}),ey.createElement(ee3,t))},Fi);function ee7({machines:e,defaultMachineId:t,className:n,...r}){let[i,a]=ey.useState(t??e[0]?.id),o=e.find(e=>e.id===i)??e[0],[l,s]=ey.useState({});if(!o)return null;let c=l[o.id]??o.selectedMetricId??o.metrics[0]?.id,d=o.metrics.find(e=>e.id===c)??o.metrics[0];return(0,ev.jsxs)("div",{className:tK("vtl-surface-card flex h-full min-h-0 flex-col rounded-[var(--surface-card-radius)] border","vtl-performance-monitor",n),...r,children:[(0,ev.jsx)(q0,{value:o.id,onValueChange:a,className:"shrink-0 px-3 pt-3",children:(0,ev.jsx)(q9,{className:"h-8",children:e.map(e=>(0,ev.jsx)(Ke,{value:e.id,children:e.name},e.id))})}),(0,ev.jsxs)("div",{className:"mt-3 grid min-h-0 flex-1 grid-cols-[14rem_minmax(0,1fr)] border-t",children:[(0,ev.jsx)("div",{className:"min-h-0 overflow-auto border-r p-2",children:o.metrics.map(e=>(0,ev.jsxs)("button",{type:"button",onClick:()=>s(t=>({...t,[o.id]:e.id})),className:tK("grid w-full grid-cols-[3.75rem_minmax(0,1fr)] gap-3 px-2 py-2 text-left transition-colors",e.id===c&&"bg-muted"),children:[(0,ev.jsx)(eti,{data:e.data,color:e.color}),(0,ev.jsxs)("span",{className:"min-w-0",children:[(0,ev.jsx)("span",{className:"block truncate text-base leading-tight",children:e.label}),(0,ev.jsx)("span",{className:"block truncate text-xs text-muted-foreground",children:e.value}),e.detail?(0,ev.jsx)("span",{className:"block truncate text-xs text-muted-foreground",children:e.detail}):null]})]},e.id))}),(0,ev.jsxs)("div",{className:"min-h-0 overflow-auto p-5",children:[(0,ev.jsxs)("div",{className:"grid grid-cols-[minmax(0,1fr)_auto] items-start gap-5",children:[(0,ev.jsxs)("div",{children:[(0,ev.jsx)("h2",{className:"text-4xl leading-none font-semibold tracking-normal",children:d?.title}),d?.subtitle?(0,ev.jsx)("p",{className:"mt-1 text-base text-muted-foreground",children:d.subtitle}):null]}),(0,ev.jsx)("div",{className:"text-right text-sm text-muted-foreground",children:d?.detail})]}),d?(0,ev.jsx)(ee9,{metric:d}):null]})]})]})}function ee9({metric:e}){return"cpu"===e.kind?(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(ete,{panel:{id:"cpu",title:"% 利用率",value:"100%",data:e.data,span:"full"},size:"large"}),(0,ev.jsx)(ett,{}),(0,ev.jsx)(etr,{details:e.details,columns:4})]}):"memory"===e.kind?(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(ete,{panel:{id:"memory",title:"内存使用量",value:e.detail,data:e.data,span:"full"},size:"large"}),(0,ev.jsx)(ett,{}),(0,ev.jsx)(etn,{segments:e.composition}),(0,ev.jsx)(etr,{details:e.details,columns:3})]}):"disk"===e.kind?(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(ete,{panel:{id:"disk-active",title:"活动时间",value:"100%",data:e.data,span:"full"},size:"large"}),(0,ev.jsx)(ett,{}),(0,ev.jsx)(ete,{panel:{id:"disk-rate",title:"磁盘传输速率",value:"500 KB/秒",data:e.panels?.[0]?.data??e.data,span:"full"},size:"short"}),(0,ev.jsx)(ett,{}),(0,ev.jsx)(etr,{details:e.details,columns:4})]}):"network"===e.kind?(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(ete,{panel:{id:"network",title:"吞吐量",value:"100 Kbps",data:e.data,span:"full",color:"danger"},size:"tall"}),(0,ev.jsx)(ett,{}),(0,ev.jsx)(etr,{details:e.details,columns:2})]}):(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)("div",{className:"mt-5 grid grid-cols-2 gap-3",children:(e.panels??[]).map(e=>(0,ev.jsx)(ete,{panel:e},e.id))}),(0,ev.jsx)(etr,{details:e.details,columns:3})]})}function ete({panel:e,size:t="normal"}){let n={short:"h-[4rem]",normal:"full"===e.span?"h-20":"h-24",large:"h-[17.5rem]",tall:"h-[21.5rem]"}[t];return(0,ev.jsxs)("div",{className:tK("mt-5","full"===e.span&&"col-span-2"),children:[(0,ev.jsxs)("div",{className:"mb-1 flex items-center justify-between text-sm",children:[(0,ev.jsx)("span",{className:"text-muted-foreground",children:e.title}),e.value?(0,ev.jsx)("span",{className:"text-muted-foreground tabular-nums",children:e.value}):null]}),(0,ev.jsx)(eta,{data:e.data,color:e.color,className:tK("w-full",n)})]})}function ett(){return(0,ev.jsxs)("div",{className:"mt-1 flex justify-between text-xs text-muted-foreground",children:[(0,ev.jsx)("span",{children:"60 秒"}),(0,ev.jsx)("span",{children:"0"})]})}function etn({segments:e}){let t=e&&e.length>0?e:[{label:"used",value:64},{label:"available",value:36}];return(0,ev.jsxs)("div",{className:"mt-5",children:[(0,ev.jsx)("div",{className:"mb-1 text-sm text-muted-foreground",children:"内存组合"}),(0,ev.jsx)("div",{className:"flex h-[3.25rem] w-full overflow-hidden border border-primary/75 bg-background",children:t.map((e,n)=>(0,ev.jsx)("div",{className:tK("h-full border-r border-primary/75 last:border-r-0",0===n?"bg-primary/20":n===t.length-1?"bg-background":"bg-primary/8"),style:{width:`${Math.max(0,e.value)}%`}},`${e.label}-${n}`))})]})}function etr({details:e,columns:t}){return e?.length?(0,ev.jsx)("div",{className:tK("mt-5 grid gap-x-10 gap-y-4",2===t&&"grid-cols-2",3===t&&"grid-cols-3",4===t&&"grid-cols-4"),children:e.map(([e,t])=>(0,ev.jsxs)("div",{className:"min-w-0",children:[(0,ev.jsx)("div",{className:"text-xs text-muted-foreground",children:e}),(0,ev.jsx)("div",{className:"truncate text-2xl leading-tight tabular-nums",children:t})]},e))}):null}function eti({data:e,color:t}){return(0,ev.jsx)(eta,{data:e,color:t,className:"h-10 w-full",strokeWidth:1.4,compact:!0})}function eta({data:e,color:t="default",className:n,strokeWidth:r=1.6,compact:i=!1}){let a=ey.useMemo(()=>(e.length>1?e:[0,0]).map((e,t)=>({index:t,value:Math.max(0,Math.min(100,e))})),[e]),o=ey.useMemo(()=>({value:{label:"Value",color:"danger"===t?"var(--destructive)":"var(--foreground)"}}),[t]);return(0,ev.jsx)(BW,{config:o,className:tK("aspect-auto border bg-background text-muted-foreground",n),initialDimension:{width:i?96:640,height:i?40:220},children:(0,ev.jsxs)($M,{data:a,margin:{top:i?2:6,right:0,bottom:0,left:0},children:[i?null:(0,ev.jsx)($9,{strokeDasharray:"0",stroke:"var(--border)",strokeOpacity:.7}),(0,ev.jsx)(Fm,{dataKey:"index",hide:!0,domain:["dataMin","dataMax"]}),(0,ev.jsx)(ee8,{hide:!0,domain:[0,100]}),i?null:(0,ev.jsx)(Bq,{cursor:!1,content:(0,ev.jsx)(BK,{hideLabel:!0,indicator:"line"})}),(0,ev.jsx)(Rz,{dataKey:"value",type:"monotone",fill:"var(--color-value)",fillOpacity:"danger"===t?.16:.12,stroke:"var(--color-value)",strokeWidth:r,isAnimationActive:!1,dot:!1,activeDot:!1})]})})}ee8.displayName="YAxis";let eto=eS("badge-alert",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]),etl=eS("circle-pause",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"10",x2:"10",y1:"15",y2:"9",key:"c1nkhi"}],["line",{x1:"14",x2:"14",y1:"15",y2:"9",key:"h65svq"}]]),ets={name:"名称",cpu:"CPU",memoryMb:"内存",diskMbps:"磁盘",networkMbps:"网络"};function etc({machines:e,defaultMachineId:t,className:n,...r}){let[i,a]=ey.useState(t??e[0]?.id),[o,l]=ey.useState("cpu"),[s,c]=ey.useState("desc"),[d,u]=ey.useState({}),f=e.find(e=>e.id===i)??e[0],h=ey.useMemo(()=>{if(!f)return[];let e=[...function(e){let t=new Map,n=new Map;for(let t of e)void 0!==t.pid&&n.set(t.pid,t);for(let i of e){var r;let e=function e(t,n,r=new Set){void 0!==t.pid&&r.add(t.pid);let i=void 0!==t.parentPid?n.get(t.parentPid):void 0;return!i||void 0===i.pid||r.has(i.pid)||["bash","containerd","dockerd","explorer","init","kernel_task","launchd","services","sh","smss","svchost","system","systemd","wininit","winlogon","zsh"].includes(etm(i))?t:e(i,n,r)}(i,n),a=etm(e),o=t.get(a)??{kind:"group",id:a,name:(r=e,r.appName?.trim()||r.name.trim().replace(/\.(exe|com)$/i,"")||r.id),children:[],status:[],cpu:0,memoryMb:0,diskMbps:0,networkMbps:0};o.children.push(i),o.cpu+=i.cpu,o.memoryMb+=i.memoryMb,o.diskMbps+=i.diskMbps,o.networkMbps+=i.networkMbps,o.status=function(e,t){let n=new Set(e??[]);for(let e of t??[])n.add(e);return Array.from(n)}(o.status,i.status),t.set(a,o)}return Array.from(t.values()).map(e=>({...e,cpu:etv(Math.min(100,e.cpu)),memoryMb:etv(e.memoryMb),diskMbps:etv(e.diskMbps),networkMbps:etv(e.networkMbps)}))}(f.processes)].sort((e,t)=>etg(e,t,o,s)),t=[];for(let n of e){if(n.children.length<=1){let e=n.children[0];e&&t.push(etp(e,0));continue}if(t.push(n),d[n.id])for(let e of[...n.children].sort((e,t)=>etg(e,t,o,s)))t.push(etp(e,1))}return t},[f,d,s,o]),p=ey.useMemo(()=>h.map(e=>({memoryMb:e.memoryMb,diskMbps:e.diskMbps,networkMbps:e.networkMbps})),[h]);function m(e){e===o?c(e=>"asc"===e?"desc":"asc"):(l(e),c("name"===e?"asc":"desc"))}return f?(0,ev.jsxs)("div",{className:tK("vtl-surface-card flex h-full min-h-0 flex-col rounded-[var(--surface-card-radius)] border","vtl-process-monitor",n),...r,children:[(0,ev.jsx)(q0,{value:f.id,onValueChange:a,className:"shrink-0 px-3 pt-3",children:(0,ev.jsx)(q9,{className:"h-8",children:e.map(e=>(0,ev.jsx)(Ke,{value:e.id,children:e.name},e.id))})}),(0,ev.jsxs)("div",{className:"mt-3 grid h-14 shrink-0 grid-cols-[minmax(12rem,1fr)_6.25rem_repeat(4,minmax(5rem,7rem))] border-y text-sm",children:[(0,ev.jsxs)("button",{type:"button",onClick:()=>m("name"),className:"flex items-end px-3 pb-2 text-left text-muted-foreground",children:["名称",(0,ev.jsx)(etd,{active:"name"===o,direction:s})]}),(0,ev.jsx)("div",{className:"flex items-end px-3 pb-2 text-muted-foreground",children:"状态"}),["cpu","memoryMb","diskMbps","networkMbps"].map(e=>{var t,n;return(0,ev.jsxs)("button",{type:"button",onClick:()=>m(e),className:"grid content-end border-l px-3 pb-2 text-right",children:[(0,ev.jsx)("span",{className:"text-lg leading-none text-foreground",children:(t=f.totals,"cpu"===(n=e)?`${Math.round(t.cpu)}%`:"memoryMb"===n?`${Math.round(t.memory)}%`:"diskMbps"===n?`${Math.round(t.disk)}%`:"networkMbps"===n?`${Math.round(t.network)}%`:"")}),(0,ev.jsxs)("span",{className:"mt-1 text-xs text-muted-foreground",children:[ets[e],(0,ev.jsx)(etd,{active:o===e,direction:s,className:"ml-1 inline-flex"})]})]},e)})]}),(0,ev.jsx)("div",{className:"vtl-scrollbar-hidden min-h-0 flex-1 overflow-auto",children:h.map(e=>{var t;return(0,ev.jsxs)("div",{className:tK("grid min-h-9 grid-cols-[minmax(12rem,1fr)_6.25rem_repeat(4,minmax(5rem,7rem))] items-center text-sm","group"===e.kind&&"bg-muted/35"),children:[(0,ev.jsx)(etu,{row:e,expanded:"group"===e.kind&&!!d[e.id],onToggle:()=>{"group"===e.kind&&u(t=>({...t,[e.id]:!t[e.id]}))}}),(0,ev.jsx)(etf,{platform:f.platform,status:e.status}),(0,ev.jsx)(eth,{value:e.cpu,max:100,label:`${e.cpu.toFixed(1)}%`}),(0,ev.jsx)(eth,{value:e.memoryMb,max:etx(p,"memoryMb"),label:(t=e.memoryMb)>=1024?`${ety(t/1024)} GB`:`${ety(t)} MB`}),(0,ev.jsx)(eth,{value:e.diskMbps,max:Math.max(1,etx(p,"diskMbps")),label:`${ety(e.diskMbps)} MB/秒`}),(0,ev.jsx)(eth,{value:e.networkMbps,max:Math.max(1,etx(p,"networkMbps")),label:`${ety(e.networkMbps)} Mbps`})]},`${e.kind}-${e.id}`)})})]}):null}function etd({active:e,direction:t,className:n}){return e?(0,ev.jsx)("asc"===t?Ks:Xw,{className:tK("ml-1 size-3",n)}):null}function etu({row:e,expanded:t,onToggle:n}){if("group"===e.kind){let r=t?cb:xx;return(0,ev.jsxs)("button",{type:"button","aria-expanded":t,onClick:n,className:"flex h-full min-w-0 items-center gap-2 px-3 text-left outline-none transition-colors hover:bg-muted/55 focus-visible:ring-[3px] focus-visible:ring-ring/20",children:[(0,ev.jsx)(r,{className:"size-4 shrink-0 text-muted-foreground"}),(0,ev.jsx)("span",{className:"size-2 rounded-sm bg-foreground/65"}),(0,ev.jsxs)("span",{className:"min-w-0 truncate font-medium",children:[e.name," (",e.children.length,")"]})]})}return(0,ev.jsxs)("div",{className:"flex min-w-0 items-center gap-2 px-3",style:{paddingLeft:e.depth>0?34:void 0},children:[e.depth>0?(0,ev.jsx)("span",{className:"size-1.5 rounded-full bg-muted-foreground/70"}):(0,ev.jsx)("span",{className:"size-1.5 rounded-full bg-foreground/65"}),(0,ev.jsx)("span",{className:tK("truncate",0===e.depth&&"font-medium"),children:e.name}),e.process.pid?(0,ev.jsx)("span",{className:"shrink-0 ui-text-kbd text-muted-foreground",children:e.process.pid}):null]})}function etf({platform:e,status:t}){return t?.length?(0,ev.jsxs)("div",{className:"flex items-center gap-1.5 px-3 text-muted-foreground",children:[t.includes("suspended")?(0,ev.jsx)(etl,{"aria-label":"linux"===e?"挂起进程":"挂起",className:"size-4"}):null,t.includes("auto-restart")?(0,ev.jsx)(s0,{"aria-label":"linux"===e?"自动重启进程":"自动重启",className:"size-4"}):null,t.includes("running")?(0,ev.jsx)(eto,{"aria-label":"运行",className:"size-4 text-primary"}):null]}):(0,ev.jsx)("div",{className:"px-3"})}function eth({value:e,max:t,label:n}){let r=Math.min(1,Math.max(0,e/Math.max(1,t))),i=r>.78,a=i?`color-mix(in oklch, var(--destructive) ${Math.round(18+42*r)}%, var(--background))`:`color-mix(in oklch, var(--foreground) ${Math.round(5+20*r)}%, var(--background))`;return(0,ev.jsx)("div",{className:"vtl-process-heat-cell h-full border-l px-3 text-right tabular-nums","data-hot":i?"":void 0,style:{background:a},children:(0,ev.jsx)("span",{className:tK("leading-9",i&&"text-destructive"),children:n})})}function etp(e,t){return{kind:"process",id:e.id,process:e,depth:t,name:e.appName&&0===t?e.appName:e.name,status:e.status,cpu:e.cpu,memoryMb:e.memoryMb,diskMbps:e.diskMbps,networkMbps:e.networkMbps}}function etm(e){return e.appId?.trim().toLowerCase()||e.appName?.trim().toLowerCase()||e.name.trim().toLowerCase().replace(/\.(exe|com)$/i,"")||e.id}function etg(e,t,n,r){let i="asc"===r?1:-1;return"name"===n?e.name.localeCompare(t.name)*i:(e[n]-t[n])*i}function etv(e){return Math.round(10*e)/10}function etx(e,t){return e.reduce((e,n)=>Math.max(e,n[t]),0)}function ety(e){return new Intl.NumberFormat("zh-CN",{maximumFractionDigits:+(e<10)}).format(e)}function etb({className:e}){let t=etj("/api/local/machines/processes"),n=etk("/machines/processes"),r=ey.useMemo(()=>[...t,...n],[t,n]);return(0,ev.jsx)(etc,{machines:r,className:tK("h-full min-h-0 w-full",e)})}function etw({className:e}){let t=etj("/api/local/machines/performance"),n=etk("/machines/performance"),r=ey.useMemo(()=>[...t,...n],[t,n]);return(0,ev.jsx)(ee7,{machines:r,className:tK("h-full min-h-0 w-full",e)})}function etj(e){let[t,n]=ey.useState([]);return ey.useEffect(()=>{let t=!0,r=!1;async function i(){if(!r){r=!0;try{let r=await fetch(tJ(e),{cache:"no-store"});if(!r.ok)return;let i=await r.json();t&&n(i.machines)}catch{t&&n([])}finally{r=!1}}}i();let a=window.setInterval(i,2e3);return()=>{t=!1,window.clearInterval(a)}},[e]),t}function etk(e){let{machines:t}=WW(),[n,r]=ey.useState([]),i=ey.useMemo(()=>t.filter(e=>!e.isLocal&&"online"===e.status).map(e=>e.id),[t]);return ey.useEffect(()=>{if(0===i.length)return void r([]);let t=!0,n=!1;async function a(){if(!n){n=!0;try{let n=await Promise.all(i.map(async t=>{try{return(await wy(t,e)).machines??[]}catch{return[]}}));t&&r(n.flat())}finally{n=!1}}}a();let o=window.setInterval(a,5e3);return()=>{t=!1,window.clearInterval(o)}},[i,e]),n}let etS=eS("circle-play",[["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z",key:"kmsa83"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]),etN=eS("radio",[["path",{d:"M16.247 7.761a6 6 0 0 1 0 8.478",key:"1fwjs5"}],["path",{d:"M19.075 4.933a10 10 0 0 1 0 14.134",key:"ehdyv1"}],["path",{d:"M4.925 19.067a10 10 0 0 1 0-14.134",key:"1q22gi"}],["path",{d:"M7.753 16.239a6 6 0 0 1 0-8.478",key:"r2q7qm"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]),etC={loading:"Starting terminal...",newTerminal:"New terminal",closeTerminal:e=>`Close ${e}`,terminalList:"Terminal sessions",status:{idle:"Idle",running:"Running",success:"Succeeded",error:"Failed"}},etM=[{id:"powershell",title:"PowerShell",shell:"PowerShell",cwd:"D:\\Projects\\Vantaloom-ui",status:"idle",initialOutput:"PowerShell 7.6.1\r\nPS D:\\Projects\\Vantaloom-ui> "}];function etE(e,t,n){return e.getPropertyValue(t).trim()||n}function etO(e,t=!1){let n=getComputedStyle(e),r=etE(n,"--foreground","#18181b"),i=etE(n,"--terminal-background",etE(n,"--background","#ffffff")),a="transparent"===i?etE(n,"--background","#ffffff"):i,o=etE(n,"--muted-foreground","#71717a"),l=etE(n,"--border","#e4e4e7"),s=etE(n,"--selection","#18181b");return{background:i,foreground:r,cursor:t?"transparent":r,cursorAccent:t?"transparent":a,selectionBackground:`color-mix(in oklch, ${s} 18%, transparent)`,selectionForeground:etE(n,"--selection-foreground","#ffffff"),scrollbarSliderBackground:`color-mix(in oklch, ${l} 78%, transparent)`,scrollbarSliderHoverBackground:l,black:r,red:etE(n,"--terminal-red","#bf616a"),green:etE(n,"--terminal-green","#5e8c61"),yellow:etE(n,"--terminal-yellow","#b06f3c"),blue:etE(n,"--terminal-blue","#5e81ac"),magenta:etE(n,"--terminal-magenta","#b48ead"),cyan:etE(n,"--terminal-cyan","#4c8da8"),white:i,brightBlack:o,brightRed:etE(n,"--terminal-bright-red","#d06f79"),brightGreen:etE(n,"--terminal-bright-green","#6b9a70"),brightYellow:etE(n,"--terminal-bright-yellow","#c2824b"),brightBlue:etE(n,"--terminal-bright-blue","#6f91ba"),brightMagenta:etE(n,"--terminal-bright-magenta","#c19ac0"),brightCyan:etE(n,"--terminal-bright-cyan","#5aa0b8"),brightWhite:r}}function etP(e){return void 0===e?[]:Array.isArray(e)?e:[e]}function etz({initialOutput:t,data:n,dataKey:r,options:i,readOnly:a=!1,autoFocus:o=!1,localEcho:l=!1,onData:s,onResize:c,onReady:d,labels:u,className:f,terminalClassName:h,...p}){let m=ey.useMemo(()=>({loading:etC.loading,...u}),[u]),g=ey.useRef(null),v=ey.useRef(null),x=ey.useRef(void 0),y=ey.useRef(s),b=ey.useRef(c),w=ey.useRef(d),j=ey.useRef(i),k=ey.useRef(a),S=ey.useRef(l),N=ey.useRef(!1),C=ey.useRef(void 0),M=ey.useRef(!1),[E,O]=ey.useState(!1);return ey.useEffect(()=>{y.current=s,b.current=c,w.current=d,j.current=i,k.current=a,S.current=l},[l,s,d,c,i,a]),ey.useEffect(()=>{let n,r=!1,i=[];!async function(){var a;let l,s,c,d,u;if(!g.current||M.current)return;M.current=!0;let[{Terminal:f},{FitAddon:h},{SearchAddon:p},{WebLinksAddon:m}]=await Promise.all([e.A(93626),e.A(16118),e.A(24306),e.A(46866)]);if(r||!g.current)return;let C=new f({convertEol:!1,cursorBlink:!0,cursorStyle:"block",drawBoldTextInBrightColors:!1,fontFamily:(l=getComputedStyle(a=g.current),u=(c=etE(l,"--font-family-mono",s='"Cascadia Mono", "Cascadia Code", Consolas, "SFMono-Regular", "Liberation Mono", monospace'),d=getComputedStyle(a),c.replace(/var\((--[a-zA-Z0-9-_]+)(?:,[^)]+)?\)/g,(e,t)=>d.getPropertyValue(t).trim()||"")).trim(),`"Cascadia Mono", "Cascadia Code", Consolas, ${u||s}`),fontSize:13,letterSpacing:0,lineHeight:1.25,macOptionIsMeta:!0,minimumContrastRatio:4.5,scrollback:5e3,theme:etO(g.current),...j.current,allowTransparency:!0}),E=new h,P=new p,z=new m;function A(){try{E.fit(),b.current?.({cols:C.cols,rows:C.rows})}catch{}}for(let e of(C.loadAddon(E),C.loadAddon(P),C.loadAddon(z),C.open(g.current),v.current=C,x.current=E,O(!0),requestAnimationFrame(A),(n=new ResizeObserver(A)).observe(g.current),i.push(C.onData(e=>{k.current||(S.current&&("\r"===e?C.write("\r\n"):""===e?C.write("\b \b"):C.write(e)),y.current?.(e))})),etP(t)))C.write(e);w.current?.({terminal:C,fitAddon:E,searchAddon:P,webLinksAddon:z,fit:A,focus:()=>C.focus(),clear:()=>C.clear(),setCursorSuppressed:function(e){let t=g.current;t&&(N.current=e,t.toggleAttribute("data-vtl-terminal-cursor-suppressed",e),C.options.theme=etO(t,e))},write:(e,t)=>C.write(e,t),writeln:e=>C.writeln(e)}),o&&C.focus()}();let a=new MutationObserver(()=>{let e=v.current,t=g.current;e&&t&&(e.options.theme=etO(t,N.current))});return a.observe(document.documentElement,{attributeFilter:["class","style"],attributes:!0}),()=>{for(let e of(r=!0,a.disconnect(),n?.disconnect(),i))e.dispose();v.current?.dispose(),v.current=null,x.current=void 0,N.current=!1,M.current=!1,O(!1)}},[o,t]),ey.useEffect(()=>{let e=v.current;if(e&&C.current!==r)for(let t of(C.current=r,etP(n)))e.write(t)},[n,r]),(0,ev.jsxs)("div",{"data-slot":"terminal-tab-surface",className:tK("relative size-full min-h-0 overflow-hidden bg-background text-foreground",f),...p,children:[(0,ev.jsx)("div",{ref:g,className:tK("vtl-terminal-xterm size-full overflow-hidden p-1.5 font-mono","[&_.xterm]:h-full [&_.xterm]:p-0 [&_.xterm-viewport]:!bg-transparent","[&_.xterm-screen]:!bg-transparent [&_.xterm-helper-textarea]:!outline-none","[&[data-vtl-terminal-cursor-suppressed]_.xterm-cursor]:!opacity-0","[&_.xterm-viewport::-webkit-scrollbar]:w-2.5 [&_.xterm-viewport::-webkit-scrollbar-track]:bg-transparent","[&_.xterm-viewport::-webkit-scrollbar-thumb]:rounded-full [&_.xterm-viewport::-webkit-scrollbar-thumb]:border-[3px]","[&_.xterm-viewport::-webkit-scrollbar-thumb]:border-transparent [&_.xterm-viewport::-webkit-scrollbar-thumb]:bg-border [&_.xterm-viewport::-webkit-scrollbar-thumb]:bg-clip-content",h)}),!E&&(0,ev.jsx)("div",{className:"pointer-events-none absolute inset-0 grid place-items-center text-muted-foreground ui-text-code",children:m.loading})]})}function etA({status:e="idle"}){return"running"===e?(0,ev.jsx)(etS,{className:"size-3.5 text-foreground"}):"success"===e?(0,ev.jsx)(ez,{className:"size-3.5 text-foreground"}):"error"===e?(0,ev.jsx)(eP,{className:"size-3.5 text-destructive"}):(0,ev.jsx)(bs,{className:"size-3.5 text-muted-foreground"})}function etI({session:e}){return e.aiControlled?(0,ev.jsx)(etN,{className:"size-3.5 text-destructive"}):(0,ev.jsx)(etA,{status:e.status})}function et_({sessions:e,defaultSessions:t=etM,activeSessionId:n,defaultActiveSessionId:r,onActiveSessionChange:i,onSessionsChange:a,onCreateSession:o,onCloseSession:l,onSessionData:s,onSessionResize:c,onSessionReady:d,showTabs:u=!0,allowCreateSession:f=!0,readOnly:h=!1,localEcho:p=!1,terminalOptions:m,labels:g,className:v,tabListClassName:x,terminalClassName:y,...b}){let w=ey.useMemo(()=>({...etC,...g,status:{...etC.status,...g?.status}}),[g]),[j,k]=ey.useState(t),S=e??j,N=S[0],[C,M]=ey.useState(r??N?.id),E=n??(S.some(e=>e.id===C)?C:N?.id),O=S.find(e=>e.id===E)??N;function P(t){void 0===e&&k(t),a?.(t)}function z(e){e.disabled||(void 0===n&&M(e.id),i?.(e.id,e))}return(0,ev.jsxs)("div",{"data-slot":"terminal-tab-group",className:tK("vtl-surface-panel grid min-h-0 overflow-hidden rounded-[var(--surface-panel-radius)] border",u?"grid-rows-[auto_minmax(0,1fr)]":"grid-rows-[minmax(0,1fr)]",v),...b,children:[u&&(0,ev.jsxs)("div",{"data-slot":"terminal-tab-list",role:"tablist","aria-label":w.terminalList,className:tK("flex min-w-0 items-center gap-1 border-b bg-muted/35 px-2 py-1.5",x),children:[(0,ev.jsx)(m1,{className:"ml-1 size-4 shrink-0 text-muted-foreground"}),(0,ev.jsx)("div",{className:"flex min-w-0 flex-1 items-center gap-1 overflow-x-auto",children:S.map(e=>{let t=e.id===O?.id;return(0,ev.jsxs)("div",{className:tK("group flex h-7 min-w-0 shrink-0 items-center rounded-md border border-transparent ui-text-control","transition-colors hover:bg-background/80",t?"bg-background text-foreground shadow-xs":"text-muted-foreground",e.disabled&&"pointer-events-none opacity-50"),children:[(0,ev.jsxs)("button",{type:"button",role:"tab","aria-selected":t,"aria-controls":`terminal-panel-${e.id}`,disabled:e.disabled,onClick:()=>z(e),className:"flex h-full min-w-0 items-center gap-1.5 rounded-md px-2 text-left outline-none focus-visible:ring-[3px] focus-visible:ring-ring/20",children:[(0,ev.jsx)(etI,{session:e}),(0,ev.jsx)("span",{className:"max-w-36 truncate",children:e.title}),e.shell&&(0,ev.jsx)("span",{className:"hidden text-muted-foreground ui-text-kbd sm:inline",children:e.shell})]}),e.closable&&(0,ev.jsx)("button",{type:"button","aria-label":w.closeTerminal(e.title),onClick:t=>{t.stopPropagation();l?.(e.id,e);let n=S.filter(t=>t.id!==e.id);if(P(n),e.id===E){let e=n.at(-1);e&&z(e)}},className:"mr-1 grid size-4 place-items-center rounded-sm text-muted-foreground opacity-0 outline-none transition-opacity hover:bg-muted hover:text-foreground focus-visible:opacity-100 focus-visible:ring-[3px] focus-visible:ring-ring/20 group-hover:opacity-100",children:(0,ev.jsx)(ms,{className:"size-3"})})]},e.id)})}),f&&(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-xs","aria-label":w.newTerminal,onClick:function(){let e=o?.()??{id:`terminal-${Date.now()}`,title:`Terminal ${S.length+1}`,status:"idle",initialOutput:"",closable:!0};P([...S,e]),z(e)},className:"size-7 shrink-0",children:(0,ev.jsx)(sQ,{className:"size-3.5"})})]}),(0,ev.jsx)("div",{"data-slot":"terminal-tab-panels",className:"relative min-h-0 overflow-hidden",children:S.map(e=>{let t=e.id===O?.id;return(0,ev.jsx)(etD,{session:e,selected:t,terminalOptions:m,readOnly:h,localEcho:p,onSessionData:s,onSessionResize:c,onSessionReady:d,labels:w,terminalClassName:y},e.id)})})]})}function etD({session:e,selected:t,terminalOptions:n,readOnly:r,localEcho:i,onSessionData:a,onSessionResize:o,onSessionReady:l,labels:s,terminalClassName:c}){let d=ey.useRef(null),u=ey.useRef(t);return ey.useEffect(()=>{if(t&&!u.current&&d.current){let e=d.current;requestAnimationFrame(()=>{e&&(e.fit(),e.terminal.refresh(0,e.terminal.rows-1),e.terminal.focus())})}u.current=t},[t]),(0,ev.jsx)("div",{id:`terminal-panel-${e.id}`,role:"tabpanel","aria-hidden":!t,"data-active":t,className:"absolute inset-0 min-h-0",style:{display:t?"block":"none"},children:(0,ev.jsx)(etz,{initialOutput:e.initialOutput,options:{...n,...e.options},readOnly:r||e.disabled,localEcho:i,autoFocus:t,onData:t=>a?.(e.id,t),onResize:t=>o?.(e.id,t),onReady:t=>{d.current=t,l?.(e.id,t)},labels:s,terminalClassName:c})})}function etT({className:e,scopeId:t,state:n,onStateChange:r}){let[i,a]=ey.useState([]),[o,l]=ey.useState([]),[s,c]=ey.useState(),[d,u]=ey.useState("local"),[f,h]=ey.useState(),[p,m]=ey.useState(!1),[g,v]=ey.useState(!1),x=ey.useRef(new Map),y=ey.useRef(new Map),b=ey.useRef(new Map),w=ey.useRef(new Map),j=ey.useRef(new Map),k=ey.useRef(new Map),S=ey.useRef(new Map),N=ey.useRef(new Map),C=ey.useRef(!1),M=ey.useRef(n?.autoStart===!1),E=ey.useRef(n),O=ey.useRef(r),P=Array.isArray(n?.sessionIds)?n.sessionIds.join("\0"):"__all__",z=t?.trim()||void 0,A=z??"__unscoped__";ey.useEffect(()=>{E.current=n},[n]),ey.useEffect(()=>{O.current=r},[r]);let I=i.find(e=>e.id===d)??i[0],_=I?.shells?.find(e=>e.id===f)??I?.shells?.[0],D=ey.useMemo(()=>o.map(e=>e.id),[o]),T=ey.useMemo(()=>o.filter(e=>e.aiControlled).map(e=>e.id),[o]),R=D.join("\0"),L=T.join("\0"),$=ey.useCallback((e,t)=>{let n=y.current.get(e);if(t){let t=j.current.get(e);void 0!==t&&(window.clearTimeout(t),j.current.delete(e))}n?.setCursorSuppressed(t)},[]),F=ey.useCallback(e=>{let t=j.current.get(e);void 0!==t&&window.clearTimeout(t);let n=window.setTimeout(()=>{j.current.delete(e),$(e,!1)},90);j.current.set(e,n)},[$]),B=ey.useCallback(e=>{let t=w.current.get(e),n=y.current.get(e);if(!t||!n||t.writing)return;if(!t.buffer){w.current.delete(e),F(e);return}void 0!==t.drainTimer&&(window.clearTimeout(t.drainTimer),t.drainTimer=void 0);let r=t.buffer.slice(0,65536);t.buffer=t.buffer.slice(r.length),t.writing=!0,$(e,!0);try{n.write(r,()=>{(t.writing=!1,y.current.has(e))?t.buffer?t.drainTimer=window.setTimeout(()=>B(e),0):(w.current.delete(e),F(e)):w.current.delete(e)})}catch{t.writing=!1,w.current.delete(e),F(e)}},[F,$]),V=ey.useCallback((e,t)=>{if(!t)return;if(!y.current.get(e))return void b.current.set(e,`${b.current.get(e)??""}${t}`);let n=w.current.get(e);(n||(n={buffer:"",writing:!1},w.current.set(e,n)),n.buffer+=t,$(e,!0),n.buffer.length>=65536)?B(e):n.writing||void 0!==n.drainTimer||(n.drainTimer=window.setTimeout(()=>B(e),8))},[B,$]),H=ey.useCallback((e,t)=>{(k.current.set(e,t.sequence),"output"===t.type&&t.data)?V(e,t.data):"status"===t.type&&t.status&&l(n=>n.map(n=>n.id===e?{...n,status:t.status??n.status,updatedAt:t.createdAt}:n))},[V]),W=ey.useCallback(e=>{if(x.current.has(e))return;let t=new EventSource(function(e,t=0){let n=new URLSearchParams;t>0&&n.set("after",String(t));let r=n.toString();return tJ(`/api/local/terminals/sessions/${encodeURIComponent(e)}/events${r?`?${r}`:""}`)}(e,k.current.get(e)??0));t.onmessage=t=>{try{H(e,JSON.parse(t.data))}catch{return}},x.current.set(e,t)},[H]),U=ey.useCallback(async()=>{if(I&&!p){M.current=!1,m(!0);try{let e=await Ub({machineId:I.id,scopeId:z,shell:_?.id,cwd:I.defaultCwd,cols:100,rows:30});l(t=>t.some(t=>t.id===e.id)?t:[...t,e]),c(e.id),W(e.id)}catch{return}finally{m(!1)}}},[p,W,I,_,z]);function q(e){let t=S.current.get(e);return t||(t={buffer:"",inFlight:!1},S.current.set(e,t)),t}return ey.useEffect(()=>{let e=!0;return v(!1),async function(){try{let t=E.current,n=t?.sessionIds,r=Array.isArray(n)?new Set(n):void 0,[i,o]=await Promise.all([Ux(),Uy(z)]);if(!e)return;let s=r?o.sessions.filter(e=>r.has(e.id)):o.sessions;C.current=!1,M.current=t?.autoStart===!1,a(i.machines),l(s),c(e=>{let n=t?.activeSessionId??e;return n&&s.some(e=>e.id===n)?n:s[0]?.id});let d=i.machines[0];if(d){let e=i.machines.find(e=>e.id===t?.selectedMachineId)??d;u(e.id),h(n=>t?.selectedShellId&&e.shells?.some(e=>e.id===t.selectedShellId)?t.selectedShellId:n&&e.shells?.some(e=>e.id===n)?n:e.shells?.[0]?.id)}}finally{e&&v(!0)}}(),()=>{e=!1}},[P,z,A]),ey.useEffect(()=>{g&&O.current?.({sessionIds:D,activeSessionId:s,selectedMachineId:d,selectedShellId:f,autoStart:!M.current,aiControlledSessionIds:T})},[s,T,L,g,d,f,D,R]),ey.useEffect(()=>{let e=new Set(D);for(let e of o)W(e.id);for(let[t,n]of x.current)e.has(t)||(n.close(),x.current.delete(t))},[W,D,o]),ey.useEffect(()=>{!g||C.current||M.current||o.length>0||0===i.length||(C.current=!0,U())},[U,g,i.length,o.length]),ey.useEffect(()=>()=>{for(let e of x.current.values())e.close();for(let e of S.current.values())void 0!==e.timer&&window.clearTimeout(e.timer);for(let e of w.current.values())void 0!==e.drainTimer&&window.clearTimeout(e.drainTimer);for(let[e,t]of j.current)window.clearTimeout(t),$(e,!1);S.current.clear(),w.current.clear(),j.current.clear()},[$]),(0,ev.jsxs)("div",{className:tK("grid h-full min-h-0 w-full grid-rows-[auto_minmax(0,1fr)] overflow-hidden rounded-[inherit] border bg-card",e),children:[(0,ev.jsxs)("div",{className:"flex min-w-0 items-center gap-1.5 border-b bg-muted/35 px-2 py-1.5",children:[(0,ev.jsxs)(vA,{value:I?.id,onValueChange:e=>{u(e);let t=i.find(t=>t.id===e);h(t?.shells?.[0]?.id)},children:[(0,ev.jsxs)(xd,{size:"sm",className:"max-w-44",children:[(0,ev.jsx)(xA,{className:"size-3.5"}),(0,ev.jsx)(vT,{placeholder:"机器"})]}),(0,ev.jsx)(xh,{align:"start",children:i.map(e=>(0,ev.jsx)(xp,{value:e.id,children:e.name},e.id))})]}),(0,ev.jsxs)(vA,{value:_?.id,onValueChange:h,children:[(0,ev.jsx)(xd,{size:"sm",className:"max-w-44",children:(0,ev.jsx)(vT,{placeholder:"Shell"})}),(0,ev.jsx)(xh,{align:"start",children:I?.shells?.map(e=>(0,ev.jsx)(xp,{value:e.id,children:e.name},e.id))})]}),(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm","aria-label":"新建终端",disabled:!I||p,onClick:()=>void U(),className:"ml-auto",children:(0,ev.jsx)(sQ,{className:"size-4"})})]}),(0,ev.jsx)(et_,{sessions:o.map(etR),activeSessionId:s,allowCreateSession:!1,localEcho:!1,labels:{loading:"启动终端...",terminalList:"终端会话",closeTerminal:e=>`关闭 ${e}`},onActiveSessionChange:e=>c(e),onCloseSession:e=>{let t,n,r;return x.current.get(e)?.close(),x.current.delete(e),y.current.delete(e),b.current.delete(e),t=w.current.get(e),t?.drainTimer!==void 0&&window.clearTimeout(t.drainTimer),w.current.delete(e),k.current.delete(e),void 0!==(n=j.current.get(e))&&(window.clearTimeout(n),j.current.delete(e)),r=S.current.get(e),void(r?.timer!==void 0&&window.clearTimeout(r.timer),S.current.delete(e),N.current.delete(e),l(t=>{let n=t.filter(t=>t.id!==e);return 0===n.length&&(M.current=!0),c(t=>t&&t!==e&&n.some(e=>e.id===t)?t:n[0]?.id),n}),Uw(e).catch(()=>{}))},onSessionData:function(e,t){let n=q(e);n.buffer+=t,function e(t){let n=q(t);n.inFlight||void 0!==n.timer||(n.timer=window.setTimeout(()=>{n.timer=void 0,function(t){let n=S.current.get(t);if(!n||n.inFlight)return;let r=n.buffer;if(n.buffer="",!r){void 0===n.timer&&S.current.delete(t);return}n.inFlight=!0,Uj(t,r).catch(()=>{}).finally(()=>{let n=S.current.get(t);n&&(n.inFlight=!1,n.buffer?e(t):void 0===n.timer&&S.current.delete(t))})}(t)},6))}(e)},onSessionResize:function(e,t){let n=`${t.cols}x${t.rows}`;N.current.get(e)!==n&&(N.current.set(e,n),Uk(e,t).then(e=>{l(t=>t.map(t=>t.id===e.id?{...t,...e}:t))}).catch(()=>{}))},onSessionReady:function(e,t){y.current.set(e,t);let n=b.current.get(e);n&&(b.current.delete(e),V(e,n))},className:"min-h-0 rounded-none border-0"})]})}function etR(e){return{id:e.id,title:e.title,shell:e.machineName,cwd:e.cwd,status:function(e){switch(e){case"running":return"running";case"exited":case"closed":return"success";case"failed":return"error";default:return"idle"}}(e.status),closable:!0,initialOutput:"",aiControlled:e.aiControlled,controller:e.controller}}function etL(e,t={}){let n="h-full min-h-0 w-full overflow-hidden rounded-[inherit]";switch(e.kind){case"file-tab-viewer":{let r=Un("file-tab-viewer"),i=e.file;if(!i&&t.onRequestFileTab)return(0,ev.jsx)(Yp,{className:n,onChooseFile:t.onRequestFileTab});return(0,ev.jsx)(QY,{className:`${n} border-0`,file:i??r.file,value:e.defaultValue??r.defaultValue??"",defaultValue:e.defaultValue??r.defaultValue,view:e.defaultView,mode:e.defaultMode,modified:e.modified,onValueChange:n=>t.onTabChange?.({...e,defaultValue:n,modified:!0}),onViewChange:n=>t.onTabChange?.({...e,defaultView:n}),onModeChange:n=>t.onTabChange?.({...e,defaultMode:n}),onSave:t.onSaveFileTab?n=>t.onSaveFileTab?.(e,n):void 0,onHistory:()=>t.onOpenFileHistory?.(e),labels:{review:"审阅",edit:"编辑",view:"视图",code:"代码",preview:"预览",hex:"十六进制",actions:"文件菜单",save:"保存",saving:"保存中",history:"历史版本"}})}case"browser-tab-viewer":return(0,ev.jsx)(YE,{className:`${n} border-0`,defaultUrl:e.defaultUrl??Un("browser-tab-viewer").defaultUrl});case"diff-tab-viewer":{let t=Un("diff-tab-viewer");return(0,ev.jsx)(X1,{className:`${n} border-0`,file:e.file??t.file,diff:e.diff??t.diff??""})}case"data-table-tab-viewer":{let r=Un("data-table-tab-viewer"),i=e.file;if(!i&&t.onRequestFileTab)return(0,ev.jsx)(Yp,{className:n,onChooseFile:t.onRequestFileTab});return(0,ev.jsx)(XH,{className:`${n} border-0`,file:{name:i?.name??r.file?.name??"data",path:i?.path??r.file?.path,type:et$(e)},source:void 0!==e.defaultValue?{type:et$(e),content:e.defaultValue}:void 0,data:e.tableData??r.tableData??[]})}case"terminal-tab-group":return(0,ev.jsx)(etT,{className:`${n} border-0`,scopeId:t.terminalScopeId,state:e.terminal??t.terminalState,onStateChange:t.onTerminalStateChange})}}function et$(e){return`${e.file?.mimeType??""} ${e.file?.path??e.file?.name??""}`.toLowerCase().includes("json")?"json":"csv"}function etF(e,t={}){let n="h-full min-h-0 w-full overflow-hidden rounded-[inherit]";switch(e){case"multi-tab-system":{let e=t.nodeId,r=void 0!==t.tabs?t.tabs:[];return(0,ev.jsx)(QQ,{className:n,contentClassName:"min-h-0",tabs:r.map(n=>({id:n.id,title:n.title,meta:n.meta,modified:n.modified,icon:Ut(n.kind),content:etL(n,{terminalScopeId:e?`${t.terminalScopeId??`canvas:node:${e}`}:tab:${n.id}`:t.terminalScopeId,terminalState:n.terminal,onTerminalStateChange:r=>e?t.onTabChange?.(e,{...n,terminal:r}):void 0,onRequestFileTab:()=>t.onRequestFileTab?.({nodeId:e,insertIndex:r.length}),onTabChange:n=>{e&&t.onTabChange?.(e,n)},onSaveFileTab:(n,r)=>e?t.onSaveFileTab?.(e,n,r):void 0,onOpenFileHistory:n=>e?t.onOpenFileHistory?.(e,n):void 0})})),activeTabId:t.activeTabId,detachable:!0,externalDropTypes:[fc],createLabel:"打开文件",emptyContent:(0,ev.jsx)(Yp,{onChooseFile:()=>t.onRequestFileTab?.({nodeId:e,insertIndex:r.length})}),onCreateTab:()=>{t.onRequestFileTab?.({nodeId:e,insertIndex:r.length})},onActiveTabChange:n=>{e&&t.onActiveTabChange?.(e,n)},onTabsChange:n=>{if(!e)return;let i=n.map(e=>r.find(t=>t.id===e.id)).filter(e=>!!e);t.onTabsChange?.(e,i)},onTabDetach:(n,i)=>{if(!e)return!1;let a=r.find(e=>e.id===n.id);return!!a&&t.onTabDetach?.(e,a,{clientX:i.clientX,clientY:i.clientY})},onExternalTabDrop:({insertIndex:n,nativeEvent:r})=>{e&&t.onExternalTabDrop?.(e,n,r)}})}case"file-tree-panel":if(t.workspaceFolders)return(0,ev.jsx)(Yf,{folders:t.workspaceFolders,className:`${n} max-w-none`,onOpenFile:t.onOpenWorkspaceFile});return(0,ev.jsx)(eej,{className:`${n} max-w-none`,onOpenFile:t.onOpenWorkspaceFile});case"process-management":return(0,ev.jsx)(etb,{className:`${n} rounded-[inherit] border-0`});case"machine-performance":return(0,ev.jsx)(etw,{className:`${n} rounded-[inherit] border-0`});case"firewall-policy-workspace":return(0,ev.jsx)("div",{className:`${n} bg-card`,children:(0,ev.jsx)(eey,{})});case"machine-file-management":return(0,ev.jsx)(eeX,{className:`${n} bg-card`});case"agent-conversation-panel":return(0,ev.jsx)(GY,{className:`${n} vtl-canvas-agent-conversation-node`,composerClassName:"max-w-[42rem]"});case"file-tab-viewer":case"browser-tab-viewer":case"diff-tab-viewer":case"data-table-tab-viewer":case"terminal-tab-group":return etL(t.tab??Un(e,`${e}-tab`),{terminalState:t.terminalState,terminalScopeId:t.terminalScopeId,onTerminalStateChange:t.onTerminalStateChange,onRequestFileTab:()=>t.onRequestFileTab?.({nodeId:t.nodeId}),onTabChange:e=>{t.nodeId&&t.onTabChange?.(t.nodeId,e)},onSaveFileTab:(e,n)=>t.nodeId?t.onSaveFileTab?.(t.nodeId,e,n):void 0,onOpenFileHistory:e=>t.nodeId?t.onOpenFileHistory?.(t.nodeId,e):void 0})}}function etB({kind:e,...t}){return etF(e,t)}let etV="application/vnd.vantaloom.agent-pane-shredder",etH="application/vnd.vantaloom.agent-pane-cutter",etW=[{id:"quad",label:"四分",slots:4,icon:(0,ev.jsx)(xz,{})},{id:"vertical-split",label:"上下二分",slots:2,icon:(0,ev.jsx)(Yx,{})},{id:"horizontal-split",label:"左右二分",slots:2,icon:(0,ev.jsx)(Ym,{})},{id:"left-two-right-one",label:"左二右一",slots:3,icon:(0,ev.jsx)(nu,{})},{id:"left-one-right-two",label:"左一右二",slots:3,icon:(0,ev.jsx)(WY,{})},{id:"top-two-bottom-one",label:"上二下一",slots:3,icon:(0,ev.jsx)(Yx,{})},{id:"top-one-bottom-two",label:"上一下二",slots:3,icon:(0,ev.jsx)(Yv,{})},{id:"single",label:"整窗口",slots:1,icon:(0,ev.jsx)(Yg,{})}];function etU(e,t,n=[50,50]){let r=e?.[t],i=r?.[0],a=r?.[1];return["number"==typeof i&&i>0?i:n[0],"number"==typeof a&&a>0?a:n[1]]}function etq(e,t){return{[e[0]]:t[0],[e[1]]:t[1]}}function etK(e,t){return[e[t[0]]??50,e[t[1]]??50]}function etG({mode:e,sizes:t,onSizeGroupChange:n,children:r}){if("single"===e)return(0,ev.jsx)("div",{className:"size-full min-h-0",children:r[0]});if("horizontal-split"===e){let e=etU(t,"outer"),i=["pane-0","pane-1"];return(0,ev.jsxs)(qN,{direction:"horizontal",defaultLayout:etq(i,e),onLayoutChanged:e=>n?.("outer",etK(e,i)),children:[(0,ev.jsx)(qC,{id:i[0],defaultSize:e[0],minSize:24,children:r[0]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:i[1],defaultSize:e[1],minSize:24,children:r[1]})]})}if("vertical-split"===e){let e=etU(t,"outer"),i=["pane-0","pane-1"];return(0,ev.jsxs)(qN,{direction:"vertical",defaultLayout:etq(i,e),onLayoutChanged:e=>n?.("outer",etK(e,i)),children:[(0,ev.jsx)(qC,{id:i[0],defaultSize:e[0],minSize:24,children:r[0]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:i[1],defaultSize:e[1],minSize:24,children:r[1]})]})}if("left-two-right-one"===e){let e=etU(t,"outer",[58,42]),i=etU(t,"left"),a=["left","right"],o=["pane-0","pane-1"];return(0,ev.jsxs)(qN,{direction:"horizontal",defaultLayout:etq(a,e),onLayoutChanged:e=>n?.("outer",etK(e,a)),children:[(0,ev.jsx)(qC,{id:a[0],defaultSize:e[0],minSize:24,children:(0,ev.jsxs)(qN,{direction:"vertical",defaultLayout:etq(o,i),onLayoutChanged:e=>n?.("left",etK(e,o)),children:[(0,ev.jsx)(qC,{id:o[0],defaultSize:i[0],minSize:20,children:r[0]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:o[1],defaultSize:i[1],minSize:20,children:r[1]})]})}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:a[1],defaultSize:e[1],minSize:24,children:r[2]})]})}if("left-one-right-two"===e){let e=etU(t,"outer",[42,58]),i=etU(t,"right"),a=["left","right"],o=["pane-1","pane-2"];return(0,ev.jsxs)(qN,{direction:"horizontal",defaultLayout:etq(a,e),onLayoutChanged:e=>n?.("outer",etK(e,a)),children:[(0,ev.jsx)(qC,{id:a[0],defaultSize:e[0],minSize:24,children:r[0]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:a[1],defaultSize:e[1],minSize:24,children:(0,ev.jsxs)(qN,{direction:"vertical",defaultLayout:etq(o,i),onLayoutChanged:e=>n?.("right",etK(e,o)),children:[(0,ev.jsx)(qC,{id:o[0],defaultSize:i[0],minSize:20,children:r[1]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:o[1],defaultSize:i[1],minSize:20,children:r[2]})]})})]})}if("top-two-bottom-one"===e){let e=etU(t,"outer",[58,42]),i=etU(t,"top"),a=["top","bottom"],o=["pane-0","pane-1"];return(0,ev.jsxs)(qN,{direction:"vertical",defaultLayout:etq(a,e),onLayoutChanged:e=>n?.("outer",etK(e,a)),children:[(0,ev.jsx)(qC,{id:a[0],defaultSize:e[0],minSize:24,children:(0,ev.jsxs)(qN,{direction:"horizontal",defaultLayout:etq(o,i),onLayoutChanged:e=>n?.("top",etK(e,o)),children:[(0,ev.jsx)(qC,{id:o[0],defaultSize:i[0],minSize:24,children:r[0]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:o[1],defaultSize:i[1],minSize:24,children:r[1]})]})}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:a[1],defaultSize:e[1],minSize:24,children:r[2]})]})}if("top-one-bottom-two"===e){let e=etU(t,"outer",[42,58]),i=etU(t,"bottom"),a=["top","bottom"],o=["pane-1","pane-2"];return(0,ev.jsxs)(qN,{direction:"vertical",defaultLayout:etq(a,e),onLayoutChanged:e=>n?.("outer",etK(e,a)),children:[(0,ev.jsx)(qC,{id:a[0],defaultSize:e[0],minSize:24,children:r[0]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:a[1],defaultSize:e[1],minSize:24,children:(0,ev.jsxs)(qN,{direction:"horizontal",defaultLayout:etq(o,i),onLayoutChanged:e=>n?.("bottom",etK(e,o)),children:[(0,ev.jsx)(qC,{id:o[0],defaultSize:i[0],minSize:24,children:r[1]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:o[1],defaultSize:i[1],minSize:24,children:r[2]})]})})]})}let i=etU(t,"outer"),a=etU(t,"left"),o=etU(t,"right"),l=["left","right"],s=["pane-0","pane-2"],c=["pane-1","pane-3"];return(0,ev.jsxs)(qN,{direction:"horizontal",defaultLayout:etq(l,i),onLayoutChanged:e=>n?.("outer",etK(e,l)),children:[(0,ev.jsx)(qC,{id:l[0],defaultSize:i[0],minSize:24,children:(0,ev.jsxs)(qN,{direction:"vertical",defaultLayout:etq(s,a),onLayoutChanged:e=>n?.("left",etK(e,s)),children:[(0,ev.jsx)(qC,{id:s[0],defaultSize:a[0],minSize:20,children:r[0]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:s[1],defaultSize:a[1],minSize:20,children:r[2]})]})}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:l[1],defaultSize:i[1],minSize:24,children:(0,ev.jsxs)(qN,{direction:"vertical",defaultLayout:etq(c,o),onLayoutChanged:e=>n?.("right",etK(e,c)),children:[(0,ev.jsx)(qC,{id:c[0],defaultSize:o[0],minSize:20,children:r[1]}),(0,ev.jsx)(qM,{withHandle:!0}),(0,ev.jsx)(qC,{id:c[1],defaultSize:o[1],minSize:20,children:r[3]})]})})]})}function etY({conversationId:e,index:t,content:n,clipboardItems:r,clipboardDraggingId:i,onAdd:a,onPanelDrop:o,onContentChange:l,onClear:s,onCut:c,workspaceFolders:d,onRequestFileTab:u,onOpenWorkspaceFile:f,onSaveFileTab:h,onOpenFileHistory:p}){let[m,g]=ey.useState();return(0,ev.jsx)("div",{"data-agent-pane":t,className:tK("relative size-full min-h-0 min-w-0 overflow-hidden",n?.kind!=="subagent-conversation-panel"&&"bg-background","vtl-agent-workspace-pane",n?.kind==="subagent-conversation-panel"&&"vtl-agent-workspace-conversation-pane bg-transparent","panel"===m&&"ring-2 ring-foreground/60 ring-inset","shredder"===m&&"ring-2 ring-destructive/70 ring-inset","cutter"===m&&"ring-2 ring-amber-500/70 ring-inset"),onDragOver:e=>{let t=Array.from(e.dataTransfer.types);if(t.includes(etH)){e.preventDefault(),e.dataTransfer.dropEffect="move",g("cutter");return}if(t.includes(etV)){e.preventDefault(),e.dataTransfer.dropEffect="move",g("shredder");return}t.includes(Ko)&&(e.preventDefault(),e.dataTransfer.dropEffect="move",g("panel"))},onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||g(void 0)},onDrop:e=>{if(Array.from(e.dataTransfer.types).includes(etH)){e.preventDefault(),e.stopPropagation(),g(void 0),c(t);return}if(Array.from(e.dataTransfer.types).includes(etV)){e.preventDefault(),e.stopPropagation(),g(void 0),s(t);return}let n=function(e){let t=e.dataTransfer.getData("application/vnd.vantaloom.clip-id"),n=r.find(e=>e.id===t),i=n?n.payloads?.[Ko]:void 0;if(n&&i)return{item:n,content:i.content};let a=e.dataTransfer.getData(Ko);if(a)try{let e=JSON.parse(a);return n&&e.content?{item:n,content:e.content}:void 0}catch{return}}(e);n&&(e.preventDefault(),e.stopPropagation(),g(void 0),o(t,n.item,n.content))},children:n?(0,ev.jsx)("div",{className:tK("size-full min-h-0 min-w-0 overflow-hidden rounded-none","vtl-agent-pane-content","subagent-conversation-panel"===n.kind&&"vtl-agent-pane-conversation-content",i&&"pointer-events-none"),children:Ka(n)?etF(n.kind,{tab:n.tab,terminalScopeId:e?`agent:${e}:pane:${n.id}`:void 0,terminalState:n.terminal,onTerminalStateChange:e=>{var r;r=n.terminal,((r?.activeSessionId??"")!==(e.activeSessionId??"")||(r?.selectedMachineId??"")!==(e.selectedMachineId??"")||(r?.selectedShellId??"")!==(e.selectedShellId??"")||(r?.autoStart??!0)!==(e.autoStart??!0)||(r?.sessionIds??[]).join("\0")!==e.sessionIds.join("\0")||(r?.aiControlledSessionIds??[]).join("\0")!==(e.aiControlledSessionIds??[]).join("\0"))&&l(t,{...n,terminal:e})},workspaceFolders:d,nodeId:n.id,tabs:n.tabs,activeTabId:n.activeTabId,onRequestFileTab:({insertIndex:e})=>u?.(t,e),onOpenWorkspaceFile:f,onTabsChange:(e,r)=>{l(t,{...n,tabs:r,activeTabId:r.some(e=>e.id===n.activeTabId)?n.activeTabId:r[0]?.id})},onTabChange:(e,r)=>{"multi-tab-system"===n.kind?l(t,{...n,tabs:(n.tabs??[]).map(e=>e.id===r.id?r:e),activeTabId:r.id}):l(t,{...n,title:r.title,tab:r})},onSaveFileTab:(e,n,r)=>h?.(t,n,r),onOpenFileHistory:(e,n)=>p?.(t,n),onActiveTabChange:(e,r)=>{l(t,{...n,activeTabId:r})}}):(0,ev.jsx)(GY,{className:"size-full min-h-0",composerClassName:"max-w-[42.5rem]",initialEvents:n.events},n.id)},n.id):(0,ev.jsx)("div",{className:"vtl-agent-pane-empty grid size-full place-items-center p-4",children:(0,ev.jsxs)(tY,{type:"button",variant:"outline",size:"sm",className:"rounded-full bg-background/90",onClick:a,children:[(0,ev.jsx)(sQ,{className:"size-4"}),"添加"]})})})}function etX({open:e,onOpenChange:t,onAdd:n}){return(0,ev.jsx)(mm,{open:e,onOpenChange:t,title:"添加工作区组件",description:"选择一个组件填入当前窗口。",className:"top-1/2 max-w-xl -translate-y-1/2",children:(0,ev.jsxs)(mp,{loop:!0,children:[(0,ev.jsx)(mg,{placeholder:"搜索组件..."}),(0,ev.jsxs)(mv,{children:[(0,ev.jsx)(mx,{children:"没有匹配组件。"}),(0,ev.jsx)(my,{heading:"可放入窗口",children:Kr.map(e=>(0,ev.jsxs)(mb,{value:`${e.title} ${e.description} ${e.keywords}`,onSelect:()=>n(e.id),children:[(0,ev.jsx)("span",{className:"grid size-8 shrink-0 place-items-center rounded-lg border bg-background text-muted-foreground",children:e.icon}),(0,ev.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,ev.jsx)("span",{className:"block truncate text-sm font-medium",children:e.title}),(0,ev.jsx)("span",{className:"block truncate text-xs text-muted-foreground",children:e.description})]}),(0,ev.jsx)(mw,{children:"添加"})]},e.id))})]})]})})}let etZ=[],etJ="vantaloom:file-system-changed";function etQ(e){var t;let n=(t=e?.layoutMode,etW.some(e=>e.id===t)?t:"quad"),r="right"===e?.agentPosition?"right":"left",i=function(e){if(!e||"object"!=typeof e||Array.isArray(e))return{};let t=e.shell&&"object"==typeof e.shell&&!Array.isArray(e.shell)?e.shell:void 0,n={};for(let e of["agent","panes"]){let r=t?.[e];"number"==typeof r&&Number.isFinite(r)&&r>0&&(n[e]=r)}return{...Object.keys(n).length?{shell:n}:{},outer:et0(e.outer),left:et0(e.left),right:et0(e.right),top:et0(e.top),bottom:et0(e.bottom)}}(e?.sizes),a=Array.from({length:Math.max(4,etW.find(e=>e.id===n)?.slots??4)},()=>void 0);for(let[t,n]of(e?.panes??[]).entries()){let e=Number.isInteger(n.slot)?n.slot:t;e<0||e>=a.length||(a[e]=function(e,t){var n,r;let i=e.paneId||`${e.kind}-${t+1}`,a=!(n=e.props)||"object"!=typeof n||Array.isArray(n)?{}:n;if("subagent-conversation-panel"===e.kind)return{id:i,kind:"subagent-conversation-panel",title:et2(a.title)??"Subagent",subagentId:et2(a.subagentId)??i,events:Array.isArray(a.events)?a.events:[]};if(!Ki(e.kind))return;let o=a.tab&&"object"==typeof a.tab?a.tab:void 0,l=Array.isArray(a.tabs)?a.tabs.filter(e=>Ue(e?.kind)):void 0,s=Ki(e.kind);return{id:i,kind:e.kind,title:et2(a.title)??o?.title??s?.title??"组件",tab:o,tabs:l,activeTabId:et2(a.activeTabId),terminal:"terminal-tab-group"===e.kind?!(r=a.terminal)||"object"!=typeof r||Array.isArray(r)?{sessionIds:[]}:{sessionIds:Array.isArray(r.sessionIds)?r.sessionIds.filter(e=>"string"==typeof e):[],activeSessionId:et2(r.activeSessionId),selectedMachineId:et2(r.selectedMachineId),selectedShellId:et2(r.selectedShellId),autoStart:"boolean"==typeof r.autoStart?r.autoStart:void 0,aiControlledSessionIds:Array.isArray(r.aiControlledSessionIds)?r.aiControlledSessionIds.filter(e=>"string"==typeof e):void 0}:void 0}}(n,t))}return{layoutMode:n,agentPosition:r,layoutSizes:i,panes:a}}function et0(e){if(!Array.isArray(e))return;let t=e.filter(e=>"number"==typeof e&&Number.isFinite(e)&&e>0);return t.length?t:void 0}function et1(e){return e.filter(e=>"number"==typeof e&&Number.isFinite(e)&&e>0)}function et2(e){return"string"==typeof e&&e.trim()?e:void 0}function et5(e){let t=e?.id.match(/-(\d+)$/);return t?Number(t[1]):0}function et4(e){return e.reduce((e,t)=>Math.max(e,et5(t)),0)}function et3({conversation:e,clipboardItems:t,clipboardDraggingId:n,onClipboardItemsChange:r,onClipboardDraggingChange:i,onOverlayOpenChange:a}){let o=cy(),l=etQ(e?.panes),[s,c]=ey.useState(l.layoutMode),[d,u]=ey.useState(l.agentPosition),[f,h]=ey.useState(l.layoutSizes),[p,m]=ey.useState(()=>l.panes),[g,v]=ey.useState(()=>e?.events??[]),[x,y]=ey.useState(""),[b,w]=ey.useState(e?.conversation.status==="working"),[j,k]=ey.useState(e?.conversation.status??"idle"),[S,N]=ey.useState(e?.conversation.settings?.permissionMode??"acceptEdits"),[C,M]=ey.useState([]),[E,O]=ey.useState(e?.conversation.tokens??0),[P,z]=ey.useState(e?.conversation.runUsage),[A,I]=ey.useState(!1),_=ey.useRef(j),[D,T]=ey.useState(),[R,L]=ey.useState(),[$,F]=ey.useState(),B=ey.useRef(et4(l.panes)),V=ey.useRef(0),H=ey.useRef(""),W=etW.find(e=>e.id===s)?.slots??4,U=e?.conversation.settings.folders??etZ,{models:q}=va(),K=ey.useMemo(()=>{let t=e?.conversation.settings.mainModels??[];return t.length?q.filter(e=>t.includes(e.value)).map(e=>({id:e.value,label:e.label})):[]},[q,e?.conversation.settings.mainModels]),G=b||"working"===j,Y=ey.useCallback(async t=>{if(!e||A)return;let n=e.conversation.id,r=e.conversation.ownerMachineId;if(G)return void await WR(n,"precise"===t?"请在完成当前小任务后进行精确压缩(去除冗余文件读取和旧工具输出)。":"请在完成当前小任务后进行极致压缩(AI摘要),以便继续工作。",r);I(!0);try{await WL(n,t,void 0,r);let e=await WN(n,r);if(e){let t=W$(e);v(t.events),O(t.conversation.tokens??0),z(t.conversation.runUsage)}}catch{}finally{I(!1)}},[e,A,G]),X=ey.useMemo(()=>{if(!e)return;let t=q.find(e=>e.value===x),n=t?.contextLength||200,r=P?.inputTokens??0,i=P?.outputTokens??0;return{used:E+r+i,total:1e3*n,toolCalls:r,userMessages:i,other:E>0?E:void 0,onCompressPrecise:()=>Y("precise"),onCompressExtreme:()=>Y("extreme"),compressing:A}},[e,q,x,E,P,Y,A]),Z=ey.useCallback(async e=>{if("file-tab-viewer"!==e.kind||e.modified||e.file?.readOnly)return e;try{var t,n;let r=await Us(e);return(t=e,n=r,t.defaultValue!==n.defaultValue||t.title!==n.title||t.file?.size!==n.file?.size||t.file?.mimeType!==n.file?.mimeType||t.file?.previewContent!==n.file?.previewContent||t.file?.src!==n.file?.src||t.file?.truncated!==n.file?.truncated)?r:e}catch{return e}},[]),J=ey.useCallback(async e=>{if(!e||!Ka(e))return e;if("multi-tab-system"===e.kind){var t,n;let r=e.tabs??[],i=await Promise.all(r.map(Z));return(t=r,n=i,t.length!==n.length||t.some((e,t)=>e!==n[t]))?{...e,tabs:i}:e}if("file-tab-viewer"===e.kind&&e.tab){let t=await Z(e.tab);return t!==e.tab?{...e,title:t.title,tab:t}:e}return e},[Z]),Q=ey.useCallback(async()=>{var e,t;let n=await Promise.all(p.map(async e=>J(e)));e=p,t=n,(e.length!==t.length||e.some((e,n)=>e!==t[n]))&&m(n)},[p,J]);function ee(e){if(!e.length)return;let t=e.map(Kl);r(e=>[...t,...e.filter(e=>!t.some(t=>t.id===e.id))])}function et(e,t,n){if(!e||!Ka(e))return e;if("multi-tab-system"===e.kind){var r;let i,a;return{...e,tabs:(r=e.tabs??[],i=r.filter(e=>e.id!==t.id),a=void 0===n?i.length:Math.min(Math.max(n,0),i.length),i.splice(a,0,t),i),activeTabId:t.id}}return"file-tab-viewer"===e.kind?{...e,title:t.title,tab:t}:e}function en(e,t){return e&&Ka(e)?"multi-tab-system"===e.kind?{...e,tabs:(e.tabs??[]).map(e=>e.id===t.id?t:e),activeTabId:t.id}:"file-tab-viewer"===e.kind?{...e,title:t.title,tab:t}:e:e}async function er(e,t,n){try{let r=await Uo(e);m(e=>e.map((e,i)=>i===t?et(e,r,n):e))}catch{qB.error("文件预览打开失败")}}function ei(e){let t=p.slice(0,W).findIndex(e=>e?.kind==="multi-tab-system");t<0?qB.warning("请先放入一个多标签页组件"):er(e,t)}function ea(e){let t=e.path?.trim()||e.name.trim();("diff"===e.kind||"diff"===e.meta)&&e.diff?function(e){let t=p.slice(0,W).findIndex(e=>e?.kind==="multi-tab-system");if(t<0)return qB.warning("请先放入一个多标签页组件");let n=e.path?.trim()||e.name.trim(),r={id:function(e,t){let n=0x811c9dc5;for(let e=0;e<t.length;e+=1)n^=t.charCodeAt(e),n=Math.imul(n,0x1000193);return`${e}-${(n>>>0).toString(36)}`}("diff",`${e.mutationId??""}|${e.machineId??"local"}|${n}|${e.diff??""}`),kind:"diff-tab-viewer",title:`Diff ${e.name}`,file:{name:e.name,path:n,machineId:e.machineId??"local",kind:"code"},diff:e.diff};m(e=>e.map((e,n)=>n===t?et(e,r):e))}(e):!t||e.meta?.toLowerCase().startsWith("depth")||ei({machineId:e.machineId??"local",path:t})}async function eo(e,t,n){let r=t.file?.path,i=t.file?.machineId??"local";if(!r)throw qB.error("文件路径不可用"),Error("file path is unavailable");try{let a=await wk({machineId:i,path:r,content:n}),o={...await Ul(a,{id:t.id,title:t.title,defaultView:t.defaultView,defaultMode:t.defaultMode}),modified:!1};m(t=>t.map((t,n)=>n===e?en(t,o):t)),window.dispatchEvent(new CustomEvent(etJ)),qB.success("文件已保存")}catch(e){throw qB.error("文件保存失败"),e}}async function el(t){let n=e?.conversation.id,r=$?.tab.file?.path,i=$?.tab.file?.machineId??"local";if($&&n&&r)try{let a=await W_(n,{machineId:i,path:r,mutationId:t.mutationId,state:t.state},e?.conversation.ownerMachineId),o=await Ul(a,{id:$.tab.id,title:`${a.name} @ ${et8(t.mutationId)} ${"before"===t.state?"before":"after"}`,readOnly:!0,defaultView:$.tab.defaultView,defaultMode:"review"});m(e=>e.map((e,t)=>t===$.paneIndex?en(e,o):e)),F(void 0)}catch{qB.error("历史版本打开失败")}}function es(e,t,n){let a=p[e];B.current=Math.max(B.current,et5(n)),m(t=>t.map((t,r)=>r===e?n:t)),r(e=>{let n=e.filter(e=>e.id!==t.id);if(!a)return n;let r=Kl(a);return[r,...n.filter(e=>e.id!==r.id)]}),i?.(void 0)}function ec(e,t){m(n=>n.map((n,r)=>r===e?t:n))}function ed(e){var t;let n=p.slice(0,W),r=n.findIndex(e=>!e),i=n.findIndex(e=>e?.kind==="subagent-conversation-panel"),a=r>=0?r:i;if(a<0)return void qB.warning("请释放一个窗口再选中浏览");V.current+=1;let o={id:t=`subagent-${e.id}-${V.current}`,kind:"subagent-conversation-panel",title:e.title,subagentId:e.id,events:e.events?.length?e.events:[{id:`${t}-status`,kind:"done",title:e.detail??e.status??e.activity??e.title}]};m(e=>e.map((e,t)=>t===a?o:e))}function eu(e){var t=p[e];if(t&&Ka(t)&&"terminal-tab-group"===t.kind)for(let e of t.terminal?.sessionIds??[])Uw(e).catch(()=>{});m(t=>t.map((t,n)=>n===e?void 0:t))}function ef(e){let t=p[e];t&&ee([t]),m(t=>t.map((t,n)=>n===e?void 0:t))}async function eh(t,n="chat"){let r=e?.conversation.id,i=x||K[0]?.id;if(r){if(!i)return void qB.error("请先在代理模型配置里选择模型");w(!0),k("working");try{let a=await Wz(r,{message:t,modelRef:i,mode:n},e?.conversation.ownerMachineId);v(a.events),k(a.conversation.status)}catch(e){w(!1),k("idle"),qB.error(e instanceof Error?e.message:"对话请求失败")}}}async function ep(t){let n=e?.conversation.id,r=("string"==typeof t.modelRef?t.modelRef.trim():"")||x||K[0]?.id,i="agent"===t.mode?"agent":"chat";if(n){if(!r)return void qB.error("请先在代理模型配置里选择模型");w(!0),k("working"),v(e=>e.map(e=>e.id===t.id?{...e,status:"retried"}:e));try{let a=await WA(n,{modelRef:r,mode:i,retryEventId:t.id},e?.conversation.ownerMachineId);v(a.events),k(a.conversation.status)}catch(e){v(e=>e.map(e=>e.id===t.id?t:e)),w(!1),k("idle"),qB.error(e instanceof Error?e.message:"对话重试失败")}}}async function em(t){let n=e?.conversation.id;if(n)try{let r=e?.conversation.settings??{};await WE(n,{settings:{...r,...t}},e?.conversation.ownerMachineId)}catch(e){qB.error(e instanceof Error?e.message:"设置更新失败")}}async function eg(t,n){let r=e?.conversation.id;if(r)try{await WD(r,t,n,void 0,e?.conversation.ownerMachineId)}catch(e){qB.error(e instanceof Error?e.message:"审批操作失败")}}async function ex(){let t=e?.conversation.id;if(t){try{await WT(t,e?.conversation.ownerMachineId)}catch{}w(!1),k("idle")}}function eb(){eh("继续","agent")}async function ew(t){let n=e?.conversation.id;if(!n)return;let r=C.find(e=>e.id===t);if(!r)return;let i="string"==typeof r.content?r.content:String(r.content??"");if(i.trim()){M(e=>e.filter(e=>e.id!==t));try{await WR(n,i.trim(),e?.conversation.ownerMachineId)}catch{}}}ey.useEffect(()=>{a?.(void 0!==D||void 0!==R||void 0!==$)},[R,$,a,D]),ey.useEffect(()=>{v(e?.events??[])},[e?.conversation.id,e?.events]),ey.useEffect(()=>{w(e?.conversation.status==="working"),k(e?.conversation.status??"idle")},[e?.conversation.id,e?.conversation.status]),ey.useEffect(()=>{O(e?.conversation.tokens??0),z(e?.conversation.runUsage)},[e?.conversation.id,e?.conversation.tokens,e?.conversation.runUsage]),ey.useEffect(()=>{N(e?.conversation.settings?.permissionMode??"acceptEdits")},[e?.conversation.id,e?.conversation.settings?.permissionMode]),ey.useEffect(()=>{let e=K[0]?.id??"";y(t=>K.some(e=>e.id===t)?t:e)},[K]),ey.useEffect(()=>{let t=etQ(e?.panes);c(t.layoutMode),u(t.agentPosition),h(t.layoutSizes),m(t.panes),B.current=et4(t.panes)},[e?.conversation.id,e?.panes]),ey.useEffect(()=>{let t,n=e?.conversation.id,r=e?.conversation.ownerMachineId;if(!n||!G)return;let i=!1,a=e=>{v(e.events),k(e.conversation.status),O(e.conversation.tokens??0),z(e.conversation.runUsage);let t=etQ(e.panes);c(t.layoutMode),u(t.agentPosition),h(t.layoutSizes),m(t.panes)},o=e=>{void 0===t&&(t=window.setInterval(async()=>{try{let e=await WN(n,r);if(i)return;a(e),"working"!==e.conversation.status&&(w(!1),void 0!==t&&(window.clearInterval(t),t=void 0))}catch{return}},e))};if(r&&"local"!==r)return o(600),()=>{i=!0,void 0!==t&&window.clearInterval(t)};let l=new EventSource(tJ(`/api/local/agent/conversations/${encodeURIComponent(n)}/events/stream`));return l.addEventListener("detail",e=>{try{let t=W$(JSON.parse(e.data));a(t),"working"!==t.conversation.status&&(w(!1),l.close())}catch{return}}),l.onerror=()=>{l.close(),o(350)},()=>{i=!0,l.close(),void 0!==t&&window.clearInterval(t)}},[e?.conversation.id,e?.conversation.ownerMachineId,G]),ey.useEffect(()=>{if(!e?.conversation.id)return;let t=window.setInterval(()=>{Q()},3e3);return()=>window.clearInterval(t)},[e?.conversation.id,Q]),ey.useEffect(()=>{let e=g.filter(e=>"change"===e.kind).map(e=>`${e.id}:${e.status??""}:${e.isStreaming?"1":"0"}`).join("|");e&&e!==H.current&&(H.current=e,window.dispatchEvent(new CustomEvent(etJ)),Q())},[g,Q]),ey.useEffect(()=>{let t=e?.conversation.id;if(!t)return;let n=window.setTimeout(()=>{let n;WP(t,(n=[],p.forEach((e,t)=>{if(e){if(Ka(e))return void n.push({paneId:e.id,slot:t,kind:e.kind,machineId:e.terminal?.selectedMachineId,resourceId:e.terminal?.activeSessionId,props:{title:e.title,tab:e.tab,tabs:e.tabs,activeTabId:e.activeTabId,terminal:e.terminal}});n.push({paneId:e.id,slot:t,kind:e.kind,props:{title:e.title,subagentId:e.subagentId,events:e.events}})}}),{layoutMode:s,agentPosition:d,sizes:f,panes:n}),e?.conversation.ownerMachineId)},300);return()=>window.clearTimeout(n)},[d,e?.conversation.id,s,f,p]),ey.useEffect(()=>{let e=_.current;if(_.current=j,"working"===e&&"idle"===j&&C.length>0){let e=C[0];if(e){M(C.slice(1));let t="string"==typeof e.content?e.content:String(e.content??"");t.trim()&&eh(t.trim(),"agent")}}},[j]);let ej=Array.from({length:W},(r,i)=>(0,ev.jsx)(etY,{conversationId:e?.conversation.id,index:i,content:p[i],clipboardItems:t,clipboardDraggingId:n,onAdd:()=>T(i),onPanelDrop:es,onContentChange:ec,onClear:eu,onCut:ef,workspaceFolders:U,onRequestFileTab:(e,t)=>L({paneIndex:e,insertIndex:t}),onOpenWorkspaceFile:ei,onSaveFileTab:eo,onOpenFileHistory:(e,t)=>F({paneIndex:e,tab:t})},i)),ek=p.slice(0,W).some(e=>e?.kind==="subagent-conversation-panel"),eS=f.shell?.agent??42,eN=f.shell?.panes??58,eC=(0,ev.jsx)(qC,{id:"agent",defaultSize:eS,minSize:28,children:(0,ev.jsx)(GY,{events:e?g:void 0,models:e?K:void 0,modelId:x,permissionModeId:S,onPermissionModeChange:t=>{N(t),e?.conversation.id&&em({permissionMode:t})},running:G,disabled:!!e&&0===K.length,onModelChange:y,onSubmit:e?e=>{eh(e.value,"agent")}:void 0,onStop:ex,onOpenFile:ea,onOpenSubagent:ed,onRetry:ep,onApprovalDecision:eg,onContinue:eb,queuedMessages:C,onQueuedMessagesChange:M,onNudge:ew,contextUsage:X})},"agent-conversation"),eM=(0,ev.jsx)(qC,{id:"panes",defaultSize:eN,minSize:32,children:(0,ev.jsxs)("section",{className:"vtl-agent-workspace-panel flex size-full min-h-0 min-w-0 flex-col bg-transparent","data-has-conversation-pane":ek?"true":void 0,children:[(0,ev.jsx)("div",{className:"flex h-11 shrink-0 items-center border-b px-3",children:(0,ev.jsxs)("div",{className:"flex min-w-0 items-center gap-2",children:[(0,ev.jsx)(q0,{value:s,onValueChange:e=>{let t,n;return t=etW.find(t=>t.id===e)?.slots??4,void((n=p.slice(t).filter(e=>!!e)).length&&ee(n),m(Array.from({length:Math.max(4,t)},(e,n)=>n<t?p[n]:void 0)),c(e))},children:(0,ev.jsx)(q9,{children:etW.map(e=>(0,ev.jsx)(Ke,{value:e.id,"aria-label":e.label,title:e.label,className:"h-7 w-10 px-0 [&_svg]:size-4",children:e.icon},e.id))})}),(0,ev.jsxs)(b3,{type:"single",value:d,variant:"outline",size:"sm","aria-label":"Agent 面板位置",onValueChange:e=>{("left"===e||"right"===e)&&u(e)},children:[(0,ev.jsx)(b6,{value:"left","aria-label":"Agent 在左",title:"Agent 在左",className:"h-7 w-9 px-0 [&_svg]:size-4",children:(0,ev.jsx)(nu,{})}),(0,ev.jsx)(b6,{value:"right","aria-label":"Agent 在右",title:"Agent 在右",className:"h-7 w-9 px-0 [&_svg]:size-4",children:(0,ev.jsx)(WY,{})})]}),(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm",draggable:!0,"aria-label":"剪切窗口内容",title:"拖拽到窗口以剪切到剪切板",className:"h-7 w-10 cursor-grab rounded-md text-muted-foreground active:cursor-grabbing [&_svg]:size-4",onDragStart:e=>{e.dataTransfer.effectAllowed="move",e.dataTransfer.setData(etH,"cut")},children:(0,ev.jsx)(s1,{})}),(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm",draggable:!0,"aria-label":"粉碎窗口内容",title:"拖拽到窗口以清空",className:"h-7 w-10 cursor-grab rounded-md text-muted-foreground active:cursor-grabbing [&_svg]:size-4",onDragStart:e=>{e.dataTransfer.effectAllowed="move",e.dataTransfer.setData(etV,"clear")},children:(0,ev.jsx)(WX,{})})]})}),(0,ev.jsx)("div",{className:"min-h-0 flex-1",children:(0,ev.jsx)(etG,{mode:s,sizes:f,onSizeGroupChange:function(e,t){let n=et1(t);h(t=>{var r;return(r=t[e],(r?.length??0)===(n?.length??0)&&(r??[]).every((e,t)=>.01>Math.abs(e-(n?.[t]??0))))?t:{...t,[e]:n}})},children:ej},`${e?.conversation.id??"empty"}-${s}`)})]})},"agent-panes"),eE=(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(etX,{open:void 0!==D,onOpenChange:e=>{e||T(void 0)},onAdd:function(e){var t;let n,r;if(void 0===D)return;B.current+=1;let i=(t=`${e}-${B.current}`,n=Ki(e),r="file-tab-viewer"===e?{id:t,kind:e,title:"选择文件"}:Ue(e)?Un(e,t):void 0,{id:t,kind:e,title:r?.title??n?.title??"组件",tab:r,tabs:"multi-tab-system"===e?[]:void 0,terminal:"terminal-tab-group"===e?{sessionIds:[],autoStart:!0}:void 0}),a=p[D];a&&ee([a]),m(e=>e.map((e,t)=>t===D?i:e)),T(void 0)}}),(0,ev.jsx)(Yh,{open:void 0!==R,folders:U,onOpenChange:e=>{e||L(void 0)},onSelectFile:e=>{R&&er(e,R.paneIndex,R.insertIndex),L(void 0)}}),(0,ev.jsx)(et6,{open:void 0!==$,conversationId:e?.conversation.id,ownerMachineId:e?.conversation.ownerMachineId,tab:$?.tab,onOpenChange:e=>{e||F(void 0)},onSelectVersion:e=>{el(e)}})]});return o?(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(Kn,{conversationPanel:(0,ev.jsx)(GY,{events:e?g:void 0,models:e?K:void 0,modelId:x,permissionModeId:S,onPermissionModeChange:t=>{N(t),e?.conversation.id&&em({permissionMode:t})},running:G,disabled:!!e&&0===K.length,onModelChange:y,onSubmit:e?e=>{eh(e.value,"agent")}:void 0,onStop:ex,onOpenFile:ea,onOpenSubagent:ed,onRetry:ep,onApprovalDecision:eg,onContinue:eb,queuedMessages:C,onQueuedMessagesChange:M,onNudge:ew,contextUsage:X}),paneElements:ej,panes:p,activeSlotCount:W,onOpenPalette:T}),eE,(0,ev.jsx)(qK,{position:"top-center"})]}):(0,ev.jsxs)("div",{className:"vtl-app-background vtl-agent-conversation-workspace h-full min-h-0 pl-[5.25rem]",children:[(0,ev.jsxs)(qN,{direction:"horizontal",defaultLayout:{agent:eS,panes:eN},onLayoutChanged:e=>{let t=e.agent??eS,n=e.panes??eN;!function(e){let t=et1(e),n=t[0],r=t[1];if(void 0===n||void 0===r)return;let i="left"===d?{agent:n,panes:r}:{agent:r,panes:n};h(e=>{let t=e.shell?.agent,n=e.shell?.panes;return .01>Math.abs((t??0)-i.agent)&&.01>Math.abs((n??0)-i.panes)?e:{...e,shell:{...e.shell,...i}}})}("left"===d?[t,n]:[n,t])},children:["left"===d?eC:eM,(0,ev.jsx)(qM,{withHandle:!0}),"left"===d?eM:eC]},`${e?.conversation.id??"empty"}-${d}`),eE,(0,ev.jsx)(qK,{position:"top-right"})]})}function et6({open:e,conversationId:t,ownerMachineId:n,tab:r,onOpenChange:i,onSelectVersion:a}){let[o,l]=ey.useState([]),[s,c]=ey.useState(!1),d=r?.file?.path,u=r?.file?.machineId??"local";return ey.useEffect(()=>{if(!e||!t||!d)return void l([]);let r=!1;return c(!0),WI(t,{machineId:u,path:d},n).then(e=>{r||l(e.versions)}).catch(()=>{r||l([])}).finally(()=>{r||c(!1)}),()=>{r=!0}},[t,n,u,e,d]),(0,ev.jsx)(px,{open:e,onOpenChange:i,children:(0,ev.jsxs)(md,{className:"max-w-xl gap-0 overflow-hidden p-0",children:[(0,ev.jsx)(mf,{className:"sr-only",children:"历史版本"}),(0,ev.jsx)(mh,{className:"sr-only",children:"浏览当前文件在此 Agent 会话中的修改历史。"}),(0,ev.jsxs)("div",{className:"border-b px-4 py-3",children:[(0,ev.jsx)("div",{className:"truncate text-sm font-medium",children:r?.file?.name??r?.title??"文件"}),d?(0,ev.jsxs)("div",{className:"mt-0.5 truncate ui-text-kbd text-muted-foreground",children:[u,":",d]}):null]}),(0,ev.jsx)("div",{className:"max-h-[28rem] overflow-auto p-2",children:s?(0,ev.jsx)("div",{className:"px-3 py-8 text-center text-xs text-muted-foreground",children:"正在读取历史版本"}):0===o.length?(0,ev.jsx)("div",{className:"px-3 py-8 text-center text-xs text-muted-foreground",children:"还没有记录到这个文件的修改历史"}):(0,ev.jsx)("div",{className:"grid gap-1",children:o.map(e=>{var t;let n;return(0,ev.jsxs)("button",{type:"button",className:"grid grid-cols-[minmax(0,1fr)_auto] items-center gap-3 rounded-md px-3 py-2 text-left transition-colors hover:bg-muted/70",onClick:()=>a(e),children:[(0,ev.jsxs)("span",{className:"min-w-0",children:[(0,ev.jsxs)("span",{className:"block truncate text-sm font-medium",children:[et8(e.mutationId)," ·"," ","before"===e.state?"修改前":"修改后"]}),(0,ev.jsx)("span",{className:"mt-0.5 block truncate ui-text-kbd text-muted-foreground",children:Number.isFinite(n=Date.parse(t=e.createdAt))?new Intl.DateTimeFormat("zh-CN",{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(n):t})]}),(0,ev.jsxs)("span",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[(0,ev.jsxs)("b",{className:"font-medium text-emerald-600",children:["+",e.additions??0]}),(0,ev.jsxs)("b",{className:"font-medium text-rose-600",children:["-",e.deletions??0]})]})]},e.id)})})})]})})}function et8(e){return e.replace(/^mut-/,"").slice(0,16)}let et7=eS("layout-template",[["rect",{width:"18",height:"7",x:"3",y:"3",rx:"1",key:"f1a2em"}],["rect",{width:"9",height:"7",x:"3",y:"14",rx:"1",key:"jqznyg"}],["rect",{width:"5",height:"7",x:"16",y:"14",rx:"1",key:"q5h2i8"}]]),et9=eS("lock-keyhole",[["circle",{cx:"12",cy:"16",r:"1",key:"1au0dj"}],["rect",{x:"3",y:"10",width:"18",height:"12",rx:"2",key:"6s8ecr"}],["path",{d:"M7 10V7a5 5 0 0 1 10 0v3",key:"1pqi11"}]]),ene=eS("share-2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]),ent=eS("sliders-horizontal",[["path",{d:"M10 5H3",key:"1qgfaw"}],["path",{d:"M12 19H3",key:"yhmn1j"}],["path",{d:"M14 3v4",key:"1sua03"}],["path",{d:"M16 17v4",key:"1q0r14"}],["path",{d:"M21 12h-9",key:"1o4lsq"}],["path",{d:"M21 19h-5",key:"1rlt1p"}],["path",{d:"M21 5h-7",key:"1oszz2"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M8 12H3",key:"a7s4jb"}]]);function enn({clipboardItems:e=[],onClipboardItemsChange:t,onOverlayOpenChange:n}){let[r,i]=ey.useState(),a=ey.useMemo(()=>Wg({onSelect:i}),[]);return(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(mD,{boardId:"canvas-library",definitions:a,initialLayouts:Wv,clipboardItems:e,actionLabel:"画布库页面卡片操作",paletteGroupTitle:"画布库页面卡片",onClipboardItemsChange:t,onOverlayOpenChange:n}),(0,ev.jsx)(eni,{canvas:r,onOpenChange:e=>{e||i(void 0)}})]})}function enr({icon:e,value:t}){return(0,ev.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:[(0,ev.jsx)("span",{className:"[&_svg]:size-3.5",children:e}),(0,ev.jsx)("span",{className:"tabular-nums",children:t})]})}function eni({canvas:e,onOpenChange:t}){return e?(0,ev.jsx)(gt,{open:!!e,onOpenChange:t,title:e.title,eyebrow:"画布管理",description:e.purpose,panels:[{id:"overview",label:"首页",icon:(0,ev.jsx)(mQ,{}),content:(0,ev.jsx)(ena,{canvas:e})},{id:"templates",label:"节点模板",icon:(0,ev.jsx)(et7,{}),badge:e.settings.nodeTemplates.length,content:(0,ev.jsx)(enl,{title:"可用节点模板",items:e.settings.nodeTemplates})},{id:"layout",label:"默认布局",icon:(0,ev.jsx)(ent,{}),content:(0,ev.jsx)(enl,{title:"默认布局参数",items:e.settings.defaultLayout})},{id:"folders",label:"工作区绑定",icon:(0,ev.jsx)(mX,{}),content:(0,ev.jsx)(enl,{title:"绑定的工作区文件夹",items:e.settings.folders})},{id:"sharing",label:"共享权限",icon:(0,ev.jsx)(ene,{}),content:(0,ev.jsx)(enl,{title:"共享与权限",items:e.settings.sharing})},{id:"autosave",label:"自动保存",icon:(0,ev.jsx)(QA,{}),content:(0,ev.jsx)(enl,{title:"自动保存策略",items:e.settings.autosave})},{id:"snapshots",label:"快照和版本",icon:(0,ev.jsx)(Wo,{}),content:(0,ev.jsx)(enl,{title:"快照和版本策略",items:e.settings.snapshots})},{id:"hosts",label:"可访问主机",icon:(0,ev.jsx)(mZ,{}),content:(0,ev.jsx)(enl,{title:"可访问主机",items:e.settings.hosts})},{id:"plugins",label:"插件",icon:(0,ev.jsx)(m0,{}),content:(0,ev.jsx)(enl,{title:"画布插件",items:e.settings.plugins,empty:"未加载插件"})}]}):null}function ena({canvas:e}){return(0,ev.jsxs)("div",{className:"grid gap-5",children:[(0,ev.jsxs)("button",{type:"button",className:"group relative grid min-h-72 rounded-[2rem] border bg-card p-7 text-left transition-colors hover:bg-muted/35",children:[(0,ev.jsxs)("div",{className:"grid gap-5",children:[(0,ev.jsxs)("div",{className:"max-w-2xl",children:[(0,ev.jsx)("h3",{className:"text-3xl font-semibold tracking-normal",children:e.title}),(0,ev.jsx)("p",{className:"mt-4 text-sm leading-6 text-muted-foreground",children:e.purpose})]}),(0,ev.jsxs)("div",{className:"grid max-w-56 gap-2",children:[(0,ev.jsx)(eno,{label:"Nodes",value:`${e.nodes}`}),(0,ev.jsx)(eno,{label:"Agent",value:`${e.agents}`}),(0,ev.jsx)(eno,{label:"Snapshots",value:`${e.snapshots}`})]})]}),(0,ev.jsx)("span",{className:"absolute right-7 bottom-7 text-sm font-medium text-foreground transition-opacity group-hover:opacity-70",children:"进入"})]}),(0,ev.jsxs)("div",{className:"grid gap-2",children:[(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsx)("span",{className:"text-sm font-medium",children:"Roadmap"}),(0,ev.jsx)(enr,{icon:(0,ev.jsx)(BX,{}),value:e.runtime})]}),(0,ev.jsx)(mG,{items:e.roadmap.map(e=>({id:e.title,title:e.title,status:"running"===e.state?"current":"done"===e.state?"done":"queued"})),viewportClassName:"max-h-64"})]})]})}function eno({label:e,value:t}){return(0,ev.jsxs)("span",{className:"grid min-w-0 gap-0.5 py-0.5",children:[(0,ev.jsx)("span",{className:"truncate ui-text-kbd text-muted-foreground",children:e}),(0,ev.jsx)("span",{className:"min-w-0 truncate text-sm font-semibold tracking-normal",children:t})]})}function enl({title:e,items:t,empty:n="暂无内容"}){return(0,ev.jsxs)("div",{className:"grid gap-3",children:[(0,ev.jsx)("h3",{className:"text-base font-semibold tracking-normal",children:e}),(0,ev.jsx)("div",{className:"overflow-hidden rounded-xl border bg-card",children:t.length>0?t.map((e,t)=>(0,ev.jsxs)("div",{className:tK("flex min-h-10 items-center gap-2 px-3 text-sm",t>0&&"border-t"),children:[(0,ev.jsx)(et9,{className:"size-4 text-muted-foreground"}),(0,ev.jsx)("span",{className:"min-w-0 truncate",children:e})]},e)):(0,ev.jsx)("div",{className:"px-3 py-6 text-sm text-muted-foreground",children:n})})]})}function ens({open:e,onOpenChange:t,onAdd:n}){return(0,ev.jsx)(mm,{open:e,onOpenChange:t,title:"添加节点",description:"搜索并选择要放入画布的可用节点。",className:"top-1/2 max-w-xl -translate-y-1/2",children:(0,ev.jsxs)(mp,{loop:!0,children:[(0,ev.jsx)(mg,{placeholder:"搜索节点..."}),(0,ev.jsxs)(mv,{children:[(0,ev.jsx)(mx,{children:"没有匹配节点。"}),(0,ev.jsx)(my,{heading:"可用节点",children:W8.map(e=>(0,ev.jsxs)(mb,{value:`${e.title} ${e.description} ${e.keywords}`,onSelect:()=>n(e),children:[(0,ev.jsx)("span",{className:"flex size-8 shrink-0 items-center justify-center rounded-lg border bg-background text-muted-foreground",children:e.icon}),(0,ev.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,ev.jsx)("span",{className:"block truncate text-sm font-medium",children:e.title}),(0,ev.jsx)("span",{className:"block truncate text-xs text-muted-foreground",children:e.description})]}),(0,ev.jsxs)(mw,{children:[e.size.width,"x",e.size.height]})]},e.id))})]})]})})}function enc({nodes:e,edges:t,selectedNodeId:n,clipboardItems:r,onNodesChange:i,onEdgesChange:a,onNodesSet:o,onEdgesSet:l,onSelectedNodeChange:s,onClipboardItemsChange:c}){let d=ey.useRef(null),{addPaletteOpen:u,addTemplateNode:f,handleAddPaletteOpenChange:h,handleCanvasAction:p,handleCanvasDragOver:m,handleCanvasDrop:g,handleNodeCanvasConnect:v,handleNodeCanvasEdgeAction:x,handleNodeCanvasNodeAction:y,filePickerDialog:b,renderedCanvasNodes:w}=function({workspaceRef:e,nodes:t,clipboardItems:n,onNodesSet:r,onEdgesSet:i,onSelectedNodeChange:a,onClipboardItemsChange:o}){let l=ey.useRef(0),s=ey.useRef(0),[c,d]=ey.useState(!1),[u,f]=ey.useState(),[h,p]=ey.useState(),m=ey.useCallback((t,n)=>{let r,i,a,o,l,s,c,d;return r=e.current,i=r?.querySelector(".react-flow__viewport"),a=r?.getBoundingClientRect(),l="none"!==(o=i?getComputedStyle(i).transform:"none")?new DOMMatrixReadOnly(o):void 0,s=l?.a&&Number.isFinite(l.a)?l.a:1,c=l?.e??0,d=l?.f??0,{x:(t-(a?.left??0)-c)/s,y:(n-(a?.top??0)-d)/s}},[e]),g=ey.useCallback((e,t)=>{r(n=>n.map(n=>{let r,i;return n.id===e?(i="string"==typeof(r=n.data??{}).activeTabId&&t.some(e=>e.id===r.activeTabId)?r.activeTabId:t[0]?.id,{...n,data:{...r,tabs:t,activeTabId:i}}):n}))},[r]),v=ey.useCallback((e,t)=>{r(n=>n.map(n=>n.id===e?{...n,data:{...n.data??{},activeTabId:t}}:n))},[r]),x=ey.useCallback((e,t)=>{r(n=>n.map(n=>n.id===e?function(e,t){let n=e.data??{};if("multi-tab-system"===n.kind){let r=Array.isArray(n.tabs)?n.tabs:[];return{...e,data:{...n,tabs:r.map(e=>e.id===t.id?t:e),activeTabId:t.id}}}return Ue(n.kind)?{...e,data:{...n,tab:t}}:e}(n,t):n))},[r]),y=ey.useCallback((e,t)=>{r(n=>n.map(n=>n.id===e?{...n,data:{...n.data??{},terminal:t}}:n))},[r]),b=ey.useCallback((e,t)=>{var n;let i=(n=e.kind,W8.find(e=>e.id===n)?.size??W2({width:480,height:320}));s.current+=1;let o=`${e.kind}-detached-${s.current}`;r(n=>[...n,function({tab:e,nodeId:t,center:n,size:r}){return{id:t,type:"blank",position:W3(n,r),data:{contentScale:2,kind:e.kind,tab:{...e,id:`${t}-tab`}},width:r.width,height:r.height,style:W5(r)}}({tab:e,nodeId:o,center:t,size:i})]),a(o)},[r,a]),w=ey.useCallback(async(e,n)=>{try{let i,a=n?.nodeId?t.find(e=>e.id===n.nodeId):void 0,o=a?(a.data??{}).kind:void 0,l="data-table-tab-viewer"===o?await Uc(e):await Uo(e),s=void 0!==a&&(i=a.data??{},"multi-tab-system"===i.kind||"file-tab-viewer"===i.kind||"data-table-tab-viewer"===i.kind);n?.nodeId&&s&&r(e=>e.map(e=>e.id===n.nodeId?function(e,t,n){let r=e.data??{};if("multi-tab-system"===r.kind){let i,a,o=Array.isArray(r.tabs)?r.tabs:[];return{...e,data:{...r,tabs:(i=o.filter(e=>e.id!==t.id),a=void 0===n?i.length:Math.min(Math.max(n,0),i.length),i.splice(a,0,t),i),activeTabId:t.id}}}return"file-tab-viewer"===r.kind||"data-table-tab-viewer"===r.kind&&"data-table-tab-viewer"===t.kind?{...e,data:{...r,tab:t}}:e}(e,l,n.insertIndex):e)),n?.nodeId&&s||b(l,u??{x:496,y:336})}catch{qB.error("文件预览打开失败")}},[b,t,r,u]),j=ey.useCallback(e=>{let n=t.find(e=>"multi-tab-system"===(e.data??{}).kind);w(e,n?{nodeId:n.id}:void 0)},[t,w]),k=ey.useCallback(async(e,t,n)=>{let r=t.file?.path,i=t.file?.machineId??"local";if(!r)throw qB.error("文件路径不可用"),Error("file path is unavailable");try{let a=await wk({machineId:i,path:r,content:n}),o={...t,title:a.name,modified:!1,defaultValue:"utf-8"===a.encoding?a.content:n,file:{...t.file,name:a.name,path:a.path,machineId:a.machine.id,mimeType:a.mimeType,kind:t.file?.kind,size:a.size,truncated:a.truncated}};x(e,o),qB.success("文件已保存")}catch(e){throw qB.error("文件保存失败"),e}},[x]),S=ey.useCallback((e,t,n)=>{b(t,m(n.clientX,n.clientY))},[b,m]),N=ey.useCallback(e=>{let t=e.dataTransfer.getData("application/vnd.vantaloom.clip-id"),r=n.find(e=>e.id===t),i=r?r.payloads?.[fc]:void 0;if(i)return i;let a=e.dataTransfer.getData(fc);if(a)try{return JSON.parse(a)}catch{return}},[n]),C=ey.useCallback((e,t,n)=>{r(r=>r.map(r=>r.id!==e?r:function(e,t,n){let r=e.data??{},i=Array.isArray(r.tabs)?r.tabs:[],a=new Set(i.map(e=>e.id)),o=n.tab.id,l=2;for(;a.has(o);)o=`${n.tab.id}-${l}`,l+=1;let s=[...i];return s.splice(Math.max(0,Math.min(t,s.length)),0,{...n.tab,id:o}),{...e,data:{...r,tabs:s,activeTabId:o}}}(r,t,n)))},[r]),M=ey.useCallback((e,t,n)=>{let r=N(n);r&&C(e,t,r)},[N,C]),E=ey.useCallback(e=>(function(e,t){for(let n of[...e].reverse()){if("multi-tab-system"!==(n.data??{}).kind)continue;let e=function(e){let t="number"==typeof e.width?e.width:"number"==typeof e.style?.width?e.style.width:"string"==typeof e.style?.width?Number.parseFloat(e.style.width):192,n="number"==typeof e.height?e.height:"number"==typeof e.style?.height?e.style.height:"string"==typeof e.style?.height?Number.parseFloat(e.style.height):112;return{width:Number.isFinite(t)?t:192,height:Number.isFinite(n)?n:112}}(n),r=t.x>=n.position.x&&t.x<=n.position.x+e.width,i=t.y>=n.position.y&&t.y<=n.position.y+e.height;if(r&&i)return n}})(t,e),[t]),O=ey.useCallback((t,n,r)=>(function(e,t,n,r){let i=Array.from(e.current?.querySelectorAll(".react-flow__node")??[]).find(e=>e.getAttribute("data-id")===t),a=i?.querySelector('[data-slot="multi-tab-list"]');if(!a)return r;let o=Array.from(a.querySelectorAll("[data-tab-id]"));for(let[e,t]of o.entries()){let r=t.getBoundingClientRect();if(n<r.left+r.width/2)return e}return o.length})(e,t,n,r),[e]),P=function({nodes:e,onTabsChange:t,onActiveTabChange:n,onRequestFileTab:r,onOpenWorkspaceFile:i,onTabChange:a,onSaveFileTab:o,onTerminalStateChange:l,onTabDetach:s,onExternalTabDrop:c}){return ey.useMemo(()=>e.map(e=>{let d=e.data??{},u=(e.data??{}).kind;return u?{...e,data:{...d,content:(0,ev.jsx)(etB,{kind:u,nodeId:e.id,tab:d.tab,tabs:d.tabs,activeTabId:d.activeTabId,terminalScopeId:`canvas:node:${e.id}`,terminalState:d.terminal,onTerminalStateChange:t=>l(e.id,t),onRequestFileTab:r,onOpenWorkspaceFile:i,onTabsChange:t,onTabChange:a,onSaveFileTab:o,onActiveTabChange:n,onTabDetach:s,onExternalTabDrop:c})}}:e}),[e,n,c,i,r,o,a,s,l,t])}({nodes:t,onTabsChange:g,onActiveTabChange:v,onRequestFileTab:p,onOpenWorkspaceFile:j,onTabChange:x,onSaveFileTab:k,onTerminalStateChange:y,onTabDetach:S,onExternalTabDrop:M}),z=ey.useCallback(e=>{s.current+=1;let n=`${e.id}-${t.length+s.current}`;r(t=>[...t,function({template:e,nodeId:t,center:n}){let r={contentScale:2,kind:e.id};return"multi-tab-system"===e.id?r.tabs=[]:Ue(e.id)&&(r.tab=Un(e.id,`${t}-tab`)),{id:t,type:"blank",position:W3(n,e.size),data:r,width:e.size.width,height:e.size.height,style:W5(e.size)}}({template:e,nodeId:n,center:u??{x:496,y:336}})]),a(void 0),d(!1),f(void 0)},[t.length,r,a,u]),A=ey.useCallback(e=>{let t=e.dataTransfer.getData("application/vnd.vantaloom.clip-id");if(!t)return;let i=n.find(e=>e.id===t),o=m(e.clientX,e.clientY),s=N(e),c=s?E(o):void 0;if(s&&c){e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="move";let t=c.data??{},n=Array.isArray(t.tabs)?t.tabs:[],r=O(c.id,e.clientX,n.length);C(c.id,r,s),a(void 0);return}let d=i?i.payloads?.[fs]:void 0;if(!i||!d)return;e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="move",l.current+=1;let u=`${d.node.id}-drop-${l.current}`;r(e=>[...e,function({source:e,nodeId:t,center:n}){let r={width:e.width??192,height:e.height??112};return{...e,id:t,position:W3(n,r),style:e.style??W5(r),selected:!1,data:{...e.data??{},resizing:!1}}}({source:d.node,nodeId:u,center:o})]),a(u)},[n,E,N,m,O,C,r,a]),I=ey.useCallback(e=>{Array.from(e.dataTransfer.types).some(e=>[fs,fc].includes(e))&&(e.preventDefault(),e.dataTransfer.dropEffect="move")},[]),_=ey.useCallback((e,{flowPosition:t})=>{"add"===e&&(f(t),d(!0))},[]),D=ey.useCallback(e=>{i(t=>{if(t.find(t=>t.source===e.source&&t.target===e.target))return t;let n=t.find(t=>t.source===e.target&&t.target===e.source);return n?t.map(e=>e.id===n.id?{...e,data:{...e.data??{},bidirectional:!0}}:e):[...t,{id:`edge-${e.source}-${e.target}-${t.length+1}`,type:"connection",source:e.source,target:e.target,sourceHandle:e.sourceHandle,targetHandle:e.targetHandle,data:{anchors:[]}}]})},[i]),T=ey.useCallback((e,t,n)=>{"cut-edge"===e?i(e=>e.filter(e=>e.id!==t)):i(r=>r.map(r=>{if(r.id!==t)return r;let i=[...r.data?.anchors??[]];return"add-anchor"===e&&n.anchor&&i.splice(n.anchorIndex??i.length,0,n.anchor),"move-anchor"===e&&n.anchor&&void 0!==n.anchorIndex&&(i[n.anchorIndex]=n.anchor),"delete-anchor"===e&&void 0!==n.anchorIndex&&i.splice(n.anchorIndex,1),{...r,data:{...r.data??{},anchors:i}}}))},[i]),R=ey.useCallback((e,n,{snappedPosition:l})=>{if("copy"===e)return void r(e=>{let t=e.find(e=>e.id===n);if(!t)return e;let r=`${t.id}-copy-${e.length+1}`;return a(r),[...e,{...t,id:r,position:l,selected:!1,data:{...t.data??{},resizing:!1}}]});if("cut"===e){let e,l,s,c,d,u,f=t.find(e=>e.id===n);if(!f)return;let h=(e={...f.data??{}},delete e.content,delete e.mode,delete e.onConnectPointerDown,delete e.onSelectNode,delete e.resizing,c=(s=function(e){let t=e.data??{},n=t.tab;if(n?.id&&Ue(n.kind))return n;let r=t.kind;if(Ue(r))return Un(r,e.id)}(l={...f,selected:!1,data:{...e,resizing:!1}}))?{tab:s,sourceNodeId:f.id}:void 0,d={[fs]:{node:l}},u={"application/vnd.vantaloom.clip-kind":s?"canvas-tab":"canvas-node",[fs]:f.id},c&&(d[fc]=c,u[fc]=JSON.stringify(c)),{id:`clip-${f.id}`,title:s?.title??"画布节点",description:s?"来自画布的独立标签页。":"来自节点画布的空白节点。",meta:`${Math.round(f.width??192)}x${Math.round(f.height??112)}`,icon:s?Ut(s.kind):(0,ev.jsx)(WJ,{className:"size-4"}),dragData:u,payloads:d});o(e=>[h,...e.filter(e=>e.id!==h.id)]),r(e=>e.filter(e=>e.id!==n)),i(e=>e.filter(e=>e.source!==n&&e.target!==n)),a(void 0)}},[t,o,i,r,a]);return{addPaletteOpen:c,addTemplateNode:z,filePickerDialog:(0,ev.jsx)(eek,{open:void 0!==h,onOpenChange:e=>{e||p(void 0)},onSelectFile:e=>{p(void 0),w(e,h)}}),handleAddPaletteOpenChange:function(e){d(e),e||f(void 0)},handleCanvasAction:_,handleCanvasDragOver:I,handleCanvasDrop:A,handleNodeCanvasConnect:D,handleNodeCanvasEdgeAction:T,handleNodeCanvasNodeAction:R,renderedCanvasNodes:P}}({workspaceRef:d,nodes:e,clipboardItems:r,onNodesChange:i,onEdgesChange:a,onNodesSet:o,onEdgesSet:l,onSelectedNodeChange:s,onClipboardItemsChange:c});return(0,ev.jsxs)("div",{ref:d,className:"vtl-app-background vtl-canvas-workspace relative h-full w-full overflow-hidden",onDragOver:m,onDrop:g,children:[(0,ev.jsx)(cx,{"aria-label":"新建画布",className:"h-full min-h-0 rounded-none border-0",viewportClassName:"h-full",nodes:w,edges:t,nodeTypes:W0,edgeTypes:W1,onNodesChange:i,onEdgesChange:a,selectedNodeId:n,onSelectedNodeChange:s,defaultViewport:{x:0,y:0,zoom:.5},labels:{actions:"画布操作",add:"添加节点",select:"普通鼠标",connect:"连接工具",cut:"剪刀工具",drag:"拖拽工具",modeTools:"模式工具",resetZoom:"重置缩放",viewportTools:"视口工具",lockViewport:"锁定视口",visualSnap:"视觉吸附",nodeSnap:"节点吸附",snapTools:"吸附工具",nodeActions:"节点操作",resizeNode:"调整大小",copyNode:"复制节点",cutNode:"剪切节点"},onCanvasAction:p,onNodeCanvasConnect:v,onNodeCanvasEdgeAction:x,onNodeCanvasNodeAction:y}),(0,ev.jsx)(ens,{open:u,onOpenChange:h,onAdd:f}),b,(0,ev.jsx)(qK,{position:"top-right"})]})}function end({open:e,definitions:t,onOpenChange:n,onAdd:r}){return(0,ev.jsx)(mm,{open:e,onOpenChange:n,title:"添加卡片",description:"搜索并选择要添加到运维面板的卡片。",className:"top-1/2 max-w-xl -translate-y-1/2",children:(0,ev.jsxs)(mp,{loop:!0,children:[(0,ev.jsx)(mg,{placeholder:"搜索可添加卡片..."}),(0,ev.jsxs)(mv,{className:"max-h-[420px]",children:[(0,ev.jsx)(mx,{children:"没有找到可添加的卡片。"}),(0,ev.jsx)(my,{heading:"运维面板卡片",children:t.map(e=>(0,ev.jsxs)(mb,{value:`${e.title} ${e.description}`,keywords:[e.id,e.defaultConfig.dataSource],onSelect:()=>r(e.id),className:"min-h-14 items-start py-2",children:[(0,ev.jsx)("span",{className:"mt-0.5 grid size-8 shrink-0 place-items-center rounded-md border bg-background text-muted-foreground",children:e.icon}),(0,ev.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,ev.jsx)("span",{className:"block truncate font-medium",children:e.title}),(0,ev.jsx)("span",{className:"mt-0.5 block truncate ui-text-kbd text-muted-foreground",children:e.description})]}),(0,ev.jsxs)(mw,{children:[e.defaultSize.w,"x",e.defaultSize.h]})]},e.id))})]})]})})}function enu({open:e,dragMode:t,onOpenChange:n,onAdd:r,onDragModeChange:i}){let a=[{key:"add",label:"添加组件",icon:(0,ev.jsx)(sQ,{className:"size-4"}),onClick:r,pressed:!1},{key:"drag",label:"拖拽排版",icon:(0,ev.jsx)(sK,{className:"size-4"}),onClick:()=>i(!t),pressed:t}];return(0,ev.jsx)("div",{className:"fixed right-5 bottom-5 z-30",children:(0,ev.jsxs)("div",{className:"relative size-8",children:[a.map((t,n)=>(0,ev.jsx)(tY,{type:"button",variant:"outline",size:"icon-sm","aria-label":t.label,"aria-pressed":t.pressed,onClick:t.onClick,className:tK("absolute inset-0 rounded-full bg-background/95 shadow-md backdrop-blur transition-[opacity,transform] duration-150 ease-out",t.pressed&&"border-foreground bg-foreground text-background shadow-lg ring-1 ring-background/50 hover:bg-foreground hover:text-background dark:bg-primary dark:text-primary-foreground dark:hover:bg-primary",e?"pointer-events-auto opacity-100":"pointer-events-none translate-y-1 opacity-0"),style:{transform:e?`translateY(-${(n+1)*42}px)`:void 0},children:t.icon},t.key)),(0,ev.jsx)(tY,{type:"button",variant:"outline",size:"icon-sm","aria-label":"仪表盘操作","aria-expanded":e,onClick:()=>n(!e),className:"absolute inset-0 rounded-full bg-background/95 shadow-md backdrop-blur",children:(0,ev.jsx)(sZ,{className:tK("size-4 transition-transform",e&&"rotate-90")})})]})})}function enf({layout:e,layouts:t,cellSize:n,cellHeight:r,dragMode:i,selected:a,resizing:o,onSelect:l,onMove:s,onCut:c,onCopy:d,onSettingsOpen:u,onResizeStart:f,onResizeEnd:h,children:p}){let[m,g]=ey.useState(!1),v=r??n,x=e.x*(n+12),y=e.y*(v+12),b=e.w*n+(e.w-1)*12,w=e.h*v+(e.h-1)*12;return(0,ev.jsxs)("div",{"data-dashboard-widget":e.id,className:tK("absolute rounded-lg p-1 transition-[left,top,width,height,box-shadow] duration-200 ease-out",i&&"cursor-grab active:cursor-grabbing",m&&"duration-150",a&&!o&&"z-20 shadow-sm",o&&"z-30 transition-none"),style:{left:x,top:y,width:b,height:w},onPointerDown:function(r){if(!i||o)return;let a=r.target;if(a instanceof HTMLElement&&a.closest("[data-dashboard-action]"))return;r.preventDefault(),r.currentTarget.setPointerCapture(r.pointerId),l();let c=r.clientX,d=r.clientY;function u(r){let i=fM({...e,x:e.x+Math.round((r.clientX-c)/(n+12)),y:e.y+Math.round((r.clientY-d)/(n+12))});fC(i,t,e.id)||s(i)}g(!0),window.addEventListener("pointermove",u),window.addEventListener("pointerup",function e(){window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",e),g(!1)})},onClick:()=>{i&&l()},children:[(0,ev.jsx)("div",{className:tK("size-full",i&&"pointer-events-none"),children:p}),a&&i&&!o?(0,ev.jsx)("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-1 rounded-lg border-2 border-foreground"}):null,a&&i&&!o?(0,ev.jsx)(enh,{onSettingsOpen:u,onCut:c,onCopy:d,onResizeStart:f}):null,o?(0,ev.jsx)(enp,{layout:e,layouts:t,cellSize:n,onResize:s,onResizeEnd:h}):null]})}function enh({onSettingsOpen:e,onCut:t,onCopy:n,onResizeStart:r}){return(0,ev.jsx)(s5,{"data-dashboard-action":!0,placement:"inline",size:"sm","aria-label":"组件操作",className:"!absolute top-full left-1/2 z-40 mt-2 -translate-x-1/2 rounded-lg bg-popover/95 p-1 shadow-md",onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,ev.jsxs)(s4,{children:[(0,ev.jsx)(s3,{type:"button","aria-label":"调整大小",onClick:r,children:(0,ev.jsx)(sX,{className:"size-4"})}),(0,ev.jsx)(s3,{type:"button","aria-label":"卡片设置",onPointerDown:t=>{t.preventDefault(),t.stopPropagation(),e()},onClick:e=>e.stopPropagation(),children:(0,ev.jsx)(mS,{className:"size-4"})}),(0,ev.jsx)(s3,{type:"button","aria-label":"复制",onClick:n,children:(0,ev.jsx)(sU,{className:"size-4"})}),(0,ev.jsx)(s3,{type:"button","aria-label":"剪切",onPointerDown:e=>{e.preventDefault(),e.stopPropagation(),t()},onClick:e=>e.stopPropagation(),children:(0,ev.jsx)(s1,{className:"size-4"})})]})})}function enp({layout:e,layouts:t,cellSize:n,onResize:r,onResizeEnd:i}){return(0,ev.jsx)("div",{"data-dashboard-action":!0,className:"pointer-events-none absolute inset-1 z-40 border-2 border-foreground",children:[{id:"top-left",className:"top-0 left-0 -translate-x-1/2 -translate-y-1/2 cursor-nwse-resize"},{id:"top",className:"top-0 left-1/2 -translate-x-1/2 -translate-y-1/2 cursor-ns-resize"},{id:"top-right",className:"top-0 right-0 translate-x-1/2 -translate-y-1/2 cursor-nesw-resize"},{id:"right",className:"top-1/2 right-0 translate-x-1/2 -translate-y-1/2 cursor-ew-resize"},{id:"bottom-right",className:"right-0 bottom-0 translate-x-1/2 translate-y-1/2 cursor-nwse-resize"},{id:"bottom",className:"bottom-0 left-1/2 -translate-x-1/2 translate-y-1/2 cursor-ns-resize"},{id:"bottom-left",className:"bottom-0 left-0 -translate-x-1/2 translate-y-1/2 cursor-nesw-resize"},{id:"left",className:"top-1/2 left-0 -translate-x-1/2 -translate-y-1/2 cursor-ew-resize"}].map(a=>(0,ev.jsx)("button",{type:"button","aria-label":`调整 ${a.id}`,className:tK("pointer-events-auto absolute size-2.5 border border-foreground bg-background shadow-sm",a.className),onPointerDown:o=>(function(a,o){a.preventDefault(),a.stopPropagation(),a.currentTarget.setPointerCapture(a.pointerId);let l=a.clientX,s=a.clientY;function c(i){let a=Math.round((i.clientX-l)/(n+12)),c=Math.round((i.clientY-s)/(n+12)),d={...e};o.includes("right")&&(d.w=e.w+a),o.includes("bottom")&&(d.h=e.h+c),o.includes("left")&&(d.x=e.x+a,d.w=e.w-a),o.includes("top")&&(d.y=e.y+c,d.h=e.h-c),fC(d=fM(d),t,e.id)||r(d)}window.addEventListener("pointermove",c),window.addEventListener("pointerup",function e(){window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",e),i()})})(o,a.id)},a.id))})}function enm({open:e,layout:t,definition:n,config:r,cellSize:i,onOpenChange:a,onConfigChange:o}){let l=t&&i>0?t.w*i+(t.w-1)*12:320,s=t&&i>0?t.h*i+(t.h-1)*12:180;return(0,ev.jsx)(px,{open:e,onOpenChange:a,children:(0,ev.jsx)(mO,{side:"right",className:"w-screen gap-0 border-0 bg-transparent p-0 shadow-none sm:max-w-none",children:t&&n&&r?(0,ev.jsxs)("div",{className:"grid h-full min-w-0 grid-cols-1 lg:grid-cols-[minmax(0,1fr)_24rem]",children:[(0,ev.jsx)(eng,{width:l,height:s,className:"hidden lg:grid",children:n.render(r)}),(0,ev.jsxs)("div",{className:"animate-in slide-in-from-right-4 flex h-full w-full flex-col border-y-0 border-r-0 bg-background text-foreground shadow-lg duration-300",children:[(0,ev.jsxs)(mP,{className:"border-b",children:[(0,ev.jsx)(mz,{children:"卡片设置"}),(0,ev.jsxs)(mA,{children:[n.title," · ",t.w,"x",t.h]})]}),(0,ev.jsxs)("div",{className:"grid flex-1 content-start gap-4 overflow-y-auto p-4",children:[(0,ev.jsxs)("label",{className:"grid gap-1.5",children:[(0,ev.jsx)("span",{className:"ui-text-control font-medium",children:"显示标题"}),(0,ev.jsx)(tX,{value:r.title,onChange:e=>o({title:e.currentTarget.value})})]}),(0,ev.jsxs)("label",{className:"grid gap-1.5",children:[(0,ev.jsx)("span",{className:"ui-text-control font-medium",children:"数据来源"}),(0,ev.jsx)(tX,{value:r.dataSource,onChange:e=>o({dataSource:e.currentTarget.value})})]}),(0,ev.jsxs)("label",{className:"grid gap-1.5",children:[(0,ev.jsx)("span",{className:"ui-text-control font-medium",children:"刷新间隔"}),(0,ev.jsx)(tX,{value:r.refreshRate,onChange:e=>o({refreshRate:e.currentTarget.value})})]}),(0,ev.jsxs)("label",{className:"grid gap-1.5",children:[(0,ev.jsx)("span",{className:"ui-text-control font-medium",children:"备注"}),(0,ev.jsx)("textarea",{value:r.note,rows:4,className:"min-h-24 resize-none rounded-lg border border-input bg-transparent px-2.5 py-2 ui-text-control transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50",onChange:e=>o({note:e.currentTarget.value})})]}),(0,ev.jsxs)("div",{className:"rounded-lg border bg-muted/20 p-3",children:[(0,ev.jsx)("div",{className:"ui-text-control font-medium",children:"当前绑定"}),(0,ev.jsxs)("div",{className:"mt-2 grid gap-1 ui-text-kbd text-muted-foreground",children:[(0,ev.jsxs)("span",{children:["类型:",n.id]}),(0,ev.jsxs)("span",{children:["来源:",r.dataSource]}),(0,ev.jsxs)("span",{children:["刷新:",r.refreshRate]})]})]})]})]})]}):null})})}function eng({width:e,height:t,className:n,children:r}){let[i,a]=hl(),o=a.width>0&&a.height>0?Math.min(1,(a.width-32)/e,(a.height-32)/t):1;return(0,ev.jsx)("div",{ref:i,className:tK("min-h-0 min-w-0 place-items-center overflow-hidden p-4",n),children:(0,ev.jsx)("div",{className:"animate-in fade-in-0 zoom-in-95 origin-center rounded-lg duration-300",style:{width:e,height:t,transform:`scale(${Math.max(.1,o)})`},children:r})})}function env(){return ey.useMemo(()=>[{id:"active-runs",title:ff.activeRuns,description:"当前正在执行的 Agent 运行数量。",icon:(0,ev.jsx)(Wc,{className:"size-4"}),defaultSize:{w:3,h:1},defaultConfig:{title:ff.activeRuns,dataSource:"本机运行队列",refreshRate:"5s",note:"统计所有未完成的运行。"},render:e=>(0,ev.jsx)(B8,{label:e.title,value:"18",jellyImage:fe,jellyImagePosition:"center"})},{id:"queue",title:ff.queue,description:"排队等待调度的任务数量。",icon:(0,ev.jsx)(WZ,{className:"size-4"}),defaultSize:{w:3,h:1},defaultConfig:{title:ff.queue,dataSource:"调度器",refreshRate:"5s",note:"用于观察调度压力。"},render:e=>(0,ev.jsx)(B8,{label:e.title,value:"7",jellyImage:ft,jellyImagePosition:"center"})},{id:"cost",title:ff.cost,description:"今日模型、工具和机器资源消耗。",icon:(0,ev.jsx)(B1,{className:"size-4"}),defaultSize:{w:3,h:1},defaultConfig:{title:ff.cost,dataSource:"用量聚合",refreshRate:"1m",note:"后续可接入工作组账单。"},render:e=>(0,ev.jsx)(B8,{label:e.title,value:"$42.8",jellyImage:fn,jellyImagePosition:"center"})},{id:"machines-summary",title:ff.machineStatus,description:"工作组内可用机器概况。",icon:(0,ev.jsx)(eA,{className:"size-4"}),defaultSize:{w:3,h:1},defaultConfig:{title:ff.machineStatus,dataSource:"工作组机器",refreshRate:"15s",note:"包含本机、直连机器和 P2P 节点。"},render:e=>(0,ev.jsx)(B8,{label:e.title,value:"2 / 3",jellyImage:fr,jellyImagePosition:"center"})},{id:"resource-trend",title:ff.resourceTrend,description:"CPU 与内存趋势图。",icon:(0,ev.jsx)(B7,{className:"size-4"}),defaultSize:{w:8,h:4},defaultConfig:{title:ff.resourceTrend,dataSource:"机器遥测",refreshRate:"10s",note:"默认显示最近 6 个采样点。"},render:e=>(0,ev.jsx)(B9,{title:e.title})},{id:"run-mix",title:ff.runMix,description:"不同类型 Agent 运行的占比。",icon:(0,ev.jsx)(mY,{className:"size-4"}),defaultSize:{w:4,h:4},defaultConfig:{title:ff.runMix,dataSource:"运行记录",refreshRate:"30s",note:"用于快速观察任务类型构成。"},render:e=>(0,ev.jsx)(Ho,{title:e.title})},{id:"machine-status",title:ff.machineStatus,description:"各机器 CPU、内存、GPU 与磁盘状态。",icon:(0,ev.jsx)(B4,{className:"size-4"}),defaultSize:{w:8,h:5},defaultConfig:{title:ff.machineStatus,dataSource:"工作组机器",refreshRate:"10s",note:"用于运维总览的核心资源面板。"},render:e=>(0,ev.jsx)(B3,{title:e.title})},{id:"schedule",title:ff.schedule,description:"维护窗口、提醒和自动化计划。",icon:(0,ev.jsx)(Hs,{className:"size-4"}),defaultSize:{w:4,h:5},defaultConfig:{title:ff.schedule,dataSource:"本机日程",refreshRate:"5m",note:"之后可接工作组日程。"},render:e=>(0,ev.jsx)(Hd,{title:e.title})}],[])}function enx({clipboardItems:e,onClipboardItemsChange:t,onOverlayOpenChange:n}){let[r,i]=ey.useState(!1),[a,o]=ey.useState(!1),[l,s]=ey.useState(!1),[c,d]=ey.useState(fS),[u,f]=ey.useState({}),[h,p]=ey.useState(),[m,g]=ey.useState(),[v,x]=ey.useState(),y=ey.useRef(0),b=ey.useRef(0),[w,j]=hl(),k=j.width>0?fb(j.width):12,S=fk(c,k),N=j.width>0?(j.width-12*(k-1))/k:96,C=fw(N,k),M=Math.max(9,fN(S)+2),E=M*C+(M-1)*12,O=env(),P=ey.useMemo(()=>new Map(O.map(e=>[e.id,e])),[O]);function z(e){let t=P.get(e.kind);return u[e.id]??(t?fO(t):void 0)}function A(e){d(t=>{let n=fM(e);return fC(n,t,n.id)?t:t.map(e=>e.id===n.id?n:e)})}ey.useEffect(()=>{n(a||!!v)},[a,n,v]),ey.useEffect(()=>()=>n(!1),[n]),ey.useEffect(()=>{l||(p(void 0),g(void 0))},[l]),ey.useEffect(()=>{if(m)return window.addEventListener("pointerdown",e),()=>window.removeEventListener("pointerdown",e);function e(e){let t=e.target;t instanceof HTMLElement&&t.closest("[data-dashboard-action]")||(p(m),g(void 0))}},[m]);let I=v?c.find(e=>e.id===v):void 0,_=I?P.get(I.kind):void 0,D=I?z(I):void 0;return(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)("div",{ref:w,"data-dashboard-board":!0,className:tK("relative mx-auto max-w-7xl p-4 lg:p-6",l&&"select-none"),style:{minHeight:E+48},onDragOver:e=>{Array.from(e.dataTransfer.types).includes("application/vnd.vantaloom.dashboard-widget-kind")&&(e.preventDefault(),e.dataTransfer.dropEffect="move")},onDrop:function(t){let n=t.dataTransfer.getData("application/vnd.vantaloom.clip-id"),r=t.dataTransfer.getData("application/vnd.vantaloom.dashboard-widget-kind");if(!n||!r)return;let i=e.find(e=>e.id===n);if(!i)return;t.preventDefault(),t.stopPropagation(),t.dataTransfer.dropEffect="move";let a=w.current,o=a?.getBoundingClientRect();!function(e,t){let n=fP(e);if(!n)return;b.current+=1;let r=`${n.kind}-clip-${b.current}`,i=fM({id:r,kind:n.kind,x:t?.x??0,y:t?.y??fN(c),w:n.w,h:n.h}),a=t&&!fC(i,c)?i:fE(c,r,n.kind,n.w,n.h);d(e=>[...e,a]),f(e=>({...e,[r]:{...n.config}})),p(r),g(void 0)}(i,{x:o&&N>0?Math.round((t.clientX-o.left-24)/(N+12)):0,y:o&&N>0?Math.round((t.clientY-o.top-24)/(N+12)):fN(c)})},onPointerDown:e=>{e.target===e.currentTarget&&(p(void 0),l||g(void 0))},children:(0,ev.jsx)("div",{className:"relative",style:{height:E},children:S.map(e=>{let n=O.find(t=>t.id===e.kind);if(!n)return null;let r=z(e);if(!r)return null;let i=k<12;return(0,ev.jsx)(enf,{layout:e,layouts:S,cellSize:N,cellHeight:C,dragMode:!i&&l,selected:h===e.id,resizing:!i&&m===e.id,onSelect:()=>{l&&!i&&p(e.id)},onMove:i?()=>{}:A,onCut:()=>(function(e){let n=c.find(t=>t.id===e),r=n?P.get(n.kind):void 0,i=n?z(n):void 0;if(!n||!r||!i)return;let a=function({layout:e,definition:t,config:n}){let r={kind:e.kind,w:e.w,h:e.h,config:{...n}};return{id:`clip-${e.id}`,title:n.title||t.title,description:t.description,meta:`${e.w}x${e.h}`,icon:t.icon,dragData:{"application/vnd.vantaloom.clip-kind":"dashboard-widget","application/vnd.vantaloom.dashboard-widget-kind":e.kind,"application/vnd.vantaloom.dashboard-widget-width":String(e.w),"application/vnd.vantaloom.dashboard-widget-height":String(e.h),"application/vnd.vantaloom.dashboard-widget-config":JSON.stringify(n)},payloads:{[fd]:r}}}({layout:n,definition:r,config:i});t(e=>[a,...e.filter(e=>e.id!==a.id)]),d(t=>t.filter(t=>t.id!==e)),f(t=>{let n={...t};return delete n[e],n}),p(void 0),g(void 0),x(t=>t===e?void 0:t)})(e.id),onCopy:()=>(function(e){let t=c.find(t=>t.id===e);if(!t)return;y.current+=1;let n=`${e}-copy-${y.current}`,r=fE(c,n,t.kind,t.w,t.h);d(e=>[...e,r]),f(r=>({...r,[n]:r[e]??fO(P.get(t.kind))})),p(n)})(e.id),onSettingsOpen:()=>x(e.id),onResizeStart:i?()=>{}:()=>{p(void 0),g(e.id)},onResizeEnd:i?()=>{}:()=>{p(e.id),g(void 0)},children:n.render(r)},e.id)})})}),(0,ev.jsx)(enu,{open:r,dragMode:l,onOpenChange:i,onAdd:()=>{i(!1),o(!0)},onDragModeChange:s}),(0,ev.jsx)(end,{open:a,definitions:O,onOpenChange:o,onAdd:function(e){let t=P.get(e);if(!t)return;b.current+=1;let n=`${e}-added-${b.current}`,r=fE(c,n,e,t.defaultSize.w,t.defaultSize.h);d(e=>[...e,r]),f(e=>({...e,[n]:fO(t)})),p(n),g(void 0),o(!1)}}),(0,ev.jsx)(enm,{open:!!(I&&_&&D),layout:I,definition:_,config:D,cellSize:N,onOpenChange:e=>{e||x(void 0)},onConfigChange:e=>{var t;let n,r;I&&(t=I.id,r=(n=c.find(e=>e.id===t))?P.get(n.kind):void 0,n&&r&&f(n=>({...n,[t]:{...n[t]??fO(r),...e}})))}})]})}let eny={delete:"Delete",empty:"Drop here",title:"Trash"};function enb({active:e=!1,items:t=[],labels:n,className:r,onDrop:i,onDelete:a,onItemRestore:o,...l}){let s={...eny,...n},[c,d]=ey.useState(!1),u=ey.useRef(0),f=e||c||t.length>0;return ey.useEffect(()=>{e||(u.current=0,d(!1))},[e]),(0,ev.jsx)("div",{"data-slot":"trash-drop-zone","data-visible":f,"data-drag-inside":c,className:tK("fixed top-4 left-1/2 z-50 -translate-x-1/2 transition-[opacity,transform] duration-300 ease-[cubic-bezier(.2,.8,.2,1)]",f?"pointer-events-auto translate-y-0 opacity-100":"pointer-events-none -translate-y-5 opacity-0",r),onDragEnter:function(e){e.preventDefault(),u.current+=1,d(!0)},onDragLeave:function(){u.current=Math.max(0,u.current-1),0===u.current&&d(!1)},onDragOver:function(e){e.preventDefault(),e.dataTransfer.dropEffect="move",d(!0)},onDrop:function(e){e.preventDefault(),e.stopPropagation(),u.current=0,d(!1);let t=e.dataTransfer.getData("application/vnd.vantaloom.clip-id")||e.dataTransfer.getData("text/plain"),n=e.dataTransfer.getData("text/plain")||t||"Dropped item",r=e.dataTransfer.getData("application/vnd.vantaloom.clip-kind");t&&i?.({id:t,title:n,meta:r,nativeEvent:e})},...l,children:(0,ev.jsx)("div",{className:tK("min-w-12 overflow-hidden rounded-xl border-2 border-background bg-destructive text-destructive-foreground shadow-lg shadow-black/15 transition-[width,min-height,background-color,border-color,padding,box-shadow] duration-300","dark:border-destructive dark:bg-background dark:text-destructive",c||t.length>0?"w-64 border-dashed bg-destructive/12 p-2 text-destructive dark:bg-destructive/8":"flex size-12 items-center justify-center p-0"),children:c||t.length>0?(0,ev.jsxs)("div",{className:"grid gap-2",children:[(0,ev.jsxs)("div",{className:"flex min-h-14 items-center justify-center gap-2 rounded-lg border border-dashed border-destructive/55 bg-destructive/8 px-3 text-sm font-medium text-destructive",children:[(0,ev.jsx)(gn,{className:"size-4"}),(0,ev.jsx)("span",{children:s.empty})]}),t.length>0?(0,ev.jsx)("div",{className:"grid max-h-36 gap-1 overflow-y-auto pr-1",children:t.map(e=>(0,ev.jsxs)("div",{className:"flex h-8 items-center gap-2 rounded-md border border-destructive/25 bg-background/80 px-2 text-foreground",children:[(0,ev.jsx)("button",{type:"button","aria-label":`Restore ${e.title}`,className:"flex size-5 shrink-0 items-center justify-center rounded-sm text-muted-foreground transition-colors hover:bg-destructive/10 hover:text-destructive",onClick:()=>o?.(e),children:(0,ev.jsx)(ms,{className:"size-3.5"})}),(0,ev.jsx)("span",{className:"min-w-0 flex-1 truncate text-xs font-medium",children:e.title}),e.meta?(0,ev.jsx)("span",{className:"shrink-0 text-xs text-muted-foreground",children:e.meta}):null]},e.id))}):null,t.length>0?(0,ev.jsx)("button",{type:"button",className:"h-8 rounded-md bg-destructive px-3 text-xs font-medium text-destructive-foreground transition-colors hover:bg-destructive/90 dark:border dark:border-destructive dark:bg-background dark:text-destructive dark:hover:bg-destructive/10",onClick:()=>a?.(t),children:s.delete}):null]}):(0,ev.jsx)(gn,{className:"size-5"})})})}function enw({hidden:e,items:t,trashItems:n,trashClipboardItems:r,draggingId:i,onDraggingChange:a,onItemsChange:o,onTrashItemsChange:l,onTrashClipboardItemsChange:s}){let c=ey.useRef(0),[d,u]=ey.useState(!1);return(ey.useEffect(()=>{u(!0)},[]),d)?(0,ob.createPortal)((0,ev.jsxs)("div",{className:tK("pointer-events-none fixed inset-0 z-40 overflow-visible transition-opacity duration-200",e&&"opacity-0"),children:[(0,ev.jsx)(enb,{active:!e&&void 0!==i,items:e?[]:n,className:tK(e&&"pointer-events-none"),labels:{delete:"删除",empty:"拖入暂存"},onDrop:({id:e,title:n,meta:r})=>{let i=t.find(t=>t.id===e);i&&(s(t=>({...t,[e]:i})),l(t=>t.some(t=>t.id===e)?t:[...t,{id:e,title:n,meta:r,icon:i.icon}]))},onDelete:e=>{let t=new Set(e.map(e=>e.id));l(e=>e.filter(e=>!t.has(e.id))),s(e=>{let n={...e};for(let e of t)delete n[e];return n})},onItemRestore:e=>{let n=r[e.id];n&&o([n,...t.filter(e=>e.id!==n.id)]),l(t=>t.filter(t=>t.id!==e.id)),s(t=>{let n={...t};return delete n[e.id],n})}}),t.length>0?(0,ev.jsx)("div",{className:tK("pointer-events-auto absolute top-4 right-4 w-80 max-w-[calc(100vw-2rem)] transition-[opacity,transform] duration-200",e&&"pointer-events-none -translate-y-2 opacity-0"),children:(0,ev.jsx)(eeT,{items:t,title:"剪切板",labels:{empty:"剪切板为空",dragHandle:"拖拽卡片"},expansionDirection:"down-left",removeOnExternalDrop:!0,maxExpandedHeight:420,onItemDuplicate:(e,{item:n,index:r})=>{let i,a,l,s,d;return c.current+=1,i=fP(n),a=n.payloads?{...n.payloads}:void 0,l=n.payloads?.[fu],i&&a&&(a[fd]={...i,config:{...i.config}}),l&&a&&(a[fu]={...l,config:l.config?{...l.config}:l.config}),s={...n,id:`${n.id}-copy-${c.current}`,title:`${n.title} copy`,payloads:a,dragData:{...n.dragData,...i?{"application/vnd.vantaloom.dashboard-widget-config":JSON.stringify(i.config)}:{}}},void((d=[...t]).splice(r+1,0,s),o(d))},onItemsRemove:e=>o(e),onItemsReorder:e=>o(e),onItemDragStart:({item:e})=>a(e.id),onItemDragEnd:()=>a(void 0)})}):null]}),document.body):null}let enj=ey.createContext({cellWidth:96,cellHeight:96,isCompact:!1}),enk=ey.createContext({});function enS(e,t){let n=e[t];if(!n)throw Error(`Missing static grid layout: ${t}`);return n}function enN({layouts:e,minRows:t=9,className:n,children:r,...i}){let[a,o]=hl(),l=o.width>0?fb(o.width):12,s=l<12,c=ey.useMemo(()=>fk(e,l),[e,l]),d=ey.useMemo(()=>Object.fromEntries(c.map(e=>[e.id,e])),[c]),u=o.width>0?(o.width-12*(l-1))/l:96,f=fw(u,l),h=ey.useMemo(()=>({cellWidth:u,cellHeight:f,isCompact:s}),[u,f,s]);if(s)return(0,ev.jsx)("div",{ref:a,className:tK("mx-auto max-w-7xl",n),...i,children:(0,ev.jsx)(enj.Provider,{value:h,children:(0,ev.jsx)(enk.Provider,{value:d,children:r})})});let p=Math.max(t,c.reduce((e,t)=>Math.max(e,t.y+t.h),0)+2),m=p*f+(p-1)*12;return(0,ev.jsx)("div",{ref:a,className:tK("relative mx-auto max-w-7xl p-4 lg:p-6",n),style:{minHeight:m+48},...i,children:(0,ev.jsx)("div",{className:"relative",style:{height:m},children:(0,ev.jsx)(enj.Provider,{value:h,children:(0,ev.jsx)(enk.Provider,{value:d,children:r})})})})}function enC({layout:e,className:t,style:n,...r}){let{cellWidth:i,cellHeight:a,isCompact:o}=ey.useContext(enj),l=ey.useContext(enk)[e.id]??e;return o?(0,ev.jsx)("div",{className:tK("relative min-w-0",t),style:{minHeight:"calc(100svh - 7rem)",...n},...r}):(0,ev.jsx)("div",{className:tK("absolute min-w-0",t),style:{left:l.x*(i+12),top:l.y*(a+12),width:l.w*i+(l.w-1)*12,height:l.h*a+(l.h-1)*12,...n},...r})}let enM=[{id:"firewall",x:0,y:0,w:12,h:8}],enE=ho(enM);function enO(){var e;return e=(0,ev.jsx)(enN,{layouts:enM,children:(0,ev.jsx)(enC,{layout:enS(enE,"firewall"),className:"vtl-firewall-card overflow-hidden md:rounded-xl md:border md:bg-card",children:(0,ev.jsx)(eey,{})})}),(0,ev.jsx)(ha,{children:e})}let enP=eS("chart-area",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M7 11.207a.5.5 0 0 1 .146-.353l2-2a.5.5 0 0 1 .708 0l3.292 3.292a.5.5 0 0 0 .708 0l4.292-4.292a.5.5 0 0 1 .854.353V16a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1z",key:"q0gr47"}]]),enz=eS("layout-dashboard",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]),enA=eS("list-checks",[["path",{d:"M13 5h8",key:"a7qcls"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}]]),enI=eS("route",[["circle",{cx:"6",cy:"19",r:"3",key:"1kj8tv"}],["path",{d:"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15",key:"1d8sl"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]]),en_=eS("shield-alert",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]),enD=[{id:"run-ui-polish",title:"组件库视觉回归检查",machine:"Studio-PC",agent:"UI Polish",state:"running",started:"14:08",runtime:"22m",progress:68,load:54},{id:"run-runner-build",title:"Linux runner 镜像构建",machine:"Linux-runner-02",agent:"Build Agent",state:"running",started:"14:15",runtime:"15m",progress:41,load:86},{id:"run-access-audit",title:"工作组权限审阅",machine:"Studio-PC",agent:"Access Agent",state:"blocked",started:"14:21",runtime:"9m",progress:37,load:18},{id:"run-docs",title:"发布说明摘要",machine:"MacBook-build",agent:"Docs Agent",state:"queued",started:"等待",runtime:"0m",progress:0,load:0},{id:"run-cache-clean",title:"缓存清理策略验证",machine:"Linux-runner-02",agent:"Ops Sentinel",state:"failed",started:"13:54",runtime:"6m",progress:28,load:12}],enT=[{id:"worker-studio",machine:"Studio-PC",role:"local coordinator",active:3,capacity:6,cpu:42,memory:68},{id:"worker-runner",machine:"Linux-runner-02",role:"gpu worker",active:4,capacity:5,cpu:76,memory:81},{id:"worker-mac",machine:"MacBook-build",role:"build host",active:0,capacity:3,cpu:8,memory:24}],enR=[{id:"confirm-shell",title:"Studio-PC 请求执行发布前文件写入",meta:"UI Polish · apply_patch",tone:"normal"},{id:"confirm-service",title:"Linux-runner-02 请求重启 runner 服务",meta:"Ops Sentinel · Restart-Service",tone:"warning"},{id:"confirm-token",title:"工作组 token 加入新机器",meta:"Access Agent · admin required",tone:"normal"}],enL=[["14:29","Studio-PC","pnpm --filter vantaloom-app lint","完成"],["14:27","Linux-runner-02","docker build agent-runtime","运行中"],["14:22","Studio-PC","apply_patch agent settings","完成"],["14:17","MacBook-build","pnpm typecheck","排队"],["14:03","Linux-runner-02","cache prune dry-run","失败"]],en$={cpu:{label:"CPU",color:"var(--chart-1)"},memory:{label:"Memory",color:"var(--chart-3)"},network:{label:"Network",color:"var(--chart-5)"}};function enF(e,t,n=42,r){return(0,ev.jsx)("section",{className:tK("size-full rounded-xl border bg-card p-5",r&&"vtl-jelly-image-card",r&&fi(r)&&"vtl-jelly-image-card-shadowless"),style:r?fa({image:r,opacity:.74,blur:"8px"}):void 0,children:(0,ev.jsx)(m$,{label:e,value:t,minSize:n})})}function enB(e,t,n=""){return{title:e,dataSource:t,refreshRate:"10s",note:n}}let enV={metrics:{online:2,health:88.4,latency:"38ms",events:17},machines:[{id:"studio",name:"Studio-PC",os:"Windows",status:"online",link:"direct",heartbeat:"3s",cpu:42,memory:68,disk:71,network:24},{id:"runner",name:"Linux-runner-02",os:"Linux",status:"online",link:"p2p",heartbeat:"5s",cpu:76,memory:81,disk:62,network:43},{id:"mac",name:"MacBook-build",os:"macOS",status:"sleeping",link:"direct",heartbeat:"2m",cpu:8,memory:24,disk:48,network:6}],trend:[{time:"09:00",cpu:36,memory:54,network:24},{time:"10:00",cpu:48,memory:61,network:29},{time:"11:00",cpu:44,memory:58,network:34},{time:"12:00",cpu:63,memory:72,network:41},{time:"13:00",cpu:58,memory:69,network:37},{time:"14:00",cpu:71,memory:76,network:46}],networkLinks:[["Studio-PC","Linux-runner-02","P2P","38ms","0.3%"],["Studio-PC","MacBook-build","Direct","12ms","0.0%"],["Linux-runner-02","MacBook-build","Relay fallback","84ms","1.1%"]],events:[["14:31","Linux-runner-02 心跳延迟升高"],["14:28","Studio-PC 完成 2 个工具调用"],["14:19","MacBook-build 进入睡眠状态"],["14:12","工作组权限策略同步完成"],["14:04","P2P 链路切换到备用路径"]],serviceHealth:[{id:"local-service",name:"Local service",state:"正常",samples:[96,98,97,95,96,94,97,98,96,95,97,96]},{id:"agent-runtime",name:"Agent runtime",state:"正常",samples:[91,93,94,90,88,92,94,93,91,89,92,94]},{id:"p2p-mesh",name:"P2P mesh",state:"波动",samples:[78,82,76,73,68,71,74,79,83,80,77,72]},{id:"plugin-bridge",name:"Plugin bridge",state:"告警",samples:[88,86,84,82,79,74,63,54,48,52,67,76]}]},enH=[{id:"metric-runs",title:"运行中",description:"当前正在执行的运行数量。",icon:(0,ev.jsx)(Wc,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("运行中","运行队列"),render:e=>enF(e.title,"07",44,fe)},{id:"metric-queued",title:"排队",description:"等待调度的任务数量。",icon:(0,ev.jsx)(WZ,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("排队","调度器"),render:e=>enF(e.title,"04",44,ft)},{id:"metric-blocked",title:"待确认",description:"等待人工确认的任务数量。",icon:(0,ev.jsx)(en_,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("待确认","确认队列"),render:e=>enF(e.title,"03",44,fn)},{id:"metric-workers",title:"Worker",description:"当前可调度 worker 数量。",icon:(0,ev.jsx)(B4,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("Worker","Agent worker"),render:e=>enF(e.title,"14",44,fr)},{id:"queue",title:"任务队列",description:"运行队列 Roadmap。",icon:(0,ev.jsx)(enA,{className:"size-4"}),defaultSize:{w:7,h:5},defaultConfig:enB("任务队列","运行队列"),render:e=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden",children:[(0,ev.jsx)(fl,{title:e.title}),(0,ev.jsx)(H2,{items:enD})]})},{id:"workers",title:"Agent worker",description:"各 worker 的负载和容量。",icon:(0,ev.jsx)(B4,{className:"size-4"}),defaultSize:{w:5,h:5},defaultConfig:enB("Agent worker","Worker 状态"),render:e=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",children:[(0,ev.jsx)(fl,{title:e.title}),(0,ev.jsx)(H4,{workers:enT})]})},{id:"log",title:"最近执行",description:"最近执行记录 Roadmap。",icon:(0,ev.jsx)(vc,{className:"size-4"}),defaultSize:{w:7,h:4},defaultConfig:enB("最近执行","执行日志"),render:e=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden",children:[(0,ev.jsx)(fl,{title:e.title}),(0,ev.jsx)(H1,{items:enL})]})},{id:"confirmations",title:"待确认",description:"等待人工确认的事项。",icon:(0,ev.jsx)(Hl,{className:"size-4"}),defaultSize:{w:5,h:4},defaultConfig:enB("待确认","确认队列"),render:e=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",children:[(0,ev.jsx)(fl,{title:e.title}),(0,ev.jsx)(H0,{items:enR})]})}],enW=[{id:"metric-runs",kind:"metric-runs",x:0,y:0,w:3,h:2},{id:"metric-queued",kind:"metric-queued",x:3,y:0,w:3,h:2},{id:"metric-blocked",kind:"metric-blocked",x:6,y:0,w:3,h:2},{id:"metric-workers",kind:"metric-workers",x:9,y:0,w:3,h:2},{id:"queue",kind:"queue",x:0,y:2,w:7,h:5},{id:"workers",kind:"workers",x:7,y:2,w:5,h:5},{id:"log",kind:"log",x:0,y:7,w:7,h:4},{id:"confirmations",kind:"confirmations",x:7,y:7,w:5,h:4}];function enU(e=enV){return[{id:"metric-online",title:"在线机器",description:"当前在线机器数量。",icon:(0,ev.jsx)(eA,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("在线机器","机器心跳"),render:t=>enF(t.title,String(e.metrics.online),44,fe)},{id:"metric-health",title:"健康度",description:"工作组整体健康度。",icon:(0,ev.jsx)(ez,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("健康度","服务遥测"),render:t=>enF(t.title,`${e.metrics.health}%`,44,ft)},{id:"metric-latency",title:"平均延迟",description:"机器连接平均延迟。",icon:(0,ev.jsx)(B5,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("平均延迟","网络遥测"),render:t=>enF(t.title,e.metrics.latency,44,fn)},{id:"metric-events",title:"事件",description:"最近事件数量。",icon:(0,ev.jsx)(Hl,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("事件","事件流"),render:t=>enF(t.title,String(e.metrics.events),44,fr)},{id:"machines",title:"机器健康矩阵",description:"各机器资源和心跳状态。",icon:(0,ev.jsx)(eA,{className:"size-4"}),defaultSize:{w:7,h:5},defaultConfig:enB("机器健康矩阵","机器遥测"),render:t=>(0,ev.jsxs)("section",{className:"vtl-jelly-image-card flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",style:fa({image:"/themes/jelly/card1.png",opacity:.88,blur:"10px"}),children:[(0,ev.jsx)(fl,{title:t.title}),(0,ev.jsx)(H7,{machines:e.machines})]})},{id:"trend",title:"资源趋势",description:"CPU、内存和网络趋势。",icon:(0,ev.jsx)(enP,{className:"size-4"}),defaultSize:{w:5,h:5},defaultConfig:enB("资源趋势","机器遥测"),render:t=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",children:[(0,ev.jsx)(fl,{title:t.title}),(0,ev.jsx)(Wr,{config:en$,data:e.trend})]})},{id:"network",title:"网络连接",description:"机器之间连接状态。",icon:(0,ev.jsx)(mZ,{className:"size-4"}),defaultSize:{w:6,h:4},defaultConfig:enB("网络连接","网络遥测"),render:t=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden",children:[(0,ev.jsx)(fl,{title:t.title}),(0,ev.jsx)(Wn,{links:e.networkLinks})]})},{id:"events",title:"事件流",description:"最近遥测事件。",icon:(0,ev.jsx)(Hl,{className:"size-4"}),defaultSize:{w:6,h:4},defaultConfig:enB("事件流","事件流"),render:t=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden",children:[(0,ev.jsx)(fl,{title:t.title}),(0,ev.jsx)(H8,{events:e.events})]})},{id:"services",title:"服务健康",description:"服务 30 分钟粒度健康条。",icon:(0,ev.jsx)(B4,{className:"size-4"}),defaultSize:{w:12,h:3},defaultConfig:enB("服务健康","服务遥测"),render:t=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",children:[(0,ev.jsx)(fl,{title:t.title}),(0,ev.jsx)(Wi,{services:e.serviceHealth})]})}]}let enq=enU(),enK=[{id:"metric-online",kind:"metric-online",x:0,y:0,w:3,h:2},{id:"metric-health",kind:"metric-health",x:3,y:0,w:3,h:2},{id:"metric-latency",kind:"metric-latency",x:6,y:0,w:3,h:2},{id:"metric-events",kind:"metric-events",x:9,y:0,w:3,h:2},{id:"machines",kind:"machines",x:0,y:2,w:7,h:5},{id:"trend",kind:"trend",x:7,y:2,w:5,h:5},{id:"network",kind:"network",x:0,y:7,w:6,h:4},{id:"events",kind:"events",x:6,y:7,w:6,h:4},{id:"services",kind:"services",x:0,y:11,w:12,h:3}],enG={totals:{machines:4,online:2,runtime:3,tokens:7},machines:[{id:"studio",name:"Studio-PC",role:"本机",group:"Core",os:"Windows 11",runtime:"0.16.4",state:"online",tags:["admin","shell","files","scheduler"],agent:"6/8",cpu:42,memory:68,version:"Agent runtime 0.16.4",admin:"Allay"},{id:"runner",name:"Linux-runner-02",role:"GPU worker",group:"Compute",os:"Ubuntu 24.04",runtime:"0.16.3",state:"online",tags:["gpu","agent","files"],agent:"4/6",cpu:76,memory:81,version:"Agent runtime 0.16.3",admin:"Ops"},{id:"mac",name:"MacBook-build",role:"构建机",group:"Build",os:"macOS 15.4",runtime:"0.15.9",state:"sleeping",tags:["build","readonly"],agent:"0/3",cpu:8,memory:24,version:"Agent runtime 0.15.9",admin:"Allay"},{id:"observer",name:"Observer-01",role:"只读观测节点",group:"Edge",os:"Debian 13",runtime:"0.16.2",state:"warning",tags:["readonly","audit"],agent:"1/2",cpu:18,memory:36,version:"Agent runtime 0.16.2",admin:"Security"}],topology:{nodes:[{id:"studio",label:"Studio-PC",meta:"本机",x:50,y:18},{id:"runner",label:"Linux-runner-02",meta:"GPU worker",x:22,y:60},{id:"mac",label:"MacBook-build",meta:"构建机",x:76,y:58,state:"warning"},{id:"observer",label:"Observer-01",meta:"只读观测",x:50,y:82,state:"warning"}],links:[{id:"sr",from:"studio",to:"runner",kind:"p2p",label:"P2P",meta:"38ms / 0.3%"},{id:"sm",from:"studio",to:"mac",kind:"direct",label:"Direct",meta:"12ms / 0%"},{id:"ro",from:"runner",to:"observer",kind:"relay",label:"Relay",meta:"84ms / 1.1%"},{id:"mo",from:"mac",to:"observer",kind:"down",label:"Down",meta:"lost"}]},pathTotals:{direct:1,p2p:1,relay:1,broken:1},latency:Q4,candidates:[["Studio-PC","Linux-runner-02","P2P","symmetric NAT","38ms","0.3%"],["Studio-PC","MacBook-build","Direct","open port 4178","12ms","0.0%"],["Linux-runner-02","Observer-01","Relay","udp blocked","84ms","1.1%"],["MacBook-build","Observer-01","Interrupted","sleep","-","-"]]};function enY(e=enG){return[{id:"total",title:"机器",description:"工作组机器总数。",icon:(0,ev.jsx)(eA,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("机器","机器组"),render:t=>enF(t.title,String(e.totals.machines),42,fe)},{id:"online",title:"在线",description:"当前在线机器。",icon:(0,ev.jsx)(ez,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("在线","机器心跳"),render:t=>enF(t.title,String(e.totals.online),42,ft)},{id:"runtime",title:"Runtime",description:"可用 runtime 数量。",icon:(0,ev.jsx)(B4,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("Runtime","Agent runtime"),render:t=>enF(t.title,String(e.totals.runtime),42,fn)},{id:"tokens",title:"Token",description:"已注册 token 数。",icon:(0,ev.jsx)(en_,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("Token","机器注册"),render:t=>enF(t.title,String(e.totals.tokens),42,fr)},{id:"machines",title:"机器组",description:"机器角色、版本和标签。",icon:(0,ev.jsx)(eA,{className:"size-4"}),defaultSize:{w:12,h:4},defaultConfig:enB("机器组","机器组"),render:t=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",children:[(0,ev.jsx)(fl,{title:t.title}),(0,ev.jsx)(Hf,{machines:e.machines})]})},{id:"topology",title:"拓扑图",description:"工作组连接拓扑。",icon:(0,ev.jsx)(enI,{className:"size-4"}),defaultSize:{w:12,h:6},defaultConfig:enB("拓扑图","网络拓扑"),render:()=>(0,ev.jsx)("section",{className:"size-full rounded-xl border bg-card p-3",children:(0,ev.jsx)(HJ,{nodes:e.topology.nodes,links:e.topology.links})})},{id:"direct",title:"直连",description:"直连路径数量。",icon:(0,ev.jsx)(mZ,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("直连","网络拓扑"),render:t=>enF(t.title,String(e.pathTotals.direct),42,fe)},{id:"p2p",title:"P2P",description:"P2P 路径数量。",icon:(0,ev.jsx)(B5,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("P2P","网络拓扑"),render:t=>enF(t.title,String(e.pathTotals.p2p),42,ft)},{id:"relay",title:"Relay",description:"Relay 路径数量。",icon:(0,ev.jsx)(enI,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("Relay","网络拓扑"),render:t=>enF(t.title,String(e.pathTotals.relay),42,fn)},{id:"broken",title:"中断",description:"中断路径数量。",icon:(0,ev.jsx)(en_,{className:"size-4"}),defaultSize:{w:3,h:2},defaultConfig:enB("中断","网络拓扑"),render:t=>enF(t.title,String(e.pathTotals.broken),42,fr)},{id:"trend",title:"延迟",description:"不同路径延迟趋势。",icon:(0,ev.jsx)(enP,{className:"size-4"}),defaultSize:{w:6,h:4},defaultConfig:enB("延迟","网络遥测"),render:t=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",children:[(0,ev.jsx)(fl,{title:t.title}),(0,ev.jsx)(HU,{config:Q6,data:e.latency})]})},{id:"paths",title:"候选路径",description:"可用连接路径候选。",icon:(0,ev.jsx)(enI,{className:"size-4"}),defaultSize:{w:6,h:4},defaultConfig:enB("候选路径","网络候选路径"),render:t=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",children:[(0,ev.jsx)(fl,{title:t.title}),(0,ev.jsx)(Hq,{candidates:e.candidates})]})}]}let enX=enY(),enZ=[{id:"total",kind:"total",x:0,y:0,w:3,h:2},{id:"online",kind:"online",x:3,y:0,w:3,h:2},{id:"runtime",kind:"runtime",x:6,y:0,w:3,h:2},{id:"tokens",kind:"tokens",x:9,y:0,w:3,h:2},{id:"machines",kind:"machines",x:0,y:2,w:12,h:4},{id:"topology",kind:"topology",x:0,y:6,w:12,h:6},{id:"direct",kind:"direct",x:0,y:12,w:3,h:2},{id:"p2p",kind:"p2p",x:3,y:12,w:3,h:2},{id:"relay",kind:"relay",x:6,y:12,w:3,h:2},{id:"broken",kind:"broken",x:9,y:12,w:3,h:2},{id:"trend",kind:"trend",x:0,y:14,w:6,h:4},{id:"paths",kind:"paths",x:6,y:14,w:6,h:4}],enJ=[{id:"events",title:"日志与审计",description:"审计事件时间线。",icon:(0,ev.jsx)(enA,{className:"size-4"}),defaultSize:{w:8,h:7},defaultConfig:enB("日志与审计","审计事件"),render:e=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden",children:[(0,ev.jsx)(fl,{title:e.title}),(0,ev.jsx)(wq,{events:Q3})]})},{id:"filters",title:"筛选",description:"审计记录筛选维度。",icon:(0,ev.jsx)(enz,{className:"size-4"}),defaultSize:{w:4,h:3},defaultConfig:enB("筛选","审计筛选"),render:e=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",children:[(0,ev.jsx)(fl,{title:e.title}),(0,ev.jsx)(wU,{rows:[["机器","4"],["用户","4"],["Agent","6"],["时间","24h"]]})]})},{id:"risk",title:"拒绝事件",description:"权限拒绝和危险操作数量。",icon:(0,ev.jsx)(en_,{className:"size-4"}),defaultSize:{w:4,h:4},defaultConfig:enB("拒绝事件","审计事件"),render:e=>enF(e.title,"05",42,"/themes/jelly/bg5.png")},{id:"trend",title:"事件趋势",description:"审计事件趋势图。",icon:(0,ev.jsx)(enP,{className:"size-4"}),defaultSize:{w:12,h:4},defaultConfig:enB("事件趋势","审计事件"),render:e=>(0,ev.jsxs)("section",{className:"flex size-full flex-col overflow-hidden rounded-xl border bg-card p-3",children:[(0,ev.jsx)(fl,{title:e.title}),(0,ev.jsx)(BY,{config:Q6,data:Q4})]})}],enQ=[{id:"events",kind:"events",x:0,y:0,w:8,h:7},{id:"filters",kind:"filters",x:8,y:0,w:4,h:3},{id:"risk",kind:"risk",x:8,y:3,w:4,h:4},{id:"trend",kind:"trend",x:0,y:7,w:12,h:4}],en0={totals:{machines:0,online:0,runtime:0,tokens:0},machines:[],topology:{nodes:[],links:[]},pathTotals:{direct:0,p2p:0,relay:0,broken:0},latency:[],candidates:[]},en1={metrics:{online:0,health:0,latency:"local",events:0},machines:[],trend:[],networkLinks:[],events:[],serviceHealth:[]};function en2(e,t){let[n,r]=ey.useState(t);return ey.useEffect(()=>{let n=!0,i=!1;async function a(){if(!i){i=!0;try{let t=await fetch(tJ(e),{cache:"no-store"});if(!t.ok)return;let i=await t.json();n&&r(i)}catch{n&&r(t)}finally{i=!1}}}a();let o=window.setInterval(a,2e3);return()=>{n=!1,window.clearInterval(o)}},[t,e]),n}function en5(e){return(0,ev.jsx)(ha,{children:e})}function en4({clipboardItems:e=[],onClipboardItemsChange:t,onOverlayOpenChange:n}){let r=en2("/api/local/machines/fleet",en0),{machines:i,loading:a}=WW(),o=ey.useMemo(()=>enY(r),[r]),l=ey.useMemo(()=>i.filter(e=>!e.isLocal),[i]);return(0,ev.jsxs)("div",{className:"grid gap-6",children:[(0,ev.jsx)(mD,{boardId:"machine-group",definitions:o,initialLayouts:enZ,clipboardItems:e,actionLabel:"机器组页面卡片操作",paletteGroupTitle:"机器组页面卡片",onClipboardItemsChange:t,onOverlayOpenChange:n}),(l.length>0||a)&&(0,ev.jsx)(ert,{machines:l,loading:a})]})}let en3=[{id:"processes",x:0,y:0,w:12,h:8}],en6=ho(en3);function en8(){return en5((0,ev.jsx)(enN,{layouts:en3,children:(0,ev.jsx)(enC,{layout:enS(en6,"processes"),className:"overflow-hidden",children:(0,ev.jsx)(etb,{})})}))}let en7=[{id:"performance",x:0,y:0,w:12,h:8}],en9=ho(en7);function ere(){return en5((0,ev.jsx)(enN,{layouts:en7,children:(0,ev.jsx)(enC,{layout:enS(en9,"performance"),className:"overflow-hidden",children:(0,ev.jsx)(etw,{})})}))}function ert({machines:e,loading:t}){let n={direct:"直连",p2p:"P2P",relay:"中继",none:"无连接",local:"本地"};return t?(0,ev.jsxs)("section",{className:"rounded-xl border bg-card p-5",children:[(0,ev.jsx)("h3",{className:"mb-3 text-base font-semibold tracking-normal",children:"工作组远程机器"}),(0,ev.jsx)("div",{className:"py-6 text-center text-sm text-muted-foreground",children:"正在加载远程机器..."})]}):(0,ev.jsxs)("section",{className:"rounded-xl border bg-card p-5",children:[(0,ev.jsx)("h3",{className:"mb-3 text-base font-semibold tracking-normal",children:"工作组远程机器"}),0===e.length?(0,ev.jsx)("div",{className:"rounded-lg border border-dashed px-3 py-6 text-center text-sm text-muted-foreground",children:"当前工作组没有远程机器在线。"}):(0,ev.jsx)("div",{className:"grid min-h-0 content-start overflow-hidden",children:e.map((e,t)=>(0,ev.jsxs)("div",{className:`grid min-h-14 grid-cols-[minmax(0,1.2fr)_8rem_8rem_8rem] items-center gap-4 px-2 py-1.5${t>0?" border-t":""}`,children:[(0,ev.jsxs)("div",{className:"min-w-0",children:[(0,ev.jsxs)("div",{className:"flex items-center gap-2",children:[(0,ev.jsx)("span",{className:`size-2 rounded-full ${"online"===e.status?"bg-primary":"bg-destructive"}`}),(0,ev.jsx)("span",{className:"truncate text-sm font-medium",children:e.name})]}),(0,ev.jsxs)("div",{className:"mt-1 truncate text-[11px] text-muted-foreground",children:[e.platform," / ",e.arch]})]}),(0,ev.jsxs)("div",{className:"grid gap-0.5",children:[(0,ev.jsx)("span",{className:"text-[11px] text-muted-foreground",children:"状态"}),(0,ev.jsx)("span",{className:"truncate text-sm",children:"online"===e.status?"在线":"离线"})]}),(0,ev.jsxs)("div",{className:"grid gap-0.5",children:[(0,ev.jsx)("span",{className:"text-[11px] text-muted-foreground",children:"连接方式"}),(0,ev.jsx)("span",{className:"truncate text-sm",children:n[e.connectivity]??e.connectivity})]}),(0,ev.jsxs)("div",{className:"grid gap-0.5",children:[(0,ev.jsx)("span",{className:"text-[11px] text-muted-foreground",children:"工作组"}),(0,ev.jsx)("span",{className:"truncate text-sm",children:e.workgroupName??"-"})]})]},e.id))})]})}function ern({clipboardItems:e=[],onClipboardItemsChange:t,onOverlayOpenChange:n}){return(0,ev.jsx)(mD,{boardId:"audit-logs",definitions:enJ,initialLayouts:enQ,clipboardItems:e,actionLabel:"日志审计页面卡片操作",paletteGroupTitle:"日志审计页面卡片",onClipboardItemsChange:t,onOverlayOpenChange:n})}function err(e){return"string"==typeof e||"number"==typeof e?String(e):""}function eri({navItems:e,activeNavId:t,onNavSelect:n}){return(0,ev.jsx)("nav",{className:"fixed inset-x-0 bottom-0 z-50 flex h-14 items-stretch border-t border-border bg-sidebar pb-[env(safe-area-inset-bottom)]",children:e.map(e=>{let r=e.id===t;return(0,ev.jsxs)("button",{type:"button",disabled:e.disabled,"aria-label":err(e.label),"aria-current":r?"page":void 0,className:tK("relative flex flex-1 flex-col items-center justify-center gap-0.5 text-sidebar-foreground/55 transition-colors",r&&"text-sidebar-foreground",e.disabled&&"pointer-events-none opacity-40"),onClick:()=>n(e.id),children:[(0,ev.jsx)("span",{className:"flex size-6 items-center justify-center [&_svg]:size-5",children:e.icon}),(0,ev.jsx)("span",{className:"text-[0.625rem] leading-tight",children:err(e.label)}),e.badge&&(0,ev.jsx)("span",{className:"absolute top-1.5 right-[calc(50%-0.125rem)] ml-2 size-1.5 rounded-full bg-foreground"})]},e.id)})})}let era=ey.default.createContext({drawerRef:{current:null},overlayRef:{current:null},onPress:()=>{},onRelease:()=>{},onDrag:()=>{},onNestedDrag:()=>{},onNestedOpenChange:()=>{},onNestedRelease:()=>{},openProp:void 0,dismissible:!1,isOpen:!1,isDragging:!1,keyboardIsOpen:{current:!1},snapPointsOffset:null,snapPoints:null,handleOnly:!1,modal:!1,shouldFade:!1,activeSnapPoint:null,onOpenChange:()=>{},setActiveSnapPoint:()=>{},closeDrawer:()=>{},direction:"bottom",shouldAnimate:{current:!0},shouldScaleBackground:!1,setBackgroundColorOnScale:!0,noBodyStyles:!1,container:null,autoFocus:!1}),ero=()=>{let e=ey.default.useContext(era);if(!e)throw Error("useDrawerContext must be used within a Drawer.Root");return e};function erl(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function ers(){return erc(/^iPhone/)||erc(/^iPad/)||erc(/^Mac/)&&navigator.maxTouchPoints>1}function erc(e){return"u">typeof window&&null!=window.navigator?e.test(window.navigator.platform):void 0}!function(e){if(!e||"u"<typeof document)return;let t=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",t.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}("[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform,100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform,100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not(\n[data-state=closed]\n){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,var(--initial-transform,100%),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform,100%),0)}}@keyframes slideFromTop{from{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}}@keyframes slideFromLeft{from{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}}@keyframes slideFromRight{from{transform:translate3d(var(--initial-transform,100%),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform,100%),0,0)}}");let erd="u">typeof window?ey.useLayoutEffect:ey.useEffect;function eru(...e){return(...t)=>{for(let n of e)"function"==typeof n&&n(...t)}}let erf="u">typeof document&&window.visualViewport;function erh(e){let t=window.getComputedStyle(e);return/(auto|scroll)/.test(t.overflow+t.overflowX+t.overflowY)}function erp(e){for(erh(e)&&(e=e.parentElement);e&&!erh(e);)e=e.parentElement;return e||document.scrollingElement||document.documentElement}let erm=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]),erg=0;function erv(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}function erx(e){let t=document.scrollingElement||document.documentElement;for(;e&&e!==t;){let t=erp(e);if(t!==document.documentElement&&t!==document.body&&t!==e){let n=t.getBoundingClientRect().top,r=e.getBoundingClientRect().top;e.getBoundingClientRect().bottom>t.getBoundingClientRect().bottom+24&&(t.scrollTop+=r-n)}e=t.parentElement}}function ery(e){return e instanceof HTMLInputElement&&!erm.has(e.type)||e instanceof HTMLTextAreaElement||e instanceof HTMLElement&&e.isContentEditable}function erb(...e){return ey.useCallback(function(...e){return t=>e.forEach(e=>{"function"==typeof e?e(t):null!=e&&(e.current=t)})}(...e),e)}let erw=new WeakMap;function erj(e,t,n=!1){if(!e||!(e instanceof HTMLElement))return;let r={};Object.entries(t).forEach(([t,n])=>{t.startsWith("--")?e.style.setProperty(t,n):(r[t]=e.style[t],e.style[t]=n)}),n||erw.set(e,r)}let erk=e=>{switch(e){case"top":case"bottom":return!0;case"left":case"right":return!1;default:return e}};function erS(e,t){if(!e)return null;let n=window.getComputedStyle(e),r=n.transform||n.webkitTransform||n.mozTransform,i=r.match(/^matrix3d\((.+)\)$/);return i?parseFloat(i[1].split(", ")[erk(t)?13:12]):(i=r.match(/^matrix\((.+)\)$/))?parseFloat(i[1].split(", ")[erk(t)?5:4]):null}function erN(e,t){if(!e)return()=>{};let n=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=n}}let erC=[.32,.72,0,1],erM="vaul-dragging";function erE(e){let t=ey.default.useRef(e);return ey.default.useEffect(()=>{t.current=e}),ey.default.useMemo(()=>(...e)=>null==t.current?void 0:t.current.call(t,...e),[])}function erO({prop:e,defaultProp:t,onChange:n=()=>{}}){let[r,i]=function({defaultProp:e,onChange:t}){let n=ey.default.useState(e),[r]=n,i=ey.default.useRef(r),a=erE(t);return ey.default.useEffect(()=>{i.current!==r&&(a(r),i.current=r)},[r,i,a]),n}({defaultProp:t,onChange:n}),a=void 0!==e,o=a?e:r,l=erE(n);return[o,ey.default.useCallback(t=>{if(a){let n="function"==typeof t?t(e):t;n!==e&&l(n)}else i(t)},[a,e,i,l])]}let erP=()=>()=>{},erz=null,erA=ey.default.forwardRef(function({...e},t){let{overlayRef:n,snapPoints:r,onRelease:i,shouldFade:a,isOpen:o,modal:l,shouldAnimate:s}=ero(),c=erb(t,n),d=r&&r.length>0;if(!l)return null;let u=ey.default.useCallback(e=>i(e),[i]);return ey.default.createElement(pC,{onMouseUp:u,ref:c,"data-vaul-overlay":"","data-vaul-snap-points":o&&d?"true":"false","data-vaul-snap-points-overlay":o&&a?"true":"false","data-vaul-animate":(null==s?void 0:s.current)?"true":"false",...e})});erA.displayName="Drawer.Overlay";let erI=ey.default.forwardRef(function({onPointerDownOutside:e,style:t,onOpenAutoFocus:n,...r},i){let{drawerRef:a,onPress:o,onRelease:l,onDrag:s,keyboardIsOpen:c,snapPointsOffset:d,activeSnapPointIndex:u,modal:f,isOpen:h,direction:p,snapPoints:m,container:g,handleOnly:v,shouldAnimate:x,autoFocus:y}=ero(),[b,w]=ey.default.useState(!1),j=erb(i,a),k=ey.default.useRef(null),S=ey.default.useRef(null),N=ey.default.useRef(!1),C=m&&m.length>0;function M(e){k.current=null,N.current=!1,l(e)}return!function(){let{direction:e,isOpen:t,shouldScaleBackground:n,setBackgroundColorOnScale:r,noBodyStyles:i}=ero(),a=ey.default.useRef(null),o=(0,ey.useMemo)(()=>document.body.style.backgroundColor,[]);function l(){return(window.innerWidth-26)/window.innerWidth}ey.default.useEffect(()=>{if(t&&n){a.current&&clearTimeout(a.current);let t=document.querySelector("[data-vaul-drawer-wrapper]")||document.querySelector("[vaul-drawer-wrapper]");if(!t)return;!function(...e){}(r&&!i?erN(document.body,{background:"black"}):erP,erN(t,{transformOrigin:erk(e)?"top":"left",transitionProperty:"transform, border-radius",transitionDuration:"0.5s",transitionTimingFunction:`cubic-bezier(${erC.join(",")})`}));let n=erN(t,{borderRadius:"8px",overflow:"hidden",...erk(e)?{transform:`scale(${l()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`}:{transform:`scale(${l()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`}});return()=>{n(),a.current=window.setTimeout(()=>{o?document.body.style.background=o:document.body.style.removeProperty("background")},500)}}},[t,n,o])}(),ey.default.useEffect(()=>{C&&window.requestAnimationFrame(()=>{w(!0)})},[]),ey.default.createElement(pP,{"data-vaul-drawer-direction":p,"data-vaul-drawer":"","data-vaul-delayed-snap-points":b?"true":"false","data-vaul-snap-points":h&&C?"true":"false","data-vaul-custom-container":g?"true":"false","data-vaul-animate":(null==x?void 0:x.current)?"true":"false",...r,ref:j,style:d&&d.length>0?{"--snap-point-height":`${d[null!=u?u:0]}px`,...t}:t,onPointerDown:e=>{v||(null==r.onPointerDown||r.onPointerDown.call(r,e),k.current={x:e.pageX,y:e.pageY},o(e))},onOpenAutoFocus:e=>{null==n||n(e),y||e.preventDefault()},onPointerDownOutside:t=>{(null==e||e(t),!f||t.defaultPrevented)?t.preventDefault():c.current&&(c.current=!1)},onFocusOutside:e=>{if(!f)return void e.preventDefault()},onPointerMove:e=>{if(S.current=e,v||(null==r.onPointerMove||r.onPointerMove.call(r,e),!k.current))return;let t=e.pageY-k.current.y,n=e.pageX-k.current.x,i="touch"===e.pointerType?10:2;((e,t,n=0)=>{if(N.current)return!0;let r=Math.abs(e.y),i=Math.abs(e.x),a=i>r,o=["bottom","right"].includes(t)?1:-1;if("left"===t||"right"===t){if(!(e.x*o<0)&&i>=0&&i<=n)return a}else if(!(e.y*o<0)&&r>=0&&r<=n)return!a;return N.current=!0,!0})({x:n,y:t},p,i)?s(e):(Math.abs(n)>i||Math.abs(t)>i)&&(k.current=null)},onPointerUp:e=>{null==r.onPointerUp||r.onPointerUp.call(r,e),k.current=null,N.current=!1,l(e)},onPointerOut:e=>{null==r.onPointerOut||r.onPointerOut.call(r,e),M(S.current)},onContextMenu:e=>{null==r.onContextMenu||r.onContextMenu.call(r,e),S.current&&M(S.current)}})});erI.displayName="Drawer.Content",ey.default.forwardRef(function({preventCycle:e=!1,children:t,...n},r){let{closeDrawer:i,isDragging:a,snapPoints:o,activeSnapPoint:l,setActiveSnapPoint:s,dismissible:c,handleOnly:d,isOpen:u,onPress:f,onDrag:h}=ero(),p=ey.default.useRef(null),m=ey.default.useRef(!1);function g(){p.current&&window.clearTimeout(p.current),m.current=!1}return ey.default.createElement("div",{onClick:function(){m.current?g():window.setTimeout(()=>{!function(){if(a||e||m.current)return g();if(g(),!o||0===o.length){c||i();return}if(l===o[o.length-1]&&c)return i();let t=o.findIndex(e=>e===l);-1===t||s(o[t+1])}()},120)},onPointerCancel:g,onPointerDown:e=>{d&&f(e),p.current=window.setTimeout(()=>{m.current=!0},250)},onPointerMove:e=>{d&&h(e)},ref:r,"data-vaul-drawer-visible":u?"true":"false","data-vaul-handle":"","aria-hidden":"true",...n},ey.default.createElement("span",{"data-vaul-handle-hitarea":"","aria-hidden":"true"},t))}).displayName="Drawer.Handle";let er_=function({open:e,onOpenChange:t,children:n,onDrag:r,onRelease:i,snapPoints:o,shouldScaleBackground:l=!1,setBackgroundColorOnScale:s=!0,closeThreshold:c=.25,scrollLockTimeout:d=100,dismissible:u=!0,handleOnly:f=!1,fadeFromIndex:h=o&&o.length-1,activeSnapPoint:p,setActiveSnapPoint:m,fixed:g,modal:v=!0,onClose:x,nested:y,noBodyStyles:b=!1,direction:w="bottom",defaultOpen:j=!1,disablePreventScroll:k=!0,snapToSequentialPoint:S=!1,preventScrollRestoration:N=!1,repositionInputs:C=!0,onAnimationEnd:M,container:E,autoFocus:O=!1}){var P,z;let[A=!1,I]=erO({defaultProp:j,prop:e,onChange:e=>{null==t||t(e),e||y||ed(),setTimeout(()=>{null==M||M(e)},500),e&&!v&&"u">typeof window&&window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"}),e||(document.body.style.pointerEvents="auto")}}),[_,D]=ey.default.useState(!1),[T,R]=ey.default.useState(!1),[L,$]=ey.default.useState(!1),F=ey.default.useRef(null),B=ey.default.useRef(null),V=ey.default.useRef(null),H=ey.default.useRef(null),W=ey.default.useRef(null),U=ey.default.useRef(!1),q=ey.default.useRef(null),K=ey.default.useRef(0),G=ey.default.useRef(!1),Y=ey.default.useRef(!j),X=ey.default.useRef(0),Z=ey.default.useRef(null),J=ey.default.useRef((null==(P=Z.current)?void 0:P.getBoundingClientRect().height)||0),Q=ey.default.useRef((null==(z=Z.current)?void 0:z.getBoundingClientRect().width)||0),ee=ey.default.useRef(0),et=ey.default.useCallback(e=>{o&&e===eo.length-1&&(B.current=new Date)},[]),{activeSnapPoint:en,activeSnapPointIndex:er,setActiveSnapPoint:ei,onRelease:ea,snapPointsOffset:eo,onDrag:el,shouldFade:es,getPercentageDragged:ec}=function({activeSnapPointProp:e,setActiveSnapPointProp:t,snapPoints:n,drawerRef:r,overlayRef:i,fadeFromIndex:a,onSnapPointChange:o,direction:l="bottom",container:s,snapToSequentialPoint:c}){let[d,u]=erO({prop:e,defaultProp:null==n?void 0:n[0],onChange:t}),[f,h]=ey.default.useState("u">typeof window?{innerWidth:window.innerWidth,innerHeight:window.innerHeight}:void 0);ey.default.useEffect(()=>{function e(){h({innerWidth:window.innerWidth,innerHeight:window.innerHeight})}return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let p=ey.default.useMemo(()=>d===(null==n?void 0:n[n.length-1])||null,[n,d]),m=ey.default.useMemo(()=>{var e;return null!=(e=null==n?void 0:n.findIndex(e=>e===d))?e:null},[n,d]),g=n&&n.length>0&&(a||0===a)&&!Number.isNaN(a)&&n[a]===d||!n,v=ey.default.useMemo(()=>{var e;let t=s?{width:s.getBoundingClientRect().width,height:s.getBoundingClientRect().height}:"u">typeof window?{width:window.innerWidth,height:window.innerHeight}:{width:0,height:0};return null!=(e=null==n?void 0:n.map(e=>{let n="string"==typeof e,r=0;if(n&&(r=parseInt(e,10)),erk(l)){let i=n?r:f?e*t.height:0;return f?"bottom"===l?t.height-i:-t.height+i:i}let i=n?r:f?e*t.width:0;return f?"right"===l?t.width-i:-t.width+i:i}))?e:[]},[n,f,s]),x=ey.default.useMemo(()=>null!==m?null==v?void 0:v[m]:null,[v,m]),y=ey.default.useCallback(e=>{var t;let s=null!=(t=null==v?void 0:v.findIndex(t=>t===e))?t:null;o(s),erj(r.current,{transition:`transform 0.5s cubic-bezier(${erC.join(",")})`,transform:erk(l)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`}),v&&s!==v.length-1&&void 0!==a&&s!==a&&s<a?erj(i.current,{transition:`opacity 0.5s cubic-bezier(${erC.join(",")})`,opacity:"0"}):erj(i.current,{transition:`opacity 0.5s cubic-bezier(${erC.join(",")})`,opacity:"1"}),u(null==n?void 0:n[Math.max(s,0)])},[r.current,n,v,a,i,u]);return ey.default.useEffect(()=>{if(d||e){var t;let r=null!=(t=null==n?void 0:n.findIndex(t=>t===e||t===d))?t:-1;v&&-1!==r&&"number"==typeof v[r]&&y(v[r])}},[d,e,n,v,y]),{isLastSnapPoint:p,activeSnapPoint:d,shouldFade:g,getPercentageDragged:function(e,t){if(!n||"number"!=typeof m||!v||void 0===a)return null;let r=m===a-1;if(m>=a&&t)return 0;if(r&&!t)return 1;if(!g&&!r)return null;let i=r?m+1:m-1,o=e/Math.abs(r?v[i]-v[i-1]:v[i+1]-v[i]);return r?1-o:o},setActiveSnapPoint:u,activeSnapPointIndex:m,onRelease:function({draggedDistance:e,closeDrawer:t,velocity:r,dismissible:o}){if(void 0===a)return;let s="bottom"===l||"right"===l?(null!=x?x:0)-e:(null!=x?x:0)+e,d=m===a-1,u=0===m,f=e>0;if(d&&erj(i.current,{transition:`opacity 0.5s cubic-bezier(${erC.join(",")})`}),!c&&r>2&&!f)return void(o?t():y(v[0]));if(!c&&r>2&&f&&v&&n)return void y(v[n.length-1]);let h=null==v?void 0:v.reduce((e,t)=>"number"!=typeof e||"number"!=typeof t?e:Math.abs(t-s)<Math.abs(e-s)?t:e),g=erk(l)?window.innerHeight:window.innerWidth;if(r>.4&&Math.abs(e)<.4*g){let e=f?1:-1;return e>0&&p&&n?void y(v[n.length-1]):void(u&&e<0&&o&&t(),null===m||y(v[m+e]))}y(h)},onDrag:function({draggedDistance:e}){if(null===x)return;let t="bottom"===l||"right"===l?x-e:x+e;("bottom"===l||"right"===l)&&t<v[v.length-1]||("top"===l||"left"===l)&&t>v[v.length-1]||erj(r.current,{transform:erk(l)?`translate3d(0, ${t}px, 0)`:`translate3d(${t}px, 0, 0)`})},snapPointsOffset:v}}({snapPoints:o,activeSnapPointProp:p,setActiveSnapPointProp:m,drawerRef:Z,fadeFromIndex:h,overlayRef:F,onSnapPointChange:et,direction:w,container:E,snapToSequentialPoint:S});!function(e={}){let{isDisabled:t}=e;erd(()=>{if(!t){var e,n,r;let t,i,o,l,s,c,d;return 1==++erg&&ers()&&(o=0,l=window.pageXOffset,s=window.pageYOffset,c=eru((e=document.documentElement,n="paddingRight",r=`${window.innerWidth-document.documentElement.clientWidth}px`,t=e.style[n],e.style[n]=r,()=>{e.style[n]=t})),window.scrollTo(0,0),d=eru(erv(document,"touchstart",e=>{((i=erp(e.target))!==document.documentElement||i!==document.body)&&(o=e.changedTouches[0].pageY)},{passive:!1,capture:!0}),erv(document,"touchmove",e=>{if(!i||i===document.documentElement||i===document.body)return void e.preventDefault();let t=e.changedTouches[0].pageY,n=i.scrollTop,r=i.scrollHeight-i.clientHeight;0!==r&&((n<=0&&t>o||n>=r&&t<o)&&e.preventDefault(),o=t)},{passive:!1,capture:!0}),erv(document,"touchend",e=>{let t=e.target;ery(t)&&t!==document.activeElement&&(e.preventDefault(),t.style.transform="translateY(-2000px)",t.focus(),requestAnimationFrame(()=>{t.style.transform=""}))},{passive:!1,capture:!0}),erv(document,"focus",e=>{let t=e.target;ery(t)&&(t.style.transform="translateY(-2000px)",requestAnimationFrame(()=>{t.style.transform="",erf&&(erf.height<window.innerHeight?requestAnimationFrame(()=>{erx(t)}):erf.addEventListener("resize",()=>erx(t),{once:!0}))}))},!0),erv(window,"scroll",()=>{window.scrollTo(0,0)})),a=()=>{c(),d(),window.scrollTo(l,s)}),()=>{0==--erg&&(null==a||a())}}},[t])}({isDisabled:!A||T||!v||L||!_||!C||!k});let{restorePositionSetting:ed}=function({isOpen:e,modal:t,nested:n,hasBeenOpened:r,preventScrollRestoration:i,noBodyStyles:a}){let[o,l]=ey.default.useState(()=>"u">typeof window?window.location.href:""),s=ey.default.useRef(0),c=ey.default.useCallback(()=>{if(erl()&&null===erz&&e&&!a){erz={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left,height:document.body.style.height,right:"unset"};let{scrollX:e,innerHeight:t}=window;document.body.style.setProperty("position","fixed","important"),Object.assign(document.body.style,{top:`${-s.current}px`,left:`${-e}px`,right:"0px",height:"auto"}),window.setTimeout(()=>window.requestAnimationFrame(()=>{let e=t-window.innerHeight;e&&s.current>=t&&(document.body.style.top=`${-(s.current+e)}px`)}),300)}},[e]),d=ey.default.useCallback(()=>{if(erl()&&null!==erz&&!a){let e=-parseInt(document.body.style.top,10),t=-parseInt(document.body.style.left,10);Object.assign(document.body.style,erz),window.requestAnimationFrame(()=>{i&&o!==window.location.href?l(window.location.href):window.scrollTo(t,e)}),erz=null}},[o]);return ey.default.useEffect(()=>{function e(){s.current=window.scrollY}return e(),window.addEventListener("scroll",e),()=>{window.removeEventListener("scroll",e)}},[]),ey.default.useEffect(()=>{if(t)return()=>{"u"<typeof document||document.querySelector("[data-vaul-drawer]")||d()}},[t,d]),ey.default.useEffect(()=>{!n&&r&&(e?(window.matchMedia("(display-mode: standalone)").matches||c(),t||window.setTimeout(()=>{d()},500)):d())},[e,r,o,t,n,c,d]),{restorePositionSetting:d}}({isOpen:A,modal:v,nested:null!=y&&y,hasBeenOpened:_,preventScrollRestoration:N,noBodyStyles:b});function eu(){return(window.innerWidth-26)/window.innerWidth}function ef(e,t){var n;let r=e,i=null==(n=window.getSelection())?void 0:n.toString(),a=Z.current?erS(Z.current,w):null,o=new Date;if("SELECT"===r.tagName||r.hasAttribute("data-vaul-no-drag")||r.closest("[data-vaul-no-drag]"))return!1;if("right"===w||"left"===w)return!0;if(B.current&&o.getTime()-B.current.getTime()<500)return!1;if(null!==a&&("bottom"===w?a>0:a<0))return!0;if(i&&i.length>0)return!1;if(W.current&&o.getTime()-W.current.getTime()<d&&0===a||t)return W.current=o,!1;for(;r;){if(r.scrollHeight>r.clientHeight){if(0!==r.scrollTop)return W.current=new Date,!1;if("dialog"===r.getAttribute("role"))break}r=r.parentNode}return!0}function eh(e){T&&Z.current&&(Z.current.classList.remove(erM),U.current=!1,R(!1),H.current=new Date),null==x||x(),e||I(!1),setTimeout(()=>{o&&ei(o[0])},500)}function ep(){if(!Z.current)return;let e=document.querySelector("[data-vaul-drawer-wrapper]"),t=erS(Z.current,w);erj(Z.current,{transform:"translate3d(0, 0, 0)",transition:`transform 0.5s cubic-bezier(${erC.join(",")})`}),erj(F.current,{transition:`opacity 0.5s cubic-bezier(${erC.join(",")})`,opacity:"1"}),l&&t&&t>0&&A&&erj(e,{borderRadius:"8px",overflow:"hidden",...erk(w)?{transform:`scale(${eu()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,transformOrigin:"top"}:{transform:`scale(${eu()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,transformOrigin:"left"},transitionProperty:"transform, border-radius",transitionDuration:"0.5s",transitionTimingFunction:`cubic-bezier(${erC.join(",")})`},!0)}return ey.default.useEffect(()=>{window.requestAnimationFrame(()=>{Y.current=!0})},[]),ey.default.useEffect(()=>{var e;function t(){if(Z.current&&C&&(ery(document.activeElement)||G.current)){var e;let t=(null==(e=window.visualViewport)?void 0:e.height)||0,n=window.innerHeight,r=n-t,i=Z.current.getBoundingClientRect().height||0;ee.current||(ee.current=i);let a=Z.current.getBoundingClientRect().top;if(Math.abs(X.current-r)>60&&(G.current=!G.current),o&&o.length>0&&eo&&er&&(r+=eo[er]||0),X.current=r,i>t||G.current){let e=Z.current.getBoundingClientRect().height,o=e;e>t&&(o=t-(i>.8*n?a:26)),g?Z.current.style.height=`${e-Math.max(r,0)}px`:Z.current.style.height=`${Math.max(o,t-a)}px`}else{let e;e=navigator.userAgent,"u">typeof window&&(/Firefox/.test(e)&&/Mobile/.test(e)||/FxiOS/.test(e))||(Z.current.style.height=`${ee.current}px`)}o&&o.length>0&&!G.current?Z.current.style.bottom="0px":Z.current.style.bottom=`${Math.max(r,0)}px`}}return null==(e=window.visualViewport)||e.addEventListener("resize",t),()=>{var e;return null==(e=window.visualViewport)?void 0:e.removeEventListener("resize",t)}},[er,o,eo]),ey.default.useEffect(()=>(A&&(erj(document.documentElement,{scrollBehavior:"auto"}),B.current=new Date),()=>{!function(e,t){if(!e||!(e instanceof HTMLElement))return;let n=erw.get(e);n&&(e.style[t]=n[t])}(document.documentElement,"scrollBehavior")}),[A]),ey.default.useEffect(()=>{v||window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"})},[v]),ey.default.createElement(px,{defaultOpen:j,onOpenChange:e=>{(u||e)&&(e?D(!0):eh(!0),I(e))},open:A},ey.default.createElement(era.Provider,{value:{activeSnapPoint:en,snapPoints:o,setActiveSnapPoint:ei,drawerRef:Z,overlayRef:F,onOpenChange:t,onPress:function(e){var t,n;!u&&!o||(!Z.current||Z.current.contains(e.target))&&(J.current=(null==(t=Z.current)?void 0:t.getBoundingClientRect().height)||0,Q.current=(null==(n=Z.current)?void 0:n.getBoundingClientRect().width)||0,R(!0),V.current=new Date,ers()&&window.addEventListener("touchend",()=>U.current=!1,{once:!0}),e.target.setPointerCapture(e.pointerId),K.current=erk(w)?e.pageY:e.pageX)},onRelease:function(e){var t,n;if(!T||!Z.current)return;Z.current.classList.remove(erM),U.current=!1,R(!1),H.current=new Date;let r=erS(Z.current,w);if(!e||!ef(e.target,!1)||!r||Number.isNaN(r)||null===V.current)return;let a=H.current.getTime()-V.current.getTime(),l=K.current-(erk(w)?e.pageY:e.pageX),s=Math.abs(l)/a;if(s>.05&&($(!0),setTimeout(()=>{$(!1)},200)),o){ea({draggedDistance:l*("bottom"===w||"right"===w?1:-1),closeDrawer:eh,velocity:s,dismissible:u}),null==i||i(e,!0);return}if("bottom"===w||"right"===w?l>0:l<0){ep(),null==i||i(e,!0);return}if(s>.4){eh(),null==i||i(e,!1);return}let d=Math.min(null!=(t=Z.current.getBoundingClientRect().height)?t:0,window.innerHeight),f=Math.min(null!=(n=Z.current.getBoundingClientRect().width)?n:0,window.innerWidth);if(Math.abs(r)>=("left"===w||"right"===w?f:d)*c){eh(),null==i||i(e,!1);return}null==i||i(e,!0),ep()},onDrag:function(e){if(Z.current&&T){let t="bottom"===w||"right"===w?1:-1,n=(K.current-(erk(w)?e.pageY:e.pageX))*t,i=n>0,a=o&&!u&&!i;if(a&&0===er)return;let s=Math.abs(n),c=document.querySelector("[data-vaul-drawer-wrapper]"),d=s/("bottom"===w||"top"===w?J.current:Q.current),f=ec(s,i);if(null!==f&&(d=f),a&&d>=1||!U.current&&!ef(e.target,i))return;if(Z.current.classList.add(erM),U.current=!0,erj(Z.current,{transition:"none"}),erj(F.current,{transition:"none"}),o&&el({draggedDistance:n}),i&&!o){let e=Math.min(-(8*(Math.log(n+1)-2)*1),0)*t;erj(Z.current,{transform:erk(w)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`});return}let p=1-d;if((es||h&&er===h-1)&&(null==r||r(e,d),erj(F.current,{opacity:`${p}`,transition:"none"},!0)),c&&F.current&&l){let e=Math.min(eu()+d*(1-eu()),1),t=8-8*d,n=Math.max(0,14-14*d);erj(c,{borderRadius:`${t}px`,transform:erk(w)?`scale(${e}) translate3d(0, ${n}px, 0)`:`scale(${e}) translate3d(${n}px, 0, 0)`,transition:"none"},!0)}if(!o){let e=s*t;erj(Z.current,{transform:erk(w)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`})}}},dismissible:u,shouldAnimate:Y,handleOnly:f,isOpen:A,isDragging:T,shouldFade:es,closeDrawer:eh,onNestedDrag:function(e,t){if(t<0)return;let n=(window.innerWidth-16)/window.innerWidth,r=n+t*(1-n),i=-16+16*t;erj(Z.current,{transform:erk(w)?`scale(${r}) translate3d(0, ${i}px, 0)`:`scale(${r}) translate3d(${i}px, 0, 0)`,transition:"none"})},onNestedOpenChange:function(e){let t=e?(window.innerWidth-16)/window.innerWidth:1,n=e?-16:0;q.current&&window.clearTimeout(q.current),erj(Z.current,{transition:`transform 0.5s cubic-bezier(${erC.join(",")})`,transform:erk(w)?`scale(${t}) translate3d(0, ${n}px, 0)`:`scale(${t}) translate3d(${n}px, 0, 0)`}),!e&&Z.current&&(q.current=setTimeout(()=>{let e=erS(Z.current,w);erj(Z.current,{transition:"none",transform:erk(w)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`})},500))},onNestedRelease:function(e,t){let n=erk(w)?window.innerHeight:window.innerWidth,r=t?(n-16)/n:1,i=t?-16:0;t&&erj(Z.current,{transition:`transform 0.5s cubic-bezier(${erC.join(",")})`,transform:erk(w)?`scale(${r}) translate3d(0, ${i}px, 0)`:`scale(${r}) translate3d(${i}px, 0, 0)`})},keyboardIsOpen:G,modal:v,snapPointsOffset:eo,activeSnapPointIndex:er,direction:w,shouldScaleBackground:l,setBackgroundColorOnScale:s,noBodyStyles:b,container:E,autoFocus:O}},n))},erD=function(e){let t=ero(),{container:n=t.container,...r}=e;return ey.default.createElement(pS,{container:n,...r})};function erT({className:e,...t}){return(0,ev.jsx)(erA,{"data-slot":"drawer-overlay",className:tK("vtl-overlay fixed inset-0 z-50 animate-in fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0",e),...t})}function erR({className:e,children:t,...n}){return(0,ev.jsxs)(erD,{"data-slot":"drawer-portal",children:[(0,ev.jsx)(erT,{}),(0,ev.jsxs)(erI,{"data-slot":"drawer-content",className:tK("vtl-surface-modal group/drawer-content fixed z-50 flex h-auto flex-col border outline-none","data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-t-0","data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-b-0","data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-r-0 data-[vaul-drawer-direction=right]:sm:max-w-sm","data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-l-0 data-[vaul-drawer-direction=left]:sm:max-w-sm",e),...n,children:[(0,ev.jsx)("div",{className:"mx-auto mt-3 hidden h-1.5 w-16 shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block"}),t]})]})}function erL({className:e,...t}){return(0,ev.jsx)(pD,{"data-slot":"drawer-title",className:tK("text-base leading-none font-semibold text-foreground",e),...t})}function er$(e){return"string"==typeof e||"number"==typeof e?String(e):""}function erF({open:e,onOpenChange:t,content:n,expandedItemIds:r,onToggleItem:i,selectedItemId:a,onSelectItem:o,searchValue:l,onSearchChange:s,footer:c}){let d=l.trim().toLowerCase(),u=ey.useMemo(()=>d&&n?n.sections.map(e=>{let t=e.items.map(e=>(function e(t,n){if([er$(t.label),...(t.children??[]).map(e=>er$(e.label))].join(" ").toLowerCase().includes(n))return t;let r=t.children?.map(t=>e(t,n)).filter(e=>!!e);if(r?.length)return{...t,children:r}})(e,d)).filter(e=>!!e);return{...e,items:t}}).filter(e=>e.items.length>0):n?.sections??[],[n,d]);return(0,ev.jsx)(er_,{open:e,onOpenChange:t,direction:"left",children:(0,ev.jsxs)(erR,{className:"w-[85vw] max-w-xs",children:[(0,ev.jsx)(erL,{className:"sr-only",children:n?.title??"导航"}),(0,ev.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,ev.jsxs)("div",{className:"shrink-0 border-b px-4 pt-4 pb-3",children:[(0,ev.jsx)("div",{className:"text-base font-semibold",children:n?.title}),n?.description&&(0,ev.jsx)("div",{className:"mt-0.5 text-xs text-muted-foreground",children:n.description})]}),(0,ev.jsx)("div",{className:"shrink-0 px-3 pt-3 pb-1",children:(0,ev.jsxs)("div",{className:"flex h-10 items-center rounded-lg border bg-sidebar px-2.5",children:[(0,ev.jsx)(cS,{className:"mr-2 size-4 text-muted-foreground"}),(0,ev.jsx)("input",{value:l,placeholder:"搜索...",onChange:e=>s(e.target.value),className:"h-8 w-full border-none bg-transparent p-0 text-sm outline-none placeholder:text-muted-foreground/45"})]})}),(0,ev.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-2 py-2",children:u.map(e=>(0,ev.jsx)(erB,{section:e,selectedItemId:a,expandedItemIds:r,onToggleItem:i,onSelectItem:o},e.id))}),c&&(0,ev.jsx)("div",{className:"shrink-0 border-t px-4 py-3",children:c})]})]})})}function erB({section:e,selectedItemId:t,expandedItemIds:n,onToggleItem:r,onSelectItem:i}){return(0,ev.jsxs)("section",{className:"mb-2",children:[e.title&&(0,ev.jsx)("div",{className:"flex h-8 items-center px-3 text-xs font-normal text-muted-foreground/70",children:e.title}),(0,ev.jsx)("div",{className:"flex flex-col gap-0.5",children:e.items.map(e=>(0,ev.jsx)(erV,{item:e,selectedItemId:t,expandedItemIds:n,onToggleItem:r,onSelectItem:i},e.id))})]})}function erV({item:e,selectedItemId:t,expandedItemIds:n,onToggleItem:r,onSelectItem:i,depth:a=0}){let o=!!e.children?.length,l=n.includes(e.id),s=t===e.id;return(0,ev.jsxs)("div",{children:[(0,ev.jsxs)(tY,{type:"button",variant:"ghost",disabled:e.disabled,"aria-expanded":o?l:void 0,"aria-pressed":o?void 0:s,onClick:()=>{o?r(e.id):i(e)},className:tK("h-11 w-full justify-start gap-3 rounded-lg px-3 py-2 text-left font-normal text-foreground/72 hover:bg-muted hover:text-foreground",s&&"bg-muted text-foreground",a>0&&"h-10 pl-11 text-foreground/62"),children:[e.icon&&(0,ev.jsx)("span",{className:"flex size-5 shrink-0 items-center justify-center [&_svg]:size-4",children:e.icon}),(0,ev.jsx)("span",{className:"min-w-0 flex-1 truncate",children:e.label}),e.badge&&(0,ev.jsx)(cC,{variant:"outline",className:"h-5 shrink-0 px-1.5 text-[0.6875rem] text-muted-foreground",children:e.badge}),o&&(0,ev.jsx)(cb,{className:tK("size-3.5 shrink-0 text-muted-foreground/50 transition-transform duration-300",l&&"rotate-180")})]}),o&&(0,ev.jsx)(cG,{open:l,children:(0,ev.jsx)(cZ,{children:(0,ev.jsx)("div",{className:"mt-0.5 flex flex-col gap-0.5",children:e.children?.map(e=>(0,ev.jsx)(erV,{item:e,selectedItemId:t,expandedItemIds:n,onToggleItem:r,onSelectItem:i,depth:a+1},e.id))})})})]})}function erH({navItems:e,contents:t,defaultActiveNavId:n,defaultSelectedItemId:r,defaultExpandedItemIds:i=[],onItemSelect:a,footer:o}){let l=e.find(e=>!e.disabled)??e[0],[s,c]=ey.useState(n??l?.id??""),[d,u]=ey.useState(!1),[f,h]=ey.useState(i),[p,m]=ey.useState(r),[g,v]=ey.useState(""),x=t.find(e=>e.id===s)??t[0];return(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(eri,{navItems:e,activeNavId:s,onNavSelect:function(e){e===s?u(e=>!e):(c(e),v(""),u(!0))}}),(0,ev.jsx)(erF,{open:d,onOpenChange:u,content:x,expandedItemIds:f,onToggleItem:function(e){h(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},selectedItemId:p,onSelectItem:function(e){e.disabled||(m(e.id),u(!1),a?.({navId:s,itemId:e.id,item:e}))},searchValue:g,onSearchChange:v,footer:o})]})}let erW=eS("folder-tree",[["path",{d:"M20 10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2.5a1 1 0 0 1-.8-.4l-.9-1.2A1 1 0 0 0 15 3h-2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z",key:"hod4my"}],["path",{d:"M20 21a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1h-2.9a1 1 0 0 1-.88-.55l-.42-.85a1 1 0 0 0-.92-.6H13a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z",key:"w4yl2u"}],["path",{d:"M3 5a2 2 0 0 0 2 2h3",key:"f2jnh7"}],["path",{d:"M3 3v13a2 2 0 0 0 2 2h3",key:"k8epm1"}]]),erU=eS("message-square-text",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}],["path",{d:"M7 11h10",key:"1twpyw"}],["path",{d:"M7 15h6",key:"d9of3u"}],["path",{d:"M7 7h8",key:"af5zfr"}]]),erq=eS("scroll-text",[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]]),erK=eS("square-terminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]),erG=[{id:"dashboard",label:fh.dashboard,icon:(0,ev.jsx)(enz,{})},{id:"canvas",label:fh.canvas,icon:(0,ev.jsx)(WJ,{}),badge:"4"},{id:"machines",label:fh.machines,icon:(0,ev.jsx)(eA,{})},{id:"schedules",label:fh.schedules,icon:(0,ev.jsx)(Hs,{})},{id:"settings",label:fh.settings,icon:(0,ev.jsx)(mS,{})}],erY=[{id:"dashboard",title:fh.dashboard,description:ff.subtitle,sections:[{id:"main",items:[{id:"overview",label:fh.overview,icon:(0,ev.jsx)(xI,{})},{id:"runs",label:fh.runs,icon:(0,ev.jsx)(Wc,{}),badge:"12"},{id:"telemetry",label:fh.telemetry,icon:(0,ev.jsx)(WZ,{})}]}]},{id:"canvas",title:fh.canvas,description:"节点画布、Agent 对话和运行工作区。",sections:[{id:"canvases",title:fh.canvas,items:[{id:"open-recent-canvas",label:fh.canvasRecent,icon:(0,ev.jsx)(WJ,{})},{id:"new-canvas",label:fh.canvasNew,icon:(0,ev.jsx)(sQ,{})},{id:"all-canvases",label:fh.canvasAll,icon:(0,ev.jsx)(B1,{})}]},{id:"conversations",title:"Agent 对话",items:[{id:"open-recent-conversation",label:fh.conversationRecent,icon:(0,ev.jsx)(erU,{})},{id:"new-agent-conversation",label:fh.conversationNew,icon:(0,ev.jsx)(mY,{})},{id:"all-conversations",label:fh.conversationAll,icon:(0,ev.jsx)(Wc,{})}]}]},{id:"machines",title:fh.machines,description:"机器、网络、权限和审计。",sections:[{id:"machines",items:[{id:"machine-group",label:fh.fleet,icon:(0,ev.jsx)(B4,{})},{id:"process-management",label:"进程管理",icon:(0,ev.jsx)(erK,{})},{id:"machine-performance",label:"性能",icon:(0,ev.jsx)(WZ,{})},{id:"machine-firewall",label:"防火墙",icon:(0,ev.jsx)(Ku,{})},{id:"audit-logs",label:"日志与审计",icon:(0,ev.jsx)(erq,{})},{id:"machine-files",label:"文件管理",icon:(0,ev.jsx)(erW,{})}]}]},{id:"schedules",title:fh.schedules,description:"自动化、维护窗口和提醒。",sections:[{id:"plans",items:[{id:"calendar",label:fh.calendar,icon:(0,ev.jsx)(Hs,{})},{id:"alerts",label:"提醒",icon:(0,ev.jsx)(Hl,{})}]}]},{id:"settings",title:fh.settings,description:"系统、工作组和用量配置。",sections:[{id:"settings",items:[{id:"preferences",label:"偏好设置",icon:(0,ev.jsx)(mS,{})},{id:"card-management",label:"卡片管理",icon:(0,ev.jsx)(enz,{})},{id:"billing",label:fh.billing,icon:(0,ev.jsx)(B1,{})}]},{id:"hub",title:"Hub",items:[{id:"account",label:"Hub 账户",icon:(0,ev.jsx)(eE,{})}]}]}],erX=eS("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]),erZ=eS("unplug",[["path",{d:"m19 5 3-3",key:"yk6iyv"}],["path",{d:"m2 22 3-3",key:"19mgm9"}],["path",{d:"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z",key:"goz73y"}],["path",{d:"M7.5 13.5 10 11",key:"7xgeeb"}],["path",{d:"M10.5 16.5 13 14",key:"10btkg"}],["path",{d:"m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z",key:"1snsnr"}]]),erJ=eS("mail",[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]]),erQ=eS("calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]),er0=eS("wifi",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]]),er1=eS("wifi-off",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);function er2({className:e,size:t="default",...n}){return(0,ev.jsx)("div",{"data-slot":"card","data-size":t,className:tK("vtl-surface-card group/card flex flex-col gap-4 overflow-hidden rounded-[var(--surface-card-radius)] py-4 text-sm has-data-[slot=card-footer]:pb-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0",e),...n})}function er5({className:e,...t}){return(0,ev.jsx)("div",{"data-slot":"card-header",className:tK("group/card-header grid auto-rows-min items-start gap-1 rounded-t-[var(--surface-card-radius)] px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]",e),...t})}function er4({className:e,...t}){return(0,ev.jsx)("div",{"data-slot":"card-title",className:tK("text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",e),...t})}function er3({className:e,...t}){return(0,ev.jsx)("div",{"data-slot":"card-description",className:tK("text-muted-foreground text-sm",e),...t})}function er6({className:e,...t}){return(0,ev.jsx)("div",{"data-slot":"card-content",className:tK("px-4 group-data-[size=sm]/card:px-3",e),...t})}function er8(){let{user:e,machine:t,logout:n,unbind:r,refreshUser:i}=nd(),[a,o]=ey.useState(!1),[l,s]=ey.useState(!1),[c,d]=ey.useState(t);async function u(){o(!0);try{await nr("online");let e=t6();d(e),await i()}catch{}finally{o(!1)}}async function f(){s(!0);try{await r()}catch{s(!1)}}async function h(){await n()}return(ey.useEffect(()=>{d(t)},[t]),e)?(0,ev.jsx)("div",{className:"vtl-app-background min-h-full pb-14 md:pb-0 md:pl-[5.25rem] text-foreground",children:(0,ev.jsxs)("div",{className:"mx-auto w-full max-w-2xl space-y-5 p-6",children:[(0,ev.jsxs)("div",{className:"flex items-center gap-3",children:[(0,ev.jsx)("div",{className:"flex size-10 items-center justify-center rounded-xl bg-primary/10",children:(0,ev.jsx)(eE,{className:"size-5 text-primary"})}),(0,ev.jsxs)("div",{children:[(0,ev.jsx)("h1",{className:"text-lg font-semibold tracking-tight",children:"Vantaloom Hub 账户"}),(0,ev.jsx)("p",{className:"text-sm text-muted-foreground",children:"管理你的 Hub 连接和设备绑定"})]})]}),(0,ev.jsxs)(er2,{children:[(0,ev.jsxs)(er5,{children:[(0,ev.jsxs)(er4,{className:"flex items-center gap-2",children:[(0,ev.jsx)(Gp,{className:"size-4"}),"账户信息"]}),(0,ev.jsx)(er3,{children:"你的 Vantaloom Hub 账户详情"})]}),(0,ev.jsx)(er6,{children:(0,ev.jsxs)("div",{className:"grid gap-4",children:[(0,ev.jsxs)("div",{className:"flex items-center gap-3",children:[(0,ev.jsx)("div",{className:"flex size-12 items-center justify-center rounded-full bg-primary/10",children:(0,ev.jsx)("span",{className:"text-lg font-semibold text-primary",children:e.name.charAt(0).toUpperCase()})}),(0,ev.jsxs)("div",{className:"min-w-0",children:[(0,ev.jsx)("p",{className:"font-medium",children:e.name}),(0,ev.jsxs)("div",{className:"flex items-center gap-1.5 text-sm text-muted-foreground",children:[(0,ev.jsx)(erJ,{className:"size-3.5"}),(0,ev.jsx)("span",{children:e.email})]})]}),(0,ev.jsxs)(cC,{variant:"outline",className:"ml-auto shrink-0",children:[(0,ev.jsx)(Ku,{className:"mr-1 size-3"}),"已验证"]})]}),(0,ev.jsx)(Hc,{}),(0,ev.jsxs)("div",{className:"grid gap-3 text-sm",children:[(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsx)("span",{className:"text-muted-foreground",children:"用户 ID"}),(0,ev.jsxs)("code",{className:"rounded bg-muted px-2 py-0.5 font-mono text-xs",children:[e.id.slice(0,8),"..."]})]}),(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsx)("span",{className:"text-muted-foreground",children:"注册时间"}),(0,ev.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,ev.jsx)(erQ,{className:"size-3.5"}),new Date(e.createdAt).toLocaleDateString("zh-CN")]})]})]})]})})]}),(0,ev.jsxs)(er2,{children:[(0,ev.jsxs)(er5,{children:[(0,ev.jsxs)(er4,{className:"flex items-center gap-2",children:[(0,ev.jsx)(eA,{className:"size-4"}),"设备绑定"]}),(0,ev.jsx)(er3,{children:"此设备已自动注册到你的 Hub 账户"})]}),(0,ev.jsx)(er6,{children:c?(0,ev.jsxs)("div",{className:"grid gap-4",children:[(0,ev.jsxs)("div",{className:"flex items-center justify-between rounded-lg border bg-muted/30 px-4 py-3",children:[(0,ev.jsxs)("div",{className:"flex items-center gap-3",children:[(0,ev.jsx)("div",{className:"flex size-9 items-center justify-center rounded-lg bg-background",children:(0,ev.jsx)(B0,{className:"size-4 text-muted-foreground"})}),(0,ev.jsxs)("div",{children:[(0,ev.jsx)("p",{className:"text-sm font-medium",children:c.name}),(0,ev.jsxs)("p",{className:"text-xs text-muted-foreground",children:[c.platform," / ",c.arch]})]})]}),(0,ev.jsx)("div",{className:"flex items-center gap-2",children:(0,ev.jsxs)(cC,{variant:"online"===c.status?"default":"secondary",className:"gap-1",children:["online"===c.status?(0,ev.jsx)(er0,{className:"size-3"}):(0,ev.jsx)(er1,{className:"size-3"}),"online"===c.status?"在线":"离线"]})})]}),(0,ev.jsxs)("div",{className:"grid gap-3 text-sm",children:[(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsx)("span",{className:"text-muted-foreground",children:"设备 ID"}),(0,ev.jsxs)("code",{className:"rounded bg-muted px-2 py-0.5 font-mono text-xs",children:[c.id.slice(0,8),"..."]})]}),(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsx)("span",{className:"text-muted-foreground",children:"连接方式"}),(0,ev.jsx)("span",{children:c.connectivity||"直连"})]}),(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsx)("span",{className:"text-muted-foreground",children:"本机 IP"}),(0,ev.jsx)("code",{className:"rounded bg-muted px-2 py-0.5 font-mono text-xs",children:c.localIp})]}),(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsx)("span",{className:"text-muted-foreground",children:"最后心跳"}),(0,ev.jsx)("span",{children:new Date(c.lastHeartbeat).toLocaleString("zh-CN")})]}),(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsx)("span",{className:"text-muted-foreground",children:"注册时间"}),(0,ev.jsx)("span",{children:new Date(c.createdAt).toLocaleString("zh-CN")})]})]}),(0,ev.jsxs)(tY,{variant:"outline",size:"sm",className:"w-full",onClick:u,disabled:a,children:[a?(0,ev.jsx)(eO,{className:"animate-spin"}):(0,ev.jsx)(xT,{}),a?"刷新中...":"刷新状态"]})]}):(0,ev.jsxs)("div",{className:"flex flex-col items-center gap-3 py-6 text-center",children:[(0,ev.jsx)(er1,{className:"size-8 text-muted-foreground/40"}),(0,ev.jsxs)("div",{children:[(0,ev.jsx)("p",{className:"text-sm font-medium",children:"设备未绑定"}),(0,ev.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"设备注册异常,请尝试重新登录"})]})]})})]}),(0,ev.jsxs)(er2,{children:[(0,ev.jsxs)(er5,{children:[(0,ev.jsxs)(er4,{className:"flex items-center gap-2 text-destructive",children:[(0,ev.jsx)(qO,{className:"size-4"}),"危险操作"]}),(0,ev.jsx)(er3,{children:"以下操作不可逆,请谨慎执行"})]}),(0,ev.jsx)(er6,{children:(0,ev.jsxs)("div",{className:"grid gap-3",children:[(0,ev.jsxs)("div",{className:"flex items-center justify-between rounded-lg border border-destructive/20 p-4",children:[(0,ev.jsxs)("div",{className:"min-w-0 pr-4",children:[(0,ev.jsx)("p",{className:"text-sm font-medium",children:"解除设备绑定"}),(0,ev.jsx)("p",{className:"mt-0.5 text-xs text-muted-foreground",children:"将此设备从你的 Hub 账户中移除,并退出登录。设备数据不会受到影响。"})]}),(0,ev.jsxs)(gl,{children:[(0,ev.jsx)(gs,{asChild:!0,children:(0,ev.jsxs)(tY,{variant:"destructive",size:"sm",className:"shrink-0",children:[(0,ev.jsx)(erZ,{}),"解除绑定"]})}),(0,ev.jsxs)(gN,{children:[(0,ev.jsxs)(gC,{children:[(0,ev.jsx)(gE,{children:"确认解除设备绑定?"}),(0,ev.jsx)(gO,{children:"此操作将从你的 Hub 账户中移除当前设备,并退出登录。你可以随时重新登录并绑定设备。"})]}),(0,ev.jsxs)(gM,{children:[(0,ev.jsx)(gz,{children:"取消"}),(0,ev.jsx)(gP,{onClick:f,disabled:l,className:"bg-destructive text-white hover:bg-destructive/90",children:l?(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(eO,{className:"animate-spin"}),"处理中..."]}):"确认解除"})]})]})]})]}),(0,ev.jsxs)("div",{className:"flex items-center justify-between rounded-lg border p-4",children:[(0,ev.jsxs)("div",{className:"min-w-0 pr-4",children:[(0,ev.jsx)("p",{className:"text-sm font-medium",children:"退出登录"}),(0,ev.jsx)("p",{className:"mt-0.5 text-xs text-muted-foreground",children:"退出当前 Hub 账户但保留设备在云端的注册。下次登录时无需重新绑定。"})]}),(0,ev.jsxs)(tY,{variant:"outline",size:"sm",className:"shrink-0",onClick:h,children:[(0,ev.jsx)(erX,{}),"退出登录"]})]})]})})]})]})}):null}let er7=eS("files",[["path",{d:"M15 2h-4a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8",key:"14sh0y"}],["path",{d:"M16.706 2.706A2.4 2.4 0 0 0 15 2v5a1 1 0 0 0 1 1h5a2.4 2.4 0 0 0-.706-1.706z",key:"1970lx"}],["path",{d:"M5 7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 1.732-1",key:"l4dndm"}]]);function er9({className:e,divided:t=!0,children:n,...r}){let i=ey.Children.toArray(n).filter(Boolean);return(0,ev.jsx)("div",{"data-slot":"settings-card",className:tK("vtl-surface-card overflow-hidden rounded-[var(--surface-card-radius)] border",e),...r,children:t?i.map((e,t)=>(0,ev.jsxs)(ey.Fragment,{children:[e,t<i.length-1&&(0,ev.jsx)(Hc,{})]},t)):n})}let eie=[{id:"cards",x:0,y:0,w:12,h:9}],eit=ho(eie),ein=[{id:"machine-workspaces",title:"机器页面",cards:[{id:"process-management",title:"进程管理",description:"机器进程、服务和 Agent worker 进程视图。",icon:(0,ev.jsx)(erK,{className:"size-4"}),defaultSize:{w:12,h:8},dataSource:"机器进程"},{id:"machine-performance",title:"性能",description:"CPU、内存、磁盘、网络和 GPU 性能视图。",icon:(0,ev.jsx)(enP,{className:"size-4"}),defaultSize:{w:12,h:8},dataSource:"机器遥测"},{id:"firewall",title:"防火墙",description:"防火墙策略、IP 地址、续期和申请视图。",icon:(0,ev.jsx)(Ku,{className:"size-4"}),defaultSize:{w:12,h:8},dataSource:"防火墙策略"},{id:"file-manager-window",title:"文件管理窗口",description:"可拖拽、缩放和多窗口并存的文件管理组件。",icon:(0,ev.jsx)(er7,{className:"size-4"}),defaultSize:{w:6,h:5},dataSource:"工作区文件"}]}];function eir(e){return{id:e.id,title:e.title,description:e.description,icon:e.icon,defaultSize:e.defaultSize,dataSource:e.defaultConfig.dataSource}}function eii(e){return{id:e.id,title:e.title,description:e.description,icon:e.icon,defaultSize:e.defaultSize,dataSource:e.defaultConfig.dataSource}}function eia(){let e=cy(),t=env(),[n,r]=ey.useState(),i=ey.useCallback(()=>{},[]),a=ey.useCallback(()=>{},[]),o=ey.useMemo(()=>Wg({onSelect:i}),[i]),l=ey.useMemo(()=>Wx({onSelect:a}),[a]),s=ey.useMemo(()=>[{id:"dashboard",title:"运维总览",cards:t.map(eii)},{id:"runs",title:"运行",cards:enH.map(eir)},{id:"telemetry",title:"遥测",cards:enq.map(eir)},{id:"all-canvases",title:"浏览所有画布",cards:o.map(eir)},{id:"all-conversations",title:"浏览所有对话",cards:l.map(eir)},{id:"machine-group",title:"机器组",cards:enX.map(eir)},{id:"audit-logs",title:"日志与审计",cards:enJ.map(eir)},...ein],[l,o,t]);return(0,ev.jsx)(ha,{children:(0,ev.jsx)("div",{className:"vtl-card-management-page",children:(0,ev.jsx)(enN,{layouts:eie,children:(0,ev.jsx)(enC,{layout:enS(eit,"cards"),children:e?n?(0,ev.jsx)(eil,{groupTitle:n.groupTitle,card:n.card,onBack:()=>r(void 0)}):(0,ev.jsx)(eio,{groups:s,onSelect:(e,t)=>r({groupTitle:e,card:t})}):(0,ev.jsx)(er9,{className:"h-full",divided:!1,children:n?(0,ev.jsx)(eil,{groupTitle:n.groupTitle,card:n.card,onBack:()=>r(void 0)}):(0,ev.jsx)(eio,{groups:s,onSelect:(e,t)=>r({groupTitle:e,card:t})})})})})})})}function eio({groups:e,onSelect:t}){return(0,ev.jsxs)("div",{className:"vtl-card-management-list flex h-full min-h-0 flex-col",children:[(0,ev.jsxs)("div",{className:"flex shrink-0 items-center justify-between gap-4 px-5 py-4",children:[(0,ev.jsxs)("div",{className:"min-w-0",children:[(0,ev.jsx)("h2",{className:"text-base font-semibold",children:"卡片管理"}),(0,ev.jsx)("p",{className:"mt-0.5 text-sm text-muted-foreground",children:"当前可用卡片按页面分组。"})]}),(0,ev.jsxs)("div",{className:"flex shrink-0 items-center gap-2 text-sm text-muted-foreground",children:[(0,ev.jsx)(enz,{className:"size-4"}),(0,ev.jsx)("span",{children:e.reduce((e,t)=>e+t.cards.length,0)})]})]}),(0,ev.jsx)(hr,{className:"min-h-0 flex-1",children:(0,ev.jsx)("div",{className:"space-y-6 px-5 pb-5",children:e.map(e=>(0,ev.jsxs)("section",{className:"space-y-2",children:[(0,ev.jsxs)("div",{className:"flex items-center gap-2",children:[(0,ev.jsx)("h3",{className:"text-sm font-medium",children:e.title}),(0,ev.jsx)("span",{className:"text-xs text-muted-foreground",children:e.cards.length})]}),(0,ev.jsx)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2 xl:grid-cols-3",children:e.cards.map(n=>(0,ev.jsxs)("button",{type:"button",className:tK("group/card flex min-h-20 items-start gap-3 rounded-[var(--surface-card-radius)] border bg-card px-3 py-3 text-left transition-colors","vtl-managed-card-item","hover:border-foreground/35 hover:bg-muted/35 focus-visible:border-ring focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-ring/25"),onClick:()=>t(e.title,n),children:[(0,ev.jsx)("span",{className:"mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-[var(--surface-control-radius)] bg-muted text-muted-foreground transition-colors group-hover/card:text-foreground",children:n.icon}),(0,ev.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,ev.jsxs)("span",{className:"flex items-start justify-between gap-3",children:[(0,ev.jsx)("span",{className:"truncate text-sm font-medium",children:n.title}),(0,ev.jsxs)("span",{className:"shrink-0 text-xs tabular-nums text-muted-foreground",children:[n.defaultSize.w,"x",n.defaultSize.h]})]}),(0,ev.jsx)("span",{className:"mt-1 line-clamp-2 block text-xs leading-5 text-muted-foreground",children:n.description})]})]},`${e.id}-${n.id}`))})]},e.id))})})]})}function eil({groupTitle:e,card:t,onBack:n}){return(0,ev.jsxs)("div",{className:"flex h-full min-h-0 flex-col",children:[(0,ev.jsxs)("div",{className:"flex shrink-0 items-center gap-3 px-5 py-4",children:[(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm","aria-label":"返回卡片管理",onClick:n,children:(0,ev.jsx)(Yy,{className:"size-4"})}),(0,ev.jsxs)("div",{className:"min-w-0",children:[(0,ev.jsx)("div",{className:"text-xs text-muted-foreground",children:e}),(0,ev.jsx)("h2",{className:"truncate text-base font-semibold",children:t.title})]})]}),(0,ev.jsx)("div",{className:"grid min-h-0 flex-1 place-items-center px-5 pb-5",children:(0,ev.jsx)("div",{className:"w-full max-w-md rounded-[var(--surface-card-radius)] border bg-card p-5",children:(0,ev.jsxs)("div",{className:"flex items-start gap-3",children:[(0,ev.jsx)("span",{className:"flex size-9 shrink-0 items-center justify-center rounded-[var(--surface-control-radius)] bg-muted text-muted-foreground",children:t.icon}),(0,ev.jsxs)("div",{className:"min-w-0 space-y-3",children:[(0,ev.jsxs)("div",{children:[(0,ev.jsx)("div",{className:"text-sm font-medium",children:"编辑页面预留"}),(0,ev.jsx)("div",{className:"mt-1 text-sm leading-6 text-muted-foreground",children:"后续会在这里接入卡片配置、数据源、默认尺寸和可编辑字段。"})]}),(0,ev.jsxs)("div",{className:"grid grid-cols-2 gap-2 text-xs text-muted-foreground",children:[(0,ev.jsxs)("div",{children:[(0,ev.jsx)("div",{children:"默认尺寸"}),(0,ev.jsxs)("div",{className:"mt-1 font-medium text-foreground",children:[t.defaultSize.w,"x",t.defaultSize.h]})]}),(0,ev.jsxs)("div",{children:[(0,ev.jsx)("div",{children:"数据源"}),(0,ev.jsx)("div",{className:"mt-1 truncate font-medium text-foreground",children:t.dataSource})]})]})]})]})})})]})}let eis=eU("group/item flex w-full flex-wrap items-center rounded-lg border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted",{variants:{variant:{default:"border-transparent",outline:"border-border",muted:"border-transparent bg-muted/50"},size:{default:"gap-2.5 px-3 py-2.5",sm:"gap-2.5 px-3 py-2.5",xs:"gap-2 px-2.5 py-2"}},defaultVariants:{variant:"default",size:"default"}});function eic({className:e,variant:t="default",size:n="default",asChild:r=!1,...i}){return(0,ev.jsx)(r?eF:"div",{"data-slot":"item","data-variant":t,"data-size":n,className:tK(eis({variant:t,size:n,className:e})),...i})}let eid=eU("flex shrink-0 items-center justify-center gap-2 [&_svg]:pointer-events-none",{variants:{variant:{default:"bg-transparent",icon:"[&_svg:not([class*='size-'])]:size-4",marker:"size-8 rounded-md border bg-background ui-text-kbd font-medium text-muted-foreground [&_svg:not([class*='size-'])]:size-4",image:"size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover"},align:{auto:"group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start",start:"translate-y-0.5 self-start",center:"self-center"}},defaultVariants:{variant:"default",align:"auto"}});function eiu({className:e,variant:t="default",align:n="auto",...r}){return(0,ev.jsx)("div",{"data-slot":"item-media","data-variant":t,"data-align":n,className:tK(eid({variant:t,align:n,className:e})),...r})}function eif({className:e,align:t,...n}){return(0,ev.jsx)("div",{"data-slot":"item-content","data-align":t,className:tK("flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none","start"===t&&"self-start","center"===t&&"self-center",e),...n})}function eih({className:e,...t}){return(0,ev.jsx)("div",{"data-slot":"item-title",className:tK("line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4",e),...t})}function eip({className:e,...t}){return(0,ev.jsx)("p",{"data-slot":"item-description",className:tK("line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",e),...t})}function eim({className:e,...t}){return(0,ev.jsx)("div",{"data-slot":"item-actions",className:tK("flex items-center gap-2",e),...t})}let eig={back:"Back",search:"Search settings...",welcomeTitle:"Settings",welcomeDescription:"Search or choose a setting to continue.",recommendations:"Recommended",noResults:"No settings found."};function eiv(e){return"string"==typeof e||"number"==typeof e?String(e):""}function eix({sections:e,recommendations:t,sectionId:n,defaultSectionId:r,childId:i,defaultChildId:a,onSelectionChange:o,labels:l,welcomeContent:s,className:c,sidebarClassName:d,contentClassName:u}){let f={...eig,...l},[h,p]=ey.useState(r),[m,g]=ey.useState(a),v=n??h,x=i??m,y=e.find(e=>e.id===v),b=y?.children?.find(e=>e.id===x),w=!!y,j=ey.useMemo(()=>e.flatMap(e=>[{value:e.id,label:e.title,description:e.description,icon:e.icon,searchValue:[eiv(e.title),eiv(e.description),...e.keywords??[]].join(" "),keywords:e.keywords},...(e.children??[]).map(t=>({value:`${e.id}/${t.id}`,label:t.title,description:e.title,icon:t.icon??e.icon,disabled:t.disabled,searchValue:[eiv(t.title),eiv(t.description),eiv(e.title),...t.keywords??[]].join(" "),keywords:[eiv(e.title),...t.keywords??[]]}))]),[e]),k=t??e.flatMap(e=>(e.children??[]).slice(0,2).map(t=>({id:`${e.id}-${t.id}`,title:t.title,description:e.title,icon:t.icon,sectionId:e.id,childId:t.id})));function S(e,t){void 0===n&&p(e),void 0===i&&g(t),o?.({sectionId:e,childId:t})}let N=b?.content??y?.content??s??(0,ev.jsxs)("div",{className:"mx-auto flex min-h-[22rem] w-full max-w-2xl flex-col justify-center gap-5 py-12",children:[(0,ev.jsxs)("div",{className:"space-y-2",children:[(0,ev.jsx)("h3",{className:"text-xl font-semibold tracking-normal",children:f.welcomeTitle}),(0,ev.jsx)("p",{className:"max-w-xl text-sm text-muted-foreground",children:f.welcomeDescription})]}),(0,ev.jsx)(eib,{labels:f,options:j,onSelect:(e,t)=>S(e,t)}),k.length>0&&(0,ev.jsxs)("section",{className:"space-y-2",children:[(0,ev.jsx)("div",{className:"ui-text-kbd font-medium text-muted-foreground",children:f.recommendations}),(0,ev.jsx)("div",{className:"grid gap-2 sm:grid-cols-2",children:k.map(e=>(0,ev.jsx)(eic,{asChild:!0,variant:"outline",size:"xs",className:"min-h-14 flex-nowrap bg-card text-left hover:bg-muted/60",children:(0,ev.jsxs)("button",{type:"button",onClick:()=>S(e.sectionId,e.childId),children:[e.icon&&(0,ev.jsx)(eiu,{variant:"marker",align:"center",children:e.icon}),(0,ev.jsxs)(eif,{className:"min-w-0 gap-0.5",children:[(0,ev.jsx)(eih,{className:"max-w-full truncate",children:e.title}),e.description&&(0,ev.jsx)(eip,{className:"line-clamp-1",children:e.description})]}),(0,ev.jsx)(eim,{className:"ml-auto",children:(0,ev.jsx)(xx,{className:"size-4 shrink-0 text-muted-foreground opacity-0 transition-opacity group-hover/item:opacity-100"})})]})},e.id))})]})]});return(0,ev.jsxs)("div",{"data-slot":"settings-menu-panel",className:tK("vtl-surface-panel grid min-h-[34rem] overflow-hidden rounded-[var(--surface-panel-radius)] border md:grid-cols-[15rem_minmax(0,1fr)]",c),children:[(0,ev.jsx)("aside",{"data-slot":"settings-menu-sidebar",className:tK("min-h-0 border-b bg-muted/20 md:border-r md:border-b-0",d),children:(0,ev.jsx)(hr,{className:"h-full",children:(0,ev.jsx)("div",{className:"space-y-1 p-2",children:w?(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsxs)(tY,{type:"button",variant:"ghost",className:"mb-1 h-auto min-h-9 w-full justify-start px-2.5 py-1.5 text-left",onClick:()=>S(void 0,void 0),children:[(0,ev.jsx)("span",{className:"flex size-5 shrink-0 items-center justify-center [&_svg]:size-4",children:(0,ev.jsx)(Yy,{})}),(0,ev.jsx)("span",{className:"min-w-0 truncate",children:f.back})]}),(y?.children??[]).map(e=>(0,ev.jsx)(eiy,{title:e.title,icon:e.icon,badge:e.badge,active:e.id===x,disabled:e.disabled,onClick:()=>S(y?.id,e.id)},e.id))]}):e.map(e=>(0,ev.jsx)(eiy,{title:e.title,icon:e.icon,badge:e.badge,disabled:e.disabled,onClick:()=>S(e.id,void 0)},e.id))})})}),(0,ev.jsxs)("main",{"data-slot":"settings-menu-content",className:tK("min-w-0 bg-[var(--surface-panel)] p-4 md:p-5",u),children:[y?(0,ev.jsx)("div",{className:"mb-4 flex min-h-8 items-center justify-between gap-4",children:(0,ev.jsxs)("div",{className:"min-w-0",children:[(0,ev.jsx)("h2",{className:"truncate text-lg font-semibold tracking-normal",children:b?.title??y.title}),(b?.description??y.description)&&(0,ev.jsx)("p",{className:"truncate text-sm text-muted-foreground",children:b?.description??y.description})]})}):null,N]})]})}function eiy({title:e,icon:t,badge:n,active:r,disabled:i,onClick:a}){return(0,ev.jsxs)(tY,{type:"button",variant:"ghost",disabled:i,onClick:a,className:tK("h-auto min-h-9 w-full justify-start px-2.5 py-1.5 text-left font-medium",r?"bg-muted text-foreground":"text-muted-foreground hover:bg-muted/70 hover:text-foreground"),children:[t&&(0,ev.jsx)("span",{className:"flex size-5 shrink-0 items-center justify-center [&_svg]:size-4",children:t}),(0,ev.jsx)("span",{className:"min-w-0 flex-1 truncate font-medium",children:e}),n&&(0,ev.jsx)(cC,{variant:"outline",className:"h-5 shrink-0 px-1.5 ui-text-kbd",children:n}),(0,ev.jsx)(xx,{className:"size-3.5 shrink-0 text-muted-foreground/60"})]})}function eib({labels:e,options:t,onSelect:n}){return(0,ev.jsx)(g5,{options:t,placeholder:e.search,emptyText:e.noResults,className:"w-full",contentClassName:"rounded-lg",onValueChange:e=>{let[t,r]=e.split("/");t&&n(t,r)},renderOption:e=>(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)("span",{className:"flex size-5 shrink-0 items-center justify-center text-muted-foreground [&_svg]:size-4",children:e.icon??(0,ev.jsx)(cS,{})}),(0,ev.jsxs)("span",{className:"grid min-w-0 flex-1 gap-0.5",children:[(0,ev.jsx)("span",{className:"truncate",children:e.label}),e.description&&(0,ev.jsx)("span",{className:"truncate text-sm text-muted-foreground",children:e.description})]})]})})}let eiw=eU("vtl-surface-card relative w-full rounded-[var(--surface-card-radius)] border px-4 py-3 text-sm [&>svg]:absolute [&>svg]:top-3.5 [&>svg]:left-4 [&>svg~*]:pl-7",{variants:{variant:{default:"border-border",muted:"border-border bg-muted/40",destructive:"border-destructive/35 bg-destructive/10 text-destructive [&>svg]:text-destructive"}},defaultVariants:{variant:"default"}});function eij({className:e,variant:t,...n}){return(0,ev.jsx)("div",{role:"alert","data-slot":"alert",className:tK(eiw({variant:t}),e),...n})}function eik({className:e,...t}){return(0,ev.jsx)("div",{"data-slot":"alert-title",className:tK("mb-1 leading-none font-medium",e),...t})}function eiS({className:e,...t}){return(0,ev.jsx)("div",{"data-slot":"alert-description",className:tK("text-muted-foreground [&_p]:leading-relaxed",e),...t})}var eiN=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{let n=e$(`Primitive.${t}`),r=ey.forwardRef((e,r)=>{let{asChild:i,...a}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,ev.jsx)(i?n:t,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),eiC=ey.forwardRef((e,t)=>(0,ev.jsx)(eiN.label,{...e,ref:t,onMouseDown:t=>{t.target.closest("button, input, select, textarea")||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));function eiM({className:e,...t}){return(0,ev.jsx)(eiC,{"data-slot":"label",className:tK("flex w-fit items-center gap-2 text-sm font-medium leading-snug peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]/field:opacity-50",e),...t})}eiC.displayName="Label";var eiE=["PageUp","PageDown"],eiO=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],eiP={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},eiz="Slider",[eiA,eiI,ei_]=vp(eiz),[eiD,eiT]=cE(eiz,[ei_]),[eiR,eiL]=eiD(eiz),ei$=ey.forwardRef((e,t)=>{let{name:n,min:r=0,max:i=100,step:a=1,orientation:o="horizontal",disabled:l=!1,minStepsBetweenThumbs:s=0,defaultValue:c=[r],value:d,onValueChange:u=()=>{},onValueCommit:f=()=>{},inverted:h=!1,form:p,...m}=e,g=ey.useRef(new Set),v=ey.useRef(0),x="horizontal"===o,[y=[],b]=cz({prop:d,defaultProp:c,onChange:e=>{let t=[...g.current];t[v.current]?.focus(),u(e)}}),w=ey.useRef(y);function j(e,t,{commit:n}={commit:!1}){let o,l=(String(a).split(".")[1]||"").length,c=fI(Math.round((Math.round((e-r)/a)*a+r)*(o=Math.pow(10,l)))/o,[r,i]);b((e=[])=>{let r=function(e=[],t,n){let r=[...e];return r[n]=t,r.sort((e,t)=>e-t)}(e,c,t);if(!function(e,t){if(t>0)return Math.min(...e.slice(0,-1).map((t,n)=>e[n+1]-t))>=t;return!0}(r,s*a))return e;{v.current=r.indexOf(c);let t=String(r)!==String(e);return t&&n&&f(r),t?r:e}})}return(0,ev.jsx)(eiR,{scope:e.__scopeSlider,name:n,disabled:l,min:r,max:i,valueIndexToChangeRef:v,thumbs:g.current,values:y,orientation:o,form:p,children:(0,ev.jsx)(eiA.Provider,{scope:e.__scopeSlider,children:(0,ev.jsx)(eiA.Slot,{scope:e.__scopeSlider,children:(0,ev.jsx)(x?eiV:eiH,{"aria-disabled":l,"data-disabled":l?"":void 0,...m,ref:t,onPointerDown:cM(m.onPointerDown,()=>{l||(w.current=y)}),min:r,max:i,inverted:h,onSlideStart:l?void 0:function(e){let t=function(e,t){if(1===e.length)return 0;let n=e.map(e=>Math.abs(e-t)),r=Math.min(...n);return n.indexOf(r)}(y,e);j(e,t)},onSlideMove:l?void 0:function(e){j(e,v.current)},onSlideEnd:l?void 0:function(){let e=w.current[v.current];y[v.current]!==e&&f(y)},onHomeKeyDown:()=>!l&&j(r,0,{commit:!0}),onEndKeyDown:()=>!l&&j(i,y.length-1,{commit:!0}),onStepKeyDown:({event:e,direction:t})=>{if(!l){let n=eiE.includes(e.key)||e.shiftKey&&eiO.includes(e.key),r=v.current;j(y[r]+a*(n?10:1)*t,r,{commit:!0})}}})})})})});ei$.displayName=eiz;var[eiF,eiB]=eiD(eiz,{startEdge:"left",endEdge:"right",size:"width",direction:1}),eiV=ey.forwardRef((e,t)=>{let{min:n,max:r,dir:i,inverted:a,onSlideStart:o,onSlideMove:l,onSlideEnd:s,onStepKeyDown:c,...d}=e,[u,f]=ey.useState(null),h=eD(t,e=>f(e)),p=ey.useRef(void 0),m=fA(i),g="ltr"===m,v=g&&!a||!g&&a;function x(e){let t=p.current||u.getBoundingClientRect(),i=ei0([0,t.width],v?[n,r]:[r,n]);return p.current=t,i(e-t.left)}return(0,ev.jsx)(eiF,{scope:e.__scopeSlider,startEdge:v?"left":"right",endEdge:v?"right":"left",direction:v?1:-1,size:"width",children:(0,ev.jsx)(eiW,{dir:m,"data-orientation":"horizontal",...d,ref:h,style:{...d.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:e=>{let t=x(e.clientX);o?.(t)},onSlideMove:e=>{let t=x(e.clientX);l?.(t)},onSlideEnd:()=>{p.current=void 0,s?.()},onStepKeyDown:e=>{let t=eiP[v?"from-left":"from-right"].includes(e.key);c?.({event:e,direction:t?-1:1})}})})}),eiH=ey.forwardRef((e,t)=>{let{min:n,max:r,inverted:i,onSlideStart:a,onSlideMove:o,onSlideEnd:l,onStepKeyDown:s,...c}=e,d=ey.useRef(null),u=eD(t,d),f=ey.useRef(void 0),h=!i;function p(e){let t=f.current||d.current.getBoundingClientRect(),i=ei0([0,t.height],h?[r,n]:[n,r]);return f.current=t,i(e-t.top)}return(0,ev.jsx)(eiF,{scope:e.__scopeSlider,startEdge:h?"bottom":"top",endEdge:h?"top":"bottom",size:"height",direction:h?1:-1,children:(0,ev.jsx)(eiW,{"data-orientation":"vertical",...c,ref:u,style:{...c.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:e=>{let t=p(e.clientY);a?.(t)},onSlideMove:e=>{let t=p(e.clientY);o?.(t)},onSlideEnd:()=>{f.current=void 0,l?.()},onStepKeyDown:e=>{let t=eiP[h?"from-bottom":"from-top"].includes(e.key);s?.({event:e,direction:t?-1:1})}})})}),eiW=ey.forwardRef((e,t)=>{let{__scopeSlider:n,onSlideStart:r,onSlideMove:i,onSlideEnd:a,onHomeKeyDown:o,onEndKeyDown:l,onStepKeyDown:s,...c}=e,d=eiL(eiz,n);return(0,ev.jsx)(cT.span,{...c,ref:t,onKeyDown:cM(e.onKeyDown,e=>{"Home"===e.key?(o(e),e.preventDefault()):"End"===e.key?(l(e),e.preventDefault()):eiE.concat(eiO).includes(e.key)&&(s(e),e.preventDefault())}),onPointerDown:cM(e.onPointerDown,e=>{let t=e.target;t.setPointerCapture(e.pointerId),e.preventDefault(),d.thumbs.has(t)?t.focus():r(e)}),onPointerMove:cM(e.onPointerMove,e=>{e.target.hasPointerCapture(e.pointerId)&&i(e)}),onPointerUp:cM(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&(t.releasePointerCapture(e.pointerId),a(e))})})}),eiU="SliderTrack",eiq=ey.forwardRef((e,t)=>{let{__scopeSlider:n,...r}=e,i=eiL(eiU,n);return(0,ev.jsx)(cT.span,{"data-disabled":i.disabled?"":void 0,"data-orientation":i.orientation,...r,ref:t})});eiq.displayName=eiU;var eiK="SliderRange",eiG=ey.forwardRef((e,t)=>{let{__scopeSlider:n,...r}=e,i=eiL(eiK,n),a=eiB(eiK,n),o=eD(t,ey.useRef(null)),l=i.values.length,s=i.values.map(e=>eiQ(e,i.min,i.max)),c=l>1?Math.min(...s):0,d=100-Math.max(...s);return(0,ev.jsx)(cT.span,{"data-orientation":i.orientation,"data-disabled":i.disabled?"":void 0,...r,ref:o,style:{...e.style,[a.startEdge]:c+"%",[a.endEdge]:d+"%"}})});eiG.displayName=eiK;var eiY="SliderThumb",eiX=ey.forwardRef((e,t)=>{let n=eiI(e.__scopeSlider),[r,i]=ey.useState(null),a=eD(t,e=>i(e)),o=ey.useMemo(()=>r?n().findIndex(e=>e.ref.current===r):-1,[n,r]);return(0,ev.jsx)(eiZ,{...e,ref:a,index:o})}),eiZ=ey.forwardRef((e,t)=>{var n,r,i,a,o;let l,s,{__scopeSlider:c,index:d,name:u,...f}=e,h=eiL(eiY,c),p=eiB(eiY,c),[m,g]=ey.useState(null),v=eD(t,e=>g(e)),x=!m||h.form||!!m.closest("form"),y=ui(m),b=h.values[d],w=void 0===b?0:eiQ(b,h.min,h.max),j=(n=d,(r=h.values.length)>2?`Value ${n+1} of ${r}`:2===r?["Minimum","Maximum"][n]:void 0),k=y?.[p.size],S=k?(i=k,a=w,o=p.direction,s=ei0([0,50],[0,l=i/2]),(l-s(a)*o)*o):0;return ey.useEffect(()=>{if(m)return h.thumbs.add(m),()=>{h.thumbs.delete(m)}},[m,h.thumbs]),(0,ev.jsxs)("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[p.startEdge]:`calc(${w}% + ${S}px)`},children:[(0,ev.jsx)(eiA.ItemSlot,{scope:e.__scopeSlider,children:(0,ev.jsx)(cT.span,{role:"slider","aria-label":e["aria-label"]||j,"aria-valuemin":h.min,"aria-valuenow":b,"aria-valuemax":h.max,"aria-orientation":h.orientation,"data-orientation":h.orientation,"data-disabled":h.disabled?"":void 0,tabIndex:h.disabled?void 0:0,...f,ref:v,style:void 0===b?{display:"none"}:e.style,onFocus:cM(e.onFocus,()=>{h.valueIndexToChangeRef.current=d})})}),x&&(0,ev.jsx)(eiJ,{name:u??(h.name?h.name+(h.values.length>1?"[]":""):void 0),form:h.form,value:b},d)]})});eiX.displayName=eiY;var eiJ=ey.forwardRef(({__scopeSlider:e,value:t,...n},r)=>{let i=ey.useRef(null),a=eD(i,r),o=vx(t);return ey.useEffect(()=>{let e=i.current;if(!e)return;let n=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set;if(o!==t&&n){let r=new Event("input",{bubbles:!0});n.call(e,t),e.dispatchEvent(r)}},[o,t]),(0,ev.jsx)(cT.input,{style:{display:"none"},...n,ref:a,defaultValue:t})});function eiQ(e,t,n){return fI(100/(n-t)*(e-t),[0,100])}function ei0(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function ei1(e){return Array.isArray(e)?e:"number"==typeof e?[e]:void 0}function ei2({className:e,defaultValue:t,value:n,min:r=0,max:i=100,...a}){let o=ey.useMemo(()=>ei1(n)??ei1(t)??[r,i],[t,i,r,n]);return(0,ev.jsxs)(ei$,{"data-slot":"slider",defaultValue:ei1(t),value:ei1(n),min:r,max:i,className:tK("relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-40 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",e),...a,children:[(0,ev.jsx)(eiq,{"data-slot":"slider-track",className:"relative grow overflow-hidden rounded-full bg-muted data-[orientation=horizontal]:h-1 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1",children:(0,ev.jsx)(eiG,{"data-slot":"slider-range",className:"absolute bg-primary data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full"})}),o.map((e,t)=>(0,ev.jsx)(eiX,{"data-slot":"slider-thumb",className:"relative block size-3 shrink-0 rounded-full border border-ring bg-white shadow-sm transition-[color,box-shadow] select-none after:absolute after:-inset-2 hover:ring-3 hover:ring-ring/50 focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-hidden active:ring-3 active:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 dark:bg-primary-foreground"},t))]})}async function ei5(){return ei3("/api/local/agent-config")}async function ei4(e){return ei3("/api/local/agent-config",{method:"PUT",body:JSON.stringify(e)})}async function ei3(e,t){let n=await fetch(tJ(e),{cache:"no-store",...t,headers:{...t?.body?{"Content-Type":"application/json"}:{},...t?.headers}}),r=await n.json().catch(()=>({}));if(!n.ok)throw Error("string"==typeof r?.error?r.error:"agent config api failed");return r}function ei6(e){return{compression:{...e.compression},summary:{...e.summary},approval:{...e.approval}}}function ei8(){let[e,t]=ey.useState(null),[n,r]=ey.useState([]),[i,a]=ey.useState(!0),[o,l]=ey.useState(!1),[s,c]=ey.useState(""),[d,u]=ey.useState(!1);function f(e,n){t(t=>t?{...t,[e]:{...t[e],...n}}:t),u(!0)}async function h(){if(e&&!o){l(!0),c("");try{let n=await ei4({compression:e.compression,summary:e.summary,approval:e.approval});t(ei6(n)),u(!1)}catch(e){c(e instanceof Error?e.message:"Save failed")}finally{l(!1)}}}return(ey.useEffect(()=>{!async function(){try{let[e,n]=await Promise.all([ei5(),ve()]);t(ei6(e)),r(n.models)}catch(e){c(e instanceof Error?e.message:"Failed to load config")}finally{a(!1)}}()},[]),i)?(0,ev.jsx)("div",{className:"rounded-lg border border-dashed px-3 py-6 text-sm text-muted-foreground",children:"正在读取代理配置"}):e?(0,ev.jsxs)("div",{className:"grid gap-6",children:[(0,ev.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,ev.jsx)("div",{className:"min-w-0",children:(0,ev.jsx)("h3",{className:"text-base font-semibold tracking-normal",children:"代理配置"})}),d&&(0,ev.jsxs)(tY,{type:"button",size:"sm",onClick:()=>void h(),disabled:o,children:[(0,ev.jsx)(QA,{className:"size-4"}),o?"保存中":"保存"]})]}),s?(0,ev.jsxs)(eij,{variant:"destructive",children:[(0,ev.jsx)(eP,{}),(0,ev.jsx)(eik,{children:"错误"}),(0,ev.jsx)(eiS,{children:s})]}):null,(0,ev.jsxs)("section",{className:"grid gap-3 rounded-lg border bg-card p-4",children:[(0,ev.jsx)("h4",{className:"text-sm font-semibold",children:"压缩上下文"}),(0,ev.jsx)("p",{className:"text-xs text-muted-foreground",children:"当对话 token 达到模型上下文窗口的指定百分比时自动压缩。"}),(0,ev.jsxs)("div",{className:"grid gap-2",children:[(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsx)(eiM,{className:"text-sm",children:"自动压缩阈值"}),(0,ev.jsxs)("span",{className:"text-sm tabular-nums text-muted-foreground",children:[e.compression.autoThresholdPercent,"%"]})]}),(0,ev.jsx)(ei2,{value:[e.compression.autoThresholdPercent],onValueChange:([e])=>f("compression",{autoThresholdPercent:e}),min:0,max:100,step:5}),(0,ev.jsx)("p",{className:"text-xs text-muted-foreground",children:"0% 表示禁用自动压缩。建议设为 70%-85%。"})]}),(0,ev.jsx)(Hc,{}),(0,ev.jsxs)("div",{className:"grid gap-2",children:[(0,ev.jsx)(eiM,{className:"text-sm",children:"压缩模型"}),(0,ev.jsx)(ei7,{models:n,value:e.compression.modelRef,onValueChange:e=>f("compression",{modelRef:e}),placeholder:"使用主模型"}),(0,ev.jsx)("p",{className:"text-xs text-muted-foreground",children:"用于执行上下文压缩的模型。留空则使用当前对话主模型。"})]})]}),(0,ev.jsxs)("section",{className:"grid gap-3 rounded-lg border bg-card p-4",children:[(0,ev.jsx)("h4",{className:"text-sm font-semibold",children:"对话摘要"}),(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsxs)("div",{className:"min-w-0 space-y-0.5",children:[(0,ev.jsx)(eiM,{className:"text-sm",children:"对话标题摘要"}),(0,ev.jsx)("p",{className:"text-xs text-muted-foreground",children:"每轮对话结束后自动更新对话标题。"})]}),(0,ev.jsx)(g8,{checked:e.summary.enableTitleSummary,onCheckedChange:e=>f("summary",{enableTitleSummary:e})})]}),(0,ev.jsx)(Hc,{}),(0,ev.jsxs)("div",{className:"flex items-center justify-between",children:[(0,ev.jsxs)("div",{className:"min-w-0 space-y-0.5",children:[(0,ev.jsx)(eiM,{className:"text-sm text-muted-foreground",children:"轮次标题摘要"}),(0,ev.jsx)("p",{className:"text-xs text-muted-foreground",children:"为每轮 agent 操作生成摘要标题。(即将推出)"})]}),(0,ev.jsx)(g8,{checked:!1,disabled:!0})]}),(0,ev.jsx)(Hc,{}),(0,ev.jsxs)("div",{className:"grid gap-2",children:[(0,ev.jsx)(eiM,{className:"text-sm",children:"摘要模型"}),(0,ev.jsx)(ei7,{models:n,value:e.summary.modelRef,onValueChange:e=>f("summary",{modelRef:e}),placeholder:"使用主模型"}),(0,ev.jsx)("p",{className:"text-xs text-muted-foreground",children:"用于生成对话摘要的模型。留空则使用当前对话主模型。"})]})]}),(0,ev.jsxs)("section",{className:"grid gap-3 rounded-lg border bg-card p-4",children:[(0,ev.jsx)("h4",{className:"text-sm font-semibold",children:"命令审批"}),(0,ev.jsx)("p",{className:"text-xs text-muted-foreground",children:"在 Auto 权限模式下,使用 AI 模型审批 Agent 发起的命令是否可以自动执行。"}),(0,ev.jsxs)("div",{className:"grid gap-2",children:[(0,ev.jsx)(eiM,{className:"text-sm",children:"审批模型"}),(0,ev.jsx)(ei7,{models:n,value:e.approval.modelRef,onValueChange:e=>f("approval",{modelRef:e}),placeholder:"未配置(全部放行)"}),(0,ev.jsx)("p",{className:"text-xs text-muted-foreground",children:"留空表示 Auto 模式下不进行 AI 审批,所有非危险命令自动放行。"})]}),(0,ev.jsx)(Hc,{}),(0,ev.jsxs)("div",{className:"grid gap-2",children:[(0,ev.jsx)(eiM,{className:"text-sm",children:"审批提示词"}),(0,ev.jsx)(g7,{value:e.approval.prompt,onChange:e=>f("approval",{prompt:e.currentTarget.value}),placeholder:"可选:给审批模型的额外指导,例如允许哪些操作、拒绝哪些操作",rows:4,className:"resize-none text-sm"}),(0,ev.jsx)("p",{className:"text-xs text-muted-foreground",children:"与系统提示词一起发送给审批模型,帮助它判断命令是否安全。"})]})]})]}):(0,ev.jsxs)(eij,{variant:"destructive",children:[(0,ev.jsx)(eP,{}),(0,ev.jsx)(eik,{children:"读取失败"}),(0,ev.jsx)(eiS,{children:s||"无法加载代理配置"})]})}function ei7({models:e,value:t,onValueChange:n,placeholder:r}){return(0,ev.jsxs)(vA,{value:t||"__none__",onValueChange:e=>n("__none__"===e?"":e),children:[(0,ev.jsx)(xd,{className:"w-full",children:(0,ev.jsx)(vT,{placeholder:r})}),(0,ev.jsxs)(xh,{children:[(0,ev.jsx)(xp,{value:"__none__",children:r}),e.map(e=>(0,ev.jsx)(xp,{value:e.id,children:e.label},e.id))]})]})}eiJ.displayName="RadioBubbleInput";let ei9=[{value:"openai-v1",label:"OpenAI v1"},{value:"anthropic",label:"Anthropic"},{value:"openai-responses",label:"OpenAI Responses"}];function eae(e){return{id:e.id,providerName:e.providerName,protocol:e.protocol,endpointUrl:e.endpointUrl,apiKey:"",models:e.models,selectedModelIds:e.selectedModelIds,loadingModels:!1,saving:!1,error:e.lastError??"",savedKeyAvailable:!0,editing:!1}}function eat(){let[e,t]=ey.useState([]),[n,r]=ey.useState(!0),[i,a]=ey.useState(""),o=ey.useCallback(async()=>{a("");try{let e=await ve();t(e.routes.map(eae))}catch(e){a(e instanceof Error?e.message:"模型路由读取失败")}finally{r(!1)}},[]);function l(e,n){t(t=>t.map((t,r)=>r===e?n(t):t))}async function s(t){let n=e[t];if(n&&!n.saving){l(t,e=>({...e,saving:!0,error:""}));try{let e=await vn({id:n.id,providerName:n.providerName,protocol:n.protocol,endpointUrl:n.endpointUrl,apiKey:n.apiKey,models:n.models,selectedModelIds:n.selectedModelIds});l(t,()=>eae(e))}catch(e){l(t,t=>({...t,saving:!1,error:e instanceof Error?e.message:"保存失败"}))}}}async function c(n){let r=e[n];if(r&&!r.saving){if(!r.id)return void t(e=>e.filter((e,t)=>t!==n));l(n,e=>({...e,saving:!0,error:""}));try{await vr(r.id),t(e=>e.filter((e,t)=>t!==n))}catch(e){l(n,t=>({...t,saving:!1,error:e instanceof Error?e.message:"删除失败"}))}}}return ey.useEffect(()=>{o()},[o]),(0,ev.jsxs)("div",{className:"grid gap-4",children:[(0,ev.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,ev.jsx)("div",{className:"min-w-0",children:(0,ev.jsx)("h3",{className:"text-base font-semibold tracking-normal",children:"模型路由"})}),(0,ev.jsxs)(tY,{type:"button",size:"sm",onClick:function(){t(e=>[{providerName:"",protocol:"openai-v1",endpointUrl:"",apiKey:"",models:[],selectedModelIds:[],loadingModels:!1,saving:!1,error:"",editing:!0},...e])},children:[(0,ev.jsx)(sQ,{className:"size-4"}),"添加模型路由"]})]}),i?(0,ev.jsxs)(eij,{variant:"destructive",children:[(0,ev.jsx)(eP,{}),(0,ev.jsx)(eik,{children:"读取失败"}),(0,ev.jsx)(eiS,{children:i})]}):null,n?(0,ev.jsx)("div",{className:"rounded-lg border border-dashed px-3 py-6 text-sm text-muted-foreground",children:"正在读取模型路由"}):0===e.length?(0,ev.jsx)("div",{className:"rounded-lg border border-dashed px-3 py-6 text-sm text-muted-foreground",children:"还没有模型路由。"}):(0,ev.jsx)("div",{className:"grid gap-3",children:e.map((e,t)=>(0,ev.jsx)(ean,{draft:e,onDraftChange:e=>l(t,()=>e),onSave:()=>{s(t)},onDelete:()=>{c(t)}},e.id??`draft-${t}`))})]})}function ean({draft:e,onDraftChange:t,onSave:n,onDelete:r}){let i=ey.useRef(e),a=ey.useRef(t),o=[e.providerName,e.protocol,e.endpointUrl,e.apiKey||(e.savedKeyAvailable?"saved":"")].join("\n"),l=e.providerName.trim()&&e.endpointUrl.trim()&&e.apiKey.trim(),s=e.providerName.trim()&&e.endpointUrl.trim()&&(e.apiKey.trim()||e.savedKeyAvailable)&&e.selectedModelIds.length>0&&!e.saving;function c(n){t({...e,...n})}if(ey.useEffect(()=>{i.current=e,a.current=t},[e,t]),ey.useEffect(()=>{if(!l)return;let e=window.setTimeout(async()=>{let e=i.current;a.current({...e,loadingModels:!0,error:""});try{let t=await vt({providerName:e.providerName,protocol:e.protocol,endpointUrl:e.endpointUrl,apiKey:e.apiKey}),n=e.selectedModelIds.filter(e=>t.models.some(t=>t.id===e));a.current({...e,models:t.models,selectedModelIds:n,loadingModels:!1,error:""})}catch(t){a.current({...e,loadingModels:!1,error:t instanceof Error?t.message:"模型拉取失败"})}},650);return()=>window.clearTimeout(e)},[l,o]),!e.editing){let t=e.selectedModelIds.map(t=>e.models.find(e=>e.id===t)?.displayName||t).filter(Boolean),n=ei9.find(t=>t.value===e.protocol)?.label??e.protocol;return(0,ev.jsxs)("section",{className:"grid min-h-16 grid-cols-[minmax(0,1fr)_auto] items-center gap-3 rounded-lg border bg-card px-3 py-2.5",children:[(0,ev.jsxs)("div",{className:"min-w-0",children:[(0,ev.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1",children:[(0,ev.jsx)("span",{className:"truncate text-sm font-medium",children:e.providerName}),(0,ev.jsx)("span",{className:"ui-text-kbd text-muted-foreground",children:n})]}),(0,ev.jsx)("div",{className:"mt-1 truncate text-xs text-muted-foreground",children:t.length>0?t.join(", "):"未选择模型"})]}),(0,ev.jsxs)(tY,{type:"button",variant:"outline",size:"sm",onClick:()=>c({editing:!0}),children:[(0,ev.jsx)(mJ,{className:"size-4"}),"编辑"]})]})}return(0,ev.jsxs)("section",{className:"grid gap-3 rounded-lg border bg-card p-3",children:[(0,ev.jsxs)("div",{className:"grid gap-2 md:grid-cols-[minmax(0,1fr)_11rem]",children:[(0,ev.jsx)(tX,{value:e.providerName,placeholder:"提供商名称",onChange:e=>c({providerName:e.currentTarget.value})}),(0,ev.jsxs)(vA,{value:e.protocol,onValueChange:e=>c({protocol:e}),children:[(0,ev.jsx)(xd,{className:"w-full",children:(0,ev.jsx)(vT,{})}),(0,ev.jsx)(xh,{children:ei9.map(e=>(0,ev.jsx)(xp,{value:e.value,children:e.label},e.value))})]})]}),(0,ev.jsxs)("div",{className:"grid gap-2 md:grid-cols-[minmax(0,1fr)_minmax(0,18rem)]",children:[(0,ev.jsx)(tX,{value:e.endpointUrl,placeholder:"API 端点 URL,例如 https://api.openai.com/v1",onChange:e=>c({endpointUrl:e.currentTarget.value})}),(0,ev.jsx)(tX,{value:e.apiKey,type:"password",placeholder:e.savedKeyAvailable?"已保存,留空沿用":"API Key",onChange:e=>c({apiKey:e.currentTarget.value})})]}),(0,ev.jsx)(Hc,{}),(0,ev.jsxs)("div",{className:"grid gap-2",children:[(0,ev.jsxs)("div",{className:"flex min-h-6 items-center justify-between gap-2",children:[(0,ev.jsxs)("div",{className:"flex min-w-0 items-center gap-2 text-sm font-medium",children:[(0,ev.jsx)(mF,{className:"size-4 text-muted-foreground"}),"可用模型"]}),e.loadingModels?(0,ev.jsx)("span",{className:"text-xs text-muted-foreground",children:"拉取中"}):null]}),e.models.length>0?(0,ev.jsx)("div",{className:"grid max-h-64 gap-1 overflow-auto pr-1 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:e.models.map(t=>{let n=e.selectedModelIds.includes(t.id);return(0,ev.jsxs)("div",{className:tK("grid min-h-8 grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2 rounded-md px-2 text-sm hover:bg-muted/60",n&&"bg-muted/70"),children:[(0,ev.jsxs)("label",{className:"flex cursor-pointer items-center gap-2",children:[(0,ev.jsx)(XL,{checked:n,onCheckedChange:n=>{var r;return r=t.id,void c({selectedModelIds:!0===n?[...e.selectedModelIds,r]:e.selectedModelIds.filter(e=>e!==r)})}}),(0,ev.jsx)("span",{className:"truncate",children:t.displayName||t.id})]}),(0,ev.jsxs)("div",{className:"flex items-center gap-1",children:[(0,ev.jsx)(tX,{type:"number",className:"h-6 w-16 px-1.5 text-center text-xs tabular-nums",value:t.contextLength||200,min:1,max:1e4,onChange:n=>{var r,i;return r=t.id,i=Number.parseInt(n.currentTarget.value,10)||0,void c({models:e.models.map(e=>e.id===r?{...e,contextLength:i>0?i:void 0}:e)})}}),(0,ev.jsx)("span",{className:"text-xs text-muted-foreground",children:"k"})]})]},t.id)})}):(0,ev.jsx)("div",{className:"rounded-md border border-dashed px-3 py-4 text-sm text-muted-foreground",children:"填写端点和密钥后会自动拉取模型。"})]}),e.error?(0,ev.jsxs)(eij,{variant:"destructive",children:[(0,ev.jsx)(eP,{}),(0,ev.jsx)(eik,{children:"模型路由错误"}),(0,ev.jsx)(eiS,{className:"break-words",children:e.error})]}):null,(0,ev.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,ev.jsxs)(tY,{type:"button",variant:"destructive",onClick:r,disabled:e.saving,children:[(0,ev.jsx)(gn,{className:"size-4"}),"删除"]}),(0,ev.jsx)(tY,{type:"button",onClick:n,disabled:!s,children:e.saving?"保存中":"保存"})]})]})}let ear=[{id:"settings",x:0,y:0,w:12,h:8}],eai=ho(ear);function eaa(){return(0,ev.jsx)(ha,{children:(0,ev.jsx)(enN,{layouts:ear,children:(0,ev.jsx)(enC,{layout:enS(eai,"settings"),children:(0,ev.jsx)(eix,{className:"h-full min-h-0 max-md:min-h-0 max-md:rounded-none max-md:border-0",contentClassName:"min-h-0 overflow-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",sections:[{id:"preferences",title:"偏好设置",icon:(0,ev.jsx)(mF,{}),children:[{id:"model-routes",title:"模型路由",icon:(0,ev.jsx)(mF,{}),content:(0,ev.jsx)(eat,{})},{id:"agent-config",title:"代理配置",icon:(0,ev.jsx)(mY,{}),content:(0,ev.jsx)(ei8,{})}]}],defaultSectionId:"preferences",defaultChildId:"model-routes",labels:{back:"返回",search:"搜索设置",welcomeTitle:"偏好设置",welcomeDescription:"",recommendations:"常用",noResults:"没有设置项"}})})})})}let eao=eS("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]),eal=eS("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);var eas=e.i(91e3);let eac=["light","dark","jelly"],ead={light:{label:"Light",icon:eal,className:"text-sidebar-foreground/60"},dark:{label:"Dark",icon:eao,className:"text-sidebar-foreground/60"},jelly:{label:"Jelly",icon:function(e){return(0,ev.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[(0,ev.jsx)("path",{d:"M6.5 11.5C6.5 8 8.7 5.5 12 5.5s5.5 2.5 5.5 6v.6c0 .8-.6 1.4-1.4 1.4H7.9c-.8 0-1.4-.6-1.4-1.4v-.6Z"}),(0,ev.jsx)("path",{d:"M7.8 13.5c.4 1 1.1 1.5 2 1.5s1.6-.5 2-1.5c.4 1 1.1 1.5 2 1.5s1.6-.5 2-1.5"}),(0,ev.jsx)("path",{d:"M9 15.5c0 1.4-1.2 1.4-1.2 2.8 0 .7.3 1.2.8 1.7"}),(0,ev.jsx)("path",{d:"M12 15.5c0 1.6-1.4 1.6-1.4 3.2 0 .7.3 1.2.8 1.8"}),(0,ev.jsx)("path",{d:"M15 15.5c0 1.4 1.2 1.4 1.2 2.8 0 .7-.3 1.2-.8 1.7"})]})},className:"text-primary"}};function eau(){let{resolvedTheme:e,setTheme:t}=(0,qP.useTheme)(),[n,r]=ey.useState(eas.defaultAppearanceTheme);ey.useEffect(()=>{let e=window.localStorage.getItem(eas.appearanceThemeStorageKey)??eas.defaultAppearanceTheme;r(e),(0,eas.applyAppearanceTheme)({theme:e})},[]);let i=n===eas.jellyAppearanceTheme?"jelly":"dark"===e?"dark":"light",a=eac.indexOf(i),o=eac[(a+1)%eac.length]??"light",{icon:l,label:s,className:c}=ead[i];function d(e){r(e),window.localStorage.setItem(eas.appearanceThemeStorageKey,e),(0,eas.applyAppearanceTheme)({theme:e})}return(0,ev.jsx)(tY,{type:"button",variant:"ghost",size:"icon-sm",className:tK("size-10 hover:bg-muted hover:text-sidebar-foreground",c),"aria-label":`${ff.theme}: ${s}`,title:`${ff.theme}: ${s}`,onClick:function(){if("jelly"===o){t("dark"),d(eas.jellyAppearanceTheme);return}d(eas.defaultAppearanceTheme),t(o)},children:(0,ev.jsx)(l,{})})}function eaf({clipboardItems:e=[],onClipboardItemsChange:t,onOverlayOpenChange:n}){return(0,ev.jsx)(mD,{boardId:"runtime-operations",definitions:enH,initialLayouts:enW,clipboardItems:e,actionLabel:"运行页面卡片操作",paletteGroupTitle:"运行页面卡片",onClipboardItemsChange:t,onOverlayOpenChange:n})}function eah({clipboardItems:e=[],onClipboardItemsChange:t,onOverlayOpenChange:n}){let r=en2("/api/local/machines/telemetry",en1),i=ey.useMemo(()=>enU(r),[r]);return(0,ev.jsx)(mD,{boardId:"telemetry",definitions:i,initialLayouts:enK,clipboardItems:e,actionLabel:"遥测页面卡片操作",paletteGroupTitle:"遥测页面卡片",onClipboardItemsChange:t,onOverlayOpenChange:n})}function eap(){let e=cy(),[t,n]=ey.useState("dashboard"),[r,i]=ey.useState(!1),[a,o]=ey.useState(!1),[l,s]=ey.useState(!1),[c,d]=ey.useState(),[u,f]=ey.useState(!1),[h,p]=ey.useState([]),[m,g]=ey.useState([]),[v,x]=ey.useState({}),[y,b]=ey.useState(),[w,j]=ey.useState(W6),[k,S]=ey.useState([]),[N,C]=ey.useState(),M=ey.useCallback(e=>{j(t=>o0(e,t))},[]),E=ey.useCallback(e=>{S(t=>o0(e,t))},[]),O=ey.useCallback(async(e,t)=>{d(await WC(e,t)),n("new-agent-conversation")},[]),P=ey.useCallback(async()=>{let e=await WS();e?(d(await WC(e.conversation.id)),n("new-agent-conversation")):s(!0)},[]),z=ey.useCallback(({item:e})=>{"new-canvas"===e.id?n("new-canvas"):"all-canvases"===e.id?n("all-canvases"):"new-agent-conversation"===e.id?s(!0):"open-recent-conversation"===e.id?P():"all-conversations"===e.id?n("all-conversations"):"overview"===e.id?n("dashboard"):"runs"===e.id?n("runs"):"telemetry"===e.id?n("telemetry"):("machine-group"===e.id||"process-management"===e.id||"machine-performance"===e.id||"machine-firewall"===e.id||"audit-logs"===e.id||"machine-files"===e.id||"preferences"===e.id||"card-management"===e.id||"account"===e.id)&&n(e.id)},[P]),A=ey.useCallback(()=>{n("account")},[]);return(0,ev.jsxs)("main",{className:"vtl-app-background relative h-svh overflow-hidden text-foreground",children:[e?(0,ev.jsx)(erH,{navItems:erG,contents:erY,defaultActiveNavId:"dashboard",defaultSelectedItemId:"overview",defaultExpandedItemIds:["runs"],onItemSelect:z,footer:(0,ev.jsx)(eau,{})}):(0,ev.jsx)("div",{className:"pointer-events-none fixed inset-y-0 left-0 z-40 p-3",children:(0,ev.jsx)(u2,{navItems:erG,contents:erY,defaultActiveNavId:"dashboard",defaultSelectedItemId:"overview",defaultExpandedItemIds:["runs"],logo:(0,ev.jsx)(nu,{}),account:(0,ev.jsx)(nf,{}),onAccountClick:A,labels:{collapse:"收起菜单",expand:"展开菜单",search:fh.search,account:"账户",hideSidebar:"收起侧边栏",showSidebar:"展开侧边栏"},className:"h-[calc(100svh-1.5rem)] drop-shadow-lg",footer:(0,ev.jsx)(eau,{}),onItemSelect:z})}),(0,ev.jsxs)("section",{className:tK("h-full min-w-0","dashboard"===t||"account"===t?tK("overflow-auto",!e&&"pl-[8.5rem]"):"overflow-hidden",e&&"pb-14"),children:["runs"===t?(0,ev.jsx)(eaf,{clipboardItems:h,onClipboardItemsChange:p,onOverlayOpenChange:f}):"telemetry"===t?(0,ev.jsx)(eah,{clipboardItems:h,onClipboardItemsChange:p,onOverlayOpenChange:f}):"machine-group"===t?(0,ev.jsx)(en4,{clipboardItems:h,onClipboardItemsChange:p,onOverlayOpenChange:f}):"process-management"===t?(0,ev.jsx)(en8,{}):"machine-performance"===t?(0,ev.jsx)(ere,{}):"machine-firewall"===t?(0,ev.jsx)(enO,{}):"audit-logs"===t?(0,ev.jsx)(ern,{clipboardItems:h,onClipboardItemsChange:p,onOverlayOpenChange:f}):"machine-files"===t?(0,ev.jsx)(eeW,{clipboardItems:h,onClipboardItemsChange:p}):"preferences"===t?(0,ev.jsx)(eaa,{}):"card-management"===t?(0,ev.jsx)(eia,{}):"account"===t?(0,ev.jsx)(er8,{}):"new-canvas"===t?(0,ev.jsx)(enc,{nodes:w,edges:k,selectedNodeId:N,clipboardItems:h,onNodesChange:M,onEdgesChange:E,onNodesSet:j,onEdgesSet:S,onSelectedNodeChange:C,onClipboardItemsChange:p}):"all-canvases"===t?(0,ev.jsx)(enn,{clipboardItems:h,onClipboardItemsChange:p,onOverlayOpenChange:f}):"new-agent-conversation"===t?(0,ev.jsx)(et3,{conversation:c,clipboardItems:h,clipboardDraggingId:y,onClipboardItemsChange:p,onClipboardDraggingChange:b,onOverlayOpenChange:o}):"all-conversations"===t?(0,ev.jsx)(WV,{clipboardItems:h,onClipboardItemsChange:p,onOpenConversation:(e,t)=>{O(e,t)},onOverlayOpenChange:f}):(0,ev.jsx)(enx,{clipboardItems:h,onClipboardItemsChange:p,onOverlayOpenChange:i}),(0,ev.jsx)(enw,{hidden:"dashboard"===t?r||l:"new-agent-conversation"===t?a||l:u,items:h,trashItems:m,draggingId:y,onDraggingChange:b,onItemsChange:p,onTrashItemsChange:g,onTrashClipboardItemsChange:x,trashClipboardItems:v})]}),(0,ev.jsx)(WK,{open:l,onOpenChange:s,onCreated:e=>{d(e),n("new-agent-conversation")}})]})}function eam(){let{ready:e,user:t,logout:n}=nd();return e?t?(0,ev.jsx)(eap,{}):(0,ev.jsx)(nl,{onComplete:()=>{window.location.reload()}}):(0,ev.jsx)("main",{className:"grid min-h-svh place-items-center bg-background",children:(0,ev.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[(0,ev.jsx)("div",{className:"size-8 animate-spin rounded-full border-2 border-muted-foreground/20 border-t-primary"}),(0,ev.jsx)("span",{className:"text-sm text-muted-foreground",children:"连接中..."})]})})}function eag(){return(0,ev.jsx)(nc,{children:(0,ev.jsx)(eam,{})})}e.s(["default",()=>eag],66204)}]);
|