@undefineds.co/xpod 0.3.74 → 0.3.75

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/dist/api/container/common.js +1 -7
  2. package/dist/runtime/css-process.js +0 -1
  3. package/package.json +1 -1
  4. package/static/auth-callback/assets/{AiConfigContext-DNfRNaZQ.js → AiConfigContext-BvBdu_A3.js} +1 -1
  5. package/static/auth-callback/assets/{AiConfigPage-BBiTOm3o.js → AiConfigPage-BpDw4jco.js} +1 -1
  6. package/static/auth-callback/assets/{DocumentProcessingPanel-BzpEwqKT.js → DocumentProcessingPanel-BmZ_jzRr.js} +1 -1
  7. package/static/auth-callback/assets/{IndexLifecyclePanel-CvXMwooQ.js → IndexLifecyclePanel-BfQBjN4z.js} +1 -1
  8. package/static/auth-callback/assets/{IndexSubjectPanel-CayA221L.js → IndexSubjectPanel-BlsnatPt.js} +1 -1
  9. package/static/auth-callback/assets/{ModelAssignmentsPanel-Iew2QgtR.js → ModelAssignmentsPanel-KA6Mdndz.js} +1 -1
  10. package/static/auth-callback/assets/{ModelsPage-CTJKAUA3.js → ModelsPage-C7jymyIY.js} +1 -1
  11. package/static/auth-callback/assets/{NetworkPage--8ZCjIHB.js → NetworkPage-k2ShktNm.js} +1 -1
  12. package/static/auth-callback/assets/{PaneListHeader-BT-OGKL7.js → PaneListHeader-mLMe_dvU.js} +1 -1
  13. package/static/auth-callback/assets/{SearchIndexingPanel-CFjjk1-C.js → SearchIndexingPanel-CqV9um_t.js} +1 -1
  14. package/static/auth-callback/assets/{StatusSubjectPanel-DAN5Ej9q.js → StatusSubjectPanel-BgMBTbr2.js} +1 -1
  15. package/static/auth-callback/assets/{StatusWorkspace-CEgmKJcX.js → StatusWorkspace-zbSyhdG2.js} +1 -1
  16. package/static/auth-callback/assets/{SystemSettingsPage-Bk0TB4RU.js → SystemSettingsPage-CtW79nW6.js} +1 -1
  17. package/static/auth-callback/assets/{SystemSettingsSubjectPanel-CKl8ukiz.js → SystemSettingsSubjectPanel-ZOPKYUtZ.js} +1 -1
  18. package/static/auth-callback/assets/{activity-BOtct9Ie.js → activity-BQ-CQE3O.js} +1 -1
  19. package/static/auth-callback/assets/{auth-callback-ai6OMe6C.js → auth-callback-Htr_CB_g.js} +3 -3
  20. package/static/auth-callback/assets/{badge-DGSg5wio.js → badge-D5SGTJeO.js} +1 -1
  21. package/static/auth-callback/assets/{download-4eVPmxQ_.js → download-DK183Ldo.js} +1 -1
  22. package/static/auth-callback/assets/{external-link-BlD92fAM.js → external-link-LDHy_4bn.js} +1 -1
  23. package/static/auth-callback/assets/{index-7ppych8q.js → index-2WmlePQ9.js} +1 -1
  24. package/static/auth-callback/assets/{index-FrugCRsJ.js → index-BWrvgHqK.js} +1 -1
  25. package/static/auth-callback/assets/{index-browser-dwpJ2mdT.js → index-browser-DUd4E4-x.js} +1 -1
  26. package/static/auth-callback/assets/{key-round-BFOQbNNp.js → key-round-ibX79Kr-.js} +1 -1
  27. package/static/auth-callback/assets/{rotate-ccw-BySVgaAP.js → rotate-ccw-B2_VMaiX.js} +1 -1
  28. package/static/auth-callback/assets/{skeleton-CgcxPTqc.js → skeleton-F4nrpycc.js} +1 -1
  29. package/static/auth-callback/assets/{waypoints-DM902DhB.js → waypoints-DImIq93f.js} +1 -1
  30. package/static/auth-callback/assets/{workspace-layout-DlZlN49Q.js → workspace-layout-IVCSYU21.js} +1 -1
  31. package/static/auth-callback/auth-callback.html +1 -1
  32. package/static/dashboard/assets/{AiConfigContext-VnWI7bOR.js → AiConfigContext-cjjfYTo9.js} +1 -1
  33. package/static/dashboard/assets/{AiConfigPage-Dn3oxXcA.js → AiConfigPage-CO0DSD_j.js} +1 -1
  34. package/static/dashboard/assets/{DocumentProcessingPanel-CAF1uLi3.js → DocumentProcessingPanel-DMGnH8Oj.js} +1 -1
  35. package/static/dashboard/assets/{IndexLifecyclePanel-D9zVZwu8.js → IndexLifecyclePanel-DSkIOCL5.js} +1 -1
  36. package/static/dashboard/assets/{IndexSubjectPanel-_JCGwJmO.js → IndexSubjectPanel-qWN_DbAp.js} +1 -1
  37. package/static/dashboard/assets/{ModelAssignmentsPanel-DtlxQxFa.js → ModelAssignmentsPanel-DCf83uM3.js} +1 -1
  38. package/static/dashboard/assets/{ModelsPage-CCNTpXM5.js → ModelsPage-CMnvSrl5.js} +1 -1
  39. package/static/dashboard/assets/{NetworkPage-BAKv9unq.js → NetworkPage-C8Gkwclb.js} +1 -1
  40. package/static/dashboard/assets/{PaneListHeader-Dr1jq2Ii.js → PaneListHeader-BtU_8cDK.js} +1 -1
  41. package/static/dashboard/assets/{SearchIndexingPanel-BW0pPrQB.js → SearchIndexingPanel-DEn12pNU.js} +1 -1
  42. package/static/dashboard/assets/{StatusSubjectPanel-c9iebk4M.js → StatusSubjectPanel-B1_ILg2d.js} +1 -1
  43. package/static/dashboard/assets/{StatusWorkspace-KZ7zrrmB.js → StatusWorkspace-BG6nMNCo.js} +1 -1
  44. package/static/dashboard/assets/{SystemSettingsPage-fVSfJMi9.js → SystemSettingsPage-BnWYIXaM.js} +1 -1
  45. package/static/dashboard/assets/{SystemSettingsSubjectPanel-DUSxcVT8.js → SystemSettingsSubjectPanel-C_mYVPWb.js} +1 -1
  46. package/static/dashboard/assets/{activity-Dg4XxJA8.js → activity-DYJ7PdRl.js} +1 -1
  47. package/static/dashboard/assets/{badge-OHMG7sYk.js → badge-BIaZco1P.js} +1 -1
  48. package/static/dashboard/assets/{dashboard-UuQZ5g0B.js → dashboard-Dl40_MEa.js} +2 -2
  49. package/static/dashboard/assets/{download-CkbQhuL2.js → download-By16k9VK.js} +1 -1
  50. package/static/dashboard/assets/{external-link-C15frgwD.js → external-link-B92xOG_d.js} +1 -1
  51. package/static/dashboard/assets/{index-BiU8tNWd.js → index-BajZpJ48.js} +1 -1
  52. package/static/dashboard/assets/{index-JUkJUI4K.js → index-wsVPom_x.js} +1 -1
  53. package/static/dashboard/assets/{key-round-BVREfX5D.js → key-round-Clo5FOwA.js} +1 -1
  54. package/static/dashboard/assets/{rotate-ccw-cPEquKE_.js → rotate-ccw-smWSfi1L.js} +1 -1
  55. package/static/dashboard/assets/{skeleton-BPM2LdA5.js → skeleton-BrTaGeJw.js} +1 -1
  56. package/static/dashboard/assets/{waypoints-Cd3kODMk.js → waypoints-DGPQInE7.js} +1 -1
  57. package/static/dashboard/assets/{workspace-layout-BP3gLLXb.js → workspace-layout-CPU4XRmb.js} +1 -1
  58. package/static/dashboard/dashboard.html +1 -1
  59. package/static/settings/assets/{AiConfigContext-B-D3riwG.js → AiConfigContext-CT29_OyW.js} +1 -1
  60. package/static/settings/assets/{AiConfigPage-CAYT-CgT.js → AiConfigPage-WIE95S28.js} +1 -1
  61. package/static/settings/assets/{DocumentProcessingPanel-D__vS86O.js → DocumentProcessingPanel-KG8Sq999.js} +1 -1
  62. package/static/settings/assets/{IndexLifecyclePanel-CuYEAG62.js → IndexLifecyclePanel-iKvtHDXY.js} +1 -1
  63. package/static/settings/assets/{IndexSubjectPanel-Do71gQQC.js → IndexSubjectPanel-BQdSCkk4.js} +1 -1
  64. package/static/settings/assets/{ModelAssignmentsPanel-Cn3kSze7.js → ModelAssignmentsPanel-P8QcVB0F.js} +1 -1
  65. package/static/settings/assets/{ModelsPage-BKO0ARYt.js → ModelsPage-UZkZGqor.js} +1 -1
  66. package/static/settings/assets/{NetworkPage-XPYrdyVd.js → NetworkPage-Dcpcvg15.js} +1 -1
  67. package/static/settings/assets/{PaneListHeader-BAiQcCss.js → PaneListHeader--gHtZws5.js} +1 -1
  68. package/static/settings/assets/{SearchIndexingPanel-Bx3Fco0x.js → SearchIndexingPanel-DdgJSJYQ.js} +1 -1
  69. package/static/settings/assets/{StatusSubjectPanel-BzKzXmSL.js → StatusSubjectPanel-UOxp_XVL.js} +1 -1
  70. package/static/settings/assets/{StatusWorkspace-NjLpo9xp.js → StatusWorkspace-CPNXuD12.js} +1 -1
  71. package/static/settings/assets/{SystemSettingsPage-CclI_Lpv.js → SystemSettingsPage-B6ySeVPw.js} +1 -1
  72. package/static/settings/assets/{SystemSettingsSubjectPanel-CMnSE-8N.js → SystemSettingsSubjectPanel-I7zWmpiI.js} +1 -1
  73. package/static/settings/assets/{activity-DYpNPFzG.js → activity-CFhmzahP.js} +1 -1
  74. package/static/settings/assets/{badge-C7Vhmg28.js → badge-BBdUc5B-.js} +1 -1
  75. package/static/settings/assets/{download-DdXcAiwj.js → download-WJE9-yxQ.js} +1 -1
  76. package/static/settings/assets/{external-link-D7thdQae.js → external-link-RKoYyCp_.js} +1 -1
  77. package/static/settings/assets/{index-CwBKvDQZ.js → index-Bq2o0Bif.js} +1 -1
  78. package/static/settings/assets/{index-BnYbrf5s.js → index-DvxneI5O.js} +1 -1
  79. package/static/settings/assets/{index-browser-DYzi1DO1.js → index-browser-Qmo6EsFT.js} +1 -1
  80. package/static/settings/assets/{key-round-BXErodZA.js → key-round-r-D9sQUK.js} +1 -1
  81. package/static/settings/assets/{rotate-ccw-DPyOBmDD.js → rotate-ccw-D3IIhbPH.js} +1 -1
  82. package/static/settings/assets/{settings-BGpEf8nx.js → settings-D8oDBXWg.js} +3 -3
  83. package/static/settings/assets/{skeleton-S9l3JIr9.js → skeleton-DrL4RQuw.js} +1 -1
  84. package/static/settings/assets/{waypoints-C5By7zWc.js → waypoints-C5sRhpJw.js} +1 -1
  85. package/static/settings/assets/{workspace-layout-Bb6RVAEx.js → workspace-layout-B4ALmWsM.js} +1 -1
  86. package/static/settings/settings.html +1 -1
