@vantran-se/openchamber-web 1.24.3 → 1.24.4
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/dist/assets/{CodeMirrorCommentWidgets-BjJHrzmU.js → CodeMirrorCommentWidgets-B4a0JkUz.js} +1 -1
- package/dist/assets/{DiffView-COVQhWGd.js → DiffView-B2CD9wC8.js} +1 -1
- package/dist/assets/{FilesView-B1V5JxFX.js → FilesView-C4vMFclc.js} +1 -1
- package/dist/assets/{GitView-CDOJy5Ay.js → GitView-Byu2DY7s.js} +1 -1
- package/dist/assets/{GuestAttachDialog-D3S0Rjic.js → GuestAttachDialog-B808E0-d.js} +1 -1
- package/dist/assets/{JsonTreeView-D0C9nU7K.js → JsonTreeView-VW_7czo3.js} +1 -1
- package/dist/assets/{LinearIssuesView-D7FKg1XJ.js → LinearIssuesView-EzGNCGrd.js} +1 -1
- package/dist/assets/{MarkdownImageGallery-BrFjAVEf.js → MarkdownImageGallery-B2YUDFaB.js} +1 -1
- package/dist/assets/{MarkdownRendererImpl-DWepTafh.js → MarkdownRendererImpl-B4ikIzR3.js} +1 -1
- package/dist/assets/{OnboardingScreen-Dyxxiqdt.js → OnboardingScreen-CQHBSTEi.js} +1 -1
- package/dist/assets/{PatchDiff-DnEhjXcC.js → PatchDiff-DCjGhlYV.js} +1 -1
- package/dist/assets/{PierreDiffViewer-DyxZVVVR.js → PierreDiffViewer-CEDZNkU2.js} +1 -1
- package/dist/assets/{PlanView-LW2z_EAP.js → PlanView-D3x-pTkZ.js} +1 -1
- package/dist/assets/{PluginPane-B4tKno2h.js → PluginPane-DEcgDQ9h.js} +1 -1
- package/dist/assets/{SettingsView-DEaMulN9.js → SettingsView-CSinuH-1.js} +1 -1
- package/dist/assets/{SettingsWindow-FLDJXOgQ.js → SettingsWindow-B5CHoJFZ.js} +1 -1
- package/dist/assets/{SubmoduleDiffSummary-CvVwD-Vi.js → SubmoduleDiffSummary-oxeACCWs.js} +1 -1
- package/dist/assets/{ToolOutputDialog-BiP0x2Rw.js → ToolOutputDialog-tLNWmfcW.js} +1 -1
- package/dist/assets/{ToolPartDiffPreview-CkR4msKP.js → ToolPartDiffPreview-CflzmK-x.js} +1 -1
- package/dist/assets/{VirtualizedFileDiff-0pyr_mHY.js → VirtualizedFileDiff-NU0FHFhT.js} +1 -1
- package/dist/assets/{WalkthroughView-yNj4nOP5.js → WalkthroughView-BZyjhqHv.js} +1 -1
- package/dist/assets/{appThemeRegistry-BuUKhbYQ.js → appThemeRegistry-DLicw4dH.js} +1 -1
- package/dist/assets/{commitAndPush-DvJKa3Ks.js → commitAndPush-BDftrjr6.js} +1 -1
- package/dist/assets/{computeVirtualFileMetrics-DxTBMuu-.js → computeVirtualFileMetrics-DlWlEM3x.js} +1 -1
- package/dist/assets/{de-DgxgFyGG.js → de-Bro6_zyl.js} +1 -1
- package/dist/assets/{es-BFsZj5F_.js → es-Bb9XQZvd.js} +1 -1
- package/dist/assets/{fr-jdZ5KKQi.js → fr-Dgfzn-IL.js} +1 -1
- package/dist/assets/{index-CKHjPKbq.js → index-CtQNmqUL.js} +1 -1
- package/dist/assets/{index-Cbci4i1W.js → index-Dqc6USl3.js} +1 -1
- package/dist/assets/{isDiffPlainText-D7FkBMP6.js → isDiffPlainText-CO4e5J_S.js} +1 -1
- package/dist/assets/{isFilePlainText-CL2vsrIZ.js → isFilePlainText-ue6kCou7.js} +1 -1
- package/dist/assets/{ja-C5kKrhO4.js → ja-BYsakGFh.js} +1 -1
- package/dist/assets/{ko-DXDTT_0O.js → ko-BSaQz9aN.js} +1 -1
- package/dist/assets/{main-CgXMBNvG.js → main-B62_pjL5.js} +2 -2
- package/dist/assets/{main-CZALtVek.js → main-BEdcOI2P.js} +4 -4
- package/dist/assets/{markdownCore-Dh7WEsdM.js → markdownCore-CK48LG0z.js} +1 -1
- package/dist/assets/{miniChat-CwTmDixi.js → miniChat-LT8Rqofr.js} +2 -2
- package/dist/assets/{mobile-CLf2vCtO.js → mobile-CqarEynh.js} +2 -2
- package/dist/assets/{patchFileDiff-Bsba8KFp.js → patchFileDiff-D7QVlovD.js} +1 -1
- package/dist/assets/{pl-D-7x4Y8Q.js → pl-OIviPdoj.js} +1 -1
- package/dist/assets/{pt-BR-CSBZrHa8.js → pt-BR-Cltg-E6s.js} +1 -1
- package/dist/assets/{renderElectronMiniChatApp-C5gAFBk0.js → renderElectronMiniChatApp-COyLTtZx.js} +2 -2
- package/dist/assets/{renderMobileApp-V4hYd32H.js → renderMobileApp-BC1MHg6g.js} +3 -3
- package/dist/assets/{runtimeEndpointReset-DhlHCn-2.js → runtimeEndpointReset-DdrazOVH.js} +3 -3
- package/dist/assets/{scheduledTasksApi-DzjbLd8P.js → scheduledTasksApi-B2SWMGEU.js} +1 -1
- package/dist/assets/{shikiHighlight-8_3csmr6.js → shikiHighlight-BPu3JiQs.js} +1 -1
- package/dist/assets/{textMateThemeFromAppTheme-CHo2fCgW.js → textMateThemeFromAppTheme-DWqRPo9A.js} +1 -1
- package/dist/assets/{tr-Dr-oJ22L.js → tr-CQI-KPre.js} +1 -1
- package/dist/assets/{uk-9Nx83UcI.js → uk-CqW7R4DA.js} +1 -1
- package/dist/assets/{useAppFontEffects-khZXpFL_.js → useAppFontEffects-ne84JBVL.js} +9 -9
- package/dist/assets/{useInlineCommentController-DkQ_gqpn.js → useInlineCommentController-CgS0fnw_.js} +1 -1
- package/dist/assets/{useRootScrollLock-DdvHf9Pt.js → useRootScrollLock-Cpf1qoGp.js} +2 -2
- package/dist/assets/{vendor-codemirror-language-data-CdzUmUyZ.js → vendor-codemirror-language-data-Bx2EHc1O.js} +2 -2
- package/dist/assets/{web-components-B8IcVQAA.js → web-components-DxX8bZ1o.js} +1 -1
- package/dist/assets/{zh-CN-Bxy_Hj3r.js → zh-CN-CVZG_o_J.js} +1 -1
- package/dist/assets/{zh-TW-0BB4gpHM.js → zh-TW-D5ZxzCZp.js} +1 -1
- package/dist/index.html +2 -2
- package/dist/mini-chat.html +2 -2
- package/dist/mobile.html +2 -2
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{R as o,j as s,f as ct,r as Ze}from"./vendor-react-BUCujlKS.js";import{f as et,B as G,I as B,o as bn,bg as ha,t as F,O as ld,gJ as cd,eX as ze,gK as Kt,b as en,h as ye,au as dd,aq as vn,as as yn,at as ud,ap as jn,eN as oa,gL as Zl,gM as md,gN as Da,gO as Cn,c6 as Ns,c0 as _t,c1 as $t,c2 as Vt,c3 as Ht,c4 as qt,c5 as rs,W as Be,gP as ii,be as wn,eA as Mr,gQ as Oi,gR as rn,f1 as Yt,gS as cn,l as Xe,ff as Ft,ch as Tt,ci as Et,fc as Bt,cj as Ut,ck as Dt,cl as dt,gT as At,cm as Ms,e3 as na,fe as on,fi as la,fg as ln,gU as ws,e8 as ks,gV as Ds,gW as pd,cR as mt,gX as Xl,gY as gd,gZ as aa,g_ as ec,g$ as hd,g5 as La,gb as Xs,h0 as Ma,h1 as tc,h2 as Jr,e4 as Qr,h3 as ia,a9 as Ka,a8 as Vs,h4 as sc,h5 as bo,ae as fd,ey as nc,g as Ra,h6 as xd,h7 as dn,ce as kn,cp as Nn,cf as Sn,ex as bd,h8 as vd,h9 as yd,ha as Yr,aa as Zr,ab as Xr,ac,hb as Dn,a4 as $i,cu as eo,S as Ua,hc as vo,av as jd,cn as wd,d6 as kd,U as Nd,T as Sd,V as Cd,Z as to,hd as Id,he as Pd,cc as Ad,co as Rr,hf as ic,ad as si,fh as rc,P as Zn,hg as _s,eW as Hs,eG as oc,a3 as Td,n as ls,eq as Bi,y as lc,x as Ed,i as Dd,j as Md,er as Rd,p as Fd,hh as Od,hi as Ld,hj as yo,e9 as cc,hk as Kd,hl as mr,hm as jo,hn as zd,ho as Ud,hp as _d,hq as $d,g1 as Vi,hr as fs,hs as As,ht as an,hu as Ys,de as dc,bX as uc,df as mc,bY as Zs,hv as Bn,hw as pc,aD as Vn,aE as Sa,hx as nn,hy as gc,hz as En,ds as hc,hA as fc,hB as Bd,eV as Vd,eU as Hd,hC as Fr,eF as qd,hD as Xn,hE as Us,hF as Gs,fX as ea,hG as Ts,hH as Gd,hI as wo,hJ as xc,hK as ta,hL as Wd,hM as Jd,R as Qd,fb as Kn,hN as za,hO as ko,hP as Ca,hQ as Ia,bZ as ca,hR as Yd,hS as Zd,hT as Xd,hU as eu,hV as pr,hW as No,hX as tu,hY as su,hZ as nu,h_ as au,h$ as So,z as iu,m as Co,i0 as ru,i1 as gr,i2 as Io,ev as ou,i3 as Gi,i4 as lu,i5 as cu,i6 as du,i7 as uu,i8 as mu,i9 as hr,cS as pu,b_ as bc,ia as vc,ib as gu,ay as zn,az as hu}from"./useAppFontEffects-khZXpFL_.js";import{h as xt,u as ce,O as ds,dh as fu,di as Po,B as Mn,aE as In,t as yt,a1 as xu,E as cs,P as Ao,cw as To,cD as Eo,U as qa,p as bu,dj as vu,k as yu,cv as Ta,dk as ju,an as wu,cA as ku,dl as Nu,dm as Su,s as Cu,e as ri,cB as Iu,F as oi,dn as yc,_ as Pu,dp as Au,a4 as jc,a as Rn,aD as ys,d7 as wc,a$ as kc,x as Fa,ah as Tu,ai as Eu,aJ as so,dq as Du,A as Wi,Z as Mu,aO as Do,b3 as ki,aP as Ru,dr as Fu,ac as ra,ds as Ou,dt as Mo,dg as Ro,du as Fo,aM as Oo,dv as Lu,dw as Ku,dx as zu,dy as Uu,dz as Lo,b as _u,dA as Nc,dB as $u,dC as Bu,dD as Vu,dE as Hu,dF as qu,dG as Gu,ay as Wu,i as Sc}from"./index-Cbci4i1W.js";import{u as Ju,U as Ko,R as da,W as ua,X as ma,Y as pa,j as no,ai as sa,$ as Qu,v as Rs,aj as Yu,ag as Zu,ak as Ea,al as Cc,Z as Xu,_ as em}from"./runtimeEndpointReset-DhlHCn-2.js";import{u as qs,c as Ic,d as tm,p as sm}from"./vendor-zustand-BAGL70zf.js";import{o as un,s as as,b as ao,_ as io,r as Or,c as Lr,a as li}from"./vendor-zod-CgAdXWZO.js";import{s as nm,p as am}from"./vendor-yaml-3778uTud.js";import{c as zo,s as im,C as Uo,P as rm}from"./shikiHighlight-8_3csmr6.js";import{getResolvedShikiTheme as om}from"./appThemeRegistry-BuUKhbYQ.js";import{E as _o}from"./vendor-codemirror-view-CiLROUVV.js";import{Q as Pc}from"./vendor-qrcode-DTJ12-WC.js";import{u as fr,s as lm,d as cm,b as dm,A as um,c as mm,e as pm,f as gm,h as hm,i as xr,j as fm}from"./PluginPane-B4tKno2h.js";import{toast as Oa}from"./vendor-sonner-DFyL3AvE.js";import{s as xm}from"./vendor-strip-json-comments-5dJlOkP1.js";const $o=()=>{const{t}=et(),[e,a]=o.useState(null);o.useEffect(()=>{let i=!1;const r=typeof AbortController<"u"?new AbortController:void 0;return(async()=>{try{const m=await xt("/api/system/info",{signal:r?.signal,headers:{Accept:"application/json"}});if(!m.ok)return;const c=await m.json().catch(()=>null);if(!c||i)return;const x=typeof c.port=="number"&&Number.isFinite(c.port)&&c.port>0?c.port:null,u=typeof c.tunnelUrl=="string"&&c.tunnelUrl.trim().length>0?c.tunnelUrl.trim():null;a({port:x,tunnelUrl:u})}catch{}})(),()=>{i=!0,r?.abort()}},[]);const n=[];return e?.port!==null&&e?.port!==void 0&&n.push({key:"application",label:t("settings.openchamber.about.field.applicationUrl"),url:`http://localhost:${e.port}/`}),e?.tunnelUrl&&n.push({key:"tunnel",label:t("settings.openchamber.about.field.tunnelUrl"),url:e.tunnelUrl}),n.length===0?null:s.jsx("div",{className:"flex flex-wrap items-center gap-2",children:n.map(i=>s.jsxs(G,{type:"button",variant:"outline",size:"sm",title:i.label,className:"max-w-full gap-1.5 px-2.5",onClick:()=>{bn(i.url)},children:[s.jsx(B,{name:"external-link",className:"size-3.5 shrink-0"}),s.jsx("span",{className:"max-w-64 truncate font-mono typography-micro",children:i.url})]},i.key))})},Bo="https://github.com/openchamber/openchamber",bm="https://discord.gg/ZYRSdnwwKA",Vo="https://x.com/openchamber_dev",vm=800,Ac=({initialUpdateDialogOpen:t=!1})=>{const{t:e}=et(),[a,n]=o.useState(t),[i,r]=o.useState(!1),[l,m]=o.useState(null),[c,x]=o.useState(null),u=Ju(qs(w=>({info:w.info,checking:w.checking,available:w.available,error:w.error,downloading:w.downloading,downloaded:w.downloaded,progress:w.progress,runtimeType:w.runtimeType,checkForUpdates:w.checkForUpdates,downloadUpdate:w.downloadUpdate,restartToUpdate:w.restartToUpdate}))),{isMobile:v}=ha(),d=l||u.info?.currentVersion||"unknown";o.useEffect(()=>{let w=!1;return(async()=>{try{const k=await xt("/api/system/info",{method:"GET",headers:{Accept:"application/json"}});if(!k.ok)return;const p=await k.json().catch(()=>null),C=typeof p?.openchamberVersion=="string"&&p.openchamberVersion.trim().length>0?p.openchamberVersion.trim():null;w||m(C)}catch{w||m(null)}})(),()=>{w=!0}},[]),o.useEffect(()=>{let w=!1;return(async()=>{try{const k=await xt("/api/opencode/upgrade-status",{method:"GET",headers:{Accept:"application/json"}});if(!k.ok)return;const p=await k.json().catch(()=>null),C=typeof p?.currentVersion=="string"&&p.currentVersion.trim().length>0?p.currentVersion.trim():null;w||x(C)}catch{w||x(null)}})(),()=>{w=!0}},[]);const j=o.useRef(!1);o.useEffect(()=>{if(u.checking)r(!0),j.current=!0;else if(i){const w=setTimeout(()=>{r(!1),j.current&&!u.available&&!u.error&&(F.success(e("settings.openchamber.about.toast.latestVersion")),j.current=!1)},vm);return()=>clearTimeout(w)}},[e,u.checking,i,u.available,u.error]);const g=u.checking||i;return v?s.jsxs("div",{className:"w-full space-y-6 pb-2",children:[s.jsxs("div",{className:"flex flex-col items-center text-center",children:[s.jsx(ld,{width:72,height:72}),s.jsx("h2",{className:`mt-4 ${cd}`,children:"OpenChamber"}),s.jsxs("div",{className:"mt-2 space-y-1 typography-ui text-muted-foreground",children:[s.jsx("p",{children:e("aboutDialog.openChamberVersionLabel",{version:d})}),s.jsx("p",{children:e("aboutDialog.openCodeVersionLabel",{version:c||e("settings.openchamber.about.state.unknown")})})]}),s.jsx($o,{})]}),s.jsxs("div",{className:"flex justify-center",children:[!u.available&&!u.error&&s.jsxs(G,{type:"button",variant:"outline",size:"sm",onClick:()=>u.checkForUpdates(),disabled:g,className:"h-10 w-auto justify-center gap-2 rounded-xl px-4",children:[g?s.jsx(B,{name:"loader",className:"size-4 animate-spin"}):s.jsx(B,{name:"refresh",className:"size-4"}),e(g?"settings.openchamber.about.state.checking":"settings.openchamber.about.actions.checkForUpdates")]}),!g&&u.available&&s.jsxs(G,{type:"button",variant:"default",size:"sm",onClick:()=>n(!0),className:"h-10 w-auto justify-center gap-2 rounded-xl px-4",children:[s.jsx(B,{name:"download",className:"size-4"}),e("settings.openchamber.about.actions.updateToVersion",{version:u.info?.version||""})]})]}),u.error&&s.jsx("p",{className:"rounded-xl border border-[var(--status-error-border)] bg-[var(--status-error-background)] px-3 py-2 typography-meta text-[var(--status-error)]",children:u.error}),s.jsxs("div",{className:"flex flex-col items-center gap-3 text-center",children:[s.jsxs("div",{className:"flex items-center justify-center gap-5",children:[s.jsxs("a",{href:Bo,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 typography-ui-label text-muted-foreground transition-colors hover:text-foreground",children:[s.jsx(B,{name:"github-fill",className:"size-5"}),s.jsx("span",{children:"GitHub"})]}),s.jsxs("a",{href:bm,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 typography-ui-label text-muted-foreground transition-colors hover:text-foreground",children:[s.jsx(B,{name:"discord-fill",className:"size-5"}),s.jsx("span",{children:"Discord"})]})]}),s.jsxs("a",{href:Vo,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 typography-ui-label text-muted-foreground transition-colors hover:text-foreground",children:[s.jsx(B,{name:"twitter-xfill",className:"size-5"}),s.jsx("span",{children:"@openchamber_dev"})]})]}),s.jsx("p",{className:"text-center typography-ui text-muted-foreground/60",children:e("aboutDialog.footerNote")}),s.jsx(Ko,{open:a,onOpenChange:n,info:u.info,downloading:u.downloading,downloaded:u.downloaded,progress:u.progress,error:u.error,onDownload:u.downloadUpdate,onRestart:u.restartToUpdate,runtimeType:u.runtimeType})]}):s.jsxs(ze,{divider:!1,children:[s.jsxs("div",{className:"rounded-lg bg-[var(--surface-elevated)]/70 overflow-hidden flex flex-col",children:[s.jsxs("div",{className:"flex flex-col @xl:flex-row @xl:items-center justify-between gap-4 px-4 py-3 border-b border-border/40",children:[s.jsxs("div",{className:"flex min-w-0 flex-col",children:[s.jsx("span",{className:Kt,children:e("settings.openchamber.about.field.version")}),s.jsx("span",{className:"typography-meta text-muted-foreground font-mono",children:d})]}),s.jsxs("div",{className:"flex min-w-0 flex-col",children:[s.jsx("span",{className:Kt,children:e("settings.openchamber.about.field.openCodeVersion")}),s.jsx("span",{className:"typography-meta text-muted-foreground font-mono",children:c||e("settings.openchamber.about.state.unknown")})]}),s.jsxs("div",{className:"flex items-center gap-3",children:[u.checking&&s.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground",children:[s.jsx(B,{name:"loader",className:"h-4 w-4 animate-spin"}),s.jsx("span",{className:"typography-meta",children:e("settings.openchamber.about.state.checking")})]}),!u.checking&&u.available&&s.jsxs(G,{size:"sm",variant:"default",onClick:()=>n(!0),children:[s.jsx(B,{name:"download",className:"h-4 w-4 mr-1"}),e("settings.openchamber.about.actions.updateToVersion",{version:u.info?.version||""})]}),!u.checking&&!u.available&&!u.error&&s.jsx("span",{className:"typography-meta text-muted-foreground",children:e("settings.openchamber.about.state.upToDate")}),s.jsx(G,{size:"sm",variant:"outline",onClick:()=>u.checkForUpdates(),disabled:u.checking,children:e("settings.openchamber.about.actions.checkForUpdates")})]})]}),u.error&&s.jsx("div",{className:"px-3 py-2 border-b border-border/40",children:s.jsx("p",{className:"typography-meta text-[var(--status-error)]",children:u.error})}),s.jsxs("div",{className:"flex flex-col gap-2 border-b border-border/40 px-4 py-3 @xl:flex-row @xl:items-center @xl:justify-between",children:[s.jsx("span",{className:Kt,children:e("settings.openchamber.about.field.instanceUrls")}),s.jsx($o,{})]}),s.jsxs("div",{className:"flex items-center gap-4 px-4 py-4",children:[s.jsxs("a",{href:Bo,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 text-muted-foreground hover:text-foreground typography-meta transition-colors",children:[s.jsx(B,{name:"github-fill",className:"h-4 w-4"}),s.jsx("span",{children:"GitHub"})]}),s.jsxs("a",{href:Vo,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 text-muted-foreground hover:text-foreground typography-meta transition-colors",children:[s.jsx(B,{name:"twitter-xfill",className:"h-4 w-4"}),s.jsx("span",{children:"@openchamber_dev"})]})]})]}),s.jsx(Ko,{open:a,onOpenChange:n,info:u.info,downloading:u.downloading,downloaded:u.downloaded,progress:u.progress,error:u.error,onDownload:u.downloadUpdate,onRestart:u.restartToUpdate,runtimeType:u.runtimeType})]})},ym=(t,e,a)=>t&&e.some(i=>i.path===t)?t:(e.find(i=>i.id===a)??e[0])?.path??null,Ws=()=>{const t=ct.c(4),e=ce(jm),a=en(wm),n=en(km);let i;return t[0]!==n||t[1]!==a||t[2]!==e?(i=ym(e,a,n),t[0]=n,t[1]=a,t[2]=e,t[3]=i):i=t[3],i};function jm(t){return t.settingsProjectPath}function wm(t){return t.projects}function km(t){return t.activeProjectId}const Tc=t=>t.trim(),ci=t=>{const e=ct.c(40),{className:a}=t,{t:n}=et(),i=en(Nm),r=Ws(),l=ce(Sm),m=ds();let c;e[0]!==i?(c=[...i].sort(Cm),e[0]=i,e[1]=c):c=e[1];const x=c;let u;e:{if(x.length===0){u=null;break e}let $;e[2]!==r||e[3]!==x?($=x.find(I=>I.path===r)??x[0],e[2]=r,e[3]=x,e[4]=$):$=e[4],u=$}const v=u;if(m||x.length===0)return null;let d;e[5]!==v||e[6]!==n?(d=v?.label&&v.label.trim().length>0?v.label:v?.path.split("/").filter(Boolean).pop()||v?.path||n("settings.shared.projectSelector.fallbackProject"),e[5]=v,e[6]=n,e[7]=d):d=e[7];const j=d;let g;e[8]!==j?(g=Tc(j),e[8]=j,e[9]=g):g=e[9];const w=g;let b;e[10]!==a?(b=ye(a),e[10]=a,e[11]=b):b=e[11];let k;e[12]!==n?(k=n("settings.shared.projectSelector.switchProjectAria"),e[12]=n,e[13]=k):k=e[13];let p;e[14]!==n?(p=n("settings.shared.projectSelector.switchProjectTitle"),e[14]=n,e[15]=p):p=e[15];let C,E;e[16]===Symbol.for("react.memo_cache_sentinel")?(C=ye("text-foreground border border-border/80 appearance-none flex h-8 w-full min-w-0 rounded-lg bg-transparent px-3 py-1 outline-none","hover:border-input focus-visible:ring-1 focus-visible:ring-ring focus-visible:border-interactive-border-focus","flex items-center gap-1.5 text-left"),E=s.jsx(B,{name:"folder",className:"h-4 w-4 opacity-70"}),e[16]=C,e[17]=E):(C=e[16],E=e[17]);let A;e[18]!==w?(A=s.jsx("span",{className:"min-w-0 flex-1 truncate typography-ui-label font-medium",children:w}),e[18]=w,e[19]=A):A=e[19];let N;e[20]===Symbol.for("react.memo_cache_sentinel")?(N=s.jsx(B,{name:"arrow-down-s",className:"size-4 opacity-50"}),e[20]=N):N=e[20];let h;e[21]!==A||e[22]!==k||e[23]!==p?(h=s.jsx(vn,{asChild:!0,children:s.jsxs("button",{type:"button","aria-label":k,title:p,className:C,children:[E,A,N]})}),e[21]=A,e[22]=k,e[23]=p,e[24]=h):h=e[24];const y=v?.id??"";let R;e[25]!==l||e[26]!==x?(R=$=>{if(!$)return;const I=x.find(M=>M.id===$);I&&l(I.path)},e[25]=l,e[26]=x,e[27]=R):R=e[27];let T;e[28]!==x?(T=x.map(Im),e[28]=x,e[29]=T):T=e[29];let P;e[30]!==y||e[31]!==R||e[32]!==T?(P=s.jsx(yn,{align:"start",className:"w-auto",children:s.jsx(ud,{value:y,onValueChange:R,children:T})}),e[30]=y,e[31]=R,e[32]=T,e[33]=P):P=e[33];let D;e[34]!==h||e[35]!==P?(D=s.jsxs(jn,{children:[h,P]}),e[34]=h,e[35]=P,e[36]=D):D=e[36];let V;return e[37]!==D||e[38]!==b?(V=s.jsx("div",{className:b,children:D}),e[37]=D,e[38]=b,e[39]=V):V=e[39],V};function Nm(t){return t.projects}function Sm(t){return t.setSettingsProjectPath}function Cm(t,e){return(t.label||t.path).localeCompare(e.label||e.path)}function Im(t){const e=t.label?.trim()?t.label.trim():t.path.split("/").filter(Boolean).pop()||t.path,a=Tc(e);return s.jsx(dd,{value:t.id,children:s.jsx("span",{className:"min-w-0 truncate typography-ui",children:a})},t.id)}function Pm(t,e){return`opencode:sidebar-group:${t}:${e}`}const Kr=t=>{const e=ct.c(33),{label:a,count:n,storageKey:i,defaultExpanded:r,children:l}=t,m=r===void 0?!0:r;let c;e[0]!==a||e[1]!==i?(c=Pm(i,a),e[0]=a,e[1]=i,e[2]=c):c=e[2];const x=c,u=o.useId();let v;e[3]!==m||e[4]!==x?(v=()=>{try{const P=localStorage.getItem(x);if(P!==null)return P==="true"}catch{}return m},e[3]=m,e[4]=x,e[5]=v):v=e[5];const[d,j]=Ze.useState(v);let g,w;e[6]!==d||e[7]!==x?(g=()=>{try{localStorage.setItem(x,String(d))}catch{}},w=[x,d],e[6]=d,e[7]=x,e[8]=g,e[9]=w):(g=e[8],w=e[9]),Ze.useEffect(g,w);let b;e[10]===Symbol.for("react.memo_cache_sentinel")?(b=()=>j(Am),e[10]=b):b=e[10];let k;e[11]===Symbol.for("react.memo_cache_sentinel")?(k=ye("flex w-full items-center gap-1 rounded-md px-2 py-1 text-left","text-xs font-semibold uppercase tracking-wide text-muted-foreground","hover:bg-[var(--interactive-hover)] transition-colors duration-150","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"),e[11]=k):k=e[11];const p=!d&&"-rotate-90";let C;e[12]!==p?(C=ye("h-3.5 w-3.5 flex-shrink-0 transition-transform duration-200",p),e[12]=p,e[13]=C):C=e[13];let E;e[14]!==C?(E=s.jsx(B,{name:"arrow-down-s",className:C}),e[14]=C,e[15]=E):E=e[15];let A;e[16]!==a?(A=s.jsx("span",{className:"flex-1 truncate",children:a}),e[16]=a,e[17]=A):A=e[17];let N;e[18]!==n?(N=s.jsx("span",{className:"ml-1 tabular-nums opacity-60",children:n}),e[18]=n,e[19]=N):N=e[19];let h;e[20]!==u||e[21]!==d||e[22]!==E||e[23]!==A||e[24]!==N?(h=s.jsxs("button",{type:"button",onClick:b,"aria-expanded":d,"aria-controls":u,className:k,children:[E,A,N]}),e[20]=u,e[21]=d,e[22]=E,e[23]=A,e[24]=N,e[25]=h):h=e[25];const y=!d;let R;e[26]!==l||e[27]!==u||e[28]!==y?(R=s.jsx("div",{id:u,hidden:y,className:"mt-0.5 space-y-0.5 ml-2 pl-3 border-l-2 border-[var(--interactive-border)]",children:l}),e[26]=l,e[27]=u,e[28]=y,e[29]=R):R=e[29];let T;return e[30]!==h||e[31]!==R?(T=s.jsxs("div",{children:[h,R]}),e[30]=h,e[31]=R,e[32]=T):T=e[32],T};function Am(t){return!t}const Tm=t=>{if(!Array.isArray(t))return[];const e=[];for(const a of t){if(!a||typeof a!="object")continue;const n=a;typeof n.permission!="string"||typeof n.pattern!="string"||typeof n.action!="string"||n.action!=="allow"&&n.action!=="ask"&&n.action!=="deny"||e.push({permission:n.permission,pattern:n.pattern,action:n.action})}return e},Em=t=>{const e=new Map;for(const a of t)!a.permission||a.permission==="invalid"||a.pattern&&e.set(`${a.permission}::${a.pattern}`,a);return Array.from(e.values())},Ho=t=>{const e=Em(Tm(t));if(e.length===0)return;const a={};for(const i of e)i.permission&&((a[i.permission]||={})[i.pattern]=i.action);const n={};for(const[i,r]of Object.entries(a)){const l=Object.keys(r);if(l.length===1&&l[0]==="*"){n[i]=r["*"];continue}n[i]=r}return Object.keys(n).length>0?n:void 0},Dm=({onItemSelect:t})=>{const{t:e}=et(),[a,n]=o.useState(null),[i,r]=o.useState(""),[l,m]=o.useState(null),[c,x]=o.useState(null),[u,v]=o.useState(!1),[d,j]=o.useState(null),{selectedAgentName:g,setSelectedAgent:w,setAgentDraft:b,createAgent:k,deleteAgent:p,loadAgents:C}=oa(qs(O=>({selectedAgentName:O.selectedAgentName,setSelectedAgent:O.setSelectedAgent,setAgentDraft:O.setAgentDraft,createAgent:O.createAgent,deleteAgent:O.deleteAgent,loadAgents:O.loadAgents}))),E=Ws(),A=oa(O=>Zl(O,E));o.useEffect(()=>{C(E)},[C,E]);const N="bg-background",h=()=>{const O="new-agent";let ae=O,_=1;for(;A.some(W=>W.name===ae);)ae=`${O}-${_}`,_++;b({name:ae,scope:"user"}),w(ae),t?.()},y=async O=>{if(Da(O)){F.error(e("settings.agents.sidebar.toast.builtInCannotDelete"));return}m(O),x("delete")},R=async O=>{Da(O)&&(m(O),x("reset"))},T=()=>{m(null),x(null)},P=async()=>{if(!(!l||!c)){v(!0);try{const O=await p(l.name,l.scope,E);O.ok?(O.requiresManualRestart?F.warning(e("settings.agents.page.toast.savedManualRestart")):O.restartDeferred?F.success(e("settings.view.pendingRestart.saved")):c==="delete"?F.success(e("settings.agents.sidebar.toast.agentDeleted",{name:l.name})):F.success(e("settings.agents.sidebar.toast.agentReset",{name:l.name})),T()):c==="delete"?F.error(e("settings.agents.sidebar.toast.deleteFailed")):F.error(e("settings.agents.sidebar.toast.resetFailed"))}catch(O){const ae=O instanceof Error?O.message:"",_=/built-in|not deletable|not found/i.test(ae);c==="delete"?F.error(e(_?"settings.agents.sidebar.toast.definitionNotFound":"settings.agents.sidebar.toast.deleteFailed")):F.error(e("settings.agents.sidebar.toast.resetFailed"))}v(!1)}},D=O=>{const ae=O.name;let _=1,W=`${ae}-copy`;for(;A.some(z=>z.name===W);)_++,W=`${ae}-copy-${_}`;const q=O,L=O.model?.providerID&&O.model?.modelID?`${O.model.providerID}/${O.model.modelID}`:null,K=O;b({name:W,scope:q.scope||"user",description:O.description,model:L,variant:O.variant,temperature:O.temperature,top_p:O.topP,prompt:O.prompt,mode:O.mode,permission:Ho(O.permission),disable:K.disable}),w(W),t?.()},V=O=>{r(O.name),n(O)},$=async()=>{if(!a)return;const O=i.trim().replace(/\s+/g,"-");if(!O){F.error(e("settings.agents.sidebar.toast.agentNameRequired"));return}if(O===a.name){n(null);return}if(A.some(q=>q.name===O)){F.error(e("settings.agents.sidebar.toast.agentExists"));return}const ae=a.model?.providerID&&a.model?.modelID?`${a.model.providerID}/${a.model.modelID}`:null,_=a,W=await k({name:O,description:a.description,model:ae,variant:a.variant,temperature:a.temperature,top_p:a.topP,prompt:a.prompt,mode:a.mode,permission:Ho(a.permission),disable:_.disable,scope:_.scope},E);if(W.ok){const q=await p(a.name,_.scope,E);q.ok?(W.requiresManualRestart||q.requiresManualRestart?F.warning(e("settings.agents.page.toast.savedManualRestart")):F.success(e("settings.agents.sidebar.toast.agentRenamed",{name:O})),w(O)):F.error(e("settings.agents.sidebar.toast.removeOldAfterRenameFailed"))}else F.error(e("settings.agents.sidebar.toast.renameFailed"));n(null)},I=O=>{switch(O){case"primary":return s.jsx(B,{name:"ai-agent",className:"h-3 w-3 text-primary"});case"all":return s.jsx(B,{name:"ai-agent-fill",className:"h-3 w-3 text-primary"});case"subagent":return s.jsx(B,{name:"robot",className:"h-3 w-3 text-primary"});default:return null}},M=A.filter(O=>!md(O)),H=M.filter(Da),U=M.filter(O=>!Da(O)),{groupedCustomAgents:Z,ungroupedCustomAgents:ee}=Ze.useMemo(()=>{const O={},ae=[];for(const W of U){const q=W;q.group?(O[q.group]||(O[q.group]=[]),O[q.group].push(W)):ae.push(W)}return{groupedCustomAgents:Object.keys(O).sort((W,q)=>W.localeCompare(q)).map(W=>({name:W,agents:O[W]})),ungroupedCustomAgents:ae}},[U]);return s.jsxs("div",{className:ye("flex h-full flex-col",N),children:[s.jsxs("div",{className:"border-b px-3 pt-4 pb-3",children:[s.jsx("h2",{className:`${Cn} mb-3`,children:e("settings.agents.sidebar.title")}),s.jsx(ci,{className:"mb-3"}),s.jsxs("div",{className:"flex items-center justify-between gap-2",children:[s.jsx("span",{className:"typography-meta text-muted-foreground",children:e("settings.agents.sidebar.total",{count:M.length})}),s.jsx(G,{size:"sm","data-settings-item":"agents.create",variant:"ghost",className:"h-7 w-7 px-0 -my-1 text-muted-foreground",onClick:h,children:s.jsx(B,{name:"add",className:"h-3.5 w-3.5"})})]})]}),s.jsx(Ns,{outerClassName:"flex-1 min-h-0",className:"space-y-1 px-3 py-2 overflow-x-hidden",children:M.length===0?s.jsxs("div",{className:"py-12 px-4 text-center text-muted-foreground",children:[s.jsx(B,{name:"robot-2",className:"mx-auto mb-3 h-10 w-10 opacity-50"}),s.jsx("p",{className:"typography-ui-label font-medium",children:e("settings.agents.sidebar.empty.title")}),s.jsx("p",{className:"typography-meta mt-1 opacity-75",children:e("settings.agents.sidebar.empty.description")})]}):s.jsxs(s.Fragment,{children:[H.length>0&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"px-2 pb-1.5 pt-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:e("settings.agents.sidebar.section.builtIn")}),H.map(O=>s.jsx(br,{agent:O,isSelected:g===O.name,onSelect:()=>{w(O.name),t?.()},onReset:()=>R(O),onDuplicate:()=>D(O),getAgentModeIcon:I,isMenuOpen:d===O.name,onMenuOpenChange:ae=>j(ae?O.name:null)},O.name))]}),U.length>0&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"px-2 pb-1.5 pt-3 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:e("settings.agents.sidebar.section.custom")}),Z.map(({name:O,agents:ae})=>s.jsx(Kr,{label:O,count:ae.length,storageKey:"agents",children:ae.map(_=>s.jsx(br,{agent:_,isSelected:g===_.name,onSelect:()=>{w(_.name),t?.()},onRename:()=>V(_),onDelete:()=>y(_),onDuplicate:()=>D(_),getAgentModeIcon:I,isMenuOpen:d===_.name,onMenuOpenChange:W=>j(W?_.name:null)},_.name))},O)),ee.map(O=>s.jsx(br,{agent:O,isSelected:g===O.name,onSelect:()=>{w(O.name),t?.()},onRename:()=>V(O),onDelete:()=>y(O),onDuplicate:()=>D(O),getAgentModeIcon:I,isMenuOpen:d===O.name,onMenuOpenChange:ae=>j(ae?O.name:null)},O.name))]})]})}),s.jsx(_t,{open:l!==null&&c!==null,onOpenChange:O=>{!O&&!u&&T()},children:s.jsxs($t,{className:"max-w-md",children:[s.jsxs(Vt,{children:[s.jsx(Ht,{children:e(c==="delete"?"settings.agents.sidebar.dialog.deleteTitle":"settings.agents.sidebar.dialog.resetTitle")}),s.jsx(qt,{children:c==="delete"?e("settings.agents.sidebar.dialog.deleteDescription",{name:l?.name??""}):e("settings.agents.sidebar.dialog.resetDescription",{name:l?.name??""})})]}),s.jsxs(rs,{children:[s.jsx(G,{size:"sm",variant:"ghost",onClick:T,disabled:u,children:e("settings.common.actions.cancel")}),s.jsx(G,{size:"sm",onClick:P,disabled:u,children:e(c==="delete"?"settings.common.actions.delete":"settings.common.actions.reset")})]})]})}),s.jsx(_t,{open:a!==null,onOpenChange:O=>!O&&n(null),children:s.jsxs($t,{children:[s.jsxs(Vt,{children:[s.jsx(Ht,{children:e("settings.agents.sidebar.renameDialog.title")}),s.jsx(qt,{children:e("settings.agents.sidebar.renameDialog.description",{name:a?.name??""})})]}),s.jsx(Be,{value:i,onChange:O=>r(O.target.value),placeholder:e("settings.agents.sidebar.renameDialog.placeholder"),className:"text-foreground placeholder:text-muted-foreground",onKeyDown:O=>{O.key==="Enter"&&$()}}),s.jsxs(rs,{children:[s.jsx(G,{size:"sm",variant:"ghost",onClick:()=>n(null),children:e("settings.common.actions.cancel")}),s.jsx(G,{size:"sm",onClick:$,children:e("settings.common.actions.rename")})]})]})})]})},br=t=>{const e=ct.c(52),{agent:a,isSelected:n,onSelect:i,onDelete:r,onReset:l,onRename:m,onDuplicate:c,getAgentModeIcon:x,isMenuOpen:u,onMenuOpenChange:v}=t,{t:d}=et(),j=a;let g;e[0]===Symbol.for("react.memo_cache_sentinel")?(g=ii(),e[0]=g):g=e[0];const w=g,[b,k]=o.useState(!1);let p;e[1]!==r||e[2]!==c||e[3]!==m||e[4]!==l||e[5]!==d?(p=ae=>s.jsxs(s.Fragment,{children:[m&&s.jsxs(ae,{onClick:_=>{_.stopPropagation(),m()},children:[s.jsx(B,{name:"edit",className:"h-4 w-4 mr-px"}),d("settings.common.actions.rename")]}),s.jsxs(ae,{onClick:_=>{_.stopPropagation(),c()},children:[s.jsx(B,{name:"file-copy",className:"h-4 w-4 mr-px"}),d("settings.common.actions.duplicate")]}),l&&s.jsxs(ae,{onClick:_=>{_.stopPropagation(),l()},children:[s.jsx(B,{name:"restart",className:"h-4 w-4 mr-px"}),d("settings.common.actions.reset")]}),r&&s.jsxs(ae,{onClick:_=>{_.stopPropagation(),r()},className:"text-destructive focus:text-destructive",children:[s.jsx(B,{name:"delete-bin",className:"h-4 w-4 mr-px"}),d("settings.common.actions.delete")]})]}),e[1]=r,e[2]=c,e[3]=m,e[4]=l,e[5]=d,e[6]=p):p=e[6];const C=p,E=n?"bg-interactive-selection":"hover:bg-interactive-hover";let A;e[7]!==E?(A=ye("group relative flex items-center rounded-md px-1.5 py-1 transition-all duration-200 select-none",E),e[7]=E,e[8]=A):A=e[8];let N;e[9]===Symbol.for("react.memo_cache_sentinel")?(N=w?void 0:ae=>{ae.preventDefault(),k(!0)},e[9]=N):N=e[9];let h;e[10]!==A?(h=s.jsx("div",{className:A,onContextMenu:N}),e[10]=A,e[11]=h):h=e[11];let y;e[12]!==a.name?(y=s.jsx("span",{className:"typography-ui-label font-normal truncate text-foreground",children:a.name}),e[12]=a.name,e[13]=y):y=e[13];let R;e[14]!==a.mode||e[15]!==x?(R=x(a.mode),e[14]=a.mode,e[15]=x,e[16]=R):R=e[16];let T;e[17]!==a||e[18]!==j.scope||e[19]!==d?(T=(j.scope||Da(a))&&s.jsx("span",{className:"typography-micro text-muted-foreground bg-muted px-1 rounded flex-shrink-0 leading-none pb-px border border-border/50",children:Da(a)?d("settings.agents.sidebar.badge.system"):j.scope}),e[17]=a,e[18]=j.scope,e[19]=d,e[20]=T):T=e[20];let P;e[21]!==y||e[22]!==R||e[23]!==T?(P=s.jsxs("div",{className:"flex items-center gap-1.5",children:[y,R,T]}),e[21]=y,e[22]=R,e[23]=T,e[24]=P):P=e[24];let D;e[25]!==a.description?(D=a.description&&s.jsx("div",{className:"typography-micro text-muted-foreground/60 truncate leading-tight",children:a.description}),e[25]=a.description,e[26]=D):D=e[26];let V;e[27]!==i||e[28]!==P||e[29]!==D?(V=s.jsxs("button",{onClick:i,className:"flex min-w-0 flex-1 flex-col gap-0 rounded-sm text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",tabIndex:0,children:[P,D]}),e[27]=i,e[28]=P,e[29]=D,e[30]=V):V=e[30];let $;e[31]!==v?($=ae=>{ae&&k(!1),v(ae)},e[31]=v,e[32]=$):$=e[32];let I;e[33]===Symbol.for("react.memo_cache_sentinel")?(I=s.jsx(vn,{asChild:!0,children:s.jsx(G,{size:"sm",variant:"ghost",className:"h-6 w-6 px-0 flex-shrink-0 -mr-1 opacity-100 transition-opacity md:opacity-0 md:group-hover:opacity-100",children:s.jsx(B,{name:"more-2",className:"h-3.5 w-3.5"})})}),e[33]=I):I=e[33];let M;e[34]!==C?(M=s.jsx(yn,{align:"end",className:"w-fit min-w-20",children:C(wn)}),e[34]=C,e[35]=M):M=e[35];let H;e[36]!==u||e[37]!==$||e[38]!==M?(H=s.jsxs(jn,{open:u,onOpenChange:$,children:[I,M]}),e[36]=u,e[37]=$,e[38]=M,e[39]=H):H=e[39];let U;e[40]!==V||e[41]!==H?(U=s.jsxs("div",{className:"flex min-w-0 flex-1 items-center",children:[V,H]}),e[40]=V,e[41]=H,e[42]=U):U=e[42];let Z;e[43]!==U||e[44]!==h?(Z=s.jsx(ma,{render:h,children:U}),e[43]=U,e[44]=h,e[45]=Z):Z=e[45];let ee;e[46]!==C?(ee=s.jsx(da,{className:"w-fit min-w-20",children:C(ua)}),e[46]=C,e[47]=ee):ee=e[47];let O;return e[48]!==b||e[49]!==Z||e[50]!==ee?(O=s.jsxs(pa,{open:b,onOpenChange:k,children:[Z,ee]}),e[48]=b,e[49]=Z,e[50]=ee,e[51]=O):O=e[51],O},is=t=>{const e=ct.c(21),{children:a,className:n,outerClassName:i,title:r,titleLeading:l,titleAccessory:m,description:c,headerEnd:x,showSaveStatus:u}=t,v=u===void 0?!1:u,d=r!=null||c!=null||x!=null||v,j=typeof r=="string"||typeof r=="number",g=l!=null||m!=null;let w;e[0]!==i?(w=ye("h-full",i),e[0]=i,e[1]=w):w=e[1];let b;e[2]!==n?(b=ye("mx-auto max-w-[840px] space-y-0 px-6 py-6 @3xl:px-12 @3xl:py-8","[&>section:first-of-type]:border-t-0 [&>section:first-of-type]:pt-0",n),e[2]=n,e[3]=b):b=e[3];let k;e[4]!==c||e[5]!==d||e[6]!==g||e[7]!==x||e[8]!==j||e[9]!==v||e[10]!==r||e[11]!==m||e[12]!==l?(k=d&&s.jsxs("div",{className:"mb-2 flex flex-wrap items-start justify-between gap-x-4 gap-y-3 pb-6",children:[s.jsxs("div",{className:"min-w-0 flex-1 basis-64 space-y-1",children:[r!=null?j?g?s.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[l,s.jsx("h1",{"data-settings-page-heading":!0,tabIndex:-1,className:ye(Mr,"min-w-0 truncate"),children:r}),s.jsx("span",{className:"shrink-0",children:m})]}):s.jsx("h1",{"data-settings-page-heading":!0,tabIndex:-1,className:Mr,children:r}):r:null,c!=null?typeof c=="string"||typeof c=="number"?s.jsx("p",{className:Oi,children:c}):c:null]}),s.jsxs("div",{className:"flex shrink-0 flex-wrap items-center justify-end gap-3",children:[x,v&&s.jsx(Rm,{})]})]}),e[4]=c,e[5]=d,e[6]=g,e[7]=x,e[8]=j,e[9]=v,e[10]=r,e[11]=m,e[12]=l,e[13]=k):k=e[13];let p;e[14]!==a||e[15]!==b||e[16]!==k?(p=s.jsxs("div",{className:b,children:[k,a]}),e[14]=a,e[15]=b,e[16]=k,e[17]=p):p=e[17];let C;return e[18]!==w||e[19]!==p?(C=s.jsx(Ns,{outerClassName:w,className:"w-full @container",children:p}),e[18]=w,e[19]=p,e[20]=C):C=e[20],C},Mm=500,Rm=()=>{const t=ct.c(13),{t:e}=et(),a=o.useSyncExternalStore(fu,Po,Po),[n,i]=o.useState(!1);let r,l;if(t[0]!==a?(r=()=>{if(a!=="saving"){i(!1);return}const u=setTimeout(()=>i(!0),Mm);return()=>clearTimeout(u)},l=[a],t[0]=a,t[1]=r,t[2]=l):(r=t[1],l=t[2]),o.useEffect(r,l),a==="error"){let u;t[3]===Symbol.for("react.memo_cache_sentinel")?(u=s.jsx(B,{name:"error-warning",className:"size-3.5"}),t[3]=u):u=t[3];let v;t[4]!==e?(v=e("settings.common.status.saveFailed"),t[4]=e,t[5]=v):v=t[5];let d;return t[6]!==v?(d=s.jsxs("div",{"aria-live":"assertive",className:"flex shrink-0 items-center gap-1.5 typography-meta text-[var(--status-error)]",children:[u,s.jsx("span",{children:v})]}),t[6]=v,t[7]=d):d=t[7],d}if(a!=="saving"||!n)return null;let m;t[8]===Symbol.for("react.memo_cache_sentinel")?(m=s.jsx(B,{name:"loader-4",className:"size-3.5 animate-spin"}),t[8]=m):m=t[8];let c;t[9]!==e?(c=e("settings.common.actions.saving"),t[9]=e,t[10]=c):c=t[10];let x;return t[11]!==c?(x=s.jsxs("div",{"aria-live":"polite",className:"flex shrink-0 items-center gap-1.5 typography-meta text-muted-foreground",children:[m,s.jsx("span",{children:c})]}),t[11]=c,t[12]=x):x=t[12],x},Fm=["allow","ask","deny"],ti=t=>t==="allow"||t==="ask"||t==="deny",zr=()=>({global:null,keys:{}}),Om=t=>{const e=zr();if(t==null)return e;if(typeof t=="string")return ti(t)&&(e.global=t),e;if(typeof t!="object"||Array.isArray(t))return e;for(const[a,n]of Object.entries(t)){if(a==="*"){ti(n)&&(e.global=n);continue}const i={action:null,patterns:[]};if(ti(n))i.action=n;else if(n&&typeof n=="object"&&!Array.isArray(n))for(const[r,l]of Object.entries(n))ti(l)&&(r==="*"?i.action=l:i.patterns.push({pattern:r,action:l}));else continue;e.keys[a]=i}return e},Ur=t=>{const e={};t.global!==null&&(e["*"]=t.global);for(const[a,n]of Object.entries(t.keys)){const i=n.patterns.filter(r=>r.pattern.trim().length>0);if(n.action!==null&&i.length===0)e[a]=n.action;else if(i.length>0){const r={};n.action!==null&&(r["*"]=n.action);for(const l of i)r[l.pattern]=l.action;e[a]=r}}return Object.keys(e).length>0?e:null},Lm=(t,e)=>JSON.stringify(Ur(t))===JSON.stringify(Ur(e)),Un=t=>JSON.parse(JSON.stringify(t)),Km=["edit","external_directory","doom_loop","plan_enter","plan_exit"],zm=new Set(["read","edit","glob","grep","list","bash","task","external_directory","lsp","skill"]),qo=new Set(["write","patch","apply_patch","multiedit","invalid"]),Um=t=>t.split(/[_-]/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),_m=({agent:t})=>{const{t:e}=et(),a=oa(q=>q.updateAgent),[n,i]=o.useState(zr),[r,l]=o.useState(zr),[m,c]=o.useState(!0),[x,u]=o.useState(!1),[v,d]=o.useState(!1),[j,g]=o.useState({}),[w,b]=o.useState([]),[k,p]=o.useState(""),[C,E]=o.useState(0),A=t.name,N=Ws();o.useEffect(()=>{let q=!1;return c(!0),u(!1),(async()=>{try{const L=N,K=L?`?directory=${encodeURIComponent(L)}`:"",z=await xt(`/api/config/agents/${encodeURIComponent(A)}/config${K}`,{headers:{"Cache-Control":"no-cache",...L?{"x-opencode-directory":L}:{}}});if(!z.ok)throw new Error(String(z.status));const J=await z.json().catch(()=>null);if(q)return;const oe=Om(J?.config?.permission);i(Un(oe)),l(oe)}catch{q||u(!0)}finally{q||c(!1)}})(),()=>{q=!0}},[A,C,N]),o.useEffect(()=>{let q=!1;return(async()=>{try{const L=await Mn.listToolIds({directory:N});!q&&Array.isArray(L)&&b(L.filter(K=>typeof K=="string"&&!qo.has(K)))}catch{}})(),()=>{q=!0}},[A,N]);const h=o.useMemo(()=>{const q=t.permission;if(!Array.isArray(q))return[];const L=[];for(const K of q){if(!K||typeof K!="object")continue;const{permission:z,pattern:J,action:oe}=K;typeof z=="string"&&typeof J=="string"&&ti(oe)&&L.push({permission:z,pattern:J,action:oe})}return L},[t]),y=o.useCallback(q=>{const L=h.find(z=>z.permission===q&&z.pattern==="*");if(L)return L.action;const K=h.find(z=>z.permission==="*"&&z.pattern==="*");return K?K.action:null},[h]),R=o.useCallback(q=>{const L=r.keys[q]?.patterns??[],K=new Set(L.map(z=>z.pattern));return h.filter(z=>z.permission===q&&z.pattern!=="*"&&!K.has(z.pattern))},[h,r.keys]),T=o.useMemo(()=>{const q=new Set;for(const L of w)q.add(L);for(const L of Km)q.add(L);for(const L of Object.keys(r.keys))q.add(L);for(const L of qo)q.delete(L);return Array.from(q).sort((L,K)=>L.localeCompare(K))},[w,r.keys]),P=o.useMemo(()=>!Lm(r,n),[r,n]),D=q=>{l(L=>({...L,global:q}))},V=(q,L)=>{l(K=>{const z=Un(K),J=z.keys[q]??{action:null,patterns:[]};return J.action=L,J.action===null&&J.patterns.length===0?delete z.keys[q]:z.keys[q]=J,z})},$=(q,L,K,z)=>{l(J=>{const oe=Un(J),re=oe.keys[q]??{action:null,patterns:[]};return re.patterns[L]={pattern:K,action:z},oe.keys[q]=re,oe})},I=q=>{l(L=>{const K=Un(L),z=K.keys[q]??{action:null,patterns:[]};return z.patterns.push({pattern:"",action:"allow"}),K.keys[q]=z,K}),g(L=>({...L,[q]:!0}))},M=(q,L)=>{l(K=>{const z=Un(K),J=z.keys[q];return J?(J.patterns.splice(L,1),J.action===null&&J.patterns.length===0&&delete z.keys[q],z):K})},H=()=>{const q=k.trim();!q||q==="*"||(l(L=>{if(L.keys[q])return L;const K=Un(L);return K.keys[q]={action:"ask",patterns:[]},K}),g(L=>({...L,[q]:!0})),p(""))},U=async()=>{d(!0);try{const q=Ur(r),L=await a(A,{permission:q});L.ok?(i(Un(r)),F.success(L.requiresManualRestart?e("settings.agents.page.permissionsEditor.toast.savedRestartRequired"):e("settings.agents.page.permissionsEditor.toast.saved"))):F.error(e("settings.agents.page.permissionsEditor.toast.saveFailed"))}finally{d(!1)}},Z=()=>{l(Un(n))},ee=q=>e(q==="allow"?"settings.agents.page.permissionsEditor.action.allow":q==="ask"?"settings.agents.page.permissionsEditor.action.ask":"settings.agents.page.permissionsEditor.action.deny"),O=e("settings.agents.page.permissionsEditor.action.inherit"),ae=e("settings.agents.page.permissionsEditor.action.default"),_=q=>[...q?[{value:"inherit",label:q}]:[],...Fm.map(L=>({value:L,label:ee(L)}))],W=(q,L,K,z=O)=>s.jsx(cn,{value:q??"inherit",options:_(z),onChange:J=>L(J==="inherit"?null:J),"aria-label":K});return m?s.jsx(ze,{title:e("settings.agents.page.section.toolPermissions"),children:s.jsx("p",{className:rn,children:e("common.loading")})}):x?s.jsx(ze,{title:e("settings.agents.page.section.toolPermissions"),children:s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("p",{className:"typography-meta text-[var(--status-error)]",children:e("settings.agents.page.permissionsEditor.state.loadFailed")}),s.jsx(G,{variant:"outline",size:"xs",onClick:()=>E(q=>q+1),children:e("settings.agents.page.permissionsEditor.actions.retry")})]})}):s.jsxs(ze,{title:e("settings.agents.page.section.toolPermissions"),settingsItem:"agents.permissions",info:e("settings.agents.page.permissionsEditor.sectionInfo"),headerAction:P?s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(G,{variant:"ghost",size:"xs",className:"!font-normal",onClick:Z,disabled:v,children:e("settings.agents.page.permissionsEditor.actions.discard")}),s.jsx(G,{size:"xs",className:"!font-normal",onClick:()=>{U()},disabled:v,children:e(v?"settings.common.actions.saving":"settings.agents.page.permissionsEditor.actions.save")})]}):void 0,contentClassName:"space-y-4",children:[s.jsxs("div",{className:"flex flex-col gap-2 pb-2 @xl:flex-row @xl:items-center @xl:justify-between",children:[s.jsxs("div",{className:"flex items-center gap-1.5",children:[s.jsx("span",{className:Kt,children:e("settings.agents.page.permissionsEditor.defaultLabel")}),s.jsx(Yt,{children:e("settings.agents.page.permissionsEditor.defaultInfo")}),r.global===null&&s.jsx("span",{className:"typography-micro text-muted-foreground",children:e("settings.agents.page.permissionsEditor.effectiveHint",{action:ee(y("*")??"allow")})})]}),W(r.global,D,e("settings.agents.page.permissionsEditor.defaultAria"),ae)]}),s.jsx("div",{children:T.map(q=>{const L=r.keys[q]??{action:null,patterns:[]},K=R(q),z=zm.has(q)||L.patterns.length>0,J=z||K.length>0,oe=j[q]===!0,re=y(q);return s.jsxs("div",{className:"border-t border-border/40 py-2",children:[s.jsxs("div",{className:"flex flex-col gap-2 @xl:flex-row @xl:items-center @xl:justify-between",children:[s.jsxs("button",{type:"button",onClick:J?()=>g(pe=>({...pe,[q]:!oe})):void 0,className:ye("flex min-w-0 items-center gap-1.5 text-left",!J&&"cursor-default"),"aria-expanded":J?oe:void 0,children:[s.jsx(B,{name:oe&&J?"arrow-down-s":"arrow-right-s",className:ye("h-3.5 w-3.5 shrink-0 text-muted-foreground",!J&&"opacity-0")}),s.jsx("span",{className:Kt,children:Um(q)}),s.jsx("span",{className:"typography-micro font-mono text-muted-foreground/70",children:q}),L.action===null&&re!==null&&s.jsx("span",{className:"typography-micro text-muted-foreground",children:e("settings.agents.page.permissionsEditor.effectiveHint",{action:ee(re)})}),L.patterns.length>0&&s.jsx("span",{className:"typography-micro rounded bg-muted px-1 text-muted-foreground",children:e("settings.agents.page.permissionsEditor.ruleCount",{count:String(L.patterns.length)})})]}),W(L.action,pe=>V(q,pe),e("settings.agents.page.permissionsEditor.keyAria",{key:q}))]}),oe&&J&&s.jsxs("div",{className:"mt-2 space-y-2 pl-5",children:[L.patterns.map((pe,ve)=>s.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[s.jsx(Be,{value:pe.pattern,onChange:be=>$(q,ve,be.target.value,pe.action),placeholder:e("settings.agents.page.permissionsEditor.patternPlaceholder"),className:"h-8 w-full max-w-[24rem] min-w-0 flex-1 font-mono text-xs"}),s.jsx(cn,{value:pe.action,options:_(),onChange:be=>$(q,ve,pe.pattern,be),"aria-label":e("settings.agents.page.permissionsEditor.patternActionAria",{key:q})}),s.jsx(G,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0 text-muted-foreground hover:bg-destructive/10 hover:text-destructive",onClick:()=>M(q,ve),"aria-label":e("settings.agents.page.permissionsEditor.actions.removeRuleAria"),children:s.jsx(B,{name:"close",className:"h-3.5 w-3.5"})})]},ve)),z&&s.jsxs(G,{variant:"outline",size:"xs",className:"!font-normal",onClick:()=>I(q),children:[s.jsx(B,{name:"add",className:"mr-1 h-3.5 w-3.5"}),e("settings.agents.page.permissionsEditor.actions.addRule")]}),K.length>0&&s.jsxs("div",{className:"space-y-1 pt-1",children:[s.jsxs("div",{className:"flex items-center gap-1.5",children:[s.jsx("span",{className:"typography-micro font-medium text-muted-foreground",children:e("settings.agents.page.permissionsEditor.sessionRulesTitle")}),s.jsx(Yt,{children:e("settings.agents.page.permissionsEditor.sessionRulesInfo")})]}),K.map(pe=>s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:"typography-micro min-w-0 flex-1 truncate font-mono text-muted-foreground/70",children:pe.pattern}),s.jsx("span",{className:"typography-micro text-muted-foreground",children:ee(pe.action)})]},`${pe.pattern}-${pe.action}`))]})]})]},q)})}),s.jsxs("div",{className:"flex flex-wrap items-center gap-2 border-t border-border/40 pt-3",children:[s.jsx(Be,{value:k,onChange:q=>p(q.target.value),onKeyDown:q=>{q.key==="Enter"&&(q.preventDefault(),H())},placeholder:e("settings.agents.page.permissionsEditor.customKeyPlaceholder"),className:"h-8 w-full max-w-[16rem] font-mono text-xs"}),s.jsxs(G,{variant:"outline",size:"xs",className:"!font-normal",onClick:H,disabled:!k.trim(),children:[s.jsx(B,{name:"add",className:"mr-1 h-3.5 w-3.5"}),e("settings.agents.page.permissionsEditor.actions.addKey")]})]})]})},$m=(t,e)=>{const a=la(e);if(!a)return[];const i=t.find(r=>r.id===a.providerId)?.models?.find(r=>r.id===a.modelId);return i?.variants?Object.keys(i.variants):[]},Bm=()=>{const{t}=et(),e=Xe(W=>W.providers),{selectedAgentName:a,getAgentByName:n,createAgent:i,updateAgent:r,agentDraft:l,setAgentDraft:m}=oa(qs(W=>({selectedAgentName:W.selectedAgentName,getAgentByName:W.getAgentByName,createAgent:W.createAgent,updateAgent:W.updateAgent,agentDraft:W.agentDraft,setAgentDraft:W.setAgentDraft}))),c=Ws(),x=oa(W=>Zl(W,c)),u=a?n(a,c):null,v=!!(l&&l.name===a&&!u),[d,j]=o.useState(""),[g,w]=o.useState("user"),[b,k]=o.useState(""),[p,C]=o.useState("subagent"),[E,A]=o.useState(""),[N,h]=o.useState(""),[y,R]=o.useState(void 0),[T,P]=o.useState(void 0),[D,V]=o.useState(""),[$,I]=o.useState(!1),M=o.useRef(null),H=o.useMemo(()=>$m(e,E),[E,e]),U=H.length>0,Z=N||"__default",ee=U,O=o.useMemo(()=>N&&!H.includes(N)?[N,...H]:H,[N,H]);o.useEffect(()=>{if(v&&l){const W=l.name||"",q=l.scope||"user",L=l.description||"",K=l.mode||"subagent",z=l.model||"",J=l.variant||"",oe=l.temperature??void 0,re=l.top_p??void 0,pe=l.prompt||"";j(W),w(q),k(L),C(K),A(z),h(J),R(oe),P(re),V(pe),M.current={draftName:W,draftScope:q,description:L,mode:K,model:z,variant:J,temperature:oe,topP:re,prompt:pe};return}if(u&&a===u.name){const W=u.description||"",q=u.mode||"subagent",L=u.model?.providerID&&u.model?.modelID?`${u.model.providerID}/${u.model.modelID}`:"",K=u.variant||"",z=u.temperature??void 0,J=u.topP??void 0,oe=u.prompt||"";k(W),C(q),A(L),h(K),R(z),P(J),V(oe),M.current={draftName:"",draftScope:"user",description:W,mode:q,model:L,variant:K,temperature:z,topP:J,prompt:oe}}},[l,v,u,a]);const ae=o.useMemo(()=>{const W=M.current;return W?!!(v&&(d!==W.draftName||g!==W.draftScope)||b!==W.description||p!==W.mode||E!==W.model||N!==W.variant||y!==W.temperature||T!==W.topP||D!==W.prompt):!1},[b,d,g,v,p,E,D,y,T,N]),_=async()=>{const W=v?d.trim().replace(/\s+/g,"-"):a?.trim();if(!W){F.error(t("settings.agents.sidebar.toast.agentNameRequired"));return}if(v&&x.some(q=>q.name===W)){F.error(t("settings.agents.sidebar.toast.agentExists"));return}I(!0);try{const q=E.trim(),L=N.trim(),K=D.trim(),z={name:W,...b.trim()?{description:b.trim()}:{},mode:p,model:q===""?null:q,variant:L===""?null:L||void 0,temperature:y??null,top_p:T??null,prompt:K||(v?void 0:null),...v&&g?{scope:g}:{}};let J;v?(J=await i(z,c),J.ok&&m(null)):J=await r(W,z,c),J.ok?J.requiresManualRestart?F.warning(t("settings.agents.page.toast.savedManualRestart")):J.restartDeferred?F.success(t("settings.view.pendingRestart.saved")):F.success(t(v?"settings.agents.page.toast.created":"settings.agents.page.toast.updated")):F.error(t(v?"settings.agents.page.toast.createFailed":"settings.agents.page.toast.updateFailed"))}catch(q){console.error("Error saving agent:",q);const L=q instanceof Error&&q.message?q.message:t("settings.agents.page.toast.saveUnexpectedError");F.error(L)}finally{I(!1)}};return a?s.jsxs(is,{title:v?t("settings.agents.page.title.new"):a,description:t(v?"settings.agents.page.subtitle.new":"settings.agents.page.subtitle.edit"),showSaveStatus:!1,children:[s.jsxs(ze,{title:t("settings.agents.page.section.identityRole"),divider:!1,contentClassName:"space-y-0",children:[v&&s.jsxs(Ft,{settingsItem:"agents.name",label:t("settings.agents.page.field.agentName"),children:[s.jsxs("div",{className:"flex items-center",children:[s.jsx("span",{className:"typography-ui-label text-muted-foreground mr-1",children:"@"}),s.jsx(Be,{value:d,onChange:W=>j(W.target.value),placeholder:t("settings.agents.page.field.agentNamePlaceholder"),className:"h-7 w-40 px-2"})]}),s.jsxs(Tt,{value:g,onValueChange:W=>w(W),children:[s.jsx(Et,{size:Bt,className:"w-fit min-w-[100px]",children:s.jsx(Ut,{placeholder:t("settings.agents.page.field.scopePlaceholder")})}),s.jsxs(Dt,{align:"end",children:[s.jsx(dt,{value:"user",children:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(B,{name:"user-3",className:"h-3.5 w-3.5"}),s.jsx("span",{children:t("settings.common.scope.global")})]})}),s.jsx(dt,{value:"project",children:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(B,{name:"folder",className:"h-3.5 w-3.5"}),s.jsx("span",{children:t("settings.common.scope.project")})]})})]})]})]}),s.jsx(At,{label:t("settings.common.field.description"),controlClassName:"w-full max-w-none",children:s.jsx(Ms,{value:b,onChange:W=>k(W.target.value),placeholder:t("settings.agents.page.field.descriptionPlaceholder"),rows:2,className:"w-full resize-none min-h-[60px] bg-transparent"})}),s.jsx(At,{settingsItem:"agents.mode",label:t("settings.agents.page.field.mode"),info:t("settings.agents.page.field.modeTooltip"),children:s.jsx(cn,{"aria-label":t("settings.agents.page.field.mode"),value:p,onChange:C,options:[{value:"primary",label:t("settings.agents.page.mode.primary")},{value:"subagent",label:t("settings.agents.page.mode.subagent")},{value:"all",label:t("settings.agents.page.mode.all")}]})})]}),s.jsxs(ze,{title:t("settings.agents.page.section.modelParameters"),contentClassName:"space-y-3",children:[s.jsx(Ft,{settingsItem:"agents.model",label:t("settings.agents.page.field.overrideModel"),children:s.jsx(na,{providerId:la(E)?.providerId??"",modelId:la(E)?.modelId??"",onChange:(W,q)=>{A(W&&q?`${W}/${q}`:""),h("")},className:on})}),s.jsx(Ft,{settingsItem:"agents.variant",label:t("settings.agents.page.field.variant"),info:s.jsxs("div",{className:"space-y-1",children:[s.jsx("p",{children:t("settings.agents.page.field.variantTooltip")}),s.jsx("p",{children:t("settings.agents.page.field.variantHint")})]}),children:ee?s.jsxs(Tt,{value:Z,onValueChange:W=>h(W==="__default"?"":W),children:[s.jsx(Et,{size:Bt,className:ln,children:s.jsx(Ut,{placeholder:t("settings.agents.page.field.variantPlaceholder"),children:W=>W==="__default"?t("chat.modelControls.default"):W})}),s.jsxs(Dt,{children:[s.jsx(dt,{value:"__default",children:t("chat.modelControls.default")}),O.map(W=>s.jsx(dt,{value:W,children:W},W))]})]}):s.jsxs(s.Fragment,{children:[s.jsx(Be,{value:N,onChange:W=>h(W.target.value),placeholder:t("settings.agents.page.field.variantPlaceholder"),disabled:!E&&!N,className:"h-8 w-40 rounded-md px-3"}),N&&s.jsx(G,{size:"sm",type:"button",variant:"ghost",onClick:()=>h(""),className:ws,"aria-label":t("settings.common.actions.clear"),title:t("settings.common.actions.clear"),children:s.jsx(B,{name:"close",className:"h-3.5 w-3.5"})})]})}),s.jsxs(Ft,{settingsItem:"agents.temperature",label:t("settings.agents.page.field.temperature"),info:s.jsxs("div",{className:"space-y-1",children:[s.jsx("p",{children:t("settings.agents.page.field.temperatureTooltip")}),s.jsx("p",{children:t("settings.agents.page.field.temperatureRange")})]}),children:[s.jsx(ks,{value:y,fallbackValue:.7,onValueChange:R,onClear:()=>R(void 0),min:0,max:2,step:.1,inputMode:"decimal",placeholder:"—",emptyLabel:"—",className:Ds}),y!==void 0&&s.jsx(G,{size:"sm",type:"button",variant:"ghost",onClick:()=>R(void 0),className:ws,"aria-label":t("settings.agents.page.field.clearTemperatureAria"),title:t("settings.common.actions.clear"),children:s.jsx(B,{name:"close",className:"h-3.5 w-3.5"})})]}),s.jsxs(Ft,{settingsItem:"agents.top-p",label:t("settings.agents.page.field.topP"),info:s.jsxs("div",{className:"space-y-1",children:[s.jsx("p",{children:t("settings.agents.page.field.topPTooltip")}),s.jsx("p",{children:t("settings.agents.page.field.topPRange")})]}),children:[s.jsx(ks,{value:T,fallbackValue:.9,onValueChange:P,onClear:()=>P(void 0),min:0,max:1,step:.1,inputMode:"decimal",placeholder:"—",emptyLabel:"—",className:Ds}),T!==void 0&&s.jsx(G,{size:"sm",type:"button",variant:"ghost",onClick:()=>P(void 0),className:ws,"aria-label":t("settings.agents.page.field.clearTopPAria"),title:t("settings.common.actions.clear"),children:s.jsx(B,{name:"close",className:"h-3.5 w-3.5"})})]})]}),s.jsx(ze,{title:t("settings.agents.page.section.systemPrompt"),settingsItem:"agents.system-prompt",children:s.jsx(Ms,{value:D,onChange:W=>V(W.target.value),placeholder:t("settings.agents.page.field.systemPromptPlaceholder"),rows:8,className:"w-full font-mono typography-meta min-h-[120px] max-h-[60vh] bg-transparent resize-y"})}),!v&&u&&s.jsx(_m,{agent:u}),s.jsx("div",{className:"pb-8",children:s.jsx(G,{onClick:_,disabled:$||!ae,size:"xs",className:"!font-normal",children:t($?"settings.common.actions.saving":"settings.common.actions.saveChanges")})})]}):s.jsx("div",{className:"flex h-full items-center justify-center",children:s.jsxs("div",{className:"text-center text-muted-foreground",children:[s.jsx(B,{name:"robot-2",className:"mx-auto mb-3 h-12 w-12 opacity-50"}),s.jsx("p",{className:"typography-body",children:t("settings.agents.page.empty.title")}),s.jsx("p",{className:"typography-meta mt-1 opacity-75",children:t("settings.agents.page.empty.description")})]})})};function Vm(t,e){return t.kind==="file"?t.content:e??""}const Hm=un({content:as(),exists:ao(),path:as().min(1).optional()}),qm=async(t,e)=>{const a=await t.json().catch(()=>null);return typeof a?.error=="string"&&a.error.trim()?a.error:e},Gm=t=>t.length>0&&!t.endsWith(`
|
|
1
|
+
import{R as o,j as s,f as ct,r as Ze}from"./vendor-react-BUCujlKS.js";import{f as et,B as G,I as B,o as bn,bg as ha,t as F,O as ld,gJ as cd,eX as ze,gK as Kt,b as en,h as ye,au as dd,aq as vn,as as yn,at as ud,ap as jn,eN as oa,gL as Zl,gM as md,gN as Da,gO as Cn,c6 as Ns,c0 as _t,c1 as $t,c2 as Vt,c3 as Ht,c4 as qt,c5 as rs,W as Be,gP as ii,be as wn,eA as Mr,gQ as Oi,gR as rn,f1 as Yt,gS as cn,l as Xe,ff as Ft,ch as Tt,ci as Et,fc as Bt,cj as Ut,ck as Dt,cl as dt,gT as At,cm as Ms,e3 as na,fe as on,fi as la,fg as ln,gU as ws,e8 as ks,gV as Ds,gW as pd,cR as mt,gX as Xl,gY as gd,gZ as aa,g_ as ec,g$ as hd,g5 as La,gb as Xs,h0 as Ma,h1 as tc,h2 as Jr,e4 as Qr,h3 as ia,a9 as Ka,a8 as Vs,h4 as sc,h5 as bo,ae as fd,ey as nc,g as Ra,h6 as xd,h7 as dn,ce as kn,cp as Nn,cf as Sn,ex as bd,h8 as vd,h9 as yd,ha as Yr,aa as Zr,ab as Xr,ac,hb as Dn,a4 as $i,cu as eo,S as Ua,hc as vo,av as jd,cn as wd,d6 as kd,U as Nd,T as Sd,V as Cd,Z as to,hd as Id,he as Pd,cc as Ad,co as Rr,hf as ic,ad as si,fh as rc,P as Zn,hg as _s,eW as Hs,eG as oc,a3 as Td,n as ls,eq as Bi,y as lc,x as Ed,i as Dd,j as Md,er as Rd,p as Fd,hh as Od,hi as Ld,hj as yo,e9 as cc,hk as Kd,hl as mr,hm as jo,hn as zd,ho as Ud,hp as _d,hq as $d,g1 as Vi,hr as fs,hs as As,ht as an,hu as Ys,de as dc,bX as uc,df as mc,bY as Zs,hv as Bn,hw as pc,aD as Vn,aE as Sa,hx as nn,hy as gc,hz as En,ds as hc,hA as fc,hB as Bd,eV as Vd,eU as Hd,hC as Fr,eF as qd,hD as Xn,hE as Us,hF as Gs,fX as ea,hG as Ts,hH as Gd,hI as wo,hJ as xc,hK as ta,hL as Wd,hM as Jd,R as Qd,fb as Kn,hN as za,hO as ko,hP as Ca,hQ as Ia,bZ as ca,hR as Yd,hS as Zd,hT as Xd,hU as eu,hV as pr,hW as No,hX as tu,hY as su,hZ as nu,h_ as au,h$ as So,z as iu,m as Co,i0 as ru,i1 as gr,i2 as Io,ev as ou,i3 as Gi,i4 as lu,i5 as cu,i6 as du,i7 as uu,i8 as mu,i9 as hr,cS as pu,b_ as bc,ia as vc,ib as gu,ay as zn,az as hu}from"./useAppFontEffects-ne84JBVL.js";import{h as xt,u as ce,O as ds,dh as fu,di as Po,B as Mn,aE as In,t as yt,a1 as xu,E as cs,P as Ao,cw as To,cD as Eo,U as qa,p as bu,dj as vu,k as yu,cv as Ta,dk as ju,an as wu,cA as ku,dl as Nu,dm as Su,s as Cu,e as ri,cB as Iu,F as oi,dn as yc,_ as Pu,dp as Au,a4 as jc,a as Rn,aD as ys,d7 as wc,a$ as kc,x as Fa,ah as Tu,ai as Eu,aJ as so,dq as Du,A as Wi,Z as Mu,aO as Do,b3 as ki,aP as Ru,dr as Fu,ac as ra,ds as Ou,dt as Mo,dg as Ro,du as Fo,aM as Oo,dv as Lu,dw as Ku,dx as zu,dy as Uu,dz as Lo,b as _u,dA as Nc,dB as $u,dC as Bu,dD as Vu,dE as Hu,dF as qu,dG as Gu,ay as Wu,i as Sc}from"./index-Dqc6USl3.js";import{u as Ju,U as Ko,R as da,W as ua,X as ma,Y as pa,j as no,ai as sa,$ as Qu,v as Rs,aj as Yu,ag as Zu,ak as Ea,al as Cc,Z as Xu,_ as em}from"./runtimeEndpointReset-DdrazOVH.js";import{u as qs,c as Ic,d as tm,p as sm}from"./vendor-zustand-BAGL70zf.js";import{o as un,s as as,b as ao,_ as io,r as Or,c as Lr,a as li}from"./vendor-zod-CgAdXWZO.js";import{s as nm,p as am}from"./vendor-yaml-3778uTud.js";import{c as zo,s as im,C as Uo,P as rm}from"./shikiHighlight-BPu3JiQs.js";import{getResolvedShikiTheme as om}from"./appThemeRegistry-DLicw4dH.js";import{E as _o}from"./vendor-codemirror-view-CiLROUVV.js";import{Q as Pc}from"./vendor-qrcode-DTJ12-WC.js";import{u as fr,s as lm,d as cm,b as dm,A as um,c as mm,e as pm,f as gm,h as hm,i as xr,j as fm}from"./PluginPane-DEcgDQ9h.js";import{toast as Oa}from"./vendor-sonner-DFyL3AvE.js";import{s as xm}from"./vendor-strip-json-comments-5dJlOkP1.js";const $o=()=>{const{t}=et(),[e,a]=o.useState(null);o.useEffect(()=>{let i=!1;const r=typeof AbortController<"u"?new AbortController:void 0;return(async()=>{try{const m=await xt("/api/system/info",{signal:r?.signal,headers:{Accept:"application/json"}});if(!m.ok)return;const c=await m.json().catch(()=>null);if(!c||i)return;const x=typeof c.port=="number"&&Number.isFinite(c.port)&&c.port>0?c.port:null,u=typeof c.tunnelUrl=="string"&&c.tunnelUrl.trim().length>0?c.tunnelUrl.trim():null;a({port:x,tunnelUrl:u})}catch{}})(),()=>{i=!0,r?.abort()}},[]);const n=[];return e?.port!==null&&e?.port!==void 0&&n.push({key:"application",label:t("settings.openchamber.about.field.applicationUrl"),url:`http://localhost:${e.port}/`}),e?.tunnelUrl&&n.push({key:"tunnel",label:t("settings.openchamber.about.field.tunnelUrl"),url:e.tunnelUrl}),n.length===0?null:s.jsx("div",{className:"flex flex-wrap items-center gap-2",children:n.map(i=>s.jsxs(G,{type:"button",variant:"outline",size:"sm",title:i.label,className:"max-w-full gap-1.5 px-2.5",onClick:()=>{bn(i.url)},children:[s.jsx(B,{name:"external-link",className:"size-3.5 shrink-0"}),s.jsx("span",{className:"max-w-64 truncate font-mono typography-micro",children:i.url})]},i.key))})},Bo="https://github.com/openchamber/openchamber",bm="https://discord.gg/ZYRSdnwwKA",Vo="https://x.com/openchamber_dev",vm=800,Ac=({initialUpdateDialogOpen:t=!1})=>{const{t:e}=et(),[a,n]=o.useState(t),[i,r]=o.useState(!1),[l,m]=o.useState(null),[c,x]=o.useState(null),u=Ju(qs(w=>({info:w.info,checking:w.checking,available:w.available,error:w.error,downloading:w.downloading,downloaded:w.downloaded,progress:w.progress,runtimeType:w.runtimeType,checkForUpdates:w.checkForUpdates,downloadUpdate:w.downloadUpdate,restartToUpdate:w.restartToUpdate}))),{isMobile:v}=ha(),d=l||u.info?.currentVersion||"unknown";o.useEffect(()=>{let w=!1;return(async()=>{try{const k=await xt("/api/system/info",{method:"GET",headers:{Accept:"application/json"}});if(!k.ok)return;const p=await k.json().catch(()=>null),C=typeof p?.openchamberVersion=="string"&&p.openchamberVersion.trim().length>0?p.openchamberVersion.trim():null;w||m(C)}catch{w||m(null)}})(),()=>{w=!0}},[]),o.useEffect(()=>{let w=!1;return(async()=>{try{const k=await xt("/api/opencode/upgrade-status",{method:"GET",headers:{Accept:"application/json"}});if(!k.ok)return;const p=await k.json().catch(()=>null),C=typeof p?.currentVersion=="string"&&p.currentVersion.trim().length>0?p.currentVersion.trim():null;w||x(C)}catch{w||x(null)}})(),()=>{w=!0}},[]);const j=o.useRef(!1);o.useEffect(()=>{if(u.checking)r(!0),j.current=!0;else if(i){const w=setTimeout(()=>{r(!1),j.current&&!u.available&&!u.error&&(F.success(e("settings.openchamber.about.toast.latestVersion")),j.current=!1)},vm);return()=>clearTimeout(w)}},[e,u.checking,i,u.available,u.error]);const g=u.checking||i;return v?s.jsxs("div",{className:"w-full space-y-6 pb-2",children:[s.jsxs("div",{className:"flex flex-col items-center text-center",children:[s.jsx(ld,{width:72,height:72}),s.jsx("h2",{className:`mt-4 ${cd}`,children:"OpenChamber"}),s.jsxs("div",{className:"mt-2 space-y-1 typography-ui text-muted-foreground",children:[s.jsx("p",{children:e("aboutDialog.openChamberVersionLabel",{version:d})}),s.jsx("p",{children:e("aboutDialog.openCodeVersionLabel",{version:c||e("settings.openchamber.about.state.unknown")})})]}),s.jsx($o,{})]}),s.jsxs("div",{className:"flex justify-center",children:[!u.available&&!u.error&&s.jsxs(G,{type:"button",variant:"outline",size:"sm",onClick:()=>u.checkForUpdates(),disabled:g,className:"h-10 w-auto justify-center gap-2 rounded-xl px-4",children:[g?s.jsx(B,{name:"loader",className:"size-4 animate-spin"}):s.jsx(B,{name:"refresh",className:"size-4"}),e(g?"settings.openchamber.about.state.checking":"settings.openchamber.about.actions.checkForUpdates")]}),!g&&u.available&&s.jsxs(G,{type:"button",variant:"default",size:"sm",onClick:()=>n(!0),className:"h-10 w-auto justify-center gap-2 rounded-xl px-4",children:[s.jsx(B,{name:"download",className:"size-4"}),e("settings.openchamber.about.actions.updateToVersion",{version:u.info?.version||""})]})]}),u.error&&s.jsx("p",{className:"rounded-xl border border-[var(--status-error-border)] bg-[var(--status-error-background)] px-3 py-2 typography-meta text-[var(--status-error)]",children:u.error}),s.jsxs("div",{className:"flex flex-col items-center gap-3 text-center",children:[s.jsxs("div",{className:"flex items-center justify-center gap-5",children:[s.jsxs("a",{href:Bo,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 typography-ui-label text-muted-foreground transition-colors hover:text-foreground",children:[s.jsx(B,{name:"github-fill",className:"size-5"}),s.jsx("span",{children:"GitHub"})]}),s.jsxs("a",{href:bm,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 typography-ui-label text-muted-foreground transition-colors hover:text-foreground",children:[s.jsx(B,{name:"discord-fill",className:"size-5"}),s.jsx("span",{children:"Discord"})]})]}),s.jsxs("a",{href:Vo,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 typography-ui-label text-muted-foreground transition-colors hover:text-foreground",children:[s.jsx(B,{name:"twitter-xfill",className:"size-5"}),s.jsx("span",{children:"@openchamber_dev"})]})]}),s.jsx("p",{className:"text-center typography-ui text-muted-foreground/60",children:e("aboutDialog.footerNote")}),s.jsx(Ko,{open:a,onOpenChange:n,info:u.info,downloading:u.downloading,downloaded:u.downloaded,progress:u.progress,error:u.error,onDownload:u.downloadUpdate,onRestart:u.restartToUpdate,runtimeType:u.runtimeType})]}):s.jsxs(ze,{divider:!1,children:[s.jsxs("div",{className:"rounded-lg bg-[var(--surface-elevated)]/70 overflow-hidden flex flex-col",children:[s.jsxs("div",{className:"flex flex-col @xl:flex-row @xl:items-center justify-between gap-4 px-4 py-3 border-b border-border/40",children:[s.jsxs("div",{className:"flex min-w-0 flex-col",children:[s.jsx("span",{className:Kt,children:e("settings.openchamber.about.field.version")}),s.jsx("span",{className:"typography-meta text-muted-foreground font-mono",children:d})]}),s.jsxs("div",{className:"flex min-w-0 flex-col",children:[s.jsx("span",{className:Kt,children:e("settings.openchamber.about.field.openCodeVersion")}),s.jsx("span",{className:"typography-meta text-muted-foreground font-mono",children:c||e("settings.openchamber.about.state.unknown")})]}),s.jsxs("div",{className:"flex items-center gap-3",children:[u.checking&&s.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground",children:[s.jsx(B,{name:"loader",className:"h-4 w-4 animate-spin"}),s.jsx("span",{className:"typography-meta",children:e("settings.openchamber.about.state.checking")})]}),!u.checking&&u.available&&s.jsxs(G,{size:"sm",variant:"default",onClick:()=>n(!0),children:[s.jsx(B,{name:"download",className:"h-4 w-4 mr-1"}),e("settings.openchamber.about.actions.updateToVersion",{version:u.info?.version||""})]}),!u.checking&&!u.available&&!u.error&&s.jsx("span",{className:"typography-meta text-muted-foreground",children:e("settings.openchamber.about.state.upToDate")}),s.jsx(G,{size:"sm",variant:"outline",onClick:()=>u.checkForUpdates(),disabled:u.checking,children:e("settings.openchamber.about.actions.checkForUpdates")})]})]}),u.error&&s.jsx("div",{className:"px-3 py-2 border-b border-border/40",children:s.jsx("p",{className:"typography-meta text-[var(--status-error)]",children:u.error})}),s.jsxs("div",{className:"flex flex-col gap-2 border-b border-border/40 px-4 py-3 @xl:flex-row @xl:items-center @xl:justify-between",children:[s.jsx("span",{className:Kt,children:e("settings.openchamber.about.field.instanceUrls")}),s.jsx($o,{})]}),s.jsxs("div",{className:"flex items-center gap-4 px-4 py-4",children:[s.jsxs("a",{href:Bo,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 text-muted-foreground hover:text-foreground typography-meta transition-colors",children:[s.jsx(B,{name:"github-fill",className:"h-4 w-4"}),s.jsx("span",{children:"GitHub"})]}),s.jsxs("a",{href:Vo,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 text-muted-foreground hover:text-foreground typography-meta transition-colors",children:[s.jsx(B,{name:"twitter-xfill",className:"h-4 w-4"}),s.jsx("span",{children:"@openchamber_dev"})]})]})]}),s.jsx(Ko,{open:a,onOpenChange:n,info:u.info,downloading:u.downloading,downloaded:u.downloaded,progress:u.progress,error:u.error,onDownload:u.downloadUpdate,onRestart:u.restartToUpdate,runtimeType:u.runtimeType})]})},ym=(t,e,a)=>t&&e.some(i=>i.path===t)?t:(e.find(i=>i.id===a)??e[0])?.path??null,Ws=()=>{const t=ct.c(4),e=ce(jm),a=en(wm),n=en(km);let i;return t[0]!==n||t[1]!==a||t[2]!==e?(i=ym(e,a,n),t[0]=n,t[1]=a,t[2]=e,t[3]=i):i=t[3],i};function jm(t){return t.settingsProjectPath}function wm(t){return t.projects}function km(t){return t.activeProjectId}const Tc=t=>t.trim(),ci=t=>{const e=ct.c(40),{className:a}=t,{t:n}=et(),i=en(Nm),r=Ws(),l=ce(Sm),m=ds();let c;e[0]!==i?(c=[...i].sort(Cm),e[0]=i,e[1]=c):c=e[1];const x=c;let u;e:{if(x.length===0){u=null;break e}let $;e[2]!==r||e[3]!==x?($=x.find(I=>I.path===r)??x[0],e[2]=r,e[3]=x,e[4]=$):$=e[4],u=$}const v=u;if(m||x.length===0)return null;let d;e[5]!==v||e[6]!==n?(d=v?.label&&v.label.trim().length>0?v.label:v?.path.split("/").filter(Boolean).pop()||v?.path||n("settings.shared.projectSelector.fallbackProject"),e[5]=v,e[6]=n,e[7]=d):d=e[7];const j=d;let g;e[8]!==j?(g=Tc(j),e[8]=j,e[9]=g):g=e[9];const w=g;let b;e[10]!==a?(b=ye(a),e[10]=a,e[11]=b):b=e[11];let k;e[12]!==n?(k=n("settings.shared.projectSelector.switchProjectAria"),e[12]=n,e[13]=k):k=e[13];let p;e[14]!==n?(p=n("settings.shared.projectSelector.switchProjectTitle"),e[14]=n,e[15]=p):p=e[15];let C,E;e[16]===Symbol.for("react.memo_cache_sentinel")?(C=ye("text-foreground border border-border/80 appearance-none flex h-8 w-full min-w-0 rounded-lg bg-transparent px-3 py-1 outline-none","hover:border-input focus-visible:ring-1 focus-visible:ring-ring focus-visible:border-interactive-border-focus","flex items-center gap-1.5 text-left"),E=s.jsx(B,{name:"folder",className:"h-4 w-4 opacity-70"}),e[16]=C,e[17]=E):(C=e[16],E=e[17]);let A;e[18]!==w?(A=s.jsx("span",{className:"min-w-0 flex-1 truncate typography-ui-label font-medium",children:w}),e[18]=w,e[19]=A):A=e[19];let N;e[20]===Symbol.for("react.memo_cache_sentinel")?(N=s.jsx(B,{name:"arrow-down-s",className:"size-4 opacity-50"}),e[20]=N):N=e[20];let h;e[21]!==A||e[22]!==k||e[23]!==p?(h=s.jsx(vn,{asChild:!0,children:s.jsxs("button",{type:"button","aria-label":k,title:p,className:C,children:[E,A,N]})}),e[21]=A,e[22]=k,e[23]=p,e[24]=h):h=e[24];const y=v?.id??"";let R;e[25]!==l||e[26]!==x?(R=$=>{if(!$)return;const I=x.find(M=>M.id===$);I&&l(I.path)},e[25]=l,e[26]=x,e[27]=R):R=e[27];let T;e[28]!==x?(T=x.map(Im),e[28]=x,e[29]=T):T=e[29];let P;e[30]!==y||e[31]!==R||e[32]!==T?(P=s.jsx(yn,{align:"start",className:"w-auto",children:s.jsx(ud,{value:y,onValueChange:R,children:T})}),e[30]=y,e[31]=R,e[32]=T,e[33]=P):P=e[33];let D;e[34]!==h||e[35]!==P?(D=s.jsxs(jn,{children:[h,P]}),e[34]=h,e[35]=P,e[36]=D):D=e[36];let V;return e[37]!==D||e[38]!==b?(V=s.jsx("div",{className:b,children:D}),e[37]=D,e[38]=b,e[39]=V):V=e[39],V};function Nm(t){return t.projects}function Sm(t){return t.setSettingsProjectPath}function Cm(t,e){return(t.label||t.path).localeCompare(e.label||e.path)}function Im(t){const e=t.label?.trim()?t.label.trim():t.path.split("/").filter(Boolean).pop()||t.path,a=Tc(e);return s.jsx(dd,{value:t.id,children:s.jsx("span",{className:"min-w-0 truncate typography-ui",children:a})},t.id)}function Pm(t,e){return`opencode:sidebar-group:${t}:${e}`}const Kr=t=>{const e=ct.c(33),{label:a,count:n,storageKey:i,defaultExpanded:r,children:l}=t,m=r===void 0?!0:r;let c;e[0]!==a||e[1]!==i?(c=Pm(i,a),e[0]=a,e[1]=i,e[2]=c):c=e[2];const x=c,u=o.useId();let v;e[3]!==m||e[4]!==x?(v=()=>{try{const P=localStorage.getItem(x);if(P!==null)return P==="true"}catch{}return m},e[3]=m,e[4]=x,e[5]=v):v=e[5];const[d,j]=Ze.useState(v);let g,w;e[6]!==d||e[7]!==x?(g=()=>{try{localStorage.setItem(x,String(d))}catch{}},w=[x,d],e[6]=d,e[7]=x,e[8]=g,e[9]=w):(g=e[8],w=e[9]),Ze.useEffect(g,w);let b;e[10]===Symbol.for("react.memo_cache_sentinel")?(b=()=>j(Am),e[10]=b):b=e[10];let k;e[11]===Symbol.for("react.memo_cache_sentinel")?(k=ye("flex w-full items-center gap-1 rounded-md px-2 py-1 text-left","text-xs font-semibold uppercase tracking-wide text-muted-foreground","hover:bg-[var(--interactive-hover)] transition-colors duration-150","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"),e[11]=k):k=e[11];const p=!d&&"-rotate-90";let C;e[12]!==p?(C=ye("h-3.5 w-3.5 flex-shrink-0 transition-transform duration-200",p),e[12]=p,e[13]=C):C=e[13];let E;e[14]!==C?(E=s.jsx(B,{name:"arrow-down-s",className:C}),e[14]=C,e[15]=E):E=e[15];let A;e[16]!==a?(A=s.jsx("span",{className:"flex-1 truncate",children:a}),e[16]=a,e[17]=A):A=e[17];let N;e[18]!==n?(N=s.jsx("span",{className:"ml-1 tabular-nums opacity-60",children:n}),e[18]=n,e[19]=N):N=e[19];let h;e[20]!==u||e[21]!==d||e[22]!==E||e[23]!==A||e[24]!==N?(h=s.jsxs("button",{type:"button",onClick:b,"aria-expanded":d,"aria-controls":u,className:k,children:[E,A,N]}),e[20]=u,e[21]=d,e[22]=E,e[23]=A,e[24]=N,e[25]=h):h=e[25];const y=!d;let R;e[26]!==l||e[27]!==u||e[28]!==y?(R=s.jsx("div",{id:u,hidden:y,className:"mt-0.5 space-y-0.5 ml-2 pl-3 border-l-2 border-[var(--interactive-border)]",children:l}),e[26]=l,e[27]=u,e[28]=y,e[29]=R):R=e[29];let T;return e[30]!==h||e[31]!==R?(T=s.jsxs("div",{children:[h,R]}),e[30]=h,e[31]=R,e[32]=T):T=e[32],T};function Am(t){return!t}const Tm=t=>{if(!Array.isArray(t))return[];const e=[];for(const a of t){if(!a||typeof a!="object")continue;const n=a;typeof n.permission!="string"||typeof n.pattern!="string"||typeof n.action!="string"||n.action!=="allow"&&n.action!=="ask"&&n.action!=="deny"||e.push({permission:n.permission,pattern:n.pattern,action:n.action})}return e},Em=t=>{const e=new Map;for(const a of t)!a.permission||a.permission==="invalid"||a.pattern&&e.set(`${a.permission}::${a.pattern}`,a);return Array.from(e.values())},Ho=t=>{const e=Em(Tm(t));if(e.length===0)return;const a={};for(const i of e)i.permission&&((a[i.permission]||={})[i.pattern]=i.action);const n={};for(const[i,r]of Object.entries(a)){const l=Object.keys(r);if(l.length===1&&l[0]==="*"){n[i]=r["*"];continue}n[i]=r}return Object.keys(n).length>0?n:void 0},Dm=({onItemSelect:t})=>{const{t:e}=et(),[a,n]=o.useState(null),[i,r]=o.useState(""),[l,m]=o.useState(null),[c,x]=o.useState(null),[u,v]=o.useState(!1),[d,j]=o.useState(null),{selectedAgentName:g,setSelectedAgent:w,setAgentDraft:b,createAgent:k,deleteAgent:p,loadAgents:C}=oa(qs(O=>({selectedAgentName:O.selectedAgentName,setSelectedAgent:O.setSelectedAgent,setAgentDraft:O.setAgentDraft,createAgent:O.createAgent,deleteAgent:O.deleteAgent,loadAgents:O.loadAgents}))),E=Ws(),A=oa(O=>Zl(O,E));o.useEffect(()=>{C(E)},[C,E]);const N="bg-background",h=()=>{const O="new-agent";let ae=O,_=1;for(;A.some(W=>W.name===ae);)ae=`${O}-${_}`,_++;b({name:ae,scope:"user"}),w(ae),t?.()},y=async O=>{if(Da(O)){F.error(e("settings.agents.sidebar.toast.builtInCannotDelete"));return}m(O),x("delete")},R=async O=>{Da(O)&&(m(O),x("reset"))},T=()=>{m(null),x(null)},P=async()=>{if(!(!l||!c)){v(!0);try{const O=await p(l.name,l.scope,E);O.ok?(O.requiresManualRestart?F.warning(e("settings.agents.page.toast.savedManualRestart")):O.restartDeferred?F.success(e("settings.view.pendingRestart.saved")):c==="delete"?F.success(e("settings.agents.sidebar.toast.agentDeleted",{name:l.name})):F.success(e("settings.agents.sidebar.toast.agentReset",{name:l.name})),T()):c==="delete"?F.error(e("settings.agents.sidebar.toast.deleteFailed")):F.error(e("settings.agents.sidebar.toast.resetFailed"))}catch(O){const ae=O instanceof Error?O.message:"",_=/built-in|not deletable|not found/i.test(ae);c==="delete"?F.error(e(_?"settings.agents.sidebar.toast.definitionNotFound":"settings.agents.sidebar.toast.deleteFailed")):F.error(e("settings.agents.sidebar.toast.resetFailed"))}v(!1)}},D=O=>{const ae=O.name;let _=1,W=`${ae}-copy`;for(;A.some(z=>z.name===W);)_++,W=`${ae}-copy-${_}`;const q=O,L=O.model?.providerID&&O.model?.modelID?`${O.model.providerID}/${O.model.modelID}`:null,K=O;b({name:W,scope:q.scope||"user",description:O.description,model:L,variant:O.variant,temperature:O.temperature,top_p:O.topP,prompt:O.prompt,mode:O.mode,permission:Ho(O.permission),disable:K.disable}),w(W),t?.()},V=O=>{r(O.name),n(O)},$=async()=>{if(!a)return;const O=i.trim().replace(/\s+/g,"-");if(!O){F.error(e("settings.agents.sidebar.toast.agentNameRequired"));return}if(O===a.name){n(null);return}if(A.some(q=>q.name===O)){F.error(e("settings.agents.sidebar.toast.agentExists"));return}const ae=a.model?.providerID&&a.model?.modelID?`${a.model.providerID}/${a.model.modelID}`:null,_=a,W=await k({name:O,description:a.description,model:ae,variant:a.variant,temperature:a.temperature,top_p:a.topP,prompt:a.prompt,mode:a.mode,permission:Ho(a.permission),disable:_.disable,scope:_.scope},E);if(W.ok){const q=await p(a.name,_.scope,E);q.ok?(W.requiresManualRestart||q.requiresManualRestart?F.warning(e("settings.agents.page.toast.savedManualRestart")):F.success(e("settings.agents.sidebar.toast.agentRenamed",{name:O})),w(O)):F.error(e("settings.agents.sidebar.toast.removeOldAfterRenameFailed"))}else F.error(e("settings.agents.sidebar.toast.renameFailed"));n(null)},I=O=>{switch(O){case"primary":return s.jsx(B,{name:"ai-agent",className:"h-3 w-3 text-primary"});case"all":return s.jsx(B,{name:"ai-agent-fill",className:"h-3 w-3 text-primary"});case"subagent":return s.jsx(B,{name:"robot",className:"h-3 w-3 text-primary"});default:return null}},M=A.filter(O=>!md(O)),H=M.filter(Da),U=M.filter(O=>!Da(O)),{groupedCustomAgents:Z,ungroupedCustomAgents:ee}=Ze.useMemo(()=>{const O={},ae=[];for(const W of U){const q=W;q.group?(O[q.group]||(O[q.group]=[]),O[q.group].push(W)):ae.push(W)}return{groupedCustomAgents:Object.keys(O).sort((W,q)=>W.localeCompare(q)).map(W=>({name:W,agents:O[W]})),ungroupedCustomAgents:ae}},[U]);return s.jsxs("div",{className:ye("flex h-full flex-col",N),children:[s.jsxs("div",{className:"border-b px-3 pt-4 pb-3",children:[s.jsx("h2",{className:`${Cn} mb-3`,children:e("settings.agents.sidebar.title")}),s.jsx(ci,{className:"mb-3"}),s.jsxs("div",{className:"flex items-center justify-between gap-2",children:[s.jsx("span",{className:"typography-meta text-muted-foreground",children:e("settings.agents.sidebar.total",{count:M.length})}),s.jsx(G,{size:"sm","data-settings-item":"agents.create",variant:"ghost",className:"h-7 w-7 px-0 -my-1 text-muted-foreground",onClick:h,children:s.jsx(B,{name:"add",className:"h-3.5 w-3.5"})})]})]}),s.jsx(Ns,{outerClassName:"flex-1 min-h-0",className:"space-y-1 px-3 py-2 overflow-x-hidden",children:M.length===0?s.jsxs("div",{className:"py-12 px-4 text-center text-muted-foreground",children:[s.jsx(B,{name:"robot-2",className:"mx-auto mb-3 h-10 w-10 opacity-50"}),s.jsx("p",{className:"typography-ui-label font-medium",children:e("settings.agents.sidebar.empty.title")}),s.jsx("p",{className:"typography-meta mt-1 opacity-75",children:e("settings.agents.sidebar.empty.description")})]}):s.jsxs(s.Fragment,{children:[H.length>0&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"px-2 pb-1.5 pt-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:e("settings.agents.sidebar.section.builtIn")}),H.map(O=>s.jsx(br,{agent:O,isSelected:g===O.name,onSelect:()=>{w(O.name),t?.()},onReset:()=>R(O),onDuplicate:()=>D(O),getAgentModeIcon:I,isMenuOpen:d===O.name,onMenuOpenChange:ae=>j(ae?O.name:null)},O.name))]}),U.length>0&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"px-2 pb-1.5 pt-3 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:e("settings.agents.sidebar.section.custom")}),Z.map(({name:O,agents:ae})=>s.jsx(Kr,{label:O,count:ae.length,storageKey:"agents",children:ae.map(_=>s.jsx(br,{agent:_,isSelected:g===_.name,onSelect:()=>{w(_.name),t?.()},onRename:()=>V(_),onDelete:()=>y(_),onDuplicate:()=>D(_),getAgentModeIcon:I,isMenuOpen:d===_.name,onMenuOpenChange:W=>j(W?_.name:null)},_.name))},O)),ee.map(O=>s.jsx(br,{agent:O,isSelected:g===O.name,onSelect:()=>{w(O.name),t?.()},onRename:()=>V(O),onDelete:()=>y(O),onDuplicate:()=>D(O),getAgentModeIcon:I,isMenuOpen:d===O.name,onMenuOpenChange:ae=>j(ae?O.name:null)},O.name))]})]})}),s.jsx(_t,{open:l!==null&&c!==null,onOpenChange:O=>{!O&&!u&&T()},children:s.jsxs($t,{className:"max-w-md",children:[s.jsxs(Vt,{children:[s.jsx(Ht,{children:e(c==="delete"?"settings.agents.sidebar.dialog.deleteTitle":"settings.agents.sidebar.dialog.resetTitle")}),s.jsx(qt,{children:c==="delete"?e("settings.agents.sidebar.dialog.deleteDescription",{name:l?.name??""}):e("settings.agents.sidebar.dialog.resetDescription",{name:l?.name??""})})]}),s.jsxs(rs,{children:[s.jsx(G,{size:"sm",variant:"ghost",onClick:T,disabled:u,children:e("settings.common.actions.cancel")}),s.jsx(G,{size:"sm",onClick:P,disabled:u,children:e(c==="delete"?"settings.common.actions.delete":"settings.common.actions.reset")})]})]})}),s.jsx(_t,{open:a!==null,onOpenChange:O=>!O&&n(null),children:s.jsxs($t,{children:[s.jsxs(Vt,{children:[s.jsx(Ht,{children:e("settings.agents.sidebar.renameDialog.title")}),s.jsx(qt,{children:e("settings.agents.sidebar.renameDialog.description",{name:a?.name??""})})]}),s.jsx(Be,{value:i,onChange:O=>r(O.target.value),placeholder:e("settings.agents.sidebar.renameDialog.placeholder"),className:"text-foreground placeholder:text-muted-foreground",onKeyDown:O=>{O.key==="Enter"&&$()}}),s.jsxs(rs,{children:[s.jsx(G,{size:"sm",variant:"ghost",onClick:()=>n(null),children:e("settings.common.actions.cancel")}),s.jsx(G,{size:"sm",onClick:$,children:e("settings.common.actions.rename")})]})]})})]})},br=t=>{const e=ct.c(52),{agent:a,isSelected:n,onSelect:i,onDelete:r,onReset:l,onRename:m,onDuplicate:c,getAgentModeIcon:x,isMenuOpen:u,onMenuOpenChange:v}=t,{t:d}=et(),j=a;let g;e[0]===Symbol.for("react.memo_cache_sentinel")?(g=ii(),e[0]=g):g=e[0];const w=g,[b,k]=o.useState(!1);let p;e[1]!==r||e[2]!==c||e[3]!==m||e[4]!==l||e[5]!==d?(p=ae=>s.jsxs(s.Fragment,{children:[m&&s.jsxs(ae,{onClick:_=>{_.stopPropagation(),m()},children:[s.jsx(B,{name:"edit",className:"h-4 w-4 mr-px"}),d("settings.common.actions.rename")]}),s.jsxs(ae,{onClick:_=>{_.stopPropagation(),c()},children:[s.jsx(B,{name:"file-copy",className:"h-4 w-4 mr-px"}),d("settings.common.actions.duplicate")]}),l&&s.jsxs(ae,{onClick:_=>{_.stopPropagation(),l()},children:[s.jsx(B,{name:"restart",className:"h-4 w-4 mr-px"}),d("settings.common.actions.reset")]}),r&&s.jsxs(ae,{onClick:_=>{_.stopPropagation(),r()},className:"text-destructive focus:text-destructive",children:[s.jsx(B,{name:"delete-bin",className:"h-4 w-4 mr-px"}),d("settings.common.actions.delete")]})]}),e[1]=r,e[2]=c,e[3]=m,e[4]=l,e[5]=d,e[6]=p):p=e[6];const C=p,E=n?"bg-interactive-selection":"hover:bg-interactive-hover";let A;e[7]!==E?(A=ye("group relative flex items-center rounded-md px-1.5 py-1 transition-all duration-200 select-none",E),e[7]=E,e[8]=A):A=e[8];let N;e[9]===Symbol.for("react.memo_cache_sentinel")?(N=w?void 0:ae=>{ae.preventDefault(),k(!0)},e[9]=N):N=e[9];let h;e[10]!==A?(h=s.jsx("div",{className:A,onContextMenu:N}),e[10]=A,e[11]=h):h=e[11];let y;e[12]!==a.name?(y=s.jsx("span",{className:"typography-ui-label font-normal truncate text-foreground",children:a.name}),e[12]=a.name,e[13]=y):y=e[13];let R;e[14]!==a.mode||e[15]!==x?(R=x(a.mode),e[14]=a.mode,e[15]=x,e[16]=R):R=e[16];let T;e[17]!==a||e[18]!==j.scope||e[19]!==d?(T=(j.scope||Da(a))&&s.jsx("span",{className:"typography-micro text-muted-foreground bg-muted px-1 rounded flex-shrink-0 leading-none pb-px border border-border/50",children:Da(a)?d("settings.agents.sidebar.badge.system"):j.scope}),e[17]=a,e[18]=j.scope,e[19]=d,e[20]=T):T=e[20];let P;e[21]!==y||e[22]!==R||e[23]!==T?(P=s.jsxs("div",{className:"flex items-center gap-1.5",children:[y,R,T]}),e[21]=y,e[22]=R,e[23]=T,e[24]=P):P=e[24];let D;e[25]!==a.description?(D=a.description&&s.jsx("div",{className:"typography-micro text-muted-foreground/60 truncate leading-tight",children:a.description}),e[25]=a.description,e[26]=D):D=e[26];let V;e[27]!==i||e[28]!==P||e[29]!==D?(V=s.jsxs("button",{onClick:i,className:"flex min-w-0 flex-1 flex-col gap-0 rounded-sm text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",tabIndex:0,children:[P,D]}),e[27]=i,e[28]=P,e[29]=D,e[30]=V):V=e[30];let $;e[31]!==v?($=ae=>{ae&&k(!1),v(ae)},e[31]=v,e[32]=$):$=e[32];let I;e[33]===Symbol.for("react.memo_cache_sentinel")?(I=s.jsx(vn,{asChild:!0,children:s.jsx(G,{size:"sm",variant:"ghost",className:"h-6 w-6 px-0 flex-shrink-0 -mr-1 opacity-100 transition-opacity md:opacity-0 md:group-hover:opacity-100",children:s.jsx(B,{name:"more-2",className:"h-3.5 w-3.5"})})}),e[33]=I):I=e[33];let M;e[34]!==C?(M=s.jsx(yn,{align:"end",className:"w-fit min-w-20",children:C(wn)}),e[34]=C,e[35]=M):M=e[35];let H;e[36]!==u||e[37]!==$||e[38]!==M?(H=s.jsxs(jn,{open:u,onOpenChange:$,children:[I,M]}),e[36]=u,e[37]=$,e[38]=M,e[39]=H):H=e[39];let U;e[40]!==V||e[41]!==H?(U=s.jsxs("div",{className:"flex min-w-0 flex-1 items-center",children:[V,H]}),e[40]=V,e[41]=H,e[42]=U):U=e[42];let Z;e[43]!==U||e[44]!==h?(Z=s.jsx(ma,{render:h,children:U}),e[43]=U,e[44]=h,e[45]=Z):Z=e[45];let ee;e[46]!==C?(ee=s.jsx(da,{className:"w-fit min-w-20",children:C(ua)}),e[46]=C,e[47]=ee):ee=e[47];let O;return e[48]!==b||e[49]!==Z||e[50]!==ee?(O=s.jsxs(pa,{open:b,onOpenChange:k,children:[Z,ee]}),e[48]=b,e[49]=Z,e[50]=ee,e[51]=O):O=e[51],O},is=t=>{const e=ct.c(21),{children:a,className:n,outerClassName:i,title:r,titleLeading:l,titleAccessory:m,description:c,headerEnd:x,showSaveStatus:u}=t,v=u===void 0?!1:u,d=r!=null||c!=null||x!=null||v,j=typeof r=="string"||typeof r=="number",g=l!=null||m!=null;let w;e[0]!==i?(w=ye("h-full",i),e[0]=i,e[1]=w):w=e[1];let b;e[2]!==n?(b=ye("mx-auto max-w-[840px] space-y-0 px-6 py-6 @3xl:px-12 @3xl:py-8","[&>section:first-of-type]:border-t-0 [&>section:first-of-type]:pt-0",n),e[2]=n,e[3]=b):b=e[3];let k;e[4]!==c||e[5]!==d||e[6]!==g||e[7]!==x||e[8]!==j||e[9]!==v||e[10]!==r||e[11]!==m||e[12]!==l?(k=d&&s.jsxs("div",{className:"mb-2 flex flex-wrap items-start justify-between gap-x-4 gap-y-3 pb-6",children:[s.jsxs("div",{className:"min-w-0 flex-1 basis-64 space-y-1",children:[r!=null?j?g?s.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[l,s.jsx("h1",{"data-settings-page-heading":!0,tabIndex:-1,className:ye(Mr,"min-w-0 truncate"),children:r}),s.jsx("span",{className:"shrink-0",children:m})]}):s.jsx("h1",{"data-settings-page-heading":!0,tabIndex:-1,className:Mr,children:r}):r:null,c!=null?typeof c=="string"||typeof c=="number"?s.jsx("p",{className:Oi,children:c}):c:null]}),s.jsxs("div",{className:"flex shrink-0 flex-wrap items-center justify-end gap-3",children:[x,v&&s.jsx(Rm,{})]})]}),e[4]=c,e[5]=d,e[6]=g,e[7]=x,e[8]=j,e[9]=v,e[10]=r,e[11]=m,e[12]=l,e[13]=k):k=e[13];let p;e[14]!==a||e[15]!==b||e[16]!==k?(p=s.jsxs("div",{className:b,children:[k,a]}),e[14]=a,e[15]=b,e[16]=k,e[17]=p):p=e[17];let C;return e[18]!==w||e[19]!==p?(C=s.jsx(Ns,{outerClassName:w,className:"w-full @container",children:p}),e[18]=w,e[19]=p,e[20]=C):C=e[20],C},Mm=500,Rm=()=>{const t=ct.c(13),{t:e}=et(),a=o.useSyncExternalStore(fu,Po,Po),[n,i]=o.useState(!1);let r,l;if(t[0]!==a?(r=()=>{if(a!=="saving"){i(!1);return}const u=setTimeout(()=>i(!0),Mm);return()=>clearTimeout(u)},l=[a],t[0]=a,t[1]=r,t[2]=l):(r=t[1],l=t[2]),o.useEffect(r,l),a==="error"){let u;t[3]===Symbol.for("react.memo_cache_sentinel")?(u=s.jsx(B,{name:"error-warning",className:"size-3.5"}),t[3]=u):u=t[3];let v;t[4]!==e?(v=e("settings.common.status.saveFailed"),t[4]=e,t[5]=v):v=t[5];let d;return t[6]!==v?(d=s.jsxs("div",{"aria-live":"assertive",className:"flex shrink-0 items-center gap-1.5 typography-meta text-[var(--status-error)]",children:[u,s.jsx("span",{children:v})]}),t[6]=v,t[7]=d):d=t[7],d}if(a!=="saving"||!n)return null;let m;t[8]===Symbol.for("react.memo_cache_sentinel")?(m=s.jsx(B,{name:"loader-4",className:"size-3.5 animate-spin"}),t[8]=m):m=t[8];let c;t[9]!==e?(c=e("settings.common.actions.saving"),t[9]=e,t[10]=c):c=t[10];let x;return t[11]!==c?(x=s.jsxs("div",{"aria-live":"polite",className:"flex shrink-0 items-center gap-1.5 typography-meta text-muted-foreground",children:[m,s.jsx("span",{children:c})]}),t[11]=c,t[12]=x):x=t[12],x},Fm=["allow","ask","deny"],ti=t=>t==="allow"||t==="ask"||t==="deny",zr=()=>({global:null,keys:{}}),Om=t=>{const e=zr();if(t==null)return e;if(typeof t=="string")return ti(t)&&(e.global=t),e;if(typeof t!="object"||Array.isArray(t))return e;for(const[a,n]of Object.entries(t)){if(a==="*"){ti(n)&&(e.global=n);continue}const i={action:null,patterns:[]};if(ti(n))i.action=n;else if(n&&typeof n=="object"&&!Array.isArray(n))for(const[r,l]of Object.entries(n))ti(l)&&(r==="*"?i.action=l:i.patterns.push({pattern:r,action:l}));else continue;e.keys[a]=i}return e},Ur=t=>{const e={};t.global!==null&&(e["*"]=t.global);for(const[a,n]of Object.entries(t.keys)){const i=n.patterns.filter(r=>r.pattern.trim().length>0);if(n.action!==null&&i.length===0)e[a]=n.action;else if(i.length>0){const r={};n.action!==null&&(r["*"]=n.action);for(const l of i)r[l.pattern]=l.action;e[a]=r}}return Object.keys(e).length>0?e:null},Lm=(t,e)=>JSON.stringify(Ur(t))===JSON.stringify(Ur(e)),Un=t=>JSON.parse(JSON.stringify(t)),Km=["edit","external_directory","doom_loop","plan_enter","plan_exit"],zm=new Set(["read","edit","glob","grep","list","bash","task","external_directory","lsp","skill"]),qo=new Set(["write","patch","apply_patch","multiedit","invalid"]),Um=t=>t.split(/[_-]/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),_m=({agent:t})=>{const{t:e}=et(),a=oa(q=>q.updateAgent),[n,i]=o.useState(zr),[r,l]=o.useState(zr),[m,c]=o.useState(!0),[x,u]=o.useState(!1),[v,d]=o.useState(!1),[j,g]=o.useState({}),[w,b]=o.useState([]),[k,p]=o.useState(""),[C,E]=o.useState(0),A=t.name,N=Ws();o.useEffect(()=>{let q=!1;return c(!0),u(!1),(async()=>{try{const L=N,K=L?`?directory=${encodeURIComponent(L)}`:"",z=await xt(`/api/config/agents/${encodeURIComponent(A)}/config${K}`,{headers:{"Cache-Control":"no-cache",...L?{"x-opencode-directory":L}:{}}});if(!z.ok)throw new Error(String(z.status));const J=await z.json().catch(()=>null);if(q)return;const oe=Om(J?.config?.permission);i(Un(oe)),l(oe)}catch{q||u(!0)}finally{q||c(!1)}})(),()=>{q=!0}},[A,C,N]),o.useEffect(()=>{let q=!1;return(async()=>{try{const L=await Mn.listToolIds({directory:N});!q&&Array.isArray(L)&&b(L.filter(K=>typeof K=="string"&&!qo.has(K)))}catch{}})(),()=>{q=!0}},[A,N]);const h=o.useMemo(()=>{const q=t.permission;if(!Array.isArray(q))return[];const L=[];for(const K of q){if(!K||typeof K!="object")continue;const{permission:z,pattern:J,action:oe}=K;typeof z=="string"&&typeof J=="string"&&ti(oe)&&L.push({permission:z,pattern:J,action:oe})}return L},[t]),y=o.useCallback(q=>{const L=h.find(z=>z.permission===q&&z.pattern==="*");if(L)return L.action;const K=h.find(z=>z.permission==="*"&&z.pattern==="*");return K?K.action:null},[h]),R=o.useCallback(q=>{const L=r.keys[q]?.patterns??[],K=new Set(L.map(z=>z.pattern));return h.filter(z=>z.permission===q&&z.pattern!=="*"&&!K.has(z.pattern))},[h,r.keys]),T=o.useMemo(()=>{const q=new Set;for(const L of w)q.add(L);for(const L of Km)q.add(L);for(const L of Object.keys(r.keys))q.add(L);for(const L of qo)q.delete(L);return Array.from(q).sort((L,K)=>L.localeCompare(K))},[w,r.keys]),P=o.useMemo(()=>!Lm(r,n),[r,n]),D=q=>{l(L=>({...L,global:q}))},V=(q,L)=>{l(K=>{const z=Un(K),J=z.keys[q]??{action:null,patterns:[]};return J.action=L,J.action===null&&J.patterns.length===0?delete z.keys[q]:z.keys[q]=J,z})},$=(q,L,K,z)=>{l(J=>{const oe=Un(J),re=oe.keys[q]??{action:null,patterns:[]};return re.patterns[L]={pattern:K,action:z},oe.keys[q]=re,oe})},I=q=>{l(L=>{const K=Un(L),z=K.keys[q]??{action:null,patterns:[]};return z.patterns.push({pattern:"",action:"allow"}),K.keys[q]=z,K}),g(L=>({...L,[q]:!0}))},M=(q,L)=>{l(K=>{const z=Un(K),J=z.keys[q];return J?(J.patterns.splice(L,1),J.action===null&&J.patterns.length===0&&delete z.keys[q],z):K})},H=()=>{const q=k.trim();!q||q==="*"||(l(L=>{if(L.keys[q])return L;const K=Un(L);return K.keys[q]={action:"ask",patterns:[]},K}),g(L=>({...L,[q]:!0})),p(""))},U=async()=>{d(!0);try{const q=Ur(r),L=await a(A,{permission:q});L.ok?(i(Un(r)),F.success(L.requiresManualRestart?e("settings.agents.page.permissionsEditor.toast.savedRestartRequired"):e("settings.agents.page.permissionsEditor.toast.saved"))):F.error(e("settings.agents.page.permissionsEditor.toast.saveFailed"))}finally{d(!1)}},Z=()=>{l(Un(n))},ee=q=>e(q==="allow"?"settings.agents.page.permissionsEditor.action.allow":q==="ask"?"settings.agents.page.permissionsEditor.action.ask":"settings.agents.page.permissionsEditor.action.deny"),O=e("settings.agents.page.permissionsEditor.action.inherit"),ae=e("settings.agents.page.permissionsEditor.action.default"),_=q=>[...q?[{value:"inherit",label:q}]:[],...Fm.map(L=>({value:L,label:ee(L)}))],W=(q,L,K,z=O)=>s.jsx(cn,{value:q??"inherit",options:_(z),onChange:J=>L(J==="inherit"?null:J),"aria-label":K});return m?s.jsx(ze,{title:e("settings.agents.page.section.toolPermissions"),children:s.jsx("p",{className:rn,children:e("common.loading")})}):x?s.jsx(ze,{title:e("settings.agents.page.section.toolPermissions"),children:s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("p",{className:"typography-meta text-[var(--status-error)]",children:e("settings.agents.page.permissionsEditor.state.loadFailed")}),s.jsx(G,{variant:"outline",size:"xs",onClick:()=>E(q=>q+1),children:e("settings.agents.page.permissionsEditor.actions.retry")})]})}):s.jsxs(ze,{title:e("settings.agents.page.section.toolPermissions"),settingsItem:"agents.permissions",info:e("settings.agents.page.permissionsEditor.sectionInfo"),headerAction:P?s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(G,{variant:"ghost",size:"xs",className:"!font-normal",onClick:Z,disabled:v,children:e("settings.agents.page.permissionsEditor.actions.discard")}),s.jsx(G,{size:"xs",className:"!font-normal",onClick:()=>{U()},disabled:v,children:e(v?"settings.common.actions.saving":"settings.agents.page.permissionsEditor.actions.save")})]}):void 0,contentClassName:"space-y-4",children:[s.jsxs("div",{className:"flex flex-col gap-2 pb-2 @xl:flex-row @xl:items-center @xl:justify-between",children:[s.jsxs("div",{className:"flex items-center gap-1.5",children:[s.jsx("span",{className:Kt,children:e("settings.agents.page.permissionsEditor.defaultLabel")}),s.jsx(Yt,{children:e("settings.agents.page.permissionsEditor.defaultInfo")}),r.global===null&&s.jsx("span",{className:"typography-micro text-muted-foreground",children:e("settings.agents.page.permissionsEditor.effectiveHint",{action:ee(y("*")??"allow")})})]}),W(r.global,D,e("settings.agents.page.permissionsEditor.defaultAria"),ae)]}),s.jsx("div",{children:T.map(q=>{const L=r.keys[q]??{action:null,patterns:[]},K=R(q),z=zm.has(q)||L.patterns.length>0,J=z||K.length>0,oe=j[q]===!0,re=y(q);return s.jsxs("div",{className:"border-t border-border/40 py-2",children:[s.jsxs("div",{className:"flex flex-col gap-2 @xl:flex-row @xl:items-center @xl:justify-between",children:[s.jsxs("button",{type:"button",onClick:J?()=>g(pe=>({...pe,[q]:!oe})):void 0,className:ye("flex min-w-0 items-center gap-1.5 text-left",!J&&"cursor-default"),"aria-expanded":J?oe:void 0,children:[s.jsx(B,{name:oe&&J?"arrow-down-s":"arrow-right-s",className:ye("h-3.5 w-3.5 shrink-0 text-muted-foreground",!J&&"opacity-0")}),s.jsx("span",{className:Kt,children:Um(q)}),s.jsx("span",{className:"typography-micro font-mono text-muted-foreground/70",children:q}),L.action===null&&re!==null&&s.jsx("span",{className:"typography-micro text-muted-foreground",children:e("settings.agents.page.permissionsEditor.effectiveHint",{action:ee(re)})}),L.patterns.length>0&&s.jsx("span",{className:"typography-micro rounded bg-muted px-1 text-muted-foreground",children:e("settings.agents.page.permissionsEditor.ruleCount",{count:String(L.patterns.length)})})]}),W(L.action,pe=>V(q,pe),e("settings.agents.page.permissionsEditor.keyAria",{key:q}))]}),oe&&J&&s.jsxs("div",{className:"mt-2 space-y-2 pl-5",children:[L.patterns.map((pe,ve)=>s.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[s.jsx(Be,{value:pe.pattern,onChange:be=>$(q,ve,be.target.value,pe.action),placeholder:e("settings.agents.page.permissionsEditor.patternPlaceholder"),className:"h-8 w-full max-w-[24rem] min-w-0 flex-1 font-mono text-xs"}),s.jsx(cn,{value:pe.action,options:_(),onChange:be=>$(q,ve,pe.pattern,be),"aria-label":e("settings.agents.page.permissionsEditor.patternActionAria",{key:q})}),s.jsx(G,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0 text-muted-foreground hover:bg-destructive/10 hover:text-destructive",onClick:()=>M(q,ve),"aria-label":e("settings.agents.page.permissionsEditor.actions.removeRuleAria"),children:s.jsx(B,{name:"close",className:"h-3.5 w-3.5"})})]},ve)),z&&s.jsxs(G,{variant:"outline",size:"xs",className:"!font-normal",onClick:()=>I(q),children:[s.jsx(B,{name:"add",className:"mr-1 h-3.5 w-3.5"}),e("settings.agents.page.permissionsEditor.actions.addRule")]}),K.length>0&&s.jsxs("div",{className:"space-y-1 pt-1",children:[s.jsxs("div",{className:"flex items-center gap-1.5",children:[s.jsx("span",{className:"typography-micro font-medium text-muted-foreground",children:e("settings.agents.page.permissionsEditor.sessionRulesTitle")}),s.jsx(Yt,{children:e("settings.agents.page.permissionsEditor.sessionRulesInfo")})]}),K.map(pe=>s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:"typography-micro min-w-0 flex-1 truncate font-mono text-muted-foreground/70",children:pe.pattern}),s.jsx("span",{className:"typography-micro text-muted-foreground",children:ee(pe.action)})]},`${pe.pattern}-${pe.action}`))]})]})]},q)})}),s.jsxs("div",{className:"flex flex-wrap items-center gap-2 border-t border-border/40 pt-3",children:[s.jsx(Be,{value:k,onChange:q=>p(q.target.value),onKeyDown:q=>{q.key==="Enter"&&(q.preventDefault(),H())},placeholder:e("settings.agents.page.permissionsEditor.customKeyPlaceholder"),className:"h-8 w-full max-w-[16rem] font-mono text-xs"}),s.jsxs(G,{variant:"outline",size:"xs",className:"!font-normal",onClick:H,disabled:!k.trim(),children:[s.jsx(B,{name:"add",className:"mr-1 h-3.5 w-3.5"}),e("settings.agents.page.permissionsEditor.actions.addKey")]})]})]})},$m=(t,e)=>{const a=la(e);if(!a)return[];const i=t.find(r=>r.id===a.providerId)?.models?.find(r=>r.id===a.modelId);return i?.variants?Object.keys(i.variants):[]},Bm=()=>{const{t}=et(),e=Xe(W=>W.providers),{selectedAgentName:a,getAgentByName:n,createAgent:i,updateAgent:r,agentDraft:l,setAgentDraft:m}=oa(qs(W=>({selectedAgentName:W.selectedAgentName,getAgentByName:W.getAgentByName,createAgent:W.createAgent,updateAgent:W.updateAgent,agentDraft:W.agentDraft,setAgentDraft:W.setAgentDraft}))),c=Ws(),x=oa(W=>Zl(W,c)),u=a?n(a,c):null,v=!!(l&&l.name===a&&!u),[d,j]=o.useState(""),[g,w]=o.useState("user"),[b,k]=o.useState(""),[p,C]=o.useState("subagent"),[E,A]=o.useState(""),[N,h]=o.useState(""),[y,R]=o.useState(void 0),[T,P]=o.useState(void 0),[D,V]=o.useState(""),[$,I]=o.useState(!1),M=o.useRef(null),H=o.useMemo(()=>$m(e,E),[E,e]),U=H.length>0,Z=N||"__default",ee=U,O=o.useMemo(()=>N&&!H.includes(N)?[N,...H]:H,[N,H]);o.useEffect(()=>{if(v&&l){const W=l.name||"",q=l.scope||"user",L=l.description||"",K=l.mode||"subagent",z=l.model||"",J=l.variant||"",oe=l.temperature??void 0,re=l.top_p??void 0,pe=l.prompt||"";j(W),w(q),k(L),C(K),A(z),h(J),R(oe),P(re),V(pe),M.current={draftName:W,draftScope:q,description:L,mode:K,model:z,variant:J,temperature:oe,topP:re,prompt:pe};return}if(u&&a===u.name){const W=u.description||"",q=u.mode||"subagent",L=u.model?.providerID&&u.model?.modelID?`${u.model.providerID}/${u.model.modelID}`:"",K=u.variant||"",z=u.temperature??void 0,J=u.topP??void 0,oe=u.prompt||"";k(W),C(q),A(L),h(K),R(z),P(J),V(oe),M.current={draftName:"",draftScope:"user",description:W,mode:q,model:L,variant:K,temperature:z,topP:J,prompt:oe}}},[l,v,u,a]);const ae=o.useMemo(()=>{const W=M.current;return W?!!(v&&(d!==W.draftName||g!==W.draftScope)||b!==W.description||p!==W.mode||E!==W.model||N!==W.variant||y!==W.temperature||T!==W.topP||D!==W.prompt):!1},[b,d,g,v,p,E,D,y,T,N]),_=async()=>{const W=v?d.trim().replace(/\s+/g,"-"):a?.trim();if(!W){F.error(t("settings.agents.sidebar.toast.agentNameRequired"));return}if(v&&x.some(q=>q.name===W)){F.error(t("settings.agents.sidebar.toast.agentExists"));return}I(!0);try{const q=E.trim(),L=N.trim(),K=D.trim(),z={name:W,...b.trim()?{description:b.trim()}:{},mode:p,model:q===""?null:q,variant:L===""?null:L||void 0,temperature:y??null,top_p:T??null,prompt:K||(v?void 0:null),...v&&g?{scope:g}:{}};let J;v?(J=await i(z,c),J.ok&&m(null)):J=await r(W,z,c),J.ok?J.requiresManualRestart?F.warning(t("settings.agents.page.toast.savedManualRestart")):J.restartDeferred?F.success(t("settings.view.pendingRestart.saved")):F.success(t(v?"settings.agents.page.toast.created":"settings.agents.page.toast.updated")):F.error(t(v?"settings.agents.page.toast.createFailed":"settings.agents.page.toast.updateFailed"))}catch(q){console.error("Error saving agent:",q);const L=q instanceof Error&&q.message?q.message:t("settings.agents.page.toast.saveUnexpectedError");F.error(L)}finally{I(!1)}};return a?s.jsxs(is,{title:v?t("settings.agents.page.title.new"):a,description:t(v?"settings.agents.page.subtitle.new":"settings.agents.page.subtitle.edit"),showSaveStatus:!1,children:[s.jsxs(ze,{title:t("settings.agents.page.section.identityRole"),divider:!1,contentClassName:"space-y-0",children:[v&&s.jsxs(Ft,{settingsItem:"agents.name",label:t("settings.agents.page.field.agentName"),children:[s.jsxs("div",{className:"flex items-center",children:[s.jsx("span",{className:"typography-ui-label text-muted-foreground mr-1",children:"@"}),s.jsx(Be,{value:d,onChange:W=>j(W.target.value),placeholder:t("settings.agents.page.field.agentNamePlaceholder"),className:"h-7 w-40 px-2"})]}),s.jsxs(Tt,{value:g,onValueChange:W=>w(W),children:[s.jsx(Et,{size:Bt,className:"w-fit min-w-[100px]",children:s.jsx(Ut,{placeholder:t("settings.agents.page.field.scopePlaceholder")})}),s.jsxs(Dt,{align:"end",children:[s.jsx(dt,{value:"user",children:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(B,{name:"user-3",className:"h-3.5 w-3.5"}),s.jsx("span",{children:t("settings.common.scope.global")})]})}),s.jsx(dt,{value:"project",children:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(B,{name:"folder",className:"h-3.5 w-3.5"}),s.jsx("span",{children:t("settings.common.scope.project")})]})})]})]})]}),s.jsx(At,{label:t("settings.common.field.description"),controlClassName:"w-full max-w-none",children:s.jsx(Ms,{value:b,onChange:W=>k(W.target.value),placeholder:t("settings.agents.page.field.descriptionPlaceholder"),rows:2,className:"w-full resize-none min-h-[60px] bg-transparent"})}),s.jsx(At,{settingsItem:"agents.mode",label:t("settings.agents.page.field.mode"),info:t("settings.agents.page.field.modeTooltip"),children:s.jsx(cn,{"aria-label":t("settings.agents.page.field.mode"),value:p,onChange:C,options:[{value:"primary",label:t("settings.agents.page.mode.primary")},{value:"subagent",label:t("settings.agents.page.mode.subagent")},{value:"all",label:t("settings.agents.page.mode.all")}]})})]}),s.jsxs(ze,{title:t("settings.agents.page.section.modelParameters"),contentClassName:"space-y-3",children:[s.jsx(Ft,{settingsItem:"agents.model",label:t("settings.agents.page.field.overrideModel"),children:s.jsx(na,{providerId:la(E)?.providerId??"",modelId:la(E)?.modelId??"",onChange:(W,q)=>{A(W&&q?`${W}/${q}`:""),h("")},className:on})}),s.jsx(Ft,{settingsItem:"agents.variant",label:t("settings.agents.page.field.variant"),info:s.jsxs("div",{className:"space-y-1",children:[s.jsx("p",{children:t("settings.agents.page.field.variantTooltip")}),s.jsx("p",{children:t("settings.agents.page.field.variantHint")})]}),children:ee?s.jsxs(Tt,{value:Z,onValueChange:W=>h(W==="__default"?"":W),children:[s.jsx(Et,{size:Bt,className:ln,children:s.jsx(Ut,{placeholder:t("settings.agents.page.field.variantPlaceholder"),children:W=>W==="__default"?t("chat.modelControls.default"):W})}),s.jsxs(Dt,{children:[s.jsx(dt,{value:"__default",children:t("chat.modelControls.default")}),O.map(W=>s.jsx(dt,{value:W,children:W},W))]})]}):s.jsxs(s.Fragment,{children:[s.jsx(Be,{value:N,onChange:W=>h(W.target.value),placeholder:t("settings.agents.page.field.variantPlaceholder"),disabled:!E&&!N,className:"h-8 w-40 rounded-md px-3"}),N&&s.jsx(G,{size:"sm",type:"button",variant:"ghost",onClick:()=>h(""),className:ws,"aria-label":t("settings.common.actions.clear"),title:t("settings.common.actions.clear"),children:s.jsx(B,{name:"close",className:"h-3.5 w-3.5"})})]})}),s.jsxs(Ft,{settingsItem:"agents.temperature",label:t("settings.agents.page.field.temperature"),info:s.jsxs("div",{className:"space-y-1",children:[s.jsx("p",{children:t("settings.agents.page.field.temperatureTooltip")}),s.jsx("p",{children:t("settings.agents.page.field.temperatureRange")})]}),children:[s.jsx(ks,{value:y,fallbackValue:.7,onValueChange:R,onClear:()=>R(void 0),min:0,max:2,step:.1,inputMode:"decimal",placeholder:"—",emptyLabel:"—",className:Ds}),y!==void 0&&s.jsx(G,{size:"sm",type:"button",variant:"ghost",onClick:()=>R(void 0),className:ws,"aria-label":t("settings.agents.page.field.clearTemperatureAria"),title:t("settings.common.actions.clear"),children:s.jsx(B,{name:"close",className:"h-3.5 w-3.5"})})]}),s.jsxs(Ft,{settingsItem:"agents.top-p",label:t("settings.agents.page.field.topP"),info:s.jsxs("div",{className:"space-y-1",children:[s.jsx("p",{children:t("settings.agents.page.field.topPTooltip")}),s.jsx("p",{children:t("settings.agents.page.field.topPRange")})]}),children:[s.jsx(ks,{value:T,fallbackValue:.9,onValueChange:P,onClear:()=>P(void 0),min:0,max:1,step:.1,inputMode:"decimal",placeholder:"—",emptyLabel:"—",className:Ds}),T!==void 0&&s.jsx(G,{size:"sm",type:"button",variant:"ghost",onClick:()=>P(void 0),className:ws,"aria-label":t("settings.agents.page.field.clearTopPAria"),title:t("settings.common.actions.clear"),children:s.jsx(B,{name:"close",className:"h-3.5 w-3.5"})})]})]}),s.jsx(ze,{title:t("settings.agents.page.section.systemPrompt"),settingsItem:"agents.system-prompt",children:s.jsx(Ms,{value:D,onChange:W=>V(W.target.value),placeholder:t("settings.agents.page.field.systemPromptPlaceholder"),rows:8,className:"w-full font-mono typography-meta min-h-[120px] max-h-[60vh] bg-transparent resize-y"})}),!v&&u&&s.jsx(_m,{agent:u}),s.jsx("div",{className:"pb-8",children:s.jsx(G,{onClick:_,disabled:$||!ae,size:"xs",className:"!font-normal",children:t($?"settings.common.actions.saving":"settings.common.actions.saveChanges")})})]}):s.jsx("div",{className:"flex h-full items-center justify-center",children:s.jsxs("div",{className:"text-center text-muted-foreground",children:[s.jsx(B,{name:"robot-2",className:"mx-auto mb-3 h-12 w-12 opacity-50"}),s.jsx("p",{className:"typography-body",children:t("settings.agents.page.empty.title")}),s.jsx("p",{className:"typography-meta mt-1 opacity-75",children:t("settings.agents.page.empty.description")})]})})};function Vm(t,e){return t.kind==="file"?t.content:e??""}const Hm=un({content:as(),exists:ao(),path:as().min(1).optional()}),qm=async(t,e)=>{const a=await t.json().catch(()=>null);return typeof a?.error=="string"&&a.error.trim()?a.error:e},Gm=t=>t.length>0&&!t.endsWith(`
|
|
2
2
|
`)?`${t}
|
|
3
3
|
`:t,Ni={prompt:"",optimizeSystemPrompt:!1,responseStyleEnabled:!1,responseStylePreset:"concise",responseStyleCustomInstructions:""},Wm=(t,e)=>t==="custom"?e:hd(t),Jm=t=>t==="custom"?"custom":Xl(t)?t:"concise",Go={concise:"settings.behavior.page.responseStyle.option.concise",detailed:"settings.behavior.page.responseStyle.option.detailed",mentor:"settings.behavior.page.responseStyle.option.mentor",pushback:"settings.behavior.page.responseStyle.option.pushback",noFiller:"settings.behavior.page.responseStyle.option.noFiller",matchEnergy:"settings.behavior.page.responseStyle.option.matchEnergy",warmPeer:"settings.behavior.page.responseStyle.option.warmPeer"},vr=async(t,e)=>{if(!(await yt(t)).ok)throw new Error(e)},Qm=()=>{const{t}=et(),e=pd(),[a,n]=o.useState(""),[i,r]=o.useState("AGENTS.md"),[l,m]=o.useState(!1),[c,x]=o.useState(Ni.responseStyleEnabled),[u,v]=o.useState(Ni.responseStylePreset),[d,j]=o.useState(Ni.responseStyleCustomInstructions),[g,w]=o.useState(!0),[b,k]=o.useState(!1),[p,C]=o.useState(!1),[E,A]=o.useState(""),[N,h]=o.useState(!1),y=o.useRef(null);o.useEffect(()=>{const $=new AbortController;return(async()=>{try{const[M,H]=await Promise.all([In(),xt("/api/behavior/agents-md",{method:"GET",headers:{Accept:"application/json"},signal:$.signal})]);let U=Ni,Z;M&&(U={...U,optimizeSystemPrompt:M.optimizeSystemPrompt===!0,responseStyleEnabled:M.responseStyleEnabled===!0,responseStylePreset:Jm(M.responseStylePreset),responseStyleCustomInstructions:M.responseStyleCustomInstructions??""},M.globalBehaviorPrompt!==void 0&&(Z=M.globalBehaviorPrompt));let ee={kind:"missing"};if(H.ok){const O=Hm.parse(await H.json());if($.signal.aborted)return;r(O.path??"AGENTS.md"),O.exists&&(ee={kind:"file",content:O.content})}U={...U,prompt:Vm(ee,Z)},n(U.prompt),m(U.optimizeSystemPrompt),h(U.optimizeSystemPrompt),x(U.responseStyleEnabled),v(U.responseStylePreset),j(U.responseStyleCustomInstructions),A(U.prompt),y.current={enabled:U.responseStyleEnabled,preset:U.responseStylePreset,custom:U.responseStyleCustomInstructions}}catch(M){M.name!=="AbortError"&&console.warn("Failed to load behavior settings:",M)}finally{w(!1)}})(),()=>$.abort()},[]),o.useEffect(()=>{if(g)return;const $=y.current;if($&&$.enabled===c&&$.preset===u&&$.custom===d)return;const I={enabled:c,preset:u,custom:d},M=setTimeout(async()=>{try{await vr({responseStyleEnabled:I.enabled,responseStylePreset:I.preset,responseStyleCustomInstructions:I.custom},t("settings.behavior.page.toast.saveFailed")),y.current=I}catch(H){const U=H instanceof Error?H.message:t("settings.behavior.page.toast.saveFailed");F.error(U)}},400);return()=>clearTimeout(M)},[c,u,d,g,t]);const R=Wm(u,d),T=a!==E,P=l!==N,D=async()=>{k(!0);try{const $=Gm(a),I=await xt("/api/behavior/agents-md",{method:"PUT",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({content:$})});if(!I.ok)throw new Error(await qm(I,t("settings.behavior.page.toast.saveFailed")));const M=await I.json().catch(()=>null),H=ec(M,"behavior",{id:"agents-md"});await vr({globalBehaviorPrompt:$},t("settings.behavior.page.toast.saveFailed")),n($),A($),F.success(t(H?"settings.view.pendingRestart.saved":"settings.behavior.page.toast.saved"))}catch($){console.error("Failed to save behavior:",$);const I=$ instanceof Error?$.message:t("settings.behavior.page.toast.saveFailed");F.error(I)}finally{k(!1)}},V=async()=>{C(!0);try{await vr({optimizeSystemPrompt:l},t("settings.behavior.page.toast.saveFailed")),h(l),aa("behavior",{id:"optimize-system-prompt"}),F.success(t("settings.view.pendingRestart.saved"))}catch($){const I=$ instanceof Error?$.message:t("settings.behavior.page.toast.saveFailed");F.error(I)}finally{C(!1)}};return s.jsxs(is,{title:t("settings.behavior.page.title"),description:t("settings.page.behavior.description"),showSaveStatus:!0,children:[!e&&s.jsxs(ze,{title:t("settings.behavior.page.section.systemPromptOptimization"),divider:!1,settingsItem:"behavior.system-prompt-optimization",contentClassName:"space-y-3",children:[s.jsx(mt,{checked:l,onChange:m,disabled:g||p,label:t("settings.behavior.page.systemPromptOptimization.enable"),ariaLabel:t("settings.behavior.page.systemPromptOptimization.enableAria"),info:t("settings.behavior.page.systemPromptOptimization.info")}),s.jsx(G,{type:"button",size:"xs",onClick:()=>{V()},disabled:g||p||!P,className:"!font-normal",children:t(p?"settings.common.actions.saving":"settings.common.actions.saveChanges")})]}),s.jsxs(ze,{title:t("settings.behavior.page.section.systemPrompt"),info:s.jsxs("div",{className:"space-y-1",children:[s.jsx("p",{className:"font-medium text-foreground",children:t("settings.behavior.page.warning.title")}),s.jsx("p",{children:t("settings.behavior.page.warning.description",{path:i})})]}),settingsItem:"behavior.system-prompt",contentClassName:"space-y-3",children:[s.jsx(Ms,{value:a,onChange:$=>n($.target.value),placeholder:t("settings.behavior.page.field.systemPromptPlaceholder"),rows:12,disabled:g,outerClassName:"min-h-[160px] max-h-[70vh]",className:"w-full font-mono typography-meta bg-transparent"}),s.jsx(G,{onClick:D,disabled:b||!T||g,size:"xs",className:"!font-normal",children:t(b?"settings.common.actions.saving":"settings.common.actions.saveChanges")})]}),s.jsxs(ze,{title:t("settings.behavior.page.section.responseStyle"),info:t("settings.behavior.page.responseStyle.tooltip"),settingsItem:"behavior.response-style",contentClassName:"space-y-3",children:[s.jsx(mt,{checked:c,onChange:x,disabled:g,label:t("settings.behavior.page.responseStyle.enable"),ariaLabel:t("settings.behavior.page.responseStyle.enableAria")}),s.jsx(Ft,{label:t("settings.behavior.page.responseStyle.preset"),alignEnd:!1,children:s.jsxs(Tt,{value:u,onValueChange:$=>v($),disabled:g||!c,children:[s.jsx(Et,{size:Bt,className:ln,children:s.jsx(Ut,{children:$=>$==="custom"?t("settings.behavior.page.responseStyle.option.custom"):Xl($)?t(Go[$]):null})}),s.jsxs(Dt,{children:[gd.map($=>s.jsx(dt,{value:$,children:t(Go[$])},$)),s.jsx(dt,{value:"custom",children:t("settings.behavior.page.responseStyle.option.custom")})]})]})}),s.jsx(Ms,{value:R,onChange:$=>j($.target.value),placeholder:t("settings.behavior.page.responseStyle.customPlaceholder"),rows:5,disabled:g||!c||u!=="custom",outerClassName:"min-h-[120px]",className:"w-full font-mono typography-meta bg-transparent"})]})]})},Ym=t=>{const e=ct.c(176),{onItemSelect:a}=t,{t:n}=et(),[i,r]=o.useState(null),[l,m]=o.useState(""),[c,x]=o.useState(null),[u,v]=o.useState(null),[d,j]=o.useState(!1),[g,w]=o.useState(null),{selectedCommandName:b,setSelectedCommand:k,setCommandDraft:p,createCommand:C,deleteCommand:E,loadCommands:A}=La(qs(Zm)),N=Ws();let h;e[0]!==N?(h=Je=>tc(Je,N),e[0]=N,e[1]=h):h=e[1];const y=La(h);let R;e[2]!==N?(R=Je=>Jr(Je,N),e[2]=N,e[3]=R):R=e[3];const T=Xs(R),P=Xs(Xm);let D,V;e[4]!==A||e[5]!==P||e[6]!==N?(D=()=>{A(N),P(N)},V=[A,P,N],e[4]=A,e[5]=P,e[6]=N,e[7]=D,e[8]=V):(D=e[7],V=e[8]),o.useEffect(D,V);let $;e[9]!==T?($=new Set(T.map(ep)),e[9]=T,e[10]=$):$=e[10];const I=$;let M;if(e[11]!==y||e[12]!==I){let Je;e[14]!==I?(Je=St=>!I.has(St.name),e[14]=I,e[15]=Je):Je=e[15],M=y.filter(Je),e[11]=y,e[12]=I,e[13]=M}else M=e[13];const H=M;let U,Z;e[16]!==b||e[17]!==k||e[18]!==I?(U=()=>{b&&I.has(b)&&k(null)},Z=[b,k,I],e[16]=b,e[17]=k,e[18]=I,e[19]=U,e[20]=Z):(U=e[19],Z=e[20]),o.useEffect(U,Z);let ee;e[21]!==y||e[22]!==a||e[23]!==p||e[24]!==k?(ee=()=>{let Je="new-command",St=1;for(;y.some(Oe=>Oe.name===Je);)Je=`new-command-${St}`,St++;p({name:Je,scope:"user"}),k(Je),a?.()},e[21]=y,e[22]=a,e[23]=p,e[24]=k,e[25]=ee):ee=e[25];const O=ee;let ae;e[26]!==n?(ae=async Je=>{if(Ma(Je)){F.error(n("settings.commands.sidebar.toast.builtInCannotDelete"));return}x(Je),v("delete")},e[26]=n,e[27]=ae):ae=e[27];const _=ae;let W;e[28]===Symbol.for("react.memo_cache_sentinel")?(W=async Je=>{Ma(Je)&&(x(Je),v("reset"))},e[28]=W):W=e[28];const q=W;let L;e[29]===Symbol.for("react.memo_cache_sentinel")?(L=()=>{x(null),v(null)},e[29]=L):L=e[29];const K=L;let z;e[30]!==c||e[31]!==u||e[32]!==E||e[33]!==N||e[34]!==n?(z=async()=>{if(!c||!u)return;j(!0),await E(c.name,N)?(u==="delete"?F.success(n("settings.commands.sidebar.toast.commandDeleted",{name:c.name})):F.success(n("settings.commands.sidebar.toast.commandReset",{name:c.name})),K()):u==="delete"?F.error(n("settings.commands.sidebar.toast.deleteFailed")):F.error(n("settings.commands.sidebar.toast.resetFailed")),j(!1)},e[30]=c,e[31]=u,e[32]=E,e[33]=N,e[34]=n,e[35]=z):z=e[35];const J=z;let oe;e[36]!==y||e[37]!==p||e[38]!==k?(oe=Je=>{const St=Je.name;let Oe=1,wt=`${St}-copy`;for(;y.some(X=>X.name===wt);)Oe++,wt=`${St}-copy-${Oe}`;p({name:wt,scope:Je.scope||"user",description:Je.description,template:Je.template,agent:Je.agent,model:Je.model}),k(wt)},e[36]=y,e[37]=p,e[38]=k,e[39]=oe):oe=e[39];const re=oe;let pe;e[40]===Symbol.for("react.memo_cache_sentinel")?(pe=Je=>{m(Je.name),r(Je)},e[40]=pe):pe=e[40];const ve=pe;let be;e[41]!==y||e[42]!==C||e[43]!==E||e[44]!==i||e[45]!==l||e[46]!==k||e[47]!==N||e[48]!==n?(be=async()=>{if(!i)return;const Je=l.trim().replace(/\s+/g,"-");if(!Je){F.error(n("settings.commands.sidebar.toast.commandNameRequired"));return}if(Je===i.name){r(null);return}if(y.some(Oe=>Oe.name===Je)){F.error(n("settings.commands.sidebar.toast.commandExists"));return}await C({name:Je,description:i.description,template:i.template,agent:i.agent,model:i.model},N)?await E(i.name,N)?(F.success(`Command renamed to "${Je}"`),k(Je)):F.error(n("settings.commands.sidebar.toast.removeOldAfterRenameFailed")):F.error(n("settings.commands.sidebar.toast.renameFailed")),r(null)},e[41]=y,e[42]=C,e[43]=E,e[44]=i,e[45]=l,e[46]=k,e[47]=N,e[48]=n,e[49]=be):be=e[49];const te=be;let he,ie,ue,de,Pe,Ae;if(e[50]!==H||e[51]!==O||e[52]!==_||e[53]!==re||e[54]!==a||e[55]!==g||e[56]!==b||e[57]!==k||e[58]!==n){const Je=H.filter(Ma),St=H.filter(tp);e[65]===Symbol.for("react.memo_cache_sentinel")?(Pe=ye("flex h-full flex-col","bg-background"),e[65]=Pe):Pe=e[65];let Oe;e[66]!==n?(Oe=n("settings.commands.sidebar.title"),e[66]=n,e[67]=Oe):Oe=e[67];let wt;e[68]!==Oe?(wt=s.jsx("h2",{className:`${Cn} mb-3`,children:Oe}),e[68]=Oe,e[69]=wt):wt=e[69];let X;e[70]===Symbol.for("react.memo_cache_sentinel")?(X=s.jsx(ci,{className:"mb-3"}),e[70]=X):X=e[70];let fe;e[71]!==H.length||e[72]!==n?(fe=n("settings.commands.sidebar.total",{count:H.length}),e[71]=H.length,e[72]=n,e[73]=fe):fe=e[73];let Fe;e[74]!==fe?(Fe=s.jsx("span",{className:"typography-meta text-muted-foreground",children:fe}),e[74]=fe,e[75]=Fe):Fe=e[75];let Me;e[76]===Symbol.for("react.memo_cache_sentinel")?(Me=s.jsx(B,{name:"add",className:"h-3.5 w-3.5"}),e[76]=Me):Me=e[76];let rt;e[77]!==O?(rt=s.jsx(G,{size:"sm","data-settings-item":"commands.create",variant:"ghost",className:"h-7 w-7 px-0 -my-1 text-muted-foreground",onClick:O,children:Me}),e[77]=O,e[78]=rt):rt=e[78];let ot;e[79]!==Fe||e[80]!==rt?(ot=s.jsxs("div",{className:"flex items-center justify-between gap-2",children:[Fe,rt]}),e[79]=Fe,e[80]=rt,e[81]=ot):ot=e[81],e[82]!==wt||e[83]!==ot?(Ae=s.jsxs("div",{className:"border-b px-3 pt-4 pb-3",children:[wt,X,ot]}),e[82]=wt,e[83]=ot,e[84]=Ae):Ae=e[84],he=Ns,ie="flex-1 min-h-0",ue="space-y-1 px-3 py-2",de=H.length===0?s.jsxs("div",{className:"py-12 px-4 text-center text-muted-foreground",children:[s.jsx(B,{name:"terminal-box",className:"mx-auto mb-3 h-10 w-10 opacity-50"}),s.jsx("p",{className:"typography-ui-label font-medium",children:n("settings.commands.sidebar.empty.title")}),s.jsx("p",{className:"typography-meta mt-1 opacity-75",children:n("settings.commands.sidebar.empty.description")})]}):s.jsxs(s.Fragment,{children:[Je.length>0&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"px-2 pb-1.5 pt-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:n("settings.commands.sidebar.section.builtIn")}),[...Je].sort(sp).map(Ge=>s.jsx(Wo,{command:Ge,isSelected:b===Ge.name,onSelect:()=>{k(Ge.name),a?.()},onReset:()=>q(Ge),onDuplicate:()=>re(Ge),isMenuOpen:g===Ge.name,onMenuOpenChange:Nt=>w(Nt?Ge.name:null)},Ge.name))]}),St.length>0&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"px-2 pb-1.5 pt-3 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:n("settings.commands.sidebar.section.custom")}),[...St].sort(np).map(Ge=>s.jsx(Wo,{command:Ge,isSelected:b===Ge.name,onSelect:()=>{k(Ge.name),a?.()},onRename:()=>ve(Ge),onDelete:()=>_(Ge),onDuplicate:()=>re(Ge),isMenuOpen:g===Ge.name,onMenuOpenChange:Nt=>w(Nt?Ge.name:null)},Ge.name))]})]}),e[50]=H,e[51]=O,e[52]=_,e[53]=re,e[54]=a,e[55]=g,e[56]=b,e[57]=k,e[58]=n,e[59]=he,e[60]=ie,e[61]=ue,e[62]=de,e[63]=Pe,e[64]=Ae}else he=e[59],ie=e[60],ue=e[61],de=e[62],Pe=e[63],Ae=e[64];let we;e[85]!==he||e[86]!==ie||e[87]!==ue||e[88]!==de?(we=s.jsx(he,{outerClassName:ie,className:ue,children:de}),e[85]=he,e[86]=ie,e[87]=ue,e[88]=de,e[89]=we):we=e[89];const Le=c!==null&&u!==null;let _e;e[90]!==d?(_e=Je=>{!Je&&!d&&K()},e[90]=d,e[91]=_e):_e=e[91];let Ve;e[92]!==u||e[93]!==n?(Ve=n(u==="delete"?"settings.commands.sidebar.dialog.deleteTitle":"settings.commands.sidebar.dialog.resetTitle"),e[92]=u,e[93]=n,e[94]=Ve):Ve=e[94];let je;e[95]!==Ve?(je=s.jsx(Ht,{children:Ve}),e[95]=Ve,e[96]=je):je=e[96];let ke;e[97]!==c?.name||e[98]!==u||e[99]!==n?(ke=u==="delete"?n("settings.commands.sidebar.dialog.deleteDescription",{name:c?.name??""}):n("settings.commands.sidebar.dialog.resetDescription",{name:c?.name??""}),e[97]=c?.name,e[98]=u,e[99]=n,e[100]=ke):ke=e[100];let se;e[101]!==ke?(se=s.jsx(qt,{children:ke}),e[101]=ke,e[102]=se):se=e[102];let le;e[103]!==je||e[104]!==se?(le=s.jsxs(Vt,{children:[je,se]}),e[103]=je,e[104]=se,e[105]=le):le=e[105];let Ie;e[106]!==n?(Ie=n("settings.common.actions.cancel"),e[106]=n,e[107]=Ie):Ie=e[107];let Ne;e[108]!==d||e[109]!==Ie?(Ne=s.jsx(G,{size:"sm",variant:"ghost",onClick:K,disabled:d,children:Ie}),e[108]=d,e[109]=Ie,e[110]=Ne):Ne=e[110];let Re;e[111]!==u||e[112]!==n?(Re=n(u==="delete"?"settings.common.actions.delete":"settings.common.actions.reset"),e[111]=u,e[112]=n,e[113]=Re):Re=e[113];let $e;e[114]!==J||e[115]!==d||e[116]!==Re?($e=s.jsx(G,{size:"sm",onClick:J,disabled:d,children:Re}),e[114]=J,e[115]=d,e[116]=Re,e[117]=$e):$e=e[117];let De;e[118]!==Ne||e[119]!==$e?(De=s.jsxs(rs,{children:[Ne,$e]}),e[118]=Ne,e[119]=$e,e[120]=De):De=e[120];let Ce;e[121]!==le||e[122]!==De?(Ce=s.jsxs($t,{className:"max-w-md",children:[le,De]}),e[121]=le,e[122]=De,e[123]=Ce):Ce=e[123];let Ye;e[124]!==Le||e[125]!==_e||e[126]!==Ce?(Ye=s.jsx(_t,{open:Le,onOpenChange:_e,children:Ce}),e[124]=Le,e[125]=_e,e[126]=Ce,e[127]=Ye):Ye=e[127];const xe=i!==null;let Te;e[128]===Symbol.for("react.memo_cache_sentinel")?(Te=Je=>!Je&&r(null),e[128]=Te):Te=e[128];let Ke;e[129]!==n?(Ke=n("settings.commands.sidebar.renameDialog.title"),e[129]=n,e[130]=Ke):Ke=e[130];let tt;e[131]!==Ke?(tt=s.jsx(Ht,{children:Ke}),e[131]=Ke,e[132]=tt):tt=e[132];const Y=i?.name??"";let Se;e[133]!==n||e[134]!==Y?(Se=n("settings.commands.sidebar.renameDialog.description",{name:Y}),e[133]=n,e[134]=Y,e[135]=Se):Se=e[135];let Ee;e[136]!==Se?(Ee=s.jsx(qt,{children:Se}),e[136]=Se,e[137]=Ee):Ee=e[137];let We;e[138]!==tt||e[139]!==Ee?(We=s.jsxs(Vt,{children:[tt,Ee]}),e[138]=tt,e[139]=Ee,e[140]=We):We=e[140];let lt;e[141]===Symbol.for("react.memo_cache_sentinel")?(lt=Je=>m(Je.target.value),e[141]=lt):lt=e[141];let at;e[142]!==n?(at=n("settings.commands.sidebar.renameDialog.placeholder"),e[142]=n,e[143]=at):at=e[143];let pt;e[144]!==te?(pt=Je=>{Je.key==="Enter"&&te()},e[144]=te,e[145]=pt):pt=e[145];let bt;e[146]!==l||e[147]!==at||e[148]!==pt?(bt=s.jsx(Be,{value:l,onChange:lt,placeholder:at,className:"text-foreground placeholder:text-muted-foreground",onKeyDown:pt}),e[146]=l,e[147]=at,e[148]=pt,e[149]=bt):bt=e[149];let Q;e[150]===Symbol.for("react.memo_cache_sentinel")?(Q=()=>r(null),e[150]=Q):Q=e[150];let qe;e[151]!==n?(qe=n("settings.common.actions.cancel"),e[151]=n,e[152]=qe):qe=e[152];let it;e[153]!==qe?(it=s.jsx(G,{size:"sm",variant:"ghost",onClick:Q,children:qe}),e[153]=qe,e[154]=it):it=e[154];let ut;e[155]!==n?(ut=n("settings.common.actions.rename"),e[155]=n,e[156]=ut):ut=e[156];let gt;e[157]!==te||e[158]!==ut?(gt=s.jsx(G,{size:"sm",onClick:te,children:ut}),e[157]=te,e[158]=ut,e[159]=gt):gt=e[159];let Ot;e[160]!==it||e[161]!==gt?(Ot=s.jsxs(rs,{children:[it,gt]}),e[160]=it,e[161]=gt,e[162]=Ot):Ot=e[162];let st;e[163]!==We||e[164]!==bt||e[165]!==Ot?(st=s.jsxs($t,{children:[We,bt,Ot]}),e[163]=We,e[164]=bt,e[165]=Ot,e[166]=st):st=e[166];let ft;e[167]!==xe||e[168]!==st?(ft=s.jsx(_t,{open:xe,onOpenChange:Te,children:st}),e[167]=xe,e[168]=st,e[169]=ft):ft=e[169];let jt;return e[170]!==Pe||e[171]!==Ae||e[172]!==we||e[173]!==Ye||e[174]!==ft?(jt=s.jsxs("div",{className:Pe,children:[Ae,we,Ye,ft]}),e[170]=Pe,e[171]=Ae,e[172]=we,e[173]=Ye,e[174]=ft,e[175]=jt):jt=e[175],jt},Wo=t=>{const e=ct.c(47),{command:a,isSelected:n,onSelect:i,onDelete:r,onReset:l,onRename:m,onDuplicate:c,isMenuOpen:x,onMenuOpenChange:u}=t,{t:v}=et();let d;e[0]===Symbol.for("react.memo_cache_sentinel")?(d=ii(),e[0]=d):d=e[0];const j=d,[g,w]=o.useState(!1);let b;e[1]!==r||e[2]!==c||e[3]!==m||e[4]!==l||e[5]!==v?(b=Z=>s.jsxs(s.Fragment,{children:[m&&s.jsxs(Z,{onClick:ee=>{ee.stopPropagation(),m()},children:[s.jsx(B,{name:"edit",className:"h-4 w-4 mr-px"}),v("settings.common.actions.rename")]}),s.jsxs(Z,{onClick:ee=>{ee.stopPropagation(),c()},children:[s.jsx(B,{name:"file-copy",className:"h-4 w-4 mr-px"}),v("settings.common.actions.duplicate")]}),l&&s.jsxs(Z,{onClick:ee=>{ee.stopPropagation(),l()},children:[s.jsx(B,{name:"restart",className:"h-4 w-4 mr-px"}),v("settings.common.actions.reset")]}),r&&s.jsxs(Z,{onClick:ee=>{ee.stopPropagation(),r()},className:"text-destructive focus:text-destructive",children:[s.jsx(B,{name:"delete-bin",className:"h-4 w-4 mr-px"}),v("settings.common.actions.delete")]})]}),e[1]=r,e[2]=c,e[3]=m,e[4]=l,e[5]=v,e[6]=b):b=e[6];const k=b,p=n?"bg-interactive-selection":"hover:bg-interactive-hover";let C;e[7]!==p?(C=ye("group relative flex items-center rounded-md px-1.5 py-1 transition-all duration-200 select-none",p),e[7]=p,e[8]=C):C=e[8];let E;e[9]===Symbol.for("react.memo_cache_sentinel")?(E=j?void 0:Z=>{Z.preventDefault(),w(!0)},e[9]=E):E=e[9];let A;e[10]!==C?(A=s.jsx("div",{className:C,onContextMenu:E}),e[10]=C,e[11]=A):A=e[11];let N;e[12]!==a.name?(N=s.jsxs("span",{className:"typography-ui-label font-normal truncate text-foreground",children:["/",a.name]}),e[12]=a.name,e[13]=N):N=e[13];let h;e[14]!==a||e[15]!==v?(h=(a.scope||Ma(a))&&s.jsx("span",{className:"typography-micro text-muted-foreground bg-muted px-1 rounded flex-shrink-0 leading-none pb-px border border-border/50",children:Ma(a)?v("settings.agents.sidebar.badge.system"):a.scope}),e[14]=a,e[15]=v,e[16]=h):h=e[16];let y;e[17]!==N||e[18]!==h?(y=s.jsxs("div",{className:"flex items-center gap-2",children:[N,h]}),e[17]=N,e[18]=h,e[19]=y):y=e[19];let R;e[20]!==a.description?(R=a.description&&s.jsx("div",{className:"typography-micro text-muted-foreground/60 truncate leading-tight",children:a.description}),e[20]=a.description,e[21]=R):R=e[21];let T;e[22]!==i||e[23]!==R||e[24]!==y?(T=s.jsxs("button",{onClick:i,className:"flex min-w-0 flex-1 flex-col gap-0 rounded-sm text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",tabIndex:0,children:[y,R]}),e[22]=i,e[23]=R,e[24]=y,e[25]=T):T=e[25];let P;e[26]!==u?(P=Z=>{Z&&w(!1),u(Z)},e[26]=u,e[27]=P):P=e[27];let D;e[28]===Symbol.for("react.memo_cache_sentinel")?(D=s.jsx(vn,{asChild:!0,children:s.jsx(G,{size:"sm",variant:"ghost",className:"h-6 w-6 px-0 flex-shrink-0 -mr-1 opacity-100 transition-opacity md:opacity-0 md:group-hover:opacity-100",children:s.jsx(B,{name:"more-2",className:"h-3.5 w-3.5"})})}),e[28]=D):D=e[28];let V;e[29]!==k?(V=s.jsx(yn,{align:"end",className:"w-fit min-w-20",children:k(wn)}),e[29]=k,e[30]=V):V=e[30];let $;e[31]!==x||e[32]!==P||e[33]!==V?($=s.jsxs(jn,{open:x,onOpenChange:P,children:[D,V]}),e[31]=x,e[32]=P,e[33]=V,e[34]=$):$=e[34];let I;e[35]!==T||e[36]!==$?(I=s.jsxs("div",{className:"flex min-w-0 flex-1 items-center",children:[T,$]}),e[35]=T,e[36]=$,e[37]=I):I=e[37];let M;e[38]!==I||e[39]!==A?(M=s.jsx(ma,{render:A,children:I}),e[38]=I,e[39]=A,e[40]=M):M=e[40];let H;e[41]!==k?(H=s.jsx(da,{className:"w-fit min-w-20",children:k(ua)}),e[41]=k,e[42]=H):H=e[42];let U;return e[43]!==g||e[44]!==M||e[45]!==H?(U=s.jsxs(pa,{open:g,onOpenChange:w,children:[M,H]}),e[43]=g,e[44]=M,e[45]=H,e[46]=U):U=e[46],U};function Zm(t){return{selectedCommandName:t.selectedCommandName,setSelectedCommand:t.setSelectedCommand,setCommandDraft:t.setCommandDraft,createCommand:t.createCommand,deleteCommand:t.deleteCommand,loadCommands:t.loadCommands}}function Xm(t){return t.loadSkills}function ep(t){return t.name}function tp(t){return!Ma(t)}function sp(t,e){return t.name.localeCompare(e.name)}function np(t,e){return t.name.localeCompare(e.name)}const ap=()=>{const{t}=et(),{selectedCommandName:e,getCommandByName:a,createCommand:n,updateCommand:i,commandDraft:r,setCommandDraft:l}=La(qs(D=>({selectedCommandName:D.selectedCommandName,getCommandByName:D.getCommandByName,createCommand:D.createCommand,updateCommand:D.updateCommand,commandDraft:D.commandDraft,setCommandDraft:D.setCommandDraft}))),m=Ws(),c=La(D=>tc(D,m)),x=e?a(e,m):null,u=!!(r&&r.name===e&&!x),[v,d]=o.useState(""),[j,g]=o.useState("user"),[w,b]=o.useState(""),[k,p]=o.useState(""),[C,E]=o.useState(""),[A,N]=o.useState(""),[h,y]=o.useState(!1),R=o.useRef(null);o.useEffect(()=>{if(u&&r){const D=r.name||"",V=r.scope||"user",$=r.description||"",I=r.agent||"",M=r.model||"",H=r.template||"";d(D),g(V),b($),p(I),E(M),N(H),R.current={draftName:D,draftScope:V,description:$,agent:I,model:M,template:H}}else if(x){const D=x.description||"",V=x.agent||"",$=x.model||"",I=x.template||"";b(D),p(V),E($),N(I),R.current={draftName:"",draftScope:"user",description:D,agent:V,model:$,template:I}}},[x,u,e,c,r]);const T=o.useMemo(()=>{const D=R.current;return D?!!(u&&(v!==D.draftName||j!==D.draftScope)||w!==D.description||k!==D.agent||C!==D.model||A!==D.template):!1},[k,w,v,j,u,C,A]),P=async()=>{const D=u?v.trim().replace(/\s+/g,"-"):e?.trim();if(!D){F.error(t("settings.commands.sidebar.toast.commandNameRequired"));return}if(!A.trim()){F.error(t("settings.commands.page.toast.templateRequired"));return}if(u&&c.some(V=>V.name===D)){F.error(t("settings.commands.sidebar.toast.commandExists"));return}y(!0);try{const V=k.trim(),$=C.trim(),I=A.trim(),M={name:D,description:w.trim()||void 0,agent:V===""?null:V,model:$===""?null:$,template:I,scope:u?j:void 0};let H;if(u?(H=await n(M,m),H&&l(null)):H=await i(D,M,m),H){const U=ia.getState().changes.some(Z=>Z.scope==="commands"&&Z.id.startsWith(`commands:${D}:`));F.success(t(U?"settings.view.pendingRestart.saved":u?"settings.commands.page.toast.created":"settings.commands.page.toast.updated"))}else F.error(t(u?"settings.commands.page.toast.createFailed":"settings.commands.page.toast.updateFailed"))}catch(V){console.error("Error saving command:",V),F.error(t("settings.commands.page.toast.saveUnexpectedError"))}finally{y(!1)}};return e?s.jsxs(is,{title:u?t("settings.commands.page.title.new"):`/${e}`,description:t(u?"settings.commands.page.subtitle.new":"settings.commands.page.subtitle.edit"),showSaveStatus:!1,children:[s.jsxs(ze,{title:t("settings.commands.page.section.identity"),divider:!1,contentClassName:"space-y-0",children:[u&&s.jsxs(Ft,{settingsItem:"commands.name",label:t("settings.commands.page.field.commandName"),children:[s.jsxs("div",{className:"flex items-center",children:[s.jsx("span",{className:"typography-ui-label text-muted-foreground mr-1",children:"/"}),s.jsx(Be,{value:v,onChange:D=>d(D.target.value),placeholder:t("settings.commands.page.field.commandNamePlaceholder"),className:"h-7 w-40 px-2"})]}),s.jsxs(Tt,{value:j,onValueChange:D=>g(D),children:[s.jsx(Et,{size:Bt,className:"w-fit min-w-[100px]",children:s.jsx(Ut,{placeholder:t("settings.agents.page.field.scopePlaceholder")})}),s.jsxs(Dt,{align:"end",children:[s.jsx(dt,{value:"user",children:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(B,{name:"user-3",className:"h-3.5 w-3.5"}),s.jsx("span",{children:t("settings.common.scope.global")})]})}),s.jsx(dt,{value:"project",children:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(B,{name:"folder",className:"h-3.5 w-3.5"}),s.jsx("span",{children:t("settings.common.scope.project")})]})})]})]})]}),s.jsxs("div",{className:"py-1.5",children:[s.jsx("span",{className:"typography-ui-label text-foreground",children:t("settings.common.field.description")}),s.jsx("div",{className:"mt-1.5",children:s.jsx(Ms,{value:w,onChange:D=>b(D.target.value),placeholder:t("settings.commands.page.field.descriptionPlaceholder"),rows:2,className:"w-full resize-none min-h-[60px] bg-transparent"})})]})]}),s.jsxs(ze,{title:t("settings.commands.page.section.executionContext"),contentClassName:"space-y-0",children:[s.jsx(Ft,{settingsItem:"commands.agent",label:t("settings.commands.page.field.overrideAgent"),children:s.jsx(Qr,{agentName:k,onChange:D=>p(D),className:on})}),s.jsx(Ft,{settingsItem:"commands.model",label:t("settings.agents.page.field.overrideModel"),children:s.jsx(na,{providerId:la(C)?.providerId??"",modelId:la(C)?.modelId??"",onChange:(D,V)=>{E(D&&V?`${D}/${V}`:"")},className:on})})]}),s.jsxs(ze,{title:t("settings.commands.page.section.template"),settingsItem:"commands.template",children:[s.jsx(Ms,{value:A,onChange:D=>N(D.target.value),placeholder:t("settings.commands.page.field.templatePlaceholder"),rows:12,className:"w-full font-mono typography-meta min-h-[160px] max-h-[60vh] bg-transparent resize-y"}),s.jsxs("p",{className:"mt-2 typography-meta text-muted-foreground",children:[s.jsx("code",{className:"text-foreground",children:"$ARGUMENTS"})," ",t("settings.commands.page.templateHint.userInput")," ·"," ",s.jsx("code",{className:"text-foreground",children:"!`cmd`"})," ",t("settings.commands.page.templateHint.shellOutput")," ·"," ",s.jsx("code",{className:"text-foreground",children:"@file"})," ",t("settings.commands.page.templateHint.fileContents")]}),s.jsx("div",{className:"pt-3",children:s.jsx(G,{onClick:P,disabled:h||!T,size:"xs",className:"!font-normal",children:t(h?"settings.common.actions.saving":"settings.common.actions.saveChanges")})})]})]}):s.jsx("div",{className:"flex h-full items-center justify-center",children:s.jsxs("div",{className:"text-center text-muted-foreground",children:[s.jsx(B,{name:"terminal-box",className:"mx-auto mb-3 h-12 w-12 opacity-50"}),s.jsx("p",{className:"typography-body",children:t("settings.commands.page.empty.title")}),s.jsx("p",{className:"typography-meta mt-1 opacity-75",children:t("settings.commands.page.empty.description")})]})})},Jo=t=>{switch(t){case"connected":return"success";case"failed":return"error";case"needs_auth":case"needs_client_registration":return"warning";default:return"idle"}},Qo=t=>{const e=ct.c(5),{tone:a,enabled:n}=t;if(!n){let l;return e[0]===Symbol.for("react.memo_cache_sentinel")?(l=s.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-muted-foreground/30 flex-shrink-0"}),e[0]=l):l=e[0],l}let i;e[1]!==a?(i=ye("inline-block h-2 w-2 rounded-full flex-shrink-0",{success:"bg-[var(--status-success)]",error:"bg-[var(--status-error)]",warning:"bg-[var(--status-warning)]",idle:"bg-muted-foreground/40"}[a]),e[1]=a,e[2]=i):i=e[2];let r;return e[3]!==i?(r=s.jsx("span",{className:i}),e[3]=i,e[4]=r):r=e[4],r},ip=t=>{const e=ct.c(124),{onItemSelect:a}=t,{t:n}=et(),{selectedMcpName:i,setSelectedMcp:r,setMcpDraft:l,loadMcpConfigs:m,deleteMcp:c}=Ka(qs(rp)),x=Ws();let u;e[0]!==x?(u=Y=>sc(Y,x),e[0]=x,e[1]=u):u=e[1];const v=Ka(u);let d;e[2]!==x?(d=Y=>Y.getStatusForDirectory(x),e[2]=x,e[3]=d):d=e[3];const j=Vs(d),g=Vs(op),w=Vs(lp),[b,k]=o.useState(null),[p,C]=o.useState(!1),[E,A]=o.useState(null),[N,h]=o.useState(null),[y,R]=o.useState(!1);let T;e[4]!==v?(T=v.filter(cp),e[4]=v,e[5]=T):T=e[5];const P=T;let D;e[6]!==v?(D=v.filter(dp),e[6]=v,e[7]=D):D=e[7];const V=D;let $,I;e[8]!==m||e[9]!==x?($=()=>{m({directory:x})},I=[m,x],e[8]=m,e[9]=x,e[10]=$,e[11]=I):($=e[10],I=e[11]),o.useEffect($,I);let M;e[12]!==w||e[13]!==y||e[14]!==g||e[15]!==x?(M=()=>{if(y)return;R(!0);const Y=new Promise(up);Promise.all([g({directory:x,silent:!0}),Y]).then(()=>{const Se=w(x);Se&&F.error(Se)}).finally(()=>{R(!1)})},e[12]=w,e[13]=y,e[14]=g,e[15]=x,e[16]=M):M=e[16];const H=M;let U;e[17]!==v||e[18]!==a||e[19]!==l||e[20]!==r?(U=()=>{let Y="new-mcp-server",Se=1;for(;v.some(We=>We.name===Y);)Y=`new-mcp-server-${Se}`,Se++;l({name:Y,scope:"user",type:"local",command:[],url:"",environment:[],headers:[],oauthEnabled:!0,oauthClientId:"",oauthClientSecret:"",oauthScope:"",oauthRedirectUri:"",timeout:"",enabled:!0}),r(Y),a?.()},e[17]=v,e[18]=a,e[19]=l,e[20]=r,e[21]=U):U=e[21];const Z=U;let ee;e[22]!==c||e[23]!==b||e[24]!==x||e[25]!==n?(ee=async()=>{if(!b)return;C(!0);const Y=await c(b.name,x);Y.ok?Y.reloadFailed?F.warning(Y.message||`MCP server "${b.name}" deleted, but OpenCode reload failed`,{description:Y.warning||n("settings.mcp.sidebar.toast.refreshListIfStale")}):F.success(Y.message||n("settings.mcp.sidebar.toast.serverDeleted",{name:b.name})):F.error(n("settings.mcp.sidebar.toast.deleteFailed")),k(null),C(!1)},e[22]=c,e[23]=b,e[24]=x,e[25]=n,e[26]=ee):ee=e[26];const O=ee;let ae;e[27]!==n?(ae=(Y,Se)=>s.jsxs(Se,{onClick:Ee=>{Ee.stopPropagation(),k(Y)},className:"text-destructive focus:text-destructive",children:[s.jsx(B,{name:"delete-bin",className:"h-4 w-4 mr-px"}),n("settings.common.actions.delete")]}),e[27]=n,e[28]=ae):ae=e[28];const _=ae;let W;e[29]===Symbol.for("react.memo_cache_sentinel")?(W=ye("flex h-full flex-col","bg-background"),e[29]=W):W=e[29];let q;e[30]!==n?(q=n("settings.mcp.sidebar.title"),e[30]=n,e[31]=q):q=e[31];let L;e[32]!==q?(L=s.jsx("h2",{className:Cn,children:q}),e[32]=q,e[33]=L):L=e[33];let K;e[34]!==n?(K=n("settings.mcp.sidebar.actions.refreshStatusAria"),e[34]=n,e[35]=K):K=e[35];let z;e[36]!==n?(z=n("settings.mcp.sidebar.actions.refreshStatusTitle"),e[36]=n,e[37]=z):z=e[37];const J=y&&"animate-spin";let oe;e[38]!==J?(oe=ye("h-4 w-4",J),e[38]=J,e[39]=oe):oe=e[39];let re;e[40]!==oe?(re=s.jsx(B,{name:"refresh",className:oe}),e[40]=oe,e[41]=re):re=e[41];let pe;e[42]!==H||e[43]!==y||e[44]!==K||e[45]!==z||e[46]!==re?(pe=s.jsx("button",{type:"button",className:"inline-flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:text-foreground hover:bg-interactive-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",disabled:y,onClick:H,"aria-label":K,title:z,children:re}),e[42]=H,e[43]=y,e[44]=K,e[45]=z,e[46]=re,e[47]=pe):pe=e[47];let ve;e[48]!==L||e[49]!==pe?(ve=s.jsxs("div",{className:"mb-3 flex items-center justify-between gap-3",children:[L,pe]}),e[48]=L,e[49]=pe,e[50]=ve):ve=e[50];let be;e[51]===Symbol.for("react.memo_cache_sentinel")?(be=s.jsx(ci,{className:"mb-3"}),e[51]=be):be=e[51];let te;e[52]!==v.length||e[53]!==n?(te=n("settings.mcp.sidebar.total",{count:v.length}),e[52]=v.length,e[53]=n,e[54]=te):te=e[54];let he;e[55]!==te?(he=s.jsx("span",{className:"typography-meta text-muted-foreground",children:te}),e[55]=te,e[56]=he):he=e[56];let ie;e[57]!==n?(ie=n("settings.mcp.sidebar.actions.addServerTitle"),e[57]=n,e[58]=ie):ie=e[58];let ue;e[59]===Symbol.for("react.memo_cache_sentinel")?(ue=s.jsx(B,{name:"add",className:"h-3.5 w-3.5"}),e[59]=ue):ue=e[59];let de;e[60]!==Z||e[61]!==ie?(de=s.jsx(G,{size:"sm","data-settings-item":"mcp.create",variant:"ghost",className:"h-7 w-7 px-0 -my-1 text-muted-foreground",onClick:Z,title:ie,children:ue}),e[60]=Z,e[61]=ie,e[62]=de):de=e[62];let Pe;e[63]!==he||e[64]!==de?(Pe=s.jsxs("div",{className:"flex items-center justify-between gap-2",children:[he,de]}),e[63]=he,e[64]=de,e[65]=Pe):Pe=e[65];let Ae;e[66]!==ve||e[67]!==Pe?(Ae=s.jsxs("div",{className:"border-b px-3 pt-4 pb-3",children:[ve,be,Pe]}),e[66]=ve,e[67]=Pe,e[68]=Ae):Ae=e[68];let we;e[69]!==v.length||e[70]!==j||e[71]!==a||e[72]!==E||e[73]!==P||e[74]!==_||e[75]!==N||e[76]!==i||e[77]!==l||e[78]!==r||e[79]!==n||e[80]!==V?(we=s.jsx(Ns,{outerClassName:"flex-1 min-h-0",className:"space-y-1 px-3 py-2 overflow-x-hidden",children:v.length===0?s.jsxs("div",{className:"py-12 px-4 text-center text-muted-foreground",children:[s.jsx(B,{name:"plug",className:"mx-auto mb-3 h-10 w-10 opacity-50"}),s.jsx("p",{className:"typography-ui-label font-medium",children:n("settings.mcp.sidebar.empty.title")}),s.jsx("p",{className:"typography-meta mt-1 opacity-75",children:n("settings.mcp.sidebar.empty.description")})]}):s.jsxs(s.Fragment,{children:[P.length>0&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"px-2 pb-1.5 pt-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:n("settings.mcp.sidebar.group.projectServers")}),P.map(Y=>{const Se=j[Y.name],Ee=Jo(Se?.status),We=i===Y.name,lt=ii();return s.jsxs(pa,{open:N===Y.name,onOpenChange:at=>h(at?Y.name:null),children:[s.jsxs(ma,{render:s.jsx("div",{className:ye("group relative flex items-center rounded-md px-1.5 py-1 transition-all duration-200 select-none",We?"bg-interactive-selection":"hover:bg-interactive-hover"),onContextMenu:lt?void 0:at=>{at.preventDefault(),h(Y.name)}}),children:[s.jsxs("button",{onClick:()=>{r(Y.name),l(null),a?.()},className:"flex min-w-0 flex-1 flex-col gap-0 rounded-sm text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Qo,{tone:Ee,enabled:Y.enabled}),s.jsx("span",{className:"typography-ui-label font-normal truncate text-foreground",children:Y.name}),s.jsx("span",{title:Y.type==="local"?n("settings.mcp.sidebar.serverType.localTitle"):n("settings.mcp.sidebar.serverType.remoteTitle"),children:Y.type==="local"?s.jsx(B,{name:"server",className:"h-3 w-3 text-muted-foreground/60 flex-shrink-0"}):s.jsx(B,{name:"global",className:"h-3 w-3 text-muted-foreground/60 flex-shrink-0"})})]}),s.jsx("div",{className:"typography-micro text-muted-foreground/60 truncate leading-tight pl-4",children:Y.type==="local"?Y.command?.join(" ")??"":Y.url??""})]}),s.jsxs(jn,{open:E===Y.name,onOpenChange:at=>{at&&h(null),A(at?Y.name:null)},children:[s.jsx(vn,{asChild:!0,children:s.jsx(G,{size:"xs",variant:"ghost",className:"flex-shrink-0 -mr-1 opacity-100 transition-opacity md:opacity-0 md:group-hover:opacity-100",children:s.jsx(B,{name:"more-2",className:"h-3.5 w-3.5"})})}),s.jsx(yn,{align:"end",className:"w-fit min-w-20",children:_(Y,wn)})]})]}),s.jsx(da,{className:"w-fit min-w-20",children:_(Y,ua)})]},Y.name)})]}),V.length>0&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"px-2 pb-1.5 pt-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:n("settings.mcp.sidebar.group.userServers")}),V.map(Y=>{const Se=j[Y.name],Ee=Jo(Se?.status),We=i===Y.name,lt=ii();return s.jsxs(pa,{open:N===Y.name,onOpenChange:at=>h(at?Y.name:null),children:[s.jsxs(ma,{render:s.jsx("div",{className:ye("group relative flex items-center rounded-md px-1.5 py-1 transition-all duration-200 select-none",We?"bg-interactive-selection":"hover:bg-interactive-hover"),onContextMenu:lt?void 0:at=>{at.preventDefault(),h(Y.name)}}),children:[s.jsxs("button",{onClick:()=>{r(Y.name),l(null),a?.()},className:"flex min-w-0 flex-1 flex-col gap-0 rounded-sm text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Qo,{tone:Ee,enabled:Y.enabled}),s.jsx("span",{className:"typography-ui-label font-normal truncate text-foreground",children:Y.name}),s.jsx("span",{title:Y.type==="local"?n("settings.mcp.sidebar.serverType.localTitle"):n("settings.mcp.sidebar.serverType.remoteTitle"),children:Y.type==="local"?s.jsx(B,{name:"server",className:"h-3 w-3 text-muted-foreground/60 flex-shrink-0"}):s.jsx(B,{name:"global",className:"h-3 w-3 text-muted-foreground/60 flex-shrink-0"})})]}),s.jsx("div",{className:"typography-micro text-muted-foreground/60 truncate leading-tight pl-4",children:Y.type==="local"?Y.command?.join(" ")??"":Y.url??""})]}),s.jsxs(jn,{open:E===Y.name,onOpenChange:at=>{at&&h(null),A(at?Y.name:null)},children:[s.jsx(vn,{asChild:!0,children:s.jsx(G,{size:"xs",variant:"ghost",className:"flex-shrink-0 -mr-1 opacity-100 transition-opacity md:opacity-0 md:group-hover:opacity-100",children:s.jsx(B,{name:"more-2",className:"h-3.5 w-3.5"})})}),s.jsx(yn,{align:"end",className:"w-fit min-w-20",children:_(Y,wn)})]})]}),s.jsx(da,{className:"w-fit min-w-20",children:_(Y,ua)})]},Y.name)})]})]})}),e[69]=v.length,e[70]=j,e[71]=a,e[72]=E,e[73]=P,e[74]=_,e[75]=N,e[76]=i,e[77]=l,e[78]=r,e[79]=n,e[80]=V,e[81]=we):we=e[81];const Le=b!==null;let _e;e[82]!==p?(_e=Y=>{!Y&&!p&&k(null)},e[82]=p,e[83]=_e):_e=e[83];let Ve;e[84]!==n?(Ve=n("settings.mcp.sidebar.deleteDialog.title"),e[84]=n,e[85]=Ve):Ve=e[85];let je;e[86]!==Ve?(je=s.jsx(Ht,{children:Ve}),e[86]=Ve,e[87]=je):je=e[87];const ke=b?.name||"";let se;e[88]!==n||e[89]!==ke?(se=n("settings.mcp.sidebar.deleteDialog.descriptionPrefix",{name:ke}),e[88]=n,e[89]=ke,e[90]=se):se=e[90];let le;e[91]===Symbol.for("react.memo_cache_sentinel")?(le=s.jsx("code",{className:"text-foreground",children:"opencode.json"}),e[91]=le):le=e[91];let Ie;e[92]!==se?(Ie=s.jsxs(qt,{children:[se," ",le,"."]}),e[92]=se,e[93]=Ie):Ie=e[93];let Ne;e[94]!==je||e[95]!==Ie?(Ne=s.jsxs(Vt,{children:[je,Ie]}),e[94]=je,e[95]=Ie,e[96]=Ne):Ne=e[96];let Re;e[97]===Symbol.for("react.memo_cache_sentinel")?(Re=()=>k(null),e[97]=Re):Re=e[97];let $e;e[98]!==n?($e=n("settings.common.actions.cancel"),e[98]=n,e[99]=$e):$e=e[99];let De;e[100]!==p||e[101]!==$e?(De=s.jsx(G,{size:"sm",variant:"ghost",onClick:Re,disabled:p,children:$e}),e[100]=p,e[101]=$e,e[102]=De):De=e[102];let Ce;e[103]!==p||e[104]!==n?(Ce=n(p?"settings.mcp.sidebar.actions.deleting":"settings.common.actions.delete"),e[103]=p,e[104]=n,e[105]=Ce):Ce=e[105];let Ye;e[106]!==O||e[107]!==p||e[108]!==Ce?(Ye=s.jsx(G,{size:"sm",onClick:O,disabled:p,children:Ce}),e[106]=O,e[107]=p,e[108]=Ce,e[109]=Ye):Ye=e[109];let xe;e[110]!==De||e[111]!==Ye?(xe=s.jsxs(rs,{children:[De,Ye]}),e[110]=De,e[111]=Ye,e[112]=xe):xe=e[112];let Te;e[113]!==Ne||e[114]!==xe?(Te=s.jsxs($t,{className:"max-w-md",children:[Ne,xe]}),e[113]=Ne,e[114]=xe,e[115]=Te):Te=e[115];let Ke;e[116]!==Le||e[117]!==_e||e[118]!==Te?(Ke=s.jsx(_t,{open:Le,onOpenChange:_e,children:Te}),e[116]=Le,e[117]=_e,e[118]=Te,e[119]=Ke):Ke=e[119];let tt;return e[120]!==Ae||e[121]!==we||e[122]!==Ke?(tt=s.jsxs("div",{className:W,children:[Ae,we,Ke]}),e[120]=Ae,e[121]=we,e[122]=Ke,e[123]=tt):tt=e[123],tt};function rp(t){return{selectedMcpName:t.selectedMcpName,setSelectedMcp:t.setSelectedMcp,setMcpDraft:t.setMcpDraft,loadMcpConfigs:t.loadMcpConfigs,deleteMcp:t.deleteMcp}}function op(t){return t.refresh}function lp(t){return t.getErrorForDirectory}function cp(t){return t.scope==="project"}function dp(t){return t.scope!=="project"}function up(t){return setTimeout(t,500)}function xn(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Ga(t){return Array.isArray(t)&&t.every(e=>typeof e=="string")}function fn(t,e){return e!==void 0?{ok:!1,error:t,parsed:e}:{ok:!1,error:t}}function Si(t,e,a){const n=mp(a),i=typeof a.url=="string"?a.url.trim():"",r=Yo(a,"env","environment"),l=Yo(a,"headers"),m=pp(a),c=typeof a.oauth=="object"&&a.oauth!==null?String(a.oauth.clientId??"").trim():"",x=typeof a.oauth=="object"&&a.oauth!==null?String(a.oauth.clientSecret??"").trim():"",u=typeof a.oauth=="object"&&a.oauth!==null?String(a.oauth.scope??"").trim():"",v=typeof a.oauth=="object"&&a.oauth!==null?String(a.oauth.redirectUri??"").trim():"",d=gp(a),j=hp(a);return{ok:!0,name:t,type:e,command:n,url:i,environment:r,headers:l,oauthEnabled:m,oauthClientId:c,oauthClientSecret:x,oauthScope:u,oauthRedirectUri:v,timeout:d,enabled:j}}function mp(t){const e=t.command,a=t.args;if(Ga(e)&&Ga(a))return[...e,...a];if(Ga(e))return e;if(typeof e=="string"&&e.trim()){const n=e.trim().split(/\s+/);return Ga(a)?[...n,...a]:n}return Ga(a)?a:[]}function Yo(t,...e){for(const a of e){const n=t[a];if(!xn(n))continue;const i=Object.entries(n).filter(([r,l])=>r&&typeof l=="string");if(i.length>0)return i.map(([r,l])=>({key:r,value:String(l)}))}return[]}function pp(t){if(t.oauth===!1||t.oauth===null||t.oauth===void 0||!xn(t.oauth))return!1;const e=t.oauth;return!!(typeof e.clientId=="string"&&e.clientId.trim()||typeof e.clientSecret=="string"&&e.clientSecret.trim()||typeof e.scope=="string"&&e.scope.trim()||typeof e.redirectUri=="string"&&e.redirectUri.trim())}function gp(t){const e=t.timeout;if(typeof e=="number"&&Number.isFinite(e)&&e>0)return String(Math.floor(e));if(typeof e=="string"&&e.trim()){const a=Number(e);if(Number.isFinite(a)&&a>0)return String(Math.floor(a))}return""}function hp(t){return"disabled"in t&&t.disabled===!0?!1:"enabled"in t?!!t.enabled:!0}function fp(t){const e=t.mcpServers;if(xn(e)){const n=Object.keys(e);if(n.length===1){const i=n[0],r=e[i];if(xn(r))return{name:i,entry:r}}if(n.length>1)return null}const a=Object.keys(t).filter(n=>{const i=t[n];return n!=="mcpServers"&&xn(i)});if(a.length===1){const n=a[0],i=t[n];if(Ec(i))return{name:n,entry:i}}return null}function Ec(t){return t.type==="local"||t.type==="remote"||Array.isArray(t.command)||typeof t.url=="string"||Array.isArray(t.args)}function xp(t,e){let a;try{const m=t.trim();if(!m)return fn("No JSON content provided");a=JSON.parse(m)}catch(m){return fn(m instanceof Error?`Invalid JSON: ${m.message}`:"Invalid JSON")}if(!xn(a))return fn("Expected a JSON object, not an array or primitive");const n=a,i=n.mcpServers;if(xn(i)){const m=Object.keys(i);if(m.length===0)return fn("mcpServers object is empty",a);if(m.length>1)return fn("Paste one server at a time. Found "+m.length+" servers in mcpServers",a);const c=m[0],x=i[c];return xn(x)?Si(c,Ci(x),x):fn("Server entry is not a valid object",a)}const r=n.mcp;if(xn(r)){const m=Object.keys(r);if(m.length===0)return fn("mcp object is empty",a);if(m.length>1)return fn("Paste one server at a time. Found "+m.length+" servers in mcp",a);const c=m[0],x=r[c];return xn(x)?Si(c,Ci(x),x):fn("Server entry in mcp is not a valid object",a)}const l=fp(n);if(l)return Si(l.name,Ci(l.entry),l.entry);if(Ec(n)){const m=Ci(n),c=typeof n.name=="string"&&n.name.trim()?n.name.trim():e?.fallbackName;return Si(c,m,n)}return fn("No recognizable MCP server configuration found in JSON",a)}function Ci(t){return t.type==="remote"?"remote":t.type==="local"?"local":typeof t.url=="string"&&t.url.trim()?"remote":(Array.isArray(t.command)||typeof t.command=="string"||Array.isArray(t.args),"local")}function bp(t,e,a){const n=a?.isNewServer??!1,i=t.name,r=n&&i?i:e.name??"";return{...e,name:r,type:t.type,command:t.type==="local"?t.command:[],url:t.type==="remote"?t.url:"",environment:t.environment,headers:t.type==="remote"?t.headers:[],oauthEnabled:t.type==="remote"?t.oauthEnabled:!1,oauthClientId:t.type==="remote"?t.oauthClientId:"",oauthClientSecret:t.type==="remote"?t.oauthClientSecret:"",oauthScope:t.type==="remote"?t.oauthScope:"",oauthRedirectUri:t.type==="remote"?t.oauthRedirectUri:"",timeout:t.type==="remote"?t.timeout:"",enabled:t.enabled}}function Dc(t){const e=[];let a="",n=!1,i=!1;for(let r=0;r<t.length;r++){const l=t[r];if(l==="'"&&!i){n=!n;continue}if(l==='"'&&!n){i=!i;continue}if((l===" "||l===" ")&&!n&&!i){a&&(e.push(a),a="");continue}a+=l}return a&&e.push(a),e}function vp(t){const e=t.trim();if(!e)return{code:null,context:null,stateKey:null};try{const a=new URL(e),n=a.searchParams.get("code");if(typeof n=="string"&&n.trim())return{code:n.trim(),context:bd(a.searchParams),stateKey:nc(a.searchParams)}}catch{}return{code:e,context:null,stateKey:null}}const yp=t=>{const e=ct.c(27),{value:a,onChange:n,preview:i,onDetectUrl:r}=t;let l;e[0]!==a?(l=()=>a.join(`
|
|
4
4
|
`),e[0]=a,e[1]=l):l=e[1];const[m,c]=o.useState(l),x=o.useRef(a);let u,v;e[2]!==a?(u=()=>{JSON.stringify(x.current)!==JSON.stringify(a)&&(x.current=a,c(a.join(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{f as y,R as b,j as o}from"./vendor-react-BUCujlKS.js";import{f as j,h as u}from"./useAppFontEffects-
|
|
1
|
+
import{f as y,R as b,j as o}from"./vendor-react-BUCujlKS.js";import{f as j,h as u}from"./useAppFontEffects-ne84JBVL.js";import{S as w}from"./SettingsView-CSinuH-1.js";import{m as k,l as v,n as D,j as S,D as R}from"./vendor-base-ui-CsXYnR5c.js";import"./vendor-scheduler-7OC5HNn7.js";import"./index-Dqc6USl3.js";import"./vendor-zod-CgAdXWZO.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-zustand-BAGL70zf.js";import"./vendor-opencode-sdk-BJ73u-bH.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-dnd-kit-core-BZknOX2w.js";import"./vendor-dnd-kit-utilities-B_MdXhJC.js";import"./vendor-dnd-kit-accessibility-BHxJPORy.js";import"./vendor-dnd-kit-sortable-CsEagZ81.js";import"./vendor-framer-motion-Bq3iTZ6r.js";import"./vendor-motion-dom-DcCgeG69.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-tanstack-react-virtual-ClYN8CzB.js";import"./vendor-tanstack-virtual-core-BewVQryB.js";import"./contextPanelEmbeddedChat-CirXEPJq.js";import"./vendor-sonner-DFyL3AvE.js";import"./vendor-cmdk-DgLInKvT.js";import"./vendor-radix-ui-react-dialog-B94Bt2qq.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-DcAh5WdT.js";import"./vendor-radix-ui-react-context-Czxm7Z62.js";import"./vendor-radix-ui-react-id-f5BLKEVw.js";import"./vendor-radix-ui-react-use-layout-effect-D_3IhJdJ.js";import"./vendor-radix-ui-react-use-controllable-state-BFT5YmkA.js";import"./vendor-radix-ui-react-dismissable-layer-D7kXcwgJ.js";import"./vendor-radix-ui-react-primitive-DhVoX9SD.js";import"./vendor-radix-ui-react-slot-BQgQOasS.js";import"./vendor-radix-ui-react-use-callback-ref-BZPnuXAC.js";import"./vendor-radix-ui-react-use-escape-keydown-oph88g-F.js";import"./vendor-radix-ui-react-focus-scope-CiaxW4dD.js";import"./vendor-radix-ui-react-portal-BMJYHWck.js";import"./vendor-radix-ui-react-presence-CNxf-uq4.js";import"./vendor-radix-ui-react-focus-guards-B6qJXYua.js";import"./vendor-react-remove-scroll-DO7dCTnK.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-BcFYyj3E.js";import"./vendor-react-style-singleton-q6EMHnwf.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-zDC0RhA3.js";import"./vendor-use-callback-ref-D3RC8gqK.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-codemirror-language-BgPj_McA.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-codemirror-state-C9awkmn-.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-view-CiLROUVV.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-codemirror-lang-javascript-Cc2ZYbgX.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-DzPz9Wgq.js";import"./vendor-codemirror-lang-json-CMBS2tG9.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-O0cZX78y.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-CfgK872x.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-BPGOH9ye.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-Bx2EHc1O.js";import"./vendor-codemirror-lang-python-HahnQaAS.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-codemirror-commands-B7H_j0iU.js";import"./vendor-legendapp-list-BuBPBC3R.js";import"./vendor-use-sync-external-store-D6wYuSt-.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./runtimeEndpointReset-DdrazOVH.js";import"./GuestAttachDialog-B808E0-d.js";import"./PluginPane-DEcgDQ9h.js";import"./vendor-floating-ui-utils-D6FqdtJt.js";import"./vendor-floating-ui-react-dom-DxYCWdHj.js";import"./vendor-floating-ui-dom-BTvzWks8.js";import"./vendor-floating-ui-core-PuGzNPnN.js";import"./vendor-yaml-3778uTud.js";import"./shikiHighlight-BPu3JiQs.js";import"./vendor-codemirror-search-BmS-GmcX.js";import"./vendor-replit-codemirror-vim-B2DJlAhT.js";import"./vendor-replit-codemirror-vim-core-FHzKdNUS.js";import"./appThemeRegistry-DLicw4dH.js";import"./textMateThemeFromAppTheme-DWqRPo9A.js";import"./themeResolver-BmJyTmjJ.js";import"./vendor-pierre-theming-C6Z4M5_u.js";import"./vendor-shikijs-core-CGM_jqPK.js";import"./vendor-shikijs-types-CPSbSeK6.js";import"./vendor-shikijs-vscode-textmate-BgLrS_2D.js";import"./vendor-hast-util-to-html-BKBhbTDb.js";import"./vendor-html-void-elements-CkdplsNl.js";import"./vendor-property-information-rJCbAzvX.js";import"./vendor-zwitch-C2o2j-tx.js";import"./vendor-stringify-entities-CsH1VEn9.js";import"./vendor-character-entities-legacy-BpoLgcEt.js";import"./vendor-character-entities-html4-D7taRCQ7.js";import"./vendor-ccount-c2V3InAJ.js";import"./vendor-comma-separated-tokens-D8TqSuIK.js";import"./vendor-space-separated-tokens-DD3iYX1K.js";import"./vendor-hast-util-whitespace-D4Wp6AEg.js";import"./vendor-qrcode-DTJ12-WC.js";import"./vendor-dijkstrajs-COg3n3zL.js";import"./vendor-strip-json-comments-5dJlOkP1.js";const zo=h=>{const t=y.c(19),{open:c,onOpenChange:i}=h,{t:f}=j(),r=b.useId(),x=_;let p;t[0]!==i?(p=g=>{!g&&x()||i(g)},t[0]=i,t[1]=p):p=t[1];let a;t[2]===Symbol.for("react.memo_cache_sentinel")?(a=o.jsx(k,{className:u("oc-glass-backdrop fixed inset-0 z-50 bg-black/25 dark:bg-black/40","transition-opacity duration-150 ease-out","data-[starting-style]:opacity-0 data-[ending-style]:opacity-0")}),t[2]=a):a=t[2];let l;t[3]===Symbol.for("react.memo_cache_sentinel")?(l=u("relative pointer-events-auto","w-[90vw] max-w-[1200px] h-[85vh] max-h-[900px]","rounded-xl border shadow-none overflow-hidden origin-center","bg-background","transition-all duration-150 ease-out","data-[starting-style]:opacity-0 data-[starting-style]:scale-[0.98]","data-[ending-style]:opacity-0 data-[ending-style]:scale-[0.98]","data-[nested-dialog-open]:brightness-[0.55] dark:data-[nested-dialog-open]:brightness-[0.4]"),t[3]=l):l=t[3];let e;t[4]!==f?(e=f("settings.window.description"),t[4]=f,t[5]=e):e=t[5];let m;t[6]!==r||t[7]!==e?(m=o.jsx(v,{id:r,className:"sr-only",children:e}),t[6]=r,t[7]=e,t[8]=m):m=t[8];let n;t[9]!==i?(n=o.jsx(w,{onClose:()=>i(!1),isWindowed:!0}),t[9]=i,t[10]=n):n=t[10];let s;t[11]!==r||t[12]!==m||t[13]!==n?(s=o.jsxs(D,{children:[a,o.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center pointer-events-none",children:o.jsxs(S,{"aria-describedby":r,className:l,children:[m,n]})})]}),t[11]=r,t[12]=m,t[13]=n,t[14]=s):s=t[14];let d;return t[15]!==c||t[16]!==p||t[17]!==s?(d=o.jsx(R,{open:c,onOpenChange:p,children:s}),t[15]=c,t[16]=p,t[17]=s,t[18]=d):d=t[18],d};function _(){return typeof document>"u"?!1:!!document.querySelector('[data-slot="dropdown-menu-content"][data-open], [data-slot="select-content"][data-open]')}export{zo as SettingsWindow};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{R as k,r as R,f as G,j as D}from"./vendor-react-BUCujlKS.js";import{jB as P,f as T,K as L,jD as U,jE as B,jF as J,jG as K}from"./useAppFontEffects-
|
|
1
|
+
import{R as k,r as R,f as G,j as D}from"./vendor-react-BUCujlKS.js";import{jB as P,f as T,K as L,jD as U,jE as B,jF as J,jG as K}from"./useAppFontEffects-ne84JBVL.js";import{h as O,dJ as W,dK as A,a as M}from"./index-Dqc6USl3.js";import{o as I,s as $}from"./vendor-zod-CgAdXWZO.js";const ee=(t,e)=>!!t&&e!==null&&t!==e,te=(t,e,s,a)=>s?t===null||a&&e===null?!0:e!==null&&t===e:!1,se=(t,e)=>t==="branch"&&!e?"working":t,ne=(t,e,s,a,n,l)=>{const r=k.useRef({directory:"",attempts:0}),[i,f]=k.useState(()=>({directory:"",exhausted:!1})),d=k.useRef(n);d.current=n;const c=!!t&&i.directory===t&&i.exhausted;return k.useEffect(()=>{if(!t||!e||a||s)return;const o=r.current.directory===t?r.current.attempts:0;if(o>=l){i.directory===t&&i.exhausted||f({directory:t,exhausted:!0});return}r.current={directory:t,attempts:o+1},d.current()},[t,i,a,e,s,l]),c},re=(t,e,s,a,n="")=>{const[l,r]=k.useState(()=>new Map),i=k.useRef(l);i.current=l;const f=k.useRef(new Map),d=k.useRef(null),c=k.useRef(s);c.current=s;const o=k.useCallback((h,p)=>{const u=new Map(i.current);if(p===null){if(!u.delete(h))return}else u.set(h,p);i.current=u,r(u)},[]);return k.useEffect(()=>{d.current=t,f.current.clear(),i.current=new Map,r(i.current)},[t]),k.useEffect(()=>{const h=c.current;if(!t||!h||!e)return;let p=!1;const u=new Set,x=f.current;for(const m of e.split("\0"))i.current.has(m)&&x.get(m)===n||(u.add(m),i.current.has(m)||o(m,a),h(m).then(w=>{p||(u.delete(m),x.set(m,n),o(m,w))}).catch(()=>{p||(u.delete(m),x.delete(m),o(m,null))}));return()=>{p=!0;for(const m of u)x.has(m)||o(m,null)}},[e,a,t,n,o]),d.current===t?l:new Map};function z(t){if(!t.trim())return[];if(!t.startsWith("diff --git "))throw new Error("Invalid pull request diff");return t.split(/(?=^diff --git )/m).filter(Boolean).map(e=>{const s=P(e);if(!s)throw new Error("Invalid pull request file diff");return{path:s.name,previousPath:s.prevName,status:/^new file mode /m.test(e)?"A":/^deleted file mode /m.test(e)?"D":/^rename from /m.test(e)?"R":/^copy from /m.test(e)?"C":"M",insertions:s.hunks.reduce((a,n)=>a+n.additionLines,0),deletions:s.hunks.reduce((a,n)=>a+n.deletionLines,0),patch:e}})}async function H(t,e){const s=await O("/api/walkthrough/pr-diff",{query:{directory:t,source:JSON.stringify(e)},signal:AbortSignal.timeout(3e4)});if(!s.ok){const a=I({error:$()}).safeParse(await s.json().catch(()=>null));throw new Error(a.success?a.data.error:`Failed to load pull request diff (${s.status})`)}if(!s.headers.get("content-type")?.includes("text/plain"))throw new Error("Pull request comparison is unavailable on this server");return z(await s.text())}class Q{entries=new Map;load(e,s,a,n=!1){const l=JSON.stringify([e,s]),r=this.entries.get(l);if(r&&(!n||r.files===null))return r.pending;const i={scope:e,pending:a(),files:null,bytes:0};return i.pending=i.pending.then(f=>{if(this.entries.get(l)!==i)return f;i.files=f,i.bytes=f.reduce((c,o)=>c+2*(o.patch.length+o.path.length),0);let d=[...this.entries.values()].reduce((c,o)=>c+o.bytes,0);for(const[c,o]of this.entries){if(this.entries.size<=8&&d<=32*1024*1024)break;o===i||o.files===null||(d-=o.bytes,this.entries.delete(c))}return f}).catch(f=>{throw this.entries.get(l)===i&&this.entries.delete(l),f}),this.entries.delete(l),this.entries.set(l,i),i.pending}invalidate(e){for(const[s,a]of this.entries)a.scope===e&&this.entries.delete(s)}}function ie(t,e,s=!0,a=""){const{t:n}=T(),l=L(g=>g.runtimeKey),r=t&&e?JSON.stringify([l,t,e]):null,i=W(t??"",l),f=R.useRef({key:r,source:e,enabled:s,pushScope:i});f.current={key:r,source:e,enabled:s,pushScope:i};const[d,c]=R.useState(null),o=R.useRef(0),[h]=R.useState(()=>new Q),[p,u]=R.useState(0);R.useEffect(()=>A(g=>{h.invalidate(g),!(g!==f.current.pushScope||f.current.source?.kind!=="pr")&&(o.current+=1,u(E=>E+1))}),[h]);const x=R.useCallback(async g=>{const{key:E,source:y,enabled:C}=f.current;if(!s||!C||!r||E!==r||!t||!y)return;const V=++o.current,S=M();c(v=>v?.key===r&&v.status==="ready"?{...v,refreshing:!0}:{key:r,status:"loading"});try{const v=y.kind==="pr"?await h.load(i,y,()=>H(t,y),g):y.kind==="branch"?(await U(t,{base:y.baseRef,head:y.headRef,includeWorkingTree:!0})).map(b=>({...b,insertions:0,deletions:0})):(await B(t,y.hash)).files.map(b=>({path:b.path,status:b.changeType,previousPath:b.previousPath,insertions:b.insertions,deletions:b.deletions}));if(o.current!==V||M()!==S)return;c(b=>b?.key===r&&b.status==="ready"&&b.files===v?{...b,refreshing:!1}:{key:r,status:"ready",files:v,revision:V,refreshing:!1})}catch(v){if(o.current!==V||M()!==S)return;c({key:r,status:"error",message:v instanceof Error?v.message:n("diffView.state.failedToLoadDiff")})}},[t,s,r,h,i,n]),m=R.useCallback(()=>x(!0),[x]);R.useEffect(()=>(x(!1),()=>{o.current+=1}),[x,a,p]);const w=d?.key===r?d:null,F=w?.status==="ready"?w.files:null,N=R.useMemo(()=>new Map((F??[]).map(g=>[g.path,g])),[F]),q=R.useCallback(async(g,E=3)=>{const{key:y,source:C,enabled:V}=f.current,S=N.get(g);if(!t||y!==r||!C||!S||!s||!V)throw new Error(n("diffView.state.failedToLoadDiff"));if(C.kind==="pr"){if(S.patch===void 0)throw new Error(n("diffView.state.failedToLoadDiff"));return{diff:S.patch}}return C.kind==="branch"?J(t,{base:C.baseRef,head:C.headRef,path:g,contextLines:E,includeWorkingTree:!0}):K(t,{hash:C.hash,path:g,previousPath:S.previousPath,contextLines:E})},[t,s,N,r,n]);return{key:r,revision:w?.status==="ready"?w.revision:0,files:F,loading:!!(s&&r&&(!w||w.status==="loading"||w.status==="ready"&&w.refreshing)),error:w?.status==="error"?w.message:null,refresh:m,fetchDiff:q}}const j=t=>t.slice(0,7),ae=t=>{const e=G.c(32),{state:s,staged:a}=t,{t:n}=T(),l=a?s.headCommit:s.indexCommit,r=a?s.indexCommit:s.worktreeCommit;let i=null;if(s.hasConflict){let u;e[0]!==n?(u=n("diffView.submodule.conflict"),e[0]=n,e[1]=u):u=e[1],i=u}else if(l&&r){let u;e[2]!==l||e[3]!==n||e[4]!==r?(u=l===r?n("diffView.submodule.commitUnchanged",{commit:j(r)}):n("diffView.submodule.commitChanged",{from:j(l),to:j(r)}),e[2]=l,e[3]=n,e[4]=r,e[5]=u):u=e[5],i=u}else if(r){let u;e[6]!==n||e[7]!==r?(u=n("diffView.submodule.added",{commit:j(r)}),e[6]=n,e[7]=r,e[8]=u):u=e[8],i=u}else if(l){let u;e[9]!==l||e[10]!==a||e[11]!==n?(u=a?n("diffView.submodule.removed",{commit:j(l)}):n("diffView.submodule.notCheckedOut",{commit:j(l)}),e[9]=l,e[10]=a,e[11]=n,e[12]=u):u=e[12],i=u}let f;e[13]!==n?(f=n("diffView.submodule.title"),e[13]=n,e[14]=f):f=e[14];let d;e[15]!==f?(d=D.jsx("div",{className:"typography-ui-label font-semibold text-foreground",children:f}),e[15]=f,e[16]=d):d=e[16];let c;e[17]!==i?(c=i?D.jsx("div",{className:"typography-meta text-muted-foreground",children:i}):null,e[17]=i,e[18]=c):c=e[18];let o;e[19]!==a||e[20]!==s.hasTrackedChanges||e[21]!==n?(o=!a&&s.hasTrackedChanges?D.jsx("div",{className:"typography-meta text-muted-foreground",children:n("diffView.submodule.trackedChanges")}):null,e[19]=a,e[20]=s.hasTrackedChanges,e[21]=n,e[22]=o):o=e[22];let h;e[23]!==a||e[24]!==s.hasUntrackedFiles||e[25]!==n?(h=!a&&s.hasUntrackedFiles?D.jsx("div",{className:"typography-meta text-muted-foreground",children:n("diffView.submodule.untrackedFiles")}):null,e[23]=a,e[24]=s.hasUntrackedFiles,e[25]=n,e[26]=h):h=e[26];let p;return e[27]!==d||e[28]!==c||e[29]!==o||e[30]!==h?(p=D.jsxs("div",{className:"flex flex-col gap-1 rounded-lg border border-border/60 bg-background px-3 py-2",children:[d,c,o,h]}),e[27]=d,e[28]=c,e[29]=o,e[30]=h,e[31]=p):p=e[31],p};export{ae as S,re as a,ee as b,ne as c,se as d,te as i,ie as u};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{R as N,f as fe,j as n,c as He}from"./vendor-react-BUCujlKS.js";import{S as Ke,gB as Xe,kb as Qe,f as _e,kc as et,h as pe,kd as tt,I as Ne,ke as ot,cE as Re,av as $e,kf as it,kg as nt,kh as rt,ki as st,kj as at,cn as We,kk as lt,kl as ct,eE as dt,eF as Le,km as mt,c1 as ut,c0 as ft}from"./useAppFontEffects-
|
|
1
|
+
import{R as N,f as fe,j as n,c as He}from"./vendor-react-BUCujlKS.js";import{S as Ke,gB as Xe,kb as Qe,f as _e,kc as et,h as pe,kd as tt,I as Ne,ke as ot,cE as Re,av as $e,kf as it,kg as nt,kh as rt,ki as st,kj as at,cn as We,kk as lt,kl as ct,eE as dt,eF as Le,km as mt,c1 as ut,c0 as ft}from"./useAppFontEffects-ne84JBVL.js";import{F as Ue,J as pt}from"./JsonTreeView-VW_7czo3.js";import{P as ht}from"./PatchDiff-DCjGhlYV.js";import{cL as je,h as gt}from"./index-Dqc6USl3.js";import{ensurePierreThemeRegistered as Ce}from"./appThemeRegistry-DLicw4dH.js";import{u as xt}from"./vendor-tanstack-react-virtual-ClYN8CzB.js";import"./vendor-scheduler-7OC5HNn7.js";import"./vendor-zod-CgAdXWZO.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-zustand-BAGL70zf.js";import"./vendor-base-ui-CsXYnR5c.js";import"./vendor-floating-ui-utils-D6FqdtJt.js";import"./vendor-floating-ui-react-dom-DxYCWdHj.js";import"./vendor-floating-ui-dom-BTvzWks8.js";import"./vendor-floating-ui-core-PuGzNPnN.js";import"./vendor-use-sync-external-store-D6wYuSt-.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-dnd-kit-core-BZknOX2w.js";import"./vendor-dnd-kit-utilities-B_MdXhJC.js";import"./vendor-dnd-kit-accessibility-BHxJPORy.js";import"./vendor-dnd-kit-sortable-CsEagZ81.js";import"./vendor-framer-motion-Bq3iTZ6r.js";import"./vendor-motion-dom-DcCgeG69.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./contextPanelEmbeddedChat-CirXEPJq.js";import"./vendor-sonner-DFyL3AvE.js";import"./vendor-cmdk-DgLInKvT.js";import"./vendor-radix-ui-react-dialog-B94Bt2qq.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-DcAh5WdT.js";import"./vendor-radix-ui-react-context-Czxm7Z62.js";import"./vendor-radix-ui-react-id-f5BLKEVw.js";import"./vendor-radix-ui-react-use-layout-effect-D_3IhJdJ.js";import"./vendor-radix-ui-react-use-controllable-state-BFT5YmkA.js";import"./vendor-radix-ui-react-dismissable-layer-D7kXcwgJ.js";import"./vendor-radix-ui-react-primitive-DhVoX9SD.js";import"./vendor-radix-ui-react-slot-BQgQOasS.js";import"./vendor-radix-ui-react-use-callback-ref-BZPnuXAC.js";import"./vendor-radix-ui-react-use-escape-keydown-oph88g-F.js";import"./vendor-radix-ui-react-focus-scope-CiaxW4dD.js";import"./vendor-radix-ui-react-portal-BMJYHWck.js";import"./vendor-radix-ui-react-presence-CNxf-uq4.js";import"./vendor-radix-ui-react-focus-guards-B6qJXYua.js";import"./vendor-react-remove-scroll-DO7dCTnK.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-BcFYyj3E.js";import"./vendor-react-style-singleton-q6EMHnwf.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-zDC0RhA3.js";import"./vendor-use-callback-ref-D3RC8gqK.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-codemirror-language-BgPj_McA.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-codemirror-state-C9awkmn-.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-view-CiLROUVV.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-codemirror-lang-javascript-Cc2ZYbgX.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-DzPz9Wgq.js";import"./vendor-codemirror-lang-json-CMBS2tG9.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-O0cZX78y.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-CfgK872x.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-BPGOH9ye.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-Bx2EHc1O.js";import"./vendor-codemirror-lang-python-HahnQaAS.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-codemirror-commands-B7H_j0iU.js";import"./vendor-legendapp-list-BuBPBC3R.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./web-components-DxX8bZ1o.js";import"./computeVirtualFileMetrics-DlWlEM3x.js";import"./vendor-shiki-Bbf2GEcE.js";import"./vendor-shikijs-core-CGM_jqPK.js";import"./vendor-shikijs-types-CPSbSeK6.js";import"./vendor-shikijs-vscode-textmate-BgLrS_2D.js";import"./vendor-hast-util-to-html-BKBhbTDb.js";import"./vendor-html-void-elements-CkdplsNl.js";import"./vendor-property-information-rJCbAzvX.js";import"./vendor-zwitch-C2o2j-tx.js";import"./vendor-stringify-entities-CsH1VEn9.js";import"./vendor-character-entities-legacy-BpoLgcEt.js";import"./vendor-character-entities-html4-D7taRCQ7.js";import"./vendor-ccount-c2V3InAJ.js";import"./vendor-comma-separated-tokens-D8TqSuIK.js";import"./vendor-space-separated-tokens-DD3iYX1K.js";import"./vendor-hast-util-whitespace-D4Wp6AEg.js";import"./vendor-shikijs-engine-oniguruma-DPWuIF1G.js";import"./themeResolver-BmJyTmjJ.js";import"./vendor-pierre-theming-C6Z4M5_u.js";import"./vendor-shikijs-engine-javascript-Cme4830A.js";import"./vendor-oniguruma-to-es-DLBnFDCE.js";import"./vendor-oniguruma-parser-C0D4_9rT.js";import"./vendor-regex-BBWcyTkg.js";import"./vendor-regex-utilities-2BQyy0xI.js";import"./vendor-regex-recursion-JU4mF-dD.js";import"./vendor-shikijs-transformers-CZWsLLKm.js";import"./Virtualizer-CZlLSacm.js";import"./isFilePlainText-ue6kCou7.js";import"./VirtualizedFileDiff-NU0FHFhT.js";import"./isDiffPlainText-CO4e5J_S.js";import"./vendor-diff-C3JhlQdm.js";import"./vendor-opencode-sdk-BJ73u-bH.js";import"./textMateThemeFromAppTheme-DWqRPo9A.js";import"./vendor-tanstack-virtual-core-BewVQryB.js";const yt=80,Oe=20,qe=N.memo(o=>{const e=fe.c(26),{lines:t,language:a,maxHeight:c,showLineNumbers:i,lineStyles:l}=o,r=c===void 0?"60vh":c,s=i===void 0?!0:i,{currentTheme:f}=Ke();let m;e[0]!==f?(m=Xe(f),e[0]=f,e[1]=m):m=e[1];const y=m;let k;e[2]!==t?(k=t.map(wt).join(`
|
|
2
2
|
`),e[2]=t,e[3]=k):k=e[3];const b=Qe(k,a).lines;if(!(t.length>yt)){const v=y;let w;e[4]!==r||e[5]!==v?(w={...v,maxHeight:r,overflow:"auto"},e[4]=r,e[5]=v,e[6]=w):w=e[6];let x;if(e[7]!==b||e[8]!==l||e[9]!==t||e[10]!==s){let h;e[12]!==b||e[13]!==l||e[14]!==s?(h=(S,P)=>n.jsx(Pe,{line:S,html:b?.[P],showLineNumbers:s,style:l?.(S)},P),e[12]=b,e[13]=l,e[14]=s,e[15]=h):h=e[15],x=t.map(h),e[7]=b,e[8]=l,e[9]=t,e[10]=s,e[11]=x}else x=e[11];let u;return e[16]!==w||e[17]!==x?(u=n.jsx("div",{className:"oc-surface-code bg-[var(--syntax-background)] typography-code font-mono w-full min-w-0",style:w,children:x}),e[16]=w,e[17]=x,e[18]=u):u=e[18],u}let R;return e[19]!==b||e[20]!==l||e[21]!==t||e[22]!==r||e[23]!==s||e[24]!==y?(R=n.jsx(Be,{lines:t,highlighted:b,syntaxVars:y,maxHeight:r,showLineNumbers:s,lineStyles:l}),e[19]=b,e[20]=l,e[21]=t,e[22]=r,e[23]=s,e[24]=y,e[25]=R):R=e[25],R});qe.displayName="VirtualizedCodeBlock";const Be=N.memo(({lines:o,highlighted:e,syntaxVars:t,maxHeight:a,showLineNumbers:c,lineStyles:i})=>{const l=N.useRef(null),r=`min(${o.length*Oe}px, ${a})`,s=xt({count:o.length,getScrollElement:()=>l.current,estimateSize:()=>Oe,overscan:20}),f=s.getVirtualItems();return n.jsx("div",{ref:l,className:"oc-surface-code bg-[var(--syntax-background)] typography-code font-mono w-full min-w-0",style:{...t,height:r,maxHeight:a,overflow:"auto"},children:n.jsx("div",{style:{height:s.getTotalSize(),position:"relative"},children:f.map(m=>{const y=o[m.index];return y?n.jsx("div",{"data-index":m.index,ref:s.measureElement,style:{position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${m.start}px)`},children:n.jsx(Pe,{line:y,html:e?.[m.index],showLineNumbers:c,style:i?.(y)})},m.index):null})})})});Be.displayName="VirtualizedRows";const Pe=N.memo(o=>{const e=fe.c(12),{line:t,html:a,showLineNumbers:c,style:i}=o;let l;e[0]!==t.isInfo||e[1]!==t.lineNumber||e[2]!==c?(l=c&&n.jsx("span",{className:"w-10 flex-shrink-0 text-right pr-3 select-none border-r mr-3 -my-0.5 py-0.5",style:{color:"var(--syntax-line-number)",borderColor:"var(--interactive-border)"},children:!t.isInfo&&t.lineNumber!=null?t.lineNumber:""}),e[0]=t.isInfo,e[1]=t.lineNumber,e[2]=c,e[3]=l):l=e[3];let r;e[4]!==a||e[5]!==t.isInfo||e[6]!==t.text?(r=n.jsx("div",{className:"flex-1 min-w-0",children:t.isInfo?n.jsx("div",{className:"whitespace-pre-wrap break-words text-muted-foreground/70 italic",children:t.text}):a!==void 0?n.jsx("div",{className:"whitespace-pre",dangerouslySetInnerHTML:{__html:a}}):n.jsx("div",{className:"whitespace-pre",children:t.text})}),e[4]=a,e[5]=t.isInfo,e[6]=t.text,e[7]=r):r=e[7];let s;return e[8]!==i||e[9]!==l||e[10]!==r?(s=n.jsxs("div",{className:"typography-code font-mono flex w-full min-w-0",style:i,children:[l,r]}),e[8]=i,e[9]=l,e[10]=r,e[11]=s):s=e[11],s});Pe.displayName="VirtualizedCodeBlock.Row";function wt(o){return o.text}class Ee extends Error{key;params;constructor(e,t){super(e),this.name="MermaidLoadFailure",this.key=e,this.params=t}}const bt=(o,e)=>new Ee(o,e),vt=o=>o instanceof Ee,jt=o=>o+1,Ae=(o,e)=>o===e,Nt=o=>{const e=o.indexOf(",");if(e<0)throw bt("chat.toolOutputDialog.mermaid.dataUrlMalformed");const t=o.slice(0,e).toLowerCase(),a=o.slice(e+1);return t.includes(";base64")?atob(a):decodeURIComponent(a)},St=o=>Promise.resolve().then(()=>Nt(o)),De=(o,e)=>new Ee(o,e),Fe=150,kt=40,Tt=120,Rt=3,Ie={style:{background:"transparent",backgroundColor:"transparent",fontSize:"inherit"}},It={download:!1,copy:!1,showPanZoomControls:!0},Dt=`
|
|
3
3
|
[data-diff-header],
|
|
4
4
|
[data-diff] {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{R as D,f as x,j as g}from"./vendor-react-BUCujlKS.js";import{P as E}from"./PatchDiff-
|
|
1
|
+
import{R as D,f as x,j as g}from"./vendor-react-BUCujlKS.js";import{P as E}from"./PatchDiff-DCjGhlYV.js";import{eE as P,eF as y,kn as F}from"./useAppFontEffects-ne84JBVL.js";import{ensurePierreThemeRegistered as S}from"./appThemeRegistry-DLicw4dH.js";import"./vendor-scheduler-7OC5HNn7.js";import"./web-components-DxX8bZ1o.js";import"./computeVirtualFileMetrics-DlWlEM3x.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-shiki-Bbf2GEcE.js";import"./vendor-shikijs-core-CGM_jqPK.js";import"./vendor-shikijs-types-CPSbSeK6.js";import"./vendor-shikijs-vscode-textmate-BgLrS_2D.js";import"./vendor-hast-util-to-html-BKBhbTDb.js";import"./vendor-html-void-elements-CkdplsNl.js";import"./vendor-property-information-rJCbAzvX.js";import"./vendor-zwitch-C2o2j-tx.js";import"./vendor-stringify-entities-CsH1VEn9.js";import"./vendor-character-entities-legacy-BpoLgcEt.js";import"./vendor-character-entities-html4-D7taRCQ7.js";import"./vendor-ccount-c2V3InAJ.js";import"./vendor-comma-separated-tokens-D8TqSuIK.js";import"./vendor-space-separated-tokens-DD3iYX1K.js";import"./vendor-hast-util-whitespace-D4Wp6AEg.js";import"./vendor-shikijs-engine-oniguruma-DPWuIF1G.js";import"./themeResolver-BmJyTmjJ.js";import"./vendor-pierre-theming-C6Z4M5_u.js";import"./vendor-shikijs-engine-javascript-Cme4830A.js";import"./vendor-oniguruma-to-es-DLBnFDCE.js";import"./vendor-oniguruma-parser-C0D4_9rT.js";import"./vendor-regex-BBWcyTkg.js";import"./vendor-regex-utilities-2BQyy0xI.js";import"./vendor-regex-recursion-JU4mF-dD.js";import"./vendor-shikijs-transformers-CZWsLLKm.js";import"./Virtualizer-CZlLSacm.js";import"./VirtualizedFileDiff-NU0FHFhT.js";import"./isDiffPlainText-CO4e5J_S.js";import"./vendor-diff-C3JhlQdm.js";import"./index-Dqc6USl3.js";import"./vendor-zod-CgAdXWZO.js";import"./vendor-zustand-BAGL70zf.js";import"./vendor-opencode-sdk-BJ73u-bH.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-base-ui-CsXYnR5c.js";import"./vendor-floating-ui-utils-D6FqdtJt.js";import"./vendor-floating-ui-react-dom-DxYCWdHj.js";import"./vendor-floating-ui-dom-BTvzWks8.js";import"./vendor-floating-ui-core-PuGzNPnN.js";import"./vendor-use-sync-external-store-D6wYuSt-.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-dnd-kit-core-BZknOX2w.js";import"./vendor-dnd-kit-utilities-B_MdXhJC.js";import"./vendor-dnd-kit-accessibility-BHxJPORy.js";import"./vendor-dnd-kit-sortable-CsEagZ81.js";import"./vendor-framer-motion-Bq3iTZ6r.js";import"./vendor-motion-dom-DcCgeG69.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-tanstack-react-virtual-ClYN8CzB.js";import"./vendor-tanstack-virtual-core-BewVQryB.js";import"./contextPanelEmbeddedChat-CirXEPJq.js";import"./vendor-sonner-DFyL3AvE.js";import"./vendor-cmdk-DgLInKvT.js";import"./vendor-radix-ui-react-dialog-B94Bt2qq.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-DcAh5WdT.js";import"./vendor-radix-ui-react-context-Czxm7Z62.js";import"./vendor-radix-ui-react-id-f5BLKEVw.js";import"./vendor-radix-ui-react-use-layout-effect-D_3IhJdJ.js";import"./vendor-radix-ui-react-use-controllable-state-BFT5YmkA.js";import"./vendor-radix-ui-react-dismissable-layer-D7kXcwgJ.js";import"./vendor-radix-ui-react-primitive-DhVoX9SD.js";import"./vendor-radix-ui-react-slot-BQgQOasS.js";import"./vendor-radix-ui-react-use-callback-ref-BZPnuXAC.js";import"./vendor-radix-ui-react-use-escape-keydown-oph88g-F.js";import"./vendor-radix-ui-react-focus-scope-CiaxW4dD.js";import"./vendor-radix-ui-react-portal-BMJYHWck.js";import"./vendor-radix-ui-react-presence-CNxf-uq4.js";import"./vendor-radix-ui-react-focus-guards-B6qJXYua.js";import"./vendor-react-remove-scroll-DO7dCTnK.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-BcFYyj3E.js";import"./vendor-react-style-singleton-q6EMHnwf.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-zDC0RhA3.js";import"./vendor-use-callback-ref-D3RC8gqK.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-codemirror-language-BgPj_McA.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-codemirror-state-C9awkmn-.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-view-CiLROUVV.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-codemirror-lang-javascript-Cc2ZYbgX.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-DzPz9Wgq.js";import"./vendor-codemirror-lang-json-CMBS2tG9.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-O0cZX78y.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-CfgK872x.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-BPGOH9ye.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-Bx2EHc1O.js";import"./vendor-codemirror-lang-python-HahnQaAS.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-codemirror-commands-B7H_j0iU.js";import"./vendor-legendapp-list-BuBPBC3R.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./textMateThemeFromAppTheme-DWqRPo9A.js";const _=`
|
|
2
2
|
[data-diff-header],
|
|
3
3
|
[data-diff] {
|
|
4
4
|
[data-separator] {
|