@jean2/client 1.0.5 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -59
- package/dist/apple-touch-icon.png +0 -0
- package/dist/assets/ServerContext-DwL_fyZz.js +1 -0
- package/dist/assets/SessionContent-BtiY3mu_.js +11 -0
- package/dist/assets/SessionMenuButton-bQK4n-kR.js +9 -0
- package/dist/assets/SessionMenuButton-kHJ-D0s7.css +1 -0
- package/dist/assets/{ThemeProvider-Da23NPAS.js → ThemeProvider-ewislekS.js} +1 -1
- package/dist/assets/{_serverId-DXVl_AFQ.js → _serverId-C48-o6-u.js} +1 -1
- package/dist/assets/_serverId-D3aDURKI.js +11 -0
- package/dist/assets/_sessionId-CGhGqBYc.js +1 -0
- package/dist/assets/_sessionId-CvDJrnJN.js +1 -0
- package/dist/assets/add-server-CP5wqpVh.js +1 -0
- package/dist/assets/alert-DgtoQIaS.js +31 -0
- package/dist/assets/{archive-pL5uw9sg.js → archive-CJqmerPG.js} +1 -1
- package/dist/assets/arrow-left-CVfrLbQ4.js +1 -0
- package/dist/assets/badge-D8GOF5_2.js +1 -0
- package/dist/assets/button-BCE1SnDM.js +45 -0
- package/dist/assets/{confirmation-dialog-CFCxzDEX.js → confirmation-dialog-jz6z4bio.js} +1 -1
- package/dist/assets/{dialog-BNCh4KEM.js → dialog-B-f8lUpV.js} +1 -1
- package/dist/assets/http-namespace-DWmi6fC5.js +1 -0
- package/dist/assets/index-BtLxCr26.css +2 -0
- package/dist/assets/index-DJCUk1OY.js +10 -0
- package/dist/assets/mutation-BEKt1T6j.js +1 -0
- package/dist/assets/overview-dKJbdHqg.js +1 -0
- package/dist/assets/platform-C9rqh4_A.js +1 -0
- package/dist/assets/popover-CVyjoKPS.js +1 -0
- package/dist/assets/queries-BTzP-7g4.js +1 -0
- package/dist/assets/{react-dom-DHWV5rS5.js → react-dom-CZubyneS.js} +1 -1
- package/dist/assets/{refresh-cw-BYRFQSBp.js → refresh-cw-DJ3pEikS.js} +1 -1
- package/dist/assets/routes-g7_8LIaN.js +1 -0
- package/dist/assets/sidebar-lTmDketj.js +1 -0
- package/dist/assets/{triangle-alert-Bil68MLf.js → triangle-alert-C32xrDjH.js} +1 -1
- package/dist/assets/useNavigate-D0TSLH_-.js +1 -0
- package/dist/assets/workspace-CQqKn4Z3.js +1 -0
- package/dist/favicon.ico +0 -0
- package/dist/icon-192.png +0 -0
- package/dist/icon-512.png +0 -0
- package/dist/index.html +14 -15
- package/dist/manifest.webmanifest +1 -0
- package/dist/registerSW.js +1 -0
- package/dist/sw.js +1 -0
- package/dist/workbox-6829fd8d.js +1 -0
- package/package.json +1 -1
- package/dist/assets/ServerContext-Dy9T5Mj8.js +0 -1
- package/dist/assets/SessionContent-DMPPyidM.js +0 -11
- package/dist/assets/SessionMenuButton-B9RQW_iM.css +0 -1
- package/dist/assets/SessionMenuButton-DtN_qfRb.js +0 -9
- package/dist/assets/_serverId-BOWHyoan.js +0 -12
- package/dist/assets/_sessionId-BfVgqUBK.js +0 -1
- package/dist/assets/_sessionId-Bp7Qrc4O.js +0 -1
- package/dist/assets/add-server-BU3oc_j3.js +0 -1
- package/dist/assets/alert-BsN6ZzaK.js +0 -31
- package/dist/assets/arrow-left-DSvwF2mY.js +0 -1
- package/dist/assets/badge-Cjebg6Sp.js +0 -1
- package/dist/assets/button--1wnt03c.js +0 -45
- package/dist/assets/classPrivateFieldGet2-BGlEuFdn.js +0 -1
- package/dist/assets/core-BYcrozIP.js +0 -1
- package/dist/assets/dist-js-s36UjyQ4.js +0 -1
- package/dist/assets/event-Crr43Eih.js +0 -1
- package/dist/assets/index-Db3JxRbZ.js +0 -10
- package/dist/assets/index-DzEyMPKG.css +0 -2
- package/dist/assets/mutation-D4xtepYQ.js +0 -1
- package/dist/assets/overview-DbKX71kj.js +0 -1
- package/dist/assets/platform-cRBZ7eSy.js +0 -1
- package/dist/assets/popover-C8mm1NWm.js +0 -1
- package/dist/assets/preload-helper-D844vhe4.js +0 -1
- package/dist/assets/queries-C0JoQFZb.js +0 -1
- package/dist/assets/routes-Ck6V8B0w.js +0 -1
- package/dist/assets/sidebar-BqQ-fUFc.js +0 -1
- package/dist/assets/src-BALdofIU.js +0 -1
- package/dist/assets/useNavigate-Ckup4lZi.js +0 -1
- package/dist/assets/workspace-BzFUmInc.js +0 -1
- /package/dist/assets/{createLucideIcon-CuVT3KNW.js → createLucideIcon-mdFRYmiK.js} +0 -0
- /package/dist/assets/{overview-C91MPxfo.js → overview-B_ZDrH1J.js} +0 -0
- /package/dist/assets/{useRouter-C67ywEA3.js → useRouter-C_VHQC31.js} +0 -0
- /package/dist/assets/{workspace-84xYPx6s.js → workspace-_n12Hx4o.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;inset:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;inset:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,o as t,r as n}from"./compiler-runtime-DZXZ41-q.js";var r=t(n(),1),i=e(),a=`jean2-theme`,o=`neutral`,s=`system`,c=(0,r.createContext)({mode:s,scheme:o,setMode:()=>null,setScheme:()=>null,resolvedMode:`dark`});function l(){return window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}function u(e){return e===`system`?l():e}function d(e){let t=localStorage.getItem(a);if(!t||![`light`,`dark`,`system`].includes(t))return null;let n={mode:t,scheme:o};return localStorage.setItem(e,JSON.stringify(n)),localStorage.removeItem(a),n}function f({children:e,defaultMode:t=s,defaultScheme:n=o,storageKey:a=`jean2-theme-settings`,...l}){let[f,p]=(0,r.useState)(()=>{let e=d(a);if(e)return e;let r=localStorage.getItem(a);if(r)try{let e=JSON.parse(r);if(typeof e==`object`&&e&&`mode`in e&&`scheme`in e)return e}catch{}return{mode:t,scheme:n}}),[m,h]=(0,r.useState)(()=>u(f.mode)),g=(0,r.useCallback)((e,t)=>{let n=window.document.documentElement,r=u(e);n.classList.remove(`light`,`dark`),n.classList.remove(`neutral`,`ocean`,`forest`,`sunset`,`amethyst`),n.classList.add(r),n.classList.add(t),h(r)},[]);(0,r.useEffect)(()=>{g(f.mode,f.scheme)},[f,g]),(0,r.useEffect)(()=>{if(f.mode!==`system`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`),t=()=>{g(f.mode,f.scheme)};return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[f.mode,f.scheme,g]);let _=(0,r.useCallback)(e=>{let t={...f,mode:e};p(t),localStorage.setItem(a,JSON.stringify(t))},[f,a]),v=(0,r.useCallback)(e=>{let t={...f,scheme:e};p(t),localStorage.setItem(a,JSON.stringify(t))},[f,a]),y=(0,r.useRef)(null);(0,r.useEffect)(()=>{
|
|
1
|
+
import{n as e,o as t,r as n}from"./compiler-runtime-DZXZ41-q.js";var r=t(n(),1),i=e(),a=`jean2-theme`,o=`neutral`,s=`system`,c=(0,r.createContext)({mode:s,scheme:o,setMode:()=>null,setScheme:()=>null,resolvedMode:`dark`});function l(){return window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}function u(e){return e===`system`?l():e}function d(e){let t=localStorage.getItem(a);if(!t||![`light`,`dark`,`system`].includes(t))return null;let n={mode:t,scheme:o};return localStorage.setItem(e,JSON.stringify(n)),localStorage.removeItem(a),n}function f({children:e,defaultMode:t=s,defaultScheme:n=o,storageKey:a=`jean2-theme-settings`,...l}){let[f,p]=(0,r.useState)(()=>{let e=d(a);if(e)return e;let r=localStorage.getItem(a);if(r)try{let e=JSON.parse(r);if(typeof e==`object`&&e&&`mode`in e&&`scheme`in e)return e}catch{}return{mode:t,scheme:n}}),[m,h]=(0,r.useState)(()=>u(f.mode)),g=(0,r.useCallback)((e,t)=>{let n=window.document.documentElement,r=u(e);n.classList.remove(`light`,`dark`),n.classList.remove(`neutral`,`ocean`,`forest`,`sunset`,`amethyst`),n.classList.add(r),n.classList.add(t),h(r)},[]);(0,r.useEffect)(()=>{g(f.mode,f.scheme)},[f,g]),(0,r.useEffect)(()=>{if(f.mode!==`system`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`),t=()=>{g(f.mode,f.scheme)};return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[f.mode,f.scheme,g]);let _=(0,r.useCallback)(e=>{let t={...f,mode:e};p(t),localStorage.setItem(a,JSON.stringify(t))},[f,a]),v=(0,r.useCallback)(e=>{let t={...f,scheme:e};p(t),localStorage.setItem(a,JSON.stringify(t))},[f,a]),y=(0,r.useRef)(null);(0,r.useEffect)(()=>{y.current!==m&&(y.current=m,window.__JEAN2_ELECTRON__?.syncTheme(m))},[m]);let b={mode:f.mode,scheme:f.scheme,setMode:_,setScheme:v,resolvedMode:m};return(0,i.jsx)(c.Provider,{...l,value:b,children:e})}var p=()=>{let e=(0,r.useContext)(c);if(e===void 0)throw Error(`useTheme must be used within a ThemeProvider`);return e};export{p as n,f as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"./compiler-runtime-DZXZ41-q.js";import{t as n}from"./useRouter-
|
|
1
|
+
import{n as e,t}from"./compiler-runtime-DZXZ41-q.js";import{t as n}from"./useRouter-C_VHQC31.js";var r=t(),i=e();function a(e){let t=(0,r.c)(15),{error:a,reset:o}=e,s=n(),c;t[0]===s?c=t[1]:(c=()=>{s.navigate({to:`/`,replace:!0})},t[0]=s,t[1]=c);let l=c,u;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,i.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Server Connection Error`}),t[2]=u):u=t[2];let d=a instanceof Error?a.message:`An unknown error occurred`,f;t[3]===d?f=t[4]:(f=(0,i.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:d}),t[3]=d,t[4]=f);let p;t[5]===o?p=t[6]:(p=(0,i.jsx)(`button`,{onClick:()=>o(),className:`w-full px-4 py-2 rounded-md bg-primary text-primary-foreground text-sm font-medium hover:bg-primary/90`,children:`Retry`}),t[5]=o,t[6]=p);let m;t[7]===l?m=t[8]:(m=(0,i.jsx)(`button`,{onClick:l,className:`w-full px-4 py-2 rounded-md border border-border bg-background text-foreground text-sm font-medium hover:bg-accent`,children:`Back to Server Selection`}),t[7]=l,t[8]=m);let h;t[9]!==p||t[10]!==m?(h=(0,i.jsxs)(`div`,{className:`space-y-2 pt-2`,children:[p,m]}),t[9]=p,t[10]=m,t[11]=h):h=t[11];let g;return t[12]!==f||t[13]!==h?(g=(0,i.jsx)(`div`,{className:`flex w-full items-center justify-center min-h-screen bg-background text-foreground`,children:(0,i.jsxs)(`div`,{className:`text-center space-y-4 p-8 max-w-lg w-full`,children:[u,f,h]})}),t[12]=f,t[13]=h,t[14]=g):g=t[14],g}export{a as errorComponent};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import{n as e,o as t,r as n,t as r}from"./compiler-runtime-DZXZ41-q.js";import{n as i}from"./ThemeProvider-ewislekS.js";import{a,j as o,l as s,n as c,r as l,s as u,t as d}from"./platform-C9rqh4_A.js";import{D as f,E as p,O as m,S as h,T as g,_,b as v,c as y,d as b,f as x,g as S,i as C,k as w,l as T,m as E,r as D,t as O,v as k,x as A,y as j}from"./sidebar-lTmDketj.js";import{i as M,n as N,t as P}from"./http-namespace-DWmi6fC5.js";import{A as F,C as I,D as L,E as R,F as z,I as B,L as V,M as ee,N as H,O as U,P as te,R as ne,S as re,T as ie,_ as ae,a as oe,b as se,c as ce,d as le,f as ue,g as de,h as fe,j as pe,k as me,l as he,m as ge,n as _e,o as ve,p as ye,s as be,u as xe,v as Se,w as Ce,x as we,y as Te}from"./queries-BTzP-7g4.js";import{a as W,i as Ee,n as De,o as Oe}from"./ServerContext-DwL_fyZz.js";import{t as ke}from"./useRouter-C_VHQC31.js";import{t as Ae}from"./useNavigate-D0TSLH_-.js";import{A as je,B as Me,C as Ne,E as Pe,G as Fe,H as Ie,J as Le,K as Re,M as ze,N as Be,O as G,P as Ve,S as He,U as K,V as Ue,W as We,_ as Ge,a as Ke,b as qe,c as Je,d as Ye,f as Xe,g as Ze,h as Qe,i as $e,k as et,m as tt,n as nt,p as rt,q as it,r as at,s as ot,t as q,u as st,v as ct,w as lt,x as J}from"./badge-D8GOF5_2.js";import{t as ut}from"./createLucideIcon-mdFRYmiK.js";import{t as dt}from"./arrow-left-CVfrLbQ4.js";import{a as ft,c as pt,d as mt,f as ht,i as gt,l as _t,m as vt,o as yt,r as bt,s as xt,t as St,u as Ct}from"./popover-CVyjoKPS.js";import{C as wt,S as Tt,_ as Et,a as Dt,b as Ot,c as kt,d as At,f as jt,g as Mt,h as Nt,i as Pt,l as Ft,m as It,n as Lt,p as Rt,r as zt,s as Bt,t as Vt,u as Ht,v as Ut,w as Wt,x as Gt,y as Kt}from"./alert-DgtoQIaS.js";import{C as qt,F as Jt,M as Yt,N as Xt,P as Zt,T as Qt,b as $t,j as en,n as tn,r as nn,t as Y,w as rn,x as an,y as on}from"./button-BCE1SnDM.js";import{t as sn}from"./refresh-cw-DJ3pEikS.js";import{a as cn,i as ln,o as un,r as dn,s as fn,t as pn}from"./dialog-B-f8lUpV.js";var X=t(n(),1);function mn(e){let t=ke({warn:e?.router===void 0}),n=e?.router||t,r=(0,X.useRef)(void 0);return s(n.stores.__store,t=>{if(e?.select){if(e.structuralSharing??n.options.defaultStructuralSharing){let n=o(r.current,e.select(t));return r.current=n,n}return e.select(t)}return t})}function hn(e){let t=ke(),n=(0,X.useRef)(void 0);return s(t.stores.location,r=>{let i=e?.select?e.select(r):r;if(e?.structuralSharing??t.options.defaultStructuralSharing){let e=o(n.current,i);return n.current=e,e}return i})}var gn=class{listeners=new Map;on(e,t){let n=this.listeners.get(e);return n||(n=new Set,this.listeners.set(e,n)),n.add(t),this}once(e,t){let n=(...r)=>{this.off(e,n),t(...r)};return this.on(e,n)}off(e,t){let n=this.listeners.get(e);return n&&(n.delete(t),n.size===0&&this.listeners.delete(e)),this}emit(e,...t){let n=this.listeners.get(e);if(!n||n.size===0)return!1;for(let r of n)try{r(...t)}catch(t){console.error(`Error in event handler for "${e}":`,t)}return!0}removeAllListeners(e){return e===void 0?this.listeners.clear():this.listeners.delete(e),this}listenerCount(e){return this.listeners.get(e)?.size??0}eventNames(){return Array.from(this.listeners.keys())}};function _n(e,t){switch(t.type){case`client.registered`:e.emit(`client.registered`,t.client,t.connectionId,t.serverTime);break;case`client.rejected`:e.emit(`client.rejected`,t.code,t.message);break;case`session.created`:e.emit(`session.created`,t.session);break;case`session.resumed`:e.emit(`session.resumed`,t.session,t.messages,t.usage,t.isRunning,t.control);break;case`session.control.updated`:e.emit(`session.control.updated`,t.control,t.reason);break;case`session.action_rejected`:e.emit(`session.action_rejected`,t.sessionId,t.action,t.code,t.message,t.control);break;case`session.closed`:e.emit(`session.closed`,t.sessionId);break;case`session.reopened`:e.emit(`session.reopened`,t.session);break;case`session.deleted`:e.emit(`session.deleted`,t.sessionId);break;case`session.updated`:e.emit(`session.updated`,t.session);break;case`session.renamed`:e.emit(`session.renamed`,t.session);break;case`session.interrupted`:e.emit(`session.interrupted`,t.sessionId,t.result);break;case`session.reverted`:e.emit(`session.reverted`,t.sessionId,t.revertedTo,t.removed);break;case`session.forked`:e.emit(`session.forked`,t.originalSessionId,t.forkedSession,t.messages);break;case`session.state`:e.emit(`session.state`,t.sessionId,t.messages);break;case`message.created`:e.emit(`message.created`,t.message);break;case`message.updated`:e.emit(`message.updated`,t.message);break;case`part.created`:e.emit(`part.created`,t.sessionId,t.part);break;case`part.updated`:e.emit(`part.updated`,t.sessionId,t.part);break;case`part.append`:e.emit(`part.append`,t.sessionId,t.partId,t.field,t.delta);break;case`chat.usage`:e.emit(`chat.usage`,t.sessionId,t.usage,t.model,t.variant);break;case`compaction.complete`:e.emit(`compaction.complete`,t.sessionId,t.tokensUsed);break;case`permission.list`:e.emit(`permission.list`,t.workspaceId,t.grants);break;case`permission.revoked`:e.emit(`permission.revoked`,t.grantId);break;case`permission.all_revoked`:e.emit(`permission.all_revoked`,t.workspaceId,t.count);break;case`queue.list`:e.emit(`queue.list`,t.sessionId,t.messages);break;case`queue.added`:e.emit(`queue.added`,t.sessionId,t.message);break;case`queue.removed`:e.emit(`queue.removed`,t.sessionId,t.queueId);break;case`queue.sending`:e.emit(`queue.sending`,t.sessionId,t.queueId);break;case`provider.status`:e.emit(`provider.status`,t.provider,t.connected,t.authorizationUrl,t.error);break;case`provider.connected`:e.emit(`provider.connected`,t.provider,t.connected,t.connectedAt,t.accountId);break;case`ask.request`:e.emit(`ask.request`,t.sessionId,t.toolCallId,t.toolName,t.ask,t.requestId,t.authority);break;case`ask.response_rejected`:e.emit(`ask.response_rejected`,t.sessionId,t.toolCallId,t.requestId,t.code,t.message);break;case`ask.timeout`:e.emit(`ask.timeout`,t.sessionId,t.toolCallId,t.requestId);break;case`ask.pending_sync`:e.emit(`ask.pending_sync`,t.sessionId,t.requests);break;case`error`:e.emit(`error`,t.code,t.message);break;case`error.rate_limit`:e.emit(`error.rate_limit`,t.code,t.message,t.retryAfterMs),e.emit(`error`,t.code,t.message);break;case`error.server`:e.emit(`error.server`,t.code,t.message,t.retryAfterMs),e.emit(`error`,t.code,t.message);break;case`error.timeout`:e.emit(`error.timeout`,t.code,t.message,t.retryAfterMs),e.emit(`error`,t.code,t.message);break;case`error.auth`:e.emit(`error.auth`,t.code,t.message),e.emit(`error`,t.code,t.message);break;case`error.invalid_request`:e.emit(`error.invalid_request`,t.code,t.message),e.emit(`error`,t.code,t.message);break;case`error.context_overflow`:e.emit(`error.context_overflow`,t.code,t.message),e.emit(`error`,t.code,t.message);break;case`ping`:return;default:console.warn(`Unknown server message type: ${t.type}`);break}e.emit(`*`,{source:`server`,type:t.type,raw:t})}var vn=class e{_ws=null;config;_state=`disconnected`;onOpen=null;onMessage=null;onClose=null;onError=null;heartbeatTimer=null;missedHeartbeats=0;static HEARTBEAT_TIMEOUT_MS=12e4;constructor(e){this.config=e}async connect(){return new Promise((e,t)=>{let n=this.config.wsConstructor??globalThis.WebSocket,r=this.buildWsUrl();this._state=`connecting`,this._ws=new n(r);let i=this.config.connectionTimeout??1e4,a=setTimeout(()=>{this._ws?.close(1e3,`Connection timeout`),t(new W(`Connection timeout (${i}ms)`))},i);this._ws.onopen=()=>{clearTimeout(a),this._state=`connected`,this.startHeartbeatMonitor(),this.onOpen?.(),e()},this._ws.onmessage=e=>{try{let t=JSON.parse(String(e.data));if(t.type===`ping`){this.resetHeartbeat(),this.send({type:`pong`});return}this.resetHeartbeat(),this.onMessage?.(t)}catch(e){let t=e instanceof Error?e.message:String(e);this.onError?.(Error(`Failed to parse WebSocket message: ${t}`))}},this._ws.onclose=e=>{clearTimeout(a),this.stopHeartbeatMonitor(),this._state=`disconnected`,this._ws!==null&&t(new W(`Connection closed before open: code=${e.code}, reason=${e.reason}`)),this._ws=null,this.onClose?.(e.code,e.reason,e.wasClean)},this._ws.onerror=()=>{clearTimeout(a),this.onError?.(Error(`WebSocket error`)),t(new W(`WebSocket error`))}})}send(e){if(!this._ws||this._ws.readyState!==WebSocket.OPEN)throw new W(`WebSocket is not connected`);this._ws.send(JSON.stringify(e))}async disconnect(){if(!this._ws)return;let e=this._ws;if(e.readyState===WebSocket.CLOSING||e.readyState===WebSocket.CLOSED){this._state=`disconnected`,this._ws=null;return}return new Promise(t=>{this._state=`disconnecting`;let n=()=>{e.removeEventListener(`close`,n),t()};e.addEventListener(`close`,n),e.close(1e3,`Client disconnect`)})}dispose(){this.stopHeartbeatMonitor(),this.onOpen=null,this.onMessage=null,this.onClose=null,this.onError=null,this._ws&&=(this._ws.onopen=null,this._ws.onmessage=null,this._ws.onclose=null,this._ws.onerror=null,this._ws.close(),null),this._state=`disconnected`}get connected(){return this._state===`connected`}get readyState(){return this._ws?.readyState??WebSocket.CLOSED}get ws(){return this._ws}resetHeartbeat(){this.missedHeartbeats=0}startHeartbeatMonitor(){this.stopHeartbeatMonitor(),this.missedHeartbeats=0,this.heartbeatTimer=setInterval(()=>{this.missedHeartbeats++,this.missedHeartbeats>=4&&(this.stopHeartbeatMonitor(),this._ws&&this._ws.close(1e3,`Heartbeat timeout`))},e.HEARTBEAT_TIMEOUT_MS)}stopHeartbeatMonitor(){this.heartbeatTimer!==null&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=null)}buildWsUrl(){let e=this.config.url.startsWith(`https`)?`wss`:`ws`,t=this.config.url.replace(/^https?:\/\//,``);return this.config.token?`${e}://${t}/ws?token=${encodeURIComponent(this.config.token)}`:`${e}://${t}/ws`}},yn=class{constructor(e){this.send=e}create(e){this.send({type:`session.create`,...e})}resume(e){this.send({type:`session.resume`,sessionId:e})}close(e){this.send({type:`session.close`,sessionId:e})}update(e,t){this.send({type:`session.update`,sessionId:e,...t})}updateModel(e,t){this.send({type:`session.update_model`,sessionId:e,...t})}reopen(e){this.send({type:`session.reopen`,sessionId:e})}delete(e){this.send({type:`session.delete`,sessionId:e})}rename(e,t){this.send({type:`session.rename`,sessionId:e,title:t})}compact(e){this.send({type:`session.compact`,sessionId:e})}revert(e,t){this.send({type:`session.revert`,sessionId:e,messageId:t})}fork(e,t,n){this.send({type:`session.fork`,sessionId:e,messageId:t,title:n})}interrupt(e,t){this.send({type:`session.interrupt`,sessionId:e,reason:t})}},bn=class{constructor(e){this._send=e}send(e,t,n){let r={type:`chat.message`,sessionId:e,content:t};n?.attachments&&n.attachments.length>0&&(r.attachments=n.attachments),this._send(r)}},xn=class{constructor(e){this.send=e}list(e,t){this.send({type:`permission.list`,workspaceId:e,includeRevoked:t})}revoke(e){this.send({type:`permission.revoke`,grantId:e})}revokeAll(e){this.send({type:`permission.revoke_all`,workspaceId:e})}},Sn=class{constructor(e){this.send=e}add(e,t,n){let r=n;this.send({type:`queue.add`,sessionId:e,content:t,...r&&r.length>0?{attachments:r}:{}})}remove(e){this.send({type:`queue.remove`,queueId:e})}},Cn=class{constructor(e){this.send=e}connect(e){this.send({type:`provider.connect`,provider:e})}disconnect(e){this.send({type:`provider.disconnect`,provider:e})}},wn=class{send;constructor(e){this.send=e}claim(e){this.send({type:`session.control.claim`,sessionId:e})}release(e){this.send({type:`session.control.release`,sessionId:e})}requestTakeover(e){this.send({type:`session.control.request_takeover`,sessionId:e})}respondTakeover(e,t,n){this.send({type:`session.control.respond_takeover`,sessionId:e,requesterClientId:t,decision:n})}},Tn={INPUT:1,RESIZE:2,CLOSE:3,OUTPUT:4,EXIT:5,ERROR:6,INIT_ACK:7,TITLE:8};function En(e,t){let n=new Uint8Array(1+t.length);return n[0]=e,n.set(t,1),n}var Dn=class extends gn{ws;_session;_closed=!1;_disposed=!1;_preInitOutput=[];constructor(e,t,n){super(),this.ws=e,this._session=t,n&&(this._preInitOutput=n),this.ws.binaryType=`arraybuffer`,this.ws.onmessage=this.handleMessage.bind(this),this.ws.onclose=this.handleClose.bind(this),this.ws.onerror=this.handleError.bind(this)}on(e,t){let n=super.on(e,t);return e===`output`&&this.flushPreInitOutput(),n}flushPreInitOutput(){if(this._preInitOutput.length===0)return;let e=this._preInitOutput;this._preInitOutput=[];for(let t of e){if(this._closed)break;this.emit(`output`,t)}}handleMessage(e){if(this._closed)return;let t=new Uint8Array(e.data);if(t.length<1)return;let n=t[0],r=t.slice(1);switch(n){case Tn.OUTPUT:this.emit(`output`,r);break;case Tn.EXIT:{let e=0;if(r.length>0)try{let t=JSON.parse(new TextDecoder().decode(r));e=typeof t.exitCode==`number`?t.exitCode:0}catch{e=0}this._session={...this._session,status:`exited`,exitCode:e},this.emit(`exit`,e);break}case Tn.TITLE:{let e=`Terminal`;if(r.length>0)try{let t=JSON.parse(new TextDecoder().decode(r));e=typeof t.title==`string`?t.title:`Terminal`}catch{e=`Terminal`}this._session={...this._session,title:e},this.emit(`title`,e);break}case Tn.ERROR:{let e=new TextDecoder().decode(r),t=Error(e||`Terminal error`);this.emit(`error`,t);break}case Tn.CLOSE:this.doClose();break;default:break}}handleClose(e){this._closed||(this._closed=!0,this.emit(`close`))}handleError(){if(!this._closed){let e=Error(`WebSocket error`);this.emit(`error`,e)}}doClose(){if(!this._closed){this._closed=!0;try{this.ws.close(1e3,`Client close`)}catch{}this.emit(`close`),this.cleanupHandlers()}}cleanupHandlers(){this._disposed||(this._disposed=!0,this.ws.onmessage=null,this.ws.onclose=null,this.ws.onerror=null)}dispatchFrame(e){this.handleMessage({data:e.buffer})}write(e){if(this._closed||this.ws.readyState!==WebSocket.OPEN)return;let t;t=typeof e==`string`?new TextEncoder().encode(e):e,this.ws.send(En(Tn.INPUT,t))}resize(e,t){if(this._closed||this.ws.readyState!==WebSocket.OPEN)return;let n=JSON.stringify({cols:e,rows:t}),r=new TextEncoder().encode(n);this.ws.send(En(Tn.RESIZE,r))}close(){this._closed||(this.ws.readyState===WebSocket.OPEN&&this.ws.send(En(Tn.CLOSE,new Uint8Array)),this.doClose())}dispose(){if(this.cleanupHandlers(),!this._closed){this._closed=!0;try{this.ws.close(1e3,`Disposed`)}catch{}}this.removeAllListeners()}get session(){return this._session}get sessionId(){return this._session.sessionId}get pid(){return this._session.pid}get cwd(){return this._session.cwd}get shell(){return this._session.shell}get cols(){return this._session.cols}get rows(){return this._session.rows}get title(){return this._session.title}get status(){return this._session.status}get exitCode(){return this._session.exitCode}get isReconnect(){return this._session.isReconnect}get closed(){return this._closed}},On=class extends gn{ws;_closed=!1;_disposed=!1;constructor(e){super(),this.ws=e,this.ws.onmessage=this.handleMessage.bind(this),this.ws.onclose=this.handleClose.bind(this),this.ws.onerror=this.handleError.bind(this)}handleMessage(e){if(this._closed)return;let t=e.data;if(typeof t!=`string`)return;let n;try{n=JSON.parse(t)}catch{return}switch(n.type){case`snapshot`:this.emit(`snapshot`,n.sessions);break;case`created`:this.emit(`created`,n.session);break;case`destroyed`:this.emit(`destroyed`,n.sessionId);break;case`exited`:this.emit(`exited`,n.sessionId,n.exitCode);break;case`title_changed`:this.emit(`title_changed`,n.sessionId,n.title);break;case`status_changed`:this.emit(`status_changed`,n.sessionId,n.status);break}}handleClose(e){this._closed||(this._closed=!0,this.emit(`close`))}handleError(){if(!this._closed){let e=Error(`WebSocket error`);this.emit(`error`,e)}}close(){if(!this._closed){this._closed=!0;try{this.ws.close(1e3,`Client close`)}catch{}this.cleanupHandlers()}}dispose(){if(this.cleanupHandlers(),this.ws.readyState===WebSocket.OPEN||this.ws.readyState===WebSocket.CONNECTING)try{this.ws.close(1e3,`Disposed`)}catch{}this._closed||(this._closed=!0,this.emit(`close`)),this.removeAllListeners()}cleanupHandlers(){this._disposed||(this._disposed=!0,this.ws.onmessage=null,this.ws.onclose=null,this.ws.onerror=null)}get closed(){return this._closed}},kn=class{config;constructor(e){this.config={connectTimeout:1e4,...e}}async connect(e){let t=this.config.wsConstructor??globalThis.WebSocket,n=this.config.url.startsWith(`https`)?`wss`:`ws`,r=this.config.url.replace(/^https?:\/\//,``),i=new URLSearchParams({cwd:e.cwd,workspaceId:e.workspaceId});this.config.token&&i.set(`token`,this.config.token),e.shell&&i.set(`shell`,e.shell),e.sessionId&&i.set(`sessionId`,e.sessionId);let a=`${n}://${r}/ws/terminal?${i.toString()}`;return new Promise((e,n)=>{let r=new t(a);r.binaryType=`arraybuffer`;let i=this.config.connectTimeout??1e4,o=!1,s=t=>{o||(o=!0,clearTimeout(l),e(t))},c=e=>{o||(o=!0,clearTimeout(l),n(e))},l=setTimeout(()=>{r.close(),c(new W(`Terminal connection timeout (${i}ms)`))},i);r.onopen=()=>{};let u=[];r.onmessage=e=>{let t=new Uint8Array(e.data);if(t.length<1)return;let n=t[0],i=t.slice(1);if(n===Tn.INIT_ACK)try{let e=new Dn(r,JSON.parse(new TextDecoder().decode(i)),u.filter(e=>e.opcode===Tn.OUTPUT).map(e=>e.data));for(let t of u)t.opcode!==Tn.OUTPUT&&e.dispatchFrame(t.data);s(e)}catch(e){r.close(),c(new W(`Failed to parse terminal init: ${e instanceof Error?e.message:String(e)}`))}else if(n===Tn.ERROR){r.close();let e=`Terminal connection failed`;try{e=JSON.parse(new TextDecoder().decode(i)).message||e}catch{}c(new W(e))}else u.push({opcode:n,data:t})},r.onerror=()=>{r.close(),c(new W(`Terminal WebSocket error`))},r.onclose=()=>{c(new W(`Terminal connection closed before init`))}})}async subscribeEvents(e){let t=this.config.wsConstructor??globalThis.WebSocket,n=this.config.url.startsWith(`https`)?`wss`:`ws`,r=this.config.url.replace(/^https?:\/\//,``),i=new URLSearchParams({workspaceId:e});this.config.token&&i.set(`token`,this.config.token);let a=`${n}://${r}/ws/terminal/events?${i.toString()}`;return new Promise((e,n)=>{let r=new t(a),i=this.config.connectTimeout??1e4,o=!1,s=t=>{o||(o=!0,clearTimeout(l),e(t))},c=e=>{o||(o=!0,clearTimeout(l),n(e))},l=setTimeout(()=>{r.close(),c(new W(`Terminal events subscription timeout (${i}ms)`))},i);r.onopen=()=>{};let u=null;r.onmessage=e=>{if(o)return;let t=e.data;if(typeof t!=`string`)return;let n;try{n=JSON.parse(t)}catch{return}n.type===`snapshot`&&(u||=new On(r),s({conn:u,initialSessions:n.sessions}))},r.onerror=()=>{r.close(),c(new W(`Terminal events WebSocket error`))},r.onclose=()=>{o||c(new W(`Terminal events connection closed before snapshot`))}})}},An=class extends gn{config;transport;_httpClient;_state=`disconnected`;_connectionId=null;_registeredClient=null;sessions;chat;permissions;queue;providers;control;http;terminal;constructor(e){super(),this.config=e,this.transport=new vn({url:e.url,token:e.token,wsConstructor:e.wsConstructor,connectionTimeout:e.connectionTimeout}),this._httpClient=new Ee({url:e.url,token:e.token,apiBase:e.apiBase});let t=this.transport.send.bind(this.transport);this.sessions=new yn(t),this.chat=new bn(t),this.permissions=new xn(t),this.queue=new Sn(t),this.providers=new Cn(t),this.control=new wn(t),this.http=new P(this._httpClient),this.terminal=new kn({url:e.url,token:e.token,wsConstructor:e.wsConstructor}),this.transport.onOpen=()=>{this._state=`connected`,this._connectionId=null,this._registeredClient=null,this.config.clientDescriptor&&this.send({type:`client.register`,client:this.config.clientDescriptor}),this.emit(`connected`),this.emit(`*`,{source:`lifecycle`,type:`connected`,payload:void 0})},this.transport.onMessage=e=>{e.type===`client.registered`&&(this._connectionId=e.connectionId,this._registeredClient=e.client),_n(this,e)},this.transport.onClose=(e,t,n)=>{let r=this._state;this._state=`disconnected`,r!==`disconnected`&&(this.emit(`disconnected`,{code:e,reason:t,wasClean:n}),this.emit(`*`,{source:`lifecycle`,type:`disconnected`,payload:{code:e,reason:t,wasClean:n}}))},this.transport.onError=e=>{this.emit(`error.connection`,e),this.emit(`*`,{source:`lifecycle`,type:`error.connection`,payload:e})}}async connect(){this._state=`connecting`,await this.transport.connect()}async disconnect(){this._state=`disconnecting`,await this.transport.disconnect()}async dispose(){await this.disconnect(),this.transport.dispose(),this.removeAllListeners()}get state(){return this._state}get connected(){return this._state===`connected`}get ws(){return this.transport.ws}get httpClient(){return this._httpClient}get connectionId(){return this._connectionId}get registeredClient(){return this._registeredClient}get clientId(){return this._registeredClient?.clientId??null}send(e){this.transport.send(e)}},jn=ut(`boxes`,[[`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`,key:`lc1i9w`}],[`path`,{d:`m7 16.5-4.74-2.85`,key:`1o9zyk`}],[`path`,{d:`m7 16.5 5-3`,key:`va8pkn`}],[`path`,{d:`M7 16.5v5.17`,key:`jnp8gn`}],[`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`,key:`8zsnat`}],[`path`,{d:`m17 16.5-5-3`,key:`8arw3v`}],[`path`,{d:`m17 16.5 4.74-2.85`,key:`8rfmw`}],[`path`,{d:`M17 16.5v5.17`,key:`k6z78m`}],[`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`,key:`1xygjf`}],[`path`,{d:`M12 8 7.26 5.15`,key:`1vbdud`}],[`path`,{d:`m12 8 4.74-2.85`,key:`3rx089`}],[`path`,{d:`M12 13.5V8`,key:`1io7kd`}]]),Mn=ut(`eye-off`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),Nn=ut(`file-exclamation-point`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),Pn=ut(`file-question-mark`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}],[`path`,{d:`M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3`,key:`mhlwft`}]]),Fn=ut(`file-x-corner`,[[`path`,{d:`M11 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5`,key:`1jo35a`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m15 17 5 5`,key:`36xl1x`}],[`path`,{d:`m20 17-5 5`,key:`vdz27y`}]]),In=ut(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),Ln=ut(`house`,[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]]),Rn=ut(`keyboard`,[[`path`,{d:`M10 8h.01`,key:`1r9ogq`}],[`path`,{d:`M12 12h.01`,key:`1mp3jc`}],[`path`,{d:`M14 8h.01`,key:`1primd`}],[`path`,{d:`M16 12h.01`,key:`1l6xoz`}],[`path`,{d:`M18 8h.01`,key:`emo2bl`}],[`path`,{d:`M6 8h.01`,key:`x9i8wu`}],[`path`,{d:`M7 16h10`,key:`wp8him`}],[`path`,{d:`M8 12h.01`,key:`czm47f`}],[`rect`,{width:`20`,height:`16`,x:`2`,y:`4`,rx:`2`,key:`18n3k1`}]]),zn=ut(`layers`,[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]]),Bn=ut(`layout-grid`,[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]),Vn=ut(`layout-list`,[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}],[`path`,{d:`M14 4h7`,key:`3xa0d5`}],[`path`,{d:`M14 9h7`,key:`1icrd9`}],[`path`,{d:`M14 15h7`,key:`1mj8o2`}],[`path`,{d:`M14 20h7`,key:`11slyb`}]]),Hn=ut(`link-2`,[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7h2`,key:`8i5ue5`}],[`path`,{d:`M15 7h2a5 5 0 1 1 0 10h-2`,key:`1b9ql8`}],[`line`,{x1:`8`,x2:`16`,y1:`12`,y2:`12`,key:`1jonct`}]]),Un=ut(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),Wn=ut(`palette`,[[`path`,{d:`M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z`,key:`e79jfc`}],[`circle`,{cx:`13.5`,cy:`6.5`,r:`.5`,fill:`currentColor`,key:`1okk4w`}],[`circle`,{cx:`17.5`,cy:`10.5`,r:`.5`,fill:`currentColor`,key:`f64h9f`}],[`circle`,{cx:`6.5`,cy:`12.5`,r:`.5`,fill:`currentColor`,key:`qy21gx`}],[`circle`,{cx:`8.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`fotxhn`}]]),Gn=ut(`plug-zap`,[[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m18 3-4 4h6l-4 4`,key:`16psg9`}]]),Kn=ut(`plug`,[[`path`,{d:`M12 22v-5`,key:`1ega77`}],[`path`,{d:`M15 8V2`,key:`18g5xt`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`,key:`1xoxul`}],[`path`,{d:`M9 8V2`,key:`14iosj`}]]),qn=ut(`sliders-horizontal`,[[`path`,{d:`M10 5H3`,key:`1qgfaw`}],[`path`,{d:`M12 19H3`,key:`yhmn1j`}],[`path`,{d:`M14 3v4`,key:`1sua03`}],[`path`,{d:`M16 17v4`,key:`1q0r14`}],[`path`,{d:`M21 12h-9`,key:`1o4lsq`}],[`path`,{d:`M21 19h-5`,key:`1rlt1p`}],[`path`,{d:`M21 5h-7`,key:`1oszz2`}],[`path`,{d:`M8 10v4`,key:`tgpxqk`}],[`path`,{d:`M8 12H3`,key:`a7s4jb`}]]),Jn=ut(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),Yn=ut(`trash`,[[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),Xn=ut(`unplug`,[[`path`,{d:`m19 5 3-3`,key:`yk6iyv`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z`,key:`1snsnr`}]]),Zn=ut(`volume-2`,[[`path`,{d:`M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z`,key:`uqj9uw`}],[`path`,{d:`M16 9a5 5 0 0 1 0 6`,key:`1q6k2b`}],[`path`,{d:`M19.364 18.364a9 9 0 0 0 0-12.728`,key:`ijwkga`}]]),Qn=ut(`volume-x`,[[`path`,{d:`M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z`,key:`uqj9uw`}],[`line`,{x1:`22`,x2:`16`,y1:`9`,y2:`15`,key:`1ewh16`}],[`line`,{x1:`16`,x2:`22`,y1:`9`,y2:`15`,key:`5ykzw1`}]]),Z=e(),$n=`Label`,er=X.forwardRef((e,t)=>(0,Z.jsx)(Qt.label,{...e,ref:t,onMouseDown:t=>{t.target.closest(`button, input, select, textarea`)||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));er.displayName=$n;var tr=er,nr=`Progress`,rr=100,[ir,ar]=rn(nr),[or,sr]=ir(nr),cr=X.forwardRef((e,t)=>{let{__scopeProgress:n,value:r=null,max:i,getValueLabel:a=dr,...o}=e;(i||i===0)&&!mr(i)&&console.error(gr(`${i}`,`Progress`));let s=mr(i)?i:rr;r!==null&&!hr(r,s)&&console.error(_r(`${r}`,`Progress`));let c=hr(r,s)?r:null,l=pr(c)?a(c,s):void 0;return(0,Z.jsx)(or,{scope:n,value:c,max:s,children:(0,Z.jsx)(Qt.div,{"aria-valuemax":s,"aria-valuemin":0,"aria-valuenow":pr(c)?c:void 0,"aria-valuetext":l,role:`progressbar`,"data-state":fr(c,s),"data-value":c??void 0,"data-max":s,...o,ref:t})})});cr.displayName=nr;var lr=`ProgressIndicator`,ur=X.forwardRef((e,t)=>{let{__scopeProgress:n,...r}=e,i=sr(lr,n);return(0,Z.jsx)(Qt.div,{"data-state":fr(i.value,i.max),"data-value":i.value??void 0,"data-max":i.max,...r,ref:t})});ur.displayName=lr;function dr(e,t){return`${Math.round(e/t*100)}%`}function fr(e,t){return e==null?`indeterminate`:e===t?`complete`:`loading`}function pr(e){return typeof e==`number`}function mr(e){return pr(e)&&!isNaN(e)&&e>0}function hr(e,t){return pr(e)&&!isNaN(e)&&e<=t&&e>=0}function gr(e,t){return`Invalid prop \`max\` of value \`${e}\` supplied to \`${t}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${rr}\`.`}function _r(e,t){return`Invalid prop \`value\` of value \`${e}\` supplied to \`${t}\`. The \`value\` prop must be:
|
|
2
|
+
- a positive number
|
|
3
|
+
- less than the value passed to \`max\` (or ${rr} if no \`max\` prop is set)
|
|
4
|
+
- \`null\` or \`undefined\` if the progress is indeterminate.
|
|
5
|
+
|
|
6
|
+
Defaulting to \`null\`.`}var vr=cr,yr=ur,br=`Switch`,[xr,Sr]=rn(br),[Cr,wr]=xr(br),Tr=X.forwardRef((e,t)=>{let{__scopeSwitch:n,name:r,checked:i,defaultChecked:a,required:o,disabled:s,value:c=`on`,onCheckedChange:l,form:u,...d}=e,[f,p]=X.useState(null),m=en(t,e=>p(e)),h=X.useRef(!1),g=f?u||!!f.closest(`form`):!0,[_,v]=an({prop:i,defaultProp:a??!1,onChange:l,caller:br});return(0,Z.jsxs)(Cr,{scope:n,checked:_,disabled:s,children:[(0,Z.jsx)(Qt.button,{type:`button`,role:`switch`,"aria-checked":_,"aria-required":o,"data-state":Ar(_),"data-disabled":s?``:void 0,disabled:s,value:c,...d,ref:m,onClick:qt(e.onClick,e=>{v(e=>!e),g&&(h.current=e.isPropagationStopped(),h.current||e.stopPropagation())})}),g&&(0,Z.jsx)(kr,{control:f,bubbles:!h.current,name:r,value:c,checked:_,required:o,disabled:s,form:u,style:{transform:`translateX(-100%)`}})]})});Tr.displayName=br;var Er=`SwitchThumb`,Dr=X.forwardRef((e,t)=>{let{__scopeSwitch:n,...r}=e,i=wr(Er,n);return(0,Z.jsx)(Qt.span,{"data-state":Ar(i.checked),"data-disabled":i.disabled?``:void 0,...r,ref:t})});Dr.displayName=Er;var Or=`SwitchBubbleInput`,kr=X.forwardRef(({__scopeSwitch:e,control:t,checked:n,bubbles:r=!0,...i},a)=>{let o=X.useRef(null),s=en(o,a),c=Ft(n),l=Me(t);return X.useEffect(()=>{let e=o.current;if(!e)return;let t=window.HTMLInputElement.prototype,i=Object.getOwnPropertyDescriptor(t,`checked`).set;if(c!==n&&i){let t=new Event(`click`,{bubbles:r});i.call(e,n),e.dispatchEvent(t)}},[c,n,r]),(0,Z.jsx)(`input`,{type:`checkbox`,"aria-hidden":!0,defaultChecked:n,...i,tabIndex:-1,ref:s,style:{...i.style,...l,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0}})});kr.displayName=Or;function Ar(e){return e?`checked`:`unchecked`}var jr=Tr,Mr=Dr,Nr=`Tabs`,[Pr,Fr]=rn(Nr,[Ve]),Ir=Ve(),[Lr,Rr]=Pr(Nr),zr=X.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,onValueChange:i,defaultValue:a,orientation:o=`horizontal`,dir:s,activationMode:c=`automatic`,...l}=e,u=Ue(s),[d,f]=an({prop:r,onChange:i,defaultProp:a??``,caller:Nr});return(0,Z.jsx)(Lr,{scope:n,baseId:on(),value:d,onValueChange:f,orientation:o,dir:u,activationMode:c,children:(0,Z.jsx)(Qt.div,{dir:u,"data-orientation":o,...l,ref:t})})});zr.displayName=Nr;var Br=`TabsList`,Vr=X.forwardRef((e,t)=>{let{__scopeTabs:n,loop:r=!0,...i}=e,a=Rr(Br,n),o=Ir(n);return(0,Z.jsx)(Be,{asChild:!0,...o,orientation:a.orientation,dir:a.dir,loop:r,children:(0,Z.jsx)(Qt.div,{role:`tablist`,"aria-orientation":a.orientation,...i,ref:t})})});Vr.displayName=Br;var Hr=`TabsTrigger`,Ur=X.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,disabled:i=!1,...a}=e,o=Rr(Hr,n),s=Ir(n),c=Kr(o.baseId,r),l=qr(o.baseId,r),u=r===o.value;return(0,Z.jsx)(ze,{asChild:!0,...s,focusable:!i,active:u,children:(0,Z.jsx)(Qt.button,{type:`button`,role:`tab`,"aria-selected":u,"aria-controls":l,"data-state":u?`active`:`inactive`,"data-disabled":i?``:void 0,disabled:i,id:c,...a,ref:t,onMouseDown:qt(e.onMouseDown,e=>{!i&&e.button===0&&e.ctrlKey===!1?o.onValueChange(r):e.preventDefault()}),onKeyDown:qt(e.onKeyDown,e=>{[` `,`Enter`].includes(e.key)&&o.onValueChange(r)}),onFocus:qt(e.onFocus,()=>{let e=o.activationMode!==`manual`;!u&&!i&&e&&o.onValueChange(r)})})})});Ur.displayName=Hr;var Wr=`TabsContent`,Gr=X.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,forceMount:i,children:a,...o}=e,s=Rr(Wr,n),c=Kr(s.baseId,r),l=qr(s.baseId,r),u=r===s.value,d=X.useRef(u);return X.useEffect(()=>{let e=requestAnimationFrame(()=>d.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,Z.jsx)($t,{present:i||u,children:({present:n})=>(0,Z.jsx)(Qt.div,{"data-state":u?`active`:`inactive`,"data-orientation":s.orientation,role:`tabpanel`,"aria-labelledby":c,hidden:!n,id:l,tabIndex:0,...o,ref:t,style:{...e.style,animationDuration:d.current?`0s`:void 0},children:n&&a})})});Gr.displayName=Wr;function Kr(e,t){return`${e}-trigger-${t}`}function qr(e,t){return`${e}-content-${t}`}var Jr=zr,Yr=Vr,Xr=Ur,Zr=Gr,Q=r();function Qr(e){let t=(0,Q.c)(10),{children:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={from:`/server/$serverId`,strict:!1,structuralSharing:!0},t[0]=r):r=t[0];let i=N(r),a;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(a={from:`/server/$serverId`,strict:!1},t[1]=a):a=t[1];let o=u(a).serverId,s,c;t[2]!==i||t[3]!==o?(s=()=>{if(!i)return;let e=(i.models||[]).filter(ti);G.getState().hydrate(o??``,{workspaces:i.workspaces,preconfigs:i.preconfigs,prompts:i.prompts,models:e,defaultModel:i.defaultModel||`gpt-4o`,defaultProvider:i.defaultProvider||`openai`,providers:i.providers});let t=localStorage.getItem(`activeWorkspaceId`),n=i.workspaces;if(t){let e=n.find(e=>e.id===t);e?G.getState().setActiveWorkspace(e):n.length>0&&G.getState().setActiveWorkspace(n[0])}else n.length>0&&G.getState().setActiveWorkspace(n[0])},c=[i,o],t[2]=i,t[3]=o,t[4]=s,t[5]=c):(s=t[4],c=t[5]),(0,X.useLayoutEffect)(s,c);let l;if(t[6]===Symbol.for(`react.memo_cache_sentinel`)?(l=[],t[6]=l):l=t[6],(0,X.useEffect)($r,l),!i){let e;return t[7]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(`div`,{className:`flex items-center justify-center min-h-screen bg-background text-foreground`,children:(0,Z.jsxs)(`div`,{className:`text-center space-y-2`,children:[(0,Z.jsx)(`div`,{className:`h-8 w-8 border-2 border-muted-foreground/30 border-t-muted-foreground rounded-full animate-spin mx-auto`}),(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading server data...`})]})}),t[7]=e):e=t[7],e}let d;return t[8]===n?d=t[9]:(d=(0,Z.jsx)(Z.Fragment,{children:n}),t[8]=n,t[9]=d),d}function $r(){return ei}function ei(){et(),G.getState().clearAll()}function ti(e){return e.runtimeStatus?.usable}var ni=e=>Symbol.iterator in e,ri=e=>`entries`in e,ii=(e,t)=>{let n=e instanceof Map?e:new Map(e.entries()),r=t instanceof Map?t:new Map(t.entries());if(n.size!==r.size)return!1;for(let[e,t]of n)if(!r.has(e)||!Object.is(t,r.get(e)))return!1;return!0},ai=(e,t)=>{let n=e[Symbol.iterator](),r=t[Symbol.iterator](),i=n.next(),a=r.next();for(;!i.done&&!a.done;){if(!Object.is(i.value,a.value))return!1;i=n.next(),a=r.next()}return!!i.done&&!!a.done};function oi(e,t){return Object.is(e,t)?!0:typeof e!=`object`||!e||typeof t!=`object`||!t||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)?!1:ni(e)&&ni(t)?ri(e)&&ri(t)?ii(e,t):ai(e,t):ii({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)})}function si(e){let t=X.useRef(void 0);return n=>{let r=e(n);return oi(t.current,r)?t.current:t.current=r}}function ci(){M.invalidateQueries({queryKey:h.sessions.all})}function li(e,t){let{session:n}=e,{setSessions:r,setCurrentSession:i,setMessagesBySession:a,setPartsBySession:o,setSessionUsage:s,setCurrentModel:c,setSelectedVariant:l,pendingSessionCreateRef:u,sessionAccessTimesRef:d,partIdIndexRef:f,defaultModel:p}=t;r(e=>[n,...e]),u.current&&(i(n),a(e=>({...e,[n.id]:[]})),o(e=>({...e,[n.id]:{}})),f.current.clear(),s({promptTokens:0,completionTokens:0,totalTokens:0}),c(n.selectedModel||p),l(n.selectedVariant??null),u.current=!1,t.navigateToSession(n.id),t.resumeSessionAfterCreate(n.id)),d.current.set(n.id,Date.now()),ci()}function ui(e,t){let{session:n,messages:r,usage:i,isRunning:a,control:o}=e,{setCurrentSession:s,removeInterruptedSession:c,addStreamingSession:l,removeStreamingSession:u,skipFinishSoundSessionIdsRef:d,setMessagesBySession:f,setPartsBySession:p,setSessionUsage:m,setCurrentModel:h,setSelectedVariant:g,sessionAccessTimesRef:_,partIdIndexRef:v,models:y,defaultModel:b,clearCompletion:x}=t;if(s(n),c(n.id),x(n.id),a?l(n.id):(u(n.id),d.current.add(n.id)),r){f(e=>({...e,[n.id]:r.map(e=>e.message)})),p(e=>{let t={...e};t[n.id]={};for(let e of r)t[n.id][e.message.id]=e.parts;return t}),v.current.clear();for(let e of r)for(let t=0;t<e.parts.length;t++)v.current.set(e.parts[t].id,{sessionId:n.id,messageId:e.message.id,index:t})}m(i??{promptTokens:0,completionTokens:0,totalTokens:0}),h(n.selectedModel||b),g(n.selectedVariant||null);let S=n.selectedModel||b,C=y.find(e=>e.id===S)?.variants;n.selectedVariant&&C&&!C[n.selectedVariant]&&g(null),_.current.set(n.id,Date.now()),o&&Bt.getState().setControlState(n.id,o)}function di(e,t){let{sessionId:n}=e,{setSessions:r,setMessagesBySession:i,setPartsBySession:a,setCurrentSession:o,partIdIndexRef:s,partAppendRafRef:c,pendingPartAppendsRef:l,sessionAccessTimesRef:u,currentSessionIdRef:d,clearCompletion:f}=t;r(e=>e.map(e=>e.id===n?{...e,status:`closed`}:e)),f(n),d.current===n&&(c.current!==null&&(cancelAnimationFrame(c.current),c.current=null),l.current.clear()),i(e=>{let t={...e};return delete t[n],t}),a(e=>{let t={...e};return delete t[n],t});for(let[e,t]of s.current)t.sessionId===n&&s.current.delete(e);u.current.delete(n),d.current===n&&(o(null),t.navigateToParent()),ci()}function fi(e,t){let{session:n}=e,{setSessions:r,setCurrentSession:i,currentSessionIdRef:a}=t;r(e=>e.map(e=>e.id===n.id?n:e)),a.current===n.id&&i(n),ci()}function pi(e,t){let{sessionId:n}=e,{setSessions:r,setMessagesBySession:i,setPartsBySession:a,removeInterruptedSession:o,partIdIndexRef:s,sessionAccessTimesRef:c,setCurrentSession:l,currentSessionIdRef:u,clearCompletion:d}=t;r(e=>e.filter(e=>e.id!==n)),d(n),i(e=>{let t={...e};return delete t[n],t}),a(e=>{let t={...e};return delete t[n],t}),o(n);for(let[e,t]of s.current)t.sessionId===n&&s.current.delete(e);c.current.delete(n),u.current===n&&(l(null),t.navigateToParent()),ci()}function mi(e,t){let{session:n}=e,{setSessions:r,setCurrentSession:i,setSelectedVariant:a,setCurrentModel:o,currentSessionIdRef:s}=t;r(e=>e.map(e=>e.id===n.id?n:e)),s.current===n.id&&(i(n),n.selectedVariant!==void 0&&a(n.selectedVariant),n.selectedModel&&o(n.selectedModel)),ci()}function hi(e,t){let{session:n}=e,{setSessions:r,setCurrentSession:i,currentSessionIdRef:a}=t;r(e=>e.map(e=>e.id===n.id?n:e)),a.current===n.id&&i(n),ci()}function gi(e,t){let{sessionId:n,result:r}=e,{addInterruptedSession:i,skipFinishSoundSessionIdsRef:a,removeStreamingSession:o,clearPendingAskRequestsBySessionId:s}=t;i(n),a.current.add(n),o(n),s(n),r.cascadedTo.length>0&&console.log(`Session ${n} interrupted. Cascaded to:`,r.cascadedTo)}function _i(e,t){let{sessionId:n,revertedTo:r,removed:i}=e;r.messageId===null?console.log(`Session ${n} cleared (all ${i.messageIds.length} messages removed)`):console.log(`Session ${n} reverted to message ${r.messageId}, removed ${i.messageIds.length} messages`)}function vi(e,t){let{forkedSession:n,messages:r}=e,{setSessions:i,setCurrentSession:a,setMessagesBySession:o,setPartsBySession:s,setSessionUsage:c,sessionAccessTimesRef:l,partIdIndexRef:u,clearCompletion:d}=t;i(e=>[n,...e]),o(e=>({...e,[n.id]:r.map(e=>e.message)})),s(e=>{let t={...e};t[n.id]={};for(let e of r)t[n.id][e.message.id]=e.parts;return t}),u.current.clear();for(let e of r)for(let t=0;t<e.parts.length;t++)u.current.set(e.parts[t].id,{sessionId:n.id,messageId:e.message.id,index:t});a(n),t.navigateToSession(n.id),t.resumeSessionAfterCreate(n.id),c({promptTokens:0,completionTokens:0,totalTokens:0}),l.current.set(n.id,Date.now()),d(n.id),ci()}function yi(e,t){let{sessionId:n,messages:r}=e,{setMessagesBySession:i,setPartsBySession:a,partIdIndexRef:o,partAppendRafRef:s,skipFinishSoundSessionIdsRef:c,removeStreamingSession:l,sessionAccessTimesRef:u,flushPendingPartAppends:d,currentSessionIdRef:f,clearCompletion:p}=t;if(f.current===n&&(s.current!==null&&(cancelAnimationFrame(s.current),s.current=null),d()),f.current===n){i(e=>({...e,[n]:r.map(e=>e.message)})),a(e=>{let t={...e};t[n]={};for(let e of r)t[n][e.message.id]=e.parts;return t}),o.current.clear();for(let e of r)for(let t=0;t<e.parts.length;t++)o.current.set(e.parts[t].id,{sessionId:n,messageId:e.message.id,index:t})}c.current.add(n),l(n),u.current.set(n,Date.now()),p(n)}var bi={"session.created":li,"session.resumed":ui,"session.closed":di,"session.reopened":fi,"session.deleted":pi,"session.updated":mi,"session.renamed":hi,"session.interrupted":gi,"session.reverted":_i,"session.forked":vi,"session.state":yi};function xi(e,t){let{message:n}=e,{setMessagesBySession:r,setPartsBySession:i,addStreamingSession:a,removeInterruptedSession:o,currentSessionIdRef:s,clearCompletion:c}=t;c(n.sessionId),n.sessionId===s.current&&(r(e=>({...e,[n.sessionId]:[...e[n.sessionId]||[],n]})),i(e=>({...e,[n.sessionId]:{...e[n.sessionId],[n.id]:[]}}))),n.sessionId===s.current&&`status`in n&&n.status===`streaming`&&(a(n.sessionId),o(n.sessionId))}function Si(e,t){let{message:n}=e,{setMessagesBySession:r,removeStreamingSession:i,partAppendRafRef:a,partAppendTimeoutRef:o,flushPendingPartAppends:s,currentSessionIdRef:c,sessionsRef:l,setCompletion:u,chatFinishSoundEnabledRef:d,playChatFinishSound:f}=t;if(n.sessionId===c.current&&(`status`in n&&n.status!==`streaming`&&(a.current!==null&&(cancelAnimationFrame(a.current),a.current=null),o.current!==null&&(clearTimeout(o.current),o.current=null),s()),r(e=>({...e,[n.sessionId]:(e[n.sessionId]||[]).map(e=>e.id===n.id?n:e)}))),`status`in n&&n.status!==`streaming`){i(n.sessionId);let e=l.current.find(e=>e.id===n.sessionId);if(e&&e.parentId===null){let e=`error`in n&&n.status===`error`,t=Date.now();u(n.sessionId,{type:`flash-only`,flashStartedAt:t}),!e&&d.current&&f()}}}function Ci(e,t){let{sessionId:n,part:r}=e,{setPartsBySession:i,partIdIndexRef:a,currentSessionIdRef:o,clearCompletion:s}=t;if(s(n),n===o.current){i(e=>{let t=e[n]||{},i=t[r.messageId]||[];return{...e,[n]:{...t,[r.messageId]:[...i,r]}}});let e=0;for(let t of a.current.values())t.sessionId===n&&t.messageId===r.messageId&&(e=Math.max(e,t.index+1));a.current.set(r.id,{sessionId:n,messageId:r.messageId,index:e})}}function wi(e,t){let{sessionId:n,part:r}=e,{setPartsBySession:i,partIdIndexRef:a,currentSessionIdRef:o,clearCompletion:s}=t;if(s(n),n===o.current){let e=a.current.get(r.id);i(e?t=>{let n=t[e.sessionId];if(!n)return t;let i=n[e.messageId];if(!i)return t;let a=[...i];return a[e.index]=r,{...t,[e.sessionId]:{...n,[e.messageId]:a}}}:e=>{let t=e[n]||{},i=t[r.messageId]||[];return{...e,[n]:{...t,[r.messageId]:i.map(e=>e.id===r.id?r:e)}}})}}function Ti(e,t){let{sessionId:n,partId:r,delta:i}=e,{addStreamingSession:a,pendingPartAppendsRef:o,partAppendRafRef:s,lastPartAppendFlushAtRef:c,partAppendTimeoutRef:l,interruptedSessions:u,currentSessionIdRef:d,flushPendingPartAppends:f,clearCompletion:p}=t;if(p(n),n===d.current&&!u.has(n)&&a(n),n===d.current){let e=o.current.get(r);o.current.set(r,(e||``)+i);let t=Date.now()-c.current;if(t<50){if(l.current===null){let e=50-t;l.current=setTimeout(()=>{l.current=null,s.current===null&&(s.current=requestAnimationFrame(()=>{f()}))},e)}}else s.current===null&&(s.current=requestAnimationFrame(()=>{f()}))}}function Ei(e,t){let{sessionId:n,usage:r,model:i}=e,{setSessionUsage:a,setCurrentModel:o,currentSessionIdRef:s}=t;n===s.current&&(a({promptTokens:r.promptTokens,completionTokens:r.completionTokens,totalTokens:r.totalTokens}),o(i))}function Di(e,t){let{sessionId:n}=e,{setCompactionSuccess:r,currentSessionIdRef:i}=t;n===i.current&&r(!0)}function Oi(e,t){console.error(`Server error:`,e.code,e.message)}var ki={"message.created":xi,"message.updated":Si,"part.created":Ci,"part.updated":wi,"part.append":Ti,"chat.usage":Ei,"compaction.complete":Di,error:Oi};function Ai(e,t){let{grants:n}=e,{setPermissions:r}=t;r(n)}function ji(e,t){let{grantId:n}=e,{setPermissions:r}=t;r(e=>e.map(e=>e.id===n?{...e,revokedAt:new Date().toISOString()}:e))}function Mi(e,t){let{setPermissions:n}=t;n(e=>{let t=new Date().toISOString();return e.map(e=>({...e,revokedAt:t}))})}function Ni(e,t){let{sessionId:n,messages:r}=e,{setQueuedMessagesForSession:i}=t;i(n,r)}function Pi(e,t){let{sessionId:n,message:r}=e,{addQueuedMessage:i}=t;i(n,r)}function Fi(e,t){let{sessionId:n,queueId:r}=e,{removeQueuedMessageById:i}=t;i(n,r)}function Ii(e,t){let{sessionId:n,queueId:r}=e,{removeQueuedMessageById:i}=t;i(n,r)}var Li={"permission.list":Ai,"permission.revoked":ji,"permission.all_revoked":Mi,"queue.list":Ni,"queue.added":Pi,"queue.removed":Fi,"queue.sending":Ii};function Ri(e,t){let{provider:n,connected:r,authorizationUrl:i,error:a}=e,{setProviderStatuses:o}=t;o(e=>e.find(e=>e.provider===n)?e.map(e=>e.provider===n?{...e,connected:r,authorizationUrl:i,error:a}:e):[...e,{provider:n,connected:r,authorizationUrl:i,error:a}]),M.invalidateQueries({queryKey:h.config.providers.all}),M.invalidateQueries({queryKey:h.config.providers.credentials})}function zi(e,t){let{provider:n,connected:r,connectedAt:i,accountId:a}=e,{setProviderStatuses:o}=t;o(e=>e.map(e=>e.provider===n?{...e,connected:r,connectedAt:i,accountId:a}:e)),M.invalidateQueries({queryKey:h.config.providers.all}),M.invalidateQueries({queryKey:h.config.providers.credentials})}var Bi={"provider.status":Ri,"provider.connected":zi};function Vi(e,t){let{sessionId:n,toolCallId:r,toolName:i,ask:a,requestId:o}=e,{addPendingAskRequest:s,runAskHandlers:c,sendAskResponse:l}=t,u={toolCallId:r,sessionId:n,toolName:i,ask:a,originSessionId:a._originSessionId,requestId:o},d=a.type===`permission`?`permission`:a.type===`client_capability`?`client`:`human`,f=()=>{if(a.type!==`permission`)return;let{sessionsRef:e,notifiedToolCallIdsRef:i,permissionSoundEnabledRef:s,playPermissionSound:c}=t,l=o??r;e.current.find(e=>e.id===n)?.parentId===null&&s.current&&!i.current.has(l)&&(c(),i.current.add(l))},p=c(d,u);p?p.then(e=>{e===void 0?(s(u),f()):l(r,e,o)}).catch(()=>{s(u),f()}):(s(u),f())}function Hi(e,t){let{requestId:n,toolCallId:r}=e,{removePendingAskRequest:i,removePendingPermissionRequest:a}=t;n?a(n,r):i(r)}function Ui(e,t){let{replacePendingPermissionRequests:n}=t;n(e.requests.map(e=>({toolCallId:e.toolCallId,sessionId:e.sessionId,toolName:e.toolName,ask:e.ask,originSessionId:e._originSessionId,requestId:e.requestId})))}function Wi(e,t){console.warn(`Ask response rejected: [${e.code}] ${e.message} (sessionId=${e.sessionId}, toolCallId=${e.toolCallId})`)}var Gi={"ask.request":Vi,"ask.timeout":Hi,"ask.pending_sync":Ui,"ask.response_rejected":Wi};function Ki(e,t){let{control:n,reason:r}=e;Bt.getState().setControlState(n.sessionId,n),console.log(`[control] State updated: sessionId=${n.sessionId} status=${n.status} reason=${r}`)}function qi(e,t){let n=Bt.getState();n.setControlState(e.sessionId,e.control),n.setActionRejection({sessionId:e.sessionId,action:e.action,code:e.code,message:e.message}),console.warn(`[control] Action rejected: sessionId=${e.sessionId} action=${e.action} code=${e.code} message=${e.message}`)}var Ji={"session.control.updated":Ki,"session.action_rejected":qi};function Yi(e,t){let n=()=>t.current,r=[];function i(t,n){e.on(t,n),r.push({event:t,handler:n})}return i(`session.created`,e=>{bi[`session.created`]({type:`session.created`,session:e},n())}),i(`session.resumed`,(e,t,r,i,a)=>{bi[`session.resumed`]({type:`session.resumed`,session:e,messages:t,usage:r,isRunning:i,control:a},n())}),i(`session.closed`,e=>{bi[`session.closed`]({type:`session.closed`,sessionId:e},n())}),i(`session.reopened`,e=>{bi[`session.reopened`]({type:`session.reopened`,session:e},n())}),i(`session.deleted`,e=>{bi[`session.deleted`]({type:`session.deleted`,sessionId:e},n())}),i(`session.updated`,e=>{bi[`session.updated`]({type:`session.updated`,session:e},n())}),i(`session.renamed`,e=>{bi[`session.renamed`]({type:`session.renamed`,session:e},n())}),i(`session.interrupted`,(e,t)=>{bi[`session.interrupted`]({type:`session.interrupted`,sessionId:e,result:t},n())}),i(`session.reverted`,(e,t,r)=>{bi[`session.reverted`]({type:`session.reverted`,sessionId:e,revertedTo:t,removed:r},n())}),i(`session.forked`,(e,t,r)=>{bi[`session.forked`]({type:`session.forked`,originalSessionId:e,forkedSession:t,messages:r},n())}),i(`session.state`,(e,t)=>{bi[`session.state`]({type:`session.state`,sessionId:e,messages:t},n())}),i(`session.control.updated`,(e,t)=>{Ji[`session.control.updated`]({type:`session.control.updated`,control:e,reason:t},n())}),i(`session.action_rejected`,(e,t,r,i,a)=>{Ji[`session.action_rejected`]({type:`session.action_rejected`,sessionId:e,action:t,code:r,message:i,control:a},n())}),i(`message.created`,e=>{ki[`message.created`]({type:`message.created`,message:e},n())}),i(`message.updated`,e=>{ki[`message.updated`]({type:`message.updated`,message:e},n())}),i(`part.created`,(e,t)=>{ki[`part.created`]({type:`part.created`,sessionId:e,part:t},n())}),i(`part.updated`,(e,t)=>{ki[`part.updated`]({type:`part.updated`,sessionId:e,part:t},n())}),i(`part.append`,(e,t,r,i)=>{ki[`part.append`]({type:`part.append`,sessionId:e,partId:t,field:r,delta:i},n())}),i(`chat.usage`,(e,t,r)=>{ki[`chat.usage`]({type:`chat.usage`,sessionId:e,usage:t,model:r},n())}),i(`compaction.complete`,(e,t)=>{ki[`compaction.complete`]({type:`compaction.complete`,sessionId:e,tokensUsed:t},n())}),i(`permission.list`,(e,t)=>{Li[`permission.list`]({type:`permission.list`,workspaceId:e,grants:t},n())}),i(`permission.revoked`,e=>{Li[`permission.revoked`]({type:`permission.revoked`,grantId:e},n())}),i(`permission.all_revoked`,(e,t)=>{Li[`permission.all_revoked`]({type:`permission.all_revoked`,workspaceId:e,count:t},n())}),i(`queue.list`,(e,t)=>{Li[`queue.list`]({type:`queue.list`,sessionId:e,messages:t},n())}),i(`queue.added`,(e,t)=>{Li[`queue.added`]({type:`queue.added`,sessionId:e,message:t},n())}),i(`queue.removed`,(e,t)=>{Li[`queue.removed`]({type:`queue.removed`,sessionId:e,queueId:t},n())}),i(`queue.sending`,(e,t)=>{Li[`queue.sending`]({type:`queue.sending`,sessionId:e,queueId:t},n())}),i(`provider.status`,(e,t,r,i)=>{Bi[`provider.status`]({type:`provider.status`,provider:e,connected:t,authorizationUrl:r,error:i},n())}),i(`provider.connected`,(e,t,r,i)=>{Bi[`provider.connected`]({type:`provider.connected`,provider:e,connected:t,connectedAt:r,accountId:i},n())}),i(`ask.request`,(e,t,r,i,a,o)=>{Gi[`ask.request`]({type:`ask.request`,sessionId:e,toolCallId:t,toolName:r,ask:i,requestId:a,authority:o},n())}),i(`ask.response_rejected`,(e,t,r,i,a)=>{Gi[`ask.response_rejected`]({type:`ask.response_rejected`,sessionId:e,toolCallId:t,requestId:r,code:i,message:a},n())}),i(`ask.timeout`,(e,t,r)=>{Gi[`ask.timeout`]({type:`ask.timeout`,sessionId:e,toolCallId:t,requestId:r},n())}),i(`ask.pending_sync`,(e,t)=>{Gi[`ask.pending_sync`]({type:`ask.pending_sync`,sessionId:e,requests:t},n())}),i(`error`,(e,t)=>{ki.error({type:`error`,code:e,message:t},n())}),()=>{for(let{event:t,handler:n}of r)e.off(t,n)}}function Xi(e){try{let t=localStorage.getItem(e);return t?JSON.parse(t):null}catch{return null}}var Zi={async get(e){return c()&&window.__JEAN2_ELECTRON__?window.__JEAN2_ELECTRON__.store.get(e):Xi(e)},async set(e,t){if(c()&&window.__JEAN2_ELECTRON__){await window.__JEAN2_ELECTRON__.store.set(e,t);return}localStorage.setItem(e,JSON.stringify(t))},async remove(e){if(c()&&window.__JEAN2_ELECTRON__){await window.__JEAN2_ELECTRON__.store.remove(e);return}localStorage.removeItem(e)},async clear(){if(c()&&window.__JEAN2_ELECTRON__){await window.__JEAN2_ELECTRON__.store.clear();return}localStorage.clear()},isNative(){return c()}},Qi={API_TOKEN:`jean2_api_token`,TOKEN_EXPIRY:`jean2_token_expiry`,SERVER_URL:`jean2_server_url`,THEME:`jean2-theme`,ACTIVE_WORKSPACE_ID:`activeWorkspaceId`,CLIENT_ID:`jean2_client_id`};function $i(){return crypto.randomUUID()}async function ea(){let e=await Zi.get(Qi.CLIENT_ID);if(e)return e;let t=$i();return await Zi.set(Qi.CLIENT_ID,t),t}function ta(){switch(d()){case`electron`:return`desktop`;default:return`web`}}function na(){switch(d()){case`electron`:return`Jean2 Desktop`;default:return`Jean2 Web`}}async function ra(){return{clientId:await ea(),clientType:ta(),displayName:na(),interactionMode:`human`,capabilities:[]}}var ia=1e4,aa=3e4,oa=1e3;function sa(e){let t=(0,Q.c)(51),{apiToken:n,serverUrl:r,currentSessionIdRef:i,handlerContextRef:a,handleLogout:o,clientRef:s}=e,c=(0,X.useRef)(null),l=s??c,[u,d]=(0,X.useState)(0),[f,p]=(0,X.useState)(null),m;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(m=()=>{J.getState().setRetryCount(0),J.getState().setConnectionTimedOut(!1),J.getState().setNextRetryIn(0),J.getState().setAuthError(null),d(_a)},t[0]=m):m=t[0];let h=m,g=J(ga),_=J(ha),v,y;t[1]===r?(v=t[2],y=t[3]):(v=()=>{if(!r)return;let e=!1;return ra().then(t=>{e||(p(t),kt.getState().setClientId(t.clientId))}),()=>{e=!0}},y=[r],t[1]=r,t[2]=v,t[3]=y),(0,X.useEffect)(v,y);let b;t[4]!==n||t[5]!==f||t[6]!==l||t[7]!==i||t[8]!==o||t[9]!==a||t[10]!==r?(b=()=>{if(!r||!f)return;let e=!1,t=()=>{let e=new An({url:r,...n?{token:n}:{},autoSyncPermissions:!1,clientDescriptor:f});l.current=e,e.on(`connected`,()=>{J.getState().setConnected(!0),J.getState().setAuthError(null),J.getState().setRetryCount(0),J.getState().setConnectionTimedOut(!1),Ne.getState().clearPendingRequests();let t=i.current??je.getState().currentSession?.id;if(t){let n=i.current===null;i.current=t,console.log(`[reconnect] Resuming session:`,t,n?`(restored from store)`:`(from ref)`),e.sessions.resume(t)}else console.log(`[reconnect] No session to resume (ref:`,i.current,`, store:`,je.getState().currentSession?.id,`)`)}),e.on(`disconnected`,e=>{J.getState().setConnected(!1),e.code===1008||e.code===401?o():J.getState().setConnectionTimedOut(!0)}),e.on(`error.connection`,ma),Yi(e,a),e.connect().catch(pa)};return Ee.verifyToken(r,n??void 0).then(n=>{if(!e){if(!n){J.getState().setAuthError(`Authentication failed. Your token may be invalid or expired.`);return}t()}}).catch(()=>{e||t()}),()=>{e=!0;let t=l.current;t&&(t.dispose(),l.current===t&&(l.current=null))}},t[4]=n,t[5]=f,t[6]=l,t[7]=i,t[8]=o,t[9]=a,t[10]=r,t[11]=b):b=t[11];let x;t[12]!==n||t[13]!==f||t[14]!==u||t[15]!==r?(x=[r,n,f,u],t[12]=n,t[13]=f,t[14]=u,t[15]=r,t[16]=x):x=t[16],(0,X.useEffect)(b,x);let S;t[17]!==f||t[18]!==g||t[19]!==_||t[20]!==r?(S=()=>{if(r&&f&&!g&&!_){let e=setTimeout(fa,ia);return()=>clearTimeout(e)}},t[17]=f,t[18]=g,t[19]=_,t[20]=r,t[21]=S):S=t[21];let C;t[22]!==n||t[23]!==f||t[24]!==g||t[25]!==_||t[26]!==u||t[27]!==r?(C=[r,n,f,u,g,_],t[22]=n,t[23]=f,t[24]=g,t[25]=_,t[26]=u,t[27]=r,t[28]=C):C=t[28],(0,X.useEffect)(S,C);let w;t[29]!==g||t[30]!==_||t[31]!==r?(w=()=>{if(!_||g||!r)return;let e=J.getState().retryCount,t=Math.min(oa*2**e,aa),n=Math.floor(t/1e3);J.getState().setNextRetryIn(n);let i=setInterval(()=>{--n,J.getState().setNextRetryIn(Math.max(0,n))},1e3),a=setTimeout(()=>{J.getState().setRetryCount(da),d(ua)},t);return()=>{clearInterval(i),clearTimeout(a)}},t[29]=g,t[30]=_,t[31]=r,t[32]=w):w=t[32];let T;t[33]!==n||t[34]!==g||t[35]!==_||t[36]!==u||t[37]!==r?(T=[r,n,u,g,_],t[33]=n,t[34]=g,t[35]=_,t[36]=u,t[37]=r,t[38]=T):T=t[38],(0,X.useEffect)(w,T);let E;t[39]!==l||t[40]!==r?(E=()=>{let e=()=>{if(!r)return;let e=l.current;e&&e.connected||(J.getState().setConnected(!1),J.getState().setRetryCount(0),J.getState().setConnectionTimedOut(!1),d(la))};return window.addEventListener(`online`,e),()=>window.removeEventListener(`online`,e)},t[39]=l,t[40]=r,t[41]=E):E=t[41];let D;t[42]===r?D=t[43]:(D=[r],t[42]=r,t[43]=D),(0,X.useEffect)(E,D);let O;t[44]!==l||t[45]!==r?(O=()=>{let e=()=>{if(document.visibilityState!==`visible`)return;let e=l.current;e&&e.ws?.readyState===WebSocket.OPEN||r&&(J.getState().setRetryCount(0),J.getState().setConnectionTimedOut(!1),d(ca))};return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},t[44]=l,t[45]=r,t[46]=O):O=t[46];let k;t[47]===r?k=t[48]:(k=[r],t[47]=r,t[48]=k),(0,X.useEffect)(O,k);let A;return t[49]===l?A=t[50]:(A={clientRef:l,retry:h},t[49]=l,t[50]=A),A}function ca(e){return e+1}function la(e){return e+1}function ua(e){return e+1}function da(e){return e+1}function fa(){J.getState().connected||J.getState().setConnectionTimedOut(!0)}function pa(e){console.error(`Connection failed:`,e)}function ma(e){console.error(`WebSocket error:`,e)}function ha(e){return e.connectionTimedOut}function ga(e){return e.connected}function _a(e){return e+1}function va(e){let t=(0,Q.c)(119),{clientRef:n,currentSession:r,sessions:i,workspaces:a,activeWorkspace:o,currentModel:s,streamingSessionIds:c,isCompacting:l,primaryPreconfigs:u,setActiveWorkspace:d,setCompactionSuccess:f,setCurrentModel:p,setSelectedVariant:m,removePendingAskRequest:h,removePendingPermissionRequest:g,clearStreamingSessions:_,pendingSessionCreateRef:v,partAppendRafRef:y,pendingPartAppendsRef:b,skipFinishSoundSessionIdsRef:x,navigate:S,serverId:C,viewPath:w}=e,T;t[0]!==o?.id||t[1]!==n||t[2]!==y||t[3]!==b||t[4]!==v||t[5]!==f?(T=(e,t)=>{let r=n.current;v.current=!0,y.current!==null&&(cancelAnimationFrame(y.current),y.current=null),b.current.clear(),r&&r.connected&&r.sessions.create({preconfigId:e,title:t,workspaceId:o?.id}),f(!1)},t[0]=o?.id,t[1]=n,t[2]=y,t[3]=b,t[4]=v,t[5]=f,t[6]=T):T=t[6];let E=T,D;t[7]!==o?.id||t[8]!==_||t[9]!==n||t[10]!==S||t[11]!==y||t[12]!==b||t[13]!==C||t[14]!==i||t[15]!==d||t[16]!==f||t[17]!==x||t[18]!==w||t[19]!==a?(D=e=>{let t=n.current;x.current=new Set(J.getState().streamingSessionIds),_(),f(!1);let r=i.find(t=>t.id===e);if(r?.workspaceId&&r.workspaceId!==o?.id){let e=a.find(e=>e.id===r.workspaceId);e&&d(e)}y.current!==null&&(cancelAnimationFrame(y.current),y.current=null),b.current.clear(),t&&t.connected&&t.sessions.resume(e),S({to:`/server/$serverId${w}/session/$sessionId`,params:{serverId:C,sessionId:e}})},t[7]=o?.id,t[8]=_,t[9]=n,t[10]=S,t[11]=y,t[12]=b,t[13]=C,t[14]=i,t[15]=d,t[16]=f,t[17]=x,t[18]=w,t[19]=a,t[20]=D):D=t[20];let O=D,k;t[21]===n?k=t[22]:(k=e=>{let t=n.current;t&&t.connected&&t.sessions.close(e)},t[21]=n,t[22]=k);let A=k,j;t[23]===n?j=t[24]:(j=(e,t)=>{let r=n.current;r&&r.connected&&r.sessions.revert(e,t)},t[23]=n,t[24]=j);let M=j,N;t[25]===n?N=t[26]:(N=(e,t)=>{let r=n.current;r&&r.connected&&r.sessions.fork(e,t)},t[25]=n,t[26]=N);let P=N,F;t[27]===n?F=t[28]:(F=e=>{let t=n.current;t&&t.connected&&t.sessions.compact(e)},t[27]=n,t[28]=F);let I=F,L;t[29]===n?L=t[30]:(L=e=>{let t=n.current;t&&t.connected&&t.sessions.reopen(e)},t[29]=n,t[30]=L);let R=L,z;t[31]===n?z=t[32]:(z=e=>{let t=n.current;t&&t.connected&&t.sessions.delete(e)},t[31]=n,t[32]=z);let B=z,V;t[33]!==n||t[34]!==r?(V=e=>{let t=n.current;t&&t.connected&&r&&t.sessions.update(r.id,{preconfigId:e})},t[33]=n,t[34]=r,t[35]=V):V=t[35];let ee=V,H;t[36]!==n||t[37]!==r||t[38]!==p||t[39]!==m?(H=(e,t)=>{let i=n.current;p(e),m(null),i&&i.connected&&r&&i.sessions.updateModel(r.id,{modelId:e,providerId:t})},t[36]=n,t[37]=r,t[38]=p,t[39]=m,t[40]=H):H=t[40];let U=H,te;t[41]!==n||t[42]!==s||t[43]!==r||t[44]!==m?(te=e=>{let t=n.current;t&&t.connected&&r&&(t.sessions.updateModel(r.id,{modelId:r.selectedModel||s,providerId:r.selectedProvider||`openai`,variant:e??void 0}),m(e))},t[41]=n,t[42]=s,t[43]=r,t[44]=m,t[45]=te):te=t[45];let ne=te,re;t[46]===n?re=t[47]:(re=(e,t)=>{let r=n.current;r&&r.connected&&r.sessions.rename(e,t)},t[46]=n,t[47]=re);let ie=re,ae;t[48]!==r||t[49]!==O?(ae=()=>{r?.parentId&&O(r.parentId)},t[48]=r,t[49]=O,t[50]=ae):ae=t[50];let oe=ae,se;t[51]===n?se=t[52]:(se=(e,t,r)=>{let i=n.current;i&&i.connected&&i.queue.add(e,t,r)},t[51]=n,t[52]=se);let ce=se,le;t[53]===n?le=t[54]:(le=e=>{let t=n.current;t&&t.connected&&t.queue.remove(e)},t[53]=n,t[54]=le);let ue=le,de;t[55]!==ce||t[56]!==n||t[57]!==r||t[58]!==l||t[59]!==c?(de=(e,t)=>{let i=n.current;!r||l||(r.runningAt||c.has(r.id)?ce(r.id,e,t):i&&i.connected&&i.chat.send(r.id,e,t?{attachments:t}:void 0))},t[55]=ce,t[56]=n,t[57]=r,t[58]=l,t[59]=c,t[60]=de):de=t[60];let fe=de,pe;t[61]!==n||t[62]!==h||t[63]!==g?(pe=(e,t,r)=>{let i=n.current;r?g(r,e):h(e),i&&i.connected&&i.send({type:`ask.response`,toolCallId:e,response:t,requestId:r})},t[61]=n,t[62]=h,t[63]=g,t[64]=pe):pe=t[64];let me=pe,he;t[65]!==n||t[66]!==r?(he=()=>{let e=n.current;e&&e.connected&&r&&e.sessions.interrupt(r.id)},t[65]=n,t[66]=r,t[67]=he):he=t[67];let ge=he,_e;t[68]!==o||t[69]!==n?(_e=()=>{let e=n.current;e&&e.connected&&o&&e.permissions.list(o.id)},t[68]=o,t[69]=n,t[70]=_e):_e=t[70];let ve=_e,ye;t[71]!==n||t[72]!==y||t[73]!==b||t[74]!==v||t[75]!==u||t[76]!==d||t[77]!==f||t[78]!==a?(ye=e=>{let t=n.current;d(a.find(t=>t.id===e)||null),v.current=!0,y.current!==null&&(cancelAnimationFrame(y.current),y.current=null),b.current.clear();let r=u[0]?.id;t&&t.connected&&t.sessions.create({preconfigId:r,workspaceId:e}),f(!1)},t[71]=n,t[72]=y,t[73]=b,t[74]=v,t[75]=u,t[76]=d,t[77]=f,t[78]=a,t[79]=ye):ye=t[79];let be=ye,xe;t[80]===n?xe=t[81]:(xe=e=>{let t=n.current;t&&t.connected&&t.permissions.revoke(e)},t[80]=n,t[81]=xe);let Se=xe,Ce;t[82]===n?Ce=t[83]:(Ce=e=>{let t=n.current;t&&t.connected&&t.permissions.revokeAll(e)},t[82]=n,t[83]=Ce);let we=Ce,Te;t[84]===n?Te=t[85]:(Te=e=>{let t=n.current;t&&t.connected&&t.control.claim(e)},t[84]=n,t[85]=Te);let W=Te,Ee;t[86]===n?Ee=t[87]:(Ee=e=>{let t=n.current;t&&t.connected&&t.control.release(e)},t[86]=n,t[87]=Ee);let De=Ee,Oe;t[88]===n?Oe=t[89]:(Oe=e=>{let t=n.current;t&&t.connected&&t.control.requestTakeover(e)},t[88]=n,t[89]=Oe);let ke=Oe,Ae;t[90]===n?Ae=t[91]:(Ae=(e,t,r)=>{let i=n.current;i&&i.connected&&i.control.respondTakeover(e,t,r)},t[90]=n,t[91]=Ae);let je=Ae,Me;return t[92]!==ce||t[93]!==W||t[94]!==A||t[95]!==I||t[96]!==E||t[97]!==be||t[98]!==P||t[99]!==me||t[100]!==ge||t[101]!==oe||t[102]!==ie||t[103]!==B||t[104]!==ve||t[105]!==De||t[106]!==ue||t[107]!==R||t[108]!==ke||t[109]!==je||t[110]!==O||t[111]!==M||t[112]!==we||t[113]!==Se||t[114]!==fe||t[115]!==U||t[116]!==ee||t[117]!==ne?(Me={createSession:E,resumeSession:O,closeSession:A,reopenSession:R,permanentlyDeleteSession:B,handleRenameSession:ie,revertSession:M,forkSession:P,compactSession:I,addToQueue:ce,removeFromQueue:ue,sendChatMessage:fe,handleAskResponse:me,handleInterruptSession:ge,updateSessionPreconfig:ee,updateSessionModel:U,updateSessionVariant:ne,handleNavigateBack:oe,refreshPermissions:ve,createSessionInWorkspace:be,revokePermission:Se,revokeAllPermissions:we,claimControl:W,releaseControl:De,requestTakeover:ke,respondTakeover:je},t[92]=ce,t[93]=W,t[94]=A,t[95]=I,t[96]=E,t[97]=be,t[98]=P,t[99]=me,t[100]=ge,t[101]=oe,t[102]=ie,t[103]=B,t[104]=ve,t[105]=De,t[106]=ue,t[107]=R,t[108]=ke,t[109]=je,t[110]=O,t[111]=M,t[112]=we,t[113]=Se,t[114]=fe,t[115]=U,t[116]=ee,t[117]=ne,t[118]=Me):Me=t[118],Me}var ya={chatFinish:`/assets/chat-finish-Kb8mnIhV.mp3`,chatPermission:`/assets/chat-permission-BltPnMpz.mp3`};function ba(){let e=(0,X.useRef)(null),t=(0,X.useRef)({}),n=(0,X.useRef)(!1),r=(0,X.useRef)(null),i=(0,X.useRef)(0),a=(0,X.useCallback)(async()=>{let n=e.current;return(!n||n.state===`closed`)&&(n=new AudioContext,e.current=n,t.current={}),n.state===`suspended`&&await n.resume(),n},[]),o=(0,X.useCallback)(async(e,n)=>{if(t.current[e])return t.current[e]??null;try{let r=await fetch(ya[e]);if(!r.ok)throw Error(`HTTP ${r.status}`);let i=await r.arrayBuffer(),a=await n.decodeAudioData(i);return t.current[e]=a,a}catch(t){return console.warn(`[useNotificationSound] Failed to load`,e,t),null}},[]),s=(0,X.useCallback)((e,t)=>{try{let n=t.createBufferSource();n.buffer=e,n.connect(t.destination),n.start(0)}catch(e){console.warn(`[useNotificationSound] Playback error`,e)}},[]),l=(0,X.useCallback)(async()=>{if(n.current)return;let e=await a();if(e.state!==`running`)return;let t=r.current;if(r.current=null,t){let n=await o(t,e);n&&s(n,e)}n.current=!0},[a,o,s]),u=(0,X.useCallback)(()=>{let e=()=>{document.removeEventListener(`click`,e),document.removeEventListener(`keydown`,e),document.removeEventListener(`touchstart`,e),l()};document.addEventListener(`click`,e),document.addEventListener(`keydown`,e),document.addEventListener(`touchstart`,e)},[l]),d=(0,X.useCallback)(async e=>{if(n.current){let t=await a();if(t.state!==`running`)return;let n=await o(e,t);n&&s(n,t);return}r.current=e,u()},[a,o,s,u]),f=(0,X.useCallback)(async e=>{if(c()){let t=Date.now();if(t>i.current)try{await window.__JEAN2_ELECTRON__?.playSound(e),i.current=t+1e3;return}catch(e){console.warn(`[useNotificationSound] Electron native playback failed, falling back to Web Audio`,e)}await d(e);return}await d(e)},[d]),p=(0,X.useCallback)(()=>{f(`chatFinish`)},[f]),m=(0,X.useCallback)(()=>{f(`chatPermission`)},[f]);return(0,X.useEffect)(()=>()=>{let t=e.current;t&&t.state!==`closed`&&t.close(),e.current=null},[]),{playChatFinishSound:p,playPermissionSound:m,playSound:f}}var xa=[`none`,`low`,`medium`,`high`,`critical`];function Sa(e,t){return xa.indexOf(e)<=xa.indexOf(t)}function Ca(){return e=>{let t=e.ask;if(!(`target`in t&&t.target===`permission`||t.type===`permission`))return;let n=He.getState().getAutoApproveMaxSeverity(e.sessionId);if(n===`off`)return;let r=n??`low`,i=`risk`in t?t.risk:void 0;if(!(!i||!Sa(i,r)))return{type:`permission`,grant:(`allowedScopes`in t?t.allowedScopes??[`once`,`session`,`workspace`]:[`once`,`session`,`workspace`]).includes(`session`)?`session`:`once`}}}function wa(){let e=(0,Q.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],(0,X.useEffect)(Ta,t)}function Ta(){let e=Ca();return Ne.getState().registerHandler(`permission`,e),()=>{Ne.getState().unregisterHandler(`permission`,e)}}function Ea({serverId:e,activeServer:t,navigate:n,removeFromQuickConnectionsByWorkspace:r,quickConnections:i}){let a=(0,X.useRef)(null),o=(0,X.useRef)(null),s=(0,X.useRef)([]),c=(0,X.useRef)({}),l=(0,X.useRef)(new Map),d=(0,X.useRef)(0),f=(0,X.useRef)(new Set),p=(0,X.useRef)(new Map),m=(0,X.useRef)(new Map),_=(0,X.useRef)(null),v=(0,X.useRef)(0),y=(0,X.useRef)(null),b=(0,X.useRef)(new Set),x=(0,X.useRef)(!1),S=(0,X.useRef)(null),{sessions:C,setSessions:w}=je(si(e=>({sessions:e.sessions,setSessions:e.setSessions}))),{setCurrentSession:T}=je(si(e=>({setCurrentSession:e.setCurrentSession}))),{setMessagesBySession:E,setPartsBySession:D}=je(si(e=>({setMessagesBySession:e.setMessagesBySession,setPartsBySession:e.setPartsBySession}))),O=u({from:`/server/$serverId`,strict:!1})?.sessionId,k=mn({select:e=>e.location.pathname}).includes(`/overview`)?`/overview`:`/workspace`,A=(0,X.useMemo)(()=>O?C.find(e=>e.id===O)??null:null,[O,C]),j=O!=null&&A==null;(0,X.useEffect)(()=>{let e=je.getState().currentSession;A?.id!==e?.id&&T(A)},[A,T]);let N=A?.id,P=je(si(e=>N&&e.messagesBySession[N]||[])),F=je(si(e=>N&&e.partsBySession[N]||{}));(0,X.useLayoutEffect)(()=>{c.current=je.getState().messagesBySession});let{streamingSessionIds:I,interruptedSessions:L,addStreamingSession:R,removeStreamingSession:z,addInterruptedSession:B,removeInterruptedSession:V}=J(si(e=>({streamingSessionIds:e.streamingSessionIds,interruptedSessions:e.interruptedSessions,addStreamingSession:e.addStreamingSession,removeStreamingSession:e.removeStreamingSession,addInterruptedSession:e.addInterruptedSession,removeInterruptedSession:e.removeInterruptedSession}))),{sessionUsage:ee,currentModel:H,selectedVariant:U,setSessionUsage:te,setCurrentModel:ne,setSelectedVariant:re}=je(si(e=>({sessionUsage:e.sessionUsage,currentModel:e.currentModel,selectedVariant:e.selectedVariant,setSessionUsage:e.setSessionUsage,setCurrentModel:e.setCurrentModel,setSelectedVariant:e.setSelectedVariant}))),{workspaces:ie,preconfigs:ae,prompts:oe,models:se,defaultModel:ce}=G(si(e=>({workspaces:e.workspaces,preconfigs:e.preconfigs,prompts:e.prompts,models:e.models,defaultModel:e.defaultModel}))),le=G(e=>e.activeWorkspace),ue=se,de=ce;(0,X.useEffect)(()=>{let e=ue.find(e=>e.id===H)?.variants;U&&e&&!e[U]&&re(null)},[H,U,ue,re]);let{setCompletion:fe,clearCompletion:pe,clearAllCompletions:me}=g(si(e=>({setCompletion:e.setCompletion,clearCompletion:e.clearCompletion,clearAllCompletions:e.clearAllCompletions}))),{chatFinishSoundEnabled:he,permissionSoundEnabled:ge}=He(si(e=>({chatFinishSoundEnabled:e.chatFinishSoundEnabled,permissionSoundEnabled:e.permissionSoundEnabled}))),_e=(0,X.useRef)(ge);(0,X.useLayoutEffect)(()=>{_e.current=ge},[ge]);let ve=(0,X.useRef)(he);(0,X.useLayoutEffect)(()=>{ve.current=he},[he]);let[ye,be]=(0,X.useState)([]),[xe,Se]=(0,X.useState)([]),{pendingRequests:Ce,addPendingRequest:we,removePendingRequest:Te,removePendingPermissionRequest:W,replacePendingPermissionRequests:Ee,clearPendingRequests:Oe,clearPendingRequestsBySessionId:ke}=Ne(si(e=>({pendingRequests:e.pendingRequests,addPendingRequest:e.addPendingRequest,removePendingRequest:e.removePendingRequest,removePendingPermissionRequest:e.removePendingPermissionRequest,replacePendingPermissionRequests:e.replacePendingPermissionRequests,clearPendingRequests:e.clearPendingRequests,clearPendingRequestsBySessionId:e.clearPendingRequestsBySessionId}))),{queuedMessages:Ae,clearQueuedMessages:Me,setQueuedMessagesForSession:Pe,addQueuedMessage:Fe,removeQueuedMessageById:Ie}=je(si(e=>({queuedMessages:e.queuedMessages,clearQueuedMessages:e.clearQueuedMessages,setQueuedMessagesForSession:e.setQueuedMessagesForSession,addQueuedMessage:e.addQueuedMessage,removeQueuedMessageById:e.removeQueuedMessageById}))),Le=J(e=>e.authError),Re=J(e=>e.connectionTimedOut),ze=J(e=>e.retryCount),Be=J(e=>e.nextRetryIn),Ve=J(e=>e.connected),K=A?.compacting??!1,{compactionSuccess:Ue,setCompactionSuccess:We}=je(si(e=>({compactionSuccess:e.compactionSuccess,setCompactionSuccess:e.setCompactionSuccess}))),{playChatFinishSound:Ge,playPermissionSound:Ke}=ba();wa();let qe=(0,X.useCallback)(()=>{if(_.current!==null&&(cancelAnimationFrame(_.current),_.current=null),y.current!==null&&(clearTimeout(y.current),y.current=null),m.current.size===0)return;let e=new Map(m.current);m.current.clear(),v.current=Date.now(),D(t=>{let n={...t},r=!1;for(let[t,i]of e){let e=p.current.get(t);if(!e)continue;let a=n[e.sessionId];if(!a)continue;let o=a[e.messageId];if(!o)continue;let s=o[e.index];if(!s||s.type!==`text`&&s.type!==`reasoning`)continue;r=!0;let c=[...o];c[e.index]={...s,text:s.text+i},n[e.sessionId]={...a,[e.messageId]:c}}return r?n:t})},[D]);(0,X.useLayoutEffect)(()=>{let e=je.getState().getMessagesBySessionKeysCount();if(e<=d.current){d.current=e;return}if(d.current=e,e<=1)return;let t=c.current,n=Object.keys(t);for(;n.length>1;){let e=null,t=1/0;for(let r of n){if(r===A?.id)continue;let n=l.current.get(r);n!==void 0&&n<t&&(t=n,e=r)}if(!e)break;l.current.delete(e);for(let[t,n]of p.current)n.sessionId===e&&p.current.delete(t);n.splice(n.indexOf(e),1),E(t=>{if(!(e in t))return t;let n={...t};return delete n[e],n}),D(t=>{if(!(e in t))return t;let n={...t};return delete n[e],n})}},[A,E,D]);let Je=t?.token??null,Ye=t?.url??null,Xe=a.current;(0,X.useLayoutEffect)(()=>{o.current=A?.id??null},[A]);let Ze=(0,X.useRef)(new Set);(0,X.useEffect)(()=>{O&&A&&Ve&&a.current&&!Ze.current.has(O)&&(N&&je.getState().messagesBySession[N]?.length||(Ze.current.add(O),a.current.sessions.resume(O)))},[O,A,Ve,N]),(0,X.useEffect)(()=>{f.current.clear()},[A?.id]),(0,X.useLayoutEffect)(()=>{s.current=C},[C]);let Qe=(0,X.useCallback)(e=>e===N?P.map(e=>({message:e,parts:(F[e.id]||[]).sort((e,t)=>e.createdAt-t.createdAt)})):[],[N,P,F]),{removeServer:$e}=De(),et=(0,X.useCallback)(()=>{t&&($e(t.id),n({to:`/`})),a.current?.dispose(),J.getState().resetConnection()},[t,$e,n,a]),{retry:tt}=sa({apiToken:Je,serverUrl:Ye,currentSessionIdRef:o,handlerContextRef:S,handleLogout:et,clientRef:a}),nt=(0,X.useCallback)(()=>{tt()},[tt]),rt=async(t,r,i)=>{let o=a.current?.httpClient;if(!o)return;let s=(await o.post(`/workspaces`,{name:t,path:r,isVirtual:i})).workspace;return G.getState().setWorkspaces([...G.getState().workspaces,s]),G.getState().setActiveWorkspace(s),localStorage.setItem(`activeWorkspaceId`,s.id),T(null),M.invalidateQueries({queryKey:h.sessions.all}),n({to:`/server/$serverId/workspace`,params:{serverId:e}}),s},it=(0,X.useCallback)(t=>{G.getState().setActiveWorkspace(t),localStorage.setItem(`activeWorkspaceId`,t.id),T(null),n({to:`/server/$serverId/workspace`,params:{serverId:e}})},[T,n,e]),at=async t=>{let i=a.current?.httpClient;if(!i)return;let o=[];try{o=(await i.delete(`/workspaces/${t}`)).deletedSessions}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`Failed to delete workspace:`,t);return}r(t),A&&(A.workspaceId===t||o.includes(A.id))&&(T(null),n({to:`/server/$serverId/workspace`,params:{serverId:e}})),w(e=>e.filter(e=>!o.includes(e.id))),E(e=>{let t={...e};return o.forEach(e=>delete t[e]),t}),D(e=>{let t={...e};return o.forEach(e=>delete t[e]),t}),o.forEach(e=>l.current.delete(e));for(let[e,t]of p.current)o.includes(t.sessionId)&&p.current.delete(e);let s=G.getState().workspaces;if(G.getState().setWorkspaces(s.filter(e=>e.id!==t)),G.getState().activeWorkspace?.id===t){let e=s.filter(e=>e.id!==t)[0]||null;G.getState().setActiveWorkspace(e),e?localStorage.setItem(`activeWorkspaceId`,e.id):localStorage.removeItem(`activeWorkspaceId`)}M.invalidateQueries({queryKey:h.sessions.all})},ot=async(e,t)=>{let n=a.current?.httpClient;if(n)try{let r=(await n.patch(`/workspaces/${e}`,{name:t})).workspace,i=G.getState().workspaces;G.getState().setWorkspaces(i.map(t=>t.id===e?r:t)),G.getState().activeWorkspace?.id===e&&G.getState().setActiveWorkspace(r),M.invalidateQueries({queryKey:h.sessions.all})}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`Failed to rename workspace:`,t)}},q=async()=>{await rt(`Workspace ${ie.length+1}`,`~/.jean2/workspaces/${crypto.randomUUID()}`,!0)},st=async e=>{await rt(e.split(`/`).pop()||e.split(`\\`).pop()||`Workspace`,e,!1)};(0,X.useLayoutEffect)(()=>{S.current={setSessions:w,setCurrentSession:T,setMessagesBySession:E,setPartsBySession:D,setSessionUsage:te,setCurrentModel:ne,setSelectedVariant:re,addStreamingSession:R,removeStreamingSession:z,addInterruptedSession:B,removeInterruptedSession:V,setQueuedMessagesForSession:Pe,addQueuedMessage:Fe,removeQueuedMessageById:Ie,clearQueuedMessages:Me,setCompactionSuccess:We,setCompletion:fe,clearCompletion:pe,clearAllCompletions:me,pendingSessionCreateRef:x,sessionAccessTimesRef:l,partIdIndexRef:p,partAppendRafRef:_,pendingPartAppendsRef:m,lastPartAppendFlushAtRef:v,partAppendTimeoutRef:y,skipFinishSoundSessionIdsRef:b,currentSessionIdRef:o,models:G.getState().models,defaultModel:G.getState().defaultModel,interruptedSessions:L,sessionsRef:s,flushPendingPartAppends:qe,setProviderStatuses:Se,setPermissions:be,notifiedToolCallIdsRef:f,permissionSoundEnabledRef:_e,playPermissionSound:Ke,chatFinishSoundEnabledRef:ve,playChatFinishSound:Ge,navigateToSession:t=>{n({to:`/server/$serverId${k}/session/$sessionId`,params:{serverId:e,sessionId:t}})},navigateToParent:()=>{n({to:`/server/$serverId${k}`,params:{serverId:e}})},serverId:e,addPendingAskRequest:we,removePendingAskRequest:Te,removePendingPermissionRequest:W,replacePendingPermissionRequests:Ee,clearPendingAskRequests:Oe,clearPendingAskRequestsBySessionId:ke,runAskHandlers:(e,t)=>{let n=Ne.getState().getHandlers(e);if(n.length!==0)return(async()=>{for(let e of n)try{let n=await e(t);if(n!==void 0)return n}catch{continue}})()},sendAskResponse:(e,t,n)=>{let r=a.current;n?W(n,e):Te(e),r&&r.connected&&r.send({type:`ask.response`,toolCallId:e,response:t,requestId:n})},resumeSessionAfterCreate:e=>{let t=a.current;t&&t.connected&&t.sessions.resume(e)}}});let ct=ae.filter(e=>e.mode!==`subagent`),{createSession:lt,resumeSession:ut,closeSession:dt,reopenSession:ft,permanentlyDeleteSession:pt,handleRenameSession:mt,revertSession:ht,forkSession:gt,compactSession:_t,removeFromQueue:vt,sendChatMessage:yt,handleAskResponse:bt,handleInterruptSession:xt,updateSessionPreconfig:St,updateSessionModel:Ct,updateSessionVariant:wt,handleNavigateBack:Tt,refreshPermissions:Et,createSessionInWorkspace:Dt,revokePermission:Ot,revokeAllPermissions:kt,claimControl:At,releaseControl:jt,requestTakeover:Mt,respondTakeover:Nt}=va({clientRef:a,currentSession:A,sessions:C,workspaces:ie,activeWorkspace:le,currentModel:H,streamingSessionIds:I,isCompacting:K,primaryPreconfigs:ct,setActiveWorkspace:e=>G.getState().setActiveWorkspace(e),setCompactionSuccess:We,setCurrentModel:ne,setSelectedVariant:re,removePendingAskRequest:Te,removePendingPermissionRequest:W,clearPendingAskRequestsBySessionId:ke,clearStreamingSessions:J.getState().clearStreamingSessions,pendingSessionCreateRef:x,partAppendRafRef:_,pendingPartAppendsRef:m,skipFinishSoundSessionIdsRef:b,navigate:n,serverId:e,viewPath:k}),Pt=C.filter(e=>e.workspaceId===le?.id),Ft=i.filter(e=>e.serverId===t?.id&&e.workspaceId).map(e=>e.workspaceId);return{connected:Ve,authError:Le,connectionTimedOut:Re,retryCount:ze,nextRetryIn:Be,serverUrl:Ye,apiToken:Je,sdkClient:Xe,currentSession:A,sessions:C,workspaceSessions:Pt,messagesWithParts:A?Qe(A.id):[],pendingAskRequests:Ce,queuedMessages:Ae,sessionUsage:ee,currentModel:H,selectedVariant:U,isCompacting:K,compactionSuccess:Ue,isPrimarySession:!A?.parentId,isSessionLoading:j,workspaces:ie,activeWorkspace:le,preconfigs:ae,primaryPreconfigs:ct,prompts:oe,models:ue,defaultModel:de,streamingSessionIds:I,createSession:lt,resumeSession:ut,closeSession:dt,reopenSession:ft,permanentlyDeleteSession:pt,handleRenameSession:mt,revertSession:ht,forkSession:gt,compactSession:_t,removeFromQueue:vt,sendChatMessage:yt,handleAskResponse:bt,handleInterruptSession:xt,updateSessionPreconfig:St,updateSessionModel:Ct,updateSessionVariant:wt,handleNavigateBack:Tt,refreshPermissions:Et,createSessionInWorkspace:Dt,revokePermission:Ot,revokeAllPermissions:kt,claimControl:At,releaseControl:jt,requestTakeover:Mt,respondTakeover:Nt,selectWorkspace:it,renameWorkspace:ot,handleCreateVirtualWorkspace:q,handleCreatePhysicalWorkspace:st,deleteWorkspace:at,handleLogout:et,handleRetry:nt,favoritedWorkspaceIds:Ft,setCompactionSuccess:We,permissions:ye}}function Da(e){let t=(0,Q.c)(65),{compact:n}=e,[r,i]=(0,X.useState)(!1),a=Ae(),{servers:o}=De(),s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(s={from:`/server/$serverId`},t[0]=s):s=t[0];let c=u(s).serverId??null,l;t[1]===a?l=t[2]:(l=e=>{a({to:`/server/$serverId`,params:{serverId:e}}),i(!1)},t[1]=a,t[2]=l);let d=l,f;t[3]===a?f=t[4]:(f=()=>{a({to:`/add-server`}),i(!1)},t[3]=a,t[4]=f);let p=f,m;t[5]===a?m=t[6]:(m=()=>{a({to:`/`}),i(!1)},t[5]=a,t[6]=m);let h=m,g;if(t[7]!==c||t[8]!==d||t[9]!==o){let e;t[11]!==c||t[12]!==d?(e=e=>(0,Z.jsxs)(_t,{onSelect:()=>d(e.id),className:`justify-between`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(Zt,{className:`size-4 text-muted-foreground`}),(0,Z.jsx)(`span`,{children:e.name})]}),(0,Z.jsx)(Le,{className:nn(`size-4`,c===e.id?`opacity-100`:`opacity-0`)})]},e.id),t[11]=c,t[12]=d,t[13]=e):e=t[13],g=o.map(e),t[7]=c,t[8]=d,t[9]=o,t[10]=g}else g=t[10];let _;t[14]===g?_=t[15]:(_=(0,Z.jsx)(xt,{heading:`Servers`,children:g}),t[14]=g,t[15]=_);let v;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,Z.jsx)(mt,{}),t[16]=v):v=t[16];let y;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,Z.jsx)(Ln,{className:`size-4`,"data-icon":`inline-start`}),t[17]=y):y=t[17];let b;t[18]===h?b=t[19]:(b=(0,Z.jsxs)(_t,{onSelect:h,children:[y,`Server Selection`]}),t[18]=h,t[19]=b);let x;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,Z.jsx)(Jt,{className:`size-4`,"data-icon":`inline-start`}),t[20]=x):x=t[20];let S;t[21]===p?S=t[22]:(S=(0,Z.jsxs)(_t,{onSelect:p,children:[x,`Add Server...`]}),t[21]=p,t[22]=S);let C;t[23]!==S||t[24]!==b?(C=(0,Z.jsxs)(xt,{children:[b,S]}),t[23]=S,t[24]=b,t[25]=C):C=t[25];let w;t[26]!==C||t[27]!==_?(w=(0,Z.jsxs)(Z.Fragment,{children:[_,v,C]}),t[26]=C,t[27]=_,t[28]=w):w=t[28];let T=w;if(n){let e;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(Zt,{className:`size-4 flex-shrink-0 text-muted-foreground`}),t[29]=e):e=t[29];let n;t[30]!==c||t[31]!==o?(n=o.find(e=>e.id===c)?.name||`Select server`,t[30]=c,t[31]=o,t[32]=n):n=t[32];let a;t[33]===n?a=t[34]:(a=(0,Z.jsx)(`span`,{className:`truncate`,children:n}),t[33]=n,t[34]=a);let s;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,Z.jsx)(vt,{className:`size-3 shrink-0 opacity-50`}),t[35]=s):s=t[35];let l;t[36]!==r||t[37]!==a?(l=(0,Z.jsx)(gt,{asChild:!0,children:(0,Z.jsxs)(Y,{variant:`ghost`,size:`sm`,role:`combobox`,"aria-expanded":r,"aria-label":`Select server`,className:`gap-1.5 px-2 h-8 font-semibold hover:bg-accent`,children:[e,a,s]})}),t[36]=r,t[37]=a,t[38]=l):l=t[38];let u;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,Z.jsx)(pt,{placeholder:`Search server...`}),t[39]=u):u=t[39];let d;t[40]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,Z.jsx)(yt,{children:`No server found.`}),t[40]=d):d=t[40];let f;t[41]===T?f=t[42]:(f=(0,Z.jsx)(bt,{className:`w-[240px] p-0 max-h-[80vh]`,children:(0,Z.jsxs)(ft,{children:[u,(0,Z.jsxs)(Ct,{className:`max-h-[50vh] overflow-y-auto`,children:[d,T]})]})}),t[41]=T,t[42]=f);let p;return t[43]!==r||t[44]!==l||t[45]!==f?(p=(0,Z.jsxs)(St,{open:r,onOpenChange:i,children:[l,f]}),t[43]=r,t[44]=l,t[45]=f,t[46]=p):p=t[46],p}let E;t[47]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,Z.jsx)(Zt,{className:`size-4 flex-shrink-0 text-muted-foreground`}),t[47]=E):E=t[47];let D;t[48]!==c||t[49]!==o?(D=o.find(e=>e.id===c)?.name||`Select server`,t[48]=c,t[49]=o,t[50]=D):D=t[50];let O;t[51]===D?O=t[52]:(O=(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 overflow-hidden`,children:[E,(0,Z.jsx)(`span`,{className:`truncate`,children:D})]}),t[51]=D,t[52]=O);let k;t[53]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,Z.jsx)(vt,{className:`ml-auto size-4 shrink-0 opacity-50`}),t[53]=k):k=t[53];let A;t[54]!==r||t[55]!==O?(A=(0,Z.jsx)(gt,{asChild:!0,children:(0,Z.jsxs)(Y,{variant:`outline`,role:`combobox`,"aria-expanded":r,"aria-label":`Select server`,className:`w-full justify-between h-9`,children:[O,k]})}),t[54]=r,t[55]=O,t[56]=A):A=t[56];let j;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(j=(0,Z.jsx)(pt,{placeholder:`Search server...`}),t[57]=j):j=t[57];let M;t[58]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,Z.jsx)(yt,{children:`No server found.`}),t[58]=M):M=t[58];let N;t[59]===T?N=t[60]:(N=(0,Z.jsx)(bt,{className:`w-[240px] p-0 max-h-[80vh]`,children:(0,Z.jsxs)(ft,{children:[j,(0,Z.jsxs)(Ct,{className:`max-h-[50vh] overflow-y-auto`,children:[M,T]})]})}),t[59]=T,t[60]=N);let P;return t[61]!==r||t[62]!==A||t[63]!==N?(P=(0,Z.jsxs)(St,{open:r,onOpenChange:i,children:[A,N]}),t[61]=r,t[62]=A,t[63]=N,t[64]=P):P=t[64],P}function Oa(){let e=(0,Q.c)(129),t=ke(),n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n={from:`/server/$serverId`,strict:!1},e[0]=n):n=e[0];let r=u(n),i=J(Ma),a=He(ja),o=He(Aa),s=He(ka),d=hn(),f;e[1]===d.pathname?f=e[2]:(f=d.pathname.includes(`/overview`),e[1]=d.pathname,e[2]=f);let p=f,m;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(m=c()&&(0,Z.jsx)(`div`,{className:`block md:hidden h-[30px] shrink-0 z-40`,style:{WebkitAppRegion:`drag`}}),e[3]=m):m=e[3];let h;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(h={paddingTop:`calc(0.75rem + env(safe-area-inset-top, 0px))`},e[4]=h):h=e[4];let g;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,Z.jsx)(Da,{compact:!0}),e[5]=g):g=e[5];let _=i?`Connected`:`Disconnected`,v=`size-2 rounded-full ${i?`bg-success`:`bg-destructive`}`,y;e[6]===v?y=e[7]:(y=(0,Z.jsx)(`span`,{className:v}),e[6]=v,e[7]=y);let b;e[8]!==_||e[9]!==y?(b=(0,Z.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,Z.jsxs)(`div`,{className:`flex items-center gap-1`,children:[g,(0,Z.jsx)(`button`,{className:`flex items-center justify-center size-5 rounded-md hover:bg-accent transition-colors`,title:_,children:y})]})}),e[8]=_,e[9]=y,e[10]=b):b=e[10];let x;e[11]===p?x=e[12]:(x=(0,Z.jsx)(Qe,{asChild:!0,children:(0,Z.jsx)(Ye,{asChild:!0,children:(0,Z.jsx)(Y,{variant:`ghost`,size:`icon-sm`,children:p?(0,Z.jsx)(Bn,{className:`w-4 h-4`}):(0,Z.jsx)(Vn,{className:`w-4 h-4`})})})}),e[11]=p,e[12]=x);let S;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,Z.jsx)(rt,{children:`View`}),e[13]=S):S=e[13];let C;e[14]===x?C=e[15]:(C=(0,Z.jsxs)(Xe,{children:[x,S]}),e[14]=x,e[15]=C);let T;e[16]!==r.serverId||e[17]!==t?(T=()=>t.navigate({to:`/server/$serverId/workspace`,params:{serverId:r.serverId}}),e[16]=r.serverId,e[17]=t,e[18]=T):T=e[18];let E;e[19]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,Z.jsx)(`span`,{className:`flex-1`,children:`Single workspace`}),e[19]=E):E=e[19];let D;e[20]===p?D=e[21]:(D=!p&&(0,Z.jsx)(Le,{className:`size-4`}),e[20]=p,e[21]=D);let O;e[22]!==T||e[23]!==D?(O=(0,Z.jsxs)(Je,{onClick:T,children:[E,D]}),e[22]=T,e[23]=D,e[24]=O):O=e[24];let k;e[25]!==r.serverId||e[26]!==t?(k=()=>t.navigate({to:`/server/$serverId/overview`,params:{serverId:r.serverId}}),e[25]=r.serverId,e[26]=t,e[27]=k):k=e[27];let A;e[28]===Symbol.for(`react.memo_cache_sentinel`)?(A=(0,Z.jsx)(`span`,{className:`flex-1`,children:`Overview`}),e[28]=A):A=e[28];let j;e[29]===p?j=e[30]:(j=p&&(0,Z.jsx)(Le,{className:`size-4`}),e[29]=p,e[30]=j);let M;e[31]!==k||e[32]!==j?(M=(0,Z.jsxs)(Je,{onClick:k,children:[A,j]}),e[31]=k,e[32]=j,e[33]=M):M=e[33];let N;e[34]!==O||e[35]!==M?(N=(0,Z.jsxs)(ot,{align:`end`,className:`w-48 min-w-48`,children:[O,M]}),e[34]=O,e[35]=M,e[36]=N):N=e[36];let P;e[37]!==C||e[38]!==N?(P=(0,Z.jsxs)(Ke,{children:[C,N]}),e[37]=C,e[38]=N,e[39]=P):P=e[39];let F;e[40]===Symbol.for(`react.memo_cache_sentinel`)?(F=(0,Z.jsxs)(Xe,{children:[(0,Z.jsx)(Qe,{asChild:!0,children:(0,Z.jsx)(Ye,{asChild:!0,children:(0,Z.jsx)(Y,{variant:`ghost`,size:`icon-sm`,children:(0,Z.jsx)(w,{className:`w-4 h-4`})})})}),(0,Z.jsx)(rt,{children:`More`})]}),e[40]=F):F=e[40];let I;e[41]===o?I=e[42]:(I=()=>o(!0),e[41]=o,e[42]=I);let L;e[43]===Symbol.for(`react.memo_cache_sentinel`)?(L=(0,Z.jsx)(qn,{className:`mr-2 h-4 w-4`}),e[43]=L):L=e[43];let R;e[44]===I?R=e[45]:(R=(0,Z.jsxs)(Je,{onClick:I,children:[L,`Configuration`]}),e[44]=I,e[45]=R);let z;e[46]===s?z=e[47]:(z=()=>s(!0),e[46]=s,e[47]=z);let B;e[48]===Symbol.for(`react.memo_cache_sentinel`)?(B=(0,Z.jsx)(Ht,{className:`mr-2 h-4 w-4`}),e[48]=B):B=e[48];let V;e[49]===z?V=e[50]:(V=(0,Z.jsxs)(Je,{onClick:z,children:[B,`Tools`]}),e[49]=z,e[50]=V);let ee;e[51]===Symbol.for(`react.memo_cache_sentinel`)?(ee=(0,Z.jsx)(st,{}),e[51]=ee):ee=e[51];let H;e[52]===a?H=e[53]:(H=()=>a(!0),e[52]=a,e[53]=H);let U;e[54]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,Z.jsx)(It,{className:`mr-2 h-4 w-4`}),e[54]=U):U=e[54];let te;e[55]===H?te=e[56]:(te=(0,Z.jsxs)(Je,{onClick:H,children:[U,`Settings`]}),e[55]=H,e[56]=te);let ne;e[57]!==R||e[58]!==V||e[59]!==te?(ne=(0,Z.jsxs)(Ke,{children:[F,(0,Z.jsxs)(ot,{align:`end`,className:`w-48 min-w-48`,children:[R,V,ee,te]})]}),e[57]=R,e[58]=V,e[59]=te,e[60]=ne):ne=e[60];let re;e[61]!==P||e[62]!==ne?(re=(0,Z.jsx)(tt,{children:(0,Z.jsxs)(`div`,{className:`flex items-center gap-1`,children:[P,ne]})}),e[61]=P,e[62]=ne,e[63]=re):re=e[63];let ie;e[64]!==re||e[65]!==b?(ie=(0,Z.jsxs)(`header`,{className:`md:hidden flex items-center justify-between pl-3 pr-5 pt-2 sticky top-0 z-40 shrink-0`,style:h,children:[b,re]}),e[64]=re,e[65]=b,e[66]=ie):ie=e[66];let ae;e[67]===Symbol.for(`react.memo_cache_sentinel`)?(ae=c()&&(0,Z.jsx)(`div`,{className:`hidden md:block h-[30px] shrink-0`,style:{WebkitAppRegion:`drag`}}),e[67]=ae):ae=e[67];let oe;e[68]===Symbol.for(`react.memo_cache_sentinel`)?(oe=(0,Z.jsx)(Da,{compact:!0}),e[68]=oe):oe=e[68];let se=i?`Connected`:`Disconnected`,ce=`size-2 rounded-full ${i?`bg-success`:`bg-destructive`}`,le;e[69]===ce?le=e[70]:(le=(0,Z.jsx)(`span`,{className:ce}),e[69]=ce,e[70]=le);let ue;e[71]!==se||e[72]!==le?(ue=(0,Z.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,Z.jsxs)(`div`,{className:`flex items-center gap-1`,children:[oe,(0,Z.jsx)(`button`,{className:`flex items-center justify-center size-5 rounded-md hover:bg-accent transition-colors`,title:se,children:le})]})}),e[71]=se,e[72]=le,e[73]=ue):ue=e[73];let de;e[74]===Symbol.for(`react.memo_cache_sentinel`)?(de=c()?{WebkitAppRegion:`no-drag`}:void 0,e[74]=de):de=e[74];let fe;e[75]!==r.serverId||e[76]!==t?(fe=()=>t.navigate({to:`/server/$serverId/workspace`,params:{serverId:r.serverId}}),e[75]=r.serverId,e[76]=t,e[77]=fe):fe=e[77];let pe=p?``:`bg-sidebar-accent text-sidebar-accent-foreground`,me;e[78]===Symbol.for(`react.memo_cache_sentinel`)?(me=(0,Z.jsx)(Vn,{className:`h-4 w-4`}),e[78]=me):me=e[78];let he;e[79]!==fe||e[80]!==pe?(he=(0,Z.jsx)(Qe,{asChild:!0,children:(0,Z.jsx)(Y,{variant:`ghost`,size:`icon-sm`,onClick:fe,className:pe,children:me})}),e[79]=fe,e[80]=pe,e[81]=he):he=e[81];let ge;e[82]===Symbol.for(`react.memo_cache_sentinel`)?(ge=(0,Z.jsx)(rt,{side:l()?`bottom`:void 0,children:`Single workspace`}),e[82]=ge):ge=e[82];let _e;e[83]===he?_e=e[84]:(_e=(0,Z.jsxs)(Xe,{children:[he,ge]}),e[83]=he,e[84]=_e);let ve;e[85]!==r.serverId||e[86]!==t?(ve=()=>t.navigate({to:`/server/$serverId/overview`,params:{serverId:r.serverId}}),e[85]=r.serverId,e[86]=t,e[87]=ve):ve=e[87];let ye=p?`bg-sidebar-accent text-sidebar-accent-foreground`:``,be;e[88]===Symbol.for(`react.memo_cache_sentinel`)?(be=(0,Z.jsx)(Bn,{className:`h-4 w-4`}),e[88]=be):be=e[88];let xe;e[89]!==ve||e[90]!==ye?(xe=(0,Z.jsx)(Qe,{asChild:!0,children:(0,Z.jsx)(Y,{variant:`ghost`,size:`icon-sm`,onClick:ve,className:ye,children:be})}),e[89]=ve,e[90]=ye,e[91]=xe):xe=e[91];let Se;e[92]===Symbol.for(`react.memo_cache_sentinel`)?(Se=(0,Z.jsx)(rt,{side:l()?`bottom`:void 0,children:`Overview`}),e[92]=Se):Se=e[92];let Ce;e[93]===xe?Ce=e[94]:(Ce=(0,Z.jsxs)(Xe,{children:[xe,Se]}),e[93]=xe,e[94]=Ce);let we;e[95]!==_e||e[96]!==Ce?(we=(0,Z.jsxs)(Z.Fragment,{children:[_e,Ce]}),e[95]=_e,e[96]=Ce,e[97]=we):we=e[97];let Te;e[98]===Symbol.for(`react.memo_cache_sentinel`)?(Te=(0,Z.jsx)(Qe,{asChild:!0,children:(0,Z.jsx)(Ye,{asChild:!0,children:(0,Z.jsx)(Y,{variant:`ghost`,size:`icon-sm`,children:(0,Z.jsx)(w,{className:`w-4 h-4`})})})}),e[98]=Te):Te=e[98];let W;e[99]===Symbol.for(`react.memo_cache_sentinel`)?(W=(0,Z.jsxs)(Xe,{children:[Te,(0,Z.jsx)(rt,{side:l()?`bottom`:void 0,children:`More`})]}),e[99]=W):W=e[99];let Ee;e[100]===o?Ee=e[101]:(Ee=()=>o(!0),e[100]=o,e[101]=Ee);let De;e[102]===Symbol.for(`react.memo_cache_sentinel`)?(De=(0,Z.jsx)(qn,{className:`mr-2 h-4 w-4`}),e[102]=De):De=e[102];let Oe;e[103]===Ee?Oe=e[104]:(Oe=(0,Z.jsxs)(Je,{onClick:Ee,children:[De,`Configuration`]}),e[103]=Ee,e[104]=Oe);let Ae;e[105]===s?Ae=e[106]:(Ae=()=>s(!0),e[105]=s,e[106]=Ae);let je;e[107]===Symbol.for(`react.memo_cache_sentinel`)?(je=(0,Z.jsx)(Ht,{className:`mr-2 h-4 w-4`}),e[107]=je):je=e[107];let Me;e[108]===Ae?Me=e[109]:(Me=(0,Z.jsxs)(Je,{onClick:Ae,children:[je,`Tools`]}),e[108]=Ae,e[109]=Me);let Ne;e[110]===Symbol.for(`react.memo_cache_sentinel`)?(Ne=(0,Z.jsx)(st,{}),e[110]=Ne):Ne=e[110];let Pe;e[111]===a?Pe=e[112]:(Pe=()=>a(!0),e[111]=a,e[112]=Pe);let Fe;e[113]===Symbol.for(`react.memo_cache_sentinel`)?(Fe=(0,Z.jsx)(It,{className:`mr-2 h-4 w-4`}),e[113]=Fe):Fe=e[113];let Ie;e[114]===Pe?Ie=e[115]:(Ie=(0,Z.jsxs)(Je,{onClick:Pe,children:[Fe,`Settings`]}),e[114]=Pe,e[115]=Ie);let Re;e[116]!==Oe||e[117]!==Me||e[118]!==Ie?(Re=(0,Z.jsxs)(Ke,{children:[W,(0,Z.jsxs)(ot,{align:`end`,className:`w-48 min-w-48`,children:[Oe,Me,Ne,Ie]})]}),e[116]=Oe,e[117]=Me,e[118]=Ie,e[119]=Re):Re=e[119];let ze;e[120]!==we||e[121]!==Re?(ze=(0,Z.jsx)(tt,{children:(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,style:de,children:[we,Re]})}),e[120]=we,e[121]=Re,e[122]=ze):ze=e[122];let Be;e[123]!==ue||e[124]!==ze?(Be=(0,Z.jsxs)(`header`,{className:`hidden md:flex items-center justify-between pl-3 pr-5 pt-2 h-11 shrink-0`,children:[ue,ze]}),e[123]=ue,e[124]=ze,e[125]=Be):Be=e[125];let G;return e[126]!==ie||e[127]!==Be?(G=(0,Z.jsxs)(Z.Fragment,{children:[m,ie,ae,Be]}),e[126]=ie,e[127]=Be,e[128]=G):G=e[128],G}function ka(e){return e.setShowTools}function Aa(e){return e.setShowConfiguration}function ja(e){return e.setShowSettings}function Ma(e){return e.connected}var Na=400,Pa=typeof navigator<`u`&&navigator.platform?.toUpperCase().includes(`MAC`)===!0;function Fa(){for(let e of[`[data-slot="dialog-overlay"][data-state="open"]`,`[data-slot="dialog-content"][data-state="open"]`,`[role="dialog"][data-state="open"]`])if(document.querySelector(e))return!0;let e=document.querySelectorAll(`[role="dialog"]`);for(let t of e)if(t instanceof HTMLElement&&Ia(t))return!0;return!1}function Ia(e){if(!e.isConnected)return!1;let t=window.getComputedStyle(e);return t.display!==`none`&&t.visibility!==`hidden`&&parseFloat(t.opacity)>0&&e.getBoundingClientRect().width>0&&e.getBoundingClientRect().height>0}function La(){let e=document.activeElement;return e?!!(e.hasAttribute?.(`data-chat-input`)||e.closest?.(`[data-chat-input="true"]`)):!1}function Ra(e){let t=(0,Q.c)(5),n=(0,X.useRef)(e),r;t[0]===e?r=t[1]:(r=()=>{n.current=e},t[0]=e,t[1]=r),(0,X.useLayoutEffect)(r);let i;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(i={lastEscTime:0,armed:!1},t[2]=i):i=t[2];let a=(0,X.useRef)(i),o,s;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(o=()=>{let e=e=>{if(e.isComposing||e.repeat||e.key===`Escape`&&Fa())return;let{onCloseFocusedPanel:t,onFocusChatInput:r,onStopStreaming:i,onOpenSidebar:o,onOpenTerminal:s,onOpenFilesPanel:l,onNewWindow:u,onNewSession:d,onToggleViewMode:f,onToggleAutoFollow:p}=n.current;if(e.shiftKey&&e.key===`Escape`){e.preventDefault(),t();return}if(e.key===`Escape`&&!e.metaKey&&!e.ctrlKey){let t=La(),n=Date.now(),{lastEscTime:o,armed:s}=a.current,c=n-o;if(t&&s&&c<Na){e.preventDefault(),a.current={lastEscTime:0,armed:!1},i();return}if(t){a.current={lastEscTime:n,armed:!0};return}e.preventDefault(),r();return}let m=e.target,h=m.tagName===`INPUT`||m.tagName===`TEXTAREA`||m.isContentEditable,g=e.metaKey||e.ctrlKey;if(!(h&&!g)){if(!c()||!Pa){if(g&&e.code===`Digit1`){e.preventDefault(),o();return}if(g&&e.code===`KeyT`){e.preventDefault(),s();return}}if(g&&e.code===`Digit2`){e.preventDefault(),l();return}if(g&&e.shiftKey&&e.code===`KeyN`){e.preventDefault(),u();return}if(g&&e.code===`KeyN`){e.preventDefault(),d();return}if(g&&e.code===`KeyO`){e.preventDefault(),f();return}if(g&&e.shiftKey&&e.code===`KeyF`){e.preventDefault(),p();return}}};return window.addEventListener(`keydown`,e,!0),()=>window.removeEventListener(`keydown`,e,!0)},s=[],t[3]=o,t[4]=s):(o=t[3],s=t[4]),(0,X.useEffect)(o,s)}function za(e){let t=(0,Q.c)(40),{sidebarRef:n,terminalPanelRef:r,filesPanelRef:i,chatInputRef:a,activeWorkspace:o,primaryPreconfigs:s,handleInterruptSession:l,serverId:u,createSession:d,setSidebarOpen:f,onToggleAutoFollow:p}=e,m;t[0]!==f||t[1]!==n?(m=()=>{f(!0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{n.current?.focusSessionPanel()})})},t[0]=f,t[1]=n,t[2]=m):m=t[2];let h=m,g;t[3]===r?g=t[4]:(g=()=>{A.getState().setShowTerminalPanel(!0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{r.current?.focus()})})},t[3]=r,t[4]=g);let _=g,v=(0,X.useRef)(h),y;t[5]===h?y=t[6]:(y=()=>{v.current=h},t[5]=h,t[6]=y),(0,X.useLayoutEffect)(y);let b=(0,X.useRef)(_),x;t[7]===_?x=t[8]:(x=()=>{b.current=_},t[7]=_,t[8]=x),(0,X.useLayoutEffect)(x);let S=Va,C;t[9]===i?C=t[10]:(C=()=>{requestAnimationFrame(()=>{i.current?.focus()})},t[9]=i,t[10]=C);let w=C,T=(0,X.useRef)(w),E;t[11]===w?E=t[12]:(E=()=>{T.current=w},t[11]=w,t[12]=E),(0,X.useLayoutEffect)(E);let D;t[13]===a?D=t[14]:(D=()=>{a.current?.focus()},t[13]=a,t[14]=D);let O=D,k;t[15]!==o||t[16]!==d||t[17]!==s?(k=()=>{o&&s[0]&&d(s[0].id)},t[15]=o,t[16]=d,t[17]=s,t[18]=k):k=t[18];let j=k,M=Ba,N=ke(),P;t[19]!==N||t[20]!==u?(P=()=>{N.state.location.pathname.includes(`/overview`)?N.navigate({to:`/server/$serverId/workspace`,params:{serverId:u}}):N.navigate({to:`/server/$serverId/overview`,params:{serverId:u}})},t[19]=N,t[20]=u,t[21]=P):P=t[21];let F=P,I;t[22]===f?I=t[23]:(I=()=>{let e=document.activeElement;e?.closest(`[data-terminal-panel]`)?S():e?.closest(`[data-panel-id="files"]`)?A.getState().setShowFilesPanel(!1):e?.closest(`[data-sidebar="sidebar"]`)&&f(!1)},t[22]=f,t[23]=I);let L=I,R;t[24]===l?R=t[25]:(R=()=>{l()},t[24]=l,t[25]=R);let z=R,B,V,ee;t[26]===Symbol.for(`react.memo_cache_sentinel`)?(B=()=>v.current(),V=()=>b.current(),ee=()=>T.current(),t[26]=B,t[27]=V,t[28]=ee):(B=t[26],V=t[27],ee=t[28]);let H;t[29]===p?H=t[30]:(H=()=>p?.(),t[29]=p,t[30]=H);let U;t[31]!==O||t[32]!==L||t[33]!==j||t[34]!==z||t[35]!==F||t[36]!==H?(U={onOpenSidebar:B,onOpenTerminal:V,onOpenFilesPanel:ee,onNewSession:j,onNewWindow:M,onToggleViewMode:F,onCloseFocusedPanel:L,onFocusChatInput:O,onStopStreaming:z,onToggleAutoFollow:H},t[31]=O,t[32]=L,t[33]=j,t[34]=z,t[35]=F,t[36]=H,t[37]=U):U=t[37],Ra(U);let te,ne;t[38]===Symbol.for(`react.memo_cache_sentinel`)?(te=()=>{if(c())return window.__JEAN2_ELECTRON__?.onAccelerator(e=>{e===`open-sidebar`?v.current():e===`open-terminal`&&b.current()})},ne=[],t[38]=te,t[39]=ne):(te=t[38],ne=t[39]),(0,X.useLayoutEffect)(te,ne)}function Ba(){c()&&window.__JEAN2_ELECTRON__?.createWindow()}function Va(){A.getState().setShowTerminalPanel(!1)}function Ha(e){let t=(0,Q.c)(7),{setOpen:n}=S(),r=G(Ga),i=G(Wa),a;t[0]===i?a=t[1]:(a=i.filter(Ua),t[0]=i,t[1]=a);let o=a,s;return t[2]!==r||t[3]!==o||t[4]!==e||t[5]!==n?(s={...e,activeWorkspace:r,primaryPreconfigs:o,setSidebarOpen:n},t[2]=r,t[3]=o,t[4]=e,t[5]=n,t[6]=s):s=t[6],za(s),null}function Ua(e){return e.mode!==`subagent`}function Wa(e){return e.preconfigs}function Ga(e){return e.activeWorkspace}var Ka={".ts":{icon:Ut,color:`text-blue-500`},".tsx":{icon:Ut,color:`text-blue-500`},".js":{icon:Ut,color:`text-yellow-500`},".jsx":{icon:Ut,color:`text-yellow-500`},".json":{icon:Ut,color:`text-yellow-600`},".md":{icon:Ut,color:`text-gray-500`},".css":{icon:Ut,color:`text-purple-500`},".html":{icon:Ut,color:`text-orange-500`}};function qa(e){let t=(0,Q.c)(59),{entry:n,workspaceId:r,parentPath:i,depth:a,onFileSelect:o,showHidden:s,sdkClient:c}=e,l=s===void 0?!0:s,[u,d]=(0,X.useState)(!1),f=i?`${i}/${n.path}`:n.path,p=n.type===`directory`,h;t[0]===l?h=t[1]:(h={showHidden:l},t[0]=l,t[1]=h);let{data:g,isLoading:_,isFetched:v}=_e(c??null,r,f,h,p&&u),y;t[2]===g?.files?y=t[3]:(y=g?.files??[],t[2]=g?.files,t[3]=y);let b=y,x;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(x=e=>{document.activeElement?.focus(),d(e)},t[4]=x):x=t[4];let S=x,C;t[5]!==n||t[6]!==f||t[7]!==p||t[8]!==o?(C=e=>{e.currentTarget.focus(),!p&&o&&o({...n,path:f})},t[5]=n,t[6]=f,t[7]=p,t[8]=o,t[9]=C):C=t[9];let w=C,T;t[10]===w?T=t[11]:(T=e=>{e.key===`Enter`&&(e.preventDefault(),w(e))},t[10]=w,t[11]=T);let E=T,D=n.extension?Ka[n.extension]:null,O=p?u?m:We:D?.icon||Ut,k=p?`text-amber-500`:D?.color||`text-muted-foreground`;if(!p){let e;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(e=nn(`flex items-center gap-2 w-full min-w-0 overflow-hidden rounded-md p-2 text-left text-sm`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`focus:ring-1 focus:ring-inset ring-sidebar-ring outline-hidden`,`[&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate`),t[12]=e):e=t[12];let r=`${a*12+8}px`,i;t[13]===r?i=t[14]:(i={paddingLeft:r},t[13]=r,t[14]=i);let o;t[15]!==O||t[16]!==k?(o=(0,Z.jsx)(O,{className:k}),t[15]=O,t[16]=k,t[17]=o):o=t[17];let s;t[18]===n.name?s=t[19]:(s=(0,Z.jsx)(`div`,{className:`flex-1 min-w-0 truncate`,children:n.name}),t[18]=n.name,t[19]=s);let c;return t[20]!==w||t[21]!==E||t[22]!==o||t[23]!==s||t[24]!==i?(c=(0,Z.jsxs)(`button`,{"data-file-node":!0,"data-file-type":`file`,onClick:w,onKeyDown:E,className:e,style:i,children:[o,s]}),t[20]=w,t[21]=E,t[22]=o,t[23]=s,t[24]=i,t[25]=c):c=t[25],c}let A=u||void 0,j;t[26]===Symbol.for(`react.memo_cache_sentinel`)?(j=nn(`flex items-center gap-2 w-full min-w-0 overflow-hidden rounded-md p-2 text-left text-sm`,`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,`focus:ring-1 focus:ring-inset ring-sidebar-ring outline-hidden`,`[&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate`),t[26]=j):j=t[26];let M=`${a*12+8}px`,N;t[27]===M?N=t[28]:(N={paddingLeft:M},t[27]=M,t[28]=N);let P;t[29]!==v||t[30]!==_||t[31]!==u?(P=u&&_&&!v?(0,Z.jsx)(K,{className:`w-3 h-3 animate-spin shrink-0`}):(0,Z.jsx)(it,{className:nn(`w-3 h-3 shrink-0 transition-transform`,u&&`rotate-90`)}),t[29]=v,t[30]=_,t[31]=u,t[32]=P):P=t[32];let F;t[33]!==O||t[34]!==k?(F=(0,Z.jsx)(O,{className:k}),t[33]=O,t[34]=k,t[35]=F):F=t[35];let I;t[36]===n.name?I=t[37]:(I=(0,Z.jsx)(`div`,{className:`flex-1 min-w-0 truncate`,children:n.name}),t[36]=n.name,t[37]=I);let L;t[38]!==N||t[39]!==P||t[40]!==F||t[41]!==I||t[42]!==A?(L=(0,Z.jsx)($e,{asChild:!0,children:(0,Z.jsxs)(`button`,{"data-file-node":!0,"data-file-type":`directory`,"data-file-is-open":A,className:j,style:N,children:[P,F,I]})}),t[38]=N,t[39]=P,t[40]=F,t[41]=I,t[42]=A,t[43]=L):L=t[43];let R;t[44]!==b||t[45]!==a||t[46]!==f||t[47]!==u||t[48]!==o||t[49]!==c||t[50]!==l||t[51]!==r?(R=u&&b.map(e=>(0,Z.jsx)(qa,{entry:e,workspaceId:r,parentPath:f,depth:a+1,onFileSelect:o,showHidden:l,sdkClient:c},`${f}/${e.path}`)),t[44]=b,t[45]=a,t[46]=f,t[47]=u,t[48]=o,t[49]=c,t[50]=l,t[51]=r,t[52]=R):R=t[52];let z;t[53]===R?z=t[54]:(z=(0,Z.jsx)(at,{children:R}),t[53]=R,t[54]=z);let B;return t[55]!==u||t[56]!==L||t[57]!==z?(B=(0,Z.jsxs)(nt,{open:u,onOpenChange:S,children:[L,z]}),t[55]=u,t[56]=L,t[57]=z,t[58]=B):B=t[58],B}var Ja=(0,X.forwardRef)((e,t)=>{let n=(0,Q.c)(42),{workspaceId:r,sdkClient:i,onFileSelect:a,showHidden:o,width:s}=e,c=o===void 0?!0:o,l=(0,X.useRef)(null),u;n[0]===c?u=n[1]:(u={showHidden:c},n[0]=c,n[1]=u);let{data:d,isLoading:f,error:p,refetch:m}=_e(i,r,void 0,u),h;n[2]===d?.files?h=n[3]:(h=d?.files??[],n[2]=d?.files,n[3]=h);let g=h,_=d?.currentPath??``,v,y;n[4]===m?(v=n[5],y=n[6]):(v=()=>({refresh:()=>{m()},focus:()=>{let e=l.current;if(!e)return;let t=e.querySelector(`[data-file-node]`);t?t.focus():e.focus()}}),y=[m],n[4]=m,n[5]=v,n[6]=y),(0,X.useImperativeHandle)(t,v,y);let b;n[7]===Symbol.for(`react.memo_cache_sentinel`)?(b=e=>{let t=l.current;if(!t)return;let n=Array.from(t.querySelectorAll(`[data-file-node]`));if(n.length===0)return;let r=n.indexOf(document.activeElement);bb38:switch(e.key){case`ArrowDown`:e.preventDefault(),n[r<n.length-1?r+1:0]?.focus();break bb38;case`ArrowUp`:e.preventDefault(),n[r>0?r-1:n.length-1]?.focus();break bb38;case`ArrowRight`:{e.preventDefault();let t=document.activeElement;if(!t)break bb38;if(t.getAttribute(`data-file-type`)===`directory`)if(t.getAttribute(`data-file-is-open`)!==`true`)t.click();else{let e=r<n.length-1?r+1:-1;e>=0&&n[e]?.focus()}else{let e=r<n.length-1?r+1:-1;e>=0&&n[e]?.focus()}break bb38}case`ArrowLeft`:{e.preventDefault();let t=document.activeElement;if(!t)break bb38;if(t.getAttribute(`data-file-type`)===`directory`)if(t.getAttribute(`data-file-is-open`)===`true`)t.click();else{let e=r>0?r-1:-1;e>=0&&n[e]?.focus()}else{let e=r>0?r-1:-1;e>=0&&n[e]?.focus()}break bb38}case`Enter`:document.activeElement instanceof HTMLButtonElement&&document.activeElement.click();break bb38;case`Escape`:e.preventDefault(),document.activeElement?.blur()}},n[7]=b):b=n[7];let x=b;if(f){let e;return n[8]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(`div`,{className:`flex items-center justify-center h-32 text-muted-foreground`,children:[(0,Z.jsx)(K,{className:`w-4 h-4 animate-spin mr-2`}),`Loading files...`]}),n[8]=e):e=n[8],e}if(p){let e;n[9]===m?e=n[10]:(e=()=>m(),n[9]=m,n[10]=e);let t;n[11]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,Z.jsx)(sn,{className:`w-3 h-3`}),n[11]=t):t=n[11];let r;n[12]===e?r=n[13]:(r=(0,Z.jsx)(Y,{variant:`ghost`,size:`sm`,onClick:e,className:`ml-2`,children:t}),n[12]=e,n[13]=r);let i;return n[14]!==p.message||n[15]!==r?(i=(0,Z.jsxs)(`div`,{className:`p-4 text-sm text-destructive`,children:[p.message,r]}),n[14]=p.message,n[15]=r,n[16]=i):i=n[16],i}if(g.length===0){let e;n[17]===m?e=n[18]:(e=()=>m(),n[17]=m,n[18]=e);let t;n[19]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,Z.jsx)(sn,{className:`w-3 h-3`}),n[19]=t):t=n[19];let r;return n[20]===e?r=n[21]:(r=(0,Z.jsxs)(`div`,{className:`p-4 text-sm text-muted-foreground`,children:[`Empty workspace`,(0,Z.jsx)(Y,{variant:`ghost`,size:`sm`,onClick:e,className:`ml-2`,children:t})]}),n[20]=e,n[21]=r),r}let S;n[22]===s?S=n[23]:(S=s?{width:`${s-8}px`}:void 0,n[22]=s,n[23]=S);let C;if(n[24]!==_||n[25]!==g||n[26]!==a||n[27]!==i||n[28]!==c||n[29]!==r){let e;n[31]!==_||n[32]!==a||n[33]!==i||n[34]!==c||n[35]!==r?(e=e=>(0,Z.jsx)(qa,{entry:e,workspaceId:r,parentPath:_,depth:0,onFileSelect:a,showHidden:c,sdkClient:i},e.path),n[31]=_,n[32]=a,n[33]=i,n[34]=c,n[35]=r,n[36]=e):e=n[36],C=g.map(e),n[24]=_,n[25]=g,n[26]=a,n[27]=i,n[28]=c,n[29]=r,n[30]=C}else C=n[30];let w;n[37]===C?w=n[38]:(w=(0,Z.jsx)(`div`,{className:`space-y-0.5 min-w-0`,children:C}),n[37]=C,n[38]=w);let T;return n[39]!==S||n[40]!==w?(T=(0,Z.jsx)(`div`,{ref:l,tabIndex:-1,onKeyDown:x,className:`flex-1 min-h-0 min-w-0 w-full outline-none`,children:(0,Z.jsx)(V,{className:`h-full`,children:(0,Z.jsx)(`div`,{className:`px-2 pb-2 w-full min-w-0`,style:S,children:w})})}),n[39]=S,n[40]=w,n[41]=T):T=n[41],T});Ja.displayName=`FileTree`;var Ya=Dt.oneDark,Xa=Dt.oneLight;function Za(e){let t=(0,Q.c)(13),{content:n,language:r,showLineNumbers:a}=e,o=a===void 0?!0:a,{resolvedMode:s}=i(),c=s===`dark`,l=c?Ya:Xa,u;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(u=nn(`h-full overflow-auto chat-transcript-scrollbar`),t[0]=u):u=t[0];let d=l.plain.backgroundColor||(c?`#282c34`:`#fafafa`),f;t[1]===d?f=t[2]:(f={WebkitOverflowScrolling:`touch`,backgroundColor:d},t[1]=d,t[2]=f);let p=r||`plaintext`,m;t[3]===o?m=t[4]:(m=e=>{let{style:t,tokens:n,getLineProps:r,getTokenProps:i}=e;return(0,Z.jsx)(`pre`,{className:`text-sm p-4 min-h-full font-mono`,style:t,children:n.map((e,t)=>(0,Z.jsxs)(`div`,{...r({line:e}),className:`table-row`,children:[o&&(0,Z.jsx)(`span`,{className:`table-cell pr-4 text-right select-none opacity-50 text-xs w-12`,children:t+1}),(0,Z.jsx)(`span`,{className:`table-cell`,children:e.map((e,t)=>(0,Z.jsx)(`span`,{...i({token:e})},t))})]},t))})},t[3]=o,t[4]=m);let h;t[5]!==l||t[6]!==n||t[7]!==p||t[8]!==m?(h=(0,Z.jsx)(Pt,{theme:l,code:n,language:p,children:m}),t[5]=l,t[6]=n,t[7]=p,t[8]=m,t[9]=h):h=t[9];let g;return t[10]!==f||t[11]!==h?(g=(0,Z.jsx)(`div`,{className:u,style:f,children:h}),t[10]=f,t[11]=h,t[12]=g):g=t[12],g}function Qa(e){let t=(0,Q.c)(13),{icon:n,title:r,reason:i,name:a}=e,o;t[0]===n?o=t[1]:(o=(0,Z.jsx)(n,{className:`size-10 text-muted-foreground mb-4`}),t[0]=n,t[1]=o);let s;t[2]===r?s=t[3]:(s=(0,Z.jsx)(`p`,{className:`text-sm font-medium mb-1`,children:r}),t[2]=r,t[3]=s);let c;t[4]===i?c=t[5]:(c=(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground mb-2`,children:i}),t[4]=i,t[5]=c);let l;t[6]===a?l=t[7]:(l=(0,Z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a}),t[6]=a,t[7]=l);let u;return t[8]!==o||t[9]!==s||t[10]!==c||t[11]!==l?(u=(0,Z.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full text-center p-8`,children:[o,s,c,l]}),t[8]=o,t[9]=s,t[10]=c,t[11]=l,t[12]=u):u=t[12],u}function $a(e){let t=(0,Q.c)(20),{preview:n}=e;if(n.kind===`markdown`){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e={WebkitOverflowScrolling:`touch`},t[0]=e):e=t[0];let r;return t[1]===n.content?r=t[2]:(r=(0,Z.jsx)(`div`,{className:`h-full overflow-auto p-6 chat-transcript-scrollbar`,style:e,children:(0,Z.jsx)(zt,{children:n.content})}),t[1]=n.content,t[2]=r),r}if(n.kind===`code`){let e;return t[3]!==n.content||t[4]!==n.language||t[5]!==n.path?(e=(0,Z.jsx)(Za,{content:n.content,path:n.path,language:n.language,showLineNumbers:!0}),t[3]=n.content,t[4]=n.language,t[5]=n.path,t[6]=e):e=t[6],e}if(n.kind===`text`){let e;return t[7]!==n.content||t[8]!==n.language||t[9]!==n.path?(e=(0,Z.jsx)(Za,{content:n.content,path:n.path,language:n.language,showLineNumbers:!1}),t[7]=n.content,t[8]=n.language,t[9]=n.path,t[10]=e):e=t[10],e}if(n.kind===`binary`){let e;return t[11]!==n.name||t[12]!==n.reason?(e=(0,Z.jsx)(Qa,{icon:Fn,title:`Binary file`,reason:n.reason,name:n.name}),t[11]=n.name,t[12]=n.reason,t[13]=e):e=t[13],e}if(n.kind===`unsupported`){let e;return t[14]!==n.name||t[15]!==n.reason?(e=(0,Z.jsx)(Qa,{icon:Pn,title:`Unsupported file`,reason:n.reason,name:n.name}),t[14]=n.name,t[15]=n.reason,t[16]=e):e=t[16],e}if(n.kind===`too_large`){let e;return t[17]!==n.name||t[18]!==n.reason?(e=(0,Z.jsx)(Qa,{icon:Nn,title:`File too large`,reason:n.reason,name:n.name}),t[17]=n.name,t[18]=n.reason,t[19]=e):e=t[19],e}return null}var eo=(0,X.forwardRef)((e,t)=>{let n=(0,Q.c)(43),{sdkClient:r}=e,i=qe(),a=(0,X.useRef)(null),o=A(to),s=A(no),c=A(ro),l=G(io)?.id,u;n[0]===c?u=n[1]:(u=()=>{c(!0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{a.current?.focus()})})},n[0]=c,n[1]=u);let d=u,f,p;n[2]===d?(f=n[3],p=n[4]):(f=()=>({focus:d}),p=[d],n[2]=d,n[3]=f,n[4]=p),(0,X.useImperativeHandle)(t,f,p);let m=He(ao),h;n[5]!==m||n[6]!==l?(h=e=>{e.type===`file`&&l&&m({workspaceId:l,path:e.path,name:e.name})},n[5]=m,n[6]=l,n[7]=h):h=n[7];let g=h;if(!l)return null;if(i){let e;n[8]===c?e=n[9]:(e=e=>!e&&c(!1),n[8]=c,n[9]=e);let t;n[10]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,Z.jsx)(j,{className:`sr-only`,children:(0,Z.jsx)(v,{children:`Files`})}),n[10]=t):t=n[10];let i;n[11]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,Z.jsx)(`span`,{className:`font-semibold text-sm text-sidebar-foreground`,children:`Files`}),n[11]=i):i=n[11];let o;n[12]===c?o=n[13]:(o=()=>c(!1),n[12]=c,n[13]=o);let u;n[14]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,Z.jsx)(Yt,{className:`size-4`}),n[14]=u):u=n[14];let d;n[15]===o?d=n[16]:(d=(0,Z.jsxs)(`div`,{className:`flex items-center justify-between p-3 border-b border-border`,children:[i,(0,Z.jsx)(Y,{variant:`ghost`,size:`icon-sm`,onClick:o,children:u})]}),n[15]=o,n[16]=d);let f;n[17]!==g||n[18]!==r||n[19]!==l?(f=(0,Z.jsx)(`div`,{className:`flex flex-1 flex-col min-h-0 overflow-hidden`,children:(0,Z.jsx)(Ja,{ref:a,workspaceId:l,sdkClient:r,showHidden:!0,onFileSelect:g},l)}),n[17]=g,n[18]=r,n[19]=l,n[20]=f):f=n[20];let p;n[21]!==d||n[22]!==f?(p=(0,Z.jsxs)(k,{side:`right`,className:`w-72 p-0 bg-sidebar [&>button]:hidden`,children:[t,d,f]}),n[21]=d,n[22]=f,n[23]=p):p=n[23];let m;return n[24]!==s||n[25]!==p||n[26]!==e?(m=(0,Z.jsx)(_,{open:s,onOpenChange:e,children:p}),n[24]=s,n[25]=p,n[26]=e,n[27]=m):m=n[27],m}let S=`${o}px`,w;n[28]===S?w=n[29]:(w={"--sidebar-width":S},n[28]=S,n[29]=w);let M=w,N;n[30]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,Z.jsx)(O,{side:`right`,panelId:`files`}),n[30]=N):N=n[30];let P;n[31]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,Z.jsx)(y,{children:(0,Z.jsx)(T,{children:(0,Z.jsx)(x,{children:(0,Z.jsxs)(b,{className:`w-full justify-between`,onClick:()=>a.current?.refresh(),children:[(0,Z.jsx)(`span`,{className:`text-sm font-semibold`,children:`Files`}),(0,Z.jsx)(sn,{className:`size-4`})]})})})}),n[31]=P):P=n[31];let F;n[32]!==o||n[33]!==g||n[34]!==r||n[35]!==l?(F=(0,Z.jsx)(C,{className:`overflow-hidden`,children:(0,Z.jsx)(Ja,{ref:a,workspaceId:l,sdkClient:r,showHidden:!0,width:o,onFileSelect:g},l)}),n[32]=o,n[33]=g,n[34]=r,n[35]=l,n[36]=F):F=n[36];let I;n[37]!==s||n[38]!==F?(I=(0,Z.jsxs)(D,{side:`right`,isOpen:s,variant:`floating`,children:[N,P,F]}),n[37]=s,n[38]=F,n[39]=I):I=n[39];let L;return n[40]!==I||n[41]!==M?(L=(0,Z.jsx)(E,{panelId:`files`,defaultOpen:!0,className:`w-0 shrink-0`,style:M,children:I}),n[40]=I,n[41]=M,n[42]=L):L=n[42],L});eo.displayName=`FilesPanel`;function to(e){return e.filesPanelWidth}function no(e){return e.showFilesPanel}function ro(e){return e.setShowFilesPanel}function io(e){return e.activeWorkspace}function ao(e){return e.openFilePreview}function oo(e){let t=(0,Q.c)(10),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({className:n,orientation:i,...r}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let a=i===void 0?`horizontal`:i,o;t[4]===n?o=t[5]:(o=nn(`group/tabs flex gap-2 data-horizontal:flex-col`,n),t[4]=n,t[5]=o);let s;return t[6]!==a||t[7]!==r||t[8]!==o?(s=(0,Z.jsx)(Jr,{"data-slot":`tabs`,"data-orientation":a,className:o,...r}),t[6]=a,t[7]=r,t[8]=o,t[9]=s):s=t[9],s}var so=tn(`group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none`,{variants:{variant:{default:`bg-muted`,line:`gap-1 bg-transparent`}},defaultVariants:{variant:`default`}});function co(e){let t=(0,Q.c)(11),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({className:n,variant:i,...r}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let a=i===void 0?`default`:i,o;t[4]!==n||t[5]!==a?(o=nn(so({variant:a}),n),t[4]=n,t[5]=a,t[6]=o):o=t[6];let s;return t[7]!==r||t[8]!==o||t[9]!==a?(s=(0,Z.jsx)(Yr,{"data-slot":`tabs-list`,"data-variant":a,className:o,...r}),t[7]=r,t[8]=o,t[9]=a,t[10]=s):s=t[10],s}function lo(e){let t=(0,Q.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=nn(`relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,`group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent`,`data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground`,`after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,Z.jsx)(Xr,{"data-slot":`tabs-trigger`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function uo(e){let t=(0,Q.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=nn(`flex-1 text-sm outline-none`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,Z.jsx)(Zr,{"data-slot":`tabs-content`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function $(e){let t=(0,Q.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=nn(`flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,Z.jsx)(tr,{"data-slot":`label`,className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function fo(e){let t=(0,Q.c)(7),{token:n,onLogout:r}=e,i;t[0]===n?i=t[1]:(i=n?(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,Z.jsx)(`span`,{className:`text-muted-foreground`,children:`Token:`}),(0,Z.jsx)(`code`,{className:`font-mono text-foreground bg-background px-1.5 py-0.5 rounded text-[10px]`,children:Oe(n)})]}):(0,Z.jsx)(`div`,{className:`flex items-center gap-2 text-xs`,children:(0,Z.jsx)(`span`,{className:`text-muted-foreground`,children:`Auth disabled`})}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,Z.jsx)(Y,{variant:`destructive`,size:`sm`,onClick:r,title:`Disconnect and clear token`,children:`Logout`}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,Z.jsxs)(`div`,{className:`flex items-center gap-3 p-2 rounded-md bg-muted`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function po(e){let t=(0,Q.c)(12),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({className:n,value:i,...r}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let a;t[4]===n?a=t[5]:(a=nn(`relative flex h-1 w-full items-center overflow-x-hidden rounded-full bg-muted`,n),t[4]=n,t[5]=a);let o=`translateX(-${100-(i||0)}%)`,s;t[6]===o?s=t[7]:(s=(0,Z.jsx)(yr,{"data-slot":`progress-indicator`,className:`size-full flex-1 bg-primary transition-all`,style:{transform:o}}),t[6]=o,t[7]=s);let c;return t[8]!==r||t[9]!==a||t[10]!==s?(c=(0,Z.jsx)(vr,{"data-slot":`progress`,className:a,...r,children:s}),t[8]=r,t[9]=a,t[10]=s,t[11]=c):c=t[11],c}var mo=`1.0.6`;function ho(e){let t=e.trim().match(/^v?(\d+)\.(\d+)\.(\d+)$/);return t?[parseInt(t[1],10),parseInt(t[2],10),parseInt(t[3],10)]:null}function go(e,t){let n=ho(e),r=ho(t);if(!n&&!r)return 0;if(!n)return-1;if(!r)return 1;for(let e=0;e<3;e++)if(n[e]!==r[e])return n[e]-r[e];return 0}function _o(e,t){return t?go(e,t)>=0?`up-to-date`:`update-available`:`unknown`}var vo=`rabbyte-tech/jean2`,yo=300*1e3,bo=1e4,xo=new Map;function So(e){let t=xo.get(e);return t?Date.now()-t.timestamp>yo?(xo.delete(e),null):t.value:null}function Co(e,t){xo.set(e,{value:t,timestamp:Date.now()})}function wo(){xo.clear()}async function To(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),t);try{return await fetch(e,{signal:n.signal})}finally{clearTimeout(r)}}async function Eo(){let e=So(`latest-server`);if(e)return e;try{let e=await To(`https://raw.githubusercontent.com/${vo}/refs/heads/main/packages/server/VERSION`,bo);if(!e.ok)return null;let t=(await e.text()).trim();return/^\d+\.\d+\.\d+$/.test(t)?(Co(`latest-server`,t),t):null}catch{return null}}async function Do(){let e=So(`latest-client`);if(e)return e;try{let e=await To(`https://api.github.com/repos/${vo}/releases?per_page=20`,bo);if(!e.ok)return null;let t=(await e.json()).find(e=>e.tag_name.startsWith(`client/`)&&!e.prerelease);if(!t)return null;let n=t.tag_name.replace(/^client\/v?/,``);return/^\d+\.\d+\.\d+$/.test(n)?(Co(`latest-client`,n),n):null}catch{return null}}var Oo=!!window.__JEAN2_ELECTRON__;function ko(e){if(!e)return``;let t=Math.floor((Date.now()-e)/1e3);if(t<10)return`just now`;if(t<60)return`${t}s ago`;let n=Math.floor(t/60);return n<60?`${n}m ago`:`${Math.floor(n/60)}h ago`}function Ao(e){let t=(0,Q.c)(3),{status:n}=e;if(n===`up-to-date`){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(`span`,{className:`text-xs text-green-500 flex items-center gap-1`,children:[(0,Z.jsx)(`span`,{className:`inline-block size-1.5 rounded-full bg-green-500`}),`Up to date`]}),t[0]=e):e=t[0],e}if(n===`update-available`){let e;return t[1]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(`span`,{className:`text-xs px-1.5 py-0.5 rounded-full bg-amber-500/10 text-amber-600 dark:text-amber-400`,children:`Update available`}),t[1]=e):e=t[1],e}let r;return t[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Z.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Unknown`}),t[2]=r):r=t[2],r}function jo(e){let t=(0,Q.c)(20),{state:n}=e;switch(n.status){case`idle`:{let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`v`,mo]}),(0,Z.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Unknown`})]}),t[0]=e):e=t[0],e}case`checking`:{let e;return t[1]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`v`,mo]}),(0,Z.jsx)(sn,{className:`size-3.5 animate-spin text-muted-foreground`})]}),t[1]=e):e=t[1],e}case`available`:{let e;return t[2]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`v`,mo]}),(0,Z.jsx)(`span`,{className:`text-xs px-1.5 py-0.5 rounded-full bg-amber-500/10 text-amber-600 dark:text-amber-400`,children:`Update available`})]}),t[2]=e):e=t[2],e}case`not-available`:{let e;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`v`,mo]}),t[3]=e):e=t[3];let n;return t[4]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e,(0,Z.jsxs)(`span`,{className:`text-xs text-green-500 flex items-center gap-1`,children:[(0,Z.jsx)(`span`,{className:`inline-block size-1.5 rounded-full bg-green-500`}),`Up to date`]})]}),t[4]=n):n=t[4],n}case`downloading`:{let e;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`v`,mo]}),t[5]=e):e=t[5];let r;t[6]===n.percent?r=t[7]:(r=Math.round(n.percent),t[6]=n.percent,t[7]=r);let i;t[8]===r?i=t[9]:(i=(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e,(0,Z.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`Downloading... `,r,`%`]})]}),t[8]=r,t[9]=i);let a;t[10]===n.percent?a=t[11]:(a=(0,Z.jsx)(po,{value:n.percent,className:`w-full h-1`}),t[10]=n.percent,t[11]=a);let o;return t[12]!==i||t[13]!==a?(o=(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1 items-end min-w-40`,children:[i,a]}),t[12]=i,t[13]=a,t[14]=o):o=t[14],o}case`downloaded`:{let e;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`v`,mo]}),t[15]=e):e=t[15];let n;return t[16]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e,(0,Z.jsxs)(`span`,{className:`text-xs text-green-500 flex items-center gap-1`,children:[(0,Z.jsx)(`span`,{className:`inline-block size-1.5 rounded-full bg-green-500`}),`Update ready — restart to install`]})]}),t[16]=n):n=t[16],n}case`error`:{let e;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`v`,mo]}),t[17]=e):e=t[17];let r;return t[18]===n.message?r=t[19]:(r=(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e,(0,Z.jsx)(`span`,{className:`text-xs text-red-500`,children:n.message})]}),t[18]=n.message,t[19]=r),r}}}function Mo({sdkClient:e,enabled:t}){let n=(0,X.useRef)(0),[r,i]=(0,X.useState)({serverVersion:null,latestServer:null,latestClient:null,loading:!0,lastChecked:null,fetchError:null}),[a,o]=(0,X.useState)({status:`idle`}),s=(0,X.useCallback)(async(t=!1)=>{t&&wo();let r=++n.current;i(e=>({...e,loading:!0,fetchError:null}));try{let t=await Promise.allSettled([e?e.httpClient.get(`/info`).then(e=>e.version).catch(()=>null):Promise.resolve(null),Eo(),Oo?Promise.resolve(null):Do()]);if(n.current!==r)return;i({serverVersion:t[0].status===`fulfilled`?t[0].value:null,latestServer:t[1].status===`fulfilled`?t[1].value:null,latestClient:t[2].status===`fulfilled`?t[2].value:null,loading:!1,lastChecked:Date.now(),fetchError:null})}catch{if(n.current!==r)return;i(e=>({...e,loading:!1,fetchError:`Unable to check for updates`}))}},[e]);(0,X.useEffect)(()=>{t&&s()},[s,t]),(0,X.useEffect)(()=>{if(!(!Oo||!window.__JEAN2_ELECTRON__))return window.__JEAN2_ELECTRON__.onUpdaterEvent(e=>{let{type:t,data:n}=e;switch(t){case`checking`:o({status:`checking`});break;case`available`:o({status:`available`,version:n.version});break;case`not-available`:o({status:`not-available`,version:n.version});break;case`download-progress`:{let e=n;o({status:`downloading`,percent:e.percent,transferred:e.transferred,total:e.total});break}case`downloaded`:o({status:`downloaded`,version:n.version});break;case`error`:o({status:`error`,message:n.message});break}})},[]);let c=_o(mo,r.latestClient),l=e&&r.serverVersion?_o(r.serverVersion,r.latestServer):`unknown`,u=()=>{Oo&&window.__JEAN2_ELECTRON__?(o({status:`checking`}),window.__JEAN2_ELECTRON__.checkForUpdates()):s(!0)},d=a.status===`checking`||a.status===`downloading`;return(0,Z.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)($,{className:`text-sm font-medium`,children:`Versions`}),(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Check for updates to client and server`})]}),(0,Z.jsx)(Ge,{}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsx)(`span`,{className:`text-sm font-medium`,children:`Client`}),Oo?(0,Z.jsx)(jo,{state:a}):r.loading?(0,Z.jsx)(Ze,{className:`h-5 w-32`}):(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`v`,mo]}),(0,Z.jsx)(Ao,{status:c})]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsx)(`span`,{className:`text-sm font-medium`,children:`Server`}),r.loading?(0,Z.jsx)(Ze,{className:`h-5 w-32`}):r.serverVersion?(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`v`,r.serverVersion]}),(0,Z.jsx)(Ao,{status:l})]}):(0,Z.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Not connected`})]}),!Oo&&(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsx)(`span`,{className:`text-sm font-medium`,children:`Latest`}),r.loading?(0,Z.jsx)(Ze,{className:`h-5 w-48`}):(0,Z.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[r.latestServer?`v${r.latestServer} (server)`:``,r.latestServer&&r.latestClient&&` · `,r.latestClient?`v${r.latestClient} (client)`:``,!r.latestServer&&!r.latestClient&&`Unknown`]})]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[r.lastChecked&&!r.loading&&!d&&(0,Z.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`Last checked: `,ko(r.lastChecked)]}),(0,Z.jsxs)(Y,{variant:`outline`,size:`sm`,onClick:u,disabled:r.loading||d,className:`ml-auto`,children:[(0,Z.jsx)(sn,{className:`size-3.5 ${r.loading||d?`animate-spin`:``}`}),`Check for Updates`]})]})]})}var No={neutral:{label:`Neutral`,colors:[`bg-zinc-400`,`bg-zinc-600`,`bg-zinc-800`]},ocean:{label:`Ocean`,colors:[`bg-sky-300`,`bg-sky-500`,`bg-slate-700`]},forest:{label:`Forest`,colors:[`bg-emerald-300`,`bg-emerald-500`,`bg-green-800`]},sunset:{label:`Sunset`,colors:[`bg-orange-300`,`bg-amber-500`,`bg-orange-800`]},amethyst:{label:`Amethyst`,colors:[`bg-violet-300`,`bg-violet-500`,`bg-purple-800`]}};function Po(e){let t=(0,Q.c)(15),{scheme:n,currentScheme:r,onClick:i}=e,a=n===r,o=No[n],s;t[0]!==i||t[1]!==n?(s=()=>i(n),t[0]=i,t[1]=n,t[2]=s):s=t[2];let c=`
|
|
7
|
+
flex flex-col items-center gap-1.5 p-2 rounded-lg border transition-all
|
|
8
|
+
${a?`border-primary bg-primary/5`:`border-border bg-transparent hover:bg-muted/50`}
|
|
9
|
+
`,l=o.label,u;t[3]===o.colors?u=t[4]:(u=o.colors.map(Fo),t[3]=o.colors,t[4]=u);let d;t[5]===u?d=t[6]:(d=(0,Z.jsx)(`div`,{className:`flex gap-0.5`,children:u}),t[5]=u,t[6]=d);let f;t[7]===n?f=t[8]:(f=(0,Z.jsx)(`span`,{className:`text-[10px] text-muted-foreground capitalize`,children:n}),t[7]=n,t[8]=f);let p;return t[9]!==o.label||t[10]!==s||t[11]!==c||t[12]!==d||t[13]!==f?(p=(0,Z.jsxs)(`button`,{type:`button`,onClick:s,className:c,title:l,children:[d,f]}),t[9]=o.label,t[10]=s,t[11]=c,t[12]=d,t[13]=f,t[14]=p):p=t[14],p}function Fo(e,t){return(0,Z.jsx)(`div`,{className:`w-4 h-4 rounded-full ${e}`},t)}function Io(e){let t=(0,Q.c)(133),{open:n,onOpenChange:r,apiToken:a,isConnected:o,onLogout:s,sdkClient:c}=e,{mode:l,scheme:u,setMode:d,setScheme:f}=i(),{chatFinishSoundEnabled:p,setChatFinishSoundEnabled:m,permissionSoundEnabled:h,setPermissionSoundEnabled:g}=He(si(Ro)),_=navigator.userAgentData?.platform===`macOS`||/mac|iphone|ipad|ipod/i.test(navigator.userAgent)?`⌘`:`Ctrl`,v,y,b,x,S,C,w,T,E,D,O,k,A,j,M,N,P;if(t[0]!==a||t[1]!==p||t[2]!==o||t[3]!==l||t[4]!==s||t[5]!==r||t[6]!==n||t[7]!==h||t[8]!==u||t[9]!==c||t[10]!==m||t[11]!==d||t[12]!==g||t[13]!==f){let e=[{keys:[_,`1`],description:`Open session list`},{keys:[_,`2`],description:`Open files panel`},{keys:[_,`T`],description:`Open terminal`},{keys:[_,`O`],description:`Toggle overview mode`},{keys:[_,`N`],description:`New session`},{keys:[_,`Shift`,`N`],description:`New window`},{keys:[_,`Shift`,`F`],description:`Toggle follow/free mode`},{keys:[`Shift`,`Esc`],description:`Close focused panel`},{keys:[`Shift`,`Enter`],description:`New line in input`},{keys:[`Enter`],description:`Send message`},{keys:[`↑`,`↓`,`←`,`→`],description:`Navigate sessions`},{keys:[`Esc`],description:`Focus chat input`},{keys:[`Esc`,`Esc`],description:`Stop streaming (chat input focused)`}];x=pn,T=n,E=r,b=dn,C=`sm:max-w-[700px] max-h-[80vh]`,t[31]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,Z.jsxs)(un,{children:[(0,Z.jsx)(fn,{children:`Settings`}),(0,Z.jsx)(ln,{children:`Manage your preferences`})]}),t[31]=w):w=t[31],y=oo,A=`account`,j=`mt-4`;let i;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,Z.jsxs)(lo,{value:`account`,children:[(0,Z.jsx)(At,{className:`size-4 sm:size-3`,"data-icon":`inline-start`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`Account`})]}),t[32]=i):i=t[32];let F;t[33]===Symbol.for(`react.memo_cache_sentinel`)?(F=(0,Z.jsxs)(lo,{value:`appearance`,children:[(0,Z.jsx)(Wn,{className:`size-4 sm:size-3`,"data-icon":`inline-start`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`Appearance`})]}),t[33]=F):F=t[33],t[34]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,Z.jsxs)(co,{className:`grid w-full grid-cols-3`,children:[i,F,(0,Z.jsxs)(lo,{value:`keybinds`,children:[(0,Z.jsx)(Rn,{className:`size-4 sm:size-3`,"data-icon":`inline-start`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`Keybinds`})]})]}),t[34]=M):M=t[34];let I,L;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(I=(0,Z.jsx)($,{className:`text-sm font-medium`,children:`Session`}),L=(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground mb-3`,children:`Manage your current session`}),t[35]=I,t[36]=L):(I=t[35],L=t[36]);let R;t[37]!==a||t[38]!==o||t[39]!==s?(R=(0,Z.jsxs)(`div`,{children:[I,L,o?(0,Z.jsx)(fo,{token:a,onLogout:s}):(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No active session`})]}),t[37]=a,t[38]=o,t[39]=s,t[40]=R):R=t[40];let z;t[41]===Symbol.for(`react.memo_cache_sentinel`)?(z=(0,Z.jsx)(Ge,{}),t[41]=z):z=t[41];let B;t[42]!==n||t[43]!==c?(B=(0,Z.jsx)(Mo,{sdkClient:c,enabled:n}),t[42]=n,t[43]=c,t[44]=B):B=t[44],t[45]!==R||t[46]!==B?(N=(0,Z.jsx)(uo,{value:`account`,className:`mt-4`,children:(0,Z.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[R,z,B]})}),t[45]=R,t[46]=B,t[47]=N):N=t[47];let V,ee;t[48]===Symbol.for(`react.memo_cache_sentinel`)?(V=(0,Z.jsx)($,{className:`text-sm font-medium`,children:`Mode`}),ee=(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground mb-3`,children:`Choose light, dark, or system theme`}),t[48]=V,t[49]=ee):(V=t[48],ee=t[49]);let H=l===`light`?`default`:`outline`,U;t[50]===d?U=t[51]:(U=()=>d(`light`),t[50]=d,t[51]=U);let te;t[52]===Symbol.for(`react.memo_cache_sentinel`)?(te=(0,Z.jsx)(Jn,{className:`size-4`,"data-icon":`inline-start`}),t[52]=te):te=t[52];let ne;t[53]!==H||t[54]!==U?(ne=(0,Z.jsxs)(Y,{variant:H,className:`justify-start`,onClick:U,children:[te,`Light`]}),t[53]=H,t[54]=U,t[55]=ne):ne=t[55];let re=l===`dark`?`default`:`outline`,ie;t[56]===d?ie=t[57]:(ie=()=>d(`dark`),t[56]=d,t[57]=ie);let ae;t[58]===Symbol.for(`react.memo_cache_sentinel`)?(ae=(0,Z.jsx)(Un,{className:`size-4`,"data-icon":`inline-start`}),t[58]=ae):ae=t[58];let oe;t[59]!==re||t[60]!==ie?(oe=(0,Z.jsxs)(Y,{variant:re,className:`justify-start`,onClick:ie,children:[ae,`Dark`]}),t[59]=re,t[60]=ie,t[61]=oe):oe=t[61];let se=l===`system`?`default`:`outline`,ce;t[62]===d?ce=t[63]:(ce=()=>d(`system`),t[62]=d,t[63]=ce);let le;t[64]===Symbol.for(`react.memo_cache_sentinel`)?(le=(0,Z.jsx)(Nt,{className:`size-4`,"data-icon":`inline-start`}),t[64]=le):le=t[64];let ue;t[65]!==se||t[66]!==ce?(ue=(0,Z.jsxs)(Y,{variant:se,className:`justify-start`,onClick:ce,children:[le,`System`]}),t[65]=se,t[66]=ce,t[67]=ue):ue=t[67];let de;t[68]!==ne||t[69]!==oe||t[70]!==ue?(de=(0,Z.jsxs)(`div`,{children:[V,ee,(0,Z.jsxs)(`div`,{className:`grid grid-cols-3 gap-2`,children:[ne,oe,ue]})]}),t[68]=ne,t[69]=oe,t[70]=ue,t[71]=de):de=t[71];let fe,pe;t[72]===Symbol.for(`react.memo_cache_sentinel`)?(fe=(0,Z.jsx)(Ge,{}),pe=(0,Z.jsx)($,{className:`text-sm font-medium mb-3 block`,children:`Notification Sounds`}),t[72]=fe,t[73]=pe):(fe=t[72],pe=t[73]);let me;t[74]===Symbol.for(`react.memo_cache_sentinel`)?(me=(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(Zn,{className:`size-4 text-muted-foreground`}),(0,Z.jsx)(`span`,{className:`text-sm`,children:`Chat completion`})]}),t[74]=me):me=t[74];let he;t[75]!==p||t[76]!==m?(he=()=>m(!p),t[75]=p,t[76]=m,t[77]=he):he=t[77];let ge=`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${p?`bg-primary`:`bg-muted`}`,_e=`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${p?`translate-x-6`:`translate-x-1`}`,ve;t[78]===_e?ve=t[79]:(ve=(0,Z.jsx)(`span`,{className:_e}),t[78]=_e,t[79]=ve);let ye;t[80]!==he||t[81]!==ge||t[82]!==ve?(ye=(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[me,(0,Z.jsx)(`button`,{type:`button`,onClick:he,className:ge,children:ve})]}),t[80]=he,t[81]=ge,t[82]=ve,t[83]=ye):ye=t[83];let be;t[84]===Symbol.for(`react.memo_cache_sentinel`)?(be=(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(Qn,{className:`size-4 text-muted-foreground`}),(0,Z.jsx)(`span`,{className:`text-sm`,children:`Permission requests`})]}),t[84]=be):be=t[84];let xe;t[85]!==h||t[86]!==g?(xe=()=>g(!h),t[85]=h,t[86]=g,t[87]=xe):xe=t[87];let Se=`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${h?`bg-primary`:`bg-muted`}`,Ce=`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${h?`translate-x-6`:`translate-x-1`}`,we;t[88]===Ce?we=t[89]:(we=(0,Z.jsx)(`span`,{className:Ce}),t[88]=Ce,t[89]=we);let Te;t[90]!==xe||t[91]!==Se||t[92]!==we?(Te=(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[be,(0,Z.jsx)(`button`,{type:`button`,onClick:xe,className:Se,children:we})]}),t[90]=xe,t[91]=Se,t[92]=we,t[93]=Te):Te=t[93];let W;t[94]!==ye||t[95]!==Te?(W=(0,Z.jsxs)(`div`,{children:[pe,(0,Z.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[ye,Te]})]}),t[94]=ye,t[95]=Te,t[96]=W):W=t[96];let Ee,De,Oe;t[97]===Symbol.for(`react.memo_cache_sentinel`)?(Ee=(0,Z.jsx)(Ge,{}),De=(0,Z.jsx)($,{className:`text-sm font-medium`,children:`Color Scheme`}),Oe=(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground mb-3`,children:`Choose your preferred color palette`}),t[97]=Ee,t[98]=De,t[99]=Oe):(Ee=t[97],De=t[98],Oe=t[99]);let ke;t[100]!==u||t[101]!==f?(ke=(0,Z.jsxs)(`div`,{children:[De,Oe,(0,Z.jsxs)(`div`,{className:`grid grid-cols-5 gap-2`,children:[(0,Z.jsx)(Po,{scheme:`neutral`,currentScheme:u,onClick:f}),(0,Z.jsx)(Po,{scheme:`ocean`,currentScheme:u,onClick:f}),(0,Z.jsx)(Po,{scheme:`forest`,currentScheme:u,onClick:f}),(0,Z.jsx)(Po,{scheme:`sunset`,currentScheme:u,onClick:f}),(0,Z.jsx)(Po,{scheme:`amethyst`,currentScheme:u,onClick:f})]})]}),t[100]=u,t[101]=f,t[102]=ke):ke=t[102],t[103]!==de||t[104]!==W||t[105]!==ke?(P=(0,Z.jsx)(uo,{value:`appearance`,className:`mt-4`,children:(0,Z.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[de,fe,W,Ee,ke]})}),t[103]=de,t[104]=W,t[105]=ke,t[106]=P):P=t[106],v=uo,O=`keybinds`,k=`mt-4`,S=`flex flex-col gap-2`,D=e.map(Lo),t[0]=a,t[1]=p,t[2]=o,t[3]=l,t[4]=s,t[5]=r,t[6]=n,t[7]=h,t[8]=u,t[9]=c,t[10]=m,t[11]=d,t[12]=g,t[13]=f,t[14]=v,t[15]=y,t[16]=b,t[17]=x,t[18]=S,t[19]=C,t[20]=w,t[21]=T,t[22]=E,t[23]=D,t[24]=O,t[25]=k,t[26]=A,t[27]=j,t[28]=M,t[29]=N,t[30]=P}else v=t[14],y=t[15],b=t[16],x=t[17],S=t[18],C=t[19],w=t[20],T=t[21],E=t[22],D=t[23],O=t[24],k=t[25],A=t[26],j=t[27],M=t[28],N=t[29],P=t[30];let F;t[107]!==S||t[108]!==D?(F=(0,Z.jsx)(`div`,{className:S,children:D}),t[107]=S,t[108]=D,t[109]=F):F=t[109];let I;t[110]!==v||t[111]!==F||t[112]!==O||t[113]!==k?(I=(0,Z.jsx)(v,{value:O,className:k,children:F}),t[110]=v,t[111]=F,t[112]=O,t[113]=k,t[114]=I):I=t[114];let L;t[115]!==y||t[116]!==I||t[117]!==A||t[118]!==j||t[119]!==M||t[120]!==N||t[121]!==P?(L=(0,Z.jsxs)(y,{defaultValue:A,className:j,children:[M,N,P,I]}),t[115]=y,t[116]=I,t[117]=A,t[118]=j,t[119]=M,t[120]=N,t[121]=P,t[122]=L):L=t[122];let R;t[123]!==b||t[124]!==C||t[125]!==w||t[126]!==L?(R=(0,Z.jsxs)(b,{className:C,children:[w,L]}),t[123]=b,t[124]=C,t[125]=w,t[126]=L,t[127]=R):R=t[127];let z;return t[128]!==x||t[129]!==T||t[130]!==E||t[131]!==R?(z=(0,Z.jsx)(x,{open:T,onOpenChange:E,children:R}),t[128]=x,t[129]=T,t[130]=E,t[131]=R,t[132]=z):z=t[132],z}function Lo(e,t){return(0,Z.jsxs)(`div`,{className:`flex items-center justify-between py-1`,children:[(0,Z.jsx)(`div`,{className:`flex items-center gap-1`,children:e.keys.map((t,n)=>(0,Z.jsxs)(`span`,{children:[(0,Z.jsx)(`kbd`,{className:`font-mono bg-muted rounded px-2 py-1 text-xs`,children:t}),n<e.keys.length-1&&(0,Z.jsx)(`span`,{className:`mx-1 text-muted-foreground`,children:`+`})]},n))}),(0,Z.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:e.description})]},t)}function Ro(e){return{chatFinishSoundEnabled:e.chatFinishSoundEnabled,setChatFinishSoundEnabled:e.setChatFinishSoundEnabled,permissionSoundEnabled:e.permissionSoundEnabled,setPermissionSoundEnabled:e.setPermissionSoundEnabled}}function zo(e){let t=(0,Q.c)(6),{status:n}=e;switch(n.status){case`connected`:{let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(q,{variant:`default`,className:`bg-green-600`,children:[(0,Z.jsx)(Re,{className:`size-3 mr-1`}),`Connected`]}),t[0]=e):e=t[0],e}case`disabled`:{let e;return t[1]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(q,{variant:`secondary`,children:[(0,Z.jsx)(Fe,{className:`size-3 mr-1`}),`Disabled`]}),t[1]=e):e=t[1],e}case`failed`:{let e;return t[2]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(q,{variant:`destructive`,children:[(0,Z.jsx)(Wt,{className:`size-3 mr-1`}),`Failed`]}),t[2]=e):e=t[2],e}case`needs_auth`:{let e;return t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(q,{variant:`outline`,className:`border-yellow-500 text-yellow-600`,children:[(0,Z.jsx)(Wt,{className:`size-3 mr-1`}),`Needs Auth`]}),t[3]=e):e=t[3],e}case`needs_client_registration`:{let e;return t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(q,{variant:`outline`,className:`border-orange-500 text-orange-600`,children:[(0,Z.jsx)(Wt,{className:`size-3 mr-1`}),`Needs Registration`]}),t[4]=e):e=t[4],e}default:{let e;return t[5]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(q,{variant:`secondary`,children:`Unknown`}),t[5]=e):e=t[5],e}}}function Bo({open:e,onOpenChange:t,workspaceId:n,workspacePath:r,sdkClient:i}){let{data:a,isLoading:o,refetch:s}=he(i,n),c=ve(i),l=be(i),u=ce(i),d=a?.status??{},[f,p]=(0,X.useState)(null),[m,h]=(0,X.useState)(null);(0,X.useEffect)(()=>{e&&n&&s()},[e,n,s]);let g=async e=>{if(!(!n||!i)){p(e);try{await c.mutateAsync({workspaceId:n,name:e}),s()}catch(e){h(e instanceof Error?e.message:`Unknown error`)}finally{p(null)}}},_=async e=>{if(!(!n||!i)){p(e);try{await l.mutateAsync({workspaceId:n,name:e}),s()}catch(e){h(e instanceof Error?e.message:`Unknown error`)}finally{p(null)}}},v=async e=>{if(!(!n||!i)){p(e);try{let t=await u.mutateAsync({workspaceId:n,name:e});t.authorizationUrl&&window.open(t.authorizationUrl,`_blank`),s()}catch(e){h(e instanceof Error?e.message:`Unknown error`)}finally{p(null)}}},y=Object.entries(d);return(0,Z.jsx)(pn,{open:e,onOpenChange:t,children:(0,Z.jsxs)(dn,{className:`sm:max-w-[600px] max-h-[80vh]`,children:[(0,Z.jsxs)(un,{children:[(0,Z.jsxs)(fn,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(Zt,{className:`size-5`}),`MCP Servers`]}),(0,Z.jsx)(ln,{children:`Manage Model Context Protocol servers for this workspace`})]}),(0,Z.jsxs)(`div`,{className:`mt-4 space-y-4`,children:[m&&(0,Z.jsxs)(Vt,{variant:`destructive`,children:[(0,Z.jsx)(Wt,{className:`size-4`}),(0,Z.jsx)(Lt,{children:m})]}),(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Configure servers in `,(0,Z.jsx)(`code`,{className:`text-xs bg-muted px-1 rounded`,children:`.jean2/mcp.json`})]}),(0,Z.jsx)(Y,{variant:`outline`,size:`sm`,onClick:()=>s(),disabled:o,children:(0,Z.jsx)(sn,{className:`size-4 ${o?`animate-spin`:``}`})})]}),(0,Z.jsx)(V,{className:`h-[400px]`,children:o&&y.length===0?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,Z.jsx)(K,{className:`size-6 animate-spin text-muted-foreground`})}):y.length===0?(0,Z.jsxs)(`div`,{className:`text-center py-8 text-muted-foreground`,children:[(0,Z.jsx)(Zt,{className:`size-12 mx-auto mb-3 opacity-50`}),(0,Z.jsx)(`p`,{className:`font-medium`,children:`No MCP servers configured`}),(0,Z.jsxs)(`p`,{className:`text-sm mt-1`,children:[`Create `,(0,Z.jsx)(`code`,{className:`text-xs bg-muted px-1 rounded`,children:`.jean2/mcp.json`}),` in your workspace to add servers.`]})]}):(0,Z.jsx)(`div`,{className:`space-y-3`,children:y.map(([e,{config:t,status:n}])=>(0,Z.jsxs)(`div`,{className:`border rounded-lg p-4`,children:[(0,Z.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,Z.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Z.jsx)(Zt,{className:`size-5 text-muted-foreground mt-0.5`}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`div`,{className:`font-medium`,children:e}),(0,Z.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:t?.type===`local`?(0,Z.jsxs)(`span`,{children:[`Local - `,t.command?.[0]||`command`]}):t?.type===`remote`?(0,Z.jsxs)(`span`,{className:`flex items-center gap-1`,children:[`Remote - `,t.url]}):`Unknown type`}),n.status===`failed`&&`error`in n&&(0,Z.jsx)(Vt,{variant:`destructive`,className:`mt-2 py-2`,children:(0,Z.jsx)(Lt,{className:`text-xs`,children:n.error})}),n.status===`needs_client_registration`&&`error`in n&&(0,Z.jsx)(Vt,{className:`mt-2 py-2 border-orange-500`,children:(0,Z.jsx)(Lt,{className:`text-xs`,children:n.error})})]})]}),(0,Z.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,Z.jsx)(zo,{status:n})})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 mt-3 pt-3 border-t`,children:[n.status===`connected`&&(0,Z.jsxs)(Y,{variant:`outline`,size:`sm`,onClick:()=>_(e),disabled:f===e,children:[f===e?(0,Z.jsx)(K,{className:`size-4 animate-spin`}):(0,Z.jsx)(Gn,{className:`size-4`}),(0,Z.jsx)(`span`,{className:`ml-1`,children:`Disconnect`})]}),(n.status===`disabled`||n.status===`failed`)&&(0,Z.jsxs)(Y,{variant:`outline`,size:`sm`,onClick:()=>g(e),disabled:f===e,children:[f===e?(0,Z.jsx)(K,{className:`size-4 animate-spin`}):(0,Z.jsx)(Kn,{className:`size-4`}),(0,Z.jsx)(`span`,{className:`ml-1`,children:`Connect`})]}),n.status===`needs_auth`&&(0,Z.jsxs)(Y,{variant:`default`,size:`sm`,onClick:()=>v(e),disabled:f===e,children:[f===e?(0,Z.jsx)(K,{className:`size-4 animate-spin`}):(0,Z.jsx)(Gt,{className:`size-4`}),(0,Z.jsx)(`span`,{className:`ml-1`,children:`Authenticate`})]})]})]},e))})})]})]})})}function Vo({sdkClient:e}){let{data:t,isLoading:n}=ye(e),r=fe(e),i=xe(e),a=t?.providers??[],[o,s]=(0,X.useState)(null),[c,l]=(0,X.useState)(null),[u,d]=(0,X.useState)(``),[f,p]=(0,X.useState)(!1),[m,h]=(0,X.useState)(null),g=async e=>{if(u.trim()){h(e);try{await r.mutateAsync({provider:e,body:{apiKey:u.trim()}}),l(null),d(``),p(!1)}catch(e){s(e instanceof Error?e.message:`Failed to set key`)}finally{h(null)}}},_=async e=>{h(e);try{await i.mutateAsync(e)}catch(e){s(e instanceof Error?e.message:`Failed to clear key`)}finally{h(null)}},v={anthropic:`Anthropic`,google:`Google`,minimax:`MiniMax`,openai:`OpenAI`,openrouter:`OpenRouter`,zhipu:`Z.AI`,"zhipu-coding":`Z.AI Coding`},y=e=>v[e]||e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `);return n?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-8`,children:(0,Z.jsx)(K,{className:`size-6 animate-spin text-muted-foreground`})}):o&&a.length===0?(0,Z.jsx)(`div`,{className:`p-4 text-sm text-destructive`,children:o}):(0,Z.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Manage API keys for LLM providers. Keys are stored in ~/.jean2/.env and never exposed to the client.`}),(0,Z.jsx)(`p`,{className:`text-xs text-muted-foreground mt-2`,children:`OAuth-based providers are managed in the OAuth tab.`}),o&&(0,Z.jsx)(`div`,{className:`p-2 rounded bg-destructive/10 text-sm text-destructive`,children:o}),(0,Z.jsx)(`div`,{className:`space-y-2`,children:a.map(e=>(0,Z.jsxs)(`div`,{className:`flex items-center justify-between p-3 rounded-lg border`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Z.jsx)(Et,{className:`size-4 text-muted-foreground`}),(0,Z.jsx)(`span`,{className:`text-sm font-medium`,children:y(e.provider)}),(0,Z.jsx)(q,{variant:e.configured?`default`:`secondary`,children:e.configured?`Configured`:`Not set`})]}),(0,Z.jsx)(`div`,{className:`flex items-center gap-2`,children:c===e.provider?(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(ct,{type:f?`text`:`password`,value:u,onChange:e=>d(e.target.value),placeholder:`Enter API key...`,className:`w-full sm:w-48 h-8 text-sm pr-8`,onKeyDown:t=>{t.key===`Enter`&&g(e.provider),t.key===`Escape`&&(l(null),d(``))},autoFocus:!0}),(0,Z.jsx)(Y,{type:`button`,variant:`ghost`,size:`icon`,className:`absolute right-0 top-0 h-8 w-8`,onClick:()=>p(!f),children:f?(0,Z.jsx)(Mn,{className:`size-3`}):(0,Z.jsx)(Ot,{className:`size-3`})})]}),(0,Z.jsx)(Y,{size:`sm`,onClick:()=>g(e.provider),disabled:!u.trim()||m===e.provider,children:m===e.provider?(0,Z.jsx)(K,{className:`size-3 animate-spin`}):(0,Z.jsx)(Le,{className:`size-3`})}),(0,Z.jsx)(Y,{size:`sm`,variant:`ghost`,onClick:()=>{l(null),d(``)},children:(0,Z.jsx)(Yt,{className:`size-3`})})]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(Y,{size:`sm`,variant:`outline`,onClick:()=>{l(e.provider),d(``),p(!1)},disabled:m===e.provider,children:e.configured?`Update`:`Set Key`}),e.configured&&(0,Z.jsx)(Y,{size:`sm`,variant:`ghost`,onClick:()=>_(e.provider),disabled:m===e.provider,children:m===e.provider?(0,Z.jsx)(K,{className:`size-3 animate-spin`}):(0,Z.jsx)(Xt,{className:`size-3`})})]})})]},e.provider))})]})}function Ho({sdkClient:e}){let{data:t,isLoading:n}=ge(e),r=le(e),i=ue(e),a=t?.providers??[],[o,s]=(0,X.useState)(null),[c,l]=(0,X.useState)(null),[u,d]=(0,X.useState)({}),[f,p]=(0,X.useState)(null),m=async e=>{l(e),d(t=>({...t,[e]:``})),s(null);try{let t=await r.mutateAsync(e);t.authorizationUrl&&d(n=>({...n,[e]:t.authorizationUrl}))}catch(t){s(t instanceof Error?t.message:`Failed to connect provider`),d(t=>({...t,[e]:``}))}finally{l(null)}},h=async e=>{s(null);try{await i.mutateAsync(e)}catch(e){s(e instanceof Error?e.message:`Failed to disconnect provider`)}},g=async(e,t)=>{try{await navigator.clipboard.writeText(e),p(t),setTimeout(()=>p(null),2e3)}catch{}};return n?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-8`,children:(0,Z.jsx)(K,{className:`size-6 animate-spin text-muted-foreground`})}):(0,Z.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Connect subscription-based providers using OAuth. No API keys needed.`}),o&&(0,Z.jsx)(`div`,{className:`p-2 rounded bg-destructive/10 text-sm text-destructive`,children:o}),a.length===0?(0,Z.jsx)(`div`,{className:`text-center py-8 text-sm text-muted-foreground`,children:`No OAuth providers available.`}):(0,Z.jsx)(`div`,{className:`flex flex-col gap-3`,children:a.map(e=>(0,Z.jsxs)(`div`,{className:`rounded-lg border p-3 sm:p-4 space-y-3`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`div`,{className:`size-2 rounded-full ${e.connected?`bg-green-500`:`bg-muted-foreground`}`}),(0,Z.jsx)(`span`,{className:`text-sm font-medium`,children:e.displayName||e.provider})]}),e.connected&&(0,Z.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Connected`})]}),e.error&&(0,Z.jsx)(`p`,{className:`text-xs text-destructive`,children:e.error}),e.connected&&e.connectedAt&&(0,Z.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Connected `,new Date(e.connectedAt).toLocaleDateString()]}),(0,Z.jsxs)(`div`,{className:`flex gap-2`,children:[!e.connected&&!u[e.provider]&&(0,Z.jsxs)(Y,{size:`sm`,onClick:()=>m(e.provider),disabled:c===e.provider,children:[c===e.provider?(0,Z.jsx)(K,{className:`size-3 animate-spin`}):null,`Connect`]}),e.connected&&(0,Z.jsxs)(Y,{variant:`destructive`,size:`sm`,onClick:()=>h(e.provider),children:[(0,Z.jsx)(Xn,{className:`size-3`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`Disconnect`})]})]}),!e.connected&&u[e.provider]&&(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Open this URL in your browser to complete the connection:`}),(0,Z.jsx)(`div`,{className:`rounded-md bg-muted p-2`,children:(0,Z.jsx)(`a`,{href:u[e.provider],target:`_blank`,rel:`noopener noreferrer`,className:`font-mono text-xs text-blue-500 underline break-all`,children:u[e.provider]})}),(0,Z.jsxs)(Y,{variant:`outline`,size:`sm`,onClick:()=>g(u[e.provider],e.provider),children:[f===e.provider?(0,Z.jsx)(Le,{className:`size-3`}):(0,Z.jsx)(wt,{className:`size-3`}),f===e.provider?`Copied`:`Copy URL`]})]})]},e.provider))})]})}function Uo(e){let t=(0,Q.c)(11),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({className:n,size:i,...r}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let a=i===void 0?`default`:i,o;t[4]===n?o=t[5]:(o=nn(`peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50`,n),t[4]=n,t[5]=o);let s;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,Z.jsx)(Mr,{"data-slot":`switch-thumb`,className:`pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground`}),t[6]=s):s=t[6];let c;return t[7]!==r||t[8]!==a||t[9]!==o?(c=(0,Z.jsx)(jr,{"data-slot":`switch`,"data-size":a,className:o,...r,children:s}),t[7]=r,t[8]=a,t[9]=o,t[10]=c):c=t[10],c}function Wo(e){let t=(0,Q.c)(30),{open:n,onOpenChange:r,title:i,description:a,confirmLabel:o,cancelLabel:s,variant:c,onConfirm:l,onCancel:u}=e,d=o===void 0?`Confirm`:o,f=s===void 0?`Cancel`:s,p=c===void 0?`default`:c,m;t[0]!==u||t[1]!==r?(m=()=>{u?.(),r(!1)},t[0]=u,t[1]=r,t[2]=m):m=t[2];let h=m,g;t[3]!==l||t[4]!==r?(g=()=>{l(),r(!1)},t[3]=l,t[4]=r,t[5]=g):g=t[5];let _=g,v;t[6]===i?v=t[7]:(v=(0,Z.jsx)(fn,{children:i}),t[6]=i,t[7]=v);let y;t[8]===a?y=t[9]:(y=(0,Z.jsx)(ln,{children:a}),t[8]=a,t[9]=y);let b;t[10]!==v||t[11]!==y?(b=(0,Z.jsxs)(un,{children:[v,y]}),t[10]=v,t[11]=y,t[12]=b):b=t[12];let x;t[13]!==f||t[14]!==h?(x=(0,Z.jsx)(Y,{variant:`outline`,onClick:h,children:f}),t[13]=f,t[14]=h,t[15]=x):x=t[15];let S=p===`destructive`?`destructive`:`default`,C;t[16]!==d||t[17]!==_||t[18]!==S?(C=(0,Z.jsx)(Y,{variant:S,onClick:_,children:d}),t[16]=d,t[17]=_,t[18]=S,t[19]=C):C=t[19];let w;t[20]!==C||t[21]!==x?(w=(0,Z.jsxs)(cn,{children:[x,C]}),t[20]=C,t[21]=x,t[22]=w):w=t[22];let T;t[23]!==w||t[24]!==b?(T=(0,Z.jsxs)(dn,{className:`sm:max-w-[425px]`,children:[b,w]}),t[23]=w,t[24]=b,t[25]=T):T=t[25];let E;return t[26]!==r||t[27]!==n||t[28]!==T?(E=(0,Z.jsx)(pn,{open:n,onOpenChange:r,children:T}),t[26]=r,t[27]=n,t[28]=T,t[29]=E):E=t[29],E}function Go(e){let t=(0,Q.c)(9),{tier:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={variant:`secondary`,icon:(0,Z.jsx)(`span`,{className:`text-[10px] font-bold`,children:`B`})},t[0]=r):r=t[0];let i;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(i={variant:`default`,icon:(0,Z.jsx)(`span`,{className:`text-[10px] font-bold`,children:`S`})},t[1]=i):i=t[1];let a;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(a={budget:r,standard:i,premium:{variant:`outline`,icon:(0,Z.jsx)(ne,{className:`size-2.5`})}},t[2]=a):a=t[2];let{variant:o,icon:s}=a[n],c;t[3]===n?c=t[4]:(c=(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:n}),t[3]=n,t[4]=c);let l;return t[5]!==s||t[6]!==c||t[7]!==o?(l=(0,Z.jsxs)(q,{variant:o,className:`text-[10px] gap-0.5`,children:[s,c]}),t[5]=s,t[6]=c,t[7]=o,t[8]=l):l=t[8],l}function Ko(e){let t=(0,Q.c)(3),{status:n}=e;if(n.usable){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(q,{variant:`default`,className:`bg-emerald-500/20 text-emerald-600 dark:text-emerald-400 border-emerald-500/30 text-[10px]`,children:[(0,Z.jsx)(Le,{className:`size-2.5`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`Usable`})]}),t[0]=e):e=t[0],e}if(n.providerSupported&&!n.providerConfigured){let e;return t[1]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(q,{variant:`secondary`,className:`text-[10px]`,children:[(0,Z.jsx)(Wt,{className:`size-2.5`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`Needs config`})]}),t[1]=e):e=t[1],e}let r;return t[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Z.jsxs)(q,{variant:`outline`,className:`text-[10px] text-muted-foreground`,children:[(0,Z.jsx)(Yt,{className:`size-2.5`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`Unsupported`})]}),t[2]=r):r=t[2],r}var qo={id:``,name:``},Jo={id:``,name:``,contextWindow:128e3,maxOutputTokens:void 0,tier:`standard`};function Yo({sdkClient:e}){let{data:t,isLoading:n}=U(e),r=ie(e),i=ee(e),a=L(e),o=Ce(e),s=pe(e),c=R(e),l=me(e),u=F(e),[d,p]=(0,X.useState)(`merge`),[m,h]=(0,X.useState)(null),[g,_]=(0,X.useState)(null),[v,y]=(0,X.useState)(null),[b,x]=(0,X.useState)(!1),[S,C]=(0,X.useState)(qo),[w,T]=(0,X.useState)(!1),[E,D]=(0,X.useState)(null),[,O]=(0,X.useState)(!1),[k,A]=(0,X.useState)(null),[j,M]=(0,X.useState)(null),[N,P]=(0,X.useState)(Jo),[I,z]=(0,X.useState)(!1),[B,V]=(0,X.useState)(null),[,H]=(0,X.useState)(!1),[te,re]=(0,X.useState)({}),[ae,oe]=(0,X.useState)(!1),[se,ce]=(0,X.useState)({defaultProvider:``,defaultModel:``}),[le,ue]=(0,X.useState)(!1);function de(e,t,n){let r={...e.capabilities?.input};r[t]=n;let i=r.text||r.image||r.video||Array.isArray(r.file)&&r.file.length>0;return{...e,capabilities:i?{input:r}:void 0}}function fe(e,t){let n=t.trim()?t.split(`,`).map(e=>e.trim()).filter(Boolean):void 0,r={...e.capabilities?.input,file:n},i=r.text||r.image||r.video||Array.isArray(r.file)&&r.file.length>0;return{...e,capabilities:i?{input:r}:void 0}}let he=()=>{let e={...N.variants||{}},t=`new`,n=1;for(;e[t];)t=`new-${n++}`;e[t]={providerOptions:{}},P(t=>({...t,variants:e}))},ge=e=>{let t={...N.variants||{}};delete t[e];let n=Object.keys(t);P(e=>({...e,variants:n.length>0?t:void 0}))},_e=(e,t)=>{if(e===t)return;let n={...N.variants||{}};if(n[t]&&t!==e)return;let r=n[e];delete n[e],n[t]=r,P(e=>({...e,variants:Object.keys(n).length>0?n:void 0}))},ve=(e,t)=>{try{let n=JSON.parse(t);if(typeof n!=`object`||Array.isArray(n)){re(t=>({...t,[e]:!0}));return}let r={...N.variants||{}};r[e]={providerOptions:n},P(e=>({...e,variants:r})),re(t=>({...t,[e]:!1}))}catch{re(t=>({...t,[e]:!0}))}},[ye,be]=(0,X.useState)(new Set);t&&se.defaultProvider===``&&se.defaultModel===``&&ce({defaultProvider:t.defaultProvider,defaultModel:t.defaultModel});let xe=()=>{x(!0),y(null),C(qo)},Se=e=>{y(e.id),x(!1),C({id:e.id,name:e.name})},we=async()=>{if(!(!S.id.trim()||!S.name.trim())){T(!0),_(null);try{b?await r.mutateAsync({id:S.id.trim(),name:S.name.trim()}):await i.mutateAsync({providerId:v,body:{name:S.name.trim()}}),x(!1),y(null)}catch(e){_(e instanceof Error?e.message:`Failed to save provider`)}finally{T(!1)}}},Te=async()=>{if(E){O(!0),_(null);try{await a.mutateAsync(E),D(null)}catch(e){_(e instanceof Error?e.message:`Failed to delete provider`)}finally{O(!1)}}},W=e=>{M(e),A(null),P(Jo),re({})},Ee=e=>{A({providerId:e.providerId,modelId:e.id}),M(null),P({id:e.id,name:e.name,contextWindow:e.contextWindow,maxOutputTokens:e.maxOutputTokens,tier:e.tier,variants:e.variants,capabilities:e.capabilities}),re({})},De=async e=>{if(!(!N.id.trim()||!N.name.trim())){z(!0),_(null);try{if(j){let t={id:N.id.trim(),name:N.name.trim(),contextWindow:N.contextWindow,maxOutputTokens:N.maxOutputTokens,tier:N.tier,variants:N.variants,capabilities:N.capabilities};await o.mutateAsync({providerId:e,body:t})}else{let t={name:N.name.trim(),contextWindow:N.contextWindow,maxOutputTokens:N.maxOutputTokens,tier:N.tier,variants:N.variants,capabilities:N.capabilities};await s.mutateAsync({providerId:e,modelId:k.modelId,body:t})}M(null),A(null)}catch(e){_(e instanceof Error?e.message:`Failed to save model`)}finally{z(!1)}}},Oe=async()=>{if(B){H(!0),_(null);try{await c.mutateAsync({providerId:B.providerId,modelId:B.modelId}),V(null)}catch(e){_(e instanceof Error?e.message:`Failed to delete model`)}finally{H(!1)}}},ke=async()=>{ue(!0),_(null);try{await l.mutateAsync({defaultProvider:se.defaultProvider,defaultModel:se.defaultModel}),oe(!1)}catch(e){_(e instanceof Error?e.message:`Failed to save defaults`)}finally{ue(!1)}},Ae=e=>{be(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},je=[];if(t?.providers.forEach(e=>{e.models.forEach(t=>{je.push({providerId:e.id,providerName:e.name,modelId:t.id,modelName:t.name})})}),n)return(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-8`,children:(0,Z.jsx)(K,{className:`size-6 animate-spin text-muted-foreground`})});if(b||v){let e=t?.providers.find(e=>e.id===v);return(0,Z.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsx)(`h3`,{className:`text-sm font-medium`,children:b?`New Provider`:`Edit: ${e?.name||v}`}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsxs)(Y,{size:`sm`,onClick:we,disabled:w||!S.id.trim()||!S.name.trim(),children:[w?(0,Z.jsx)(K,{className:`size-3 animate-spin`}):(0,Z.jsx)(Le,{className:`size-3`}),`Save`]}),(0,Z.jsx)(Y,{size:`sm`,variant:`ghost`,onClick:()=>{x(!1),y(null)},children:(0,Z.jsx)(Yt,{className:`size-3`})})]})]}),g&&(0,Z.jsx)(`div`,{className:`p-2 rounded bg-destructive/10 text-sm text-destructive`,children:g}),(0,Z.jsxs)(`div`,{className:`space-y-3`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)($,{className:`text-xs`,children:`Provider ID`}),(0,Z.jsx)(ct,{value:S.id,onChange:e=>C(t=>({...t,id:e.target.value})),disabled:!b,placeholder:`e.g., openai`,className:`mt-1 font-mono`}),!b&&(0,Z.jsx)(`p`,{className:`text-[10px] text-muted-foreground mt-1`,children:`ID cannot be changed`})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)($,{className:`text-xs`,children:`Name`}),(0,Z.jsx)(ct,{value:S.name,onChange:e=>C(t=>({...t,name:e.target.value})),placeholder:`e.g., OpenAI`,className:`mt-1`})]})]})]})}if(j||k){let e=j||k?.providerId||``,n=t?.providers.find(t=>t.id===e),r=!j&&k?n?.models.find(e=>e.id===k.modelId):null;return(0,Z.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsx)(`h3`,{className:`text-sm font-medium`,children:j?`New Model (${n?.name||e})`:`Edit: ${r?.name||k?.modelId}`}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsxs)(Y,{size:`sm`,onClick:()=>De(e),disabled:I||!N.id.trim()||!N.name.trim()||Object.values(te).some(Boolean),children:[I?(0,Z.jsx)(K,{className:`size-3 animate-spin`}):(0,Z.jsx)(Le,{className:`size-3`}),`Save`]}),(0,Z.jsx)(Y,{size:`sm`,variant:`ghost`,onClick:()=>{M(null),A(null)},children:(0,Z.jsx)(Yt,{className:`size-3`})})]})]}),g&&(0,Z.jsx)(`div`,{className:`p-2 rounded bg-destructive/10 text-sm text-destructive`,children:g}),(0,Z.jsxs)(`div`,{className:`space-y-3`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)($,{className:`text-xs`,children:`Model ID`}),(0,Z.jsx)(ct,{value:N.id,onChange:e=>P(t=>({...t,id:e.target.value})),disabled:!j,placeholder:`e.g., gpt-4o`,className:`mt-1 font-mono`}),!j&&(0,Z.jsx)(`p`,{className:`text-[10px] text-muted-foreground mt-1`,children:`ID cannot be changed`})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)($,{className:`text-xs`,children:`Display Name`}),(0,Z.jsx)(ct,{value:N.name,onChange:e=>P(t=>({...t,name:e.target.value})),placeholder:`e.g., GPT-4o`,className:`mt-1`})]}),(0,Z.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)($,{className:`text-xs`,children:`Context Window`}),(0,Z.jsx)(ct,{type:`number`,value:N.contextWindow,onChange:e=>P(t=>({...t,contextWindow:parseInt(e.target.value)||0})),min:1,className:`mt-1`})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)($,{className:`text-xs`,children:`Max Output Tokens`}),(0,Z.jsx)(ct,{type:`number`,value:N.maxOutputTokens??``,onChange:e=>P(t=>({...t,maxOutputTokens:e.target.value?parseInt(e.target.value):void 0})),min:1,placeholder:`Optional`,className:`mt-1`})]})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)($,{className:`text-xs`,children:`Tier`}),(0,Z.jsxs)(`select`,{value:N.tier,onChange:e=>P(t=>({...t,tier:e.target.value})),className:`mt-1 h-8 w-full rounded-lg border border-input bg-transparent px-2.5 text-sm`,children:[(0,Z.jsx)(`option`,{value:`budget`,children:`Budget`}),(0,Z.jsx)(`option`,{value:`standard`,children:`Standard`}),(0,Z.jsx)(`option`,{value:`premium`,children:`Premium`})]})]}),(0,Z.jsx)(Ge,{className:`my-2`}),(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsx)($,{className:`text-xs font-medium`,children:`Capabilities`}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,Z.jsxs)(`label`,{className:`flex items-center gap-1.5 cursor-pointer`,children:[(0,Z.jsx)(Uo,{checked:N.capabilities?.input?.text??!1,onCheckedChange:e=>P(t=>de(t,`text`,e))}),(0,Z.jsx)(`span`,{className:`text-xs`,children:`Text`})]}),(0,Z.jsxs)(`label`,{className:`flex items-center gap-1.5 cursor-pointer`,children:[(0,Z.jsx)(Uo,{checked:N.capabilities?.input?.image??!1,onCheckedChange:e=>P(t=>de(t,`image`,e))}),(0,Z.jsx)(`span`,{className:`text-xs`,children:`Image`})]}),(0,Z.jsxs)(`label`,{className:`flex items-center gap-1.5 cursor-pointer`,children:[(0,Z.jsx)(Uo,{checked:N.capabilities?.input?.video??!1,onCheckedChange:e=>P(t=>de(t,`video`,e))}),(0,Z.jsx)(`span`,{className:`text-xs`,children:`Video`})]})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)($,{className:`text-xs`,children:`File Types (MIME, comma-separated)`}),(0,Z.jsx)(ct,{value:N.capabilities?.input?.file?.join(`, `)??``,onChange:e=>P(t=>fe(t,e.target.value)),placeholder:`e.g., application/pdf, text/csv`,className:`mt-1 font-mono text-xs`})]})]}),(0,Z.jsx)(Ge,{className:`my-2`}),(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsx)($,{className:`text-xs font-medium`,children:`Variants`}),(0,Z.jsxs)(Y,{type:`button`,size:`sm`,variant:`ghost`,onClick:he,children:[(0,Z.jsx)(Jt,{className:`size-3`}),`Add Variant`]})]}),N.variants&&Object.keys(N.variants).length>0?(0,Z.jsx)(`div`,{className:`space-y-2`,children:Object.entries(N.variants).map(([e,t])=>(0,Z.jsxs)(`div`,{className:`border rounded p-2 space-y-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(ct,{value:e,onChange:t=>_e(e,t.target.value),placeholder:`variant name`,className:`h-7 text-xs font-mono w-24`}),(0,Z.jsx)(`div`,{className:`flex-1`}),(0,Z.jsx)(Y,{type:`button`,size:`icon-xs`,variant:`ghost`,onClick:()=>ge(e),children:(0,Z.jsx)(Xt,{className:`size-3`})})]}),(0,Z.jsx)(ht,{value:JSON.stringify(t.providerOptions,null,2),onChange:t=>ve(e,t.target.value),placeholder:`{}`,className:`font-mono text-xs min-h-[60px]`,rows:3}),te[e]&&(0,Z.jsx)(`p`,{className:`text-[10px] text-destructive`,children:`Invalid JSON`})]},e))}):(0,Z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No variants configured`})]})]})]})}return(0,Z.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,Z.jsxs)(`div`,{className:`border rounded-lg p-3 space-y-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`h3`,{className:`text-sm font-medium flex items-center gap-2`,children:[(0,Z.jsx)(jn,{className:`size-4`}),`Default Model`]}),(0,Z.jsx)(Y,{size:`sm`,variant:`ghost`,onClick:()=>oe(!ae),children:ae?(0,Z.jsx)(Yt,{className:`size-3`}):(0,Z.jsx)(f,{className:`size-3`})})]}),ae?(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)($,{className:`text-xs`,children:`Default Provider`}),(0,Z.jsxs)(`select`,{value:se.defaultProvider,onChange:e=>ce(t=>({...t,defaultProvider:e.target.value,defaultModel:``})),className:`mt-1 h-8 w-full rounded-lg border border-input bg-transparent px-2.5 text-sm`,children:[(0,Z.jsx)(`option`,{value:``,children:`Select provider...`}),t?.providers.map(e=>(0,Z.jsx)(`option`,{value:e.id,children:e.name},e.id))]})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)($,{className:`text-xs`,children:`Default Model`}),(0,Z.jsxs)(`select`,{value:se.defaultModel,onChange:e=>ce(t=>({...t,defaultModel:e.target.value})),className:`mt-1 h-8 w-full rounded-lg border border-input bg-transparent px-2.5 text-sm`,children:[(0,Z.jsx)(`option`,{value:``,children:`Select model...`}),t?.providers.find(e=>e.id===se.defaultProvider)?.models.map(e=>(0,Z.jsx)(`option`,{value:e.id,children:e.name},e.id))]})]}),(0,Z.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,Z.jsx)(Y,{size:`sm`,variant:`ghost`,onClick:()=>oe(!1),children:`Cancel`}),(0,Z.jsxs)(Y,{size:`sm`,onClick:ke,disabled:le||!se.defaultProvider||!se.defaultModel,children:[le?(0,Z.jsx)(K,{className:`size-3 animate-spin`}):(0,Z.jsx)(Le,{className:`size-3`}),`Save`]})]})]}):(0,Z.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:t?.defaultProvider&&t?.defaultModel?(0,Z.jsxs)(`span`,{children:[t.providers.find(e=>e.id===t.defaultProvider)?.name||t.defaultProvider,` /`,` `,t.providers.find(e=>e.id===t.defaultProvider)?.models.find(e=>e.id===t.defaultModel)?.name||t.defaultModel]}):(0,Z.jsx)(`span`,{className:`italic`,children:`Not configured`})})]}),(0,Z.jsxs)(`div`,{className:`border rounded-lg p-3 space-y-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`h3`,{className:`text-sm font-medium flex items-center gap-2`,children:[(0,Z.jsx)(sn,{className:`size-4`}),`Sync Models`]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground cursor-pointer`,children:[(0,Z.jsx)(Uo,{checked:d===`override`,onCheckedChange:e=>p(e?`override`:`merge`)}),`Override`]}),(0,Z.jsxs)(Y,{size:`sm`,disabled:u.isPending,onClick:()=>{h(null),u.mutate(d,{onSuccess:e=>h(e),onError:e=>_(e instanceof Error?e.message:`Sync failed`)})},children:[u.isPending?(0,Z.jsx)(K,{className:`size-3 animate-spin`}):(0,Z.jsx)(sn,{className:`size-3`}),`Sync`]})]})]}),(0,Z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:d===`merge`?`Add new models from the upstream registry. Existing models are kept.`:`Replace local models with the upstream registry. Custom models will be lost.`}),m&&(0,Z.jsx)(`div`,{className:`p-2 rounded bg-emerald-500/10 text-xs text-emerald-600 dark:text-emerald-400 space-y-0.5`,children:m.mode===`override`?(0,Z.jsxs)(`span`,{children:[`Replaced with upstream (`,m.totalProviders,` providers, `,m.totalModels,` models)`]}):m.addedProviders.length===0&&m.addedModels.length===0?(0,Z.jsx)(`span`,{children:`Models already up to date`}):(0,Z.jsxs)(Z.Fragment,{children:[m.addedProviders.length>0&&(0,Z.jsxs)(`div`,{children:[`Added `,m.addedProviders.length,` provider(s): `,m.addedProviders.join(`, `)]}),m.addedModels.length>0&&(0,Z.jsxs)(`div`,{children:[`Added `,m.addedModels.length,` model(s): `,m.addedModels.join(`, `)]})]})})]}),g&&(0,Z.jsx)(`div`,{className:`p-2 rounded bg-destructive/10 text-sm text-destructive`,children:g}),(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[t?.providers.length||0,` provider`,(t?.providers.length||0)===1?``:`s`]}),(0,Z.jsxs)(Y,{size:`sm`,onClick:xe,children:[(0,Z.jsx)(Jt,{className:`size-3`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`Add Provider`})]})]}),t?.providers.length===0?(0,Z.jsx)(`div`,{className:`text-center py-8 text-sm text-muted-foreground`,children:`No providers configured. Add one to get started.`}):(0,Z.jsx)(`div`,{className:`space-y-2`,children:t?.providers.map(e=>{let n=ye.has(e.id),r=e.id===t.defaultProvider;return(0,Z.jsxs)(nt,{open:!n,onOpenChange:()=>Ae(e.id),className:`border rounded-lg`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between w-full px-3 py-2 text-left hover:bg-muted/50 transition-colors cursor-pointer`,onClick:()=>Ae(e.id),children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,Z.jsx)(it,{className:`size-4 transition-transform ${n?``:`rotate-90`}`}),(0,Z.jsx)(`span`,{className:`text-sm font-medium truncate`,children:e.name}),(0,Z.jsxs)(q,{variant:`secondary`,className:`text-[10px] shrink-0`,children:[e.models.length,` model`,e.models.length===1?``:`s`]}),r&&(0,Z.jsx)(q,{variant:`outline`,className:`text-[10px] shrink-0`,children:`Default`})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,onClick:e=>e.stopPropagation(),children:[(0,Z.jsx)(Y,{size:`icon-xs`,variant:`ghost`,onClick:()=>W(e.id),title:`Add model`,children:(0,Z.jsx)(Jt,{className:`size-3`})}),(0,Z.jsx)(Y,{size:`icon-xs`,variant:`ghost`,onClick:()=>Se(e),title:`Edit provider`,children:(0,Z.jsx)(f,{className:`size-3`})}),(0,Z.jsx)(Y,{size:`icon-xs`,variant:`ghost`,onClick:()=>D(e.id),title:`Delete provider`,children:(0,Z.jsx)(Xt,{className:`size-3`})})]})]}),(0,Z.jsx)(at,{children:(0,Z.jsx)(`div`,{className:`border-t px-3 py-2 space-y-1 bg-muted/30`,children:e.models.length===0?(0,Z.jsx)(`div`,{className:`text-sm text-muted-foreground py-2 pl-6`,children:`No models. Add one to get started.`}):e.models.map(e=>{let n=e.id===t.defaultModel&&e.providerId===t.defaultProvider;return(0,Z.jsxs)(`div`,{className:`flex items-center justify-between py-1.5 pl-6 pr-2 rounded hover:bg-background`,children:[(0,Z.jsxs)(`div`,{className:`flex-1 min-w-0 flex flex-col gap-0.5`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,Z.jsx)(`span`,{className:`text-sm truncate`,children:e.name}),(0,Z.jsx)(Go,{tier:e.tier}),(0,Z.jsx)(Ko,{status:e.runtimeStatus}),n&&(0,Z.jsxs)(q,{variant:`outline`,className:`text-[10px]`,children:[(0,Z.jsx)(ne,{className:`size-2.5`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`Default`})]})]}),(0,Z.jsxs)(`div`,{className:`hidden sm:flex items-center gap-2`,children:[(0,Z.jsx)(`code`,{className:`text-[10px] text-muted-foreground bg-muted px-1 rounded`,children:e.id}),e.capabilities?.input?.text&&(0,Z.jsx)(q,{variant:`outline`,className:`text-[10px] px-1.5 py-0`,children:`Text`}),e.capabilities?.input?.image&&(0,Z.jsx)(q,{variant:`outline`,className:`text-[10px] px-1.5 py-0`,children:`Image`}),e.capabilities?.input?.video&&(0,Z.jsx)(q,{variant:`outline`,className:`text-[10px] px-1.5 py-0`,children:`Video`}),e.capabilities?.input?.file&&e.capabilities.input.file.length>0&&(0,Z.jsxs)(q,{variant:`outline`,className:`text-[10px] px-1.5 py-0`,children:[`Files (`,e.capabilities.input.file.length,`)`]}),e.variants&&Object.keys(e.variants).length>0&&(0,Z.jsxs)(q,{variant:`secondary`,className:`text-[10px] px-1.5 py-0`,children:[Object.keys(e.variants).length,` variant`,Object.keys(e.variants).length===1?``:`s`]})]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,Z.jsx)(Y,{size:`icon-xs`,variant:`ghost`,onClick:()=>Ee(e),title:`Edit model`,children:(0,Z.jsx)(f,{className:`size-2.5`})}),(0,Z.jsx)(Y,{size:`icon-xs`,variant:`ghost`,onClick:()=>V({providerId:e.providerId,modelId:e.id}),title:`Delete model`,children:(0,Z.jsx)(Xt,{className:`size-2.5`})})]})]},e.id)})})})]},e.id)})}),(0,Z.jsx)(Wo,{open:E!==null,onOpenChange:e=>{e||D(null)},title:`Delete Provider`,description:`Are you sure you want to delete "${E}"? All models under this provider will be removed.${t?.defaultProvider===E?` Warning: This is the current default provider.`:``}`,confirmLabel:`Delete`,variant:`destructive`,onConfirm:Te}),(0,Z.jsx)(Wo,{open:B!==null,onOpenChange:e=>{e||V(null)},title:`Delete Model`,description:`Are you sure you want to delete "${B?.modelId}"?${t?.defaultModel===B?.modelId&&t?.defaultProvider===B?.providerId?` Warning: This is the current default model.`:``}`,confirmLabel:`Delete`,variant:`destructive`,onConfirm:Oe})]})}function Xo({sdkClient:e}){let{data:t,isLoading:n}=Se(e),r=de(e),i=Te(e),a=ae(e),o=t?.prompts??[],[s,c]=(0,X.useState)(null),[l,u]=(0,X.useState)(null),[d,p]=(0,X.useState)(!1),[m,h]=(0,X.useState)(``),[g,_]=(0,X.useState)(``),[v,y]=(0,X.useState)(!1),[b,x]=(0,X.useState)(null),S=()=>{p(!0),u(null),h(``),_(`# New Prompt
|
|
10
|
+
|
|
11
|
+
`)},C=e=>{u(e),p(!1),h(e.name),_(e.content)};return d||l?(0,Z.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(Y,{variant:`ghost`,size:`icon`,onClick:()=>{p(!1),u(null),h(``),_(``)},children:(0,Z.jsx)(dt,{className:`size-4`})}),(0,Z.jsx)(`h3`,{className:`text-sm font-medium`,children:d?`New Prompt`:`Edit: ${l?.name}`})]}),(0,Z.jsx)(Y,{size:`sm`,onClick:async()=>{if(m.trim()){y(!0),c(null);try{d?await r.mutateAsync({name:m.trim(),content:g}):l&&await i.mutateAsync({name:l.name,body:{content:g}}),p(!1),u(null)}catch(e){c(e instanceof Error?e.message:`Failed to save prompt`)}finally{y(!1)}}},disabled:v||!m.trim(),children:v?(0,Z.jsx)(K,{className:`size-3 animate-spin`}):`Save`})]}),s&&(0,Z.jsx)(`div`,{className:`p-2 rounded bg-destructive/10 text-sm text-destructive`,children:s}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`label`,{className:`text-sm font-medium mb-1 block`,children:`Name`}),(0,Z.jsx)(ct,{value:m,onChange:e=>h(e.target.value),disabled:!d,placeholder:`prompt-name`,className:`font-mono`})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`label`,{className:`text-sm font-medium mb-1 block`,children:`Content (Markdown)`}),(0,Z.jsx)(`textarea`,{value:g,onChange:e=>_(e.target.value),className:`w-full h-48 sm:h-64 p-3 rounded-lg border bg-background font-mono text-sm resize-y`,placeholder:`# Prompt Title\\n\\nPrompt content here...`})]})]}):n?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-8`,children:(0,Z.jsx)(K,{className:`size-6 animate-spin text-muted-foreground`})}):(0,Z.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[o.length,` prompt`,o.length===1?``:`s`]}),(0,Z.jsxs)(Y,{size:`sm`,onClick:S,children:[(0,Z.jsx)(Jt,{className:`size-3`,"data-icon":`inline-start`}),`New Prompt`]})]}),s&&(0,Z.jsx)(`div`,{className:`p-2 rounded bg-destructive/10 text-sm text-destructive`,children:s}),o.length===0?(0,Z.jsx)(`div`,{className:`text-center py-8 text-sm text-muted-foreground`,children:`No prompts yet. Create one to get started.`}):(0,Z.jsx)(`div`,{className:`space-y-2`,children:o.map(e=>(0,Z.jsxs)(`div`,{className:`flex items-center justify-between p-2.5 sm:p-3 rounded-lg border hover:bg-muted/50 cursor-pointer min-w-0 overflow-hidden`,onClick:()=>C(e),children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 sm:gap-3 min-w-0 flex-1`,children:[(0,Z.jsx)(Kt,{className:`size-4 text-muted-foreground shrink-0 hidden sm:block`}),(0,Z.jsxs)(`div`,{className:`flex flex-col flex-1 min-w-0 gap-0.5 sm:gap-1 overflow-hidden`,children:[(0,Z.jsx)(`div`,{className:`text-sm font-medium truncate`,children:e.name}),e.description&&(0,Z.jsx)(`div`,{className:`text-xs text-muted-foreground line-clamp-1`,children:e.description})]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-0.5 sm:gap-1 shrink-0`,onClick:e=>e.stopPropagation(),children:[(0,Z.jsx)(Y,{size:`icon-xs`,variant:`ghost`,onClick:()=>C(e),title:`Edit prompt`,children:(0,Z.jsx)(f,{className:`size-3`})}),(0,Z.jsx)(Y,{size:`icon-xs`,variant:`ghost`,onClick:()=>x(e.name),title:`Delete prompt`,children:(0,Z.jsx)(Xt,{className:`size-3`})})]})]},e.name))}),(0,Z.jsx)(Wo,{open:b!==null,onOpenChange:e=>{e||x(null)},title:`Delete Prompt`,description:`Are you sure you want to delete the prompt "${b}"? This cannot be undone.`,confirmLabel:`Delete`,variant:`destructive`,onConfirm:async()=>{if(b)try{await a.mutateAsync(b),x(null)}catch(e){c(e instanceof Error?e.message:`Failed to delete prompt`)}}})]})}var Zo=[{value:`primary`,label:`Primary`},{value:`subagent`,label:`Subagent`},{value:`both`,label:`Both`}],Qo={name:``,description:``,systemPrompt:``,mode:`primary`,model:``,provider:``,variant:``,tools:[],temperature:``,canSpawnSubagentsMode:`none`,canSpawnSubagentsList:[],skills:[],isDefault:!1};function $o({sdkClient:e}){let{data:t,isLoading:n}=re(e),{data:r}=B(e),i=se(e),a=I(e),o=we(e),s=t?.preconfigs??[],[c,l]=(0,X.useState)(null),[u,d]=(0,X.useState)(null),[p,m]=(0,X.useState)(!1),[h,g]=(0,X.useState)(Qo),[_,v]=(0,X.useState)(!1),[y,b]=(0,X.useState)(null),[,x]=(0,X.useState)(!1),[S,C]=(0,X.useState)([]),[w,T]=(0,X.useState)(``),[E,D]=(0,X.useState)(``),[O,k]=(0,X.useState)(``),A=G(e=>e.models),[j,M]=(0,X.useState)(!1),N=h.model?A.find(e=>e.id===h.model):null,P=N?.variants?Object.keys(N.variants):[],F=A.reduce((e,t)=>{let n=t.providerName||t.providerId;return e[n]||(e[n]=[]),e[n].push(t),e},{}),L=s.filter(e=>{let t=e.mode??`primary`,n=t===`subagent`||t===`both`,r=!u||e.id!==u.id;return n&&r});(0,X.useEffect)(()=>{r?.tools&&C(r.tools)},[r]);let R=()=>{m(!0),d(null),g(Qo),T(``),D(``),k(``),M(!1)},z=e=>{d(e),m(!1),g({name:e.name,description:e.description||``,systemPrompt:e.systemPrompt||``,mode:e.mode||`primary`,model:e.model||``,provider:e.provider||``,variant:e.variant||``,tools:e.tools??[],temperature:e.settings?.temperature==null?``:String(e.settings.temperature),canSpawnSubagentsMode:e.canSpawnSubagents===!0?`all`:e.canSpawnSubagents===!1||e.canSpawnSubagents===null||e.canSpawnSubagents===void 0?`none`:`specific`,canSpawnSubagentsList:Array.isArray(e.canSpawnSubagents)?e.canSpawnSubagents:[],skills:e.skills??[],isDefault:e.isDefault}),T(``),D(``),k(``)};return p||u?(0,Z.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(Y,{variant:`ghost`,size:`icon`,onClick:()=>{m(!1),d(null),g(Qo),T(``),D(``),k(``),M(!1)},children:(0,Z.jsx)(dt,{className:`size-4`})}),(0,Z.jsx)(`h3`,{className:`text-sm font-medium`,children:p?`New Preconfig`:`Edit: ${u?.name}`})]}),(0,Z.jsx)(Y,{size:`sm`,onClick:async()=>{if(h.name.trim()){v(!0),l(null);try{let e=null;if(h.temperature.trim()){let t=parseFloat(h.temperature);if(isNaN(t)||t<.1||t>.9){l(`Temperature must be between 0.1 and 0.9`),v(!1);return}e={temperature:t}}let t=null;t=h.canSpawnSubagentsMode===`all`?!0:h.canSpawnSubagentsMode===`specific`?h.canSpawnSubagentsList.length>0?h.canSpawnSubagentsList:[]:!1;let n={name:h.name.trim(),description:h.description.trim(),systemPrompt:h.systemPrompt,mode:h.mode,model:h.model.trim()||null,provider:h.provider.trim()||null,variant:h.variant.trim()||null,tools:h.tools.length>0?h.tools:null,settings:e,canSpawnSubagents:t,skills:h.skills.length>0?h.skills:null,isDefault:h.isDefault,format:`md`};p?await i.mutateAsync(n):u&&await a.mutateAsync({id:u.id,body:n}),m(!1),d(null)}catch(e){l(e instanceof Error?e.message:`Failed to save preconfig`)}finally{v(!1)}}},disabled:_||!h.name.trim(),children:_?(0,Z.jsx)(K,{className:`size-3 animate-spin`}):`Save`})]}),c&&(0,Z.jsx)(`div`,{className:`p-2 rounded bg-destructive/10 text-sm text-destructive`,children:c}),(0,Z.jsxs)(`div`,{className:`space-y-3`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)($,{className:`text-sm`,children:`Name`}),(0,Z.jsx)(ct,{value:h.name,onChange:e=>g({...h,name:e.target.value}),placeholder:`My Agent`})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)($,{className:`text-sm`,children:`Description`}),(0,Z.jsx)(ct,{value:h.description,onChange:e=>g({...h,description:e.target.value}),placeholder:`Description...`})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)($,{className:`text-sm`,children:`Mode`}),(0,Z.jsx)(`select`,{value:h.mode,onChange:e=>g({...h,mode:e.target.value}),className:`w-full h-9 rounded-md border bg-background px-3 text-sm`,children:Zo.map(e=>(0,Z.jsx)(`option`,{value:e.value,children:e.label},e.value))})]}),(0,Z.jsxs)(`div`,{className:`grid grid-cols-1 gap-3`,children:[(0,Z.jsxs)(`div`,{className:`space-y-1`,children:[(0,Z.jsx)($,{className:`text-sm`,children:`Model`}),(0,Z.jsxs)(St,{open:j,onOpenChange:M,children:[(0,Z.jsx)(gt,{asChild:!0,children:(0,Z.jsxs)(Y,{variant:`outline`,role:`combobox`,"aria-expanded":j,className:`w-full justify-between font-mono text-sm h-9`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 truncate`,children:[(0,Z.jsx)(Tt,{className:`size-4 shrink-0 text-muted-foreground`}),N?(0,Z.jsx)(`span`,{className:`truncate`,children:N.name}):(0,Z.jsx)(`span`,{className:`text-muted-foreground`,children:`Use server default`})]}),(0,Z.jsx)(vt,{className:`size-3 shrink-0 opacity-50`})]})}),(0,Z.jsx)(bt,{className:`w-[280px] p-0`,align:`start`,children:(0,Z.jsxs)(ft,{children:[(0,Z.jsx)(pt,{placeholder:`Search models...`}),(0,Z.jsxs)(Ct,{className:`max-h-[50vh] overflow-y-auto`,children:[(0,Z.jsx)(yt,{children:`No model found.`}),(0,Z.jsx)(xt,{children:(0,Z.jsxs)(_t,{onSelect:()=>{g(e=>({...e,model:``,provider:``,variant:``})),M(!1)},className:`justify-between`,children:[(0,Z.jsx)(`span`,{className:`text-muted-foreground`,children:`Use server default`}),!h.model&&(0,Z.jsx)(Le,{className:`size-4`})]})}),Object.entries(F).map(([e,t])=>(0,Z.jsx)(xt,{heading:e,children:t.map(e=>(0,Z.jsxs)(_t,{value:`${e.name} ${e.id}`,onSelect:()=>{g(t=>({...t,model:e.id,provider:e.providerId,variant:``})),M(!1)},className:`justify-between`,children:[(0,Z.jsx)(`span`,{className:`truncate`,children:e.name}),(0,Z.jsx)(Le,{className:nn(`size-4 shrink-0`,h.model===e.id?`opacity-100`:`opacity-0`)})]},e.id))},e))]})]})})]}),(0,Z.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Provider is set automatically based on the selected model`})]}),P.length>0&&(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)($,{className:`text-sm`,children:`Variant`}),(0,Z.jsxs)(`select`,{value:h.variant,onChange:e=>g(t=>({...t,variant:e.target.value})),className:`w-full h-9 rounded-md border bg-background px-3 text-sm`,children:[(0,Z.jsx)(`option`,{value:``,children:`Default`}),P.map(e=>(0,Z.jsx)(`option`,{value:e,children:e},e))]}),(0,Z.jsx)(`p`,{className:`text-[10px] text-muted-foreground mt-1`,children:`Model variant from models.json (e.g., reasoning effort)`})]})]}),(0,Z.jsx)(Ge,{className:`my-1`}),(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)($,{className:`text-sm`,children:`Default Preconfig`}),(0,Z.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Only one preconfig can be the default`})]}),(0,Z.jsx)(Uo,{checked:h.isDefault,onCheckedChange:e=>g({...h,isDefault:e})})]}),(0,Z.jsx)(Ge,{className:`my-1`}),(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsx)($,{className:`text-sm`,children:`Tools`}),(0,Z.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:h.tools.length===0?`No tools selected — all available tools will be enabled`:`${h.tools.length} tool${h.tools.length===1?``:`s`} selected`}),S.length>0&&(0,Z.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:S.map(e=>{let t=h.tools.includes(e.name);return(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>{g(n=>({...n,tools:t?n.tools.filter(t=>t!==e.name):[...n.tools,e.name]}))},className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-md text-xs border transition-colors ${t?`bg-primary text-primary-foreground border-primary`:`bg-background border-border hover:bg-muted`}`,title:e.description,children:[t&&(0,Z.jsx)(Le,{className:`size-2.5`}),e.name]},e.name)})}),(0,Z.jsx)(`div`,{className:`flex gap-1.5`,children:(0,Z.jsx)(ct,{value:w,onChange:e=>T(e.target.value),placeholder:`Add custom tool ID...`,className:`h-7 text-xs font-mono`,onKeyDown:e=>{if(e.key===`Enter`&&w.trim()){e.preventDefault();let t=w.trim();h.tools.includes(t)||g(e=>({...e,tools:[...e.tools,t]})),T(``)}}})}),h.tools.filter(e=>!S.some(t=>t.name===e)).length>0&&(0,Z.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:h.tools.filter(e=>!S.some(t=>t.name===e)).map(e=>(0,Z.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-md text-xs bg-primary/10 border border-primary/30`,children:[e,(0,Z.jsx)(`button`,{type:`button`,onClick:()=>g(t=>({...t,tools:t.tools.filter(t=>t!==e)})),className:`hover:text-destructive`,children:(0,Z.jsx)(Yt,{className:`size-2.5`})})]},e))})]}),(0,Z.jsx)(Ge,{className:`my-1`}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)($,{className:`text-sm`,children:`Temperature`}),(0,Z.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Model sampling temperature (0.1–0.9). Leave empty to use server default.`}),(0,Z.jsx)(ct,{type:`number`,value:h.temperature,onChange:e=>g({...h,temperature:e.target.value}),placeholder:`0.2`,min:`0.1`,max:`0.9`,step:`0.1`,className:`font-mono`})]}),(0,Z.jsx)(Ge,{className:`my-1`}),(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsx)($,{className:`text-sm`,children:`Can Spawn Subagents`}),(0,Z.jsxs)(`select`,{value:h.canSpawnSubagentsMode,onChange:e=>g({...h,canSpawnSubagentsMode:e.target.value}),className:`w-full h-9 rounded-md border bg-background px-3 text-sm`,children:[(0,Z.jsx)(`option`,{value:`none`,children:`No — cannot spawn subagents`}),(0,Z.jsx)(`option`,{value:`all`,children:`Yes — all available subagents`}),(0,Z.jsx)(`option`,{value:`specific`,children:`Specific — choose which subagents`})]}),h.canSpawnSubagentsMode===`specific`&&(0,Z.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Z.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Select from available subagents or enter a preconfig ID manually`}),L.length>0&&(0,Z.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:L.map(e=>{let t=h.canSpawnSubagentsList.includes(e.id);return(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>{g(n=>({...n,canSpawnSubagentsList:t?n.canSpawnSubagentsList.filter(t=>t!==e.id):[...n.canSpawnSubagentsList,e.id]}))},className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-md text-xs border transition-colors ${t?`bg-primary text-primary-foreground border-primary`:`bg-background border-border hover:bg-muted`}`,title:e.description||e.id,children:[t&&(0,Z.jsx)(Le,{className:`size-2.5`}),e.name]},e.id)})}),(0,Z.jsx)(`div`,{className:`flex gap-1.5`,children:(0,Z.jsx)(ct,{value:E,onChange:e=>D(e.target.value),placeholder:`Preconfig ID...`,className:`h-7 text-xs font-mono`,onKeyDown:e=>{if(e.key===`Enter`&&E.trim()){e.preventDefault();let t=E.trim();h.canSpawnSubagentsList.includes(t)||g(e=>({...e,canSpawnSubagentsList:[...e.canSpawnSubagentsList,t]})),D(``)}}})}),h.canSpawnSubagentsList.filter(e=>!L.some(t=>t.id===e)).length>0&&(0,Z.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:h.canSpawnSubagentsList.filter(e=>!L.some(t=>t.id===e)).map(e=>(0,Z.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-md text-xs bg-primary/10 border border-primary/30 font-mono`,children:[e,(0,Z.jsx)(`button`,{type:`button`,onClick:()=>g(t=>({...t,canSpawnSubagentsList:t.canSpawnSubagentsList.filter(t=>t!==e)})),className:`hover:text-destructive`,children:(0,Z.jsx)(Yt,{className:`size-2.5`})})]},e))})]})]}),(0,Z.jsx)(Ge,{className:`my-1`}),(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsx)($,{className:`text-sm`,children:`Skills`}),(0,Z.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:h.skills.length===0?`No skills selected — all available skills will be enabled`:`${h.skills.length} skill${h.skills.length===1?``:`s`} selected`}),(0,Z.jsx)(`div`,{className:`flex gap-1.5`,children:(0,Z.jsx)(ct,{value:O,onChange:e=>k(e.target.value),placeholder:`Skill name...`,className:`h-7 text-xs font-mono`,onKeyDown:e=>{if(e.key===`Enter`&&O.trim()){e.preventDefault();let t=O.trim();h.skills.includes(t)||g(e=>({...e,skills:[...e.skills,t]})),k(``)}}})}),h.skills.length>0&&(0,Z.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:h.skills.map(e=>(0,Z.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-md text-xs bg-primary/10 border border-primary/30`,children:[e,(0,Z.jsx)(`button`,{type:`button`,onClick:()=>g(t=>({...t,skills:t.skills.filter(t=>t!==e)})),className:`hover:text-destructive`,children:(0,Z.jsx)(Yt,{className:`size-2.5`})})]},e))})]}),(0,Z.jsx)(Ge,{className:`my-1`}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)($,{className:`text-sm`,children:`System Prompt`}),(0,Z.jsx)(`textarea`,{value:h.systemPrompt,onChange:e=>g({...h,systemPrompt:e.target.value}),className:`w-full h-48 p-3 rounded-lg border bg-background text-sm resize-y`,placeholder:`System prompt content...`})]})]})]}):n?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-8`,children:(0,Z.jsx)(K,{className:`size-6 animate-spin text-muted-foreground`})}):(0,Z.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[s.length,` preconfig`,s.length===1?``:`s`]}),(0,Z.jsxs)(Y,{size:`sm`,onClick:R,children:[(0,Z.jsx)(Jt,{className:`size-3`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`New Preconfig`})]})]}),c&&(0,Z.jsx)(`div`,{className:`p-2 rounded bg-destructive/10 text-sm text-destructive`,children:c}),s.length===0?(0,Z.jsx)(`div`,{className:`text-center py-8 text-sm text-muted-foreground`,children:`No preconfigs yet. Create one to get started.`}):(0,Z.jsx)(`div`,{className:`space-y-2`,children:s.map(e=>(0,Z.jsxs)(`div`,{className:`flex items-center justify-between p-2.5 sm:p-3 rounded-lg border hover:bg-muted/50 cursor-pointer`,onClick:()=>z(e),children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 sm:gap-3 flex-1 min-w-0`,children:[(0,Z.jsx)(zn,{className:`size-4 text-muted-foreground shrink-0 hidden sm:block`}),(0,Z.jsxs)(`div`,{className:`flex flex-col flex-1 min-w-0 gap-0.5 sm:gap-1 overflow-hidden`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 sm:gap-2 min-w-0`,children:[(0,Z.jsx)(`span`,{className:`text-sm font-medium truncate`,children:e.name}),e.isDefault&&(0,Z.jsxs)(q,{variant:`default`,className:`text-[10px] px-1 sm:px-1.5 py-0`,children:[(0,Z.jsx)(ne,{className:`size-2.5 sm:mr-0.5`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`Default`})]}),e.mode&&e.mode!==`primary`&&(0,Z.jsxs)(q,{variant:`secondary`,className:`text-[10px] px-1 sm:px-1.5 py-0`,children:[(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:e.mode}),(0,Z.jsx)(`span`,{className:`sm:hidden`,children:e.mode===`subagent`?`SA`:`B`})]})]}),e.description&&(0,Z.jsx)(`div`,{className:`text-xs text-muted-foreground line-clamp-1`,children:e.description})]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-0.5 sm:gap-1 shrink-0`,onClick:e=>e.stopPropagation(),children:[(0,Z.jsx)(Y,{size:`icon-xs`,variant:`ghost`,onClick:()=>z(e),title:`Edit preconfig`,children:(0,Z.jsx)(f,{className:`size-3`})}),!e.isDefault&&(0,Z.jsx)(Y,{size:`icon-xs`,variant:`ghost`,onClick:()=>b(e.id),title:`Delete preconfig`,children:(0,Z.jsx)(Xt,{className:`size-3`})})]})]},e.id))}),(0,Z.jsx)(Wo,{open:y!==null,onOpenChange:e=>{e||b(null)},title:`Delete Preconfig`,description:`Are you sure you want to delete this preconfig? This cannot be undone.`,confirmLabel:`Delete`,variant:`destructive`,onConfirm:async()=>{if(y){x(!0);try{await o.mutateAsync(y),b(null)}catch(e){l(e instanceof Error?e.message:`Failed to delete preconfig`)}finally{x(!1)}}}})]})}function es(e){let t=(0,Q.c)(26),{open:n,onOpenChange:r,sdkClient:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsxs)(un,{children:[(0,Z.jsx)(fn,{children:`Configuration`}),(0,Z.jsx)(ln,{children:`Manage credentials, OAuth providers, models, prompts, and preconfigs`})]}),t[0]=a):a=t[0];let o;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,Z.jsxs)(lo,{value:`providers`,children:[(0,Z.jsx)(Et,{className:`size-4`,"data-icon":`inline-start`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`Credentials`})]}),t[1]=o):o=t[1];let s;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,Z.jsxs)(lo,{value:`oauth`,children:[(0,Z.jsx)(Hn,{className:`size-4`,"data-icon":`inline-start`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`OAuth`})]}),t[2]=s):s=t[2];let c;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,Z.jsxs)(lo,{value:`models`,children:[(0,Z.jsx)(jn,{className:`size-4`,"data-icon":`inline-start`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`Models`})]}),t[3]=c):c=t[3];let l;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,Z.jsxs)(lo,{value:`prompts`,children:[(0,Z.jsx)(Kt,{className:`size-4`,"data-icon":`inline-start`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`Prompts`})]}),t[4]=l):l=t[4];let u;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,Z.jsxs)(co,{className:`grid w-full grid-cols-5`,children:[o,s,c,l,(0,Z.jsxs)(lo,{value:`preconfigs`,children:[(0,Z.jsx)(zn,{className:`size-4`,"data-icon":`inline-start`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`Preconfigs`})]})]}),t[5]=u):u=t[5];let d;t[6]===i?d=t[7]:(d=(0,Z.jsx)(uo,{value:`providers`,className:`mt-4`,children:(0,Z.jsx)(V,{className:`h-[calc(100dvh-14rem)] sm:h-[500px]`,children:(0,Z.jsx)(Vo,{sdkClient:i})})}),t[6]=i,t[7]=d);let f;t[8]===i?f=t[9]:(f=(0,Z.jsx)(uo,{value:`oauth`,className:`mt-4`,children:(0,Z.jsx)(V,{className:`h-[calc(100dvh-14rem)] sm:h-[500px]`,children:(0,Z.jsx)(Ho,{sdkClient:i})})}),t[8]=i,t[9]=f);let p;t[10]===i?p=t[11]:(p=(0,Z.jsx)(uo,{value:`models`,className:`mt-4`,children:(0,Z.jsx)(V,{className:`h-[calc(100dvh-14rem)] sm:h-[500px]`,children:(0,Z.jsx)(Yo,{sdkClient:i})})}),t[10]=i,t[11]=p);let m;t[12]===i?m=t[13]:(m=(0,Z.jsx)(uo,{value:`prompts`,className:`mt-4`,children:(0,Z.jsx)(V,{className:`h-[calc(100dvh-14rem)] sm:h-[500px]`,children:(0,Z.jsx)(Xo,{sdkClient:i})})}),t[12]=i,t[13]=m);let h;t[14]===i?h=t[15]:(h=(0,Z.jsx)(uo,{value:`preconfigs`,className:`mt-4`,children:(0,Z.jsx)(V,{className:`h-[calc(100dvh-14rem)] sm:h-[500px]`,children:(0,Z.jsx)($o,{sdkClient:i})})}),t[14]=i,t[15]=h);let g;t[16]!==m||t[17]!==h||t[18]!==d||t[19]!==f||t[20]!==p?(g=(0,Z.jsxs)(dn,{className:`max-w-[calc(100vw-1rem)] sm:max-w-[800px] max-h-[calc(100dvh-2rem)] sm:max-h-[85vh]`,children:[a,(0,Z.jsxs)(oo,{defaultValue:`providers`,className:`mt-4`,children:[u,d,f,p,m,h]})]}),t[16]=m,t[17]=h,t[18]=d,t[19]=f,t[20]=p,t[21]=g):g=t[21];let _;return t[22]!==r||t[23]!==n||t[24]!==g?(_=(0,Z.jsx)(pn,{open:n,onOpenChange:r,children:g}),t[22]=r,t[23]=n,t[24]=g,t[25]=_):_=t[25],_}function ts({sdkClient:e}){let{data:t,isLoading:n,error:r}=B(e),{data:i,isLoading:a}=te(e),o=z(e),s=H(e),c=t?.tools??[],l=i?.envVars??[],u=n||a,d=r?.message??o.error?.message??s.error?.message??null,[f,p]=(0,X.useState)(null),[m,h]=(0,X.useState)(``),[g,_]=(0,X.useState)(!1),[v,y]=(0,X.useState)(null),b=async t=>{if(!(!e||!m.trim())){y(t);try{await o.mutateAsync({key:t,value:m.trim()}),p(null),h(``),_(!1)}catch{}finally{y(null)}}},x=async t=>{if(e){y(t);try{await s.mutateAsync(t)}catch{}finally{y(null)}}},S=new Map;for(let e of l)if(e.usedBy)for(let t of e.usedBy){let n=S.get(t)||[];n.push(e.key),S.set(t,n)}let C=e=>{let t=e.env||[];if(t.length===0)return{total:0,missing:0};let n=t.filter(e=>{let t=l.find(t=>t.key===e);return!t||!t.configured});return{total:t.length,missing:n.length}};return u?(0,Z.jsx)(`div`,{className:`flex items-center justify-center p-8`,children:(0,Z.jsx)(K,{className:`size-6 animate-spin text-muted-foreground`})}):d&&c.length===0?(0,Z.jsx)(`div`,{className:`p-4 text-sm text-destructive`,children:d}):(0,Z.jsxs)(`div`,{className:`p-4 space-y-6`,children:[d&&(0,Z.jsx)(`div`,{className:`p-2 rounded bg-destructive/10 text-sm text-destructive`,children:d}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(`h3`,{className:`text-sm font-semibold flex items-center gap-2 mb-3`,children:[(0,Z.jsx)(Ht,{className:`size-4`}),`Loaded Tools (`,c.length,`)`]}),(0,Z.jsx)(`div`,{className:`space-y-1`,children:c.map(e=>{let t=C(e);return(0,Z.jsxs)(`div`,{className:`flex items-center justify-between p-2.5 rounded-lg border`,children:[(0,Z.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Z.jsx)(`span`,{className:`text-sm font-medium truncate`,children:e.name}),(0,Z.jsx)(`p`,{className:`text-xs text-muted-foreground mt-0.5 line-clamp-2`,children:e.description})]}),(0,Z.jsx)(`div`,{className:`shrink-0 ml-2`,children:t.total===0?(0,Z.jsxs)(q,{variant:`secondary`,className:`text-xs`,children:[(0,Z.jsx)(Le,{className:`size-3 mr-1`}),`Ready`]}):t.missing>0?(0,Z.jsxs)(q,{variant:`outline`,className:`text-xs text-orange-500 border-orange-300`,children:[(0,Z.jsx)(Rt,{className:`size-3 mr-1`}),t.missing,` env missing`]}):(0,Z.jsxs)(q,{variant:`default`,className:`text-xs`,children:[(0,Z.jsx)(jt,{className:`size-3 mr-1`}),`Configured`]})})]},e.name)})})]}),l.length>0&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(Ge,{}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(`h3`,{className:`text-sm font-semibold flex items-center gap-2 mb-3`,children:[`Environment Variables (`,l.length,`)`]}),(0,Z.jsx)(`div`,{className:`space-y-2`,children:l.map(e=>(0,Z.jsxs)(`div`,{className:`p-3 rounded-lg border`,children:[(0,Z.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e.configured?(0,Z.jsx)(Le,{className:`size-4 text-green-500`}):(0,Z.jsx)(Yt,{className:`size-4 text-orange-500`}),(0,Z.jsx)(`span`,{className:`text-sm font-mono font-medium`,children:e.key}),e.sensitive&&(0,Z.jsx)(Mt,{className:`size-3 text-muted-foreground`}),(0,Z.jsx)(q,{variant:e.configured?`default`:`secondary`,className:`text-xs`,children:e.configured?`Configured`:`Not set`})]})}),e.usedBy&&e.usedBy.length>0&&(0,Z.jsxs)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:[`Required by: `,e.usedBy.join(`, `)]}),e.configured&&!e.sensitive&&e.value&&f!==e.key&&(0,Z.jsxs)(`p`,{className:`text-xs text-muted-foreground mt-1 font-mono`,children:[`Value: `,e.value]}),f===e.key?(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 mt-2`,children:[(0,Z.jsxs)(`div`,{className:`relative flex-1`,children:[(0,Z.jsx)(ct,{type:e.sensitive?g?`text`:`password`:`text`,value:m,onChange:e=>h(e.target.value),placeholder:e.sensitive?`Enter secret value...`:`Enter value...`,className:`h-8 text-sm pr-8`,onKeyDown:t=>{t.key===`Enter`&&b(e.key),t.key===`Escape`&&(p(null),h(``))},autoFocus:!0}),e.sensitive&&(0,Z.jsx)(Y,{type:`button`,variant:`ghost`,size:`icon`,className:`absolute right-0 top-0 h-8 w-8`,onClick:()=>_(!g),children:g?(0,Z.jsx)(Mn,{className:`size-3`}):(0,Z.jsx)(Ot,{className:`size-3`})})]}),(0,Z.jsx)(Y,{size:`sm`,onClick:()=>b(e.key),disabled:!m.trim()||v===e.key,children:v===e.key?(0,Z.jsx)(K,{className:`size-3 animate-spin`}):(0,Z.jsx)(Le,{className:`size-3`})}),(0,Z.jsx)(Y,{size:`sm`,variant:`ghost`,onClick:()=>{p(null),h(``)},children:(0,Z.jsx)(Yt,{className:`size-3`})})]}):(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 mt-2`,children:[(0,Z.jsx)(Y,{size:`sm`,variant:`outline`,onClick:()=>{p(e.key),h(``),_(!1)},disabled:v===e.key,children:e.configured?`Update`:`Set Value`}),e.configured&&(0,Z.jsx)(Y,{size:`sm`,variant:`ghost`,onClick:()=>x(e.key),disabled:v===e.key,children:v===e.key?(0,Z.jsx)(K,{className:`size-3 animate-spin`}):(0,Z.jsx)(Xt,{className:`size-3`})})]})]},e.key))})]})]}),l.length===0&&c.length>0&&(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground text-center py-4`,children:`No environment variables required by installed tools.`})]})}function ns(e){let t=(0,Q.c)(8),{open:n,onOpenChange:r,sdkClient:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsxs)(un,{children:[(0,Z.jsx)(fn,{children:`Tools`}),(0,Z.jsx)(ln,{children:`View loaded tools and manage their environment variables`})]}),t[0]=a):a=t[0];let o;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,Z.jsx)(co,{className:`grid w-full grid-cols-1`,children:(0,Z.jsxs)(lo,{value:`tools`,children:[(0,Z.jsx)(Ht,{className:`size-4`,"data-icon":`inline-start`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`Tools & Env`})]})}),t[1]=o):o=t[1];let s;t[2]===i?s=t[3]:(s=(0,Z.jsxs)(dn,{className:`max-w-[calc(100vw-1rem)] sm:max-w-[800px] max-h-[calc(100dvh-2rem)] sm:max-h-[85vh]`,children:[a,(0,Z.jsxs)(oo,{defaultValue:`tools`,className:`mt-4`,children:[o,(0,Z.jsx)(uo,{value:`tools`,className:`mt-4`,children:(0,Z.jsx)(V,{className:`h-[calc(100dvh-14rem)] sm:h-[500px]`,children:(0,Z.jsx)(ts,{sdkClient:i})})})]})]}),t[2]=i,t[3]=s);let c;return t[4]!==r||t[5]!==n||t[6]!==s?(c=(0,Z.jsx)(pn,{open:n,onOpenChange:r,children:s}),t[4]=r,t[5]=n,t[6]=s,t[7]=c):c=t[7],c}function rs(e){let t=(0,Q.c)(6),{action:n}=e;switch(n){case`read`:{let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(Ot,{className:`size-3`,"data-icon":`inline-start`}),t[0]=e):e=t[0],e}case`write`:{let e;return t[1]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(f,{className:`size-3`,"data-icon":`inline-start`}),t[1]=e):e=t[1],e}case`delete`:{let e;return t[2]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(Yn,{className:`size-3`,"data-icon":`inline-start`}),t[2]=e):e=t[2],e}case`request`:{let e;return t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(In,{className:`size-3`,"data-icon":`inline-start`}),t[3]=e):e=t[3],e}case`execute`:{let e;return t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(p,{className:`size-3`,"data-icon":`inline-start`}),t[4]=e):e=t[4],e}default:{let e;return t[5]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(Ie,{className:`size-3`,"data-icon":`inline-start`}),t[5]=e):e=t[5],e}}}function is(e){return new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`})}function as(e){switch(e){case`once`:return`Once`;case`session`:return`Session`;case`workspace`:return`Workspace`;case`always`:return`Workspace`;default:return e}}function os(e){switch(e){case`read`:return`Read`;case`write`:return`Write`;case`delete`:return`Delete`;case`request`:return`Network`;case`execute`:return`Execute`;default:return null}}function ss(e){switch(e){case`file`:return`File`;case`path`:return`Path`;case`directory`:return`Directory`;case`shell-command`:return`Shell`;case`network`:return`Network`;default:return e}}function cs(e){return e.length===0?`All`:e.map(e=>e.startsWith(`file:`)?e.slice(5):e.startsWith(`shell-command:`)?e.slice(15):e).join(`, `)}function ls(e){let t=(0,Q.c)(48),{permission:n,onRevoke:r}=e,i=!!n.revokedAt,a;t[0]===n.action?a=t[1]:(a=os(n.action),t[0]=n.action,t[1]=a);let o=a,s;t[2]===n.resource?s=t[3]:(s=ss(n.resource),t[2]=n.resource,t[3]=s);let c=s,l;t[4]===n.patterns?l=t[5]:(l=cs(n.patterns),t[4]=n.patterns,t[5]=l);let u=l,d=i?`outline`:`secondary`,f;t[6]===n.action?f=t[7]:(f=(0,Z.jsx)(rs,{action:n.action}),t[6]=n.action,t[7]=f);let p=o?`${c} ${o}`:c,m;t[8]!==d||t[9]!==f||t[10]!==p?(m=(0,Z.jsxs)(q,{variant:d,children:[f,p]}),t[8]=d,t[9]=f,t[10]=p,t[11]=m):m=t[11];let h;t[12]===n.toolName?h=t[13]:(h=(0,Z.jsx)(q,{variant:`outline`,className:`text-xs`,children:n.toolName}),t[12]=n.toolName,t[13]=h);let g;t[14]===n.scope?g=t[15]:(g=as(n.scope),t[14]=n.scope,t[15]=g);let _;t[16]===g?_=t[17]:(_=(0,Z.jsx)(q,{variant:`outline`,className:`text-xs`,children:g}),t[16]=g,t[17]=_);let v;t[18]===n.matcher?v=t[19]:(v=n.matcher!==`exact`&&(0,Z.jsx)(q,{variant:`outline`,className:`text-xs text-muted-foreground`,children:n.matcher}),t[18]=n.matcher,t[19]=v);let y;t[20]===i?y=t[21]:(y=i&&(0,Z.jsx)(q,{variant:`outline`,className:`text-muted-foreground`,children:`Revoked`}),t[20]=i,t[21]=y);let b;t[22]!==_||t[23]!==v||t[24]!==y||t[25]!==m||t[26]!==h?(b=(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 mb-1 flex-wrap`,children:[m,h,_,v,y]}),t[22]=_,t[23]=v,t[24]=y,t[25]=m,t[26]=h,t[27]=b):b=t[27];let x;t[28]===u?x=t[29]:(x=(0,Z.jsx)(`p`,{className:`text-sm font-mono break-all text-muted-foreground`,children:u}),t[28]=u,t[29]=x);let S;t[30]===n.grantedAt?S=t[31]:(S=is(n.grantedAt),t[30]=n.grantedAt,t[31]=S);let C;t[32]===n.revokedAt?C=t[33]:(C=n.revokedAt&&` • Revoked ${is(n.revokedAt)}`,t[32]=n.revokedAt,t[33]=C);let w;t[34]!==S||t[35]!==C?(w=(0,Z.jsxs)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:[`Saved `,S,C]}),t[34]=S,t[35]=C,t[36]=w):w=t[36];let T;t[37]!==b||t[38]!==x||t[39]!==w?(T=(0,Z.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[b,x,w]}),t[37]=b,t[38]=x,t[39]=w,t[40]=T):T=t[40];let E;t[41]!==i||t[42]!==r||t[43]!==n.id?(E=!i&&(0,Z.jsx)(Y,{variant:`ghost`,size:`icon`,onClick:()=>r(n.id),className:`size-8 text-destructive hover:text-destructive`,children:(0,Z.jsx)(Xt,{className:`size-4`})}),t[41]=i,t[42]=r,t[43]=n.id,t[44]=E):E=t[44];let D;return t[45]!==T||t[46]!==E?(D=(0,Z.jsxs)(`div`,{className:`flex items-start justify-between gap-4 py-3 border-b border-border last:border-0 min-w-0`,children:[T,E]}),t[45]=T,t[46]=E,t[47]=D):D=t[47],D}function us(e){let t=(0,Q.c)(58),{open:n,onOpenChange:r,permissions:i,onRefreshPermissions:a,onRevokePermission:o,onRevokeAllPermissions:s,workspaceName:c}=e,[l,u]=(0,X.useState)(!1),d,f,p,m,h,g,_,v,y,b,x,S,C,w;if(t[0]!==r||t[1]!==a||t[2]!==o||t[3]!==n||t[4]!==i||t[5]!==c){let e=i.filter(fs),s=i.filter(ds);p=pn,h=n,g=r,f=dn,C=`sm:max-w-[600px] max-h-[80vh]`;let l;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,Z.jsxs)(fn,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(Ie,{className:`size-5`}),`Workspace Permissions`]}),t[20]=l):l=t[20];let T=c?`Manage tool permissions for ${c}`:`Manage tool permissions for this workspace`;t[21]===T?w=t[22]:(w=(0,Z.jsxs)(un,{children:[l,(0,Z.jsx)(ln,{children:T})]}),t[21]=T,t[22]=w),b=`flex flex-col gap-4`;let E;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)($,{className:`text-sm font-medium`,children:`Saved Permissions`}),(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Tool permissions saved for this workspace`})]}),t[23]=E):E=t[23];let D;t[24]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,Z.jsx)(sn,{className:`size-4`}),t[24]=D):D=t[24];let O;t[25]===a?O=t[26]:(O=(0,Z.jsx)(Y,{variant:`outline`,size:`icon`,onClick:a,className:`size-8`,children:D}),t[25]=a,t[26]=O);let k=e.length>0&&(0,Z.jsxs)(Y,{variant:`destructive`,size:`sm`,onClick:()=>u(!0),children:[(0,Z.jsx)(Xt,{className:`size-4`,"data-icon":`inline-start`}),`Revoke All`]});t[27]!==O||t[28]!==k?(x=(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[E,(0,Z.jsxs)(`div`,{className:`flex gap-2`,children:[O,k]})]}),t[27]=O,t[28]=k,t[29]=x):x=t[29],t[30]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,Z.jsx)(Ge,{}),t[30]=S):S=t[30],d=V,m=`h-[350px]`,_=e.length===0&&s.length===0&&(0,Z.jsxs)(`div`,{className:`text-center py-8 text-muted-foreground text-sm`,children:[`No saved permissions yet.`,(0,Z.jsx)(`br`,{}),`Saved permission grants will appear here after approval.`]}),v=e.length>0&&(0,Z.jsxs)(`div`,{className:`mb-4`,children:[(0,Z.jsxs)(`h4`,{className:`text-xs uppercase text-muted-foreground mb-2 font-medium`,children:[`Active (`,e.length,`)`]}),e.map(e=>(0,Z.jsx)(ls,{permission:e,onRevoke:o},e.id))]}),y=s.length>0&&(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(`h4`,{className:`text-xs uppercase text-muted-foreground mb-2 font-medium`,children:[`Revoked (`,s.length,`)`]}),s.map(e=>(0,Z.jsx)(ls,{permission:e,onRevoke:o},e.id))]}),t[0]=r,t[1]=a,t[2]=o,t[3]=n,t[4]=i,t[5]=c,t[6]=d,t[7]=f,t[8]=p,t[9]=m,t[10]=h,t[11]=g,t[12]=_,t[13]=v,t[14]=y,t[15]=b,t[16]=x,t[17]=S,t[18]=C,t[19]=w}else d=t[6],f=t[7],p=t[8],m=t[9],h=t[10],g=t[11],_=t[12],v=t[13],y=t[14],b=t[15],x=t[16],S=t[17],C=t[18],w=t[19];let T;t[31]!==d||t[32]!==m||t[33]!==_||t[34]!==v||t[35]!==y?(T=(0,Z.jsxs)(d,{className:m,children:[_,v,y]}),t[31]=d,t[32]=m,t[33]=_,t[34]=v,t[35]=y,t[36]=T):T=t[36];let E;t[37]!==T||t[38]!==b||t[39]!==x||t[40]!==S?(E=(0,Z.jsxs)(`div`,{className:b,children:[x,S,T]}),t[37]=T,t[38]=b,t[39]=x,t[40]=S,t[41]=E):E=t[41];let D;t[42]!==f||t[43]!==E||t[44]!==C||t[45]!==w?(D=(0,Z.jsxs)(f,{className:C,children:[w,E]}),t[42]=f,t[43]=E,t[44]=C,t[45]=w,t[46]=D):D=t[46];let O;t[47]===s?O=t[48]:(O=()=>{s(),u(!1)},t[47]=s,t[48]=O);let k;t[49]!==l||t[50]!==O?(k=(0,Z.jsx)(Wo,{open:l,onOpenChange:u,title:`Revoke All Permissions`,description:`This will revoke all saved permissions for this workspace. The tools will need to be approved again when used.`,confirmLabel:`Revoke All`,variant:`destructive`,onConfirm:O}),t[49]=l,t[50]=O,t[51]=k):k=t[51];let A;return t[52]!==p||t[53]!==h||t[54]!==g||t[55]!==D||t[56]!==k?(A=(0,Z.jsxs)(p,{open:h,onOpenChange:g,children:[D,k]}),t[52]=p,t[53]=h,t[54]=g,t[55]=D,t[56]=k,t[57]=A):A=t[57],A}function ds(e){return e.revokedAt}function fs(e){return!e.revokedAt}function ps(e){let t=(0,Q.c)(7),{workspaceId:n,path:r,sdkClient:i,enabled:a}=e,{data:o,isLoading:s,error:c,refetch:l}=oe(i,n,r,a),u=o??null,d=c?.message??null,f;t[0]===l?f=t[1]:(f=()=>{l()},t[0]=l,t[1]=f);let p;return t[2]!==s||t[3]!==u||t[4]!==d||t[5]!==f?(p={data:u,loading:s,error:d,reload:f},t[2]=s,t[3]=u,t[4]=d,t[5]=f,t[6]=p):p=t[6],p}function ms(e){let t=(0,Q.c)(36),{workspaceId:n,target:r,sdkClient:i,open:a,onOpenChange:o}=e,s=r?.path,c=a&&!!r&&!!n,l;t[0]!==i||t[1]!==s||t[2]!==c||t[3]!==n?(l={workspaceId:n,path:s,sdkClient:i,enabled:c},t[0]=i,t[1]=s,t[2]=c,t[3]=n,t[4]=l):l=t[4];let{data:u,loading:d,error:f,reload:p}=ps(l);if(!r)return null;let m=hs,h;t[5]===r.name?h=t[6]:(h=(0,Z.jsx)(fn,{className:`text-base font-semibold truncate`,children:r.name}),t[5]=r.name,t[6]=h);let g;t[7]===r.path?g=t[8]:(g=(0,Z.jsx)(ln,{className:`text-xs text-muted-foreground truncate`,children:r.path}),t[7]=r.path,t[8]=g);let _;t[9]===u?_=t[10]:(_=u&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 mt-1.5`,children:[(0,Z.jsx)(`span`,{className:`text-xs px-1.5 py-0.5 rounded bg-muted text-muted-foreground capitalize`,children:u.kind}),(0,Z.jsx)(`span`,{className:`text-xs px-1.5 py-0.5 rounded bg-muted text-muted-foreground`,children:`read-only`}),(0,Z.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[m(u.size),u.language&&` · ${u.language}`]})]}),t[9]=u,t[10]=_);let v;t[11]!==h||t[12]!==g||t[13]!==_?(v=(0,Z.jsxs)(un,{className:`px-6 pt-5 pb-3 border-b border-border shrink-0`,children:[h,g,_]}),t[11]=h,t[12]=g,t[13]=_,t[14]=v):v=t[14];let y;t[15]===d?y=t[16]:(y=d&&(0,Z.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,Z.jsx)(K,{className:`size-5 animate-spin text-muted-foreground`})}),t[15]=d,t[16]=y);let b;t[17]!==f||t[18]!==d||t[19]!==p?(b=f&&!d&&(0,Z.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full text-center p-8`,children:[(0,Z.jsx)(Wt,{className:`size-8 text-muted-foreground mb-3`}),(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground mb-3`,children:f}),(0,Z.jsxs)(Y,{variant:`outline`,size:`sm`,onClick:p,children:[(0,Z.jsx)(sn,{className:`size-3.5 mr-1.5`}),`Retry`]})]}),t[17]=f,t[18]=d,t[19]=p,t[20]=b):b=t[20];let x;t[21]!==u||t[22]!==f||t[23]!==d?(x=u&&!d&&!f&&(0,Z.jsx)($a,{preview:u}),t[21]=u,t[22]=f,t[23]=d,t[24]=x):x=t[24];let S;t[25]!==x||t[26]!==y||t[27]!==b?(S=(0,Z.jsxs)(`div`,{className:`flex-1 min-h-0 overflow-hidden`,children:[y,b,x]}),t[25]=x,t[26]=y,t[27]=b,t[28]=S):S=t[28];let C;t[29]!==S||t[30]!==v?(C=(0,Z.jsxs)(dn,{showCloseButton:!0,className:`sm:max-w-5xl w-[min(92vw,1100px)] h-[85vh] flex flex-col p-0 gap-0`,children:[v,S]}),t[29]=S,t[30]=v,t[31]=C):C=t[31];let w;return t[32]!==o||t[33]!==a||t[34]!==C?(w=(0,Z.jsx)(pn,{open:a,onOpenChange:o,children:C}),t[32]=o,t[33]=a,t[34]=C,t[35]=w):w=t[35],w}function hs(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function gs(e){let t=(0,Q.c)(50),{apiToken:n,isConnected:r,sdkClient:i,permissions:a,onLogout:o,onRefreshPermissions:s,onRevokePermission:c,onRevokeAllPermissions:l,onConfigurationClose:u}=e,d=G(ys),{showSettings:f,showMCPDialog:p,showConfiguration:m,showTools:h,showWorkspacePermissions:g,setShowSettings:_,setShowMCPDialog:v,setShowConfiguration:y,setShowTools:b,setShowWorkspacePermissions:x}=He(si(vs)),{filePreviewTarget:S,closeFilePreview:C}=He(si(_s)),w;t[0]!==n||t[1]!==r||t[2]!==o||t[3]!==i||t[4]!==_||t[5]!==f?(w=(0,Z.jsx)(Io,{open:f,onOpenChange:_,apiToken:n,isConnected:r,onLogout:o,sdkClient:i}),t[0]=n,t[1]=r,t[2]=o,t[3]=i,t[4]=_,t[5]=f,t[6]=w):w=t[6];let T=d?.id,E=d?.path,D;t[7]!==i||t[8]!==v||t[9]!==p||t[10]!==T||t[11]!==E?(D=(0,Z.jsx)(Bo,{open:p,onOpenChange:v,workspaceId:T,workspacePath:E,sdkClient:i}),t[7]=i,t[8]=v,t[9]=p,t[10]=T,t[11]=E,t[12]=D):D=t[12];let O;t[13]!==d||t[14]!==l?(O=()=>{d?.id&&l(d.id)},t[13]=d,t[14]=l,t[15]=O):O=t[15];let k=d?.name,A;t[16]!==s||t[17]!==c||t[18]!==a||t[19]!==x||t[20]!==g||t[21]!==O||t[22]!==k?(A=(0,Z.jsx)(us,{open:g,onOpenChange:x,permissions:a,onRefreshPermissions:s,onRevokePermission:c,onRevokeAllPermissions:O,workspaceName:k}),t[16]=s,t[17]=c,t[18]=a,t[19]=x,t[20]=g,t[21]=O,t[22]=k,t[23]=A):A=t[23];let j;t[24]!==u||t[25]!==y?(j=e=>{y(e),e||u()},t[24]=u,t[25]=y,t[26]=j):j=t[26];let M;t[27]!==i||t[28]!==m||t[29]!==j?(M=(0,Z.jsx)(es,{open:m,onOpenChange:j,sdkClient:i}),t[27]=i,t[28]=m,t[29]=j,t[30]=M):M=t[30];let N;t[31]!==i||t[32]!==b||t[33]!==h?(N=(0,Z.jsx)(ns,{open:h,onOpenChange:b,sdkClient:i}),t[31]=i,t[32]=b,t[33]=h,t[34]=N):N=t[34];let P=d?.id,F=S!==null,I;t[35]===C?I=t[36]:(I=e=>{e||C()},t[35]=C,t[36]=I);let L;t[37]!==S||t[38]!==i||t[39]!==P||t[40]!==F||t[41]!==I?(L=(0,Z.jsx)(ms,{workspaceId:P,target:S,sdkClient:i,open:F,onOpenChange:I}),t[37]=S,t[38]=i,t[39]=P,t[40]=F,t[41]=I,t[42]=L):L=t[42];let R;return t[43]!==w||t[44]!==N||t[45]!==L||t[46]!==D||t[47]!==A||t[48]!==M?(R=(0,Z.jsxs)(Z.Fragment,{children:[w,D,A,M,N,L]}),t[43]=w,t[44]=N,t[45]=L,t[46]=D,t[47]=A,t[48]=M,t[49]=R):R=t[49],R}function _s(e){return{filePreviewTarget:e.filePreviewTarget,closeFilePreview:e.closeFilePreview}}function vs(e){return{showSettings:e.showSettings,showMCPDialog:e.showMCPDialog,showConfiguration:e.showConfiguration,showTools:e.showTools,showWorkspacePermissions:e.showWorkspacePermissions,setShowSettings:e.setShowSettings,setShowMCPDialog:e.setShowMCPDialog,setShowConfiguration:e.setShowConfiguration,setShowTools:e.setShowTools,setShowWorkspacePermissions:e.setShowWorkspacePermissions}}function ys(e){return e.activeWorkspace}function bs(){let e=(0,Q.c)(52),t=ke(),n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n={from:`/server/$serverId`,strict:!1},e[0]=n):n=e[0];let r=u(n).serverId,{servers:i,removeFromQuickConnectionsByWorkspace:o,quickConnections:s}=De(),l;e[1]!==r||e[2]!==i?(l=i.find(e=>e.id===r)??null,e[1]=r,e[2]=i,e[3]=l):l=e[3];let d=l,f;e[4]===t?f=e[5]:(f=e=>t.navigate({to:e.to,params:e.params}),e[4]=t,e[5]=f);let p;e[6]!==d||e[7]!==s||e[8]!==o||e[9]!==r||e[10]!==f?(p={serverId:r,activeServer:d,navigate:f,removeFromQuickConnectionsByWorkspace:o,quickConnections:s},e[6]=d,e[7]=s,e[8]=o,e[9]=r,e[10]=f,e[11]=p):p=e[11];let m=Ea(p),h=(0,X.useRef)(null),g=(0,X.useRef)(null),_=(0,X.useRef)(null),v=(0,X.useRef)(null),y=(0,X.useRef)(null),b=(0,X.useRef)(null),{showFilesPanel:x,filesPanelWidth:S,sessionsPanelWidth:C}=A(si(xs)),w;e[12]===Symbol.for(`react.memo_cache_sentinel`)?(w={sidebarRef:v,chatInputRef:h,terminalPanelRef:g,filesPanelRef:_,scrollToBottomRef:y,autoFollowToggleRef:b},e[12]=w):w=e[12];let T=w,D=`${C}px`,O;e[13]===D?O=e[14]:(O={"--sidebar-width":D,"--header-height":c()?`4.625rem`:`2.75rem`},e[13]=D,e[14]=O);let k=O,j;e[15]===Symbol.for(`react.memo_cache_sentinel`)?(j=(0,Z.jsx)(Oa,{}),e[15]=j):j=e[15];let M;e[16]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,Z.jsx)(Pe.Provider,{value:T,children:(0,Z.jsx)(a,{})}),e[16]=M):M=e[16];let N;e[17]===m?N=e[18]:(N=(0,Z.jsx)(lt.Provider,{value:m,children:M}),e[17]=m,e[18]=N);let P;e[19]===m.sdkClient?P=e[20]:(P=(0,Z.jsx)(eo,{ref:_,sdkClient:m.sdkClient}),e[19]=m.sdkClient,e[20]=P);let F=`relative bg-transparent transition-[width] duration-200 ease-linear shrink-0 ${x?``:`w-0`}`,I=x?S:0,L;e[21]===I?L=e[22]:(L={width:I},e[21]=I,e[22]=L);let R;e[23]!==F||e[24]!==L?(R=(0,Z.jsx)(`div`,{"data-panel-gap":`files`,className:F,style:L}),e[23]=F,e[24]=L,e[25]=R):R=e[25];let z;e[26]!==N||e[27]!==P||e[28]!==R?(z=(0,Z.jsxs)(`div`,{className:`flex flex-1 min-h-0`,children:[N,P,R]}),e[26]=N,e[27]=P,e[28]=R,e[29]=z):z=e[29];let B;e[30]===Symbol.for(`react.memo_cache_sentinel`)?(B=()=>b.current?.toggle(),e[30]=B):B=e[30];let V;e[31]!==r||e[32]!==m.createSession||e[33]!==m.handleInterruptSession?(V=(0,Z.jsx)(Ha,{sidebarRef:v,terminalPanelRef:g,filesPanelRef:_,chatInputRef:h,handleInterruptSession:m.handleInterruptSession,serverId:r,createSession:m.createSession,onToggleAutoFollow:B}),e[31]=r,e[32]=m.createSession,e[33]=m.handleInterruptSession,e[34]=V):V=e[34];let ee;e[35]===t?ee=e[36]:(ee=()=>t.invalidate(),e[35]=t,e[36]=ee);let H;e[37]!==m.apiToken||e[38]!==m.connected||e[39]!==m.handleLogout||e[40]!==m.permissions||e[41]!==m.refreshPermissions||e[42]!==m.revokeAllPermissions||e[43]!==m.revokePermission||e[44]!==m.sdkClient||e[45]!==ee?(H=(0,Z.jsx)(gs,{apiToken:m.apiToken,isConnected:m.connected,sdkClient:m.sdkClient,permissions:m.permissions,onLogout:m.handleLogout,onRefreshPermissions:m.refreshPermissions,onRevokePermission:m.revokePermission,onRevokeAllPermissions:m.revokeAllPermissions,onConfigurationClose:ee}),e[37]=m.apiToken,e[38]=m.connected,e[39]=m.handleLogout,e[40]=m.permissions,e[41]=m.refreshPermissions,e[42]=m.revokeAllPermissions,e[43]=m.revokePermission,e[44]=m.sdkClient,e[45]=ee,e[46]=H):H=e[46];let U;return e[47]!==z||e[48]!==V||e[49]!==H||e[50]!==k?(U=(0,Z.jsxs)(E,{panelId:`sessions`,defaultOpen:!0,className:`flex-col`,style:k,children:[j,z,V,H]}),e[47]=z,e[48]=V,e[49]=H,e[50]=k,e[51]=U):U=e[51],U}function xs(e){return{showFilesPanel:e.showFilesPanel,filesPanelWidth:e.filesPanelWidth,sessionsPanelWidth:e.sessionsPanelWidth}}var Ss=()=>{let e=(0,Q.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,Z.jsx)(Qr,{children:(0,Z.jsx)(bs,{})}),e[0]=t):t=e[0],t};export{Ss as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./SessionContent-BtiY3mu_.js";var t=e;export{t as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./SessionContent-BtiY3mu_.js";var t=e;export{t as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,o as t,r as n,t as r}from"./compiler-runtime-DZXZ41-q.js";import{n as i,r as ee,s as a}from"./ServerContext-DwL_fyZz.js";import{t as o}from"./useRouter-C_VHQC31.js";import{t as te}from"./useNavigate-D0TSLH_-.js";import{t as s}from"./arrow-left-CVfrLbQ4.js";var c=r(),l=t(n(),1),u=e();function d(e){let t=(0,c.c)(58),{error:n}=e,r=te(),d=o(),{addServer:f,servers:p}=i(),[m,h]=(0,l.useState)(``),[g,ne]=(0,l.useState)(`localhost:8742`),[_,re]=(0,l.useState)(``),[v,y]=(0,l.useState)(!1),[b,x]=(0,l.useState)(!1),[S,C]=(0,l.useState)(null),[w,T]=(0,l.useState)(!1),E;t[0]!==f||t[1]!==m||t[2]!==r||t[3]!==p||t[4]!==_||t[5]!==g||t[6]!==b?(E=async e=>{e.preventDefault();let t=m.trim(),n=g.trim(),i=b?_.trim():``;if(!t){C(`Please enter a server name`);return}if(p.some(e=>e.name.toLowerCase()===t.toLowerCase())){C(`A server named "${t}" already exists`);return}if(!n){C(`Please enter a server URL`);return}if(b&&!i){C(`Please enter an API token.`);return}C(null),T(!0);let o=await ee(n,i||void 0);if(T(!1),!o.success){C(o.error??`Connection failed`),o.authEnabled&&!b&&x(!0);return}r({to:`/server/$serverId`,params:{serverId:f(t,a(n),i||void 0).id}})},t[0]=f,t[1]=m,t[2]=r,t[3]=p,t[4]=_,t[5]=g,t[6]=b,t[7]=E):E=t[7];let D=E,O;t[8]!==r||t[9]!==d.history?(O=()=>{d.history.length>1?d.history.back():r({to:`/`})},t[8]=r,t[9]=d.history,t[10]=O):O=t[10];let k=O,A;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(A=(0,u.jsx)(s,{className:`w-5 h-5`}),t[11]=A):A=t[11];let j;t[12]===k?j=t[13]:(j=(0,u.jsx)(`button`,{type:`button`,onClick:k,className:`absolute left-4 top-1/2 -translate-y-1/2 p-1.5 rounded-md text-muted-foreground hover:text-foreground hover:bg-accent transition-colors`,"aria-label":`Go back`,children:A}),t[12]=k,t[13]=j);let M,N;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,u.jsx)(`h1`,{className:`text-2xl font-bold text-foreground`,children:`Add Server`}),N=(0,u.jsx)(`p`,{className:`text-muted-foreground mt-1`,children:`Connect to a Jean2 server`}),t[14]=M,t[15]=N):(M=t[14],N=t[15]);let P;t[16]===j?P=t[17]:(P=(0,u.jsxs)(`div`,{className:`px-6 pt-6 pb-4 text-center border-b border-border relative`,children:[j,M,N]}),t[16]=j,t[17]=P);let F;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(F=(0,u.jsx)(`label`,{htmlFor:`serverName`,className:`text-sm font-medium text-foreground`,children:`Server Name`}),t[18]=F):F=t[18];let I;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(I=e=>{h(e.target.value),C(null)},t[19]=I):I=t[19];let L;t[20]===m?L=t[21]:(L=(0,u.jsxs)(`div`,{className:`space-y-2`,children:[F,(0,u.jsx)(`input`,{id:`serverName`,type:`text`,value:m,onChange:I,placeholder:`Production`,className:`w-full px-3 py-2 bg-background border border-input rounded-lg text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent transition-colors`})]}),t[20]=m,t[21]=L);let R;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(R=(0,u.jsx)(`label`,{htmlFor:`serverUrl`,className:`text-sm font-medium text-foreground`,children:`Server URL`}),t[22]=R):R=t[22];let z;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(z=e=>{ne(e.target.value),C(null)},t[23]=z):z=t[23];let B;t[24]===g?B=t[25]:(B=(0,u.jsxs)(`div`,{className:`space-y-2`,children:[R,(0,u.jsx)(`input`,{id:`serverUrl`,type:`text`,value:g,onChange:z,placeholder:`localhost:8742`,className:`w-full px-3 py-2 bg-background border border-input rounded-lg text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent transition-colors`})]}),t[24]=g,t[25]=B);let V;t[26]===Symbol.for(`react.memo_cache_sentinel`)?(V=(0,u.jsx)(`label`,{className:`text-sm font-medium text-foreground`,children:`API Token`}),t[26]=V):V=t[26];let H;t[27]===b?H=t[28]:(H=()=>x(!b),t[27]=b,t[28]=H);let U=`relative inline-flex h-5 w-9 items-center rounded-full transition-colors ${b?`bg-primary`:`bg-muted`}`,W=`inline-block h-3.5 w-3.5 transform rounded-full bg-white transition-transform ${b?`translate-x-4.5`:`translate-x-0.5`}`,G;t[29]===W?G=t[30]:(G=(0,u.jsx)(`span`,{className:W}),t[29]=W,t[30]=G);let K;t[31]!==H||t[32]!==U||t[33]!==G?(K=(0,u.jsxs)(`div`,{className:`flex items-center justify-between`,children:[V,(0,u.jsx)(`button`,{type:`button`,onClick:H,className:U,children:G})]}),t[31]=H,t[32]=U,t[33]=G,t[34]=K):K=t[34];let q;t[35]!==v||t[36]!==_||t[37]!==b?(q=b&&(0,u.jsxs)(`div`,{className:`relative`,children:[(0,u.jsx)(`input`,{id:`token`,type:v?`text`:`password`,value:_,onChange:e=>{re(e.target.value),C(null)},placeholder:`Required if auth is enabled`,className:`w-full px-3 py-2 pr-10 bg-background border border-input rounded-lg text-foreground font-mono text-sm placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent transition-colors`}),(0,u.jsx)(`button`,{type:`button`,onClick:()=>y(!v),className:`absolute right-2 top-1/2 -translate-y-1/2 p-1 text-muted-foreground hover:text-foreground transition-colors`,"aria-label":v?`Hide token`:`Show token`,children:v?(0,u.jsx)(`svg`,{className:`w-5 h-5`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,children:(0,u.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:2,d:`M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21`})}):(0,u.jsxs)(`svg`,{className:`w-5 h-5`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,children:[(0,u.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:2,d:`M15 12a3 3 0 11-6 0 3 3 0 016 0z`}),(0,u.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:2,d:`M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z`})]})})]}),t[35]=v,t[36]=_,t[37]=b,t[38]=q):q=t[38];let J;t[39]!==K||t[40]!==q?(J=(0,u.jsxs)(`div`,{className:`space-y-2`,children:[K,q]}),t[39]=K,t[40]=q,t[41]=J):J=t[41];let Y;t[42]!==n||t[43]!==S?(Y=(S||n)&&(0,u.jsx)(`div`,{className:`px-3 py-2 bg-destructive/10 border border-destructive/20 rounded-lg text-destructive text-sm`,children:S||n}),t[42]=n,t[43]=S,t[44]=Y):Y=t[44];let X=w?`Connecting...`:`Add Server`,Z;t[45]!==w||t[46]!==X?(Z=(0,u.jsx)(`button`,{type:`submit`,disabled:w,className:`w-full py-2.5 bg-primary text-primary-foreground font-medium rounded-lg hover:bg-primary/90 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 transition-colors disabled:opacity-50 disabled:cursor-not-allowed`,children:X}),t[45]=w,t[46]=X,t[47]=Z):Z=t[47];let Q;t[48]!==D||t[49]!==L||t[50]!==B||t[51]!==J||t[52]!==Y||t[53]!==Z?(Q=(0,u.jsxs)(`form`,{onSubmit:D,className:`p-6 space-y-4`,children:[L,B,J,Y,Z]}),t[48]=D,t[49]=L,t[50]=B,t[51]=J,t[52]=Y,t[53]=Z,t[54]=Q):Q=t[54];let $;return t[55]!==Q||t[56]!==P?($=(0,u.jsx)(`div`,{className:`w-full h-full flex items-center justify-center bg-background dark:bg-gradient-to-br dark:from-muted dark:via-background dark:to-muted p-4`,children:(0,u.jsx)(`div`,{className:`w-full max-w-md`,children:(0,u.jsxs)(`div`,{className:`bg-card border border-border rounded-xl shadow-2xl overflow-hidden`,children:[P,Q]})})}),t[55]=Q,t[56]=P,t[57]=$):$=t[57],$}var f=d;export{f as component};
|