@aiworker/web 1.23.1 → 1.23.2
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-teB3HmBT.js → CodeMirrorCommentWidgets-COGJG0Iv.js} +1 -1
- package/dist/assets/{DiffView-DC9RX3MF.js → DiffView-BviYY3zL.js} +1 -1
- package/dist/assets/{DirtyBranchSwitchDialog-DwPkzXsS.js → DirtyBranchSwitchDialog-C26DvfVJ.js} +1 -1
- package/dist/assets/{FilesView-BFZkuu4O.js → FilesView-D0ZU_nCt.js} +1 -1
- package/dist/assets/{GitView-B_x52MHY.js → GitView-CYgiDRH-.js} +1 -1
- package/dist/assets/{JsonTreeView-cmAzUTiw.js → JsonTreeView-GsV9UScz.js} +1 -1
- package/dist/assets/{LinearIssuesView-Dehh5afm.js → LinearIssuesView-shqUS8nl.js} +1 -1
- package/dist/assets/{MarkdownImageGallery-DgNOqqhE.js → MarkdownImageGallery-CQSTFp6m.js} +1 -1
- package/dist/assets/{MarkdownRendererImpl-DusmMZ_p.js → MarkdownRendererImpl-DJWP3A8X.js} +1 -1
- package/dist/assets/{OnboardingScreen-B8fm1H4m.js → OnboardingScreen-CTuu4lgo.js} +1 -1
- package/dist/assets/{PatchDiff-BVr7gJU0.js → PatchDiff-Dp53v2pl.js} +1 -1
- package/dist/assets/{PierreDiffViewer-DzLt-nel.js → PierreDiffViewer-B5l0djPS.js} +1 -1
- package/dist/assets/{PlanView-BmQUYT_z.js → PlanView-CLUWkGiG.js} +1 -1
- package/dist/assets/{SettingsView-ChWmAcZT.js → SettingsView-CojPQVHx.js} +1 -1
- package/dist/assets/{SettingsWindow-Dy3M6ZB9.js → SettingsWindow-DbgEnZ6T.js} +1 -1
- package/dist/assets/{ToolOutputDialog-cTl_eLIH.js → ToolOutputDialog-Du-RZj-a.js} +1 -1
- package/dist/assets/{ToolPartDiffPreview-C_3iYNJQ.js → ToolPartDiffPreview-HBLSokoe.js} +1 -1
- package/dist/assets/{VirtualizedFileDiff-CAWthkoy.js → VirtualizedFileDiff-Bzp3hClU.js} +1 -1
- package/dist/assets/{WalkthroughView-C7AHOpCA.js → WalkthroughView-CpgA4s9w.js} +1 -1
- package/dist/assets/{computeVirtualFileMetrics-BkiDSlTW.js → computeVirtualFileMetrics-CI1PC_z2.js} +1 -1
- package/dist/assets/{de-DJsQr-p7.js → de-BX8b4hDD.js} +1 -1
- package/dist/assets/{es-BuYMlA9g.js → es-e98cS-yM.js} +1 -1
- package/dist/assets/{fr-ePDay33C.js → fr-BOiqxJAs.js} +1 -1
- package/dist/assets/{index-n6O3hklM.js → index-Cmn74sw-.js} +1 -1
- package/dist/assets/{isDiffPlainText-GMdPz-71.js → isDiffPlainText-DVralkU-.js} +1 -1
- package/dist/assets/{isFilePlainText-BVuH1zH9.js → isFilePlainText-CgTREsRX.js} +1 -1
- package/dist/assets/{ja-BzR9xOY_.js → ja-aoO55hGu.js} +1 -1
- package/dist/assets/{ko-BEjHAm14.js → ko-BGzFLogk.js} +1 -1
- package/dist/assets/{main-D3ZDQglc.js → main-BgfXQ-4g.js} +2 -2
- package/dist/assets/{main-BydQ1tr_.js → main-DGYUWmIt.js} +4 -4
- package/dist/assets/{markdownCore-Cb2MdZnV.js → markdownCore-BesaNs_G.js} +1 -1
- package/dist/assets/{miniChat-d01k801U.js → miniChat-DHKXp-_I.js} +2 -2
- package/dist/assets/{mobile-D7VV-Ufz.js → mobile-lXQ08VnX.js} +2 -2
- package/dist/assets/{patchFileDiff-CdztVMz0.js → patchFileDiff-i1lTtNbn.js} +1 -1
- package/dist/assets/{pl-rQmpxNIF.js → pl-B5x19laq.js} +1 -1
- package/dist/assets/{pt-BR-CorbsSW-.js → pt-BR-C3oU51Il.js} +1 -1
- package/dist/assets/{renderElectronMiniChatApp-BGG9UIlh.js → renderElectronMiniChatApp-CuO4ue6B.js} +2 -2
- package/dist/assets/{renderMobileApp-BRP3J1iv.js → renderMobileApp-B3zFlHy4.js} +3 -3
- package/dist/assets/{runtimeEndpointReset-BhT_-c52.js → runtimeEndpointReset-BLzrtrmj.js} +3 -3
- package/dist/assets/{shikiHighlight-BzXUjlby.js → shikiHighlight-ctlcPvvx.js} +1 -1
- package/dist/assets/{tr-CoAMXPtI.js → tr-C0QQa7et.js} +1 -1
- package/dist/assets/{uk-YlAX0rRU.js → uk-CqLSe9wT.js} +1 -1
- package/dist/assets/{useAppFontEffects-Cwyhjfl5.js → useAppFontEffects-B6OfEypo.js} +8 -8
- package/dist/assets/{useGitComparison-BCZVefdE.js → useGitComparison-BXZXEAW6.js} +1 -1
- package/dist/assets/{useInlineCommentController-DDkpBEU8.js → useInlineCommentController-CgbrpEWu.js} +1 -1
- package/dist/assets/{useRootScrollLock-CwjoWuC4.js → useRootScrollLock-Me41OjBT.js} +1 -1
- package/dist/assets/{vendor-codemirror-language-data-Cb1YnICj.js → vendor-codemirror-language-data-SJuFp0a0.js} +2 -2
- package/dist/assets/{web-components-LV3vjTxy.js → web-components-D8GS8Ork.js} +1 -1
- package/dist/assets/{zh-CN-DDYg0Jl7.js → zh-CN-iJEie4d6.js} +6 -6
- package/dist/assets/{zh-TW-CQKaCayr.js → zh-TW-CyslEwlK.js} +1 -1
- package/dist/index.html +1 -1
- package/dist/mini-chat.html +1 -1
- package/dist/mobile.html +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{hs as j,hx as k,hF as y}from"./useAppFontEffects-
|
|
1
|
+
import{hs as j,hx as k,hF as y}from"./useAppFontEffects-B6OfEypo.js";import{k as D,a as C}from"./web-components-D8GS8Ork.js";import{M as P,G as O,u as L,W as A,a as M,b as R,n as E,t as H}from"./Virtualizer-CZlLSacm.js";import{j as d,r as w}from"./vendor-react-BUCujlKS.js";import{V as _,F as N}from"./VirtualizedFileDiff-Bzp3hClU.js";function T({hunkIndex:e,lineIndex:t,conflictIndex:n}){return`merge-conflict-action-${e}-${t}-${n}`}function V(e,t){const n=t.hunks[e.hunkIndex];if(n!=null)return{hunkIndex:e.hunkIndex,lineIndex:z(n,e.startContentIndex)}}function z(e,t){let n=e.unifiedLineStart;for(let l=0;l<t;l++){const o=e.hunkContent[l];n+=o.type==="context"?o.lines:o.deletions+o.additions}return n}function U(e){const t=j(e);if(t.length!==1)throw console.error(t),new Error("PatchDiff: Provided patch must include only 1 patch, with 1 diff");const{files:n}=t[0];if(n.length!==1)throw console.error(n),new Error("FileDiff: Provided patch must contain exactly 1 file diff");return n[0]}function $({fileDiff:e,actions:t,renderCustomHeader:n,renderHeaderPrefix:l,renderHeaderFilenameSuffix:o,renderHeaderMetadata:x,renderAnnotation:f,renderGutterUtility:u,renderMergeConflictUtility:s,lineAnnotations:a,getHoveredLine:p,getInstance:m}){const g=n?.(e),c=l?.(e),i=o?.(e),v=x?.(e);return d.jsxs(d.Fragment,{children:[g!=null?d.jsx("div",{slot:k,children:g}):d.jsxs(d.Fragment,{children:[c!=null&&d.jsx("div",{slot:"header-prefix",children:c}),i!=null&&d.jsx("div",{slot:"header-filename-suffix",children:i}),v!=null&&d.jsx("div",{slot:"header-metadata",children:v})]}),f!=null&&a?.map((r,h)=>d.jsx("div",{slot:D(r),children:f(r)},h)),t!=null&&s!=null&&m!=null&&t.map(r=>{if(r==null)return;const h=b(r,e);return d.jsx("div",{slot:h,style:P,children:s(r,m)},h)}),u!=null&&d.jsx("div",{slot:"gutter-utility-slot",style:O,children:u(p)})]})}function b(e,t){const n=V(e,t);return n!=null?T({hunkIndex:n.hunkIndex,lineIndex:n.lineIndex,conflictIndex:e.conflictIndex}):void 0}const S=typeof window>"u"?w.useEffect:w.useLayoutEffect;function G({fileDiff:e,options:t,lineAnnotations:n,selectedLines:l,prerenderedHTML:o,metrics:x,hasGutterRenderUtility:f,hasCustomHeader:u,disableWorkerPool:s,contentEditable:a}){const p=L(),m=l!==void 0,g=w.useContext(A),c=M(),i=w.useRef(null),v=R(r=>{if(r!=null){if(i.current!=null)throw new Error("useFileDiffInstance: An instance should not already exist when a node is created");p!=null?i.current=new _(I({controlledSelection:m,contentEditable:a,hasCustomHeader:u,hasEditor:c!==void 0,hasGutterRenderUtility:f,options:t}),p,x,s?void 0:g,!0):i.current=new N(I({controlledSelection:m,contentEditable:a,hasCustomHeader:u,hasEditor:c!==void 0,hasGutterRenderUtility:f,options:t}),s?void 0:g,!0),i.current.hydrate({fileDiff:e,fileContainer:r,lineAnnotations:n,prerenderedHTML:o})}else{if(i.current==null)throw new Error("useFileDiffInstance: A FileDiff instance should exist when unmounting");i.current.cleanUp(),i.current=null}});return S(()=>{const{current:r}=i;if(r==null)return;const h=I({controlledSelection:m,contentEditable:a,hasCustomHeader:u,hasEditor:c!==void 0,hasGutterRenderUtility:f,options:t}),F=!C(r.options,h);r.setOptions(h),r.render({forceRender:F,fileDiff:e,lineAnnotations:n}),l!==void 0&&r.setSelectedLines(l)}),S(()=>{if(a&&i.current!=null){if(c===void 0)throw new Error("FileDiff: Editor is not attached");return c.edit(i.current)}},[a,c]),{ref:v,getHoveredLine:w.useCallback(()=>i.current?.getHoveredLine(),[])}}function I({options:e,controlledSelection:t,contentEditable:n,hasCustomHeader:l,hasEditor:o,hasGutterRenderUtility:x}){const f=n&&o,u=t||x||l;if(!u&&!f)return e;let s={...e};return u&&(s={...s,controlledSelection:t,renderCustomHeader:l?E:e?.renderCustomHeader,renderGutterUtility:x?E:e?.renderGutterUtility}),f&&(s={...s,useTokenTransformer:!0,enableGutterUtility:!1,enableLineSelection:!1,expandUnchanged:!0,lineHoverHighlight:"disabled"}),s}function X({patch:e,options:t,metrics:n,lineAnnotations:l,selectedLines:o,className:x,style:f,prerenderedHTML:u,renderAnnotation:s,renderCustomHeader:a,renderHeaderPrefix:p,renderHeaderFilenameSuffix:m,renderHeaderMetadata:g,renderGutterUtility:c,disableWorkerPool:i=!1,contentEditable:v=!1}){const r=q(e),{ref:h,getHoveredLine:F}=G({fileDiff:r,options:t,metrics:n,lineAnnotations:l,selectedLines:o,prerenderedHTML:u,hasGutterRenderUtility:c!=null,hasCustomHeader:a!=null,disableWorkerPool:i,contentEditable:v});return d.jsx(y,{ref:h,className:x,style:f,children:H($({fileDiff:r,renderCustomHeader:a,renderHeaderPrefix:p,renderHeaderFilenameSuffix:m,renderHeaderMetadata:g,renderAnnotation:s,lineAnnotations:l,renderGutterUtility:c,getHoveredLine:F}),u)})}function q(e){return w.useMemo(()=>U(e),[e])}export{X as P};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{R as I,j as M,c as ye,r as l}from"./vendor-react-BUCujlKS.js";import{a as Ke}from"./web-components-
|
|
1
|
+
import{R as I,j as M,c as ye,r as l}from"./vendor-react-BUCujlKS.js";import{a as Ke}from"./web-components-D8GS8Ork.js";import{f as Ie}from"./computeVirtualFileMetrics-CI1PC_z2.js";import{V as Ye,F as Xe}from"./VirtualizedFileDiff-Bzp3hClU.js";import{V as Je}from"./Virtualizer-D_a8gKmg.js";import{em as Qe,en as ze,bd as Ze,bT as et,h as Ne}from"./useAppFontEffects-B6OfEypo.js";import{I as He,a as tt,u as nt}from"./useInlineCommentController-CgbrpEWu.js";import"./index-BD8ILbxF.js";import{aa as rt}from"./runtimeEndpointReset-BLzrtrmj.js";import{ensurePierreThemeRegistered as $e,getResolvedShikiTheme as qe}from"./appThemeRegistry-BK0dHKa6.js";const ve=i=>{if(i.type==="new"){const n=Math.min(i.selection.start,i.selection.end),r=Math.max(i.selection.start,i.selection.end);return`new-comment-${i.selection.side??"additions"}-${n}-${r}`}return`draft-${i.draft.id}`},it=i=>{const{drafts:n,editingDraftId:r,selection:a}=i,d=[];for(const w of n){if(!Number.isFinite(w.endLine))continue;const L=Math.max(1,Math.floor(w.endLine)),C=w.side==="original"?"deletions":"additions";d.push({lineNumber:L,side:C,metadata:{type:w.id===r?"edit":"saved",draft:w}})}return a&&!r&&d.push({lineNumber:Math.max(a.start,a.end),side:a.side??"additions",metadata:{type:"new",selection:a}}),d};function ot(i){const n=i.trim();if(!n)return null;if(/^-?\d+(\.\d+)?$/.test(n)){const r=Number.parseFloat(n);return Number.isFinite(r)?r:null}if(n.endsWith("px")){const r=Number.parseFloat(n.slice(0,-2));return Number.isFinite(r)?r:null}return null}function Be(i){if(!(!i||i<=0))return Math.max(200,Math.floor(i))}function st(i){const{diffRootRef:n,drafts:r,selection:a,editingDraftId:d,commentText:w,onTextChange:L,fileLabel:C,onSave:u,onCancel:$,onEdit:z,onDelete:N}=i,[V,O]=I.useState(0),[ee,P]=I.useState(null),H=I.useMemo(()=>!a||d?null:ve({type:"new",selection:a}),[d,a]),te=I.useMemo(()=>{const o=r.map(b=>ve({type:b.id===d?"edit":"saved",draft:b}));return H&&o.push(H),o},[r,d,H]),K=I.useCallback(o=>{const b=n.current;if(!b)return null;const S=b.querySelector("diffs-container");if(!(S instanceof HTMLElement))return null;const k=S.querySelector(`[data-annotation-id="${o}"]`);if(k instanceof HTMLElement)return k;const T=S.shadowRoot;return T?T.querySelector(`[data-annotation-id="${o}"]`):null},[n]);I.useEffect(()=>{if(te.length===0)return;let o=!1,b=0;const S=12,k=()=>{o||te.every(F=>!!K(F))||b>=S||(b+=1,requestAnimationFrame(()=>{o||(O(F=>F+1),k())}))};return k(),()=>{o=!0}},[te,K]),I.useEffect(()=>{const o=n.current;if(!o)return;const b=()=>{const k=getComputedStyle(o),T=ot(k.getPropertyValue("--oc-context-panel-width")),F=o.getBoundingClientRect(),W=T??F.width;P(W>0?W:null)};b();const S=new ResizeObserver(()=>{b()});return S.observe(o),window.addEventListener("resize",b),()=>{S.disconnect(),window.removeEventListener("resize",b)}},[n]);const Y=I.useCallback(o=>{const S=n.current?.getBoundingClientRect(),k=o.closest("[data-annotation-content]"),T=k instanceof HTMLElement?k.getBoundingClientRect():o.getBoundingClientRect(),F=[T.width];S&&F.push(S.right-T.left);const W=F.filter(ce=>Number.isFinite(ce)&&ce>0);return W.length>0?Be(Math.min(...W)):Be(ee)},[n,ee]);return M.jsxs(M.Fragment,{children:[r.map(o=>{const b=ve({type:o.id===d?"edit":"saved",draft:o}),S=K(b);if(!S)return null;const k=Y(S);return o.id===d?ye.createPortal(M.jsx(He,{initialText:w,onTextChange:L,fileLabel:C,lineRange:{start:o.startLine,end:o.endLine,side:o.side==="original"?"deletions":"additions"},isEditing:!0,onSave:u,onCancel:$,maxWidth:k}),S,`draft-edit-${o.id}`):ye.createPortal(M.jsx(tt,{draft:o,onEdit:()=>z(o),onDelete:()=>N(o),maxWidth:k}),S,`draft-card-${o.id}`)}),a&&!d&&H&&(()=>{const o=K(H);if(!o)return null;const b=Y(o);return ye.createPortal(M.jsx(He,{initialText:w,onTextChange:L,fileLabel:C,lineRange:a,isEditing:!1,onSave:u,onCancel:$,maxWidth:b}),o,H)})()]})}const De=[],at=`
|
|
2
2
|
[data-gutter-buffer="annotation"] { min-height: 0; }
|
|
3
3
|
[data-code] { min-height: 2.5rem; align-content: start; }
|
|
4
4
|
`,Oe=5e5,lt=`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{R as t,j as n}from"./vendor-react-BUCujlKS.js";import{n as jt,u as qe,a as he,v as Xe,h as Ze,z as bt}from"./index-BD8ILbxF.js";import{c as Ct,s as Rt,P as Pt,C as kt}from"./shikiHighlight-
|
|
1
|
+
import{R as t,j as n}from"./vendor-react-BUCujlKS.js";import{n as jt,u as qe,a as he,v as Xe,h as Ze,z as bt}from"./index-BD8ILbxF.js";import{c as Ct,s as Rt,P as Pt,C as kt}from"./shikiHighlight-ctlcPvvx.js";import{f as Mt,y as H,cj as Tt,aD as Nt,b as et,J as Et,ae as It,Y as Dt,bd as Vt,R as Ft,fp as At,$ as Lt,hh as Wt,l as tt,fo as $t,au as nt,gx as Kt,fm as zt,d3 as rt,fr as Ot,fs as _t,m as Bt,hi as Gt,ao as st,a9 as ge,aa as we,ap as it,B as ne,I as z,ab as ve,ar as ot,bb as re,g as Jt,bT as Ut,ax as Ht,c8 as Yt,hj as Qt}from"./useAppFontEffects-B6OfEypo.js";import{u as qt,n as Xt}from"./useInlineCommentController-CgbrpEWu.js";import{b as Zt}from"./CodeMirrorCommentWidgets-COGJG0Iv.js";import{getResolvedShikiTheme as en}from"./appThemeRegistry-BK0dHKa6.js";import{E as tn}from"./vendor-codemirror-view-CiLROUVV.js";import{a9 as nn}from"./runtimeEndpointReset-BLzrtrmj.js";import"./vendor-scheduler-7OC5HNn7.js";import"./vendor-zod-B6551dwG.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-zustand-BAGL70zf.js";import"./vendor-opencode-sdk-BJ73u-bH.js";import"./vendor-codemirror-state-C9awkmn-.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-commands-B7H_j0iU.js";import"./vendor-codemirror-language-BgPj_McA.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-codemirror-search-BmS-GmcX.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-replit-codemirror-vim-B2DJlAhT.js";import"./vendor-replit-codemirror-vim-core-FHzKdNUS.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-base-ui-BY_5qla_.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-livSKyyV.js";import"./vendor-motion-dom-D_o3BTI3.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-tanstack-react-virtual-g05Cx3z9.js";import"./vendor-tanstack-virtual-core-Dubg10g5.js";import"./contextPanelEmbeddedChat-BdA6bdky.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-lang-javascript-Cc2ZYbgX.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-DzPz9Wgq.js";import"./vendor-w3c-keyname-Vcq4gwWv.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-SJuFp0a0.js";import"./vendor-codemirror-lang-python-HahnQaAS.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-legendapp-list-BuBPBC3R.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./registerCustomTheme-BBXUCRnG.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";const rn=()=>{const l=new Map,c=new Map;return{schedule:(o,s,f)=>{if(s<=(c.get(o)??Number.NEGATIVE_INFINITY))return l.get(o)??Promise.resolve();c.set(o,s);const g=(l.get(o)??Promise.resolve()).then(f,f);return l.set(o,g.catch(()=>{c.get(o)===s&&c.delete(o)})),g},pendingFor:async o=>{await l.get(o)},reset:o=>{c.delete(o)}}},x=l=>{if(!l)return"";const c=l.replace(/\\/g,"/");return c==="/"?"/":c.replace(/\/+$/,"")},Se=(l,c)=>{const o=x(l),s=c.replace(/\\/g,"/").replace(/^\/+/,"").replace(/\/+$/,"");return!o||o==="/"?`/${s}`:`${o}/${s}`},sn=(l,c,o)=>Se(Se(Se(l,".opencode"),"plans"),`${c}-${o}.md`),on=(l,c)=>`~/.opencode/plans/${l}-${c}.md`,an=(l,c)=>{const o=l.trim();return o.startsWith("~")?o==="~"?c||o:(o.startsWith("~/")||o.startsWith("~\\"))&&c?`${c}${o.slice(1)}`:o:o},ln=(l,c)=>{const o=x(c.currentDirectory),s=x(c.homeDirectory),f=x(l);return o&&f.startsWith(o+"/")?f.slice(o.length+1):s&&f===s?"~":s&&f.startsWith(s+"/")?`~${f.slice(s.length)}`:f},cn=(l,c,o)=>{const s=x(l.trim());if(!s)return null;const f=o?c.find(g=>g.id===o)??null:null;if(f?.path){const g=x(f.path);if(s===g||s.startsWith(`${g}/`))return{id:f.id,path:f.path}}const N=c.filter(g=>{const E=x(g.path);return s===E||s.startsWith(`${E}/`)}).sort((g,E)=>x(E.path).length-x(g.path).length)[0];return N?{id:N.id,path:N.path}:null},un=l=>bt(()=>l()),cs=({targetPath:l=null,savedProjectPlan:c=null,onNavigatedToChat:o})=>{const{t:s}=Mt(),f=H(e=>e.currentSessionId),N=H(e=>e.createSession),g=H(e=>e.initializeNewAiWorkerSession),E=H(e=>e.sendMessage),ye=H(e=>e.setCurrentSession),xe=Tt(),O=jt(e=>e.homeDirectory),je=Nt(e=>e.planModeEnabled),be=et(e=>e.projects),Ce=et(e=>e.activeProjectId),Re=Et(e=>e.directories),Pe=It()??"",ke=qe(e=>e.setSessionSwitcherOpen),_=Dt(),I=t.useSyncExternalStore(un,he,he),{isMobile:Me}=Vt(),{currentTheme:Y}=Ft(),S=t.useMemo(()=>f?xe.find(e=>e.id===f)??null:null,[f,xe]),R=t.useMemo(()=>{const e=typeof S?.directory=="string"?S.directory:"";return x(e||"")},[S?.directory]),Te=t.useMemo(()=>x(Pe||R),[Pe,R]),B=t.useMemo(()=>cn(Te,be,Ce),[Ce,Te,be]),se=c?.projectRef.id??null,ie=c?.projectRef.path??null,v=t.useMemo(()=>se&&ie?{id:se,path:ie}:null,[se,ie]),P=c?.planId??null,G=v&&P?JSON.stringify(["saved-plan",I,At(v),P]):null,A=v?.id===Lt,Q=t.useMemo(()=>{const e=v??B;return e?Re.get(e.path)?.isGitRepo===!0:!1},[B,Re,v]),[D,L]=t.useState(null),[Ne,Ee]=t.useState(!1),[p,k]=t.useState(null),[oe,ae]=t.useState(null),at=!!p||!!oe,le=t.useMemo(()=>!p||!R||!O?p:ln(p,{currentDirectory:R,homeDirectory:O}),[p,R,O]),[h,j]=t.useState(""),{isPlaying:q,play:lt,stop:ct}=Wt(),ut=tt(e=>e.showMessageTTSButtons),[Ie,ce]=t.useState(null),[De,ue]=t.useState(null),de=t.useMemo(()=>le&&le.split("/").pop()||s("planView.file.defaultName"),[le,s]),me=t.useMemo(()=>h.trim()?$t(h,s("planView.title.default")).title:s("planView.title.default"),[h,s]),X=t.useMemo(()=>me.trim()||s("planView.title.default"),[me,s]),[dt,V]=t.useState(!1),[mt,Ve]=t.useState(!1),[Z,Fe]=t.useState("edit"),J=t.useRef(null),[u,y]=t.useState(null),Ae=t.useRef(null),pt=t.useRef(null),Le="aiworker:plan:md-viewer-mode";t.useEffect(()=>{try{const e=localStorage.getItem(Le);if(!e)return;const i=JSON.parse(e);(i==="preview"||i==="edit")&&Fe(i)}catch{}},[]);const ft=t.useCallback(e=>{Fe(e);try{localStorage.setItem(Le,JSON.stringify(e))}catch{}},[]),W=t.useRef(!1),M=t.useRef(null),[We,$]=t.useState(!1);t.useEffect(()=>{const e=()=>{W.current=!1,M.current=null,$(!1)};return document.addEventListener("mouseup",e),()=>document.removeEventListener("mouseup",e)},[]);const ht=t.useCallback((e,i)=>{const a=e.split(`
|
|
2
2
|
`),r=Math.max(1,i.start),d=Math.min(a.length,i.end);return r>d?"":a.slice(r-1,d).join(`
|
|
3
3
|
`)},[]),gt=qt({source:"plan",fileLabel:de,language:p&&nt(p)||"markdown",getCodeForRange:e=>ht(h,Xt(e)),toStoreRange:e=>({startLine:e.start,endLine:e.end}),fromDraftRange:e=>({start:e.startLine,end:e.endLine})}),{drafts:$e,commentText:ee,setCommentText:Ke,editingDraftId:pe,setSelection:ze,saveComment:Oe,cancel:U,reset:_e,startEdit:Be,deleteDraft:Ge}=gt;t.useEffect(()=>{y(null),_e()},[h,_e]),t.useEffect(()=>{ze(u)},[u,ze]);const Je=t.useCallback(()=>{y(null),U()},[U]),Ue=t.useCallback((e,i)=>{i&&y(i),Oe(e,i??u??void 0),y(null)},[u,Oe]);t.useEffect(()=>{if(!u)return;const e=a=>{const r=a.target;r.closest('[data-comment-card="true"]')||r.closest('[data-comment-input="true"]')||r.closest(".oc-block-widget")||r.closest(".cm-gutterElement")||r.closest("[data-sonner-toast]")||r.closest("[data-sonner-toaster]")||ee.trim()||(y(null),U())},i=window.setTimeout(()=>{document.addEventListener("click",e)},100);return()=>{window.clearTimeout(i),document.removeEventListener("click",e)}},[U,ee,pe,Me,u]);const fe=qe(e=>e.editorFontSize),wt=t.useMemo(()=>{const e=p?nt(p):null,i=!!e&&e!=="markdown",a=[Ct(Y,i?{syntaxColors:!1,fontSize:fe}:{fontSize:fe})],r=Kt(p||"plan.md");return r&&a.push(r),i&&e&&a.push(Rt({language:e,themeName:Y.metadata.id,theme:en(Y)})),a.push(tn.lineWrapping),a},[Y,p,fe]),b=t.useRef({key:null,target:null,content:"",editRevision:0,savedRevision:0,runtimeKey:""}),C=t.useState(rn)[0],He=t.useCallback(async(e,i)=>{if("filePath"in e){const r=_.files??Xe()?.files;if(r?.writeFile){if(!(await r.writeFile(e.filePath,i))?.success)throw new Error("Plan file write failed");return}const d=await Ze("/api/fs/write",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e.filePath,content:i})});if(!d.ok)throw new Error(`Failed to write plan file (${d.status})`);return}if(!await zt.getState().savePlan(e.projectRef,e.planId,i))throw new Error("Plan save rejected: the plan no longer exists")},[_.files]),Ye=t.useRef(He);Ye.current=He;const F=t.useCallback(()=>{const e=b.current;if(!e.key||!e.target||e.editRevision<=e.savedRevision)return;const i={key:e.key,target:e.target,content:e.content,revision:e.editRevision,runtimeKey:e.runtimeKey,write:Ye.current};C.schedule(i.key,i.revision,async()=>{if(he()!==i.runtimeKey)return;await i.write(i.target,i.content);const a=b.current;a.key===i.key&&(a.savedRevision=Math.max(a.savedRevision,i.revision),ce(null))}).catch(a=>{b.current.key===i.key&&ce(a instanceof Error?a.message:"Plan save failed")})},[C]);t.useEffect(()=>{if(!je&&!l&&!P){F(),b.current={key:null,target:null,content:"",editRevision:0,savedRevision:0,runtimeKey:""},k(null),ae(null),j(""),V(!1);return}let e=!1;const i=async r=>{if(_.files?.readFile)return(await _.files.readFile(r))?.content??"";const d=Xe()?.files;if(d?.readFile)return(await d.readFile(r,{optional:!0}))?.content??"";const m=await Ze(`/api/fs/read?path=${encodeURIComponent(r)}&optional=true`,{cache:"no-store"});if(!m.ok)throw new Error(`Failed to read plan file (${m.status})`);return m.text()};return(async()=>{if(F(),b.current={key:null,target:null,content:"",editRevision:0,savedRevision:0,runtimeKey:""},k(null),ae(null),j(""),ce(null),ue(null),P&&v&&G){if(await C.pendingFor(G),e)return;C.reset(G),V(!0);try{const r=await Qt(v,P);if(e)return;if(!r){ue("Plan not found");return}b.current={key:G,target:{projectRef:v,planId:P},content:r.raw,editRevision:0,savedRevision:0,runtimeKey:I},j(r.raw),ae(P)}catch(r){if(e)return;ue(r instanceof Error?r.message:"Plan load failed")}finally{e||V(!1)}return}if(l){const r=JSON.stringify(["plan-file",I,l]);if(await C.pendingFor(r),e)return;C.reset(r),V(!0);try{const d=await i(l);if(e)return;b.current={key:r,target:{filePath:l},content:d,editRevision:0,savedRevision:0,runtimeKey:I},k(l),j(d)}catch{if(e)return;k(null),j("")}finally{e||V(!1)}return}if(!S?.slug||!S?.time?.created||!R){k(null),j("");return}V(!0);try{const r=sn(R,S.time.created,S.slug),d=an(on(S.time.created,S.slug),O||null);let m=null;try{await i(r),m=r}catch{}if(!m)try{await i(d),m=d}catch{}if(e)return;if(!m){k(null),j("");return}const w=JSON.stringify(["plan-file",I,m]);if(await C.pendingFor(w),e)return;const K=await i(m);if(e)return;C.reset(w),b.current={key:w,target:{filePath:m},content:K,editRevision:0,savedRevision:0,runtimeKey:I},k(m),j(K)}catch{if(e)return;k(null),j("")}finally{e||V(!1)}})(),()=>{e=!0}},[I,O,je,_.files,P,G,v,C,F,S?.slug,S?.time?.created,R,l]);const vt=t.useCallback(e=>{b.current.content=e,b.current.editRevision+=1,j(e)},[]);t.useEffect(()=>{if(!p&&!oe)return;const e=window.setTimeout(()=>{F()},350);return()=>{window.clearTimeout(e)}},[h,oe,p,F]),t.useEffect(()=>()=>{F()},[F]),t.useEffect(()=>()=>{J.current!==null&&window.clearTimeout(J.current)},[]);const Qe=t.useCallback(()=>{ke(!1),o?.()},[o,ke]),St=t.useCallback(async e=>{const i=v??B;if(!i||!D||A)return;const a=await rt(D.action==="improve"?"plan.improve.visible":"plan.implement.visible",{plan_title:X}),r=await rt(D.action==="improve"?"plan.improve.instructions":"plan.implement.instructions",{plan_title:X,plan_path:p??""}),m=[{synthetic:!0,text:p?r:[r,"","The plan is not stored as a file in the repository and has no file path. Its full current contents follow below this note and are the source of truth for the plan. Where the instructions above refer to the plan file, treat the plan as stored in AiWorker project knowledge (it is edited through the AiWorker UI): propose plan revisions as plan text in the chat rather than editing a file.","",h].join(`
|
|
4
4
|
`)}];Ee(!0);try{Qe();let w=null,K=i.path;if(D.target==="worktree"){if(!Q)return;const T=await Ot(i.path,_t());if(!T?.id)return;w=T.id,K=T.path}else{const T=await N(void 0,i.path,null);if(!T?.id)return;w=T.id,K=T.directory??i.path,g(T.id,tt.getState().agents??[])}if(!w)return;const te=Bt.getState();te.saveSessionModelSelection(w,e.providerID,e.modelID),e.agent.trim()&&(te.saveSessionAgentSelection(w,e.agent),te.saveAgentModelForSession(w,e.agent,e.providerID,e.modelID),te.saveAgentModelVariantForSession(w,e.agent,e.providerID,e.modelID,e.variant||void 0)),ye(w,K);const xt=e.runAsGoal===!0?[`Implement the plan "${X}" end-to-end${p?` (plan file: ${p})`:" (the full plan follows)"}.`,p?"Re-read that file for full details — it is the source of truth.":"The full plan follows in this message and is the source of truth.","",h].join(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{R as o,j as s,f as ut,r as $e}from"./vendor-react-BUCujlKS.js";import{f as tt,B as V,I as O,o as Pn,bd as wa,t as E,O as mc,g1 as gc,eF as ze,g2 as Tt,b as Gs,h as xe,at as hc,ap as on,ar as ln,as as fc,ao as cn,ev as Hn,g3 as fl,g4 as xc,g5 as ma,g6 as un,bT as vs,bN as Kt,bO as zt,bP as _t,bQ as $t,bR as Vt,bS as ts,V as He,g7 as _a,bb as dn,ei as lr,g8 as vc,g9 as zn,eK as Jt,ga as Ys,l as Ye,eY as Rt,c2 as St,c3 as Ct,eV as Ft,c4 as Mt,c5 as It,c6 as at,gb as qt,c7 as Ts,dG as Fa,eX as In,e_ as xa,eZ as rn,gc as Cs,dL as xs,gd as Ps,ge as yc,cy as dt,gf as xl,gg as bc,gh as $n,gi as vl,gj as wc,gk as va,fD as Hs,gl as ha,gm as yl,gn as wr,dH as bl,go as Vn,a8 as ya,a7 as Ks,gp as wl,gq as Kr,ad as jc,eg as jl,g as Ka,gr as kc,gs as Zs,b$ as An,ca as Tn,c0 as En,ef as Nc,gt as Sc,gu as Cc,gv as jr,a9 as kr,aa as Nr,ab as kl,gw as hn,a3 as ki,bo as Sr,R as Cr,gx as zr,au as Ic,c8 as Pc,cO as Ac,T as Tc,S as Ec,U as Dc,Y as Nl,gy as Mc,gz as Rc,bZ as Lc,c9 as cr,gA as Sl,ac as xi,gB as Cl,P as Un,gC as Qs,eE as zs,eo as Il,a2 as Oc,n as Zt,ea as Ni,x as Pl,w as Fc,i as Kc,j as zc,eb as Uc,p as _c,gD as $c,gE as Vc,gF as Ur,dM as Al,gG as Bc,gH as Hi,gI as _r,gJ as Hc,gK as Gc,gL as Wc,gM as qc,dS as Si,gN as fs,gO as Ss,gP as Js,gQ as Bs,aB as Cn,aC as oa,gR as Sn,eU as bn,gS as ba,gT as $r,gU as la,gV as ca,bK as Gn,gW as Jc,gX as Qc,gY as Yc,gZ as Zc,g_ as Gi,g$ as Vr,h0 as Xc,h1 as ed,h2 as td,h3 as sd,h4 as Br,y as nd,m as Hr,d0 as ad,h5 as id,h6 as Wi,h7 as Gr,ed as rd,h8 as Ii,h9 as od,ha as ld,hb as cd,hc as dd,hd as ud,he as qi,cz as pd,bL as Tl,hf as El,hg as md,ax as wn,ay as gd}from"./useAppFontEffects-Cwyhjfl5.js";import{h as yt,u as ie,K as cs,d9 as hd,da as Wr,A as fn,aB as pn,q as gt,a2 as fd,D as as,Q as qr,cr as Jr,cy as Qr,V as Ia,p as xd,db as vd,k as yd,cq as ua,dc as bd,ak as wd,cv as jd,dd as kd,de as Nd,s as Sd,e as $a,cw as Cd,E as Va,df as Dl,$ as Id,dg as Pd,v as fa,aA as ga,c$ as Ad,_ as Td,aM as Yr,a$ as ai,aN as Ed,dh as Dd,aa as Bn,di as Md,z as Ml,dj as Zr,d8 as Xr,dk as eo,aK as to,dl as Rd,dm as Ld,dn as Od,dp as Fd,dq as so,b as Kd,aH as Rl,dr as Ll,ds as zd,dt as Ud,du as _d,dv as $d,dw as Vd,dx as Bd,av as Hd,i as Ol}from"./index-BD8ILbxF.js";import{u as Gd,U as no,K as Wn,M as qn,Q as Jn,R as Qn,f as Ir,a6 as _n,X as Wd,n as As,a4 as qd,a7 as pa,a8 as Fl,V as Jd,W as Qd}from"./runtimeEndpointReset-BhT_-c52.js";import{u as Us,c as Kl,d as Yd,p as Zd}from"./vendor-zustand-BAGL70zf.js";import{o as Xd,s as ao,b as eu}from"./vendor-zod-B6551dwG.js";import{s as tu,p as su}from"./vendor-yaml-3778uTud.js";import{c as io,s as nu,C as ro,P as au}from"./shikiHighlight-BzXUjlby.js";import{getResolvedShikiTheme as iu}from"./appThemeRegistry-BK0dHKa6.js";import{E as oo}from"./vendor-codemirror-view-CiLROUVV.js";import{Q as zl}from"./vendor-qrcode-DTJ12-WC.js";const lo=()=>{const{t}=tt(),[e,a]=o.useState(null);o.useEffect(()=>{let r=!1;const i=typeof AbortController<"u"?new AbortController:void 0;return(async()=>{try{const g=await yt("/api/system/info",{signal:i?.signal,headers:{Accept:"application/json"}});if(!g.ok)return;const c=await g.json().catch(()=>null);if(!c||r)return;const y=typeof c.port=="number"&&Number.isFinite(c.port)&&c.port>0?c.port:null,p=typeof c.tunnelUrl=="string"&&c.tunnelUrl.trim().length>0?c.tunnelUrl.trim():null;a({port:y,tunnelUrl:p})}catch{}})(),()=>{r=!0,i?.abort()}},[]);const n=[];return e?.port!==null&&e?.port!==void 0&&n.push({key:"application",label:t("settings.aiworker.about.field.applicationUrl"),url:`http://localhost:${e.port}/`}),e?.tunnelUrl&&n.push({key:"tunnel",label:t("settings.aiworker.about.field.tunnelUrl"),url:e.tunnelUrl}),n.length===0?null:s.jsx("div",{className:"flex flex-wrap items-center gap-2",children:n.map(r=>s.jsxs(V,{type:"button",variant:"outline",size:"sm",title:r.label,className:"max-w-full gap-1.5 px-2.5",onClick:()=>{Pn(r.url)},children:[s.jsx(O,{name:"external-link",className:"size-3.5 shrink-0"}),s.jsx("span",{className:"max-w-64 truncate font-mono typography-micro",children:r.url})]},r.key))})},co="https://roweb.cn/roweb/openchamber",ru="https://discord.gg/ZYRSdnwwKA",uo="https://x.com/openchamber_dev",ou=800,Ul=({initialUpdateDialogOpen:t=!1})=>{const{t:e}=tt(),[a,n]=o.useState(t),[r,i]=o.useState(!1),[l,g]=o.useState(null),[c,y]=o.useState(null),p=Gd(Us(C=>({info:C.info,checking:C.checking,available:C.available,error:C.error,downloading:C.downloading,downloaded:C.downloaded,progress:C.progress,runtimeType:C.runtimeType,checkForUpdates:C.checkForUpdates,downloadUpdate:C.downloadUpdate,restartToUpdate:C.restartToUpdate}))),{isMobile:b}=wa(),d=l||p.info?.currentVersion||"unknown";o.useEffect(()=>{let C=!1;return(async()=>{try{const N=await yt("/api/system/info",{method:"GET",headers:{Accept:"application/json"}});if(!N.ok)return;const m=await N.json().catch(()=>null),A=typeof m?.aiworkerVersion=="string"&&m.aiworkerVersion.trim().length>0?m.aiworkerVersion.trim():null;C||g(A)}catch{C||g(null)}})(),()=>{C=!0}},[]),o.useEffect(()=>{let C=!1;return(async()=>{try{const N=await yt("/api/opencode/upgrade-status",{method:"GET",headers:{Accept:"application/json"}});if(!N.ok)return;const m=await N.json().catch(()=>null),A=typeof m?.currentVersion=="string"&&m.currentVersion.trim().length>0?m.currentVersion.trim():null;C||y(A)}catch{C||y(null)}})(),()=>{C=!0}},[]);const P=o.useRef(!1);o.useEffect(()=>{if(p.checking)i(!0),P.current=!0;else if(r){const C=setTimeout(()=>{i(!1),P.current&&!p.available&&!p.error&&(E.success(e("settings.aiworker.about.toast.latestVersion")),P.current=!1)},ou);return()=>clearTimeout(C)}},[e,p.checking,r,p.available,p.error]);const f=p.checking||r;return b?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(mc,{width:72,height:72}),s.jsx("h2",{className:`mt-4 ${gc}`,children:"AiWorker"}),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.aiworker.about.state.unknown")})})]}),s.jsx(lo,{})]}),s.jsxs("div",{className:"flex justify-center",children:[!p.available&&!p.error&&s.jsxs(V,{type:"button",variant:"outline",size:"sm",onClick:()=>p.checkForUpdates(),disabled:f,className:"h-10 w-auto justify-center gap-2 rounded-xl px-4",children:[f?s.jsx(O,{name:"loader",className:"size-4 animate-spin"}):s.jsx(O,{name:"refresh",className:"size-4"}),e(f?"settings.aiworker.about.state.checking":"settings.aiworker.about.actions.checkForUpdates")]}),!f&&p.available&&s.jsxs(V,{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(O,{name:"download",className:"size-4"}),e("settings.aiworker.about.actions.updateToVersion",{version:p.info?.version||""})]})]}),p.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:p.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:co,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(O,{name:"github-fill",className:"size-5"}),s.jsx("span",{children:"GitHub"})]}),s.jsxs("a",{href:ru,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(O,{name:"discord-fill",className:"size-5"}),s.jsx("span",{children:"Discord"})]})]}),s.jsxs("a",{href:uo,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(O,{name:"twitter-xfill",className:"size-5"}),s.jsx("span",{children:"@aiworker_dev"})]})]}),s.jsx("p",{className:"text-center typography-ui text-muted-foreground/60",children:e("aboutDialog.footerNote")}),s.jsx(no,{open:a,onOpenChange:n,info:p.info,downloading:p.downloading,downloaded:p.downloaded,progress:p.progress,error:p.error,onDownload:p.downloadUpdate,onRestart:p.restartToUpdate,runtimeType:p.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:Tt,children:e("settings.aiworker.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:Tt,children:e("settings.aiworker.about.field.openCodeVersion")}),s.jsx("span",{className:"typography-meta text-muted-foreground font-mono",children:c||e("settings.aiworker.about.state.unknown")})]}),s.jsxs("div",{className:"flex items-center gap-3",children:[p.checking&&s.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground",children:[s.jsx(O,{name:"loader",className:"h-4 w-4 animate-spin"}),s.jsx("span",{className:"typography-meta",children:e("settings.aiworker.about.state.checking")})]}),!p.checking&&p.available&&s.jsxs(V,{size:"sm",variant:"default",onClick:()=>n(!0),children:[s.jsx(O,{name:"download",className:"h-4 w-4 mr-1"}),e("settings.aiworker.about.actions.updateToVersion",{version:p.info?.version||""})]}),!p.checking&&!p.available&&!p.error&&s.jsx("span",{className:"typography-meta text-muted-foreground",children:e("settings.aiworker.about.state.upToDate")}),s.jsx(V,{size:"sm",variant:"outline",onClick:()=>p.checkForUpdates(),disabled:p.checking,children:e("settings.aiworker.about.actions.checkForUpdates")})]})]}),p.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:p.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:Tt,children:e("settings.aiworker.about.field.instanceUrls")}),s.jsx(lo,{})]}),s.jsxs("div",{className:"flex items-center gap-4 px-4 py-4",children:[s.jsxs("a",{href:co,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(O,{name:"github-fill",className:"h-4 w-4"}),s.jsx("span",{children:"GitHub"})]}),s.jsxs("a",{href:uo,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(O,{name:"twitter-xfill",className:"h-4 w-4"}),s.jsx("span",{children:"@aiworker_dev"})]})]})]}),s.jsx(no,{open:a,onOpenChange:n,info:p.info,downloading:p.downloading,downloaded:p.downloaded,progress:p.progress,error:p.error,onDownload:p.downloadUpdate,onRestart:p.restartToUpdate,runtimeType:p.runtimeType})]})},lu=(t,e,a)=>t&&e.some(r=>r.path===t)?t:(e.find(r=>r.id===a)??e[0])?.path??null,_s=()=>{const t=ut.c(4),e=ie(cu),a=Gs(du),n=Gs(uu);let r;return t[0]!==n||t[1]!==a||t[2]!==e?(r=lu(e,a,n),t[0]=n,t[1]=a,t[2]=e,t[3]=r):r=t[3],r};function cu(t){return t.settingsProjectPath}function du(t){return t.projects}function uu(t){return t.activeProjectId}const _l=t=>t.trim(),Ba=t=>{const e=ut.c(40),{className:a}=t,{t:n}=tt(),r=Gs(pu),i=_s(),l=ie(mu),g=cs();let c;e[0]!==r?(c=[...r].sort(gu),e[0]=r,e[1]=c):c=e[1];const y=c;let p;e:{if(y.length===0){p=null;break e}let B;e[2]!==i||e[3]!==y?(B=y.find(k=>k.path===i)??y[0],e[2]=i,e[3]=y,e[4]=B):B=e[4],p=B}const b=p;if(g||y.length===0)return null;let d;e[5]!==b||e[6]!==n?(d=b?.label&&b.label.trim().length>0?b.label:b?.path.split("/").filter(Boolean).pop()||b?.path||n("settings.shared.projectSelector.fallbackProject"),e[5]=b,e[6]=n,e[7]=d):d=e[7];const P=d;let f;e[8]!==P?(f=_l(P),e[8]=P,e[9]=f):f=e[9];const C=f;let v;e[10]!==a?(v=xe(a),e[10]=a,e[11]=v):v=e[11];let N;e[12]!==n?(N=n("settings.shared.projectSelector.switchProjectAria"),e[12]=n,e[13]=N):N=e[13];let m;e[14]!==n?(m=n("settings.shared.projectSelector.switchProjectTitle"),e[14]=n,e[15]=m):m=e[15];let A,R;e[16]===Symbol.for("react.memo_cache_sentinel")?(A=xe("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-primary/50 focus-visible:border-primary/70","flex items-center gap-1.5 text-left"),R=s.jsx(O,{name:"folder",className:"h-4 w-4 opacity-70"}),e[16]=A,e[17]=R):(A=e[16],R=e[17]);let I;e[18]!==C?(I=s.jsx("span",{className:"min-w-0 flex-1 truncate typography-ui-label font-medium",children:C}),e[18]=C,e[19]=I):I=e[19];let j;e[20]===Symbol.for("react.memo_cache_sentinel")?(j=s.jsx(O,{name:"arrow-down-s",className:"size-4 opacity-50"}),e[20]=j):j=e[20];let h;e[21]!==I||e[22]!==N||e[23]!==m?(h=s.jsx(on,{asChild:!0,children:s.jsxs("button",{type:"button","aria-label":N,title:m,className:A,children:[R,I,j]})}),e[21]=I,e[22]=N,e[23]=m,e[24]=h):h=e[24];const w=b?.id??"";let F;e[25]!==l||e[26]!==y?(F=B=>{if(!B)return;const k=y.find(G=>G.id===B);k&&l(k.path)},e[25]=l,e[26]=y,e[27]=F):F=e[27];let T;e[28]!==y?(T=y.map(hu),e[28]=y,e[29]=T):T=e[29];let S;e[30]!==w||e[31]!==F||e[32]!==T?(S=s.jsx(ln,{align:"start",className:"w-auto",children:s.jsx(fc,{value:w,onValueChange:F,children:T})}),e[30]=w,e[31]=F,e[32]=T,e[33]=S):S=e[33];let D;e[34]!==h||e[35]!==S?(D=s.jsxs(cn,{children:[h,S]}),e[34]=h,e[35]=S,e[36]=D):D=e[36];let $;return e[37]!==D||e[38]!==v?($=s.jsx("div",{className:v,children:D}),e[37]=D,e[38]=v,e[39]=$):$=e[39],$};function pu(t){return t.projects}function mu(t){return t.setSettingsProjectPath}function gu(t,e){return(t.label||t.path).localeCompare(e.label||e.path)}function hu(t){const e=t.label?.trim()?t.label.trim():t.path.split("/").filter(Boolean).pop()||t.path,a=_l(e);return s.jsx(hc,{value:t.id,children:s.jsx("span",{className:"min-w-0 truncate typography-ui",children:a})},t.id)}function fu(t,e){return`opencode:sidebar-group:${t}:${e}`}const dr=t=>{const e=ut.c(33),{label:a,count:n,storageKey:r,defaultExpanded:i,children:l}=t,g=i===void 0?!0:i;let c;e[0]!==a||e[1]!==r?(c=fu(r,a),e[0]=a,e[1]=r,e[2]=c):c=e[2];const y=c,p=o.useId();let b;e[3]!==g||e[4]!==y?(b=()=>{try{const S=localStorage.getItem(y);if(S!==null)return S==="true"}catch{}return g},e[3]=g,e[4]=y,e[5]=b):b=e[5];const[d,P]=$e.useState(b);let f,C;e[6]!==d||e[7]!==y?(f=()=>{try{localStorage.setItem(y,String(d))}catch{}},C=[y,d],e[6]=d,e[7]=y,e[8]=f,e[9]=C):(f=e[8],C=e[9]),$e.useEffect(f,C);let v;e[10]===Symbol.for("react.memo_cache_sentinel")?(v=()=>P(xu),e[10]=v):v=e[10];let N;e[11]===Symbol.for("react.memo_cache_sentinel")?(N=xe("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-primary/50"),e[11]=N):N=e[11];const m=!d&&"-rotate-90";let A;e[12]!==m?(A=xe("h-3.5 w-3.5 flex-shrink-0 transition-transform duration-200",m),e[12]=m,e[13]=A):A=e[13];let R;e[14]!==A?(R=s.jsx(O,{name:"arrow-down-s",className:A}),e[14]=A,e[15]=R):R=e[15];let I;e[16]!==a?(I=s.jsx("span",{className:"flex-1 truncate",children:a}),e[16]=a,e[17]=I):I=e[17];let j;e[18]!==n?(j=s.jsx("span",{className:"ml-1 tabular-nums opacity-60",children:n}),e[18]=n,e[19]=j):j=e[19];let h;e[20]!==p||e[21]!==d||e[22]!==R||e[23]!==I||e[24]!==j?(h=s.jsxs("button",{type:"button",onClick:v,"aria-expanded":d,"aria-controls":p,className:N,children:[R,I,j]}),e[20]=p,e[21]=d,e[22]=R,e[23]=I,e[24]=j,e[25]=h):h=e[25];const w=!d;let F;e[26]!==l||e[27]!==p||e[28]!==w?(F=s.jsx("div",{id:p,hidden:w,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]=p,e[28]=w,e[29]=F):F=e[29];let T;return e[30]!==h||e[31]!==F?(T=s.jsxs("div",{children:[h,F]}),e[30]=h,e[31]=F,e[32]=T):T=e[32],T};function xu(t){return!t}const vu=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},yu=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())},po=t=>{const e=yu(vu(t));if(e.length===0)return;const a={};for(const r of e)r.permission&&((a[r.permission]||={})[r.pattern]=r.action);const n={};for(const[r,i]of Object.entries(a)){const l=Object.keys(i);if(l.length===1&&l[0]==="*"){n[r]=i["*"];continue}n[r]=i}return Object.keys(n).length>0?n:void 0},bu=({onItemSelect:t})=>{const{t:e}=tt(),[a,n]=o.useState(null),[r,i]=o.useState(""),[l,g]=o.useState(null),[c,y]=o.useState(null),[p,b]=o.useState(!1),[d,P]=o.useState(null),{selectedAgentName:f,setSelectedAgent:C,setAgentDraft:v,createAgent:N,deleteAgent:m,loadAgents:A}=Hn(Us(U=>({selectedAgentName:U.selectedAgentName,setSelectedAgent:U.setSelectedAgent,setAgentDraft:U.setAgentDraft,createAgent:U.createAgent,deleteAgent:U.deleteAgent,loadAgents:U.loadAgents}))),R=_s(),I=Hn(U=>fl(U,R));o.useEffect(()=>{A(R)},[A,R]);const j="bg-background",h=()=>{const U="new-agent";let le=U,_=1;for(;I.some(H=>H.name===le);)le=`${U}-${_}`,_++;v({name:le,scope:"user"}),C(le),t?.()},w=async U=>{if(ma(U)){E.error(e("settings.agents.sidebar.toast.builtInCannotDelete"));return}g(U),y("delete")},F=async U=>{ma(U)&&(g(U),y("reset"))},T=()=>{g(null),y(null)},S=async()=>{if(!(!l||!c)){b(!0);try{const U=await m(l.name,l.scope,R);U.ok?(U.requiresManualRestart?E.warning(e("settings.agents.page.toast.savedManualRestart")):U.restartDeferred?E.success(e("settings.view.pendingRestart.saved")):c==="delete"?E.success(e("settings.agents.sidebar.toast.agentDeleted",{name:l.name})):E.success(e("settings.agents.sidebar.toast.agentReset",{name:l.name})),T()):c==="delete"?E.error(e("settings.agents.sidebar.toast.deleteFailed")):E.error(e("settings.agents.sidebar.toast.resetFailed"))}catch(U){const le=U instanceof Error?U.message:"",_=/built-in|not deletable|not found/i.test(le);c==="delete"?E.error(e(_?"settings.agents.sidebar.toast.definitionNotFound":"settings.agents.sidebar.toast.deleteFailed")):E.error(e("settings.agents.sidebar.toast.resetFailed"))}b(!1)}},D=U=>{const le=U.name;let _=1,H=`${le}-copy`;for(;I.some(Y=>Y.name===H);)_++,H=`${le}-copy-${_}`;const z=U,K=U.model?.providerID&&U.model?.modelID?`${U.model.providerID}/${U.model.modelID}`:null,te=U;v({name:H,scope:z.scope||"user",description:U.description,model:K,variant:U.variant,temperature:U.temperature,top_p:U.topP,prompt:U.prompt,mode:U.mode,permission:po(U.permission),disable:te.disable}),C(H),t?.()},$=U=>{i(U.name),n(U)},B=async()=>{if(!a)return;const U=r.trim().replace(/\s+/g,"-");if(!U){E.error(e("settings.agents.sidebar.toast.agentNameRequired"));return}if(U===a.name){n(null);return}if(I.some(z=>z.name===U)){E.error(e("settings.agents.sidebar.toast.agentExists"));return}const le=a.model?.providerID&&a.model?.modelID?`${a.model.providerID}/${a.model.modelID}`:null,_=a,H=await N({name:U,description:a.description,model:le,variant:a.variant,temperature:a.temperature,top_p:a.topP,prompt:a.prompt,mode:a.mode,permission:po(a.permission),disable:_.disable,scope:_.scope},R);if(H.ok){const z=await m(a.name,_.scope,R);z.ok?(H.requiresManualRestart||z.requiresManualRestart?E.warning(e("settings.agents.page.toast.savedManualRestart")):E.success(e("settings.agents.sidebar.toast.agentRenamed",{name:U})),C(U)):E.error(e("settings.agents.sidebar.toast.removeOldAfterRenameFailed"))}else E.error(e("settings.agents.sidebar.toast.renameFailed"));n(null)},k=U=>{switch(U){case"primary":return s.jsx(O,{name:"ai-agent",className:"h-3 w-3 text-primary"});case"all":return s.jsx(O,{name:"ai-agent-fill",className:"h-3 w-3 text-primary"});case"subagent":return s.jsx(O,{name:"robot",className:"h-3 w-3 text-primary"});default:return null}},G=I.filter(U=>!xc(U)),M=G.filter(ma),L=G.filter(U=>!ma(U)),{groupedCustomAgents:J,ungroupedCustomAgents:ee}=$e.useMemo(()=>{const U={},le=[];for(const H of L){const z=H;z.group?(U[z.group]||(U[z.group]=[]),U[z.group].push(H)):le.push(H)}return{groupedCustomAgents:Object.keys(U).sort((H,z)=>H.localeCompare(z)).map(H=>({name:H,agents:U[H]})),ungroupedCustomAgents:le}},[L]);return s.jsxs("div",{className:xe("flex h-full flex-col",j),children:[s.jsxs("div",{className:"border-b px-3 pt-4 pb-3",children:[s.jsx("h2",{className:`${un} mb-3`,children:e("settings.agents.sidebar.title")}),s.jsx(Ba,{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:G.length})}),s.jsx(V,{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(O,{name:"add",className:"h-3.5 w-3.5"})})]})]}),s.jsx(vs,{outerClassName:"flex-1 min-h-0",className:"space-y-1 px-3 py-2 overflow-x-hidden",children:G.length===0?s.jsxs("div",{className:"py-12 px-4 text-center text-muted-foreground",children:[s.jsx(O,{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:[M.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")}),M.map(U=>s.jsx(Ji,{agent:U,isSelected:f===U.name,onSelect:()=>{C(U.name),t?.()},onReset:()=>F(U),onDuplicate:()=>D(U),getAgentModeIcon:k,isMenuOpen:d===U.name,onMenuOpenChange:le=>P(le?U.name:null)},U.name))]}),L.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")}),J.map(({name:U,agents:le})=>s.jsx(dr,{label:U,count:le.length,storageKey:"agents",children:le.map(_=>s.jsx(Ji,{agent:_,isSelected:f===_.name,onSelect:()=>{C(_.name),t?.()},onRename:()=>$(_),onDelete:()=>w(_),onDuplicate:()=>D(_),getAgentModeIcon:k,isMenuOpen:d===_.name,onMenuOpenChange:H=>P(H?_.name:null)},_.name))},U)),ee.map(U=>s.jsx(Ji,{agent:U,isSelected:f===U.name,onSelect:()=>{C(U.name),t?.()},onRename:()=>$(U),onDelete:()=>w(U),onDuplicate:()=>D(U),getAgentModeIcon:k,isMenuOpen:d===U.name,onMenuOpenChange:le=>P(le?U.name:null)},U.name))]})]})}),s.jsx(Kt,{open:l!==null&&c!==null,onOpenChange:U=>{!U&&!p&&T()},children:s.jsxs(zt,{className:"max-w-md",children:[s.jsxs(_t,{children:[s.jsx($t,{children:e(c==="delete"?"settings.agents.sidebar.dialog.deleteTitle":"settings.agents.sidebar.dialog.resetTitle")}),s.jsx(Vt,{children:c==="delete"?e("settings.agents.sidebar.dialog.deleteDescription",{name:l?.name??""}):e("settings.agents.sidebar.dialog.resetDescription",{name:l?.name??""})})]}),s.jsxs(ts,{children:[s.jsx(V,{size:"sm",variant:"ghost",onClick:T,disabled:p,children:e("settings.common.actions.cancel")}),s.jsx(V,{size:"sm",onClick:S,disabled:p,children:e(c==="delete"?"settings.common.actions.delete":"settings.common.actions.reset")})]})]})}),s.jsx(Kt,{open:a!==null,onOpenChange:U=>!U&&n(null),children:s.jsxs(zt,{children:[s.jsxs(_t,{children:[s.jsx($t,{children:e("settings.agents.sidebar.renameDialog.title")}),s.jsx(Vt,{children:e("settings.agents.sidebar.renameDialog.description",{name:a?.name??""})})]}),s.jsx(He,{value:r,onChange:U=>i(U.target.value),placeholder:e("settings.agents.sidebar.renameDialog.placeholder"),className:"text-foreground placeholder:text-muted-foreground",onKeyDown:U=>{U.key==="Enter"&&B()}}),s.jsxs(ts,{children:[s.jsx(V,{size:"sm",variant:"ghost",onClick:()=>n(null),children:e("settings.common.actions.cancel")}),s.jsx(V,{size:"sm",onClick:B,children:e("settings.common.actions.rename")})]})]})})]})},Ji=t=>{const e=ut.c(52),{agent:a,isSelected:n,onSelect:r,onDelete:i,onReset:l,onRename:g,onDuplicate:c,getAgentModeIcon:y,isMenuOpen:p,onMenuOpenChange:b}=t,{t:d}=tt(),P=a;let f;e[0]===Symbol.for("react.memo_cache_sentinel")?(f=_a(),e[0]=f):f=e[0];const C=f,[v,N]=o.useState(!1);let m;e[1]!==i||e[2]!==c||e[3]!==g||e[4]!==l||e[5]!==d?(m=le=>s.jsxs(s.Fragment,{children:[g&&s.jsxs(le,{onClick:_=>{_.stopPropagation(),g()},children:[s.jsx(O,{name:"edit",className:"h-4 w-4 mr-px"}),d("settings.common.actions.rename")]}),s.jsxs(le,{onClick:_=>{_.stopPropagation(),c()},children:[s.jsx(O,{name:"file-copy",className:"h-4 w-4 mr-px"}),d("settings.common.actions.duplicate")]}),l&&s.jsxs(le,{onClick:_=>{_.stopPropagation(),l()},children:[s.jsx(O,{name:"restart",className:"h-4 w-4 mr-px"}),d("settings.common.actions.reset")]}),i&&s.jsxs(le,{onClick:_=>{_.stopPropagation(),i()},className:"text-destructive focus:text-destructive",children:[s.jsx(O,{name:"delete-bin",className:"h-4 w-4 mr-px"}),d("settings.common.actions.delete")]})]}),e[1]=i,e[2]=c,e[3]=g,e[4]=l,e[5]=d,e[6]=m):m=e[6];const A=m,R=n?"bg-interactive-selection":"hover:bg-interactive-hover";let I;e[7]!==R?(I=xe("group relative flex items-center rounded-md px-1.5 py-1 transition-all duration-200 select-none",R),e[7]=R,e[8]=I):I=e[8];let j;e[9]===Symbol.for("react.memo_cache_sentinel")?(j=C?void 0:le=>{le.preventDefault(),N(!0)},e[9]=j):j=e[9];let h;e[10]!==I?(h=s.jsx("div",{className:I,onContextMenu:j}),e[10]=I,e[11]=h):h=e[11];let w;e[12]!==a.name?(w=s.jsx("span",{className:"typography-ui-label font-normal truncate text-foreground",children:a.name}),e[12]=a.name,e[13]=w):w=e[13];let F;e[14]!==a.mode||e[15]!==y?(F=y(a.mode),e[14]=a.mode,e[15]=y,e[16]=F):F=e[16];let T;e[17]!==a||e[18]!==P.scope||e[19]!==d?(T=(P.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)?d("settings.agents.sidebar.badge.system"):P.scope}),e[17]=a,e[18]=P.scope,e[19]=d,e[20]=T):T=e[20];let S;e[21]!==w||e[22]!==F||e[23]!==T?(S=s.jsxs("div",{className:"flex items-center gap-1.5",children:[w,F,T]}),e[21]=w,e[22]=F,e[23]=T,e[24]=S):S=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 $;e[27]!==r||e[28]!==S||e[29]!==D?($=s.jsxs("button",{onClick:r,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-primary/50",tabIndex:0,children:[S,D]}),e[27]=r,e[28]=S,e[29]=D,e[30]=$):$=e[30];let B;e[31]!==b?(B=le=>{le&&N(!1),b(le)},e[31]=b,e[32]=B):B=e[32];let k;e[33]===Symbol.for("react.memo_cache_sentinel")?(k=s.jsx(on,{asChild:!0,children:s.jsx(V,{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(O,{name:"more-2",className:"h-3.5 w-3.5"})})}),e[33]=k):k=e[33];let G;e[34]!==A?(G=s.jsx(ln,{align:"end",className:"w-fit min-w-20",children:A(dn)}),e[34]=A,e[35]=G):G=e[35];let M;e[36]!==p||e[37]!==B||e[38]!==G?(M=s.jsxs(cn,{open:p,onOpenChange:B,children:[k,G]}),e[36]=p,e[37]=B,e[38]=G,e[39]=M):M=e[39];let L;e[40]!==$||e[41]!==M?(L=s.jsxs("div",{className:"flex min-w-0 flex-1 items-center",children:[$,M]}),e[40]=$,e[41]=M,e[42]=L):L=e[42];let J;e[43]!==L||e[44]!==h?(J=s.jsx(Jn,{render:h,children:L}),e[43]=L,e[44]=h,e[45]=J):J=e[45];let ee;e[46]!==A?(ee=s.jsx(Wn,{className:"w-fit min-w-20",children:A(qn)}),e[46]=A,e[47]=ee):ee=e[47];let U;return e[48]!==v||e[49]!==J||e[50]!==ee?(U=s.jsxs(Qn,{open:v,onOpenChange:N,children:[J,ee]}),e[48]=v,e[49]=J,e[50]=ee,e[51]=U):U=e[51],U},es=t=>{const e=ut.c(21),{children:a,className:n,outerClassName:r,title:i,titleLeading:l,titleAccessory:g,description:c,headerEnd:y,showSaveStatus:p}=t,b=p===void 0?!1:p,d=i!=null||c!=null||y!=null||b,P=typeof i=="string"||typeof i=="number",f=l!=null||g!=null;let C;e[0]!==r?(C=xe("h-full",r),e[0]=r,e[1]=C):C=e[1];let v;e[2]!==n?(v=xe("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]=v):v=e[3];let N;e[4]!==c||e[5]!==d||e[6]!==f||e[7]!==y||e[8]!==P||e[9]!==b||e[10]!==i||e[11]!==g||e[12]!==l?(N=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:[i!=null?P?f?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:xe(lr,"min-w-0 truncate"),children:i}),s.jsx("span",{className:"shrink-0",children:g})]}):s.jsx("h1",{"data-settings-page-heading":!0,tabIndex:-1,className:lr,children:i}):i:null,c!=null?typeof c=="string"||typeof c=="number"?s.jsx("p",{className:vc,children:c}):c:null]}),s.jsxs("div",{className:"flex shrink-0 flex-wrap items-center justify-end gap-3",children:[y,b&&s.jsx(ju,{})]})]}),e[4]=c,e[5]=d,e[6]=f,e[7]=y,e[8]=P,e[9]=b,e[10]=i,e[11]=g,e[12]=l,e[13]=N):N=e[13];let m;e[14]!==a||e[15]!==v||e[16]!==N?(m=s.jsxs("div",{className:v,children:[N,a]}),e[14]=a,e[15]=v,e[16]=N,e[17]=m):m=e[17];let A;return e[18]!==C||e[19]!==m?(A=s.jsx(vs,{outerClassName:C,className:"w-full @container",children:m}),e[18]=C,e[19]=m,e[20]=A):A=e[20],A},wu=500,ju=()=>{const t=ut.c(13),{t:e}=tt(),a=o.useSyncExternalStore(hd,Wr,Wr),[n,r]=o.useState(!1);let i,l;if(t[0]!==a?(i=()=>{if(a!=="saving"){r(!1);return}const p=setTimeout(()=>r(!0),wu);return()=>clearTimeout(p)},l=[a],t[0]=a,t[1]=i,t[2]=l):(i=t[1],l=t[2]),o.useEffect(i,l),a==="error"){let p;t[3]===Symbol.for("react.memo_cache_sentinel")?(p=s.jsx(O,{name:"error-warning",className:"size-3.5"}),t[3]=p):p=t[3];let b;t[4]!==e?(b=e("settings.common.status.saveFailed"),t[4]=e,t[5]=b):b=t[5];let d;return t[6]!==b?(d=s.jsxs("div",{"aria-live":"assertive",className:"flex shrink-0 items-center gap-1.5 typography-meta text-[var(--status-error)]",children:[p,s.jsx("span",{children:b})]}),t[6]=b,t[7]=d):d=t[7],d}if(a!=="saving"||!n)return null;let g;t[8]===Symbol.for("react.memo_cache_sentinel")?(g=s.jsx(O,{name:"loader-4",className:"size-3.5 animate-spin"}),t[8]=g):g=t[8];let c;t[9]!==e?(c=e("settings.common.actions.saving"),t[9]=e,t[10]=c):c=t[10];let y;return t[11]!==c?(y=s.jsxs("div",{"aria-live":"polite",className:"flex shrink-0 items-center gap-1.5 typography-meta text-muted-foreground",children:[g,s.jsx("span",{children:c})]}),t[11]=c,t[12]=y):y=t[12],y},ku=["allow","ask","deny"],Oa=t=>t==="allow"||t==="ask"||t==="deny",ur=()=>({global:null,keys:{}}),Nu=t=>{const e=ur();if(t==null)return e;if(typeof t=="string")return Oa(t)&&(e.global=t),e;if(typeof t!="object"||Array.isArray(t))return e;for(const[a,n]of Object.entries(t)){if(a==="*"){Oa(n)&&(e.global=n);continue}const r={action:null,patterns:[]};if(Oa(n))r.action=n;else if(n&&typeof n=="object"&&!Array.isArray(n))for(const[i,l]of Object.entries(n))Oa(l)&&(i==="*"?r.action=l:r.patterns.push({pattern:i,action:l}));else continue;e.keys[a]=r}return e},pr=t=>{const e={};t.global!==null&&(e["*"]=t.global);for(const[a,n]of Object.entries(t.keys)){const r=n.patterns.filter(i=>i.pattern.trim().length>0);if(n.action!==null&&r.length===0)e[a]=n.action;else if(r.length>0){const i={};n.action!==null&&(i["*"]=n.action);for(const l of r)i[l.pattern]=l.action;e[a]=i}}return Object.keys(e).length>0?e:null},Su=(t,e)=>JSON.stringify(pr(t))===JSON.stringify(pr(e)),jn=t=>JSON.parse(JSON.stringify(t)),Cu=["edit","external_directory","doom_loop","plan_enter","plan_exit"],Iu=new Set(["read","edit","glob","grep","list","bash","task","external_directory","lsp","skill"]),mo=new Set(["write","patch","apply_patch","multiedit","invalid"]),Pu=t=>t.split(/[_-]/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),Au=({agent:t})=>{const{t:e}=tt(),a=Hn(z=>z.updateAgent),[n,r]=o.useState(ur),[i,l]=o.useState(ur),[g,c]=o.useState(!0),[y,p]=o.useState(!1),[b,d]=o.useState(!1),[P,f]=o.useState({}),[C,v]=o.useState([]),[N,m]=o.useState(""),[A,R]=o.useState(0),I=t.name,j=_s();o.useEffect(()=>{let z=!1;return c(!0),p(!1),(async()=>{try{const K=j,te=K?`?directory=${encodeURIComponent(K)}`:"",Y=await yt(`/api/config/agents/${encodeURIComponent(I)}/config${te}`,{headers:{"Cache-Control":"no-cache",...K?{"x-opencode-directory":K}:{}}});if(!Y.ok)throw new Error(String(Y.status));const ae=await Y.json().catch(()=>null);if(z)return;const ge=Nu(ae?.config?.permission);r(jn(ge)),l(ge)}catch{z||p(!0)}finally{z||c(!1)}})(),()=>{z=!0}},[I,A,j]),o.useEffect(()=>{let z=!1;return(async()=>{try{const K=await fn.listToolIds({directory:j});!z&&Array.isArray(K)&&v(K.filter(te=>typeof te=="string"&&!mo.has(te)))}catch{}})(),()=>{z=!0}},[I,j]);const h=o.useMemo(()=>{const z=t.permission;if(!Array.isArray(z))return[];const K=[];for(const te of z){if(!te||typeof te!="object")continue;const{permission:Y,pattern:ae,action:ge}=te;typeof Y=="string"&&typeof ae=="string"&&Oa(ge)&&K.push({permission:Y,pattern:ae,action:ge})}return K},[t]),w=o.useCallback(z=>{const K=h.find(Y=>Y.permission===z&&Y.pattern==="*");if(K)return K.action;const te=h.find(Y=>Y.permission==="*"&&Y.pattern==="*");return te?te.action:null},[h]),F=o.useCallback(z=>{const K=i.keys[z]?.patterns??[],te=new Set(K.map(Y=>Y.pattern));return h.filter(Y=>Y.permission===z&&Y.pattern!=="*"&&!te.has(Y.pattern))},[h,i.keys]),T=o.useMemo(()=>{const z=new Set;for(const K of C)z.add(K);for(const K of Cu)z.add(K);for(const K of Object.keys(i.keys))z.add(K);for(const K of mo)z.delete(K);return Array.from(z).sort((K,te)=>K.localeCompare(te))},[C,i.keys]),S=o.useMemo(()=>!Su(i,n),[i,n]),D=z=>{l(K=>({...K,global:z}))},$=(z,K)=>{l(te=>{const Y=jn(te),ae=Y.keys[z]??{action:null,patterns:[]};return ae.action=K,ae.action===null&&ae.patterns.length===0?delete Y.keys[z]:Y.keys[z]=ae,Y})},B=(z,K,te,Y)=>{l(ae=>{const ge=jn(ae),de=ge.keys[z]??{action:null,patterns:[]};return de.patterns[K]={pattern:te,action:Y},ge.keys[z]=de,ge})},k=z=>{l(K=>{const te=jn(K),Y=te.keys[z]??{action:null,patterns:[]};return Y.patterns.push({pattern:"",action:"allow"}),te.keys[z]=Y,te}),f(K=>({...K,[z]:!0}))},G=(z,K)=>{l(te=>{const Y=jn(te),ae=Y.keys[z];return ae?(ae.patterns.splice(K,1),ae.action===null&&ae.patterns.length===0&&delete Y.keys[z],Y):te})},M=()=>{const z=N.trim();!z||z==="*"||(l(K=>{if(K.keys[z])return K;const te=jn(K);return te.keys[z]={action:"ask",patterns:[]},te}),f(K=>({...K,[z]:!0})),m(""))},L=async()=>{d(!0);try{const z=pr(i),K=await a(I,{permission:z});K.ok?(r(jn(i)),E.success(K.requiresManualRestart?e("settings.agents.page.permissionsEditor.toast.savedRestartRequired"):e("settings.agents.page.permissionsEditor.toast.saved"))):E.error(e("settings.agents.page.permissionsEditor.toast.saveFailed"))}finally{d(!1)}},J=()=>{l(jn(n))},ee=z=>e(z==="allow"?"settings.agents.page.permissionsEditor.action.allow":z==="ask"?"settings.agents.page.permissionsEditor.action.ask":"settings.agents.page.permissionsEditor.action.deny"),U=e("settings.agents.page.permissionsEditor.action.inherit"),le=e("settings.agents.page.permissionsEditor.action.default"),_=z=>[...z?[{value:"inherit",label:z}]:[],...ku.map(K=>({value:K,label:ee(K)}))],H=(z,K,te,Y=U)=>s.jsx(Ys,{value:z??"inherit",options:_(Y),onChange:ae=>K(ae==="inherit"?null:ae),"aria-label":te});return g?s.jsx(ze,{title:e("settings.agents.page.section.toolPermissions"),children:s.jsx("p",{className:zn,children:e("common.loading")})}):y?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(V,{variant:"outline",size:"xs",onClick:()=>R(z=>z+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:S?s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(V,{variant:"ghost",size:"xs",className:"!font-normal",onClick:J,disabled:b,children:e("settings.agents.page.permissionsEditor.actions.discard")}),s.jsx(V,{size:"xs",className:"!font-normal",onClick:()=>{L()},disabled:b,children:e(b?"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:Tt,children:e("settings.agents.page.permissionsEditor.defaultLabel")}),s.jsx(Jt,{children:e("settings.agents.page.permissionsEditor.defaultInfo")}),i.global===null&&s.jsx("span",{className:"typography-micro text-muted-foreground",children:e("settings.agents.page.permissionsEditor.effectiveHint",{action:ee(w("*")??"allow")})})]}),H(i.global,D,e("settings.agents.page.permissionsEditor.defaultAria"),le)]}),s.jsx("div",{children:T.map(z=>{const K=i.keys[z]??{action:null,patterns:[]},te=F(z),Y=Iu.has(z)||K.patterns.length>0,ae=Y||te.length>0,ge=P[z]===!0,de=w(z);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:ae?()=>f(he=>({...he,[z]:!ge})):void 0,className:xe("flex min-w-0 items-center gap-1.5 text-left",!ae&&"cursor-default"),"aria-expanded":ae?ge:void 0,children:[s.jsx(O,{name:ge&&ae?"arrow-down-s":"arrow-right-s",className:xe("h-3.5 w-3.5 shrink-0 text-muted-foreground",!ae&&"opacity-0")}),s.jsx("span",{className:Tt,children:Pu(z)}),s.jsx("span",{className:"typography-micro font-mono text-muted-foreground/70",children:z}),K.action===null&&de!==null&&s.jsx("span",{className:"typography-micro text-muted-foreground",children:e("settings.agents.page.permissionsEditor.effectiveHint",{action:ee(de)})}),K.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(K.patterns.length)})})]}),H(K.action,he=>$(z,he),e("settings.agents.page.permissionsEditor.keyAria",{key:z}))]}),ge&&ae&&s.jsxs("div",{className:"mt-2 space-y-2 pl-5",children:[K.patterns.map((he,se)=>s.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[s.jsx(He,{value:he.pattern,onChange:re=>B(z,se,re.target.value,he.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(Ys,{value:he.action,options:_(),onChange:re=>B(z,se,he.pattern,re),"aria-label":e("settings.agents.page.permissionsEditor.patternActionAria",{key:z})}),s.jsx(V,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0 text-muted-foreground hover:bg-destructive/10 hover:text-destructive",onClick:()=>G(z,se),"aria-label":e("settings.agents.page.permissionsEditor.actions.removeRuleAria"),children:s.jsx(O,{name:"close",className:"h-3.5 w-3.5"})})]},se)),Y&&s.jsxs(V,{variant:"outline",size:"xs",className:"!font-normal",onClick:()=>k(z),children:[s.jsx(O,{name:"add",className:"mr-1 h-3.5 w-3.5"}),e("settings.agents.page.permissionsEditor.actions.addRule")]}),te.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(Jt,{children:e("settings.agents.page.permissionsEditor.sessionRulesInfo")})]}),te.map(he=>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:he.pattern}),s.jsx("span",{className:"typography-micro text-muted-foreground",children:ee(he.action)})]},`${he.pattern}-${he.action}`))]})]})]},z)})}),s.jsxs("div",{className:"flex flex-wrap items-center gap-2 border-t border-border/40 pt-3",children:[s.jsx(He,{value:N,onChange:z=>m(z.target.value),onKeyDown:z=>{z.key==="Enter"&&(z.preventDefault(),M())},placeholder:e("settings.agents.page.permissionsEditor.customKeyPlaceholder"),className:"h-8 w-full max-w-[16rem] font-mono text-xs"}),s.jsxs(V,{variant:"outline",size:"xs",className:"!font-normal",onClick:M,disabled:!N.trim(),children:[s.jsx(O,{name:"add",className:"mr-1 h-3.5 w-3.5"}),e("settings.agents.page.permissionsEditor.actions.addKey")]})]})]})},Tu=(t,e)=>{const a=xa(e);if(!a)return[];const r=t.find(i=>i.id===a.providerId)?.models?.find(i=>i.id===a.modelId);return r?.variants?Object.keys(r.variants):[]},Eu=()=>{const{t}=tt(),e=Ye(H=>H.providers),{selectedAgentName:a,getAgentByName:n,createAgent:r,updateAgent:i,agentDraft:l,setAgentDraft:g}=Hn(Us(H=>({selectedAgentName:H.selectedAgentName,getAgentByName:H.getAgentByName,createAgent:H.createAgent,updateAgent:H.updateAgent,agentDraft:H.agentDraft,setAgentDraft:H.setAgentDraft}))),c=_s(),y=Hn(H=>fl(H,c)),p=a?n(a,c):null,b=!!(l&&l.name===a&&!p),[d,P]=o.useState(""),[f,C]=o.useState("user"),[v,N]=o.useState(""),[m,A]=o.useState("subagent"),[R,I]=o.useState(""),[j,h]=o.useState(""),[w,F]=o.useState(void 0),[T,S]=o.useState(void 0),[D,$]=o.useState(""),[B,k]=o.useState(!1),G=o.useRef(null),M=o.useMemo(()=>Tu(e,R),[R,e]),L=M.length>0,J=j||"__default",ee=L,U=o.useMemo(()=>j&&!M.includes(j)?[j,...M]:M,[j,M]);o.useEffect(()=>{if(b&&l){const H=l.name||"",z=l.scope||"user",K=l.description||"",te=l.mode||"subagent",Y=l.model||"",ae=l.variant||"",ge=l.temperature??void 0,de=l.top_p??void 0,he=l.prompt||"";P(H),C(z),N(K),A(te),I(Y),h(ae),F(ge),S(de),$(he),G.current={draftName:H,draftScope:z,description:K,mode:te,model:Y,variant:ae,temperature:ge,topP:de,prompt:he};return}if(p&&a===p.name){const H=p.description||"",z=p.mode||"subagent",K=p.model?.providerID&&p.model?.modelID?`${p.model.providerID}/${p.model.modelID}`:"",te=p.variant||"",Y=p.temperature??void 0,ae=p.topP??void 0,ge=p.prompt||"";N(H),A(z),I(K),h(te),F(Y),S(ae),$(ge),G.current={draftName:"",draftScope:"user",description:H,mode:z,model:K,variant:te,temperature:Y,topP:ae,prompt:ge}}},[l,b,p,a]);const le=o.useMemo(()=>{const H=G.current;return H?!!(b&&(d!==H.draftName||f!==H.draftScope)||v!==H.description||m!==H.mode||R!==H.model||j!==H.variant||w!==H.temperature||T!==H.topP||D!==H.prompt):!1},[v,d,f,b,m,R,D,w,T,j]),_=async()=>{const H=b?d.trim().replace(/\s+/g,"-"):a?.trim();if(!H){E.error(t("settings.agents.sidebar.toast.agentNameRequired"));return}if(b&&y.some(z=>z.name===H)){E.error(t("settings.agents.sidebar.toast.agentExists"));return}k(!0);try{const z=R.trim(),K=j.trim(),te=D.trim(),Y={name:H,...v.trim()?{description:v.trim()}:{},mode:m,model:z===""?null:z,variant:K===""?null:K||void 0,temperature:w??null,top_p:T??null,prompt:te||(b?void 0:null),...b&&f?{scope:f}:{}};let ae;b?(ae=await r(Y,c),ae.ok&&g(null)):ae=await i(H,Y,c),ae.ok?ae.requiresManualRestart?E.warning(t("settings.agents.page.toast.savedManualRestart")):ae.restartDeferred?E.success(t("settings.view.pendingRestart.saved")):E.success(t(b?"settings.agents.page.toast.created":"settings.agents.page.toast.updated")):E.error(t(b?"settings.agents.page.toast.createFailed":"settings.agents.page.toast.updateFailed"))}catch(z){console.error("Error saving agent:",z);const K=z instanceof Error&&z.message?z.message:t("settings.agents.page.toast.saveUnexpectedError");E.error(K)}finally{k(!1)}};return a?s.jsxs(es,{title:b?t("settings.agents.page.title.new"):a,description:t(b?"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:[b&&s.jsxs(Rt,{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(He,{value:d,onChange:H=>P(H.target.value),placeholder:t("settings.agents.page.field.agentNamePlaceholder"),className:"h-7 w-40 px-2"})]}),s.jsxs(St,{value:f,onValueChange:H=>C(H),children:[s.jsx(Ct,{size:Ft,className:"w-fit min-w-[100px]",children:s.jsx(Mt,{placeholder:t("settings.agents.page.field.scopePlaceholder")})}),s.jsxs(It,{align:"end",children:[s.jsx(at,{value:"user",children:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(O,{name:"user-3",className:"h-3.5 w-3.5"}),s.jsx("span",{children:t("settings.common.scope.global")})]})}),s.jsx(at,{value:"project",children:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(O,{name:"folder",className:"h-3.5 w-3.5"}),s.jsx("span",{children:t("settings.common.scope.project")})]})})]})]})]}),s.jsx(qt,{label:t("settings.common.field.description"),controlClassName:"w-full max-w-none",children:s.jsx(Ts,{value:v,onChange:H=>N(H.target.value),placeholder:t("settings.agents.page.field.descriptionPlaceholder"),rows:2,className:"w-full resize-none min-h-[60px] bg-transparent"})}),s.jsx(qt,{settingsItem:"agents.mode",label:t("settings.agents.page.field.mode"),info:t("settings.agents.page.field.modeTooltip"),children:s.jsx(Ys,{"aria-label":t("settings.agents.page.field.mode"),value:m,onChange:A,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(Rt,{settingsItem:"agents.model",label:t("settings.agents.page.field.overrideModel"),children:s.jsx(Fa,{providerId:xa(R)?.providerId??"",modelId:xa(R)?.modelId??"",onChange:(H,z)=>{I(H&&z?`${H}/${z}`:""),h("")},className:In})}),s.jsx(Rt,{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(St,{value:J,onValueChange:H=>h(H==="__default"?"":H),children:[s.jsx(Ct,{size:Ft,className:rn,children:s.jsx(Mt,{placeholder:t("settings.agents.page.field.variantPlaceholder"),children:H=>H==="__default"?t("chat.modelControls.default"):H})}),s.jsxs(It,{children:[s.jsx(at,{value:"__default",children:t("chat.modelControls.default")}),U.map(H=>s.jsx(at,{value:H,children:H},H))]})]}):s.jsxs(s.Fragment,{children:[s.jsx(He,{value:j,onChange:H=>h(H.target.value),placeholder:t("settings.agents.page.field.variantPlaceholder"),disabled:!R&&!j,className:"h-8 w-40 rounded-md px-3"}),j&&s.jsx(V,{size:"sm",type:"button",variant:"ghost",onClick:()=>h(""),className:Cs,"aria-label":t("settings.common.actions.clear"),title:t("settings.common.actions.clear"),children:s.jsx(O,{name:"close",className:"h-3.5 w-3.5"})})]})}),s.jsxs(Rt,{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(xs,{value:w,fallbackValue:.7,onValueChange:F,onClear:()=>F(void 0),min:0,max:2,step:.1,inputMode:"decimal",placeholder:"—",emptyLabel:"—",className:Ps}),w!==void 0&&s.jsx(V,{size:"sm",type:"button",variant:"ghost",onClick:()=>F(void 0),className:Cs,"aria-label":t("settings.agents.page.field.clearTemperatureAria"),title:t("settings.common.actions.clear"),children:s.jsx(O,{name:"close",className:"h-3.5 w-3.5"})})]}),s.jsxs(Rt,{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(xs,{value:T,fallbackValue:.9,onValueChange:S,onClear:()=>S(void 0),min:0,max:1,step:.1,inputMode:"decimal",placeholder:"—",emptyLabel:"—",className:Ps}),T!==void 0&&s.jsx(V,{size:"sm",type:"button",variant:"ghost",onClick:()=>S(void 0),className:Cs,"aria-label":t("settings.agents.page.field.clearTopPAria"),title:t("settings.common.actions.clear"),children:s.jsx(O,{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(Ts,{value:D,onChange:H=>$(H.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"})}),!b&&p&&s.jsx(Au,{agent:p}),s.jsx("div",{className:"pb-8",children:s.jsx(V,{onClick:_,disabled:B||!le,size:"xs",className:"!font-normal",children:t(B?"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(O,{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")})]})})},Du=Xd({content:ao(),exists:eu(),path:ao().min(1).optional()}),Mu=async(t,e)=>{const a=await t.json().catch(()=>null);return typeof a?.error=="string"&&a.error.trim()?a.error:e},Ru=t=>t.length>0&&!t.endsWith(`
|
|
1
|
+
import{R as o,j as s,f as ut,r as $e}from"./vendor-react-BUCujlKS.js";import{f as tt,B as V,I as O,o as Pn,bd as wa,t as E,O as mc,g1 as gc,eF as ze,g2 as Tt,b as Gs,h as xe,at as hc,ap as on,ar as ln,as as fc,ao as cn,ev as Hn,g3 as fl,g4 as xc,g5 as ma,g6 as un,bT as vs,bN as Kt,bO as zt,bP as _t,bQ as $t,bR as Vt,bS as ts,V as He,g7 as _a,bb as dn,ei as lr,g8 as vc,g9 as zn,eK as Jt,ga as Ys,l as Ye,eY as Rt,c2 as St,c3 as Ct,eV as Ft,c4 as Mt,c5 as It,c6 as at,gb as qt,c7 as Ts,dG as Fa,eX as In,e_ as xa,eZ as rn,gc as Cs,dL as xs,gd as Ps,ge as yc,cy as dt,gf as xl,gg as bc,gh as $n,gi as vl,gj as wc,gk as va,fD as Hs,gl as ha,gm as yl,gn as wr,dH as bl,go as Vn,a8 as ya,a7 as Ks,gp as wl,gq as Kr,ad as jc,eg as jl,g as Ka,gr as kc,gs as Zs,b$ as An,ca as Tn,c0 as En,ef as Nc,gt as Sc,gu as Cc,gv as jr,a9 as kr,aa as Nr,ab as kl,gw as hn,a3 as ki,bo as Sr,R as Cr,gx as zr,au as Ic,c8 as Pc,cO as Ac,T as Tc,S as Ec,U as Dc,Y as Nl,gy as Mc,gz as Rc,bZ as Lc,c9 as cr,gA as Sl,ac as xi,gB as Cl,P as Un,gC as Qs,eE as zs,eo as Il,a2 as Oc,n as Zt,ea as Ni,x as Pl,w as Fc,i as Kc,j as zc,eb as Uc,p as _c,gD as $c,gE as Vc,gF as Ur,dM as Al,gG as Bc,gH as Hi,gI as _r,gJ as Hc,gK as Gc,gL as Wc,gM as qc,dS as Si,gN as fs,gO as Ss,gP as Js,gQ as Bs,aB as Cn,aC as oa,gR as Sn,eU as bn,gS as ba,gT as $r,gU as la,gV as ca,bK as Gn,gW as Jc,gX as Qc,gY as Yc,gZ as Zc,g_ as Gi,g$ as Vr,h0 as Xc,h1 as ed,h2 as td,h3 as sd,h4 as Br,y as nd,m as Hr,d0 as ad,h5 as id,h6 as Wi,h7 as Gr,ed as rd,h8 as Ii,h9 as od,ha as ld,hb as cd,hc as dd,hd as ud,he as qi,cz as pd,bL as Tl,hf as El,hg as md,ax as wn,ay as gd}from"./useAppFontEffects-B6OfEypo.js";import{h as yt,u as ie,K as cs,d9 as hd,da as Wr,A as fn,aB as pn,q as gt,a2 as fd,D as as,Q as qr,cr as Jr,cy as Qr,V as Ia,p as xd,db as vd,k as yd,cq as ua,dc as bd,ak as wd,cv as jd,dd as kd,de as Nd,s as Sd,e as $a,cw as Cd,E as Va,df as Dl,$ as Id,dg as Pd,v as fa,aA as ga,c$ as Ad,_ as Td,aM as Yr,a$ as ai,aN as Ed,dh as Dd,aa as Bn,di as Md,z as Ml,dj as Zr,d8 as Xr,dk as eo,aK as to,dl as Rd,dm as Ld,dn as Od,dp as Fd,dq as so,b as Kd,aH as Rl,dr as Ll,ds as zd,dt as Ud,du as _d,dv as $d,dw as Vd,dx as Bd,av as Hd,i as Ol}from"./index-BD8ILbxF.js";import{u as Gd,U as no,K as Wn,M as qn,Q as Jn,R as Qn,f as Ir,a6 as _n,X as Wd,n as As,a4 as qd,a7 as pa,a8 as Fl,V as Jd,W as Qd}from"./runtimeEndpointReset-BLzrtrmj.js";import{u as Us,c as Kl,d as Yd,p as Zd}from"./vendor-zustand-BAGL70zf.js";import{o as Xd,s as ao,b as eu}from"./vendor-zod-B6551dwG.js";import{s as tu,p as su}from"./vendor-yaml-3778uTud.js";import{c as io,s as nu,C as ro,P as au}from"./shikiHighlight-ctlcPvvx.js";import{getResolvedShikiTheme as iu}from"./appThemeRegistry-BK0dHKa6.js";import{E as oo}from"./vendor-codemirror-view-CiLROUVV.js";import{Q as zl}from"./vendor-qrcode-DTJ12-WC.js";const lo=()=>{const{t}=tt(),[e,a]=o.useState(null);o.useEffect(()=>{let r=!1;const i=typeof AbortController<"u"?new AbortController:void 0;return(async()=>{try{const g=await yt("/api/system/info",{signal:i?.signal,headers:{Accept:"application/json"}});if(!g.ok)return;const c=await g.json().catch(()=>null);if(!c||r)return;const y=typeof c.port=="number"&&Number.isFinite(c.port)&&c.port>0?c.port:null,p=typeof c.tunnelUrl=="string"&&c.tunnelUrl.trim().length>0?c.tunnelUrl.trim():null;a({port:y,tunnelUrl:p})}catch{}})(),()=>{r=!0,i?.abort()}},[]);const n=[];return e?.port!==null&&e?.port!==void 0&&n.push({key:"application",label:t("settings.aiworker.about.field.applicationUrl"),url:`http://localhost:${e.port}/`}),e?.tunnelUrl&&n.push({key:"tunnel",label:t("settings.aiworker.about.field.tunnelUrl"),url:e.tunnelUrl}),n.length===0?null:s.jsx("div",{className:"flex flex-wrap items-center gap-2",children:n.map(r=>s.jsxs(V,{type:"button",variant:"outline",size:"sm",title:r.label,className:"max-w-full gap-1.5 px-2.5",onClick:()=>{Pn(r.url)},children:[s.jsx(O,{name:"external-link",className:"size-3.5 shrink-0"}),s.jsx("span",{className:"max-w-64 truncate font-mono typography-micro",children:r.url})]},r.key))})},co="https://roweb.cn/roweb/openchamber",ru="https://discord.gg/ZYRSdnwwKA",uo="https://x.com/openchamber_dev",ou=800,Ul=({initialUpdateDialogOpen:t=!1})=>{const{t:e}=tt(),[a,n]=o.useState(t),[r,i]=o.useState(!1),[l,g]=o.useState(null),[c,y]=o.useState(null),p=Gd(Us(C=>({info:C.info,checking:C.checking,available:C.available,error:C.error,downloading:C.downloading,downloaded:C.downloaded,progress:C.progress,runtimeType:C.runtimeType,checkForUpdates:C.checkForUpdates,downloadUpdate:C.downloadUpdate,restartToUpdate:C.restartToUpdate}))),{isMobile:b}=wa(),d=l||p.info?.currentVersion||"unknown";o.useEffect(()=>{let C=!1;return(async()=>{try{const N=await yt("/api/system/info",{method:"GET",headers:{Accept:"application/json"}});if(!N.ok)return;const m=await N.json().catch(()=>null),A=typeof m?.aiworkerVersion=="string"&&m.aiworkerVersion.trim().length>0?m.aiworkerVersion.trim():null;C||g(A)}catch{C||g(null)}})(),()=>{C=!0}},[]),o.useEffect(()=>{let C=!1;return(async()=>{try{const N=await yt("/api/opencode/upgrade-status",{method:"GET",headers:{Accept:"application/json"}});if(!N.ok)return;const m=await N.json().catch(()=>null),A=typeof m?.currentVersion=="string"&&m.currentVersion.trim().length>0?m.currentVersion.trim():null;C||y(A)}catch{C||y(null)}})(),()=>{C=!0}},[]);const P=o.useRef(!1);o.useEffect(()=>{if(p.checking)i(!0),P.current=!0;else if(r){const C=setTimeout(()=>{i(!1),P.current&&!p.available&&!p.error&&(E.success(e("settings.aiworker.about.toast.latestVersion")),P.current=!1)},ou);return()=>clearTimeout(C)}},[e,p.checking,r,p.available,p.error]);const f=p.checking||r;return b?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(mc,{width:72,height:72}),s.jsx("h2",{className:`mt-4 ${gc}`,children:"AiWorker"}),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.aiworker.about.state.unknown")})})]}),s.jsx(lo,{})]}),s.jsxs("div",{className:"flex justify-center",children:[!p.available&&!p.error&&s.jsxs(V,{type:"button",variant:"outline",size:"sm",onClick:()=>p.checkForUpdates(),disabled:f,className:"h-10 w-auto justify-center gap-2 rounded-xl px-4",children:[f?s.jsx(O,{name:"loader",className:"size-4 animate-spin"}):s.jsx(O,{name:"refresh",className:"size-4"}),e(f?"settings.aiworker.about.state.checking":"settings.aiworker.about.actions.checkForUpdates")]}),!f&&p.available&&s.jsxs(V,{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(O,{name:"download",className:"size-4"}),e("settings.aiworker.about.actions.updateToVersion",{version:p.info?.version||""})]})]}),p.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:p.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:co,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(O,{name:"github-fill",className:"size-5"}),s.jsx("span",{children:"GitHub"})]}),s.jsxs("a",{href:ru,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(O,{name:"discord-fill",className:"size-5"}),s.jsx("span",{children:"Discord"})]})]}),s.jsxs("a",{href:uo,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(O,{name:"twitter-xfill",className:"size-5"}),s.jsx("span",{children:"@aiworker_dev"})]})]}),s.jsx("p",{className:"text-center typography-ui text-muted-foreground/60",children:e("aboutDialog.footerNote")}),s.jsx(no,{open:a,onOpenChange:n,info:p.info,downloading:p.downloading,downloaded:p.downloaded,progress:p.progress,error:p.error,onDownload:p.downloadUpdate,onRestart:p.restartToUpdate,runtimeType:p.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:Tt,children:e("settings.aiworker.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:Tt,children:e("settings.aiworker.about.field.openCodeVersion")}),s.jsx("span",{className:"typography-meta text-muted-foreground font-mono",children:c||e("settings.aiworker.about.state.unknown")})]}),s.jsxs("div",{className:"flex items-center gap-3",children:[p.checking&&s.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground",children:[s.jsx(O,{name:"loader",className:"h-4 w-4 animate-spin"}),s.jsx("span",{className:"typography-meta",children:e("settings.aiworker.about.state.checking")})]}),!p.checking&&p.available&&s.jsxs(V,{size:"sm",variant:"default",onClick:()=>n(!0),children:[s.jsx(O,{name:"download",className:"h-4 w-4 mr-1"}),e("settings.aiworker.about.actions.updateToVersion",{version:p.info?.version||""})]}),!p.checking&&!p.available&&!p.error&&s.jsx("span",{className:"typography-meta text-muted-foreground",children:e("settings.aiworker.about.state.upToDate")}),s.jsx(V,{size:"sm",variant:"outline",onClick:()=>p.checkForUpdates(),disabled:p.checking,children:e("settings.aiworker.about.actions.checkForUpdates")})]})]}),p.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:p.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:Tt,children:e("settings.aiworker.about.field.instanceUrls")}),s.jsx(lo,{})]}),s.jsxs("div",{className:"flex items-center gap-4 px-4 py-4",children:[s.jsxs("a",{href:co,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(O,{name:"github-fill",className:"h-4 w-4"}),s.jsx("span",{children:"GitHub"})]}),s.jsxs("a",{href:uo,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(O,{name:"twitter-xfill",className:"h-4 w-4"}),s.jsx("span",{children:"@aiworker_dev"})]})]})]}),s.jsx(no,{open:a,onOpenChange:n,info:p.info,downloading:p.downloading,downloaded:p.downloaded,progress:p.progress,error:p.error,onDownload:p.downloadUpdate,onRestart:p.restartToUpdate,runtimeType:p.runtimeType})]})},lu=(t,e,a)=>t&&e.some(r=>r.path===t)?t:(e.find(r=>r.id===a)??e[0])?.path??null,_s=()=>{const t=ut.c(4),e=ie(cu),a=Gs(du),n=Gs(uu);let r;return t[0]!==n||t[1]!==a||t[2]!==e?(r=lu(e,a,n),t[0]=n,t[1]=a,t[2]=e,t[3]=r):r=t[3],r};function cu(t){return t.settingsProjectPath}function du(t){return t.projects}function uu(t){return t.activeProjectId}const _l=t=>t.trim(),Ba=t=>{const e=ut.c(40),{className:a}=t,{t:n}=tt(),r=Gs(pu),i=_s(),l=ie(mu),g=cs();let c;e[0]!==r?(c=[...r].sort(gu),e[0]=r,e[1]=c):c=e[1];const y=c;let p;e:{if(y.length===0){p=null;break e}let B;e[2]!==i||e[3]!==y?(B=y.find(k=>k.path===i)??y[0],e[2]=i,e[3]=y,e[4]=B):B=e[4],p=B}const b=p;if(g||y.length===0)return null;let d;e[5]!==b||e[6]!==n?(d=b?.label&&b.label.trim().length>0?b.label:b?.path.split("/").filter(Boolean).pop()||b?.path||n("settings.shared.projectSelector.fallbackProject"),e[5]=b,e[6]=n,e[7]=d):d=e[7];const P=d;let f;e[8]!==P?(f=_l(P),e[8]=P,e[9]=f):f=e[9];const C=f;let v;e[10]!==a?(v=xe(a),e[10]=a,e[11]=v):v=e[11];let N;e[12]!==n?(N=n("settings.shared.projectSelector.switchProjectAria"),e[12]=n,e[13]=N):N=e[13];let m;e[14]!==n?(m=n("settings.shared.projectSelector.switchProjectTitle"),e[14]=n,e[15]=m):m=e[15];let A,R;e[16]===Symbol.for("react.memo_cache_sentinel")?(A=xe("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-primary/50 focus-visible:border-primary/70","flex items-center gap-1.5 text-left"),R=s.jsx(O,{name:"folder",className:"h-4 w-4 opacity-70"}),e[16]=A,e[17]=R):(A=e[16],R=e[17]);let I;e[18]!==C?(I=s.jsx("span",{className:"min-w-0 flex-1 truncate typography-ui-label font-medium",children:C}),e[18]=C,e[19]=I):I=e[19];let j;e[20]===Symbol.for("react.memo_cache_sentinel")?(j=s.jsx(O,{name:"arrow-down-s",className:"size-4 opacity-50"}),e[20]=j):j=e[20];let h;e[21]!==I||e[22]!==N||e[23]!==m?(h=s.jsx(on,{asChild:!0,children:s.jsxs("button",{type:"button","aria-label":N,title:m,className:A,children:[R,I,j]})}),e[21]=I,e[22]=N,e[23]=m,e[24]=h):h=e[24];const w=b?.id??"";let F;e[25]!==l||e[26]!==y?(F=B=>{if(!B)return;const k=y.find(G=>G.id===B);k&&l(k.path)},e[25]=l,e[26]=y,e[27]=F):F=e[27];let T;e[28]!==y?(T=y.map(hu),e[28]=y,e[29]=T):T=e[29];let S;e[30]!==w||e[31]!==F||e[32]!==T?(S=s.jsx(ln,{align:"start",className:"w-auto",children:s.jsx(fc,{value:w,onValueChange:F,children:T})}),e[30]=w,e[31]=F,e[32]=T,e[33]=S):S=e[33];let D;e[34]!==h||e[35]!==S?(D=s.jsxs(cn,{children:[h,S]}),e[34]=h,e[35]=S,e[36]=D):D=e[36];let $;return e[37]!==D||e[38]!==v?($=s.jsx("div",{className:v,children:D}),e[37]=D,e[38]=v,e[39]=$):$=e[39],$};function pu(t){return t.projects}function mu(t){return t.setSettingsProjectPath}function gu(t,e){return(t.label||t.path).localeCompare(e.label||e.path)}function hu(t){const e=t.label?.trim()?t.label.trim():t.path.split("/").filter(Boolean).pop()||t.path,a=_l(e);return s.jsx(hc,{value:t.id,children:s.jsx("span",{className:"min-w-0 truncate typography-ui",children:a})},t.id)}function fu(t,e){return`opencode:sidebar-group:${t}:${e}`}const dr=t=>{const e=ut.c(33),{label:a,count:n,storageKey:r,defaultExpanded:i,children:l}=t,g=i===void 0?!0:i;let c;e[0]!==a||e[1]!==r?(c=fu(r,a),e[0]=a,e[1]=r,e[2]=c):c=e[2];const y=c,p=o.useId();let b;e[3]!==g||e[4]!==y?(b=()=>{try{const S=localStorage.getItem(y);if(S!==null)return S==="true"}catch{}return g},e[3]=g,e[4]=y,e[5]=b):b=e[5];const[d,P]=$e.useState(b);let f,C;e[6]!==d||e[7]!==y?(f=()=>{try{localStorage.setItem(y,String(d))}catch{}},C=[y,d],e[6]=d,e[7]=y,e[8]=f,e[9]=C):(f=e[8],C=e[9]),$e.useEffect(f,C);let v;e[10]===Symbol.for("react.memo_cache_sentinel")?(v=()=>P(xu),e[10]=v):v=e[10];let N;e[11]===Symbol.for("react.memo_cache_sentinel")?(N=xe("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-primary/50"),e[11]=N):N=e[11];const m=!d&&"-rotate-90";let A;e[12]!==m?(A=xe("h-3.5 w-3.5 flex-shrink-0 transition-transform duration-200",m),e[12]=m,e[13]=A):A=e[13];let R;e[14]!==A?(R=s.jsx(O,{name:"arrow-down-s",className:A}),e[14]=A,e[15]=R):R=e[15];let I;e[16]!==a?(I=s.jsx("span",{className:"flex-1 truncate",children:a}),e[16]=a,e[17]=I):I=e[17];let j;e[18]!==n?(j=s.jsx("span",{className:"ml-1 tabular-nums opacity-60",children:n}),e[18]=n,e[19]=j):j=e[19];let h;e[20]!==p||e[21]!==d||e[22]!==R||e[23]!==I||e[24]!==j?(h=s.jsxs("button",{type:"button",onClick:v,"aria-expanded":d,"aria-controls":p,className:N,children:[R,I,j]}),e[20]=p,e[21]=d,e[22]=R,e[23]=I,e[24]=j,e[25]=h):h=e[25];const w=!d;let F;e[26]!==l||e[27]!==p||e[28]!==w?(F=s.jsx("div",{id:p,hidden:w,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]=p,e[28]=w,e[29]=F):F=e[29];let T;return e[30]!==h||e[31]!==F?(T=s.jsxs("div",{children:[h,F]}),e[30]=h,e[31]=F,e[32]=T):T=e[32],T};function xu(t){return!t}const vu=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},yu=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())},po=t=>{const e=yu(vu(t));if(e.length===0)return;const a={};for(const r of e)r.permission&&((a[r.permission]||={})[r.pattern]=r.action);const n={};for(const[r,i]of Object.entries(a)){const l=Object.keys(i);if(l.length===1&&l[0]==="*"){n[r]=i["*"];continue}n[r]=i}return Object.keys(n).length>0?n:void 0},bu=({onItemSelect:t})=>{const{t:e}=tt(),[a,n]=o.useState(null),[r,i]=o.useState(""),[l,g]=o.useState(null),[c,y]=o.useState(null),[p,b]=o.useState(!1),[d,P]=o.useState(null),{selectedAgentName:f,setSelectedAgent:C,setAgentDraft:v,createAgent:N,deleteAgent:m,loadAgents:A}=Hn(Us(U=>({selectedAgentName:U.selectedAgentName,setSelectedAgent:U.setSelectedAgent,setAgentDraft:U.setAgentDraft,createAgent:U.createAgent,deleteAgent:U.deleteAgent,loadAgents:U.loadAgents}))),R=_s(),I=Hn(U=>fl(U,R));o.useEffect(()=>{A(R)},[A,R]);const j="bg-background",h=()=>{const U="new-agent";let le=U,_=1;for(;I.some(H=>H.name===le);)le=`${U}-${_}`,_++;v({name:le,scope:"user"}),C(le),t?.()},w=async U=>{if(ma(U)){E.error(e("settings.agents.sidebar.toast.builtInCannotDelete"));return}g(U),y("delete")},F=async U=>{ma(U)&&(g(U),y("reset"))},T=()=>{g(null),y(null)},S=async()=>{if(!(!l||!c)){b(!0);try{const U=await m(l.name,l.scope,R);U.ok?(U.requiresManualRestart?E.warning(e("settings.agents.page.toast.savedManualRestart")):U.restartDeferred?E.success(e("settings.view.pendingRestart.saved")):c==="delete"?E.success(e("settings.agents.sidebar.toast.agentDeleted",{name:l.name})):E.success(e("settings.agents.sidebar.toast.agentReset",{name:l.name})),T()):c==="delete"?E.error(e("settings.agents.sidebar.toast.deleteFailed")):E.error(e("settings.agents.sidebar.toast.resetFailed"))}catch(U){const le=U instanceof Error?U.message:"",_=/built-in|not deletable|not found/i.test(le);c==="delete"?E.error(e(_?"settings.agents.sidebar.toast.definitionNotFound":"settings.agents.sidebar.toast.deleteFailed")):E.error(e("settings.agents.sidebar.toast.resetFailed"))}b(!1)}},D=U=>{const le=U.name;let _=1,H=`${le}-copy`;for(;I.some(Y=>Y.name===H);)_++,H=`${le}-copy-${_}`;const z=U,K=U.model?.providerID&&U.model?.modelID?`${U.model.providerID}/${U.model.modelID}`:null,te=U;v({name:H,scope:z.scope||"user",description:U.description,model:K,variant:U.variant,temperature:U.temperature,top_p:U.topP,prompt:U.prompt,mode:U.mode,permission:po(U.permission),disable:te.disable}),C(H),t?.()},$=U=>{i(U.name),n(U)},B=async()=>{if(!a)return;const U=r.trim().replace(/\s+/g,"-");if(!U){E.error(e("settings.agents.sidebar.toast.agentNameRequired"));return}if(U===a.name){n(null);return}if(I.some(z=>z.name===U)){E.error(e("settings.agents.sidebar.toast.agentExists"));return}const le=a.model?.providerID&&a.model?.modelID?`${a.model.providerID}/${a.model.modelID}`:null,_=a,H=await N({name:U,description:a.description,model:le,variant:a.variant,temperature:a.temperature,top_p:a.topP,prompt:a.prompt,mode:a.mode,permission:po(a.permission),disable:_.disable,scope:_.scope},R);if(H.ok){const z=await m(a.name,_.scope,R);z.ok?(H.requiresManualRestart||z.requiresManualRestart?E.warning(e("settings.agents.page.toast.savedManualRestart")):E.success(e("settings.agents.sidebar.toast.agentRenamed",{name:U})),C(U)):E.error(e("settings.agents.sidebar.toast.removeOldAfterRenameFailed"))}else E.error(e("settings.agents.sidebar.toast.renameFailed"));n(null)},k=U=>{switch(U){case"primary":return s.jsx(O,{name:"ai-agent",className:"h-3 w-3 text-primary"});case"all":return s.jsx(O,{name:"ai-agent-fill",className:"h-3 w-3 text-primary"});case"subagent":return s.jsx(O,{name:"robot",className:"h-3 w-3 text-primary"});default:return null}},G=I.filter(U=>!xc(U)),M=G.filter(ma),L=G.filter(U=>!ma(U)),{groupedCustomAgents:J,ungroupedCustomAgents:ee}=$e.useMemo(()=>{const U={},le=[];for(const H of L){const z=H;z.group?(U[z.group]||(U[z.group]=[]),U[z.group].push(H)):le.push(H)}return{groupedCustomAgents:Object.keys(U).sort((H,z)=>H.localeCompare(z)).map(H=>({name:H,agents:U[H]})),ungroupedCustomAgents:le}},[L]);return s.jsxs("div",{className:xe("flex h-full flex-col",j),children:[s.jsxs("div",{className:"border-b px-3 pt-4 pb-3",children:[s.jsx("h2",{className:`${un} mb-3`,children:e("settings.agents.sidebar.title")}),s.jsx(Ba,{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:G.length})}),s.jsx(V,{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(O,{name:"add",className:"h-3.5 w-3.5"})})]})]}),s.jsx(vs,{outerClassName:"flex-1 min-h-0",className:"space-y-1 px-3 py-2 overflow-x-hidden",children:G.length===0?s.jsxs("div",{className:"py-12 px-4 text-center text-muted-foreground",children:[s.jsx(O,{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:[M.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")}),M.map(U=>s.jsx(Ji,{agent:U,isSelected:f===U.name,onSelect:()=>{C(U.name),t?.()},onReset:()=>F(U),onDuplicate:()=>D(U),getAgentModeIcon:k,isMenuOpen:d===U.name,onMenuOpenChange:le=>P(le?U.name:null)},U.name))]}),L.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")}),J.map(({name:U,agents:le})=>s.jsx(dr,{label:U,count:le.length,storageKey:"agents",children:le.map(_=>s.jsx(Ji,{agent:_,isSelected:f===_.name,onSelect:()=>{C(_.name),t?.()},onRename:()=>$(_),onDelete:()=>w(_),onDuplicate:()=>D(_),getAgentModeIcon:k,isMenuOpen:d===_.name,onMenuOpenChange:H=>P(H?_.name:null)},_.name))},U)),ee.map(U=>s.jsx(Ji,{agent:U,isSelected:f===U.name,onSelect:()=>{C(U.name),t?.()},onRename:()=>$(U),onDelete:()=>w(U),onDuplicate:()=>D(U),getAgentModeIcon:k,isMenuOpen:d===U.name,onMenuOpenChange:le=>P(le?U.name:null)},U.name))]})]})}),s.jsx(Kt,{open:l!==null&&c!==null,onOpenChange:U=>{!U&&!p&&T()},children:s.jsxs(zt,{className:"max-w-md",children:[s.jsxs(_t,{children:[s.jsx($t,{children:e(c==="delete"?"settings.agents.sidebar.dialog.deleteTitle":"settings.agents.sidebar.dialog.resetTitle")}),s.jsx(Vt,{children:c==="delete"?e("settings.agents.sidebar.dialog.deleteDescription",{name:l?.name??""}):e("settings.agents.sidebar.dialog.resetDescription",{name:l?.name??""})})]}),s.jsxs(ts,{children:[s.jsx(V,{size:"sm",variant:"ghost",onClick:T,disabled:p,children:e("settings.common.actions.cancel")}),s.jsx(V,{size:"sm",onClick:S,disabled:p,children:e(c==="delete"?"settings.common.actions.delete":"settings.common.actions.reset")})]})]})}),s.jsx(Kt,{open:a!==null,onOpenChange:U=>!U&&n(null),children:s.jsxs(zt,{children:[s.jsxs(_t,{children:[s.jsx($t,{children:e("settings.agents.sidebar.renameDialog.title")}),s.jsx(Vt,{children:e("settings.agents.sidebar.renameDialog.description",{name:a?.name??""})})]}),s.jsx(He,{value:r,onChange:U=>i(U.target.value),placeholder:e("settings.agents.sidebar.renameDialog.placeholder"),className:"text-foreground placeholder:text-muted-foreground",onKeyDown:U=>{U.key==="Enter"&&B()}}),s.jsxs(ts,{children:[s.jsx(V,{size:"sm",variant:"ghost",onClick:()=>n(null),children:e("settings.common.actions.cancel")}),s.jsx(V,{size:"sm",onClick:B,children:e("settings.common.actions.rename")})]})]})})]})},Ji=t=>{const e=ut.c(52),{agent:a,isSelected:n,onSelect:r,onDelete:i,onReset:l,onRename:g,onDuplicate:c,getAgentModeIcon:y,isMenuOpen:p,onMenuOpenChange:b}=t,{t:d}=tt(),P=a;let f;e[0]===Symbol.for("react.memo_cache_sentinel")?(f=_a(),e[0]=f):f=e[0];const C=f,[v,N]=o.useState(!1);let m;e[1]!==i||e[2]!==c||e[3]!==g||e[4]!==l||e[5]!==d?(m=le=>s.jsxs(s.Fragment,{children:[g&&s.jsxs(le,{onClick:_=>{_.stopPropagation(),g()},children:[s.jsx(O,{name:"edit",className:"h-4 w-4 mr-px"}),d("settings.common.actions.rename")]}),s.jsxs(le,{onClick:_=>{_.stopPropagation(),c()},children:[s.jsx(O,{name:"file-copy",className:"h-4 w-4 mr-px"}),d("settings.common.actions.duplicate")]}),l&&s.jsxs(le,{onClick:_=>{_.stopPropagation(),l()},children:[s.jsx(O,{name:"restart",className:"h-4 w-4 mr-px"}),d("settings.common.actions.reset")]}),i&&s.jsxs(le,{onClick:_=>{_.stopPropagation(),i()},className:"text-destructive focus:text-destructive",children:[s.jsx(O,{name:"delete-bin",className:"h-4 w-4 mr-px"}),d("settings.common.actions.delete")]})]}),e[1]=i,e[2]=c,e[3]=g,e[4]=l,e[5]=d,e[6]=m):m=e[6];const A=m,R=n?"bg-interactive-selection":"hover:bg-interactive-hover";let I;e[7]!==R?(I=xe("group relative flex items-center rounded-md px-1.5 py-1 transition-all duration-200 select-none",R),e[7]=R,e[8]=I):I=e[8];let j;e[9]===Symbol.for("react.memo_cache_sentinel")?(j=C?void 0:le=>{le.preventDefault(),N(!0)},e[9]=j):j=e[9];let h;e[10]!==I?(h=s.jsx("div",{className:I,onContextMenu:j}),e[10]=I,e[11]=h):h=e[11];let w;e[12]!==a.name?(w=s.jsx("span",{className:"typography-ui-label font-normal truncate text-foreground",children:a.name}),e[12]=a.name,e[13]=w):w=e[13];let F;e[14]!==a.mode||e[15]!==y?(F=y(a.mode),e[14]=a.mode,e[15]=y,e[16]=F):F=e[16];let T;e[17]!==a||e[18]!==P.scope||e[19]!==d?(T=(P.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)?d("settings.agents.sidebar.badge.system"):P.scope}),e[17]=a,e[18]=P.scope,e[19]=d,e[20]=T):T=e[20];let S;e[21]!==w||e[22]!==F||e[23]!==T?(S=s.jsxs("div",{className:"flex items-center gap-1.5",children:[w,F,T]}),e[21]=w,e[22]=F,e[23]=T,e[24]=S):S=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 $;e[27]!==r||e[28]!==S||e[29]!==D?($=s.jsxs("button",{onClick:r,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-primary/50",tabIndex:0,children:[S,D]}),e[27]=r,e[28]=S,e[29]=D,e[30]=$):$=e[30];let B;e[31]!==b?(B=le=>{le&&N(!1),b(le)},e[31]=b,e[32]=B):B=e[32];let k;e[33]===Symbol.for("react.memo_cache_sentinel")?(k=s.jsx(on,{asChild:!0,children:s.jsx(V,{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(O,{name:"more-2",className:"h-3.5 w-3.5"})})}),e[33]=k):k=e[33];let G;e[34]!==A?(G=s.jsx(ln,{align:"end",className:"w-fit min-w-20",children:A(dn)}),e[34]=A,e[35]=G):G=e[35];let M;e[36]!==p||e[37]!==B||e[38]!==G?(M=s.jsxs(cn,{open:p,onOpenChange:B,children:[k,G]}),e[36]=p,e[37]=B,e[38]=G,e[39]=M):M=e[39];let L;e[40]!==$||e[41]!==M?(L=s.jsxs("div",{className:"flex min-w-0 flex-1 items-center",children:[$,M]}),e[40]=$,e[41]=M,e[42]=L):L=e[42];let J;e[43]!==L||e[44]!==h?(J=s.jsx(Jn,{render:h,children:L}),e[43]=L,e[44]=h,e[45]=J):J=e[45];let ee;e[46]!==A?(ee=s.jsx(Wn,{className:"w-fit min-w-20",children:A(qn)}),e[46]=A,e[47]=ee):ee=e[47];let U;return e[48]!==v||e[49]!==J||e[50]!==ee?(U=s.jsxs(Qn,{open:v,onOpenChange:N,children:[J,ee]}),e[48]=v,e[49]=J,e[50]=ee,e[51]=U):U=e[51],U},es=t=>{const e=ut.c(21),{children:a,className:n,outerClassName:r,title:i,titleLeading:l,titleAccessory:g,description:c,headerEnd:y,showSaveStatus:p}=t,b=p===void 0?!1:p,d=i!=null||c!=null||y!=null||b,P=typeof i=="string"||typeof i=="number",f=l!=null||g!=null;let C;e[0]!==r?(C=xe("h-full",r),e[0]=r,e[1]=C):C=e[1];let v;e[2]!==n?(v=xe("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]=v):v=e[3];let N;e[4]!==c||e[5]!==d||e[6]!==f||e[7]!==y||e[8]!==P||e[9]!==b||e[10]!==i||e[11]!==g||e[12]!==l?(N=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:[i!=null?P?f?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:xe(lr,"min-w-0 truncate"),children:i}),s.jsx("span",{className:"shrink-0",children:g})]}):s.jsx("h1",{"data-settings-page-heading":!0,tabIndex:-1,className:lr,children:i}):i:null,c!=null?typeof c=="string"||typeof c=="number"?s.jsx("p",{className:vc,children:c}):c:null]}),s.jsxs("div",{className:"flex shrink-0 flex-wrap items-center justify-end gap-3",children:[y,b&&s.jsx(ju,{})]})]}),e[4]=c,e[5]=d,e[6]=f,e[7]=y,e[8]=P,e[9]=b,e[10]=i,e[11]=g,e[12]=l,e[13]=N):N=e[13];let m;e[14]!==a||e[15]!==v||e[16]!==N?(m=s.jsxs("div",{className:v,children:[N,a]}),e[14]=a,e[15]=v,e[16]=N,e[17]=m):m=e[17];let A;return e[18]!==C||e[19]!==m?(A=s.jsx(vs,{outerClassName:C,className:"w-full @container",children:m}),e[18]=C,e[19]=m,e[20]=A):A=e[20],A},wu=500,ju=()=>{const t=ut.c(13),{t:e}=tt(),a=o.useSyncExternalStore(hd,Wr,Wr),[n,r]=o.useState(!1);let i,l;if(t[0]!==a?(i=()=>{if(a!=="saving"){r(!1);return}const p=setTimeout(()=>r(!0),wu);return()=>clearTimeout(p)},l=[a],t[0]=a,t[1]=i,t[2]=l):(i=t[1],l=t[2]),o.useEffect(i,l),a==="error"){let p;t[3]===Symbol.for("react.memo_cache_sentinel")?(p=s.jsx(O,{name:"error-warning",className:"size-3.5"}),t[3]=p):p=t[3];let b;t[4]!==e?(b=e("settings.common.status.saveFailed"),t[4]=e,t[5]=b):b=t[5];let d;return t[6]!==b?(d=s.jsxs("div",{"aria-live":"assertive",className:"flex shrink-0 items-center gap-1.5 typography-meta text-[var(--status-error)]",children:[p,s.jsx("span",{children:b})]}),t[6]=b,t[7]=d):d=t[7],d}if(a!=="saving"||!n)return null;let g;t[8]===Symbol.for("react.memo_cache_sentinel")?(g=s.jsx(O,{name:"loader-4",className:"size-3.5 animate-spin"}),t[8]=g):g=t[8];let c;t[9]!==e?(c=e("settings.common.actions.saving"),t[9]=e,t[10]=c):c=t[10];let y;return t[11]!==c?(y=s.jsxs("div",{"aria-live":"polite",className:"flex shrink-0 items-center gap-1.5 typography-meta text-muted-foreground",children:[g,s.jsx("span",{children:c})]}),t[11]=c,t[12]=y):y=t[12],y},ku=["allow","ask","deny"],Oa=t=>t==="allow"||t==="ask"||t==="deny",ur=()=>({global:null,keys:{}}),Nu=t=>{const e=ur();if(t==null)return e;if(typeof t=="string")return Oa(t)&&(e.global=t),e;if(typeof t!="object"||Array.isArray(t))return e;for(const[a,n]of Object.entries(t)){if(a==="*"){Oa(n)&&(e.global=n);continue}const r={action:null,patterns:[]};if(Oa(n))r.action=n;else if(n&&typeof n=="object"&&!Array.isArray(n))for(const[i,l]of Object.entries(n))Oa(l)&&(i==="*"?r.action=l:r.patterns.push({pattern:i,action:l}));else continue;e.keys[a]=r}return e},pr=t=>{const e={};t.global!==null&&(e["*"]=t.global);for(const[a,n]of Object.entries(t.keys)){const r=n.patterns.filter(i=>i.pattern.trim().length>0);if(n.action!==null&&r.length===0)e[a]=n.action;else if(r.length>0){const i={};n.action!==null&&(i["*"]=n.action);for(const l of r)i[l.pattern]=l.action;e[a]=i}}return Object.keys(e).length>0?e:null},Su=(t,e)=>JSON.stringify(pr(t))===JSON.stringify(pr(e)),jn=t=>JSON.parse(JSON.stringify(t)),Cu=["edit","external_directory","doom_loop","plan_enter","plan_exit"],Iu=new Set(["read","edit","glob","grep","list","bash","task","external_directory","lsp","skill"]),mo=new Set(["write","patch","apply_patch","multiedit","invalid"]),Pu=t=>t.split(/[_-]/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),Au=({agent:t})=>{const{t:e}=tt(),a=Hn(z=>z.updateAgent),[n,r]=o.useState(ur),[i,l]=o.useState(ur),[g,c]=o.useState(!0),[y,p]=o.useState(!1),[b,d]=o.useState(!1),[P,f]=o.useState({}),[C,v]=o.useState([]),[N,m]=o.useState(""),[A,R]=o.useState(0),I=t.name,j=_s();o.useEffect(()=>{let z=!1;return c(!0),p(!1),(async()=>{try{const K=j,te=K?`?directory=${encodeURIComponent(K)}`:"",Y=await yt(`/api/config/agents/${encodeURIComponent(I)}/config${te}`,{headers:{"Cache-Control":"no-cache",...K?{"x-opencode-directory":K}:{}}});if(!Y.ok)throw new Error(String(Y.status));const ae=await Y.json().catch(()=>null);if(z)return;const ge=Nu(ae?.config?.permission);r(jn(ge)),l(ge)}catch{z||p(!0)}finally{z||c(!1)}})(),()=>{z=!0}},[I,A,j]),o.useEffect(()=>{let z=!1;return(async()=>{try{const K=await fn.listToolIds({directory:j});!z&&Array.isArray(K)&&v(K.filter(te=>typeof te=="string"&&!mo.has(te)))}catch{}})(),()=>{z=!0}},[I,j]);const h=o.useMemo(()=>{const z=t.permission;if(!Array.isArray(z))return[];const K=[];for(const te of z){if(!te||typeof te!="object")continue;const{permission:Y,pattern:ae,action:ge}=te;typeof Y=="string"&&typeof ae=="string"&&Oa(ge)&&K.push({permission:Y,pattern:ae,action:ge})}return K},[t]),w=o.useCallback(z=>{const K=h.find(Y=>Y.permission===z&&Y.pattern==="*");if(K)return K.action;const te=h.find(Y=>Y.permission==="*"&&Y.pattern==="*");return te?te.action:null},[h]),F=o.useCallback(z=>{const K=i.keys[z]?.patterns??[],te=new Set(K.map(Y=>Y.pattern));return h.filter(Y=>Y.permission===z&&Y.pattern!=="*"&&!te.has(Y.pattern))},[h,i.keys]),T=o.useMemo(()=>{const z=new Set;for(const K of C)z.add(K);for(const K of Cu)z.add(K);for(const K of Object.keys(i.keys))z.add(K);for(const K of mo)z.delete(K);return Array.from(z).sort((K,te)=>K.localeCompare(te))},[C,i.keys]),S=o.useMemo(()=>!Su(i,n),[i,n]),D=z=>{l(K=>({...K,global:z}))},$=(z,K)=>{l(te=>{const Y=jn(te),ae=Y.keys[z]??{action:null,patterns:[]};return ae.action=K,ae.action===null&&ae.patterns.length===0?delete Y.keys[z]:Y.keys[z]=ae,Y})},B=(z,K,te,Y)=>{l(ae=>{const ge=jn(ae),de=ge.keys[z]??{action:null,patterns:[]};return de.patterns[K]={pattern:te,action:Y},ge.keys[z]=de,ge})},k=z=>{l(K=>{const te=jn(K),Y=te.keys[z]??{action:null,patterns:[]};return Y.patterns.push({pattern:"",action:"allow"}),te.keys[z]=Y,te}),f(K=>({...K,[z]:!0}))},G=(z,K)=>{l(te=>{const Y=jn(te),ae=Y.keys[z];return ae?(ae.patterns.splice(K,1),ae.action===null&&ae.patterns.length===0&&delete Y.keys[z],Y):te})},M=()=>{const z=N.trim();!z||z==="*"||(l(K=>{if(K.keys[z])return K;const te=jn(K);return te.keys[z]={action:"ask",patterns:[]},te}),f(K=>({...K,[z]:!0})),m(""))},L=async()=>{d(!0);try{const z=pr(i),K=await a(I,{permission:z});K.ok?(r(jn(i)),E.success(K.requiresManualRestart?e("settings.agents.page.permissionsEditor.toast.savedRestartRequired"):e("settings.agents.page.permissionsEditor.toast.saved"))):E.error(e("settings.agents.page.permissionsEditor.toast.saveFailed"))}finally{d(!1)}},J=()=>{l(jn(n))},ee=z=>e(z==="allow"?"settings.agents.page.permissionsEditor.action.allow":z==="ask"?"settings.agents.page.permissionsEditor.action.ask":"settings.agents.page.permissionsEditor.action.deny"),U=e("settings.agents.page.permissionsEditor.action.inherit"),le=e("settings.agents.page.permissionsEditor.action.default"),_=z=>[...z?[{value:"inherit",label:z}]:[],...ku.map(K=>({value:K,label:ee(K)}))],H=(z,K,te,Y=U)=>s.jsx(Ys,{value:z??"inherit",options:_(Y),onChange:ae=>K(ae==="inherit"?null:ae),"aria-label":te});return g?s.jsx(ze,{title:e("settings.agents.page.section.toolPermissions"),children:s.jsx("p",{className:zn,children:e("common.loading")})}):y?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(V,{variant:"outline",size:"xs",onClick:()=>R(z=>z+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:S?s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(V,{variant:"ghost",size:"xs",className:"!font-normal",onClick:J,disabled:b,children:e("settings.agents.page.permissionsEditor.actions.discard")}),s.jsx(V,{size:"xs",className:"!font-normal",onClick:()=>{L()},disabled:b,children:e(b?"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:Tt,children:e("settings.agents.page.permissionsEditor.defaultLabel")}),s.jsx(Jt,{children:e("settings.agents.page.permissionsEditor.defaultInfo")}),i.global===null&&s.jsx("span",{className:"typography-micro text-muted-foreground",children:e("settings.agents.page.permissionsEditor.effectiveHint",{action:ee(w("*")??"allow")})})]}),H(i.global,D,e("settings.agents.page.permissionsEditor.defaultAria"),le)]}),s.jsx("div",{children:T.map(z=>{const K=i.keys[z]??{action:null,patterns:[]},te=F(z),Y=Iu.has(z)||K.patterns.length>0,ae=Y||te.length>0,ge=P[z]===!0,de=w(z);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:ae?()=>f(he=>({...he,[z]:!ge})):void 0,className:xe("flex min-w-0 items-center gap-1.5 text-left",!ae&&"cursor-default"),"aria-expanded":ae?ge:void 0,children:[s.jsx(O,{name:ge&&ae?"arrow-down-s":"arrow-right-s",className:xe("h-3.5 w-3.5 shrink-0 text-muted-foreground",!ae&&"opacity-0")}),s.jsx("span",{className:Tt,children:Pu(z)}),s.jsx("span",{className:"typography-micro font-mono text-muted-foreground/70",children:z}),K.action===null&&de!==null&&s.jsx("span",{className:"typography-micro text-muted-foreground",children:e("settings.agents.page.permissionsEditor.effectiveHint",{action:ee(de)})}),K.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(K.patterns.length)})})]}),H(K.action,he=>$(z,he),e("settings.agents.page.permissionsEditor.keyAria",{key:z}))]}),ge&&ae&&s.jsxs("div",{className:"mt-2 space-y-2 pl-5",children:[K.patterns.map((he,se)=>s.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[s.jsx(He,{value:he.pattern,onChange:re=>B(z,se,re.target.value,he.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(Ys,{value:he.action,options:_(),onChange:re=>B(z,se,he.pattern,re),"aria-label":e("settings.agents.page.permissionsEditor.patternActionAria",{key:z})}),s.jsx(V,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0 text-muted-foreground hover:bg-destructive/10 hover:text-destructive",onClick:()=>G(z,se),"aria-label":e("settings.agents.page.permissionsEditor.actions.removeRuleAria"),children:s.jsx(O,{name:"close",className:"h-3.5 w-3.5"})})]},se)),Y&&s.jsxs(V,{variant:"outline",size:"xs",className:"!font-normal",onClick:()=>k(z),children:[s.jsx(O,{name:"add",className:"mr-1 h-3.5 w-3.5"}),e("settings.agents.page.permissionsEditor.actions.addRule")]}),te.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(Jt,{children:e("settings.agents.page.permissionsEditor.sessionRulesInfo")})]}),te.map(he=>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:he.pattern}),s.jsx("span",{className:"typography-micro text-muted-foreground",children:ee(he.action)})]},`${he.pattern}-${he.action}`))]})]})]},z)})}),s.jsxs("div",{className:"flex flex-wrap items-center gap-2 border-t border-border/40 pt-3",children:[s.jsx(He,{value:N,onChange:z=>m(z.target.value),onKeyDown:z=>{z.key==="Enter"&&(z.preventDefault(),M())},placeholder:e("settings.agents.page.permissionsEditor.customKeyPlaceholder"),className:"h-8 w-full max-w-[16rem] font-mono text-xs"}),s.jsxs(V,{variant:"outline",size:"xs",className:"!font-normal",onClick:M,disabled:!N.trim(),children:[s.jsx(O,{name:"add",className:"mr-1 h-3.5 w-3.5"}),e("settings.agents.page.permissionsEditor.actions.addKey")]})]})]})},Tu=(t,e)=>{const a=xa(e);if(!a)return[];const r=t.find(i=>i.id===a.providerId)?.models?.find(i=>i.id===a.modelId);return r?.variants?Object.keys(r.variants):[]},Eu=()=>{const{t}=tt(),e=Ye(H=>H.providers),{selectedAgentName:a,getAgentByName:n,createAgent:r,updateAgent:i,agentDraft:l,setAgentDraft:g}=Hn(Us(H=>({selectedAgentName:H.selectedAgentName,getAgentByName:H.getAgentByName,createAgent:H.createAgent,updateAgent:H.updateAgent,agentDraft:H.agentDraft,setAgentDraft:H.setAgentDraft}))),c=_s(),y=Hn(H=>fl(H,c)),p=a?n(a,c):null,b=!!(l&&l.name===a&&!p),[d,P]=o.useState(""),[f,C]=o.useState("user"),[v,N]=o.useState(""),[m,A]=o.useState("subagent"),[R,I]=o.useState(""),[j,h]=o.useState(""),[w,F]=o.useState(void 0),[T,S]=o.useState(void 0),[D,$]=o.useState(""),[B,k]=o.useState(!1),G=o.useRef(null),M=o.useMemo(()=>Tu(e,R),[R,e]),L=M.length>0,J=j||"__default",ee=L,U=o.useMemo(()=>j&&!M.includes(j)?[j,...M]:M,[j,M]);o.useEffect(()=>{if(b&&l){const H=l.name||"",z=l.scope||"user",K=l.description||"",te=l.mode||"subagent",Y=l.model||"",ae=l.variant||"",ge=l.temperature??void 0,de=l.top_p??void 0,he=l.prompt||"";P(H),C(z),N(K),A(te),I(Y),h(ae),F(ge),S(de),$(he),G.current={draftName:H,draftScope:z,description:K,mode:te,model:Y,variant:ae,temperature:ge,topP:de,prompt:he};return}if(p&&a===p.name){const H=p.description||"",z=p.mode||"subagent",K=p.model?.providerID&&p.model?.modelID?`${p.model.providerID}/${p.model.modelID}`:"",te=p.variant||"",Y=p.temperature??void 0,ae=p.topP??void 0,ge=p.prompt||"";N(H),A(z),I(K),h(te),F(Y),S(ae),$(ge),G.current={draftName:"",draftScope:"user",description:H,mode:z,model:K,variant:te,temperature:Y,topP:ae,prompt:ge}}},[l,b,p,a]);const le=o.useMemo(()=>{const H=G.current;return H?!!(b&&(d!==H.draftName||f!==H.draftScope)||v!==H.description||m!==H.mode||R!==H.model||j!==H.variant||w!==H.temperature||T!==H.topP||D!==H.prompt):!1},[v,d,f,b,m,R,D,w,T,j]),_=async()=>{const H=b?d.trim().replace(/\s+/g,"-"):a?.trim();if(!H){E.error(t("settings.agents.sidebar.toast.agentNameRequired"));return}if(b&&y.some(z=>z.name===H)){E.error(t("settings.agents.sidebar.toast.agentExists"));return}k(!0);try{const z=R.trim(),K=j.trim(),te=D.trim(),Y={name:H,...v.trim()?{description:v.trim()}:{},mode:m,model:z===""?null:z,variant:K===""?null:K||void 0,temperature:w??null,top_p:T??null,prompt:te||(b?void 0:null),...b&&f?{scope:f}:{}};let ae;b?(ae=await r(Y,c),ae.ok&&g(null)):ae=await i(H,Y,c),ae.ok?ae.requiresManualRestart?E.warning(t("settings.agents.page.toast.savedManualRestart")):ae.restartDeferred?E.success(t("settings.view.pendingRestart.saved")):E.success(t(b?"settings.agents.page.toast.created":"settings.agents.page.toast.updated")):E.error(t(b?"settings.agents.page.toast.createFailed":"settings.agents.page.toast.updateFailed"))}catch(z){console.error("Error saving agent:",z);const K=z instanceof Error&&z.message?z.message:t("settings.agents.page.toast.saveUnexpectedError");E.error(K)}finally{k(!1)}};return a?s.jsxs(es,{title:b?t("settings.agents.page.title.new"):a,description:t(b?"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:[b&&s.jsxs(Rt,{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(He,{value:d,onChange:H=>P(H.target.value),placeholder:t("settings.agents.page.field.agentNamePlaceholder"),className:"h-7 w-40 px-2"})]}),s.jsxs(St,{value:f,onValueChange:H=>C(H),children:[s.jsx(Ct,{size:Ft,className:"w-fit min-w-[100px]",children:s.jsx(Mt,{placeholder:t("settings.agents.page.field.scopePlaceholder")})}),s.jsxs(It,{align:"end",children:[s.jsx(at,{value:"user",children:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(O,{name:"user-3",className:"h-3.5 w-3.5"}),s.jsx("span",{children:t("settings.common.scope.global")})]})}),s.jsx(at,{value:"project",children:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(O,{name:"folder",className:"h-3.5 w-3.5"}),s.jsx("span",{children:t("settings.common.scope.project")})]})})]})]})]}),s.jsx(qt,{label:t("settings.common.field.description"),controlClassName:"w-full max-w-none",children:s.jsx(Ts,{value:v,onChange:H=>N(H.target.value),placeholder:t("settings.agents.page.field.descriptionPlaceholder"),rows:2,className:"w-full resize-none min-h-[60px] bg-transparent"})}),s.jsx(qt,{settingsItem:"agents.mode",label:t("settings.agents.page.field.mode"),info:t("settings.agents.page.field.modeTooltip"),children:s.jsx(Ys,{"aria-label":t("settings.agents.page.field.mode"),value:m,onChange:A,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(Rt,{settingsItem:"agents.model",label:t("settings.agents.page.field.overrideModel"),children:s.jsx(Fa,{providerId:xa(R)?.providerId??"",modelId:xa(R)?.modelId??"",onChange:(H,z)=>{I(H&&z?`${H}/${z}`:""),h("")},className:In})}),s.jsx(Rt,{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(St,{value:J,onValueChange:H=>h(H==="__default"?"":H),children:[s.jsx(Ct,{size:Ft,className:rn,children:s.jsx(Mt,{placeholder:t("settings.agents.page.field.variantPlaceholder"),children:H=>H==="__default"?t("chat.modelControls.default"):H})}),s.jsxs(It,{children:[s.jsx(at,{value:"__default",children:t("chat.modelControls.default")}),U.map(H=>s.jsx(at,{value:H,children:H},H))]})]}):s.jsxs(s.Fragment,{children:[s.jsx(He,{value:j,onChange:H=>h(H.target.value),placeholder:t("settings.agents.page.field.variantPlaceholder"),disabled:!R&&!j,className:"h-8 w-40 rounded-md px-3"}),j&&s.jsx(V,{size:"sm",type:"button",variant:"ghost",onClick:()=>h(""),className:Cs,"aria-label":t("settings.common.actions.clear"),title:t("settings.common.actions.clear"),children:s.jsx(O,{name:"close",className:"h-3.5 w-3.5"})})]})}),s.jsxs(Rt,{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(xs,{value:w,fallbackValue:.7,onValueChange:F,onClear:()=>F(void 0),min:0,max:2,step:.1,inputMode:"decimal",placeholder:"—",emptyLabel:"—",className:Ps}),w!==void 0&&s.jsx(V,{size:"sm",type:"button",variant:"ghost",onClick:()=>F(void 0),className:Cs,"aria-label":t("settings.agents.page.field.clearTemperatureAria"),title:t("settings.common.actions.clear"),children:s.jsx(O,{name:"close",className:"h-3.5 w-3.5"})})]}),s.jsxs(Rt,{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(xs,{value:T,fallbackValue:.9,onValueChange:S,onClear:()=>S(void 0),min:0,max:1,step:.1,inputMode:"decimal",placeholder:"—",emptyLabel:"—",className:Ps}),T!==void 0&&s.jsx(V,{size:"sm",type:"button",variant:"ghost",onClick:()=>S(void 0),className:Cs,"aria-label":t("settings.agents.page.field.clearTopPAria"),title:t("settings.common.actions.clear"),children:s.jsx(O,{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(Ts,{value:D,onChange:H=>$(H.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"})}),!b&&p&&s.jsx(Au,{agent:p}),s.jsx("div",{className:"pb-8",children:s.jsx(V,{onClick:_,disabled:B||!le,size:"xs",className:"!font-normal",children:t(B?"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(O,{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")})]})})},Du=Xd({content:ao(),exists:eu(),path:ao().min(1).optional()}),Mu=async(t,e)=>{const a=await t.json().catch(()=>null);return typeof a?.error=="string"&&a.error.trim()?a.error:e},Ru=t=>t.length>0&&!t.endsWith(`
|
|
2
2
|
`)?`${t}
|
|
3
3
|
`:t,ii={prompt:"",optimizeSystemPrompt:!1,responseStyleEnabled:!1,responseStylePreset:"concise",responseStyleCustomInstructions:""},Lu=(t,e)=>t==="custom"?e:wc(t),Ou=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"},Qi=async(t,e)=>{if(!(await gt(t)).ok)throw new Error(e)},Fu=()=>{const{t}=tt(),e=yc(),[a,n]=o.useState(""),[r,i]=o.useState("AGENTS.md"),[l,g]=o.useState(!1),[c,y]=o.useState(ii.responseStyleEnabled),[p,b]=o.useState(ii.responseStylePreset),[d,P]=o.useState(ii.responseStyleCustomInstructions),[f,C]=o.useState(!0),[v,N]=o.useState(!1),[m,A]=o.useState(!1),[R,I]=o.useState(""),[j,h]=o.useState(!1),w=o.useRef(null);o.useEffect(()=>{const B=new AbortController;return(async()=>{try{const[G,M]=await Promise.all([pn(),yt("/api/behavior/agents-md",{method:"GET",headers:{Accept:"application/json"},signal:B.signal})]);let L=ii;if(G&&(L={...L,optimizeSystemPrompt:G.optimizeSystemPrompt===!0,responseStyleEnabled:G.responseStyleEnabled===!0,responseStylePreset:Ou(G.responseStylePreset),responseStyleCustomInstructions:G.responseStyleCustomInstructions??""},G.globalBehaviorPrompt!==void 0&&(L={...L,prompt:G.globalBehaviorPrompt})),M.ok){const J=Du.parse(await M.json());if(B.signal.aborted)return;i(J.path??"AGENTS.md"),L.prompt.trim()||(L={...L,prompt:J.content})}n(L.prompt),g(L.optimizeSystemPrompt),h(L.optimizeSystemPrompt),y(L.responseStyleEnabled),b(L.responseStylePreset),P(L.responseStyleCustomInstructions),I(L.prompt),w.current={enabled:L.responseStyleEnabled,preset:L.responseStylePreset,custom:L.responseStyleCustomInstructions}}catch(G){G.name!=="AbortError"&&console.warn("Failed to load behavior settings:",G)}finally{C(!1)}})(),()=>B.abort()},[]),o.useEffect(()=>{if(f)return;const B=w.current;if(B&&B.enabled===c&&B.preset===p&&B.custom===d)return;const k={enabled:c,preset:p,custom:d},G=setTimeout(async()=>{try{await Qi({responseStyleEnabled:k.enabled,responseStylePreset:k.preset,responseStyleCustomInstructions:k.custom},t("settings.behavior.page.toast.saveFailed")),w.current=k}catch(M){const L=M instanceof Error?M.message:t("settings.behavior.page.toast.saveFailed");E.error(L)}},400);return()=>clearTimeout(G)},[c,p,d,f,t]);const F=Lu(p,d),T=a!==R,S=l!==j,D=async()=>{N(!0);try{const B=Ru(a),k=await yt("/api/behavior/agents-md",{method:"PUT",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({content:B})});if(!k.ok)throw new Error(await Mu(k,t("settings.behavior.page.toast.saveFailed")));const G=await k.json().catch(()=>null),M=vl(G,"behavior",{id:"agents-md"});await Qi({globalBehaviorPrompt:B},t("settings.behavior.page.toast.saveFailed")),n(B),I(B),E.success(t(M?"settings.view.pendingRestart.saved":"settings.behavior.page.toast.saved"))}catch(B){console.error("Failed to save behavior:",B);const k=B instanceof Error?B.message:t("settings.behavior.page.toast.saveFailed");E.error(k)}finally{N(!1)}},$=async()=>{A(!0);try{await Qi({optimizeSystemPrompt:l},t("settings.behavior.page.toast.saveFailed")),h(l),$n("behavior",{id:"optimize-system-prompt"}),E.success(t("settings.view.pendingRestart.saved"))}catch(B){const k=B instanceof Error?B.message:t("settings.behavior.page.toast.saveFailed");E.error(k)}finally{A(!1)}};return s.jsxs(es,{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(dt,{checked:l,onChange:g,disabled:f||m,label:t("settings.behavior.page.systemPromptOptimization.enable"),ariaLabel:t("settings.behavior.page.systemPromptOptimization.enableAria"),info:t("settings.behavior.page.systemPromptOptimization.info")}),s.jsx(V,{type:"button",size:"xs",onClick:()=>{$()},disabled:f||m||!S,className:"!font-normal",children:t(m?"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:r})})]}),settingsItem:"behavior.system-prompt",contentClassName:"space-y-3",children:[s.jsx(Ts,{value:a,onChange:B=>n(B.target.value),placeholder:t("settings.behavior.page.field.systemPromptPlaceholder"),rows:12,disabled:f,outerClassName:"min-h-[160px] max-h-[70vh]",className:"w-full font-mono typography-meta bg-transparent"}),s.jsx(V,{onClick:D,disabled:v||!T||f,size:"xs",className:"!font-normal",children:t(v?"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(dt,{checked:c,onChange:y,disabled:f,label:t("settings.behavior.page.responseStyle.enable"),ariaLabel:t("settings.behavior.page.responseStyle.enableAria")}),s.jsx(Rt,{label:t("settings.behavior.page.responseStyle.preset"),alignEnd:!1,children:s.jsxs(St,{value:p,onValueChange:B=>b(B),disabled:f||!c,children:[s.jsx(Ct,{size:Ft,className:rn,children:s.jsx(Mt,{children:B=>B==="custom"?t("settings.behavior.page.responseStyle.option.custom"):xl(B)?t(go[B]):null})}),s.jsxs(It,{children:[bc.map(B=>s.jsx(at,{value:B,children:t(go[B])},B)),s.jsx(at,{value:"custom",children:t("settings.behavior.page.responseStyle.option.custom")})]})]})}),s.jsx(Ts,{value:F,onChange:B=>P(B.target.value),placeholder:t("settings.behavior.page.responseStyle.customPlaceholder"),rows:5,disabled:f||!c||p!=="custom",outerClassName:"min-h-[120px]",className:"w-full font-mono typography-meta bg-transparent"})]})]})},Ku=t=>{const e=ut.c(176),{onItemSelect:a}=t,{t:n}=tt(),[r,i]=o.useState(null),[l,g]=o.useState(""),[c,y]=o.useState(null),[p,b]=o.useState(null),[d,P]=o.useState(!1),[f,C]=o.useState(null),{selectedCommandName:v,setSelectedCommand:N,setCommandDraft:m,createCommand:A,deleteCommand:R,loadCommands:I}=va(Us(zu)),j=_s();let h;e[0]!==j?(h=Be=>yl(Be,j),e[0]=j,e[1]=h):h=e[1];const w=va(h);let F;e[2]!==j?(F=Be=>wr(Be,j),e[2]=j,e[3]=F):F=e[3];const T=Hs(F),S=Hs(Uu);let D,$;e[4]!==I||e[5]!==S||e[6]!==j?(D=()=>{I(j),S(j)},$=[I,S,j],e[4]=I,e[5]=S,e[6]=j,e[7]=D,e[8]=$):(D=e[7],$=e[8]),o.useEffect(D,$);let B;e[9]!==T?(B=new Set(T.map(_u)),e[9]=T,e[10]=B):B=e[10];const k=B;let G;if(e[11]!==w||e[12]!==k){let Be;e[14]!==k?(Be=Et=>!k.has(Et.name),e[14]=k,e[15]=Be):Be=e[15],G=w.filter(Be),e[11]=w,e[12]=k,e[13]=G}else G=e[13];const M=G;let L,J;e[16]!==v||e[17]!==N||e[18]!==k?(L=()=>{v&&k.has(v)&&N(null)},J=[v,N,k],e[16]=v,e[17]=N,e[18]=k,e[19]=L,e[20]=J):(L=e[19],J=e[20]),o.useEffect(L,J);let ee;e[21]!==w||e[22]!==a||e[23]!==m||e[24]!==N?(ee=()=>{let Be="new-command",Et=1;for(;w.some(Me=>Me.name===Be);)Be=`new-command-${Et}`,Et++;m({name:Be,scope:"user"}),N(Be),a?.()},e[21]=w,e[22]=a,e[23]=m,e[24]=N,e[25]=ee):ee=e[25];const U=ee;let le;e[26]!==n?(le=async Be=>{if(ha(Be)){E.error(n("settings.commands.sidebar.toast.builtInCannotDelete"));return}y(Be),b("delete")},e[26]=n,e[27]=le):le=e[27];const _=le;let H;e[28]===Symbol.for("react.memo_cache_sentinel")?(H=async Be=>{ha(Be)&&(y(Be),b("reset"))},e[28]=H):H=e[28];const z=H;let K;e[29]===Symbol.for("react.memo_cache_sentinel")?(K=()=>{y(null),b(null)},e[29]=K):K=e[29];const te=K;let Y;e[30]!==c||e[31]!==p||e[32]!==R||e[33]!==j||e[34]!==n?(Y=async()=>{if(!c||!p)return;P(!0),await R(c.name,j)?(p==="delete"?E.success(n("settings.commands.sidebar.toast.commandDeleted",{name:c.name})):E.success(n("settings.commands.sidebar.toast.commandReset",{name:c.name})),te()):p==="delete"?E.error(n("settings.commands.sidebar.toast.deleteFailed")):E.error(n("settings.commands.sidebar.toast.resetFailed")),P(!1)},e[30]=c,e[31]=p,e[32]=R,e[33]=j,e[34]=n,e[35]=Y):Y=e[35];const ae=Y;let ge;e[36]!==w||e[37]!==m||e[38]!==N?(ge=Be=>{const Et=Be.name;let Me=1,wt=`${Et}-copy`;for(;w.some(Q=>Q.name===wt);)Me++,wt=`${Et}-copy-${Me}`;m({name:wt,scope:Be.scope||"user",description:Be.description,template:Be.template,agent:Be.agent,model:Be.model}),N(wt)},e[36]=w,e[37]=m,e[38]=N,e[39]=ge):ge=e[39];const de=ge;let he;e[40]===Symbol.for("react.memo_cache_sentinel")?(he=Be=>{g(Be.name),i(Be)},e[40]=he):he=e[40];const se=he;let re;e[41]!==w||e[42]!==A||e[43]!==R||e[44]!==r||e[45]!==l||e[46]!==N||e[47]!==j||e[48]!==n?(re=async()=>{if(!r)return;const Be=l.trim().replace(/\s+/g,"-");if(!Be){E.error(n("settings.commands.sidebar.toast.commandNameRequired"));return}if(Be===r.name){i(null);return}if(w.some(Me=>Me.name===Be)){E.error(n("settings.commands.sidebar.toast.commandExists"));return}await A({name:Be,description:r.description,template:r.template,agent:r.agent,model:r.model},j)?await R(r.name,j)?(E.success(`Command renamed to "${Be}"`),N(Be)):E.error(n("settings.commands.sidebar.toast.removeOldAfterRenameFailed")):E.error(n("settings.commands.sidebar.toast.renameFailed")),i(null)},e[41]=w,e[42]=A,e[43]=R,e[44]=r,e[45]=l,e[46]=N,e[47]=j,e[48]=n,e[49]=re):re=e[49];const ue=re;let Ce,Se,ye,fe,_e,Ue;if(e[50]!==M||e[51]!==U||e[52]!==_||e[53]!==de||e[54]!==a||e[55]!==f||e[56]!==v||e[57]!==N||e[58]!==n){const Be=M.filter(ha),Et=M.filter($u);e[65]===Symbol.for("react.memo_cache_sentinel")?(_e=xe("flex h-full flex-col","bg-background"),e[65]=_e):_e=e[65];let Me;e[66]!==n?(Me=n("settings.commands.sidebar.title"),e[66]=n,e[67]=Me):Me=e[67];let wt;e[68]!==Me?(wt=s.jsx("h2",{className:`${un} mb-3`,children:Me}),e[68]=Me,e[69]=wt):wt=e[69];let Q;e[70]===Symbol.for("react.memo_cache_sentinel")?(Q=s.jsx(Ba,{className:"mb-3"}),e[70]=Q):Q=e[70];let pe;e[71]!==M.length||e[72]!==n?(pe=n("settings.commands.sidebar.total",{count:M.length}),e[71]=M.length,e[72]=n,e[73]=pe):pe=e[73];let De;e[74]!==pe?(De=s.jsx("span",{className:"typography-meta text-muted-foreground",children:pe}),e[74]=pe,e[75]=De):De=e[75];let Ae;e[76]===Symbol.for("react.memo_cache_sentinel")?(Ae=s.jsx(O,{name:"add",className:"h-3.5 w-3.5"}),e[76]=Ae):Ae=e[76];let it;e[77]!==U?(it=s.jsx(V,{size:"sm","data-settings-item":"commands.create",variant:"ghost",className:"h-7 w-7 px-0 -my-1 text-muted-foreground",onClick:U,children:Ae}),e[77]=U,e[78]=it):it=e[78];let rt;e[79]!==De||e[80]!==it?(rt=s.jsxs("div",{className:"flex items-center justify-between gap-2",children:[De,it]}),e[79]=De,e[80]=it,e[81]=rt):rt=e[81],e[82]!==wt||e[83]!==rt?(Ue=s.jsxs("div",{className:"border-b px-3 pt-4 pb-3",children:[wt,Q,rt]}),e[82]=wt,e[83]=rt,e[84]=Ue):Ue=e[84],Ce=vs,Se="flex-1 min-h-0",ye="space-y-1 px-3 py-2",fe=M.length===0?s.jsxs("div",{className:"py-12 px-4 text-center text-muted-foreground",children:[s.jsx(O,{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:[Be.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")}),[...Be].sort(Vu).map(qe=>s.jsx(ho,{command:qe,isSelected:v===qe.name,onSelect:()=>{N(qe.name),a?.()},onReset:()=>z(qe),onDuplicate:()=>de(qe),isMenuOpen:f===qe.name,onMenuOpenChange:Pt=>C(Pt?qe.name:null)},qe.name))]}),Et.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")}),[...Et].sort(Bu).map(qe=>s.jsx(ho,{command:qe,isSelected:v===qe.name,onSelect:()=>{N(qe.name),a?.()},onRename:()=>se(qe),onDelete:()=>_(qe),onDuplicate:()=>de(qe),isMenuOpen:f===qe.name,onMenuOpenChange:Pt=>C(Pt?qe.name:null)},qe.name))]})]}),e[50]=M,e[51]=U,e[52]=_,e[53]=de,e[54]=a,e[55]=f,e[56]=v,e[57]=N,e[58]=n,e[59]=Ce,e[60]=Se,e[61]=ye,e[62]=fe,e[63]=_e,e[64]=Ue}else Ce=e[59],Se=e[60],ye=e[61],fe=e[62],_e=e[63],Ue=e[64];let Ne;e[85]!==Ce||e[86]!==Se||e[87]!==ye||e[88]!==fe?(Ne=s.jsx(Ce,{outerClassName:Se,className:ye,children:fe}),e[85]=Ce,e[86]=Se,e[87]=ye,e[88]=fe,e[89]=Ne):Ne=e[89];const Oe=c!==null&&p!==null;let Ve;e[90]!==d?(Ve=Be=>{!Be&&!d&&te()},e[90]=d,e[91]=Ve):Ve=e[91];let Ge;e[92]!==p||e[93]!==n?(Ge=n(p==="delete"?"settings.commands.sidebar.dialog.deleteTitle":"settings.commands.sidebar.dialog.resetTitle"),e[92]=p,e[93]=n,e[94]=Ge):Ge=e[94];let ve;e[95]!==Ge?(ve=s.jsx($t,{children:Ge}),e[95]=Ge,e[96]=ve):ve=e[96];let Z;e[97]!==c?.name||e[98]!==p||e[99]!==n?(Z=p==="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]=p,e[99]=n,e[100]=Z):Z=e[100];let ne;e[101]!==Z?(ne=s.jsx(Vt,{children:Z}),e[101]=Z,e[102]=ne):ne=e[102];let be;e[103]!==ve||e[104]!==ne?(be=s.jsxs(_t,{children:[ve,ne]}),e[103]=ve,e[104]=ne,e[105]=be):be=e[105];let we;e[106]!==n?(we=n("settings.common.actions.cancel"),e[106]=n,e[107]=we):we=e[107];let Re;e[108]!==d||e[109]!==we?(Re=s.jsx(V,{size:"sm",variant:"ghost",onClick:te,disabled:d,children:we}),e[108]=d,e[109]=we,e[110]=Re):Re=e[110];let Fe;e[111]!==p||e[112]!==n?(Fe=n(p==="delete"?"settings.common.actions.delete":"settings.common.actions.reset"),e[111]=p,e[112]=n,e[113]=Fe):Fe=e[113];let Ke;e[114]!==ae||e[115]!==d||e[116]!==Fe?(Ke=s.jsx(V,{size:"sm",onClick:ae,disabled:d,children:Fe}),e[114]=ae,e[115]=d,e[116]=Fe,e[117]=Ke):Ke=e[117];let Ee;e[118]!==Re||e[119]!==Ke?(Ee=s.jsxs(ts,{children:[Re,Ke]}),e[118]=Re,e[119]=Ke,e[120]=Ee):Ee=e[120];let je;e[121]!==be||e[122]!==Ee?(je=s.jsxs(zt,{className:"max-w-md",children:[be,Ee]}),e[121]=be,e[122]=Ee,e[123]=je):je=e[123];let Ze;e[124]!==Oe||e[125]!==Ve||e[126]!==je?(Ze=s.jsx(Kt,{open:Oe,onOpenChange:Ve,children:je}),e[124]=Oe,e[125]=Ve,e[126]=je,e[127]=Ze):Ze=e[127];const me=r!==null;let Ie;e[128]===Symbol.for("react.memo_cache_sentinel")?(Ie=Be=>!Be&&i(null),e[128]=Ie):Ie=e[128];let Le;e[129]!==n?(Le=n("settings.commands.sidebar.renameDialog.title"),e[129]=n,e[130]=Le):Le=e[130];let Xe;e[131]!==Le?(Xe=s.jsx($t,{children:Le}),e[131]=Le,e[132]=Xe):Xe=e[132];const q=r?.name??"";let ke;e[133]!==n||e[134]!==q?(ke=n("settings.commands.sidebar.renameDialog.description",{name:q}),e[133]=n,e[134]=q,e[135]=ke):ke=e[135];let Pe;e[136]!==ke?(Pe=s.jsx(Vt,{children:ke}),e[136]=ke,e[137]=Pe):Pe=e[137];let Je;e[138]!==Xe||e[139]!==Pe?(Je=s.jsxs(_t,{children:[Xe,Pe]}),e[138]=Xe,e[139]=Pe,e[140]=Je):Je=e[140];let ot;e[141]===Symbol.for("react.memo_cache_sentinel")?(ot=Be=>g(Be.target.value),e[141]=ot):ot=e[141];let st;e[142]!==n?(st=n("settings.commands.sidebar.renameDialog.placeholder"),e[142]=n,e[143]=st):st=e[143];let pt;e[144]!==ue?(pt=Be=>{Be.key==="Enter"&&ue()},e[144]=ue,e[145]=pt):pt=e[145];let vt;e[146]!==l||e[147]!==st||e[148]!==pt?(vt=s.jsx(He,{value:l,onChange:ot,placeholder:st,className:"text-foreground placeholder:text-muted-foreground",onKeyDown:pt}),e[146]=l,e[147]=st,e[148]=pt,e[149]=vt):vt=e[149];let W;e[150]===Symbol.for("react.memo_cache_sentinel")?(W=()=>i(null),e[150]=W):W=e[150];let We;e[151]!==n?(We=n("settings.common.actions.cancel"),e[151]=n,e[152]=We):We=e[152];let nt;e[153]!==We?(nt=s.jsx(V,{size:"sm",variant:"ghost",onClick:W,children:We}),e[153]=We,e[154]=nt):nt=e[154];let lt;e[155]!==n?(lt=n("settings.common.actions.rename"),e[155]=n,e[156]=lt):lt=e[156];let ht;e[157]!==ue||e[158]!==lt?(ht=s.jsx(V,{size:"sm",onClick:ue,children:lt}),e[157]=ue,e[158]=lt,e[159]=ht):ht=e[159];let Lt;e[160]!==nt||e[161]!==ht?(Lt=s.jsxs(ts,{children:[nt,ht]}),e[160]=nt,e[161]=ht,e[162]=Lt):Lt=e[162];let et;e[163]!==Je||e[164]!==vt||e[165]!==Lt?(et=s.jsxs(zt,{children:[Je,vt,Lt]}),e[163]=Je,e[164]=vt,e[165]=Lt,e[166]=et):et=e[166];let ft;e[167]!==me||e[168]!==et?(ft=s.jsx(Kt,{open:me,onOpenChange:Ie,children:et}),e[167]=me,e[168]=et,e[169]=ft):ft=e[169];let bt;return e[170]!==_e||e[171]!==Ue||e[172]!==Ne||e[173]!==Ze||e[174]!==ft?(bt=s.jsxs("div",{className:_e,children:[Ue,Ne,Ze,ft]}),e[170]=_e,e[171]=Ue,e[172]=Ne,e[173]=Ze,e[174]=ft,e[175]=bt):bt=e[175],bt},ho=t=>{const e=ut.c(47),{command:a,isSelected:n,onSelect:r,onDelete:i,onReset:l,onRename:g,onDuplicate:c,isMenuOpen:y,onMenuOpenChange:p}=t,{t:b}=tt();let d;e[0]===Symbol.for("react.memo_cache_sentinel")?(d=_a(),e[0]=d):d=e[0];const P=d,[f,C]=o.useState(!1);let v;e[1]!==i||e[2]!==c||e[3]!==g||e[4]!==l||e[5]!==b?(v=J=>s.jsxs(s.Fragment,{children:[g&&s.jsxs(J,{onClick:ee=>{ee.stopPropagation(),g()},children:[s.jsx(O,{name:"edit",className:"h-4 w-4 mr-px"}),b("settings.common.actions.rename")]}),s.jsxs(J,{onClick:ee=>{ee.stopPropagation(),c()},children:[s.jsx(O,{name:"file-copy",className:"h-4 w-4 mr-px"}),b("settings.common.actions.duplicate")]}),l&&s.jsxs(J,{onClick:ee=>{ee.stopPropagation(),l()},children:[s.jsx(O,{name:"restart",className:"h-4 w-4 mr-px"}),b("settings.common.actions.reset")]}),i&&s.jsxs(J,{onClick:ee=>{ee.stopPropagation(),i()},className:"text-destructive focus:text-destructive",children:[s.jsx(O,{name:"delete-bin",className:"h-4 w-4 mr-px"}),b("settings.common.actions.delete")]})]}),e[1]=i,e[2]=c,e[3]=g,e[4]=l,e[5]=b,e[6]=v):v=e[6];const N=v,m=n?"bg-interactive-selection":"hover:bg-interactive-hover";let A;e[7]!==m?(A=xe("group relative flex items-center rounded-md px-1.5 py-1 transition-all duration-200 select-none",m),e[7]=m,e[8]=A):A=e[8];let R;e[9]===Symbol.for("react.memo_cache_sentinel")?(R=P?void 0:J=>{J.preventDefault(),C(!0)},e[9]=R):R=e[9];let I;e[10]!==A?(I=s.jsx("div",{className:A,onContextMenu:R}),e[10]=A,e[11]=I):I=e[11];let j;e[12]!==a.name?(j=s.jsxs("span",{className:"typography-ui-label font-normal truncate text-foreground",children:["/",a.name]}),e[12]=a.name,e[13]=j):j=e[13];let h;e[14]!==a||e[15]!==b?(h=(a.scope||ha(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:ha(a)?b("settings.agents.sidebar.badge.system"):a.scope}),e[14]=a,e[15]=b,e[16]=h):h=e[16];let w;e[17]!==j||e[18]!==h?(w=s.jsxs("div",{className:"flex items-center gap-2",children:[j,h]}),e[17]=j,e[18]=h,e[19]=w):w=e[19];let F;e[20]!==a.description?(F=a.description&&s.jsx("div",{className:"typography-micro text-muted-foreground/60 truncate leading-tight",children:a.description}),e[20]=a.description,e[21]=F):F=e[21];let T;e[22]!==r||e[23]!==F||e[24]!==w?(T=s.jsxs("button",{onClick:r,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-primary/50",tabIndex:0,children:[w,F]}),e[22]=r,e[23]=F,e[24]=w,e[25]=T):T=e[25];let S;e[26]!==p?(S=J=>{J&&C(!1),p(J)},e[26]=p,e[27]=S):S=e[27];let D;e[28]===Symbol.for("react.memo_cache_sentinel")?(D=s.jsx(on,{asChild:!0,children:s.jsx(V,{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(O,{name:"more-2",className:"h-3.5 w-3.5"})})}),e[28]=D):D=e[28];let $;e[29]!==N?($=s.jsx(ln,{align:"end",className:"w-fit min-w-20",children:N(dn)}),e[29]=N,e[30]=$):$=e[30];let B;e[31]!==y||e[32]!==S||e[33]!==$?(B=s.jsxs(cn,{open:y,onOpenChange:S,children:[D,$]}),e[31]=y,e[32]=S,e[33]=$,e[34]=B):B=e[34];let k;e[35]!==T||e[36]!==B?(k=s.jsxs("div",{className:"flex min-w-0 flex-1 items-center",children:[T,B]}),e[35]=T,e[36]=B,e[37]=k):k=e[37];let G;e[38]!==k||e[39]!==I?(G=s.jsx(Jn,{render:I,children:k}),e[38]=k,e[39]=I,e[40]=G):G=e[40];let M;e[41]!==N?(M=s.jsx(Wn,{className:"w-fit min-w-20",children:N(qn)}),e[41]=N,e[42]=M):M=e[42];let L;return e[43]!==f||e[44]!==G||e[45]!==M?(L=s.jsxs(Qn,{open:f,onOpenChange:C,children:[G,M]}),e[43]=f,e[44]=G,e[45]=M,e[46]=L):L=e[46],L};function zu(t){return{selectedCommandName:t.selectedCommandName,setSelectedCommand:t.setSelectedCommand,setCommandDraft:t.setCommandDraft,createCommand:t.createCommand,deleteCommand:t.deleteCommand,loadCommands:t.loadCommands}}function Uu(t){return t.loadSkills}function _u(t){return t.name}function $u(t){return!ha(t)}function Vu(t,e){return t.name.localeCompare(e.name)}function Bu(t,e){return t.name.localeCompare(e.name)}const Hu=()=>{const{t}=tt(),{selectedCommandName:e,getCommandByName:a,createCommand:n,updateCommand:r,commandDraft:i,setCommandDraft:l}=va(Us(D=>({selectedCommandName:D.selectedCommandName,getCommandByName:D.getCommandByName,createCommand:D.createCommand,updateCommand:D.updateCommand,commandDraft:D.commandDraft,setCommandDraft:D.setCommandDraft}))),g=_s(),c=va(D=>yl(D,g)),y=e?a(e,g):null,p=!!(i&&i.name===e&&!y),[b,d]=o.useState(""),[P,f]=o.useState("user"),[C,v]=o.useState(""),[N,m]=o.useState(""),[A,R]=o.useState(""),[I,j]=o.useState(""),[h,w]=o.useState(!1),F=o.useRef(null);o.useEffect(()=>{if(p&&i){const D=i.name||"",$=i.scope||"user",B=i.description||"",k=i.agent||"",G=i.model||"",M=i.template||"";d(D),f($),v(B),m(k),R(G),j(M),F.current={draftName:D,draftScope:$,description:B,agent:k,model:G,template:M}}else if(y){const D=y.description||"",$=y.agent||"",B=y.model||"",k=y.template||"";v(D),m($),R(B),j(k),F.current={draftName:"",draftScope:"user",description:D,agent:$,model:B,template:k}}},[y,p,e,c,i]);const T=o.useMemo(()=>{const D=F.current;return D?!!(p&&(b!==D.draftName||P!==D.draftScope)||C!==D.description||N!==D.agent||A!==D.model||I!==D.template):!1},[N,C,b,P,p,A,I]),S=async()=>{const D=p?b.trim().replace(/\s+/g,"-"):e?.trim();if(!D){E.error(t("settings.commands.sidebar.toast.commandNameRequired"));return}if(!I.trim()){E.error(t("settings.commands.page.toast.templateRequired"));return}if(p&&c.some($=>$.name===D)){E.error(t("settings.commands.sidebar.toast.commandExists"));return}w(!0);try{const $=N.trim(),B=A.trim(),k=I.trim(),G={name:D,description:C.trim()||void 0,agent:$===""?null:$,model:B===""?null:B,template:k,scope:p?P:void 0};let M;if(p?(M=await n(G,g),M&&l(null)):M=await r(D,G,g),M){const L=Vn.getState().changes.some(J=>J.scope==="commands"&&J.id.startsWith(`commands:${D}:`));E.success(t(L?"settings.view.pendingRestart.saved":p?"settings.commands.page.toast.created":"settings.commands.page.toast.updated"))}else E.error(t(p?"settings.commands.page.toast.createFailed":"settings.commands.page.toast.updateFailed"))}catch($){console.error("Error saving command:",$),E.error(t("settings.commands.page.toast.saveUnexpectedError"))}finally{w(!1)}};return e?s.jsxs(es,{title:p?t("settings.commands.page.title.new"):`/${e}`,description:t(p?"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:[p&&s.jsxs(Rt,{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(He,{value:b,onChange:D=>d(D.target.value),placeholder:t("settings.commands.page.field.commandNamePlaceholder"),className:"h-7 w-40 px-2"})]}),s.jsxs(St,{value:P,onValueChange:D=>f(D),children:[s.jsx(Ct,{size:Ft,className:"w-fit min-w-[100px]",children:s.jsx(Mt,{placeholder:t("settings.agents.page.field.scopePlaceholder")})}),s.jsxs(It,{align:"end",children:[s.jsx(at,{value:"user",children:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(O,{name:"user-3",className:"h-3.5 w-3.5"}),s.jsx("span",{children:t("settings.common.scope.global")})]})}),s.jsx(at,{value:"project",children:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(O,{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(Ts,{value:C,onChange:D=>v(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(Rt,{settingsItem:"commands.agent",label:t("settings.commands.page.field.overrideAgent"),children:s.jsx(bl,{agentName:N,onChange:D=>m(D),className:In})}),s.jsx(Rt,{settingsItem:"commands.model",label:t("settings.agents.page.field.overrideModel"),children:s.jsx(Fa,{providerId:xa(A)?.providerId??"",modelId:xa(A)?.modelId??"",onChange:(D,$)=>{R(D&&$?`${D}/${$}`:"")},className:In})})]}),s.jsxs(ze,{title:t("settings.commands.page.section.template"),settingsItem:"commands.template",children:[s.jsx(Ts,{value:I,onChange:D=>j(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(V,{onClick:S,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(O,{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")})]})})},fo=t=>{switch(t){case"connected":return"success";case"failed":return"error";case"needs_auth":case"needs_client_registration":return"warning";default:return"idle"}},xo=t=>{const e=ut.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 r;e[1]!==a?(r=xe("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]=r):r=e[2];let i;return e[3]!==r?(i=s.jsx("span",{className:r}),e[3]=r,e[4]=i):i=e[4],i},Gu=t=>{const e=ut.c(124),{onItemSelect:a}=t,{t:n}=tt(),{selectedMcpName:r,setSelectedMcp:i,setMcpDraft:l,loadMcpConfigs:g,deleteMcp:c}=ya(Us(Wu)),y=_s();let p;e[0]!==y?(p=q=>wl(q,y),e[0]=y,e[1]=p):p=e[1];const b=ya(p);let d;e[2]!==y?(d=q=>q.getStatusForDirectory(y),e[2]=y,e[3]=d):d=e[3];const P=Ks(d),f=Ks(qu),C=Ks(Ju),[v,N]=o.useState(null),[m,A]=o.useState(!1),[R,I]=o.useState(null),[j,h]=o.useState(null),[w,F]=o.useState(!1);let T;e[4]!==b?(T=b.filter(Qu),e[4]=b,e[5]=T):T=e[5];const S=T;let D;e[6]!==b?(D=b.filter(Yu),e[6]=b,e[7]=D):D=e[7];const $=D;let B,k;e[8]!==g||e[9]!==y?(B=()=>{g({directory:y})},k=[g,y],e[8]=g,e[9]=y,e[10]=B,e[11]=k):(B=e[10],k=e[11]),o.useEffect(B,k);let G;e[12]!==C||e[13]!==w||e[14]!==f||e[15]!==y?(G=()=>{if(w)return;F(!0);const q=new Promise(Zu);Promise.all([f({directory:y,silent:!0}),q]).then(()=>{const ke=C(y);ke&&E.error(ke)}).finally(()=>{F(!1)})},e[12]=C,e[13]=w,e[14]=f,e[15]=y,e[16]=G):G=e[16];const M=G;let L;e[17]!==b||e[18]!==a||e[19]!==l||e[20]!==i?(L=()=>{let q="new-mcp-server",ke=1;for(;b.some(Je=>Je.name===q);)q=`new-mcp-server-${ke}`,ke++;l({name:q,scope:"user",type:"local",command:[],url:"",environment:[],headers:[],oauthEnabled:!0,oauthClientId:"",oauthClientSecret:"",oauthScope:"",oauthRedirectUri:"",timeout:"",enabled:!0}),i(q),a?.()},e[17]=b,e[18]=a,e[19]=l,e[20]=i,e[21]=L):L=e[21];const J=L;let ee;e[22]!==c||e[23]!==v||e[24]!==y||e[25]!==n?(ee=async()=>{if(!v)return;A(!0);const q=await c(v.name,y);q.ok?q.reloadFailed?E.warning(q.message||`MCP server "${v.name}" deleted, but OpenCode reload failed`,{description:q.warning||n("settings.mcp.sidebar.toast.refreshListIfStale")}):E.success(q.message||n("settings.mcp.sidebar.toast.serverDeleted",{name:v.name})):E.error(n("settings.mcp.sidebar.toast.deleteFailed")),N(null),A(!1)},e[22]=c,e[23]=v,e[24]=y,e[25]=n,e[26]=ee):ee=e[26];const U=ee;let le;e[27]!==n?(le=(q,ke)=>s.jsxs(ke,{onClick:Pe=>{Pe.stopPropagation(),N(q)},className:"text-destructive focus:text-destructive",children:[s.jsx(O,{name:"delete-bin",className:"h-4 w-4 mr-px"}),n("settings.common.actions.delete")]}),e[27]=n,e[28]=le):le=e[28];const _=le;let H;e[29]===Symbol.for("react.memo_cache_sentinel")?(H=xe("flex h-full flex-col","bg-background"),e[29]=H):H=e[29];let z;e[30]!==n?(z=n("settings.mcp.sidebar.title"),e[30]=n,e[31]=z):z=e[31];let K;e[32]!==z?(K=s.jsx("h2",{className:un,children:z}),e[32]=z,e[33]=K):K=e[33];let te;e[34]!==n?(te=n("settings.mcp.sidebar.actions.refreshStatusAria"),e[34]=n,e[35]=te):te=e[35];let Y;e[36]!==n?(Y=n("settings.mcp.sidebar.actions.refreshStatusTitle"),e[36]=n,e[37]=Y):Y=e[37];const ae=w&&"animate-spin";let ge;e[38]!==ae?(ge=xe("h-4 w-4",ae),e[38]=ae,e[39]=ge):ge=e[39];let de;e[40]!==ge?(de=s.jsx(O,{name:"refresh",className:ge}),e[40]=ge,e[41]=de):de=e[41];let he;e[42]!==M||e[43]!==w||e[44]!==te||e[45]!==Y||e[46]!==de?(he=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-primary",disabled:w,onClick:M,"aria-label":te,title:Y,children:de}),e[42]=M,e[43]=w,e[44]=te,e[45]=Y,e[46]=de,e[47]=he):he=e[47];let se;e[48]!==K||e[49]!==he?(se=s.jsxs("div",{className:"mb-3 flex items-center justify-between gap-3",children:[K,he]}),e[48]=K,e[49]=he,e[50]=se):se=e[50];let re;e[51]===Symbol.for("react.memo_cache_sentinel")?(re=s.jsx(Ba,{className:"mb-3"}),e[51]=re):re=e[51];let ue;e[52]!==b.length||e[53]!==n?(ue=n("settings.mcp.sidebar.total",{count:b.length}),e[52]=b.length,e[53]=n,e[54]=ue):ue=e[54];let Ce;e[55]!==ue?(Ce=s.jsx("span",{className:"typography-meta text-muted-foreground",children:ue}),e[55]=ue,e[56]=Ce):Ce=e[56];let Se;e[57]!==n?(Se=n("settings.mcp.sidebar.actions.addServerTitle"),e[57]=n,e[58]=Se):Se=e[58];let ye;e[59]===Symbol.for("react.memo_cache_sentinel")?(ye=s.jsx(O,{name:"add",className:"h-3.5 w-3.5"}),e[59]=ye):ye=e[59];let fe;e[60]!==J||e[61]!==Se?(fe=s.jsx(V,{size:"sm","data-settings-item":"mcp.create",variant:"ghost",className:"h-7 w-7 px-0 -my-1 text-muted-foreground",onClick:J,title:Se,children:ye}),e[60]=J,e[61]=Se,e[62]=fe):fe=e[62];let _e;e[63]!==Ce||e[64]!==fe?(_e=s.jsxs("div",{className:"flex items-center justify-between gap-2",children:[Ce,fe]}),e[63]=Ce,e[64]=fe,e[65]=_e):_e=e[65];let Ue;e[66]!==se||e[67]!==_e?(Ue=s.jsxs("div",{className:"border-b px-3 pt-4 pb-3",children:[se,re,_e]}),e[66]=se,e[67]=_e,e[68]=Ue):Ue=e[68];let Ne;e[69]!==b.length||e[70]!==P||e[71]!==a||e[72]!==R||e[73]!==S||e[74]!==_||e[75]!==j||e[76]!==r||e[77]!==l||e[78]!==i||e[79]!==n||e[80]!==$?(Ne=s.jsx(vs,{outerClassName:"flex-1 min-h-0",className:"space-y-1 px-3 py-2 overflow-x-hidden",children:b.length===0?s.jsxs("div",{className:"py-12 px-4 text-center text-muted-foreground",children:[s.jsx(O,{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:[S.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")}),S.map(q=>{const ke=P[q.name],Pe=fo(ke?.status),Je=r===q.name,ot=_a();return s.jsxs(Qn,{open:j===q.name,onOpenChange:st=>h(st?q.name:null),children:[s.jsxs(Jn,{render:s.jsx("div",{className:xe("group relative flex items-center rounded-md px-1.5 py-1 transition-all duration-200 select-none",Je?"bg-interactive-selection":"hover:bg-interactive-hover"),onContextMenu:ot?void 0:st=>{st.preventDefault(),h(q.name)}}),children:[s.jsxs("button",{onClick:()=>{i(q.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-primary/50",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(xo,{tone:Pe,enabled:q.enabled}),s.jsx("span",{className:"typography-ui-label font-normal truncate text-foreground",children:q.name}),s.jsx("span",{title:q.type==="local"?n("settings.mcp.sidebar.serverType.localTitle"):n("settings.mcp.sidebar.serverType.remoteTitle"),children:q.type==="local"?s.jsx(O,{name:"server",className:"h-3 w-3 text-muted-foreground/60 flex-shrink-0"}):s.jsx(O,{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:q.type==="local"?q.command?.join(" ")??"":q.url??""})]}),s.jsxs(cn,{open:R===q.name,onOpenChange:st=>{st&&h(null),I(st?q.name:null)},children:[s.jsx(on,{asChild:!0,children:s.jsx(V,{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(O,{name:"more-2",className:"h-3.5 w-3.5"})})}),s.jsx(ln,{align:"end",className:"w-fit min-w-20",children:_(q,dn)})]})]}),s.jsx(Wn,{className:"w-fit min-w-20",children:_(q,qn)})]},q.name)})]}),$.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")}),$.map(q=>{const ke=P[q.name],Pe=fo(ke?.status),Je=r===q.name,ot=_a();return s.jsxs(Qn,{open:j===q.name,onOpenChange:st=>h(st?q.name:null),children:[s.jsxs(Jn,{render:s.jsx("div",{className:xe("group relative flex items-center rounded-md px-1.5 py-1 transition-all duration-200 select-none",Je?"bg-interactive-selection":"hover:bg-interactive-hover"),onContextMenu:ot?void 0:st=>{st.preventDefault(),h(q.name)}}),children:[s.jsxs("button",{onClick:()=>{i(q.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-primary/50",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(xo,{tone:Pe,enabled:q.enabled}),s.jsx("span",{className:"typography-ui-label font-normal truncate text-foreground",children:q.name}),s.jsx("span",{title:q.type==="local"?n("settings.mcp.sidebar.serverType.localTitle"):n("settings.mcp.sidebar.serverType.remoteTitle"),children:q.type==="local"?s.jsx(O,{name:"server",className:"h-3 w-3 text-muted-foreground/60 flex-shrink-0"}):s.jsx(O,{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:q.type==="local"?q.command?.join(" ")??"":q.url??""})]}),s.jsxs(cn,{open:R===q.name,onOpenChange:st=>{st&&h(null),I(st?q.name:null)},children:[s.jsx(on,{asChild:!0,children:s.jsx(V,{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(O,{name:"more-2",className:"h-3.5 w-3.5"})})}),s.jsx(ln,{align:"end",className:"w-fit min-w-20",children:_(q,dn)})]})]}),s.jsx(Wn,{className:"w-fit min-w-20",children:_(q,qn)})]},q.name)})]})]})}),e[69]=b.length,e[70]=P,e[71]=a,e[72]=R,e[73]=S,e[74]=_,e[75]=j,e[76]=r,e[77]=l,e[78]=i,e[79]=n,e[80]=$,e[81]=Ne):Ne=e[81];const Oe=v!==null;let Ve;e[82]!==m?(Ve=q=>{!q&&!m&&N(null)},e[82]=m,e[83]=Ve):Ve=e[83];let Ge;e[84]!==n?(Ge=n("settings.mcp.sidebar.deleteDialog.title"),e[84]=n,e[85]=Ge):Ge=e[85];let ve;e[86]!==Ge?(ve=s.jsx($t,{children:Ge}),e[86]=Ge,e[87]=ve):ve=e[87];const Z=v?.name||"";let ne;e[88]!==n||e[89]!==Z?(ne=n("settings.mcp.sidebar.deleteDialog.descriptionPrefix",{name:Z}),e[88]=n,e[89]=Z,e[90]=ne):ne=e[90];let be;e[91]===Symbol.for("react.memo_cache_sentinel")?(be=s.jsx("code",{className:"text-foreground",children:"opencode.json"}),e[91]=be):be=e[91];let we;e[92]!==ne?(we=s.jsxs(Vt,{children:[ne," ",be,"."]}),e[92]=ne,e[93]=we):we=e[93];let Re;e[94]!==ve||e[95]!==we?(Re=s.jsxs(_t,{children:[ve,we]}),e[94]=ve,e[95]=we,e[96]=Re):Re=e[96];let Fe;e[97]===Symbol.for("react.memo_cache_sentinel")?(Fe=()=>N(null),e[97]=Fe):Fe=e[97];let Ke;e[98]!==n?(Ke=n("settings.common.actions.cancel"),e[98]=n,e[99]=Ke):Ke=e[99];let Ee;e[100]!==m||e[101]!==Ke?(Ee=s.jsx(V,{size:"sm",variant:"ghost",onClick:Fe,disabled:m,children:Ke}),e[100]=m,e[101]=Ke,e[102]=Ee):Ee=e[102];let je;e[103]!==m||e[104]!==n?(je=n(m?"settings.mcp.sidebar.actions.deleting":"settings.common.actions.delete"),e[103]=m,e[104]=n,e[105]=je):je=e[105];let Ze;e[106]!==U||e[107]!==m||e[108]!==je?(Ze=s.jsx(V,{size:"sm",onClick:U,disabled:m,children:je}),e[106]=U,e[107]=m,e[108]=je,e[109]=Ze):Ze=e[109];let me;e[110]!==Ee||e[111]!==Ze?(me=s.jsxs(ts,{children:[Ee,Ze]}),e[110]=Ee,e[111]=Ze,e[112]=me):me=e[112];let Ie;e[113]!==Re||e[114]!==me?(Ie=s.jsxs(zt,{className:"max-w-md",children:[Re,me]}),e[113]=Re,e[114]=me,e[115]=Ie):Ie=e[115];let Le;e[116]!==Oe||e[117]!==Ve||e[118]!==Ie?(Le=s.jsx(Kt,{open:Oe,onOpenChange:Ve,children:Ie}),e[116]=Oe,e[117]=Ve,e[118]=Ie,e[119]=Le):Le=e[119];let Xe;return e[120]!==Ue||e[121]!==Ne||e[122]!==Le?(Xe=s.jsxs("div",{className:H,children:[Ue,Ne,Le]}),e[120]=Ue,e[121]=Ne,e[122]=Le,e[123]=Xe):Xe=e[123],Xe};function Wu(t){return{selectedMcpName:t.selectedMcpName,setSelectedMcp:t.setSelectedMcp,setMcpDraft:t.setMcpDraft,loadMcpConfigs:t.loadMcpConfigs,deleteMcp:t.deleteMcp}}function qu(t){return t.refresh}function Ju(t){return t.getErrorForDirectory}function Qu(t){return t.scope==="project"}function Yu(t){return t.scope!=="project"}function Zu(t){return setTimeout(t,500)}function an(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Pa(t){return Array.isArray(t)&&t.every(e=>typeof e=="string")}function nn(t,e){return e!==void 0?{ok:!1,error:t,parsed:e}:{ok:!1,error:t}}function ri(t,e,a){const n=Xu(a),r=typeof a.url=="string"?a.url.trim():"",i=vo(a,"env","environment"),l=vo(a,"headers"),g=ep(a),c=typeof a.oauth=="object"&&a.oauth!==null?String(a.oauth.clientId??"").trim():"",y=typeof a.oauth=="object"&&a.oauth!==null?String(a.oauth.clientSecret??"").trim():"",p=typeof a.oauth=="object"&&a.oauth!==null?String(a.oauth.scope??"").trim():"",b=typeof a.oauth=="object"&&a.oauth!==null?String(a.oauth.redirectUri??"").trim():"",d=tp(a),P=sp(a);return{ok:!0,name:t,type:e,command:n,url:r,environment:i,headers:l,oauthEnabled:g,oauthClientId:c,oauthClientSecret:y,oauthScope:p,oauthRedirectUri:b,timeout:d,enabled:P}}function Xu(t){const e=t.command,a=t.args;if(Pa(e)&&Pa(a))return[...e,...a];if(Pa(e))return e;if(typeof e=="string"&&e.trim()){const n=e.trim().split(/\s+/);return Pa(a)?[...n,...a]:n}return Pa(a)?a:[]}function vo(t,...e){for(const a of e){const n=t[a];if(!an(n))continue;const r=Object.entries(n).filter(([i,l])=>i&&typeof l=="string");if(r.length>0)return r.map(([i,l])=>({key:i,value:String(l)}))}return[]}function ep(t){if(t.oauth===!1||t.oauth===null||t.oauth===void 0||!an(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 tp(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 sp(t){return"disabled"in t&&t.disabled===!0?!1:"enabled"in t?!!t.enabled:!0}function np(t){const e=t.mcpServers;if(an(e)){const n=Object.keys(e);if(n.length===1){const r=n[0],i=e[r];if(an(i))return{name:r,entry:i}}if(n.length>1)return null}const a=Object.keys(t).filter(n=>{const r=t[n];return n!=="mcpServers"&&an(r)});if(a.length===1){const n=a[0],r=t[n];if($l(r))return{name:n,entry:r}}return null}function $l(t){return t.type==="local"||t.type==="remote"||Array.isArray(t.command)||typeof t.url=="string"||Array.isArray(t.args)}function ap(t,e){let a;try{const g=t.trim();if(!g)return nn("No JSON content provided");a=JSON.parse(g)}catch(g){return nn(g instanceof Error?`Invalid JSON: ${g.message}`:"Invalid JSON")}if(!an(a))return nn("Expected a JSON object, not an array or primitive");const n=a,r=n.mcpServers;if(an(r)){const g=Object.keys(r);if(g.length===0)return nn("mcpServers object is empty",a);if(g.length>1)return nn("Paste one server at a time. Found "+g.length+" servers in mcpServers",a);const c=g[0],y=r[c];return an(y)?ri(c,oi(y),y):nn("Server entry is not a valid object",a)}const i=n.mcp;if(an(i)){const g=Object.keys(i);if(g.length===0)return nn("mcp object is empty",a);if(g.length>1)return nn("Paste one server at a time. Found "+g.length+" servers in mcp",a);const c=g[0],y=i[c];return an(y)?ri(c,oi(y),y):nn("Server entry in mcp is not a valid object",a)}const l=np(n);if(l)return ri(l.name,oi(l.entry),l.entry);if($l(n)){const g=oi(n),c=typeof n.name=="string"&&n.name.trim()?n.name.trim():e?.fallbackName;return ri(c,g,n)}return nn("No recognizable MCP server configuration found in JSON",a)}function oi(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 ip(t,e,a){const n=a?.isNewServer??!1,r=t.name,i=n&&r?r:e.name??"";return{...e,name:i,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 Vl(t){const e=[];let a="",n=!1,r=!1;for(let i=0;i<t.length;i++){const l=t[i];if(l==="'"&&!r){n=!n;continue}if(l==='"'&&!n){r=!r;continue}if((l===" "||l===" ")&&!n&&!r){a&&(e.push(a),a="");continue}a+=l}return a&&e.push(a),e}function rp(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:Nc(a.searchParams),stateKey:jl(a.searchParams)}}catch{}return{code:e,context:null,stateKey:null}}const op=t=>{const e=ut.c(27),{value:a,onChange:n,preview:r,onDetectUrl:i}=t;let l;e[0]!==a?(l=()=>a.join(`
|
|
4
4
|
`),e[0]=a,e[1]=l):l=e[1];const[g,c]=o.useState(l),y=o.useRef(a);let p,b;e[2]!==a?(p=()=>{JSON.stringify(y.current)!==JSON.stringify(a)&&(y.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-B6OfEypo.js";import{S as w}from"./SettingsView-CojPQVHx.js";import{n as k,l as v,m as D,j as S,D as R}from"./vendor-base-ui-BY_5qla_.js";import"./vendor-scheduler-7OC5HNn7.js";import"./index-BD8ILbxF.js";import"./vendor-zod-B6551dwG.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-livSKyyV.js";import"./vendor-motion-dom-D_o3BTI3.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-tanstack-react-virtual-g05Cx3z9.js";import"./vendor-tanstack-virtual-core-Dubg10g5.js";import"./contextPanelEmbeddedChat-BdA6bdky.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-SJuFp0a0.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-BLzrtrmj.js";import"./vendor-yaml-3778uTud.js";import"./shikiHighlight-ctlcPvvx.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-BK0dHKa6.js";import"./registerCustomTheme-BBXUCRnG.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-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";const Co=h=>{const t=y.c(19),{open:c,onOpenChange:i}=h,{t:f}=j(),r=b.useId(),x=_;let e;t[0]!==i?(e=g=>{!g&&x()||i(g)},t[0]=i,t[1]=e):e=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 p;t[4]!==f?(p=f("settings.window.description"),t[4]=f,t[5]=p):p=t[5];let m;t[6]!==r||t[7]!==p?(m=o.jsx(v,{id:r,className:"sr-only",children:p}),t[6]=r,t[7]=p,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]!==e||t[17]!==s?(d=o.jsx(R,{open:c,onOpenChange:e,children:s}),t[15]=c,t[16]=e,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{Co as SettingsWindow};
|