@@ -1,4 +1,4 @@
1
- import{j as m,r as te,P as yi,o as Is,q as go,x as md,z as pp,X as yp,f as Je,i as bp,E as gp,F as wd,H as Rs,I as Cs,J as _d,K as Ad,M as ot,Q as Jr,T as zl,U as Ms,V as yt,W as mo,Y as Ae,Z as ti,_ as Vr,$ as os,a0 as io,a1 as fn,a2 as nr,a3 as mp,a4 as wp,a5 as Ct,a6 as dr,a7 as vd,a8 as _p,a9 as Ps,aa as Yt,ab as Br,ac as wo,ad as Sd,ae as Ed,af as xd,B as Me,ag as Ap,ah as vp,ai as ft,aj as rr,t as Rt,ak as Sp,al as Id,am as lr,an as xt,ao as Xt,ap as It,aq as Rd,ar as Pe,as as ke,at as wt,au as Ep,av as xp,u as Ip}from"./dashboard-UuQZ5g0B.js";import{A as Cd,a as Rp,n as Md,b as Cp,d as Mp}from"./ai-connections-Bm52UO7Y.js";import{W as Pp,T as Tp}from"./workspace-layout-BP3gLLXb.js";import{a as _o,P as Op,c as Qt,h as kp,g as Dp,R as Np,d as jp,F as Fp,D as Pd,e as Td,u as ro,C as Lp,i as Up,b as Od,f as Bp,A as qp}from"./index-BiU8tNWd.js";import{B as Jn}from"./badge-OHMG7sYk.js";import{QueryEngine as Kp}from"@comunica/query-sparql-solid";var Wp=Object.defineProperty,Ut=(e,t)=>Wp(e,"name",{value:t,configurable:!0}),Ts="Dialog",[kd,PA]=md(Ts),[zp,$t]=kd(Ts),Hp=Ut(e=>{const{__scopeDialog:t,children:r,open:n,defaultOpen:i,onOpenChange:o,modal:a=!0}=e,s=te.useRef(null),u=te.useRef(null),[c,h]=Td({prop:n,defaultProp:i??!1,onChange:o,caller:Ts}),[g,A]=te.useState(0),[I,k]=te.useState(0);return m.jsx(zp,{scope:t,triggerRef:s,contentRef:u,contentId:ro(),titleId:ro(),descriptionId:ro(),titlePresent:g>0,descriptionPresent:I>0,setTitleCount:A,setDescriptionCount:k,open:c,onOpenChange:h,onOpenToggle:te.useCallback(()=>h(S=>!S),[h]),modal:a,children:r})},"Dialog"),Dd="DialogPortal",[Vp,Nd]=kd(Dd,{forceMount:void 0}),Qp=Ut(e=>{const{__scopeDialog:t,forceMount:r,children:n,container:i}=e,o=$t(Dd,t);return m.jsx(Vp,{scope:t,forceMount:r,children:te.Children.map(n,a=>m.jsx(_o,{present:r||o.open,children:m.jsx(Op,{asChild:!0,container:i,children:a})}))})},"DialogPortal"),as="DialogOverlay",jd=te.forwardRef(Ut(function(t,r){const n=Nd(as,t.__scopeDialog),{forceMount:i=n.forceMount,...o}=t,a=$t(as,t.__scopeDialog);return a.modal?m.jsx(_o,{present:i||a.open,children:m.jsx(Gp,{...o,ref:r})}):null},"DialogOverlay")),Jp=pp("DialogOverlay.RemoveScroll"),Gp=te.forwardRef(Ut(function(t,r){const{__scopeDialog:n,...i}=t,o=$t(as,n),a=Dp(),s=go(r,a);return m.jsx(Np,{as:Jp,allowPinchZoom:!0,shards:[o.contentRef],children:m.jsx(yi.div,{"data-state":Os(o.open),...i,ref:s,style:{pointerEvents:"auto",...i.style}})})},"DialogOverlayImpl")),ai="DialogContent",Fd=te.forwardRef(Ut(function(t,r){const n=Nd(ai,t.__scopeDialog),{forceMount:i=n.forceMount,...o}=t,a=$t(ai,t.__scopeDialog);return m.jsx(_o,{present:i||a.open,children:a.modal?m.jsx(Yp,{...o,ref:r}):m.jsx(Xp,{...o,ref:r})})},"DialogContent")),Yp=te.forwardRef(Ut(function(t,r){const n=$t(ai,t.__scopeDialog),i=te.useRef(null),o=go(r,n.contentRef,i);return te.useEffect(()=>{const a=i.current;if(a)return kp(a)},[]),m.jsx(Ld,{...t,ref:o,trapFocus:n.open,disableOutsidePointerEvents:n.open,onCloseAutoFocus:Qt(t.onCloseAutoFocus,a=>{a.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:Qt(t.onPointerDownOutside,a=>{const s=a.detail.originalEvent,u=s.button===0&&s.ctrlKey===!0;(s.button===2||u)&&a.preventDefault()}),onFocusOutside:Qt(t.onFocusOutside,a=>a.preventDefault())})},"DialogContentModal")),Xp=te.forwardRef(Ut(function(t,r){const n=$t(ai,t.__scopeDialog),i=te.useRef(!1),o=te.useRef(!1);return m.jsx(Ld,{...t,ref:r,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:a=>{t.onCloseAutoFocus?.(a),a.defaultPrevented||(i.current||n.triggerRef.current?.focus(),a.preventDefault()),i.current=!1,o.current=!1},onInteractOutside:a=>{t.onInteractOutside?.(a),a.defaultPrevented||(i.current=!0,a.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const s=a.target;n.triggerRef.current?.contains(s)&&a.preventDefault(),a.detail.originalEvent.type==="focusin"&&o.current&&a.preventDefault()}})},"DialogContentNonModal")),Ld=te.forwardRef(Ut(function(t,r){const{__scopeDialog:n,trapFocus:i,onOpenAutoFocus:o,onCloseAutoFocus:a,...s}=t,u=$t(ai,n);return jp(),m.jsx(m.Fragment,{children:m.jsx(Fp,{asChild:!0,loop:!0,trapped:i,onMountAutoFocus:o,onUnmountAutoFocus:a,children:m.jsx(Pd,{role:"dialog",id:u.contentId,"aria-describedby":u.descriptionPresent?u.descriptionId:void 0,"aria-labelledby":u.titlePresent?u.titleId:void 0,"data-state":Os(u.open),...s,ref:r,deferPointerDownOutside:!0,onDismiss:()=>u.onOpenChange(!1)})})})},"DialogContentImpl")),Zp="DialogTitle",Ud=te.forwardRef(Ut(function(t,r){const{__scopeDialog:n,...i}=t,o=$t(Zp,n),{setTitleCount:a}=o;return Is(()=>(a(s=>s+1),()=>a(s=>s-1)),[a]),m.jsx(yi.h2,{id:o.titleId,...i,ref:r})},"DialogTitle")),$p="DialogDescription",Bd=te.forwardRef(Ut(function(t,r){const{__scopeDialog:n,...i}=t,o=$t($p,n),{setDescriptionCount:a}=o;return Is(()=>(a(s=>s+1),()=>a(s=>s-1)),[a]),m.jsx(yi.p,{id:o.descriptionId,...i,ref:r})},"DialogDescription")),ey="DialogClose",ty=te.forwardRef(Ut(function(t,r){const{__scopeDialog:n,...i}=t,o=$t(ey,n);return m.jsx(yi.button,{type:"button",...i,ref:r,onClick:Qt(t.onClick,()=>o.onOpenChange(!1))})},"DialogClose"));function Os(e){return e?"open":"closed"}Ut(Os,"getState");const qd=Hp,ry=Qp,Kd=te.forwardRef(({className:e,...t},r)=>m.jsx(jd,{ref:r,className:Je("fixed inset-0 z-50 bg-black/40","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t}));Kd.displayName=jd.displayName;const ks=te.forwardRef(({className:e,children:t,variant:r="center",...n},i)=>m.jsxs(ry,{children:[m.jsx(Kd,{}),m.jsxs(Fd,{ref:i,className:Je(r==="sheet-left"?"fixed inset-y-0 left-0 z-50 flex h-dvh w-[min(88vw,320px)] flex-col border-r bg-background p-0 shadow-[16px_0_30px_rgba(15,23,42,0.08)] duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:slide-out-to-left-full data-[state=open]:slide-in-from-left-full rounded-none":r==="sheet-right"?"fixed inset-y-0 right-0 z-50 flex h-dvh w-full max-w-4xl flex-col border-l bg-background p-0 shadow-[-16px_0_30px_rgba(15,23,42,0.08)] duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-right-full rounded-none":"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] rounded-lg",e),...n,children:[t,m.jsxs(ty,{className:Je("absolute right-4 top-4 rounded-xl opacity-70 transition-all hover:opacity-100 hover:bg-muted/50 p-1 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",bp),children:[m.jsx(yp,{className:"h-4 w-4"}),m.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));ks.displayName=Fd.displayName;const Ds=({className:e,...t})=>m.jsx("div",{className:Je("flex flex-col space-y-1.5 text-center sm:text-left",e),...t});Ds.displayName="DialogHeader";const Ns=({className:e,...t})=>m.jsx("div",{className:Je("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t});Ns.displayName="DialogFooter";const js=te.forwardRef(({className:e,...t},r)=>m.jsx(Ud,{ref:r,className:Je("text-lg font-semibold leading-none tracking-tight",e),...t}));js.displayName=Ud.displayName;const ny=te.forwardRef(({className:e,...t},r)=>m.jsx(Bd,{ref:r,className:Je("text-sm text-muted-foreground",e),...t}));ny.displayName=Bd.displayName;var iy=Object.defineProperty,rt=(e,t)=>iy(e,"name",{value:t,configurable:!0}),[Fs,TA]=md("Tooltip",[Od]),Ls=Od(),oy="TooltipProvider",ay=700,ss="tooltip.open",[sy,Us]=Fs(oy),ly=rt(e=>{const{__scopeTooltip:t,delayDuration:r=ay,skipDelayDuration:n=300,disableHoverableContent:i=!1,children:o}=e,a=te.useRef(!0),s=te.useRef(!1),u=te.useRef(0);return te.useEffect(()=>{const c=u.current;return()=>window.clearTimeout(c)},[]),m.jsx(sy,{scope:t,isOpenDelayedRef:a,delayDuration:r,onOpen:te.useCallback(()=>{n<=0||(window.clearTimeout(u.current),a.current=!1)},[n]),onClose:te.useCallback(()=>{n<=0||(window.clearTimeout(u.current),u.current=window.setTimeout(()=>a.current=!0,n))},[n]),isPointerInTransitRef:s,onPointerInTransitChange:te.useCallback(c=>{s.current=c},[]),disableHoverableContent:i,children:o})},"TooltipProvider"),ls="Tooltip",[uy,Ao]=Fs(ls),cy=rt(e=>{const{__scopeTooltip:t,children:r,open:n,defaultOpen:i,onOpenChange:o,disableHoverableContent:a,delayDuration:s}=e,u=Us(ls,e.__scopeTooltip),c=Ls(t),[h,g]=te.useState(null),[A,I]=te.useState(void 0),k=ro(),S=te.useRef(0),_=a??u.disableHoverableContent,R=s??u.delayDuration,E=te.useRef(!1),[v,V]=Td({prop:n,defaultProp:i??!1,onChange:rt(C=>{C?(u.onOpen(),document.dispatchEvent(new CustomEvent(ss))):u.onClose(),o?.(C)},"onChange"),caller:ls}),G=te.useMemo(()=>v?E.current?"delayed-open":"instant-open":"closed",[v]),ue=te.useCallback(()=>{window.clearTimeout(S.current),S.current=0,E.current=!1,V(!0)},[V]),ce=te.useCallback(()=>{window.clearTimeout(S.current),S.current=0,V(!1)},[V]),z=te.useCallback(()=>{window.clearTimeout(S.current),S.current=window.setTimeout(()=>{E.current=!0,V(!0),S.current=0},R)},[R,V]);te.useEffect(()=>()=>{S.current&&(window.clearTimeout(S.current),S.current=0)},[]);const se=A??k;return m.jsx(Bp,{...c,children:m.jsx(uy,{scope:t,contentId:se,setContentId:I,open:v,stateAttribute:G,trigger:h,onTriggerChange:g,onTriggerEnter:te.useCallback(()=>{u.isOpenDelayedRef.current?z():ue()},[u.isOpenDelayedRef,z,ue]),onTriggerLeave:te.useCallback(()=>{_?ce():(window.clearTimeout(S.current),S.current=0)},[ce,_]),onOpen:ue,onClose:ce,disableHoverableContent:_,children:r})})},"Tooltip"),Hl="TooltipTrigger",dy=te.forwardRef(rt(function(t,r){const{__scopeTooltip:n,...i}=t,o=Ao(Hl,n),a=Us(Hl,n),s=Ls(n),u=te.useRef(null),c=go(r,u,o.onTriggerChange),h=te.useRef(!1),g=te.useRef(!1),A=te.useCallback(()=>h.current=!1,[]);return te.useEffect(()=>()=>document.removeEventListener("pointerup",A),[A]),m.jsx(qp,{asChild:!0,...s,children:m.jsx(yi.button,{"aria-describedby":o.open?o.contentId:void 0,"data-state":o.stateAttribute,...i,ref:c,onPointerMove:Qt(t.onPointerMove,I=>{I.pointerType!=="touch"&&!g.current&&!a.isPointerInTransitRef.current&&(o.onTriggerEnter(),g.current=!0)}),onPointerLeave:Qt(t.onPointerLeave,()=>{o.onTriggerLeave(),g.current=!1}),onPointerDown:Qt(t.onPointerDown,()=>{o.open&&o.onClose(),h.current=!0,document.addEventListener("pointerup",A,{once:!0})}),onFocus:Qt(t.onFocus,()=>{h.current||o.onOpen()}),onBlur:Qt(t.onBlur,o.onClose),onClick:Qt(t.onClick,o.onClose)})})},"TooltipTrigger")),fy="TooltipPortal",[OA,hy]=Fs(fy,{forceMount:void 0}),si="TooltipContent",py=te.forwardRef(rt(function(t,r){const n=hy(si,t.__scopeTooltip),{forceMount:i=n.forceMount,side:o="top",...a}=t,s=Ao(si,t.__scopeTooltip);return m.jsx(_o,{present:i||s.open,children:s.disableHoverableContent?m.jsx(Wd,{side:o,...a,ref:r}):m.jsx(yy,{side:o,...a,ref:r})})},"TooltipContent")),yy=te.forwardRef(rt(function(t,r){const n=Ao(si,t.__scopeTooltip),i=Us(si,t.__scopeTooltip),o=te.useRef(null),a=go(r,o),[s,u]=te.useState(null),{trigger:c,onClose:h}=n,g=o.current,{onPointerInTransitChange:A}=i,I=te.useCallback(()=>{u(null),A(!1)},[A]),k=te.useCallback((S,_)=>{const R=S.currentTarget,E={x:S.clientX,y:S.clientY},v=zd(E,R.getBoundingClientRect()),V=Hd(E,v),G=Vd(_.getBoundingClientRect()),ue=Jd([...V,...G]);u(ue),A(!0)},[A]);return te.useEffect(()=>()=>I(),[I]),te.useEffect(()=>{if(c&&g){const S=rt(R=>k(R,g),"handleTriggerLeave"),_=rt(R=>k(R,c),"handleContentLeave");return c.addEventListener("pointerleave",S),g.addEventListener("pointerleave",_),()=>{c.removeEventListener("pointerleave",S),g.removeEventListener("pointerleave",_)}}},[c,g,k,I]),te.useEffect(()=>{if(s){const S=rt(_=>{const R=_.target,E={x:_.clientX,y:_.clientY},v=c?.contains(R)||g?.contains(R),V=!Qd(E,s);v?I():V&&(I(),h())},"handleTrackPointerGrace");return document.addEventListener("pointermove",S),()=>document.removeEventListener("pointermove",S)}},[c,g,s,h,I]),m.jsx(Wd,{...t,ref:a})},"TooltipContentHoverable")),by=gp("TooltipContent"),Wd=te.forwardRef(rt(function(t,r){const{__scopeTooltip:n,children:i,"aria-label":o,id:a,onEscapeKeyDown:s,onPointerDownOutside:u,...c}=t,h=Ao(si,n),g=Ls(n),{onClose:A}=h;te.useEffect(()=>(document.addEventListener(ss,A),()=>document.removeEventListener(ss,A)),[A]),te.useEffect(()=>{if(h.trigger){const k=rt(S=>{S.target instanceof Node&&S.target.contains(h.trigger)&&A()},"handleScroll");return window.addEventListener("scroll",k,{capture:!0}),()=>window.removeEventListener("scroll",k,{capture:!0})}},[h.trigger,A]);const{setContentId:I}=h;return Is(()=>(I(a),()=>{I(void 0)}),[a,I]),m.jsx(Pd,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:s,onPointerDownOutside:u,onFocusOutside:k=>k.preventDefault(),onDismiss:A,children:m.jsxs(Lp,{"data-state":h.stateAttribute,role:o?void 0:"tooltip",id:o?void 0:h.contentId,...g,...c,ref:r,style:{...c.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[m.jsx(by,{children:i}),o?m.jsx(Up,{id:h.contentId,role:"tooltip",children:o}):null]})})},"TooltipContentImpl"));function zd(e,t){const r=Math.abs(t.top-e.y),n=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),o=Math.abs(t.left-e.x);switch(Math.min(r,n,i,o)){case o:return"left";case i:return"right";case r:return"top";case n:return"bottom";default:throw new Error("unreachable")}}rt(zd,"getExitSideFromRect");function Hd(e,t,r=5){const n=[];switch(t){case"top":n.push({x:e.x-r,y:e.y+r},{x:e.x+r,y:e.y+r});break;case"bottom":n.push({x:e.x-r,y:e.y-r},{x:e.x+r,y:e.y-r});break;case"left":n.push({x:e.x+r,y:e.y-r},{x:e.x+r,y:e.y+r});break;case"right":n.push({x:e.x-r,y:e.y-r},{x:e.x-r,y:e.y+r});break}return n}rt(Hd,"getPaddedExitPoints");function Vd(e){const{top:t,right:r,bottom:n,left:i}=e;return[{x:i,y:t},{x:r,y:t},{x:r,y:n},{x:i,y:n}]}rt(Vd,"getPointsFromRect");function Qd(e,t){const{x:r,y:n}=e;let i=!1;for(let o=0,a=t.length-1;o<t.length;a=o++){const s=t[o],u=t[a],c=s.x,h=s.y,g=u.x,A=u.y;h>n!=A>n&&r<(g-c)*(n-h)/(A-h)+c&&(i=!i)}return i}rt(Qd,"isPointInPolygon");function Jd(e){const t=e.slice();return t.sort((r,n)=>r.x<n.x?-1:r.x>n.x?1:r.y<n.y?-1:r.y>n.y?1:0),Gd(t)}rt(Jd,"getHull");function Gd(e){if(e.length<=1)return e.slice();const t=[];for(let n=0;n<e.length;n++){const i=e[n];for(;t.length>=2;){const o=t[t.length-1],a=t[t.length-2];if((o.x-a.x)*(i.y-a.y)>=(o.y-a.y)*(i.x-a.x))t.pop();else break}t.push(i)}t.pop();const r=[];for(let n=e.length-1;n>=0;n--){const i=e[n];for(;r.length>=2;){const o=r[r.length-1],a=r[r.length-2];if((o.x-a.x)*(i.y-a.y)>=(o.y-a.y)*(i.x-a.x))r.pop();else break}r.push(i)}return r.pop(),t.length===1&&r.length===1&&t[0].x===r[0].x&&t[0].y===r[0].y?t:t.concat(r)}rt(Gd,"getHullPresorted");var gy=ly,my=cy,wy=dy,Yd=py;const Xd=gy,vo=my,So=wy,bi=te.forwardRef(({className:e,sideOffset:t=4,...r},n)=>m.jsx(Yd,{ref:n,sideOffset:t,className:Je("z-50 overflow-hidden rounded-md border border-border/50 bg-popover","px-2 py-1 text-xs text-popover-foreground shadow-md","animate-in fade-in-0 zoom-in-95","data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2","data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...r}));bi.displayName=Yd.displayName;function _y(e){const t=wd(e).type;return Array.isArray(t)&&t.includes(Rs.AccessControlResource)}async function Eo(e,t){if(!vi(e))return{resourceAcl:null,fallbackAcl:null};try{const r=await Zd(e,t);return r===null?{resourceAcl:null,fallbackAcl:await $d(e,t)}:{resourceAcl:r,fallbackAcl:null}}catch(r){if(r instanceof us)return{resourceAcl:null,fallbackAcl:null};throw r}}async function Zd(e,t){if(!vi(e))return null;try{const r=await _d(e.internal_resourceInfo.aclUrl,t);if(_y(r))throw new us(e,r);return Ad({...r,internal_accessTo:ot(e)})}catch(r){if(r instanceof us)throw r;return null}}async function $d(e,t){const r=new URL(ot(e)),n=r.pathname;if(n==="/")return null;const i=Ay(n),o=new URL(i,r.origin).href,a=await Jr(o,t);if(!vi(a))return null;const s=await Zd(a,t);return s===null?$d(a,t):s}function Ay(e){const t=e.substring(e.length-1)==="/"?e.substring(0,e.length-1):e;return`${e.substring(0,t.lastIndexOf("/"))}/`}function vr(e){return Ms(e).filter(vy)}function vy(e){return yt(e,mo.type).includes(Ae.Authorization)}function Bs(e,t){return e.filter(r=>Sy(r,t))}function Sy(e,t){return yt(e,Ae.accessTo).includes(t)}function xo(e,t){return e.filter(r=>Ey(r,t))}function Ey(e,t){return yt(e,Ae.default).includes(t)||yt(e,Ae.defaultForNew).includes(t)}function gi(e){const t=yt(e,Ae.mode);return t.includes(Ht.write)?{read:t.includes(Ht.read),append:!0,write:!0,control:t.includes(Ht.control)}:{read:t.includes(Ht.read),append:t.includes(Ht.append),write:!1,control:t.includes(Ht.control)}}function mi(e){return e.reduce((t,r)=>t.write||r.write?{read:t.read||r.read,append:!0,write:!0,control:t.control||r.control}:{read:t.read||r.read,append:t.append||r.append,write:!1,control:t.control||r.control},{read:!1,append:!1,write:!1,control:!1})}function xy(e){return vr(e).filter(Iy).reduce(mp,e)}function Iy(e){return wp(e.predicates,Ct.namedNode(e.url),Ct.defaultGraph()).some(t=>!Ry(t))?!1:dr(e,Ae.accessTo)===null&&dr(e,Ae.default)===null&&dr(e,Ae.defaultForNew)===null||dr(e,Ae.mode)===null||dr(e,Ae.agent)===null&&dr(e,Ae.agentGroup)===null&&dr(e,Ae.agentClass)===null}function Ry(e){const{predicate:t}=e,{object:r}=e;return!!(t.equals(Ct.namedNode(mo.type))&&r.equals(Ct.namedNode(Ae.Authorization))||t.equals(Ct.namedNode(Ae.accessTo))||t.equals(Ct.namedNode(Ae.default))||t.equals(Ct.namedNode(Ae.defaultForNew))||t.equals(Ct.namedNode(Ae.mode))&&Object.values(Ht).some(n=>r.equals(Ct.namedNode(n)))||t.equals(Ct.namedNode(Ae.agent))||t.equals(Ct.namedNode(Ae.agentGroup))||t.equals(Ct.namedNode(Ae.agentClass))||t.equals(Ct.namedNode(Ae.origin)))}const Ht={read:"http://www.w3.org/ns/auth/acl#Read",append:"http://www.w3.org/ns/auth/acl#Append",write:"http://www.w3.org/ns/auth/acl#Write",control:"http://www.w3.org/ns/auth/acl#Control"};function Cy(e,t,r){return e.filter(n=>yt(n,r).includes(t))}function My(e,t){const r={};return e.forEach(n=>{const i=yt(n,t),o=gi(n);i.forEach(a=>{r[a]=typeof r[a]>"u"?o:mi([r[a],o])})}),r}function ef(e){let t=fn();return t=Vr(t,mo.type,Ae.Authorization),e.read&&(t=nr(t,Ae.mode,Ht.read)),e.append&&!e.write&&(t=nr(t,Ae.mode,Ht.append)),e.write&&(t=nr(t,Ae.mode,Ht.write)),e.control&&(t=nr(t,Ae.mode,Ht.control)),t}function Py(e){let t=fn();t=Vr(t,mo.type,Ae.Authorization);function r(n,i,o){return yt(n,o).reduce((a,s)=>nr(a,o,s),i)}return t=r(e,t,Ae.accessTo),t=r(e,t,Ae.default),t=r(e,t,Ae.defaultForNew),t=r(e,t,Ae.agent),t=r(e,t,Ae.agentGroup),t=r(e,t,Ae.agentClass),t=r(e,t,Ae.origin),t=r(e,t,Ae.mode),t}function wi(e,t){return Object.assign(Cs(e),{internal_acl:t})}const Ty=[Ae.agent,Ae.agentClass,Ae.agentGroup,Ae.origin];function Oy(e,t,r,n,i){if(!yt(e,r).includes(t)){const s=ef({read:!1,append:!1,write:!1,control:!1});return[e,s]}const o=os(e,r,t);let a=Py(e);return a=os(a,Ae.accessTo,n),a=Vr(a,r,t),Ty.filter(s=>s!==r).forEach(s=>{a=io(a,s)}),[o,a]}function tf(e,t,r,n,i){let o=e;Ms(e).forEach(u=>{const[c,h]=Oy(u,i,r,e.internal_accessTo);o=ti(o,c),o=ti(o,h)});let a=ef(t);a=Vr(a,Ae.accessTo,e.internal_accessTo),a=Vr(a,r,i);const s=ti(o,a);return xy(s)}function rf(e,t){return wi(e,{resourceAcl:t,fallbackAcl:null})}function ky(e){return e.internal_acl.resourceAcl}class us extends Error{constructor(t,r){super(`[${zl(t)}] is governed by Access Control Policies in [${zl(r)}] rather than by Web Access Control.`)}}function _i(e){return e.internal_acl.resourceAcl!==null&&ot(e)===e.internal_acl.resourceAcl.internal_accessTo&&e.internal_resourceInfo.aclUrl===ot(e.internal_acl.resourceAcl)}function qs(e){return _i(e)?e.internal_acl.resourceAcl:null}function Ai(e){return e.internal_acl.fallbackAcl!==null}function Dy(e){return Ai(e)?e.internal_acl.fallbackAcl:null}function Ny(e){return Ad({..._p(),internal_accessTo:ot(e),internal_resourceInfo:{sourceIri:e.internal_resourceInfo.aclUrl,isRawData:!1,linkedResources:{}}})}function jy(e){const t=Ny(e),r=vr(e.internal_acl.fallbackAcl);return xo(r,e.internal_acl.fallbackAcl.internal_accessTo).map(a=>(a=io(a,Ae.default),a=io(a,Ae.defaultForNew),a=Vr(a,Ae.accessTo,ot(e)),a=Vr(a,Ae.default,ot(e)),a)).reduce(ti,t)}async function Fy(e,t,r){if(!vi(e))throw new Error(`Could not determine the location of the ACL for the Resource at [${ot(e)}]; possibly the current user does not have Control access to that Resource. Try calling \`hasAccessibleAcl()\` before calling \`saveAclFor()\`.`);return{...await vd(e.internal_resourceInfo.aclUrl,t,r),internal_accessTo:ot(e)}}function vi(e){return typeof e.internal_resourceInfo.aclUrl=="string"}function nf(e,t){return _i(e)?Uy(e.internal_acl.resourceAcl,t):Ai(e)?Ky(e.internal_acl.fallbackAcl,t):null}function Ly(e){if(_i(e)){const t=qs(e);return By(t)}if(Ai(e)){const t=Dy(e);return Wy(t)}return null}function Uy(e,t){const r=vr(e),n=Bs(r,e.internal_accessTo),o=of(n,t).map(gi);return mi(o)}function By(e){const t=vr(e),r=Bs(t,e.internal_accessTo),n=af(r);return sf(n)}function qy(e,t,r){return tf(e,r,Ae.agent,"resource",t)}function Ky(e,t){const r=vr(e),n=xo(r,e.internal_accessTo),o=of(n,t).map(gi);return mi(o)}function Wy(e){const t=vr(e),r=xo(t,e.internal_accessTo),n=af(r);return sf(n)}function of(e,t){return Cy(e,t,Ae.agent)}function af(e){return e.filter(zy)}function zy(e){return dr(e,Ae.agent)!==null}function sf(e){return My(e,Ae.agent)}function lf(e){return _i(e)?Hy(e.internal_acl.resourceAcl):Ai(e)?Vy(e.internal_acl.fallbackAcl):null}function Hy(e){const t=vr(e),r=Bs(t,e.internal_accessTo),i=uf(r,Ps.Agent).map(gi);return mi(i)}function Vy(e){const t=vr(e),r=xo(t,e.internal_accessTo),i=uf(r,Ps.Agent).map(gi);return mi(i)}function Qy(e,t){return tf(e,t,Ae.agentClass,"resource",Ps.Agent)}function uf(e,t){return e.filter(r=>Jy(r,t))}function Jy(e,t){return yt(e,Ae.agentClass).includes(t)}async function cf(e,t){if(typeof e.internal_resourceInfo.aclUrl!="string")return null;try{return await Jr(e.internal_resourceInfo.aclUrl,t)}catch{return null}}const jt="http://www.w3.org/ns/solid/acp#",Ve={AccessControlResource:jt.concat("AccessControlResource"),PublicAgent:jt.concat("PublicAgent"),access:jt.concat("access"),accessControl:jt.concat("accessControl"),agent:jt.concat("agent"),allOf:jt.concat("allOf"),allow:jt.concat("allow"),anyOf:jt.concat("anyOf"),apply:jt.concat("apply"),deny:jt.concat("deny"),memberAccessControl:jt.concat("memberAccessControl"),noneOf:jt.concat("noneOf")},Ho="http://www.w3.org/ns/auth/acl#",tn={Append:Ho.concat("Append"),Read:Ho.concat("Read"),Write:Ho.concat("Write")};async function df(e,t){const r=_t(e),n=await vd(ot(r),r,t);return Yy(e,n)}function Gy(e){return typeof e.internal_acp=="object"&&e.internal_acp!==null&&typeof e.internal_acp.acr=="object"&&e.internal_acp.acr!==null}function _t(e){if(!Gy(e))throw new Error(`An Access Control Resource for [${ot(e)}] is not available. This could be because the current user is not allowed to see it, or because their Pod Server does not support Access Control Resources.`);return e.internal_acp.acr}function Yy(e,t){return Object.assign(Cs(e),{internal_acp:{...e.internal_acp,acr:t}})}function ff(e){const t=_t(e),r=ot(t);return Yt(t,r)}function hf(e){const t=ff(e);return t===null?[]:yt(t,Ve.accessControl)}function pf(e,t,r){const n=_t(e);return Array.from(new Set(t.map(i=>{const o=Yt(n,i);return o!==null?yt(o,r):[]}).reduce((i,o)=>i.concat(o),[])))}function Xy(e){return pf(e,hf(e),Ve.apply)}function Zy(e){return pf(e,hf(e),Ve.access)}function yf(e,t){const r=yt(e,t);return{read:r.includes(tn.Read),append:r.includes(tn.Append),write:r.includes(tn.Write),controlRead:!1,controlWrite:!1}}function $y(e){return yf(e,Ve.allow)}function eb(e){return yf(e,Ve.deny)}function Vl(e,t,r){const n=Br(t,Ve.allOf).map(c=>Yt(_t(e),c)).filter(c=>c!==null),i=n.every(c=>Br(c,Ve.agent).includes(r)),o=Br(t,Ve.anyOf).map(c=>Yt(_t(e),c)).filter(c=>c!==null),a=o.some(c=>Br(c,Ve.agent).includes(r)),s=Br(t,Ve.noneOf).map(c=>Yt(_t(e),c)).filter(c=>c!==null),u=s.some(c=>Br(c,Ve.agent).includes(r));return n.length+o.length>0&&(n.length===0||i)&&(o.length===0||a)&&(s.length===0||!u)}function Ql(e,t,r){const n=$y(e),i=eb(e);return r==="control"?{read:t.read,append:t.append,write:t.write,controlRead:(t.controlRead||n.read)&&!i.read,controlWrite:(t.controlWrite||n.write)&&!i.write}:{read:(t.read||n.read)&&!i.read,append:(t.append||n.append)&&!i.append,write:(t.write||n.write)&&!i.write,controlRead:t.controlRead,controlWrite:t.controlWrite}}async function Io(e,t){let r={read:!1,append:!1,write:!1,controlRead:!1,controlWrite:!1};return Xy(e).map(o=>Yt(_t(e),o)).filter(o=>o!==null).forEach(o=>{Vl(e,o,t)&&(r=Ql(o,r,"resource"))}),Zy(e).map(o=>Yt(_t(e),o)).filter(o=>o!==null).forEach(o=>{Vl(e,o,t)&&(r=Ql(o,r,"control"))}),r}function bf(e,t){var r,n,i,o;if(e.controlRead!==e.controlWrite)throw new Error("For Pods using Web Access Control, controlRead and controlWrite must be equal.");return{read:(r=e.read)!==null&&r!==void 0?r:t.read,append:(n=e.append)!==null&&n!==void 0?n:t.append,write:(i=e.write)!==null&&i!==void 0?i:t.write,control:(o=e.controlRead)!==null&&o!==void 0?o:t.control}}function Ks(e){return{read:e.read,write:e.write,append:e.append,controlRead:e.control,controlWrite:e.control}}async function tb(e,t,r,n){const i=await Eo(e,n),o=r(wi(e,i),t);return o===null?null:Ks(o)}async function rb(e,t,r){const n=await Eo(e,r),i=t(wi(e,n));return i===null?null:Ks(i)}async function nb(e,t,r){const n=await Eo(e,r),i=t(wi(e,n));if(i===null)return null;const o={};for(const[a,s]of Object.entries(i))o[a]=Ks(s);return o}function gf(e,t,r){return tb(e,t,nf,r)}function mf(e,t){return rb(e,lf,t)}function ib(e,t){return nb(e,Ly,t)}async function wf(e,t){if(!vi(e))return null;const r=await Eo(e,t),n=wi(e,r);let i;if(_i(n))i=ky(n);else if(Ai(n))i=jy(n);else return null;return rf(n,i)}async function _f(e,t,r){let n=null;try{return n=await Fy(e,t,r),rf(e,n)}catch{return null}}async function ob(e,t,r,n,i){const o=await wf(e,i);if(o===null)return null;const a=qs(o),s=r(o),u=bf(t,s),c=n(a,u);return _f(o,c,i)}async function ab(e,t,r,n,i,o){const a=await wf(e,o);if(a===null)return null;const s=n(a,t),u=qs(a),c=bf(r,s),h=i(u,t,c);return _f(a,h,o)}async function sb(e,t,r,n){return ab(e,t,r,nf,qy,n)}async function lb(e,t,r){return ob(e,t,lf,Qy,r)}async function ub(e,t){const r=await cf(e,t);if(r===null)return null;const n=wd(r).type;return Array.isArray(n)&&n.includes(Ve.AccessControlResource)?ot(r):null}async function Si(e,t){const r=await ub(e,t);if(r===null)return null;let n;try{n=await _d(r,t)}catch{return null}return{...e,internal_acp:{acr:{...n,accessTo:ot(e)}}}}async function Af(e,t,r){const n=await Jr(e,r),i=await Si(n,r);return i===null?gf(n,t,r):Io(i,t)}function cb(e){return Array.from(new Set(Ms(_t(e)).map(t=>Br(t,Ve.agent)).reduce((t,r)=>t.concat(r),[])))}async function db(e){return(await Promise.all(cb(e).map(async t=>({[t]:await Io(e,t)})))).reduce((t,r)=>({...t,...r}),{})}async function fb(e,t){const r=await Jr(e,t),n=await Si(r,t);return n===null?ib(r,t):db(n)}async function hb(e){return Io(e,Ve.PublicAgent)}async function vf(e,t){const r=await Jr(e,t),n=await Si(r,t);return n===null?mf(r,t):hb(n)}function Ei(e,t){return Object.assign(Cs(e),{internal_acp:{...e.internal_acp,acr:ti(e.internal_acp.acr,t)}})}const ri="defaultAccessControl",oo="defaultAcrAccessControl";function Ws(e,t){const r=_t(e);return ot(r).concat("#").concat(t)}function zs(e,t,r){return Ws(e,t).concat("AgentMatcher").concat(r.charAt(0).toUpperCase()+r.slice(1)).concat("Policy")}function Sf(e,t){const r=_t(e),n=Ws(e,t),i=Yt(r,n);return i===null||typeof i>"u"?fn({url:n}):i}function Jl(e){return e.includes("Member")?Ve.memberAccessControl:Ve.accessControl}function Ef(e,t){const r=Ws(e,t),n=_t(e);let i=ff(e);return(i===null||typeof i>"u")&&(i=fn({url:ot(n)})),yt(i,Jl(t)).includes(r)?e:(i=wo(i).addUrl(Jl(t),r).build(),Ei(e,i))}function pb(e,t){const r=Ef(e,oo),n=Sf(r,oo);return Ei(r,wo(n).addUrl(Ve.access,t).build())}function yb(e,t){const r=Ef(e,ri),n=Sf(r,ri);return Ei(r,wo(n).addUrl(Ve.apply,t).build())}function bb(e,t,r){const n=zs(e,t,r);return n.includes("Acr")?pb(e,n):yb(e,n)}function xf(e,t,r){return zs(e,t,r).concat("Matcher")}function gb(e,t,r){let n=io(e,r);return(t.read||t.controlRead)&&(n=nr(n,r,tn.Read)),t.append&&(n=nr(n,r,tn.Append)),(t.write||t.controlWrite)&&(n=nr(n,r,tn.Write)),n}const Gl=Ve.anyOf;function mb(e,t,r){const n=zs(e,t,r),i=xf(e,t,r);let o=Yt(_t(e),n);return o||(e=bb(e,t,r),o=fn({url:n}),o=gb(o,{[r]:!0},Ve.allow)),yt(o,Gl).includes(i)?e:(o=wo(o).addUrl(Gl,i).build(),Ei(e,o))}function wb(e,t){return nr(e,Rs.agent,t)}function _b(e,t){return os(e,Rs.agent,t)}function Cn(e,t,r,n,i){var o;const a=xf(e,r,n),s=mb(e,r,n),u=(o=Yt(_t(s),a))!==null&&o!==void 0?o:fn({url:a});return Ei(s,i==="add"?wb(u,t):_b(u,t))}async function If(e,t,r){const n=await Io(e,t);return typeof r.read=="boolean"&&n.read!==r.read&&(e=Cn(e,t,ri,"read",r.read?"add":"remove")),typeof r.append=="boolean"&&n.append!==r.append&&(e=Cn(e,t,ri,"append",r.append?"add":"remove")),typeof r.write=="boolean"&&n.write!==r.write&&(e=Cn(e,t,ri,"write",r.write?"add":"remove")),typeof r.controlRead=="boolean"&&n.controlRead!==r.controlRead&&(e=Cn(e,t,oo,"controlRead",r.controlRead?"add":"remove")),typeof r.controlWrite=="boolean"&&n.controlWrite!==r.controlWrite&&(e=Cn(e,t,oo,"controlWrite",r.controlWrite?"add":"remove")),e}async function Ab(e,t,r,n){const i=await Jr(e,n),o=await Si(i,n);if(o===null)return await sb(i,t,r,n),gf(i,t,n);try{return await df(await If(o,t,r),n),await Af(e,t,n)}catch{return null}}async function vb(e,t){return If(e,Ve.PublicAgent,t)}async function Sb(e,t,r){const n=await Jr(e,r),i=await Si(n,r);if(i===null)return await lb(n,t,r),mf(n,r);try{return await df(await vb(i,t),r),await vf(e,r)}catch{return null}}const Eb=Object.freeze(Object.defineProperty({__proto__:null,getAclServerResourceInfo:cf,getAgentAccess:Af,getAgentAccessAll:fb,getPublicAccess:vf,setAgentAccess:Ab,setPublicAccess:Sb},Symbol.toStringTag,{value:"Module"}));function xb(e){if(!Rf(e))throw new Error("Applet layout descriptor must be an object");if(typeof e.type!="string")throw new Error("Applet layout descriptor type must be a string");switch(e.type){case"single-pane":case"two-pane":return Yl(e.context),e;case"three-pane":return Yl(e.context),e;default:throw new Error(`Unsupported applet layout type: ${e.type}`)}}function Rf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Yl(e){if(e!==void 0){if(!Rf(e))throw new Error("Applet layout descriptor context must be an object");if("collapsible"in e&&typeof e.collapsible!="boolean")throw new Error("Applet layout descriptor context.collapsible must be a boolean");if("initiallyCollapsed"in e&&typeof e.initiallyCollapsed!="boolean")throw new Error("Applet layout descriptor context.initiallyCollapsed must be a boolean")}}function Ib(e){const t=e.access??Eb;return{inspectAgentAccess:r=>Rb(r,e.fetch,t),ensureAgentAccess:async r=>{try{for(const n of r.resources){await Cb(n.url,n.mediaType,e.fetch);const i=await t.setAgentAccess(n.url,r.service.webId,Pb(n.access),{fetch:e.fetch});if(!i||!Cf(i,n.access))return tr("permissionDenied",r,"Pod did not grant the requested service access.")}return tr("granted",r)}catch(n){return tr("permissionDenied",r,cs(n))}},revokeAgentAccess:async r=>{try{for(const n of r.resources)if(!await t.setAgentAccess(n.url,r.service.webId,{read:!1,append:!1,write:!1,controlRead:!1,controlWrite:!1},{fetch:e.fetch}))return tr("permissionDenied",r,"Pod did not revoke the service access.");return tr("missing",r)}catch(n){return tr("permissionDenied",r,cs(n))}}}}async function Rb(e,t,r){try{for(const n of e.resources){const i=await r.getAgentAccess(n.url,e.service.webId,{fetch:t});if(!i||!Cf(i,n.access))return tr("missing",e)}return tr("granted",e)}catch(n){return tr("permissionDenied",e,cs(n))}}async function Cb(e,t,r){const n=await r(e,{method:"HEAD"});if(n.ok)return;if(n.status!==404)throw new Error(`Unable to inspect Pod resource (${n.status}).`);await Mb(e,r);const i=await r(e,{method:"PUT",headers:{"content-type":t},body:`# Created by the Xpod applet permission broker.
1
+ import{j as m,r as te,P as yi,o as Is,q as go,x as md,z as pp,X as yp,f as Je,i as bp,E as gp,F as wd,H as Rs,I as Cs,J as _d,K as Ad,M as ot,Q as Jr,T as zl,U as Ms,V as yt,W as mo,Y as Ae,Z as ti,_ as Vr,$ as os,a0 as io,a1 as fn,a2 as nr,a3 as mp,a4 as wp,a5 as Ct,a6 as dr,a7 as vd,a8 as _p,a9 as Ps,aa as Yt,ab as Br,ac as wo,ad as Sd,ae as Ed,af as xd,B as Me,ag as Ap,ah as vp,ai as ft,aj as rr,t as Rt,ak as Sp,al as Id,am as lr,an as xt,ao as Xt,ap as It,aq as Rd,ar as Pe,as as ke,at as wt,au as Ep,av as xp,u as Ip}from"./dashboard-Dl40_MEa.js";import{A as Cd,a as Rp,n as Md,b as Cp,d as Mp}from"./ai-connections-Bm52UO7Y.js";import{W as Pp,T as Tp}from"./workspace-layout-CPU4XRmb.js";import{a as _o,P as Op,c as Qt,h as kp,g as Dp,R as Np,d as jp,F as Fp,D as Pd,e as Td,u as ro,C as Lp,i as Up,b as Od,f as Bp,A as qp}from"./index-BajZpJ48.js";import{B as Jn}from"./badge-BIaZco1P.js";import{QueryEngine as Kp}from"@comunica/query-sparql-solid";var Wp=Object.defineProperty,Ut=(e,t)=>Wp(e,"name",{value:t,configurable:!0}),Ts="Dialog",[kd,PA]=md(Ts),[zp,$t]=kd(Ts),Hp=Ut(e=>{const{__scopeDialog:t,children:r,open:n,defaultOpen:i,onOpenChange:o,modal:a=!0}=e,s=te.useRef(null),u=te.useRef(null),[c,h]=Td({prop:n,defaultProp:i??!1,onChange:o,caller:Ts}),[g,A]=te.useState(0),[I,k]=te.useState(0);return m.jsx(zp,{scope:t,triggerRef:s,contentRef:u,contentId:ro(),titleId:ro(),descriptionId:ro(),titlePresent:g>0,descriptionPresent:I>0,setTitleCount:A,setDescriptionCount:k,open:c,onOpenChange:h,onOpenToggle:te.useCallback(()=>h(S=>!S),[h]),modal:a,children:r})},"Dialog"),Dd="DialogPortal",[Vp,Nd]=kd(Dd,{forceMount:void 0}),Qp=Ut(e=>{const{__scopeDialog:t,forceMount:r,children:n,container:i}=e,o=$t(Dd,t);return m.jsx(Vp,{scope:t,forceMount:r,children:te.Children.map(n,a=>m.jsx(_o,{present:r||o.open,children:m.jsx(Op,{asChild:!0,container:i,children:a})}))})},"DialogPortal"),as="DialogOverlay",jd=te.forwardRef(Ut(function(t,r){const n=Nd(as,t.__scopeDialog),{forceMount:i=n.forceMount,...o}=t,a=$t(as,t.__scopeDialog);return a.modal?m.jsx(_o,{present:i||a.open,children:m.jsx(Gp,{...o,ref:r})}):null},"DialogOverlay")),Jp=pp("DialogOverlay.RemoveScroll"),Gp=te.forwardRef(Ut(function(t,r){const{__scopeDialog:n,...i}=t,o=$t(as,n),a=Dp(),s=go(r,a);return m.jsx(Np,{as:Jp,allowPinchZoom:!0,shards:[o.contentRef],children:m.jsx(yi.div,{"data-state":Os(o.open),...i,ref:s,style:{pointerEvents:"auto",...i.style}})})},"DialogOverlayImpl")),ai="DialogContent",Fd=te.forwardRef(Ut(function(t,r){const n=Nd(ai,t.__scopeDialog),{forceMount:i=n.forceMount,...o}=t,a=$t(ai,t.__scopeDialog);return m.jsx(_o,{present:i||a.open,children:a.modal?m.jsx(Yp,{...o,ref:r}):m.jsx(Xp,{...o,ref:r})})},"DialogContent")),Yp=te.forwardRef(Ut(function(t,r){const n=$t(ai,t.__scopeDialog),i=te.useRef(null),o=go(r,n.contentRef,i);return te.useEffect(()=>{const a=i.current;if(a)return kp(a)},[]),m.jsx(Ld,{...t,ref:o,trapFocus:n.open,disableOutsidePointerEvents:n.open,onCloseAutoFocus:Qt(t.onCloseAutoFocus,a=>{a.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:Qt(t.onPointerDownOutside,a=>{const s=a.detail.originalEvent,u=s.button===0&&s.ctrlKey===!0;(s.button===2||u)&&a.preventDefault()}),onFocusOutside:Qt(t.onFocusOutside,a=>a.preventDefault())})},"DialogContentModal")),Xp=te.forwardRef(Ut(function(t,r){const n=$t(ai,t.__scopeDialog),i=te.useRef(!1),o=te.useRef(!1);return m.jsx(Ld,{...t,ref:r,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:a=>{t.onCloseAutoFocus?.(a),a.defaultPrevented||(i.current||n.triggerRef.current?.focus(),a.preventDefault()),i.current=!1,o.current=!1},onInteractOutside:a=>{t.onInteractOutside?.(a),a.defaultPrevented||(i.current=!0,a.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const s=a.target;n.triggerRef.current?.contains(s)&&a.preventDefault(),a.detail.originalEvent.type==="focusin"&&o.current&&a.preventDefault()}})},"DialogContentNonModal")),Ld=te.forwardRef(Ut(function(t,r){const{__scopeDialog:n,trapFocus:i,onOpenAutoFocus:o,onCloseAutoFocus:a,...s}=t,u=$t(ai,n);return jp(),m.jsx(m.Fragment,{children:m.jsx(Fp,{asChild:!0,loop:!0,trapped:i,onMountAutoFocus:o,onUnmountAutoFocus:a,children:m.jsx(Pd,{role:"dialog",id:u.contentId,"aria-describedby":u.descriptionPresent?u.descriptionId:void 0,"aria-labelledby":u.titlePresent?u.titleId:void 0,"data-state":Os(u.open),...s,ref:r,deferPointerDownOutside:!0,onDismiss:()=>u.onOpenChange(!1)})})})},"DialogContentImpl")),Zp="DialogTitle",Ud=te.forwardRef(Ut(function(t,r){const{__scopeDialog:n,...i}=t,o=$t(Zp,n),{setTitleCount:a}=o;return Is(()=>(a(s=>s+1),()=>a(s=>s-1)),[a]),m.jsx(yi.h2,{id:o.titleId,...i,ref:r})},"DialogTitle")),$p="DialogDescription",Bd=te.forwardRef(Ut(function(t,r){const{__scopeDialog:n,...i}=t,o=$t($p,n),{setDescriptionCount:a}=o;return Is(()=>(a(s=>s+1),()=>a(s=>s-1)),[a]),m.jsx(yi.p,{id:o.descriptionId,...i,ref:r})},"DialogDescription")),ey="DialogClose",ty=te.forwardRef(Ut(function(t,r){const{__scopeDialog:n,...i}=t,o=$t(ey,n);return m.jsx(yi.button,{type:"button",...i,ref:r,onClick:Qt(t.onClick,()=>o.onOpenChange(!1))})},"DialogClose"));function Os(e){return e?"open":"closed"}Ut(Os,"getState");const qd=Hp,ry=Qp,Kd=te.forwardRef(({className:e,...t},r)=>m.jsx(jd,{ref:r,className:Je("fixed inset-0 z-50 bg-black/40","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t}));Kd.displayName=jd.displayName;const ks=te.forwardRef(({className:e,children:t,variant:r="center",...n},i)=>m.jsxs(ry,{children:[m.jsx(Kd,{}),m.jsxs(Fd,{ref:i,className:Je(r==="sheet-left"?"fixed inset-y-0 left-0 z-50 flex h-dvh w-[min(88vw,320px)] flex-col border-r bg-background p-0 shadow-[16px_0_30px_rgba(15,23,42,0.08)] duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:slide-out-to-left-full data-[state=open]:slide-in-from-left-full rounded-none":r==="sheet-right"?"fixed inset-y-0 right-0 z-50 flex h-dvh w-full max-w-4xl flex-col border-l bg-background p-0 shadow-[-16px_0_30px_rgba(15,23,42,0.08)] duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-right-full rounded-none":"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] rounded-lg",e),...n,children:[t,m.jsxs(ty,{className:Je("absolute right-4 top-4 rounded-xl opacity-70 transition-all hover:opacity-100 hover:bg-muted/50 p-1 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",bp),children:[m.jsx(yp,{className:"h-4 w-4"}),m.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));ks.displayName=Fd.displayName;const Ds=({className:e,...t})=>m.jsx("div",{className:Je("flex flex-col space-y-1.5 text-center sm:text-left",e),...t});Ds.displayName="DialogHeader";const Ns=({className:e,...t})=>m.jsx("div",{className:Je("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t});Ns.displayName="DialogFooter";const js=te.forwardRef(({className:e,...t},r)=>m.jsx(Ud,{ref:r,className:Je("text-lg font-semibold leading-none tracking-tight",e),...t}));js.displayName=Ud.displayName;const ny=te.forwardRef(({className:e,...t},r)=>m.jsx(Bd,{ref:r,className:Je("text-sm text-muted-foreground",e),...t}));ny.displayName=Bd.displayName;var iy=Object.defineProperty,rt=(e,t)=>iy(e,"name",{value:t,configurable:!0}),[Fs,TA]=md("Tooltip",[Od]),Ls=Od(),oy="TooltipProvider",ay=700,ss="tooltip.open",[sy,Us]=Fs(oy),ly=rt(e=>{const{__scopeTooltip:t,delayDuration:r=ay,skipDelayDuration:n=300,disableHoverableContent:i=!1,children:o}=e,a=te.useRef(!0),s=te.useRef(!1),u=te.useRef(0);return te.useEffect(()=>{const c=u.current;return()=>window.clearTimeout(c)},[]),m.jsx(sy,{scope:t,isOpenDelayedRef:a,delayDuration:r,onOpen:te.useCallback(()=>{n<=0||(window.clearTimeout(u.current),a.current=!1)},[n]),onClose:te.useCallback(()=>{n<=0||(window.clearTimeout(u.current),u.current=window.setTimeout(()=>a.current=!0,n))},[n]),isPointerInTransitRef:s,onPointerInTransitChange:te.useCallback(c=>{s.current=c},[]),disableHoverableContent:i,children:o})},"TooltipProvider"),ls="Tooltip",[uy,Ao]=Fs(ls),cy=rt(e=>{const{__scopeTooltip:t,children:r,open:n,defaultOpen:i,onOpenChange:o,disableHoverableContent:a,delayDuration:s}=e,u=Us(ls,e.__scopeTooltip),c=Ls(t),[h,g]=te.useState(null),[A,I]=te.useState(void 0),k=ro(),S=te.useRef(0),_=a??u.disableHoverableContent,R=s??u.delayDuration,E=te.useRef(!1),[v,V]=Td({prop:n,defaultProp:i??!1,onChange:rt(C=>{C?(u.onOpen(),document.dispatchEvent(new CustomEvent(ss))):u.onClose(),o?.(C)},"onChange"),caller:ls}),G=te.useMemo(()=>v?E.current?"delayed-open":"instant-open":"closed",[v]),ue=te.useCallback(()=>{window.clearTimeout(S.current),S.current=0,E.current=!1,V(!0)},[V]),ce=te.useCallback(()=>{window.clearTimeout(S.current),S.current=0,V(!1)},[V]),z=te.useCallback(()=>{window.clearTimeout(S.current),S.current=window.setTimeout(()=>{E.current=!0,V(!0),S.current=0},R)},[R,V]);te.useEffect(()=>()=>{S.current&&(window.clearTimeout(S.current),S.current=0)},[]);const se=A??k;return m.jsx(Bp,{...c,children:m.jsx(uy,{scope:t,contentId:se,setContentId:I,open:v,stateAttribute:G,trigger:h,onTriggerChange:g,onTriggerEnter:te.useCallback(()=>{u.isOpenDelayedRef.current?z():ue()},[u.isOpenDelayedRef,z,ue]),onTriggerLeave:te.useCallback(()=>{_?ce():(window.clearTimeout(S.current),S.current=0)},[ce,_]),onOpen:ue,onClose:ce,disableHoverableContent:_,children:r})})},"Tooltip"),Hl="TooltipTrigger",dy=te.forwardRef(rt(function(t,r){const{__scopeTooltip:n,...i}=t,o=Ao(Hl,n),a=Us(Hl,n),s=Ls(n),u=te.useRef(null),c=go(r,u,o.onTriggerChange),h=te.useRef(!1),g=te.useRef(!1),A=te.useCallback(()=>h.current=!1,[]);return te.useEffect(()=>()=>document.removeEventListener("pointerup",A),[A]),m.jsx(qp,{asChild:!0,...s,children:m.jsx(yi.button,{"aria-describedby":o.open?o.contentId:void 0,"data-state":o.stateAttribute,...i,ref:c,onPointerMove:Qt(t.onPointerMove,I=>{I.pointerType!=="touch"&&!g.current&&!a.isPointerInTransitRef.current&&(o.onTriggerEnter(),g.current=!0)}),onPointerLeave:Qt(t.onPointerLeave,()=>{o.onTriggerLeave(),g.current=!1}),onPointerDown:Qt(t.onPointerDown,()=>{o.open&&o.onClose(),h.current=!0,document.addEventListener("pointerup",A,{once:!0})}),onFocus:Qt(t.onFocus,()=>{h.current||o.onOpen()}),onBlur:Qt(t.onBlur,o.onClose),onClick:Qt(t.onClick,o.onClose)})})},"TooltipTrigger")),fy="TooltipPortal",[OA,hy]=Fs(fy,{forceMount:void 0}),si="TooltipContent",py=te.forwardRef(rt(function(t,r){const n=hy(si,t.__scopeTooltip),{forceMount:i=n.forceMount,side:o="top",...a}=t,s=Ao(si,t.__scopeTooltip);return m.jsx(_o,{present:i||s.open,children:s.disableHoverableContent?m.jsx(Wd,{side:o,...a,ref:r}):m.jsx(yy,{side:o,...a,ref:r})})},"TooltipContent")),yy=te.forwardRef(rt(function(t,r){const n=Ao(si,t.__scopeTooltip),i=Us(si,t.__scopeTooltip),o=te.useRef(null),a=go(r,o),[s,u]=te.useState(null),{trigger:c,onClose:h}=n,g=o.current,{onPointerInTransitChange:A}=i,I=te.useCallback(()=>{u(null),A(!1)},[A]),k=te.useCallback((S,_)=>{const R=S.currentTarget,E={x:S.clientX,y:S.clientY},v=zd(E,R.getBoundingClientRect()),V=Hd(E,v),G=Vd(_.getBoundingClientRect()),ue=Jd([...V,...G]);u(ue),A(!0)},[A]);return te.useEffect(()=>()=>I(),[I]),te.useEffect(()=>{if(c&&g){const S=rt(R=>k(R,g),"handleTriggerLeave"),_=rt(R=>k(R,c),"handleContentLeave");return c.addEventListener("pointerleave",S),g.addEventListener("pointerleave",_),()=>{c.removeEventListener("pointerleave",S),g.removeEventListener("pointerleave",_)}}},[c,g,k,I]),te.useEffect(()=>{if(s){const S=rt(_=>{const R=_.target,E={x:_.clientX,y:_.clientY},v=c?.contains(R)||g?.contains(R),V=!Qd(E,s);v?I():V&&(I(),h())},"handleTrackPointerGrace");return document.addEventListener("pointermove",S),()=>document.removeEventListener("pointermove",S)}},[c,g,s,h,I]),m.jsx(Wd,{...t,ref:a})},"TooltipContentHoverable")),by=gp("TooltipContent"),Wd=te.forwardRef(rt(function(t,r){const{__scopeTooltip:n,children:i,"aria-label":o,id:a,onEscapeKeyDown:s,onPointerDownOutside:u,...c}=t,h=Ao(si,n),g=Ls(n),{onClose:A}=h;te.useEffect(()=>(document.addEventListener(ss,A),()=>document.removeEventListener(ss,A)),[A]),te.useEffect(()=>{if(h.trigger){const k=rt(S=>{S.target instanceof Node&&S.target.contains(h.trigger)&&A()},"handleScroll");return window.addEventListener("scroll",k,{capture:!0}),()=>window.removeEventListener("scroll",k,{capture:!0})}},[h.trigger,A]);const{setContentId:I}=h;return Is(()=>(I(a),()=>{I(void 0)}),[a,I]),m.jsx(Pd,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:s,onPointerDownOutside:u,onFocusOutside:k=>k.preventDefault(),onDismiss:A,children:m.jsxs(Lp,{"data-state":h.stateAttribute,role:o?void 0:"tooltip",id:o?void 0:h.contentId,...g,...c,ref:r,style:{...c.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[m.jsx(by,{children:i}),o?m.jsx(Up,{id:h.contentId,role:"tooltip",children:o}):null]})})},"TooltipContentImpl"));function zd(e,t){const r=Math.abs(t.top-e.y),n=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),o=Math.abs(t.left-e.x);switch(Math.min(r,n,i,o)){case o:return"left";case i:return"right";case r:return"top";case n:return"bottom";default:throw new Error("unreachable")}}rt(zd,"getExitSideFromRect");function Hd(e,t,r=5){const n=[];switch(t){case"top":n.push({x:e.x-r,y:e.y+r},{x:e.x+r,y:e.y+r});break;case"bottom":n.push({x:e.x-r,y:e.y-r},{x:e.x+r,y:e.y-r});break;case"left":n.push({x:e.x+r,y:e.y-r},{x:e.x+r,y:e.y+r});break;case"right":n.push({x:e.x-r,y:e.y-r},{x:e.x-r,y:e.y+r});break}return n}rt(Hd,"getPaddedExitPoints");function Vd(e){const{top:t,right:r,bottom:n,left:i}=e;return[{x:i,y:t},{x:r,y:t},{x:r,y:n},{x:i,y:n}]}rt(Vd,"getPointsFromRect");function Qd(e,t){const{x:r,y:n}=e;let i=!1;for(let o=0,a=t.length-1;o<t.length;a=o++){const s=t[o],u=t[a],c=s.x,h=s.y,g=u.x,A=u.y;h>n!=A>n&&r<(g-c)*(n-h)/(A-h)+c&&(i=!i)}return i}rt(Qd,"isPointInPolygon");function Jd(e){const t=e.slice();return t.sort((r,n)=>r.x<n.x?-1:r.x>n.x?1:r.y<n.y?-1:r.y>n.y?1:0),Gd(t)}rt(Jd,"getHull");function Gd(e){if(e.length<=1)return e.slice();const t=[];for(let n=0;n<e.length;n++){const i=e[n];for(;t.length>=2;){const o=t[t.length-1],a=t[t.length-2];if((o.x-a.x)*(i.y-a.y)>=(o.y-a.y)*(i.x-a.x))t.pop();else break}t.push(i)}t.pop();const r=[];for(let n=e.length-1;n>=0;n--){const i=e[n];for(;r.length>=2;){const o=r[r.length-1],a=r[r.length-2];if((o.x-a.x)*(i.y-a.y)>=(o.y-a.y)*(i.x-a.x))r.pop();else break}r.push(i)}return r.pop(),t.length===1&&r.length===1&&t[0].x===r[0].x&&t[0].y===r[0].y?t:t.concat(r)}rt(Gd,"getHullPresorted");var gy=ly,my=cy,wy=dy,Yd=py;const Xd=gy,vo=my,So=wy,bi=te.forwardRef(({className:e,sideOffset:t=4,...r},n)=>m.jsx(Yd,{ref:n,sideOffset:t,className:Je("z-50 overflow-hidden rounded-md border border-border/50 bg-popover","px-2 py-1 text-xs text-popover-foreground shadow-md","animate-in fade-in-0 zoom-in-95","data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2","data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...r}));bi.displayName=Yd.displayName;function _y(e){const t=wd(e).type;return Array.isArray(t)&&t.includes(Rs.AccessControlResource)}async function Eo(e,t){if(!vi(e))return{resourceAcl:null,fallbackAcl:null};try{const r=await Zd(e,t);return r===null?{resourceAcl:null,fallbackAcl:await $d(e,t)}:{resourceAcl:r,fallbackAcl:null}}catch(r){if(r instanceof us)return{resourceAcl:null,fallbackAcl:null};throw r}}async function Zd(e,t){if(!vi(e))return null;try{const r=await _d(e.internal_resourceInfo.aclUrl,t);if(_y(r))throw new us(e,r);return Ad({...r,internal_accessTo:ot(e)})}catch(r){if(r instanceof us)throw r;return null}}async function $d(e,t){const r=new URL(ot(e)),n=r.pathname;if(n==="/")return null;const i=Ay(n),o=new URL(i,r.origin).href,a=await Jr(o,t);if(!vi(a))return null;const s=await Zd(a,t);return s===null?$d(a,t):s}function Ay(e){const t=e.substring(e.length-1)==="/"?e.substring(0,e.length-1):e;return`${e.substring(0,t.lastIndexOf("/"))}/`}function vr(e){return Ms(e).filter(vy)}function vy(e){return yt(e,mo.type).includes(Ae.Authorization)}function Bs(e,t){return e.filter(r=>Sy(r,t))}function Sy(e,t){return yt(e,Ae.accessTo).includes(t)}function xo(e,t){return e.filter(r=>Ey(r,t))}function Ey(e,t){return yt(e,Ae.default).includes(t)||yt(e,Ae.defaultForNew).includes(t)}function gi(e){const t=yt(e,Ae.mode);return t.includes(Ht.write)?{read:t.includes(Ht.read),append:!0,write:!0,control:t.includes(Ht.control)}:{read:t.includes(Ht.read),append:t.includes(Ht.append),write:!1,control:t.includes(Ht.control)}}function mi(e){return e.reduce((t,r)=>t.write||r.write?{read:t.read||r.read,append:!0,write:!0,control:t.control||r.control}:{read:t.read||r.read,append:t.append||r.append,write:!1,control:t.control||r.control},{read:!1,append:!1,write:!1,control:!1})}function xy(e){return vr(e).filter(Iy).reduce(mp,e)}function Iy(e){return wp(e.predicates,Ct.namedNode(e.url),Ct.defaultGraph()).some(t=>!Ry(t))?!1:dr(e,Ae.accessTo)===null&&dr(e,Ae.default)===null&&dr(e,Ae.defaultForNew)===null||dr(e,Ae.mode)===null||dr(e,Ae.agent)===null&&dr(e,Ae.agentGroup)===null&&dr(e,Ae.agentClass)===null}function Ry(e){const{predicate:t}=e,{object:r}=e;return!!(t.equals(Ct.namedNode(mo.type))&&r.equals(Ct.namedNode(Ae.Authorization))||t.equals(Ct.namedNode(Ae.accessTo))||t.equals(Ct.namedNode(Ae.default))||t.equals(Ct.namedNode(Ae.defaultForNew))||t.equals(Ct.namedNode(Ae.mode))&&Object.values(Ht).some(n=>r.equals(Ct.namedNode(n)))||t.equals(Ct.namedNode(Ae.agent))||t.equals(Ct.namedNode(Ae.agentGroup))||t.equals(Ct.namedNode(Ae.agentClass))||t.equals(Ct.namedNode(Ae.origin)))}const Ht={read:"http://www.w3.org/ns/auth/acl#Read",append:"http://www.w3.org/ns/auth/acl#Append",write:"http://www.w3.org/ns/auth/acl#Write",control:"http://www.w3.org/ns/auth/acl#Control"};function Cy(e,t,r){return e.filter(n=>yt(n,r).includes(t))}function My(e,t){const r={};return e.forEach(n=>{const i=yt(n,t),o=gi(n);i.forEach(a=>{r[a]=typeof r[a]>"u"?o:mi([r[a],o])})}),r}function ef(e){let t=fn();return t=Vr(t,mo.type,Ae.Authorization),e.read&&(t=nr(t,Ae.mode,Ht.read)),e.append&&!e.write&&(t=nr(t,Ae.mode,Ht.append)),e.write&&(t=nr(t,Ae.mode,Ht.write)),e.control&&(t=nr(t,Ae.mode,Ht.control)),t}function Py(e){let t=fn();t=Vr(t,mo.type,Ae.Authorization);function r(n,i,o){return yt(n,o).reduce((a,s)=>nr(a,o,s),i)}return t=r(e,t,Ae.accessTo),t=r(e,t,Ae.default),t=r(e,t,Ae.defaultForNew),t=r(e,t,Ae.agent),t=r(e,t,Ae.agentGroup),t=r(e,t,Ae.agentClass),t=r(e,t,Ae.origin),t=r(e,t,Ae.mode),t}function wi(e,t){return Object.assign(Cs(e),{internal_acl:t})}const Ty=[Ae.agent,Ae.agentClass,Ae.agentGroup,Ae.origin];function Oy(e,t,r,n,i){if(!yt(e,r).includes(t)){const s=ef({read:!1,append:!1,write:!1,control:!1});return[e,s]}const o=os(e,r,t);let a=Py(e);return a=os(a,Ae.accessTo,n),a=Vr(a,r,t),Ty.filter(s=>s!==r).forEach(s=>{a=io(a,s)}),[o,a]}function tf(e,t,r,n,i){let o=e;Ms(e).forEach(u=>{const[c,h]=Oy(u,i,r,e.internal_accessTo);o=ti(o,c),o=ti(o,h)});let a=ef(t);a=Vr(a,Ae.accessTo,e.internal_accessTo),a=Vr(a,r,i);const s=ti(o,a);return xy(s)}function rf(e,t){return wi(e,{resourceAcl:t,fallbackAcl:null})}function ky(e){return e.internal_acl.resourceAcl}class us extends Error{constructor(t,r){super(`[${zl(t)}] is governed by Access Control Policies in [${zl(r)}] rather than by Web Access Control.`)}}function _i(e){return e.internal_acl.resourceAcl!==null&&ot(e)===e.internal_acl.resourceAcl.internal_accessTo&&e.internal_resourceInfo.aclUrl===ot(e.internal_acl.resourceAcl)}function qs(e){return _i(e)?e.internal_acl.resourceAcl:null}function Ai(e){return e.internal_acl.fallbackAcl!==null}function Dy(e){return Ai(e)?e.internal_acl.fallbackAcl:null}function Ny(e){return Ad({..._p(),internal_accessTo:ot(e),internal_resourceInfo:{sourceIri:e.internal_resourceInfo.aclUrl,isRawData:!1,linkedResources:{}}})}function jy(e){const t=Ny(e),r=vr(e.internal_acl.fallbackAcl);return xo(r,e.internal_acl.fallbackAcl.internal_accessTo).map(a=>(a=io(a,Ae.default),a=io(a,Ae.defaultForNew),a=Vr(a,Ae.accessTo,ot(e)),a=Vr(a,Ae.default,ot(e)),a)).reduce(ti,t)}async function Fy(e,t,r){if(!vi(e))throw new Error(`Could not determine the location of the ACL for the Resource at [${ot(e)}]; possibly the current user does not have Control access to that Resource. Try calling \`hasAccessibleAcl()\` before calling \`saveAclFor()\`.`);return{...await vd(e.internal_resourceInfo.aclUrl,t,r),internal_accessTo:ot(e)}}function vi(e){return typeof e.internal_resourceInfo.aclUrl=="string"}function nf(e,t){return _i(e)?Uy(e.internal_acl.resourceAcl,t):Ai(e)?Ky(e.internal_acl.fallbackAcl,t):null}function Ly(e){if(_i(e)){const t=qs(e);return By(t)}if(Ai(e)){const t=Dy(e);return Wy(t)}return null}function Uy(e,t){const r=vr(e),n=Bs(r,e.internal_accessTo),o=of(n,t).map(gi);return mi(o)}function By(e){const t=vr(e),r=Bs(t,e.internal_accessTo),n=af(r);return sf(n)}function qy(e,t,r){return tf(e,r,Ae.agent,"resource",t)}function Ky(e,t){const r=vr(e),n=xo(r,e.internal_accessTo),o=of(n,t).map(gi);return mi(o)}function Wy(e){const t=vr(e),r=xo(t,e.internal_accessTo),n=af(r);return sf(n)}function of(e,t){return Cy(e,t,Ae.agent)}function af(e){return e.filter(zy)}function zy(e){return dr(e,Ae.agent)!==null}function sf(e){return My(e,Ae.agent)}function lf(e){return _i(e)?Hy(e.internal_acl.resourceAcl):Ai(e)?Vy(e.internal_acl.fallbackAcl):null}function Hy(e){const t=vr(e),r=Bs(t,e.internal_accessTo),i=uf(r,Ps.Agent).map(gi);return mi(i)}function Vy(e){const t=vr(e),r=xo(t,e.internal_accessTo),i=uf(r,Ps.Agent).map(gi);return mi(i)}function Qy(e,t){return tf(e,t,Ae.agentClass,"resource",Ps.Agent)}function uf(e,t){return e.filter(r=>Jy(r,t))}function Jy(e,t){return yt(e,Ae.agentClass).includes(t)}async function cf(e,t){if(typeof e.internal_resourceInfo.aclUrl!="string")return null;try{return await Jr(e.internal_resourceInfo.aclUrl,t)}catch{return null}}const jt="http://www.w3.org/ns/solid/acp#",Ve={AccessControlResource:jt.concat("AccessControlResource"),PublicAgent:jt.concat("PublicAgent"),access:jt.concat("access"),accessControl:jt.concat("accessControl"),agent:jt.concat("agent"),allOf:jt.concat("allOf"),allow:jt.concat("allow"),anyOf:jt.concat("anyOf"),apply:jt.concat("apply"),deny:jt.concat("deny"),memberAccessControl:jt.concat("memberAccessControl"),noneOf:jt.concat("noneOf")},Ho="http://www.w3.org/ns/auth/acl#",tn={Append:Ho.concat("Append"),Read:Ho.concat("Read"),Write:Ho.concat("Write")};async function df(e,t){const r=_t(e),n=await vd(ot(r),r,t);return Yy(e,n)}function Gy(e){return typeof e.internal_acp=="object"&&e.internal_acp!==null&&typeof e.internal_acp.acr=="object"&&e.internal_acp.acr!==null}function _t(e){if(!Gy(e))throw new Error(`An Access Control Resource for [${ot(e)}] is not available. This could be because the current user is not allowed to see it, or because their Pod Server does not support Access Control Resources.`);return e.internal_acp.acr}function Yy(e,t){return Object.assign(Cs(e),{internal_acp:{...e.internal_acp,acr:t}})}function ff(e){const t=_t(e),r=ot(t);return Yt(t,r)}function hf(e){const t=ff(e);return t===null?[]:yt(t,Ve.accessControl)}function pf(e,t,r){const n=_t(e);return Array.from(new Set(t.map(i=>{const o=Yt(n,i);return o!==null?yt(o,r):[]}).reduce((i,o)=>i.concat(o),[])))}function Xy(e){return pf(e,hf(e),Ve.apply)}function Zy(e){return pf(e,hf(e),Ve.access)}function yf(e,t){const r=yt(e,t);return{read:r.includes(tn.Read),append:r.includes(tn.Append),write:r.includes(tn.Write),controlRead:!1,controlWrite:!1}}function $y(e){return yf(e,Ve.allow)}function eb(e){return yf(e,Ve.deny)}function Vl(e,t,r){const n=Br(t,Ve.allOf).map(c=>Yt(_t(e),c)).filter(c=>c!==null),i=n.every(c=>Br(c,Ve.agent).includes(r)),o=Br(t,Ve.anyOf).map(c=>Yt(_t(e),c)).filter(c=>c!==null),a=o.some(c=>Br(c,Ve.agent).includes(r)),s=Br(t,Ve.noneOf).map(c=>Yt(_t(e),c)).filter(c=>c!==null),u=s.some(c=>Br(c,Ve.agent).includes(r));return n.length+o.length>0&&(n.length===0||i)&&(o.length===0||a)&&(s.length===0||!u)}function Ql(e,t,r){const n=$y(e),i=eb(e);return r==="control"?{read:t.read,append:t.append,write:t.write,controlRead:(t.controlRead||n.read)&&!i.read,controlWrite:(t.controlWrite||n.write)&&!i.write}:{read:(t.read||n.read)&&!i.read,append:(t.append||n.append)&&!i.append,write:(t.write||n.write)&&!i.write,controlRead:t.controlRead,controlWrite:t.controlWrite}}async function Io(e,t){let r={read:!1,append:!1,write:!1,controlRead:!1,controlWrite:!1};return Xy(e).map(o=>Yt(_t(e),o)).filter(o=>o!==null).forEach(o=>{Vl(e,o,t)&&(r=Ql(o,r,"resource"))}),Zy(e).map(o=>Yt(_t(e),o)).filter(o=>o!==null).forEach(o=>{Vl(e,o,t)&&(r=Ql(o,r,"control"))}),r}function bf(e,t){var r,n,i,o;if(e.controlRead!==e.controlWrite)throw new Error("For Pods using Web Access Control, controlRead and controlWrite must be equal.");return{read:(r=e.read)!==null&&r!==void 0?r:t.read,append:(n=e.append)!==null&&n!==void 0?n:t.append,write:(i=e.write)!==null&&i!==void 0?i:t.write,control:(o=e.controlRead)!==null&&o!==void 0?o:t.control}}function Ks(e){return{read:e.read,write:e.write,append:e.append,controlRead:e.control,controlWrite:e.control}}async function tb(e,t,r,n){const i=await Eo(e,n),o=r(wi(e,i),t);return o===null?null:Ks(o)}async function rb(e,t,r){const n=await Eo(e,r),i=t(wi(e,n));return i===null?null:Ks(i)}async function nb(e,t,r){const n=await Eo(e,r),i=t(wi(e,n));if(i===null)return null;const o={};for(const[a,s]of Object.entries(i))o[a]=Ks(s);return o}function gf(e,t,r){return tb(e,t,nf,r)}function mf(e,t){return rb(e,lf,t)}function ib(e,t){return nb(e,Ly,t)}async function wf(e,t){if(!vi(e))return null;const r=await Eo(e,t),n=wi(e,r);let i;if(_i(n))i=ky(n);else if(Ai(n))i=jy(n);else return null;return rf(n,i)}async function _f(e,t,r){let n=null;try{return n=await Fy(e,t,r),rf(e,n)}catch{return null}}async function ob(e,t,r,n,i){const o=await wf(e,i);if(o===null)return null;const a=qs(o),s=r(o),u=bf(t,s),c=n(a,u);return _f(o,c,i)}async function ab(e,t,r,n,i,o){const a=await wf(e,o);if(a===null)return null;const s=n(a,t),u=qs(a),c=bf(r,s),h=i(u,t,c);return _f(a,h,o)}async function sb(e,t,r,n){return ab(e,t,r,nf,qy,n)}async function lb(e,t,r){return ob(e,t,lf,Qy,r)}async function ub(e,t){const r=await cf(e,t);if(r===null)return null;const n=wd(r).type;return Array.isArray(n)&&n.includes(Ve.AccessControlResource)?ot(r):null}async function Si(e,t){const r=await ub(e,t);if(r===null)return null;let n;try{n=await _d(r,t)}catch{return null}return{...e,internal_acp:{acr:{...n,accessTo:ot(e)}}}}async function Af(e,t,r){const n=await Jr(e,r),i=await Si(n,r);return i===null?gf(n,t,r):Io(i,t)}function cb(e){return Array.from(new Set(Ms(_t(e)).map(t=>Br(t,Ve.agent)).reduce((t,r)=>t.concat(r),[])))}async function db(e){return(await Promise.all(cb(e).map(async t=>({[t]:await Io(e,t)})))).reduce((t,r)=>({...t,...r}),{})}async function fb(e,t){const r=await Jr(e,t),n=await Si(r,t);return n===null?ib(r,t):db(n)}async function hb(e){return Io(e,Ve.PublicAgent)}async function vf(e,t){const r=await Jr(e,t),n=await Si(r,t);return n===null?mf(r,t):hb(n)}function Ei(e,t){return Object.assign(Cs(e),{internal_acp:{...e.internal_acp,acr:ti(e.internal_acp.acr,t)}})}const ri="defaultAccessControl",oo="defaultAcrAccessControl";function Ws(e,t){const r=_t(e);return ot(r).concat("#").concat(t)}function zs(e,t,r){return Ws(e,t).concat("AgentMatcher").concat(r.charAt(0).toUpperCase()+r.slice(1)).concat("Policy")}function Sf(e,t){const r=_t(e),n=Ws(e,t),i=Yt(r,n);return i===null||typeof i>"u"?fn({url:n}):i}function Jl(e){return e.includes("Member")?Ve.memberAccessControl:Ve.accessControl}function Ef(e,t){const r=Ws(e,t),n=_t(e);let i=ff(e);return(i===null||typeof i>"u")&&(i=fn({url:ot(n)})),yt(i,Jl(t)).includes(r)?e:(i=wo(i).addUrl(Jl(t),r).build(),Ei(e,i))}function pb(e,t){const r=Ef(e,oo),n=Sf(r,oo);return Ei(r,wo(n).addUrl(Ve.access,t).build())}function yb(e,t){const r=Ef(e,ri),n=Sf(r,ri);return Ei(r,wo(n).addUrl(Ve.apply,t).build())}function bb(e,t,r){const n=zs(e,t,r);return n.includes("Acr")?pb(e,n):yb(e,n)}function xf(e,t,r){return zs(e,t,r).concat("Matcher")}function gb(e,t,r){let n=io(e,r);return(t.read||t.controlRead)&&(n=nr(n,r,tn.Read)),t.append&&(n=nr(n,r,tn.Append)),(t.write||t.controlWrite)&&(n=nr(n,r,tn.Write)),n}const Gl=Ve.anyOf;function mb(e,t,r){const n=zs(e,t,r),i=xf(e,t,r);let o=Yt(_t(e),n);return o||(e=bb(e,t,r),o=fn({url:n}),o=gb(o,{[r]:!0},Ve.allow)),yt(o,Gl).includes(i)?e:(o=wo(o).addUrl(Gl,i).build(),Ei(e,o))}function wb(e,t){return nr(e,Rs.agent,t)}function _b(e,t){return os(e,Rs.agent,t)}function Cn(e,t,r,n,i){var o;const a=xf(e,r,n),s=mb(e,r,n),u=(o=Yt(_t(s),a))!==null&&o!==void 0?o:fn({url:a});return Ei(s,i==="add"?wb(u,t):_b(u,t))}async function If(e,t,r){const n=await Io(e,t);return typeof r.read=="boolean"&&n.read!==r.read&&(e=Cn(e,t,ri,"read",r.read?"add":"remove")),typeof r.append=="boolean"&&n.append!==r.append&&(e=Cn(e,t,ri,"append",r.append?"add":"remove")),typeof r.write=="boolean"&&n.write!==r.write&&(e=Cn(e,t,ri,"write",r.write?"add":"remove")),typeof r.controlRead=="boolean"&&n.controlRead!==r.controlRead&&(e=Cn(e,t,oo,"controlRead",r.controlRead?"add":"remove")),typeof r.controlWrite=="boolean"&&n.controlWrite!==r.controlWrite&&(e=Cn(e,t,oo,"controlWrite",r.controlWrite?"add":"remove")),e}async function Ab(e,t,r,n){const i=await Jr(e,n),o=await Si(i,n);if(o===null)return await sb(i,t,r,n),gf(i,t,n);try{return await df(await If(o,t,r),n),await Af(e,t,n)}catch{return null}}async function vb(e,t){return If(e,Ve.PublicAgent,t)}async function Sb(e,t,r){const n=await Jr(e,r),i=await Si(n,r);if(i===null)return await lb(n,t,r),mf(n,r);try{return await df(await vb(i,t),r),await vf(e,r)}catch{return null}}const Eb=Object.freeze(Object.defineProperty({__proto__:null,getAclServerResourceInfo:cf,getAgentAccess:Af,getAgentAccessAll:fb,getPublicAccess:vf,setAgentAccess:Ab,setPublicAccess:Sb},Symbol.toStringTag,{value:"Module"}));function xb(e){if(!Rf(e))throw new Error("Applet layout descriptor must be an object");if(typeof e.type!="string")throw new Error("Applet layout descriptor type must be a string");switch(e.type){case"single-pane":case"two-pane":return Yl(e.context),e;case"three-pane":return Yl(e.context),e;default:throw new Error(`Unsupported applet layout type: ${e.type}`)}}function Rf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Yl(e){if(e!==void 0){if(!Rf(e))throw new Error("Applet layout descriptor context must be an object");if("collapsible"in e&&typeof e.collapsible!="boolean")throw new Error("Applet layout descriptor context.collapsible must be a boolean");if("initiallyCollapsed"in e&&typeof e.initiallyCollapsed!="boolean")throw new Error("Applet layout descriptor context.initiallyCollapsed must be a boolean")}}function Ib(e){const t=e.access??Eb;return{inspectAgentAccess:r=>Rb(r,e.fetch,t),ensureAgentAccess:async r=>{try{for(const n of r.resources){await Cb(n.url,n.mediaType,e.fetch);const i=await t.setAgentAccess(n.url,r.service.webId,Pb(n.access),{fetch:e.fetch});if(!i||!Cf(i,n.access))return tr("permissionDenied",r,"Pod did not grant the requested service access.")}return tr("granted",r)}catch(n){return tr("permissionDenied",r,cs(n))}},revokeAgentAccess:async r=>{try{for(const n of r.resources)if(!await t.setAgentAccess(n.url,r.service.webId,{read:!1,append:!1,write:!1,controlRead:!1,controlWrite:!1},{fetch:e.fetch}))return tr("permissionDenied",r,"Pod did not revoke the service access.");return tr("missing",r)}catch(n){return tr("permissionDenied",r,cs(n))}}}}async function Rb(e,t,r){try{for(const n of e.resources){const i=await r.getAgentAccess(n.url,e.service.webId,{fetch:t});if(!i||!Cf(i,n.access))return tr("missing",e)}return tr("granted",e)}catch(n){return tr("permissionDenied",e,cs(n))}}async function Cb(e,t,r){const n=await r(e,{method:"HEAD"});if(n.ok)return;if(n.status!==404)throw new Error(`Unable to inspect Pod resource (${n.status}).`);await Mb(e,r);const i=await r(e,{method:"PUT",headers:{"content-type":t},body:`# Created by the Xpod applet permission broker.
2
2
  `});if(!i.ok)throw new Error(`Unable to create Pod resource (${i.status}).`)}async function Mb(e,t){const r=new URL(e),n=[];let i=new URL("./",r);for(;i.pathname!=="/";){const o=await t(i.href,{method:"HEAD"});if(o.ok)break;if(o.status!==404)throw new Error(`Unable to inspect Pod container (${o.status}).`);n.push(i.href),i=new URL("../",i)}for(const o of n.reverse()){const a=await t(o,{method:"PUT",headers:{"content-type":"text/turtle",link:'<http://www.w3.org/ns/ldp#BasicContainer>; rel="type"'},body:""});if(!a.ok&&a.status!==409)throw new Error(`Unable to create Pod container (${a.status}).`)}}function Pb(e){return{read:e.read===!0,append:e.append===!0,write:e.write===!0,controlRead:!1,controlWrite:!1}}function Cf(e,t){return(!t.read||e.read===!0)&&(!t.append||e.append===!0)&&(!t.write||e.write===!0)}function tr(e,t,r){return{status:e,resources:t.resources,...r?{message:r}:{}}}function cs(e){return e instanceof Error?e.message:"Unable to update Pod service access."}const Tb=xb;function Ob(e,t){return kb(e,t)}function kb(e,t){const r=Db(e),n=e.createController(t);return r.type==="single-pane"?{layout:"single-pane",controller:n,element:te.createElement(r.render,{controller:n,host:t})}:r.type==="two-pane"?{layout:"two-pane",controller:n,slots:{listHeader:te.createElement(r.slots.listHeader,{controller:n,host:t}),list:te.createElement(r.slots.list,{controller:n,host:t}),mainHeader:te.createElement(r.slots.mainHeader,{controller:n,host:t}),main:te.createElement(r.slots.main,{controller:n,host:t})}}:{layout:"three-pane",controller:n,contextConfig:r.contextConfig,slots:{listHeader:te.createElement(r.slots.listHeader,{controller:n,host:t}),list:te.createElement(r.slots.list,{controller:n,host:t}),mainHeader:te.createElement(r.slots.mainHeader,{controller:n,host:t}),main:te.createElement(r.slots.main,{controller:n,host:t}),context:te.createElement(r.slots.context,{controller:n,host:t})}}}function Db(e){if("layout"in e){const t=Fb(e.layout),r=Tb(t.descriptor),n=r.type;if(e.manifest.layout!==n)throw new Error(`Applet manifest layout ${e.manifest.layout} does not match descriptor layout ${n}`);if(n==="single-pane"){if(!("render"in t))throw new Error("Applet descriptor single-pane render must be a function");return Wr(t.render,"Applet descriptor single-pane render"),{type:"single-pane",render:t.render}}if(!("slots"in t))throw new Error(`Applet descriptor declares ${n} but no slots were provided`);return n==="two-pane"?(ds(t.slots,"Applet descriptor two-pane"),{type:"two-pane",slots:t.slots}):(Nb(t.slots,"Applet descriptor three-pane"),{type:"three-pane",contextConfig:r.context,slots:t.slots})}if(e.manifest.layout==="single-pane"){if(!("render"in e))throw new Error("Applet manifest declares single-pane but no single-pane renderer was provided");return Wr(e.render,"Applet single-pane render"),{type:"single-pane",render:e.render}}if(e.manifest.layout==="two-pane"&&"slots"in e)return ds(e.slots,"Applet two-pane"),{type:"two-pane",slots:e.slots};throw new Error(`Applet manifest declares ${e.manifest.layout} but no supported applet layout was provided`)}function ds(e,t){jb(e,t),Wr(e.listHeader,`${t} slot listHeader`),Wr(e.list,`${t} slot list`),Wr(e.mainHeader,`${t} slot mainHeader`),Wr(e.main,`${t} slot main`)}function Nb(e,t){ds(e,t),Wr(e.context,`${t} slot context`)}function jb(e,t){if(typeof e!="object"||e===null)throw new Error(`${t} slots must be an object`)}function Wr(e,t){if(typeof e!="function")throw new Error(`${t} must be a function`)}function Fb(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new Error("Applet descriptor layout must be an object");if(!("descriptor"in e)||e.descriptor===void 0)throw new Error("Applet descriptor required");return e}const Lb=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Mf=(...e)=>e.filter((t,r,n)=>!!t&&t.trim()!==""&&n.indexOf(t)===r).join(" ").trim();var Ub={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const Bb=te.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:r=2,absoluteStrokeWidth:n,className:i="",children:o,iconNode:a,...s},u)=>te.createElement("svg",{ref:u,...Ub,width:t,height:t,stroke:e,strokeWidth:n?Number(r)*24/Number(t):r,className:Mf("lucide",i),...s},[...a.map(([c,h])=>te.createElement(c,h)),...Array.isArray(o)?o:[o]]));const Te=(e,t)=>{const r=te.forwardRef(({className:n,...i},o)=>te.createElement(Bb,{ref:o,iconNode:t,className:Mf(`lucide-${Lb(e)}`,n),...i}));return r.displayName=`${e}`,r};const qb=[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]],Kb=Te("ArrowDown",qb);const Wb=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],zb=Te("ArrowUp",Wb);const Hb=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],Vb=Te("Bot",Hb);const Qb=[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]],ao=Te("Box",Qb);const Jb=[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z",key:"ep3f8r"}],["path",{d:"M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4",key:"1p4c4q"}],["path",{d:"M17.599 6.5a3 3 0 0 0 .399-1.375",key:"tmeiqw"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M19.938 10.5a4 4 0 0 1 .585.396",key:"1qfode"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M19.967 17.484A4 4 0 0 1 18 18",key:"159ez6"}]],Pf=Te("Brain",Jb);const Gb=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],Vo=Te("Check",Gb);const Yb=[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]],Xb=Te("CodeXml",Yb);const Zb=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],Tf=Te("Copy",Zb);const $b=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],Hs=Te("ExternalLink",$b);const eg=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],tg=Te("EyeOff",eg);const rg=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],ng=Te("Eye",rg);const ig=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],Of=Te("Globe",ig);const og=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],kf=Te("Image",og);const ag=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],sg=Te("Info",ag);const lg=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]],so=Te("KeyRound",lg);const ug=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],br=Te("LoaderCircle",ug);const cg=[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]],dg=Te("LogOut",cg);const fg=[["rect",{x:"14",y:"4",width:"4",height:"16",rx:"1",key:"zuxfzm"}],["rect",{x:"6",y:"4",width:"4",height:"16",rx:"1",key:"1okwgv"}]],hg=Te("Pause",fg);const pg=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],Df=Te("Pencil",pg);const yg=[["line",{x1:"9",x2:"9",y1:"4",y2:"20",key:"ovs5a5"}],["path",{d:"M4 7c0-1.7 1.3-3 3-3h13",key:"10pag4"}],["path",{d:"M18 20c-1.7 0-3-1.3-3-3V4",key:"1gaosr"}]],bg=Te("Pi",yg);const gg=[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]],Nf=Te("Play",gg);const mg=[["path",{d:"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z",key:"goz73y"}],["path",{d:"m2 22 3-3",key:"19mgm9"}],["path",{d:"M7.5 13.5 10 11",key:"7xgeeb"}],["path",{d:"M10.5 16.5 13 14",key:"10btkg"}],["path",{d:"m18 3-4 4h6l-4 4",key:"16psg9"}]],wg=Te("PlugZap",mg);const _g=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],Ro=Te("Plus",_g);const Ag=[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]],vg=Te("RefreshCcw",Ag);const Sg=[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]],fs=Te("RotateCw",Sg);const Eg=[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]],jf=Te("Search",Eg);const xg=[["path",{d:"M20 7h-9",key:"3s1dr2"}],["path",{d:"M14 17H5",key:"gfn3mx"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]],Ig=Te("Settings2",xg);const Rg=[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]],Cg=Te("SquareTerminal",Rg);const Mg=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]],Pg=Te("Square",Mg);const Tg=[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]],Vs=Te("Trash2",Tg);const Og=[["path",{d:"M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1",key:"18etb6"}],["path",{d:"M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4",key:"xoc0q4"}]],kg=Te("Wallet",Og),Dg="data:image/png;base64,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",Ng="data:image/png;base64,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",jg="data:image/png;base64,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",Fg="data:image/png;base64,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",Lg="data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Crect width='200' height='200' fill='%23FF6A00'/%3E%3Ctext x='100' y='122' font-family='Arial,Helvetica,sans-serif' font-size='76' font-weight='700' fill='%23FFFFFF' text-anchor='middle'%3EAli%3C/text%3E%3C/svg%3E",Ug={openai:Dg,anthropic:Ng,kimi:jg,bailian:Lg,deepseek:Fg},Bg={kimi:"#000000"};function Ff(e){return Ug[e]}function lo(e){return Bg[e]}const dt=[{id:"openai",name:"OpenAI",browserMode:"browserAssistedApiKey",browserLabel:"登录",description:"OpenAI 模型与编码能力",homeUrl:"https://openai.com",apiKeyUrl:"https://platform.openai.com/api-keys",apiKeyPlaceholder:"sk-...",defaultBaseUrl:"https://api.openai.com/v1"},{id:"anthropic",name:"Anthropic",browserMode:"browserAssistedApiKey",browserLabel:"登录",description:"Claude 模型与编码能力",homeUrl:"https://www.anthropic.com",apiKeyUrl:"https://console.anthropic.com/settings/keys",apiKeyPlaceholder:"sk-ant-...",defaultBaseUrl:"https://api.anthropic.com"},{id:"kimi",name:"Kimi",browserMode:"browserAssistedApiKey",browserLabel:"登录",description:"Moonshot AI 模型服务",homeUrl:"https://www.moonshot.cn",apiKeyUrl:"https://platform.moonshot.cn/console/api-keys",apiKeyPlaceholder:"sk-...",defaultBaseUrl:"https://api.moonshot.cn/v1"},{id:"bailian",name:"百炼",browserMode:"browserAssistedApiKey",browserLabel:"登录",description:"阿里云百炼模型服务",homeUrl:"https://www.aliyun.com/product/bailian",apiKeyUrl:"https://bailian.console.aliyun.com/#/api-key",apiKeyPlaceholder:"sk-...",defaultBaseUrl:"https://dashscope.aliyuncs.com/compatible-mode/v1"},{id:"deepseek",name:"DeepSeek",browserMode:"connectUnsupported",browserLabel:"不支持登录",description:"DeepSeek 模型服务",homeUrl:"https://www.deepseek.com",apiKeyUrl:"https://platform.deepseek.com/api_keys",apiKeyPlaceholder:"sk-...",defaultBaseUrl:"https://api.deepseek.com/v1"},{id:"zhipu",name:"智谱 AI",browserMode:"browserAssistedApiKey",browserLabel:"登录",description:"智谱 AI / GLM 模型服务",homeUrl:"https://open.bigmodel.cn",apiKeyUrl:"https://open.bigmodel.cn/usercenter/apikeys",apiKeyPlaceholder:"id.secret-...",defaultBaseUrl:"https://open.bigmodel.cn/api/paas/v4"},{id:"ollama",name:"Ollama",browserMode:"connectUnsupported",browserLabel:"本地服务",description:"本地 Ollama 模型服务",homeUrl:"https://ollama.com",defaultBaseUrl:"http://localhost:11434/v1"},{id:"custom",name:"Custom",browserMode:"browserAssistedApiKey",browserLabel:"配置",description:"OpenAI / Anthropic 兼容的自定义模型服务",homeUrl:"https://undefineds.co",apiKeyPlaceholder:"sk-...",defaultBaseUrl:"https://example.com/v1"}],Qs=[{id:"keys",label:"API Keys",title:"API KEYS"}];if(dt.map(e=>e.id).join(",")!==Cd.join(","))throw new Error("AI Connection provider UI is out of sync with the client catalog");function qg(e){const t=e.solid.session.getSnapshot(),r=e.solid.pod,n=r?.status==="ready"?r:void 0,o=t.status==="authenticated"&&n!==void 0?Kg(Rp({webId:t.webId,podBaseUrl:n.current.podUrl,authenticatedFetch:e.solid.session.fetch}),e.capabilities.aiConnectionsPodStore):null;let a="keys",s="openai",u,c="",h={},g={},A,I=0,k;const S=new Set,_=()=>S.forEach(E=>E()),R={client:o,openExternal:e.navigation.openExternal,clientConfigurationBridge:e.capabilities.aiClientConfiguration,get selectedSection(){return a},get selectedProvider(){return s},get selectedCredentialId(){return u},get searchQuery(){return c},get providerStates(){return h},get providerSummaries(){return g},get providerLoadError(){return A},selectSection(E){a!==E&&(a=E,_())},selectProvider(E,v){const V=E==="custom"?v:void 0;a==="provider"&&s===E&&u===V||(a="provider",s=E,u=V,_())},selectFirstUnconfiguredProvider(){const E=dt.findIndex(G=>G.id===s),V=(E<0?dt:[...dt.slice(E+1),...dt.slice(0,E+1)]).find(G=>h[G.id]==="unconfigured"&&G.id!==s)??dt.find(G=>h[G.id]==="unconfigured")??dt[0];V&&R.selectProvider(V.id)},setSearchQuery(E){c!==E&&(c=E,_())},setProviderState(E,v){if(h[E]===v)return;I+=1,h={...h,[E]:v};const V=Jg(E,v);V&&(g={...g,[E]:V}),_()},async loadProviders(){if(o)return k||(k=(async()=>{const E=I+1;I=E,A=void 0,_();try{const v=await o.listProviders();if(E!==I)return;g=Object.fromEntries(v.map(V=>[V.id,V])),h=Object.fromEntries(dt.map(V=>[V.id,Hg(g[V.id])])),_()}catch(v){if(E!==I)return;A=Gg(v),_()}finally{k=void 0}})(),k)},subscribe(E){return S.add(E),()=>S.delete(E)}};return R}function Kg(e,t){return t?{...e,listProviders:async()=>t.listProviders(),listModels:t.listModels?async()=>t.listModels():e.listModels,createApiKeyCredential:t.createApiKeyCredential?async(r,n)=>t.createApiKeyCredential(r,n):e.createApiKeyCredential,createLocalCredential:t.createLocalCredential?async(r,n)=>n.offeringId==="official-subscription"?e.createLocalCredential(r,n):t.createLocalCredential(r,n):e.createLocalCredential,updateProviderCredential:t.updateProviderCredential?async(r,n,i)=>t.updateProviderCredential(r,n,i):e.updateProviderCredential,deleteProviderCredential:t.deleteProviderCredential?async(r,n)=>t.deleteProviderCredential(r,n):e.deleteProviderCredential,pollDevice:t.saveOAuthCredential?async(r,n)=>{const i=await e.pollDevice(r,n);if(i.status!=="completed"||!i.oauthCredential)return i;const o=await t.saveOAuthCredential(r,i.oauthCredential),{oauthCredential:a,...s}=i;return{...s,credentialId:o?.id??i.credentialId}}:e.pollDevice,refreshOAuthCredential:t.readCredentialSecret&&t.updateOAuthCredential?async(r,n,i,o)=>{const s=(await t.listProviders()).find(I=>I.id===r)?.credentials.find(I=>I.id===n);if(!s)throw new Error("oauth_credential_not_found");const u=await t.readCredentialSecret(r,n),c=typeof u.refreshToken=="string"?u.refreshToken:void 0;if(!c)throw new Error("oauth_refresh_token_required");const h=await e.refreshOAuthCredential(r,n,c,s.version);if(h.status!=="completed"||!h.oauthCredential)return h;await t.updateOAuthCredential(r,n,s.version,h.oauthCredential);const{oauthCredential:g,...A}=h;return A}:e.refreshOAuthCredential,quota:t.readCredentialSecret?async(r,n=!1,i)=>{const a=(await t.listProviders()).find(g=>g.id===r)?.credentials??[],s=i?.credentialId??i?.credentialIri,u=s?a.find(g=>g.id===s):a.find(g=>g.enabled&&(!i?.offeringId||g.offeringId===i.offeringId));if(!u)throw new Error("quota_credential_not_found");const c=await t.readCredentialSecret(r,u.id),h=Jo(c,u.authMode);if(!h)throw new Error("credential_secret_unavailable");return e.quotaFromSecret(r,{credentialId:u.id,credentialIri:u.id,authMode:u.authMode==="deviceCode"||u.authMode==="oauth"?"deviceCodeOAuth":"apiKey",offeringId:u.offeringId,baseUrl:u.baseUrl,proxyUrl:u.proxyUrl,compatibility:u.compatibility,secret:h})}:e.quota,disconnect:async(r,n)=>!n||!t.deleteProviderCredential?e.disconnect(r,n):await t.deleteProviderCredential(r,n),testProviderCredential:t.readCredentialSecret?async(r,n)=>{const o=(await t.listProviders()).find(h=>h.id===r)?.credentials.find(h=>h.id===n.credentialId);if(!o)throw new Error("test_credential_not_found");const a=await t.readCredentialSecret(r,o.id),s=Jo(a,o.authMode);if(!s)throw new Error("test_secret_missing");let u;try{u=await e.discoverModels(r,{credentialId:o.id,offeringId:o.offeringId,authMode:o.authMode==="deviceCode"||o.authMode==="oauth"?"deviceCodeOAuth":o.authMode==="local"?"local":"apiKey",secret:s,baseUrl:o.baseUrl,proxyUrl:o.proxyUrl,compatibility:o.compatibility})}catch(h){throw await t.markCredentialHealth?.(r,o.id,"invalid",o.version).catch(()=>{}),h}const c=await t.markCredentialHealth?.(r,o.id,"healthy",o.version);return{ok:!0,credentialId:o.id,...c?{credential:c}:{},modelCount:u.models.length,observedAt:u.observedAt}}:e.testProviderCredential,discoverModels:t.readCredentialSecret?async(r,n)=>{const a=(await t.listProviders()).find(h=>h.id===r)?.credentials.filter(h=>h.enabled&&(!n?.offeringId||h.offeringId===n.offeringId)&&(!n?.credentialId||h.id===n.credentialId))??[];if(a.length===0)throw new Error("models_credential_not_found");const s=await Promise.allSettled(a.map(async h=>{const g=await t.readCredentialSecret(r,h.id),A=Jo(g,h.authMode);if(!A)throw new Error("models_secret_missing");const I=await e.discoverModels(r,{credentialId:h.id,offeringId:h.offeringId,authMode:h.authMode==="deviceCode"||h.authMode==="oauth"?"deviceCodeOAuth":h.authMode==="local"?"local":"apiKey",secret:A,baseUrl:h.baseUrl,proxyUrl:h.proxyUrl,compatibility:n?.compatibility??h.compatibility});return{...I,models:I.models.map(k=>({...k,offeringId:h.offeringId,...r==="custom"?{credentialId:h.id}:{}}))}})),u=s.flatMap(h=>h.status==="fulfilled"?[h.value]:[]);if(u.length===0)throw s[0].reason;t.saveDiscoveredModels&&await Promise.all(u.map(h=>t.saveDiscoveredModels(r,h.credential,h.models)));const c=[...new Map(u.flatMap(h=>h.models).map(h=>[`${("offeringId"in h?h.offeringId:void 0)??""}\0${("resourceId"in h?h.resourceId:void 0)??h.id}`,h])).values()];return{...u[0],models:c}}:e.discoverModels,saveModelSelection:t.saveModelSelection?async(r,n,i)=>t.saveModelSelection(r,n,i):e.saveModelSelection}:e}function Js(e){return te.useSyncExternalStore(e.subscribe,()=>e.selectedSection??"provider",()=>e.selectedSection??"provider")}function Gs(e){return te.useSyncExternalStore(e.subscribe,()=>e.selectedProvider,()=>e.selectedProvider)}function Lf(e){return te.useSyncExternalStore(e.subscribe,()=>e.selectedCredentialId,()=>e.selectedCredentialId)}function Uf(e){return te.useSyncExternalStore(e.subscribe,()=>e.searchQuery,()=>e.searchQuery)}function Wg(e){return te.useSyncExternalStore(e.subscribe,()=>e.providerStates,()=>e.providerStates)}function zg(e){return te.useSyncExternalStore(e.subscribe,()=>Zl(e.providerSummaries),()=>Zl(e.providerSummaries))}function Ys(e){return te.useSyncExternalStore(e.subscribe,()=>e.providerSummaries,()=>e.providerSummaries)}function Bf(e){return te.useSyncExternalStore(e.subscribe,()=>e.providerLoadError,()=>e.providerLoadError)}function Hg(e){if(!e||e.status==="unconfigured"||e.status==="unavailable")return"unconfigured";if(e.status==="configured")return"configured";if(e.status==="attention")return"attention";const t=qf(e);return t?.authMode==="oauth"||t?.authMode==="deviceCode"?"connected":"configured"}const Xl=new WeakMap;function Zl(e){const t=Xl.get(e);if(t)return t;const r=Object.fromEntries(Object.values(e).filter(Kf).map(n=>[n.id,Vg(n)]));return Xl.set(e,r),r}function Vg(e){const t=qf(e),r=e.status==="available"?"connected":e.status==="attention"?"reauthRequired":"disconnected",n=t?.authMode;return{provider:e.id,status:r,authMode:n==="oauth"||n==="deviceCode"?"deviceCodeOAuth":n?"browserAssistedApiKey":void 0,accountLabel:t?.label,expiresAt:t?.expiresAt,reauthRequired:r==="reauthRequired"?!0:void 0,credentialIri:t?.id,version:t?.version,connect:{modes:Qg(e),configured:e.status!=="unavailable"}}}function Qg(e){const t=[...e.offerings.flatMap(r=>r.authModes??[]),...e.credentials.map(r=>r.authMode)].map(r=>r==="oauth"||r==="deviceCode"?"deviceCodeOAuth":r==="apiKey"||r==="local"?"browserAssistedApiKey":void 0).filter(Kf);return t.length>0?[...new Set(t)]:["browserAssistedApiKey"]}function qf(e){return e.credentials.find(t=>t.enabled)??e.credentials[0]}function Jg(e,t){if(t==="configured")return{id:e,name:Qo(e),offerings:[],credentials:[$l(e,"apiKey")],selectedModels:[],status:"available"};if(t==="connected")return{id:e,name:Qo(e),offerings:[],credentials:[$l(e,"deviceCode")],selectedModels:[],status:"available"};if(t!=="attention"&&t!=="loading")return{id:e,name:Qo(e),offerings:[],credentials:[],selectedModels:[],status:"unconfigured"}}function $l(e,t){return{id:`${e}:current`,offeringId:t==="deviceCode"||t==="oauth"?"official-subscription":"api-platform",authMode:t,enabled:!0,priority:0,health:"healthy",version:0}}function Qo(e){return dt.find(t=>t.id===e)?.name??e}function Jo(e,t){if(t==="deviceCode"||t==="oauth"){const n=typeof e.accessToken=="string"&&e.accessToken.trim()?e.accessToken:void 0;return n?{type:"oauth",accessToken:n}:void 0}if(t==="local")return{type:"local"};const r=typeof e.apiKey=="string"&&e.apiKey.trim()?e.apiKey:void 0;return r?{type:"apiKey",apiKey:r}:void 0}function Kf(e){return e!==void 0}function Gg(e){return Md(e)}function Yg({controller:e}){const t=te.useContext(Pp),r=Js(e),n=Gs(e),i=Lf(e),o=Uf(e).trim().toLocaleLowerCase(),a=Wg(e),s=Ys(e),u=Bf(e),c=dt.reduce((S,_)=>{if(_.id!=="custom")return[...S,{..._}];const R=s.custom?.credentials??[];return[...S,...R.length>0?R.map(E=>({..._,name:E.label||_.name,credentialId:E.id})):[{..._}]]},[]),h=o?c.filter(S=>Go(S,s).toLocaleLowerCase().includes(o)):c,g=[...Qs.map(S=>({kind:"section",id:S.id,label:S.label})),...h.map(S=>({kind:"provider",provider:S}))],A=te.useRef([]),I=g.findIndex(S=>S.kind==="section"?r===S.id:r==="provider"&&S.provider.id===n&&S.provider.credentialId===i),k=S=>{S.kind==="section"?e.selectSection(S.id):e.selectProvider(S.provider.id,S.provider.credentialId),t?.mode==="stack"&&t.openMain()};return m.jsxs("div",{role:"listbox","aria-label":"AI 服务","aria-orientation":"vertical",className:"py-2",children:[m.jsx("section",{className:"mb-3","aria-label":"API Keys",children:g.filter(S=>S.kind==="section").map(S=>{const _=g.indexOf(S);return m.jsxs(eu,{index:_,selected:r===S.id,tabbable:I===_||I<0&&_===0,label:S.label,optionRefs:A,onActivate:()=>k(S),onMove:R=>tu(g,R,e,A),children:[m.jsx(Xg,{section:S.id}),m.jsx("span",{className:Je("min-w-0 flex-1 truncate text-sm font-medium",r===S.id?"text-foreground":"text-foreground/80"),children:S.label})]},S.id)})}),m.jsxs("section",{children:[m.jsx("h2",{className:"px-5 py-1 text-[11px] font-semibold uppercase tracking-wider text-muted-foreground",children:"Provider"}),h.map(S=>{const _=g.findIndex(v=>v.kind==="provider"&&v.provider.id===S.id&&v.provider.credentialId===S.credentialId),R=r==="provider"&&n===S.id&&S.credentialId===i,E=a[S.id]??"loading";return m.jsxs(eu,{index:_,selected:R,tabbable:R||I<0&&_===0,label:Go(S,s),describedBy:`ai-connections-provider-${S.id}-${S.credentialId??"default"}-status`,optionRefs:A,onActivate:()=>k({kind:"provider",provider:S}),onMove:v=>tu(g,v,e,A),children:[m.jsxs(Sd,{className:"h-9 w-9 shrink-0 rounded-md border border-border/20",style:lo(S.id)?{backgroundColor:lo(S.id)}:void 0,children:[m.jsx(Ed,{src:Ff(S.id),className:"object-cover"}),m.jsx(xd,{className:"rounded-md bg-muted text-[10px] font-bold uppercase text-muted-foreground",children:$g(S.id)})]}),m.jsx("span",{className:Je("min-w-0 flex-1 truncate text-sm font-medium",R?"text-foreground":"text-foreground/80"),children:Go(S,s)}),m.jsx(Zg,{state:E,statusId:`ai-connections-provider-${S.id}-${S.credentialId??"default"}-status`})]},`${S.id}:${S.credentialId??"default"}`)}),h.length===0?m.jsx("p",{className:"p-8 text-center text-xs text-muted-foreground",children:"无结果"}):null]}),u?m.jsxs("p",{className:"px-4 py-2 text-xs text-destructive",children:["Provider 状态读取失败:",u]}):null]})}function eu({index:e,selected:t,tabbable:r,label:n,describedBy:i,statusId:o,optionRefs:a,onActivate:s,onMove:u,children:c}){const h=g=>{if(g.key==="ArrowDown")u(e+1);else if(g.key==="ArrowUp")u(e-1);else if(g.key==="Home")u(0);else if(g.key==="End")u(Number.POSITIVE_INFINITY);else if(g.key==="Enter"||g.key===" "){g.preventDefault(),s();return}else return;g.preventDefault()};return m.jsx("button",{ref:g=>{a.current[e]=g},type:"button",role:"option","aria-selected":t,"aria-label":n,"aria-describedby":i??o,tabIndex:r?0:-1,onClick:s,onKeyDown:h,className:Je("group flex w-full items-center gap-3 border-l-[3px] border-transparent px-4 py-3 text-left transition-colors",t?"border-l-primary bg-accent/80":"hover:bg-muted/40"),children:c})}function tu(e,t,r,n){const i=Math.min(Math.max(t,0),e.length-1),o=e[i];o&&(o.kind==="section"?r.selectSection(o.id):r.selectProvider(o.provider.id,o.provider.credentialId),n.current[i]?.focus())}function Xg({section:e}){return m.jsx("span",{className:"flex h-9 w-9 shrink-0 items-center justify-center rounded-md border border-border/20 bg-muted text-muted-foreground",children:m.jsx(so,{className:"h-4 w-4","aria-hidden":"true"})})}function Zg({state:e,statusId:t}){const r=e==="configured"||e==="connected";return m.jsxs("span",{id:t,role:"status","aria-live":"polite",className:"flex shrink-0 items-center gap-1.5",children:[r?m.jsx("span",{className:"h-2 w-2 rounded-full bg-primary","aria-hidden":"true"}):null,m.jsx("span",{className:"text-[11px] font-normal text-muted-foreground",children:em(e)})]})}function $g(e){switch(e){case"openai":return"OA";case"anthropic":return"A";case"kimi":return"K";case"bailian":return"百";case"deepseek":return"DS";case"zhipu":return"智";case"ollama":return"O";case"custom":return"C"}}function Go(e,t){return e.name||t[e.id]?.name||e.id}function em(e){switch(e){case"unconfigured":return"未设置";case"configured":return"已配置";case"connected":return"已连接";case"attention":return"需处理";default:return"读取中"}}const tm={"official-subscription":"账号订阅","subscription-key":"Token 套餐","api-platform":"API 平台","pay-as-you-go":"按量付费","token-plan":"Token 套餐","token-plan-team":"Token 套餐(团队版)","coding-plan":"Coding 套餐",local:"本地服务","openai-compatible":"OpenAI 兼容","anthropic-compatible":"Anthropic 兼容"},rm=/[一-鿿]/u;function uo(e){const t=e.label?.trim();return t&&rm.test(t)?t:tm[e.id]??t??nm(e)}function nm(e){return e.kind==="oauth-subscription"?"账号订阅":e.kind==="api-platform"?"API 平台":e.kind==="token-plan"?"Token 套餐":e.label?e.label:e.authModes?.some(t=>t==="oauth"||t==="deviceCode")?"账号登录":e.authModes?.some(t=>t==="apiKey")?"API Key":e.id}function im({providerName:e,offeringName:t,quota:r,busy:n,disabled:i=!1,credentialLabel:o,error:a,onRefresh:s}){return m.jsxs("div",{className:"space-y-3 border-t border-border/40 pt-3",children:[m.jsxs("div",{className:"flex items-center justify-between gap-2",children:[m.jsxs("div",{className:"flex items-center gap-2",children:[m.jsx(kg,{className:"h-4 w-4 text-primary"}),m.jsx("div",{className:"text-sm font-medium text-foreground/90",children:"剩余额度"})]}),m.jsxs(Me,{variant:"ghost",size:"sm","aria-label":`刷新 ${e} ${t}额度`,disabled:n||i,onClick:s,children:[m.jsx(vg,{className:"mr-2 h-3.5 w-3.5"}),"刷新"]})]}),o?m.jsxs("p",{className:"text-xs text-muted-foreground",children:["凭证:",o]}):null,a?m.jsx("p",{className:"text-sm text-destructive",children:a}):r?r.status==="unsupported"?m.jsxs(m.Fragment,{children:[m.jsx("p",{className:"text-sm",children:"官方额度接口不支持"}),m.jsxs("p",{className:"text-xs text-muted-foreground",children:["来源:",r.source]})]}):r.status==="error"?m.jsx("p",{className:"text-sm text-destructive",children:"额度查询失败"}):m.jsxs("div",{className:"space-y-3 text-sm",children:[typeof r.balance=="number"?m.jsxs("div",{children:["余额:",r.balance]}):null,r.windows.map((u,c)=>m.jsxs("div",{className:"space-y-1.5",children:[m.jsxs("div",{className:"flex items-center justify-between gap-3",children:[m.jsx("span",{className:"font-medium text-foreground",children:ru(u.name)}),m.jsx("span",{className:"text-muted-foreground",children:om(u)})]}),Gn(u)!==void 0?m.jsx("div",{"aria-label":`${ru(u.name)}剩余 ${String(Gn(u))}%`,className:"h-1.5 overflow-hidden rounded-full bg-muted",role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Gn(u),children:m.jsx("div",{className:"h-full rounded-full bg-primary",style:{width:`${String(Gn(u))}%`}})}):null,u.resetsAt?m.jsxs("p",{className:"text-xs text-muted-foreground",children:["重置:",nu(u.resetsAt)]}):null]},`${String(u.name)}-${c}`)),m.jsxs("p",{className:"text-xs text-muted-foreground",children:["更新:",nu(r.observedAt)]}),m.jsxs("p",{className:"text-xs text-muted-foreground",children:["来源:",r.source,r.stale?" · 数据可能已过期":""]})]}):m.jsx("p",{className:"text-xs text-muted-foreground",children:o?"尚未检查":"连接后可查询"})]})}function ru(e){switch(e){case"five-hour":return"5 小时限制";case"weekly":return"周限制";case"monthly":return"月限制";case"weekly-opus":return"Opus 周限制";case"weekly-sonnet":return"Sonnet 周限制";case"available_balance":return"可用余额";case"voucher_balance":return"赠送余额";case"cash_balance":return"现金余额";default:return typeof e=="string"&&e?e:"额度"}}function Gn(e){if(!(typeof e.remaining!="number"||typeof e.limit!="number"||e.limit<=0))return Math.max(0,Math.min(100,Math.round(e.remaining/e.limit*1e4)/100))}function om(e){const t=Gn(e);if(t!==void 0)return`剩余 ${String(t)}%`;if(typeof e.remaining=="number"){const r=typeof e.currency=="string"?` ${e.currency}`:"";return`剩余 ${String(e.remaining)}${r}`}return"官方数据可用"}function nu(e){const t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()}function am({definition:e,product:t,status:r,accountLabel:n,attempt:i,attemptOfferingId:o,apiKey:a,baseUrl:s="",busy:u,disabled:c=!1,error:h,suppressError:g=!1,quotas:A={},onApiKeyChange:I,onBaseUrlChange:k,onBeginApiKey:S,onBeginOffering:_,onBeginBrowser:R,onSaveApiKey:E,onDisconnect:v,onCreateApiKeyCredential:V,onCreateLocalCredential:G,onUpdateCredential:ue,onDeleteCredential:ce,onTestCredential:z,onReorderCredentials:se,onRefreshQuota:C,onDismissError:M}){const K=[{id:"api-platform",label:"API Key",kind:"api-platform",authModes:["apiKey"]}],x=t?.credentials??[],$=t?.offerings.length?t.offerings:K;return m.jsx(Xd,{children:m.jsxs("section",{className:"space-y-4","aria-label":"当前连接",children:[m.jsxs("div",{className:"flex items-center gap-2 border-b border-border/40 pb-2",children:[m.jsx(Ig,{className:"h-4 w-4 text-primary"}),m.jsx("h3",{className:"text-sm font-medium text-foreground/90",children:"当前连接"})]}),m.jsxs("div",{className:"space-y-3",children:[$.map(J=>{const re=gm(J,e),de=o===J.id?i:void 0,F=x.filter(ee=>ee.offeringId===J.id).sort((ee,ie)=>ee.priority-ie.priority),ne=h?.offeringId===J.id?h.message:void 0,y=F.find(ee=>ee.enabled)??F[0],B=A[J.id],Z=y&&B?.credentialId===y.id?B:void 0,D=m.jsx(im,{providerName:e.name,offeringName:uo(J),quota:Z?.quota,busy:Z?.busy??!1,disabled:c||!!t&&!y,credentialLabel:y?zr(y):void 0,error:Z?.error,onRefresh:()=>C?.(J,y)});if(J.lifecycle==="unavailable")return m.jsx(Or,{offering:J,children:m.jsx("p",{className:"text-sm text-muted-foreground",children:J.kind==="oauth-subscription"?"暂不可用:账号订阅需在 Xpod 桌面版中导入本机客户端(如 Codex CLI)的登录态,浏览器中无法完成。":"暂不可用:该 Offering 尚未提供可用的连接流程。"})},J.id);if(ne&&de?.status==="unsupported"&&re==="deviceCodeOAuth")return m.jsxs(Or,{offering:J,children:[m.jsxs("div",{className:"rounded-md border border-border/60 bg-muted/30 px-3 py-3",children:[m.jsx("p",{className:"text-sm font-medium text-foreground",children:"当前部署未启用账号授权"}),m.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"仍可使用其他已提供的接入方式。"})]}),D]},J.id);if(ne&&re==="deviceCodeOAuth")return m.jsxs(Or,{offering:J,children:[m.jsx(Ap,{title:"登录未完成",description:ne,primaryLabel:"重试登录",onPrimary:()=>_?.(J,re),secondaryLabel:"关闭",onSecondary:M??(()=>{})}),D]},J.id);if(mm(de)&&re==="deviceCodeOAuth")return m.jsxs(Or,{offering:J,children:[m.jsx(vp,{title:"正在连接",detail:de?.userCode?`验证码:${de.userCode}`:"请在打开的页面完成授权。",providerLabel:uo(J),providerHost:e.name}),D]},J.id);if(re==="deviceCodeOAuth")return m.jsxs(Or,{offering:J,children:[m.jsx("div",{className:"space-y-2",children:F.map(ee=>m.jsx(hs,{credential:ee,label:ee.label?ps(ee.label):zr(ee),busy:u,disabled:c,onToggle:ue,onTest:z,onDelete:()=>v(ee),deleteAriaLabel:`${ee.label?ps(ee.label):zr(ee)} 移除`},ee.id))}),m.jsx("div",{className:"flex flex-wrap gap-2",children:m.jsxs(Me,{size:"sm",disabled:u||c,onClick:()=>_?.(J,re),children:[u?m.jsx(br,{className:"mr-2 h-4 w-4 animate-spin"}):m.jsx(Hs,{className:"mr-2 h-4 w-4"}),F.length?"添加账号":"登录"]})}),D]},J.id);if(J.authModes?.includes("local")){const ee=e.id==="openai"&&J.id==="official-subscription";return m.jsx(Or,{offering:J,children:m.jsxs("div",{className:"space-y-2",children:[F.map(ie=>m.jsx(hs,{credential:ie,label:ie.label??"本地 Ollama",busy:u,disabled:c,onToggle:ue,onTest:z,onDelete:()=>ce?.(ie),deleteAriaLabel:`删除 ${ie.label??"本地 Ollama"}`},ie.id)),F.length===0?m.jsxs("div",{className:"space-y-2",children:[ee?m.jsx("p",{className:"text-xs text-muted-foreground",children:"从当前设备已有的 OpenAI 登录导入,不会发起新的浏览器授权。"}):null,m.jsxs(Me,{variant:"outline",size:"sm",disabled:u||c||!G,onClick:()=>{G?.(J)},children:[u?m.jsx(br,{className:"mr-2 h-4 w-4 animate-spin"}):m.jsx(Ro,{className:"mr-2 h-4 w-4"}),hm(J)]})]}):null]})},J.id)}return m.jsxs(Or,{offering:J,children:[m.jsx(pm,{definition:e,offering:J,status:r,accountLabel:n,credentials:F,attempt:i,apiKey:a,baseUrl:s,busy:u,disabled:c,error:ne,onApiKeyChange:I,onBaseUrlChange:k,onBeginApiKey:S,onBeginBrowser:R,onSaveApiKey:E,onDisconnect:v,onCreateApiKeyCredential:V?ee=>V(J,ee):void 0,onUpdateCredential:ue,onDeleteCredential:ce,onTestCredential:z,onMoveCredential:(ee,ie)=>se?.(J,F,ee,ie)}),D]},J.id)}),h&&!h.offeringId&&!g?m.jsx("p",{className:"rounded-md border border-destructive/30 px-3 py-2 text-sm text-destructive",children:h.message}):null]})]})})}function Or({offering:e,children:t}){const r=e.endpoints??[],n=uo(e),i=e.kind?cm(e.kind):void 0,o=i&&i!==n?[i]:[];return m.jsxs("section",{className:"space-y-3 rounded-lg border border-border/50 bg-card p-3","aria-labelledby":`offering-${e.id}`,children:[m.jsxs("div",{className:"flex items-start justify-between gap-3",children:[m.jsxs("div",{children:[m.jsx("h4",{id:`offering-${e.id}`,className:"text-sm font-medium text-foreground",children:n}),o.length?m.jsx("div",{className:"mt-1 flex items-center gap-2 text-xs text-muted-foreground",children:o.map(a=>m.jsx("span",{children:a},a))}):null]}),m.jsxs("div",{className:"flex flex-wrap items-center justify-end gap-x-3 gap-y-1 text-xs",children:[m.jsx("span",{className:"text-muted-foreground",children:dm(e)}),e.consoleUrl?m.jsx(Ui,{href:e.consoleUrl,label:"控制台"}):null,e.subscriptionUrl?m.jsx(Ui,{href:e.subscriptionUrl,label:"订阅与账单"}):null,e.quota?.url?m.jsx(Ui,{href:e.quota.url,label:"额度与用量"}):null,e.usagePolicyUrl?m.jsx(Ui,{href:e.usagePolicyUrl,label:"使用政策"}):null]})]}),r.length?m.jsx("dl",{className:"space-y-1 text-[11px] text-muted-foreground",children:r.map(a=>m.jsxs("div",{className:"flex min-w-0 items-baseline gap-2",children:[m.jsx("dt",{className:"shrink-0 text-foreground/70",children:um(a.protocol)}),m.jsx("dd",{className:"min-w-0 truncate font-mono",title:a.baseUrl,children:lm(a.baseUrl)})]},`${a.protocol}:${a.baseUrl}`))}):null,t]})}function Ui({href:e,label:t}){return m.jsx("a",{href:e,target:"_blank",rel:"noreferrer",className:"text-primary hover:underline",children:t})}function sm(e){const t=e.modelDiscovery?.endpointProtocol;return e.endpoints?.find(r=>r.protocol===t)?.baseUrl??e.endpoints?.[0]?.baseUrl}function lm(e){try{const t=new URL(e);return`${t.host}${t.pathname.replace(/\/$/u,"")}`}catch{return e}}function um(e){return e==="responses"?"Responses API":e==="chatCompletions"?"Chat API":e==="anthropic"?"Anthropic API":e}function cm(e){return e==="oauth-subscription"?"账号订阅":e==="api-platform"?"API 平台":e==="token-plan"?"Token 套餐":e}function dm(e){const t=(e.authModes??[]).map(r=>r==="local"?fm(e):r==="oauth"||r==="deviceCode"?"账号授权":"API Key");return[...new Set(t)].join(" / ")}function fm(e){return e.id==="official-subscription"&&e.productLabel==="OpenAI"?"本地会话":"本地服务"}function hm(e){return e.id==="official-subscription"&&e.productLabel==="OpenAI"?"导入本机 OpenAI 登录":"连接本地 Ollama"}function pm({definition:e,offering:t,status:r,accountLabel:n,credentials:i,attempt:o,apiKey:a,baseUrl:s,busy:u,disabled:c,error:h,onApiKeyChange:g,onBaseUrlChange:A,onBeginApiKey:I,onBeginBrowser:k,onSaveApiKey:S,onDisconnect:_,onCreateApiKeyCredential:R,onUpdateCredential:E,onDeleteCredential:v,onTestCredential:V,onMoveCredential:G}){const ue=o?.mode==="browserAssistedApiKey"&&o.status==="pending",ce=r==="configured",z=r==="connected",se=!!R,[C,M]=te.useState(!1),[K,x]=te.useState(),[$,J]=te.useState(),[re,de]=te.useState(""),[F,ne]=te.useState(""),[y,B]=te.useState(""),[Z,D]=te.useState(""),[ee,ie]=te.useState(),[fe,ae]=te.useState(!1),P=()=>{x("create"),J(void 0),de(""),ne(""),B(""),D(""),ie(void 0),ae(!1)},N=U=>{x("edit"),J(U),de(U.label??""),ne(""),B(U.baseUrl??""),D(U.proxyUrl??""),ie(void 0),ae(!1)},Q=()=>{x(void 0),J(void 0),de(""),ne(""),B(""),D(""),ie(void 0),ae(!1)},le=async()=>{let U;try{U=Cp(Z)}catch{ie("Proxy URL 格式无效(支持 http、https)");return}if(ie(void 0),K==="create"){const l=F.trim();if(!l||!R)return;try{await R({apiKey:l,label:re.trim()||void 0,baseUrl:y.trim()||void 0,proxyUrl:U,priority:wm(i)}),Q()}catch(d){ie(d instanceof Error?d.message:"保存失败,请重试")}return}if(K==="edit"&&$&&E){const l=Z.trim()!==($.proxyUrl??"").trim();try{await E($,{label:re.trim()||void 0,baseUrl:y.trim()||void 0,...l?{proxyUrl:U}:{}}),Q()}catch(d){ie(d instanceof Error?d.message:"保存失败,请重试")}}};return m.jsxs("div",{className:"space-y-4",children:[m.jsx("div",{children:i.length>0?m.jsx("div",{className:"space-y-2",children:i.map((U,l)=>m.jsx(hs,{credential:U,label:zr(U),busy:u,disabled:c,onToggle:E,onTest:V,onEdit:()=>N(U),onDelete:()=>v?.(U),deleteAriaLabel:`删除 ${zr(U)}`,beforeActions:m.jsxs(m.Fragment,{children:[m.jsx(Me,{variant:"ghost",size:"icon",className:"h-7 w-7","aria-label":`上移 ${zr(U)}`,disabled:l===0||c||u,onClick:()=>G?.(l,l-1),children:m.jsx(zb,{"aria-hidden":"true",className:"h-3.5 w-3.5"})}),m.jsx(Me,{variant:"ghost",size:"icon",className:"h-7 w-7","aria-label":`下移 ${zr(U)}`,disabled:l===i.length-1||c||u,onClick:()=>G?.(l,l+1),children:m.jsx(Kb,{"aria-hidden":"true",className:"h-3.5 w-3.5"})})]})},U.id))}):n?m.jsx("p",{className:"text-xs text-muted-foreground",children:ps(n)}):m.jsx("p",{className:"text-xs text-muted-foreground",children:"Provider 凭证保存在当前 Pod,由 Pod 权限保护。"})}),o?.userCode?m.jsxs("div",{className:"border-l-2 border-primary bg-muted/30 px-3 py-2 text-sm",children:["验证码:",m.jsx("strong",{className:"font-mono",children:o.userCode})]}):null,m.jsxs("div",{className:"flex flex-wrap gap-2",children:[R?m.jsxs(Me,{variant:"outline",size:"sm",disabled:u||c,onClick:P,children:[m.jsx(Ro,{className:"mr-2 h-4 w-4"}),"添加 API Key"]}):null,se?null:z?m.jsxs(m.Fragment,{children:[m.jsxs(Me,{variant:"outline",size:"sm",disabled:u||c,onClick:k,children:[u?m.jsx(br,{className:"mr-2 h-4 w-4 animate-spin"}):m.jsx(fs,{className:"mr-2 h-4 w-4"}),"重新连接"]}),m.jsxs(Me,{variant:"ghost",size:"sm",disabled:u||c,onClick:_,children:[m.jsx(dg,{className:"mr-2 h-4 w-4"}),"断开连接"]})]}):ce?m.jsxs(m.Fragment,{children:[m.jsxs(Me,{variant:"outline",size:"sm","aria-label":"更新 API Key",disabled:u||c,onClick:I,children:[m.jsx(so,{className:"mr-2 h-4 w-4"}),"更新 API Key"]}),m.jsx(Me,{variant:"ghost",size:"sm",disabled:u||c,onClick:_,children:"移除配置"})]}):m.jsxs(m.Fragment,{children:[m.jsxs(Me,{variant:"outline",size:"sm",disabled:u||c||e.browserMode==="connectUnsupported",onClick:k,children:[u?m.jsx(br,{className:"mr-2 h-4 w-4 animate-spin"}):m.jsx(Hs,{className:"mr-2 h-4 w-4"}),e.browserLabel]}),m.jsxs(Me,{variant:"outline",size:"sm","aria-label":`${e.name} API Key`,disabled:u||c,onClick:I,children:[m.jsx(so,{className:"mr-2 h-4 w-4"}),"配置 API Key"]})]})]}),K?m.jsxs("div",{className:"space-y-2 rounded-lg border border-border/50 bg-muted/10 p-3",children:[K==="edit"?m.jsx(ft,{autoComplete:"off","aria-label":`${e.name} API Key 标签`,placeholder:"名称,例如 Work key",value:re,onChange:U=>de(U.target.value)}):null,K==="create"?m.jsx(ft,{type:C?"text":"password",autoComplete:"new-password","data-lpignore":"true","data-1p-ignore":!0,"aria-label":`${e.name} API Key 输入`,placeholder:e.apiKeyPlaceholder||"从官方控制台复制 API Key",value:F,onChange:U=>ne(U.target.value),className:"font-mono"}):null,K==="edit"||fe?m.jsxs(m.Fragment,{children:[m.jsx(ft,{autoComplete:"off","data-lpignore":"true","data-1p-ignore":!0,"aria-label":`${e.name} Base URL 输入`,placeholder:sm(t)||e.defaultBaseUrl||"默认服务地址",value:y,onChange:U=>B(U.target.value),className:"font-mono text-xs"}),m.jsx(ft,{autoComplete:"off","data-lpignore":"true","data-1p-ignore":!0,"aria-label":`${e.name} Proxy URL 输入`,placeholder:"http://127.0.0.1:7890",value:Z,onChange:U=>D(U.target.value),className:"font-mono text-xs"})]}):null,ee?m.jsx("p",{className:"text-xs text-destructive",children:ee}):null,m.jsxs("div",{className:"flex flex-wrap gap-2",children:[m.jsx(Me,{size:"sm","aria-label":K==="create"?`保存 ${e.name} API Key`:"保存凭证",disabled:u||c||K==="create"&&!F.trim(),onClick:le,children:K==="create"?"保存 API Key":"保存凭证"}),m.jsx(Me,{variant:"ghost",size:"sm",onClick:Q,children:"取消"}),K==="create"?m.jsx(Me,{variant:"ghost",size:"sm",onClick:()=>ae(U=>!U),children:fe?"收起高级设置":"高级设置"}):null]})]}):null,ue?m.jsxs("div",{className:"space-y-2",children:[m.jsxs("div",{className:"flex items-center justify-between",children:[m.jsx("span",{className:"text-sm font-medium",children:"API Key"}),e.apiKeyUrl?m.jsx("a",{href:e.apiKeyUrl,target:"_blank",rel:"noreferrer",className:"text-xs text-primary hover:underline",children:"获取 API Key"}):null]}),m.jsxs("div",{className:"group relative",children:[m.jsx(ft,{type:C?"text":"password",autoComplete:"new-password","data-lpignore":"true","data-1p-ignore":!0,"aria-label":`${e.name} API Key 输入`,placeholder:e.apiKeyPlaceholder||"从官方控制台复制 API Key",value:a,onChange:U=>g(U.target.value),className:"border-border/60 bg-muted/20 pr-10 font-mono transition-colors focus:border-primary/50 focus:bg-background"}),m.jsx("div",{className:"absolute bottom-1 right-1 top-1 flex items-center",children:m.jsx(Me,{variant:"ghost",size:"icon",className:"h-full w-8 rounded hover:bg-muted",onClick:()=>M(U=>!U),"aria-label":C?"隐藏 API Key":"显示 API Key",children:C?m.jsx(tg,{className:"h-4 w-4 text-muted-foreground"}):m.jsx(ng,{className:"h-4 w-4 text-muted-foreground"})})})]}),A?m.jsxs("div",{className:"space-y-1.5",children:[m.jsx("span",{className:"text-xs font-medium text-muted-foreground",children:"Base URL(选填)"}),m.jsx(ft,{autoComplete:"off","data-lpignore":"true","data-1p-ignore":!0,"aria-label":`${e.name} Base URL 输入`,placeholder:e.defaultBaseUrl||"默认服务地址",value:s,onChange:U=>A(U.target.value),className:"border-border/60 bg-muted/20 font-mono text-xs transition-colors focus:border-primary/50 focus:bg-background"}),m.jsxs("p",{className:"break-all font-mono text-[11px] text-muted-foreground opacity-80",children:[m.jsx("span",{className:"mr-1 select-none opacity-50",children:"预览:"}),(s.trim()||e.defaultBaseUrl||"").replace(/\/+$/,""),"/chat/completions"]})]}):null,m.jsx(Me,{size:"sm","aria-label":`保存 ${e.name} API Key`,disabled:!a.trim()||u||c,onClick:S,children:"保存 API Key"})]}):null,h?m.jsx("p",{className:"text-sm text-destructive",children:h}):null]})}function hs({credential:e,label:t,busy:r,disabled:n,beforeActions:i,onToggle:o,onTest:a,onEdit:s,onDelete:u,deleteAriaLabel:c}){const h=n||r,g=bm(e.health),A=`${e.enabled?"已启用":"已停用"} · ${ym(e.health)}`;return m.jsxs("div",{"data-credential-state":e.enabled?"enabled":"disabled",className:Je("flex items-center gap-3 rounded-lg border p-3 transition-colors",e.enabled?g.row:"border-border/50 bg-muted/40 opacity-70"),children:[m.jsxs(vo,{children:[m.jsx(So,{asChild:!0,children:m.jsx("span",{"aria-label":A,className:Je("h-2 w-2 shrink-0 rounded-full",e.enabled?g.dot:"bg-muted-foreground/40")})}),m.jsx(bi,{className:"text-xs",children:A})]}),m.jsxs("div",{className:"min-w-0 flex-1",children:[m.jsx("p",{className:"truncate text-sm font-medium text-foreground",children:t}),e.maskedHint?m.jsx("p",{className:"mt-1 truncate font-mono text-xs text-muted-foreground",children:e.maskedHint}):null]}),m.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[i,a?m.jsx(Bi,{label:`测试连接 ${t}`,disabled:h,onClick:()=>a(e),children:m.jsx(wg,{"aria-hidden":"true",className:"h-3.5 w-3.5"})}):null,s?m.jsx(Bi,{label:`编辑 ${t}`,disabled:h,onClick:s,children:m.jsx(Df,{"aria-hidden":"true",className:"h-3.5 w-3.5"})}):null,o?m.jsx(Bi,{label:`${e.enabled?"停用":"启用"} ${t}`,disabled:h,onClick:()=>o(e,{enabled:!e.enabled}),children:e.enabled?m.jsx(hg,{"aria-hidden":"true",className:"h-3.5 w-3.5"}):m.jsx(Nf,{"aria-hidden":"true",className:"h-3.5 w-3.5"})}):null,u?m.jsx(Bi,{label:c??`删除 ${t}`,disabled:h,onClick:u,children:m.jsx(Vs,{"aria-hidden":"true",className:"h-3.5 w-3.5"})}):null]})]})}function Bi({label:e,disabled:t,onClick:r,children:n}){return m.jsxs(vo,{children:[m.jsx(So,{asChild:!0,children:m.jsx(Me,{variant:"ghost",size:"icon",className:"h-7 w-7","aria-label":e,disabled:t,onClick:r,children:n})}),m.jsx(bi,{className:"text-xs",children:e})]})}function ym(e){return e==="healthy"?"有效":e==="unknown"?"未验证":e==="expired"?"已过期":"错误"}function bm(e){return e==="healthy"?{row:"border-emerald-500/40 bg-emerald-500/5",dot:"bg-emerald-500"}:e==="unknown"?{row:"border-border/50 bg-background",dot:"bg-muted-foreground/50"}:{row:"border-destructive/40 bg-destructive/5",dot:"bg-destructive"}}function gm(e,t){const r=e.authModes??[];return r.some(n=>n==="oauth"||n==="deviceCode")?"deviceCodeOAuth":r.some(n=>n==="apiKey"||n==="local")||t.browserMode==="connectUnsupported"?"browserAssistedApiKey":t.browserMode}function mm(e){return e?.status==="pending"||e?.status==="authorization_pending"||e?.status==="slow_down"}function wm(e){return e.length===0?10:Math.max(...e.map(t=>t.priority))+10}function zr(e){return e.label?.trim()?e.label:e.maskedHint?`API Key · ${e.maskedHint}`:e.authMode==="oauth"||e.authMode==="deviceCode"?"已授权账号":"API Key"}function ps(e){const t=e.indexOf("@");if(t>0){const r=e.slice(0,t);return`${r.length>1?`${r[0]}***${r[r.length-1]}`:`${r[0]}***`}${e.slice(t)}`}return e.length<=2?`${e[0]??""}***`:`${e[0]}***${e[e.length-1]}`}function _m({definition:e,product:t,status:r,accountLabel:n,attempt:i,attemptOfferingId:o,apiKey:a,baseUrl:s="",busy:u,disabled:c=!1,error:h,quotas:g,models:A,verifyPending:I=!1,onApiKeyChange:k,onBaseUrlChange:S,onBeginApiKey:_,onBeginOffering:R,onBeginBrowser:E,onSaveApiKey:v,onDisconnect:V,onCreateApiKeyCredential:G,onCreateLocalCredential:ue,onUpdateCredential:ce,onDeleteCredential:z,onTestCredential:se,onReorderCredentials:C,onRefreshQuota:M,onVerify:K,onAddModel:x,onEditModel:$,onDeleteModel:J,selectedModelIds:re,onModelSelectionChange:de,onDismissError:F}){const ne=r==="configured",y=r==="connected",B=A.length===0&&h?.message&&!h.offeringId?h.message:void 0,[Z,D]=te.useState(""),[ee,ie]=te.useState(),[fe,ae]=te.useState(re??[]),P=re??fe,N=te.useMemo(()=>new Map(t?.offerings.map(b=>[b.id,{id:b.id,label:uo(b)}])??[]),[t?.offerings]),Q=te.useMemo(()=>{const b=Z.trim().toLocaleLowerCase();return b?A.filter(T=>Sm(T,N).includes(b)):A},[A,Z,N]),le=Q.filter(b=>b.availability!=="unavailable"),U=le.filter(b=>P.includes(Yo(b))).length,l=le.length>0&&U===le.length,d=U>0&&!l,w=A.filter(b=>b.availability==="unavailable").length,j=async b=>{try{await navigator.clipboard.writeText(b),ie(b),setTimeout(()=>ie(T=>T===b?void 0:T),1500)}catch{ie(void 0)}},q=b=>{const T=new Set(P);T.has(b)?T.delete(b):T.add(b);const H=[...T];re===void 0&&ae(H),de?.(e.id,H)},W=()=>{const b=new Set(P);for(const H of le){const L=Yo(H);l?b.delete(L):b.add(L)}const T=[...b];re===void 0&&ae(T),de?.(e.id,T)};return m.jsx(Xd,{children:m.jsxs("div",{className:"space-y-8",children:[m.jsxs("header",{className:"flex items-start justify-between gap-4",children:[m.jsxs("div",{className:"flex items-center gap-3",children:[m.jsxs(Sd,{className:"h-9 w-9 shrink-0 rounded-lg border border-border/50 bg-muted/50 shadow-sm",style:lo(e.id)?{backgroundColor:lo(e.id)}:void 0,children:[m.jsx(Ed,{src:Ff(e.id),className:"object-cover"}),m.jsx(xd,{className:"rounded-lg bg-transparent text-sm font-bold uppercase text-muted-foreground",children:vm(e.id)})]}),m.jsxs("div",{className:"flex flex-col justify-center gap-0.5",children:[m.jsxs("div",{className:"flex items-center gap-2",children:[m.jsx("h2",{className:"text-base font-semibold leading-none tracking-tight text-foreground",children:e.name}),m.jsxs(vo,{children:[m.jsx(So,{asChild:!0,children:m.jsx("button",{type:"button","aria-label":"提供商说明",className:"cursor-help rounded-sm text-muted-foreground/50 focus:outline-none focus-visible:text-foreground",children:m.jsx(sg,{"aria-hidden":"true",className:"h-3.5 w-3.5"})})}),m.jsx(bi,{className:"max-w-xs text-xs",children:e.description})]})]}),m.jsxs("a",{href:e.homeUrl,target:"_blank",rel:"noreferrer",className:"flex items-center gap-0.5 text-[10px] leading-none text-muted-foreground transition-colors hover:text-primary",children:["访问官网 ",m.jsx(Hs,{"aria-hidden":"true",className:"h-2.5 w-2.5"})]})]})]}),m.jsx(Jn,{variant:y||ne?"default":"secondary",children:Em(r)})]}),m.jsx(am,{definition:e,product:t,status:r,accountLabel:n,attempt:i,attemptOfferingId:o,apiKey:a,baseUrl:s,busy:u,disabled:c,error:h,suppressError:!!B,quotas:g,onApiKeyChange:k,onBaseUrlChange:S,onBeginApiKey:_,onBeginOffering:R,onBeginBrowser:E,onSaveApiKey:v,onDisconnect:V,onCreateApiKeyCredential:t?.offerings.length?G:void 0,onCreateLocalCredential:t?.offerings.length?ue:void 0,onUpdateCredential:ce,onDeleteCredential:z,onTestCredential:se,onReorderCredentials:C,onRefreshQuota:M,onDismissError:F}),m.jsxs("section",{className:"space-y-4",children:[m.jsxs("div",{"data-testid":"provider-models-header",className:"flex flex-col gap-3 border-b border-border/40 pb-4 sm:flex-row sm:items-center sm:justify-between",children:[m.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1",children:[m.jsx(ao,{className:"h-4 w-4 shrink-0 text-primary"}),m.jsx("h3",{className:"shrink-0 text-sm font-medium text-foreground/90",children:"可用模型"}),m.jsxs("span",{className:"text-xs text-muted-foreground",children:["共 ",A.length," · 已加入 ",P.length," · 已失效 ",w]})]}),m.jsxs("div",{"data-testid":"provider-models-actions",className:"flex w-full flex-wrap items-center gap-2 sm:w-auto sm:flex-nowrap sm:justify-end",children:[(ne||y)&&(K||x)?m.jsxs(m.Fragment,{children:[x?m.jsxs(Me,{variant:"outline",size:"sm",className:"h-8 gap-1.5 text-xs",disabled:c||u,onClick:x,children:[m.jsx(Ro,{"aria-hidden":"true",className:"h-3.5 w-3.5"}),"添加模型"]}):null,K&&A.length>0?m.jsxs(Me,{variant:"outline",size:"sm",className:"h-8 gap-1.5 text-xs",disabled:c||u||I,onClick:K,children:[I?m.jsx(br,{"aria-hidden":"true",className:"h-3.5 w-3.5 animate-spin"}):m.jsx(fs,{"aria-hidden":"true",className:"h-3.5 w-3.5"}),I?"同步中...":"刷新模型"]}):K?m.jsxs(Me,{variant:"outline",size:"sm",className:"h-8 gap-1.5 text-xs",disabled:c||u||I,onClick:K,children:[I?m.jsx(br,{"aria-hidden":"true",className:"h-3.5 w-3.5 animate-spin"}):m.jsx(fs,{"aria-hidden":"true",className:"h-3.5 w-3.5"}),I?"同步中...":"同步模型"]}):null]}):null,m.jsxs("div",{className:"relative w-full sm:w-auto",children:[m.jsx(jf,{className:"absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground"}),m.jsx(ft,{value:Z,onChange:b=>D(b.target.value),placeholder:"搜索模型...",className:"h-8 w-full bg-background pl-8 text-xs sm:w-[232px]",autoComplete:"off","data-lpignore":"true","data-1p-ignore":!0})]})]})]}),A.length===0?m.jsx("div",{className:"rounded-lg border border-dashed border-border/50 bg-muted/5 py-12 text-center text-sm text-muted-foreground",children:B?m.jsx("p",{className:"text-destructive",children:B}):"暂无可用模型"}):Q.length===0?m.jsx("div",{className:"rounded-lg border border-dashed border-border/50 bg-muted/5 py-12 text-center text-sm text-muted-foreground",children:"未找到匹配的模型"}):m.jsxs("div",{className:"grid gap-2",children:[m.jsx("div",{className:"flex items-center justify-between px-1 py-1",children:m.jsxs("button",{type:"button",role:"checkbox","aria-label":"全选当前结果","aria-checked":d?"mixed":l,disabled:c||u||le.length===0,onClick:W,className:"flex items-center gap-2 text-xs text-muted-foreground disabled:opacity-50",children:[m.jsx("span",{className:Je("flex h-4 w-4 items-center justify-center rounded border",l||d?"border-primary bg-primary text-primary-foreground":"border-border"),children:d?m.jsx("span",{"aria-hidden":"true",children:"−"}):m.jsx(Vo,{"aria-hidden":"true",className:Je("h-3 w-3",!l&&"invisible")})}),"全选当前结果"]})}),Q.map(b=>{const T=Yo(b),H=P.includes(T),L=b.availability==="unavailable",ge=b.displayName??b.id,Se=Wf(b,N),me=[...(b.inputModalities??[]).filter(xe=>xe!=="text"),...b.capabilities??[]];return m.jsxs("div",{className:Je("group flex items-center gap-3 rounded-lg border bg-card p-3 transition-all duration-200 hover:border-border/60 hover:bg-accent/30",H?"border-primary/40 bg-primary/[0.03]":"border-border/40",L&&"opacity-75"),children:[m.jsx("button",{type:"button",role:"checkbox","aria-checked":H,"aria-label":`${H?"取消选择":"选择"} ${ge}`,className:Je("flex h-5 w-5 shrink-0 items-center justify-center rounded border transition-colors focus:outline-none focus-visible:border-ring",H?"border-primary bg-primary text-primary-foreground":"border-border text-transparent hover:border-primary/60"),disabled:c||u||L&&!H,onClick:()=>q(T),children:m.jsx(Vo,{"aria-hidden":"true",className:"h-3.5 w-3.5"})}),m.jsx("div",{className:"shrink-0 rounded bg-muted/50 p-2 text-muted-foreground transition-colors group-hover:text-primary",children:m.jsx(ao,{className:"h-4 w-4"})}),m.jsxs("div",{className:"min-w-0 flex-1",children:[m.jsxs("div",{className:"flex items-center gap-2",children:[m.jsx("span",{className:"truncate text-sm font-medium text-foreground/90",children:ge}),m.jsx("div",{className:"flex items-center gap-1",children:me.map(xe=>m.jsx(Am,{type:xe},xe))}),Se?m.jsx(Jn,{variant:"outline",className:"shrink-0 text-[10px] font-normal","aria-label":`模型来源:${Se.label}`,title:Se.id,children:Se.label}):null,b.custom?m.jsx(Jn,{variant:"outline",className:"shrink-0 text-[10px] font-normal",children:"手工"}):null,L?m.jsx(Jn,{variant:"destructive",className:"shrink-0 text-[10px] font-normal",children:"已失效"}):null]}),b.displayName?m.jsxs("div",{className:"mt-0.5 flex items-center gap-1.5",children:[m.jsx("code",{className:"max-w-[300px] truncate font-mono text-[10px] text-muted-foreground opacity-70",children:b.id}),m.jsx("button",{type:"button",onClick:()=>{j(b.id)},className:"rounded p-0.5 text-muted-foreground opacity-0 transition-opacity hover:bg-muted hover:text-foreground group-hover:opacity-100 group-focus-within:opacity-100 focus:opacity-100","aria-label":`复制 ${b.displayName} ID`,title:"复制 ID",children:ee===b.id?m.jsx(Vo,{"aria-hidden":"true",className:"h-3 w-3 text-primary"}):m.jsx(Tf,{"aria-hidden":"true",className:"h-3 w-3"})})]}):null]}),b.custom&&($||J)?m.jsxs("div",{className:"flex shrink-0 items-center gap-1 opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100 focus-within:opacity-100",children:[$?m.jsx(Me,{variant:"ghost",size:"icon",className:"h-7 w-7","aria-label":`编辑 ${b.displayName??b.id}`,onClick:()=>$(b),children:m.jsx(Df,{"aria-hidden":"true",className:"h-3.5 w-3.5 text-muted-foreground"})}):null,J?m.jsx(Me,{variant:"ghost",size:"icon",className:"h-7 w-7","aria-label":`删除 ${b.displayName??b.id}`,onClick:()=>J(b),children:m.jsx(Vs,{"aria-hidden":"true",className:"h-3.5 w-3.5 text-muted-foreground"})}):null]}):null]},T)})]})]})]})})}function Am({type:e}){const t={image:{icon:kf,label:"视觉识别",className:"text-green-500"},web:{icon:Of,label:"联网搜索",className:"text-blue-500"},tool_call:{icon:ao,label:"函数调用",className:"text-orange-500"},reasoning:{icon:Pf,label:"推理",className:"text-purple-500"}}[e];if(!t)return null;const r=t.icon;return m.jsxs(vo,{children:[m.jsx(So,{asChild:!0,children:m.jsx("button",{type:"button","aria-label":t.label,className:"flex cursor-help items-center justify-center rounded-sm opacity-80 transition-opacity hover:opacity-100 focus:outline-none focus-visible:opacity-100",children:m.jsx(r,{"aria-hidden":"true",className:Je("h-3.5 w-3.5",t.className)})})}),m.jsx(bi,{children:t.label})]})}function vm(e){switch(e){case"openai":return"OA";case"anthropic":return"A";case"kimi":return"K";case"bailian":return"百";case"deepseek":return"DS";case"zhipu":return"智";case"ollama":return"O";case"custom":return"C"}}function Yo(e){return e.resourceId??(e.offeringId?`${e.offeringId}:${e.id}`:e.id)}function Sm(e,t){const r=Wf(e,t);return[e.id,e.displayName,r?.label,r?.id].filter(Boolean).join(`
3
3
  `).toLocaleLowerCase()}function Wf(e,t){if(e.offeringId)return t.get(e.offeringId)??{id:e.offeringId,label:e.offeringId}}function Em(e){switch(e){case"pending":return"连接中";case"configured":return"已配置";case"connected":return"已连接";case"disconnected":return"未设置";case"reauthRequired":return"需要重新登录";case"failed":return"连接失败";default:return"未检查"}}const xm=[{id:"image",label:"视觉识别",icon:kf}],Im=[{id:"tool_call",label:"函数调用",icon:ao},{id:"reasoning",label:"推理",icon:Pf},{id:"web",label:"联网搜索",icon:Of}];function Rm({open:e,providerName:t,initialValue:r,error:n,saving:i=!1,onOpenChange:o,onSave:a}){const s=!!r,[u,c]=te.useState(""),[h,g]=te.useState(""),[A,I]=te.useState([]),[k,S]=te.useState([]);te.useEffect(()=>{e&&(c(r?.id??""),g(r?.name??""),I(r?.inputModalities??[]),S(r?.capabilities??[]))},[r,e]);const _=u.trim(),R=!!_&&!i,E=(V,G,ue)=>{G(V.includes(ue)?V.filter(ce=>ce!==ue):[...V,ue])},v=(V,G,ue)=>{const ce=G.includes(V.id),z=V.icon;return m.jsxs("button",{type:"button","aria-pressed":ce,disabled:i,onClick:()=>E(G,ue,V.id),className:Je("flex items-center gap-1.5 rounded-md border px-2.5 py-1.5 text-xs transition-colors",ce?"border-primary/50 bg-primary/10 text-primary":"border-border/60 text-muted-foreground hover:border-border hover:text-foreground"),children:[m.jsx(z,{"aria-hidden":"true",className:"h-3.5 w-3.5"}),V.label]},V.id)};return m.jsx(qd,{open:e,onOpenChange:o,children:m.jsxs(ks,{className:"max-w-md",children:[m.jsx(Ds,{children:m.jsxs(js,{children:[s?"编辑模型":"添加模型"," · ",t]})}),m.jsxs("div",{className:"flex flex-col gap-4 py-2",children:[m.jsxs("div",{className:"flex flex-col gap-2",children:[m.jsx(rr,{htmlFor:"ai-model-id",children:"模型 ID"}),m.jsx(ft,{id:"ai-model-id",value:u,disabled:s||i,placeholder:"例如 gpt-4o-mini",onChange:V=>c(V.target.value)})]}),m.jsxs("div",{className:"flex flex-col gap-2",children:[m.jsx(rr,{htmlFor:"ai-model-name",children:"显示名称"}),m.jsx(ft,{id:"ai-model-name",value:h,disabled:i,placeholder:"留空则使用模型 ID",onChange:V=>g(V.target.value)})]}),m.jsxs("div",{className:"flex flex-col gap-2",children:[m.jsx(rr,{children:"输入模态"}),m.jsx("div",{className:"flex flex-wrap gap-2",children:xm.map(V=>v(V,A,I))})]}),m.jsxs("div",{className:"flex flex-col gap-2",children:[m.jsx(rr,{children:"能力标记"}),m.jsx("div",{className:"flex flex-wrap gap-2",children:Im.map(V=>v(V,k,S))})]}),n?m.jsx("p",{className:"text-xs text-destructive",role:"alert",children:n}):null]}),m.jsxs(Ns,{children:[m.jsx(Me,{variant:"outline",disabled:i,onClick:()=>o(!1),children:"取消"}),m.jsx(Me,{disabled:!R,onClick:()=>a({id:_,name:h.trim(),inputModalities:A,capabilities:k}),children:i?"保存中...":"保存"})]})]})})}const zf=["codex","claude-code","pi","codebuddy"],Mn={codex:"Codex","claude-code":"Claude Code",pi:"Pi",codebuddy:"CodeBuddy"};function Cm({client:e,className:t="h-4 w-4"}){switch(e){case"claude-code":return m.jsx(Vb,{className:t,"aria-hidden":"true"});case"pi":return m.jsx(bg,{className:t,"aria-hidden":"true"});case"codebuddy":return m.jsx(Xb,{className:t,"aria-hidden":"true"});default:return m.jsx(Cg,{className:t,"aria-hidden":"true"})}}function Mm(e,t,r){const n=r??"<粘贴 Xpod API Key>",i=t.trim().replace(/\/+$/,""),o=i.endsWith("/v1")?i:`${i}/v1`,a=i.replace(/\/v1$/,"");switch(e){case"codex":return["# ~/.codex/config.toml",'model_provider = "xpod"',"","[model_providers.xpod]",'name = "Xpod AI Connection"',`base_url = ${JSON.stringify(o)}`,'wire_api = "responses"',"requires_openai_auth = true","","# ~/.codex/auth.json(合并到现有 JSON)",JSON.stringify({OPENAI_API_KEY:n},null,2)].join(`
4
4
  `);case"claude-code":return["# ~/.claude/settings.json(合并 env 到现有 JSON)",JSON.stringify({env:{ANTHROPIC_BASE_URL:a,ANTHROPIC_AUTH_TOKEN:n}},null,2)].join(`