@researai/deepscientist 1.5.16 → 1.5.17
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/README.md +66 -23
- package/bin/ds.js +550 -19
- package/docs/en/00_QUICK_START.md +65 -5
- package/docs/en/01_SETTINGS_REFERENCE.md +1 -1
- package/docs/en/09_DOCTOR.md +14 -3
- package/docs/en/15_CODEX_PROVIDER_SETUP.md +12 -3
- package/docs/en/21_LOCAL_MODEL_BACKENDS_GUIDE.md +283 -0
- package/docs/en/91_DEVELOPMENT.md +237 -0
- package/docs/en/README.md +7 -3
- package/docs/zh/00_QUICK_START.md +54 -5
- package/docs/zh/01_SETTINGS_REFERENCE.md +1 -1
- package/docs/zh/09_DOCTOR.md +15 -4
- package/docs/zh/15_CODEX_PROVIDER_SETUP.md +12 -3
- package/docs/zh/21_LOCAL_MODEL_BACKENDS_GUIDE.md +281 -0
- package/docs/zh/README.md +7 -3
- package/install.sh +46 -4
- package/package.json +2 -1
- package/pyproject.toml +1 -1
- package/src/deepscientist/__init__.py +1 -1
- package/src/deepscientist/bridges/connectors.py +8 -2
- package/src/deepscientist/codex_cli_compat.py +185 -72
- package/src/deepscientist/config/service.py +154 -6
- package/src/deepscientist/daemon/api/handlers.py +130 -25
- package/src/deepscientist/daemon/api/router.py +5 -0
- package/src/deepscientist/daemon/app.py +446 -22
- package/src/deepscientist/diagnostics/__init__.py +6 -0
- package/src/deepscientist/diagnostics/runner_failures.py +130 -0
- package/src/deepscientist/doctor.py +207 -3
- package/src/deepscientist/prompts/builder.py +22 -4
- package/src/deepscientist/quest/service.py +413 -13
- package/src/deepscientist/runners/codex.py +59 -14
- package/src/deepscientist/shared.py +19 -0
- package/src/prompts/contracts/shared_interaction.md +3 -2
- package/src/prompts/system.md +13 -0
- package/src/prompts/system_copilot.md +13 -0
- package/src/tui/package.json +1 -1
- package/src/ui/dist/assets/{AiManusChatView-COFACy7V.js → AiManusChatView-Bv-Z8YpU.js} +44 -44
- package/src/ui/dist/assets/{AnalysisPlugin-DnSm0GZn.js → AnalysisPlugin-BCKAfjba.js} +1 -1
- package/src/ui/dist/assets/{CliPlugin-CvwCmDQ5.js → CliPlugin-BCKcpc35.js} +4 -4
- package/src/ui/dist/assets/{CodeEditorPlugin-cOqSa0xq.js → CodeEditorPlugin-DbOfSJ8K.js} +1 -1
- package/src/ui/dist/assets/{CodeViewerPlugin-itb0tltR.js → CodeViewerPlugin-CbaFRrUU.js} +3 -3
- package/src/ui/dist/assets/{DocViewerPlugin-DqKkiCI6.js → DocViewerPlugin-DAjLVeQD.js} +3 -3
- package/src/ui/dist/assets/{GitCommitViewerPlugin-DVgNHBCS.js → GitCommitViewerPlugin-CIUqbUDO.js} +1 -1
- package/src/ui/dist/assets/{GitDiffViewerPlugin-DxL2ezFG.js → GitDiffViewerPlugin-CQACjoAA.js} +1 -1
- package/src/ui/dist/assets/{GitSnapshotViewer-B_RQm1YZ.js → GitSnapshotViewer-0r4nLPke.js} +1 -1
- package/src/ui/dist/assets/{ImageViewerPlugin-tHqlXY3n.js → ImageViewerPlugin-nBOmI2v_.js} +3 -3
- package/src/ui/dist/assets/{LabCopilotPanel-ClMbq5Yu.js → LabCopilotPanel-BHxOxF4z.js} +1 -1
- package/src/ui/dist/assets/{LabPlugin-L_SuE8ow.js → LabPlugin-BKoZGs95.js} +1 -1
- package/src/ui/dist/assets/{LatexPlugin-B495DTXC.js → LatexPlugin-ZwtV8pIp.js} +1 -1
- package/src/ui/dist/assets/{MarkdownViewerPlugin-DG28-61B.js → MarkdownViewerPlugin-DKqVfKyW.js} +3 -3
- package/src/ui/dist/assets/{MarketplacePlugin-BiOGT-Kj.js → MarketplacePlugin-BwxStZ9D.js} +1 -1
- package/src/ui/dist/assets/{NotebookEditor-C-4Kt1p9.js → NotebookEditor-BEQhaQbt.js} +1 -1
- package/src/ui/dist/assets/{NotebookEditor-CVsj8h_T.js → NotebookEditor-DB9N_T9q.js} +23 -23
- package/src/ui/dist/assets/{PdfLoader-CASDQmxJ.js → PdfLoader-eWBONbQP.js} +1 -1
- package/src/ui/dist/assets/{PdfMarkdownPlugin-BFhwoKsY.js → PdfMarkdownPlugin-D22YOZL3.js} +1 -1
- package/src/ui/dist/assets/{PdfViewerPlugin-DcOzU9vd.js → PdfViewerPlugin-c-RK9DLM.js} +3 -3
- package/src/ui/dist/assets/{SearchPlugin-CHj7M58O.js → SearchPlugin-CxF9ytAx.js} +1 -1
- package/src/ui/dist/assets/{TextViewerPlugin-CB4DYfWO.js → TextViewerPlugin-C5xqeeUH.js} +2 -2
- package/src/ui/dist/assets/{VNCViewer-CjlbyCB3.js → VNCViewer-BoLGLnHz.js} +1 -1
- package/src/ui/dist/assets/{bot-CFkZY-JP.js → bot-DREQOxzP.js} +1 -1
- package/src/ui/dist/assets/{chevron-up-Dq5ofbht.js → chevron-up-C9Qpx4DE.js} +1 -1
- package/src/ui/dist/assets/{code-DLC6G24T.js → code-WlFHE7z_.js} +1 -1
- package/src/ui/dist/assets/{file-content-Dv4LoZec.js → file-content-BZMz3RYp.js} +1 -1
- package/src/ui/dist/assets/{file-diff-panel-Denq-lC3.js → file-diff-panel-CQhw0jS2.js} +1 -1
- package/src/ui/dist/assets/{file-socket-Cu4Qln7Y.js → file-socket-CfQPKQKj.js} +1 -1
- package/src/ui/dist/assets/{git-commit-horizontal-BUh6G52n.js → git-commit-horizontal-DxZ8DCZh.js} +1 -1
- package/src/ui/dist/assets/{image-B9HUUddG.js → image-Bgl4VIyx.js} +1 -1
- package/src/ui/dist/assets/{index-Cgla8biy.css → index-BpV6lusQ.css} +1 -1
- package/src/ui/dist/assets/{index-Gbl53BNp.js → index-CBNVuWcP.js} +363 -363
- package/src/ui/dist/assets/{index-wQ7RIIRd.js → index-CwNu1aH4.js} +1 -1
- package/src/ui/dist/assets/{index-B2B1sg-M.js → index-DrUnlf6K.js} +1 -1
- package/src/ui/dist/assets/{index-DRyx7vAc.js → index-NW-h8VzN.js} +1 -1
- package/src/ui/dist/assets/{pdf-effect-queue-ZtnHFCAi.js → pdf-effect-queue-J8OnM0jE.js} +1 -1
- package/src/ui/dist/assets/{popover-DL6h35vr.js → popover-CLc0pPP8.js} +1 -1
- package/src/ui/dist/assets/{project-sync-CsX08Qno.js → project-sync-C9IdzdZW.js} +1 -1
- package/src/ui/dist/assets/{select-DvmXt1yY.js → select-Cs2PmzwL.js} +1 -1
- package/src/ui/dist/assets/{sigma-7jpXazui.js → sigma-ClKcHAXm.js} +1 -1
- package/src/ui/dist/assets/{trash-xA7kFt8i.js → trash-DwpbFr3w.js} +1 -1
- package/src/ui/dist/assets/{useCliAccess-DsMwDjOp.js → useCliAccess-NQ8m0Let.js} +1 -1
- package/src/ui/dist/assets/{wrap-text-CwMn-iqb.js → wrap-text-BC-Hltpd.js} +1 -1
- package/src/ui/dist/assets/{zoom-out-R-GWEhzS.js → zoom-out-E_gaeAxL.js} +1 -1
- package/src/ui/dist/index.html +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-
|
|
2
|
-
import{y as zt,
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-CwNu1aH4.js","assets/index-CBNVuWcP.js","assets/plugin-monaco-C8UgLomw.js","assets/plugin-terminal-MXFIPun8.js","assets/plugin-notebook-HbW2K-1c.js","assets/index-BpV6lusQ.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{y as zt,dH as hl,cb as qb,dI as Hb,cc as Vb,dJ as Go,dK as Yb,cf as Gb,dL as Xb,dM as Zb,dN as Qb,dO as Jb,j as f,d as em,b as Ae,J as re,dP as Qa,u as rr,bE as Se,_ as ml,d3 as tm,R as Lt,b6 as sa,b1 as Hn,d0 as rm,df as ex,dQ as nm,k as ys,h as la,d1 as im,ae as am,O as tx,b7 as si,b8 as li,b9 as ci,ba as ui,dd as om,bb as vl,dR as rx,dS as sm,bW as nx,dT as lm,aa as ix,dU as ax,n as di,dV as cm,P as du,dW as ox,dg as de,bQ as fu,bR as hu,bS as mu,bU as tn,a2 as vu,de as pu,X as Xo,dX as sx,Q as lx,dY as cx,dZ as Ge,r as ux,cr as dx,c as fx,d_ as hx,c6 as um,dz as ve,d$ as mx,e0 as vx,e1 as dm,e2 as px,e3 as gx,e4 as bs,e5 as fm,e6 as yx,e7 as bx,dn as hm,e8 as xx,e9 as wx,ea as Sx,eb as jx,ec as _x,ed as Px,cj as mm,a3 as pl,m as Ox,al as Cx,s as gu,ak as kx,ee as Ax,cu as Nx,cw as Ex,ef as Tx,L as pn,eg as Mx,eh as Dx,ei as Ix,T as Zi,ej as Lx,ek as Rx,el as $x,bJ as zx,dh as Bx}from"./index-CBNVuWcP.js";import{r as h,a as Fx}from"./plugin-monaco-C8UgLomw.js";import{e as vm,S as Ux,a as Wx,b as Kx,c as qx,d as Hx,L as Qi,n as pt,f as Vx,s as Yx,j as Gx,g as Zo,D as Xx,T as Zx}from"./select-Cs2PmzwL.js";import{S as Qx}from"./index-CwNu1aH4.js";import{w as pm,g as Jx,c as e0,n as ca,d as Ir,a as gm,e as t0,f as r0,u as n0}from"./useCliAccess-NQ8m0Let.js";import{g as Yr}from"./plugin-terminal-MXFIPun8.js";import{r as ym}from"./plugin-notebook-HbW2K-1c.js";import"./chevron-up-C9Qpx4DE.js";/**
|
|
3
3
|
* @license lucide-react v0.511.0 - ISC
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under the ISC license.
|
|
@@ -49,7 +49,7 @@ import{y as zt,dG as hl,cb as qb,dH as Hb,cc as Vb,dI as Go,dJ as Yb,cf as Gb,dK
|
|
|
49
49
|
*
|
|
50
50
|
* This source code is licensed under the ISC license.
|
|
51
51
|
* See the LICENSE file in the root directory of this source tree.
|
|
52
|
-
*/const w0=[["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"}]],S0=zt("wifi",w0);function bm(e,t){const r=hl(t()),n=()=>r.set(t());return n(),qb(()=>{const i=()=>Vb.preRender(n,!1,!0),a=e.map(o=>o.on("change",i));return()=>{a.forEach(o=>o()),Hb(n)}}),r}function j0(e){Go.current=[],e();const t=bm(Go.current,e);return Go.current=void 0,t}function _0(e,t,r,n){if(typeof e=="function")return j0(e);const a=Yb(t,r,n),o=Array.isArray(e)?bu(e,a):bu([e],([l])=>a(l)),s=Array.isArray(e)?void 0:e.accelerate;return s&&!s.isTransformed&&typeof t!="function"&&Array.isArray(r)&&n?.clamp!==!1&&(o.accelerate={...s,times:t,keyframes:r,isTransformed:!0}),o}function bu(e,t){const r=Gb(()=>[]);return bm(e,()=>{r.length=0;const n=e.length;for(let i=0;i<n;i++)r[i]=e[i].get();return t(r)})}function P0(e,t={}){const{isStatic:r}=h.useContext(Xb),n=()=>Qb(e)?e.get():e;if(r)return _0(n);const i=hl(n());return h.useInsertionEffect(()=>Zb(i,e,t),[i,JSON.stringify(t)]),i}function O0(e,t={}){return P0(e,{type:"spring",...t})}function C0({to:e,from:t=0,direction:r="up",delay:n=0,duration:i=2,className:a="",startWhen:o=!0,separator:s="",onStart:l,onEnd:c}){const u=h.useRef(null),d=hl(r==="down"?e:t),m=20+40*(1/i),v=100*(1/i),p=O0(d,{damping:m,stiffness:v}),y=Jb(u,{once:!0,margin:"0px"}),g=x=>{const w=x.toString();if(w.includes(".")){const j=w.split(".")[1];if(parseInt(j)!==0)return j.length}return 0},b=Math.max(g(t),g(e)),S=h.useCallback(x=>{const w=b>0,j={useGrouping:!!s,minimumFractionDigits:w?b:0,maximumFractionDigits:w?b:0},_=Intl.NumberFormat("en-US",j).format(x);return s?_.replace(/,/g,s):_},[b,s]);return h.useEffect(()=>{u.current&&(u.current.textContent=S(r==="down"?e:t))},[t,e,r,S]),h.useEffect(()=>{if(y&&o){typeof l=="function"&&l();const x=setTimeout(()=>{d.set(r==="down"?t:e)},n*1e3),w=setTimeout(()=>{typeof c=="function"&&c()},n*1e3+i*1e3);return()=>{clearTimeout(x),clearTimeout(w)}}},[y,o,d,r,t,e,n,l,c,i]),h.useEffect(()=>{const x=p.on("change",w=>{u.current&&(u.current.textContent=S(w))});return()=>x()},[p,S]),f.jsx("span",{className:a,ref:u})}function Di({children:e}){return f.jsx(f.Fragment,{children:e})}const Ii=(e,t)=>t<=0?1:Math.min(Math.max(e,1),t);function k0({initialStep:e=1,onStepChange:t,onFinalStepCompleted:r,backButtonText:n="Previous",nextButtonText:i="Next",nextDisabled:a,backDisabled:o,contentAnimation:s=!1,className:l,children:c}){const u=h.useMemo(()=>h.Children.toArray(c).filter($=>h.isValidElement($)),[c]),d=u.length,[m,v]=h.useState(()=>Ii(e,d)),p=h.useRef(m);h.useEffect(()=>{v(Ii(e,d))},[e,d]),h.useEffect(()=>{t?.(m)},[m,t]),h.useEffect(()=>{p.current=m},[m]);const y=($,k,q)=>typeof $=="function"?$(k,q):!!$,g=m>=d,b=y(a,m,d),S=y(o,m,d),x=m>1&&!S,w=typeof i=="function"?i(m,d):i,j=()=>{if(g){b||r?.();return}b||v($=>Ii($+1,d))},_=()=>{x&&v($=>Ii($-1,d))};if(d===0)return null;const C=u[m-1],N=C?.props?.title??`Step ${m}`,E=C?.props?.description,M=m>=p.current?"forward":"back";return f.jsxs("div",{className:Ae("stepper-root flex flex-col gap-5",l),children:[f.jsxs("div",{className:"stepper-header flex flex-wrap items-center justify-between gap-3",children:[f.jsx("div",{className:"flex flex-wrap items-center gap-3",children:u.map(($,k)=>{const q=k+1,F=q<m,K=q===m,G=$.props.title??`Step ${q}`;return f.jsxs("div",{className:"flex items-center gap-3",children:[f.jsx("div",{className:Ae("stepper-dot flex h-8 w-8 items-center justify-center rounded-full border text-xs font-semibold transition",F&&"border-transparent bg-[var(--cli-accent-olive)] text-[var(--cli-ink-0)]",K&&"border-[var(--cli-accent-olive)] bg-white/90 text-[var(--cli-ink-1)]",!F&&!K&&"border-white/60 bg-white/60 text-[var(--cli-muted-1)]"),"data-state":F?"complete":K?"active":"upcoming",children:F?f.jsx(em,{className:"h-4 w-4"}):q}),f.jsxs("div",{className:"flex flex-col",children:[f.jsxs("span",{className:"text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:["Step ",q]}),f.jsx("span",{className:Ae("text-xs font-semibold",K?"text-[var(--cli-ink-1)]":"text-[var(--cli-muted-1)]"),children:G})]}),k<d-1?f.jsx("div",{className:"h-px w-8 bg-white/60","aria-hidden":"true"}):null]},`${G}-${q}`)})}),f.jsxs("div",{className:"rounded-full border border-white/50 bg-white/80 px-3 py-1 text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:[m," / ",d]})]}),f.jsxs("div",{className:"stepper-content rounded-xl border border-white/40 bg-white/80 p-4","data-step":m,"data-direction":M,children:[f.jsxs("div",{className:"flex items-center justify-between gap-2",children:[f.jsxs("div",{children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:N}),E?f.jsx("div",{className:"text-xs text-[var(--cli-muted-1)]",children:E}):null]}),f.jsxs("span",{className:"rounded-full border border-white/60 bg-white/70 px-2 py-1 text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:["Step ",m]})]}),f.jsx("div",{className:"mt-4",children:C})]},s?`step-${m}`:"step-static"),f.jsxs("div",{className:"stepper-actions flex flex-wrap items-center justify-between gap-3",children:[f.jsx(re,{variant:"secondary",onClick:_,disabled:!x,children:n}),f.jsx(re,{onClick:j,disabled:b,children:w})]})]})}function gl(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}function A0(e,t){t===void 0&&(t=e,e=Qa);for(var r=0,n=t.length-1,i=t[0],a=new Array(n<0?0:n);r<n;)a[r]=e(i,i=t[++r]);return function(o){var s=Math.max(0,Math.min(n-1,Math.floor(o*=n)));return a[s](o-s)}}const xu={online:"bg-[var(--cli-status-online)]",offline:"bg-[var(--cli-status-offline)]",standalone:"bg-[var(--cli-status-idle)]",error:"bg-[var(--cli-status-error)]",idle:"bg-[var(--cli-status-idle)]",busy:"bg-[var(--cli-status-busy)]"};function N0(e){if(!e)return"n/a";const t=new Date(e);return Number.isNaN(t.getTime())?"n/a":t.toLocaleString()}function E0(e){if(!e)return"n/a";const t=new Date(e);if(Number.isNaN(t.getTime()))return"n/a";const r=Date.now()-t.getTime();return r<6e4?"just now":r<36e5?`${Math.round(r/6e4)}m ago`:r<864e5?`${Math.round(r/36e5)}h ago`:`${Math.round(r/864e5)}d ago`}function T0({server:e,isActive:t,onSelect:r}){const n=xu[e.status]||xu.offline;return f.jsxs("button",{"data-cli-server-card":!0,type:"button",onClick:r,"aria-pressed":t,className:Ae("cli-console-row group w-full rounded-lg border border-white/30 bg-white/50 px-3 py-2 text-left transition","hover:border-white/60 hover:bg-white/70",t&&"ring-2 ring-[var(--cli-accent-olive)]"),children:[f.jsx("div",{className:"flex items-start justify-between gap-3",children:f.jsxs("div",{className:"min-w-0",children:[f.jsxs("div",{className:"flex items-center gap-2 text-sm font-semibold text-[var(--cli-ink-1)]",children:[f.jsx("span",{className:Ae("h-2 w-2 rounded-full",n)}),f.jsx(vm,{className:"h-4 w-4 text-[var(--cli-muted-1)]"}),f.jsx("span",{className:"truncate max-w-[170px]",children:e.name||e.hostname})]}),f.jsxs("div",{className:"mt-1 flex flex-wrap items-center gap-2 text-[11px] text-[var(--cli-muted-1)]",children:[f.jsx("span",{className:"truncate max-w-[190px]",children:e.hostname}),f.jsx("span",{className:"h-1 w-1 rounded-full bg-[var(--cli-muted-2)]"}),f.jsx("span",{children:e.ip_address||"n/a"}),f.jsx("span",{className:"h-1 w-1 rounded-full bg-[var(--cli-muted-2)]"}),f.jsxs("span",{children:["Last heartbeat ",E0(e.last_seen_at)]})]})]})}),f.jsxs("div",{className:"mt-2 text-[10px] text-[var(--cli-muted-1)]",children:[e.status," · Last heartbeat ",N0(e.last_seen_at)]})]})}function M0({readOnly:e,onBind:t,collapsed:r,onToggleCollapse:n,tabs:i=[],activeTab:a,onTabChange:o}){const{t:s}=rr("cli"),l=Se(w=>w.servers),c=Se(w=>w.activeServerId),u=Se(w=>w.setActiveServer),d=Se(w=>w.refreshServers),m=h.useRef(null),[v,p]=h.useState(""),y=h.useMemo(()=>({total:l.length,online:l.filter(j=>j.status==="online").length,busy:l.filter(j=>j.status==="busy").length,offline:l.filter(j=>j.status==="offline").length}),[l]),g=h.useMemo(()=>{const w=v.trim().toLowerCase();return w?l.filter(j=>[j.name,j.hostname,j.ip_address].filter(Boolean).join(" ").toLowerCase().includes(w)):l},[v,l]),b=r?l:g,S=h.useMemo(()=>({online:"bg-[var(--cli-status-online)]",offline:"bg-[var(--cli-status-offline)]",error:"bg-[var(--cli-status-error)]",busy:"bg-[var(--cli-status-busy)]",idle:"bg-[var(--cli-status-idle)]",standalone:"bg-[var(--cli-status-idle)]"}),[]),x=w=>{if(i.length===0)return null;const j=w==="collapsed",_={overview:f0,methods:tx,terminal:am,files:im,logs:la,tasks:Qx,findings:ys,admin:y0};return f.jsx("div",{className:j?"mt-2 grid gap-2 px-2":"mt-3 grid grid-cols-4 gap-2",children:i.map(C=>{const N=C.value===a,E=_[C.value]??la,M=C.label;return f.jsxs("button",{type:"button",onClick:()=>o?.(C.value),"aria-pressed":N,title:C.label,className:`cli-focus-ring group relative flex items-center justify-center rounded-lg border px-2 py-1 text-[10px] font-semibold transition ${N?"border-[var(--cli-accent-amber)] bg-white/90 text-[var(--cli-ink-1)]":"border-white/60 bg-white/70 text-[var(--cli-muted-1)] hover:text-[var(--cli-ink-1)]"}`,children:[j?f.jsx(E,{className:"h-4 w-4"}):M,j?f.jsx("span",{className:"pointer-events-none absolute left-full top-1/2 ml-3 -translate-y-1/2 whitespace-nowrap rounded-lg border border-white/70 bg-white/90 px-2 py-1 text-[10px] text-[var(--cli-ink-1)] opacity-0 shadow-sm transition group-hover:opacity-100",children:M}):null]},C.value)})})};return h.useEffect(()=>{if(!m.current||b.length===0||typeof window>"u"||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;let j=!1;const C=m.current.querySelectorAll("[data-cli-server-card]");if(C.length!==0)return ml(async()=>{const{default:N}=await import("./index-wQ7RIIRd.js").then(E=>E.i);return{default:N}},__vite__mapDeps([0,1,2,3,4,5])).then(({default:N})=>{j||N({targets:C,opacity:[0,1],translateY:[10,0],delay:N.stagger(60),duration:520,easing:"easeOutCubic"})}).catch(()=>{}),()=>{j=!0}},[b]),r?f.jsxs("div",{className:"flex h-full flex-col items-center py-3",children:[f.jsx("button",{type:"button",className:"cli-focus-ring rounded-full border border-white/60 bg-white/70 p-2 text-[var(--cli-muted-1)] transition hover:text-[var(--cli-ink-1)]",onClick:()=>n?.(),title:s("expand"),"aria-label":s("expand_cli_console"),children:f.jsx(tm,{className:"h-4 w-4"})}),f.jsxs("div",{className:"mt-3 flex flex-col items-center gap-2",children:[f.jsx("button",{type:"button",className:"cli-focus-ring rounded-full border border-white/60 bg-white/70 p-2 text-[var(--cli-muted-1)] transition hover:text-[var(--cli-ink-1)]",onClick:()=>d(),title:s("refresh"),"aria-label":s("refresh_server_list"),children:f.jsx(Lt,{className:"h-3.5 w-3.5"})}),f.jsx("button",{type:"button",className:"cli-focus-ring rounded-full border border-white/60 bg-white/70 p-2 text-[var(--cli-muted-1)] transition hover:text-[var(--cli-ink-1)] disabled:opacity-50",onClick:()=>t?.(),title:s("bind_server"),"aria-label":s("bind_server"),disabled:e||!t,children:f.jsx(sa,{className:"h-3.5 w-3.5"})})]}),f.jsx(Hn,{className:"mt-3 flex-1 w-full px-2",children:f.jsxs("div",{ref:m,className:"flex flex-col items-center gap-2 pb-4",children:[b.map(w=>{const j=(w.name||w.hostname||"S").slice(0,2).toUpperCase();return f.jsxs("button",{type:"button","data-cli-server-card":!0,onClick:()=>u(w.id),"aria-pressed":w.id===c,title:w.name||w.hostname,className:`cli-focus-ring flex h-10 w-10 flex-col items-center justify-center gap-1 rounded-xl border border-white/50 text-[10px] font-semibold transition ${w.id===c?"bg-[var(--cli-accent-olive)] text-[var(--cli-ink-0)]":"bg-white/60 text-[var(--cli-muted-1)] hover:text-[var(--cli-ink-1)]"}`,children:[f.jsx("span",{className:`h-2 w-2 rounded-full ${S[w.status]||"bg-[var(--cli-status-idle)]"}`}),f.jsx("span",{children:j})]},w.id)}),b.length===0?f.jsx("div",{className:"text-center text-[10px] text-[var(--cli-muted-1)]",children:s("no_servers")}):null]})}),i.length>0?f.jsxs("div",{className:"w-full pb-2",children:[f.jsx("div",{className:"text-center text-[10px] text-[var(--cli-muted-1)]",children:"---"}),x("collapsed")]}):null]}):f.jsxs("div",{className:"flex h-full flex-col",children:[f.jsxs("div",{className:"px-4 py-3",children:[f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsxs("div",{children:[f.jsx("h3",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:s("cli_console")}),f.jsx("p",{className:"text-xs text-[var(--cli-muted-1)]",children:s("remote_hosts_live_agents")})]}),f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx("button",{type:"button",className:"cli-focus-ring rounded-full border border-white/60 bg-white/70 p-2 text-[var(--cli-muted-1)] transition hover:text-[var(--cli-ink-1)]",onClick:()=>n?.(),title:s("collapse"),"aria-label":s("collapse_cli_console"),children:f.jsx(rm,{className:"h-3.5 w-3.5"})}),f.jsx("button",{type:"button",className:"cli-focus-ring rounded-full border border-white/60 bg-white/70 p-2 text-[var(--cli-muted-1)] transition hover:text-[var(--cli-ink-1)]",onClick:()=>d(),title:s("refresh"),"aria-label":s("refresh_server_list"),children:f.jsx(Lt,{className:"h-3.5 w-3.5"})}),f.jsx(ex,{className:"rounded-full",children:f.jsxs(re,{size:"sm",className:"rounded-full",onClick:()=>t?.(),disabled:e||!t,children:[f.jsx(sa,{className:"mr-1 h-4 w-4"}),s("bind")]})})]})]}),f.jsx("div",{className:"mt-3",children:f.jsx(nm,{value:v,onChange:w=>p(w.target.value),placeholder:s("search_cli_servers_placeholder"),className:"h-9 text-xs","aria-label":s("search_cli_servers")})}),f.jsxs("div",{className:"mt-2 flex flex-wrap items-center gap-2 text-[10px] text-[var(--cli-muted-1)]",children:[f.jsx("span",{className:"rounded-full border border-white/40 bg-white/70 px-2 py-0.5",children:s("total",{count:y.total})}),f.jsx("span",{className:"rounded-full border border-white/40 bg-white/70 px-2 py-0.5",children:s("online",{count:y.online})}),y.busy>0?f.jsx("span",{className:"rounded-full border border-white/40 bg-white/70 px-2 py-0.5",children:s("busy_count",{count:y.busy})}):null,f.jsx("span",{className:"rounded-full border border-white/40 bg-white/70 px-2 py-0.5",children:s("offline_count",{count:y.offline})})]})]}),f.jsx(Hn,{className:"flex-1 px-4",children:f.jsxs("div",{ref:m,className:"space-y-3 pb-6",children:[b.map(w=>f.jsx(T0,{server:w,isActive:w.id===c,onSelect:()=>u(w.id)},w.id)),b.length===0?f.jsx("div",{className:"rounded-xl border border-dashed border-white/50 bg-white/40 p-4 text-center text-xs text-[var(--cli-muted-1)]",children:v.trim()?s("no_servers_match_search"):s(e?"no_servers_available_project":"no_servers_yet_bind")}):null]})}),i.length>0?f.jsxs("div",{className:"px-4 pb-4",children:[f.jsx("div",{className:"text-center text-[10px] text-[var(--cli-muted-1)]",children:"---"}),x("expanded")]}):null]})}class D0{state;maxScrollbackLines=1e4;maxSessionsPerServer=10;listeners=new Set;constructor(){this.state={sessions:new Map,activeSessionId:null}}createSession(t,r={}){const n=this.getSessionsByServer(t),i=r.id??crypto.randomUUID(),a=this.state.sessions.get(i);if(!a&&n.length>=this.maxSessionsPerServer)throw new Error(`Reached max sessions per server (${this.maxSessionsPerServer})`);const o=Date.now();if(a)return a.state="active",a.lastActiveAt=o,r.name&&(a.name=r.name),r.mode&&(a.mode=r.mode),r.cols&&(a.cols=r.cols),r.rows&&(a.rows=r.rows),r.cwd&&(a.cwd=r.cwd),r.cwdRel&&(a.cwdRel=r.cwdRel),r.condaEnv!==void 0&&(a.condaEnv=r.condaEnv),r.shell&&(a.shell=r.shell),this.state.activeSessionId=i,this.notifyListeners(),a;const s=n.length+1,l=L0(s),c={id:i,serverId:t,name:r.name??`${l} Session`,createdAt:o,state:"active",scrollback:[],lineBuffer:"",lastActiveAt:o,cols:r.cols??120,rows:r.rows??40,mode:r.mode??"terminal",cwd:r.cwd,cwdRel:r.cwdRel,condaEnv:r.condaEnv,shell:r.shell,env:r.env,serialized:r.serialized};return this.state.sessions.set(i,c),this.state.activeSessionId=i,this.notifyListeners(),c}restoreSession(t){const r=t.createdAt||Date.now(),n=t.lastActiveAt||r;this.state.sessions.set(t.id,{...t,createdAt:r,lastActiveAt:n,lineBuffer:"",mode:t.mode??"terminal"}),this.state.activeSessionId||(this.state.activeSessionId=t.id),this.notifyListeners()}getSessionsByServer(t,r){return Array.from(this.state.sessions.values()).filter(n=>n.serverId===t&&(r?.includeClosed||n.state!=="closed"))}getActiveSession(){return this.state.activeSessionId?this.state.sessions.get(this.state.activeSessionId)??null:null}getSession(t){return this.state.sessions.get(t)??null}switchSession(t,r){const n=this.state.sessions.get(t);return n&&(r?.allowClosed||n.state!=="closed")?(this.state.activeSessionId=t,n.state!=="closed"&&(n.lastActiveAt=Date.now()),this.notifyListeners(),n):null}detachSession(t){const r=this.state.sessions.get(t);return!r||r.state!=="active"?!1:(r.state="detached",this.notifyListeners(),!0)}attachSession(t){const r=this.state.sessions.get(t);return!r||r.state!=="detached"?null:(r.state="active",r.lastActiveAt=Date.now(),this.state.activeSessionId=t,this.notifyListeners(),r)}closeSession(t){const r=this.state.sessions.get(t);if(!r)return!1;if(r.state="closed",this.state.activeSessionId===t){const n=Array.from(this.state.sessions.values()).find(i=>i.state!=="closed");this.state.activeSessionId=n?n.id:null}return this.notifyListeners(),!0}removeSession(t){if(!this.state.sessions.get(t))return!1;if(this.state.sessions.delete(t),this.state.activeSessionId===t){const n=Array.from(this.state.sessions.values()),i=n.find(a=>a.state!=="closed")??n[0];this.state.activeSessionId=i?i.id:null}return this.notifyListeners(),!0}renameSession(t,r){const n=this.state.sessions.get(t);return n?(n.name=r,this.notifyListeners(),!0):!1}updateScrollback(t,r){const n=this.state.sessions.get(t);if(!n||!r)return;const i=`${n.lineBuffer??""}${r}`.replace(/\r\n/g,`
|
|
52
|
+
*/const w0=[["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"}]],S0=zt("wifi",w0);function bm(e,t){const r=hl(t()),n=()=>r.set(t());return n(),qb(()=>{const i=()=>Vb.preRender(n,!1,!0),a=e.map(o=>o.on("change",i));return()=>{a.forEach(o=>o()),Hb(n)}}),r}function j0(e){Go.current=[],e();const t=bm(Go.current,e);return Go.current=void 0,t}function _0(e,t,r,n){if(typeof e=="function")return j0(e);const a=Yb(t,r,n),o=Array.isArray(e)?bu(e,a):bu([e],([l])=>a(l)),s=Array.isArray(e)?void 0:e.accelerate;return s&&!s.isTransformed&&typeof t!="function"&&Array.isArray(r)&&n?.clamp!==!1&&(o.accelerate={...s,times:t,keyframes:r,isTransformed:!0}),o}function bu(e,t){const r=Gb(()=>[]);return bm(e,()=>{r.length=0;const n=e.length;for(let i=0;i<n;i++)r[i]=e[i].get();return t(r)})}function P0(e,t={}){const{isStatic:r}=h.useContext(Xb),n=()=>Qb(e)?e.get():e;if(r)return _0(n);const i=hl(n());return h.useInsertionEffect(()=>Zb(i,e,t),[i,JSON.stringify(t)]),i}function O0(e,t={}){return P0(e,{type:"spring",...t})}function C0({to:e,from:t=0,direction:r="up",delay:n=0,duration:i=2,className:a="",startWhen:o=!0,separator:s="",onStart:l,onEnd:c}){const u=h.useRef(null),d=hl(r==="down"?e:t),m=20+40*(1/i),v=100*(1/i),p=O0(d,{damping:m,stiffness:v}),y=Jb(u,{once:!0,margin:"0px"}),g=x=>{const w=x.toString();if(w.includes(".")){const j=w.split(".")[1];if(parseInt(j)!==0)return j.length}return 0},b=Math.max(g(t),g(e)),S=h.useCallback(x=>{const w=b>0,j={useGrouping:!!s,minimumFractionDigits:w?b:0,maximumFractionDigits:w?b:0},_=Intl.NumberFormat("en-US",j).format(x);return s?_.replace(/,/g,s):_},[b,s]);return h.useEffect(()=>{u.current&&(u.current.textContent=S(r==="down"?e:t))},[t,e,r,S]),h.useEffect(()=>{if(y&&o){typeof l=="function"&&l();const x=setTimeout(()=>{d.set(r==="down"?t:e)},n*1e3),w=setTimeout(()=>{typeof c=="function"&&c()},n*1e3+i*1e3);return()=>{clearTimeout(x),clearTimeout(w)}}},[y,o,d,r,t,e,n,l,c,i]),h.useEffect(()=>{const x=p.on("change",w=>{u.current&&(u.current.textContent=S(w))});return()=>x()},[p,S]),f.jsx("span",{className:a,ref:u})}function Di({children:e}){return f.jsx(f.Fragment,{children:e})}const Ii=(e,t)=>t<=0?1:Math.min(Math.max(e,1),t);function k0({initialStep:e=1,onStepChange:t,onFinalStepCompleted:r,backButtonText:n="Previous",nextButtonText:i="Next",nextDisabled:a,backDisabled:o,contentAnimation:s=!1,className:l,children:c}){const u=h.useMemo(()=>h.Children.toArray(c).filter($=>h.isValidElement($)),[c]),d=u.length,[m,v]=h.useState(()=>Ii(e,d)),p=h.useRef(m);h.useEffect(()=>{v(Ii(e,d))},[e,d]),h.useEffect(()=>{t?.(m)},[m,t]),h.useEffect(()=>{p.current=m},[m]);const y=($,k,q)=>typeof $=="function"?$(k,q):!!$,g=m>=d,b=y(a,m,d),S=y(o,m,d),x=m>1&&!S,w=typeof i=="function"?i(m,d):i,j=()=>{if(g){b||r?.();return}b||v($=>Ii($+1,d))},_=()=>{x&&v($=>Ii($-1,d))};if(d===0)return null;const C=u[m-1],N=C?.props?.title??`Step ${m}`,E=C?.props?.description,M=m>=p.current?"forward":"back";return f.jsxs("div",{className:Ae("stepper-root flex flex-col gap-5",l),children:[f.jsxs("div",{className:"stepper-header flex flex-wrap items-center justify-between gap-3",children:[f.jsx("div",{className:"flex flex-wrap items-center gap-3",children:u.map(($,k)=>{const q=k+1,F=q<m,K=q===m,G=$.props.title??`Step ${q}`;return f.jsxs("div",{className:"flex items-center gap-3",children:[f.jsx("div",{className:Ae("stepper-dot flex h-8 w-8 items-center justify-center rounded-full border text-xs font-semibold transition",F&&"border-transparent bg-[var(--cli-accent-olive)] text-[var(--cli-ink-0)]",K&&"border-[var(--cli-accent-olive)] bg-white/90 text-[var(--cli-ink-1)]",!F&&!K&&"border-white/60 bg-white/60 text-[var(--cli-muted-1)]"),"data-state":F?"complete":K?"active":"upcoming",children:F?f.jsx(em,{className:"h-4 w-4"}):q}),f.jsxs("div",{className:"flex flex-col",children:[f.jsxs("span",{className:"text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:["Step ",q]}),f.jsx("span",{className:Ae("text-xs font-semibold",K?"text-[var(--cli-ink-1)]":"text-[var(--cli-muted-1)]"),children:G})]}),k<d-1?f.jsx("div",{className:"h-px w-8 bg-white/60","aria-hidden":"true"}):null]},`${G}-${q}`)})}),f.jsxs("div",{className:"rounded-full border border-white/50 bg-white/80 px-3 py-1 text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:[m," / ",d]})]}),f.jsxs("div",{className:"stepper-content rounded-xl border border-white/40 bg-white/80 p-4","data-step":m,"data-direction":M,children:[f.jsxs("div",{className:"flex items-center justify-between gap-2",children:[f.jsxs("div",{children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:N}),E?f.jsx("div",{className:"text-xs text-[var(--cli-muted-1)]",children:E}):null]}),f.jsxs("span",{className:"rounded-full border border-white/60 bg-white/70 px-2 py-1 text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:["Step ",m]})]}),f.jsx("div",{className:"mt-4",children:C})]},s?`step-${m}`:"step-static"),f.jsxs("div",{className:"stepper-actions flex flex-wrap items-center justify-between gap-3",children:[f.jsx(re,{variant:"secondary",onClick:_,disabled:!x,children:n}),f.jsx(re,{onClick:j,disabled:b,children:w})]})]})}function gl(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}function A0(e,t){t===void 0&&(t=e,e=Qa);for(var r=0,n=t.length-1,i=t[0],a=new Array(n<0?0:n);r<n;)a[r]=e(i,i=t[++r]);return function(o){var s=Math.max(0,Math.min(n-1,Math.floor(o*=n)));return a[s](o-s)}}const xu={online:"bg-[var(--cli-status-online)]",offline:"bg-[var(--cli-status-offline)]",standalone:"bg-[var(--cli-status-idle)]",error:"bg-[var(--cli-status-error)]",idle:"bg-[var(--cli-status-idle)]",busy:"bg-[var(--cli-status-busy)]"};function N0(e){if(!e)return"n/a";const t=new Date(e);return Number.isNaN(t.getTime())?"n/a":t.toLocaleString()}function E0(e){if(!e)return"n/a";const t=new Date(e);if(Number.isNaN(t.getTime()))return"n/a";const r=Date.now()-t.getTime();return r<6e4?"just now":r<36e5?`${Math.round(r/6e4)}m ago`:r<864e5?`${Math.round(r/36e5)}h ago`:`${Math.round(r/864e5)}d ago`}function T0({server:e,isActive:t,onSelect:r}){const n=xu[e.status]||xu.offline;return f.jsxs("button",{"data-cli-server-card":!0,type:"button",onClick:r,"aria-pressed":t,className:Ae("cli-console-row group w-full rounded-lg border border-white/30 bg-white/50 px-3 py-2 text-left transition","hover:border-white/60 hover:bg-white/70",t&&"ring-2 ring-[var(--cli-accent-olive)]"),children:[f.jsx("div",{className:"flex items-start justify-between gap-3",children:f.jsxs("div",{className:"min-w-0",children:[f.jsxs("div",{className:"flex items-center gap-2 text-sm font-semibold text-[var(--cli-ink-1)]",children:[f.jsx("span",{className:Ae("h-2 w-2 rounded-full",n)}),f.jsx(vm,{className:"h-4 w-4 text-[var(--cli-muted-1)]"}),f.jsx("span",{className:"truncate max-w-[170px]",children:e.name||e.hostname})]}),f.jsxs("div",{className:"mt-1 flex flex-wrap items-center gap-2 text-[11px] text-[var(--cli-muted-1)]",children:[f.jsx("span",{className:"truncate max-w-[190px]",children:e.hostname}),f.jsx("span",{className:"h-1 w-1 rounded-full bg-[var(--cli-muted-2)]"}),f.jsx("span",{children:e.ip_address||"n/a"}),f.jsx("span",{className:"h-1 w-1 rounded-full bg-[var(--cli-muted-2)]"}),f.jsxs("span",{children:["Last heartbeat ",E0(e.last_seen_at)]})]})]})}),f.jsxs("div",{className:"mt-2 text-[10px] text-[var(--cli-muted-1)]",children:[e.status," · Last heartbeat ",N0(e.last_seen_at)]})]})}function M0({readOnly:e,onBind:t,collapsed:r,onToggleCollapse:n,tabs:i=[],activeTab:a,onTabChange:o}){const{t:s}=rr("cli"),l=Se(w=>w.servers),c=Se(w=>w.activeServerId),u=Se(w=>w.setActiveServer),d=Se(w=>w.refreshServers),m=h.useRef(null),[v,p]=h.useState(""),y=h.useMemo(()=>({total:l.length,online:l.filter(j=>j.status==="online").length,busy:l.filter(j=>j.status==="busy").length,offline:l.filter(j=>j.status==="offline").length}),[l]),g=h.useMemo(()=>{const w=v.trim().toLowerCase();return w?l.filter(j=>[j.name,j.hostname,j.ip_address].filter(Boolean).join(" ").toLowerCase().includes(w)):l},[v,l]),b=r?l:g,S=h.useMemo(()=>({online:"bg-[var(--cli-status-online)]",offline:"bg-[var(--cli-status-offline)]",error:"bg-[var(--cli-status-error)]",busy:"bg-[var(--cli-status-busy)]",idle:"bg-[var(--cli-status-idle)]",standalone:"bg-[var(--cli-status-idle)]"}),[]),x=w=>{if(i.length===0)return null;const j=w==="collapsed",_={overview:f0,methods:tx,terminal:am,files:im,logs:la,tasks:Qx,findings:ys,admin:y0};return f.jsx("div",{className:j?"mt-2 grid gap-2 px-2":"mt-3 grid grid-cols-4 gap-2",children:i.map(C=>{const N=C.value===a,E=_[C.value]??la,M=C.label;return f.jsxs("button",{type:"button",onClick:()=>o?.(C.value),"aria-pressed":N,title:C.label,className:`cli-focus-ring group relative flex items-center justify-center rounded-lg border px-2 py-1 text-[10px] font-semibold transition ${N?"border-[var(--cli-accent-amber)] bg-white/90 text-[var(--cli-ink-1)]":"border-white/60 bg-white/70 text-[var(--cli-muted-1)] hover:text-[var(--cli-ink-1)]"}`,children:[j?f.jsx(E,{className:"h-4 w-4"}):M,j?f.jsx("span",{className:"pointer-events-none absolute left-full top-1/2 ml-3 -translate-y-1/2 whitespace-nowrap rounded-lg border border-white/70 bg-white/90 px-2 py-1 text-[10px] text-[var(--cli-ink-1)] opacity-0 shadow-sm transition group-hover:opacity-100",children:M}):null]},C.value)})})};return h.useEffect(()=>{if(!m.current||b.length===0||typeof window>"u"||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;let j=!1;const C=m.current.querySelectorAll("[data-cli-server-card]");if(C.length!==0)return ml(async()=>{const{default:N}=await import("./index-CwNu1aH4.js").then(E=>E.i);return{default:N}},__vite__mapDeps([0,1,2,3,4,5])).then(({default:N})=>{j||N({targets:C,opacity:[0,1],translateY:[10,0],delay:N.stagger(60),duration:520,easing:"easeOutCubic"})}).catch(()=>{}),()=>{j=!0}},[b]),r?f.jsxs("div",{className:"flex h-full flex-col items-center py-3",children:[f.jsx("button",{type:"button",className:"cli-focus-ring rounded-full border border-white/60 bg-white/70 p-2 text-[var(--cli-muted-1)] transition hover:text-[var(--cli-ink-1)]",onClick:()=>n?.(),title:s("expand"),"aria-label":s("expand_cli_console"),children:f.jsx(tm,{className:"h-4 w-4"})}),f.jsxs("div",{className:"mt-3 flex flex-col items-center gap-2",children:[f.jsx("button",{type:"button",className:"cli-focus-ring rounded-full border border-white/60 bg-white/70 p-2 text-[var(--cli-muted-1)] transition hover:text-[var(--cli-ink-1)]",onClick:()=>d(),title:s("refresh"),"aria-label":s("refresh_server_list"),children:f.jsx(Lt,{className:"h-3.5 w-3.5"})}),f.jsx("button",{type:"button",className:"cli-focus-ring rounded-full border border-white/60 bg-white/70 p-2 text-[var(--cli-muted-1)] transition hover:text-[var(--cli-ink-1)] disabled:opacity-50",onClick:()=>t?.(),title:s("bind_server"),"aria-label":s("bind_server"),disabled:e||!t,children:f.jsx(sa,{className:"h-3.5 w-3.5"})})]}),f.jsx(Hn,{className:"mt-3 flex-1 w-full px-2",children:f.jsxs("div",{ref:m,className:"flex flex-col items-center gap-2 pb-4",children:[b.map(w=>{const j=(w.name||w.hostname||"S").slice(0,2).toUpperCase();return f.jsxs("button",{type:"button","data-cli-server-card":!0,onClick:()=>u(w.id),"aria-pressed":w.id===c,title:w.name||w.hostname,className:`cli-focus-ring flex h-10 w-10 flex-col items-center justify-center gap-1 rounded-xl border border-white/50 text-[10px] font-semibold transition ${w.id===c?"bg-[var(--cli-accent-olive)] text-[var(--cli-ink-0)]":"bg-white/60 text-[var(--cli-muted-1)] hover:text-[var(--cli-ink-1)]"}`,children:[f.jsx("span",{className:`h-2 w-2 rounded-full ${S[w.status]||"bg-[var(--cli-status-idle)]"}`}),f.jsx("span",{children:j})]},w.id)}),b.length===0?f.jsx("div",{className:"text-center text-[10px] text-[var(--cli-muted-1)]",children:s("no_servers")}):null]})}),i.length>0?f.jsxs("div",{className:"w-full pb-2",children:[f.jsx("div",{className:"text-center text-[10px] text-[var(--cli-muted-1)]",children:"---"}),x("collapsed")]}):null]}):f.jsxs("div",{className:"flex h-full flex-col",children:[f.jsxs("div",{className:"px-4 py-3",children:[f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsxs("div",{children:[f.jsx("h3",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:s("cli_console")}),f.jsx("p",{className:"text-xs text-[var(--cli-muted-1)]",children:s("remote_hosts_live_agents")})]}),f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx("button",{type:"button",className:"cli-focus-ring rounded-full border border-white/60 bg-white/70 p-2 text-[var(--cli-muted-1)] transition hover:text-[var(--cli-ink-1)]",onClick:()=>n?.(),title:s("collapse"),"aria-label":s("collapse_cli_console"),children:f.jsx(rm,{className:"h-3.5 w-3.5"})}),f.jsx("button",{type:"button",className:"cli-focus-ring rounded-full border border-white/60 bg-white/70 p-2 text-[var(--cli-muted-1)] transition hover:text-[var(--cli-ink-1)]",onClick:()=>d(),title:s("refresh"),"aria-label":s("refresh_server_list"),children:f.jsx(Lt,{className:"h-3.5 w-3.5"})}),f.jsx(ex,{className:"rounded-full",children:f.jsxs(re,{size:"sm",className:"rounded-full",onClick:()=>t?.(),disabled:e||!t,children:[f.jsx(sa,{className:"mr-1 h-4 w-4"}),s("bind")]})})]})]}),f.jsx("div",{className:"mt-3",children:f.jsx(nm,{value:v,onChange:w=>p(w.target.value),placeholder:s("search_cli_servers_placeholder"),className:"h-9 text-xs","aria-label":s("search_cli_servers")})}),f.jsxs("div",{className:"mt-2 flex flex-wrap items-center gap-2 text-[10px] text-[var(--cli-muted-1)]",children:[f.jsx("span",{className:"rounded-full border border-white/40 bg-white/70 px-2 py-0.5",children:s("total",{count:y.total})}),f.jsx("span",{className:"rounded-full border border-white/40 bg-white/70 px-2 py-0.5",children:s("online",{count:y.online})}),y.busy>0?f.jsx("span",{className:"rounded-full border border-white/40 bg-white/70 px-2 py-0.5",children:s("busy_count",{count:y.busy})}):null,f.jsx("span",{className:"rounded-full border border-white/40 bg-white/70 px-2 py-0.5",children:s("offline_count",{count:y.offline})})]})]}),f.jsx(Hn,{className:"flex-1 px-4",children:f.jsxs("div",{ref:m,className:"space-y-3 pb-6",children:[b.map(w=>f.jsx(T0,{server:w,isActive:w.id===c,onSelect:()=>u(w.id)},w.id)),b.length===0?f.jsx("div",{className:"rounded-xl border border-dashed border-white/50 bg-white/40 p-4 text-center text-xs text-[var(--cli-muted-1)]",children:v.trim()?s("no_servers_match_search"):s(e?"no_servers_available_project":"no_servers_yet_bind")}):null]})}),i.length>0?f.jsxs("div",{className:"px-4 pb-4",children:[f.jsx("div",{className:"text-center text-[10px] text-[var(--cli-muted-1)]",children:"---"}),x("expanded")]}):null]})}class D0{state;maxScrollbackLines=1e4;maxSessionsPerServer=10;listeners=new Set;constructor(){this.state={sessions:new Map,activeSessionId:null}}createSession(t,r={}){const n=this.getSessionsByServer(t),i=r.id??crypto.randomUUID(),a=this.state.sessions.get(i);if(!a&&n.length>=this.maxSessionsPerServer)throw new Error(`Reached max sessions per server (${this.maxSessionsPerServer})`);const o=Date.now();if(a)return a.state="active",a.lastActiveAt=o,r.name&&(a.name=r.name),r.mode&&(a.mode=r.mode),r.cols&&(a.cols=r.cols),r.rows&&(a.rows=r.rows),r.cwd&&(a.cwd=r.cwd),r.cwdRel&&(a.cwdRel=r.cwdRel),r.condaEnv!==void 0&&(a.condaEnv=r.condaEnv),r.shell&&(a.shell=r.shell),this.state.activeSessionId=i,this.notifyListeners(),a;const s=n.length+1,l=L0(s),c={id:i,serverId:t,name:r.name??`${l} Session`,createdAt:o,state:"active",scrollback:[],lineBuffer:"",lastActiveAt:o,cols:r.cols??120,rows:r.rows??40,mode:r.mode??"terminal",cwd:r.cwd,cwdRel:r.cwdRel,condaEnv:r.condaEnv,shell:r.shell,env:r.env,serialized:r.serialized};return this.state.sessions.set(i,c),this.state.activeSessionId=i,this.notifyListeners(),c}restoreSession(t){const r=t.createdAt||Date.now(),n=t.lastActiveAt||r;this.state.sessions.set(t.id,{...t,createdAt:r,lastActiveAt:n,lineBuffer:"",mode:t.mode??"terminal"}),this.state.activeSessionId||(this.state.activeSessionId=t.id),this.notifyListeners()}getSessionsByServer(t,r){return Array.from(this.state.sessions.values()).filter(n=>n.serverId===t&&(r?.includeClosed||n.state!=="closed"))}getActiveSession(){return this.state.activeSessionId?this.state.sessions.get(this.state.activeSessionId)??null:null}getSession(t){return this.state.sessions.get(t)??null}switchSession(t,r){const n=this.state.sessions.get(t);return n&&(r?.allowClosed||n.state!=="closed")?(this.state.activeSessionId=t,n.state!=="closed"&&(n.lastActiveAt=Date.now()),this.notifyListeners(),n):null}detachSession(t){const r=this.state.sessions.get(t);return!r||r.state!=="active"?!1:(r.state="detached",this.notifyListeners(),!0)}attachSession(t){const r=this.state.sessions.get(t);return!r||r.state!=="detached"?null:(r.state="active",r.lastActiveAt=Date.now(),this.state.activeSessionId=t,this.notifyListeners(),r)}closeSession(t){const r=this.state.sessions.get(t);if(!r)return!1;if(r.state="closed",this.state.activeSessionId===t){const n=Array.from(this.state.sessions.values()).find(i=>i.state!=="closed");this.state.activeSessionId=n?n.id:null}return this.notifyListeners(),!0}removeSession(t){if(!this.state.sessions.get(t))return!1;if(this.state.sessions.delete(t),this.state.activeSessionId===t){const n=Array.from(this.state.sessions.values()),i=n.find(a=>a.state!=="closed")??n[0];this.state.activeSessionId=i?i.id:null}return this.notifyListeners(),!0}renameSession(t,r){const n=this.state.sessions.get(t);return n?(n.name=r,this.notifyListeners(),!0):!1}updateScrollback(t,r){const n=this.state.sessions.get(t);if(!n||!r)return;const i=`${n.lineBuffer??""}${r}`.replace(/\r\n/g,`
|
|
53
53
|
`).replace(/\r/g,`
|
|
54
54
|
`),a=i.split(`
|
|
55
55
|
`);let o="";i.endsWith(`
|
|
@@ -106,4 +106,4 @@ ds-cli start --ws-url ${m}`:"";return f.jsx(si,{open:e,onOpenChange:t,children:f
|
|
|
106
106
|
`).concat(w.x,",").concat(w.y),_=$e(e.id)?Vn("recharts-radial-line-"):e.id;return h.createElement("text",Kt({},n,{dominantBaseline:"central",className:ve("recharts-radial-bar-label",o)}),h.createElement("defs",null,h.createElement("path",{id:_,d:j})),h.createElement("textPath",{xlinkHref:"#".concat(_)},r))},jT=(e,t,r)=>{var{cx:n,cy:i,innerRadius:a,outerRadius:o,startAngle:s,endAngle:l}=e,c=(s+l)/2;if(r==="outside"){var{x:u,y:d}=qe(n,i,o+t,c);return{x:u,y:d,textAnchor:u>=n?"start":"end",verticalAnchor:"middle"}}if(r==="center")return{x:n,y:i,textAnchor:"middle",verticalAnchor:"middle"};if(r==="centerTop")return{x:n,y:i,textAnchor:"middle",verticalAnchor:"start"};if(r==="centerBottom")return{x:n,y:i,textAnchor:"middle",verticalAnchor:"end"};var m=(a+o)/2,{x:v,y:p}=qe(n,i,m,c);return{x:v,y:p,textAnchor:"middle",verticalAnchor:"middle"}},ra=e=>e!=null&&"cx"in e&&Q(e.cx),_T={angle:0,offset:5,zIndex:it.label,position:"middle",textBreakAll:!1};function PT(e){if(!ra(e))return e;var{cx:t,cy:r,outerRadius:n}=e,i=n*2;return{x:t-n,y:r-n,width:i,upperWidth:i,lowerWidth:i,height:i}}function fr(e){var t=dt(e,_T),{viewBox:r,parentViewBox:n,position:i,value:a,children:o,content:s,className:l="",textBreakAll:c,labelRef:u}=t,d=bT(),m=Gy(),v=i==="center"?m:d??m,p,y,g;r==null?p=v:ra(r)?p=r:p=Wl(r);var b=PT(p);if(!p||$e(a)&&$e(o)&&!h.isValidElement(s)&&typeof s!="function")return null;var S=Kn(Kn({},t),{},{viewBox:p});if(h.isValidElement(s)){var{labelRef:x}=S,w=dh(S,dT);return h.cloneElement(s,w)}if(typeof s=="function"){var{content:j}=S,_=dh(S,fT);if(y=h.createElement(s,_),h.isValidElement(y))return y}else y=xT(t);var C=Je(t);if(ra(p)){if(i==="insideStart"||i==="insideEnd"||i==="end")return ST(t,i,y,C,p);g=jT(p,t.offset,t.position)}else{if(!b)return null;var N=uT({viewBox:b,position:i,offset:t.offset,parentViewBox:ra(n)?void 0:n});g=Kn(Kn({x:N.x,y:N.y,textAnchor:N.horizontalAnchor,verticalAnchor:N.verticalAnchor},N.width!==void 0?{width:N.width}:{}),N.height!==void 0?{height:N.height}:{})}return h.createElement(Sr,{zIndex:t.zIndex},h.createElement(Hc,Kt({ref:u,className:ve("recharts-label",l)},C,g,{textAnchor:Ky(C.textAnchor)?C.textAnchor:g.textAnchor,breakAll:c}),y))}fr.displayName="Label";var OT=(e,t,r)=>{if(!e)return null;var n={viewBox:t,labelRef:r};return e===!0?h.createElement(fr,Kt({key:"label-implicit"},n)):Rt(e)?h.createElement(fr,Kt({key:"label-implicit",value:e},n)):h.isValidElement(e)?e.type===fr?h.cloneElement(e,Kn({key:"label-implicit"},n)):h.createElement(fr,Kt({key:"label-implicit",content:e},n)):Vc(e)?h.createElement(fr,Kt({key:"label-implicit",content:e},n)):e&&typeof e=="object"?h.createElement(fr,Kt({},e,{key:"label-implicit"},n)):null};function CT(e){var{label:t,labelRef:r}=e,n=Gy();return OT(t,n,r)||null}var kT=["valueAccessor"],AT=["dataKey","clockWise","id","textBreakAll","zIndex"];function Ha(){return Ha=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Ha.apply(null,arguments)}function hh(e,t){if(e==null)return{};var r,n,i=NT(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)===-1&&{}.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function NT(e,t){if(e==null)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.indexOf(n)!==-1)continue;r[n]=e[n]}return r}var ET=e=>{var t=Array.isArray(e.value)?e.value[e.value.length-1]:e.value;if(rT(t))return t},Xy=h.createContext(void 0),TT=Xy.Provider,Zy=h.createContext(void 0);Zy.Provider;function MT(){return h.useContext(Xy)}function DT(){return h.useContext(Zy)}function na(e){var{valueAccessor:t=ET}=e,r=hh(e,kT),{dataKey:n,clockWise:i,id:a,textBreakAll:o,zIndex:s}=r,l=hh(r,AT),c=MT(),u=DT(),d=c||u;return!d||!d.length?null:h.createElement(Sr,{zIndex:s??it.label},h.createElement(Gt,{className:"recharts-label-list"},d.map((m,v)=>{var p,y=$e(n)?t(m,v):He(m.payload,n),g=$e(a)?{}:{id:"".concat(a,"-").concat(v)};return h.createElement(fr,Ha({key:"label-".concat(v)},Je(m),l,g,{fill:(p=r.fill)!==null&&p!==void 0?p:m.fill,parentViewBox:m.parentViewBox,value:y,textBreakAll:o,viewBox:m.viewBox,index:v,zIndex:0}))})))}na.displayName="LabelList";function IT(e){var{label:t}=e;return t?t===!0?h.createElement(na,{key:"labelList-implicit"}):h.isValidElement(t)||Vc(t)?h.createElement(na,{key:"labelList-implicit",content:t}):typeof t=="object"?h.createElement(na,Ha({key:"labelList-implicit"},t,{type:String(t.type)})):null:null}function ol(){return ol=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},ol.apply(null,arguments)}var Qy=e=>{var{cx:t,cy:r,r:n,className:i}=e,a=ve("recharts-dot",i);return Q(t)&&Q(r)&&Q(n)?h.createElement("circle",ol({},Yt(e),_l(e),{className:a,cx:t,cy:r,r:n})):null},LT={radiusAxis:{},angleAxis:{}},Jy=Xe({name:"polarAxis",initialState:LT,reducers:{addRadiusAxis(e,t){e.radiusAxis[t.payload.id]=t.payload},removeRadiusAxis(e,t){delete e.radiusAxis[t.payload.id]},addAngleAxis(e,t){e.angleAxis[t.payload.id]=t.payload},removeAngleAxis(e,t){delete e.angleAxis[t.payload.id]}}}),{addRadiusAxis:PL,removeRadiusAxis:OL,addAngleAxis:CL,removeAngleAxis:kL}=Jy.actions,RT=Jy.reducer;function $T(e){return e&&typeof e=="object"&&"className"in e&&typeof e.className=="string"?e.className:""}var eb=e=>e&&typeof e=="object"&&"clipDot"in e?!!e.clipDot:!0,tb={};(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(r){if(typeof r!="object"||r==null)return!1;if(Object.getPrototypeOf(r)===null)return!0;if(Object.prototype.toString.call(r)!=="[object Object]"){const i=r[Symbol.toStringTag];return i==null||!Object.getOwnPropertyDescriptor(r,Symbol.toStringTag)?.writable?!1:r.toString()===`[object ${i}]`}let n=r;for(;Object.getPrototypeOf(n)!==null;)n=Object.getPrototypeOf(n);return Object.getPrototypeOf(r)===n}e.isPlainObject=t})(tb);var zT=tb.isPlainObject;const BT=Yr(zT);var mh,vh,ph,gh,yh;function bh(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function xh(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?bh(Object(r),!0).forEach(function(n){FT(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):bh(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function FT(e,t,r){return(t=UT(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function UT(e){var t=WT(e,"string");return typeof t=="symbol"?t:t+""}function WT(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Va(){return Va=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Va.apply(null,arguments)}function zn(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var wh=(e,t,r,n,i)=>{var a=r-n,o;return o=Ce(mh||(mh=zn(["M ",",",""])),e,t),o+=Ce(vh||(vh=zn(["L ",",",""])),e+r,t),o+=Ce(ph||(ph=zn(["L ",",",""])),e+r-a/2,t+i),o+=Ce(gh||(gh=zn(["L ",",",""])),e+r-a/2-n,t+i),o+=Ce(yh||(yh=zn(["L ",","," Z"])),e,t),o},KT={x:0,y:0,upperWidth:0,lowerWidth:0,height:0,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},qT=e=>{var t=dt(e,KT),{x:r,y:n,upperWidth:i,lowerWidth:a,height:o,className:s}=t,{animationEasing:l,animationDuration:c,animationBegin:u,isUpdateAnimationActive:d}=t,m=h.useRef(null),[v,p]=h.useState(-1),y=h.useRef(i),g=h.useRef(a),b=h.useRef(o),S=h.useRef(r),x=h.useRef(n),w=Vl(e,"trapezoid-");if(h.useEffect(()=>{if(m.current&&m.current.getTotalLength)try{var F=m.current.getTotalLength();F&&p(F)}catch{}},[]),r!==+r||n!==+n||i!==+i||a!==+a||o!==+o||i===0&&a===0||o===0)return null;var j=ve("recharts-trapezoid",s);if(!d)return h.createElement("g",null,h.createElement("path",Va({},Je(t),{className:j,d:wh(r,n,i,a,o)})));var _=y.current,C=g.current,N=b.current,E=S.current,M=x.current,$="0px ".concat(v===-1?1:v,"px"),k="".concat(v,"px ").concat(v,"px"),q=yp(["strokeDasharray"],c,l);return h.createElement(Hl,{animationId:w,key:w,canBegin:v>0,duration:c,easing:l,isActive:d,begin:u},F=>{var K=nt(_,i,F),G=nt(C,a,F),ne=nt(N,o,F),ee=nt(E,r,F),Z=nt(M,n,F);m.current&&(y.current=K,g.current=G,b.current=ne,S.current=ee,x.current=Z);var te=F>0?{transition:q,strokeDasharray:k}:{strokeDasharray:$};return h.createElement("path",Va({},Je(t),{className:j,d:wh(ee,Z,K,G,ne),ref:m,style:xh(xh({},te),t.style)}))})},HT=["option","shapeType","activeClassName","inActiveClassName"];function VT(e,t){if(e==null)return{};var r,n,i=YT(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)===-1&&{}.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function YT(e,t){if(e==null)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.indexOf(n)!==-1)continue;r[n]=e[n]}return r}function Sh(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function Ya(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Sh(Object(r),!0).forEach(function(n){GT(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Sh(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function GT(e,t,r){return(t=XT(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function XT(e){var t=ZT(e,"string");return typeof t=="symbol"?t:t+""}function ZT(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function QT(e,t){return Ya(Ya({},t),e)}function JT(e,t){return e==="symbols"}function jh(e){var{shapeType:t,elementProps:r}=e;switch(t){case"rectangle":return h.createElement(Sp,r);case"trapezoid":return h.createElement(qT,r);case"sector":return h.createElement(Pp,r);case"symbols":if(JT(t))return h.createElement(Gm,r);break;case"curve":return h.createElement(gp,r);default:return null}}function eM(e){return h.isValidElement(e)?e.props:e}function tM(e){var{option:t,shapeType:r,activeClassName:n="recharts-active-shape",inActiveClassName:i="recharts-shape"}=e,a=VT(e,HT),o;if(h.isValidElement(t))o=h.cloneElement(t,Ya(Ya({},a),eM(t)));else if(typeof t=="function")o=t(a,a.index);else if(BT(t)&&typeof t!="boolean"){var s=QT(t,a);o=h.createElement(jh,{shapeType:r,elementProps:s})}else{var l=a;o=h.createElement(jh,{shapeType:r,elementProps:l})}return a.isActive?h.createElement(Gt,{className:n},o):h.createElement(Gt,{className:i},o)}function rM(e){var{tooltipEntrySettings:t}=e,r=Ee(),n=ft(),i=h.useRef(null);return h.useLayoutEffect(()=>{n||(i.current===null?r(vA(t)):i.current!==t&&r(pA({prev:i.current,next:t})),i.current=t)},[t,r,n]),h.useLayoutEffect(()=>()=>{i.current&&(r(gA(i.current)),i.current=null)},[r]),null}function nM(e){var{legendPayload:t}=e,r=Ee(),n=ft(),i=h.useRef(null);return h.useLayoutEffect(()=>{n||(i.current===null?r(Bj(t)):i.current!==t&&r(Fj({prev:i.current,next:t})),i.current=t)},[r,n,t]),h.useLayoutEffect(()=>()=>{i.current&&(r(Uj(i.current)),i.current=null)},[r]),null}var fs,iM=()=>{var[e]=h.useState(()=>Vn("uid-"));return e},aM=(fs=Fx.useId)!==null&&fs!==void 0?fs:iM;function oM(e,t){var r=aM();return t||(e?"".concat(e,"-").concat(r):r)}var sM=h.createContext(void 0),lM=e=>{var{id:t,type:r,children:n}=e,i=oM("recharts-".concat(r),t);return h.createElement(sM.Provider,{value:i},n(i))},cM={cartesianItems:[],polarItems:[]},rb=Xe({name:"graphicalItems",initialState:cM,reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(t.payload)},prepare:be()},replaceCartesianGraphicalItem:{reducer(e,t){var{prev:r,next:n}=t.payload,i=gt(e).cartesianItems.indexOf(r);i>-1&&(e.cartesianItems[i]=n)},prepare:be()},removeCartesianGraphicalItem:{reducer(e,t){var r=gt(e).cartesianItems.indexOf(t.payload);r>-1&&e.cartesianItems.splice(r,1)},prepare:be()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(t.payload)},prepare:be()},removePolarGraphicalItem:{reducer(e,t){var r=gt(e).polarItems.indexOf(t.payload);r>-1&&e.polarItems.splice(r,1)},prepare:be()},replacePolarGraphicalItem:{reducer(e,t){var{prev:r,next:n}=t.payload,i=gt(e).polarItems.indexOf(r);i>-1&&(e.polarItems[i]=n)},prepare:be()}}}),{addCartesianGraphicalItem:uM,replaceCartesianGraphicalItem:dM,removeCartesianGraphicalItem:fM,addPolarGraphicalItem:AL,removePolarGraphicalItem:NL,replacePolarGraphicalItem:EL}=rb.actions,hM=rb.reducer,mM=e=>{var t=Ee(),r=h.useRef(null);return h.useLayoutEffect(()=>{r.current===null?t(uM(e)):r.current!==e&&t(dM({prev:r.current,next:e})),r.current=e},[t,e]),h.useLayoutEffect(()=>()=>{r.current&&(t(fM(r.current)),r.current=null)},[t]),null},vM=h.memo(mM),pM=["points"];function _h(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function hs(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?_h(Object(r),!0).forEach(function(n){gM(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):_h(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function gM(e,t,r){return(t=yM(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function yM(e){var t=bM(e,"string");return typeof t=="symbol"?t:t+""}function bM(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Ga(){return Ga=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Ga.apply(null,arguments)}function xM(e,t){if(e==null)return{};var r,n,i=wM(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)===-1&&{}.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function wM(e,t){if(e==null)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.indexOf(n)!==-1)continue;r[n]=e[n]}return r}function SM(e){var{option:t,dotProps:r,className:n}=e;if(h.isValidElement(t))return h.cloneElement(t,r);if(typeof t=="function")return t(r);var i=ve(n,typeof t!="boolean"?t.className:""),a=r??{},{points:o}=a,s=xM(a,pM);return h.createElement(Qy,Ga({},s,{className:i}))}function jM(e,t){return e==null?!1:t?!0:e.length===1}function _M(e){var{points:t,dot:r,className:n,dotClassName:i,dataKey:a,baseProps:o,needClip:s,clipPathId:l,zIndex:c=it.scatter}=e;if(!jM(t,r))return null;var u=eb(r),d=dw(r),m=t.map((p,y)=>{var g,b,S=hs(hs(hs({r:3},o),d),{},{index:y,cx:(g=p.x)!==null&&g!==void 0?g:void 0,cy:(b=p.y)!==null&&b!==void 0?b:void 0,dataKey:a,value:p.value,payload:p.payload,points:t});return h.createElement(SM,{key:"dot-".concat(y),option:r,dotProps:S,className:i})}),v={};return s&&l!=null&&(v.clipPath="url(#clipPath-".concat(u?"":"dots-").concat(l,")")),h.createElement(Sr,{zIndex:c},h.createElement(Gt,Ga({className:n},v),m))}function Ph(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function Oh(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Ph(Object(r),!0).forEach(function(n){PM(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ph(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function PM(e,t,r){return(t=OM(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function OM(e){var t=CM(e,"string");return typeof t=="symbol"?t:t+""}function CM(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var kM={xAxis:{},yAxis:{},zAxis:{}},nb=Xe({name:"cartesianAxis",initialState:kM,reducers:{addXAxis:{reducer(e,t){e.xAxis[t.payload.id]=t.payload},prepare:be()},replaceXAxis:{reducer(e,t){var{prev:r,next:n}=t.payload;e.xAxis[r.id]!==void 0&&(r.id!==n.id&&delete e.xAxis[r.id],e.xAxis[n.id]=n)},prepare:be()},removeXAxis:{reducer(e,t){delete e.xAxis[t.payload.id]},prepare:be()},addYAxis:{reducer(e,t){e.yAxis[t.payload.id]=t.payload},prepare:be()},replaceYAxis:{reducer(e,t){var{prev:r,next:n}=t.payload;e.yAxis[r.id]!==void 0&&(r.id!==n.id&&delete e.yAxis[r.id],e.yAxis[n.id]=n)},prepare:be()},removeYAxis:{reducer(e,t){delete e.yAxis[t.payload.id]},prepare:be()},addZAxis:{reducer(e,t){e.zAxis[t.payload.id]=t.payload},prepare:be()},replaceZAxis:{reducer(e,t){var{prev:r,next:n}=t.payload;e.zAxis[r.id]!==void 0&&(r.id!==n.id&&delete e.zAxis[r.id],e.zAxis[n.id]=n)},prepare:be()},removeZAxis:{reducer(e,t){delete e.zAxis[t.payload.id]},prepare:be()},updateYAxisWidth(e,t){var{id:r,width:n}=t.payload,i=e.yAxis[r];if(i){var a,o=i.widthHistory||[];if(o.length===3&&o[0]===o[2]&&n===o[1]&&n!==i.width&&Math.abs(n-((a=o[0])!==null&&a!==void 0?a:0))<=1)return;var s=[...o,n].slice(-3);e.yAxis[r]=Oh(Oh({},i),{},{width:n,widthHistory:s})}}}}),{addXAxis:AM,replaceXAxis:NM,removeXAxis:EM,addYAxis:TM,replaceYAxis:MM,removeYAxis:DM,addZAxis:TL,replaceZAxis:ML,removeZAxis:DL,updateYAxisWidth:IM}=nb.actions,LM=nb.reducer,RM=A([Ve],e=>({top:e.top,bottom:e.bottom,left:e.left,right:e.right})),$M=A([RM,ir,ar],(e,t,r)=>{if(!(!e||t==null||r==null))return{x:e.left,y:e.top,width:Math.max(0,t-e.left-e.right),height:Math.max(0,r-e.top-e.bottom)}}),Yc=()=>J($M),zM=()=>J(vN);function Ch(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function ms(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Ch(Object(r),!0).forEach(function(n){BM(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ch(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function BM(e,t,r){return(t=FM(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function FM(e){var t=UM(e,"string");return typeof t=="symbol"?t:t+""}function UM(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var WM=e=>{var{point:t,childIndex:r,mainColor:n,activeDot:i,dataKey:a,clipPath:o}=e;if(i===!1||t.x==null||t.y==null)return null;var s={index:r,dataKey:a,cx:t.x,cy:t.y,r:4,fill:n??"none",strokeWidth:2,stroke:"#fff",payload:t.payload,value:t.value},l=ms(ms(ms({},s),Ja(i)),_l(i)),c;return h.isValidElement(i)?c=h.cloneElement(i,l):typeof i=="function"?c=i(l):c=h.createElement(Qy,l),h.createElement(Gt,{className:"recharts-active-dot",clipPath:o},c)};function KM(e){var{points:t,mainColor:r,activeDot:n,itemDataKey:i,clipPath:a,zIndex:o=it.activeDot}=e,s=J(ni),l=zM();if(t==null||l==null)return null;var c=t.find(u=>l.includes(u.payload));return $e(c)?null:h.createElement(Sr,{zIndex:o},h.createElement(WM,{point:c,childIndex:Number(s),mainColor:r,dataKey:i,activeDot:n,clipPath:a}))}var qM=e=>{var{chartData:t}=e,r=Ee(),n=ft();return h.useEffect(()=>n?()=>{}:(r(Gf(t)),()=>{r(Gf(void 0))}),[t,r,n]),null},kh={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},ib=Xe({name:"brush",initialState:kh,reducers:{setBrushSettings(e,t){return t.payload==null?kh:t.payload}}}),{setBrushSettings:IL}=ib.actions,HM=ib.reducer;function VM(e){return(e%180+180)%180}var YM=function(t){var{width:r,height:n}=t,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=VM(i),o=a*Math.PI/180,s=Math.atan(n/r),l=o>s&&o<Math.PI-s?n/Math.sin(o):r/Math.cos(o);return Math.abs(l)},GM={dots:[],areas:[],lines:[]},ab=Xe({name:"referenceElements",initialState:GM,reducers:{addDot:(e,t)=>{e.dots.push(t.payload)},removeDot:(e,t)=>{var r=gt(e).dots.findIndex(n=>n===t.payload);r!==-1&&e.dots.splice(r,1)},addArea:(e,t)=>{e.areas.push(t.payload)},removeArea:(e,t)=>{var r=gt(e).areas.findIndex(n=>n===t.payload);r!==-1&&e.areas.splice(r,1)},addLine:(e,t)=>{e.lines.push(t.payload)},removeLine:(e,t)=>{var r=gt(e).lines.findIndex(n=>n===t.payload);r!==-1&&e.lines.splice(r,1)}}}),{addDot:LL,removeDot:RL,addArea:$L,removeArea:zL,addLine:BL,removeLine:FL}=ab.actions,XM=ab.reducer,ZM=h.createContext(void 0),QM=e=>{var{children:t}=e,[r]=h.useState("".concat(Vn("recharts"),"-clip")),n=Yc();if(n==null)return null;var{x:i,y:a,width:o,height:s}=n;return h.createElement(ZM.Provider,{value:r},h.createElement("defs",null,h.createElement("clipPath",{id:r},h.createElement("rect",{x:i,y:a,height:s,width:o}))),t)};function ob(e,t){if(t<1)return[];if(t===1)return e;for(var r=[],n=0;n<e.length;n+=t){var i=e[n];i!==void 0&&r.push(i)}return r}function JM(e,t,r){var n={width:e.width+t.width,height:e.height+t.height};return YM(n,r)}function e2(e,t,r){var n=r==="width",{x:i,y:a,width:o,height:s}=e;return t===1?{start:n?i:a,end:n?i+o:a+s}:{start:n?i+o:a+s,end:n?i:a}}function ai(e,t,r,n,i){if(e*t<e*n||e*t>e*i)return!1;var a=r();return e*(t-e*a/2-n)>=0&&e*(t+e*a/2-i)<=0}function t2(e,t){return ob(e,t+1)}function r2(e,t,r,n,i){for(var a=(n||[]).slice(),{start:o,end:s}=t,l=0,c=1,u=o,d=function(){var p=n?.[l];if(p===void 0)return{v:ob(n,c)};var y=l,g,b=()=>(g===void 0&&(g=r(p,y)),g),S=p.coordinate,x=l===0||ai(e,S,b,u,s);x||(l=0,u=o,c+=1),x&&(u=S+e*(b()/2+i),l+=c)},m;c<=a.length;)if(m=d(),m)return m.v;return[]}function n2(e,t,r,n,i){var a=(n||[]).slice(),o=a.length;if(o===0)return[];for(var{start:s,end:l}=t,c=1;c<=o;c++){for(var u=(o-1)%c,d=s,m=!0,v=function(){var w=n[y];if(w==null)return 0;var j=y,_,C=()=>(_===void 0&&(_=r(w,j)),_),N=w.coordinate,E=y===u||ai(e,N,C,d,l);if(!E)return m=!1,1;E&&(d=N+e*(C()/2+i))},p,y=u;y<o&&(p=v(),!(p!==0&&p===1));y+=c);if(m){for(var g=[],b=u;b<o;b+=c){var S=n[b];S!=null&&g.push(S)}return g}}return[]}function Ah(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function Ye(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Ah(Object(r),!0).forEach(function(n){i2(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ah(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function i2(e,t,r){return(t=a2(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a2(e){var t=o2(e,"string");return typeof t=="symbol"?t:t+""}function o2(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function s2(e,t,r,n,i){for(var a=(n||[]).slice(),o=a.length,{start:s}=t,{end:l}=t,c=function(m){var v=a[m];if(v==null)return 1;var p=v,y,g=()=>(y===void 0&&(y=r(v,m)),y);if(m===o-1){var b=e*(p.coordinate+e*g()/2-l);a[m]=p=Ye(Ye({},p),{},{tickCoord:b>0?p.coordinate-b*e:p.coordinate})}else a[m]=p=Ye(Ye({},p),{},{tickCoord:p.coordinate});if(p.tickCoord!=null){var S=ai(e,p.tickCoord,g,s,l);S&&(l=p.tickCoord-e*(g()/2+i),a[m]=Ye(Ye({},p),{},{isShow:!0}))}},u=o-1;u>=0;u--)c(u);return a}function l2(e,t,r,n,i,a){var o=(n||[]).slice(),s=o.length,{start:l,end:c}=t;if(a){var u=n[s-1];if(u!=null){var d=r(u,s-1),m=e*(u.coordinate+e*d/2-c);if(o[s-1]=u=Ye(Ye({},u),{},{tickCoord:m>0?u.coordinate-m*e:u.coordinate}),u.tickCoord!=null){var v=ai(e,u.tickCoord,()=>d,l,c);v&&(c=u.tickCoord-e*(d/2+i),o[s-1]=Ye(Ye({},u),{},{isShow:!0}))}}}for(var p=a?s-1:s,y=function(S){var x=o[S];if(x==null)return 1;var w=x,j,_=()=>(j===void 0&&(j=r(x,S)),j);if(S===0){var C=e*(w.coordinate-e*_()/2-l);o[S]=w=Ye(Ye({},w),{},{tickCoord:C<0?w.coordinate-C*e:w.coordinate})}else o[S]=w=Ye(Ye({},w),{},{tickCoord:w.coordinate});if(w.tickCoord!=null){var N=ai(e,w.tickCoord,_,l,c);N&&(l=w.tickCoord+e*(_()/2+i),o[S]=Ye(Ye({},w),{},{isShow:!0}))}},g=0;g<p;g++)y(g);return o}function c2(e,t,r){var{tick:n,ticks:i,viewBox:a,minTickGap:o,orientation:s,interval:l,tickFormatter:c,unit:u,angle:d}=e;if(!i||!i.length||!n)return[];if(Q(l)||bi.isSsr){var m;return(m=t2(i,Q(l)?l:0))!==null&&m!==void 0?m:[]}var v=[],p=s==="top"||s==="bottom"?"width":"height",y=u&&p==="width"?qn(u,{fontSize:t,letterSpacing:r}):{width:0,height:0},g=(j,_)=>{var C=typeof c=="function"?c(j.value,_):j.value;return p==="width"?JM(qn(C,{fontSize:t,letterSpacing:r}),y,d):qn(C,{fontSize:t,letterSpacing:r})[p]},b=i[0],S=i[1],x=i.length>=2&&b!=null&&S!=null?jt(S.coordinate-b.coordinate):1,w=e2(a,x,p);return l==="equidistantPreserveStart"?r2(x,w,g,i,o):l==="equidistantPreserveEnd"?n2(x,w,g,i,o):(l==="preserveStart"||l==="preserveStartEnd"?v=l2(x,w,g,i,o,l==="preserveStartEnd"):v=s2(x,w,g,i,o),v.filter(j=>j.isShow))}var u2=e=>{var{ticks:t,label:r,labelGapWithTick:n=5,tickSize:i=0,tickMargin:a=0}=e,o=0;if(t){Array.from(t).forEach(u=>{if(u){var d=u.getBoundingClientRect();d.width>o&&(o=d.width)}});var s=r?r.getBoundingClientRect().width:0,l=i+a,c=o+l+s+(r?n:0);return Math.round(c)}return 0},d2={xAxis:{},yAxis:{}},sb=Xe({name:"renderedTicks",initialState:d2,reducers:{setRenderedTicks:(e,t)=>{var{axisType:r,axisId:n,ticks:i}=t.payload;e[r][n]=i},removeRenderedTicks:(e,t)=>{var{axisType:r,axisId:n}=t.payload;delete e[r][n]}}}),{setRenderedTicks:f2,removeRenderedTicks:h2}=sb.actions,m2=sb.reducer,v2=["axisLine","width","height","className","hide","ticks","axisType","axisId"];function p2(e,t){if(e==null)return{};var r,n,i=g2(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)===-1&&{}.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function g2(e,t){if(e==null)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.indexOf(n)!==-1)continue;r[n]=e[n]}return r}function Vr(){return Vr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Vr.apply(null,arguments)}function Nh(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function Oe(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Nh(Object(r),!0).forEach(function(n){y2(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Nh(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function y2(e,t,r){return(t=b2(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function b2(e){var t=x2(e,"string");return typeof t=="symbol"?t:t+""}function x2(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var Br={x:0,y:0,width:0,height:0,viewBox:{x:0,y:0,width:0,height:0},orientation:"bottom",ticks:[],stroke:"#666",tickLine:!0,axisLine:!0,tick:!0,mirror:!1,minTickGap:5,tickSize:6,tickMargin:2,interval:"preserveEnd",zIndex:it.axis};function w2(e){var{x:t,y:r,width:n,height:i,orientation:a,mirror:o,axisLine:s,otherSvgProps:l}=e;if(!s)return null;var c=Oe(Oe(Oe({},l),Yt(s)),{},{fill:"none"});if(a==="top"||a==="bottom"){var u=+(a==="top"&&!o||a==="bottom"&&o);c=Oe(Oe({},c),{},{x1:t,y1:r+u*i,x2:t+n,y2:r+u*i})}else{var d=+(a==="left"&&!o||a==="right"&&o);c=Oe(Oe({},c),{},{x1:t+d*n,y1:r,x2:t+d*n,y2:r+i})}return h.createElement("line",Vr({},c,{className:ve("recharts-cartesian-axis-line",oo(s,"className"))}))}function S2(e,t,r,n,i,a,o,s,l){var c,u,d,m,v,p,y=s?-1:1,g=e.tickSize||o,b=Q(e.tickCoord)?e.tickCoord:e.coordinate;switch(a){case"top":c=u=e.coordinate,m=r+ +!s*i,d=m-y*g,p=d-y*l,v=b;break;case"left":d=m=e.coordinate,u=t+ +!s*n,c=u-y*g,v=c-y*l,p=b;break;case"right":d=m=e.coordinate,u=t+ +s*n,c=u+y*g,v=c+y*l,p=b;break;default:c=u=e.coordinate,m=r+ +s*i,d=m+y*g,p=d+y*l,v=b;break}return{line:{x1:c,y1:d,x2:u,y2:m},tick:{x:v,y:p}}}function j2(e,t){switch(e){case"left":return t?"start":"end";case"right":return t?"end":"start";default:return"middle"}}function _2(e,t){switch(e){case"left":case"right":return"middle";case"top":return t?"start":"end";default:return t?"end":"start"}}function P2(e){var{option:t,tickProps:r,value:n}=e,i,a=ve(r.className,"recharts-cartesian-axis-tick-value");if(h.isValidElement(t))i=h.cloneElement(t,Oe(Oe({},r),{},{className:a}));else if(typeof t=="function")i=t(Oe(Oe({},r),{},{className:a}));else{var o="recharts-cartesian-axis-tick-value";typeof t!="boolean"&&(o=ve(o,$T(t))),i=h.createElement(Hc,Vr({},r,{className:o}),n)}return i}function O2(e){var{ticks:t,axisType:r,axisId:n}=e,i=Ee();return h.useEffect(()=>{if(n==null||r==null)return Gr;var a=t.map(o=>({value:o.value,coordinate:o.coordinate,offset:o.offset,index:o.index}));return i(f2({ticks:a,axisId:n,axisType:r})),()=>{i(h2({axisId:n,axisType:r}))}},[i,t,n,r]),null}var C2=h.forwardRef((e,t)=>{var{ticks:r=[],tick:n,tickLine:i,stroke:a,tickFormatter:o,unit:s,padding:l,tickTextProps:c,orientation:u,mirror:d,x:m,y:v,width:p,height:y,tickSize:g,tickMargin:b,fontSize:S,letterSpacing:x,getTicksConfig:w,events:j,axisType:_,axisId:C}=e,N=c2(Oe(Oe({},w),{},{ticks:r}),S,x),E=Yt(w),M=Ja(n),$=Ky(E.textAnchor)?E.textAnchor:j2(u,d),k=_2(u,d),q={};typeof i=="object"&&(q=i);var F=Oe(Oe({},E),{},{fill:"none"},q),K=N.map(ee=>Oe({entry:ee},S2(ee,m,v,p,y,u,g,d,b))),G=K.map(ee=>{var{entry:Z,line:te}=ee;return h.createElement(Gt,{className:"recharts-cartesian-axis-tick",key:"tick-".concat(Z.value,"-").concat(Z.coordinate,"-").concat(Z.tickCoord)},i&&h.createElement("line",Vr({},F,te,{className:ve("recharts-cartesian-axis-tick-line",oo(i,"className"))})))}),ne=K.map((ee,Z)=>{var te,le,{entry:oe,tick:ue}=ee,z=Oe(Oe(Oe(Oe({verticalAnchor:k},E),{},{textAnchor:$,stroke:"none",fill:a},ue),{},{index:Z,payload:oe,visibleTicksCount:N.length,tickFormatter:o,padding:l},c),{},{angle:(te=(le=c?.angle)!==null&&le!==void 0?le:E.angle)!==null&&te!==void 0?te:0}),H=Oe(Oe({},z),M);return h.createElement(Gt,Vr({className:"recharts-cartesian-axis-tick-label",key:"tick-label-".concat(oe.value,"-").concat(oe.coordinate,"-").concat(oe.tickCoord)},f1(j,oe,Z)),n&&h.createElement(P2,{option:n,tickProps:H,value:"".concat(typeof o=="function"?o(oe.value,Z):oe.value).concat(s||"")}))});return h.createElement("g",{className:"recharts-cartesian-axis-ticks recharts-".concat(_,"-ticks")},h.createElement(O2,{ticks:N,axisId:C,axisType:_}),ne.length>0&&h.createElement(Sr,{zIndex:it.label},h.createElement("g",{className:"recharts-cartesian-axis-tick-labels recharts-".concat(_,"-tick-labels"),ref:t},ne)),G.length>0&&h.createElement("g",{className:"recharts-cartesian-axis-tick-lines recharts-".concat(_,"-tick-lines")},G))}),k2=h.forwardRef((e,t)=>{var{axisLine:r,width:n,height:i,className:a,hide:o,ticks:s,axisType:l,axisId:c}=e,u=p2(e,v2),[d,m]=h.useState(""),[v,p]=h.useState(""),y=h.useRef(null);h.useImperativeHandle(t,()=>({getCalculatedWidth:()=>{var b;return u2({ticks:y.current,label:(b=e.labelRef)===null||b===void 0?void 0:b.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}}));var g=h.useCallback(b=>{if(b){var S=b.getElementsByClassName("recharts-cartesian-axis-tick-value");y.current=S;var x=S[0];if(x){var w=window.getComputedStyle(x),j=w.fontSize,_=w.letterSpacing;(j!==d||_!==v)&&(m(j),p(_))}}},[d,v]);return o||n!=null&&n<=0||i!=null&&i<=0?null:h.createElement(Sr,{zIndex:e.zIndex},h.createElement(Gt,{className:ve("recharts-cartesian-axis",a)},h.createElement(w2,{x:e.x,y:e.y,width:n,height:i,orientation:e.orientation,mirror:e.mirror,axisLine:r,otherSvgProps:Yt(e)}),h.createElement(C2,{ref:g,axisType:l,events:u,fontSize:d,getTicksConfig:e,height:e.height,letterSpacing:v,mirror:e.mirror,orientation:e.orientation,padding:e.padding,stroke:e.stroke,tick:e.tick,tickFormatter:e.tickFormatter,tickLine:e.tickLine,tickMargin:e.tickMargin,tickSize:e.tickSize,tickTextProps:e.tickTextProps,ticks:s,unit:e.unit,width:e.width,x:e.x,y:e.y,axisId:c}),h.createElement(gT,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},h.createElement(CT,{label:e.label,labelRef:e.labelRef}),e.children)))}),Gc=h.forwardRef((e,t)=>{var r=dt(e,Br);return h.createElement(k2,Vr({},r,{ref:t}))});Gc.displayName="CartesianAxis";var A2={},lb=Xe({name:"errorBars",initialState:A2,reducers:{addErrorBar:(e,t)=>{var{itemId:r,errorBar:n}=t.payload;e[r]||(e[r]=[]),e[r].push(n)},replaceErrorBar:(e,t)=>{var{itemId:r,prev:n,next:i}=t.payload;e[r]&&(e[r]=e[r].map(a=>a.dataKey===n.dataKey&&a.direction===n.direction?i:a))},removeErrorBar:(e,t)=>{var{itemId:r,errorBar:n}=t.payload;e[r]&&(e[r]=e[r].filter(i=>i.dataKey!==n.dataKey||i.direction!==n.direction))}}}),{addErrorBar:UL,replaceErrorBar:WL,removeErrorBar:KL}=lb.actions,N2=lb.reducer,E2=["children"];function T2(e,t){if(e==null)return{};var r,n,i=M2(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)===-1&&{}.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function M2(e,t){if(e==null)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.indexOf(n)!==-1)continue;r[n]=e[n]}return r}var D2={data:[],xAxisId:"xAxis-0",yAxisId:"yAxis-0",dataPointFormatter:()=>({x:0,y:0,value:0}),errorBarOffset:0},I2=h.createContext(D2);function L2(e){var{children:t}=e,r=T2(e,E2);return h.createElement(I2.Provider,{value:r},t)}function cb(e,t){var r,n,i=J(c=>sr(c,e)),a=J(c=>lr(c,t)),o=(r=i?.allowDataOverflow)!==null&&r!==void 0?r:Te.allowDataOverflow,s=(n=a?.allowDataOverflow)!==null&&n!==void 0?n:Me.allowDataOverflow,l=o||s;return{needClip:l,needClipX:o,needClipY:s}}function R2(e){var{xAxisId:t,yAxisId:r,clipPathId:n}=e,i=Yc(),{needClipX:a,needClipY:o,needClip:s}=cb(t,r);if(!s||!i)return null;var{x:l,y:c,width:u,height:d}=i;return h.createElement("clipPath",{id:"clipPath-".concat(n)},h.createElement("rect",{x:a?l:l-u/2,y:o?c:c-d/2,width:a?u:u*2,height:o?d:d*2}))}var ub=(e,t,r,n)=>cy(e,"xAxis",t,n),db=(e,t,r,n)=>ly(e,"xAxis",t,n),fb=(e,t,r,n)=>cy(e,"yAxis",r,n),hb=(e,t,r,n)=>ly(e,"yAxis",r,n),$2=A([_e,ub,fb,db,hb],(e,t,r,n,i)=>nr(e,"xAxis")?_a(t,n,!1):_a(r,i,!1)),z2=(e,t,r,n,i)=>i;function B2(e){return e.type==="line"}var F2=A([Tg,z2],(e,t)=>e.filter(B2).find(r=>r.id===t)),U2=A([_e,ub,fb,db,hb,F2,$2,Yl],(e,t,r,n,i,a,o,s)=>{var{chartData:l,dataStartIndex:c,dataEndIndex:u}=s;if(!(a==null||t==null||r==null||n==null||i==null||n.length===0||i.length===0||o==null||e!=="horizontal"&&e!=="vertical")){var{dataKey:d,data:m}=a,v;if(m!=null&&m.length>0?v=m:v=l?.slice(c,u+1),v!=null)return cD({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:i,dataKey:d,bandSize:o,displayedData:v})}});function W2(e){var t=Ja(e),r=3,n=2;if(t!=null){var{r:i,strokeWidth:a}=t,o=Number(i),s=Number(a);return(Number.isNaN(o)||o<0)&&(o=r),(Number.isNaN(s)||s<0)&&(s=n),{r:o,strokeWidth:s}}return{r,strokeWidth:n}}var K2=["id"],q2=["type","layout","connectNulls","needClip","shape"],H2=["activeDot","animateNewValues","animationBegin","animationDuration","animationEasing","connectNulls","dot","hide","isAnimationActive","label","legendType","xAxisId","yAxisId","id"];function oi(){return oi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},oi.apply(null,arguments)}function Eh(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function Et(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Eh(Object(r),!0).forEach(function(n){V2(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Eh(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function V2(e,t,r){return(t=Y2(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Y2(e){var t=G2(e,"string");return typeof t=="symbol"?t:t+""}function G2(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Xc(e,t){if(e==null)return{};var r,n,i=X2(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)===-1&&{}.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function X2(e,t){if(e==null)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.indexOf(n)!==-1)continue;r[n]=e[n]}return r}var Z2=e=>{var{dataKey:t,name:r,stroke:n,legendType:i,hide:a}=e;return[{inactive:a,dataKey:t,type:i,color:n,value:Zv(r,t),payload:e}]},Q2=h.memo(e=>{var{dataKey:t,data:r,stroke:n,strokeWidth:i,fill:a,name:o,hide:s,unit:l,tooltipType:c,id:u}=e,d={dataDefinedOnItem:r,getPosition:Gr,settings:{stroke:n,strokeWidth:i,fill:a,dataKey:t,nameKey:void 0,name:Zv(o,t),hide:s,type:c,color:n,unit:l,graphicalItemId:u}};return h.createElement(rM,{tooltipEntrySettings:d})}),mb=(e,t)=>"".concat(t,"px ").concat(e,"px");function J2(e,t){for(var r=e.length%2!==0?[...e,0]:e,n=[],i=0;i<t;++i)n.push(...r);return n}var eD=(e,t,r)=>{var n=r.reduce((m,v)=>m+v,0);if(!n)return mb(t,e);for(var i=Math.floor(e/n),a=e%n,o=[],s=0,l=0;s<r.length;l+=(c=r[s])!==null&&c!==void 0?c:0,++s){var c,u=r[s];if(u!=null&&l+u>a){o=[...r.slice(0,s),a-l];break}}var d=o.length%2===0?[0,t]:[t];return[...J2(r,i),...o,...d].map(m=>"".concat(m,"px")).join(", ")};function tD(e){var{clipPathId:t,points:r,props:n}=e,{dot:i,dataKey:a,needClip:o}=n,{id:s}=n,l=Xc(n,K2),c=Yt(l);return h.createElement(_M,{points:r,dot:i,className:"recharts-line-dots",dotClassName:"recharts-line-dot",dataKey:a,baseProps:c,needClip:o,clipPathId:t})}function rD(e){var{showLabels:t,children:r,points:n}=e,i=h.useMemo(()=>n?.map(a=>{var o,s,l={x:(o=a.x)!==null&&o!==void 0?o:0,y:(s=a.y)!==null&&s!==void 0?s:0,width:0,lowerWidth:0,upperWidth:0,height:0};return Et(Et({},l),{},{value:a.value,payload:a.payload,viewBox:l,parentViewBox:void 0,fill:void 0})}),[n]);return h.createElement(TT,{value:t?i:void 0},r)}function Th(e){var{clipPathId:t,pathRef:r,points:n,strokeDasharray:i,props:a}=e,{type:o,layout:s,connectNulls:l,needClip:c,shape:u}=a,d=Xc(a,q2),m=Et(Et({},Je(d)),{},{fill:"none",className:"recharts-line-curve",clipPath:c?"url(#clipPath-".concat(t,")"):void 0,points:n,type:o,layout:s,connectNulls:l,strokeDasharray:i??a.strokeDasharray});return h.createElement(h.Fragment,null,n?.length>1&&h.createElement(tM,oi({shapeType:"curve",option:u},m,{pathRef:r})),h.createElement(tD,{points:n,clipPathId:t,props:a}))}function nD(e){try{return e&&e.getTotalLength&&e.getTotalLength()||0}catch{return 0}}function iD(e){var{clipPathId:t,props:r,pathRef:n,previousPointsRef:i,longestAnimatedLengthRef:a}=e,{points:o,strokeDasharray:s,isAnimationActive:l,animationBegin:c,animationDuration:u,animationEasing:d,animateNewValues:m,width:v,height:p,onAnimationEnd:y,onAnimationStart:g}=r,b=i.current,S=Vl(o,"recharts-line-"),x=h.useRef(S),[w,j]=h.useState(!1),_=!w,C=h.useCallback(()=>{typeof y=="function"&&y(),j(!1)},[y]),N=h.useCallback(()=>{typeof g=="function"&&g(),j(!0)},[g]),E=nD(n.current),M=h.useRef(0);x.current!==S&&(M.current=a.current,x.current=S);var $=M.current;return h.createElement(rD,{points:o,showLabels:_},r.children,h.createElement(Hl,{animationId:S,begin:c,duration:u,isActive:l,easing:d,onAnimationEnd:C,onAnimationStart:N,key:S},k=>{var q=nt($,E+$,k),F=Math.min(q,E),K;if(l)if(s){var G="".concat(s).split(/[,\s]+/gim).map(Z=>parseFloat(Z));K=eD(F,E,G)}else K=mb(E,F);else K=s==null?void 0:String(s);if(k>0&&E>0&&(i.current=o,a.current=Math.max(a.current,F)),b){var ne=b.length/o.length,ee=k===1?o:o.map((Z,te)=>{var le=Math.floor(te*ne);if(b[le]){var oe=b[le];return Et(Et({},Z),{},{x:nt(oe.x,Z.x,k),y:nt(oe.y,Z.y,k)})}return m?Et(Et({},Z),{},{x:nt(v*2,Z.x,k),y:nt(p/2,Z.y,k)}):Et(Et({},Z),{},{x:Z.x,y:Z.y})});return i.current=ee,h.createElement(Th,{props:r,points:ee,clipPathId:t,pathRef:n,strokeDasharray:K})}return h.createElement(Th,{props:r,points:o,clipPathId:t,pathRef:n,strokeDasharray:K})}),h.createElement(IT,{label:r.label}))}function aD(e){var{clipPathId:t,props:r}=e,n=h.useRef(null),i=h.useRef(0),a=h.useRef(null);return h.createElement(iD,{props:r,clipPathId:t,previousPointsRef:n,longestAnimatedLengthRef:i,pathRef:a})}var oD=(e,t)=>{var r,n;return{x:(r=e.x)!==null&&r!==void 0?r:void 0,y:(n=e.y)!==null&&n!==void 0?n:void 0,value:e.value,errorVal:He(e.payload,t)}};class sD extends h.Component{render(){var{hide:t,dot:r,points:n,className:i,xAxisId:a,yAxisId:o,top:s,left:l,width:c,height:u,id:d,needClip:m,zIndex:v}=this.props;if(t)return null;var p=ve("recharts-line",i),y=d,{r:g,strokeWidth:b}=W2(r),S=eb(r),x=g*2+b,w=m?"url(#clipPath-".concat(S?"":"dots-").concat(y,")"):void 0;return h.createElement(Sr,{zIndex:v},h.createElement(Gt,{className:p},m&&h.createElement("defs",null,h.createElement(R2,{clipPathId:y,xAxisId:a,yAxisId:o}),!S&&h.createElement("clipPath",{id:"clipPath-dots-".concat(y)},h.createElement("rect",{x:l-x/2,y:s-x/2,width:c+x,height:u+x}))),h.createElement(L2,{xAxisId:a,yAxisId:o,data:n,dataPointFormatter:oD,errorBarOffset:0},h.createElement(aD,{props:this.props,clipPathId:y}))),h.createElement(KM,{activeDot:this.props.activeDot,points:n,mainColor:this.props.stroke,itemDataKey:this.props.dataKey,clipPath:w}))}}var vb={activeDot:!0,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",connectNulls:!1,dot:!0,fill:"#fff",hide:!1,isAnimationActive:"auto",label:!1,legendType:"line",stroke:"#3182bd",strokeWidth:1,xAxisId:0,yAxisId:0,zIndex:it.line,type:"linear"};function lD(e){var t=dt(e,vb),{activeDot:r,animateNewValues:n,animationBegin:i,animationDuration:a,animationEasing:o,connectNulls:s,dot:l,hide:c,isAnimationActive:u,label:d,legendType:m,xAxisId:v,yAxisId:p,id:y}=t,g=Xc(t,H2),{needClip:b}=cb(v,p),S=Yc(),x=Sn(),w=ft(),j=J(M=>U2(M,v,p,w,y));if(x!=="horizontal"&&x!=="vertical"||j==null||S==null)return null;var{height:_,width:C,x:N,y:E}=S;return h.createElement(sD,oi({},g,{id:y,connectNulls:s,dot:l,activeDot:r,animateNewValues:n,animationBegin:i,animationDuration:a,animationEasing:o,isAnimationActive:u,hide:c,label:d,legendType:m,xAxisId:v,yAxisId:p,points:j,layout:x,height:_,width:C,left:N,top:E,needClip:b}))}function cD(e){var{layout:t,xAxis:r,yAxis:n,xAxisTicks:i,yAxisTicks:a,dataKey:o,bandSize:s,displayedData:l}=e;return l.map((c,u)=>{var d=He(c,o);if(t==="horizontal"){var m=Zu({axis:r,ticks:i,bandSize:s,entry:c,index:u}),v=$e(d)?null:n.scale.map(d);return{x:m,y:v??null,value:d,payload:c}}var p=$e(d)?null:r.scale.map(d),y=Zu({axis:n,ticks:a,bandSize:s,entry:c,index:u});return p==null||y==null?null:{x:p,y,value:d,payload:c}}).filter(Boolean)}function uD(e){var t=dt(e,vb),r=ft();return h.createElement(lM,{id:t.id,type:"line"},n=>h.createElement(h.Fragment,null,h.createElement(nM,{legendPayload:Z2(t)}),h.createElement(Q2,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:n}),h.createElement(vM,{type:"line",id:n,data:t.data,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,hide:t.hide,isPanorama:r}),h.createElement(lD,oi({},t,{id:n}))))}var ia=h.memo(uD,Co);ia.displayName="Line";var dD=["domain","range"],fD=["domain","range"];function Mh(e,t){if(e==null)return{};var r,n,i=hD(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)===-1&&{}.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function hD(e,t){if(e==null)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.indexOf(n)!==-1)continue;r[n]=e[n]}return r}function Dh(e,t){return e===t?!0:Array.isArray(e)&&e.length===2&&Array.isArray(t)&&t.length===2?e[0]===t[0]&&e[1]===t[1]:!1}function pb(e,t){if(e===t)return!0;var{domain:r,range:n}=e,i=Mh(e,dD),{domain:a,range:o}=t,s=Mh(t,fD);return!Dh(r,a)||!Dh(n,o)?!1:Co(i,s)}var mD=["type"],vD=["dangerouslySetInnerHTML","ticks","scale"],pD=["id","scale"];function sl(){return sl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},sl.apply(null,arguments)}function Ih(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function Lh(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Ih(Object(r),!0).forEach(function(n){gD(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ih(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function gD(e,t,r){return(t=yD(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function yD(e){var t=bD(e,"string");return typeof t=="symbol"?t:t+""}function bD(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function ll(e,t){if(e==null)return{};var r,n,i=xD(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)===-1&&{}.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function xD(e,t){if(e==null)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.indexOf(n)!==-1)continue;r[n]=e[n]}return r}function wD(e){var t=Ee(),r=h.useRef(null),n=op(),{type:i}=e,a=ll(e,mD),o=No(n,"xAxis",i),s=h.useMemo(()=>{if(o!=null)return Lh(Lh({},a),{},{type:o})},[a,o]);return h.useLayoutEffect(()=>{s!=null&&(r.current===null?t(AM(s)):r.current!==s&&t(NM({prev:r.current,next:s})),r.current=s)},[s,t]),h.useLayoutEffect(()=>()=>{r.current&&(t(EM(r.current)),r.current=null)},[t]),null}var SD=e=>{var{xAxisId:t,className:r}=e,n=J(Jv),i=ft(),a="xAxis",o=J(b=>sy(b,a,t,i)),s=J(b=>Xk(b,t)),l=J(b=>rA(b,t)),c=J(b=>kg(b,t));if(s==null||l==null||c==null)return null;var{dangerouslySetInnerHTML:u,ticks:d,scale:m}=e,v=ll(e,vD),{id:p,scale:y}=c,g=ll(c,pD);return h.createElement(Gc,sl({},v,g,{x:l.x,y:l.y,width:s.width,height:s.height,className:ve("recharts-".concat(a," ").concat(a),r),viewBox:n,ticks:o,axisType:a,axisId:t}))},jD={allowDataOverflow:Te.allowDataOverflow,allowDecimals:Te.allowDecimals,allowDuplicatedCategory:Te.allowDuplicatedCategory,angle:Te.angle,axisLine:Br.axisLine,height:Te.height,hide:!1,includeHidden:Te.includeHidden,interval:Te.interval,label:!1,minTickGap:Te.minTickGap,mirror:Te.mirror,orientation:Te.orientation,padding:Te.padding,reversed:Te.reversed,scale:Te.scale,tick:Te.tick,tickCount:Te.tickCount,tickLine:Br.tickLine,tickSize:Br.tickSize,type:Te.type,niceTicks:Te.niceTicks,xAxisId:0},_D=e=>{var t=dt(e,jD);return h.createElement(h.Fragment,null,h.createElement(wD,{allowDataOverflow:t.allowDataOverflow,allowDecimals:t.allowDecimals,allowDuplicatedCategory:t.allowDuplicatedCategory,angle:t.angle,dataKey:t.dataKey,domain:t.domain,height:t.height,hide:t.hide,id:t.xAxisId,includeHidden:t.includeHidden,interval:t.interval,minTickGap:t.minTickGap,mirror:t.mirror,name:t.name,orientation:t.orientation,padding:t.padding,reversed:t.reversed,scale:t.scale,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,niceTicks:t.niceTicks}),h.createElement(SD,t))},gb=h.memo(_D,pb);gb.displayName="XAxis";var PD=["type"],OD=["dangerouslySetInnerHTML","ticks","scale"],CD=["id","scale"];function cl(){return cl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},cl.apply(null,arguments)}function Rh(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function $h(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Rh(Object(r),!0).forEach(function(n){kD(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Rh(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function kD(e,t,r){return(t=AD(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function AD(e){var t=ND(e,"string");return typeof t=="symbol"?t:t+""}function ND(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function ul(e,t){if(e==null)return{};var r,n,i=ED(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)===-1&&{}.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function ED(e,t){if(e==null)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.indexOf(n)!==-1)continue;r[n]=e[n]}return r}function TD(e){var t=Ee(),r=h.useRef(null),n=op(),{type:i}=e,a=ul(e,PD),o=No(n,"yAxis",i),s=h.useMemo(()=>{if(o!=null)return $h($h({},a),{},{type:o})},[o,a]);return h.useLayoutEffect(()=>{s!=null&&(r.current===null?t(TM(s)):r.current!==s&&t(MM({prev:r.current,next:s})),r.current=s)},[s,t]),h.useLayoutEffect(()=>()=>{r.current&&(t(DM(r.current)),r.current=null)},[t]),null}function MD(e){var{yAxisId:t,className:r,width:n,label:i}=e,a=h.useRef(null),o=h.useRef(null),s=J(Jv),l=ft(),c=Ee(),u="yAxis",d=J(_=>aA(_,t)),m=J(_=>iA(_,t)),v=J(_=>sy(_,u,t,l)),p=J(_=>Ag(_,t));if(h.useLayoutEffect(()=>{if(!(n!=="auto"||!d||Vc(i)||h.isValidElement(i)||p==null)){var _=a.current;if(_){var C=_.getCalculatedWidth();Math.round(d.width)!==Math.round(C)&&c(IM({id:t,width:C}))}}},[v,d,c,i,t,n,p]),d==null||m==null||p==null)return null;var{dangerouslySetInnerHTML:y,ticks:g,scale:b}=e,S=ul(e,OD),{id:x,scale:w}=p,j=ul(p,CD);return h.createElement(Gc,cl({},S,j,{ref:a,labelRef:o,x:m.x,y:m.y,tickTextProps:n==="auto"?{width:void 0}:{width:n},width:d.width,height:d.height,className:ve("recharts-".concat(u," ").concat(u),r),viewBox:s,ticks:v,axisType:u,axisId:t}))}var DD={allowDataOverflow:Me.allowDataOverflow,allowDecimals:Me.allowDecimals,allowDuplicatedCategory:Me.allowDuplicatedCategory,angle:Me.angle,axisLine:Br.axisLine,hide:!1,includeHidden:Me.includeHidden,interval:Me.interval,label:!1,minTickGap:Me.minTickGap,mirror:Me.mirror,orientation:Me.orientation,padding:Me.padding,reversed:Me.reversed,scale:Me.scale,tick:Me.tick,tickCount:Me.tickCount,tickLine:Br.tickLine,tickSize:Br.tickSize,type:Me.type,niceTicks:Me.niceTicks,width:Me.width,yAxisId:0},ID=e=>{var t=dt(e,DD);return h.createElement(h.Fragment,null,h.createElement(TD,{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}),h.createElement(MD,t))},yb=h.memo(ID,pb);yb.displayName="YAxis";var LD=(e,t)=>t,Zc=A([LD,_e,Vp,Be,Py,cr,kN,Ve],IN);function RD(e){return"getBBox"in e.currentTarget&&typeof e.currentTarget.getBBox=="function"}function Qc(e){var t=e.currentTarget.getBoundingClientRect(),r,n;if(RD(e)){var i=e.currentTarget.getBBox();r=i.width>0?t.width/i.width:1,n=i.height>0?t.height/i.height:1}else{var a=e.currentTarget;r=a.offsetWidth>0?t.width/a.offsetWidth:1,n=a.offsetHeight>0?t.height/a.offsetHeight:1}var o=(s,l)=>({relativeX:Math.round((s-t.left)/r),relativeY:Math.round((l-t.top)/n)});return"touches"in e?Array.from(e.touches).map(s=>o(s.clientX,s.clientY)):o(e.clientX,e.clientY)}var bb=ct("mouseClick"),xb=mi();xb.startListening({actionCreator:bb,effect:(e,t)=>{var r=e.payload,n=Zc(t.getState(),Qc(r));n?.activeIndex!=null&&t.dispatch(xA({activeIndex:n.activeIndex,activeDataKey:void 0,activeCoordinate:n.activeCoordinate}))}});var dl=ct("mouseMove"),wb=mi(),ln=null,Ar=null,vs=null;wb.startListening({actionCreator:dl,effect:(e,t)=>{var r=e.payload,n=t.getState(),{throttleDelay:i,throttledEvents:a}=n.eventSettings,o=a==="all"||a?.includes("mousemove");ln!==null&&(cancelAnimationFrame(ln),ln=null),Ar!==null&&(typeof i!="number"||!o)&&(clearTimeout(Ar),Ar=null),vs=Qc(r);var s=()=>{var l=t.getState(),c=Lc(l,l.tooltip.settings.shared);if(!vs){ln=null,Ar=null;return}if(c==="axis"){var u=Zc(l,vs);u?.activeIndex!=null?t.dispatch(py({activeIndex:u.activeIndex,activeDataKey:void 0,activeCoordinate:u.activeCoordinate})):t.dispatch(vy())}ln=null,Ar=null};if(!o){s();return}i==="raf"?ln=requestAnimationFrame(s):typeof i=="number"&&Ar===null&&(Ar=setTimeout(s,i))}});function $D(e,t){return t instanceof HTMLElement?"HTMLElement <".concat(t.tagName,' class="').concat(t.className,'">'):t===window?"global.window":e==="children"&&typeof t=="object"&&t!==null?"<<CHILDREN>>":t}var zh={accessibilityLayer:!0,barCategoryGap:"10%",barGap:4,barSize:void 0,className:void 0,maxBarSize:void 0,stackOffset:"none",syncId:void 0,syncMethod:"index",baseValue:void 0,reverseStackOrder:!1},Sb=Xe({name:"rootProps",initialState:zh,reducers:{updateOptions:(e,t)=>{var r;e.accessibilityLayer=t.payload.accessibilityLayer,e.barCategoryGap=t.payload.barCategoryGap,e.barGap=(r=t.payload.barGap)!==null&&r!==void 0?r:zh.barGap,e.barSize=t.payload.barSize,e.maxBarSize=t.payload.maxBarSize,e.stackOffset=t.payload.stackOffset,e.syncId=t.payload.syncId,e.syncMethod=t.payload.syncMethod,e.className=t.payload.className,e.baseValue=t.payload.baseValue,e.reverseStackOrder=t.payload.reverseStackOrder}}}),zD=Sb.reducer,{updateOptions:BD}=Sb.actions,FD=null,UD={updatePolarOptions:(e,t)=>e===null?t.payload:(e.startAngle=t.payload.startAngle,e.endAngle=t.payload.endAngle,e.cx=t.payload.cx,e.cy=t.payload.cy,e.innerRadius=t.payload.innerRadius,e.outerRadius=t.payload.outerRadius,e)},jb=Xe({name:"polarOptions",initialState:FD,reducers:UD}),{updatePolarOptions:qL}=jb.actions,WD=jb.reducer,_b=ct("keyDown"),Pb=ct("focus"),Ob=ct("blur"),Ko=mi(),cn=null,Nr=null,Yi=null;Ko.startListening({actionCreator:_b,effect:(e,t)=>{Yi=e.payload,cn!==null&&(cancelAnimationFrame(cn),cn=null);var r=t.getState(),{throttleDelay:n,throttledEvents:i}=r.eventSettings,a=i==="all"||i.includes("keydown");Nr!==null&&(typeof n!="number"||!a)&&(clearTimeout(Nr),Nr=null);var o=()=>{try{var s=t.getState(),l=s.rootProps.accessibilityLayer!==!1;if(!l)return;var{keyboardInteraction:c}=s.tooltip,u=Yi;if(u!=="ArrowRight"&&u!=="ArrowLeft"&&u!=="Enter")return;var d=Rc(c,Nn(s),Oi(s),ki(s)),m=d==null?-1:Number(d);if(!Number.isFinite(m)||m<0)return;var v=cr(s);if(u==="Enter"){var p=qa(s,"axis","hover",String(c.index));t.dispatch(Ka({active:!c.active,activeIndex:c.index,activeCoordinate:p}));return}var y=uA(s),g=y==="left-to-right"?1:-1,b=u==="ArrowRight"?1:-1,S=m+b*g;if(v==null||S>=v.length||S<0)return;var x=qa(s,"axis","hover",String(S));t.dispatch(Ka({active:!0,activeIndex:S.toString(),activeCoordinate:x}))}finally{cn=null,Nr=null}};if(!a){o();return}n==="raf"?cn=requestAnimationFrame(o):typeof n=="number"&&Nr===null&&(o(),Yi=null,Nr=setTimeout(()=>{Yi?o():(Nr=null,cn=null)},n))}});Ko.startListening({actionCreator:Pb,effect:(e,t)=>{var r=t.getState(),n=r.rootProps.accessibilityLayer!==!1;if(n){var{keyboardInteraction:i}=r.tooltip;if(!i.active&&i.index==null){var a="0",o=qa(r,"axis","hover",String(a));t.dispatch(Ka({active:!0,activeIndex:a,activeCoordinate:o}))}}}});Ko.startListening({actionCreator:Ob,effect:(e,t)=>{var r=t.getState(),n=r.rootProps.accessibilityLayer!==!1;if(n){var{keyboardInteraction:i}=r.tooltip;i.active&&t.dispatch(Ka({active:!1,activeIndex:i.index,activeCoordinate:i.coordinate}))}}});function Cb(e){e.persist();var{currentTarget:t}=e;return new Proxy(e,{get:(r,n)=>{if(n==="currentTarget")return t;var i=Reflect.get(r,n);return typeof i=="function"?i.bind(r):i}})}var vt=ct("externalEvent"),kb=mi(),Gi=new Map,Bn=new Map,ps=new Map;kb.startListening({actionCreator:vt,effect:(e,t)=>{var{handler:r,reactEvent:n}=e.payload;if(r!=null){var i=n.type,a=Cb(n);ps.set(i,{handler:r,reactEvent:a});var o=Gi.get(i);o!==void 0&&(cancelAnimationFrame(o),Gi.delete(i));var s=t.getState(),{throttleDelay:l,throttledEvents:c}=s.eventSettings,u=c,d=u==="all"||u?.includes(i),m=Bn.get(i);m!==void 0&&(typeof l!="number"||!d)&&(clearTimeout(m),Bn.delete(i));var v=()=>{var g=ps.get(i);try{if(!g)return;var{handler:b,reactEvent:S}=g,x=t.getState(),w={activeCoordinate:fN(x),activeDataKey:cN(x),activeIndex:ni(x),activeLabel:ky(x),activeTooltipIndex:ni(x),isTooltipActive:hN(x)};b&&b(w,S)}finally{Gi.delete(i),Bn.delete(i),ps.delete(i)}};if(!d){v();return}if(l==="raf"){var p=requestAnimationFrame(v);Gi.set(i,p)}else if(typeof l=="number"){if(!Bn.has(i)){v();var y=setTimeout(v,l);Bn.set(i,y)}}else v()}}});var KD=A([kn],e=>e.tooltipItemPayloads),qD=A([KD,(e,t)=>t,(e,t,r)=>r],(e,t,r)=>{if(t!=null){var n=e.find(a=>a.settings.graphicalItemId===r);if(n!=null){var{getPosition:i}=n;if(i!=null)return i(t)}}}),Ab=ct("touchMove"),Nb=mi(),Er=null,ur=null,Bh=null,Fn=null;Nb.startListening({actionCreator:Ab,effect:(e,t)=>{var r=e.payload;if(!(r.touches==null||r.touches.length===0)){Fn=Cb(r);var n=t.getState(),{throttleDelay:i,throttledEvents:a}=n.eventSettings,o=a==="all"||a.includes("touchmove");Er!==null&&(cancelAnimationFrame(Er),Er=null),ur!==null&&(typeof i!="number"||!o)&&(clearTimeout(ur),ur=null),Bh=Array.from(r.touches).map(l=>Qc({clientX:l.clientX,clientY:l.clientY,currentTarget:r.currentTarget}));var s=()=>{if(Fn!=null){var l=t.getState(),c=Lc(l,l.tooltip.settings.shared);if(c==="axis"){var u,d=(u=Bh)===null||u===void 0?void 0:u[0];if(d==null){Er=null,ur=null;return}var m=Zc(l,d);m?.activeIndex!=null&&t.dispatch(py({activeIndex:m.activeIndex,activeDataKey:void 0,activeCoordinate:m.activeCoordinate}))}else if(c==="item"){var v,p=Fn.touches[0];if(document.elementFromPoint==null||p==null)return;var y=document.elementFromPoint(p.clientX,p.clientY);if(!y||!y.getAttribute)return;var g=y.getAttribute(ZS),b=(v=y.getAttribute(QS))!==null&&v!==void 0?v:void 0,S=An(l).find(j=>j.id===b);if(g==null||S==null||b==null)return;var{dataKey:x}=S,w=qD(l,g,b);t.dispatch(bA({activeDataKey:x,activeIndex:g,activeCoordinate:w,activeGraphicalItemId:b}))}Er=null,ur=null}};if(!o){s();return}i==="raf"?Er=requestAnimationFrame(s):typeof i=="number"&&ur===null&&(s(),Fn=null,ur=setTimeout(()=>{Fn?s():(ur=null,Er=null)},i))}}});var Eb={throttleDelay:"raf",throttledEvents:["mousemove","touchmove","pointermove","scroll","wheel"]},Tb=Xe({name:"eventSettings",initialState:Eb,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=t.payload.throttledEvents)}}}),{setEventSettings:HD}=Tb.actions,VD=Tb.reducer,YD=dm({brush:HM,cartesianAxis:LM,chartData:fE,errorBars:N2,eventSettings:VD,graphicalItems:hM,layout:LS,legend:Wj,options:sE,polarAxis:RT,polarOptions:WD,referenceElements:XM,renderedTicks:m2,rootProps:zD,tooltip:wA,zIndex:GN}),GD=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"Chart";return sS({reducer:YD,preloadedState:t,middleware:n=>{var i;return n({serializableCheck:!1,immutableCheck:!["commonjs","es6","production"].includes((i="es6")!==null&&i!==void 0?i:"")}).concat([xb.middleware,wb.middleware,Ko.middleware,kb.middleware,Nb.middleware])},enhancers:n=>{var i=n;return typeof n=="function"&&(i=n()),i.concat(Rv({type:"raf"}))},devTools:{serialize:{replacer:$D},name:"recharts-".concat(r)}})};function XD(e){var{preloadedState:t,children:r,reduxStoreName:n}=e,i=ft(),a=h.useRef(null);if(i)return r;a.current==null&&(a.current=GD(t,n));var o=Dl;return h.createElement(h_,{context:o,store:a.current},r)}function ZD(e){var{layout:t,margin:r}=e,n=Ee(),i=ft();return h.useEffect(()=>{i||(n(MS(t)),n(TS(r)))},[n,i,t,r]),null}var QD=h.memo(ZD,Co);function JD(e){var t=Ee();return h.useEffect(()=>{t(BD(e))},[t,e]),null}var eI=e=>{var t=Ee();return h.useEffect(()=>{t(HD(e))},[t,e]),null},tI=h.memo(eI,Co);function Fh(e){var{zIndex:t,isPanorama:r}=e,n=h.useRef(null),i=Ee();return h.useLayoutEffect(()=>(n.current&&i(VN({zIndex:t,element:n.current,isPanorama:r})),()=>{i(YN({zIndex:t,isPanorama:r}))}),[i,t,r]),h.createElement("g",{tabIndex:-1,ref:n,className:"recharts-zIndex-layer_".concat(t)})}function Uh(e){var{children:t,isPanorama:r}=e,n=J(RN);if(!n||n.length===0)return t;var i=n.filter(o=>o<0),a=n.filter(o=>o>0);return h.createElement(h.Fragment,null,i.map(o=>h.createElement(Fh,{key:o,zIndex:o,isPanorama:r})),t,a.map(o=>h.createElement(Fh,{key:o,zIndex:o,isPanorama:r})))}var rI=["children"];function nI(e,t){if(e==null)return{};var r,n,i=iI(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)===-1&&{}.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function iI(e,t){if(e==null)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.indexOf(n)!==-1)continue;r[n]=e[n]}return r}function Xa(){return Xa=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Xa.apply(null,arguments)}var aI={width:"100%",height:"100%",display:"block"},oI=h.forwardRef((e,t)=>{var r=Pj(),n=Oj(),i=pp();if(!yr(r)||!yr(n))return null;var{children:a,otherAttributes:o,title:s,desc:l}=e,c,u;return o!=null&&(typeof o.tabIndex=="number"?c=o.tabIndex:c=i?0:void 0,typeof o.role=="string"?u=o.role:u=i?"application":void 0),h.createElement(Cm,Xa({},o,{title:s,desc:l,role:u,tabIndex:c,width:r,height:n,style:aI,ref:t}),a)}),sI=e=>{var{children:t}=e,r=J(So);if(!r)return null;var{width:n,height:i,y:a,x:o}=r;return h.createElement(Cm,{width:n,height:i,x:o,y:a},t)},Wh=h.forwardRef((e,t)=>{var{children:r}=e,n=nI(e,rI),i=ft();return i?h.createElement(sI,null,h.createElement(Uh,{isPanorama:!0},r)):h.createElement(oI,Xa({ref:t},n),h.createElement(Uh,{isPanorama:!1},r))});function lI(){var e=Ee(),[t,r]=h.useState(null),n=J(XS);return h.useEffect(()=>{if(t!=null){var i=t.getBoundingClientRect(),a=i.width/t.offsetWidth;he(a)&&a!==n&&e(IS(a))}},[t,e,n]),r}function Kh(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function cI(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Kh(Object(r),!0).forEach(function(n){uI(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Kh(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function uI(e,t,r){return(t=dI(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function dI(e){var t=fI(e,"string");return typeof t=="symbol"?t:t+""}function fI(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function pr(){return pr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},pr.apply(null,arguments)}var hI=()=>(wE(),null);function Za(e){if(typeof e=="number")return e;if(typeof e=="string"){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var mI=h.forwardRef((e,t)=>{var r,n,i=h.useRef(null),[a,o]=h.useState({containerWidth:Za((r=e.style)===null||r===void 0?void 0:r.width),containerHeight:Za((n=e.style)===null||n===void 0?void 0:n.height)}),s=h.useCallback((c,u)=>{o(d=>{var m=Math.round(c),v=Math.round(u);return d.containerWidth===m&&d.containerHeight===v?d:{containerWidth:m,containerHeight:v}})},[]),l=h.useCallback(c=>{if(typeof t=="function"&&t(c),c!=null&&typeof ResizeObserver<"u"){var{width:u,height:d}=c.getBoundingClientRect();s(u,d);var m=p=>{var y=p[0];if(y!=null){var{width:g,height:b}=y.contentRect;s(g,b)}},v=new ResizeObserver(m);v.observe(c),i.current=v}},[t,s]);return h.useEffect(()=>()=>{var c=i.current;c?.disconnect()},[s]),h.createElement(h.Fragment,null,h.createElement(pi,{width:a.containerWidth,height:a.containerHeight}),h.createElement("div",pr({ref:l},e)))}),vI=h.forwardRef((e,t)=>{var{width:r,height:n}=e,[i,a]=h.useState({containerWidth:Za(r),containerHeight:Za(n)}),o=h.useCallback((l,c)=>{a(u=>{var d=Math.round(l),m=Math.round(c);return u.containerWidth===d&&u.containerHeight===m?u:{containerWidth:d,containerHeight:m}})},[]),s=h.useCallback(l=>{if(typeof t=="function"&&t(l),l!=null){var{width:c,height:u}=l.getBoundingClientRect();o(c,u)}},[t,o]);return h.createElement(h.Fragment,null,h.createElement(pi,{width:i.containerWidth,height:i.containerHeight}),h.createElement("div",pr({ref:s},e)))}),pI=h.forwardRef((e,t)=>{var{width:r,height:n}=e;return h.createElement(h.Fragment,null,h.createElement(pi,{width:r,height:n}),h.createElement("div",pr({ref:t},e)))}),gI=h.forwardRef((e,t)=>{var{width:r,height:n}=e;return typeof r=="string"||typeof n=="string"?h.createElement(vI,pr({},e,{ref:t})):typeof r=="number"&&typeof n=="number"?h.createElement(pI,pr({},e,{width:r,height:n,ref:t})):h.createElement(h.Fragment,null,h.createElement(pi,{width:r,height:n}),h.createElement("div",pr({ref:t},e)))});function yI(e){return e?mI:gI}var bI=h.forwardRef((e,t)=>{var{children:r,className:n,height:i,onClick:a,onContextMenu:o,onDoubleClick:s,onMouseDown:l,onMouseEnter:c,onMouseLeave:u,onMouseMove:d,onMouseUp:m,onTouchEnd:v,onTouchMove:p,onTouchStart:y,style:g,width:b,responsive:S,dispatchTouchEvents:x=!0}=e,w=h.useRef(null),j=Ee(),[_,C]=h.useState(null),[N,E]=h.useState(null),M=lI(),$=Ul(),k=$?.width>0?$.width:b,q=$?.height>0?$.height:i,F=h.useCallback(D=>{M(D),typeof t=="function"&&t(D),C(D),E(D),D!=null&&(w.current=D)},[M,t,C,E]),K=h.useCallback(D=>{j(bb(D)),j(vt({handler:a,reactEvent:D}))},[j,a]),G=h.useCallback(D=>{j(dl(D)),j(vt({handler:c,reactEvent:D}))},[j,c]),ne=h.useCallback(D=>{j(vy()),j(vt({handler:u,reactEvent:D}))},[j,u]),ee=h.useCallback(D=>{j(dl(D)),j(vt({handler:d,reactEvent:D}))},[j,d]),Z=h.useCallback(()=>{j(Pb())},[j]),te=h.useCallback(()=>{j(Ob())},[j]),le=h.useCallback(D=>{j(_b(D.key))},[j]),oe=h.useCallback(D=>{j(vt({handler:o,reactEvent:D}))},[j,o]),ue=h.useCallback(D=>{j(vt({handler:s,reactEvent:D}))},[j,s]),z=h.useCallback(D=>{j(vt({handler:l,reactEvent:D}))},[j,l]),H=h.useCallback(D=>{j(vt({handler:m,reactEvent:D}))},[j,m]),R=h.useCallback(D=>{j(vt({handler:y,reactEvent:D}))},[j,y]),P=h.useCallback(D=>{x&&j(Ab(D)),j(vt({handler:p,reactEvent:D}))},[j,x,p]),L=h.useCallback(D=>{j(vt({handler:v,reactEvent:D}))},[j,v]),T=yI(S);return h.createElement(Iy.Provider,{value:_},h.createElement(yw.Provider,{value:N},h.createElement(T,{width:k??g?.width,height:q??g?.height,className:ve("recharts-wrapper",n),style:cI({position:"relative",cursor:"default",width:k,height:q},g),onClick:K,onContextMenu:oe,onDoubleClick:ue,onFocus:Z,onBlur:te,onKeyDown:le,onMouseDown:z,onMouseEnter:G,onMouseLeave:ne,onMouseMove:ee,onMouseUp:H,onTouchEnd:L,onTouchMove:P,onTouchStart:R,ref:F},h.createElement(hI,null),r)))}),xI=["width","height","responsive","children","className","style","compact","title","desc"];function wI(e,t){if(e==null)return{};var r,n,i=SI(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)===-1&&{}.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function SI(e,t){if(e==null)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.indexOf(n)!==-1)continue;r[n]=e[n]}return r}var jI=h.forwardRef((e,t)=>{var{width:r,height:n,responsive:i,children:a,className:o,style:s,compact:l,title:c,desc:u}=e,d=wI(e,xI),m=Yt(d);return l?h.createElement(h.Fragment,null,h.createElement(pi,{width:r,height:n}),h.createElement(Wh,{otherAttributes:m,title:c,desc:u},a)):h.createElement(bI,{className:o,style:s,width:r,height:n,responsive:i??!1,onClick:e.onClick,onMouseLeave:e.onMouseLeave,onMouseEnter:e.onMouseEnter,onMouseMove:e.onMouseMove,onMouseDown:e.onMouseDown,onMouseUp:e.onMouseUp,onContextMenu:e.onContextMenu,onDoubleClick:e.onDoubleClick,onTouchStart:e.onTouchStart,onTouchMove:e.onTouchMove,onTouchEnd:e.onTouchEnd},h.createElement(Wh,{otherAttributes:m,title:c,desc:u,ref:t},h.createElement(QM,null,a)))});function fl(){return fl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},fl.apply(null,arguments)}function qh(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function _I(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?qh(Object(r),!0).forEach(function(n){PI(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):qh(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function PI(e,t,r){return(t=OI(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function OI(e){var t=CI(e,"string");return typeof t=="symbol"?t:t+""}function CI(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var kI={top:5,right:5,bottom:5,left:5},AI=_I({accessibilityLayer:!0,barCategoryGap:"10%",barGap:4,layout:"horizontal",margin:kI,responsive:!1,reverseStackOrder:!1,stackOffset:"none",syncMethod:"index"},Eb),NI=h.forwardRef(function(t,r){var n,i=dt(t.categoricalChartProps,AI),{chartName:a,defaultTooltipEventType:o,validateTooltipEventTypes:s,tooltipPayloadSearcher:l,categoricalChartProps:c}=t,u={chartName:a,defaultTooltipEventType:o,validateTooltipEventTypes:s,tooltipPayloadSearcher:l,eventEmitter:void 0};return h.createElement(XD,{preloadedState:{options:u},reduxStoreName:(n=c.id)!==null&&n!==void 0?n:a},h.createElement(qM,{chartData:c.data}),h.createElement(QD,{layout:i.layout,margin:i.margin}),h.createElement(tI,{throttleDelay:i.throttleDelay,throttledEvents:i.throttledEvents}),h.createElement(JD,{baseValue:i.baseValue,accessibilityLayer:i.accessibilityLayer,barCategoryGap:i.barCategoryGap,maxBarSize:i.maxBarSize,stackOffset:i.stackOffset,barGap:i.barGap,barSize:i.barSize,syncId:i.syncId,syncMethod:i.syncMethod,className:i.className,reverseStackOrder:i.reverseStackOrder}),h.createElement(jI,fl({},i,{ref:r})))}),EI=["axis"],TI=h.forwardRef((e,t)=>h.createElement(NI,{chartName:"LineChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:EI,tooltipPayloadSearcher:aE,categoricalChartProps:e,ref:t}));const Hh=[{value:"15m",label:"15m",bucket:30},{value:"1h",label:"1h",bucket:60},{value:"6h",label:"6h",bucket:300},{value:"24h",label:"24h",bucket:900},{value:"7d",label:"7d",bucket:3600}];function MI(e){const t=e.gpu?.length?e.gpu.reduce((r,n)=>r+(n.utilization_gpu??0),0)/e.gpu.length:null;return{timestamp:e.timestamp,cpu:e.cpu_percent??null,memory:e.mem_percent??null,gpu:t}}function DI(e){const t=new Date(e);return Number.isNaN(t.getTime())?e:`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}`}function Vh(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"){const t=e.replace(/[^\d]/g,"");return t?Number.parseInt(t,10):null}return null}function II(e,t,r){if(!e||e<=0)return r("n_a");const n=t!=null?Math.max(0,t):0,a=(Math.max(0,e-n)/1024).toFixed(1),o=(e/1024).toFixed(1);return r("gpu_memory_used",{used:a,total:o})}function LI({projectId:e,server:t,showRefreshButton:r=!1}){const{t:n}=rr("cli"),[i,a]=h.useState("1h"),[o,s]=h.useState(!1),[l,c]=h.useState(null),[u,d]=h.useState(!1),{addToast:m}=di(),v=Se(x=>x.telemetryByServer),p=Se(x=>x.setTelemetrySeries),y=h.useCallback(async()=>{s(!0),c(null);try{const x=Hh.find(j=>j.value===i),w=await bx(e,t.id,{range:i,bucket:x?.bucket});p(t.id,w.points)}catch{c("Unable to load telemetry.")}finally{s(!1)}},[e,t.id,p,i]),g=h.useCallback(async()=>{if(!u){d(!0);try{await hm(e,t.id),m({type:"success",title:"Refresh requested",description:"Waiting for the CLI agent to report new hardware info."})}catch{m({type:"error",title:n("refresh_failed_title"),description:n("refresh_failed_desc")})}finally{d(!1)}}},[m,u,e,t.id,n]);h.useEffect(()=>{y()},[y]);const b=h.useMemo(()=>(v[t.id]??[]).slice(-300).map(MI),[t.id,v]),S=t.gpu_info??[];return f.jsxs("div",{className:"space-y-4",children:[f.jsx(Ge,{delay:.1,duration:.45,y:12,children:f.jsxs(de,{className:"cli-card rounded-2xl border border-white/40 bg-white/70 p-4",children:[f.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:n("gpu_details")}),r?f.jsxs(re,{variant:"secondary",size:"sm",onClick:g,disabled:u,children:[f.jsx(Lt,{className:Ae("mr-2 h-3.5 w-3.5",u?"animate-spin":"")}),n("refresh_gpu")]}):null]}),f.jsx("div",{className:"mt-3 space-y-2 text-xs text-[var(--cli-muted-1)]",children:t.gpu_count===0?f.jsx("div",{children:n("no_gpus")}):S.length>0?S.map(x=>{const w=Vh(x.memory_total_mb??x.memory_total),j=Vh(x.memory_free_mb??x.memory_free);return f.jsxs("div",{className:"flex items-center justify-between gap-3",children:[f.jsxs("span",{children:["GPU ",x.index,": ",x.name]}),f.jsx("span",{children:II(w,j,n)})]},x.uuid??`${x.index}`)}):f.jsx("div",{children:n("gpu_telemetry_unavailable")})})]})}),f.jsx(Ge,{delay:.12,duration:.45,y:12,children:f.jsxs(de,{className:"cli-card rounded-2xl border border-white/40 bg-white/70 p-4",children:[f.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[f.jsxs("div",{children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:n("realtime_telemetry")}),f.jsx("div",{className:"text-xs text-[var(--cli-muted-1)]",children:n("realtime_telemetry_desc")})]}),f.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[f.jsx("div",{className:"flex flex-wrap items-center gap-1 rounded-full border border-white/40 bg-white/60 px-1 py-1",children:Hh.map(x=>{const w=i===x.value;return f.jsx("button",{type:"button",className:Ae("rounded-full px-3 py-1 text-[11px] font-medium transition",w?"bg-[var(--cli-accent-emerald)] text-[var(--cli-ink-0)]":"text-[var(--cli-muted-1)] hover:text-[var(--cli-ink-1)]"),onClick:()=>a(x.value),children:x.label},x.value)})}),f.jsxs(re,{variant:"secondary",size:"sm",onClick:()=>void y(),disabled:o,children:[f.jsx(Lt,{className:Ae("mr-2 h-3.5 w-3.5",o?"animate-spin":"")}),n("refresh")]})]})]}),f.jsx("div",{className:"mt-4 h-[240px]",children:o?f.jsx("div",{className:"text-xs text-[var(--cli-muted-1)]",children:n("loading_telemetry")}):l?f.jsx("div",{className:"text-xs text-[var(--cli-muted-1)]",children:l}):b.length===0?f.jsx("div",{className:"text-xs text-[var(--cli-muted-1)]",children:n("no_telemetry")}):f.jsx(Sj,{width:"100%",height:"100%",children:f.jsxs(TI,{data:b,children:[f.jsx(gb,{dataKey:"timestamp",tickFormatter:DI,tick:{fontSize:10,fill:"var(--cli-muted-1)"},axisLine:{stroke:"rgba(0,0,0,0.1)"},tickLine:!1}),f.jsx(yb,{domain:[0,100],tick:{fontSize:10,fill:"var(--cli-muted-1)"},axisLine:!1,tickLine:!1,tickFormatter:x=>`${x}%`}),f.jsx(AE,{formatter:(x,w)=>{const j=String(w??"");if(x==null||Array.isArray(x))return[n("n_a"),j];const _=typeof x=="number"?x:Number(x);return Number.isFinite(_)?[`${Math.round(_)}%`,j]:[n("n_a"),j]},labelFormatter:x=>{const w=new Date(x);return Number.isNaN(w.getTime())?String(x):w.toLocaleString()}}),f.jsx(ia,{type:"monotone",dataKey:"cpu",stroke:"var(--cli-accent-rose)",strokeWidth:2,dot:!1,name:n("cpu")}),f.jsx(ia,{type:"monotone",dataKey:"memory",stroke:"var(--cli-accent-steel)",strokeWidth:2,dot:!1,name:n("memory")}),f.jsx(ia,{type:"monotone",dataKey:"gpu",stroke:"var(--cli-accent-amber)",strokeWidth:2,dot:!1,name:n("gpu")})]})})})]})})]})}const Yh={online:"bg-[var(--cli-status-online)] text-[var(--cli-ink-0)]",offline:"bg-[var(--cli-status-offline)] text-[var(--cli-ink-0)]",standalone:"bg-[var(--cli-status-idle)] text-[var(--cli-ink-0)]",error:"bg-[var(--cli-status-error)] text-[var(--cli-ink-0)]",idle:"bg-[var(--cli-status-idle)] text-[var(--cli-ink-0)]",busy:"bg-[var(--cli-status-busy)] text-[var(--cli-ink-0)]"};function Gh(e){if(!e)return"n/a";const t=new Date(e);return Number.isNaN(t.getTime())?"n/a":t.toLocaleString()}function gs({label:e,value:t,suffix:r,icon:n}){const i=typeof t=="number"&&Number.isFinite(t);return f.jsxs(de,{className:"cli-card rounded-2xl border border-white/40 bg-white/70 p-4 shadow-[0_8px_20px_rgba(20,20,20,0.08)]",children:[f.jsxs("div",{className:"flex items-center gap-2 text-xs uppercase tracking-wide text-[var(--cli-muted-1)]",children:[n?f.jsx("span",{className:"text-[var(--cli-muted-1)]",children:n}):null,f.jsx("span",{children:e})]}),f.jsxs("div",{className:"mt-2 flex items-baseline gap-1 text-lg font-semibold text-[var(--cli-ink-1)]",children:[i?f.jsx(C0,{to:t??0,duration:.6,className:"tabular-nums"}):f.jsx("span",{children:"n/a"}),r?f.jsx("span",{className:"text-sm text-[var(--cli-muted-1)]",children:r}):null]})]})}const RI={healthy:"bg-[var(--cli-accent-emerald)] text-[var(--cli-ink-0)]",degraded:"bg-[var(--cli-status-warning)] text-[var(--cli-ink-0)]",unhealthy:"bg-[var(--cli-status-offline)] text-[var(--cli-ink-0)]",ready:"bg-[var(--cli-accent-emerald)] text-[var(--cli-ink-0)]",not_ready:"bg-[var(--cli-status-warning)] text-[var(--cli-ink-0)]"},$I={database:"Database",redis:"Redis",websocket:"WebSocket",cli_servers:"CLI servers"};function zI(e){return e?e.error?e.error:typeof e.latency_ms=="number"?`${Math.round(e.latency_ms)} ms`:typeof e.active_connections=="number"?`${e.active_connections} connections`:typeof e.online_count=="number"?`${e.online_count} online`:"":""}function BI({projectId:e,server:t,connectionStatus:r,accessLabel:n,canUnbind:i}){const a=Yh[t.status]||Yh.offline,o=r?.state??"disconnected",s=r?.latencyMs!=null?`${Math.round(r.latencyMs)} ms`:"n/a",l=r?.metrics,c=l?.averageReconnectTime!=null&&l.averageReconnectTime>0?`${Math.round(l.averageReconnectTime)} ms`:"n/a",[u,d]=h.useState(null),[m,v]=h.useState(!1),[p,y]=h.useState(null),[g,b]=h.useState(!1),[S,x]=h.useState(!1),{addToast:w}=di(),j=Se(M=>M.refreshServers),_=h.useCallback(async()=>{v(!0),y(null);try{const M=await xx();d(M)}catch{y("Unable to load system health.")}finally{v(!1)}},[]),C=h.useCallback(async()=>{if(!g){b(!0);try{await hm(e,t.id),w({type:"success",title:"Refresh requested",description:"Waiting for the CLI agent to report new hardware info."})}catch{w({type:"error",title:"Refresh failed",description:"CLI server is offline or unavailable."})}finally{b(!1)}}},[w,g,e,t.id]),N=h.useCallback(async()=>{if(!(!i||S||!window.confirm("Unbind this server? The CLI agent will disconnect and can be reconnected by logging in again."))){x(!0);try{await cm(e,t.id),await j(),w({type:"success",title:"Server unbound",description:"The CLI agent has been disconnected. Re-login to bind again."})}catch{w({type:"error",title:"Unbind failed",description:"Unable to unbind this server."})}finally{x(!1)}}},[w,i,e,j,t.id,S]);h.useEffect(()=>{_()},[_,t.id]);const E=h.useMemo(()=>u?.checks?Object.entries(u.checks).map(([M,$])=>({key:M,label:$I[M]??M,status:$.status,detail:zI($)})):[],[u]);return f.jsxs("div",{className:"space-y-6",children:[f.jsx(Ge,{duration:.4,y:10,children:f.jsx(de,{className:"cli-card rounded-2xl border border-white/40 bg-white/70 p-4",children:f.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[f.jsxs("div",{children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:"Overview"}),f.jsx("div",{className:"text-xs text-[var(--cli-muted-1)]",children:"System health, hardware, and connection telemetry."})]}),f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsxs(re,{variant:"secondary",size:"sm",onClick:()=>void _(),disabled:m,children:[f.jsx(Lt,{className:Ae("mr-2 h-3.5 w-3.5",m?"animate-spin":"")}),"Refresh health"]}),f.jsxs(re,{variant:"secondary",size:"sm",onClick:C,disabled:g,children:[f.jsx(Lt,{className:Ae("mr-2 h-3.5 w-3.5",g?"animate-spin":"")}),"Refresh GPU"]}),i?f.jsx(re,{variant:"destructive",size:"sm",onClick:()=>void N(),disabled:S,children:"Unbind server"}):null]})]})})}),f.jsx(Ge,{duration:.45,y:12,children:f.jsx(de,{className:"cli-card rounded-2xl border border-white/40 bg-white/70 p-5 shadow-[0_8px_24px_rgba(20,20,20,0.08)]",children:f.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-4",children:[f.jsxs("div",{children:[f.jsxs("div",{className:"flex items-center gap-2 text-sm font-semibold text-[var(--cli-ink-1)]",children:[f.jsx(vm,{className:"h-4 w-4"}),f.jsx("span",{children:t.name||t.hostname}),f.jsx("span",{className:Ae("rounded-full px-2 py-0.5 text-[10px] font-medium",a),children:t.status})]}),f.jsx("div",{className:"mt-1 text-xs text-[var(--cli-muted-1)]",children:t.hostname}),f.jsxs("div",{className:"mt-3 grid gap-2 text-xs text-[var(--cli-muted-1)]",children:[f.jsxs("div",{children:["OS: ",t.os_info||"n/a"]}),f.jsxs("div",{children:["IP: ",t.ip_address||"n/a"]}),f.jsxs("div",{children:["Last heartbeat: ",Gh(t.last_seen_at)]})]})]}),f.jsxs("div",{className:"rounded-xl border border-white/40 bg-white/70 px-4 py-3 text-xs text-[var(--cli-muted-1)]",children:[f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx(S0,{className:"h-3.5 w-3.5"}),f.jsxs("span",{children:["Socket: ",o]})]}),f.jsxs("div",{className:"mt-1",children:["Latency: ",s]}),f.jsxs("div",{className:"mt-1",children:["Buffered queue: ",r?.bufferedMessages??0]}),f.jsxs("div",{className:"mt-1",children:["Access: ",n||"n/a"]})]})]})})}),f.jsx(Ge,{delay:.05,duration:.45,y:12,children:f.jsxs("div",{className:"grid gap-4 md:grid-cols-3",children:[f.jsx(gs,{label:"GPU",value:t.gpu_count,suffix:"available",icon:f.jsx(wx,{className:"h-3.5 w-3.5"})}),f.jsx(gs,{label:"Memory",value:t.memory_gb,suffix:"GB",icon:f.jsx(p0,{className:"h-3.5 w-3.5"})}),f.jsx(gs,{label:"Disk",value:t.disk_gb,suffix:"GB",icon:f.jsx(u0,{className:"h-3.5 w-3.5"})})]})}),f.jsx(LI,{projectId:e,server:t}),f.jsx(Ge,{delay:.15,duration:.45,y:12,children:f.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[f.jsxs(de,{className:"cli-card rounded-2xl border border-white/40 bg-white/70 p-4",children:[f.jsx("div",{className:"flex items-center justify-between",children:f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:"System health"})}),m?f.jsx("div",{className:"mt-3 text-xs text-[var(--cli-muted-1)]",children:"Checking health…"}):p?f.jsx("div",{className:"mt-3 text-xs text-[var(--cli-muted-1)]",children:p}):f.jsxs("div",{className:"mt-3 space-y-2 text-xs text-[var(--cli-muted-1)]",children:[E.map(M=>f.jsxs("div",{className:"flex items-center justify-between gap-3",children:[f.jsx("span",{children:M.label}),f.jsxs("div",{className:"flex items-center gap-2",children:[M.detail?f.jsx("span",{children:M.detail}):null,f.jsx("span",{className:Ae("rounded-full px-2 py-0.5 text-[10px] font-medium",RI[M.status]||"bg-[var(--cli-status-idle)] text-[var(--cli-ink-0)]"),children:M.status})]})]},M.key)),E.length===0?f.jsx("div",{className:"text-xs text-[var(--cli-muted-1)]",children:"No health data available."}):null]}),f.jsxs("div",{className:"mt-3 text-[11px] text-[var(--cli-muted-1)]",children:["Last checked: ",Gh(u?.timestamp)]})]}),f.jsxs(de,{className:"cli-card rounded-2xl border border-white/40 bg-white/70 p-4",children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:"Connection metrics"}),f.jsxs("div",{className:"mt-3 grid gap-2 text-xs text-[var(--cli-muted-1)]",children:[f.jsxs("div",{children:["Reconnect attempts: ",l?.reconnectionAttempts??0]}),f.jsxs("div",{children:["Average reconnect time: ",c]}),f.jsxs("div",{children:["Messages buffered: ",l?.messagesBuffered??0]}),f.jsxs("div",{children:["Messages dropped: ",l?.messagesDropped??0]}),f.jsxs("div",{children:["Total connections: ",l?.totalConnections??0]}),f.jsxs("div",{children:["Failed connections: ",l?.failedConnections??0]})]}),r?.lastError?f.jsxs("div",{className:"mt-3 rounded-lg border border-white/40 bg-white/60 px-3 py-2 text-[11px] text-[var(--cli-muted-1)]",children:["Last error: ",r.lastError]}):null]})]})}),f.jsx(sw,{})]})}const Xh="CLI server offline. Please ensure the CLI is running.",FI=(e,t)=>{if(mm.isAxiosError(e)){const r=e.response?.data?.detail??e.response?.data?.message;if(r){const n=String(r),i=n.toLowerCase();return i.includes("not connected")||i.includes("offline")?Xh:n}if(e.response?.status===503)return Xh}return e instanceof Error&&e.message?e.message:t};function UI(e,t,r){const[n,i]=h.useState("/"),[a,o]=h.useState([]),[s,l]=h.useState(!1),[c,u]=h.useState(null),d=pt(r||"/"),m=h.useCallback(async(b,S=!1)=>{if(!e||!t)return;const x=pt(b);l(!0),u(null);try{const w=await Sx(e,t,x,S),j=w.items.map(_=>({..._,path:pt(_.path)}));o(j),i(pt(w.path||x))}catch(w){console.error("[CLI] Failed to load files:",w),u(FI(w,"Failed to load files"))}finally{l(!1)}},[e,t]),v=h.useCallback(async(b,S)=>{if(!e||!t)return null;try{return await jx(e,t,b,S)}catch(x){return console.error("[CLI] Failed to read file:",x),null}},[e,t]),p=h.useCallback(async(b,S)=>{!e||!t||(await _x(e,t,{path:b,content:S,operation:"write"}),await m(n,!0))},[e,t,m,n]),y=h.useCallback(async(b,S=!1)=>{!e||!t||(await Px(e,t,b,S),await m(n,!0))},[e,t,m,n]),g=h.useCallback(async(b,S)=>{!e||!t||(await sm(e,t,b,S),await m(n,!0))},[e,t,m,n]);return h.useEffect(()=>{!e||!t||m(d,!0)},[e,t,d,m]),{path:n,items:a,isLoading:s,error:c,load:m,readFile:v,writeFile:p,removeFile:y,uploadFile:g,setPath:i}}function WI({item:e,isSelected:t,isChecked:r,onToggle:n,onOpen:i,onDownload:a,onDelete:o,readOnly:s,canDownload:l,canDelete:c}){const u=e.type==="directory";return f.jsxs("div",{className:Ae("flex w-full items-center justify-between rounded-lg border border-transparent px-3 py-2 text-left text-sm transition","hover:bg-white/60",t&&"border-white/70 bg-white/70"),children:[f.jsxs("button",{type:"button",onClick:()=>i(e),className:"flex flex-1 items-center gap-2",children:[f.jsx("input",{type:"checkbox",checked:!!r,onChange:()=>n?.(e),onClick:d=>d.stopPropagation(),"aria-label":`Select ${e.name}`,className:"cli-focus-ring h-3.5 w-3.5 accent-[var(--cli-accent-olive)]"}),u?f.jsx(im,{className:"h-4 w-4"}):f.jsx(la,{className:"h-4 w-4"}),f.jsx("span",{className:"text-[var(--cli-ink-1)]",children:e.name})]}),f.jsxs("div",{className:"flex items-center gap-2 text-xs text-[var(--cli-muted-1)]",children:[f.jsx("span",{children:u?"Folder":Vx(e.size)}),a&&!u?f.jsx("button",{type:"button",onClick:d=>{d.stopPropagation(),l&&a(e)},disabled:!l,className:"cli-focus-ring text-[var(--cli-muted-1)] hover:text-[var(--cli-ink-1)] disabled:opacity-50",title:l?"Download":"Download not allowed","aria-label":l?`Download ${e.name}`:"Download not allowed",children:f.jsx(pl,{className:"h-3.5 w-3.5"})}):null,o?f.jsx("button",{type:"button",onClick:d=>{d.stopPropagation(),!(s||!c)&&o(e)},disabled:s||!c,className:"cli-focus-ring text-[var(--cli-muted-1)] hover:text-[var(--cli-ink-1)] disabled:opacity-50",title:s||!c?"Delete not allowed":"Delete","aria-label":s||!c?"Delete not allowed":`Delete ${e.name}`,children:f.jsx(um,{className:"h-3.5 w-3.5"})}):null]})]})}const Zh="CLI server offline. Please ensure the CLI is running.",Qh=(e,t)=>{if(mm.isAxiosError(e)){const r=e.response?.data?.detail??e.response?.data?.message;if(r){const n=String(r),i=n.toLowerCase();return i.includes("not connected")||i.includes("offline")?Zh:n}if(e.response?.status===503)return Zh}return e instanceof Error&&e.message?e.message:t},KI=e=>{if(!e)return"n/a";const t=new Date(e);if(Number.isNaN(t.getTime()))return"n/a";const r=Date.now()-t.getTime();return r<6e4?"just now":r<36e5?`${Math.round(r/6e4)}m ago`:r<864e5?`${Math.round(r/36e5)}h ago`:`${Math.round(r/864e5)}d ago`},qI=e=>{if(!e)return"n/a";const t=new Date(e);return Number.isNaN(t.getTime())?"n/a":t.toLocaleString()};function HI({projectId:e,serverId:t,serverRoot:r,serverStatus:n,serverLastSeenAt:i,readOnly:a,canDelete:o,canUpload:s,canDownload:l}){const{path:c,items:u,isLoading:d,error:m,load:v,uploadFile:p,removeFile:y}=UI(e,t,r),g=h.useRef(null),{addToast:b}=di(),S=Ox(R=>R.openTab),[x,w]=h.useState(null),[j,_]=h.useState(null),[C,N]=h.useState(new Set),E=n==="offline"||n==="error",M=h.useMemo(()=>{const R=u.filter(L=>L.type==="file").length,P=u.filter(L=>L.type==="directory").length;return{fileCount:R,folderCount:P}},[u]),$=h.useMemo(()=>[...u].sort((R,P)=>R.type===P.type?R.name.localeCompare(P.name):R.type==="directory"?-1:1),[u]),k=h.useMemo(()=>pt(r||"/"),[r]),q=h.useMemo(()=>{if(!k||k==="/")return pt(c);if(c.startsWith(k)){const R=c.slice(k.length);return pt(R||"/")}return pt(c)},[c,k]),F=h.useCallback(R=>{if(!k||k==="/")return pt(R);const P=pt(R);return P==="/"?k:pt(`${k}/${P.replace(/^\//,"")}`)},[k]),K=h.useMemo(()=>{const R=Yx(q),L=[{label:r||`/CLI/${t}`,path:"/"}];return R.forEach((T,D)=>{L.push({label:T,path:Gx(R.slice(0,D+1))})}),L},[q,t,r]),G=h.useMemo(()=>u.filter(R=>C.has(R.path)),[u,C]),ne=h.useCallback(R=>{N(P=>{const L=new Set(P);return L.has(R.path)?L.delete(R.path):L.add(R.path),L})},[]),ee=h.useCallback(R=>{const P=Cx(R.name);if(P===gu.NOTEBOOK){const L=R.name.toLowerCase();if(L.endsWith(".md")||L.endsWith(".markdown")||L.endsWith(".mdx"))return P}if(R.mime_type){const L=kx(R.mime_type);if(L)return L===gu.TEXT_VIEWER&&P?P:L}return P},[]),Z=h.useCallback(async R=>{if(!l)return;const P=Zo(R.path);if(P){b({type:"warning",title:"Download blocked",description:`Sensitive file access blocked (${P}).`});return}if(R.size&&R.size>Xx){b({type:"warning",title:"Download too large",description:"This file exceeds the download limit. Use a CLI tool to fetch it."});return}try{const L=await Ax(e,t,R.path),T=URL.createObjectURL(L),D=document.createElement("a");D.href=T,D.download=R.name,D.click(),URL.revokeObjectURL(T)}catch{b({type:"error",title:"Download failed",description:"Unable to download this file."})}},[b,l,e,t]),te=h.useCallback(async R=>{if(R.type==="directory"){w(null),await v(R.path,!1);return}const P=Zo(R.path);if(P){b({type:"warning",title:"Access blocked",description:`Sensitive file access blocked (${P}).`});return}const L=ee(R);if(!L){b({type:"warning",title:"No viewer available",description:"Download the file to view it locally."}),l&&await Z(R);return}w(R);const T=Nx({projectId:e,serverId:t,path:R.path}),D={updatedAt:R.modified_at??void 0,sizeBytes:R.size??void 0,mimeType:R.mime_type??void 0};S({pluginId:L,context:{type:"file",resourceId:T,resourcePath:Ex({serverId:t,path:R.path,serverRoot:r??void 0}),resourceName:R.name,mimeType:R.mime_type??void 0,customData:{projectId:e,fileSource:"cli",cliServerId:t,cliPath:R.path,cliRoot:r??void 0,fileMeta:D,readOnly:a??!1,readonly:a??!1}},title:R.name})},[b,l,Z,v,S,e,a,ee,t,r]),le=h.useCallback(()=>{v(c,!0)},[v,c]),oe=h.useCallback(()=>{a||!s||g.current?.click()},[a,s]),ue=h.useCallback(async R=>{if(a||!s)return;const P=Array.from(R.target.files||[]);if(P.length===0)return;const L=pt(c);for(const T of P){if(T.size>Zx){b({type:"warning",title:"Upload too large",description:`${T.name} exceeds 1 MB and cannot be uploaded.`});continue}try{await p(T,L)}catch(D){b({type:"error",title:"Upload failed",description:Qh(D,"Unable to upload this file.")})}}R.target.value=""},[b,c,a,s,p]),z=h.useCallback(R=>{a||!o||_(R)},[a,o]),H=h.useCallback(async()=>{if(j){for(const R of j){const P=Zo(R.path);if(P){b({type:"warning",title:"Delete blocked",description:`Sensitive file access blocked (${P}).`});continue}try{await y(R.path,R.type==="directory")}catch(L){b({type:"error",title:"Delete failed",description:Qh(L,"Unable to delete this file.")})}}_(null),N(new Set)}},[b,j,y]);return f.jsxs("div",{className:"flex h-full flex-col gap-4",children:[f.jsx(Ge,{duration:.4,y:10,children:f.jsx(de,{className:"rounded-2xl border border-white/40 bg-white/70 px-4 py-3",children:f.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[f.jsxs("div",{children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:"Files"}),f.jsx("div",{className:"text-xs text-[var(--cli-muted-1)]",children:"Browse and manage CLI server files."})]}),f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsxs(re,{variant:"secondary",size:"sm",onClick:le,children:[f.jsx(Lt,{className:"mr-2 h-3.5 w-3.5"}),"Refresh"]}),a?null:f.jsxs(f.Fragment,{children:[f.jsxs(re,{size:"sm",onClick:oe,disabled:!s,children:[f.jsx(Tx,{className:"mr-2 h-3.5 w-3.5"}),"Upload"]}),f.jsx("input",{ref:g,type:"file",multiple:!0,className:"hidden",onChange:ue,"aria-label":"Upload files"})]})]})]})})}),f.jsx(Ge,{duration:.4,y:10,children:f.jsx("div",{className:"flex flex-wrap items-center justify-between gap-3",children:f.jsxs(de,{className:"flex flex-wrap items-center gap-2 rounded-2xl border border-white/40 bg-white/70 px-3 py-2 text-xs text-[var(--cli-muted-1)]",children:[f.jsx("div",{className:"text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:"Path"}),f.jsx("div",{className:"flex flex-wrap items-center gap-2",children:K.map((R,P)=>f.jsxs("button",{type:"button",onClick:()=>v(F(R.path),!1),className:"cli-focus-ring rounded-full border border-white/40 bg-white/60 px-3 py-1 text-[var(--cli-ink-1)] hover:bg-white/80","aria-label":`Navigate to ${R.label}`,children:[R.label,P<K.length-1?" /":""]},R.path))}),f.jsxs("div",{className:"flex items-center gap-2 text-[10px] text-[var(--cli-muted-1)]",children:[f.jsx("span",{className:"h-1 w-1 rounded-full bg-[var(--cli-muted-2)]"}),M.folderCount," folders · ",M.fileCount," files",G.length>0?f.jsxs(f.Fragment,{children:[f.jsx("span",{className:"h-1 w-1 rounded-full bg-[var(--cli-muted-2)]"}),G.length," selected"]}):null,a?f.jsxs(f.Fragment,{children:[f.jsx("span",{className:"h-1 w-1 rounded-full bg-[var(--cli-muted-2)]"}),"Read-only"]}):null]})]})})}),E?f.jsxs("div",{className:"rounded-xl border border-white/40 bg-white/70 p-4 text-sm text-[var(--cli-muted-1)]",children:[f.jsx("div",{children:"CLI server is offline. Please ensure the CLI is running and connected."}),f.jsxs("div",{className:"mt-1 text-[11px] text-[var(--cli-muted-2)]",children:["Last heartbeat ",KI(i)," (",qI(i),")"]})]}):null,m?f.jsx("div",{className:"rounded-xl border border-white/40 bg-white/70 p-4 text-sm text-[var(--cli-muted-1)]",children:m}):null,f.jsx("div",{className:"h-full min-h-0",children:f.jsx(de,{className:"h-full rounded-2xl border border-white/40 bg-white/60 p-3",children:f.jsx(Hn,{className:"h-full",children:d?f.jsxs("div",{className:"flex items-center justify-center py-6 text-sm text-[var(--cli-muted-1)]",children:[f.jsx(pn,{className:"mr-2 h-4 w-4 animate-spin"}),"Loading files..."]}):f.jsxs("div",{className:"space-y-1",children:[$.map(R=>f.jsx(WI,{item:R,isSelected:x?.path===R.path,isChecked:C.has(R.path),onToggle:ne,onOpen:te,onDownload:Z,onDelete:P=>z([P]),readOnly:a,canDownload:l,canDelete:o},R.path)),$.length===0?f.jsx("div",{className:"py-6 text-center text-sm text-[var(--cli-muted-1)]",children:"No files in this folder."}):null]})})})}),G.length>0?f.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2 rounded-xl border border-white/40 bg-white/70 px-4 py-3 text-xs text-[var(--cli-muted-1)]",children:[f.jsxs("span",{children:[G.length," selected"]}),f.jsxs("div",{className:"flex items-center gap-2",children:[l?f.jsx(re,{variant:"secondary",size:"sm",onClick:()=>G.forEach(Z),children:"Download selected"}):null,o?f.jsx(re,{variant:"secondary",size:"sm",onClick:()=>z(G),children:"Delete selected"}):null,f.jsx(re,{variant:"ghost",size:"sm",onClick:()=>N(new Set),children:"Clear selection"})]})]}):null,f.jsx(si,{open:!!j,onOpenChange:()=>_(null),children:f.jsxs(li,{className:"cli-root max-w-md",children:[f.jsx(ci,{children:f.jsx(ui,{children:"Confirm delete"})}),f.jsxs("div",{className:"space-y-2 text-sm text-[var(--cli-muted-1)]",children:[j?.map(R=>f.jsx("div",{className:"rounded-lg border border-white/40 bg-white/70 px-3 py-2",children:R.path},R.path)),f.jsx("div",{children:"This action cannot be undone."})]}),f.jsxs(vl,{className:"gap-2",children:[f.jsx(re,{variant:"secondary",onClick:()=>_(null),children:"Cancel"}),f.jsx(re,{onClick:H,children:"Delete"})]})]})})]})}function VI(e,t){const[n,i]=h.useState([]),[a,o]=h.useState(!1),[s,l]=h.useState(null),[c,u]=h.useState(0),[d,m]=h.useState(20),[v,p]=h.useState(0),y=h.useRef({}),g=h.useRef({limit:20,offset:0}),b=h.useCallback(async(w,j)=>{if(!(!e||!t)){o(!0),l(null);try{w&&(y.current=w);const _=j?.append?g.current.offset+g.current.limit:0,C=await Mx(e,t,{...y.current,limit:g.current.limit,offset:_});g.current={limit:C.limit,offset:C.offset},u(C.total),m(C.limit),p(C.offset),i(N=>j?.append?[...N,...C.items]:C.items)}catch(_){console.error("[CLI] Failed to load logs:",_),l("Failed to load logs")}finally{o(!1)}}},[e,t]),S=h.useCallback(async(w,j)=>!e||!t?null:Dx(e,t,w,j),[e,t]);h.useEffect(()=>{!e||!t||b()},[e,t,b]);const x=h.useCallback(async()=>{a||n.length>=c||await b(void 0,{append:!0})},[a,n.length,b,c]);return{items:n,isLoading:a,error:s,load:b,loadMore:x,total:c,limit:d,offset:v,downloadLog:S}}function Jh(e){if(!e)return"n/a";const t=new Date(e);return Number.isNaN(t.getTime())?"n/a":t.toLocaleString()}function YI({log:e,onDownload:t}){return f.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 rounded-xl border border-white/40 bg-white/70 px-4 py-3",children:[f.jsxs("div",{children:[f.jsxs("div",{className:"text-sm font-medium text-[var(--cli-ink-1)]",children:[Jh(e.time_start)," - ",Jh(e.time_end)]}),f.jsxs("div",{className:"mt-1 text-xs text-[var(--cli-muted-1)]",children:[e.entry_count," entries · ",e.format]})]}),t?f.jsxs(re,{variant:"secondary",size:"sm",onClick:()=>t(e.id),children:[f.jsx(pl,{className:"mr-2 h-3.5 w-3.5"}),"Download"]}):null]})}function Xi(e){if(!e)return;const t=new Date(e);if(!Number.isNaN(t.getTime()))return t.toISOString()}function GI(e){if(!e)return"n/a";const t=new Date(e);return Number.isNaN(t.getTime())?"n/a":t.toLocaleString()}async function XI(e){return e?e instanceof Blob?(await e.text()).split(`
|
|
107
107
|
`).map(r=>r.trim()).filter(Boolean).map(r=>{try{return JSON.parse(r)}catch{return{message:r}}}):Array.isArray(e)?e:typeof e=="string"?e.split(`
|
|
108
108
|
`).map(t=>t.trim()).filter(Boolean).map(t=>{try{return JSON.parse(t)}catch{return{message:t}}}):typeof e=="object"&&e?[e]:[]:[]}function un(e){return`"${e.replace(/"/g,'""')}"`}function ZI(e){const t=["timestamp","event_type","actor_user_id","level","message","payload"],r=e.map(n=>{const i=String(n.timestamp||n.ts||""),a=String(n.event_type||n.eventType||""),o=String(n.actor_user_id||n.user_id||""),s=String(n.level||n.severity||""),l=String(n.message||""),c=n.payload?JSON.stringify(n.payload):"";return[un(i),un(a),un(o),un(s),un(l),un(c)].join(",")});return[t.join(","),...r].join(`
|
|
109
|
-
`)}function QI({projectId:e,serverId:t,canViewAll:r}){const{items:n,isLoading:i,error:a,downloadLog:o,load:s,loadMore:l,total:c}=VI(e,t),{addToast:u}=di(),[d,m]=h.useState(""),[v,p]=h.useState(""),[y,g]=h.useState(""),[b,S]=h.useState(""),[x,w]=h.useState(""),[j,_]=h.useState([]),[C,N]=h.useState(!1),[E,M]=h.useState(null),[$,k]=h.useState(0),q=h.useRef(null),F=h.useCallback(async P=>{const L=await o(P,{download:!0});if(!L||!(L instanceof Blob))return;const T=URL.createObjectURL(L),D=document.createElement("a");D.href=T,D.download=`${P}.jsonl.gz`,D.click(),URL.revokeObjectURL(T)},[o]),K=h.useCallback(()=>{const P={},L=Xi(d),T=Xi(v);L&&(P.start_time=L),T&&(P.end_time=T),_([]),s(P)},[d,v,s]),G=h.useCallback(()=>{m(""),p(""),g(""),S(""),w(""),_([]),s({})},[s]),ne=h.useCallback(async()=>{if(n.length!==0){N(!0),M(null);try{const P=[];for(const L of n){const T=await o(L.id,{decompress:!0}),D=await XI(T);P.push(...D)}_(P)}catch(P){console.error("[CLI] Failed to load log entries:",P),M("Failed to load log entries")}finally{N(!1)}}},[o,n]),ee=h.useMemo(()=>{const P=y.trim().toLowerCase(),L=b.trim().toLowerCase(),T=x.trim().toLowerCase(),D=Xi(d),X=Xi(v);return j.filter(I=>{if(P&&!String(I.event_type||I.eventType||"").toLowerCase().includes(P)||L&&!String(I.actor_user_id||I.user_id||"").toLowerCase().includes(L)||T&&!String(I.level||I.severity||"").toLowerCase().includes(T))return!1;if(D||X){const se=I.timestamp||I.ts;if(se){const ie=new Date(String(se)).toISOString();if(D&&ie<D||X&&ie>X)return!1}}return!0})},[j,y,b,x,d,v]),Z=h.useCallback(P=>{if(ee.length!==0)try{const L=P==="json"?new Blob([JSON.stringify(ee,null,2)],{type:"application/json"}):new Blob([ZI(ee)],{type:"text/csv"}),T=URL.createObjectURL(L),D=document.createElement("a");D.href=T,D.download=`cli-logs-${t}.${P}`,D.click(),URL.revokeObjectURL(T)}catch{u({type:"error",title:"Export failed",description:"Unable to export log entries."})}},[u,ee,t]),te=44,le=q.current?.clientHeight??360,oe=ee.length*te,ue=Math.max(0,Math.floor($/te)-6),z=Math.min(ee.length,Math.ceil(($+le)/te)+6),H=ee.slice(ue,z),R=ue*te;return i?f.jsxs("div",{className:"flex items-center justify-center py-8 text-sm text-[var(--cli-muted-1)]",children:[f.jsx(pn,{className:"mr-2 h-4 w-4 animate-spin"}),"Loading logs..."]}):a?f.jsx("div",{className:"rounded-xl border border-white/40 bg-white/70 p-4 text-sm text-[var(--cli-muted-1)]",children:a}):f.jsxs("div",{className:"space-y-4",children:[f.jsx(Ge,{duration:.45,y:12,children:f.jsx(de,{className:"rounded-2xl border border-white/40 bg-white/70 p-4",children:f.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[f.jsxs("div",{children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:"Logs"}),f.jsx("div",{className:"text-xs text-[var(--cli-muted-1)]",children:"Audit terminal, file, and system operations."})]}),f.jsx("div",{className:"flex items-center gap-2",children:f.jsxs(re,{variant:"secondary",size:"sm",onClick:()=>s(),disabled:i,children:[f.jsx(Lt,{className:"mr-2 h-3.5 w-3.5"}),"Refresh list"]})})]})})}),f.jsx(Ge,{duration:.45,y:12,children:f.jsxs(de,{className:"rounded-2xl border border-white/40 bg-white/70 p-4 text-xs text-[var(--cli-muted-1)]",children:[f.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[f.jsxs("div",{children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:"Filters"}),f.jsxs("div",{className:"mt-1 text-[10px] text-[var(--cli-muted-1)]",children:[n.length," log objects loaded · ",c," total"]})]}),f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsxs(re,{size:"sm",onClick:K,children:[f.jsx(Lt,{className:"mr-2 h-3.5 w-3.5"}),"Apply"]}),f.jsx(re,{variant:"secondary",size:"sm",onClick:G,children:"Clear"})]})]}),f.jsxs("div",{className:"mt-3 flex flex-wrap items-end gap-3",children:[f.jsxs("div",{className:"flex flex-col gap-1",children:[f.jsx("label",{htmlFor:"cli-logs-start",children:"Start"}),f.jsx("input",{id:"cli-logs-start",type:"datetime-local",value:d,onChange:P=>m(P.target.value),className:"cli-focus-ring rounded-lg border border-white/50 bg-white/70 px-2 py-1 text-xs text-[var(--cli-ink-1)]"})]}),f.jsxs("div",{className:"flex flex-col gap-1",children:[f.jsx("label",{htmlFor:"cli-logs-end",children:"End"}),f.jsx("input",{id:"cli-logs-end",type:"datetime-local",value:v,onChange:P=>p(P.target.value),className:"cli-focus-ring rounded-lg border border-white/50 bg-white/70 px-2 py-1 text-xs text-[var(--cli-ink-1)]"})]}),f.jsxs("div",{className:"flex flex-col gap-1",children:[f.jsx("label",{htmlFor:"cli-logs-event",children:"Event"}),f.jsx("input",{id:"cli-logs-event",value:y,onChange:P=>g(P.target.value),placeholder:"terminal_input",className:"cli-focus-ring rounded-lg border border-white/50 bg-white/70 px-2 py-1 text-xs text-[var(--cli-ink-1)]"})]}),f.jsxs("div",{className:"flex flex-col gap-1",children:[f.jsx("label",{htmlFor:"cli-logs-actor",children:"Actor"}),f.jsx("input",{id:"cli-logs-actor",value:b,onChange:P=>S(P.target.value),placeholder:r?"user id":"Admin only",disabled:!r,className:"cli-focus-ring rounded-lg border border-white/50 bg-white/70 px-2 py-1 text-xs text-[var(--cli-ink-1)] disabled:opacity-60"})]}),f.jsxs("div",{className:"flex flex-col gap-1",children:[f.jsx("label",{htmlFor:"cli-logs-level",children:"Level"}),f.jsx("input",{id:"cli-logs-level",value:x,onChange:P=>w(P.target.value),placeholder:"warn",className:"cli-focus-ring rounded-lg border border-white/50 bg-white/70 px-2 py-1 text-xs text-[var(--cli-ink-1)]"})]})]})]})}),f.jsx(Ge,{delay:.05,duration:.45,y:12,children:f.jsxs("div",{className:"space-y-3",children:[n.map(P=>f.jsx(YI,{log:P,onDownload:F},P.id)),n.length===0?f.jsx("div",{className:"rounded-xl border border-white/40 bg-white/70 p-4 text-sm text-[var(--cli-muted-1)]",children:"No logs available yet."}):null,n.length>0&&n.length<c?f.jsxs("div",{className:"flex items-center justify-between rounded-xl border border-white/40 bg-white/70 px-4 py-2 text-xs text-[var(--cli-muted-1)]",children:[f.jsxs("span",{children:["Showing ",n.length," of ",c," log objects"]}),f.jsx(re,{variant:"secondary",size:"sm",onClick:l,disabled:i,children:"Load more"})]}):null]})}),f.jsxs(de,{className:"rounded-2xl border border-white/40 bg-white/70 p-4",children:[f.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:"Entries"}),f.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[f.jsxs(re,{variant:"secondary",size:"sm",onClick:ne,disabled:C,children:[f.jsx(pl,{className:"mr-2 h-3.5 w-3.5"}),"Load entries"]}),f.jsxs(re,{variant:"secondary",size:"sm",onClick:()=>Z("json"),disabled:ee.length===0,children:[f.jsx(l0,{className:"mr-2 h-3.5 w-3.5"}),"Export JSON"]}),f.jsx(re,{variant:"secondary",size:"sm",onClick:()=>Z("csv"),disabled:ee.length===0,children:"Export CSV"})]})]}),C?f.jsxs("div",{className:"mt-4 flex items-center text-sm text-[var(--cli-muted-1)]",children:[f.jsx(pn,{className:"mr-2 h-4 w-4 animate-spin"}),"Loading log entries..."]}):null,E?f.jsx("div",{className:"mt-4 text-sm text-[var(--cli-muted-1)]",children:E}):null,ee.length===0&&!C?f.jsx("div",{className:"mt-4 text-sm text-[var(--cli-muted-1)]",children:"Load entries to filter and export."}):null,ee.length>0?f.jsx("div",{ref:q,className:"mt-4 h-80 overflow-auto rounded-xl border border-white/40 bg-white/60",onScroll:P=>k(P.currentTarget.scrollTop),children:f.jsx("div",{style:{height:oe},className:"relative",children:f.jsx("div",{style:{transform:`translateY(${R}px)`},children:H.map((P,L)=>{const T=String(P.timestamp||P.ts||""),D=String(P.event_type||P.eventType||""),X=String(P.actor_user_id||P.user_id||""),I=String(P.level||P.severity||""),se=P.payload?JSON.stringify(P.payload):"";return f.jsxs("div",{className:"flex items-center justify-between gap-3 border-b border-white/30 px-3 py-2 text-xs text-[var(--cli-muted-1)]",children:[f.jsx("div",{className:"min-w-[160px] text-[var(--cli-ink-1)]",children:GI(T)}),f.jsx("div",{className:"min-w-[120px] text-[var(--cli-ink-1)]",children:D||"event"}),f.jsx("div",{className:"min-w-[120px]",children:X||"n/a"}),f.jsx("div",{className:"min-w-[80px]",children:I||"n/a"}),f.jsx("div",{className:"flex-1 truncate text-[10px] text-[var(--cli-muted-1)]",children:se||P.message||""})]},`${ue+L}-${T}-${D}`)})})})}):null]})]})}function JI(e){if(!e)return"n/a";const t=new Date(e);return Number.isNaN(t.getTime())?"n/a":t.toLocaleString()}function aa(e){const t=e.toLowerCase();return t.includes("completed")||t.includes("complete")||t.includes("done")||t.includes("success")||t.includes("failed")||t.includes("error")||t.includes("cancelled")||t.includes("canceled")}function oa(e){const t=e.toLowerCase();return t.includes("failed")||t.includes("error")||t.includes("cancelled")||t.includes("canceled")}function eL(e){const t=aa(e);return oa(e)?"bg-[var(--cli-status-offline)] text-[var(--cli-ink-0)]":t?"bg-[var(--cli-accent-emerald)] text-[var(--cli-ink-0)]":"bg-[var(--cli-status-warning)] text-[var(--cli-ink-0)]"}function tL({projectId:e,serverId:t}){const[r,n]=h.useState([]),[i,a]=h.useState(!1),[o,s]=h.useState(null),l=Se(p=>p.addNotification),c=Se(p=>p.servers),u=h.useRef(new Map),d=h.useRef(!1),m=h.useRef(null),v=h.useMemo(()=>{const p=r.filter(b=>!aa(b.status)).length,y=r.filter(b=>oa(b.status)).length,g=r.filter(b=>aa(b.status)&&!oa(b.status)).length;return{running:p,failed:y,completed:g}},[r]);return h.useEffect(()=>{let p=!0;const y=async()=>{a(!0),s(null);try{const b=await Ix(e,t);if(p){if(n(b),d.current){const S=c.find(x=>x.id===t)?.name||c.find(x=>x.id===t)?.hostname||"CLI server";b.forEach(x=>{const w=u.current.get(x.id);if(w&&w!==x.status&&aa(x.status)){const j=oa(x.status),_=j?"Task failed":"Task completed";l({id:crypto.randomUUID(),title:_,body:`${S}: ${x.title}`,level:j?"error":"success",createdAt:Date.now()}),_m(_,`${S}: ${x.title}`)}})}u.current=new Map(b.map(S=>[S.id,S.status])),d.current=!0}}catch{p&&s("Failed to load tasks.")}finally{p&&a(!1)}},g=window.setInterval(()=>{y()},15e3);return y(),()=>{p=!1,window.clearInterval(g)}},[e,t,c,l]),h.useEffect(()=>{if(!m.current||r.length===0||typeof window>"u"||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;let y=!1;const g=m.current.querySelectorAll("[data-cli-task-item]");if(g.length!==0)return ml(async()=>{const{default:b}=await import("./index-wQ7RIIRd.js").then(S=>S.i);return{default:b}},__vite__mapDeps([0,1,2,3,4,5])).then(({default:b})=>{y||b({targets:g,opacity:[0,1],translateY:[8,0],delay:b.stagger(50),duration:420,easing:"easeOutCubic"})}).catch(()=>{}),()=>{y=!0}},[r]),f.jsxs("div",{className:"space-y-4",children:[f.jsx(Ge,{duration:.4,y:10,children:f.jsxs(de,{className:"rounded-2xl border border-white/40 bg-white/70 p-4",children:[f.jsxs("div",{className:"flex items-center gap-2 text-sm font-semibold text-[var(--cli-ink-1)]",children:[f.jsx(m0,{className:"h-4 w-4"}),"Task overview"]}),f.jsxs("div",{className:"mt-3 grid gap-3 sm:grid-cols-3 text-xs text-[var(--cli-muted-1)]",children:[f.jsxs("div",{className:"rounded-lg border border-white/40 bg-white/60 px-3 py-2",children:["Running: ",f.jsx("span",{className:"font-semibold text-[var(--cli-ink-1)]",children:v.running})]}),f.jsxs("div",{className:"rounded-lg border border-white/40 bg-white/60 px-3 py-2",children:["Completed: ",f.jsx("span",{className:"font-semibold text-[var(--cli-ink-1)]",children:v.completed})]}),f.jsxs("div",{className:"rounded-lg border border-white/40 bg-white/60 px-3 py-2",children:["Failed: ",f.jsx("span",{className:"font-semibold text-[var(--cli-ink-1)]",children:v.failed})]})]})]})}),i?f.jsxs("div",{className:"flex items-center justify-center py-8 text-sm text-[var(--cli-muted-1)]",children:[f.jsx(pn,{className:"mr-2 h-4 w-4 animate-spin"}),"Loading tasks..."]}):o?f.jsx(de,{className:"rounded-xl border border-white/40 bg-white/70 p-4 text-sm text-[var(--cli-muted-1)]",children:o}):r.length===0?f.jsx(de,{className:"rounded-xl border border-white/40 bg-white/70 p-4 text-sm text-[var(--cli-muted-1)]",children:"No tasks yet. Task activity will appear here once the CLI agent starts running jobs."}):f.jsx(Ge,{delay:.05,duration:.4,y:10,children:f.jsx("div",{ref:m,className:"space-y-3",children:r.map(p=>f.jsxs("div",{"data-cli-task-item":!0,className:"rounded-xl border border-white/40 bg-white/70 px-4 py-3 text-sm text-[var(--cli-ink-1)]",children:[f.jsxs("div",{className:"flex items-center justify-between gap-2",children:[f.jsx("span",{className:"font-medium",children:p.title}),f.jsx("span",{className:Ae("rounded-full px-2 py-0.5 text-[10px] font-medium",eL(p.status)),children:p.status})]}),f.jsxs("div",{className:"mt-1 text-xs text-[var(--cli-muted-1)]",children:["Updated: ",JI(p.updated_at)]})]},p.id))})})]})}function rL(e){if(!e)return"n/a";const t=new Date(e);return Number.isNaN(t.getTime())?"n/a":t.toLocaleString()}function nL(e){const t=e.toLowerCase();return t.includes("high")||t.includes("critical")?"bg-[var(--cli-status-offline)] text-[var(--cli-ink-0)]":t.includes("medium")||t.includes("warn")?"bg-[var(--cli-status-warning)] text-[var(--cli-ink-0)]":"bg-[var(--cli-accent-emerald)] text-[var(--cli-ink-0)]"}function iL({projectId:e,serverId:t}){const[r,n]=h.useState([]),[i,a]=h.useState(!1),[o,s]=h.useState(null),l=h.useRef(null),c=h.useMemo(()=>{const u=r.filter(v=>{const p=v.severity.toLowerCase();return p.includes("high")||p.includes("critical")}).length,d=r.filter(v=>v.severity.toLowerCase().includes("medium")).length,m=r.length-u-d;return{high:u,medium:d,low:m}},[r]);return h.useEffect(()=>{let u=!0;return(async()=>{a(!0),s(null);try{const m=await Lx(e,t);u&&n(m)}catch{u&&s("Failed to load findings.")}finally{u&&a(!1)}})(),()=>{u=!1}},[e,t]),h.useEffect(()=>{if(!l.current||r.length===0||typeof window>"u"||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;let d=!1;const m=l.current.querySelectorAll("[data-cli-finding-item]");if(m.length!==0)return ml(async()=>{const{default:v}=await import("./index-wQ7RIIRd.js").then(p=>p.i);return{default:v}},__vite__mapDeps([0,1,2,3,4,5])).then(({default:v})=>{d||v({targets:m,opacity:[0,1],translateY:[8,0],delay:v.stagger(50),duration:420,easing:"easeOutCubic"})}).catch(()=>{}),()=>{d=!0}},[r]),f.jsxs("div",{className:"space-y-4",children:[f.jsx(Ge,{duration:.4,y:10,children:f.jsxs(de,{className:"rounded-2xl border border-white/40 bg-white/70 p-4",children:[f.jsxs("div",{className:"flex items-center gap-2 text-sm font-semibold text-[var(--cli-ink-1)]",children:[f.jsx(Zi,{className:"h-4 w-4"}),"Findings overview"]}),f.jsxs("div",{className:"mt-3 grid gap-3 sm:grid-cols-3 text-xs text-[var(--cli-muted-1)]",children:[f.jsxs("div",{className:"rounded-lg border border-white/40 bg-white/60 px-3 py-2",children:["High: ",f.jsx("span",{className:"font-semibold text-[var(--cli-ink-1)]",children:c.high})]}),f.jsxs("div",{className:"rounded-lg border border-white/40 bg-white/60 px-3 py-2",children:["Medium: ",f.jsx("span",{className:"font-semibold text-[var(--cli-ink-1)]",children:c.medium})]}),f.jsxs("div",{className:"rounded-lg border border-white/40 bg-white/60 px-3 py-2",children:["Low: ",f.jsx("span",{className:"font-semibold text-[var(--cli-ink-1)]",children:c.low})]})]})]})}),i?f.jsxs("div",{className:"flex items-center justify-center py-8 text-sm text-[var(--cli-muted-1)]",children:[f.jsx(pn,{className:"mr-2 h-4 w-4 animate-spin"}),"Loading findings..."]}):o?f.jsx(de,{className:"rounded-xl border border-white/40 bg-white/70 p-4 text-sm text-[var(--cli-muted-1)]",children:o}):r.length===0?f.jsx(de,{className:"rounded-xl border border-white/40 bg-white/70 p-4 text-sm text-[var(--cli-muted-1)]",children:"No findings yet. Any detected anomalies or insights will appear here."}):f.jsx(Ge,{delay:.05,duration:.4,y:10,children:f.jsx("div",{ref:l,className:"space-y-3",children:r.map(u=>f.jsxs("div",{"data-cli-finding-item":!0,className:"rounded-xl border border-white/40 bg-white/70 px-4 py-3 text-sm text-[var(--cli-ink-1)]",children:[f.jsxs("div",{className:"flex items-center justify-between gap-2",children:[f.jsx("span",{className:"font-medium",children:u.title}),f.jsx("span",{className:Ae("rounded-full px-2 py-0.5 text-[10px] font-medium",nL(u.severity)),children:u.severity})]}),f.jsxs("div",{className:"mt-1 text-xs text-[var(--cli-muted-1)]",children:["Updated: ",rL(u.updated_at)]})]},u.id))})})]})}const aL=()=>{try{return crypto.randomUUID()}catch{return`method-${Date.now()}-${Math.random().toString(16).slice(2)}`}},oL=e=>{if(!e)return"n/a";const t=new Date(e);return Number.isNaN(t.getTime())?String(e):t.toLocaleString()};function sL({projectId:e,serverId:t,canCreate:r}){const[n,i]=h.useState([]),[a,o]=h.useState(!1),[s,l]=h.useState(null),[c,u]=h.useState(""),[d,m]=h.useState(""),[v,p]=h.useState(""),[y,g]=h.useState(""),[b,S]=h.useState(!0),[x,w]=h.useState(!0),[j,_]=h.useState(null),[C,N]=h.useState(!1),[E,M]=h.useState(null),[$,k]=h.useState(null),[q,F]=h.useState(1),K=h.useRef(null),G=c.trim().length>0,ne=G&&r&&!C,te=ne&&x&&q===4,le=h.useCallback(async()=>{o(!0),l(null);try{const P=await Rx(e,t);i(P.methods||[])}catch{l("Unable to load methods.")}finally{o(!1)}},[e,t]),oe=h.useMemo(()=>({onMethodStatus:P=>{const L=Ir(P),T=L?.request_id;if(!K.current||T&&T!==K.current)return;const D={step:typeof L?.step=="number"?L.step:void 0,message:typeof L?.message=="string"?L.message:void 0,percent:typeof L?.percent=="number"?L.percent:void 0};k(D)},onMethodDone:P=>{const T=Ir(P)?.request_id;K.current&&(T&&T!==K.current||(K.current=null,N(!1),_(null),k({step:6,message:"Method created",percent:100}),w(!1),le()))},onMethodError:P=>{const L=Ir(P),T=L?.request_id;if(!K.current||T&&T!==K.current)return;K.current=null,N(!1),_(null);const D=typeof L?.error=="string"?L.error:"Method creation failed.";M(D),w(!1)}}),[le]);gm({projectId:e,serverId:t,handlers:oe}),h.useEffect(()=>{le(),_(null),N(!1),M(null),k(null),K.current=null},[le]),h.useEffect(()=>{if(!te){_(null);return}_(4)},[te,c,d,v,y]);const ue=h.useCallback(async()=>{if(!ne)return;N(!0),M(null),k({step:0,message:"Queued for creation",percent:0});const P=aL();try{const L=await $x(e,t,{session_id:P,method_name:b?void 0:d.trim()||void 0,paper_source:c.trim(),topic:v.trim()||void 0,code_source:y.trim()||void 0,auto_name:b});K.current=L.request_id||P}catch{N(!1),M("Failed to queue method creation.")}},[b,ne,y,d,c,e,t,v]);h.useEffect(()=>{if(j===null)return;if(j<=0){_(null),ue();return}const P=window.setTimeout(()=>{_(L=>L!=null?L-1:L)},1e3);return()=>window.clearTimeout(P)},[j,ue]);const z=()=>{u(""),m(""),p(""),g(""),S(!0),w(!0),_(null),M(null),k(null),F(1)},H=h.useMemo(()=>[{label:"Paper source",ready:c.trim().length>0},{label:"Method name",ready:b||d.trim().length>0,optional:!0},{label:"Topic",ready:v.trim().length>0,optional:!0},{label:"Code repo",ready:y.trim().length>0,optional:!0}],[b,y,d,c,v]),R=Math.min(100,Math.max(0,$?.percent??0));return f.jsxs("div",{className:"grid gap-6 xl:grid-cols-[minmax(0,1.1fr)_minmax(0,0.9fr)]",children:[f.jsxs("div",{className:"space-y-6",children:[f.jsxs(de,{className:"cli-card rounded-2xl border border-white/40 bg-white/70 p-6 shadow-[0_10px_24px_rgba(20,20,20,0.08)]",children:[f.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[f.jsxs("div",{children:[f.jsx("div",{className:"cli-h2 text-[var(--cli-ink-1)]",children:"Method report"}),f.jsx("div",{className:"text-xs text-[var(--cli-muted-1)]",children:"Provide core inputs. Creation runs automatically when required fields are ready."})]}),f.jsx("div",{className:"rounded-full border border-white/50 bg-white/80 px-3 py-1 text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:"Session anchored"})]}),f.jsxs("div",{className:"mt-5 grid gap-4 md:grid-cols-2",children:[f.jsxs("div",{className:"rounded-xl border border-white/40 bg-white/80 px-4 py-3",children:[f.jsx("div",{className:"text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:"Project"}),f.jsx("div",{className:"mt-1 text-sm font-semibold text-[var(--cli-ink-1)]",children:e})]}),f.jsxs("div",{className:"rounded-xl border border-white/40 bg-white/80 px-4 py-3",children:[f.jsx("div",{className:"text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:"Server"}),f.jsx("div",{className:"mt-1 text-sm font-semibold text-[var(--cli-ink-1)]",children:t})]})]})]}),f.jsx(de,{className:"cli-card rounded-2xl border border-white/40 bg-white/70 p-6 shadow-[0_10px_24px_rgba(20,20,20,0.08)]",children:f.jsxs(k0,{initialStep:q,onStepChange:F,onFinalStepCompleted:()=>void ue(),backButtonText:"Previous",nextButtonText:(P,L)=>P>=L?C?"Creating...":"Create method":"Next",nextDisabled:(P,L)=>P===1?!G:P>=L?!ne:!1,backDisabled:()=>C,children:[f.jsx(Di,{title:"Paper source",description:"Provide a PDF/MD path or a URL.",children:f.jsxs("div",{className:"space-y-3",children:[f.jsxs("div",{className:"flex items-center justify-between text-xs text-[var(--cli-muted-1)]",children:[f.jsx("span",{children:"Required input"}),f.jsx("span",{className:"rounded-full border border-white/60 bg-white/70 px-2 py-1 text-[10px] uppercase tracking-wide text-[var(--cli-status-busy)]",children:"Required"})]}),f.jsx("input",{value:c,onChange:P=>u(P.target.value),placeholder:"https://arxiv.org/abs/0000.00000 or /path/to/paper.pdf",className:"cli-focus-ring w-full rounded-lg border border-white/40 bg-white/80 px-3 py-2 text-sm text-[var(--cli-ink-1)] outline-none"}),f.jsx("p",{className:"text-xs text-[var(--cli-muted-1)]",children:"Links to arxiv/openreview are parsed automatically."})]})}),f.jsx(Di,{title:"Method identity",description:"Supply a name or let the model derive one.",children:f.jsxs("div",{className:"space-y-3",children:[f.jsxs("div",{className:"flex items-center justify-between text-xs text-[var(--cli-muted-1)]",children:[f.jsx("span",{children:"Optional input"}),f.jsx("span",{className:"rounded-full border border-white/60 bg-white/70 px-2 py-1 text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:"Optional"})]}),f.jsxs("div",{className:"grid gap-3 md:grid-cols-[minmax(0,1fr)_auto]",children:[f.jsx("input",{value:d,onChange:P=>{const L=P.target.value;m(L),L.trim()&&S(!1)},placeholder:"Contrastive Ablation Method",disabled:b,className:Ae("cli-focus-ring w-full rounded-lg border border-white/40 bg-white/80 px-3 py-2 text-sm text-[var(--cli-ink-1)] outline-none",b&&"opacity-60")}),f.jsxs("label",{className:"flex items-center gap-2 rounded-lg border border-white/40 bg-white/80 px-3 py-2 text-xs text-[var(--cli-muted-1)]",children:[f.jsx("input",{type:"checkbox",checked:b,onChange:P=>{const L=P.target.checked;S(L),L&&m("")},className:"h-4 w-4 accent-[var(--cli-accent-olive)]"}),"Auto-name"]})]})]})}),f.jsx(Di,{title:"Focus and code",description:"Optionally narrow scope or point to code.",children:f.jsxs("div",{className:"grid gap-4",children:[f.jsxs("div",{children:[f.jsx("label",{className:"text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:"Topic"}),f.jsx("input",{value:v,onChange:P=>p(P.target.value),placeholder:"Transformer pruning / Diffusion speedup",className:"cli-focus-ring mt-2 w-full rounded-lg border border-white/40 bg-white/80 px-3 py-2 text-sm text-[var(--cli-ink-1)] outline-none"})]}),f.jsxs("div",{children:[f.jsx("label",{className:"text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:"Code repo or path"}),f.jsx("input",{value:y,onChange:P=>g(P.target.value),placeholder:"https://github.com/org/repo or /path/to/code",className:"cli-focus-ring mt-2 w-full rounded-lg border border-white/40 bg-white/80 px-3 py-2 text-sm text-[var(--cli-ink-1)] outline-none"})]})]})}),f.jsx(Di,{title:"Run controls",description:"Review the report and submit.",children:f.jsxs("div",{className:"space-y-4",children:[f.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 text-xs text-[var(--cli-muted-1)]",children:[f.jsx("span",{children:"Auto-run begins on the final step."}),f.jsxs("label",{className:"flex items-center gap-2",children:[f.jsx("input",{type:"checkbox",checked:x,onChange:P=>w(P.target.checked),className:"h-4 w-4 accent-[var(--cli-accent-olive)]"}),"Auto-run enabled"]})]}),j!==null&&te?f.jsxs("div",{className:"flex items-center justify-between rounded-xl border border-white/40 bg-white/80 px-4 py-3 text-xs text-[var(--cli-muted-1)]",children:[f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx(x0,{className:"h-4 w-4 text-[var(--cli-muted-1)]"}),"Auto-creating in ",j,"s"]}),f.jsx(re,{variant:"secondary",size:"sm",onClick:()=>_(null),children:"Cancel"})]}):null,f.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[f.jsx(re,{variant:"secondary",onClick:z,disabled:C,children:"Reset"}),r?null:f.jsxs("div",{className:"flex items-center gap-2 text-xs text-[var(--cli-status-error)]",children:[f.jsx(Zi,{className:"h-4 w-4"}),"You do not have permission to create methods."]})]}),E?f.jsxs("div",{className:"flex items-center gap-2 text-xs text-[var(--cli-status-error)]",children:[f.jsx(Zi,{className:"h-4 w-4"}),E]}):null]})})]})})]}),f.jsxs("div",{className:"space-y-6",children:[f.jsxs(de,{className:"cli-card rounded-2xl border border-white/40 bg-white/70 p-6 shadow-[0_10px_24px_rgba(20,20,20,0.08)]",children:[f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsxs("div",{children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:"Checklist"}),f.jsx("div",{className:"text-xs text-[var(--cli-muted-1)]",children:"Required vs optional inputs"})]}),f.jsx("span",{className:"rounded-full border border-white/50 bg-white/80 px-3 py-1 text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:"Report status"})]}),f.jsx("div",{className:"mt-4 space-y-2 text-xs",children:H.map(P=>f.jsxs("div",{className:"flex items-center justify-between rounded-lg border border-white/40 bg-white/80 px-3 py-2",children:[f.jsx("span",{className:"text-[var(--cli-ink-1)]",children:P.label}),f.jsxs("span",{className:Ae("flex items-center gap-1 text-[10px] uppercase tracking-wide",P.ready?"text-[var(--cli-status-online)]":"text-[var(--cli-muted-1)]"),children:[P.ready?f.jsx(lm,{className:"h-3 w-3"}):null,P.optional?"Optional":"Required"]})]},P.label))})]}),f.jsxs(de,{className:"cli-card rounded-2xl border border-white/40 bg-white/70 p-6 shadow-[0_10px_24px_rgba(20,20,20,0.08)]",children:[f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsxs("div",{children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:"Creation status"}),f.jsx("div",{className:"text-xs text-[var(--cli-muted-1)]",children:"Live progress from the CLI agent"})]}),f.jsx("div",{className:"text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:C?"Running":"Idle"})]}),f.jsxs("div",{className:"mt-4 rounded-xl border border-white/40 bg-white/80 px-4 py-3",children:[f.jsxs("div",{className:"flex items-center justify-between text-xs text-[var(--cli-muted-1)]",children:[f.jsx("span",{children:$?.message||"Awaiting input"}),f.jsx("span",{children:$?.percent?`${$?.percent}%`:"0%"})]}),f.jsx("div",{className:"mt-3 h-2 w-full rounded-full bg-white/60",children:f.jsx("div",{className:"h-full rounded-full bg-[var(--cli-accent-olive)] transition-all",style:{width:`${R}%`}})}),$?.step?f.jsxs("div",{className:"mt-2 text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:["Step ",$.step]}):null]})]}),f.jsxs(de,{className:"cli-card rounded-2xl border border-white/40 bg-white/70 p-6 shadow-[0_10px_24px_rgba(20,20,20,0.08)]",children:[f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsxs("div",{children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:"Methods"}),f.jsx("div",{className:"text-xs text-[var(--cli-muted-1)]",children:"Registered methods for this project"})]}),f.jsxs(re,{variant:"secondary",size:"sm",onClick:le,disabled:a,children:[f.jsx(Lt,{className:Ae("mr-2 h-4 w-4",a&&"animate-spin")}),"Refresh"]})]}),a?f.jsx("div",{className:"mt-6 flex items-center justify-center text-xs text-[var(--cli-muted-1)]",children:"Loading methods..."}):s?f.jsxs("div",{className:"mt-6 flex items-center gap-2 text-xs text-[var(--cli-status-error)]",children:[f.jsx(Zi,{className:"h-4 w-4"}),s]}):n.length===0?f.jsxs("div",{className:"mt-6 flex flex-col items-center gap-2 rounded-xl border border-dashed border-white/40 bg-white/60 px-4 py-6 text-xs text-[var(--cli-muted-1)]",children:[f.jsx(la,{className:"h-5 w-5"}),"No methods recorded yet."]}):f.jsx("div",{className:"mt-4 space-y-3",children:n.map(P=>{const L=P.method_name||P.method_slug||P.method_id||"Method",T=P.status||"created";return f.jsxs("div",{className:"rounded-xl border border-white/40 bg-white/80 px-4 py-3",children:[f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsxs("div",{children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:L}),f.jsx("div",{className:"text-[11px] text-[var(--cli-muted-1)]",children:P.method_id||"unknown id"})]}),f.jsx("span",{className:"rounded-full border border-white/50 bg-white/90 px-2 py-1 text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:T})]}),f.jsxs("div",{className:"mt-2 grid gap-1 text-xs text-[var(--cli-muted-1)]",children:[f.jsxs("div",{children:["Paper: ",P.paper?.source||"n/a"]}),f.jsxs("div",{children:["Code: ",P.code?.source||"n/a"]}),f.jsxs("div",{children:["Created: ",oL(P.created_at)]})]})]},P.method_id||P.method_slug||L)})})]})]})]})}const lL=e=>e==="offline"||e==="error",cL=e=>{if(!e)return"n/a";const t=new Date(e);if(Number.isNaN(t.getTime()))return"n/a";const r=Date.now()-t.getTime();return r<6e4?"just now":r<36e5?`${Math.round(r/6e4)}m ago`:r<864e5?`${Math.round(r/36e5)}h ago`:`${Math.round(r/864e5)}d ago`},uL=e=>{if(!e)return"n/a";const t=new Date(e);return Number.isNaN(t.getTime())?"n/a":t.toLocaleString()};function HL({context:e,setTitle:t}){const{t:r}=rr("cli"),n=zx("cli.connect"),i=e.customData,a=typeof i?.projectId=="string"?i.projectId:void 0,o=!!(i?.readOnly||i?.readonly),[s,l]=h.useState(!1),[c,u]=h.useState("overview"),[d,m]=h.useState(!0),v=Se(F=>F.servers),p=Se(F=>F.activeServerId),y=Se(F=>F.isLoading),g=Se(F=>F.loadServers),b=Se(F=>F.connectionStatus),{ensureConversation:S}=rw();h.useEffect(()=>{t("CLI")},[t]),h.useEffect(()=>{a&&g(a)},[a,g]),h.useEffect(()=>{a&&S(a)},[a,S]);const x=h.useMemo(()=>v.find(F=>F.id===p),[v,p]),w=x?lL(x.status):!1,j=n0({projectId:a,serverId:x?.id??null,readOnly:o}),_=j.permission==="admin"||j.permission==="owner",C=j.capabilities.terminal_input,N=j.capabilities.file_edit,E=j.capabilities.file_delete,M=j.capabilities.file_upload,$=j.capabilities.file_download,k=j.capabilities.disconnect_server,q=h.useMemo(()=>{const F=[{value:"methods",label:r("tab_methods")},{value:"terminal",label:r("tab_terminal")},{value:"files",label:r("tab_files")},{value:"logs",label:r("tab_logs")},{value:"tasks",label:r("tab_tasks")},{value:"findings",label:r("tab_findings")}];return F.push({value:"overview",label:r("tab_overview")}),F},[r]);return a?!n.isEntitlementLoading&&!n.isMaxEntitled?f.jsx("div",{className:"cli-root flex h-full items-center justify-center",children:f.jsxs("div",{className:"rounded-2xl border border-white/40 bg-white/70 px-4 py-3 text-center",children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:r("plan_access_required")}),f.jsx("div",{className:"mt-1 text-xs text-[var(--cli-muted-1)]",children:r("max_only_desc")})]})}):y?f.jsx("div",{className:"cli-root flex h-full items-center justify-center",children:f.jsx(pn,{className:"h-6 w-6 animate-spin text-[var(--cli-muted-1)]"})}):f.jsxs("div",{className:"cli-root relative flex h-full overflow-hidden",children:[f.jsx(Bx,{animated:!1}),f.jsx("div",{className:`shrink-0 border-r border-white/40 bg-[var(--cli-bg-1)] transition-all ${d?"w-16":"w-72"}`,children:f.jsx(M0,{readOnly:!_,onBind:()=>l(!0),collapsed:d,onToggleCollapse:()=>m(F=>!F),tabs:q,activeTab:c,onTabChange:F=>u(F)})}),f.jsx("div",{className:"relative flex flex-1 flex-col bg-[var(--cli-bg-0)]",children:x?f.jsx(f.Fragment,{children:f.jsx("div",{className:"flex-1 min-h-0 overflow-hidden px-6 pb-4 pt-6",children:f.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[w?f.jsxs("div",{className:"mb-3 rounded-xl border border-white/40 bg-white/70 px-4 py-3 text-sm text-[var(--cli-muted-1)]",children:[f.jsx("div",{className:"font-semibold text-[var(--cli-ink-1)]",children:r("cli_server_disconnected")}),f.jsx("div",{className:"mt-1 text-[11px] text-[var(--cli-muted-2)]",children:r("last_heartbeat",{relative:cL(x.last_seen_at),timestamp:uL(x.last_seen_at)})})]}):null,c==="terminal"?f.jsx("div",{className:"flex-1 min-h-0 cli-tab-enter",children:f.jsx(nw,{projectId:a,server:x,readOnly:!C,canUnbind:k})},c):f.jsx(Hn,{className:"flex-1 min-h-0 pr-2",children:f.jsxs("div",{className:"h-full min-h-0 cli-tab-enter",children:[c==="overview"?f.jsx(BI,{projectId:a,server:x,connectionStatus:b,accessLabel:j.permission,canUnbind:k}):null,c==="methods"?f.jsx(sL,{projectId:a,serverId:x.id,canCreate:N}):null,c==="files"?f.jsx(HI,{projectId:a,serverId:x.id,serverRoot:x.server_root,serverStatus:x.status,serverLastSeenAt:x.last_seen_at,readOnly:!N,canDelete:E,canUpload:M,canDownload:$}):null,c==="logs"?f.jsx(QI,{projectId:a,serverId:x.id,canViewAll:j.capabilities.view_all_user_logs}):null,c==="tasks"?f.jsx(tL,{projectId:a,serverId:x.id}):null,c==="findings"?f.jsx(iL,{projectId:a,serverId:x.id}):null]},c)})]})})}):f.jsx("div",{className:"flex h-full items-center justify-center p-6",children:v.length===0?f.jsx(iw,{onBind:()=>l(!0)}):f.jsx("p",{className:"text-[var(--cli-muted-1)]",children:r("select_server_from_list")})})}),f.jsx(ow,{open:s,onOpenChange:l})]}):f.jsx("div",{className:"cli-root flex h-full items-center justify-center",children:f.jsx("p",{className:"text-[var(--cli-muted-1)]",children:r("no_project_selected")})})}export{HL as default};
|
|
109
|
+
`)}function QI({projectId:e,serverId:t,canViewAll:r}){const{items:n,isLoading:i,error:a,downloadLog:o,load:s,loadMore:l,total:c}=VI(e,t),{addToast:u}=di(),[d,m]=h.useState(""),[v,p]=h.useState(""),[y,g]=h.useState(""),[b,S]=h.useState(""),[x,w]=h.useState(""),[j,_]=h.useState([]),[C,N]=h.useState(!1),[E,M]=h.useState(null),[$,k]=h.useState(0),q=h.useRef(null),F=h.useCallback(async P=>{const L=await o(P,{download:!0});if(!L||!(L instanceof Blob))return;const T=URL.createObjectURL(L),D=document.createElement("a");D.href=T,D.download=`${P}.jsonl.gz`,D.click(),URL.revokeObjectURL(T)},[o]),K=h.useCallback(()=>{const P={},L=Xi(d),T=Xi(v);L&&(P.start_time=L),T&&(P.end_time=T),_([]),s(P)},[d,v,s]),G=h.useCallback(()=>{m(""),p(""),g(""),S(""),w(""),_([]),s({})},[s]),ne=h.useCallback(async()=>{if(n.length!==0){N(!0),M(null);try{const P=[];for(const L of n){const T=await o(L.id,{decompress:!0}),D=await XI(T);P.push(...D)}_(P)}catch(P){console.error("[CLI] Failed to load log entries:",P),M("Failed to load log entries")}finally{N(!1)}}},[o,n]),ee=h.useMemo(()=>{const P=y.trim().toLowerCase(),L=b.trim().toLowerCase(),T=x.trim().toLowerCase(),D=Xi(d),X=Xi(v);return j.filter(I=>{if(P&&!String(I.event_type||I.eventType||"").toLowerCase().includes(P)||L&&!String(I.actor_user_id||I.user_id||"").toLowerCase().includes(L)||T&&!String(I.level||I.severity||"").toLowerCase().includes(T))return!1;if(D||X){const se=I.timestamp||I.ts;if(se){const ie=new Date(String(se)).toISOString();if(D&&ie<D||X&&ie>X)return!1}}return!0})},[j,y,b,x,d,v]),Z=h.useCallback(P=>{if(ee.length!==0)try{const L=P==="json"?new Blob([JSON.stringify(ee,null,2)],{type:"application/json"}):new Blob([ZI(ee)],{type:"text/csv"}),T=URL.createObjectURL(L),D=document.createElement("a");D.href=T,D.download=`cli-logs-${t}.${P}`,D.click(),URL.revokeObjectURL(T)}catch{u({type:"error",title:"Export failed",description:"Unable to export log entries."})}},[u,ee,t]),te=44,le=q.current?.clientHeight??360,oe=ee.length*te,ue=Math.max(0,Math.floor($/te)-6),z=Math.min(ee.length,Math.ceil(($+le)/te)+6),H=ee.slice(ue,z),R=ue*te;return i?f.jsxs("div",{className:"flex items-center justify-center py-8 text-sm text-[var(--cli-muted-1)]",children:[f.jsx(pn,{className:"mr-2 h-4 w-4 animate-spin"}),"Loading logs..."]}):a?f.jsx("div",{className:"rounded-xl border border-white/40 bg-white/70 p-4 text-sm text-[var(--cli-muted-1)]",children:a}):f.jsxs("div",{className:"space-y-4",children:[f.jsx(Ge,{duration:.45,y:12,children:f.jsx(de,{className:"rounded-2xl border border-white/40 bg-white/70 p-4",children:f.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[f.jsxs("div",{children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:"Logs"}),f.jsx("div",{className:"text-xs text-[var(--cli-muted-1)]",children:"Audit terminal, file, and system operations."})]}),f.jsx("div",{className:"flex items-center gap-2",children:f.jsxs(re,{variant:"secondary",size:"sm",onClick:()=>s(),disabled:i,children:[f.jsx(Lt,{className:"mr-2 h-3.5 w-3.5"}),"Refresh list"]})})]})})}),f.jsx(Ge,{duration:.45,y:12,children:f.jsxs(de,{className:"rounded-2xl border border-white/40 bg-white/70 p-4 text-xs text-[var(--cli-muted-1)]",children:[f.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[f.jsxs("div",{children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:"Filters"}),f.jsxs("div",{className:"mt-1 text-[10px] text-[var(--cli-muted-1)]",children:[n.length," log objects loaded · ",c," total"]})]}),f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsxs(re,{size:"sm",onClick:K,children:[f.jsx(Lt,{className:"mr-2 h-3.5 w-3.5"}),"Apply"]}),f.jsx(re,{variant:"secondary",size:"sm",onClick:G,children:"Clear"})]})]}),f.jsxs("div",{className:"mt-3 flex flex-wrap items-end gap-3",children:[f.jsxs("div",{className:"flex flex-col gap-1",children:[f.jsx("label",{htmlFor:"cli-logs-start",children:"Start"}),f.jsx("input",{id:"cli-logs-start",type:"datetime-local",value:d,onChange:P=>m(P.target.value),className:"cli-focus-ring rounded-lg border border-white/50 bg-white/70 px-2 py-1 text-xs text-[var(--cli-ink-1)]"})]}),f.jsxs("div",{className:"flex flex-col gap-1",children:[f.jsx("label",{htmlFor:"cli-logs-end",children:"End"}),f.jsx("input",{id:"cli-logs-end",type:"datetime-local",value:v,onChange:P=>p(P.target.value),className:"cli-focus-ring rounded-lg border border-white/50 bg-white/70 px-2 py-1 text-xs text-[var(--cli-ink-1)]"})]}),f.jsxs("div",{className:"flex flex-col gap-1",children:[f.jsx("label",{htmlFor:"cli-logs-event",children:"Event"}),f.jsx("input",{id:"cli-logs-event",value:y,onChange:P=>g(P.target.value),placeholder:"terminal_input",className:"cli-focus-ring rounded-lg border border-white/50 bg-white/70 px-2 py-1 text-xs text-[var(--cli-ink-1)]"})]}),f.jsxs("div",{className:"flex flex-col gap-1",children:[f.jsx("label",{htmlFor:"cli-logs-actor",children:"Actor"}),f.jsx("input",{id:"cli-logs-actor",value:b,onChange:P=>S(P.target.value),placeholder:r?"user id":"Admin only",disabled:!r,className:"cli-focus-ring rounded-lg border border-white/50 bg-white/70 px-2 py-1 text-xs text-[var(--cli-ink-1)] disabled:opacity-60"})]}),f.jsxs("div",{className:"flex flex-col gap-1",children:[f.jsx("label",{htmlFor:"cli-logs-level",children:"Level"}),f.jsx("input",{id:"cli-logs-level",value:x,onChange:P=>w(P.target.value),placeholder:"warn",className:"cli-focus-ring rounded-lg border border-white/50 bg-white/70 px-2 py-1 text-xs text-[var(--cli-ink-1)]"})]})]})]})}),f.jsx(Ge,{delay:.05,duration:.45,y:12,children:f.jsxs("div",{className:"space-y-3",children:[n.map(P=>f.jsx(YI,{log:P,onDownload:F},P.id)),n.length===0?f.jsx("div",{className:"rounded-xl border border-white/40 bg-white/70 p-4 text-sm text-[var(--cli-muted-1)]",children:"No logs available yet."}):null,n.length>0&&n.length<c?f.jsxs("div",{className:"flex items-center justify-between rounded-xl border border-white/40 bg-white/70 px-4 py-2 text-xs text-[var(--cli-muted-1)]",children:[f.jsxs("span",{children:["Showing ",n.length," of ",c," log objects"]}),f.jsx(re,{variant:"secondary",size:"sm",onClick:l,disabled:i,children:"Load more"})]}):null]})}),f.jsxs(de,{className:"rounded-2xl border border-white/40 bg-white/70 p-4",children:[f.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:"Entries"}),f.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[f.jsxs(re,{variant:"secondary",size:"sm",onClick:ne,disabled:C,children:[f.jsx(pl,{className:"mr-2 h-3.5 w-3.5"}),"Load entries"]}),f.jsxs(re,{variant:"secondary",size:"sm",onClick:()=>Z("json"),disabled:ee.length===0,children:[f.jsx(l0,{className:"mr-2 h-3.5 w-3.5"}),"Export JSON"]}),f.jsx(re,{variant:"secondary",size:"sm",onClick:()=>Z("csv"),disabled:ee.length===0,children:"Export CSV"})]})]}),C?f.jsxs("div",{className:"mt-4 flex items-center text-sm text-[var(--cli-muted-1)]",children:[f.jsx(pn,{className:"mr-2 h-4 w-4 animate-spin"}),"Loading log entries..."]}):null,E?f.jsx("div",{className:"mt-4 text-sm text-[var(--cli-muted-1)]",children:E}):null,ee.length===0&&!C?f.jsx("div",{className:"mt-4 text-sm text-[var(--cli-muted-1)]",children:"Load entries to filter and export."}):null,ee.length>0?f.jsx("div",{ref:q,className:"mt-4 h-80 overflow-auto rounded-xl border border-white/40 bg-white/60",onScroll:P=>k(P.currentTarget.scrollTop),children:f.jsx("div",{style:{height:oe},className:"relative",children:f.jsx("div",{style:{transform:`translateY(${R}px)`},children:H.map((P,L)=>{const T=String(P.timestamp||P.ts||""),D=String(P.event_type||P.eventType||""),X=String(P.actor_user_id||P.user_id||""),I=String(P.level||P.severity||""),se=P.payload?JSON.stringify(P.payload):"";return f.jsxs("div",{className:"flex items-center justify-between gap-3 border-b border-white/30 px-3 py-2 text-xs text-[var(--cli-muted-1)]",children:[f.jsx("div",{className:"min-w-[160px] text-[var(--cli-ink-1)]",children:GI(T)}),f.jsx("div",{className:"min-w-[120px] text-[var(--cli-ink-1)]",children:D||"event"}),f.jsx("div",{className:"min-w-[120px]",children:X||"n/a"}),f.jsx("div",{className:"min-w-[80px]",children:I||"n/a"}),f.jsx("div",{className:"flex-1 truncate text-[10px] text-[var(--cli-muted-1)]",children:se||P.message||""})]},`${ue+L}-${T}-${D}`)})})})}):null]})]})}function JI(e){if(!e)return"n/a";const t=new Date(e);return Number.isNaN(t.getTime())?"n/a":t.toLocaleString()}function aa(e){const t=e.toLowerCase();return t.includes("completed")||t.includes("complete")||t.includes("done")||t.includes("success")||t.includes("failed")||t.includes("error")||t.includes("cancelled")||t.includes("canceled")}function oa(e){const t=e.toLowerCase();return t.includes("failed")||t.includes("error")||t.includes("cancelled")||t.includes("canceled")}function eL(e){const t=aa(e);return oa(e)?"bg-[var(--cli-status-offline)] text-[var(--cli-ink-0)]":t?"bg-[var(--cli-accent-emerald)] text-[var(--cli-ink-0)]":"bg-[var(--cli-status-warning)] text-[var(--cli-ink-0)]"}function tL({projectId:e,serverId:t}){const[r,n]=h.useState([]),[i,a]=h.useState(!1),[o,s]=h.useState(null),l=Se(p=>p.addNotification),c=Se(p=>p.servers),u=h.useRef(new Map),d=h.useRef(!1),m=h.useRef(null),v=h.useMemo(()=>{const p=r.filter(b=>!aa(b.status)).length,y=r.filter(b=>oa(b.status)).length,g=r.filter(b=>aa(b.status)&&!oa(b.status)).length;return{running:p,failed:y,completed:g}},[r]);return h.useEffect(()=>{let p=!0;const y=async()=>{a(!0),s(null);try{const b=await Ix(e,t);if(p){if(n(b),d.current){const S=c.find(x=>x.id===t)?.name||c.find(x=>x.id===t)?.hostname||"CLI server";b.forEach(x=>{const w=u.current.get(x.id);if(w&&w!==x.status&&aa(x.status)){const j=oa(x.status),_=j?"Task failed":"Task completed";l({id:crypto.randomUUID(),title:_,body:`${S}: ${x.title}`,level:j?"error":"success",createdAt:Date.now()}),_m(_,`${S}: ${x.title}`)}})}u.current=new Map(b.map(S=>[S.id,S.status])),d.current=!0}}catch{p&&s("Failed to load tasks.")}finally{p&&a(!1)}},g=window.setInterval(()=>{y()},15e3);return y(),()=>{p=!1,window.clearInterval(g)}},[e,t,c,l]),h.useEffect(()=>{if(!m.current||r.length===0||typeof window>"u"||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;let y=!1;const g=m.current.querySelectorAll("[data-cli-task-item]");if(g.length!==0)return ml(async()=>{const{default:b}=await import("./index-CwNu1aH4.js").then(S=>S.i);return{default:b}},__vite__mapDeps([0,1,2,3,4,5])).then(({default:b})=>{y||b({targets:g,opacity:[0,1],translateY:[8,0],delay:b.stagger(50),duration:420,easing:"easeOutCubic"})}).catch(()=>{}),()=>{y=!0}},[r]),f.jsxs("div",{className:"space-y-4",children:[f.jsx(Ge,{duration:.4,y:10,children:f.jsxs(de,{className:"rounded-2xl border border-white/40 bg-white/70 p-4",children:[f.jsxs("div",{className:"flex items-center gap-2 text-sm font-semibold text-[var(--cli-ink-1)]",children:[f.jsx(m0,{className:"h-4 w-4"}),"Task overview"]}),f.jsxs("div",{className:"mt-3 grid gap-3 sm:grid-cols-3 text-xs text-[var(--cli-muted-1)]",children:[f.jsxs("div",{className:"rounded-lg border border-white/40 bg-white/60 px-3 py-2",children:["Running: ",f.jsx("span",{className:"font-semibold text-[var(--cli-ink-1)]",children:v.running})]}),f.jsxs("div",{className:"rounded-lg border border-white/40 bg-white/60 px-3 py-2",children:["Completed: ",f.jsx("span",{className:"font-semibold text-[var(--cli-ink-1)]",children:v.completed})]}),f.jsxs("div",{className:"rounded-lg border border-white/40 bg-white/60 px-3 py-2",children:["Failed: ",f.jsx("span",{className:"font-semibold text-[var(--cli-ink-1)]",children:v.failed})]})]})]})}),i?f.jsxs("div",{className:"flex items-center justify-center py-8 text-sm text-[var(--cli-muted-1)]",children:[f.jsx(pn,{className:"mr-2 h-4 w-4 animate-spin"}),"Loading tasks..."]}):o?f.jsx(de,{className:"rounded-xl border border-white/40 bg-white/70 p-4 text-sm text-[var(--cli-muted-1)]",children:o}):r.length===0?f.jsx(de,{className:"rounded-xl border border-white/40 bg-white/70 p-4 text-sm text-[var(--cli-muted-1)]",children:"No tasks yet. Task activity will appear here once the CLI agent starts running jobs."}):f.jsx(Ge,{delay:.05,duration:.4,y:10,children:f.jsx("div",{ref:m,className:"space-y-3",children:r.map(p=>f.jsxs("div",{"data-cli-task-item":!0,className:"rounded-xl border border-white/40 bg-white/70 px-4 py-3 text-sm text-[var(--cli-ink-1)]",children:[f.jsxs("div",{className:"flex items-center justify-between gap-2",children:[f.jsx("span",{className:"font-medium",children:p.title}),f.jsx("span",{className:Ae("rounded-full px-2 py-0.5 text-[10px] font-medium",eL(p.status)),children:p.status})]}),f.jsxs("div",{className:"mt-1 text-xs text-[var(--cli-muted-1)]",children:["Updated: ",JI(p.updated_at)]})]},p.id))})})]})}function rL(e){if(!e)return"n/a";const t=new Date(e);return Number.isNaN(t.getTime())?"n/a":t.toLocaleString()}function nL(e){const t=e.toLowerCase();return t.includes("high")||t.includes("critical")?"bg-[var(--cli-status-offline)] text-[var(--cli-ink-0)]":t.includes("medium")||t.includes("warn")?"bg-[var(--cli-status-warning)] text-[var(--cli-ink-0)]":"bg-[var(--cli-accent-emerald)] text-[var(--cli-ink-0)]"}function iL({projectId:e,serverId:t}){const[r,n]=h.useState([]),[i,a]=h.useState(!1),[o,s]=h.useState(null),l=h.useRef(null),c=h.useMemo(()=>{const u=r.filter(v=>{const p=v.severity.toLowerCase();return p.includes("high")||p.includes("critical")}).length,d=r.filter(v=>v.severity.toLowerCase().includes("medium")).length,m=r.length-u-d;return{high:u,medium:d,low:m}},[r]);return h.useEffect(()=>{let u=!0;return(async()=>{a(!0),s(null);try{const m=await Lx(e,t);u&&n(m)}catch{u&&s("Failed to load findings.")}finally{u&&a(!1)}})(),()=>{u=!1}},[e,t]),h.useEffect(()=>{if(!l.current||r.length===0||typeof window>"u"||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;let d=!1;const m=l.current.querySelectorAll("[data-cli-finding-item]");if(m.length!==0)return ml(async()=>{const{default:v}=await import("./index-CwNu1aH4.js").then(p=>p.i);return{default:v}},__vite__mapDeps([0,1,2,3,4,5])).then(({default:v})=>{d||v({targets:m,opacity:[0,1],translateY:[8,0],delay:v.stagger(50),duration:420,easing:"easeOutCubic"})}).catch(()=>{}),()=>{d=!0}},[r]),f.jsxs("div",{className:"space-y-4",children:[f.jsx(Ge,{duration:.4,y:10,children:f.jsxs(de,{className:"rounded-2xl border border-white/40 bg-white/70 p-4",children:[f.jsxs("div",{className:"flex items-center gap-2 text-sm font-semibold text-[var(--cli-ink-1)]",children:[f.jsx(Zi,{className:"h-4 w-4"}),"Findings overview"]}),f.jsxs("div",{className:"mt-3 grid gap-3 sm:grid-cols-3 text-xs text-[var(--cli-muted-1)]",children:[f.jsxs("div",{className:"rounded-lg border border-white/40 bg-white/60 px-3 py-2",children:["High: ",f.jsx("span",{className:"font-semibold text-[var(--cli-ink-1)]",children:c.high})]}),f.jsxs("div",{className:"rounded-lg border border-white/40 bg-white/60 px-3 py-2",children:["Medium: ",f.jsx("span",{className:"font-semibold text-[var(--cli-ink-1)]",children:c.medium})]}),f.jsxs("div",{className:"rounded-lg border border-white/40 bg-white/60 px-3 py-2",children:["Low: ",f.jsx("span",{className:"font-semibold text-[var(--cli-ink-1)]",children:c.low})]})]})]})}),i?f.jsxs("div",{className:"flex items-center justify-center py-8 text-sm text-[var(--cli-muted-1)]",children:[f.jsx(pn,{className:"mr-2 h-4 w-4 animate-spin"}),"Loading findings..."]}):o?f.jsx(de,{className:"rounded-xl border border-white/40 bg-white/70 p-4 text-sm text-[var(--cli-muted-1)]",children:o}):r.length===0?f.jsx(de,{className:"rounded-xl border border-white/40 bg-white/70 p-4 text-sm text-[var(--cli-muted-1)]",children:"No findings yet. Any detected anomalies or insights will appear here."}):f.jsx(Ge,{delay:.05,duration:.4,y:10,children:f.jsx("div",{ref:l,className:"space-y-3",children:r.map(u=>f.jsxs("div",{"data-cli-finding-item":!0,className:"rounded-xl border border-white/40 bg-white/70 px-4 py-3 text-sm text-[var(--cli-ink-1)]",children:[f.jsxs("div",{className:"flex items-center justify-between gap-2",children:[f.jsx("span",{className:"font-medium",children:u.title}),f.jsx("span",{className:Ae("rounded-full px-2 py-0.5 text-[10px] font-medium",nL(u.severity)),children:u.severity})]}),f.jsxs("div",{className:"mt-1 text-xs text-[var(--cli-muted-1)]",children:["Updated: ",rL(u.updated_at)]})]},u.id))})})]})}const aL=()=>{try{return crypto.randomUUID()}catch{return`method-${Date.now()}-${Math.random().toString(16).slice(2)}`}},oL=e=>{if(!e)return"n/a";const t=new Date(e);return Number.isNaN(t.getTime())?String(e):t.toLocaleString()};function sL({projectId:e,serverId:t,canCreate:r}){const[n,i]=h.useState([]),[a,o]=h.useState(!1),[s,l]=h.useState(null),[c,u]=h.useState(""),[d,m]=h.useState(""),[v,p]=h.useState(""),[y,g]=h.useState(""),[b,S]=h.useState(!0),[x,w]=h.useState(!0),[j,_]=h.useState(null),[C,N]=h.useState(!1),[E,M]=h.useState(null),[$,k]=h.useState(null),[q,F]=h.useState(1),K=h.useRef(null),G=c.trim().length>0,ne=G&&r&&!C,te=ne&&x&&q===4,le=h.useCallback(async()=>{o(!0),l(null);try{const P=await Rx(e,t);i(P.methods||[])}catch{l("Unable to load methods.")}finally{o(!1)}},[e,t]),oe=h.useMemo(()=>({onMethodStatus:P=>{const L=Ir(P),T=L?.request_id;if(!K.current||T&&T!==K.current)return;const D={step:typeof L?.step=="number"?L.step:void 0,message:typeof L?.message=="string"?L.message:void 0,percent:typeof L?.percent=="number"?L.percent:void 0};k(D)},onMethodDone:P=>{const T=Ir(P)?.request_id;K.current&&(T&&T!==K.current||(K.current=null,N(!1),_(null),k({step:6,message:"Method created",percent:100}),w(!1),le()))},onMethodError:P=>{const L=Ir(P),T=L?.request_id;if(!K.current||T&&T!==K.current)return;K.current=null,N(!1),_(null);const D=typeof L?.error=="string"?L.error:"Method creation failed.";M(D),w(!1)}}),[le]);gm({projectId:e,serverId:t,handlers:oe}),h.useEffect(()=>{le(),_(null),N(!1),M(null),k(null),K.current=null},[le]),h.useEffect(()=>{if(!te){_(null);return}_(4)},[te,c,d,v,y]);const ue=h.useCallback(async()=>{if(!ne)return;N(!0),M(null),k({step:0,message:"Queued for creation",percent:0});const P=aL();try{const L=await $x(e,t,{session_id:P,method_name:b?void 0:d.trim()||void 0,paper_source:c.trim(),topic:v.trim()||void 0,code_source:y.trim()||void 0,auto_name:b});K.current=L.request_id||P}catch{N(!1),M("Failed to queue method creation.")}},[b,ne,y,d,c,e,t,v]);h.useEffect(()=>{if(j===null)return;if(j<=0){_(null),ue();return}const P=window.setTimeout(()=>{_(L=>L!=null?L-1:L)},1e3);return()=>window.clearTimeout(P)},[j,ue]);const z=()=>{u(""),m(""),p(""),g(""),S(!0),w(!0),_(null),M(null),k(null),F(1)},H=h.useMemo(()=>[{label:"Paper source",ready:c.trim().length>0},{label:"Method name",ready:b||d.trim().length>0,optional:!0},{label:"Topic",ready:v.trim().length>0,optional:!0},{label:"Code repo",ready:y.trim().length>0,optional:!0}],[b,y,d,c,v]),R=Math.min(100,Math.max(0,$?.percent??0));return f.jsxs("div",{className:"grid gap-6 xl:grid-cols-[minmax(0,1.1fr)_minmax(0,0.9fr)]",children:[f.jsxs("div",{className:"space-y-6",children:[f.jsxs(de,{className:"cli-card rounded-2xl border border-white/40 bg-white/70 p-6 shadow-[0_10px_24px_rgba(20,20,20,0.08)]",children:[f.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[f.jsxs("div",{children:[f.jsx("div",{className:"cli-h2 text-[var(--cli-ink-1)]",children:"Method report"}),f.jsx("div",{className:"text-xs text-[var(--cli-muted-1)]",children:"Provide core inputs. Creation runs automatically when required fields are ready."})]}),f.jsx("div",{className:"rounded-full border border-white/50 bg-white/80 px-3 py-1 text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:"Session anchored"})]}),f.jsxs("div",{className:"mt-5 grid gap-4 md:grid-cols-2",children:[f.jsxs("div",{className:"rounded-xl border border-white/40 bg-white/80 px-4 py-3",children:[f.jsx("div",{className:"text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:"Project"}),f.jsx("div",{className:"mt-1 text-sm font-semibold text-[var(--cli-ink-1)]",children:e})]}),f.jsxs("div",{className:"rounded-xl border border-white/40 bg-white/80 px-4 py-3",children:[f.jsx("div",{className:"text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:"Server"}),f.jsx("div",{className:"mt-1 text-sm font-semibold text-[var(--cli-ink-1)]",children:t})]})]})]}),f.jsx(de,{className:"cli-card rounded-2xl border border-white/40 bg-white/70 p-6 shadow-[0_10px_24px_rgba(20,20,20,0.08)]",children:f.jsxs(k0,{initialStep:q,onStepChange:F,onFinalStepCompleted:()=>void ue(),backButtonText:"Previous",nextButtonText:(P,L)=>P>=L?C?"Creating...":"Create method":"Next",nextDisabled:(P,L)=>P===1?!G:P>=L?!ne:!1,backDisabled:()=>C,children:[f.jsx(Di,{title:"Paper source",description:"Provide a PDF/MD path or a URL.",children:f.jsxs("div",{className:"space-y-3",children:[f.jsxs("div",{className:"flex items-center justify-between text-xs text-[var(--cli-muted-1)]",children:[f.jsx("span",{children:"Required input"}),f.jsx("span",{className:"rounded-full border border-white/60 bg-white/70 px-2 py-1 text-[10px] uppercase tracking-wide text-[var(--cli-status-busy)]",children:"Required"})]}),f.jsx("input",{value:c,onChange:P=>u(P.target.value),placeholder:"https://arxiv.org/abs/0000.00000 or /path/to/paper.pdf",className:"cli-focus-ring w-full rounded-lg border border-white/40 bg-white/80 px-3 py-2 text-sm text-[var(--cli-ink-1)] outline-none"}),f.jsx("p",{className:"text-xs text-[var(--cli-muted-1)]",children:"Links to arxiv/openreview are parsed automatically."})]})}),f.jsx(Di,{title:"Method identity",description:"Supply a name or let the model derive one.",children:f.jsxs("div",{className:"space-y-3",children:[f.jsxs("div",{className:"flex items-center justify-between text-xs text-[var(--cli-muted-1)]",children:[f.jsx("span",{children:"Optional input"}),f.jsx("span",{className:"rounded-full border border-white/60 bg-white/70 px-2 py-1 text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:"Optional"})]}),f.jsxs("div",{className:"grid gap-3 md:grid-cols-[minmax(0,1fr)_auto]",children:[f.jsx("input",{value:d,onChange:P=>{const L=P.target.value;m(L),L.trim()&&S(!1)},placeholder:"Contrastive Ablation Method",disabled:b,className:Ae("cli-focus-ring w-full rounded-lg border border-white/40 bg-white/80 px-3 py-2 text-sm text-[var(--cli-ink-1)] outline-none",b&&"opacity-60")}),f.jsxs("label",{className:"flex items-center gap-2 rounded-lg border border-white/40 bg-white/80 px-3 py-2 text-xs text-[var(--cli-muted-1)]",children:[f.jsx("input",{type:"checkbox",checked:b,onChange:P=>{const L=P.target.checked;S(L),L&&m("")},className:"h-4 w-4 accent-[var(--cli-accent-olive)]"}),"Auto-name"]})]})]})}),f.jsx(Di,{title:"Focus and code",description:"Optionally narrow scope or point to code.",children:f.jsxs("div",{className:"grid gap-4",children:[f.jsxs("div",{children:[f.jsx("label",{className:"text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:"Topic"}),f.jsx("input",{value:v,onChange:P=>p(P.target.value),placeholder:"Transformer pruning / Diffusion speedup",className:"cli-focus-ring mt-2 w-full rounded-lg border border-white/40 bg-white/80 px-3 py-2 text-sm text-[var(--cli-ink-1)] outline-none"})]}),f.jsxs("div",{children:[f.jsx("label",{className:"text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:"Code repo or path"}),f.jsx("input",{value:y,onChange:P=>g(P.target.value),placeholder:"https://github.com/org/repo or /path/to/code",className:"cli-focus-ring mt-2 w-full rounded-lg border border-white/40 bg-white/80 px-3 py-2 text-sm text-[var(--cli-ink-1)] outline-none"})]})]})}),f.jsx(Di,{title:"Run controls",description:"Review the report and submit.",children:f.jsxs("div",{className:"space-y-4",children:[f.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 text-xs text-[var(--cli-muted-1)]",children:[f.jsx("span",{children:"Auto-run begins on the final step."}),f.jsxs("label",{className:"flex items-center gap-2",children:[f.jsx("input",{type:"checkbox",checked:x,onChange:P=>w(P.target.checked),className:"h-4 w-4 accent-[var(--cli-accent-olive)]"}),"Auto-run enabled"]})]}),j!==null&&te?f.jsxs("div",{className:"flex items-center justify-between rounded-xl border border-white/40 bg-white/80 px-4 py-3 text-xs text-[var(--cli-muted-1)]",children:[f.jsxs("div",{className:"flex items-center gap-2",children:[f.jsx(x0,{className:"h-4 w-4 text-[var(--cli-muted-1)]"}),"Auto-creating in ",j,"s"]}),f.jsx(re,{variant:"secondary",size:"sm",onClick:()=>_(null),children:"Cancel"})]}):null,f.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[f.jsx(re,{variant:"secondary",onClick:z,disabled:C,children:"Reset"}),r?null:f.jsxs("div",{className:"flex items-center gap-2 text-xs text-[var(--cli-status-error)]",children:[f.jsx(Zi,{className:"h-4 w-4"}),"You do not have permission to create methods."]})]}),E?f.jsxs("div",{className:"flex items-center gap-2 text-xs text-[var(--cli-status-error)]",children:[f.jsx(Zi,{className:"h-4 w-4"}),E]}):null]})})]})})]}),f.jsxs("div",{className:"space-y-6",children:[f.jsxs(de,{className:"cli-card rounded-2xl border border-white/40 bg-white/70 p-6 shadow-[0_10px_24px_rgba(20,20,20,0.08)]",children:[f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsxs("div",{children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:"Checklist"}),f.jsx("div",{className:"text-xs text-[var(--cli-muted-1)]",children:"Required vs optional inputs"})]}),f.jsx("span",{className:"rounded-full border border-white/50 bg-white/80 px-3 py-1 text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:"Report status"})]}),f.jsx("div",{className:"mt-4 space-y-2 text-xs",children:H.map(P=>f.jsxs("div",{className:"flex items-center justify-between rounded-lg border border-white/40 bg-white/80 px-3 py-2",children:[f.jsx("span",{className:"text-[var(--cli-ink-1)]",children:P.label}),f.jsxs("span",{className:Ae("flex items-center gap-1 text-[10px] uppercase tracking-wide",P.ready?"text-[var(--cli-status-online)]":"text-[var(--cli-muted-1)]"),children:[P.ready?f.jsx(lm,{className:"h-3 w-3"}):null,P.optional?"Optional":"Required"]})]},P.label))})]}),f.jsxs(de,{className:"cli-card rounded-2xl border border-white/40 bg-white/70 p-6 shadow-[0_10px_24px_rgba(20,20,20,0.08)]",children:[f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsxs("div",{children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:"Creation status"}),f.jsx("div",{className:"text-xs text-[var(--cli-muted-1)]",children:"Live progress from the CLI agent"})]}),f.jsx("div",{className:"text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:C?"Running":"Idle"})]}),f.jsxs("div",{className:"mt-4 rounded-xl border border-white/40 bg-white/80 px-4 py-3",children:[f.jsxs("div",{className:"flex items-center justify-between text-xs text-[var(--cli-muted-1)]",children:[f.jsx("span",{children:$?.message||"Awaiting input"}),f.jsx("span",{children:$?.percent?`${$?.percent}%`:"0%"})]}),f.jsx("div",{className:"mt-3 h-2 w-full rounded-full bg-white/60",children:f.jsx("div",{className:"h-full rounded-full bg-[var(--cli-accent-olive)] transition-all",style:{width:`${R}%`}})}),$?.step?f.jsxs("div",{className:"mt-2 text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:["Step ",$.step]}):null]})]}),f.jsxs(de,{className:"cli-card rounded-2xl border border-white/40 bg-white/70 p-6 shadow-[0_10px_24px_rgba(20,20,20,0.08)]",children:[f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsxs("div",{children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:"Methods"}),f.jsx("div",{className:"text-xs text-[var(--cli-muted-1)]",children:"Registered methods for this project"})]}),f.jsxs(re,{variant:"secondary",size:"sm",onClick:le,disabled:a,children:[f.jsx(Lt,{className:Ae("mr-2 h-4 w-4",a&&"animate-spin")}),"Refresh"]})]}),a?f.jsx("div",{className:"mt-6 flex items-center justify-center text-xs text-[var(--cli-muted-1)]",children:"Loading methods..."}):s?f.jsxs("div",{className:"mt-6 flex items-center gap-2 text-xs text-[var(--cli-status-error)]",children:[f.jsx(Zi,{className:"h-4 w-4"}),s]}):n.length===0?f.jsxs("div",{className:"mt-6 flex flex-col items-center gap-2 rounded-xl border border-dashed border-white/40 bg-white/60 px-4 py-6 text-xs text-[var(--cli-muted-1)]",children:[f.jsx(la,{className:"h-5 w-5"}),"No methods recorded yet."]}):f.jsx("div",{className:"mt-4 space-y-3",children:n.map(P=>{const L=P.method_name||P.method_slug||P.method_id||"Method",T=P.status||"created";return f.jsxs("div",{className:"rounded-xl border border-white/40 bg-white/80 px-4 py-3",children:[f.jsxs("div",{className:"flex items-center justify-between",children:[f.jsxs("div",{children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:L}),f.jsx("div",{className:"text-[11px] text-[var(--cli-muted-1)]",children:P.method_id||"unknown id"})]}),f.jsx("span",{className:"rounded-full border border-white/50 bg-white/90 px-2 py-1 text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]",children:T})]}),f.jsxs("div",{className:"mt-2 grid gap-1 text-xs text-[var(--cli-muted-1)]",children:[f.jsxs("div",{children:["Paper: ",P.paper?.source||"n/a"]}),f.jsxs("div",{children:["Code: ",P.code?.source||"n/a"]}),f.jsxs("div",{children:["Created: ",oL(P.created_at)]})]})]},P.method_id||P.method_slug||L)})})]})]})]})}const lL=e=>e==="offline"||e==="error",cL=e=>{if(!e)return"n/a";const t=new Date(e);if(Number.isNaN(t.getTime()))return"n/a";const r=Date.now()-t.getTime();return r<6e4?"just now":r<36e5?`${Math.round(r/6e4)}m ago`:r<864e5?`${Math.round(r/36e5)}h ago`:`${Math.round(r/864e5)}d ago`},uL=e=>{if(!e)return"n/a";const t=new Date(e);return Number.isNaN(t.getTime())?"n/a":t.toLocaleString()};function HL({context:e,setTitle:t}){const{t:r}=rr("cli"),n=zx("cli.connect"),i=e.customData,a=typeof i?.projectId=="string"?i.projectId:void 0,o=!!(i?.readOnly||i?.readonly),[s,l]=h.useState(!1),[c,u]=h.useState("overview"),[d,m]=h.useState(!0),v=Se(F=>F.servers),p=Se(F=>F.activeServerId),y=Se(F=>F.isLoading),g=Se(F=>F.loadServers),b=Se(F=>F.connectionStatus),{ensureConversation:S}=rw();h.useEffect(()=>{t("CLI")},[t]),h.useEffect(()=>{a&&g(a)},[a,g]),h.useEffect(()=>{a&&S(a)},[a,S]);const x=h.useMemo(()=>v.find(F=>F.id===p),[v,p]),w=x?lL(x.status):!1,j=n0({projectId:a,serverId:x?.id??null,readOnly:o}),_=j.permission==="admin"||j.permission==="owner",C=j.capabilities.terminal_input,N=j.capabilities.file_edit,E=j.capabilities.file_delete,M=j.capabilities.file_upload,$=j.capabilities.file_download,k=j.capabilities.disconnect_server,q=h.useMemo(()=>{const F=[{value:"methods",label:r("tab_methods")},{value:"terminal",label:r("tab_terminal")},{value:"files",label:r("tab_files")},{value:"logs",label:r("tab_logs")},{value:"tasks",label:r("tab_tasks")},{value:"findings",label:r("tab_findings")}];return F.push({value:"overview",label:r("tab_overview")}),F},[r]);return a?!n.isEntitlementLoading&&!n.isMaxEntitled?f.jsx("div",{className:"cli-root flex h-full items-center justify-center",children:f.jsxs("div",{className:"rounded-2xl border border-white/40 bg-white/70 px-4 py-3 text-center",children:[f.jsx("div",{className:"text-sm font-semibold text-[var(--cli-ink-1)]",children:r("plan_access_required")}),f.jsx("div",{className:"mt-1 text-xs text-[var(--cli-muted-1)]",children:r("max_only_desc")})]})}):y?f.jsx("div",{className:"cli-root flex h-full items-center justify-center",children:f.jsx(pn,{className:"h-6 w-6 animate-spin text-[var(--cli-muted-1)]"})}):f.jsxs("div",{className:"cli-root relative flex h-full overflow-hidden",children:[f.jsx(Bx,{animated:!1}),f.jsx("div",{className:`shrink-0 border-r border-white/40 bg-[var(--cli-bg-1)] transition-all ${d?"w-16":"w-72"}`,children:f.jsx(M0,{readOnly:!_,onBind:()=>l(!0),collapsed:d,onToggleCollapse:()=>m(F=>!F),tabs:q,activeTab:c,onTabChange:F=>u(F)})}),f.jsx("div",{className:"relative flex flex-1 flex-col bg-[var(--cli-bg-0)]",children:x?f.jsx(f.Fragment,{children:f.jsx("div",{className:"flex-1 min-h-0 overflow-hidden px-6 pb-4 pt-6",children:f.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[w?f.jsxs("div",{className:"mb-3 rounded-xl border border-white/40 bg-white/70 px-4 py-3 text-sm text-[var(--cli-muted-1)]",children:[f.jsx("div",{className:"font-semibold text-[var(--cli-ink-1)]",children:r("cli_server_disconnected")}),f.jsx("div",{className:"mt-1 text-[11px] text-[var(--cli-muted-2)]",children:r("last_heartbeat",{relative:cL(x.last_seen_at),timestamp:uL(x.last_seen_at)})})]}):null,c==="terminal"?f.jsx("div",{className:"flex-1 min-h-0 cli-tab-enter",children:f.jsx(nw,{projectId:a,server:x,readOnly:!C,canUnbind:k})},c):f.jsx(Hn,{className:"flex-1 min-h-0 pr-2",children:f.jsxs("div",{className:"h-full min-h-0 cli-tab-enter",children:[c==="overview"?f.jsx(BI,{projectId:a,server:x,connectionStatus:b,accessLabel:j.permission,canUnbind:k}):null,c==="methods"?f.jsx(sL,{projectId:a,serverId:x.id,canCreate:N}):null,c==="files"?f.jsx(HI,{projectId:a,serverId:x.id,serverRoot:x.server_root,serverStatus:x.status,serverLastSeenAt:x.last_seen_at,readOnly:!N,canDelete:E,canUpload:M,canDownload:$}):null,c==="logs"?f.jsx(QI,{projectId:a,serverId:x.id,canViewAll:j.capabilities.view_all_user_logs}):null,c==="tasks"?f.jsx(tL,{projectId:a,serverId:x.id}):null,c==="findings"?f.jsx(iL,{projectId:a,serverId:x.id}):null]},c)})]})})}):f.jsx("div",{className:"flex h-full items-center justify-center p-6",children:v.length===0?f.jsx(iw,{onBind:()=>l(!0)}):f.jsx("p",{className:"text-[var(--cli-muted-1)]",children:r("select_server_from_list")})})}),f.jsx(ow,{open:s,onOpenChange:l})]}):f.jsx("div",{className:"cli-root flex h-full items-center justify-center",children:f.jsx("p",{className:"text-[var(--cli-muted-1)]",children:r("no_project_selected")})})}export{HL as default};
|