shioricode 0.5.2 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -1
- package/dist/BunHttpServer-BvXfeDdm.cjs +375 -0
- package/dist/BunPTY-l5TwbZzE.cjs +91 -0
- package/dist/BunServices-07vLsX26.cjs +74 -0
- package/dist/NodeHttpServer-OQzpZjfj.cjs +4142 -0
- package/dist/NodePTY-BNeKL1sW.cjs +86 -0
- package/dist/NodeSqliteClient-K1HOOjni.cjs +147 -0
- package/dist/SqlError-UTW5yuSG.cjs +262 -0
- package/dist/SqliteClient-CVOnk2wf.cjs +125 -0
- package/dist/bin.cjs +703700 -0
- package/dist/bin.mjs +386 -142
- package/dist/client/apple-touch-icon.png +0 -0
- package/dist/client/assets/{ArtifactPanel-BPQ8FX7l.js → ArtifactPanel-ClA97FO8.js} +2 -2
- package/dist/client/assets/{ChatMarkdown-jcE8Pq97.js → ChatMarkdown-DkldD1_B.js} +2 -2
- package/dist/client/assets/{DiffPanel-CPmbtIC0.js → DiffPanel-BYSH-G7M.js} +2 -2
- package/dist/client/assets/{DiffPanelShell-CqS9jPrk.js → DiffPanelShell-Ce2wOE9L.js} +2 -2
- package/dist/client/assets/{DiffWorkerPoolProvider-CEnxoS9v.js → DiffWorkerPoolProvider-DjSdGkRQ.js} +2 -2
- package/dist/client/assets/{NoActiveThreadState-Bt_jFQ4-.js → NoActiveThreadState-CVDfDuF2.js} +2 -2
- package/dist/client/assets/{ProviderModelPicker-BRDu3BzU.js → ProviderModelPicker-BFlX8lZL.js} +2 -2
- package/dist/client/assets/{SettingsPanels-BX2dAbn4.js → SettingsPanels-_8_YaXgc.js} +2 -2
- package/dist/client/assets/{_chat-C_aCgqFw.js → _chat-CQ5UewiP.js} +2 -2
- package/dist/client/assets/{_chat._threadId-DLIOcnXQ.js → _chat._threadId-5846z-_l.js} +5 -5
- package/dist/client/assets/{_chat.index-B9u7xlCv.js → _chat.index-DI7egWLc.js} +2 -2
- package/dist/client/assets/{automations-CJVFqqLv.js → automations-D6SQKJ83.js} +2 -2
- package/dist/client/assets/{dialog-BwIZs3EF.js → dialog-CZ2IjObB.js} +2 -2
- package/dist/client/assets/{index-DKZPXV4a.js → index-B42nGfCf.js} +4 -4
- package/dist/client/assets/{pull-requests-CQHYo-fV.js → pull-requests-DGa0NhIZ.js} +2 -2
- package/dist/client/assets/{settings-i7-rb7s9.js → settings-BwPioqTL.js} +2 -2
- package/dist/client/assets/{settings.appearance-Dwkl1cOq.js → settings.appearance-DxQzPuf5.js} +2 -2
- package/dist/client/assets/{settings.archived-DZPSjNZJ.js → settings.archived-BSqIxOKY.js} +2 -2
- package/dist/client/assets/{settings.computer-use-CLy6GP7W.js → settings.computer-use-DuuUffvc.js} +2 -2
- package/dist/client/assets/{settings.general-CuNCor2d.js → settings.general-DjIbwGSI.js} +2 -2
- package/dist/client/assets/{settings.mcp-DwWQDGSB.js → settings.mcp-CHZOA1L-.js} +2 -2
- package/dist/client/assets/{settings.mobile-B73fICiz.js → settings.mobile-D3UiSzxp.js} +2 -2
- package/dist/client/assets/{settings.plugins-BjW05gj4.js → settings.plugins-qo7Fls2x.js} +2 -2
- package/dist/client/assets/{settings.remote-D_iWhzEN.js → settings.remote-CmdhJhKY.js} +2 -2
- package/dist/client/assets/{settings.skills-BCB4uvnE.js → settings.skills-UB5Wtkl5.js} +2 -2
- package/dist/client/assets/{settings.theme-builder-CS2XB4es.js → settings.theme-builder-CnwNYRga.js} +2 -2
- package/dist/client/favicon-16x16.png +0 -0
- package/dist/client/favicon-32x32.png +0 -0
- package/dist/client/favicon.ico +0 -0
- package/dist/client/index.html +1 -1
- package/package.json +38 -5
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dist-C5QFNSAb.js","assets/vendor-diffs-TCBcYN7E.js","assets/rolldown-runtime-COnpUsM8.js","assets/vendor--effect-atom-react-6hEhKm5I.js","assets/vendor--lexical-react-B6TeCrpE.js","assets/vendor--floating-ui-react-dom-CGq-bz3X.js","assets/vendor--floating-ui-dom-DVB6wHsF.js","assets/vendor--floating-ui-core-jOdbuRxe.js","assets/vendor--lexical-clipboard-WreJbm08.js","assets/vendor--lexical-dragon-BWkDBdfg.js","assets/vendor--lexical-history-BmCIf2Hc.js","assets/vendor--lexical-plain-text-Dk9Pmo4j.js","assets/vendor--shikijs-core-BvuCEFk2.js","assets/vendor--shikijs-engine-javascript-9nIWxzwA.js","assets/vendor--shikijs-engine-oniguruma-CHLjiLaC.js","assets/vendor--shikijs-transformers-llbiZRed.js","assets/vendor-diff-BC6ceXD2.js","assets/DiffPanel-
|
|
2
|
-
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{A as t,C as n,Ci as r,Zn as i,b as a,k as o,m as s}from"./vendor--effect-atom-react-6hEhKm5I.js";import{c}from"./vendor--floating-ui-react-dom-CGq-bz3X.js";import{t as l}from"./vendor-react-BvVnE5E6.js";import{C as u,T as d,c as f,d as p,i as m,m as h,n as g,o as _,t as v,w as y}from"./vendor-tanstack-CM5SpFmF.js";import{a as b,c as x,i as S,n as C,o as w,r as T,s as E,t as D}from"./vendor--lexical-react-B6TeCrpE.js";import{t as O}from"./vendor--xterm-xterm-B85yPPkf.js";import{C as k,E as A,M as j,P as M,h as N,j as P,l as F,s as I,u as L,w as R}from"./clientSettings-DFgmWajw.js";import"./vendor-effect-Chd9hYxF.js";import{Z as z,a as B,c as ee,ct as te,i as ne,l as V,o as re,q as ie,r as H,rt as ae,st as oe,t as U,tt as se}from"./utils-B-Di8CjF.js";import{t as ce}from"./vendor-class-variance-authority-M1Ix6tns.js";import{A as le,At as ue,B as de,Bt as fe,C as pe,Ct as me,D as he,Dt as ge,Et as _e,F as ve,Ft as ye,H as be,Ht as xe,I as Se,Jt as W,Kt as Ce,L as we,Lt as Te,M as Ee,Mt as De,N as Oe,Nt as ke,O as Ae,Ot as je,P as Me,Pt as Ne,Q as Pe,R as Fe,Rt as Ie,S as Le,St as Re,T as ze,Tt as Be,U as Ve,Ut as He,V as Ue,Vt as We,W as Ge,Wt as Ke,X as qe,Z as Je,_ as Ye,_t as Xe,a as Ze,at as Qe,b as $e,bt as et,c as tt,ct as nt,d as rt,dt as it,et as at,f as ot,ft as st,g as ct,gt as lt,h as ut,ht as dt,i as ft,j as pt,jt as mt,k as ht,kt as gt,lt as _t,m as vt,mt as yt,nt as bt,o as xt,ot as St,p as Ct,pt as wt,q as Tt,qt as Et,st as Dt,tt as Ot,u as kt,ut as At,v as jt,vt as Mt,w as Nt,wt as Pt,x as Ft,y as It,yt as Lt,z as Rt,zt}from"./store-LT9wKN7R.js";import{n as Bt,r as Vt,t as Ht}from"./terminalStateStore-B-V7Awi_.js";import{t as Ut}from"./uiStateStore-CgvPrTF8.js";import{$ as Wt,$n as Gt,A as Kt,An as qt,B as Jt,Bn as Yt,Cn as Xt,Dn as Zt,En as Qt,Er as $t,F as en,Fn as tn,Fr as nn,G as rn,Gn as an,H as on,Hn as sn,In as cn,Ir as ln,Jn as un,K as dn,Kn as fn,Ln as pn,Mn as mn,Nn as hn,Nr as gn,P as _n,Pn as vn,Pr as yn,Q as bn,R as xn,Tn as Sn,Un as Cn,Ur as wn,V as Tn,Vr as En,W as Dn,Wn as On,Wr as kn,Z as An,_r as jn,_t as Mn,ar as Nn,bn as Pn,cr as Fn,d as In,dr as Ln,et as Rn,f as zn,fr as Bn,ft as Vn,g as Hn,gr as Un,gt as Wn,h as Gn,ht as Kn,ir as qn,j as Jn,jn as Yn,jr as Xn,kn as Zn,kr as Qn,l as $n,lr as er,m as tr,mr as nr,nr as rr,or as ir,p as ar,pr as or,pt as sr,q as cr,qn as lr,rr as ur,tr as dr,ur as fr,vn as pr,vr as mr,yn as hr,yt as gr,z as _r,zn as vr}from"./vendor-ui-Ds9VgrYb.js";import{n as yr,r as br}from"./useSettings-CaigvboL.js";import{a as xr,r as Sr,t as Cr}from"./useHandleNewThread-Chs2blac.js";import"./dotmatrix-core-CnY83Cc6.js";import"./dotm-hex-5-BHMk4AiZ.js";import{Un as wr}from"./vendor-diffs-TCBcYN7E.js";import{c as Tr,d as Er,f as Dr,i as Or,n as kr,t as Ar,u as jr}from"./gitReactQuery-BxToLb49.js";import{t as Mr}from"./input-CthhcRBE.js";import{t as Nr}from"./scroll-area-D6P_hAXV.js";import{t as Pr}from"./separator-ByukCTaZ.js";import{A as Fr,At as Ir,C as Lr,Ct as Rr,Dt as zr,E as Br,Et as Vr,G as Hr,H as Ur,K as Wr,M as Gr,Ot as Kr,S as qr,St as G,T as Jr,Tt as Yr,V as Xr,W as Zr,X as Qr,Y as $r,_ as ei,_t as ti,at as ni,bt as ri,ct as K,d as ii,dt as ai,ft as oi,g as si,gt as ci,h as li,ht as ui,it as di,kt as fi,lt as pi,mt as mi,nt as hi,ot as gi,p as _i,pt as vi,q as yi,rt as bi,s as xi,st as Si,t as Ci,ut as wi,v as Ti,vt as Ei,w as Di,wt as Oi,xt as ki,yt as Ai}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dist-C5QFNSAb.js","assets/vendor-diffs-TCBcYN7E.js","assets/rolldown-runtime-COnpUsM8.js","assets/vendor--effect-atom-react-6hEhKm5I.js","assets/vendor--lexical-react-B6TeCrpE.js","assets/vendor--floating-ui-react-dom-CGq-bz3X.js","assets/vendor--floating-ui-dom-DVB6wHsF.js","assets/vendor--floating-ui-core-jOdbuRxe.js","assets/vendor--lexical-clipboard-WreJbm08.js","assets/vendor--lexical-dragon-BWkDBdfg.js","assets/vendor--lexical-history-BmCIf2Hc.js","assets/vendor--lexical-plain-text-Dk9Pmo4j.js","assets/vendor--shikijs-core-BvuCEFk2.js","assets/vendor--shikijs-engine-javascript-9nIWxzwA.js","assets/vendor--shikijs-engine-oniguruma-CHLjiLaC.js","assets/vendor--shikijs-transformers-llbiZRed.js","assets/vendor-diff-BC6ceXD2.js","assets/DiffPanel-BYSH-G7M.js","assets/index-B42nGfCf.js","assets/clientSettings-DFgmWajw.js","assets/utils-B-Di8CjF.js","assets/vendor-class-variance-authority-M1Ix6tns.js","assets/vendor-effect-Chd9hYxF.js","assets/vendor-tailwind-merge-BB8g8WaZ.js","assets/vendor-ui-Ds9VgrYb.js","assets/vendor-tanstack-CM5SpFmF.js","assets/vendor-motion-dom-B1NO2AyA.js","assets/vendor-reselect-BSJZJSJu.js","assets/vendor-tabbable-BbbBzppI.js","assets/vendor-react-BvVnE5E6.js","assets/useHandleNewThread-Chs2blac.js","assets/store-LT9wKN7R.js","assets/vendor-zustand-qsUGoIcm.js","assets/useSettings-CaigvboL.js","assets/uiStateStore-CgvPrTF8.js","assets/dotmatrix-core-CnY83Cc6.js","assets/dotmatrix-core-71nPaRVi.css","assets/dotm-hex-5-BHMk4AiZ.js","assets/input-CthhcRBE.js","assets/scroll-area-D6P_hAXV.js","assets/separator-ByukCTaZ.js","assets/gitReactQuery-BxToLb49.js","assets/terminalStateStore-B-V7Awi_.js","assets/vendor--xterm-xterm-B85yPPkf.js","assets/vendor--xterm-xterm-BrP-ENHg.css","assets/index-BgrJjdw5.css","assets/DiffPanelShell-Ce2wOE9L.js","assets/DiffWorkerPoolProvider-DjSdGkRQ.js","assets/useTheme-7QjQMsSZ.js","assets/toggle-group-CMWeXyeK.js","assets/toggle-uzFsauJb.js","assets/ArtifactPanel-ClA97FO8.js","assets/ChatMarkdown-DkldD1_B.js","assets/vendor-markdown-DHoMS86o.js","assets/vendor--ungap-structured-clone-gq95-Rac.js","assets/vendor-bail-DhrDEj3K.js","assets/vendor-decode-named-character-reference-BSa-H5E1.js","assets/vendor-devlop-CczaZgST.js","assets/vendor-extend-BW3CRMi7.js","assets/vendor-hast-util-raw-DrJxi__t.js","assets/vendor-entities-DUknvTjV.js","assets/vendor-hast-util-from-dom-au1lVC4c.js","assets/vendor-hast-util-from-parse5-DmgJK_2_.js","assets/vendor-hast-util-to-jsx-runtime-Cj_7lYX5.js","assets/vendor-estree-util-is-identifier-name-DorDRIRc.js","assets/vendor-html-url-attributes-D4rN65P3.js","assets/vendor-is-plain-obj-BHbCDlbd.js","assets/vendor-longest-streak-CMXHzExg.js","assets/vendor-escape-string-regexp-p5L46G1N.js","assets/vendor-rehype-katex-Cslyo582.js","assets/vendor-hast-util-from-html-isomorphic-K8KOY4Zz.js","assets/vendor-hast-util-to-text-dhtewVzz.js","assets/vendor-hast-util-is-element-D35XnMcP.js","assets/vendor-katex-C_40Fys8.js","assets/vendor-katex-CSceNpVM.css","assets/vendor-rehype-raw-CztSeCAV.js","assets/vendor-remark-math-MaPo0twq.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{A as t,C as n,Ci as r,Zn as i,b as a,k as o,m as s}from"./vendor--effect-atom-react-6hEhKm5I.js";import{c}from"./vendor--floating-ui-react-dom-CGq-bz3X.js";import{t as l}from"./vendor-react-BvVnE5E6.js";import{C as u,T as d,c as f,d as p,i as m,m as h,n as g,o as _,t as v,w as y}from"./vendor-tanstack-CM5SpFmF.js";import{a as b,c as x,i as S,n as C,o as w,r as T,s as E,t as D}from"./vendor--lexical-react-B6TeCrpE.js";import{t as O}from"./vendor--xterm-xterm-B85yPPkf.js";import{C as k,E as A,M as j,P as M,h as N,j as P,l as F,s as I,u as L,w as R}from"./clientSettings-DFgmWajw.js";import"./vendor-effect-Chd9hYxF.js";import{Z as z,a as B,c as ee,ct as te,i as ne,l as V,o as re,q as ie,r as H,rt as ae,st as oe,t as U,tt as se}from"./utils-B-Di8CjF.js";import{t as ce}from"./vendor-class-variance-authority-M1Ix6tns.js";import{A as le,At as ue,B as de,Bt as fe,C as pe,Ct as me,D as he,Dt as ge,Et as _e,F as ve,Ft as ye,H as be,Ht as xe,I as Se,Jt as W,Kt as Ce,L as we,Lt as Te,M as Ee,Mt as De,N as Oe,Nt as ke,O as Ae,Ot as je,P as Me,Pt as Ne,Q as Pe,R as Fe,Rt as Ie,S as Le,St as Re,T as ze,Tt as Be,U as Ve,Ut as He,V as Ue,Vt as We,W as Ge,Wt as Ke,X as qe,Z as Je,_ as Ye,_t as Xe,a as Ze,at as Qe,b as $e,bt as et,c as tt,ct as nt,d as rt,dt as it,et as at,f as ot,ft as st,g as ct,gt as lt,h as ut,ht as dt,i as ft,j as pt,jt as mt,k as ht,kt as gt,lt as _t,m as vt,mt as yt,nt as bt,o as xt,ot as St,p as Ct,pt as wt,q as Tt,qt as Et,st as Dt,tt as Ot,u as kt,ut as At,v as jt,vt as Mt,w as Nt,wt as Pt,x as Ft,y as It,yt as Lt,z as Rt,zt}from"./store-LT9wKN7R.js";import{n as Bt,r as Vt,t as Ht}from"./terminalStateStore-B-V7Awi_.js";import{t as Ut}from"./uiStateStore-CgvPrTF8.js";import{$ as Wt,$n as Gt,A as Kt,An as qt,B as Jt,Bn as Yt,Cn as Xt,Dn as Zt,En as Qt,Er as $t,F as en,Fn as tn,Fr as nn,G as rn,Gn as an,H as on,Hn as sn,In as cn,Ir as ln,Jn as un,K as dn,Kn as fn,Ln as pn,Mn as mn,Nn as hn,Nr as gn,P as _n,Pn as vn,Pr as yn,Q as bn,R as xn,Tn as Sn,Un as Cn,Ur as wn,V as Tn,Vr as En,W as Dn,Wn as On,Wr as kn,Z as An,_r as jn,_t as Mn,ar as Nn,bn as Pn,cr as Fn,d as In,dr as Ln,et as Rn,f as zn,fr as Bn,ft as Vn,g as Hn,gr as Un,gt as Wn,h as Gn,ht as Kn,ir as qn,j as Jn,jn as Yn,jr as Xn,kn as Zn,kr as Qn,l as $n,lr as er,m as tr,mr as nr,nr as rr,or as ir,p as ar,pr as or,pt as sr,q as cr,qn as lr,rr as ur,tr as dr,ur as fr,vn as pr,vr as mr,yn as hr,yt as gr,z as _r,zn as vr}from"./vendor-ui-Ds9VgrYb.js";import{n as yr,r as br}from"./useSettings-CaigvboL.js";import{a as xr,r as Sr,t as Cr}from"./useHandleNewThread-Chs2blac.js";import"./dotmatrix-core-CnY83Cc6.js";import"./dotm-hex-5-BHMk4AiZ.js";import{Un as wr}from"./vendor-diffs-TCBcYN7E.js";import{c as Tr,d as Er,f as Dr,i as Or,n as kr,t as Ar,u as jr}from"./gitReactQuery-BxToLb49.js";import{t as Mr}from"./input-CthhcRBE.js";import{t as Nr}from"./scroll-area-D6P_hAXV.js";import{t as Pr}from"./separator-ByukCTaZ.js";import{A as Fr,At as Ir,C as Lr,Ct as Rr,Dt as zr,E as Br,Et as Vr,G as Hr,H as Ur,K as Wr,M as Gr,Ot as Kr,S as qr,St as G,T as Jr,Tt as Yr,V as Xr,W as Zr,X as Qr,Y as $r,_ as ei,_t as ti,at as ni,bt as ri,ct as K,d as ii,dt as ai,ft as oi,g as si,gt as ci,h as li,ht as ui,it as di,kt as fi,lt as pi,mt as mi,nt as hi,ot as gi,p as _i,pt as vi,q as yi,rt as bi,s as xi,st as Si,t as Ci,ut as wi,v as Ti,vt as Ei,w as Di,wt as Oi,xt as ki,yt as Ai}from"./index-B42nGfCf.js";import{a as ji,d as Mi,f as Ni,l as Pi,o as Fi,r as Ii,u as Li}from"./DiffPanelShell-Ce2wOE9L.js";import{r as Ri,t as zi}from"./useTheme-7QjQMsSZ.js";import"./vendor--shikijs-core-BvuCEFk2.js";import"./vendor-hast-util-to-jsx-runtime-Cj_7lYX5.js";import"./vendor-hast-util-raw-DrJxi__t.js";import"./vendor-extend-BW3CRMi7.js";import"./vendor-katex-C_40Fys8.js";import{a as Bi,i as q,n as Vi,o as J,r as Hi,s as Ui,t as Wi}from"./ChatMarkdown-DkldD1_B.js";import"./vendor--shikijs-engine-javascript-9nIWxzwA.js";import"./vendor-diff-BC6ceXD2.js";import{n as Gi,t as Ki}from"./DiffWorkerPoolProvider-DjSdGkRQ.js";import{t as qi}from"./toggle-uzFsauJb.js";import{t as Ji}from"./assistantPersonalityOptions-35I7ygr6.js";import{a as Yi,c as Xi,i as Zi,n as Qi,o as $i,r as ea,s as ta,t as na}from"./ProviderModelPicker-BFlX8lZL.js";import{t as ra}from"./NoActiveThreadState-CVDfDuF2.js";import{t as ia}from"./vendor--xterm-addon-fit-DakFApj0.js";import{At as aa,Ft as oa,H as sa,I as ca,L as la,Lt as ua,M as da,Mt as fa,St as pa,V as ma,X as Y,at as ha,g as ga,h as _a,ht as va,jt as ya,kt as ba,l as xa,mt as Sa,p as Ca,q as wa,rt as Ta,v as Ea,w as Da}from"./vendor--lexical-clipboard-WreJbm08.js";import{a as Oa,c as ka,i as Aa,o as ja,r as Ma,s as Na,t as Pa}from"./dialog-CZ2IjObB.js";import{t as Fa}from"./textarea-DAzODx1v.js";import{t as Ia}from"./badge-iReKY3O4.js";import{n as La,t as Ra}from"./queuedTurnsStore-CYufNsaQ.js";import{t as za}from"./DockedSidebarResizeHandle-C2HyIoOR.js";var X=l(),Z=e(r(),1),Ba=`about:blank`;function Va(e){return/^[a-z][a-z0-9+.-]*:/i.test(e)}function Ha(e){let t=e.trim();return t.length===0?Ba:t===`about:blank`?t:t.startsWith(`/`)||t.startsWith(`~/`)?`file://${t.startsWith(`~`),t}`:t.startsWith(`localhost`)||t.startsWith(`127.0.0.1`)||t.startsWith(`0.0.0.0`)||/^\[[0-9a-f:]+\]/i.test(t)?`http://${t}`:Va(t)?t:`https://${t}`}function Ua(e){return`persist:shioricode-browser-${encodeURIComponent(e)}`}function Wa(e){try{let t=e.getURL?.()??e.getAttribute(`src`)??``;return t===`about:blank`?``:t}catch{return``}}function Ga(e,t){try{let t=e.getTitle?.().trim()??``;if(t.length>0)return t}catch{}if(t.length===0)return`New page`;try{return new URL(t).hostname||t}catch{return t}}function Ka(e,t){let n=e[t];if(typeof n!=`function`)return!1;try{return!!n.call(e)}catch{return!1}}function qa(e,t){let n=Wa(e);return{title:Ga(e,n),url:n,isLoading:Ka(e,`isLoading`),canGoBack:Ka(e,`canGoBack`),canGoForward:Ka(e,`canGoForward`),error:t}}function Ja(e){return`
|
|
3
3
|
(() => {
|
|
4
4
|
const maxElements = ${Math.min(Math.max(e.maxElements??80,0),500)};
|
|
5
5
|
const cssEscape = (value) => {
|
|
@@ -284,6 +284,6 @@ import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{A as t,C as n,Ci as r,
|
|
|
284
284
|
|
|
285
285
|
`}`}function o_(e,t){let n=Math.max(1,Math.floor(e))===1?`Expired terminal context`:`Expired terminal contexts`;return t===`empty`?{title:`${n} won't be sent`,description:`Remove it or re-add it to include terminal output.`}:{title:`${n} omitted from message`,description:`Re-add it if you want that terminal output included.`}}function s_(e){return e.enabled&&e.installed&&(e.status===`warning`||e.status===`error`)&&e.message?.toLowerCase().includes(`timed out while running command.`)===!0}function c_(e){return!e||e.status===`ready`||e.status===`disabled`||s_(e)||zt(e)?null:e}function l_(e){return!!(e&&(e.latestTurn!==null||e.messages.length>0||e.session!==null))}async function u_(e,t=1e3){let n=()=>ft.getState().threads.find(t=>t.id===e);return n()?!0:await new Promise(r=>{let i=!1,a=null,o=e=>{i||(i=!0,a!==null&&globalThis.clearTimeout(a),s(),r(e))},s=ft.subscribe(t=>{t.threads.some(t=>t.id===e)&&o(!0)});if(n()){o(!0);return}a=globalThis.setTimeout(()=>{o(!1)},t)})}async function d_(e,t=1e3){let n=()=>ft.getState().threads.find(t=>t.id===e);return l_(n())?!0:await new Promise(r=>{let i=!1,a=null,o=e=>{i||(i=!0,a!==null&&globalThis.clearTimeout(a),s(),r(e))},s=ft.subscribe(t=>{l_(t.threads.find(t=>t.id===e))&&o(!0)});if(l_(n())){o(!0);return}a=globalThis.setTimeout(()=>{o(!1)},t)})}var f_=5e3,p_=420,m_=`${Math.round(ie/(1024*1024))}MB`,h_=`[User attached one or more images without additional text. Respond using the conversation context and the attached image(s).]`,g_=[],__=[],v_=[],y_={},b_={insert:`INSERT`,normal:`NORMAL`,visual:`VISUAL`,"visual-line":`V-LINE`};function x_(e){let t=(0,X.c)(2),{mode:n}=e,r=b_[n],i;return t[0]===r?i=t[1]:(i=(0,Q.jsx)(`span`,{className:`pointer-events-none absolute right-3 top-2 inline-flex h-5 items-center rounded-full border border-border/50 bg-card/85 px-2 font-medium text-[9px] text-muted-foreground/65 shadow-sm backdrop-blur-sm sm:right-4 sm:top-2.5`,"data-testid":`composer-vim-mode`,children:r}),t[0]=r,t[1]=i),i}function S_(e){return e.enabled&&e.installed&&(e.status===`warning`||e.status===`error`)}var C_=new Ui(500,512*1024);function w_(e){return Math.max(64,e.id.length+e.proposedPlans.reduce((e,t)=>e+t.id.length+t.planMarkdown.length+t.updatedAt.length+(t.turnId?.length??0),0))}function T_(e){let t=C_.get(e.id);if(t&&t.proposedPlans===e.proposedPlans)return t.entry;let n={id:e.id,proposedPlans:e.proposedPlans};return C_.set(e.id,{proposedPlans:e.proposedPlans,entry:n},w_(e)),n}function E_(e){return ft((0,Z.useMemo)(()=>{let t=null,n=[];return r=>{let i=e.map(e=>r.threads.find(t=>t.id===e)),a=t;return a&&i.length===a.length&&i.every((e,t)=>e===a[t])?n:(t=i,n=i.flatMap(e=>e?[T_(e)]:[]),n)}},[e]))}function D_(e){let t=ke(e.models,e.model,e.provider);return e.effort&&t.promptInjectedEffortLevels.includes(e.effort)?He(e.text,e.effort):e.text}function O_(e){return e?.options?{[e.provider]:e.options}:null}function k_(e){return`${e} doesn't support image attachments. Remove the images or switch to a multimodal model.`}var A_=`Review the recent changes and suggest improvements.`,j_=`Compact this thread's context. Preserve the current goal, constraints, important files, decisions, unfinished work, and the best next steps so we can continue cleanly later.`,M_=`Connect to ShioriCode and open a synced thread first.`,N_=120,P_=(e,t,n)=>n.endsWith(` `)&&e[t]===` `?t+1:t,F_=(e,t)=>{let n=new Map(e.map(e=>[e.id,e]));return t.flatMap(e=>{let t=n.get(e);return t?[t]:[]})},I_=(e,t)=>e.length===t.length&&e.every((e,n)=>e.id===t[n]);function L_(e){let t=(0,X.c)(4),n=e.emptyThread?`mt-2 max-w-[44rem]`:`max-w-3xl pb-3 pt-1`,r;t[0]===n?r=t[1]:(r=U(`relative z-10 mx-auto flex min-h-4 w-full min-w-0 items-center justify-center px-5 text-center text-muted-foreground/55 text-xs`,n),t[0]=n,t[1]=r);let i;return t[2]===r?i=t[3]:(i=(0,Q.jsx)(`div`,{"aria-hidden":`true`,className:r}),t[2]=r,t[3]=i),i}function R_(e){return ft((0,Z.useMemo)(()=>{let t=null,n=null,r=[],i=null,a=[],o={serverThreadIds:r,parentThread:i,childThreads:a};return s=>(t!==s.threads&&(t=s.threads,!e.isServerThread||!e.serverThreadId?(i=null,a=[]):(i=e.parentThreadId===null?null:s.threads.find(t=>t.id===e.parentThreadId)??null,a=s.threads.filter(t=>t.parentThreadId===e.serverThreadId).toSorted((e,t)=>e.createdAt.localeCompare(t.createdAt)||e.id.localeCompare(t.id)))),n!==s.threadIdsByProjectId&&(n=s.threadIdsByProjectId,r=Object.values(s.threadIdsByProjectId).flat()),o.serverThreadIds===r&&o.parentThread===i&&o.childThreads===a||(o={serverThreadIds:r,parentThread:i,childThreads:a}),o)},[e.isServerThread,e.parentThreadId,e.serverThreadId]))}function z_(e){let t=(0,X.c)(27),n;t[0]===e.threadId?n=t[1]:(n=t=>e.threadId?t.pendingThreadDispatchById[e.threadId]??null:null,t[0]=e.threadId,t[1]=n);let r=ft(n),i=ft(V_),a=ft(B_),o;t[2]!==i||t[3]!==e.activeThread||t[4]!==e.threadId?(o=t=>{if(!e.threadId)return;let n=!!t?.preparingWorktree,r=ft.getState().pendingThreadDispatchById[e.threadId]??null,a=r?r.preparingWorktree===n?r:{...r,preparingWorktree:n}:Ze(e.activeThread,t);i(e.threadId,a)},t[2]=i,t[3]=e.activeThread,t[4]=e.threadId,t[5]=o):o=t[5];let s=o,c;t[6]!==a||t[7]!==e.threadId?(c=()=>{e.threadId&&a(e.threadId)},t[6]=a,t[7]=e.threadId,t[8]=c):c=t[8];let l=c,u,d=e.activePendingApproval!==null,f=e.activePendingUserInput!==null,p;t[9]!==e.activeLatestTurn||t[10]!==e.activities||t[11]!==e.phase||t[12]!==e.threadError||t[13]!==r||t[14]!==d||t[15]!==f?(p=xt({localDispatch:r,phase:e.phase,latestTurn:e.activeLatestTurn,activities:e.activities,hasPendingApproval:d,hasPendingUserInput:f,threadError:e.threadError}),t[9]=e.activeLatestTurn,t[10]=e.activities,t[11]=e.phase,t[12]=e.threadError,t[13]=r,t[14]=d,t[15]=f,t[16]=p):p=t[16],u=p;let m=u,h,g;t[17]!==l||t[18]!==m?(h=()=>{m&&l()},g=[l,m],t[17]=l,t[18]=m,t[19]=h,t[20]=g):(h=t[19],g=t[20]),(0,Z.useEffect)(h,g);let _=r?.startedAt??null,v=r?.preparingWorktree??!1,y=r!==null&&!m,b;return t[21]!==s||t[22]!==l||t[23]!==v||t[24]!==y||t[25]!==_?(b={beginLocalDispatch:s,resetLocalDispatch:l,localDispatchStartedAt:_,isPreparingWorktree:v,isSendBusy:y},t[21]=s,t[22]=l,t[23]=v,t[24]=y,t[25]=_,t[26]=b):b=t[26],b}function B_(e){return e.clearPendingThreadDispatch}function V_(e){return e.beginPendingThreadDispatch}function H_({threadId:e,visible:t,focusRequestId:n,splitShortcutLabel:r,newShortcutLabel:i,closeShortcutLabel:a,onAddTerminalContext:o}){let s=xr(e),c=St(t=>t.draftThreadsByThreadId[e]??null),l=Sr(s?.projectId??c?.projectId),u=Vt(t=>Bt(t.terminalStateByThreadId,e)),d=Vt(e=>e.setTerminalHeight),f=Vt(e=>e.splitTerminal),p=Vt(e=>e.newTerminal),m=Vt(e=>e.setActiveTerminal),h=Vt(e=>e.closeTerminal),[g,_]=(0,Z.useState)(0),v=!!u.terminalOpen,[y,b]=(0,Z.useState)(v),[x,S]=(0,Z.useState)(v?`open`:`closed`),C=(0,Z.useRef)(null),w=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{if(w.current!==null&&(clearTimeout(w.current),w.current=null),v){b(!0);let e=null,t=requestAnimationFrame(()=>{e=requestAnimationFrame(()=>S(`open`))});return()=>{cancelAnimationFrame(t),e!==null&&cancelAnimationFrame(e)}}return S(`closed`),w.current=setTimeout(()=>{b(!1),w.current=null},220),()=>{w.current!==null&&(clearTimeout(w.current),w.current=null)}},[v]);let T=s?.worktreePath??c?.worktreePath??null,E=(0,Z.useMemo)(()=>l?T??l.cwd:null,[l,T]),D=(0,Z.useMemo)(()=>l?{SHIORICODE_PROJECT_ROOT:l.cwd,...T?{SHIORICODE_WORKTREE_PATH:T}:{}}:{},[l,T]),O=(0,Z.useCallback)(()=>{t&&_(e=>e+1)},[t]),k=(0,Z.useCallback)(t=>{d(e,t)},[d,e]),A=(0,Z.useCallback)(()=>{f(e,`terminal-${V()}`),O()},[O,f,e]),j=(0,Z.useCallback)(()=>{p(e,`terminal-${V()}`),O()},[O,p,e]),M=(0,Z.useCallback)(t=>{m(e,t),O()},[O,m,e]),P=(0,Z.useCallback)(t=>{let n=N();if(!n)return;let r=u.terminalIds.length<=1,i=()=>n.terminal.write({threadId:e,terminalId:t,data:`exit
|
|
286
286
|
`}).catch(()=>void 0);`close`in n.terminal&&typeof n.terminal.close==`function`?(async()=>{r&&await n.terminal.clear({threadId:e,terminalId:t}).catch(()=>void 0),await n.terminal.close({threadId:e,terminalId:t,deleteHistory:!0})})().catch(()=>i()):i(),h(e,t),O()},[O,h,u.terminalIds.length,e]),F=(0,Z.useCallback)(e=>{t&&o(e)},[o,t]);if(!l||!y||!E)return null;let I=!t&&!(!v&&y),L=u.terminalHeight;return(0,Q.jsx)(`div`,{ref:C,style:{display:I?`none`:`block`,height:x===`open`?`${L}px`:`0px`,overflow:`hidden`,willChange:`height, opacity`,opacity:x===`open`?1:0,transition:x===`open`?`height 200ms ease-in, opacity 200ms ease-in`:`height 200ms ease-out, opacity 200ms ease-out`},children:(0,Q.jsx)(`div`,{style:{height:`${L}px`},children:(0,Q.jsx)(cc,{threadId:e,cwd:E,runtimeEnv:D,visible:t,height:u.terminalHeight,terminalIds:u.terminalIds,activeTerminalId:u.activeTerminalId,terminalGroups:u.terminalGroups,activeTerminalGroupId:u.activeTerminalGroupId,focusRequestId:n+g+(t?1:0),onSplitTerminal:A,onNewTerminal:j,splitShortcutLabel:t?r:void 0,newShortcutLabel:t?i:void 0,closeShortcutLabel:t?a:void 0,onActiveTerminalChange:M,onCloseTerminal:P,onHeightChange:k,onAddTerminalContext:F})})})}function U_({isFocusedPane:e=!0,threadId:t}){let n=xr(t),r=ft(e=>e.setError),i=ft(e=>e.setThreadBranch),a=Ut(e=>e.markThreadVisited),o=Ut(e=>e.threadLastVisitedAtById[t]),s=yr(),{updateSettings:c}=br(),l=St(e=>e.setStickyModelSelection),u=s.timestampFormat,g=y(),_=d({strict:!1,select:e=>pi(e)}),v=e?_:_.panes?{panes:_.panes}:{},{resolvedTheme:b}=zi(),x=f(kr({queryClient:h()})),S=Dt(t),C=S.prompt,w=S.images,T=S.terminalContexts,E=(0,Z.useMemo)(()=>e_({prompt:C,imageCount:w.length,terminalContexts:T}),[w.length,T,C]),D=S.nonPersistedImageIds,O=St(e=>e.setPrompt),j=St(e=>e.setModelSelection),P=St(e=>e.setProviderModelOptions),F=St(e=>e.setRuntimeMode),L=St(e=>e.setInteractionMode),z=St(e=>e.addImage),te=St(e=>e.addImages),ne=St(e=>e.removeImage),ie=St(e=>e.insertTerminalContext),ae=St(e=>e.addTerminalContexts),oe=St(e=>e.removeTerminalContext),ce=St(e=>e.setTerminalContexts),le=St(e=>e.clearPersistedAttachments),ue=St(e=>e.syncPersistedAttachments),de=St(e=>e.clearComposerContent),me=St(e=>e.setDraftThreadContext),ge=St(e=>e.getDraftThreadByProjectId),_e=St(e=>e.getDraftThread),ve=St(e=>e.setProjectDraftThreadId),be=St(e=>e.clearProjectDraftThreadId),Se=St(e=>e.draftThreadsByThreadId[t]??null),W=(0,Z.useRef)(C),[we,Ee]=(0,Z.useState)(!1),[De,Oe]=(0,Z.useState)(!1),je=(0,Z.useRef)({showScrollToBottom:!1,isScrolledFromTop:!1}),Me=(0,Z.useRef)(null),Fe=(0,Z.useRef)(null),Re=(0,Z.useRef)(new Set),Be=(0,Z.useRef)(new Map),[Ve,He]=(0,Z.useState)(()=>new Set),[Ue,Xe]=(0,Z.useState)(!1),[Ze,et]=(0,Z.useState)(null),[it,st]=(0,Z.useState)([]),dt=(0,Z.useRef)(it);dt.current=it;let pt=(0,Z.useRef)(T),[mt,gt]=(0,Z.useState)({}),[xt,At]=(0,Z.useState)(!1),[Mt,Pt]=(0,Z.useState)(!1),[Lt,Rt]=(0,Z.useState)([]),[zt,Ht]=(0,Z.useState)(null),[Wt,Gt]=(0,Z.useState)([]),[Kt,qt]=(0,Z.useState)({}),[Jt,Yt]=(0,Z.useState)({}),[Xt,Qt]=(0,Z.useState)({}),[$t,en]=(0,Z.useState)(!1),[tn,nn]=(0,Z.useState)(!1),[rn,an]=(0,Z.useState)(!1),[on,cn]=(0,Z.useState)(()=>s.composerVimMode?`insert`:null),[ln,un]=(0,Z.useState)(!0),[dn,fn]=(0,Z.useState)(!0),[pn,mn]=(0,Z.useState)(!0),hn=(0,Z.useRef)(null),gn=(0,Z.useRef)(!1),[_n,vn]=(0,Z.useState)(0),[yn,bn]=(0,Z.useState)(null),[xn,Sn]=(0,Z.useState)(null),[Cn,wn]=(0,Z.useState)({}),[Tn,En]=(0,Z.useState)(()=>Po(C,C.length)),[Dn,On]=(0,Z.useState)(()=>Io(C,C.length)),[An,jn]=(0,Z.useState)(!1),Mn=(0,Z.useRef)(null),[Nn,Pn]=(0,Z.useState)(null),Fn=(0,Z.useRef)(!0),In=(0,Z.useRef)(0),Ln=(0,Z.useRef)(0),Rn=(0,Z.useRef)(!1),zn=(0,Z.useRef)(null),Vn=(0,Z.useRef)(!1),Hn=(0,Z.useRef)(null),Un=(0,Z.useRef)(0),Wn=(0,Z.useRef)(null),Gn=(0,Z.useRef)(null),Kn=(0,Z.useRef)(null),Jn=(0,Z.useRef)(null),Yn=(0,Z.useRef)(0),Xn=(0,Z.useRef)(null),Zn=(0,Z.useRef)(null),Qn=(0,Z.useRef)(null),$n=(0,Z.useRef)([]),er=(0,Z.useRef)(!1),tr=(0,Z.useRef)(!1),nr=(0,Z.useRef)([]),ir=(0,Z.useRef)(null),ar=(0,Z.useRef)({}),or=(0,Z.useRef)({}),sr=(0,Z.useRef)(!1),cr=(0,Z.useRef)(new Map),lr=(0,Z.useRef)(0),dr=(0,Z.useRef)({}),fr=(0,Z.useCallback)(e=>{Mn.current=e,Pn(e)},[]),pr=Vt(e=>e.terminalStateByThreadId),mr=(0,Z.useMemo)(()=>Bt(pr,t),[pr,t]),hr=(0,Z.useMemo)(()=>Object.entries(pr).flatMap(([e,t])=>t.terminalOpen?[e]:[]),[pr]),gr=Vt(e=>e.setTerminalOpen),_r=Vt(e=>e.splitTerminal),vr=Vt(e=>e.newTerminal),Cr=Vt(e=>e.closeTerminal),{branchThread:wr}=bi(),Tr=La(e=>Ra(e.queuedTurnsByThreadId,t)),Dr=La(e=>e.enqueueQueuedTurn),Or=La(e=>e.removeQueuedTurn),Ar=St(e=>e.draftThreadsByThreadId),jr=(0,Z.useMemo)(()=>Object.keys(Ar),[Ar]),[Mr,Nr]=(0,Z.useState)([]),Pr=(0,Z.useCallback)(e=>{O(t,e)},[O,t]),Lr=(0,Z.useCallback)(e=>{z(t,e)},[z,t]),Rr=(0,Z.useCallback)(e=>{te(t,e)},[te,t]),zr=(0,Z.useCallback)(e=>{ae(t,e)},[ae,t]),Br=(0,Z.useCallback)(e=>{ne(t,e)},[ne,t]),Ur=(0,Z.useCallback)(e=>{let n=T.findIndex(t=>t.id===e);if(n<0)return;let r=lt(W.current,n);W.current=r.prompt,Pr(r.prompt),oe(t,e),En(r.cursor),On(Io(r.prompt,Ao(r.prompt,r.cursor)))},[T,oe,Pr,t]),Gr=Sr(Se?.projectId),Kr=n?null:mt[t]??null,qr=(0,Z.useMemo)(()=>Se?Kg(t,Se,Gr?.defaultModelSelection??{provider:`codex`,model:se.codex},Kr):void 0,[Se,Gr?.defaultModelSelection,Kr,t]),G=n??qr,Jr=S.runtimeMode??G?.runtimeMode??`full-access`,Xr=S.interactionMode??G?.interactionMode??`default`,Zr=n!==void 0,Qr=!Zr&&qr!==void 0,$r=Qr,ei=Ir(),ti=wi(v,{browserEnabled:ei}),ni=ti===`diff`,ri=ti===`browser`,K=G?.id??null,{serverThreadIds:ii,parentThread:si,childThreads:ci}=R_({isServerThread:Zr,serverThreadId:n?.id,parentThreadId:n?.parentThreadId??null}),li=(0,Z.useMemo)(()=>{let e=new Set([...ii,...jr]);return hr.filter(t=>e.has(t))},[jr,hr,ii]),ui=G?.latestTurn??null,hi=E_((0,Z.useMemo)(()=>{let e=[];G?.id&&e.push(G.id);let t=ui?.sourceProposedPlan?.threadId;return t&&t!==G?.id&&e.push(t),e},[ui?.sourceProposedPlan?.threadId,G?.id])),gi=(0,Z.useMemo)(()=>fc(G?.activities??[]),[G?.activities]);(0,Z.useEffect)(()=>{Nr(e=>{let t=qg({currentThreadIds:e,openThreadIds:li,activeThreadId:K,activeThreadTerminalOpen:!!(K&&mr.terminalOpen),maxHiddenThreadCount:10});return e.length===t.length&&e.every((e,n)=>e===t[n])?e:t})},[K,li,mr.terminalOpen]);let _i=he(ui,G?.session??null),Si=Sr(G?.projectId),Ci=G?.projectId===null,Ti=Si!==void 0,Ei=(0,Z.useCallback)(async()=>{if(!(!Zr||!n))try{await wr(n.id)}catch(e){di.add({type:`error`,title:`Could not branch thread`,description:e instanceof Error?e.message:`An unknown error occurred.`})}},[wr,Zr,n]),Di=(0,Z.useCallback)(e=>{$r&&(Sn({initialReference:e??null,key:Date.now()}),bn(null))},[$r]),Oi=(0,Z.useCallback)(()=>{Sn(null)},[]),ki=(0,Z.useCallback)(async e=>{if(!Si)throw Error(`No active project is available for this pull request.`);let n=ge(Si.id);if(n)return me(n.threadId,e),ve(Si.id,n.threadId,e),n.threadId!==t&&await g({to:`/$threadId`,params:{threadId:n.threadId}}),n.threadId;let r=_e(t);if(!Zr&&r?.projectId===Si.id)return me(t,e),ve(Si.id,t,e),t;be(Si.id);let i=ee();return ve(Si.id,i,{createdAt:new Date().toISOString(),runtimeMode:Et,interactionMode:Ce,...e}),await g({to:`/$threadId`,params:{threadId:i}}),i},[Si,be,_e,ge,Zr,g,me,ve,t]),Ai=(0,Z.useCallback)(async e=>{await ki({branch:e.branch,worktreePath:e.worktreePath,envMode:e.worktreePath?`worktree`:`local`})},[ki]);(0,Z.useEffect)(()=>{if(!n?.id||!_i||!ui?.completedAt)return;let e=Date.parse(ui.completedAt);if(Number.isNaN(e))return;let t=o?Date.parse(o):NaN;!Number.isNaN(t)&&t>=e||a(n.id)},[ui?.completedAt,o,_i,a,n?.id]);let ji=G?.session?.provider??null,Mi=S.activeProvider??null,Ni=G?.modelSelection.provider??Si?.defaultModelSelection?.provider??null,Pi=l_(G),Fi=Pi?ji??Ni??Mi??null:null,Ii=R()?.providers??v_,Li=(0,Z.useMemo)(()=>({kimiCode:Ii.find(e=>e.provider===`kimiCode`)?.models??[],gemini:Ii.find(e=>e.provider===`gemini`)?.models??[],glm:Ii.find(e=>e.provider===`glm`)?.models??[],cursor:Ii.find(e=>e.provider===`cursor`)?.models??[],codex:Ii.find(e=>e.provider===`codex`)?.models??[],claudeAgent:Ii.find(e=>e.provider===`claudeAgent`)?.models??[]}),[Ii]),Ri=(0,Z.useRef)(!1),Bi=xe(Ii,Mi??Ni??`codex`),q=Fi??Bi,{modelOptions:Vi,selectedModel:J}=nt({threadId:t,providers:Ii,selectedProvider:q,threadModelSelection:G?.modelSelection,projectModelSelection:Si?.defaultModelSelection,settings:s}),Ui=ye(Ii,q),Wi=(0,Z.useMemo)(()=>qe({provider:q,model:J,models:Ui,prompt:C,modelOptions:Vi}),[Vi,C,J,q,Ui]),Ki=Wi.promptEffort,qi=Wi.modelOptionsForDispatch,Yi=(0,Z.useMemo)(()=>Ne(Ui,J,q),[J,q,Ui]),Xi=(0,Z.useMemo)(()=>We(Ui,J,q),[J,q,Ui]),Zi=(0,Z.useMemo)(()=>Ge(q,J,qi),[J,qi,q]),$i=(0,Z.useCallback)((e,t,n)=>{let r=ye(Ii,e.provider),i=qe({provider:e.provider,model:e.model,models:r,prompt:n,modelOptions:O_(e)});return D_({provider:e.provider,model:e.model,models:r,effort:i.promptEffort,text:t})},[Ii]);(0,Z.useEffect)(()=>{if(Ri.current||!Ii.some(S_))return;let e=N();e&&(Ri.current=!0,e.server.refreshProviders().catch(()=>{Ri.current=!1}))},[Ii]);let ea=(0,Z.useCallback)(e=>{let t=Ie(Ii,e);if(t)throw Error(t)},[Ii]),ta=(0,Z.useCallback)(e=>{let t=e.composerImagesSnapshot[0]?.name??null,n=e.trimmedPrompt;return n||=t?`Image: ${t}`:e.composerTerminalContextsSnapshot.length>0?wt(e.composerTerminalContextsSnapshot[0]):`New Thread`,tt(n)},[]),ia=(0,Z.useCallback)(async e=>{if(!Qr||!G)return!1;if(l_(ft.getState().threads.find(e=>e.id===t)??null))return!0;let n=cr.current.get(t);if(n)return n;let r=N();if(!r)return!1;let i=r.orchestration.dispatchCommand({type:`thread.create`,commandId:B(),threadId:t,projectId:G.projectId,projectlessCwd:G.projectId===null?G.projectlessCwd??null:null,title:e.title,modelSelection:e.modelSelection,runtimeMode:Jr,interactionMode:Xr,parentThreadId:null,branchSourceTurnId:null,branch:e.branch,worktreePath:e.worktreePath,createdAt:G.createdAt}).then(async()=>(await u_(t),r.orchestration.dispatchCommand({type:`thread.session.ensure`,commandId:B(),threadId:t,createdAt:new Date().toISOString()}).catch(()=>void 0),!0)).catch(()=>!1).finally(()=>{cr.current.delete(t)});return cr.current.set(t,i),i},[G,Xr,Qr,Jr,t]),aa=J,oa=(0,Z.useMemo)(()=>Ge(q,J||Si?.defaultModelSelection?.model||se.codex,Zi.options),[Si?.defaultModelSelection?.model,J,Zi.options,q]),sa=ct(G?.session??null),ca=G?.activities??g_,la=(0,Z.useMemo)(()=>$e(ca,void 0),[ca]),ua=(0,Z.useMemo)(()=>Ye(ca),[ca]),da=(0,Z.useMemo)(()=>ze(ca,ui?.turnId),[ui?.turnId,ca]),fa=G?.session?.orchestrationStatus??null,pa=(0,Z.useMemo)(()=>fa===`running`?vt(ca):[],[ca,fa]),ma=(0,Z.useMemo)(()=>fa===`running`?ut(ca):[],[ca,fa]),Y=ma[0]??null,ha=(0,Z.useMemo)(()=>Y?Kt[Y.requestId]??y_:y_,[Y,Kt]),ga=Y?Jt[Y.requestId]??0:0,_a=(0,Z.useMemo)(()=>Y?Go(Y.questions,ha,ga):null,[ha,ga,Y]),va=(0,Z.useMemo)(()=>Y?Uo(Y.questions,ha):null,[ha,Y]),ya=Y?Wt.includes(Y.requestId):!1,[ba,xa]=(0,Z.useState)({}),Sa=(0,Z.useMemo)(()=>_i?Ft(G?.proposedPlans??[],ui?.turnId??null):null,[ui?.turnId,G?.proposedPlans,_i]),Ca=(0,Z.useMemo)(()=>Le({threads:hi,latestTurn:ui,latestTurnSettled:_i,threadId:G?.id??null}),[ui,G?.id,_i,hi]),wa=(0,Z.useMemo)(()=>kt(ca,ui?.turnId??void 0),[ui?.turnId,ca]),Ta=(0,Z.useMemo)(()=>rt(ca,ui?.turnId??void 0),[ui?.turnId,ca]),Ea=ma.length===0&&Xr===`plan`&&_i&&Nt(Sa),Da=Ea&&C.trim().length===0&&Sa!==null,Oa=(Sa?ba[Sa.id]??null:null)??Zi,ka=xe(Ii,Oa.provider),Aa=ye(Ii,ka),ja=Tt(ka,s,Ii,Oa.provider===ka?Oa.model:void 0),Ma=Oa.provider===ka?Oa.options:void 0,Na=(0,Z.useMemo)(()=>qe({provider:ka,model:ja,models:Aa,prompt:``,modelOptions:Ma?{[ka]:Ma}:null}),[ja,ka,Aa,Ma]),Pa=(0,Z.useMemo)(()=>Ge(ka,ja,Na.modelOptionsForDispatch),[ja,ka,Na.modelOptionsForDispatch]),Fa=(0,Z.useMemo)(()=>Li[ka].some(e=>e.slug===ja)?ja:Ke(ja,ka)??ja,[ja,ka,Li]),Ia=pa[0]??null,{beginLocalDispatch:za,resetLocalDispatch:X,localDispatchStartedAt:Ba,isPreparingWorktree:Va,isSendBusy:Ha}=z_({threadId:G?.id??null,activeThread:G,activeLatestTurn:ui,phase:sa,activities:ca,activePendingApproval:Ia?.requestId??null,activePendingUserInput:Y?.requestId??null,threadError:G?.error}),Ua=Ae(ui,G?.session??null),Wa=G?.session?.activeTurnId??ui?.turnId??null,Ga=Ua&&q===`codex`&&w.length===0&&Wa!==null,Ka=Ua||Ha||xt||Mt,qa=ot(ui,G?.session??null,Ba),Ja=ui?.startedAt??qa,Ya=Ia!==null,[Xa,Za]=(0,Z.useState)(!1),Qa=!Xa&&/\bplan\b/i.test(C)&&Xr!==`plan`&&!Ya&&ma.length===0,$a=Ya||ma.length>0||Ea&&Sa!==null,eo=Ea||_a!==null,to=(0,Z.useMemo)(()=>_a?`pending:${_a.questionIndex}:${_a.isLastQuestion}:${ya}`:Ua?`running`:Ea?C.trim().length>0?`plan:refine`:`plan:implement`:`idle:${E.hasSendableContent}:${Ha}:${xt}:${Va}`,[ya,_a,E.hasSendableContent,xt,Va,Ha,Ua,C,Ea]),no=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{let e=_a?.customAnswer;if(typeof e!=`string`){no.current=null;return}let t=Y?.requestId??null,n=_a?.activeQuestion?.id??null,r=no.current?.requestId!==t||no.current?.questionId!==n,i=W.current!==e;if(no.current={requestId:t,questionId:n},!r&&!i)return;W.current=e;let a=Po(e,e.length);En(a),On(Io(e,Ao(e,a))),bn(null)},[_a?.customAnswer,Y?.requestId,_a?.activeQuestion?.id]),(0,Z.useEffect)(()=>{ar.current=Cn},[Cn]);let ro=(0,Z.useCallback)(()=>{for(let e of Object.values(or.current))window.clearTimeout(e);or.current={};for(let e of Object.values(ar.current))for(let t of e)Jg(t);ar.current={},wn({})},[]);(0,Z.useEffect)(()=>()=>{ro();for(let e of dt.current)Yg(e)},[ro]);let io=(0,Z.useCallback)((e,t)=>{if(t.length===0)return;let n=ar.current[e]??[];for(let e of n)t.includes(e)||Jg(e);wn(n=>{let r={...n,[e]:t};return ar.current=r,r});let r=or.current[e];typeof r==`number`&&window.clearTimeout(r),or.current[e]=window.setTimeout(()=>{let t=ar.current[e];if(t)for(let e of t)Jg(e);wn(t=>{if(!(e in t))return t;let n={...t};return delete n[e],ar.current=n,n}),delete or.current[e]},f_)},[]),ao=G?.messages,oo=ht(G?.session?.provider)||ht(G?.modelSelection.provider),so=(0,Z.useMemo)(()=>{let e=ao??[],t=Object.keys(Cn).length===0?e:e.map(e=>{if(e.role!==`user`||!e.attachments||e.attachments.length===0)return e;let t=Cn[e.id];if(!t||t.length===0)return e;let n=!1,r=0,i=e.attachments.map(e=>{if(e.type!==`image`)return e;let i=t[r];return r+=1,!i||e.previewUrl===i?e:(n=!0,{...e,previewUrl:i})});return n?{...e,attachments:i}:e});if(it.length===0)return t;let n=new Set(t.map(e=>e.id)),r=it.filter(e=>!n.has(e.id));return r.length===0?It(t,G?.session??null,{preserveCompletedAssistantMessages:oo}):It([...t,...r],G?.session??null,{preserveCompletedAssistantMessages:oo})},[ao,Cn,it,G?.session,oo]),co=(0,Z.useMemo)(()=>jt(so,ua,G?.proposedPlans??[],la),[G?.proposedPlans,ua,so,la]);(0,Z.useLayoutEffect)(()=>{let e=co.flatMap(e=>e.kind===`message`&&e.message.role===`assistant`&&!e.message.streaming&&e.message.text.trim().length>0?[e.message.id]:[]),t=()=>{for(let e of Be.current.values())window.clearTimeout(e);Be.current.clear()},n=()=>{Re.current=new Set(e),He(e=>e.size>0?new Set:e)},r=G?.id??null;if(s.enableAssistantStreaming){Fe.current=r,t(),n();return}if(Fe.current!==r){Fe.current=r,t(),n();return}let i=e.filter(e=>!Re.current.has(e));if(i.length!==0){for(let e of i)Re.current.add(e);He(e=>{let t=new Set(e);for(let e of i)t.add(e);return t});for(let e of i){let t=Be.current.get(e);t!==void 0&&window.clearTimeout(t);let n=window.setTimeout(()=>{Be.current.delete(e),He(t=>{if(!t.has(e))return t;let n=new Set(t);return n.delete(e),n})},p_);Be.current.set(e,n)}}},[G?.id,s.enableAssistantStreaming,co]),(0,Z.useEffect)(()=>()=>{for(let e of Be.current.values())window.clearTimeout(e);Be.current.clear()},[]);let lo=G?.session?.activeTurnId??ui?.turnId??null,uo=!Mt&&(Ha||xt),fo=co.length===0&&!Ka,{turnDiffSummaries:po,inferredCheckpointTurnCountByTurnId:mo}=Gi(G),ho=(0,Z.useMemo)(()=>{let e=new Map;for(let t of po)t.assistantMessageId&&e.set(t.assistantMessageId,t);return e},[po]),go=(0,Z.useMemo)(()=>{let e=new Map,t=null;for(let n=co.length-1;n>=0;--n){let r=co[n];if(!(!r||r.kind!==`message`)){if(r.message.role===`assistant`){let e=ho.get(r.message.id);if(!e)continue;let n=e.checkpointTurnCount??mo[e.turnId];typeof n==`number`&&(t=Math.max(0,n-1));continue}r.message.role===`user`&&t!==null&&(e.set(r.message.id,t),t=null)}}return e},[mo,co,ho]),_o=(0,Z.useMemo)(()=>{if(!_i||!ui?.startedAt||!ui.completedAt||!da)return null;let e=pe(ui.startedAt,ui.completedAt);return e?`Worked for ${e}`:null},[ui?.completedAt,ui?.startedAt,da,_i]),yo=(0,Z.useMemo)(()=>!_i||!_o?null:Ct(co,ui),[ui,_o,_i,co]),bo=(0,Z.useMemo)(()=>G?.id??`no-thread`,[G?.id]),xo=Si?G?.worktreePath??Si.cwd:null,So=Dn?.kind??null,Co=Dn?.kind===`path`?Dn.query:``,wo=So===`path`,[To,Eo]=m(Co,{wait:N_},e=>({isPending:e.isPending})),Do=Co.length>0?To:``,Oo=p(Er(xo)),ko=A(),jo=k(),Mo=(0,Z.useMemo)(()=>Li[q].some(e=>e.slug===aa)?aa:Ke(aa,q)??aa,[Li,aa,q]),Fo=(0,Z.useMemo)(()=>na.filter(e=>(Fi===null||e.value===Fi)&&!fe(Te(Ii,e.value))).flatMap(e=>Li[e.value].map(({slug:t,name:n})=>({provider:e.value,providerLabel:e.label,slug:t,name:n,searchSlug:t.toLowerCase(),searchName:n.toLowerCase(),searchProvider:e.label.toLowerCase()}))),[Fi,Li,Ii]),Bo=(0,Z.useMemo)(()=>ke(Ui,J,q),[J,q,Ui]),Vo=Bo.supportsFastMode&&Zi.options?.fastMode===!0,Wo=(0,Z.useMemo)(()=>Ji.find(e=>e.value===s.assistantPersonality)??Ji[0],[s.assistantPersonality]),qo=p(xi({cwd:xo,query:Do,enabled:wo,limit:80})),Jo=qo.data?.entries??__,Yo=(0,Z.useMemo)(()=>G?Fr({provider:G.session?.provider??G.modelSelection.provider,workEntries:la,activities:G.activities}):[],[G,la]);(0,Z.useEffect)(()=>{Yo.length===0&&fn(!0)},[Yo.length]);let $o=(0,Z.useMemo)(()=>{if(!Dn)return[];if(Dn.kind===`path`){let e=Dn.query.trim().toLowerCase(),t=Yo.filter(t=>e?t.displayName.toLowerCase().includes(e)||t.mentionName.toLowerCase().includes(e)||(t.agentRole?.toLowerCase().includes(e)??!1)||(t.instruction?.toLowerCase().includes(e)??!1):!0).map(e=>({id:`agent:${e.provider}:${e.rootItemId}`,type:`agent`,mentionName:e.mentionName,label:e.displayName,description:e.agentRole?`${e.agentRole} · ${e.status===`active`?`working`:`awaiting instruction`}`:e.status===`active`?`working`:`awaiting instruction`})),n=Jo.map(e=>({id:`path:${e.kind}:${e.path}`,type:`path`,path:e.path,pathKind:e.kind,label:Hi(e.path),description:e.parentPath??``}));return[...t,...n]}if(Dn.kind===`slash-command`){let e=[{id:`slash:compact`,type:`slash-command`,command:`compact`,label:`/compact`,description:`Compact this thread's context`},{id:`slash:fast`,type:`slash-command`,command:`fast`,label:`/fast`,description:Vo?`Turn off Fast mode and return to standard inference speed`:Bo.supportsFastMode?`Turn on Fast mode for quicker responses`:`Fast mode is unavailable for the current model`},{id:`slash:fork`,type:`slash-command`,command:`fork`,label:`/fork`,description:`Fork this chat into local or a new worktree`},{id:`slash:goal`,type:`slash-command`,command:`goal`,label:`/goal`,description:An?`Turn off goal mode`:`Send the next message as this thread's goal`},{id:`slash:mcp`,type:`slash-command`,command:`mcp`,label:`/mcp`,description:`Show MCP server status`},{id:`slash:memories`,type:`slash-command`,command:`memories`,label:`/memories`,description:`Generate memories ${s.generateMemories?`on`:`off`}`},{id:`slash:model`,type:`slash-command`,command:`model`,label:`/model`,description:`Switch response model for this thread`},{id:`slash:personality`,type:`slash-command`,command:`personality`,label:`/personality`,description:Wo.label},{id:`slash:plan`,type:`slash-command`,command:`plan`,label:`/plan`,description:`Switch this thread into plan mode`},{id:`slash:default`,type:`slash-command`,command:`default`,label:`/default`,description:`Switch this thread back to default mode`},{id:`slash:review`,type:`slash-command`,command:`review`,label:`/review`,description:`Review the recent changes and suggest improvements`}];if(Dn.command===`fork`){let e=Dn.query.trim().toLowerCase();return[{id:`slash:fork:local`,type:`slash-command`,command:`fork`,value:`local`,label:`/fork local`,description:`Fork this chat into a local thread`},{id:`slash:fork:worktree`,type:`slash-command`,command:`fork`,value:`worktree`,label:`/fork worktree`,description:`Fork this chat into a new worktree`}].filter(t=>e?t.label.toLowerCase().includes(e)||t.description.toLowerCase().includes(e):!0)}if(Dn.command===`personality`){let e=Dn.query.trim().toLowerCase();return Ji.filter(t=>e?t.value.includes(e)||t.label.toLowerCase().includes(e)||t.description.toLowerCase().includes(e):!0).map(e=>({id:`slash:personality:${e.value}`,type:`slash-command`,command:`personality`,value:e.value,label:`/personality ${e.value}`,description:e.description}))}let t=Dn.query.trim().toLowerCase(),n=Dn.command?e.filter(e=>e.command===Dn.command):e;return t?n.filter(e=>{let n=e.label.slice(1).toLowerCase();return e.command.includes(t)||n.includes(t)||e.description.toLowerCase().includes(t)}):[...n]}return Fo.filter(({searchSlug:e,searchName:t,searchProvider:n})=>{let r=Dn.query.trim().toLowerCase();return r?e.includes(r)||t.includes(r)||n.includes(r):!0}).map(({provider:e,providerLabel:t,slug:n,name:r})=>({id:`model:${e}:${n}`,type:`model`,provider:e,model:n,label:r,description:`${t} · ${n}`}))},[Wo.label,Yo,Dn,Vo,An,Fo,Bo.supportsFastMode,s.generateMemories,Jo]),es=!!Dn,ts=(0,Z.useMemo)(()=>$o.find(e=>e.id===yn)??$o[0]??null,[yn,$o]);tr.current=es,nr.current=$o,ir.current=ts,(0,Z.useEffect)(()=>{if(!s.composerVimMode){cn(null);return}cn(e=>e??`insert`)},[s.composerVimMode]);let ns=(0,Z.useMemo)(()=>new Set(D),[D]),rs=(0,Z.useMemo)(()=>c_(Ii.find(e=>e.provider===q)??null),[q,Ii]),is=Oo.data?.isRepo??!0,as=(0,Z.useMemo)(()=>({context:{terminalFocus:!0,terminalOpen:!!mr.terminalOpen}}),[mr.terminalOpen]),os=(0,Z.useMemo)(()=>({context:{terminalFocus:!1,terminalOpen:!!mr.terminalOpen}}),[mr.terminalOpen]),ss=(0,Z.useMemo)(()=>Vr(ko,`terminal.toggle`),[ko]),cs=(0,Z.useMemo)(()=>Vr(ko,`terminal.split`,as),[ko,as]),ls=(0,Z.useMemo)(()=>Vr(ko,`terminal.new`,as),[ko,as]),us=(0,Z.useMemo)(()=>Vr(ko,`terminal.close`,as),[ko,as]),ds=(0,Z.useMemo)(()=>Vr(ko,`diff.toggle`,os),[ko,os]),fs=(0,Z.useMemo)(()=>Vr(ko,`browser.toggle`,os),[ko,os]),ps=(0,Z.useCallback)(()=>{Ti&&g({to:`/$threadId`,params:{threadId:t},replace:!0,search:e=>{if(ni){let t={...vi(e),diff:void 0};return e.panel===`diff`?mi(t):t}return{...e,diff:`1`,panel:`diff`}}})},[ni,Ti,g,t]),ms=(0,Z.useCallback)(()=>{g({to:`/$threadId`,params:{threadId:t},replace:!0,search:e=>{let t=oi(e);return e.panel===`browser`?mi(t):t}})},[g,t]),hs=(0,Z.useCallback)(()=>{if(!ei){ms();return}g({to:`/$threadId`,params:{threadId:t},replace:!0,search:e=>({...e,browser:`1`,panel:`browser`})})},[ei,ms,g,t]),gs=(0,Z.useCallback)(()=>{if(!ei){ms();return}if(ri){ms();return}hs()},[ri,ei,ms,hs]);(0,Z.useEffect)(()=>{ei||v.browser!==`1`||ms()},[ei,ms,v.browser]);let _s=!!(G&&(G.messages.length>0||G.session!==null&&G.session.status!==`closed`)),vs=((mr.terminalGroups.find(e=>e.id===mr.activeTerminalGroupId)??mr.terminalGroups.find(e=>e.terminalIds.includes(mr.activeTerminalId))??null)?.terminalIds.length??0)>=4,ys=(0,Z.useCallback)((e,t)=>{if(e){if(ft.getState().threads.some(t=>t.id===e)){r(e,t);return}gt(n=>(n[e]??null)===t?n:{...n,[e]:t})}},[r]),bs=(0,Z.useCallback)(async e=>{if(W.current.length>0||$n.current.length>0||pt.current.length>0){let e=`Replace the current composer draft with this queued message?`,t=N();if(!(t?await t.dialogs.confirm(e):window.confirm(e)))return!1}Or(e.threadId,e.id),de(e.threadId);let t=e.composerSnapshot.prompt;W.current=t,Pr(t),ce(e.threadId,[...e.composerSnapshot.terminalContexts]);let n=Qe(e.composerSnapshot.persistedAttachments);return n.length>0&&(Rr(n),ue(e.threadId,[...e.composerSnapshot.persistedAttachments])),j(e.threadId,e.modelSelection),F(e.threadId,e.runtimeMode),L(e.threadId,e.interactionMode),jn(n_(e)),En(Po(t,t.length)),On(Io(t,t.length)),ys(e.threadId,null),window.requestAnimationFrame(()=>{Kn.current?.focusAtEnd()}),!0},[Rr,de,Or,L,j,F,ce,Pr,ys,ue]),xs=(0,Z.useCallback)(e=>{G&&Or(G.id,e)},[G,Or]),Ss=(0,Z.useCallback)(async e=>{let t=Tr.find(t=>t.id===e);t&&await bs(t)},[Tr,bs]),Cs=(0,Z.useCallback)(()=>{Kn.current?.focusAtEnd()},[]),ws=(0,Z.useCallback)(()=>{window.requestAnimationFrame(()=>{Cs()})},[Cs]),Ts=(0,Z.useCallback)(e=>{if(!G)return;let t=Kn.current?.readSnapshot()??{value:W.current,cursor:Tn,expandedCursor:Ao(W.current,Tn),terminalContextIds:T.map(e=>e.id)},n=yt(t.value,t.expandedCursor),r=Po(n.prompt,n.cursor);ie(G.id,n.prompt,{id:V(),threadId:G.id,createdAt:new Date().toISOString(),...e},n.contextIndex)&&(W.current=n.prompt,En(r),On(Io(n.prompt,n.cursor)),window.requestAnimationFrame(()=>{Kn.current?.focusAt(r)}))},[G,Tn,T,ie]),Es=(0,Z.useCallback)(e=>{K&&gr(K,e)},[K,gr]),Os=(0,Z.useCallback)(()=>{K&&Es(!mr.terminalOpen)},[K,Es,mr.terminalOpen]),ks=(0,Z.useCallback)(()=>{!K||vs||(_r(K,`terminal-${V()}`),vn(e=>e+1))},[K,vs,_r]),As=(0,Z.useCallback)(()=>{K&&(vr(K,`terminal-${V()}`),vn(e=>e+1))},[K,vr]),js=(0,Z.useCallback)(e=>{let t=N();if(!K||!t)return;let n=mr.terminalIds.length<=1,r=()=>t.terminal.write({threadId:K,terminalId:e,data:`exit
|
|
287
|
-
`}).catch(()=>void 0);`close`in t.terminal&&typeof t.terminal.close==`function`?(async()=>{n&&await t.terminal.clear({threadId:K,terminalId:e}).catch(()=>void 0),await t.terminal.close({threadId:K,terminalId:e,deleteHistory:!0})})().catch(()=>r()):r(),Cr(K,e),vn(e=>e+1)},[K,Cr,mr.terminalIds.length]),Ms=(0,Z.useCallback)(e=>{e!==Jr&&(F(t,e),Qr&&me(t,{runtimeMode:e}),ws())},[Qr,Jr,ws,F,me,t]),Ns=(0,Z.useCallback)(e=>{if(e!==Xr){if(L(t,e),Qr)me(t,{interactionMode:e});else if(Zr){let n=N();n&&n.orchestration.dispatchCommand({type:`thread.interaction-mode.set`,commandId:B(),threadId:t,interactionMode:e,createdAt:new Date().toISOString()}).catch(e=>{L(t,Xr),di.add({type:`warning`,title:`Could not change interaction mode`,description:e instanceof Error?e.message:`The mode update was rejected.`})})}ws()}},[Xr,Qr,Zr,ws,L,me,t]),Ps=(0,Z.useCallback)(()=>{Ns(Xr===`plan`?`default`:`plan`)},[Ns,Xr]),Fs=(0,Z.useCallback)(async()=>G?Zr?!0:Qr?ia({title:G.title,modelSelection:oa,branch:G.branch,worktreePath:G.worktreePath}):!1:!1,[G,oa,Qr,Zr,ia]),Ls=(0,Z.useCallback)(async e=>{let n=N();if(!n||!await Fs()){let e=Error(M_);throw di.add({type:`warning`,title:`Goal update is unavailable`,description:e.message}),e}await n.orchestration.dispatchCommand({type:`thread.goal.set`,commandId:B(),threadId:t,expectedGoalLifecycleKey:G?.goal?G.goal.lifecycleId??G.goal.createdAt:null,...e.objective===void 0?{}:{objective:e.objective},...e.status===void 0?{}:{status:e.status},...e.tokenBudget===void 0?{}:{tokenBudget:e.tokenBudget},createdAt:new Date().toISOString()})},[G?.goal,Fs,t]),Rs=(0,Z.useCallback)(async()=>{let e=N();if(!e||!await Fs()){let e=Error(M_);throw di.add({type:`warning`,title:`Goal update is unavailable`,description:e.message}),e}await e.orchestration.dispatchCommand({type:`thread.goal.clear`,commandId:B(),threadId:t,expectedGoalLifecycleKey:G?.goal?G.goal.lifecycleId??G.goal.createdAt:null,createdAt:new Date().toISOString()})},[G?.goal,Fs,t]),zs=(0,Z.useCallback)(()=>{if(Xr===`plan`){jn(!1),ws();return}jn(e=>!e),ws()},[Xr,ws]);(0,Z.useEffect)(()=>{jn(!1)},[t]),(0,Z.useEffect)(()=>{Xr===`plan`&&jn(!1)},[Xr]);let Bs=(0,Z.useCallback)(()=>{Ms(Jr===`full-access`?`approval-required`:`full-access`)},[Ms,Jr]),Vs=(0,Z.useCallback)(e=>{c({assistantPersonality:e}),ws()},[ws,c]),Hs=(0,Z.useCallback)(()=>{c({generateMemories:!s.generateMemories}),ws()},[ws,s.generateMemories,c]),Us=(0,Z.useCallback)(()=>{if(!G)return;if(!Bo.supportsFastMode){di.add({type:`warning`,title:`Fast mode is unavailable`,description:`${Yi} does not support Fast mode.`}),ws();return}let e={...Vi?.[q],fastMode:!Vo};P(G.id,q,e,{persistSticky:!0}),bt(!Vo),ws()},[G,Vi,Vo,ws,Bo.supportsFastMode,Yi,q,P]),Ws=(0,Z.useCallback)(e=>{g({to:e})},[g]),Gs=(0,Z.useCallback)(async(e=`local`)=>{if(n){await wr(n.id,{mode:e});return}di.add({type:`warning`,title:`Fork is unavailable for this thread`,description:`Start the thread first, then fork it from the slash menu.`})},[wr,n]),Ks=(0,Z.useCallback)(()=>{en(e=>{if(e){let e=wa?.turnId??Ca?.turnId??null;e&&(hn.current=e)}else hn.current=null;return!e})},[wa?.turnId,Ca?.turnId]),qs=(0,Z.useCallback)(async e=>{if(!n)return;let t=N();t&&(e.modelSelection!==void 0&&(e.modelSelection.model!==n.modelSelection.model||e.modelSelection.provider!==n.modelSelection.provider||JSON.stringify(e.modelSelection.options??null)!==JSON.stringify(n.modelSelection.options??null))&&await t.orchestration.dispatchCommand({type:`thread.meta.update`,commandId:B(),threadId:e.threadId,modelSelection:e.modelSelection}),e.runtimeMode!==n.runtimeMode&&await t.orchestration.dispatchCommand({type:`thread.runtime-mode.set`,commandId:B(),threadId:e.threadId,runtimeMode:e.runtimeMode,createdAt:e.createdAt}),e.interactionMode!==n.interactionMode&&await t.orchestration.dispatchCommand({type:`thread.interaction-mode.set`,commandId:B(),threadId:e.threadId,interactionMode:e.interactionMode,createdAt:e.createdAt}))},[n]);(0,Z.useEffect)(()=>{if(!Zr||!G||G.messages.length>0||G.latestTurn!==null||G.resumeState===`unrecoverable`||G.resumeState===`resuming`)return;let e=G.modelSelection.provider!==oa.provider||G.modelSelection.model!==oa.model||JSON.stringify(G.modelSelection.options??null)!==JSON.stringify(oa.options??null),t=G.runtimeMode!==Jr,n=G.interactionMode!==Xr,r=G.session===null||G.session.orchestrationStatus===`stopped`||G.session.orchestrationStatus===`error`;if(!e&&!t&&!n&&!r)return;let i=N();i&&(async()=>{await qs({threadId:G.id,createdAt:new Date().toISOString(),modelSelection:oa,runtimeMode:Jr,interactionMode:Xr}).catch(()=>void 0),await i.orchestration.dispatchCommand({type:`thread.session.ensure`,commandId:B(),threadId:G.id,createdAt:new Date().toISOString()}).catch(()=>void 0)})()},[G,oa,Xr,Zr,qs,Jr]);let Js=so.length,Ys=(0,Z.useCallback)((e=`auto`)=>{let t=Mn.current;t&&(t.scrollTo({top:t.scrollHeight,behavior:e}),Ln.current=t.scrollTop,Fn.current=!0)},[]),Xs=(0,Z.useCallback)(()=>{Un.current=0;let e=Hn.current;e!==null&&(Hn.current=null,window.cancelAnimationFrame(e))},[]),Zs=(0,Z.useCallback)(()=>{let e=Gn.current;e!==null&&(Gn.current=null,window.cancelAnimationFrame(e))},[]),Qs=(0,Z.useCallback)(()=>{let e=Me.current;e!==null&&(Me.current=null,window.cancelAnimationFrame(e))},[]),$s=(0,Z.useCallback)(e=>{let t=je.current;t.showScrollToBottom===e.showScrollToBottom&&t.isScrolledFromTop===e.isScrolledFromTop||(je.current=e,Me.current===null&&(Me.current=window.requestAnimationFrame(()=>{Me.current=null;let e=je.current;Ee(e.showScrollToBottom),Oe(e.isScrolledFromTop)})))},[]),ec=(0,Z.useCallback)(()=>{if(Hn.current!==null)return;let e=()=>{if(Hn.current=null,Ys(),Un.current<=0||!Fn.current){Un.current=0;return}--Un.current,Hn.current=window.requestAnimationFrame(e)};Hn.current=window.requestAnimationFrame(e)},[Ys]),tc=(0,Z.useCallback)((e=2)=>{Un.current=Math.max(Un.current,e),ec()},[ec]),nc=(0,Z.useCallback)(e=>{let t=Mn.current;if(!t||!(e.target instanceof Element))return;let n=e.target.closest(`button, summary, [role='button'], [data-scroll-anchor-target]`);!n||!t.contains(n)||n.closest(`[data-scroll-anchor-ignore]`)||(Wn.current={element:n,top:n.getBoundingClientRect().top},Zs(),Gn.current=window.requestAnimationFrame(()=>{Gn.current=null;let e=Wn.current;Wn.current=null;let t=Mn.current;if(!e||!t||!e.element.isConnected||!t.contains(e.element))return;let n=e.element.getBoundingClientRect().top-e.top;Math.abs(n)<.5||(t.scrollTop+=n,Ln.current=t.scrollTop)}))},[Zs]),rc=(0,Z.useCallback)(()=>{Fn.current=!1,Vn.current=!1;let e=Mn.current;$s({showScrollToBottom:e!==null&&e.scrollHeight>e.clientHeight,isScrolledFromTop:e?e.scrollTop>8:!1})},[$s]),ic=(0,Z.useCallback)(()=>{Fn.current=!0,Vn.current=!1,Xs(),tc(3)},[Xs,tc]),ac=(0,Z.useCallback)(()=>{let e=Mn.current;if(!e)return;let t=e.scrollTop,n=zo(e);!Fn.current&&n?(Fn.current=!0,Vn.current=!1):Fn.current&&Vn.current?(t<Ln.current-1&&!n&&(Fn.current=!1),Vn.current=!1):Fn.current&&Rn.current?t<Ln.current-1&&!n&&(Fn.current=!1):Fn.current&&!n&&t<Ln.current-1&&(Fn.current=!1);let r=e.scrollHeight>e.clientHeight;$s({showScrollToBottom:!Fn.current&&r,isScrolledFromTop:t>8}),Ln.current=t},[$s]),oc=(0,Z.useCallback)(e=>{e.deltaY<0&&(Vn.current=!0)},[]),sc=(0,Z.useCallback)(e=>{e.target instanceof Element&&e.target.closest(`button, summary, [role='button'], [data-scroll-anchor-target]`)||(Rn.current=!0)},[]),cc=(0,Z.useCallback)(e=>{Rn.current=!1},[]),lc=(0,Z.useCallback)(e=>{Rn.current=!1},[]),uc=(0,Z.useCallback)(e=>{let t=e.touches[0];t&&(zn.current=t.clientY)},[]),dc=(0,Z.useCallback)(e=>{let t=e.touches[0];if(!t)return;let n=zn.current;n!==null&&t.clientY>n+1&&(Vn.current=!0),zn.current=t.clientY},[]),pc=(0,Z.useCallback)(e=>{zn.current=null},[]);(0,Z.useEffect)(()=>()=>{Xs(),Zs(),Qs()},[Zs,Qs,Xs]),(0,Z.useLayoutEffect)(()=>{if(!G?.id)return;Fn.current=!0,tc();let e=window.setTimeout(()=>{let e=Mn.current;e&&(zo(e)||tc())},96);return()=>{window.clearTimeout(e)}},[G?.id,tc]),(0,Z.useLayoutEffect)(()=>{let e=Jn.current;if(!e)return;let t=()=>e.clientWidth,n=()=>{let e=t(),n=gc(e,{hasWideActions:eo}),r=Xn.current,i=r?window.getComputedStyle(r):null,a={footerContentWidth:bc({footerWidth:r?.clientWidth??null,paddingLeft:i?Number.parseFloat(i.paddingLeft):null,paddingRight:i?Number.parseFloat(i.paddingRight):null}),leadingContentWidth:Zn.current?.scrollWidth??null,actionsWidth:Qn.current?.scrollWidth??null},o=n||yc(a);return{primaryActionsCompact:o&&_c(e,{hasWideActions:eo}),footerCompact:o}};Yn.current=e.getBoundingClientRect().height;let r=n();if(an(r.primaryActionsCompact),nn(r.footerCompact),typeof ResizeObserver>`u`)return;let i=new ResizeObserver(e=>{let[t]=e;if(!t)return;let r=n();an(e=>e===r.primaryActionsCompact?e:r.primaryActionsCompact),nn(e=>e===r.footerCompact?e:r.footerCompact);let i=t.contentRect.height,a=Yn.current;Yn.current=i,!(a>0&&Math.abs(i-a)<.5)&&Fn.current&&ec()});return i.observe(e),()=>{i.disconnect()}},[G?.id,to,eo,ec]),(0,Z.useEffect)(()=>{Fn.current&&ec()},[Js,ec]),(0,Z.useEffect)(()=>{if(Fn.current){if(Ua){if(In.current>0)return;ec();return}tc()}},[Ua,ec,tc,co]),(0,Z.useEffect)(()=>{let e=Nn;if(!e||typeof ResizeObserver>`u`)return;let t=new ResizeObserver(()=>{e.scrollHeight>e.clientHeight||$s({showScrollToBottom:!1,isScrolledFromTop:!1}),Fn.current&&In.current===0&&tc(1)});t.observe(e);let n=e.querySelector(`[data-timeline-root="true"]`);return n&&t.observe(n),()=>t.disconnect()},[Nn,bo,tc,$s]),(0,Z.useEffect)(()=>{Qt({}),Sn(null),gn.current?(gn.current=!1,en(!0)):en(!1),hn.current=null},[G?.id]),(0,Z.useEffect)(()=>{if(!es){bn(null);return}bn(e=>e&&$o.some(t=>t.id===e)?e:$o[0]?.id??null)},[$o,es]),(0,Z.useEffect)(()=>{Pt(!1)},[G?.id]),(0,Z.useEffect)(()=>{if(!e||!G?.id||mr.terminalOpen)return;let t=window.requestAnimationFrame(()=>{Cs()});return()=>{window.cancelAnimationFrame(t)}},[G?.id,Cs,e,mr.terminalOpen]),(0,Z.useEffect)(()=>{$n.current=w},[w]),(0,Z.useEffect)(()=>{pt.current=T},[T]),(0,Z.useEffect)(()=>{if(!G?.id||G.messages.length===0)return;let e=new Set(G.messages.map(e=>e.id)),t=it.filter(t=>e.has(t.id));if(t.length===0)return;let n=window.setTimeout(()=>{st(t=>t.filter(t=>!e.has(t.id)))},0);for(let e of t){let t=Xg(e);if(t.length>0){io(e.id,t);continue}Yg(e)}return()=>{window.clearTimeout(n)}},[G?.id,G?.messages,io,it]),(0,Z.useEffect)(()=>{W.current=C,En(e=>No(C,e))},[C]),(0,Z.useEffect)(()=>{st(e=>{for(let t of e)Yg(t);return[]}),X(),bn(null),En(Po(W.current,W.current.length)),On(Io(W.current,W.current.length)),lr.current=0,Xe(!1),et(null)},[X,t]),(0,Z.useEffect)(()=>{let e=!1;return(async()=>{if(w.length===0){le(t);return}let n=()=>St.getState().draftsByThreadId[t]?.persistedAttachments??[];try{let r=n(),i=new Map(r.map(e=>[e.id,e])),a=new Map;await Promise.all(w.map(async e=>{try{let t=await Zg(e.file);a.set(e.id,{id:e.id,name:e.name,mimeType:e.mimeType,sizeBytes:e.sizeBytes,dataUrl:t})}catch{let t=i.get(e.id);t&&a.set(e.id,t)}}));let o=Array.from(a.values());if(e)return;ue(t,o)}catch{let r=new Set(w.map(e=>e.id)),i=n(),a=i.map(e=>e.id).filter(e=>r.has(e)),o=new Set(a),s=i.filter(e=>o.has(e.id));if(e)return;ue(t,s)}})(),()=>{e=!0}},[le,w,ue,t]);let mc=(0,Z.useCallback)(()=>{et(null)},[]),hc=(0,Z.useCallback)(e=>{et(t=>{if(!t||t.images.length<=1)return t;let n=(t.index+e+t.images.length)%t.images.length;return n===t.index?t:{...t,index:n}})},[]);(0,Z.useEffect)(()=>{if(!Ze)return;let e=e=>{if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),mc();return}if(!(Ze.images.length<=1)){if(e.key===`ArrowLeft`){e.preventDefault(),e.stopPropagation(),hc(-1);return}e.key===`ArrowRight`&&(e.preventDefault(),e.stopPropagation(),hc(1))}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[mc,Ze,hc]);let vc=G?.worktreePath?`worktree`:Qr?Se?.envMode??`local`:`local`;(0,Z.useEffect)(()=>{if(!K)return;let e=dr.current[K]??!1,t=!!mr.terminalOpen;if(!e&&t){dr.current[K]=t,vn(e=>e+1);return}else if(e&&!t){dr.current[K]=t;let e=window.requestAnimationFrame(()=>{Cs()});return()=>{window.cancelAnimationFrame(e)}}dr.current[K]=t},[K,Cs,mr.terminalOpen]),(0,Z.useEffect)(()=>{let t=t=>{if(!e||!K||t.defaultPrevented)return;if(t.shiftKey&&t.key.toLowerCase()===`p`&&(H(navigator.platform)?t.metaKey:t.ctrlKey)){t.preventDefault(),t.stopPropagation(),Ps();return}let n=Yr(t,ko,{context:{terminalFocus:fi(),terminalOpen:!!mr.terminalOpen}});if(n){if(n===`terminal.toggle`){t.preventDefault(),t.stopPropagation(),Os();return}if(n===`terminal.split`){t.preventDefault(),t.stopPropagation(),mr.terminalOpen||Es(!0),ks();return}if(n===`terminal.close`){if(t.preventDefault(),t.stopPropagation(),!mr.terminalOpen)return;js(mr.activeTerminalId);return}if(n===`terminal.new`){t.preventDefault(),t.stopPropagation(),mr.terminalOpen||Es(!0),As();return}if(n===`diff.toggle`){t.preventDefault(),t.stopPropagation(),ps();return}if(n===`browser.toggle`){if(!ei)return;t.preventDefault(),t.stopPropagation(),gs()}}};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e,mr.terminalOpen,mr.activeTerminalId,K,js,As,Es,ks,ko,ei,gs,ps,Ps,Os]);let xc=e=>{if(!K||e.length===0)return;if(ma.length>0){di.add({type:`error`,title:`Attach images after answering plan questions.`});return}if(!Xi){di.add({type:`error`,title:`Image attachments unavailable`,description:k_(Yi)});return}let t=[],n=$n.current.length,r=null;for(let i of e){if(!i.type.startsWith(`image/`)){r=`Unsupported file type for '${i.name}'. Please attach image files only.`;continue}if(i.size>10485760){r=`'${i.name}' exceeds the ${m_} attachment limit.`;continue}if(n>=8){r=`You can attach up to 8 images per message.`;break}let e=URL.createObjectURL(i);t.push({type:`image`,id:V(),name:i.name||`image`,mimeType:i.type,sizeBytes:i.size,previewUrl:e,file:i}),n+=1}t.length===1&&t[0]?Lr(t[0]):t.length>1&&Rr(t),ys(K,r)},Sc=e=>{Br(e)},Cc=e=>{let t=Array.from(e.clipboardData.files);if(t.length===0)return;let n=t.filter(e=>e.type.startsWith(`image/`));n.length!==0&&(e.preventDefault(),xc(n))},wc=e=>{e.dataTransfer.types.includes(`Files`)&&(e.preventDefault(),lr.current+=1,Xe(!0))},Tc=e=>{e.dataTransfer.types.includes(`Files`)&&(e.preventDefault(),e.dataTransfer.dropEffect=`copy`,Xe(!0))},Ec=e=>{if(!e.dataTransfer.types.includes(`Files`))return;e.preventDefault();let t=e.relatedTarget;t instanceof Node&&e.currentTarget.contains(t)||(lr.current=Math.max(0,lr.current-1),lr.current===0&&Xe(!1))},Dc=e=>{e.dataTransfer.types.includes(`Files`)&&(e.preventDefault(),lr.current=0,Xe(!1),xc(Array.from(e.dataTransfer.files)),Cs())},Oc=(0,Z.useCallback)(async e=>{let t=N();if(!(!t||!G||Mt)){if(Ua||Ha||xt){ys(G.id,`Interrupt the current turn before reverting checkpoints.`);return}if(await t.dialogs.confirm([`Revert this thread to checkpoint ${e}?`,`This will discard newer messages and turn diffs in this thread.`,`This action cannot be undone.`].join(`
|
|
288
|
-
`))){Pt(!0),ys(G.id,null);try{await t.orchestration.dispatchCommand({type:`thread.checkpoint.revert`,commandId:B(),threadId:G.id,turnCount:e,createdAt:new Date().toISOString()})}catch(e){ys(G.id,e instanceof Error?e.message:`Failed to revert thread state.`)}Pt(!1)}}},[G,xt,Mt,Ha,Ua,ys]),kc=async(e,t=`steer`)=>{e?.preventDefault();let n=N();if(!n||!G||Ha||xt||sr.current)return;if(_a){_a.isLastQuestion&&va&&ic(),Ic();return}let a=W.current,{trimmedPrompt:o,sendableTerminalContexts:s,expiredTerminalContextCount:c,hasSendableContent:l}=e_({prompt:a,imageCount:w.length,terminalContexts:T});if(Ea&&Sa){let e=Zo({draftText:o,planMarkdown:Sa.planMarkdown});if(W.current=``,de(G.id),bn(null),En(0),On(null),e.interactionMode===`default`&&Pa.provider!==q){await zc(Pa);return}await Rc({text:e.text,interactionMode:e.interactionMode,...e.interactionMode===`default`?{modelSelection:Pa}:{}});return}let u=l,d=w.length===0&&s.length===0?Lo(o):null;if(d)if(d.command===`review`)a=A_,W.current=a,u=!0,de(G.id),bn(null),En(0),On(null);else if(d.command===`compact`)a=j_,W.current=a,u=!0,de(G.id),bn(null),En(0),On(null);else if(d.command===`fast`){Us(),W.current=``,de(G.id),bn(null),En(0),On(null);return}else if(d.command===`goal`){zs(),W.current=``,de(G.id),bn(null),En(0),On(null);return}else if(d.command===`fork`){await Gs(d.value??`local`),W.current=``,de(G.id),bn(null),En(0),On(null);return}else if(d.command===`mcp`){Ws(`/settings/mcp`),W.current=``,de(G.id),bn(null),En(0),On(null);return}else if(d.command===`memories`){Hs(),W.current=``,de(G.id),bn(null),En(0),On(null);return}else if(d.command===`personality`){Vs(d.value),W.current=``,de(G.id),bn(null),En(0),On(null);return}else{Ns(d.command),W.current=``,de(G.id),bn(null),En(0),On(null);return}if(!u){if(c>0){let e=o_(c,`empty`);di.add({type:`warning`,title:e.title,description:e.description})}return}if(w.length>0&&!Xi){ys(G.id,k_(Yi));return}if(!G)return;let f=Si,p=G.id,m=!Zr||G.messages.length===0,h=f&&m&&vc===`worktree`&&!G.worktreePath?G.branch:null;if(m&&vc===`worktree`&&!G.worktreePath&&!G.branch){r(p,`Select a base branch before sending in New worktree mode.`);return}try{await ea(Zi.provider)}catch(e){r(p,e instanceof Error?e.message:`Selected provider is unavailable.`);return}sr.current=!0;let g=t_({goalSendMode:An,objective:o,interactionMode:Xr,standaloneSlashCommand:d,expectedGoalLifecycleKey:G.goal?G.goal.lifecycleId??G.goal.createdAt:null});if(g&&r_(G.goal??null)&&!await n.dialogs.confirm(`Replace goal?\n\nNew objective: ${tt(g.objective,200)}`).catch(e=>(ys(p,e instanceof Error?e.message:`Could not confirm goal replacement.`),!1))){sr.current=!1;return}g&&jn(!1);let _=[...w],v=[...s],y=_t(a,v),b=re(),S=new Date().toISOString(),C=D_({provider:q,model:J,models:Ui,effort:Ki,text:y||h_}),E=ta({trimmedPrompt:o,composerImagesSnapshot:_,composerTerminalContextsSnapshot:v}),D=Promise.all(_.map(async e=>{let t=await Zg(e.file);return{persistedAttachment:{id:e.id,name:e.name,mimeType:e.mimeType,sizeBytes:e.sizeBytes,dataUrl:t},uploadAttachment:{type:`image`,name:e.name,mimeType:e.mimeType,sizeBytes:e.sizeBytes,dataUrl:t}}})),O=_.map(e=>({type:`image`,id:e.id,name:e.name,mimeType:e.mimeType,sizeBytes:e.sizeBytes,previewUrl:e.previewUrl}));if(Ua){let e=G.session?.activeTurnId??ui?.turnId;if(t===`steer`&&Zi.provider===`codex`&&_.length===0&&e!=null){if(c>0){let e=o_(c,`omitted`);di.add({type:`warning`,title:e.title,description:e.description})}(0,vo.flushSync)(()=>{W.current=``,de(p),bn(null),En(0),On(null),ys(p,null)}),ic(),await n.orchestration.dispatchCommand({type:`thread.turn.steer`,commandId:B(),threadId:p,turnId:e,message:{messageId:b,role:`user`,text:C},...g?{goalIntent:g}:{},createdAt:S}).catch(e=>{W.current.length===0&&$n.current.length===0&&pt.current.length===0&&(W.current=a,Pr(a),En(Po(a,a.length)),zr(v),On(Io(a,a.length))),ys(p,e instanceof Error?e.message:`Failed to steer the running turn.`),g&&jn(!0)}),sr.current=!1,X();return}let r=await D;if(c>0){let e=o_(c,`omitted`);di.add({type:`warning`,title:e.title,description:e.description})}if(G.goal?.status===`active`)try{await n.orchestration.dispatchCommand({type:`thread.goal.set`,commandId:B(),threadId:p,expectedGoalLifecycleKey:G.goal.lifecycleId??G.goal.createdAt,status:`paused`,createdAt:new Date().toISOString()})}catch(e){ys(p,e instanceof Error?e.message:`Could not pause the active goal before queuing this message.`),g&&jn(!0),sr.current=!1,X();return}(0,vo.flushSync)(()=>{Dr({id:V(),threadId:p,messageId:String(b),text:C,attachments:r.map(e=>e.uploadAttachment),modelSelection:Zi,runtimeMode:Jr,interactionMode:Xr,goalIntent:g,titleSeed:G.title.trim()||`New Thread`,createdAt:S,composerSnapshot:{prompt:a,persistedAttachments:r.map(e=>e.persistedAttachment),terminalContexts:v}}),W.current=``,de(p),bn(null),En(0),On(null),ys(p,null)}),ic(),di.add({type:`info`,title:`Message queued`,description:G.goal?.status===`active`?`The active goal was paused; this message will send when the current turn stops.`:`It will send automatically when the current turn finishes.`,data:{icon:Bn}}),sr.current=!1,X();return}if((0,vo.flushSync)(()=>{za({preparingWorktree:!!h}),st(e=>[...e,{id:b,role:`user`,text:C,...O.length>0?{attachments:O}:{},createdAt:S,streaming:!1}]),ys(p,null),W.current=``,de(p),bn(null),En(0),On(null)}),ic(),c>0){let e=o_(c,`omitted`);di.add({type:`warning`,title:e.title,description:e.description})}let k=!1,A=!1,j=Zr,M=G.branch,P=G.worktreePath;await(async()=>{if(!j&&Qr&&(j=await ia({title:E,modelSelection:oa,branch:M,worktreePath:P})),h&&f){za({preparingWorktree:!0});let e=Qg(),t=await x.mutateAsync({cwd:f.cwd,branch:h,newBranch:e});M=t.worktree.branch,P=t.worktree.path,j&&(await n.orchestration.dispatchCommand({type:`thread.meta.update`,commandId:B(),threadId:p,branch:t.worktree.branch,worktreePath:t.worktree.path}),i(p,t.worktree.branch,t.worktree.path))}Qr&&!j&&(await n.orchestration.dispatchCommand({type:`thread.create`,commandId:B(),threadId:p,projectId:G.projectId,projectlessCwd:G.projectId===null?G.projectlessCwd??null:null,title:E,modelSelection:oa,runtimeMode:Jr,interactionMode:Xr,parentThreadId:null,branchSourceTurnId:null,branch:M,worktreePath:P,createdAt:G.createdAt}),k=!0,j=!0),m&&j&&await n.orchestration.dispatchCommand({type:`thread.meta.update`,commandId:B(),threadId:p,title:E}),j&&await qs({threadId:p,createdAt:S,...J?{modelSelection:Zi}:{},runtimeMode:Jr,interactionMode:Xr}),za({preparingWorktree:!1});let e=(await D).map(e=>e.uploadAttachment);await ea(Zi.provider),await n.orchestration.dispatchCommand({type:`thread.turn.start`,commandId:B(),threadId:p,message:{messageId:b,role:`user`,text:C,attachments:e},modelSelection:Zi,titleSeed:E,runtimeMode:Jr,interactionMode:Xr,...g?{goalIntent:g}:{},createdAt:S}),A=!0})().catch(async e=>{k&&!A&&await n.orchestration.dispatchCommand({type:`thread.delete`,commandId:B(),threadId:p}).catch(()=>void 0),!A&&W.current.length===0&&$n.current.length===0&&pt.current.length===0&&(st(e=>{let t=e.filter(e=>e.id===b);for(let e of t)Yg(e);let n=e.filter(e=>e.id!==b);return n.length===e.length?e:n}),W.current=a,Pr(a),En(Po(a,a.length)),Rr(_.map($g)),zr(v),On(Io(a,a.length))),ys(p,e instanceof Error?e.message:`Failed to send message.`),!A&&g&&jn(!0)}),sr.current=!1,A||X()},Ac=async()=>{let e=N();!e||!G||await e.orchestration.dispatchCommand({type:`thread.turn.interrupt`,commandId:B(),threadId:G.id,...ui?.turnId?{turnId:ui.turnId}:{},createdAt:new Date().toISOString()})},jc=(0,Z.useCallback)(async(e,t)=>{let n=N();!n||!K||(Rt(t=>t.includes(e)?t:[...t,e]),Ht(t),await n.orchestration.dispatchCommand({type:`thread.approval.respond`,commandId:B(),threadId:K,requestId:e,decision:t,createdAt:new Date().toISOString()}).catch(e=>{r(K,e instanceof Error?e.message:`Failed to submit approval decision.`)}),Rt(t=>t.filter(t=>t!==e)),Ht(null))},[K,r]),Mc=(0,Z.useCallback)(async(e,t)=>{let n=N();!n||!K||(Gt(t=>t.includes(e)?t:[...t,e]),await n.orchestration.dispatchCommand({type:`thread.user-input.respond`,commandId:B(),threadId:K,requestId:e,answers:t,createdAt:new Date().toISOString()}).catch(e=>{r(K,e instanceof Error?e.message:`Failed to submit user input.`)}),Gt(t=>t.filter(t=>t!==e)))},[K,r]),Nc=(0,Z.useCallback)(e=>{Y&&Yt(t=>({...t,[Y.requestId]:e}))},[Y]),Pc=(0,Z.useCallback)((e,t)=>{Y&&(qt(n=>({...n,[Y.requestId]:{...n[Y.requestId],[e]:{selectedOptionLabel:t,customAnswer:``}}})),W.current=``,En(0),On(null))},[Y]),Fc=(0,Z.useCallback)((e,t,n,r,i)=>{Y&&(W.current=t,qt(n=>({...n,[Y.requestId]:{...n[Y.requestId],[e]:Ho(n[Y.requestId]?.[e],t)}})),En(n),On(i?null:Io(t,r)))},[Y]),Ic=(0,Z.useCallback)(()=>{if(!(!Y||!_a)){if(_a.isLastQuestion){va&&Mc(Y.requestId,va);return}Nc(_a.questionIndex+1)}},[_a,va,Y,Mc,Nc]),Lc=(0,Z.useCallback)(()=>{_a&&Nc(Math.max(_a.questionIndex-1,0))},[_a,Nc]),Rc=(0,Z.useCallback)(async({text:e,interactionMode:t,modelSelection:n})=>{let r=N();if(!r||!G||!Zr||Ha||xt||sr.current)return;let i=e.trim();if(!i)return;let a=G.id,o=re(),s=new Date().toISOString(),c=n??Zi,l=n===void 0?D_({provider:q,model:J,models:Ui,effort:Ki,text:i}):$i(n,i,``);try{await ea(c.provider)}catch(e){ys(a,e instanceof Error?e.message:`Selected provider is unavailable.`);return}sr.current=!0,(0,vo.flushSync)(()=>{za({preparingWorktree:!1})}),ys(a,null),st(e=>[...e,{id:o,role:`user`,text:l,createdAt:s,streaming:!1}]),ic();try{await qs({threadId:a,createdAt:s,modelSelection:c,runtimeMode:Jr,interactionMode:t}),L(a,t),await ea(c.provider),await r.orchestration.dispatchCommand({type:`thread.turn.start`,commandId:B(),threadId:a,message:{messageId:o,role:`user`,text:l,attachments:[]},modelSelection:c,titleSeed:G.title,runtimeMode:Jr,interactionMode:t,...t===`default`&&Sa?{sourceProposedPlan:{threadId:G.id,planId:Sa.id}}:{},createdAt:s}),t===`default`&&(hn.current=null,en(!0)),sr.current=!1}catch(e){st(e=>e.filter(e=>e.id!==o)),ys(a,e instanceof Error?e.message:`Failed to send plan follow-up.`),sr.current=!1,X()}},[G,Sa,ic,za,ea,$i,xt,Ha,Zr,qs,X,Jr,Ki,Zi,q,Ui,L,ys,J]),zc=(0,Z.useCallback)(async e=>{let t=N();if(!t||!G||!Sa||!Zr||Ha||xt||sr.current)return;let n=new Date().toISOString(),r=ee(),i=Sa.planMarkdown,a=Xo(i),o=tt(Qo(i)),s=e??Zi,c=e===void 0?D_({provider:q,model:J,models:Ui,effort:Ki,text:a}):$i(e,a,``);try{await ea(s.provider)}catch(e){di.add({type:`error`,title:`Could not start implementation thread`,description:e instanceof Error?e.message:`Selected provider is unavailable.`});return}sr.current=!0,(0,vo.flushSync)(()=>{za({preparingWorktree:!1})});let l=()=>{sr.current=!1,X()};await t.orchestration.dispatchCommand({type:`thread.create`,commandId:B(),threadId:r,projectId:G.projectId,projectlessCwd:G.projectId===null?G.projectlessCwd??null:null,title:o,modelSelection:s,runtimeMode:Jr,interactionMode:`default`,parentThreadId:null,branchSourceTurnId:null,branch:G.branch,worktreePath:G.worktreePath,createdAt:n}).then(()=>ea(s.provider)).then(()=>t.orchestration.dispatchCommand({type:`thread.turn.start`,commandId:B(),threadId:r,message:{messageId:re(),role:`user`,text:c,attachments:[]},modelSelection:s,titleSeed:o,runtimeMode:Jr,interactionMode:`default`,sourceProposedPlan:{threadId:G.id,planId:Sa.id},createdAt:n})).then(()=>d_(r)).then(()=>(gn.current=!0,g({to:`/$threadId`,params:{threadId:r}}))).catch(async e=>{await t.orchestration.dispatchCommand({type:`thread.delete`,commandId:B(),threadId:r}).catch(()=>void 0),di.add({type:`error`,title:`Could not start implementation thread`,description:e instanceof Error?e.message:`An error occurred while creating the new thread.`})}).then(l,l)},[Sa,G,za,ea,$i,xt,Ha,Zr,g,X,Jr,Ki,Zi,q,Ui,J]),Bc=(0,Z.useCallback)((e,t)=>{if(!G)return;if(Fi!==null&&e!==Fi){ws();return}let n=xe(Ii,e),r=Tt(n,s,Ii,t),i={provider:n,model:r};if(j(G.id,i),l(i),$n.current.length>0){let e=ye(Ii,n);We(e,r,n)||di.add({type:`warning`,title:`Attached images won't send with this model`,description:k_(Ne(e,r,n))})}ws()},[G,Fi,Ii,ws,j,l,s]),Vc=(0,Z.useCallback)((e,t)=>{if(!Sa)return;let n=xe(Ii,e),r=Tt(n,s,Ii,t),i=ba[Sa.id],a=Ge(n,r,i?.provider===n?i.options:Zi.provider===n?Zi.options:void 0);xa(e=>({...e,[Sa.id]:a})),ws()},[Sa,ba,Ii,ws,Zi,s]),Hc=(0,Z.useCallback)(e=>{G&&(P(G.id,q,e,{persistSticky:!0}),ws())},[G,ws,q,P]),Uc=(0,Z.useCallback)(e=>{if(!Sa)return;let t=Ge(ka,ja,e);xa(e=>({...e,[Sa.id]:t})),ws()},[Sa,ja,ka,ws]),Wc=(0,Z.useCallback)(e=>{if(e===W.current){ws();return}W.current=e,Pr(e),En(Po(e,e.length)),On(Io(e,e.length)),ws()},[ws,Pr]),Gc=Je({provider:q,threadId:t,model:J,models:Ui,modelOptions:Vi?.[q],prompt:C,onPromptChange:Wc,includeFastMode:!1}),Kc=Ot(q,{threadId:t}),qc=at({provider:q,models:Ui,model:J,prompt:C,onPromptChange:Wc,modelOptions:Vi?.[q],allowPromptInjectedEffort:!0,updateModelOptions:Kc}),Jc=qc.effort&&qc.effortLevels.length>0?{value:qc.ultrathinkPromptControlled?`ultrathink`:qc.effort,label:qc.ultrathinkPromptControlled?`Ultrathink`:qc.effortLevels.find(e=>e.value===qc.effort)?.label??qc.effort,levels:qc.effortLevels,onChange:qc.handleEffortChange,locked:qc.ultrathinkInBodyText||qc.ultrathinkPromptControlled}:null,Yc=Pe({provider:q,threadId:t,model:J,models:Ui,modelOptions:Vi?.[q],prompt:C,onPromptChange:Wc}),Xc=!!(Gc||wa||Ca||$t),Zc=(0,Z.useCallback)(e=>{Qr&&me(t,{envMode:e}),ws()},[Qr,ws,me,t]),Qc=(0,Z.useCallback)((e,t,n,r)=>{let i=W.current,a=Math.max(0,Math.min(i.length,e)),o=Math.max(a,Math.min(i.length,t));if(r?.expectedText!==void 0&&i.slice(a,o)!==r.expectedText)return!1;let s=Ro(W.current,e,t,n),c=Po(s.text,s.cursor);W.current=s.text;let l=_a?.activeQuestion;return l&&Y?qt(e=>({...e,[Y.requestId]:{...e[Y.requestId],[l.id]:Ho(e[Y.requestId]?.[l.id],s.text)}})):Pr(s.text),En(c),On(Io(s.text,Ao(s.text,c))),window.requestAnimationFrame(()=>{Kn.current?.focusAt(c)}),!0},[_a?.activeQuestion,Y,Pr]),$c=(0,Z.useCallback)(()=>Kn.current?.readSnapshot()||{value:W.current,cursor:Tn,expandedCursor:Ao(W.current,Tn),terminalContextIds:T.map(e=>e.id)},[Tn,T]),el=(0,Z.useCallback)(e=>{let t=$c(),n=No(W.current,t.cursor),r=a_({prompt:W.current,cursor:n,selectedText:e});r.length!==0&&Qc(n,n,r)},[Qc,$c]),tl=(0,Z.useCallback)(()=>{let e=$c();return{snapshot:e,trigger:Io(e.value,e.expandedCursor)}},[$c]),nl=(0,Z.useCallback)(e=>{if(er.current)return;er.current=!0,window.requestAnimationFrame(()=>{er.current=!1});let{snapshot:t,trigger:n}=tl();if(n){if(e.type===`agent`){let r=`@${e.mentionName} `,i=P_(t.value,n.rangeEnd,r);Qc(n.rangeStart,i,r,{expectedText:t.value.slice(n.rangeStart,i)})&&bn(null);return}if(e.type===`path`){let r=`@${e.path} `,i=P_(t.value,n.rangeEnd,r);Qc(n.rangeStart,i,r,{expectedText:t.value.slice(n.rangeStart,i)})&&bn(null);return}if(e.type===`slash-command`){if(e.command===`model`){let e=`/model `,r=P_(t.value,n.rangeEnd,e);Qc(n.rangeStart,r,e,{expectedText:t.value.slice(n.rangeStart,r)})&&bn(null);return}if(e.command===`personality`&&!e.value){let e=`/personality `,r=P_(t.value,n.rangeEnd,e);Qc(n.rangeStart,r,e,{expectedText:t.value.slice(n.rangeStart,r)})&&bn(null);return}if(e.command===`fork`&&!e.value){let e=`/fork `,r=P_(t.value,n.rangeEnd,e);Qc(n.rangeStart,r,e,{expectedText:t.value.slice(n.rangeStart,r)})&&bn(null);return}if(e.command===`review`){let e=A_;Qc(n.rangeStart,n.rangeEnd,e,{expectedText:t.value.slice(n.rangeStart,n.rangeEnd)})&&bn(null);return}if(e.command===`compact`){Qc(n.rangeStart,n.rangeEnd,j_,{expectedText:t.value.slice(n.rangeStart,n.rangeEnd)})&&bn(null);return}e.command===`fast`?Us():e.command===`goal`?zs():e.command===`fork`?Gs(e.value===`worktree`?`worktree`:`local`):e.command===`mcp`?Ws(`/settings/mcp`):e.command===`memories`?Hs():e.command===`personality`&&e.value?Vs(e.value):Ns(e.command===`plan`?`plan`:`default`),Qc(n.rangeStart,n.rangeEnd,``,{expectedText:t.value.slice(n.rangeStart,n.rangeEnd)})&&bn(null);return}Bc(e.provider,e.model),Qc(n.rangeStart,n.rangeEnd,``,{expectedText:t.value.slice(n.rangeStart,n.rangeEnd)})&&bn(null)}},[Qc,Vs,Gs,Ns,Ws,Bc,tl,Us,zs,Hs]),rl=(0,Z.useCallback)(e=>{bn(e)},[]),il=(0,Z.useCallback)(e=>{if($o.length===0)return;let t=yn?$o.findIndex(e=>e.id===yn):-1,n=$o[((t>=0?t:0)+(e===`ArrowDown`?1:-1)+$o.length)%$o.length];bn(n?.id??null)},[yn,$o]),al=So===`path`&&(Co.length>0&&Eo.state.isPending||qo.isLoading||qo.isFetching),ol=Wi.composerFrameClassName!==void 0&&Wi.composerFrameClassName.length>0,sl=(0,Z.useCallback)((e,n,r,i,a)=>{if(_a?.activeQuestion&&Y){Fc(_a.activeQuestion.id,e,n,r,i);return}W.current=e,Pr(e),I_(T,a)||ce(t,F_(T,a)),En(n),On(i?null:Io(e,r))},[_a?.activeQuestion,Y,T,Fc,Pr,ce,t]),cl=(0,Z.useCallback)(e=>{cn(e),e&&e!==`insert`&&(On(null),bn(null))},[]),ll=(e,t)=>{if(e===`Tab`&&t.shiftKey)return Ps(),!0;let{trigger:n}=tl();if(tr.current||n!==null){let t=nr.current;if(e===`ArrowDown`&&t.length>0)return il(`ArrowDown`),!0;if(e===`ArrowUp`&&t.length>0)return il(`ArrowUp`),!0;if(e===`Tab`||e===`Enter`){let e=ir.current??t[0];if(e)return nl(e),!0}}return e===`Enter`&&!t.shiftKey?(kc(),!0):!1},ul=(0,Z.useCallback)((e,t)=>{let n=Mn.current;(n?zo(n):Fn.current)?(Fn.current=!0,Vn.current=!1,$s({showScrollToBottom:!1,isScrolledFromTop:n?n.scrollTop>8:!1}),tc(18)):t&&rc(),Qt(n=>({...n,[e]:!t}))},[rc,tc,$s]),dl=(0,Z.useCallback)(e=>{et(e)},[]),fl=Ze?Ze.images[Ze.index]:null,pl=(0,Z.useCallback)((e,n)=>{Ti&&g({to:`/$threadId`,params:{threadId:t},search:t=>{let r=vi(t);return n?{...r,diff:`1`,diffTurnId:e,diffFilePath:n,panel:`diff`}:{...r,diff:`1`,diffTurnId:e,panel:`diff`}}})},[Ti,g,t]),ml=(0,Z.useCallback)(e=>{Ti&&g({to:`/$threadId`,params:{threadId:t},search:t=>({...ai(t),artifact:`1`,artifactPath:e,panel:`artifact`})})},[Ti,g,t]),hl=e=>{let t=go.get(e);typeof t==`number`&&Oc(t)},gl=(0,Z.useCallback)(async e=>{let t=N();if(!(!t||!G||Mt||Ua||Ha||xt||sr.current))try{ic(),await t.orchestration.dispatchCommand({type:`thread.turn.retry`,commandId:B(),threadId:G.id,assistantMessageId:e,createdAt:new Date().toISOString()})}catch(e){ys(G.id,e instanceof Error?e.message:`Failed to retry message.`)}},[G,ic,xt,Mt,Ha,Ua,ys]),_l=(0,Z.useCallback)(async(e,t)=>{let n=N();if(!(!n||!G||Mt||Ua||Ha||xt||sr.current||t.trim().length===0))try{ic(),await n.orchestration.dispatchCommand({type:`thread.message.edit`,commandId:B(),threadId:G.id,userMessageId:e,text:t,createdAt:new Date().toISOString()})}catch(e){ys(G.id,e instanceof Error?e.message:`Failed to edit message.`)}},[G,ic,xt,Mt,Ha,Ua,ys]);return G?(0,Q.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden bg-background`,children:[(0,Q.jsx)(`header`,{className:U(`px-3 sm:px-5`,M?`app-titlebar-window-controls-inset drag-region flex h-[52px] items-center [--app-titlebar-base-left-padding:1.25rem]`:`py-2 sm:py-3`),children:(0,Q.jsx)(uh,{activeThreadTitle:G.title,activeProjectPath:xo??void 0,isGitRepo:is,openInCwd:xo,keybindings:ko,availableEditors:jo,terminalToggleShortcutLabel:ss,browserToggleShortcutLabel:fs,diffToggleShortcutLabel:ds,browserEnabled:ei,browserOpen:ri,diffOpen:ni,isBranchedThread:G.parentThreadId!==null,parentThread:si?{threadId:si.id,title:si.title,archivedAt:si.archivedAt}:null,missingParentThread:G.parentThreadId&&!si?{threadId:G.parentThreadId}:null,childThreads:ci.map(e=>({threadId:e.id,title:e.title,archivedAt:e.archivedAt})),onBranchThread:Zr&&G.archivedAt===null?Ei:null,onNavigateToThread:e=>{g({to:`/$threadId`,params:{threadId:e}})},onToggleBrowser:gs,onToggleDiff:ps})}),(0,Q.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1`,children:[(0,Q.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,children:[!fo&&(0,Q.jsxs)(`div`,{className:`relative flex min-h-0 flex-1 flex-col`,children:[(0,Q.jsx)(`div`,{ref:fr,className:`min-h-0 flex-1 overflow-x-hidden overflow-y-auto overscroll-y-contain px-3 pt-3 pb-8 [-ms-overflow-style:none] [scrollbar-width:none] sm:px-5 sm:pt-4 sm:pb-10 [&::-webkit-scrollbar]:hidden`,style:{maskImage:`linear-gradient(to bottom, ${De?`transparent 0%, black 5rem`:`black 0%`}, ${we?`black calc(100% - 5rem), transparent 100%`:`black 100%`})`},onScroll:ac,onClickCapture:nc,onWheel:oc,onPointerDown:sc,onPointerUp:cc,onPointerCancel:lc,onTouchStart:uc,onTouchMove:dc,onTouchEnd:pc,onTouchCancel:pc,children:(0,Q.jsx)(qp,{hasMessages:co.length>0,isWorking:Ka,showWorkingIndicator:Ka&&!uo,activeTurnInProgress:Ka||!_i,activeTurnStartedAt:Ja,activeTurnId:lo,revealingBufferedAssistantMessageIds:Ve,scrollContainer:Nn,workGroupAutoScrollSuppressRef:In,timelineEntries:co,completionDividerBeforeEntryId:yo,completionSummary:_o,turnDiffSummaryByAssistantMessageId:ho,showTurnDiffActions:Ti,expandedWorkGroups:Xt,onToggleWorkGroup:ul,onOpenTurnDiff:pl,onOpenArtifact:ml,revertTurnCountByUserMessageId:go,onRevertUserMessage:hl,onRetryAssistantMessage:gl,onEditUserMessage:_l,isRevertingCheckpoint:Mt,onImageExpand:dl,markdownCwd:xo??void 0,resolvedTheme:b,timestampFormat:u,workspaceRoot:Si?.cwd??void 0,...Ya?{}:{onAddAssistantSelectionToChat:el}},bo)}),we&&(0,Q.jsx)(`div`,{className:`pointer-events-none absolute bottom-1 left-1/2 z-30 flex -translate-x-1/2 justify-center py-1.5`,children:(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>Ys(`smooth`),className:`pointer-events-auto flex items-center gap-1.5 rounded-full border border-border/60 bg-card px-3 py-1 text-muted-foreground text-xs shadow-sm transition-colors hover:border-border hover:text-foreground hover:cursor-pointer`,children:[(0,Q.jsx)(qn,{className:`size-3.5`}),`Scroll to bottom`]})})]}),(0,Q.jsxs)(`div`,{className:U(`relative w-full min-w-0`,fo?`flex flex-1 flex-col items-center justify-center px-3 sm:px-5`:`shrink-0 px-3 pb-5 sm:px-5 sm:pb-6`),children:[fo&&(0,Q.jsx)(zg,{promptLength:C.trim().length}),fo&&(0,Q.jsx)(`div`,{className:`relative z-10 mx-auto mb-8 w-full min-w-0 max-w-[44rem]`,children:(0,Q.jsx)(Wg,{projectName:Si?.name})}),(0,Q.jsxs)(`form`,{ref:Jn,onSubmit:kc,className:`relative z-10 mx-auto w-full min-w-0 max-w-[44rem]`,"data-chat-composer-form":`true`,children:[Qa&&(0,Q.jsx)(tg,{onActivate:Ps,onDismiss:()=>Za(!0)}),(0,Q.jsx)(Og,{taskList:Ta,taskListOpen:ln,backgroundSubagents:Yo,backgroundSubagentsOpen:dn,queuedTurns:Tr,queuedOpen:pn,onTaskListOpenChange:un,onBackgroundSubagentsOpenChange:fn,onQueuedOpenChange:mn,onDeleteQueuedTurn:xs,onEditQueuedTurn:e=>void Ss(e)}),(0,Q.jsx)(Lg,{providerStatus:rs,resumeState:G.resumeState,threadError:G.error,onDismissError:()=>ys(G.id,null),onResumeAction:()=>Cs()}),(0,Q.jsxs)(`div`,{className:`relative`,children:[es&&!Ya&&(0,Q.jsx)(`div`,{className:`absolute inset-x-0 bottom-full z-20 mb-2 px-4`,children:(0,Q.jsx)(mh,{items:$o,resolvedTheme:b,isLoading:al,triggerKind:So,activeItemId:ts?.id??null,onHighlightedItemChange:rl,onSelect:nl})}),(0,Q.jsx)(`div`,{"data-chat-composer-frame":`true`,className:U(`chat-composer-depth group relative z-10 min-w-0 overflow-hidden transition-[margin-top,color,box-shadow,border-color,background-color] duration-[220ms] ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none`,ol?[`rounded-[22px] p-px`,Wi.composerFrameClassName]:`rounded-[20px] border border-[color-mix(in_srgb,var(--color-neutral-500)_16%,transparent)] bg-card dark:border-[color-mix(in_srgb,var(--color-neutral-400)_14%,transparent)]`),onDragEnter:wc,onDragOver:Tc,onDragLeave:Ec,onDrop:Dc,children:(0,Q.jsxs)(`div`,{"data-chat-composer-surface":`true`,className:U(`min-w-0`,!ol&&`rounded-[19px] bg-card`,ol&&[`rounded-[20px] border border-[color-mix(in_srgb,var(--color-neutral-500)_16%,transparent)] bg-card shadow-sm transition-colors duration-200 dark:border-[color-mix(in_srgb,var(--color-neutral-400)_14%,transparent)]`,Ue&&`bg-accent/30`,Wi.composerSurfaceClassName]),children:[Ia?(0,Q.jsx)(`div`,{className:`rounded-t-[19px] border-b border-border/65 bg-muted/20`,children:(0,Q.jsx)(ag,{approval:Ia,pendingCount:pa.length})}):ma.length>0?(0,Q.jsx)(`div`,{className:`rounded-t-[19px] border-b border-border/65 bg-muted/20`,children:(0,Q.jsx)(sg,{pendingUserInputs:ma,respondingRequestIds:Lt,answers:ha,questionIndex:ga,onSelectOption:Pc,onAdvance:Ic})}):Ea&&Sa?(0,Q.jsx)(`div`,{className:`rounded-t-[19px] border-b border-border/65 bg-muted/20`,children:(0,Q.jsx)(lg,{planTitle:Ko(Sa.planMarkdown)??null},Sa.id)}):null,(0,Q.jsxs)(`div`,{className:U(`relative px-3 pb-2 sm:px-4`,$a?`pt-2.5 sm:pt-3`:`pt-3.5 sm:pt-4`),children:[!Ya&&ma.length===0&&w.length>0&&(0,Q.jsx)(`div`,{className:`mb-3 flex flex-wrap gap-2`,children:w.map(e=>(0,Q.jsxs)(`div`,{className:`relative h-16 w-16 overflow-hidden rounded-lg border border-border/80 bg-background`,children:[e.previewUrl?(0,Q.jsx)(`button`,{type:`button`,className:`h-full w-full cursor-zoom-in`,"aria-label":`Preview ${e.name}`,onClick:()=>{let t=tu(w,e.id);t&&et(t)},children:(0,Q.jsx)(`img`,{src:e.previewUrl,alt:e.name,className:`h-full w-full object-cover`})}):(0,Q.jsx)(`div`,{className:`flex h-full w-full items-center justify-center px-1 text-center text-[10px] text-muted-foreground/70`,children:e.name}),ns.has(e.id)&&(0,Q.jsxs)(Hr,{children:[(0,Q.jsx)(yi,{render:(0,Q.jsx)(`span`,{role:`img`,"aria-label":`Draft attachment may not persist`,className:`absolute left-1 top-1 inline-flex items-center justify-center rounded bg-background/85 p-0.5 text-amber-600`,children:(0,Q.jsx)(kn,{className:`size-3`})})}),(0,Q.jsx)(Wr,{side:`top`,className:`max-w-64 whitespace-normal leading-tight`,children:`Draft attachment could not be saved locally and may be lost on navigation.`})]}),(0,Q.jsx)(I,{variant:`ghost`,size:`icon-xs`,className:`absolute right-1 top-1 bg-background/80 hover:bg-background/90`,onClick:()=>Sc(e.id),"aria-label":`Remove ${e.name}`,children:(0,Q.jsx)(sn,{})})]},e.id))}),s.composerVimMode&&on&&on!==`insert`?(0,Q.jsx)(x_,{mode:on}):null,(0,Q.jsx)(Yl,{ref:Kn,value:Ya?``:_a?_a.customAnswer:C,cursor:Tn,terminalContexts:!Ya&&ma.length===0?T:[],onRemoveTerminalContext:Ur,onChange:sl,onCommandKeyDown:ll,onPaste:Cc,vimModeEnabled:s.composerVimMode,vimCommandMenuActive:es,onVimModeChange:cl,placeholder:Ya?Ia?.detail??`Resolve this approval request to continue`:_a?`Type your own answer, or leave this blank to use the selected option`:Ea&&Sa?`Add feedback to refine the plan, or leave this blank to implement it`:Pi&&sa===`disconnected`?`Ask for follow-up changes or attach images`:`Ask anything, @tag files/folders, or use / to show available commands`,disabled:xt||Ya})]}),Ia?(0,Q.jsx)(`div`,{className:`flex items-center justify-end gap-2 px-2.5 pb-2.5 sm:px-3 sm:pb-3`,children:(0,Q.jsx)(Th,{approval:Ia,isResponding:Lt.includes(Ia.requestId),respondingDecision:zt,onRespondToApproval:jc})}):(0,Q.jsxs)(`div`,{ref:Xn,"data-chat-composer-footer":`true`,"data-chat-composer-footer-compact":tn?`true`:`false`,className:U(`flex min-w-0 flex-nowrap items-center gap-2 overflow-hidden px-2.5 pb-2.5 sm:px-3 sm:pb-3`,`justify-between`,tn?`gap-1.5`:`gap-2 sm:gap-0`),children:[(0,Q.jsxs)(`div`,{ref:Zn,className:`flex min-w-0 shrink-0 items-center gap-1`,children:[(0,Q.jsx)(Ah,{threadId:t,provider:q,models:Ui,model:J,modelOptions:Vi?.[q],planModeActive:Xr===`plan`,onTogglePlanMode:Ps,goalModeActive:An,onToggleGoalMode:zs,onAddFiles:xc}),G?.goal?(0,Q.jsx)(Qh,{goal:G.goal,disabled:!G,onUpdateGoal:Ls,onClearGoal:Rs}):null,tn&&Xc?(0,Q.jsx)(Oh,{activePlan:!!(wa||Ca||$t),planSidebarOpen:$t,runtimeMode:Jr,traitsMenuContent:Gc,onTogglePlanSidebar:Ks,onRuntimeModeChange:Ms}):(0,Q.jsx)(kh,{compact:tn,runtimeMode:Jr,onToggle:Bs}),An?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{"aria-hidden":`true`,className:`h-4 w-px shrink-0 bg-border`}),(0,Q.jsx)($h,{onDismiss:()=>jn(!1)})]}):null,Xr===`plan`?(0,Q.jsx)(ng,{onDisable:Ps}):null]}),(0,Q.jsxs)(`div`,{ref:Qn,"data-chat-composer-actions":`right`,"data-chat-composer-primary-actions-compact":rn?`true`:`false`,className:`flex min-w-0 flex-1 flex-nowrap items-center justify-end gap-1 overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden`,children:[Da?(0,Q.jsx)(Qi,{compact:tn,provider:ka,model:Fa,lockedProvider:null,providers:Ii,modelOptionsByProvider:Li,modelOptions:Pa.options,onModelOptionsChange:Uc,...Na.modelPickerIconClassName?{activeProviderIconClassName:Na.modelPickerIconClassName}:{},onProviderModelChange:Vc}):(0,Q.jsx)(Qi,{compact:tn,provider:q,model:Mo,lockedProvider:Fi,providers:Ii,modelOptionsByProvider:Li,modelOptions:Vi?.[q],onModelOptionsChange:Hc,effort:Jc,...Wi.modelPickerIconClassName?{activeProviderIconClassName:Wi.modelPickerIconClassName}:{},onProviderModelChange:Bc}),!Da&&!tn&&Yc?Yc:null,!tn&&(wa||Ca||$t)?(0,Q.jsxs)(I,{variant:`ghost`,className:U(`shrink-0 whitespace-nowrap px-2 sm:px-2.5`,$t?`text-blue-400 hover:text-blue-300`:`text-muted-foreground/70 hover:text-foreground/80`),size:`sm`,type:`button`,onClick:Ks,title:$t?`Hide plan sidebar`:`Show plan sidebar`,children:[(0,Q.jsx)(Zt,{}),(0,Q.jsx)(`span`,{className:`sr-only sm:not-sr-only`,children:`Plan`})]}):null,gi?(0,Q.jsx)(ph,{usage:gi}):null,Va?(0,Q.jsx)(`span`,{className:`ms-1 text-muted-foreground/70 text-xs`,children:`Preparing worktree...`}):null,(0,Q.jsx)(`div`,{className:gi?`ml-1`:void 0,children:(0,Q.jsx)(ig,{compact:rn,pendingAction:_a?{questionIndex:_a.questionIndex,isLastQuestion:_a.isLastQuestion,canAdvance:_a.canAdvance,isResponding:ya,isComplete:!!va}:null,isRunning:Ua,awaitingSendAck:uo,queuedTurnCount:Tr.length,showPlanFollowUpPrompt:ma.length===0&&Ea,promptHasText:C.trim().length>0,isSendBusy:Ha,isConnecting:xt,isPreparingWorktree:Va,hasSendableContent:E.hasSendableContent,canSteerRunningTurn:Ga,onQueueRunningTurn:()=>void kc(void 0,`queue`),onPreviousPendingQuestion:Lc,onInterrupt:()=>void Ac(),onImplementPlanInNewThread:()=>void zc(Pa)})})]})]})]})})]})]}),fo&&Ci?(0,Q.jsx)(L_,{emptyThread:!0}):null,fo&&!Ci&&(0,Q.jsx)(`div`,{className:`relative z-0 mx-auto -mt-5 flex w-full min-w-0 max-w-[44rem] flex-wrap items-center gap-x-1 gap-y-1 rounded-b-[20px] border border-t-0 border-border bg-[color-mix(in_srgb,var(--card)_94%,var(--muted-foreground)_6%)] px-3 pt-6 pb-1.5`,children:(0,Q.jsx)(Ds,{threadId:G.id,onEnvModeChange:Zc,envLocked:_s,isGitRepo:is,onComposerFocusRequest:ws,...$r?{onCheckoutPullRequestRequest:Di}:{}})})]}),!fo&&Ci?(0,Q.jsx)(L_,{emptyThread:!1}):null,xn?(0,Q.jsx)(Zl,{open:!0,cwd:Si?.cwd??null,initialReference:xn.initialReference,onOpenChange:e=>{e||Oi()},onPrepared:Ai},xn.key):null]}),$t?(0,Q.jsx)(Is,{activePlan:wa,activeProposedPlan:Ca,markdownCwd:xo??void 0,workspaceRoot:Si?.cwd??void 0,timestampFormat:u,onClose:()=>{en(!1);let e=wa?.turnId??Ca?.turnId??null;e&&(hn.current=e)}}):null]}),Mr.map(e=>(0,Q.jsx)(H_,{threadId:e,visible:e===K&&mr.terminalOpen,focusRequestId:e===K?_n:0,splitShortcutLabel:cs??void 0,newShortcutLabel:ls??void 0,closeShortcutLabel:us??void 0,onAddTerminalContext:Ts},e)),Ze&&fl&&(0,Q.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/75 px-4 py-6 [-webkit-app-region:no-drag]`,role:`dialog`,"aria-modal":`true`,"aria-label":`Expanded image preview`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`absolute inset-0 z-0 cursor-zoom-out`,"aria-label":`Close image preview`,onClick:mc}),Ze.images.length>1&&(0,Q.jsx)(I,{type:`button`,size:`icon`,variant:`ghost`,className:`absolute left-2 top-1/2 z-20 -translate-y-1/2 text-white/90 hover:bg-white/10 hover:text-white sm:left-6`,"aria-label":`Previous image`,onClick:()=>{hc(-1)},children:(0,Q.jsx)(ur,{className:`size-5`})}),(0,Q.jsxs)(`div`,{className:`relative isolate z-10 max-h-[92vh] max-w-[92vw]`,children:[(0,Q.jsx)(I,{type:`button`,size:`icon-xs`,variant:`ghost`,className:`absolute right-2 top-2`,onClick:mc,"aria-label":`Close image preview`,children:(0,Q.jsx)(sn,{})}),(0,Q.jsx)(`img`,{src:fl.src,alt:fl.name,className:`max-h-[86vh] max-w-[92vw] select-none rounded-lg border border-border/70 bg-background object-contain shadow-2xl`,draggable:!1}),(0,Q.jsxs)(`p`,{className:`mt-2 max-w-[92vw] truncate text-center text-xs text-muted-foreground/80`,children:[fl.name,Ze.images.length>1?` (${Ze.index+1}/${Ze.images.length})`:``]})]}),Ze.images.length>1&&(0,Q.jsx)(I,{type:`button`,size:`icon`,variant:`ghost`,className:`absolute right-2 top-1/2 z-20 -translate-y-1/2 text-white/90 hover:bg-white/10 hover:text-white sm:right-6`,"aria-label":`Next image`,onClick:()=>{hc(1)},children:(0,Q.jsx)(rr,{className:`size-5`})})]})]}):(0,Q.jsx)(ra,{})}function W_(e){let t=(0,X.c)(31),n=(0,Z.useRef)(0),r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=e=>{gi(e.dataTransfer)&&(e.preventDefault(),n.current+=1)},t[0]=r):r=t[0];let i=r,a;t[1]===e?a=t[2]:(a=t=>{gi(t.dataTransfer)&&(t.preventDefault(),t.dataTransfer.dropEffect=`copy`,e.onDropZoneChange(K(t.currentTarget.getBoundingClientRect(),t.clientX,t.clientY)))},t[1]=e,t[2]=a);let o=a,s;t[3]===e?s=t[4]:(s=t=>{gi(t.dataTransfer)&&(n.current=Math.max(0,n.current-1),n.current===0&&e.onDropZoneChange(null))},t[3]=e,t[4]=s);let c=s,l;t[5]===e?l=t[6]:(l=t=>{n.current=0;let r=Si(t.dataTransfer);if(!r){e.onDropZoneChange(null);return}t.preventDefault();let i=K(t.currentTarget.getBoundingClientRect(),t.clientX,t.clientY);e.onDropZoneChange(null),e.onThreadDrop(r,i)},t[5]=e,t[6]=l);let u=l,d=e.focused?`Focused thread pane`:`Thread pane`,f=e.focused?`true`:`false`,p=e.multiPane&&!e.focused&&`bg-muted/10`,m;t[7]===p?m=t[8]:(m=U(`relative flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-background`,p),t[7]=p,t[8]=m);let h,g;t[9]===e?(h=t[10],g=t[11]):(h=()=>{e.focused||e.onFocus()},g=t=>{if(e.focused)return;let n=t.target;n instanceof Element&&(n.closest(`[data-thread-pane-close='true']`)||e.onFocus())},t[9]=e,t[10]=h,t[11]=g);let _;t[12]===e?_=t[13]:(_=e.multiPane?(0,Q.jsxs)(`div`,{className:U(`flex h-8 shrink-0 items-center justify-end border-b px-2`,e.focused?`border-foreground/20 bg-background`:`border-border/70 bg-muted/10`),children:[(0,Q.jsx)(`div`,{className:U(`pointer-events-none absolute inset-x-0 top-0 z-30 h-px transition-colors`,e.focused?`bg-foreground/60`:`bg-border/80`)}),(0,Q.jsx)(`button`,{type:`button`,"data-thread-pane-close":`true`,"aria-label":`Close thread pane`,className:`inline-flex size-6 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-sidebar-hover hover:text-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring`,onClick:t=>{t.preventDefault(),t.stopPropagation(),e.onClose()},children:(0,Q.jsx)(sn,{className:`size-3.5`})})]}):null,t[12]=e,t[13]=_);let v;t[14]!==e.focused||t[15]!==e.threadId?(v=(0,Q.jsx)(U_,{threadId:e.threadId,isFocusedPane:e.focused},e.threadId),t[14]=e.focused,t[15]=e.threadId,t[16]=v):v=t[16];let y;t[17]===e.dropZone?y=t[18]:(y=e.dropZone?(0,Q.jsx)(G_,{zone:e.dropZone}):null,t[17]=e.dropZone,t[18]=y);let b;return t[19]!==c||t[20]!==o||t[21]!==u||t[22]!==_||t[23]!==v||t[24]!==y||t[25]!==d||t[26]!==f||t[27]!==m||t[28]!==h||t[29]!==g?(b=(0,Q.jsxs)(`section`,{"aria-label":d,"data-focused":f,className:m,onFocusCapture:h,onPointerDownCapture:g,onDragEnter:i,onDragOver:o,onDragLeave:c,onDrop:u,children:[_,v,y]}),t[19]=c,t[20]=o,t[21]=u,t[22]=_,t[23]=v,t[24]=y,t[25]=d,t[26]=f,t[27]=m,t[28]=h,t[29]=g,t[30]=b):b=t[30],b}function G_(e){let t=(0,X.c)(8),n=e.zone===`center`&&`inset-1.5`,r=e.zone===`left`&&`inset-y-1.5 left-1.5 right-1/2`,i=e.zone===`right`&&`inset-y-1.5 left-1/2 right-1.5`,a=e.zone===`top`&&`inset-x-1.5 top-1.5 bottom-1/2`,o=e.zone===`bottom`&&`inset-x-1.5 top-1/2 bottom-1.5`,s;t[0]!==n||t[1]!==r||t[2]!==i||t[3]!==a||t[4]!==o?(s=U(`absolute rounded-md border border-dashed border-foreground/40 bg-foreground/10 transition-[inset]`,n,r,i,a,o),t[0]=n,t[1]=r,t[2]=i,t[3]=a,t[4]=o,t[5]=s):s=t[5];let c;return t[6]===s?c=t[7]:(c=(0,Q.jsx)(`div`,{className:`pointer-events-none absolute inset-0 z-40`,children:(0,Q.jsx)(`div`,{className:s})}),t[6]=s,t[7]=c),c}var K_=`pane_layout_split_sizes`,q_=64,J_=o(t,s(a));function Y_(e){return`${e.direction}:${e.children.map(G).join(`|`)}`}function X_(e){return e>0?Array.from({length:e},()=>1/e):[]}function Z_(e,t){if(t<=0)return[];if(!e||e.length!==t||e.some(e=>!Number.isFinite(e)||e<=0))return X_(t);let n=e.reduce((e,t)=>e+t,0);return n>0?e.map(e=>e/n):X_(t)}function Q_(e,t,n,r){let i=e[t],a=e[t+1];if(i===void 0||a===void 0)return[...e];let o=-(i-r),s=a-r;if(o>s)return[...e];let c=Math.max(o,Math.min(n,s)),l=[...e];return l[t]=i+c,l[t+1]=a-c,l}function $_(e,t){return Z_(tv()[e],t)}function ev(e,t){let{[e]:n,...r}=tv(),i=Object.entries(r),a=i.slice(Math.max(0,i.length+1-q_));try{L(K_,{...Object.fromEntries(a),[e]:[...t]},J_)}catch{}}function tv(){try{return F(K_,J_)??{}}catch{return{}}}var nv=240,rv=.02;function iv(e){let t=(0,X.c)(4),n=e.minPaneSizePx??nv,r;return t[0]!==e.layout||t[1]!==e.renderPane||t[2]!==n?(r=(0,Q.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-1 overflow-hidden`,children:(0,Q.jsx)(av,{node:e.layout,renderPane:e.renderPane,minPaneSizePx:n})}),t[0]=e.layout,t[1]=e.renderPane,t[2]=n,t[3]=r):r=t[3],r}function av(e){let t=(0,X.c)(9);if(e.node.type===`pane`){let n;t[0]!==e.node.key||t[1]!==e.renderPane?(n=e.renderPane(e.node.key),t[0]=e.node.key,t[1]=e.renderPane,t[2]=n):n=t[2];let r;return t[3]===n?r=t[4]:(r=(0,Q.jsx)(Q.Fragment,{children:n}),t[3]=n,t[4]=r),r}let n;return t[5]!==e.minPaneSizePx||t[6]!==e.node||t[7]!==e.renderPane?(n=(0,Q.jsx)(ov,{node:e.node,renderPane:e.renderPane,minPaneSizePx:e.minPaneSizePx}),t[5]=e.minPaneSizePx,t[6]=e.node,t[7]=e.renderPane,t[8]=n):n=t[8],n}function ov(e){let{minPaneSizePx:t,node:n,renderPane:r}=e,i=n.direction===`row`,a=n.children.length,o=Y_(n),s=(0,Z.useRef)(null),c=(0,Z.useRef)(null),[l,u]=(0,Z.useState)(()=>$_(o,a)),d=(0,Z.useRef)(l);d.current=l;let f=(0,Z.useRef)(o);if(f.current!==o){f.current=o;let e=$_(o,a);d.current=e,u(e)}let p=(0,Z.useCallback)(e=>e>0?Math.min(t/e,1/a):1/a,[a,t]),m=(0,Z.useCallback)(()=>{c.current=null,document.body.style.removeProperty(`cursor`),document.body.style.removeProperty(`user-select`)},[]);(0,Z.useEffect)(()=>()=>m(),[m]);let h=e=>t=>{if(t.button!==0||!s.current)return;let n=s.current.getBoundingClientRect();c.current={containerSizePx:i?n.width:n.height,dividerIndex:e,pointerId:t.pointerId,startCoord:i?t.clientX:t.clientY,startSizes:d.current},t.preventDefault(),t.currentTarget.setPointerCapture(t.pointerId),document.body.style.cursor=i?`col-resize`:`row-resize`,document.body.style.userSelect=`none`},g=e=>{let t=c.current;if(!t||t.pointerId!==e.pointerId)return;let n=i?e.clientX:e.clientY,r=t.containerSizePx>0?(n-t.startCoord)/t.containerSizePx:0;u(Q_(t.startSizes,t.dividerIndex,r,p(t.containerSizePx))),e.preventDefault()},_=e=>{let t=c.current;!t||t.pointerId!==e.pointerId||(ev(o,d.current),e.currentTarget.hasPointerCapture(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId),m(),e.preventDefault())},v=e=>{d.current=e,u(e),ev(o,e)},y=e=>t=>{let n=i?`ArrowLeft`:`ArrowUp`,r=i?`ArrowRight`:`ArrowDown`,a=t.key===n?-rv:t.key===r?rv:null;if(a===null)return;t.preventDefault();let o=s.current?.getBoundingClientRect(),c=o?i?o.width:o.height:0;v(Q_(d.current,e,a,p(c)))},b=()=>{v(X_(a))};return(0,Q.jsx)(`div`,{ref:s,className:U(`flex min-h-0 min-w-0 flex-1 overflow-hidden`,i?`flex-row`:`flex-col`),children:n.children.map((e,i)=>(0,Q.jsxs)(Z.Fragment,{children:[i>0?(0,Q.jsx)(sv,{direction:n.direction,onDoubleClick:b,onKeyDown:y(i-1),onPointerCancel:_,onPointerDown:h(i-1),onPointerMove:g,onPointerUp:_}):null,(0,Q.jsx)(`div`,{className:`flex min-h-0 min-w-0 overflow-hidden`,style:{flexGrow:l[i]??1,flexShrink:1,flexBasis:0},children:(0,Q.jsx)(av,{node:e,renderPane:r,minPaneSizePx:t})})]},G(e)||`pane-${i}`))})}function sv(e){let t=(0,X.c)(16),n=e.direction===`row`,r=n?`Resize panes (drag left or right)`:`Resize panes (drag up or down)`,i=n?`-mx-[3px] w-[7px] cursor-col-resize`:`-my-[3px] h-[7px] cursor-row-resize`,a;t[0]===i?a=t[1]:(a=U(`group relative z-10 flex shrink-0 touch-none items-center justify-center focus-visible:outline-hidden`,i),t[0]=i,t[1]=a);let o=e.onDoubleClick,s=e.onKeyDown,c=e.onPointerCancel,l=e.onPointerDown,u=e.onPointerMove,d=e.onPointerUp,f=n?`h-full w-px`:`h-px w-full`,p;t[2]===f?p=t[3]:(p=U(`bg-border/70 transition-colors group-hover:bg-foreground/25 group-focus-visible:bg-foreground/25 group-active:bg-foreground/30`,f),t[2]=f,t[3]=p);let m;t[4]===p?m=t[5]:(m=(0,Q.jsx)(`span`,{className:p}),t[4]=p,t[5]=m);let h;return t[6]!==e.onDoubleClick||t[7]!==e.onKeyDown||t[8]!==e.onPointerCancel||t[9]!==e.onPointerDown||t[10]!==e.onPointerMove||t[11]!==e.onPointerUp||t[12]!==r||t[13]!==m||t[14]!==a?(h=(0,Q.jsx)(`button`,{type:`button`,"aria-label":r,title:`Drag to resize, double-click to reset`,className:a,onDoubleClick:o,onKeyDown:s,onPointerCancel:c,onPointerDown:l,onPointerMove:u,onPointerUp:d,children:m}),t[6]=e.onDoubleClick,t[7]=e.onKeyDown,t[8]=e.onPointerCancel,t[9]=e.onPointerDown,t[10]=e.onPointerMove,t[11]=e.onPointerUp,t[12]=r,t[13]=m,t[14]=a,t[15]=h):h=t[15],h}var cv=5e3;function lv(e){let t=(0,X.c)(5),n;t[0]===e?n=t[1]:(n=e.join(`\0`),t[0]=e,t[1]=n);let r=n,i,a;t[2]===r?(i=t[3],a=t[4]):(i=()=>{let e=r.split(`\0`).filter(dv).map(uv);if(e.length===0)return;let t=null,n=()=>{t!==null&&(window.clearInterval(t),t=null)},i=()=>{for(let t of e)j(t)},a=()=>{for(let t of e)P(t)},o=()=>{n(),!(typeof document<`u`&&document.hidden)&&(i(),t=window.setInterval(()=>{typeof document<`u`&&document.hidden||i()},cv))},s=()=>{if(document.hidden){n(),a();return}o()},c=()=>{n(),a()};return o(),document.addEventListener(`visibilitychange`,s),window.addEventListener(`pagehide`,c),()=>{n(),document.removeEventListener(`visibilitychange`,s),window.removeEventListener(`pagehide`,c),a()}},a=[r],t[2]=r,t[3]=i,t[4]=a),(0,Z.useEffect)(i,a)}function uv(e){return te.makeUnsafe(e)}function dv(e){return e.length>0}var fv=(0,Z.lazy)(()=>wr(()=>import(`./DiffPanel-CPmbtIC0.js`),__vite__mapDeps([17,2,18,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50]))),pv=(0,Z.lazy)(()=>wr(()=>import(`./ArtifactPanel-BPQ8FX7l.js`),__vite__mapDeps([51,2,18,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,52,46,48,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76]))),mv=320,hv=`(max-width: 1180px)`,gv=`chat_diff_sidebar_width`,_v=416,vv=448,yv=704,bv=.48,xv=208;function Sv(e){return!e.bootstrapComplete||e.routeThreadExists||e.missingSinceMs===null?!1:e.nowMs-e.missingSinceMs>=750}function Cv(e){return Math.max(_v,Math.min(e,yv))}function wv(){return typeof window>`u`?vv:Cv(window.innerWidth*bv)}var Tv=e=>{let t=(0,X.c)(8),n;t[0]===e?n=t[1]:(n=t=>{t||e.onClosePanel()},t[0]=e,t[1]=n);let r;t[2]===e.children?r=t[3]:(r=(0,Q.jsx)(Qr,{side:`right`,showCloseButton:!1,keepMounted:!0,className:`w-[min(92vw,920px)] max-w-[920px] p-0`,children:e.children}),t[2]=e.children,t[3]=r);let i;return t[4]!==e.open||t[5]!==n||t[6]!==r?(i=(0,Q.jsx)($r,{open:e.open,onOpenChange:n,children:r}),t[4]=e.open,t[5]=n,t[6]=r,t[7]=i):i=t[7],i},Ev=e=>{let t=(0,X.c)(6),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,Q.jsx)(Ii,{}),t[0]=n):n=t[0];let r;t[1]===e.label?r=t[2]:(r=(0,Q.jsx)(ji,{label:e.label}),t[1]=e.label,t[2]=r);let i;return t[3]!==e.mode||t[4]!==r?(i=(0,Q.jsx)(Fi,{mode:e.mode,header:n,children:r}),t[3]=e.mode,t[4]=r,t[5]=i):i=t[5],i},Dv=e=>{let t=(0,X.c)(8),n;t[0]===e.mode?n=t[1]:(n=(0,Q.jsx)(Ev,{label:`Loading the diff`,mode:e.mode}),t[0]=e.mode,t[1]=n);let r;t[2]!==e.mode||t[3]!==e.onClose?(r=(0,Q.jsx)(fv,{mode:e.mode,onClose:e.onClose}),t[2]=e.mode,t[3]=e.onClose,t[4]=r):r=t[4];let i;return t[5]!==n||t[6]!==r?(i=(0,Q.jsx)(Ki,{children:(0,Q.jsx)(Z.Suspense,{fallback:n,children:r})}),t[5]=n,t[6]=r,t[7]=i):i=t[7],i},Ov=e=>{let t=(0,X.c)(10),n;t[0]===e.mode?n=t[1]:(n=(0,Q.jsx)(Ev,{label:`Loading artifact`,mode:e.mode}),t[0]=e.mode,t[1]=n);let r;t[2]!==e.cwd||t[3]!==e.mode||t[4]!==e.onClose||t[5]!==e.relativePath?(r=(0,Q.jsx)(pv,{cwd:e.cwd,mode:e.mode,relativePath:e.relativePath,onClose:e.onClose}),t[2]=e.cwd,t[3]=e.mode,t[4]=e.onClose,t[5]=e.relativePath,t[6]=r):r=t[6];let i;return t[7]!==n||t[8]!==r?(i=(0,Q.jsx)(Z.Suspense,{fallback:n,children:r}),t[7]=n,t[8]=r,t[9]=i):i=t[9],i};function kv(e){switch(e){case`artifact`:return`artifact`;case`browser`:return`browser`;case`diff`:return`diff`}}var Av=e=>{let t=(0,X.c)(22),n;t[0]===e?n=t[1]:(n=t=>{t.button===0&&(t.preventDefault(),t.stopPropagation(),e.onClosePanel())},t[0]=e,t[1]=n);let r=n,i;t[2]===e?i=t[3]:(i=t=>{t.preventDefault(),t.stopPropagation(),t.detail===0&&e.onClosePanel()},t[2]=e,t[3]=i);let a=i,o;t[4]===e?o=t[5]:(o=e.tabs.map(t=>{let n=t.id===e.activePanel;return(0,Q.jsxs)(I,{type:`button`,variant:n?`secondary`:`ghost`,size:`xs`,"aria-current":n?`page`:void 0,className:U(`min-w-0 gap-1.5 px-2.5`,n?`text-foreground`:`text-muted-foreground hover:text-foreground`),onClick:()=>e.onSelectPanel(t.id),children:[t.icon,(0,Q.jsx)(`span`,{className:`truncate`,children:t.label})]},t.id)}),t[4]=e,t[5]=o);let s;t[6]===o?s=t[7]:(s=(0,Q.jsx)(`div`,{className:`no-drag flex min-w-0 flex-1 items-center gap-1 overflow-x-auto`,children:o}),t[6]=o,t[7]=s);let c=`Close ${kv(e.activePanel)} panel`,l=`Close ${kv(e.activePanel)} panel`,u;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,Q.jsx)(sn,{}),t[8]=u):u=t[8];let d;t[9]!==a||t[10]!==r||t[11]!==c||t[12]!==l?(d=(0,Q.jsx)(I,{type:`button`,variant:`ghost`,size:`icon-xs`,className:`no-drag shrink-0 text-muted-foreground hover:text-foreground`,onPointerDown:r,onClick:a,"aria-label":c,title:l,children:u}),t[9]=a,t[10]=r,t[11]=c,t[12]=l,t[13]=d):d=t[13];let f;t[14]!==s||t[15]!==d?(f=(0,Q.jsxs)(`div`,{className:`drag-region relative z-20 flex h-11 shrink-0 items-center gap-1 border-b border-border bg-card px-2`,children:[s,d]}),t[14]=s,t[15]=d,t[16]=f):f=t[16];let p;t[17]===e.children?p=t[18]:(p=(0,Q.jsx)(`div`,{className:`relative z-0 min-h-0 min-w-0 flex-1 overflow-hidden`,children:e.children}),t[17]=e.children,t[18]=p);let m;return t[19]!==f||t[20]!==p?(m=(0,Q.jsxs)(`div`,{className:`isolate flex h-full min-h-0 min-w-0 flex-1 flex-col bg-background`,children:[f,p]}),t[19]=f,t[20]=p,t[21]=m):m=t[21],m},jv=e=>{let t=(0,X.c)(7),n=e.active?void 0:!0,r=e.panel,i=e.active?`visible`:`pointer-events-none invisible`,a;t[0]===i?a=t[1]:(a=U(`absolute inset-0 min-h-0 min-w-0 overflow-hidden`,i),t[0]=i,t[1]=a);let o;return t[2]!==e.children||t[3]!==e.panel||t[4]!==n||t[5]!==a?(o=(0,Q.jsx)(`div`,{"aria-hidden":n,"data-right-sidebar-panel":r,className:a,children:e.children}),t[2]=e.children,t[3]=e.panel,t[4]=n,t[5]=a,t[6]=o):o=t[6],o},Mv=e=>{let t=(0,X.c)(15),{ariaLabel:n,children:r,open:i}=e,o=(0,Z.useRef)(null),s=(0,Z.useRef)(null),[c,l]=(0,Z.useState)(Fv),u;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(u=e=>{let t=o.current,n=document.querySelector(`[data-chat-composer-form='true']`);if(!t||!n)return!0;let r=n.parentElement;if(!r)return!0;let i=t.style.width;t.style.width=`${e}px`;let a=window.getComputedStyle(r),s=Number.parseFloat(a.paddingLeft)||0,c=Number.parseFloat(a.paddingRight)||0,l=Math.max(0,r.clientWidth-s-c),u=n.getBoundingClientRect(),d=n.querySelector(`[data-chat-composer-footer='true']`),f=n.querySelector(`[data-chat-composer-actions='right']`)?.getBoundingClientRect().width??0,p=d&&(Number.parseFloat(window.getComputedStyle(d).columnGap)||Number.parseFloat(window.getComputedStyle(d).gap))||0,m=xv+f+p,h=n.scrollWidth>n.clientWidth+.5,g=u.width>l+.5,_=n.clientWidth+.5<m;return i.length>0?t.style.width=i:t.style.removeProperty(`width`),!h&&!g&&!_},t[0]=u):u=t[0];let d=u,f;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(f=e=>{let t=Cv(e);l(t),L(gv,t,a)},t[1]=f):f=t[1];let p=f,m;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(m=()=>{s.current=null,document.body.style.removeProperty(`cursor`),document.body.style.removeProperty(`user-select`)},t[2]=m):m=t[2];let h=m,g;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(g=e=>{e.button!==0||!o.current||(s.current={pointerId:e.pointerId,startWidth:o.current.getBoundingClientRect().width,startX:e.clientX},e.preventDefault(),e.currentTarget.setPointerCapture(e.pointerId),document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`)},t[3]=g):g=t[3];let _=g,v;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(v=e=>{let t=s.current;if(!t||t.pointerId!==e.pointerId)return;let n=Cv(t.startWidth+(t.startX-e.clientX));d(n)&&(l(n),e.preventDefault())},t[4]=v):v=t[4];let y=v,b;t[5]===c?b=t[6]:(b=e=>{let t=s.current;!t||t.pointerId!==e.pointerId||(p(c),e.currentTarget.hasPointerCapture(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId),h(),e.preventDefault())},t[5]=c,t[6]=b);let x=b,S,C;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(S=()=>()=>{h()},C=[h],t[7]=S,t[8]=C):(S=t[7],C=t[8]),(0,Z.useEffect)(S,C);let w;return t[9]!==n||t[10]!==r||t[11]!==x||t[12]!==i||t[13]!==c?(w=i?(0,Q.jsxs)(`div`,{ref:o,className:U(`relative hidden min-h-0 shrink-0 overflow-hidden border-l border-border bg-card text-foreground md:flex`,`shadow-[-20px_0_40px_-36px_rgba(15,23,42,0.55)]`),style:{width:c},children:[(0,Q.jsx)(za,{ariaLabel:n,onPointerCancel:x,onPointerDown:_,onPointerMove:y,onPointerUp:x}),(0,Q.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-hidden`,children:r})]}):null,t[9]=n,t[10]=r,t[11]=x,t[12]=i,t[13]=c,t[14]=w):w=t[14],w};function Nv(){let e=ft(e=>e.bootstrapComplete),t=y(),n=Ci.useParams({select:e=>te.makeUnsafe(e.threadId)}),r=Ci.useSearch(),i=ft(e=>e.threads.find(e=>e.id===n)??null),a=ft(e=>i?e.projects.find(e=>e.id===i.projectId)??null:null),o=ft(e=>e.threadIndexById),s=ft(e=>e.threads.some(e=>e.id===n)),c=St(e=>e.draftThreadsByThreadId),l=s||Object.hasOwn(c,n),u=Pv(i),d=Ir(),f=r.diff===`1`,p=r.artifact===`1`&&!!r.artifactPath,m=d&&r.browser===`1`,h=wi(r,{browserEnabled:d}),g=h!==null,_=a?i?.worktreePath??a.cwd:null,v=Ae(i?.latestTurn??null,i?.session??null),b=Zr(hv),x=(0,Z.useRef)(null),S=(0,Z.useCallback)(e=>o[e]!==void 0||Object.hasOwn(c,e),[c,o]),C=(0,Z.useMemo)(()=>l?ri({focusedThreadId:n,layout:Ai(r.panes),isThreadAvailable:S}):null,[S,l,r.panes,n]),w=(0,Z.useMemo)(()=>ki(C),[C]),T=Ei(C),E=w.length>1,[D,O]=(0,Z.useState)(null),k=D!==null;lv(w),(0,Z.useEffect)(()=>{if(!k)return;let e=()=>{O(null)};return window.addEventListener(`dragend`,e),window.addEventListener(`drop`,e),()=>{window.removeEventListener(`dragend`,e),window.removeEventListener(`drop`,e)}},[k]),(0,Z.useEffect)(()=>{x.current=null},[n]);let[A,j]=(0,Z.useState)(f),[M,P]=(0,Z.useState)(p),[F,I]=(0,Z.useState)(m),L=(0,Z.useCallback)(()=>{t({to:`/$threadId`,params:{threadId:n},search:e=>ui(e)})},[t,n]);if((0,Z.useEffect)(()=>{f&&j(!0)},[f]),(0,Z.useEffect)(()=>{p&&P(!0)},[p]),(0,Z.useEffect)(()=>{m&&I(!0)},[m]),(0,Z.useEffect)(()=>{if(!e)return;if(l){x.current=null;return}let n=Date.now(),r=x.current??n;if(x.current=r,Sv({bootstrapComplete:e,routeThreadExists:l,missingSinceMs:r,nowMs:n})){t({to:`/`,replace:!0});return}let i=Math.max(0,750-(n-r)),a=window.setTimeout(()=>{t({to:`/`,replace:!0})},i);return()=>{window.clearTimeout(a)}},[e,t,l,n]),(0,Z.useEffect)(()=>{l&&(r.panes??void 0)!==T&&t({to:`/$threadId`,params:{threadId:n},replace:!0,search:e=>({...e,panes:T})})},[T,t,l,r.panes,n]),(0,Z.useEffect)(()=>{if(!e||!l||!u)return;let t=N();t&&t.orchestration.dispatchCommand({type:`thread.session.ensure`,commandId:B(),threadId:n,createdAt:new Date().toISOString()})},[e,l,u,n]),!e||!l)return null;let R=(e,n,r={})=>{t({to:`/$threadId`,params:{threadId:e},replace:r.replace??!1,search:e=>({...e,panes:Ei(n)})})},z=e=>{e!==n&&R(e,C,{replace:!0})},ee=(e,t)=>{O(n=>t===null?n?.threadId===e?null:n:n?.threadId===e&&n.zone===t?n:{threadId:e,zone:t})},ne=(e,t,r)=>{if(C===null||!S(r))return;let i=ti({droppedThreadId:r,focusedThreadId:n,layout:C,targetThreadId:e,zone:t});R(i.focusedThreadId,i.layout,{replace:!0})},V=e=>{if(C===null)return;let r=ci({closingThreadId:e,focusedThreadId:n,layout:C});if(r.focusedThreadId===null){t({to:`/`,replace:!0});return}R(r.focusedThreadId,r.layout)},re=e=>{if(e===`browser`){if(!d)return;t({to:`/$threadId`,params:{threadId:n},search:e=>({...e,browser:`1`,panel:`browser`})});return}if(e===`artifact`){if(!p)return;t({to:`/$threadId`,params:{threadId:n},search:e=>({...e,panel:`artifact`})});return}_&&t({to:`/$threadId`,params:{threadId:n},search:e=>({...e,diff:`1`,panel:`diff`})})},ie=()=>{if(!i)return;let e=N();e&&e.orchestration.dispatchCommand({type:`thread.turn.interrupt`,commandId:B(),threadId:i.id,...i.latestTurn?.turnId?{turnId:i.latestTurn.turnId}:{},createdAt:new Date().toISOString()})},H=[..._?[{id:`diff`,label:`Diff`,icon:(0,Q.jsx)(Nn,{className:`size-3.5`})}]:[],...d?[{id:`browser`,label:`Browser`,icon:(0,Q.jsx)(or,{className:`size-3.5`})}]:[],...p?[{id:`artifact`,label:`Artifact`,icon:(0,Q.jsx)(Yt,{className:`size-3.5`})}]:[]],ae=f||A,oe=p||M,U=m||F,se=e=>h?(0,Q.jsxs)(Av,{activePanel:h,tabs:H,onClosePanel:L,onSelectPanel:re,children:[(0,Q.jsx)(jv,{panel:`diff`,active:h===`diff`,children:ae?(0,Q.jsx)(Dv,{mode:e}):null}),(0,Q.jsx)(jv,{panel:`browser`,active:h===`browser`,children:U&&d?(0,Q.jsx)(fo,{threadId:n,active:h===`browser`,cwd:_,isAgentWorking:v,onStopAgent:ie}):null}),(0,Q.jsx)(jv,{panel:`artifact`,active:h===`artifact`,children:oe?(0,Q.jsx)(Ov,{cwd:_,mode:e,relativePath:r.artifactPath??null}):null})]}):null,ce=C===null?null:(0,Q.jsx)(iv,{layout:C,minPaneSizePx:mv,renderPane:e=>{let t=te.makeUnsafe(e);return(0,Q.jsx)(W_,{threadId:t,focused:t===n,multiPane:E,dropZone:D?.threadId===t?D.zone:null,onDropZoneChange:e=>ee(t,e),onThreadDrop:(e,n)=>ne(t,n,e),onFocus:()=>z(t),onClose:()=>V(t)})}});return b?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Xr,{className:`h-dvh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground`,children:ce}),(0,Q.jsx)(Tv,{open:g,onClosePanel:L,children:se(`sheet`)})]}):(0,Q.jsx)(Xr,{className:`h-dvh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground`,children:(0,Q.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 overflow-hidden`,children:[ce,(0,Q.jsx)(Mv,{open:g,ariaLabel:`Resize ${h?kv(h):`right`} panel`,children:se(`sidebar`)})]})})}function Pv(e){return e===null||e.resumeState===`unrecoverable`||e.resumeState===`resuming`?!1:e.session===null||e.session.orchestrationStatus===`stopped`||e.session.orchestrationStatus===`error`}function Fv(){let e=F(gv,a);return e===null?wv():Cv(e)}export{Nv as component,Pv as shouldPrewarmThreadSession,Sv as shouldRedirectMissingThread};
|
|
289
|
-
//# sourceMappingURL=_chat._threadId-
|
|
287
|
+
`}).catch(()=>void 0);`close`in t.terminal&&typeof t.terminal.close==`function`?(async()=>{n&&await t.terminal.clear({threadId:K,terminalId:e}).catch(()=>void 0),await t.terminal.close({threadId:K,terminalId:e,deleteHistory:!0})})().catch(()=>r()):r(),Cr(K,e),vn(e=>e+1)},[K,Cr,mr.terminalIds.length]),Ms=(0,Z.useCallback)(e=>{e!==Jr&&(F(t,e),Qr&&me(t,{runtimeMode:e}),ws())},[Qr,Jr,ws,F,me,t]),Ns=(0,Z.useCallback)(e=>{if(e!==Xr){if(L(t,e),Qr)me(t,{interactionMode:e});else if(Zr){let n=N();n&&n.orchestration.dispatchCommand({type:`thread.interaction-mode.set`,commandId:B(),threadId:t,interactionMode:e,createdAt:new Date().toISOString()}).catch(e=>{L(t,Xr),di.add({type:`warning`,title:`Could not change interaction mode`,description:e instanceof Error?e.message:`The mode update was rejected.`})})}ws()}},[Xr,Qr,Zr,ws,L,me,t]),Ps=(0,Z.useCallback)(()=>{Ns(Xr===`plan`?`default`:`plan`)},[Ns,Xr]),Fs=(0,Z.useCallback)(async()=>G?Zr?!0:Qr?ia({title:G.title,modelSelection:oa,branch:G.branch,worktreePath:G.worktreePath}):!1:!1,[G,oa,Qr,Zr,ia]),Ls=(0,Z.useCallback)(async e=>{let n=N();if(!n||!await Fs()){let e=Error(M_);throw di.add({type:`warning`,title:`Goal update is unavailable`,description:e.message}),e}await n.orchestration.dispatchCommand({type:`thread.goal.set`,commandId:B(),threadId:t,expectedGoalLifecycleKey:G?.goal?G.goal.lifecycleId??G.goal.createdAt:null,...e.objective===void 0?{}:{objective:e.objective},...e.status===void 0?{}:{status:e.status},...e.tokenBudget===void 0?{}:{tokenBudget:e.tokenBudget},createdAt:new Date().toISOString()})},[G?.goal,Fs,t]),Rs=(0,Z.useCallback)(async()=>{let e=N();if(!e||!await Fs()){let e=Error(M_);throw di.add({type:`warning`,title:`Goal update is unavailable`,description:e.message}),e}await e.orchestration.dispatchCommand({type:`thread.goal.clear`,commandId:B(),threadId:t,expectedGoalLifecycleKey:G?.goal?G.goal.lifecycleId??G.goal.createdAt:null,createdAt:new Date().toISOString()})},[G?.goal,Fs,t]),zs=(0,Z.useCallback)(()=>{if(Xr===`plan`){jn(!1),ws();return}jn(e=>!e),ws()},[Xr,ws]);(0,Z.useEffect)(()=>{jn(!1)},[t]),(0,Z.useEffect)(()=>{Xr===`plan`&&jn(!1)},[Xr]);let Bs=(0,Z.useCallback)(()=>{Ms(Jr===`full-access`?`approval-required`:`full-access`)},[Ms,Jr]),Vs=(0,Z.useCallback)(e=>{c({assistantPersonality:e}),ws()},[ws,c]),Hs=(0,Z.useCallback)(()=>{c({generateMemories:!s.generateMemories}),ws()},[ws,s.generateMemories,c]),Us=(0,Z.useCallback)(()=>{if(!G)return;if(!Bo.supportsFastMode){di.add({type:`warning`,title:`Fast mode is unavailable`,description:`${Yi} does not support Fast mode.`}),ws();return}let e={...Vi?.[q],fastMode:!Vo};P(G.id,q,e,{persistSticky:!0}),bt(!Vo),ws()},[G,Vi,Vo,ws,Bo.supportsFastMode,Yi,q,P]),Ws=(0,Z.useCallback)(e=>{g({to:e})},[g]),Gs=(0,Z.useCallback)(async(e=`local`)=>{if(n){await wr(n.id,{mode:e});return}di.add({type:`warning`,title:`Fork is unavailable for this thread`,description:`Start the thread first, then fork it from the slash menu.`})},[wr,n]),Ks=(0,Z.useCallback)(()=>{en(e=>{if(e){let e=wa?.turnId??Ca?.turnId??null;e&&(hn.current=e)}else hn.current=null;return!e})},[wa?.turnId,Ca?.turnId]),qs=(0,Z.useCallback)(async e=>{if(!n)return;let t=N();t&&(e.modelSelection!==void 0&&(e.modelSelection.model!==n.modelSelection.model||e.modelSelection.provider!==n.modelSelection.provider||JSON.stringify(e.modelSelection.options??null)!==JSON.stringify(n.modelSelection.options??null))&&await t.orchestration.dispatchCommand({type:`thread.meta.update`,commandId:B(),threadId:e.threadId,modelSelection:e.modelSelection}),e.runtimeMode!==n.runtimeMode&&await t.orchestration.dispatchCommand({type:`thread.runtime-mode.set`,commandId:B(),threadId:e.threadId,runtimeMode:e.runtimeMode,createdAt:e.createdAt}),e.interactionMode!==n.interactionMode&&await t.orchestration.dispatchCommand({type:`thread.interaction-mode.set`,commandId:B(),threadId:e.threadId,interactionMode:e.interactionMode,createdAt:e.createdAt}))},[n]);(0,Z.useEffect)(()=>{if(!Zr||!G||G.messages.length>0||G.latestTurn!==null||G.resumeState===`unrecoverable`||G.resumeState===`resuming`)return;let e=G.modelSelection.provider!==oa.provider||G.modelSelection.model!==oa.model||JSON.stringify(G.modelSelection.options??null)!==JSON.stringify(oa.options??null),t=G.runtimeMode!==Jr,n=G.interactionMode!==Xr,r=G.session===null||G.session.orchestrationStatus===`stopped`;if(!e&&!t&&!n&&!r)return;let i=N();i&&(async()=>{await qs({threadId:G.id,createdAt:new Date().toISOString(),modelSelection:oa,runtimeMode:Jr,interactionMode:Xr}).catch(()=>void 0),await i.orchestration.dispatchCommand({type:`thread.session.ensure`,commandId:B(),threadId:G.id,createdAt:new Date().toISOString()}).catch(()=>void 0)})()},[G,oa,Xr,Zr,qs,Jr]);let Js=so.length,Ys=(0,Z.useCallback)((e=`auto`)=>{let t=Mn.current;t&&(t.scrollTo({top:t.scrollHeight,behavior:e}),Ln.current=t.scrollTop,Fn.current=!0)},[]),Xs=(0,Z.useCallback)(()=>{Un.current=0;let e=Hn.current;e!==null&&(Hn.current=null,window.cancelAnimationFrame(e))},[]),Zs=(0,Z.useCallback)(()=>{let e=Gn.current;e!==null&&(Gn.current=null,window.cancelAnimationFrame(e))},[]),Qs=(0,Z.useCallback)(()=>{let e=Me.current;e!==null&&(Me.current=null,window.cancelAnimationFrame(e))},[]),$s=(0,Z.useCallback)(e=>{let t=je.current;t.showScrollToBottom===e.showScrollToBottom&&t.isScrolledFromTop===e.isScrolledFromTop||(je.current=e,Me.current===null&&(Me.current=window.requestAnimationFrame(()=>{Me.current=null;let e=je.current;Ee(e.showScrollToBottom),Oe(e.isScrolledFromTop)})))},[]),ec=(0,Z.useCallback)(()=>{if(Hn.current!==null)return;let e=()=>{if(Hn.current=null,Ys(),Un.current<=0||!Fn.current){Un.current=0;return}--Un.current,Hn.current=window.requestAnimationFrame(e)};Hn.current=window.requestAnimationFrame(e)},[Ys]),tc=(0,Z.useCallback)((e=2)=>{Un.current=Math.max(Un.current,e),ec()},[ec]),nc=(0,Z.useCallback)(e=>{let t=Mn.current;if(!t||!(e.target instanceof Element))return;let n=e.target.closest(`button, summary, [role='button'], [data-scroll-anchor-target]`);!n||!t.contains(n)||n.closest(`[data-scroll-anchor-ignore]`)||(Wn.current={element:n,top:n.getBoundingClientRect().top},Zs(),Gn.current=window.requestAnimationFrame(()=>{Gn.current=null;let e=Wn.current;Wn.current=null;let t=Mn.current;if(!e||!t||!e.element.isConnected||!t.contains(e.element))return;let n=e.element.getBoundingClientRect().top-e.top;Math.abs(n)<.5||(t.scrollTop+=n,Ln.current=t.scrollTop)}))},[Zs]),rc=(0,Z.useCallback)(()=>{Fn.current=!1,Vn.current=!1;let e=Mn.current;$s({showScrollToBottom:e!==null&&e.scrollHeight>e.clientHeight,isScrolledFromTop:e?e.scrollTop>8:!1})},[$s]),ic=(0,Z.useCallback)(()=>{Fn.current=!0,Vn.current=!1,Xs(),tc(3)},[Xs,tc]),ac=(0,Z.useCallback)(()=>{let e=Mn.current;if(!e)return;let t=e.scrollTop,n=zo(e);!Fn.current&&n?(Fn.current=!0,Vn.current=!1):Fn.current&&Vn.current?(t<Ln.current-1&&!n&&(Fn.current=!1),Vn.current=!1):Fn.current&&Rn.current?t<Ln.current-1&&!n&&(Fn.current=!1):Fn.current&&!n&&t<Ln.current-1&&(Fn.current=!1);let r=e.scrollHeight>e.clientHeight;$s({showScrollToBottom:!Fn.current&&r,isScrolledFromTop:t>8}),Ln.current=t},[$s]),oc=(0,Z.useCallback)(e=>{e.deltaY<0&&(Vn.current=!0)},[]),sc=(0,Z.useCallback)(e=>{e.target instanceof Element&&e.target.closest(`button, summary, [role='button'], [data-scroll-anchor-target]`)||(Rn.current=!0)},[]),cc=(0,Z.useCallback)(e=>{Rn.current=!1},[]),lc=(0,Z.useCallback)(e=>{Rn.current=!1},[]),uc=(0,Z.useCallback)(e=>{let t=e.touches[0];t&&(zn.current=t.clientY)},[]),dc=(0,Z.useCallback)(e=>{let t=e.touches[0];if(!t)return;let n=zn.current;n!==null&&t.clientY>n+1&&(Vn.current=!0),zn.current=t.clientY},[]),pc=(0,Z.useCallback)(e=>{zn.current=null},[]);(0,Z.useEffect)(()=>()=>{Xs(),Zs(),Qs()},[Zs,Qs,Xs]),(0,Z.useLayoutEffect)(()=>{if(!G?.id)return;Fn.current=!0,tc();let e=window.setTimeout(()=>{let e=Mn.current;e&&(zo(e)||tc())},96);return()=>{window.clearTimeout(e)}},[G?.id,tc]),(0,Z.useLayoutEffect)(()=>{let e=Jn.current;if(!e)return;let t=()=>e.clientWidth,n=()=>{let e=t(),n=gc(e,{hasWideActions:eo}),r=Xn.current,i=r?window.getComputedStyle(r):null,a={footerContentWidth:bc({footerWidth:r?.clientWidth??null,paddingLeft:i?Number.parseFloat(i.paddingLeft):null,paddingRight:i?Number.parseFloat(i.paddingRight):null}),leadingContentWidth:Zn.current?.scrollWidth??null,actionsWidth:Qn.current?.scrollWidth??null},o=n||yc(a);return{primaryActionsCompact:o&&_c(e,{hasWideActions:eo}),footerCompact:o}};Yn.current=e.getBoundingClientRect().height;let r=n();if(an(r.primaryActionsCompact),nn(r.footerCompact),typeof ResizeObserver>`u`)return;let i=new ResizeObserver(e=>{let[t]=e;if(!t)return;let r=n();an(e=>e===r.primaryActionsCompact?e:r.primaryActionsCompact),nn(e=>e===r.footerCompact?e:r.footerCompact);let i=t.contentRect.height,a=Yn.current;Yn.current=i,!(a>0&&Math.abs(i-a)<.5)&&Fn.current&&ec()});return i.observe(e),()=>{i.disconnect()}},[G?.id,to,eo,ec]),(0,Z.useEffect)(()=>{Fn.current&&ec()},[Js,ec]),(0,Z.useEffect)(()=>{if(Fn.current){if(Ua){if(In.current>0)return;ec();return}tc()}},[Ua,ec,tc,co]),(0,Z.useEffect)(()=>{let e=Nn;if(!e||typeof ResizeObserver>`u`)return;let t=new ResizeObserver(()=>{e.scrollHeight>e.clientHeight||$s({showScrollToBottom:!1,isScrolledFromTop:!1}),Fn.current&&In.current===0&&tc(1)});t.observe(e);let n=e.querySelector(`[data-timeline-root="true"]`);return n&&t.observe(n),()=>t.disconnect()},[Nn,bo,tc,$s]),(0,Z.useEffect)(()=>{Qt({}),Sn(null),gn.current?(gn.current=!1,en(!0)):en(!1),hn.current=null},[G?.id]),(0,Z.useEffect)(()=>{if(!es){bn(null);return}bn(e=>e&&$o.some(t=>t.id===e)?e:$o[0]?.id??null)},[$o,es]),(0,Z.useEffect)(()=>{Pt(!1)},[G?.id]),(0,Z.useEffect)(()=>{if(!e||!G?.id||mr.terminalOpen)return;let t=window.requestAnimationFrame(()=>{Cs()});return()=>{window.cancelAnimationFrame(t)}},[G?.id,Cs,e,mr.terminalOpen]),(0,Z.useEffect)(()=>{$n.current=w},[w]),(0,Z.useEffect)(()=>{pt.current=T},[T]),(0,Z.useEffect)(()=>{if(!G?.id||G.messages.length===0)return;let e=new Set(G.messages.map(e=>e.id)),t=it.filter(t=>e.has(t.id));if(t.length===0)return;let n=window.setTimeout(()=>{st(t=>t.filter(t=>!e.has(t.id)))},0);for(let e of t){let t=Xg(e);if(t.length>0){io(e.id,t);continue}Yg(e)}return()=>{window.clearTimeout(n)}},[G?.id,G?.messages,io,it]),(0,Z.useEffect)(()=>{W.current=C,En(e=>No(C,e))},[C]),(0,Z.useEffect)(()=>{st(e=>{for(let t of e)Yg(t);return[]}),X(),bn(null),En(Po(W.current,W.current.length)),On(Io(W.current,W.current.length)),lr.current=0,Xe(!1),et(null)},[X,t]),(0,Z.useEffect)(()=>{let e=!1;return(async()=>{if(w.length===0){le(t);return}let n=()=>St.getState().draftsByThreadId[t]?.persistedAttachments??[];try{let r=n(),i=new Map(r.map(e=>[e.id,e])),a=new Map;await Promise.all(w.map(async e=>{try{let t=await Zg(e.file);a.set(e.id,{id:e.id,name:e.name,mimeType:e.mimeType,sizeBytes:e.sizeBytes,dataUrl:t})}catch{let t=i.get(e.id);t&&a.set(e.id,t)}}));let o=Array.from(a.values());if(e)return;ue(t,o)}catch{let r=new Set(w.map(e=>e.id)),i=n(),a=i.map(e=>e.id).filter(e=>r.has(e)),o=new Set(a),s=i.filter(e=>o.has(e.id));if(e)return;ue(t,s)}})(),()=>{e=!0}},[le,w,ue,t]);let mc=(0,Z.useCallback)(()=>{et(null)},[]),hc=(0,Z.useCallback)(e=>{et(t=>{if(!t||t.images.length<=1)return t;let n=(t.index+e+t.images.length)%t.images.length;return n===t.index?t:{...t,index:n}})},[]);(0,Z.useEffect)(()=>{if(!Ze)return;let e=e=>{if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),mc();return}if(!(Ze.images.length<=1)){if(e.key===`ArrowLeft`){e.preventDefault(),e.stopPropagation(),hc(-1);return}e.key===`ArrowRight`&&(e.preventDefault(),e.stopPropagation(),hc(1))}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[mc,Ze,hc]);let vc=G?.worktreePath?`worktree`:Qr?Se?.envMode??`local`:`local`;(0,Z.useEffect)(()=>{if(!K)return;let e=dr.current[K]??!1,t=!!mr.terminalOpen;if(!e&&t){dr.current[K]=t,vn(e=>e+1);return}else if(e&&!t){dr.current[K]=t;let e=window.requestAnimationFrame(()=>{Cs()});return()=>{window.cancelAnimationFrame(e)}}dr.current[K]=t},[K,Cs,mr.terminalOpen]),(0,Z.useEffect)(()=>{let t=t=>{if(!e||!K||t.defaultPrevented)return;if(t.shiftKey&&t.key.toLowerCase()===`p`&&(H(navigator.platform)?t.metaKey:t.ctrlKey)){t.preventDefault(),t.stopPropagation(),Ps();return}let n=Yr(t,ko,{context:{terminalFocus:fi(),terminalOpen:!!mr.terminalOpen}});if(n){if(n===`terminal.toggle`){t.preventDefault(),t.stopPropagation(),Os();return}if(n===`terminal.split`){t.preventDefault(),t.stopPropagation(),mr.terminalOpen||Es(!0),ks();return}if(n===`terminal.close`){if(t.preventDefault(),t.stopPropagation(),!mr.terminalOpen)return;js(mr.activeTerminalId);return}if(n===`terminal.new`){t.preventDefault(),t.stopPropagation(),mr.terminalOpen||Es(!0),As();return}if(n===`diff.toggle`){t.preventDefault(),t.stopPropagation(),ps();return}if(n===`browser.toggle`){if(!ei)return;t.preventDefault(),t.stopPropagation(),gs()}}};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e,mr.terminalOpen,mr.activeTerminalId,K,js,As,Es,ks,ko,ei,gs,ps,Ps,Os]);let xc=e=>{if(!K||e.length===0)return;if(ma.length>0){di.add({type:`error`,title:`Attach images after answering plan questions.`});return}if(!Xi){di.add({type:`error`,title:`Image attachments unavailable`,description:k_(Yi)});return}let t=[],n=$n.current.length,r=null;for(let i of e){if(!i.type.startsWith(`image/`)){r=`Unsupported file type for '${i.name}'. Please attach image files only.`;continue}if(i.size>10485760){r=`'${i.name}' exceeds the ${m_} attachment limit.`;continue}if(n>=8){r=`You can attach up to 8 images per message.`;break}let e=URL.createObjectURL(i);t.push({type:`image`,id:V(),name:i.name||`image`,mimeType:i.type,sizeBytes:i.size,previewUrl:e,file:i}),n+=1}t.length===1&&t[0]?Lr(t[0]):t.length>1&&Rr(t),ys(K,r)},Sc=e=>{Br(e)},Cc=e=>{let t=Array.from(e.clipboardData.files);if(t.length===0)return;let n=t.filter(e=>e.type.startsWith(`image/`));n.length!==0&&(e.preventDefault(),xc(n))},wc=e=>{e.dataTransfer.types.includes(`Files`)&&(e.preventDefault(),lr.current+=1,Xe(!0))},Tc=e=>{e.dataTransfer.types.includes(`Files`)&&(e.preventDefault(),e.dataTransfer.dropEffect=`copy`,Xe(!0))},Ec=e=>{if(!e.dataTransfer.types.includes(`Files`))return;e.preventDefault();let t=e.relatedTarget;t instanceof Node&&e.currentTarget.contains(t)||(lr.current=Math.max(0,lr.current-1),lr.current===0&&Xe(!1))},Dc=e=>{e.dataTransfer.types.includes(`Files`)&&(e.preventDefault(),lr.current=0,Xe(!1),xc(Array.from(e.dataTransfer.files)),Cs())},Oc=(0,Z.useCallback)(async e=>{let t=N();if(!(!t||!G||Mt)){if(Ua||Ha||xt){ys(G.id,`Interrupt the current turn before reverting checkpoints.`);return}if(await t.dialogs.confirm([`Revert this thread to checkpoint ${e}?`,`This will discard newer messages and turn diffs in this thread.`,`This action cannot be undone.`].join(`
|
|
288
|
+
`))){Pt(!0),ys(G.id,null);try{await t.orchestration.dispatchCommand({type:`thread.checkpoint.revert`,commandId:B(),threadId:G.id,turnCount:e,createdAt:new Date().toISOString()})}catch(e){ys(G.id,e instanceof Error?e.message:`Failed to revert thread state.`)}Pt(!1)}}},[G,xt,Mt,Ha,Ua,ys]),kc=async(e,t=`steer`)=>{e?.preventDefault();let n=N();if(!n||!G||Ha||xt||sr.current)return;if(_a){_a.isLastQuestion&&va&&ic(),Ic();return}let a=W.current,{trimmedPrompt:o,sendableTerminalContexts:s,expiredTerminalContextCount:c,hasSendableContent:l}=e_({prompt:a,imageCount:w.length,terminalContexts:T});if(Ea&&Sa){let e=Zo({draftText:o,planMarkdown:Sa.planMarkdown});if(W.current=``,de(G.id),bn(null),En(0),On(null),e.interactionMode===`default`&&Pa.provider!==q){await zc(Pa);return}await Rc({text:e.text,interactionMode:e.interactionMode,...e.interactionMode===`default`?{modelSelection:Pa}:{}});return}let u=l,d=w.length===0&&s.length===0?Lo(o):null;if(d)if(d.command===`review`)a=A_,W.current=a,u=!0,de(G.id),bn(null),En(0),On(null);else if(d.command===`compact`)a=j_,W.current=a,u=!0,de(G.id),bn(null),En(0),On(null);else if(d.command===`fast`){Us(),W.current=``,de(G.id),bn(null),En(0),On(null);return}else if(d.command===`goal`){zs(),W.current=``,de(G.id),bn(null),En(0),On(null);return}else if(d.command===`fork`){await Gs(d.value??`local`),W.current=``,de(G.id),bn(null),En(0),On(null);return}else if(d.command===`mcp`){Ws(`/settings/mcp`),W.current=``,de(G.id),bn(null),En(0),On(null);return}else if(d.command===`memories`){Hs(),W.current=``,de(G.id),bn(null),En(0),On(null);return}else if(d.command===`personality`){Vs(d.value),W.current=``,de(G.id),bn(null),En(0),On(null);return}else{Ns(d.command),W.current=``,de(G.id),bn(null),En(0),On(null);return}if(!u){if(c>0){let e=o_(c,`empty`);di.add({type:`warning`,title:e.title,description:e.description})}return}if(w.length>0&&!Xi){ys(G.id,k_(Yi));return}if(!G)return;let f=Si,p=G.id,m=!Zr||G.messages.length===0,h=f&&m&&vc===`worktree`&&!G.worktreePath?G.branch:null;if(m&&vc===`worktree`&&!G.worktreePath&&!G.branch){r(p,`Select a base branch before sending in New worktree mode.`);return}try{await ea(Zi.provider)}catch(e){r(p,e instanceof Error?e.message:`Selected provider is unavailable.`);return}sr.current=!0;let g=t_({goalSendMode:An,objective:o,interactionMode:Xr,standaloneSlashCommand:d,expectedGoalLifecycleKey:G.goal?G.goal.lifecycleId??G.goal.createdAt:null});if(g&&r_(G.goal??null)&&!await n.dialogs.confirm(`Replace goal?\n\nNew objective: ${tt(g.objective,200)}`).catch(e=>(ys(p,e instanceof Error?e.message:`Could not confirm goal replacement.`),!1))){sr.current=!1;return}g&&jn(!1);let _=[...w],v=[...s],y=_t(a,v),b=re(),S=new Date().toISOString(),C=D_({provider:q,model:J,models:Ui,effort:Ki,text:y||h_}),E=ta({trimmedPrompt:o,composerImagesSnapshot:_,composerTerminalContextsSnapshot:v}),D=Promise.all(_.map(async e=>{let t=await Zg(e.file);return{persistedAttachment:{id:e.id,name:e.name,mimeType:e.mimeType,sizeBytes:e.sizeBytes,dataUrl:t},uploadAttachment:{type:`image`,name:e.name,mimeType:e.mimeType,sizeBytes:e.sizeBytes,dataUrl:t}}})),O=_.map(e=>({type:`image`,id:e.id,name:e.name,mimeType:e.mimeType,sizeBytes:e.sizeBytes,previewUrl:e.previewUrl}));if(Ua){let e=G.session?.activeTurnId??ui?.turnId;if(t===`steer`&&Zi.provider===`codex`&&_.length===0&&e!=null){if(c>0){let e=o_(c,`omitted`);di.add({type:`warning`,title:e.title,description:e.description})}(0,vo.flushSync)(()=>{W.current=``,de(p),bn(null),En(0),On(null),ys(p,null)}),ic(),await n.orchestration.dispatchCommand({type:`thread.turn.steer`,commandId:B(),threadId:p,turnId:e,message:{messageId:b,role:`user`,text:C},...g?{goalIntent:g}:{},createdAt:S}).catch(e=>{W.current.length===0&&$n.current.length===0&&pt.current.length===0&&(W.current=a,Pr(a),En(Po(a,a.length)),zr(v),On(Io(a,a.length))),ys(p,e instanceof Error?e.message:`Failed to steer the running turn.`),g&&jn(!0)}),sr.current=!1,X();return}let r=await D;if(c>0){let e=o_(c,`omitted`);di.add({type:`warning`,title:e.title,description:e.description})}if(G.goal?.status===`active`)try{await n.orchestration.dispatchCommand({type:`thread.goal.set`,commandId:B(),threadId:p,expectedGoalLifecycleKey:G.goal.lifecycleId??G.goal.createdAt,status:`paused`,createdAt:new Date().toISOString()})}catch(e){ys(p,e instanceof Error?e.message:`Could not pause the active goal before queuing this message.`),g&&jn(!0),sr.current=!1,X();return}(0,vo.flushSync)(()=>{Dr({id:V(),threadId:p,messageId:String(b),text:C,attachments:r.map(e=>e.uploadAttachment),modelSelection:Zi,runtimeMode:Jr,interactionMode:Xr,goalIntent:g,titleSeed:G.title.trim()||`New Thread`,createdAt:S,composerSnapshot:{prompt:a,persistedAttachments:r.map(e=>e.persistedAttachment),terminalContexts:v}}),W.current=``,de(p),bn(null),En(0),On(null),ys(p,null)}),ic(),di.add({type:`info`,title:`Message queued`,description:G.goal?.status===`active`?`The active goal was paused; this message will send when the current turn stops.`:`It will send automatically when the current turn finishes.`,data:{icon:Bn}}),sr.current=!1,X();return}if((0,vo.flushSync)(()=>{za({preparingWorktree:!!h}),st(e=>[...e,{id:b,role:`user`,text:C,...O.length>0?{attachments:O}:{},createdAt:S,streaming:!1}]),ys(p,null),W.current=``,de(p),bn(null),En(0),On(null)}),ic(),c>0){let e=o_(c,`omitted`);di.add({type:`warning`,title:e.title,description:e.description})}let k=!1,A=!1,j=Zr,M=G.branch,P=G.worktreePath;await(async()=>{if(!j&&Qr&&(j=await ia({title:E,modelSelection:oa,branch:M,worktreePath:P})),h&&f){za({preparingWorktree:!0});let e=Qg(),t=await x.mutateAsync({cwd:f.cwd,branch:h,newBranch:e});M=t.worktree.branch,P=t.worktree.path,j&&(await n.orchestration.dispatchCommand({type:`thread.meta.update`,commandId:B(),threadId:p,branch:t.worktree.branch,worktreePath:t.worktree.path}),i(p,t.worktree.branch,t.worktree.path))}Qr&&!j&&(await n.orchestration.dispatchCommand({type:`thread.create`,commandId:B(),threadId:p,projectId:G.projectId,projectlessCwd:G.projectId===null?G.projectlessCwd??null:null,title:E,modelSelection:oa,runtimeMode:Jr,interactionMode:Xr,parentThreadId:null,branchSourceTurnId:null,branch:M,worktreePath:P,createdAt:G.createdAt}),k=!0,j=!0),m&&j&&await n.orchestration.dispatchCommand({type:`thread.meta.update`,commandId:B(),threadId:p,title:E}),j&&await qs({threadId:p,createdAt:S,...J?{modelSelection:Zi}:{},runtimeMode:Jr,interactionMode:Xr}),za({preparingWorktree:!1});let e=(await D).map(e=>e.uploadAttachment);await ea(Zi.provider),await n.orchestration.dispatchCommand({type:`thread.turn.start`,commandId:B(),threadId:p,message:{messageId:b,role:`user`,text:C,attachments:e},modelSelection:Zi,titleSeed:E,runtimeMode:Jr,interactionMode:Xr,...g?{goalIntent:g}:{},createdAt:S}),A=!0})().catch(async e=>{k&&!A&&await n.orchestration.dispatchCommand({type:`thread.delete`,commandId:B(),threadId:p}).catch(()=>void 0),!A&&W.current.length===0&&$n.current.length===0&&pt.current.length===0&&(st(e=>{let t=e.filter(e=>e.id===b);for(let e of t)Yg(e);let n=e.filter(e=>e.id!==b);return n.length===e.length?e:n}),W.current=a,Pr(a),En(Po(a,a.length)),Rr(_.map($g)),zr(v),On(Io(a,a.length))),ys(p,e instanceof Error?e.message:`Failed to send message.`),!A&&g&&jn(!0)}),sr.current=!1,A||X()},Ac=async()=>{let e=N();!e||!G||await e.orchestration.dispatchCommand({type:`thread.turn.interrupt`,commandId:B(),threadId:G.id,...ui?.turnId?{turnId:ui.turnId}:{},createdAt:new Date().toISOString()})},jc=(0,Z.useCallback)(async(e,t)=>{let n=N();!n||!K||(Rt(t=>t.includes(e)?t:[...t,e]),Ht(t),await n.orchestration.dispatchCommand({type:`thread.approval.respond`,commandId:B(),threadId:K,requestId:e,decision:t,createdAt:new Date().toISOString()}).catch(e=>{r(K,e instanceof Error?e.message:`Failed to submit approval decision.`)}),Rt(t=>t.filter(t=>t!==e)),Ht(null))},[K,r]),Mc=(0,Z.useCallback)(async(e,t)=>{let n=N();!n||!K||(Gt(t=>t.includes(e)?t:[...t,e]),await n.orchestration.dispatchCommand({type:`thread.user-input.respond`,commandId:B(),threadId:K,requestId:e,answers:t,createdAt:new Date().toISOString()}).catch(e=>{r(K,e instanceof Error?e.message:`Failed to submit user input.`)}),Gt(t=>t.filter(t=>t!==e)))},[K,r]),Nc=(0,Z.useCallback)(e=>{Y&&Yt(t=>({...t,[Y.requestId]:e}))},[Y]),Pc=(0,Z.useCallback)((e,t)=>{Y&&(qt(n=>({...n,[Y.requestId]:{...n[Y.requestId],[e]:{selectedOptionLabel:t,customAnswer:``}}})),W.current=``,En(0),On(null))},[Y]),Fc=(0,Z.useCallback)((e,t,n,r,i)=>{Y&&(W.current=t,qt(n=>({...n,[Y.requestId]:{...n[Y.requestId],[e]:Ho(n[Y.requestId]?.[e],t)}})),En(n),On(i?null:Io(t,r)))},[Y]),Ic=(0,Z.useCallback)(()=>{if(!(!Y||!_a)){if(_a.isLastQuestion){va&&Mc(Y.requestId,va);return}Nc(_a.questionIndex+1)}},[_a,va,Y,Mc,Nc]),Lc=(0,Z.useCallback)(()=>{_a&&Nc(Math.max(_a.questionIndex-1,0))},[_a,Nc]),Rc=(0,Z.useCallback)(async({text:e,interactionMode:t,modelSelection:n})=>{let r=N();if(!r||!G||!Zr||Ha||xt||sr.current)return;let i=e.trim();if(!i)return;let a=G.id,o=re(),s=new Date().toISOString(),c=n??Zi,l=n===void 0?D_({provider:q,model:J,models:Ui,effort:Ki,text:i}):$i(n,i,``);try{await ea(c.provider)}catch(e){ys(a,e instanceof Error?e.message:`Selected provider is unavailable.`);return}sr.current=!0,(0,vo.flushSync)(()=>{za({preparingWorktree:!1})}),ys(a,null),st(e=>[...e,{id:o,role:`user`,text:l,createdAt:s,streaming:!1}]),ic();try{await qs({threadId:a,createdAt:s,modelSelection:c,runtimeMode:Jr,interactionMode:t}),L(a,t),await ea(c.provider),await r.orchestration.dispatchCommand({type:`thread.turn.start`,commandId:B(),threadId:a,message:{messageId:o,role:`user`,text:l,attachments:[]},modelSelection:c,titleSeed:G.title,runtimeMode:Jr,interactionMode:t,...t===`default`&&Sa?{sourceProposedPlan:{threadId:G.id,planId:Sa.id}}:{},createdAt:s}),t===`default`&&(hn.current=null,en(!0)),sr.current=!1}catch(e){st(e=>e.filter(e=>e.id!==o)),ys(a,e instanceof Error?e.message:`Failed to send plan follow-up.`),sr.current=!1,X()}},[G,Sa,ic,za,ea,$i,xt,Ha,Zr,qs,X,Jr,Ki,Zi,q,Ui,L,ys,J]),zc=(0,Z.useCallback)(async e=>{let t=N();if(!t||!G||!Sa||!Zr||Ha||xt||sr.current)return;let n=new Date().toISOString(),r=ee(),i=Sa.planMarkdown,a=Xo(i),o=tt(Qo(i)),s=e??Zi,c=e===void 0?D_({provider:q,model:J,models:Ui,effort:Ki,text:a}):$i(e,a,``);try{await ea(s.provider)}catch(e){di.add({type:`error`,title:`Could not start implementation thread`,description:e instanceof Error?e.message:`Selected provider is unavailable.`});return}sr.current=!0,(0,vo.flushSync)(()=>{za({preparingWorktree:!1})});let l=()=>{sr.current=!1,X()};await t.orchestration.dispatchCommand({type:`thread.create`,commandId:B(),threadId:r,projectId:G.projectId,projectlessCwd:G.projectId===null?G.projectlessCwd??null:null,title:o,modelSelection:s,runtimeMode:Jr,interactionMode:`default`,parentThreadId:null,branchSourceTurnId:null,branch:G.branch,worktreePath:G.worktreePath,createdAt:n}).then(()=>ea(s.provider)).then(()=>t.orchestration.dispatchCommand({type:`thread.turn.start`,commandId:B(),threadId:r,message:{messageId:re(),role:`user`,text:c,attachments:[]},modelSelection:s,titleSeed:o,runtimeMode:Jr,interactionMode:`default`,sourceProposedPlan:{threadId:G.id,planId:Sa.id},createdAt:n})).then(()=>d_(r)).then(()=>(gn.current=!0,g({to:`/$threadId`,params:{threadId:r}}))).catch(async e=>{await t.orchestration.dispatchCommand({type:`thread.delete`,commandId:B(),threadId:r}).catch(()=>void 0),di.add({type:`error`,title:`Could not start implementation thread`,description:e instanceof Error?e.message:`An error occurred while creating the new thread.`})}).then(l,l)},[Sa,G,za,ea,$i,xt,Ha,Zr,g,X,Jr,Ki,Zi,q,Ui,J]),Bc=(0,Z.useCallback)((e,t)=>{if(!G)return;if(Fi!==null&&e!==Fi){ws();return}let n=xe(Ii,e),r=Tt(n,s,Ii,t),i={provider:n,model:r};if(j(G.id,i),l(i),$n.current.length>0){let e=ye(Ii,n);We(e,r,n)||di.add({type:`warning`,title:`Attached images won't send with this model`,description:k_(Ne(e,r,n))})}ws()},[G,Fi,Ii,ws,j,l,s]),Vc=(0,Z.useCallback)((e,t)=>{if(!Sa)return;let n=xe(Ii,e),r=Tt(n,s,Ii,t),i=ba[Sa.id],a=Ge(n,r,i?.provider===n?i.options:Zi.provider===n?Zi.options:void 0);xa(e=>({...e,[Sa.id]:a})),ws()},[Sa,ba,Ii,ws,Zi,s]),Hc=(0,Z.useCallback)(e=>{G&&(P(G.id,q,e,{persistSticky:!0}),ws())},[G,ws,q,P]),Uc=(0,Z.useCallback)(e=>{if(!Sa)return;let t=Ge(ka,ja,e);xa(e=>({...e,[Sa.id]:t})),ws()},[Sa,ja,ka,ws]),Wc=(0,Z.useCallback)(e=>{if(e===W.current){ws();return}W.current=e,Pr(e),En(Po(e,e.length)),On(Io(e,e.length)),ws()},[ws,Pr]),Gc=Je({provider:q,threadId:t,model:J,models:Ui,modelOptions:Vi?.[q],prompt:C,onPromptChange:Wc,includeFastMode:!1}),Kc=Ot(q,{threadId:t}),qc=at({provider:q,models:Ui,model:J,prompt:C,onPromptChange:Wc,modelOptions:Vi?.[q],allowPromptInjectedEffort:!0,updateModelOptions:Kc}),Jc=qc.effort&&qc.effortLevels.length>0?{value:qc.ultrathinkPromptControlled?`ultrathink`:qc.effort,label:qc.ultrathinkPromptControlled?`Ultrathink`:qc.effortLevels.find(e=>e.value===qc.effort)?.label??qc.effort,levels:qc.effortLevels,onChange:qc.handleEffortChange,locked:qc.ultrathinkInBodyText||qc.ultrathinkPromptControlled}:null,Yc=Pe({provider:q,threadId:t,model:J,models:Ui,modelOptions:Vi?.[q],prompt:C,onPromptChange:Wc}),Xc=!!(Gc||wa||Ca||$t),Zc=(0,Z.useCallback)(e=>{Qr&&me(t,{envMode:e}),ws()},[Qr,ws,me,t]),Qc=(0,Z.useCallback)((e,t,n,r)=>{let i=W.current,a=Math.max(0,Math.min(i.length,e)),o=Math.max(a,Math.min(i.length,t));if(r?.expectedText!==void 0&&i.slice(a,o)!==r.expectedText)return!1;let s=Ro(W.current,e,t,n),c=Po(s.text,s.cursor);W.current=s.text;let l=_a?.activeQuestion;return l&&Y?qt(e=>({...e,[Y.requestId]:{...e[Y.requestId],[l.id]:Ho(e[Y.requestId]?.[l.id],s.text)}})):Pr(s.text),En(c),On(Io(s.text,Ao(s.text,c))),window.requestAnimationFrame(()=>{Kn.current?.focusAt(c)}),!0},[_a?.activeQuestion,Y,Pr]),$c=(0,Z.useCallback)(()=>Kn.current?.readSnapshot()||{value:W.current,cursor:Tn,expandedCursor:Ao(W.current,Tn),terminalContextIds:T.map(e=>e.id)},[Tn,T]),el=(0,Z.useCallback)(e=>{let t=$c(),n=No(W.current,t.cursor),r=a_({prompt:W.current,cursor:n,selectedText:e});r.length!==0&&Qc(n,n,r)},[Qc,$c]),tl=(0,Z.useCallback)(()=>{let e=$c();return{snapshot:e,trigger:Io(e.value,e.expandedCursor)}},[$c]),nl=(0,Z.useCallback)(e=>{if(er.current)return;er.current=!0,window.requestAnimationFrame(()=>{er.current=!1});let{snapshot:t,trigger:n}=tl();if(n){if(e.type===`agent`){let r=`@${e.mentionName} `,i=P_(t.value,n.rangeEnd,r);Qc(n.rangeStart,i,r,{expectedText:t.value.slice(n.rangeStart,i)})&&bn(null);return}if(e.type===`path`){let r=`@${e.path} `,i=P_(t.value,n.rangeEnd,r);Qc(n.rangeStart,i,r,{expectedText:t.value.slice(n.rangeStart,i)})&&bn(null);return}if(e.type===`slash-command`){if(e.command===`model`){let e=`/model `,r=P_(t.value,n.rangeEnd,e);Qc(n.rangeStart,r,e,{expectedText:t.value.slice(n.rangeStart,r)})&&bn(null);return}if(e.command===`personality`&&!e.value){let e=`/personality `,r=P_(t.value,n.rangeEnd,e);Qc(n.rangeStart,r,e,{expectedText:t.value.slice(n.rangeStart,r)})&&bn(null);return}if(e.command===`fork`&&!e.value){let e=`/fork `,r=P_(t.value,n.rangeEnd,e);Qc(n.rangeStart,r,e,{expectedText:t.value.slice(n.rangeStart,r)})&&bn(null);return}if(e.command===`review`){let e=A_;Qc(n.rangeStart,n.rangeEnd,e,{expectedText:t.value.slice(n.rangeStart,n.rangeEnd)})&&bn(null);return}if(e.command===`compact`){Qc(n.rangeStart,n.rangeEnd,j_,{expectedText:t.value.slice(n.rangeStart,n.rangeEnd)})&&bn(null);return}e.command===`fast`?Us():e.command===`goal`?zs():e.command===`fork`?Gs(e.value===`worktree`?`worktree`:`local`):e.command===`mcp`?Ws(`/settings/mcp`):e.command===`memories`?Hs():e.command===`personality`&&e.value?Vs(e.value):Ns(e.command===`plan`?`plan`:`default`),Qc(n.rangeStart,n.rangeEnd,``,{expectedText:t.value.slice(n.rangeStart,n.rangeEnd)})&&bn(null);return}Bc(e.provider,e.model),Qc(n.rangeStart,n.rangeEnd,``,{expectedText:t.value.slice(n.rangeStart,n.rangeEnd)})&&bn(null)}},[Qc,Vs,Gs,Ns,Ws,Bc,tl,Us,zs,Hs]),rl=(0,Z.useCallback)(e=>{bn(e)},[]),il=(0,Z.useCallback)(e=>{if($o.length===0)return;let t=yn?$o.findIndex(e=>e.id===yn):-1,n=$o[((t>=0?t:0)+(e===`ArrowDown`?1:-1)+$o.length)%$o.length];bn(n?.id??null)},[yn,$o]),al=So===`path`&&(Co.length>0&&Eo.state.isPending||qo.isLoading||qo.isFetching),ol=Wi.composerFrameClassName!==void 0&&Wi.composerFrameClassName.length>0,sl=(0,Z.useCallback)((e,n,r,i,a)=>{if(_a?.activeQuestion&&Y){Fc(_a.activeQuestion.id,e,n,r,i);return}W.current=e,Pr(e),I_(T,a)||ce(t,F_(T,a)),En(n),On(i?null:Io(e,r))},[_a?.activeQuestion,Y,T,Fc,Pr,ce,t]),cl=(0,Z.useCallback)(e=>{cn(e),e&&e!==`insert`&&(On(null),bn(null))},[]),ll=(e,t)=>{if(e===`Tab`&&t.shiftKey)return Ps(),!0;let{trigger:n}=tl();if(tr.current||n!==null){let t=nr.current;if(e===`ArrowDown`&&t.length>0)return il(`ArrowDown`),!0;if(e===`ArrowUp`&&t.length>0)return il(`ArrowUp`),!0;if(e===`Tab`||e===`Enter`){let e=ir.current??t[0];if(e)return nl(e),!0}}return e===`Enter`&&!t.shiftKey?(kc(),!0):!1},ul=(0,Z.useCallback)((e,t)=>{let n=Mn.current;(n?zo(n):Fn.current)?(Fn.current=!0,Vn.current=!1,$s({showScrollToBottom:!1,isScrolledFromTop:n?n.scrollTop>8:!1}),tc(18)):t&&rc(),Qt(n=>({...n,[e]:!t}))},[rc,tc,$s]),dl=(0,Z.useCallback)(e=>{et(e)},[]),fl=Ze?Ze.images[Ze.index]:null,pl=(0,Z.useCallback)((e,n)=>{Ti&&g({to:`/$threadId`,params:{threadId:t},search:t=>{let r=vi(t);return n?{...r,diff:`1`,diffTurnId:e,diffFilePath:n,panel:`diff`}:{...r,diff:`1`,diffTurnId:e,panel:`diff`}}})},[Ti,g,t]),ml=(0,Z.useCallback)(e=>{Ti&&g({to:`/$threadId`,params:{threadId:t},search:t=>({...ai(t),artifact:`1`,artifactPath:e,panel:`artifact`})})},[Ti,g,t]),hl=e=>{let t=go.get(e);typeof t==`number`&&Oc(t)},gl=(0,Z.useCallback)(async e=>{let t=N();if(!(!t||!G||Mt||Ua||Ha||xt||sr.current))try{ic(),await t.orchestration.dispatchCommand({type:`thread.turn.retry`,commandId:B(),threadId:G.id,assistantMessageId:e,createdAt:new Date().toISOString()})}catch(e){ys(G.id,e instanceof Error?e.message:`Failed to retry message.`)}},[G,ic,xt,Mt,Ha,Ua,ys]),_l=(0,Z.useCallback)(async(e,t)=>{let n=N();if(!(!n||!G||Mt||Ua||Ha||xt||sr.current||t.trim().length===0))try{ic(),await n.orchestration.dispatchCommand({type:`thread.message.edit`,commandId:B(),threadId:G.id,userMessageId:e,text:t,createdAt:new Date().toISOString()})}catch(e){ys(G.id,e instanceof Error?e.message:`Failed to edit message.`)}},[G,ic,xt,Mt,Ha,Ua,ys]);return G?(0,Q.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden bg-background`,children:[(0,Q.jsx)(`header`,{className:U(`px-3 sm:px-5`,M?`app-titlebar-window-controls-inset drag-region flex h-[52px] items-center [--app-titlebar-base-left-padding:1.25rem]`:`py-2 sm:py-3`),children:(0,Q.jsx)(uh,{activeThreadTitle:G.title,activeProjectPath:xo??void 0,isGitRepo:is,openInCwd:xo,keybindings:ko,availableEditors:jo,terminalToggleShortcutLabel:ss,browserToggleShortcutLabel:fs,diffToggleShortcutLabel:ds,browserEnabled:ei,browserOpen:ri,diffOpen:ni,isBranchedThread:G.parentThreadId!==null,parentThread:si?{threadId:si.id,title:si.title,archivedAt:si.archivedAt}:null,missingParentThread:G.parentThreadId&&!si?{threadId:G.parentThreadId}:null,childThreads:ci.map(e=>({threadId:e.id,title:e.title,archivedAt:e.archivedAt})),onBranchThread:Zr&&G.archivedAt===null?Ei:null,onNavigateToThread:e=>{g({to:`/$threadId`,params:{threadId:e}})},onToggleBrowser:gs,onToggleDiff:ps})}),(0,Q.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1`,children:[(0,Q.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,children:[!fo&&(0,Q.jsxs)(`div`,{className:`relative flex min-h-0 flex-1 flex-col`,children:[(0,Q.jsx)(`div`,{ref:fr,className:`min-h-0 flex-1 overflow-x-hidden overflow-y-auto overscroll-y-contain px-3 pt-3 pb-8 [-ms-overflow-style:none] [scrollbar-width:none] sm:px-5 sm:pt-4 sm:pb-10 [&::-webkit-scrollbar]:hidden`,style:{maskImage:`linear-gradient(to bottom, ${De?`transparent 0%, black 5rem`:`black 0%`}, ${we?`black calc(100% - 5rem), transparent 100%`:`black 100%`})`},onScroll:ac,onClickCapture:nc,onWheel:oc,onPointerDown:sc,onPointerUp:cc,onPointerCancel:lc,onTouchStart:uc,onTouchMove:dc,onTouchEnd:pc,onTouchCancel:pc,children:(0,Q.jsx)(qp,{hasMessages:co.length>0,isWorking:Ka,showWorkingIndicator:Ka&&!uo,activeTurnInProgress:Ka||!_i,activeTurnStartedAt:Ja,activeTurnId:lo,revealingBufferedAssistantMessageIds:Ve,scrollContainer:Nn,workGroupAutoScrollSuppressRef:In,timelineEntries:co,completionDividerBeforeEntryId:yo,completionSummary:_o,turnDiffSummaryByAssistantMessageId:ho,showTurnDiffActions:Ti,expandedWorkGroups:Xt,onToggleWorkGroup:ul,onOpenTurnDiff:pl,onOpenArtifact:ml,revertTurnCountByUserMessageId:go,onRevertUserMessage:hl,onRetryAssistantMessage:gl,onEditUserMessage:_l,isRevertingCheckpoint:Mt,onImageExpand:dl,markdownCwd:xo??void 0,resolvedTheme:b,timestampFormat:u,workspaceRoot:Si?.cwd??void 0,...Ya?{}:{onAddAssistantSelectionToChat:el}},bo)}),we&&(0,Q.jsx)(`div`,{className:`pointer-events-none absolute bottom-1 left-1/2 z-30 flex -translate-x-1/2 justify-center py-1.5`,children:(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>Ys(`smooth`),className:`pointer-events-auto flex items-center gap-1.5 rounded-full border border-border/60 bg-card px-3 py-1 text-muted-foreground text-xs shadow-sm transition-colors hover:border-border hover:text-foreground hover:cursor-pointer`,children:[(0,Q.jsx)(qn,{className:`size-3.5`}),`Scroll to bottom`]})})]}),(0,Q.jsxs)(`div`,{className:U(`relative w-full min-w-0`,fo?`flex flex-1 flex-col items-center justify-center px-3 sm:px-5`:`shrink-0 px-3 pb-5 sm:px-5 sm:pb-6`),children:[fo&&(0,Q.jsx)(zg,{promptLength:C.trim().length}),fo&&(0,Q.jsx)(`div`,{className:`relative z-10 mx-auto mb-8 w-full min-w-0 max-w-[44rem]`,children:(0,Q.jsx)(Wg,{projectName:Si?.name})}),(0,Q.jsxs)(`form`,{ref:Jn,onSubmit:kc,className:`relative z-10 mx-auto w-full min-w-0 max-w-[44rem]`,"data-chat-composer-form":`true`,children:[Qa&&(0,Q.jsx)(tg,{onActivate:Ps,onDismiss:()=>Za(!0)}),(0,Q.jsx)(Og,{taskList:Ta,taskListOpen:ln,backgroundSubagents:Yo,backgroundSubagentsOpen:dn,queuedTurns:Tr,queuedOpen:pn,onTaskListOpenChange:un,onBackgroundSubagentsOpenChange:fn,onQueuedOpenChange:mn,onDeleteQueuedTurn:xs,onEditQueuedTurn:e=>void Ss(e)}),(0,Q.jsx)(Lg,{providerStatus:rs,resumeState:G.resumeState,threadError:G.error,onDismissError:()=>ys(G.id,null),onResumeAction:()=>Cs()}),(0,Q.jsxs)(`div`,{className:`relative`,children:[es&&!Ya&&(0,Q.jsx)(`div`,{className:`absolute inset-x-0 bottom-full z-20 mb-2 px-4`,children:(0,Q.jsx)(mh,{items:$o,resolvedTheme:b,isLoading:al,triggerKind:So,activeItemId:ts?.id??null,onHighlightedItemChange:rl,onSelect:nl})}),(0,Q.jsx)(`div`,{"data-chat-composer-frame":`true`,className:U(`chat-composer-depth group relative z-10 min-w-0 overflow-hidden transition-[margin-top,color,box-shadow,border-color,background-color] duration-[220ms] ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none`,ol?[`rounded-[22px] p-px`,Wi.composerFrameClassName]:`rounded-[20px] border border-[color-mix(in_srgb,var(--color-neutral-500)_16%,transparent)] bg-card dark:border-[color-mix(in_srgb,var(--color-neutral-400)_14%,transparent)]`),onDragEnter:wc,onDragOver:Tc,onDragLeave:Ec,onDrop:Dc,children:(0,Q.jsxs)(`div`,{"data-chat-composer-surface":`true`,className:U(`min-w-0`,!ol&&`rounded-[19px] bg-card`,ol&&[`rounded-[20px] border border-[color-mix(in_srgb,var(--color-neutral-500)_16%,transparent)] bg-card shadow-sm transition-colors duration-200 dark:border-[color-mix(in_srgb,var(--color-neutral-400)_14%,transparent)]`,Ue&&`bg-accent/30`,Wi.composerSurfaceClassName]),children:[Ia?(0,Q.jsx)(`div`,{className:`rounded-t-[19px] border-b border-border/65 bg-muted/20`,children:(0,Q.jsx)(ag,{approval:Ia,pendingCount:pa.length})}):ma.length>0?(0,Q.jsx)(`div`,{className:`rounded-t-[19px] border-b border-border/65 bg-muted/20`,children:(0,Q.jsx)(sg,{pendingUserInputs:ma,respondingRequestIds:Lt,answers:ha,questionIndex:ga,onSelectOption:Pc,onAdvance:Ic})}):Ea&&Sa?(0,Q.jsx)(`div`,{className:`rounded-t-[19px] border-b border-border/65 bg-muted/20`,children:(0,Q.jsx)(lg,{planTitle:Ko(Sa.planMarkdown)??null},Sa.id)}):null,(0,Q.jsxs)(`div`,{className:U(`relative px-3 pb-2 sm:px-4`,$a?`pt-2.5 sm:pt-3`:`pt-3.5 sm:pt-4`),children:[!Ya&&ma.length===0&&w.length>0&&(0,Q.jsx)(`div`,{className:`mb-3 flex flex-wrap gap-2`,children:w.map(e=>(0,Q.jsxs)(`div`,{className:`relative h-16 w-16 overflow-hidden rounded-lg border border-border/80 bg-background`,children:[e.previewUrl?(0,Q.jsx)(`button`,{type:`button`,className:`h-full w-full cursor-zoom-in`,"aria-label":`Preview ${e.name}`,onClick:()=>{let t=tu(w,e.id);t&&et(t)},children:(0,Q.jsx)(`img`,{src:e.previewUrl,alt:e.name,className:`h-full w-full object-cover`})}):(0,Q.jsx)(`div`,{className:`flex h-full w-full items-center justify-center px-1 text-center text-[10px] text-muted-foreground/70`,children:e.name}),ns.has(e.id)&&(0,Q.jsxs)(Hr,{children:[(0,Q.jsx)(yi,{render:(0,Q.jsx)(`span`,{role:`img`,"aria-label":`Draft attachment may not persist`,className:`absolute left-1 top-1 inline-flex items-center justify-center rounded bg-background/85 p-0.5 text-amber-600`,children:(0,Q.jsx)(kn,{className:`size-3`})})}),(0,Q.jsx)(Wr,{side:`top`,className:`max-w-64 whitespace-normal leading-tight`,children:`Draft attachment could not be saved locally and may be lost on navigation.`})]}),(0,Q.jsx)(I,{variant:`ghost`,size:`icon-xs`,className:`absolute right-1 top-1 bg-background/80 hover:bg-background/90`,onClick:()=>Sc(e.id),"aria-label":`Remove ${e.name}`,children:(0,Q.jsx)(sn,{})})]},e.id))}),s.composerVimMode&&on&&on!==`insert`?(0,Q.jsx)(x_,{mode:on}):null,(0,Q.jsx)(Yl,{ref:Kn,value:Ya?``:_a?_a.customAnswer:C,cursor:Tn,terminalContexts:!Ya&&ma.length===0?T:[],onRemoveTerminalContext:Ur,onChange:sl,onCommandKeyDown:ll,onPaste:Cc,vimModeEnabled:s.composerVimMode,vimCommandMenuActive:es,onVimModeChange:cl,placeholder:Ya?Ia?.detail??`Resolve this approval request to continue`:_a?`Type your own answer, or leave this blank to use the selected option`:Ea&&Sa?`Add feedback to refine the plan, or leave this blank to implement it`:Pi&&sa===`disconnected`?`Ask for follow-up changes or attach images`:`Ask anything, @tag files/folders, or use / to show available commands`,disabled:xt||Ya})]}),Ia?(0,Q.jsx)(`div`,{className:`flex items-center justify-end gap-2 px-2.5 pb-2.5 sm:px-3 sm:pb-3`,children:(0,Q.jsx)(Th,{approval:Ia,isResponding:Lt.includes(Ia.requestId),respondingDecision:zt,onRespondToApproval:jc})}):(0,Q.jsxs)(`div`,{ref:Xn,"data-chat-composer-footer":`true`,"data-chat-composer-footer-compact":tn?`true`:`false`,className:U(`flex min-w-0 flex-nowrap items-center gap-2 overflow-hidden px-2.5 pb-2.5 sm:px-3 sm:pb-3`,`justify-between`,tn?`gap-1.5`:`gap-2 sm:gap-0`),children:[(0,Q.jsxs)(`div`,{ref:Zn,className:`flex min-w-0 shrink-0 items-center gap-1`,children:[(0,Q.jsx)(Ah,{threadId:t,provider:q,models:Ui,model:J,modelOptions:Vi?.[q],planModeActive:Xr===`plan`,onTogglePlanMode:Ps,goalModeActive:An,onToggleGoalMode:zs,onAddFiles:xc}),G?.goal?(0,Q.jsx)(Qh,{goal:G.goal,disabled:!G,onUpdateGoal:Ls,onClearGoal:Rs}):null,tn&&Xc?(0,Q.jsx)(Oh,{activePlan:!!(wa||Ca||$t),planSidebarOpen:$t,runtimeMode:Jr,traitsMenuContent:Gc,onTogglePlanSidebar:Ks,onRuntimeModeChange:Ms}):(0,Q.jsx)(kh,{compact:tn,runtimeMode:Jr,onToggle:Bs}),An?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{"aria-hidden":`true`,className:`h-4 w-px shrink-0 bg-border`}),(0,Q.jsx)($h,{onDismiss:()=>jn(!1)})]}):null,Xr===`plan`?(0,Q.jsx)(ng,{onDisable:Ps}):null]}),(0,Q.jsxs)(`div`,{ref:Qn,"data-chat-composer-actions":`right`,"data-chat-composer-primary-actions-compact":rn?`true`:`false`,className:`flex min-w-0 flex-1 flex-nowrap items-center justify-end gap-1 overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden`,children:[Da?(0,Q.jsx)(Qi,{compact:tn,provider:ka,model:Fa,lockedProvider:null,providers:Ii,modelOptionsByProvider:Li,modelOptions:Pa.options,onModelOptionsChange:Uc,...Na.modelPickerIconClassName?{activeProviderIconClassName:Na.modelPickerIconClassName}:{},onProviderModelChange:Vc}):(0,Q.jsx)(Qi,{compact:tn,provider:q,model:Mo,lockedProvider:Fi,providers:Ii,modelOptionsByProvider:Li,modelOptions:Vi?.[q],onModelOptionsChange:Hc,effort:Jc,...Wi.modelPickerIconClassName?{activeProviderIconClassName:Wi.modelPickerIconClassName}:{},onProviderModelChange:Bc}),!Da&&!tn&&Yc?Yc:null,!tn&&(wa||Ca||$t)?(0,Q.jsxs)(I,{variant:`ghost`,className:U(`shrink-0 whitespace-nowrap px-2 sm:px-2.5`,$t?`text-blue-400 hover:text-blue-300`:`text-muted-foreground/70 hover:text-foreground/80`),size:`sm`,type:`button`,onClick:Ks,title:$t?`Hide plan sidebar`:`Show plan sidebar`,children:[(0,Q.jsx)(Zt,{}),(0,Q.jsx)(`span`,{className:`sr-only sm:not-sr-only`,children:`Plan`})]}):null,gi?(0,Q.jsx)(ph,{usage:gi}):null,Va?(0,Q.jsx)(`span`,{className:`ms-1 text-muted-foreground/70 text-xs`,children:`Preparing worktree...`}):null,(0,Q.jsx)(`div`,{className:gi?`ml-1`:void 0,children:(0,Q.jsx)(ig,{compact:rn,pendingAction:_a?{questionIndex:_a.questionIndex,isLastQuestion:_a.isLastQuestion,canAdvance:_a.canAdvance,isResponding:ya,isComplete:!!va}:null,isRunning:Ua,awaitingSendAck:uo,queuedTurnCount:Tr.length,showPlanFollowUpPrompt:ma.length===0&&Ea,promptHasText:C.trim().length>0,isSendBusy:Ha,isConnecting:xt,isPreparingWorktree:Va,hasSendableContent:E.hasSendableContent,canSteerRunningTurn:Ga,onQueueRunningTurn:()=>void kc(void 0,`queue`),onPreviousPendingQuestion:Lc,onInterrupt:()=>void Ac(),onImplementPlanInNewThread:()=>void zc(Pa)})})]})]})]})})]})]}),fo&&Ci?(0,Q.jsx)(L_,{emptyThread:!0}):null,fo&&!Ci&&(0,Q.jsx)(`div`,{className:`relative z-0 mx-auto -mt-5 flex w-full min-w-0 max-w-[44rem] flex-wrap items-center gap-x-1 gap-y-1 rounded-b-[20px] border border-t-0 border-border bg-[color-mix(in_srgb,var(--card)_94%,var(--muted-foreground)_6%)] px-3 pt-6 pb-1.5`,children:(0,Q.jsx)(Ds,{threadId:G.id,onEnvModeChange:Zc,envLocked:_s,isGitRepo:is,onComposerFocusRequest:ws,...$r?{onCheckoutPullRequestRequest:Di}:{}})})]}),!fo&&Ci?(0,Q.jsx)(L_,{emptyThread:!1}):null,xn?(0,Q.jsx)(Zl,{open:!0,cwd:Si?.cwd??null,initialReference:xn.initialReference,onOpenChange:e=>{e||Oi()},onPrepared:Ai},xn.key):null]}),$t?(0,Q.jsx)(Is,{activePlan:wa,activeProposedPlan:Ca,markdownCwd:xo??void 0,workspaceRoot:Si?.cwd??void 0,timestampFormat:u,onClose:()=>{en(!1);let e=wa?.turnId??Ca?.turnId??null;e&&(hn.current=e)}}):null]}),Mr.map(e=>(0,Q.jsx)(H_,{threadId:e,visible:e===K&&mr.terminalOpen,focusRequestId:e===K?_n:0,splitShortcutLabel:cs??void 0,newShortcutLabel:ls??void 0,closeShortcutLabel:us??void 0,onAddTerminalContext:Ts},e)),Ze&&fl&&(0,Q.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/75 px-4 py-6 [-webkit-app-region:no-drag]`,role:`dialog`,"aria-modal":`true`,"aria-label":`Expanded image preview`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`absolute inset-0 z-0 cursor-zoom-out`,"aria-label":`Close image preview`,onClick:mc}),Ze.images.length>1&&(0,Q.jsx)(I,{type:`button`,size:`icon`,variant:`ghost`,className:`absolute left-2 top-1/2 z-20 -translate-y-1/2 text-white/90 hover:bg-white/10 hover:text-white sm:left-6`,"aria-label":`Previous image`,onClick:()=>{hc(-1)},children:(0,Q.jsx)(ur,{className:`size-5`})}),(0,Q.jsxs)(`div`,{className:`relative isolate z-10 max-h-[92vh] max-w-[92vw]`,children:[(0,Q.jsx)(I,{type:`button`,size:`icon-xs`,variant:`ghost`,className:`absolute right-2 top-2`,onClick:mc,"aria-label":`Close image preview`,children:(0,Q.jsx)(sn,{})}),(0,Q.jsx)(`img`,{src:fl.src,alt:fl.name,className:`max-h-[86vh] max-w-[92vw] select-none rounded-lg border border-border/70 bg-background object-contain shadow-2xl`,draggable:!1}),(0,Q.jsxs)(`p`,{className:`mt-2 max-w-[92vw] truncate text-center text-xs text-muted-foreground/80`,children:[fl.name,Ze.images.length>1?` (${Ze.index+1}/${Ze.images.length})`:``]})]}),Ze.images.length>1&&(0,Q.jsx)(I,{type:`button`,size:`icon`,variant:`ghost`,className:`absolute right-2 top-1/2 z-20 -translate-y-1/2 text-white/90 hover:bg-white/10 hover:text-white sm:right-6`,"aria-label":`Next image`,onClick:()=>{hc(1)},children:(0,Q.jsx)(rr,{className:`size-5`})})]})]}):(0,Q.jsx)(ra,{})}function W_(e){let t=(0,X.c)(31),n=(0,Z.useRef)(0),r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=e=>{gi(e.dataTransfer)&&(e.preventDefault(),n.current+=1)},t[0]=r):r=t[0];let i=r,a;t[1]===e?a=t[2]:(a=t=>{gi(t.dataTransfer)&&(t.preventDefault(),t.dataTransfer.dropEffect=`copy`,e.onDropZoneChange(K(t.currentTarget.getBoundingClientRect(),t.clientX,t.clientY)))},t[1]=e,t[2]=a);let o=a,s;t[3]===e?s=t[4]:(s=t=>{gi(t.dataTransfer)&&(n.current=Math.max(0,n.current-1),n.current===0&&e.onDropZoneChange(null))},t[3]=e,t[4]=s);let c=s,l;t[5]===e?l=t[6]:(l=t=>{n.current=0;let r=Si(t.dataTransfer);if(!r){e.onDropZoneChange(null);return}t.preventDefault();let i=K(t.currentTarget.getBoundingClientRect(),t.clientX,t.clientY);e.onDropZoneChange(null),e.onThreadDrop(r,i)},t[5]=e,t[6]=l);let u=l,d=e.focused?`Focused thread pane`:`Thread pane`,f=e.focused?`true`:`false`,p=e.multiPane&&!e.focused&&`bg-muted/10`,m;t[7]===p?m=t[8]:(m=U(`relative flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-background`,p),t[7]=p,t[8]=m);let h,g;t[9]===e?(h=t[10],g=t[11]):(h=()=>{e.focused||e.onFocus()},g=t=>{if(e.focused)return;let n=t.target;n instanceof Element&&(n.closest(`[data-thread-pane-close='true']`)||e.onFocus())},t[9]=e,t[10]=h,t[11]=g);let _;t[12]===e?_=t[13]:(_=e.multiPane?(0,Q.jsxs)(`div`,{className:U(`flex h-8 shrink-0 items-center justify-end border-b px-2`,e.focused?`border-foreground/20 bg-background`:`border-border/70 bg-muted/10`),children:[(0,Q.jsx)(`div`,{className:U(`pointer-events-none absolute inset-x-0 top-0 z-30 h-px transition-colors`,e.focused?`bg-foreground/60`:`bg-border/80`)}),(0,Q.jsx)(`button`,{type:`button`,"data-thread-pane-close":`true`,"aria-label":`Close thread pane`,className:`inline-flex size-6 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-sidebar-hover hover:text-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring`,onClick:t=>{t.preventDefault(),t.stopPropagation(),e.onClose()},children:(0,Q.jsx)(sn,{className:`size-3.5`})})]}):null,t[12]=e,t[13]=_);let v;t[14]!==e.focused||t[15]!==e.threadId?(v=(0,Q.jsx)(U_,{threadId:e.threadId,isFocusedPane:e.focused},e.threadId),t[14]=e.focused,t[15]=e.threadId,t[16]=v):v=t[16];let y;t[17]===e.dropZone?y=t[18]:(y=e.dropZone?(0,Q.jsx)(G_,{zone:e.dropZone}):null,t[17]=e.dropZone,t[18]=y);let b;return t[19]!==c||t[20]!==o||t[21]!==u||t[22]!==_||t[23]!==v||t[24]!==y||t[25]!==d||t[26]!==f||t[27]!==m||t[28]!==h||t[29]!==g?(b=(0,Q.jsxs)(`section`,{"aria-label":d,"data-focused":f,className:m,onFocusCapture:h,onPointerDownCapture:g,onDragEnter:i,onDragOver:o,onDragLeave:c,onDrop:u,children:[_,v,y]}),t[19]=c,t[20]=o,t[21]=u,t[22]=_,t[23]=v,t[24]=y,t[25]=d,t[26]=f,t[27]=m,t[28]=h,t[29]=g,t[30]=b):b=t[30],b}function G_(e){let t=(0,X.c)(8),n=e.zone===`center`&&`inset-1.5`,r=e.zone===`left`&&`inset-y-1.5 left-1.5 right-1/2`,i=e.zone===`right`&&`inset-y-1.5 left-1/2 right-1.5`,a=e.zone===`top`&&`inset-x-1.5 top-1.5 bottom-1/2`,o=e.zone===`bottom`&&`inset-x-1.5 top-1/2 bottom-1.5`,s;t[0]!==n||t[1]!==r||t[2]!==i||t[3]!==a||t[4]!==o?(s=U(`absolute rounded-md border border-dashed border-foreground/40 bg-foreground/10 transition-[inset]`,n,r,i,a,o),t[0]=n,t[1]=r,t[2]=i,t[3]=a,t[4]=o,t[5]=s):s=t[5];let c;return t[6]===s?c=t[7]:(c=(0,Q.jsx)(`div`,{className:`pointer-events-none absolute inset-0 z-40`,children:(0,Q.jsx)(`div`,{className:s})}),t[6]=s,t[7]=c),c}var K_=`pane_layout_split_sizes`,q_=64,J_=o(t,s(a));function Y_(e){return`${e.direction}:${e.children.map(G).join(`|`)}`}function X_(e){return e>0?Array.from({length:e},()=>1/e):[]}function Z_(e,t){if(t<=0)return[];if(!e||e.length!==t||e.some(e=>!Number.isFinite(e)||e<=0))return X_(t);let n=e.reduce((e,t)=>e+t,0);return n>0?e.map(e=>e/n):X_(t)}function Q_(e,t,n,r){let i=e[t],a=e[t+1];if(i===void 0||a===void 0)return[...e];let o=-(i-r),s=a-r;if(o>s)return[...e];let c=Math.max(o,Math.min(n,s)),l=[...e];return l[t]=i+c,l[t+1]=a-c,l}function $_(e,t){return Z_(tv()[e],t)}function ev(e,t){let{[e]:n,...r}=tv(),i=Object.entries(r),a=i.slice(Math.max(0,i.length+1-q_));try{L(K_,{...Object.fromEntries(a),[e]:[...t]},J_)}catch{}}function tv(){try{return F(K_,J_)??{}}catch{return{}}}var nv=240,rv=.02;function iv(e){let t=(0,X.c)(4),n=e.minPaneSizePx??nv,r;return t[0]!==e.layout||t[1]!==e.renderPane||t[2]!==n?(r=(0,Q.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-1 overflow-hidden`,children:(0,Q.jsx)(av,{node:e.layout,renderPane:e.renderPane,minPaneSizePx:n})}),t[0]=e.layout,t[1]=e.renderPane,t[2]=n,t[3]=r):r=t[3],r}function av(e){let t=(0,X.c)(9);if(e.node.type===`pane`){let n;t[0]!==e.node.key||t[1]!==e.renderPane?(n=e.renderPane(e.node.key),t[0]=e.node.key,t[1]=e.renderPane,t[2]=n):n=t[2];let r;return t[3]===n?r=t[4]:(r=(0,Q.jsx)(Q.Fragment,{children:n}),t[3]=n,t[4]=r),r}let n;return t[5]!==e.minPaneSizePx||t[6]!==e.node||t[7]!==e.renderPane?(n=(0,Q.jsx)(ov,{node:e.node,renderPane:e.renderPane,minPaneSizePx:e.minPaneSizePx}),t[5]=e.minPaneSizePx,t[6]=e.node,t[7]=e.renderPane,t[8]=n):n=t[8],n}function ov(e){let{minPaneSizePx:t,node:n,renderPane:r}=e,i=n.direction===`row`,a=n.children.length,o=Y_(n),s=(0,Z.useRef)(null),c=(0,Z.useRef)(null),[l,u]=(0,Z.useState)(()=>$_(o,a)),d=(0,Z.useRef)(l);d.current=l;let f=(0,Z.useRef)(o);if(f.current!==o){f.current=o;let e=$_(o,a);d.current=e,u(e)}let p=(0,Z.useCallback)(e=>e>0?Math.min(t/e,1/a):1/a,[a,t]),m=(0,Z.useCallback)(()=>{c.current=null,document.body.style.removeProperty(`cursor`),document.body.style.removeProperty(`user-select`)},[]);(0,Z.useEffect)(()=>()=>m(),[m]);let h=e=>t=>{if(t.button!==0||!s.current)return;let n=s.current.getBoundingClientRect();c.current={containerSizePx:i?n.width:n.height,dividerIndex:e,pointerId:t.pointerId,startCoord:i?t.clientX:t.clientY,startSizes:d.current},t.preventDefault(),t.currentTarget.setPointerCapture(t.pointerId),document.body.style.cursor=i?`col-resize`:`row-resize`,document.body.style.userSelect=`none`},g=e=>{let t=c.current;if(!t||t.pointerId!==e.pointerId)return;let n=i?e.clientX:e.clientY,r=t.containerSizePx>0?(n-t.startCoord)/t.containerSizePx:0;u(Q_(t.startSizes,t.dividerIndex,r,p(t.containerSizePx))),e.preventDefault()},_=e=>{let t=c.current;!t||t.pointerId!==e.pointerId||(ev(o,d.current),e.currentTarget.hasPointerCapture(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId),m(),e.preventDefault())},v=e=>{d.current=e,u(e),ev(o,e)},y=e=>t=>{let n=i?`ArrowLeft`:`ArrowUp`,r=i?`ArrowRight`:`ArrowDown`,a=t.key===n?-rv:t.key===r?rv:null;if(a===null)return;t.preventDefault();let o=s.current?.getBoundingClientRect(),c=o?i?o.width:o.height:0;v(Q_(d.current,e,a,p(c)))},b=()=>{v(X_(a))};return(0,Q.jsx)(`div`,{ref:s,className:U(`flex min-h-0 min-w-0 flex-1 overflow-hidden`,i?`flex-row`:`flex-col`),children:n.children.map((e,i)=>(0,Q.jsxs)(Z.Fragment,{children:[i>0?(0,Q.jsx)(sv,{direction:n.direction,onDoubleClick:b,onKeyDown:y(i-1),onPointerCancel:_,onPointerDown:h(i-1),onPointerMove:g,onPointerUp:_}):null,(0,Q.jsx)(`div`,{className:`flex min-h-0 min-w-0 overflow-hidden`,style:{flexGrow:l[i]??1,flexShrink:1,flexBasis:0},children:(0,Q.jsx)(av,{node:e,renderPane:r,minPaneSizePx:t})})]},G(e)||`pane-${i}`))})}function sv(e){let t=(0,X.c)(16),n=e.direction===`row`,r=n?`Resize panes (drag left or right)`:`Resize panes (drag up or down)`,i=n?`-mx-[3px] w-[7px] cursor-col-resize`:`-my-[3px] h-[7px] cursor-row-resize`,a;t[0]===i?a=t[1]:(a=U(`group relative z-10 flex shrink-0 touch-none items-center justify-center focus-visible:outline-hidden`,i),t[0]=i,t[1]=a);let o=e.onDoubleClick,s=e.onKeyDown,c=e.onPointerCancel,l=e.onPointerDown,u=e.onPointerMove,d=e.onPointerUp,f=n?`h-full w-px`:`h-px w-full`,p;t[2]===f?p=t[3]:(p=U(`bg-border/70 transition-colors group-hover:bg-foreground/25 group-focus-visible:bg-foreground/25 group-active:bg-foreground/30`,f),t[2]=f,t[3]=p);let m;t[4]===p?m=t[5]:(m=(0,Q.jsx)(`span`,{className:p}),t[4]=p,t[5]=m);let h;return t[6]!==e.onDoubleClick||t[7]!==e.onKeyDown||t[8]!==e.onPointerCancel||t[9]!==e.onPointerDown||t[10]!==e.onPointerMove||t[11]!==e.onPointerUp||t[12]!==r||t[13]!==m||t[14]!==a?(h=(0,Q.jsx)(`button`,{type:`button`,"aria-label":r,title:`Drag to resize, double-click to reset`,className:a,onDoubleClick:o,onKeyDown:s,onPointerCancel:c,onPointerDown:l,onPointerMove:u,onPointerUp:d,children:m}),t[6]=e.onDoubleClick,t[7]=e.onKeyDown,t[8]=e.onPointerCancel,t[9]=e.onPointerDown,t[10]=e.onPointerMove,t[11]=e.onPointerUp,t[12]=r,t[13]=m,t[14]=a,t[15]=h):h=t[15],h}var cv=5e3;function lv(e){let t=(0,X.c)(5),n;t[0]===e?n=t[1]:(n=e.join(`\0`),t[0]=e,t[1]=n);let r=n,i,a;t[2]===r?(i=t[3],a=t[4]):(i=()=>{let e=r.split(`\0`).filter(dv).map(uv);if(e.length===0)return;let t=null,n=()=>{t!==null&&(window.clearInterval(t),t=null)},i=()=>{for(let t of e)j(t)},a=()=>{for(let t of e)P(t)},o=()=>{n(),!(typeof document<`u`&&document.hidden)&&(i(),t=window.setInterval(()=>{typeof document<`u`&&document.hidden||i()},cv))},s=()=>{if(document.hidden){n(),a();return}o()},c=()=>{n(),a()};return o(),document.addEventListener(`visibilitychange`,s),window.addEventListener(`pagehide`,c),()=>{n(),document.removeEventListener(`visibilitychange`,s),window.removeEventListener(`pagehide`,c),a()}},a=[r],t[2]=r,t[3]=i,t[4]=a),(0,Z.useEffect)(i,a)}function uv(e){return te.makeUnsafe(e)}function dv(e){return e.length>0}var fv=(0,Z.lazy)(()=>wr(()=>import(`./DiffPanel-BYSH-G7M.js`),__vite__mapDeps([17,2,18,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50]))),pv=(0,Z.lazy)(()=>wr(()=>import(`./ArtifactPanel-ClA97FO8.js`),__vite__mapDeps([51,2,18,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,52,46,48,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76]))),mv=320,hv=`(max-width: 1180px)`,gv=`chat_diff_sidebar_width`,_v=416,vv=448,yv=704,bv=.48,xv=208;function Sv(e){return!e.bootstrapComplete||e.routeThreadExists||e.missingSinceMs===null?!1:e.nowMs-e.missingSinceMs>=750}function Cv(e){return Math.max(_v,Math.min(e,yv))}function wv(){return typeof window>`u`?vv:Cv(window.innerWidth*bv)}var Tv=e=>{let t=(0,X.c)(8),n;t[0]===e?n=t[1]:(n=t=>{t||e.onClosePanel()},t[0]=e,t[1]=n);let r;t[2]===e.children?r=t[3]:(r=(0,Q.jsx)(Qr,{side:`right`,showCloseButton:!1,keepMounted:!0,className:`w-[min(92vw,920px)] max-w-[920px] p-0`,children:e.children}),t[2]=e.children,t[3]=r);let i;return t[4]!==e.open||t[5]!==n||t[6]!==r?(i=(0,Q.jsx)($r,{open:e.open,onOpenChange:n,children:r}),t[4]=e.open,t[5]=n,t[6]=r,t[7]=i):i=t[7],i},Ev=e=>{let t=(0,X.c)(6),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,Q.jsx)(Ii,{}),t[0]=n):n=t[0];let r;t[1]===e.label?r=t[2]:(r=(0,Q.jsx)(ji,{label:e.label}),t[1]=e.label,t[2]=r);let i;return t[3]!==e.mode||t[4]!==r?(i=(0,Q.jsx)(Fi,{mode:e.mode,header:n,children:r}),t[3]=e.mode,t[4]=r,t[5]=i):i=t[5],i},Dv=e=>{let t=(0,X.c)(8),n;t[0]===e.mode?n=t[1]:(n=(0,Q.jsx)(Ev,{label:`Loading the diff`,mode:e.mode}),t[0]=e.mode,t[1]=n);let r;t[2]!==e.mode||t[3]!==e.onClose?(r=(0,Q.jsx)(fv,{mode:e.mode,onClose:e.onClose}),t[2]=e.mode,t[3]=e.onClose,t[4]=r):r=t[4];let i;return t[5]!==n||t[6]!==r?(i=(0,Q.jsx)(Ki,{children:(0,Q.jsx)(Z.Suspense,{fallback:n,children:r})}),t[5]=n,t[6]=r,t[7]=i):i=t[7],i},Ov=e=>{let t=(0,X.c)(10),n;t[0]===e.mode?n=t[1]:(n=(0,Q.jsx)(Ev,{label:`Loading artifact`,mode:e.mode}),t[0]=e.mode,t[1]=n);let r;t[2]!==e.cwd||t[3]!==e.mode||t[4]!==e.onClose||t[5]!==e.relativePath?(r=(0,Q.jsx)(pv,{cwd:e.cwd,mode:e.mode,relativePath:e.relativePath,onClose:e.onClose}),t[2]=e.cwd,t[3]=e.mode,t[4]=e.onClose,t[5]=e.relativePath,t[6]=r):r=t[6];let i;return t[7]!==n||t[8]!==r?(i=(0,Q.jsx)(Z.Suspense,{fallback:n,children:r}),t[7]=n,t[8]=r,t[9]=i):i=t[9],i};function kv(e){switch(e){case`artifact`:return`artifact`;case`browser`:return`browser`;case`diff`:return`diff`}}var Av=e=>{let t=(0,X.c)(22),n;t[0]===e?n=t[1]:(n=t=>{t.button===0&&(t.preventDefault(),t.stopPropagation(),e.onClosePanel())},t[0]=e,t[1]=n);let r=n,i;t[2]===e?i=t[3]:(i=t=>{t.preventDefault(),t.stopPropagation(),t.detail===0&&e.onClosePanel()},t[2]=e,t[3]=i);let a=i,o;t[4]===e?o=t[5]:(o=e.tabs.map(t=>{let n=t.id===e.activePanel;return(0,Q.jsxs)(I,{type:`button`,variant:n?`secondary`:`ghost`,size:`xs`,"aria-current":n?`page`:void 0,className:U(`min-w-0 gap-1.5 px-2.5`,n?`text-foreground`:`text-muted-foreground hover:text-foreground`),onClick:()=>e.onSelectPanel(t.id),children:[t.icon,(0,Q.jsx)(`span`,{className:`truncate`,children:t.label})]},t.id)}),t[4]=e,t[5]=o);let s;t[6]===o?s=t[7]:(s=(0,Q.jsx)(`div`,{className:`no-drag flex min-w-0 flex-1 items-center gap-1 overflow-x-auto`,children:o}),t[6]=o,t[7]=s);let c=`Close ${kv(e.activePanel)} panel`,l=`Close ${kv(e.activePanel)} panel`,u;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,Q.jsx)(sn,{}),t[8]=u):u=t[8];let d;t[9]!==a||t[10]!==r||t[11]!==c||t[12]!==l?(d=(0,Q.jsx)(I,{type:`button`,variant:`ghost`,size:`icon-xs`,className:`no-drag shrink-0 text-muted-foreground hover:text-foreground`,onPointerDown:r,onClick:a,"aria-label":c,title:l,children:u}),t[9]=a,t[10]=r,t[11]=c,t[12]=l,t[13]=d):d=t[13];let f;t[14]!==s||t[15]!==d?(f=(0,Q.jsxs)(`div`,{className:`drag-region relative z-20 flex h-11 shrink-0 items-center gap-1 border-b border-border bg-card px-2`,children:[s,d]}),t[14]=s,t[15]=d,t[16]=f):f=t[16];let p;t[17]===e.children?p=t[18]:(p=(0,Q.jsx)(`div`,{className:`relative z-0 min-h-0 min-w-0 flex-1 overflow-hidden`,children:e.children}),t[17]=e.children,t[18]=p);let m;return t[19]!==f||t[20]!==p?(m=(0,Q.jsxs)(`div`,{className:`isolate flex h-full min-h-0 min-w-0 flex-1 flex-col bg-background`,children:[f,p]}),t[19]=f,t[20]=p,t[21]=m):m=t[21],m},jv=e=>{let t=(0,X.c)(7),n=e.active?void 0:!0,r=e.panel,i=e.active?`visible`:`pointer-events-none invisible`,a;t[0]===i?a=t[1]:(a=U(`absolute inset-0 min-h-0 min-w-0 overflow-hidden`,i),t[0]=i,t[1]=a);let o;return t[2]!==e.children||t[3]!==e.panel||t[4]!==n||t[5]!==a?(o=(0,Q.jsx)(`div`,{"aria-hidden":n,"data-right-sidebar-panel":r,className:a,children:e.children}),t[2]=e.children,t[3]=e.panel,t[4]=n,t[5]=a,t[6]=o):o=t[6],o},Mv=e=>{let t=(0,X.c)(15),{ariaLabel:n,children:r,open:i}=e,o=(0,Z.useRef)(null),s=(0,Z.useRef)(null),[c,l]=(0,Z.useState)(Fv),u;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(u=e=>{let t=o.current,n=document.querySelector(`[data-chat-composer-form='true']`);if(!t||!n)return!0;let r=n.parentElement;if(!r)return!0;let i=t.style.width;t.style.width=`${e}px`;let a=window.getComputedStyle(r),s=Number.parseFloat(a.paddingLeft)||0,c=Number.parseFloat(a.paddingRight)||0,l=Math.max(0,r.clientWidth-s-c),u=n.getBoundingClientRect(),d=n.querySelector(`[data-chat-composer-footer='true']`),f=n.querySelector(`[data-chat-composer-actions='right']`)?.getBoundingClientRect().width??0,p=d&&(Number.parseFloat(window.getComputedStyle(d).columnGap)||Number.parseFloat(window.getComputedStyle(d).gap))||0,m=xv+f+p,h=n.scrollWidth>n.clientWidth+.5,g=u.width>l+.5,_=n.clientWidth+.5<m;return i.length>0?t.style.width=i:t.style.removeProperty(`width`),!h&&!g&&!_},t[0]=u):u=t[0];let d=u,f;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(f=e=>{let t=Cv(e);l(t),L(gv,t,a)},t[1]=f):f=t[1];let p=f,m;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(m=()=>{s.current=null,document.body.style.removeProperty(`cursor`),document.body.style.removeProperty(`user-select`)},t[2]=m):m=t[2];let h=m,g;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(g=e=>{e.button!==0||!o.current||(s.current={pointerId:e.pointerId,startWidth:o.current.getBoundingClientRect().width,startX:e.clientX},e.preventDefault(),e.currentTarget.setPointerCapture(e.pointerId),document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`)},t[3]=g):g=t[3];let _=g,v;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(v=e=>{let t=s.current;if(!t||t.pointerId!==e.pointerId)return;let n=Cv(t.startWidth+(t.startX-e.clientX));d(n)&&(l(n),e.preventDefault())},t[4]=v):v=t[4];let y=v,b;t[5]===c?b=t[6]:(b=e=>{let t=s.current;!t||t.pointerId!==e.pointerId||(p(c),e.currentTarget.hasPointerCapture(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId),h(),e.preventDefault())},t[5]=c,t[6]=b);let x=b,S,C;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(S=()=>()=>{h()},C=[h],t[7]=S,t[8]=C):(S=t[7],C=t[8]),(0,Z.useEffect)(S,C);let w;return t[9]!==n||t[10]!==r||t[11]!==x||t[12]!==i||t[13]!==c?(w=i?(0,Q.jsxs)(`div`,{ref:o,className:U(`relative hidden min-h-0 shrink-0 overflow-hidden border-l border-border bg-card text-foreground md:flex`,`shadow-[-20px_0_40px_-36px_rgba(15,23,42,0.55)]`),style:{width:c},children:[(0,Q.jsx)(za,{ariaLabel:n,onPointerCancel:x,onPointerDown:_,onPointerMove:y,onPointerUp:x}),(0,Q.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-hidden`,children:r})]}):null,t[9]=n,t[10]=r,t[11]=x,t[12]=i,t[13]=c,t[14]=w):w=t[14],w};function Nv(){let e=ft(e=>e.bootstrapComplete),t=y(),n=Ci.useParams({select:e=>te.makeUnsafe(e.threadId)}),r=Ci.useSearch(),i=ft(e=>e.threads.find(e=>e.id===n)??null),a=ft(e=>i?e.projects.find(e=>e.id===i.projectId)??null:null),o=ft(e=>e.threadIndexById),s=ft(e=>e.threads.some(e=>e.id===n)),c=St(e=>e.draftThreadsByThreadId),l=s||Object.hasOwn(c,n),u=Pv(i),d=Ir(),f=r.diff===`1`,p=r.artifact===`1`&&!!r.artifactPath,m=d&&r.browser===`1`,h=wi(r,{browserEnabled:d}),g=h!==null,_=a?i?.worktreePath??a.cwd:null,v=Ae(i?.latestTurn??null,i?.session??null),b=Zr(hv),x=(0,Z.useRef)(null),S=(0,Z.useCallback)(e=>o[e]!==void 0||Object.hasOwn(c,e),[c,o]),C=(0,Z.useMemo)(()=>l?ri({focusedThreadId:n,layout:Ai(r.panes),isThreadAvailable:S}):null,[S,l,r.panes,n]),w=(0,Z.useMemo)(()=>ki(C),[C]),T=Ei(C),E=w.length>1,[D,O]=(0,Z.useState)(null),k=D!==null;lv(w),(0,Z.useEffect)(()=>{if(!k)return;let e=()=>{O(null)};return window.addEventListener(`dragend`,e),window.addEventListener(`drop`,e),()=>{window.removeEventListener(`dragend`,e),window.removeEventListener(`drop`,e)}},[k]),(0,Z.useEffect)(()=>{x.current=null},[n]);let[A,j]=(0,Z.useState)(f),[M,P]=(0,Z.useState)(p),[F,I]=(0,Z.useState)(m),L=(0,Z.useCallback)(()=>{t({to:`/$threadId`,params:{threadId:n},search:e=>ui(e)})},[t,n]);if((0,Z.useEffect)(()=>{f&&j(!0)},[f]),(0,Z.useEffect)(()=>{p&&P(!0)},[p]),(0,Z.useEffect)(()=>{m&&I(!0)},[m]),(0,Z.useEffect)(()=>{if(!e)return;if(l){x.current=null;return}let n=Date.now(),r=x.current??n;if(x.current=r,Sv({bootstrapComplete:e,routeThreadExists:l,missingSinceMs:r,nowMs:n})){t({to:`/`,replace:!0});return}let i=Math.max(0,750-(n-r)),a=window.setTimeout(()=>{t({to:`/`,replace:!0})},i);return()=>{window.clearTimeout(a)}},[e,t,l,n]),(0,Z.useEffect)(()=>{l&&(r.panes??void 0)!==T&&t({to:`/$threadId`,params:{threadId:n},replace:!0,search:e=>({...e,panes:T})})},[T,t,l,r.panes,n]),(0,Z.useEffect)(()=>{if(!e||!l||!u)return;let t=N();t&&t.orchestration.dispatchCommand({type:`thread.session.ensure`,commandId:B(),threadId:n,createdAt:new Date().toISOString()})},[e,l,u,n]),!e||!l)return null;let R=(e,n,r={})=>{t({to:`/$threadId`,params:{threadId:e},replace:r.replace??!1,search:e=>({...e,panes:Ei(n)})})},z=e=>{e!==n&&R(e,C,{replace:!0})},ee=(e,t)=>{O(n=>t===null?n?.threadId===e?null:n:n?.threadId===e&&n.zone===t?n:{threadId:e,zone:t})},ne=(e,t,r)=>{if(C===null||!S(r))return;let i=ti({droppedThreadId:r,focusedThreadId:n,layout:C,targetThreadId:e,zone:t});R(i.focusedThreadId,i.layout,{replace:!0})},V=e=>{if(C===null)return;let r=ci({closingThreadId:e,focusedThreadId:n,layout:C});if(r.focusedThreadId===null){t({to:`/`,replace:!0});return}R(r.focusedThreadId,r.layout)},re=e=>{if(e===`browser`){if(!d)return;t({to:`/$threadId`,params:{threadId:n},search:e=>({...e,browser:`1`,panel:`browser`})});return}if(e===`artifact`){if(!p)return;t({to:`/$threadId`,params:{threadId:n},search:e=>({...e,panel:`artifact`})});return}_&&t({to:`/$threadId`,params:{threadId:n},search:e=>({...e,diff:`1`,panel:`diff`})})},ie=()=>{if(!i)return;let e=N();e&&e.orchestration.dispatchCommand({type:`thread.turn.interrupt`,commandId:B(),threadId:i.id,...i.latestTurn?.turnId?{turnId:i.latestTurn.turnId}:{},createdAt:new Date().toISOString()})},H=[..._?[{id:`diff`,label:`Diff`,icon:(0,Q.jsx)(Nn,{className:`size-3.5`})}]:[],...d?[{id:`browser`,label:`Browser`,icon:(0,Q.jsx)(or,{className:`size-3.5`})}]:[],...p?[{id:`artifact`,label:`Artifact`,icon:(0,Q.jsx)(Yt,{className:`size-3.5`})}]:[]],ae=f||A,oe=p||M,U=m||F,se=e=>h?(0,Q.jsxs)(Av,{activePanel:h,tabs:H,onClosePanel:L,onSelectPanel:re,children:[(0,Q.jsx)(jv,{panel:`diff`,active:h===`diff`,children:ae?(0,Q.jsx)(Dv,{mode:e}):null}),(0,Q.jsx)(jv,{panel:`browser`,active:h===`browser`,children:U&&d?(0,Q.jsx)(fo,{threadId:n,active:h===`browser`,cwd:_,isAgentWorking:v,onStopAgent:ie}):null}),(0,Q.jsx)(jv,{panel:`artifact`,active:h===`artifact`,children:oe?(0,Q.jsx)(Ov,{cwd:_,mode:e,relativePath:r.artifactPath??null}):null})]}):null,ce=C===null?null:(0,Q.jsx)(iv,{layout:C,minPaneSizePx:mv,renderPane:e=>{let t=te.makeUnsafe(e);return(0,Q.jsx)(W_,{threadId:t,focused:t===n,multiPane:E,dropZone:D?.threadId===t?D.zone:null,onDropZoneChange:e=>ee(t,e),onThreadDrop:(e,n)=>ne(t,n,e),onFocus:()=>z(t),onClose:()=>V(t)})}});return b?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Xr,{className:`h-dvh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground`,children:ce}),(0,Q.jsx)(Tv,{open:g,onClosePanel:L,children:se(`sheet`)})]}):(0,Q.jsx)(Xr,{className:`h-dvh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground`,children:(0,Q.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 overflow-hidden`,children:[ce,(0,Q.jsx)(Mv,{open:g,ariaLabel:`Resize ${h?kv(h):`right`} panel`,children:se(`sidebar`)})]})})}function Pv(e){return e===null||e.resumeState===`unrecoverable`||e.resumeState===`resuming`?!1:e.session===null||e.session.orchestrationStatus===`stopped`}function Fv(){let e=F(gv,a);return e===null?wv():Cv(e)}export{Nv as component,Pv as shouldPrewarmThreadSession,Sv as shouldRedirectMissingThread};
|
|
289
|
+
//# sourceMappingURL=_chat._threadId-5846z-_l.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{Ci as t}from"./vendor--effect-atom-react-6hEhKm5I.js";import"./vendor--floating-ui-react-dom-CGq-bz3X.js";import{t as n}from"./vendor-react-BvVnE5E6.js";import"./vendor-tanstack-CM5SpFmF.js";import{c as r}from"./vendor--lexical-react-B6TeCrpE.js";import"./clientSettings-DFgmWajw.js";import"./vendor-effect-Chd9hYxF.js";import"./utils-B-Di8CjF.js";import{i}from"./store-LT9wKN7R.js";import"./uiStateStore-CgvPrTF8.js";import"./vendor-ui-Ds9VgrYb.js";import{n as a}from"./useSettings-CaigvboL.js";import{g as o,n as s}from"./useHandleNewThread-Chs2blac.js";import"./vendor-diffs-TCBcYN7E.js";import"./input-CthhcRBE.js";import"./scroll-area-D6P_hAXV.js";import"./separator-ByukCTaZ.js";import{n as c}from"./index-
|
|
2
|
-
//# sourceMappingURL=_chat.index-
|
|
1
|
+
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{Ci as t}from"./vendor--effect-atom-react-6hEhKm5I.js";import"./vendor--floating-ui-react-dom-CGq-bz3X.js";import{t as n}from"./vendor-react-BvVnE5E6.js";import"./vendor-tanstack-CM5SpFmF.js";import{c as r}from"./vendor--lexical-react-B6TeCrpE.js";import"./clientSettings-DFgmWajw.js";import"./vendor-effect-Chd9hYxF.js";import"./utils-B-Di8CjF.js";import{i}from"./store-LT9wKN7R.js";import"./uiStateStore-CgvPrTF8.js";import"./vendor-ui-Ds9VgrYb.js";import{n as a}from"./useSettings-CaigvboL.js";import{g as o,n as s}from"./useHandleNewThread-Chs2blac.js";import"./vendor-diffs-TCBcYN7E.js";import"./input-CthhcRBE.js";import"./scroll-area-D6P_hAXV.js";import"./separator-ByukCTaZ.js";import{n as c}from"./index-B42nGfCf.js";import{t as l}from"./NoActiveThreadState-CVDfDuF2.js";var u=n(),d=e(t()),f=r();function p(){let e=(0,u.c)(10),t=i(h),n=i(m),r=c.useSearch(),{defaultProjectId:p,handleNewThread:g}=s(),_=a(),v=(0,d.useRef)(null),y,b;if(e[0]!==_.defaultThreadEnvMode||e[1]!==t||e[2]!==p||e[3]!==g||e[4]!==n||e[5]!==r.project?(y=()=>{if(!t)return;let e=r.project?n.find(e=>e.id===r.project)?.id:void 0;if(r.project&&!e)return;let i=e??p;!i||v.current===i||(v.current=i,g(i,{envMode:o({defaultEnvMode:_.defaultThreadEnvMode})}))},b=[_.defaultThreadEnvMode,t,p,g,n,r.project],e[0]=_.defaultThreadEnvMode,e[1]=t,e[2]=p,e[3]=g,e[4]=n,e[5]=r.project,e[6]=y,e[7]=b):(y=e[6],b=e[7]),(0,d.useEffect)(y,b),!t||p){let t;return e[8]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,f.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-1 bg-background`}),e[8]=t):t=e[8],t}let x;return e[9]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,f.jsx)(l,{}),e[9]=x):x=e[9],x}function m(e){return e.projects}function h(e){return e.bootstrapComplete}export{p as component};
|
|
2
|
+
//# sourceMappingURL=_chat.index-DI7egWLc.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{Ci as t}from"./vendor--effect-atom-react-6hEhKm5I.js";import"./vendor--floating-ui-react-dom-CGq-bz3X.js";import{t as n}from"./vendor-react-BvVnE5E6.js";import{w as r}from"./vendor-tanstack-CM5SpFmF.js";import{c as i}from"./vendor--lexical-react-B6TeCrpE.js";import{O as a,P as o,f as s,s as c}from"./clientSettings-DFgmWajw.js";import"./vendor-effect-Chd9hYxF.js";import{B as ee,V as te,rt as l,st as u,t as d}from"./utils-B-Di8CjF.js";import{G as ne,W as re,Y as f,i as p}from"./store-LT9wKN7R.js";import{Jn as m,Lr as h,Nn as g,Pn as _,Rr as v,Un as ie,kn as ae}from"./vendor-ui-Ds9VgrYb.js";import{n as oe}from"./useSettings-CaigvboL.js";import"./vendor-diffs-TCBcYN7E.js";import{t as se}from"./input-CthhcRBE.js";import{t as y}from"./scroll-area-D6P_hAXV.js";import"./separator-ByukCTaZ.js";import{G as b,K as x,V as ce,et as S,it as C,q as w,r as T}from"./index-DKZPXV4a.js";import{a as le,i as ue,n as de,o as fe,r as pe,s as me}from"./ProviderModelPicker-BRDu3BzU.js";import{a as he,c as ge,i as _e,o as ve,r as ye,s as be,t as xe}from"./dialog-BwIZs3EF.js";import{t as Se}from"./textarea-DAzODx1v.js";import{a as E,i as D,n as Ce,o as O,r as we,t as k}from"./empty-CwEqZDMX.js";var Te=n(),A=e(t(),1),Ee=[`all`,`active`,`paused`],De={all:`All`,active:`Active`,paused:`Paused`},Oe=[{label:`Every 15 minutes`,rrule:`FREQ=MINUTELY;INTERVAL=15`},{label:`Every 30 minutes`,rrule:`FREQ=MINUTELY;INTERVAL=30`},{label:`Hourly`,rrule:`FREQ=HOURLY;INTERVAL=1`},{label:`Every 4 hours`,rrule:`FREQ=HOURLY;INTERVAL=4`},{label:`Daily at 9:00`,rrule:`FREQ=DAILY;BYHOUR=9;BYMINUTE=0`}];function ke(e){return Oe.find(t=>t.rrule===e)?.label??`Custom`}function j(e,t){return t===`all`?!0:e.status===t}function Ae(e,t){return t===`all`?e.length:e.filter(e=>j(e,t)).length}function je(e){return e.lastRunStatus===`failed`?`failed`:e.status===`active`?`active`:`paused`}var M=i(),Me={active:`bg-success`,paused:`bg-muted-foreground/40`,failed:`bg-destructive`};function N(e){return e.status===`paused`?`Paused`:e.nextRunAt?`Next ${S(e.nextRunAt)}`:`Not scheduled`}function Ne(e){return e.lastRunAt?`${e.lastRunStatus===`failed`?`Failed`:`Queued`} ${S(e.lastRunAt)}`:`Never run`}function Pe({automations:e,loading:t,loadError:n,filter:r,columnClass:i,onFilterChange:a,onRefresh:o,onCreate:s,onRunNow:ee,onToggleStatus:te,onDelete:u}){let ne=p(e=>e.projects),re=p(e=>e.threads),f=(0,A.useMemo)(()=>new Map(ne.map(e=>[e.id,e])),[ne]),ie=(0,A.useMemo)(()=>new Map(re.map(e=>[e.id,e])),[re]),ae=(0,A.useMemo)(()=>{let t={};for(let n of Ee)t[n]=Ae(e,n);return t},[e]),oe=(0,A.useMemo)(()=>e.filter(e=>j(e,r)),[e,r]);return(0,M.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,M.jsx)(`div`,{className:`flex h-11 shrink-0 items-center border-b border-border/40`,children:(0,M.jsxs)(`div`,{className:d(i,`flex h-full items-center justify-between gap-3`),children:[(0,M.jsx)(`div`,{role:`radiogroup`,"aria-label":`Automation filter`,className:`inline-flex items-center rounded-full border border-border/60 bg-background/60 p-[2px]`,children:Ee.map(e=>{let t=e===r,n=ae[e];return(0,M.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":t,onClick:()=>a(e),className:d(`inline-flex h-5 items-center gap-1 rounded-full px-2 text-[10.5px] font-medium leading-none transition-colors`,t?`bg-foreground text-background`:`text-muted-foreground hover:text-foreground`),children:[(0,M.jsx)(`span`,{children:De[e]}),(0,M.jsx)(`span`,{className:`text-[9px] tabular-nums opacity-70`,children:n})]},e)})}),(0,M.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,M.jsxs)(b,{children:[(0,M.jsx)(w,{render:(0,M.jsx)(c,{type:`button`,size:`icon-xs`,variant:`ghost`,className:`text-muted-foreground hover:text-foreground`,onClick:o,"aria-label":`Refresh automations`,children:(0,M.jsx)(m,{className:`size-3.5`,"aria-hidden":!0})})}),(0,M.jsx)(x,{children:`Refresh`})]}),(0,M.jsxs)(c,{type:`button`,size:`xs`,onClick:s,children:[(0,M.jsx)(_,{className:`size-3.5`,"aria-hidden":!0}),`New automation`]})]})]})}),(0,M.jsx)(y,{className:`min-h-0 flex-1`,children:(0,M.jsx)(`div`,{className:d(i,`flex flex-col gap-1 pt-2 pb-4`),children:t&&e.length===0?(0,M.jsx)(`p`,{className:`px-2 py-8 text-sm text-muted-foreground`,children:`Loading automations...`}):n&&e.length===0?(0,M.jsx)(`div`,{className:`p-6`,children:(0,M.jsxs)(k,{children:[(0,M.jsxs)(D,{children:[(0,M.jsx)(E,{variant:`icon`,children:(0,M.jsx)(m,{})}),(0,M.jsx)(O,{className:`text-pretty`,children:`Couldn't load automations`}),(0,M.jsx)(we,{className:`text-pretty`,children:n})]}),(0,M.jsx)(Ce,{children:(0,M.jsxs)(c,{onClick:o,size:`sm`,children:[(0,M.jsx)(m,{className:`size-3.5`,"aria-hidden":!0}),`Retry`]})})]})}):oe.length===0?(0,M.jsx)(`div`,{className:`p-6`,children:(0,M.jsxs)(k,{children:[(0,M.jsxs)(D,{children:[(0,M.jsx)(E,{variant:`icon`,children:(0,M.jsx)(_,{})}),(0,M.jsx)(O,{className:`text-pretty`,children:e.length===0?`No automations yet`:`No matching automations`}),(0,M.jsx)(we,{className:`text-pretty`,children:e.length===0?`Create an automation to start a new thread on a schedule.`:`Try a different filter or create a new automation.`})]}),e.length===0?(0,M.jsx)(Ce,{children:(0,M.jsxs)(c,{onClick:s,size:`sm`,children:[(0,M.jsx)(_,{className:`size-3.5`,"aria-hidden":!0}),`New automation`]})}):null]})}):(0,M.jsx)(`ul`,{className:`flex flex-col gap-0.5 pb-2`,children:oe.map(e=>{let t=(e.projectId?f.get(e.projectId)?.name:null)??e.projectlessCwd??`Projectless`,n=e.lastRunThreadId?ie.get(e.lastRunThreadId):void 0,r=je(e);return(0,M.jsx)(`li`,{children:(0,M.jsxs)(`div`,{className:d(`group/automation flex w-full min-w-0 items-stretch gap-3 rounded-md py-2.5 pl-2 pr-2.5`,`hover:bg-sidebar-accent/50`),children:[(0,M.jsx)(`span`,{className:d(`w-[3px] shrink-0 self-stretch rounded-full transition-opacity`,Me[r],`opacity-80 group-hover/automation:opacity-100`),"aria-hidden":!0}),(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:[(0,M.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,M.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[13px] font-medium leading-tight text-foreground`,children:e.title}),(0,M.jsx)(`span`,{className:`shrink-0 rounded-sm border border-border/60 px-1 py-px text-[9px] font-medium uppercase tracking-wider text-muted-foreground/80`,children:ke(e.scheduleRrule)})]}),(0,M.jsxs)(`span`,{className:`truncate text-[11px] text-muted-foreground/70`,children:[l[e.modelSelection.provider],` ·`,` `,t]}),n?(0,M.jsxs)(`span`,{className:`truncate text-[11px] text-muted-foreground/60`,children:[`Last run: `,n.title]}):null,(0,M.jsx)(`p`,{className:`line-clamp-2 text-[11px] leading-[1.45] text-muted-foreground/60`,children:e.prompt}),(0,M.jsxs)(`span`,{className:`mt-0.5 text-[10.5px] text-muted-foreground/55`,children:[N(e),` · `,Ne(e),e.lastRunError?` · ${e.lastRunError}`:``]})]}),(0,M.jsxs)(`div`,{className:`flex shrink-0 items-start gap-1 self-start pt-0.5`,children:[(0,M.jsxs)(b,{children:[(0,M.jsx)(w,{render:(0,M.jsx)(c,{size:`icon-xs`,variant:`ghost`,className:`text-muted-foreground hover:text-foreground`,onClick:()=>ee(e.id),"aria-label":`Run automation now`,children:(0,M.jsx)(h,{className:`size-3.5`,"aria-hidden":!0})})}),(0,M.jsx)(x,{children:`Run now`})]}),(0,M.jsxs)(b,{children:[(0,M.jsx)(w,{render:(0,M.jsx)(c,{size:`icon-xs`,variant:`ghost`,className:`text-muted-foreground hover:text-foreground`,onClick:()=>te(e),"aria-label":e.status===`active`?`Pause automation`:`Resume automation`,children:e.status===`active`?(0,M.jsx)(v,{className:`size-3.5`,"aria-hidden":!0}):(0,M.jsx)(h,{className:`size-3.5`,"aria-hidden":!0})})}),(0,M.jsx)(x,{children:e.status===`active`?`Pause`:`Resume`})]}),(0,M.jsxs)(b,{children:[(0,M.jsx)(w,{render:(0,M.jsx)(c,{size:`icon-xs`,variant:`ghost`,className:`text-muted-foreground hover:text-destructive`,onClick:()=>u(e.id),"aria-label":`Delete automation ${e.title}`,children:(0,M.jsx)(g,{className:`size-3.5`,"aria-hidden":!0})})}),(0,M.jsx)(x,{children:`Delete`})]})]})]})},e.id)})})})})]})}var Fe=`Scheduled automation`,Ie=`Run this scheduled task and report what changed.`,Le={"full-access":`Full access`,"approval-required":`Ask for approval`};function Re(e){let t=(0,Te.c)(115),{open:n,onOpenChange:r,onCreate:i,isCreating:o}=e,s=oe(),l=a(),d=p(He),m,h;t[0]===d?h=t[1]:(h=new Map(d.map(Ve)),t[0]=d,t[1]=h),m=h;let g=m,_;t[2]!==g||t[3]!==l||t[4]!==s?(_=e=>f(g.get(u.makeUnsafe(e))?.defaultModelSelection??s.defaultModelSelection,s,l),t[2]=g,t[3]=l,t[4]=s,t[5]=_):_=t[5];let v=_,[y,b]=(0,A.useState)(Fe),[x,ce]=(0,A.useState)(Ie),[S,C]=(0,A.useState)(``),w;t[6]!==l||t[7]!==s?(w=()=>f(s.defaultModelSelection,s,l),t[6]=l,t[7]=s,t[8]=w):w=t[8];let[T,E]=(0,A.useState)(w),[D,Ce]=(0,A.useState)(te),[O,we]=(0,A.useState)(Oe[1].rrule),k;t[9]!==g||t[10]!==S?(k=S?g.get(u.makeUnsafe(S)):void 0,t[9]=g,t[10]=S,t[11]=k):k=t[11];let Ee=k,De,j;t[12]!==T.model||t[13]!==T.provider||t[14]!==l||t[15]!==s?(j=ne(s,l,T.provider,T.model),t[12]=T.model,t[13]=T.provider,t[14]=l,t[15]=s,t[16]=j):j=t[16],De=j;let Ae=De,je;t[17]!==n||t[18]!==d[0]?.id||t[19]!==v||t[20]!==l||t[21]!==s?(je=()=>{if(!n)return;let e=d[0]?.id??``;b(Fe),ce(Ie),we(Oe[1].rrule),C(e),E(e?v(e):f(s.defaultModelSelection,s,l)),Ce(te)},t[17]=n,t[18]=d[0]?.id,t[19]=v,t[20]=l,t[21]=s,t[22]=je):je=t[22];let Me;t[23]!==n||t[24]!==d||t[25]!==v||t[26]!==l||t[27]!==s?(Me=[n,d,v,l,s],t[23]=n,t[24]=d,t[25]=v,t[26]=l,t[27]=s,t[28]=Me):Me=t[28],(0,A.useEffect)(je,Me);let N=o||y.trim().length===0||x.trim().length===0||S.length===0,Ne;t[29]!==T||t[30]!==i||t[31]!==S||t[32]!==x||t[33]!==D||t[34]!==O||t[35]!==N||t[36]!==y?(Ne=()=>{N||i({title:y.trim(),prompt:x.trim(),projectId:u.makeUnsafe(S),projectlessCwd:null,modelSelection:T,runtimeMode:D,interactionMode:ee,scheduleRrule:O,status:`active`})},t[29]=T,t[30]=i,t[31]=S,t[32]=x,t[33]=D,t[34]=O,t[35]=N,t[36]=y,t[37]=Ne):Ne=t[37];let Pe=Ne,Re;t[38]===Symbol.for(`react.memo_cache_sentinel`)?(Re=(0,M.jsxs)(he,{children:[(0,M.jsx)(ge,{children:`New automation`}),(0,M.jsx)(ye,{children:`Create a new thread on a schedule and run a prompt automatically.`})]}),t[38]=Re):Re=t[38];let Ue;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(Ue=(0,M.jsx)(`label`,{htmlFor:`automation-new-title`,className:`text-[11px] font-medium text-muted-foreground/75`,children:`Title`}),t[39]=Ue):Ue=t[39];let We;t[40]===Symbol.for(`react.memo_cache_sentinel`)?(We=e=>b(e.currentTarget.value),t[40]=We):We=t[40];let P;t[41]===y?P=t[42]:(P=(0,M.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[Ue,(0,M.jsx)(se,{id:`automation-new-title`,autoFocus:!0,value:y,onChange:We})]}),t[41]=y,t[42]=P);let Ge;t[43]===Symbol.for(`react.memo_cache_sentinel`)?(Ge=(0,M.jsx)(`label`,{htmlFor:`automation-new-project`,className:`text-[11px] font-medium text-muted-foreground/75`,children:`Project`}),t[43]=Ge):Ge=t[43];let F;t[44]===v?F=t[45]:(F=e=>{let t=e??``;C(t),t&&E(v(t))},t[44]=v,t[45]=F);let Ke=Ee?.name??`Select a project`,I;t[46]===Ke?I=t[47]:(I=(0,M.jsx)(fe,{id:`automation-new-project`,size:`sm`,className:`w-full`,children:(0,M.jsx)(me,{placeholder:`Select a project`,children:Ke})}),t[46]=Ke,t[47]=I);let L;t[48]===d?L=t[49]:(L=d.map(Be),t[48]=d,t[49]=L);let R;t[50]===L?R=t[51]:(R=(0,M.jsx)(le,{align:`start`,alignItemWithTrigger:!1,children:L}),t[50]=L,t[51]=R);let z;t[52]!==S||t[53]!==F||t[54]!==I||t[55]!==R?(z=(0,M.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[Ge,(0,M.jsxs)(pe,{value:S,onValueChange:F,children:[I,R]})]}),t[52]=S,t[53]=F,t[54]=I,t[55]=R,t[56]=z):z=t[56];let qe;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(qe=(0,M.jsx)(`span`,{className:`text-[11px] font-medium text-muted-foreground/75`,children:`Model`}),t[57]=qe):qe=t[57];let B;t[58]!==l||t[59]!==s?(B=(e,t)=>{E(f(re(e,t),s,l))},t[58]=l,t[59]=s,t[60]=B):B=t[60];let V;t[61]!==Ae||t[62]!==T.model||t[63]!==T.options||t[64]!==T.provider||t[65]!==l||t[66]!==B?(V=(0,M.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[qe,(0,M.jsx)(de,{provider:T.provider,model:T.model,lockedProvider:null,providers:l,modelOptionsByProvider:Ae,modelOptions:T.options,triggerVariant:`outline`,triggerClassName:`w-full justify-start`,onProviderModelChange:B})]}),t[61]=Ae,t[62]=T.model,t[63]=T.options,t[64]=T.provider,t[65]=l,t[66]=B,t[67]=V):V=t[67];let Je;t[68]===Symbol.for(`react.memo_cache_sentinel`)?(Je=(0,M.jsx)(`label`,{htmlFor:`automation-new-runtime`,className:`text-[11px] font-medium text-muted-foreground/75`,children:`Access`}),t[68]=Je):Je=t[68];let Ye;t[69]===Symbol.for(`react.memo_cache_sentinel`)?(Ye=e=>Ce(e??`full-access`),t[69]=Ye):Ye=t[69];let Xe=Le[D],H;t[70]===Xe?H=t[71]:(H=(0,M.jsx)(fe,{id:`automation-new-runtime`,size:`sm`,className:`w-full`,children:(0,M.jsx)(me,{children:Xe})}),t[70]=Xe,t[71]=H);let Ze;t[72]===Symbol.for(`react.memo_cache_sentinel`)?(Ze=(0,M.jsxs)(le,{align:`start`,alignItemWithTrigger:!1,children:[(0,M.jsx)(ue,{value:`full-access`,hideIndicator:!0,children:`Full access`}),(0,M.jsx)(ue,{value:`approval-required`,hideIndicator:!0,children:`Ask for approval`})]}),t[72]=Ze):Ze=t[72];let U;t[73]!==D||t[74]!==H?(U=(0,M.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[Je,(0,M.jsxs)(pe,{value:D,onValueChange:Ye,children:[H,Ze]})]}),t[73]=D,t[74]=H,t[75]=U):U=t[75];let Qe;t[76]===Symbol.for(`react.memo_cache_sentinel`)?(Qe=(0,M.jsx)(`label`,{htmlFor:`automation-new-schedule`,className:`text-[11px] font-medium text-muted-foreground/75`,children:`Schedule`}),t[76]=Qe):Qe=t[76];let $e;t[77]===Symbol.for(`react.memo_cache_sentinel`)?($e=e=>we(e??``),t[77]=$e):$e=t[77];let W;t[78]===O?W=t[79]:(W=ke(O),t[78]=O,t[79]=W);let G;t[80]===W?G=t[81]:(G=(0,M.jsx)(fe,{id:`automation-new-schedule`,size:`sm`,className:`w-full`,children:(0,M.jsx)(me,{children:W})}),t[80]=W,t[81]=G);let et;t[82]===Symbol.for(`react.memo_cache_sentinel`)?(et=(0,M.jsx)(le,{align:`start`,alignItemWithTrigger:!1,children:Oe.map(ze)}),t[82]=et):et=t[82];let K;t[83]!==O||t[84]!==G?(K=(0,M.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[Qe,(0,M.jsxs)(pe,{value:O,onValueChange:$e,children:[G,et]})]}),t[83]=O,t[84]=G,t[85]=K):K=t[85];let tt;t[86]===Symbol.for(`react.memo_cache_sentinel`)?(tt=(0,M.jsx)(`label`,{htmlFor:`automation-new-prompt`,className:`text-[11px] font-medium text-muted-foreground/75`,children:`Prompt`}),t[86]=tt):tt=t[86];let nt;t[87]===Symbol.for(`react.memo_cache_sentinel`)?(nt=e=>ce(e.currentTarget.value),t[87]=nt):nt=t[87];let q;t[88]===x?q=t[89]:(q=(0,M.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[tt,(0,M.jsx)(Se,{id:`automation-new-prompt`,className:`min-h-24 resize-y`,value:x,onChange:nt,rows:4})]}),t[88]=x,t[89]=q);let J;t[90]!==P||t[91]!==z||t[92]!==V||t[93]!==U||t[94]!==K||t[95]!==q?(J=(0,M.jsxs)(ve,{className:`flex flex-col gap-3`,children:[P,z,V,U,K,q]}),t[90]=P,t[91]=z,t[92]=V,t[93]=U,t[94]=K,t[95]=q,t[96]=J):J=t[96];let Y;t[97]===r?Y=t[98]:(Y=(0,M.jsx)(c,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>r(!1),children:`Cancel`}),t[97]=r,t[98]=Y);let X;t[99]===o?X=t[100]:(X=o?(0,M.jsx)(ae,{className:`size-3.5 animate-spin`,"aria-hidden":!0}):(0,M.jsx)(ie,{className:`size-3.5`,"aria-hidden":!0}),t[99]=o,t[100]=X);let Z;t[101]!==Pe||t[102]!==N||t[103]!==X?(Z=(0,M.jsxs)(c,{type:`button`,size:`sm`,disabled:N,onClick:Pe,children:[X,`Create automation`]}),t[101]=Pe,t[102]=N,t[103]=X,t[104]=Z):Z=t[104];let Q;t[105]!==Y||t[106]!==Z?(Q=(0,M.jsxs)(_e,{variant:`bare`,children:[Y,Z]}),t[105]=Y,t[106]=Z,t[107]=Q):Q=t[107];let $;t[108]!==J||t[109]!==Q?($=(0,M.jsxs)(be,{className:`max-w-md`,children:[Re,J,Q]}),t[108]=J,t[109]=Q,t[110]=$):$=t[110];let rt;return t[111]!==r||t[112]!==n||t[113]!==$?(rt=(0,M.jsx)(xe,{open:n,onOpenChange:r,children:$}),t[111]=r,t[112]=n,t[113]=$,t[114]=rt):rt=t[114],rt}function ze(e){return(0,M.jsx)(ue,{value:e.rrule,hideIndicator:!0,children:e.label},e.rrule)}function Be(e){return(0,M.jsxs)(ue,{value:e.id,hideIndicator:!0,children:[(0,M.jsx)(`span`,{className:`block min-w-0 truncate`,children:e.name}),(0,M.jsx)(`span`,{className:`block truncate text-xs text-muted-foreground`,children:e.cwd})]},e.id)}function Ve(e){return[e.id,e]}function He(e){return e.projects}var Ue=8e3;function We(e,t,n){return new Promise((r,i)=>{let a=window.setTimeout(()=>{i(Error(n))},t);e.then(e=>{window.clearTimeout(a),r(e)},e=>{window.clearTimeout(a),i(e)})})}function P({search:e}){let t=r(),n=e.filter??`all`,[i,a]=(0,A.useState)({automations:[]}),[c,ee]=(0,A.useState)(!0),[te,l]=(0,A.useState)(null),[u,ne]=(0,A.useState)(!1),[re,f]=(0,A.useState)(!1),p=(0,A.useRef)(!0);(0,A.useEffect)(()=>(p.current=!0,()=>{p.current=!1}),[]);let m=(0,A.useCallback)(async e=>{e?.quiet||(ee(!0),l(null));try{let e=await We(s().automations.list(),Ue,`Timed out while loading automations.`);p.current&&(a(e),l(null))}catch(t){let n=t instanceof Error?t.message:`Try again in a moment.`;p.current&&!e?.quiet&&(l(n),C.add({type:`error`,title:`Failed to load automations`,description:n}))}finally{p.current&&!e?.quiet&&ee(!1)}},[]);(0,A.useEffect)(()=>{m()},[m]),(0,A.useEffect)(()=>{let e=()=>{document.visibilityState===`visible`&&m({quiet:!0})},t=window.setInterval(e,3e4);return window.addEventListener(`focus`,e),document.addEventListener(`visibilitychange`,e),()=>{window.clearInterval(t),window.removeEventListener(`focus`,e),document.removeEventListener(`visibilitychange`,e)}},[m]);let h=(0,A.useCallback)(e=>{t({to:`/automations`,search:{filter:e}})},[t]),g=(0,A.useCallback)(async e=>{ne(!0);try{let t=await s().automations.create(e);if(!p.current)return;a(t),C.add({type:`success`,title:`Automation created`}),f(!1)}catch(e){if(!p.current)return;C.add({type:`error`,title:`Failed to create automation`,description:e instanceof Error?e.message:`Try again in a moment.`})}finally{p.current&&ne(!1)}},[]),_=(0,A.useCallback)(async e=>{try{let t=await s().automations.runNow({automationId:e});if(!p.current)return;a(t),C.add({type:`success`,title:`Automation queued`})}catch(e){if(!p.current)return;C.add({type:`error`,title:`Failed to queue automation`,description:e instanceof Error?e.message:`Try again in a moment.`})}},[]),v=(0,A.useCallback)(async e=>{let t=e.status===`active`?`paused`:`active`;try{let n=await s().automations.update({automationId:e.id,status:t});p.current&&a(n)}catch(e){if(!p.current)return;C.add({type:`error`,title:`Failed to update automation`,description:e instanceof Error?e.message:`Try again in a moment.`})}},[]),ie=(0,A.useCallback)(async e=>{try{let t=await s().automations.delete({automationId:e});p.current&&a(t)}catch(e){if(!p.current)return;C.add({type:`error`,title:`Failed to delete automation`,description:e instanceof Error?e.message:`Try again in a moment.`})}},[]),ae=`mx-auto w-full max-w-3xl px-4`;return(0,M.jsxs)(ce,{className:`h-dvh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground`,children:[(0,M.jsx)(`div`,{className:`relative isolate flex min-h-0 min-w-0 flex-1 overflow-hidden`,children:(0,M.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-background [contain:paint]`,children:[o?(0,M.jsx)(`div`,{className:`drag-region flex h-[52px] shrink-0 items-center`}):(0,M.jsx)(`header`,{className:`flex h-12 shrink-0 items-center`,children:(0,M.jsx)(`div`,{className:d(ae,`flex h-full items-center`)})}),(0,M.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden`,children:(0,M.jsx)(Pe,{automations:i.automations,loading:c,loadError:te,filter:n,columnClass:ae,onFilterChange:h,onRefresh:()=>void m(),onCreate:()=>f(!0),onRunNow:e=>void _(e),onToggleStatus:e=>void v(e),onDelete:e=>void ie(e)})})]})}),(0,M.jsx)(Re,{open:re,onOpenChange:f,onCreate:g,isCreating:u})]})}function Ge(){let e=(0,Te.c)(2),t=T.useSearch(),n;return e[0]===t?n=e[1]:(n=(0,M.jsx)(P,{search:t}),e[0]=t,e[1]=n),n}export{Ge as component};
|
|
2
|
-
//# sourceMappingURL=automations-
|
|
1
|
+
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{Ci as t}from"./vendor--effect-atom-react-6hEhKm5I.js";import"./vendor--floating-ui-react-dom-CGq-bz3X.js";import{t as n}from"./vendor-react-BvVnE5E6.js";import{w as r}from"./vendor-tanstack-CM5SpFmF.js";import{c as i}from"./vendor--lexical-react-B6TeCrpE.js";import{O as a,P as o,f as s,s as c}from"./clientSettings-DFgmWajw.js";import"./vendor-effect-Chd9hYxF.js";import{B as ee,V as te,rt as l,st as u,t as d}from"./utils-B-Di8CjF.js";import{G as ne,W as re,Y as f,i as p}from"./store-LT9wKN7R.js";import{Jn as m,Lr as h,Nn as g,Pn as _,Rr as v,Un as ie,kn as ae}from"./vendor-ui-Ds9VgrYb.js";import{n as oe}from"./useSettings-CaigvboL.js";import"./vendor-diffs-TCBcYN7E.js";import{t as se}from"./input-CthhcRBE.js";import{t as y}from"./scroll-area-D6P_hAXV.js";import"./separator-ByukCTaZ.js";import{G as b,K as x,V as ce,et as S,it as C,q as w,r as T}from"./index-B42nGfCf.js";import{a as le,i as ue,n as de,o as fe,r as pe,s as me}from"./ProviderModelPicker-BFlX8lZL.js";import{a as he,c as ge,i as _e,o as ve,r as ye,s as be,t as xe}from"./dialog-CZ2IjObB.js";import{t as Se}from"./textarea-DAzODx1v.js";import{a as E,i as D,n as Ce,o as O,r as we,t as k}from"./empty-CwEqZDMX.js";var Te=n(),A=e(t(),1),Ee=[`all`,`active`,`paused`],De={all:`All`,active:`Active`,paused:`Paused`},Oe=[{label:`Every 15 minutes`,rrule:`FREQ=MINUTELY;INTERVAL=15`},{label:`Every 30 minutes`,rrule:`FREQ=MINUTELY;INTERVAL=30`},{label:`Hourly`,rrule:`FREQ=HOURLY;INTERVAL=1`},{label:`Every 4 hours`,rrule:`FREQ=HOURLY;INTERVAL=4`},{label:`Daily at 9:00`,rrule:`FREQ=DAILY;BYHOUR=9;BYMINUTE=0`}];function ke(e){return Oe.find(t=>t.rrule===e)?.label??`Custom`}function j(e,t){return t===`all`?!0:e.status===t}function Ae(e,t){return t===`all`?e.length:e.filter(e=>j(e,t)).length}function je(e){return e.lastRunStatus===`failed`?`failed`:e.status===`active`?`active`:`paused`}var M=i(),Me={active:`bg-success`,paused:`bg-muted-foreground/40`,failed:`bg-destructive`};function N(e){return e.status===`paused`?`Paused`:e.nextRunAt?`Next ${S(e.nextRunAt)}`:`Not scheduled`}function Ne(e){return e.lastRunAt?`${e.lastRunStatus===`failed`?`Failed`:`Queued`} ${S(e.lastRunAt)}`:`Never run`}function Pe({automations:e,loading:t,loadError:n,filter:r,columnClass:i,onFilterChange:a,onRefresh:o,onCreate:s,onRunNow:ee,onToggleStatus:te,onDelete:u}){let ne=p(e=>e.projects),re=p(e=>e.threads),f=(0,A.useMemo)(()=>new Map(ne.map(e=>[e.id,e])),[ne]),ie=(0,A.useMemo)(()=>new Map(re.map(e=>[e.id,e])),[re]),ae=(0,A.useMemo)(()=>{let t={};for(let n of Ee)t[n]=Ae(e,n);return t},[e]),oe=(0,A.useMemo)(()=>e.filter(e=>j(e,r)),[e,r]);return(0,M.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,M.jsx)(`div`,{className:`flex h-11 shrink-0 items-center border-b border-border/40`,children:(0,M.jsxs)(`div`,{className:d(i,`flex h-full items-center justify-between gap-3`),children:[(0,M.jsx)(`div`,{role:`radiogroup`,"aria-label":`Automation filter`,className:`inline-flex items-center rounded-full border border-border/60 bg-background/60 p-[2px]`,children:Ee.map(e=>{let t=e===r,n=ae[e];return(0,M.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":t,onClick:()=>a(e),className:d(`inline-flex h-5 items-center gap-1 rounded-full px-2 text-[10.5px] font-medium leading-none transition-colors`,t?`bg-foreground text-background`:`text-muted-foreground hover:text-foreground`),children:[(0,M.jsx)(`span`,{children:De[e]}),(0,M.jsx)(`span`,{className:`text-[9px] tabular-nums opacity-70`,children:n})]},e)})}),(0,M.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,M.jsxs)(b,{children:[(0,M.jsx)(w,{render:(0,M.jsx)(c,{type:`button`,size:`icon-xs`,variant:`ghost`,className:`text-muted-foreground hover:text-foreground`,onClick:o,"aria-label":`Refresh automations`,children:(0,M.jsx)(m,{className:`size-3.5`,"aria-hidden":!0})})}),(0,M.jsx)(x,{children:`Refresh`})]}),(0,M.jsxs)(c,{type:`button`,size:`xs`,onClick:s,children:[(0,M.jsx)(_,{className:`size-3.5`,"aria-hidden":!0}),`New automation`]})]})]})}),(0,M.jsx)(y,{className:`min-h-0 flex-1`,children:(0,M.jsx)(`div`,{className:d(i,`flex flex-col gap-1 pt-2 pb-4`),children:t&&e.length===0?(0,M.jsx)(`p`,{className:`px-2 py-8 text-sm text-muted-foreground`,children:`Loading automations...`}):n&&e.length===0?(0,M.jsx)(`div`,{className:`p-6`,children:(0,M.jsxs)(k,{children:[(0,M.jsxs)(D,{children:[(0,M.jsx)(E,{variant:`icon`,children:(0,M.jsx)(m,{})}),(0,M.jsx)(O,{className:`text-pretty`,children:`Couldn't load automations`}),(0,M.jsx)(we,{className:`text-pretty`,children:n})]}),(0,M.jsx)(Ce,{children:(0,M.jsxs)(c,{onClick:o,size:`sm`,children:[(0,M.jsx)(m,{className:`size-3.5`,"aria-hidden":!0}),`Retry`]})})]})}):oe.length===0?(0,M.jsx)(`div`,{className:`p-6`,children:(0,M.jsxs)(k,{children:[(0,M.jsxs)(D,{children:[(0,M.jsx)(E,{variant:`icon`,children:(0,M.jsx)(_,{})}),(0,M.jsx)(O,{className:`text-pretty`,children:e.length===0?`No automations yet`:`No matching automations`}),(0,M.jsx)(we,{className:`text-pretty`,children:e.length===0?`Create an automation to start a new thread on a schedule.`:`Try a different filter or create a new automation.`})]}),e.length===0?(0,M.jsx)(Ce,{children:(0,M.jsxs)(c,{onClick:s,size:`sm`,children:[(0,M.jsx)(_,{className:`size-3.5`,"aria-hidden":!0}),`New automation`]})}):null]})}):(0,M.jsx)(`ul`,{className:`flex flex-col gap-0.5 pb-2`,children:oe.map(e=>{let t=(e.projectId?f.get(e.projectId)?.name:null)??e.projectlessCwd??`Projectless`,n=e.lastRunThreadId?ie.get(e.lastRunThreadId):void 0,r=je(e);return(0,M.jsx)(`li`,{children:(0,M.jsxs)(`div`,{className:d(`group/automation flex w-full min-w-0 items-stretch gap-3 rounded-md py-2.5 pl-2 pr-2.5`,`hover:bg-sidebar-accent/50`),children:[(0,M.jsx)(`span`,{className:d(`w-[3px] shrink-0 self-stretch rounded-full transition-opacity`,Me[r],`opacity-80 group-hover/automation:opacity-100`),"aria-hidden":!0}),(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:[(0,M.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,M.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[13px] font-medium leading-tight text-foreground`,children:e.title}),(0,M.jsx)(`span`,{className:`shrink-0 rounded-sm border border-border/60 px-1 py-px text-[9px] font-medium uppercase tracking-wider text-muted-foreground/80`,children:ke(e.scheduleRrule)})]}),(0,M.jsxs)(`span`,{className:`truncate text-[11px] text-muted-foreground/70`,children:[l[e.modelSelection.provider],` ·`,` `,t]}),n?(0,M.jsxs)(`span`,{className:`truncate text-[11px] text-muted-foreground/60`,children:[`Last run: `,n.title]}):null,(0,M.jsx)(`p`,{className:`line-clamp-2 text-[11px] leading-[1.45] text-muted-foreground/60`,children:e.prompt}),(0,M.jsxs)(`span`,{className:`mt-0.5 text-[10.5px] text-muted-foreground/55`,children:[N(e),` · `,Ne(e),e.lastRunError?` · ${e.lastRunError}`:``]})]}),(0,M.jsxs)(`div`,{className:`flex shrink-0 items-start gap-1 self-start pt-0.5`,children:[(0,M.jsxs)(b,{children:[(0,M.jsx)(w,{render:(0,M.jsx)(c,{size:`icon-xs`,variant:`ghost`,className:`text-muted-foreground hover:text-foreground`,onClick:()=>ee(e.id),"aria-label":`Run automation now`,children:(0,M.jsx)(h,{className:`size-3.5`,"aria-hidden":!0})})}),(0,M.jsx)(x,{children:`Run now`})]}),(0,M.jsxs)(b,{children:[(0,M.jsx)(w,{render:(0,M.jsx)(c,{size:`icon-xs`,variant:`ghost`,className:`text-muted-foreground hover:text-foreground`,onClick:()=>te(e),"aria-label":e.status===`active`?`Pause automation`:`Resume automation`,children:e.status===`active`?(0,M.jsx)(v,{className:`size-3.5`,"aria-hidden":!0}):(0,M.jsx)(h,{className:`size-3.5`,"aria-hidden":!0})})}),(0,M.jsx)(x,{children:e.status===`active`?`Pause`:`Resume`})]}),(0,M.jsxs)(b,{children:[(0,M.jsx)(w,{render:(0,M.jsx)(c,{size:`icon-xs`,variant:`ghost`,className:`text-muted-foreground hover:text-destructive`,onClick:()=>u(e.id),"aria-label":`Delete automation ${e.title}`,children:(0,M.jsx)(g,{className:`size-3.5`,"aria-hidden":!0})})}),(0,M.jsx)(x,{children:`Delete`})]})]})]})},e.id)})})})})]})}var Fe=`Scheduled automation`,Ie=`Run this scheduled task and report what changed.`,Le={"full-access":`Full access`,"approval-required":`Ask for approval`};function Re(e){let t=(0,Te.c)(115),{open:n,onOpenChange:r,onCreate:i,isCreating:o}=e,s=oe(),l=a(),d=p(He),m,h;t[0]===d?h=t[1]:(h=new Map(d.map(Ve)),t[0]=d,t[1]=h),m=h;let g=m,_;t[2]!==g||t[3]!==l||t[4]!==s?(_=e=>f(g.get(u.makeUnsafe(e))?.defaultModelSelection??s.defaultModelSelection,s,l),t[2]=g,t[3]=l,t[4]=s,t[5]=_):_=t[5];let v=_,[y,b]=(0,A.useState)(Fe),[x,ce]=(0,A.useState)(Ie),[S,C]=(0,A.useState)(``),w;t[6]!==l||t[7]!==s?(w=()=>f(s.defaultModelSelection,s,l),t[6]=l,t[7]=s,t[8]=w):w=t[8];let[T,E]=(0,A.useState)(w),[D,Ce]=(0,A.useState)(te),[O,we]=(0,A.useState)(Oe[1].rrule),k;t[9]!==g||t[10]!==S?(k=S?g.get(u.makeUnsafe(S)):void 0,t[9]=g,t[10]=S,t[11]=k):k=t[11];let Ee=k,De,j;t[12]!==T.model||t[13]!==T.provider||t[14]!==l||t[15]!==s?(j=ne(s,l,T.provider,T.model),t[12]=T.model,t[13]=T.provider,t[14]=l,t[15]=s,t[16]=j):j=t[16],De=j;let Ae=De,je;t[17]!==n||t[18]!==d[0]?.id||t[19]!==v||t[20]!==l||t[21]!==s?(je=()=>{if(!n)return;let e=d[0]?.id??``;b(Fe),ce(Ie),we(Oe[1].rrule),C(e),E(e?v(e):f(s.defaultModelSelection,s,l)),Ce(te)},t[17]=n,t[18]=d[0]?.id,t[19]=v,t[20]=l,t[21]=s,t[22]=je):je=t[22];let Me;t[23]!==n||t[24]!==d||t[25]!==v||t[26]!==l||t[27]!==s?(Me=[n,d,v,l,s],t[23]=n,t[24]=d,t[25]=v,t[26]=l,t[27]=s,t[28]=Me):Me=t[28],(0,A.useEffect)(je,Me);let N=o||y.trim().length===0||x.trim().length===0||S.length===0,Ne;t[29]!==T||t[30]!==i||t[31]!==S||t[32]!==x||t[33]!==D||t[34]!==O||t[35]!==N||t[36]!==y?(Ne=()=>{N||i({title:y.trim(),prompt:x.trim(),projectId:u.makeUnsafe(S),projectlessCwd:null,modelSelection:T,runtimeMode:D,interactionMode:ee,scheduleRrule:O,status:`active`})},t[29]=T,t[30]=i,t[31]=S,t[32]=x,t[33]=D,t[34]=O,t[35]=N,t[36]=y,t[37]=Ne):Ne=t[37];let Pe=Ne,Re;t[38]===Symbol.for(`react.memo_cache_sentinel`)?(Re=(0,M.jsxs)(he,{children:[(0,M.jsx)(ge,{children:`New automation`}),(0,M.jsx)(ye,{children:`Create a new thread on a schedule and run a prompt automatically.`})]}),t[38]=Re):Re=t[38];let Ue;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(Ue=(0,M.jsx)(`label`,{htmlFor:`automation-new-title`,className:`text-[11px] font-medium text-muted-foreground/75`,children:`Title`}),t[39]=Ue):Ue=t[39];let We;t[40]===Symbol.for(`react.memo_cache_sentinel`)?(We=e=>b(e.currentTarget.value),t[40]=We):We=t[40];let P;t[41]===y?P=t[42]:(P=(0,M.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[Ue,(0,M.jsx)(se,{id:`automation-new-title`,autoFocus:!0,value:y,onChange:We})]}),t[41]=y,t[42]=P);let Ge;t[43]===Symbol.for(`react.memo_cache_sentinel`)?(Ge=(0,M.jsx)(`label`,{htmlFor:`automation-new-project`,className:`text-[11px] font-medium text-muted-foreground/75`,children:`Project`}),t[43]=Ge):Ge=t[43];let F;t[44]===v?F=t[45]:(F=e=>{let t=e??``;C(t),t&&E(v(t))},t[44]=v,t[45]=F);let Ke=Ee?.name??`Select a project`,I;t[46]===Ke?I=t[47]:(I=(0,M.jsx)(fe,{id:`automation-new-project`,size:`sm`,className:`w-full`,children:(0,M.jsx)(me,{placeholder:`Select a project`,children:Ke})}),t[46]=Ke,t[47]=I);let L;t[48]===d?L=t[49]:(L=d.map(Be),t[48]=d,t[49]=L);let R;t[50]===L?R=t[51]:(R=(0,M.jsx)(le,{align:`start`,alignItemWithTrigger:!1,children:L}),t[50]=L,t[51]=R);let z;t[52]!==S||t[53]!==F||t[54]!==I||t[55]!==R?(z=(0,M.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[Ge,(0,M.jsxs)(pe,{value:S,onValueChange:F,children:[I,R]})]}),t[52]=S,t[53]=F,t[54]=I,t[55]=R,t[56]=z):z=t[56];let qe;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(qe=(0,M.jsx)(`span`,{className:`text-[11px] font-medium text-muted-foreground/75`,children:`Model`}),t[57]=qe):qe=t[57];let B;t[58]!==l||t[59]!==s?(B=(e,t)=>{E(f(re(e,t),s,l))},t[58]=l,t[59]=s,t[60]=B):B=t[60];let V;t[61]!==Ae||t[62]!==T.model||t[63]!==T.options||t[64]!==T.provider||t[65]!==l||t[66]!==B?(V=(0,M.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[qe,(0,M.jsx)(de,{provider:T.provider,model:T.model,lockedProvider:null,providers:l,modelOptionsByProvider:Ae,modelOptions:T.options,triggerVariant:`outline`,triggerClassName:`w-full justify-start`,onProviderModelChange:B})]}),t[61]=Ae,t[62]=T.model,t[63]=T.options,t[64]=T.provider,t[65]=l,t[66]=B,t[67]=V):V=t[67];let Je;t[68]===Symbol.for(`react.memo_cache_sentinel`)?(Je=(0,M.jsx)(`label`,{htmlFor:`automation-new-runtime`,className:`text-[11px] font-medium text-muted-foreground/75`,children:`Access`}),t[68]=Je):Je=t[68];let Ye;t[69]===Symbol.for(`react.memo_cache_sentinel`)?(Ye=e=>Ce(e??`full-access`),t[69]=Ye):Ye=t[69];let Xe=Le[D],H;t[70]===Xe?H=t[71]:(H=(0,M.jsx)(fe,{id:`automation-new-runtime`,size:`sm`,className:`w-full`,children:(0,M.jsx)(me,{children:Xe})}),t[70]=Xe,t[71]=H);let Ze;t[72]===Symbol.for(`react.memo_cache_sentinel`)?(Ze=(0,M.jsxs)(le,{align:`start`,alignItemWithTrigger:!1,children:[(0,M.jsx)(ue,{value:`full-access`,hideIndicator:!0,children:`Full access`}),(0,M.jsx)(ue,{value:`approval-required`,hideIndicator:!0,children:`Ask for approval`})]}),t[72]=Ze):Ze=t[72];let U;t[73]!==D||t[74]!==H?(U=(0,M.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[Je,(0,M.jsxs)(pe,{value:D,onValueChange:Ye,children:[H,Ze]})]}),t[73]=D,t[74]=H,t[75]=U):U=t[75];let Qe;t[76]===Symbol.for(`react.memo_cache_sentinel`)?(Qe=(0,M.jsx)(`label`,{htmlFor:`automation-new-schedule`,className:`text-[11px] font-medium text-muted-foreground/75`,children:`Schedule`}),t[76]=Qe):Qe=t[76];let $e;t[77]===Symbol.for(`react.memo_cache_sentinel`)?($e=e=>we(e??``),t[77]=$e):$e=t[77];let W;t[78]===O?W=t[79]:(W=ke(O),t[78]=O,t[79]=W);let G;t[80]===W?G=t[81]:(G=(0,M.jsx)(fe,{id:`automation-new-schedule`,size:`sm`,className:`w-full`,children:(0,M.jsx)(me,{children:W})}),t[80]=W,t[81]=G);let et;t[82]===Symbol.for(`react.memo_cache_sentinel`)?(et=(0,M.jsx)(le,{align:`start`,alignItemWithTrigger:!1,children:Oe.map(ze)}),t[82]=et):et=t[82];let K;t[83]!==O||t[84]!==G?(K=(0,M.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[Qe,(0,M.jsxs)(pe,{value:O,onValueChange:$e,children:[G,et]})]}),t[83]=O,t[84]=G,t[85]=K):K=t[85];let tt;t[86]===Symbol.for(`react.memo_cache_sentinel`)?(tt=(0,M.jsx)(`label`,{htmlFor:`automation-new-prompt`,className:`text-[11px] font-medium text-muted-foreground/75`,children:`Prompt`}),t[86]=tt):tt=t[86];let nt;t[87]===Symbol.for(`react.memo_cache_sentinel`)?(nt=e=>ce(e.currentTarget.value),t[87]=nt):nt=t[87];let q;t[88]===x?q=t[89]:(q=(0,M.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[tt,(0,M.jsx)(Se,{id:`automation-new-prompt`,className:`min-h-24 resize-y`,value:x,onChange:nt,rows:4})]}),t[88]=x,t[89]=q);let J;t[90]!==P||t[91]!==z||t[92]!==V||t[93]!==U||t[94]!==K||t[95]!==q?(J=(0,M.jsxs)(ve,{className:`flex flex-col gap-3`,children:[P,z,V,U,K,q]}),t[90]=P,t[91]=z,t[92]=V,t[93]=U,t[94]=K,t[95]=q,t[96]=J):J=t[96];let Y;t[97]===r?Y=t[98]:(Y=(0,M.jsx)(c,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>r(!1),children:`Cancel`}),t[97]=r,t[98]=Y);let X;t[99]===o?X=t[100]:(X=o?(0,M.jsx)(ae,{className:`size-3.5 animate-spin`,"aria-hidden":!0}):(0,M.jsx)(ie,{className:`size-3.5`,"aria-hidden":!0}),t[99]=o,t[100]=X);let Z;t[101]!==Pe||t[102]!==N||t[103]!==X?(Z=(0,M.jsxs)(c,{type:`button`,size:`sm`,disabled:N,onClick:Pe,children:[X,`Create automation`]}),t[101]=Pe,t[102]=N,t[103]=X,t[104]=Z):Z=t[104];let Q;t[105]!==Y||t[106]!==Z?(Q=(0,M.jsxs)(_e,{variant:`bare`,children:[Y,Z]}),t[105]=Y,t[106]=Z,t[107]=Q):Q=t[107];let $;t[108]!==J||t[109]!==Q?($=(0,M.jsxs)(be,{className:`max-w-md`,children:[Re,J,Q]}),t[108]=J,t[109]=Q,t[110]=$):$=t[110];let rt;return t[111]!==r||t[112]!==n||t[113]!==$?(rt=(0,M.jsx)(xe,{open:n,onOpenChange:r,children:$}),t[111]=r,t[112]=n,t[113]=$,t[114]=rt):rt=t[114],rt}function ze(e){return(0,M.jsx)(ue,{value:e.rrule,hideIndicator:!0,children:e.label},e.rrule)}function Be(e){return(0,M.jsxs)(ue,{value:e.id,hideIndicator:!0,children:[(0,M.jsx)(`span`,{className:`block min-w-0 truncate`,children:e.name}),(0,M.jsx)(`span`,{className:`block truncate text-xs text-muted-foreground`,children:e.cwd})]},e.id)}function Ve(e){return[e.id,e]}function He(e){return e.projects}var Ue=8e3;function We(e,t,n){return new Promise((r,i)=>{let a=window.setTimeout(()=>{i(Error(n))},t);e.then(e=>{window.clearTimeout(a),r(e)},e=>{window.clearTimeout(a),i(e)})})}function P({search:e}){let t=r(),n=e.filter??`all`,[i,a]=(0,A.useState)({automations:[]}),[c,ee]=(0,A.useState)(!0),[te,l]=(0,A.useState)(null),[u,ne]=(0,A.useState)(!1),[re,f]=(0,A.useState)(!1),p=(0,A.useRef)(!0);(0,A.useEffect)(()=>(p.current=!0,()=>{p.current=!1}),[]);let m=(0,A.useCallback)(async e=>{e?.quiet||(ee(!0),l(null));try{let e=await We(s().automations.list(),Ue,`Timed out while loading automations.`);p.current&&(a(e),l(null))}catch(t){let n=t instanceof Error?t.message:`Try again in a moment.`;p.current&&!e?.quiet&&(l(n),C.add({type:`error`,title:`Failed to load automations`,description:n}))}finally{p.current&&!e?.quiet&&ee(!1)}},[]);(0,A.useEffect)(()=>{m()},[m]),(0,A.useEffect)(()=>{let e=()=>{document.visibilityState===`visible`&&m({quiet:!0})},t=window.setInterval(e,3e4);return window.addEventListener(`focus`,e),document.addEventListener(`visibilitychange`,e),()=>{window.clearInterval(t),window.removeEventListener(`focus`,e),document.removeEventListener(`visibilitychange`,e)}},[m]);let h=(0,A.useCallback)(e=>{t({to:`/automations`,search:{filter:e}})},[t]),g=(0,A.useCallback)(async e=>{ne(!0);try{let t=await s().automations.create(e);if(!p.current)return;a(t),C.add({type:`success`,title:`Automation created`}),f(!1)}catch(e){if(!p.current)return;C.add({type:`error`,title:`Failed to create automation`,description:e instanceof Error?e.message:`Try again in a moment.`})}finally{p.current&&ne(!1)}},[]),_=(0,A.useCallback)(async e=>{try{let t=await s().automations.runNow({automationId:e});if(!p.current)return;a(t),C.add({type:`success`,title:`Automation queued`})}catch(e){if(!p.current)return;C.add({type:`error`,title:`Failed to queue automation`,description:e instanceof Error?e.message:`Try again in a moment.`})}},[]),v=(0,A.useCallback)(async e=>{let t=e.status===`active`?`paused`:`active`;try{let n=await s().automations.update({automationId:e.id,status:t});p.current&&a(n)}catch(e){if(!p.current)return;C.add({type:`error`,title:`Failed to update automation`,description:e instanceof Error?e.message:`Try again in a moment.`})}},[]),ie=(0,A.useCallback)(async e=>{try{let t=await s().automations.delete({automationId:e});p.current&&a(t)}catch(e){if(!p.current)return;C.add({type:`error`,title:`Failed to delete automation`,description:e instanceof Error?e.message:`Try again in a moment.`})}},[]),ae=`mx-auto w-full max-w-3xl px-4`;return(0,M.jsxs)(ce,{className:`h-dvh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground`,children:[(0,M.jsx)(`div`,{className:`relative isolate flex min-h-0 min-w-0 flex-1 overflow-hidden`,children:(0,M.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-background [contain:paint]`,children:[o?(0,M.jsx)(`div`,{className:`drag-region flex h-[52px] shrink-0 items-center`}):(0,M.jsx)(`header`,{className:`flex h-12 shrink-0 items-center`,children:(0,M.jsx)(`div`,{className:d(ae,`flex h-full items-center`)})}),(0,M.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden`,children:(0,M.jsx)(Pe,{automations:i.automations,loading:c,loadError:te,filter:n,columnClass:ae,onFilterChange:h,onRefresh:()=>void m(),onCreate:()=>f(!0),onRunNow:e=>void _(e),onToggleStatus:e=>void v(e),onDelete:e=>void ie(e)})})]})}),(0,M.jsx)(Re,{open:re,onOpenChange:f,onCreate:g,isCreating:u})]})}function Ge(){let e=(0,Te.c)(2),t=T.useSearch(),n;return e[0]===t?n=e[1]:(n=(0,M.jsx)(P,{search:t}),e[0]=t,e[1]=n),n}export{Ge as component};
|
|
2
|
+
//# sourceMappingURL=automations-D6SQKJ83.js.map
|