@jingyi0605/codingns 0.9.6 → 0.9.8

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.
Files changed (170) hide show
  1. package/dist/public/assets/{AdaptiveButlerPage-khJQh6a_.js → AdaptiveButlerPage-D-gXre7Y.js} +2 -2
  2. package/dist/public/assets/{App-CcDXqFl1.css → App-7zrCMhE-.css} +1 -1
  3. package/dist/public/assets/App-Dl-mcdqy.js +30 -0
  4. package/dist/public/assets/{BootstrapPage-DcfYtoLC.js → BootstrapPage-B-yMdfpQ.js} +1 -1
  5. package/dist/public/assets/ConversationPage-DRQ5Sg_d.js +9 -0
  6. package/dist/public/assets/{DesktopDetachPreviewPage-CXUPMcBz.js → DesktopDetachPreviewPage-D1DMaGcy.js} +1 -1
  7. package/dist/public/assets/{DesktopModal-bMdI1jEe.js → DesktopModal-BnfGW2gk.js} +1 -1
  8. package/dist/public/assets/DesktopWindowPage-2SWAi0xz.js +2 -0
  9. package/dist/public/assets/FileContextPanel-fbPuE9dO.js +1 -0
  10. package/dist/public/assets/GitSidebar-BkmesJJR.js +6 -0
  11. package/dist/public/assets/{MobileCreateSessionSheet-DWPBsEx8.js → MobileCreateSessionSheet-CEJcDBZJ.js} +1 -1
  12. package/dist/public/assets/{MobileSheet-BXvQPkxt.js → MobileSheet-rkn_CUOY.js} +1 -1
  13. package/dist/public/assets/{MobileTopHeaderFrame-vdYOyaaB.js → MobileTopHeaderFrame-CU0wsYSS.js} +1 -1
  14. package/dist/public/assets/MobileWorkspaceSwitcherHeader-idl8o1OB.js +1 -0
  15. package/dist/public/assets/{PluginAccessOverview-C77TeZTK.js → PluginAccessOverview-BBgM6tb0.js} +1 -1
  16. package/dist/public/assets/{PluginContainerPage-DdSwOCw-.js → PluginContainerPage-D-ly3i3H.js} +1 -1
  17. package/dist/public/assets/{PluginDetailPage-BK1yTzvO.js → PluginDetailPage-CWAHYyyG.js} +1 -1
  18. package/dist/public/assets/{PluginsListPage-DAAwSc6W.js → PluginsListPage-Cte3vBgR.js} +1 -1
  19. package/dist/public/assets/{RelayConnectEntryPage-4Yyo2p8b.js → RelayConnectEntryPage-sRJlstx9.js} +1 -1
  20. package/dist/public/assets/{ServerSettingsModal-C_DEisHs.js → ServerSettingsModal-BBft9KEC.js} +1 -1
  21. package/dist/public/assets/SessionIndexPage-CN7cEdl9.js +1 -0
  22. package/dist/public/assets/SettingsPage-BGT-YqG2.js +2 -0
  23. package/dist/public/assets/TerminalManagerPanel-6-ZJ8vGn.js +1 -0
  24. package/dist/public/assets/TerminalPage-CUXXQYU2.js +55 -0
  25. package/dist/public/assets/{TerminalRuntimeFallbackModal-KvG6k4AQ.js → TerminalRuntimeFallbackModal-zc3qqMKJ.js} +1 -1
  26. package/dist/public/assets/ToolFilesPage-QzsZyr0F.js +1 -0
  27. package/dist/public/assets/ToolGitPage-CXg4ncuT.js +1 -0
  28. package/dist/public/assets/ToolProcessesPage-BPsOsg4w.js +1 -0
  29. package/dist/public/assets/ToolsHomePage-D1n4FU1s.js +1 -0
  30. package/dist/public/assets/WorkbenchLandingPage-BaU_dXls.js +1 -0
  31. package/dist/public/assets/WorkbenchLayout-DViAJhHz.js +1027 -0
  32. package/dist/public/assets/{WorkbenchModal-xbx1o6MO.js → WorkbenchModal-DWsNm2B2.js} +1 -1
  33. package/dist/public/assets/WorkbenchShellRoute-BGfRqBUa.js +1 -0
  34. package/dist/public/assets/WorkbenchShellRoute-f2jWjHWu.css +1 -0
  35. package/dist/public/assets/WorkspaceDebugDetailPage-BX0zVSsI.js +1 -0
  36. package/dist/public/assets/WorkspaceDetailPage-Dx6JX4jx.js +1 -0
  37. package/dist/public/assets/WorkspaceHomePage-DQVJ042Z.js +1 -0
  38. package/dist/public/assets/{client-runtime-manager-Bwau7p1v.js → client-runtime-manager-D9VbgJZ_.js} +1 -1
  39. package/dist/public/assets/host-alias-0TfFnYxR.js +1 -0
  40. package/dist/public/assets/index-DREvg1Yu.css +1 -0
  41. package/dist/public/assets/index-FOhyOpGY.js +50 -0
  42. package/dist/public/assets/{login-direct-candidate-resolver-CKUQ07IA.js → login-direct-candidate-resolver-17wEvjhh.js} +1 -1
  43. package/dist/public/assets/peer-host-config-sync-vYkmqzNz.js +1 -0
  44. package/dist/public/assets/{plugin-permission-copy-DIVk5jNp.js → plugin-permission-copy-apDn8EWG.js} +1 -1
  45. package/dist/public/assets/{plugins-api-DHJVvPZw.js → plugins-api-CnZYRKoS.js} +1 -1
  46. package/dist/public/assets/{preferences-service-CyxxeBmS.js → preferences-service-PZlLLAWH.js} +1 -1
  47. package/dist/public/assets/relay-entry-DhHwflXl.js +1 -0
  48. package/dist/public/assets/styles-BhKoKfQ_.css +1 -0
  49. package/dist/public/assets/terminal-runtime-meta-2zvacxvM.js +1 -0
  50. package/dist/public/assets/{useRegisteredDebugTemplates-wCGD2SLW.js → useRegisteredDebugTemplates-CJ-o4tFl.js} +1 -1
  51. package/dist/public/assets/workbench-navigation-aqJ1ay4M.js +1 -0
  52. package/dist/public/index.html +2 -2
  53. package/dist/server/middlewares/auth-guard.js +1 -0
  54. package/dist/server/middlewares/auth-guard.js.map +1 -1
  55. package/dist/server/modules/peer-host/host-api-proxy-service.d.ts +9 -0
  56. package/dist/server/modules/peer-host/host-api-proxy-service.js +174 -0
  57. package/dist/server/modules/peer-host/host-api-proxy-service.js.map +1 -0
  58. package/dist/server/modules/peer-host/host-handshake-controller.d.ts +7 -0
  59. package/dist/server/modules/peer-host/host-handshake-controller.js +10 -0
  60. package/dist/server/modules/peer-host/host-handshake-controller.js.map +1 -0
  61. package/dist/server/modules/peer-host/host-handshake.d.ts +15 -0
  62. package/dist/server/modules/peer-host/host-handshake.js +20 -0
  63. package/dist/server/modules/peer-host/host-handshake.js.map +1 -0
  64. package/dist/server/modules/peer-host/host-ws-proxy-service.d.ts +14 -0
  65. package/dist/server/modules/peer-host/host-ws-proxy-service.js +256 -0
  66. package/dist/server/modules/peer-host/host-ws-proxy-service.js.map +1 -0
  67. package/dist/server/modules/peer-host/peer-host-controller.d.ts +55 -0
  68. package/dist/server/modules/peer-host/peer-host-controller.js +62 -0
  69. package/dist/server/modules/peer-host/peer-host-controller.js.map +1 -0
  70. package/dist/server/modules/peer-host/peer-host-service.d.ts +77 -0
  71. package/dist/server/modules/peer-host/peer-host-service.js +529 -0
  72. package/dist/server/modules/peer-host/peer-host-service.js.map +1 -0
  73. package/dist/server/modules/provider/provider-discovery-runtime.js +16 -1
  74. package/dist/server/modules/provider/provider-discovery-runtime.js.map +1 -1
  75. package/dist/server/modules/sessions/codex-app-server-helper-client.js +14 -0
  76. package/dist/server/modules/sessions/codex-app-server-helper-client.js.map +1 -1
  77. package/dist/server/modules/sessions/codex-app-server-helper-process.js +59 -0
  78. package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
  79. package/dist/server/modules/sessions/codex-session-title-generator.d.ts +19 -0
  80. package/dist/server/modules/sessions/codex-session-title-generator.js +308 -0
  81. package/dist/server/modules/sessions/codex-session-title-generator.js.map +1 -0
  82. package/dist/server/modules/sessions/session-history-service.d.ts +16 -0
  83. package/dist/server/modules/sessions/session-history-service.js +208 -12
  84. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  85. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +6 -0
  86. package/dist/server/modules/sessions/session-live-runtime-service.js +181 -80
  87. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  88. package/dist/server/modules/sessions/session-title-utils.d.ts +3 -0
  89. package/dist/server/modules/sessions/session-title-utils.js +25 -0
  90. package/dist/server/modules/sessions/session-title-utils.js.map +1 -0
  91. package/dist/server/modules/sessions/workspace-office-mcp-config.d.ts +2 -1
  92. package/dist/server/modules/sessions/workspace-office-mcp-config.js +44 -3
  93. package/dist/server/modules/sessions/workspace-office-mcp-config.js.map +1 -1
  94. package/dist/server/modules/tasks/task-manager.d.ts +2 -1
  95. package/dist/server/modules/tasks/task-manager.js +3 -0
  96. package/dist/server/modules/tasks/task-manager.js.map +1 -1
  97. package/dist/server/modules/tasks/task-scheduler.d.ts +2 -1
  98. package/dist/server/modules/tasks/task-scheduler.js +21 -0
  99. package/dist/server/modules/tasks/task-scheduler.js.map +1 -1
  100. package/dist/server/modules/tasks/task-types.d.ts +6 -0
  101. package/dist/server/modules/tasks/task-types.js +1 -0
  102. package/dist/server/modules/tasks/task-types.js.map +1 -1
  103. package/dist/server/modules/workbench/workbench-controller.js +3 -2
  104. package/dist/server/modules/workbench/workbench-controller.js.map +1 -1
  105. package/dist/server/modules/workspace/affairs-library-service.d.ts +1 -0
  106. package/dist/server/modules/workspace/affairs-library-service.js +80 -0
  107. package/dist/server/modules/workspace/affairs-library-service.js.map +1 -1
  108. package/dist/server/modules/workspace/affairs-lightweight-session-service.js +13 -9
  109. package/dist/server/modules/workspace/affairs-lightweight-session-service.js.map +1 -1
  110. package/dist/server/routes/peer-hosts.d.ts +3 -0
  111. package/dist/server/routes/peer-hosts.js +18 -0
  112. package/dist/server/routes/peer-hosts.js.map +1 -0
  113. package/dist/server/routes/public.d.ts +2 -1
  114. package/dist/server/routes/public.js +2 -1
  115. package/dist/server/routes/public.js.map +1 -1
  116. package/dist/server/server/create-server.d.ts +4 -0
  117. package/dist/server/server/create-server.js +30 -2
  118. package/dist/server/server/create-server.js.map +1 -1
  119. package/dist/server/shared/http/error-handler.js +12 -0
  120. package/dist/server/shared/http/error-handler.js.map +1 -1
  121. package/dist/server/storage/repositories/peer-host-repository.d.ts +44 -0
  122. package/dist/server/storage/repositories/peer-host-repository.js +271 -0
  123. package/dist/server/storage/repositories/peer-host-repository.js.map +1 -0
  124. package/dist/server/storage/sqlite/client.js +81 -0
  125. package/dist/server/storage/sqlite/client.js.map +1 -1
  126. package/dist/server/storage/sqlite/schema.sql +64 -0
  127. package/dist/server/types/domain.d.ts +43 -0
  128. package/dist/server/ws/workbench-ws-hub.js +5 -14
  129. package/dist/server/ws/workbench-ws-hub.js.map +1 -1
  130. package/dist/server/ws/ws-server.d.ts +2 -1
  131. package/dist/server/ws/ws-server.js +5 -1
  132. package/dist/server/ws/ws-server.js.map +1 -1
  133. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +7 -0
  134. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +623 -9
  135. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
  136. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js +8 -1
  137. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js.map +1 -1
  138. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.d.ts +4 -0
  139. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +375 -15
  140. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
  141. package/node_modules/@codingns/session-sync-core/dist/types.d.ts +11 -0
  142. package/package.json +1 -1
  143. package/dist/public/assets/App-If9gThKM.js +0 -30
  144. package/dist/public/assets/ConversationPage-Bfb7GLTM.js +0 -9
  145. package/dist/public/assets/DesktopWindowPage-D1xwgS-7.js +0 -2
  146. package/dist/public/assets/FileContextPanel-C4syif3B.js +0 -1
  147. package/dist/public/assets/GitSidebar-DduL9aTV.js +0 -6
  148. package/dist/public/assets/MobileWorkspaceSwitcherHeader-DT330cAx.js +0 -1
  149. package/dist/public/assets/SessionIndexPage-DyMikN_x.js +0 -1
  150. package/dist/public/assets/SettingsPage-CDAVsPr3.js +0 -2
  151. package/dist/public/assets/TerminalManagerPanel-4OR47vcf.js +0 -1
  152. package/dist/public/assets/TerminalPage-Pvx396YX.js +0 -55
  153. package/dist/public/assets/ToolFilesPage-DrYHk0N-.js +0 -1
  154. package/dist/public/assets/ToolGitPage-Dz1q-Ns_.js +0 -1
  155. package/dist/public/assets/ToolProcessesPage-CRhphOmM.js +0 -1
  156. package/dist/public/assets/ToolsHomePage-BJSDLR6T.js +0 -1
  157. package/dist/public/assets/WorkbenchLandingPage-BlkxdOLC.js +0 -1
  158. package/dist/public/assets/WorkbenchLayout-D-U7ghT0.js +0 -1022
  159. package/dist/public/assets/WorkbenchShellRoute-DyWSCHz_.js +0 -1
  160. package/dist/public/assets/WorkbenchShellRoute-htbkGbtW.css +0 -1
  161. package/dist/public/assets/WorkspaceDebugDetailPage-B4ol2_a5.js +0 -1
  162. package/dist/public/assets/WorkspaceDetailPage-DMakfmHR.js +0 -1
  163. package/dist/public/assets/WorkspaceHomePage-tmCafatd.js +0 -1
  164. package/dist/public/assets/index-DmUJ8tIw.css +0 -1
  165. package/dist/public/assets/index-_OCkVmfl.js +0 -50
  166. package/dist/public/assets/relay-entry-B5GmiOrR.js +0 -1
  167. package/dist/public/assets/styles-DkbkRgWw.css +0 -1
  168. package/dist/public/assets/terminal-runtime-meta-DBsyT35T.js +0 -1
  169. package/dist/public/assets/workbench-navigation-RyUjchbD.js +0 -1
  170. /package/dist/public/assets/{styles-JKFlsYFv.js → styles-DwSuZo1w.js} +0 -0
