@jingyi0605/codingns 0.7.2 → 0.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/public/assets/{AdaptiveButlerPage-174Mg-9X.js → AdaptiveButlerPage-CgBX49t-.js} +3 -3
- package/dist/public/assets/{App-BRupl2Ul.js → App-tXOqoHNl.js} +3 -3
- package/dist/public/assets/{BootstrapPage-BKzDRWtn.js → BootstrapPage-DoRMz87R.js} +1 -1
- package/dist/public/assets/ConversationPage-DXR6Hp4O.js +9 -0
- package/dist/public/assets/{DesktopDetachPreviewPage-DtHzSQOX.js → DesktopDetachPreviewPage-Cyk-ZYCk.js} +1 -1
- package/dist/public/assets/{DesktopWindowPage-ppc3h5sO.js → DesktopWindowPage-DNVNK3hs.js} +1 -1
- package/dist/public/assets/{FileContextPanel-h0kvRbSR.js → FileContextPanel-xGTYDclT.js} +1 -1
- package/dist/public/assets/{GitSidebar-TlaPNhxG.js → GitSidebar-Cr3Z9OUI.js} +1 -1
- package/dist/public/assets/{MobileCreateSessionSheet-Bp4xOKdt.js → MobileCreateSessionSheet-DMW0V6GJ.js} +1 -1
- package/dist/public/assets/{MobileTopHeaderFrame-BawK1vUE.js → MobileTopHeaderFrame-CkdnZ_MU.js} +1 -1
- package/dist/public/assets/{MobileWorkspaceSwitcherHeader-CWPXAMoX.js → MobileWorkspaceSwitcherHeader-KIbqBYJN.js} +1 -1
- package/dist/public/assets/{RelayConnectEntryPage-B0-OBZXu.js → RelayConnectEntryPage-DIRBH3hw.js} +1 -1
- package/dist/public/assets/{ServerSettingsModal-P_pcDvyR.js → ServerSettingsModal-C-9RxdWP.js} +1 -1
- package/dist/public/assets/{SessionIndexPage-r8AZ0pJv.js → SessionIndexPage-bRlIydRA.js} +1 -1
- package/dist/public/assets/{SettingsPage-B-uNuML1.js → SettingsPage-CMEt4ua9.js} +1 -1
- package/dist/public/assets/{TerminalManagerPanel-Bkgr9ZNV.js → TerminalManagerPanel-2bi9wVhT.js} +1 -1
- package/dist/public/assets/{TerminalPage-BpFpA3My.js → TerminalPage-DayZz2Tf.js} +1 -1
- package/dist/public/assets/{TerminalRuntimeFallbackModal-D_BUt6HD.js → TerminalRuntimeFallbackModal-DgwYcp-Y.js} +1 -1
- package/dist/public/assets/{ToolFilesPage-BE9-iHL0.js → ToolFilesPage-YvnP_FXW.js} +1 -1
- package/dist/public/assets/{ToolGitPage-ChUkwKgK.js → ToolGitPage-GMcQKtV9.js} +1 -1
- package/dist/public/assets/{ToolProcessesPage-C4dli_mi.js → ToolProcessesPage-DFIQ7BCd.js} +1 -1
- package/dist/public/assets/{ToolsHomePage-ZmcEotg4.js → ToolsHomePage-CSilFzXR.js} +1 -1
- package/dist/public/assets/{WorkbenchLandingPage-DZzbQZHt.js → WorkbenchLandingPage-1VtToSz9.js} +1 -1
- package/dist/public/assets/WorkbenchLayout-DScHaza9.js +244 -0
- package/dist/public/assets/{WorkbenchModal-CAj_TqWW.js → WorkbenchModal-BWXYSXmC.js} +1 -1
- package/dist/public/assets/WorkbenchShellRoute-DN6LdrqC.js +1 -0
- package/dist/public/assets/{WorkspaceDebugDetailPage-qku5AzZQ.js → WorkspaceDebugDetailPage-Ux8_Q7la.js} +1 -1
- package/dist/public/assets/{WorkspaceDetailPage-BtrSsZVP.js → WorkspaceDetailPage-B402p99m.js} +1 -1
- package/dist/public/assets/{WorkspaceHomePage-BhekFDSu.js → WorkspaceHomePage-D2pob6HI.js} +1 -1
- package/dist/public/assets/{client-runtime-manager-CgogHxt0.js → client-runtime-manager-C5D76ewj.js} +1 -1
- package/dist/public/assets/{file-tree-icon-CLfk31E7.js → file-tree-icon-lfU9Ag77.js} +1 -1
- package/dist/public/assets/index-CFYXCsyx.css +1 -0
- package/dist/public/assets/{index-DvkfRpBe.js → index-NGxWr8Ix.js} +3 -3
- package/dist/public/assets/{login-direct-candidate-resolver-DvJnjQCi.js → login-direct-candidate-resolver-wXSaB0i7.js} +1 -1
- package/dist/public/assets/{model-switch-api-Dps4yN2t.js → model-switch-api-CPtou49j.js} +1 -1
- package/dist/public/assets/{preferences-service-ohVuseA-.js → preferences-service-CdaK7zA8.js} +1 -1
- package/dist/public/assets/{realtime-client-CIci6rCd.js → realtime-client-BjQazYsK.js} +1 -1
- package/dist/public/assets/{relay-entry-WiotM2TL.js → relay-entry-BwE5nw0l.js} +1 -1
- package/dist/public/assets/{terminal-runtime-meta-C3Mr0zW5.js → terminal-runtime-meta-C-Lbyx2i.js} +1 -1
- package/dist/public/assets/{useRegisteredDebugTemplates-DVQBPV-V.js → useRegisteredDebugTemplates-BM7-c-gx.js} +1 -1
- package/dist/public/index.html +2 -2
- package/dist/server/config/env.js +36 -29
- package/dist/server/config/env.js.map +1 -1
- package/dist/server/modules/channels/wechat-claw-client.d.ts +51 -0
- package/dist/server/modules/channels/wechat-claw-client.js +245 -0
- package/dist/server/modules/channels/wechat-claw-client.js.map +1 -0
- package/dist/server/modules/sessions/session-history-service.d.ts +3 -1
- package/dist/server/modules/sessions/session-history-service.js +55 -2
- package/dist/server/modules/sessions/session-history-service.js.map +1 -1
- package/dist/server/modules/sessions/session-provider-error-mapper.js +2 -2
- package/dist/server/modules/sessions/session-provider-error-mapper.js.map +1 -1
- package/dist/server/server/release-manifest-sync.d.ts +7 -0
- package/dist/server/server/release-manifest-sync.js +96 -0
- package/dist/server/server/release-manifest-sync.js.map +1 -0
- package/dist/server/server/start-host.js +2 -0
- package/dist/server/server/start-host.js.map +1 -1
- package/dist/server/ws/ws-server.js +1 -1
- package/dist/server/ws/ws-server.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/package.json +1 -1
- package/package.json +3 -2
- package/scripts/postinstall.mjs +157 -30
- package/dist/public/assets/ConversationPage-BLQXBsBc.js +0 -6
- package/dist/public/assets/WorkbenchLayout-Cht6Un5X.js +0 -244
- package/dist/public/assets/WorkbenchShellRoute-DzbO05cD.js +0 -1
- package/dist/public/assets/index-CkkzIvxs.css +0 -1
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/window-BVUB8gMK.js","assets/event-DvH9tcej.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
var Wr=Object.defineProperty;var qr=(e,t,n)=>t in e?Wr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var ke=(e,t,n)=>qr(e,typeof t!="symbol"?t+"":t,n);import{t as i,b as a,u as Ur,E as $r,j as r,m as is,A as Vr,_ as Us}from"./index-DvkfRpBe.js";import{D as Jt,W as Gr}from"./WorkbenchModal-CAj_TqWW.js";import{l as Xr,m as Yr,n as zr,o as Qt,p as Ct,q as Qr,s as Nn,t as Kr,v as es,f as pt,h as Yt,a as At,M as Zr,w as Ln,x as js,y as _n,z as Dn,A as Jr,S as eo,B as to,C as so,D as no,E as ro,F as oo,G as io,H as Ms,I as $s,J as ao,K as lo,L as co,N as uo,O as On,u as ho,e as As,P as mo,Q as po,R as fo,T as go,U as vo,i as bo,j as wo,V as So}from"./model-switch-api-Dps4yN2t.js";import{u as bt,Q as Vs,R as Ut,S as Gs,T as Io,U as Mo,V as as,X as Xs,Y as xo,f as Ys,Z as it,c as $e,_ as Po,$ as yo,a0 as Ro,a1 as Co,a2 as ko,a3 as To,a4 as Eo,I as jo,i as Hn,b as zs,a5 as Pt,a6 as Qs,a7 as Fn,a8 as Ao,a9 as Ks,aa as xs,ab as $t,ac as ge,w as No,ad as Lo,ae as _o,af as Bn,r as Wn,ag as ts,M as ss,K as Ns,ah as zt,ai as Ls,aj as Ps,ak as Do,O as ns,al as Oo,am as Zs,H as Ho,an as Fo,F as Bo,ao as Wo,ap as qn,aq as ft,ar as qo,as as ys,at as _s,n as Tt,au as Uo,av as $o,aw as Vo,ax as Go,o as Xo,C as wt,ay as Un,az as $n,aA as Vn,aB as Gn,D as Xn,g as Lt,aC as Yn,P as zn,aD as Yo,aE as Js,aF as zo,aG as Qo,aH as Ko,aI as Zo,L as Jo,J as ei}from"./WorkbenchLayout-Cht6Un5X.js";import{f as nt,u as lt,e as St,g as vt,h as Ds,c as ti}from"./App-BRupl2Ul.js";import{R as si,P as Qn,C as Os}from"./realtime-client-CIci6rCd.js";import{FileContextPanel as Kn}from"./FileContextPanel-h0kvRbSR.js";import{GitSidebar as Zn}from"./GitSidebar-TlaPNhxG.js";import{TerminalManagerPanel as Jn}from"./TerminalManagerPanel-Bkgr9ZNV.js";import{TerminalPage as ni}from"./TerminalPage-BpFpA3My.js";import{f as er,a as rs,M as tr}from"./MobileWorkspaceSwitcherHeader-CWPXAMoX.js";import{w as Et,r as ls,a as en,b as tn}from"./styles-JKFlsYFv.js";import"./window-BVUB8gMK.js";import"./event-DvH9tcej.js";import"./relay-entry-WiotM2TL.js";import"./file-tree-icon-CLfk31E7.js";import"./terminal-runtime-meta-C3Mr0zW5.js";import"./TerminalRuntimeFallbackModal-D_BUt6HD.js";import"./MobileTopHeaderFrame-BawK1vUE.js";function Hs({connectionState:e,onReconnect:t}){const{showToast:n,dismissToast:s}=nt(),o=Xr(),l=o?i(Yr(o.kind)):null;return a.useEffect(()=>{if(e==="connected"||e==="closed"){s("conversation-connection-state");return}if(e==="reconnect_failed"){n({id:"conversation-connection-state",title:i("conversation.connectionReconnectFailed"),description:l?i("conversation.reconnectFailedExplainWithRoute",{route:l}):i("conversation.reconnectFailedExplain"),tone:"warning",durationMs:null,action:{label:i("conversation.reconnectButton"),onClick:t}});return}n({id:"conversation-connection-state",title:i("conversation.connectionReconnecting"),description:l?i("conversation.reconnectExplainWithRoute",{route:l}):i("conversation.reconnectExplain"),tone:"info",durationMs:3200})},[l,e,s,t,n]),null}const ri=48;function oi(e){if(typeof document>"u")return!1;const t=document.createElement("textarea");t.value=e,t.setAttribute("readonly","true"),t.style.position="fixed",t.style.opacity="0",t.style.pointerEvents="none",document.body.appendChild(t),t.focus(),t.select();try{return document.execCommand("copy")}catch{return!1}finally{document.body.removeChild(t)}}async function ii(e,t){var n;if(!(t.isDesktop&&(await t.bridge.writeClipboardText(e)).ok)){if(typeof navigator<"u"&&((n=navigator.clipboard)!=null&&n.writeText))try{await navigator.clipboard.writeText(e);return}catch{}if(!oi(e))throw new Error(i("conversation.copyContentFailed"))}}function sn(e,t,n){return Math.min(Math.max(e,t),n)}function cs(e,t=Qt){return e&&t.includes(e)?e:t[0]??"codex"}function ai(e){return Qt.includes(e)}function li(e,t){const n=e.flatMap(s=>ai(s)?[s]:[]);return n.length>0?n:t?[t]:[]}function Rs(e){return e?e.nodeType===Node.ELEMENT_NODE?e:e.parentElement:null}function nn(e){var n,s;const t=Rs(e);return((s=(n=t==null?void 0:t.closest("[data-message-id]"))==null?void 0:n.getAttribute("data-message-id"))==null?void 0:s.trim())||null}function ci(e,t){return[t.trim()||i("conversation.selectionActionDefaultPrompt"),"",i("conversation.selectionActionQuotedLabel"),"```text",e.trim(),"```"].join(`
|
|
3
|
-
`)}function us(e){if(typeof window>"u")return null;const t=window.getSelection();if(!t||t.rangeCount===0||t.isCollapsed)return null;const n=t.getRangeAt(0),s=Rs(n.startContainer),o=Rs(n.endContainer);if(!s||!o||!e.contains(s)||!e.contains(o))return null;const l=t.toString().trim();if(!l)return null;const c=n.getBoundingClientRect();if(!c.width&&!c.height)return null;const u=nn(n.startContainer),d=nn(n.endContainer);return{text:l,sourceMessageId:u&&u===d?u:null,rect:{left:c.left,top:c.top,right:c.right,bottom:c.bottom,width:c.width,height:c.height}}}function ui({containerRef:e,session:t,currentCapabilities:n}){const s=lt(),o=St(),{showToast:l}=nt(),{shellMode:c,requestNavigationRefresh:u,selectWorkspace:d,upsertNavigationSession:p}=bt(),S=Ur(h=>h.profile.providers),M=a.useMemo(()=>Vs(t==null?void 0:t.providerConfigMode,t==null?void 0:t.providerPresetId),[t==null?void 0:t.providerConfigMode,t==null?void 0:t.providerPresetId]),[L,w]=a.useState(null),[b,v]=a.useState(null),[A,x]=a.useState(!1),{visibleProviders:_}=zr(Qt,A),[T,j]=a.useState(""),[N,R]=a.useState(!1),[C,m]=a.useState(cs(t==null?void 0:t.provider)),[f,D]=a.useState(Ut),[G,Y]=a.useState(M.providerConfigMode),[K,ee]=a.useState(M.providerPresetId),[H,ve]=a.useState({}),[F,g]=a.useState(!1),[$,W]=a.useState(null),[Q,ae]=a.useState({}),[de,ce]=a.useState(!1),[pe,k]=a.useState(!1),[V,z]=a.useState(!1),[q,le]=a.useState(0),[B,ne]=a.useState(null),[Ie,je]=a.useState(()=>({width:typeof window>"u"?0:window.innerWidth,height:typeof window>"u"?0:window.innerHeight})),O=a.useRef(!1),U=a.useRef(!1),he=a.useRef(!1),Me=a.useRef(null),fe=a.useRef(null),Ce=c==="mobile"||o.isMobile,De=a.useMemo(()=>h=>{var X,re;return($r(h)?(re=(X=S[h])==null?void 0:X.defaultModel)==null?void 0:re.trim():null)||Ut},[S]),J=a.useMemo(()=>Vs(G,K),[G,K]),te=a.useMemo(()=>li(_,C),[C,_]),Se=a.useMemo(()=>Gs(C),[C]),P=a.useMemo(()=>Se?H[Se]??null:null,[H,Se]),E=a.useMemo(()=>Io(P),[P]),be=a.useMemo(()=>Mo(P),[P]),Te=J.providerConfigMode==="cc-switch-preset"?J.providerPresetId??as:as,xe=a.useMemo(()=>be.find(h=>h.value===Te)??be[0]??null,[be,Te]),We=a.useMemo(()=>C===(t==null?void 0:t.provider)&&J.providerConfigMode===M.providerConfigMode&&J.providerPresetId===M.providerPresetId&&n?n:$??Ct(C),[n,$,C,J.providerConfigMode,J.providerPresetId,t==null?void 0:t.provider,M.providerConfigMode,M.providerPresetId]),oe=a.useMemo(()=>{var X;const h=Ct(C).modelOptions??[];return(X=We.modelOptions)!=null&&X.length?We.modelOptions:h},[We.modelOptions,C]),Ae=a.useMemo(()=>oe.map(h=>({value:h.id,label:Xs(h)?i("conversation.modelUseCliDefault"):h.name})),[oe]),Z=a.useMemo(()=>oe.find(h=>h.id===f)??oe[0]??null,[oe,f]),ze=a.useMemo(()=>{const h=Z?Xs(Z)?i("conversation.modelUseCliDefault"):Z.name:i("conversation.modelUseCliDefault");return E?`${(xe==null?void 0:xe.label)??i("conversation.deploymentDefaultPreset")} · ${h}`:h},[Z,xe,E]),ue=a.useCallback(h=>{if(m(h),D(De(h)),t&&h===t.provider&&Gs(h)){Y(M.providerConfigMode),ee(M.providerPresetId);return}Y("global-default"),ee(null)},[De,t,M.providerConfigMode,M.providerPresetId]),Ne=a.useMemo(()=>{const h=Q[C]??(C===(t==null?void 0:t.provider)&&J.providerConfigMode===M.providerConfigMode&&J.providerPresetId===M.providerPresetId?n:$);return!h||h.canStartSession!==!1?null:h.limitations[0]??i("conversation.capabilityDenied")},[n,$,Q,C,J.providerConfigMode,J.providerPresetId,t==null?void 0:t.provider,M.providerConfigMode,M.providerPresetId]),Oe=a.useMemo(()=>{var Ee;if(!L||typeof window>"u")return null;const h=(Ee=e.current)==null?void 0:Ee.getBoundingClientRect(),X=h?Math.max(80,h.left+80):96,re=h?Math.min(Ie.width-80,h.right-80):Ie.width-96,me=h?Math.max(12,h.top+12):12,Le=h?Math.max(me,h.bottom-48):Math.max(12,Ie.height-48),He=L.rect.left+L.rect.width/2;return{left:sn(He,X,Math.max(X,re)),top:sn(L.rect.top-48,me,Le)}},[e,L,Ie.height,Ie.width]);a.useEffect(()=>{if(typeof window>"u")return;const h=()=>{je({width:window.innerWidth,height:window.innerHeight})};return h(),window.addEventListener("resize",h),()=>{window.removeEventListener("resize",h)}},[]),a.useEffect(()=>{if(!t){fe.current!==null&&typeof window<"u"&&(window.clearTimeout(fe.current),fe.current=null),Me.current=null,he.current=!1,w(null),v(null),x(!1);return}const h=cs(t.provider);ue(h)},[ue,t]),a.useEffect(()=>{if(!A){g(!1);return}if(!Se){g(!1);return}let h=!1;return g(!0),Qr().then(X=>{h||ve(Object.fromEntries(X.items.map(re=>[re.app,re])))}).catch(()=>{h||ve({})}).finally(()=>{h||g(!1)}),()=>{h=!0}},[A,Se]),a.useEffect(()=>{!Se||J.providerConfigMode!=="cc-switch-preset"||!J.providerPresetId||F||!P||P.options.some(h=>h.id===J.providerPresetId)||(Y("global-default"),ee(null))},[F,P,Se,J.providerConfigMode,J.providerPresetId]),a.useEffect(()=>{if(!t||!e.current||typeof window>"u"){fe.current!==null&&(window.clearTimeout(fe.current),fe.current=null),Me.current=null,he.current=!1,w(null),v(null);return}const h=e.current,X=Re=>{O.current||(Me.current=Re,w(Re),Re||x(!1))},re=()=>{fe.current!==null&&(window.clearTimeout(fe.current),fe.current=null)},me=(Re,ot)=>{if(Me.current=Re,re(),ot!=null&&ot.immediate){X(Re);return}fe.current=window.setTimeout(()=>{fe.current=null,X(Me.current)},ri)},Le=()=>{const Re=us(h);if(he.current){Me.current=Re;return}me(Re)},He=()=>{const Re=us(h);if(he.current){Me.current=Re;return}me(Re,{immediate:!0})},Ee=Re=>{!(Re.target instanceof Node)||!h.contains(Re.target)||(he.current=!0,re())},_e=()=>{he.current&&(he.current=!1,me(us(h)))};return document.addEventListener("pointerdown",Ee),document.addEventListener("selectionchange",Le),window.addEventListener("pointerup",_e),window.addEventListener("pointercancel",_e),window.addEventListener("mouseup",_e),window.addEventListener("touchend",_e),window.addEventListener("resize",He),window.addEventListener("scroll",He,!0),()=>{re(),document.removeEventListener("pointerdown",Ee),document.removeEventListener("selectionchange",Le),window.removeEventListener("pointerup",_e),window.removeEventListener("pointercancel",_e),window.removeEventListener("mouseup",_e),window.removeEventListener("touchend",_e),window.removeEventListener("resize",He),window.removeEventListener("scroll",He,!0)}},[e,t]),a.useEffect(()=>{(!A||!(b!=null&&b.sourceMessageId))&&R(!1)},[A,b==null?void 0:b.sourceMessageId]),a.useEffect(()=>{if(!A||!t)return;let h=!1;return C===t.provider&&J.providerConfigMode===M.providerConfigMode&&J.providerPresetId===M.providerPresetId&&n?(ce(!1),W(n),()=>{h=!0}):(ce(!0),W(Ct(C)),Nn(C,t.workspaceId,Se?{providerConfigMode:J.providerConfigMode,providerPresetId:J.providerPresetId}:void 0).then(X=>{h||W(X)}).catch(()=>{h||W(Ct(C))}).finally(()=>{h||ce(!1)}),()=>{h=!0})},[A,n,Se,C,J.providerConfigMode,J.providerPresetId,t,M.providerConfigMode,M.providerPresetId]),a.useEffect(()=>{if(!A||!t){ae({});return}let h=!1;return Kr(te,t.workspaceId).then(X=>{h||ae(X)}),()=>{h=!0}},[A,t,te]),a.useEffect(()=>{if(!A||!t)return;const h=te.filter(re=>{const me=Q[re];return!me||me.canStartSession!==!1});if(h.length===0||h.includes(C))return;const X=h[0];ue(X)},[A,ue,Q,C,t,te]),a.useEffect(()=>{var X;const h=De(C);if(!oe.some(re=>re.id===f)){if(oe.some(re=>re.id===h)){D(h);return}D(((X=oe[0])==null?void 0:X.id)??Ut)}},[oe,De,f,C]),a.useEffect(()=>{if(!A){O.current=!1;return}O.current=!0},[A]),a.useEffect(()=>{if(typeof window>"u")return;const h=X=>{X.key==="Escape"&&(x(!1),v(null),w(null),O.current=!1)};return window.addEventListener("keydown",h),()=>{window.removeEventListener("keydown",h)}},[]);async function ct(){var X,re;if(!L)return;const h=L.text;w(null),typeof window<"u"&&((re=(X=window.getSelection())==null?void 0:X.removeAllRanges)==null||re.call(X));try{await ii(h,o),l({title:i("conversation.copyContentSuccess"),tone:"success"})}catch(me){l({title:me instanceof Error?me.message:i("conversation.copyContentFailed"),tone:"error"})}}function tt(){L&&(ne({title:"",content:L.text}),le(h=>h+1),z(!0),x(!1),v(null),w(null),O.current=!1)}function rt(){var re,me;if(!L||!t)return;const h=L,X=cs(t.provider,te.length>0?te:Qt);ue(X),j(""),R(!1),v(h),w(null),x(!0),typeof window<"u"&&((me=(re=window.getSelection())==null?void 0:re.removeAllRanges)==null||me.call(re))}function ut(h){h.preventDefault(),O.current=!0}function Qe(){U.current=!0,rt()}function Ke(){if(U.current){U.current=!1;return}rt()}async function dt(){var h,X,re,me;if(!(!b||!t)){if(Ne){l({title:Ne,tone:"error"});return}k(!0);try{const Le=ci(b.text,T),He=(Z==null?void 0:Z.id)===Ut?null:(Z==null?void 0:Z.id)??null;let Ee=null;if(N&&b.sourceMessageId)Ee=await Ln(t.sessionId,{sourceType:"message",sourceMessageId:b.sourceMessageId,strategy:"auto",targetProvider:C,providerConfigMode:J.providerConfigMode,providerPresetId:J.providerPresetId,sessionKind:"annotation",annotationSourceMessageId:b.sourceMessageId,annotationSourceText:b.text}),p(Ee),await js(Ee.sessionId,{content:Le,clientRequestId:((X=(h=globalThis.crypto)==null?void 0:h.randomUUID)==null?void 0:X.call(h))??`selection-action-${Date.now()}-${Math.random().toString(16).slice(2)}`,model:He,permissionMode:it(),providerConfigMode:J.providerConfigMode,providerPresetId:J.providerPresetId});else{const _e=await _n({workspaceId:t.workspaceId,provider:C,content:Le,clientRequestId:((me=(re=globalThis.crypto)==null?void 0:re.randomUUID)==null?void 0:me.call(re))??`selection-action-${Date.now()}-${Math.random().toString(16).slice(2)}`,model:He,permissionMode:it(),providerConfigMode:J.providerConfigMode,providerPresetId:J.providerPresetId,parentSessionId:t.sessionId,sessionKind:"annotation",annotationSourceMessageId:b.sourceMessageId??null,annotationSourceText:b.text});Ee=_e.session??await Dn(_e.sessionId)}p(Ee),u(),d(Ee.workspaceId),s($e(Ee.workspaceId,Ee.sessionId)),x(!1),v(null),w(null),O.current=!1}catch(Le){l({title:Le instanceof Error?Le.message:i("conversation.selectionActionFailed"),tone:"error"})}finally{k(!1)}}}function Pe(h=!1){x(!1),v(null),O.current=!1,h&&w(null)}const st=!!(!A&&L&&Oe),Ze=!!(A&&b),Ue=r.jsxs(es,{children:[r.jsx("button",{type:"button",className:"secondary-button",onClick:()=>Pe(!1),children:i("common.cancel")}),r.jsx("button",{type:"button",className:"primary-button",disabled:pe||!!Ne||te.length===0,onClick:()=>void dt(),children:pe?i("conversation.sendingState"):i("conversation.selectionActionSubmit")})]}),ye=b?r.jsxs(r.Fragment,{children:[r.jsx(pt,{className:"conversation-selection-preview-section",heading:i("conversation.selectionActionPreviewLabel"),children:r.jsx("div",{className:"conversation-selection-action-dialog-quote",children:b.text})}),r.jsxs(pt,{className:"conversation-selection-request-section",children:[r.jsx(Yt,{className:"conversation-selection-field conversation-selection-prompt-field",label:i("conversation.selectionActionPromptLabel"),children:r.jsx("textarea",{value:T,rows:4,placeholder:i("conversation.selectionActionPromptPlaceholder"),onChange:h=>j(h.target.value)})}),r.jsxs("div",{className:"conversation-selection-context-block",children:[r.jsxs("label",{className:"conversation-selection-checkbox",children:[r.jsx("input",{type:"checkbox",checked:N,disabled:!b.sourceMessageId,onChange:h=>R(h.target.checked)}),r.jsx("span",{children:i("conversation.selectionActionIncludeContext")})]}),b.sourceMessageId?null:r.jsx("p",{className:"conversation-selection-hint",children:i("conversation.selectionActionContextUnavailable")}),Ne?r.jsx("p",{className:"conversation-selection-hint",children:Ne}):null]})]}),r.jsx(pt,{className:"conversation-selection-target-section",heading:i("conversation.selectionActionTargetLabel"),children:r.jsxs("div",{className:"conversation-selection-grid",children:[r.jsx(Yt,{className:"conversation-selection-field",label:i("conversation.forkTargetProviderLabel"),children:r.jsx("select",{value:C,onChange:h=>{ue(h.target.value)},children:te.map(h=>{var X;return r.jsx("option",{value:h,disabled:((X=Q[h])==null?void 0:X.canStartSession)===!1,children:At(h,"full")},h)})})}),r.jsx(Yt,{className:"conversation-selection-field",label:i("conversation.forkTargetModelLabel"),children:Se?r.jsx("div",{className:"conversation-selection-deployment-select",children:r.jsx(xo,{ariaLabel:i("conversation.forkTargetModelLabel"),triggerLabel:ze,presetOptions:be,selectedPresetValue:Te,selectedPresetSummary:(xe==null?void 0:xe.summary)??null,onSelectPreset:h=>{if(h===as){Y("global-default"),ee(null);return}Y("cc-switch-preset"),ee(h)},modelOptions:Ae,selectedModelValue:f,onSelectModel:D,loadingPresets:F,loadingModels:de,modelColumnDisabled:de||!!Ne,showPresetColumn:E,modelEmptyText:i("conversation.deploymentModelEmpty")})}):r.jsx("select",{value:f,disabled:de||!!Ne,onChange:h=>D(h.target.value),children:oe.map(h=>r.jsx("option",{value:h.id,children:h.name},h.id))})})]})})]}):null;return!t||!st&&!Ze||typeof document>"u"?r.jsx(Ys,{open:V,preferredWorkspaceId:(t==null?void 0:t.workspaceId)??null,preferredSessionId:(t==null?void 0:t.sessionId)??null,creationRequestId:q,initialDraft:B,onClose:()=>z(!1)}):r.jsxs(r.Fragment,{children:[vt.createPortal(st?r.jsxs("div",{className:"conversation-selection-toolbar",style:Oe??void 0,onMouseDown:h=>h.preventDefault(),children:[r.jsx("button",{type:"button",className:"conversation-selection-action",onClick:()=>void ct(),children:i("conversation.copyAction")}),r.jsx("button",{type:"button",className:"conversation-selection-action",onClick:tt,children:i("conversation.selectionTodoAction")}),r.jsx("button",{type:"button",className:"conversation-selection-action is-primary",onPointerDown:ut,onMouseDown:ut,onPointerUp:Qe,onClick:Ke,children:i("conversation.selectionActionButton")})]}):null,document.body),Ce?r.jsx(Zr,{open:Ze,title:i("conversation.selectionActionButton"),height:"auto",kind:"form",showHandle:!0,showCancelButton:!1,cardClassName:"conversation-selection-action-dialog",bodyClassName:"conversation-selection-action-dialog-body",footer:Ue,onClose:()=>Pe(!1),children:ye}):r.jsx(Jt,{open:Ze,title:i("conversation.selectionActionButton"),size:"compact",layout:"form",className:"conversation-selection-action-dialog",bodyClassName:"conversation-selection-action-dialog-body",footer:Ue,onClose:()=>Pe(!1),children:ye}),r.jsx(Ys,{open:V,preferredWorkspaceId:t.workspaceId,preferredSessionId:t.sessionId,creationRequestId:q,initialDraft:B,onClose:()=>z(!1)})]})}const yt=5,sr=["codex","claude-code"];function nr(){return[{id:"recommended",label:i("conversation.butlerCompletionTemplateRecommendedLabel"),description:i("conversation.butlerCompletionTemplateRecommendedDescription"),value:i("conversation.butlerCompletionTemplateRecommendedValue")},{id:"spec-finish",label:i("conversation.butlerCompletionTemplateSpecLabel"),description:i("conversation.butlerCompletionTemplateSpecDescription"),value:i("conversation.butlerCompletionTemplateSpecValue")},{id:"bugfix",label:i("conversation.butlerCompletionTemplateBugfixLabel"),description:i("conversation.butlerCompletionTemplateBugfixDescription"),value:i("conversation.butlerCompletionTemplateBugfixValue")}]}function ds(){var e;return((e=nr()[0])==null?void 0:e.value)??""}function hs(e,t=sr){return e==="claude-code"&&t.includes("claude-code")?"claude-code":t.includes("codex")?"codex":t[0]??null}function rr(e){return e==="codex"||e==="claude-code"}function di(e){return e.flatMap(t=>!t.enabled||!rr(t.provider)?[]:[t.provider])}function or({session:e,showTrigger:t=!0,openRequestKey:n=0}){const{showToast:s}=nt(),{requestNavigationRefresh:o}=bt(),l=a.useId(),c=a.useId(),u=a.useId(),d=a.useId(),[p,S]=a.useState(!1),[M,L]=a.useState(!1),[w,b]=a.useState(null),[v,A]=a.useState(null),[x,_]=a.useState(null),[T,j]=a.useState(hs(e==null?void 0:e.provider)),[N,R]=a.useState(""),[C,m]=a.useState(()=>ds()),[f,D]=a.useState(yt),[G,Y]=a.useState(!1),[K,ee]=a.useState(0),{items:H}=Jr(!!(e!=null&&e.sessionId)),ve=nr(),F=a.useMemo(()=>H?di(H):sr,[H]),g=H!==null&&F.length===0,$=a.useMemo(()=>{var B;return((B=e==null?void 0:e.title)==null?void 0:B.trim())||null},[e==null?void 0:e.title]),W=a.useMemo(()=>w?{workspaceId:w.workspaceId,project:w.project,session:w.session}:null,[w]),Q=(w==null?void 0:w.latestFollowUpTask)??null,ae=(w==null?void 0:w.latestVerificationRun)??null,de=Q&&(Q.status==="active"||Q.status==="waiting_user")?Q:null,ce=ae&&(ae.status==="queued"||ae.status==="running")?ae:null;a.useEffect(()=>{S(!1),Y(!1),A(null),b(null),R(""),j(hs(e==null?void 0:e.provider)),m(ds()),D(yt)},[e==null?void 0:e.sessionId]),a.useEffect(()=>{const B=hs(e==null?void 0:e.provider,F);(!T||!F.includes(T))&&j(B)},[F,T,e==null?void 0:e.provider]),a.useEffect(()=>{if(!(e!=null&&e.sessionId)){L(!1);return}let B=!1;return L(!0),A(null),Po(e.sessionId).then(ne=>{B||b(ne.context)}).catch(ne=>{B||(b(null),A(ne instanceof Error?ne.message:i("conversation.butlerActionLoadFailed")))}).finally(()=>{B||L(!1)}),()=>{B=!0}},[K,e==null?void 0:e.sessionId]);function pe(){M||ee(B=>B+1)}function k(){!w&&!M&&pe()}if(a.useEffect(()=>{t||n<=0||(S(!0),k())},[M,n,t,w]),!(e!=null&&e.sessionId))return null;async function V(){if(!W){k();return}if(!T)return;const B=N.trim(),ne=C.trim();if(!B){s({title:i("conversation.butlerFollowUpObjectiveRequired"),tone:"warning"});return}if(!ne){s({title:i("conversation.butlerFollowUpCompletionCriteriaRequired"),tone:"warning"});return}_("follow-up");try{const Ie=await To({projectId:W.project.id,butlerSessionId:W.session.id,providerId:T,objective:B,completionCriteria:ne,maxAutoContinueCount:f});b(je=>je&&{...je,latestFollowUpTask:Ie.task}),o(),s({title:i("conversation.butlerFollowUpStarted"),description:i("conversation.butlerFollowUpStartedDescription",{projectName:W.project.name}),tone:"success"}),R(""),m(ds()),D(yt),S(!1)}catch(Ie){s({title:i("conversation.butlerFollowUpFailed"),description:Ie instanceof Error?Ie.message:void 0,tone:"error"})}finally{_(null)}}async function z(){if(Q){_("follow-up");try{const B=await Ro(Q.id);b(ne=>ne&&{...ne,latestFollowUpTask:B.task}),o(),s({title:i("conversation.butlerFollowUpStopped"),description:i("conversation.butlerFollowUpStoppedDescription"),tone:"success"}),S(!1)}catch(B){s({title:i("conversation.butlerFollowUpStopFailed"),description:B instanceof Error?B.message:void 0,tone:"error"})}finally{_(null)}}}async function q(){if(!W){k();return}_("verification");try{const B=await ko({projectId:W.project.id,butlerSessionId:W.session.id,verificationType:"browser",targetRef:$||W.session.title||W.project.name});b(ne=>ne&&{...ne,latestVerificationRun:B.result.run}),o(),s({title:i("conversation.butlerVerificationStarted"),description:i("conversation.butlerVerificationStartedDescription",{projectName:W.project.name}),tone:"success"}),S(!1)}catch(B){s({title:i("conversation.butlerVerificationFailed"),description:B instanceof Error?B.message:void 0,tone:"error"})}finally{_(null)}}async function le(){if(ae){_("verification");try{const B=await Co(ae.projectId,ae.id);b(ne=>ne&&{...ne,latestVerificationRun:B.run}),o(),s({title:i("conversation.butlerVerificationStopped"),description:i("conversation.butlerVerificationStoppedDescription"),tone:"success"}),S(!1)}catch(B){s({title:i("conversation.butlerVerificationStopFailed"),description:B instanceof Error?B.message:void 0,tone:"error"})}finally{_(null)}}}return r.jsxs(r.Fragment,{children:[t?r.jsxs("div",{className:"conversation-butler-entry",onMouseEnter:()=>{Y(!0),k()},onMouseLeave:()=>{Y(!1)},children:[r.jsx("button",{type:"button",className:"conversation-header-ai-button","aria-label":i("conversation.butlerActionButton"),title:i("conversation.butlerActionButton"),onFocus:()=>{Y(!0),k()},onBlur:()=>{Y(!1)},onClick:()=>{S(!0),k()},children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(yo,{})})}),G?r.jsxs("div",{className:"conversation-butler-analysis-popover",role:"status","aria-live":"polite",children:[r.jsx("strong",{children:i("conversation.butlerAnalysisTitle")}),M?r.jsx("p",{children:i("conversation.butlerActionLoading")}):v?r.jsx("p",{children:v}):Q?r.jsxs(r.Fragment,{children:[r.jsxs("p",{children:[i("conversation.butlerAnalysisObjectiveLabel"),":",Q.objective]}),r.jsxs("p",{children:[i("conversation.butlerAnalysisStatusLabel"),":",rn(Q.status)]}),r.jsxs("p",{children:[i("conversation.butlerAnalysisSummaryLabel"),":",Q.lastAutomationSummary||Q.waitingReason||i("conversation.butlerAnalysisEmpty")]}),Q.waitingReason?r.jsxs("p",{children:[i("conversation.butlerAnalysisWaitingReasonLabel"),":",Q.waitingReason]}):null]}):r.jsx("p",{children:i("conversation.butlerAnalysisEmpty")})]}):null]}):null,r.jsx(Gr,{open:p,title:i("conversation.butlerActionModalTitle"),description:i("conversation.butlerActionModalDescription"),className:"conversation-butler-modal-card",footer:!M&&!v&&W?r.jsxs(es,{children:[r.jsx("button",{type:"button",className:"secondary-button",disabled:x!==null,onClick:()=>{q()},children:i("conversation.butlerVerificationAction")}),r.jsx("button",{type:"button",className:"primary-button",disabled:x!==null||g||!T,onClick:()=>{V()},children:i("conversation.butlerFollowUpAction")})]}):void 0,onClose:()=>{x||S(!1)},children:r.jsxs("div",{className:"conversation-butler-modal",children:[M?r.jsx("p",{className:"conversation-butler-modal-hint",children:i("conversation.butlerActionLoading")}):null,!M&&v?r.jsx("p",{className:"conversation-butler-modal-error",children:v}):null,!M&&!v&&W?r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:"conversation-butler-target-grid",children:[r.jsxs("div",{className:"conversation-butler-target-card",children:[r.jsx("span",{children:i("conversation.butlerActionProjectLabel")}),r.jsx("strong",{children:W.project.name})]}),r.jsxs("div",{className:"conversation-butler-target-card",children:[r.jsx("span",{children:i("conversation.butlerActionSessionLabel")}),r.jsx("strong",{children:W.session.title||$||W.session.sessionId})]})]}),r.jsxs("div",{className:"conversation-butler-follow-up-grid",children:[r.jsxs("div",{className:"workbench-modal-field conversation-butler-modal-field",children:[r.jsxs("div",{className:"conversation-butler-field-heading",children:[r.jsx("label",{children:i("conversation.butlerFollowUpProviderLabel")}),r.jsx("small",{children:i("conversation.butlerFollowUpProviderHint")})]}),g?r.jsx("p",{className:"conversation-butler-modal-hint",children:i("conversation.butlerFollowUpProviderHint")}):r.jsx(eo,{workspaceId:W.workspaceId,providers:F,selectedProvider:T,disabled:x!==null,onSelect:B=>{rr(B)&&j(B)}})]}),r.jsxs("div",{className:"workbench-modal-field conversation-butler-modal-field conversation-butler-round-limit-field",children:[r.jsxs("div",{className:"conversation-butler-field-heading",children:[r.jsx("label",{htmlFor:d,children:i("conversation.butlerFollowUpRoundLimitLabel")}),r.jsx("small",{children:i("conversation.butlerFollowUpRoundLimitHint")})]}),r.jsx("input",{id:d,type:"number",min:1,max:20,value:f,disabled:x!==null,onChange:B=>{const ne=Number.parseInt(B.target.value,10);D(Number.isFinite(ne)?ne:yt)}})]})]}),r.jsxs("div",{className:"workbench-modal-field conversation-butler-modal-field",children:[r.jsx("label",{htmlFor:l,children:i("conversation.butlerFollowUpObjectiveLabel")}),r.jsx("textarea",{id:l,rows:3,value:N,placeholder:i("conversation.butlerFollowUpObjectivePlaceholder"),disabled:x!==null,onChange:B=>{R(B.target.value)}})]}),r.jsxs("div",{className:"workbench-modal-field conversation-butler-modal-field",children:[r.jsxs("div",{className:"conversation-butler-field-heading",children:[r.jsx("label",{htmlFor:c,children:i("conversation.butlerFollowUpCompletionCriteriaLabel")}),r.jsx("small",{id:u,children:i("conversation.butlerCompletionTemplateSectionHint")})]}),r.jsx("textarea",{id:c,rows:3,value:C,placeholder:i("conversation.butlerFollowUpCompletionCriteriaPlaceholder"),"aria-describedby":u,disabled:x!==null,onChange:B=>{m(B.target.value)}}),r.jsx("div",{className:"conversation-butler-preset-grid",role:"group","aria-label":i("conversation.butlerCompletionTemplateSectionLabel"),children:ve.map(B=>r.jsxs("button",{type:"button",className:"conversation-butler-preset-card","data-selected":C.trim()===B.value,"aria-pressed":C.trim()===B.value,disabled:x!==null,onClick:()=>{m(B.value)},children:[r.jsx("strong",{children:B.label}),r.jsx("span",{children:B.description})]},B.id))})]}),de||ce?r.jsxs("div",{className:"conversation-butler-meta-grid",children:[de?r.jsxs("div",{className:"conversation-butler-target-card conversation-butler-current-task-card",children:[r.jsx("span",{children:i("conversation.butlerCurrentFollowUpLabel")}),r.jsx("strong",{children:rn(de.status)}),r.jsx("small",{children:i("conversation.butlerCurrentFollowUpProgress",{current:de.autoContinueCount,max:de.maxAutoContinueCount??yt})}),r.jsx("button",{type:"button",className:"workbench-secondary-button",disabled:x!==null,onClick:()=>{z()},children:i("conversation.butlerStopFollowUpAction")})]}):null,ce?r.jsxs("div",{className:"conversation-butler-target-card conversation-butler-current-task-card",children:[r.jsx("span",{children:i("conversation.butlerCurrentVerificationLabel")}),r.jsx("strong",{children:hi(ce.status)}),r.jsx("small",{children:ce.targetRef||ce.verificationType}),r.jsx("button",{type:"button",className:"workbench-secondary-button",disabled:x!==null,onClick:()=>{le()},children:i("conversation.butlerStopVerificationAction")})]}):null]}):null]}):null]})})]})}function rn(e){switch(e){case"waiting_user":return i("shell.butlerAutomationStatusWaitingUser");case"completed":return i("shell.butlerAutomationStatusCompleted");case"failed":return i("shell.butlerAutomationStatusFailed");case"cancelled":return i("shell.butlerAutomationStatusCancelled");case"active":default:return i("shell.butlerAutomationStatusActive")}}function hi(e){switch(e){case"queued":case"running":return i("shell.butlerAutomationStatusActive");case"passed":case"skipped":return i("shell.butlerAutomationStatusCompleted");case"failed":return i("shell.butlerAutomationStatusFailed");case"cancelled":default:return i("shell.butlerAutomationStatusCancelled")}}const mi=340;function pi({session:e,onOpenBranchTree:t}){const n=lt(),s=Ds(),o=a.useRef(null),l=a.useRef(null),[c,u]=a.useState(!1),[d,p]=a.useState(null),[S,M]=a.useState(null),[L,w]=a.useState(0);a.useEffect(()=>{u(!1),p(null)},[s.pathname,s.search]),a.useLayoutEffect(()=>{if(!c||!d||typeof window>"u"){M(null);return}const R=()=>{var D,G;const f=jo(d,{width:((D=l.current)==null?void 0:D.offsetWidth)??0,height:((G=l.current)==null?void 0:G.offsetHeight)??0},{width:window.innerWidth,height:window.innerHeight},{estimatedHeightPx:mi});M({position:"fixed",left:`${Math.round(f.left)}px`,top:`${Math.round(f.top)}px`,width:`${Math.round(f.width)}px`,maxWidth:"calc(100vw - 24px)",maxHeight:`${Math.round(f.maxHeight)}px`,transformOrigin:f.transformOrigin})},C=f=>{var G,Y;const D=f.target;D&&!((G=l.current)!=null&&G.contains(D))&&!((Y=o.current)!=null&&Y.contains(D))&&v()},m=f=>{f.key==="Escape"&&v()};return R(),window.addEventListener("pointerdown",C),window.addEventListener("keydown",m),window.addEventListener("resize",R),window.addEventListener("scroll",R,!0),()=>{window.removeEventListener("pointerdown",C),window.removeEventListener("keydown",m),window.removeEventListener("resize",R),window.removeEventListener("scroll",R,!0)}},[d,c]);function b(){var C;const R=(C=o.current)==null?void 0:C.getBoundingClientRect();R&&(p({x:R.right,y:R.bottom}),u(!0))}function v(){u(!1),p(null)}function A(R){n(R),v()}function x(R){const C=new URLSearchParams(s.search);C.set("toolPanel",R),A(`${s.pathname}?${C.toString()}`)}function _(){if(c){v();return}b()}function T(R){R.key!=="ContextMenu"&&!(R.shiftKey&&R.key==="F10")||(R.preventDefault(),R.stopPropagation(),b())}if(!e)return null;const j=[{key:"assistant",label:i("shell.butlerEntry"),onSelect:()=>{w(R=>R+1),v()}},...t?[{key:"branch",label:i("conversation.branchAction"),onSelect:()=>{t(),v()}}]:[],{key:"files",label:i("shell.filesEntry"),onSelect:()=>{x("files")}},{key:"git",label:i("shell.gitEntry"),onSelect:()=>{x("git")}},{key:"processes",label:i("shell.mobileConversationToolProcessesTab"),onSelect:()=>{x("processes")}}],N=c&&typeof document<"u"?vt.createPortal(r.jsx("div",{ref:l,className:"session-action-menu mobile-conversation-action-menu surface-card",role:"menu","aria-label":i("conversation.moreSessionActions"),style:S??{position:"fixed",top:0,left:0,visibility:"hidden"},onClick:R=>R.stopPropagation(),children:j.map(R=>r.jsx("button",{type:"button",className:"session-action-menu-item mobile-conversation-action-menu-item",role:"menuitem",onClick:R.onSelect,children:R.label},R.key))}),document.body):null;return r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:"mobile-conversation-session-actions",children:[r.jsx("button",{ref:o,type:"button",className:"conversation-header-ai-button mobile-conversation-more-button","aria-label":i("conversation.moreSessionActions"),title:i("conversation.moreSessionActions"),"aria-haspopup":"menu","aria-expanded":c,onClick:_,onKeyDown:T,children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(Eo,{})})}),r.jsx(or,{session:e,showTrigger:!1,openRequestKey:L})]}),N]})}function ir({items:e,deletingQueueItemId:t=null,steeringQueueItemId:n=null,canSteer:s=!1,onDelete:o,onSteer:l}){return e.length===0?null:r.jsxs("section",{className:"queued-message-list","aria-label":i("conversation.queueTitle"),children:[r.jsx("div",{className:"queued-message-list__header",children:r.jsx("h2",{children:`${i("conversation.queueTitle")} · ${e.length}`})}),r.jsx("div",{className:"queued-message-list__items",children:e.map((c,u)=>{const d=c.status==="queued"||c.status==="failed",p=s&&typeof l=="function"&&(c.status==="queued"||c.status==="failed");return r.jsxs("article",{className:"queued-message-item",children:[r.jsxs("div",{className:"queued-message-item__main",children:[r.jsx("span",{className:"queued-message-item__order","aria-hidden":"true",children:u+1}),r.jsx("p",{className:"queued-message-item__content",title:c.content||i("conversation.queueImageOnly"),children:c.content||i("conversation.queueImageOnly")}),r.jsx("span",{className:`queued-message-item__status queued-message-item__status--${c.status}`,children:c.status==="failed"?i("conversation.queueStatusFailed"):i("conversation.queueStatusQueued")}),r.jsxs("div",{className:"queued-message-item__actions",children:[p?r.jsx("button",{type:"button",className:"queued-message-item__action queued-message-item__action--steer",onClick:()=>void l(c.id),disabled:n===c.id,"aria-label":i("conversation.queueSteer"),title:i("conversation.queueSteer"),children:n===c.id?i("conversation.queueSteering"):i("conversation.queueSteer")}):null,d?r.jsx("button",{type:"button",className:"queued-message-item__action queued-message-item__action--delete",onClick:()=>void o(c.id),disabled:t===c.id,"aria-label":i("conversation.queueDelete"),title:i("conversation.queueDelete"),children:t===c.id?"…":"×"}):null]})]}),c.errorDetail?r.jsx("p",{className:"queued-message-item__error",children:c.errorDetail}):null]},c.id)})})]})}function fi(e){const{sending:t,setSending:n,session:s,runtimeHasActiveRun:o,runtimeCanInterrupt:l}=e,c=a.useRef(!1);a.useEffect(()=>{if(!t){c.current=!1;return}if(gi(s,o,l)){c.current=!0;return}c.current&&(c.current=!1,n(!1))},[l,o,t,s,n])}function gi(e,t,n){return t===!0||n===!0||(e==null?void 0:e.runningState)==="stale"||(e==null?void 0:e.runningState)==="unknown"?!0:Hn(e)}const vi=30,ms=80,kt=60,ar=600,on=300*1e3,bi=600,wi=5e3,Si=1e4;class Ii{constructor(t,n={}){ke(this,"state");ke(this,"listeners",new Set);ke(this,"realtimeClient",null);ke(this,"historyBootstrapFallbackTimer",null);ke(this,"historyBootstrapEnvelopeReceived",!1);ke(this,"markSeenTimer",null);ke(this,"markSeenInFlight",!1);ke(this,"lastMarkSeenRequestAt",0);ke(this,"seenWatermark",null);ke(this,"runtimeRefreshTimer",null);ke(this,"runtimeRefreshMode",null);ke(this,"replaceSnapshotSeedOnBackfill",!1);ke(this,"olderHistoryPrefetchCursor",null);ke(this,"olderHistoryPrefetchPromise",null);ke(this,"prefetchedOlderHistoryPage",null);ke(this,"pendingReplyDebugTraces",[]);ke(this,"hasAuthoritativeBootstrapMessages");ke(this,"subscribe",t=>(this.listeners.add(t),()=>{this.listeners.delete(t)}));ke(this,"getState",()=>this.state);var c;this.sessionId=t,this.options=n;const s=zs(ws(t),on);this.hasAuthoritativeBootstrapMessages=(((c=n.bootstrapMessages)==null?void 0:c.length)??0)>0;const o=Vt(n.initialSession??null,(s==null?void 0:s.session)??null),l=Pt((s==null?void 0:s.messages)??[],this.sessionId,n.bootstrapMessages??[]);this.replaceSnapshotSeedOnBackfill=!this.hasAuthoritativeBootstrapMessages&&((s==null?void 0:s.messages.length)??0)>0&&((s==null?void 0:s.messages.length)??0)<kt&&((s==null?void 0:s.pagesLoaded)??0)<=1,this.state=Qs({session:o,capabilities:(s==null?void 0:s.capabilities)??null,runtimeHasActiveRun:(s==null?void 0:s.runtimeHasActiveRun)??null,runtimeCanInterrupt:(s==null?void 0:s.runtimeCanInterrupt)??null,contextUsage:(s==null?void 0:s.contextUsage)??null,messages:l,permissionRequests:(s==null?void 0:s.permissionRequests)??[],queuedMessages:(s==null?void 0:s.queuedMessages)??[],olderCursor:(s==null?void 0:s.olderCursor)??null,hasOlderMessages:(s==null?void 0:s.hasOlderMessages)??!1,lastCursor:(s==null?void 0:s.lastCursor)??null,interruptSource:(s==null?void 0:s.interruptSource)??null,pagesLoaded:(s==null?void 0:s.pagesLoaded)??0}),this.seenWatermark=(o==null?void 0:o.lastSeenAt)??null}async initialize(){this.historyBootstrapEnvelopeReceived=!1,this.clearHistoryBootstrapFallbackTimer(),this.clearOlderHistoryPrefetch();const t=this.options.bootstrapMessages??[],n=Pt(this.state.messages,this.sessionId,t),s=this.hasAuthoritativeBootstrapMessages;this.patch({messages:n,historyState:Ci(this.state.session,s?n.length:0),loadingOlderMessages:!1,olderCursor:s?null:this.state.olderCursor,hasOlderMessages:mt({session:this.state.session,loadedMessageCount:n.length,olderCursor:s?null:this.state.olderCursor,pagesLoaded:this.state.pagesLoaded,currentHasOlderMessages:this.state.hasOlderMessages}),pagesLoaded:s?Math.max(this.state.pagesLoaded,1):this.state.pagesLoaded,errorCode:null,errorDetail:null}),this.shouldRefreshSessionDetail()&&this.refreshSessionMetadata(),this.shouldRefreshRuntimeSnapshot()&&this.refreshRuntimeSnapshot("bootstrap"),this.refreshPermissionRequests(),this.refreshQueue();try{this.startRealtime(),s&&this.scheduleMarkSeen()}catch(o){this.handleError(o)}}async reload(){var n,s;this.clearHistoryBootstrapFallbackTimer(),this.historyBootstrapEnvelopeReceived=!1,this.clearOlderHistoryPrefetch(),(n=this.realtimeClient)==null||n.close(),this.realtimeClient=null;const t=zs(ws(this.sessionId),on);this.state=Qs({session:Vt(this.options.initialSession??null,(t==null?void 0:t.session)??null),capabilities:(t==null?void 0:t.capabilities)??null,runtimeHasActiveRun:(t==null?void 0:t.runtimeHasActiveRun)??null,runtimeCanInterrupt:(t==null?void 0:t.runtimeCanInterrupt)??null,contextUsage:(t==null?void 0:t.contextUsage)??null,messages:Pt((t==null?void 0:t.messages)??[],this.sessionId,this.options.bootstrapMessages??[]),permissionRequests:(t==null?void 0:t.permissionRequests)??[],queuedMessages:(t==null?void 0:t.queuedMessages)??[],olderCursor:(t==null?void 0:t.olderCursor)??null,hasOlderMessages:(t==null?void 0:t.hasOlderMessages)??!1,lastCursor:(t==null?void 0:t.lastCursor)??null,pagesLoaded:(t==null?void 0:t.pagesLoaded)??0}),this.seenWatermark=((s=this.state.session)==null?void 0:s.lastSeenAt)??null,this.replaceSnapshotSeedOnBackfill=!this.hasAuthoritativeBootstrapMessages&&((t==null?void 0:t.messages.length)??0)>0&&((t==null?void 0:t.messages.length)??0)<kt&&((t==null?void 0:t.pagesLoaded)??0)<=1,this.emit(),await this.initialize()}applyNavigationSession(t){if(!t||t.sessionId!==this.sessionId)return;const n=Vt(this.state.session,t);n!==this.state.session&&this.patch({session:n,hasOlderMessages:mt({session:n,loadedMessageCount:this.state.messages.length,olderCursor:this.state.olderCursor,pagesLoaded:this.state.pagesLoaded,currentHasOlderMessages:this.state.hasOlderMessages})})}async sendMessage(t,n){const s=pn();this.beginPendingReplyDebugTrace("send_live",s,t.length);const o=Fn(this.sessionId,t,s,(n==null?void 0:n.attachmentMeta)??[],(n==null?void 0:n.attachments)??[],xi(this.state.messages,this.state.session));this.patch({messages:Ao(this.state.messages,o),session:Ye(this.state.session,"running"),runtimeHasActiveRun:fn(this.state.session,this.state.capabilities)?!0:this.state.runtimeHasActiveRun,runtimeCanInterrupt:gn(this.state.session,this.state.capabilities)?!0:this.state.runtimeCanInterrupt});try{const l=await this.sendMessageWithFallback(t,s,n);this.markPendingReplyDebugTraceResponseReady(s,{returnedMessageId:l.message.messageId,returnedProviderSessionId:l.message.providerSessionId}),this.patch({messages:Ks(this.state.messages,this.sessionId,l.message,s)})}catch(l){throw this.failPendingReplyDebugTrace(s,l),this.patch({messages:xs(this.state.messages,s),session:Ye(this.state.session,"failed"),runtimeHasActiveRun:!1,runtimeCanInterrupt:!1}),l}}async retryMessage(t){const n=this.state.messages.find(s=>s.clientRequestId===t);if(n){this.patch({messages:this.state.messages.map(s=>s.clientRequestId===t?{...s,deliveryState:"sending"}:s),runtimeHasActiveRun:fn(this.state.session,this.state.capabilities)?!0:this.state.runtimeHasActiveRun,runtimeCanInterrupt:gn(this.state.session,this.state.capabilities)?!0:this.state.runtimeCanInterrupt}),this.beginPendingReplyDebugTrace("retry_live",t,n.content.length);try{const s=await this.sendMessageWithFallback(n.content,t,{attachments:n.attachmentPayloads??[],attachmentMeta:n.attachments});this.markPendingReplyDebugTraceResponseReady(t,{returnedMessageId:s.message.messageId,returnedProviderSessionId:s.message.providerSessionId}),this.patch({messages:Ks(this.state.messages,this.sessionId,s.message,t)})}catch(s){throw this.failPendingReplyDebugTrace(t,s),this.patch({messages:xs(this.state.messages,t),session:Ye(this.state.session,"failed")}),s}}}async enqueueMessage(t,n){const s=pn();try{const o=await to(this.sessionId,{content:t,clientRequestId:s,model:(n==null?void 0:n.model)??null,reasoningLevel:(n==null?void 0:n.reasoningLevel)??null,permissionMode:it(),attachments:(n==null?void 0:n.attachments)??[],providerConfigMode:n==null?void 0:n.providerConfigMode,providerPresetId:(n==null?void 0:n.providerPresetId)??null});this.patch({queuedMessages:Hi(this.state.queuedMessages,o)}),await this.refreshQueue()}catch(o){throw o}}async deleteQueuedMessage(t){await so(this.sessionId,t),await this.refreshQueue()}async steerQueuedMessage(t){await no(this.sessionId,t),await this.refreshRuntimeSnapshot("queue_steer")}async interrupt(){await ro(this.sessionId),this.patch({session:Ye(this.state.session,"interrupted"),runtimeHasActiveRun:!1,runtimeCanInterrupt:!1,interruptSource:"user",errorCode:null,errorDetail:null})}async replyPermissionRequest(t,n){if(!(this.state.permissionRequests.find(l=>l.id===t)??null))return;const o=await oo(this.sessionId,t,n);this.patch({permissionRequests:Ss(this.state.permissionRequests,o)})}reconnect(){var t;(t=this.realtimeClient)==null||t.reconnectNow()}async loadOlderMessages(){var t;if(!(this.state.historyState!=="ready"||this.state.loadingOlderMessages||!this.state.olderCursor)){this.patch({loadingOlderMessages:!0,errorCode:null,errorDetail:null});try{const n=this.state.olderCursor,s=await this.takePrefetchedOlderHistoryPage(n);if(s&&this.state.olderCursor===n){this.applyOlderHistoryPage(s,"prefetch_cache");return}if(!((t=this.realtimeClient)==null?void 0:t.requestOlderMessages(n,ms)))throw new Error("REALTIME_NOT_CONNECTED")}catch(n){const s=n instanceof Error?n.message:"unknown";this.patch({loadingOlderMessages:!1,errorCode:"HISTORY_LOAD_MORE_FAILED",errorDetail:s})}}}destroy(){var t;this.clearHistoryBootstrapFallbackTimer(),this.clearOlderHistoryPrefetch(),(t=this.realtimeClient)==null||t.close(),this.realtimeClient=null,this.pendingReplyDebugTraces.length=0,this.markSeenTimer!==null&&(window.clearTimeout(this.markSeenTimer),this.markSeenTimer=null),this.runtimeRefreshTimer!==null&&(window.clearTimeout(this.runtimeRefreshTimer),this.runtimeRefreshTimer=null),this.runtimeRefreshMode=null}startRealtime(){var n;if(!((n=is.getState().session)==null?void 0:n.accessToken)){is.clear();return}this.realtimeClient=new si({sessionId:this.sessionId,cursor:this.state.lastCursor,limit:kt,onSubscribed:()=>{ge("session_send.realtime_subscribed",{sessionId:this.sessionId,lastCursor:this.state.lastCursor}),this.patch({connectionState:"connected",hasOlderMessages:mt({session:this.state.session,loadedMessageCount:this.state.messages.length,olderCursor:this.state.olderCursor,pagesLoaded:this.state.pagesLoaded,currentHasOlderMessages:this.state.hasOlderMessages})}),this.scheduleHistoryBootstrapFallback()},onConnectionChange:s=>{var l;const o=this.state.connectionState;if(this.patch({connectionState:s,session:s==="reconnecting"&&Xe((l=this.state.session)==null?void 0:l.runningState)?Ye(this.state.session,"reconnecting"):this.state.session}),s==="connected"){this.clearRuntimeRefreshTimer("poll"),o!=="closed"&&o!=="connected"&&this.patch({errorCode:null,errorDetail:null});return}this.scheduleRuntimeRefresh("poll","connection_state_change")},onEnvelope:s=>{var u,d;this.historyBootstrapEnvelopeReceived=!0,this.clearHistoryBootstrapFallbackTimer();const o=s.type==="session.backfill"&&this.replaceSnapshotSeedOnBackfill;$t("envelope.received",{sessionId:this.sessionId,type:s.type,cursor:s.cursor,olderCursor:s.olderCursor??null,incomingMessages:Rt(s.messages),currentMessages:Rt(this.state.messages)});const{messages:l,replacedSnapshotSeed:c}=this.mergeHistoryMessages(s.messages,o,s.type==="session.backfill"?"realtime_backfill":"realtime_delta");$t("envelope.merged",{sessionId:this.sessionId,type:s.type,replacedSnapshotSeed:c,mergedMessages:Rt(l)}),this.patch({messages:l,lastCursor:s.cursor,historyState:"ready",olderCursor:s.type==="session.backfill"&&!c&&this.state.pagesLoaded>1?this.state.olderCursor:s.olderCursor??this.state.olderCursor,hasOlderMessages:s.type==="session.backfill"?!c&&this.state.pagesLoaded>1?this.state.hasOlderMessages:!!s.olderCursor:mt({session:this.state.session,loadedMessageCount:l.length,olderCursor:this.state.olderCursor,pagesLoaded:this.state.pagesLoaded,currentHasOlderMessages:this.state.hasOlderMessages}),pagesLoaded:s.type==="session.backfill"?!c&&this.state.pagesLoaded>1?this.state.pagesLoaded:Math.max(this.state.pagesLoaded,l.length>0?1:0):this.state.pagesLoaded,session:Ye(this.state.session,un(s.type,(u=this.state.session)==null?void 0:u.runningState))}),(d=this.realtimeClient)==null||d.updateCursor(s.cursor),this.scheduleMarkSeen(),this.scheduleOlderHistoryPrefetch(s.type==="session.backfill"?"backfill":"delta"),this.state.queuedMessages.length>0&&this.refreshQueue()},onOlderHistory:s=>{this.applyOlderHistoryPage({messages:s.messages,nextCursor:s.olderCursor},"realtime")},onRuntimeMessage:s=>{this.handleRuntimeMessage(s)},onActivity:s=>{this.handleActivity(s)},onRuntimeStatus:s=>{this.handleRuntimeStatus(s)},onRuntimeError:s=>{this.handleRuntimeError(s)},onInterrupted:s=>{this.handleInterrupted(s)},onPermissionRequest:s=>{this.handlePermissionRequest(s)},onPermissionRequestResolved:s=>{this.handlePermissionRequestResolved(s)},onError:s=>{this.patch({loadingOlderMessages:!1,errorCode:s.error_code,errorDetail:s.detail})},onUnauthorized:()=>{is.clear()}}),this.realtimeClient.start()}patch(t){let n=t;Object.prototype.hasOwnProperty.call(t,"session")&&(this.syncSeenWatermark(t.session??null),n={...t,session:this.applySeenWatermark(t.session??null)}),this.state={...this.state,...n},(Object.prototype.hasOwnProperty.call(n,"session")||Object.prototype.hasOwnProperty.call(n,"capabilities")||Object.prototype.hasOwnProperty.call(n,"contextUsage")||Object.prototype.hasOwnProperty.call(n,"messages")||Object.prototype.hasOwnProperty.call(n,"permissionRequests")||Object.prototype.hasOwnProperty.call(n,"queuedMessages"))&&this.persistSnapshot(),this.emit()}mergeHistoryMessages(t,n,s){const o=n&&this.replaceSnapshotSeedOnBackfill&&Pi(this.state.messages,t),l=o?this.state.messages.filter(u=>u.deliveryState!=="sent"):this.state.messages,c=Pt(l,this.sessionId,t);return this.logCodexMergeDebug(s,this.state.messages,t,c,{replacedSnapshotSeedAttempted:n,replacedSnapshotSeed:o,baseMessageCount:l.length}),o&&(this.replaceSnapshotSeedOnBackfill=!1),{messages:c,replacedSnapshotSeed:o}}handleError(t){this.clearHistoryBootstrapFallbackTimer();const n=t instanceof Error?t.message:"unknown";this.patch({historyState:"error",errorCode:"RUNTIME_INIT_FAILED",errorDetail:n})}scheduleMarkSeen(){if(this.markSeenTimer!==null)return;const t=this.getTargetSeenAt();if(this.markSeenInFlight||t===null)return;const n=this.getMarkSeenThrottleDelayMs(),s=Math.max(bi,n);this.markSeenTimer=window.setTimeout(()=>{this.markSeenTimer=null;const o=this.getTargetSeenAt();o!==null&&(ge("session_seen.start",{sessionId:this.sessionId,targetSeenAt:o,seenWatermark:this.seenWatermark}),this.markSeenInFlight=!0,this.lastMarkSeenRequestAt=Date.now(),io(this.sessionId).then(()=>{var l,c;this.bumpSeenWatermark(o),this.patch({session:an(this.state.session,o)}),(c=(l=this.options).onSeen)==null||c.call(l,this.sessionId,o),ge("session_seen.end",{sessionId:this.sessionId,seenWatermark:this.seenWatermark})}).catch(()=>{ge("session_seen.error",{sessionId:this.sessionId,targetSeenAt:o})}).finally(()=>{this.markSeenInFlight=!1,this.shouldMarkSeen()&&this.scheduleMarkSeen()}))},s)}clearRuntimeRefreshTimer(t){this.runtimeRefreshTimer!==null&&(t&&this.runtimeRefreshMode!==t||(window.clearTimeout(this.runtimeRefreshTimer),this.runtimeRefreshTimer=null,this.runtimeRefreshMode=null))}scheduleHistoryBootstrapFallback(){this.historyBootstrapEnvelopeReceived||this.historyBootstrapFallbackTimer!==null||(this.historyBootstrapFallbackTimer=window.setTimeout(()=>{this.historyBootstrapFallbackTimer=null,!this.historyBootstrapEnvelopeReceived&&this.resolveHistoryBootstrapFallback()},350))}clearHistoryBootstrapFallbackTimer(){this.historyBootstrapFallbackTimer!==null&&(window.clearTimeout(this.historyBootstrapFallbackTimer),this.historyBootstrapFallbackTimer=null)}async resolveHistoryBootstrapFallback(){try{const t=Math.min(ar,Math.max(kt,this.state.messages.length,vi)),n=await Ms(this.sessionId,null,t,"backward");if(this.historyBootstrapEnvelopeReceived)return;this.historyBootstrapEnvelopeReceived=!0;const{messages:s,replacedSnapshotSeed:o}=this.mergeHistoryMessages(n.messages,this.replaceSnapshotSeedOnBackfill,"http_bootstrap_fallback");this.patch({messages:s,historyState:"ready",olderCursor:!o&&this.state.pagesLoaded>1?this.state.olderCursor:n.nextCursor,hasOlderMessages:!o&&this.state.pagesLoaded>1?this.state.hasOlderMessages:mt({session:this.state.session,loadedMessageCount:s.length,olderCursor:n.nextCursor,pagesLoaded:this.state.pagesLoaded,currentHasOlderMessages:this.state.hasOlderMessages}),lastCursor:n.cursor??this.state.lastCursor,pagesLoaded:!o&&this.state.pagesLoaded>1?this.state.pagesLoaded:s.length>0?Math.max(this.state.pagesLoaded,1):this.state.pagesLoaded,errorCode:null,errorDetail:null}),this.scheduleMarkSeen(),this.scheduleOlderHistoryPrefetch("bootstrap_fallback")}catch{}}applyOlderHistoryPage(t,n){const{messages:s}=this.mergeHistoryMessages(t.messages,!1,n==="realtime"?"older_history_realtime":"older_history_prefetch_cache");this.patch({messages:s,historyState:"ready",loadingOlderMessages:!1,olderCursor:t.nextCursor,hasOlderMessages:!!t.nextCursor,pagesLoaded:this.state.pagesLoaded+1,errorCode:null,errorDetail:null}),ge("session.history_older.applied",{sessionId:this.sessionId,source:n,messageCount:t.messages.length,nextCursor:t.nextCursor}),this.scheduleOlderHistoryPrefetch(n)}scheduleOlderHistoryPrefetch(t){var s;const n=this.state.olderCursor;this.state.historyState!=="ready"||this.state.loadingOlderMessages||!n||((s=this.prefetchedOlderHistoryPage)==null?void 0:s.requestedCursor)!==n&&(this.olderHistoryPrefetchPromise&&this.olderHistoryPrefetchCursor===n||this.prefetchOlderHistoryPage(n,t))}async prefetchOlderHistoryPage(t,n){var o;if(((o=this.prefetchedOlderHistoryPage)==null?void 0:o.requestedCursor)===t)return this.prefetchedOlderHistoryPage.page;if(this.olderHistoryPrefetchPromise&&this.olderHistoryPrefetchCursor===t)return this.olderHistoryPrefetchPromise;this.olderHistoryPrefetchCursor=t,ge("session.history_older.prefetch.start",{sessionId:this.sessionId,requestedCursor:t,reason:n,limit:ms});const s=Ms(this.sessionId,t,ms,"backward").then(l=>(this.state.olderCursor===t&&(this.prefetchedOlderHistoryPage={requestedCursor:t,page:l}),ge("session.history_older.prefetch.end",{sessionId:this.sessionId,requestedCursor:t,messageCount:l.messages.length,nextCursor:l.nextCursor}),l)).catch(l=>(ge("session.history_older.prefetch.error",{sessionId:this.sessionId,requestedCursor:t,message:l instanceof Error?l.message:"unknown"}),null)).finally(()=>{this.olderHistoryPrefetchPromise===s&&(this.olderHistoryPrefetchPromise=null),this.olderHistoryPrefetchCursor===t&&(this.olderHistoryPrefetchCursor=null)});return this.olderHistoryPrefetchPromise=s,s}async takePrefetchedOlderHistoryPage(t){var n;if(((n=this.prefetchedOlderHistoryPage)==null?void 0:n.requestedCursor)===t){const s=this.prefetchedOlderHistoryPage.page;return this.prefetchedOlderHistoryPage=null,ge("session.history_older.prefetch.hit",{sessionId:this.sessionId,requestedCursor:t,messageCount:s.messages.length,nextCursor:s.nextCursor}),s}if(this.olderHistoryPrefetchPromise&&this.olderHistoryPrefetchCursor===t){const s=await this.olderHistoryPrefetchPromise;return!s||this.state.olderCursor!==t?null:(this.prefetchedOlderHistoryPage=null,ge("session.history_older.prefetch.await_hit",{sessionId:this.sessionId,requestedCursor:t,messageCount:s.messages.length,nextCursor:s.nextCursor}),s)}return null}clearOlderHistoryPrefetch(){this.olderHistoryPrefetchCursor=null,this.olderHistoryPrefetchPromise=null,this.prefetchedOlderHistoryPage=null}scheduleRuntimeRefresh(t,n){var s,o;if(!Xe((s=this.state.session)==null?void 0:s.runningState)){this.clearRuntimeRefreshTimer();return}t==="poll"&&this.state.connectionState==="connected"||(this.clearRuntimeRefreshTimer(),this.runtimeRefreshMode=t,ge("session_runtime.refresh.schedule",{sessionId:this.sessionId,mode:t,reason:n,connectionState:this.state.connectionState,runningState:((o=this.state.session)==null?void 0:o.runningState)??null}),this.runtimeRefreshTimer=window.setTimeout(()=>{const l=this.runtimeRefreshMode??t;this.runtimeRefreshTimer=null,this.runtimeRefreshMode=null,this.refreshRuntimeState(l,n)},t==="poll"?Si:1200))}async refreshRuntimeState(t,n){var s,o,l,c,u;ge("session_runtime.refresh.start",{sessionId:this.sessionId,mode:t,reason:n,connectionState:this.state.connectionState,runningState:((s=this.state.session)==null?void 0:s.runningState)??null});try{const d=await $s(this.sessionId),p=vs(this.state.runtimeHasActiveRun,d.runningState,d.hasActiveRun),S=bs(this.state.runtimeCanInterrupt,d.runningState,p,d.canInterrupt);this.patch({session:ln(this.state.session,d),runtimeHasActiveRun:p,runtimeCanInterrupt:S,contextUsage:d.contextUsage,...fs(d,this.state.interruptSource)}),await this.refreshQueue();const M=t==="poll"&&this.state.connectionState!=="connected"&&Xe((o=this.state.session)==null?void 0:o.runningState);ge("session_runtime.refresh.end",{sessionId:this.sessionId,mode:t,reason:n,connectionState:this.state.connectionState,runningState:((l=this.state.session)==null?void 0:l.runningState)??null,continuePolling:M}),M&&this.scheduleRuntimeRefresh("poll","connection_poll")}catch(d){ge("session_runtime.refresh.error",{sessionId:this.sessionId,mode:t,reason:n,connectionState:this.state.connectionState,runningState:((c=this.state.session)==null?void 0:c.runningState)??null,message:d instanceof Error?d.message:"unknown"}),t==="poll"&&this.state.connectionState!=="connected"&&Xe((u=this.state.session)==null?void 0:u.runningState)&&this.scheduleRuntimeRefresh("poll","connection_poll_retry")}}async refreshSessionMetadata(){const t=[];this.state.session===null&&t.push(Dn(this.sessionId).then(n=>{this.patch({session:Vt(n,this.state.session)})}).catch(()=>{})),cn(this.state.capabilities)&&t.push(ao(this.sessionId).then(n=>{this.patch({capabilities:n})}).catch(()=>{})),t.length!==0&&await Promise.allSettled(t)}async refreshPermissionRequests(){try{const t=await lo(this.sessionId);this.patch({permissionRequests:t.items})}catch{return}}shouldRefreshSessionDetail(){return this.state.session===null||cn(this.state.capabilities)||this.state.session.runningState===null}shouldRefreshRuntimeSnapshot(){return this.state.contextUsage===null||Di(this.state.session,this.state.runtimeHasActiveRun,this.state.runtimeCanInterrupt)}async refreshRuntimeSnapshot(t){ge("session_runtime.snapshot.start",{sessionId:this.sessionId,reason:t});try{const n=await $s(this.sessionId),s=vs(this.state.runtimeHasActiveRun,n.runningState,n.hasActiveRun),o=bs(this.state.runtimeCanInterrupt,n.runningState,s,n.canInterrupt);this.patch({session:ln(this.state.session,n),runtimeHasActiveRun:s,runtimeCanInterrupt:o,contextUsage:n.contextUsage,...fs(n,this.state.interruptSource)}),await this.refreshQueue(),ge("session_runtime.snapshot.end",{sessionId:this.sessionId,reason:t,hasContextUsage:n.contextUsage!==null})}catch(n){ge("session_runtime.snapshot.error",{sessionId:this.sessionId,reason:t,message:n instanceof Error?n.message:"unknown"})}}async refreshQueue(){try{const t=await co(this.sessionId);this.patch({queuedMessages:t.items})}catch{return}}async sendMessageWithFallback(t,n,s){var o;try{return await js(this.sessionId,{content:t,clientRequestId:n,model:(s==null?void 0:s.model)??null,reasoningLevel:(s==null?void 0:s.reasoningLevel)??null,permissionMode:it(),attachments:(s==null?void 0:s.attachments)??[],providerConfigMode:s==null?void 0:s.providerConfigMode,providerPresetId:(s==null?void 0:s.providerPresetId)??null})}catch(l){if(!(l instanceof Vr)||l.status!==404&&l.status!==405||(((o=s==null?void 0:s.attachments)==null?void 0:o.length)??0)>0)throw l;return ge("session_send.live_fallback",{sessionId:this.sessionId,clientRequestId:n,reason:l.message}),uo(this.sessionId,{content:t,clientRequestId:n,permissionMode:it()})}}handleRuntimeStatus(t){var s;const n=ps((s=this.state.session)==null?void 0:s.runningState,t.status);this.patch({session:Ye(this.state.session,n),runtimeHasActiveRun:Xe(n)?this.state.runtimeHasActiveRun??!0:!1,runtimeCanInterrupt:Xe(n)?this.state.runtimeCanInterrupt:!1,interruptSource:n==="interrupted"?t.interruptSource??this.state.interruptSource:n==="completed"||n==="failed"?null:this.state.interruptSource,errorCode:null,errorDetail:n===t.status?t.detail:this.state.errorDetail}),Nt(n)&&(this.completePendingReplyDebugTraceWithoutAssistant("session_send.client_terminal_before_message",{status:t.status,detail:t.detail}),this.clearRuntimeRefreshTimer(),this.refreshQueue(),this.refreshRuntimeSnapshot("runtime_terminal"))}handleActivity(t){const n=vs(this.state.runtimeHasActiveRun,t.runningState,t.hasActiveRun),s=bs(this.state.runtimeCanInterrupt,t.runningState,n,t.canInterrupt);if(this.patch({session:Ti(this.state.session,t),runtimeHasActiveRun:n,runtimeCanInterrupt:s,...fs(t,this.state.interruptSource)}),Nt(t.runningState)){this.clearRuntimeRefreshTimer(),this.refreshQueue();return}(t.runningState==="stale"||t.runningState==="unknown")&&this.scheduleRuntimeRefresh("tail","activity_watchdog")}handleRuntimeMessage(t){var s;t.message.role==="assistant"&&this.completePendingReplyDebugTrace(t),$t("runtime_message.received",{sessionId:this.sessionId,source:t.source,message:lr(t.message),currentMessages:Rt(this.state.messages)});const n=Pt(this.state.messages,this.sessionId,[t.message]);$t("runtime_message.merged",{sessionId:this.sessionId,source:t.source,mergedMessages:Rt(n)}),this.logCodexMergeDebug("runtime_message",this.state.messages,[t.message],n,{runtimeSource:t.source}),this.patch({messages:n,historyState:"ready",hasOlderMessages:mt({session:this.state.session,loadedMessageCount:n.length,olderCursor:this.state.olderCursor,pagesLoaded:this.state.pagesLoaded,currentHasOlderMessages:this.state.hasOlderMessages}),session:Ye(this.state.session,un("session.delta",(s=this.state.session)==null?void 0:s.runningState))}),this.scheduleMarkSeen(),this.state.queuedMessages.length>0&&this.refreshQueue()}handleRuntimeError(t){var s;const n=ps((s=this.state.session)==null?void 0:s.runningState,"failed");this.completePendingReplyDebugTraceWithoutAssistant("session_send.client_runtime_error",{errorCode:t.error_code,detail:t.detail}),this.clearRuntimeRefreshTimer(),this.patch({session:Ye(this.state.session,n),runtimeHasActiveRun:!1,runtimeCanInterrupt:!1,interruptSource:null,errorCode:n==="failed"?t.error_code:this.state.errorCode,errorDetail:n==="failed"?t.detail:this.state.errorDetail}),this.refreshQueue()}handleInterrupted(t){var s;const n=ps((s=this.state.session)==null?void 0:s.runningState,"interrupted");this.completePendingReplyDebugTraceWithoutAssistant("session_send.client_interrupted",{detail:t.detail}),this.clearRuntimeRefreshTimer(),this.patch({session:Ye(this.state.session,n),runtimeHasActiveRun:!1,runtimeCanInterrupt:!1,interruptSource:n==="interrupted"?t.interruptSource??this.state.interruptSource:this.state.interruptSource,errorCode:n==="interrupted"?null:this.state.errorCode,errorDetail:n==="interrupted"?t.detail:this.state.errorDetail}),this.refreshQueue()}handlePermissionRequest(t){this.patch({permissionRequests:Ss(this.state.permissionRequests,t.request)})}handlePermissionRequestResolved(t){this.patch({permissionRequests:Ss(this.state.permissionRequests,t.request)})}shouldMarkSeen(){return this.getTargetSeenAt()!==null}getTargetSeenAt(){const t=[...this.state.messages].reverse().find(s=>s.role!=="user");if(!t)return null;const n=this.seenWatermark;return n?t.timestamp>n?t.timestamp:null:t.timestamp}syncSeenWatermark(t){t!=null&&t.lastSeenAt&&this.bumpSeenWatermark(t.lastSeenAt)}bumpSeenWatermark(t){this.seenWatermark&&this.seenWatermark>=t||(this.seenWatermark=t)}getMarkSeenThrottleDelayMs(){return this.lastMarkSeenRequestAt<=0?0:Math.max(0,wi-(Date.now()-this.lastMarkSeenRequestAt))}applySeenWatermark(t){return!t||!this.seenWatermark?t:an(t,this.seenWatermark)}emit(){for(const t of this.listeners)t()}persistSnapshot(){No(ws(this.sessionId),{session:this.state.session,capabilities:this.state.capabilities,runtimeHasActiveRun:this.state.runtimeHasActiveRun,runtimeCanInterrupt:this.state.runtimeCanInterrupt,contextUsage:this.state.contextUsage,messages:Oi(this.state.messages),permissionRequests:this.state.permissionRequests,queuedMessages:this.state.queuedMessages,olderCursor:this.state.olderCursor,hasOlderMessages:this.state.hasOlderMessages,lastCursor:this.state.lastCursor,pagesLoaded:this.state.pagesLoaded,interruptSource:this.state.interruptSource})}beginPendingReplyDebugTrace(t,n,s){const o={mode:t,clientRequestId:n,startedAtMs:performance.now(),responseReadyAtMs:null,contentLength:s};this.pendingReplyDebugTraces.push(o),ge(`session_send.${t}.client_start`,{sessionId:this.sessionId,clientRequestId:n,contentLength:s})}markPendingReplyDebugTraceResponseReady(t,n={}){const s=this.pendingReplyDebugTraces.find(o=>o.clientRequestId===t);!s||s.responseReadyAtMs!==null||(s.responseReadyAtMs=performance.now(),ge(`session_send.${s.mode}.client_response`,{sessionId:this.sessionId,clientRequestId:t,durationMs:Math.round(s.responseReadyAtMs-s.startedAtMs),...n}))}failPendingReplyDebugTrace(t,n){const s=this.pendingReplyDebugTraces.find(o=>o.clientRequestId===t);s&&(ge(`session_send.${s.mode}.client_error`,{sessionId:this.sessionId,clientRequestId:t,durationMs:Math.round(performance.now()-s.startedAtMs),error:n instanceof Error?n.message:String(n)}),this.removePendingReplyDebugTrace(s.clientRequestId))}completePendingReplyDebugTrace(t){const n=this.pendingReplyDebugTraces[0];if(!n)return;const s=performance.now();ge(`session_send.${n.mode}.first_assistant_message`,{sessionId:this.sessionId,clientRequestId:n.clientRequestId,durationMs:Math.round(s-n.startedAtMs),responseToAssistantMs:n.responseReadyAtMs===null?null:Math.round(s-n.responseReadyAtMs),messageId:t.message.messageId,kind:t.message.kind,contentLength:t.message.content.length}),this.removePendingReplyDebugTrace(n.clientRequestId)}completePendingReplyDebugTraceWithoutAssistant(t,n={}){const s=this.pendingReplyDebugTraces[0];s&&(ge(t,{sessionId:this.sessionId,clientRequestId:s.clientRequestId,durationMs:Math.round(performance.now()-s.startedAtMs),responseReady:s.responseReadyAtMs!==null,...n}),this.removePendingReplyDebugTrace(s.clientRequestId))}removePendingReplyDebugTrace(t){const n=this.pendingReplyDebugTraces.findIndex(s=>s.clientRequestId===t);n<0||this.pendingReplyDebugTraces.splice(n,1)}logCodexMergeDebug(t,n,s,o,l={}){const c=s.filter(ji);if(c.length===0)return;const u=hn(n),d=hn(o);Lo("session.messages.merge",{sessionId:this.sessionId,source:t,beforeCount:n.length,incomingCount:s.length,afterCount:o.length,incoming:c.slice(0,5).map(Ni),beforeDuplicateGroupCount:u.length,afterDuplicateGroupCount:d.length,afterDuplicateGroups:d.slice(0,3),...l})}}function lr(e){return{messageId:"id"in e?e.id:e.messageId,role:e.role,kind:e.kind??"text",sequence:e.sequence,timestamp:e.timestamp,rawRef:e.rawRef,contentPreview:Mi(e.content)}}function Rt(e){return e.map(t=>lr(t))}function Mi(e){const t=e.replace(/\s+/g," ").trim();return t.length>80?`${t.slice(0,80)}...`:t}function Fe(e,t){const[n,s]=a.useState(()=>t(e.getState()));return a.useEffect(()=>(s(t(e.getState())),e.subscribe(()=>{s(t(e.getState()))})),[t,e]),n}function cr(e){const t=e==null?void 0:e.messageCount;return typeof t=="number"&&Number.isFinite(t)?t:null}function xi(e,t){const n=_o(e),s=cr(t);return s===null?n:Math.max(n,s+1)}function Pi(e,t){const n=yi(t);if(!n)return!1;const s=Ri(e);return s?Fs(n.sequence,n.timestamp,s.sequence,s.timestamp)>=0:!0}function yi(e){let t=null;for(const n of e)(!t||Fs(n.sequence,n.timestamp,t.sequence,t.timestamp)>0)&&(t=n);return t}function Ri(e){let t=null;for(const n of e)n.deliveryState==="sent"&&(!t||Fs(n.sequence,n.timestamp,t.sequence,t.timestamp)>0)&&(t=n);return t}function Fs(e,t,n,s){return e!==n?e-n:t.localeCompare(s)}function Ci(e,t){return t>0?"ready":"loading"}function ki(e,t){const n=cr(e);return n!==null?n>t:t>=kt}function mt(e){return e.olderCursor?!0:e.pagesLoaded>1?e.currentHasOlderMessages:ki(e.session,e.loadedMessageCount)}function Ye(e,t){return e&&{...e,runningState:t,activityState:dr(e,t,e.completedAt??null,Xe(t))}}function an(e,t){return!e||e.lastSeenAt&&e.lastSeenAt>=t?e:{...e,lastSeenAt:t,activityState:e.activityState==="completed_unread"?"idle":e.activityState}}function ln(e,t){return ur(e,{runningState:t.runningState,activityResolutionSource:t.activityResolutionSource,activityConfidence:t.activityConfidence,runId:t.runId,detail:t.detail,interruptSource:t.interruptSource,errorCode:t.errorCode,errorDetail:t.errorDetail,hasActiveRun:t.hasActiveRun,updatedAt:t.updatedAt,watchdogTriggeredAt:t.watchdogTriggeredAt})}function Ti(e,t){return ur(e,t)}function ur(e,t){if(!e)return e;const n=Ei(t.activityResolutionSource),s=Nt(t.runningState)?gs(e.completedAt,t.updatedAt):null,o=t.runningState==="completed"||t.runningState==="interrupted"||t.runningState==="failed"?gs(e.lastEventAt,t.updatedAt):t.updatedAt;return{...e,runningState:t.runningState,activitySource:n,activityResolutionSource:t.activityResolutionSource,activityConfidence:t.activityConfidence,runId:t.runId,lastEventAt:o,completedAt:s,lastErrorCode:t.runningState==="failed"?t.errorCode??e.lastErrorCode:null,lastErrorDetail:t.runningState==="failed"?t.errorDetail??t.detail??e.lastErrorDetail:null,watchdogTriggeredAt:t.watchdogTriggeredAt,updatedAt:gs(e.updatedAt,t.updatedAt)??t.updatedAt,activityState:dr(e,t.runningState,s,t.hasActiveRun)}}function dr(e,t,n,s){return s||Xe(t)?"running":n&&(!e.lastSeenAt||n>e.lastSeenAt)?"completed_unread":e.activityState==="running"||e.activityState==="completed_unread"?"idle":e.activityState??"idle"}function Xe(e){return e==="starting"||e==="running"||e==="reconnecting"}function Nt(e){return e==="completed"||e==="interrupted"||e==="failed"}function cn(e){if(e===null||e.provider==="opencode")return!0;const t=e.modelOptions??[];return t.length===0?!0:t.every(n=>n.usesProviderDefault===!0)}function un(e,t){return e==="session.backfill"?t??"idle":t==="completed"||t==="interrupted"||t==="failed"?t:"running"}function ps(e,t){return Nt(e)?e:t}function fs(e,t){return e.runningState==="failed"?{interruptSource:null,errorCode:e.errorCode,errorDetail:e.errorDetail??e.detail}:e.runningState==="interrupted"?{interruptSource:e.interruptSource??null,errorCode:null,errorDetail:e.detail}:e.runningState==="completed"?{interruptSource:null,errorCode:null,errorDetail:e.detail}:{interruptSource:t,errorCode:null,errorDetail:null}}function Ei(e){return e==="authoritative_runtime"||e==="authoritative_provider_event"?"runtime":e==="inferred_log"?"inferred":"none"}function ji(e){return e.provider==="codex"&&(e.role==="assistant"||e.role==="tool")}function Ai(e){return e.rawRef.startsWith("codex://")&&e.deliveryState==="sent"&&(e.role==="assistant"||e.role==="tool")}function Ni(e){var t;return{id:e.messageId,rawRef:e.rawRef,role:e.role,kind:e.kind??(e.role==="tool"?"tool_result":"text"),sequence:e.sequence,timestamp:e.timestamp,callId:((t=e.toolCall)==null?void 0:t.callId)??null,contentPreview:hr(e.content,e.kind??"text")}}function dn(e){var t;return{id:e.id,rawRef:e.rawRef,role:e.role,kind:e.kind,sequence:e.sequence,timestamp:e.timestamp,callId:((t=e.toolCall)==null?void 0:t.callId)??null,contentPreview:hr(e.content,e.kind)}}function hn(e){const t=new Map;for(const s of e){if(!Ai(s))continue;const o=Li(s),l=t.get(o);if(l){l.push(s);continue}t.set(o,[s])}const n=[];for(const[s,o]of t.entries()){const l=[...o].sort((u,d)=>u.sequence!==d.sequence?u.sequence-d.sequence:u.timestamp.localeCompare(d.timestamp));let c=[];for(const u of l){const d=c.at(-1)??null;if(!d||_i(d,u)){c.push(u);continue}c.length>1&&n.push({signature:s,messages:c.map(dn)}),c=[u]}c.length>1&&n.push({signature:s,messages:c.map(dn)})}return n}function Li(e){var o,l;if(e.kind==="tool_call"||e.kind==="tool_result")return[e.role,e.kind,((o=e.toolCall)==null?void 0:o.callId)??"",((l=e.toolCall)==null?void 0:l.name)??""].join(":");const t=Bn(e.content),n=Cs(t.text),s=t.inlineImages.map(c=>c.url).join("|");return[e.role,e.kind,n,s].join(":")}function _i(e,t){const n=mn(e.timestamp),s=mn(t.timestamp);return Math.abs(n-s)<=120*1e3&&Math.abs(e.sequence-t.sequence)<=8}function hr(e,t){return t==="text"||t==="thinking"?Cs(Bn(e).text).slice(0,160):Cs(e).slice(0,160)}function Cs(e){return e.replace(/\r\n/g,`
|
|
4
|
-
`).trimEnd()}function mn(e){const t=Date.parse(e);return Number.isFinite(t)?t:0}function gs(e,t){return e?t?e>=t?e:t:e:t??null}function pn(){var e,t;if(typeof((e=globalThis.crypto)==null?void 0:e.randomUUID)=="function")return globalThis.crypto.randomUUID();if(typeof((t=globalThis.crypto)==null?void 0:t.getRandomValues)=="function"){const n=new Uint8Array(16);globalThis.crypto.getRandomValues(n),n[6]=n[6]&15|64,n[8]=n[8]&63|128;const s=Array.from(n,o=>o.toString(16).padStart(2,"0")).join("");return`${s.slice(0,8)}-${s.slice(8,12)}-${s.slice(12,16)}-${s.slice(16,20)}-${s.slice(20)}`}return`fallback-${Date.now()}-${Math.random().toString(16).slice(2,10)}`}function mr(e,t){return t&&(!e||e.provider===t.provider)?t:null}function fn(e,t){const n=mr(e,t);return n?!!n.canSendMessage:e?On(e.provider):!1}function gn(e,t){const n=mr(e,t);return n?!(!n.supportsInterrupt||(e==null?void 0:e.provider)==="claude-code"&&e.activitySource==="inferred"):e?e.provider==="codex"||e.provider==="opencode"?!0:e.provider==="claude-code"&&e.activitySource!=="inferred":!1}function Di(e,t,n){return t===!0||n===!0?!0:e?e.activityState==="running"||e.runningState==="starting"||e.runningState==="running"||e.runningState==="reconnecting"||e.runningState==="stale"||e.runningState==="unknown":!1}function vs(e,t,n){return n?!0:e===!0&&Xe(t)}function bs(e,t,n,s){return s?!0:e===!0&&(n||Xe(t))}function ws(e){return`session-runtime.snapshot.${e}`}function Oi(e){return e.filter(t=>t.deliveryState==="sent").slice(-ar)}function Hi(e,t){const n=e.filter(s=>s.id!==t.id);return n.push(t),n.sort((s,o)=>s.orderIndex-o.orderIndex),n}function Ss(e,t){const n=e.filter(s=>s.id!==t.id);return n.push(t),n.sort((s,o)=>s.status!==o.status?s.status==="pending"?-1:1:o.createdAt.localeCompare(s.createdAt)),n}function Vt(e,t){if(!e)return t;if(!t||vn(e,t)||bn(e,t))return e;if(vn(t,e)||bn(t,e))return t;const n=Date.parse(e.updatedAt||e.lastMessageAt||e.createdAt),s=Date.parse(t.updatedAt||t.lastMessageAt||t.createdAt);return!Number.isFinite(n)||!Number.isFinite(s)?t:n>=s?e:t}function vn(e,t){return wn(e)&&!wn(t)&&e.lastEventAt===t.lastEventAt&&e.lastMessageAt===t.lastMessageAt&&e.completedAt===t.completedAt}function bn(e,t){if(!Sn(e)||Sn(t))return!1;const n=e.completedAt??e.lastEventAt??null;return n?(!t.lastEventAt||t.lastEventAt<=n)&&(!t.completedAt||t.completedAt<=n):!1}function wn(e){return e.activityState==="running"||Xe(e.runningState)}function Sn(e){return Nt(e.runningState)}const Fi="workbench:focus-composer",Bi=15e3,Wi=320;function pr(){typeof window>"u"||window.dispatchEvent(new CustomEvent(Fi))}function fr(e){var J,te,Se;const t=a.useRef(null),n=a.useRef(null),[s,o]=a.useState(!1),[l,c]=a.useState(null),[u,d]=a.useState(null),[p,S]=a.useState(null),[M,L]=a.useState(null),w=nt(),{showToast:b}=w,v=w.dismissToast??(()=>{}),A=ho(P=>P.notificationPreferences.notifyOnPermissionRequest),x=St(),_=As(),T=a.useRef(null),j=a.useRef(null),N=a.useRef(null),R=a.useRef(((J=e.externalSession)==null?void 0:J.runningState)??null),C=a.useRef(new Set);(!t.current||n.current!==e.sessionId)&&((te=t.current)==null||te.destroy(),t.current=new Ii(e.sessionId,{initialSession:e.externalSession,bootstrapMessages:e.bootstrapMessages??[],onSeen:e.onSeen}),n.current=e.sessionId);const m=t.current,f=Fe(m,P=>P.session),D=Fe(m,P=>P.capabilities),G=Fe(m,P=>P.runtimeHasActiveRun),Y=Fe(m,P=>P.runtimeCanInterrupt),K=Fe(m,P=>P.messages),ee=Fe(m,P=>P.permissionRequests),H=Fe(m,P=>P.queuedMessages),ve=Fe(m,P=>P.contextUsage),F=Fe(m,P=>P.historyState),g=Fe(m,P=>P.errorCode),$=Fe(m,P=>P.errorDetail),W=Fe(m,P=>P.interruptSource),Q=Fe(m,P=>P.loadingOlderMessages),ae=Fe(m,P=>P.hasOlderMessages),de=Fe(m,P=>P.connectionState),ce=Hn(f),pe=s&&!M,k=ce||G===!0||pe?!0:G,V=Y===!0||pe?!0:Y,z=ce||pe,q=(f==null?void 0:f.provider)===(D==null?void 0:D.provider)&&mo(D),le=H.some(P=>P.status==="queued"||P.status==="dispatching"),B=f??e.externalSession??null,ne=e.enableForkTimelineSanitizer===!1?K:zi(B,K),Ie=$i({sessionId:e.sessionId,provider:(f==null?void 0:f.provider)??null,runningState:(f==null?void 0:f.runningState)??null,activityState:(f==null?void 0:f.activityState)??null,runtimeHasActiveRun:G,messages:ne}),je=e.enableThinkingPlaceholder===!1||!Ie?null:i("conversation.runtimeThinkingPlaceholder",{provider:i("conversation.providerCodex")});fi({sending:s,setSending:o,session:f,runtimeHasActiveRun:G,runtimeCanInterrupt:Y}),a.useEffect(()=>{m.applyNavigationSession(e.externalSession)},[e.externalSession,m]),a.useEffect(()=>(m.initialize(),()=>{m.destroy(),t.current===m&&(t.current=null)}),[m]),a.useEffect(()=>{L(null),C.current.clear()},[e.sessionId]),a.useEffect(()=>{if(e.onBindSessionWorkspace)return e.onBindSessionWorkspace(e.sessionId,(f==null?void 0:f.workspaceId)??null),()=>{var P;(P=e.onBindSessionWorkspace)==null||P.call(e,e.sessionId,null)}},[e.onBindSessionWorkspace,e.sessionId,f==null?void 0:f.workspaceId]),a.useEffect(()=>{if(e.enableCompletionHaptics===!1)return;const P=R.current,E=(f==null?void 0:f.runningState)??null;(P==="starting"||P==="running"||P==="reconnecting")&&E==="completed"&&_.trigger("success"),R.current=E},[_,e.enableCompletionHaptics,f==null?void 0:f.runningState]),a.useEffect(()=>{var Te;if((e.permissionRequestNotificationMode??"always")==="current_only"&&!e.isCurrent)return;const E=ee.filter(xe=>xe.status==="pending"),be=(f==null?void 0:f.workspaceId)??((Te=e.externalSession)==null?void 0:Te.workspaceId)??null;for(const xe of E)C.current.has(xe.id)||(C.current.add(xe.id),A&&(b({id:`${e.permissionToastIdPrefix??"permission-request"}-${xe.id}`,title:i("conversation.permissionRequestToastTitle"),description:xe.title,tone:"warning",durationMs:8e3,action:be&&e.onNavigateToSession?{label:i("shell.contextOpenSession"),onClick:()=>{var We;(We=e.onNavigateToSession)==null||We.call(e,be,e.sessionId)}}:void 0}),x.bridge.showNotification(i("conversation.permissionRequestToastTitle"),xe.title)))},[(Se=e.externalSession)==null?void 0:Se.workspaceId,e.isCurrent,e.onNavigateToSession,e.permissionRequestNotificationMode,e.permissionToastIdPrefix,e.sessionId,A,ee,x.bridge,f==null?void 0:f.workspaceId,b]),a.useEffect(()=>{if(e.enableRuntimeErrorHandling!==!1)return()=>{N.current!==null&&(window.clearTimeout(N.current),N.current=null)}},[e.enableRuntimeErrorHandling]),a.useEffect(()=>{var P;e.enableRuntimeErrorHandling!==!1&&(g!=="SESSION_NOT_FOUND"&&g!=="WORKSPACE_NOT_FOUND"||(v("conversation-runtime-error"),(P=e.onResolveMissingSession)==null||P.call(e)))},[v,e.enableRuntimeErrorHandling,e.onResolveMissingSession,g]),a.useEffect(()=>{if(e.enableRuntimeErrorHandling===!1)return;if(g==="SESSION_NOT_FOUND"||g==="WORKSPACE_NOT_FOUND"){N.current!==null&&(window.clearTimeout(N.current),N.current=null),j.current=null,T.current=null,v("conversation-runtime-error");return}if(!g||!$){N.current!==null&&(window.clearTimeout(N.current),N.current=null),j.current=null,T.current=null,v("conversation-runtime-error");return}const P=`${g}:${$}`;if(!(T.current===P||j.current===P)){if(N.current!==null&&(window.clearTimeout(N.current),N.current=null),Ui((f==null?void 0:f.provider)??null,g,$)){j.current=P,N.current=window.setTimeout(()=>{j.current=null,N.current=null,T.current=P,b({id:"conversation-runtime-error",title:i("conversation.runtimeErrorTitle"),description:$,tone:"error",durationMs:null})},Bi);return}j.current=null,T.current=P,b({id:"conversation-runtime-error",title:i("conversation.runtimeErrorTitle"),description:$,tone:"error",durationMs:null})}},[v,e.enableRuntimeErrorHandling,g,$,f==null?void 0:f.provider,b]);const O=a.useCallback(async(P,E)=>{var xe,We,oe,Ae,Z,ze,ue;const be=M;if(!be){await m.sendMessage(P,{model:E==null?void 0:E.model,reasoningLevel:E==null?void 0:E.reasoningLevel,providerConfigMode:E==null?void 0:E.providerConfigMode,providerPresetId:(E==null?void 0:E.providerPresetId)??null,attachments:E==null?void 0:E.attachments,attachmentMeta:E==null?void 0:E.attachmentMeta}),(xe=e.onRequestNavigationRefresh)==null||xe.call(e);return}let Te=null;try{Te=await Ln(e.sessionId,{sourceType:"message",sourceMessageId:be.sourceMessageId,sourceMessageSnapshot:be.sourceMessageSnapshot,strategy:"auto",targetProvider:be.targetProvider,providerConfigMode:be.targetProviderConfigMode??(E==null?void 0:E.providerConfigMode),providerPresetId:be.targetProviderPresetId??(E==null?void 0:E.providerPresetId)??null}),(We=e.onUpsertNavigationSession)==null||We.call(e,Te),await js(Te.sessionId,{content:P,clientRequestId:qi(),model:be.targetModel,reasoningLevel:(E==null?void 0:E.reasoningLevel)??null,permissionMode:it(),attachments:(E==null?void 0:E.attachments)??[],providerConfigMode:be.targetProviderConfigMode??(E==null?void 0:E.providerConfigMode),providerPresetId:be.targetProviderPresetId??(E==null?void 0:E.providerPresetId)??null}),L(null),(oe=e.onRequestNavigationRefresh)==null||oe.call(e),(Ae=e.onNavigateToSession)==null||Ae.call(e,Te.workspaceId,Te.sessionId),(Z=e.onForkSuccess)==null||Z.call(e,Te)}catch(Ne){throw Te&&((ze=e.onUpsertNavigationSession)==null||ze.call(e,Te),(ue=e.onRequestNavigationRefresh)==null||ue.call(e)),Ne}},[M,e,m]),U=a.useCallback(async(P,E)=>{o(!0);try{await O(P,E)}finally{o(!1)}},[O]),he=a.useCallback(async(P,E)=>{o(!0);try{M?await O(P,E):await m.enqueueMessage(P,{model:E==null?void 0:E.model,reasoningLevel:E==null?void 0:E.reasoningLevel,providerConfigMode:E==null?void 0:E.providerConfigMode,providerPresetId:(E==null?void 0:E.providerPresetId)??null,attachments:E==null?void 0:E.attachments,attachmentMeta:E==null?void 0:E.attachmentMeta})}finally{o(!1)}},[M,O,m]),Me=a.useCallback(async(P,E)=>{c(P);try{await m.replyPermissionRequest(P,E)}catch(be){b({title:i("conversation.permissionRequestReplyFailed"),description:be instanceof Error?be.message:void 0,tone:"error"})}finally{c(null)}},[b,m]),fe=a.useCallback(async P=>{d(P);try{await m.deleteQueuedMessage(P)}finally{d(null)}},[m]),Ce=a.useCallback(async P=>{var E;S(P);try{await m.steerQueuedMessage(P),(E=e.onRequestNavigationRefresh)==null||E.call(e)}finally{S(null)}},[e.onRequestNavigationRefresh,m]),De=a.useCallback(async()=>{var P;await m.interrupt(),(P=e.onRequestNavigationRefresh)==null||P.call(e)},[e.onRequestNavigationRefresh,m]);return{session:B,capabilities:D,runtimeHasActiveRun:G,runtimeCanInterrupt:Y,messages:K,timelineMessages:ne,permissionRequests:ee,queuedMessages:H,contextUsage:ve,historyState:F,runtimeErrorCode:g,runtimeErrorDetail:$,runtimeInterruptSource:W,loadingOlderMessages:Q,hasOlderMessages:ae,connectionState:de,sending:s,replyingPermissionRequestId:l,deletingQueueItemId:u,steeringQueueItemId:p,forkDraft:M,setForkDraft:L,composerHasActiveRun:k,composerCanInterrupt:V,composerIsRunning:z,canSteerQueuedMessage:q,hasPendingQueuedMessages:le,runtimeThinkingPlaceholder:je,reconnect:m.reconnect.bind(m),loadOlderMessages:m.loadOlderMessages.bind(m),retryMessage:m.retryMessage.bind(m),send:U,queue:he,interrupt:De,replyPermissionRequest:Me,deleteQueuedMessage:fe,steerQueuedMessage:Ce}}function qi(){const e=globalThis.crypto;return e&&typeof e.randomUUID=="function"?e.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}function Ui(e,t,n){return e!=="opencode"?!1:t==="OPENCODE_REQUEST_TIMEOUT"||t==="PROVIDER_RUNTIME_TIMEOUT"||/\bSERVER_TIMEOUT\b/i.test(n)||/timeout/i.test(n)||/超时/.test(n)}function $i(e){const t=Vi(e),[n,s]=a.useState(t==="show"),o=a.useRef(null);return a.useEffect(()=>{o.current!==null&&(window.clearTimeout(o.current),o.current=null),s(t==="show")},[e.sessionId]),a.useEffect(()=>{if(t==="show"){o.current!==null&&(window.clearTimeout(o.current),o.current=null),s(!0);return}if(t==="hide_immediately"){o.current!==null&&(window.clearTimeout(o.current),o.current=null),s(!1);return}!n||o.current!==null||(o.current=window.setTimeout(()=>{o.current=null,s(!1)},Wi))},[t,n]),a.useEffect(()=>()=>{o.current!==null&&window.clearTimeout(o.current)},[]),n}function Vi(e){const{provider:t,runningState:n,activityState:s,runtimeHasActiveRun:o,messages:l}=e;if(t!=="codex")return"hide_immediately";const c=Yi(l);return c<0||Xi(l,c)?"hide_immediately":Gi(n,s,o)?"show":"hide_deferred"}function Gi(e,t,n){return n===!0||t==="running"||e==="starting"||e==="running"||e==="reconnecting"}function Xi(e,t){return e.slice(t+1).some(n=>n.role==="assistant"&&(n.kind==="text"||n.kind==="thinking"))}function Yi(e){let t=-1;for(let n=e.length-1;n>=0;n-=1){const s=e[n];if(s.role==="user"&&s.kind==="text"){t=n;break}}return t}function zi(e,t){var o;if(!e||e.forkSourceType!=="message"||typeof e.inheritedPrefixMessageCount!="number"||e.inheritedPrefixMessageCount<0)return t;const n=((o=e.createdAt)==null?void 0:o.trim())||"";if(n.length===0)return t;const s=Math.max(0,e.inheritedPrefixMessageCount);return t.filter(l=>l.sequence<=s?!0:l.timestamp>=n)}const Qi=1.5,Ki=24,Zi=72,Ji=296,ea=16,In={2:496,3:408,4:344};function gr(e){return In[e]??In[4]}function ta({memberCount:e,currentWidth:t,monitorWidth:n}){if(e<2||t<=0||n<=0)return t;const s=Ji,o=Math.max(0,e-1)*ea,l=Math.max(0,(t-s-o)/e),c=gr(e);if(l>=c)return t;const u=s+o+e*c,d=Math.min(t*Qi,Math.max(t,n-Zi)),p=Math.min(Math.max(t,u),d);return p<=t+Ki?t:p}const sa=240,Mn=920,xn=760,Bs=360,Ws=320,Be=16,Pn=428,na=404,Je=12;function jt(e,t){if(typeof window>"u")return e;const n=Math.max(0,window.innerWidth-Be*2),s=Math.max(0,window.innerHeight-Be*2),o=Math.min((t==null?void 0:t.minWidth)??Bs,n),l=Math.min((t==null?void 0:t.minHeight)??Ws,s),c=Math.max(o,n),u=Math.max(l,s),d=Math.min(Math.max(e.width,o),c),p=Math.min(Math.max(e.height,l),u),S=Math.min(Math.max(e.x,Be),Math.max(Be,window.innerWidth-d-Be)),M=Math.min(Math.max(e.y,Be),Math.max(Be,window.innerHeight-p-Be));return{x:S,y:M,width:d,height:p}}function ra(e){if(typeof window>"u")return{x:Be,y:Be,width:Mn,height:xn};const t=Math.min(Mn,Math.max(Bs,window.innerWidth-Be*2)),n=Math.min(xn,Math.max(Ws,window.innerHeight-Be*2));return jt({x:((e==null?void 0:e.right)??window.innerWidth-Be)-t+28,y:Math.max(((e==null?void 0:e.bottom)??48)+8,Be),width:t,height:n})}function oa(e){return!e||e.width<=0||e.height<=0?null:jt({x:e.left,y:e.top,width:e.width,height:e.height},{minWidth:Math.min(Bs,e.width),minHeight:Math.min(Ws,e.height)})}function ia(e){if(typeof window>"u")return{x:Je,y:Je,width:Pn};const t=Math.min(Pn,Math.max(na,window.innerWidth-Je*2));return{x:Math.min(Math.max(((e==null?void 0:e.right)??window.innerWidth-Je)-t,Je),Math.max(Je,window.innerWidth-t-Je)),y:Math.max(Je,((e==null?void 0:e.bottom)??Je)+8),width:t}}function aa({groupId:e,currentSessionId:t}){var de,ce,pe;const n=lt(),s=St(),o=Wn(s),{showToast:l}=nt(),{navigationGroups:c,requestNavigationRefresh:u}=bt(),d=a.useMemo(()=>ts(c),[c]),p=a.useMemo(()=>new Map(d.map(k=>[k.session.sessionId,k])),[d]),S=a.useMemo(()=>ss(d),[d]),M=a.useMemo(()=>{const k=new Map,V=z=>{for(const q of z)k.set(q.item.session.sessionId,q),V(ns(q))};return V(S),k},[S]),L=a.useMemo(()=>Ns(c),[c]),[w,b]=a.useState(null),[v,A]=a.useState(!0),[x,_]=a.useState(null),[T,j]=a.useState(null),[N,R]=a.useState(null),[C,m]=a.useState(null),[f,D]=a.useState(null),[G,Y]=a.useState(!1),K=a.useRef(null),ee=a.useRef(null);a.useEffect(()=>{let k=!1;async function V(){A(!0),_(null);try{const z=await po(e);if(k)return;b(z)}catch(z){if(k)return;_(z instanceof Error?z.message:i("shell.parallelGroupLoadFailed"))}finally{k||A(!1)}}return V(),()=>{k=!0}},[e]),a.useEffect(()=>{const k=Oo(e);k&&g(k)},[e]),a.useEffect(()=>()=>{ee.current!==null&&window.clearTimeout(ee.current)},[]);const H=a.useMemo(()=>w?w.members.slice().sort((k,V)=>k.member.ordinal-V.member.ordinal).map(k=>{const V=p.get(k.session.sessionId),z=(V==null?void 0:V.session)??k.session;return{session:z,workspaceId:(V==null?void 0:V.workspace.id)??zt(z,k.sessionIsolatedWorkspace),ordinal:k.member.ordinal,memberPrompt:k.member.memberPrompt,model:k.member.model,sessionIsolatedWorkspace:k.sessionIsolatedWorkspace,subagentTree:ga(z.sessionId,w.group.id,M)}}):[],[w,p,M]);a.useEffect(()=>{if(!s.isDesktop||s.ui.osFamily!=="macos"&&s.ui.osFamily!=="windows"||H.length<2)return;const k=`${e}:${H.length}`;if(K.current===k)return;K.current=k;let V=!1;async function z(){try{const q=await Us(()=>import("./window-BVUB8gMK.js").then(Ce=>Ce.w),__vite__mapDeps([0,1])),le=await Us(()=>import("./window-BVUB8gMK.js").then(Ce=>Ce.d),__vite__mapDeps([0,1])),B=q.getCurrentWindow(),ne=await B.innerSize(),Ie=await B.scaleFactor(),je=await q.currentMonitor();if(V||Ie<=0)return;const O=ne.width/Ie,U=ne.height/Ie,he=je?je.workArea.size.width/je.scaleFactor:O*1.5,Me=ta({memberCount:H.length,currentWidth:O,monitorWidth:he});if(Me<=O+24)return;const fe=10;await new Promise(Ce=>window.setTimeout(Ce,56));for(let Ce=1;Ce<=fe;Ce+=1){if(V)return;const De=Ce/fe,J=1-Math.pow(1-De,3),te=O+(Me-O)*J;await B.setSize(new le.LogicalSize(te,U)),await new Promise(Se=>window.setTimeout(Se,sa/fe))}}catch{return}}return z(),()=>{V=!0}},[e,H.length,s.isDesktop,s.ui.osFamily]);async function ve(k){R(k);try{const V=await go(k);await u(),b(z=>z&&{...z,members:z.members.map(q=>{var le;return((le=q.sessionIsolatedWorkspace)==null?void 0:le.id)===k?{...q,sessionIsolatedWorkspace:{...q.sessionIsolatedWorkspace,workspaceId:V.workspace.id,lifecycleStatus:"promoted",promotedAt:V.record.promotedAt}}:q})}),l({title:i("shell.parallelWorkspacePromotedBadge"),tone:"success"})}catch(V){l({title:V instanceof Error?V.message:i("shell.parallelGroupLoadFailed"),tone:"error"})}finally{R(null)}}async function F(k){if(C)return;const V=k.trim();if(!V)return;const z=H.find(le=>le.session.sessionId!==V)??null,q=(w==null?void 0:w.group.workspaceId)??(z==null?void 0:z.workspaceId)??null;m(V);try{await fo(V),ys(V,null),j(le=>le===V?null:le),b(le=>le&&{...le,members:le.members.filter(B=>B.session.sessionId!==V)}),await u(),t===V&&(z?n($e(z.workspaceId,z.session.sessionId)):q&&n(Tt(q))),l({title:i("shell.deleteSessionSuccess"),tone:"success"})}catch(le){l({title:le instanceof Error?le.message:i("shell.deleteSessionFailed"),tone:"error"})}finally{m(null)}}function g(k){D(k),ee.current!==null&&window.clearTimeout(ee.current),ee.current=window.setTimeout(()=>{D(null),ee.current=null},k.totalDurationMs)}if(v&&!w)return r.jsx("main",{className:"workbench-page conversation-page-shell parallel-conversation-page",children:r.jsx("section",{className:"parallel-conversation-empty-state",children:r.jsx("strong",{children:i("shell.parallelCreateSubmitting")})})});if(x&&!w)return r.jsx("main",{className:"workbench-page conversation-page-shell parallel-conversation-page",children:r.jsxs("section",{className:"parallel-conversation-empty-state error",children:[r.jsx("strong",{children:i("shell.parallelGroupLoadFailed")}),r.jsx("p",{children:x})]})});if(H.length===0)return r.jsx("main",{className:"workbench-page conversation-page-shell parallel-conversation-page",children:r.jsx("section",{className:"parallel-conversation-empty-state",children:r.jsx("strong",{children:i("shell.parallelGroupEmpty")})})});const $=((de=L[(w==null?void 0:w.group.workspaceId)??""])==null?void 0:de.displayName)??(w==null?void 0:w.group.workspaceId)??i("common.unknown"),W=H.find(k=>k.session.sessionId===(w==null?void 0:w.group.anchorSessionId))??H[0]??null,Q=H.length<4,ae={"--parallel-pane-min-width":`${gr(H.length)}px`,...f?{"--parallel-pane-enter-delay":`${f.paneEnterDelayMs}ms`,"--parallel-pane-enter-duration":`${f.paneEnterDurationMs}ms`,"--parallel-grid-reveal-delay":`${f.gridRevealDelayMs}ms`,"--parallel-grid-reveal-duration":`${f.gridRevealDurationMs}ms`,"--parallel-shell-expand-duration":`${f.shellExpandDurationMs}ms`,"--parallel-pane-stagger-delay":`${f.paneStaggerMs}ms`}:{}};return r.jsxs("main",{className:"workbench-page conversation-page-shell parallel-conversation-page","data-parallel-count":H.length,"data-parallel-entering":f?"true":void 0,style:ae,children:[r.jsx("header",{className:"parallel-conversation-group-header","data-window-drag-handle":"parallel-conversation-group-titlebar","data-tauri-drag-region":o,children:r.jsxs("div",{className:"parallel-conversation-group-titlebar","data-tauri-drag-region":o,children:[r.jsxs("div",{className:"parallel-conversation-group-titlemain","data-tauri-drag-region":o,children:[r.jsx("span",{className:"session-parallel-badge",children:i("shell.parallelGroupBadge")}),r.jsx("strong",{"data-tauri-drag-region":o,children:((ce=w==null?void 0:w.group.sharedPrompt)==null?void 0:ce.trim())||i("common.unknown")})]}),r.jsx("button",{type:"button",className:"secondary-button parallel-conversation-group-add-button","aria-label":i("shell.parallelAppendAction"),title:i("shell.parallelAppendAction"),"data-window-drag":"ignore",disabled:!Q,onClick:()=>{Q&&Y(!0)},children:r.jsx("span",{"aria-hidden":"true",children:"+"})})]})}),r.jsx("div",{className:"parallel-conversation-grid",children:H.map(k=>{const V=L[k.workspaceId]??Ls({id:k.workspaceId,name:k.session.workspaceId,path:k.session.workspaceId,repoRoot:k.session.workspaceId});return r.jsx(la,{entry:k,isCurrent:k.session.sessionId===t||_t(k.subagentTree,t),routeCurrentSessionId:t,workspaceContext:V,infoOpen:T===k.session.sessionId,promotingWorkspaceId:N,onCloseInfo:()=>{j(null)},onToggleInfo:()=>{j(z=>z===k.session.sessionId?null:k.session.sessionId)},onPromoteWorkspace:ve,onRemoveSession:F,removingSessionId:C},k.session.sessionId)})}),r.jsx(Ps,{open:G,source:w?{kind:"group",groupId:w.group.id,workspaceId:w.group.workspaceId,workspaceName:$,sharedPrompt:((pe=w.group.sharedPrompt)==null?void 0:pe.trim())||"",currentMemberCount:H.length,defaultProvider:(W==null?void 0:W.session.provider)??"codex"}:null,onClose:()=>Y(!1),onCreated:async k=>{b(k),Y(!1),g(Do("append")),await u(),l({title:i("shell.parallelAppendSucceeded"),tone:"success"})}})]})}function la({entry:e,isCurrent:t,routeCurrentSessionId:n,workspaceContext:s,infoOpen:o,onCloseInfo:l,onToggleInfo:c,onPromoteWorkspace:u,promotingWorkspaceId:d,onRemoveSession:p,removingSessionId:S}){var Ht,Mt,ht,xt,Ft,Bt,Wt;const M=lt(),L=St(),{showToast:w}=nt(),{navigationGroups:b,requestNavigationRefresh:v,setSessionWorkspace:A,upsertNavigationSession:x,markNavigationSessionSeen:_,selectWorkspace:T}=bt(),j=e.session.sessionId,[N,R]=a.useState(()=>va(e,n)),C=a.useMemo(()=>new Map(ts(b).map(y=>[y.session.sessionId,y])),[b]),m=N===j?e.session:((Ht=C.get(N))==null?void 0:Ht.session)??br(e.subagentTree,N)??e.session,f=N===j?e.workspaceId:((Mt=C.get(N))==null?void 0:Mt.workspace.id)??wr(e.subagentTree,N)??e.workspaceId,D=m.sessionId,[G,Y]=a.useState(!1),[K,ee]=a.useState("files"),[H,ve]=a.useState(!1),[F,g]=a.useState(null),[$,W]=a.useState(null),Q=a.useRef(null),ae=a.useRef(null),de=a.useRef(null),ce=a.useRef(null),pe=a.useRef(null),k=a.useRef(null),[V,z]=a.useState(()=>Zs(j)),{session:q,capabilities:le,messages:B,timelineMessages:ne,permissionRequests:Ie,queuedMessages:je,contextUsage:O,historyState:U,runtimeInterruptSource:he,loadingOlderMessages:Me,hasOlderMessages:fe,connectionState:Ce,sending:De,replyingPermissionRequestId:J,deletingQueueItemId:te,steeringQueueItemId:Se,forkDraft:P,setForkDraft:E,composerHasActiveRun:be,composerCanInterrupt:Te,composerIsRunning:xe,canSteerQueuedMessage:We,hasPendingQueuedMessages:oe,runtimeThinkingPlaceholder:Ae,reconnect:Z,loadOlderMessages:ze,retryMessage:ue,send:Ne,queue:Oe,interrupt:ct,replyPermissionRequest:tt,deleteQueuedMessage:rt,steerQueuedMessage:ut}=fr({sessionId:D,externalSession:m,onSeen:(y,ie)=>{_(y,ie)},onRequestNavigationRefresh:v,onUpsertNavigationSession:x,onNavigateToSession:(y,ie)=>{T(y),M($e(y,ie))},onBindSessionWorkspace:N===j?A:void 0,onResolveMissingSession:()=>{v()},permissionRequestNotificationMode:"current_only",permissionToastIdPrefix:"parallel-permission-request",isCurrent:t,enableRuntimeErrorHandling:!0,enableCompletionHaptics:!1,enableThinkingPlaceholder:!0,enableForkTimelineSanitizer:!0}),Qe=Ho((q==null?void 0:q.parallelGroup)??e.session.parallelGroup),Ke=Fo({groupId:((ht=(q==null?void 0:q.parallelGroup)??e.session.parallelGroup)==null?void 0:ht.groupId)??"parallel-group",ordinal:e.ordinal,overrideColor:V}),dt=Bo((q==null?void 0:q.parallelGroup)??e.session.parallelGroup),Pe=(q==null?void 0:q.sessionIsolatedWorkspace)??e.sessionIsolatedWorkspace,st=Wo(Pe),Ze=((xt=O==null?void 0:O.modelId)==null?void 0:xt.trim())||((Ft=e.model)==null?void 0:Ft.trim())||i("shell.parallelPaneModelFallback"),Ue=((Bt=e.memberPrompt)==null?void 0:Bt.trim())||i("shell.parallelPanePromptFallback"),ye=f,h=qn(q??m,Pe),X=h===ye?(s==null?void 0:s.displayName)??ye:st??Ue,re=a.useMemo(()=>{var y;return((y=b.find(ie=>ie.workspace.id===h))==null?void 0:y.workspace.path)??null},[b,h]),me=S===D;async function Le(y){await Ne(Object.entries(y.answers).map(([,ie])=>ie.filter(Boolean).join(" / ")).filter(Boolean).join(`
|
|
5
|
-
`))}const He=o&&$?{...ft(s)??{},...Qe??{},...Ke,left:`${$.x}px`,top:`${$.y}px`,width:`${$.width}px`}:void 0,Ee=G&&F?{...ft(s)??{},...Qe??{},...Ke,left:`${F.x}px`,top:`${F.y}px`,width:`${F.width}px`,height:`${F.height}px`}:void 0;a.useEffect(()=>{z(Zs(j)),Y(!1),ve(!1),g(null),W(null),ee("files")},[j]),a.useEffect(()=>{if(_t(e.subagentTree,n)){R(n);return}if(n===j){R(j);return}R(y=>ba(e,y)?y:j)},[e,j,n]),a.useEffect(()=>{if(!o)return;const y=ie=>{var qe,Ge,I;const Ve=ie.target;Ve instanceof HTMLElement&&((qe=ae.current)!=null&&qe.contains(Ve)||(Ge=ce.current)!=null&&Ge.contains(Ve)||(I=pe.current)!=null&&I.contains(Ve)||l())};return window.addEventListener("pointerdown",y),()=>{window.removeEventListener("pointerdown",y)}},[o,l]),a.useEffect(()=>{if(!o){W(null);return}const y=()=>{var ie;W(ia(((ie=de.current)==null?void 0:ie.getBoundingClientRect())??null))};return y(),window.addEventListener("resize",y),window.addEventListener("scroll",y,!0),()=>{window.removeEventListener("resize",y),window.removeEventListener("scroll",y,!0)}},[o]),a.useEffect(()=>{if(!G)return;const y=()=>{g(ie=>ie&&jt(ie))};return window.addEventListener("resize",y),()=>{window.removeEventListener("resize",y)}},[G]);async function _e(){if(h===ye&&T(ye),L.isDesktop&&L.bridge.supported){const y=await Go(L,{workspaceId:h,workspaceName:X,focusOwner:"terminal-page"});y.ok||w({title:y.detail??i("terminalManager.openExternalFailed"),tone:"error"});return}M(Xo(h))}async function Re(){if(!(!L.isDesktop||!L.bridge.supported)){if(K==="files"){const y=await Uo(L,{workspaceId:h,workspaceName:X,sessionId:D,focusOwner:"file-context-panel"});y.ok||w({title:y.detail??i("conversation.filePanelOpenExternalFailed"),tone:"error"});return}if(K==="git"){const y=await $o(L,{workspaceId:h,workspaceName:X,focusOwner:"git-sidebar"});y.ok||w({title:y.detail??i("git.openExternalFailed"),tone:"error"});return}if(K==="processes"){const y=await Vo(L,{workspaceId:h,workspaceName:X,focusOwner:"terminal-manager-panel"});y.ok||w({title:y.detail??i("terminalManager.openExternalFailed"),tone:"error"});return}await _e()}}function ot(){var y,ie;Y(!0),g(oa(((y=Q.current)==null?void 0:y.getBoundingClientRect())??null)??ra(((ie=k.current)==null?void 0:ie.getBoundingClientRect())??null))}function os(y){if(y.button!==0||!F)return;y.preventDefault();const ie=y.clientX,Ve=y.clientY,qe=F,Ge=se=>{g(jt({...qe,x:qe.x+(se.clientX-ie),y:qe.y+(se.clientY-Ve)}))},I=()=>{window.removeEventListener("pointermove",Ge),window.removeEventListener("pointerup",I)};window.addEventListener("pointermove",Ge),window.addEventListener("pointerup",I)}function Dt(y){if(y.button!==0||!F)return;y.preventDefault(),y.stopPropagation();const ie=y.clientX,Ve=y.clientY,qe=F,Ge=se=>{g(jt({...qe,width:qe.width+(se.clientX-ie),height:qe.height+(se.clientY-Ve)}))},I=()=>{window.removeEventListener("pointermove",Ge),window.removeEventListener("pointerup",I)};window.addEventListener("pointermove",Ge),window.addEventListener("pointerup",I)}const Ot=G&&typeof document<"u"?vt.createPortal(r.jsxs("div",{ref:pe,className:"parallel-pane-tools-popover","data-parallel-pane-layer":D,"data-pinned":H?"true":void 0,"data-workspace-tone":(s==null?void 0:s.tone)??"root",style:Ee,children:[r.jsxs("div",{className:"parallel-pane-tools-toolbar",children:[r.jsxs("div",{className:"parallel-pane-tools-drag-handle",onPointerDown:os,children:[r.jsx("span",{className:"parallel-pane-tools-drag-dots","aria-hidden":"true",children:r.jsx(da,{})}),r.jsx("span",{children:i("shell.parallelPaneToolsAction")})]}),r.jsx("div",{className:"parallel-pane-tools-tabs",role:"tablist","aria-label":i("shell.parallelPaneToolsAction"),children:["files","git","processes","terminals"].map(y=>r.jsx("button",{type:"button",role:"tab","aria-selected":K===y,className:"parallel-pane-tools-tab",onClick:()=>{ee(y)},children:y==="files"?i("shell.filesEntry"):y==="git"?i("shell.gitEntry"):y==="processes"?i("shell.parallelPaneProcessesEntry"):i("shell.terminalsEntry")},y))}),r.jsxs("div",{className:"parallel-pane-tools-actions",children:[r.jsx("button",{type:"button",className:`conversation-header-ai-button${H?" active":""}`,"aria-label":i("shell.parallelPanePinAction"),title:i("shell.parallelPanePinAction"),"aria-pressed":H,onClick:()=>{ve(y=>!y)},children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(ha,{})})}),L.isDesktop&&L.bridge.supported?r.jsx("button",{type:"button",className:"conversation-header-ai-button","aria-label":i("shell.parallelPaneDetachAction"),title:i("shell.parallelPaneDetachAction"),onClick:()=>{Re()},children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(ma,{})})}):null,r.jsx("button",{type:"button",className:"conversation-header-ai-button","aria-label":i("common.close"),title:i("common.close"),onClick:()=>{Y(!1)},children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(pa,{})})})]})]}),r.jsx("div",{className:"parallel-pane-tools-body","data-panel":K,children:K==="files"?r.jsx(Kn,{className:"parallel-pane-tools-surface",hideHeading:!0,sessionId:D,workspaceId:h}):K==="git"?r.jsx(Zn,{className:"parallel-pane-tools-surface",panelActive:!0,workspaceId:h}):K==="processes"?r.jsx(Jn,{className:"parallel-pane-tools-surface parallel-pane-tools-process-panel",currentWorkspaceId:h,navigationGroups:b}):r.jsx(ni,{embeddedMode:!0,externalWindowWorkspaceId:h,workbenchShellOverrides:{navigationGroups:b,currentWorkspaceId:h,selectWorkspace:T}})}),r.jsx("button",{type:"button",className:"parallel-pane-tools-resize-handle","aria-label":i("shell.parallelPaneResizeAction"),title:i("shell.parallelPaneResizeAction"),onPointerDown:Dt,children:r.jsx("span",{"aria-hidden":"true",children:r.jsx(fa,{})})})]}),document.body):null,It=o&&typeof document<"u"?vt.createPortal(r.jsxs("div",{ref:ce,className:"parallel-pane-info-popover","data-parallel-pane-layer":D,"data-workspace-tone":(s==null?void 0:s.tone)??"root",style:He,children:[r.jsx("strong",{className:"parallel-pane-info-title",children:i("shell.parallelPaneInfoTitle")}),r.jsx(pt,{children:r.jsxs("dl",{className:"parallel-pane-info-list",children:[r.jsxs("div",{children:[r.jsx("dt",{children:i("shell.createSessionProviderLabel")}),r.jsx("dd",{children:At((q??e.session).provider,"full")})]}),r.jsxs("div",{children:[r.jsx("dt",{children:i("shell.parallelPaneModelFallback")}),r.jsx("dd",{children:Ze})]}),r.jsxs("div",{children:[r.jsx("dt",{children:i("shell.parallelPaneIsolatedWorkspaceTitle")}),r.jsx("dd",{children:st??i("common.unknown")})]})]})}),r.jsx(pt,{heading:i("shell.parallelPaneColorPaletteLabel"),description:i("shell.parallelPaneColorPaletteDescription"),actions:r.jsx("button",{type:"button",className:"ghost-button parallel-pane-color-reset",disabled:!V||me,onClick:()=>{ys(j,null),z(null)},children:i("shell.parallelPaneColorPaletteReset")}),children:r.jsx("div",{className:"workbench-manage-color-palette parallel-pane-color-palette","aria-label":i("shell.parallelPaneColorPaletteLabel"),children:qo.map(y=>r.jsx("button",{type:"button",className:"workbench-manage-color-swatch","aria-label":i("shell.manageWorkspaceColorSelectSwatch",{color:y}),"aria-pressed":V===y,"data-selected":V===y,disabled:me,style:{backgroundColor:y},onClick:()=>{const ie=ys(j,y);z(ie)}},y))})}),r.jsx(pt,{heading:i("shell.parallelPaneIsolatedWorkspaceTitle"),description:(Pe==null?void 0:Pe.lifecycleStatus)==="active"?i("shell.parallelPanePromoteDescription"):(Pe==null?void 0:Pe.lifecycleStatus)==="promoted"?i("shell.parallelPaneRemovePromotedDescription"):i("shell.parallelPaneRemoveDescription"),children:r.jsxs(es,{align:"start",className:"parallel-pane-action-row",children:[(Pe==null?void 0:Pe.lifecycleStatus)==="active"?r.jsx("button",{type:"button",className:"secondary-button parallel-pane-promote-action",disabled:d===Pe.id||me,onClick:()=>{const y=Pe==null?void 0:Pe.id;y&&u(y)},children:d===Pe.id?i("shell.parallelPanePromoting"):i("shell.parallelPanePromoteAction")}):null,r.jsx("button",{type:"button",className:"secondary-button workbench-danger-button",disabled:me,onClick:()=>{p(D)},children:me?i("shell.parallelPaneRemoving"):i("shell.parallelPaneRemoveAction")})]})})]}),document.body):null;return r.jsxs(r.Fragment,{children:[r.jsxs("article",{ref:Q,className:"parallel-conversation-pane","data-current":t?"true":void 0,"data-workspace-tone":(s==null?void 0:s.tone)??"root","data-parallel-role":((Wt=(q==null?void 0:q.parallelGroup)??e.session.parallelGroup)==null?void 0:Wt.role)??void 0,style:{"--parallel-pane-order":String(e.ordinal),...ft(s)??{},...Qe??{},...Ke},children:[r.jsxs("header",{ref:ae,className:"parallel-conversation-pane-header",children:[r.jsx("span",{className:"parallel-conversation-pane-connector","aria-hidden":"true"}),r.jsxs("div",{className:"parallel-conversation-pane-heading",children:[dt?r.jsx("span",{className:"session-parallel-badge",children:dt}):null,r.jsx("p",{className:"parallel-conversation-pane-subtitle",title:Ue,children:Ue}),r.jsxs("div",{className:"parallel-conversation-pane-meta",children:[r.jsx("span",{className:`session-provider-badge ${(q??e.session).provider}`,children:At((q??e.session).provider)}),r.jsx("span",{className:"parallel-conversation-pane-model",children:Ze})]})]}),r.jsxs("div",{className:"parallel-conversation-pane-actions",children:[r.jsx("button",{ref:de,type:"button",className:"conversation-header-ai-button","aria-label":i("shell.parallelPaneInfoAction"),title:i("shell.parallelPaneInfoAction"),"aria-expanded":o,onClick:()=>{Y(!1),c()},children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(ca,{})})}),r.jsx("button",{ref:k,type:"button",className:`conversation-header-ai-button${G?" active":""}`,"aria-label":i("shell.parallelPaneToolsAction"),title:i("shell.parallelPaneToolsAction"),"aria-expanded":G,onClick:()=>{l(),ot()},children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(ua,{})})})]})]}),r.jsxs("div",{className:"parallel-conversation-pane-body",children:[r.jsx(Hs,{connectionState:Ce,onReconnect:Z}),r.jsx(Qn,{requests:Ie,replyingRequestId:J,onReply:tt}),r.jsx("div",{className:"parallel-conversation-pane-timeline",children:r.jsx(_s,{sessionId:D,workspaceId:h,workspacePath:re,messages:ne,historyState:U,loadingOlderMessages:Me,hasOlderMessages:fe,provider:(q==null?void 0:q.provider)??e.session.provider,interruptedSource:he,runtimeThinkingPlaceholder:Ae,followTailUpdates:!0,onLoadOlderMessages:ze,onRetryMessage:ue,onSubmitStructuredQuestion:Le,onForkMessage:y=>{const ie=q??e.session;E({sourceMessageId:y.id,sourceMessageSnapshot:{role:y.role,kind:y.kind??(y.role==="tool"?"tool_result":"text"),content:y.content},content:y.content,sourceProvider:ie.provider,workspaceId:ie.workspaceId,targetProvider:ie.provider,targetModel:null,targetProviderConfigMode:ie.providerConfigMode??"global-default",targetProviderPresetId:ie.providerPresetId??null}),pr()}})}),r.jsx(ir,{items:je,deletingQueueItemId:te,steeringQueueItemId:Se,canSteer:We,onDelete:rt,onSteer:ut}),r.jsx(Os,{capabilities:le,draftStorageId:D,initialModel:e.model,workspaceId:(q??e.session).workspaceId,initialProviderConfigMode:(q??e.session).providerConfigMode??"global-default",initialProviderPresetId:(q??e.session).providerPresetId??null,forkDraft:P,onClearForkDraft:()=>E(null),onForkDraftChange:y=>E(y),hasActiveRun:be,contextUsage:O,taskProvider:(q??e.session).provider,taskMessages:B,hasPendingQueuedMessages:oe,canInterrupt:Te,isSubmitting:De,isRunning:xe,onInterrupt:ct,onSend:Ne,onQueueSend:Oe})]})]}),It,Ot]})}function ca(){return r.jsxs("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[r.jsx("circle",{cx:"8",cy:"8",r:"5.5",fill:"none",stroke:"currentColor",strokeWidth:"1.4"}),r.jsx("path",{d:"M8 6.1H8.01M7.35 7.6H8V10.3H8.65",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.4"})]})}function ua(){return r.jsxs("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[r.jsx("rect",{x:"2.5",y:"2.5",width:"4.2",height:"4.2",rx:"1.2",fill:"none",stroke:"currentColor",strokeWidth:"1.2"}),r.jsx("rect",{x:"9.3",y:"2.5",width:"4.2",height:"4.2",rx:"1.2",fill:"none",stroke:"currentColor",strokeWidth:"1.2"}),r.jsx("rect",{x:"2.5",y:"9.3",width:"4.2",height:"4.2",rx:"1.2",fill:"none",stroke:"currentColor",strokeWidth:"1.2"}),r.jsx("rect",{x:"9.3",y:"9.3",width:"4.2",height:"4.2",rx:"1.2",fill:"none",stroke:"currentColor",strokeWidth:"1.2"})]})}function da(){return r.jsxs("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[r.jsx("circle",{cx:"5",cy:"4.5",r:"0.9",fill:"currentColor"}),r.jsx("circle",{cx:"11",cy:"4.5",r:"0.9",fill:"currentColor"}),r.jsx("circle",{cx:"5",cy:"8",r:"0.9",fill:"currentColor"}),r.jsx("circle",{cx:"11",cy:"8",r:"0.9",fill:"currentColor"}),r.jsx("circle",{cx:"5",cy:"11.5",r:"0.9",fill:"currentColor"}),r.jsx("circle",{cx:"11",cy:"11.5",r:"0.9",fill:"currentColor"})]})}function ha(){return r.jsx("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:r.jsx("path",{d:"M10.9 3.1 12.9 5.1 10.9 6.1v2.1l-2.1 2.1v2.6l-.8-.8-.8.8v-2.6L5 8.2V6.1L3.1 5.1l2-2h5.8Z",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.1"})})}function ma(){return r.jsxs("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[r.jsx("path",{d:"M5 3.1H3.8A1.3 1.3 0 0 0 2.5 4.4v7.8a1.3 1.3 0 0 0 1.3 1.3h7.8a1.3 1.3 0 0 0 1.3-1.3V11",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.2"}),r.jsx("path",{d:"M8.1 3.1h4.4v4.4M12.3 3.3 7 8.6",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.2"})]})}function pa(){return r.jsx("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:r.jsx("path",{d:"M4.5 4.5 11.5 11.5M11.5 4.5 4.5 11.5",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"1.3"})})}function fa(){return r.jsx("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:r.jsx("path",{d:"M6.5 12.2 12.2 6.5M9 12.4 12.4 9M11.4 12.4 12.4 11.4",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.1"})})}function ga(e,t,n){const s=n.get(e);return s?ns(s).flatMap(o=>vr(o,t)):[]}function vr(e,t){var o;const n=e.item.session;if(((o=n.parallelGroup)==null?void 0:o.groupId)===t)return[];const s=ns(e).flatMap(l=>vr(l,t));return n.isSubagent!==!0?s:[{session:n,workspaceId:e.item.workspace.id,children:s}]}function _t(e,t){const n=t.trim();return n?e.some(s=>s.session.sessionId===n||_t(s.children,n)):!1}function va(e,t){return t===e.session.sessionId?e.session.sessionId:_t(e.subagentTree,t)?t:e.session.sessionId}function ba(e,t){const n=t.trim();return n?n===e.session.sessionId||_t(e.subagentTree,n):!1}function br(e,t){const n=t.trim();if(!n)return null;for(const s of e){if(s.session.sessionId===n)return s.session;const o=br(s.children,n);if(o)return o}return null}function wr(e,t){const n=t.trim();if(!n)return null;for(const s of e){if(s.session.sessionId===n)return s.workspaceId;const o=wr(s.children,n);if(o)return o}return null}const gt=196,at=82,yn=28,Rn=24,Sr=34,ks=18,wa=332,Gt=360,Kt=840,Cn=18,Sa=.22,Ia=2.4,Ma=6;function xa(e,t){return(t.lastMessageAt??t.updatedAt).localeCompare(e.lastMessageAt??e.updatedAt)}function Ir(e,t,n){var w,b;if(!t)return null;const s=e.find(v=>v.workspace.id===t);if(!s)return null;const o=new Map(s.sessions.map(v=>[v.sessionId,v])),l=o.get(n)??null;if(!l)return null;const c=new Map;for(const v of s.sessions){const A=((w=v.parentSessionId)==null?void 0:w.trim())||null;if(!A)continue;const x=c.get(A)??[];c.set(A,[...x,v.sessionId])}const u=new Set,d=new Set;let p=l,S=l.sessionId;for(;p&&!d.has(p.sessionId);){u.add(p.sessionId),d.add(p.sessionId),S=p.sessionId;const v=((b=p.parentSessionId)==null?void 0:b.trim())||null;p=v?o.get(v)??null:null}const M=Mr(S,0,o,c,new Set),L=ya(M);return{root:M,current:l,currentPathIds:u,relatedSessionIds:L,sessionsById:o}}function Pa(e){return((e==null?void 0:e.relatedSessionIds.size)??0)>1}function Mr(e,t,n,s,o){const l=n.get(e);if(!l)throw new Error(`Session ${e} not found`);const c=new Set(o);c.add(e);const u=[...s.get(e)??[]].filter(d=>!c.has(d)).sort((d,p)=>{const S=n.get(d),M=n.get(p);return!S||!M?0:xa(S,M)});return{session:l,depth:t,children:u.map(d=>Mr(d,t+1,n,s,c))}}function ya(e){const t=new Set;function n(s){t.add(s.session.sessionId),s.children.forEach(n)}return n(e),t}function xr(e){const t=Xn(e),n=e.lastMessageAt??e.updatedAt,s=n?new Intl.DateTimeFormat(void 0,{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(new Date(n)):null;return[At(e.provider),s,t].filter(Boolean).join(" · ")}function Pr(e){return e.isArchived===!0}function Ra(e){return[...e].sort((t,n)=>t.sequence-n.sequence).filter(t=>t.content.trim().length>0||t.kind==="tool_call"||t.kind==="tool_result")}function yr(e,t){return e<=0||t<=0?1:Math.min(1,e/t)}function Ca(e,t,n,s){const o=yr(e,n),l=n*o,c=s*o,u=l<e?(e-l)/2:0;return{scale:o,offsetX:u,offsetY:0,shellWidth:Math.max(e,l),shellHeight:c}}function Ts(e,t,n){return Math.min(n,Math.max(t,e))}function ka(e,t,n,s){if(e<=0||t<=0||n<=0||s<=0)return 1;const o=Math.max(1,e-Cn*2),l=Math.max(1,t-Cn*2);return Math.min(1,o/n,l/s)}function Zt(e,t,n,s,o){const l=s*e.scale,c=o*e.scale,u=(t-l)/2,d=(n-c)/2,p=l<=t?u:Ts(e.offsetX,t-l,0),S=c<=n?d:Ts(e.offsetY,n-c,0);return{scale:e.scale,offsetX:p,offsetY:S}}function Xt(e,t,n,s){const o=ka(e,t,n,s);return Zt({scale:o,offsetX:(e-n*o)/2,offsetY:(t-s*o)/2},e,t,n,s)}function Ta(e,t,n,s,o,l,c,u){const d=(n-e.offsetX)/e.scale,p=(s-e.offsetY)/e.scale;return Zt({scale:t,offsetX:n-d*t,offsetY:s-p*t},o,l,c,u)}function Ea(e){var n;const t=e.content.trim();if(t.length>0){const s=t.replace(/\s+/g," ").trim();return s.length<=160?s:`${s.slice(0,157)}...`}return(n=e.toolCall)!=null&&n.name?`${e.toolCall.name} ${i("conversation.branchTreeToolMessageFallback")}`:i("conversation.branchTreeMessageEmpty")}function ja(e){switch(e.role){case"assistant":return i("conversation.roleAssistant");case"system":return i("conversation.roleSystem");case"tool":return i("conversation.roleTool");case"user":default:return i("conversation.roleUser")}}function Es(e,t){const n=t.get(e.session.sessionId);if(n!==void 0)return n;if(e.children.length===0)return t.set(e.session.sessionId,gt),gt;const s=e.children.reduce((l,c,u)=>{const d=l+Es(c,t);return u===0?d:d+ks},0),o=Math.max(gt,s);return t.set(e.session.sessionId,o),o}function Aa(e){const t=new Map,n=[],s=new Map;function o(u,d,p){const S=Es(u,t),M=d+S/2,L=Rn+p*(at+Sr),w=M-gt/2,b=u.children.reduce((_,T,j)=>{const N=_+Es(T,t);return j===0?N:N+ks},0);let v=d+Math.max(0,(S-b)/2);const A=u.children.map(_=>{const T=o(_,v,p+1);return v+=T.subtreeWidth+ks,T}),x={node:u,children:A,x:w,y:L,centerX:M,centerY:L+at/2,subtreeWidth:S};return n.push(x),s.set(u.session.sessionId,x),x}const l=o(e,yn,0),c=n.reduce((u,d)=>Math.max(u,d.y+at),0);return{root:l,nodes:n,bySessionId:s,width:l.subtreeWidth+yn*2,height:c+Rn}}function Na(e){return Math.max(0,Math.min(255,Number.parseFloat(e)))}function La(e){const t=e.trim();if(t.startsWith("#")){const s=t.slice(1);if(s.length===3){const[o,l,c]=s.split("").map(u=>Number.parseInt(u.repeat(2),16));return{r:o,g:l,b:c}}if(s.length>=6)return{r:Number.parseInt(s.slice(0,2),16),g:Number.parseInt(s.slice(2,4),16),b:Number.parseInt(s.slice(4,6),16)}}const n=t.match(/rgba?\(([^)]+)\)/i);if(n){const[s,o,l]=n[1].split(",").map(c=>Na(c));return{r:s,g:o,b:l}}return null}function et(e,t,n){const s=La(e);return s?`rgba(${s.r}, ${s.g}, ${s.b}, ${t})`:n}function _a(e,t,n,s,o,l){const c=e.getContext("2d");if(!c)return;const u=c,d=window.devicePixelRatio||1;e.width=Math.max(1,Math.floor(t.width*d)),e.height=Math.max(1,Math.floor(t.height*d)),e.style.width=`${t.width}px`,e.style.height=`${t.height}px`,u.setTransform(d,0,0,d,0,0),u.clearRect(0,0,t.width,t.height);const p=window.getComputedStyle(e),S=p.getPropertyValue("--accent").trim()||"#3b82f6",M=p.getPropertyValue("--border-primary").trim()||"#d4d8df",L=p.getPropertyValue("--bg-surface").trim()||"#ffffff";if(!l){const b=u.createLinearGradient(0,0,t.width,t.height);b.addColorStop(0,et(L,.38,"rgba(255, 255, 255, 0.38)")),b.addColorStop(1,et(S,.05,"rgba(59, 130, 246, 0.05)")),u.fillStyle=b,u.fillRect(0,0,t.width,t.height)}function w(b){for(const v of b.children){const A=s.has(b.node.session.sessionId)&&s.has(v.node.session.sessionId),x=b.node.session.sessionId===o||v.node.session.sessionId===o;u.beginPath(),u.moveTo(b.centerX,b.y+at-10);const _=b.y+at+Sr*.52;u.bezierCurveTo(b.centerX,_,v.centerX,_,v.centerX,v.y+10),u.lineWidth=x?3:A?2.5:1.5,u.strokeStyle=x?et(S,.52,"rgba(59, 130, 246, 0.52)"):A?et(S,.32,"rgba(59, 130, 246, 0.32)"):et(M,.72,"rgba(148, 163, 184, 0.72)"),u.stroke(),u.beginPath(),u.arc(v.centerX,v.y,x?4.5:3.5,0,Math.PI*2),u.fillStyle=x?et(S,.9,"rgba(59, 130, 246, 0.9)"):et(M,.78,"rgba(148, 163, 184, 0.78)"),u.fill(),w(v)}}w(t.root);for(const b of t.nodes){const v=b.node.session.sessionId===n,A=b.node.session.sessionId===o,x=s.has(b.node.session.sessionId);if(!v&&!A&&!x)continue;const _=u.createRadialGradient(b.centerX,b.centerY,10,b.centerX,b.centerY,A?90:64);_.addColorStop(0,et(S,A?.22:.14,"rgba(59, 130, 246, 0.22)")),_.addColorStop(1,"rgba(59, 130, 246, 0)"),u.fillStyle=_,u.beginPath(),u.ellipse(b.centerX,b.centerY,gt*.72,at*.9,0,0,Math.PI*2),u.fill(),(A||v)&&(u.beginPath(),u.arc(b.centerX,b.y+12,A?6:5,0,Math.PI*2),u.fillStyle=et(S,.94,"rgba(59, 130, 246, 0.94)"),u.fill())}}function Da(e,t,n){const s=Math.min(wa,t-24),o=e.left+e.width/2-s/2,l=Math.max(12,Math.min(t-s-12,o)),d=n-e.bottom-12<220&&e.top>Gt?Math.max(12,e.top-Gt-12):Math.max(12,Math.min(n-Gt-12,e.bottom+12));return{width:s,left:l,top:d,maxHeight:Math.min(Gt,n-24)}}function Oa({model:e,selectedSession:t,selectedTreeNode:n,previewEntry:s,onClose:o,onOpenSession:l}){const c=wt(t.title,i("common.unknown")),u=t.sessionId===e.current.sessionId,d=Pr(t),p=Un(n.session),S=$n(n.session),M=Vn(n.session),L=Gn(n.session);return r.jsxs("div",{className:"conversation-branch-preview-popover",role:"dialog","aria-label":`${i("conversation.branchTreePreviewTitle")} ${c.fullTitle}`,children:[r.jsxs("div",{className:"conversation-branch-preview-popover-header",children:[r.jsxs("div",{className:"conversation-branch-preview-card-title-row",children:[r.jsx("strong",{title:c.fullTitle,children:c.displayTitle}),u?r.jsx("span",{className:"conversation-branch-current-badge",children:i("conversation.branchTreeCurrentBadge")}):null,d?r.jsx("span",{className:"conversation-branch-archived-badge",children:i("conversation.branchTreeArchivedBadge")}):null]}),r.jsx("button",{type:"button",className:"conversation-branch-preview-close","aria-label":i("common.close"),onClick:o,children:"x"})]}),r.jsx("p",{className:"conversation-branch-preview-popover-meta",children:xr(t)}),S&&p||L&&M?r.jsxs("div",{className:"conversation-branch-badge-row",children:[L&&M?r.jsx("span",{className:`session-fork-badge ${M}`,children:L}):null,S&&p?r.jsx("span",{className:`session-fork-badge ${p}`,children:S}):null]}):null,r.jsx("div",{className:"conversation-branch-preview-messages",children:s.status==="loading"?r.jsx("p",{className:"conversation-branch-empty",children:i("conversation.branchTreePreviewLoading")}):s.status==="error"?r.jsx("p",{className:"conversation-branch-empty",children:s.error||i("conversation.branchTreePreviewFailed")}):s.messages.length>0?s.messages.map(w=>r.jsxs("article",{className:"conversation-branch-preview-message",children:[r.jsxs("div",{className:"conversation-branch-preview-message-meta",children:[r.jsx("span",{children:ja(w)}),r.jsx("span",{children:new Intl.DateTimeFormat(void 0,{hour:"2-digit",minute:"2-digit"}).format(new Date(w.timestamp))})]}),r.jsx("p",{children:Ea(w)})]},`${t.sessionId}:${w.messageId}`)):r.jsx("p",{className:"conversation-branch-empty",children:i("conversation.branchTreePreviewEmpty")})}),r.jsx("div",{className:"conversation-branch-preview-actions",children:r.jsx("button",{type:"button",className:"secondary-button",disabled:u,onClick:()=>l(t),children:u?i("conversation.branchTreeCurrentAction"):i("conversation.branchTreeSwitchAction")})})]})}function Ha({layout:e,model:t,selectedSessionId:n,onSelectSession:s,onBackgroundClick:o,stageScale:l,desktopStageLayout:c,transform:u,isMobileViewport:d,viewportRef:p,onRegisterNodeElement:S,onViewportTouchStart:M,onViewportTouchMove:L,onViewportTouchEnd:w}){const b=a.useRef(null);return a.useEffect(()=>{const v=b.current;v&&_a(v,e,t.current.sessionId,t.currentPathIds,n,d)},[d,e,t.current.sessionId,t.currentPathIds,n]),r.jsx("div",{ref:p,className:"conversation-branch-canvas-viewport","data-scaled":l<.999,"data-mobile":d,onClick:v=>{v.target===v.currentTarget&&(o==null||o())},onTouchStart:M,onTouchMove:L,onTouchEnd:w,onTouchCancel:w,children:r.jsx("div",{className:"conversation-branch-canvas-stage-shell",style:{width:d?"100%":c.shellWidth,height:d?"100%":c.shellHeight},onClick:v=>{v.target===v.currentTarget&&(o==null||o())},children:r.jsxs("div",{className:"conversation-branch-canvas-stage",style:{width:e.width,height:e.height,transform:u?`translate(${u.offsetX}px, ${u.offsetY}px) scale(${u.scale})`:`translate(${c.offsetX}px, ${c.offsetY}px) scale(${c.scale})`,transformOrigin:"top left"},onClick:()=>{if(o){o();return}s(null)},children:[r.jsx("canvas",{ref:b,className:"conversation-branch-canvas",width:e.width,height:e.height,"aria-hidden":"true"}),e.nodes.map(v=>{const A=wt(v.node.session.title,i("common.unknown")),x=Un(v.node.session),_=$n(v.node.session),T=Vn(v.node.session),j=Gn(v.node.session),N=v.node.session.sessionId===t.current.sessionId,R=v.node.session.sessionId===n,C=t.currentPathIds.has(v.node.session.sessionId),m=Pr(v.node.session);return r.jsx("button",{ref:f=>S(v.node.session.sessionId,f),type:"button",className:"conversation-branch-smart-card conversation-branch-canvas-node","data-current":N,"data-selected":R,"data-current-path":C,"data-archived":m,style:{left:v.x,top:v.y,width:gt,minHeight:at},"aria-pressed":R,onClick:f=>{f.stopPropagation(),s(v.node.session.sessionId)},children:r.jsxs("div",{className:"conversation-branch-smart-card-main",children:[r.jsxs("div",{className:"conversation-branch-smart-card-title-row",children:[r.jsx("strong",{title:A.fullTitle,children:A.displayTitle}),N?r.jsx("span",{className:"conversation-branch-current-badge",children:i("conversation.branchTreeCurrentBadge")}):null,m?r.jsx("span",{className:"conversation-branch-archived-badge",children:i("conversation.branchTreeArchivedBadge")}):null]}),r.jsx("p",{children:xr(v.node.session)}),_&&x||j&&T?r.jsxs("div",{className:"conversation-branch-badge-row",children:[j&&T?r.jsx("span",{className:`session-fork-badge ${T}`,children:j}):null,_&&x?r.jsx("span",{className:`session-fork-badge ${x}`,children:_}):null]}):null]})},v.node.session.sessionId)})]})})})}function kn({model:e,onOpenSession:t,onClose:n}){const s=a.useMemo(()=>Aa(e.root),[e.root]),o=a.useRef(null),l=a.useRef(new Map),[c,u]=a.useState(null),[d,p]=a.useState(0),[S,M]=a.useState(0),[L,w]=a.useState(null),[b,v]=a.useState({}),A=a.useRef(new Set),[x,_]=a.useState(typeof window<"u"?window.innerWidth<=Kt:!1),[T,j]=a.useState(null),N=a.useRef({mode:"idle",startDistance:0,startScale:1,startOffsetX:0,startOffsetY:0,startTouchX:0,startTouchY:0,anchorX:0,anchorY:0,moved:!1});a.useEffect(()=>{const F=o.current;if(!F)return;const g=F;function $(){p(g.clientWidth),M(g.clientHeight),_(window.innerWidth<=Kt)}if($(),typeof ResizeObserver>"u")return window.addEventListener("resize",$),()=>window.removeEventListener("resize",$);const W=new ResizeObserver($);return W.observe(F),()=>W.disconnect()},[]),a.useEffect(()=>{u(null)},[e.current.sessionId,e.root.session.sessionId]);const R=a.useMemo(()=>yr(d,s.width),[d,s.width]),C=a.useMemo(()=>Ca(d,S,s.width,s.height),[S,d,s.height,s.width]);a.useEffect(()=>{if(!x||d<=0||S<=0){j(null);return}j(F=>F?Zt(F,d,S,s.width,s.height):Xt(d,S,s.width,s.height))},[S,d,x,s.height,s.width]);const m=c?e.sessionsById.get(c)??null:null,f=m?s.bySessionId.get(m.sessionId)??null:null,D=m?b[m.sessionId]??{status:"idle",messages:[],error:null}:null,G=x&&!!n,Y=!!n&&!G;a.useEffect(()=>{if(!c){w(null);return}const F=c;function g(){const $=l.current.get(F);if(!$){w(null);return}w($.getBoundingClientRect())}return g(),window.addEventListener("resize",g),window.addEventListener("scroll",g,!0),()=>{window.removeEventListener("resize",g),window.removeEventListener("scroll",g,!0)}},[c,R]),a.useEffect(()=>{if(!x)return;const F=c;if(!F)return;const g=window.requestAnimationFrame(()=>{const $=l.current.get(F);$&&w($.getBoundingClientRect())});return()=>window.cancelAnimationFrame(g)},[x,T,c]),a.useEffect(()=>{if(!(m!=null&&m.sessionId)||(D==null?void 0:D.status)==="ready"||A.current.has(m.sessionId))return;let F=!1;return A.current.add(m.sessionId),v(g=>{var $;return{...g,[m.sessionId]:{status:"loading",messages:(($=g[m.sessionId])==null?void 0:$.messages)??[],error:null}}}),Ms(m.sessionId,null,6,"backward").then(g=>{A.current.delete(m.sessionId),!F&&v($=>({...$,[m.sessionId]:{status:"ready",messages:Ra(g.messages),error:null}}))}).catch(g=>{A.current.delete(m.sessionId),!F&&v($=>{var W;return{...$,[m.sessionId]:{status:"error",messages:((W=$[m.sessionId])==null?void 0:W.messages)??[],error:g instanceof Error?g.message:i("conversation.branchTreePreviewFailed")}}})}),()=>{F=!0}},[m==null?void 0:m.sessionId]);function K(F){!x||d<=0||S<=0||j(g=>{const $=g??Xt(d,S,s.width,s.height);return Zt(F($),d,S,s.width,s.height)})}function ee(F){if(!x)return;const g=F.currentTarget.getBoundingClientRect();if(F.touches.length>=2){const Q=F.touches[0],ae=F.touches[1],de=Math.hypot(ae.clientX-Q.clientX,ae.clientY-Q.clientY),ce=(Q.clientX+ae.clientX)/2-g.left,pe=(Q.clientY+ae.clientY)/2-g.top,k=T??Xt(d,S,s.width,s.height);N.current={mode:"pinch",startDistance:de,startScale:k.scale,startOffsetX:k.offsetX,startOffsetY:k.offsetY,startTouchX:ce,startTouchY:pe,anchorX:ce,anchorY:pe,moved:!1};return}const $=F.touches[0],W=T??Xt(d,S,s.width,s.height);N.current={mode:"pan",startDistance:0,startScale:W.scale,startOffsetX:W.offsetX,startOffsetY:W.offsetY,startTouchX:$.clientX,startTouchY:$.clientY,anchorX:0,anchorY:0,moved:!1}}function H(F){if(!x)return;const g=N.current;if(F.touches.length>=2){const de=F.currentTarget.getBoundingClientRect(),ce=F.touches[0],pe=F.touches[1],k=Math.hypot(pe.clientX-ce.clientX,pe.clientY-ce.clientY);if(k<=0||g.startDistance<=0)return;F.preventDefault();const V=(ce.clientX+pe.clientX)/2-de.left,z=(ce.clientY+pe.clientY)/2-de.top,q=Ts(g.startScale*(k/g.startDistance),Sa,Ia);N.current={...g,mode:"pinch",moved:!0,anchorX:V,anchorY:z},K(le=>Ta({...le,scale:g.startScale,offsetX:g.startOffsetX,offsetY:g.startOffsetY},q,V,z,d,S,s.width,s.height));return}if(g.mode!=="pan"||F.touches.length!==1)return;const $=F.touches[0],W=$.clientX-g.startTouchX,Q=$.clientY-g.startTouchY;(g.moved||Math.hypot(W,Q)>=Ma)&&(F.preventDefault(),N.current={...g,moved:!0},K(de=>({...de,offsetX:g.startOffsetX+W,offsetY:g.startOffsetY+Q})))}function ve(){N.current={mode:"idle",startDistance:0,startScale:(T==null?void 0:T.scale)??1,startOffsetX:(T==null?void 0:T.offsetX)??0,startOffsetY:(T==null?void 0:T.offsetY)??0,startTouchX:0,startTouchY:0,anchorX:0,anchorY:0,moved:!1}}return r.jsxs(r.Fragment,{children:[r.jsxs("section",{className:`conversation-branch-tree-pane${n?" conversation-branch-dialog":""}${G?" conversation-branch-dialog-mobile-bare":""}`,role:n?"dialog":void 0,"aria-modal":n?"true":void 0,"aria-label":n?i("conversation.branchTreeTitle"):void 0,children:[Y?r.jsx("div",{className:"conversation-branch-tree-pane-header",children:r.jsxs("div",{className:"conversation-branch-tree-pane-topbar",children:[r.jsxs("div",{className:"conversation-branch-tree-pane-heading",children:[r.jsx("h3",{children:i("conversation.branchTreeMapTitle")}),r.jsx("p",{children:i("conversation.branchTreeMapDescription")})]}),n?r.jsx("button",{type:"button",className:"conversation-branch-pane-close","aria-label":i("common.close"),onClick:n,children:"x"}):null]})}):null,r.jsxs("div",{className:"conversation-branch-canvas-shell",children:[G?r.jsx("button",{type:"button",className:"conversation-branch-pane-close conversation-branch-mobile-floating-close","aria-label":i("common.close"),onClick:n,children:"x"}):null,G?null:r.jsx("div",{className:"conversation-branch-canvas-tip",children:i("conversation.branchTreePreviewDescription")}),r.jsx(Ha,{layout:s,model:e,selectedSessionId:c,onSelectSession:u,onBackgroundClick:G?n:void 0,stageScale:R,desktopStageLayout:C,transform:x?T:null,isMobileViewport:x,viewportRef:o,onRegisterNodeElement:(F,g)=>{if(g){l.current.set(F,g);return}l.current.delete(F)},onViewportTouchStart:ee,onViewportTouchMove:H,onViewportTouchEnd:ve})]})]}),m&&f&&D&&L&&typeof document<"u"?vt.createPortal(r.jsx("div",{className:"conversation-branch-preview-floating",style:Da(L,window.innerWidth,window.innerHeight),children:r.jsx(Oa,{model:e,selectedSession:m,selectedTreeNode:f.node,previewEntry:D,onClose:()=>u(null),onOpenSession:t})}),document.body):null]})}function Fa({open:e,navigationGroups:t,workspaceId:n,sessionId:s,onClose:o,onOpenSession:l}){const c=a.useMemo(()=>Ir(t,n,s),[t,s,n]),[u,d]=a.useState(typeof window<"u"?window.innerWidth>Kt:!0);return a.useEffect(()=>{if(typeof window>"u")return;function p(){d(window.innerWidth>Kt)}return p(),window.addEventListener("resize",p),()=>window.removeEventListener("resize",p)},[]),!e||!c||typeof document>"u"?null:u?r.jsx(Jt,{open:e,title:i("conversation.branchTreeMapTitle"),description:i("conversation.branchTreeMapDescription"),size:"regular",layout:"viewer",bodyClassName:"conversation-branch-modal-body",onClose:o,children:r.jsx(kn,{model:c,onOpenSession:l})}):vt.createPortal(r.jsxs("div",{className:"workbench-modal-layer conversation-branch-panel-layer",children:[r.jsx("button",{type:"button",className:"workbench-modal-backdrop","aria-label":i("common.close"),onClick:o}),r.jsx(kn,{model:c,onOpenSession:l,onClose:o})]}),document.body)}function Ba(e){const t=e.trim().length;return t<=16?"xl":t<=26?"lg":t<=38?"md":"sm"}function Rr({session:e,actions:t,workspaceContext:n=null}){const s=St(),o=Wn(s);if(!e)return r.jsxs("header",{className:"conversation-header conversation-header-skeleton","aria-hidden":"true","data-window-drag-handle":"conversation-header","data-tauri-drag-region":o,children:[r.jsxs("div",{className:"conversation-header-main","data-tauri-drag-region":o,children:[r.jsx("span",{className:"skeleton-line short"}),r.jsx("span",{className:"skeleton-line long"})]}),t?r.jsx("div",{className:"conversation-header-actions",children:t}):null]});const l=wt(e.title,i("conversation.titleFallback")),c=Ba(l.displayTitle);return r.jsxs("header",{className:"conversation-header","data-workspace-tone":(n==null?void 0:n.tone)??"root",style:ft(n),"data-window-drag-handle":"conversation-header","data-tauri-drag-region":o,children:[r.jsx("div",{className:"conversation-header-main","data-tauri-drag-region":o,children:r.jsx("h1",{className:`conversation-title is-${c}`,title:l.fullTitle,"data-tauri-drag-region":o,children:l.displayTitle})}),t?r.jsx("div",{className:"conversation-header-actions",children:t}):null]})}function Wa(e,t,n){if(!t)return null;const s=e.find(c=>c.workspace.id===t);if(!s)return null;const o=ts([s]).filter(c=>!c.session.isArchived&&!Lt(c.session)),l=o.findIndex(c=>c.session.sessionId===n);return l<0?null:o[l+1]??null}const Tn=.6,Is=.6,En=8,qa=36,Ua=48,$a=96;function Al(){const{sessionId:e="",workspaceId:t}=ti(),n=Ds(),s=lt(),o=a.useMemo(()=>new URLSearchParams(n.search),[n.search]),l=Ka(o.get("toolPanel")),c=(t==null?void 0:t.trim())||null,u=a.useMemo(()=>za(e,c,o),[c,o,e]),d=a.useMemo(()=>ll(e,n.state),[n.state,e]),p=a.useMemo(()=>cl(e,n.state),[n.state,e]);return u?r.jsx(Ya,{draft:u,navigate:s,initialToolPanel:l}):r.jsx(Va,{sessionId:e,bootstrapMessages:d,initialComposerModel:p.initialModel,initialComposerProviderConfigMode:p.providerConfigMode,initialComposerProviderPresetId:p.providerPresetId,initialToolPanel:l})}function Va({sessionId:e,bootstrapMessages:t,initialComposerModel:n,initialComposerProviderConfigMode:s,initialComposerProviderPresetId:o,initialToolPanel:l}){var ie,Ve,qe,Ge;const{shellMode:c,navigationGroups:u,requestNavigationRefresh:d,selectWorkspace:p,setSessionWorkspace:S,markNavigationSessionSeen:M,favoriteSessions:L,archiveSession:w,unarchiveSession:b,startDraftSession:v,upsertNavigationSession:A}=bt(),x=lt(),[_,T]=a.useState(!1),[j,N]=a.useState(!1),[R,C]=a.useState(null),[m,f]=a.useState(!1),[D,G]=a.useState(!1),[Y,K]=a.useState(!1),ee=a.useMemo(()=>ts(u),[u]),H=a.useMemo(()=>{var I;return((I=ee.find(se=>se.session.sessionId===e))==null?void 0:I.session)??null},[ee,e]),{showToast:ve}=nt(),F=()=>{var we;const I=(H==null?void 0:H.workspaceId)??((we=u[0])==null?void 0:we.workspace.id)??null,se=(I?ee.find(qt=>qt.workspace.id===I)??null:null)??ee[0]??null;x(se?$e(se.workspace.id,se.session.sessionId):I?Tt(I):c==="mobile"?Zo():"/landing",{replace:!0})},{session:g,capabilities:$,messages:W,timelineMessages:Q,permissionRequests:ae,queuedMessages:de,contextUsage:ce,historyState:pe,runtimeInterruptSource:k,loadingOlderMessages:V,hasOlderMessages:z,connectionState:q,sending:le,replyingPermissionRequestId:B,deletingQueueItemId:ne,steeringQueueItemId:Ie,forkDraft:je,setForkDraft:O,composerHasActiveRun:U,composerCanInterrupt:he,composerIsRunning:Me,canSteerQueuedMessage:fe,hasPendingQueuedMessages:Ce,runtimeThinkingPlaceholder:De,reconnect:J,loadOlderMessages:te,retryMessage:Se,send:P,queue:E,interrupt:be,replyPermissionRequest:Te,deleteQueuedMessage:xe,steerQueuedMessage:We}=fr({sessionId:e,externalSession:H,bootstrapMessages:t,onSeen:(I,se)=>{M(I,se)},onRequestNavigationRefresh:d,onUpsertNavigationSession:A,onNavigateToSession:(I,se)=>{p(I),x($e(I,se))},onBindSessionWorkspace:S,onResolveMissingSession:F,onForkSuccess:()=>{Et("preview"),ve({title:i("conversation.forkMessageSucceeded"),tone:"success"})},enableRuntimeErrorHandling:!0,enableCompletionHaptics:!0,enableThinkingPlaceholder:!0,enableForkTimelineSanitizer:!0}),oe=c!=="mobile",Ae=Or(!oe),Z=g??H??null,ze=(g==null?void 0:g.sessionIsolatedWorkspace)??(H==null?void 0:H.sessionIsolatedWorkspace)??null,ue=Z?zt(Z,ze):null,Ne=Z?qn(Z,ze):null,Oe=_r({enabled:!oe,initialPanel:l,workspaceId:Ne,suspendMainGesture:!oe&&Ae.isVisible}),ct=a.useMemo(()=>new Set(L.map(I=>I.session.sessionId)),[L]),tt=a.useMemo(()=>u.map(I=>I.workspace),[u]),rt=a.useMemo(()=>er(u),[u]),ut=a.useMemo(()=>Ns(u),[u]),Qe=a.useMemo(()=>Tr(u,ue,ct),[ct,ue,u]),Ke=a.useMemo(()=>Er(L,u),[L,u]);async function dt(I){await P(Ga(I.answers))}const[Pe,st]=a.useState([]),Ze=a.useMemo(()=>[...Ke,...Qe],[Ke,Qe]),Ue=a.useMemo(()=>ue?tt.find(I=>I.id===ue)??null:null,[ue,tt]),ye=(ue?ut[ue]??null:null)??(Ue?Ls(Ue):null),h=a.useMemo(()=>rs(u,ue),[ue,u]),X=rt.find(I=>I.workspace.id===ue)??(h?{workspace:h.workspace,label:h.workspace.name,subtitle:h.workspace.path}:null),re=a.useMemo(()=>Wa(u,ue,e),[ue,u,e]),me=(g==null?void 0:g.provider)??(H==null?void 0:H.provider)??null,Le=a.useMemo(()=>{var I;return wt(((I=g??H)==null?void 0:I.title)??null,i("conversation.titleFallback"))},[H,g]),He=oe,Ee=a.useMemo(()=>{var we;if(!He)return null;if(Yo(Z))return((we=Z==null?void 0:Z.parallelGroup)==null?void 0:we.groupId)??null;const I=ss(ee);return Xa(I,e)},[Z,ee,e,He]),_e=oe?null:Lr(Ae.mainGestureHandlers,Oe.mainGestureHandlers);a.useEffect(()=>{const I=zn(Ze,e,se=>se.session.sessionId);I.length!==0&&st(se=>{const we=new Set(se);let qt=!1;for(const qs of I)we.has(qs)||(we.add(qs),qt=!0);return qt?Array.from(we):se})},[Ze,e]);const Re=(Z==null?void 0:Z.workspaceId)??(H==null?void 0:H.workspaceId)??null,ot=a.useMemo(()=>Ir(u,Re,e),[Re,u,e]),os=Pa(ot),Dt=!!(Z&&Re&&os),Ot=()=>{G(!0)},It=a.useMemo(()=>(h==null?void 0:h.sessions.filter(I=>I.isArchived===!0&&!Lt(I)))??[],[h]),Ht=a.useRef(null),Mt=a.useRef(null),ht=a.useRef(null),xt=a.useRef(null),[Ft,Bt]=a.useState(null),{composerPortalTarget:Wt}=Yn();a.useEffect(()=>{G(!1)},[e]),Ar(ht,Ft,!oe,e),Nr(ht,xt,!oe,e);function y(I){p(I),x(Tt(I))}return oe&&Ee?r.jsxs(r.Fragment,{children:[r.jsx(aa,{groupId:Ee,currentSessionId:e}),r.jsx(Ps,{open:Y,source:Z?{kind:"session",sessionId:e,workspaceId:Z.workspaceId,workspaceName:(ye==null?void 0:ye.displayName)??Z.workspaceId,sessionTitle:Z.title,defaultProvider:Z.provider}:null,onClose:()=>K(!1),onCreated:async I=>{I.members.forEach(we=>{A(we.session)}),Js(I.group.id),await d();const se=I.members.find(we=>we.session.sessionId===I.group.anchorSessionId)??I.members[0]??null;if(se){const we=zt(se.session,se.sessionIsolatedWorkspace);p(we),x($e(we,se.session.sessionId))}K(!1),ve({title:i("shell.parallelCreateSucceeded"),tone:"success"})}})]}):r.jsxs(r.Fragment,{children:[r.jsxs("main",{ref:ht,className:"workbench-page conversation-page-shell mobile-page-fixed-root mobile-conversation-page","data-mobile-shell":!oe,"data-preview-mode":oe?void 0:Ae.displayMode,"data-preview-dragging":oe?void 0:Ae.isDragging,"data-workspace-tone":(ye==null?void 0:ye.tone)??"root","data-worktree-depth":(ye==null?void 0:ye.depth)??0,"data-tool-panel-open":oe?void 0:Oe.isOpen,style:{...oe?{}:Ae.pageStyle,...ft(ye)??{}},children:[oe?r.jsx(Rr,{session:g??H,workspaceContext:ye,actions:r.jsxs(r.Fragment,{children:[Dt?r.jsx(ol,{onOpenBranchTree:Ot}):null,Z?r.jsx("button",{type:"button",className:"conversation-header-ai-button","aria-label":i("shell.parallelCreateAction"),title:i("shell.parallelCreateAction"),onClick:()=>K(!0),children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(il,{})})}):null,r.jsx(or,{session:g??H})]})}):null,oe?null:r.jsx(tr,{containerRef:xt,className:"mobile-conversation-page-header",gestureHandlers:_e??void 0,currentWorkspace:X?{id:X.workspace.id,name:X.label,path:X.subtitle}:tt[0]??null,workspaces:tt,workspaceOptions:rt,onSelectWorkspace:y,heading:Le.fullTitle,trailing:r.jsxs("div",{className:"mobile-conversation-toolbar-main",children:[r.jsx("span",{className:"mobile-conversation-toolbar-title",title:Le.fullTitle,children:Le.displayTitle}),r.jsx(pi,{session:g??H,onOpenBranchTree:Dt?Ot:void 0})]})}),oe?null:r.jsx(Hr,{visible:!Oe.isOpen&&Ae.isVisible,widthPx:Ae.previewWidthPx,isDragging:Ae.isDragging,gestureHandlers:Ae.railGestureHandlers,activeSessionId:e,createSessionActionLabel:ue&&me?i("shell.createSession"):void 0,favoriteItems:Ke,items:Qe,expandedRootIds:Pe,workspaceSectionLabel:(X==null?void 0:X.label)??i("shell.mobileConversationCurrentWorkspaceSection"),onCreateSession:ue&&me?()=>{v(ue,me)}:void 0,archiveCurrentActionLabel:i("shell.archiveCurrentSessionAction"),archiveFolderActionLabel:It.length>0?i("shell.archiveFolderLabel"):void 0,onArchiveActiveSession:()=>{T(!0)},onOpenArchiveFolder:It.length>0?()=>{N(!0)}:void 0,onToggleSubsessions:I=>{st(se=>se.includes(I)?se.filter(we=>we!==I):[...se,I])},onActivate:I=>{Ae.closePreview(),p(I.workspace.id),x($e(I.workspace.id,I.session.sessionId))}}),r.jsx("div",{className:"mobile-conversation-stage",..._e??{},children:r.jsxs("div",{ref:Ht,className:"mobile-conversation-main",children:[r.jsx(Hs,{connectionState:q,onReconnect:J}),r.jsx(Qn,{requests:ae,replyingRequestId:B,onReply:Te}),r.jsx("div",{ref:Mt,className:"conversation-timeline-shell",children:r.jsx(_s,{sessionId:e,workspaceId:Ne,workspacePath:(Ue==null?void 0:Ue.path)??null,messages:Q,historyState:pe,loadingOlderMessages:V,hasOlderMessages:z,provider:(g==null?void 0:g.provider)??null,interruptedSource:k,runtimeThinkingPlaceholder:De,sessionRunningState:(g==null?void 0:g.runningState)??null,sessionSyncStatus:(g==null?void 0:g.syncStatus)??null,sessionLastErrorCode:(g==null?void 0:g.lastErrorCode)??null,sessionLastErrorDetail:(g==null?void 0:g.lastErrorDetail)??null,onLoadOlderMessages:te,onRetryMessage:Se,onSubmitStructuredQuestion:dt,onForkMessage:I=>{g&&(O({sourceMessageId:I.id,sourceMessageSnapshot:{role:I.role,kind:I.kind??(I.role==="tool"?"tool_result":"text"),content:I.content},content:I.content,sourceProvider:g.provider,workspaceId:g.workspaceId,targetProvider:g.provider,targetModel:null,targetProviderConfigMode:g.providerConfigMode??"global-default",targetProviderPresetId:g.providerPresetId??null}),pr())}})}),r.jsx(ui,{containerRef:Mt,session:g??H??null,currentCapabilities:$}),r.jsx(ir,{items:de,deletingQueueItemId:ne,steeringQueueItemId:Ie,canSteer:fe,onDelete:xe,onSteer:We}),Oe.isOpen?null:r.jsx(Os,{capabilities:$,draftStorageId:e,initialModel:n,workspaceId:((ie=g??H)==null?void 0:ie.workspaceId)??null,initialProviderConfigMode:s??((Ve=g??H)==null?void 0:Ve.providerConfigMode)??"global-default",initialProviderPresetId:o??((qe=g??H)==null?void 0:qe.providerPresetId)??null,forkDraft:je,onClearForkDraft:()=>O(null),onForkDraftChange:I=>O(I),panelRef:oe?void 0:Bt,portalContainer:oe?null:Wt,hasActiveRun:U,contextUsage:ce,taskProvider:((Ge=g??H)==null?void 0:Ge.provider)??null,taskMessages:W,hasPendingQueuedMessages:Ce,canInterrupt:he,isSubmitting:le,isRunning:Me,onInterrupt:be,onSend:P,onQueueSend:E})]})}),!oe&&Ne?r.jsx(Dr,{activePanel:Oe.activePanel,open:Oe.isOpen,sessionId:e,workspaceId:Ne,navigationGroups:u,onClose:()=>{Oe.closePanel()},onSelectPanel:I=>{Oe.selectPanel(I)},onSelectPanelBySwipe:I=>{if(I===null){Oe.closePanel();return}Oe.selectPanel(I)}}):null]}),r.jsx(Fa,{open:D,navigationGroups:u,workspaceId:Re,sessionId:e,onClose:()=>G(!1),onOpenSession:I=>{G(!1),p(I.workspaceId),Et("preview"),x($e(I.workspaceId,I.sessionId))}}),r.jsx(rl,{open:_,busy:m,onClose:()=>{m||T(!1)},onConfirm:async()=>{if(!m){f(!0);try{if(await w(e),T(!1),ve({title:i("shell.archiveAdded"),tone:"success"}),ue){if(p(ue),Et("preview"),re){x($e(re.workspace.id,re.session.sessionId));return}x(Tt(ue));return}x("/workspaces")}catch(I){ve({title:I instanceof Error?I.message:i("shell.navigationLoadFailed"),tone:"error"})}finally{f(!1)}}}}),r.jsx(Br,{open:j,workspaceName:(h==null?void 0:h.workspace.name)??null,sessions:It,restoringSessionId:R,onClose:()=>{R||N(!1)},onRestore:async I=>{C(I);try{await b(I),ve({title:i("shell.archiveRestored"),tone:"success"})}catch(se){ve({title:se instanceof Error?se.message:i("shell.navigationLoadFailed"),tone:"error"})}finally{C(null)}}}),He?r.jsx(Ps,{open:Y,source:Z?{kind:"session",sessionId:e,workspaceId:Z.workspaceId,workspaceName:(ye==null?void 0:ye.displayName)??Z.workspaceId,sessionTitle:Z.title,defaultProvider:Z.provider}:null,onClose:()=>K(!1),onCreated:async I=>{I.members.forEach(we=>{A(we.session)}),Js(I.group.id),await d();const se=I.members.find(we=>we.session.sessionId===I.group.anchorSessionId)??I.members[0]??null;if(se){const we=zt(se.session,se.sessionIsolatedWorkspace);p(we),x($e(we,se.session.sessionId))}K(!1),ve({title:i("shell.parallelCreateSucceeded"),tone:"success"})}}):null]})}function Ga(e){return Object.entries(e).map(([,t])=>t.filter(Boolean).join(" / ")).filter(Boolean).join(`
|
|
6
|
-
`)}function Xa(e,t){const n=t.trim();if(!n)return null;for(const s of e){const o=Cr(s,n,null);if(o)return o}return null}function Cr(e,t,n){var o,l;const s=((l=(o=e.item.session.parallelGroup)==null?void 0:o.groupId)==null?void 0:l.trim())||n;if(e.item.session.sessionId===t)return s;for(const c of ns(e)){const u=Cr(c,t,s);if(u)return u}return null}function Ya({draft:e,navigate:t,initialToolPanel:n}){const{shellMode:s,navigationGroups:o,requestNavigationRefresh:l,selectWorkspace:c,setSessionWorkspace:u,upsertNavigationSession:d,favoriteSessions:p,unarchiveSession:S,startDraftSession:M}=bt(),[L,w]=a.useState(!1),[b,v]=a.useState([]),A=a.useMemo(()=>Ct(e.provider),[e.provider]),[x,_]=a.useState(A),T=s!=="mobile",{showToast:j}=nt(),N=a.useMemo(()=>Qa(e),[e]),R=Or(!T),C=_r({enabled:!T,initialPanel:n,sessionId:e.sessionId,workspaceId:e.workspaceId,suspendMainGesture:!T&&R.isVisible}),m=a.useMemo(()=>new Set(p.map(O=>O.session.sessionId)),[p]),f=a.useMemo(()=>o.map(O=>O.workspace),[o]),D=a.useMemo(()=>er(o),[o]),G=a.useMemo(()=>Ns(o),[o]),Y=a.useMemo(()=>f.find(O=>O.id===e.workspaceId)??null,[e.workspaceId,f]),K=G[e.workspaceId]??(Y?Ls(Y):null),ee=a.useMemo(()=>wt(N.title??null,i("conversation.titleFallback")),[N]),H=a.useMemo(()=>Tr(o,e.workspaceId,m),[e.workspaceId,m,o]),ve=a.useMemo(()=>Er(p,o),[p,o]),[F,g]=a.useState([]),$=a.useMemo(()=>[...ve,...H],[ve,H]),W=a.useMemo(()=>rs(o,e.workspaceId),[e.workspaceId,o]),Q=a.useMemo(()=>(W==null?void 0:W.sessions.filter(O=>O.isArchived===!0&&!Lt(O)))??[],[W]),ae=D.find(O=>O.workspace.id===e.workspaceId)??(W?{workspace:W.workspace,label:W.workspace.name,subtitle:W.workspace.path}:null),de=T?null:Lr(R.mainGestureHandlers,C.mainGestureHandlers),[ce,pe]=a.useState(!1),[k,V]=a.useState(null),z=a.useRef(null),q=a.useRef(null),le=a.useRef(null),[B,ne]=a.useState(null),{composerPortalTarget:Ie}=Yn();a.useEffect(()=>{const O=zn($,e.sessionId,U=>U.session.sessionId);O.length!==0&&g(U=>{const he=new Set(U);let Me=!1;for(const fe of O)he.has(fe)||(he.add(fe),Me=!0);return Me?Array.from(he):U})},[e.sessionId,$]),a.useEffect(()=>(u(e.sessionId,e.workspaceId),()=>{u(e.sessionId,null)}),[e.sessionId,e.workspaceId,u]),a.useEffect(()=>{let O=!1;return _(A),Nn(e.provider,e.workspaceId).then(U=>{O||_(U)}).catch(()=>{}),()=>{O=!0}},[e.provider,e.workspaceId,A]),Ar(q,B,!T,e.sessionId),Nr(q,le,!T,e.sessionId);function je(O){c(O),t(Tt(O))}return r.jsx(r.Fragment,{children:r.jsxs("main",{ref:q,className:"workbench-page conversation-page-shell mobile-page-fixed-root mobile-conversation-page","data-mobile-shell":!T,"data-preview-mode":T?void 0:R.displayMode,"data-preview-dragging":T?void 0:R.isDragging,"data-workspace-tone":(K==null?void 0:K.tone)??"root","data-worktree-depth":(K==null?void 0:K.depth)??0,"data-tool-panel-open":T?void 0:C.isOpen,style:{...T?{}:R.pageStyle,...ft(K)??{}},children:[T?r.jsx(Rr,{session:N,workspaceContext:K}):null,T?null:r.jsx(tr,{containerRef:le,className:"mobile-conversation-page-header",gestureHandlers:de??void 0,currentWorkspace:ae?{id:ae.workspace.id,name:ae.label,path:ae.subtitle}:f[0]??null,workspaces:f,workspaceOptions:D,onSelectWorkspace:je,heading:ee.fullTitle,trailing:r.jsx("span",{className:"mobile-conversation-toolbar-title",title:ee.fullTitle,children:ee.displayTitle})}),T?null:r.jsx(Hr,{visible:!C.isOpen&&R.isVisible,widthPx:R.previewWidthPx,isDragging:R.isDragging,gestureHandlers:R.railGestureHandlers,activeSessionId:e.sessionId,createSessionActionLabel:i("shell.createSession"),favoriteItems:ve,items:H,expandedRootIds:F,workspaceSectionLabel:(ae==null?void 0:ae.label)??i("shell.mobileConversationCurrentWorkspaceSection"),onCreateSession:()=>{M(e.workspaceId,e.provider)},archiveFolderActionLabel:Q.length>0?i("shell.archiveFolderLabel"):void 0,onOpenArchiveFolder:Q.length>0?()=>{pe(!0)}:void 0,onToggleSubsessions:O=>{g(U=>U.includes(O)?U.filter(he=>he!==O):[...U,O])},onActivate:O=>{R.closePreview(),c(O.workspace.id),t($e(O.workspace.id,O.session.sessionId))}}),r.jsx("div",{className:"mobile-conversation-stage",...de??{},children:r.jsxs("div",{ref:z,className:"mobile-conversation-main",children:[r.jsx(Hs,{connectionState:"closed",onReconnect:()=>{}}),r.jsx("div",{className:"conversation-timeline-shell",children:r.jsx(_s,{sessionId:e.sessionId,workspaceId:e.workspaceId,workspacePath:(Y==null?void 0:Y.path)??null,messages:b,historyState:"ready",loadingOlderMessages:!1,hasOlderMessages:!1,provider:e.provider,runtimeThinkingPlaceholder:null,sessionRunningState:null,sessionSyncStatus:null,sessionLastErrorCode:null,sessionLastErrorDetail:null,onLoadOlderMessages:()=>{},onRetryMessage:()=>{}})}),C.isOpen?null:r.jsx(Os,{capabilities:x,draftStorageId:e.sessionId,workspaceId:e.workspaceId,panelRef:T?void 0:ne,portalContainer:T?null:Ie,contextUsage:null,taskProvider:e.provider,taskMessages:b,isSubmitting:L,isRunning:!1,onSend:async(O,U)=>{var fe,Ce,De,J;const he=dl();v(te=>[...te,Fn(e.sessionId,O,he,(U==null?void 0:U.attachmentMeta)??[],(U==null?void 0:U.attachments)??[])]),w(!0);const Me=performance.now();ge("session_send.start_live.client_start",{draftSessionId:e.sessionId,workspaceId:e.workspaceId,provider:e.provider,clientRequestId:he,contentLength:O.length});try{const te=await _n({workspaceId:e.workspaceId,provider:e.provider,content:O,clientRequestId:he,model:(U==null?void 0:U.model)??null,reasoningLevel:(U==null?void 0:U.reasoningLevel)??null,permissionMode:it(),attachments:(U==null?void 0:U.attachments)??[],providerConfigMode:(U==null?void 0:U.providerConfigMode)??"global-default",providerPresetId:(U==null?void 0:U.providerPresetId)??null});ge("session_send.start_live.client_response",{draftSessionId:e.sessionId,sessionId:te.sessionId,workspaceId:((fe=te.session)==null?void 0:fe.workspaceId)??e.workspaceId,provider:te.provider,clientRequestId:he,durationMs:Math.round(performance.now()-Me),returnedMessageId:((Ce=te.message)==null?void 0:Ce.messageId)??null}),te.session&&d(te.session);const Se=((J=(De=te.session)==null?void 0:De.workspaceId)==null?void 0:J.trim())||e.workspaceId;u(te.sessionId,Se),Et("preview"),t($e(Se,te.sessionId),{replace:!0,state:{composer:{sessionId:te.sessionId,initialModel:(U==null?void 0:U.model)??null,providerConfigMode:(U==null?void 0:U.providerConfigMode)??"global-default",providerPresetId:(U==null?void 0:U.providerPresetId)??null},bootstrap:te.message?{sessionId:te.sessionId,messages:[te.message]}:void 0}}),l()}catch(te){throw ge("session_send.start_live.client_error",{draftSessionId:e.sessionId,workspaceId:e.workspaceId,provider:e.provider,clientRequestId:he,durationMs:Math.round(performance.now()-Me),error:te instanceof Error?te.message:String(te)}),v(Se=>xs(Se,he)),te}finally{w(!1)}}})]})}),T?null:r.jsx(Dr,{activePanel:C.activePanel,open:C.isOpen,sessionId:e.sessionId,workspaceId:e.workspaceId,navigationGroups:o,onClose:()=>{C.closePanel()},onSelectPanel:O=>{C.selectPanel(O)},onSelectPanelBySwipe:O=>{if(O===null){C.closePanel();return}C.selectPanel(O)}}),r.jsx(Br,{open:ce,workspaceName:(W==null?void 0:W.workspace.name)??null,sessions:Q,restoringSessionId:k,onClose:()=>{k||pe(!1)},onRestore:async O=>{V(O);try{await S(O),j({title:i("shell.archiveRestored"),tone:"success"})}catch(U){j({title:U instanceof Error?U.message:i("shell.navigationLoadFailed"),tone:"error"})}finally{V(null)}}})]})})}function za(e,t,n,s=null){var c,u;if(!al(e))return null;const o=t??((c=n.get("workspaceId"))==null?void 0:c.trim())??null,l=((u=n.get("provider"))==null?void 0:u.trim())??s??null;return!o||!On(l)?null:{sessionId:e,workspaceId:o,provider:l}}function Qa(e){const t=new Date().toISOString();return{sessionId:e.sessionId,workspaceId:e.workspaceId,provider:e.provider,providerSessionId:`draft://${e.sessionId}`,rawStoreRef:`draft://${e.sessionId}`,providerConfigMode:"global-default",providerPresetId:null,parentSessionId:null,isSubagent:!1,subagentLabel:null,isArchived:!1,title:vo(e.provider),messageCount:0,lastMessageAt:null,createdAt:t,updatedAt:t,syncStatus:"idle",syncCursor:null,lastSyncAt:null,lastErrorCode:null,lastErrorDetail:null,resumedAt:null,runningState:"idle",activitySource:"none",lastEventAt:null,completedAt:null,lastSeenAt:null,activityState:"idle"}}function kr(e){const t=new Map(e.map(o=>[o.sessionId,o])),n=new Map,s=o=>{const l=n.get(o.sessionId);if(typeof l=="boolean")return l;if(o.isArchived)return n.set(o.sessionId,!1),!1;const c=Jo(o,{mode:"mobile"});if(!c)return n.set(o.sessionId,!0),!0;const u=t.get(c);if(!u)return n.set(o.sessionId,!0),!0;if(u.isArchived){const p=!Lt(o);return n.set(o.sessionId,p),p}const d=s(u);return n.set(o.sessionId,d),d};return e.filter(o=>s(o))}function Tr(e,t,n){if(!t)return[];const s=rs(e,t);if(!s)return[];const o=kr(s.sessions).map(c=>({session:c,workspace:s.workspace}));return ss(o,{mode:"mobile"}).filter(c=>!n.has(c.item.session.sessionId)&&!zo(c.children,u=>n.has(u.session.sessionId)))}function Er(e,t){return e.filter(n=>!Lt(n.session)).flatMap(n=>{const s=rs(t,n.workspace.id);if(!s)return[];const o=ss(kr(s.sessions).map(c=>({session:c,workspace:s.workspace})),{mode:"mobile"}),l=jr(o,n.session.sessionId);return l?[l]:[]})}function jr(e,t){for(const n of e){if(n.item.session.sessionId===t)return n;const s=jr(n.children,t);if(s)return s}return null}function Ar(e,t,n,s){a.useEffect(()=>{const o=e.current;if(!n||!o){o&&o.style.removeProperty("--mobile-conversation-composer-height");return}if(!t){o.style.removeProperty("--mobile-conversation-composer-height");return}const l=o,c=t;function u(){!e.current||!c.isConnected||l.style.setProperty("--mobile-conversation-composer-height",`${c.offsetHeight}px`)}u();const d=typeof ResizeObserver<"u"?new ResizeObserver(u):null;return d==null||d.observe(c),window.addEventListener("resize",u),()=>{d==null||d.disconnect(),window.removeEventListener("resize",u),o.style.removeProperty("--mobile-conversation-composer-height")}},[t,n,s,e])}function Nr(e,t,n,s){a.useEffect(()=>{const o=e.current,l=t.current;if(!n||!o){o&&o.style.removeProperty("--mobile-conversation-page-header-height");return}if(!l){o.style.removeProperty("--mobile-conversation-page-header-height");return}const c=o,u=l;function d(){!e.current||!u.isConnected||c.style.setProperty("--mobile-conversation-page-header-height",`${u.offsetHeight}px`)}d();const p=typeof ResizeObserver<"u"?new ResizeObserver(d):null;return p==null||p.observe(u),window.addEventListener("resize",d),()=>{p==null||p.disconnect(),window.removeEventListener("resize",d),o.style.removeProperty("--mobile-conversation-page-header-height")}},[n,t,s,e])}function Ka(e){return e==="files"||e==="git"||e==="processes"?e:null}function Lr(...e){const t=e.filter(Boolean);return{onTouchStart(n){t.forEach(s=>s.onTouchStart(n))},onTouchMove(n){t.forEach(s=>s.onTouchMove(n))},onTouchEnd(n){t.forEach(s=>s.onTouchEnd(n))},onTouchCancel(n){t.forEach(s=>s.onTouchCancel(n))}}}function _r(e){const t=Ds(),n=lt(),s=As(),o=St(),l=a.useRef(null),c=a.useRef(!1),[u,d]=a.useState(()=>e.initialPanel??en()),p=e.initialPanel??u,S=e.enabled&&e.workspaceId!==null&&e.initialPanel!==null;a.useEffect(()=>{if(!e.enabled){l.current=null,c.current=!1;return}const j=e.initialPanel??en();d(j),tn(j)},[e.enabled,e.initialPanel]),a.useEffect(()=>{if(!S){c.current=!1;return}if(o.platform!=="android"||!Za(t.state)||c.current||typeof window>"u"||window.location.pathname!==t.pathname)return;const j=new URLSearchParams(t.search);j.delete("toolPanel");const N=j.toString(),R=`${t.pathname}${N?`?${N}`:""}${t.hash}`,C=`${t.pathname}${t.search}${t.hash}`;window.history.replaceState(window.history.state,"",R),window.history.pushState(window.history.state,"",C),c.current=!0},[S,t.hash,t.pathname,t.search,t.state,o.platform]);function M(j,N){const R=new URLSearchParams(t.search);j?(R.set("toolPanel",j),d(j),tn(j)):R.delete("toolPanel");const C=R.toString();n({pathname:t.pathname,search:C?`?${C}`:""},{replace:(N==null?void 0:N.replace)??!1})}function L(j){s.trigger("selection"),M(j,{replace:S})}function w(){if(S){if(s.trigger("gesture"),c.current&&typeof window<"u"){c.current=!1,window.history.back();return}M(null,{replace:!0})}}function b(j){if(!e.enabled||!e.workspaceId)return;const N=j??p;s.trigger("gesture"),M(N)}function v(j){if(!e.enabled||j.changedTouches.length!==1){l.current=null;return}if(Ja(j.target)){l.current=null;return}const N=j.changedTouches[0];l.current={x:N.clientX,y:N.clientY}}function A(j){const N=l.current;if(l.current=null,!N||j.changedTouches.length!==1||S||e.suspendMainGesture)return;const R=j.changedTouches[0],C=R.clientX-N.x,m=R.clientY-N.y;C>-56||Math.abs(C)<=Math.abs(m)*1.15||b()}function x(j){const N=l.current;if(l.current=null,!N||j.changedTouches.length!==1||!S)return;const R=j.changedTouches[0],C=R.clientX-N.x,m=R.clientY-N.y;C<56||Math.abs(C)<=Math.abs(m)*1.15||w()}return{activePanel:p,closePanel:w,isOpen:S,mainGestureHandlers:{onTouchStart:v,onTouchMove:()=>{},onTouchEnd:A,onTouchCancel:()=>{l.current=null}},openPanel:b,panelGestureHandlers:{onTouchStart:v,onTouchMove:()=>{},onTouchEnd:x,onTouchCancel:()=>{l.current=null}},selectPanel:L}}function Dr(e){const t=a.useRef(null);if(!e.open)return null;function n(o){if(o.changedTouches.length!==1){t.current=null;return}if(el(o.target)){t.current=null;return}const l=o.changedTouches[0];t.current={x:l.clientX,y:l.clientY}}function s(o){const l=t.current;if(t.current=null,!l||o.changedTouches.length!==1)return;const c=o.changedTouches[0],u=c.clientX-l.x,d=c.clientY-l.y;if(Math.abs(u)<56||Math.abs(u)<=Math.abs(d)*1.15)return;const p=["files","git","processes"],S=p.indexOf(e.activePanel);if(u<0){e.onSelectPanelBySwipe(p[Math.min(p.length-1,S+1)]??e.activePanel);return}if(S===0){e.onSelectPanelBySwipe(null);return}e.onSelectPanelBySwipe(p[Math.max(0,S-1)]??e.activePanel)}return r.jsxs("section",{className:"mobile-conversation-tool-panel","data-panel":e.activePanel,onTouchStartCapture:n,onTouchEndCapture:s,onTouchCancel:()=>{t.current=null},children:[r.jsxs("header",{className:"mobile-conversation-tool-panel-header","data-preview-gesture":"ignore",children:[r.jsx("button",{type:"button",className:"mobile-conversation-tool-panel-back","aria-label":i("shell.mobileConversationToolCloseAction"),title:i("shell.mobileConversationToolCloseAction"),onClick:e.onClose,children:r.jsx("span",{"aria-hidden":"true",children:"‹"})}),r.jsx("div",{className:"mobile-conversation-tool-panel-tabs",role:"tablist","aria-label":i("shell.mobileConversationToolTabsLabel"),children:["files","git","processes"].map(o=>r.jsx("button",{type:"button",role:"tab","aria-selected":e.activePanel===o,className:"mobile-conversation-tool-panel-tab",onClick:()=>{e.onSelectPanel(o)},children:o==="files"?i("shell.filesEntry"):o==="git"?i("shell.gitEntry"):i("shell.mobileConversationToolProcessesTab")},o))})]}),r.jsx("div",{className:"mobile-conversation-tool-panel-body",children:e.activePanel==="files"?r.jsx(Kn,{className:"mobile-conversation-tool-surface",hideHeading:!0,sessionId:e.sessionId,workspaceId:e.workspaceId}):e.activePanel==="git"?r.jsx(Zn,{className:"mobile-conversation-tool-surface",panelActive:!0,workspaceId:e.workspaceId}):r.jsx(Jn,{className:"mobile-conversation-tool-surface mobile-tool-native-panel mobile-tool-process-panel",currentWorkspaceId:e.workspaceId,navigationGroups:e.navigationGroups})})]})}function Za(e){return typeof e=="object"&&e!==null&&"mobileToolPanelRouteRedirect"in e&&e.mobileToolPanelRouteRedirect===!0}function Ja(e){return e instanceof Element?!!e.closest("input, textarea, select, option, label, button, a, [contenteditable='true'], [data-preview-gesture='ignore']"):!1}function el(e){return e instanceof Element?!!e.closest("input, textarea, select, option, [contenteditable='true']"):!1}function Or(e){const t=As(),[n,s]=a.useState(()=>e?ls():"immersive"),[o,l]=a.useState(()=>jn()),[c,u]=a.useState(()=>e&&ls()==="preview"?"default":"closed"),d=a.useRef(c),p=a.useRef(null);a.useEffect(()=>{d.current=c},[c]),a.useEffect(()=>{if(!e){p.current=null,d.current="closed",u("closed"),s("immersive");return}const m=ls();s(m),u(m==="preview"?"default":"closed")},[e]),a.useEffect(()=>{e&&Et(n)},[e,n]),a.useEffect(()=>{if(typeof window>"u")return;function m(){l(jn())}return m(),window.addEventListener("resize",m),()=>{window.removeEventListener("resize",m)}},[]);function S(m){d.current=m,u(m)}function M(m="default"){S(m),s("preview")}function L(){S("closed"),s("immersive")}function w(){S("expanded"),s("preview")}function b(){if(d.current!=="closed"){t.trigger("gesture"),L();return}t.trigger("gesture"),M()}function v(m,f){const D=f.touches[0]??f.changedTouches[0];if(!e||!D){p.current=null;return}if(sl(f.target)){p.current=null;return}if(m==="main"){if(d.current==="closed"&&D.clientX>$a){p.current=null;return}}else if(d.current==="closed"){p.current=null;return}p.current={source:m,intent:m==="rail"?"rail":d.current==="closed"?"open":"close",startX:D.clientX,startY:D.clientY,lastX:D.clientX,lastY:D.clientY,horizontalLocked:!1}}function A(m){const f=p.current,D=m.touches[0];if(!e||!f||!D)return;const G=D.clientX-f.startX,Y=D.clientY-f.startY;if(f.lastX=D.clientX,f.lastY=D.clientY,!f.horizontalLocked){if(Math.abs(G)<En&&Math.abs(Y)<En)return;if(Math.abs(G)<=Math.abs(Y)){p.current=null;return}if(f.intent==="open"&&G<=0){p.current=null;return}if(f.intent==="close"&&G>=0){p.current=null;return}f.horizontalLocked=!0}}function x(m){var Y;const f=p.current;if(p.current=null,!(f!=null&&f.horizontalLocked))return;const D=(Y=m==null?void 0:m.changedTouches)==null?void 0:Y[0];D&&(f.lastX=D.clientX,f.lastY=D.clientY);const G=f.lastX-f.startX;if(f.intent==="open"){G>=qa&&(t.trigger("gesture"),M("default"));return}if(f.intent==="close"){G<=-34&&(t.trigger("gesture"),L());return}if(G<=-34){t.trigger("gesture"),L();return}G>=Ua&&d.current==="default"&&(t.trigger("gesture"),w())}const _=c==="expanded"?Is:c==="default"?Tn:0,T=Math.round(o*_*100)/100,j=_===0?0:_/Is,N={"--mobile-conversation-preview-default-width":`${Math.round(o*Tn*100)/100}px`,"--mobile-conversation-preview-max-width":`${Math.round(o*Is*100)/100}px`,"--mobile-conversation-preview-width":`${T}px`,"--mobile-conversation-preview-progress":j.toFixed(4)};return{closePreview:L,displayMode:c==="closed"?"immersive":"preview",isDragging:!1,isVisible:c!=="closed",mainGestureHandlers:{onTouchStart:m=>v("main",m),onTouchMove:A,onTouchEnd:x,onTouchCancel:x},pageStyle:N,previewWidthPx:T,railGestureHandlers:{onTouchStart:m=>v("rail",m),onTouchMove:A,onTouchEnd:x,onTouchCancel:x},togglePreview:b}}function Hr({visible:e,widthPx:t,isDragging:n,gestureHandlers:s,activeSessionId:o,createSessionActionLabel:l,favoriteItems:c,items:u,expandedRootIds:d,workspaceSectionLabel:p,onCreateSession:S,archiveCurrentActionLabel:M,archiveFolderActionLabel:L,onArchiveActiveSession:w,onOpenArchiveFolder:b,onToggleSubsessions:v,onActivate:A}){if(!e)return null;function x(_,T){const{workspaceName:j,ancestorExpanded:N=!1,ancestorHasNextSiblings:R=[],hasNextSibling:C=!1,isFirstSibling:m=!1}=T??{},f=_.item.session.sessionId,D=_.children,G=_.depth===0&&D.length>0,Y=N||G&&d.includes(f),K=_.depth>0?[...R,C]:[...R];return r.jsxs("div",{className:"mobile-conversation-preview-tree-node",children:[r.jsxs("div",{className:"mobile-conversation-preview-tree-row",style:{"--mobile-preview-tree-depth":_.depth},children:[_.depth>0?r.jsxs("div",{className:"mobile-conversation-preview-guides","aria-hidden":"true",children:[R.map((ee,H)=>ee?r.jsx("span",{className:"mobile-conversation-preview-guide-column",style:{"--mobile-preview-tree-level":H+1}},`${f}:ancestor:${H}`):null),r.jsx("span",{className:"mobile-conversation-preview-guide-branch","data-continue":C,"data-first":m,style:{"--mobile-preview-tree-level":_.depth},children:r.jsx("span",{className:"mobile-conversation-preview-guide-branch-horizontal"})})]}):null,r.jsx(tl,{entry:_.item,activeSessionId:o,hasSubsessions:G,subsessionsExpanded:Y,workspaceName:j,onToggleSubsessions:G?()=>{v(f)}:void 0,onActivate:A})]}),D.length>0&&Y?r.jsx("div",{className:"mobile-conversation-preview-children",children:D.map((ee,H)=>x(ee,{workspaceName:j,ancestorExpanded:!0,ancestorHasNextSiblings:K,hasNextSibling:H<D.length-1,isFirstSibling:H===0}))}):null]},`${_.item.workspace.id}:${f}`)}return r.jsxs("aside",{className:"mobile-conversation-preview-rail terminal-mobile-list-rail surface-card","data-dragging":n,style:{width:`${t}px`,maxWidth:`${t}px`},...s,children:[l&&S?r.jsx("div",{className:"mobile-conversation-preview-topbar terminal-mobile-list-footer",children:r.jsxs("button",{type:"button",className:"mobile-conversation-preview-create-button workbench-import-toggle terminal-mobile-list-create",onClick:S,children:[r.jsx("span",{className:"workbench-import-toggle-symbol","aria-hidden":"true",children:"+"}),r.jsx("span",{className:"workbench-import-toggle-label",children:l})]})}):null,r.jsxs("div",{className:"mobile-conversation-preview-body terminal-mobile-list-body",children:[c.length>0?r.jsxs("section",{className:"mobile-conversation-preview-group mobile-conversation-preview-list-favorites terminal-mobile-list-group terminal-mobile-list-group-pinned",children:[r.jsxs("div",{className:"mobile-conversation-preview-group-heading terminal-mobile-list-group-heading",children:[r.jsx("span",{children:i("shell.favoriteSectionTitle")}),r.jsx("span",{className:"workbench-section-counter",children:c.length})]}),r.jsx("div",{className:"mobile-conversation-preview-list mobile-conversation-preview-list-static terminal-mobile-session-list",children:c.map(_=>r.jsx("div",{children:x(_,{workspaceName:_.item.workspace.name})},`favorite:${_.item.workspace.id}:${_.item.session.sessionId}`))})]}):null,r.jsxs("section",{className:"mobile-conversation-preview-group mobile-conversation-preview-group-workspace terminal-mobile-list-group terminal-mobile-list-group-workspace",children:[r.jsxs("div",{className:"mobile-conversation-preview-group-heading terminal-mobile-list-group-heading",children:[r.jsx("span",{children:p}),r.jsx("span",{className:"workbench-section-counter",children:u.length})]}),u.length===0?r.jsx("div",{className:"workbench-session-empty",children:i("shell.emptyWorkspaceSessions")}):r.jsx("div",{className:"mobile-conversation-preview-list terminal-mobile-session-list","data-preview-gesture":"ignore",children:u.map(_=>x(_))})]})]}),M&&w||L&&b?r.jsxs("div",{className:"mobile-conversation-preview-actions terminal-mobile-list-footer",children:[M&&w?r.jsx("button",{type:"button",className:"mobile-conversation-preview-archive-button workbench-import-toggle",onClick:()=>{w()},children:M}):null,L&&b?r.jsx("button",{type:"button",className:"mobile-conversation-preview-archive-button workbench-import-toggle",onClick:b,children:L}):null]}):null]})}function tl({entry:e,activeSessionId:t,hasSubsessions:n=!1,subsessionsExpanded:s=!1,onActivate:o,onToggleSubsessions:l,workspaceName:c}){const u=e.session.sessionId===t;return r.jsxs("article",{className:"mobile-conversation-preview-entry terminal-mobile-session-card","data-active":u,children:[n?r.jsx("button",{type:"button",className:"mobile-conversation-preview-toggle","aria-label":s?i("shell.subagentCollapse"):i("shell.subagentExpand"),title:s?i("shell.subagentCollapse"):i("shell.subagentExpand"),"aria-expanded":s,onClick:d=>{d.stopPropagation(),l==null||l()},children:r.jsx("span",{className:An(e.session,{isActive:u,hasSubsessions:n}),"aria-hidden":"true"})}):r.jsx("span",{className:An(e.session,{isActive:u,hasSubsessions:n}),"aria-hidden":"true"}),r.jsx("button",{type:"button",className:"mobile-conversation-preview-item terminal-mobile-session-primary","data-active":u,onClick:()=>o(e),children:r.jsxs("div",{className:"mobile-conversation-preview-item-body",children:[r.jsx("span",{className:"mobile-conversation-preview-item-title",children:e.session.title||i("common.unknown")}),r.jsx("span",{className:"mobile-conversation-preview-item-meta",children:Fr(e.session,c)})]})})]})}function jn(){return typeof window>"u"?390:Math.max(window.innerWidth||390,320)}function sl(e){return e instanceof Element?!!e.closest("input, textarea, select, option, label, [contenteditable='true'], [data-preview-gesture='ignore']"):!1}function An(e,t){const n=ei("mobile-conversation-preview-indicator",e,{hasSubagents:t.hasSubsessions});return n.endsWith(" is-idle")&&t.isActive?"mobile-conversation-preview-indicator is-active":n}function Fr(e,t){const n=Xn(e);return[t??null,At(e.provider),nl(e.lastMessageAt??e.updatedAt),n].filter(Boolean).join(" · ")}function nl(e){return e?new Date(e).toLocaleString(void 0,{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit"}):i("common.unknown")}function rl({open:e,busy:t,onClose:n,onConfirm:s}){return r.jsx(Jt,{open:e,title:i("shell.archiveConfirmTitle"),description:i("shell.archiveConfirmDescription"),size:"narrow",layout:"confirm",dismissible:!t,showCloseButton:!1,footer:r.jsxs(es,{children:[r.jsx("button",{type:"button",className:"secondary-button",disabled:t,onClick:n,children:i("common.cancel")}),r.jsx("button",{type:"button",className:"secondary-button workbench-danger-button",disabled:t,onClick:()=>{s()},children:i("shell.archiveAction")})]}),onClose:n,children:r.jsx(r.Fragment,{})})}function Br({open:e,workspaceName:t,sessions:n,restoringSessionId:s,onClose:o,onRestore:l}){const{searchOpen:c,searchKeyword:u,filteredSessions:d,summaryLoading:p,summaryError:S,summaryBySessionId:M,setSearchKeyword:L,toggleSearch:w}=Qo(e,n),b=a.useId(),v=n.length>0&&u.trim().length>0?i("shell.archiveSearchEmpty"):i("shell.archiveEmpty");return r.jsxs(Jt,{open:e,title:i("shell.archiveModalTitle"),description:t?`${t} · ${i("shell.archiveModalDescription")}`:i("shell.archiveModalDescription"),size:"regular",layout:"list",dismissible:!s,headerActions:n.length>0?r.jsx("button",{type:"button",className:"secondary-button","aria-pressed":c,onClick:w,children:i("shell.archiveSearchAction")}):void 0,showCloseButton:!1,onClose:o,children:[c?r.jsxs("div",{className:"workbench-archive-search-panel",children:[r.jsx(Yt,{label:i("shell.archiveSearchLabel"),htmlFor:b,children:r.jsx("input",{id:b,type:"text",value:u,placeholder:i("shell.archiveSearchPlaceholder"),autoFocus:!0,onChange:A=>L(A.target.value)})}),p?r.jsx("p",{className:"workbench-archive-search-status",children:i("shell.archiveSearchSummaryLoading")}):null,S?r.jsx("p",{className:"workbench-archive-search-status status-text","data-tone":"warning",children:S}):null]}):null,d.length>0?r.jsx(bo,{className:"workbench-archive-list",children:d.map(A=>{var T;const x=wt(A.title,i("common.unknown")),_=((T=M[A.sessionId])==null?void 0:T.trim())??"";return r.jsx(wo,{className:"workbench-archive-item",trailing:r.jsx("button",{type:"button",className:"secondary-button",disabled:s===A.sessionId,onClick:()=>{l(A.sessionId)},children:i("shell.unarchiveAction")}),children:r.jsxs("div",{className:"workbench-archive-item-main",children:[r.jsx("strong",{title:x.fullTitle,children:x.displayTitle}),r.jsx("p",{children:Fr(A)}),c&&_?r.jsx("p",{className:"workbench-archive-item-summary",children:_}):null]})},A.sessionId)})}):r.jsx(So,{title:v,compact:!0,className:"workbench-section-empty"})]})}function ol(e){return r.jsx("button",{type:"button",className:"conversation-header-ai-button","aria-label":i("conversation.branchTreeAction"),title:i("conversation.branchTreeAction"),onClick:e.onOpenBranchTree,children:r.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:r.jsx(Ko,{})})})}function il(){return r.jsxs("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[r.jsx("path",{d:"M4 3.25a1.75 1.75 0 1 1 0 3.5a1.75 1.75 0 0 1 0-3.5Zm0 6a1.75 1.75 0 1 1 0 3.5a1.75 1.75 0 0 1 0-3.5Zm8-3a1.75 1.75 0 1 1 0 3.5a1.75 1.75 0 0 1 0-3.5Z",fill:"none",stroke:"currentColor",strokeWidth:"1.4"}),r.jsx("path",{d:"M5.75 5h2.15c1.35 0 2.45 1.1 2.45 2.45v.1M5.75 11h2.15c1.35 0 2.45-1.1 2.45-2.45V8.4",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.4"})]})}function al(e){return e.startsWith("draft-")}function ll(e,t){if(!t||typeof t!="object")return[];const n=t.bootstrap;if(!n||typeof n!="object")return[];const s=n.sessionId,o=n.messages;return s!==e||!Array.isArray(o)?[]:o.filter(ul)}function cl(e,t){if(!t||typeof t!="object")return{initialModel:null,providerConfigMode:"global-default",providerPresetId:null};const n=t.composer;if(!n||typeof n!="object")return{initialModel:null,providerConfigMode:"global-default",providerPresetId:null};const s=n.sessionId,o=n.initialModel,l=n.providerConfigMode,c=n.providerPresetId;if(s!==e)return{initialModel:null,providerConfigMode:"global-default",providerPresetId:null};const u=typeof o=="string"&&o.trim()||null,d=typeof c=="string"&&c.trim()||null,p=l==="cc-switch-preset"&&d?"cc-switch-preset":"global-default";return{initialModel:u,providerConfigMode:p,providerPresetId:p==="cc-switch-preset"?d:null}}function ul(e){if(!e||typeof e!="object")return!1;const t=e;return typeof t.messageId=="string"&&typeof t.provider=="string"&&typeof t.providerSessionId=="string"&&typeof t.role=="string"&&typeof t.content=="string"&&typeof t.timestamp=="string"&&typeof t.sequence=="number"&&typeof t.rawRef=="string"}function dl(){const e=globalThis.crypto;return e&&typeof e.randomUUID=="function"?e.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}export{Al as ConversationPage};
|