diff --git a/ee/tabby-webserver/ui/404.html b/ee/tabby-webserver/ui/404.html
index 289afcfb0cd8..2dc3e13ec7d9 100644
--- a/ee/tabby-webserver/ui/404.html
+++ b/ee/tabby-webserver/ui/404.html
@@ -1 +1 @@
-
Tabby
\ No newline at end of file
+Tabby
\ No newline at end of file
diff --git a/ee/tabby-webserver/ui/_next/static/7Ji3_cnZ75Ly2IiGzucaZ/_buildManifest.js b/ee/tabby-webserver/ui/_next/static/JnAaqgYudlqkxNqgr6pPW/_buildManifest.js
similarity index 100%
rename from ee/tabby-webserver/ui/_next/static/7Ji3_cnZ75Ly2IiGzucaZ/_buildManifest.js
rename to ee/tabby-webserver/ui/_next/static/JnAaqgYudlqkxNqgr6pPW/_buildManifest.js
diff --git a/ee/tabby-webserver/ui/_next/static/7Ji3_cnZ75Ly2IiGzucaZ/_ssgManifest.js b/ee/tabby-webserver/ui/_next/static/JnAaqgYudlqkxNqgr6pPW/_ssgManifest.js
similarity index 100%
rename from ee/tabby-webserver/ui/_next/static/7Ji3_cnZ75Ly2IiGzucaZ/_ssgManifest.js
rename to ee/tabby-webserver/ui/_next/static/JnAaqgYudlqkxNqgr6pPW/_ssgManifest.js
diff --git a/ee/tabby-webserver/ui/_next/static/chunks/2869-627c54a225a331e3.js b/ee/tabby-webserver/ui/_next/static/chunks/2869-627c54a225a331e3.js
new file mode 100644
index 000000000000..3d3c3d0789eb
--- /dev/null
+++ b/ee/tabby-webserver/ui/_next/static/chunks/2869-627c54a225a331e3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2869],{40030:function(e,t,r){r.d(t,{r:function(){return b}});var n=r(36164),a=r(3546),s=r(37671),o=r(2578),l=r(40055),d=r(43240),i=r(11634),c=r(70410),u=r(1544),f=r(31458),m=r(36065),p=r(81565),x=r(84942),h=r(3448),g=r(6230);let N=(0,d.BX)("\n mutation grantSourceIdReadAccess($sourceId: String!, $userGroupId: ID!) {\n grantSourceIdReadAccess(sourceId: $sourceId, userGroupId: $userGroupId)\n }\n"),v=(0,d.BX)("\n mutation revokeSourceIdReadAccess($sourceId: String!, $userGroupId: ID!) {\n revokeSourceIdReadAccess(sourceId: $sourceId, userGroupId: $userGroupId)\n }\n");function b(e){var t;let{sourceId:r,sourceName:d,className:b,editable:j,userGroups:y,fetchingUserGroups:w,...R}=e,[k,I]=(0,a.useState)(!1),[{data:Y,fetching:S}]=(0,l.aM)({query:c.hA,variables:{sourceId:r}}),_=(0,i.Db)(N),z=(0,i.Db)(v),C=null==Y?void 0:null===(t=Y.sourceIdAccessPolicies)||void 0===t?void 0:t.read,A=(null==C?void 0:C.length)||0,O=(0,a.useMemo)(()=>(null==C?void 0:C.length)?new Set(C.map(e=>e.id)):new Set,[C]),J=(e,t,r)=>{r?D(e,t):$(e,t)},D=(e,t)=>{let n="Failed to grant ".concat(t);return _({sourceId:r,userGroupId:e},{extraParams:{userGroupName:t}}).then(e=>{var t,r;if(!(null==e?void 0:null===(t=e.data)||void 0===t?void 0:t.grantSourceIdReadAccess)){let t=(null==e?void 0:null===(r=e.error)||void 0===r?void 0:r.message)||n;o.A.error(t);return}}).catch(e=>{let t=(null==e?void 0:e.message)||n;o.A.error(t)})},$=(e,t)=>z({sourceId:r,userGroupId:e},{extraParams:{userGroupName:t}}).then(e=>{var r,n;if(!(null==e?void 0:null===(r=e.data)||void 0===r?void 0:r.revokeSourceIdReadAccess)){let r=(null==e?void 0:null===(n=e.error)||void 0===n?void 0:n.message)||"Failed to revoke '".concat(t,"'");o.A.error(r);return}}).catch(e=>{let r=(null==e?void 0:e.message)||"Failed to revoke '".concat(t,"'");o.A.error(r)}),E=0===A?"Everyone":"".concat(A," ").concat(A<=1?"group":"groups");return(0,n.jsx)(g.Z,{loading:S,fallback:(0,n.jsx)(h.O,{className:(0,u.cn)(b)}),children:(0,n.jsxs)("div",{className:(0,u.cn)("flex items-center gap-0.5",b),children:[(0,n.jsx)("span",{className:"w-[68px]",children:E}),j&&(0,n.jsxs)(x.J2,{open:k,onOpenChange:I,children:[(0,n.jsx)(x.xo,{asChild:!0,children:(0,n.jsx)(f.z,{variant:"ghost",role:"combobox",size:"icon",children:(0,n.jsx)(p.IconEdit,{})})}),(0,n.jsx)(x.yk,{align:"end",side:"top",children:(0,n.jsxs)(m.mY,{className:"transition-all",children:[(0,n.jsx)(m.sZ,{placeholder:"Search groups..."}),(0,n.jsxs)(m.e8,{className:"max-h-[30vh]",children:[(0,n.jsx)(m.rb,{children:w?(0,n.jsx)("div",{className:"flex justify-center",children:(0,n.jsx)(p.IconSpinner,{className:"h-6 w-6"})}):(null==y?void 0:y.length)?"No matches results":"No groups found"}),(0,n.jsx)(m.fu,{children:null==y?void 0:y.map(e=>{let t=O.has(e.id),r=e.members.length;return(0,n.jsxs)(m.di,{value:e.name,onSelect:()=>J(e.id,e.name,!t),children:[(0,n.jsx)("div",{className:(0,u.cn)("mr-2 flex h-4 w-4 cursor-pointer items-center justify-center rounded-sm border border-primary",t?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:(0,n.jsx)(s.nQG,{className:(0,u.cn)("h-4 w-4")})}),(0,n.jsxs)("span",{children:[e.name,(0,n.jsx)("span",{className:"ml-1 text-muted-foreground",children:"(".concat(r," member").concat(r>1?"s":"",")")})]})]},e.id)})})]})]})})]})]})})}},55137:function(e,t,r){r.d(t,{_:function(){return h}});var n=r(36164),a=r(3546),s=r(70652),o=r.n(s),l=r(11978),d=r(99092),i=r.n(d),c=r(1544),u=r(31458),f=r(81565),m=r(29);function p(e){let{onTrigger:t,isPending:r,jobLink:s}=e,o=(0,l.useRouter)(),[d,i]=a.useState(!1);return(0,n.jsxs)(m.u,{children:[(0,n.jsx)(m.aJ,{asChild:!0,children:(0,n.jsx)(u.z,{size:"icon",variant:"ghost",onClick:()=>{if(r){s&&o.push(s);return}let e=t();return e&&e instanceof Promise&&(i(!0),e.finally(()=>i(!1))),e},disabled:d,children:d||r?(0,n.jsx)(f.IconSpinner,{}):(0,n.jsx)(f.IconCirclePlay,{strokeWidth:1,className:"h-5 w-5"})})}),(0,n.jsx)(m._v,{children:(0,n.jsx)("p",{children:"Run"})})]})}function x(e){let{jobInfo:t,className:r}=e;return(null==t?void 0:t.lastJobRun)?(0,n.jsx)(o(),{href:"/jobs/detail?id=".concat(t.lastJobRun.id),className:(0,c.cn)("flex items-center gap-1 underline hover:text-foreground/50",r),children:i()(t.lastJobRun.createdAt).format("YYYY-MM-DD HH:mm")}):null}function h(e){var t;let{jobInfo:r,onTrigger:a,className:s}=e,o=!!(null==r?void 0:r.lastJobRun)&&null===r.lastJobRun.exitCode,l=(null==r?void 0:null===(t=r.lastJobRun)||void 0===t?void 0:t.id)?"/jobs/detail?id=".concat(r.lastJobRun.id):void 0;return(0,n.jsxs)("div",{className:(0,c.cn)("flex items-center gap-1",s),children:[(0,n.jsx)(x,{jobInfo:r,className:"hidden lg:block"}),(0,n.jsx)(p,{onTrigger:a,isPending:o,jobLink:l})]})}},14522:function(e,t,r){r.d(t,{C:function(){return a}});var n=r(43240);let a=(0,n.BX)("\n mutation triggerJobRun($command: String!) {\n triggerJobRun(command: $command)\n }\n")},6230:function(e,t,r){var n=r(36164),a=r(3546),s=r(24449),o=r(90379);t.Z=e=>{let{loading:t,fallback:r,delay:l,children:d}=e,[i,c]=a.useState(!t),[u]=(0,s.n)(i,null!=l?l:200);return(a.useEffect(()=>{t||i||c(!0)},[t]),u)?d:r||(0,n.jsx)(o.cg,{})}},90379:function(e,t,r){r.d(t,{PF:function(){return d},cg:function(){return o},tB:function(){return l}});var n=r(36164),a=r(1544),s=r(3448);let o=e=>{let{className:t,...r}=e;return(0,n.jsxs)("div",{className:(0,a.cn)("space-y-3",t),...r,children:[(0,n.jsx)(s.O,{className:"h-4 w-full"}),(0,n.jsx)(s.O,{className:"h-4 w-full"}),(0,n.jsx)(s.O,{className:"h-4 w-full"}),(0,n.jsx)(s.O,{className:"h-4 w-full"})]})},l=e=>{let{className:t,...r}=e;return(0,n.jsx)(s.O,{className:(0,a.cn)("h-4 w-full",t),...r})},d=e=>{let{className:t,...r}=e;return(0,n.jsxs)("div",{className:(0,a.cn)("flex flex-col gap-3",t),...r,children:[(0,n.jsx)(s.O,{className:"h-4 w-[20%]"}),(0,n.jsx)(s.O,{className:"h-4 w-full"}),(0,n.jsx)(s.O,{className:"h-4 w-[20%]"}),(0,n.jsx)(s.O,{className:"h-4 w-full"})]})}},36065:function(e,t,r){r.d(t,{di:function(){return p},e8:function(){return c},fu:function(){return f},mY:function(){return d},rb:function(){return u},sZ:function(){return i},zz:function(){return m}});var n=r(36164),a=r(3546),s=r(53241),o=r(93170),l=r(1544);r(30220);let d=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)(s.mY,{ref:t,className:(0,l.cn)("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",r),...a})});d.displayName=s.mY.displayName;let i=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsxs)("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[(0,n.jsx)(o.Z,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),(0,n.jsx)(s.mY.Input,{ref:t,className:(0,l.cn)("flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",r),...a})]})});i.displayName=s.mY.Input.displayName;let c=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)(s.mY.List,{ref:t,className:(0,l.cn)("max-h-[300px] overflow-y-auto overflow-x-hidden",r),...a})});c.displayName=s.mY.List.displayName;let u=a.forwardRef((e,t)=>(0,n.jsx)(s.mY.Empty,{ref:t,className:"py-6 text-center text-sm",...e}));u.displayName=s.mY.Empty.displayName;let f=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)(s.mY.Group,{ref:t,className:(0,l.cn)("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",r),...a})});f.displayName=s.mY.Group.displayName;let m=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)(s.mY.Separator,{ref:t,className:(0,l.cn)("-mx-1 h-px bg-border",r),...a})});m.displayName=s.mY.Separator.displayName;let p=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)(s.mY.Item,{ref:t,className:(0,l.cn)("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-disabled:pointer-events-none aria-disabled:opacity-50 aria-selected:bg-accent aria-selected:text-accent-foreground",r),...a})});p.displayName=s.mY.Item.displayName},30220:function(e,t,r){r.d(t,{$N:function(){return x},Be:function(){return h},Vq:function(){return d},cN:function(){return p},cZ:function(){return f},fK:function(){return m},hg:function(){return i}});var n=r(36164),a=r(3546),s=r(4318),o=r(1663),l=r(1544);let d=s.fC,i=s.xz,c=s.h_;s.x8;let u=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)(s.aV,{ref:t,className:(0,l.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",r),...a})});u.displayName=s.aV.displayName;let f=a.forwardRef((e,t)=>{let{className:r,children:a,...d}=e;return(0,n.jsxs)(c,{children:[(0,n.jsx)(u,{}),(0,n.jsxs)(s.VY,{ref:t,className:(0,l.cn)("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%] sm:rounded-lg",r),...d,children:[a,(0,n.jsxs)(s.x8,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[(0,n.jsx)(o.Z,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})});f.displayName=s.VY.displayName;let m=e=>{let{className:t,...r}=e;return(0,n.jsx)("div",{className:(0,l.cn)("flex flex-col space-y-1.5 text-center sm:text-left",t),...r})};m.displayName="DialogHeader";let p=e=>{let{className:t,...r}=e;return(0,n.jsx)("div",{className:(0,l.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...r})};p.displayName="DialogFooter";let x=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)(s.Dx,{ref:t,className:(0,l.cn)("text-lg font-semibold leading-none tracking-tight",r),...a})});x.displayName=s.Dx.displayName;let h=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)(s.dk,{ref:t,className:(0,l.cn)("text-sm text-muted-foreground",r),...a})});h.displayName=s.dk.displayName},84942:function(e,t,r){r.d(t,{J2:function(){return l},i9:function(){return c},tW:function(){return u},xo:function(){return d},xp:function(){return i},yk:function(){return f}});var n=r(36164),a=r(3546),s=r(83299),o=r(1544);let l=s.fC,d=s.xz,i=s.x8,c=s.h_,u=s.ee,f=a.forwardRef((e,t)=>{let{className:r,sideOffset:a=4,...l}=e;return(0,n.jsx)(s.VY,{ref:t,sideOffset:a,className:(0,o.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow animate-in 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",r),...l})});f.displayName=s.VY.displayName},3448:function(e,t,r){r.d(t,{O:function(){return s}});var n=r(36164),a=r(1544);function s(e){let{className:t,...r}=e;return(0,n.jsx)("div",{className:(0,a.cn)("h-4 animate-pulse rounded-md bg-border",t),...r})}},99047:function(e,t,r){r.d(t,{RM:function(){return d},SC:function(){return c},iA:function(){return o},pj:function(){return f},ss:function(){return u},xD:function(){return l}});var n=r(36164),a=r(3546),s=r(1544);let o=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("table",{ref:t,className:(0,s.cn)("w-full caption-bottom text-sm",r),...a})});o.displayName="Table";let l=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("thead",{ref:t,className:(0,s.cn)("[&_tr]:border-b",r),...a})});l.displayName="TableHeader";let d=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("tbody",{ref:t,className:(0,s.cn)("[&_tr:last-child]:border-0",r),...a})});d.displayName="TableBody";let i=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("tfoot",{ref:t,className:(0,s.cn)("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",r),...a})});i.displayName="TableFooter";let c=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("tr",{ref:t,className:(0,s.cn)("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",r),...a})});c.displayName="TableRow";let u=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("th",{ref:t,className:(0,s.cn)("h-12 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",r),...a})});u.displayName="TableHead";let f=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("td",{ref:t,className:(0,s.cn)("p-2 align-middle [&:has([role=checkbox])]:pr-0",r),...a})});f.displayName="TableCell";let m=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("caption",{ref:t,className:(0,s.cn)("mt-4 text-sm text-muted-foreground",r),...a})});m.displayName="TableCaption"},29:function(e,t,r){r.d(t,{_v:function(){return c},aJ:function(){return i},pn:function(){return l},u:function(){return d}});var n=r(36164),a=r(3546),s=r(44421),o=r(1544);let l=s.zt,d=s.fC,i=s.xz,c=a.forwardRef((e,t)=>{let{className:r,sideOffset:a=4,...l}=e;return(0,n.jsx)(s.VY,{ref:t,sideOffset:a,className:(0,o.cn)("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-xs font-medium text-popover-foreground shadow-md animate-in fade-in-50 data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1",r),...l})});c.displayName=s.VY.displayName},24449:function(e,t,r){r.d(t,{S:function(){return l},n:function(){return d}});var n=r(3546),a=r(45391),s=r(16784);let o=e=>{let t=(0,s.d)(e);n.useEffect(()=>()=>{t.current()},[])};function l(e,t,r){let l=(0,s.d)(e),d=n.useMemo(()=>(0,a.Z)(function(){for(var e=arguments.length,t=Array(e),r=0;r{var e;null==r||null===(e=r.onUnmount)||void 0===e||e.call(r,d),d.cancel()}),{run:d,cancel:d.cancel,flush:d.flush}}function d(e,t,r){let[a,s]=n.useState(e),{run:o}=l(()=>{s(e)},t,r);return n.useEffect(()=>{o()},[e]),[a,s]}},16784:function(e,t,r){r.d(t,{d:function(){return a}});var n=r(3546);function a(e){let t=n.useRef(e);return t.current=e,t}}}]);
\ No newline at end of file
diff --git a/ee/tabby-webserver/ui/_next/static/chunks/2869-d1d288c1ddd3bd8c.js b/ee/tabby-webserver/ui/_next/static/chunks/2869-d1d288c1ddd3bd8c.js
deleted file mode 100644
index fd1a991cf822..000000000000
--- a/ee/tabby-webserver/ui/_next/static/chunks/2869-d1d288c1ddd3bd8c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2869],{40030:function(e,t,r){r.d(t,{r:function(){return b}});var n=r(36164),a=r(3546),s=r(37671),o=r(2578),l=r(40055),d=r(43240),i=r(11634),c=r(70410),u=r(1544),f=r(31458),m=r(36065),p=r(81565),x=r(84942),h=r(3448),g=r(6230);let N=(0,d.BX)("\n mutation grantSourceIdReadAccess($sourceId: String!, $userGroupId: ID!) {\n grantSourceIdReadAccess(sourceId: $sourceId, userGroupId: $userGroupId)\n }\n"),v=(0,d.BX)("\n mutation revokeSourceIdReadAccess($sourceId: String!, $userGroupId: ID!) {\n revokeSourceIdReadAccess(sourceId: $sourceId, userGroupId: $userGroupId)\n }\n");function b(e){var t;let{sourceId:r,sourceName:d,className:b,editable:j,userGroups:y,fetchingUserGroups:w,...R}=e,[k,I]=(0,a.useState)(!1),[{data:Y,fetching:S}]=(0,l.aM)({query:c.hA,variables:{sourceId:r}}),_=(0,i.D)(N),z=(0,i.D)(v),C=null==Y?void 0:null===(t=Y.sourceIdAccessPolicies)||void 0===t?void 0:t.read,A=(null==C?void 0:C.length)||0,O=(0,a.useMemo)(()=>(null==C?void 0:C.length)?new Set(C.map(e=>e.id)):new Set,[C]),J=(e,t,r)=>{r?D(e,t):$(e,t)},D=(e,t)=>{let n="Failed to grant ".concat(t);return _({sourceId:r,userGroupId:e},{extraParams:{userGroupName:t}}).then(e=>{var t,r;if(!(null==e?void 0:null===(t=e.data)||void 0===t?void 0:t.grantSourceIdReadAccess)){let t=(null==e?void 0:null===(r=e.error)||void 0===r?void 0:r.message)||n;o.A.error(t);return}}).catch(e=>{let t=(null==e?void 0:e.message)||n;o.A.error(t)})},$=(e,t)=>z({sourceId:r,userGroupId:e},{extraParams:{userGroupName:t}}).then(e=>{var r,n;if(!(null==e?void 0:null===(r=e.data)||void 0===r?void 0:r.revokeSourceIdReadAccess)){let r=(null==e?void 0:null===(n=e.error)||void 0===n?void 0:n.message)||"Failed to revoke '".concat(t,"'");o.A.error(r);return}}).catch(e=>{let r=(null==e?void 0:e.message)||"Failed to revoke '".concat(t,"'");o.A.error(r)}),E=0===A?"Everyone":"".concat(A," ").concat(A<=1?"group":"groups");return(0,n.jsx)(g.Z,{loading:S,fallback:(0,n.jsx)(h.O,{className:(0,u.cn)(b)}),children:(0,n.jsxs)("div",{className:(0,u.cn)("flex items-center gap-0.5",b),children:[(0,n.jsx)("span",{className:"w-[68px]",children:E}),j&&(0,n.jsxs)(x.J2,{open:k,onOpenChange:I,children:[(0,n.jsx)(x.xo,{asChild:!0,children:(0,n.jsx)(f.z,{variant:"ghost",role:"combobox",size:"icon",children:(0,n.jsx)(p.IconEdit,{})})}),(0,n.jsx)(x.yk,{align:"end",side:"top",children:(0,n.jsxs)(m.mY,{className:"transition-all",children:[(0,n.jsx)(m.sZ,{placeholder:"Search groups..."}),(0,n.jsxs)(m.e8,{className:"max-h-[30vh]",children:[(0,n.jsx)(m.rb,{children:w?(0,n.jsx)("div",{className:"flex justify-center",children:(0,n.jsx)(p.IconSpinner,{className:"h-6 w-6"})}):(null==y?void 0:y.length)?"No matches results":"No groups found"}),(0,n.jsx)(m.fu,{children:null==y?void 0:y.map(e=>{let t=O.has(e.id),r=e.members.length;return(0,n.jsxs)(m.di,{value:e.name,onSelect:()=>J(e.id,e.name,!t),children:[(0,n.jsx)("div",{className:(0,u.cn)("mr-2 flex h-4 w-4 cursor-pointer items-center justify-center rounded-sm border border-primary",t?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:(0,n.jsx)(s.nQG,{className:(0,u.cn)("h-4 w-4")})}),(0,n.jsxs)("span",{children:[e.name,(0,n.jsx)("span",{className:"ml-1 text-muted-foreground",children:"(".concat(r," member").concat(r>1?"s":"",")")})]})]},e.id)})})]})]})})]})]})})}},55137:function(e,t,r){r.d(t,{_:function(){return h}});var n=r(36164),a=r(3546),s=r(70652),o=r.n(s),l=r(11978),d=r(99092),i=r.n(d),c=r(1544),u=r(31458),f=r(81565),m=r(29);function p(e){let{onTrigger:t,isPending:r,jobLink:s}=e,o=(0,l.useRouter)(),[d,i]=a.useState(!1);return(0,n.jsxs)(m.u,{children:[(0,n.jsx)(m.aJ,{asChild:!0,children:(0,n.jsx)(u.z,{size:"icon",variant:"ghost",onClick:()=>{if(r){s&&o.push(s);return}let e=t();return e&&e instanceof Promise&&(i(!0),e.finally(()=>i(!1))),e},disabled:d,children:d||r?(0,n.jsx)(f.IconSpinner,{}):(0,n.jsx)(f.IconCirclePlay,{strokeWidth:1,className:"h-5 w-5"})})}),(0,n.jsx)(m._v,{children:(0,n.jsx)("p",{children:"Run"})})]})}function x(e){let{jobInfo:t,className:r}=e;return(null==t?void 0:t.lastJobRun)?(0,n.jsx)(o(),{href:"/jobs/detail?id=".concat(t.lastJobRun.id),className:(0,c.cn)("flex items-center gap-1 underline hover:text-foreground/50",r),children:i()(t.lastJobRun.createdAt).format("YYYY-MM-DD HH:mm")}):null}function h(e){var t;let{jobInfo:r,onTrigger:a,className:s}=e,o=!!(null==r?void 0:r.lastJobRun)&&null===r.lastJobRun.exitCode,l=(null==r?void 0:null===(t=r.lastJobRun)||void 0===t?void 0:t.id)?"/jobs/detail?id=".concat(r.lastJobRun.id):void 0;return(0,n.jsxs)("div",{className:(0,c.cn)("flex items-center gap-1",s),children:[(0,n.jsx)(x,{jobInfo:r,className:"hidden lg:block"}),(0,n.jsx)(p,{onTrigger:a,isPending:o,jobLink:l})]})}},14522:function(e,t,r){r.d(t,{C:function(){return a}});var n=r(43240);let a=(0,n.BX)("\n mutation triggerJobRun($command: String!) {\n triggerJobRun(command: $command)\n }\n")},6230:function(e,t,r){var n=r(36164),a=r(3546),s=r(24449),o=r(90379);t.Z=e=>{let{loading:t,fallback:r,delay:l,children:d}=e,[i,c]=a.useState(!t),[u]=(0,s.n)(i,null!=l?l:200);return(a.useEffect(()=>{t||i||c(!0)},[t]),u)?d:r||(0,n.jsx)(o.cg,{})}},90379:function(e,t,r){r.d(t,{PF:function(){return d},cg:function(){return o},tB:function(){return l}});var n=r(36164),a=r(1544),s=r(3448);let o=e=>{let{className:t,...r}=e;return(0,n.jsxs)("div",{className:(0,a.cn)("space-y-3",t),...r,children:[(0,n.jsx)(s.O,{className:"h-4 w-full"}),(0,n.jsx)(s.O,{className:"h-4 w-full"}),(0,n.jsx)(s.O,{className:"h-4 w-full"}),(0,n.jsx)(s.O,{className:"h-4 w-full"})]})},l=e=>{let{className:t,...r}=e;return(0,n.jsx)(s.O,{className:(0,a.cn)("h-4 w-full",t),...r})},d=e=>{let{className:t,...r}=e;return(0,n.jsxs)("div",{className:(0,a.cn)("flex flex-col gap-3",t),...r,children:[(0,n.jsx)(s.O,{className:"h-4 w-[20%]"}),(0,n.jsx)(s.O,{className:"h-4 w-full"}),(0,n.jsx)(s.O,{className:"h-4 w-[20%]"}),(0,n.jsx)(s.O,{className:"h-4 w-full"})]})}},36065:function(e,t,r){r.d(t,{di:function(){return p},e8:function(){return c},fu:function(){return f},mY:function(){return d},rb:function(){return u},sZ:function(){return i},zz:function(){return m}});var n=r(36164),a=r(3546),s=r(53241),o=r(93170),l=r(1544);r(30220);let d=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)(s.mY,{ref:t,className:(0,l.cn)("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",r),...a})});d.displayName=s.mY.displayName;let i=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsxs)("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[(0,n.jsx)(o.Z,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),(0,n.jsx)(s.mY.Input,{ref:t,className:(0,l.cn)("flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",r),...a})]})});i.displayName=s.mY.Input.displayName;let c=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)(s.mY.List,{ref:t,className:(0,l.cn)("max-h-[300px] overflow-y-auto overflow-x-hidden",r),...a})});c.displayName=s.mY.List.displayName;let u=a.forwardRef((e,t)=>(0,n.jsx)(s.mY.Empty,{ref:t,className:"py-6 text-center text-sm",...e}));u.displayName=s.mY.Empty.displayName;let f=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)(s.mY.Group,{ref:t,className:(0,l.cn)("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",r),...a})});f.displayName=s.mY.Group.displayName;let m=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)(s.mY.Separator,{ref:t,className:(0,l.cn)("-mx-1 h-px bg-border",r),...a})});m.displayName=s.mY.Separator.displayName;let p=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)(s.mY.Item,{ref:t,className:(0,l.cn)("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-disabled:pointer-events-none aria-disabled:opacity-50 aria-selected:bg-accent aria-selected:text-accent-foreground",r),...a})});p.displayName=s.mY.Item.displayName},30220:function(e,t,r){r.d(t,{$N:function(){return x},Be:function(){return h},Vq:function(){return d},cN:function(){return p},cZ:function(){return f},fK:function(){return m},hg:function(){return i}});var n=r(36164),a=r(3546),s=r(4318),o=r(1663),l=r(1544);let d=s.fC,i=s.xz,c=s.h_;s.x8;let u=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)(s.aV,{ref:t,className:(0,l.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",r),...a})});u.displayName=s.aV.displayName;let f=a.forwardRef((e,t)=>{let{className:r,children:a,...d}=e;return(0,n.jsxs)(c,{children:[(0,n.jsx)(u,{}),(0,n.jsxs)(s.VY,{ref:t,className:(0,l.cn)("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%] sm:rounded-lg",r),...d,children:[a,(0,n.jsxs)(s.x8,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[(0,n.jsx)(o.Z,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})});f.displayName=s.VY.displayName;let m=e=>{let{className:t,...r}=e;return(0,n.jsx)("div",{className:(0,l.cn)("flex flex-col space-y-1.5 text-center sm:text-left",t),...r})};m.displayName="DialogHeader";let p=e=>{let{className:t,...r}=e;return(0,n.jsx)("div",{className:(0,l.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...r})};p.displayName="DialogFooter";let x=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)(s.Dx,{ref:t,className:(0,l.cn)("text-lg font-semibold leading-none tracking-tight",r),...a})});x.displayName=s.Dx.displayName;let h=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)(s.dk,{ref:t,className:(0,l.cn)("text-sm text-muted-foreground",r),...a})});h.displayName=s.dk.displayName},84942:function(e,t,r){r.d(t,{J2:function(){return l},i9:function(){return c},tW:function(){return u},xo:function(){return d},xp:function(){return i},yk:function(){return f}});var n=r(36164),a=r(3546),s=r(83299),o=r(1544);let l=s.fC,d=s.xz,i=s.x8,c=s.h_,u=s.ee,f=a.forwardRef((e,t)=>{let{className:r,sideOffset:a=4,...l}=e;return(0,n.jsx)(s.VY,{ref:t,sideOffset:a,className:(0,o.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow animate-in 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",r),...l})});f.displayName=s.VY.displayName},3448:function(e,t,r){r.d(t,{O:function(){return s}});var n=r(36164),a=r(1544);function s(e){let{className:t,...r}=e;return(0,n.jsx)("div",{className:(0,a.cn)("h-4 animate-pulse rounded-md bg-border",t),...r})}},99047:function(e,t,r){r.d(t,{RM:function(){return d},SC:function(){return c},iA:function(){return o},pj:function(){return f},ss:function(){return u},xD:function(){return l}});var n=r(36164),a=r(3546),s=r(1544);let o=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("table",{ref:t,className:(0,s.cn)("w-full caption-bottom text-sm",r),...a})});o.displayName="Table";let l=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("thead",{ref:t,className:(0,s.cn)("[&_tr]:border-b",r),...a})});l.displayName="TableHeader";let d=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("tbody",{ref:t,className:(0,s.cn)("[&_tr:last-child]:border-0",r),...a})});d.displayName="TableBody";let i=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("tfoot",{ref:t,className:(0,s.cn)("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",r),...a})});i.displayName="TableFooter";let c=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("tr",{ref:t,className:(0,s.cn)("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",r),...a})});c.displayName="TableRow";let u=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("th",{ref:t,className:(0,s.cn)("h-12 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",r),...a})});u.displayName="TableHead";let f=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("td",{ref:t,className:(0,s.cn)("p-2 align-middle [&:has([role=checkbox])]:pr-0",r),...a})});f.displayName="TableCell";let m=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,n.jsx)("caption",{ref:t,className:(0,s.cn)("mt-4 text-sm text-muted-foreground",r),...a})});m.displayName="TableCaption"},29:function(e,t,r){r.d(t,{_v:function(){return c},aJ:function(){return i},pn:function(){return l},u:function(){return d}});var n=r(36164),a=r(3546),s=r(44421),o=r(1544);let l=s.zt,d=s.fC,i=s.xz,c=a.forwardRef((e,t)=>{let{className:r,sideOffset:a=4,...l}=e;return(0,n.jsx)(s.VY,{ref:t,sideOffset:a,className:(0,o.cn)("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-xs font-medium text-popover-foreground shadow-md animate-in fade-in-50 data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1",r),...l})});c.displayName=s.VY.displayName},24449:function(e,t,r){r.d(t,{S:function(){return l},n:function(){return d}});var n=r(3546),a=r(45391),s=r(16784);let o=e=>{let t=(0,s.d)(e);n.useEffect(()=>()=>{t.current()},[])};function l(e,t,r){let l=(0,s.d)(e),d=n.useMemo(()=>(0,a.Z)(function(){for(var e=arguments.length,t=Array(e),r=0;r{var e;null==r||null===(e=r.onUnmount)||void 0===e||e.call(r,d),d.cancel()}),{run:d,cancel:d.cancel,flush:d.flush}}function d(e,t,r){let[a,s]=n.useState(e),{run:o}=l(()=>{s(e)},t,r);return n.useEffect(()=>{o()},[e]),[a,s]}},16784:function(e,t,r){r.d(t,{d:function(){return a}});var n=r(3546);function a(e){let t=n.useRef(e);return t.current=e,t}}}]);
\ No newline at end of file
diff --git a/ee/tabby-webserver/ui/_next/static/chunks/3821-7f0a3130055112a7.js b/ee/tabby-webserver/ui/_next/static/chunks/3821-1e30eb838b656667.js
similarity index 61%
rename from ee/tabby-webserver/ui/_next/static/chunks/3821-7f0a3130055112a7.js
rename to ee/tabby-webserver/ui/_next/static/chunks/3821-1e30eb838b656667.js
index 2d906f7cdbd3..ce1ab6b498cf 100644
--- a/ee/tabby-webserver/ui/_next/static/chunks/3821-7f0a3130055112a7.js
+++ b/ee/tabby-webserver/ui/_next/static/chunks/3821-1e30eb838b656667.js
@@ -1 +1 @@
-"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3821,3240,4656],{48537:function(n,e,t){t.d(e,{q:function(){return o}});var r=t(36164);t(3546);var s=t(28312),i=t(31458),a=t(81565);function o(n){let{className:e,value:t,onCopyContent:o,text:u,...d}=n,{isCopied:l,copyToClipboard:c}=(0,s.m)({timeout:2e3,onCopyContent:o});return t?(0,r.jsxs)(i.z,{variant:"ghost",size:u?"default":"icon",className:e,onClick:()=>{l||c(t)},...d,children:[l?(0,r.jsx)(a.IconCheck,{className:"text-green-600"}):(0,r.jsx)(a.IconCopy,{}),u&&(0,r.jsx)("span",{children:u}),!u&&(0,r.jsx)("span",{className:"sr-only",children:"Copy"})]}):null}},90379:function(n,e,t){t.d(e,{PF:function(){return u},cg:function(){return a},tB:function(){return o}});var r=t(36164),s=t(1544),i=t(3448);let a=n=>{let{className:e,...t}=n;return(0,r.jsxs)("div",{className:(0,s.cn)("space-y-3",e),...t,children:[(0,r.jsx)(i.O,{className:"h-4 w-full"}),(0,r.jsx)(i.O,{className:"h-4 w-full"}),(0,r.jsx)(i.O,{className:"h-4 w-full"}),(0,r.jsx)(i.O,{className:"h-4 w-full"})]})},o=n=>{let{className:e,...t}=n;return(0,r.jsx)(i.O,{className:(0,s.cn)("h-4 w-full",e),...t})},u=n=>{let{className:e,...t}=n;return(0,r.jsxs)("div",{className:(0,s.cn)("flex flex-col gap-3",e),...t,children:[(0,r.jsx)(i.O,{className:"h-4 w-[20%]"}),(0,r.jsx)(i.O,{className:"h-4 w-full"}),(0,r.jsx)(i.O,{className:"h-4 w-[20%]"}),(0,r.jsx)(i.O,{className:"h-4 w-full"})]})}},31458:function(n,e,t){t.d(e,{d:function(){return u},z:function(){return d}});var r=t(36164),s=t(3546),i=t(74047),a=t(14375),o=t(1544);let u=(0,a.j)("inline-flex items-center justify-center rounded-md text-sm font-medium shadow ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-md hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90","hover-destructive":"shadow-none hover:bg-destructive/90 hover:text-destructive-foreground",outline:"border border-input hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"shadow-none hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 shadow-none hover:underline"},size:{default:"h-8 px-4 py-2",sm:"h-8 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-8 w-8 p-0"}},defaultVariants:{variant:"default",size:"default"}}),d=s.forwardRef((n,e)=>{let{className:t,variant:s,size:a,asChild:d=!1,...l}=n,c=d?i.g7:"button";return(0,r.jsx)(c,{className:(0,o.cn)(u({variant:s,size:a,className:t})),ref:e,...l})});d.displayName="Button"},82394:function(n,e,t){t.d(e,{I:function(){return a}});var r=t(36164),s=t(3546),i=t(1544);let a=s.forwardRef((n,e)=>{let{className:t,type:s,...a}=n;return(0,r.jsx)("input",{type:s,className:(0,i.cn)("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",t),ref:e,...a})});a.displayName="Input"},11208:function(n,e,t){t.d(e,{Z:function(){return o}});var r=t(36164),s=t(3546),i=t(74225),a=t(1544);let o=s.forwardRef((n,e)=>{let{className:t,orientation:s="horizontal",decorative:o=!0,...u}=n;return(0,r.jsx)(i.f,{ref:e,decorative:o,orientation:s,className:(0,a.cn)("shrink-0 bg-border","horizontal"===s?"h-[1px] w-full":"h-full w-[1px]",t),...u})});o.displayName=i.f.displayName},3448:function(n,e,t){t.d(e,{O:function(){return i}});var r=t(36164),s=t(1544);function i(n){let{className:e,...t}=n;return(0,r.jsx)("div",{className:(0,s.cn)("h-4 animate-pulse rounded-md bg-border",e),...t})}},29:function(n,e,t){t.d(e,{_v:function(){return l},aJ:function(){return d},pn:function(){return o},u:function(){return u}});var r=t(36164),s=t(3546),i=t(44421),a=t(1544);let o=i.zt,u=i.fC,d=i.xz,l=s.forwardRef((n,e)=>{let{className:t,sideOffset:s=4,...o}=n;return(0,r.jsx)(i.VY,{ref:e,sideOffset:s,className:(0,a.cn)("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-xs font-medium text-popover-foreground shadow-md animate-in fade-in-50 data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1",t),...o})});l.displayName=i.VY.displayName},75561:function(n,e,t){t.d(e,{B:function(){return i}});var r=t(18500);let s={"\n query ListUserEvents(\n $after: String\n $before: String\n $first: Int\n $last: Int\n $start: DateTime!\n $end: DateTime!\n $users: [ID!]\n ) {\n userEvents(\n after: $after\n before: $before\n first: $first\n last: $last\n start: $start\n end: $end\n users: $users\n ) {\n edges {\n node {\n id\n userId\n createdAt\n kind\n payload\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.UQ,"\n mutation uploadUserAvatarBase64($id: ID!, $avatarBase64: String!) {\n uploadUserAvatarBase64(id: $id, avatarBase64: $avatarBase64)\n }\n":r.eI,"\n mutation UpdateUserName($id: ID!, $name: String!) {\n updateUserName(id: $id, name: $name)\n }\n":r.DQ,"\n mutation PasswordChange($input: PasswordChangeInput!) {\n passwordChange(input: $input)\n }\n":r.oZ,"\n mutation updateEmailSetting($input: EmailSettingInput!) {\n updateEmailSetting(input: $input)\n }\n":r.gl,"\n mutation deleteEmailSetting {\n deleteEmailSetting\n }\n":r.wZ,"\n mutation SendTestEmail($to: String!) {\n sendTestEmail(to: $to)\n }\n":r.nI,"\n query emailSetting {\n emailSetting {\n smtpUsername\n smtpServer\n fromAddress\n encryption\n authMethod\n smtpPort\n }\n }\n":r.k6,"\n mutation UpdateIntegration($input: UpdateIntegrationInput!) {\n updateIntegration(input: $input)\n }\n":r.fc,"\n mutation DeleteIntegration($id: ID!, $kind: IntegrationKind!) {\n deleteIntegration(id: $id, kind: $kind)\n }\n":r.AU,"\n mutation UpdateIntegratedRepositoryActive($id: ID!, $active: Boolean!) {\n updateIntegratedRepositoryActive(id: $id, active: $active)\n }\n":r.o7,"\n mutation CreateIntegration($input: CreateIntegrationInput!) {\n createIntegration(input: $input)\n }\n":r.fY,"\n mutation grantSourceIdReadAccess($sourceId: String!, $userGroupId: ID!) {\n grantSourceIdReadAccess(sourceId: $sourceId, userGroupId: $userGroupId)\n }\n":r.Yr,"\n mutation revokeSourceIdReadAccess($sourceId: String!, $userGroupId: ID!) {\n revokeSourceIdReadAccess(sourceId: $sourceId, userGroupId: $userGroupId)\n }\n":r.z,"\n mutation CreateCustomDocument($input: CreateCustomDocumentInput!) {\n createCustomDocument(input: $input)\n }\n":r.Gf,"\n query CustomWebDocuments(\n $ids: [ID!]\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n customWebDocuments(\n ids: $ids\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n url\n name\n id\n sourceId\n jobInfo {\n lastJobRun {\n id\n job\n createdAt\n finishedAt\n exitCode\n }\n command\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.wx,"\n mutation DeleteCustomDocument($id: ID!) {\n deleteCustomDocument(id: $id)\n }\n":r.c3,"\n query PresetWebDocuments(\n $ids: [ID!]\n $after: String\n $before: String\n $first: Int\n $last: Int\n $isActive: Boolean\n ) {\n presetWebDocuments(\n ids: $ids\n after: $after\n before: $before\n first: $first\n last: $last\n isActive: $isActive\n ) {\n edges {\n node {\n id\n name\n isActive\n sourceId\n jobInfo {\n lastJobRun {\n id\n job\n createdAt\n finishedAt\n exitCode\n }\n command\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.z1,"\n mutation SetPresetDocumentActive($input: SetPresetDocumentActiveInput!) {\n setPresetDocumentActive(input: $input)\n }\n":r.h_,"\n mutation deleteGitRepository($id: ID!) {\n deleteGitRepository(id: $id)\n }\n":r.TS,"\n mutation createGitRepository($name: String!, $gitUrl: String!) {\n createGitRepository(name: $name, gitUrl: $gitUrl)\n }\n":r.ad,"\n mutation triggerJobRun($command: String!) {\n triggerJobRun(command: $command)\n }\n":r.uk,"\n mutation updateOauthCredential($input: UpdateOAuthCredentialInput!) {\n updateOauthCredential(input: $input)\n }\n":r.m,"\n mutation deleteOauthCredential($provider: OAuthProvider!) {\n deleteOauthCredential(provider: $provider)\n }\n":r.ZH,"\n query OAuthCallbackUrl($provider: OAuthProvider!) {\n oauthCallbackUrl(provider: $provider)\n }\n":r.L$,"\n query OAuthCredential($provider: OAuthProvider!) {\n oauthCredential(provider: $provider) {\n provider\n clientId\n createdAt\n updatedAt\n }\n }\n":r.Fd,"\n mutation updateNetworkSettingMutation($input: NetworkSettingInput!) {\n updateNetworkSetting(input: $input)\n }\n":r.rN,"\n mutation updateSecuritySetting($input: SecuritySettingInput!) {\n updateSecuritySetting(input: $input)\n }\n":r.Nl,"\n query SecuritySetting {\n securitySetting {\n allowedRegisterDomainList\n disableClientSideTelemetry\n }\n }\n":r.rU,"\n mutation UploadLicense($license: String!) {\n uploadLicense(license: $license)\n }\n":r.Yo,"\n mutation ResetLicense {\n resetLicense\n }\n":r.d0,"\n mutation CreateInvitation($email: String!) {\n createInvitation(email: $email)\n }\n":r.ib,"\n mutation DeleteInvitation($id: ID!) {\n deleteInvitation(id: $id)\n }\n":r.YM,"\n mutation updateUserRole($id: ID!, $isAdmin: Boolean!) {\n updateUserRole(id: $id, isAdmin: $isAdmin)\n }\n":r.XF,"\n mutation UpdateUserActive($id: ID!, $active: Boolean!) {\n updateUserActive(id: $id, active: $active)\n }\n":r.dv,"\n mutation generateResetPasswordUrl($userId: ID!) {\n generateResetPasswordUrl(userId: $userId)\n }\n":r.nh,"\n mutation createUserGroup($input: CreateUserGroupInput!) {\n createUserGroup(input: $input)\n }\n":r.e8,"\n mutation DeleteUserGroupMembership($userGroupId: ID!, $userId: ID!) {\n deleteUserGroupMembership(userGroupId: $userGroupId, userId: $userId)\n }\n":r.zD,"\n mutation UpsertUserGroupMembership($input: UpsertUserGroupMembershipInput!) {\n upsertUserGroupMembership(input: $input)\n }\n":r.uI,"\n mutation DeleteUserGroup($id: ID!) {\n deleteUserGroup(id: $id)\n }\n":r.hQ,"\n query GetRegistrationToken {\n registrationToken\n }\n":r.bh,"\n mutation ResetRegistrationToken {\n resetRegistrationToken\n }\n":r.wW,"\n query TestModelConnection($backend: ModelHealthBackend!) {\n testModelConnection(backend: $backend) {\n latencyMs\n }\n }\n":r.rE,"\n query GetDiskUsageStats {\n diskUsageStats {\n events {\n filepath\n sizeKb\n }\n indexedRepositories {\n filepath\n sizeKb\n }\n database {\n filepath\n sizeKb\n }\n models {\n filepath\n sizeKb\n }\n }\n }\n":r.xX,"\n query ListThreads(\n $ids: [ID!]\n $isEphemeral: Boolean\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n threads(\n ids: $ids\n isEphemeral: $isEphemeral\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n userId\n createdAt\n updatedAt\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.qk,"\n mutation passwordReset($input: PasswordResetInput!) {\n passwordReset(input: $input)\n }\n":r.vK,"\n mutation requestPasswordResetEmail($input: RequestPasswordResetEmailInput!) {\n requestPasswordResetEmail(input: $input)\n }\n":r.i8,"\n mutation requestInvitationEmail($input: RequestInvitationInput!) {\n requestInvitationEmail(input: $input) {\n email\n code\n }\n }\n":r.S_,"\n mutation tokenAuth($email: String!, $password: String!) {\n tokenAuth(email: $email, password: $password) {\n accessToken\n refreshToken\n }\n }\n":r.UO,"\n mutation register(\n $name: String!\n $email: String!\n $password1: String!\n $password2: String!\n $invitationCode: String\n ) {\n register(\n name: $name\n email: $email\n password1: $password1\n password2: $password2\n invitationCode: $invitationCode\n ) {\n accessToken\n refreshToken\n }\n }\n":r.YR,"\n query RepositoryGrep(\n $id: ID!\n $kind: RepositoryKind!\n $rev: String\n $query: String!\n ) {\n repositoryGrep(kind: $kind, id: $id, rev: $rev, query: $query) {\n files {\n path\n lines {\n line {\n text\n base64\n }\n byteOffset\n lineNumber\n subMatches {\n bytesStart\n bytesEnd\n }\n }\n }\n elapsedMs\n }\n }\n":r.lq,"\n mutation SetThreadPersisted($threadId: ID!) {\n setThreadPersisted(threadId: $threadId)\n }\n":r.qu,"\n mutation UpdateThreadMessage($input: UpdateMessageInput!) {\n updateThreadMessage(input: $input)\n }\n":r.Tj,"\n mutation ResetUserAuthToken {\n resetUserAuthToken\n }\n":r.qq,"\n query GetLicenseInfo {\n license {\n type\n status\n seats\n seatsUsed\n issuedAt\n expiresAt\n }\n }\n":r.eZ,"\n query MeQuery {\n me {\n id\n authToken\n email\n isAdmin\n isOwner\n isPasswordSet\n name\n }\n }\n":r.fk,"\n query NetworkSetting {\n networkSetting {\n externalUrl\n }\n }\n":r.m2,"\n query GetServerInfo {\n serverInfo {\n isAdminInitialized\n isEmailConfigured\n isChatEnabled\n allowSelfSignup\n isDemoMode\n }\n }\n":r.a,"\n subscription CreateThreadAndRun($input: CreateThreadAndRunInput!) {\n createThreadAndRun(input: $input) {\n __typename\n ... on ThreadCreated {\n id\n }\n ... on ThreadUserMessageCreated {\n id\n }\n ... on ThreadAssistantMessageCreated {\n id\n }\n ... on ThreadRelevantQuestions {\n questions\n }\n ... on ThreadAssistantMessageAttachmentsCode {\n hits {\n code {\n gitUrl\n filepath\n language\n content\n startLine\n }\n scores {\n rrf\n bm25\n embedding\n }\n }\n }\n ... on ThreadAssistantMessageAttachmentsDoc {\n hits {\n doc {\n title\n link\n content\n }\n score\n }\n }\n ... on ThreadAssistantMessageContentDelta {\n delta\n }\n ... on ThreadAssistantMessageCompleted {\n id\n }\n }\n }\n":r.VL,"\n subscription CreateThreadRun($input: CreateThreadRunInput!) {\n createThreadRun(input: $input) {\n __typename\n ... on ThreadCreated {\n id\n }\n ... on ThreadUserMessageCreated {\n id\n }\n ... on ThreadAssistantMessageCreated {\n id\n }\n ... on ThreadRelevantQuestions {\n questions\n }\n ... on ThreadAssistantMessageAttachmentsCode {\n hits {\n code {\n gitUrl\n filepath\n language\n content\n startLine\n }\n scores {\n rrf\n bm25\n embedding\n }\n }\n }\n ... on ThreadAssistantMessageAttachmentsDoc {\n hits {\n doc {\n title\n link\n content\n }\n score\n }\n }\n ... on ThreadAssistantMessageContentDelta {\n delta\n }\n ... on ThreadAssistantMessageCompleted {\n id\n }\n }\n }\n":r.uM,"\n mutation DeleteThreadMessagePair(\n $threadId: ID!\n $userMessageId: ID!\n $assistantMessageId: ID!\n ) {\n deleteThreadMessagePair(\n threadId: $threadId\n userMessageId: $userMessageId\n assistantMessageId: $assistantMessageId\n )\n }\n":r.ou,"\n mutation refreshToken($refreshToken: String!) {\n refreshToken(refreshToken: $refreshToken) {\n accessToken\n refreshToken\n }\n }\n":r.FR,"\n mutation LogoutAllSessions {\n logoutAllSessions\n }\n":r.Il,"\n query ListInvitations(\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n invitations(after: $after, before: $before, first: $first, last: $last) {\n edges {\n node {\n id\n email\n code\n createdAt\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.Xx,"\n query gitRepositories(\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n gitRepositories(\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n name\n gitUrl\n sourceId\n jobInfo {\n lastJobRun {\n id\n job\n createdAt\n finishedAt\n exitCode\n }\n command\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.Mi,"\n query ListJobRuns(\n $ids: [ID!]\n $jobs: [String!]\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n jobRuns(\n ids: $ids\n jobs: $jobs\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n job\n createdAt\n startedAt\n finishedAt\n exitCode\n stdout\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.$S,"\n query GetJobRunStats($jobs: [String!]) {\n jobRunStats(jobs: $jobs) {\n success\n failed\n pending\n }\n }\n":r.np,"\n query ListJobs {\n jobs\n }\n":r.Ax,"\n query ListUsers($after: String, $before: String, $first: Int, $last: Int) {\n users(after: $after, before: $before, first: $first, last: $last) {\n edges {\n node {\n id\n email\n isAdmin\n isOwner\n createdAt\n active\n name\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.by,"\n query DailyStatsInPastYear($users: [ID!]) {\n dailyStatsInPastYear(users: $users) {\n start\n end\n completions\n selects\n views\n }\n }\n":r.Wd,"\n query DailyStats(\n $start: DateTime!\n $end: DateTime!\n $users: [ID!]\n $languages: [Language!]\n ) {\n dailyStats(start: $start, end: $end, users: $users, languages: $languages) {\n start\n end\n completions\n selects\n views\n language\n }\n }\n":r.Sm,"\n query ListIntegrations(\n $ids: [ID!]\n $kind: IntegrationKind\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n integrations(\n ids: $ids\n kind: $kind\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n displayName\n status\n apiBase\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.KZ,"\n query ListIntegratedRepositories(\n $ids: [ID!]\n $kind: IntegrationKind\n $active: Boolean\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n integratedRepositories(\n ids: $ids\n kind: $kind\n active: $active\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n displayName\n gitUrl\n active\n sourceId\n jobInfo {\n lastJobRun {\n id\n job\n createdAt\n finishedAt\n startedAt\n exitCode\n }\n command\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.qt,"\n query RepositoryList {\n repositoryList {\n id\n name\n kind\n gitUrl\n refs {\n name\n commit\n }\n }\n }\n":r.HC,"\n query RepositorySearch(\n $kind: RepositoryKind!\n $id: ID!\n $rev: String\n $pattern: String!\n ) {\n repositorySearch(kind: $kind, id: $id, rev: $rev, pattern: $pattern) {\n type\n path\n indices\n }\n }\n":r.BH,"\n query ContextInfo {\n contextInfo {\n sources {\n id\n sourceKind\n sourceId\n sourceName\n }\n }\n }\n":r.w4,"\n query UserGroups {\n userGroups {\n id\n name\n createdAt\n updatedAt\n members {\n user {\n id\n email\n name\n createdAt\n }\n isGroupAdmin\n createdAt\n updatedAt\n }\n }\n }\n":r.hx,"\n query sourceIdAccessPolicies($sourceId: String!) {\n sourceIdAccessPolicies(sourceId: $sourceId) {\n sourceId\n read {\n id\n name\n }\n }\n }\n":r.NL,"\n query ListThreadMessages(\n $threadId: ID!\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n threadMessages(\n threadId: $threadId\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n threadId\n role\n content\n attachment {\n code {\n gitUrl\n filepath\n language\n content\n startLine\n }\n clientCode {\n filepath\n content\n startLine\n }\n doc {\n title\n link\n content\n }\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.f7};function i(n){var e;return null!==(e=s[n])&&void 0!==e?e:{}}},43240:function(n,e,t){t.d(e,{BX:function(){return r.B}});var r=t(75561)},28312:function(n,e,t){t.d(e,{m:function(){return o}});var r=t(3546),s=t(61200),i=t.n(s),a=t(2578);function o(n){let{timeout:e=2e3,onError:t,onCopyContent:s}=n,[o,u]=r.useState(!1),d=()=>{u(!0),setTimeout(()=>{u(!1)},e)},l=n=>{if("function"==typeof t){null==t||t(n);return}a.A.error("Failed to copy.")};return{isCopied:o,copyToClipboard:n=>{var e;if(n){if(s){s(n),d();return}if(null===(e=navigator.clipboard)||void 0===e?void 0:e.writeText)navigator.clipboard.writeText(n).then(d).catch(l);else{let e=i()(n);e?d():l()}}}}}},24449:function(n,e,t){t.d(e,{S:function(){return o},n:function(){return u}});var r=t(3546),s=t(45391),i=t(16784);let a=n=>{let e=(0,i.d)(n);r.useEffect(()=>()=>{e.current()},[])};function o(n,e,t){let o=(0,i.d)(n),u=r.useMemo(()=>(0,s.Z)(function(){for(var n=arguments.length,e=Array(n),t=0;t{var n;null==t||null===(n=t.onUnmount)||void 0===n||n.call(t,u),u.cancel()}),{run:u,cancel:u.cancel,flush:u.flush}}function u(n,e,t){let[s,i]=r.useState(n),{run:a}=o(()=>{i(n)},e,t);return r.useEffect(()=>{a()},[n]),[s,i]}},16784:function(n,e,t){t.d(e,{d:function(){return s}});var r=t(3546);function s(n){let e=r.useRef(n);return e.current=n,e}},98454:function(n,e,t){t.d(e,{P:function(){return a}});var r=t(40055),s=t(43240);let i=(0,s.BX)("\n query MeQuery {\n me {\n id\n authToken\n email\n isAdmin\n isOwner\n isPasswordSet\n name\n }\n }\n"),a=()=>(0,r.aM)({query:i})},80605:function(n,e,t){t.d(e,{UA:function(){return c},Uw:function(){return d},c7:function(){return u},jJ:function(){return l},xG:function(){return o}});var r=t(40055),s=t(43240);let i=(0,s.BX)("\n query GetServerInfo {\n serverInfo {\n isAdminInitialized\n isEmailConfigured\n isChatEnabled\n allowSelfSignup\n isDemoMode\n }\n }\n"),a=()=>{let[{data:n}]=(0,r.aM)({query:i});return null==n?void 0:n.serverInfo},o=()=>{var n;return null===(n=a())||void 0===n?void 0:n.isChatEnabled},u=()=>{var n;return null===(n=a())||void 0===n?void 0:n.isAdminInitialized},d=()=>{var n;return null===(n=a())||void 0===n?void 0:n.isEmailConfigured},l=()=>{var n;return null===(n=a())||void 0===n?void 0:n.allowSelfSignup},c=()=>{var n;return null===(n=a())||void 0===n?void 0:n.isDemoMode}},91302:function(n,e,t){t.d(e,{Dp:function(){return m},Ho:function(){return h},QJ:function(){return S},av:function(){return w},kP:function(){return k},zq:function(){return y}});var r,s,i=t(36164),a=t(3546),o=t(11978),u=t(24426),d=t.n(u),l=t(43240),c=t(80605),f=t(11634),p=t(66794);function g(n,e){var t,r;let i=function(n,e){switch(e.type){case s.SignIn:case s.Refresh:return{status:"authenticated",data:e.data};case s.SignOut:return{status:"unauthenticated",data:void 0}}}(0,e);return n.status==i.status&&(t=n.data,r=i.data,(null==t?void 0:t.accessToken)===(null==r?void 0:r.accessToken)&&(null==t?void 0:t.refreshToken)===(null==r?void 0:r.refreshToken))?n:i}(r=s||(s={}))[r.SignIn=0]="SignIn",r[r.SignOut=1]="SignOut",r[r.Refresh=2]="Refresh";let $=a.createContext({}),m=(0,l.BX)("\n mutation refreshToken($refreshToken: String!) {\n refreshToken(refreshToken: $refreshToken) {\n accessToken\n refreshToken\n }\n }\n"),v=(0,l.BX)("\n mutation LogoutAllSessions {\n logoutAllSessions\n }\n"),h=n=>{let{children:e}=n,[t,r]=a.useState(!1),[o]=d()(p.nd,void 0),[u,l]=a.useReducer(g,{status:"loading",data:void 0});a.useEffect(()=>{(null==o?void 0:o.accessToken)&&(null==o?void 0:o.refreshToken)?l({type:s.SignIn,data:o}):l({type:s.SignOut}),r(!0)},[]),a.useEffect(()=>{!t||((null==o?void 0:o.accessToken)&&(null==o?void 0:o.refreshToken)?l({type:s.Refresh,data:o}):(null==o?void 0:o.accessToken)||(null==o?void 0:o.refreshToken)||l({type:s.SignOut}))},[o]);let c=a.useMemo(()=>{var n;return(null==u?void 0:u.status)=="authenticated"?{data:{accessToken:u.data.accessToken},status:u.status}:{status:null!==(n=null==u?void 0:u.status)&&void 0!==n?n:"loading",data:null}},[u]);return(0,i.jsx)($.Provider,{value:{authState:u,dispatch:l,session:c},children:e})};class I extends Error{constructor(){super("AuthProvider is missing. Please add the AuthProvider at root level")}}function b(){let n=a.useContext($);if(!n)throw new I;return n}function y(){let{dispatch:n}=b(),[e,t]=d()(p.nd,void 0);return async e=>(t({accessToken:e.accessToken,refreshToken:e.refreshToken}),n({type:s.SignIn,data:e}),!0)}function S(){let n=(0,f.D)(v),{dispatch:e}=b(),[t,r]=d()(p.nd,void 0);return async()=>{await n(),r(void 0),e({type:s.SignOut})}}function k(){let{session:n}=b();return n}let A=["/auth/signin","/auth/signup","/auth/reset-password"];function w(){let n=(0,c.c7)(),e=(0,o.useRouter)(),t=(0,o.usePathname)(),r=(0,o.useSearchParams)(),{data:s,status:i}=k();return a.useEffect(()=>{if("loading"===i||"authenticated"===i||void 0===n)return;let s="/auth/signup"===t&&"true"===r.get("isAdmin");if(!s&&!n)return e.replace("/auth/signup?isAdmin=true");A.includes(t)||e.replace("/auth/signin")},[n,i]),s}},3765:function(n,e,t){t.d(e,{Z:function(){return u}});var r=t(44745),s=t(57778),i=t(79716),a=t(91302),o=t(66794);async function u(n,e){var t;let r=null!==(t=null==e?void 0:e.customFetch)&&void 0!==t?t:window.fetch;if(function(n){var e;if(n.startsWith("/oauth/providers"))return!1;let t=null===(e=(0,o.bW)())||void 0===e?void 0:e.accessToken;if(!t)return!0;try{let{exp:n}=(0,i.o)(t);return(0,o.pw)(n)}catch(n){return!0}}(n))return o.gN.refreshToken(d).then(t=>f(n,e));let s=await r(n,l(e));return 401===s.status?(o.gN.clearAccessToken(),o.gN.refreshToken(d).then(t=>f(n,e))):p(s,e)}async function d(){var n,e;let t=null===(n=(0,o.bW)())||void 0===n?void 0:n.refreshToken;if(!t)return;let r=await c(t);return null==r?void 0:null===(e=r.data)||void 0===e?void 0:e.refreshToken}function l(n){var e;let t=new Headers(null==n?void 0:n.headers);return t.append("authorization","Bearer ".concat(null===(e=(0,o.bW)())||void 0===e?void 0:e.accessToken)),{...n||{},headers:t}}async function c(n){let e=new r.KU({url:"/graphql",requestPolicy:"network-only",exchanges:[r.Ek]}),t=e.createRequestOperation("mutation",(0,s.h)(a.Dp,{refreshToken:n}));return e.executeMutation(t)}function f(n,e){var t;let r=null!==(t=null==e?void 0:e.customFetch)&&void 0!==t?t:window.fetch;return r(n,l(e)).then(n=>p(n,e))}function p(n,e){return(null==n?void 0:n.ok)?(null==e?void 0:e.responseFormatter)?e.responseFormatter(n):(null==e?void 0:e.responseFormat)==="blob"?n.blob():n.json():(null==e?void 0:e.errorHandler)?e.errorHandler(n):void 0}},11634:function(n,e,t){t.d(e,{D:function(){return g},L:function(){return $}});var r=t(22365),s=t(28552),i=t(81013),a=t(17522),o=t(79716),u=t(74630),d=t(40055),l=t(44745),c=t(91302),f=t(70410),p=t(66794);function g(n,e){var t;let[r,s]=(0,d.Db)(n),i=(null==e?void 0:e.form)?(t=e.form,n=>{let{graphQLErrors:e=[]}=n;for(let n of e)if(n.extensions&&n.extensions["validation-errors"]){let e=n.extensions["validation-errors"];for(let n of e.errors)t.setError(n.path,n)}else(null==n?void 0:n.originalError)?t.setError("root",n.originalError):(null==n?void 0:n.message)&&t.setError("root",{message:n.message})}):void 0,a=async(n,t)=>{let r;try{if(null==(r=await s(n,t))?void 0:r.error)i&&i(r.error),(null==e?void 0:e.onError)&&e.onError(r.error);else if(!(0,u.Z)(null==r?void 0:r.data)){var a;null==e||null===(a=e.onCompleted)||void 0===a||a.call(e,r.data)}}catch(n){(null==e?void 0:e.onError)&&e.onError(n);return}return r};return a}let $=new l.KU({url:"/graphql",requestPolicy:"cache-and-network",exchanges:[(0,s.HG)({keys:{CompletionStats:()=>null,ServerInfo:()=>null,RepositorySearch:()=>null,RepositoryList:()=>null,RepositoryGrep:()=>null,GrepLine:()=>null,GrepFile:()=>null,GrepTextOrBase64:()=>null,GrepSubMatch:()=>null,GitReference:()=>null,MessageAttachment:()=>null,MessageAttachmentCode:()=>null,MessageAttachmentDoc:()=>null,NetworkSetting:()=>null,ContextInfo:()=>null},resolvers:{Query:{invitations:(0,i.N)(),gitRepositories:(0,i.N)(),webCrawlerUrls:(0,i.N)(),integrations:(0,i.N)(),threads:(0,i.N)()}},updates:{Mutation:{deleteInvitation(n,e,t,r){n.deleteInvitation&&t.inspectFields("Query").filter(n=>"invitations"===n.fieldName).forEach(n=>{t.updateQuery({query:f.lE,variables:n.arguments},n=>{var t;return(null==n?void 0:null===(t=n.invitations)||void 0===t?void 0:t.edges)&&(n.invitations.edges=n.invitations.edges.filter(n=>n.node.id!==e.id)),n})})},deleteGitRepository(n,e,t,r){n.deleteGitRepository&&t.inspectFields("Query").filter(n=>"gitRepositories"===n.fieldName).forEach(n=>{t.updateQuery({query:f.S1,variables:n.arguments},n=>{var t;return(null==n?void 0:null===(t=n.gitRepositories)||void 0===t?void 0:t.edges)&&(n.gitRepositories.edges=n.gitRepositories.edges.filter(n=>n.node.id!==e.id)),n})})},deleteIntegration(n,e,t,r){n.deleteIntegration&&t.inspectFields("Query").filter(n=>"integrations"===n.fieldName).forEach(n=>{t.updateQuery({query:f.kb,variables:n.arguments},n=>((null==n?void 0:n.integrations)&&(n.integrations.edges=n.integrations.edges.filter(n=>n.node.id!==e.id)),n))})},createIntegration(n,e,t){let r="Query";t.inspectFields(r).filter(n=>{var t,r,s;return"integrations"===n.fieldName&&!!(null===(t=n.arguments)||void 0===t?void 0:t.kind)&&(null===(r=n.arguments)||void 0===r?void 0:r.kind)===(null==e?void 0:null===(s=e.input)||void 0===s?void 0:s.kind)}).forEach(n=>{t.invalidate(r,n.fieldName,n.arguments)})},upsertUserGroupMembership(n,e,t,r){let{userGroupId:s,userId:i,isGroupAdmin:a}=e.input,{user:o,isInsert:u}=r.variables.extraParams||{};n.upsertUserGroupMembership&&t.updateQuery({query:f.gI},n=>((null==n?void 0:n.userGroups)&&(n.userGroups=n.userGroups.map(n=>{if(n.id!==s)return n;let e=[...n.members];if(u){let n=new Date().toISOString();e.push({user:{...o,__typename:"UserSecured"},isGroupAdmin:a,createdAt:n,updatedAt:n,__typename:"UserGroupMembership"})}else e=e.map(n=>n.user.id!==i?n:{...n,isGroupAdmin:a});return{...n,members:e}})),n))},deleteUserGroupMembership(n,e,t,r){let{userGroupId:s,userId:i}=e;n.deleteUserGroupMembership&&t.updateQuery({query:f.gI},n=>((null==n?void 0:n.userGroups)&&(n.userGroups=n.userGroups.map(n=>{if(n.id!==s)return n;let e=[...n.members].filter(n=>n.user.id!==i);return{...n,members:e}})),n))},grantSourceIdReadAccess(n,e,t,r){if(n.grantSourceIdReadAccess){let{sourceId:n}=e;t.inspectFields("Query").filter(e=>{var t;return"sourceIdAccessPolicies"===e.fieldName&&(null===(t=e.arguments)||void 0===t?void 0:t.sourceId)===n}).forEach(n=>{t.updateQuery({query:f.hA,variables:n.arguments},n=>{var t;if(null==n?void 0:null===(t=n.sourceIdAccessPolicies)||void 0===t?void 0:t.read){let{userGroupName:t}=r.variables.extraParams||{};n.sourceIdAccessPolicies.read=[...n.sourceIdAccessPolicies.read,{__typename:"UserGroup",id:e.userGroupId,name:t}]}return n})})}},revokeSourceIdReadAccess(n,e,t,r){if(n.revokeSourceIdReadAccess){let{userGroupId:n,sourceId:r}=e;t.inspectFields("Query").filter(n=>{var e;return"sourceIdAccessPolicies"===n.fieldName&&(null===(e=n.arguments)||void 0===e?void 0:e.sourceId)===r}).forEach(e=>{t.updateQuery({query:f.hA,variables:e.arguments},e=>{var t,s;return(null==e?void 0:null===(t=e.sourceIdAccessPolicies)||void 0===t?void 0:t.sourceId)===r&&(null==e?void 0:null===(s=e.sourceIdAccessPolicies)||void 0===s?void 0:s.read)&&(e.sourceIdAccessPolicies.read=e.sourceIdAccessPolicies.read.filter(e=>e.id!==n)),e})})}}}},optimistic:{upsertUserGroupMembership:()=>!0,deleteUserGroupMembership:()=>!0,grantSourceIdReadAccess:()=>!0,revokeSourceIdReadAccess:()=>!0}}),(0,r.M)(async n=>{let e=(0,p.bW)(),t=null==e?void 0:e.accessToken,r=null==e?void 0:e.refreshToken;return{addAuthToOperation(e){let s=(0,p.bW)(),i=(0,p.jW)();if(t=null==s?void 0:s.accessToken,r=null==s?void 0:s.refreshToken,t)return n.appendHeaders(e,{Authorization:"Bearer ".concat(t)});if(i){let t={Authorization:"Bearer ".concat(i.authorization),...i.headers};return n.appendHeaders(e,t)}return e},didAuthError(n,e){let t=n.graphQLErrors.some(n=>{var e;return(null==n?void 0:null===(e=n.extensions)||void 0===e?void 0:e.code)==="UNAUTHORIZED"});return t&&p.gN.clearAccessToken(),t},willAuthError(n){let e=(0,p.bW)(),s=(0,p.jW)();if(t=null==e?void 0:e.accessToken,r=null==e?void 0:e.refreshToken,"query"===n.kind&&n.query.definitions.some(n=>{var e;return"OperationDefinition"===n.kind&&(null===(e=n.name)||void 0===e?void 0:e.value)&&["GetServerInfo"].includes(n.name.value)})||"mutation"===n.kind&&n.query.definitions.some(n=>{var e;return"OperationDefinition"===n.kind&&(null===(e=n.name)||void 0===e?void 0:e.value)&&["tokenAuth","register"].includes(n.name.value)})||r&&"mutation"===n.kind&&n.query.definitions.some(n=>{var e;return"OperationDefinition"===n.kind&&(null==n?void 0:null===(e=n.name)||void 0===e?void 0:e.value)==="refreshToken"}))return!1;if(t)try{let{exp:n}=(0,o.o)(t);return(0,p.pw)(n)}catch(n){return!0}else if(s)return!(null==s?void 0:s.authorization);else return p.gN.clearAccessToken(),!0},refreshAuth:async()=>p.gN.refreshToken(async()=>{var e;let t=null===(e=(0,p.bW)())||void 0===e?void 0:e.refreshToken;if(t)return n.mutate(c.Dp,{refreshToken:t}).then(n=>{var e;return null==n?void 0:null===(e=n.data)||void 0===e?void 0:e.refreshToken})})}}),(0,l.Dk)({onError(n){n.message.startsWith("[GraphQL]")&&(n.message=n.message.replace("[GraphQL]","").trim())}}),l.Ek,(0,l.pV)({forwardSubscription(n,e){var t,r,s;let i=null!==(s=null===(r=e.context.fetchOptions)||void 0===r?void 0:null===(t=r.headers)||void 0===t?void 0:t.Authorization)&&void 0!==s?s:"",o=window.location.protocol,u=window.location.host,d=(0,a.eI)({url:"".concat("https:"===o?"wss:":"ws:","//").concat(u,"/subscriptions"),connectionParams:{authorization:i}}),l={...n,query:n.query||""};return{subscribe(n){let e=d.subscribe(l,n);return{unsubscribe:e}}}}})]})},70410:function(n,e,t){t.d(e,{Cl:function(){return c},D7:function(){return $},DQ:function(){return u},GG:function(){return a},Gx:function(){return m},S1:function(){return i},TH:function(){return d},XL:function(){return I},Y6:function(){return l},gI:function(){return v},hA:function(){return h},kb:function(){return f},lE:function(){return s},r4:function(){return b},ts:function(){return p},yB:function(){return o},zz:function(){return g}});var r=t(43240);let s=(0,r.BX)("\n query ListInvitations(\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n invitations(after: $after, before: $before, first: $first, last: $last) {\n edges {\n node {\n id\n email\n code\n createdAt\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),i=(0,r.BX)("\n query gitRepositories(\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n gitRepositories(\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n name\n gitUrl\n sourceId\n jobInfo {\n lastJobRun {\n id\n job\n createdAt\n finishedAt\n exitCode\n }\n command\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),a=(0,r.BX)("\n query ListJobRuns(\n $ids: [ID!]\n $jobs: [String!]\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n jobRuns(\n ids: $ids\n jobs: $jobs\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n job\n createdAt\n startedAt\n finishedAt\n exitCode\n stdout\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),o=(0,r.BX)("\n query GetJobRunStats($jobs: [String!]) {\n jobRunStats(jobs: $jobs) {\n success\n failed\n pending\n }\n }\n"),u=(0,r.BX)("\n query ListJobs {\n jobs\n }\n"),d=(0,r.BX)("\n query ListUsers($after: String, $before: String, $first: Int, $last: Int) {\n users(after: $after, before: $before, first: $first, last: $last) {\n edges {\n node {\n id\n email\n isAdmin\n isOwner\n createdAt\n active\n name\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),l=(0,r.BX)("\n query DailyStatsInPastYear($users: [ID!]) {\n dailyStatsInPastYear(users: $users) {\n start\n end\n completions\n selects\n views\n }\n }\n"),c=(0,r.BX)("\n query DailyStats(\n $start: DateTime!\n $end: DateTime!\n $users: [ID!]\n $languages: [Language!]\n ) {\n dailyStats(start: $start, end: $end, users: $users, languages: $languages) {\n start\n end\n completions\n selects\n views\n language\n }\n }\n"),f=(0,r.BX)("\n query ListIntegrations(\n $ids: [ID!]\n $kind: IntegrationKind\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n integrations(\n ids: $ids\n kind: $kind\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n displayName\n status\n apiBase\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),p=(0,r.BX)("\n query ListIntegratedRepositories(\n $ids: [ID!]\n $kind: IntegrationKind\n $active: Boolean\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n integratedRepositories(\n ids: $ids\n kind: $kind\n active: $active\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n displayName\n gitUrl\n active\n sourceId\n jobInfo {\n lastJobRun {\n id\n job\n createdAt\n finishedAt\n startedAt\n exitCode\n }\n command\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),g=(0,r.BX)("\n query RepositoryList {\n repositoryList {\n id\n name\n kind\n gitUrl\n refs {\n name\n commit\n }\n }\n }\n"),$=(0,r.BX)("\n query RepositorySearch(\n $kind: RepositoryKind!\n $id: ID!\n $rev: String\n $pattern: String!\n ) {\n repositorySearch(kind: $kind, id: $id, rev: $rev, pattern: $pattern) {\n type\n path\n indices\n }\n }\n"),m=(0,r.BX)("\n query ContextInfo {\n contextInfo {\n sources {\n id\n sourceKind\n sourceId\n sourceName\n }\n }\n }\n"),v=(0,r.BX)("\n query UserGroups {\n userGroups {\n id\n name\n createdAt\n updatedAt\n members {\n user {\n id\n email\n name\n createdAt\n }\n isGroupAdmin\n createdAt\n updatedAt\n }\n }\n }\n"),h=(0,r.BX)("\n query sourceIdAccessPolicies($sourceId: String!) {\n sourceIdAccessPolicies(sourceId: $sourceId) {\n sourceId\n read {\n id\n name\n }\n }\n }\n"),I=(0,r.BX)("\n query ListThreads(\n $ids: [ID!]\n $isEphemeral: Boolean\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n threads(\n ids: $ids\n isEphemeral: $isEphemeral\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n userId\n createdAt\n updatedAt\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),b=(0,r.BX)("\n query ListThreadMessages(\n $threadId: ID!\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n threadMessages(\n threadId: $threadId\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n threadId\n role\n content\n attachment {\n code {\n gitUrl\n filepath\n language\n content\n startLine\n }\n clientCode {\n filepath\n content\n startLine\n }\n doc {\n title\n link\n content\n }\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n")},66794:function(n,e,t){t.d(e,{bW:function(){return u},gN:function(){return $},jW:function(){return p},nd:function(){return a},pw:function(){return c},zr:function(){return g}});var r=t(79716),s=t(74630),i=t(1544);let a="_tabby_auth",o="_tabby_chat_sdk_fetcher_options",u=()=>{if((0,i.S_)()){let n=localStorage.getItem(a);if(n)try{return JSON.parse(n)}catch(n){}}},d=n=>{localStorage.setItem(a,JSON.stringify(n))},l=()=>{localStorage.removeItem(a),window.dispatchEvent(new StorageEvent("storage",{storageArea:window.localStorage,url:window.location.href,key:a}))},c=n=>!!(0,s.Z)(n)||Date.now()>1e3*n,f=n=>!(0,s.Z)(n)&&Date.now()-1e3*n<6e4,p=()=>{try{let n=sessionStorage.getItem(o);if(!n)return;return JSON.parse(n)}catch(n){return}},g=n=>{if(n)try{sessionStorage.setItem(o,JSON.stringify(n))}catch(n){sessionStorage.removeItem(o)}},$=new class{clearAccessToken(){let n=u();n&&d({...n,accessToken:""})}async refreshToken(n){try{var e;if(void 0===(null===(e=navigator)||void 0===e?void 0:e.locks))throw console.error("The Web Locks API is not supported in your browser. Please upgrade to a newer browser version."),Error();await navigator.locks.request("_tabby_auth_lock",async()=>{let e;let t=u(),s=null==t?void 0:t.accessToken,i=null==t?void 0:t.refreshToken;if(s){let{iat:i}=(0,r.o)(s);e=f(i)?t:await n()}else i&&(e=await n());e?d(e):l()})}catch(n){l()}}}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3821,3240,4656],{48537:function(n,e,t){t.d(e,{q:function(){return o}});var r=t(36164);t(3546);var s=t(28312),i=t(31458),a=t(81565);function o(n){let{className:e,value:t,onCopyContent:o,text:u,...d}=n,{isCopied:l,copyToClipboard:c}=(0,s.m)({timeout:2e3,onCopyContent:o});return t?(0,r.jsxs)(i.z,{variant:"ghost",size:u?"default":"icon",className:e,onClick:()=>{l||c(t)},...d,children:[l?(0,r.jsx)(a.IconCheck,{className:"text-green-600"}):(0,r.jsx)(a.IconCopy,{}),u&&(0,r.jsx)("span",{children:u}),!u&&(0,r.jsx)("span",{className:"sr-only",children:"Copy"})]}):null}},90379:function(n,e,t){t.d(e,{PF:function(){return u},cg:function(){return a},tB:function(){return o}});var r=t(36164),s=t(1544),i=t(3448);let a=n=>{let{className:e,...t}=n;return(0,r.jsxs)("div",{className:(0,s.cn)("space-y-3",e),...t,children:[(0,r.jsx)(i.O,{className:"h-4 w-full"}),(0,r.jsx)(i.O,{className:"h-4 w-full"}),(0,r.jsx)(i.O,{className:"h-4 w-full"}),(0,r.jsx)(i.O,{className:"h-4 w-full"})]})},o=n=>{let{className:e,...t}=n;return(0,r.jsx)(i.O,{className:(0,s.cn)("h-4 w-full",e),...t})},u=n=>{let{className:e,...t}=n;return(0,r.jsxs)("div",{className:(0,s.cn)("flex flex-col gap-3",e),...t,children:[(0,r.jsx)(i.O,{className:"h-4 w-[20%]"}),(0,r.jsx)(i.O,{className:"h-4 w-full"}),(0,r.jsx)(i.O,{className:"h-4 w-[20%]"}),(0,r.jsx)(i.O,{className:"h-4 w-full"})]})}},31458:function(n,e,t){t.d(e,{d:function(){return u},z:function(){return d}});var r=t(36164),s=t(3546),i=t(74047),a=t(14375),o=t(1544);let u=(0,a.j)("inline-flex items-center justify-center rounded-md text-sm font-medium shadow ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-md hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90","hover-destructive":"shadow-none hover:bg-destructive/90 hover:text-destructive-foreground",outline:"border border-input hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"shadow-none hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 shadow-none hover:underline"},size:{default:"h-8 px-4 py-2",sm:"h-8 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-8 w-8 p-0"}},defaultVariants:{variant:"default",size:"default"}}),d=s.forwardRef((n,e)=>{let{className:t,variant:s,size:a,asChild:d=!1,...l}=n,c=d?i.g7:"button";return(0,r.jsx)(c,{className:(0,o.cn)(u({variant:s,size:a,className:t})),ref:e,...l})});d.displayName="Button"},82394:function(n,e,t){t.d(e,{I:function(){return a}});var r=t(36164),s=t(3546),i=t(1544);let a=s.forwardRef((n,e)=>{let{className:t,type:s,...a}=n;return(0,r.jsx)("input",{type:s,className:(0,i.cn)("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",t),ref:e,...a})});a.displayName="Input"},11208:function(n,e,t){t.d(e,{Z:function(){return o}});var r=t(36164),s=t(3546),i=t(74225),a=t(1544);let o=s.forwardRef((n,e)=>{let{className:t,orientation:s="horizontal",decorative:o=!0,...u}=n;return(0,r.jsx)(i.f,{ref:e,decorative:o,orientation:s,className:(0,a.cn)("shrink-0 bg-border","horizontal"===s?"h-[1px] w-full":"h-full w-[1px]",t),...u})});o.displayName=i.f.displayName},3448:function(n,e,t){t.d(e,{O:function(){return i}});var r=t(36164),s=t(1544);function i(n){let{className:e,...t}=n;return(0,r.jsx)("div",{className:(0,s.cn)("h-4 animate-pulse rounded-md bg-border",e),...t})}},29:function(n,e,t){t.d(e,{_v:function(){return l},aJ:function(){return d},pn:function(){return o},u:function(){return u}});var r=t(36164),s=t(3546),i=t(44421),a=t(1544);let o=i.zt,u=i.fC,d=i.xz,l=s.forwardRef((n,e)=>{let{className:t,sideOffset:s=4,...o}=n;return(0,r.jsx)(i.VY,{ref:e,sideOffset:s,className:(0,a.cn)("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-xs font-medium text-popover-foreground shadow-md animate-in fade-in-50 data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1",t),...o})});l.displayName=i.VY.displayName},75561:function(n,e,t){t.d(e,{B:function(){return i}});var r=t(18500);let s={"\n query ListUserEvents(\n $after: String\n $before: String\n $first: Int\n $last: Int\n $start: DateTime!\n $end: DateTime!\n $users: [ID!]\n ) {\n userEvents(\n after: $after\n before: $before\n first: $first\n last: $last\n start: $start\n end: $end\n users: $users\n ) {\n edges {\n node {\n id\n userId\n createdAt\n kind\n payload\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.UQ,"\n mutation uploadUserAvatarBase64($id: ID!, $avatarBase64: String!) {\n uploadUserAvatarBase64(id: $id, avatarBase64: $avatarBase64)\n }\n":r.eI,"\n mutation UpdateUserName($id: ID!, $name: String!) {\n updateUserName(id: $id, name: $name)\n }\n":r.DQ,"\n mutation PasswordChange($input: PasswordChangeInput!) {\n passwordChange(input: $input)\n }\n":r.oZ,"\n mutation updateEmailSetting($input: EmailSettingInput!) {\n updateEmailSetting(input: $input)\n }\n":r.gl,"\n mutation deleteEmailSetting {\n deleteEmailSetting\n }\n":r.wZ,"\n mutation SendTestEmail($to: String!) {\n sendTestEmail(to: $to)\n }\n":r.nI,"\n query emailSetting {\n emailSetting {\n smtpUsername\n smtpServer\n fromAddress\n encryption\n authMethod\n smtpPort\n }\n }\n":r.k6,"\n mutation UpdateIntegration($input: UpdateIntegrationInput!) {\n updateIntegration(input: $input)\n }\n":r.fc,"\n mutation DeleteIntegration($id: ID!, $kind: IntegrationKind!) {\n deleteIntegration(id: $id, kind: $kind)\n }\n":r.AU,"\n mutation UpdateIntegratedRepositoryActive($id: ID!, $active: Boolean!) {\n updateIntegratedRepositoryActive(id: $id, active: $active)\n }\n":r.o7,"\n mutation CreateIntegration($input: CreateIntegrationInput!) {\n createIntegration(input: $input)\n }\n":r.fY,"\n mutation grantSourceIdReadAccess($sourceId: String!, $userGroupId: ID!) {\n grantSourceIdReadAccess(sourceId: $sourceId, userGroupId: $userGroupId)\n }\n":r.Yr,"\n mutation revokeSourceIdReadAccess($sourceId: String!, $userGroupId: ID!) {\n revokeSourceIdReadAccess(sourceId: $sourceId, userGroupId: $userGroupId)\n }\n":r.z,"\n mutation CreateCustomDocument($input: CreateCustomDocumentInput!) {\n createCustomDocument(input: $input)\n }\n":r.Gf,"\n query CustomWebDocuments(\n $ids: [ID!]\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n customWebDocuments(\n ids: $ids\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n url\n name\n id\n sourceId\n jobInfo {\n lastJobRun {\n id\n job\n createdAt\n finishedAt\n exitCode\n }\n command\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.wx,"\n mutation DeleteCustomDocument($id: ID!) {\n deleteCustomDocument(id: $id)\n }\n":r.c3,"\n query PresetWebDocuments(\n $ids: [ID!]\n $after: String\n $before: String\n $first: Int\n $last: Int\n $isActive: Boolean\n ) {\n presetWebDocuments(\n ids: $ids\n after: $after\n before: $before\n first: $first\n last: $last\n isActive: $isActive\n ) {\n edges {\n node {\n id\n name\n isActive\n sourceId\n jobInfo {\n lastJobRun {\n id\n job\n createdAt\n finishedAt\n exitCode\n }\n command\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.z1,"\n mutation SetPresetDocumentActive($input: SetPresetDocumentActiveInput!) {\n setPresetDocumentActive(input: $input)\n }\n":r.h_,"\n mutation deleteGitRepository($id: ID!) {\n deleteGitRepository(id: $id)\n }\n":r.TS,"\n mutation createGitRepository($name: String!, $gitUrl: String!) {\n createGitRepository(name: $name, gitUrl: $gitUrl)\n }\n":r.ad,"\n mutation triggerJobRun($command: String!) {\n triggerJobRun(command: $command)\n }\n":r.uk,"\n mutation updateOauthCredential($input: UpdateOAuthCredentialInput!) {\n updateOauthCredential(input: $input)\n }\n":r.m,"\n mutation deleteOauthCredential($provider: OAuthProvider!) {\n deleteOauthCredential(provider: $provider)\n }\n":r.ZH,"\n query OAuthCallbackUrl($provider: OAuthProvider!) {\n oauthCallbackUrl(provider: $provider)\n }\n":r.L$,"\n query OAuthCredential($provider: OAuthProvider!) {\n oauthCredential(provider: $provider) {\n provider\n clientId\n createdAt\n updatedAt\n }\n }\n":r.Fd,"\n mutation updateNetworkSettingMutation($input: NetworkSettingInput!) {\n updateNetworkSetting(input: $input)\n }\n":r.rN,"\n mutation updateSecuritySetting($input: SecuritySettingInput!) {\n updateSecuritySetting(input: $input)\n }\n":r.Nl,"\n query SecuritySetting {\n securitySetting {\n allowedRegisterDomainList\n disableClientSideTelemetry\n }\n }\n":r.rU,"\n mutation UploadLicense($license: String!) {\n uploadLicense(license: $license)\n }\n":r.Yo,"\n mutation ResetLicense {\n resetLicense\n }\n":r.d0,"\n mutation CreateInvitation($email: String!) {\n createInvitation(email: $email)\n }\n":r.ib,"\n mutation DeleteInvitation($id: ID!) {\n deleteInvitation(id: $id)\n }\n":r.YM,"\n mutation updateUserRole($id: ID!, $isAdmin: Boolean!) {\n updateUserRole(id: $id, isAdmin: $isAdmin)\n }\n":r.XF,"\n mutation UpdateUserActive($id: ID!, $active: Boolean!) {\n updateUserActive(id: $id, active: $active)\n }\n":r.dv,"\n mutation generateResetPasswordUrl($userId: ID!) {\n generateResetPasswordUrl(userId: $userId)\n }\n":r.nh,"\n mutation createUserGroup($input: CreateUserGroupInput!) {\n createUserGroup(input: $input)\n }\n":r.e8,"\n mutation DeleteUserGroupMembership($userGroupId: ID!, $userId: ID!) {\n deleteUserGroupMembership(userGroupId: $userGroupId, userId: $userId)\n }\n":r.zD,"\n mutation UpsertUserGroupMembership($input: UpsertUserGroupMembershipInput!) {\n upsertUserGroupMembership(input: $input)\n }\n":r.uI,"\n mutation DeleteUserGroup($id: ID!) {\n deleteUserGroup(id: $id)\n }\n":r.hQ,"\n query GetRegistrationToken {\n registrationToken\n }\n":r.bh,"\n mutation ResetRegistrationToken {\n resetRegistrationToken\n }\n":r.wW,"\n query TestModelConnection($backend: ModelHealthBackend!) {\n testModelConnection(backend: $backend) {\n latencyMs\n }\n }\n":r.rE,"\n query GetDiskUsageStats {\n diskUsageStats {\n events {\n filepath\n sizeKb\n }\n indexedRepositories {\n filepath\n sizeKb\n }\n database {\n filepath\n sizeKb\n }\n models {\n filepath\n sizeKb\n }\n }\n }\n":r.xX,"\n query ListThreads(\n $ids: [ID!]\n $isEphemeral: Boolean\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n threads(\n ids: $ids\n isEphemeral: $isEphemeral\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n userId\n createdAt\n updatedAt\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.qk,"\n mutation passwordReset($input: PasswordResetInput!) {\n passwordReset(input: $input)\n }\n":r.vK,"\n mutation requestPasswordResetEmail($input: RequestPasswordResetEmailInput!) {\n requestPasswordResetEmail(input: $input)\n }\n":r.i8,"\n mutation requestInvitationEmail($input: RequestInvitationInput!) {\n requestInvitationEmail(input: $input) {\n email\n code\n }\n }\n":r.S_,"\n mutation tokenAuth($email: String!, $password: String!) {\n tokenAuth(email: $email, password: $password) {\n accessToken\n refreshToken\n }\n }\n":r.UO,"\n mutation register(\n $name: String!\n $email: String!\n $password1: String!\n $password2: String!\n $invitationCode: String\n ) {\n register(\n name: $name\n email: $email\n password1: $password1\n password2: $password2\n invitationCode: $invitationCode\n ) {\n accessToken\n refreshToken\n }\n }\n":r.YR,"\n query RepositoryGrep(\n $id: ID!\n $kind: RepositoryKind!\n $rev: String\n $query: String!\n ) {\n repositoryGrep(kind: $kind, id: $id, rev: $rev, query: $query) {\n files {\n path\n lines {\n line {\n text\n base64\n }\n byteOffset\n lineNumber\n subMatches {\n bytesStart\n bytesEnd\n }\n }\n }\n elapsedMs\n }\n }\n":r.lq,"\n mutation SetThreadPersisted($threadId: ID!) {\n setThreadPersisted(threadId: $threadId)\n }\n":r.qu,"\n mutation UpdateThreadMessage($input: UpdateMessageInput!) {\n updateThreadMessage(input: $input)\n }\n":r.Tj,"\n mutation ResetUserAuthToken {\n resetUserAuthToken\n }\n":r.qq,"\n query GetLicenseInfo {\n license {\n type\n status\n seats\n seatsUsed\n issuedAt\n expiresAt\n }\n }\n":r.eZ,"\n query MeQuery {\n me {\n id\n authToken\n email\n isAdmin\n isOwner\n isPasswordSet\n name\n }\n }\n":r.fk,"\n query NetworkSetting {\n networkSetting {\n externalUrl\n }\n }\n":r.m2,"\n query GetServerInfo {\n serverInfo {\n isAdminInitialized\n isEmailConfigured\n isChatEnabled\n allowSelfSignup\n isDemoMode\n }\n }\n":r.a,"\n subscription CreateThreadAndRun($input: CreateThreadAndRunInput!) {\n createThreadAndRun(input: $input) {\n __typename\n ... on ThreadCreated {\n id\n }\n ... on ThreadUserMessageCreated {\n id\n }\n ... on ThreadAssistantMessageCreated {\n id\n }\n ... on ThreadRelevantQuestions {\n questions\n }\n ... on ThreadAssistantMessageAttachmentsCode {\n hits {\n code {\n gitUrl\n filepath\n language\n content\n startLine\n }\n scores {\n rrf\n bm25\n embedding\n }\n }\n }\n ... on ThreadAssistantMessageAttachmentsDoc {\n hits {\n doc {\n title\n link\n content\n }\n score\n }\n }\n ... on ThreadAssistantMessageContentDelta {\n delta\n }\n ... on ThreadAssistantMessageCompleted {\n id\n }\n }\n }\n":r.VL,"\n subscription CreateThreadRun($input: CreateThreadRunInput!) {\n createThreadRun(input: $input) {\n __typename\n ... on ThreadCreated {\n id\n }\n ... on ThreadUserMessageCreated {\n id\n }\n ... on ThreadAssistantMessageCreated {\n id\n }\n ... on ThreadRelevantQuestions {\n questions\n }\n ... on ThreadAssistantMessageAttachmentsCode {\n hits {\n code {\n gitUrl\n filepath\n language\n content\n startLine\n }\n scores {\n rrf\n bm25\n embedding\n }\n }\n }\n ... on ThreadAssistantMessageAttachmentsDoc {\n hits {\n doc {\n title\n link\n content\n }\n score\n }\n }\n ... on ThreadAssistantMessageContentDelta {\n delta\n }\n ... on ThreadAssistantMessageCompleted {\n id\n }\n }\n }\n":r.uM,"\n mutation DeleteThreadMessagePair(\n $threadId: ID!\n $userMessageId: ID!\n $assistantMessageId: ID!\n ) {\n deleteThreadMessagePair(\n threadId: $threadId\n userMessageId: $userMessageId\n assistantMessageId: $assistantMessageId\n )\n }\n":r.ou,"\n mutation refreshToken($refreshToken: String!) {\n refreshToken(refreshToken: $refreshToken) {\n accessToken\n refreshToken\n }\n }\n":r.FR,"\n mutation LogoutAllSessions {\n logoutAllSessions\n }\n":r.Il,"\n query ListInvitations(\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n invitations(after: $after, before: $before, first: $first, last: $last) {\n edges {\n node {\n id\n email\n code\n createdAt\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.Xx,"\n query gitRepositories(\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n gitRepositories(\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n name\n gitUrl\n sourceId\n jobInfo {\n lastJobRun {\n id\n job\n createdAt\n finishedAt\n exitCode\n }\n command\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.Mi,"\n query ListJobRuns(\n $ids: [ID!]\n $jobs: [String!]\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n jobRuns(\n ids: $ids\n jobs: $jobs\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n job\n createdAt\n startedAt\n finishedAt\n exitCode\n stdout\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.$S,"\n query GetJobRunStats($jobs: [String!]) {\n jobRunStats(jobs: $jobs) {\n success\n failed\n pending\n }\n }\n":r.np,"\n query ListJobs {\n jobs\n }\n":r.Ax,"\n query ListUsers($after: String, $before: String, $first: Int, $last: Int) {\n users(after: $after, before: $before, first: $first, last: $last) {\n edges {\n node {\n id\n email\n isAdmin\n isOwner\n createdAt\n active\n name\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.by,"\n query DailyStatsInPastYear($users: [ID!]) {\n dailyStatsInPastYear(users: $users) {\n start\n end\n completions\n selects\n views\n }\n }\n":r.Wd,"\n query DailyStats(\n $start: DateTime!\n $end: DateTime!\n $users: [ID!]\n $languages: [Language!]\n ) {\n dailyStats(start: $start, end: $end, users: $users, languages: $languages) {\n start\n end\n completions\n selects\n views\n language\n }\n }\n":r.Sm,"\n query ListIntegrations(\n $ids: [ID!]\n $kind: IntegrationKind\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n integrations(\n ids: $ids\n kind: $kind\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n displayName\n status\n apiBase\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.KZ,"\n query ListIntegratedRepositories(\n $ids: [ID!]\n $kind: IntegrationKind\n $active: Boolean\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n integratedRepositories(\n ids: $ids\n kind: $kind\n active: $active\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n displayName\n gitUrl\n active\n sourceId\n jobInfo {\n lastJobRun {\n id\n job\n createdAt\n finishedAt\n startedAt\n exitCode\n }\n command\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.qt,"\n query RepositoryList {\n repositoryList {\n id\n name\n kind\n gitUrl\n refs {\n name\n commit\n }\n }\n }\n":r.HC,"\n query RepositorySearch(\n $kind: RepositoryKind!\n $id: ID!\n $rev: String\n $pattern: String!\n ) {\n repositorySearch(kind: $kind, id: $id, rev: $rev, pattern: $pattern) {\n type\n path\n indices\n }\n }\n":r.BH,"\n query ContextInfo {\n contextInfo {\n sources {\n id\n sourceKind\n sourceId\n sourceName\n }\n }\n }\n":r.w4,"\n query UserGroups {\n userGroups {\n id\n name\n createdAt\n updatedAt\n members {\n user {\n id\n email\n name\n createdAt\n }\n isGroupAdmin\n createdAt\n updatedAt\n }\n }\n }\n":r.hx,"\n query sourceIdAccessPolicies($sourceId: String!) {\n sourceIdAccessPolicies(sourceId: $sourceId) {\n sourceId\n read {\n id\n name\n }\n }\n }\n":r.NL,"\n query ListThreadMessages(\n $threadId: ID!\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n threadMessages(\n threadId: $threadId\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n threadId\n role\n content\n attachment {\n code {\n gitUrl\n filepath\n language\n content\n startLine\n }\n clientCode {\n filepath\n content\n startLine\n }\n doc {\n title\n link\n content\n }\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n":r.f7};function i(n){var e;return null!==(e=s[n])&&void 0!==e?e:{}}},43240:function(n,e,t){t.d(e,{BX:function(){return r.B}});var r=t(75561)},28312:function(n,e,t){t.d(e,{m:function(){return o}});var r=t(3546),s=t(61200),i=t.n(s),a=t(2578);function o(n){let{timeout:e=2e3,onError:t,onCopyContent:s}=n,[o,u]=r.useState(!1),d=()=>{u(!0),setTimeout(()=>{u(!1)},e)},l=n=>{if("function"==typeof t){null==t||t(n);return}a.A.error("Failed to copy.")};return{isCopied:o,copyToClipboard:n=>{var e;if(n){if(s){s(n),d();return}if(null===(e=navigator.clipboard)||void 0===e?void 0:e.writeText)navigator.clipboard.writeText(n).then(d).catch(l);else{let e=i()(n);e?d():l()}}}}}},24449:function(n,e,t){t.d(e,{S:function(){return o},n:function(){return u}});var r=t(3546),s=t(45391),i=t(16784);let a=n=>{let e=(0,i.d)(n);r.useEffect(()=>()=>{e.current()},[])};function o(n,e,t){let o=(0,i.d)(n),u=r.useMemo(()=>(0,s.Z)(function(){for(var n=arguments.length,e=Array(n),t=0;t{var n;null==t||null===(n=t.onUnmount)||void 0===n||n.call(t,u),u.cancel()}),{run:u,cancel:u.cancel,flush:u.flush}}function u(n,e,t){let[s,i]=r.useState(n),{run:a}=o(()=>{i(n)},e,t);return r.useEffect(()=>{a()},[n]),[s,i]}},16784:function(n,e,t){t.d(e,{d:function(){return s}});var r=t(3546);function s(n){let e=r.useRef(n);return e.current=n,e}},98454:function(n,e,t){t.d(e,{P:function(){return a}});var r=t(40055),s=t(43240);let i=(0,s.BX)("\n query MeQuery {\n me {\n id\n authToken\n email\n isAdmin\n isOwner\n isPasswordSet\n name\n }\n }\n"),a=()=>(0,r.aM)({query:i})},80605:function(n,e,t){t.d(e,{UA:function(){return c},Uw:function(){return d},c7:function(){return u},jJ:function(){return l},xG:function(){return o}});var r=t(40055),s=t(43240);let i=(0,s.BX)("\n query GetServerInfo {\n serverInfo {\n isAdminInitialized\n isEmailConfigured\n isChatEnabled\n allowSelfSignup\n isDemoMode\n }\n }\n"),a=()=>{let[{data:n}]=(0,r.aM)({query:i});return null==n?void 0:n.serverInfo},o=()=>{var n;return null===(n=a())||void 0===n?void 0:n.isChatEnabled},u=()=>{var n;return null===(n=a())||void 0===n?void 0:n.isAdminInitialized},d=()=>{var n;return null===(n=a())||void 0===n?void 0:n.isEmailConfigured},l=()=>{var n;return null===(n=a())||void 0===n?void 0:n.allowSelfSignup},c=()=>{var n;return null===(n=a())||void 0===n?void 0:n.isDemoMode}},91302:function(n,e,t){t.d(e,{Dp:function(){return m},Ho:function(){return h},QJ:function(){return S},av:function(){return w},kP:function(){return k},zq:function(){return y}});var r,s,i=t(36164),a=t(3546),o=t(11978),u=t(24426),d=t.n(u),l=t(43240),c=t(80605),f=t(11634),p=t(66794);function g(n,e){var t,r;let i=function(n,e){switch(e.type){case s.SignIn:case s.Refresh:return{status:"authenticated",data:e.data};case s.SignOut:return{status:"unauthenticated",data:void 0}}}(0,e);return n.status==i.status&&(t=n.data,r=i.data,(null==t?void 0:t.accessToken)===(null==r?void 0:r.accessToken)&&(null==t?void 0:t.refreshToken)===(null==r?void 0:r.refreshToken))?n:i}(r=s||(s={}))[r.SignIn=0]="SignIn",r[r.SignOut=1]="SignOut",r[r.Refresh=2]="Refresh";let $=a.createContext({}),m=(0,l.BX)("\n mutation refreshToken($refreshToken: String!) {\n refreshToken(refreshToken: $refreshToken) {\n accessToken\n refreshToken\n }\n }\n"),v=(0,l.BX)("\n mutation LogoutAllSessions {\n logoutAllSessions\n }\n"),h=n=>{let{children:e}=n,[t,r]=a.useState(!1),[o]=d()(p.nd,void 0),[u,l]=a.useReducer(g,{status:"loading",data:void 0});a.useEffect(()=>{(null==o?void 0:o.accessToken)&&(null==o?void 0:o.refreshToken)?l({type:s.SignIn,data:o}):l({type:s.SignOut}),r(!0)},[]),a.useEffect(()=>{!t||((null==o?void 0:o.accessToken)&&(null==o?void 0:o.refreshToken)?l({type:s.Refresh,data:o}):(null==o?void 0:o.accessToken)||(null==o?void 0:o.refreshToken)||l({type:s.SignOut}))},[o]);let c=a.useMemo(()=>{var n;return(null==u?void 0:u.status)=="authenticated"?{data:{accessToken:u.data.accessToken},status:u.status}:{status:null!==(n=null==u?void 0:u.status)&&void 0!==n?n:"loading",data:null}},[u]);return(0,i.jsx)($.Provider,{value:{authState:u,dispatch:l,session:c},children:e})};class I extends Error{constructor(){super("AuthProvider is missing. Please add the AuthProvider at root level")}}function b(){let n=a.useContext($);if(!n)throw new I;return n}function y(){let{dispatch:n}=b(),[e,t]=d()(p.nd,void 0);return async e=>(t({accessToken:e.accessToken,refreshToken:e.refreshToken}),n({type:s.SignIn,data:e}),!0)}function S(){let n=(0,f.Db)(v),{dispatch:e}=b(),[t,r]=d()(p.nd,void 0);return async()=>{await n(),r(void 0),e({type:s.SignOut})}}function k(){let{session:n}=b();return n}let A=["/auth/signin","/auth/signup","/auth/reset-password"];function w(){let n=(0,c.c7)(),e=(0,o.useRouter)(),t=(0,o.usePathname)(),r=(0,o.useSearchParams)(),{data:s,status:i}=k();return a.useEffect(()=>{if("loading"===i||"authenticated"===i||void 0===n)return;let s="/auth/signup"===t&&"true"===r.get("isAdmin");if(!s&&!n)return e.replace("/auth/signup?isAdmin=true");A.includes(t)||e.replace("/auth/signin")},[n,i]),s}},3765:function(n,e,t){t.d(e,{Z:function(){return u}});var r=t(44745),s=t(57778),i=t(79716),a=t(91302),o=t(66794);async function u(n,e){var t;let r=null!==(t=null==e?void 0:e.customFetch)&&void 0!==t?t:window.fetch;if(function(n){var e;if(n.startsWith("/oauth/providers"))return!1;let t=null===(e=(0,o.bW)())||void 0===e?void 0:e.accessToken;if(!t)return!0;try{let{exp:n}=(0,i.o)(t);return(0,o.pw)(n)}catch(n){return!0}}(n))return o.gN.refreshToken(d).then(t=>f(n,e));let s=await r(n,l(e));return 401===s.status?(o.gN.clearAccessToken(),o.gN.refreshToken(d).then(t=>f(n,e))):p(s,e)}async function d(){var n,e;let t=null===(n=(0,o.bW)())||void 0===n?void 0:n.refreshToken;if(!t)return;let r=await c(t);return null==r?void 0:null===(e=r.data)||void 0===e?void 0:e.refreshToken}function l(n){var e;let t=new Headers(null==n?void 0:n.headers);return t.append("authorization","Bearer ".concat(null===(e=(0,o.bW)())||void 0===e?void 0:e.accessToken)),{...n||{},headers:t}}async function c(n){let e=new r.KU({url:"/graphql",requestPolicy:"network-only",exchanges:[r.Ek]}),t=e.createRequestOperation("mutation",(0,s.h)(a.Dp,{refreshToken:n}));return e.executeMutation(t)}function f(n,e){var t;let r=null!==(t=null==e?void 0:e.customFetch)&&void 0!==t?t:window.fetch;return r(n,l(e)).then(n=>p(n,e))}function p(n,e){return(null==n?void 0:n.ok)?(null==e?void 0:e.responseFormatter)?e.responseFormatter(n):(null==e?void 0:e.responseFormat)==="blob"?n.blob():n.json():(null==e?void 0:e.errorHandler)?e.errorHandler(n):void 0}},11634:function(n,e,t){t.d(e,{Db:function(){return g},Lp:function(){return m},zG:function(){return $}});var r=t(22365),s=t(28552),i=t(81013),a=t(17522),o=t(79716),u=t(74630),d=t(40055),l=t(44745),c=t(91302),f=t(70410),p=t(66794);function g(n,e){let[t,r]=(0,d.Db)(n),s=(null==e?void 0:e.form)?$(e.form):void 0,i=async(n,t)=>{let i;try{if(null==(i=await r(n,t))?void 0:i.error)s&&s(i.error),(null==e?void 0:e.onError)&&e.onError(i.error);else if(!(0,u.Z)(null==i?void 0:i.data)){var a;null==e||null===(a=e.onCompleted)||void 0===a||a.call(e,i.data)}}catch(n){(null==e?void 0:e.onError)&&e.onError(n);return}return i};return i}function $(n){return e=>{let{graphQLErrors:t=[]}=e;for(let e of t)if(e.extensions&&e.extensions["validation-errors"]){let t=e.extensions["validation-errors"];for(let e of t.errors)n.setError(e.path,e)}else(null==e?void 0:e.originalError)?n.setError("root",e.originalError):(null==e?void 0:e.message)&&n.setError("root",{message:e.message})}}let m=new l.KU({url:"/graphql",requestPolicy:"cache-and-network",exchanges:[(0,s.HG)({keys:{CompletionStats:()=>null,ServerInfo:()=>null,RepositorySearch:()=>null,RepositoryList:()=>null,RepositoryGrep:()=>null,GrepLine:()=>null,GrepFile:()=>null,GrepTextOrBase64:()=>null,GrepSubMatch:()=>null,GitReference:()=>null,MessageAttachment:()=>null,MessageAttachmentCode:()=>null,MessageAttachmentDoc:()=>null,NetworkSetting:()=>null,ContextInfo:()=>null},resolvers:{Query:{invitations:(0,i.N)(),gitRepositories:(0,i.N)(),webCrawlerUrls:(0,i.N)(),integrations:(0,i.N)(),threads:(0,i.N)()}},updates:{Mutation:{deleteInvitation(n,e,t,r){n.deleteInvitation&&t.inspectFields("Query").filter(n=>"invitations"===n.fieldName).forEach(n=>{t.updateQuery({query:f.lE,variables:n.arguments},n=>{var t;return(null==n?void 0:null===(t=n.invitations)||void 0===t?void 0:t.edges)&&(n.invitations.edges=n.invitations.edges.filter(n=>n.node.id!==e.id)),n})})},deleteGitRepository(n,e,t,r){n.deleteGitRepository&&t.inspectFields("Query").filter(n=>"gitRepositories"===n.fieldName).forEach(n=>{t.updateQuery({query:f.S1,variables:n.arguments},n=>{var t;return(null==n?void 0:null===(t=n.gitRepositories)||void 0===t?void 0:t.edges)&&(n.gitRepositories.edges=n.gitRepositories.edges.filter(n=>n.node.id!==e.id)),n})})},deleteIntegration(n,e,t,r){n.deleteIntegration&&t.inspectFields("Query").filter(n=>"integrations"===n.fieldName).forEach(n=>{t.updateQuery({query:f.kb,variables:n.arguments},n=>((null==n?void 0:n.integrations)&&(n.integrations.edges=n.integrations.edges.filter(n=>n.node.id!==e.id)),n))})},createIntegration(n,e,t){let r="Query";t.inspectFields(r).filter(n=>{var t,r,s;return"integrations"===n.fieldName&&!!(null===(t=n.arguments)||void 0===t?void 0:t.kind)&&(null===(r=n.arguments)||void 0===r?void 0:r.kind)===(null==e?void 0:null===(s=e.input)||void 0===s?void 0:s.kind)}).forEach(n=>{t.invalidate(r,n.fieldName,n.arguments)})},upsertUserGroupMembership(n,e,t,r){let{userGroupId:s,userId:i,isGroupAdmin:a}=e.input,{user:o,isInsert:u}=r.variables.extraParams||{};n.upsertUserGroupMembership&&t.updateQuery({query:f.gI},n=>((null==n?void 0:n.userGroups)&&(n.userGroups=n.userGroups.map(n=>{if(n.id!==s)return n;let e=[...n.members];if(u){let n=new Date().toISOString();e.push({user:{...o,__typename:"UserSecured"},isGroupAdmin:a,createdAt:n,updatedAt:n,__typename:"UserGroupMembership"})}else e=e.map(n=>n.user.id!==i?n:{...n,isGroupAdmin:a});return{...n,members:e}})),n))},deleteUserGroupMembership(n,e,t,r){let{userGroupId:s,userId:i}=e;n.deleteUserGroupMembership&&t.updateQuery({query:f.gI},n=>((null==n?void 0:n.userGroups)&&(n.userGroups=n.userGroups.map(n=>{if(n.id!==s)return n;let e=[...n.members].filter(n=>n.user.id!==i);return{...n,members:e}})),n))},grantSourceIdReadAccess(n,e,t,r){if(n.grantSourceIdReadAccess){let{sourceId:n}=e;t.inspectFields("Query").filter(e=>{var t;return"sourceIdAccessPolicies"===e.fieldName&&(null===(t=e.arguments)||void 0===t?void 0:t.sourceId)===n}).forEach(n=>{t.updateQuery({query:f.hA,variables:n.arguments},n=>{var t;if(null==n?void 0:null===(t=n.sourceIdAccessPolicies)||void 0===t?void 0:t.read){let{userGroupName:t}=r.variables.extraParams||{};n.sourceIdAccessPolicies.read=[...n.sourceIdAccessPolicies.read,{__typename:"UserGroup",id:e.userGroupId,name:t}]}return n})})}},revokeSourceIdReadAccess(n,e,t,r){if(n.revokeSourceIdReadAccess){let{userGroupId:n,sourceId:r}=e;t.inspectFields("Query").filter(n=>{var e;return"sourceIdAccessPolicies"===n.fieldName&&(null===(e=n.arguments)||void 0===e?void 0:e.sourceId)===r}).forEach(e=>{t.updateQuery({query:f.hA,variables:e.arguments},e=>{var t,s;return(null==e?void 0:null===(t=e.sourceIdAccessPolicies)||void 0===t?void 0:t.sourceId)===r&&(null==e?void 0:null===(s=e.sourceIdAccessPolicies)||void 0===s?void 0:s.read)&&(e.sourceIdAccessPolicies.read=e.sourceIdAccessPolicies.read.filter(e=>e.id!==n)),e})})}}}},optimistic:{upsertUserGroupMembership:()=>!0,deleteUserGroupMembership:()=>!0,grantSourceIdReadAccess:()=>!0,revokeSourceIdReadAccess:()=>!0}}),(0,r.M)(async n=>{let e=(0,p.bW)(),t=null==e?void 0:e.accessToken,r=null==e?void 0:e.refreshToken;return{addAuthToOperation(e){let s=(0,p.bW)(),i=(0,p.jW)();if(t=null==s?void 0:s.accessToken,r=null==s?void 0:s.refreshToken,t)return n.appendHeaders(e,{Authorization:"Bearer ".concat(t)});if(i){let t={Authorization:"Bearer ".concat(i.authorization),...i.headers};return n.appendHeaders(e,t)}return e},didAuthError(n,e){let t=n.graphQLErrors.some(n=>{var e;return(null==n?void 0:null===(e=n.extensions)||void 0===e?void 0:e.code)==="UNAUTHORIZED"});return t&&p.gN.clearAccessToken(),t},willAuthError(n){let e=(0,p.bW)(),s=(0,p.jW)();if(t=null==e?void 0:e.accessToken,r=null==e?void 0:e.refreshToken,"query"===n.kind&&n.query.definitions.some(n=>{var e;return"OperationDefinition"===n.kind&&(null===(e=n.name)||void 0===e?void 0:e.value)&&["GetServerInfo"].includes(n.name.value)})||"mutation"===n.kind&&n.query.definitions.some(n=>{var e;return"OperationDefinition"===n.kind&&(null===(e=n.name)||void 0===e?void 0:e.value)&&["tokenAuth","register"].includes(n.name.value)})||r&&"mutation"===n.kind&&n.query.definitions.some(n=>{var e;return"OperationDefinition"===n.kind&&(null==n?void 0:null===(e=n.name)||void 0===e?void 0:e.value)==="refreshToken"}))return!1;if(t)try{let{exp:n}=(0,o.o)(t);return(0,p.pw)(n)}catch(n){return!0}else if(s)return!(null==s?void 0:s.authorization);else return p.gN.clearAccessToken(),!0},refreshAuth:async()=>p.gN.refreshToken(async()=>{var e;let t=null===(e=(0,p.bW)())||void 0===e?void 0:e.refreshToken;if(t)return n.mutate(c.Dp,{refreshToken:t}).then(n=>{var e;return null==n?void 0:null===(e=n.data)||void 0===e?void 0:e.refreshToken})})}}),(0,l.Dk)({onError(n){n.message.startsWith("[GraphQL]")&&(n.message=n.message.replace("[GraphQL]","").trim())}}),l.Ek,(0,l.pV)({forwardSubscription(n,e){var t,r,s;let i=null!==(s=null===(r=e.context.fetchOptions)||void 0===r?void 0:null===(t=r.headers)||void 0===t?void 0:t.Authorization)&&void 0!==s?s:"",o=window.location.protocol,u=window.location.host,d=(0,a.eI)({url:"".concat("https:"===o?"wss:":"ws:","//").concat(u,"/subscriptions"),connectionParams:{authorization:i}}),l={...n,query:n.query||""};return{subscribe(n){let e=d.subscribe(l,n);return{unsubscribe:e}}}}})]})},70410:function(n,e,t){t.d(e,{Cl:function(){return c},D7:function(){return $},DQ:function(){return u},GG:function(){return a},Gx:function(){return m},S1:function(){return i},TH:function(){return d},XL:function(){return I},Y6:function(){return l},gI:function(){return v},hA:function(){return h},kb:function(){return f},lE:function(){return s},r4:function(){return b},ts:function(){return p},yB:function(){return o},zz:function(){return g}});var r=t(43240);let s=(0,r.BX)("\n query ListInvitations(\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n invitations(after: $after, before: $before, first: $first, last: $last) {\n edges {\n node {\n id\n email\n code\n createdAt\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),i=(0,r.BX)("\n query gitRepositories(\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n gitRepositories(\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n name\n gitUrl\n sourceId\n jobInfo {\n lastJobRun {\n id\n job\n createdAt\n finishedAt\n exitCode\n }\n command\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),a=(0,r.BX)("\n query ListJobRuns(\n $ids: [ID!]\n $jobs: [String!]\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n jobRuns(\n ids: $ids\n jobs: $jobs\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n job\n createdAt\n startedAt\n finishedAt\n exitCode\n stdout\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),o=(0,r.BX)("\n query GetJobRunStats($jobs: [String!]) {\n jobRunStats(jobs: $jobs) {\n success\n failed\n pending\n }\n }\n"),u=(0,r.BX)("\n query ListJobs {\n jobs\n }\n"),d=(0,r.BX)("\n query ListUsers($after: String, $before: String, $first: Int, $last: Int) {\n users(after: $after, before: $before, first: $first, last: $last) {\n edges {\n node {\n id\n email\n isAdmin\n isOwner\n createdAt\n active\n name\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),l=(0,r.BX)("\n query DailyStatsInPastYear($users: [ID!]) {\n dailyStatsInPastYear(users: $users) {\n start\n end\n completions\n selects\n views\n }\n }\n"),c=(0,r.BX)("\n query DailyStats(\n $start: DateTime!\n $end: DateTime!\n $users: [ID!]\n $languages: [Language!]\n ) {\n dailyStats(start: $start, end: $end, users: $users, languages: $languages) {\n start\n end\n completions\n selects\n views\n language\n }\n }\n"),f=(0,r.BX)("\n query ListIntegrations(\n $ids: [ID!]\n $kind: IntegrationKind\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n integrations(\n ids: $ids\n kind: $kind\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n displayName\n status\n apiBase\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),p=(0,r.BX)("\n query ListIntegratedRepositories(\n $ids: [ID!]\n $kind: IntegrationKind\n $active: Boolean\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n integratedRepositories(\n ids: $ids\n kind: $kind\n active: $active\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n displayName\n gitUrl\n active\n sourceId\n jobInfo {\n lastJobRun {\n id\n job\n createdAt\n finishedAt\n startedAt\n exitCode\n }\n command\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),g=(0,r.BX)("\n query RepositoryList {\n repositoryList {\n id\n name\n kind\n gitUrl\n refs {\n name\n commit\n }\n }\n }\n"),$=(0,r.BX)("\n query RepositorySearch(\n $kind: RepositoryKind!\n $id: ID!\n $rev: String\n $pattern: String!\n ) {\n repositorySearch(kind: $kind, id: $id, rev: $rev, pattern: $pattern) {\n type\n path\n indices\n }\n }\n"),m=(0,r.BX)("\n query ContextInfo {\n contextInfo {\n sources {\n id\n sourceKind\n sourceId\n sourceName\n }\n }\n }\n"),v=(0,r.BX)("\n query UserGroups {\n userGroups {\n id\n name\n createdAt\n updatedAt\n members {\n user {\n id\n email\n name\n createdAt\n }\n isGroupAdmin\n createdAt\n updatedAt\n }\n }\n }\n"),h=(0,r.BX)("\n query sourceIdAccessPolicies($sourceId: String!) {\n sourceIdAccessPolicies(sourceId: $sourceId) {\n sourceId\n read {\n id\n name\n }\n }\n }\n"),I=(0,r.BX)("\n query ListThreads(\n $ids: [ID!]\n $isEphemeral: Boolean\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n threads(\n ids: $ids\n isEphemeral: $isEphemeral\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n userId\n createdAt\n updatedAt\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),b=(0,r.BX)("\n query ListThreadMessages(\n $threadId: ID!\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n threadMessages(\n threadId: $threadId\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n threadId\n role\n content\n attachment {\n code {\n gitUrl\n filepath\n language\n content\n startLine\n }\n clientCode {\n filepath\n content\n startLine\n }\n doc {\n title\n link\n content\n }\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n")},66794:function(n,e,t){t.d(e,{bW:function(){return u},gN:function(){return $},jW:function(){return p},nd:function(){return a},pw:function(){return c},zr:function(){return g}});var r=t(79716),s=t(74630),i=t(1544);let a="_tabby_auth",o="_tabby_chat_sdk_fetcher_options",u=()=>{if((0,i.S_)()){let n=localStorage.getItem(a);if(n)try{return JSON.parse(n)}catch(n){}}},d=n=>{localStorage.setItem(a,JSON.stringify(n))},l=()=>{localStorage.removeItem(a),window.dispatchEvent(new StorageEvent("storage",{storageArea:window.localStorage,url:window.location.href,key:a}))},c=n=>!!(0,s.Z)(n)||Date.now()>1e3*n,f=n=>!(0,s.Z)(n)&&Date.now()-1e3*n<6e4,p=()=>{try{let n=sessionStorage.getItem(o);if(!n)return;return JSON.parse(n)}catch(n){return}},g=n=>{if(n)try{sessionStorage.setItem(o,JSON.stringify(n))}catch(n){sessionStorage.removeItem(o)}},$=new class{clearAccessToken(){let n=u();n&&d({...n,accessToken:""})}async refreshToken(n){try{var e;if(void 0===(null===(e=navigator)||void 0===e?void 0:e.locks))throw console.error("The Web Locks API is not supported in your browser. Please upgrade to a newer browser version."),Error();await navigator.locks.request("_tabby_auth_lock",async()=>{let e;let t=u(),s=null==t?void 0:t.accessToken,i=null==t?void 0:t.refreshToken;if(s){let{iat:i}=(0,r.o)(s);e=f(i)?t:await n()}else i&&(e=await n());e?d(e):l()})}catch(n){l()}}}}}]);
\ No newline at end of file
diff --git a/ee/tabby-webserver/ui/_next/static/chunks/4015.7d0f83bcb1037cf2.js b/ee/tabby-webserver/ui/_next/static/chunks/4015.207dc7a246a18149.js
similarity index 99%
rename from ee/tabby-webserver/ui/_next/static/chunks/4015.7d0f83bcb1037cf2.js
rename to ee/tabby-webserver/ui/_next/static/chunks/4015.207dc7a246a18149.js
index 33866eb5fe6b..456d8b6121b8 100644
--- a/ee/tabby-webserver/ui/_next/static/chunks/4015.7d0f83bcb1037cf2.js
+++ b/ee/tabby-webserver/ui/_next/static/chunks/4015.207dc7a246a18149.js
@@ -1 +1 @@
-(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4015],{44015:function(e,t,n){"use strict";let r;n.r(t),n.d(t,{default:function(){return ex}});var i=n(36164),s=n(3546),o=n(30352),l=n(49776),a=n(88105),c=n(74630),u=n(28242),d=n(28312),f=n(11978),h=n(16784),m=n(1544),p=n(85312);function v(e,t){let n=e.doc,{span:r,utf16_column_range:i}=t;try{let e=n.line(r.start.row+1),t=e.from+i.start,s=e.from+i.end;return{start:t,end:s}}catch(e){return null}}let g=a.p.mark({class:"cm-tag-mark"}),x=a.tk.baseTheme({".cm-tag-mark":{border:"1px solid hsla(var(--tag-blue-border))",padding:"0px 4px",borderRadius:"4px",backgroundColor:"hsla(var(--tag-blue-bg))",color:"hsla(var(--tag-blue-text)) !important"},".cm-tag-mark > span":{color:"hsla(var(--tag-blue-text)) !important"}});function y(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=e.state.doc,r=n.length;if(!r)return a.p.none;let i=[];for(let n of t){let t=v(e.state,n);try{t&&t.start<=r&&t.end<=r&&i.push(g.range(t.start,t.end))}catch(e){}}return i.length?a.p.set(i):a.p.none}let b=e=>{let t=a.lg.fromClass(class{update(t){(t.docChanged||t.viewportChanged)&&(this.marks=y(t.view,e))}constructor(t){this.marks=y(t,e)}},{decorations:e=>e.marks});return[t,x]};var w=n(94559);let k=a.p.mark({class:"cm-range-highlight"}),j=a.tk.baseTheme({".cm-range-highlight":{backgroundColor:"hsl(var(--selection))"}});function C(e,t){let n;let r=e.selection.ranges;e:for(let i of r)for(let r of t){let t=v(e,r);if(!t)continue;let s=t.start-r.name_range.start;if(i.from>=t.start&&i.to<=t.end){n={from:r.range.start+s,to:r.range.end+s};break e}}return n?a.p.set([k.range(n.from,n.to)]):a.p.none}let N=w.Py.define(),E=e=>{let t=a.lg.fromClass(class{update(t){if(t.selectionSet)this.triggerType="cursor",this.highlight=C(t.view.state,e);else if("cursor"!==this.triggerType)for(let e of t.transactions)for(let t of e.effects)t.is(N)&&t.value&&(this.highlight=t.value,this.triggerType="hover")}handleMouseListener(t){if(-1!==this.timeout&&clearTimeout(this.timeout),!this.highlight.size){let n=setTimeout(()=>{let n=this.view.posAtCoords({x:t.clientX,y:t.clientY});if(null!==n){let t=function(e,t){let n;for(let r of t)if(e>=r.name_range.start&&e<=r.name_range.end){n={from:r.range.start,to:r.range.end};break}return n?a.p.set([k.range(n.from,n.to)]):a.p.none}(n,e);if(t.size)this.triggerType="hover";else if("cursor"===this.triggerType)return;this.view.dispatch({effects:N.of(t)})}},100);this.timeout=n}}destroy(){}constructor(t){this.view=t,this.highlight=C(t.state,e),this.timeout=-1,this.triggerType="hover"}},{decorations:e=>e.highlight});return[t,j]},S=a.tk.baseTheme({".cm-tooltip":{border:"none !important"},".cm-tooltip-cursor":{backgroundColor:"hsl(var(--popover))",color:"hsl(var(--popover-foreground))",border:"none !important",padding:"2px 7px",borderRadius:"4px"}}),M=e=>[(0,a.bF)((t,n,r)=>{for(let r of e){let e=v(t.state,r);if(e&&n>=e.start&&n<=e.end)return{pos:n,above:!0,create(e){let t=document.createElement("div");return t.className="cm-tooltip-cursor",t.textContent="".concat(r.syntax_type_name),{dom:t,offset:{x:-20,y:4}}}}}return null}),S];var _=n(27064),R=n(87279),L=n(42891),P=n.n(L),T=n(23342),z=n(31458),V=n(62202),A=n(81565);let D=e=>{let{className:t,text:n,language:r,path:s,lineFrom:o,lineTo:l,gitUrl:a,...c}=e,u=e=>{_.u.emit("code_browser_quick_action",{action:e,code:n,language:r,path:s,lineFrom:o,lineTo:l,gitUrl:a})};return(0,i.jsxs)("div",{className:(0,m.cn)("mt-2 flex items-center gap-2 rounded-md border bg-background px-2 py-1",t),...c,children:[(0,i.jsx)(P(),{src:T.Z,width:32,alt:"logo"}),(0,i.jsx)(z.z,{size:"sm",variant:"outline",onClick:e=>u("explain"),children:"Explain"}),(0,i.jsxs)(V.h_,{modal:!1,children:[(0,i.jsx)(V.$F,{asChild:!0,children:(0,i.jsxs)(z.z,{size:"sm",variant:"outline",children:["Generate",(0,i.jsx)(A.IconChevronUpDown,{className:"ml-1"})]})}),(0,i.jsxs)(V.AW,{align:"start",children:[(0,i.jsx)(V.Xi,{className:"cursor-pointer",onSelect:()=>u("generate_unittest"),children:"Unit Test"}),(0,i.jsx)(V.Xi,{className:"cursor-pointer",onSelect:()=>u("generate_doc"),children:"Documentation"})]})]})]})},I=new class extends a.SJ{constructor(...e){super(...e),this.elementClass="cm-selectedLineGutter"}},U=w.Py.define(),Q=w.QQ.define({create:()=>null,update(e,t){for(let n of t.effects){if(n.is(U))return n.value;if(n.is(H))return(null==e?void 0:e.line)||(e={line:n.value}),{...e,endLine:n.value}}return e},provide:e=>[a.tk.decorations.compute([e],t=>{var n;let r=t.field(e);if(!r)return a.p.none;let i=null!==(n=r.endLine)&&void 0!==n?n:r.line,s=Math.min(r.line,i),o=Math.min(t.doc.lines,s===i?r.line:i),l=new w.f_;for(let e=s;e<=o;e++){let n=t.doc.line(e).from;l.add(n,n,a.p.line({class:"cm-selectedLine"}))}return l.finish()}),a.v7.compute([e],t=>{var n;let r=[],i=t.field(e);if(!i)return w.Xs.empty;let s=null!==(n=i.endLine)&&void 0!==n?n:i.line,o=Math.min(i.line,s),l=Math.min(t.doc.lines,o===s?i.line:s);for(let e=o;e<=l;e++){let n=t.doc.line(e).from;r.push(I.range(n))}return w.Xs.of(r)})]}),X=e=>{let{isMulti:t}=e;return(0,i.jsxs)(V.h_,{modal:!1,children:[(0,i.jsx)(V.$F,{asChild:!0,children:(0,i.jsx)(z.z,{className:"ml-1 h-5",size:"icon",variant:"secondary",children:(0,i.jsx)(A.IconMore,{})})}),(0,i.jsxs)(V.AW,{align:"start",children:[(0,i.jsx)(V.Xi,{className:"cursor-pointer",onSelect:()=>{_.u.emit("line_menu_action",{action:"copy_line"})},children:t?"Copy lines":"Copy line"}),(0,i.jsx)(V.Xi,{className:"cursor-pointer",onSelect:e=>{_.u.emit("line_menu_action",{action:"copy_permalink"})},children:"Copy permalink"})]})]})},O=new class extends a.SJ{toDOM(){let e=document.createElement("div"),t=R.createRoot(e);return t.render((0,i.jsx)(X,{isMulti:!1})),e}},B=new class extends a.SJ{toDOM(){let e=document.createElement("div"),t=R.createRoot(e);return t.render((0,i.jsx)(X,{isMulti:!0})),e}},F=a.tk.theme({".cm-lineMenuGutter":{width:"40px"},".cm-lineNumbers":{userSelect:"none",cursor:"pointer",color:"var(--line-number-color)","& .cm-gutterElement:hover":{textDecoration:"underline"}}});function Z(e,t){let n=$(t,e.state.doc);return e.dispatch({effects:U.of(n?t:null)}),t}let H=w.Py.define(),W=e=>{let{onSelectLine:t}=e;return[F,Q,(0,a.v5)({class:"cm-lineMenuGutter",markers:e=>(function(e){let t=e.state.field(Q);if(!$(t,e.state.doc))return w.Xs.empty;if(null==t?void 0:t.line){let n=!!t.endLine&&t.line!==t.endLine,r=t.endLine?Math.min(t.line,t.endLine):t.line,i=e.state.doc.line(r).from;return w.Xs.empty.update({add:[n?B.range(i):O.range(i)]})}return w.Xs.empty})(e),initialSpacer:()=>O,domEventHandlers:{mousedown(e,t,n){let r=e.state.doc.lineAt(t.from),i=r.number;return e.dispatch({effects:n.shiftKey?H.of(i):U.of({line:i})}),!0}}}),(0,a.Eu)({domEventHandlers:{mousedown(e,n,r){let i=e.state.doc.lineAt(n.from).number;return e.dispatch({effects:r.shiftKey?H.of(i):U.of({line:i})}),null==t||t(function(e){if(!e)return;let{line:t,endLine:n}=e;return t&&n?t===n?{line:t}:{line:Math.min(t,n),endLine:Math.max(t,n)}:t?{line:t}:void 0}(e.state.field(Q))),!1}}})]};function $(e,t){if(!t)return!1;let{lines:n}=t;return(null==e||!e.line||!(e.line>n))&&(null==e||!e.endLine||!(e.endLine>n))}var J=n(31919),q=n(48048);n(85223);var G=n(63484),K=n(58354);function Y(e,t){var n;return t.empty?null:null!==(n=e.get(t.from))&&void 0!==n?n:null}let ee=/[\s!,.:;?]/;function et(e,t){let n=new Map;if(!e.valid)return n;let r=1,i=e.getCursor(t),s=i.next();for(;!s.done;)s.value.from!==s.value.to&&n.set(s.value.from,r++),s=i.next();return n}let en=w.Py.define();class er{createDom(){let e=document.createElement("div");return e.onkeydown=this.onkeydown,e}update(e){var t,n,r,i,s;let o=this.state,a=(0,l.uP)(e.state),c=!a.eq(this.state.searchQuery);c&&(o={...o,inputValue:a.search,searchQuery:a,matches:et(a,e.view.state.doc)}),(c||e.selectionSet)&&(o={...o,currentMatchIndex:Y(o.matches,e.view.state.selection.main)}),o!==this.state&&(this.state=o,null===(t=this.panel)||void 0===t||t.update(this.state)),e.transactions.some(e=>e.effects.some(e=>e.is(en)&&e.value))&&(null===(r=this.panel)||void 0===r||null===(n=r.input)||void 0===n||n.focus(),null===(s=this.panel)||void 0===s||null===(i=s.input)||void 0===i||i.select())}mount(){this.panel=this.createPanelView({root:this.dom,initialState:this.state,onSearch:e=>this.searchTerm.next(e),findNext:this.findNext,findPrevious:this.findPrevious,setCaseSensitive:e=>this.commit({caseSensitive:e}),setRegexp:e=>this.commit({regexp:e}),close:()=>(0,l.N$)(this.view)})}destroy(){var e;this.subscriptions.forEach(e=>e.unsubscribe()),null===(e=this.panel)||void 0===e||e.destroy()}constructor(e,t,n){var r,i,s,o;this.view=e,this.createPanelView=t,this.top=!0,this.panel=null,this.searchTerm=(0,K.nN)(),this.subscriptions=[],this.previousValue=null,this.findNext=()=>{(0,l.g)(this.view),this.view.dispatch({effects:a.tk.scrollIntoView(this.view.state.selection.main.from,{y:"nearest",yMargin:20})})},this.findPrevious=()=>{(0,l.a7)(this.view),this.view.dispatch({effects:a.tk.scrollIntoView(this.view.state.selection.main.from,{y:"nearest",yMargin:20})})},this.onkeydown=e=>{var t;(0,a.$1)(this.view,e,"search-panel")?e.preventDefault():"Enter"===e.key&&e.target===(null===(t=this.panel)||void 0===t?void 0:t.input)&&(e.preventDefault(),e.shiftKey?this.findPrevious():this.findNext())},this.commit=e=>{let{search:t,caseSensitive:n,regexp:r}=e,i=new l.Jb({search:null!=t?t:this.state.searchQuery.search,caseSensitive:null!=n?n:this.state.searchQuery.caseSensitive,regexp:null!=r?r:this.state.searchQuery.regexp});if(!i.eq(this.state.searchQuery)){let e={},t=[l.ql.of(i)];if(i.search){let{scrollTop:n}=this.view.scrollDOM,r=this.view.lineBlockAtHeight(n);if(Math.abs(r.bottom-n)<=r.height/2&&(r=this.view.lineBlockAtHeight(n+r.height)),i.regexp&&!i.valid)return;let s=i.getCursor(this.view.state.doc,r.from).next();s.done&&(s=i.getCursor(this.view.state.doc).next()),s.done||(e={selection:{anchor:s.value.from,head:s.value.to},scrollIntoView:!0,userEvent:"select.search"},t.push(function(e,t){let{from:n,to:r}=t,i=e.state.doc.lineAt(n),s=e.state.doc.lineAt(r).to,o=Math.max(i.from,n-30),l=Math.min(s,r+30),c=e.state.sliceDoc(o,l);if(o!==i.from){for(let e=0;e<30;e++)if(!ee.test(c[e+1])&&ee.test(c[e])){c=c.slice(e);break}}if(l!==s){for(let e=c.length-1;e>c.length-30;e--)if(!ee.test(c[e-1])&&ee.test(c[e])){c=c.slice(0,e);break}}return a.tk.announce.of("".concat(e.state.phrase("current match"),". ").concat(c," ").concat(e.state.phrase("on line")," ").concat(i.number,"."))}(this.view,s.value)))}this.view.dispatch({...e,effects:t})}},this.dom=this.createDom();let c=(0,l.uP)(this.view.state),u=et(c,e.state.doc);this.state={searchQuery:new l.Jb({...c,caseSensitive:null!==(r=null==n?void 0:n.caseSensitive)&&void 0!==r?r:c.caseSensitive,regexp:null!==(i=null==n?void 0:n.regexp)&&void 0!==i?i:c.regexp,search:null!==(s=null==n?void 0:n.searchValue)&&void 0!==s?s:c.search}),inputValue:null!==(o=null==n?void 0:n.searchValue)&&void 0!==o?o:c.search,matches:u,currentMatchIndex:Y(u,e.state.selection.main)},this.subscriptions.push((0,K.zG)((0,K.TS)([(0,K._A)(this.state.searchQuery.search),this.searchTerm.source]),(0,K.hX)(e=>{let t=e!==this.previousValue;return this.previousValue=e,t}),(0,K.bw)(e=>{var t;this.state={...this.state,inputValue:e},null===(t=this.panel)||void 0===t||t.update(this.state)}),(0,K.Ds)(()=>100),(0,K.Ld)(e=>this.commit({search:e}))))}}let ei=e=>{let t=new w.F6;return[t.of(a.$f.of(l.Lp.map(e=>"Mod-f"===e.key?{...e,run:t=>{var n;let r=null===(n=e.run)||void 0===n?void 0:n.call(e,t);return!!r&&(t.dispatch({effects:en.of(!0)}),!0)}}:e))),(0,l.yC)({createPanel:t=>new er(t,e.createPanel,e.initialState)}),a.tk.theme({".cm-panels":{backgroundColor:"hsl(var(--secondary))",color:"hsl(var(--secondary-foreground))",borderBottom:"1px solid hsl(var(--border))",borderTop:"1px solid hsl(var(--border))",position:"sticky",top:"50px !important",zIndex:20}})]};var es=n(82394);function eo(e){let t=s.useRef(e);return s.useEffect(()=>{t.current=e}),s.useMemo(()=>(...e)=>t.current?.(...e),[])}n(30171);var el=s.forwardRef((e,t)=>{let{children:n,...r}=e,o=s.Children.toArray(n),l=o.find(eu);if(l){let e=l.props.children,n=o.map(t=>t!==l?t:s.Children.count(e)>1?s.Children.only(null):s.isValidElement(e)?e.props.children:null);return(0,i.jsx)(ea,{...r,ref:t,children:s.isValidElement(e)?s.cloneElement(e,void 0,n):null})}return(0,i.jsx)(ea,{...r,ref:t,children:n})});el.displayName="Slot";var ea=s.forwardRef((e,t)=>{let{children:n,...r}=e;if(s.isValidElement(n)){let e,i;let o=(e=Object.getOwnPropertyDescriptor(n.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning?n.ref:(e=Object.getOwnPropertyDescriptor(n,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning?n.props.ref:n.props.ref||n.ref;return s.cloneElement(n,{...function(e,t){let n={...t};for(let r in t){let i=e[r],s=t[r],o=/^on[A-Z]/.test(r);o?i&&s?n[r]=(...e)=>{s(...e),i(...e)}:i&&(n[r]=i):"style"===r?n[r]={...i,...s}:"className"===r&&(n[r]=[i,s].filter(Boolean).join(" "))}return{...e,...n}}(r,n.props),ref:t?function(...e){return t=>e.forEach(e=>{"function"==typeof e?e(t):null!=e&&(e.current=t)})}(t,o):o})}return s.Children.count(n)>1?s.Children.only(null):null});ea.displayName="SlotClone";var ec=({children:e})=>(0,i.jsx)(i.Fragment,{children:e});function eu(e){return s.isValidElement(e)&&e.type===ec}var ed=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce((e,t)=>{let n=s.forwardRef((e,n)=>{let{asChild:r,...s}=e,o=r?el:t;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,i.jsx)(o,{...s,ref:n})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),ef=s.forwardRef((e,t)=>{let{pressed:n,defaultPressed:r=!1,onPressedChange:o,...l}=e,[a=!1,c]=function({prop:e,defaultProp:t,onChange:n=()=>{}}){let[r,i]=function({defaultProp:e,onChange:t}){let n=s.useState(e),[r]=n,i=s.useRef(r),o=eo(t);return s.useEffect(()=>{i.current!==r&&(o(r),i.current=r)},[r,i,o]),n}({defaultProp:t,onChange:n}),o=void 0!==e,l=o?e:r,a=eo(n),c=s.useCallback(t=>{if(o){let n="function"==typeof t?t(e):t;n!==e&&a(n)}else i(t)},[o,e,i,a]);return[l,c]}({prop:n,onChange:o,defaultProp:r});return(0,i.jsx)(ed.button,{type:"button","aria-pressed":a,"data-state":a?"on":"off","data-disabled":e.disabled?"":void 0,...l,ref:t,onClick:function(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),!1===n||!r.defaultPrevented)return t?.(r)}}(e.onClick,()=>{e.disabled||c(!a)})})});ef.displayName="Toggle";var eh=n(14375);let em=(0,eh.j)("inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",{variants:{variant:{default:"bg-transparent",outline:"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground"},size:{default:"h-10 px-3",sm:"h-9 px-2.5",lg:"h-11 px-5"}},defaultVariants:{variant:"default",size:"default"}}),ep=s.forwardRef((e,t)=>{let{className:n,variant:r,size:s,...o}=e;return(0,i.jsx)(ef,{ref:t,className:(0,m.cn)(em({variant:r,size:s,className:n})),...o})});ep.displayName=ef.displayName;class ev{update(e){this.render(e)}destroy(){this.root.unmount()}render(e){let{searchQuery:t,inputValue:n,currentMatchIndex:r,matches:s}=e,o=s.size;this.root.render((0,i.jsx)(eg,{onMount:()=>{var e;null===(e=this.input)||void 0===e||e.focus()},children:(0,i.jsxs)("div",{className:"flex items-center justify-between bg-secondary py-2 pl-3 text-secondary-foreground ",children:[(0,i.jsxs)("div",{className:"flex flex-1 items-center gap-2",children:[(0,i.jsxs)("div",{className:(0,m.cn)("cm-text-editor-search-input relative"),children:[(0,i.jsx)(es.I,{ref:e=>this.input=e,className:"max-w-[300px] bg-input/40 pr-24",placeholder:"Find...",autoComplete:"off",value:n,onChange:e=>this.options.onSearch(e.target.value)}),(0,i.jsxs)("div",{className:"absolute right-2 top-0.5 flex items-center gap-1",onClick:e=>{var t;null===(t=this.input)||void 0===t||t.focus()},children:[(0,i.jsx)(ep,{pressed:t.caseSensitive,onPressedChange:e=>this.options.setCaseSensitive(e),size:"sm",className:"h-8 data-[state=on]:bg-primary/80 data-[state=on]:text-primary-foreground",children:(0,i.jsx)(A.IconLetterCaseCapitalize,{strokeWidth:2})}),(0,i.jsx)(ep,{pressed:t.regexp,onPressedChange:e=>this.options.setRegexp(e),size:"sm",className:"h-8 data-[state=on]:bg-primary/80 data-[state=on]:text-primary-foreground",children:(0,i.jsx)(A.IconRegex,{})})]})]}),o>1&&(0,i.jsxs)("div",{className:"space-x-1",children:[(0,i.jsx)(z.z,{type:"button",size:"icon",variant:"secondary",onClick:this.options.findPrevious,"aria-label":"previous result",children:(0,i.jsx)(A.IconChevronLeft,{})}),(0,i.jsx)(z.z,{type:"button",size:"icon",variant:"secondary",onClick:this.options.findNext,"aria-label":"next result",children:(0,i.jsx)(A.IconChevronRight,{})})]}),t.search?(0,i.jsxs)("div",{className:"text-sm",children:[null!==r&&"".concat(r," of ")," ",o," ",o<=1?"result":"results"]}):null]}),(0,i.jsx)(z.z,{className:"shrink-0",size:"icon",variant:"ghost",onClick:e=>this.options.close(),children:(0,i.jsx)(A.IconClose,{})})]})}))}constructor(e){this.options=e,this.input=null,this.root=(0,R.createRoot)(this.options.root),this.render(e.initialState)}}function eg(e){let{children:t,onMount:n}=e;return(0,s.useEffect)(()=>{null==n||n()},[]),(0,i.jsx)(i.Fragment,{children:t})}var ex=e=>{var t,n,v;let{value:g,language:x,className:y}=e,{theme:k}=(0,u.F)(),j=s.useMemo(()=>[],[]),{copyToClipboard:C}=(0,d.m)({}),[N,S]=function(){let e=(0,f.useParams)(),[t,n]=s.useState(""),r=(0,h.d)(t),i=s.useCallback(e=>{window.location.hash=e},[]),o=()=>{let e=window.location.hash;r.current!==e&&n(e)};return s.useEffect(()=>(window.addEventListener("hashchange",o),()=>{window.removeEventListener("hashchange",o)}),[]),s.useEffect(o,[e]),[t,i]}(),L=null===(t=(0,q.kQ)(N))||void 0===t?void 0:t.start,P=null===(n=(0,q.kQ)(N))||void 0===n?void 0:n.end,[T,z]=s.useState(null),{isChatEnabled:V,activePath:A,activeEntryInfo:I,activeRepo:U,activeRepoRef:Q}=s.useContext(J.SourceCodeBrowserContext),{basename:X}=I,O=null!==(v=null==U?void 0:U.gitUrl)&&void 0!==v?v:"",B=s.useMemo(()=>{let e=[W({onSelectLine:e=>{if(!e){S("");return}S((0,m.nO)({start:e.line,end:e.endLine}))}}),(0,o.mi)({markerDOM(e){let t=document.createElement("div");return t.style.cursor="pointer",e?t.innerHTML='':t.innerHTML='',t}}),(0,a.Uw)(),ei({createPanel:e=>new ev(e)})];if(V&&A&&X){var t;e.push((t={language:x,path:X,gitUrl:O},w.QQ.define({create:()=>null,update(e,n){if(n.newSelection.main.empty)return clearTimeout(r),null;if(n.selection){if(function(e){let t=!!e.selection&&!e.selection.main.empty;return t&&e.isUserEvent("select")&&!e.isUserEvent("select.search")}(n)){let e=function(e,t){let{selection:n}=e,s=e.doc.lineAt(n.main.from),o=e.doc.lineAt(n.main.to),l=s.number!==o.number,a=l?o.from:n.main.from,c=e.doc.sliceString(e.selection.main.from,e.selection.main.to)||"";return{pos:a,above:!1,strictSide:!0,arrow:!1,create(){let e=document.createElement("div");e.style.background="transparent",e.style.border="none";let n=R.createRoot(e);return e.onclick=e=>e.stopImmediatePropagation(),r&&clearTimeout(r),r=window.setTimeout(()=>{n.render((0,i.jsx)(D,{text:c,language:null==t?void 0:t.language,lineFrom:s.number,lineTo:o.number,path:null==t?void 0:t.path,gitUrl:null==t?void 0:t.gitUrl}))},1e3),{dom:e}}}}(n.state,t);return e}return clearTimeout(r),null}return e},provide:e=>a.hJ.compute([e],t=>t.field(e))})))}return g&&j&&e.push(b(j),M(j),E(j)),e},[g,j,x]);s.useEffect(()=>{let e=e=>{if("number"==typeof L){if("copy_permalink"===e.action){var t,n,r;let e=(0,q.I)(U,null!==(n=null==Q?void 0:null===(t=Q.ref)||void 0===t?void 0:t.commit)&&void 0!==n?n:null==Q?void 0:Q.name,null!==(r=I.basename)&&void 0!==r?r:"",(0,q.BX)(I.viewMode)),i=new URL("".concat(window.location.origin,"/files/").concat(e));(0,q.p4)(window.location.hash)&&(i.hash=window.location.hash);let s=I.basename?(0,G.U$)(I.basename)[0]:void 0;"markdown"===s&&i.searchParams.set("plain","1"),C(i.toString());return}if("copy_line"===e.action){let e,t;if(!T)return;let n=T.state.doc.line(L);if(P&&(t=T.state.doc.line(P)),n&&t&&n.number<=t.number){let r=n.from,i=t.to;e=T.state.doc.slice(r,i).toString()}else n&&(e=n.text);e&&C(e)}}};return _.u.on("line_menu_action",e),()=>{_.u.off("line_menu_action",e)}},[g,L,P,T]),s.useEffect(()=>{if(!(0,c.Z)(L)&&T&&g)try{var e,t,n,r;let i=null==T?void 0:null===(t=T.state)||void 0===t?void 0:null===(e=t.doc)||void 0===e?void 0:e.line(L),s=(0,c.Z)(P)?null:null==T?void 0:null===(r=T.state)||void 0===r?void 0:null===(n=r.doc)||void 0===n?void 0:n.line(P);if(i){let e=i.number,t=null==s?void 0:s.number;if(Z(T,{line:e,endLine:t}),function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=e.domAtPos(t).node,i=3===r.nodeType?r.parentElement:r;if(i){let e=i.getBoundingClientRect(),t=window.innerHeight||document.documentElement.clientHeight;return e.top>=n&&e.bottom<=t}return!1}(T,i.from,90))return;T.dispatch({effects:a.tk.scrollIntoView(i.from,{y:"start",yMargin:200})})}}catch(e){}return()=>{T&&Z(T,null)}},[g,L,T]);let F=(0,h.d)(()=>{T&&(0,l.nx)(T)});return s.useEffect(()=>{let e=e=>{if(!T)return;let t=navigator.userAgent.toUpperCase().indexOf("MAC")>=0,n=(t?e.metaKey:e.ctrlKey)&&"f"===e.key;n&&(e.preventDefault(),F.current())};return window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e)}},[T]),(0,i.jsx)(p.Z,{className:"pb-2",value:g,theme:k,language:x,readonly:!0,extensions:B,viewDidUpdate:e=>z(e)})}},62202:function(e,t,n){"use strict";n.d(t,{$F:function(){return a},AW:function(){return d},Ju:function(){return m},VD:function(){return p},Xi:function(){return f},_x:function(){return c},h_:function(){return l},qB:function(){return h}});var r=n(36164),i=n(3546),s=n(19148),o=n(1544);let l=s.fC,a=s.xz;s.ZA,s.Uv,s.Tr;let c=s.Ee;s.wU;let u=i.forwardRef((e,t)=>{let{className:n,...i}=e;return(0,r.jsx)(s.tu,{ref:t,className:(0,o.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1",n),...i})});u.displayName=s.tu.displayName;let d=i.forwardRef((e,t)=>{let{className:n,sideOffset:i=4,...l}=e;return(0,r.jsx)(s.Uv,{children:(0,r.jsx)(s.VY,{ref:t,sideOffset:i,className:(0,o.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow animate-in 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",n),...l})})});d.displayName=s.VY.displayName;let f=i.forwardRef((e,t)=>{let{className:n,inset:i,...l}=e;return(0,r.jsx)(s.ck,{ref:t,className:(0,o.cn)("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",i&&"pl-8",n),...l})});f.displayName=s.ck.displayName;let h=i.forwardRef((e,t)=>{let{className:n,inset:i,...l}=e;return(0,r.jsx)(s.Rk,{ref:t,className:(0,o.cn)("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",i&&"pl-8",n),...l})});h.displayName=s.Rk.displayName;let m=i.forwardRef((e,t)=>{let{className:n,inset:i,...l}=e;return(0,r.jsx)(s.__,{ref:t,className:(0,o.cn)("px-2 py-1.5 text-sm font-semibold",i&&"pl-8",n),...l})});m.displayName=s.__.displayName;let p=i.forwardRef((e,t)=>{let{className:n,...i}=e;return(0,r.jsx)(s.Z0,{ref:t,className:(0,o.cn)("-mx-1 my-1 h-px bg-muted",n),...i})});p.displayName=s.Z0.displayName},85223:function(){}}]);
\ No newline at end of file
+(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4015],{44015:function(e,t,n){"use strict";let r;n.r(t),n.d(t,{default:function(){return ex}});var i=n(36164),s=n(3546),o=n(30352),l=n(49776),a=n(88105),c=n(74630),u=n(28242),d=n(28312),f=n(11978),h=n(16784),m=n(1544),p=n(85312);function v(e,t){let n=e.doc,{span:r,utf16_column_range:i}=t;try{let e=n.line(r.start.row+1),t=e.from+i.start,s=e.from+i.end;return{start:t,end:s}}catch(e){return null}}let g=a.p.mark({class:"cm-tag-mark"}),x=a.tk.baseTheme({".cm-tag-mark":{border:"1px solid hsla(var(--tag-blue-border))",padding:"0px 4px",borderRadius:"4px",backgroundColor:"hsla(var(--tag-blue-bg))",color:"hsla(var(--tag-blue-text)) !important"},".cm-tag-mark > span":{color:"hsla(var(--tag-blue-text)) !important"}});function y(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=e.state.doc,r=n.length;if(!r)return a.p.none;let i=[];for(let n of t){let t=v(e.state,n);try{t&&t.start<=r&&t.end<=r&&i.push(g.range(t.start,t.end))}catch(e){}}return i.length?a.p.set(i):a.p.none}let b=e=>{let t=a.lg.fromClass(class{update(t){(t.docChanged||t.viewportChanged)&&(this.marks=y(t.view,e))}constructor(t){this.marks=y(t,e)}},{decorations:e=>e.marks});return[t,x]};var w=n(94559);let k=a.p.mark({class:"cm-range-highlight"}),j=a.tk.baseTheme({".cm-range-highlight":{backgroundColor:"hsl(var(--selection))"}});function C(e,t){let n;let r=e.selection.ranges;e:for(let i of r)for(let r of t){let t=v(e,r);if(!t)continue;let s=t.start-r.name_range.start;if(i.from>=t.start&&i.to<=t.end){n={from:r.range.start+s,to:r.range.end+s};break e}}return n?a.p.set([k.range(n.from,n.to)]):a.p.none}let N=w.Py.define(),E=e=>{let t=a.lg.fromClass(class{update(t){if(t.selectionSet)this.triggerType="cursor",this.highlight=C(t.view.state,e);else if("cursor"!==this.triggerType)for(let e of t.transactions)for(let t of e.effects)t.is(N)&&t.value&&(this.highlight=t.value,this.triggerType="hover")}handleMouseListener(t){if(-1!==this.timeout&&clearTimeout(this.timeout),!this.highlight.size){let n=setTimeout(()=>{let n=this.view.posAtCoords({x:t.clientX,y:t.clientY});if(null!==n){let t=function(e,t){let n;for(let r of t)if(e>=r.name_range.start&&e<=r.name_range.end){n={from:r.range.start,to:r.range.end};break}return n?a.p.set([k.range(n.from,n.to)]):a.p.none}(n,e);if(t.size)this.triggerType="hover";else if("cursor"===this.triggerType)return;this.view.dispatch({effects:N.of(t)})}},100);this.timeout=n}}destroy(){}constructor(t){this.view=t,this.highlight=C(t.state,e),this.timeout=-1,this.triggerType="hover"}},{decorations:e=>e.highlight});return[t,j]},S=a.tk.baseTheme({".cm-tooltip":{border:"none !important"},".cm-tooltip-cursor":{backgroundColor:"hsl(var(--popover))",color:"hsl(var(--popover-foreground))",border:"none !important",padding:"2px 7px",borderRadius:"4px"}}),M=e=>[(0,a.bF)((t,n,r)=>{for(let r of e){let e=v(t.state,r);if(e&&n>=e.start&&n<=e.end)return{pos:n,above:!0,create(e){let t=document.createElement("div");return t.className="cm-tooltip-cursor",t.textContent="".concat(r.syntax_type_name),{dom:t,offset:{x:-20,y:4}}}}}return null}),S];var _=n(27064),R=n(87279),L=n(42891),P=n.n(L),T=n(23342),z=n(31458),V=n(62202),A=n(81565);let D=e=>{let{className:t,text:n,language:r,path:s,lineFrom:o,lineTo:l,gitUrl:a,...c}=e,u=e=>{_.u.emit("code_browser_quick_action",{action:e,code:n,language:r,path:s,lineFrom:o,lineTo:l,gitUrl:a})};return(0,i.jsxs)("div",{className:(0,m.cn)("mt-2 flex items-center gap-2 rounded-md border bg-background px-2 py-1",t),...c,children:[(0,i.jsx)(P(),{src:T.Z,width:32,alt:"logo"}),(0,i.jsx)(z.z,{size:"sm",variant:"outline",onClick:e=>u("explain"),children:"Explain"}),(0,i.jsxs)(V.h_,{modal:!1,children:[(0,i.jsx)(V.$F,{asChild:!0,children:(0,i.jsxs)(z.z,{size:"sm",variant:"outline",children:["Generate",(0,i.jsx)(A.IconChevronUpDown,{className:"ml-1"})]})}),(0,i.jsxs)(V.AW,{align:"start",children:[(0,i.jsx)(V.Xi,{className:"cursor-pointer",onSelect:()=>u("generate_unittest"),children:"Unit Test"}),(0,i.jsx)(V.Xi,{className:"cursor-pointer",onSelect:()=>u("generate_doc"),children:"Documentation"})]})]})]})},I=new class extends a.SJ{constructor(...e){super(...e),this.elementClass="cm-selectedLineGutter"}},U=w.Py.define(),Q=w.QQ.define({create:()=>null,update(e,t){for(let n of t.effects){if(n.is(U))return n.value;if(n.is(H))return(null==e?void 0:e.line)||(e={line:n.value}),{...e,endLine:n.value}}return e},provide:e=>[a.tk.decorations.compute([e],t=>{var n;let r=t.field(e);if(!r)return a.p.none;let i=null!==(n=r.endLine)&&void 0!==n?n:r.line,s=Math.min(r.line,i),o=Math.min(t.doc.lines,s===i?r.line:i),l=new w.f_;for(let e=s;e<=o;e++){let n=t.doc.line(e).from;l.add(n,n,a.p.line({class:"cm-selectedLine"}))}return l.finish()}),a.v7.compute([e],t=>{var n;let r=[],i=t.field(e);if(!i)return w.Xs.empty;let s=null!==(n=i.endLine)&&void 0!==n?n:i.line,o=Math.min(i.line,s),l=Math.min(t.doc.lines,o===s?i.line:s);for(let e=o;e<=l;e++){let n=t.doc.line(e).from;r.push(I.range(n))}return w.Xs.of(r)})]}),X=e=>{let{isMulti:t}=e;return(0,i.jsxs)(V.h_,{modal:!1,children:[(0,i.jsx)(V.$F,{asChild:!0,children:(0,i.jsx)(z.z,{className:"ml-1 h-5",size:"icon",variant:"secondary",children:(0,i.jsx)(A.IconMore,{})})}),(0,i.jsxs)(V.AW,{align:"start",children:[(0,i.jsx)(V.Xi,{className:"cursor-pointer",onSelect:()=>{_.u.emit("line_menu_action",{action:"copy_line"})},children:t?"Copy lines":"Copy line"}),(0,i.jsx)(V.Xi,{className:"cursor-pointer",onSelect:e=>{_.u.emit("line_menu_action",{action:"copy_permalink"})},children:"Copy permalink"})]})]})},O=new class extends a.SJ{toDOM(){let e=document.createElement("div"),t=R.createRoot(e);return t.render((0,i.jsx)(X,{isMulti:!1})),e}},B=new class extends a.SJ{toDOM(){let e=document.createElement("div"),t=R.createRoot(e);return t.render((0,i.jsx)(X,{isMulti:!0})),e}},F=a.tk.theme({".cm-lineMenuGutter":{width:"40px"},".cm-lineNumbers":{userSelect:"none",cursor:"pointer",color:"var(--line-number-color)","& .cm-gutterElement:hover":{textDecoration:"underline"}}});function Z(e,t){let n=$(t,e.state.doc);return e.dispatch({effects:U.of(n?t:null)}),t}let H=w.Py.define(),W=e=>{let{onSelectLine:t}=e;return[F,Q,(0,a.v5)({class:"cm-lineMenuGutter",markers:e=>(function(e){let t=e.state.field(Q);if(!$(t,e.state.doc))return w.Xs.empty;if(null==t?void 0:t.line){let n=!!t.endLine&&t.line!==t.endLine,r=t.endLine?Math.min(t.line,t.endLine):t.line,i=e.state.doc.line(r).from;return w.Xs.empty.update({add:[n?B.range(i):O.range(i)]})}return w.Xs.empty})(e),initialSpacer:()=>O,domEventHandlers:{mousedown(e,t,n){let r=e.state.doc.lineAt(t.from),i=r.number;return e.dispatch({effects:n.shiftKey?H.of(i):U.of({line:i})}),!0}}}),(0,a.Eu)({domEventHandlers:{mousedown(e,n,r){let i=e.state.doc.lineAt(n.from).number;return e.dispatch({effects:r.shiftKey?H.of(i):U.of({line:i})}),null==t||t(function(e){if(!e)return;let{line:t,endLine:n}=e;return t&&n?t===n?{line:t}:{line:Math.min(t,n),endLine:Math.max(t,n)}:t?{line:t}:void 0}(e.state.field(Q))),!1}}})]};function $(e,t){if(!t)return!1;let{lines:n}=t;return(null==e||!e.line||!(e.line>n))&&(null==e||!e.endLine||!(e.endLine>n))}var J=n(66616),q=n(48048);n(85223);var G=n(63484),K=n(58354);function Y(e,t){var n;return t.empty?null:null!==(n=e.get(t.from))&&void 0!==n?n:null}let ee=/[\s!,.:;?]/;function et(e,t){let n=new Map;if(!e.valid)return n;let r=1,i=e.getCursor(t),s=i.next();for(;!s.done;)s.value.from!==s.value.to&&n.set(s.value.from,r++),s=i.next();return n}let en=w.Py.define();class er{createDom(){let e=document.createElement("div");return e.onkeydown=this.onkeydown,e}update(e){var t,n,r,i,s;let o=this.state,a=(0,l.uP)(e.state),c=!a.eq(this.state.searchQuery);c&&(o={...o,inputValue:a.search,searchQuery:a,matches:et(a,e.view.state.doc)}),(c||e.selectionSet)&&(o={...o,currentMatchIndex:Y(o.matches,e.view.state.selection.main)}),o!==this.state&&(this.state=o,null===(t=this.panel)||void 0===t||t.update(this.state)),e.transactions.some(e=>e.effects.some(e=>e.is(en)&&e.value))&&(null===(r=this.panel)||void 0===r||null===(n=r.input)||void 0===n||n.focus(),null===(s=this.panel)||void 0===s||null===(i=s.input)||void 0===i||i.select())}mount(){this.panel=this.createPanelView({root:this.dom,initialState:this.state,onSearch:e=>this.searchTerm.next(e),findNext:this.findNext,findPrevious:this.findPrevious,setCaseSensitive:e=>this.commit({caseSensitive:e}),setRegexp:e=>this.commit({regexp:e}),close:()=>(0,l.N$)(this.view)})}destroy(){var e;this.subscriptions.forEach(e=>e.unsubscribe()),null===(e=this.panel)||void 0===e||e.destroy()}constructor(e,t,n){var r,i,s,o;this.view=e,this.createPanelView=t,this.top=!0,this.panel=null,this.searchTerm=(0,K.nN)(),this.subscriptions=[],this.previousValue=null,this.findNext=()=>{(0,l.g)(this.view),this.view.dispatch({effects:a.tk.scrollIntoView(this.view.state.selection.main.from,{y:"nearest",yMargin:20})})},this.findPrevious=()=>{(0,l.a7)(this.view),this.view.dispatch({effects:a.tk.scrollIntoView(this.view.state.selection.main.from,{y:"nearest",yMargin:20})})},this.onkeydown=e=>{var t;(0,a.$1)(this.view,e,"search-panel")?e.preventDefault():"Enter"===e.key&&e.target===(null===(t=this.panel)||void 0===t?void 0:t.input)&&(e.preventDefault(),e.shiftKey?this.findPrevious():this.findNext())},this.commit=e=>{let{search:t,caseSensitive:n,regexp:r}=e,i=new l.Jb({search:null!=t?t:this.state.searchQuery.search,caseSensitive:null!=n?n:this.state.searchQuery.caseSensitive,regexp:null!=r?r:this.state.searchQuery.regexp});if(!i.eq(this.state.searchQuery)){let e={},t=[l.ql.of(i)];if(i.search){let{scrollTop:n}=this.view.scrollDOM,r=this.view.lineBlockAtHeight(n);if(Math.abs(r.bottom-n)<=r.height/2&&(r=this.view.lineBlockAtHeight(n+r.height)),i.regexp&&!i.valid)return;let s=i.getCursor(this.view.state.doc,r.from).next();s.done&&(s=i.getCursor(this.view.state.doc).next()),s.done||(e={selection:{anchor:s.value.from,head:s.value.to},scrollIntoView:!0,userEvent:"select.search"},t.push(function(e,t){let{from:n,to:r}=t,i=e.state.doc.lineAt(n),s=e.state.doc.lineAt(r).to,o=Math.max(i.from,n-30),l=Math.min(s,r+30),c=e.state.sliceDoc(o,l);if(o!==i.from){for(let e=0;e<30;e++)if(!ee.test(c[e+1])&&ee.test(c[e])){c=c.slice(e);break}}if(l!==s){for(let e=c.length-1;e>c.length-30;e--)if(!ee.test(c[e-1])&&ee.test(c[e])){c=c.slice(0,e);break}}return a.tk.announce.of("".concat(e.state.phrase("current match"),". ").concat(c," ").concat(e.state.phrase("on line")," ").concat(i.number,"."))}(this.view,s.value)))}this.view.dispatch({...e,effects:t})}},this.dom=this.createDom();let c=(0,l.uP)(this.view.state),u=et(c,e.state.doc);this.state={searchQuery:new l.Jb({...c,caseSensitive:null!==(r=null==n?void 0:n.caseSensitive)&&void 0!==r?r:c.caseSensitive,regexp:null!==(i=null==n?void 0:n.regexp)&&void 0!==i?i:c.regexp,search:null!==(s=null==n?void 0:n.searchValue)&&void 0!==s?s:c.search}),inputValue:null!==(o=null==n?void 0:n.searchValue)&&void 0!==o?o:c.search,matches:u,currentMatchIndex:Y(u,e.state.selection.main)},this.subscriptions.push((0,K.zG)((0,K.TS)([(0,K._A)(this.state.searchQuery.search),this.searchTerm.source]),(0,K.hX)(e=>{let t=e!==this.previousValue;return this.previousValue=e,t}),(0,K.bw)(e=>{var t;this.state={...this.state,inputValue:e},null===(t=this.panel)||void 0===t||t.update(this.state)}),(0,K.Ds)(()=>100),(0,K.Ld)(e=>this.commit({search:e}))))}}let ei=e=>{let t=new w.F6;return[t.of(a.$f.of(l.Lp.map(e=>"Mod-f"===e.key?{...e,run:t=>{var n;let r=null===(n=e.run)||void 0===n?void 0:n.call(e,t);return!!r&&(t.dispatch({effects:en.of(!0)}),!0)}}:e))),(0,l.yC)({createPanel:t=>new er(t,e.createPanel,e.initialState)}),a.tk.theme({".cm-panels":{backgroundColor:"hsl(var(--secondary))",color:"hsl(var(--secondary-foreground))",borderBottom:"1px solid hsl(var(--border))",borderTop:"1px solid hsl(var(--border))",position:"sticky",top:"50px !important",zIndex:20}})]};var es=n(82394);function eo(e){let t=s.useRef(e);return s.useEffect(()=>{t.current=e}),s.useMemo(()=>(...e)=>t.current?.(...e),[])}n(30171);var el=s.forwardRef((e,t)=>{let{children:n,...r}=e,o=s.Children.toArray(n),l=o.find(eu);if(l){let e=l.props.children,n=o.map(t=>t!==l?t:s.Children.count(e)>1?s.Children.only(null):s.isValidElement(e)?e.props.children:null);return(0,i.jsx)(ea,{...r,ref:t,children:s.isValidElement(e)?s.cloneElement(e,void 0,n):null})}return(0,i.jsx)(ea,{...r,ref:t,children:n})});el.displayName="Slot";var ea=s.forwardRef((e,t)=>{let{children:n,...r}=e;if(s.isValidElement(n)){let e,i;let o=(e=Object.getOwnPropertyDescriptor(n.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning?n.ref:(e=Object.getOwnPropertyDescriptor(n,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning?n.props.ref:n.props.ref||n.ref;return s.cloneElement(n,{...function(e,t){let n={...t};for(let r in t){let i=e[r],s=t[r],o=/^on[A-Z]/.test(r);o?i&&s?n[r]=(...e)=>{s(...e),i(...e)}:i&&(n[r]=i):"style"===r?n[r]={...i,...s}:"className"===r&&(n[r]=[i,s].filter(Boolean).join(" "))}return{...e,...n}}(r,n.props),ref:t?function(...e){return t=>e.forEach(e=>{"function"==typeof e?e(t):null!=e&&(e.current=t)})}(t,o):o})}return s.Children.count(n)>1?s.Children.only(null):null});ea.displayName="SlotClone";var ec=({children:e})=>(0,i.jsx)(i.Fragment,{children:e});function eu(e){return s.isValidElement(e)&&e.type===ec}var ed=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce((e,t)=>{let n=s.forwardRef((e,n)=>{let{asChild:r,...s}=e,o=r?el:t;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,i.jsx)(o,{...s,ref:n})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),ef=s.forwardRef((e,t)=>{let{pressed:n,defaultPressed:r=!1,onPressedChange:o,...l}=e,[a=!1,c]=function({prop:e,defaultProp:t,onChange:n=()=>{}}){let[r,i]=function({defaultProp:e,onChange:t}){let n=s.useState(e),[r]=n,i=s.useRef(r),o=eo(t);return s.useEffect(()=>{i.current!==r&&(o(r),i.current=r)},[r,i,o]),n}({defaultProp:t,onChange:n}),o=void 0!==e,l=o?e:r,a=eo(n),c=s.useCallback(t=>{if(o){let n="function"==typeof t?t(e):t;n!==e&&a(n)}else i(t)},[o,e,i,a]);return[l,c]}({prop:n,onChange:o,defaultProp:r});return(0,i.jsx)(ed.button,{type:"button","aria-pressed":a,"data-state":a?"on":"off","data-disabled":e.disabled?"":void 0,...l,ref:t,onClick:function(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),!1===n||!r.defaultPrevented)return t?.(r)}}(e.onClick,()=>{e.disabled||c(!a)})})});ef.displayName="Toggle";var eh=n(14375);let em=(0,eh.j)("inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",{variants:{variant:{default:"bg-transparent",outline:"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground"},size:{default:"h-10 px-3",sm:"h-9 px-2.5",lg:"h-11 px-5"}},defaultVariants:{variant:"default",size:"default"}}),ep=s.forwardRef((e,t)=>{let{className:n,variant:r,size:s,...o}=e;return(0,i.jsx)(ef,{ref:t,className:(0,m.cn)(em({variant:r,size:s,className:n})),...o})});ep.displayName=ef.displayName;class ev{update(e){this.render(e)}destroy(){this.root.unmount()}render(e){let{searchQuery:t,inputValue:n,currentMatchIndex:r,matches:s}=e,o=s.size;this.root.render((0,i.jsx)(eg,{onMount:()=>{var e;null===(e=this.input)||void 0===e||e.focus()},children:(0,i.jsxs)("div",{className:"flex items-center justify-between bg-secondary py-2 pl-3 text-secondary-foreground ",children:[(0,i.jsxs)("div",{className:"flex flex-1 items-center gap-2",children:[(0,i.jsxs)("div",{className:(0,m.cn)("cm-text-editor-search-input relative"),children:[(0,i.jsx)(es.I,{ref:e=>this.input=e,className:"max-w-[300px] bg-input/40 pr-24",placeholder:"Find...",autoComplete:"off",value:n,onChange:e=>this.options.onSearch(e.target.value)}),(0,i.jsxs)("div",{className:"absolute right-2 top-0.5 flex items-center gap-1",onClick:e=>{var t;null===(t=this.input)||void 0===t||t.focus()},children:[(0,i.jsx)(ep,{pressed:t.caseSensitive,onPressedChange:e=>this.options.setCaseSensitive(e),size:"sm",className:"h-8 data-[state=on]:bg-primary/80 data-[state=on]:text-primary-foreground",children:(0,i.jsx)(A.IconLetterCaseCapitalize,{strokeWidth:2})}),(0,i.jsx)(ep,{pressed:t.regexp,onPressedChange:e=>this.options.setRegexp(e),size:"sm",className:"h-8 data-[state=on]:bg-primary/80 data-[state=on]:text-primary-foreground",children:(0,i.jsx)(A.IconRegex,{})})]})]}),o>1&&(0,i.jsxs)("div",{className:"space-x-1",children:[(0,i.jsx)(z.z,{type:"button",size:"icon",variant:"secondary",onClick:this.options.findPrevious,"aria-label":"previous result",children:(0,i.jsx)(A.IconChevronLeft,{})}),(0,i.jsx)(z.z,{type:"button",size:"icon",variant:"secondary",onClick:this.options.findNext,"aria-label":"next result",children:(0,i.jsx)(A.IconChevronRight,{})})]}),t.search?(0,i.jsxs)("div",{className:"text-sm",children:[null!==r&&"".concat(r," of ")," ",o," ",o<=1?"result":"results"]}):null]}),(0,i.jsx)(z.z,{className:"shrink-0",size:"icon",variant:"ghost",onClick:e=>this.options.close(),children:(0,i.jsx)(A.IconClose,{})})]})}))}constructor(e){this.options=e,this.input=null,this.root=(0,R.createRoot)(this.options.root),this.render(e.initialState)}}function eg(e){let{children:t,onMount:n}=e;return(0,s.useEffect)(()=>{null==n||n()},[]),(0,i.jsx)(i.Fragment,{children:t})}var ex=e=>{var t,n,v;let{value:g,language:x,className:y}=e,{theme:k}=(0,u.F)(),j=s.useMemo(()=>[],[]),{copyToClipboard:C}=(0,d.m)({}),[N,S]=function(){let e=(0,f.useParams)(),[t,n]=s.useState(""),r=(0,h.d)(t),i=s.useCallback(e=>{window.location.hash=e},[]),o=()=>{let e=window.location.hash;r.current!==e&&n(e)};return s.useEffect(()=>(window.addEventListener("hashchange",o),()=>{window.removeEventListener("hashchange",o)}),[]),s.useEffect(o,[e]),[t,i]}(),L=null===(t=(0,q.kQ)(N))||void 0===t?void 0:t.start,P=null===(n=(0,q.kQ)(N))||void 0===n?void 0:n.end,[T,z]=s.useState(null),{isChatEnabled:V,activePath:A,activeEntryInfo:I,activeRepo:U,activeRepoRef:Q}=s.useContext(J.SourceCodeBrowserContext),{basename:X}=I,O=null!==(v=null==U?void 0:U.gitUrl)&&void 0!==v?v:"",B=s.useMemo(()=>{let e=[W({onSelectLine:e=>{if(!e){S("");return}S((0,m.nO)({start:e.line,end:e.endLine}))}}),(0,o.mi)({markerDOM(e){let t=document.createElement("div");return t.style.cursor="pointer",e?t.innerHTML='':t.innerHTML='',t}}),(0,a.Uw)(),ei({createPanel:e=>new ev(e)})];if(V&&A&&X){var t;e.push((t={language:x,path:X,gitUrl:O},w.QQ.define({create:()=>null,update(e,n){if(n.newSelection.main.empty)return clearTimeout(r),null;if(n.selection){if(function(e){let t=!!e.selection&&!e.selection.main.empty;return t&&e.isUserEvent("select")&&!e.isUserEvent("select.search")}(n)){let e=function(e,t){let{selection:n}=e,s=e.doc.lineAt(n.main.from),o=e.doc.lineAt(n.main.to),l=s.number!==o.number,a=l?o.from:n.main.from,c=e.doc.sliceString(e.selection.main.from,e.selection.main.to)||"";return{pos:a,above:!1,strictSide:!0,arrow:!1,create(){let e=document.createElement("div");e.style.background="transparent",e.style.border="none";let n=R.createRoot(e);return e.onclick=e=>e.stopImmediatePropagation(),r&&clearTimeout(r),r=window.setTimeout(()=>{n.render((0,i.jsx)(D,{text:c,language:null==t?void 0:t.language,lineFrom:s.number,lineTo:o.number,path:null==t?void 0:t.path,gitUrl:null==t?void 0:t.gitUrl}))},1e3),{dom:e}}}}(n.state,t);return e}return clearTimeout(r),null}return e},provide:e=>a.hJ.compute([e],t=>t.field(e))})))}return g&&j&&e.push(b(j),M(j),E(j)),e},[g,j,x]);s.useEffect(()=>{let e=e=>{if("number"==typeof L){if("copy_permalink"===e.action){var t,n,r;let e=(0,q.I)(U,null!==(n=null==Q?void 0:null===(t=Q.ref)||void 0===t?void 0:t.commit)&&void 0!==n?n:null==Q?void 0:Q.name,null!==(r=I.basename)&&void 0!==r?r:"",(0,q.BX)(I.viewMode)),i=new URL("".concat(window.location.origin,"/files/").concat(e));(0,q.p4)(window.location.hash)&&(i.hash=window.location.hash);let s=I.basename?(0,G.U$)(I.basename)[0]:void 0;"markdown"===s&&i.searchParams.set("plain","1"),C(i.toString());return}if("copy_line"===e.action){let e,t;if(!T)return;let n=T.state.doc.line(L);if(P&&(t=T.state.doc.line(P)),n&&t&&n.number<=t.number){let r=n.from,i=t.to;e=T.state.doc.slice(r,i).toString()}else n&&(e=n.text);e&&C(e)}}};return _.u.on("line_menu_action",e),()=>{_.u.off("line_menu_action",e)}},[g,L,P,T]),s.useEffect(()=>{if(!(0,c.Z)(L)&&T&&g)try{var e,t,n,r;let i=null==T?void 0:null===(t=T.state)||void 0===t?void 0:null===(e=t.doc)||void 0===e?void 0:e.line(L),s=(0,c.Z)(P)?null:null==T?void 0:null===(r=T.state)||void 0===r?void 0:null===(n=r.doc)||void 0===n?void 0:n.line(P);if(i){let e=i.number,t=null==s?void 0:s.number;if(Z(T,{line:e,endLine:t}),function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=e.domAtPos(t).node,i=3===r.nodeType?r.parentElement:r;if(i){let e=i.getBoundingClientRect(),t=window.innerHeight||document.documentElement.clientHeight;return e.top>=n&&e.bottom<=t}return!1}(T,i.from,90))return;T.dispatch({effects:a.tk.scrollIntoView(i.from,{y:"start",yMargin:200})})}}catch(e){}return()=>{T&&Z(T,null)}},[g,L,T]);let F=(0,h.d)(()=>{T&&(0,l.nx)(T)});return s.useEffect(()=>{let e=e=>{if(!T)return;let t=navigator.userAgent.toUpperCase().indexOf("MAC")>=0,n=(t?e.metaKey:e.ctrlKey)&&"f"===e.key;n&&(e.preventDefault(),F.current())};return window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e)}},[T]),(0,i.jsx)(p.Z,{className:"pb-2",value:g,theme:k,language:x,readonly:!0,extensions:B,viewDidUpdate:e=>z(e)})}},62202:function(e,t,n){"use strict";n.d(t,{$F:function(){return a},AW:function(){return d},Ju:function(){return m},VD:function(){return p},Xi:function(){return f},_x:function(){return c},h_:function(){return l},qB:function(){return h}});var r=n(36164),i=n(3546),s=n(19148),o=n(1544);let l=s.fC,a=s.xz;s.ZA,s.Uv,s.Tr;let c=s.Ee;s.wU;let u=i.forwardRef((e,t)=>{let{className:n,...i}=e;return(0,r.jsx)(s.tu,{ref:t,className:(0,o.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1",n),...i})});u.displayName=s.tu.displayName;let d=i.forwardRef((e,t)=>{let{className:n,sideOffset:i=4,...l}=e;return(0,r.jsx)(s.Uv,{children:(0,r.jsx)(s.VY,{ref:t,sideOffset:i,className:(0,o.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow animate-in 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",n),...l})})});d.displayName=s.VY.displayName;let f=i.forwardRef((e,t)=>{let{className:n,inset:i,...l}=e;return(0,r.jsx)(s.ck,{ref:t,className:(0,o.cn)("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",i&&"pl-8",n),...l})});f.displayName=s.ck.displayName;let h=i.forwardRef((e,t)=>{let{className:n,inset:i,...l}=e;return(0,r.jsx)(s.Rk,{ref:t,className:(0,o.cn)("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",i&&"pl-8",n),...l})});h.displayName=s.Rk.displayName;let m=i.forwardRef((e,t)=>{let{className:n,inset:i,...l}=e;return(0,r.jsx)(s.__,{ref:t,className:(0,o.cn)("px-2 py-1.5 text-sm font-semibold",i&&"pl-8",n),...l})});m.displayName=s.__.displayName;let p=i.forwardRef((e,t)=>{let{className:n,...i}=e;return(0,r.jsx)(s.Z0,{ref:t,className:(0,o.cn)("-mx-1 my-1 h-px bg-muted",n),...i})});p.displayName=s.Z0.displayName},85223:function(){}}]);
\ No newline at end of file
diff --git a/ee/tabby-webserver/ui/_next/static/chunks/446-1a58715f9bc80e5c.js b/ee/tabby-webserver/ui/_next/static/chunks/446-0bd8d4664518919b.js
similarity index 57%
rename from ee/tabby-webserver/ui/_next/static/chunks/446-1a58715f9bc80e5c.js
rename to ee/tabby-webserver/ui/_next/static/chunks/446-0bd8d4664518919b.js
index 094121db96a0..b476336fc808 100644
--- a/ee/tabby-webserver/ui/_next/static/chunks/446-1a58715f9bc80e5c.js
+++ b/ee/tabby-webserver/ui/_next/static/chunks/446-0bd8d4664518919b.js
@@ -1,4 +1,4 @@
-"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[446],{28242:function(e,t,r){r.d(t,{F:function(){return u},f:function(){return c}});var n=r(3546);let o=["light","dark"],a="(prefers-color-scheme: dark)",i="undefined"==typeof window,l=(0,n.createContext)(void 0),s={setTheme:e=>{},themes:[]},u=()=>{var e;return null!==(e=(0,n.useContext)(l))&&void 0!==e?e:s},c=e=>(0,n.useContext)(l)?n.createElement(n.Fragment,null,e.children):n.createElement(m,e),d=["light","dark"],m=({forcedTheme:e,disableTransitionOnChange:t=!1,enableSystem:r=!0,enableColorScheme:i=!0,storageKey:s="theme",themes:u=d,defaultTheme:c=r?"system":"light",attribute:m="data-theme",value:p,children:b,nonce:y})=>{let[S,w]=(0,n.useState)(()=>v(s,c)),[E,I]=(0,n.useState)(()=>v(s)),T=p?Object.values(p):u,C=(0,n.useCallback)(e=>{let n=e;if(!n)return;"system"===e&&r&&(n=g());let a=p?p[n]:n,l=t?h():null,s=document.documentElement;if("class"===m?(s.classList.remove(...T),a&&s.classList.add(a)):a?s.setAttribute(m,a):s.removeAttribute(m),i){let e=o.includes(c)?c:null,t=o.includes(n)?n:e;s.style.colorScheme=t}null==l||l()},[]),$=(0,n.useCallback)(e=>{w(e);try{localStorage.setItem(s,e)}catch(e){}},[e]),F=(0,n.useCallback)(t=>{let n=g(t);I(n),"system"===S&&r&&!e&&C("system")},[S,e]);(0,n.useEffect)(()=>{let e=window.matchMedia(a);return e.addListener(F),F(e),()=>e.removeListener(F)},[F]),(0,n.useEffect)(()=>{let e=e=>{e.key===s&&$(e.newValue||c)};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[$]),(0,n.useEffect)(()=>{C(null!=e?e:S)},[e,S]);let k=(0,n.useMemo)(()=>({theme:S,setTheme:$,forcedTheme:e,resolvedTheme:"system"===S?E:S,themes:r?[...u,"system"]:u,systemTheme:r?E:void 0}),[S,$,e,E,r,u]);return n.createElement(l.Provider,{value:k},n.createElement(f,{forcedTheme:e,disableTransitionOnChange:t,enableSystem:r,enableColorScheme:i,storageKey:s,themes:u,defaultTheme:c,attribute:m,value:p,children:b,attrs:T,nonce:y}),b)},f=(0,n.memo)(({forcedTheme:e,storageKey:t,attribute:r,enableSystem:i,enableColorScheme:l,defaultTheme:s,value:u,attrs:c,nonce:d})=>{let m="system"===s,f="class"===r?`var d=document.documentElement,c=d.classList;c.remove(${c.map(e=>`'${e}'`).join(",")});`:`var d=document.documentElement,n='${r}',s='setAttribute';`,v=l?o.includes(s)&&s?`if(e==='light'||e==='dark'||!e)d.style.colorScheme=e||'${s}'`:"if(e==='light'||e==='dark')d.style.colorScheme=e":"",h=(e,t=!1,n=!0)=>{let a=u?u[e]:e,i=t?e+"|| ''":`'${a}'`,s="";return l&&n&&!t&&o.includes(e)&&(s+=`d.style.colorScheme = '${e}';`),"class"===r?s+=t||a?`c.add(${i})`:"null":a&&(s+=`d[s](n,${i})`),s},g=e?`!function(){${f}${h(e)}}()`:i?`!function(){try{${f}var e=localStorage.getItem('${t}');if('system'===e||(!e&&${m})){var t='${a}',m=window.matchMedia(t);if(m.media!==t||m.matches){${h("dark")}}else{${h("light")}}}else if(e){${u?`var x=${JSON.stringify(u)};`:""}${h(u?"x[e]":"e",!0)}}${m?"":"else{"+h(s,!1,!1)+"}"}${v}}catch(e){}}()`:`!function(){try{${f}var e=localStorage.getItem('${t}');if(e){${u?`var x=${JSON.stringify(u)};`:""}${h(u?"x[e]":"e",!0)}}else{${h(s,!1,!1)};}${v}}catch(t){}}();`;return n.createElement("script",{nonce:d,dangerouslySetInnerHTML:{__html:g}})},()=>!0),v=(e,t)=>{let r;if(!i){try{r=localStorage.getItem(e)||void 0}catch(e){}return r||t}},h=()=>{let e=document.createElement("style");return e.appendChild(document.createTextNode("*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(e),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(e)},1)}},g=e=>(e||(e=window.matchMedia(a)),e.matches?"dark":"light")},67635:function(e,t,r){/**
+"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[446],{28242:function(e,t,r){r.d(t,{F:function(){return u},f:function(){return c}});var n=r(3546);let o=["light","dark"],a="(prefers-color-scheme: dark)",i="undefined"==typeof window,l=(0,n.createContext)(void 0),s={setTheme:e=>{},themes:[]},u=()=>{var e;return null!==(e=(0,n.useContext)(l))&&void 0!==e?e:s},c=e=>(0,n.useContext)(l)?n.createElement(n.Fragment,null,e.children):n.createElement(m,e),d=["light","dark"],m=({forcedTheme:e,disableTransitionOnChange:t=!1,enableSystem:r=!0,enableColorScheme:i=!0,storageKey:s="theme",themes:u=d,defaultTheme:c=r?"system":"light",attribute:m="data-theme",value:p,children:b,nonce:y})=>{let[S,w]=(0,n.useState)(()=>v(s,c)),[E,I]=(0,n.useState)(()=>v(s)),T=p?Object.values(p):u,C=(0,n.useCallback)(e=>{let n=e;if(!n)return;"system"===e&&r&&(n=g());let a=p?p[n]:n,l=t?h():null,s=document.documentElement;if("class"===m?(s.classList.remove(...T),a&&s.classList.add(a)):a?s.setAttribute(m,a):s.removeAttribute(m),i){let e=o.includes(c)?c:null,t=o.includes(n)?n:e;s.style.colorScheme=t}null==l||l()},[]),$=(0,n.useCallback)(e=>{w(e);try{localStorage.setItem(s,e)}catch(e){}},[e]),F=(0,n.useCallback)(t=>{let n=g(t);I(n),"system"===S&&r&&!e&&C("system")},[S,e]);(0,n.useEffect)(()=>{let e=window.matchMedia(a);return e.addListener(F),F(e),()=>e.removeListener(F)},[F]),(0,n.useEffect)(()=>{let e=e=>{e.key===s&&$(e.newValue||c)};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[$]),(0,n.useEffect)(()=>{C(null!=e?e:S)},[e,S]);let R=(0,n.useMemo)(()=>({theme:S,setTheme:$,forcedTheme:e,resolvedTheme:"system"===S?E:S,themes:r?[...u,"system"]:u,systemTheme:r?E:void 0}),[S,$,e,E,r,u]);return n.createElement(l.Provider,{value:R},n.createElement(f,{forcedTheme:e,disableTransitionOnChange:t,enableSystem:r,enableColorScheme:i,storageKey:s,themes:u,defaultTheme:c,attribute:m,value:p,children:b,attrs:T,nonce:y}),b)},f=(0,n.memo)(({forcedTheme:e,storageKey:t,attribute:r,enableSystem:i,enableColorScheme:l,defaultTheme:s,value:u,attrs:c,nonce:d})=>{let m="system"===s,f="class"===r?`var d=document.documentElement,c=d.classList;c.remove(${c.map(e=>`'${e}'`).join(",")});`:`var d=document.documentElement,n='${r}',s='setAttribute';`,v=l?o.includes(s)&&s?`if(e==='light'||e==='dark'||!e)d.style.colorScheme=e||'${s}'`:"if(e==='light'||e==='dark')d.style.colorScheme=e":"",h=(e,t=!1,n=!0)=>{let a=u?u[e]:e,i=t?e+"|| ''":`'${a}'`,s="";return l&&n&&!t&&o.includes(e)&&(s+=`d.style.colorScheme = '${e}';`),"class"===r?s+=t||a?`c.add(${i})`:"null":a&&(s+=`d[s](n,${i})`),s},g=e?`!function(){${f}${h(e)}}()`:i?`!function(){try{${f}var e=localStorage.getItem('${t}');if('system'===e||(!e&&${m})){var t='${a}',m=window.matchMedia(t);if(m.media!==t||m.matches){${h("dark")}}else{${h("light")}}}else if(e){${u?`var x=${JSON.stringify(u)};`:""}${h(u?"x[e]":"e",!0)}}${m?"":"else{"+h(s,!1,!1)+"}"}${v}}catch(e){}}()`:`!function(){try{${f}var e=localStorage.getItem('${t}');if(e){${u?`var x=${JSON.stringify(u)};`:""}${h(u?"x[e]":"e",!0)}}else{${h(s,!1,!1)};}${v}}catch(t){}}();`;return n.createElement("script",{nonce:d,dangerouslySetInnerHTML:{__html:g}})},()=>!0),v=(e,t)=>{let r;if(!i){try{r=localStorage.getItem(e)||void 0}catch(e){}return r||t}},h=()=>{let e=document.createElement("style");return e.appendChild(document.createTextNode("*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(e),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(e)},1)}},g=e=>(e||(e=window.matchMedia(a)),e.matches?"dark":"light")},67635:function(e,t,r){/**
* @license React
* use-sync-external-store-shim/with-selector.production.min.js
*
@@ -6,4 +6,4 @@
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
- */var n=r(3546),o=r(94348),a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},i=o.useSyncExternalStore,l=n.useRef,s=n.useEffect,u=n.useMemo,c=n.useDebugValue;t.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var d=l(null);if(null===d.current){var m={hasValue:!1,value:null};d.current=m}else m=d.current;var f=i(e,(d=u(function(){function e(e){if(!s){if(s=!0,i=e,e=n(e),void 0!==o&&m.hasValue){var t=m.value;if(o(t,e))return l=t}return l=e}if(t=l,a(i,e))return t;var r=n(e);return void 0!==o&&o(t,r)?t:(i=e,l=r)}var i,l,s=!1,u=void 0===r?null:r;return[function(){return e(t())},null===u?void 0:function(){return e(u())}]},[t,r,n,o]))[0],d[1]);return s(function(){m.hasValue=!0,m.value=f},[f]),c(f),f}},52635:function(e,t,r){e.exports=r(67635)},1333:function(e,t,r){r.d(t,{Pc:function(){return w},ck:function(){return A},fC:function(){return R}});var n=r(65122),o=r(3546),a=r(65727),i=r(85656),l=r(79869),s=r(47091),u=r(29434),c=r(72205),d=r(17957),m=r(27250),f=r(57541);let v="rovingFocusGroup.onEntryFocus",h={bubbles:!1,cancelable:!0},g="RovingFocusGroup",[p,b,y]=(0,i.B)(g),[S,w]=(0,s.b)(g,[y]),[E,I]=S(g),T=(0,o.forwardRef)((e,t)=>(0,o.createElement)(p.Provider,{scope:e.__scopeRovingFocusGroup},(0,o.createElement)(p.Slot,{scope:e.__scopeRovingFocusGroup},(0,o.createElement)(C,(0,n.Z)({},e,{ref:t}))))),C=(0,o.forwardRef)((e,t)=>{let{__scopeRovingFocusGroup:r,orientation:i,loop:s=!1,dir:u,currentTabStopId:g,defaultCurrentTabStopId:p,onCurrentTabStopIdChange:y,onEntryFocus:S,...w}=e,I=(0,o.useRef)(null),T=(0,l.e)(t,I),C=(0,f.gm)(u),[$=null,F]=(0,m.T)({prop:g,defaultProp:p,onChange:y}),[R,A]=(0,o.useState)(!1),D=(0,d.W)(S),z=b(r),O=(0,o.useRef)(!1),[x,M]=(0,o.useState)(0);return(0,o.useEffect)(()=>{let e=I.current;if(e)return e.addEventListener(v,D),()=>e.removeEventListener(v,D)},[D]),(0,o.createElement)(E,{scope:r,orientation:i,dir:C,loop:s,currentTabStopId:$,onItemFocus:(0,o.useCallback)(e=>F(e),[F]),onItemShiftTab:(0,o.useCallback)(()=>A(!0),[]),onFocusableItemAdd:(0,o.useCallback)(()=>M(e=>e+1),[]),onFocusableItemRemove:(0,o.useCallback)(()=>M(e=>e-1),[])},(0,o.createElement)(c.WV.div,(0,n.Z)({tabIndex:R||0===x?-1:0,"data-orientation":i},w,{ref:T,style:{outline:"none",...e.style},onMouseDown:(0,a.M)(e.onMouseDown,()=>{O.current=!0}),onFocus:(0,a.M)(e.onFocus,e=>{let t=!O.current;if(e.target===e.currentTarget&&t&&!R){let t=new CustomEvent(v,h);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=z().filter(e=>e.focusable),t=e.find(e=>e.active),r=e.find(e=>e.id===$),n=[t,r,...e].filter(Boolean),o=n.map(e=>e.ref.current);k(o)}}O.current=!1}),onBlur:(0,a.M)(e.onBlur,()=>A(!1))})))}),$=(0,o.forwardRef)((e,t)=>{let{__scopeRovingFocusGroup:r,focusable:i=!0,active:l=!1,tabStopId:s,...d}=e,m=(0,u.M)(),f=s||m,v=I("RovingFocusGroupItem",r),h=v.currentTabStopId===f,g=b(r),{onFocusableItemAdd:y,onFocusableItemRemove:S}=v;return(0,o.useEffect)(()=>{if(i)return y(),()=>S()},[i,y,S]),(0,o.createElement)(p.ItemSlot,{scope:r,id:f,focusable:i,active:l},(0,o.createElement)(c.WV.span,(0,n.Z)({tabIndex:h?0:-1,"data-orientation":v.orientation},d,{ref:t,onMouseDown:(0,a.M)(e.onMouseDown,e=>{i?v.onItemFocus(f):e.preventDefault()}),onFocus:(0,a.M)(e.onFocus,()=>v.onItemFocus(f)),onKeyDown:(0,a.M)(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey){v.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=function(e,t,r){var n;let o=(n=e.key,"rtl"!==r?n:"ArrowLeft"===n?"ArrowRight":"ArrowRight"===n?"ArrowLeft":n);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(o))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(o)))return F[o]}(e,v.orientation,v.dir);if(void 0!==t){e.preventDefault();let o=g().filter(e=>e.focusable),a=o.map(e=>e.ref.current);if("last"===t)a.reverse();else if("prev"===t||"next"===t){var r,n;"prev"===t&&a.reverse();let o=a.indexOf(e.currentTarget);a=v.loop?(r=a,n=o+1,r.map((e,t)=>r[(n+t)%r.length])):a.slice(o+1)}setTimeout(()=>k(a))}})})))}),F={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function k(e){let t=document.activeElement;for(let r of e)if(r===t||(r.focus(),document.activeElement!==t))return}let R=T,A=$},27257:function(e,t,r){r.d(t,{Ue:function(){return d}});let n=e=>{let t;let r=new Set,n=(e,n)=>{let o="function"==typeof e?e(t):e;if(!Object.is(o,t)){let e=t;t=(null!=n?n:"object"!=typeof o)?o:Object.assign({},t,o),r.forEach(r=>r(t,e))}},o=()=>t,a={setState:n,getState:o,subscribe:e=>(r.add(e),()=>r.delete(e)),destroy:()=>{console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),r.clear()}};return t=e(n,o,a),a},o=e=>e?n(e):n;var a=r(3546),i=r(52635);let{useDebugValue:l}=a,{useSyncExternalStoreWithSelector:s}=i,u=!1,c=e=>{"function"!=typeof e&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");let t="function"==typeof e?o(e):e,r=(e,r)=>(function(e,t=e.getState,r){r&&!u&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),u=!0);let n=s(e.subscribe,e.getState,e.getServerState||e.getState,t,r);return l(n),n})(t,e,r);return Object.assign(r,t),r},d=e=>e?c(e):c},85654:function(e,t,r){r.d(t,{tJ:function(){return i}});let n=e=>t=>{try{let r=e(t);if(r instanceof Promise)return r;return{then:e=>n(e)(r),catch(e){return this}}}catch(e){return{then(e){return this},catch:t=>n(t)(e)}}},o=(e,t)=>(r,o,a)=>{let i,l,s={getStorage:()=>localStorage,serialize:JSON.stringify,deserialize:JSON.parse,partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},u=!1,c=new Set,d=new Set;try{i=s.getStorage()}catch(e){}if(!i)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${s.name}', the given storage is currently unavailable.`),r(...e)},o,a);let m=n(s.serialize),f=()=>{let e;let t=s.partialize({...o()}),r=m({state:t,version:s.version}).then(e=>i.setItem(s.name,e)).catch(t=>{e=t});if(e)throw e;return r},v=a.setState;a.setState=(e,t)=>{v(e,t),f()};let h=e((...e)=>{r(...e),f()},o,a),g=()=>{var e;if(!i)return;u=!1,c.forEach(e=>e(o()));let t=(null==(e=s.onRehydrateStorage)?void 0:e.call(s,o()))||void 0;return n(i.getItem.bind(i))(s.name).then(e=>{if(e)return s.deserialize(e)}).then(e=>{if(e){if("number"!=typeof e.version||e.version===s.version)return e.state;if(s.migrate)return s.migrate(e.state,e.version);console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}}).then(e=>{var t;return r(l=s.merge(e,null!=(t=o())?t:h),!0),f()}).then(()=>{null==t||t(l,void 0),u=!0,d.forEach(e=>e(l))}).catch(e=>{null==t||t(void 0,e)})};return a.persist={setOptions:e=>{s={...s,...e},e.getStorage&&(i=e.getStorage())},clearStorage:()=>{null==i||i.removeItem(s.name)},getOptions:()=>s,rehydrate:()=>g(),hasHydrated:()=>u,onHydrate:e=>(c.add(e),()=>{c.delete(e)}),onFinishHydration:e=>(d.add(e),()=>{d.delete(e)})},g(),l||h},a=(e,t)=>(r,o,a)=>{let i,l={storage:function(e,t){let r;try{r=e()}catch(e){return}return{getItem:e=>{var n;let o=e=>null===e?null:JSON.parse(e,null==t?void 0:t.reviver),a=null!=(n=r.getItem(e))?n:null;return a instanceof Promise?a.then(o):o(a)},setItem:(e,n)=>r.setItem(e,JSON.stringify(n,null==t?void 0:t.replacer)),removeItem:e=>r.removeItem(e)}}(()=>localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},s=!1,u=new Set,c=new Set,d=l.storage;if(!d)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${l.name}', the given storage is currently unavailable.`),r(...e)},o,a);let m=()=>{let e=l.partialize({...o()});return d.setItem(l.name,{state:e,version:l.version})},f=a.setState;a.setState=(e,t)=>{f(e,t),m()};let v=e((...e)=>{r(...e),m()},o,a),h=()=>{var e,t;if(!d)return;s=!1,u.forEach(e=>{var t;return e(null!=(t=o())?t:v)});let a=(null==(t=l.onRehydrateStorage)?void 0:t.call(l,null!=(e=o())?e:v))||void 0;return n(d.getItem.bind(d))(l.name).then(e=>{if(e){if("number"!=typeof e.version||e.version===l.version)return e.state;if(l.migrate)return l.migrate(e.state,e.version);console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}}).then(e=>{var t;return r(i=l.merge(e,null!=(t=o())?t:v),!0),m()}).then(()=>{null==a||a(i,void 0),i=o(),s=!0,c.forEach(e=>e(i))}).catch(e=>{null==a||a(void 0,e)})};return a.persist={setOptions:e=>{l={...l,...e},e.storage&&(d=e.storage)},clearStorage:()=>{null==d||d.removeItem(l.name)},getOptions:()=>l,rehydrate:()=>h(),hasHydrated:()=>s,onHydrate:e=>(u.add(e),()=>{u.delete(e)}),onFinishHydration:e=>(c.add(e),()=>{c.delete(e)})},l.skipHydration||h(),i||v},i=(e,t)=>"getStorage"in t||"serialize"in t||"deserialize"in t?(console.warn("[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead."),o(e,t)):a(e,t)}}]);
\ No newline at end of file
+ */var n=r(3546),o=r(94348),a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},i=o.useSyncExternalStore,l=n.useRef,s=n.useEffect,u=n.useMemo,c=n.useDebugValue;t.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var d=l(null);if(null===d.current){var m={hasValue:!1,value:null};d.current=m}else m=d.current;var f=i(e,(d=u(function(){function e(e){if(!s){if(s=!0,i=e,e=n(e),void 0!==o&&m.hasValue){var t=m.value;if(o(t,e))return l=t}return l=e}if(t=l,a(i,e))return t;var r=n(e);return void 0!==o&&o(t,r)?t:(i=e,l=r)}var i,l,s=!1,u=void 0===r?null:r;return[function(){return e(t())},null===u?void 0:function(){return e(u())}]},[t,r,n,o]))[0],d[1]);return s(function(){m.hasValue=!0,m.value=f},[f]),c(f),f}},52635:function(e,t,r){e.exports=r(67635)},1333:function(e,t,r){r.d(t,{Pc:function(){return w},ck:function(){return A},fC:function(){return k}});var n=r(65122),o=r(3546),a=r(65727),i=r(85656),l=r(79869),s=r(47091),u=r(29434),c=r(72205),d=r(17957),m=r(27250),f=r(57541);let v="rovingFocusGroup.onEntryFocus",h={bubbles:!1,cancelable:!0},g="RovingFocusGroup",[p,b,y]=(0,i.B)(g),[S,w]=(0,s.b)(g,[y]),[E,I]=S(g),T=(0,o.forwardRef)((e,t)=>(0,o.createElement)(p.Provider,{scope:e.__scopeRovingFocusGroup},(0,o.createElement)(p.Slot,{scope:e.__scopeRovingFocusGroup},(0,o.createElement)(C,(0,n.Z)({},e,{ref:t}))))),C=(0,o.forwardRef)((e,t)=>{let{__scopeRovingFocusGroup:r,orientation:i,loop:s=!1,dir:u,currentTabStopId:g,defaultCurrentTabStopId:p,onCurrentTabStopIdChange:y,onEntryFocus:S,...w}=e,I=(0,o.useRef)(null),T=(0,l.e)(t,I),C=(0,f.gm)(u),[$=null,F]=(0,m.T)({prop:g,defaultProp:p,onChange:y}),[k,A]=(0,o.useState)(!1),D=(0,d.W)(S),z=b(r),O=(0,o.useRef)(!1),[x,M]=(0,o.useState)(0);return(0,o.useEffect)(()=>{let e=I.current;if(e)return e.addEventListener(v,D),()=>e.removeEventListener(v,D)},[D]),(0,o.createElement)(E,{scope:r,orientation:i,dir:C,loop:s,currentTabStopId:$,onItemFocus:(0,o.useCallback)(e=>F(e),[F]),onItemShiftTab:(0,o.useCallback)(()=>A(!0),[]),onFocusableItemAdd:(0,o.useCallback)(()=>M(e=>e+1),[]),onFocusableItemRemove:(0,o.useCallback)(()=>M(e=>e-1),[])},(0,o.createElement)(c.WV.div,(0,n.Z)({tabIndex:k||0===x?-1:0,"data-orientation":i},w,{ref:T,style:{outline:"none",...e.style},onMouseDown:(0,a.M)(e.onMouseDown,()=>{O.current=!0}),onFocus:(0,a.M)(e.onFocus,e=>{let t=!O.current;if(e.target===e.currentTarget&&t&&!k){let t=new CustomEvent(v,h);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=z().filter(e=>e.focusable),t=e.find(e=>e.active),r=e.find(e=>e.id===$),n=[t,r,...e].filter(Boolean),o=n.map(e=>e.ref.current);R(o)}}O.current=!1}),onBlur:(0,a.M)(e.onBlur,()=>A(!1))})))}),$=(0,o.forwardRef)((e,t)=>{let{__scopeRovingFocusGroup:r,focusable:i=!0,active:l=!1,tabStopId:s,...d}=e,m=(0,u.M)(),f=s||m,v=I("RovingFocusGroupItem",r),h=v.currentTabStopId===f,g=b(r),{onFocusableItemAdd:y,onFocusableItemRemove:S}=v;return(0,o.useEffect)(()=>{if(i)return y(),()=>S()},[i,y,S]),(0,o.createElement)(p.ItemSlot,{scope:r,id:f,focusable:i,active:l},(0,o.createElement)(c.WV.span,(0,n.Z)({tabIndex:h?0:-1,"data-orientation":v.orientation},d,{ref:t,onMouseDown:(0,a.M)(e.onMouseDown,e=>{i?v.onItemFocus(f):e.preventDefault()}),onFocus:(0,a.M)(e.onFocus,()=>v.onItemFocus(f)),onKeyDown:(0,a.M)(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey){v.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=function(e,t,r){var n;let o=(n=e.key,"rtl"!==r?n:"ArrowLeft"===n?"ArrowRight":"ArrowRight"===n?"ArrowLeft":n);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(o))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(o)))return F[o]}(e,v.orientation,v.dir);if(void 0!==t){e.preventDefault();let o=g().filter(e=>e.focusable),a=o.map(e=>e.ref.current);if("last"===t)a.reverse();else if("prev"===t||"next"===t){var r,n;"prev"===t&&a.reverse();let o=a.indexOf(e.currentTarget);a=v.loop?(r=a,n=o+1,r.map((e,t)=>r[(n+t)%r.length])):a.slice(o+1)}setTimeout(()=>R(a))}})})))}),F={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function R(e){let t=document.activeElement;for(let r of e)if(r===t||(r.focus(),document.activeElement!==t))return}let k=T,A=$},27257:function(e,t,r){r.d(t,{Ue:function(){return m},oR:function(){return c}});let n=e=>{let t;let r=new Set,n=(e,n)=>{let o="function"==typeof e?e(t):e;if(!Object.is(o,t)){let e=t;t=(null!=n?n:"object"!=typeof o)?o:Object.assign({},t,o),r.forEach(r=>r(t,e))}},o=()=>t,a={setState:n,getState:o,subscribe:e=>(r.add(e),()=>r.delete(e)),destroy:()=>{console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),r.clear()}};return t=e(n,o,a),a},o=e=>e?n(e):n;var a=r(3546),i=r(52635);let{useDebugValue:l}=a,{useSyncExternalStoreWithSelector:s}=i,u=!1;function c(e,t=e.getState,r){r&&!u&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),u=!0);let n=s(e.subscribe,e.getState,e.getServerState||e.getState,t,r);return l(n),n}let d=e=>{"function"!=typeof e&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");let t="function"==typeof e?o(e):e,r=(e,r)=>c(t,e,r);return Object.assign(r,t),r},m=e=>e?d(e):d},85654:function(e,t,r){r.d(t,{tJ:function(){return i}});let n=e=>t=>{try{let r=e(t);if(r instanceof Promise)return r;return{then:e=>n(e)(r),catch(e){return this}}}catch(e){return{then(e){return this},catch:t=>n(t)(e)}}},o=(e,t)=>(r,o,a)=>{let i,l,s={getStorage:()=>localStorage,serialize:JSON.stringify,deserialize:JSON.parse,partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},u=!1,c=new Set,d=new Set;try{i=s.getStorage()}catch(e){}if(!i)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${s.name}', the given storage is currently unavailable.`),r(...e)},o,a);let m=n(s.serialize),f=()=>{let e;let t=s.partialize({...o()}),r=m({state:t,version:s.version}).then(e=>i.setItem(s.name,e)).catch(t=>{e=t});if(e)throw e;return r},v=a.setState;a.setState=(e,t)=>{v(e,t),f()};let h=e((...e)=>{r(...e),f()},o,a),g=()=>{var e;if(!i)return;u=!1,c.forEach(e=>e(o()));let t=(null==(e=s.onRehydrateStorage)?void 0:e.call(s,o()))||void 0;return n(i.getItem.bind(i))(s.name).then(e=>{if(e)return s.deserialize(e)}).then(e=>{if(e){if("number"!=typeof e.version||e.version===s.version)return e.state;if(s.migrate)return s.migrate(e.state,e.version);console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}}).then(e=>{var t;return r(l=s.merge(e,null!=(t=o())?t:h),!0),f()}).then(()=>{null==t||t(l,void 0),u=!0,d.forEach(e=>e(l))}).catch(e=>{null==t||t(void 0,e)})};return a.persist={setOptions:e=>{s={...s,...e},e.getStorage&&(i=e.getStorage())},clearStorage:()=>{null==i||i.removeItem(s.name)},getOptions:()=>s,rehydrate:()=>g(),hasHydrated:()=>u,onHydrate:e=>(c.add(e),()=>{c.delete(e)}),onFinishHydration:e=>(d.add(e),()=>{d.delete(e)})},g(),l||h},a=(e,t)=>(r,o,a)=>{let i,l={storage:function(e,t){let r;try{r=e()}catch(e){return}return{getItem:e=>{var n;let o=e=>null===e?null:JSON.parse(e,null==t?void 0:t.reviver),a=null!=(n=r.getItem(e))?n:null;return a instanceof Promise?a.then(o):o(a)},setItem:(e,n)=>r.setItem(e,JSON.stringify(n,null==t?void 0:t.replacer)),removeItem:e=>r.removeItem(e)}}(()=>localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},s=!1,u=new Set,c=new Set,d=l.storage;if(!d)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${l.name}', the given storage is currently unavailable.`),r(...e)},o,a);let m=()=>{let e=l.partialize({...o()});return d.setItem(l.name,{state:e,version:l.version})},f=a.setState;a.setState=(e,t)=>{f(e,t),m()};let v=e((...e)=>{r(...e),m()},o,a),h=()=>{var e,t;if(!d)return;s=!1,u.forEach(e=>{var t;return e(null!=(t=o())?t:v)});let a=(null==(t=l.onRehydrateStorage)?void 0:t.call(l,null!=(e=o())?e:v))||void 0;return n(d.getItem.bind(d))(l.name).then(e=>{if(e){if("number"!=typeof e.version||e.version===l.version)return e.state;if(l.migrate)return l.migrate(e.state,e.version);console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}}).then(e=>{var t;return r(i=l.merge(e,null!=(t=o())?t:v),!0),m()}).then(()=>{null==a||a(i,void 0),i=o(),s=!0,c.forEach(e=>e(i))}).catch(e=>{null==a||a(void 0,e)})};return a.persist={setOptions:e=>{l={...l,...e},e.storage&&(d=e.storage)},clearStorage:()=>{null==d||d.removeItem(l.name)},getOptions:()=>l,rehydrate:()=>h(),hasHydrated:()=>s,onHydrate:e=>(u.add(e),()=>{u.delete(e)}),onFinishHydration:e=>(c.add(e),()=>{c.delete(e)})},l.skipHydration||h(),i||v},i=(e,t)=>"getStorage"in t||"serialize"in t||"deserialize"in t?(console.warn("[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead."),o(e,t)):a(e,t)}}]);
\ No newline at end of file
diff --git a/ee/tabby-webserver/ui/_next/static/chunks/4656-92b455867aa00e82.js b/ee/tabby-webserver/ui/_next/static/chunks/4656-92b455867aa00e82.js
deleted file mode 100644
index 3c0431efed75..000000000000
--- a/ee/tabby-webserver/ui/_next/static/chunks/4656-92b455867aa00e82.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4656],{31458:function(e,n,r){r.d(n,{d:function(){return u},z:function(){return d}});var t=r(36164),i=r(3546),s=r(74047),o=r(14375),a=r(1544);let u=(0,o.j)("inline-flex items-center justify-center rounded-md text-sm font-medium shadow ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-md hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90","hover-destructive":"shadow-none hover:bg-destructive/90 hover:text-destructive-foreground",outline:"border border-input hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"shadow-none hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 shadow-none hover:underline"},size:{default:"h-8 px-4 py-2",sm:"h-8 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-8 w-8 p-0"}},defaultVariants:{variant:"default",size:"default"}}),d=i.forwardRef((e,n)=>{let{className:r,variant:i,size:o,asChild:d=!1,...l}=e,c=d?s.g7:"button";return(0,t.jsx)(c,{className:(0,a.cn)(u({variant:i,size:o,className:r})),ref:n,...l})});d.displayName="Button"},80605:function(e,n,r){r.d(n,{UA:function(){return c},Uw:function(){return d},c7:function(){return u},jJ:function(){return l},xG:function(){return a}});var t=r(40055),i=r(43240);let s=(0,i.BX)("\n query GetServerInfo {\n serverInfo {\n isAdminInitialized\n isEmailConfigured\n isChatEnabled\n allowSelfSignup\n isDemoMode\n }\n }\n"),o=()=>{let[{data:e}]=(0,t.aM)({query:s});return null==e?void 0:e.serverInfo},a=()=>{var e;return null===(e=o())||void 0===e?void 0:e.isChatEnabled},u=()=>{var e;return null===(e=o())||void 0===e?void 0:e.isAdminInitialized},d=()=>{var e;return null===(e=o())||void 0===e?void 0:e.isEmailConfigured},l=()=>{var e;return null===(e=o())||void 0===e?void 0:e.allowSelfSignup},c=()=>{var e;return null===(e=o())||void 0===e?void 0:e.isDemoMode}},91302:function(e,n,r){r.d(n,{Dp:function(){return h},Ho:function(){return b},QJ:function(){return k},av:function(){return w},kP:function(){return S},zq:function(){return I}});var t,i,s=r(36164),o=r(3546),a=r(11978),u=r(24426),d=r.n(u),l=r(43240),c=r(80605),f=r(11634),v=r(66794);function g(e,n){var r,t;let s=function(e,n){switch(n.type){case i.SignIn:case i.Refresh:return{status:"authenticated",data:n.data};case i.SignOut:return{status:"unauthenticated",data:void 0}}}(0,n);return e.status==s.status&&(r=e.data,t=s.data,(null==r?void 0:r.accessToken)===(null==t?void 0:t.accessToken)&&(null==r?void 0:r.refreshToken)===(null==t?void 0:t.refreshToken))?e:s}(t=i||(i={}))[t.SignIn=0]="SignIn",t[t.SignOut=1]="SignOut",t[t.Refresh=2]="Refresh";let p=o.createContext({}),h=(0,l.BX)("\n mutation refreshToken($refreshToken: String!) {\n refreshToken(refreshToken: $refreshToken) {\n accessToken\n refreshToken\n }\n }\n"),m=(0,l.BX)("\n mutation LogoutAllSessions {\n logoutAllSessions\n }\n"),b=e=>{let{children:n}=e,[r,t]=o.useState(!1),[a]=d()(v.nd,void 0),[u,l]=o.useReducer(g,{status:"loading",data:void 0});o.useEffect(()=>{(null==a?void 0:a.accessToken)&&(null==a?void 0:a.refreshToken)?l({type:i.SignIn,data:a}):l({type:i.SignOut}),t(!0)},[]),o.useEffect(()=>{!r||((null==a?void 0:a.accessToken)&&(null==a?void 0:a.refreshToken)?l({type:i.Refresh,data:a}):(null==a?void 0:a.accessToken)||(null==a?void 0:a.refreshToken)||l({type:i.SignOut}))},[a]);let c=o.useMemo(()=>{var e;return(null==u?void 0:u.status)=="authenticated"?{data:{accessToken:u.data.accessToken},status:u.status}:{status:null!==(e=null==u?void 0:u.status)&&void 0!==e?e:"loading",data:null}},[u]);return(0,s.jsx)(p.Provider,{value:{authState:u,dispatch:l,session:c},children:n})};class y extends Error{constructor(){super("AuthProvider is missing. Please add the AuthProvider at root level")}}function $(){let e=o.useContext(p);if(!e)throw new y;return e}function I(){let{dispatch:e}=$(),[n,r]=d()(v.nd,void 0);return async n=>(r({accessToken:n.accessToken,refreshToken:n.refreshToken}),e({type:i.SignIn,data:n}),!0)}function k(){let e=(0,f.D)(m),{dispatch:n}=$(),[r,t]=d()(v.nd,void 0);return async()=>{await e(),t(void 0),n({type:i.SignOut})}}function S(){let{session:e}=$();return e}let A=["/auth/signin","/auth/signup","/auth/reset-password"];function w(){let e=(0,c.c7)(),n=(0,a.useRouter)(),r=(0,a.usePathname)(),t=(0,a.useSearchParams)(),{data:i,status:s}=S();return o.useEffect(()=>{if("loading"===s||"authenticated"===s||void 0===e)return;let i="/auth/signup"===r&&"true"===t.get("isAdmin");if(!i&&!e)return n.replace("/auth/signup?isAdmin=true");A.includes(r)||n.replace("/auth/signin")},[e,s]),i}},11634:function(e,n,r){r.d(n,{D:function(){return g},L:function(){return p}});var t=r(22365),i=r(28552),s=r(81013),o=r(17522),a=r(79716),u=r(74630),d=r(40055),l=r(44745),c=r(91302),f=r(70410),v=r(66794);function g(e,n){var r;let[t,i]=(0,d.Db)(e),s=(null==n?void 0:n.form)?(r=n.form,e=>{let{graphQLErrors:n=[]}=e;for(let e of n)if(e.extensions&&e.extensions["validation-errors"]){let n=e.extensions["validation-errors"];for(let e of n.errors)r.setError(e.path,e)}else(null==e?void 0:e.originalError)?r.setError("root",e.originalError):(null==e?void 0:e.message)&&r.setError("root",{message:e.message})}):void 0,o=async(e,r)=>{let t;try{if(null==(t=await i(e,r))?void 0:t.error)s&&s(t.error),(null==n?void 0:n.onError)&&n.onError(t.error);else if(!(0,u.Z)(null==t?void 0:t.data)){var o;null==n||null===(o=n.onCompleted)||void 0===o||o.call(n,t.data)}}catch(e){(null==n?void 0:n.onError)&&n.onError(e);return}return t};return o}let p=new l.KU({url:"/graphql",requestPolicy:"cache-and-network",exchanges:[(0,i.HG)({keys:{CompletionStats:()=>null,ServerInfo:()=>null,RepositorySearch:()=>null,RepositoryList:()=>null,RepositoryGrep:()=>null,GrepLine:()=>null,GrepFile:()=>null,GrepTextOrBase64:()=>null,GrepSubMatch:()=>null,GitReference:()=>null,MessageAttachment:()=>null,MessageAttachmentCode:()=>null,MessageAttachmentDoc:()=>null,NetworkSetting:()=>null,ContextInfo:()=>null},resolvers:{Query:{invitations:(0,s.N)(),gitRepositories:(0,s.N)(),webCrawlerUrls:(0,s.N)(),integrations:(0,s.N)(),threads:(0,s.N)()}},updates:{Mutation:{deleteInvitation(e,n,r,t){e.deleteInvitation&&r.inspectFields("Query").filter(e=>"invitations"===e.fieldName).forEach(e=>{r.updateQuery({query:f.lE,variables:e.arguments},e=>{var r;return(null==e?void 0:null===(r=e.invitations)||void 0===r?void 0:r.edges)&&(e.invitations.edges=e.invitations.edges.filter(e=>e.node.id!==n.id)),e})})},deleteGitRepository(e,n,r,t){e.deleteGitRepository&&r.inspectFields("Query").filter(e=>"gitRepositories"===e.fieldName).forEach(e=>{r.updateQuery({query:f.S1,variables:e.arguments},e=>{var r;return(null==e?void 0:null===(r=e.gitRepositories)||void 0===r?void 0:r.edges)&&(e.gitRepositories.edges=e.gitRepositories.edges.filter(e=>e.node.id!==n.id)),e})})},deleteIntegration(e,n,r,t){e.deleteIntegration&&r.inspectFields("Query").filter(e=>"integrations"===e.fieldName).forEach(e=>{r.updateQuery({query:f.kb,variables:e.arguments},e=>((null==e?void 0:e.integrations)&&(e.integrations.edges=e.integrations.edges.filter(e=>e.node.id!==n.id)),e))})},createIntegration(e,n,r){let t="Query";r.inspectFields(t).filter(e=>{var r,t,i;return"integrations"===e.fieldName&&!!(null===(r=e.arguments)||void 0===r?void 0:r.kind)&&(null===(t=e.arguments)||void 0===t?void 0:t.kind)===(null==n?void 0:null===(i=n.input)||void 0===i?void 0:i.kind)}).forEach(e=>{r.invalidate(t,e.fieldName,e.arguments)})},upsertUserGroupMembership(e,n,r,t){let{userGroupId:i,userId:s,isGroupAdmin:o}=n.input,{user:a,isInsert:u}=t.variables.extraParams||{};e.upsertUserGroupMembership&&r.updateQuery({query:f.gI},e=>((null==e?void 0:e.userGroups)&&(e.userGroups=e.userGroups.map(e=>{if(e.id!==i)return e;let n=[...e.members];if(u){let e=new Date().toISOString();n.push({user:{...a,__typename:"UserSecured"},isGroupAdmin:o,createdAt:e,updatedAt:e,__typename:"UserGroupMembership"})}else n=n.map(e=>e.user.id!==s?e:{...e,isGroupAdmin:o});return{...e,members:n}})),e))},deleteUserGroupMembership(e,n,r,t){let{userGroupId:i,userId:s}=n;e.deleteUserGroupMembership&&r.updateQuery({query:f.gI},e=>((null==e?void 0:e.userGroups)&&(e.userGroups=e.userGroups.map(e=>{if(e.id!==i)return e;let n=[...e.members].filter(e=>e.user.id!==s);return{...e,members:n}})),e))},grantSourceIdReadAccess(e,n,r,t){if(e.grantSourceIdReadAccess){let{sourceId:e}=n;r.inspectFields("Query").filter(n=>{var r;return"sourceIdAccessPolicies"===n.fieldName&&(null===(r=n.arguments)||void 0===r?void 0:r.sourceId)===e}).forEach(e=>{r.updateQuery({query:f.hA,variables:e.arguments},e=>{var r;if(null==e?void 0:null===(r=e.sourceIdAccessPolicies)||void 0===r?void 0:r.read){let{userGroupName:r}=t.variables.extraParams||{};e.sourceIdAccessPolicies.read=[...e.sourceIdAccessPolicies.read,{__typename:"UserGroup",id:n.userGroupId,name:r}]}return e})})}},revokeSourceIdReadAccess(e,n,r,t){if(e.revokeSourceIdReadAccess){let{userGroupId:e,sourceId:t}=n;r.inspectFields("Query").filter(e=>{var n;return"sourceIdAccessPolicies"===e.fieldName&&(null===(n=e.arguments)||void 0===n?void 0:n.sourceId)===t}).forEach(n=>{r.updateQuery({query:f.hA,variables:n.arguments},n=>{var r,i;return(null==n?void 0:null===(r=n.sourceIdAccessPolicies)||void 0===r?void 0:r.sourceId)===t&&(null==n?void 0:null===(i=n.sourceIdAccessPolicies)||void 0===i?void 0:i.read)&&(n.sourceIdAccessPolicies.read=n.sourceIdAccessPolicies.read.filter(n=>n.id!==e)),n})})}}}},optimistic:{upsertUserGroupMembership:()=>!0,deleteUserGroupMembership:()=>!0,grantSourceIdReadAccess:()=>!0,revokeSourceIdReadAccess:()=>!0}}),(0,t.M)(async e=>{let n=(0,v.bW)(),r=null==n?void 0:n.accessToken,t=null==n?void 0:n.refreshToken;return{addAuthToOperation(n){let i=(0,v.bW)(),s=(0,v.jW)();if(r=null==i?void 0:i.accessToken,t=null==i?void 0:i.refreshToken,r)return e.appendHeaders(n,{Authorization:"Bearer ".concat(r)});if(s){let r={Authorization:"Bearer ".concat(s.authorization),...s.headers};return e.appendHeaders(n,r)}return n},didAuthError(e,n){let r=e.graphQLErrors.some(e=>{var n;return(null==e?void 0:null===(n=e.extensions)||void 0===n?void 0:n.code)==="UNAUTHORIZED"});return r&&v.gN.clearAccessToken(),r},willAuthError(e){let n=(0,v.bW)(),i=(0,v.jW)();if(r=null==n?void 0:n.accessToken,t=null==n?void 0:n.refreshToken,"query"===e.kind&&e.query.definitions.some(e=>{var n;return"OperationDefinition"===e.kind&&(null===(n=e.name)||void 0===n?void 0:n.value)&&["GetServerInfo"].includes(e.name.value)})||"mutation"===e.kind&&e.query.definitions.some(e=>{var n;return"OperationDefinition"===e.kind&&(null===(n=e.name)||void 0===n?void 0:n.value)&&["tokenAuth","register"].includes(e.name.value)})||t&&"mutation"===e.kind&&e.query.definitions.some(e=>{var n;return"OperationDefinition"===e.kind&&(null==e?void 0:null===(n=e.name)||void 0===n?void 0:n.value)==="refreshToken"}))return!1;if(r)try{let{exp:e}=(0,a.o)(r);return(0,v.pw)(e)}catch(e){return!0}else if(i)return!(null==i?void 0:i.authorization);else return v.gN.clearAccessToken(),!0},refreshAuth:async()=>v.gN.refreshToken(async()=>{var n;let r=null===(n=(0,v.bW)())||void 0===n?void 0:n.refreshToken;if(r)return e.mutate(c.Dp,{refreshToken:r}).then(e=>{var n;return null==e?void 0:null===(n=e.data)||void 0===n?void 0:n.refreshToken})})}}),(0,l.Dk)({onError(e){e.message.startsWith("[GraphQL]")&&(e.message=e.message.replace("[GraphQL]","").trim())}}),l.Ek,(0,l.pV)({forwardSubscription(e,n){var r,t,i;let s=null!==(i=null===(t=n.context.fetchOptions)||void 0===t?void 0:null===(r=t.headers)||void 0===r?void 0:r.Authorization)&&void 0!==i?i:"",a=window.location.protocol,u=window.location.host,d=(0,o.eI)({url:"".concat("https:"===a?"wss:":"ws:","//").concat(u,"/subscriptions"),connectionParams:{authorization:s}}),l={...e,query:e.query||""};return{subscribe(e){let n=d.subscribe(l,e);return{unsubscribe:n}}}}})]})},70410:function(e,n,r){r.d(n,{Cl:function(){return c},D7:function(){return p},DQ:function(){return u},GG:function(){return o},Gx:function(){return h},S1:function(){return s},TH:function(){return d},XL:function(){return y},Y6:function(){return l},gI:function(){return m},hA:function(){return b},kb:function(){return f},lE:function(){return i},r4:function(){return $},ts:function(){return v},yB:function(){return a},zz:function(){return g}});var t=r(43240);let i=(0,t.BX)("\n query ListInvitations(\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n invitations(after: $after, before: $before, first: $first, last: $last) {\n edges {\n node {\n id\n email\n code\n createdAt\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),s=(0,t.BX)("\n query gitRepositories(\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n gitRepositories(\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n name\n gitUrl\n sourceId\n jobInfo {\n lastJobRun {\n id\n job\n createdAt\n finishedAt\n exitCode\n }\n command\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),o=(0,t.BX)("\n query ListJobRuns(\n $ids: [ID!]\n $jobs: [String!]\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n jobRuns(\n ids: $ids\n jobs: $jobs\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n job\n createdAt\n startedAt\n finishedAt\n exitCode\n stdout\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),a=(0,t.BX)("\n query GetJobRunStats($jobs: [String!]) {\n jobRunStats(jobs: $jobs) {\n success\n failed\n pending\n }\n }\n"),u=(0,t.BX)("\n query ListJobs {\n jobs\n }\n"),d=(0,t.BX)("\n query ListUsers($after: String, $before: String, $first: Int, $last: Int) {\n users(after: $after, before: $before, first: $first, last: $last) {\n edges {\n node {\n id\n email\n isAdmin\n isOwner\n createdAt\n active\n name\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),l=(0,t.BX)("\n query DailyStatsInPastYear($users: [ID!]) {\n dailyStatsInPastYear(users: $users) {\n start\n end\n completions\n selects\n views\n }\n }\n"),c=(0,t.BX)("\n query DailyStats(\n $start: DateTime!\n $end: DateTime!\n $users: [ID!]\n $languages: [Language!]\n ) {\n dailyStats(start: $start, end: $end, users: $users, languages: $languages) {\n start\n end\n completions\n selects\n views\n language\n }\n }\n"),f=(0,t.BX)("\n query ListIntegrations(\n $ids: [ID!]\n $kind: IntegrationKind\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n integrations(\n ids: $ids\n kind: $kind\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n displayName\n status\n apiBase\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),v=(0,t.BX)("\n query ListIntegratedRepositories(\n $ids: [ID!]\n $kind: IntegrationKind\n $active: Boolean\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n integratedRepositories(\n ids: $ids\n kind: $kind\n active: $active\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n displayName\n gitUrl\n active\n sourceId\n jobInfo {\n lastJobRun {\n id\n job\n createdAt\n finishedAt\n startedAt\n exitCode\n }\n command\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),g=(0,t.BX)("\n query RepositoryList {\n repositoryList {\n id\n name\n kind\n gitUrl\n refs {\n name\n commit\n }\n }\n }\n"),p=(0,t.BX)("\n query RepositorySearch(\n $kind: RepositoryKind!\n $id: ID!\n $rev: String\n $pattern: String!\n ) {\n repositorySearch(kind: $kind, id: $id, rev: $rev, pattern: $pattern) {\n type\n path\n indices\n }\n }\n"),h=(0,t.BX)("\n query ContextInfo {\n contextInfo {\n sources {\n id\n sourceKind\n sourceId\n sourceName\n }\n }\n }\n"),m=(0,t.BX)("\n query UserGroups {\n userGroups {\n id\n name\n createdAt\n updatedAt\n members {\n user {\n id\n email\n name\n createdAt\n }\n isGroupAdmin\n createdAt\n updatedAt\n }\n }\n }\n"),b=(0,t.BX)("\n query sourceIdAccessPolicies($sourceId: String!) {\n sourceIdAccessPolicies(sourceId: $sourceId) {\n sourceId\n read {\n id\n name\n }\n }\n }\n"),y=(0,t.BX)("\n query ListThreads(\n $ids: [ID!]\n $isEphemeral: Boolean\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n threads(\n ids: $ids\n isEphemeral: $isEphemeral\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n userId\n createdAt\n updatedAt\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),$=(0,t.BX)("\n query ListThreadMessages(\n $threadId: ID!\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n threadMessages(\n threadId: $threadId\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n threadId\n role\n content\n attachment {\n code {\n gitUrl\n filepath\n language\n content\n startLine\n }\n clientCode {\n filepath\n content\n startLine\n }\n doc {\n title\n link\n content\n }\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n")},66794:function(e,n,r){r.d(n,{bW:function(){return u},gN:function(){return p},jW:function(){return v},nd:function(){return o},pw:function(){return c},zr:function(){return g}});var t=r(79716),i=r(74630),s=r(1544);let o="_tabby_auth",a="_tabby_chat_sdk_fetcher_options",u=()=>{if((0,s.S_)()){let e=localStorage.getItem(o);if(e)try{return JSON.parse(e)}catch(e){}}},d=e=>{localStorage.setItem(o,JSON.stringify(e))},l=()=>{localStorage.removeItem(o),window.dispatchEvent(new StorageEvent("storage",{storageArea:window.localStorage,url:window.location.href,key:o}))},c=e=>!!(0,i.Z)(e)||Date.now()>1e3*e,f=e=>!(0,i.Z)(e)&&Date.now()-1e3*e<6e4,v=()=>{try{let e=sessionStorage.getItem(a);if(!e)return;return JSON.parse(e)}catch(e){return}},g=e=>{if(e)try{sessionStorage.setItem(a,JSON.stringify(e))}catch(e){sessionStorage.removeItem(a)}},p=new class{clearAccessToken(){let e=u();e&&d({...e,accessToken:""})}async refreshToken(e){try{var n;if(void 0===(null===(n=navigator)||void 0===n?void 0:n.locks))throw console.error("The Web Locks API is not supported in your browser. Please upgrade to a newer browser version."),Error();await navigator.locks.request("_tabby_auth_lock",async()=>{let n;let r=u(),i=null==r?void 0:r.accessToken,s=null==r?void 0:r.refreshToken;if(i){let{iat:s}=(0,t.o)(i);n=f(s)?r:await e()}else s&&(n=await e());n?d(n):l()})}catch(e){l()}}}}}]);
\ No newline at end of file
diff --git a/ee/tabby-webserver/ui/_next/static/chunks/4656-be140a669d8b9859.js b/ee/tabby-webserver/ui/_next/static/chunks/4656-be140a669d8b9859.js
new file mode 100644
index 000000000000..0751f5ca3271
--- /dev/null
+++ b/ee/tabby-webserver/ui/_next/static/chunks/4656-be140a669d8b9859.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4656],{31458:function(e,n,r){r.d(n,{d:function(){return u},z:function(){return d}});var t=r(36164),i=r(3546),s=r(74047),o=r(14375),a=r(1544);let u=(0,o.j)("inline-flex items-center justify-center rounded-md text-sm font-medium shadow ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-md hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90","hover-destructive":"shadow-none hover:bg-destructive/90 hover:text-destructive-foreground",outline:"border border-input hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"shadow-none hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 shadow-none hover:underline"},size:{default:"h-8 px-4 py-2",sm:"h-8 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-8 w-8 p-0"}},defaultVariants:{variant:"default",size:"default"}}),d=i.forwardRef((e,n)=>{let{className:r,variant:i,size:o,asChild:d=!1,...l}=e,c=d?s.g7:"button";return(0,t.jsx)(c,{className:(0,a.cn)(u({variant:i,size:o,className:r})),ref:n,...l})});d.displayName="Button"},80605:function(e,n,r){r.d(n,{UA:function(){return c},Uw:function(){return d},c7:function(){return u},jJ:function(){return l},xG:function(){return a}});var t=r(40055),i=r(43240);let s=(0,i.BX)("\n query GetServerInfo {\n serverInfo {\n isAdminInitialized\n isEmailConfigured\n isChatEnabled\n allowSelfSignup\n isDemoMode\n }\n }\n"),o=()=>{let[{data:e}]=(0,t.aM)({query:s});return null==e?void 0:e.serverInfo},a=()=>{var e;return null===(e=o())||void 0===e?void 0:e.isChatEnabled},u=()=>{var e;return null===(e=o())||void 0===e?void 0:e.isAdminInitialized},d=()=>{var e;return null===(e=o())||void 0===e?void 0:e.isEmailConfigured},l=()=>{var e;return null===(e=o())||void 0===e?void 0:e.allowSelfSignup},c=()=>{var e;return null===(e=o())||void 0===e?void 0:e.isDemoMode}},91302:function(e,n,r){r.d(n,{Dp:function(){return h},Ho:function(){return b},QJ:function(){return k},av:function(){return w},kP:function(){return S},zq:function(){return I}});var t,i,s=r(36164),o=r(3546),a=r(11978),u=r(24426),d=r.n(u),l=r(43240),c=r(80605),f=r(11634),v=r(66794);function g(e,n){var r,t;let s=function(e,n){switch(n.type){case i.SignIn:case i.Refresh:return{status:"authenticated",data:n.data};case i.SignOut:return{status:"unauthenticated",data:void 0}}}(0,n);return e.status==s.status&&(r=e.data,t=s.data,(null==r?void 0:r.accessToken)===(null==t?void 0:t.accessToken)&&(null==r?void 0:r.refreshToken)===(null==t?void 0:t.refreshToken))?e:s}(t=i||(i={}))[t.SignIn=0]="SignIn",t[t.SignOut=1]="SignOut",t[t.Refresh=2]="Refresh";let p=o.createContext({}),h=(0,l.BX)("\n mutation refreshToken($refreshToken: String!) {\n refreshToken(refreshToken: $refreshToken) {\n accessToken\n refreshToken\n }\n }\n"),m=(0,l.BX)("\n mutation LogoutAllSessions {\n logoutAllSessions\n }\n"),b=e=>{let{children:n}=e,[r,t]=o.useState(!1),[a]=d()(v.nd,void 0),[u,l]=o.useReducer(g,{status:"loading",data:void 0});o.useEffect(()=>{(null==a?void 0:a.accessToken)&&(null==a?void 0:a.refreshToken)?l({type:i.SignIn,data:a}):l({type:i.SignOut}),t(!0)},[]),o.useEffect(()=>{!r||((null==a?void 0:a.accessToken)&&(null==a?void 0:a.refreshToken)?l({type:i.Refresh,data:a}):(null==a?void 0:a.accessToken)||(null==a?void 0:a.refreshToken)||l({type:i.SignOut}))},[a]);let c=o.useMemo(()=>{var e;return(null==u?void 0:u.status)=="authenticated"?{data:{accessToken:u.data.accessToken},status:u.status}:{status:null!==(e=null==u?void 0:u.status)&&void 0!==e?e:"loading",data:null}},[u]);return(0,s.jsx)(p.Provider,{value:{authState:u,dispatch:l,session:c},children:n})};class y extends Error{constructor(){super("AuthProvider is missing. Please add the AuthProvider at root level")}}function $(){let e=o.useContext(p);if(!e)throw new y;return e}function I(){let{dispatch:e}=$(),[n,r]=d()(v.nd,void 0);return async n=>(r({accessToken:n.accessToken,refreshToken:n.refreshToken}),e({type:i.SignIn,data:n}),!0)}function k(){let e=(0,f.Db)(m),{dispatch:n}=$(),[r,t]=d()(v.nd,void 0);return async()=>{await e(),t(void 0),n({type:i.SignOut})}}function S(){let{session:e}=$();return e}let A=["/auth/signin","/auth/signup","/auth/reset-password"];function w(){let e=(0,c.c7)(),n=(0,a.useRouter)(),r=(0,a.usePathname)(),t=(0,a.useSearchParams)(),{data:i,status:s}=S();return o.useEffect(()=>{if("loading"===s||"authenticated"===s||void 0===e)return;let i="/auth/signup"===r&&"true"===t.get("isAdmin");if(!i&&!e)return n.replace("/auth/signup?isAdmin=true");A.includes(r)||n.replace("/auth/signin")},[e,s]),i}},11634:function(e,n,r){r.d(n,{Db:function(){return g},Lp:function(){return h},zG:function(){return p}});var t=r(22365),i=r(28552),s=r(81013),o=r(17522),a=r(79716),u=r(74630),d=r(40055),l=r(44745),c=r(91302),f=r(70410),v=r(66794);function g(e,n){let[r,t]=(0,d.Db)(e),i=(null==n?void 0:n.form)?p(n.form):void 0,s=async(e,r)=>{let s;try{if(null==(s=await t(e,r))?void 0:s.error)i&&i(s.error),(null==n?void 0:n.onError)&&n.onError(s.error);else if(!(0,u.Z)(null==s?void 0:s.data)){var o;null==n||null===(o=n.onCompleted)||void 0===o||o.call(n,s.data)}}catch(e){(null==n?void 0:n.onError)&&n.onError(e);return}return s};return s}function p(e){return n=>{let{graphQLErrors:r=[]}=n;for(let n of r)if(n.extensions&&n.extensions["validation-errors"]){let r=n.extensions["validation-errors"];for(let n of r.errors)e.setError(n.path,n)}else(null==n?void 0:n.originalError)?e.setError("root",n.originalError):(null==n?void 0:n.message)&&e.setError("root",{message:n.message})}}let h=new l.KU({url:"/graphql",requestPolicy:"cache-and-network",exchanges:[(0,i.HG)({keys:{CompletionStats:()=>null,ServerInfo:()=>null,RepositorySearch:()=>null,RepositoryList:()=>null,RepositoryGrep:()=>null,GrepLine:()=>null,GrepFile:()=>null,GrepTextOrBase64:()=>null,GrepSubMatch:()=>null,GitReference:()=>null,MessageAttachment:()=>null,MessageAttachmentCode:()=>null,MessageAttachmentDoc:()=>null,NetworkSetting:()=>null,ContextInfo:()=>null},resolvers:{Query:{invitations:(0,s.N)(),gitRepositories:(0,s.N)(),webCrawlerUrls:(0,s.N)(),integrations:(0,s.N)(),threads:(0,s.N)()}},updates:{Mutation:{deleteInvitation(e,n,r,t){e.deleteInvitation&&r.inspectFields("Query").filter(e=>"invitations"===e.fieldName).forEach(e=>{r.updateQuery({query:f.lE,variables:e.arguments},e=>{var r;return(null==e?void 0:null===(r=e.invitations)||void 0===r?void 0:r.edges)&&(e.invitations.edges=e.invitations.edges.filter(e=>e.node.id!==n.id)),e})})},deleteGitRepository(e,n,r,t){e.deleteGitRepository&&r.inspectFields("Query").filter(e=>"gitRepositories"===e.fieldName).forEach(e=>{r.updateQuery({query:f.S1,variables:e.arguments},e=>{var r;return(null==e?void 0:null===(r=e.gitRepositories)||void 0===r?void 0:r.edges)&&(e.gitRepositories.edges=e.gitRepositories.edges.filter(e=>e.node.id!==n.id)),e})})},deleteIntegration(e,n,r,t){e.deleteIntegration&&r.inspectFields("Query").filter(e=>"integrations"===e.fieldName).forEach(e=>{r.updateQuery({query:f.kb,variables:e.arguments},e=>((null==e?void 0:e.integrations)&&(e.integrations.edges=e.integrations.edges.filter(e=>e.node.id!==n.id)),e))})},createIntegration(e,n,r){let t="Query";r.inspectFields(t).filter(e=>{var r,t,i;return"integrations"===e.fieldName&&!!(null===(r=e.arguments)||void 0===r?void 0:r.kind)&&(null===(t=e.arguments)||void 0===t?void 0:t.kind)===(null==n?void 0:null===(i=n.input)||void 0===i?void 0:i.kind)}).forEach(e=>{r.invalidate(t,e.fieldName,e.arguments)})},upsertUserGroupMembership(e,n,r,t){let{userGroupId:i,userId:s,isGroupAdmin:o}=n.input,{user:a,isInsert:u}=t.variables.extraParams||{};e.upsertUserGroupMembership&&r.updateQuery({query:f.gI},e=>((null==e?void 0:e.userGroups)&&(e.userGroups=e.userGroups.map(e=>{if(e.id!==i)return e;let n=[...e.members];if(u){let e=new Date().toISOString();n.push({user:{...a,__typename:"UserSecured"},isGroupAdmin:o,createdAt:e,updatedAt:e,__typename:"UserGroupMembership"})}else n=n.map(e=>e.user.id!==s?e:{...e,isGroupAdmin:o});return{...e,members:n}})),e))},deleteUserGroupMembership(e,n,r,t){let{userGroupId:i,userId:s}=n;e.deleteUserGroupMembership&&r.updateQuery({query:f.gI},e=>((null==e?void 0:e.userGroups)&&(e.userGroups=e.userGroups.map(e=>{if(e.id!==i)return e;let n=[...e.members].filter(e=>e.user.id!==s);return{...e,members:n}})),e))},grantSourceIdReadAccess(e,n,r,t){if(e.grantSourceIdReadAccess){let{sourceId:e}=n;r.inspectFields("Query").filter(n=>{var r;return"sourceIdAccessPolicies"===n.fieldName&&(null===(r=n.arguments)||void 0===r?void 0:r.sourceId)===e}).forEach(e=>{r.updateQuery({query:f.hA,variables:e.arguments},e=>{var r;if(null==e?void 0:null===(r=e.sourceIdAccessPolicies)||void 0===r?void 0:r.read){let{userGroupName:r}=t.variables.extraParams||{};e.sourceIdAccessPolicies.read=[...e.sourceIdAccessPolicies.read,{__typename:"UserGroup",id:n.userGroupId,name:r}]}return e})})}},revokeSourceIdReadAccess(e,n,r,t){if(e.revokeSourceIdReadAccess){let{userGroupId:e,sourceId:t}=n;r.inspectFields("Query").filter(e=>{var n;return"sourceIdAccessPolicies"===e.fieldName&&(null===(n=e.arguments)||void 0===n?void 0:n.sourceId)===t}).forEach(n=>{r.updateQuery({query:f.hA,variables:n.arguments},n=>{var r,i;return(null==n?void 0:null===(r=n.sourceIdAccessPolicies)||void 0===r?void 0:r.sourceId)===t&&(null==n?void 0:null===(i=n.sourceIdAccessPolicies)||void 0===i?void 0:i.read)&&(n.sourceIdAccessPolicies.read=n.sourceIdAccessPolicies.read.filter(n=>n.id!==e)),n})})}}}},optimistic:{upsertUserGroupMembership:()=>!0,deleteUserGroupMembership:()=>!0,grantSourceIdReadAccess:()=>!0,revokeSourceIdReadAccess:()=>!0}}),(0,t.M)(async e=>{let n=(0,v.bW)(),r=null==n?void 0:n.accessToken,t=null==n?void 0:n.refreshToken;return{addAuthToOperation(n){let i=(0,v.bW)(),s=(0,v.jW)();if(r=null==i?void 0:i.accessToken,t=null==i?void 0:i.refreshToken,r)return e.appendHeaders(n,{Authorization:"Bearer ".concat(r)});if(s){let r={Authorization:"Bearer ".concat(s.authorization),...s.headers};return e.appendHeaders(n,r)}return n},didAuthError(e,n){let r=e.graphQLErrors.some(e=>{var n;return(null==e?void 0:null===(n=e.extensions)||void 0===n?void 0:n.code)==="UNAUTHORIZED"});return r&&v.gN.clearAccessToken(),r},willAuthError(e){let n=(0,v.bW)(),i=(0,v.jW)();if(r=null==n?void 0:n.accessToken,t=null==n?void 0:n.refreshToken,"query"===e.kind&&e.query.definitions.some(e=>{var n;return"OperationDefinition"===e.kind&&(null===(n=e.name)||void 0===n?void 0:n.value)&&["GetServerInfo"].includes(e.name.value)})||"mutation"===e.kind&&e.query.definitions.some(e=>{var n;return"OperationDefinition"===e.kind&&(null===(n=e.name)||void 0===n?void 0:n.value)&&["tokenAuth","register"].includes(e.name.value)})||t&&"mutation"===e.kind&&e.query.definitions.some(e=>{var n;return"OperationDefinition"===e.kind&&(null==e?void 0:null===(n=e.name)||void 0===n?void 0:n.value)==="refreshToken"}))return!1;if(r)try{let{exp:e}=(0,a.o)(r);return(0,v.pw)(e)}catch(e){return!0}else if(i)return!(null==i?void 0:i.authorization);else return v.gN.clearAccessToken(),!0},refreshAuth:async()=>v.gN.refreshToken(async()=>{var n;let r=null===(n=(0,v.bW)())||void 0===n?void 0:n.refreshToken;if(r)return e.mutate(c.Dp,{refreshToken:r}).then(e=>{var n;return null==e?void 0:null===(n=e.data)||void 0===n?void 0:n.refreshToken})})}}),(0,l.Dk)({onError(e){e.message.startsWith("[GraphQL]")&&(e.message=e.message.replace("[GraphQL]","").trim())}}),l.Ek,(0,l.pV)({forwardSubscription(e,n){var r,t,i;let s=null!==(i=null===(t=n.context.fetchOptions)||void 0===t?void 0:null===(r=t.headers)||void 0===r?void 0:r.Authorization)&&void 0!==i?i:"",a=window.location.protocol,u=window.location.host,d=(0,o.eI)({url:"".concat("https:"===a?"wss:":"ws:","//").concat(u,"/subscriptions"),connectionParams:{authorization:s}}),l={...e,query:e.query||""};return{subscribe(e){let n=d.subscribe(l,e);return{unsubscribe:n}}}}})]})},70410:function(e,n,r){r.d(n,{Cl:function(){return c},D7:function(){return p},DQ:function(){return u},GG:function(){return o},Gx:function(){return h},S1:function(){return s},TH:function(){return d},XL:function(){return y},Y6:function(){return l},gI:function(){return m},hA:function(){return b},kb:function(){return f},lE:function(){return i},r4:function(){return $},ts:function(){return v},yB:function(){return a},zz:function(){return g}});var t=r(43240);let i=(0,t.BX)("\n query ListInvitations(\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n invitations(after: $after, before: $before, first: $first, last: $last) {\n edges {\n node {\n id\n email\n code\n createdAt\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),s=(0,t.BX)("\n query gitRepositories(\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n gitRepositories(\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n name\n gitUrl\n sourceId\n jobInfo {\n lastJobRun {\n id\n job\n createdAt\n finishedAt\n exitCode\n }\n command\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),o=(0,t.BX)("\n query ListJobRuns(\n $ids: [ID!]\n $jobs: [String!]\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n jobRuns(\n ids: $ids\n jobs: $jobs\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n job\n createdAt\n startedAt\n finishedAt\n exitCode\n stdout\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),a=(0,t.BX)("\n query GetJobRunStats($jobs: [String!]) {\n jobRunStats(jobs: $jobs) {\n success\n failed\n pending\n }\n }\n"),u=(0,t.BX)("\n query ListJobs {\n jobs\n }\n"),d=(0,t.BX)("\n query ListUsers($after: String, $before: String, $first: Int, $last: Int) {\n users(after: $after, before: $before, first: $first, last: $last) {\n edges {\n node {\n id\n email\n isAdmin\n isOwner\n createdAt\n active\n name\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),l=(0,t.BX)("\n query DailyStatsInPastYear($users: [ID!]) {\n dailyStatsInPastYear(users: $users) {\n start\n end\n completions\n selects\n views\n }\n }\n"),c=(0,t.BX)("\n query DailyStats(\n $start: DateTime!\n $end: DateTime!\n $users: [ID!]\n $languages: [Language!]\n ) {\n dailyStats(start: $start, end: $end, users: $users, languages: $languages) {\n start\n end\n completions\n selects\n views\n language\n }\n }\n"),f=(0,t.BX)("\n query ListIntegrations(\n $ids: [ID!]\n $kind: IntegrationKind\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n integrations(\n ids: $ids\n kind: $kind\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n displayName\n status\n apiBase\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),v=(0,t.BX)("\n query ListIntegratedRepositories(\n $ids: [ID!]\n $kind: IntegrationKind\n $active: Boolean\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n integratedRepositories(\n ids: $ids\n kind: $kind\n active: $active\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n displayName\n gitUrl\n active\n sourceId\n jobInfo {\n lastJobRun {\n id\n job\n createdAt\n finishedAt\n startedAt\n exitCode\n }\n command\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),g=(0,t.BX)("\n query RepositoryList {\n repositoryList {\n id\n name\n kind\n gitUrl\n refs {\n name\n commit\n }\n }\n }\n"),p=(0,t.BX)("\n query RepositorySearch(\n $kind: RepositoryKind!\n $id: ID!\n $rev: String\n $pattern: String!\n ) {\n repositorySearch(kind: $kind, id: $id, rev: $rev, pattern: $pattern) {\n type\n path\n indices\n }\n }\n"),h=(0,t.BX)("\n query ContextInfo {\n contextInfo {\n sources {\n id\n sourceKind\n sourceId\n sourceName\n }\n }\n }\n"),m=(0,t.BX)("\n query UserGroups {\n userGroups {\n id\n name\n createdAt\n updatedAt\n members {\n user {\n id\n email\n name\n createdAt\n }\n isGroupAdmin\n createdAt\n updatedAt\n }\n }\n }\n"),b=(0,t.BX)("\n query sourceIdAccessPolicies($sourceId: String!) {\n sourceIdAccessPolicies(sourceId: $sourceId) {\n sourceId\n read {\n id\n name\n }\n }\n }\n"),y=(0,t.BX)("\n query ListThreads(\n $ids: [ID!]\n $isEphemeral: Boolean\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n threads(\n ids: $ids\n isEphemeral: $isEphemeral\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n userId\n createdAt\n updatedAt\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"),$=(0,t.BX)("\n query ListThreadMessages(\n $threadId: ID!\n $after: String\n $before: String\n $first: Int\n $last: Int\n ) {\n threadMessages(\n threadId: $threadId\n after: $after\n before: $before\n first: $first\n last: $last\n ) {\n edges {\n node {\n id\n threadId\n role\n content\n attachment {\n code {\n gitUrl\n filepath\n language\n content\n startLine\n }\n clientCode {\n filepath\n content\n startLine\n }\n doc {\n title\n link\n content\n }\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n")},66794:function(e,n,r){r.d(n,{bW:function(){return u},gN:function(){return p},jW:function(){return v},nd:function(){return o},pw:function(){return c},zr:function(){return g}});var t=r(79716),i=r(74630),s=r(1544);let o="_tabby_auth",a="_tabby_chat_sdk_fetcher_options",u=()=>{if((0,s.S_)()){let e=localStorage.getItem(o);if(e)try{return JSON.parse(e)}catch(e){}}},d=e=>{localStorage.setItem(o,JSON.stringify(e))},l=()=>{localStorage.removeItem(o),window.dispatchEvent(new StorageEvent("storage",{storageArea:window.localStorage,url:window.location.href,key:o}))},c=e=>!!(0,i.Z)(e)||Date.now()>1e3*e,f=e=>!(0,i.Z)(e)&&Date.now()-1e3*e<6e4,v=()=>{try{let e=sessionStorage.getItem(a);if(!e)return;return JSON.parse(e)}catch(e){return}},g=e=>{if(e)try{sessionStorage.setItem(a,JSON.stringify(e))}catch(e){sessionStorage.removeItem(a)}},p=new class{clearAccessToken(){let e=u();e&&d({...e,accessToken:""})}async refreshToken(e){try{var n;if(void 0===(null===(n=navigator)||void 0===n?void 0:n.locks))throw console.error("The Web Locks API is not supported in your browser. Please upgrade to a newer browser version."),Error();await navigator.locks.request("_tabby_auth_lock",async()=>{let n;let r=u(),i=null==r?void 0:r.accessToken,s=null==r?void 0:r.refreshToken;if(i){let{iat:s}=(0,t.o)(i);n=f(s)?r:await e()}else s&&(n=await e());n?d(n):l()})}catch(e){l()}}}}}]);
\ No newline at end of file
diff --git a/ee/tabby-webserver/ui/_next/static/chunks/7188-a7d884d4894b4a4d.js b/ee/tabby-webserver/ui/_next/static/chunks/7188-979c0fada1273643.js
similarity index 72%
rename from ee/tabby-webserver/ui/_next/static/chunks/7188-a7d884d4894b4a4d.js
rename to ee/tabby-webserver/ui/_next/static/chunks/7188-979c0fada1273643.js
index 61fed092d220..be974fa04703 100644
--- a/ee/tabby-webserver/ui/_next/static/chunks/7188-a7d884d4894b4a4d.js
+++ b/ee/tabby-webserver/ui/_next/static/chunks/7188-979c0fada1273643.js
@@ -1 +1 @@
-(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7188],{68172:function(e,t,n){"use strict";n.d(t,{q:function(){return a}});var r=n(36164),s=n(38785);function a(e){let{children:t,fallback:n=null}=e;return(0,s.U)()?(0,r.jsx)(r.Fragment,{children:t}):(0,r.jsx)(r.Fragment,{children:n})}},30601:function(e,t,n){"use strict";n.d(t,{Hb:function(){return f},wt:function(){return d},xc:function(){return x},yo:function(){return m}});var r=n(36164),s=n(3546),a=n(74630),o=n(36327),l=n(80605),i=n(1544),c=n(81565);let d="3.5rem",u=s.createContext({}),m=e=>{let{children:t}=e,n=(0,l.UA)(),[o,i]=s.useState(!1);return s.useEffect(()=>{let e=window.self!==window.top;e||(0,a.Z)(n)||i(n)},[n]),(0,r.jsx)(u.Provider,{value:{isShowDemoBanner:o,setIsShowDemoBanner:i},children:t})};function f(){let{isShowDemoBanner:e,setIsShowDemoBanner:t}=s.useContext(u);return[e,t]}function x(){let[e,t]=f(),{data:n}=(0,o.Z)("https://api.github.com/repos/TabbyML/tabby",e=>fetch(e).then(e=>e.json()));return(0,r.jsxs)("div",{className:(0,i.cn)("flex items-center justify-between bg-primary px-4 text-primary-foreground transition-all md:px-5",{"opacity-100 pointer-events-auto":e,"opacity-0 pointer-events-none":!e}),style:e?{height:d}:{height:0},children:[(0,r.jsxs)("a",{href:"https://links.tabbyml.com/schedule-a-demo",target:"_blank",className:"flex items-center gap-x-2 text-xs font-semibold underline md:text-sm",children:[(0,r.jsx)("span",{children:"\uD83D\uDCC6"}),(0,r.jsx)("span",{children:"Book a 30-minute product demo."})]}),e&&(0,r.jsx)("img",{referrerPolicy:"no-referrer-when-downgrade",src:"https://static.scarf.sh/a.png?x-pxid=b1d0308a-b3c5-425a-972a-378d883a2bca"}),(0,r.jsxs)("div",{className:"flex items-center gap-x-4 md:gap-x-8",children:[(0,r.jsxs)("a",{href:"https://github.com/TabbyML/tabby",target:"_blank",className:"flex items-center transition-all hover:opacity-70",children:[(0,r.jsx)(c.IconGithub,{}),(0,r.jsxs)("div",{className:"ml-2 hidden md:block",children:[(0,r.jsx)("p",{className:"text-xs font-semibold",children:"TabbyML/tabby"}),(0,r.jsxs)("div",{className:(0,i.cn)("flex items-center text-xs transition-all",{"h-4 opacity-70":n,"h-0 opacity-0":!n}),children:[(0,r.jsx)(c.IconStar,{className:"mr-1 h-2.5 w-2.5"}),(0,r.jsx)("span",{children:null==n?void 0:n.stargazers_count}),(0,r.jsx)(c.IconGitFork,{className:"ml-2 mr-1 h-2.5 w-2.5"}),(0,r.jsx)("span",{children:null==n?void 0:n.forks_count})]})]})]}),(0,r.jsx)(c.IconClose,{className:"cursor-pointer transition-all hover:opacity-70",onClick:()=>t(!1)})]})]})}},6230:function(e,t,n){"use strict";var r=n(36164),s=n(3546),a=n(24449),o=n(90379);t.Z=e=>{let{loading:t,fallback:n,delay:l,children:i}=e,[c,d]=s.useState(!t),[u]=(0,a.n)(c,null!=l?l:200);return(s.useEffect(()=>{t||c||d(!0)},[t]),u)?i:n||(0,r.jsx)(o.cg,{})}},83171:function(e,t,n){"use strict";n.d(t,{p:function(){return i},t:function(){return c}});var r=n(36164);n(3546);var s=n(68035),a=n(18500),o=n(1544),l=n(81565);function i(e){let{kind:t,label:n,className:a}=e;return(0,r.jsxs)(s.T5,{as:"span",className:(0,o.cn)("source-mention rounded-sm px-1",a),children:[(0,r.jsx)(d,{kind:t,className:"self-center"}),(0,r.jsx)("span",{className:"whitespace-nowrap",children:n})]})}function c(e){let{kind:t,label:n,id:s}=e.node.attrs;return(0,r.jsx)(i,{kind:t,label:n,id:s})}function d(e){let{kind:t,...n}=e;switch(t){case a.ri.Doc:return(0,r.jsx)(l.IconEmojiBook,{...n});case a.ri.Web:return(0,r.jsx)(l.IconEmojiGlobe,{...n});case a.ri.Git:return(0,r.jsx)(l.IconCode,{...n});case a.ri.Github:return(0,r.jsx)(l.IconGitHub,{...n});case a.ri.Gitlab:return(0,r.jsx)(l.IconGitLab,{...n});default:return null}}},24203:function(e,t,n){"use strict";n.d(t,{Z:function(){return O}});var r=n(36164),s=n(3546),a=n(9010),o=n(1544),l=n(62202),i=n(29),c=n(6230);n(15812);var d=n(46836),u=n(75866),m=n(97216),f=n(48497),x=n(10155),h=n(31408),p=n(68035),g=n(16784),v=n(10345),j=n(83171);let b="mention",y=v.ZP.extend({addNodeView:()=>(0,p.fW)(j.t),renderText(e){let{node:t}=e;return"[[source:".concat(t.attrs.id,"]]")},addAttributes:()=>({id:{default:null,parseHTML:e=>e.getAttribute("data-id"),renderHTML:e=>e.id?{"data-id":e.id}:{}},label:{default:null,parseHTML:e=>e.getAttribute("data-label"),renderHTML:e=>e.label?{"data-label":e.label}:{}},kind:{default:null,parseHTML:e=>e.getAttribute("data-kind"),renderHTML:e=>e.kind?{"data-kind":e.kind}:{}}})});n(44750);var N=n(31022),w=n(45238),k=n(18500),C=n(81565);let I=(0,s.forwardRef)((e,t)=>{let{query:n,command:a,category:l}=e,{list:i,pending:c}=(0,s.useContext)(A),[d,u]=(0,s.useState)(0),m=(0,s.useMemo)(()=>{if(!(null==i?void 0:i.length))return[];let e=i.filter(e=>(0,o._q)(e.sourceKind)).map(e=>({type:"source",category:"doc",id:e.sourceId,label:e.sourceName,data:e})),t=i.filter(e=>(0,o.wO)(e.sourceKind)).map(e=>({type:"source",category:"code",id:e.sourceId,label:e.sourceName,data:e}));return"doc"===l?e:t},[l,i]),f=(0,s.useMemo)(()=>{if(!n)return m;let e=(0,w.go)(n,m,{key:e=>e.label});return e.map(e=>e.obj)},[n,m]),x=()=>{u((d+f.length-1)%f.length)},h=()=>{u((d+1)%f.length)},p=e=>{let t=f[e];t&&a({id:t.data.sourceId,label:t.label,kind:t.data.sourceKind})},g=()=>{p(d)};return(0,s.useEffect)(()=>u(0),[m]),(0,s.useImperativeHandle)(t,()=>({onKeyDown:e=>{let{event:t}=e;return"ArrowUp"===t.key?(x(),!0):"ArrowDown"===t.key?(h(),!0):"Enter"===t.key&&(g(),!0)}})),(0,r.jsx)("div",{className:"dropdown-menu max-h-[30vh] min-w-[20rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-2 text-popover-foreground shadow animate-in",children:c?(0,r.jsx)("div",{className:"px-2 py-1.5",children:(0,r.jsx)(C.IconSpinner,{})}):f.length?f.map((e,t)=>(0,r.jsx)(S,{onClick:()=>p(t),onMouseEnter:()=>u(t),title:e.label,data:e,isSelected:t===d},e.id)):(0,r.jsx)("div",{className:"px-2 py-1.5 text-sm text-muted-foreground",children:(null==m?void 0:m.length)?(0,r.jsx)("span",{children:"No matches results"}):(0,r.jsx)("span",{children:"No results"})})})});function _(e){let{kind:t}=e;switch(t){case k.ri.Doc:return(0,r.jsx)(C.IconEmojiBook,{});case k.ri.Web:return(0,r.jsx)(C.IconEmojiGlobe,{});case k.ri.Git:return(0,r.jsx)(C.IconCode,{});case k.ri.Github:return(0,r.jsx)(C.IconGitHub,{});case k.ri.Gitlab:return(0,r.jsx)(C.IconGitLab,{});default:return null}}function S(e){let{isSelected:t,data:n,...a}=e,l=(0,s.useRef)(null);return(0,s.useLayoutEffect)(()=>{if(t&&l.current){var e;null===(e=l.current)||void 0===e||e.scrollIntoView({block:"nearest",inline:"nearest"})}},[t]),(0,r.jsxs)("div",{className:(0,o.cn)("flex cursor-pointer gap-1 rounded-md px-2 py-1.5 text-sm",{"bg-accent text-accent-foreground":t}),...a,ref:l,children:[(0,r.jsx)("span",{className:"flex h-5 shrink-0 items-center",children:(0,r.jsx)(_,{kind:n.data.sourceKind})}),(0,r.jsx)("span",{className:"flex-1",children:n.label})]})}I.displayName="MetionList";let E=e=>{let t=e.getJSON(),n=[],r=0,s=e=>{var t,a;"text"===e.type?r+=(null==e?void 0:null===(t=e.text)||void 0===t?void 0:t.length)||0:"mention"===e.type&&(null==e?void 0:null===(a=e.attrs)||void 0===a?void 0:a.id)&&n.push({id:e.attrs.id,label:e.attrs.label,kind:e.attrs.kind}),e.content&&e.content.forEach(s)};return s(t),n};var R=e=>{let{disabled:t,category:n,placement:r,char:s="@",pluginKey:a}=e;return{render:()=>{let e,t;return{onStart:s=>{let a=E(s.editor);e=new p.M_(I,{props:{...s,mentions:a,category:n},editor:s.editor}),s.clientRect&&(t=(0,N.ZP)("body",{getReferenceClientRect:s.clientRect,appendTo:()=>document.body,content:e.element,showOnCreate:!0,interactive:!0,trigger:"manual",placement:r||"bottom-start",animation:"shift-away",maxWidth:"400px"}))},onUpdate(n){e.updateProps(n),n.clientRect&&t[0].setProps({getReferenceClientRect:n.clientRect})},onKeyDown(n){var r,s;return"Escape"===n.event.key?(t[0].hide(),!0):null!==(s=null===(r=e.ref)||void 0===r?void 0:r.onKeyDown(n))&&void 0!==s&&s},onExit(){t[0].destroy(),e.destroy()}}},char:s,pluginKey:a,command:e=>{var t,r,s;let{editor:a,range:l,props:i}=e;if("code"===n){!function(e,t,n){let r;let{doc:s}=e.state,a=e.state.selection.$from;s.descendants((e,t)=>!("mention"===e.type.name&&(0,o.wO)(e.attrs.kind))||(r=t,!1)),e.chain().deleteRange({from:t.from,to:t.to}).run();let l=void 0!==r,i=s.firstChild,c=l?[{type:b,attrs:n}]:[{type:b,attrs:n},{type:"text",text:" "}];if(i&&"paragraph"===i.type.name){let t=i.firstChild;if(t&&"mention"===t.type.name&&(0,o.wO)(t.attrs.kind)){let n=t.nodeSize;e.chain().deleteRange({from:1,to:1+n}).insertContentAt(1,c).focus().run()}else e.chain().insertContentAt(1,c).focus().run()}else e.chain().insertContentAt(0,c).focus().run();e.commands.focus(l?a.pos:a.pos+1)}(a,l,i);return}let c=a.view.state.selection.$to.nodeAfter,d=null==c?void 0:null===(t=c.text)||void 0===t?void 0:t.startsWith(" ");d&&(l.to+=1),a.chain().focus().insertContentAt(l,[{type:b,attrs:i},{type:"text",text:" "}]).run(),null===(s=a.view.dom.ownerDocument.defaultView)||void 0===s||null===(r=s.getSelection())||void 0===r||r.collapseToEnd()},allow:e=>{let{state:n,range:r}=e;if(t)return!1;let s=n.doc.resolve(r.from),a=n.schema.nodes[b],o=!!s.parent.type.contentMatch.matchType(a);return o}}};let H=new x.H$("mention-doc"),T=new x.H$("mention-code"),F=e=>h.hj.create({addKeyboardShortcuts(){return{Enter:t=>{let{editor:n}=t;return e(n),!0},"Shift-Enter":()=>this.editor.commands.first(e=>{let{commands:t}=e;return[()=>t.newlineInCode(),()=>t.createParagraphNear(),()=>t.liftEmptyBlock(),()=>t.splitBlock()]})}}}),A=s.createContext({}),M=(0,s.forwardRef)((e,t)=>{let{editable:n,content:a,contextInfo:l,fetchingContextInfo:i,submitting:c,onSubmit:x,placeholder:h,onBlur:v,onFocus:j,onUpdate:b,autoFocus:N,className:w,editorClassName:k,placement:C}=e,[I,_]=(0,s.useState)(!i),S=(0,g.d)(e=>{if(c)return;let t=e.getText();t&&(null==x||x(e))}),E=(0,s.useMemo)(()=>null!=l&&!!l.sources&&l.sources.some(e=>(0,o.wO)(e.sourceKind)),[null==l?void 0:l.sources]),M=(0,s.useMemo)(()=>null!=l&&!!l.sources&&l.sources.some(e=>(0,o._q)(e.sourceKind)),[null==l?void 0:l.sources]),L=(0,p.jE)({editable:!!I&&n,immediatelyRender:!1,extensions:[d.Z,u.Z,f.Z,m.Z.configure({showOnlyWhenEditable:!1,placeholder:I?h||"Ask anything...":"Loading..."}),F(e=>{S.current(e)}),y.configure({deleteTriggerWithBackspace:!0,HTMLAttributes:{class:"mention"},suggestion:R({category:"doc",char:"@",pluginKey:H,placement:"bottom"===C?"top-start":"bottom-start",disabled:!M})}),y.configure({deleteTriggerWithBackspace:!0,HTMLAttributes:{class:"mention-code"},suggestion:R({category:"code",char:"#",pluginKey:T,placement:"bottom"===C?"top-start":"bottom-start",disabled:!E})})],editorProps:{attributes:{class:(0,o.cn)("max-h-38 prose min-h-[3.5rem] max-w-none font-sans dark:prose-invert focus:outline-none prose-p:my-0",k)}},content:a,onBlur(e){null==v||v(e)},onFocus(e){null==j||j(e)},onUpdate(e){null==b||b(e)}},[I]);return((0,s.useImperativeHandle)(t,()=>({editor:L})),(0,s.useLayoutEffect)(()=>{L&&N&&L.commands.focus()},[L]),(0,s.useEffect)(()=>{i||I||_(!0)},[i]),L)?(0,r.jsx)(A.Provider,{value:{list:null==l?void 0:l.sources,pending:!!i},children:(0,r.jsx)("div",{className:(0,o.cn)("text-area-autosize max-h-36 overflow-y-auto pr-1",w),children:(0,r.jsx)(p.kg,{editor:L})})}):null});M.displayName="PromptEditor";var L=n(31458),B=n(11208),Z=n(3448);function O(e){let{onSearch:t,onModelSelect:n,modelName:a,className:l,placeholder:d,showBetaBadge:u,isLoading:m,autoFocus:f,loadingWithSpinning:x,cleanAfterSearch:h=!0,isFollowup:p,contextInfo:g,fetchingContextInfo:v,isModelLoading:j,models:b}=e,[y,N]=(0,s.useState)(!1),[w,k]=(0,s.useState)(!1),[I,_]=(0,s.useState)(""),S=(0,s.useRef)(null);(0,s.useEffect)(()=>{N(!0)},[]);let E=()=>{var e,t;null===(t=S.current)||void 0===t||null===(e=t.editor)||void 0===e||e.commands.focus()},R=e=>{n(e),setTimeout(()=>{E()})},H=e=>{if(!e||m||j)return;let n=e.getText().trim();if(!n)return;let r=(0,o.b)(n,null==g?void 0:g.sources),s={...(0,o.G8)(r),modelName:a};if(t(n,s),h){var l,i;null===(i=S.current)||void 0===i||null===(l=i.editor)||void 0===l||l.chain().clearContent().focus().run(),_("")}},T=e=>{var t;let n=null===(t=S.current)||void 0===t?void 0:t.editor;n&&n.chain().focus().command(t=>{var n,r,s;let{tr:a,state:o}=t,{$from:l}=o.selection,i=0===l.parentOffset,c=null!==(s=null===(r=l.nodeBefore)||void 0===r?void 0:null===(n=r.text)||void 0===n?void 0:n.endsWith(" "))&&void 0!==s&&s;return i||c?a.insertText(e):a.insertText(" "+e),!0}).run()},{hasCodebaseSource:F,hasDocumentSource:A}=(0,s.useMemo)(()=>(0,o.xV)(null==g?void 0:g.sources),[null==g?void 0:g.sources]),O=!!(null==b?void 0:b.length);return(0,r.jsxs)("div",{className:(0,o.cn)("relative w-full overflow-hidden rounded-xl border bg-background transition-all hover:border-ring dark:border-muted-foreground/60 dark:hover:border-muted-foreground",{"border-ring dark:border-muted-foreground":w},l),onClick:()=>{E()},children:[u&&(0,r.jsx)(U,{}),(0,r.jsxs)("div",{className:(0,o.cn)("flex items-end px-4",{"min-h-[5.5rem]":!p,"min-h-[2.5rem]":p}),children:[(0,r.jsxs)("div",{className:"mr-1 flex-1",children:[(0,r.jsx)(M,{editable:!0,contextInfo:g,fetchingContextInfo:v,onSubmit:H,placeholder:d||"Ask anything...",autoFocus:f,onFocus:()=>k(!0),onBlur:()=>k(!1),onUpdate:e=>{let{editor:t}=e;return _(t.getText().trim())},ref:S,placement:p?"bottom":"top",className:(0,o.cn)("text-area-autosize resize-none rounded-lg !border-none bg-transparent !shadow-none !outline-none !ring-0 !ring-offset-0",{"!h-[48px]":!y&&!p,"!h-[24px]":!y&&p,"py-3":!u,"py-4":u}),editorClassName:p&&O?"min-h-[1.75rem]":"min-h-[3.5em]"}),p&&O&&(0,r.jsx)("div",{className:"-ml-2 mb-2 flex",children:(0,r.jsx)(D,{isInitializing:j,models:b,value:a,onChange:R})})]}),(0,r.jsx)("div",{className:(0,o.cn)("mb-3 flex items-center justify-between gap-2"),children:(0,r.jsxs)("div",{className:(0,o.cn)("flex items-center justify-center rounded-lg p-1 transition-all",{"bg-primary text-primary-foreground cursor-pointer":I.length>0,"!bg-muted !text-primary !cursor-default":m||0===I.length||j,"mr-1.5":!u}),onClick:()=>{var e;return H(null===(e=S.current)||void 0===e?void 0:e.editor)},children:[x&&m&&(0,r.jsx)(C.IconSpinner,{className:"h-4 w-4"}),(!x||!m)&&(0,r.jsx)(C.IconArrowRight,{className:"h-4 w-4"})]})})]}),!p&&(0,r.jsx)("div",{className:(0,o.cn)("flex items-center gap-2 border-t bg-[#F9F6EF] py-2 pl-2 pr-4 dark:border-muted-foreground/60 dark:bg-[#333333]"),onClick:e=>e.stopPropagation(),children:(0,r.jsxs)(c.Z,{loading:j||v,delay:0,fallback:(0,r.jsx)("div",{className:"flex h-8 w-[40%] items-center",children:(0,r.jsx)(Z.O,{className:"h-5 w-full"})}),children:[(0,r.jsxs)(i.u,{children:[(0,r.jsx)(i.aJ,{asChild:!0,children:(0,r.jsxs)(L.z,{variant:"ghost",className:"gap-2 px-1.5 py-1 text-foreground/70",onClick:e=>T("#"),disabled:!F,children:[(0,r.jsx)(C.IconHash,{}),"Codebase"]})}),(0,r.jsx)(i._v,{className:"max-w-md",children:"Select a codebase to chat with"})]}),(0,r.jsx)(B.Z,{orientation:"vertical",className:"h-5"}),(0,r.jsxs)(i.u,{children:[(0,r.jsx)(i.aJ,{asChild:!0,children:(0,r.jsxs)(L.z,{variant:"ghost",className:"gap-2 px-1.5 py-1 text-foreground/70",onClick:e=>T("@"),disabled:!A,children:[(0,r.jsx)(C.IconAtSign,{}),"Documents"]})}),(0,r.jsx)(i._v,{className:"max-w-md",children:"Select a document to bring into context"})]}),!!(null==b?void 0:b.length)&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(B.Z,{orientation:"vertical",className:"h-5"}),(0,r.jsx)(D,{models:b,value:a,onChange:R})]})]})})]})}function D(e){let{models:t,value:n,onChange:s,isInitializing:a}=e,i=e=>{s(e)};return(0,r.jsx)(c.Z,{loading:a,fallback:(0,r.jsx)("div",{className:"w-full pl-2",children:(0,r.jsx)(Z.O,{className:"h-3 w-[20%]"})}),children:!!(null==t?void 0:t.length)&&(0,r.jsxs)(l.h_,{children:[(0,r.jsx)(l.$F,{asChild:!0,children:(0,r.jsxs)(L.z,{variant:"ghost",className:"gap-2 px-1.5 py-1 text-foreground/70",children:[(0,r.jsx)(C.IconBox,{}),n]})}),(0,r.jsx)(l.AW,{side:"bottom",align:"start",className:"dropdown-menu max-h-[30vh] min-w-[20rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-2 text-popover-foreground shadow animate-in",children:(0,r.jsx)(l._x,{value:n,onValueChange:s,children:t.map(e=>{let t=e===n;return(0,r.jsxs)(l.qB,{onClick:t=>{i(e),t.stopPropagation()},value:e,className:"cursor-pointer py-2 pl-3",children:[(0,r.jsx)(C.IconCheck,{className:(0,o.cn)("mr-2 shrink-0",e===n?"opacity-100":"opacity-0")}),(0,r.jsx)("span",{className:(0,o.cn)({"font-medium":t}),children:e})]},e)})})})]})})}function U(){let{theme:e}=(0,a.X)();return(0,r.jsxs)(i.u,{delayDuration:0,children:[(0,r.jsx)(i.aJ,{asChild:!0,children:(0,r.jsx)("span",{className:"absolute -right-8 top-1 mr-3 rotate-45 rounded-none border-none py-0.5 pl-6 pr-5 text-xs text-primary",style:{background:"dark"===e?"#333":"#e8e1d3"},children:"Beta"})}),(0,r.jsx)(i._v,{sideOffset:-8,className:"max-w-md",children:(0,r.jsx)("p",{children:"Please note that the answer engine is still in its early stages, and certain functionalities, such as finding the correct code context and the quality of summarizations, still have room for improvement. If you encounter an issue and believe it can be enhanced, consider sharing it in our Slack community!"})})]})}},63743:function(e,t,n){"use strict";n.d(t,{T:function(){return i}});var r=n(36164),s=n(3546),a=n(9010),o=n(31458),l=n(81565);function i(e){let{className:t}=e,{setTheme:n,theme:i}=(0,a.X)(),[c,d]=s.useTransition();return(0,r.jsxs)(o.z,{variant:"ghost",size:"icon",onClick:()=>{d(()=>{n("light"===i?"dark":"light")})},className:t,children:["dark"===i?(0,r.jsx)(l.IconMoon,{className:"transition-all"}):(0,r.jsx)(l.IconSun,{className:"transition-all"}),(0,r.jsx)("span",{className:"sr-only",children:"Toggle theme"})]})}},79972:function(e,t,n){"use strict";n.d(t,{Ol:function(){return l},Zb:function(){return o},aY:function(){return d},eW:function(){return u},ll:function(){return i}});var r=n(36164),s=n(3546),a=n(1544);let o=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)("div",{ref:t,className:(0,a.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",n),...s})});o.displayName="Card";let l=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)("div",{ref:t,className:(0,a.cn)("flex flex-col space-y-1.5 p-6",n),...s})});l.displayName="CardHeader";let i=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)("h3",{ref:t,className:(0,a.cn)("text-2xl font-semibold leading-none tracking-tight",n),...s})});i.displayName="CardTitle";let c=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)("p",{ref:t,className:(0,a.cn)("text-sm text-muted-foreground",n),...s})});c.displayName="CardDescription";let d=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)("div",{ref:t,className:(0,a.cn)("p-6 pt-0",n),...s})});d.displayName="CardContent";let u=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)("div",{ref:t,className:(0,a.cn)("flex items-center p-6 pt-0",n),...s})});u.displayName="CardFooter"},62202:function(e,t,n){"use strict";n.d(t,{$F:function(){return i},AW:function(){return u},Ju:function(){return x},VD:function(){return h},Xi:function(){return m},_x:function(){return c},h_:function(){return l},qB:function(){return f}});var r=n(36164),s=n(3546),a=n(19148),o=n(1544);let l=a.fC,i=a.xz;a.ZA,a.Uv,a.Tr;let c=a.Ee;a.wU;let d=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(a.tu,{ref:t,className:(0,o.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1",n),...s})});d.displayName=a.tu.displayName;let u=s.forwardRef((e,t)=>{let{className:n,sideOffset:s=4,...l}=e;return(0,r.jsx)(a.Uv,{children:(0,r.jsx)(a.VY,{ref:t,sideOffset:s,className:(0,o.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow animate-in 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",n),...l})})});u.displayName=a.VY.displayName;let m=s.forwardRef((e,t)=>{let{className:n,inset:s,...l}=e;return(0,r.jsx)(a.ck,{ref:t,className:(0,o.cn)("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",s&&"pl-8",n),...l})});m.displayName=a.ck.displayName;let f=s.forwardRef((e,t)=>{let{className:n,inset:s,...l}=e;return(0,r.jsx)(a.Rk,{ref:t,className:(0,o.cn)("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",s&&"pl-8",n),...l})});f.displayName=a.Rk.displayName;let x=s.forwardRef((e,t)=>{let{className:n,inset:s,...l}=e;return(0,r.jsx)(a.__,{ref:t,className:(0,o.cn)("px-2 py-1.5 text-sm font-semibold",s&&"pl-8",n),...l})});x.displayName=a.__.displayName;let h=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(a.Z0,{ref:t,className:(0,o.cn)("-mx-1 my-1 h-px bg-muted",n),...s})});h.displayName=a.Z0.displayName},5266:function(e,t,n){"use strict";n.d(t,{_:function(){return c}});var r=n(36164),s=n(3546),a=n(90893),o=n(14375),l=n(1544);let i=(0,o.j)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),c=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(a.f,{ref:t,className:(0,l.cn)(i(),n),...s})});c.displayName=a.f.displayName},57830:function(e,t,n){"use strict";n.r(t),n.d(t,{ScrollArea:function(){return l},ScrollBar:function(){return i}});var r=n(36164),s=n(3546),a=n(50778),o=n(1544);let l=s.forwardRef((e,t)=>{let{className:n,children:s,...l}=e;return(0,r.jsxs)(a.fC,{className:(0,o.cn)("relative overflow-hidden",n),...l,children:[(0,r.jsx)(a.l_,{ref:t,className:"h-full w-full rounded-[inherit] [&>div]:!block",children:s}),(0,r.jsx)(i,{}),(0,r.jsx)(a.Ns,{})]})});l.displayName=a.fC.displayName;let i=s.forwardRef((e,t)=>{let{className:n,orientation:s="vertical",...l}=e;return(0,r.jsx)(a.gb,{ref:t,orientation:s,className:(0,o.cn)("flex touch-none select-none transition-colors","vertical"===s&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===s&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",n),...l,children:(0,r.jsx)(a.q4,{className:"relative flex-1 rounded-full bg-border"})})});i.displayName=a.gb.displayName},52569:function(e,t,n){"use strict";n.d(t,{SQ:function(){return y},Yt:function(){return b},nY:function(){return j}});var r=n(36164),s=n(3546),a=n(87782),o=n(21454),l=n(36327),i=n(98454),c=n(3765),d=n(1544),u=n(66612);let m=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(u.fC,{ref:t,className:(0,d.cn)("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",n),...s})});m.displayName=u.fC.displayName;let f=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(u.Ee,{ref:t,className:(0,d.cn)("aspect-square h-full w-full",n),...s})});f.displayName=u.Ee.displayName;let x=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(u.NY,{ref:t,className:(0,d.cn)("flex h-full w-full items-center justify-center rounded-full bg-muted",n),...s})});x.displayName=u.NY.displayName;var h=n(3448),p=n(30410).lW;let g="not_found",v=new Set,j=e=>{v.delete(e),(0,o.JG)("/avatar/".concat(e))};function b(e){var t;let{user:n,className:o,fallback:i}=e,u=null==n?void 0:n.id,j=u?"/avatar/".concat(u):null,{data:b,isLoading:y,error:N}=(0,l.Z)(j,e=>{if(!(!u||v.has(u)))return(0,c.Z)(e,{responseFormatter:async e=>{let t=await e.blob(),n=p.from(await t.arrayBuffer());return"data:image/png;base64,".concat(n.toString("base64"))},errorHandler:e=>{if(404===e.status)throw Error(g)}})}),w=s.useMemo(()=>{if(null==n?void 0:n.email)return(0,a.B)(n.email)},[null==n?void 0:n.email]);return y?(0,r.jsx)(h.O,{className:(0,d.cn)("h-16 w-16 rounded-full",o)}):((null==N?void 0:N.message)===g&&u&&v.add(u),b||w||!i)?!b&&w?(0,r.jsx)(a.Z,{className:(0,d.cn)("h-16 w-16",o),...w}):(0,r.jsxs)(m,{className:(0,d.cn)("h-16 w-16",o),children:[(0,r.jsx)(f,{src:b,alt:null==n?void 0:n.email,className:"object-cover"}),(0,r.jsx)(x,{children:null==n?void 0:null===(t=n.email)||void 0===t?void 0:t.substring(0,2)})]}):i}function y(e){let[{data:t}]=(0,i.P)();return(0,r.jsx)(b,{user:null==t?void 0:t.me,...e})}},7449:function(e,t,n){"use strict";n.d(t,{Z:function(){return C}});var r=n(36164),s=n(3546),a=n(70652),o=n.n(a),l=n(11978),i=n(71480),c=n(43240),d=n(98454),u=n(70526),m=n(91302),f=n(11634),x=n(1544),h=n(31458),p=n(79972),g=n(62202),v=n(81565),j=n(82394),b=n(5266),y=n(29),N=n(48537),w=n(52569);let k=(0,c.BX)("\n mutation ResetUserAuthToken {\n resetUserAuthToken\n }\n");function C(e){let{children:t,showHome:n=!0,showSetting:a=!1,beforeRouteChange:o}=e,i=(0,l.useRouter)(),c=(0,m.QJ)(),[{data:u},f]=(0,d.P)(),x=null==u?void 0:u.me,[h,p]=s.useState(!1),j=async e=>{e.preventDefault(),p(!0),await c(),p(!1)},b=(e,t)=>{null==o||o(e),t?i.replace(e):i.push(e)};if(x)return(0,r.jsxs)(g.h_,{children:[(0,r.jsx)(g.$F,{children:t}),(0,r.jsxs)(g.AW,{side:"bottom",align:"end",className:"relative overflow-y-auto p-0",style:{maxHeight:"calc(100vh - 6rem)"},children:[(0,r.jsxs)("div",{className:"p-4 pt-0",children:[(0,r.jsxs)("div",{className:"sticky top-0 z-10 flex items-center gap-2 bg-popover pb-2 pt-4",children:[(0,r.jsx)(w.Yt,{user:x,className:"h-12 w-12 shrink-0 border-[2px] border-white"}),(0,r.jsxs)("div",{className:"space-y-1",children:[x.name&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(g.Ju,{className:"p-0",children:x.name}),(0,r.jsx)(g.Ju,{className:"p-0 text-sm font-normal text-muted-foreground",children:x.email})]}),!x.name&&(0,r.jsx)(g.Ju,{children:x.email})]})]}),(0,r.jsx)(I,{className:"mt-2",user:x,reexecuteQuery:f})]}),(0,r.jsx)(g.VD,{className:"mb-1 mt-0"}),(0,r.jsxs)("div",{className:"px-1.5",children:[n&&(0,r.jsxs)(g.Xi,{onClick:()=>b("/"),className:"cursor-pointer py-2 pl-3",children:[(0,r.jsx)(v.IconHome,{}),(0,r.jsx)("span",{className:"ml-2",children:"Home"})]}),a&&(0,r.jsxs)(g.Xi,{onClick:()=>b("/profile"),className:"cursor-pointer py-2 pl-3",children:[(0,r.jsx)(v.IconGear,{}),(0,r.jsx)("span",{className:"ml-2",children:"Settings"})]}),(0,r.jsxs)(g.Xi,{onClick:()=>window.open("/files"),className:"cursor-pointer py-2 pl-3",children:[(0,r.jsx)(v.IconCode,{}),(0,r.jsx)("span",{className:"ml-2",children:"Code Browser"})]}),(0,r.jsxs)(g.Xi,{onClick:()=>window.open("/api"),className:"cursor-pointer py-2 pl-3",children:[(0,r.jsx)(v.IconBackpack,{}),(0,r.jsx)("span",{className:"ml-2",children:"API Docs"})]})]}),(0,r.jsx)(g.VD,{}),(0,r.jsxs)(g.Xi,{disabled:h,onClick:j,className:"mx-1.5 mb-1.5 cursor-pointer py-2 pl-3",children:[(0,r.jsx)(v.IconLogout,{}),(0,r.jsx)("span",{className:"ml-2",children:"Sign out"}),h&&(0,r.jsx)(v.IconSpinner,{className:"ml-1"})]})]})]})}function I(e){let{className:t,user:n,reexecuteQuery:s}=e,a=(0,u.j)(),o=(0,f.D)(k,{onCompleted:()=>s()});return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:(0,x.cn)("w-[268px] rounded-xl bg-[#FBF5ED] p-4 dark:bg-[#3D382F]",t),children:[(0,r.jsxs)(p.aY,{className:"p-0",children:[(0,r.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,r.jsx)(b._,{className:"text-xs text-muted-foreground",children:"Endpoint URL"}),(0,r.jsxs)("span",{className:"group relative",children:[(0,r.jsx)(j.I,{value:a,onChange:i.Z,className:"border-none bg-[#FEFCF8] group-focus-within:pr-12 group-hover:pr-12 dark:bg-[#4F483B]"}),(0,r.jsx)(N.q,{value:a,className:(0,x.cn)("absolute right-1 top-0.5 hidden group-focus-within:flex group-hover:flex")})]})]}),(0,r.jsxs)("div",{className:"mt-4 flex flex-col gap-2",children:[(0,r.jsx)(b._,{className:"text-xs text-muted-foreground",children:"Token"}),(0,r.jsxs)("span",{className:"group relative",children:[(0,r.jsx)(j.I,{value:n.authToken,onChange:i.Z,className:"border-none bg-[#FEFCF8] group-focus-within:pr-20 group-hover:pr-20 dark:bg-[#4F483B]"}),(0,r.jsxs)("div",{className:"absolute right-1 top-0.5 hidden items-center gap-1 group-focus-within:flex group-hover:flex",children:[(0,r.jsx)(N.q,{value:n.authToken}),(0,r.jsx)(h.z,{title:"Rotate",size:"icon",variant:"hover-destructive",onClick:()=>o(),children:(0,r.jsx)(v.IconRotate,{})})]})]})]})]}),(0,r.jsx)(p.eW,{className:"mt-3 p-0 text-xs text-muted-foreground",children:(0,r.jsxs)("span",{children:["Use information above for IDE extensions / plugins configuration, see"," ",(0,r.jsx)("a",{className:"text-link underline",target:"_blank",href:"https://tabby.tabbyml.com/docs/extensions/configurations#server",children:"documentation website"})," ","for details"]})})]}),(0,r.jsxs)("div",{className:"mb-6 mt-3 flex gap-x-4 lg:mb-0",children:[(0,r.jsx)(_,{href:"https://marketplace.visualstudio.com/items?itemName=TabbyML.vscode-tabby",name:"Visual Studio Code",icon:(0,r.jsx)(v.IconVSCode,{className:"h-6 w-6"})}),(0,r.jsx)(_,{href:"https://plugins.jetbrains.com/plugin/22379-tabby",name:"JetBrains",icon:(0,r.jsx)(v.IconJetBrains,{className:"h-6 w-6"})})]})]})}function _(e){let{href:t,name:n,icon:s}=e;return(0,r.jsxs)(y.u,{children:[(0,r.jsx)(y.aJ,{children:(0,r.jsx)(o(),{href:t,className:"flex h-8 w-8 items-center justify-center rounded-lg text-[#030302]",target:"_blank",children:s})}),(0,r.jsx)(y._v,{children:(0,r.jsx)("p",{children:n})})]})}},21808:function(e,t,n){"use strict";n.d(t,{$6:function(){return a},$I:function(){return o},L8:function(){return s},ir:function(){return l},o0:function(){return r}});let r="name@yourcompany.com",s=20,a={DEMO_AUTO_LOGIN:"_tabby_demo_autologin",SEARCH_INITIAL_MSG:"_tabby_search_initial_msg",SEARCH_INITIAL_CONTEXTS:"_tabby_search_initial_contexts"},o=48,l="NOT_FOUND"},9010:function(e,t,n){"use strict";n.d(t,{X:function(){return s}});var r=n(28242);function s(){let{theme:e,systemTheme:t,setTheme:n}=(0,r.F)();return{theme:e&&"system"!==e?e:t||"light",setTheme:n,systemTheme:t}}},38785:function(e,t,n){"use strict";n.d(t,{U:function(){return a}});var r=n(3546);let s=!0;function a(){let[e,t]=r.useState(()=>!s);return r.useEffect(function(){s=!1,t(!0)},[]),e}},31159:function(e,t,n){"use strict";n.d(t,{Vq:function(){return c}});var r=n(3546),s=n(21454),a=n(3765),o=n(47241),l=n(17451),i=n(25647);function c(){let{data:e,isLoading:t}=(0,s.ZP)("/v1beta/models",e=>(0,a.Z)(e,{errorHandler:()=>{throw Error("Fetch supported model failed.")}}),{shouldRetryOnError:!1}),n=(0,i.o)(l.a,e=>e._hasHydrated),c=(0,i.o)(l.a,e=>e.selectedModel);return(0,r.useEffect)(()=>{if(n&&!t){let t=function(e,t){if(!(null==t?void 0:t.length))return;let n=!!e&&t.includes(e);return n?e:t[0]}(c,null==e?void 0:e.chat);c!==t&&(0,o.Eg)(t)}},[n,t]),{isModelLoading:t||!n,selectedModel:c,models:null==e?void 0:e.chat}}},70526:function(e,t,n){"use strict";n.d(t,{e:function(){return i},j:function(){return c}});var r=n(3546),s=n(40055),a=n(43240),o=n(1544);let l=(0,a.BX)("\n query NetworkSetting {\n networkSetting {\n externalUrl\n }\n }\n"),i=e=>(0,s.aM)({query:l,...e}),c=()=>{let[{data:e}]=i(),t=null==e?void 0:e.networkSetting,n=r.useMemo(()=>(null==t?void 0:t.externalUrl)||((0,o.S_)()?new URL(window.location.href).origin:""),[t]);return n}},25647:function(e,t,n){"use strict";n.d(t,{o:function(){return a}});var r=n(3546),s=n(38785);let a=(e,t)=>{let n=(0,s.U)(),a=e(e=>null==e?void 0:e._hasHydrated),o=e(t),[l,i]=r.useState(n&&a?o:void 0);return r.useEffect(()=>{i(o)},[o]),l}},47241:function(e,t,n){"use strict";n.d(t,{Eg:function(){return a}}),n(1544);var r=n(17451);r.a.getState;let s=r.a.setState,a=e=>{s(t=>({...t,selectedModel:e}))}},17451:function(e,t,n){"use strict";n.d(t,{a:function(){return i}});var r=n(27257),s=n(85654),a=n(1544);let o=["_hasHydrated","setHasHydrated","activeChatId"],l={_hasHydrated:!1,chats:void 0,activeChatId:(0,a.x0)(),selectedModel:void 0},i=(0,r.Ue)()((0,s.tJ)(e=>({...l,setHasHydrated:t=>{e({_hasHydrated:t})}}),{name:"tabby-chat-storage",partialize:e=>Object.fromEntries(Object.entries(e).filter(e=>{let[t]=e;return!o.includes(t)})),onRehydrateStorage:()=>e=>{e&&e.setHasHydrated(!0)}}))},37266:function(e,t,n){"use strict";n.d(t,{CR:function(){return l},F0:function(){return c},wh:function(){return d}});var r=n(27257),s=n(85654);let a=["_hasHydrated","setHasHydrated","activeChatId"],o={_hasHydrated:!1,homePage:void 0},l=(0,r.Ue)()((0,s.tJ)(e=>({...o,setHasHydrated:t=>{e({_hasHydrated:t})}}),{name:"tabby-scroll-storage",partialize:e=>Object.fromEntries(Object.entries(e).filter(e=>{let[t]=e;return!a.includes(t)})),onRehydrateStorage:()=>e=>{e&&e.setHasHydrated(!0)}})),i=l.setState,c=e=>i(t=>({...t,homePage:e})),d=()=>i(e=>({...e,homePage:void 0}))},15812:function(){}}]);
\ No newline at end of file
+(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7188],{68172:function(e,t,n){"use strict";n.d(t,{q:function(){return a}});var r=n(36164),s=n(38785);function a(e){let{children:t,fallback:n=null}=e;return(0,s.U)()?(0,r.jsx)(r.Fragment,{children:t}):(0,r.jsx)(r.Fragment,{children:n})}},30601:function(e,t,n){"use strict";n.d(t,{Hb:function(){return f},wt:function(){return d},xc:function(){return x},yo:function(){return m}});var r=n(36164),s=n(3546),a=n(74630),o=n(36327),l=n(80605),i=n(1544),c=n(81565);let d="3.5rem",u=s.createContext({}),m=e=>{let{children:t}=e,n=(0,l.UA)(),[o,i]=s.useState(!1);return s.useEffect(()=>{let e=window.self!==window.top;e||(0,a.Z)(n)||i(n)},[n]),(0,r.jsx)(u.Provider,{value:{isShowDemoBanner:o,setIsShowDemoBanner:i},children:t})};function f(){let{isShowDemoBanner:e,setIsShowDemoBanner:t}=s.useContext(u);return[e,t]}function x(){let[e,t]=f(),{data:n}=(0,o.Z)("https://api.github.com/repos/TabbyML/tabby",e=>fetch(e).then(e=>e.json()));return(0,r.jsxs)("div",{className:(0,i.cn)("flex items-center justify-between bg-primary px-4 text-primary-foreground transition-all md:px-5",{"opacity-100 pointer-events-auto":e,"opacity-0 pointer-events-none":!e}),style:e?{height:d}:{height:0},children:[(0,r.jsxs)("a",{href:"https://links.tabbyml.com/schedule-a-demo",target:"_blank",className:"flex items-center gap-x-2 text-xs font-semibold underline md:text-sm",children:[(0,r.jsx)("span",{children:"\uD83D\uDCC6"}),(0,r.jsx)("span",{children:"Book a 30-minute product demo."})]}),e&&(0,r.jsx)("img",{referrerPolicy:"no-referrer-when-downgrade",src:"https://static.scarf.sh/a.png?x-pxid=b1d0308a-b3c5-425a-972a-378d883a2bca"}),(0,r.jsxs)("div",{className:"flex items-center gap-x-4 md:gap-x-8",children:[(0,r.jsxs)("a",{href:"https://github.com/TabbyML/tabby",target:"_blank",className:"flex items-center transition-all hover:opacity-70",children:[(0,r.jsx)(c.IconGithub,{}),(0,r.jsxs)("div",{className:"ml-2 hidden md:block",children:[(0,r.jsx)("p",{className:"text-xs font-semibold",children:"TabbyML/tabby"}),(0,r.jsxs)("div",{className:(0,i.cn)("flex items-center text-xs transition-all",{"h-4 opacity-70":n,"h-0 opacity-0":!n}),children:[(0,r.jsx)(c.IconStar,{className:"mr-1 h-2.5 w-2.5"}),(0,r.jsx)("span",{children:null==n?void 0:n.stargazers_count}),(0,r.jsx)(c.IconGitFork,{className:"ml-2 mr-1 h-2.5 w-2.5"}),(0,r.jsx)("span",{children:null==n?void 0:n.forks_count})]})]})]}),(0,r.jsx)(c.IconClose,{className:"cursor-pointer transition-all hover:opacity-70",onClick:()=>t(!1)})]})]})}},6230:function(e,t,n){"use strict";var r=n(36164),s=n(3546),a=n(24449),o=n(90379);t.Z=e=>{let{loading:t,fallback:n,delay:l,children:i}=e,[c,d]=s.useState(!t),[u]=(0,a.n)(c,null!=l?l:200);return(s.useEffect(()=>{t||c||d(!0)},[t]),u)?i:n||(0,r.jsx)(o.cg,{})}},83171:function(e,t,n){"use strict";n.d(t,{p:function(){return i},t:function(){return c}});var r=n(36164);n(3546);var s=n(68035),a=n(18500),o=n(1544),l=n(81565);function i(e){let{kind:t,label:n,className:a}=e;return(0,r.jsxs)(s.T5,{as:"span",className:(0,o.cn)("source-mention rounded-sm px-1",a),children:[(0,r.jsx)(d,{kind:t,className:"self-center"}),(0,r.jsx)("span",{className:"whitespace-nowrap",children:n})]})}function c(e){let{kind:t,label:n,id:s}=e.node.attrs;return(0,r.jsx)(i,{kind:t,label:n,id:s})}function d(e){let{kind:t,...n}=e;switch(t){case a.ri.Doc:return(0,r.jsx)(l.IconEmojiBook,{...n});case a.ri.Web:return(0,r.jsx)(l.IconEmojiGlobe,{...n});case a.ri.Git:return(0,r.jsx)(l.IconCode,{...n});case a.ri.Github:return(0,r.jsx)(l.IconGitHub,{...n});case a.ri.Gitlab:return(0,r.jsx)(l.IconGitLab,{...n});default:return null}}},24203:function(e,t,n){"use strict";n.d(t,{Z:function(){return O}});var r=n(36164),s=n(3546),a=n(9010),o=n(1544),l=n(62202),i=n(29),c=n(6230);n(15812);var d=n(46836),u=n(75866),m=n(97216),f=n(48497),x=n(10155),p=n(31408),h=n(68035),g=n(16784),v=n(10345),j=n(83171);let b="mention",y=v.ZP.extend({addNodeView:()=>(0,h.fW)(j.t),renderText(e){let{node:t}=e;return"[[source:".concat(t.attrs.id,"]]")},addAttributes:()=>({id:{default:null,parseHTML:e=>e.getAttribute("data-id"),renderHTML:e=>e.id?{"data-id":e.id}:{}},label:{default:null,parseHTML:e=>e.getAttribute("data-label"),renderHTML:e=>e.label?{"data-label":e.label}:{}},kind:{default:null,parseHTML:e=>e.getAttribute("data-kind"),renderHTML:e=>e.kind?{"data-kind":e.kind}:{}}})});n(44750);var N=n(31022),w=n(45238),k=n(18500),C=n(81565);let I=(0,s.forwardRef)((e,t)=>{let{query:n,command:a,category:l}=e,{list:i,pending:c}=(0,s.useContext)(A),[d,u]=(0,s.useState)(0),m=(0,s.useMemo)(()=>{if(!(null==i?void 0:i.length))return[];let e=i.filter(e=>(0,o._q)(e.sourceKind)).map(e=>({type:"source",category:"doc",id:e.sourceId,label:e.sourceName,data:e})),t=i.filter(e=>(0,o.wO)(e.sourceKind)).map(e=>({type:"source",category:"code",id:e.sourceId,label:e.sourceName,data:e}));return"doc"===l?e:t},[l,i]),f=(0,s.useMemo)(()=>{if(!n)return m;let e=(0,w.go)(n,m,{key:e=>e.label});return e.map(e=>e.obj)},[n,m]),x=()=>{u((d+f.length-1)%f.length)},p=()=>{u((d+1)%f.length)},h=e=>{let t=f[e];t&&a({id:t.data.sourceId,label:t.label,kind:t.data.sourceKind})},g=()=>{h(d)};return(0,s.useEffect)(()=>u(0),[m]),(0,s.useImperativeHandle)(t,()=>({onKeyDown:e=>{let{event:t}=e;return"ArrowUp"===t.key?(x(),!0):"ArrowDown"===t.key?(p(),!0):"Enter"===t.key&&(g(),!0)}})),(0,r.jsx)("div",{className:"dropdown-menu max-h-[30vh] min-w-[20rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-2 text-popover-foreground shadow animate-in",children:c?(0,r.jsx)("div",{className:"px-2 py-1.5",children:(0,r.jsx)(C.IconSpinner,{})}):f.length?f.map((e,t)=>(0,r.jsx)(R,{onClick:()=>h(t),onMouseEnter:()=>u(t),title:e.label,data:e,isSelected:t===d},e.id)):(0,r.jsx)("div",{className:"px-2 py-1.5 text-sm text-muted-foreground",children:(null==m?void 0:m.length)?(0,r.jsx)("span",{children:"No matches results"}):(0,r.jsx)("span",{children:"No results"})})})});function _(e){let{kind:t}=e;switch(t){case k.ri.Doc:return(0,r.jsx)(C.IconEmojiBook,{});case k.ri.Web:return(0,r.jsx)(C.IconEmojiGlobe,{});case k.ri.Git:return(0,r.jsx)(C.IconCode,{});case k.ri.Github:return(0,r.jsx)(C.IconGitHub,{});case k.ri.Gitlab:return(0,r.jsx)(C.IconGitLab,{});default:return null}}function R(e){let{isSelected:t,data:n,...a}=e,l=(0,s.useRef)(null);return(0,s.useLayoutEffect)(()=>{if(t&&l.current){var e;null===(e=l.current)||void 0===e||e.scrollIntoView({block:"nearest",inline:"nearest"})}},[t]),(0,r.jsxs)("div",{className:(0,o.cn)("flex cursor-pointer gap-1 rounded-md px-2 py-1.5 text-sm",{"bg-accent text-accent-foreground":t}),...a,ref:l,children:[(0,r.jsx)("span",{className:"flex h-5 shrink-0 items-center",children:(0,r.jsx)(_,{kind:n.data.sourceKind})}),(0,r.jsx)("span",{className:"flex-1",children:n.label})]})}I.displayName="MetionList";let S=e=>{let t=e.getJSON(),n=[],r=0,s=e=>{var t,a;"text"===e.type?r+=(null==e?void 0:null===(t=e.text)||void 0===t?void 0:t.length)||0:"mention"===e.type&&(null==e?void 0:null===(a=e.attrs)||void 0===a?void 0:a.id)&&n.push({id:e.attrs.id,label:e.attrs.label,kind:e.attrs.kind}),e.content&&e.content.forEach(s)};return s(t),n};var E=e=>{let{disabled:t,category:n,placement:r,char:s="@",pluginKey:a}=e;return{render:()=>{let e,t;return{onStart:s=>{let a=S(s.editor);e=new h.M_(I,{props:{...s,mentions:a,category:n},editor:s.editor}),s.clientRect&&(t=(0,N.ZP)("body",{getReferenceClientRect:s.clientRect,appendTo:()=>document.body,content:e.element,showOnCreate:!0,interactive:!0,trigger:"manual",placement:r||"bottom-start",animation:"shift-away",maxWidth:"400px"}))},onUpdate(n){e.updateProps(n),n.clientRect&&t[0].setProps({getReferenceClientRect:n.clientRect})},onKeyDown(n){var r,s;return"Escape"===n.event.key?(t[0].hide(),!0):null!==(s=null===(r=e.ref)||void 0===r?void 0:r.onKeyDown(n))&&void 0!==s&&s},onExit(){t[0].destroy(),e.destroy()}}},char:s,pluginKey:a,command:e=>{var t,r,s;let{editor:a,range:l,props:i}=e;if("code"===n){!function(e,t,n){let r;let{doc:s}=e.state,a=e.state.selection.$from;s.descendants((e,t)=>!("mention"===e.type.name&&(0,o.wO)(e.attrs.kind))||(r=t,!1)),e.chain().deleteRange({from:t.from,to:t.to}).run();let l=void 0!==r,i=s.firstChild,c=l?[{type:b,attrs:n}]:[{type:b,attrs:n},{type:"text",text:" "}];if(i&&"paragraph"===i.type.name){let t=i.firstChild;if(t&&"mention"===t.type.name&&(0,o.wO)(t.attrs.kind)){let n=t.nodeSize;e.chain().deleteRange({from:1,to:1+n}).insertContentAt(1,c).focus().run()}else e.chain().insertContentAt(1,c).focus().run()}else e.chain().insertContentAt(0,c).focus().run();e.commands.focus(l?a.pos:a.pos+1)}(a,l,i);return}let c=a.view.state.selection.$to.nodeAfter,d=null==c?void 0:null===(t=c.text)||void 0===t?void 0:t.startsWith(" ");d&&(l.to+=1),a.chain().focus().insertContentAt(l,[{type:b,attrs:i},{type:"text",text:" "}]).run(),null===(s=a.view.dom.ownerDocument.defaultView)||void 0===s||null===(r=s.getSelection())||void 0===r||r.collapseToEnd()},allow:e=>{let{state:n,range:r}=e;if(t)return!1;let s=n.doc.resolve(r.from),a=n.schema.nodes[b],o=!!s.parent.type.contentMatch.matchType(a);return o}}};let H=new x.H$("mention-doc"),T=new x.H$("mention-code"),F=e=>p.hj.create({addKeyboardShortcuts(){return{Enter:t=>{let{editor:n}=t;return e(n),!0},"Shift-Enter":()=>this.editor.commands.first(e=>{let{commands:t}=e;return[()=>t.newlineInCode(),()=>t.createParagraphNear(),()=>t.liftEmptyBlock(),()=>t.splitBlock()]})}}}),A=s.createContext({}),M=(0,s.forwardRef)((e,t)=>{let{editable:n,content:a,contextInfo:l,fetchingContextInfo:i,submitting:c,onSubmit:x,placeholder:p,onBlur:v,onFocus:j,onUpdate:b,autoFocus:N,className:w,editorClassName:k,placement:C}=e,[I,_]=(0,s.useState)(!i),R=(0,g.d)(e=>{if(c)return;let t=e.getText();t&&(null==x||x(e))}),S=(0,s.useMemo)(()=>null!=l&&!!l.sources&&l.sources.some(e=>(0,o.wO)(e.sourceKind)),[null==l?void 0:l.sources]),M=(0,s.useMemo)(()=>null!=l&&!!l.sources&&l.sources.some(e=>(0,o._q)(e.sourceKind)),[null==l?void 0:l.sources]),L=(0,h.jE)({editable:!!I&&n,immediatelyRender:!1,extensions:[d.Z,u.Z,f.Z,m.Z.configure({showOnlyWhenEditable:!1,placeholder:I?p||"Ask anything...":"Loading..."}),F(e=>{R.current(e)}),y.configure({deleteTriggerWithBackspace:!0,HTMLAttributes:{class:"mention"},suggestion:E({category:"doc",char:"@",pluginKey:H,placement:"bottom"===C?"top-start":"bottom-start",disabled:!M})}),y.configure({deleteTriggerWithBackspace:!0,HTMLAttributes:{class:"mention-code"},suggestion:E({category:"code",char:"#",pluginKey:T,placement:"bottom"===C?"top-start":"bottom-start",disabled:!S})})],editorProps:{attributes:{class:(0,o.cn)("max-h-38 prose min-h-[3.5rem] max-w-none font-sans dark:prose-invert focus:outline-none prose-p:my-0",k)}},content:a,onBlur(e){null==v||v(e)},onFocus(e){null==j||j(e)},onUpdate(e){null==b||b(e)}},[I]);return((0,s.useImperativeHandle)(t,()=>({editor:L})),(0,s.useLayoutEffect)(()=>{L&&N&&L.commands.focus()},[L]),(0,s.useEffect)(()=>{i||I||_(!0)},[i]),L)?(0,r.jsx)(A.Provider,{value:{list:null==l?void 0:l.sources,pending:!!i},children:(0,r.jsx)("div",{className:(0,o.cn)("text-area-autosize max-h-36 overflow-y-auto pr-1",w),children:(0,r.jsx)(h.kg,{editor:L})})}):null});M.displayName="PromptEditor";var L=n(31458),B=n(11208),Z=n(3448);function O(e){let{onSearch:t,onModelSelect:n,modelName:a,className:l,placeholder:d,showBetaBadge:u,isLoading:m,autoFocus:f,loadingWithSpinning:x,cleanAfterSearch:p=!0,isFollowup:h,contextInfo:g,fetchingContextInfo:v,isModelLoading:j,models:b}=e,[y,N]=(0,s.useState)(!1),[w,k]=(0,s.useState)(!1),[I,_]=(0,s.useState)(""),R=(0,s.useRef)(null);(0,s.useEffect)(()=>{N(!0)},[]);let S=()=>{var e,t;null===(t=R.current)||void 0===t||null===(e=t.editor)||void 0===e||e.commands.focus()},E=e=>{n(e),setTimeout(()=>{S()})},H=e=>{if(!e||m||j)return;let n=e.getText().trim();if(!n)return;let r=(0,o.b)(n,null==g?void 0:g.sources),s={...(0,o.G8)(r),modelName:a};if(t(n,s),p){var l,i;null===(i=R.current)||void 0===i||null===(l=i.editor)||void 0===l||l.chain().clearContent().focus().run(),_("")}},T=e=>{var t;let n=null===(t=R.current)||void 0===t?void 0:t.editor;n&&n.chain().focus().command(t=>{var n,r,s;let{tr:a,state:o}=t,{$from:l}=o.selection,i=0===l.parentOffset,c=null!==(s=null===(r=l.nodeBefore)||void 0===r?void 0:null===(n=r.text)||void 0===n?void 0:n.endsWith(" "))&&void 0!==s&&s;return i||c?a.insertText(e):a.insertText(" "+e),!0}).run()},{hasCodebaseSource:F,hasDocumentSource:A}=(0,s.useMemo)(()=>(0,o.xV)(null==g?void 0:g.sources),[null==g?void 0:g.sources]),O=!!(null==b?void 0:b.length);return(0,r.jsxs)("div",{className:(0,o.cn)("relative w-full overflow-hidden rounded-xl border bg-background transition-all hover:border-ring dark:border-muted-foreground/60 dark:hover:border-muted-foreground",{"border-ring dark:border-muted-foreground":w},l),onClick:()=>{S()},children:[u&&(0,r.jsx)(z,{}),(0,r.jsxs)("div",{className:(0,o.cn)("flex items-end px-4",{"min-h-[5.5rem]":!h,"min-h-[2.5rem]":h}),children:[(0,r.jsxs)("div",{className:"mr-1 flex-1",children:[(0,r.jsx)(M,{editable:!0,contextInfo:g,fetchingContextInfo:v,onSubmit:H,placeholder:d||"Ask anything...",autoFocus:f,onFocus:()=>k(!0),onBlur:()=>k(!1),onUpdate:e=>{let{editor:t}=e;return _(t.getText().trim())},ref:R,placement:h?"bottom":"top",className:(0,o.cn)("text-area-autosize resize-none rounded-lg !border-none bg-transparent !shadow-none !outline-none !ring-0 !ring-offset-0",{"!h-[48px]":!y&&!h,"!h-[24px]":!y&&h,"py-3":!u,"py-4":u}),editorClassName:h&&O?"min-h-[1.75rem]":"min-h-[3.5em]"}),h&&O&&(0,r.jsx)("div",{className:"-ml-2 mb-2 flex",children:(0,r.jsx)(D,{isInitializing:j,models:b,value:a,onChange:E})})]}),(0,r.jsx)("div",{className:(0,o.cn)("mb-3 flex items-center justify-between gap-2"),children:(0,r.jsxs)("div",{className:(0,o.cn)("flex items-center justify-center rounded-lg p-1 transition-all",{"bg-primary text-primary-foreground cursor-pointer":I.length>0,"!bg-muted !text-primary !cursor-default":m||0===I.length||j,"mr-1.5":!u}),onClick:()=>{var e;return H(null===(e=R.current)||void 0===e?void 0:e.editor)},children:[x&&m&&(0,r.jsx)(C.IconSpinner,{className:"h-4 w-4"}),(!x||!m)&&(0,r.jsx)(C.IconArrowRight,{className:"h-4 w-4"})]})})]}),!h&&(0,r.jsx)("div",{className:(0,o.cn)("flex items-center gap-2 border-t bg-[#F9F6EF] py-2 pl-2 pr-4 dark:border-muted-foreground/60 dark:bg-[#333333]"),onClick:e=>e.stopPropagation(),children:(0,r.jsxs)(c.Z,{loading:j||v,delay:0,fallback:(0,r.jsx)("div",{className:"flex h-8 w-[40%] items-center",children:(0,r.jsx)(Z.O,{className:"h-5 w-full"})}),children:[(0,r.jsxs)(i.u,{children:[(0,r.jsx)(i.aJ,{asChild:!0,children:(0,r.jsxs)(L.z,{variant:"ghost",className:"gap-2 px-1.5 py-1 text-foreground/70",onClick:e=>T("#"),disabled:!F,children:[(0,r.jsx)(C.IconHash,{}),"Codebase"]})}),(0,r.jsx)(i._v,{className:"max-w-md",children:"Select a codebase to chat with"})]}),(0,r.jsx)(B.Z,{orientation:"vertical",className:"h-5"}),(0,r.jsxs)(i.u,{children:[(0,r.jsx)(i.aJ,{asChild:!0,children:(0,r.jsxs)(L.z,{variant:"ghost",className:"gap-2 px-1.5 py-1 text-foreground/70",onClick:e=>T("@"),disabled:!A,children:[(0,r.jsx)(C.IconAtSign,{}),"Documents"]})}),(0,r.jsx)(i._v,{className:"max-w-md",children:"Select a document to bring into context"})]}),!!(null==b?void 0:b.length)&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(B.Z,{orientation:"vertical",className:"h-5"}),(0,r.jsx)(D,{models:b,value:a,onChange:E})]})]})})]})}function D(e){let{models:t,value:n,onChange:s,isInitializing:a}=e,i=e=>{s(e)};return(0,r.jsx)(c.Z,{loading:a,fallback:(0,r.jsx)("div",{className:"w-full pl-2",children:(0,r.jsx)(Z.O,{className:"h-3 w-[20%]"})}),children:!!(null==t?void 0:t.length)&&(0,r.jsxs)(l.h_,{children:[(0,r.jsx)(l.$F,{asChild:!0,children:(0,r.jsxs)(L.z,{variant:"ghost",className:"gap-2 px-1.5 py-1 text-foreground/70",children:[(0,r.jsx)(C.IconBox,{}),n]})}),(0,r.jsx)(l.AW,{side:"bottom",align:"start",className:"dropdown-menu max-h-[30vh] min-w-[20rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-2 text-popover-foreground shadow animate-in",children:(0,r.jsx)(l._x,{value:n,onValueChange:s,children:t.map(e=>{let t=e===n;return(0,r.jsxs)(l.qB,{onClick:t=>{i(e),t.stopPropagation()},value:e,className:"cursor-pointer py-2 pl-3",children:[(0,r.jsx)(C.IconCheck,{className:(0,o.cn)("mr-2 shrink-0",e===n?"opacity-100":"opacity-0")}),(0,r.jsx)("span",{className:(0,o.cn)({"font-medium":t}),children:e})]},e)})})})]})})}function z(){let{theme:e}=(0,a.X)();return(0,r.jsxs)(i.u,{delayDuration:0,children:[(0,r.jsx)(i.aJ,{asChild:!0,children:(0,r.jsx)("span",{className:"absolute -right-8 top-1 mr-3 rotate-45 rounded-none border-none py-0.5 pl-6 pr-5 text-xs text-primary",style:{background:"dark"===e?"#333":"#e8e1d3"},children:"Beta"})}),(0,r.jsx)(i._v,{sideOffset:-8,className:"max-w-md",children:(0,r.jsx)("p",{children:"Please note that the answer engine is still in its early stages, and certain functionalities, such as finding the correct code context and the quality of summarizations, still have room for improvement. If you encounter an issue and believe it can be enhanced, consider sharing it in our Slack community!"})})]})}},63743:function(e,t,n){"use strict";n.d(t,{T:function(){return i}});var r=n(36164),s=n(3546),a=n(9010),o=n(31458),l=n(81565);function i(e){let{className:t}=e,{setTheme:n,theme:i}=(0,a.X)(),[c,d]=s.useTransition();return(0,r.jsxs)(o.z,{variant:"ghost",size:"icon",onClick:()=>{d(()=>{n("light"===i?"dark":"light")})},className:t,children:["dark"===i?(0,r.jsx)(l.IconMoon,{className:"transition-all"}):(0,r.jsx)(l.IconSun,{className:"transition-all"}),(0,r.jsx)("span",{className:"sr-only",children:"Toggle theme"})]})}},79972:function(e,t,n){"use strict";n.d(t,{Ol:function(){return l},Zb:function(){return o},aY:function(){return d},eW:function(){return u},ll:function(){return i}});var r=n(36164),s=n(3546),a=n(1544);let o=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)("div",{ref:t,className:(0,a.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",n),...s})});o.displayName="Card";let l=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)("div",{ref:t,className:(0,a.cn)("flex flex-col space-y-1.5 p-6",n),...s})});l.displayName="CardHeader";let i=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)("h3",{ref:t,className:(0,a.cn)("text-2xl font-semibold leading-none tracking-tight",n),...s})});i.displayName="CardTitle";let c=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)("p",{ref:t,className:(0,a.cn)("text-sm text-muted-foreground",n),...s})});c.displayName="CardDescription";let d=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)("div",{ref:t,className:(0,a.cn)("p-6 pt-0",n),...s})});d.displayName="CardContent";let u=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)("div",{ref:t,className:(0,a.cn)("flex items-center p-6 pt-0",n),...s})});u.displayName="CardFooter"},62202:function(e,t,n){"use strict";n.d(t,{$F:function(){return i},AW:function(){return u},Ju:function(){return x},VD:function(){return p},Xi:function(){return m},_x:function(){return c},h_:function(){return l},qB:function(){return f}});var r=n(36164),s=n(3546),a=n(19148),o=n(1544);let l=a.fC,i=a.xz;a.ZA,a.Uv,a.Tr;let c=a.Ee;a.wU;let d=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(a.tu,{ref:t,className:(0,o.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1",n),...s})});d.displayName=a.tu.displayName;let u=s.forwardRef((e,t)=>{let{className:n,sideOffset:s=4,...l}=e;return(0,r.jsx)(a.Uv,{children:(0,r.jsx)(a.VY,{ref:t,sideOffset:s,className:(0,o.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow animate-in 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",n),...l})})});u.displayName=a.VY.displayName;let m=s.forwardRef((e,t)=>{let{className:n,inset:s,...l}=e;return(0,r.jsx)(a.ck,{ref:t,className:(0,o.cn)("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",s&&"pl-8",n),...l})});m.displayName=a.ck.displayName;let f=s.forwardRef((e,t)=>{let{className:n,inset:s,...l}=e;return(0,r.jsx)(a.Rk,{ref:t,className:(0,o.cn)("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",s&&"pl-8",n),...l})});f.displayName=a.Rk.displayName;let x=s.forwardRef((e,t)=>{let{className:n,inset:s,...l}=e;return(0,r.jsx)(a.__,{ref:t,className:(0,o.cn)("px-2 py-1.5 text-sm font-semibold",s&&"pl-8",n),...l})});x.displayName=a.__.displayName;let p=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(a.Z0,{ref:t,className:(0,o.cn)("-mx-1 my-1 h-px bg-muted",n),...s})});p.displayName=a.Z0.displayName},5266:function(e,t,n){"use strict";n.d(t,{_:function(){return c}});var r=n(36164),s=n(3546),a=n(90893),o=n(14375),l=n(1544);let i=(0,o.j)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),c=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(a.f,{ref:t,className:(0,l.cn)(i(),n),...s})});c.displayName=a.f.displayName},57830:function(e,t,n){"use strict";n.r(t),n.d(t,{ScrollArea:function(){return l},ScrollBar:function(){return i}});var r=n(36164),s=n(3546),a=n(50778),o=n(1544);let l=s.forwardRef((e,t)=>{let{className:n,children:s,...l}=e;return(0,r.jsxs)(a.fC,{className:(0,o.cn)("relative overflow-hidden",n),...l,children:[(0,r.jsx)(a.l_,{ref:t,className:"h-full w-full rounded-[inherit] [&>div]:!block",children:s}),(0,r.jsx)(i,{}),(0,r.jsx)(a.Ns,{})]})});l.displayName=a.fC.displayName;let i=s.forwardRef((e,t)=>{let{className:n,orientation:s="vertical",...l}=e;return(0,r.jsx)(a.gb,{ref:t,orientation:s,className:(0,o.cn)("flex touch-none select-none transition-colors","vertical"===s&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===s&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",n),...l,children:(0,r.jsx)(a.q4,{className:"relative flex-1 rounded-full bg-border"})})});i.displayName=a.gb.displayName},52569:function(e,t,n){"use strict";n.d(t,{SQ:function(){return y},Yt:function(){return b},nY:function(){return j}});var r=n(36164),s=n(3546),a=n(87782),o=n(21454),l=n(36327),i=n(98454),c=n(3765),d=n(1544),u=n(66612);let m=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(u.fC,{ref:t,className:(0,d.cn)("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",n),...s})});m.displayName=u.fC.displayName;let f=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(u.Ee,{ref:t,className:(0,d.cn)("aspect-square h-full w-full",n),...s})});f.displayName=u.Ee.displayName;let x=s.forwardRef((e,t)=>{let{className:n,...s}=e;return(0,r.jsx)(u.NY,{ref:t,className:(0,d.cn)("flex h-full w-full items-center justify-center rounded-full bg-muted",n),...s})});x.displayName=u.NY.displayName;var p=n(3448),h=n(30410).lW;let g="not_found",v=new Set,j=e=>{v.delete(e),(0,o.JG)("/avatar/".concat(e))};function b(e){var t;let{user:n,className:o,fallback:i}=e,u=null==n?void 0:n.id,j=u?"/avatar/".concat(u):null,{data:b,isLoading:y,error:N}=(0,l.Z)(j,e=>{if(!(!u||v.has(u)))return(0,c.Z)(e,{responseFormatter:async e=>{let t=await e.blob(),n=h.from(await t.arrayBuffer());return"data:image/png;base64,".concat(n.toString("base64"))},errorHandler:e=>{if(404===e.status)throw Error(g)}})}),w=s.useMemo(()=>{if(null==n?void 0:n.email)return(0,a.B)(n.email)},[null==n?void 0:n.email]);return y?(0,r.jsx)(p.O,{className:(0,d.cn)("h-16 w-16 rounded-full",o)}):((null==N?void 0:N.message)===g&&u&&v.add(u),b||w||!i)?!b&&w?(0,r.jsx)(a.Z,{className:(0,d.cn)("h-16 w-16",o),...w}):(0,r.jsxs)(m,{className:(0,d.cn)("h-16 w-16",o),children:[(0,r.jsx)(f,{src:b,alt:null==n?void 0:n.email,className:"object-cover"}),(0,r.jsx)(x,{children:null==n?void 0:null===(t=n.email)||void 0===t?void 0:t.substring(0,2)})]}):i}function y(e){let[{data:t}]=(0,i.P)();return(0,r.jsx)(b,{user:null==t?void 0:t.me,...e})}},7449:function(e,t,n){"use strict";n.d(t,{Z:function(){return C}});var r=n(36164),s=n(3546),a=n(70652),o=n.n(a),l=n(11978),i=n(71480),c=n(43240),d=n(98454),u=n(70526),m=n(91302),f=n(11634),x=n(1544),p=n(31458),h=n(79972),g=n(62202),v=n(81565),j=n(82394),b=n(5266),y=n(29),N=n(48537),w=n(52569);let k=(0,c.BX)("\n mutation ResetUserAuthToken {\n resetUserAuthToken\n }\n");function C(e){let{children:t,showHome:n=!0,showSetting:a=!1,beforeRouteChange:o}=e,i=(0,l.useRouter)(),c=(0,m.QJ)(),[{data:u},f]=(0,d.P)(),x=null==u?void 0:u.me,[p,h]=s.useState(!1),j=async e=>{e.preventDefault(),h(!0),await c(),h(!1)},b=(e,t)=>{null==o||o(e),t?i.replace(e):i.push(e)};if(x)return(0,r.jsxs)(g.h_,{children:[(0,r.jsx)(g.$F,{children:t}),(0,r.jsxs)(g.AW,{side:"bottom",align:"end",className:"relative overflow-y-auto p-0",style:{maxHeight:"calc(100vh - 6rem)"},children:[(0,r.jsxs)("div",{className:"p-4 pt-0",children:[(0,r.jsxs)("div",{className:"sticky top-0 z-10 flex items-center gap-2 bg-popover pb-2 pt-4",children:[(0,r.jsx)(w.Yt,{user:x,className:"h-12 w-12 shrink-0 border-[2px] border-white"}),(0,r.jsxs)("div",{className:"space-y-1",children:[x.name&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(g.Ju,{className:"p-0",children:x.name}),(0,r.jsx)(g.Ju,{className:"p-0 text-sm font-normal text-muted-foreground",children:x.email})]}),!x.name&&(0,r.jsx)(g.Ju,{children:x.email})]})]}),(0,r.jsx)(I,{className:"mt-2",user:x,reexecuteQuery:f})]}),(0,r.jsx)(g.VD,{className:"mb-1 mt-0"}),(0,r.jsxs)("div",{className:"px-1.5",children:[n&&(0,r.jsxs)(g.Xi,{onClick:()=>b("/"),className:"cursor-pointer py-2 pl-3",children:[(0,r.jsx)(v.IconHome,{}),(0,r.jsx)("span",{className:"ml-2",children:"Home"})]}),a&&(0,r.jsxs)(g.Xi,{onClick:()=>b("/profile"),className:"cursor-pointer py-2 pl-3",children:[(0,r.jsx)(v.IconGear,{}),(0,r.jsx)("span",{className:"ml-2",children:"Settings"})]}),(0,r.jsxs)(g.Xi,{onClick:()=>window.open("/files"),className:"cursor-pointer py-2 pl-3",children:[(0,r.jsx)(v.IconCode,{}),(0,r.jsx)("span",{className:"ml-2",children:"Code Browser"})]}),(0,r.jsxs)(g.Xi,{onClick:()=>window.open("/api"),className:"cursor-pointer py-2 pl-3",children:[(0,r.jsx)(v.IconBackpack,{}),(0,r.jsx)("span",{className:"ml-2",children:"API Docs"})]})]}),(0,r.jsx)(g.VD,{}),(0,r.jsxs)(g.Xi,{disabled:p,onClick:j,className:"mx-1.5 mb-1.5 cursor-pointer py-2 pl-3",children:[(0,r.jsx)(v.IconLogout,{}),(0,r.jsx)("span",{className:"ml-2",children:"Sign out"}),p&&(0,r.jsx)(v.IconSpinner,{className:"ml-1"})]})]})]})}function I(e){let{className:t,user:n,reexecuteQuery:s}=e,a=(0,u.j)(),o=(0,f.Db)(k,{onCompleted:()=>s()});return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:(0,x.cn)("w-[268px] rounded-xl bg-[#FBF5ED] p-4 dark:bg-[#3D382F]",t),children:[(0,r.jsxs)(h.aY,{className:"p-0",children:[(0,r.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,r.jsx)(b._,{className:"text-xs text-muted-foreground",children:"Endpoint URL"}),(0,r.jsxs)("span",{className:"group relative",children:[(0,r.jsx)(j.I,{value:a,onChange:i.Z,className:"border-none bg-[#FEFCF8] group-focus-within:pr-12 group-hover:pr-12 dark:bg-[#4F483B]"}),(0,r.jsx)(N.q,{value:a,className:(0,x.cn)("absolute right-1 top-0.5 hidden group-focus-within:flex group-hover:flex")})]})]}),(0,r.jsxs)("div",{className:"mt-4 flex flex-col gap-2",children:[(0,r.jsx)(b._,{className:"text-xs text-muted-foreground",children:"Token"}),(0,r.jsxs)("span",{className:"group relative",children:[(0,r.jsx)(j.I,{value:n.authToken,onChange:i.Z,className:"border-none bg-[#FEFCF8] group-focus-within:pr-20 group-hover:pr-20 dark:bg-[#4F483B]"}),(0,r.jsxs)("div",{className:"absolute right-1 top-0.5 hidden items-center gap-1 group-focus-within:flex group-hover:flex",children:[(0,r.jsx)(N.q,{value:n.authToken}),(0,r.jsx)(p.z,{title:"Rotate",size:"icon",variant:"hover-destructive",onClick:()=>o(),children:(0,r.jsx)(v.IconRotate,{})})]})]})]})]}),(0,r.jsx)(h.eW,{className:"mt-3 p-0 text-xs text-muted-foreground",children:(0,r.jsxs)("span",{children:["Use information above for IDE extensions / plugins configuration, see"," ",(0,r.jsx)("a",{className:"text-link underline",target:"_blank",href:"https://tabby.tabbyml.com/docs/extensions/configurations#server",children:"documentation website"})," ","for details"]})})]}),(0,r.jsxs)("div",{className:"mb-6 mt-3 flex gap-x-4 lg:mb-0",children:[(0,r.jsx)(_,{href:"https://marketplace.visualstudio.com/items?itemName=TabbyML.vscode-tabby",name:"Visual Studio Code",icon:(0,r.jsx)(v.IconVSCode,{className:"h-6 w-6"})}),(0,r.jsx)(_,{href:"https://plugins.jetbrains.com/plugin/22379-tabby",name:"JetBrains",icon:(0,r.jsx)(v.IconJetBrains,{className:"h-6 w-6"})})]})]})}function _(e){let{href:t,name:n,icon:s}=e;return(0,r.jsxs)(y.u,{children:[(0,r.jsx)(y.aJ,{children:(0,r.jsx)(o(),{href:t,className:"flex h-8 w-8 items-center justify-center rounded-lg text-[#030302]",target:"_blank",children:s})}),(0,r.jsx)(y._v,{children:(0,r.jsx)("p",{children:n})})]})}},21808:function(e,t,n){"use strict";n.d(t,{$6:function(){return a},$I:function(){return o},L8:function(){return s},ir:function(){return l},o0:function(){return r}});let r="name@yourcompany.com",s=20,a={DEMO_AUTO_LOGIN:"_tabby_demo_autologin",SEARCH_INITIAL_MSG:"_tabby_search_initial_msg",SEARCH_INITIAL_CONTEXTS:"_tabby_search_initial_contexts"},o=48,l="NOT_FOUND"},9010:function(e,t,n){"use strict";n.d(t,{X:function(){return s}});var r=n(28242);function s(){let{theme:e,systemTheme:t,setTheme:n}=(0,r.F)();return{theme:e&&"system"!==e?e:t||"light",setTheme:n,systemTheme:t}}},38785:function(e,t,n){"use strict";n.d(t,{U:function(){return a}});var r=n(3546);let s=!0;function a(){let[e,t]=r.useState(()=>!s);return r.useEffect(function(){s=!1,t(!0)},[]),e}},31159:function(e,t,n){"use strict";n.d(t,{Vq:function(){return c}});var r=n(3546),s=n(21454),a=n(27257),o=n(3765),l=n(47241),i=n(17451);function c(){let{data:e,isLoading:t}=(0,s.ZP)("/v1beta/models",e=>(0,o.Z)(e,{errorHandler:()=>{throw Error("Fetch supported model failed.")}}),{shouldRetryOnError:!1}),n=(0,a.oR)(i.a,e=>e.selectedModel);return(0,r.useEffect)(()=>{if(!t){let t=function(e,t){if(!(null==t?void 0:t.length))return;let n=!!e&&t.includes(e);return n?e:t[0]}(n,null==e?void 0:e.chat);(0,l.Eg)(t)}},[t]),{isModelLoading:t,selectedModel:n,models:null==e?void 0:e.chat}}},70526:function(e,t,n){"use strict";n.d(t,{e:function(){return i},j:function(){return c}});var r=n(3546),s=n(40055),a=n(43240),o=n(1544);let l=(0,a.BX)("\n query NetworkSetting {\n networkSetting {\n externalUrl\n }\n }\n"),i=e=>(0,s.aM)({query:l,...e}),c=()=>{let[{data:e}]=i(),t=null==e?void 0:e.networkSetting,n=r.useMemo(()=>(null==t?void 0:t.externalUrl)||((0,o.S_)()?new URL(window.location.href).origin:""),[t]);return n}},47241:function(e,t,n){"use strict";n.d(t,{Eg:function(){return a}}),n(1544);var r=n(17451);r.a.getState;let s=r.a.setState,a=e=>{s(t=>({...t,selectedModel:e}))}},17451:function(e,t,n){"use strict";n.d(t,{a:function(){return i}});var r=n(27257),s=n(85654),a=n(1544);let o=["_hasHydrated","setHasHydrated","activeChatId"],l={_hasHydrated:!1,chats:void 0,activeChatId:(0,a.x0)(),selectedModel:void 0},i=(0,r.Ue)()((0,s.tJ)(e=>({...l,setHasHydrated:t=>{e({_hasHydrated:t})}}),{name:"tabby-chat-storage",partialize:e=>Object.fromEntries(Object.entries(e).filter(e=>{let[t]=e;return!o.includes(t)})),onRehydrateStorage:()=>e=>{e&&e.setHasHydrated(!0)}}))},37266:function(e,t,n){"use strict";n.d(t,{CR:function(){return l},F0:function(){return c},wh:function(){return d}});var r=n(27257),s=n(85654);let a=["_hasHydrated","setHasHydrated","activeChatId"],o={_hasHydrated:!1,homePage:void 0},l=(0,r.Ue)()((0,s.tJ)(e=>({...o,setHasHydrated:t=>{e({_hasHydrated:t})}}),{name:"tabby-scroll-storage",partialize:e=>Object.fromEntries(Object.entries(e).filter(e=>{let[t]=e;return!a.includes(t)})),onRehydrateStorage:()=>e=>{e&&e.setHasHydrated(!0)}})),i=l.setState,c=e=>i(t=>({...t,homePage:e})),d=()=>i(e=>({...e,homePage:void 0}))},15812:function(){}}]);
\ No newline at end of file
diff --git a/ee/tabby-webserver/ui/_next/static/chunks/8223-463402b0353b2283.js b/ee/tabby-webserver/ui/_next/static/chunks/8223-463402b0353b2283.js
deleted file mode 100644
index 768d906641eb..000000000000
--- a/ee/tabby-webserver/ui/_next/static/chunks/8223-463402b0353b2283.js
+++ /dev/null
@@ -1 +0,0 @@
-(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8223],{72657:function(e,n,s){"use strict";s.d(n,{K:function(){return o}});var t=s(36164);s(3546);var r=s(12624),a=s(1544),i=s(31458),l=s(81565);function o(e){let{className:n,container:s,offset:o,...d}=e,c=(0,r.e)(o||0,s);return(0,t.jsxs)(i.z,{variant:"outline",size:"icon",className:(0,a.cn)("absolute right-4 top-1 z-10 bg-background transition-opacity duration-300 sm:right-8 md:top-2",c?"opacity-0":"opacity-100",n),onClick:()=>{s?s.scrollTo({top:s.scrollHeight,behavior:"smooth"}):window.scrollTo({top:document.body.offsetHeight,behavior:"smooth"})},...d,children:[(0,t.jsx)(l.IconArrowDown,{}),(0,t.jsx)("span",{className:"sr-only",children:"Scroll to bottom"})]})}},90168:function(e,n,s){"use strict";s.d(n,{q:function(){return f}});var t=s(36164),r=s(3546),a=s(74630),i=s(1544),l=s(29),o=s(43739),d=s(14079);let c=o.fC,u=r.forwardRef((e,n)=>{let{className:s,...r}=e;return(0,t.jsx)(o.ck,{ref:n,className:(0,i.cn)("border-b",s),...r})});u.displayName="AccordionItem";let h=r.forwardRef((e,n)=>{let{className:s,children:r,...a}=e;return(0,t.jsxs)(o.xz,{ref:n,className:(0,i.cn)("flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",s),...a,children:[r,(0,t.jsx)(d.Z,{className:"h-4 w-4 shrink-0 transition-transform duration-200"})]})});h.displayName=o.xz.displayName;let m=r.forwardRef((e,n)=>{let{className:s,children:r,...a}=e;return(0,t.jsx)(o.VY,{ref:n,className:"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",...a,children:(0,t.jsx)("div",{className:(0,i.cn)("pb-4 pt-0",s),children:r})})});m.displayName=o.VY.displayName;var p=s(81565);let f=(0,r.forwardRef)((e,n)=>{var s,a;let{contexts:l,userContexts:o,className:d,triggerClassname:p,onContextClick:f,enableTooltip:x,onTooltipClick:g,highlightIndex:j,showExternalLink:b}=e,N=((null==o?void 0:o.length)||0)+l.length,C=null!==(s=null==l?void 0:l.length)&&void 0!==s?s:0,w=null!==(a=null==o?void 0:o.length)&&void 0!==a?a:0,A=C+w,[y,k]=(0,r.useState)(A<=5?"references":void 0);return((0,r.useEffect)(()=>{A<=5?k("references"):k(void 0)},[A]),0===N)?null:(0,t.jsx)(c,{type:"single",collapsible:!0,className:(0,i.cn)("bg-transparent text-foreground",d),ref:n,value:y,onValueChange:k,children:(0,t.jsxs)(u,{value:"references",className:"my-0 border-0",children:[(0,t.jsx)(h,{className:(0,i.cn)("my-0 py-2 font-semibold",p),children:(0,t.jsx)("span",{className:"mr-2",children:"Read ".concat(N," file").concat(N>1?"s":"")})}),(0,t.jsxs)(m,{className:"space-y-2",children:[null==o?void 0:o.map((e,n)=>(0,t.jsx)(v,{context:e,onContextClick:e=>null==f?void 0:f(e,!0),isHighlighted:j===n},"user-".concat(n))),l.map((e,n)=>(0,t.jsx)(v,{context:e,onContextClick:e=>null==f?void 0:f(e,!1),enableTooltip:x,onTooltipClick:g,showExternalLinkIcon:b,isHighlighted:j===n+((null==o?void 0:o.length)||0)},"assistant-".concat(n)))]})]})})});function v(e){var n,s,o,d,c,u,h;let{context:m,clickable:f=!0,onContextClick:v,enableTooltip:x,onTooltipClick:g,showExternalLinkIcon:j,isHighlighted:b}=e,[N,C]=(0,r.useState)(!1),w=!(0,a.Z)(null===(n=m.range)||void 0===n?void 0:n.start)&&!(0,a.Z)(null===(s=m.range)||void 0===s?void 0:s.end)&&m.range.start{x&&T&&C(e)},delayDuration:0,children:[(0,t.jsx)(l.aJ,{asChild:!0,children:(0,t.jsx)("div",{className:(0,i.cn)("rounded-md border p-2",{"cursor-pointer hover:bg-accent":f,"cursor-default pointer-events-auto":!f,"bg-accent transition-all":b}),onClick:e=>f&&(null==v?void 0:v(m)),children:(0,t.jsxs)("div",{className:"flex items-center gap-1 overflow-hidden",children:[(0,t.jsx)(p.IconFile,{className:"shrink-0"}),(0,t.jsxs)("div",{className:"flex-1 truncate",title:m.filepath,children:[(0,t.jsx)("span",{children:y}),(null===(d=m.range)||void 0===d?void 0:d.start)&&(0,t.jsxs)("span",{className:"text-muted-foreground",children:[":",m.range.start]}),w&&(0,t.jsxs)("span",{className:"text-muted-foreground",children:["-",m.range.end]}),(0,t.jsx)("span",{className:"ml-2 text-xs text-muted-foreground",children:k})]}),j&&(0,t.jsx)(p.IconExternalLink,{className:"shrink-0 text-muted-foreground"})]})})}),(0,t.jsx)(l._v,{align:"start",onClick:g,className:"cursor-pointer p-2",children:(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"mb-2 font-semibold",children:"Scores"}),(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsxs)("div",{className:"flex",children:[(0,t.jsx)("span",{className:"w-20",children:"rrf:"}),null!==(c=null==T?void 0:T.rrf)&&void 0!==c?c:"-"]}),(0,t.jsxs)("div",{className:"flex",children:[(0,t.jsx)("span",{className:"w-20",children:"bm25:"}),null!==(u=null==T?void 0:T.bm25)&&void 0!==u?u:"-"]}),(0,t.jsxs)("div",{className:"flex",children:[(0,t.jsx)("span",{className:"w-20",children:"embedding:"}),null!==(h=null==T?void 0:T.embedding)&&void 0!==h?h:"-"]})]})]})})]})}f.displayName="CodeReferences"},73033:function(e,n,s){"use strict";s.d(n,{s:function(){return i}});var t=s(36164),r=s(3546),a=s(52991);let i=(0,r.memo)(e=>(0,t.jsx)(a.D,{linkTarget:"_blank",...e}),(e,n)=>e.children===n.children&&e.className===n.className)},10279:function(e,n,s){"use strict";s.d(n,{mE:function(){return D},JG:function(){return R},V$:function(){return O}});var t=s(36164),r=s(3546),a=s(42891),i=s.n(a),l={src:"/_next/static/media/default-favicon.a2df8fbb.png",height:16,width:16,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAABAElEQVR42mOAAqaMgrXeIYlL2jwjF7WZey7wBolB5eyZotNX1PdMO/Br466r/89dfvx/w7aLv6LSlteDFem5zPPesPXir20Hbv7ftPfGrz9///969urL/xkLj/0KjlvqzZCct6rt9r3X/w+cvP/r8fOP/0Hg/uN3vzbsvPq/rmVzG0Nk+oq2J8/f///89devOw/f/n/7/uv/T19+/Dpx7uH/3NK1bQwMarO8tu66/Auk89qd17/mrzn/682H7//3H7rxi4FhsheDDYMhU0DC0vqde6/+On/lyf/5q878X7Tq9M+E7JX1cJ/4MpgzMajO9ApNXtoWl7mszc5nvhdMEgB1uZJfA01kRAAAAABJRU5ErkJggg==",blurWidth:8,blurHeight:8},o=s(62226),d=s.n(o),c=s(6797),u=s.n(c),h=s(1853),m=s(74630),p=s(66686),f=s(36982),v=s(93668),x=s(1544),g=s(94744),j=s(37064),b=s(83008),N=s(28312),C=s(31458),w=s(81565),A=s(29);let y=(0,r.memo)(e=>{let{language:n,value:s,onCopyContent:a,onApplyInEditor:i,canWrapLongLines:l}=e,[o,d]=(0,r.useState)(!1),{isCopied:c,copyToClipboard:u}=(0,N.m)({timeout:2e3,onCopyContent:a});return(0,t.jsxs)("div",{className:"codeblock relative w-full bg-zinc-950 font-sans",children:[(0,t.jsxs)("div",{className:"flex w-full items-center justify-between bg-zinc-800 px-6 py-2 pr-4 text-zinc-100",children:[(0,t.jsx)("span",{className:"text-xs lowercase",children:n}),(0,t.jsxs)("div",{className:"flex items-center space-x-1",children:[l&&(0,t.jsxs)(A.u,{children:[(0,t.jsx)(A.aJ,{asChild:!0,children:(0,t.jsx)(C.z,{size:"icon",variant:"ghost",className:"text-xs hover:bg-[#3C382F] hover:text-[#F4F4F5] focus-visible:ring-1 focus-visible:ring-slate-700 focus-visible:ring-offset-0",onClick:()=>d(!o),children:o?(0,t.jsx)(w.IconAlignJustify,{}):(0,t.jsx)(w.IconWrapText,{})})}),(0,t.jsx)(A._v,{children:(0,t.jsx)("p",{className:"m-0",children:"Toggle word wrap"})})]}),i&&(0,t.jsxs)(A.u,{children:[(0,t.jsx)(A.aJ,{asChild:!0,children:(0,t.jsxs)(C.z,{variant:"ghost",size:"icon",className:"text-xs hover:bg-[#3C382F] hover:text-[#F4F4F5] focus-visible:ring-1 focus-visible:ring-slate-700 focus-visible:ring-offset-0",onClick:()=>i(s,{languageId:n,smart:!0}),children:[(0,t.jsx)(w.IconSmartApplyInEditor,{}),(0,t.jsx)("span",{className:"sr-only",children:"Smart Apply in Editor"})]})}),(0,t.jsx)(A._v,{children:(0,t.jsx)("p",{className:"m-0",children:"Smart Apply in Editor"})})]}),i&&(0,t.jsxs)(A.u,{children:[(0,t.jsx)(A.aJ,{asChild:!0,children:(0,t.jsxs)(C.z,{variant:"ghost",size:"icon",className:"text-xs hover:bg-[#3C382F] hover:text-[#F4F4F5] focus-visible:ring-1 focus-visible:ring-slate-700 focus-visible:ring-offset-0",onClick:()=>i(s,void 0),children:[(0,t.jsx)(w.IconApplyInEditor,{}),(0,t.jsx)("span",{className:"sr-only",children:"Apply in Editor"})]})}),(0,t.jsx)(A._v,{children:(0,t.jsx)("p",{className:"m-0",children:"Apply in Editor"})})]}),(0,t.jsxs)(A.u,{children:[(0,t.jsx)(A.aJ,{asChild:!0,children:(0,t.jsxs)(C.z,{variant:"ghost",size:"icon",className:"text-xs hover:bg-[#3C382F] hover:text-[#F4F4F5] focus-visible:ring-1 focus-visible:ring-slate-700 focus-visible:ring-offset-0",onClick:()=>{c||u(s)},children:[c?(0,t.jsx)(w.IconCheck,{}):(0,t.jsx)(w.IconCopy,{}),(0,t.jsx)("span",{className:"sr-only",children:"Copy"})]})}),(0,t.jsx)(A._v,{children:(0,t.jsx)("p",{className:"m-0",children:"Copy"})})]})]})]}),(0,t.jsx)(g.Z,{language:"toml"===n?"bash":n,style:b.RY,PreTag:"div",showLineNumbers:!0,wrapLongLines:o,customStyle:{margin:0,width:"100%",background:"transparent",padding:"1.5rem 1rem"},codeTagProps:{style:{fontSize:"0.9rem",fontFamily:"var(--font-mono)"}},renderer:e=>{let{rows:n,stylesheet:s,useInlineStyles:t}=e;return n.map((e,n)=>{let r=e.children,a=null==r?void 0:r.shift();return a&&(e.children=[a,{children:r,properties:{className:[]},tagName:"span",type:"element"}]),(0,j.ZP)({node:e,stylesheet:s,useInlineStyles:t,key:n})})},children:s})]})});y.displayName="CodeBlock";var k=s(90615),T=s(73033);s(80804);var M=s(74038),I=s(83171),E=s(3448);let z=e=>{let n=d().sanitize(e,{ALLOWED_TAGS:[],ALLOWED_ATTR:[]}),s=p.TU.parse(n),t=u().decode(s),r=t.replace(/<\/?[^>]+(>|$)/g,"");return r},L=(0,r.createContext)({});function R(e){let{message:n,headline:s=!1,attachmentDocs:a,attachmentCode:i,onApplyInEditor:l,onCopyContent:o,contextInfo:d,fetchingContextInfo:c,className:u,canWrapLongLines:p,...g}=e,j=(0,r.useMemo)(()=>{var e,n;let s=null!==(e=null==a?void 0:a.map(e=>({type:"doc",data:e})))&&void 0!==e?e:[],t=null!==(n=null==i?void 0:i.map(e=>({type:"code",data:e})))&&void 0!==n?n:[];return(0,h.Z)([...s,...t])},[a,i]),b=e=>{let n;let r=[],a=0,i=e=>{e&&r.push(e)},l=(s,l,o)=>{for(;null!==(n=s.exec(e));)i(e.slice(a,n.index)),r.push((0,t.jsx)(l,{...o(n)},n.index)),a=n.index+n[0].length};return l(M.H,F,e=>{let n=parseInt(e[1],10),s=(0,m.Z)(n)?void 0:null==j?void 0:j[n-1],t=null==s?void 0:s.type,r=s&&!(0,m.Z)(n);return{citationIndex:n,showcitation:r,citationType:t,citationSource:s}}),l(M.z,S,e=>{let n=e[1];return{sourceId:n,className:s?"text-[1rem] font-semibold":void 0}}),i(e.slice(a)),r};return(0,t.jsx)(L.Provider,{value:{onCopyContent:o,onApplyInEditor:l,onCodeCitationClick:g.onCodeCitationClick,onCodeCitationMouseEnter:g.onCodeCitationMouseEnter,onCodeCitationMouseLeave:g.onCodeCitationMouseLeave,contextInfo:d,fetchingContextInfo:!!c,canWrapLongLines:!!p},children:(0,t.jsx)(T.s,{className:(0,x.cn)("message-markdown prose max-w-none break-words dark:prose-invert prose-p:leading-relaxed prose-pre:mt-1 prose-pre:p-0",u),remarkPlugins:[f.Z,v.Z],components:{p(e){let{children:n}=e;return(0,t.jsx)("p",{className:"mb-2 last:mb-0",children:n.map((e,n)=>"string"==typeof e?b(e):(0,t.jsx)("span",{children:e},n))})},li(e){let{children:n}=e;return n&&n.length?(0,t.jsx)("li",{children:n.map((e,n)=>"string"==typeof e?b(e):(0,t.jsx)("span",{children:e},n))}):(0,t.jsx)("li",{children:n})},code(e){let{node:n,inline:s,className:r,children:a,...i}=e;if(a.length){if("▍"==a[0])return(0,t.jsx)("span",{className:"mt-1 animate-pulse cursor-default",children:"▍"});a[0]=a[0].replace("`▍`","▍")}let d=/language-(\w+)/.exec(r||"");return s?(0,t.jsx)("code",{className:r,...i,children:a}):(0,t.jsx)(_,{language:d&&d[1]||"",value:String(a).replace(/\n$/,""),onApplyInEditor:l,onCopyContent:o,canWrapLongLines:p,...i},Math.random())}},children:n})})}function D(e){let{error:n="Failed to fetch"}=e,s=(0,r.useMemo)(()=>"```\n"+JSON.stringify({error:!0,message:n},null,2)+"\n```",[n]);return(0,t.jsx)(T.s,{className:"prose-full-width prose break-words text-sm dark:prose-invert prose-p:leading-relaxed prose-pre:mt-1 prose-pre:p-0",remarkPlugins:[f.Z,v.Z],components:{code(e){let{node:n,inline:s,className:r,children:a,...i}=e;return(0,t.jsx)("div",{...i,className:(0,x.cn)(r,"bg-zinc-950 p-2"),children:a})}},children:s})}function _(e){let{canWrapLongLines:n}=(0,r.useContext)(L);return(0,t.jsx)(y,{...e,canWrapLongLines:n})}function F(e){let{citationIndex:n,showcitation:s,citationType:r,citationSource:a}=e;return(0,t.jsx)("div",{className:"inline",children:s&&(0,t.jsx)(t.Fragment,{children:"doc"===r?(0,t.jsx)(Z,{relevantDocument:a.data,citationIndex:n}):"code"===r?(0,t.jsx)(P,{relevantCode:a.data,citationIndex:n}):null})})}function S(e){var n;let{sourceId:s,className:a}=e,{contextInfo:i,fetchingContextInfo:l}=(0,r.useContext)(L);if(!s)return null;let o=null==i?void 0:null===(n=i.sources)||void 0===n?void 0:n.find(e=>e.sourceId===s);return o?(0,t.jsx)("span",{className:"node-mention",children:(0,t.jsx)("span",{children:l?(0,t.jsx)(E.O,{className:"w-16"}):(0,t.jsx)(I.p,{id:o.sourceId,label:o.sourceName,kind:o.sourceKind,className:a})})}):null}function Z(e){let{relevantDocument:n,citationIndex:s}=e,r=n?new URL(n.link):null;return(0,t.jsxs)(k.zs,{children:[(0,t.jsx)(k.Yi,{children:(0,t.jsx)("span",{className:"relative -top-2 mr-0.5 inline-block h-4 w-4 cursor-pointer rounded-full bg-muted text-center text-xs font-medium",onClick:()=>window.open(n.link),children:s})}),(0,t.jsx)(k.bZ,{className:"w-96 text-sm",children:(0,t.jsxs)("div",{className:"flex w-full flex-col gap-y-1",children:[(0,t.jsxs)("div",{className:"m-0 flex items-center space-x-1 text-xs leading-none text-muted-foreground",children:[(0,t.jsx)(O,{hostname:r.hostname,className:"m-0 mr-1 leading-none"}),(0,t.jsx)("p",{className:"m-0 leading-none",children:r.hostname})]}),(0,t.jsx)("p",{className:"m-0 cursor-pointer font-bold leading-none transition-opacity hover:opacity-70",onClick:()=>window.open(n.link),children:n.title}),(0,t.jsx)("p",{className:"m-0 line-clamp-4 leading-none",children:z(n.content)})]})})]})}function P(e){let{relevantCode:n,citationIndex:s}=e,{onCodeCitationClick:a,onCodeCitationMouseEnter:i,onCodeCitationMouseLeave:l}=(0,r.useContext)(L);return(0,t.jsx)("span",{className:"relative -top-2 mr-0.5 inline-block h-4 w-4 cursor-pointer rounded-full bg-muted text-center text-xs font-medium",onClick:()=>{null==a||a(n)},onMouseEnter:()=>{null==i||i(s)},onMouseLeave:()=>{null==l||l(s)},children:s})}function O(e){let{hostname:n,className:s}=e,[a,o]=(0,r.useState)(!1);return(0,t.jsxs)("div",{className:"relative h-3.5 w-3.5",children:[(0,t.jsx)(i(),{src:l,alt:n,width:14,height:14,className:(0,x.cn)("absolute left-0 top-0 z-0 h-3.5 w-3.5 rounded-full leading-none",s)}),(0,t.jsx)(i(),{src:"https://s2.googleusercontent.com/s2/favicons?sz=128&domain_url=".concat(n),alt:n,width:14,height:14,className:(0,x.cn)("relative z-10 h-3.5 w-3.5 rounded-full bg-card leading-none",s,{"opacity-0":!a}),onLoad:()=>{o(!0)}})]})}},90615:function(e,n,s){"use strict";s.d(n,{Yi:function(){return o},bZ:function(){return d},zs:function(){return l}});var t=s(36164),r=s(3546),a=s(38421),i=s(1544);let l=a.fC,o=a.xz,d=r.forwardRef((e,n)=>{let{className:s,align:r="center",sideOffset:l=4,...o}=e;return(0,t.jsx)(a.VY,{ref:n,align:r,sideOffset:l,className:(0,i.cn)("z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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-[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",s),...o})});d.displayName=a.VY.displayName},12624:function(e,n,s){"use strict";s.d(n,{e:function(){return a}});var t=s(3546),r=s(62940);function a(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1?arguments[1]:void 0,[s,a]=t.useState(!1);return t.useEffect(()=>{if(n)return;let s=(0,r.Z)(()=>{a(window.innerHeight+window.scrollY>=document.body.offsetHeight-e)},100,{leading:!0});return window.addEventListener("scroll",s,{passive:!0}),window.addEventListener("resize",s,{passive:!0}),s(),()=>{window.removeEventListener("scroll",s),window.removeEventListener("resize",s)}},[e,n]),t.useEffect(()=>{if(!n)return;let s=(0,r.Z)(()=>{let{scrollTop:s,clientHeight:t,scrollHeight:r}=n;a(s+t>=r-e)},100,{leading:!0});return n.addEventListener("scroll",s,{passive:!0}),n.addEventListener("resize",s,{passive:!0}),s(),()=>{n.removeEventListener("scroll",s),n.removeEventListener("resize",s)}},[e,n]),s}},55832:function(e,n,s){"use strict";s.d(n,{h:function(){return r}});var t=s(3546);function r(){let e=(0,t.useRef)(null);return{formRef:e,onKeyDown:n=>{if("Enter"===n.key&&!n.shiftKey&&!n.nativeEvent.isComposing){var s;null===(s=e.current)||void 0===s||s.requestSubmit(),n.preventDefault()}}}}},64566:function(e,n,s){"use strict";s.d(n,{x:function(){return u}});var t=s(3546),r=s(43240),a=s(11634),i=s(16784);let l=(0,r.BX)("\n subscription CreateThreadAndRun($input: CreateThreadAndRunInput!) {\n createThreadAndRun(input: $input) {\n __typename\n ... on ThreadCreated {\n id\n }\n ... on ThreadUserMessageCreated {\n id\n }\n ... on ThreadAssistantMessageCreated {\n id\n }\n ... on ThreadRelevantQuestions {\n questions\n }\n ... on ThreadAssistantMessageAttachmentsCode {\n hits {\n code {\n gitUrl\n filepath\n language\n content\n startLine\n }\n scores {\n rrf\n bm25\n embedding\n }\n }\n }\n ... on ThreadAssistantMessageAttachmentsDoc {\n hits {\n doc {\n title\n link\n content\n }\n score\n }\n }\n ... on ThreadAssistantMessageContentDelta {\n delta\n }\n ... on ThreadAssistantMessageCompleted {\n id\n }\n }\n }\n"),o=(0,r.BX)("\n subscription CreateThreadRun($input: CreateThreadRunInput!) {\n createThreadRun(input: $input) {\n __typename\n ... on ThreadCreated {\n id\n }\n ... on ThreadUserMessageCreated {\n id\n }\n ... on ThreadAssistantMessageCreated {\n id\n }\n ... on ThreadRelevantQuestions {\n questions\n }\n ... on ThreadAssistantMessageAttachmentsCode {\n hits {\n code {\n gitUrl\n filepath\n language\n content\n startLine\n }\n scores {\n rrf\n bm25\n embedding\n }\n }\n }\n ... on ThreadAssistantMessageAttachmentsDoc {\n hits {\n doc {\n title\n link\n content\n }\n score\n }\n }\n ... on ThreadAssistantMessageContentDelta {\n delta\n }\n ... on ThreadAssistantMessageCompleted {\n id\n }\n }\n }\n"),d=(0,r.BX)("\n mutation DeleteThreadMessagePair(\n $threadId: ID!\n $userMessageId: ID!\n $assistantMessageId: ID!\n ) {\n deleteThreadMessagePair(\n threadId: $threadId\n userMessageId: $userMessageId\n assistantMessageId: $assistantMessageId\n )\n }\n"),c=()=>({content:"",completed:!1});function u(e){let{threadId:n,onAssistantMessageCompleted:s}=e,[r,u]=t.useState(n),h=t.useRef(),[m,p]=t.useState(!1),[f,v]=t.useState(c()),[x,g]=t.useState(),j=(e,n)=>{let s={...e};switch(n.__typename){case"ThreadCreated":s.threadId=n.id;break;case"ThreadUserMessageCreated":s.userMessageId=n.id;break;case"ThreadAssistantMessageCreated":s.assistantMessageId=n.id;break;case"ThreadRelevantQuestions":s.relevantQuestions=n.questions;break;case"ThreadAssistantMessageAttachmentsCode":s.attachmentsCode=n.hits;break;case"ThreadAssistantMessageAttachmentsDoc":s.attachmentsDoc=n.hits;break;case"ThreadAssistantMessageContentDelta":s.content+=n.delta;break;case"ThreadAssistantMessageCompleted":s.completed=!0;break;default:throw Error("Unknown event "+JSON.stringify(s))}return s},b=(0,i.d)(e=>{var n;null===(n=h.current)||void 0===n||n.call(h),h.current=void 0,p(!1),!e&&r&&(null==s||s(f))});t.useEffect(()=>{n!==r&&u(n)},[n]);let N=(e,n)=>{let{unsubscribe:s}=a.L.subscription(l,{input:{thread:{userMessage:e},options:n}}).subscribe(e=>{var n;if(null==e?void 0:e.error){p(!1),g(e.error),s();return}let t=null===(n=e.data)||void 0===n?void 0:n.createThreadAndRun;t&&((null==t?void 0:t.__typename)==="ThreadAssistantMessageCompleted"&&b.current(),(null==t?void 0:t.__typename)==="ThreadCreated"&&t.id!==r&&u(t.id),v(e=>j(e,t)))});return s},C=(e,n)=>{if(!r)return;let{unsubscribe:s}=a.L.subscription(o,{input:{threadId:r,additionalUserMessage:e,options:n}}).subscribe(e=>{var n;if(null==e?void 0:e.error){p(!1),g(e.error),s();return}let t=null===(n=e.data)||void 0===n?void 0:n.createThreadRun;t&&("ThreadAssistantMessageCompleted"===t.__typename&&b.current(),v(e=>j(e,t)))});return s},w=(0,a.D)(d),A=(e,n)=>{m||(p(!0),g(void 0),v(c()),r?h.current=C(e,n):h.current=N(e,n))},y=(e,n,s)=>w({threadId:e,userMessageId:n,assistantMessageId:s}).then(e=>{var n;if(!(null==e?void 0:null===(n=e.data)||void 0===n?void 0:n.deleteThreadMessagePair)){if(null==e?void 0:e.error)throw e.error;throw Error("Failed to fetch")}});return{isLoading:m,answer:f,error:x,sendUserMessage:A,stop:b.current,regenerate:e=>r?(p(!0),g(void 0),v(c()),y(e.threadId,e.userMessageId,e.assistantMessageId).then(()=>{A(e.userMessage,e.threadRunOptions)}).catch(e=>{let n=e instanceof Error?e:Error("Failed to fetch");g(n),p(!1)})):Promise.resolve(void 0),deleteThreadMessagePair:y}}},80804:function(){}}]);
\ No newline at end of file
diff --git a/ee/tabby-webserver/ui/_next/static/chunks/8399-2ef424935694b83c.js b/ee/tabby-webserver/ui/_next/static/chunks/8399-2ef424935694b83c.js
deleted file mode 100644
index 009867222698..000000000000
--- a/ee/tabby-webserver/ui/_next/static/chunks/8399-2ef424935694b83c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8399],{18399:function(e,r,t){t.d(r,{ZP:function(){return G}});var n=t(36164),a=t(3546),l=t(11978),s=t(84381),i=t(94909),o=t(5493),d=t(2578),c=t(40055),u=t(23782),m=t(43240),f=t(18500),x=t(11634),p=t(1544),h=t(73460),j=t(31458),v=t(98150),N=t(81565),y=t(82394),g=t(5266),b=t(70772);let C=a.forwardRef((e,r)=>{let{className:t,...a}=e;return(0,n.jsx)(b.fC,{className:(0,p.cn)("grid gap-2",t),...a,ref:r})});C.displayName=b.fC.displayName;let w=a.forwardRef((e,r)=>{let{className:t,...a}=e;return(0,n.jsx)(b.ck,{ref:r,className:(0,p.cn)("aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",t),...a,children:(0,n.jsx)(b.z$,{className:"flex items-center justify-center",children:(0,n.jsx)(N.IconCircle,{className:"h-2.5 w-2.5 fill-current text-current"})})})});w.displayName=b.ck.displayName;var I=t(48537),_=t(94770),k=t(20325);let R=(0,m.BX)("\n mutation updateOauthCredential($input: UpdateOAuthCredentialInput!) {\n updateOauthCredential(input: $input)\n }\n"),z=(0,m.BX)("\n mutation deleteOauthCredential($provider: OAuthProvider!) {\n deleteOauthCredential(provider: $provider)\n }\n"),O=(0,m.BX)("\n query OAuthCallbackUrl($provider: OAuthProvider!) {\n oauthCallbackUrl(provider: $provider)\n }\n"),F=u.Ry({clientId:u.Z_(),clientSecret:u.Z_().optional(),provider:u.jb(f.O4)});function G(e){let{className:r,isNew:t,provider:u,defaultValues:m,onSuccess:b,...G}=e,S=(0,l.useRouter)(),D=(0,c.m8)(),T=a.useMemo(()=>({...m||{},provider:u}),[]),[$,U]=a.useState(!1),[V,q]=a.useState(!1),P=(0,o.cI)({resolver:(0,s.F)(F),defaultValues:T}),X=P.watch("provider"),J=!(0,i.Z)(P.formState.dirtyFields),{isSubmitting:L}=P.formState,M=()=>{S.replace("/settings/sso")},W=(0,x.D)(R,{onCompleted(e){(null==e?void 0:e.updateOauthCredential)&&(null==b||b(P.getValues()))},form:P}),E=(0,x.D)(z),Y=async e=>{if(t){let r=await D.query(k.oauthCredential,{provider:e.provider}).then(e=>{var r;return!!(null==e?void 0:null===(r=e.data)||void 0===r?void 0:r.oauthCredential)});if(r){P.setError("provider",{message:"Provider already exists. Please choose another one"});return}}W({input:e})},[{data:B}]=(0,c.aM)({query:O,variables:{provider:X}}),Z=a.useMemo(()=>t?"e.g. e363c08d7e9ca4e66e723a53f38a21f6a54c1b83":Array(36).fill("*").join(""),[t]);return(0,n.jsx)(v.l0,{...P,children:(0,n.jsxs)("div",{className:(0,p.cn)("grid gap-2",r),...G,children:[(0,n.jsxs)("form",{className:"grid gap-6",onSubmit:P.handleSubmit(Y),children:[(0,n.jsx)(A,{className:"mt-2",children:"Basic information"}),(0,n.jsxs)(v.xJ,{children:[(0,n.jsx)(g._,{children:"Type"}),(0,n.jsx)(C,{defaultValue:"oauth",children:(0,n.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,n.jsx)(w,{value:"oauth",id:"type_oauth"}),(0,n.jsx)(g._,{className:"cursor-pointer",htmlFor:"type_oauth",children:"OAuth 2.0"})]})})]}),(0,n.jsx)(v.Wi,{control:P.control,name:"provider",render:e=>{let{field:{onChange:r,...a}}=e;return(0,n.jsxs)(v.xJ,{children:[(0,n.jsx)(v.lX,{children:"Provider"}),(0,n.jsx)(v.NI,{children:(0,n.jsxs)(C,{className:"flex gap-8",orientation:"horizontal",onValueChange:r,...a,children:[(0,n.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,n.jsx)(w,{value:f.O4.Github,id:"r_github",disabled:!t}),(0,n.jsxs)(g._,{className:"flex cursor-pointer items-center gap-2",htmlFor:"r_github",children:[(0,n.jsx)(N.IconGitHub,{className:"h-5 w-5"}),"GitHub"]})]}),(0,n.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,n.jsx)(w,{value:f.O4.Google,id:"r_google",disabled:!t}),(0,n.jsxs)(g._,{className:"flex cursor-pointer items-center gap-2",htmlFor:"r_google",children:[(0,n.jsx)(N.IconGoogle,{className:"h-5 w-5"}),"Google"]})]}),(0,n.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,n.jsx)(w,{value:f.O4.Gitlab,id:"r_gitlab",disabled:!t}),(0,n.jsxs)(g._,{className:"flex cursor-pointer items-center gap-2",htmlFor:"r_gitlab",children:[(0,n.jsx)(N.IconGitLab,{className:"h-5 w-5"}),"GitLab"]})]})]})}),(0,n.jsx)(v.zG,{})]})}}),B&&(0,n.jsx)(v.xJ,{className:"mt-4",children:(0,n.jsxs)("div",{className:"flex flex-col gap-2 rounded-lg border px-3 py-2",children:[(0,n.jsx)("div",{className:"text-sm text-muted-foreground",children:"Create your OAuth2 application with the following information"}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("div",{className:"text-sm font-medium",children:"Authorization callback URL"}),(0,n.jsxs)("span",{className:"flex items-center text-sm",children:[B.oauthCallbackUrl,(0,n.jsx)(I.q,{type:"button",value:B.oauthCallbackUrl})]})]})]})}),(0,n.jsxs)("div",{children:[(0,n.jsx)(A,{children:"OAuth provider information"}),(0,n.jsx)(v.pf,{children:"The information is provided by your identity provider."})]}),(0,n.jsx)(v.Wi,{control:P.control,name:"clientId",render:e=>{let{field:r}=e;return(0,n.jsxs)(v.xJ,{children:[(0,n.jsx)(v.lX,{required:!0,children:"Client ID"}),(0,n.jsx)(v.NI,{children:(0,n.jsx)(y.I,{placeholder:"e.g. ae1542c44b154c10c859",autoCapitalize:"none",autoComplete:"off",autoCorrect:"off",...r})}),(0,n.jsx)(v.zG,{})]})}}),(0,n.jsx)(v.Wi,{control:P.control,name:"clientSecret",render:e=>{let{field:r}=e;return(0,n.jsxs)(v.xJ,{children:[(0,n.jsx)(v.lX,{required:t,children:"Client Secret"}),(0,n.jsx)(v.NI,{children:(0,n.jsx)(y.I,{className:(0,p.cn)({"placeholder:translate-y-[10%] !placeholder-foreground":!t}),placeholder:Z,autoCapitalize:"none",autoComplete:"off",autoCorrect:"off",type:"password",...r})}),(0,n.jsx)(v.zG,{})]})}}),(0,n.jsxs)("div",{className:"flex justify-end gap-4",children:[(0,n.jsx)(j.z,{type:"button",variant:"ghost",onClick:M,children:"Cancel"}),!t&&(0,n.jsxs)(h.aR,{open:$,onOpenChange:U,children:[(0,n.jsx)(h.vW,{asChild:!0,children:(0,n.jsx)(j.z,{variant:"hover-destructive",children:"Delete"})}),(0,n.jsxs)(h._T,{children:[(0,n.jsxs)(h.fY,{children:[(0,n.jsx)(h.f$,{children:"Are you absolutely sure?"}),(0,n.jsx)(h.yT,{children:"This action cannot be undone. It will permanently delete the current credential."})]}),(0,n.jsxs)(h.xo,{children:[(0,n.jsx)(h.le,{children:"Cancel"}),(0,n.jsxs)(h.OL,{className:(0,j.d)({variant:"destructive"}),onClick:e=>{e.preventDefault(),q(!0),E({provider:X}).then(e=>{var r,t;(null==e?void 0:null===(r=e.data)||void 0===r?void 0:r.deleteOauthCredential)?M():(q(!1),(null==e?void 0:e.error)&&d.A.error(null==e?void 0:null===(t=e.error)||void 0===t?void 0:t.message))})},children:[V&&(0,n.jsx)(N.IconSpinner,{className:"mr-2 h-4 w-4 animate-spin"}),"Yes, delete it"]})]})]})]}),(0,n.jsx)(_.M,{licenses:[f.oj.Enterprise],children:e=>{let{hasValidLicense:r}=e;return(0,n.jsxs)(j.z,{type:"submit",disabled:!r||L||!t&&!J,children:[L&&(0,n.jsx)(N.IconSpinner,{className:"mr-2 h-4 w-4 animate-spin"}),t?"Create":"Update"]})}})]})]}),(0,n.jsx)(v.zG,{className:"text-center"})]})})}function A(e){let{className:r,...t}=e;return(0,n.jsx)("div",{className:(0,p.cn)("mt-4 text-xl font-semibold",r),...t})}},48537:function(e,r,t){t.d(r,{q:function(){return i}});var n=t(36164);t(3546);var a=t(28312),l=t(31458),s=t(81565);function i(e){let{className:r,value:t,onCopyContent:i,text:o,...d}=e,{isCopied:c,copyToClipboard:u}=(0,a.m)({timeout:2e3,onCopyContent:i});return t?(0,n.jsxs)(l.z,{variant:"ghost",size:o?"default":"icon",className:r,onClick:()=>{c||u(t)},...d,children:[c?(0,n.jsx)(s.IconCheck,{className:"text-green-600"}):(0,n.jsx)(s.IconCopy,{}),o&&(0,n.jsx)("span",{children:o}),!o&&(0,n.jsx)("span",{className:"sr-only",children:"Copy"})]}):null}},73460:function(e,r,t){t.d(r,{OL:function(){return j},_T:function(){return m},aR:function(){return o},f$:function(){return p},fY:function(){return f},le:function(){return v},vW:function(){return d},xo:function(){return x},yT:function(){return h}});var n=t(36164),a=t(3546),l=t(28961),s=t(1544),i=t(31458);let o=l.fC,d=l.xz,c=e=>{let{className:r,children:t,...a}=e;return(0,n.jsx)(l.h_,{className:(0,s.cn)(r),...a,children:(0,n.jsx)("div",{className:"fixed inset-0 z-50 flex items-end justify-center sm:items-center",children:t})})};c.displayName=l.h_.displayName;let u=a.forwardRef((e,r)=>{let{className:t,children:a,...i}=e;return(0,n.jsx)(l.aV,{className:(0,s.cn)("fixed inset-0 z-50 bg-background/80 backdrop-blur-sm transition-opacity animate-in fade-in",t),...i,ref:r})});u.displayName=l.aV.displayName;let m=a.forwardRef((e,r)=>{let{className:t,...a}=e;return(0,n.jsxs)(c,{children:[(0,n.jsx)(u,{}),(0,n.jsx)(l.VY,{ref:r,className:(0,s.cn)("fixed z-50 grid w-full max-w-lg scale-100 gap-4 border bg-background p-6 opacity-100 shadow-lg animate-in fade-in-90 slide-in-from-bottom-10 sm:rounded-lg sm:zoom-in-90 sm:slide-in-from-bottom-0 md:w-full",t),...a})]})});m.displayName=l.VY.displayName;let f=e=>{let{className:r,...t}=e;return(0,n.jsx)("div",{className:(0,s.cn)("flex flex-col space-y-2 text-center sm:text-left",r),...t})};f.displayName="AlertDialogHeader";let x=e=>{let{className:r,...t}=e;return(0,n.jsx)("div",{className:(0,s.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",r),...t})};x.displayName="AlertDialogFooter";let p=a.forwardRef((e,r)=>{let{className:t,...a}=e;return(0,n.jsx)(l.Dx,{ref:r,className:(0,s.cn)("text-lg font-semibold",t),...a})});p.displayName=l.Dx.displayName;let h=a.forwardRef((e,r)=>{let{className:t,...a}=e;return(0,n.jsx)(l.dk,{ref:r,className:(0,s.cn)("text-sm text-muted-foreground",t),...a})});h.displayName=l.dk.displayName;let j=a.forwardRef((e,r)=>{let{className:t,...a}=e;return(0,n.jsx)(l.aU,{ref:r,className:(0,s.cn)((0,i.d)(),t),...a})});j.displayName=l.aU.displayName;let v=a.forwardRef((e,r)=>{let{className:t,...a}=e;return(0,n.jsx)(l.$j,{ref:r,className:(0,s.cn)((0,i.d)({variant:"outline"}),"mt-2 sm:mt-0",t),...a})});v.displayName=l.$j.displayName},98150:function(e,r,t){t.d(r,{NI:function(){return h},Wi:function(){return u},l0:function(){return d},lX:function(){return p},pf:function(){return j},xJ:function(){return x},zG:function(){return v}});var n=t(36164),a=t(3546),l=t(74047),s=t(5493),i=t(1544),o=t(5266);let d=s.RV,c=a.createContext({}),u=e=>{let{...r}=e;return(0,n.jsx)(c.Provider,{value:{name:r.name},children:(0,n.jsx)(s.Qr,{...r})})},m=()=>{let e=a.useContext(c),r=a.useContext(f),{getFieldState:t,formState:n}=(0,s.Gc)(),l=e.name||"root",i=t(l,n);if(!n)throw Error("useFormField should be used within