@@ -0,0 +1,9 @@
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 $i=Object.defineProperty;var Vi=(e,t,s)=>t in e?$i(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var ye=(e,t,s)=>Vi(e,typeof t!="symbol"?t+"":t,s);import{t as c,b as l,u as Gi,E as Xi,j as i,F as Sn,o as Ss,B as zi,G as Yi,_ as yn}from"./index-FOhyOpGY.js";import{D as ps}from"./DesktopModal-BnfGW2gk.js";import{M as fs,c as Mt,d as Jt,e as $e,f as Bt,g as ms,r as es,h as Ki,i as gs,j as Qi,k as xn,l as Zi,m as Ji,n as eo,o as to,p as br,P as so,w as Ws,b as St,q as no,s as wr,t as ro,u as io,v as oo,x as ao,y as Ir,z as lo,A as Pn,B as co}from"./workbench-navigation-aqJ1ay4M.js";import{c as uo,d as ho,b as vt,n as Rn,e as po,S as ts,P as Yt,f as kn,s as fo,h as mo,G as ys,i as _t,j as Tn,k as go,l as Mr,o as vo,p as Dt,D as bo,q as Cn,t as Sr,v as nn,w as mt,x as yr,y as xr,z as wo,A as Io,B as Mo,C as So,E as yo,H as xo,I as Po,J as Ro,M as ko,K as To,L as Pr,N as En,O as Rr,Q as Co,R as Eo,T as Ao,U as _o,V as jo,X as No,Y as be,Z as ss,_ as Oo,$ as Us,a0 as An,a1 as Lo,a2 as Do,a3 as Ho,a4 as qo,a5 as kr,a6 as Ge,a7 as xs,a8 as Tr,a9 as Cr,aa as Bo,ab as Er,ac as Fo,ad as Ar,ae as rn,af as Pt,ag as Ft,u as Wo,ah as on,ai as Uo,aj as $o,r as Vo,ak as an,al as ln,am as $s,an as Go,ao as Nt,ap as _r,aq as cn,ar as un,as as Xo,at as zo,au as Yo,av as Ko,aw as Qo,ax as Zo,ay as Wt,az as jr,aA as Nr,aB as Or,aC as Lr,aD as Dr,aE as dn,aF as Hr,aG as qr,aH as Br,aI as Jo,aJ as ea,aK as ta,aL as sa,aM as na}from"./WorkbenchLayout-DViAJhHz.js";import{f as dt,u as ht,e as Ut,g as Rt,h as hn,c as ra}from"./App-Dl-mcdqy.js";import{M as ia}from"./MobileSheet-rkn_CUOY.js";import{FileContextPanel as Fr}from"./FileContextPanel-fbPuE9dO.js";import{GitSidebar as Wr}from"./GitSidebar-BkmesJJR.js";import{W as oa}from"./WorkbenchModal-DWsNm2B2.js";import{TerminalManagerPanel as Ur}from"./TerminalManagerPanel-6-ZJ8vGn.js";import{TerminalPage as aa}from"./TerminalPage-CUXXQYU2.js";import{f as $r,a as vs,M as Vr}from"./MobileWorkspaceSwitcherHeader-idl8o1OB.js";import{w as Ot,r as Ps,a as _n,b as jn}from"./styles-DwSuZo1w.js";import"./window-BVUB8gMK.js";import"./event-DvH9tcej.js";import"./host-alias-0TfFnYxR.js";import"./relay-entry-DhHwflXl.js";import"./terminal-runtime-meta-2zvacxvM.js";import"./TerminalRuntimeFallbackModal-zc3qqMKJ.js";import"./MobileTopHeaderFrame-CU0wsYSS.js";function pn({connectionState:e,onReconnect:t}){const{showToast:s,dismissToast:n}=dt(),r=uo(),o=r?c(ho(r.kind)):null;return l.useEffect(()=>{if(e==="connected"||e==="closed"){n("conversation-connection-state");return}if(e==="reconnect_failed"){s({id:"conversation-connection-state",title:c("conversation.connectionReconnectFailed"),description:o?c("conversation.reconnectFailedExplainWithRoute",{route:o}):c("conversation.reconnectFailedExplain"),tone:"warning",durationMs:null,action:{label:c("conversation.reconnectButton"),onClick:t}});return}s({id:"conversation-connection-state",title:c("conversation.connectionReconnecting"),description:o?c("conversation.reconnectExplainWithRoute",{route:o}):c("conversation.reconnectExplain"),tone:"info",durationMs:3200})},[o,e,n,t,s]),null}const la=48;function ca(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 ua(e,t){var s;if(!(t.isDesktop&&(await t.bridge.writeClipboardText(e)).ok)){if(typeof navigator<"u"&&((s=navigator.clipboard)!=null&&s.writeText))try{await navigator.clipboard.writeText(e);return}catch{}if(!ca(e))throw new Error(c("conversation.copyContentFailed"))}}function Nn(e,t,s){return Math.min(Math.max(e,t),s)}function Rs(e,t=ts){return e&&t.includes(e)?e:t[0]??"codex"}function da(e){return ts.includes(e)}function ha(e,t){const s=e.flatMap(n=>da(n)?[n]:[]);return s.length>0?s:t?[t]:[]}function Vs(e){return e?e.nodeType===Node.ELEMENT_NODE?e:e.parentElement:null}function On(e){var s,n;const t=Vs(e);return((n=(s=t==null?void 0:t.closest("[data-message-id]"))==null?void 0:s.getAttribute("data-message-id"))==null?void 0:n.trim())||null}function pa(e,t){return[t.trim()||c("conversation.selectionActionDefaultPrompt"),"",c("conversation.selectionActionQuotedLabel"),"```text",e.trim(),"```"].join(`
3
+ `)}function ks(e){if(typeof window>"u")return null;const t=window.getSelection();if(!t||t.rangeCount===0||t.isCollapsed)return null;const s=t.getRangeAt(0),n=Vs(s.startContainer),r=Vs(s.endContainer);if(!n||!r||!e.contains(n)||!e.contains(r))return null;const o=t.toString().trim();if(!o)return null;const a=s.getBoundingClientRect();if(!a.width&&!a.height)return null;const u=On(s.startContainer),d=On(s.endContainer);return{text:o,sourceMessageId:u&&u===d?u:null,rect:{left:a.left,top:a.top,right:a.right,bottom:a.bottom,width:a.width,height:a.height}}}function fa({containerRef:e,session:t,currentCapabilities:s}){const n=ht(),r=Ut(),{showToast:o}=dt(),{shellMode:a,requestNavigationRefresh:u,selectWorkspace:d,upsertNavigationSession:h}=vt(),p=Gi(f=>f.profile.providers),g=l.useMemo(()=>Rn(t==null?void 0:t.providerConfigMode,t==null?void 0:t.providerPresetId),[t==null?void 0:t.providerConfigMode,t==null?void 0:t.providerPresetId]),[S,v]=l.useState(null),[I,m]=l.useState(null),[y,D]=l.useState(!1),{visibleProviders:B}=po(ts,y),[x,R]=l.useState(""),[j,M]=l.useState(!1),[N,C]=l.useState(Rs(t==null?void 0:t.provider)),[A,w]=l.useState(Yt),[k,z]=l.useState(g.providerConfigMode),[Q,te]=l.useState(g.providerPresetId),[K,we]=l.useState({}),[P,H]=l.useState(!1),[G,q]=l.useState(null),[J,oe]=l.useState({}),[ee,ne]=l.useState(!1),[pe,O]=l.useState(!1),[U,X]=l.useState(!1),[W,he]=l.useState(0),[Ce,He]=l.useState(null),[Te,_e]=l.useState(()=>({width:typeof window>"u"?0:window.innerWidth,height:typeof window>"u"?0:window.innerHeight})),F=l.useRef(!1),b=l.useRef(!1),$=l.useRef(!1),ue=l.useRef(null),ae=l.useRef(null),xe=a==="mobile"||r.isMobile,Ee=l.useMemo(()=>f=>{var V,Y;return(Xi(f)?(Y=(V=p[f])==null?void 0:V.defaultModel)==null?void 0:Y.trim():null)||Yt},[p]),Z=l.useMemo(()=>Rn(k,Q),[k,Q]),se=l.useMemo(()=>ha(B,N),[N,B]),Ie=l.useMemo(()=>kn(N),[N]),qe=l.useMemo(()=>Ie?K[Ie]??null:null,[K,Ie]),We=l.useMemo(()=>fo(qe),[qe]),Xe=l.useMemo(()=>mo(qe),[qe]),Ze=Z.providerConfigMode==="cc-switch-preset"?Z.providerPresetId??ys:ys,T=l.useMemo(()=>Xe.find(f=>f.value===Ze)??Xe[0]??null,[Xe,Ze]),L=l.useMemo(()=>N===(t==null?void 0:t.provider)&&Z.providerConfigMode===g.providerConfigMode&&Z.providerPresetId===g.providerPresetId&&s?s:G??_t(N),[s,G,N,Z.providerConfigMode,Z.providerPresetId,t==null?void 0:t.provider,g.providerConfigMode,g.providerPresetId]),fe=l.useMemo(()=>{var V;const f=_t(N).modelOptions??[];return(V=L.modelOptions)!=null&&V.length?L.modelOptions:f},[L.modelOptions,N]),re=l.useMemo(()=>fe.map(f=>({value:f.id,label:Tn(f)?c("conversation.modelUseCliDefault"):f.name})),[fe]),le=l.useMemo(()=>fe.find(f=>f.id===A)??fe[0]??null,[fe,A]),ce=l.useMemo(()=>{const f=le?Tn(le)?c("conversation.modelUseCliDefault"):le.name:c("conversation.modelUseCliDefault");return We?`${(T==null?void 0:T.label)??c("conversation.deploymentDefaultPreset")} · ${f}`:f},[le,T,We]),Le=l.useCallback(f=>{if(C(f),w(Ee(f)),t&&f===t.provider&&kn(f)){z(g.providerConfigMode),te(g.providerPresetId);return}z("global-default"),te(null)},[Ee,t,g.providerConfigMode,g.providerPresetId]),me=l.useMemo(()=>{const f=J[N]??(N===(t==null?void 0:t.provider)&&Z.providerConfigMode===g.providerConfigMode&&Z.providerPresetId===g.providerPresetId?s:G);return!f||f.canStartSession!==!1?null:f.limitations[0]??c("conversation.capabilityDenied")},[s,G,J,N,Z.providerConfigMode,Z.providerPresetId,t==null?void 0:t.provider,g.providerConfigMode,g.providerPresetId]),Ve=l.useMemo(()=>{var Re;if(!S||typeof window>"u")return null;const f=(Re=e.current)==null?void 0:Re.getBoundingClientRect(),V=f?Math.max(80,f.left+80):96,Y=f?Math.min(Te.width-80,f.right-80):Te.width-96,Se=f?Math.max(12,f.top+12):12,je=f?Math.max(Se,f.bottom-48):Math.max(12,Te.height-48),De=S.rect.left+S.rect.width/2;return{left:Nn(De,V,Math.max(V,Y)),top:Nn(S.rect.top-48,Se,je)}},[e,S,Te.height,Te.width]);l.useEffect(()=>{if(typeof window>"u")return;const f=()=>{_e({width:window.innerWidth,height:window.innerHeight})};return f(),window.addEventListener("resize",f),()=>{window.removeEventListener("resize",f)}},[]),l.useEffect(()=>{if(!t){ae.current!==null&&typeof window<"u"&&(window.clearTimeout(ae.current),ae.current=null),ue.current=null,$.current=!1,v(null),m(null),D(!1);return}const f=Rs(t.provider);Le(f)},[Le,t]),l.useEffect(()=>{if(!y){H(!1);return}if(!Ie){H(!1);return}let f=!1;return H(!0),go().then(V=>{f||we(Object.fromEntries(V.items.map(Y=>[Y.app,Y])))}).catch(()=>{f||we({})}).finally(()=>{f||H(!1)}),()=>{f=!0}},[y,Ie]),l.useEffect(()=>{!Ie||Z.providerConfigMode!=="cc-switch-preset"||!Z.providerPresetId||P||!qe||qe.options.some(f=>f.id===Z.providerPresetId)||(z("global-default"),te(null))},[P,qe,Ie,Z.providerConfigMode,Z.providerPresetId]),l.useEffect(()=>{if(!t||!e.current||typeof window>"u"){ae.current!==null&&(window.clearTimeout(ae.current),ae.current=null),ue.current=null,$.current=!1,v(null),m(null);return}const f=e.current,V=ke=>{F.current||(ue.current=ke,v(ke),ke||D(!1))},Y=()=>{ae.current!==null&&(window.clearTimeout(ae.current),ae.current=null)},Se=(ke,tt)=>{if(ue.current=ke,Y(),tt!=null&&tt.immediate){V(ke);return}ae.current=window.setTimeout(()=>{ae.current=null,V(ue.current)},la)},je=()=>{const ke=ks(f);if($.current){ue.current=ke;return}Se(ke)},De=()=>{const ke=ks(f);if($.current){ue.current=ke;return}Se(ke,{immediate:!0})},Re=ke=>{!(ke.target instanceof Node)||!f.contains(ke.target)||($.current=!0,Y())},Ne=()=>{$.current&&($.current=!1,Se(ks(f)))};return document.addEventListener("pointerdown",Re),document.addEventListener("selectionchange",je),window.addEventListener("pointerup",Ne),window.addEventListener("pointercancel",Ne),window.addEventListener("mouseup",Ne),window.addEventListener("touchend",Ne),window.addEventListener("resize",De),window.addEventListener("scroll",De,!0),()=>{Y(),document.removeEventListener("pointerdown",Re),document.removeEventListener("selectionchange",je),window.removeEventListener("pointerup",Ne),window.removeEventListener("pointercancel",Ne),window.removeEventListener("mouseup",Ne),window.removeEventListener("touchend",Ne),window.removeEventListener("resize",De),window.removeEventListener("scroll",De,!0)}},[e,t]),l.useEffect(()=>{(!y||!(I!=null&&I.sourceMessageId))&&M(!1)},[y,I==null?void 0:I.sourceMessageId]),l.useEffect(()=>{if(!y||!t)return;let f=!1;return N===t.provider&&Z.providerConfigMode===g.providerConfigMode&&Z.providerPresetId===g.providerPresetId&&s?(ne(!1),q(s),()=>{f=!0}):(ne(!0),q(_t(N)),Mr(N,t.workspaceId,Ie?{providerConfigMode:Z.providerConfigMode,providerPresetId:Z.providerPresetId}:void 0).then(V=>{f||q(V)}).catch(()=>{f||q(_t(N))}).finally(()=>{f||ne(!1)}),()=>{f=!0})},[y,s,Ie,N,Z.providerConfigMode,Z.providerPresetId,t,g.providerConfigMode,g.providerPresetId]),l.useEffect(()=>{if(!y||!t){oe({});return}let f=!1;return vo(se,t.workspaceId).then(V=>{f||oe(V)}),()=>{f=!0}},[y,t,se]),l.useEffect(()=>{if(!y||!t)return;const f=se.filter(Y=>{const Se=J[Y];return!Se||Se.canStartSession!==!1});if(f.length===0||f.includes(N))return;const V=f[0];Le(V)},[y,Le,J,N,t,se]),l.useEffect(()=>{var V;const f=Ee(N);if(!fe.some(Y=>Y.id===A)){if(fe.some(Y=>Y.id===f)){w(f);return}w(((V=fe[0])==null?void 0:V.id)??Yt)}},[fe,Ee,A,N]),l.useEffect(()=>{if(!y){F.current=!1;return}F.current=!0},[y]),l.useEffect(()=>{if(typeof window>"u")return;const f=V=>{V.key==="Escape"&&(D(!1),m(null),v(null),F.current=!1)};return window.addEventListener("keydown",f),()=>{window.removeEventListener("keydown",f)}},[]);async function Ae(){var V,Y;if(!S)return;const f=S.text;v(null),typeof window<"u"&&((Y=(V=window.getSelection())==null?void 0:V.removeAllRanges)==null||Y.call(V));try{await ua(f,r),o({title:c("conversation.copyContentSuccess"),tone:"success"})}catch(Se){o({title:Se instanceof Error?Se.message:c("conversation.copyContentFailed"),tone:"error"})}}function rt(){S&&(He({title:"",content:S.text}),he(f=>f+1),X(!0),D(!1),m(null),v(null),F.current=!1)}function ze(){var Y,Se;if(!S||!t)return;const f=S,V=Rs(t.provider,se.length>0?se:ts);Le(V),R(""),M(!1),m(f),v(null),D(!0),typeof window<"u"&&((Se=(Y=window.getSelection())==null?void 0:Y.removeAllRanges)==null||Se.call(Y))}function it(f){f.preventDefault(),F.current=!0}function pt(){b.current=!0,ze()}function lt(){if(b.current){b.current=!1;return}ze()}async function Pe(){var f,V,Y,Se;if(!(!I||!t)){if(me){o({title:me,tone:"error"});return}O(!0);try{const je=pa(I.text,x),De=(le==null?void 0:le.id)===Yt?null:(le==null?void 0:le.id)??null;let Re=null;if(j&&I.sourceMessageId)Re=await Sr(t.sessionId,{sourceType:"message",sourceMessageId:I.sourceMessageId,strategy:"auto",targetProvider:N,providerConfigMode:Z.providerConfigMode,providerPresetId:Z.providerPresetId,sessionKind:"annotation",annotationSourceMessageId:I.sourceMessageId,annotationSourceText:I.text}),h(Re),await nn(Re.sessionId,{content:je,clientRequestId:((V=(f=globalThis.crypto)==null?void 0:f.randomUUID)==null?void 0:V.call(f))??`selection-action-${Date.now()}-${Math.random().toString(16).slice(2)}`,model:De,permissionMode:mt(),providerConfigMode:Z.providerConfigMode,providerPresetId:Z.providerPresetId});else{const Ne=await yr({workspaceId:t.workspaceId,provider:N,content:je,clientRequestId:((Se=(Y=globalThis.crypto)==null?void 0:Y.randomUUID)==null?void 0:Se.call(Y))??`selection-action-${Date.now()}-${Math.random().toString(16).slice(2)}`,model:De,permissionMode:mt(),providerConfigMode:Z.providerConfigMode,providerPresetId:Z.providerPresetId,parentSessionId:t.sessionId,sessionKind:"annotation",annotationSourceMessageId:I.sourceMessageId??null,annotationSourceText:I.text});Re=Ne.session??await xr(Ne.sessionId)}h(Re),u(),d(Re.workspaceId),n($e(Re.workspaceId,Re.sessionId)),D(!1),m(null),v(null),F.current=!1}catch(je){o({title:je instanceof Error?je.message:c("conversation.selectionActionFailed"),tone:"error"})}finally{O(!1)}}}function ct(f=!1){D(!1),m(null),F.current=!1,f&&v(null)}const ft=!!(!y&&S&&Ve),Je=!!(y&&I),et=i.jsxs(fs,{children:[i.jsx("button",{type:"button",className:"secondary-button",onClick:()=>ct(!1),children:c("common.cancel")}),i.jsx("button",{type:"button",className:"primary-button",disabled:pe||!!me||se.length===0,onClick:()=>void Pe(),children:pe?c("conversation.sendingState"):c("conversation.selectionActionSubmit")})]}),Me=I?i.jsxs(i.Fragment,{children:[i.jsx(Mt,{className:"conversation-selection-preview-section",heading:c("conversation.selectionActionPreviewLabel"),children:i.jsx("div",{className:"conversation-selection-action-dialog-quote",children:I.text})}),i.jsxs(Mt,{className:"conversation-selection-request-section",children:[i.jsx(Jt,{className:"conversation-selection-field conversation-selection-prompt-field",label:c("conversation.selectionActionPromptLabel"),children:i.jsx("textarea",{value:x,rows:4,placeholder:c("conversation.selectionActionPromptPlaceholder"),onChange:f=>R(f.target.value)})}),i.jsxs("div",{className:"conversation-selection-context-block",children:[i.jsxs("label",{className:"conversation-selection-checkbox",children:[i.jsx("input",{type:"checkbox",checked:j,disabled:!I.sourceMessageId,onChange:f=>M(f.target.checked)}),i.jsx("span",{children:c("conversation.selectionActionIncludeContext")})]}),I.sourceMessageId?null:i.jsx("p",{className:"conversation-selection-hint",children:c("conversation.selectionActionContextUnavailable")}),me?i.jsx("p",{className:"conversation-selection-hint",children:me}):null]})]}),i.jsx(Mt,{className:"conversation-selection-target-section",heading:c("conversation.selectionActionTargetLabel"),children:i.jsxs("div",{className:"conversation-selection-grid",children:[i.jsx(Jt,{className:"conversation-selection-field",label:c("conversation.forkTargetProviderLabel"),children:i.jsx("select",{value:N,onChange:f=>{Le(f.target.value)},children:se.map(f=>{var V;return i.jsx("option",{value:f,disabled:((V=J[f])==null?void 0:V.canStartSession)===!1,children:Dt(f,"full")},f)})})}),i.jsx(Jt,{className:"conversation-selection-field",label:c("conversation.forkTargetModelLabel"),children:Ie?i.jsx("div",{className:"conversation-selection-deployment-select",children:i.jsx(bo,{ariaLabel:c("conversation.forkTargetModelLabel"),triggerLabel:ce,presetOptions:Xe,selectedPresetValue:Ze,selectedPresetSummary:(T==null?void 0:T.summary)??null,onSelectPreset:f=>{if(f===ys){z("global-default"),te(null);return}z("cc-switch-preset"),te(f)},modelOptions:re,selectedModelValue:A,onSelectModel:w,loadingPresets:P,loadingModels:ee,modelColumnDisabled:ee||!!me,showPresetColumn:We,modelEmptyText:c("conversation.deploymentModelEmpty")})}):i.jsx("select",{value:A,disabled:ee||!!me,onChange:f=>w(f.target.value),children:fe.map(f=>i.jsx("option",{value:f.id,children:f.name},f.id))})})]})})]}):null;return!t||!ft&&!Je||typeof document>"u"?i.jsx(Cn,{open:U,preferredWorkspaceId:(t==null?void 0:t.workspaceId)??null,preferredSessionId:(t==null?void 0:t.sessionId)??null,creationRequestId:W,initialDraft:Ce,onClose:()=>X(!1)}):i.jsxs(i.Fragment,{children:[Rt.createPortal(ft?i.jsxs("div",{className:"conversation-selection-toolbar",style:Ve??void 0,onMouseDown:f=>f.preventDefault(),children:[i.jsx("button",{type:"button",className:"conversation-selection-action",onClick:()=>void Ae(),children:c("conversation.copyAction")}),i.jsx("button",{type:"button",className:"conversation-selection-action",onClick:rt,children:c("conversation.selectionTodoAction")}),i.jsx("button",{type:"button",className:"conversation-selection-action is-primary",onPointerDown:it,onMouseDown:it,onPointerUp:pt,onClick:lt,children:c("conversation.selectionActionButton")})]}):null,document.body),xe?i.jsx(ia,{open:Je,title:c("conversation.selectionActionButton"),height:"auto",kind:"form",showHandle:!0,showCancelButton:!1,cardClassName:"conversation-selection-action-dialog",bodyClassName:"conversation-selection-action-dialog-body",footer:et,onClose:()=>ct(!1),children:Me}):i.jsx(ps,{open:Je,title:c("conversation.selectionActionButton"),size:"compact",layout:"form",className:"conversation-selection-action-dialog",bodyClassName:"conversation-selection-action-dialog-body",footer:et,onClose:()=>ct(!1),children:Me}),i.jsx(Cn,{open:U,preferredWorkspaceId:t.workspaceId,preferredSessionId:t.sessionId,creationRequestId:W,initialDraft:Ce,onClose:()=>X(!1)})]})}function Gr(e,t){return Array.isArray(e)?e.some(s=>s.sessions.some(n=>n.sessionId===t)||Gr(s.children,t)):!1}const At=5,Xr=["codex","claude-code"];function zr(){return[{id:"recommended",label:c("conversation.butlerCompletionTemplateRecommendedLabel"),description:c("conversation.butlerCompletionTemplateRecommendedDescription"),value:c("conversation.butlerCompletionTemplateRecommendedValue")},{id:"spec-finish",label:c("conversation.butlerCompletionTemplateSpecLabel"),description:c("conversation.butlerCompletionTemplateSpecDescription"),value:c("conversation.butlerCompletionTemplateSpecValue")},{id:"bugfix",label:c("conversation.butlerCompletionTemplateBugfixLabel"),description:c("conversation.butlerCompletionTemplateBugfixDescription"),value:c("conversation.butlerCompletionTemplateBugfixValue")}]}function Ts(){var e;return((e=zr()[0])==null?void 0:e.value)??""}function Cs(e,t=Xr){return e==="claude-code"&&t.includes("claude-code")?"claude-code":t.includes("codex")?"codex":t[0]??null}function Yr(e){return e==="codex"||e==="claude-code"}function ma(e){return e.flatMap(t=>!t.enabled||!Yr(t.provider)?[]:[t.provider])}function Kr({session:e,showTrigger:t=!0,openRequestKey:s=0}){var _e,F;const{showToast:n}=dt(),{requestNavigationRefresh:r,currentTargetHostId:o,navigationGroups:a}=vt(),u=l.useId(),d=l.useId(),h=l.useId(),p=l.useId(),[g,S]=l.useState(!1),[v,I]=l.useState(!1),[m,y]=l.useState(null),[D,B]=l.useState(null),[x,R]=l.useState(null),[j,M]=l.useState(Cs(e==null?void 0:e.provider)),[N,C]=l.useState(""),[A,w]=l.useState(()=>Ts()),[k,z]=l.useState(At),[Q,te]=l.useState(!1),[K,we]=l.useState(0),P=l.useMemo(()=>{var ae,xe,Ee,Z;const b=e==null?void 0:e.sessionId;if(!b)return!1;if(!o)return!0;const $=(xe=(ae=e==null?void 0:e.sessionIsolatedWorkspace)==null?void 0:ae.workspaceId)==null?void 0:xe.trim(),ue=(Z=(Ee=e==null?void 0:e.sessionIsolatedWorkspace)==null?void 0:Ee.sourceWorkspaceId)==null?void 0:Z.trim();return!$||!ue||$===ue?!1:a.some(se=>se.sessions.some(Ie=>Ie.sessionId===b)||Gr(se.childWorktrees,b))},[o,a,e==null?void 0:e.sessionId,(_e=e==null?void 0:e.sessionIsolatedWorkspace)==null?void 0:_e.sourceWorkspaceId,(F=e==null?void 0:e.sessionIsolatedWorkspace)==null?void 0:F.workspaceId]),{items:H}=wo(!!(e!=null&&e.sessionId&&P)),G=zr(),q=l.useMemo(()=>H?ma(H):Xr,[H]),J=H!==null&&q.length===0,oe=l.useMemo(()=>{var b;return((b=e==null?void 0:e.title)==null?void 0:b.trim())||null},[e==null?void 0:e.title]),ee=l.useMemo(()=>m?{workspaceId:m.workspaceId,project:m.project,session:m.session}:null,[m]),ne=(m==null?void 0:m.latestFollowUpTask)??null,pe=(m==null?void 0:m.latestVerificationRun)??null,O=ne&&(ne.status==="active"||ne.status==="waiting_user")?ne:null,U=pe&&(pe.status==="queued"||pe.status==="running")?pe:null;l.useEffect(()=>{S(!1),te(!1),B(null),y(null),C(""),M(Cs(e==null?void 0:e.provider)),w(Ts()),z(At)},[e==null?void 0:e.sessionId]),l.useEffect(()=>{const b=Cs(e==null?void 0:e.provider,q);(!j||!q.includes(j))&&M(b)},[q,j,e==null?void 0:e.provider]),l.useEffect(()=>{if(!(e!=null&&e.sessionId)||!P){I(!1),y(null),B(null);return}let b=!1;return I(!0),B(null),Io(e.sessionId,{targetHostId:o}).then($=>{b||y($.context)}).catch($=>{b||(y(null),B($ instanceof Error?$.message:c("conversation.butlerActionLoadFailed")))}).finally(()=>{b||I(!1)}),()=>{b=!0}},[K,o,e==null?void 0:e.sessionId,P]);function X(){v||we(b=>b+1)}function W(){!m&&!v&&X()}if(l.useEffect(()=>{t||s<=0||(S(!0),W())},[v,s,t,m]),!(e!=null&&e.sessionId)||!P)return null;async function he(){if(!ee){W();return}if(!j)return;const b=N.trim(),$=A.trim();if(!b){n({title:c("conversation.butlerFollowUpObjectiveRequired"),tone:"warning"});return}if(!$){n({title:c("conversation.butlerFollowUpCompletionCriteriaRequired"),tone:"warning"});return}R("follow-up");try{const ue=await Ro({projectId:ee.project.id,butlerSessionId:ee.session.id,providerId:j,objective:b,completionCriteria:$,maxAutoContinueCount:k},{targetHostId:o});y(ae=>ae&&{...ae,latestFollowUpTask:ue.task}),r(),n({title:c("conversation.butlerFollowUpStarted"),description:c("conversation.butlerFollowUpStartedDescription",{projectName:ee.project.name}),tone:"success"}),C(""),w(Ts()),z(At),S(!1)}catch(ue){n({title:c("conversation.butlerFollowUpFailed"),description:ue instanceof Error?ue.message:void 0,tone:"error"})}finally{R(null)}}async function Ce(){if(ne){R("follow-up");try{const b=await yo(ne.id,{targetHostId:o});y($=>$&&{...$,latestFollowUpTask:b.task}),r(),n({title:c("conversation.butlerFollowUpStopped"),description:c("conversation.butlerFollowUpStoppedDescription"),tone:"success"}),S(!1)}catch(b){n({title:c("conversation.butlerFollowUpStopFailed"),description:b instanceof Error?b.message:void 0,tone:"error"})}finally{R(null)}}}async function He(){if(!ee){W();return}R("verification");try{const b=await Po({projectId:ee.project.id,butlerSessionId:ee.session.id,verificationType:"browser",targetRef:oe||ee.session.title||ee.project.name},{targetHostId:o});y($=>$&&{...$,latestVerificationRun:b.result.run}),r(),n({title:c("conversation.butlerVerificationStarted"),description:c("conversation.butlerVerificationStartedDescription",{projectName:ee.project.name}),tone:"success"}),S(!1)}catch(b){n({title:c("conversation.butlerVerificationFailed"),description:b instanceof Error?b.message:void 0,tone:"error"})}finally{R(null)}}async function Te(){if(pe){R("verification");try{const b=await xo(pe.projectId,pe.id,{targetHostId:o});y($=>$&&{...$,latestVerificationRun:b.run}),r(),n({title:c("conversation.butlerVerificationStopped"),description:c("conversation.butlerVerificationStoppedDescription"),tone:"success"}),S(!1)}catch(b){n({title:c("conversation.butlerVerificationStopFailed"),description:b instanceof Error?b.message:void 0,tone:"error"})}finally{R(null)}}}return i.jsxs(i.Fragment,{children:[t?i.jsxs("div",{className:"conversation-butler-entry",onMouseEnter:()=>{te(!0),W()},onMouseLeave:()=>{te(!1)},children:[i.jsx("button",{type:"button",className:"conversation-header-ai-button","aria-label":c("conversation.butlerActionButton"),title:c("conversation.butlerActionButton"),onFocus:()=>{te(!0),W()},onBlur:()=>{te(!1)},onClick:()=>{S(!0),W()},children:i.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:i.jsx(Mo,{})})}),Q?i.jsxs("div",{className:"conversation-butler-analysis-popover",role:"status","aria-live":"polite",children:[i.jsx("strong",{children:c("conversation.butlerAnalysisTitle")}),v?i.jsx("p",{children:c("conversation.butlerActionLoading")}):D?i.jsx("p",{children:D}):ne?i.jsxs(i.Fragment,{children:[i.jsxs("p",{children:[c("conversation.butlerAnalysisObjectiveLabel"),":",ne.objective]}),i.jsxs("p",{children:[c("conversation.butlerAnalysisStatusLabel"),":",Ln(ne.status)]}),i.jsxs("p",{children:[c("conversation.butlerAnalysisSummaryLabel"),":",ne.lastAutomationSummary||ne.waitingReason||c("conversation.butlerAnalysisEmpty")]}),ne.waitingReason?i.jsxs("p",{children:[c("conversation.butlerAnalysisWaitingReasonLabel"),":",ne.waitingReason]}):null]}):i.jsx("p",{children:c("conversation.butlerAnalysisEmpty")})]}):null]}):null,i.jsx(oa,{open:g,title:c("conversation.butlerActionModalTitle"),description:c("conversation.butlerActionModalDescription"),className:"conversation-butler-modal-card",footer:!v&&!D&&ee?i.jsxs(fs,{children:[i.jsx("button",{type:"button",className:"secondary-button",disabled:x!==null,onClick:()=>{He()},children:c("conversation.butlerVerificationAction")}),i.jsx("button",{type:"button",className:"primary-button",disabled:x!==null||J||!j,onClick:()=>{he()},children:c("conversation.butlerFollowUpAction")})]}):void 0,onClose:()=>{x||S(!1)},children:i.jsxs("div",{className:"conversation-butler-modal",children:[v?i.jsx("p",{className:"conversation-butler-modal-hint",children:c("conversation.butlerActionLoading")}):null,!v&&D?i.jsx("p",{className:"conversation-butler-modal-error",children:D}):null,!v&&!D&&ee?i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"conversation-butler-target-grid",children:[i.jsxs("div",{className:"conversation-butler-target-card",children:[i.jsx("span",{children:c("conversation.butlerActionProjectLabel")}),i.jsx("strong",{children:ee.project.name})]}),i.jsxs("div",{className:"conversation-butler-target-card",children:[i.jsx("span",{children:c("conversation.butlerActionSessionLabel")}),i.jsx("strong",{children:ee.session.title||oe||ee.session.sessionId})]})]}),i.jsxs("div",{className:"conversation-butler-follow-up-grid",children:[i.jsxs("div",{className:"workbench-modal-field conversation-butler-modal-field",children:[i.jsxs("div",{className:"conversation-butler-field-heading",children:[i.jsx("label",{children:c("conversation.butlerFollowUpProviderLabel")}),i.jsx("small",{children:c("conversation.butlerFollowUpProviderHint")})]}),J?i.jsx("p",{className:"conversation-butler-modal-hint",children:c("conversation.butlerFollowUpProviderHint")}):i.jsx(So,{workspaceId:ee.workspaceId,providers:q,selectedProvider:j,disabled:x!==null,onSelect:b=>{Yr(b)&&M(b)}})]}),i.jsxs("div",{className:"workbench-modal-field conversation-butler-modal-field conversation-butler-round-limit-field",children:[i.jsxs("div",{className:"conversation-butler-field-heading",children:[i.jsx("label",{htmlFor:p,children:c("conversation.butlerFollowUpRoundLimitLabel")}),i.jsx("small",{children:c("conversation.butlerFollowUpRoundLimitHint")})]}),i.jsx("input",{id:p,type:"number",min:1,max:20,value:k,disabled:x!==null,onChange:b=>{const $=Number.parseInt(b.target.value,10);z(Number.isFinite($)?$:At)}})]})]}),i.jsxs("div",{className:"workbench-modal-field conversation-butler-modal-field",children:[i.jsx("label",{htmlFor:u,children:c("conversation.butlerFollowUpObjectiveLabel")}),i.jsx("textarea",{id:u,rows:3,value:N,placeholder:c("conversation.butlerFollowUpObjectivePlaceholder"),disabled:x!==null,onChange:b=>{C(b.target.value)}})]}),i.jsxs("div",{className:"workbench-modal-field conversation-butler-modal-field",children:[i.jsxs("div",{className:"conversation-butler-field-heading",children:[i.jsx("label",{htmlFor:d,children:c("conversation.butlerFollowUpCompletionCriteriaLabel")}),i.jsx("small",{id:h,children:c("conversation.butlerCompletionTemplateSectionHint")})]}),i.jsx("textarea",{id:d,rows:3,value:A,placeholder:c("conversation.butlerFollowUpCompletionCriteriaPlaceholder"),"aria-describedby":h,disabled:x!==null,onChange:b=>{w(b.target.value)}}),i.jsx("div",{className:"conversation-butler-preset-grid",role:"group","aria-label":c("conversation.butlerCompletionTemplateSectionLabel"),children:G.map(b=>i.jsxs("button",{type:"button",className:"conversation-butler-preset-card","data-selected":A.trim()===b.value,"aria-pressed":A.trim()===b.value,disabled:x!==null,onClick:()=>{w(b.value)},children:[i.jsx("strong",{children:b.label}),i.jsx("span",{children:b.description})]},b.id))})]}),O||U?i.jsxs("div",{className:"conversation-butler-meta-grid",children:[O?i.jsxs("div",{className:"conversation-butler-target-card conversation-butler-current-task-card",children:[i.jsx("span",{children:c("conversation.butlerCurrentFollowUpLabel")}),i.jsx("strong",{children:Ln(O.status)}),i.jsx("small",{children:c("conversation.butlerCurrentFollowUpProgress",{current:O.autoContinueCount,max:O.maxAutoContinueCount??At})}),i.jsx("button",{type:"button",className:"workbench-secondary-button",disabled:x!==null,onClick:()=>{Ce()},children:c("conversation.butlerStopFollowUpAction")})]}):null,U?i.jsxs("div",{className:"conversation-butler-target-card conversation-butler-current-task-card",children:[i.jsx("span",{children:c("conversation.butlerCurrentVerificationLabel")}),i.jsx("strong",{children:ga(U.status)}),i.jsx("small",{children:U.targetRef||U.verificationType}),i.jsx("button",{type:"button",className:"workbench-secondary-button",disabled:x!==null,onClick:()=>{Te()},children:c("conversation.butlerStopVerificationAction")})]}):null]}):null]}):null]})})]})}function Ln(e){switch(e){case"waiting_user":return c("shell.butlerAutomationStatusWaitingUser");case"completed":return c("shell.butlerAutomationStatusCompleted");case"failed":return c("shell.butlerAutomationStatusFailed");case"cancelled":return c("shell.butlerAutomationStatusCancelled");case"active":default:return c("shell.butlerAutomationStatusActive")}}function ga(e){switch(e){case"queued":case"running":return c("shell.butlerAutomationStatusActive");case"passed":case"skipped":return c("shell.butlerAutomationStatusCompleted");case"failed":return c("shell.butlerAutomationStatusFailed");case"cancelled":default:return c("shell.butlerAutomationStatusCancelled")}}const va=340;function ba({session:e,onOpenBranchTree:t}){const s=ht(),n=hn(),r=l.useRef(null),o=l.useRef(null),[a,u]=l.useState(!1),[d,h]=l.useState(null),[p,g]=l.useState(null),[S,v]=l.useState(0);l.useEffect(()=>{u(!1),h(null)},[n.pathname,n.search]),l.useLayoutEffect(()=>{if(!a||!d||typeof window>"u"){g(null);return}const M=()=>{var w,k;const A=To(d,{width:((w=o.current)==null?void 0:w.offsetWidth)??0,height:((k=o.current)==null?void 0:k.offsetHeight)??0},{width:window.innerWidth,height:window.innerHeight},{estimatedHeightPx:va});g({position:"fixed",left:`${Math.round(A.left)}px`,top:`${Math.round(A.top)}px`,width:`${Math.round(A.width)}px`,maxWidth:"calc(100vw - 24px)",maxHeight:`${Math.round(A.maxHeight)}px`,transformOrigin:A.transformOrigin})},N=A=>{var k,z;const w=A.target;w&&!((k=o.current)!=null&&k.contains(w))&&!((z=r.current)!=null&&z.contains(w))&&m()},C=A=>{A.key==="Escape"&&m()};return M(),window.addEventListener("pointerdown",N),window.addEventListener("keydown",C),window.addEventListener("resize",M),window.addEventListener("scroll",M,!0),()=>{window.removeEventListener("pointerdown",N),window.removeEventListener("keydown",C),window.removeEventListener("resize",M),window.removeEventListener("scroll",M,!0)}},[d,a]);function I(){var N;const M=(N=r.current)==null?void 0:N.getBoundingClientRect();M&&(h({x:M.right,y:M.bottom}),u(!0))}function m(){u(!1),h(null)}function y(M){s(M),m()}function D(M){const N=new URLSearchParams(n.search);N.set("toolPanel",M),y(`${n.pathname}?${N.toString()}`)}function B(){if(a){m();return}I()}function x(M){M.key!=="ContextMenu"&&!(M.shiftKey&&M.key==="F10")||(M.preventDefault(),M.stopPropagation(),I())}if(!e)return null;const R=[{key:"assistant",label:c("shell.butlerEntry"),onSelect:()=>{v(M=>M+1),m()}},...t?[{key:"branch",label:c("conversation.branchAction"),onSelect:()=>{t(),m()}}]:[],{key:"files",label:c("shell.filesEntry"),onSelect:()=>{D("files")}},{key:"git",label:c("shell.gitEntry"),onSelect:()=>{D("git")}},{key:"processes",label:c("shell.mobileConversationToolProcessesTab"),onSelect:()=>{D("processes")}}],j=a&&typeof document<"u"?Rt.createPortal(i.jsx("div",{ref:o,className:"session-action-menu mobile-conversation-action-menu surface-card",role:"menu","aria-label":c("conversation.moreSessionActions"),style:p??{position:"fixed",top:0,left:0,visibility:"hidden"},onClick:M=>M.stopPropagation(),children:R.map(M=>i.jsx("button",{type:"button",className:"session-action-menu-item mobile-conversation-action-menu-item",role:"menuitem",onClick:M.onSelect,children:M.label},M.key))}),document.body):null;return i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"mobile-conversation-session-actions",children:[i.jsx("button",{ref:r,type:"button",className:"conversation-header-ai-button mobile-conversation-more-button","aria-label":c("conversation.moreSessionActions"),title:c("conversation.moreSessionActions"),"aria-haspopup":"menu","aria-expanded":a,onClick:B,onKeyDown:x,children:i.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:i.jsx(ko,{})})}),i.jsx(Kr,{session:e,showTrigger:!1,openRequestKey:S})]}),j]})}function Qr({items:e,deletingQueueItemId:t=null,steeringQueueItemId:s=null,canSteer:n=!1,onDelete:r,onSteer:o}){return e.length===0?null:i.jsxs("section",{className:"queued-message-list","aria-label":c("conversation.queueTitle"),children:[i.jsx("div",{className:"queued-message-list__header",children:i.jsx("h2",{children:`${c("conversation.queueTitle")} · ${e.length}`})}),i.jsx("div",{className:"queued-message-list__items",children:e.map((a,u)=>{const d=a.status==="queued"||a.status==="failed",h=n&&typeof o=="function"&&(a.status==="queued"||a.status==="failed");return i.jsxs("article",{className:"queued-message-item",children:[i.jsxs("div",{className:"queued-message-item__main",children:[i.jsx("span",{className:"queued-message-item__order","aria-hidden":"true",children:u+1}),i.jsx("p",{className:"queued-message-item__content",title:a.content||c("conversation.queueImageOnly"),children:a.content||c("conversation.queueImageOnly")}),i.jsx("span",{className:`queued-message-item__status queued-message-item__status--${a.status}`,children:a.status==="failed"?c("conversation.queueStatusFailed"):c("conversation.queueStatusQueued")}),i.jsxs("div",{className:"queued-message-item__actions",children:[h?i.jsx("button",{type:"button",className:"queued-message-item__action queued-message-item__action--steer",onClick:()=>void o(a.id),disabled:s===a.id,"aria-label":c("conversation.queueSteer"),title:c("conversation.queueSteer"),children:s===a.id?c("conversation.queueSteering"):c("conversation.queueSteer")}):null,d?i.jsx("button",{type:"button",className:"queued-message-item__action queued-message-item__action--delete",onClick:()=>void r(a.id),disabled:t===a.id,"aria-label":c("conversation.queueDelete"),title:c("conversation.queueDelete"),children:t===a.id?"…":"×"}):null]})]}),a.errorDetail?i.jsx("p",{className:"queued-message-item__error",children:a.errorDetail}):null]},a.id)})})]})}function wa(e){const{sending:t,setSending:s,session:n,runtimeHasActiveRun:r,runtimeCanInterrupt:o}=e,a=l.useRef(!1);l.useEffect(()=>{if(!t){a.current=!1;return}if(Ia(n,r,o)){a.current=!0;return}a.current&&(a.current=!1,s(!1))},[o,r,t,n,s])}function Ia(e,t,s){return t===!0||s===!0||(e==null?void 0:e.runningState)==="stale"||(e==null?void 0:e.runningState)==="unknown"?!0:Pr(e)}const Ma=30,Es=80,jt=60,Zr=600,Dn=300*1e3,Sa=600,ya=5e3,xa=1e4,Gs=120*1e3,Jr=8,Pa=/\[\[CODINGNS_IMAGE_ATTACHMENTS\]\][\s\S]*?\[\[\/CODINGNS_IMAGE_ATTACHMENTS\]\]/g;class Ra{constructor(t,s={}){ye(this,"state");ye(this,"authoritativeMessages",[]);ye(this,"runtimeOverlayMessages",[]);ye(this,"activeRuntimeOverlayKeys",[]);ye(this,"pendingMessages",[]);ye(this,"listeners",new Set);ye(this,"realtimeClient",null);ye(this,"historyBootstrapFallbackTimer",null);ye(this,"historyBootstrapEnvelopeReceived",!1);ye(this,"markSeenTimer",null);ye(this,"markSeenInFlight",!1);ye(this,"lastMarkSeenRequestAt",0);ye(this,"seenWatermark",null);ye(this,"runtimeRefreshTimer",null);ye(this,"runtimeRefreshMode",null);ye(this,"replaceSnapshotSeedOnBackfill",!1);ye(this,"olderHistoryPrefetchCursor",null);ye(this,"olderHistoryPrefetchPromise",null);ye(this,"prefetchedOlderHistoryPage",null);ye(this,"pendingReplyDebugTraces",[]);ye(this,"hasAuthoritativeBootstrapMessages");ye(this,"subscribe",t=>(this.listeners.add(t),()=>{this.listeners.delete(t)}));ye(this,"getState",()=>this.state);var a;this.sessionId=t,this.options=s;const n=Sn(qs(t,s.targetHostId),Dn);this.hasAuthoritativeBootstrapMessages=(((a=s.bootstrapMessages)==null?void 0:a.length)??0)>0;const r=Kt(s.initialSession??null,(n==null?void 0:n.session)??null),o=Wn(ka(),this.sessionId,{type:"timeline.seed",source:"constructor_seed",snapshotMessages:(n==null?void 0:n.messages)??[],bootstrapMessages:s.bootstrapMessages??[],replaceSnapshotSeedOnBackfill:!this.hasAuthoritativeBootstrapMessages&&((n==null?void 0:n.messages.length)??0)>0&&((n==null?void 0:n.messages.length)??0)<jt&&((n==null?void 0:n.pagesLoaded)??0)<=1});this.authoritativeMessages=o.timeline.authoritativeMessages,this.runtimeOverlayMessages=o.timeline.runtimeOverlayMessages,this.activeRuntimeOverlayKeys=o.timeline.activeRuntimeOverlayKeys,this.pendingMessages=o.timeline.pendingMessages,this.replaceSnapshotSeedOnBackfill=o.timeline.replaceSnapshotSeedOnBackfill,this.state=En({session:r,capabilities:(n==null?void 0:n.capabilities)??null,runtimeHasActiveRun:(n==null?void 0:n.runtimeHasActiveRun)??null,runtimeCanInterrupt:(n==null?void 0:n.runtimeCanInterrupt)??null,contextUsage:(n==null?void 0:n.contextUsage)??null,messages:o.messages,timelineItems:js(r,o.messages),permissionRequests:(n==null?void 0:n.permissionRequests)??[],queuedMessages:(n==null?void 0:n.queuedMessages)??[],olderCursor:(n==null?void 0:n.olderCursor)??null,hasOlderMessages:(n==null?void 0:n.hasOlderMessages)??!1,lastCursor:(n==null?void 0:n.lastCursor)??null,interruptSource:(n==null?void 0:n.interruptSource)??null,pagesLoaded:(n==null?void 0:n.pagesLoaded)??0}),this.seenWatermark=(r==null?void 0:r.lastSeenAt)??null}async initialize(){this.historyBootstrapEnvelopeReceived=!1,this.clearHistoryBootstrapFallbackTimer(),this.clearOlderHistoryPrefetch();const t=this.options.bootstrapMessages??[],s=this.applyTimelineEvent({type:"history.merge",source:"initialize_bootstrap",messages:t,replaceSnapshotSeed:!1}),n=this.hasAuthoritativeBootstrapMessages;this.patch({messages:s.messages,historyState:nl(this.state.session,n?this.authoritativeMessages.length:0),loadingOlderMessages:!1,olderCursor:n?null:this.state.olderCursor,hasOlderMessages:It({session:this.state.session,loadedMessageCount:this.authoritativeMessages.length,olderCursor:n?null:this.state.olderCursor,pagesLoaded:this.state.pagesLoaded,currentHasOlderMessages:this.state.hasOlderMessages}),pagesLoaded:n?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(),n&&this.scheduleMarkSeen()}catch(r){this.handleError(r)}}async reload(){var n,r;this.clearHistoryBootstrapFallbackTimer(),this.historyBootstrapEnvelopeReceived=!1,this.clearOlderHistoryPrefetch(),(n=this.realtimeClient)==null||n.close(),this.realtimeClient=null;const t=Sn(qs(this.sessionId,this.options.targetHostId),Dn),s=this.applyTimelineEvent({type:"timeline.seed",source:"reload_seed",snapshotMessages:(t==null?void 0:t.messages)??[],bootstrapMessages:this.options.bootstrapMessages??[],replaceSnapshotSeedOnBackfill:!this.hasAuthoritativeBootstrapMessages&&((t==null?void 0:t.messages.length)??0)>0&&((t==null?void 0:t.messages.length)??0)<jt&&((t==null?void 0:t.pagesLoaded)??0)<=1});this.state=En({session:Kt(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:s.messages,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=((r=this.state.session)==null?void 0:r.lastSeenAt)??null,this.emit(),await this.initialize()}applyNavigationSession(t){if(!t||t.sessionId!==this.sessionId)return;const s=Kt(this.state.session,t);s!==this.state.session&&this.patch({session:s,hasOlderMessages:It({session:s,loadedMessageCount:this.authoritativeMessages.length,olderCursor:this.state.olderCursor,pagesLoaded:this.state.pagesLoaded,currentHasOlderMessages:this.state.hasOlderMessages})})}async sendMessage(t,s){const n=Zn();this.beginPendingReplyDebugTrace("send_live",n,t.length);const r=Rr(this.sessionId,t,n,(s==null?void 0:s.attachmentMeta)??[],(s==null?void 0:s.attachments)??[],Ja(this.buildTimelineMessages("send_sequence"),this.state.session)),o=this.applyTimelineEvent({type:"pending.insert",source:"send_pending",pending:r});this.patch({messages:o.messages,session:nt(this.state.session,"running"),runtimeHasActiveRun:Jn(this.state.session,this.state.capabilities)?!0:this.state.runtimeHasActiveRun,runtimeCanInterrupt:er(this.state.session,this.state.capabilities)?!0:this.state.runtimeCanInterrupt});try{const a=await this.sendMessageWithFallback(t,n,s);this.markPendingReplyDebugTraceResponseReady(n,{returnedMessageId:a.message.messageId,returnedProviderSessionId:a.message.providerSessionId}),this.resolvePendingMessage(a.message,n),this.patch({messages:this.buildTimelineMessages("send_resolved")})}catch(a){this.failPendingReplyDebugTrace(n,a);const u=this.applyTimelineEvent({type:"pending.fail",source:"send_failed",clientRequestId:n});throw this.patch({messages:u.messages,session:nt(this.state.session,"failed"),runtimeHasActiveRun:!1,runtimeCanInterrupt:!1}),a}}async retryMessage(t){const s=this.pendingMessages.find(r=>r.clientRequestId===t);if(!s)return;const n=this.applyTimelineEvent({type:"pending.retry",source:"retry_pending",clientRequestId:t});this.patch({messages:n.messages,runtimeHasActiveRun:Jn(this.state.session,this.state.capabilities)?!0:this.state.runtimeHasActiveRun,runtimeCanInterrupt:er(this.state.session,this.state.capabilities)?!0:this.state.runtimeCanInterrupt}),this.beginPendingReplyDebugTrace("retry_live",t,s.content.length);try{const r=await this.sendMessageWithFallback(s.content,t,{attachments:s.attachmentPayloads??[],attachmentMeta:s.attachments});this.markPendingReplyDebugTraceResponseReady(t,{returnedMessageId:r.message.messageId,returnedProviderSessionId:r.message.providerSessionId}),this.resolvePendingMessage(r.message,t),this.patch({messages:this.buildTimelineMessages("retry_resolved")})}catch(r){this.failPendingReplyDebugTrace(t,r);const o=this.applyTimelineEvent({type:"pending.fail",source:"retry_failed",clientRequestId:t});throw this.patch({messages:o.messages,session:nt(this.state.session,"failed")}),r}}async enqueueMessage(t,s){const n=Zn();try{const r=await Co(this.sessionId,{content:t,clientRequestId:n,model:(s==null?void 0:s.model)??null,reasoningLevel:(s==null?void 0:s.reasoningLevel)??null,permissionMode:mt(),attachments:(s==null?void 0:s.attachments)??[],providerConfigMode:s==null?void 0:s.providerConfigMode,providerPresetId:(s==null?void 0:s.providerPresetId)??null},{targetHostId:this.options.targetHostId});this.patch({queuedMessages:pl(this.state.queuedMessages,r)}),await this.refreshQueue()}catch(r){throw r}}async deleteQueuedMessage(t){await Eo(this.sessionId,t,{targetHostId:this.options.targetHostId}),await this.refreshQueue()}async steerQueuedMessage(t){await Ao(this.sessionId,t,{targetHostId:this.options.targetHostId}),await this.refreshRuntimeSnapshot("queue_steer")}async interrupt(){await _o(this.sessionId,{targetHostId:this.options.targetHostId}),this.patch({session:nt(this.state.session,"interrupted"),runtimeHasActiveRun:!1,runtimeCanInterrupt:!1,interruptSource:"user",errorCode:null,errorDetail:null})}async replyPermissionRequest(t,s){if(!(this.state.permissionRequests.find(o=>o.id===t)??null))return;const r=await jo(this.sessionId,t,s,{targetHostId:this.options.targetHostId});this.patch({permissionRequests:Bs(this.state.permissionRequests,r)})}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 s=this.state.olderCursor,n=await this.takePrefetchedOlderHistoryPage(s);if(n&&this.state.olderCursor===s){this.applyOlderHistoryPage(n,"prefetch_cache");return}if(!((t=this.realtimeClient)==null?void 0:t.requestOlderMessages(s,Es)))throw new Error("REALTIME_NOT_CONNECTED")}catch(s){const n=s instanceof Error?s.message:"unknown";this.patch({loadingOlderMessages:!1,errorCode:"HISTORY_LOAD_MORE_FAILED",errorDetail:n})}}}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 s;if(!((s=Ss.getState().session)==null?void 0:s.accessToken)){Ss.clear();return}this.realtimeClient=new No({targetHostId:this.options.targetHostId,sessionId:this.sessionId,cursor:this.state.lastCursor,limit:jt,onSubscribed:()=>{be("session_send.realtime_subscribed",{sessionId:this.sessionId,lastCursor:this.state.lastCursor}),this.patch({connectionState:"connected",hasOlderMessages:It({session:this.state.session,loadedMessageCount:this.authoritativeMessages.length,olderCursor:this.state.olderCursor,pagesLoaded:this.state.pagesLoaded,currentHasOlderMessages:this.state.hasOlderMessages})}),this.scheduleHistoryBootstrapFallback()},onConnectionChange:n=>{var o;const r=this.state.connectionState;if(this.patch({connectionState:n,session:n==="reconnecting"&&Qe((o=this.state.session)==null?void 0:o.runningState)?nt(this.state.session,"reconnecting"):this.state.session}),n==="connected"){this.clearRuntimeRefreshTimer("poll"),r!=="closed"&&r!=="connected"&&this.patch({errorCode:null,errorDetail:null});return}this.scheduleRuntimeRefresh("poll","connection_state_change")},onEnvelope:n=>{var u,d;this.historyBootstrapEnvelopeReceived=!0,this.clearHistoryBootstrapFallbackTimer();const r=n.type==="session.backfill"&&this.replaceSnapshotSeedOnBackfill,{messages:o,replacedSnapshotSeed:a}=this.mergeHistoryMessages(n.messages,r,n.type==="session.backfill"?"realtime_backfill":"realtime_delta");this.patch({messages:o,lastCursor:n.cursor,historyState:"ready",olderCursor:n.type==="session.backfill"&&!a&&this.state.pagesLoaded>1?this.state.olderCursor:n.olderCursor??this.state.olderCursor,hasOlderMessages:n.type==="session.backfill"?!a&&this.state.pagesLoaded>1?this.state.hasOlderMessages:!!n.olderCursor:It({session:this.state.session,loadedMessageCount:this.authoritativeMessages.length,olderCursor:this.state.olderCursor,pagesLoaded:this.state.pagesLoaded,currentHasOlderMessages:this.state.hasOlderMessages}),pagesLoaded:n.type==="session.backfill"?!a&&this.state.pagesLoaded>1?this.state.pagesLoaded:Math.max(this.state.pagesLoaded,this.authoritativeMessages.length>0?1:0):this.state.pagesLoaded,session:nt(this.state.session,zn(n.type,(u=this.state.session)==null?void 0:u.runningState))}),(d=this.realtimeClient)==null||d.updateCursor(n.cursor),this.scheduleMarkSeen(),this.scheduleOlderHistoryPrefetch(n.type==="session.backfill"?"backfill":"delta"),this.state.queuedMessages.length>0&&this.refreshQueue()},onOlderHistory:n=>{this.applyOlderHistoryPage({messages:n.messages,nextCursor:n.olderCursor},"realtime")},onRuntimeMessage:n=>{this.handleRuntimeMessage(n)},onActivity:n=>{this.handleActivity(n)},onRuntimeStatus:n=>{this.handleRuntimeStatus(n)},onRuntimeError:n=>{this.handleRuntimeError(n)},onInterrupted:n=>{this.handleInterrupted(n)},onPermissionRequest:n=>{this.handlePermissionRequest(n)},onPermissionRequestResolved:n=>{this.handlePermissionRequestResolved(n)},onError:n=>{this.patch({loadingOlderMessages:!1,errorCode:n.error_code,errorDetail:n.detail})},onUnauthorized:()=>{Ss.clear()}}),this.realtimeClient.start()}patch(t){let s=t;Object.prototype.hasOwnProperty.call(t,"session")&&(this.syncSeenWatermark(t.session??null),s={...t,session:this.applySeenWatermark(t.session??null)}),(Object.prototype.hasOwnProperty.call(s,"session")||Object.prototype.hasOwnProperty.call(s,"messages"))&&(s={...s,timelineItems:js((Object.prototype.hasOwnProperty.call(s,"session")?s.session:this.state.session)??null,(Object.prototype.hasOwnProperty.call(s,"messages")?s.messages:this.state.messages)??[])}),this.state={...this.state,...s},(Object.prototype.hasOwnProperty.call(s,"session")||Object.prototype.hasOwnProperty.call(s,"capabilities")||Object.prototype.hasOwnProperty.call(s,"contextUsage")||Object.prototype.hasOwnProperty.call(s,"messages")||Object.prototype.hasOwnProperty.call(s,"timelineItems")||Object.prototype.hasOwnProperty.call(s,"permissionRequests")||Object.prototype.hasOwnProperty.call(s,"queuedMessages"))&&this.persistSnapshot(),this.emit()}applyTimelineEvent(t){const s=Wn({authoritativeMessages:this.authoritativeMessages,runtimeOverlayMessages:this.runtimeOverlayMessages,activeRuntimeOverlayKeys:this.activeRuntimeOverlayKeys,pendingMessages:this.pendingMessages,replaceSnapshotSeedOnBackfill:this.replaceSnapshotSeedOnBackfill},this.sessionId,t);this.authoritativeMessages=s.timeline.authoritativeMessages,this.runtimeOverlayMessages=s.timeline.runtimeOverlayMessages,this.activeRuntimeOverlayKeys=s.timeline.activeRuntimeOverlayKeys,this.pendingMessages=s.timeline.pendingMessages,this.replaceSnapshotSeedOnBackfill=s.timeline.replaceSnapshotSeedOnBackfill;const n=Qa(s.previousMessages,s.messages,"assistant"),r=Ka(t);return(s.validationIssues.length>0||r.some(a=>a.role==="assistant")||n.length>0)&&ss("timeline.event",{sessionId:this.sessionId,eventType:t.type,source:t.source,replacedSnapshotSeed:s.replacedSnapshotSeed,validationIssues:s.validationIssues,authoritativeCount:this.authoritativeMessages.length,runtimeOverlayCount:this.runtimeOverlayMessages.length,pendingCount:this.pendingMessages.length,eventMessages:r.map(a=>di(a)),assistantMoves:n,previousTail:$n(s.previousMessages.slice(-6)),nextTail:$n(s.messages.slice(-6))}),s}mergeHistoryMessages(t,s,n){const r=this.applyTimelineEvent({type:"history.merge",source:n,messages:t,replaceSnapshotSeed:s});return this.logCodexMergeDebug(n,r.previousMessages,t,r.messages,{replacedSnapshotSeedAttempted:s,replacedSnapshotSeed:r.replacedSnapshotSeed,baseMessageCount:r.replacedSnapshotSeed?0:r.previousMessages.length}),{messages:r.messages,replacedSnapshotSeed:r.replacedSnapshotSeed}}buildTimelineMessages(t){return Ks({authoritativeMessages:this.authoritativeMessages,runtimeOverlayMessages:this.runtimeOverlayMessages,activeRuntimeOverlayKeys:this.activeRuntimeOverlayKeys,pendingMessages:this.pendingMessages,replaceSnapshotSeedOnBackfill:this.replaceSnapshotSeedOnBackfill})}clearActiveRuntimeTail(t){if(this.activeRuntimeOverlayKeys.length===0)return;this.activeRuntimeOverlayKeys=[];const s=this.buildTimelineMessages(t);this.patch({messages:s})}resolvePendingMessage(t,s){this.applyTimelineEvent({type:"pending.resolve",source:"pending_resolved",clientRequestId:s,message:t})}handleError(t){this.clearHistoryBootstrapFallbackTimer();const s=t instanceof Error?t.message:"unknown";this.patch({historyState:"error",errorCode:"RUNTIME_INIT_FAILED",errorDetail:s})}scheduleMarkSeen(){if(this.markSeenTimer!==null)return;const t=this.getTargetSeenAt();if(this.markSeenInFlight||t===null)return;const s=this.getMarkSeenThrottleDelayMs(),n=Math.max(Sa,s);this.markSeenTimer=window.setTimeout(()=>{this.markSeenTimer=null;const r=this.getTargetSeenAt();r!==null&&(be("session_seen.start",{sessionId:this.sessionId,targetSeenAt:r,seenWatermark:this.seenWatermark}),this.markSeenInFlight=!0,this.lastMarkSeenRequestAt=Date.now(),Oo(this.sessionId,{targetHostId:this.options.targetHostId}).then(()=>{var o,a;this.bumpSeenWatermark(r),this.patch({session:Vn(this.state.session,r)}),(a=(o=this.options).onSeen)==null||a.call(o,this.sessionId,r),be("session_seen.end",{sessionId:this.sessionId,seenWatermark:this.seenWatermark})}).catch(()=>{be("session_seen.error",{sessionId:this.sessionId,targetSeenAt:r})}).finally(()=>{this.markSeenInFlight=!1,this.shouldMarkSeen()&&this.scheduleMarkSeen()}))},n)}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(Zr,Math.max(jt,this.authoritativeMessages.length,Ma)),s=await Us(this.sessionId,null,t,"backward",{targetHostId:this.options.targetHostId});if(this.historyBootstrapEnvelopeReceived)return;this.historyBootstrapEnvelopeReceived=!0;const{messages:n,replacedSnapshotSeed:r}=this.mergeHistoryMessages(s.messages,this.replaceSnapshotSeedOnBackfill,"http_bootstrap_fallback");this.patch({messages:n,historyState:"ready",olderCursor:!r&&this.state.pagesLoaded>1?this.state.olderCursor:s.nextCursor,hasOlderMessages:!r&&this.state.pagesLoaded>1?this.state.hasOlderMessages:It({session:this.state.session,loadedMessageCount:this.authoritativeMessages.length,olderCursor:s.nextCursor,pagesLoaded:this.state.pagesLoaded,currentHasOlderMessages:this.state.hasOlderMessages}),lastCursor:s.cursor??this.state.lastCursor,pagesLoaded:!r&&this.state.pagesLoaded>1?this.state.pagesLoaded:this.authoritativeMessages.length>0?Math.max(this.state.pagesLoaded,1):this.state.pagesLoaded,errorCode:null,errorDetail:null}),this.scheduleMarkSeen(),this.scheduleOlderHistoryPrefetch("bootstrap_fallback")}catch{}}applyOlderHistoryPage(t,s){const{messages:n}=this.mergeHistoryMessages(t.messages,!1,s==="realtime"?"older_history_realtime":"older_history_prefetch_cache");this.patch({messages:n,historyState:"ready",loadingOlderMessages:!1,olderCursor:t.nextCursor,hasOlderMessages:!!t.nextCursor,pagesLoaded:this.state.pagesLoaded+1,errorCode:null,errorDetail:null}),be("session.history_older.applied",{sessionId:this.sessionId,source:s,messageCount:t.messages.length,nextCursor:t.nextCursor}),this.scheduleOlderHistoryPrefetch(s)}scheduleOlderHistoryPrefetch(t){var n;const s=this.state.olderCursor;this.state.historyState!=="ready"||this.state.loadingOlderMessages||!s||((n=this.prefetchedOlderHistoryPage)==null?void 0:n.requestedCursor)!==s&&(this.olderHistoryPrefetchPromise&&this.olderHistoryPrefetchCursor===s||this.prefetchOlderHistoryPage(s,t))}async prefetchOlderHistoryPage(t,s){var r;if(((r=this.prefetchedOlderHistoryPage)==null?void 0:r.requestedCursor)===t)return this.prefetchedOlderHistoryPage.page;if(this.olderHistoryPrefetchPromise&&this.olderHistoryPrefetchCursor===t)return this.olderHistoryPrefetchPromise;this.olderHistoryPrefetchCursor=t,be("session.history_older.prefetch.start",{sessionId:this.sessionId,requestedCursor:t,reason:s,limit:Es});const n=Us(this.sessionId,t,Es,"backward",{targetHostId:this.options.targetHostId}).then(o=>(this.state.olderCursor===t&&(this.prefetchedOlderHistoryPage={requestedCursor:t,page:o}),be("session.history_older.prefetch.end",{sessionId:this.sessionId,requestedCursor:t,messageCount:o.messages.length,nextCursor:o.nextCursor}),o)).catch(o=>(be("session.history_older.prefetch.error",{sessionId:this.sessionId,requestedCursor:t,message:o instanceof Error?o.message:"unknown"}),null)).finally(()=>{this.olderHistoryPrefetchPromise===n&&(this.olderHistoryPrefetchPromise=null),this.olderHistoryPrefetchCursor===t&&(this.olderHistoryPrefetchCursor=null)});return this.olderHistoryPrefetchPromise=n,n}async takePrefetchedOlderHistoryPage(t){var s;if(((s=this.prefetchedOlderHistoryPage)==null?void 0:s.requestedCursor)===t){const n=this.prefetchedOlderHistoryPage.page;return this.prefetchedOlderHistoryPage=null,be("session.history_older.prefetch.hit",{sessionId:this.sessionId,requestedCursor:t,messageCount:n.messages.length,nextCursor:n.nextCursor}),n}if(this.olderHistoryPrefetchPromise&&this.olderHistoryPrefetchCursor===t){const n=await this.olderHistoryPrefetchPromise;return!n||this.state.olderCursor!==t?null:(this.prefetchedOlderHistoryPage=null,be("session.history_older.prefetch.await_hit",{sessionId:this.sessionId,requestedCursor:t,messageCount:n.messages.length,nextCursor:n.nextCursor}),n)}return null}clearOlderHistoryPrefetch(){this.olderHistoryPrefetchCursor=null,this.olderHistoryPrefetchPromise=null,this.prefetchedOlderHistoryPage=null}scheduleRuntimeRefresh(t,s){var n,r;if(!Qe((n=this.state.session)==null?void 0:n.runningState)){this.clearRuntimeRefreshTimer();return}t==="poll"&&this.state.connectionState==="connected"||(this.clearRuntimeRefreshTimer(),this.runtimeRefreshMode=t,be("session_runtime.refresh.schedule",{sessionId:this.sessionId,mode:t,reason:s,connectionState:this.state.connectionState,runningState:((r=this.state.session)==null?void 0:r.runningState)??null}),this.runtimeRefreshTimer=window.setTimeout(()=>{const o=this.runtimeRefreshMode??t;this.runtimeRefreshTimer=null,this.runtimeRefreshMode=null,this.refreshRuntimeState(o,s)},t==="poll"?xa:1200))}async refreshRuntimeState(t,s){var n,r,o,a,u;be("session_runtime.refresh.start",{sessionId:this.sessionId,mode:t,reason:s,connectionState:this.state.connectionState,runningState:((n=this.state.session)==null?void 0:n.runningState)??null});try{const d=await An(this.sessionId,{targetHostId:this.options.targetHostId}),h=Ds(this.state.runtimeHasActiveRun,d.runningState,d.hasActiveRun),p=Hs(this.state.runtimeCanInterrupt,d.runningState,h,d.canInterrupt);this.patch({session:Gn(this.state.session,d),runtimeHasActiveRun:h,runtimeCanInterrupt:p,contextUsage:d.contextUsage,...Os(d,this.state.interruptSource)}),await this.refreshQueue();const g=t==="poll"&&this.state.connectionState!=="connected"&&Qe((r=this.state.session)==null?void 0:r.runningState);be("session_runtime.refresh.end",{sessionId:this.sessionId,mode:t,reason:s,connectionState:this.state.connectionState,runningState:((o=this.state.session)==null?void 0:o.runningState)??null,continuePolling:g}),g&&this.scheduleRuntimeRefresh("poll","connection_poll")}catch(d){be("session_runtime.refresh.error",{sessionId:this.sessionId,mode:t,reason:s,connectionState:this.state.connectionState,runningState:((a=this.state.session)==null?void 0:a.runningState)??null,message:d instanceof Error?d.message:"unknown"}),t==="poll"&&this.state.connectionState!=="connected"&&Qe((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(xr(this.sessionId,{targetHostId:this.options.targetHostId}).then(s=>{this.patch({session:Kt(s,this.state.session)})}).catch(()=>{})),Xn(this.state.capabilities)&&t.push(Lo(this.sessionId,{targetHostId:this.options.targetHostId}).then(s=>{this.patch({capabilities:s})}).catch(()=>{})),t.length!==0&&await Promise.allSettled(t)}async refreshPermissionRequests(){try{const t=await Do(this.sessionId,{targetHostId:this.options.targetHostId});this.patch({permissionRequests:t.items})}catch{return}}shouldRefreshSessionDetail(){return this.state.session===null||Xn(this.state.capabilities)||this.state.session.runningState===null}shouldRefreshRuntimeSnapshot(){return this.state.contextUsage===null||hl(this.state.session,this.state.runtimeHasActiveRun,this.state.runtimeCanInterrupt)}async refreshRuntimeSnapshot(t){be("session_runtime.snapshot.start",{sessionId:this.sessionId,reason:t});try{const s=await An(this.sessionId,{targetHostId:this.options.targetHostId}),n=Ds(this.state.runtimeHasActiveRun,s.runningState,s.hasActiveRun),r=Hs(this.state.runtimeCanInterrupt,s.runningState,n,s.canInterrupt);this.patch({session:Gn(this.state.session,s),runtimeHasActiveRun:n,runtimeCanInterrupt:r,contextUsage:s.contextUsage,...Os(s,this.state.interruptSource)}),await this.refreshQueue(),be("session_runtime.snapshot.end",{sessionId:this.sessionId,reason:t,hasContextUsage:s.contextUsage!==null})}catch(s){be("session_runtime.snapshot.error",{sessionId:this.sessionId,reason:t,message:s instanceof Error?s.message:"unknown"})}}async refreshQueue(){try{const t=await Ho(this.sessionId,{targetHostId:this.options.targetHostId});this.patch({queuedMessages:t.items})}catch{return}}async sendMessageWithFallback(t,s,n){var r;try{return await nn(this.sessionId,{content:t,clientRequestId:s,model:(n==null?void 0:n.model)??null,reasoningLevel:(n==null?void 0:n.reasoningLevel)??null,permissionMode:mt(),attachments:(n==null?void 0:n.attachments)??[],providerConfigMode:n==null?void 0:n.providerConfigMode,providerPresetId:(n==null?void 0:n.providerPresetId)??null},{targetHostId:this.options.targetHostId})}catch(o){if(!(o instanceof zi)||o.status!==404&&o.status!==405||(((r=n==null?void 0:n.attachments)==null?void 0:r.length)??0)>0)throw o;return be("session_send.live_fallback",{sessionId:this.sessionId,clientRequestId:s,reason:o.message}),qo(this.sessionId,{content:t,clientRequestId:s,permissionMode:mt()},{targetHostId:this.options.targetHostId})}}handleRuntimeStatus(t){var n;const s=Ns((n=this.state.session)==null?void 0:n.runningState,t.status);this.patch({session:nt(this.state.session,s),runtimeHasActiveRun:Qe(s)?this.state.runtimeHasActiveRun??!0:!1,runtimeCanInterrupt:Qe(s)?this.state.runtimeCanInterrupt:!1,interruptSource:s==="interrupted"?t.interruptSource??this.state.interruptSource:s==="completed"||s==="failed"?null:this.state.interruptSource,errorCode:null,errorDetail:s===t.status?t.detail:this.state.errorDetail}),qt(s)&&(this.clearActiveRuntimeTail("runtime_status_terminal"),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 s=Ds(this.state.runtimeHasActiveRun,t.runningState,t.hasActiveRun),n=Hs(this.state.runtimeCanInterrupt,t.runningState,s,t.canInterrupt);if(this.patch({session:il(this.state.session,t),runtimeHasActiveRun:s,runtimeCanInterrupt:n,...Os(t,this.state.interruptSource)}),qt(t.runningState)){this.clearActiveRuntimeTail("activity_terminal"),this.clearRuntimeRefreshTimer(),this.refreshQueue();return}(t.runningState==="stale"||t.runningState==="unknown")&&this.scheduleRuntimeRefresh("tail","activity_watchdog")}handleRuntimeMessage(t){var r;t.message.role==="assistant"&&this.completePendingReplyDebugTrace(t);const s=this.applyTimelineEvent({type:"runtime.message",source:t.source,message:kr(this.sessionId,t.message)}),n=s.messages;this.logCodexMergeDebug("runtime_message",s.previousMessages,[t.message],n,{runtimeSource:t.source}),this.patch({messages:n,historyState:"ready",hasOlderMessages:It({session:this.state.session,loadedMessageCount:this.authoritativeMessages.length,olderCursor:this.state.olderCursor,pagesLoaded:this.state.pagesLoaded,currentHasOlderMessages:this.state.hasOlderMessages}),session:nt(this.state.session,zn("session.delta",(r=this.state.session)==null?void 0:r.runningState))}),this.scheduleMarkSeen(),this.state.queuedMessages.length>0&&this.refreshQueue()}handleRuntimeError(t){var n;const s=Ns((n=this.state.session)==null?void 0:n.runningState,"failed");this.completePendingReplyDebugTraceWithoutAssistant("session_send.client_runtime_error",{errorCode:t.error_code,detail:t.detail}),this.clearRuntimeRefreshTimer(),this.patch({session:nt(this.state.session,s),runtimeHasActiveRun:!1,runtimeCanInterrupt:!1,interruptSource:null,errorCode:s==="failed"?t.error_code:this.state.errorCode,errorDetail:s==="failed"?t.detail:this.state.errorDetail}),this.refreshQueue()}handleInterrupted(t){var n;const s=Ns((n=this.state.session)==null?void 0:n.runningState,"interrupted");this.completePendingReplyDebugTraceWithoutAssistant("session_send.client_interrupted",{detail:t.detail}),this.clearRuntimeRefreshTimer(),this.patch({session:nt(this.state.session,s),runtimeHasActiveRun:!1,runtimeCanInterrupt:!1,interruptSource:s==="interrupted"?t.interruptSource??this.state.interruptSource:this.state.interruptSource,errorCode:s==="interrupted"?null:this.state.errorCode,errorDetail:s==="interrupted"?t.detail:this.state.errorDetail}),this.refreshQueue()}handlePermissionRequest(t){this.patch({permissionRequests:Bs(this.state.permissionRequests,t.request)})}handlePermissionRequestResolved(t){this.patch({permissionRequests:Bs(this.state.permissionRequests,t.request)})}shouldMarkSeen(){return this.getTargetSeenAt()!==null}getTargetSeenAt(){const t=[...this.state.messages].reverse().find(n=>n.role!=="user");if(!t)return null;const s=this.seenWatermark;return s?t.timestamp>s?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,ya-(Date.now()-this.lastMarkSeenRequestAt))}applySeenWatermark(t){return!t||!this.seenWatermark?t:Vn(t,this.seenWatermark)}emit(){for(const t of this.listeners)t()}persistSnapshot(){Yi(qs(this.sessionId,this.options.targetHostId),{session:this.state.session,capabilities:this.state.capabilities,runtimeHasActiveRun:this.state.runtimeHasActiveRun,runtimeCanInterrupt:this.state.runtimeCanInterrupt,contextUsage:this.state.contextUsage,messages:tr(this.authoritativeMessages),timelineItems:js(this.state.session,tr(this.authoritativeMessages)),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,s,n){const r={mode:t,clientRequestId:s,startedAtMs:performance.now(),responseReadyAtMs:null,contentLength:n};this.pendingReplyDebugTraces.push(r),be(`session_send.${t}.client_start`,{sessionId:this.sessionId,clientRequestId:s,contentLength:n})}markPendingReplyDebugTraceResponseReady(t,s={}){const n=this.pendingReplyDebugTraces.find(r=>r.clientRequestId===t);!n||n.responseReadyAtMs!==null||(n.responseReadyAtMs=performance.now(),be(`session_send.${n.mode}.client_response`,{sessionId:this.sessionId,clientRequestId:t,durationMs:Math.round(n.responseReadyAtMs-n.startedAtMs),...s}))}failPendingReplyDebugTrace(t,s){const n=this.pendingReplyDebugTraces.find(r=>r.clientRequestId===t);n&&(be(`session_send.${n.mode}.client_error`,{sessionId:this.sessionId,clientRequestId:t,durationMs:Math.round(performance.now()-n.startedAtMs),error:s instanceof Error?s.message:String(s)}),this.removePendingReplyDebugTrace(n.clientRequestId))}completePendingReplyDebugTrace(t){const s=this.pendingReplyDebugTraces[0];if(!s)return;const n=performance.now();be(`session_send.${s.mode}.first_assistant_message`,{sessionId:this.sessionId,clientRequestId:s.clientRequestId,durationMs:Math.round(n-s.startedAtMs),responseToAssistantMs:s.responseReadyAtMs===null?null:Math.round(n-s.responseReadyAtMs),messageId:t.message.messageId,kind:t.message.kind,contentLength:t.message.content.length}),this.removePendingReplyDebugTrace(s.clientRequestId)}completePendingReplyDebugTraceWithoutAssistant(t,s={}){const n=this.pendingReplyDebugTraces[0];n&&(be(t,{sessionId:this.sessionId,clientRequestId:n.clientRequestId,durationMs:Math.round(performance.now()-n.startedAtMs),responseReady:n.responseReadyAtMs!==null,...s}),this.removePendingReplyDebugTrace(n.clientRequestId))}removePendingReplyDebugTrace(t){const s=this.pendingReplyDebugTraces.findIndex(n=>n.clientRequestId===t);s<0||this.pendingReplyDebugTraces.splice(s,1)}logCodexMergeDebug(t,s,n,r,o={}){const a=n.filter(al);if(a.length===0)return;const u=Kn(s),d=Kn(r);Ge("session.messages.merge",{sessionId:this.sessionId,source:t,beforeCount:s.length,incomingCount:n.length,afterCount:r.length,incoming:a.slice(0,5).map(cl),beforeDuplicateGroupCount:u.length,afterDuplicateGroupCount:d.length,afterDuplicateGroups:d.slice(0,3),...o})}}function ka(){return{authoritativeMessages:[],runtimeOverlayMessages:[],activeRuntimeOverlayKeys:[],pendingMessages:[],replaceSnapshotSeedOnBackfill:!1}}function Ta(e,t){const s=new Map,n=new Set;for(const r of e)s.set(r.id,r),n.add(r.id);for(const r of t){const o=s.get(r.id)??null,a=li(s,n,r,o);if(a){const h=s.get(a)??null;if(h){Ge("session.messages.runtime_overlay_authoritative_bridge",{mode:"prefer_equivalent",previous:ge(h),overlay:ge(r),replacedSameId:o?ge(o):null}),s.set(a,As(h,r));continue}}if(o){Ge("session.messages.runtime_overlay_authoritative_bridge",{mode:"same_id",previous:ge(o),overlay:ge(r)}),s.set(r.id,As(o,r));continue}const u=fn(s,n,r);if(u){const h=s.get(u)??null;if(h){Ge("session.messages.runtime_overlay_authoritative_bridge",{mode:"codex_compat",previous:ge(h),overlay:ge(r)}),s.set(u,As(h,r));continue}}const d=mn(s,r);if(d&&n.has(d)){const h=s.get(d)??null;if(h){if(Ge("session.messages.runtime_overlay_authoritative_bridge",{mode:"opencode_compat",previous:ge(h),overlay:ge(r)}),bs(h,r)){s.set(d,Hn(h,r));continue}s.set(d,Hn(h,r));continue}}Ge("session.messages.runtime_overlay_authoritative_bridge",{mode:"insert",overlay:ge(r)}),s.set(r.id,r)}return ja(Array.from(s.values()))}function As(e,t){return{...ei(e,{...t,id:e.id,clientRequestId:e.clientRequestId??t.clientRequestId}),id:e.id,rawRef:e.rawRef,timestamp:e.timestamp,sequence:e.sequence,clientRequestId:e.clientRequestId??t.clientRequestId}}function ei(e,t){if(e.id!==t.id)return t;if(Ht(e,t)){const a=ns(e.toolCall,t.toolCall),u=ti(e,t,a,rs),d=is(e.attachments,t.attachments),h=os(e,t);return{...yt(e,t),kind:(a==null?void 0:a.status)==="running"?"tool_call":"tool_result",content:u,toolCall:a,attachments:d,attachmentPayloads:e.attachmentPayloads??t.attachmentPayloads??null,rawRef:h.rawRef,timestamp:h.timestamp,sequence:h.sequence}}if(e.role!==t.role||e.kind!==t.kind)return yt(e,t);const s=ns(e.toolCall,t.toolCall),n=rs(e.content,t.content,e.timestamp,t.timestamp),r=is(e.attachments,t.attachments),o=os(e,t);return{...yt(e,t),content:n,toolCall:s,attachments:r,attachmentPayloads:e.attachmentPayloads??t.attachmentPayloads??null,rawRef:o.rawRef,timestamp:o.timestamp,sequence:o.sequence}}function Hn(e,t){if(Ht(e,t)){const a=ns(e.toolCall,t.toolCall),u=ti(e,t,a,rs),d=is(e.attachments,t.attachments),h=os(e,t);return{...yt(e,t),id:e.id,kind:(a==null?void 0:a.status)==="running"?"tool_call":"tool_result",content:u,toolCall:a,attachments:d,attachmentPayloads:e.attachmentPayloads??t.attachmentPayloads??null,rawRef:h.rawRef,timestamp:h.timestamp,sequence:h.sequence,clientRequestId:e.clientRequestId??t.clientRequestId}}if(e.role!==t.role||e.kind!==t.kind)return{...yt(e,t),id:e.id,clientRequestId:e.clientRequestId??t.clientRequestId};const s=ns(e.toolCall,t.toolCall),n=rs(e.content,t.content,e.timestamp,t.timestamp),r=is(e.attachments,t.attachments),o=os(e,t);return{...yt(e,t),id:e.id,content:n,toolCall:s,attachments:r,attachmentPayloads:e.attachmentPayloads??t.attachmentPayloads??null,rawRef:o.rawRef,timestamp:o.timestamp,sequence:o.sequence,clientRequestId:e.clientRequestId??t.clientRequestId}}function Ht(e,t){return bs(e,t)||ws(e,t)}function ti(e,t,s,n){if((s==null?void 0:s.status)==="running"){if(t.kind==="tool_call"&&t.content)return t.content;if(e.kind==="tool_call"&&e.content)return e.content}else{if(t.kind==="tool_result"&&t.content)return t.content;if(e.kind==="tool_result"&&e.content)return e.content;if(s!=null&&s.output)return s.output}return n(e.content,t.content,e.timestamp,t.timestamp)}function fn(e,t,s){if(!Ys(s))return null;for(const[n,r]of e.entries())if(!(n===s.id||!t.has(n)||!Ca(r,s)))return Ge("session.messages.codex_identity_bridge_match",{previous:ge(r),incoming:ge(s)}),n;return null}function Ca(e,t){if(!Oa(e,t))return!1;if(e.rawRef===t.rawRef)return!0;if(e.kind==="tool_call"||e.kind==="tool_result")return ws(e,t);const s=ls(e.rawRef),n=ls(t.rawRef);if(!s||!n||s!==n)return!1;const r=Math.abs(e.sequence-t.sequence);return r>1?(Ge("session.messages.codex_identity_bridge_rejected",{reason:"sequence_distance",sequenceDistance:r,previous:ge(e),incoming:ge(t)}),!1):!0}function mn(e,t){if(!Bn(t))return null;const s=as(t.rawRef);if(s===null)return null;const n=kt(t.timestamp);let r=null,o=Number.POSITIVE_INFINITY;for(const[a,u]of e.entries()){if(a===t.id||!Bn(u)||u.role!==t.role)continue;if(bs(u,t))return a;if(u.kind!==t.kind||as(u.rawRef)!==s)continue;const h=kt(u.timestamp),p=Math.abs(h-n),S=Math.abs(u.sequence-t.sequence)*6e4+p;S<o&&(r=a,o=S)}return r}function Ea(e,t,s){if(!gn(t))return!1;const n=Xs(e.authoritativeMessages,t,"authoritative",s);if(n)return Ge("session.messages.runtime_user_echo_suppressed",{sessionId:s,target:"authoritative",matched:ge(n),incoming:ge(t)}),!0;const r=Xs(e.pendingMessages,t,"pending",s);return r?(Ge("session.messages.runtime_user_echo_suppressed",{sessionId:s,target:"pending",matched:ge(r),incoming:ge(t)}),!0):!1}function Xs(e,t,s,n){const r=kt(t.timestamp),o=Fe(t.content),a=zs(t.content),u=cs(t.attachments);let d=null,h=Number.POSITIVE_INFINITY;const p=[];for(const g of e){if(!(s==="authoritative"?Na(g):ni(g)))continue;const v=Fe(g.content),I=zs(g.content),m=v===o,y=I===a;if(!m&&!y)continue;const D=kt(g.timestamp),B=Math.abs(D-r);if(B>300*1e3)continue;const x=Math.abs(g.sequence-t.sequence),R=cs(g.attachments),j=Da(R,u);if(p.push(qa(g,{strictTextMatches:m,relaxedTextMatches:y,attachmentCompatibility:j,distanceMs:B,sequenceDistance:x})),j==="conflict"&&(m||o.length===0))continue;const M=B+x*15e3+(m?0:500)+Ha(j);M<h&&(d=g,h=M)}return p.length>0&&Ge("session.messages.runtime_user_match",{sessionId:n,target:s,matchedId:(d==null?void 0:d.id)??null,matchedScore:Number.isFinite(h)?h:null,incoming:Ba(t,{relaxedContent:a,attachmentSignature:u}),candidates:p.slice(0,5)}),d}function Aa(e,t,s){for(const n of t){if(n.role!=="user"||n.kind!=="text")continue;const r=kr(s,n,"sent",null);if(!Xs(e,r,"authoritative",s))return!0}return!1}function ns(e,t){return e?t?{..._a(e,t),input:si(e.input,t.input),output:qn(e.output,t.output),error:qn(e.error,t.error)}:e:t}function _a(e,t){const s=e.status==="running"?0:1,n=t.status==="running"?0:1;return n!==s?n>s?t:e:t}function rs(e,t,s,n){const r=Fe(e),o=Fe(t);return r===o?e.length>=t.length?e:t:r.length>o.length&&r.includes(o)?e:o.length>r.length&&o.includes(r)||n.localeCompare(s)>=0?t:e}function is(e,t){const s=(e==null?void 0:e.length)??0,n=(t==null?void 0:t.length)??0;return n!==s?n>s?t:e:t??e}function si(e,t){return t.length>e.length?t:e}function qn(e,t){return e===null?t:t===null?e:si(e,t)}function yt(e,t){return t.timestamp!==e.timestamp?t.timestamp.localeCompare(e.timestamp)>=0?t:e:t.sequence!==e.sequence?t.sequence>=e.sequence?t:e:t}function os(e,t){return Ft(e,t)<=0?e:t}function Fe(e){return e.replace(Pa,"").replace(/\r\n/g,`
4
+ `).trimEnd()}function zs(e){return Fe(e).replace(/[ \t]+\n/g,`
5
+ `).replace(/\n{2,}/g,`
6
+ `).trim()}function ja(e){return[...e].sort((t,s)=>Ft(t,s))}function Ys(e){return e.deliveryState==="sent"&&e.rawRef.startsWith("codex://")&&(e.role==="assistant"||e.role==="tool")}function gn(e){return e.role==="user"&&e.kind==="text"}function ni(e){return gn(e)&&e.deliveryState!=="failed"&&(e.rawRef.startsWith("pending://")||e.rawRef.startsWith("synthetic://")||e.rawRef.includes("#synthetic"))}function Na(e){return gn(e)&&!ni(e)}function Bn(e){return e.deliveryState==="sent"&&e.rawRef.startsWith("opencode://")&&!(e.rawRef.startsWith("pending://")||e.rawRef.startsWith("synthetic://")||e.rawRef.includes("#synthetic"))&&(e.role==="user"||e.role==="assistant"||e.role==="tool")}function Fn(e){return e.deliveryState==="sent"&&e.rawRef.startsWith("opencode://")&&e.role==="tool"&&(e.kind==="tool_call"||e.kind==="tool_result")&&e.toolCall!==null}function bs(e,t){var r,o;if(!Fn(e)||!Fn(t))return!1;const s=((r=e.toolCall)==null?void 0:r.callId.trim())??"",n=((o=t.toolCall)==null?void 0:o.callId.trim())??"";return s&&n?s===n:as(e.rawRef)===as(t.rawRef)}function as(e){if(!e.startsWith("opencode://"))return null;const t=e.indexOf("#"),s=t>=0?e.slice(t):"",n=t>=0?e.slice(0,t):e,r=n.indexOf("?");if(r<0)return e;const o=n.slice(0,r),a=new URLSearchParams(n.slice(r+1));if(!a.has("part"))return e;a.delete("part");const u=a.toString();return`${o}${u?`?${u}`:""}${s}`}function Oa(e,t){if(!Ys(e)||!Ys(t)||e.role!==t.role)return!1;const s=(e.kind==="tool_call"||e.kind==="tool_result")&&(t.kind==="tool_call"||t.kind==="tool_result");return!s&&e.kind!==t.kind?!1:s?ws(e,t):Math.abs(e.sequence-t.sequence)>Jr||!ii(e.timestamp,t.timestamp,Gs)?!1:t.kind==="text"||t.kind==="thinking"?ri(e,t,Gs):!1}function ri(e,t,s){if(e.deliveryState!=="sent"||t.deliveryState!=="sent"||!e.rawRef.startsWith("codex://")||!t.rawRef.startsWith("codex://")||e.role!==t.role||e.kind!==t.kind||e.toolCall!==null||t.toolCall!==null||e.kind!=="text"&&e.kind!=="thinking")return!1;const n=Pt(e.content),r=Pt(t.content);return ii(e.timestamp,t.timestamp,s)&&Fe(n.text)===Fe(r.text)&&La(n.inlineImages,r.inlineImages)}function ws(e,t){if(e.deliveryState!=="sent"||t.deliveryState!=="sent"||!e.rawRef.startsWith("codex://")||!t.rawRef.startsWith("codex://")||e.role!=="tool"||t.role!=="tool"||e.kind!=="tool_call"&&e.kind!=="tool_result"||t.kind!=="tool_call"&&t.kind!=="tool_result"||e.toolCall===null||t.toolCall===null)return!1;const s=e.toolCall.callId.trim(),n=t.toolCall.callId.trim();return s.length>0&&s===n}function ls(e){const t=e.match(/^codex:\/\/(.+?)(?:#|$)/);return(t==null?void 0:t[1])??null}function La(e,t){return e.length===0||t.length===0?!0:e.length!==t.length?!1:e.every((s,n)=>{var r;return s.url===((r=t[n])==null?void 0:r.url)})}function ii(e,t,s){return Math.abs(kt(e)-kt(t))<=s}function kt(e){const t=Date.parse(e);return Number.isFinite(t)?t:0}function ge(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:e.kind==="text"||e.kind==="thinking"?Fe(Pt(e.content).text).slice(0,160):Fe(e.content).slice(0,160)}}function cs(e){return(e??[]).map(t=>[t.kind,t.fileName.trim().toLowerCase(),t.mimeType.trim().toLowerCase(),String(t.fileSize)].join(":")).sort().join("|")}function Da(e,t){return!e&&!t?"same":!e||!t?"one_side_missing":e===t?"same":"conflict"}function Ha(e){switch(e){case"same":return 0;case"one_side_missing":return 2500;case"conflict":default:return 12e4}}function qa(e,t){return{...ge(e),comparableContent:zs(e.content).slice(0,160),attachmentSignature:cs(e.attachments),strictTextMatches:t.strictTextMatches,relaxedTextMatches:t.relaxedTextMatches,attachmentCompatibility:t.attachmentCompatibility,distanceMs:t.distanceMs,sequenceDistance:t.sequenceDistance}}function Ba(e,t){return{...ge(e),comparableContent:t.relaxedContent.slice(0,160),attachmentSignature:t.attachmentSignature}}function Ks(e){let t=Ta(e.authoritativeMessages,e.runtimeOverlayMessages);for(const s of e.pendingMessages)t=Cr(t,s);return Ua(t,e.authoritativeMessages,e.runtimeOverlayMessages,e.activeRuntimeOverlayKeys)}function Wn(e,t,s){const n=Ks(e);let r=e,o=!1;switch(s.type){case"timeline.seed":{r={authoritativeMessages:xs(s.snapshotMessages,t,s.bootstrapMessages),runtimeOverlayMessages:[],activeRuntimeOverlayKeys:[],pendingMessages:[],replaceSnapshotSeedOnBackfill:s.replaceSnapshotSeedOnBackfill};break}case"history.merge":{o=s.replaceSnapshotSeed&&e.replaceSnapshotSeedOnBackfill&&el(e.authoritativeMessages,s.messages);const u=o?[]:e.authoritativeMessages;r={...e,authoritativeMessages:xs(u,t,s.messages),activeRuntimeOverlayKeys:Aa(e.authoritativeMessages,s.messages,t)?[]:e.activeRuntimeOverlayKeys,replaceSnapshotSeedOnBackfill:o?!1:e.replaceSnapshotSeedOnBackfill};break}case"runtime.message":{if(Ea(e,s.message,t)){r=e;break}r={...e,runtimeOverlayMessages:Bo(e.runtimeOverlayMessages,[s.message]),activeRuntimeOverlayKeys:$a(e,e.activeRuntimeOverlayKeys,s.message)};break}case"pending.insert":{r={...e,activeRuntimeOverlayKeys:s.pending.role==="user"?[]:e.activeRuntimeOverlayKeys,pendingMessages:Cr(e.pendingMessages,s.pending)};break}case"pending.retry":{r={...e,pendingMessages:e.pendingMessages.map(u=>u.clientRequestId===s.clientRequestId?{...u,deliveryState:"sending"}:u)};break}case"pending.fail":{r={...e,pendingMessages:Tr(e.pendingMessages,s.clientRequestId)};break}case"pending.resolve":{const u=e.pendingMessages.find(h=>h.clientRequestId===s.clientRequestId)??null;let d=xs(e.authoritativeMessages,t,[s.message]);u&&(d=d.map(h=>{if(h.id!==s.message.messageId)return h;const p=h.attachments??[];return{...h,attachments:p.length>0?p:u.attachments??[],attachmentPayloads:u.attachmentPayloads??h.attachmentPayloads??null,clientRequestId:s.clientRequestId}})),r={...e,authoritativeMessages:d,activeRuntimeOverlayKeys:s.message.role==="user"?[]:e.activeRuntimeOverlayKeys,pendingMessages:e.pendingMessages.filter(h=>h.clientRequestId!==s.clientRequestId)};break}}r={...r,runtimeOverlayMessages:Wa(r.authoritativeMessages,r.runtimeOverlayMessages)},r={...r,activeRuntimeOverlayKeys:Ga(r.authoritativeMessages,r.runtimeOverlayMessages,r.activeRuntimeOverlayKeys)};const a=Ks(r);return{timeline:r,previousMessages:n,messages:a,replacedSnapshotSeed:o,validationIssues:Fa(e,r,s,n,a)}}function Fa(e,t,s,n,r){var p,g,S;const o=[],a=oi(r,t.authoritativeMessages,t.runtimeOverlayMessages,t.activeRuntimeOverlayKeys),u=_s(r.map(v=>v.id));u.length>0&&o.push(`rendered_duplicate_ids:${u.join(",")}`);const d=_s(t.authoritativeMessages.map(v=>v.id));d.length>0&&o.push(`authoritative_duplicate_ids:${d.join(",")}`);const h=_s(t.pendingMessages.map(v=>v.clientRequestId).filter(v=>!!v));if(h.length>0&&o.push(`pending_duplicate_client_request_ids:${h.join(",")}`),Zs(r,a)||o.push("rendered_order_not_monotonic"),s.type==="pending.resolve"&&t.pendingMessages.some(I=>I.clientRequestId===s.clientRequestId)&&o.push(`pending_not_cleared:${s.clientRequestId}`),s.type==="runtime.message"&&!ui(e.authoritativeMessages,t.authoritativeMessages)&&o.push("runtime_message_mutated_authoritative_layer"),s.type==="history.merge"&&s.source.startsWith("older_history")&&!Ya(e.authoritativeMessages,t.authoritativeMessages)&&o.push("older_history_rewound_authoritative_tail"),n.length>0&&r.length>0&&s.type==="history.merge"&&s.source.startsWith("older_history")&&((p=n.at(-1))==null?void 0:p.id)!==((g=r.at(-1))==null?void 0:g.id)&&o.push("older_history_changed_rendered_tail"),a.length>0){const v=((S=r.at(-1))==null?void 0:S.id)??null;(!v||!a.includes(v))&&o.push("runtime_live_item_not_pinned_to_tail")}return o}function Wa(e,t){if(t.length===0)return t;const s=new Map(e.map(a=>[a.id,a])),n=new Set(s.keys()),r=e.at(-1)??null,o=t.filter(a=>{const u=Qs(s,n,a);if(!u)return!0;const d=us(u,a);return!d&&ai(r,a)?(ss("timeline.runtime_overlay_stale_dropped",{overlay:ge(a),authoritativeMatch:ge(u),latestAuthoritative:r?ge(r):null}),!1):(!d&&ci(a)&&ss("timeline.runtime_overlay_not_absorbed",{overlay:ge(a),authoritativeMatch:ge(u)}),!d)});return o.length===t.length?t:o}function Ua(e,t,s,n){const r=oi(e,t,s,n);if(r.length===0)return e;const o=new Set(r),a=[...e.filter(u=>!o.has(u.id)),...e.filter(u=>o.has(u.id))];return ui(e,a)?e:a}function oi(e,t,s,n){if(s.length===0||e.length===0||n.length===0)return[];const r=new Map(t.map(p=>[p.id,p])),o=new Set(r.keys()),a=new Map(e.map(p=>[p.id,p])),u=new Set(a.keys()),d=new Map(s.map(p=>[rn(p),p])),h=[];for(const p of n){const g=d.get(p)??null;if(!g||!vn(t,g))continue;const S=Qs(r,o,g);if(S&&us(S,g))continue;const v=Qs(a,u,g);!v||h.includes(v.id)||h.push(v.id)}return h}function $a(e,t,s){if(!vn(e.authoritativeMessages,s))return t;const n=rn(s);return t.includes(n)?t:[...t,n]}function vn(e,t){return ci(t)?!ai(e.at(-1)??null,t):!1}function ai(e,t){return!e||Ht(t,e)?!1:Va(t,e)<0}function Va(e,t){const s=e.timestamp.localeCompare(t.timestamp);return s!==0?s:e.sequence!==t.sequence?e.sequence-t.sequence:Ft(e,t)}function Ga(e,t,s){if(s.length===0)return s;const n=new Map(t.map(a=>[rn(a),a])),r=e.at(-1)??null,o=s.filter(a=>{const u=n.get(a)??null;if(!u)return!1;const d=vn(e,u);return d||ss("timeline.runtime_overlay_tail_deactivated",{overlay:ge(u),latestAuthoritative:r?ge(r):null}),d});return o.length===s.length?s:o}function Qs(e,t,s){const n=e.get(s.id)??null,r=li(e,t,s,n);if(r)return e.get(r)??null;if(n)return n;const o=fn(e,t,s);if(o)return e.get(o)??null;const a=mn(e,s);return a?e.get(a)??null:null}function li(e,t,s,n){const r=Xa(e,t,s),o=fn(e,t,s),a=mn(e,s),u=r??o??a;if(!u)return null;if(!n)return u;const d=e.get(u)??null;return!d||!za(n,d,s)?null:u}function Xa(e,t,s){if(s.role!=="assistant"||s.kind!=="text"&&s.kind!=="thinking"||s.deliveryState!=="sent"||!s.rawRef.startsWith("codex://"))return null;const n=ls(s.rawRef);if(!n)return null;for(const[r,o]of e.entries()){if(r===s.id||!t.has(r)||o.role!==s.role||o.kind!==s.kind||o.deliveryState!=="sent"||!o.rawRef.startsWith("codex://"))continue;const a=ls(o.rawRef),u=Math.abs(o.sequence-s.sequence),d=a===n;if(!(!a||Ft(o,s)<0||!d&&u>Jr||!ri(o,s,Gs)))return Ge("session.messages.codex_runtime_overlay_bridge_match",{bridgeMode:d?"same_store":"cross_store_sequence_window",sequenceDistance:u,previous:ge(o),incoming:ge(s)}),r}return null}function za(e,t,s){return!Ht(e,s)||!Ht(t,s)?!1:!us(e,s)&&us(t,s)}function ci(e){return e.role==="assistant"&&(e.kind==="text"||e.kind==="thinking")||e.role==="tool"&&(e.kind==="tool_call"||e.kind==="tool_result")}function us(e,t){if(e.role!==t.role||e.kind!==t.kind&&!(bs(e,t)||ws(e,t)))return!1;const s=ei(e,{...t,id:e.id,clientRequestId:e.clientRequestId??t.clientRequestId});return Un(s)===Un(e)}function Un(e){const t=e.kind==="text"||e.kind==="thinking"?Fe(Pt(e.content).text):Fe(e.content);return JSON.stringify({role:e.role,kind:e.kind,content:t,attachments:cs(e.attachments),toolCall:e.toolCall===null?null:{callId:e.toolCall.callId,name:e.toolCall.name,status:e.toolCall.status,input:Fe(e.toolCall.input),output:Fe(e.toolCall.output??""),error:Fe(e.toolCall.error??"")}})}function _s(e){const t=new Map;for(const s of e)t.set(s,(t.get(s)??0)+1);return Array.from(t.entries()).filter(([,s])=>s>1).map(([s])=>s)}function Zs(e,t=[]){if(t.length>0){const s=new Set(t),n=e.filter(r=>s.has(r.id));if(n.length>0){const r=e.filter(a=>!s.has(a.id));return e.slice(-n.length).some(a=>!s.has(a.id))?!1:Zs(r)&&Zs(n)}}for(let s=1;s<e.length;s+=1)if(Ft(e[s-1],e[s])>0)return!1;return!0}function ui(e,t){var s,n;if(e.length!==t.length)return!1;for(let r=0;r<e.length;r+=1)if(((s=e[r])==null?void 0:s.id)!==((n=t[r])==null?void 0:n.id))return!1;return!0}function Ya(e,t){const s=e.at(-1)??null;if(!s)return!0;const n=t.at(-1)??null;return n?s.id===n.id:!1}function Ka(e){switch(e.type){case"timeline.seed":return[...e.snapshotMessages,...e.bootstrapMessages];case"history.merge":return e.messages;case"runtime.message":return[e.message];case"pending.insert":return[e.pending];case"pending.resolve":return[e.message];case"pending.retry":case"pending.fail":default:return[]}}function Qa(e,t,s){const n=new Map(e.map((h,p)=>[h.id,p])),r=new Map(t.map((h,p)=>[h.id,p])),o=new Map(e.map(h=>[h.id,h])),a=new Map(t.map(h=>[h.id,h])),u=new Set([...e.map(h=>h.id),...t.map(h=>h.id)]),d=[];for(const h of u){const p=o.get(h)??null,g=a.get(h)??null,S=g??p;if(!S||S.role!==s)continue;const v=n.get(h)??null,I=r.get(h)??null;v!==I&&d.push({messageId:h,fromIndex:v,toIndex:I,fromSequence:(p==null?void 0:p.sequence)??null,toSequence:(g==null?void 0:g.sequence)??null,fromRawRef:(p==null?void 0:p.rawRef)??null,toRawRef:(g==null?void 0:g.rawRef)??null,anchorChanged:(p==null?void 0:p.sequence)!==(g==null?void 0:g.sequence)||(p==null?void 0:p.timestamp)!==(g==null?void 0:g.timestamp)||(p==null?void 0:p.rawRef)!==(g==null?void 0:g.rawRef)})}return d.slice(0,8)}function di(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:Za(e.content)}}function $n(e){return e.map(t=>di(t))}function Za(e){const t=e.replace(/\s+/g," ").trim();return t.length>80?`${t.slice(0,80)}...`:t}function Oe(e,t){const[s,n]=l.useState(()=>t(e.getState()));return l.useEffect(()=>(n(t(e.getState())),e.subscribe(()=>{n(t(e.getState()))})),[t,e]),s}function js(e,t){return Er({messages:t,sessionRunningState:(e==null?void 0:e.runningState)??null,sessionSyncStatus:(e==null?void 0:e.syncStatus)??null,sessionLastErrorCode:(e==null?void 0:e.lastErrorCode)??null,sessionLastErrorDetail:(e==null?void 0:e.lastErrorDetail)??null})}function hi(e){const t=e==null?void 0:e.messageCount;return typeof t=="number"&&Number.isFinite(t)?t:null}function Ja(e,t){const s=Fo(e),n=hi(t);return n===null?s:Math.max(s,n+1)}function el(e,t){const s=tl(t);if(!s)return!1;const n=sl(e);return n?bn(s.sequence,s.timestamp,n.sequence,n.timestamp)>=0:!0}function tl(e){let t=null;for(const s of e)(!t||bn(s.sequence,s.timestamp,t.sequence,t.timestamp)>0)&&(t=s);return t}function sl(e){let t=null;for(const s of e)s.deliveryState==="sent"&&(!t||bn(s.sequence,s.timestamp,t.sequence,t.timestamp)>0)&&(t=s);return t}function bn(e,t,s,n){return e!==s?e-s:t.localeCompare(n)}function nl(e,t){return t>0?"ready":"loading"}function rl(e,t){const s=hi(e);return s!==null?s>t:t>=jt}function It(e){return e.olderCursor?!0:e.pagesLoaded>1?e.currentHasOlderMessages:rl(e.session,e.loadedMessageCount)}function nt(e,t){return e&&{...e,runningState:t,activityState:fi(e,t,e.completedAt??null,Qe(t))}}function Vn(e,t){return!e||e.lastSeenAt&&e.lastSeenAt>=t?e:{...e,lastSeenAt:t,activityState:e.activityState==="completed_unread"?"idle":e.activityState}}function Gn(e,t){return pi(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 il(e,t){return pi(e,t)}function pi(e,t){if(!e)return e;const s=ol(t.activityResolutionSource),n=qt(t.runningState)?Ls(e.completedAt,t.updatedAt):null,r=t.runningState==="completed"||t.runningState==="interrupted"||t.runningState==="failed"?Ls(e.lastEventAt,t.updatedAt):t.updatedAt;return{...e,runningState:t.runningState,activitySource:s,activityResolutionSource:t.activityResolutionSource,activityConfidence:t.activityConfidence,runId:t.runId,lastEventAt:r,completedAt:n,lastErrorCode:t.runningState==="failed"?t.errorCode??e.lastErrorCode:null,lastErrorDetail:t.runningState==="failed"?t.errorDetail??t.detail??e.lastErrorDetail:null,watchdogTriggeredAt:t.watchdogTriggeredAt,updatedAt:Ls(e.updatedAt,t.updatedAt)??t.updatedAt,activityState:fi(e,t.runningState,n,t.hasActiveRun)}}function fi(e,t,s,n){return n||Qe(t)?"running":s&&(!e.lastSeenAt||s>e.lastSeenAt)?"completed_unread":e.activityState==="running"||e.activityState==="completed_unread"?"idle":e.activityState??"idle"}function Qe(e){return e==="starting"||e==="running"||e==="reconnecting"}function qt(e){return e==="completed"||e==="interrupted"||e==="failed"}function Xn(e){if(e===null||e.provider==="opencode")return!0;const t=e.modelOptions??[];return t.length===0?!0:t.every(s=>s.usesProviderDefault===!0)}function zn(e,t){return e==="session.backfill"?t??"idle":t==="completed"||t==="interrupted"||t==="failed"?t:"running"}function Ns(e,t){return qt(e)?e:t}function Os(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 ol(e){return e==="authoritative_runtime"||e==="authoritative_provider_event"?"runtime":e==="inferred_log"?"inferred":"none"}function al(e){return e.provider==="codex"&&(e.role==="assistant"||e.role==="tool")}function ll(e){return e.rawRef.startsWith("codex://")&&e.deliveryState==="sent"&&(e.role==="assistant"||e.role==="tool")}function cl(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:mi(e.content,e.kind??"text")}}function Yn(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:mi(e.content,e.kind)}}function Kn(e){const t=new Map;for(const n of e){if(!ll(n))continue;const r=ul(n),o=t.get(r);if(o){o.push(n);continue}t.set(r,[n])}const s=[];for(const[n,r]of t.entries()){const o=[...r].sort((u,d)=>u.sequence!==d.sequence?u.sequence-d.sequence:u.timestamp.localeCompare(d.timestamp));let a=[];for(const u of o){const d=a.at(-1)??null;if(!d||dl(d,u)){a.push(u);continue}a.length>1&&s.push({signature:n,messages:a.map(Yn)}),a=[u]}a.length>1&&s.push({signature:n,messages:a.map(Yn)})}return s}function ul(e){var r,o;if(e.kind==="tool_call"||e.kind==="tool_result")return[e.role,e.kind,((r=e.toolCall)==null?void 0:r.callId)??"",((o=e.toolCall)==null?void 0:o.name)??""].join(":");const t=Pt(e.content),s=Js(t.text),n=t.inlineImages.map(a=>a.url).join("|");return[e.role,e.kind,s,n].join(":")}function dl(e,t){const s=Qn(e.timestamp),n=Qn(t.timestamp);return Math.abs(s-n)<=120*1e3&&Math.abs(e.sequence-t.sequence)<=8}function mi(e,t){return t==="text"||t==="thinking"?Js(Pt(e).text).slice(0,160):Js(e).slice(0,160)}function Js(e){return e.replace(/\r\n/g,`
7
+ `).trimEnd()}function Qn(e){const t=Date.parse(e);return Number.isFinite(t)?t:0}function Ls(e,t){return e?t?e>=t?e:t:e:t??null}function Zn(){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 s=new Uint8Array(16);globalThis.crypto.getRandomValues(s),s[6]=s[6]&15|64,s[8]=s[8]&63|128;const n=Array.from(s,r=>r.toString(16).padStart(2,"0")).join("");return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}return`fallback-${Date.now()}-${Math.random().toString(16).slice(2,10)}`}function gi(e,t){return t&&(!e||e.provider===t.provider)?t:null}function Jn(e,t){const s=gi(e,t);return s?!!s.canSendMessage:e?Ar(e.provider):!1}function er(e,t){const s=gi(e,t);return s?!(!s.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 hl(e,t,s){return t===!0||s===!0?!0:e?e.activityState==="running"||e.runningState==="starting"||e.runningState==="running"||e.runningState==="reconnecting"||e.runningState==="stale"||e.runningState==="unknown":!1}function Ds(e,t,s){return s?!0:e===!0&&Qe(t)}function Hs(e,t,s,n){return n?!0:e===!0&&(s||Qe(t))}function qs(e,t){const s=t==null?void 0:t.trim();return s?`session-runtime.snapshot.host.${encodeURIComponent(s)}.${e}`:`session-runtime.snapshot.${e}`}function tr(e){return e.filter(t=>t.deliveryState==="sent").slice(-Zr)}function pl(e,t){const s=e.filter(n=>n.id!==t.id);return s.push(t),s.sort((n,r)=>n.orderIndex-r.orderIndex),s}function Bs(e,t){const s=e.filter(n=>n.id!==t.id);return s.push(t),s.sort((n,r)=>n.status!==r.status?n.status==="pending"?-1:1:r.createdAt.localeCompare(n.createdAt)),s}function Kt(e,t){if(!e)return t;if(!t||sr(e,t)||nr(e,t))return e;if(sr(t,e)||nr(t,e))return t;const s=Date.parse(e.updatedAt||e.lastMessageAt||e.createdAt),n=Date.parse(t.updatedAt||t.lastMessageAt||t.createdAt);return!Number.isFinite(s)||!Number.isFinite(n)?t:s>=n?e:t}function sr(e,t){return rr(e)&&!rr(t)&&e.lastEventAt===t.lastEventAt&&e.lastMessageAt===t.lastMessageAt&&e.completedAt===t.completedAt}function nr(e,t){if(!ir(e)||ir(t))return!1;const s=e.completedAt??e.lastEventAt??null;return s?(!t.lastEventAt||t.lastEventAt<=s)&&(!t.completedAt||t.completedAt<=s):!1}function rr(e){return e.activityState==="running"||Qe(e.runningState)}function ir(e){return qt(e.runningState)}const fl="workbench:focus-composer",ml=15e3,gl=320;function vi(){typeof window>"u"||window.dispatchEvent(new CustomEvent(fl))}function bi(e){var qe,We,Xe,Ze;const t=l.useRef(null),s=l.useRef(null),n=l.useRef(null),[r,o]=l.useState(!1),[a,u]=l.useState(null),[d,h]=l.useState(null),[p,g]=l.useState(null),[S,v]=l.useState(null),I=dt(),{showToast:m}=I,y=I.dismissToast??(()=>{}),D=Wo(T=>T.notificationPreferences.notifyOnPermissionRequest),B=Ut(),x=on(),R=l.useRef(null),j=l.useRef(null),M=l.useRef(null),N=l.useRef(((qe=e.externalSession)==null?void 0:qe.runningState)??null),C=l.useRef(new Set),A=((We=e.targetHostId)==null?void 0:We.trim())||null;(!t.current||s.current!==e.sessionId||n.current!==A)&&((Xe=t.current)==null||Xe.destroy(),t.current=new Ra(e.sessionId,{targetHostId:A,initialSession:e.externalSession,bootstrapMessages:e.bootstrapMessages??[],onSeen:e.onSeen}),s.current=e.sessionId,n.current=A);const w=t.current,k=Oe(w,T=>T.session),z=Oe(w,T=>T.capabilities),Q=Oe(w,T=>T.runtimeHasActiveRun),te=Oe(w,T=>T.runtimeCanInterrupt),K=Oe(w,T=>T.messages),we=Oe(w,T=>T.timelineItems),P=Oe(w,T=>T.permissionRequests),H=Oe(w,T=>T.queuedMessages),G=Oe(w,T=>T.contextUsage),q=Oe(w,T=>T.historyState),J=Oe(w,T=>T.errorCode),oe=Oe(w,T=>T.errorDetail),ee=Oe(w,T=>T.interruptSource),ne=Oe(w,T=>T.loadingOlderMessages),pe=Oe(w,T=>T.hasOlderMessages),O=Oe(w,T=>T.connectionState),U=Pr(k),X=r&&!S,W=U||Q===!0||X?!0:Q,he=te===!0||X?!0:te,Ce=U||X,He=(k==null?void 0:k.provider)===(z==null?void 0:z.provider)&&Uo(z),Te=H.some(T=>T.status==="queued"||T.status==="dispatching"),_e=k??e.externalSession??null,F=wl({sessionId:e.sessionId,provider:(k==null?void 0:k.provider)??null,runningState:(k==null?void 0:k.runningState)??null,activityState:(k==null?void 0:k.activityState)??null,runtimeHasActiveRun:Q,messages:K}),b=e.enableThinkingPlaceholder===!1||!F?null:c("conversation.runtimeThinkingPlaceholder",{provider:c("conversation.providerCodex")}),$=l.useMemo(()=>$o(we,b),[we,b]);wa({sending:r,setSending:o,session:k,runtimeHasActiveRun:Q,runtimeCanInterrupt:te}),l.useEffect(()=>{w.applyNavigationSession(e.externalSession)},[e.externalSession,w]),l.useEffect(()=>(w.initialize(),()=>{w.destroy(),t.current===w&&(t.current=null)}),[w]),l.useEffect(()=>{v(null),C.current.clear()},[e.sessionId]),l.useEffect(()=>{if(e.onBindSessionWorkspace)return e.onBindSessionWorkspace(e.sessionId,(k==null?void 0:k.workspaceId)??null),()=>{var T;(T=e.onBindSessionWorkspace)==null||T.call(e,e.sessionId,null)}},[e.onBindSessionWorkspace,e.sessionId,k==null?void 0:k.workspaceId]),l.useEffect(()=>{if(e.enableCompletionHaptics===!1)return;const T=N.current,L=(k==null?void 0:k.runningState)??null;(T==="starting"||T==="running"||T==="reconnecting")&&L==="completed"&&x.trigger("success"),N.current=L},[x,e.enableCompletionHaptics,k==null?void 0:k.runningState]),l.useEffect(()=>{var re;if((e.permissionRequestNotificationMode??"always")==="current_only"&&!e.isCurrent)return;const L=P.filter(le=>le.status==="pending"),fe=(k==null?void 0:k.workspaceId)??((re=e.externalSession)==null?void 0:re.workspaceId)??null;for(const le of L)C.current.has(le.id)||(C.current.add(le.id),D&&(m({id:`${e.permissionToastIdPrefix??"permission-request"}-${le.id}`,title:c("conversation.permissionRequestToastTitle"),description:le.title,tone:"warning",durationMs:8e3,action:fe&&e.onNavigateToSession?{label:c("shell.contextOpenSession"),onClick:()=>{var ce;(ce=e.onNavigateToSession)==null||ce.call(e,fe,e.sessionId)}}:void 0}),B.bridge.showNotification(c("conversation.permissionRequestToastTitle"),le.title)))},[(Ze=e.externalSession)==null?void 0:Ze.workspaceId,e.isCurrent,e.onNavigateToSession,e.permissionRequestNotificationMode,e.permissionToastIdPrefix,e.sessionId,D,P,B.bridge,k==null?void 0:k.workspaceId,m]),l.useEffect(()=>{if(e.enableRuntimeErrorHandling!==!1)return()=>{M.current!==null&&(window.clearTimeout(M.current),M.current=null)}},[e.enableRuntimeErrorHandling]),l.useEffect(()=>{var T;e.enableRuntimeErrorHandling!==!1&&(J!=="SESSION_NOT_FOUND"&&J!=="WORKSPACE_NOT_FOUND"||(y("conversation-runtime-error"),(T=e.onResolveMissingSession)==null||T.call(e)))},[y,e.enableRuntimeErrorHandling,e.onResolveMissingSession,J]),l.useEffect(()=>{if(e.enableRuntimeErrorHandling===!1)return;if(J==="SESSION_NOT_FOUND"||J==="WORKSPACE_NOT_FOUND"){M.current!==null&&(window.clearTimeout(M.current),M.current=null),j.current=null,R.current=null,y("conversation-runtime-error");return}if(!J||!oe){M.current!==null&&(window.clearTimeout(M.current),M.current=null),j.current=null,R.current=null,y("conversation-runtime-error");return}const T=`${J}:${oe}`;if(!(R.current===T||j.current===T)){if(M.current!==null&&(window.clearTimeout(M.current),M.current=null),bl((k==null?void 0:k.provider)??null,J,oe)){j.current=T,M.current=window.setTimeout(()=>{j.current=null,M.current=null,R.current=T,m({id:"conversation-runtime-error",title:c("conversation.runtimeErrorTitle"),description:oe,tone:"error",durationMs:null})},ml);return}j.current=null,R.current=T,m({id:"conversation-runtime-error",title:c("conversation.runtimeErrorTitle"),description:oe,tone:"error",durationMs:null})}},[y,e.enableRuntimeErrorHandling,J,oe,k==null?void 0:k.provider,m]);const ue=l.useCallback(async(T,L)=>{var le,ce,Le,me,Ve,Ae,rt;const fe=S;if(!fe){await w.sendMessage(T,{model:L==null?void 0:L.model,reasoningLevel:L==null?void 0:L.reasoningLevel,providerConfigMode:L==null?void 0:L.providerConfigMode,providerPresetId:(L==null?void 0:L.providerPresetId)??null,attachments:L==null?void 0:L.attachments,attachmentMeta:L==null?void 0:L.attachmentMeta}),(le=e.onRequestNavigationRefresh)==null||le.call(e);return}let re=null;try{re=await Sr(e.sessionId,{sourceType:"message",sourceMessageId:fe.sourceMessageId,sourceMessageSnapshot:fe.sourceMessageSnapshot,strategy:"auto",targetProvider:fe.targetProvider,providerConfigMode:fe.targetProviderConfigMode??(L==null?void 0:L.providerConfigMode),providerPresetId:fe.targetProviderPresetId??(L==null?void 0:L.providerPresetId)??null}),(ce=e.onUpsertNavigationSession)==null||ce.call(e,re),await nn(re.sessionId,{content:T,clientRequestId:vl(),model:fe.targetModel,reasoningLevel:(L==null?void 0:L.reasoningLevel)??null,permissionMode:mt(),attachments:(L==null?void 0:L.attachments)??[],providerConfigMode:fe.targetProviderConfigMode??(L==null?void 0:L.providerConfigMode),providerPresetId:fe.targetProviderPresetId??(L==null?void 0:L.providerPresetId)??null}),v(null),(Le=e.onRequestNavigationRefresh)==null||Le.call(e),(me=e.onNavigateToSession)==null||me.call(e,re.workspaceId,re.sessionId),(Ve=e.onForkSuccess)==null||Ve.call(e,re)}catch(ze){throw re&&((Ae=e.onUpsertNavigationSession)==null||Ae.call(e,re),(rt=e.onRequestNavigationRefresh)==null||rt.call(e)),ze}},[S,e,w]),ae=l.useCallback(async(T,L)=>{o(!0);try{await ue(T,L)}finally{o(!1)}},[ue]),xe=l.useCallback(async(T,L)=>{o(!0);try{S?await ue(T,L):await w.enqueueMessage(T,{model:L==null?void 0:L.model,reasoningLevel:L==null?void 0:L.reasoningLevel,providerConfigMode:L==null?void 0:L.providerConfigMode,providerPresetId:(L==null?void 0:L.providerPresetId)??null,attachments:L==null?void 0:L.attachments,attachmentMeta:L==null?void 0:L.attachmentMeta})}finally{o(!1)}},[S,ue,w]),Ee=l.useCallback(async(T,L)=>{u(T);try{await w.replyPermissionRequest(T,L)}catch(fe){m({title:c("conversation.permissionRequestReplyFailed"),description:fe instanceof Error?fe.message:void 0,tone:"error"})}finally{u(null)}},[m,w]),Z=l.useCallback(async T=>{h(T);try{await w.deleteQueuedMessage(T)}finally{h(null)}},[w]),se=l.useCallback(async T=>{var L;g(T);try{await w.steerQueuedMessage(T),(L=e.onRequestNavigationRefresh)==null||L.call(e)}finally{g(null)}},[e.onRequestNavigationRefresh,w]),Ie=l.useCallback(async()=>{var T;await w.interrupt(),(T=e.onRequestNavigationRefresh)==null||T.call(e)},[e.onRequestNavigationRefresh,w]);return{session:_e,capabilities:z,runtimeHasActiveRun:Q,runtimeCanInterrupt:te,messages:K,timelineItems:$,permissionRequests:P,queuedMessages:H,contextUsage:G,historyState:q,runtimeErrorCode:J,runtimeErrorDetail:oe,runtimeInterruptSource:ee,loadingOlderMessages:ne,hasOlderMessages:pe,connectionState:O,sending:r,replyingPermissionRequestId:a,deletingQueueItemId:d,steeringQueueItemId:p,forkDraft:S,setForkDraft:v,composerHasActiveRun:W,composerCanInterrupt:he,composerIsRunning:Ce,canSteerQueuedMessage:He,hasPendingQueuedMessages:Te,reconnect:w.reconnect.bind(w),loadOlderMessages:w.loadOlderMessages.bind(w),retryMessage:w.retryMessage.bind(w),send:ae,queue:xe,interrupt:Ie,replyPermissionRequest:Ee,deleteQueuedMessage:Z,steerQueuedMessage:se}}function vl(){const e=globalThis.crypto;return e&&typeof e.randomUUID=="function"?e.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}function bl(e,t,s){return e!=="opencode"?!1:t==="OPENCODE_REQUEST_TIMEOUT"||t==="PROVIDER_RUNTIME_TIMEOUT"||/\bSERVER_TIMEOUT\b/i.test(s)||/timeout/i.test(s)||/超时/.test(s)}function wl(e){const t=Il(e),[s,n]=l.useState(t==="show"),r=l.useRef(null);return l.useEffect(()=>{r.current!==null&&(window.clearTimeout(r.current),r.current=null),n(t==="show")},[e.sessionId]),l.useEffect(()=>{if(t==="show"){r.current!==null&&(window.clearTimeout(r.current),r.current=null),n(!0);return}if(t==="hide_immediately"){r.current!==null&&(window.clearTimeout(r.current),r.current=null),n(!1);return}!s||r.current!==null||(r.current=window.setTimeout(()=>{r.current=null,n(!1)},gl))},[t,s]),l.useEffect(()=>()=>{r.current!==null&&window.clearTimeout(r.current)},[]),s}function Il(e){const{provider:t,runningState:s,activityState:n,runtimeHasActiveRun:r,messages:o}=e;if(t!=="codex")return"hide_immediately";const a=yl(o);return a<0||Sl(o,a)?"hide_immediately":Ml(s,n,r)?"show":"hide_deferred"}function Ml(e,t,s){return s===!0||t==="running"||e==="starting"||e==="running"||e==="reconnecting"}function Sl(e,t){return e.slice(t+1).some(s=>s.role==="assistant"&&(s.kind==="text"||s.kind==="thinking"))}function yl(e){let t=-1;for(let s=e.length-1;s>=0;s-=1){const n=e[s];if(n.role==="user"&&n.kind==="text"){t=s;break}}return t}const xl=1.5,Pl=24,Rl=72,kl=296,Tl=16,or={2:496,3:408,4:344};function wi(e){return or[e]??or[4]}function Cl({memberCount:e,currentWidth:t,monitorWidth:s}){if(e<2||t<=0||s<=0)return t;const n=kl,r=Math.max(0,e-1)*Tl,o=Math.max(0,(t-n-r)/e),a=wi(e);if(o>=a)return t;const u=n+r+e*a,d=Math.min(t*xl,Math.max(t,s-Rl)),h=Math.min(Math.max(t,u),d);return h<=t+Pl?t:h}const El=240,ar=920,lr=760,wn=360,In=320,Be=16,cr=428,Al=404,ot=12;function Lt(e,t){if(typeof window>"u")return e;const s=Math.max(0,window.innerWidth-Be*2),n=Math.max(0,window.innerHeight-Be*2),r=Math.min((t==null?void 0:t.minWidth)??wn,s),o=Math.min((t==null?void 0:t.minHeight)??In,n),a=Math.max(r,s),u=Math.max(o,n),d=Math.min(Math.max(e.width,r),a),h=Math.min(Math.max(e.height,o),u),p=Math.min(Math.max(e.x,Be),Math.max(Be,window.innerWidth-d-Be)),g=Math.min(Math.max(e.y,Be),Math.max(Be,window.innerHeight-h-Be));return{x:p,y:g,width:d,height:h}}function _l(e){if(typeof window>"u")return{x:Be,y:Be,width:ar,height:lr};const t=Math.min(ar,Math.max(wn,window.innerWidth-Be*2)),s=Math.min(lr,Math.max(In,window.innerHeight-Be*2));return Lt({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:s})}function jl(e){return!e||e.width<=0||e.height<=0?null:Lt({x:e.left,y:e.top,width:e.width,height:e.height},{minWidth:Math.min(wn,e.width),minHeight:Math.min(In,e.height)})}function Nl(e){if(typeof window>"u")return{x:ot,y:ot,width:cr};const t=Math.min(cr,Math.max(Al,window.innerWidth-ot*2));return{x:Math.min(Math.max(((e==null?void 0:e.right)??window.innerWidth-ot)-t,ot),Math.max(ot,window.innerWidth-t-ot)),y:Math.max(ot,((e==null?void 0:e.bottom)??ot)+8),width:t}}function Ol({groupId:e,currentSessionId:t}){var ee,ne,pe;const s=ht(),n=Ut(),r=Vo(n),{showToast:o}=dt(),{navigationGroups:a,requestNavigationRefresh:u}=vt(),d=l.useMemo(()=>Bt(a),[a]),h=l.useMemo(()=>new Map(d.map(O=>[O.session.sessionId,O])),[d]),p=l.useMemo(()=>ms(d),[d]),g=l.useMemo(()=>{const O=new Map,U=X=>{for(const W of X)O.set(W.item.session.sessionId,W),U(gs(W))};return U(p),O},[p]),S=l.useMemo(()=>an(a),[a]),[v,I]=l.useState(null),[m,y]=l.useState(!0),[D,B]=l.useState(null),[x,R]=l.useState(null),[j,M]=l.useState(null),[N,C]=l.useState(null),[A,w]=l.useState(null),[k,z]=l.useState(!1),Q=l.useRef(null),te=l.useRef(null);l.useEffect(()=>{let O=!1;async function U(){y(!0),B(null);try{const X=await Go(e);if(O)return;I(X)}catch(X){if(O)return;B(X instanceof Error?X.message:c("shell.parallelGroupLoadFailed"))}finally{O||y(!1)}}return U(),()=>{O=!0}},[e]),l.useEffect(()=>{const O=Qi(e);O&&H(O)},[e]),l.useEffect(()=>()=>{te.current!==null&&window.clearTimeout(te.current)},[]);const K=l.useMemo(()=>v?v.members.slice().sort((O,U)=>O.member.ordinal-U.member.ordinal).map(O=>{const U=h.get(O.session.sessionId),X=(U==null?void 0:U.session)??O.session;return{session:X,workspaceId:(U==null?void 0:U.workspace.id)??es(X,O.sessionIsolatedWorkspace),ordinal:O.member.ordinal,memberPrompt:O.member.memberPrompt,model:O.member.model,sessionIsolatedWorkspace:O.sessionIsolatedWorkspace,subagentTree:$l(X.sessionId,v.group.id,g)}}):[],[v,h,g]);l.useEffect(()=>{if(!n.isDesktop||n.ui.osFamily!=="macos"&&n.ui.osFamily!=="windows"||K.length<2)return;const O=`${e}:${K.length}`;if(Q.current===O)return;Q.current=O;let U=!1;async function X(){try{const W=await yn(()=>import("./window-BVUB8gMK.js").then(xe=>xe.w),__vite__mapDeps([0,1])),he=await yn(()=>import("./window-BVUB8gMK.js").then(xe=>xe.d),__vite__mapDeps([0,1])),Ce=W.getCurrentWindow(),He=await Ce.innerSize(),Te=await Ce.scaleFactor(),_e=await W.currentMonitor();if(U||Te<=0)return;const F=He.width/Te,b=He.height/Te,$=_e?_e.workArea.size.width/_e.scaleFactor:F*1.5,ue=Cl({memberCount:K.length,currentWidth:F,monitorWidth:$});if(ue<=F+24)return;const ae=10;await new Promise(xe=>window.setTimeout(xe,56));for(let xe=1;xe<=ae;xe+=1){if(U)return;const Ee=xe/ae,Z=1-Math.pow(1-Ee,3),se=F+(ue-F)*Z;await Ce.setSize(new he.LogicalSize(se,b)),await new Promise(Ie=>window.setTimeout(Ie,El/ae))}}catch{return}}return X(),()=>{U=!0}},[e,K.length,n.isDesktop,n.ui.osFamily]);async function we(O){M(O);try{const U=await zo(O);await u(),I(X=>X&&{...X,members:X.members.map(W=>{var he;return((he=W.sessionIsolatedWorkspace)==null?void 0:he.id)===O?{...W,sessionIsolatedWorkspace:{...W.sessionIsolatedWorkspace,workspaceId:U.workspace.id,lifecycleStatus:"promoted",promotedAt:U.record.promotedAt}}:W})}),o({title:c("shell.parallelWorkspacePromotedBadge"),tone:"success"})}catch(U){o({title:U instanceof Error?U.message:c("shell.parallelGroupLoadFailed"),tone:"error"})}finally{M(null)}}async function P(O){if(N)return;const U=O.trim();if(!U)return;const X=K.find(he=>he.session.sessionId!==U)??null,W=(v==null?void 0:v.group.workspaceId)??(X==null?void 0:X.workspaceId)??null;C(U);try{await Xo(U),Ws(U,null),R(he=>he===U?null:he),I(he=>he&&{...he,members:he.members.filter(Ce=>Ce.session.sessionId!==U)}),await u(),t===U&&(X?s($e(X.workspaceId,X.session.sessionId)):W&&s(St(W))),o({title:c("shell.deleteSessionSuccess"),tone:"success"})}catch(he){o({title:he instanceof Error?he.message:c("shell.deleteSessionFailed"),tone:"error"})}finally{C(null)}}function H(O){w(O),te.current!==null&&window.clearTimeout(te.current),te.current=window.setTimeout(()=>{w(null),te.current=null},O.totalDurationMs)}if(m&&!v)return i.jsx("main",{className:"workbench-page conversation-page-shell parallel-conversation-page",children:i.jsx("section",{className:"parallel-conversation-empty-state",children:i.jsx("strong",{children:c("shell.parallelCreateSubmitting")})})});if(D&&!v)return i.jsx("main",{className:"workbench-page conversation-page-shell parallel-conversation-page",children:i.jsxs("section",{className:"parallel-conversation-empty-state error",children:[i.jsx("strong",{children:c("shell.parallelGroupLoadFailed")}),i.jsx("p",{children:D})]})});if(K.length===0)return i.jsx("main",{className:"workbench-page conversation-page-shell parallel-conversation-page",children:i.jsx("section",{className:"parallel-conversation-empty-state",children:i.jsx("strong",{children:c("shell.parallelGroupEmpty")})})});const G=((ee=S[(v==null?void 0:v.group.workspaceId)??""])==null?void 0:ee.displayName)??(v==null?void 0:v.group.workspaceId)??c("common.unknown"),q=K.find(O=>O.session.sessionId===(v==null?void 0:v.group.anchorSessionId))??K[0]??null,J=K.length<4,oe={"--parallel-pane-min-width":`${wi(K.length)}px`,...A?{"--parallel-pane-enter-delay":`${A.paneEnterDelayMs}ms`,"--parallel-pane-enter-duration":`${A.paneEnterDurationMs}ms`,"--parallel-grid-reveal-delay":`${A.gridRevealDelayMs}ms`,"--parallel-grid-reveal-duration":`${A.gridRevealDurationMs}ms`,"--parallel-shell-expand-duration":`${A.shellExpandDurationMs}ms`,"--parallel-pane-stagger-delay":`${A.paneStaggerMs}ms`}:{}};return i.jsxs("main",{className:"workbench-page conversation-page-shell parallel-conversation-page","data-parallel-count":K.length,"data-parallel-entering":A?"true":void 0,style:oe,children:[i.jsx("header",{className:"parallel-conversation-group-header","data-window-drag-handle":"parallel-conversation-group-titlebar","data-tauri-drag-region":r,children:i.jsxs("div",{className:"parallel-conversation-group-titlebar","data-tauri-drag-region":r,children:[i.jsxs("div",{className:"parallel-conversation-group-titlemain","data-tauri-drag-region":r,children:[i.jsx("span",{className:"session-parallel-badge",children:c("shell.parallelGroupBadge")}),i.jsx("strong",{"data-tauri-drag-region":r,children:((ne=v==null?void 0:v.group.sharedPrompt)==null?void 0:ne.trim())||c("common.unknown")})]}),i.jsx("button",{type:"button",className:"secondary-button parallel-conversation-group-add-button","aria-label":c("shell.parallelAppendAction"),title:c("shell.parallelAppendAction"),"data-window-drag":"ignore",disabled:!J,onClick:()=>{J&&z(!0)},children:i.jsx("span",{"aria-hidden":"true",children:"+"})})]})}),i.jsx("div",{className:"parallel-conversation-grid",children:K.map(O=>{const U=S[O.workspaceId]??ln({id:O.workspaceId,name:O.session.workspaceId,path:O.session.workspaceId,repoRoot:O.session.workspaceId});return i.jsx(Ll,{entry:O,isCurrent:O.session.sessionId===t||$t(O.subagentTree,t),routeCurrentSessionId:t,workspaceContext:U,infoOpen:x===O.session.sessionId,promotingWorkspaceId:j,onCloseInfo:()=>{R(null)},onToggleInfo:()=>{R(X=>X===O.session.sessionId?null:O.session.sessionId)},onPromoteWorkspace:we,onRemoveSession:P,removingSessionId:N},O.session.sessionId)})}),i.jsx($s,{open:k,source:v?{kind:"group",groupId:v.group.id,workspaceId:v.group.workspaceId,workspaceName:G,sharedPrompt:((pe=v.group.sharedPrompt)==null?void 0:pe.trim())||"",currentMemberCount:K.length,defaultProvider:(q==null?void 0:q.session.provider)??"codex"}:null,onClose:()=>z(!1),onCreated:async O=>{I(O),z(!1),H(Ki("append")),await u(),o({title:c("shell.parallelAppendSucceeded"),tone:"success"})}})]})}function Ll({entry:e,isCurrent:t,routeCurrentSessionId:s,workspaceContext:n,infoOpen:r,onCloseInfo:o,onToggleInfo:a,onPromoteWorkspace:u,promotingWorkspaceId:d,onRemoveSession:h,removingSessionId:p}){var Tt,bt,Gt,Ct,wt,Et,Xt;const g=ht(),S=Ut(),{showToast:v}=dt(),{navigationGroups:I,requestNavigationRefresh:m,setSessionWorkspace:y,upsertNavigationSession:D,markNavigationSessionSeen:B,selectWorkspace:x}=vt(),R=e.session.sessionId,[j,M]=l.useState(()=>Vl(e,s)),N=l.useMemo(()=>new Map(Bt(I).map(E=>[E.session.sessionId,E])),[I]),C=j===R?e.session:((Tt=N.get(j))==null?void 0:Tt.session)??Mi(e.subagentTree,j)??e.session,A=j===R?e.workspaceId:((bt=N.get(j))==null?void 0:bt.workspace.id)??Si(e.subagentTree,j)??e.workspaceId,w=C.sessionId,[k,z]=l.useState(!1),[Q,te]=l.useState("files"),[K,we]=l.useState(!1),[P,H]=l.useState(null),[G,q]=l.useState(null),J=l.useRef(null),oe=l.useRef(null),ee=l.useRef(null),ne=l.useRef(null),pe=l.useRef(null),O=l.useRef(null),[U,X]=l.useState(()=>xn(R)),{session:W,capabilities:he,messages:Ce,timelineItems:He,permissionRequests:Te,queuedMessages:_e,contextUsage:F,historyState:b,runtimeInterruptSource:$,loadingOlderMessages:ue,hasOlderMessages:ae,connectionState:xe,sending:Ee,replyingPermissionRequestId:Z,deletingQueueItemId:se,steeringQueueItemId:Ie,forkDraft:qe,setForkDraft:We,composerHasActiveRun:Xe,composerCanInterrupt:Ze,composerIsRunning:T,canSteerQueuedMessage:L,hasPendingQueuedMessages:fe,reconnect:re,loadOlderMessages:le,retryMessage:ce,send:Le,queue:me,interrupt:Ve,replyPermissionRequest:Ae,deleteQueuedMessage:rt,steerQueuedMessage:ze}=bi({sessionId:w,externalSession:C,onSeen:(E,de)=>{B(E,de)},onRequestNavigationRefresh:m,onUpsertNavigationSession:D,onNavigateToSession:(E,de)=>{x(E),g($e(E,de))},onBindSessionWorkspace:j===R?y:void 0,onResolveMissingSession:()=>{m()},permissionRequestNotificationMode:"current_only",permissionToastIdPrefix:"parallel-permission-request",isCurrent:t,enableRuntimeErrorHandling:!0,enableCompletionHaptics:!1,enableThinkingPlaceholder:!0,enableForkTimelineSanitizer:!0}),it=Zi((W==null?void 0:W.parallelGroup)??e.session.parallelGroup),pt=Ji({groupId:((Gt=(W==null?void 0:W.parallelGroup)??e.session.parallelGroup)==null?void 0:Gt.groupId)??"parallel-group",ordinal:e.ordinal,overrideColor:U}),lt=eo((W==null?void 0:W.parallelGroup)??e.session.parallelGroup),Pe=(W==null?void 0:W.sessionIsolatedWorkspace)??e.sessionIsolatedWorkspace,ct=to(Pe),ft=((Ct=F==null?void 0:F.modelId)==null?void 0:Ct.trim())||((wt=e.model)==null?void 0:wt.trim())||c("shell.parallelPaneModelFallback"),Je=((Et=e.memberPrompt)==null?void 0:Et.trim())||c("shell.parallelPanePromptFallback"),et=A,Me=br(W??C,Pe),f=Me===et?(n==null?void 0:n.displayName)??et:ct??Je,V=l.useMemo(()=>{var E;return((E=I.find(de=>de.workspace.id===Me))==null?void 0:E.workspace.path)??null},[I,Me]),Y=p===w;async function Se(E){await Le(Object.entries(E.answers).map(([,de])=>de.filter(Boolean).join(" / ")).filter(Boolean).join(`
8
+ `))}const je=r&&G?{...Nt(n)??{},...it??{},...pt,left:`${G.x}px`,top:`${G.y}px`,width:`${G.width}px`}:void 0,De=k&&P?{...Nt(n)??{},...it??{},...pt,left:`${P.x}px`,top:`${P.y}px`,width:`${P.width}px`,height:`${P.height}px`}:void 0;l.useEffect(()=>{X(xn(R)),z(!1),we(!1),H(null),q(null),te("files")},[R]),l.useEffect(()=>{if($t(e.subagentTree,s)){M(s);return}if(s===R){M(R);return}M(E=>Gl(e,E)?E:R)},[e,R,s]),l.useEffect(()=>{if(!r)return;const E=de=>{var Ue,Ye,Ke;const st=de.target;st instanceof HTMLElement&&((Ue=oe.current)!=null&&Ue.contains(st)||(Ye=ne.current)!=null&&Ye.contains(st)||(Ke=pe.current)!=null&&Ke.contains(st)||o())};return window.addEventListener("pointerdown",E),()=>{window.removeEventListener("pointerdown",E)}},[r,o]),l.useEffect(()=>{if(!r){q(null);return}const E=()=>{var de;q(Nl(((de=ee.current)==null?void 0:de.getBoundingClientRect())??null))};return E(),window.addEventListener("resize",E),window.addEventListener("scroll",E,!0),()=>{window.removeEventListener("resize",E),window.removeEventListener("scroll",E,!0)}},[r]),l.useEffect(()=>{if(!k)return;const E=()=>{H(de=>de&&Lt(de))};return window.addEventListener("resize",E),()=>{window.removeEventListener("resize",E)}},[k]);async function Re(){if(Me===et&&x(et),S.isDesktop&&S.bridge.supported){const E=await Zo(S,{workspaceId:Me,workspaceName:f,focusOwner:"terminal-page"});E.ok||v({title:E.detail??c("terminalManager.openExternalFailed"),tone:"error"});return}g(no(Me))}async function Ne(){if(!(!S.isDesktop||!S.bridge.supported)){if(Q==="files"){const E=await Yo(S,{workspaceId:Me,workspaceName:f,sessionId:w,focusOwner:"file-context-panel"});E.ok||v({title:E.detail??c("conversation.filePanelOpenExternalFailed"),tone:"error"});return}if(Q==="git"){const E=await Ko(S,{workspaceId:Me,workspaceName:f,focusOwner:"git-sidebar"});E.ok||v({title:E.detail??c("git.openExternalFailed"),tone:"error"});return}if(Q==="processes"){const E=await Qo(S,{workspaceId:Me,workspaceName:f,focusOwner:"terminal-manager-panel"});E.ok||v({title:E.detail??c("terminalManager.openExternalFailed"),tone:"error"});return}await Re()}}function ke(){var E,de;z(!0),H(jl(((E=J.current)==null?void 0:E.getBoundingClientRect())??null)??_l(((de=O.current)==null?void 0:de.getBoundingClientRect())??null))}function tt(E){if(E.button!==0||!P)return;E.preventDefault();const de=E.clientX,st=E.clientY,Ue=P,Ye=ut=>{H(Lt({...Ue,x:Ue.x+(ut.clientX-de),y:Ue.y+(ut.clientY-st)}))},Ke=()=>{window.removeEventListener("pointermove",Ye),window.removeEventListener("pointerup",Ke)};window.addEventListener("pointermove",Ye),window.addEventListener("pointerup",Ke)}function Is(E){if(E.button!==0||!P)return;E.preventDefault(),E.stopPropagation();const de=E.clientX,st=E.clientY,Ue=P,Ye=ut=>{H(Lt({...Ue,width:Ue.width+(ut.clientX-de),height:Ue.height+(ut.clientY-st)}))},Ke=()=>{window.removeEventListener("pointermove",Ye),window.removeEventListener("pointerup",Ke)};window.addEventListener("pointermove",Ye),window.addEventListener("pointerup",Ke)}const Ms=k&&typeof document<"u"?Rt.createPortal(i.jsxs("div",{ref:pe,className:"parallel-pane-tools-popover","data-parallel-pane-layer":w,"data-pinned":K?"true":void 0,"data-workspace-tone":(n==null?void 0:n.tone)??"root",style:De,children:[i.jsxs("div",{className:"parallel-pane-tools-toolbar",children:[i.jsxs("div",{className:"parallel-pane-tools-drag-handle",onPointerDown:tt,children:[i.jsx("span",{className:"parallel-pane-tools-drag-dots","aria-hidden":"true",children:i.jsx(ql,{})}),i.jsx("span",{children:c("shell.parallelPaneToolsAction")})]}),i.jsx("div",{className:"parallel-pane-tools-tabs",role:"tablist","aria-label":c("shell.parallelPaneToolsAction"),children:["files","git","processes","terminals"].map(E=>i.jsx("button",{type:"button",role:"tab","aria-selected":Q===E,className:"parallel-pane-tools-tab",onClick:()=>{te(E)},children:E==="files"?c("shell.filesEntry"):E==="git"?c("shell.gitEntry"):E==="processes"?c("shell.parallelPaneProcessesEntry"):c("shell.terminalsEntry")},E))}),i.jsxs("div",{className:"parallel-pane-tools-actions",children:[i.jsx("button",{type:"button",className:`conversation-header-ai-button${K?" active":""}`,"aria-label":c("shell.parallelPanePinAction"),title:c("shell.parallelPanePinAction"),"aria-pressed":K,onClick:()=>{we(E=>!E)},children:i.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:i.jsx(Bl,{})})}),S.isDesktop&&S.bridge.supported?i.jsx("button",{type:"button",className:"conversation-header-ai-button","aria-label":c("shell.parallelPaneDetachAction"),title:c("shell.parallelPaneDetachAction"),onClick:()=>{Ne()},children:i.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:i.jsx(Fl,{})})}):null,i.jsx("button",{type:"button",className:"conversation-header-ai-button","aria-label":c("common.close"),title:c("common.close"),onClick:()=>{z(!1)},children:i.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:i.jsx(Wl,{})})})]})]}),i.jsx("div",{className:"parallel-pane-tools-body","data-panel":Q,children:Q==="files"?i.jsx(Fr,{className:"parallel-pane-tools-surface",hideHeading:!0,sessionId:w,workspaceId:Me}):Q==="git"?i.jsx(Wr,{className:"parallel-pane-tools-surface",panelActive:!0,workspaceId:Me}):Q==="processes"?i.jsx(Ur,{className:"parallel-pane-tools-surface parallel-pane-tools-process-panel",currentWorkspaceId:Me,navigationGroups:I}):i.jsx(aa,{embeddedMode:!0,externalWindowWorkspaceId:Me,workbenchShellOverrides:{navigationGroups:I,currentWorkspaceId:Me,selectWorkspace:x}})}),i.jsx("button",{type:"button",className:"parallel-pane-tools-resize-handle","aria-label":c("shell.parallelPaneResizeAction"),title:c("shell.parallelPaneResizeAction"),onPointerDown:Is,children:i.jsx("span",{"aria-hidden":"true",children:i.jsx(Ul,{})})})]}),document.body):null,Vt=r&&typeof document<"u"?Rt.createPortal(i.jsxs("div",{ref:ne,className:"parallel-pane-info-popover","data-parallel-pane-layer":w,"data-workspace-tone":(n==null?void 0:n.tone)??"root",style:je,children:[i.jsx("strong",{className:"parallel-pane-info-title",children:c("shell.parallelPaneInfoTitle")}),i.jsx(Mt,{children:i.jsxs("dl",{className:"parallel-pane-info-list",children:[i.jsxs("div",{children:[i.jsx("dt",{children:c("shell.createSessionProviderLabel")}),i.jsx("dd",{children:Dt((W??e.session).provider,"full")})]}),i.jsxs("div",{children:[i.jsx("dt",{children:c("shell.parallelPaneModelFallback")}),i.jsx("dd",{children:ft})]}),i.jsxs("div",{children:[i.jsx("dt",{children:c("shell.parallelPaneIsolatedWorkspaceTitle")}),i.jsx("dd",{children:ct??c("common.unknown")})]})]})}),i.jsx(Mt,{heading:c("shell.parallelPaneColorPaletteLabel"),description:c("shell.parallelPaneColorPaletteDescription"),actions:i.jsx("button",{type:"button",className:"ghost-button parallel-pane-color-reset",disabled:!U||Y,onClick:()=>{Ws(R,null),X(null)},children:c("shell.parallelPaneColorPaletteReset")}),children:i.jsx("div",{className:"workbench-manage-color-palette parallel-pane-color-palette","aria-label":c("shell.parallelPaneColorPaletteLabel"),children:so.map(E=>i.jsx("button",{type:"button",className:"workbench-manage-color-swatch","aria-label":c("shell.manageWorkspaceColorSelectSwatch",{color:E}),"aria-pressed":U===E,"data-selected":U===E,disabled:Y,style:{backgroundColor:E},onClick:()=>{const de=Ws(R,E);X(de)}},E))})}),i.jsx(Mt,{heading:c("shell.parallelPaneIsolatedWorkspaceTitle"),description:(Pe==null?void 0:Pe.lifecycleStatus)==="active"?c("shell.parallelPanePromoteDescription"):(Pe==null?void 0:Pe.lifecycleStatus)==="promoted"?c("shell.parallelPaneRemovePromotedDescription"):c("shell.parallelPaneRemoveDescription"),children:i.jsxs(fs,{align:"start",className:"parallel-pane-action-row",children:[(Pe==null?void 0:Pe.lifecycleStatus)==="active"?i.jsx("button",{type:"button",className:"secondary-button parallel-pane-promote-action",disabled:d===Pe.id||Y,onClick:()=>{const E=Pe==null?void 0:Pe.id;E&&u(E)},children:d===Pe.id?c("shell.parallelPanePromoting"):c("shell.parallelPanePromoteAction")}):null,i.jsx("button",{type:"button",className:"secondary-button workbench-danger-button",disabled:Y,onClick:()=>{h(w)},children:Y?c("shell.parallelPaneRemoving"):c("shell.parallelPaneRemoveAction")})]})})]}),document.body):null;return i.jsxs(i.Fragment,{children:[i.jsxs("article",{ref:J,className:"parallel-conversation-pane","data-current":t?"true":void 0,"data-workspace-tone":(n==null?void 0:n.tone)??"root","data-parallel-role":((Xt=(W==null?void 0:W.parallelGroup)??e.session.parallelGroup)==null?void 0:Xt.role)??void 0,style:{"--parallel-pane-order":String(e.ordinal),...Nt(n)??{},...it??{},...pt},children:[i.jsxs("header",{ref:oe,className:"parallel-conversation-pane-header",children:[i.jsx("span",{className:"parallel-conversation-pane-connector","aria-hidden":"true"}),i.jsxs("div",{className:"parallel-conversation-pane-heading",children:[lt?i.jsx("span",{className:"session-parallel-badge",children:lt}):null,i.jsx("p",{className:"parallel-conversation-pane-subtitle",title:Je,children:Je}),i.jsxs("div",{className:"parallel-conversation-pane-meta",children:[i.jsx("span",{className:`session-provider-badge ${(W??e.session).provider}`,children:Dt((W??e.session).provider)}),i.jsx("span",{className:"parallel-conversation-pane-model",children:ft})]})]}),i.jsxs("div",{className:"parallel-conversation-pane-actions",children:[i.jsx("button",{ref:ee,type:"button",className:"conversation-header-ai-button","aria-label":c("shell.parallelPaneInfoAction"),title:c("shell.parallelPaneInfoAction"),"aria-expanded":r,onClick:()=>{z(!1),a()},children:i.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:i.jsx(Dl,{})})}),i.jsx("button",{ref:O,type:"button",className:`conversation-header-ai-button${k?" active":""}`,"aria-label":c("shell.parallelPaneToolsAction"),title:c("shell.parallelPaneToolsAction"),"aria-expanded":k,onClick:()=>{o(),ke()},children:i.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:i.jsx(Hl,{})})})]})]}),i.jsxs("div",{className:"parallel-conversation-pane-body",children:[i.jsx(pn,{connectionState:xe,onReconnect:re}),i.jsx(_r,{requests:Te,replyingRequestId:Z,onReply:Ae}),i.jsx("div",{className:"parallel-conversation-pane-timeline",children:i.jsx(cn,{sessionId:w,sessionSummary:W??e.session,workspaceId:Me,workspacePath:V,items:He,historyState:b,loadingOlderMessages:ue,hasOlderMessages:ae,provider:(W==null?void 0:W.provider)??e.session.provider,interruptedSource:$,followTailUpdates:!0,onLoadOlderMessages:le,onRetryMessage:ce,onSubmitStructuredQuestion:Se,onForkMessage:E=>{const de=W??e.session;We({sourceMessageId:E.id,sourceMessageSnapshot:{role:E.role,kind:E.kind??(E.role==="tool"?"tool_result":"text"),content:E.content},content:E.content,sourceProvider:de.provider,workspaceId:de.workspaceId,targetProvider:de.provider,targetModel:null,targetProviderConfigMode:de.providerConfigMode??"global-default",targetProviderPresetId:de.providerPresetId??null}),vi()}})}),i.jsx(Qr,{items:_e,deletingQueueItemId:se,steeringQueueItemId:Ie,canSteer:L,onDelete:rt,onSteer:ze}),i.jsx(un,{capabilities:he,draftStorageId:w,initialModel:e.model,workspaceId:(W??e.session).workspaceId,initialProviderConfigMode:(W??e.session).providerConfigMode??"global-default",initialProviderPresetId:(W??e.session).providerPresetId??null,forkDraft:qe,onClearForkDraft:()=>We(null),onForkDraftChange:E=>We(E),hasActiveRun:Xe,contextUsage:F,taskProvider:(W??e.session).provider,taskMessages:Ce,hasPendingQueuedMessages:fe,canInterrupt:Ze,isSubmitting:Ee,isRunning:T,onInterrupt:Ve,onSend:Le,onQueueSend:me})]})]}),Vt,Ms]})}function Dl(){return i.jsxs("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[i.jsx("circle",{cx:"8",cy:"8",r:"5.5",fill:"none",stroke:"currentColor",strokeWidth:"1.4"}),i.jsx("path",{d:"M8 6.1H8.01M7.35 7.6H8V10.3H8.65",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.4"})]})}function Hl(){return i.jsxs("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[i.jsx("rect",{x:"2.5",y:"2.5",width:"4.2",height:"4.2",rx:"1.2",fill:"none",stroke:"currentColor",strokeWidth:"1.2"}),i.jsx("rect",{x:"9.3",y:"2.5",width:"4.2",height:"4.2",rx:"1.2",fill:"none",stroke:"currentColor",strokeWidth:"1.2"}),i.jsx("rect",{x:"2.5",y:"9.3",width:"4.2",height:"4.2",rx:"1.2",fill:"none",stroke:"currentColor",strokeWidth:"1.2"}),i.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 ql(){return i.jsxs("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[i.jsx("circle",{cx:"5",cy:"4.5",r:"0.9",fill:"currentColor"}),i.jsx("circle",{cx:"11",cy:"4.5",r:"0.9",fill:"currentColor"}),i.jsx("circle",{cx:"5",cy:"8",r:"0.9",fill:"currentColor"}),i.jsx("circle",{cx:"11",cy:"8",r:"0.9",fill:"currentColor"}),i.jsx("circle",{cx:"5",cy:"11.5",r:"0.9",fill:"currentColor"}),i.jsx("circle",{cx:"11",cy:"11.5",r:"0.9",fill:"currentColor"})]})}function Bl(){return i.jsx("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:i.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 Fl(){return i.jsxs("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[i.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"}),i.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 Wl(){return i.jsx("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:i.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 Ul(){return i.jsx("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:i.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 $l(e,t,s){const n=s.get(e);return n?gs(n).flatMap(r=>Ii(r,t)):[]}function Ii(e,t){var r;const s=e.item.session;if(((r=s.parallelGroup)==null?void 0:r.groupId)===t)return[];const n=gs(e).flatMap(o=>Ii(o,t));return s.isSubagent!==!0?n:[{session:s,workspaceId:e.item.workspace.id,children:n}]}function $t(e,t){const s=t.trim();return s?e.some(n=>n.session.sessionId===s||$t(n.children,s)):!1}function Vl(e,t){return t===e.session.sessionId?e.session.sessionId:$t(e.subagentTree,t)?t:e.session.sessionId}function Gl(e,t){const s=t.trim();return s?s===e.session.sessionId||$t(e.subagentTree,s):!1}function Mi(e,t){const s=t.trim();if(!s)return null;for(const n of e){if(n.session.sessionId===s)return n.session;const r=Mi(n.children,s);if(r)return r}return null}function Si(e,t){const s=t.trim();if(!s)return null;for(const n of e){if(n.session.sessionId===s)return n.workspaceId;const r=Si(n.children,s);if(r)return r}return null}const xt=196,gt=82,ur=28,dr=24,yi=34,en=18,Xl=332,Qt=360,ds=840,hr=18,zl=.22,Yl=2.4,Kl=6;function Ql(e,t){return(t.lastMessageAt??t.updatedAt).localeCompare(e.lastMessageAt??e.updatedAt)}function xi(e,t,s){var v,I;if(!t)return null;const n=e.find(m=>m.workspace.id===t);if(!n)return null;const r=new Map(n.sessions.map(m=>[m.sessionId,m])),o=r.get(s)??null;if(!o)return null;const a=new Map;for(const m of n.sessions){const y=((v=m.parentSessionId)==null?void 0:v.trim())||null;if(!y)continue;const D=a.get(y)??[];a.set(y,[...D,m.sessionId])}const u=new Set,d=new Set;let h=o,p=o.sessionId;for(;h&&!d.has(h.sessionId);){u.add(h.sessionId),d.add(h.sessionId),p=h.sessionId;const m=((I=h.parentSessionId)==null?void 0:I.trim())||null;h=m?r.get(m)??null:null}const g=Pi(p,0,r,a,new Set),S=Jl(g);return{root:g,current:o,currentPathIds:u,relatedSessionIds:S,sessionsById:r}}function Zl(e){return((e==null?void 0:e.relatedSessionIds.size)??0)>1}function Pi(e,t,s,n,r){const o=s.get(e);if(!o)throw new Error(`Session ${e} not found`);const a=new Set(r);a.add(e);const u=[...n.get(e)??[]].filter(d=>!a.has(d)).sort((d,h)=>{const p=s.get(d),g=s.get(h);return!p||!g?0:Ql(p,g)});return{session:o,depth:t,children:u.map(d=>Pi(d,t+1,s,n,a))}}function Jl(e){const t=new Set;function s(n){t.add(n.session.sessionId),n.children.forEach(s)}return s(e),t}function Ri(e){const t=Dr(e),s=e.lastMessageAt??e.updatedAt,n=s?new Intl.DateTimeFormat(void 0,{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(new Date(s)):null;return[Dt(e.provider),n,t].filter(Boolean).join(" · ")}function ki(e){return e.isArchived===!0}function ec(e){return[...e].sort((t,s)=>t.sequence-s.sequence).filter(t=>t.content.trim().length>0||t.kind==="tool_call"||t.kind==="tool_result")}function Ti(e,t){return e<=0||t<=0?1:Math.min(1,e/t)}function tc(e,t,s,n){const r=Ti(e,s),o=s*r,a=n*r,u=o<e?(e-o)/2:0;return{scale:r,offsetX:u,offsetY:0,shellWidth:Math.max(e,o),shellHeight:a}}function tn(e,t,s){return Math.min(s,Math.max(t,e))}function sc(e,t,s,n){if(e<=0||t<=0||s<=0||n<=0)return 1;const r=Math.max(1,e-hr*2),o=Math.max(1,t-hr*2);return Math.min(1,r/s,o/n)}function hs(e,t,s,n,r){const o=n*e.scale,a=r*e.scale,u=(t-o)/2,d=(s-a)/2,h=o<=t?u:tn(e.offsetX,t-o,0),p=a<=s?d:tn(e.offsetY,s-a,0);return{scale:e.scale,offsetX:h,offsetY:p}}function Zt(e,t,s,n){const r=sc(e,t,s,n);return hs({scale:r,offsetX:(e-s*r)/2,offsetY:(t-n*r)/2},e,t,s,n)}function nc(e,t,s,n,r,o,a,u){const d=(s-e.offsetX)/e.scale,h=(n-e.offsetY)/e.scale;return hs({scale:t,offsetX:s-d*t,offsetY:n-h*t},r,o,a,u)}function rc(e){var s;const t=e.content.trim();if(t.length>0){const n=t.replace(/\s+/g," ").trim();return n.length<=160?n:`${n.slice(0,157)}...`}return(s=e.toolCall)!=null&&s.name?`${e.toolCall.name} ${c("conversation.branchTreeToolMessageFallback")}`:c("conversation.branchTreeMessageEmpty")}function ic(e){switch(e.role){case"assistant":return c("conversation.roleAssistant");case"system":return c("conversation.roleSystem");case"tool":return c("conversation.roleTool");case"user":default:return c("conversation.roleUser")}}function sn(e,t){const s=t.get(e.session.sessionId);if(s!==void 0)return s;if(e.children.length===0)return t.set(e.session.sessionId,xt),xt;const n=e.children.reduce((o,a,u)=>{const d=o+sn(a,t);return u===0?d:d+en},0),r=Math.max(xt,n);return t.set(e.session.sessionId,r),r}function oc(e){const t=new Map,s=[],n=new Map;function r(u,d,h){const p=sn(u,t),g=d+p/2,S=dr+h*(gt+yi),v=g-xt/2,I=u.children.reduce((B,x,R)=>{const j=B+sn(x,t);return R===0?j:j+en},0);let m=d+Math.max(0,(p-I)/2);const y=u.children.map(B=>{const x=r(B,m,h+1);return m+=x.subtreeWidth+en,x}),D={node:u,children:y,x:v,y:S,centerX:g,centerY:S+gt/2,subtreeWidth:p};return s.push(D),n.set(u.session.sessionId,D),D}const o=r(e,ur,0),a=s.reduce((u,d)=>Math.max(u,d.y+gt),0);return{root:o,nodes:s,bySessionId:n,width:o.subtreeWidth+ur*2,height:a+dr}}function ac(e){return Math.max(0,Math.min(255,Number.parseFloat(e)))}function lc(e){const t=e.trim();if(t.startsWith("#")){const n=t.slice(1);if(n.length===3){const[r,o,a]=n.split("").map(u=>Number.parseInt(u.repeat(2),16));return{r,g:o,b:a}}if(n.length>=6)return{r:Number.parseInt(n.slice(0,2),16),g:Number.parseInt(n.slice(2,4),16),b:Number.parseInt(n.slice(4,6),16)}}const s=t.match(/rgba?\(([^)]+)\)/i);if(s){const[n,r,o]=s[1].split(",").map(a=>ac(a));return{r:n,g:r,b:o}}return null}function at(e,t,s){const n=lc(e);return n?`rgba(${n.r}, ${n.g}, ${n.b}, ${t})`:s}function cc(e,t,s,n,r,o){const a=e.getContext("2d");if(!a)return;const u=a,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 h=window.getComputedStyle(e),p=h.getPropertyValue("--accent").trim()||"#3b82f6",g=h.getPropertyValue("--border-primary").trim()||"#d4d8df",S=h.getPropertyValue("--bg-surface").trim()||"#ffffff";if(!o){const I=u.createLinearGradient(0,0,t.width,t.height);I.addColorStop(0,at(S,.38,"rgba(255, 255, 255, 0.38)")),I.addColorStop(1,at(p,.05,"rgba(59, 130, 246, 0.05)")),u.fillStyle=I,u.fillRect(0,0,t.width,t.height)}function v(I){for(const m of I.children){const y=n.has(I.node.session.sessionId)&&n.has(m.node.session.sessionId),D=I.node.session.sessionId===r||m.node.session.sessionId===r;u.beginPath(),u.moveTo(I.centerX,I.y+gt-10);const B=I.y+gt+yi*.52;u.bezierCurveTo(I.centerX,B,m.centerX,B,m.centerX,m.y+10),u.lineWidth=D?3:y?2.5:1.5,u.strokeStyle=D?at(p,.52,"rgba(59, 130, 246, 0.52)"):y?at(p,.32,"rgba(59, 130, 246, 0.32)"):at(g,.72,"rgba(148, 163, 184, 0.72)"),u.stroke(),u.beginPath(),u.arc(m.centerX,m.y,D?4.5:3.5,0,Math.PI*2),u.fillStyle=D?at(p,.9,"rgba(59, 130, 246, 0.9)"):at(g,.78,"rgba(148, 163, 184, 0.78)"),u.fill(),v(m)}}v(t.root);for(const I of t.nodes){const m=I.node.session.sessionId===s,y=I.node.session.sessionId===r,D=n.has(I.node.session.sessionId);if(!m&&!y&&!D)continue;const B=u.createRadialGradient(I.centerX,I.centerY,10,I.centerX,I.centerY,y?90:64);B.addColorStop(0,at(p,y?.22:.14,"rgba(59, 130, 246, 0.22)")),B.addColorStop(1,"rgba(59, 130, 246, 0)"),u.fillStyle=B,u.beginPath(),u.ellipse(I.centerX,I.centerY,xt*.72,gt*.9,0,0,Math.PI*2),u.fill(),(y||m)&&(u.beginPath(),u.arc(I.centerX,I.y+12,y?6:5,0,Math.PI*2),u.fillStyle=at(p,.94,"rgba(59, 130, 246, 0.94)"),u.fill())}}function uc(e,t,s){const n=Math.min(Xl,t-24),r=e.left+e.width/2-n/2,o=Math.max(12,Math.min(t-n-12,r)),d=s-e.bottom-12<220&&e.top>Qt?Math.max(12,e.top-Qt-12):Math.max(12,Math.min(s-Qt-12,e.bottom+12));return{width:n,left:o,top:d,maxHeight:Math.min(Qt,s-24)}}function dc({model:e,selectedSession:t,selectedTreeNode:s,previewEntry:n,onClose:r,onOpenSession:o}){const a=Wt(t.title,c("common.unknown")),u=t.sessionId===e.current.sessionId,d=ki(t),h=jr(s.session),p=Nr(s.session),g=Or(s.session),S=Lr(s.session);return i.jsxs("div",{className:"conversation-branch-preview-popover",role:"dialog","aria-label":`${c("conversation.branchTreePreviewTitle")} ${a.fullTitle}`,children:[i.jsxs("div",{className:"conversation-branch-preview-popover-header",children:[i.jsxs("div",{className:"conversation-branch-preview-card-title-row",children:[i.jsx("strong",{title:a.fullTitle,children:a.displayTitle}),u?i.jsx("span",{className:"conversation-branch-current-badge",children:c("conversation.branchTreeCurrentBadge")}):null,d?i.jsx("span",{className:"conversation-branch-archived-badge",children:c("conversation.branchTreeArchivedBadge")}):null]}),i.jsx("button",{type:"button",className:"conversation-branch-preview-close","aria-label":c("common.close"),onClick:r,children:"x"})]}),i.jsx("p",{className:"conversation-branch-preview-popover-meta",children:Ri(t)}),p&&h||S&&g?i.jsxs("div",{className:"conversation-branch-badge-row",children:[S&&g?i.jsx("span",{className:`session-fork-badge ${g}`,children:S}):null,p&&h?i.jsx("span",{className:`session-fork-badge ${h}`,children:p}):null]}):null,i.jsx("div",{className:"conversation-branch-preview-messages",children:n.status==="loading"?i.jsx("p",{className:"conversation-branch-empty",children:c("conversation.branchTreePreviewLoading")}):n.status==="error"?i.jsx("p",{className:"conversation-branch-empty",children:n.error||c("conversation.branchTreePreviewFailed")}):n.messages.length>0?n.messages.map(v=>i.jsxs("article",{className:"conversation-branch-preview-message",children:[i.jsxs("div",{className:"conversation-branch-preview-message-meta",children:[i.jsx("span",{children:ic(v)}),i.jsx("span",{children:new Intl.DateTimeFormat(void 0,{hour:"2-digit",minute:"2-digit"}).format(new Date(v.timestamp))})]}),i.jsx("p",{children:rc(v)})]},`${t.sessionId}:${v.messageId}`)):i.jsx("p",{className:"conversation-branch-empty",children:c("conversation.branchTreePreviewEmpty")})}),i.jsx("div",{className:"conversation-branch-preview-actions",children:i.jsx("button",{type:"button",className:"secondary-button",disabled:u,onClick:()=>o(t),children:u?c("conversation.branchTreeCurrentAction"):c("conversation.branchTreeSwitchAction")})})]})}function hc({layout:e,model:t,selectedSessionId:s,onSelectSession:n,onBackgroundClick:r,stageScale:o,desktopStageLayout:a,transform:u,isMobileViewport:d,viewportRef:h,onRegisterNodeElement:p,onViewportTouchStart:g,onViewportTouchMove:S,onViewportTouchEnd:v}){const I=l.useRef(null);return l.useEffect(()=>{const m=I.current;m&&cc(m,e,t.current.sessionId,t.currentPathIds,s,d)},[d,e,t.current.sessionId,t.currentPathIds,s]),i.jsx("div",{ref:h,className:"conversation-branch-canvas-viewport","data-scaled":o<.999,"data-mobile":d,onClick:m=>{m.target===m.currentTarget&&(r==null||r())},onTouchStart:g,onTouchMove:S,onTouchEnd:v,onTouchCancel:v,children:i.jsx("div",{className:"conversation-branch-canvas-stage-shell",style:{width:d?"100%":a.shellWidth,height:d?"100%":a.shellHeight},onClick:m=>{m.target===m.currentTarget&&(r==null||r())},children:i.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(${a.offsetX}px, ${a.offsetY}px) scale(${a.scale})`,transformOrigin:"top left"},onClick:()=>{if(r){r();return}n(null)},children:[i.jsx("canvas",{ref:I,className:"conversation-branch-canvas",width:e.width,height:e.height,"aria-hidden":"true"}),e.nodes.map(m=>{const y=Wt(m.node.session.title,c("common.unknown")),D=jr(m.node.session),B=Nr(m.node.session),x=Or(m.node.session),R=Lr(m.node.session),j=m.node.session.sessionId===t.current.sessionId,M=m.node.session.sessionId===s,N=t.currentPathIds.has(m.node.session.sessionId),C=ki(m.node.session);return i.jsx("button",{ref:A=>p(m.node.session.sessionId,A),type:"button",className:"conversation-branch-smart-card conversation-branch-canvas-node","data-current":j,"data-selected":M,"data-current-path":N,"data-archived":C,style:{left:m.x,top:m.y,width:xt,minHeight:gt},"aria-pressed":M,onClick:A=>{A.stopPropagation(),n(m.node.session.sessionId)},children:i.jsxs("div",{className:"conversation-branch-smart-card-main",children:[i.jsxs("div",{className:"conversation-branch-smart-card-title-row",children:[i.jsx("strong",{title:y.fullTitle,children:y.displayTitle}),j?i.jsx("span",{className:"conversation-branch-current-badge",children:c("conversation.branchTreeCurrentBadge")}):null,C?i.jsx("span",{className:"conversation-branch-archived-badge",children:c("conversation.branchTreeArchivedBadge")}):null]}),i.jsx("p",{children:Ri(m.node.session)}),B&&D||R&&x?i.jsxs("div",{className:"conversation-branch-badge-row",children:[R&&x?i.jsx("span",{className:`session-fork-badge ${x}`,children:R}):null,B&&D?i.jsx("span",{className:`session-fork-badge ${D}`,children:B}):null]}):null]})},m.node.session.sessionId)})]})})})}function pr({model:e,onOpenSession:t,onClose:s}){const n=l.useMemo(()=>oc(e.root),[e.root]),r=l.useRef(null),o=l.useRef(new Map),[a,u]=l.useState(null),[d,h]=l.useState(0),[p,g]=l.useState(0),[S,v]=l.useState(null),[I,m]=l.useState({}),y=l.useRef(new Set),[D,B]=l.useState(typeof window<"u"?window.innerWidth<=ds:!1),[x,R]=l.useState(null),j=l.useRef({mode:"idle",startDistance:0,startScale:1,startOffsetX:0,startOffsetY:0,startTouchX:0,startTouchY:0,anchorX:0,anchorY:0,moved:!1});l.useEffect(()=>{const P=r.current;if(!P)return;const H=P;function G(){h(H.clientWidth),g(H.clientHeight),B(window.innerWidth<=ds)}if(G(),typeof ResizeObserver>"u")return window.addEventListener("resize",G),()=>window.removeEventListener("resize",G);const q=new ResizeObserver(G);return q.observe(P),()=>q.disconnect()},[]),l.useEffect(()=>{u(null)},[e.current.sessionId,e.root.session.sessionId]);const M=l.useMemo(()=>Ti(d,n.width),[d,n.width]),N=l.useMemo(()=>tc(d,p,n.width,n.height),[p,d,n.height,n.width]);l.useEffect(()=>{if(!D||d<=0||p<=0){R(null);return}R(P=>P?hs(P,d,p,n.width,n.height):Zt(d,p,n.width,n.height))},[p,d,D,n.height,n.width]);const C=a?e.sessionsById.get(a)??null:null,A=C?n.bySessionId.get(C.sessionId)??null:null,w=C?I[C.sessionId]??{status:"idle",messages:[],error:null}:null,k=D&&!!s,z=!!s&&!k;l.useEffect(()=>{if(!a){v(null);return}const P=a;function H(){const G=o.current.get(P);if(!G){v(null);return}v(G.getBoundingClientRect())}return H(),window.addEventListener("resize",H),window.addEventListener("scroll",H,!0),()=>{window.removeEventListener("resize",H),window.removeEventListener("scroll",H,!0)}},[a,M]),l.useEffect(()=>{if(!D)return;const P=a;if(!P)return;const H=window.requestAnimationFrame(()=>{const G=o.current.get(P);G&&v(G.getBoundingClientRect())});return()=>window.cancelAnimationFrame(H)},[D,x,a]),l.useEffect(()=>{if(!(C!=null&&C.sessionId)||(w==null?void 0:w.status)==="ready"||y.current.has(C.sessionId))return;let P=!1;return y.current.add(C.sessionId),m(H=>{var G;return{...H,[C.sessionId]:{status:"loading",messages:((G=H[C.sessionId])==null?void 0:G.messages)??[],error:null}}}),Us(C.sessionId,null,6,"backward").then(H=>{y.current.delete(C.sessionId),!P&&m(G=>({...G,[C.sessionId]:{status:"ready",messages:ec(H.messages),error:null}}))}).catch(H=>{y.current.delete(C.sessionId),!P&&m(G=>{var q;return{...G,[C.sessionId]:{status:"error",messages:((q=G[C.sessionId])==null?void 0:q.messages)??[],error:H instanceof Error?H.message:c("conversation.branchTreePreviewFailed")}}})}),()=>{P=!0}},[C==null?void 0:C.sessionId]);function Q(P){!D||d<=0||p<=0||R(H=>{const G=H??Zt(d,p,n.width,n.height);return hs(P(G),d,p,n.width,n.height)})}function te(P){if(!D)return;const H=P.currentTarget.getBoundingClientRect();if(P.touches.length>=2){const J=P.touches[0],oe=P.touches[1],ee=Math.hypot(oe.clientX-J.clientX,oe.clientY-J.clientY),ne=(J.clientX+oe.clientX)/2-H.left,pe=(J.clientY+oe.clientY)/2-H.top,O=x??Zt(d,p,n.width,n.height);j.current={mode:"pinch",startDistance:ee,startScale:O.scale,startOffsetX:O.offsetX,startOffsetY:O.offsetY,startTouchX:ne,startTouchY:pe,anchorX:ne,anchorY:pe,moved:!1};return}const G=P.touches[0],q=x??Zt(d,p,n.width,n.height);j.current={mode:"pan",startDistance:0,startScale:q.scale,startOffsetX:q.offsetX,startOffsetY:q.offsetY,startTouchX:G.clientX,startTouchY:G.clientY,anchorX:0,anchorY:0,moved:!1}}function K(P){if(!D)return;const H=j.current;if(P.touches.length>=2){const ee=P.currentTarget.getBoundingClientRect(),ne=P.touches[0],pe=P.touches[1],O=Math.hypot(pe.clientX-ne.clientX,pe.clientY-ne.clientY);if(O<=0||H.startDistance<=0)return;P.preventDefault();const U=(ne.clientX+pe.clientX)/2-ee.left,X=(ne.clientY+pe.clientY)/2-ee.top,W=tn(H.startScale*(O/H.startDistance),zl,Yl);j.current={...H,mode:"pinch",moved:!0,anchorX:U,anchorY:X},Q(he=>nc({...he,scale:H.startScale,offsetX:H.startOffsetX,offsetY:H.startOffsetY},W,U,X,d,p,n.width,n.height));return}if(H.mode!=="pan"||P.touches.length!==1)return;const G=P.touches[0],q=G.clientX-H.startTouchX,J=G.clientY-H.startTouchY;(H.moved||Math.hypot(q,J)>=Kl)&&(P.preventDefault(),j.current={...H,moved:!0},Q(ee=>({...ee,offsetX:H.startOffsetX+q,offsetY:H.startOffsetY+J})))}function we(){j.current={mode:"idle",startDistance:0,startScale:(x==null?void 0:x.scale)??1,startOffsetX:(x==null?void 0:x.offsetX)??0,startOffsetY:(x==null?void 0:x.offsetY)??0,startTouchX:0,startTouchY:0,anchorX:0,anchorY:0,moved:!1}}return i.jsxs(i.Fragment,{children:[i.jsxs("section",{className:`conversation-branch-tree-pane${s?" conversation-branch-dialog":""}${k?" conversation-branch-dialog-mobile-bare":""}`,role:s?"dialog":void 0,"aria-modal":s?"true":void 0,"aria-label":s?c("conversation.branchTreeTitle"):void 0,children:[z?i.jsx("div",{className:"conversation-branch-tree-pane-header",children:i.jsxs("div",{className:"conversation-branch-tree-pane-topbar",children:[i.jsxs("div",{className:"conversation-branch-tree-pane-heading",children:[i.jsx("h3",{children:c("conversation.branchTreeMapTitle")}),i.jsx("p",{children:c("conversation.branchTreeMapDescription")})]}),s?i.jsx("button",{type:"button",className:"conversation-branch-pane-close","aria-label":c("common.close"),onClick:s,children:"x"}):null]})}):null,i.jsxs("div",{className:"conversation-branch-canvas-shell",children:[k?i.jsx("button",{type:"button",className:"conversation-branch-pane-close conversation-branch-mobile-floating-close","aria-label":c("common.close"),onClick:s,children:"x"}):null,k?null:i.jsx("div",{className:"conversation-branch-canvas-tip",children:c("conversation.branchTreePreviewDescription")}),i.jsx(hc,{layout:n,model:e,selectedSessionId:a,onSelectSession:u,onBackgroundClick:k?s:void 0,stageScale:M,desktopStageLayout:N,transform:D?x:null,isMobileViewport:D,viewportRef:r,onRegisterNodeElement:(P,H)=>{if(H){o.current.set(P,H);return}o.current.delete(P)},onViewportTouchStart:te,onViewportTouchMove:K,onViewportTouchEnd:we})]})]}),C&&A&&w&&S&&typeof document<"u"?Rt.createPortal(i.jsx("div",{className:"conversation-branch-preview-floating",style:uc(S,window.innerWidth,window.innerHeight),children:i.jsx(dc,{model:e,selectedSession:C,selectedTreeNode:A.node,previewEntry:w,onClose:()=>u(null),onOpenSession:t})}),document.body):null]})}function pc({open:e,navigationGroups:t,workspaceId:s,sessionId:n,onClose:r,onOpenSession:o}){const a=l.useMemo(()=>xi(t,s,n),[t,n,s]),[u,d]=l.useState(typeof window<"u"?window.innerWidth>ds:!0);return l.useEffect(()=>{if(typeof window>"u")return;function h(){d(window.innerWidth>ds)}return h(),window.addEventListener("resize",h),()=>window.removeEventListener("resize",h)},[]),!e||!a||typeof document>"u"?null:u?i.jsx(ps,{open:e,title:c("conversation.branchTreeMapTitle"),description:c("conversation.branchTreeMapDescription"),size:"regular",layout:"viewer",bodyClassName:"conversation-branch-modal-body",onClose:r,children:i.jsx(pr,{model:a,onOpenSession:o})}):Rt.createPortal(i.jsxs("div",{className:"workbench-modal-layer conversation-branch-panel-layer",children:[i.jsx("button",{type:"button",className:"workbench-modal-backdrop","aria-label":c("common.close"),onClick:r}),i.jsx(pr,{model:a,onOpenSession:o,onClose:r})]}),document.body)}function fc(e,t,s){if(!t)return null;const n=e.find(a=>a.workspace.id===t);if(!n)return null;const r=Bt([n]).filter(a=>!a.session.isArchived&&!dn(a.session)),o=r.findIndex(a=>a.session.sessionId===s);return o<0?null:r[o+1]??null}const fr=.6,Fs=.6,mr=8,mc=36,gc=48,vc=96;function lu(){const{sessionId:e="",workspaceId:t}=ra(),s=hn(),n=ht(),r=l.useMemo(()=>new URLSearchParams(s.search),[s.search]),o=Pc(r.get("toolPanel")),a=(t==null?void 0:t.trim())||null,u=l.useMemo(()=>yc(e,a,r),[a,r,e]),d=l.useMemo(()=>Dc(e,s.state),[s.state,e]),h=l.useMemo(()=>Hc(e,s.state),[s.state,e]);return u?i.jsx(Sc,{draft:u,navigate:n,initialToolPanel:o}):i.jsx(bc,{sessionId:e,bootstrapMessages:d,initialComposerModel:h.initialModel,initialComposerProviderConfigMode:h.providerConfigMode,initialComposerProviderPresetId:h.providerPresetId,initialToolPanel:o})}function bc(e){const{shellMode:t,navigationGroups:s,currentWorkspaceRef:n,currentTargetHostId:r}=vt(),o=ht(),a=l.useMemo(()=>Bt(s),[s]),u=l.useMemo(()=>{var p;return((p=a.find(g=>g.session.sessionId===e.sessionId))==null?void 0:p.session)??null},[a,e.sessionId]),d=!Ui(e.sessionId)&&e.bootstrapMessages.length===0&&a.length>0&&u===null,h=l.useMemo(()=>d?Oc({shellMode:t,navigationGroups:s,flattenedNavigationEntries:a,workspaceRef:n,targetHostId:r}):null,[r,n,a,d,s,t]);return l.useEffect(()=>{h&&o(h,{replace:!0})},[h,o]),h?null:i.jsx(wc,{...e})}function wc({sessionId:e,bootstrapMessages:t,initialComposerModel:s,initialComposerProviderConfigMode:n,initialComposerProviderPresetId:r,initialToolPanel:o}){var Ue,Ye,Ke,ut;const{shellMode:a,navigationGroups:u,requestNavigationRefresh:d,selectWorkspace:h,setSessionWorkspace:p,markNavigationSessionSeen:g,favoriteSessions:S,archiveSession:v,unarchiveSession:I,startDraftSession:m,upsertNavigationSession:y,currentWorkspaceRef:D,currentTargetHostId:B}=vt(),x=ht(),[R,j]=l.useState(!1),[M,N]=l.useState(!1),[C,A]=l.useState(null),[w,k]=l.useState(!1),[z,Q]=l.useState(!1),[te,K]=l.useState(!1),we=l.useMemo(()=>Bt(u),[u]),P=l.useMemo(()=>{var _;return((_=we.find(ie=>ie.session.sessionId===e))==null?void 0:_.session)??null},[we,e]),{showToast:H}=dt(),G=()=>{var ve;const _=(P==null?void 0:P.workspaceId)??((ve=u[0])==null?void 0:ve.workspace.id)??null,ie=(_?we.find(zt=>zt.workspace.id===_)??null:null)??we[0]??null;x(ie?$e(ie.workspace.id,ie.session.sessionId):_?St(_):a==="mobile"?Ir():"/landing",{replace:!0})},{session:q,capabilities:J,messages:oe,timelineItems:ee,permissionRequests:ne,queuedMessages:pe,contextUsage:O,historyState:U,runtimeInterruptSource:X,loadingOlderMessages:W,hasOlderMessages:he,connectionState:Ce,sending:He,replyingPermissionRequestId:Te,deletingQueueItemId:_e,steeringQueueItemId:F,forkDraft:b,setForkDraft:$,composerHasActiveRun:ue,composerCanInterrupt:ae,composerIsRunning:xe,canSteerQueuedMessage:Ee,hasPendingQueuedMessages:Z,reconnect:se,loadOlderMessages:Ie,retryMessage:qe,send:We,queue:Xe,interrupt:Ze,replyPermissionRequest:T,deleteQueuedMessage:L,steerQueuedMessage:fe}=bi({sessionId:e,targetHostId:B,externalSession:P,bootstrapMessages:t,onSeen:(_,ie)=>{g(_,ie)},onRequestNavigationRefresh:d,onUpsertNavigationSession:y,onNavigateToSession:(_,ie)=>{const ve=B?D:{hostId:"current",workspaceId:_};h(_,ve),x($e(_,ie,ve))},onBindSessionWorkspace:p,onResolveMissingSession:G,onForkSuccess:()=>{Ot("preview"),H({title:c("conversation.forkMessageSucceeded"),tone:"success"})},enableRuntimeErrorHandling:!0,enableCompletionHaptics:!0,enableThinkingPlaceholder:!0,enableForkTimelineSanitizer:!0}),re=a!=="mobile",le=qi(!re),ce=q??P??null,Le=(q==null?void 0:q.sessionIsolatedWorkspace)??(P==null?void 0:P.sessionIsolatedWorkspace)??null,me=ce?es(ce,Le):null,Ve=ce?br(ce,Le):null,Ae=Di({enabled:!re,initialPanel:o,workspaceId:Ve,suspendMainGesture:!re&&le.isVisible}),rt=l.useMemo(()=>new Set(S.map(_=>_.session.sessionId)),[S]),ze=l.useMemo(()=>u.map(_=>_.workspace),[u]),it=l.useMemo(()=>$r(u),[u]),pt=l.useMemo(()=>an(u),[u]),lt=l.useMemo(()=>Ai(u,me,rt),[rt,me,u]),Pe=l.useMemo(()=>_i(S,u),[S,u]);async function ct(_){await We(Ic(_.answers))}const[ft,Je]=l.useState([]),et=l.useMemo(()=>[...Pe,...lt],[Pe,lt]),Me=l.useMemo(()=>me?ze.find(_=>_.id===me)??null:null,[me,ze]),f=(me?pt[me]??null:null)??(Me?ln(Me):null),V=l.useMemo(()=>vs(u,me),[me,u]),Y=it.find(_=>_.workspace.id===me)??(V?{workspace:V.workspace,label:V.workspace.name,subtitle:V.workspace.path}:null),Se=l.useMemo(()=>fc(u,me,e),[me,u,e]),je=(q==null?void 0:q.provider)??(P==null?void 0:P.provider)??null,De=l.useMemo(()=>{var _;return Wt(((_=q??P)==null?void 0:_.title)??null,c("conversation.titleFallback"))},[P,q]),Re=re,Ne=l.useMemo(()=>{var ve;if(!Re)return null;if(lo(ce))return((ve=ce==null?void 0:ce.parallelGroup)==null?void 0:ve.groupId)??null;const _=ms(we);return Mc(_,e)},[ce,we,e,Re]),ke=re?null:Li(le.mainGestureHandlers,Ae.mainGestureHandlers);l.useEffect(()=>{const _=wr(et,e,ie=>ie.session.sessionId);_.length!==0&&Je(ie=>{const ve=new Set(ie);let zt=!1;for(const Mn of _)ve.has(Mn)||(ve.add(Mn),zt=!0);return zt?Array.from(ve):ie})},[et,e]);const tt=(ce==null?void 0:ce.workspaceId)??(P==null?void 0:P.workspaceId)??null,Is=l.useMemo(()=>xi(u,tt,e),[tt,u,e]),Ms=Zl(Is),Vt=!!(ce&&tt&&Ms),Tt=()=>{Q(!0)},bt=l.useMemo(()=>(V==null?void 0:V.sessions.filter(_=>Hr(_)))??[],[V]),Gt=l.useRef(null),Ct=l.useRef(null),wt=l.useRef(null),Et=l.useRef(null),[Xt,E]=l.useState(null),{composerPortalTarget:de}=qr();l.useEffect(()=>{Q(!1)},[e]),Ni(wt,Xt,!re,e),Oi(wt,Et,!re,e);function st(_,ie){h(_,ie),x(St(_,ie))}return re&&Ne?i.jsxs(i.Fragment,{children:[i.jsx(Ol,{groupId:Ne,currentSessionId:e}),i.jsx($s,{open:te,source:ce?{kind:"session",sessionId:e,workspaceId:ce.workspaceId,workspaceName:(f==null?void 0:f.displayName)??ce.workspaceId,sessionTitle:ce.title,defaultProvider:ce.provider}:null,onClose:()=>K(!1),onCreated:async _=>{_.members.forEach(ve=>{y(ve.session)}),Pn(_.group.id),await d();const ie=_.members.find(ve=>ve.session.sessionId===_.group.anchorSessionId)??_.members[0]??null;if(ie){const ve=es(ie.session,ie.sessionIsolatedWorkspace);h(ve),x($e(ve,ie.session.sessionId))}K(!1),H({title:c("shell.parallelCreateSucceeded"),tone:"success"})}})]}):i.jsxs(i.Fragment,{children:[i.jsxs("main",{ref:wt,className:"workbench-page conversation-page-shell mobile-page-fixed-root mobile-conversation-page","data-mobile-shell":!re,"data-preview-mode":re?void 0:le.displayMode,"data-preview-dragging":re?void 0:le.isDragging,"data-workspace-tone":(f==null?void 0:f.tone)??"root","data-worktree-depth":(f==null?void 0:f.depth)??0,"data-tool-panel-open":re?void 0:Ae.isOpen,style:{...re?{}:le.pageStyle,...Nt(f)??{}},children:[re?i.jsx(Br,{session:q??P,workspaceContext:f,actions:i.jsxs(i.Fragment,{children:[Vt?i.jsx(jc,{onOpenBranchTree:Tt}):null,ce?i.jsx("button",{type:"button",className:"conversation-header-ai-button","aria-label":c("shell.parallelCreateAction"),title:c("shell.parallelCreateAction"),onClick:()=>K(!0),children:i.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:i.jsx(Nc,{})})}):null,i.jsx(Kr,{session:q??P})]})}):null,re?null:i.jsx(Vr,{containerRef:Et,className:"mobile-conversation-page-header",gestureHandlers:ke??void 0,currentWorkspace:Y?{id:Y.workspace.id,name:Y.label,path:Y.subtitle}:ze[0]??null,workspaces:ze,workspaceOptions:it,onSelectWorkspace:st,heading:De.fullTitle,trailing:i.jsxs("div",{className:"mobile-conversation-toolbar-main",children:[i.jsx("span",{className:"mobile-conversation-toolbar-title",title:De.fullTitle,children:De.displayTitle}),i.jsx(ba,{session:q??P,onOpenBranchTree:Vt?Tt:void 0})]})}),re?null:i.jsx(Bi,{visible:!Ae.isOpen&&le.isVisible,widthPx:le.previewWidthPx,isDragging:le.isDragging,gestureHandlers:le.railGestureHandlers,activeSessionId:e,createSessionActionLabel:me&&je?c("shell.createSession"):void 0,favoriteItems:Pe,items:lt,expandedRootIds:ft,workspaceSectionLabel:(Y==null?void 0:Y.label)??c("shell.mobileConversationCurrentWorkspaceSection"),onCreateSession:me&&je?()=>{m(me,je)}:void 0,archiveCurrentActionLabel:c("shell.archiveCurrentSessionAction"),archiveFolderActionLabel:bt.length>0?c("shell.archiveFolderLabel"):void 0,onArchiveActiveSession:()=>{j(!0)},onOpenArchiveFolder:bt.length>0?()=>{N(!0)}:void 0,onToggleSubsessions:_=>{Je(ie=>ie.includes(_)?ie.filter(ve=>ve!==_):[...ie,_])},onActivate:_=>{le.closePreview(),h(_.workspace.id),x($e(_.workspace.id,_.session.sessionId))}}),i.jsx("div",{className:"mobile-conversation-stage",...ke??{},children:i.jsxs("div",{ref:Gt,className:"mobile-conversation-main",children:[i.jsx(pn,{connectionState:Ce,onReconnect:se}),i.jsx(_r,{requests:ne,replyingRequestId:Te,onReply:T}),i.jsx("div",{ref:Ct,className:"conversation-timeline-shell",children:i.jsx(cn,{sessionId:e,sessionSummary:q??P??null,workspaceId:Ve,workspacePath:(Me==null?void 0:Me.path)??null,items:ee,historyState:U,loadingOlderMessages:W,hasOlderMessages:he,provider:(q==null?void 0:q.provider)??null,interruptedSource:X,onLoadOlderMessages:Ie,onRetryMessage:qe,onSubmitStructuredQuestion:ct,onForkMessage:_=>{q&&($({sourceMessageId:_.id,sourceMessageSnapshot:{role:_.role,kind:_.kind??(_.role==="tool"?"tool_result":"text"),content:_.content},content:_.content,sourceProvider:q.provider,workspaceId:q.workspaceId,targetProvider:q.provider,targetModel:null,targetProviderConfigMode:q.providerConfigMode??"global-default",targetProviderPresetId:q.providerPresetId??null}),vi())}})}),i.jsx(fa,{containerRef:Ct,session:q??P??null,currentCapabilities:J}),i.jsx(Qr,{items:pe,deletingQueueItemId:_e,steeringQueueItemId:F,canSteer:Ee,onDelete:L,onSteer:fe}),Ae.isOpen?null:i.jsx(un,{capabilities:J,draftStorageId:e,initialModel:s,workspaceId:((Ue=q??P)==null?void 0:Ue.workspaceId)??null,initialProviderConfigMode:n??((Ye=q??P)==null?void 0:Ye.providerConfigMode)??"global-default",initialProviderPresetId:r??((Ke=q??P)==null?void 0:Ke.providerPresetId)??null,forkDraft:b,onClearForkDraft:()=>$(null),onForkDraftChange:_=>$(_),panelRef:re?void 0:E,portalContainer:re?null:de,hasActiveRun:ue,contextUsage:O,taskProvider:((ut=q??P)==null?void 0:ut.provider)??null,taskMessages:oe,hasPendingQueuedMessages:Z,canInterrupt:ae,isSubmitting:He,isRunning:xe,onInterrupt:Ze,onSend:We,onQueueSend:Xe})]})}),!re&&Ve?i.jsx(Hi,{activePanel:Ae.activePanel,open:Ae.isOpen,sessionId:e,workspaceId:Ve,navigationGroups:u,onClose:()=>{Ae.closePanel()},onSelectPanel:_=>{Ae.selectPanel(_)},onSelectPanelBySwipe:_=>{if(_===null){Ae.closePanel();return}Ae.selectPanel(_)}}):null]}),i.jsx(pc,{open:z,navigationGroups:u,workspaceId:tt,sessionId:e,onClose:()=>Q(!1),onOpenSession:_=>{Q(!1),h(_.workspaceId),Ot("preview"),x($e(_.workspaceId,_.sessionId))}}),i.jsx(_c,{open:R,busy:w,onClose:()=>{w||j(!1)},onConfirm:async()=>{if(!w){k(!0);try{if(await v(e),j(!1),H({title:c("shell.archiveAdded"),tone:"success"}),me){if(h(me),Ot("preview"),Se){x($e(Se.workspace.id,Se.session.sessionId));return}x(St(me));return}x("/workspaces")}catch(_){H({title:_ instanceof Error?_.message:c("shell.navigationLoadFailed"),tone:"error"})}finally{k(!1)}}}}),i.jsx(Wi,{open:M,workspaceName:(V==null?void 0:V.workspace.name)??null,sessions:bt,restoringSessionId:C,onClose:()=>{C||N(!1)},onRestore:async _=>{A(_);try{await I(_),H({title:c("shell.archiveRestored"),tone:"success"})}catch(ie){H({title:ie instanceof Error?ie.message:c("shell.navigationLoadFailed"),tone:"error"})}finally{A(null)}}}),Re?i.jsx($s,{open:te,source:ce?{kind:"session",sessionId:e,workspaceId:ce.workspaceId,workspaceName:(f==null?void 0:f.displayName)??ce.workspaceId,sessionTitle:ce.title,defaultProvider:ce.provider}:null,onClose:()=>K(!1),onCreated:async _=>{_.members.forEach(ve=>{y(ve.session)}),Pn(_.group.id),await d();const ie=_.members.find(ve=>ve.session.sessionId===_.group.anchorSessionId)??_.members[0]??null;if(ie){const ve=es(ie.session,ie.sessionIsolatedWorkspace);h(ve),x($e(ve,ie.session.sessionId))}K(!1),H({title:c("shell.parallelCreateSucceeded"),tone:"success"})}}):null]})}function Ic(e){return Object.entries(e).map(([,t])=>t.filter(Boolean).join(" / ")).filter(Boolean).join(`
9
+ `)}function Mc(e,t){const s=t.trim();if(!s)return null;for(const n of e){const r=Ci(n,s,null);if(r)return r}return null}function Ci(e,t,s){var r,o;const n=((o=(r=e.item.session.parallelGroup)==null?void 0:r.groupId)==null?void 0:o.trim())||s;if(e.item.session.sessionId===t)return n;for(const a of gs(e)){const u=Ci(a,t,n);if(u)return u}return null}function Sc({draft:e,navigate:t,initialToolPanel:s}){const{shellMode:n,navigationGroups:r,requestNavigationRefresh:o,selectWorkspace:a,setSessionWorkspace:u,upsertNavigationSession:d,favoriteSessions:h,unarchiveSession:p,startDraftSession:g}=vt(),[S,v]=l.useState(!1),[I,m]=l.useState([]),y=l.useMemo(()=>_t(e.provider),[e.provider]),[D,B]=l.useState(y),x=n!=="mobile",{showToast:R}=dt(),j=l.useMemo(()=>xc(e),[e]),M=qi(!x),N=Di({enabled:!x,initialPanel:s,sessionId:e.sessionId,workspaceId:e.workspaceId,suspendMainGesture:!x&&M.isVisible}),C=l.useMemo(()=>new Set(h.map(F=>F.session.sessionId)),[h]),A=l.useMemo(()=>r.map(F=>F.workspace),[r]),w=l.useMemo(()=>$r(r),[r]),k=l.useMemo(()=>an(r),[r]),z=l.useMemo(()=>A.find(F=>F.id===e.workspaceId)??null,[e.workspaceId,A]),Q=k[e.workspaceId]??(z?ln(z):null),te=l.useMemo(()=>Wt(j.title??null,c("conversation.titleFallback")),[j]),K=l.useMemo(()=>Ai(r,e.workspaceId,C),[e.workspaceId,C,r]),we=l.useMemo(()=>_i(h,r),[h,r]),[P,H]=l.useState([]),G=l.useMemo(()=>[...we,...K],[we,K]),q=l.useMemo(()=>vs(r,e.workspaceId),[e.workspaceId,r]),J=l.useMemo(()=>(q==null?void 0:q.sessions.filter(F=>Hr(F)))??[],[q]),oe=w.find(F=>F.workspace.id===e.workspaceId)??(q?{workspace:q.workspace,label:q.workspace.name,subtitle:q.workspace.path}:null),ee=x?null:Li(M.mainGestureHandlers,N.mainGestureHandlers),[ne,pe]=l.useState(!1),[O,U]=l.useState(null),X=l.useRef(null),W=l.useRef(null),he=l.useRef(null),[Ce,He]=l.useState(null),{composerPortalTarget:Te}=qr();l.useEffect(()=>{const F=wr(G,e.sessionId,b=>b.session.sessionId);F.length!==0&&H(b=>{const $=new Set(b);let ue=!1;for(const ae of F)$.has(ae)||($.add(ae),ue=!0);return ue?Array.from($):b})},[e.sessionId,G]),l.useEffect(()=>(u(e.sessionId,e.workspaceId),()=>{u(e.sessionId,null)}),[e.sessionId,e.workspaceId,u]),l.useEffect(()=>{let F=!1;return B(y),Mr(e.provider,e.workspaceId).then(b=>{F||B(b)}).catch(()=>{}),()=>{F=!0}},[e.provider,e.workspaceId,y]),Ni(W,Ce,!x,e.sessionId),Oi(W,he,!x,e.sessionId);function _e(F,b){a(F,b),t(St(F,b))}return i.jsx(i.Fragment,{children:i.jsxs("main",{ref:W,className:"workbench-page conversation-page-shell mobile-page-fixed-root mobile-conversation-page","data-mobile-shell":!x,"data-preview-mode":x?void 0:M.displayMode,"data-preview-dragging":x?void 0:M.isDragging,"data-workspace-tone":(Q==null?void 0:Q.tone)??"root","data-worktree-depth":(Q==null?void 0:Q.depth)??0,"data-tool-panel-open":x?void 0:N.isOpen,style:{...x?{}:M.pageStyle,...Nt(Q)??{}},children:[x?i.jsx(Br,{session:j,workspaceContext:Q}):null,x?null:i.jsx(Vr,{containerRef:he,className:"mobile-conversation-page-header",gestureHandlers:ee??void 0,currentWorkspace:oe?{id:oe.workspace.id,name:oe.label,path:oe.subtitle}:A[0]??null,workspaces:A,workspaceOptions:w,onSelectWorkspace:_e,heading:te.fullTitle,trailing:i.jsx("span",{className:"mobile-conversation-toolbar-title",title:te.fullTitle,children:te.displayTitle})}),x?null:i.jsx(Bi,{visible:!N.isOpen&&M.isVisible,widthPx:M.previewWidthPx,isDragging:M.isDragging,gestureHandlers:M.railGestureHandlers,activeSessionId:e.sessionId,createSessionActionLabel:c("shell.createSession"),favoriteItems:we,items:K,expandedRootIds:P,workspaceSectionLabel:(oe==null?void 0:oe.label)??c("shell.mobileConversationCurrentWorkspaceSection"),onCreateSession:()=>{g(e.workspaceId,e.provider)},archiveFolderActionLabel:J.length>0?c("shell.archiveFolderLabel"):void 0,onOpenArchiveFolder:J.length>0?()=>{pe(!0)}:void 0,onToggleSubsessions:F=>{H(b=>b.includes(F)?b.filter($=>$!==F):[...b,F])},onActivate:F=>{M.closePreview(),a(F.workspace.id),t($e(F.workspace.id,F.session.sessionId))}}),i.jsx("div",{className:"mobile-conversation-stage",...ee??{},children:i.jsxs("div",{ref:X,className:"mobile-conversation-main",children:[i.jsx(pn,{connectionState:"closed",onReconnect:()=>{}}),i.jsx("div",{className:"conversation-timeline-shell",children:i.jsx(cn,{sessionId:e.sessionId,sessionSummary:null,workspaceId:e.workspaceId,workspacePath:(z==null?void 0:z.path)??null,items:Er({messages:I}),historyState:"ready",loadingOlderMessages:!1,hasOlderMessages:!1,provider:e.provider,onLoadOlderMessages:()=>{},onRetryMessage:()=>{}})}),N.isOpen?null:i.jsx(un,{capabilities:D,draftStorageId:e.sessionId,workspaceId:e.workspaceId,panelRef:x?void 0:He,portalContainer:x?null:Te,contextUsage:null,taskProvider:e.provider,taskMessages:I,isSubmitting:S,isRunning:!1,onSend:async(F,b)=>{var ae,xe,Ee,Z;const $=Bc();m(se=>[...se,Rr(e.sessionId,F,$,(b==null?void 0:b.attachmentMeta)??[],(b==null?void 0:b.attachments)??[])]),v(!0);const ue=performance.now();be("session_send.start_live.client_start",{draftSessionId:e.sessionId,workspaceId:e.workspaceId,provider:e.provider,clientRequestId:$,contentLength:F.length});try{const se=await yr({workspaceId:e.workspaceId,provider:e.provider,content:F,clientRequestId:$,model:(b==null?void 0:b.model)??null,reasoningLevel:(b==null?void 0:b.reasoningLevel)??null,permissionMode:mt(),attachments:(b==null?void 0:b.attachments)??[],providerConfigMode:(b==null?void 0:b.providerConfigMode)??"global-default",providerPresetId:(b==null?void 0:b.providerPresetId)??null});be("session_send.start_live.client_response",{draftSessionId:e.sessionId,sessionId:se.sessionId,workspaceId:((ae=se.session)==null?void 0:ae.workspaceId)??e.workspaceId,provider:se.provider,clientRequestId:$,durationMs:Math.round(performance.now()-ue),returnedMessageId:((xe=se.message)==null?void 0:xe.messageId)??null}),se.session&&d(se.session);const Ie=((Z=(Ee=se.session)==null?void 0:Ee.workspaceId)==null?void 0:Z.trim())||e.workspaceId;u(se.sessionId,Ie),Ot("preview"),t($e(Ie,se.sessionId),{replace:!0,state:{composer:{sessionId:se.sessionId,initialModel:(b==null?void 0:b.model)??null,providerConfigMode:(b==null?void 0:b.providerConfigMode)??"global-default",providerPresetId:(b==null?void 0:b.providerPresetId)??null},bootstrap:{sessionId:se.sessionId,messages:[Lc({created:se,provider:e.provider,content:F,clientRequestId:$,attachments:(b==null?void 0:b.attachmentMeta)??[]})]}}}),o()}catch(se){throw be("session_send.start_live.client_error",{draftSessionId:e.sessionId,workspaceId:e.workspaceId,provider:e.provider,clientRequestId:$,durationMs:Math.round(performance.now()-ue),error:se instanceof Error?se.message:String(se)}),m(Ie=>Tr(Ie,$)),se}finally{v(!1)}}})]})}),x?null:i.jsx(Hi,{activePanel:N.activePanel,open:N.isOpen,sessionId:e.sessionId,workspaceId:e.workspaceId,navigationGroups:r,onClose:()=>{N.closePanel()},onSelectPanel:F=>{N.selectPanel(F)},onSelectPanelBySwipe:F=>{if(F===null){N.closePanel();return}N.selectPanel(F)}}),i.jsx(Wi,{open:ne,workspaceName:(q==null?void 0:q.workspace.name)??null,sessions:J,restoringSessionId:O,onClose:()=>{O||pe(!1)},onRestore:async F=>{U(F);try{await p(F),R({title:c("shell.archiveRestored"),tone:"success"})}catch(b){R({title:b instanceof Error?b.message:c("shell.navigationLoadFailed"),tone:"error"})}finally{U(null)}}})]})})}function yc(e,t,s,n=null){var a,u;if(!Ui(e))return null;const r=t??((a=s.get("workspaceId"))==null?void 0:a.trim())??null,o=((u=s.get("provider"))==null?void 0:u.trim())??n??null;return!r||!Ar(o)?null:{sessionId:e,workspaceId:r,provider:o}}function xc(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:Jo(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 Ei(e){const t=new Map(e.map(r=>[r.sessionId,r])),s=new Map,n=r=>{const o=s.get(r.sessionId);if(typeof o=="boolean")return o;if(r.isArchived)return s.set(r.sessionId,!1),!1;const a=co(r,{mode:"mobile"});if(!a)return s.set(r.sessionId,!0),!0;const u=t.get(a);if(!u)return s.set(r.sessionId,!0),!0;if(u.isArchived){const h=!dn(r);return s.set(r.sessionId,h),h}const d=n(u);return s.set(r.sessionId,d),d};return e.filter(r=>n(r))}function Ai(e,t,s){if(!t)return[];const n=vs(e,t);if(!n)return[];const r=Ei(n.sessions).map(a=>({session:a,workspace:n.workspace}));return ms(r,{mode:"mobile"}).filter(a=>!s.has(a.item.session.sessionId)&&!ro(a.children,u=>s.has(u.session.sessionId)))}function _i(e,t){return e.filter(s=>!dn(s.session)).flatMap(s=>{const n=vs(t,s.workspace.id);if(!n)return[];const r=ms(Ei(n.sessions).map(a=>({session:a,workspace:n.workspace})),{mode:"mobile"}),o=ji(r,s.session.sessionId);return o?[o]:[]})}function ji(e,t){for(const s of e){if(s.item.session.sessionId===t)return s;const n=ji(s.children,t);if(n)return n}return null}function Ni(e,t,s,n){l.useEffect(()=>{const r=e.current;if(!s||!r){r&&r.style.removeProperty("--mobile-conversation-composer-height");return}if(!t){r.style.removeProperty("--mobile-conversation-composer-height");return}const o=r,a=t;function u(){!e.current||!a.isConnected||o.style.setProperty("--mobile-conversation-composer-height",`${a.offsetHeight}px`)}u();const d=typeof ResizeObserver<"u"?new ResizeObserver(u):null;return d==null||d.observe(a),window.addEventListener("resize",u),()=>{d==null||d.disconnect(),window.removeEventListener("resize",u),r.style.removeProperty("--mobile-conversation-composer-height")}},[t,s,n,e])}function Oi(e,t,s,n){l.useEffect(()=>{const r=e.current,o=t.current;if(!s||!r){r&&r.style.removeProperty("--mobile-conversation-page-header-height");return}if(!o){r.style.removeProperty("--mobile-conversation-page-header-height");return}const a=r,u=o;function d(){!e.current||!u.isConnected||a.style.setProperty("--mobile-conversation-page-header-height",`${u.offsetHeight}px`)}d();const h=typeof ResizeObserver<"u"?new ResizeObserver(d):null;return h==null||h.observe(u),window.addEventListener("resize",d),()=>{h==null||h.disconnect(),window.removeEventListener("resize",d),r.style.removeProperty("--mobile-conversation-page-header-height")}},[s,t,n,e])}function Pc(e){return e==="files"||e==="git"||e==="processes"?e:null}function Li(...e){const t=e.filter(Boolean);return{onTouchStart(s){t.forEach(n=>n.onTouchStart(s))},onTouchMove(s){t.forEach(n=>n.onTouchMove(s))},onTouchEnd(s){t.forEach(n=>n.onTouchEnd(s))},onTouchCancel(s){t.forEach(n=>n.onTouchCancel(s))}}}function Di(e){const t=hn(),s=ht(),n=on(),r=Ut(),o=l.useRef(null),a=l.useRef(!1),[u,d]=l.useState(()=>e.initialPanel??_n()),h=e.initialPanel??u,p=e.enabled&&e.workspaceId!==null&&e.initialPanel!==null;l.useEffect(()=>{if(!e.enabled){o.current=null,a.current=!1;return}const R=e.initialPanel??_n();d(R),jn(R)},[e.enabled,e.initialPanel]),l.useEffect(()=>{if(!p){a.current=!1;return}if(r.platform!=="android"||!Rc(t.state)||a.current||typeof window>"u"||window.location.pathname!==t.pathname)return;const R=new URLSearchParams(t.search);R.delete("toolPanel");const j=R.toString(),M=`${t.pathname}${j?`?${j}`:""}${t.hash}`,N=`${t.pathname}${t.search}${t.hash}`;window.history.replaceState(window.history.state,"",M),window.history.pushState(window.history.state,"",N),a.current=!0},[p,t.hash,t.pathname,t.search,t.state,r.platform]);function g(R,j){const M=new URLSearchParams(t.search);R?(M.set("toolPanel",R),d(R),jn(R)):M.delete("toolPanel");const N=M.toString();s({pathname:t.pathname,search:N?`?${N}`:""},{replace:(j==null?void 0:j.replace)??!1})}function S(R){n.trigger("selection"),g(R,{replace:p})}function v(){if(p){if(n.trigger("gesture"),a.current&&typeof window<"u"){a.current=!1,window.history.back();return}g(null,{replace:!0})}}function I(R){if(!e.enabled||!e.workspaceId)return;const j=R??h;n.trigger("gesture"),g(j)}function m(R){if(!e.enabled||R.changedTouches.length!==1){o.current=null;return}if(kc(R.target)){o.current=null;return}const j=R.changedTouches[0];o.current={x:j.clientX,y:j.clientY}}function y(R){const j=o.current;if(o.current=null,!j||R.changedTouches.length!==1||p||e.suspendMainGesture)return;const M=R.changedTouches[0],N=M.clientX-j.x,C=M.clientY-j.y;N>-56||Math.abs(N)<=Math.abs(C)*1.15||I()}function D(R){const j=o.current;if(o.current=null,!j||R.changedTouches.length!==1||!p)return;const M=R.changedTouches[0],N=M.clientX-j.x,C=M.clientY-j.y;N<56||Math.abs(N)<=Math.abs(C)*1.15||v()}return{activePanel:h,closePanel:v,isOpen:p,mainGestureHandlers:{onTouchStart:m,onTouchMove:()=>{},onTouchEnd:y,onTouchCancel:()=>{o.current=null}},openPanel:I,panelGestureHandlers:{onTouchStart:m,onTouchMove:()=>{},onTouchEnd:D,onTouchCancel:()=>{o.current=null}},selectPanel:S}}function Hi(e){const t=l.useRef(null);if(!e.open)return null;function s(r){if(r.changedTouches.length!==1){t.current=null;return}if(Tc(r.target)){t.current=null;return}const o=r.changedTouches[0];t.current={x:o.clientX,y:o.clientY}}function n(r){const o=t.current;if(t.current=null,!o||r.changedTouches.length!==1)return;const a=r.changedTouches[0],u=a.clientX-o.x,d=a.clientY-o.y;if(Math.abs(u)<56||Math.abs(u)<=Math.abs(d)*1.15)return;const h=["files","git","processes"],p=h.indexOf(e.activePanel);if(u<0){e.onSelectPanelBySwipe(h[Math.min(h.length-1,p+1)]??e.activePanel);return}if(p===0){e.onSelectPanelBySwipe(null);return}e.onSelectPanelBySwipe(h[Math.max(0,p-1)]??e.activePanel)}return i.jsxs("section",{className:"mobile-conversation-tool-panel","data-panel":e.activePanel,onTouchStartCapture:s,onTouchEndCapture:n,onTouchCancel:()=>{t.current=null},children:[i.jsxs("header",{className:"mobile-conversation-tool-panel-header","data-preview-gesture":"ignore",children:[i.jsx("button",{type:"button",className:"mobile-conversation-tool-panel-back","aria-label":c("shell.mobileConversationToolCloseAction"),title:c("shell.mobileConversationToolCloseAction"),onClick:e.onClose,children:i.jsx("span",{"aria-hidden":"true",children:"‹"})}),i.jsx("div",{className:"mobile-conversation-tool-panel-tabs",role:"tablist","aria-label":c("shell.mobileConversationToolTabsLabel"),children:["files","git","processes"].map(r=>i.jsx("button",{type:"button",role:"tab","aria-selected":e.activePanel===r,className:"mobile-conversation-tool-panel-tab",onClick:()=>{e.onSelectPanel(r)},children:r==="files"?c("shell.filesEntry"):r==="git"?c("shell.gitEntry"):c("shell.mobileConversationToolProcessesTab")},r))})]}),i.jsx("div",{className:"mobile-conversation-tool-panel-body",children:e.activePanel==="files"?i.jsx(Fr,{className:"mobile-conversation-tool-surface",hideHeading:!0,sessionId:e.sessionId,workspaceId:e.workspaceId}):e.activePanel==="git"?i.jsx(Wr,{className:"mobile-conversation-tool-surface",panelActive:!0,workspaceId:e.workspaceId}):i.jsx(Ur,{className:"mobile-conversation-tool-surface mobile-tool-native-panel mobile-tool-process-panel",currentWorkspaceId:e.workspaceId,navigationGroups:e.navigationGroups})})]})}function Rc(e){return typeof e=="object"&&e!==null&&"mobileToolPanelRouteRedirect"in e&&e.mobileToolPanelRouteRedirect===!0}function kc(e){return e instanceof Element?!!e.closest("input, textarea, select, option, label, button, a, [contenteditable='true'], [data-preview-gesture='ignore']"):!1}function Tc(e){return e instanceof Element?!!e.closest("input, textarea, select, option, [contenteditable='true']"):!1}function qi(e){const t=on(),[s,n]=l.useState(()=>e?Ps():"immersive"),[r,o]=l.useState(()=>gr()),[a,u]=l.useState(()=>e&&Ps()==="preview"?"default":"closed"),d=l.useRef(a),h=l.useRef(null);l.useEffect(()=>{d.current=a},[a]),l.useEffect(()=>{if(!e){h.current=null,d.current="closed",u("closed"),n("immersive");return}const C=Ps();n(C),u(C==="preview"?"default":"closed")},[e]),l.useEffect(()=>{e&&Ot(s)},[e,s]),l.useEffect(()=>{if(typeof window>"u")return;function C(){o(gr())}return C(),window.addEventListener("resize",C),()=>{window.removeEventListener("resize",C)}},[]);function p(C){d.current=C,u(C)}function g(C="default"){p(C),n("preview")}function S(){p("closed"),n("immersive")}function v(){p("expanded"),n("preview")}function I(){if(d.current!=="closed"){t.trigger("gesture"),S();return}t.trigger("gesture"),g()}function m(C,A){const w=A.touches[0]??A.changedTouches[0];if(!e||!w){h.current=null;return}if(Ec(A.target)){h.current=null;return}if(C==="main"){if(d.current==="closed"&&w.clientX>vc){h.current=null;return}}else if(d.current==="closed"){h.current=null;return}h.current={source:C,intent:C==="rail"?"rail":d.current==="closed"?"open":"close",startX:w.clientX,startY:w.clientY,lastX:w.clientX,lastY:w.clientY,horizontalLocked:!1}}function y(C){const A=h.current,w=C.touches[0];if(!e||!A||!w)return;const k=w.clientX-A.startX,z=w.clientY-A.startY;if(A.lastX=w.clientX,A.lastY=w.clientY,!A.horizontalLocked){if(Math.abs(k)<mr&&Math.abs(z)<mr)return;if(Math.abs(k)<=Math.abs(z)){h.current=null;return}if(A.intent==="open"&&k<=0){h.current=null;return}if(A.intent==="close"&&k>=0){h.current=null;return}A.horizontalLocked=!0}}function D(C){var z;const A=h.current;if(h.current=null,!(A!=null&&A.horizontalLocked))return;const w=(z=C==null?void 0:C.changedTouches)==null?void 0:z[0];w&&(A.lastX=w.clientX,A.lastY=w.clientY);const k=A.lastX-A.startX;if(A.intent==="open"){k>=mc&&(t.trigger("gesture"),g("default"));return}if(A.intent==="close"){k<=-34&&(t.trigger("gesture"),S());return}if(k<=-34){t.trigger("gesture"),S();return}k>=gc&&d.current==="default"&&(t.trigger("gesture"),v())}const B=a==="expanded"?Fs:a==="default"?fr:0,x=Math.round(r*B*100)/100,R=B===0?0:B/Fs,j={"--mobile-conversation-preview-default-width":`${Math.round(r*fr*100)/100}px`,"--mobile-conversation-preview-max-width":`${Math.round(r*Fs*100)/100}px`,"--mobile-conversation-preview-width":`${x}px`,"--mobile-conversation-preview-progress":R.toFixed(4)};return{closePreview:S,displayMode:a==="closed"?"immersive":"preview",isDragging:!1,isVisible:a!=="closed",mainGestureHandlers:{onTouchStart:C=>m("main",C),onTouchMove:y,onTouchEnd:D,onTouchCancel:D},pageStyle:j,previewWidthPx:x,railGestureHandlers:{onTouchStart:C=>m("rail",C),onTouchMove:y,onTouchEnd:D,onTouchCancel:D},togglePreview:I}}function Bi({visible:e,widthPx:t,isDragging:s,gestureHandlers:n,activeSessionId:r,createSessionActionLabel:o,favoriteItems:a,items:u,expandedRootIds:d,workspaceSectionLabel:h,onCreateSession:p,archiveCurrentActionLabel:g,archiveFolderActionLabel:S,onArchiveActiveSession:v,onOpenArchiveFolder:I,onToggleSubsessions:m,onActivate:y}){if(!e)return null;function D(B,x){const{workspaceName:R,ancestorExpanded:j=!1,ancestorHasNextSiblings:M=[],hasNextSibling:N=!1,isFirstSibling:C=!1}=x??{},A=B.item.session.sessionId,w=B.children,k=B.depth===0&&w.length>0,z=j||k&&d.includes(A),Q=B.depth>0?[...M,N]:[...M];return i.jsxs("div",{className:"mobile-conversation-preview-tree-node",children:[i.jsxs("div",{className:"mobile-conversation-preview-tree-row",style:{"--mobile-preview-tree-depth":B.depth},children:[B.depth>0?i.jsxs("div",{className:"mobile-conversation-preview-guides","aria-hidden":"true",children:[M.map((te,K)=>te?i.jsx("span",{className:"mobile-conversation-preview-guide-column",style:{"--mobile-preview-tree-level":K+1}},`${A}:ancestor:${K}`):null),i.jsx("span",{className:"mobile-conversation-preview-guide-branch","data-continue":N,"data-first":C,style:{"--mobile-preview-tree-level":B.depth},children:i.jsx("span",{className:"mobile-conversation-preview-guide-branch-horizontal"})})]}):null,i.jsx(Cc,{entry:B.item,activeSessionId:r,hasSubsessions:k,subsessionsExpanded:z,workspaceName:R,onToggleSubsessions:k?()=>{m(A)}:void 0,onActivate:y})]}),w.length>0&&z?i.jsx("div",{className:"mobile-conversation-preview-children",children:w.map((te,K)=>D(te,{workspaceName:R,ancestorExpanded:!0,ancestorHasNextSiblings:Q,hasNextSibling:K<w.length-1,isFirstSibling:K===0}))}):null]},`${B.item.workspace.id}:${A}`)}return i.jsxs("aside",{className:"mobile-conversation-preview-rail terminal-mobile-list-rail surface-card","data-dragging":s,style:{width:`${t}px`,maxWidth:`${t}px`},...n,children:[o&&p?i.jsx("div",{className:"mobile-conversation-preview-topbar terminal-mobile-list-footer",children:i.jsxs("button",{type:"button",className:"mobile-conversation-preview-create-button workbench-import-toggle terminal-mobile-list-create",onClick:p,children:[i.jsx("span",{className:"workbench-import-toggle-symbol","aria-hidden":"true",children:"+"}),i.jsx("span",{className:"workbench-import-toggle-label",children:o})]})}):null,i.jsxs("div",{className:"mobile-conversation-preview-body terminal-mobile-list-body",children:[a.length>0?i.jsxs("section",{className:"mobile-conversation-preview-group mobile-conversation-preview-list-favorites terminal-mobile-list-group terminal-mobile-list-group-pinned",children:[i.jsxs("div",{className:"mobile-conversation-preview-group-heading terminal-mobile-list-group-heading",children:[i.jsx("span",{children:c("shell.favoriteSectionTitle")}),i.jsx("span",{className:"workbench-section-counter",children:a.length})]}),i.jsx("div",{className:"mobile-conversation-preview-list mobile-conversation-preview-list-static terminal-mobile-session-list",children:a.map(B=>i.jsx("div",{children:D(B,{workspaceName:B.item.workspace.name})},`favorite:${B.item.workspace.id}:${B.item.session.sessionId}`))})]}):null,i.jsxs("section",{className:"mobile-conversation-preview-group mobile-conversation-preview-group-workspace terminal-mobile-list-group terminal-mobile-list-group-workspace",children:[i.jsxs("div",{className:"mobile-conversation-preview-group-heading terminal-mobile-list-group-heading",children:[i.jsx("span",{children:h}),i.jsx("span",{className:"workbench-section-counter",children:u.length})]}),u.length===0?i.jsx("div",{className:"workbench-session-empty",children:c("shell.emptyWorkspaceSessions")}):i.jsx("div",{className:"mobile-conversation-preview-list terminal-mobile-session-list","data-preview-gesture":"ignore",children:u.map(B=>D(B))})]})]}),g&&v||S&&I?i.jsxs("div",{className:"mobile-conversation-preview-actions terminal-mobile-list-footer",children:[g&&v?i.jsx("button",{type:"button",className:"mobile-conversation-preview-archive-button workbench-import-toggle",onClick:()=>{v()},children:g}):null,S&&I?i.jsx("button",{type:"button",className:"mobile-conversation-preview-archive-button workbench-import-toggle",onClick:I,children:S}):null]}):null]})}function Cc({entry:e,activeSessionId:t,hasSubsessions:s=!1,subsessionsExpanded:n=!1,onActivate:r,onToggleSubsessions:o,workspaceName:a}){const u=e.session.sessionId===t;return i.jsxs("article",{className:"mobile-conversation-preview-entry terminal-mobile-session-card","data-active":u,children:[s?i.jsx("button",{type:"button",className:"mobile-conversation-preview-toggle","aria-label":n?c("shell.subagentCollapse"):c("shell.subagentExpand"),title:n?c("shell.subagentCollapse"):c("shell.subagentExpand"),"aria-expanded":n,onClick:d=>{d.stopPropagation(),o==null||o()},children:i.jsx("span",{className:vr(e.session,{isActive:u,hasSubsessions:s}),"aria-hidden":"true"})}):i.jsx("span",{className:vr(e.session,{isActive:u,hasSubsessions:s}),"aria-hidden":"true"}),i.jsx("button",{type:"button",className:"mobile-conversation-preview-item terminal-mobile-session-primary","data-active":u,onClick:()=>r(e),children:i.jsxs("div",{className:"mobile-conversation-preview-item-body",children:[i.jsx("span",{className:"mobile-conversation-preview-item-title",children:e.session.title||c("common.unknown")}),i.jsx("span",{className:"mobile-conversation-preview-item-meta",children:Fi(e.session,a)})]})})]})}function gr(){return typeof window>"u"?390:Math.max(window.innerWidth||390,320)}function Ec(e){return e instanceof Element?!!e.closest("input, textarea, select, option, label, [contenteditable='true'], [data-preview-gesture='ignore']"):!1}function vr(e,t){const s=na("mobile-conversation-preview-indicator",e,{hasSubagents:t.hasSubsessions});return s.endsWith(" is-idle")&&t.isActive?"mobile-conversation-preview-indicator is-active":s}function Fi(e,t){const s=Dr(e);return[t??null,Dt(e.provider),Ac(e.lastMessageAt??e.updatedAt),s].filter(Boolean).join(" · ")}function Ac(e){return e?new Date(e).toLocaleString(void 0,{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit"}):c("common.unknown")}function _c({open:e,busy:t,onClose:s,onConfirm:n}){return i.jsx(ps,{open:e,title:c("shell.archiveConfirmTitle"),description:c("shell.archiveConfirmDescription"),size:"narrow",layout:"confirm",dismissible:!t,showCloseButton:!1,footer:i.jsxs(fs,{children:[i.jsx("button",{type:"button",className:"secondary-button",disabled:t,onClick:s,children:c("common.cancel")}),i.jsx("button",{type:"button",className:"secondary-button workbench-danger-button",disabled:t,onClick:()=>{n()},children:c("shell.archiveAction")})]}),onClose:s,children:i.jsx(i.Fragment,{})})}function Wi({open:e,workspaceName:t,sessions:s,restoringSessionId:n,onClose:r,onRestore:o}){const{searchOpen:a,searchKeyword:u,filteredSessions:d,summaryLoading:h,summaryError:p,summaryBySessionId:g,setSearchKeyword:S,toggleSearch:v}=ea(e,s),I=l.useId(),m=s.length>0&&u.trim().length>0?c("shell.archiveSearchEmpty"):c("shell.archiveEmpty");return i.jsxs(ps,{open:e,title:c("shell.archiveModalTitle"),description:t?`${t} · ${c("shell.archiveModalDescription")}`:c("shell.archiveModalDescription"),size:"regular",layout:"list",dismissible:!n,headerActions:s.length>0?i.jsx("button",{type:"button",className:"secondary-button","aria-pressed":a,onClick:v,children:c("shell.archiveSearchAction")}):void 0,showCloseButton:!1,onClose:r,children:[a?i.jsxs("div",{className:"workbench-archive-search-panel",children:[i.jsx(Jt,{label:c("shell.archiveSearchLabel"),htmlFor:I,children:i.jsx("input",{id:I,type:"text",value:u,placeholder:c("shell.archiveSearchPlaceholder"),autoFocus:!0,onChange:y=>S(y.target.value)})}),h?i.jsx("p",{className:"workbench-archive-search-status",children:c("shell.archiveSearchSummaryLoading")}):null,p?i.jsx("p",{className:"workbench-archive-search-status status-text","data-tone":"warning",children:p}):null]}):null,d.length>0?i.jsx(io,{className:"workbench-archive-list",children:d.map(y=>{var R;const D=Wt(y.title,c("common.unknown")),B=((R=g[y.sessionId])==null?void 0:R.trim())??"",x=ta(y);return i.jsx(oo,{className:"workbench-archive-item",trailing:i.jsx("button",{type:"button",className:"secondary-button",disabled:n===y.sessionId,onClick:()=>{o(y.sessionId)},children:c("shell.unarchiveAction")}),children:i.jsxs("div",{className:"workbench-archive-item-main",children:[i.jsxs("div",{className:"workbench-archive-title-row",children:[i.jsx("strong",{title:D.fullTitle,children:D.displayTitle}),x?i.jsx("span",{className:"session-fork-badge archive-child",children:x}):null]}),i.jsx("p",{children:Fi(y)}),a&&B?i.jsx("p",{className:"workbench-archive-item-summary",children:B}):null]})},y.sessionId)})}):i.jsx(ao,{title:m,compact:!0,className:"workbench-section-empty"})]})}function jc(e){return i.jsx("button",{type:"button",className:"conversation-header-ai-button","aria-label":c("conversation.branchTreeAction"),title:c("conversation.branchTreeAction"),onClick:e.onOpenBranchTree,children:i.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:i.jsx(sa,{})})})}function Nc(){return i.jsxs("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[i.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"}),i.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 Ui(e){return e.startsWith("draft-")}function Oc(e){var n,r,o;const t=((n=e.navigationGroups[0])==null?void 0:n.workspace.id)??null,s=(t?e.flattenedNavigationEntries.find(a=>a.workspace.id===t)??null:null)??e.flattenedNavigationEntries[0]??null;if(s){const a=e.targetHostId?(r=e.workspaceRef)!=null&&r.workspaceId?{hostId:e.targetHostId,workspaceId:e.workspaceRef.workspaceId}:null:e.workspaceRef??null;return $e(s.workspace.id,s.session.sessionId,a)}if(t){const a=e.targetHostId?(o=e.workspaceRef)!=null&&o.workspaceId?{hostId:e.targetHostId,workspaceId:e.workspaceRef.workspaceId}:null:e.workspaceRef??null;return St(t,a)}return e.shellMode==="mobile"?Ir():"/landing"}function Lc(e){var o,a,u,d,h,p;const t=((a=(o=e.created.message)==null?void 0:o.providerSessionId)==null?void 0:a.trim())||e.created.providerSessionId.trim()||`draft-bootstrap-${e.created.sessionId}`,s=`synthetic-user-${e.clientRequestId}`,n=Number.isFinite((u=e.created.message)==null?void 0:u.sequence)?Math.max(1,((d=e.created.message)==null?void 0:d.sequence)??1):1,r=((p=(h=e.created.message)==null?void 0:h.timestamp)==null?void 0:p.trim())||e.created.acceptedAt.trim()||new Date().toISOString();return{messageId:s,provider:e.provider,providerSessionId:t,role:"user",kind:"text",content:e.content,attachments:e.attachments,timestamp:r,sequence:n,rawRef:`synthetic://${e.provider}/${e.created.sessionId}/${e.clientRequestId}`}}function Dc(e,t){if(!t||typeof t!="object")return[];const s=t.bootstrap;if(!s||typeof s!="object")return[];const n=s.sessionId,r=s.messages;return n!==e||!Array.isArray(r)?[]:r.filter(qc)}function Hc(e,t){if(!t||typeof t!="object")return{initialModel:null,providerConfigMode:"global-default",providerPresetId:null};const s=t.composer;if(!s||typeof s!="object")return{initialModel:null,providerConfigMode:"global-default",providerPresetId:null};const n=s.sessionId,r=s.initialModel,o=s.providerConfigMode,a=s.providerPresetId;if(n!==e)return{initialModel:null,providerConfigMode:"global-default",providerPresetId:null};const u=typeof r=="string"&&r.trim()||null,d=typeof a=="string"&&a.trim()||null,h=o==="cc-switch-preset"&&d?"cc-switch-preset":"global-default";return{initialModel:u,providerConfigMode:h,providerPresetId:h==="cc-switch-preset"?d:null}}function qc(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 Bc(){const e=globalThis.crypto;return e&&typeof e.randomUUID=="function"?e.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}export{lu as ConversationPage};
@@ -1 +1 @@
1
- import{b as d,j as e}from"./index-_OCkVmfl.js";function c(){return d.useEffect(()=>{const t=document.documentElement.style.background,s=document.body.style.background;return document.documentElement.style.background="transparent",document.body.style.background="transparent",()=>{document.documentElement.style.background=t,document.body.style.background=s}},[]),e.jsx("main",{className:"desktop-detach-preview-page","aria-hidden":"true",children:e.jsxs("section",{className:"desktop-detach-preview-card",children:[e.jsx("header",{className:"desktop-detach-preview-bar",children:e.jsx("strong",{className:"desktop-detach-preview-title",children:"小窗口"})}),e.jsx("div",{className:"desktop-detach-preview-body",children:e.jsx("span",{className:"desktop-detach-preview-badge"})})]})})}export{c as DesktopDetachPreviewPage};
1
+ import{b as d,j as e}from"./index-FOhyOpGY.js";function c(){return d.useEffect(()=>{const t=document.documentElement.style.background,s=document.body.style.background;return document.documentElement.style.background="transparent",document.body.style.background="transparent",()=>{document.documentElement.style.background=t,document.body.style.background=s}},[]),e.jsx("main",{className:"desktop-detach-preview-page","aria-hidden":"true",children:e.jsxs("section",{className:"desktop-detach-preview-card",children:[e.jsx("header",{className:"desktop-detach-preview-bar",children:e.jsx("strong",{className:"desktop-detach-preview-title",children:"小窗口"})}),e.jsx("div",{className:"desktop-detach-preview-body",children:e.jsx("span",{className:"desktop-detach-preview-badge"})})]})})}export{c as DesktopDetachPreviewPage};
@@ -1 +1 @@
1
- import{j as e,t as j,b as d}from"./index-_OCkVmfl.js";import{g as L}from"./App-If9gThKM.js";function C(){return e.jsx("svg",{viewBox:"0 0 16 16",width:"16",height:"16","aria-hidden":"true",children:e.jsx("path",{d:"M4.2 4.2l7.6 7.6M11.8 4.2l-7.6 7.6",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round"})})}function O({className:a,"aria-label":r,...o}){return e.jsx("button",{type:"button",className:a?`workbench-modal-close ${a}`:"workbench-modal-close","aria-label":r??j("common.close"),...o,children:e.jsx(C,{})})}function R({open:a,title:r,description:o,hideHeader:l=!1,size:c="compact",layout:s="form",dismissible:n=!0,closeOnBackdrop:v=!0,closeOnEscape:y=!0,backdropVisible:E=!0,className:i,bodyClassName:u,titleClassName:N,titleRef:D,titleProps:I,headerActions:m,beforeCloseButton:M,footer:b,showCloseButton:h=!0,onClose:t,children:g}){const k=d.useId(),f=d.useId(),x=n&&v,w=n&&y,$=!n;return d.useEffect(()=>{if(!a||!w)return;function p(B){B.key==="Escape"&&t()}return window.addEventListener("keydown",p),()=>{window.removeEventListener("keydown",p)}},[w,t,a]),!a||typeof document>"u"?null:L.createPortal(e.jsxs("div",{className:"workbench-modal-layer desktop-modal-layer","data-fullscreen":c==="full"?"true":void 0,"data-layout":s,"data-backdrop-visible":E?"true":"false",children:[e.jsx("button",{type:"button",className:"workbench-modal-backdrop","aria-label":j("common.close"),disabled:!x,onClick:()=>{x&&t()}}),e.jsxs("section",{className:`workbench-modal-card surface-card desktop-modal-card${i?` ${i}`:""}`,"data-size":c,"data-layout":s,role:"dialog","aria-modal":"true","aria-labelledby":l?void 0:k,"aria-label":l?r:void 0,"aria-describedby":!l&&o?f:void 0,children:[l?null:e.jsxs("div",{className:"workbench-modal-header",children:[e.jsxs("div",{className:"workbench-modal-title-wrap",children:[e.jsx("h2",{id:k,className:N,ref:D,...I,children:r}),o?e.jsx("p",{id:f,children:o}):null]}),m||h?e.jsxs("div",{className:"workbench-modal-header-actions",children:[m,M,h?e.jsx(O,{disabled:$,onClick:()=>{n&&t()}}):null]}):null]}),e.jsx("div",{className:u?`workbench-modal-body ${u}`:"workbench-modal-body",children:g}),b?e.jsx("div",{className:"workbench-modal-footer",children:b}):null]})]}),document.body)}export{R as D,O as M};
1
+ import{j as e,t as j,b as d}from"./index-FOhyOpGY.js";import{g as L}from"./App-Dl-mcdqy.js";function C(){return e.jsx("svg",{viewBox:"0 0 16 16",width:"16",height:"16","aria-hidden":"true",children:e.jsx("path",{d:"M4.2 4.2l7.6 7.6M11.8 4.2l-7.6 7.6",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round"})})}function O({className:a,"aria-label":r,...o}){return e.jsx("button",{type:"button",className:a?`workbench-modal-close ${a}`:"workbench-modal-close","aria-label":r??j("common.close"),...o,children:e.jsx(C,{})})}function R({open:a,title:r,description:o,hideHeader:l=!1,size:c="compact",layout:s="form",dismissible:n=!0,closeOnBackdrop:v=!0,closeOnEscape:y=!0,backdropVisible:E=!0,className:i,bodyClassName:u,titleClassName:N,titleRef:D,titleProps:I,headerActions:m,beforeCloseButton:M,footer:b,showCloseButton:h=!0,onClose:t,children:g}){const k=d.useId(),f=d.useId(),x=n&&v,w=n&&y,$=!n;return d.useEffect(()=>{if(!a||!w)return;function p(B){B.key==="Escape"&&t()}return window.addEventListener("keydown",p),()=>{window.removeEventListener("keydown",p)}},[w,t,a]),!a||typeof document>"u"?null:L.createPortal(e.jsxs("div",{className:"workbench-modal-layer desktop-modal-layer","data-fullscreen":c==="full"?"true":void 0,"data-layout":s,"data-backdrop-visible":E?"true":"false",children:[e.jsx("button",{type:"button",className:"workbench-modal-backdrop","aria-label":j("common.close"),disabled:!x,onClick:()=>{x&&t()}}),e.jsxs("section",{className:`workbench-modal-card surface-card desktop-modal-card${i?` ${i}`:""}`,"data-size":c,"data-layout":s,role:"dialog","aria-modal":"true","aria-labelledby":l?void 0:k,"aria-label":l?r:void 0,"aria-describedby":!l&&o?f:void 0,children:[l?null:e.jsxs("div",{className:"workbench-modal-header",children:[e.jsxs("div",{className:"workbench-modal-title-wrap",children:[e.jsx("h2",{id:k,className:N,ref:D,...I,children:r}),o?e.jsx("p",{id:f,children:o}):null]}),m||h?e.jsxs("div",{className:"workbench-modal-header-actions",children:[m,M,h?e.jsx(O,{disabled:$,onClick:()=>{n&&t()}}):null]}):null]}),e.jsx("div",{className:u?`workbench-modal-body ${u}`:"workbench-modal-body",children:g}),b?e.jsx("div",{className:"workbench-modal-footer",children:b}):null]})]}),document.body)}export{R as D,O as M};
@@ -0,0 +1,2 @@
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
+ import{b as c,o as F,_ as q,j as t,t as d}from"./index-FOhyOpGY.js";import{r as O,u as C,W as _,m as I,F as $,g as A}from"./WorkbenchLayout-DViAJhHz.js";import{FileContextPanel as U}from"./FileContextPanel-fbPuE9dO.js";import{GitSidebar as V}from"./GitSidebar-BkmesJJR.js";import{TerminalManagerPanel as z}from"./TerminalManagerPanel-6-ZJ8vGn.js";import{TerminalPage as B}from"./TerminalPage-CUXXQYU2.js";import{b as H,a as K}from"./workbench-navigation-aqJ1ay4M.js";import{c as J,u as Q,e as X,N as W}from"./App-Dl-mcdqy.js";import"./window-BVUB8gMK.js";import"./event-DvH9tcej.js";import"./host-alias-0TfFnYxR.js";import"./DesktopModal-BnfGW2gk.js";import"./WorkbenchModal-DWsNm2B2.js";import"./relay-entry-DhHwflXl.js";import"./MobileSheet-rkn_CUOY.js";import"./terminal-runtime-meta-2zvacxvM.js";import"./TerminalRuntimeFallbackModal-zc3qqMKJ.js";import"./MobileWorkspaceSwitcherHeader-idl8o1OB.js";import"./MobileTopHeaderFrame-CU0wsYSS.js";function Y(n){return{navigationGroups:n,subscribeFileTree:()=>{},requestFileTreeRefresh:()=>{},addFileTreeSnapshotListener:()=>()=>{},subscribeGitSnapshot:()=>{},requestGitRefresh:()=>{},addGitSnapshotListener:()=>()=>{}}}function Z(){return{subscribeGitSnapshot:()=>{},requestGitRefresh:()=>{},addGitSnapshotListener:()=>()=>{}}}function ee(){return{subscribeTerminalManagerSnapshot:()=>{},requestTerminalManagerRefresh:()=>{},addTerminalManagerSnapshotListener:()=>()=>{}}}function re(n,a){return{navigationGroups:a,currentWorkspaceId:n,selectWorkspace:()=>{},subscribeTerminalManagerSnapshot:()=>{},requestTerminalManagerRefresh:()=>{},addTerminalManagerSnapshotListener:()=>()=>{}}}function x(n){return n.kind==="file-preview"?d("conversation.fileViewerWindowTitle"):n.kind==="files"?d("shell.filesEntry"):n.kind==="git"?d("shell.gitEntry"):n.kind==="processes"?d("shell.terminalManagerEntry"):n.kind==="terminals"?d("shell.terminalsEntry"):n.kind==="affairs"?d("shell.workbenchModeAffairs"):n.kind==="code"?d("shell.workbenchModeCode"):n.kind}function T(n,a){var s;return n.workspaceName??(n.workspaceId?((s=a.find(o=>o.workspace.id===n.workspaceId))==null?void 0:s.workspace.name)??null:null)}function j(n){const a=(n==null?void 0:n.trim().replace(/\\/g,"/"))??"";return a?a.split("/").filter(Boolean).at(-1)??a:null}function ne(n){var o,l;const a=((o=n.payload.routePath)==null?void 0:o.trim())??"";if(a)return a;const s=((l=n.workspaceId)==null?void 0:l.trim())??"";return s?H(s):null}function te(n){var o,l;const a=((o=n.payload.routePath)==null?void 0:o.trim())??"";return a||(((l=n.workspaceId)==null?void 0:l.trim())??""?K():null)}function ie(n,a){const s=T(n,a);if(n.kind==="file-preview"){const l=j(n.payload.filePath)??x(n);return s?`${l}(${s})`:l}const o=x(n);return s?`CodingNS - ${o}(${s})`:`CodingNS - ${o}`}function Te(){var N;const{windowId:n}=J(),a=Q(),s=X(),o=O(s),l=C(i=>i.sessionDisplaySortMode),[e,b]=c.useState(null),[D,w]=c.useState(!0),[M,v]=c.useState(null),[u,f]=c.useState([]),[r,S]=c.useState(null);c.useEffect(()=>{let i=!1;async function p(){if(!n){b(null),w(!1),v(d("desktopWindow.invalidWindowId"));return}w(!0),v(null);const h=await s.bridge.getWindowDescriptor(n),g=h.ok?h.value??null:s.windows.getDescriptor(n);if(!i){if(!g){b(null),w(!1),v(h.detail??d("desktopWindow.loadDescriptorFailed"));return}s.windows.registerDescriptor(g),s.windows.markWindowOpen(g.windowId),b(g),w(!1)}}return p(),()=>{i=!0}},[s,n]),c.useEffect(()=>{if(!(e!=null&&e.workspaceId)){f([]);return}let i=!1;async function p(){try{const h=await A();if(i)return;f(I(h,l))}catch{if(i)return;f([])}}return p(),()=>{i=!0}},[e==null?void 0:e.workspaceId,l]),c.useEffect(()=>{if(!e){S(null);return}const i=new _({onConnectionChange:()=>{},onSnapshot:p=>{f(I(p,l))},onUnauthorized:()=>{F.clear(),a(`/login?returnTo=${encodeURIComponent(`/desktop-window/${e.windowId}`)}`,{replace:!0})}});return S(i),i.start(),()=>{i.close(),S(null)}},[e,a,l]),c.useEffect(()=>{if(!s.isDesktop||!s.bridge.supported||!e||e.mode!=="external")return;const i=ie(e,u);document.title=i,q(async()=>{const{getCurrentWindow:p}=await import("./window-BVUB8gMK.js").then(h=>h.w);return{getCurrentWindow:p}},__vite__mapDeps([0,1])).then(({getCurrentWindow:p})=>p().setTitle(i)).catch(()=>{})},[e,u,s.bridge.supported,s.isDesktop]);const R=c.useMemo(()=>r?{navigationGroups:u,subscribeFileTree:r.subscribeFileTree.bind(r),requestFileTreeRefresh:r.requestFileTreeRefresh.bind(r),addFileTreeSnapshotListener:r.addFileTreeSnapshotListener.bind(r),subscribeGitSnapshot:r.subscribeGit.bind(r),requestGitRefresh:r.requestGitRefresh.bind(r),addGitSnapshotListener:r.addGitSnapshotListener.bind(r)}:Y(u),[u,r]),G=c.useMemo(()=>r?{subscribeGitSnapshot:r.subscribeGit.bind(r),requestGitRefresh:r.requestGitRefresh.bind(r),addGitSnapshotListener:r.addGitSnapshotListener.bind(r)}:Z(),[r]),P=c.useMemo(()=>r?{subscribeTerminalManagerSnapshot:r.subscribeTerminalManager.bind(r),requestTerminalManagerRefresh:r.requestTerminalManagerRefresh.bind(r),addTerminalManagerSnapshotListener:r.addTerminalManagerSnapshotListener.bind(r)}:ee(),[r]),y=c.useMemo(()=>r?{navigationGroups:u,currentWorkspaceId:(e==null?void 0:e.workspaceId)??null,selectWorkspace:()=>{},subscribeTerminalManagerSnapshot:r.subscribeTerminalManager.bind(r),requestTerminalManagerRefresh:r.requestTerminalManagerRefresh.bind(r),addTerminalManagerSnapshotListener:r.addTerminalManagerSnapshotListener.bind(r)}:re((e==null?void 0:e.workspaceId)??null,u),[e==null?void 0:e.workspaceId,u,r]);if(!s.isDesktop)return t.jsx(W,{to:"/",replace:!0});if(D)return t.jsx("main",{className:"desktop-window-page",children:t.jsx("p",{className:"status-text",children:d("common.loading")})});if(M)return t.jsx("main",{className:"desktop-window-page",children:t.jsx("p",{className:"status-text",children:M})});if(!e)return t.jsx("main",{className:"desktop-window-page",children:t.jsx("p",{className:"status-text",children:d("desktopWindow.loadDescriptorFailed")})});if(e.kind==="code"){const i=ne(e);return i?t.jsx(W,{to:i,replace:!0}):t.jsx("main",{className:"desktop-window-page",children:t.jsx("p",{className:"status-text",children:d("desktopWindow.invalidCodeTarget")})})}if(e.kind==="affairs"){const i=te(e);return i?t.jsx(W,{to:i,replace:!0}):t.jsx("main",{className:"desktop-window-page",children:t.jsx("p",{className:"status-text",children:d("desktopWindow.invalidAffairsTarget")})})}let m=null;if(e.kind==="file-preview"){const i=((N=e.payload.filePath)==null?void 0:N.trim())??"";T(e,u),m=i?t.jsx($,{workspaceId:e.workspaceId,filePath:i,open:!0,chrome:"window",windowTitle:j(i)??i,onClose:()=>void s.bridge.setWindowState("close"),onSaved:()=>{}}):t.jsx("p",{className:"status-text",children:d("desktopWindow.invalidFilePreviewTarget")})}else e.kind==="files"?m=t.jsx(U,{sessionId:e.sessionId,workspaceId:e.workspaceId,externalWindowMode:!0,workbenchShellOverrides:R}):e.kind==="git"?m=t.jsx(V,{workspaceId:e.workspaceId,externalWindowMode:!0,workbenchShellOverrides:G}):e.kind==="processes"?m=t.jsx(z,{currentWorkspaceId:e.workspaceId,navigationGroups:u,externalWindowMode:!0,workbenchShellOverrides:P}):e.kind==="terminals"&&(m=t.jsx(B,{externalWindowMode:!0,externalWindowWorkspaceId:e.workspaceId,workbenchShellOverrides:y}));if(!m)return t.jsx("main",{className:"desktop-window-page",children:t.jsx("p",{className:"status-text",children:d("desktopWindow.unsupportedKind",{kind:e.kind})})});const k=x(e),L=T(e,u),E=e.mode==="external"&&e.kind==="processes";return t.jsxs("main",{className:"desktop-window-page",children:[E?t.jsx("header",{className:"desktop-window-drag-header","data-window-kind":e.kind,"data-window-drag-handle":"desktop-window-drag-header","data-tauri-drag-region":o,"aria-label":k,children:t.jsxs("div",{className:"desktop-window-drag-header-copy","data-tauri-drag-region":o,children:[t.jsx("span",{className:"desktop-window-drag-header-tag","data-tauri-drag-region":o,children:k}),t.jsx("strong",{"data-tauri-drag-region":o,children:L??k})]})}):null,t.jsx("div",{className:"desktop-window-body","data-window-kind":e.kind,"aria-label":k,children:m})]})}export{Te as DesktopWindowPage};